| // Copyright 2022 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "content/common/features.h" |
| |
| #include "base/feature_list.h" |
| #include "base/metrics/field_trial_params.h" |
| |
| namespace features { |
| |
| // Please keep 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 |
| BASE_FEATURE(kAllowContentInitiatedDataUrlNavigations, |
| "AllowContentInitiatedDataUrlNavigations", |
| base::FEATURE_DISABLED_BY_DEFAULT); |
| |
| // Allows Blink to request fonts from the Android Downloadable Fonts API through |
| // the service implemented on the Java side. |
| BASE_FEATURE(kAndroidDownloadableFontsMatching, |
| "AndroidDownloadableFontsMatching", |
| base::FEATURE_ENABLED_BY_DEFAULT); |
| |
| // Enables exposure of the Cross App Web Attribution Reporting in the renderer |
| // without an origin trial token. |
| BASE_FEATURE(kAttributionReportingCrossAppWebOverride, |
| "AttributionReportingCrossAppWebOverride", |
| base::FEATURE_ENABLED_BY_DEFAULT); |
| |
| // Enables controlling the time to live for pages in the BackForwardCache. |
| // The time to live is defined by the param 'time_to_live_seconds'; if this |
| // param is not specified then this feature is ignored and the default is used. |
| BASE_FEATURE(kBackForwardCacheTimeToLiveControl, |
| "BackForwardCacheTimeToLiveControl", |
| base::FEATURE_DISABLED_BY_DEFAULT); |
| |
| // When enabled, the browser will schedule before unload tasks that continue |
| // navigation network responses in a kHigh priority queue. |
| // TODO(b/281094330): Run experiment on ChromeOS. Experiment was not run on |
| // ChromeOS due to try bot issue. |
| BASE_FEATURE(kBeforeUnloadBrowserResponseQueue, |
| "BeforeUnloadBrowserResponseQueue", |
| #if BUILDFLAG(IS_CHROMEOS) |
| base::FEATURE_DISABLED_BY_DEFAULT |
| #else |
| base::FEATURE_ENABLED_BY_DEFAULT |
| #endif |
| ); |
| |
| // When this feature is enabled, requests to localhost initiated from non-secure |
| // contexts in the `unknown` IP address space are blocked. |
| // |
| // See also: |
| // - kBlockInsecurePrivateNetworkRequests |
| BASE_FEATURE(kBlockInsecurePrivateNetworkRequestsFromUnknown, |
| "BlockInsecurePrivateNetworkRequestsFromUnknown", |
| base::FEATURE_DISABLED_BY_DEFAULT); |
| |
| // The fix to crbug.com/1248529 will be behind this default-enabled flag, in |
| // case it breaks any applications in the wild. |
| BASE_FEATURE(kHistoryInterventionSameDocumentFix, |
| "HistoryInterventionSameDocumentFix", |
| base::FEATURE_ENABLED_BY_DEFAULT); |
| |
| // When enabled, keyboard user activation will be verified by the browser side. |
| BASE_FEATURE(kBrowserVerifiedUserActivationKeyboard, |
| "BrowserVerifiedUserActivationKeyboard", |
| base::FEATURE_DISABLED_BY_DEFAULT); |
| |
| // If enabled, changes to the zoom level are temporary and are forgotten when |
| // the tab is closed. If disabled, changes to the zoom level persist, as though |
| // the user affected them through the browser's UX. |
| BASE_FEATURE(kCapturedSurfaceControlTemporaryZoom, |
| "CapturedSurfaceControlTemporaryZoom", |
| base::FEATURE_ENABLED_BY_DEFAULT); |
| |
| // If Canvas2D Image Chromium is allowed, this feature controls whether it is |
| // enabled. |
| BASE_FEATURE(kCanvas2DImageChromium, |
| "Canvas2DImageChromium", |
| #if BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_CHROMEOS_LACROS) |
| base::FEATURE_ENABLED_BY_DEFAULT |
| #else |
| base::FEATURE_DISABLED_BY_DEFAULT |
| #endif |
| ); |
| |
| // When enabled, code cache does not use a browsing_data filter for deletions. |
| BASE_FEATURE(kCodeCacheDeletionWithoutFilter, |
| "CodeCacheDeletionWithoutFilter", |
| base::FEATURE_ENABLED_BY_DEFAULT); |
| |
| // When enabled, event.movement is calculated in blink instead of in browser. |
| BASE_FEATURE(kConsolidatedMovementXY, |
| "ConsolidatedMovementXY", |
| base::FEATURE_ENABLED_BY_DEFAULT); |
| |
| // Enables support for the `Critical-CH` response header. |
| // https://github.com/WICG/client-hints-infrastructure/blob/master/reliability.md#critical-ch |
| BASE_FEATURE(kCriticalClientHint, |
| "CriticalClientHint", |
| base::FEATURE_ENABLED_BY_DEFAULT); |
| |
| // Enables setting the nonce of the data: opaque origin early in the navigation |
| // so the nonce remains stable throughout a navigation. |
| // Note: kDataUrlsHaveOriginAsUrl is dependent on this feature. If this feature |
| // is being disabled, the other needs to be disabled as well. |
| // TODO(crbug.com/1447896, yangsharon): Remove this once we're confident that |
| // this change isn't causing issues in the wild. |
| BASE_FEATURE(kDataUrlsHaveStableNonce, |
| "DataUrlsHaveStableNonce", |
| base::FEATURE_ENABLED_BY_DEFAULT); |
| |
| // When enabled, main frame data: URLs use the serialized nonce from the origin |
| // as the site URL. Otherwise, use the entire data: URL as the site URL. |
| // Note: This feature is dependent on kDataUrlsHaveStableNonce. If that flag |
| // needs to be disabled, this will have to be disabled as well. |
| // TODO(crbug.com/1447896, yangsharon): Remove this once we're confident that |
| // this change isn't causing issues in the wild. |
| BASE_FEATURE(kDataUrlsHaveOriginAsUrl, |
| "DataUrlsHaveOriginAsUrl", |
| base::FEATURE_ENABLED_BY_DEFAULT); |
| |
| // Enable changing source dynamically for desktop capture. |
| BASE_FEATURE(kDesktopCaptureChangeSource, |
| "DesktopCaptureChangeSource", |
| base::FEATURE_ENABLED_BY_DEFAULT); |
| |
| // Enables caching of media devices for the purpose of enumerating them. |
| #if BUILDFLAG(IS_MAC) |
| BASE_FEATURE(kDeviceMonitorMac, |
| "DeviceMonitorMac", |
| base::FEATURE_ENABLED_BY_DEFAULT); |
| #endif |
| |
| // Enable document policy negotiation mechanism. |
| BASE_FEATURE(kDocumentPolicyNegotiation, |
| "DocumentPolicyNegotiation", |
| base::FEATURE_DISABLED_BY_DEFAULT); |
| |
| // Requires documents embedded via <iframe>, etc, to explicitly opt-into the |
| // embedding: https://github.com/mikewest/embedding-requires-opt-in. |
| BASE_FEATURE(kEmbeddingRequiresOptIn, |
| "EmbeddingRequiresOptIn", |
| base::FEATURE_DISABLED_BY_DEFAULT); |
| |
| // Enable back/forward cache for screen reader users. This flag should be |
| // removed once the https://crbug.com/1271450 is resolved. |
| BASE_FEATURE(kEnableBackForwardCacheForScreenReader, |
| "EnableBackForwardCacheForScreenReader", |
| base::FEATURE_ENABLED_BY_DEFAULT); |
| |
| // Enable back/forward cache when a page which has subframe(s) with ongoing |
| // navigation(s) is navigated. Currently, this is only for navigations which |
| // don't need URLLoaders or haven't yet sent network requests. This flag should |
| // be removed once the https://crbug.com/1511153 is resolved. |
| BASE_FEATURE(kEnableBackForwardCacheForOngoingSubframeNavigation, |
| "EnableBackForwardCacheForOngoingSubframeNavigation", |
| base::FEATURE_DISABLED_BY_DEFAULT); |
| |
| // Enables error reporting for JS errors inside DevTools frontend host |
| #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) |
| BASE_FEATURE(kEnableDevToolsJsErrorReporting, |
| "EnableDevToolsJsErrorReporting", |
| base::FEATURE_DISABLED_BY_DEFAULT); |
| #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) |
| |
| // TODO(https://crbug.com/1442346): Feature flag to guard extra CHECKs put in |
| // place to ensure that the AllowBindings API on RenderFrameHost is not called |
| // for documents outside of WebUI ones. |
| BASE_FEATURE(kEnsureAllowBindingsIsAlwaysForWebUI, |
| "EnsureAllowBindingsIsAlwaysForWebUI", |
| base::FEATURE_ENABLED_BY_DEFAULT); |
| |
| // Content counterpart of ExperimentalContentSecurityPolicyFeatures in |
| // third_party/blink/renderer/platform/runtime_enabled_features.json5. Enables |
| // experimental Content Security Policy features ('navigate-to'). |
| BASE_FEATURE(kExperimentalContentSecurityPolicyFeatures, |
| "ExperimentalContentSecurityPolicyFeatures", |
| base::FEATURE_DISABLED_BY_DEFAULT); |
| |
| // Enables CORS checks on the ID assertion endpoint of the FedCM API. |
| BASE_FEATURE(kFedCmIdAssertionCORS, |
| "FedCmIdAssertionCORS", |
| base::FEATURE_DISABLED_BY_DEFAULT); |
| |
| // Enables sending only SameSite=None cookies in credentialed FedCM requests |
| // (accounts endpoint and ID assertion endpoint). If kFedCmIdAssertionCORS |
| // is enabled, this is a no-op for the ID assertion endpoint. |
| BASE_FEATURE(kFedCmSameSiteNone, |
| "FedCmSameSiteNone", |
| base::FEATURE_DISABLED_BY_DEFAULT); |
| |
| // If enabled, limits the number of FLEDGE auctions that can be run between page |
| // load and unload -- any attempt to run more than this number of auctions will |
| // fail (return null to JavaScript). |
| BASE_FEATURE(kFledgeLimitNumAuctions, |
| "LimitNumFledgeAuctions", |
| base::FEATURE_DISABLED_BY_DEFAULT); |
| // The number of allowed auctions for each page load (load to unload). |
| const base::FeatureParam<int> kFledgeLimitNumAuctionsParam{ |
| &kFledgeLimitNumAuctions, "max_auctions_per_page", 8}; |
| |
| // Enables caching when loading interest groups for a bidder in an auction. |
| BASE_FEATURE(kFledgeUseInterestGroupCache, |
| "FledgeUseInterestGroupCache", |
| base::FEATURE_DISABLED_BY_DEFAULT); |
| |
| // Enables a delay for the post-auction interest group update to avoid |
| // immediately invalidating cached values. |
| BASE_FEATURE(kFledgeDelayPostAuctionInterestGroupUpdate, |
| "FledgeDelayPostAuctionInterestGroupUpdate", |
| 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. |
| BASE_FEATURE(kFontSrcLocalMatching, |
| "FontSrcLocalMatching", |
| base::FEATURE_ENABLED_BY_DEFAULT); |
| |
| // Feature controlling whether or not memory pressure signals will be forwarded |
| // to the GPU process. |
| #if !BUILDFLAG(IS_ANDROID) |
| BASE_FEATURE(kForwardMemoryPressureEventsToGpuProcess, |
| "ForwardMemoryPressureEventsToGpuProcess", |
| base::FEATURE_ENABLED_BY_DEFAULT); |
| #endif |
| |
| // Whether to use the Frame Routing Cache to avoid synchronous IPCs from the |
| // renderer side for iframe creation. |
| BASE_FEATURE(kFrameRoutingCache, |
| "FrameRoutingCache", |
| base::FEATURE_DISABLED_BY_DEFAULT); |
| const base::FeatureParam<int> kFrameRoutingCacheResponseSize{ |
| &kFrameRoutingCache, "responseSize", 4}; |
| |
| // Adds "/prefetch:8" (which is the "other" category of process - i.e. not |
| // browser, gpu, crashpad, etc.) to the info collection GPU process' command |
| // line, in order to keep from polluting the GPU prefetch history. |
| #if BUILDFLAG(IS_WIN) |
| BASE_FEATURE(kGpuInfoCollectionSeparatePrefetch, |
| "GpuInfoCollectionSeparatePrefetch", |
| base::FEATURE_ENABLED_BY_DEFAULT); |
| #endif |
| |
| // Group network isolation key(NIK) by storage interest group joining origin to |
| // improve privacy and performance -- IGs of the same joining origin can reuse |
| // sockets, so we don't need to renegotiate those connections. |
| BASE_FEATURE(kGroupNIKByJoiningOrigin, |
| "GroupNIKByJoiningOrigin", |
| base::FEATURE_DISABLED_BY_DEFAULT); |
| |
| // Supports proxying thread type changes of renderer processes to browser |
| // process and having browser process handle adjusting thread properties (nice |
| // value, c-group, latency sensitivity...) for children which have sandbox |
| // restrictions. |
| #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) |
| BASE_FEATURE(kHandleChildThreadTypeChangesInBrowser, |
| "HandleChildThreadTypeChangesInBrowser", |
| base::FEATURE_ENABLED_BY_DEFAULT); |
| #endif |
| |
| // A feature flag for the memory-backed code cache. |
| BASE_FEATURE(kInMemoryCodeCache, |
| "InMemoryCodeCache", |
| base::FEATURE_DISABLED_BY_DEFAULT); |
| |
| // During compositor frame eviction, collect not only the surfaces that are |
| // reachable from the main frame tree, but also recurse into inner |
| // frames. Otherwise only toplevel frames and OOPIF are handled, and other |
| // cases, e.g. PDF tiles are ignored. See https://crbug.com/1360351 for details. |
| BASE_FEATURE(kInnerFrameCompositorSurfaceEviction, |
| "InnerFrameCompositorSurfaceEviction", |
| base::FEATURE_ENABLED_BY_DEFAULT); |
| |
| // Enable IOSurface based screen capturer. |
| #if BUILDFLAG(IS_MAC) |
| BASE_FEATURE(kIOSurfaceCapturer, |
| "IOSurfaceCapturer", |
| base::FEATURE_ENABLED_BY_DEFAULT); |
| #endif |
| |
| // Enables the TC39 Array grouping proposal. |
| BASE_FEATURE(kJavaScriptArrayGrouping, |
| "JavaScriptArrayGrouping", |
| base::FEATURE_DISABLED_BY_DEFAULT); |
| |
| // Feature that controls whether WebContentsOcclusionChecker should handle |
| // occlusion notifications. |
| #if BUILDFLAG(IS_MAC) |
| BASE_FEATURE(kMacWebContentsOcclusion, |
| "MacWebContentsOcclusion", |
| base::FEATURE_DISABLED_BY_DEFAULT); |
| #endif |
| |
| // 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. |
| BASE_FEATURE(kMediaDevicesSystemMonitorCache, |
| "MediaDevicesSystemMonitorCaching", |
| #if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) |
| base::FEATURE_ENABLED_BY_DEFAULT |
| #else |
| base::FEATURE_DISABLED_BY_DEFAULT |
| #endif |
| ); |
| |
| // Allow cross-context transfer of MediaStreamTracks. |
| BASE_FEATURE(kMediaStreamTrackTransfer, |
| "MediaStreamTrackTransfer", |
| base::FEATURE_DISABLED_BY_DEFAULT); |
| |
| // If enabled Mojo uses a dedicated background thread to listen for incoming |
| // IPCs. Otherwise it's configured to use Content's IO thread for that purpose. |
| BASE_FEATURE(kMojoDedicatedThread, |
| "MojoDedicatedThread", |
| base::FEATURE_DISABLED_BY_DEFAULT); |
| |
| // Enables skipping of calls to hideSoftInputFromWindow when there is not a |
| // keyboard currently visible. |
| #if BUILDFLAG(IS_ANDROID) |
| BASE_FEATURE(kOptimizeImmHideCalls, |
| "OptimizeImmHideCalls", |
| base::FEATURE_ENABLED_BY_DEFAULT); |
| #endif // BUILDFLAG(IS_ANDROID) |
| |
| // This feature enables Permissions Policy verification in the Browser process |
| // in content/. Additionally only for //chrome Permissions Policy verification |
| // is enabled in components/permissions/permission_context_base.cc |
| #if !BUILDFLAG(IS_ANDROID) |
| BASE_FEATURE(kPermissionsPolicyVerificationInContent, |
| "kPermissionsPolicyVerificationInContent", |
| base::FEATURE_ENABLED_BY_DEFAULT); |
| #endif // !BUILDFLAG(IS_ANDROID) |
| |
| // Preload cookie database on NetworkContext creation. |
| BASE_FEATURE(kPreloadCookies, |
| "PreloadCookies", |
| base::FEATURE_DISABLED_BY_DEFAULT); |
| // Preloading holdback feature disables preloading (e.g., preconnect, prefetch, |
| // and prerender) on all predictors. This is useful in comparing the impact of |
| // blink::features::kPrerender2 experiment with and without them. |
| |
| // This Feature allows configuring preloading features via a parameter string. |
| // See content/browser/preloading/preloading_config.cc to see how to use this |
| // feature. |
| BASE_FEATURE(kPreloadingConfig, |
| "PreloadingConfig", |
| base::FEATURE_ENABLED_BY_DEFAULT); |
| |
| // Enables exposure of the core milestone 1 (M1) APIs in the renderer without an |
| // origin trial token: Attribution Reporting, FLEDGE, Topics. |
| BASE_FEATURE(kPrivacySandboxAdsAPIsM1Override, |
| "PrivacySandboxAdsAPIsM1Override", |
| base::FEATURE_DISABLED_BY_DEFAULT); |
| |
| // Enables reporting ResourceTiming entries for document, who initiated a |
| // cancelled navigation in one of their <iframe>. |
| BASE_FEATURE(kResourceTimingForCancelledNavigationInFrame, |
| "ResourceTimingForCancelledNavigationInFrame", |
| 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. |
| BASE_FEATURE(kProactivelySwapBrowsingInstance, |
| "ProactivelySwapBrowsingInstance", |
| base::FEATURE_DISABLED_BY_DEFAULT); |
| |
| // When enabled, CanAccessDataForOrigin can only be called from the UI thread. |
| // This is related to Citadel desktop protections. See |
| // https://crbug.com/1286501. |
| BASE_FEATURE(kRestrictCanAccessDataForOriginToUIThread, |
| "RestrictCanAccessDataForOriginToUIThread", |
| base::FEATURE_ENABLED_BY_DEFAULT); |
| |
| // Make sendBeacon throw for a Blob with a non simple type. |
| BASE_FEATURE(kSendBeaconThrowForBlobWithNonSimpleType, |
| "SendBeaconThrowForBlobWithNonSimpleType", |
| base::FEATURE_DISABLED_BY_DEFAULT); |
| |
| // When enabled, try to reuse an unlocked renderer process when COOP swap is |
| // happening on prerender initial navigation. Please see crbug.com/1519131 for |
| // more details. |
| BASE_FEATURE(kProcessReuseOnPrerenderCOOPSwap, |
| "ProcessReuseOnPrerenderCOOPSwap", |
| 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. |
| 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. |
| BASE_FEATURE(kProcessSharingWithStrictSiteInstances, |
| "ProcessSharingWithStrictSiteInstances", |
| 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. |
| BASE_FEATURE(kReloadHiddenTabsWithCrashedSubframes, |
| "ReloadHiddenTabsWithCrashedSubframes", |
| #if BUILDFLAG(IS_ANDROID) |
| base::FEATURE_ENABLED_BY_DEFAULT |
| #else |
| base::FEATURE_DISABLED_BY_DEFAULT |
| #endif |
| ); |
| |
| // When enabled, allow reusing an initial RenderFrameHost with an unused process |
| // for a subsequent WebUI navigation. WebUI navigations typically trigger a |
| // BrowsingInstance swap, but the swap is not necessary in that case: see |
| // https://crbug.com/1485586. This is intended to be used as a kill switch. |
| BASE_FEATURE(kReuseInitialRenderFrameHostForWebUI, |
| "ReuseInitialRenderFrameHostForWebUI", |
| base::FEATURE_ENABLED_BY_DEFAULT); |
| |
| // Run StableVideoDecoderFactoryProcessService and StableVideoDecoderService on |
| // the IO thread in the video decoder process. If it is disabled, they run on |
| // the main thread in the process. |
| BASE_FEATURE(kRunStableVideoDecoderFactoryProcessServiceOnIOThread, |
| "RunStableVideoDecoderFactoryProcessServiceOnIOThread", |
| base::FEATURE_ENABLED_BY_DEFAULT); |
| |
| // Enables auto preloading for fetch requests before invoking the fetch handler |
| // in ServiceWorker. The fetch request inside the fetch handler is resolved with |
| // this preload response. If the fetch handler result is fallback, uses this |
| // preload request as a fallback network request. |
| // |
| // Unlike navigation preload, this preloading is applied to subresources. Also, |
| // it doesn't require a developer opt-in. |
| // |
| // crbug.com/1472634 for more details. |
| BASE_FEATURE(kServiceWorkerAutoPreload, |
| "ServiceWorkerAutoPreload", |
| base::FEATURE_DISABLED_BY_DEFAULT); |
| |
| // (crbug.com/1371756): When enabled, the static routing API starts |
| // ServiceWorker when the routing result of a main resource request was network |
| // fallback. |
| BASE_FEATURE(kServiceWorkerStaticRouterStartServiceWorker, |
| "ServiceWorkerStaticRouterStartServiceWorker", |
| base::FEATURE_ENABLED_BY_DEFAULT); |
| |
| // The set of ServiceWorker to bypass while making navigation request. |
| // They are represented by a comma separated list of HEX encoded SHA256 hash of |
| // the ServiceWorker's scripts. |
| // e.g. |
| // 9685C8DE399237BDA6FF3AD0F281E9D522D46BB0ECFACE05E98D2B9AAE51D1EF, |
| // 20F0D78B280E40C0A17ABB568ACF4BDAFFB9649ADA75B0675F962B3F4FC78EA4 |
| BASE_FEATURE(kServiceWorkerBypassFetchHandlerHashStrings, |
| "ServiceWorkerBypassFetchHandlerHashStrings", |
| base::FEATURE_DISABLED_BY_DEFAULT); |
| const base::FeatureParam<std::string> |
| kServiceWorkerBypassFetchHandlerBypassedHashStrings{ |
| &kServiceWorkerBypassFetchHandlerHashStrings, |
| "script_checksum_to_bypass", ""}; |
| |
| // Signed Exchange Reporting for distributors |
| // https://www.chromestatus.com/feature/5687904902840320 |
| BASE_FEATURE(kSignedExchangeReportingForDistributors, |
| "SignedExchangeReportingForDistributors", |
| base::FEATURE_ENABLED_BY_DEFAULT); |
| |
| // When enabled, ensures that an unlocked process cannot access data for |
| // sites that require a dedicated process. |
| BASE_FEATURE(kSiteIsolationCitadelEnforcement, |
| "kSiteIsolationCitadelEnforcement", |
| base::FEATURE_ENABLED_BY_DEFAULT); |
| |
| // Enables skipping the early call to CommitPending when navigating away from a |
| // crashed frame. |
| BASE_FEATURE(kSkipEarlyCommitPendingForCrashedFrame, |
| "SkipEarlyCommitPendingForCrashedFrame", |
| base::FEATURE_DISABLED_BY_DEFAULT); |
| |
| // (crbug/1377753): Speculatively start service worker before BeforeUnload runs. |
| BASE_FEATURE(kSpeculativeServiceWorkerStartup, |
| "SpeculativeServiceWorkerStartup", |
| base::FEATURE_DISABLED_BY_DEFAULT); |
| |
| BASE_FEATURE(kStopVideoCaptureOnScreenLock, |
| "StopVideoCaptureOnScreenLock", |
| base::FEATURE_ENABLED_BY_DEFAULT); |
| |
| #if BUILDFLAG(IS_MAC) |
| BASE_FEATURE(kTextInputClient, |
| "TextInputClient", |
| base::FEATURE_ENABLED_BY_DEFAULT); |
| const base::FeatureParam<base::TimeDelta> kTextInputClientIPCTimeout{ |
| &kTextInputClient, "ipc_timeout", base::Milliseconds(1500)}; |
| #endif |
| |
| // 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. |
| 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, LaCrOS and Windows. |
| BASE_FEATURE(kTouchpadOverscrollHistoryNavigation, |
| "TouchpadOverscrollHistoryNavigation", |
| #if BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_WIN) |
| base::FEATURE_ENABLED_BY_DEFAULT |
| #else |
| base::FEATURE_DISABLED_BY_DEFAULT |
| #endif |
| ); |
| |
| // Enable TrustedTypes .fromLiteral support. |
| BASE_FEATURE(kTrustedTypesFromLiteral, |
| "TrustedTypesFromLiteral", |
| base::FEATURE_DISABLED_BY_DEFAULT); |
| |
| // Controls whether the <video>.getVideoPlaybackQuality() API is enabled. |
| BASE_FEATURE(kVideoPlaybackQuality, |
| "VideoPlaybackQuality", |
| base::FEATURE_ENABLED_BY_DEFAULT); |
| |
| // Pre-warm up the network process on browser startup. |
| #if BUILDFLAG(IS_ANDROID) |
| BASE_FEATURE(kWarmUpNetworkProcess, |
| "WarmUpNetworkProcess", |
| base::FEATURE_DISABLED_BY_DEFAULT); |
| #endif |
| |
| // Enable WebAssembly dynamic tiering (only tier up hot functions). |
| BASE_FEATURE(kWebAssemblyDynamicTiering, |
| "WebAssemblyDynamicTiering", |
| base::FEATURE_ENABLED_BY_DEFAULT); |
| |
| // Use GpuMemoryBuffer backed VideoFrames in media streams. |
| BASE_FEATURE(kWebRtcUseGpuMemoryBufferVideoFrames, |
| "WebRTC-UseGpuMemoryBufferVideoFrames", |
| base::FEATURE_ENABLED_BY_DEFAULT); |
| |
| // Enables WebOTP calls in cross-origin iframes if allowed by Permissions |
| // Policy. |
| BASE_FEATURE(kWebOTPAssertionFeaturePolicy, |
| "WebOTPAssertionFeaturePolicy", |
| base::FEATURE_DISABLED_BY_DEFAULT); |
| |
| // Flag guard for fix for crbug.com/1504324. |
| BASE_FEATURE(kWindowOpenFileSelectFix, |
| "WindowOpenFileSelectFix", |
| base::FEATURE_ENABLED_BY_DEFAULT); |
| |
| // Please keep features in alphabetical order. |
| |
| } // namespace features |