Пример #1
0
    def testFeaturesMerged(self):
        browser_options = FakeBrowserOptions()
        browser_options.AppendExtraBrowserArgs([
            '--disable-features=Feature1,Feature2',
            '--disable-features=Feature2,Feature3',
            '--enable-features=Feature4,Feature5',
            '--enable-features=Feature5,Feature6', '--foo'
        ])

        startup_args = chrome_startup_args.GetFromBrowserOptions(
            browser_options)
        self.assertTrue('--foo' in startup_args)
        # Make sure there's only once instance of --enable/disable-features and it
        # contains all values
        disable_count = 0
        enable_count = 0
        # Merging is done using using sets, so any order is correct
        for arg in startup_args:
            if arg.startswith('--disable-features='):
                split_arg = arg.split('=', 1)[1].split(',')
                self.assertEquals({'Feature1', 'Feature2', 'Feature3'},
                                  set(split_arg))
                disable_count += 1
            elif arg.startswith('--enable-features='):
                split_arg = arg.split('=', 1)[1].split(',')
                self.assertEquals({'Feature4', 'Feature5', 'Feature6'},
                                  set(split_arg))
                enable_count += 1
        self.assertEqual(1, disable_count)
        self.assertEqual(1, enable_count)
Пример #2
0
 def GetBrowserStartupArgs(self, browser_options):
     startup_args = chrome_startup_args.GetFromBrowserOptions(
         browser_options)
     startup_args.extend(
         chrome_startup_args.GetReplayArgs(
             self._platform_backend.network_controller_backend))
     return startup_args
Пример #3
0
  def GetBrowserStartupArgs(self, browser_options):
    startup_args = chrome_startup_args.GetFromBrowserOptions(browser_options)
    startup_args.extend(chrome_startup_args.GetReplayArgs(
        self._platform_backend.network_controller_backend))

    # Setting port=0 allows the browser to choose a suitable port.
    startup_args.append('--remote-debugging-port=0')
    startup_args.append('--enable-crash-reporter-for-testing')
    startup_args.append('--disable-component-update')

    if not self._is_content_shell:
      startup_args.append('--window-size=1280,1024')
      if self._flash_path:
        startup_args.append('--ppapi-flash-path=%s' % self._flash_path)
        # Also specify the version of Flash as a large version, so that it is
        # not overridden by the bundled or component-updated version of Flash.
        startup_args.append('--ppapi-flash-version=99.9.999.999')

    if self.profile_directory is not None:
      if self._is_content_shell:
        startup_args.append('--data-path=%s' % self.profile_directory)
      else:
        startup_args.append('--user-data-dir=%s' % self.profile_directory)

    trace_config_file = (self._platform_backend.tracing_controller_backend
                         .GetChromeTraceConfigFile())
    if trace_config_file:
      startup_args.append('--trace-config-file=%s' % trace_config_file)

    startup_args.extend(
        [a for a in self.extra_browser_args if a not in startup_args])

    return startup_args
Пример #4
0
  def GetBrowserStartupArgs(self, browser_options):
    startup_args = chrome_startup_args.GetFromBrowserOptions(browser_options)
    # use the flag `--ignore-certificate-errors` if in compatibility mode
    supports_spki_list = (
        self._backend_settings.supports_spki_list and
        compat_mode_options.IGNORE_CERTIFICATE_ERROR
        not in browser_options.compatibility_mode)
    startup_args.extend(chrome_startup_args.GetReplayArgs(
        self._platform_backend.network_controller_backend,
        supports_spki_list=supports_spki_list))
    startup_args.append('--enable-remote-debugging')
    startup_args.append('--disable-fre')
    startup_args.append('--disable-external-intent-requests')

    # Need to specify the user profile directory for
    # --ignore-certificate-errors-spki-list to work.
    startup_args.append('--user-data-dir=' + self.profile_directory)

    # Needed so that non-browser-process crashes avoid automatic dump upload
    # and subsequent deletion. The extra "Crashpad" is necessary because
    # crashpad_stackwalker.py is hard-coded to look for a "Crashpad" directory
    # in the dump directory that it is provided.
    startup_args.append('--breakpad-dump-location=' + posixpath.join(
        self._platform_backend.GetDumpLocation(self._backend_settings.package),
        'Crashpad'))

    return startup_args
Пример #5
0
  def GetBrowserStartupArgs(self, browser_options):
    startup_args = chrome_startup_args.GetFromBrowserOptions(browser_options)

    # The setup for remote ChromeOS uses direct connections to the
    # port-forwarded server rather than the SOCKS proxy
    # (done in Platform.SetHTTPServerDirectories()).
    #
    # This was probably done because of the inability to proxy
    # localhost/127.0.0.1 on ChromeOS. Once crbug.com/902579 is resolved
    # can just proxy like on other platforms.
    use_socks_proxy = not self._platform_backend.IsRemoteDevice()

    startup_args.extend(chrome_startup_args.GetReplayArgs(
        self._platform_backend.network_controller_backend,
        use_socks_proxy=use_socks_proxy))

    vmodule = ','.join('%s=2' % pattern for pattern in [
        '*/chromeos/net/*',
        '*/chromeos/login/*',
        'chrome_browser_main_posix'])

    startup_args.extend([
        '--enable-smooth-scrolling',
        '--enable-threaded-compositing',
        # Allow devtools to connect to chrome.
        '--remote-debugging-port=0',
        # Open a maximized window.
        '--start-maximized',
        # Disable sounds.
        '--ash-disable-system-sounds',
        '--mute-audio',
        # Skip user image selection screen, and post login screens.
        '--oobe-skip-postlogin',
        # Disable chrome logging redirect. crbug.com/724273.
        '--disable-logging-redirect',
        # Debug logging.
        '--vmodule=%s' % vmodule,
    ])

    if not browser_options.expect_policy_fetch:
      startup_args.append('--allow-failed-policy-fetch-for-test')

    # If we're using GAIA, skip to login screen, and do not disable GAIA
    # services.
    if browser_options.gaia_login:
      startup_args.append('--oobe-skip-to-login')
    elif browser_options.disable_gaia_services:
      startup_args.append('--disable-gaia-services')

    trace_config_file = (self._platform_backend.tracing_controller_backend
                         .GetChromeTraceConfigFile())
    if trace_config_file:
      startup_args.append('--trace-config-file=%s' % trace_config_file)

    return startup_args
Пример #6
0
    def GetBrowserStartupArgs(self, browser_options):
        startup_args = chrome_startup_args.GetFromBrowserOptions(
            browser_options)

        startup_args.extend(
            chrome_startup_args.GetReplayArgs(
                self._platform_backend.network_controller_backend))

        vmodule = ','.join('%s=2' % pattern for pattern in [
            '*/chromeos/net/*', '*/chromeos/login/*',
            'chrome_browser_main_posix'
        ])

        startup_args.extend([
            '--enable-smooth-scrolling',
            '--enable-threaded-compositing',
            # Allow devtools to connect to chrome.
            '--remote-debugging-port=0',
            # Open a maximized window.
            '--start-maximized',
            # Disable sounds.
            '--ash-disable-system-sounds',
            # Skip user image selection screen, and post login screens.
            '--oobe-skip-postlogin',
            # Debug logging.
            '--vmodule=%s' % vmodule,
            # Enable crash dumping.
            '--enable-crash-reporter-for-testing',
        ])

        if self._app_type == 'lacros-chrome':
            startup_args.extend(
                ['--lacros-mojo-socket-for-testing=/tmp/lacros.sock'])

        if browser_options.mute_audio:
            startup_args.append('--mute-audio')

        if not browser_options.expect_policy_fetch:
            startup_args.append('--allow-failed-policy-fetch-for-test')

        # If we're using GAIA, skip to login screen, enable GaiaActionButtons
        # feature, and do not disable GAIA services.
        if browser_options.gaia_login:
            startup_args.append('--oobe-skip-to-login')
            startup_args.append('--enable-features=GaiaActionButtons')
        elif browser_options.disable_gaia_services:
            startup_args.append('--disable-gaia-services')

        trace_config_file = (self._platform_backend.tracing_controller_backend.
                             GetChromeTraceConfigFile())
        if trace_config_file:
            startup_args.append('--trace-config-file=%s' % trace_config_file)

        return startup_args
    def GetBrowserStartupArgs(self, browser_options):
        startup_args = chrome_startup_args.GetFromBrowserOptions(
            browser_options)
        startup_args.extend(
            chrome_startup_args.GetReplayArgs(
                self._platform_backend.network_controller_backend))

        # Setting port=0 allows the browser to choose a suitable port.
        startup_args.append('--remote-debugging-port=0')
        startup_args.append('--enable-crash-reporter-for-testing')
        startup_args.append('--disable-component-update')

        if not self._is_content_shell:
            window_sizes = [
                arg for arg in browser_options.extra_browser_args
                if arg.startswith('--window-size=')
            ]
            if len(window_sizes) == 0:
                startup_args.append('--window-size=1280,1024')
            if self._flash_path:
                startup_args.append('--ppapi-flash-path=%s' % self._flash_path)
                # Also specify the version of Flash as a large version, so that it is
                # not overridden by the bundled or component-updated version of Flash.
                startup_args.append('--ppapi-flash-version=99.9.999.999')

        if self.profile_directory is not None:
            if self._is_content_shell:
                startup_args.append('--data-path=%s' % self.profile_directory)
            else:
                startup_args.append('--user-data-dir=%s' %
                                    self.profile_directory)

        trace_config_file = (self._platform_backend.tracing_controller_backend.
                             GetChromeTraceConfigFile())
        if trace_config_file:
            startup_args.append('--trace-config-file=%s' % trace_config_file)

        if sys.platform.startswith('linux'):
            # All linux tests should use the --password-store=basic
            # flag, which stops Chrome from reaching the system's Keyring or
            # KWallet. These are stateful system libraries, which can hurt tests
            # by reducing isolation, reducing speed and introducing flakiness due
            # to their own bugs.
            # See crbug.com/991424.
            startup_args.append('--password-store=basic')

        startup_args.extend(
            [a for a in self.extra_browser_args if a not in startup_args])

        return startup_args
Пример #8
0
 def Create(self):
     """Start the browser process."""
     startup_args = chrome_startup_args.GetFromBrowserOptions(
         self._browser_options)
     browser_backend = fuchsia_browser_backend.FuchsiaBrowserBackend(
         self._platform_backend, self._browser_options,
         self.browser_directory, self.profile_directory)
     try:
         return browser.Browser(browser_backend,
                                self._platform_backend,
                                startup_args,
                                find_existing=False)
     except Exception:
         browser_backend.Close()
         raise
    def GetBrowserStartupArgs(self, browser_options):
        startup_args = chrome_startup_args.GetFromBrowserOptions(
            browser_options)
        startup_args.extend(
            chrome_startup_args.GetReplayArgs(
                self._platform_backend.network_controller_backend,
                supports_spki_list=self._backend_settings.supports_spki_list))
        startup_args.append('--enable-remote-debugging')
        startup_args.append('--disable-fre')
        startup_args.append('--disable-external-intent-requests')

        # Need to specify the user profile directory for
        # --ignore-certificate-errors-spki-list to work.
        startup_args.append('--user-data-dir=' + self.profile_directory)

        return startup_args
Пример #10
0
    def GetBrowserStartupArgs(self, browser_options):
        startup_args = chrome_startup_args.GetFromBrowserOptions(
            browser_options)
        startup_args.extend(
            chrome_startup_args.GetReplayArgs(
                self._platform_backend.network_controller_backend))

        vmodule = ','.join('%s=2' % pattern for pattern in [
            '*/chromeos/net/*', '*/chromeos/login/*',
            'chrome_browser_main_posix'
        ])

        startup_args.extend([
            '--enable-smooth-scrolling',
            '--enable-threaded-compositing',
            # Allow devtools to connect to chrome.
            '--remote-debugging-port=0',
            # Open a maximized window.
            '--start-maximized',
            # Disable system startup sound.
            '--ash-disable-system-sounds',
            # Skip user image selection screen, and post login screens.
            '--oobe-skip-postlogin',
            # Disable chrome logging redirect. crbug.com/724273.
            '--disable-logging-redirect',
            # Debug logging.
            '--vmodule=%s' % vmodule,
        ])

        if not browser_options.expect_policy_fetch:
            startup_args.append('--allow-failed-policy-fetch-for-test')

        # If we're using GAIA, skip to login screen, and do not disable GAIA
        # services.
        if browser_options.gaia_login:
            startup_args.append('--oobe-skip-to-login')
        elif browser_options.disable_gaia_services:
            startup_args.append('--disable-gaia-services')

        trace_config_file = (self._platform_backend.tracing_controller_backend.
                             GetChromeTraceConfigFile())
        if trace_config_file:
            startup_args.append('--trace-config-file=%s' % trace_config_file)

        return startup_args
Пример #11
0
  def Create(self):
    """Start the browser process."""
    if local_first_binary_manager.LocalFirstBinaryManager.NeedsInit():
      local_first_binary_manager.LocalFirstBinaryManager.Init(
          self._build_dir, None, 'linux', platform.machine())

    startup_args = chrome_startup_args.GetFromBrowserOptions(
        self._browser_options)
    browser_backend = fuchsia_browser_backend.FuchsiaBrowserBackend(
        self._platform_backend, self._browser_options,
        self.browser_directory, self.profile_directory)
    try:
      return browser.Browser(
          browser_backend, self._platform_backend, startup_args,
          find_existing=False)
    except Exception:
      browser_backend.Close()
      raise
  def GetBrowserStartupArgs(self, browser_options):
    startup_args = chrome_startup_args.GetFromBrowserOptions(browser_options)
    # use the flag `--ignore-certificate-errors` if in compatibility mode
    supports_spki_list = (
        self._backend_settings.supports_spki_list and
        compat_mode_options.IGNORE_CERTIFICATE_ERROR
        not in browser_options.compatibility_mode)
    startup_args.extend(chrome_startup_args.GetReplayArgs(
        self._platform_backend.network_controller_backend,
        supports_spki_list=supports_spki_list))
    startup_args.append('--enable-remote-debugging')
    startup_args.append('--disable-fre')
    startup_args.append('--disable-external-intent-requests')

    # Need to specify the user profile directory for
    # --ignore-certificate-errors-spki-list to work.
    startup_args.append('--user-data-dir=' + self.profile_directory)

    return startup_args
  def GetBrowserStartupArgs(self, browser_options):
    startup_args = chrome_startup_args.GetFromBrowserOptions(browser_options)

    # TODO(crbug.com/753948): spki-list is not yet supported on WebView,
    # make this True when support is implemented.
    supports_spki_list = not isinstance(
        self._backend_settings,
        android_browser_backend_settings.WebviewBackendSettings)
    startup_args.extend(chrome_startup_args.GetReplayArgs(
        self._platform_backend.network_controller_backend,
        supports_spki_list=supports_spki_list))

    startup_args.append('--enable-remote-debugging')
    startup_args.append('--disable-fre')
    startup_args.append('--disable-external-intent-requests')

    # Need to specify the user profile directory for
    # --ignore-certificate-errors-spki-list to work.
    startup_args.append('--user-data-dir=' + self.profile_directory)

    return startup_args