Make `gn refs` handle files in data directories properly.

If a target specified `data = [ "test/" ]` and you ran
`gn refs out/Default //foo //foo/test/bar.cc`, gn refs would
incorrectly think that nothing referenced bar.cc. This patch
fixes that.

R=brettw@chromium.org
BUG=628783

Review-Url: https://codereview.chromium.org/2160383002
Cr-Original-Commit-Position: refs/heads/master@{#406689}
Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src
Cr-Mirrored-Commit: 267b1de99ba7baf7150d4e8e1b9e42969c16c343
diff --git a/tools/gn/command_refs.cc b/tools/gn/command_refs.cc
index fcd824a..64969b9 100644
--- a/tools/gn/command_refs.cc
+++ b/tools/gn/command_refs.cc
@@ -10,6 +10,7 @@
 #include "base/command_line.h"
 #include "base/files/file_util.h"
 #include "base/strings/string_split.h"
+#include "base/strings/string_util.h"
 #include "tools/gn/commands.h"
 #include "tools/gn/deps_iterator.h"
 #include "tools/gn/filesystem_utils.h"
@@ -143,6 +144,9 @@
   for (const auto& cur_file : target->data()) {
     if (cur_file == file.value())
       return true;
+    if (cur_file.back() == '/' &&
+        base::StartsWith(file.value(), cur_file, base::CompareCase::SENSITIVE))
+      return true;
   }
 
   if (target->action_values().script().value() == file.value())