| Index: tools/telemetry/telemetry/core/backends/chrome/chrome_browser_backend.py
|
| diff --git a/tools/telemetry/telemetry/core/backends/chrome/chrome_browser_backend.py b/tools/telemetry/telemetry/core/backends/chrome/chrome_browser_backend.py
|
| index 50d16f5dc8e0f4dc5607f6a3f39723295d4913d1..c95555f0dbb500beeb797b805508364bbd35ac40 100644
|
| --- a/tools/telemetry/telemetry/core/backends/chrome/chrome_browser_backend.py
|
| +++ b/tools/telemetry/telemetry/core/backends/chrome/chrome_browser_backend.py
|
| @@ -19,7 +19,6 @@ from telemetry.core import user_agent
|
| from telemetry.core import util
|
| from telemetry.core import web_contents
|
| from telemetry.core import wpr_modes
|
| -from telemetry.core import wpr_server
|
| from telemetry.core.backends import browser_backend
|
| from telemetry.core.backends.chrome import extension_backend
|
| from telemetry.core.backends.chrome import system_info_backend
|
| @@ -102,12 +101,7 @@ class ChromeBrowserBackend(browser_backend.BrowserBackend):
|
|
|
| if self.browser_options.disable_background_networking:
|
| args.append('--disable-background-networking')
|
| -
|
| - if self.browser_options.netsim:
|
| - args.append('--ignore-certificate-errors')
|
| - elif self.browser_options.wpr_mode != wpr_modes.WPR_OFF:
|
| - args.extend(wpr_server.GetChromeFlags(self.forwarder_factory.host_ip,
|
| - self.wpr_port_pairs))
|
| + args.extend(self.GetReplayBrowserStartupArgs())
|
| args.extend(user_agent.GetChromeUserAgentArgumentFromType(
|
| self.browser_options.browser_user_agent_type))
|
|
|
| @@ -133,6 +127,34 @@ class ChromeBrowserBackend(browser_backend.BrowserBackend):
|
|
|
| return args
|
|
|
| + def GetReplayBrowserStartupArgs(self):
|
| + if self.browser_options.wpr_mode == wpr_modes.WPR_OFF:
|
| + return []
|
| + # Use Chrome's --host-resolver-rules flag if the forwarder does not send
|
| + # the HTTP requests directly to Replay. Also use --host-resolver-rules
|
| + # without netsim. With netsim, DNS requests should be sent (to get the
|
| + # simulated latency), however, the flag causes DNS requests to be skipped.
|
| + use_host_resolver = (
|
| + not self.forwarder_factory.does_forwarder_override_dns and
|
| + not self.browser_options.netsim)
|
| + http_remote_port = self.wpr_port_pairs.http.remote_port
|
| + https_remote_port = self.wpr_port_pairs.https.remote_port
|
| + replay_args = ['--ignore-certificate-errors']
|
| + if use_host_resolver:
|
| + replay_args.append('--host-resolver-rules=MAP * %s,EXCLUDE localhost' %
|
| + self.forwarder_factory.host_ip) # replay's host_ip
|
| + # Force the browser to send HTTP/HTTPS requests to fixed ports if they
|
| + # are not the standard defaults.
|
| + # Backstory:
|
| + # That allows Telemetry to pick ports that do not require sudo
|
| + # and leaves room for multiple instances running simultaneously.
|
| + # The default ports are required for network simulation.
|
| + if http_remote_port != 80:
|
| + replay_args.append('--testing-fixed-http-port=%s' % http_remote_port)
|
| + if https_remote_port != 443: # check if using the default HTTPS port
|
| + replay_args.append('--testing-fixed-https-port=%s' % https_remote_port)
|
| + return replay_args
|
| +
|
| def HasBrowserFinishedLaunching(self):
|
| try:
|
| self.Request('', timeout=.1)
|
|
|