Index: tools/telemetry/telemetry/core/backends/chrome/android_browser_finder.py |
diff --git a/tools/telemetry/telemetry/core/backends/chrome/android_browser_finder.py b/tools/telemetry/telemetry/core/backends/chrome/android_browser_finder.py |
index 283f376774779f495e73c073aea9fc00fcab54e0..61659edd83a670f39f2b0dca8ef013fa8b861e34 100644 |
--- a/tools/telemetry/telemetry/core/backends/chrome/android_browser_finder.py |
+++ b/tools/telemetry/telemetry/core/backends/chrome/android_browser_finder.py |
@@ -64,12 +64,15 @@ CHROME_PACKAGE_NAMES = { |
class PossibleAndroidBrowser(possible_browser.PossibleBrowser): |
"""A launchable android browser instance.""" |
- def __init__(self, browser_type, finder_options, backend_settings, apk_name): |
+ def __init__(self, browser_type, finder_options, android_platform, |
+ platform_backend, backend_settings, apk_name): |
super(PossibleAndroidBrowser, self).__init__(browser_type, 'android', |
finder_options, backend_settings.supports_tab_control) |
assert browser_type in FindAllBrowserTypes(finder_options), \ |
('Please add %s to android_browser_finder.FindAllBrowserTypes' % |
browser_type) |
+ self._platform = android_platform |
+ self._platform_backend = platform_backend |
self._backend_settings = backend_settings |
self._local_apk = None |
@@ -88,18 +91,11 @@ class PossibleAndroidBrowser(possible_browser.PossibleBrowser): |
newest_apk_path = sorted(candidate_apks)[-1][1] |
self._local_apk = newest_apk_path |
- |
def __repr__(self): |
return 'PossibleAndroidBrowser(browser_type=%s)' % self.browser_type |
def _InitPlatformIfNeeded(self): |
- if self._platform: |
- return |
- |
- self._platform_backend = android_platform_backend.AndroidPlatformBackend( |
- self._backend_settings.adb.device(), |
- self.finder_options.no_performance_mode) |
- self._platform = platform.Platform(self._platform_backend) |
+ pass |
def Create(self): |
self._InitPlatformIfNeeded() |
@@ -127,9 +123,8 @@ class PossibleAndroidBrowser(possible_browser.PossibleBrowser): |
@decorators.Cache |
def UpdateExecutableIfNeeded(self): |
if self.HaveLocalAPK(): |
- real_logging.warn( |
- 'Refreshing %s on device if needed.' % self._local_apk) |
- self._backend_settings.adb.Install(self._local_apk) |
+ real_logging.warn('Installing %s on device if needed.' % self._local_apk) |
+ self.platform.InstallApplication(self._local_apk) |
def last_modification_time(self): |
if self.HaveLocalAPK(): |
@@ -228,16 +223,16 @@ Waiting for device... |
return [] |
device = devices[0] |
- |
adb = adb_commands.AdbCommands(device=device) |
+ |
# Trying to root the device, if possible. |
if not adb.IsRootEnabled(): |
# Ignore result. |
adb.EnableAdbRoot() |
+ # Host side workaround for crbug.com/268450 (adb instability). |
+ # The adb server has a race which is mitigated by binding to a single core. |
if psutil: |
- # Host side workaround for crbug.com/268450 (adb instability). |
- # The adb server has a race which is mitigated by binding to a single core. |
for proc in psutil.process_iter(): |
try: |
if 'adb' in proc.name: |
@@ -252,18 +247,20 @@ Waiting for device... |
except (psutil.NoSuchProcess, psutil.AccessDenied): |
logging.warn('Failed to set adb process CPU affinity') |
- packages = adb.RunShellCommand('pm list packages') |
- possible_browsers = [] |
+ platform_backend = android_platform_backend.AndroidPlatformBackend( |
+ adb.device(), finder_options.no_performance_mode) |
+ android_platform = platform.Platform(platform_backend) |
+ possible_browsers = [] |
for name, package_info in CHROME_PACKAGE_NAMES.iteritems(): |
[package, backend_settings, local_apk] = package_info |
- b = PossibleAndroidBrowser( |
- name, |
- finder_options, |
- backend_settings(adb, package), |
- local_apk) |
- |
- if 'package:' + package in packages or b.HaveLocalAPK(): |
+ b = PossibleAndroidBrowser(name, |
+ finder_options, |
+ android_platform, |
+ platform_backend, |
+ backend_settings(adb, package), |
+ local_apk) |
+ if b.platform.CanLaunchApplication(package) or b.HaveLocalAPK(): |
possible_browsers.append(b) |
if possible_browsers: |