| Index: tools/telemetry/telemetry/core/backends/chrome/android_browser_backend.py
|
| diff --git a/tools/telemetry/telemetry/core/backends/chrome/android_browser_backend.py b/tools/telemetry/telemetry/core/backends/chrome/android_browser_backend.py
|
| index 401b7b926d9add1e35b38a9828f7be7b72aaa257..6dfb57ed6d4bfaaaa2a3d7eef1745e68ab4b1fc5 100644
|
| --- a/tools/telemetry/telemetry/core/backends/chrome/android_browser_backend.py
|
| +++ b/tools/telemetry/telemetry/core/backends/chrome/android_browser_backend.py
|
| @@ -25,27 +25,26 @@
|
|
|
| class AndroidBrowserBackendSettings(object):
|
|
|
| - def __init__(self, activity, cmdline_file, package, pseudo_exec_name,
|
| + def __init__(self, adb, activity, cmdline_file, package, pseudo_exec_name,
|
| supports_tab_control, relax_ssl_check=False):
|
| + self.adb = adb
|
| self.activity = activity
|
| - self._cmdline_file = cmdline_file
|
| + self.cmdline_file = cmdline_file
|
| self.package = package
|
| self.pseudo_exec_name = pseudo_exec_name
|
| self.supports_tab_control = supports_tab_control
|
| self.relax_ssl_check = relax_ssl_check
|
|
|
| - def GetCommandLineFile(self, is_user_debug_build): # pylint: disable=W0613
|
| - return self._cmdline_file
|
| -
|
| def GetDevtoolsRemotePort(self):
|
| raise NotImplementedError()
|
|
|
| - def RemoveProfile(self, adb):
|
| - files = adb.device().RunShellCommand(
|
| + def RemoveProfile(self):
|
| + files = self.adb.device().RunShellCommand(
|
| 'ls "%s"' % self.profile_dir, as_root=True)
|
| # Don't delete lib, since it is created by the installer.
|
| paths = ['"%s/%s"' % (self.profile_dir, f) for f in files if f != 'lib']
|
| - adb.device().RunShellCommand('rm -r %s' % ' '.join(paths), as_root=True)
|
| + self.adb.device().RunShellCommand('rm -r %s' % ' '.join(paths),
|
| + as_root=True)
|
|
|
| def PushProfile(self, _):
|
| logging.critical('Profiles cannot be overriden with current configuration')
|
| @@ -60,16 +59,18 @@
|
| # Stores a default Preferences file, re-used to speed up "--page-repeat".
|
| _default_preferences_file = None
|
|
|
| - def GetCommandLineFile(self, is_user_debug_build):
|
| - if is_user_debug_build:
|
| + @staticmethod
|
| + def _GetCommandLineFile(adb):
|
| + if adb.IsUserBuild():
|
| return '/data/local/tmp/chrome-command-line'
|
| else:
|
| return '/data/local/chrome-command-line'
|
|
|
| - def __init__(self, package):
|
| + def __init__(self, adb, package):
|
| super(ChromeBackendSettings, self).__init__(
|
| + adb=adb,
|
| activity='com.google.android.apps.chrome.Main',
|
| - cmdline_file=None,
|
| + cmdline_file=ChromeBackendSettings._GetCommandLineFile(adb),
|
| package=package,
|
| pseudo_exec_name='chrome',
|
| supports_tab_control=True)
|
| @@ -107,8 +108,9 @@
|
| 'chown %s.%s %s' % (uid, uid, extended_path))
|
|
|
| class ContentShellBackendSettings(AndroidBrowserBackendSettings):
|
| - def __init__(self, package):
|
| + def __init__(self, adb, package):
|
| super(ContentShellBackendSettings, self).__init__(
|
| + adb=adb,
|
| activity='org.chromium.content_shell_apk.ContentShellActivity',
|
| cmdline_file='/data/local/tmp/content-shell-command-line',
|
| package=package,
|
| @@ -120,8 +122,9 @@
|
|
|
|
|
| class ChromeShellBackendSettings(AndroidBrowserBackendSettings):
|
| - def __init__(self, package):
|
| + def __init__(self, adb, package):
|
| super(ChromeShellBackendSettings, self).__init__(
|
| + adb=adb,
|
| activity='org.chromium.chrome.shell.ChromeShellActivity',
|
| cmdline_file='/data/local/tmp/chrome-shell-command-line',
|
| package=package,
|
| @@ -132,9 +135,10 @@
|
| return 'localabstract:chrome_shell_devtools_remote'
|
|
|
| class WebviewBackendSettings(AndroidBrowserBackendSettings):
|
| - def __init__(self, package,
|
| + def __init__(self, adb, package,
|
| activity='org.chromium.telemetry_shell.TelemetryActivity'):
|
| super(WebviewBackendSettings, self).__init__(
|
| + adb=adb,
|
| activity=activity,
|
| cmdline_file='/data/local/tmp/webview-command-line',
|
| package=package,
|
| @@ -164,16 +168,16 @@
|
| return 'localabstract:webview_devtools_remote_%s' % str(pid)
|
|
|
| class WebviewShellBackendSettings(WebviewBackendSettings):
|
| - def __init__(self, package):
|
| + def __init__(self, adb, package):
|
| super(WebviewShellBackendSettings, self).__init__(
|
| + adb=adb,
|
| activity='org.chromium.android_webview.shell.AwShellActivity',
|
| package=package)
|
|
|
| class AndroidBrowserBackend(chrome_browser_backend.ChromeBrowserBackend):
|
| """The backend for controlling a browser instance running on Android."""
|
| def __init__(self, browser_options, backend_settings, use_rndis_forwarder,
|
| - output_profile_path, extensions_to_load, target_arch,
|
| - android_platform_backend):
|
| + output_profile_path, extensions_to_load, target_arch):
|
| super(AndroidBrowserBackend, self).__init__(
|
| supports_tab_control=backend_settings.supports_tab_control,
|
| supports_extensions=False, browser_options=browser_options,
|
| @@ -184,7 +188,7 @@
|
| 'Android browser does not support extensions.')
|
|
|
| # Initialize fields so that an explosion during init doesn't break in Close.
|
| - self._android_platform_backend = android_platform_backend
|
| + self._adb = backend_settings.adb
|
| self._backend_settings = backend_settings
|
| self._saved_cmdline = ''
|
| self._target_arch = target_arch
|
| @@ -208,7 +212,7 @@
|
| if self.browser_options.profile_dir:
|
| self._backend_settings.PushProfile(self.browser_options.profile_dir)
|
| elif not self.browser_options.dont_override_profile:
|
| - self._backend_settings.RemoveProfile(self._adb)
|
| + self._backend_settings.RemoveProfile()
|
|
|
| self._forwarder_factory = android_forwarder.AndroidForwarderFactory(
|
| self._adb, use_rndis_forwarder)
|
| @@ -225,10 +229,6 @@
|
| logging.debug('User build device, setting debug app')
|
| self._adb.device().RunShellCommand(
|
| 'am set-debug-app --persistent %s' % self._backend_settings.package)
|
| -
|
| - @property
|
| - def _adb(self):
|
| - return self._android_platform_backend.adb
|
|
|
| def _KillBrowser(self):
|
| # We use KillAll rather than ForceStop for efficiency reasons.
|
| @@ -255,8 +255,7 @@
|
| args = [self._backend_settings.pseudo_exec_name]
|
| args.extend(self.GetBrowserStartupArgs())
|
| content = ' '.join(QuoteIfNeeded(arg) for arg in args)
|
| - cmdline_file = self._backend_settings.GetCommandLineFile(
|
| - self._adb.IsUserBuild())
|
| + cmdline_file = self._backend_settings.cmdline_file
|
| as_root = self._adb.device().old_interface.CanAccessProtectedFileContents()
|
|
|
| try:
|
| @@ -274,11 +273,9 @@
|
| sys.exit(1)
|
|
|
| def _RestoreCommandLine(self):
|
| - cmdline_file = self._backend_settings.GetCommandLineFile(
|
| - self._adb.IsUserBuild())
|
| as_root = self._adb.device().old_interface.CanAccessProtectedFileContents()
|
| - self._adb.device().WriteTextFile(cmdline_file, self._saved_cmdline,
|
| - as_root=as_root)
|
| + self._adb.device().WriteTextFile(self._backend_settings.cmdline_file,
|
| + self._saved_cmdline, as_root=as_root)
|
|
|
| def Start(self):
|
| self._SetUpCommandLine()
|
|
|