Merge from Chromium at DEPS revision r205460

This commit was generated by merge_to_master.py.

Change-Id: I4a744a5e426bd3bb378d887cfa56fe054742a540
diff --git a/build/android/pylib/constants.py b/build/android/pylib/constants.py
index f63414e..519cc97 100644
--- a/build/android/pylib/constants.py
+++ b/build/android/pylib/constants.py
@@ -5,11 +5,13 @@
 """Defines a set of constants shared by test runners and other scripts."""
 
 import os
+import subprocess
+import sys
 
 
-CHROME_DIR = os.path.abspath(os.path.join(os.path.dirname(__file__),
-                                          os.pardir, os.pardir, os.pardir))
-EMULATOR_SDK_ROOT = os.path.abspath(os.path.join(CHROME_DIR, os.pardir,
+DIR_SOURCE_ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__),
+                                               os.pardir, os.pardir, os.pardir))
+EMULATOR_SDK_ROOT = os.path.abspath(os.path.join(DIR_SOURCE_ROOT, os.pardir,
                                                  os.pardir))
 
 CHROME_PACKAGE = 'com.google.android.apps.chrome'
@@ -31,7 +33,7 @@
     'org.chromium.chrome.testshell.ChromiumTestShellActivity')
 CHROMIUM_TEST_SHELL_DEVTOOLS_SOCKET = 'chromium_testshell_devtools_remote'
 CHROMIUM_TEST_SHELL_HOST_DRIVEN_DIR = os.path.join(
-    CHROME_DIR, 'chrome', 'android')
+    DIR_SOURCE_ROOT, 'chrome', 'android')
 
 GTEST_TEST_PACKAGE_NAME = 'org.chromium.native_test'
 GTEST_TEST_ACTIVITY_NAME = 'org.chromium.native_test.ChromeNativeTestActivity'
@@ -70,10 +72,29 @@
 # The directory on the device where perf test output gets saved to.
 DEVICE_PERF_OUTPUT_DIR = '/data/data/' + CHROME_PACKAGE + '/files'
 
-SCREENSHOTS_DIR = os.path.join(CHROME_DIR, 'out_screenshots')
+SCREENSHOTS_DIR = os.path.join(DIR_SOURCE_ROOT, 'out_screenshots')
 
 ANDROID_SDK_VERSION = 17
-ANDROID_SDK_ROOT = os.path.join(CHROME_DIR, 'third_party/android_tools/sdk')
-ANDROID_NDK_ROOT = os.path.join(CHROME_DIR, 'third_party/android_tools/ndk')
+ANDROID_SDK_ROOT = os.path.join(DIR_SOURCE_ROOT,
+                                'third_party/android_tools/sdk')
+ANDROID_NDK_ROOT = os.path.join(DIR_SOURCE_ROOT,
+                                'third_party/android_tools/ndk')
 
 UPSTREAM_FLAKINESS_SERVER = 'test-results.appspot.com'
+
+
+def _GetADBPath():
+  if os.environ.get('ANDROID_SDK_ROOT'):
+    return 'adb'
+  # If envsetup.sh hasn't been sourced and there's no adb in the path,
+  # set it here.
+  try:
+    with file(os.devnull, 'w') as devnull:
+      subprocess.call(['adb', 'version'], stdout=devnull, stderr=devnull)
+    return 'adb'
+  except OSError:
+    print 'No adb found in $PATH, fallback to checked in binary.'
+    return os.path.join(ANDROID_SDK_ROOT, 'platform-tools', 'adb')
+
+
+ADB_PATH = _GetADBPath()