• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "content/public/common/content_switches.h"
6 
7 namespace switches {
8 
9 // The number of MSAA samples for canvas2D. Requires MSAA support by GPU to
10 // have an effect. 0 disables MSAA.
11 const char kAcceleratedCanvas2dMSAASampleCount[] = "canvas-msaa-sample-count";
12 
13 // By default, file:// URIs cannot read other file:// URIs. This is an
14 // override for developers who need the old behavior for testing.
15 const char kAllowFileAccessFromFiles[]      = "allow-file-access-from-files";
16 
17 // Enables the sandboxed processes to run without a job object assigned to them.
18 // This flag is required to allow Chrome to run in RemoteApps or Citrix. This
19 // flag can reduce the security of the sandboxed processes and allow them to do
20 // certain API calls like shut down Windows or access the clipboard. Also we
21 // lose the chance to kill some processes until the outer job that owns them
22 // finishes.
23 const char kAllowNoSandboxJob[]             = "allow-no-sandbox-job";
24 
25 // Allows debugging of sandboxed processes (see zygote_main_linux.cc).
26 const char kAllowSandboxDebugging[]         = "allow-sandbox-debugging";
27 
28 // Allow compositing on chrome:// pages.
29 const char kAllowWebUICompositing[]         = "allow-webui-compositing";
30 
31 // The same as kAuditHandles except all handles are enumerated.
32 const char kAuditAllHandles[]               = "enable-handle-auditing-all";
33 
34 // Enumerates and prints a child process' most dangerous handles when it
35 // is terminated.
36 const char kAuditHandles[]                  = "enable-handle-auditing";
37 
38 // Blacklist the GPU for accelerated compositing.
39 const char kBlacklistAcceleratedCompositing[] =
40     "blacklist-accelerated-compositing";
41 
42 // Blacklist the GPU for WebGL.
43 const char kBlacklistWebGL[]                = "blacklist-webgl";
44 
45 // Block cross-site documents (i.e., HTML/XML/JSON) from being loaded in
46 // subresources when a document is not supposed to read them.  This will later
47 // allow us to block them from the entire renderer process when site isolation
48 // is enabled.
49 const char kBlockCrossSiteDocuments[]     = "block-cross-site-documents";
50 
51 // Causes the browser process to throw an assertion on startup.
52 const char kBrowserAssertTest[]             = "assert-test";
53 
54 // Causes the browser process to crash on startup.
55 const char kBrowserCrashTest[]              = "crash-test";
56 
57 // Path to the exe to run for the renderer and plugin subprocesses.
58 const char kBrowserSubprocessPath[]         = "browser-subprocess-path";
59 
60 // Dumps extra logging about plugin loading to the log file.
61 const char kDebugPluginLoading[] = "debug-plugin-loading";
62 
63 // Sets the tile size used by composited layers.
64 const char kDefaultTileWidth[]              = "default-tile-width";
65 const char kDefaultTileHeight[]             = "default-tile-height";
66 
67 // Disable antialiasing on 2d canvas.
68 const char kDisable2dCanvasAntialiasing[]   = "disable-canvas-aa";
69 
70 // Disables client-visible 3D APIs, in particular WebGL and Pepper 3D.
71 // This is controlled by policy and is kept separate from the other
72 // enable/disable switches to avoid accidentally regressing the policy
73 // support for controlling access to these APIs.
74 const char kDisable3DAPIs[]                 = "disable-3d-apis";
75 
76 // Disable gpu-accelerated 2d canvas.
77 const char kDisableAccelerated2dCanvas[]    = "disable-accelerated-2d-canvas";
78 
79 // Disables accelerated compositing.
80 const char kDisableAcceleratedCompositing[] = "disable-accelerated-compositing";
81 
82 // Disables accelerated compositing for backgrounds of root layers with
83 // background-attachment: fixed.
84 const char kDisableAcceleratedFixedRootBackground[] =
85     "disable-accelerated-fixed-root-background";
86 
87 // Disables the hardware acceleration of 3D CSS and animation.
88 const char kDisableAcceleratedLayers[]      = "disable-accelerated-layers";
89 
90 // Disables accelerated compositing for overflow scroll.
91 const char kDisableAcceleratedOverflowScroll[] =
92     "disable-accelerated-overflow-scroll";
93 
94 // Disables layer squashing.
95 const char kDisableLayerSquashing[] =
96     "disable-layer-squashing";
97 
98 // Disable accelerated compositing for scrollable frames.
99 const char kDisableAcceleratedScrollableFrames[] =
100      "disable-accelerated-scrollable-frames";
101 
102 // Disables the hardware acceleration of plugins.
103 const char kDisableAcceleratedPlugins[]     = "disable-accelerated-plugins";
104 
105 // Disables GPU accelerated video display.
106 const char kDisableAcceleratedVideo[]       = "disable-accelerated-video";
107 
108 // Disables hardware acceleration of video decode, where available.
109 const char kDisableAcceleratedVideoDecode[] =
110     "disable-accelerated-video-decode";
111 
112 // Disables the alternate window station for the renderer.
113 const char kDisableAltWinstation[]          = "disable-winsta";
114 
115 // Disable the ApplicationCache.
116 const char kDisableApplicationCache[]       = "disable-application-cache";
117 //
118 // TODO(scherkus): remove --disable-audio when we have a proper fallback
119 // mechanism.
120 const char kDisableAudio[]                  = "disable-audio";
121 
122 // Disable limits on the number of backing stores. Can prevent blinking for
123 // users with many windows/tabs and lots of memory.
124 const char kDisableBackingStoreLimit[]      = "disable-backing-store-limit";
125 
126 // Disable browser plugin compositing experiment.
127 const char kDisableBrowserPluginCompositing[] =
128     "disable-browser-plugin-compositing";
129 
130 // Disable accelerated scrolling by the compositor for frames.
131 const char kDisableCompositedScrollingForFrames[] =
132      "disable-composited-scrolling-for-frames";
133 
134 // See comment for kEnableCompositingForFixedPosition.
135 const char kDisableCompositingForFixedPosition[] =
136      "disable-fixed-position-compositing";
137 
138 // See comment for kEnableCompositingForTransition.
139 const char kDisableCompositingForTransition[] =
140      "disable-transition-compositing";
141 
142 // Disables HTML5 DB support.
143 const char kDisableDatabases[]              = "disable-databases";
144 
145 // Disables the deadline scheduler.
146 const char kDisableDeadlineScheduling[]     = "disable-deadline-scheduling";
147 
148 // Disables delegated renderer.
149 const char kDisableDelegatedRenderer[]      = "disable-delegated-renderer";
150 
151 // Disables desktop notifications (default enabled on windows).
152 const char kDisableDesktopNotifications[]   = "disable-desktop-notifications";
153 
154 // Disables experimental navigator content utils implementation.
155 const char kDisableNavigatorContentUtils[]  =
156       "disable-navigator-content-utils";
157 
158 // Disable device motion events.
159 const char kDisableDeviceMotion[]           = "disable-device-motion";
160 
161 // Disable device orientation events.
162 const char kDisableDeviceOrientation[]      = "disable-device-orientation";
163 
164 // Handles URL requests by NPAPI plugins through the renderer.
165 const char kDisableDirectNPAPIRequests[]    = "disable-direct-npapi-requests";
166 
167 // Disable the per-domain blocking for 3D APIs after GPU reset.
168 // This switch is intended only for tests.
169 extern const char kDisableDomainBlockingFor3DAPIs[] =
170     "disable-domain-blocking-for-3d-apis";
171 
172 // Disable experimental WebGL support.
173 const char kDisableExperimentalWebGL[]      = "disable-webgl";
174 
175 // Disable FileSystem API.
176 const char kDisableFileSystem[]             = "disable-file-system";
177 
178 // Disables sending filters (SkImageFilter objects) between processes over IPC
179 const char kDisableFiltersOverIPC[]         = "disable-filters-over-ipc";
180 
181 const char kDisableFixedPositionCreatesStackingContext[]
182     = "disable-fixed-position-creates-stacking-context";
183 
184 // Disable 3D inside of flapper.
185 const char kDisableFlash3d[]                = "disable-flash-3d";
186 
187 // Disable Stage3D inside of flapper.
188 const char kDisableFlashStage3d[]           = "disable-flash-stage3d";
189 
190 // This flag disables force compositing mode and prevents it from being enabled
191 // via field trials.
192 const char kDisableForceCompositingMode[]   = "disable-force-compositing-mode";
193 
194 // Disable the JavaScript Full Screen API.
195 const char kDisableFullScreen[]             = "disable-fullscreen";
196 
197 // Suppresses support for the Geolocation javascript API.
198 const char kDisableGeolocation[]            = "disable-geolocation";
199 
200 // Disable deferral of scroll-ending gesture events when a scroll is active.
201 const char kDisableGestureDebounce[]        = "disable-gesture-debounce";
202 
203 const char kDisableGestureTapHighlight[]    = "disable-gesture-tap-highlight";
204 
205 // Disable GL multisampling.
206 const char kDisableGLMultisampling[]        = "disable-gl-multisampling";
207 
208 // Disables GPU hardware acceleration.  If software renderer is not in place,
209 // then the GPU process won't launch.
210 const char kDisableGpu[]                    = "disable-gpu";
211 
212 // Prevent the compositor from using its GPU implementation.
213 const char kDisableGpuCompositing[]         = "disable-gpu-compositing";
214 
215 // Disable the limit on the number of times the GPU process may be restarted
216 // This switch is intended only for tests.
217 extern const char kDisableGpuProcessCrashLimit[] =
218     "disable-gpu-process-crash-limit";
219 
220 // Do not launch the GPU process shortly after browser process launch. Instead
221 // launch it when it is first needed.
222 const char kDisableGpuProcessPrelaunch[]    = "disable-gpu-process-prelaunch";
223 
224 // Disable the GPU process sandbox.
225 const char kDisableGpuSandbox[]             = "disable-gpu-sandbox";
226 
227 // Disable the thread that crashes the GPU process if it stops responding to
228 // messages.
229 const char kDisableGpuWatchdog[]            = "disable-gpu-watchdog";
230 
231 // Suppresses hang monitor dialogs in renderer processes.  This may allow slow
232 // unload handlers on a page to prevent the tab from closing, but the Task
233 // Manager can be used to terminate the offending process in this case.
234 const char kDisableHangMonitor[]            = "disable-hang-monitor";
235 
236 // Disable the RenderThread's HistogramCustomizer.
237 const char kDisableHistogramCustomizer[]    = "disable-histogram-customizer";
238 
239 // Disable the use of an ImageTransportSurface. This means the GPU process
240 // will present the rendered page rather than the browser process.
241 const char kDisableImageTransportSurface[]  = "disable-image-transport-surface";
242 
243 // Prevent Java from running.
244 const char kDisableJava[]                   = "disable-java";
245 
246 // Don't execute JavaScript (browser JS like the new tab page still runs).
247 const char kDisableJavaScript[]             = "disable-javascript";
248 
249 // Don't kill a child process when it sends a bad IPC message.  Apart
250 // from testing, it is a bad idea from a security perspective to enable
251 // this switch.
252 const char kDisableKillAfterBadIPC[]        = "disable-kill-after-bad-ipc";
253 
254 // Disables prefixed Encrypted Media API (e.g. webkitGenerateKeyRequest()).
255 const char kDisablePrefixedEncryptedMedia[] =
256     "disable-prefixed-encrypted-media";
257 
258 // Disable LocalStorage.
259 const char kDisableLocalStorage[]           = "disable-local-storage";
260 
261 // Force logging to be disabled.  Logging is enabled by default in debug
262 // builds.
263 const char kDisableLogging[]                = "disable-logging";
264 
265 // Allows P2P sockets to talk UDP to other servers without using STUN first.
266 // For development only, use with caution.
267 // TODO(hubbe): Remove this flag.
268 const char kDisableP2PSocketSTUNFilter[]    = "disable-p2psocket-stun-filter";
269 
270 // Disable Pepper3D.
271 const char kDisablePepper3d[]               = "disable-pepper-3d";
272 
273 // Disables compositor-accelerated touch-screen pinch gestures.
274 const char kDisablePinch[]                  = "disable-pinch";
275 
276 // Prevent plugins from running.
277 const char kDisablePlugins[]                = "disable-plugins";
278 
279 // Disable discovering third-party plug-ins. Effectively loading only
280 // ones shipped with the browser plus third-party ones as specified by
281 // --extra-plugin-dir and --load-plugin switches.
282 const char kDisablePluginsDiscovery[]       = "disable-plugins-discovery";
283 
284 // Disables remote web font support. SVG font should always work whether this
285 // option is specified or not.
286 const char kDisableRemoteFonts[]            = "disable-remote-fonts";
287 
288 // Turns off the accessibility in the renderer.
289 const char kDisableRendererAccessibility[]  = "disable-renderer-accessibility";
290 
291 // Disable the seccomp filter sandbox (seccomp-bpf) (Linux only).
292 const char kDisableSeccompFilterSandbox[]   = "disable-seccomp-filter-sandbox";
293 
294 // Disable session storage.
295 const char kDisableSessionStorage[]         = "disable-session-storage";
296 
297 // Disable the setuid sandbox (Linux only).
298 const char kDisableSetuidSandbox[]          = "disable-setuid-sandbox";
299 
300 // Enable shared workers. Functionality not yet complete.
301 const char kDisableSharedWorkers[]          = "disable-shared-workers";
302 
303 // Disables site-specific tailoring to compatibility issues in WebKit.
304 const char kDisableSiteSpecificQuirks[]     = "disable-site-specific-quirks";
305 
306 // Disable smooth scrolling for testing.
307 const char kDisableSmoothScrolling[]        = "disable-smooth-scrolling";
308 
309 // Disables the use of a 3D software rasterizer.
310 const char kDisableSoftwareRasterizer[]     = "disable-software-rasterizer";
311 
312 // Disables speech input.
313 const char kDisableSpeechInput[]            = "disable-speech-input";
314 
315 // Disable False Start in SSL and TLS connections.
316 const char kDisableSSLFalseStart[]          = "disable-ssl-false-start";
317 
318 // Disable multithreaded GPU compositing of web content.
319 const char kDisableThreadedCompositing[]     = "disable-threaded-compositing";
320 
321 // Disables the threaded HTML parser in Blink
322 const char kDisableThreadedHTMLParser[]     = "disable-threaded-html-parser";
323 
324 // Disable accelerated overflow scrolling in corner cases (that would not be
325 // handled by enable-accelerated-overflow-scroll).
326 const char kDisableUniversalAcceleratedOverflowScroll[] =
327     "disable-universal-accelerated-overflow-scroll";
328 
329 // Disables unprefixed Media Source API (i.e., the MediaSource object).
330 const char kDisableUnprefixedMediaSource[]  = "disable-unprefixed-media-source";
331 
332 // Disable CSS Transitions / Animations on the Web Animations model.
333 const char kDisableWebAnimationsCSS[]        = "disable-web-animations-css";
334 
335 // Disables prefixed Media Source API (i.e., the WebKitMediaSource object).
336 const char kDisableWebKitMediaSource[]      = "disable-webkit-media-source";
337 
338 // Don't enforce the same-origin policy. (Used by people testing their sites.)
339 const char kDisableWebSecurity[]            = "disable-web-security";
340 
341 // Disables support for XSLT.
342 const char kDisableXSLT[]                   = "disable-xslt";
343 
344 // Disables Blink's XSSAuditor. The XSSAuditor mitigates reflective XSS.
345 const char kDisableXSSAuditor[]             = "disable-xss-auditor";
346 
347 // Specifies if the |DOMAutomationController| needs to be bound in the
348 // renderer. This binding happens on per-frame basis and hence can potentially
349 // be a performance bottleneck. One should only enable it when automating dom
350 // based tests.
351 const char kDomAutomationController[]       = "dom-automation";
352 
353 // Enable gpu-accelerated SVG/W3C filters.
354 const char kEnableAcceleratedFilters[]      = "enable-accelerated-filters";
355 
356 // Enables accelerated compositing for backgrounds of root layers with
357 // background-attachment: fixed. Requires kForceCompositingMode.
358 const char kEnableAcceleratedFixedRootBackground[] =
359     "enable-accelerated-fixed-root-background";
360 
361 // Enables accelerated compositing for overflow scroll. Promotes eligible
362 // overflow:scroll elements to layers to enable accelerated scrolling for them.
363 const char kEnableAcceleratedOverflowScroll[] =
364     "enable-accelerated-overflow-scroll";
365 
366 // Enables experimental feature that maps multiple RenderLayers to
367 // one composited layer to avoid pathological layer counts.
368 const char kEnableLayerSquashing[] =
369     "enable-layer-squashing";
370 
371 // Enables accelerated compositing for scrollable frames for accelerated
372 // scrolling for them. Requires kForceCompositingMode.
373 const char kEnableAcceleratedScrollableFrames[] =
374      "enable-accelerated-scrollable-frames";
375 
376 // Turns on extremely verbose logging of accessibility events.
377 const char kEnableAccessibilityLogging[]    = "enable-accessibility-logging";
378 
379 // Use a BeginImplFrame signal from browser to renderer to schedule rendering.
380 const char kEnableBeginFrameScheduling[]    = "enable-begin-frame-scheduling";
381 
382 // Enables browser plugin for all types of pages.
383 const char kEnableBrowserPluginForAllViewTypes[] =
384     "enable-browser-plugin-for-all-view-types";
385 
386 // Enables Drag and Drop into and out of Browser Plugin.
387 // kEnableBrowserPluginGuestViews must also be set at this time.
388 const char kEnableBrowserPluginDragDrop[]   = "enable-browser-plugin-drag-drop";
389 
390 // Enables accelerated scrolling by the compositor for frames. Requires
391 // kForceCompositingMode and kEnableAcceleratedScrollableFrames.
392 const char kEnableCompositedScrollingForFrames[] =
393      "enable-composited-scrolling-for-frames";
394 
395 // Enable the creation of compositing layers for fixed position
396 // elements. Three options are needed to support four possible scenarios:
397 //  1. Default (disabled)
398 //  2. Enabled always (to allow dogfooding)
399 //  3. Disabled always (to give safety fallback for users)
400 //  4. Enabled only if we detect a highDPI display
401 //
402 // Option #4 may soon be the default, because the feature is needed soon for
403 // high DPI, but cannot be used (yet) for low DPI. Options #2 and #3 will
404 // override Option #4.
405 const char kEnableCompositingForFixedPosition[] =
406      "enable-fixed-position-compositing";
407 
408 // Enable/Disable the creation of compositing layers for RenderLayers with a
409 // transition on a property that supports accelerated animation (that is,
410 // opacity, -webkit-transform, and -webkit-filter), even when no animation is
411 // running. These options allow for three possible scenarios:
412 //  1. Default (enabled only if we dectect a highDPI display)
413 //  2. Enabled always.
414 //  3. Disabled always.
415 const char kEnableCompositingForTransition[] =
416      "enable-transition-compositing";
417 
418 // Defer image decoding in WebKit until painting.
419 const char kEnableDeferredImageDecoding[]   = "enable-deferred-image-decoding";
420 
421 // Enables the deadline scheduler.
422 const char kEnableDeadlineScheduling[]      = "enable-deadline-scheduling";
423 
424 // Enables delegated renderer.
425 const char kEnableDelegatedRenderer[]       = "enable-delegated-renderer";
426 
427 // Enables restarting interrupted downloads.
428 const char kEnableDownloadResumption[]      = "enable-download-resumption";
429 
430 // Enables support for Encrypted Media Extensions (e.g. MediaKeys).
431 const char kEnableEncryptedMedia[] = "enable-encrypted-media";
432 
433 // Enable experimental canvas features, e.g. canvas 2D context attributes
434 const char kEnableExperimentalCanvasFeatures[] =
435     "enable-experimental-canvas-features";
436 
437 // Enables Web Platform features that are in development.
438 const char kEnableExperimentalWebPlatformFeatures[] =
439     "enable-experimental-web-platform-features";
440 
441 // Enable an experimental WebSocket implementation.
442 const char kEnableExperimentalWebSocket[]   = "enable-experimental-websocket";
443 
444 // Enable the fast text autosizing implementation.
445 const char kEnableFastTextAutosizing[]      = "enable-fast-text-autosizing";
446 
447 const char kEnableFixedPositionCreatesStackingContext[]
448     = "enable-fixed-position-creates-stacking-context";
449 
450 // Enable Gesture Tap Highlight
451 const char kEnableGestureTapHighlight[]     = "enable-gesture-tap-highlight";
452 
453 // Enables the GPU benchmarking extension
454 const char kEnableGpuBenchmarking[]         = "enable-gpu-benchmarking";
455 
456 // Enables TRACE for GL calls in the renderer.
457 const char kEnableGpuClientTracing[]        = "enable-gpu-client-tracing";
458 
459 // See comment for kEnableCompositingForFixedPosition.
460 const char kEnableHighDpiCompositingForFixedPosition[] =
461      "enable-high-dpi-fixed-position-compositing";
462 
463 #if defined(OS_WIN)
464 // Enables the DirectWrite font rendering system on windows.
465 const char kEnableDirectWrite[]             = "enable-direct-write";
466 
467 // Use high resolution timers for TimeTicks.
468 const char kEnableHighResolutionTime[]      = "enable-high-resolution-time";
469 #endif
470 
471 // Enable HTML Imports
472 extern const char kEnableHTMLImports[]      = "enable-html-imports";
473 
474 // Enables support for inband text tracks in media content.
475 const char kEnableInbandTextTracks[]        = "enable-inband-text-tracks";
476 
477 // Enable inputmode attribute of HTML input or text element.
478 extern const char kEnableInputModeAttribute[] = "enable-input-mode-attribute";
479 
480 // Force logging to be enabled.  Logging is disabled by default in release
481 // builds.
482 const char kEnableLogging[]                 = "enable-logging";
483 
484 // Enables the memory benchmarking extension
485 const char kEnableMemoryBenchmarking[]      = "enable-memory-benchmarking";
486 
487 // On Windows, converts the page to the currently-installed monitor profile.
488 // This does NOT enable color management for images. The source is still
489 // assumed to be sRGB.
490 const char kEnableMonitorProfile[]          = "enable-monitor-profile";
491 
492 // Enables use of cache if offline, even if it's stale
493 const char kEnableOfflineCacheAccess[]      = "enable-offline-cache-access";
494 
495 // Enables use of hardware overlay for fullscreen video playback. Android only.
496 const char kEnableOverlayFullscreenVideo[]  = "enable-overlay-fullscreen-video";
497 
498 // Enables overlay scrollbars on Aura or Linux. Does nothing on Mac.
499 const char kEnableOverlayScrollbars[]       = "enable-overlay-scrollbars";
500 
501 // Forward overscroll event data from the renderer to the browser.
502 const char kEnableOverscrollNotifications[] = "enable-overscroll-notifications";
503 
504 // Enables compositor-accelerated touch-screen pinch gestures.
505 const char kEnablePinch[]                   = "enable-pinch";
506 
507 // Enable caching of pre-parsed JS script data.  See http://crbug.com/32407.
508 const char kEnablePreparsedJsCaching[]      = "enable-preparsed-js-caching";
509 
510 // Enable privileged WebGL extensions; without this switch such extensions are
511 // available only to Chrome extensions.
512 const char kEnablePrivilegedWebGLExtensions[] =
513     "enable-privileged-webgl-extensions";
514 
515 // Aggressively free GPU command buffers belonging to hidden tabs.
516 const char kEnablePruneGpuCommandBuffers[] =
517     "enable-prune-gpu-command-buffers";
518 
519 // Enables the CSS multicol implementation that uses the regions implementation.
520 const char kEnableRegionBasedColumns[] =
521     "enable-region-based-columns";
522 
523 // Enables the new layout/paint system which paints after layout is complete.
524 const char kEnableRepaintAfterLayout[] =
525     "enable-repaint-after-layout";
526 
527 // Cause the OS X sandbox write to syslog every time an access to a resource
528 // is denied by the sandbox.
529 const char kEnableSandboxLogging[]          = "enable-sandbox-logging";
530 
531 // Enables the Skia benchmarking extension
532 const char kEnableSkiaBenchmarking[]        = "enable-skia-benchmarking";
533 
534 // On platforms that support it, enables smooth scroll animation.
535 const char kEnableSmoothScrolling[]         = "enable-smooth-scrolling";
536 
537 // Allow the compositor to use its software implementation if GL fails.
538 const char kEnableSoftwareCompositing[]     = "enable-software-compositing";
539 
540 // Enable spatial navigation
541 const char kEnableSpatialNavigation[]       = "enable-spatial-navigation";
542 
543 // Enables the synthesis part of the Web Speech API.
544 const char kEnableSpeechSynthesis[]         = "enable-speech-synthesis";
545 
546 // Enables TLS cached info extension.
547 const char kEnableSSLCachedInfo[]           = "enable-ssl-cached-info";
548 
549 // Enables StatsTable, logging statistics to a global named shared memory table.
550 const char kEnableStatsTable[]              = "enable-stats-table";
551 
552 // Experimentally ensures that each renderer process:
553 // 1) Only handles rendering for pages from a single site, apart from iframes.
554 // (Note that a page can reference content from multiple origins due to images,
555 // JavaScript files, etc.  Cross-site iframes are also loaded in-process.)
556 // 2) Only has authority to see or use cookies for the page's top-level origin.
557 // (So if a.com iframes b.com, the b.com network request will be sent without
558 // cookies.)
559 // This is expected to break compatibility with many pages for now.  Unlike the
560 // --site-per-process flag, this allows cross-site iframes, but it blocks all
561 // cookies on cross-site requests.
562 const char kEnableStrictSiteIsolation[]     = "enable-strict-site-isolation";
563 
564 // Enable support for ServiceWorker. See
565 // https://github.com/slightlyoff/ServiceWorker for more information.
566 const char kEnableServiceWorker[]           = "enable-service-worker";
567 
568 // Enable use of experimental TCP sockets API for sending data in the
569 // SYN packet.
570 const char kEnableTcpFastOpen[]             = "enable-tcp-fastopen";
571 
572 // Enable Text Service Framework(TSF) for text inputting instead of IMM32. This
573 // flag is ignored on Metro environment.
574 const char kEnableTextServicesFramework[]   = "enable-text-services-framework";
575 
576 // Enable multithreaded GPU compositing of web content.
577 const char kEnableThreadedCompositing[]     = "enable-threaded-compositing";
578 
579 // Enable accelerated overflow scrolling in all cases.
580 const char kEnableUniversalAcceleratedOverflowScroll[] =
581     "enable-universal-accelerated-overflow-scroll";
582 
583 // Enable screen capturing support for MediaStream API.
584 const char kEnableUserMediaScreenCapturing[] =
585     "enable-usermedia-screen-capturing";
586 
587 // Enables the use of the @viewport CSS rule, which allows
588 // pages to control aspects of their own layout. This also turns on touch-screen
589 // pinch gestures.
590 const char kEnableViewport[]                = "enable-viewport";
591 
592 // Enables the use of the legacy viewport meta tag. Turning this on also
593 // turns on the @viewport CSS rule
594 const char kEnableViewportMeta[]            = "enable-viewport-meta";
595 
596 // Resizes of the main frame are the caused by changing between landscape
597 // and portrait mode (i.e. Android) so the page should be rescaled to fit
598 const char kMainFrameResizesAreOrientationChanges[] =
599     "main-frame-resizes-are-orientation-changes";
600 
601 // Enables moving cursor by word in visual order.
602 const char kEnableVisualWordMovement[]      = "enable-visual-word-movement";
603 
604 // Enable the Vtune profiler support.
605 const char kEnableVtune[]                   = "enable-vtune-support";
606 
607 // Enable CSS Transitions / Animations on the Web Animations model.
608 const char kEnableWebAnimationsCSS[]        = "enable-web-animations-css";
609 
610 // Enable SVG Animations on the Web Animations model.
611 const char kEnableWebAnimationsSVG[]        = "enable-web-animations-svg";
612 
613 // Enables WebGL extensions not yet approved by the community.
614 const char kEnableWebGLDraftExtensions[] = "enable-webgl-draft-extensions";
615 
616 // Enables Web MIDI API.
617 const char kEnableWebMIDI[]                 = "enable-web-midi";
618 
619 // Load NPAPI plugins from the specified directory.
620 const char kExtraPluginDir[]                = "extra-plugin-dir";
621 
622 // If accelerated compositing is supported, always enter compositing mode for
623 // the base layer even when compositing is not strictly required.
624 const char kForceCompositingMode[]          = "force-compositing-mode";
625 
626 // Some field trials may be randomized in the browser, and the randomly selected
627 // outcome needs to be propagated to the renderer. For instance, this is used
628 // to modify histograms recorded in the renderer, or to get the renderer to
629 // also set of its state (initialize, or not initialize components) to match the
630 // experiment(s). The option is also useful for forcing field trials when
631 // testing changes locally. The argument is a list of name and value pairs,
632 // separated by slashes. See FieldTrialList::CreateTrialsFromString() in
633 // field_trial.h for details.
634 const char kForceFieldTrials[]              = "force-fieldtrials";
635 
636 // Force renderer accessibility to be on instead of enabling it on demand when
637 // a screen reader is detected. The disable-renderer-accessibility switch
638 // overrides this if present.
639 const char kForceRendererAccessibility[]    = "force-renderer-accessibility";
640 
641 // Passes gpu device_id from browser process to GPU process.
642 const char kGpuDeviceID[]                   = "gpu-device-id";
643 
644 // Passes gpu driver_vendor from browser process to GPU process.
645 const char kGpuDriverVendor[]               = "gpu-driver-vendor";
646 
647 // Passes gpu driver_version from browser process to GPU process.
648 const char kGpuDriverVersion[]              = "gpu-driver-version";
649 
650 // Extra command line options for launching the GPU process (normally used
651 // for debugging). Use like renderer-cmd-prefix.
652 const char kGpuLauncher[]                   = "gpu-launcher";
653 
654 // Makes this process a GPU sub-process.
655 const char kGpuProcess[]                    = "gpu-process";
656 
657 // Allow shmat system call in GPU sandbox.
658 const char kGpuSandboxAllowSysVShm[]        = "gpu-sandbox-allow-sysv-shm";
659 
660 // Causes the GPU process to display a dialog on launch.
661 const char kGpuStartupDialog[]              = "gpu-startup-dialog";
662 
663 // Passes gpu vendor_id from browser process to GPU process.
664 const char kGpuVendorID[]                   = "gpu-vendor-id";
665 
666 // These mappings only apply to the host resolver.
667 const char kHostResolverRules[]             = "host-resolver-rules";
668 
669 // Ignores certificate-related errors.
670 const char kIgnoreCertificateErrors[]       = "ignore-certificate-errors";
671 
672 // Ignores GPU blacklist.
673 const char kIgnoreGpuBlacklist[]            = "ignore-gpu-blacklist";
674 
675 // Run the GPU process as a thread in the browser process.
676 const char kInProcessGPU[]                  = "in-process-gpu";
677 
678 // Runs plugins inside the renderer process
679 const char kInProcessPlugins[]              = "in-process-plugins";
680 
681 // Specifies the flags passed to JS engine
682 const char kJavaScriptFlags[]               = "js-flags";
683 
684 // Load an NPAPI plugin from the specified path.
685 const char kLoadPlugin[]                    = "load-plugin";
686 
687 // Logs GPU control list decisions when enforcing blacklist rules.
688 const char kLogGpuControlListDecisions[]    = "log-gpu-control-list-decisions";
689 
690 // Sets the minimum log level. Valid values are from 0 to 3:
691 // INFO = 0, WARNING = 1, LOG_ERROR = 2, LOG_FATAL = 3.
692 const char kLoggingLevel[]                  = "log-level";
693 
694 // Enables displaying net log events on the command line, or writing the events
695 // to a separate file if a file name is given.
696 const char kLogNetLog[]                     = "log-net-log";
697 
698 // Make plugin processes log their sent and received messages to VLOG(1).
699 const char kLogPluginMessages[]             = "log-plugin-messages";
700 
701 // Sets the width and height above which a composited layer will get tiled.
702 const char kMaxUntiledLayerHeight[]         = "max-untiled-layer-height";
703 const char kMaxUntiledLayerWidth[]          = "max-untiled-layer-width";
704 
705 // Sample memory usage with high frequency and store the results to the
706 // Renderer.Memory histogram. Used in memory tests.
707 const char kMemoryMetrics[]                 = "memory-metrics";
708 
709 // Mutes audio sent to the audio device so it is not audible during
710 // automated testing.
711 const char kMuteAudio[]                     = "mute-audio";
712 
713 // Don't send HTTP-Referer headers.
714 const char kNoReferrers[]                   = "no-referrers";
715 
716 // Disables the sandbox for all process types that are normally sandboxed.
717 const char kNoSandbox[]                     = "no-sandbox";
718 
719 // Enables or disables history navigation in response to horizontal overscroll.
720 // Set the value to '1' to enable the feature, and set to '0' to disable.
721 // Defaults to enabled.
722 const char kOverscrollHistoryNavigation[] =
723     "overscroll-history-navigation";
724 
725 // Specifies a command that should be used to launch the plugin process.  Useful
726 // for running the plugin process through purify or quantify.  Ex:
727 //   --plugin-launcher="path\to\purify /Run=yes"
728 const char kPluginLauncher[]                = "plugin-launcher";
729 
730 // Tells the plugin process the path of the plugin to load
731 const char kPluginPath[]                    = "plugin-path";
732 
733 // Causes the process to run as a plugin subprocess.
734 const char kPluginProcess[]                 = "plugin";
735 
736 // Causes the plugin process to display a dialog on launch.
737 const char kPluginStartupDialog[]           = "plugin-startup-dialog";
738 
739 // Argument to the process type that indicates a PPAPI broker process type.
740 const char kPpapiBrokerProcess[]            = "ppapi-broker";
741 
742 // "Command-line" arguments for the PPAPI Flash; used for debugging options.
743 const char kPpapiFlashArgs[]                = "ppapi-flash-args";
744 
745 // Runs PPAPI (Pepper) plugins in-process.
746 const char kPpapiInProcess[]                = "ppapi-in-process";
747 
748 // Like kPluginLauncher for PPAPI plugins.
749 const char kPpapiPluginLauncher[]           = "ppapi-plugin-launcher";
750 
751 // Argument to the process type that indicates a PPAPI plugin process type.
752 const char kPpapiPluginProcess[]            = "ppapi";
753 
754 // Causes the PPAPI sub process to display a dialog on launch. Be sure to use
755 // --no-sandbox as well or the sandbox won't allow the dialog to display.
756 const char kPpapiStartupDialog[]            = "ppapi-startup-dialog";
757 
758 // Runs a single process for each site (i.e., group of pages from the same
759 // registered domain) the user visits.  We default to using a renderer process
760 // for each site instance (i.e., group of pages from the same registered
761 // domain with script connections to each other).
762 const char kProcessPerSite[]                = "process-per-site";
763 
764 // Runs each set of script-connected tabs (i.e., a BrowsingInstance) in its own
765 // renderer process.  We default to using a renderer process for each
766 // site instance (i.e., group of pages from the same registered domain with
767 // script connections to each other).
768 const char kProcessPerTab[]                 = "process-per-tab";
769 
770 // The value of this switch determines whether the process is started as a
771 // renderer or plugin host.  If it's empty, it's the browser.
772 const char kProcessType[]                   = "type";
773 
774 // Reduces the GPU process sandbox to be less strict.
775 const char kReduceGpuSandbox[]              = "reduce-gpu-sandbox";
776 
777 // Enables more web features over insecure connections. Designed to be used
778 // for testing purposes only.
779 const char kReduceSecurityForTesting[]      = "reduce-security-for-testing";
780 
781 // Register Pepper plugins (see pepper_plugin_list.cc for its format).
782 const char kRegisterPepperPlugins[]         = "register-pepper-plugins";
783 
784 // Enables remote debug over HTTP on the specified port.
785 const char kRemoteDebuggingPort[]           = "remote-debugging-port";
786 
787 // Causes the renderer process to throw an assertion on launch.
788 const char kRendererAssertTest[]            = "renderer-assert-test";
789 
790 // On POSIX only: the contents of this flag are prepended to the renderer
791 // command line. Useful values might be "valgrind" or "xterm -e gdb --args".
792 const char kRendererCmdPrefix[]             = "renderer-cmd-prefix";
793 
794 // Causes the process to run as renderer instead of as browser.
795 const char kRendererProcess[]               = "renderer";
796 
797 // Overrides the default/calculated limit to the number of renderer processes.
798 // Very high values for this setting can lead to high memory/resource usage
799 // or instability.
800 const char kRendererProcessLimit[]          = "renderer-process-limit";
801 
802 // Causes the renderer process to display a dialog on launch.
803 const char kRendererStartupDialog[]         = "renderer-startup-dialog";
804 
805 // Causes the process to run as a sandbox IPC subprocess.
806 const char kSandboxIPCProcess[]             = "sandbox-ipc";
807 
808 // Enables or disables scroll end effect in response to vertical overscroll.
809 // Set the value to '1' to enable the feature, and set to '0' to disable.
810 // Defaults to disabled.
811 const char kScrollEndEffect[] = "scroll-end-effect";
812 
813 // Visibly render a border around paint rects in the web page to help debug
814 // and study painting behavior.
815 const char kShowPaintRects[]                = "show-paint-rects";
816 
817 // Map mouse input events into touch gesture events.  Useful for debugging touch
818 // gestures without needing a touchscreen.
819 const char kSimulateTouchScreenWithMouse[]  =
820     "simulate-touch-screen-with-mouse";
821 
822 // Runs the renderer and plugins in the same process as the browser
823 const char kSingleProcess[]                 = "single-process";
824 
825 // Experimentally enforces a one-site-per-process security policy.
826 // All cross-site navigations force process swaps, and we can restrict a
827 // renderer process's access rights based on its site.  For details, see:
828 // http://www.chromium.org/developers/design-documents/site-isolation
829 //
830 // Unlike --enable-strict-site-isolation (which allows cross-site iframes),
831 // this flag does not affect which cookies are attached to cross-site requests.
832 // Support is being added to render cross-site iframes in a different process
833 // than their parent pages.
834 const char kSitePerProcess[]                = "site-per-process";
835 
836 // Skip gpu info collection, blacklist loading, and blacklist auto-update
837 // scheduling at browser startup time.
838 // Therefore, all GPU features are available, and about:gpu page shows empty
839 // content. The switch is intended only for layout tests.
840 // TODO(gab): Get rid of this switch entirely.
841 const char kSkipGpuDataLoading[]            = "skip-gpu-data-loading";
842 
843 // Specifies the request key for the continuous speech recognition webservice.
844 const char kSpeechRecognitionWebserviceKey[] = "speech-service-key";
845 
846 // Specifies if the |StatsCollectionController| needs to be bound in the
847 // renderer. This binding happens on per-frame basis and hence can potentially
848 // be a performance bottleneck. One should only enable it when running a test
849 // that needs to access the provided statistics.
850 const char kStatsCollectionController[] =
851     "enable-stats-collection-bindings";
852 
853 // Upscale defaults to "good".
854 const char kTabCaptureDownscaleQuality[]    = "tab-capture-downscale-quality";
855 
856 // Scaling quality for capturing tab. Should be one of "fast", "good" or "best".
857 // One flag for upscaling, one for downscaling.
858 // Upscale defaults to "best".
859 const char kTabCaptureUpscaleQuality[]      = "tab-capture-upscale-quality";
860 
861 // Allows for forcing socket connections to http/https to use fixed ports.
862 const char kTestingFixedHttpPort[]          = "testing-fixed-http-port";
863 const char kTestingFixedHttpsPort[]         = "testing-fixed-https-port";
864 
865 // Runs the security test for the renderer sandbox.
866 const char kTestSandbox[]                   = "test-sandbox";
867 
868 // Enable timeout-based touch event cancellation if a touch ack is delayed.
869 // If unspecified, touch timeout behavior will be disabled.
870 const char kTouchAckTimeoutDelayMs[]        = "touch-ack-timeout-delay-ms";
871 
872 // Causes TRACE_EVENT flags to be recorded beginning with shutdown. Optionally,
873 // can specify the specific trace categories to include (e.g.
874 // --trace-shutdown=base,net) otherwise, all events are recorded.
875 // --trace-shutdown-file can be used to control where the trace log gets stored
876 // to since there is otherwise no way to access the result.
877 const char kTraceShutdown[]                 = "trace-shutdown";
878 
879 // If supplied, sets the file which shutdown tracing will be stored into, if
880 // omitted the default will be used "chrometrace.log" in the current directory.
881 // Has no effect unless --trace-shutdown is also supplied.
882 // Example: --trace-shutdown --trace-shutdown-file=/tmp/trace_event.log
883 const char kTraceShutdownFile[]             = "trace-shutdown-file";
884 
885 // Causes TRACE_EVENT flags to be recorded from startup. Optionally, can
886 // specify the specific trace categories to include (e.g.
887 // --trace-startup=base,net) otherwise, all events are recorded. Setting this
888 // flag results in the first call to BeginTracing() to receive all trace events
889 // since startup. In Chrome, you may find --trace-startup-file and
890 // --trace-startup-duration to control the auto-saving of the trace (not
891 // supported in the base-only TraceLog component).
892 const char kTraceStartup[]                  = "trace-startup";
893 
894 // Sets the time in seconds until startup tracing ends. If omitted a default of
895 // 5 seconds is used. Has no effect without --trace-startup, or if
896 // --startup-trace-file=none was supplied.
897 const char kTraceStartupDuration[]          = "trace-startup-duration";
898 
899 // If supplied, sets the file which startup tracing will be stored into, if
900 // omitted the default will be used "chrometrace.log" in the current directory.
901 // Has no effect unless --trace-startup is also supplied.
902 // Example: --trace-startup --trace-startup-file=/tmp/trace_event.log
903 // As a special case, can be set to 'none' - this disables automatically saving
904 // the result to a file and the first manually recorded trace will then receive
905 // all events since startup.
906 const char kTraceStartupFile[]              = "trace-startup-file";
907 
908 
909 
910 // Prioritizes the UI's command stream in the GPU process
911 extern const char kUIPrioritizeInGpuProcess[] =
912     "ui-prioritize-in-gpu-process";
913 
914 // Use fake device for MediaStream to replace actual camera and microphone.
915 const char kUseFakeDeviceForMediaStream[] = "use-fake-device-for-media-stream";
916 
917 // Bypass the media stream infobar by selecting the default device for media
918 // streams (e.g. WebRTC). Works with --use-fake-device-for-media-stream.
919 const char kUseFakeUIForMediaStream[]     = "use-fake-ui-for-media-stream";
920 
921 // Use hardware gpu, if available, for tests.
922 const char kUseGpuInTests[]                 = "use-gpu-in-tests";
923 
924 // Set when Chromium should use a mobile user agent.
925 const char kUseMobileUserAgent[] = "use-mobile-user-agent";
926 
927 // A string used to override the default user agent with a custom one.
928 const char kUserAgent[]                     = "user-agent";
929 
930 // On POSIX only: the contents of this flag are prepended to the utility
931 // process command line. Useful values might be "valgrind" or "xterm -e gdb
932 // --args".
933 const char kUtilityCmdPrefix[]              = "utility-cmd-prefix";
934 
935 // Causes the process to run as a utility subprocess.
936 const char kUtilityProcess[]                = "utility";
937 
938 // The utility process is sandboxed, with access to one directory. This flag
939 // specifies the directory that can be accessed.
940 const char kUtilityProcessAllowedDir[]      = "utility-allowed-dir";
941 
942 // Allows MDns to access network in sandboxed process.
943 const char kUtilityProcessEnableMDns[]      = "utility-enable-mdns";
944 
945 // Will add kWaitForDebugger to every child processes. If a value is passed, it
946 // will be used as a filter to determine if the child process should have the
947 // kWaitForDebugger flag passed on or not.
948 const char kWaitForDebuggerChildren[]       = "wait-for-debugger-children";
949 
950 // Choose which logging channels in WebCore to activate.  See
951 // Logging.cpp in WebKit's WebCore for a list of available channels.
952 const char kWebCoreLogChannels[]            = "webcore-log-channels";
953 
954 // Overrides the amount of shared memory the webgl command buffer allocates
955 const char kWebGLCommandBufferSizeKb[]      = "webgl-command-buffer-size-kb";
956 
957 // Causes the process to run as a worker subprocess.
958 const char kWorkerProcess[]                 = "worker";
959 
960 // The prefix used when starting the zygote process. (i.e. 'gdb --args')
961 const char kZygoteCmdPrefix[]               = "zygote-cmd-prefix";
962 
963 // Causes the process to run as a renderer zygote.
964 const char kZygoteProcess[]                 = "zygote";
965 
966 #if defined(ENABLE_WEBRTC)
967 // Enables audio processing in a MediaStreamTrack. When this flag is on, AEC,
968 // NS and AGC will be done per MediaStreamTrack instead of in PeerConnection.
969 const char kEnableAudioTrackProcessing[]    = "enable-audio-track-processing";
970 
971 // Disables WebRTC device enumeration.
972 const char kDisableDeviceEnumeration[]      = "disable-device-enumeration";
973 
974 // Disables WebRTC DataChannels SCTP wire protocol support.
975 const char kDisableSCTPDataChannels[]       = "disable-sctp-data-channels";
976 
977 // Disables HW decode acceleration for WebRTC.
978 const char kDisableWebRtcHWDecoding[]       = "disable-webrtc-hw-decoding";
979 
980 // Disables encryption of RTP Media for WebRTC. When Chrome embeds Content, it
981 // ignores this switch on its stable and beta channels.
982 const char kDisableWebRtcEncryption[]      = "disable-webrtc-encryption";
983 
984 // Disables HW encode acceleration for WebRTC.
985 const char kDisableWebRtcHWEncoding[]       = "disable-webrtc-hw-encoding";
986 
987 // Enables WebRTC AEC recordings.
988 const char kEnableWebRtcAecRecordings[]     = "enable-webrtc-aec-recordings";
989 
990 // Enables WebRTC to open TCP server sockets.
991 const char kEnableWebRtcTcpServerSocket[]   = "enable-webrtc-tcp-server-socket";
992 
993 // Enables VP8 HW encode acceleration for WebRTC.
994 const char kEnableWebRtcHWVp8Encoding[]     = "enable-webrtc-hw-vp8-encoding";
995 #endif
996 
997 #if defined(OS_ANDROID)
998 // Disable user gesture requirement for the media element to enter fullscreen.
999 const char kDisableGestureRequirementForMediaFullscreen[] =
1000     "disable-gesture-requirement-for-media-fullscreen";
1001 
1002 // Disable user gesture requirement for media playback.
1003 const char kDisableGestureRequirementForMediaPlayback[] =
1004     "disable-gesture-requirement-for-media-playback";
1005 
1006 // Disable history logging for media elements.
1007 const char kDisableMediaHistoryLogging[]    = "disable-media-history";
1008 
1009 // Disable overscroll edge effects like those found in Android views.
1010 const char kDisableOverscrollEdgeEffect[]   = "disable-overscroll-edge-effect";
1011 
1012 // WebRTC is enabled by default on Android.
1013 const char kDisableWebRTC[]                 = "disable-webrtc";
1014 
1015 // Enable the recognition part of the Web Speech API.
1016 const char kEnableSpeechRecognition[]       = "enable-speech-recognition";
1017 
1018 // Don't display any scrollbars. This is useful for Android WebView where
1019 // the system manages the scrollbars instead.
1020 const char kHideScrollbars[]                = "hide-scrollbars";
1021 
1022 // The telephony region (ISO country code) to use in phone number detection.
1023 const char kNetworkCountryIso[] = "network-country-iso";
1024 
1025 // Enables remote debug over HTTP on the specified socket name.
1026 const char kRemoteDebuggingSocketName[]     = "remote-debugging-socket-name";
1027 #endif
1028 
1029 #if defined(OS_ANDROID) && defined(ARCH_CPU_X86)
1030 const char kEnableWebAudio[]                = "enable-webaudio";
1031 #else
1032 // Disable web audio API.
1033 const char kDisableWebAudio[]               = "disable-webaudio";
1034 #endif
1035 
1036 #if defined(OS_CHROMEOS)
1037 // Disables panel fitting (used for mirror mode).
1038 const char kDisablePanelFitting[]           = "disable-panel-fitting";
1039 #endif
1040 
1041 #if defined(OS_MACOSX) && !defined(OS_IOS)
1042 const char kDisableCarbonInterposing[]      = "disable-carbon-interposing";
1043 
1044 // Disables support for Core Animation plugins. This is triggered when
1045 // accelerated compositing is disabled. See http://crbug.com/122430 .
1046 const char kDisableCoreAnimationPlugins[] =
1047     "disable-core-animation-plugins";
1048 
1049 // Use core animation to draw the RenderWidgetHostView on Mac.
1050 const char kUseCoreAnimation[]              = "use-core-animation";
1051 #endif
1052 
1053 #if defined(OS_POSIX)
1054 // Causes the child processes to cleanly exit via calling exit().
1055 const char kChildCleanExit[]                = "child-clean-exit";
1056 #endif
1057 
1058 // Don't dump stuff here, follow the same order as the header.
1059 
1060 }  // namespace switches
1061