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
Example #3
0
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
Example #5
0
    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