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) |