def GetBrowserStartupArgs(self): args = [] args.extend(self.browser_options.extra_browser_args) args.append('--disable-vivaldi') args.append('--enable-net-benchmarking') args.append('--metrics-recording-only') args.append('--no-default-browser-check') args.append('--no-first-run') # Turn on GPU benchmarking extension for all runs. The only side effect of # the extension being on is that render stats are tracked. This is believed # to be effectively free. And, by doing so here, it avoids us having to # programmatically inspect a pageset's actions in order to determine if it # might eventually scroll. args.append('--enable-gpu-benchmarking') # Set --no-proxy-server to work around some XP issues unless # some other flag indicates a proxy is needed. if not self._ArgsNeedProxyServer(args): self.browser_options.no_proxy_server = True if self.browser_options.disable_background_networking: args.append('--disable-background-networking') args.extend(self.GetReplayBrowserStartupArgs()) args.extend( user_agent.GetChromeUserAgentArgumentFromType( self.browser_options.browser_user_agent_type)) extensions = [ extension.local_path for extension in self._extensions_to_load if not extension.is_component ] extension_str = ','.join(extensions) if len(extensions) > 0: args.append('--load-extension=%s' % extension_str) component_extensions = [ extension.local_path for extension in self._extensions_to_load if extension.is_component ] component_extension_str = ','.join(component_extensions) if len(component_extensions) > 0: args.append('--load-component-extension=%s' % component_extension_str) if self.browser_options.no_proxy_server: args.append('--no-proxy-server') if self.browser_options.disable_component_extensions_with_background_pages: args.append('--disable-component-extensions-with-background-pages') # Disables the start page, as well as other external apps that can # steal focus or make measurements inconsistent. if self.browser_options.disable_default_apps: args.append('--disable-default-apps') if self.browser_options.enable_logging: args.append('--enable-logging') args.append('--v=1') return args
def GetBrowserStartupArgs(self): assert not '--no-proxy-server' in self.browser_options.extra_browser_args, ( '--no-proxy-server flag is disallowed as Chrome needs to be route to ' 'ts_proxy_server') args = [] args.extend(self.browser_options.extra_browser_args) args.append('--enable-net-benchmarking') args.append('--metrics-recording-only') args.append('--no-default-browser-check') args.append('--no-first-run') # Turn on GPU benchmarking extension for all runs. The only side effect of # the extension being on is that render stats are tracked. This is believed # to be effectively free. And, by doing so here, it avoids us having to # programmatically inspect a pageset's actions in order to determine if it # might eventually scroll. args.append('--enable-gpu-benchmarking') if self.browser_options.disable_background_networking: args.append('--disable-background-networking') args.extend(self.GetReplayBrowserStartupArgs()) args.extend( user_agent.GetChromeUserAgentArgumentFromType( self.browser_options.browser_user_agent_type)) extensions = [ extension.local_path for extension in self._extensions_to_load if not extension.is_component ] extension_str = ','.join(extensions) if len(extensions) > 0: args.append('--load-extension=%s' % extension_str) component_extensions = [ extension.local_path for extension in self._extensions_to_load if extension.is_component ] component_extension_str = ','.join(component_extensions) if len(component_extensions) > 0: args.append('--load-component-extension=%s' % component_extension_str) if self.browser_options.disable_component_extensions_with_background_pages: args.append('--disable-component-extensions-with-background-pages') # Disables the start page, as well as other external apps that can # steal focus or make measurements inconsistent. if self.browser_options.disable_default_apps: args.append('--disable-default-apps') if (self.browser_options.logging_verbosity == self.browser_options.NON_VERBOSE_LOGGING): args.extend(['--enable-logging', '--v=0']) elif (self.browser_options.logging_verbosity == self.browser_options.VERBOSE_LOGGING): args.extend(['--enable-logging', '--v=1']) return args
def GetFromBrowserOptions(browser_options): """Get a list of startup args from the given browser_options.""" assert not '--no-proxy-server' in browser_options.extra_browser_args, ( '--no-proxy-server flag is disallowed as Chrome needs to be route to ' 'ts_proxy_server') # Merge multiple instances of --enable-features and --disable-features since # Chrome ends up using whatever switch it finds last instead of merging # multiple instances. # TODO(crbug.com/799411): Remove this once the smarter ChromeArgsBuilder is # implemented. args = [] disable_features = set() enable_features = set() for arg in browser_options.extra_browser_args: if arg.startswith('--disable-features='): disable_features.update(arg.split('=', 1)[1].split(',')) elif arg.startswith('--enable-features='): enable_features.update(arg.split('=', 1)[1].split(',')) else: args.append(arg) if disable_features: args.append('--disable-features=%s' % ','.join(disable_features)) if enable_features: args.append('--enable-features=%s' % ','.join(enable_features)) args.append('--enable-net-benchmarking') args.append('--metrics-recording-only') args.append('--no-default-browser-check') args.append('--no-first-run') args.append('--ignore-background-tasks') # Turn on GPU benchmarking extension for all runs. The only side effect of # the extension being on is that render stats are tracked. This is believed # to be effectively free. And, by doing so here, it avoids us having to # programmatically inspect a pageset's actions in order to determine if it # might eventually scroll. args.append('--enable-gpu-benchmarking') # Suppress all permission prompts by atomatically denying them. args.append('--deny-permission-prompts') # Override the need for a user gesture in order to play media. args.append('--autoplay-policy=no-user-gesture-required') if browser_options.disable_background_networking: args.append('--disable-background-networking') args.extend(user_agent.GetChromeUserAgentArgumentFromType( browser_options.browser_user_agent_type)) if browser_options.disable_component_extensions_with_background_pages: args.append('--disable-component-extensions-with-background-pages') # Disables the start page, as well as other external apps that can # steal focus or make measurements inconsistent. if browser_options.disable_default_apps: args.append('--disable-default-apps') # Disable the search geolocation disclosure infobar, as it is only shown a # small number of times to users and should not be part of perf comparisons. args.append('--disable-search-geolocation-disclosure') # Telemetry controls startup tracing via DevTools. args.append('--trace-startup-owner=devtools') if (browser_options.logging_verbosity == browser_options.NON_VERBOSE_LOGGING): args.extend(['--enable-logging', '--v=0']) elif (browser_options.logging_verbosity == browser_options.VERBOSE_LOGGING): args.extend(['--enable-logging', '--v=1']) elif (browser_options.logging_verbosity == browser_options.SUPER_VERBOSE_LOGGING): args.extend(['--enable-logging', '--v=2']) extensions = [e.local_path for e in browser_options.extensions_to_load] if extensions: args.append('--load-extension=%s' % ','.join(extensions)) return args
def GetBrowserStartupArgs(self): assert not '--no-proxy-server' in self.browser_options.extra_browser_args, ( '--no-proxy-server flag is disallowed as Chrome needs to be route to ' 'ts_proxy_server') args = [] args.extend(self.browser_options.extra_browser_args) # TODO(crbug.com/760319): This is a hack to temporarily disable modal # permission prompts on Android. Remove after implementing a longer term # solution. if self.browser_options.block_modal_permission_prompts: for i, arg in enumerate(args): if arg.startswith('--enable-features='): args[i] = re.sub(r',\w+<PermissionPromptUIAndroidModal\b', '', arg) elif arg.startswith('--force-fieldtrials='): args[i] = re.sub(r'\bPermissionPromptUIAndroidModal/\w+/', '', arg) elif arg.startswith('--disable-features='): args[i] = ','.join([ args[i], 'ModalPermissionPrompts<PermissionPromptUIAndroidModal' ]) args.append('--enable-net-benchmarking') args.append('--metrics-recording-only') args.append('--no-default-browser-check') args.append('--no-first-run') # Turn on GPU benchmarking extension for all runs. The only side effect of # the extension being on is that render stats are tracked. This is believed # to be effectively free. And, by doing so here, it avoids us having to # programmatically inspect a pageset's actions in order to determine if it # might eventually scroll. args.append('--enable-gpu-benchmarking') if self.browser_options.disable_background_networking: args.append('--disable-background-networking') args.extend(self.GetReplayBrowserStartupArgs()) args.extend( user_agent.GetChromeUserAgentArgumentFromType( self.browser_options.browser_user_agent_type)) extensions = [ extension.local_path for extension in self._extensions_to_load ] extension_str = ','.join(extensions) if len(extensions) > 0: args.append('--load-extension=%s' % extension_str) if self.browser_options.disable_component_extensions_with_background_pages: args.append('--disable-component-extensions-with-background-pages') # Disables the start page, as well as other external apps that can # steal focus or make measurements inconsistent. if self.browser_options.disable_default_apps: args.append('--disable-default-apps') # Disable the search geolocation disclosure infobar, as it is only shown a # small number of times to users and should not be part of perf comparisons. args.append('--disable-search-geolocation-disclosure') if (self.browser_options.logging_verbosity == self.browser_options.NON_VERBOSE_LOGGING): args.extend(['--enable-logging', '--v=0']) elif (self.browser_options.logging_verbosity == self.browser_options.VERBOSE_LOGGING): args.extend(['--enable-logging', '--v=1']) elif (self.browser_options.logging_verbosity == self.browser_options.SUPER_VERBOSE_LOGGING): args.extend(['--enable-logging', '--v=2']) return args
def GetBrowserStartupArgs(self): assert not '--no-proxy-server' in self.browser_options.extra_browser_args, ( '--no-proxy-server flag is disallowed as Chrome needs to be route to ' 'ts_proxy_server') args = [] args.extend(self.browser_options.extra_browser_args) args.append('--enable-net-benchmarking') args.append('--metrics-recording-only') args.append('--no-default-browser-check') args.append('--no-first-run') # Turn on GPU benchmarking extension for all runs. The only side effect of # the extension being on is that render stats are tracked. This is believed # to be effectively free. And, by doing so here, it avoids us having to # programmatically inspect a pageset's actions in order to determine if it # might eventually scroll. args.append('--enable-gpu-benchmarking') # Suppress all permission prompts by atomatically denying them. args.append('--deny-permission-prompts') # Override the need for a user gesture in order to play media. args.append('--autoplay-policy=no-user-gesture-required') if self.browser_options.disable_background_networking: args.append('--disable-background-networking') args.extend(self.GetReplayBrowserStartupArgs()) args.extend( user_agent.GetChromeUserAgentArgumentFromType( self.browser_options.browser_user_agent_type)) extensions = [ extension.local_path for extension in self._extensions_to_load ] extension_str = ','.join(extensions) if len(extensions) > 0: args.append('--load-extension=%s' % extension_str) if self.browser_options.disable_component_extensions_with_background_pages: args.append('--disable-component-extensions-with-background-pages') # Disables the start page, as well as other external apps that can # steal focus or make measurements inconsistent. if self.browser_options.disable_default_apps: args.append('--disable-default-apps') # Disable the search geolocation disclosure infobar, as it is only shown a # small number of times to users and should not be part of perf comparisons. args.append('--disable-search-geolocation-disclosure') if (self.browser_options.logging_verbosity == self.browser_options.NON_VERBOSE_LOGGING): args.extend(['--enable-logging', '--v=0']) elif (self.browser_options.logging_verbosity == self.browser_options.VERBOSE_LOGGING): args.extend(['--enable-logging', '--v=1']) elif (self.browser_options.logging_verbosity == self.browser_options.SUPER_VERBOSE_LOGGING): args.extend(['--enable-logging', '--v=2']) return args