// 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 "content/public/common/content_features.h" #include "build/build_config.h" #include "net/net_buildflags.h" #if defined(OS_WIN) #include "base/win/windows_version.h" #endif namespace features { // All features in alphabetical order. // Enables the allowActivationDelegation attribute on iframes. // https://www.chromestatus.com/features/6025124331388928 // // TODO(mustaq): Deprecated, see kUserActivationPostMessageTransfer. const base::Feature kAllowActivationDelegationAttr{ "AllowActivationDelegationAttr", base::FEATURE_DISABLED_BY_DEFAULT}; // 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}; // Allows popups during page unloading. // TODO(https://crbug.com/937569): Remove this entirely in Chrome 88. const base::Feature kAllowPopupsDuringPageUnload{ "AllowPopupsDuringPageUnload", base::FEATURE_DISABLED_BY_DEFAULT}; // Accepts Origin-Signed HTTP Exchanges to be signed with certificates // that do not have CanSignHttpExchangesDraft extension. // TODO(https://crbug.com/862003): Remove when certificates with // CanSignHttpExchangesDraft extension are available from trusted CAs. const base::Feature kAllowSignedHTTPExchangeCertsWithoutExtension{ "AllowSignedHTTPExchangeCertsWithoutExtension", base::FEATURE_DISABLED_BY_DEFAULT}; // Launches the audio service on the browser startup. const base::Feature kAudioServiceLaunchOnStartup{ "AudioServiceLaunchOnStartup", base::FEATURE_DISABLED_BY_DEFAULT}; // Runs the audio service in a separate process. const base::Feature kAudioServiceOutOfProcess { "AudioServiceOutOfProcess", #if defined(OS_WIN) || defined(OS_MACOSX) || \ (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) base::FEATURE_ENABLED_BY_DEFAULT #else base::FEATURE_DISABLED_BY_DEFAULT #endif }; // Kill switch for Background Fetch. const base::Feature kBackgroundFetch{"BackgroundFetch", base::FEATURE_ENABLED_BY_DEFAULT}; // Enable using the BackForwardCache. const base::Feature kBackForwardCache{"BackForwardCache", base::FEATURE_DISABLED_BY_DEFAULT}; // BackForwardCache is disabled on low memory devices. The threshold is defined // via a field trial param: "memory_threshold_for_back_forward_cache_in_mb" // It is compared against base::SysInfo::AmountOfPhysicalMemoryMB(). // "BackForwardCacheMemoryControls" is checked before "BackForwardCache". It // means the low memory devices will activate neither the control group nor the // experimental group of the BackForwardCache field trial. const base::Feature kBackForwardCacheMemoryControl{ "BackForwardCacheMemoryControls", 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}; // Use ThreadPriority::DISPLAY for browser UI and IO threads. #if defined(OS_ANDROID) || defined(OS_CHROMEOS) const base::Feature kBrowserUseDisplayThreadPriority{ "BrowserUseDisplayThreadPriority", base::FEATURE_ENABLED_BY_DEFAULT}; #else const base::Feature kBrowserUseDisplayThreadPriority{ "BrowserUseDisplayThreadPriority", base::FEATURE_DISABLED_BY_DEFAULT}; #endif // When enabled, keyboard user activation will be verified by the browser side. const base::Feature kBrowserVerifiedUserActivationKeyboard{ "BrowserVerifiedUserActivationKeyboard", base::FEATURE_DISABLED_BY_DEFAULT}; // When enabled, mouse user activation will be verified by the browser side. const base::Feature kBrowserVerifiedUserActivationMouse{ "BrowserVerifiedUserActivationMouse", base::FEATURE_DISABLED_BY_DEFAULT}; // Enables code caching for inline scripts. const base::Feature kCacheInlineScriptCode{"CacheInlineScriptCode", base::FEATURE_ENABLED_BY_DEFAULT}; // Enables support for parallel cache_storage operations via the // "max_shared_ops" fieldtrial parameter. const base::Feature kCacheStorageParallelOps{"CacheStorageParallelOps", base::FEATURE_ENABLED_BY_DEFAULT}; // Enables eagerly reading the response body in cache.match() when the // operation was started from a FetchEvent handler with a matching request // URL. const base::Feature kCacheStorageEagerReading{ "CacheStorageEagerReading", base::FEATURE_DISABLED_BY_DEFAULT}; // Enables scheduling the operation at high priority when a cache.match() is // initiated from a FetchEvent handler with a matching request URL. const base::Feature kCacheStorageHighPriorityMatch{ "CacheStorageHighPriorityMatch", base::FEATURE_ENABLED_BY_DEFAULT}; // If Canvas2D Image Chromium is allowed, this feature controls whether it is // enabled. const base::Feature kCanvas2DImageChromium { "Canvas2DImageChromium", #if defined(OS_MACOSX) base::FEATURE_ENABLED_BY_DEFAULT #else base::FEATURE_DISABLED_BY_DEFAULT #endif }; // Enables the use of out of process rasterization for canvas. const base::Feature kCanvasOopRasterization{"CanvasOopRasterization", base::FEATURE_DISABLED_BY_DEFAULT}; // When enabled, event.movement is calculated in blink instead of in browser. const base::Feature kConsolidatedMovementXY{"ConsolidatedMovementXY", base::FEATURE_ENABLED_BY_DEFAULT}; // Controls whether the Conversion Measurement API is enabled. const base::Feature kConversionMeasurement{"ConversionMeasurement", base::FEATURE_DISABLED_BY_DEFAULT}; // Show messages in the DevTools console about upcoming deprecations // that would affect sent/received cookies. const base::Feature kCookieDeprecationMessages{ "CookieDeprecationMessages", base::FEATURE_ENABLED_BY_DEFAULT}; // Enables Blink cooperative scheduling. const base::Feature kCooperativeScheduling{"CooperativeScheduling", base::FEATURE_DISABLED_BY_DEFAULT}; // Enables crash reporting via Reporting API. // https://www.w3.org/TR/reporting/#crash-report const base::Feature kCrashReporting{"CrashReporting", #if BUILDFLAG(ENABLE_REPORTING) base::FEATURE_ENABLED_BY_DEFAULT #else base::FEATURE_DISABLED_BY_DEFAULT #endif }; // Puts save-data header in the holdback mode. This disables sending of // save-data header to origins, and to the renderer processes within Chrome. const base::Feature kDataSaverHoldback{"DataSaverHoldback", base::FEATURE_DISABLED_BY_DEFAULT}; // Enable changing source dynamically for desktop capture. const base::Feature kDesktopCaptureChangeSource{ "DesktopCaptureChangeSource", base::FEATURE_ENABLED_BY_DEFAULT}; // Enable document policy for configuring and restricting feature behavior. const base::Feature kDocumentPolicy{"DocumentPolicy", base::FEATURE_DISABLED_BY_DEFAULT}; // If this feature is enabled and device permission is not granted by the user, // media-device enumeration will provide at most one device per type and the // device IDs will not be available. // TODO(crbug.com/1019176): remove the feature in M82. const base::Feature kEnumerateDevicesHideDeviceIDs{ "EnumerateDevicesHideDeviceIDs", #if defined(OS_ANDROID) base::FEATURE_DISABLED_BY_DEFAULT #else base::FEATURE_ENABLED_BY_DEFAULT #endif }; // When a screen reader is detected, allow users the option of letting // Google provide descriptions for unlabeled images. const base::Feature kExperimentalAccessibilityLabels{ "ExperimentalAccessibilityLabels", base::FEATURE_ENABLED_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_ENABLED_BY_DEFAULT}; // Extra CORS safelisted headers. See https://crbug.com/999054. const base::Feature kExtraSafelistedRequestHeadersForOutOfBlinkCors{ "ExtraSafelistedRequestHeadersForOutOfBlinkCors", base::FEATURE_DISABLED_BY_DEFAULT}; // Controls whether Client Hints are guarded by FeaturePolicy. const base::Feature kFeaturePolicyForClientHints{ "FeaturePolicyForClientHints", base::FEATURE_DISABLED_BY_DEFAULT}; // When enabled Feature Policy propagation is similar to sandbox flags and, // sandbox flags are implemented on top of Feature Policy. const base::Feature kFeaturePolicyForSandbox{"FeaturePolicyForSandbox", base::FEATURE_DISABLED_BY_DEFAULT}; // Enables fixes for matching src: local() for web fonts correctly against full // font name or postscript name. Rolling out behind a flag, as enabling this // enables a font indexer on Android which we need to test in the field first. const base::Feature kFontSrcLocalMatching{"FontSrcLocalMatching", base::FEATURE_ENABLED_BY_DEFAULT}; #if !defined(OS_ANDROID) // Feature controlling whether or not memory pressure signals will be forwarded // to the GPU process. const base::Feature kForwardMemoryPressureEventsToGpuProcess { "ForwardMemoryPressureEventsToGpuProcess", #if defined(OS_FUCHSIA) || defined(OS_WIN) base::FEATURE_ENABLED_BY_DEFAULT #else base::FEATURE_DISABLED_BY_DEFAULT #endif }; #endif // Enables scrollers inside Blink to store scroll offsets in fractional // floating-point numbers rather than truncating to integers. const base::Feature kFractionalScrollOffsets{"FractionalScrollOffsets", base::FEATURE_DISABLED_BY_DEFAULT}; // Enables support for FTP URLs. When disabled FTP URLs will behave the same as // any other URL scheme that's unknown to the UA. See https://crbug.com/333943 const base::Feature kFtpProtocol{"FtpProtocol", base::FEATURE_ENABLED_BY_DEFAULT}; // Puts network quality estimate related Web APIs in the holdback mode. When the // holdback is enabled the related Web APIs return network quality estimate // set by the experiment (regardless of the actual quality). const base::Feature kNetworkQualityEstimatorWebHoldback{ "NetworkQualityEstimatorWebHoldback", base::FEATURE_DISABLED_BY_DEFAULT}; // If a page does a client side redirect or adds to the history without a user // gesture, then skip it on back/forward UI. const base::Feature kHistoryManipulationIntervention{ "HistoryManipulationIntervention", base::FEATURE_ENABLED_BY_DEFAULT}; // Prevents sandboxed iframes from using the history API to navigate frames // outside their subttree, if they are restricted from doing top-level // navigations. const base::Feature kHistoryPreventSandboxedNavigation{ "HistoryPreventSandboxedNavigation", base::FEATURE_ENABLED_BY_DEFAULT}; // This is intended as a kill switch for the Idle Detection feature. To enable // this feature, the experimental web platform features flag should be set, // or the site should obtain an Origin Trial token. const base::Feature kIdleDetection{"IdleDetection", base::FEATURE_ENABLED_BY_DEFAULT}; // This flag is used to set field parameters to choose predictor we use when // kResamplingInputEvents is disabled. It's used for gatherig accuracy metrics // on finch and also for choosing predictor type for predictedEvents API without // enabling resampling. It does not have any effect when the resampling flag is // enabled. const base::Feature kInputPredictorTypeChoice{ "InputPredictorTypeChoice", base::FEATURE_DISABLED_BY_DEFAULT}; // Kill switch for the GetInstalledRelatedApps API. const base::Feature kInstalledApp{"InstalledApp", base::FEATURE_ENABLED_BY_DEFAULT}; // Allow Windows specific implementation for the GetInstalledRelatedApps API. const base::Feature kInstalledAppProvider{"InstalledAppProvider", base::FEATURE_DISABLED_BY_DEFAULT}; // Alternative to switches::kIsolateOrigins, for turning on origin isolation. // List of origins to isolate has to be specified via // kIsolateOriginsFieldTrialParamName. const base::Feature kIsolateOrigins{"IsolateOrigins", base::FEATURE_DISABLED_BY_DEFAULT}; const char kIsolateOriginsFieldTrialParamName[] = "OriginsList"; const base::Feature kLazyFrameLoading{"LazyFrameLoading", base::FEATURE_ENABLED_BY_DEFAULT}; const base::Feature kLazyFrameVisibleLoadTimeMetrics { "LazyFrameVisibleLoadTimeMetrics", #if defined(OS_ANDROID) base::FEATURE_ENABLED_BY_DEFAULT #else base::FEATURE_DISABLED_BY_DEFAULT #endif }; const base::Feature kLazyImageLoading{"LazyImageLoading", base::FEATURE_ENABLED_BY_DEFAULT}; const base::Feature kLazyImageVisibleLoadTimeMetrics { "LazyImageVisibleLoadTimeMetrics", #if defined(OS_ANDROID) base::FEATURE_ENABLED_BY_DEFAULT #else base::FEATURE_DISABLED_BY_DEFAULT #endif }; // Enable lazy initialization of the media controls. const base::Feature kLazyInitializeMediaControls{ "LazyInitializeMediaControls", base::FEATURE_ENABLED_BY_DEFAULT}; // Configures whether Blink on Windows 8.0 and below should use out of process // API font fallback calls to retrieve a fallback font family name as opposed to // using a hard-coded font lookup table. const base::Feature kLegacyWindowsDWriteFontFallback{ "LegacyWindowsDWriteFontFallback", base::FEATURE_DISABLED_BY_DEFAULT}; const base::Feature kLogJsConsoleMessages{"LogJsConsoleMessages", base::FEATURE_DISABLED_BY_DEFAULT}; // Enables lowering the priority of the resources in iframes. const base::Feature kLowPriorityIframes{"LowPriorityIframes", base::FEATURE_DISABLED_BY_DEFAULT}; // If this feature is enabled, media-device enumerations use a cache that is // invalidated upon notifications sent by base::SystemMonitor. If disabled, the // cache is considered invalid on every enumeration request. const base::Feature kMediaDevicesSystemMonitorCache { "MediaDevicesSystemMonitorCaching", #if defined(OS_MACOSX) || defined(OS_WIN) base::FEATURE_ENABLED_BY_DEFAULT #else base::FEATURE_DISABLED_BY_DEFAULT #endif }; // Enables/disables the video capture service. const base::Feature kMojoVideoCapture{"MojoVideoCapture", base::FEATURE_ENABLED_BY_DEFAULT}; // A secondary switch used in combination with kMojoVideoCapture. // This is intended as a kill switch to allow disabling the service on // particular groups of devices even if they forcibly enable kMojoVideoCapture // via a command-line argument. const base::Feature kMojoVideoCaptureSecondary{ "MojoVideoCaptureSecondary", base::FEATURE_ENABLED_BY_DEFAULT}; // When enable, iframe does not implicit capture mouse event. const base::Feature kMouseSubframeNoImplicitCapture{ "MouseSubframeNoImplicitCapture", base::FEATURE_DISABLED_BY_DEFAULT}; // If the network service is enabled, runs it in process. const base::Feature kNetworkServiceInProcess { "NetworkServiceInProcess", #if defined(OS_ANDROID) base::FEATURE_ENABLED_BY_DEFAULT #else base::FEATURE_DISABLED_BY_DEFAULT #endif }; const base::Feature kNeverSlowMode{"NeverSlowMode", base::FEATURE_DISABLED_BY_DEFAULT}; // Kill switch for Web Notification content images. const base::Feature kNotificationContentImage{"NotificationContentImage", base::FEATURE_ENABLED_BY_DEFAULT}; // Enables the notification trigger API. const base::Feature kNotificationTriggers{"NotificationTriggers", base::FEATURE_ENABLED_BY_DEFAULT}; // Origin Isolation, via a header. See https://crbug.com/1042415 // Note that the origin policy-based variant of origin isolation is controlled // by kOriginPolicy, instead. const base::Feature kOriginIsolationHeader{"OriginIsolationHeader", base::FEATURE_DISABLED_BY_DEFAULT}; // Origin Policy. See https://crbug.com/751996 const base::Feature kOriginPolicy{"OriginPolicy", base::FEATURE_DISABLED_BY_DEFAULT}; // History navigation in response to horizontal overscroll (aka gesture-nav). const base::Feature kOverscrollHistoryNavigation { "OverscrollHistoryNavigation", #if defined(OS_ANDROID) base::FEATURE_DISABLED_BY_DEFAULT #else base::FEATURE_ENABLED_BY_DEFAULT #endif }; // Whether document level event listeners should default 'passive' to true. const base::Feature kPassiveDocumentEventListeners{ "PassiveDocumentEventListeners", base::FEATURE_ENABLED_BY_DEFAULT}; // Whether document level wheel and mousewheel event listeners should default // 'passive' to true. const base::Feature kPassiveDocumentWheelEventListeners{ "PassiveDocumentWheelEventListeners", 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}; // Whether web apps can run periodic tasks upon network connectivity. const base::Feature kPeriodicBackgroundSync{"PeriodicBackgroundSync", base::FEATURE_DISABLED_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 }; // Kill-switch to introduce a compatibility breaking restriction. const base::Feature kPepperCrossOriginRedirectRestriction{ "PepperCrossOriginRedirectRestriction", base::FEATURE_ENABLED_BY_DEFAULT}; // Whether we should composite a PLSA even if it means losing lcd text. const base::Feature kPreferCompositingToLCDText = { "PreferCompositingToLCDText", base::FEATURE_DISABLED_BY_DEFAULT}; // Enables process sharing for sites that do not require a dedicated process // by using a default SiteInstance. Default SiteInstances will only be used // on platforms that do not use full site isolation. // Note: This feature is mutally exclusive with // kProcessSharingWithStrictSiteInstances. Only one of these should be enabled // at a time. const base::Feature kProcessSharingWithDefaultSiteInstances{ "ProcessSharingWithDefaultSiteInstances", base::FEATURE_ENABLED_BY_DEFAULT}; // Whether cross-site frames should get their own SiteInstance even when // strict site isolation is disabled. These SiteInstances will still be // grouped into a shared default process based on BrowsingInstance. const base::Feature kProcessSharingWithStrictSiteInstances{ "ProcessSharingWithStrictSiteInstances", base::FEATURE_DISABLED_BY_DEFAULT}; // Under this flag bootstrap (aka startup) tasks will be prioritized. This flag // is used by various modules to determine whether special scheduling // arrangements need to be made to prioritize certain tasks. const base::Feature kPrioritizeBootstrapTasks = { "PrioritizeBootstrapTasks", base::FEATURE_ENABLED_BY_DEFAULT}; // Enable the ProactivelySwapBrowsingInstance experiment. A browsing instance // represents a set of frames that can script each other. Currently, Chrome does // not always switch BrowsingInstance when navigating in between two unrelated // pages. This experiment makes Chrome swap BrowsingInstances for cross-site // HTTP(S) navigations when the BrowsingInstance doesn't contain any other // windows. const base::Feature kProactivelySwapBrowsingInstance{ "ProactivelySwapBrowsingInstance", base::FEATURE_DISABLED_BY_DEFAULT}; // Reduce the amount of information in the default 'referer' header for // cross-origin requests. const base::Feature kReducedReferrerGranularity{ "ReducedReferrerGranularity", base::FEATURE_DISABLED_BY_DEFAULT}; // Controls whether FileURLLoaderFactory can fetch additional files based on the // isolated world's origin. This feature is disabled by default because we want // content scripts to have the same permissions as the page they are injected // into. This feature makes it possible to quickly revert to earlier permissive // behavior if significant regressions are detected. See // https://crbug.com/1049604. const base::Feature kRelaxIsolatedWorldCorsInFileUrlLoaderFactory = { "RelaxIsolatedWorldCorsInFileUrlLoaderFactory", base::FEATURE_DISABLED_BY_DEFAULT}; // Causes hidden tabs with crashed subframes to be marked for reload, meaning // that if a user later switches to that tab, the current page will be // reloaded. This will hide crashed subframes from the user at the cost of // extra reloads. const base::Feature kReloadHiddenTabsWithCrashedSubframes { "ReloadHiddenTabsWithCrashedSubframes", #if defined(OS_ANDROID) base::FEATURE_ENABLED_BY_DEFAULT #else base::FEATURE_DISABLED_BY_DEFAULT #endif }; // RenderDocument: // // Currently, a RenderFrameHost represents neither a frame nor a document, but a // frame in a given process. A new one is created after a different-process // navigation. The goal of RenderDocument is to get a new one for each document // instead. // // Design doc: https://bit.ly/renderdocument // Main bug tracker: https://crbug.com/936696 // Enable using the RenderDocument. const base::Feature kRenderDocument{"RenderDocument", base::FEATURE_DISABLED_BY_DEFAULT}; const base::Feature kRequestUnbufferedDispatch{ "RequestUnbufferedDispatch", base::FEATURE_ENABLED_BY_DEFAULT}; // Enables resampling input events on main thread. const base::Feature kResamplingInputEvents{"ResamplingInputEvents", base::FEATURE_DISABLED_BY_DEFAULT}; // Run video capture service in the Browser process as opposed to a dedicated // utility process const base::Feature kRunVideoCaptureServiceInBrowserProcess{ "RunVideoCaptureServiceInBrowserProcess", base::FEATURE_DISABLED_BY_DEFAULT}; // Enables saving pages as Web Bundle. const base::Feature kSavePageAsWebBundle{"SavePageAsWebBundle", base::FEATURE_DISABLED_BY_DEFAULT}; // Start streaming scripts on script preload. const base::Feature kScriptStreamingOnPreload{"ScriptStreamingOnPreload", base::FEATURE_ENABLED_BY_DEFAULT}; // Make sendBeacon throw for a Blob with a non simple type. const base::Feature kSendBeaconThrowForBlobWithNonSimpleType{ "SendBeaconThrowForBlobWithNonSimpleType", base::FEATURE_DISABLED_BY_DEFAULT}; // If enabled, ServiceWorkerContextCore lives on the UI thread rather than the // IO thread. // https://crbug.com/824858 const base::Feature kServiceWorkerOnUI{"ServiceWorkerOnUI", base::FEATURE_DISABLED_BY_DEFAULT}; // Service worker based payment apps as defined by w3c here: // https://w3c.github.io/webpayments-payment-apps-api/ // TODO(rouslan): Remove this. const base::Feature kServiceWorkerPaymentApps{"ServiceWorkerPaymentApps", base::FEATURE_ENABLED_BY_DEFAULT}; // If enabled, prefer to start service workers in an unused renderer process if // available. This helps let navigations and service workers use the same // process when a process was already created for a navigation but not yet // claimed by it (as is common for navigations from the Android New Tab Page). const base::Feature kServiceWorkerPrefersUnusedProcess{ "ServiceWorkerPrefersUnusedProcess", base::FEATURE_DISABLED_BY_DEFAULT}; // Use this feature to experiment terminating a service worker when it doesn't // control any clients: https://crbug.com/1043845. const base::Feature kServiceWorkerTerminationOnNoControllee{ "ServiceWorkerTerminationOnNoControllee", base::FEATURE_DISABLED_BY_DEFAULT}; // http://tc39.github.io/ecmascript_sharedmem/shmem.html const base::Feature kSharedArrayBuffer { "SharedArrayBuffer", #if defined(OS_ANDROID) base::FEATURE_DISABLED_BY_DEFAULT #else base::FEATURE_ENABLED_BY_DEFAULT #endif }; // Signed HTTP Exchange prefetch cache for navigations // https://crbug.com/968427 const base::Feature kSignedExchangePrefetchCacheForNavigations{ "SignedExchangePrefetchCacheForNavigations", base::FEATURE_DISABLED_BY_DEFAULT}; // Signed Exchange Reporting for distributors // https://www.chromestatus.com/features/5687904902840320 const base::Feature kSignedExchangeReportingForDistributors{ "SignedExchangeReportingForDistributors", base::FEATURE_ENABLED_BY_DEFAULT}; // Subresource prefetching+loading via Signed HTTP Exchange // https://www.chromestatus.com/features/5126805474246656 const base::Feature kSignedExchangeSubresourcePrefetch{ "SignedExchangeSubresourcePrefetch", base::FEATURE_DISABLED_BY_DEFAULT}; // Origin-Signed HTTP Exchanges (for WebPackage Loading) // https://www.chromestatus.com/features/5745285984681984 const base::Feature kSignedHTTPExchange{"SignedHTTPExchange", base::FEATURE_ENABLED_BY_DEFAULT}; // Whether to send a ping to the inner URL upon navigation or not. const base::Feature kSignedHTTPExchangePingValidity{ "SignedHTTPExchangePingValidity", base::FEATURE_DISABLED_BY_DEFAULT}; // This is intended as a kill switch for the SMS Receiver feature. To enable // this feature, the experimental web platform features flag should be set, // or the site should obtain an Origin Trial token. const base::Feature kSmsReceiver{"SmsReceiver", base::FEATURE_ENABLED_BY_DEFAULT}; // Controls whether SpareRenderProcessHostManager tries to always have a warm // spare renderer process around for the most recently requested BrowserContext. // This feature is only consulted in site-per-process mode. const base::Feature kSpareRendererForSitePerProcess{ "SpareRendererForSitePerProcess", base::FEATURE_ENABLED_BY_DEFAULT}; // Enables Storage Pressure notifications and settings pages. const base::Feature kStoragePressureUI{"StoragePressureUI", base::FEATURE_DISABLED_BY_DEFAULT}; // Enables the out-of-process Storage Service. const base::Feature kStorageServiceOutOfProcess{ "StorageServiceOutOfProcess", base::FEATURE_DISABLED_BY_DEFAULT}; // Enables the Storage Service sandbox whenever out-of-process Storage Service // is enabled. const base::Feature kStorageServiceSandbox{"StorageServiceSandbox", base::FEATURE_DISABLED_BY_DEFAULT}; // Controls whether site isolation should use origins instead of scheme and // eTLD+1. const base::Feature kStrictOriginIsolation{"StrictOriginIsolation", base::FEATURE_DISABLED_BY_DEFAULT}; // Dispatch touch events to "SyntheticGestureController" for events from // Devtool Protocol Input.dispatchTouchEvent to simulate touch events close to // real OS events. const base::Feature kSyntheticPointerActions{"SyntheticPointerActions", base::FEATURE_DISABLED_BY_DEFAULT}; // Throttle Blink timers in out-of-view cross origin frames. const base::Feature kTimerThrottlingForHiddenFrames{ "TimerThrottlingForHiddenFrames", base::FEATURE_ENABLED_BY_DEFAULT}; // Enables async touchpad pinch zoom events. We check the ACK of the first // synthetic wheel event in a pinch sequence, then send the rest of the // synthetic wheel events of the pinch sequence as non-blocking if the first // event’s ACK is not canceled. const base::Feature kTouchpadAsyncPinchEvents{"TouchpadAsyncPinchEvents", base::FEATURE_ENABLED_BY_DEFAULT}; // Allows swipe left/right from touchpad change browser navigation. Currently // only enabled by default on CrOS. const base::Feature kTouchpadOverscrollHistoryNavigation { "TouchpadOverscrollHistoryNavigation", #if defined(OS_CHROMEOS) || defined(OS_WIN) base::FEATURE_ENABLED_BY_DEFAULT #else base::FEATURE_DISABLED_BY_DEFAULT #endif }; // Controls whether the Trusted Types API is available. const base::Feature kTrustedDOMTypes{"TrustedDOMTypes", base::FEATURE_ENABLED_BY_DEFAULT}; // Controls whether the RenderProcessHost uses its frames' priorities for // determining if it should be backgrounded. When all frames associated with a // RenderProcessHost are low priority, that process may be backgrounded even if // those frames are visible. const base::Feature kUseFramePriorityInRenderProcessHost{ "UseFramePriorityInRenderProcessHost", base::FEATURE_DISABLED_BY_DEFAULT}; // Allows developers transfer user activation state to any target window in the // frame tree. const base::Feature kUserActivationPostMessageTransfer{ "UserActivationPostMessageTransfer", base::FEATURE_DISABLED_BY_DEFAULT}; // Allows user activation propagation to all frames having the same origin as // the activation notifier frame. This is an intermediate measure before we // have an iframe attribute to declaratively allow user activation propagation // to subframes. const base::Feature kUserActivationSameOriginVisibility{ "UserActivationSameOriginVisibility", base::FEATURE_ENABLED_BY_DEFAULT}; // An experimental replacement for the `User-Agent` header, defined in // https://tools.ietf.org/html/draft-west-ua-client-hints. const base::Feature kUserAgentClientHint{"UserAgentClientHint", base::FEATURE_DISABLED_BY_DEFAULT}; // Controls whether the