Use subprocess2 and DEPS-pinned depot_tools for download_tools.py

As https://webrtc.googlesource.com/src/+/915187b1afe8f708b06e24b77f372dcd34fe75f3
has the proper fixed rolled in, https://webrtc-review.googlesource.com/c/src/+/8820
can be relanded to benefit from using DEPS-pinned third_party/depot_tools instead
of the auto-updated one.

TBR=mbonadei@webrtc.org

Bug: chromium:773671, webrtc:8393
Change-Id: Id47671956d014ce24e5b60ce3aae5423930db1aa
No-try: True
Reviewed-on: https://webrtc-review.googlesource.com/10800
Commit-Queue: Henrik Kjellander <kjellander@webrtc.org>
Reviewed-by: Henrik Kjellander <kjellander@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#20301}
diff --git a/tools_webrtc/download_tools.py b/tools_webrtc/download_tools.py
index 123fd3a..5cc8de2 100755
--- a/tools_webrtc/download_tools.py
+++ b/tools_webrtc/download_tools.py
@@ -15,13 +15,17 @@
 """
 
 import os
-import subprocess
 import sys
 
 
 SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
-# Needed to properly resolve PATH and executable extensions on Windows.
-USE_SHELL = sys.platform == 'win32'
+SRC_DIR = os.path.abspath(os.path.join(SCRIPT_DIR, os.pardir))
+DEPOT_TOOLS_DIR = os.path.join(SRC_DIR, 'third_party', 'depot_tools')
+sys.path.insert(0, DEPOT_TOOLS_DIR)
+
+
+import gclient_utils
+import subprocess2
 
 
 def main(directories):
@@ -30,7 +34,8 @@
 
   for path in directories:
     cmd = [
-      'download_from_google_storage',
+      sys.executable,
+      os.path.join(DEPOT_TOOLS_DIR, 'download_from_google_storage.py'),
       '--directory',
       '--num_threads=10',
       '--bucket', 'chrome-webrtc-resources',
@@ -39,7 +44,14 @@
       path,
     ]
     print 'Downloading precompiled tools...'
-    subprocess.check_call(cmd, shell=USE_SHELL)
+
+    # Perform download similar to how gclient hooks execute.
+    try:
+      gclient_utils.CheckCallAndFilterAndHeader(cmd, cwd=SRC_DIR, always=True)
+    except (gclient_utils.Error, subprocess2.CalledProcessError) as e:
+      print 'Error: %s' % str(e)
+      return 2
+    return 0
 
 
 if __name__ == '__main__':