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