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

Unified Diff: tools/telemetry/telemetry/internal/backends/chrome/cros_browser_backend.py

Issue 1647513002: Delete tools/telemetry. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 11 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/internal/backends/chrome/cros_browser_backend.py
diff --git a/tools/telemetry/telemetry/internal/backends/chrome/cros_browser_backend.py b/tools/telemetry/telemetry/internal/backends/chrome/cros_browser_backend.py
deleted file mode 100644
index 1231daa3ebf956b7a3aa7da44ba8d6b297c588ae..0000000000000000000000000000000000000000
--- a/tools/telemetry/telemetry/internal/backends/chrome/cros_browser_backend.py
+++ /dev/null
@@ -1,239 +0,0 @@
-# Copyright 2013 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-import logging
-import os
-
-from telemetry.core import exceptions
-from telemetry.core import util
-from telemetry import decorators
-from telemetry.internal.backends.chrome import chrome_browser_backend
-from telemetry.internal.backends.chrome import misc_web_contents_backend
-from telemetry.internal import forwarders
-
-
-class CrOSBrowserBackend(chrome_browser_backend.ChromeBrowserBackend):
- def __init__(self, cros_platform_backend, browser_options, cri, is_guest,
- extensions_to_load):
- super(CrOSBrowserBackend, self).__init__(
- cros_platform_backend, supports_tab_control=True,
- supports_extensions=not is_guest,
- browser_options=browser_options,
- output_profile_path=None, extensions_to_load=extensions_to_load)
- assert browser_options.IsCrosBrowserOptions()
- # Initialize fields so that an explosion during init doesn't break in Close.
- self._cri = cri
- self._is_guest = is_guest
- self._forwarder = None
- self.wpr_port_pairs = forwarders.PortPairs(
- http=forwarders.PortPair(self.wpr_port_pairs.http.local_port,
- self._platform_backend.GetRemotePort(
- self.wpr_port_pairs.http.local_port)),
- https=forwarders.PortPair(self.wpr_port_pairs.https.local_port,
- self._platform_backend.GetRemotePort(
- self.wpr_port_pairs.http.local_port)),
- dns=None)
- self._remote_debugging_port = self._cri.GetRemotePort()
- self._port = self._remote_debugging_port
-
- # Copy extensions to temp directories on the device.
- # Note that we also perform this copy locally to ensure that
- # the owner of the extensions is set to chronos.
- for e in extensions_to_load:
- extension_dir = cri.RunCmdOnDevice(
- ['mktemp', '-d', '/tmp/extension_XXXXX'])[0].rstrip()
- e.local_path = os.path.join(extension_dir, os.path.basename(e.path))
- cri.PushFile(e.path, extension_dir)
- cri.Chown(extension_dir)
-
- self._cri.RestartUI(self.browser_options.clear_enterprise_policy)
- util.WaitFor(self.IsBrowserRunning, 20)
-
- # Delete test user's cryptohome vault (user data directory).
- if not self.browser_options.dont_override_profile:
- self._cri.RunCmdOnDevice(['cryptohome', '--action=remove', '--force',
- '--user=%s' % self._username])
-
- @property
- def log_file_path(self):
- return None
-
- def GetBrowserStartupArgs(self):
- args = super(CrOSBrowserBackend, self).GetBrowserStartupArgs()
- args.extend([
- '--enable-smooth-scrolling',
- '--enable-threaded-compositing',
- # Allow devtools to connect to chrome.
- '--remote-debugging-port=%i' % self._remote_debugging_port,
- # Open a maximized window.
- '--start-maximized',
- # Disable system startup sound.
- '--ash-disable-system-sounds',
- # Skip user image selection screen, and post login screens.
- '--oobe-skip-postlogin',
- # Debug logging.
- '--vmodule=*/chromeos/net/*=2,*/chromeos/login/*=2'])
-
- # Disable GAIA services unless we're using GAIA login, or if there's an
- # explicit request for it.
- if (self.browser_options.disable_gaia_services and
- not self.browser_options.gaia_login):
- args.append('--disable-gaia-services')
-
- return args
-
- @property
- def pid(self):
- return self._cri.GetChromePid()
-
- @property
- def browser_directory(self):
- result = self._cri.GetChromeProcess()
- if result and 'path' in result:
- return os.path.dirname(result['path'])
- return None
-
- @property
- def profile_directory(self):
- return '/home/chronos/Default'
-
- def __del__(self):
- self.Close()
-
- def Start(self):
- # Escape all commas in the startup arguments we pass to Chrome
- # because dbus-send delimits array elements by commas
- startup_args = [a.replace(',', '\\,') for a in self.GetBrowserStartupArgs()]
-
- # Restart Chrome with the login extension and remote debugging.
- logging.info('Restarting Chrome with flags and login')
- args = ['dbus-send', '--system', '--type=method_call',
- '--dest=org.chromium.SessionManager',
- '/org/chromium/SessionManager',
- 'org.chromium.SessionManagerInterface.EnableChromeTesting',
- 'boolean:true',
- 'array:string:"%s"' % ','.join(startup_args)]
- self._cri.RunCmdOnDevice(args)
-
- if not self._cri.local:
- self._port = util.GetUnreservedAvailableLocalPort()
- self._forwarder = self._platform_backend.forwarder_factory.Create(
- forwarders.PortPairs(
- http=forwarders.PortPair(self._port, self._remote_debugging_port),
- https=None,
- dns=None), use_remote_port_forwarding=False)
-
- # Wait for oobe.
- self._WaitForBrowserToComeUp()
- self._InitDevtoolsClientBackend(
- remote_devtools_port=self._remote_debugging_port)
- util.WaitFor(lambda: self.oobe_exists, 10)
-
- if self.browser_options.auto_login:
- try:
- if self._is_guest:
- pid = self.pid
- self.oobe.NavigateGuestLogin()
- # Guest browsing shuts down the current browser and launches an
- # incognito browser in a separate process, which we need to wait for.
- util.WaitFor(lambda: pid != self.pid, 10)
- elif self.browser_options.gaia_login:
- self.oobe.NavigateGaiaLogin(self._username, self._password)
- else:
- self.oobe.NavigateFakeLogin(self._username, self._password,
- self._gaia_id)
-
- self._WaitForLogin()
- except exceptions.TimeoutException:
- self._cri.TakeScreenShot('login-screen')
- raise exceptions.LoginException('Timed out going through login screen. '
- + self._GetLoginStatus())
-
- logging.info('Browser is up!')
-
- def Close(self):
- super(CrOSBrowserBackend, self).Close()
-
- if self._cri:
- self._cri.RestartUI(False) # Logs out.
- self._cri.CloseConnection()
-
- util.WaitFor(lambda: not self._IsCryptohomeMounted(), 180)
-
- if self._forwarder:
- self._forwarder.Close()
- self._forwarder = None
-
- if self._cri:
- for e in self._extensions_to_load:
- self._cri.RmRF(os.path.dirname(e.local_path))
-
- self._cri = None
-
- def IsBrowserRunning(self):
- return bool(self.pid)
-
- def GetStandardOutput(self):
- return 'Cannot get standard output on CrOS'
-
- def GetStackTrace(self):
- return 'Cannot get stack trace on CrOS'
-
- @property
- @decorators.Cache
- def misc_web_contents_backend(self):
- """Access to chrome://oobe/login page."""
- return misc_web_contents_backend.MiscWebContentsBackend(self)
-
- @property
- def oobe(self):
- return self.misc_web_contents_backend.GetOobe()
-
- @property
- def oobe_exists(self):
- return self.misc_web_contents_backend.oobe_exists
-
- @property
- def _username(self):
- return self.browser_options.username
-
- @property
- def _password(self):
- return self.browser_options.password
-
- @property
- def _gaia_id(self):
- return self.browser_options.gaia_id
-
- def _IsCryptohomeMounted(self):
- username = '$guest' if self._is_guest else self._username
- return self._cri.IsCryptohomeMounted(username, self._is_guest)
-
- def _GetLoginStatus(self):
- """Returns login status. If logged in, empty string is returned."""
- status = ''
- if not self._IsCryptohomeMounted():
- status += 'Cryptohome not mounted. '
- if not self.HasBrowserFinishedLaunching():
- status += 'Browser didn\'t launch. '
- if self.oobe_exists:
- status += 'OOBE not dismissed.'
- return status
-
- def _IsLoggedIn(self):
- """Returns True if cryptohome has mounted, the browser is
- responsive to devtools requests, and the oobe has been dismissed."""
- return not self._GetLoginStatus()
-
- def _WaitForLogin(self):
- # Wait for cryptohome to mount.
- util.WaitFor(self._IsLoggedIn, 60)
-
- # For incognito mode, the session manager actually relaunches chrome with
- # new arguments, so we have to wait for the browser to come up.
- self._WaitForBrowserToComeUp()
-
- # Wait for extensions to load.
- if self._supports_extensions:
- self._WaitForExtensionsToLoad()

Powered by Google App Engine
This is Rietveld 408576698