Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(163)

Unified Diff: tools/telemetry/telemetry/core/backends/chrome/android_browser_finder.py

Issue 522553002: Move remote platforms creation logic from android_browser_finder to platform (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix android_browser_finder_unittest Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 9890ea4b0c6d6c3c133abeee9556d8ced83702eb..315e1f35245b57697ef6893f0c17f1e37b71f63c 100644
--- a/tools/telemetry/telemetry/core/backends/chrome/android_browser_finder.py
+++ b/tools/telemetry/telemetry/core/backends/chrome/android_browser_finder.py
@@ -4,7 +4,7 @@
"""Finds android browsers that can be controlled by telemetry."""
-import logging as real_logging
+import logging
import os
import re
import subprocess
@@ -12,13 +12,13 @@ import sys
from telemetry import decorators
from telemetry.core import browser
-from telemetry.core import platform
+from telemetry.core import exceptions
from telemetry.core import possible_browser
+from telemetry.core import platform
from telemetry.core import util
from telemetry.core.backends import adb_commands
+from telemetry.core.platform import android_device
from telemetry.core.backends.chrome import android_browser_backend
-from telemetry.core.platform import android_platform_backend
-from telemetry.core.platform.profiler import monsoon
try:
import psutil # pylint: disable=F0401
@@ -69,14 +69,16 @@ CHROME_PACKAGE_NAMES = {
class PossibleAndroidBrowser(possible_browser.PossibleBrowser):
"""A launchable android browser instance."""
def __init__(self, browser_type, finder_options, android_platform,
- platform_backend, backend_settings, apk_name):
+ 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._platform_backend = (
+ android_platform._platform_backend # pylint: disable=W0212
+ )
self._backend_settings = backend_settings
self._local_apk = None
@@ -112,7 +114,8 @@ class PossibleAndroidBrowser(possible_browser.PossibleBrowser):
use_rndis_forwarder,
output_profile_path=self.finder_options.output_profile_path,
extensions_to_load=self.finder_options.extensions_to_load,
- target_arch=self.finder_options.target_arch)
+ target_arch=self.finder_options.target_arch,
+ android_platform_backend=self._platform_backend)
b = browser.Browser(backend, self._platform_backend)
return b
@@ -127,7 +130,7 @@ class PossibleAndroidBrowser(possible_browser.PossibleBrowser):
@decorators.Cache
def UpdateExecutableIfNeeded(self):
if self.HaveLocalAPK():
- real_logging.warn('Installing %s on device if needed.' % self._local_apk)
+ logging.warn('Installing %s on device if needed.' % self._local_apk)
self.platform.InstallApplication(self._local_apk)
def last_modification_time(self):
@@ -146,8 +149,7 @@ def SelectDefaultBrowser(possible_browsers):
return None
-@decorators.Cache
-def CanFindAvailableBrowsers(logging=real_logging):
+def CanFindAvailableBrowsers():
if not adb_commands.IsAndroidSupported():
logging.info('Android build commands unavailable on this machine. Have '
'you installed Android build dependencies?')
@@ -176,63 +178,36 @@ def CanFindAvailableBrowsers(logging=real_logging):
return False
-def FindAllBrowserTypes(_):
+def FindAllBrowserTypes(_options):
return CHROME_PACKAGE_NAMES.keys()
-def FindAllAvailableBrowsers(finder_options, logging=real_logging):
+def FindAllAvailableBrowsers(finder_options):
"""Finds all the desktop browsers available on this machine."""
- if not CanFindAvailableBrowsers(logging=logging):
+ if not CanFindAvailableBrowsers():
logging.info('No adb command found. ' +
'Will not try searching for Android browsers.')
return []
-
- def _GetDevices():
- if finder_options.android_device:
- return [finder_options.android_device]
- else:
- return adb_commands.GetAttachedDevices()
-
- devices = _GetDevices()
-
- if not devices:
- try:
- m = monsoon.Monsoon(wait=False)
- m.SetUsbPassthrough(1)
- m.SetVoltage(3.8)
- m.SetMaxCurrent(8)
- logging.warn("""
-Monsoon power monitor detected, but no Android devices.
-
-The Monsoon's power output has been enabled. Please now ensure that:
-
- 1. The Monsoon's front and back USB are connected to the host.
- 2. The Device is connected to the Monsoon's main and USB channels.
- 3. The Device is turned on.
-
-Waiting for device...
-""")
- util.WaitFor(_GetDevices, 600)
- devices = _GetDevices()
- if not devices:
- raise IOError()
- except IOError:
- logging.info('No android devices found.')
- return []
-
- if len(devices) > 1:
+ if finder_options.android_device:
+ devices = [android_device.AndroidDevice(finder_options.android_device,
+ finder_options.no_performance_mode,
+ logging)]
+ else:
+ devices = android_device.AndroidDevice.GetAllConnectedDevices()
+
+ if len(devices) == 0:
+ logging.info('No android devices found.')
+ return []
+ elif len(devices) > 1:
logging.warn(
'Multiple devices attached. Please specify one of the following:\n' +
- '\n'.join([' --device=%s' % d for d in devices]))
+ '\n'.join([' --device=%s' % d.device_id for d in devices]))
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()
+ try:
+ android_platform = platform.GetPlatformForDevice(devices[0])
+ except exceptions.PlatformError:
+ return []
# Host side workaround for crbug.com/268450 (adb instability).
# The adb server has a race which is mitigated by binding to a single core.
@@ -251,29 +226,14 @@ Waiting for device...
except (psutil.NoSuchProcess, psutil.AccessDenied):
logging.warn('Failed to set adb process CPU affinity')
- 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,
android_platform,
- platform_backend,
- backend_settings(adb, package),
+ backend_settings(package),
local_apk)
if b.platform.CanLaunchApplication(package) or b.HaveLocalAPK():
possible_browsers.append(b)
-
- if possible_browsers:
- installed_prebuilt_tools = adb_commands.SetupPrebuiltTools(adb)
- if not installed_prebuilt_tools:
- logging.error(
- 'Android device detected, however prebuilt android tools could not '
- 'be used. To run on Android you must build them first:\n'
- ' $ ninja -C out/Release android_tools')
- return []
-
return possible_browsers

Powered by Google App Engine
This is Rietveld 408576698