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

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

Issue 2997603002: Try fixing telemetry on CrOS (Closed)
Patch Set: Created 3 years, 4 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
« no previous file with comments | « telemetry/telemetry/core/util.py ('k') | telemetry/telemetry/internal/platform/android_platform_backend.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: telemetry/telemetry/internal/backends/chrome/cros_browser_backend.py
diff --git a/telemetry/telemetry/internal/backends/chrome/cros_browser_backend.py b/telemetry/telemetry/internal/backends/chrome/cros_browser_backend.py
index 07c5af041c6e3c7060b2ea0401a04803c26039f1..1f200bad0ddbc39e665dcf33c761cb949bae34d9 100644
--- a/telemetry/telemetry/internal/backends/chrome/cros_browser_backend.py
+++ b/telemetry/telemetry/internal/backends/chrome/cros_browser_backend.py
@@ -6,11 +6,9 @@ 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
import py_utils
@@ -25,9 +23,8 @@ class CrOSBrowserBackend(chrome_browser_backend.ChromeBrowserBackend):
# 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._remote_debugging_port = self._cri.GetRemotePort()
- self._port = self._remote_debugging_port
+ self._port = None
+ self._browser_target = None
extensions_to_load = browser_options.extensions_to_load
@@ -53,6 +50,33 @@ class CrOSBrowserBackend(chrome_browser_backend.ChromeBrowserBackend):
def log_file_path(self):
return None
+ def HasBrowserFinishedLaunching(self):
+ # Start DevTools on an ephemeral port and wait for the well-known file
+ # containing the port number to exist.
+ port_file = os.path.join(self.profile_directory, 'DevToolsActivePort')
+ if not os.path.isfile(port_file):
+ # File isn't ready yet. Return false. Will retry.
+ return False
+ # Attempt to avoid reading the file until it's populated.
+ got_port = False
+ try:
+ if os.stat(port_file).st_size > 0:
+ with open(port_file) as f:
+ port_target = f.read().split('\n')
+ self._port = int(port_target[0])
+ if len(port_target) > 1 and port_target[1]:
+ self._browser_target = port_target[1]
+ logging.info('Discovered ephemeral port %s', self._port)
+ logging.info('Browser target: %s', self._browser_target)
+ got_port = True
+ except Exception:
+ # Both stat and open can throw exceptions.
+ pass
+ if not got_port:
+ # File isn't ready yet. Return false. Will retry.
+ return False
+ return super(CrOSBrowserBackend, self).HasBrowserFinishedLaunching()
+
def GetBrowserStartupArgs(self):
args = super(CrOSBrowserBackend, self).GetBrowserStartupArgs()
@@ -68,7 +92,7 @@ class CrOSBrowserBackend(chrome_browser_backend.ChromeBrowserBackend):
'--enable-smooth-scrolling',
'--enable-threaded-compositing',
# Allow devtools to connect to chrome.
- '--remote-debugging-port=%i' % self._remote_debugging_port,
+ '--remote-debugging-port=0',
# Open a maximized window.
'--start-maximized',
# Disable system startup sound.
@@ -131,18 +155,10 @@ class CrOSBrowserBackend(chrome_browser_backend.ChromeBrowserBackend):
logging.info(' '.join(args))
self._cri.RunCmdOnDevice(args)
- if not self._cri.local:
- # TODO(crbug.com/404771): Move port forwarding to network_controller.
- self._port = util.GetUnreservedAvailableLocalPort()
- self._forwarder = self._platform_backend.forwarder_factory.Create(
- forwarders.PortPair(self._port, self._remote_debugging_port),
- use_remote_port_forwarding=False)
-
# Wait for new chrome and oobe.
py_utils.WaitFor(lambda: pid != self.pid, 15)
self._WaitForBrowserToComeUp()
- self._InitDevtoolsClientBackend(
- remote_devtools_port=self._remote_debugging_port)
+ self._InitDevtoolsClientBackend()
py_utils.WaitFor(lambda: self.oobe_exists, 30)
if self.browser_options.auto_login:
@@ -186,10 +202,6 @@ class CrOSBrowserBackend(chrome_browser_backend.ChromeBrowserBackend):
py_utils.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))
« no previous file with comments | « telemetry/telemetry/core/util.py ('k') | telemetry/telemetry/internal/platform/android_platform_backend.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698