chromium/content/public/common/content_switches.cc

// Copyright 2012 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "content/public/common/content_switches.h"

#include "build/build_config.h"
#include "build/chromeos_buildflags.h"
#include "media/media_buildflags.h"

namespace switches {

// By default, file:// URIs cannot read other file:// URIs. This is an
// override for developers who need the old behavior for testing.
const char kAllowFileAccessFromFiles[]      =;

// Enables TLS/SSL errors on localhost to be ignored (no interstitial,
// no blocking of requests).
const char kAllowInsecureLocalhost[] =;

// Allows loopback interface to be added in network list for peer connection.
const char kAllowLoopbackInPeerConnection[] =;

// Allows plugins to be loaded in the command line for testing.
const char kAllowCommandLinePlugins[] =;

// Causes the Attribution Report API to run without delays or noise.
const char kAttributionReportingDebugMode[] =;

// Bypasses the dialog prompting the user for permission to capture
// cameras and microphones. Useful in automatic tests of video-conferencing
// Web applications.
// This is nearly identical to kUseFakeUIForMediaStream, with the exception
// being that this flag does NOT affect screen-capture.
const char kAutoAcceptCameraAndMicrophoneCapture[] =;

// Causes the browser process to crash on startup.
const char kBrowserCrashTest[]              =;

// Causes the browser process to display a dialog on launch.
const char kBrowserStartupDialog[]          =;

// Path to the exe to run for the renderer and plugin subprocesses.
const char kBrowserSubprocessPath[]         =;

// Tells whether the code is running browser tests (this changes the startup URL
// used by the content shell and also disables features that can make tests
// flaky [like monitoring of memory pressure]).
const char kBrowserTest[] =;

// After a zygote forks a new process, change the stack canary. This switch is
// useful so not all forked processes use the same canary (a secret value),
// which can be vulnerable to information leaks and brute force attacks. See
// https://crbug.com/1206626.
// This requires that all functions on the stack at the time
// content::RunZygote() is called be compiled without stack canaries.
// Valid values are "enable" or "disable".
const char kChangeStackGuardOnFork[] =;
const char kChangeStackGuardOnForkEnabled[] =;
const char kChangeStackGuardOnForkDisabled[] =;

// Disable antialiasing on 2d canvas.
const char kDisable2dCanvasAntialiasing[]   =;

// Disables Canvas2D rendering into a scanout buffer for overlay support.
const char kDisable2dCanvasImageChromium[] =;

// Disables client-visible 3D APIs, in particular WebGL and Pepper 3D.
// This is controlled by policy and is kept separate from the other
// enable/disable switches to avoid accidentally regressing the policy
// support for controlling access to these APIs.
const char kDisable3DAPIs[]                 =;

// Disable gpu-accelerated 2d canvas.
const char kDisableAccelerated2dCanvas[]    =;

// Enable in-progress canvas 2d API methods BeginLayer and EndLayer.
const char kEnableCanvas2DLayers[] =;

// Disables hardware acceleration of video decode, where available.
// Warning: do not remove or rename this flag, as it is used inside ChromeOS
// code to implement the DeviceHardwareVideoDecodingEnabled policy.
const char kDisableAcceleratedVideoDecode[] =;

// Disables hardware acceleration of video encode, where available.
const char kDisableAcceleratedVideoEncode[] =;

// Disable limits on the number of backing stores. Can prevent blinking for
// users with many windows/tabs and lots of memory.
const char kDisableBackingStoreLimit[]      =;

// Disable backgrounding renders for occluded windows. Done for tests to avoid
// nondeterministic behavior.
const char kDisableBackgroundingOccludedWindowsForTesting[] =;

// Disable task throttling of timer tasks from background pages.
const char kDisableBackgroundTimerThrottling[] =;

// Disables the BackForwardCache feature.
const char kDisableBackForwardCache[] =;

// Disable one or more Blink runtime-enabled features.
// Use names from runtime_enabled_features.json5, separated by commas.
// Applied after kEnableBlinkFeatures, and after other flags that change these
// features.
const char kDisableBlinkFeatures[]          =;

// Disables HTML5 DB support.
const char kDisableDatabases[]              =;

// Disable the per-domain blocking for 3D APIs after GPU reset.
// This switch is intended only for tests.
const char kDisableDomainBlockingFor3DAPIs[] =;

// Disables the in-process stack traces.
const char kDisableInProcessStackTraces[] =;

// Disable all versions of WebGL.
const char kDisableWebGL[] =;

// Disable WebGL2.
const char kDisableWebGL2[] =;

// Disable FileSystem API.
const char kDisableFileSystem[]             =;

// Disable user gesture requirement for presentation.
const char kDisableGestureRequirementForPresentation[] =;

// Disables GPU hardware acceleration.  If software renderer is not in place,
// then the GPU process won't launch.
const char kDisableGpu[]                    =;

// Prevent the compositor from using its GPU implementation.
const char kDisableGpuCompositing[]         =;

// Disable proactive early init of GPU process.
const char kDisableGpuEarlyInit[]           =;

// Do not force that all compositor resources be backed by GPU memory buffers.
const char kDisableGpuMemoryBufferCompositorResources[] =;

// Disable GpuMemoryBuffer backed VideoFrames.
const char kDisableGpuMemoryBufferVideoFrames[] =;

// For tests, to disable the limit on the number of times the GPU process may be
// restarted.
const char kDisableGpuProcessCrashLimit[] =;

// For tests, to disable falling back to software compositing if the GPU Process
// has crashed, and reached the GPU Process crash limit.
const char kDisableSoftwareCompositingFallback[] =;

// Disable the thread that crashes the GPU process if it stops responding to
// messages.
const char kDisableGpuWatchdog[] =;

// Disables the IPC flooding protection.
// It is activated by default. Some javascript functions can be used to flood
// the browser process with IPC. This protection limits the rate at which they
// can be used.
const char kDisableIpcFloodingProtection[] =;

// Suppresses hang monitor dialogs in renderer processes.  This may allow slow
// unload handlers on a page to prevent the tab from closing, but the Task
// Manager can be used to terminate the offending process in this case.
const char kDisableHangMonitor[]            =;

// Disable the RenderThread's HistogramCustomizer.
const char kDisableHistogramCustomizer[]    =;

// Don't kill a child process when it sends a bad IPC message.  Apart
// from testing, it is a bad idea from a security perspective to enable
// this switch.
const char kDisableKillAfterBadIPC[]        =;

// Disables LCD text.
const char kDisableLCDText[]                =;

// Disable LocalStorage.
const char kDisableLocalStorage[]           =;

// Force logging to be disabled.  Logging is enabled by default in debug
// builds.
const char kDisableLogging[]                =;

// Disables using CODECAPI_AVLowLatencyMode when creating DXVA decoders.
const char kDisableLowLatencyDxva[]         =;

// Disables Mojo broker capabilities in the browser during Mojo initialization.
const char kDisableMojoBroker[] =;

// Disables clearing the rendering output of a renderer when it didn't commit
// new output for a while after a top-frame navigation.
const char kDisableNewContentRenderingTimeout[] =;

// Disables the Web Notification and the Push APIs.
const char kDisableNotifications[]          =;

// Disable Pepper3D.
const char kDisablePepper3d[]               =;

// Disables compositor-accelerated touch-screen pinch gestures.
const char kDisablePinch[]                  =;

// Disables the Presentation API.
const char kDisablePresentationAPI[]        =;

// Disables throttling of history.pushState/replaceState calls.
const char kDisablePushStateThrottle[] =;

// Taints all <canvas> elements, regardless of origin.
const char kDisableReadingFromCanvas[]      =;

// Disables remote web font support. SVG font should always work whether this
// option is specified or not.
const char kDisableRemoteFonts[]            =;

// Disables the RemotePlayback API.
const char kDisableRemotePlaybackAPI[]      =;

// Prevent renderer process backgrounding when set.
const char kDisableRendererBackgrounding[]  =;

// Whether the ResourceScheduler is disabled.  Note this is only useful for C++
// Headless embedders who need to implement their own resource scheduling.
const char kDisableResourceScheduler[] =;

// Disable shared workers.
const char kDisableSharedWorkers[]          =;

// Do not use runtime-detected high-end CPU optimizations in Skia.  This is
// useful for forcing a baseline code path for e.g. web tests.
const char kDisableSkiaRuntimeOpts[]        =;

// Disable smooth scrolling for testing.
const char kDisableSmoothScrolling[]        =;

// Disables the use of a 3D software rasterizer.
const char kDisableSoftwareRasterizer[]     =;

// Disables the Web Speech API (both speech recognition and synthesis).
const char kDisableSpeechAPI[]              =;

// Disables the speech synthesis part of Web Speech API.
const char kDisableSpeechSynthesisAPI[]     =;

// Disable multithreaded GPU compositing of web content.
const char kDisableThreadedCompositing[]    =;

// Disable V8 idle tasks.
const char kDisableV8IdleTasks[]            =;

// Disables WebGL rendering into a scanout buffer for overlay support.
const char kDisableWebGLImageChromium[]     =;

// Don't enforce the same-origin policy; meant for website testing only.
// This switch has no effect unless --user-data-dir (as defined by the content
// embedder) is also present.
const char kDisableWebSecurity[]            =;

// Disable the video decoder from drawing directly to a texture.
const char kDisableZeroCopyDxgiVideo[]      =;

// Specifies if the |DOMAutomationController| needs to be bound in the
// renderer. This binding happens on per-frame basis and hence can potentially
// be a performance bottleneck. One should only enable it when automating dom
// based tests.
const char kDomAutomationController[]       =;

// Disable antialiasing on 2d canvas clips
const char kDisable2dCanvasClipAntialiasing[] =;

// Disable YUV image decoding for those formats and cases where it's supported.
// Has no effect unless GPU rasterization is enabled.
const char kDisableYUVImageDecoding[] =;

// Enables LCD text.
const char kEnableLCDText[]                 =;

// Enable one or more Blink runtime-enabled features.
// Use names from runtime_enabled_features.json5, separated by commas.
// Applied before kDisableBlinkFeatures, and after other flags that change these
// features.
const char kEnableBlinkFeatures[]           =;

// Enable native caret browsing, in which a moveable cursor is placed on a web
// page, allowing a user to select and navigate through non-editable text using
// just a keyboard. See https://crbug.com/977390 for links to i2i.
const char kEnableCaretBrowsing[] =;

// Flag that turns on a group of experimental/newly added cookie-related
// features together, as a convenience for e.g. testing, to avoid having to set
// multiple switches individually which may be error-prone (not to mention
// tedious). There is not a corresponding switch to disable all these features,
// because that is discouraged, and for testing purposes you'd need to switch
// them off individually to identify the problematic feature anyway.
//
// At present this turns on:
//   net::features::kSameSiteDefaultChecksMethodRigorously
//   net::features::kCookieSameSiteConsidersRedirectChain
//   net::features::kEnablePortBoundCookies
//   net::features::kEnableSchemeBoundCookies
const char kEnableExperimentalCookieFeatures[] =;

// Enables experimental WebAssembly features.
const char kEnableExperimentalWebAssemblyFeatures[] =;

// Enables Web Platform features that are in development.
const char kEnableExperimentalWebPlatformFeatures[] =;

// Enables blink runtime enabled features with status:"test" or
// status:"experimental", which are enabled when running web tests.
const char kEnableBlinkTestFeatures[] =;

// Disables all RuntimeEnabledFeatures that can be enabled via OriginTrials.
const char kDisableOriginTrialControlledBlinkFeatures[] =;

// Enable GpuMemoryBuffer backed VideoFrames.
const char kEnableGpuMemoryBufferVideoFrames[] =;

// Enables Isolated Web Apps (IWAs) in a renderer process. There are two ways
// to enable the IWAs: by feature flag and by enterprise policy. If IWAs are
// enabled by any of the mentioned above ways then this flag is passed to
// the renderer process. This flag should not be used from command line.
// To enable IWAs from command line one should use kIsolatedWebApps feature
// flag.
const char kEnableIsolatedWebAppsInRenderer[] =;

// Force logging to be enabled.  Logging is disabled by default in release
// builds.
const char kEnableLogging[]                 =;

// Enables the type, downlinkMax attributes of the NetInfo API. Also, enables
// triggering of change attribute of the NetInfo API when there is a change in
// the connection type.
const char kEnableNetworkInformationDownlinkMax[] =;

// Disables the video decoder from drawing to an NV12 textures instead of ARGB.
const char kDisableNv12DxgiVideo[] =;

// Enables testing features of the Plugin Placeholder. For internal use only.
const char kEnablePluginPlaceholderTesting[] =;

// Make the values returned to window.performance.memory more granular and more
// up to date in shared worker. Without this flag, the memory information is
// still available, but it is bucketized and updated less frequently. This flag
// also applys to workers.
const char kEnablePreciseMemoryInfo[] =;

// Enables Privacy Sandbox APIs: Attribution Reporting, Fledge, Topics, Fenced
// Frames, Shared Storage, Private Aggregation, and their associated features.
const char kEnablePrivacySandboxAdsApis[] =;

// Set options to cache V8 data. (none, code, or default)
const char kV8CacheOptions[] =;

// If true the ServiceProcessLauncher is used to launch services. This allows
// for service binaries to be loaded rather than using the utility process. This
// is only useful for tests.
const char kEnableServiceBinaryLauncher[] =;

// Enables the Skia benchmarking extension.
const char kEnableSkiaBenchmarking[]        =;

// On platforms that support it, enables smooth scroll animation.
const char kEnableSmoothScrolling[]         =;

// Enable spatial navigation
const char kEnableSpatialNavigation[]       =;

// Blocks all insecure requests from secure contexts, and prevents the user
// from overriding that decision.
const char kEnableStrictMixedContentChecking[] =;

// Blocks insecure usage of a number of powerful features (device orientation,
// for example) that we haven't yet deprecated for the web at large.
const char kEnableStrictPowerfulFeatureRestrictions[] =;

// When specified along with a value in the range (0,1] will --enable-tracing
// for (roughly) that percentage of tests being run. This is done in a stable
// manner such that the same tests are chosen each run, and under the assumption
// that tests hash equally across the range of possible values.
// The flag will enable all tracing categories for those tests, and none for the
// rest. This flag could be used with other tracing switches like
// --enable-tracing-format, but any other switches that will enable tracing will
// turn tracing on for all tests.
const char kEnableTracingFraction[] =;

// Enable screen capturing support for MediaStream API.
const char kEnableUserMediaScreenCapturing[] =;

// Enables the use of the @viewport CSS rule, which allows
// pages to control aspects of their own layout. This also turns on touch-screen
// pinch gestures.
const char kEnableViewport[]                =;

// Enable the Vtune profiler support.
const char kEnableVtune[]                   =;

// Enable the WebAuthn Mojo Testing API. This is a way to interact with the
// virtual authenticator environment through a mojo interface and is supported
// only to run web-platform-tests on content shell.
// Removal of this deprecated API is blocked on crbug.com/937369.
const char kEnableWebAuthDeprecatedMojoTestingApi[] =;

// Enables WebGL developer extensions which are not generally exposed
// to the web platform.
const char kEnableWebGLDeveloperExtensions[] =;

// Enables WebGL extensions not yet approved by the community.
const char kEnableWebGLDraftExtensions[] =;

// Enables WebGL rendering into a scanout buffer for overlay support.
const char kEnableWebGLImageChromium[] =;

// Define an alias root directory which is replaced with the replacement string
// in file URLs. The format is "/alias=/replacement", which would turn
// file:///alias/some/path.html into file:///replacement/some/path.html.
const char kFileUrlPathAlias[] =;

// This forces pages to be loaded as presentation receivers.  Useful for testing
// behavior specific to presentation receivers.
// Spec: https://www.w3.org/TR/presentation-api/#interface-presentationreceiver
const char kForcePresentationReceiverForTesting[] =;

// Extra command line options for launching the GPU process (normally used
// for debugging). Use like renderer-cmd-prefix.
const char kGpuLauncher[]                   =;

// Makes this process a GPU sub-process.
const char kGpuProcess[]                    =;

// Starts the GPU sandbox before creating a GL context.
const char kGpuSandboxStartEarly[] =;

// Causes the GPU process to display a dialog on launch.
const char kGpuStartupDialog[]              =;

// Prevents creating scrollbars for web content. Useful for taking consistent
// screenshots.
const char kHideScrollbars[] =;

// Run the GPU process as a thread in the browser process.
const char kInProcessGPU[]                  =;

// Overrides the timeout, in seconds, that a child process waits for a
// connection from the browser before killing itself.
const char kIPCConnectionTimeout[]          =;

// Require dedicated processes for a set of origins, specified as a
// comma-separated list. For example:
//   --isolate-origins=https://www.foo.com,https://www.bar.com
const char kIsolateOrigins[] =;

// Enables the web-facing behaviors that will enable origin-isolation by default
// at some point in the relatively near future.
//
// https://crbug.com/1140371
const char kIsolationByDefault[] =;

// Disable latest shipping ECMAScript 6 features.
const char kDisableJavaScriptHarmonyShipping[] =;

// Enables experimental Harmony (ECMAScript 6) features.
const char kJavaScriptHarmony[]             =;

// Flag to launch tests in the browser process.
const char kLaunchAsBrowser[] =;

// Logs GPU control list decisions when enforcing blocklist rules.
const char kLogGpuControlListDecisions[]    =;

// Sets the minimum log level. Valid values are from 0 to 3:
// INFO = 0, WARNING = 1, LOG_ERROR = 2, LOG_FATAL = 3.
const char kLoggingLevel[]                  =;

// Overrides the default file name to use for general-purpose logging (does not
// affect which events are logged).
const char kLogFile[] =;

// Log an error whenever the unload timeout for a render frame is exceeded.
const char kLogMissingUnloadACK[] =;

// Allows user to override maximum number of active WebGL contexts per
// renderer process.
const char kMaxActiveWebGLContexts[] =;

// Sets the maximium decoded image size limitation.
const char kMaxDecodedImageSizeMb[] =;

// Sets the maximum number of WebMediaPlayers allowed per frame.
const char kMaxWebMediaPlayerCount[] =;

// Indicates the utility process should run with a message loop type of UI.
const char kMessageLoopTypeUi[] =;

// Set the default result for MockCertVerifier. This only works in test code.
const char kMockCertVerifierDefaultResultForTesting[] =;

// Use a Mojo-based LocalStorage implementation.
const char kMojoLocalStorage[]              =;

// Disables the unsandboxed zygote.
// Note: this flag should not be used on most platforms. It is introduced
// because some platforms (e.g. Cast) have very limited memory and binaries
// won't be updated when the browser process is running.
const char kNoUnsandboxedZygote[] =;

// Disables the use of a zygote process for forking child processes. Instead,
// child processes will be forked and exec'd directly. Note that --no-sandbox
// should also be used together with this flag because the sandbox needs the
// zygote to work.
const char kNoZygote[] =;

// Overrides the language detection result determined based on the page
// contents.
const char kOverrideLanguageDetection[] =;

// Renderer process that runs the non-PPAPI PDF plugin.
const char kPdfRenderer[] =;

// Runs PPAPI (Pepper) plugins in-process.
const char kPpapiInProcess[]                =;

// Specifies a command that should be used to launch the ppapi plugin process.
// Useful for running the plugin process through purify or quantify.  Ex:
//   --ppapi-plugin-launcher="path\to\purify /Run=yes"
const char kPpapiPluginLauncher[]           =;

// Argument to the process type that indicates a PPAPI plugin process type.
const char kPpapiPluginProcess[]            =;

// Causes the PPAPI sub process to display a dialog on launch. Be sure to use
// --no-sandbox as well or the sandbox won't allow the dialog to display.
const char kPpapiStartupDialog[]            =;

// Causes the Private Aggregation API to run without reporting delays.
const char kPrivateAggregationDeveloperMode[] =;

// Enable the "Process Per Site" process model for all domains. This mode
// consolidates same-site pages so that they share a single process.
//
// More details here:
// - https://www.chromium.org/developers/design-documents/process-models
// - The class comment in site_instance.h, listing the supported process models.
//
// IMPORTANT: This isn't to be confused with --site-per-process (which is about
// isolation, not consolidation). You probably want the other one.
const char kProcessPerSite[]                =;

// Runs each set of script-connected tabs (i.e., a BrowsingInstance) in its own
// renderer process.  We default to using a renderer process for each
// site instance (i.e., group of pages from the same registered domain with
// script connections to each other).
// TODO(creis): This flag is currently a no-op.  We should refactor it to avoid
// "unnecessary" process swaps for cross-site navigations but still swap when
// needed for security (e.g., isolated origins).
const char kProcessPerTab[]                 =;

// The value of this switch determines whether the process is started as a
// renderer or plugin host.  If it's empty, it's the browser.
const char kProcessType[]                   =;

// Causes Protected Audiences Bidding and Auction API to supply the provided
// debugging key to the trusted auction server. This tells the server that it
// okay to log information about this user's auction to help with debugging.
const char kProtectedAudiencesConsentedDebugToken[] =;

// Uses a specified proxy server, overrides system settings. This switch only
// affects HTTP and HTTPS requests. ARC-apps use only HTTP proxy server with the
// highest priority.
// TODO(yzshen): Move this switch back to chrome/common/chrome_switches.{h,cc},
// once the network service is able to access the corresponding setting via the
// pref service.
const char kProxyServer[] =;

// Enables or disables pull-to-refresh gesture in response to vertical
// overscroll.
// Set the value to '0' to disable the feature, set to '1' to enable it for both
// touchpad and touchscreen, and set to '2' to enable it only for touchscreen.
// Defaults to disabled.
const char kPullToRefresh[] =;

// Specifies the minimum amount of time, in seconds, that must pass before
// consecutive quota change events can be fired. Set the value to '0' to disable
// the debounce mechanimsm.
const char kQuotaChangeEventInterval[] =;

// Reduce the accept-language http header, and only send one language in the
// request header: https://github.com/Tanych/accept-language.
const char kReduceAcceptLanguage[] =;

// Reduce the minor version number in the User-Agent string. This flag
// implements phase 4 of User-Agent reduction:
// https://blog.chromium.org/2021/09/user-agent-reduction-origin-trial-and-dates.html.
const char kReduceUserAgentMinorVersion[] =;

// Reduce the platform and oscpu in the desktop User-Agent string. This flag
// implements phase 5 of User-Agent reduction:
// https://blog.chromium.org/2021/09/user-agent-reduction-origin-trial-and-dates.html.
const char kReduceUserAgentPlatformOsCpu[] =;

// Register Pepper plugins (see pepper_plugin_list.cc for its format).
const char kRegisterPepperPlugins[]         =;

// Enables remote debug over stdio pipes [in=3, out=4] or over the remote pipes
// specified in the 'remote-debugging-io-pipes' switch.
// Optionally, specifies the format for the protocol messages, can be either
// "JSON" (the default) or "CBOR".
const char kRemoteDebuggingPipe[] =;

// Enables remote debug over HTTP on the specified port.
const char kRemoteDebuggingPort[]           =;

// Enables web socket connections from the specified origins only. '*' allows
// any origin.
const char kRemoteAllowOrigins[] =;

const char kRendererClientId[] =;

// The contents of this flag are prepended to the renderer command line.
// Useful values might be "valgrind" or "xterm -e gdb --args".
const char kRendererCmdPrefix[]             =;

// Causes the process to run as renderer instead of as browser.
const char kRendererProcess[]               =;

// Time the browser launched the renderer process (in TimeTicks).
const char kRendererProcessLaunchTimeTicks[] =;

// Overrides the default/calculated limit to the number of renderer processes.
// Very high values for this setting can lead to high memory/resource usage
// or instability.
const char kRendererProcessLimit[]          =;

// Causes the renderer process to display a dialog on launch. Passing this flag
// also adds sandbox::policy::kNoSandbox on Windows non-official builds, since
// that's needed to show a dialog.
const char kRendererStartupDialog[]         =;

// Manual tests only run when --run-manual is specified. This allows writing
// tests that don't run automatically but are still in the same test binary.
// This is useful so that a team that wants to run a few tests doesn't have to
// add a new binary that must be compiled on all builds.
const char kRunManualTestsFlag[] =;

// Causes the process to run as a sandbox IPC subprocess.
const char kSandboxIPCProcess[]             =;

// Enables shared array buffer on desktop, gated by an Enterprise Policy.
// TODO(crbug.com/40155376) Remove when migration to COOP+COEP is complete.
#if !BUILDFLAG(IS_ANDROID)
const char kSharedArrayBufferUnrestrictedAccessAllowed[] =;
#endif

// Describes the file descriptors passed to a child process in the following
// list format:
//
//     <file_id>:<descriptor_id>,<file_id>:<descriptor_id>,...
//
// where <file_id> is an ID string from the manifest of the service being
// launched and <descriptor_id> is the numeric identifier of the descriptor for
// the child process can use to retrieve the file descriptor from the
// global descriptor table.
const char kSharedFiles[] =;

// Runs the renderer and plugins in the same process as the browser
const char kSingleProcess[]                 =;

// Enforces a one-site-per-process security policy:
//  * Each renderer process, for its whole lifetime, is dedicated to rendering
//    pages for just one site.
//  * Thus, pages from different sites are never in the same process.
//  * A renderer process's access rights are restricted based on its site.
//  * All cross-site navigations force process swaps.
//  * <iframe>s are rendered out-of-process whenever the src= is cross-site.
//
// More details here:
// - https://www.chromium.org/developers/design-documents/site-isolation
// - https://www.chromium.org/developers/design-documents/process-models
// - The class comment in site_instance.h, listing the supported process models.
//
// IMPORTANT: this isn't to be confused with --process-per-site (which is about
// process consolidation, not isolation). You probably want this one.
const char kSitePerProcess[]                =;

// Disables site isolation.
//
// Note that the opt-in (to site-per-process, isolate-origins, etc.) via
// enterprise policy and/or cmdline takes precedence over the
// kDisableSiteIsolation switch (i.e. the opt-in takes effect despite potential
// presence of kDisableSiteIsolation switch).
//
// Note that for historic reasons the name of the switch misleadingly mentions
// "trials", but the switch also disables the default site isolation that ships
// on desktop since M67.  The name of the switch is preserved for
// backcompatibility of chrome://flags.
const char kDisableSiteIsolation[] =;

// Specifies if the browser should start in fullscreen mode, like if the user
// had pressed F11 right after startup.
const char kStartFullscreen[] =;

// Specifies if the |StatsCollectionController| needs to be bound in the
// renderer. This binding happens on per-frame basis and hence can potentially
// be a performance bottleneck. One should only enable it when running a test
// that needs to access the provided statistics.
const char kStatsCollectionController[] =;

// Specifies the max number of bytes that should be used by the skia font cache.
// If the cache needs to allocate more, skia will purge previous entries.
const char kSkiaFontCacheLimitMb[] =;

// Specifies the max number of bytes that should be used by the skia resource
// cache. The previous entries are purged from the cache when the memory useage
// exceeds this limit.
const char kSkiaResourceCacheLimitMb[] =;

// Type of the current test harness ("browser" or "ui" or "gpu").
const char kTestType[]                      =;

// Enable support for touch event feature detection.
const char kTouchEventFeatureDetection[] =;

// The values the kTouchEventFeatureDetection switch may have, as in
// --touch-events=disabled.
//   auto: enabled at startup when an attached touchscreen is present.
const char kTouchEventFeatureDetectionAuto[] =;
//   enabled: touch events always enabled.
const char kTouchEventFeatureDetectionEnabled[] =;
//   disabled: touch events are disabled.
const char kTouchEventFeatureDetectionDisabled[] =;

// Accepts a number representing the time-ticks value at the Unix epoch.
// Since different processes can produce a different value for this due to
// system clock changes, this allows synchronizing them to a single value.
const char kTimeTicksAtUnixEpoch[] =;

// Replaces the existing codecs supported in peer connection with a single fake
// codec entry that create a fake video encoder and decoder.
const char kUseFakeCodecForPeerConnection[] =;

// Bypass the digital-identity-credential OS call. Simulate the user
// accepting the OS-presented dialog.
const char kUseFakeUIForDigitalIdentity[] =;

// Bypass the FedCM account selection dialog. If a value is provided for
// this switch, that account ID is selected, otherwise the first account
// is chosen.
const char kUseFakeUIForFedCM[] =;

// Bypass the media stream infobar by selecting the default device for media
// streams (e.g. WebRTC). Works with --use-fake-device-for-media-stream.
// Prefer --auto-accept-camera-and-microphone-capture which does not interact
// with screen/tab capture.
const char kUseFakeUIForMediaStream[]     =;

#if BUILDFLAG(IS_WIN)
// This will replace the existing font manager with SkiaFontManager in the
// renderer.
const char kUseSkiaFontManager[] = "use-skia-font-manager";
#endif

// Texture target for CHROMIUM_image backed video frame textures.
const char kVideoImageTextureTarget[] =;

#if BUILDFLAG(IS_ANDROID) && BUILDFLAG(INCLUDE_BOTH_V8_SNAPSHOTS)
// Switch supplied to the renderer if the feature `kUseContextSnapshot` is
// enabled. A switch is used as at the time the renderer needs this information
// features have not yet been loaded.
const char kUseContextSnapshotSwitch[] = "use-context-snapshot";
#endif

// Set when Chromium should use a mobile user agent.
const char kUseMobileUserAgent[] =;

// Use the MockCertVerifier. This only works in test code.
const char kUseMockCertVerifierForTesting[] =;

// The contents of this flag are prepended to the utility process command line.
// Useful values might be "valgrind" or "xterm -e gdb --args".
const char kUtilityCmdPrefix[]              =;

// Causes the process to run as a utility subprocess.
const char kUtilityProcess[]                =;

// Causes the utility process to display a dialog on launch.
const char kUtilityStartupDialog[] =;

// This switch indicates the type of a utility process. It does not affect the
// services offered by the process, but is added to the command line for
// debugging and profiling purposes.
const char kUtilitySubType[] =;

// Causes tests to attempt to verify pixel output.
const char kVerifyPixels[] =;

// Will add kWaitForDebugger to every child processes. If a value is passed, it
// will be used as a filter to determine if the child process should have the
// kWaitForDebugger flag passed on or not.
const char kWaitForDebuggerChildren[]       =;

// On every navigation a message with the renderer's URL will be logged and the
// renderer will wait for a debugger to be attached or SIGUSR1 to be sent to
// continue execution.
const char kWaitForDebuggerOnNavigation[] =;

// Flag used by WebUI test runners to wait for debugger to be attached.
const char kWaitForDebuggerWebUI[] =;

// Allows trusted remote desktop clients to make WebAuthn requests on behalf of
// other origins. This switch only controls availability of the
// `remoteDesktopClientOverride` extension but doesn't by itself enable any
// origin to use it.
const char kWebAuthRemoteDesktopSupport[] =;

// Set the antialiasing method used for webgl. (none, explicit, implicit)
const char kWebglAntialiasingMode[] =;

// Set a default sample count for webgl if msaa is enabled.
const char kWebglMSAASampleCount[] =;

// The prefix used when starting the zygote process. (i.e. 'gdb --args')
const char kZygoteCmdPrefix[] =;

// Causes the process to run as a zygote.
const char kZygoteProcess[] =;

// Enables specified backend for the Web OTP API.
const char kWebOtpBackend[] =;

// Enables Sms Verification backend for Web OTP API which requires app hash in
// SMS body.
const char kWebOtpBackendSmsVerification[] =;

// Enables User Consent backend for Web OTP API.
const char kWebOtpBackendUserConsent[] =;

// Enables auto backend selection for Web OTP API.
const char kWebOtpBackendAuto[] =;

// Disables encryption of RTP Media for WebRTC. When Chrome embeds Content, it
// ignores this switch on its stable and beta channels.
const char kDisableWebRtcEncryption[]      =;

// Enables negotiation of encrypted header extensions from RFC 6904 for SRTP
// in WebRTC.
// See https://tools.ietf.org/html/rfc6904 for further information.
// TODO(crbug.com/40623740): Remove this.
const char kEnableWebRtcSrtpEncryptedHeaders[] =;

// Enforce IP Permission check. TODO(guoweis): Remove this once the feature is
// not under finch and becomes the default.
const char kEnforceWebRtcIPPermissionCheck[] =;

// Override WebRTC IP handling policy to mimic the behavior when WebRTC IP
// handling policy is specified in Preferences.
const char kForceWebRtcIPHandlingPolicy[] =;

// Override the maximum framerate as can be specified in calls to getUserMedia.
// This flag expects a value.  Example: --max-gum-fps=17.5
const char kWebRtcMaxCaptureFramerate[] =;

// Enable capture and local storage of WebRTC event logs without visiting
// chrome://webrtc-internals. This is useful for automated testing. It accepts
// the path to which the local logs would be stored. Disabling is not possible
// without restarting the browser and relaunching without this flag.
const char kWebRtcLocalEventLogging[] =;

// This switch disables the ScrollToTextFragment feature.
const char kDisableScrollToTextFragment[] =;

// Forcibly enable and select the specified runtime for webxr.
// Note that this provides an alternative means of enabling a runtime, and will
// also functionally disable all other runtimes.
const char kWebXrForceRuntime[] =;

// Tell WebXr to assume that it does not support any runtimes.
const char kWebXrRuntimeNone[] =;

const char kWebXrRuntimeOrientationSensors[] =;

// The following are the runtimes that WebXr supports.
const char kWebXrRuntimeArCore[] =;
const char kWebXrRuntimeCardboard[] =;
const char kWebXrRuntimeOpenXr[] =;

#if BUILDFLAG(IS_ANDROID)
// Disable Media Session API
const char kDisableMediaSessionAPI[] = "disable-media-session-api";

// Disable the locking feature of the screen orientation API.
const char kDisableScreenOrientationLock[]  = "disable-screen-orientation-lock";

// Just like kDisableSiteIsolation, but doesn't show the "stability and security
// will suffer" butter bar warning.
const char kDisableSiteIsolationForPolicy[] =
    "disable-site-isolation-for-policy";

// Disable timeouts that may cause the browser to die when running slowly. This
// is useful if running with profiling (such as debug malloc).
const char kDisableTimeoutsForProfiling[] = "disable-timeouts-for-profiling";

// Enable inverting of selection handles so that they are not clipped by the
// viewport boundaries.
const char kEnableAdaptiveSelectionHandleOrientation[] =
    "enable-adaptive-selection-handle-orientation";

// Enable drag manipulation of longpress-triggered text selections.
const char kEnableLongpressDragSelection[]  = "enable-longpress-drag-selection";

// Prevent the offline indicator from showing.
const char kForceOnlineConnectionStateForIndicator[] =
    "force-online-connection-state-for-indicator";

// Enables remote debug over HTTP on the specified socket name.
const char kRemoteDebuggingSocketName[]     = "remote-debugging-socket-name";

// Block ChildProcessMain thread of the renderer's ChildProcessService until a
// Java debugger is attached.
const char kRendererWaitForJavaDebugger[] = "renderer-wait-for-java-debugger";

// Disables debug crash dumps for OOPR.
const char kDisableOoprDebugCrashDump[] = "disable-oopr-debug-crash-dump";
#endif  // BUILDFLAG(IS_ANDROID)

// Enable the aggressive flushing of DOM Storage to minimize data loss.
const char kEnableAggressiveDOMStorageFlushing[] =;

// Enable indication that browser is controlled by automation.
const char kEnableAutomation[] =;

#if BUILDFLAG(IS_IOS)
// For mobile devices, tests should include a viewport meta tag to specify page
// dimension adjustments. Omitting the tag can lead to automatic resizing to
// the standard mobile fallback size (980), which results in content shrinking
// as it first expands to 980, then scales down to 800 to fit the screen, as
// observed in the issue at https://crrev.com/c/4615623.
// This flag is intended for use in tests that do not include a viewport meta
// tag. When enabled, it ensures the viewport size matches the standard mobile
// fallback size, thereby helping to prevent content resizing in such tests.
const char kPreventResizingContentsForTesting[] =
    "prevent-resizing-contents-for-testing";
#endif

// TODO(crbug.com/40118868): Revisit the macro expression once build flag switch
// of lacros-chrome is complete.
#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
// Allows sending text-to-speech requests to speech-dispatcher, a common
// Linux speech service. Because it's buggy, the user must explicitly
// enable it so that visiting a random webpage can't cause instability.
const char kEnableSpeechDispatcher[] =;

// For lacros, we do not use environment variable to pass values. Instead we
// use a command line flag to pass the path to the device.
const char kLLVMProfileFile[] =;
#endif

#if BUILDFLAG(IS_WIN)
// Device scale factor passed to certain processes like renderers, etc.
const char kDeviceScaleFactor[]     = "device-scale-factor";

// Disable the Legacy Window which corresponds to the size of the WebContents.
const char kDisableLegacyIntermediateWindow[] = "disable-legacy-window";

// DirectWrite FontCache is shared by browser to renderers using shared memory.
// This switch allows us to pass the shared memory handle to the renderer.
const char kFontCacheSharedHandle[] = "font-cache-shared-handle";

// The boolean value (0/1) of FontRenderParams::antialiasing to be passed to
// Ppapi processes.
const char kPpapiAntialiasedTextEnabled[] = "ppapi-antialiased-text-enabled";

// The enum value of FontRenderParams::subpixel_rendering to be passed to Ppapi
// processes.
const char kPpapiSubpixelRenderingSetting[] =
    "ppapi-subpixel-rendering-setting";

// Raise the timer interrupt frequency in all Chrome processes, for experimental
// purposes. This feature is needed because as of Windows 10 2004 the scheduling
// effects of changing the timer interrupt frequency are not global, and this
// lets us prove/disprove whether this matters. See https://crbug.com/1128917
const char kRaiseTimerFrequency[] = "raise-timer-frequency";

// Causes the second GPU process used for gpu info collection to display a
// dialog on launch.
const char kGpu2StartupDialog[] = "gpu2-startup-dialog";

// Use high priority for the audio process.
const char kAudioProcessHighPriority[] = "audio-process-high-priority";

// Specifies pipe names for the incoming and outbound messages on the Windows
// platform. This is a comma separated list of two pipe handles serialized as
// unsigned integers, e.g. "--remote-debugging-io-pipes=3,4".
const char kRemoteDebuggingIoPipes[] = "remote-debugging-io-pipes";
#endif

#if defined(ENABLE_IPC_FUZZER)
// Dumps IPC messages sent from renderer processes to the browser process to
// the given directory. Used primarily to gather samples for IPC fuzzing.
const char kIpcDumpDirectory[] = "ipc-dump-directory";

// Specifies the testcase used by the IPC fuzzer.
const char kIpcFuzzerTestcase[] = "ipc-fuzzer-testcase";
#endif

// Don't dump stuff here, follow the same order as the header.

}  // namespace switches