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

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

Issue 640813002: Revert of Move remote platforms creation logic from android_browser_finder to platform (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 2 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 315e1f35245b57697ef6893f0c17f1e37b71f63c..9890ea4b0c6d6c3c133abeee9556d8ced83702eb 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
+import logging as real_logging
import os
import re
import subprocess
@@ -12,13 +12,13 @@
from telemetry import decorators
from telemetry.core import browser
-from telemetry.core import exceptions
+from telemetry.core import platform
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,16 +69,14 @@
class PossibleAndroidBrowser(possible_browser.PossibleBrowser):
"""A launchable android browser instance."""
def __init__(self, browser_type, finder_options, android_platform,
- backend_settings, apk_name):
+ 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 = (
- android_platform._platform_backend # pylint: disable=W0212
- )
+ self._platform_backend = platform_backend
self._backend_settings = backend_settings
self._local_apk = None
@@ -114,8 +112,7 @@
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,
- android_platform_backend=self._platform_backend)
+ target_arch=self.finder_options.target_arch)
b = browser.Browser(backend, self._platform_backend)
return b
@@ -130,7 +127,7 @@
@decorators.Cache
def UpdateExecutableIfNeeded(self):
if self.HaveLocalAPK():
- logging.warn('Installing %s on device if needed.' % 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):
@@ -149,7 +146,8 @@
return None
-def CanFindAvailableBrowsers():
+@decorators.Cache
+def CanFindAvailableBrowsers(logging=real_logging):
if not adb_commands.IsAndroidSupported():
logging.info('Android build commands unavailable on this machine. Have '
'you installed Android build dependencies?')
@@ -178,36 +176,63 @@
return False
-def FindAllBrowserTypes(_options):
+def FindAllBrowserTypes(_):
return CHROME_PACKAGE_NAMES.keys()
-def FindAllAvailableBrowsers(finder_options):
+def FindAllAvailableBrowsers(finder_options, logging=real_logging):
"""Finds all the desktop browsers available on this machine."""
- if not CanFindAvailableBrowsers():
+ if not CanFindAvailableBrowsers(logging=logging):
logging.info('No adb command found. ' +
'Will not try searching for Android browsers.')
return []
- 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:
+
+ 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:
logging.warn(
'Multiple devices attached. Please specify one of the following:\n' +
- '\n'.join([' --device=%s' % d.device_id for d in devices]))
+ '\n'.join([' --device=%s' % d for d in devices]))
return []
- try:
- android_platform = platform.GetPlatformForDevice(devices[0])
- except exceptions.PlatformError:
- 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.
@@ -226,14 +251,29 @@
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,
- backend_settings(package),
+ platform_backend,
+ backend_settings(adb, 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