| // Copyright 2015 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "build/build_config.h" |
| #include "content/public/common/content_features.h" |
| |
| namespace features { |
| |
| // All features in alphabetical order. |
| |
| // Enables content-initiated, main frame navigations to data URLs. |
| // TODO(meacer): Remove when the deprecation is complete. |
| // https://www.chromestatus.com/feature/5669602927312896 |
| const base::Feature kAllowContentInitiatedDataUrlNavigations{ |
| "AllowContentInitiatedDataUrlNavigations", |
| base::FEATURE_DISABLED_BY_DEFAULT}; |
| |
| // Enables asm.js to WebAssembly V8 backend. |
| // http://asmjs.org/spec/latest/ |
| const base::Feature kAsmJsToWebAssembly{"AsmJsToWebAssembly", |
| base::FEATURE_DISABLED_BY_DEFAULT}; |
| |
| // Block subresource requests whose URLs contain embedded credentials (e.g. |
| // `https://user:pass@example.com/resource`). |
| const base::Feature kBlockCredentialedSubresources{ |
| "BlockCredentialedSubresources", base::FEATURE_ENABLED_BY_DEFAULT}; |
| |
| // Enables brotli "Accept-Encoding" advertising and "Content-Encoding" support. |
| // Brotli format specification: http://www.ietf.org/id/draft-alakuijala-brotli |
| const base::Feature kBrotliEncoding{"brotli-encoding", |
| base::FEATURE_ENABLED_BY_DEFAULT}; |
| |
| // Enables browser side navigation (aka PlzNavigate). http://crbug.com/368813 |
| const base::Feature kBrowserSideNavigation{"browser-side-navigation", |
| base::FEATURE_DISABLED_BY_DEFAULT}; |
| |
| // If Canvas2D Image Chromium is allowed, this feature controls whether it is |
| // enabled. |
| const base::Feature kCanvas2DImageChromium{"Canvas2DImageChromium", |
| base::FEATURE_ENABLED_BY_DEFAULT}; |
| |
| // Enables the compositing of fixed position content that is opaque and can |
| // preserve LCD text. |
| const base::Feature kCompositeOpaqueFixedPosition{ |
| "CompositeOpaqueFixedPosition", base::FEATURE_DISABLED_BY_DEFAULT}; |
| |
| // Enables the compositing of scrolling content that supports painting the |
| // background with the foreground, such that LCD text will still be enabled. |
| const base::Feature kCompositeOpaqueScrollers{"CompositeOpaqueScrollers", |
| base::FEATURE_ENABLED_BY_DEFAULT}; |
| |
| // Speculatively pre-evaluate Javascript which will likely use document.write to |
| // load an external script. The feature extracts the written markup and sends it |
| // to the preload scanner. |
| const base::Feature kDocumentWriteEvaluator{"DocumentWriteEvaluator", |
| base::FEATURE_DISABLED_BY_DEFAULT}; |
| |
| // Throttle tasks in Blink background timer queues based on CPU budgets |
| // for the background tab. Bug: https://crbug.com/639852. |
| const base::Feature kExpensiveBackgroundTimerThrottling{ |
| "ExpensiveBackgroundTimerThrottling", base::FEATURE_DISABLED_BY_DEFAULT}; |
| |
| // Enables the Feature Policy framework for granting and removing access to |
| // other features through HTTP headers. |
| const base::Feature kFeaturePolicy{"FeaturePolicy", |
| base::FEATURE_ENABLED_BY_DEFAULT}; |
| |
| // Enable filtering of same-origin tiny plugins |
| const base::Feature kFilterSameOriginTinyPlugin{ |
| "FilterSameOriginTinyPlugins", base::FEATURE_DISABLED_BY_DEFAULT}; |
| |
| // Enables a blink::FontCache optimization that reuses a font to serve different |
| // size of font. |
| const base::Feature kFontCacheScaling{"FontCacheScaling", |
| base::FEATURE_DISABLED_BY_DEFAULT}; |
| |
| // Enables a security restriction on iframes navigating their top frame. |
| // When enabled, the navigation will only be permitted if the iframe is |
| // same-origin to the top frame, or if a user gesture is being processed. |
| const base::Feature kFramebustingNeedsSameOriginOrUserGesture{ |
| "FramebustingNeedsSameOriginOrUserGesture", |
| base::FEATURE_DISABLED_BY_DEFAULT}; |
| |
| // Enables extended Gamepad API features like motion tracking and haptics. |
| const base::Feature kGamepadExtensions{"GamepadExtensions", |
| base::FEATURE_DISABLED_BY_DEFAULT}; |
| |
| // Causes the implementations of guests (inner WebContents) to use |
| // out-of-process iframes. |
| const base::Feature kGuestViewCrossProcessFrames{ |
| "GuestViewCrossProcessFrames", base::FEATURE_DISABLED_BY_DEFAULT}; |
| |
| // Enables BlinkGC heap compaction. |
| const base::Feature kHeapCompaction{"HeapCompaction", |
| base::FEATURE_DISABLED_BY_DEFAULT}; |
| |
| // Enables Blink's idle time spell checker. |
| // Design: https://goo.gl/zONC3v |
| // Note: The feature is implemented in Blink, and is independent to the |
| // ENABLE_SPELLCHECK build flag defined in components/spellcheck. |
| const base::Feature kIdleTimeSpellChecking{"IdleTimeSpellChecking", |
| base::FEATURE_DISABLED_BY_DEFAULT}; |
| |
| // Enables lazily parsing css properties for performance. |
| const base::Feature kLazyParseCSS{"LazyParseCSS", |
| base::FEATURE_DISABLED_BY_DEFAULT}; |
| |
| // Use Mojo IPC for resource loading. |
| const base::Feature kLoadingWithMojo{"LoadingWithMojo", |
| base::FEATURE_DISABLED_BY_DEFAULT}; |
| |
| // Experimental feature to trigger hard-reload on Location.reload(). |
| // crbug.com/716339 |
| const base::Feature kLocationHardReload{"LocationHardReload", |
| base::FEATURE_DISABLED_BY_DEFAULT}; |
| |
| // FeatureList definition for trials to enable the download button on |
| // MediaDocument. |
| const base::Feature kMediaDocumentDownloadButton{ |
| "MediaDocumentDownloadButton", |
| base::FEATURE_DISABLED_BY_DEFAULT |
| }; |
| |
| // Enables the old algorithm for processing video constraints in getUserMedia(). |
| const base::Feature kMediaStreamOldVideoConstraints{ |
| "MediaStreamOldVideoConstraints", base::FEATURE_DISABLED_BY_DEFAULT}; |
| |
| // Enables the memory coordinator. |
| // WARNING: |
| // The memory coordinator is not ready for use and enabling this may cause |
| // unexpected memory regression at this point. Please do not enable this. |
| const base::Feature kMemoryCoordinator { |
| "MemoryCoordinator", base::FEATURE_DISABLED_BY_DEFAULT |
| }; |
| |
| // Kill switch for Web Notification content images. |
| const base::Feature kNotificationContentImage{"NotificationContentImage", |
| base::FEATURE_ENABLED_BY_DEFAULT}; |
| // An experiment forcing events to be non-blocking when the main thread is |
| // deemed unresponsive. See crbug.com/599609. |
| const base::Feature kMainThreadBusyScrollIntervention{ |
| "MainThreadBusyScrollIntervention", base::FEATURE_DISABLED_BY_DEFAULT}; |
| |
| // Experimental resource fetch optimizations for workers. See crbug.com/443374 |
| const base::Feature kOffMainThreadFetch{"OffMainThreadFetch", |
| base::FEATURE_DISABLED_BY_DEFAULT}; |
| |
| // Origin Trials for controlling access to feature/API experiments. |
| const base::Feature kOriginTrials{"OriginTrials", |
| base::FEATURE_ENABLED_BY_DEFAULT}; |
| |
| // Whether a download can be handled by parallel jobs. |
| const base::Feature kParallelDownloading{ |
| "ParallelDownloading", base::FEATURE_DISABLED_BY_DEFAULT}; |
| |
| // Whether document level event listeners should default 'passive' to true. |
| const base::Feature kPassiveDocumentEventListeners{ |
| "PassiveDocumentEventListeners", base::FEATURE_ENABLED_BY_DEFAULT}; |
| |
| // Whether we should force a touchstart and first touchmove per scroll event |
| // listeners to be non-blocking during fling. |
| const base::Feature kPassiveEventListenersDueToFling{ |
| "PassiveEventListenersDueToFling", base::FEATURE_ENABLED_BY_DEFAULT}; |
| |
| // Pointer events support. |
| const base::Feature kPointerEvents{"PointerEvent", |
| base::FEATURE_ENABLED_BY_DEFAULT}; |
| |
| // Enables Purge+Throttle on platforms except Android and MacOS. |
| // (Android) Purge+Throttle depends on TabManager, but TabManager doesn't |
| // support Android. Enable after Android is supported. |
| // (MacOS X) Enable after Purge+Throttle handles memory pressure signals |
| // send by OS correctly. |
| const base::Feature kPurgeAndSuspend { |
| "PurgeAndSuspend", |
| #if defined(OS_MACOSX) || defined(OS_ANDROID) |
| base::FEATURE_DISABLED_BY_DEFAULT |
| #else |
| base::FEATURE_ENABLED_BY_DEFAULT |
| #endif |
| }; |
| |
| // RAF aligned mouse input events support. |
| const base::Feature kRafAlignedMouseInputEvents{ |
| "RafAlignedMouseInput", base::FEATURE_DISABLED_BY_DEFAULT}; |
| |
| // RAF aligned touch input events support. |
| const base::Feature kRafAlignedTouchInputEvents{ |
| "RafAlignedTouchInput", base::FEATURE_ENABLED_BY_DEFAULT}; |
| |
| // If Pepper 3D Image Chromium is allowed, this feature controls whether it is |
| // enabled. |
| const base::Feature kPepper3DImageChromium { |
| "Pepper3DImageChromium", |
| #if defined(OS_MACOSX) |
| base::FEATURE_ENABLED_BY_DEFAULT |
| #else |
| base::FEATURE_DISABLED_BY_DEFAULT |
| #endif |
| }; |
| |
| // Throttle Blink's rendering pipeline based on frame visibility. |
| const base::Feature kRenderingPipelineThrottling{ |
| "RenderingPipelineThrottling", base::FEATURE_ENABLED_BY_DEFAULT}; |
| |
| // Scrolls to compensate for layout movements (bit.ly/scroll-anchoring). |
| const base::Feature kScrollAnchoring{"ScrollAnchoring", |
| base::FEATURE_ENABLED_BY_DEFAULT}; |
| |
| // Navigation preload feature of service workers. |
| const base::Feature kServiceWorkerNavigationPreload{ |
| "ServiceWorkerNavigationPreload", base::FEATURE_ENABLED_BY_DEFAULT}; |
| |
| // http://tc39.github.io/ecmascript_sharedmem/shmem.html |
| const base::Feature kSharedArrayBuffer{"SharedArrayBuffer", |
| base::FEATURE_DISABLED_BY_DEFAULT}; |
| |
| // Paint invalidation based on slimming paint. See https://goo.gl/eQczQW |
| const base::Feature kSlimmingPaintInvalidation{ |
| "SlimmingPaintInvalidation", base::FEATURE_ENABLED_BY_DEFAULT}; |
| |
| // Throttle Blink timers in out-of-view cross origin frames. |
| const base::Feature kTimerThrottlingForHiddenFrames{ |
| "TimerThrottlingForHiddenFrames", base::FEATURE_ENABLED_BY_DEFAULT}; |
| |
| // Enables token binding |
| // (https://www.ietf.org/id/draft-ietf-tokbind-protocol-04.txt). |
| const base::Feature kTokenBinding{"token-binding", |
| base::FEATURE_DISABLED_BY_DEFAULT}; |
| |
| // Enables touchpad and wheel scroll latching. |
| const base::Feature kTouchpadAndWheelScrollLatching{ |
| "TouchpadAndWheelScrollLatching", base::FEATURE_DISABLED_BY_DEFAULT}; |
| |
| // Controls whether vibrate requires user gesture. |
| const base::Feature kVibrateRequiresUserGesture{ |
| "VibrateRequiresUserGesture", base::FEATURE_ENABLED_BY_DEFAULT}; |
| |
| // Enables VR UI. |
| const base::Feature kVrShell{"VrShell", base::FEATURE_DISABLED_BY_DEFAULT}; |
| |
| // Enable WebAssembly structured cloning. |
| // http://webassembly.org/ |
| const base::Feature kWebAssembly{"WebAssembly", |
| base::FEATURE_DISABLED_BY_DEFAULT}; |
| |
| // Enable WebAssembly streamed compilation. |
| const base::Feature kWebAssemblyStreaming{"WebAssemblyStreaming", |
| base::FEATURE_DISABLED_BY_DEFAULT}; |
| |
| // If WebGL Image Chromium is allowed, this feature controls whether it is |
| // enabled. |
| const base::Feature kWebGLImageChromium{"WebGLImageChromium", |
| base::FEATURE_ENABLED_BY_DEFAULT}; |
| |
| // The JavaScript API for payments on the web. |
| const base::Feature kWebPayments{"WebPayments", |
| base::FEATURE_ENABLED_BY_DEFAULT}; |
| |
| // Makes WebRTC use ECDSA certs by default (i.e., when no cert type was |
| // specified in JS). |
| const base::Feature kWebRtcEcdsaDefault {"WebRTC-EnableWebRtcEcdsa", |
| base::FEATURE_ENABLED_BY_DEFAULT}; |
| |
| // Use GpuMemoryBuffer backed VideoFrames in media streams. |
| const base::Feature kWebRtcUseGpuMemoryBufferVideoFrames{ |
| "WebRTC-UseGpuMemoryBufferVideoFrames", |
| base::FEATURE_DISABLED_BY_DEFAULT}; |
| |
| // Enables HW H264 encoding on Android. |
| const base::Feature kWebRtcHWH264Encoding{ |
| "WebRtcHWH264Encoding", base::FEATURE_ENABLED_BY_DEFAULT}; |
| |
| // Enables HW VP8 encoding on Android. |
| const base::Feature kWebRtcHWVP8Encoding { |
| "WebRtcHWVP8Encoding", |
| #if defined(OS_ANDROID) |
| base::FEATURE_DISABLED_BY_DEFAULT |
| #else |
| base::FEATURE_ENABLED_BY_DEFAULT |
| #endif |
| }; |
| |
| // Enables the WebRTC Echo Canceller version 3 (AEC3). Feature for |
| // http://crbug.com/688388. This value is sent to WebRTC's echo canceller to |
| // toggle which echo canceller should be used. |
| const base::Feature kWebRtcUseEchoCanceller3{"WebRtcUseEchoCanceller3", |
| base::FEATURE_DISABLED_BY_DEFAULT}; |
| |
| // Controls whether the WebUSB API is enabled: |
| // https://wicg.github.io/webusb |
| const base::Feature kWebUsb{"WebUSB", base::FEATURE_ENABLED_BY_DEFAULT}; |
| |
| // Enables WebVR experimental rendering optimizations. |
| const base::Feature kWebVRExperimentalRendering{ |
| "WebVRExperimentalRendering", base::FEATURE_DISABLED_BY_DEFAULT}; |
| |
| // Make sendBeacon throw for a Blob with a non simple type. |
| const base::Feature kSendBeaconThrowForBlobWithNonSimpleType{ |
| "SendBeaconThrowForBlobWithNonSimpleType", |
| base::FEATURE_DISABLED_BY_DEFAULT}; |
| |
| #if defined(OS_ANDROID) |
| // Autofill Accessibility in Android. |
| // crbug.com/627860 |
| const base::Feature kAndroidAutofillAccessibility{ |
| "AndroidAutofillAccessibility", base::FEATURE_DISABLED_BY_DEFAULT}; |
| |
| // FeatureList definition for the Seccomp field trial. |
| const base::Feature kSeccompSandboxAndroid{"SeccompSandboxAndroid", |
| base::FEATURE_ENABLED_BY_DEFAULT}; |
| |
| // Service worker based payment apps as defined by w3c here: |
| // https://w3c.github.io/webpayments-payment-apps-api/ |
| const base::Feature kServiceWorkerPaymentApps{ |
| "ServiceWorkerPaymentApps", |
| base::FEATURE_DISABLED_BY_DEFAULT}; |
| |
| // Controls whether the WebNFC API is enabled: |
| // https://w3c.github.io/web-nfc/ |
| const base::Feature kWebNfc{"WebNFC", base::FEATURE_DISABLED_BY_DEFAULT}; |
| #endif |
| |
| #if defined(OS_WIN) |
| // Emergency "off switch" for new Windows sandbox security mitigation, |
| // sandbox::MITIGATION_EXTENSION_POINT_DISABLE. |
| const base::Feature kWinSboxDisableExtensionPoints{ |
| "WinSboxDisableExtensionPoint", base::FEATURE_ENABLED_BY_DEFAULT}; |
| #endif |
| |
| } // namespace features |