clang-format: lookup for binary under third_party/clang-format

This change looks for clang-format (and its script) *also*
inside third_party/clang-format (on top of buildtools/$plat).
This is to bring consistency to the recent changes [1] to
gn and ninja wrappers, which now look only in third_party
and not in buildtools/.
This is to make it so that a project can use depot_tools
without requiring both buildtools/ and third_party/
directories.

[1] See https://crrev.com/c/3925341

Bug: b/261398524
Bug: 1340825
Change-Id: I895d244592eed259ab8efa050cc87372d891246c
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/4079069
Commit-Queue: Primiano Tucci <primiano@chromium.org>
Reviewed-by: Dirk Pranke <dpranke@google.com>
Reviewed-by: Nico Weber <thakis@chromium.org>
Reviewed-by: Junji Watanabe <jwata@google.com>
diff --git a/clang_format.py b/clang_format.py
index 64f4c6e..4e7b1ba 100755
--- a/clang_format.py
+++ b/clang_format.py
@@ -27,6 +27,14 @@
 
 def FindClangFormatToolInChromiumTree():
   """Return a path to the clang-format executable, or die trying."""
+  primary_solution_path = gclient_paths.GetPrimarySolutionPath()
+  if primary_solution_path:
+    bin_path = os.path.join(primary_solution_path, 'third_party',
+                            'clang-format',
+                            'clang-format' + gclient_paths.GetExeSuffix())
+    if os.path.exists(bin_path):
+      return bin_path
+
   bin_path = gclient_paths.GetBuildtoolsPlatformBinaryPath()
   if not bin_path:
     raise NotFoundError(
@@ -42,6 +50,13 @@
 
 def FindClangFormatScriptInChromiumTree(script_name):
   """Return a path to a clang-format helper script, or die trying."""
+  primary_solution_path = gclient_paths.GetPrimarySolutionPath()
+  if primary_solution_path:
+    script_path = os.path.join(primary_solution_path, 'third_party',
+                               'clang-format', 'script', script_name)
+    if os.path.exists(script_path):
+      return script_path
+
   tools_path = gclient_paths.GetBuildtoolsPath()
   if not tools_path:
     raise NotFoundError(