diff --git a/tools/under-control/src/RELEASE b/tools/under-control/src/RELEASE index 46868c90f..0aa9c3428 100644 --- a/tools/under-control/src/RELEASE +++ b/tools/under-control/src/RELEASE @@ -1 +1 @@ -129.0.6668.101 +130.0.6723.44 diff --git a/tools/under-control/src/android_webview/browser/aw_content_browser_client.cc b/tools/under-control/src/android_webview/browser/aw_content_browser_client.cc index c2e5438ec..4f2b6fa07 100755 --- a/tools/under-control/src/android_webview/browser/aw_content_browser_client.cc +++ b/tools/under-control/src/android_webview/browser/aw_content_browser_client.cc @@ -89,6 +89,7 @@ #include "content/public/browser/child_process_security_policy.h" #include "content/public/browser/client_certificate_delegate.h" #include "content/public/browser/file_url_loader.h" +#include "content/public/browser/frame_type.h" #include "content/public/browser/navigation_handle.h" #include "content/public/browser/navigation_throttle.h" #include "content/public/browser/network_service_instance.h" @@ -132,6 +133,7 @@ #include "ui/resources/grit/ui_resources.h" using content::BrowserThread; +using content::FrameType; using content::WebContents; using safe_browsing::AsyncCheckTracker; using safe_browsing::hash_realtime_utils::HashRealTimeSelection; @@ -183,7 +185,7 @@ class XrwNavigationThrottle : public content::NavigationThrottle { // Get async check tracker to make Safe Browsing v5 check asynchronous base::WeakPtr GetAsyncCheckTracker( const base::RepeatingCallback& wc_getter, - int frame_tree_node_id) { + content::FrameTreeNodeId frame_tree_node_id) { if (!base::FeatureList::IsEnabled( safe_browsing::kSafeBrowsingAsyncRealTimeCheck)) { return nullptr; @@ -196,9 +198,12 @@ base::WeakPtr GetAsyncCheckTracker( return nullptr; } + // Setting should_sync_checker_check_allowlist to false since the allowlist + // is not available on WebView. return AsyncCheckTracker::GetOrCreateForWebContents( web_contents, - AwBrowserProcess::GetInstance()->GetSafeBrowsingUIManager()) + AwBrowserProcess::GetInstance()->GetSafeBrowsingUIManager(), + /*should_sync_checker_check_allowlist=*/false) ->GetWeakPtr(); } @@ -520,9 +525,7 @@ base::FilePath AwContentBrowserClient::GetDefaultDownloadDirectory() { } std::string AwContentBrowserClient::GetDefaultDownloadName() { - NOTREACHED_IN_MIGRATION() - << "Android WebView does not use chromium downloads"; - return std::string(); + NOTREACHED() << "Android WebView does not use chromium downloads"; } std::optional @@ -538,7 +541,7 @@ AwContentBrowserClient::GetLocalTracesDirectory() { void AwContentBrowserClient::DidCreatePpapiPlugin( content::BrowserPpapiHost* browser_host) { - NOTREACHED_IN_MIGRATION() << "Android WebView does not support plugins"; + NOTREACHED() << "Android WebView does not support plugins"; } bool AwContentBrowserClient::AllowPepperSocketAPI( @@ -546,15 +549,13 @@ bool AwContentBrowserClient::AllowPepperSocketAPI( const GURL& url, bool private_api, const content::SocketPermissionRequest* params) { - NOTREACHED_IN_MIGRATION() << "Android WebView does not support plugins"; - return false; + NOTREACHED() << "Android WebView does not support plugins"; } bool AwContentBrowserClient::IsPepperVpnProviderAPIAllowed( content::BrowserContext* browser_context, const GURL& url) { - NOTREACHED_IN_MIGRATION() << "Android WebView does not support plugins"; - return false; + NOTREACHED() << "Android WebView does not support plugins"; } std::unique_ptr @@ -645,6 +646,19 @@ AwContentBrowserClient::CreateThrottlesForNavigation( throttles.push_back( std::make_unique(navigation_handle)); } + + if ((navigation_handle->GetNavigatingFrameType() == + FrameType::kPrimaryMainFrame || + navigation_handle->GetNavigatingFrameType() == FrameType::kSubframe) && + navigation_handle->GetURL().SchemeIsHTTPOrHTTPS()) { + AwSupervisedUserUrlClassifier* urlClassifier = + AwSupervisedUserUrlClassifier::GetInstance(); + if (urlClassifier->ShouldCreateThrottle()) { + throttles.push_back(std::make_unique( + navigation_handle, urlClassifier)); + } + } + return throttles; } @@ -659,7 +673,7 @@ AwContentBrowserClient::CreateURLLoaderThrottles( content::BrowserContext* browser_context, const base::RepeatingCallback& wc_getter, content::NavigationUIData* navigation_ui_data, - int frame_tree_node_id, + content::FrameTreeNodeId frame_tree_node_id, std::optional navigation_id) { DCHECK_CURRENTLY_ON(BrowserThread::UI); @@ -705,17 +719,6 @@ AwContentBrowserClient::CreateURLLoaderThrottles( } } - if ((request.destination == network::mojom::RequestDestination::kDocument || - request.destination == network::mojom::RequestDestination::kIframe) && - request.url.SchemeIsHTTPOrHTTPS()) { - AwSupervisedUserUrlClassifier* urlClassifier = - AwSupervisedUserUrlClassifier::GetInstance(); - if (urlClassifier->ShouldCreateThrottle()) { - result.push_back( - std::make_unique(urlClassifier)); - } - } - return result; } @@ -724,7 +727,7 @@ AwContentBrowserClient::CreateURLLoaderThrottlesForKeepAlive( const network::ResourceRequest& request, content::BrowserContext* browser_context, const base::RepeatingCallback& wc_getter, - int frame_tree_node_id) { + content::FrameTreeNodeId frame_tree_node_id) { DCHECK_CURRENTLY_ON(BrowserThread::UI); // Set lookup mechanism based on feature flag HashRealTimeSelection hash_real_time_selection = @@ -768,7 +771,7 @@ AwContentBrowserClient::GetSafeBrowsingUrlCheckerDelegate() { } bool AwContentBrowserClient::ShouldOverrideUrlLoading( - int frame_tree_node_id, + content::FrameTreeNodeId frame_tree_node_id, bool browser_initiated, const GURL& gurl, const std::string& request_method, @@ -846,6 +849,9 @@ bool AwContentBrowserClient::ShouldOverrideUrlLoading( bool AwContentBrowserClient::ShouldAllowSameSiteRenderFrameHostChange( const content::RenderFrameHost& rfh) { + if (!base::FeatureList::IsEnabled(features::kWebViewRenderDocument)) { + return false; + } content::RenderFrameHost* rfh_ptr = const_cast(&rfh); content::WebContents* web_contents = @@ -877,7 +883,7 @@ AwContentBrowserClient::CreateLoginDelegate( bool AwContentBrowserClient::HandleExternalProtocol( const GURL& url, content::WebContents::Getter wc_getter, - int frame_tree_node_id, + content::FrameTreeNodeId frame_tree_node_id, content::NavigationUIData* navigation_data, bool is_primary_main_frame, bool /* is_in_fenced_frame_tree */, @@ -926,7 +932,7 @@ bool AwContentBrowserClient::HandleExternalProtocol( FROM_HERE, base::BindOnce( [](mojo::PendingReceiver receiver, - int frame_tree_node_id, + content::FrameTreeNodeId frame_tree_node_id, scoped_refptr browser_context_handle) { // Manages its own lifetime. @@ -1126,8 +1132,7 @@ void AwContentBrowserClient::WillCreateURLLoaderFactory( FROM_HERE, base::BindOnce( &AwProxyingURLLoaderFactory::CreateProxy, std::move(cookie_manager), - cookie_access_policy, isolation_info, - content::RenderFrameHost::kNoFrameTreeNodeId, + cookie_access_policy, isolation_info, content::FrameTreeNodeId(), std::move(proxied_receiver), std::move(target_factory_remote), std::nullopt /* security_options */, aw_browser_context->service_worker_xrw_allowlist_matcher(), diff --git a/tools/under-control/src/android_webview/browser/aw_field_trials.cc b/tools/under-control/src/android_webview/browser/aw_field_trials.cc index 7d3e92680..01506b962 100755 --- a/tools/under-control/src/android_webview/browser/aw_field_trials.cc +++ b/tools/under-control/src/android_webview/browser/aw_field_trials.cc @@ -96,7 +96,7 @@ void AwFieldTrials::OnVariationsSetupComplete() { if (base::PathService::Get(base::DIR_ANDROID_APP_DATA, &metrics_dir)) { InstantiatePersistentHistogramsWithFeaturesAndCleanup(metrics_dir); } else { - NOTREACHED_IN_MIGRATION(); + NOTREACHED(); } } @@ -236,6 +236,12 @@ void AwFieldTrials::RegisterFeatureOverrides(base::FeatureList* feature_list) { // enabling site isolation. See crbug.com/356170748. aw_feature_overrides.DisableFeature(blink::features::kPaintHoldingForIframes); + // Since Default Nav Transition does not support WebView yet, disable the + // LocalSurfaceId increment flag. TODO(crbug.com/361600214): Re-enable for + // WebView when we start introducing this feature. + aw_feature_overrides.DisableFeature( + blink::features::kIncrementLocalSurfaceIdForMainframeSameDocNavigation); + if (base::CommandLine::ForCurrentProcess()->HasSwitch(switches::kDebugBsa)) { // Feature parameters can only be set via a field trial. const char kTrialName[] = "StudyDebugBsa"; @@ -272,9 +278,4 @@ void AwFieldTrials::RegisterFeatureOverrides(base::FeatureList* feature_list) { // TODO(crbug.com/41492947): See crrev.com/c/5744034 for details, but I was // unable to add this feature to fieldtrial_testing_config and pass all tests. aw_feature_overrides.EnableFeature(blink::features::kElementGetInnerHTML); - - // TODO(crbug.com/356827071): Enable the feature for WebView. - // Disable PlzDedicatedWorker as a workaround for crbug.com/356827071. - // Otherwise, importScripts fails on WebView. - aw_feature_overrides.DisableFeature(blink::features::kPlzDedicatedWorker); } diff --git a/tools/under-control/src/chrome/android/java/AndroidManifest.xml b/tools/under-control/src/chrome/android/java/AndroidManifest.xml index 0635acb3c..f6ffd4c55 100755 --- a/tools/under-control/src/chrome/android/java/AndroidManifest.xml +++ b/tools/under-control/src/chrome/android/java/AndroidManifest.xml @@ -193,7 +193,7 @@ by a child template that "extends" this file. android:zygotePreloadName="{{ zygote_preload_class }}" {% if backup_key is defined %} android:allowBackup="true" - android:backupAgent="org.chromium.chrome.browser.ChromeBackupAgent" + android:backupAgent="org.chromium.chrome.browser.backup.ChromeBackupAgent" android:fullBackupOnly="false" android:restoreAnyVersion="true" {% else %} @@ -1199,7 +1199,9 @@ by a child template that "extends" this file. + + {% endif %} @@ -1329,6 +1331,11 @@ by a child template that "extends" this file. android:name="androidx.startup.InitializationProvider" tools:node="remove"> + + + HeaderOperation operation; // The new value for the header. Must be specified for append // and set operations. + // DOMString? value; + + // A regular expression to match against the header value. This follows the + // RE2 syntax for consistency with the rest of the API. + [nodoc] DOMString? regexFilter; + + // Substitution pattern for the response header. `regexFilter` must be + // specified for this to be valid. Takes precedence over `value` and + // `operation` if specified and valid. + [nodoc] DOMString? regexSubstitution; + + // Options for the regex filter. If not specified, all options will be + // default. + [nodoc] HeaderRegexOptions? regexOptions; }; [noinline_doc] diff --git a/tools/under-control/src/gin/v8_initializer.cc b/tools/under-control/src/gin/v8_initializer.cc index d08f79157..850b941be 100755 --- a/tools/under-control/src/gin/v8_initializer.cc +++ b/tools/under-control/src/gin/v8_initializer.cc @@ -271,6 +271,10 @@ void SetFlags(IsolateHolder::ScriptMode mode, features::kV8ExperimentalRegexpEngine, "--enable-experimental-regexp-engine-on-excessive-backtracks", "--no-enable-experimental-regexp-engine-on-excessive-backtracks"); + SetV8FlagsIfOverridden( + features::kV8ExternalMemoryAccountedInGlobalLimit, + "--enable-external-memory-accounted-in-global-limit", + "--no-enable-external-memory-accounted-in-global-limit"); SetV8FlagsIfOverridden(features::kV8TurboFastApiCalls, "--turbo-fast-api-calls", "--no-turbo-fast-api-calls"); SetV8FlagsIfOverridden(features::kV8MegaDomIC, "--mega-dom-ic", @@ -283,17 +287,19 @@ void SetFlags(IsolateHolder::ScriptMode mode, SetV8FlagsFormatted("--memory-reducer-gc-count=%i", features::kV8MemoryReducerGCCount.Get()); } + SetV8FlagsIfOverridden(features::kV8IncrementalMarkingStartUserVisible, + "--incremental-marking-start-user-visible", + "--no-incremental-marking-start-user-visible"); SetV8FlagsIfOverridden(features::kV8IdleGcOnContextDisposal, "--idle-gc-on-context-disposal", "--no-idle-gc-on-context-disposal"); - SetV8FlagsIfOverridden(features::kV8GCOptimizeSweepForMutator, - "--cppheap-optimize-sweep-for-mutator", - "--no-cppheap-optimize-sweep-for-mutator"); SetV8FlagsIfOverridden(features::kV8MinorMS, "--minor-ms", "--no-minor-ms"); if (base::FeatureList::IsEnabled(features::kV8ScavengerHigherCapacity)) { SetV8FlagsFormatted("--scavenger-max-new-space-capacity-mb=%i", features::kV8ScavengerMaxCapacity.Get()); } + SetV8FlagsIfOverridden(features::kV8SeparateGCPhases, "--separate-gc-phases", + "--no-separate-gc-phases"); SetV8FlagsIfOverridden(features::kV8Sparkplug, "--sparkplug", "--no-sparkplug"); SetV8FlagsIfOverridden(features::kV8Turbofan, "--turbofan", "--no-turbofan"); diff --git a/tools/under-control/src/services/network/network_context.cc b/tools/under-control/src/services/network/network_context.cc index ec0d23869..502cd4ac8 100755 --- a/tools/under-control/src/services/network/network_context.cc +++ b/tools/under-control/src/services/network/network_context.cc @@ -44,8 +44,9 @@ #include "build/chromecast_buildflags.h" #include "build/chromeos_buildflags.h" #include "components/cookie_config/cookie_store_util.h" -#include "components/domain_reliability/features.h" #include "components/domain_reliability/monitor.h" +#include "components/ip_protection/common/ip_protection_config_cache_impl.h" +#include "components/ip_protection/common/ip_protection_config_getter_mojo_impl.h" #include "components/network_session_configurator/browser/network_session_configurator.h" #include "components/network_session_configurator/common/network_switches.h" #include "components/os_crypt/async/common/encryptor.h" @@ -104,10 +105,7 @@ #include "services/network/http_auth_cache_copier.h" #include "services/network/http_server_properties_pref_delegate.h" #include "services/network/ignore_errors_cert_verifier.h" -#include "services/network/ip_protection/ip_protection_config_cache_impl.h" -#include "services/network/ip_protection/ip_protection_config_getter_mojo_impl.h" #include "services/network/ip_protection/ip_protection_proxy_delegate.h" -#include "services/network/ip_protection/ip_protection_token_cache_manager_impl.h" #include "services/network/is_browser_initiated.h" #include "services/network/net_log_exporter.h" #include "services/network/network_service.h" @@ -2533,14 +2531,16 @@ URLRequestContextOwner NetworkContext::MakeURLRequestContext( // custom proxy configs, or IpProtection, using the proxy allowlist. // TODO(https://crbug.com/40947771): Once the WebView traffic experiment is // done, we should only create an IpProtectionProxyDelegate when - // `params_->ip_protection_config_getter` is set (to avoid creating proxy - // delegates for network contexts that don't participate in IP Protection, or - // for any network context when the IP Protection feature is disabled). + // `params_->ip_protection_config_getter` is set (to avoid creating + // proxynetwork_conte delegates for network contexts that don't participate in + // IP Protection, or for any network context when the IP Protection feature is + // disabled). auto* nspal = network_service_->masked_domain_list_manager(); if (!params_->initial_custom_proxy_config && nspal->IsEnabled()) { - auto ipp_config_cache = std::make_unique( - std::make_unique( - std::move(params_->ip_protection_config_getter))); + auto ipp_config_cache = + std::make_unique( + std::make_unique( + std::move(params_->ip_protection_config_getter))); std::unique_ptr proxy_delegate = std::make_unique( nspal, std::move(ipp_config_cache), params_->enable_ip_protection); @@ -2838,12 +2838,12 @@ URLRequestContextOwner NetworkContext::MakeURLRequestContext( // trigger another URLRequest are not set to respect NetworkAnonymizationKeys, // the URLRequests that they create might not have a NAK, so only set the // corresponding value in the URLRequestContext to true at the URLRequest - // layer if all those features are set to respect NAK. + // layer if all those features are set to respect NAK. The Domain Reliability + // feature, which is partitioned by NIK instead of NAK, triggers creation of + // URLRequests as well, so also check `net::HttpCache::IsSplitCacheEnabled()`. if (require_network_anonymization_key_ && net::NetworkAnonymizationKey::IsPartitioningEnabled() && - base::FeatureList::IsEnabled( - domain_reliability::features:: - kPartitionDomainReliabilityByNetworkIsolationKey)) { + net::HttpCache::IsSplitCacheEnabled()) { builder.set_require_network_anonymization_key(true); } @@ -3256,12 +3256,24 @@ void NetworkContext::RevokeNetworkForNonces( } } +void NetworkContext::ClearNonces( + const std::vector& nonces) { + for (const auto& nonce : nonces) { + network_revocation_nonces_.erase(nonce); + network_revocation_exemptions_.erase(nonce); + } +} + void NetworkContext::ExemptUrlFromNetworkRevocationForNonce( const GURL& exempted_url, const base::UnguessableToken& nonce, ExemptUrlFromNetworkRevocationForNonceCallback callback) { GURL url_without_filename = exempted_url.GetWithoutFilename(); - network_revocation_exemptions_[nonce].insert(url_without_filename); + + if (url_without_filename.is_valid()) { + network_revocation_exemptions_[nonce].insert(url_without_filename); + } + std::move(callback).Run(); } diff --git a/tools/under-control/src/testing/variations/fieldtrial_testing_config.json b/tools/under-control/src/testing/variations/fieldtrial_testing_config.json index c1170f27a..dc5d7c79f 100755 --- a/tools/under-control/src/testing/variations/fieldtrial_testing_config.json +++ b/tools/under-control/src/testing/variations/fieldtrial_testing_config.json @@ -344,6 +344,21 @@ ] } ], + "AndroidAutofillPrefillRequestsForChangePassword": [ + { + "platforms": [ + "android_webview" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "AndroidAutofillPrefillRequestsForChangePassword" + ] + } + ] + } + ], "AndroidBackPressRefactor": [ { "platforms": [ @@ -398,7 +413,9 @@ "AndroidBrowserControlsInViz" ], "disable_features": [ - "AndroidBcivWithSuppression" + "AndroidBcivPhoneOnly", + "AndroidBcivWithSuppression", + "AndroidBcivZeroBrowserFrames" ] } ] @@ -442,6 +459,21 @@ ] } ], + "AndroidHubSearch": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "AndroidHubSearch" + ] + } + ] + } + ], "AndroidLowLatencyCanvas": [ { "platforms": [ @@ -530,6 +562,21 @@ ] } ], + "AndroidPdfInline": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "AndroidOpenPdfInline" + ] + } + ] + } + ], "AndroidSandboxRendererProcessPolicy": [ { "platforms": [ @@ -1086,24 +1133,6 @@ ] } ], - "ArcVmMemorySize": [ - { - "platforms": [ - "chromeos" - ], - "experiments": [ - { - "name": "EnabledVmMemSize-500_20231031", - "params": { - "shift_mib": "-500" - }, - "enable_features": [ - "ArcVmMemorySize" - ] - } - ] - } - ], "ArcVmS2Idle": [ { "platforms": [ @@ -1130,12 +1159,14 @@ "name": "VirtualSwapEnabled_25PercentVmSize_10SecondSwapInterval", "params": { "guest_reclaim_enabled": "true", + "ram_percentage": "75", "size_percentage": "25", "virtual_swap_enabled": "true", "virtual_swap_interval_ms": "10000" }, "enable_features": [ - "ArcGuestZram" + "ArcGuestZram", + "ArcVmMemorySize" ] } ] @@ -1272,71 +1303,6 @@ ] } ], - "AttributionReportDeliveryRetryDelays": [ - { - "platforms": [ - "android", - "chromeos", - "chromeos_lacros", - "fuchsia", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled_CurrentDelay", - "params": { - "first_retry_delay": "5m", - "second_retry_delay": "15m" - }, - "enable_features": [ - "AttributionReportDeliveryRetryDelays" - ] - }, - { - "name": "Enabled_SmallDelay", - "params": { - "first_retry_delay": "2m", - "second_retry_delay": "10m" - }, - "enable_features": [ - "AttributionReportDeliveryRetryDelays" - ] - }, - { - "name": "Enabled_MediumDelay", - "params": { - "first_retry_delay": "10m", - "second_retry_delay": "1h" - }, - "enable_features": [ - "AttributionReportDeliveryRetryDelays" - ] - }, - { - "name": "Enabled_LargeDelay", - "params": { - "first_retry_delay": "15m", - "second_retry_delay": "6h" - }, - "enable_features": [ - "AttributionReportDeliveryRetryDelays" - ] - }, - { - "name": "Enabled_XLargeDelay", - "params": { - "first_retry_delay": "20m", - "second_retry_delay": "24h" - }, - "enable_features": [ - "AttributionReportDeliveryRetryDelays" - ] - } - ] - } - ], "AudioFocusEnforcementStudy": [ { "platforms": [ @@ -1592,21 +1558,6 @@ ] } ], - "AutofillContentEditableChangeEvents": [ - { - "platforms": [ - "ios" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "AutofillContentEditableChangeEvents" - ] - } - ] - } - ], "AutofillCreditCardUserPerceptionSurvey": [ { "platforms": [ @@ -1630,7 +1581,7 @@ ] } ], - "AutofillDontPrefixMatchCreditCardNumbersOrCvcs": [ + "AutofillDecoupleAutofillCountFromCache": [ { "platforms": [ "android", @@ -1645,7 +1596,7 @@ { "name": "Enabled", "enable_features": [ - "AutofillDontPrefixMatchCreditCardNumbersOrCvcs" + "AutofillDecoupleAutofillCountFromCache" ] } ] @@ -1989,6 +1940,26 @@ ] } ], + "AutofillEnableVcnGrayOutForMerchantOptOut": [ + { + "platforms": [ + "android", + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "AutofillEnableVcnGrayOutForMerchantOptOut" + ] + } + ] + } + ], "AutofillEnableVerveCardSupport": [ { "platforms": [ @@ -2068,6 +2039,50 @@ ] } ], + "AutofillFixFormTracking": [ + { + "platforms": [ + "android", + "android_webview", + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "AutofillFixFormTracking" + ] + } + ] + } + ], + "AutofillFixValueSemantics": [ + { + "platforms": [ + "android", + "android_webview", + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "AutofillFixCurrentValueInImport", + "AutofillFixInitialValueOfSelect", + "AutofillFixValueSemantics" + ] + } + ] + } + ], "AutofillForUnclassifiedFieldsAvailable": [ { "platforms": [ @@ -2191,6 +2206,27 @@ ] } ], + "AutofillImportFromAutocompleteUnrecognized": [ + { + "platforms": [ + "android", + "chromeos", + "chromeos_lacros", + "ios", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "AutofillImportFromAutocompleteUnrecognized" + ] + } + ] + } + ], "AutofillImproveSubmissionDetection": [ { "platforms": [ @@ -2204,9 +2240,8 @@ ], "experiments": [ { - "name": "Enabled_UnifySubmissionAndUseDomNodeIds", + "name": "Enabled_UnifySubmission", "enable_features": [ - "AutofillReplaceCachedWebElementsByRendererIds", "AutofillUnifyAndFixFormTracking" ] } @@ -2250,6 +2285,27 @@ ] } ], + "AutofillLogDeduplicationMetricsFollowup": [ + { + "platforms": [ + "android", + "chromeos", + "chromeos_lacros", + "ios", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "AutofillLogDeduplicationMetricsFollowup" + ] + } + ] + } + ], "AutofillLogUKMEventsWithSampleRate": [ { "platforms": [ @@ -2337,6 +2393,28 @@ ] } ], + "AutofillParseEmailLabelAndPlaceholder": [ + { + "platforms": [ + "android", + "android_webview", + "chromeos", + "chromeos_lacros", + "ios", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "AutofillParseEmailLabelAndPlaceholder" + ] + } + ] + } + ], "AutofillPasswordUserPerceptionSurvey": [ { "platforms": [ @@ -2374,9 +2452,8 @@ ], "experiments": [ { - "name": "Enabled_All", + "name": "Enabled_TrunkTypes_CountryCode", "enable_features": [ - "AutofillConsiderPhoneNumberSeparatorsValidLabels", "AutofillEnableSupportForPhoneNumberTrunkTypes", "AutofillInferCountryCallingCode", "AutofillPreferParsedPhoneNumber" @@ -2606,7 +2683,7 @@ ] } ], - "AutofillUploadCardRequestTimeout": [ + "AutofillUnmaskCardRequestTimeout": [ { "platforms": [ "android", @@ -2621,17 +2698,16 @@ { "name": "Enabled", "enable_features": [ - "AutofillUploadCardRequestTimeout" + "AutofillUnmaskCardRequestTimeout" ] } ] } ], - "AutofillUploadVotesForFieldsWithEmail": [ + "AutofillUploadCardRequestTimeout": [ { "platforms": [ "android", - "android_webview", "chromeos", "chromeos_lacros", "ios", @@ -2641,21 +2717,42 @@ ], "experiments": [ { - "name": "Enabled", + "name": "Enabled_6point5seconds", + "params": { + "autofill_upload_card_request_timeout_milliseconds": "6500" + }, "enable_features": [ - "AutofillUploadVotesForFieldsWithEmail" + "AutofillUploadCardRequestTimeout" + ] + }, + { + "name": "Enabled_7seconds", + "params": { + "autofill_upload_card_request_timeout_milliseconds": "7000" + }, + "enable_features": [ + "AutofillUploadCardRequestTimeout" + ] + }, + { + "name": "Enabled_9seconds", + "params": { + "autofill_upload_card_request_timeout_milliseconds": "9000" + }, + "enable_features": [ + "AutofillUploadCardRequestTimeout" ] } ] } ], - "AutofillUpstream": [ + "AutofillUploadVotesForFieldsWithEmail": [ { "platforms": [ "android", + "android_webview", "chromeos", "chromeos_lacros", - "fuchsia", "ios", "linux", "mac", @@ -2663,7 +2760,29 @@ ], "experiments": [ { - "name": "Enabled_20220124", + "name": "Enabled", + "enable_features": [ + "AutofillUploadVotesForFieldsWithEmail" + ] + } + ] + } + ], + "AutofillUpstream": [ + { + "platforms": [ + "android", + "chromeos", + "chromeos_lacros", + "fuchsia", + "ios", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled_20220124", "enable_features": [ "AutofillUpstream" ] @@ -2706,7 +2825,28 @@ ], "experiments": [ { - "name": "Enabled", + "name": "Enabled_5seconds", + "params": { + "autofill_vcn_enroll_request_timeout_milliseconds": "5000" + }, + "enable_features": [ + "AutofillVcnEnrollRequestTimeout" + ] + }, + { + "name": "Enabled_7point5seconds", + "params": { + "autofill_vcn_enroll_request_timeout_milliseconds": "7500" + }, + "enable_features": [ + "AutofillVcnEnrollRequestTimeout" + ] + }, + { + "name": "Enabled_10seconds", + "params": { + "autofill_vcn_enroll_request_timeout_milliseconds": "10000" + }, "enable_features": [ "AutofillVcnEnrollRequestTimeout" ] @@ -3103,6 +3243,24 @@ ] } ], + "BackgroundTabLoadingFromPerformanceManager": [ + { + "platforms": [ + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "BackgroundTabLoadingFromPerformanceManager" + ] + } + ] + } + ], "BatchNativeEventsInMessagePumpEpoll": [ { "platforms": [ @@ -3623,20 +3781,20 @@ ] } ], - "CPUInterventionEvaluationLogging": [ + "CPSS-V3": [ { "platforms": [ + "android", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" ], "experiments": [ { - "name": "Enabled_20240215", + "name": "Enabled", "enable_features": [ - "CPUInterventionEvaluationLogging" + "PermissionPredictionsV3" ] } ] @@ -3883,6 +4041,24 @@ ] } ], + "CastCertificateRevocation": [ + { + "platforms": [ + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "CastCertificateRevocation" + ] + } + ] + } + ], "CastMirroringPlayoutDelayChromeOS": [ { "platforms": [ @@ -3921,6 +4097,21 @@ ] } ], + "CastStreamingWinHardwareH264": [ + { + "platforms": [ + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "CastStreamingWinHardwareH264" + ] + } + ] + } + ], "CatanCombinedHoldback23H2": [ { "platforms": [ @@ -4080,6 +4271,31 @@ ] } ], + "ChangeDiskCacheSize": [ + { + "platforms": [ + "android", + "android_webview", + "chromeos", + "chromeos_lacros", + "ios", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "params": { + "percent_relative_size": "400" + }, + "enable_features": [ + "ChangeDiskCacheSize" + ] + } + ] + } + ], "ChangeFrameRateOfLoadingTabAnimation": [ { "platforms": [ @@ -4161,6 +4377,24 @@ ] } ], + "ChromeHomeFrequency": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled_4H", + "params": { + "start_surface_return_time_on_tablet_seconds": "14400" + }, + "enable_features": [ + "StartSurfaceReturnTime" + ] + } + ] + } + ], "ChromeLabs": [ { "platforms": [ @@ -4893,6 +5127,21 @@ ] } ], + "ChromeOSOobeSplitModifierKeyboard": [ + { + "platforms": [ + "chromeos" + ], + "experiments": [ + { + "name": "Disabled", + "disable_features": [ + "OobeSplitModifierKeyboardInfo" + ] + } + ] + } + ], "ChromeOSPrintingIppUsb": [ { "platforms": [ @@ -5071,6 +5320,30 @@ ] } ], + "ChromnientImageContextMenuActions": [ + { + "platforms": [ + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "CopyAndSaveAsImageEnabled", + "params": { + "enable-copy-as-image": "true", + "enable-save-as-image": "true", + "text-received-timeout": "2000" + }, + "enable_features": [ + "LensOverlayImageContextMenuActions" + ] + } + ] + } + ], "ChromnientPostLaunch": [ { "platforms": [ @@ -5094,6 +5367,25 @@ ] } ], + "ChromnientPostLaunchTranslate": [ + { + "platforms": [ + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "TranslateButtonEnabled", + "enable_features": [ + "LensOverlayTranslateButton" + ] + } + ] + } + ], "ClankFeedSyntheticCapabilities": [ { "platforms": [ @@ -5124,6 +5416,44 @@ ] } ], + "ClankMostVisitedTilesNewScoring": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled_DecayStairCase_Cap10", + "params": { + "daily_visit_count_cap": "10", + "recency_factor": "decay_staircase" + }, + "enable_features": [ + "MostVisitedTilesNewScoring" + ] + }, + { + "name": "Disabled_RepeatableQueries", + "disable_features": [ + "OrganicRepeatableQueries" + ] + }, + { + "name": "Enabled_DecayStairCase_Cap10_Disabled_RepeatableQueries", + "params": { + "daily_visit_count_cap": "10", + "recency_factor": "decay_staircase" + }, + "enable_features": [ + "MostVisitedTilesNewScoring" + ], + "disable_features": [ + "OrganicRepeatableQueries" + ] + } + ] + } + ], "ClankMostVisitedTilesReselect": [ { "platforms": [ @@ -5233,11 +5563,10 @@ ] } ], - "ClassifyUrlOnProcessResponseEventAndroidAndChromeOS": [ + "ClassifyUrlOnProcessResponseEventAndroid": [ { "platforms": [ - "android", - "chromeos" + "android" ], "experiments": [ { @@ -5304,7 +5633,7 @@ ] } ], - "ClientSideDetectionKeyboardPointerLockRequest": [ + "ClientSideDetectionRetryLimit": [ { "platforms": [ "android", @@ -5316,14 +5645,17 @@ "experiments": [ { "name": "Enabled", + "params": { + "RetryTimeMax": "15" + }, "enable_features": [ - "ClientSideDetectionKeyboardPointerLockRequest" + "ClientSideDetectionRetryLimit" ] } ] } ], - "ClientSideDetectionNotificationPrompt": [ + "ClientSideDetectionSamplePing": [ { "platforms": [ "android", @@ -5336,35 +5668,31 @@ { "name": "Enabled", "enable_features": [ - "ClientSideDetectionNotificationPrompt" + "ClientSideDetectionSamplePing" ] } ] } ], - "ClientSideDetectionRetryLimit": [ + "ClipboardDeemphasisAndroid": [ { "platforms": [ - "android", - "chromeos", - "linux", - "mac", - "windows" + "android" ], "experiments": [ { - "name": "Enabled", + "name": "MaxAge180", "params": { - "RetryTimeMax": "15" + "UIClipboardMaximumAge": "180" }, "enable_features": [ - "ClientSideDetectionRetryLimit" + "ClipboardMaximumAge" ] } ] } ], - "ClientSideDetectionSamplePing": [ + "CloneDevToolsConnectionOnlyIfRequested": [ { "platforms": [ "android", @@ -5377,17 +5705,21 @@ { "name": "Enabled", "enable_features": [ - "ClientSideDetectionSamplePing" + "CloneDevToolsConnectionOnlyIfRequested" ] } ] } ], - "ClientSideDetectionVibrationApi": [ + "CoalesceSelectionchangeEvent": [ { "platforms": [ "android", + "android_weblayer", + "android_webview", "chromeos", + "chromeos_lacros", + "fuchsia", "linux", "mac", "windows" @@ -5396,83 +5728,42 @@ { "name": "Enabled", "enable_features": [ - "ClientSideDetectionVibrationApi" + "CoalesceSelectionchangeEvent" ] } ] } ], - "ClipboardDeemphasisAndroid": [ + "CodeBasedRBD": [ { "platforms": [ - "android" + "linux", + "mac", + "windows" ], "experiments": [ { - "name": "MaxAge180", + "name": "Enabled_20230420", "params": { - "UIClipboardMaximumAge": "180" + "code-based-rbd": "true" }, "enable_features": [ - "ClipboardMaximumAge" + "CodeBasedRBD" ] } ] } ], - "CoalesceSelectionchangeEvent": [ + "CollectAndroidFrameTimelineMetricsStudy": [ { "platforms": [ - "android", - "android_weblayer", - "android_webview", - "chromeos", - "chromeos_lacros", - "fuchsia", - "linux", - "mac", - "windows" + "android" ], "experiments": [ { - "name": "Enabled", + "name": "Enabled_20230926", "enable_features": [ - "CoalesceSelectionchangeEvent" - ] - } - ] - } - ], - "CodeBasedRBD": [ - { - "platforms": [ - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled_20230420", - "params": { - "code-based-rbd": "true" - }, - "enable_features": [ - "CodeBasedRBD" - ] - } - ] - } - ], - "CollectAndroidFrameTimelineMetricsStudy": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "Enabled_20230926", - "enable_features": [ - "CollectAndroidFrameTimelineMetrics" + "CollectAndroidFrameTimelineMetrics" ] } ] @@ -5791,6 +6082,69 @@ ] } ], + "ComposeAXSnapshot": [ + { + "platforms": [ + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "ComposeAXSnapshot" + ] + } + ] + } + ], + "ComposeAcceptanceSurvey": [ + { + "platforms": [ + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "params": { + "prob": "0.1", + "survey_cycle_length": "7", + "survey_start_date_ms": "1729580400000", + "trigger_id": "44m1DgehL0ugnJ3q1cK0Qih71MRQ" + }, + "enable_features": [ + "HappinessTrackingSurveysForComposeAcceptance" + ] + } + ] + } + ], + "ComposeCloseSurvey": [ + { + "platforms": [ + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "params": { + "prob": "0.1", + "survey_cycle_length": "7", + "survey_start_date_ms": "1729580400000", + "trigger_id": "mT2d9fiNR0ugnJ3q1cK0SdAewrT2" + }, + "enable_features": [ + "HappinessTrackingSurveysForComposeClose" + ] + } + ] + } + ], "ComposeModelQualityLogging": [ { "platforms": [ @@ -5875,28 +6229,10 @@ ] } ], - "ComposeUiRefinement": [ - { - "platforms": [ - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "ComposeUiRefinement" - ] - } - ] - } - ], - "CompressionDictionaryTransport": [ + "CompressionDictionaryPreload": [ { "platforms": [ "android", - "android_webview", "chromeos", "chromeos_lacros", "fuchsia", @@ -5906,29 +6242,32 @@ ], "experiments": [ { - "name": "Enabled", - "enable_features": [ - "CompressionDictionaryTransport" + "name": "EnabledPreloadConditionalUse", + "disable_features": [ + "AutocompleteDictionaryPreload", + "PreloadedDictionaryConditionalUse" ] } ] } ], - "CompressionDictionaryTransportOverHttp1": [ + "CompressionDictionaryTransportRequireKnownRootCert": [ { "platforms": [ "android", + "android_webview", "chromeos", "chromeos_lacros", + "fuchsia", "linux", "mac", "windows" ], "experiments": [ { - "name": "Enabled", - "enable_features": [ - "CompressionDictionaryTransportOverHttp1" + "name": "Disable", + "disable_features": [ + "CompressionDictionaryTransportRequireKnownRootCert" ] } ] @@ -6785,6 +7124,21 @@ ] } ], + "CrOSLateBootSuspendAwareSwapZramWriteback": [ + { + "platforms": [ + "chromeos" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "CrOSLateBootSuspendAwareSwapZramWriteback" + ] + } + ] + } + ], "CrOSLateBootSwapZramCompAlgorithm": [ { "platforms": [ @@ -6961,6 +7315,21 @@ ] } ], + "CrossDeviceTabPaneAndroid": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "CrossDeviceTabPaneAndroid" + ] + } + ] + } + ], "CrostiniTerminaDlcForceOta": [ { "platforms": [ @@ -7123,27 +7492,8 @@ ], "experiments": [ { - "name": "BothEnabled", - "enable_features": [ - "CoalesceStorageAreaCommits", - "DomStorageSmartFlushing" - ] - }, - { - "name": "CoalescingEnabled", - "enable_features": [ - "CoalesceStorageAreaCommits" - ], - "disable_features": [ - "DomStorageSmartFlushing" - ] - }, - { - "name": "CheckpointingEnabled", + "name": "Enabled_20240904", "enable_features": [ - "DomStorageSmartFlushing" - ], - "disable_features": [ "CoalesceStorageAreaCommits" ] } @@ -7165,23 +7515,6 @@ ] } ], - "DTCKeyUploadedBySharedAPIEnabled": [ - { - "platforms": [ - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "DTCKeyUploadedBySharedAPIEnabled" - ] - } - ] - } - ], "DXGIWaitableSwapChain": [ { "platforms": [ @@ -7256,6 +7589,25 @@ ] } ], + "DataMaskingReportingAPI": [ + { + "platforms": [ + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "ApiEnterpriseReportingPrivateReportDataMaskingEvent" + ] + } + ] + } + ], "DbscPhase1aStudy": [ { "platforms": [ @@ -7265,7 +7617,8 @@ { "name": "Enabled", "params": { - "dice-support": "enabled" + "dice-support": "enabled", + "exclusive-registration-path": "" }, "enable_features": [ "EnableBoundSessionCredentials" @@ -7421,7 +7774,7 @@ { "name": "V2Enabled3V2_20240723", "params": { - "group_name": "enabled-v2-arm-3v2", + "group_name": "enabled-v2-arm-3v2.1", "max_prompt_count": "5", "reprompt_duration": "21d", "reprompt_duration_multiplier": "1", @@ -7504,6 +7857,21 @@ ] } ], + "DeferConciergeStartup": [ + { + "platforms": [ + "chromeos" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "DeferConciergeStartup" + ] + } + ] + } + ], "DeferRendererTasksAfterInput": [ { "platforms": [ @@ -7614,6 +7982,21 @@ ] } ], + "DelegatedCompositingOnWindows": [ + { + "platforms": [ + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "DelegatedCompositing" + ] + } + ] + } + ], "DeprecateUnload": [ { "platforms": [ @@ -7641,6 +8024,21 @@ ] } ], + "DescribeIt": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled_20240924", + "enable_features": [ + "ReadAloudServerExperiments" + ] + } + ] + } + ], "DeskBarWindowOcclusionOptimization": [ { "platforms": [ @@ -7719,7 +8117,7 @@ "link_capturing_state": "on_by_default" }, "enable_features": [ - "DesktopPWAsLinkCapturing" + "PwaNavigationCapturing" ] }, { @@ -7729,7 +8127,7 @@ "link_capturing_state": "off_by_default" }, "enable_features": [ - "DesktopPWAsLinkCapturing" + "PwaNavigationCapturing" ] } ] @@ -8105,54 +8503,100 @@ ] } ], - "DevToolsTabTarget": [ + "DevToolsExplainThisResourceDogfood": [ { "platforms": [ + "chromeos", + "chromeos_lacros", "linux", "mac", - "windows", - "chromeos", - "chromeos_lacros" + "windows" ], "experiments": [ { - "name": "Enabled", + "name": "Enabled_Dogfood", + "params": { + "aida_model_id": "codey_gemit_mpp_streaming", + "aida_temperature": "0" + }, "enable_features": [ - "DevToolsTabTarget" - ] - }, - { - "name": "Control", - "disable_features": [ - "DevToolsTabTarget" + "DevToolsExplainThisResourceDogfood" ] } ] } ], - "DeviceAuthenticatorAndroidx": [ + "DevToolsFreestylerDogfood": [ { "platforms": [ - "android" + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" ], "experiments": [ { - "name": "Enabled", + "name": "Enabled_Dogfood", + "params": { + "aida_model_id": "codey_gemit_mpp_streaming", + "aida_temperature": "0" + }, "enable_features": [ - "DeviceAuthenticatorAndroidx" + "DevToolsFreestylerDogfood" ] } ] } ], - "DexFixer": [ + "DevToolsTabTarget": [ { "platforms": [ - "android" - ], - "experiments": [ - { - "name": "Enabled", + "linux", + "mac", + "windows", + "chromeos", + "chromeos_lacros" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "DevToolsTabTarget" + ] + }, + { + "name": "Control", + "disable_features": [ + "DevToolsTabTarget" + ] + } + ] + } + ], + "DeviceAuthenticatorAndroidx": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "DeviceAuthenticatorAndroidx" + ] + } + ] + } + ], + "DexFixer": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", "enable_features": [ "DexFixer" ] @@ -8191,6 +8635,23 @@ ] } ], + "DirectCompositorThreadIpc": [ + { + "platforms": [ + "android", + "android_webview", + "linux" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "DirectCompositorThreadIpc" + ] + } + ] + } + ], "DisableBlackHoleOnNoNewNetwork": [ { "platforms": [ @@ -8240,6 +8701,21 @@ ] } ], + "DisableTrimmingWhileSuspended": [ + { + "platforms": [ + "chromeos" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "DisableTrimmingWhileSuspended" + ] + } + ] + } + ], "DisableUrgentPageDiscarding": [ { "platforms": [ @@ -8339,7 +8815,7 @@ "name": "Enabled", "params": { "history-cluster-behavior": "1", - "merchant-wide-behavior": "0", + "merchant-wide-behavior": "2", "non-merchant-wide-behavior": "0" }, "enable_features": [ @@ -8781,36 +9257,6 @@ ] } ], - "EnableADPFRendererMain": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "EnableADPFRendererMain" - ] - } - ] - } - ], - "EnableADPFScrollBoost": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "Enabled_20230530", - "enable_features": [ - "EnableADPFScrollBoost" - ] - } - ] - } - ], "EnableBackForwardCacheForOngoingSubframeNavigation": [ { "platforms": [ @@ -8985,21 +9431,6 @@ ] } ], - "EnableFuzzyMatchAcrossLauncher": [ - { - "platforms": [ - "chromeos" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "LauncherFuzzyMatchAcrossProviders" - ] - } - ] - } - ], "EnableImmediateDrawDuringScrollInteraction": [ { "platforms": [ @@ -9083,7 +9514,7 @@ ] } ], - "EnablePixPayflow": [ + "EnablePixPayFlow": [ { "platforms": [ "android" @@ -9093,9 +9524,7 @@ "name": "Enabled", "enable_features": [ "AutofillEnableSyncingOfPixBankAccounts", - "EnablePixDetection", "EnablePixDetectionOnCopyEvent", - "EnablePixDetectionOnDomContentLoaded", "EnablePixPayments" ] } @@ -9137,6 +9566,21 @@ ] } ], + "EnableReportingFromUnmanagedDevices": [ + { + "platforms": [ + "chromeos" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "EnableReportingFromUnmanagedDevices" + ] + } + ] + } + ], "EnableSessionSerializationOptimizations": [ { "platforms": [ @@ -9265,6 +9709,28 @@ ] } ], + "EscapeLtGtInAttributes": [ + { + "platforms": [ + "android", + "android_webview", + "chromeos", + "chromeos_lacros", + "ios", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "EscapeLtGtInAttributes" + ] + } + ] + } + ], "EstablishGpuChannelChanges": [ { "platforms": [ @@ -9441,25 +9907,13 @@ ], "experiments": [ { - "name": "ExpandCompositedCullRect" - } - ] - } - ], - "ExperimentalFeaturesVisibilityDesktop": [ - { - "platforms": [ - "chromeos", - "chromeos_lacros", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", + "name": "ExpandCompositedCullRect", + "params": { + "dpr_coef": "1", + "small_scroller_opt": "true" + }, "enable_features": [ - "TabOrganizationSettingsVisibility" + "ExpandCompositedCullRect" ] } ] @@ -9485,49 +9939,50 @@ ] } ], - "ExtensionManifestV2Deprecation": [ + "ExtendedReportingRemovePrefDependency": [ { "platforms": [ + "android", "chromeos", "chromeos_lacros", + "fuchsia", + "ios", "linux", "mac", "windows" ], "experiments": [ { - "name": "Enabled_DisableMV2Extensions", + "name": "Enabled", "enable_features": [ - "ExtensionManifestV2Disabled" + "ExtendedReportingRemovePrefDependency" ] } ] } ], - "ExtensionParentalControlsOnLinuxMacWindows": [ + "ExtensionManifestV2Deprecation": [ { "platforms": [ + "chromeos", + "chromeos_lacros", "linux", "mac", "windows" ], "experiments": [ { - "name": "Enabled", + "name": "Enabled_DisableMV2Extensions", "enable_features": [ - "EnableExtensionsPermissionsForSupervisedUsersOnDesktop", - "EnableSupervisedUserSkipParentApprovalToInstallExtensions", - "UpdatedSupervisedUserExtensionApprovalStrings" + "ExtensionManifestV2Disabled" ] } ] } ], - "ExtensionSafetyHubNoPrivacyPracticesTrigger": [ + "ExtensionParentalControlsOnLinuxMacWindows": [ { "platforms": [ - "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -9536,7 +9991,9 @@ { "name": "Enabled", "enable_features": [ - "SafetyHubExtensionsNoPrivacyPracticesTrigger" + "EnableExtensionsPermissionsForSupervisedUsersOnDesktop", + "EnableSupervisedUserSkipParentApprovalToInstallExtensions", + "UpdatedSupervisedUserExtensionApprovalStrings" ] } ] @@ -9617,6 +10074,17 @@ "enable_features": [ "ExtremeLightweightUAFDetector" ] + }, + { + "name": "NonRendererProcesses", + "params": { + "quarantine_capacity_in_bytes": "1048576", + "sampling_frequency": "100", + "target_processes": "non_renderer" + }, + "enable_features": [ + "ExtremeLightweightUAFDetector" + ] } ] } @@ -9678,51 +10146,6 @@ ] } ], - "FastPairPWACompanion": [ - { - "platforms": [ - "chromeos" - ], - "experiments": [ - { - "name": "Enabled_20240711", - "params": { - "pwa-companion-app-id": "ckdjfcfapbgminighllemapmpdlpihia", - "pwa-companion-device-ids": "08A97F,5A36A5,6EDAF7,9ADB11,A7D7A0,C8E228,D87A3E,F2020E,F58DE7,30346C,7862CE,C193F7,05D40E,02FC97,AB442D,FB19ED,C55C79,2EE57B", - "pwa-companion-install-uri": "https://mypixelbuds.google.com/", - "pwa-companion-play-store-uri": "https://play.google.com/store/apps/details?id=com.google.android.apps.wearables.maestro.companion" - }, - "enable_features": [ - "FastPairPwaCompanion" - ] - }, - { - "name": "Enabled_20240711_Dogfood", - "params": { - "pwa-companion-app-id": "ckdjfcfapbgminighllemapmpdlpihia", - "pwa-companion-device-ids": "08A97F,5A36A5,6EDAF7,9ADB11,A7D7A0,C8E228,D87A3E,F2020E,F58DE7,30346C,7862CE,C193F7,05D40E,02FC97,AB442D,FB19ED,C55C79,2EE57B", - "pwa-companion-install-uri": "https://mypixelbuds.google.com/", - "pwa-companion-play-store-uri": "https://play.google.com/store/apps/details?id=com.google.android.apps.wearables.maestro.companion" - }, - "enable_features": [ - "FastPairPwaCompanion" - ] - }, - { - "name": "EnabledWithStagingLinks_Dogfood", - "params": { - "pwa-companion-app-id": "kncedjianpafagdchkiinagaaokkhpaa", - "pwa-companion-device-ids": "08A97F,5A36A5,6EDAF7,9ADB11,A7D7A0,C8E228,D87A3E,F2020E,F58DE7,30346C,7862CE,C193F7,05D40E,02FC97,AB442D,FB19ED,C55C79,2EE57B", - "pwa-companion-install-uri": "https://mypixelbuds-preprod.corp.google.com/", - "pwa-companion-play-store-uri": "https://play.google.com/store/apps/details?id=com.google.android.apps.wearables.maestro.companion" - }, - "enable_features": [ - "FastPairPwaCompanion" - ] - } - ] - } - ], "FasterSplitScreenSetup": [ { "platforms": [ @@ -9739,21 +10162,6 @@ ] } ], - "FeedContainment": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "FeedContainment" - ] - } - ] - } - ], "FeedLoadingPlaceholder": [ { "platforms": [ @@ -9861,7 +10269,7 @@ ] } ], - "FencedFramesEnableCrossOriginAutomaticBeacons": [ + "FencedFramesEnableCrossOriginEventReporting": [ { "platforms": [ "android", @@ -9875,13 +10283,13 @@ { "name": "Enabled", "enable_features": [ - "FencedFramesCrossOriginAutomaticBeacons" + "FencedFramesCrossOriginEventReportingUnlabeledTraffic" ] } ] } ], - "FencedFramesEnableCrossOriginEventReporting": [ + "FencedFramesEnableReportEventHeaderChanges": [ { "platforms": [ "android", @@ -9895,13 +10303,13 @@ { "name": "Enabled", "enable_features": [ - "FencedFramesCrossOriginEventReportingUnlabeledTraffic" + "FencedFramesReportEventHeaderChanges" ] } ] } ], - "FencedFramesEnableM120Features": [ + "FencedFramesEnableSrcPermissionsPolicy": [ { "platforms": [ "android", @@ -9915,13 +10323,13 @@ { "name": "Enabled", "enable_features": [ - "FencedFramesM120FeaturesPart2" + "FencedFramesSrcPermissionsPolicy" ] } ] } ], - "FencedFramesEnableReportEventHeaderChanges": [ + "FenderAutoPreconnectLcpOrigins": [ { "platforms": [ "android", @@ -9933,59 +10341,19 @@ ], "experiments": [ { - "name": "Enabled", + "name": "EnabledWithOne_20240214", + "params": { + "lcpp_preconnect_frequency_threshold": "0.5", + "lcpp_preconnect_max_origins": "1" + }, "enable_features": [ - "FencedFramesReportEventHeaderChanges" + "LCPPAutoPreconnectLcpOrigin" ] } ] } ], - "FencedFramesEnableSrcPermissionsPolicy": [ - { - "platforms": [ - "android", - "chromeos", - "chromeos_lacros", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "FencedFramesSrcPermissionsPolicy" - ] - } - ] - } - ], - "FenderAutoPreconnectLcpOrigins": [ - { - "platforms": [ - "android", - "chromeos", - "chromeos_lacros", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "EnabledWithOne_20240214", - "params": { - "lcpp_preconnect_frequency_threshold": "0.5", - "lcpp_preconnect_max_origins": "1" - }, - "enable_features": [ - "LCPPAutoPreconnectLcpOrigin" - ] - } - ] - } - ], - "FetchGaiaHashOnSignIn": [ + "FetchGaiaHashOnSignIn": [ { "platforms": [ "android" @@ -10068,7 +10436,6 @@ "EnableFingerprintingProtectionFilter" ], "disable_features": [ - "FingerprintingProtectionSetting", "FingerprintingProtectionUx" ] } @@ -10352,69 +10719,6 @@ ] } ], - "GenericFontSettingCache": [ - { - "platforms": [ - "android", - "chromeos", - "chromeos_lacros", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "GenericFontSettingCache" - ] - } - ] - } - ], - "GetMostChromeHats": [ - { - "platforms": [ - "chromeos", - "chromeos_lacros", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "params": { - "en_site_id": "GLvAVoj3X0ugnJ3q1cK0SRghzrsT", - "get-most-chrome-time": "15s", - "probability": "1" - }, - "enable_features": [ - "HappinessTrackingSurveysGetMostChrome" - ] - } - ] - } - ], - "GetTheMostOutOfChrome": [ - { - "platforms": [ - "chromeos", - "chromeos_lacros", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "GetTheMostOutOfChrome" - ] - } - ] - } - ], "GifRecording": [ { "platforms": [ @@ -10652,6 +10956,27 @@ ] } ], + "GroupedHistoryAllLocales": [ + { + "platforms": [ + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "params": { + "JourneysLocaleOrLanguageAllowlist": "*" + }, + "enable_features": [ + "Journeys" + ] + } + ] + } + ], "GwpAsanAndroid2024": [ { "platforms": [ @@ -10749,19 +11074,6 @@ } ], "HandleLocalNetworkPermission": [ - { - "platforms": [ - "mac" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "UseNetworkFrameworkForLocalDiscovery" - ] - } - ] - }, { "platforms": [ "chromeos", @@ -10773,7 +11085,8 @@ { "name": "Enabled", "enable_features": [ - "ShowCastPermissionRejectedError" + "ShowCastPermissionRejectedError", + "UseNetworkFrameworkForLocalDiscovery" ] } ] @@ -10852,8 +11165,8 @@ { "name": "Enabled", "params": { - "prob": "0.01", - "survey_cycle_length": "90", + "prob": "0.02", + "survey_cycle_length": "30", "survey_start_date_ms": "1721606400000", "trigger_id": "ZMEQmwKYE0jBnuKU19R0Uk7d5aG4" }, @@ -11235,35 +11548,6 @@ ] } ], - "HeapProfilingCentralControl": [ - { - "platforms": [ - "android", - "chromeos", - "chromeos_lacros", - "ios", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled_20240731", - "params": { - "gpu-process-params": "{\"is-supported\":true,\"sampling-rate-bytes\":5000000}", - "renderer-prob-pct": "10", - "renderer-process-params": "{\"is-supported\":true}", - "utility-prob-pct": "50", - "utility-process-params": "{\"is-supported\":true,\"sampling-rate-bytes\":1000000}" - }, - "enable_features": [ - "HeapProfilerCentralControl", - "HeapProfilerReporting" - ] - } - ] - } - ], "HeatmapPalmDetectionStudy": [ { "platforms": [ @@ -11322,6 +11606,13 @@ "experiments": [ { "name": "Enabled", + "params": { + "ContentVisibilityThreshold": "0.0", + "FilterHashes": "3962775614,4220142007,430397466", + "OmniboxScoped": "true", + "SearchPassageMinimumWordCount": "5", + "SearchQueryMinimumWordCount": "2" + }, "enable_features": [ "HistoryEmbeddings" ] @@ -11329,29 +11620,6 @@ ] } ], - "HitTestOpaqueness": [ - { - "platforms": [ - "android", - "android_weblayer", - "android_webview", - "chromeos", - "chromeos_lacros", - "fuchsia", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "HitTestOpaqueness" - ] - } - ] - } - ], "HlsBuiltinPlayer": [ { "platforms": [ @@ -11454,26 +11722,6 @@ ] } ], - "HttpsFirstModeIncognitoPhase1": [ - { - "platforms": [ - "android", - "chromeos", - "chromeos_lacros", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "HttpsFirstModeIncognito" - ] - } - ] - } - ], "HttpsFirstModeV2ForTypicallySecureUsers": [ { "platforms": [ @@ -11668,6 +11916,21 @@ ] } ], + "IOSCriteriaExperimentEnabled": [ + { + "platforms": [ + "ios" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "DefaultBrowserTriggerCriteriaExperiment" + ] + } + ] + } + ], "IOSDockingPromo": [ { "platforms": [ @@ -11743,6 +12006,21 @@ ] } ], + "IOSDownloadPDFExperience": [ + { + "platforms": [ + "ios" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "DownloadedPDFOpening" + ] + } + ] + } + ], "IOSFastApplicationWillTerminate": [ { "platforms": [ @@ -11852,7 +12130,7 @@ ] } ], - "IOSHomeMemoryImprovements": [ + "IOSHomeCustomization": [ { "platforms": [ "ios" @@ -11861,13 +12139,13 @@ { "name": "Enabled", "enable_features": [ - "HomeMemoryImprovements" + "HomeCustomization" ] } ] } ], - "IOSInactiveTabButtonRefactoring": [ + "IOSHomeMemoryImprovements": [ { "platforms": [ "ios" @@ -11876,37 +12154,37 @@ { "name": "Enabled", "enable_features": [ - "InactiveTabButtonRefactoring" + "HomeMemoryImprovements" ] } ] } ], - "IOSKeepsRenderProcessAlive": [ + "IOSInactiveTabButtonRefactoring": [ { "platforms": [ "ios" ], "experiments": [ { - "name": "Disabled", - "disable_features": [ - "KeepsRenderProcessAlive" + "name": "Enabled", + "enable_features": [ + "InactiveTabButtonRefactoring" ] } ] } ], - "IOSLensWebPageEarlyTransitionEnabled": [ + "IOSKeepsRenderProcessAlive": [ { "platforms": [ "ios" ], "experiments": [ { - "name": "Enabled", - "enable_features": [ - "LensWebPageEarlyTransitionEnabled" + "name": "Disabled", + "disable_features": [ + "KeepsRenderProcessAlive" ] } ] @@ -11979,6 +12257,21 @@ ] } ], + "IOSNewSyncOptInIllustration": [ + { + "platforms": [ + "ios" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "NewSyncOptInIllustration" + ] + } + ] + } + ], "IOSOverflowMenuCustomization": [ { "platforms": [ @@ -12048,23 +12341,22 @@ ] } ], - "IOSSaveToDrive": [ + "IOSProactivePasswordGenerationBottomSheet": [ { "platforms": [ "ios" ], "experiments": [ { - "name": "Enabled_20240523", + "name": "Enabled", "enable_features": [ - "IOSDownloadNoUIUpdateInBackground", - "IOSSaveToDrive" + "kIOSProactivePasswordGenerationBottomSheet" ] } ] } ], - "IOSSaveToPhotosImprovements": [ + "IOSQuickDelete": [ { "platforms": [ "ios" @@ -12073,28 +12365,29 @@ { "name": "Enabled", "enable_features": [ - "SaveToPhotosImprovements" + "kIOSQuickDelete" ] } ] } ], - "IOSSaveUsernameInUff": [ + "IOSSaveToDrive": [ { "platforms": [ "ios" ], "experiments": [ { - "name": "Enabled", + "name": "Enabled_20240523", "enable_features": [ - "IosSaveUsernameInUff" + "IOSDownloadNoUIUpdateInBackground", + "IOSSaveToDrive" ] } ] } ], - "IOSSharedHighlightingColorChange": [ + "IOSSaveToPhotosImprovements": [ { "platforms": [ "ios" @@ -12103,13 +12396,13 @@ { "name": "Enabled", "enable_features": [ - "IOSSharedHighlightingColorChange" + "SaveToPhotosImprovements" ] } ] } ], - "IOSSignInUff": [ + "IOSSharedHighlightingColorChange": [ { "platforms": [ "ios" @@ -12118,40 +12411,40 @@ { "name": "Enabled", "enable_features": [ - "IOSPasswordSignInUff" + "IOSSharedHighlightingColorChange" ] } ] } ], - "IOSStart4Hour": [ + "IOSSignInUff": [ { "platforms": [ "ios" ], "experiments": [ { - "name": "Enabled4Hour", - "params": { - "ReturnToStartSurfaceInactiveDurationInSeconds": "14400" - }, + "name": "Enabled", "enable_features": [ - "StartSurface" + "IOSPasswordSignInUff" ] } ] } ], - "IOSStickyAutofillAndPasswordInfobars": [ + "IOSStart4Hour": [ { "platforms": [ "ios" ], "experiments": [ { - "name": "Enabled", + "name": "Enabled4Hour", + "params": { + "ReturnToStartSurfaceInactiveDurationInSeconds": "14400" + }, "enable_features": [ - "AutofillStickyInfobarIos" + "StartSurface" ] } ] @@ -12188,7 +12481,7 @@ ] } ], - "IOSTabGroupInGridiPhone": [ + "IOSTabGroupIndicator": [ { "platforms": [ "ios" @@ -12197,7 +12490,7 @@ { "name": "Enabled", "enable_features": [ - "TabGroupsInGrid" + "TabGroupIndicator" ] } ] @@ -12251,6 +12544,33 @@ "enable_features": [ "IOSTipsNotifications" ] + }, + { + "name": "Dismiss_Limit", + "params": { + "tips_notifications_dismiss_limit": "4" + }, + "enable_features": [ + "IOSTipsNotifications" + ] + }, + { + "name": "Lens_First", + "params": { + "tips_notifications_order": "2" + }, + "enable_features": [ + "IOSTipsNotifications" + ] + }, + { + "name": "ESB_First", + "params": { + "tips_notifications_order": "3" + }, + "enable_features": [ + "IOSTipsNotifications" + ] } ] } @@ -12332,29 +12652,50 @@ ] } ], - "ImageDescriptionsAlternativeRouting": [ + "IdbPrioritizeForegroundClients": [ { "platforms": [ - "android", + "windows", + "mac", "chromeos", "chromeos_lacros", + "fuchsia", "linux", - "mac", - "windows" + "ios", + "android", + "android_weblayer", + "android_webview" ], "experiments": [ { "name": "Enabled", "enable_features": [ - "ImageDescriptionsAlternativeRouting" + "IdbPrioritizeForegroundClients" ] } ] } ], - "ImprovedSemanticsActivityIndicators": [ + "IdentityDiscAccountMenu": [ + { + "platforms": [ + "ios" + ], + "experiments": [ + { + "name": "IdentityDiscAccountMenu", + "enable_features": [ + "IdentityConfirmationSnackbar", + "IdentityDiscAccountMenu" + ] + } + ] + } + ], + "ImageDescriptionsAlternativeRouting": [ { "platforms": [ + "android", "chromeos", "chromeos_lacros", "linux", @@ -12365,13 +12706,13 @@ { "name": "Enabled", "enable_features": [ - "ImprovedSemanticsActivityIndicators" + "ImageDescriptionsAlternativeRouting" ] } ] } ], - "IncludeJSCallStackInExtensionApiRequestStudy": [ + "ImprovedSemanticsActivityIndicators": [ { "platforms": [ "chromeos", @@ -12384,7 +12725,7 @@ { "name": "Enabled", "enable_features": [ - "IncludeJSCallStackInExtensionApiRequest" + "ImprovedSemanticsActivityIndicators" ] } ] @@ -12441,6 +12782,21 @@ ] } ], + "IncreaseWindowsTextContrast": [ + { + "platforms": [ + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "IncreaseWindowsTextContrast" + ] + } + ] + } + ], "IncreasedCmdBufferParseSlice": [ { "platforms": [ @@ -12473,7 +12829,6 @@ "chromeos", "chromeos_lacros", "linux", - "android", "android_webview" ], "experiments": [ @@ -12849,6 +13204,8 @@ "name": "AllFeatures", "enable_features": [ "ForceSafeSearchForUnauthenticatedSupervisedUsers", + "ForceSupervisedUserReauthenticationForBlockedSites", + "ForceSupervisedUserReauthenticationForYouTube", "HideGuestModeForSupervisedUsers", "UncredentialedFilteringFallbackForSupervisedUsers" ] @@ -13169,14 +13526,13 @@ ] } ], - "LeakSkiaEventTracerAtExit": [ + "LazyUpdateTranslateModel": [ { "platforms": [ "android", "chromeos", "chromeos_lacros", "fuchsia", - "ios", "linux", "mac", "windows" @@ -13185,19 +13541,19 @@ { "name": "Enabled", "enable_features": [ - "LeakSkiaEventTracerAtExit" + "LazyUpdateTranslateModel" ] } ] } ], - "LevelDBProtoAsyncWrite": [ + "LeakSkiaEventTracerAtExit": [ { "platforms": [ - "android_webview", "android", "chromeos", "chromeos_lacros", + "fuchsia", "ios", "linux", "mac", @@ -13207,7 +13563,7 @@ { "name": "Enabled", "enable_features": [ - "LevelDBProtoAsyncWrite" + "LeakSkiaEventTracerAtExit" ] } ] @@ -13538,21 +13894,6 @@ ] } ], - "MacImmersiveFullscreen": [ - { - "platforms": [ - "mac" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "ImmersiveFullscreen" - ] - } - ] - } - ], "MacWebContentsOcclusionV2": [ { "platforms": [ @@ -13599,6 +13940,23 @@ "Mahi", "MediaAppPdfMahi" ] + }, + { + "name": "ManagedDisabled", + "enable_features": [ + "Mahi", + "MediaAppPdfMahi" + ], + "disable_features": [ + "MahiManaged" + ] + }, + { + "name": "Disabled", + "disable_features": [ + "Mahi", + "MediaAppPdfMahi" + ] } ] } @@ -13872,23 +14230,6 @@ ] } ], - "MessagePumpEpoll": [ - { - "platforms": [ - "android", - "chromeos", - "linux" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "MessagePumpEpoll" - ] - } - ] - } - ], "MessagesPreinstall": [ { "platforms": [ @@ -14003,40 +14344,36 @@ ] } ], - "MinorModeRestrictionsForHistorySyncOptInIosStudy": [ + "MigrateSyncingUserToSignedIn": [ { "platforms": [ - "ios" + "android" ], "experiments": [ { - "name": "Deadline500_WithPrefetchOnStartup_20240819_M128+", - "params": { - "MinorModeRestrictionsFetchDeadlineMs": "500" - }, + "name": "Enabled", "enable_features": [ - "MinorModeRestrictionsForHistorySyncOptIn", - "PrefetchSystemCapabilitiesOnAppStartup", - "PrefetchSystemCapabilitiesOnFirstRun" + "MigrateSyncingUserToSignedIn" ] } ] } ], - "MmapSafeBrowsingDatabase": [ + "MinorModeRestrictionsForHistorySyncOptInIosStudy": [ { "platforms": [ "ios" ], "experiments": [ { - "name": "Enabled_20240116", + "name": "Deadline500_WithPrefetchOnStartup_20240819_M128+", "params": { - "MmapSafeBrowsingDatabaseAsync": "true" + "MinorModeRestrictionsFetchDeadlineMs": "500" }, "enable_features": [ - "MmapSafeBrowsingDatabase", - "SafeBrowsingOnUIThread" + "MinorModeRestrictionsForHistorySyncOptIn", + "PrefetchSystemCapabilitiesOnAppStartup", + "PrefetchSystemCapabilitiesOnFirstRun" ] } ] @@ -14150,28 +14487,31 @@ ] } ], - "MojoUseBinder": [ + "MouseDragOnCancelledMouseMove": [ { "platforms": [ "android", - "android_webview" + "android_weblayer", + "android_webview", + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" ], "experiments": [ { "name": "Enabled", "enable_features": [ - "MojoUseBinder" + "MouseDragOnCancelledMouseMove" ] } ] } ], - "MouseDragOnCancelledMouseMove": [ + "MoveThemePrefsToSpecifics": [ { "platforms": [ - "android", - "android_weblayer", - "android_webview", "chromeos", "chromeos_lacros", "linux", @@ -14182,7 +14522,7 @@ { "name": "Enabled", "enable_features": [ - "MouseDragOnCancelledMouseMove" + "MoveThemePrefsToSpecifics" ] } ] @@ -14261,30 +14601,6 @@ ] } ], - "NavBarColorMatchesTabBackgroundAndroid": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "NavBarColorMatchesTabBackground" - ] - }, - { - "name": "Enabled_DisabledAnimation", - "params": { - "color_animation_disabled": "true" - }, - "enable_features": [ - "NavBarColorMatchesTabBackground" - ] - } - ] - } - ], "NavigationPredictorIntersectionObserver": [ { "platforms": [ @@ -14710,6 +15026,69 @@ ] } ], + "OcclusionCullingQuadSplitLimit": [ + { + "platforms": [ + "chromeos" + ], + "experiments": [ + { + "name": "quad_split_limit_8", + "params": { + "num_of_splits": "8" + }, + "enable_features": [ + "DrawQuadSplitLimit" + ] + }, + { + "name": "quad_split_limit_6", + "params": { + "num_of_splits": "6" + }, + "enable_features": [ + "DrawQuadSplitLimit" + ] + }, + { + "name": "quad_split_limit_7", + "params": { + "num_of_splits": "7" + }, + "enable_features": [ + "DrawQuadSplitLimit" + ] + }, + { + "name": "quad_split_limit_10", + "params": { + "num_of_splits": "10" + }, + "enable_features": [ + "DrawQuadSplitLimit" + ] + }, + { + "name": "quad_split_limit_12", + "params": { + "num_of_splits": "12" + }, + "enable_features": [ + "DrawQuadSplitLimit" + ] + }, + { + "name": "quad_split_limit_14", + "params": { + "num_of_splits": "14" + }, + "enable_features": [ + "DrawQuadSplitLimit" + ] + } + ] + } + ], "OidcAuthProfileManagement": [ { "platforms": [ @@ -14890,28 +15269,47 @@ ] } ], - "OmniboxElegantTextHeight": [ + "OmniboxDeleteOldShortcutsDesktop": [ { "platforms": [ - "android" + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" ], "experiments": [ { "name": "Enabled", "enable_features": [ - "OmniboxElegantTextHeight" + "OmniboxDeleteOldShortcuts" ] } ] } ], - "OmniboxFeaturedEnterpriseSiteSearch": [ + "OmniboxElegantTextHeight": [ { "platforms": [ - "chromeos", - "chromeos_lacros", - "linux", - "mac", + "android" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "OmniboxElegantTextHeight" + ] + } + ] + } + ], + "OmniboxFeaturedEnterpriseSiteSearch": [ + { + "platforms": [ + "chromeos", + "chromeos_lacros", + "linux", + "mac", "windows" ], "experiments": [ @@ -15032,11 +15430,11 @@ ] }, { - "name": "Enabled_PromotedBy100", + "name": "Enabled_DemotedBy100", "params": { "MlUrlPiecewiseMappedSearchBlending": "true", - "MlUrlPiecewiseMappedSearchBlending_BreakPoints": "0,590;0.034,695;0.043,890;0.067,895;0.076,1000;0.117,1030;0.147,1300;0.184,1305;0.2,1400;0.647,1450;0.668,1510;0.988,1530;1,1530", - "MlUrlPiecewiseMappedSearchBlending_GroupingThreshold": "1514", + "MlUrlPiecewiseMappedSearchBlending_BreakPoints": "0,590;0.034,495;0.043,690;0.067,695;0.076,800;0.117,830;0.147,1100;0.184,1105;0.2,1200;0.647,1250;0.668,1310;0.988,1330;1,1530", + "MlUrlPiecewiseMappedSearchBlending_GroupingThreshold": "1314", "MlUrlPiecewiseMappedSearchBlending_RelevanceBias": "0", "MlUrlScoringShortcutDocumentSignals": "true", "MlUrlSearchBlending_MappedSearchBlending": "false", @@ -15049,11 +15447,11 @@ ] }, { - "name": "Enabled_PromotedBy50", + "name": "Enabled_DemotedBy150", "params": { "MlUrlPiecewiseMappedSearchBlending": "true", - "MlUrlPiecewiseMappedSearchBlending_BreakPoints": "0,590;0.034,645;0.043,840;0.067,845;0.076,950;0.117,980;0.147,1250;0.184,1255;0.2,1350;0.647,1400;0.668,1460;0.988,1480;1,1530", - "MlUrlPiecewiseMappedSearchBlending_GroupingThreshold": "1464", + "MlUrlPiecewiseMappedSearchBlending_BreakPoints": "0,590;0.034,445;0.043,640;0.067,645;0.076,750;0.117,780;0.147,1050;0.184,1055;0.2,1150;0.647,1200;0.668,1260;0.988,1280;1,1530", + "MlUrlPiecewiseMappedSearchBlending_GroupingThreshold": "1264", "MlUrlPiecewiseMappedSearchBlending_RelevanceBias": "0", "MlUrlScoringShortcutDocumentSignals": "true", "MlUrlSearchBlending_MappedSearchBlending": "false", @@ -15083,7 +15481,7 @@ "params": { "MlUrlPiecewiseMappedSearchBlending": "true", "MlUrlPiecewiseMappedSearchBlending_BreakPoints": "0,550;0.018,1300;0.14,1398;1,1422", - "MlUrlPiecewiseMappedSearchBlending_GroupingThreshold": "1400", + "MlUrlPiecewiseMappedSearchBlending_GroupingThreshold": "1414", "MlUrlPiecewiseMappedSearchBlending_RelevanceBias": "0", "MlUrlScoringShortcutDocumentSignals": "true", "enable_scoring_signals_annotators_for_ml_scoring": "true" @@ -15099,7 +15497,7 @@ "params": { "MlUrlPiecewiseMappedSearchBlending": "true", "MlUrlPiecewiseMappedSearchBlending_BreakPoints": "0,550;0.018,1250;0.14,1348;1,1422", - "MlUrlPiecewiseMappedSearchBlending_GroupingThreshold": "1350", + "MlUrlPiecewiseMappedSearchBlending_GroupingThreshold": "1364", "MlUrlPiecewiseMappedSearchBlending_RelevanceBias": "0", "MlUrlScoringShortcutDocumentSignals": "true", "enable_scoring_signals_annotators_for_ml_scoring": "true" @@ -15111,11 +15509,11 @@ ] }, { - "name": "Enabled_PromotedBy100", + "name": "Enabled_DemotedBy100", "params": { "MlUrlPiecewiseMappedSearchBlending": "true", - "MlUrlPiecewiseMappedSearchBlending_BreakPoints": "0,550;0.018,1400;0.14,1498;1,1522", - "MlUrlPiecewiseMappedSearchBlending_GroupingThreshold": "1500", + "MlUrlPiecewiseMappedSearchBlending_BreakPoints": "0,550;0.018,1200;0.14,1298;1,1422", + "MlUrlPiecewiseMappedSearchBlending_GroupingThreshold": "1314", "MlUrlPiecewiseMappedSearchBlending_RelevanceBias": "0", "MlUrlScoringShortcutDocumentSignals": "true", "enable_scoring_signals_annotators_for_ml_scoring": "true" @@ -15127,11 +15525,11 @@ ] }, { - "name": "Enabled_PromotedBy50", + "name": "Enabled_DemotedBy150", "params": { "MlUrlPiecewiseMappedSearchBlending": "true", - "MlUrlPiecewiseMappedSearchBlending_BreakPoints": "0,550;0.018,1350;0.14,1448;1,1472", - "MlUrlPiecewiseMappedSearchBlending_GroupingThreshold": "1450", + "MlUrlPiecewiseMappedSearchBlending_BreakPoints": "0,550;0.018,1150;0.14,1248;1,1422", + "MlUrlPiecewiseMappedSearchBlending_GroupingThreshold": "1264", "MlUrlPiecewiseMappedSearchBlending_RelevanceBias": "0", "MlUrlScoringShortcutDocumentSignals": "true", "enable_scoring_signals_annotators_for_ml_scoring": "true" @@ -15186,11 +15584,11 @@ ] }, { - "name": "Enabled_PromotedBy100", + "name": "Enabled_DemotedBy100", "params": { "MlUrlPiecewiseMappedSearchBlending": "true", - "MlUrlPiecewiseMappedSearchBlending_BreakPoints": "0,590;0.006,890;0.082,1390;0.443,1460;0.464,1500;0.987,1525;1,1530", - "MlUrlPiecewiseMappedSearchBlending_GroupingThreshold": "1514", + "MlUrlPiecewiseMappedSearchBlending_BreakPoints": "0,590;0.006,690;0.082,1190;0.443,1260;0.464,1300;0.987,1325;1,1530", + "MlUrlPiecewiseMappedSearchBlending_GroupingThreshold": "1314", "MlUrlPiecewiseMappedSearchBlending_RelevanceBias": "0", "MlUrlScoringShortcutDocumentSignals": "true", "MlUrlSearchBlending_MappedSearchBlending": "false", @@ -15203,11 +15601,11 @@ ] }, { - "name": "Enabled_PromotedBy50", + "name": "Enabled_DemotedBy150", "params": { "MlUrlPiecewiseMappedSearchBlending": "true", - "MlUrlPiecewiseMappedSearchBlending_BreakPoints": "0,590;0.006,840;0.082,1340;0.443,1410;0.464,1450;0.987,1475;1,1530", - "MlUrlPiecewiseMappedSearchBlending_GroupingThreshold": "1464", + "MlUrlPiecewiseMappedSearchBlending_BreakPoints": "0,590;0.006,640;0.082,1140;0.443,1210;0.464,1250;0.987,1275;1,1530", + "MlUrlPiecewiseMappedSearchBlending_GroupingThreshold": "1264", "MlUrlPiecewiseMappedSearchBlending_RelevanceBias": "0", "MlUrlScoringShortcutDocumentSignals": "true", "MlUrlSearchBlending_MappedSearchBlending": "false", @@ -15388,32 +15786,37 @@ ], "experiments": [ { - "name": "Enabled_NoSyncRequirement_IgnoreWhenDebouncing_V2", + "name": "Enabled_NoSyncRequirement_V3", "params": { "DocumentProviderBackoffOn401": "true", - "DocumentProviderIgnoreWhenDebouncing": "true" + "DocumentProviderIgnoreWhenDebouncing": "false" }, "enable_features": [ + "OmniboxDocumentProvider", "OmniboxDocumentProviderNoSyncRequirement" ] }, { - "name": "Enabled_IgnoreWhenDebouncing_V2", + "name": "Enabled_NoSyncRequirement_IgnoreWhenDebouncing_V3", "params": { "DocumentProviderBackoffOn401": "true", "DocumentProviderIgnoreWhenDebouncing": "true" }, - "disable_features": [ + "enable_features": [ + "OmniboxDocumentProvider", "OmniboxDocumentProviderNoSyncRequirement" ] }, { - "name": "Enabled_NoSyncRequirement_V2", + "name": "Enabled_IgnoreWhenDebouncing_V3", "params": { "DocumentProviderBackoffOn401": "true", - "DocumentProviderIgnoreWhenDebouncing": "false" + "DocumentProviderIgnoreWhenDebouncing": "true" }, "enable_features": [ + "OmniboxDocumentProvider" + ], + "disable_features": [ "OmniboxDocumentProviderNoSyncRequirement" ] } @@ -15984,6 +16387,21 @@ ] } ], + "OverviewSessionInitOptimizations": [ + { + "platforms": [ + "chromeos" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "OverviewSessionInitOptimizations" + ] + } + ] + } + ], "OzonePlatformAuto": [ { "platforms": [ @@ -15996,6 +16414,14 @@ "AllowWindowDragUsingSystemDragDrop", "OverrideDefaultOzonePlatformHintToAuto" ] + }, + { + "name": "Enabled_IME_Dogfood", + "enable_features": [ + "AllowWindowDragUsingSystemDragDrop", + "OverrideDefaultOzonePlatformHintToAuto", + "WaylandTextInputV3" + ] } ] } @@ -16161,27 +16587,6 @@ ] } ], - "ParkableStringExperiments": [ - { - "platforms": [ - "android", - "chromeos", - "chromeos_lacros", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled_20240415", - "enable_features": [ - "LessAggressiveParkableString", - "UseZstdForParkableStrings" - ] - } - ] - } - ], "PartitionAllocAdvancedMemorySafetyChecks": [ { "platforms": [ @@ -16234,23 +16639,6 @@ ] } ], - "PartitionAllocLargeEmptySlotSpanRing": [ - { - "platforms": [ - "android", - "android_weblayer", - "android_webview" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "PartitionAllocLargeEmptySlotSpanRing" - ] - } - ] - } - ], "PartitionAllocLargeThreadCacheSizeAndroid": [ { "platforms": [ @@ -16291,28 +16679,6 @@ ] } ], - "PartitionAllocMakeFreeNoOpOnShutdown": [ - { - "platforms": [ - "chromeos", - "chromeos_lacros", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "EnabledInShutdown", - "params": { - "callsite": "in-shutdown-threads" - }, - "enable_features": [ - "PartitionAllocMakeFreeNoOpOnShutdown" - ] - } - ] - } - ], "PartitionAllocMemoryReclaimer": [ { "platforms": [ @@ -16400,24 +16766,25 @@ ] } ], - "PartitionAllocShortMemoryReclaim": [ + "PartitionAllocParameterTuning": [ { "platforms": [ - "windows", - "mac", + "android", + "android_weblayer", + "android_webview", "chromeos", "chromeos_lacros", "fuchsia", "linux", - "android", - "android_weblayer", - "android_webview" + "windows" ], "experiments": [ { "name": "Enabled", "enable_features": [ - "PartitionAllocShortMemoryReclaim" + "BlinkUseLargeEmptySlotSpanRingForBufferRoot", + "PartitionAllocAdjustSizeWhenInForeground", + "PartitionAllocLargeEmptySlotSpanRing" ] } ] @@ -16516,7 +16883,7 @@ ] } ], - "PartitionVisitedLinkDatabase": [ + "PartitionVisitedLinkDatabaseWithSelfLinks": [ { "platforms": [ "android", @@ -16528,29 +16895,28 @@ ], "experiments": [ { - "name": "PartitionVisitedLinkDatabase", + "name": "Control", + "disable_features": [ + "PartitionVisitedLinkDatabase", + "PartitionVisitedLinkDatabaseWithSelfLinks" + ] + }, + { + "name": "EnabledNoSelfLinks", "enable_features": [ "PartitionVisitedLinkDatabase" + ], + "disable_features": [ + "PartitionVisitedLinkDatabaseWithSelfLinks" ] - } - ] - } - ], - "PartitionVisitedLinkDatabaseWithSelfLinks": [ - { - "platforms": [ - "android", - "chromeos", - "chromeos_lacros", - "linux", - "mac", - "windows" - ], - "experiments": [ + }, { - "name": "PartitionVisitedLinkDatabaseWithSelfLinks", + "name": "EnabledWithSelfLinks", "enable_features": [ "PartitionVisitedLinkDatabaseWithSelfLinks" + ], + "disable_features": [ + "PartitionVisitedLinkDatabase" ] } ] @@ -16589,140 +16955,22 @@ "windows" ], "experiments": [ - { - "name": "EnabledWithStrongLabel", - "params": { - "PasswordGenerationExperimentSurveyTriggedId": "p4WLf1M6c0ugnJ3q1cK0YsmLdpng", - "probability": "0.25" - }, - "enable_features": [ - "PasswordGenerationExperiment", - "PasswordStrongLabel" - ] - }, - { - "name": "EnabledWithTrustedAdvice", - "params": { - "PasswordGenerationExperimentSurveyTriggedId": "Vm6DB1ki50ugnJ3q1cK0SpkrheAJ", - "password_generation_variation": "trusted_advice", - "probability": "0.25" - }, - "enable_features": [ - "PasswordGenerationExperiment" - ], - "disable_features": [ - "PasswordStrongLabel" - ] - }, - { - "name": "EnabledWithSafetyFirst", - "params": { - "PasswordGenerationExperimentSurveyTriggedId": "sD7hmDAoo0ugnJ3q1cK0VQ2Y8p6e", - "password_generation_variation": "safety_first", - "probability": "0.25" - }, - "enable_features": [ - "PasswordGenerationExperiment" - ], - "disable_features": [ - "PasswordStrongLabel" - ] - }, - { - "name": "EnabledWithTrySomethingNew", - "params": { - "PasswordGenerationExperimentSurveyTriggedId": "6QssdASS10ugnJ3q1cK0RUK4HnYU", - "password_generation_variation": "try_something_new", - "probability": "0.25" - }, - "enable_features": [ - "PasswordGenerationExperiment" - ], - "disable_features": [ - "PasswordStrongLabel" - ] - }, - { - "name": "EnabledWithConvenience", - "params": { - "PasswordGenerationExperimentSurveyTriggedId": "W23VEAHCT0ugnJ3q1cK0SaPHa9J4", - "password_generation_variation": "convenience", - "probability": "0.25" - }, - "enable_features": [ - "PasswordGenerationExperiment" - ], - "disable_features": [ - "PasswordStrongLabel" - ] - }, - { - "name": "EnabledWithCrossDevice", - "params": { - "PasswordGenerationExperimentSurveyTriggedId": "fRjzkFjzZ0ugnJ3q1cK0RWYBnkGK", - "password_generation_variation": "cross_device", - "probability": "0.25" - }, - "enable_features": [ - "PasswordGenerationExperiment" - ], - "disable_features": [ - "PasswordStrongLabel" - ] - }, { "name": "EnabledWithChunkPassword", "params": { - "PasswordGenerationExperimentSurveyTriggedId": "gnz68PSiB0ugnJ3q1cK0Y7PcR8ix", - "password_generation_variation": "chunk_password", - "probability": "0.25" + "password_generation_variation": "chunk_password" }, "enable_features": [ "PasswordGenerationExperiment" - ], - "disable_features": [ - "PasswordStrongLabel" ] }, { "name": "EnabledWithNudgePassword", "params": { - "PasswordGenerationExperimentSurveyTriggedId": "B8yvCYL9f0ugnJ3q1cK0NXtJvPAJ", - "password_generation_variation": "nudge_password", - "probability": "0.25" + "password_generation_variation": "nudge_password" }, "enable_features": [ "PasswordGenerationExperiment" - ], - "disable_features": [ - "PasswordStrongLabel" - ] - }, - { - "name": "EnabledWithEditPassword", - "params": { - "PasswordGenerationExperimentSurveyTriggedId": "4yPTnSKPN0ugnJ3q1cK0YJ18dkNR", - "password_generation_variation": "edit_password", - "probability": "0.25" - }, - "enable_features": [ - "PasswordGenerationExperiment" - ], - "disable_features": [ - "PasswordStrongLabel" - ] - }, - { - "name": "Baseline", - "params": { - "PasswordGenerationExperimentSurveyTriggedId": "DX4MWyX4R0ugnJ3q1cK0YjEiaErj", - "probability": "0.25" - }, - "enable_features": [ - "PasswordGenerationExperiment" - ], - "disable_features": [ - "PasswordStrongLabel" ] } ] @@ -16746,6 +16994,21 @@ ] } ], + "PasswordMigrationWarningDeprecationStudy": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Deprecation", + "disable_features": [ + "UnifiedPasswordManagerLocalPasswordsMigrationWarning" + ] + } + ] + } + ], "PasswordSuggestionBottomSheetV2": [ { "platforms": [ @@ -16888,7 +17151,9 @@ "ExpandedPrefetchRange", "FledgeEnableWALForInterestGroupStorage", "GpuInfoCollectionSeparatePrefetch", + "LevelDBProtoAsyncWrite", "MojoBindingsInlineSLS", + "ReduceCpuUtilization2", "RunTasksByBatches", "SharedStorageAPIEnableWALForDatabase", "SqlWALModeOnDipsDatabase", @@ -16909,9 +17174,11 @@ }, "enable_features": [ "FledgeEnableWALForInterestGroupStorage", + "LevelDBProtoAsyncWrite", "MacEfficientFileFlush", "MojoBindingsInlineSLS", "NumberOfCoresWithCpuSecurityMitigation", + "ReduceCpuUtilization2", "SharedStorageAPIEnableWALForDatabase", "SqlWALModeOnDipsDatabase", "SqlWALModeOnSegmentationDatabase" @@ -16924,7 +17191,25 @@ "chromeos", "chromeos_lacros", "linux", - "fuchsia", + "fuchsia" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "FledgeEnableWALForInterestGroupStorage", + "LevelDBProtoAsyncWrite", + "MojoBindingsInlineSLS", + "ReduceCpuUtilization2", + "SharedStorageAPIEnableWALForDatabase", + "SqlWALModeOnDipsDatabase", + "SqlWALModeOnSegmentationDatabase" + ] + } + ] + }, + { + "platforms": [ "android_webview" ], "experiments": [ @@ -16932,7 +17217,9 @@ "name": "Enabled", "enable_features": [ "FledgeEnableWALForInterestGroupStorage", + "LevelDBProtoAsyncWrite", "MojoBindingsInlineSLS", + "PumpFastToSleepAndroid", "SharedStorageAPIEnableWALForDatabase", "SqlWALModeOnDipsDatabase", "SqlWALModeOnSegmentationDatabase" @@ -16949,7 +17236,10 @@ "name": "Enabled", "enable_features": [ "FledgeEnableWALForInterestGroupStorage", + "LevelDBProtoAsyncWrite", "MojoBindingsInlineSLS", + "PumpFastToSleepAndroid", + "ReduceCpuUtilization2", "SharedStorageAPIEnableWALForDatabase", "SqlWALModeOnDipsDatabase", "SqlWALModeOnSegmentationDatabase" @@ -17170,6 +17460,39 @@ ] } ], + "PinTimeoutSetup": [ + { + "platforms": [ + "chromeos" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "AllowPinTimeoutSetup", + "CrOSLateBootEnableModernPin", + "SeparatePasswordAndPinOnLogin", + "WebAuthNAuthDialogMerge" + ] + } + ] + } + ], + "PlusAddressAndroidManualFallbackEnabled": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "PlusAddressAndroidManualFallbackEnabled" + ] + } + ] + } + ], "PlusAddressCreateSuggestion": [ { "platforms": [ @@ -17206,13 +17529,17 @@ { "name": "Enabled", "enable_features": [ - "PlusAddressAffiliations", + "PlusAddressAndSingleFieldFormFill", + "PlusAddressBlocklistEnabled", "PlusAddressFallbackFromContextMenu", + "PlusAddressGlobalToggle", + "PlusAddressIOSManualFallbackEnabled", "PlusAddressOfferCreationOnSingleUsernameForms", - "PlusAddressRefresh", - "PlusAddressSettingsRefreshDesktop", - "PlusAddressesEnabled", - "SyncPlusAddress" + "PlusAddressPreallocation", + "PlusAddressSuggestionRedesign", + "PlusAddressUpdatedErrorStatesInOnboardingModal", + "PlusAddressUserOnboardingEnabled", + "PlusAddressesEnabled" ] } ] @@ -17242,6 +17569,27 @@ ] } ], + "PolicyBlocklistProceedUntilResponse": [ + { + "platforms": [ + "android", + "chromeos", + "chromeos_lacros", + "ios", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "PolicyBlocklistProceedUntilResponse" + ] + } + ] + } + ], "PostGetMyMemoryStateToBackground": [ { "platforms": [ @@ -17311,22 +17659,6 @@ ] } ], - "PreFreeze": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "Both_2024_05_29", - "enable_features": [ - "IsTrimMemoryBackgroundCritical", - "OnPreFreezeMemoryTrim" - ] - } - ] - } - ], "PreInitializePageAndFrameForSVGImage": [ { "platforms": [ @@ -17450,6 +17782,27 @@ ] } ], + "PrefetchNewWaitLoop": [ + { + "platforms": [ + "android", + "android_webview", + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled_20240909", + "enable_features": [ + "PrefetchNewWaitLoop" + ] + } + ] + } + ], "PrefetchProxyDesktop": [ { "platforms": [ @@ -17543,9 +17896,9 @@ ], "experiments": [ { - "name": "preload-on-make-contents", + "name": "preload-on-warmup", "params": { - "preload-mode": "preload-on-make-contents", + "preload-mode": "preload-on-warmup", "smart-preload": "true" }, "enable_features": [ @@ -17553,8 +17906,9 @@ ] }, { - "name": "preload-on-warmup", + "name": "preload-on-warmup-delay", "params": { + "delay-preload": "true", "preload-mode": "preload-on-warmup", "smart-preload": "true" }, @@ -17660,7 +18014,7 @@ ], "experiments": [ { - "name": "Enabled_20240807", + "name": "Enabled_20240821", "params": { "prerender_new_tab_page_on_touch_trigger": "47" }, @@ -17828,6 +18182,22 @@ ] } ], + "PriceTrackingPromo": [ + { + "platforms": [ + "ios" + ], + "experiments": [ + { + "name": "Enabled_20241004", + "enable_features": [ + "PriceTrackingPromo", + "SegmentationPlatformEphemeralCardRanker" + ] + } + ] + } + ], "PrintWithPostScriptType42Fonts": [ { "platforms": [ @@ -17921,21 +18291,6 @@ ] } ], - "PrivacyGuideAndroid3": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "Enabled_20230926", - "enable_features": [ - "PrivacyGuideAndroid3" - ] - } - ] - } - ], "PrivacyGuideHats": [ { "platforms": [ @@ -18044,14 +18399,29 @@ "enable_features": [] }, { - "name": "Enabled_20230616", + "name": "Enabled_20230616", + "enable_features": [ + "CrosPrivacyHubV0" + ] + }, + { + "name": "Control_20230616", + "enable_features": [] + } + ] + } + ], + "PrivacyHubV2-3": [ + { + "platforms": [ + "chromeos" + ], + "experiments": [ + { + "name": "Enabled", "enable_features": [ - "CrosPrivacyHubV0" + "CrosBlockWarnings" ] - }, - { - "name": "Control_20230616", - "enable_features": [] } ] } @@ -18151,26 +18521,6 @@ ] } ], - "PrivacySandboxAttestationsLoadPreInstalledComponent": [ - { - "platforms": [ - "android", - "chromeos", - "chromeos_lacros", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled_PrivacySandboxAttestationsLoadPreInstalledComponent", - "enable_features": [ - "PrivacySandboxAttestationsLoadPreInstalledComponent" - ] - } - ] - } - ], "PrivacySandboxHatsForDesktopM1": [ { "platforms": [ @@ -18416,7 +18766,21 @@ "mac", "linux", "chromeos", - "chromeos_lacros", + "chromeos_lacros" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "ProcessReuseOnPrerenderCOOPSwap" + ] + } + ] + } + ], + "ProcessReuseOnPrerenderCOOPSwapAndroid": [ + { + "platforms": [ "android" ], "experiments": [ @@ -18556,6 +18920,26 @@ ] } ], + "ProtectedAudienceDealsSupport": [ + { + "platforms": [ + "android", + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "FledgeAuctionDealSupport" + ] + } + ] + } + ], "ProtectedAudienceMoreGroupByOriginContextsStudy": [ { "platforms": [ @@ -18697,26 +19081,6 @@ ] } ], - "ProtectedAudiencesPermitCrossOriginTrustedSignals": [ - { - "platforms": [ - "android", - "chromeos", - "chromeos_lacros", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "FledgePermitCrossOriginTrustedSignals" - ] - } - ] - } - ], "ProtectedAudiencesRealTimeReporting": [ { "platforms": [ @@ -18819,23 +19183,6 @@ ] } ], - "PumpFastToSleepAndroid": [ - { - "platforms": [ - "android_weblayer", - "android_webview", - "android" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "PumpFastToSleepAndroid" - ] - } - ] - } - ], "PushMessagingDisallowSenderIDs": [ { "platforms": [ @@ -18940,6 +19287,25 @@ ] } ], + "QuickDeleteAndroidSurvey": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "params": { + "probability": "0.5", + "trigger_id": "GtpVWQGxM0tK1KeaPYj0QBUXAQ9v" + }, + "enable_features": [ + "QuickDeleteAndroidSurvey" + ] + } + ] + } + ], "QuotaDatabaseDisableFullFSync": [ { "platforms": [ @@ -19046,13 +19412,15 @@ ], "experiments": [ { - "name": "Enabled", + "name": "EnabledWithPreconnect_20240916", "params": { - "use_predictions": "false" + "use_predictions": "true" }, "enable_features": [ - "LoadingPredictorPrefetch", "LoadingPredictorUseOptimizationGuide" + ], + "disable_features": [ + "LoadingPredictorPrefetch" ] } ] @@ -19197,31 +19565,26 @@ ] } ], - "ReadAnythingReadAloudRollout": [ + "ReadAnythingReadAloudPhraseHighlighting": [ { "platforms": [ - "chromeos" + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" ], "experiments": [ { "name": "Enabled", "enable_features": [ - "ReadAnythingReadAloud" - ] - }, - { - "name": "LanguageDownloads_Enabled", - "enable_features": [ - "ReadAloudLanguagePackDownloading", - "ReadAnythingReadAloud" + "ReadAnythingReadAloudPhraseHighlighting" ] }, { - "name": "LanguageDownloadsAndVoiceSwitching_Enabled", - "enable_features": [ - "ReadAloudAutoVoiceSwitching", - "ReadAloudLanguagePackDownloading", - "ReadAnythingReadAloud" + "name": "Disabled", + "disable_features": [ + "ReadAnythingReadAloudPhraseHighlighting" ] } ] @@ -19314,14 +19677,7 @@ "ReduceCpuUtilization2": [ { "platforms": [ - "android_webview", - "android", - "chromeos", - "chromeos_lacros", - "ios", - "linux", - "mac", - "windows" + "android_webview" ], "experiments": [ { @@ -19935,10 +20291,11 @@ ] } ], - "SafeBrowsingDeepScanningPromptRemoval": [ + "SafeBrowsingDailyPhishingReportsLimit": [ { "platforms": [ - "chromeos_lacros", + "android", + "chromeos", "linux", "mac", "windows" @@ -19946,8 +20303,11 @@ "experiments": [ { "name": "Enabled", + "params": { + "kMaxReportsPerIntervalESB": "10" + }, "enable_features": [ - "SafeBrowsingDeepScanningPromptRemoval" + "SafeBrowsingDailyPhishingReportsLimit" ] } ] @@ -19968,6 +20328,29 @@ ] } ], + "SafeBrowsingHashDatabaseOffsetMap": [ + { + "platforms": [ + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows", + "ios" + ], + "experiments": [ + { + "name": "Enabled1024", + "params": { + "HashDatabaseOffsetMapBytesPerOffset": "1024" + }, + "enable_features": [ + "SafeBrowsingHashDatabaseOffsetMap" + ] + } + ] + } + ], "SafeBrowsingHashPrefixRealTimeLookups": [ { "platforms": [ @@ -20022,20 +20405,37 @@ ] } ], - "SafeBrowsingSevenZipEvaluationEnabled": [ + "SafeBrowsingRemoveCookiesInAuthRequests": [ { "platforms": [ "chromeos", "chromeos_lacros", "linux", "mac", - "windows" + "windows", + "android", + "ios" ], "experiments": [ { "name": "Enabled", "enable_features": [ - "SafeBrowsingSevenZipEvaluationEnabled" + "SafeBrowsingRemoveCookiesInAuthRequests" + ] + } + ] + } + ], + "SafeBrowsingSyncCheckerCheckAllowlist": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "SafeBrowsingSyncCheckerCheckAllowlist" ] } ] @@ -20095,9 +20495,25 @@ { "name": "Enabled", "params": { - "background-password-check-interval": "30d" + "background-password-check-interval": "30d", + "probability": "0.5", + "trigger_id": "BqU7h7abt0tK1KeaPYj0WkmwAz4h" + }, + "enable_features": [ + "SafetyHub", + "SafetyHubAndroidSurvey" + ] + }, + { + "name": "HatsControl", + "params": { + "probability": "0.5", + "trigger_id": "kz5UsbD3q0tK1KeaPYj0NTqQb7EL" }, "enable_features": [ + "SafetyHubAndroidSurvey" + ], + "disable_features": [ "SafetyHub" ] } @@ -20107,13 +20523,8 @@ "SafetyHubAbusiveNotificationRevocation": [ { "platforms": [ - "android", "chromeos", - "chromeos_lacros", - "fuchsia", - "linux", - "mac", - "windows" + "chromeos_lacros" ], "experiments": [ { @@ -20140,6 +20551,21 @@ ] } ], + "SafetyHubFollowup": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "SafetyHubFollowup" + ] + } + ] + } + ], "SavePasswordHashFromProfilePicker": [ { "platforms": [ @@ -21210,6 +21636,48 @@ ] } ], + "ScriptStreamingForNonHTTP": [ + { + "platforms": [ + "android", + "android_webview", + "chromeos", + "fuchsia", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "ScriptStreamingForNonHTTP" + ] + } + ] + } + ], + "ScriptedIdleTaskControllerOOMFix": [ + { + "platforms": [ + "android", + "android_webview", + "chromeos", + "fuchsia", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "ScriptedIdleTaskControllerOOMFix" + ] + } + ] + } + ], "SeaPen": [ { "platforms": [ @@ -21244,13 +21712,34 @@ "SeaPenUseExptTemplate": [ { "platforms": [ - "chromeos" + "chromeos" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "SeaPenUseExptTemplate" + ] + } + ] + } + ], + "SeamlessRenderFrameSwap": [ + { + "platforms": [ + "android", + "chromeos", + "chromeos_lacros", + "fuchsia", + "linux", + "mac", + "windows" ], "experiments": [ { "name": "Enabled", "enable_features": [ - "SeaPenUseExptTemplate" + "SeamlessRenderFrameSwap" ] } ] @@ -21319,23 +21808,21 @@ ] } ], - "SearchPrefetchHighPriorityPrefetchesAndroid": [ + "SearchPrefetchHighPriorityPrefetchesAndroid_WithVariousCacheSizes": [ { "platforms": [ "android" ], "experiments": [ { - "name": "EnabledWith100CacheEntries_20240806", + "name": "Enabled_20240913", "params": { - "cache_size": "100", "navigation_prefetch_param": "op", "touch_down": "true" }, "enable_features": [ "OmniboxTouchDownTriggerForPrefetch", - "SearchNavigationPrefetch", - "SearchPrefetchServicePrefetching" + "SearchNavigationPrefetch" ] } ] @@ -21498,6 +21985,27 @@ ] } ], + "SendTabToSelfIOSPushNotifications": [ + { + "platforms": [ + "android", + "chromeos", + "chromeos_lacros", + "ios", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "SendTabToSelfIOSPushNotifications" + ] + } + ] + } + ], "SendTabToSelfV2": [ { "platforms": [ @@ -21513,6 +22021,34 @@ ] } ], + "SensitiveContent": [ + { + "platforms": [ + "android", + "android_webview" + ], + "experiments": [ + { + "name": "Enabled", + "params": { + "sensitive_content_use_pwm_heuristics": "false" + }, + "enable_features": [ + "SensitiveContent" + ] + }, + { + "name": "Enabled_WithPwmHeuristics", + "params": { + "sensitive_content_use_pwm_heuristics": "true" + }, + "enable_features": [ + "SensitiveContent" + ] + } + ] + } + ], "SerializeAccessibilityPostLifecycle": [ { "platforms": [ @@ -21586,6 +22122,7 @@ { "platforms": [ "android", + "android_webview", "chromeos", "chromeos_lacros", "fuchsia", @@ -21935,7 +22472,6 @@ { "name": "EnabledWithSidePanelPinning", "enable_features": [ - "IPH_SidePanelGenericMenuFeature", "IPH_SidePanelGenericPinnableFeature", "ResponsiveToolbar", "SidePanelPinning" @@ -22053,7 +22589,19 @@ ], "experiments": [ { - "name": "Enabled", + "name": "DWrite_Enabled", + "params": { + "typeface": "DWrite" + }, + "enable_features": [ + "SkiaFontService" + ] + }, + { + "name": "FreeType_Enabled", + "params": { + "typeface": "FreeType" + }, "enable_features": [ "SkiaFontService" ] @@ -22070,6 +22618,10 @@ "experiments": [ { "name": "Enabled", + "params": { + "dawn_backend_validation": "false", + "dawn_skip_validation": "true" + }, "enable_features": [ "SkiaGraphite" ] @@ -22302,6 +22854,7 @@ "DeleteOrphanLocalStorageOnStartup", "DeleteStaleLocalStorageOnStartup", "DeleteStaleSessionCookiesOnStartup", + "EvictOrphanQuotaStorage", "EvictStaleQuotaStorage" ] }, @@ -22397,19 +22950,16 @@ ] } ], - "SuppressToolbarCaptures": [ + "StructuredMetricsStorageManager": [ { "platforms": [ - "android" + "chromeos" ], "experiments": [ { - "name": "SuppressionBlockFullscreen_20231004", - "params": { - "block_for_fullscreen": "true" - }, + "name": "EnableStorageManager", "enable_features": [ - "SuppressToolbarCaptures" + "EventStorageManager" ] } ] @@ -22422,25 +22972,10 @@ ], "experiments": [ { - "name": "Enabled", + "name": "Enabled_BothSuppressToolbarCaptures", "enable_features": [ "EnableGestureBeginEndTypes", - "SuppressToolbarCapturesAtGestureEnd" - ] - }, - { - "name": "Disabled", - "disable_features": [ - "EnableGestureBeginEndTypes", - "SuppressToolbarCapturesAtGestureEnd" - ] - }, - { - "name": "Enabled_GestureBeginEndTypes", - "enable_features": [ - "EnableGestureBeginEndTypes" - ], - "disable_features": [ + "SuppressToolbarCaptures", "SuppressToolbarCapturesAtGestureEnd" ] } @@ -22474,27 +23009,6 @@ ] } ], - "SyncEnableContactInfoDataTypeForChildUsers": [ - { - "platforms": [ - "android", - "chromeos", - "chromeos_lacros", - "ios", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "SyncEnableContactInfoDataTypeForChildUsers" - ] - } - ] - } - ], "SyncIncreaseNudgeDelayForSingleClient": [ { "platforms": [ @@ -22519,21 +23033,6 @@ ] } ], - "SyncSegmentsData": [ - { - "platforms": [ - "ios" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "SyncSegmentsData" - ] - } - ] - } - ], "SysUiHoldbackStudy": [ { "platforms": [ @@ -22658,7 +23157,7 @@ { "name": "Enabled", "params": { - "show_tab_group_creation_dialog_setting": "true" + "show_tab_group_creation_dialog_setting": "false" }, "enable_features": [ "TabGroupCreationDialogAndroid" @@ -22743,29 +23242,6 @@ ] } ], - "TabOrganization": [ - { - "platforms": [ - "chromeos", - "chromeos_lacros", - "fuchsia", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "params": { - "trigger_period": "30m" - }, - "enable_features": [ - "TabOrganization" - ] - } - ] - } - ], "TabSearchInProductHelp": [ { "platforms": [ @@ -22845,6 +23321,21 @@ ] } ], + "TabStripIncognitoMigration": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "TabStripIncognitoMigration" + ] + } + ] + } + ], "TabStripStartupRefactoring": [ { "platforms": [ @@ -23024,81 +23515,51 @@ ] } ], - "ThreadGroupSemaphore": [ + "ThreadedBodyLoader": [ { "platforms": [ "android", - "android_webview", "chromeos", "chromeos_lacros", - "ios", "linux", "mac", "windows" ], "experiments": [ { - "name": "Enabled", + "name": "PrecompileMainFrameNoWait_20240520", "params": { - "max_num_workers_created": "8" + "compile-in-parallel": "false", + "compile-strategy": "lazy", + "inline-script-timeout": "0ms", + "precompile-main-frame-only": "true" }, "enable_features": [ - "ThreadGroupSemaphore" + "PrecompileInlineScripts" + ], + "disable_features": [ + "ThreadedBodyLoader", + "ThreadedPreloadScanner" ] } ] } ], - "ThreadPoolCap2": [ + "ThrottleFrameRateOnManyDidNotProduceFrame": [ { "platforms": [ "android", "android_webview", "chromeos", - "chromeos_lacros", - "ios", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "EnabledWithRestricted3_20230907", - "params": { - "restricted_count": "3" - }, - "enable_features": [ - "ThreadPoolCap2" - ] - } - ] - } - ], - "ThreadedBodyLoader": [ - { - "platforms": [ - "android", - "chromeos", - "chromeos_lacros", "linux", "mac", "windows" ], "experiments": [ { - "name": "PrecompileMainFrameNoWait_20240520", - "params": { - "compile-in-parallel": "false", - "compile-strategy": "lazy", - "inline-script-timeout": "0ms", - "precompile-main-frame-only": "true" - }, + "name": "Enabled", "enable_features": [ - "PrecompileInlineScripts" - ], - "disable_features": [ - "ThreadedBodyLoader", - "ThreadedPreloadScanner" + "ThrottleFrameRateOnManyDidNotProduceFrame" ] } ] @@ -23256,6 +23717,25 @@ ] } ], + "TranslateBubbleOpenSettings": [ + { + "platforms": [ + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "TranslateBubbleOpenSettings", + "enable_features": [ + "TranslateOpenSettings" + ] + } + ] + } + ], "TransportSecurityFileWriterSchedule": [ { "platforms": [ @@ -23662,8 +24142,7 @@ "SyncEnableContactInfoDataTypeForCustomPassphraseUsers", "SyncEnableContactInfoDataTypeInTransportMode", "SyncEnableWalletMetadataInTransportMode", - "SyncEnableWalletOfferInTransportMode", - "UpdateMetricsServicesStateInRestore" + "SyncEnableWalletOfferInTransportMode" ] } ] @@ -23699,21 +24178,6 @@ ] } ], - "UseAppBoundEncryptionProviderForEncryption": [ - { - "platforms": [ - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "UseAppBoundEncryptionProviderForEncryption" - ] - } - ] - } - ], "UseAsyncOsCryptInLoginDatabase": [ { "platforms": [ @@ -23843,49 +24307,19 @@ "platforms": [ "android", "android_webview", - "android_weblayer" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "UseDMSAAForTilesAndroidGL" - ] - } - ] - } - ], - "UseEncryptedReportingPipelineToReportArcAppInstallEvents": [ - { - "platforms": [ - "chromeos" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "UseEncryptedReportingPipelineToReportArcAppInstallEvents" - ] - } - ] - } - ], - "UseFusedLocationProvider": [ - { - "platforms": [ - "android" + "android_weblayer" ], "experiments": [ { "name": "Enabled", "enable_features": [ - "UseFusedLocationProvider" + "UseDMSAAForTilesAndroidGL" ] } ] } ], - "UseGMSCoreForBrandingInfo": [ + "UseFusedLocationProvider": [ { "platforms": [ "android" @@ -23894,23 +24328,22 @@ { "name": "Enabled", "enable_features": [ - "UseGMSCoreForBrandingInfo" + "UseFusedLocationProvider" ] } ] } ], - "UseGpuSchedulerDfs": [ + "UseGMSCoreForBrandingInfo": [ { "platforms": [ - "android", - "android_webview" + "android" ], "experiments": [ { "name": "Enabled", "enable_features": [ - "UseGpuSchedulerDfs" + "UseGMSCoreForBrandingInfo" ] } ] @@ -23996,6 +24429,44 @@ ] } ], + "UseNewEncryptionKeyForWebData": [ + { + "platforms": [ + "android", + "android_webview", + "chromeos", + "chromeos_lacros", + "ios", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "UseNewEncryptionKeyForWebData" + ] + } + ] + } + ], + "UsePollForMessagePumpEpoll": [ + { + "platforms": [ + "android", + "android_webview" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "UsePollForMessagePumpEpoll" + ] + } + ] + } + ], "UseSCContentSharingPicker": [ { "platforms": [ @@ -24450,6 +24921,27 @@ ] } ], + "V8ExternalMemoryAccountedInGlobalLimit": [ + { + "platforms": [ + "android", + "android_webview", + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "V8ExternalMemoryAccountedInGlobalLimit" + ] + } + ] + } + ], "V8FlushBaselineCode": [ { "platforms": [ @@ -24479,14 +24971,13 @@ ] } ], - "V8GCOptimizeSweepForMutator": [ + "V8IncrementalMarkingStartUserVisible": [ { "platforms": [ "android", "android_webview", "chromeos", "chromeos_lacros", - "fuchsia", "linux", "mac", "windows" @@ -24495,7 +24986,7 @@ { "name": "Enabled", "enable_features": [ - "V8GCOptimizeSweepForMutator" + "V8IncrementalMarkingStartUserVisible" ] } ] @@ -24610,6 +25101,28 @@ ] } ], + "V8SeparateGCPhases": [ + { + "platforms": [ + "android", + "android_webview", + "chromeos", + "chromeos_lacros", + "fuchsia", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "V8SeparateGCPhases" + ] + } + ] + } + ], "V8SideStepTransitions": [ { "platforms": [ @@ -25423,9 +25936,7 @@ "WebAuthenticationEnclaveAuthenticator": [ { "platforms": [ - "mac", - "windows", - "linux" + "chromeos" ], "experiments": [ { @@ -25459,6 +25970,25 @@ ] } ], + "WebContentsDiscard": [ + { + "platforms": [ + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "WebContentsDiscard" + ] + } + ] + } + ], "WebGPU": [ { "platforms": [ @@ -25516,10 +26046,10 @@ ] } ], - "WebGPUUseTintIR_V2": [ + "WebGPUUseTintIR": [ { "platforms": [ - "chromeos" + "mac" ], "experiments": [ { @@ -25829,24 +26359,6 @@ ] } ], - "WebRTC-LibvpxVp9Encoder-SvcFrameDropConfig": [ - { - "platforms": [ - "android", - "android_webview", - "chromeos", - "chromeos_lacros", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled,layer_drop_mode:1,max_consec_drop:2,_20240416" - } - ] - } - ], "WebRTC-SendBufferSizeBytes": [ { "platforms": [ @@ -25961,6 +26473,30 @@ ] } ], + "WebRTC-Video-ReceiveAndSendH265": [ + { + "platforms": [ + "android", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled_SendReceive", + "enable_features": [ + "WebRtcAllowH265Receive", + "WebRtcAllowH265Send" + ] + }, + { + "name": "Enabled_ReceiveOnly", + "enable_features": [ + "WebRtcAllowH265Receive" + ] + } + ] + } + ], "WebRTC-Vp9ExternalRefCtrl": [ { "platforms": [ @@ -26045,13 +26581,14 @@ ] } ], - "WebRtcEncodedTransformDirectCallback": [ + "WebRtcAudioSinkUseTimestampAligner": [ { "platforms": [ "android", "android_webview", "chromeos", "chromeos_lacros", + "ios", "linux", "mac", "windows" @@ -26060,62 +26597,63 @@ { "name": "Enabled", "enable_features": [ - "WebRtcEncodedTransformDirectCallback" + "WebRtcAudioSinkUseTimestampAligner" ] } ] } ], - "WebRtcHWDecodingDisabledCfM": [ + "WebRtcEncodedTransformDirectCallback": [ { "platforms": [ + "android", + "android_webview", "chromeos", - "chromeos_lacros" + "chromeos_lacros", + "linux", + "mac", + "windows" ], "experiments": [ { - "name": "Disabled_webrtc-hw-decoding", - "disable_features": [ - "webrtc-hw-decoding" + "name": "Enabled", + "enable_features": [ + "WebRtcEncodedTransformDirectCallback" ] } ] } ], - "WebRtcThreadsUseResourceEfficientType": [ + "WebRtcHWDecodingDisabledCfM": [ { "platforms": [ "chromeos", - "chromeos_lacros", - "fuchsia", - "linux", - "windows" + "chromeos_lacros" ], "experiments": [ { - "name": "Enabled", - "enable_features": [ - "WebRtcThreadsUseResourceEfficientType" + "name": "Disabled_webrtc-hw-decoding", + "disable_features": [ + "webrtc-hw-decoding" ] } ] } ], - "WebUIBubblePersistentRendererStudy": [ + "WebRtcThreadsUseResourceEfficientType": [ { "platforms": [ "chromeos", "chromeos_lacros", "fuchsia", "linux", - "mac", "windows" ], "experiments": [ { "name": "Enabled", "enable_features": [ - "WebUIBubblePerProfilePersistence" + "WebRtcThreadsUseResourceEfficientType" ] } ] @@ -26136,14 +26674,25 @@ ], "experiments": [ { - "name": "Enabled", + "name": "Enabled_Restricted", + "params": { + "RestrictedWebUICodeCacheResources": "/new_tab_page.js,/shared.rollup.js,/lit/v3_0/lit.rollup.js,/mojo/mojo/public/js/bindings.js,/polymer/v3_0/polymer/polymer_bundled.min.js,/new_tab_page.mojom-webui.js,/cr_components/searchbox/searchbox.mojom-webui.js,/cr_components/most_visited/most_visited.mojom-webui.js,/lazy_load.js,/tab_search.js" + }, "enable_features": [ + "RestrictedWebUICodeCache", "WebUICodeCache" ] }, { "name": "Disabled", "disable_features": [ + "RestrictedWebUICodeCache", + "WebUICodeCache" + ] + }, + { + "name": "Enabled", + "enable_features": [ "WebUICodeCache" ] } @@ -26210,6 +26759,28 @@ ] } ], + "WebViewAutoGrantStorageAccessAPI": [ + { + "platforms": [ + "android_webview" + ], + "experiments": [ + { + "name": "EnabledWithIncludes", + "enable_features": [ + "WebViewAutoSAA", + "WebViewDigitalAssetLinksLoadIncludes" + ] + }, + { + "name": "EnabledWithoutIncludes", + "enable_features": [ + "WebViewAutoSAA" + ] + } + ] + } + ], "WebViewExitReasonMetric": [ { "platforms": [ @@ -26290,7 +26861,7 @@ ] } ], - "WebViewSupervisedUser": [ + "WebViewSupervisedUserV2": [ { "platforms": [ "android_webview" @@ -26299,7 +26870,7 @@ { "name": "Enabled", "enable_features": [ - "WebViewSupervisedUserSiteDetection" + "WebViewSupervisedUserSiteBlock" ] } ] @@ -26406,21 +26977,6 @@ ] } ], - "WebViewUseInitialNetworkStateAtStartup": [ - { - "platforms": [ - "android_webview" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "WebViewUseInitialNetworkStateAtStartup" - ] - } - ] - } - ], "WebViewUseMetricsUploadServiceOnlySdkRuntime": [ { "platforms": [ @@ -26481,53 +27037,6 @@ ] } ], - "WhatsNewV2Study": [ - { - "platforms": [ - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "WhatsNewVersion2" - ] - } - ] - } - ], - "WinPdfUseFontProxy": [ - { - "platforms": [ - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "WinPdfUseFontProxy" - ] - } - ] - } - ], - "WinSboxACProfileWithoutFirewall": [ - { - "platforms": [ - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "WinSboxACProfileWithoutFirewall" - ] - } - ] - } - ], "WinSboxNoFakeGdiInit": [ { "platforms": [ diff --git a/tools/under-control/src/third_party/blink/public/mojom/use_counter/metrics/web_feature.mojom b/tools/under-control/src/third_party/blink/public/mojom/use_counter/metrics/web_feature.mojom index 3c01e6bc6..30953d227 100755 --- a/tools/under-control/src/third_party/blink/public/mojom/use_counter/metrics/web_feature.mojom +++ b/tools/under-control/src/third_party/blink/public/mojom/use_counter/metrics/web_feature.mojom @@ -6,6 +6,9 @@ module blink.mojom; // ============ Definition for WebFeature used for UseCounter =============== // +// Documentation: +// https://chromium.googlesource.com/chromium/src.git/+/HEAD/docs/use_counter_wiki.md +// // Do not change assigned numbers of existing items: add new features // to the end of the list. // @@ -15,6 +18,9 @@ module blink.mojom; // // A WebFeature conceptually represents some particular web-exposed API // or code path which can be used/triggered by a web page. +// +// LINT.IfChange(WebFeature) + enum WebFeature { kOBSOLETE_PageDestruction = 0, kWorkerStart = 4, @@ -3770,8 +3776,8 @@ enum WebFeature { kIDNA2008DeviationCharacterInHostnameOfIFrame = 4428, kWindowOpenPopupOnMobile = 4429, kWindowOpenedAsPopupOnMobile = 4430, - kPrivateNetworkAccessIgnoredCrossOriginPreflightError = 4431, - kPrivateNetworkAccessIgnoredCrossSitePreflightError = 4432, + kOBSOLETE_PrivateNetworkAccessIgnoredCrossOriginPreflightError = 4431, + kOBSOLETE_PrivateNetworkAccessIgnoredCrossSitePreflightError = 4432, kLinkRelPrerenderSameOrigin = 4433, kLinkRelPrerenderSameSiteCrossOrigin = 4434, kLinkRelPrerenderCrossSite = 4435, @@ -3959,8 +3965,8 @@ enum WebFeature { kPaymentRequestActivationlessShow = 4607, kWebAppTabbed = 4608, kFetchLater = 4609, - kURLPatternReliantOnImplicitURLComponentsInString = 4610, - kURLPatternReliantOnLaterComponentFromBaseURL = 4611, + kOBSOLETE_URLPatternReliantOnImplicitURLComponentsInString = 4610, + kOBSOLETE_URLPatternReliantOnLaterComponentFromBaseURL = 4611, kV8Navigator_CreateAuctionNonce_Method = 4612, kCrossOriginWindowFrameElement = 4613, kQuirksModeAboutBlankDocument = 4614, @@ -4345,17 +4351,17 @@ enum WebFeature { kLinkRelPayment = 4976, kV8GPUAdapter_RequestAdapterInfo_Method = 4977, kOBSOLETE_V8ModelGenericSession_Destroy_Method = 4978, - kV8AITextSession_Execute_Method = 4979, - kV8AITextSession_ExecuteStreaming_Method = 4980, - kV8AI_CanCreateGenericSession_Method = 4981, - kV8AI_CreateGenericSession_Method = 4982, - kV8AI_DefaultGenericSessionOptions_Method = 4983, - kV8AITextSession_Prompt_Method = 4984, - kV8AITextSession_PromptStreaming_Method = 4985, - kV8AI_CanCreateTextSession_Method = 4986, - kV8AI_CreateTextSession_Method = 4987, + kOBSOLETE_V8AITextSession_Execute_Method = 4979, + kOBSOLETE_V8AITextSession_ExecuteStreaming_Method = 4980, + kOBSOLETE_V8AI_CanCreateGenericSession_Method = 4981, + kOBSOLETE_V8AI_CreateGenericSession_Method = 4982, + kOBSOLETE_V8AI_DefaultGenericSessionOptions_Method = 4983, + kOBSOLETE_V8AITextSession_Prompt_Method = 4984, + kOBSOLETE_V8AITextSession_PromptStreaming_Method = 4985, + kOBSOLETE_V8AI_CanCreateTextSession_Method = 4986, + kOBSOLETE_V8AI_CreateTextSession_Method = 4987, kOBSOLETE_V8AI_DefaultTextSessionOptions_Method = 4988, - kV8AITextSession_Destroy_Method = 4989, + kOBSOLETE_V8AITextSession_Destroy_Method = 4989, kImportMapIntegrity = 4990, kSelectElementAppearanceNone = 4991, kRubyPositionAlternate = 4992, @@ -4383,7 +4389,7 @@ enum WebFeature { kARIAColIndexTextAttribute = 5014, kARIARowIndexTextAttribute = 5015, kV8PointerEvent_PersistentDeviceId_AttributeGetter = 5016, - kDelegatedInkExpectedImprovement = 5017, + kOBSOLETE_DelegatedInkExpectedImprovement = 5017, kCSSSelectorNthChildOfSelector = 5018, kDisableStandardizedBrowserZoom = 5019, kV8FileSystemObserver_Constructor = 5020, @@ -4404,13 +4410,13 @@ enum WebFeature { kWebGPUSubgroupsFeatures = 5035, kAudioContextOnError = 5036, kNoVarySearchPrerender = 5037, - kV8AITextSession_Clone_Method = 5038, + kOBSOLETE_V8AITextSession_Clone_Method = 5038, kGamepadHapticActuatorType = 5039, kSelectionDirection = 5040, kSelectionGetComposedRanges = 5041, kEyeDropperOpen = 5042, kFlexNewColumnWrapIntrinsicSize = 5043, - kV8AI_TextModelInfo_Method = 5044, + kOBSOLETE_V8AI_TextModelInfo_Method = 5044, kEventTimingSimulatedClickWithNoKeyboardInteraction = 5045, kViewTransitionGroupNesting = 5046, kV8LanguageDetector_Detect_Method = 5047, @@ -4438,6 +4444,36 @@ enum WebFeature { kV8AIRewriter_Rewrite_Method = 5069, kV8AIRewriter_RewriteStreaming_Method = 5070, kV8AIRewriter_Destroy_Method = 5071, + kFencedFrameCanLoadOpaqueURL = 5072, + kV8Performance_Memory_AttributeGetter_NotLockedToSite = 5073, + kPartitionedPopin_OpenAttempt = 5074, + kPartitionedPopin_Opened = 5075, + kV8AISummarizer_SharedContext_AttributeGetter = 5076, + kV8AISummarizer_Type_AttributeGetter = 5077, + kV8AISummarizer_Format_AttributeGetter = 5078, + kV8AISummarizer_Length_AttributeGetter = 5079, + kV8AIAssistantCapabilities_Available_AttributeGetter = 5080, + kV8AIAssistantCapabilities_DefaultTopK_AttributeGetter = 5081, + kV8AIAssistantCapabilities_MaxTopK_AttributeGetter = 5082, + kV8AIAssistantCapabilities_DefaultTemperature_AttributeGetter = 5083, + kV8AIAssistantFactory_Capabilities_Method = 5084, + kV8AIAssistantFactory_Create_Method = 5085, + kV8AI_Assistant_AttributeGetter = 5086, + kV8AIAssistant_MaxTokens_AttributeGetter = 5087, + kV8AIAssistant_TokensSoFar_AttributeGetter = 5088, + kV8AIAssistant_TokensLeft_AttributeGetter = 5089, + kV8AIAssistant_TopK_AttributeGetter = 5090, + kV8AIAssistant_Temperature_AttributeGetter = 5091, + kV8AIAssistant_Clone_Method = 5092, + kV8AIAssistant_Destroy_Method = 5093, + kV8AIAssistant_Prompt_Method = 5094, + kV8AIAssistant_PromptStreaming_Method = 5095, + kV8Window_PopinContextTypesSupported_Method = 5096, + kV8Window_PopinContextType_Method = 5097, + kWebAuthentication_AttestationFormats = 5098, + kCssDisplayPropertyMultipleValues = 5099, + kDocumentPolicyExpectNoLinkedResources = 5100, + kSelectionIsCollapsedBehaviorChange = 5101, // Add new features immediately above this line. Don't change assigned // numbers of any item, and don't reuse removed slots. Also don't add extra @@ -4446,7 +4482,6 @@ enum WebFeature { // Also, run update_use_counter_feature_enum.py in // chromium/src/tools/metrics/histograms/ to update the UMA mapping. - // TODO(dcheng): Fix https://crbug.com/742517 and use the autogenerated - // constants. - kNumberOfFeatures, // This enum value must be last. }; + +// LINT.ThenChange(//tools/metrics/histograms/enums.xml:FeatureObserver) diff --git a/tools/under-control/src/third_party/blink/renderer/core/css/css_nested_declarations.idl b/tools/under-control/src/third_party/blink/renderer/core/css/css_nested_declarations.idl new file mode 100755 index 000000000..6f2e1134d --- /dev/null +++ b/tools/under-control/src/third_party/blink/renderer/core/css/css_nested_declarations.idl @@ -0,0 +1,11 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +[ + Exposed=Window, + RuntimeEnabled=CSSNestedDeclarations, + ImplementedAs=CSSNestedDeclarationsRule +] interface CSSNestedDeclarations : CSSRule { + [SameObject, PutForwards=cssText] readonly attribute CSSStyleDeclaration style; +}; diff --git a/tools/under-control/src/third_party/blink/renderer/core/css/css_nested_declarations_rule.idl b/tools/under-control/src/third_party/blink/renderer/core/css/css_nested_declarations_rule.idl new file mode 100755 index 000000000..b5203163f --- /dev/null +++ b/tools/under-control/src/third_party/blink/renderer/core/css/css_nested_declarations_rule.idl @@ -0,0 +1,11 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +[ + RuntimeFlag=CSSNestedDeclarationsRule +] interface CSSNestedDeclarationsRule : CSSRule { + [SetterCallWith=ExecutionContext] attribute DOMString selectorText; + [SameObject, PutForwards=cssText] readonly attribute CSSStyleDeclaration style; + [SameObject, MeasureAs=CSSTypedOMStylePropertyMap] readonly attribute StylePropertyMap styleMap; +}; diff --git a/tools/under-control/src/third_party/blink/renderer/core/css/font_face_set.idl b/tools/under-control/src/third_party/blink/renderer/core/css/font_face_set.idl index bbb3f58d6..eb006248e 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/css/font_face_set.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/css/font_face_set.idl @@ -32,8 +32,8 @@ enum FontFaceSetLoadStatus { "loading", "loaded" }; -// TODO(foolip): This interface should have a constructor and thus not have -// [LegacyNoInterfaceObject] +// No constructor, see +// https://github.com/w3c/csswg-drafts/issues/10390#issuecomment-2233736229 [ LegacyNoInterfaceObject, Exposed=(Window,Worker) diff --git a/tools/under-control/src/third_party/blink/renderer/core/css/parser/media_query_parser.cc b/tools/under-control/src/third_party/blink/renderer/core/css/parser/media_query_parser.cc index 2abe942d1..ebb5700c4 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/css/parser/media_query_parser.cc +++ b/tools/under-control/src/third_party/blink/renderer/core/css/parser/media_query_parser.cc @@ -121,38 +121,32 @@ class MediaQueryFeatureSet : public MediaQueryParser::FeatureSet { MediaQuerySet* MediaQueryParser::ParseMediaQuerySet( const String& query_string, const ExecutionContext* execution_context) { - CSSTokenizer tokenizer(query_string); - auto [tokens, raw_offsets] = tokenizer.TokenizeToEOFWithOffsets(); - CSSParserTokenRange range(tokens); - CSSParserTokenOffsets offsets(tokens, std::move(raw_offsets), query_string); - return ParseMediaQuerySet(range, offsets, execution_context); + CSSParserTokenStream stream(query_string); + return ParseMediaQuerySet(stream, execution_context); } MediaQuerySet* MediaQueryParser::ParseMediaQuerySet( - CSSParserTokenRange range, - const CSSParserTokenOffsets& offsets, + CSSParserTokenStream& stream, const ExecutionContext* execution_context) { return MediaQueryParser(kMediaQuerySetParser, kHTMLStandardMode, execution_context) - .ParseImpl(range, offsets); + .ParseImpl(stream); } MediaQuerySet* MediaQueryParser::ParseMediaQuerySetInMode( - CSSParserTokenRange range, - const CSSParserTokenOffsets& offsets, + CSSParserTokenStream& stream, CSSParserMode mode, const ExecutionContext* execution_context) { return MediaQueryParser(kMediaQuerySetParser, mode, execution_context) - .ParseImpl(range, offsets); + .ParseImpl(stream); } MediaQuerySet* MediaQueryParser::ParseMediaCondition( - CSSParserTokenRange range, - const CSSParserTokenOffsets& offsets, + CSSParserTokenStream& stream, const ExecutionContext* execution_context) { return MediaQueryParser(kMediaConditionParser, kHTMLStandardMode, execution_context) - .ParseImpl(range, offsets); + .ParseImpl(stream); } MediaQueryParser::MediaQueryParser(ParserType parser_type, @@ -170,8 +164,6 @@ MediaQueryParser::MediaQueryParser(ParserType parser_type, ? DynamicTo(execution_context)->document() : nullptr)) {} -MediaQueryParser::~MediaQueryParser() = default; - namespace { bool IsRestrictorOrLogicalOperator(const CSSParserToken& token) { @@ -183,33 +175,38 @@ bool IsRestrictorOrLogicalOperator(const CSSParserToken& token) { EqualIgnoringASCIICase(token.Value(), "layer"); } -bool ConsumeUntilCommaInclusive(CSSParserTokenRange& range) { - while (!range.AtEnd()) { - if (range.Peek().GetType() == kCommaToken) { - range.ConsumeIncludingWhitespace(); - return true; - } - range.ConsumeComponentValue(); +bool ConsumeUntilCommaInclusive(CSSParserTokenStream& stream) { + stream.SkipUntilPeekedTypeIs(); + if (stream.Peek().GetType() == kCommaToken) { + stream.ConsumeIncludingWhitespace(); + return true; + } else { + return false; } - return false; } bool IsComparisonDelimiter(UChar c) { return c == '<' || c == '>' || c == '='; } -CSSParserTokenRange ConsumeUntilComparisonOrColon(CSSParserTokenRange& range) { - const CSSParserToken* first = range.begin(); - while (!range.AtEnd()) { - const CSSParserToken& token = range.Peek(); - if ((token.GetType() == kDelimiterToken && - IsComparisonDelimiter(token.Delimiter())) || - token.GetType() == kColonToken) { - break; +void SkipUntilComparisonOrColon(CSSParserTokenStream& stream) { + while (!stream.AtEnd()) { + stream.SkipUntilPeekedTypeIs(); + if (stream.AtEnd()) { + return; + } + const CSSParserToken& token = stream.Peek(); + if (token.GetType() == kDelimiterToken) { + if (IsComparisonDelimiter(token.Delimiter())) { + return; + } else { + stream.Consume(); + } + } else { + DCHECK_EQ(token.GetType(), kColonToken); + return; } - range.ConsumeComponentValue(); } - return range.MakeSubRange(first, range.begin()); } bool IsLtLe(MediaQueryOperator op) { @@ -223,50 +220,50 @@ bool IsGtGe(MediaQueryOperator op) { } // namespace MediaQuery::RestrictorType MediaQueryParser::ConsumeRestrictor( - CSSParserTokenRange& range) { - if (ConsumeIfIdent(range, "not")) { + CSSParserTokenStream& stream) { + if (ConsumeIfIdent(stream, "not")) { return MediaQuery::RestrictorType::kNot; } - if (ConsumeIfIdent(range, "only")) { + if (ConsumeIfIdent(stream, "only")) { return MediaQuery::RestrictorType::kOnly; } return MediaQuery::RestrictorType::kNone; } -String MediaQueryParser::ConsumeType(CSSParserTokenRange& range) { - if (range.Peek().GetType() != kIdentToken) { +String MediaQueryParser::ConsumeType(CSSParserTokenStream& stream) { + if (stream.Peek().GetType() != kIdentToken) { return g_null_atom; } - if (IsRestrictorOrLogicalOperator(range.Peek())) { + if (IsRestrictorOrLogicalOperator(stream.Peek())) { return g_null_atom; } - return range.ConsumeIncludingWhitespace().Value().ToString(); + return stream.ConsumeIncludingWhitespace().Value().ToString(); } MediaQueryOperator MediaQueryParser::ConsumeComparison( - CSSParserTokenRange& range) { - const CSSParserToken& first = range.Peek(); - if (first.GetType() != kDelimiterToken) { + CSSParserTokenStream& stream) { + const CSSParserToken& first = stream.Peek(); + if (first.GetType() != kDelimiterToken || + !IsComparisonDelimiter(first.Delimiter())) { return MediaQueryOperator::kNone; } - DCHECK(IsComparisonDelimiter(first.Delimiter())); switch (first.Delimiter()) { case '=': - range.ConsumeIncludingWhitespace(); + stream.ConsumeIncludingWhitespace(); return MediaQueryOperator::kEq; case '<': - range.Consume(); - if (ConsumeIfDelimiter(range, '=')) { + stream.Consume(); + if (ConsumeIfDelimiter(stream, '=')) { return MediaQueryOperator::kLe; } - range.ConsumeWhitespace(); + stream.ConsumeWhitespace(); return MediaQueryOperator::kLt; case '>': - range.Consume(); - if (ConsumeIfDelimiter(range, '=')) { + stream.Consume(); + if (ConsumeIfDelimiter(stream, '=')) { return MediaQueryOperator::kGe; } - range.ConsumeWhitespace(); + stream.ConsumeWhitespace(); return MediaQueryOperator::kGt; } @@ -274,12 +271,12 @@ MediaQueryOperator MediaQueryParser::ConsumeComparison( return MediaQueryOperator::kNone; } -String MediaQueryParser::ConsumeAllowedName(CSSParserTokenRange& range, +String MediaQueryParser::ConsumeAllowedName(CSSParserTokenStream& stream, const FeatureSet& feature_set) { - if (range.Peek().GetType() != kIdentToken) { + if (stream.Peek().GetType() != kIdentToken) { return g_null_atom; } - String name = range.Peek().Value().ToString(); + String name = stream.Peek().Value().ToString(); if (!feature_set.IsCaseSensitive(name)) { name = name.LowerASCII(); } @@ -287,13 +284,13 @@ String MediaQueryParser::ConsumeAllowedName(CSSParserTokenRange& range, if (!feature_set.IsAllowed(name)) { return g_null_atom; } - range.ConsumeIncludingWhitespace(); + stream.ConsumeIncludingWhitespace(); return name; } -String MediaQueryParser::ConsumeUnprefixedName(CSSParserTokenRange& range, +String MediaQueryParser::ConsumeUnprefixedName(CSSParserTokenStream& stream, const FeatureSet& feature_set) { - String name = ConsumeAllowedName(range, feature_set); + String name = ConsumeAllowedName(stream, feature_set); if (name.IsNull()) { return name; } @@ -303,83 +300,39 @@ String MediaQueryParser::ConsumeUnprefixedName(CSSParserTokenRange& range, return name; } -const MediaQueryExpNode* MediaQueryParser::ParseNameValueComparison( - CSSParserTokenRange lhs, - MediaQueryOperator op, - CSSParserTokenRange rhs, - const CSSParserTokenOffsets& offsets, - NameAffinity name_affinity, - const FeatureSet& feature_set) { - if (name_affinity == NameAffinity::kRight) { - std::swap(lhs, rhs); - } - - String feature_name = ConsumeUnprefixedName(lhs, feature_set); - if (feature_name.IsNull() || !lhs.AtEnd()) { - return nullptr; - } - - auto value = - MediaQueryExpValue::Consume(feature_name, rhs, offsets, fake_context_); - - if (!value || !rhs.AtEnd()) { - return nullptr; - } - - auto left = MediaQueryExpComparison(); - auto right = MediaQueryExpComparison(*value, op); - - if (name_affinity == NameAffinity::kRight) { - std::swap(left, right); - } - - return MakeGarbageCollected( - MediaQueryExp::Create(feature_name, MediaQueryExpBounds(left, right))); -} - const MediaQueryExpNode* MediaQueryParser::ConsumeFeature( - CSSParserTokenRange& range, - const CSSParserTokenOffsets& offsets, + CSSParserTokenStream& stream, const FeatureSet& feature_set) { - // Because we don't know exactly where appears in the grammar, we - // split |range| on top-level separators, and parse each segment - // individually. - // - // Local variables names in this function are chosen with the expectation - // that we are heading towards the most complicated form of : - // - // - // - // Which corresponds to the local variables: + // There are several possible grammars for media queries, and we don't + // know where appears. Thus, our only strategy is to just try them + // one by one and restart if we got it wrong. // - // - CSSParserTokenRange segment1 = ConsumeUntilComparisonOrColon(range); + CSSParserTokenStream::State start = stream.Save(); - // = - if (range.AtEnd()) { - String feature_name = ConsumeAllowedName(segment1, feature_set); - if (feature_name.IsNull() || !segment1.AtEnd() || - !feature_set.IsAllowedWithoutValue(feature_name, execution_context_)) { - return nullptr; - } - return MakeGarbageCollected( - MediaQueryExp::Create(feature_name, MediaQueryExpBounds())); - } + { + String feature_name = ConsumeAllowedName(stream, feature_set); - // = : - if (range.Peek().GetType() == kColonToken) { - range.ConsumeIncludingWhitespace(); - String feature_name = ConsumeAllowedName(segment1, feature_set); - if (feature_name.IsNull() || !segment1.AtEnd()) { - return nullptr; + // = + if (!feature_name.IsNull() && stream.AtEnd() && + feature_set.IsAllowedWithoutValue(feature_name, execution_context_)) { + return MakeGarbageCollected( + MediaQueryExp::Create(feature_name, MediaQueryExpBounds())); } - auto exp = - MediaQueryExp::Create(feature_name, range, offsets, fake_context_); - if (!exp.IsValid() || !range.AtEnd()) { - return nullptr; + + // = : + if (!feature_name.IsNull() && stream.Peek().GetType() == kColonToken) { + stream.ConsumeIncludingWhitespace(); + + // NOTE: We do not check for stream.AtEnd() here, as an empty mf-value is + // legal. + auto exp = MediaQueryExp::Create(feature_name, stream, fake_context_); + if (exp.IsValid() && stream.AtEnd()) { + return MakeGarbageCollected(exp); + } } - return MakeGarbageCollected(exp); + + stream.Restore(start); } if (!feature_set.SupportsRange()) { @@ -393,99 +346,131 @@ const MediaQueryExpNode* MediaQueryParser::ConsumeFeature( // | // | - MediaQueryOperator op1 = ConsumeComparison(range); - DCHECK_NE(op1, MediaQueryOperator::kNone); - - CSSParserTokenRange segment2 = ConsumeUntilComparisonOrColon(range); + { + // Try: (e.g., “width <= 10px”) + String feature_name = ConsumeUnprefixedName(stream, feature_set); + if (!feature_name.IsNull() && !stream.AtEnd()) { + MediaQueryOperator op = ConsumeComparison(stream); + if (op != MediaQueryOperator::kNone) { + auto value = + MediaQueryExpValue::Consume(feature_name, stream, fake_context_); + if (value && stream.AtEnd()) { + auto left = MediaQueryExpComparison(); + auto right = MediaQueryExpComparison(*value, op); + + return MakeGarbageCollected( + MediaQueryExp::Create(feature_name, + MediaQueryExpBounds(left, right))); + } + } + } + stream.Restore(start); + } - // If the range ended, the feature must be on the following form: + // It must be one of these three: // - // + // (e.g., “10px = width”) + // + // // - // We don't know which of and should be interpreted as - // the and which should be interpreted as . We have to - // try both. - if (range.AtEnd()) { - // Try: - if (const MediaQueryExpNode* node = - ParseNameValueComparison(segment1, op1, segment2, offsets, - NameAffinity::kLeft, feature_set)) { - return node; - } + // We don't know how to parse yet, so we need to skip it + // and parse first, then return to (the first) + // afterwards. + // + // Local variables names from here on are chosen with the expectation + // that we are heading towards the most complicated form of + // (the latter in the list), which corresponds to the local variables: + // + // + SkipUntilComparisonOrColon(stream); + if (stream.AtEnd()) { + return nullptr; + } + wtf_size_t offset_after_value1 = stream.LookAheadOffset(); - // Otherwise: - return ParseNameValueComparison(segment1, op1, segment2, offsets, - NameAffinity::kRight, feature_set); + MediaQueryOperator op1 = ConsumeComparison(stream); + if (op1 == MediaQueryOperator::kNone) { + return nullptr; } - // Otherwise, the feature must be on the form: - // - // - // - // This grammar is easier to deal with, since can only appear - // at . - MediaQueryOperator op2 = ConsumeComparison(range); - if (op2 == MediaQueryOperator::kNone) { + String feature_name = ConsumeUnprefixedName(stream, feature_set); + if (feature_name.IsNull()) { return nullptr; } - // Mixing [lt, le] and [gt, ge] is not allowed by the grammar. - const bool both_lt_le = IsLtLe(op1) && IsLtLe(op2); - const bool both_gt_ge = IsGtGe(op1) && IsGtGe(op2); - if (!(both_lt_le || both_gt_ge)) { + stream.ConsumeWhitespace(); + CSSParserTokenStream::State after_feature_name = stream.Save(); + + stream.Restore(start); + auto value1 = + MediaQueryExpValue::Consume(feature_name, stream, fake_context_); + if (!value1) { return nullptr; } - if (range.AtEnd()) { + if (stream.LookAheadOffset() != offset_after_value1) { + // There was junk between and . return nullptr; } - String feature_name = ConsumeUnprefixedName(segment2, feature_set); - if (feature_name.IsNull() || !segment2.AtEnd()) { + // Skip over the comparison and name again. + stream.Restore(after_feature_name); + + if (stream.AtEnd()) { + // Must be: + auto left = MediaQueryExpComparison(*value1, op1); + auto right = MediaQueryExpComparison(); + + return MakeGarbageCollected( + MediaQueryExp::Create(feature_name, MediaQueryExpBounds(left, right))); + } + + // Parse the last . + MediaQueryOperator op2 = ConsumeComparison(stream); + if (op2 == MediaQueryOperator::kNone) { return nullptr; } - auto left_value = MediaQueryExpValue::Consume(feature_name, segment1, offsets, - fake_context_); - if (!left_value || !segment1.AtEnd()) { + // Mixing [lt, le] and [gt, ge] is not allowed by the grammar. + const bool both_lt_le = IsLtLe(op1) && IsLtLe(op2); + const bool both_gt_ge = IsGtGe(op1) && IsGtGe(op2); + if (!(both_lt_le || both_gt_ge)) { return nullptr; } - CSSParserTokenRange& segment3 = range; - auto right_value = MediaQueryExpValue::Consume(feature_name, segment3, - offsets, fake_context_); - if (!right_value || !segment3.AtEnd()) { + auto value2 = + MediaQueryExpValue::Consume(feature_name, stream, fake_context_); + if (!value2) { return nullptr; } return MakeGarbageCollected(MediaQueryExp::Create( feature_name, - MediaQueryExpBounds(MediaQueryExpComparison(*left_value, op1), - MediaQueryExpComparison(*right_value, op2)))); + MediaQueryExpBounds(MediaQueryExpComparison(*value1, op1), + MediaQueryExpComparison(*value2, op2)))); } const MediaQueryExpNode* MediaQueryParser::ConsumeCondition( - CSSParserTokenRange& range, - const CSSParserTokenOffsets& offsets, + CSSParserTokenStream& stream, ConditionMode mode) { // - if (ConsumeIfIdent(range, "not")) { - return MediaQueryExpNode::Not(ConsumeInParens(range, offsets)); + if (ConsumeIfIdent(stream, "not")) { + return MediaQueryExpNode::Not(ConsumeInParens(stream)); } // Otherwise: // [ * | * ] - const MediaQueryExpNode* result = ConsumeInParens(range, offsets); + const MediaQueryExpNode* result = ConsumeInParens(stream); - if (AtIdent(range.Peek(), "and")) { - while (result && ConsumeIfIdent(range, "and")) { - result = MediaQueryExpNode::And(result, ConsumeInParens(range, offsets)); + if (AtIdent(stream.Peek(), "and")) { + while (result && ConsumeIfIdent(stream, "and")) { + result = MediaQueryExpNode::And(result, ConsumeInParens(stream)); } - } else if (result && AtIdent(range.Peek(), "or") && + } else if (result && AtIdent(stream.Peek(), "or") && mode == ConditionMode::kNormal) { - while (result && ConsumeIfIdent(range, "or")) { - result = MediaQueryExpNode::Or(result, ConsumeInParens(range, offsets)); + while (result && ConsumeIfIdent(stream, "or")) { + result = MediaQueryExpNode::Or(result, ConsumeInParens(stream)); } } @@ -493,129 +478,127 @@ const MediaQueryExpNode* MediaQueryParser::ConsumeCondition( } const MediaQueryExpNode* MediaQueryParser::ConsumeInParens( - CSSParserTokenRange& range, - const CSSParserTokenOffsets& offsets) { - CSSParserTokenRange original_range = range; - - if (range.Peek().GetType() == kLeftParenthesisToken) { - CSSParserTokenRange block = range.ConsumeBlock(); - block.ConsumeWhitespace(); - range.ConsumeWhitespace(); - - CSSParserTokenRange original_block = block; - - // ( ) - const MediaQueryExpNode* condition = ConsumeCondition(block, offsets); - if (condition && block.AtEnd()) { - return MediaQueryExpNode::Nested(condition); + CSSParserTokenStream& stream) { + if (stream.Peek().GetType() == kLeftParenthesisToken) { + { + CSSParserTokenStream::RestoringBlockGuard guard(stream); + stream.ConsumeWhitespace(); + + // ( ) + const MediaQueryExpNode* condition = ConsumeCondition(stream); + if (condition && guard.Release()) { + stream.ConsumeWhitespace(); + return MediaQueryExpNode::Nested(condition); + } } - block = original_block; - // ( ) - const MediaQueryExpNode* feature = - ConsumeFeature(block, offsets, MediaQueryFeatureSet()); - if (feature && block.AtEnd()) { - return MediaQueryExpNode::Nested(feature); + { + CSSParserTokenStream::RestoringBlockGuard guard(stream); + stream.ConsumeWhitespace(); + // ( ) + const MediaQueryExpNode* feature = + ConsumeFeature(stream, MediaQueryFeatureSet()); + if (feature && guard.Release()) { + stream.ConsumeWhitespace(); + return MediaQueryExpNode::Nested(feature); + } } } - range = original_range; // - return ConsumeGeneralEnclosed(range); + return ConsumeGeneralEnclosed(stream); } const MediaQueryExpNode* MediaQueryParser::ConsumeGeneralEnclosed( - CSSParserTokenRange& range) { - if (range.Peek().GetType() != kLeftParenthesisToken && - range.Peek().GetType() != kFunctionToken) { + CSSParserTokenStream& stream) { + if (stream.Peek().GetType() != kLeftParenthesisToken && + stream.Peek().GetType() != kFunctionToken) { return nullptr; } - const CSSParserToken* first = range.begin(); + wtf_size_t start_offset = stream.Offset(); + StringView general_enclosed; + { + CSSParserTokenStream::BlockGuard guard(stream); - CSSParserTokenRange block = range.ConsumeBlock(); - block.ConsumeWhitespace(); + stream.ConsumeWhitespace(); - // Note that is optional in , so having an - // empty block is fine. - if (!block.AtEnd()) { - if (!ConsumeAnyValue(block) || !block.AtEnd()) { + // Note that is optional in , so having an + // empty block is fine. + ConsumeAnyValue(stream); + if (!stream.AtEnd()) { return nullptr; } } + wtf_size_t end_offset = stream.Offset(); + // TODO(crbug.com/962417): This is not well specified. - String general_enclosed = - range.MakeSubRange(first, range.begin()).Serialize(); - range.ConsumeWhitespace(); - return MakeGarbageCollected(general_enclosed); + general_enclosed = + stream.StringRangeAt(start_offset, end_offset - start_offset); + + stream.ConsumeWhitespace(); + return MakeGarbageCollected( + general_enclosed.ToString()); } MediaQuerySet* MediaQueryParser::ConsumeSingleCondition( - CSSParserTokenRange range, - const CSSParserTokenOffsets& offsets) { + CSSParserTokenStream& stream) { DCHECK_EQ(parser_type_, kMediaConditionParser); - DCHECK(!range.AtEnd()); - - const MediaQueryExpNode* node = ConsumeCondition(range, offsets); + DCHECK(!stream.AtEnd()); HeapVector> queries; - - if (!node || !range.AtEnd()) { + const MediaQueryExpNode* node = ConsumeCondition(stream); + if (!node) { queries.push_back(MediaQuery::CreateNotAll()); } else { queries.push_back(MakeGarbageCollected( MediaQuery::RestrictorType::kNone, media_type_names::kAll, node)); } - return MakeGarbageCollected(std::move(queries)); } -MediaQuery* MediaQueryParser::ConsumeQuery( - CSSParserTokenRange& range, - const CSSParserTokenOffsets& offsets) { +MediaQuery* MediaQueryParser::ConsumeQuery(CSSParserTokenStream& stream) { DCHECK_EQ(parser_type_, kMediaQuerySetParser); - CSSParserTokenRange original_range = range; + CSSParserTokenStream::State savepoint = stream.Save(); // First try to parse following grammar: // // [ not | only ]? [ and ]? - MediaQuery::RestrictorType restrictor = ConsumeRestrictor(range); - String type = ConsumeType(range); + MediaQuery::RestrictorType restrictor = ConsumeRestrictor(stream); + String type = ConsumeType(stream); if (!type.IsNull()) { - if (!ConsumeIfIdent(range, "and")) { + if (!ConsumeIfIdent(stream, "and")) { return MakeGarbageCollected(restrictor, type, nullptr); } if (const MediaQueryExpNode* node = - ConsumeCondition(range, offsets, ConditionMode::kWithoutOr)) { + ConsumeCondition(stream, ConditionMode::kWithoutOr)) { return MakeGarbageCollected(restrictor, type, node); } return nullptr; } - range = original_range; + stream.Restore(savepoint); // Otherwise, - if (const MediaQueryExpNode* node = ConsumeCondition(range, offsets)) { + if (const MediaQueryExpNode* node = ConsumeCondition(stream)) { return MakeGarbageCollected(MediaQuery::RestrictorType::kNone, media_type_names::kAll, node); } return nullptr; } -MediaQuerySet* MediaQueryParser::ParseImpl( - CSSParserTokenRange range, - const CSSParserTokenOffsets& offsets) { - range.ConsumeWhitespace(); +MediaQuerySet* MediaQueryParser::ParseImpl(CSSParserTokenStream& stream) { + stream.ConsumeWhitespace(); // Note that we currently expect an empty input to evaluate to an empty // MediaQuerySet, rather than "not all". - if (range.AtEnd()) { + if (stream.AtEnd()) { return MakeGarbageCollected(); } if (parser_type_ == kMediaConditionParser) { - return ConsumeSingleCondition(range, offsets); + return ConsumeSingleCondition(stream); } DCHECK_EQ(parser_type_, kMediaQuerySetParser); @@ -623,10 +606,11 @@ MediaQuerySet* MediaQueryParser::ParseImpl( HeapVector> queries; do { - MediaQuery* query = ConsumeQuery(range, offsets); - bool ok = query && (range.AtEnd() || range.Peek().GetType() == kCommaToken); + MediaQuery* query = ConsumeQuery(stream); + bool ok = + query && (stream.AtEnd() || stream.Peek().GetType() == kCommaToken); queries.push_back(ok ? query : MediaQuery::CreateNotAll()); - } while (!range.AtEnd() && ConsumeUntilCommaInclusive(range)); + } while (!stream.AtEnd() && ConsumeUntilCommaInclusive(stream)); return MakeGarbageCollected(std::move(queries)); } diff --git a/tools/under-control/src/third_party/blink/renderer/core/dom/document.idl b/tools/under-control/src/third_party/blink/renderer/core/dom/document.idl index 0245b5628..1a68da3e5 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/dom/document.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/dom/document.idl @@ -81,7 +81,7 @@ typedef (HTMLScriptElement or SVGScriptElement) HTMLOrSVGScriptElement; // https://html.spec.whatwg.org/C/#the-document-object // https://github.com/whatwg/html/pull/9538 - [RuntimeEnabled=HTMLUnsafeMethods,CallWith=ExecutionContext,MeasureAs=ParseHTMLUnsafe] static Document parseHTMLUnsafe(HTMLString html); + [CallWith=ExecutionContext,MeasureAs=ParseHTMLUnsafe] static Document parseHTMLUnsafe(HTMLString html); // resource metadata management diff --git a/tools/under-control/src/third_party/blink/renderer/core/dom/element.idl b/tools/under-control/src/third_party/blink/renderer/core/dom/element.idl index 47f56ad01..5f6faf21a 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/dom/element.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/dom/element.idl @@ -101,7 +101,7 @@ dictionary CheckVisibilityOptions { [CEReactions, RaisesException=Setter] attribute [LegacyNullToEmptyString, StringContext=TrustedHTML] DOMString outerHTML; [CEReactions, RaisesException] void insertAdjacentHTML(DOMString position, HTMLString text); // https://github.com/whatwg/html/pull/9538 - [RuntimeEnabled=HTMLUnsafeMethods,RaisesException,MeasureAs=SetHTMLUnsafe,CEReactions] void setHTMLUnsafe(HTMLString html); + [RaisesException,MeasureAs=SetHTMLUnsafe,CEReactions] void setHTMLUnsafe(HTMLString html); // Declarative Shadow DOM getInnerHTML() function. This version should be // considered deprecated, as we work to standardize the version below, @@ -114,7 +114,7 @@ dictionary CheckVisibilityOptions { // Pointer Lock // https://w3c.github.io/pointerlock/#extensions-to-the-element-interface // https://github.com/w3c/pointerlock/pull/49 - [MeasureAs=ElementRequestPointerLock, CallWith=ScriptState, RaisesException] any requestPointerLock(optional PointerLockOptions options = {}); + [MeasureAs=ElementRequestPointerLock, CallWith=ScriptState, RaisesException] Promise requestPointerLock(optional PointerLockOptions options = {}); // CSSOM View Module // https://drafts.csswg.org/cssom-view/#extension-to-the-element-interface diff --git a/tools/under-control/src/third_party/blink/renderer/core/dom/node_filter.idl b/tools/under-control/src/third_party/blink/renderer/core/dom/node_filter.idl index 67af4e23a..6ad4391d8 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/dom/node_filter.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/dom/node_filter.idl @@ -43,5 +43,5 @@ const unsigned long SHOW_DOCUMENT_FRAGMENT = 0x400; const unsigned long SHOW_NOTATION = 0x800; // historical - unsigned short acceptNode(Node node); + unsigned short acceptNode([NodeWrapInOwnContext] Node node); }; diff --git a/tools/under-control/src/third_party/blink/renderer/core/dom/node_iterator.idl b/tools/under-control/src/third_party/blink/renderer/core/dom/node_iterator.idl index 2f88bafd8..16360e54f 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/dom/node_iterator.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/dom/node_iterator.idl @@ -23,14 +23,14 @@ [ Exposed=Window ] interface NodeIterator { - [SameObject] readonly attribute Node root; - readonly attribute Node referenceNode; + [NodeWrapInOwnContext, SameObject] readonly attribute Node root; + [NodeWrapInOwnContext] readonly attribute Node referenceNode; readonly attribute boolean pointerBeforeReferenceNode; readonly attribute unsigned long whatToShow; readonly attribute NodeFilter? filter; - [RaisesException] Node? nextNode(); - [RaisesException] Node? previousNode(); + [NodeWrapInOwnContext, RaisesException] Node? nextNode(); + [NodeWrapInOwnContext, RaisesException] Node? previousNode(); [MeasureAs=NodeIteratorDetach] void detach(); }; diff --git a/tools/under-control/src/third_party/blink/renderer/core/dom/observable.idl b/tools/under-control/src/third_party/blink/renderer/core/dom/observable.idl index 14bd2d421..648c9bad0 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/dom/observable.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/dom/observable.idl @@ -8,6 +8,7 @@ callback SubscribeCallback = void (Subscriber subscriber); callback ObserverCallback = void (any value); callback ObserverCompleteCallback = void (); +callback Reducer = any (any accumulator, any currentValue, unsigned long long index); callback Mapper = any (any element, unsigned long long index); // Differs from Mapper only in return type, since this callback is exclusively @@ -17,8 +18,11 @@ callback Visitor = undefined (any element, unsigned long long index); // including the `index` parameter. callback Predicate = boolean (any value, unsigned long long index); -callback ObservableInspectorAbortHandler = undefined (any value); +// This callback returns an `any` that must convert into an `Observable`, via +// the `Observable` conversion semantics. +callback CatchCallback = any (any value); +callback ObservableInspectorAbortHandler = undefined (any value); dictionary ObservableInspector { ObserverCallback next; ObserverCallback error; @@ -62,6 +66,7 @@ interface Observable { [CallWith=ScriptState, RaisesException] Observable flatMap(Mapper mapper); [CallWith=ScriptState, RaisesException] Observable switchMap(Mapper mapper); [CallWith=ScriptState] Observable inspect(optional ObservableInspectorUnion inspect_observer = {}); + [CallWith=ScriptState, RaisesException, ImplementedAs=catchImpl] Observable catch(CatchCallback callback); // Promise-returning operators. // See https://wicg.github.io/observable/#promise-returning-operators. @@ -72,5 +77,6 @@ interface Observable { [CallWith=ScriptState] Promise some(Predicate predicate, optional SubscribeOptions options = {}); [CallWith=ScriptState] Promise every(Predicate predicate, optional SubscribeOptions options = {}); [CallWith=ScriptState] Promise find(Predicate predicate, optional SubscribeOptions options = {}); + [CallWith=ScriptState] Promise reduce(Reducer reducer, optional any initialValue, optional SubscribeOptions options = {}); }; diff --git a/tools/under-control/src/third_party/blink/renderer/core/dom/shadow_root.idl b/tools/under-control/src/third_party/blink/renderer/core/dom/shadow_root.idl index 88c64b65d..6d3be570d 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/dom/shadow_root.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/dom/shadow_root.idl @@ -88,7 +88,7 @@ interface ShadowRoot : DocumentFragment { Element createElementNS(DOMString? namespaceURI, DOMString qualifiedName, (DOMString or ElementCreationOptions) options); - [RuntimeEnabled=HTMLUnsafeMethods,RaisesException,MeasureAs=SetHTMLUnsafe,CEReactions] void setHTMLUnsafe(HTMLString string); + [RaisesException,MeasureAs=SetHTMLUnsafe,CEReactions] void setHTMLUnsafe(HTMLString string); }; ShadowRoot includes DocumentOrShadowRoot; diff --git a/tools/under-control/src/third_party/blink/renderer/core/dom/shadow_root_init.idl b/tools/under-control/src/third_party/blink/renderer/core/dom/shadow_root_init.idl index 3baead603..6a96a0307 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/dom/shadow_root_init.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/dom/shadow_root_init.idl @@ -14,6 +14,7 @@ dictionary ShadowRootInit { [RuntimeEnabled=ScopedCustomElementRegistry] CustomElementRegistry registry; boolean serializable; boolean clonable; + [RuntimeEnabled=ShadowRootReferenceTarget] DOMString referenceTarget; // Note: if you add a parameter here, be sure to add it to the list of checks // in Element::attachShadow() for existing declarative shadow roots. }; diff --git a/tools/under-control/src/third_party/blink/renderer/core/dom/tree_walker.idl b/tools/under-control/src/third_party/blink/renderer/core/dom/tree_walker.idl index 6f4f65cc1..8fe483488 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/dom/tree_walker.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/dom/tree_walker.idl @@ -23,16 +23,16 @@ [ Exposed=Window ] interface TreeWalker { - [SameObject] readonly attribute Node root; + [NodeWrapInOwnContext, SameObject] readonly attribute Node root; readonly attribute unsigned long whatToShow; readonly attribute NodeFilter? filter; - attribute Node currentNode; + [NodeWrapInOwnContext] attribute Node currentNode; - [RaisesException] Node? parentNode(); - [RaisesException] Node? firstChild(); - [RaisesException] Node? lastChild(); - [RaisesException] Node? previousSibling(); - [RaisesException] Node? nextSibling(); - [RaisesException] Node? previousNode(); - [RaisesException] Node? nextNode(); + [NodeWrapInOwnContext, RaisesException] Node? parentNode(); + [NodeWrapInOwnContext, RaisesException] Node? firstChild(); + [NodeWrapInOwnContext, RaisesException] Node? lastChild(); + [NodeWrapInOwnContext, RaisesException] Node? previousSibling(); + [NodeWrapInOwnContext, RaisesException] Node? nextSibling(); + [NodeWrapInOwnContext, RaisesException] Node? previousNode(); + [NodeWrapInOwnContext, RaisesException] Node? nextNode(); }; diff --git a/tools/under-control/src/third_party/blink/renderer/core/exported/web_view_impl.cc b/tools/under-control/src/third_party/blink/renderer/core/exported/web_view_impl.cc index 42b00bd0b..8f3603538 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/exported/web_view_impl.cc +++ b/tools/under-control/src/third_party/blink/renderer/core/exported/web_view_impl.cc @@ -58,6 +58,7 @@ #include "third_party/blink/public/mojom/input/focus_type.mojom-blink.h" #include "third_party/blink/public/mojom/page/draggable_region.mojom-blink.h" #include "third_party/blink/public/mojom/page/prerender_page_param.mojom.h" +#include "third_party/blink/public/mojom/partitioned_popins/partitioned_popin_params.mojom.h" #include "third_party/blink/public/mojom/window_features/window_features.mojom-blink.h" #include "third_party/blink/public/platform/interface_registry.h" #include "third_party/blink/public/platform/platform.h" @@ -507,7 +508,8 @@ WebView* WebView::Create( const SessionStorageNamespaceId& session_storage_namespace_id, std::optional page_base_background_color, const BrowsingContextGroupInfo& browsing_context_group_info, - const ColorProviderColorMaps* color_provider_colors) { + const ColorProviderColorMaps* color_provider_colors, + blink::mojom::PartitionedPopinParamsPtr partitioned_popin_params) { return WebViewImpl::Create( client, is_hidden ? mojom::blink::PageVisibilityState::kHidden @@ -516,7 +518,7 @@ WebView* WebView::Create( widgets_never_composited, To(opener), std::move(page_handle), agent_group_scheduler, session_storage_namespace_id, std::move(page_base_background_color), browsing_context_group_info, - color_provider_colors); + color_provider_colors, std::move(partitioned_popin_params)); } WebViewImpl* WebViewImpl::Create( @@ -533,13 +535,15 @@ WebViewImpl* WebViewImpl::Create( const SessionStorageNamespaceId& session_storage_namespace_id, std::optional page_base_background_color, const BrowsingContextGroupInfo& browsing_context_group_info, - const ColorProviderColorMaps* color_provider_colors) { + const ColorProviderColorMaps* color_provider_colors, + blink::mojom::PartitionedPopinParamsPtr partitioned_popin_params) { return new WebViewImpl( client, visibility, std::move(prerender_param), fenced_frame_mode, compositing_enabled, widgets_never_composited, opener, std::move(page_handle), agent_group_scheduler, session_storage_namespace_id, std::move(page_base_background_color), - browsing_context_group_info, color_provider_colors); + browsing_context_group_info, color_provider_colors, + std::move(partitioned_popin_params)); } size_t WebView::GetWebViewCount() { @@ -603,7 +607,8 @@ WebViewImpl::WebViewImpl( const SessionStorageNamespaceId& session_storage_namespace_id, std::optional page_base_background_color, const BrowsingContextGroupInfo& browsing_context_group_info, - const ColorProviderColorMaps* color_provider_colors) + const ColorProviderColorMaps* color_provider_colors, + blink::mojom::PartitionedPopinParamsPtr partitioned_popin_params) : widgets_never_composited_(widgets_never_composited), web_view_client_(client), chrome_client_(MakeGarbageCollected(this)), @@ -634,7 +639,8 @@ WebViewImpl::WebViewImpl( page_ = Page::CreateOrdinary( *chrome_client_, opener ? opener->GetPage() : nullptr, agent_group_scheduler.GetAgentGroupScheduler(), - browsing_context_group_info, color_provider_colors); + browsing_context_group_info, color_provider_colors, + std::move(partitioned_popin_params)); CoreInitializer::GetInstance().ProvideModulesToPage( *page_, session_storage_namespace_id_); diff --git a/tools/under-control/src/third_party/blink/renderer/core/frame/settings.json5 b/tools/under-control/src/third_party/blink/renderer/core/frame/settings.json5 index cc212e072..0936b6a95 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/frame/settings.json5 +++ b/tools/under-control/src/third_party/blink/renderer/core/frame/settings.json5 @@ -543,10 +543,10 @@ // Only used by web tests. { name: "windowShowState", - initial: "ui::WindowShowState::SHOW_STATE_DEFAULT", + initial: "ui::mojom::blink::WindowShowState::kDefault", invalidate: ["MediaQuery"], - type: "ui::WindowShowState", - include_paths: ["ui/base/ui_base_types.h"], + type: "ui::mojom::blink::WindowShowState", + include_paths: ["ui/base/mojom/window_show_state.mojom-blink.h"], }, // Only used by web tests. diff --git a/tools/under-control/src/third_party/blink/renderer/core/frame/viewport.idl b/tools/under-control/src/third_party/blink/renderer/core/frame/viewport.idl new file mode 100755 index 000000000..58b8b091b --- /dev/null +++ b/tools/under-control/src/third_party/blink/renderer/core/frame/viewport.idl @@ -0,0 +1,37 @@ +/* + * Copyright (C) 2024 Intel Corporation All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + + // Viewport API + // https://drafts.csswg.org/css-viewport-1/ + +[ + Exposed=Window, + ImplementedAs=DOMViewport, + RuntimeEnabled=ViewportSegments +] interface Viewport { + [ + MeasureAs=ViewportSegments + ] readonly attribute FrozenArray? segments; +}; diff --git a/tools/under-control/src/third_party/blink/renderer/core/frame/visual_viewport.idl b/tools/under-control/src/third_party/blink/renderer/core/frame/visual_viewport.idl index 790e0d2d1..5ef0a4fd1 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/frame/visual_viewport.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/frame/visual_viewport.idl @@ -41,14 +41,6 @@ [HighEntropy=Direct, Measure] readonly attribute double scale; - - // Segments API - // https://github.com/webscreens/window-segments - [ - RuntimeEnabled=ViewportSegments, - MeasureAs=ViewportSegments - ] readonly attribute FrozenArray? segments; - attribute EventHandler onresize; attribute EventHandler onscroll; [RuntimeEnabled=VisualViewportOnScrollEnd] attribute EventHandler onscrollend; diff --git a/tools/under-control/src/third_party/blink/renderer/core/frame/window.idl b/tools/under-control/src/third_party/blink/renderer/core/frame/window.idl index 27a29d252..d47deca3e 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/frame/window.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/frame/window.idl @@ -147,6 +147,10 @@ // https://github.com/WICG/ViewportAPI [Replaceable, SameObject] readonly attribute VisualViewport visualViewport; + // Viewport API + // https://drafts.csswg.org/css-viewport-1/ + [Replaceable, SameObject, RuntimeEnabled=ViewportSegments] readonly attribute Viewport viewport; + // client [HighEntropy=Direct, MeasureAs=WindowScreenX, Replaceable] readonly attribute long screenX; [HighEntropy=Direct, MeasureAs=WindowScreenY, Replaceable] readonly attribute long screenY; diff --git a/tools/under-control/src/third_party/blink/renderer/core/frame/window_popin.idl b/tools/under-control/src/third_party/blink/renderer/core/frame/window_popin.idl new file mode 100755 index 000000000..247f4f2b0 --- /dev/null +++ b/tools/under-control/src/third_party/blink/renderer/core/frame/window_popin.idl @@ -0,0 +1,27 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Popins are a type of pop-up for loading web content with a modal-like UI +// relative to its opener tab. The interface defined here helps developers to +// work with popins, e.g. to detect what popin types are available or tell +// if a window is a popin of a certain type. +// https://explainers-by-googlers.github.io/partitioned-popins/ + +enum PopinContextType { + // Popin with cookies/storage partitioned partitioned as though it were an + // iframe in the opener's context. + "partitioned", +}; + +[ + ImplementedAs=WindowPopin, + Exposed=Window, + RuntimeEnabled=PartitionedPopins +] partial interface Window { + // Returns an empty array if no popin context types are supported. + [Measure] sequence popinContextTypesSupported(); + + // Returns null if this isn't a popin context. + [Measure] PopinContextType? popinContextType(); +}; diff --git a/tools/under-control/src/third_party/blink/renderer/core/fullscreen/document_fullscreen.idl b/tools/under-control/src/third_party/blink/renderer/core/fullscreen/document_fullscreen.idl index 92c729bef..6ec7cee11 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/fullscreen/document_fullscreen.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/fullscreen/document_fullscreen.idl @@ -25,7 +25,7 @@ ImplementedAs=DocumentFullscreen ] partial interface Document { [LegacyLenientSetter] readonly attribute boolean fullscreenEnabled; - [LegacyLenientSetter, Unscopable, ImplementedAs=fullscreenElement] readonly attribute boolean fullscreen; + [LegacyLenientSetter, Unscopable] readonly attribute boolean fullscreen; [CallWith=ScriptState, RaisesException] Promise exitFullscreen(); @@ -33,7 +33,7 @@ attribute EventHandler onfullscreenerror; // Mozilla version - [MeasureAs=PrefixedDocumentIsFullscreen, ImplementedAs=fullscreenElement] readonly attribute boolean webkitIsFullScreen; + [MeasureAs=PrefixedDocumentIsFullscreen, ImplementedAs=fullscreen] readonly attribute boolean webkitIsFullScreen; [MeasureAs=PrefixedDocumentCurrentFullScreenElement, ImplementedAs=fullscreenElement] readonly attribute Element webkitCurrentFullScreenElement; [MeasureAs=PrefixedDocumentCancelFullScreen, ImplementedAs=webkitExitFullscreen] void webkitCancelFullScreen(); diff --git a/tools/under-control/src/third_party/blink/renderer/core/geometry/dom_point_init.idl b/tools/under-control/src/third_party/blink/renderer/core/geometry/dom_point_init.idl index 5c3d6f6b8..a71596ce0 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/geometry/dom_point_init.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/geometry/dom_point_init.idl @@ -4,7 +4,7 @@ // https://drafts.fxtf.org/geometry/#DOMPoint -dictionary DOMPointInit { +[ConvertibleToObject] dictionary DOMPointInit { unrestricted double x = 0; unrestricted double y = 0; unrestricted double z = 0; diff --git a/tools/under-control/src/third_party/blink/renderer/core/html/closewatcher/close_watcher.idl b/tools/under-control/src/third_party/blink/renderer/core/html/closewatcher/close_watcher.idl index 46f1fa403..93db3c757 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/html/closewatcher/close_watcher.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/html/closewatcher/close_watcher.idl @@ -4,8 +4,7 @@ // https://github.com/WICG/close-watcher [ - Exposed=Window, - RuntimeEnabled=CloseWatcher + Exposed=Window ] interface CloseWatcher : EventTarget { [CallWith=ScriptState, RaisesException] constructor(optional CloseWatcherOptions options = {}); diff --git a/tools/under-control/src/third_party/blink/renderer/core/html/custom/custom_element_registry.idl b/tools/under-control/src/third_party/blink/renderer/core/html/custom/custom_element_registry.idl index 76a968f52..b80004a13 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/html/custom/custom_element_registry.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/html/custom/custom_element_registry.idl @@ -9,7 +9,7 @@ interface CustomElementRegistry { [CallWith=ScriptState, RuntimeEnabled=ScopedCustomElementRegistry] constructor(); [CallWith=ScriptState, CEReactions, RaisesException, MeasureAs=CustomElementRegistryDefine] void define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions options = {}); any get(DOMString name); - [RuntimeEnabled=CustomElementsGetName] DOMString? getName(CustomElementConstructor constructor); + DOMString? getName(CustomElementConstructor constructor); [CallWith=ScriptState,RaisesException] Promise whenDefined(DOMString name); [CEReactions] void upgrade(Node root); }; diff --git a/tools/under-control/src/third_party/blink/renderer/core/html/html_element.idl b/tools/under-control/src/third_party/blink/renderer/core/html/html_element.idl index d164632f6..5b1533346 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/html/html_element.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/html/html_element.idl @@ -66,9 +66,10 @@ [ImplementedAs=offsetHeightForBinding] readonly attribute long offsetHeight; // The Popover API - [MeasureAs=ElementTogglePopover,RaisesException] boolean togglePopover(optional boolean force); - [MeasureAs=ElementShowPopover,RaisesException] void showPopover(); + [MeasureAs=ElementTogglePopover,RaisesException] boolean togglePopover(optional (TogglePopoverOptions or boolean) options); + [MeasureAs=ElementShowPopover,RaisesException] void showPopover(optional ShowPopoverOptions options); [MeasureAs=ElementHidePopover,RaisesException] void hidePopover(); + // See crbug.com/1418144. We need to change ReflectOnly based on a runtime flag, which isn't possible. // See also crbug.com/1416284. When HTMLPopoverHint is removed as a flag, we should be able to go back to using [Reflect]. // [CEReactions,Reflect,ReflectOnly=("auto","hint","manual"),ReflectEmpty="auto",ReflectInvalid="manual"] attribute DOMString? popover; @@ -78,7 +79,7 @@ [CEReactions, RaisesException=Setter, MeasureAs=HTMLElementInnerText, ImplementedAs=innerTextForBinding] attribute ([LegacyNullToEmptyString] DOMString or TrustedScript) innerText; [CEReactions, RaisesException=Setter, MeasureAs=HTMLElementOuterText] attribute [LegacyNullToEmptyString] DOMString outerText; - [RuntimeEnabled=WritingSuggestions, CEReactions] attribute DOMString writingSuggestions; + [CEReactions] attribute DOMString writingSuggestions; }; HTMLElement includes GlobalEventHandlers; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/credential_report_options.idl b/tools/under-control/src/third_party/blink/renderer/core/html/popover_options.idl similarity index 52% rename from tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/credential_report_options.idl rename to tools/under-control/src/third_party/blink/renderer/core/html/popover_options.idl index 6e36c7f6a..22350562e 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/credential_report_options.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/html/popover_options.idl @@ -2,6 +2,11 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -dictionary CredentialReportOptions { - PublicKeyCredentialReportOptions publicKey; +dictionary TogglePopoverOptions { + boolean force; + HTMLElement invoker; +}; + +dictionary ShowPopoverOptions { + HTMLElement invoker; }; diff --git a/tools/under-control/src/third_party/blink/renderer/core/url/url.idl b/tools/under-control/src/third_party/blink/renderer/core/url/url.idl index 48450b5ec..4792e5fc9 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/url/url.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/url/url.idl @@ -33,7 +33,7 @@ ] interface URL { [RaisesException] constructor(USVString url, optional USVString base); - [RuntimeEnabled=URLParse] static URL? parse(USVString url, optional USVString base); + static URL? parse(USVString url, optional USVString base); static boolean canParse(USVString url, optional USVString base); [RaisesException=Setter] stringifier attribute USVString href; diff --git a/tools/under-control/src/third_party/blink/renderer/core/url_pattern/url_pattern.idl b/tools/under-control/src/third_party/blink/renderer/core/url_pattern/url_pattern.idl index 3215a64b4..a96991e0a 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/url_pattern/url_pattern.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/url_pattern/url_pattern.idl @@ -33,7 +33,7 @@ enum URLPatternComponent { "protocol", "username", "password", "hostname", readonly attribute USVString search; readonly attribute USVString hash; - [RuntimeEnabled=URLPatternHasRegExpGroups] readonly attribute boolean hasRegExpGroups; + readonly attribute boolean hasRegExpGroups; [RuntimeEnabled=URLPatternCompareComponent, Measure] static short compareComponent(URLPatternComponent component, diff --git a/tools/under-control/src/third_party/blink/renderer/core/xml/dom_parser.idl b/tools/under-control/src/third_party/blink/renderer/core/xml/dom_parser.idl index f53d8b720..966b3af12 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/xml/dom_parser.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/xml/dom_parser.idl @@ -32,7 +32,5 @@ enum SupportedType { ] interface DOMParser { [CallWith=ScriptState] constructor(); - // TODO(crbug.com/329330085): remove the ParseFromStringOptions options - // entirely, once it has been disabled via DOMParserIncludeShadowRoots. - [NewObject] Document parseFromString(HTMLString str, SupportedType type, optional ParseFromStringOptions options = {}); + [NewObject] Document parseFromString(HTMLString str, SupportedType type); }; diff --git a/tools/under-control/src/third_party/blink/renderer/core/xml/parse_from_string_options.idl b/tools/under-control/src/third_party/blink/renderer/core/xml/parse_from_string_options.idl deleted file mode 100755 index 3a57e6704..000000000 --- a/tools/under-control/src/third_party/blink/renderer/core/xml/parse_from_string_options.idl +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2020 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// TODO(crbug.com/329330085): remove the ParseFromStringOptions options -// entirely, once it has been disabled via DOMParserIncludeShadowRoots. - -dictionary ParseFromStringOptions { - boolean includeShadowRoots = false; -}; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/ad_auction/auction_ad_config.idl b/tools/under-control/src/third_party/blink/renderer/modules/ad_auction/auction_ad_config.idl index c1e959e2c..81a10ac43 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/ad_auction/auction_ad_config.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/ad_auction/auction_ad_config.idl @@ -49,6 +49,8 @@ dictionary AuctionAdConfig { [ImplementedAs=trustedScoringSignalsUrlDeprecated] USVString trustedScoringSignalsUrl; long maxTrustedScoringSignalsURLLength; + [RuntimeEnabled=FledgeTrustedSignalsKVv2Support] + USVString trustedScoringSignalsCoordinator; sequence interestGroupBuyers; Promise auctionSignals; Promise sellerSignals; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/ad_auction/navigator_auction.idl b/tools/under-control/src/third_party/blink/renderer/modules/ad_auction/navigator_auction.idl index f77caab76..a06d7a803 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/ad_auction/navigator_auction.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/ad_auction/navigator_auction.idl @@ -49,7 +49,8 @@ typedef (USVString or FencedFrameConfig) UrnOrConfig; [RuntimeEnabled=Parakeet, CallWith=ScriptState, Measure, RaisesException] Promise createAdRequest(AdRequestConfig config); - [RuntimeEnabled=Parakeet, CallWith=ScriptState, Measure, RaisesException] + // The implementation resolves with a DOMString instead of a URL object. + [RuntimeEnabled=Parakeet, CallWith=ScriptState, PromiseIDLTypeMismatch, Measure, RaisesException] Promise finalizeAd(Ads ads, AuctionAdConfig config); [RuntimeEnabled=FencedFrames, CallWith=ScriptState] diff --git a/tools/under-control/src/third_party/blink/renderer/modules/ai/ai.idl b/tools/under-control/src/third_party/blink/renderer/modules/ai/ai.idl index bdae0995c..e0f42ad60 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/ai/ai.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/ai/ai.idl @@ -16,7 +16,7 @@ enum AICapabilityAvailability { ] interface AI { [ - // TODO: Add Measure + Measure, RuntimeEnabled=AIPromptAPI ] readonly attribute AIAssistantFactory assistant; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_assistant.idl b/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_assistant.idl new file mode 100755 index 000000000..279b83020 --- /dev/null +++ b/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_assistant.idl @@ -0,0 +1,51 @@ +// Copyright 2024 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. + +// https://github.com/explainers-by-googlers/prompt-api + +[ + Exposed=(Window,Worker), + RuntimeEnabled=AIPromptAPI +] +interface AIAssistant { + [ + Measure, + CallWith=ScriptState, + RaisesException, + RuntimeEnabled=AIPromptAPI + ] + Promise prompt(DOMString input); + [ + Measure, + CallWith=ScriptState, + RaisesException, + RuntimeEnabled=AIPromptAPI + ] + ReadableStream promptStreaming(DOMString input); + + [Measure] + readonly attribute unsigned long long maxTokens; + [Measure] + readonly attribute unsigned long long tokensSoFar; + [Measure] + readonly attribute unsigned long long tokensLeft; + + [Measure] + readonly attribute unsigned long topK; + [Measure] + readonly attribute float temperature; + + [ + Measure, + CallWith=ScriptState, + RaisesException + ] + Promise clone(); + [ + Measure, + CallWith=ScriptState, + RaisesException + ] + void destroy(); +}; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_text_session_options.idl b/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_assistant_create_options.idl similarity index 59% rename from tools/under-control/src/third_party/blink/renderer/modules/ai/ai_text_session_options.idl rename to tools/under-control/src/third_party/blink/renderer/modules/ai/ai_assistant_create_options.idl index 3a337b7cf..42e461899 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_text_session_options.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_assistant_create_options.idl @@ -4,8 +4,14 @@ // https://github.com/explainers-by-googlers/prompt-api -dictionary AITextSessionOptions { +dictionary AIAssistantInitialPrompt { + required AIAssistantInitialPromptRole role; + required DOMString content; +}; + +dictionary AIAssistantCreateOptions { [EnforceRange] unsigned long topK; float temperature; DOMString systemPrompt; + sequence initialPrompts; }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_assistant_factory.idl b/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_assistant_factory.idl index c1ca2ac08..fd24c808c 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_assistant_factory.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_assistant_factory.idl @@ -4,16 +4,23 @@ // https://github.com/explainers-by-googlers/prompt-api +enum AIAssistantInitialPromptRole { "system", "user", "assistant" }; +enum AIAssistantPromptRole { "user", "assistant" }; + [ Exposed=(Window,Worker), RuntimeEnabled=AIPromptAPI ] interface AIAssistantCapabilities { + [Measure] readonly attribute AICapabilityAvailability available; // Always null if available === "no" + [Measure] readonly attribute unsigned long? defaultTopK; + [Measure] readonly attribute unsigned long? maxTopK; + [Measure] readonly attribute float? defaultTemperature; }; @@ -23,17 +30,17 @@ interface AIAssistantCapabilities { ] interface AIAssistantFactory { [ - // TODO: Add Measure + Measure, CallWith=ScriptState, RaisesException ] Promise capabilities(); [ - // TODO: Add Measure + Measure, CallWith=ScriptState, RaisesException ] - Promise create( - optional AITextSessionOptions options = {} + Promise create( + optional AIAssistantCreateOptions options = {} ); }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_summarizer.idl b/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_summarizer.idl index 04a0b4cb4..ffd9af0ed 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_summarizer.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_summarizer.idl @@ -4,6 +4,11 @@ // TODO(crbug.com/356058864): Add explainer link +dictionary AISummarizerSummarizeOptions { + DOMString context; + AbortSignal signal; +}; + [ Exposed=(Window,Worker), RuntimeEnabled=AISummarizationAPI @@ -14,17 +19,26 @@ interface AISummarizer { CallWith=ScriptState, RaisesException ] - Promise summarize(DOMString input); + Promise summarize(DOMString input, optional AISummarizerSummarizeOptions options = {}); [ Measure, CallWith=ScriptState, RaisesException ] - ReadableStream summarizeStreaming(DOMString input); + ReadableStream summarizeStreaming(DOMString input, optional AISummarizerSummarizeOptions options = {}); [ Measure, CallWith=ScriptState, RaisesException ] void destroy(); + + [Measure] + readonly attribute DOMString sharedContext; + [Measure] + readonly attribute AISummarizerType type; + [Measure] + readonly attribute AISummarizerFormat format; + [Measure] + readonly attribute AISummarizerLength length; }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_summarizer_factory.idl b/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_summarizer_factory.idl index 62c171010..5ce9c8024 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_summarizer_factory.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_summarizer_factory.idl @@ -10,6 +10,24 @@ ] interface AISummarizerCapabilities { readonly attribute AICapabilityAvailability available; + + AICapabilityAvailability supportsType(AISummarizerType type); + AICapabilityAvailability supportsFormat(AISummarizerFormat format); + AICapabilityAvailability supportsLength(AISummarizerLength length); + + AICapabilityAvailability supportsInputLanguage(DOMString languageTag); +}; + +enum AISummarizerType { "tl;dr", "key-points", "teaser", "headline" }; +enum AISummarizerFormat { "plain-text", "markdown" }; +enum AISummarizerLength { "short", "medium", "long" }; + +dictionary AISummarizerCreateOptions { + AbortSignal signal; + DOMString sharedContext; + AISummarizerType type = "key-points"; + AISummarizerFormat format = "markdown"; + AISummarizerLength length = "medium"; }; [ @@ -22,7 +40,7 @@ interface AISummarizerFactory { CallWith=ScriptState, RaisesException ] - Promise create(); + Promise create(optional AISummarizerCreateOptions options = {}); [ Measure, CallWith=ScriptState, diff --git a/tools/under-control/src/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.idl b/tools/under-control/src/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.idl index 375f3a4b6..233226153 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.idl @@ -62,7 +62,8 @@ interface CanvasRenderingContext2D { // state void save(); // push state on state stack [NoAllocDirectCall, RaisesException] void restore(); // pop state stack if top state was pushed by save, and restore state - [MeasureAs=Canvas2DLayers, RuntimeEnabled=Canvas2dLayers, CallWith=ScriptState, RaisesException] void beginLayer(optional BeginLayerOptions options = {}); // push state on state stack and creates bitmap for subsequent draw ops + [MeasureAs=Canvas2DLayers, RuntimeEnabled=Canvas2dLayers, CallWith=ScriptState] void beginLayer(); // push state on state stack and creates bitmap for subsequent draw ops + [MeasureAs=Canvas2DLayers, RuntimeEnabled=Canvas2dLayersWithOptions, CallWith=ScriptState, RaisesException] void beginLayer(BeginLayerOptions options); // push state on state stack and creates bitmap for subsequent draw ops [NoAllocDirectCall, RuntimeEnabled=Canvas2dLayers, RaisesException] void endLayer(); // pop state stack if top state was pushed by beginLayer, restore state and draw the bitmap // Clear the canvas and reset the path void reset(); @@ -107,9 +108,10 @@ interface CanvasRenderingContext2D { // path API (see also CanvasPath) [HighEntropy, NoAllocDirectCall] void beginPath(); - [HighEntropy] void fill(optional CanvasFillRule winding); + [HighEntropy, NoAllocDirectCall] void fill(); + [HighEntropy] void fill(CanvasFillRule winding); [HighEntropy] void fill(Path2D path, optional CanvasFillRule winding); - [HighEntropy] void stroke(); + [HighEntropy, NoAllocDirectCall] void stroke(); [HighEntropy] void stroke(Path2D path); // Focus rings void drawFocusIfNeeded(Element element); diff --git a/tools/under-control/src/third_party/blink/renderer/modules/canvas/offscreencanvas2d/offscreen_canvas_rendering_context_2d.idl b/tools/under-control/src/third_party/blink/renderer/modules/canvas/offscreencanvas2d/offscreen_canvas_rendering_context_2d.idl index 6e571b329..f4d298fe9 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/canvas/offscreencanvas2d/offscreen_canvas_rendering_context_2d.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/canvas/offscreencanvas2d/offscreen_canvas_rendering_context_2d.idl @@ -14,7 +14,8 @@ // state void save(); // push state on state stack [NoAllocDirectCall, RaisesException] void restore(); // pop state stack if top state was pushed by save, and restore state - [MeasureAs=Canvas2DLayers, RuntimeEnabled=Canvas2dLayers, CallWith=ScriptState, RaisesException] void beginLayer(optional BeginLayerOptions options = {}); // push state on state stack and creates bitmap for subsequent draw ops + [MeasureAs=Canvas2DLayers, RuntimeEnabled=Canvas2dLayers, CallWith=ScriptState] void beginLayer(); // push state on state stack and creates bitmap for subsequent draw ops + [MeasureAs=Canvas2DLayers, RuntimeEnabled=Canvas2dLayersWithOptions, CallWith=ScriptState, RaisesException] void beginLayer(BeginLayerOptions options); // push state on state stack and creates bitmap for subsequent draw ops [NoAllocDirectCall, RuntimeEnabled=Canvas2dLayers, RaisesException] void endLayer(); // pop state stack if top state was pushed by beginLayer, restore state and draw the bitmap // Clear the canvas and reset the path void reset(); diff --git a/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/credentials_container.idl b/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/credentials_container.idl index d1c0176c3..ea5001df6 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/credentials_container.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/credentials_container.idl @@ -10,5 +10,4 @@ interface CredentialsContainer { [CallWith=ScriptState, RaisesException, MeasureAs=CredentialManagerStore] Promise store(Credential credential); [CallWith=ScriptState, RaisesException, MeasureAs=CredentialManagerCreate] Promise create(optional CredentialCreationOptions options = {}); [CallWith=ScriptState, MeasureAs=CredentialManagerPreventSilentAccess] Promise preventSilentAccess(); - [CallWith=ScriptState, RaisesException, RuntimeEnabled=CredentialManagerReport] Promise report(CredentialReportOptions options); }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/public_key_credential.idl b/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/public_key_credential.idl index 58d9427bc..ecc0cf3d8 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/public_key_credential.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/public_key_credential.idl @@ -2,6 +2,10 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +// https://w3c.github.io/webauthn/#typedefdef-publickeycredentialclientcapabilities + +typedef record PublicKeyCredentialClientCapabilities; + // https://w3c.github.io/webauthn/#publickeycredential [ @@ -13,9 +17,13 @@ [SameObject] readonly attribute AuthenticatorResponse response; [SameObject] readonly attribute DOMString? authenticatorAttachment; [CallWith=ScriptState] static Promise isUserVerifyingPlatformAuthenticatorAvailable(); + [RuntimeEnabled=WebAuthenticationClientCapabilities, CallWith=ScriptState] static Promise getClientCapabilities(); AuthenticationExtensionsClientOutputs getClientExtensionResults(); [CallWith=ScriptState] static Promise isConditionalMediationAvailable(); [RuntimeEnabled=WebAuthenticationJSONSerialization, CallWith=ScriptState] PublicKeyCredentialJSON toJSON(); [RuntimeEnabled=WebAuthenticationJSONSerialization, CallWith=ScriptState, RaisesException] static PublicKeyCredentialCreationOptions parseCreationOptionsFromJSON(PublicKeyCredentialCreationOptionsJSON options); [RuntimeEnabled=WebAuthenticationJSONSerialization, CallWith=ScriptState, RaisesException] static PublicKeyCredentialRequestOptions parseRequestOptionsFromJSON(PublicKeyCredentialRequestOptionsJSON options); + [CallWith=ScriptState, RaisesException, RuntimeEnabled=CredentialManagerReport] static Promise signalUnknownCredential(UnknownCredentialOptions options); + [CallWith=ScriptState, RaisesException, RuntimeEnabled=CredentialManagerReport] static Promise signalAllAcceptedCredentials(AllAcceptedCredentialsOptions options); + [CallWith=ScriptState, RaisesException, RuntimeEnabled=CredentialManagerReport] static Promise signalCurrentUserDetails(CurrentUserDetailsOptions options); }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/public_key_credential_creation_options.idl b/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/public_key_credential_creation_options.idl index 45eadee82..d90cc29d4 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/public_key_credential_creation_options.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/public_key_credential_creation_options.idl @@ -14,6 +14,6 @@ dictionary PublicKeyCredentialCreationOptions { sequence hints = []; // https://w3c.github.io/webauthn/#enumdef-attestationconveyancepreference DOMString attestation; - [RuntimeEnabled=WebAuthenticationAttestationFormats] sequence attestationFormats = []; + [RuntimeEnabled=WebAuthenticationAttestationFormats, MeasureAs=WebAuthentication_AttestationFormats] sequence attestationFormats = []; AuthenticationExtensionsClientInputs extensions; }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/public_key_credential_report_options.idl b/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/public_key_credential_report_options.idl deleted file mode 100755 index 3c6a76b19..000000000 --- a/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/public_key_credential_report_options.idl +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2024 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -dictionary PublicKeyCredentialReportOptions { - USVString rpId; - DOMString unknownCredentialId; - AllAcceptedCredentialsOptions allAcceptedCredentials; - CurrentUserDetailsOptions currentUserDetails; -}; - -dictionary AllAcceptedCredentialsOptions { - required DOMString userId; - required sequence allAcceptedCredentialsIds; -}; - -dictionary CurrentUserDetailsOptions { - required DOMString userId; - required DOMString name; - required DOMString displayName; -}; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/public_key_credential_signal_options.idl b/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/public_key_credential_signal_options.idl new file mode 100755 index 000000000..ee7b4f775 --- /dev/null +++ b/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/public_key_credential_signal_options.idl @@ -0,0 +1,21 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +dictionary UnknownCredentialOptions { + required DOMString rpId; + required Base64URLString credentialId; +}; + +dictionary AllAcceptedCredentialsOptions { + required DOMString rpId; + required Base64URLString userId; + required sequence allAcceptedCredentialIds; +}; + +dictionary CurrentUserDetailsOptions { + required DOMString rpId; + required Base64URLString userId; + required DOMString name; + required DOMString displayName; +}; \ No newline at end of file diff --git a/tools/under-control/src/third_party/blink/renderer/modules/crypto/subtle_crypto.idl b/tools/under-control/src/third_party/blink/renderer/modules/crypto/subtle_crypto.idl index fd323f05f..f89f4e6a6 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/crypto/subtle_crypto.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/crypto/subtle_crypto.idl @@ -46,7 +46,7 @@ typedef (object or DOMString) AlgorithmIdentifier; [CallWith=ScriptState, MeasureAs=SubtleCryptoGenerateKey, RaisesException] Promise generateKey(AlgorithmIdentifier algorithm, boolean extractable, sequence keyUsages); [CallWith=ScriptState, MeasureAs=SubtleCryptoDeriveKey, RaisesException] Promise deriveKey(AlgorithmIdentifier algorithm, CryptoKey baseKey, AlgorithmIdentifier derivedKeyType, boolean extractable, sequence keyUsages); - [CallWith=ScriptState, MeasureAs=SubtleCryptoDeriveBits, RaisesException] Promise deriveBits(AlgorithmIdentifier algorithm, CryptoKey baseKey, unsigned long length); + [CallWith=ScriptState, MeasureAs=SubtleCryptoDeriveBits, RaisesException] Promise deriveBits(AlgorithmIdentifier algorithm, CryptoKey baseKey, optional unsigned long? length = null); [CallWith=ScriptState, MeasureAs=SubtleCryptoImportKey, RaisesException] Promise importKey(KeyFormat format, (BufferSource or JsonWebKey) keyData, AlgorithmIdentifier algorithm, boolean extractable, sequence keyUsages); [CallWith=ScriptState, MeasureAs=SubtleCryptoExportKey, RaisesException] Promise exportKey(KeyFormat format, CryptoKey key); diff --git a/tools/under-control/src/third_party/blink/renderer/modules/csspaint/paint_rendering_context_2d.idl b/tools/under-control/src/third_party/blink/renderer/modules/csspaint/paint_rendering_context_2d.idl index 73f5cec21..c9e2aea0f 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/csspaint/paint_rendering_context_2d.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/csspaint/paint_rendering_context_2d.idl @@ -10,7 +10,8 @@ // state void save(); // push state on state stack [RaisesException] void restore(); // pop state stack if top state was pushed by save, and restore state - [MeasureAs=Canvas2DLayers, RuntimeEnabled=Canvas2dLayers, CallWith=ScriptState, RaisesException] void beginLayer(optional BeginLayerOptions options = {}); // push state on state stack and creates bitmap for subsequent draw ops + [MeasureAs=Canvas2DLayers, RuntimeEnabled=Canvas2dLayers, CallWith=ScriptState] void beginLayer(); // push state on state stack and creates bitmap for subsequent draw ops + [MeasureAs=Canvas2DLayers, RuntimeEnabled=Canvas2dLayersWithOptions, CallWith=ScriptState, RaisesException] void beginLayer(BeginLayerOptions options); // push state on state stack and creates bitmap for subsequent draw ops [RuntimeEnabled=Canvas2dLayers, RaisesException] void endLayer(); // pop state stack if top state was pushed by beginLayer, restore state and draw the bitmap // Clear the canvas and reset the path void reset(); diff --git a/tools/under-control/src/third_party/blink/renderer/modules/delegated_ink/delegated_ink_trail_presenter.idl b/tools/under-control/src/third_party/blink/renderer/modules/delegated_ink/delegated_ink_trail_presenter.idl index 4f0aa8a29..450b482c2 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/delegated_ink/delegated_ink_trail_presenter.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/delegated_ink/delegated_ink_trail_presenter.idl @@ -10,5 +10,4 @@ [CallWith=ScriptState, RaisesException] void updateInkTrailStartPoint(PointerEvent evt, InkTrailStyle style); readonly attribute Element? presentationArea; - [DeprecateAs=DelegatedInkExpectedImprovement] readonly attribute unsigned long expectedImprovement; }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/file_system_access/file_system_writable_file_stream.idl b/tools/under-control/src/third_party/blink/renderer/modules/file_system_access/file_system_writable_file_stream.idl index 6acd54548..26922d9ea 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/file_system_access/file_system_writable_file_stream.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/file_system_access/file_system_writable_file_stream.idl @@ -13,7 +13,7 @@ [ CallWith=ScriptState, RaisesException - ] Promise write((BufferSource or Blob or USVString or WriteParams) data); + ] Promise write([ConvertibleToObject] (BufferSource or Blob or USVString or WriteParams) data); [ CallWith=ScriptState, diff --git a/tools/under-control/src/third_party/blink/renderer/modules/file_system_access/write_params.idl b/tools/under-control/src/third_party/blink/renderer/modules/file_system_access/write_params.idl index 9a24bcd25..87a8eac8a 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/file_system_access/write_params.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/file_system_access/write_params.idl @@ -10,7 +10,7 @@ enum WriteCommandType { }; // https://fs.spec.whatwg.org/#dictdef-writeparams -dictionary WriteParams { +[ConvertibleToObject] dictionary WriteParams { required WriteCommandType type; unsigned long long? size; unsigned long long? position; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/gamepad/gamepad_effect_parameters.idl b/tools/under-control/src/third_party/blink/renderer/modules/gamepad/gamepad_effect_parameters.idl index 265e9d400..89319fa25 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/gamepad/gamepad_effect_parameters.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/gamepad/gamepad_effect_parameters.idl @@ -2,15 +2,12 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// Gamepad vibration is proposed as an extension to the Gamepad API. -// https://docs.google.com/document/d/1jPKzVRNzzU4dUsvLpSXm1VXPQZ8FP-0lKMT-R_p-s6g -// TODO(mattreynolds): Replace this with a link to w3c.github.io/gamepad +// https://www.w3.org/TR/gamepad/#gamepadeffectparameters-dictionary dictionary GamepadEffectParameters { double duration = 0.0; double startDelay = 0.0; double strongMagnitude = 0.0; double weakMagnitude = 0.0; - // https://github.com/MicrosoftEdge/MSEdgeExplainers/blob/main/GamepadHapticsActuatorTriggerRumble/explainer.md - [RuntimeEnabled=WGIGamepadTriggerRumble] double leftTrigger = 0.0; - [RuntimeEnabled=WGIGamepadTriggerRumble] double rightTrigger = 0.0; + double leftTrigger = 0.0; + double rightTrigger = 0.0; }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/gamepad/gamepad_haptic_actuator.idl b/tools/under-control/src/third_party/blink/renderer/modules/gamepad/gamepad_haptic_actuator.idl index 3bbe7ed0c..9166b0fe4 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/gamepad/gamepad_haptic_actuator.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/gamepad/gamepad_haptic_actuator.idl @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// https://w3c.github.io/gamepad/extensions.html#gamepadhapticactuatortype-enum +// https://www.w3.org/TR/gamepad/#gamepadhapticeffecttype-enum enum GamepadHapticActuatorType { "vibration", "dual-rumble" @@ -24,8 +24,7 @@ enum GamepadHapticsResult { [ Exposed=Window ] interface GamepadHapticActuator { - [RuntimeEnabled=WGIGamepadTriggerRumble, SameObject] - readonly attribute FrozenArray effects; + [SameObject] readonly attribute FrozenArray effects; [MeasureAs=GamepadHapticActuatorType] readonly attribute GamepadHapticActuatorType type; [CallWith=ScriptState] Promise playEffect( GamepadHapticEffectType type, diff --git a/tools/under-control/src/third_party/blink/renderer/modules/ml/ml_context.idl b/tools/under-control/src/third_party/blink/renderer/modules/ml/ml_context.idl index 0b0722879..de71c052d 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/ml/ml_context.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/ml/ml_context.idl @@ -27,24 +27,113 @@ dictionary MLSupportLimits { sequence dataTypes; }; -dictionary MLArgMinMaxSupportLimits { - MLSupportLimits input; - MLSupportLimits output; -}; - dictionary MLBinarySupportLimits { MLSupportLimits a; MLSupportLimits b; MLSupportLimits output; }; +dictionary MLBatchNormalizationSupportLimits { + MLSupportLimits input; + MLSupportLimits mean; + MLSupportLimits variance; + MLSupportLimits scale; + MLSupportLimits bias; + MLSupportLimits output; +}; + dictionary MLConcatSupportLimits { MLSupportLimits inputs; + MLSupportLimits output; +}; + +dictionary MLConv2dSupportLimits { + MLSupportLimits input; + MLSupportLimits filter; + MLSupportLimits bias; + MLSupportLimits output; +}; + +dictionary MLCumulativeSumSupportLimits { + MLSupportLimits input; + MLSupportLimits output; }; dictionary MLGatherSupportLimits { MLSupportLimits input; MLSupportLimits indices; + MLSupportLimits output; +}; + +dictionary MLGemmSupportLimits { + MLSupportLimits a; + MLSupportLimits b; + MLSupportLimits c; + MLSupportLimits output; +}; + +dictionary MLGruSupportLimits { + MLSupportLimits input; + MLSupportLimits weight; + MLSupportLimits recurrentWeight; + MLSupportLimits bias; + MLSupportLimits recurrentBias; + MLSupportLimits initialHiddenState; + MLSupportLimits outputs; +}; + +dictionary MLGruCellSupportLimits { + MLSupportLimits input; + MLSupportLimits weight; + MLSupportLimits recurrentWeight; + MLSupportLimits hiddenState; + MLSupportLimits bias; + MLSupportLimits recurrentBias; + MLSupportLimits output; +}; + +dictionary MLLstmSupportLimits { + MLSupportLimits input; + MLSupportLimits weight; + MLSupportLimits recurrentWeight; + MLSupportLimits bias; + MLSupportLimits recurrentBias; + MLSupportLimits peepholeWeight; + MLSupportLimits initialHiddenState; + MLSupportLimits initialCellState; + MLSupportLimits outputs; +}; + +dictionary MLLstmCellSupportLimits { + MLSupportLimits input; + MLSupportLimits weight; + MLSupportLimits recurrentWeight; + MLSupportLimits hiddenState; + MLSupportLimits cellState; + MLSupportLimits bias; + MLSupportLimits recurrentBias; + MLSupportLimits peepholeWeight; + MLSupportLimits outputs; +}; + +dictionary MLNormalizationSupportLimits { + MLSupportLimits input; + MLSupportLimits scale; + MLSupportLimits bias; + MLSupportLimits output; +}; + +dictionary MLPreluSupportLimits { + MLSupportLimits input; + MLSupportLimits slope; + MLSupportLimits output; +}; + +dictionary MLQuantizeDequantizeLinearSupportLimits { + MLSupportLimits input; + MLSupportLimits scale; + MLSupportLimits zeroPoint; + MLSupportLimits output; }; dictionary MLLogicalNotSupportLimits { @@ -57,10 +146,18 @@ dictionary MLSingleInputSupportLimits { MLSupportLimits output; }; +dictionary MLScatterSupportLimits { + MLSupportLimits input; + MLSupportLimits indices; + MLSupportLimits updates; + MLSupportLimits output; +}; + dictionary MLWhereSupportLimits { MLSupportLimits condition; MLSupportLimits trueValue; MLSupportLimits falseValue; + MLSupportLimits output; }; dictionary MLOpSupportLimits { @@ -69,9 +166,16 @@ dictionary MLOpSupportLimits { MLSupportLimits constant; MLSupportLimits output; - MLArgMinMaxSupportLimits argMin; - MLArgMinMaxSupportLimits argMax; + MLSingleInputSupportLimits argMin; + MLSingleInputSupportLimits argMax; + MLBatchNormalizationSupportLimits batchNormalization; + MLSingleInputSupportLimits cast; + MLSingleInputSupportLimits clamp; MLConcatSupportLimits concat; + MLConv2dSupportLimits conv2d; + MLConv2dSupportLimits convTranspose2d; + MLSingleInputSupportLimits cumulativeSum; + MLQuantizeDequantizeLinearSupportLimits dequantizeLinear; // Element-wise binary ops. MLBinarySupportLimits add; @@ -101,25 +205,67 @@ dictionary MLOpSupportLimits { MLSingleInputSupportLimits log; MLSingleInputSupportLimits neg; MLSingleInputSupportLimits reciprocal; + MLSingleInputSupportLimits sign; MLSingleInputSupportLimits sin; MLSingleInputSupportLimits sqrt; MLSingleInputSupportLimits tan; MLSingleInputSupportLimits elu; + MLSingleInputSupportLimits expand; MLGatherSupportLimits gather; + MLGatherSupportLimits gatherElements; MLSingleInputSupportLimits gelu; + MLGemmSupportLimits gemm; + MLGruSupportLimits gru; + MLGruCellSupportLimits gruCell; + MLSingleInputSupportLimits hardSigmoid; + MLSingleInputSupportLimits hardSwish; + MLNormalizationSupportLimits instanceNormalization; + MLNormalizationSupportLimits layerNormalization; MLSingleInputSupportLimits leakyRelu; + MLSingleInputSupportLimits linear; + MLLstmSupportLimits lstm; + MLLstmCellSupportLimits lstmCell; + MLBinarySupportLimits matmul; + MLSingleInputSupportLimits pad; + MLPreluSupportLimits prelu; + MLQuantizeDequantizeLinearSupportLimits quantizeLinear; + + // Pool2d. + MLSingleInputSupportLimits averagePool2d; + MLSingleInputSupportLimits l2Pool2d; + MLSingleInputSupportLimits maxPool2d; + + // Reduction ops. + MLSingleInputSupportLimits reduceL1; + MLSingleInputSupportLimits reduceL2; + MLSingleInputSupportLimits reduceLogSum; + MLSingleInputSupportLimits reduceLogSumExp; + MLSingleInputSupportLimits reduceMax; + MLSingleInputSupportLimits reduceMean; + MLSingleInputSupportLimits reduceMin; + MLSingleInputSupportLimits reduceProduct; + MLSingleInputSupportLimits reduceSum; + MLSingleInputSupportLimits reduceSumSquare; + MLSingleInputSupportLimits relu; + MLSingleInputSupportLimits resample2d; + MLSingleInputSupportLimits reshape; + MLScatterSupportLimits scatterND; MLSingleInputSupportLimits sigmoid; MLSingleInputSupportLimits slice; MLSingleInputSupportLimits softmax; MLSingleInputSupportLimits softplus; MLSingleInputSupportLimits softsign; MLSingleInputSupportLimits split; + MLSingleInputSupportLimits tanh; + MLSingleInputSupportLimits tile; + MLSingleInputSupportLimits transpose; + MLSingleInputSupportLimits triangular; MLWhereSupportLimits where; }; -typedef record MLNamedBuffers; +typedef record MLNamedTensors; [ RuntimeEnabled=MachineLearningNeuralNetwork, @@ -149,9 +295,9 @@ typedef record MLNamedBuffers; RuntimeEnabled=MachineLearningNeuralNetwork, CallWith=ScriptState, RaisesException - ] Promise createBuffer(MLBufferDescriptor descriptor); + ] Promise createTensor(MLTensorDescriptor descriptor); - // TODO(crbug.com/328105506): enable partial MLBuffer reads/writes. + // TODO(crbug.com/328105506): enable partial MLTensor reads/writes. // TODO(crbug.com/40278771): consider moving arguments into a dictonary // per W3C recommendations: // https://w3ctag.github.io/design-principles/#prefer-dictionaries @@ -159,8 +305,8 @@ typedef record MLNamedBuffers; RuntimeEnabled=MachineLearningNeuralNetwork, CallWith=ScriptState, RaisesException - ] void writeBuffer( - MLBuffer dstBuffer, + ] void writeTensor( + MLTensor dstTensor, [AllowShared] ArrayBufferView srcData, optional MLSize64 srcElementOffset = 0, optional MLSize64 srcElementSize); @@ -169,8 +315,8 @@ typedef record MLNamedBuffers; RuntimeEnabled=MachineLearningNeuralNetwork, CallWith=ScriptState, RaisesException - ] void writeBuffer( - MLBuffer dstBuffer, + ] void writeTensor( + MLTensor dstTensor, ArrayBuffer srcData, optional MLSize64 srcByteOffset = 0, optional MLSize64 srcByteSize); @@ -179,24 +325,24 @@ typedef record MLNamedBuffers; RuntimeEnabled=MachineLearningNeuralNetwork, CallWith=ScriptState, RaisesException - ] Promise readBuffer( - MLBuffer srcBuffer); + ] Promise readTensor( + MLTensor sourceTensor); [ RuntimeEnabled=MachineLearningNeuralNetwork, CallWith=ScriptState, RaisesException - ] Promise readBuffer( - MLBuffer srcBuffer, - [AllowShared] ArrayBufferView dstData); + ] Promise readTensor( + MLTensor sourceTensor, + [AllowShared] ArrayBufferView destinationData); [ RuntimeEnabled=MachineLearningNeuralNetwork, CallWith=ScriptState, RaisesException - ] Promise readBuffer( - MLBuffer srcBuffer, - [AllowShared] ArrayBuffer dstData); + ] Promise readTensor( + MLTensor sourceTensor, + [AllowShared] ArrayBuffer destinationData); // TODO(crbug.com/1273291): enable partial buffer dispatches. [ @@ -205,7 +351,7 @@ typedef record MLNamedBuffers; RaisesException, Measure ] void dispatch( - MLGraph graph, MLNamedBuffers inputs, MLNamedBuffers outputs); + MLGraph graph, MLNamedTensors inputs, MLNamedTensors outputs); [ RuntimeEnabled=MachineLearningNeuralNetwork, CallWith=ScriptState diff --git a/tools/under-control/src/third_party/blink/renderer/modules/ml/webnn/ml_graph.idl b/tools/under-control/src/third_party/blink/renderer/modules/ml/webnn/ml_graph.idl index 6defb7e55..34e487ff7 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/ml/webnn/ml_graph.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/ml/webnn/ml_graph.idl @@ -8,4 +8,5 @@ RuntimeEnabled=MachineLearningNeuralNetwork, Exposed=(Window, DedicatedWorker) ] interface MLGraph { + void destroy(); }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/ml/webnn/ml_graph_builder.idl b/tools/under-control/src/third_party/blink/renderer/modules/ml/webnn/ml_graph_builder.idl index cb4c21626..1f12b4a73 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/ml/webnn/ml_graph_builder.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/ml/webnn/ml_graph_builder.idl @@ -63,6 +63,11 @@ dictionary MLConvTranspose2dOptions : MLOperatorOptions { MLOperand bias; }; +dictionary MLCumulativeSumOptions : MLOperatorOptions { + boolean exclusive = false; + boolean reversed = false; +}; + dictionary MLGatherOptions : MLOperatorOptions { [EnforceRange] unsigned long axis = 0; }; @@ -230,6 +235,8 @@ dictionary MLTriangularOptions : MLOperatorOptions { [RaisesException] MLOperand conv2d(MLOperand input, MLOperand filter, optional MLConv2dOptions options = {}); [RaisesException] MLOperand convTranspose2d(MLOperand input, MLOperand filter, optional MLConvTranspose2dOptions options = {}); + [RaisesException] MLOperand cumulativeSum(MLOperand input, [EnforceRange] unsigned long axis, optional MLCumulativeSumOptions options = {}); + // Element-wise binary operations [RaisesException] MLOperand add(MLOperand a, MLOperand b, optional MLOperatorOptions options = {}); [RaisesException] MLOperand sub(MLOperand a, MLOperand b, optional MLOperatorOptions options = {}); @@ -252,6 +259,7 @@ dictionary MLTriangularOptions : MLOperatorOptions { [RaisesException] MLOperand floor(MLOperand x, optional MLOperatorOptions options = {}); [RaisesException] MLOperand log(MLOperand x, optional MLOperatorOptions options = {}); [RaisesException] MLOperand neg(MLOperand x, optional MLOperatorOptions options = {}); + [RaisesException] MLOperand sign(MLOperand x, optional MLOperatorOptions options = {}); [RaisesException] MLOperand sin(MLOperand x, optional MLOperatorOptions options = {}); [RaisesException] MLOperand tan(MLOperand x, optional MLOperatorOptions options = {}); [RaisesException] MLOperand erf(MLOperand x, optional MLOperatorOptions options = {}); @@ -262,12 +270,16 @@ dictionary MLTriangularOptions : MLOperatorOptions { [RaisesException] MLOperand cast(MLOperand input, MLOperandDataType outputDataType, optional MLOperatorOptions options = {}); + [RaisesException] MLOperand dequantizeLinear(MLOperand input, MLOperand scale, MLOperand zeroPoint, optional MLOperatorOptions options = {}); + [RaisesException] MLOperand elu(MLOperand x, optional MLEluOptions options = {}); [RaisesException] MLOperand expand(MLOperand input, sequence<[EnforceRange] unsigned long> newShape, optional MLOperatorOptions options = {}); [RaisesException] MLOperand gather(MLOperand input, MLOperand indices, optional MLGatherOptions options = {}); + [RaisesException] MLOperand gatherElements(MLOperand input, MLOperand indices, optional MLGatherOptions options = {}); + [RaisesException] MLOperand gelu(MLOperand input, optional MLOperatorOptions options = {}); [RaisesException] MLOperand gemm(MLOperand a, MLOperand b, optional MLGemmOptions options = {}); @@ -314,6 +326,8 @@ dictionary MLTriangularOptions : MLOperatorOptions { [RaisesException] MLOperand prelu(MLOperand x, MLOperand slope, optional MLOperatorOptions options = {}); + [RaisesException] MLOperand quantizeLinear(MLOperand input, MLOperand scale, MLOperand zeroPoint, optional MLOperatorOptions options = {}); + [RaisesException] MLOperand reduceL1(MLOperand input, optional MLReduceOptions options = {}); [RaisesException] MLOperand reduceL2(MLOperand input, optional MLReduceOptions options = {}); [RaisesException] MLOperand reduceLogSum(MLOperand input, optional MLReduceOptions options = {}); @@ -334,6 +348,8 @@ dictionary MLTriangularOptions : MLOperatorOptions { RaisesException ] MLOperand resample2d(MLOperand input, optional MLResample2dOptions options = {}); + [RaisesException] MLOperand scatterND(MLOperand input, MLOperand indices, MLOperand updates, optional MLOperatorOptions options = {}); + [RaisesException] MLOperand sigmoid(MLOperand input, optional MLOperatorOptions options = {}); [RaisesException] MLOperand slice(MLOperand input, sequence<[EnforceRange] unsigned long> starts, sequence<[EnforceRange] unsigned long> sizes, optional MLOperatorOptions options = {}); @@ -351,6 +367,9 @@ dictionary MLTriangularOptions : MLOperatorOptions { [RaisesException] MLOperand tanh(MLOperand input, optional MLOperatorOptions options = {}); + [RaisesException] MLOperand tile( + MLOperand input, sequence<[EnforceRange] unsigned long> repetitions, optional MLOperatorOptions options = {}); + [RaisesException] MLOperand transpose( MLOperand input, optional MLTransposeOptions options = {}); diff --git a/tools/under-control/src/third_party/blink/renderer/modules/ml/webnn/ml_buffer.idl b/tools/under-control/src/third_party/blink/renderer/modules/ml/webnn/ml_tensor.idl similarity index 75% rename from tools/under-control/src/third_party/blink/renderer/modules/ml/webnn/ml_buffer.idl rename to tools/under-control/src/third_party/blink/renderer/modules/ml/webnn/ml_tensor.idl index 957e5ed44..3f6273473 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/ml/webnn/ml_buffer.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/ml/webnn/ml_tensor.idl @@ -2,14 +2,15 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// https://www.w3.org/TR/webnn/#api-mlbuffer +// https://www.w3.org/TR/webnn/#api-mltensor [ RuntimeEnabled=MachineLearningNeuralNetwork, Exposed=(Window, DedicatedWorker) -] interface MLBuffer { +] interface MLTensor { readonly attribute MLOperandDataType dataType; readonly attribute FrozenArray shape; + readonly attribute MLTensorUsageFlags usage; void destroy(); }; \ No newline at end of file diff --git a/tools/under-control/src/third_party/blink/renderer/modules/ml/webnn/ml_buffer_descriptor.idl b/tools/under-control/src/third_party/blink/renderer/modules/ml/webnn/ml_tensor_descriptor.idl similarity index 56% rename from tools/under-control/src/third_party/blink/renderer/modules/ml/webnn/ml_buffer_descriptor.idl rename to tools/under-control/src/third_party/blink/renderer/modules/ml/webnn/ml_tensor_descriptor.idl index 34e3ecf2d..04ecdcd8b 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/ml/webnn/ml_buffer_descriptor.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/ml/webnn/ml_tensor_descriptor.idl @@ -2,10 +2,10 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// https://www.w3.org/TR/webnn/#api-mlbuffer +// https://www.w3.org/TR/webnn/#api-mltensor typedef [EnforceRange] unsigned long long MLSize64; -dictionary MLBufferDescriptor : MLOperandDescriptor { - // TODO(crbug.com/343638938): Add buffer usage flags. +dictionary MLTensorDescriptor : MLOperandDescriptor { + MLTensorUsageFlags usage; }; \ No newline at end of file diff --git a/tools/under-control/src/third_party/blink/renderer/modules/ml/webnn/ml_tensor_usage.idl b/tools/under-control/src/third_party/blink/renderer/modules/ml/webnn/ml_tensor_usage.idl new file mode 100755 index 000000000..049d28baf --- /dev/null +++ b/tools/under-control/src/third_party/blink/renderer/modules/ml/webnn/ml_tensor_usage.idl @@ -0,0 +1,18 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// https://www.w3.org/TR/webnn/#api-mltensor + +typedef unsigned long MLFlagsConstant; + +typedef [EnforceRange] unsigned long MLTensorUsageFlags; +[ + RuntimeEnabled=MachineLearningNeuralNetwork, + Exposed=(Window, DedicatedWorker), + SecureContext +] namespace MLTensorUsage { + const MLFlagsConstant WEBGPU_INTEROP = 1; + const MLFlagsConstant READ = 2; + const MLFlagsConstant WRITE = 4; +}; \ No newline at end of file diff --git a/tools/under-control/src/third_party/blink/renderer/modules/on_device_translation/language_detector.idl b/tools/under-control/src/third_party/blink/renderer/modules/on_device_translation/language_detector.idl index 50f0c8a0a..c4e9a4643 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/on_device_translation/language_detector.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/on_device_translation/language_detector.idl @@ -11,7 +11,7 @@ dictionary LanguageDetectionResult { [ RuntimeEnabled=LanguageDetectionAPI, - Exposed=(Window,Worker) + Exposed=Window ] interface LanguageDetector { [ diff --git a/tools/under-control/src/third_party/blink/renderer/modules/on_device_translation/translation.idl b/tools/under-control/src/third_party/blink/renderer/modules/on_device_translation/translation.idl index 081b88e87..a27472ece 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/on_device_translation/translation.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/on_device_translation/translation.idl @@ -33,6 +33,7 @@ interface Translation { ); [ RuntimeEnabled=LanguageDetectionAPI, + Exposed=Window, Measure, CallWith=ScriptState, RaisesException @@ -40,6 +41,7 @@ interface Translation { Promise canDetect(); [ RuntimeEnabled=LanguageDetectionAPI, + Exposed=Window, Measure, CallWith=ScriptState, RaisesException diff --git a/tools/under-control/src/third_party/blink/renderer/modules/payments/payment_instruments.idl b/tools/under-control/src/third_party/blink/renderer/modules/payments/payment_instruments.idl index b9dd1dcf8..9bf309ee6 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/payments/payment_instruments.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/payments/payment_instruments.idl @@ -9,7 +9,7 @@ Exposed=(Window,Worker) ] interface PaymentInstruments { [CallWith=ScriptState, RaisesException, ImplementedAs=deleteInstrument, Measure] Promise delete(DOMString instrumentKey); - [CallWith=ScriptState, RaisesException, Measure] Promise get(DOMString instrumentKey); + [CallWith=ScriptState, RaisesException, Measure] Promise get(DOMString instrumentKey); [CallWith=ScriptState, RaisesException, Measure] Promise> keys(); [CallWith=ScriptState, RaisesException, Measure] Promise has(DOMString instrumentKey); [CallWith=ScriptState, RaisesException, Measure] Promise set(DOMString instrumentKey, PaymentInstrument details); diff --git a/tools/under-control/src/third_party/blink/renderer/modules/payments/payment_manager.idl b/tools/under-control/src/third_party/blink/renderer/modules/payments/payment_manager.idl index 6ff91fb6f..a1ca7b940 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/payments/payment_manager.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/payments/payment_manager.idl @@ -18,5 +18,6 @@ enum PaymentDelegation { ] interface PaymentManager { [SameObject, DeprecateAs=PaymentInstruments, RuntimeEnabled=PaymentInstruments] readonly attribute PaymentInstruments instruments; attribute DOMString userHint; - [CallWith=ScriptState, RaisesException] Promise enableDelegations(sequence delegations); + // The implementation resolves with boolean, even though the spec says undefined. + [CallWith=ScriptState, PromiseIDLTypeMismatch, RaisesException] Promise enableDelegations(sequence delegations); }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/payments/payment_options.idl b/tools/under-control/src/third_party/blink/renderer/modules/payments/payment_options.idl index 681f33d62..ba56ae8ef 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/payments/payment_options.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/payments/payment_options.idl @@ -10,7 +10,7 @@ enum PaymentShippingType { "pickup" }; -dictionary PaymentOptions { +[ConvertibleToObject] dictionary PaymentOptions { boolean requestPayerName = false; boolean requestPayerEmail = false; boolean requestPayerPhone = false; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_rtp_encoding_parameters.idl b/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_rtp_encoding_parameters.idl index 6d75a4ab4..fc2b95da8 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_rtp_encoding_parameters.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_rtp_encoding_parameters.idl @@ -10,11 +10,20 @@ enum RTCPriorityType { "high" }; +// https://github.com/w3c/webrtc-extensions/pull/221 +dictionary RTCResolutionRestriction { + unsigned long maxWidth; + unsigned long maxHeight; +}; + // https://w3c.github.io/webrtc-pc/#rtcrtpencodingparameters* dictionary RTCRtpEncodingParameters : RTCRtpCodingParameters { boolean active = true; unsigned long maxBitrate; double scaleResolutionDownBy; + // https://github.com/w3c/webrtc-extensions/pull/221 + [RuntimeEnabled=RTCRtpScaleResolutionDownTo] + RTCResolutionRestriction scaleResolutionDownTo; // https://w3c.github.io/webrtc-priority/#encoding-parameters RTCPriorityType priority = "low"; RTCPriorityType networkPriority = "low"; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_rtp_transceiver.idl b/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_rtp_transceiver.idl index 4fb6e3314..6ab3d289d 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_rtp_transceiver.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_rtp_transceiver.idl @@ -23,8 +23,8 @@ interface RTCRtpTransceiver { readonly attribute RTCRtpTransceiverDirection? currentDirection; [Measure, RaisesException] void stop(); [RaisesException] void setCodecPreferences(sequence codecs); - [RuntimeEnabled=RTCRtpHeaderExtensionControl] sequence getHeaderExtensionsToNegotiate(); - [RaisesException, RuntimeEnabled=RTCRtpHeaderExtensionControl] void setHeaderExtensionsToNegotiate( + sequence getHeaderExtensionsToNegotiate(); + [RaisesException] void setHeaderExtensionsToNegotiate( sequence extensions); - [RuntimeEnabled=RTCRtpHeaderExtensionControl] sequence getNegotiatedHeaderExtensions(); + sequence getNegotiatedHeaderExtensions(); }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/permissions/permission_descriptor.idl b/tools/under-control/src/third_party/blink/renderer/modules/permissions/permission_descriptor.idl index ff255e11c..869cd9bb9 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/permissions/permission_descriptor.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/permissions/permission_descriptor.idl @@ -42,6 +42,7 @@ enum PermissionName { "keyboard-lock", "pointer-lock", "fullscreen", + "web-app-installation", }; // The PermissionDescriptor dictionary is a base to describe permissions. Some diff --git a/tools/under-control/src/third_party/blink/renderer/modules/web_install/navigator_web_install.idl b/tools/under-control/src/third_party/blink/renderer/modules/web_install/navigator_web_install.idl new file mode 100755 index 000000000..c18e3ace9 --- /dev/null +++ b/tools/under-control/src/third_party/blink/renderer/modules/web_install/navigator_web_install.idl @@ -0,0 +1,13 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// https://github.com/MicrosoftEdge/MSEdgeExplainers/blob/main/WebInstall/explainer.md + +[ + RuntimeEnabled=WebAppInstallation, + ImplementedAs=NavigatorWebInstall +] partial interface Navigator { + [CallWith=ScriptState, RaisesException] Promise install(USVString manifest_id); + [CallWith=ScriptState, RaisesException] Promise install(USVString manifest_id, USVString install_url); +}; \ No newline at end of file diff --git a/tools/under-control/src/third_party/blink/renderer/modules/web_install/web_install_result.idl b/tools/under-control/src/third_party/blink/renderer/modules/web_install/web_install_result.idl new file mode 100755 index 000000000..179a0becf --- /dev/null +++ b/tools/under-control/src/third_party/blink/renderer/modules/web_install/web_install_result.idl @@ -0,0 +1,9 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// https://github.com/MicrosoftEdge/MSEdgeExplainers/blob/main/WebInstall/explainer.md + +dictionary WebInstallResult { + USVString manifestId; +}; \ No newline at end of file diff --git a/tools/under-control/src/third_party/blink/renderer/modules/webaudio/audio_context.idl b/tools/under-control/src/third_party/blink/renderer/modules/webaudio/audio_context.idl index 41ce0e206..758e6067c 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/webaudio/audio_context.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/webaudio/audio_context.idl @@ -40,26 +40,20 @@ dictionary AudioSinkOptions { ActiveScriptWrappable ] interface AudioContext : BaseAudioContext { [HighEntropy, CallWith=ExecutionContext, RaisesException, Measure] constructor(optional AudioContextOptions contextOptions = {}); - [MeasureAs=AudioContextSuspend, RaisesException, CallWith=ScriptState, ImplementedAs=suspendContext] Promise suspend(); - [MeasureAs=AudioContextClose, RaisesException, CallWith=ScriptState, ImplementedAs=closeContext] Promise close(); - [MeasureAs=AudioContextResume, RaisesException, CallWith=ScriptState, ImplementedAs=resumeContext] Promise resume(); - - // Output timestamp - [MeasureAs=AudioContextGetOutputTimestamp, CallWith=ScriptState] AudioTimestamp getOutputTimestamp(); - - // Number of seconds of processing latency incurred by the AudioContext - // passing the audio from the AudioDestinationNode to the audio subsystem [HighEntropy=Direct, MeasureAs=AudioContextBaseLatency] readonly attribute double baseLatency; [HighEntropy=Direct, MeasureAs=AudioContextOutputLatency] readonly attribute double outputLatency; - - [RuntimeEnabled=AudioContextPlayoutStats, SameObject] readonly attribute AudioPlayoutStats playoutStats; - + [MeasureAs=AudioContextSinkId, SecureContext] readonly attribute (DOMString or AudioSinkInfo) sinkId; + [SecureContext] attribute EventHandler onsinkchange; + [RuntimeEnabled=AudioContextOnError, MeasureAs=AudioContextOnError] attribute EventHandler onerror; + [MeasureAs=AudioContextGetOutputTimestamp, CallWith=ScriptState] AudioTimestamp getOutputTimestamp(); + [MeasureAs=AudioContextResume, RaisesException, CallWith=ScriptState, ImplementedAs=resumeContext] Promise resume(); + [MeasureAs=AudioContextSuspend, RaisesException, CallWith=ScriptState, ImplementedAs=suspendContext] Promise suspend(); + [MeasureAs=AudioContextClose, RaisesException, CallWith=ScriptState, ImplementedAs=closeContext] Promise close(); + [MeasureAs=AudioContextSetSinkId, RaisesException, CallWith=ScriptState, SecureContext] Promise setSinkId((DOMString or AudioSinkOptions) sinkId); [RaisesException, MeasureAs=AudioContextCreateMediaElementSource] MediaElementAudioSourceNode createMediaElementSource(HTMLMediaElement mediaElement); [RaisesException, MeasureAs=AudioContextCreateMediaStreamSource] MediaStreamAudioSourceNode createMediaStreamSource(MediaStream mediaStream); [RaisesException, MeasureAs=AudioContextCreateMediaStreamDestination] MediaStreamAudioDestinationNode createMediaStreamDestination(); - [MeasureAs=AudioContextSinkId, SecureContext] readonly attribute (DOMString or AudioSinkInfo) sinkId; - [MeasureAs=AudioContextSetSinkId, RaisesException, CallWith=ScriptState, SecureContext] Promise setSinkId((DOMString or AudioSinkOptions) sinkId); - [RuntimeEnabled=AudioContextOnError, MeasureAs=AudioContextOnError] attribute EventHandler onerror; - [SecureContext] attribute EventHandler onsinkchange; + // https://wicg.github.io/web_audio_playout + [RuntimeEnabled=AudioContextPlayoutStats, SameObject] readonly attribute AudioPlayoutStats playoutStats; }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/webaudio/audio_worklet_node_options.idl b/tools/under-control/src/third_party/blink/renderer/modules/webaudio/audio_worklet_node_options.idl index c5c2e9fbb..cdd7945bc 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/webaudio/audio_worklet_node_options.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/webaudio/audio_worklet_node_options.idl @@ -3,7 +3,7 @@ // found in the LICENSE file. // See: https://webaudio.github.io/web-audio-api/#dictdef-audioworkletnodeoptions -dictionary AudioWorkletNodeOptions : AudioNodeOptions { +[ConvertibleToObject] dictionary AudioWorkletNodeOptions : AudioNodeOptions { unsigned long numberOfInputs = 1; unsigned long numberOfOutputs = 1; sequence outputChannelCount; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/webaudio/base_audio_context.idl b/tools/under-control/src/third_party/blink/renderer/modules/webaudio/base_audio_context.idl index 2d00d600d..4fd219184 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/webaudio/base_audio_context.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/webaudio/base_audio_context.idl @@ -2,67 +2,46 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// See https://webaudio.github.io/web-audio-api/#BaseAudioContext - +// https://webaudio.github.io/web-audio-api/#enumdef-audiocontextstate enum AudioContextState { "suspended", "running", "closed" }; +// https://webaudio.github.io/web-audio-api/#BaseAudioContext callback DecodeErrorCallback = void (DOMException error); callback DecodeSuccessCallback = void (AudioBuffer decodedData); - [ Exposed=Window, ActiveScriptWrappable ] interface BaseAudioContext : EventTarget { - // All rendered audio ultimately connects to destination, which represents the audio hardware. readonly attribute AudioDestinationNode destination; - - // All scheduled times are relative to this time in seconds. - readonly attribute double currentTime; - - // All AudioNodes in the context run at this sample-rate (sample-frames per second). [HighEntropy=Direct, Measure] readonly attribute float sampleRate; - - // All panning is relative to this listener. + readonly attribute double currentTime; readonly attribute AudioListener listener; - - // Current state of the AudioContext readonly attribute AudioContextState state; + [SecureContext] readonly attribute AudioWorklet audioWorklet; + attribute EventHandler onstatechange; + [RaisesException, MeasureAs=AudioContextCreateAnalyser] AnalyserNode createAnalyser(); + [RaisesException, MeasureAs=AudioContextCreateBiquadFilter] BiquadFilterNode createBiquadFilter(); [RaisesException] AudioBuffer createBuffer(unsigned long numberOfChannels, unsigned long numberOfFrames, float sampleRate); - - // Asynchronous audio file data decoding. - // TODO(crbug.com/841185): `successCallback` and `errorCallback` are not - // nullable in the spec. - [RaisesException, MeasureAs=AudioContextDecodeAudioData, CallWith=ScriptState] Promise decodeAudioData(ArrayBuffer audioData, optional DecodeSuccessCallback? successCallback, optional DecodeErrorCallback? errorCallback); - - // Sources [RaisesException, MeasureAs=AudioContextCreateBufferSource] AudioBufferSourceNode createBufferSource(); + [RaisesException, MeasureAs=AudioContextCreateChannelMerger] ChannelMergerNode createChannelMerger(optional unsigned long numberOfInputs); + [RaisesException, MeasureAs=AudioContextCreateChannelSplitter] ChannelSplitterNode createChannelSplitter(optional unsigned long numberOfOutputs); [RaisesException, MeasureAs=AudioContextCreateConstantSource] ConstantSourceNode createConstantSource(); - - // Processing nodes - [RaisesException, MeasureAs=AudioContextCreateGain] GainNode createGain(); + [RaisesException, MeasureAs=AudioContextCreateConvolver] ConvolverNode createConvolver(); [RaisesException, MeasureAs=AudioContextCreateDelay] DelayNode createDelay(optional double maxDelayTime); - [RaisesException, MeasureAs=AudioContextCreateBiquadFilter] BiquadFilterNode createBiquadFilter(); + [HighEntropy, RaisesException, MeasureAs=AudioContextCreateDynamicsCompressor] DynamicsCompressorNode createDynamicsCompressor(); + [RaisesException, MeasureAs=AudioContextCreateGain] GainNode createGain(); [RaisesException, MeasureAs=AudioContextCreateIIRFilter] IIRFilterNode createIIRFilter(sequence feedForward, sequence feedBack); - [RaisesException, MeasureAs=AudioContextCreateWaveShaper] WaveShaperNode createWaveShaper(); + [HighEntropy, RaisesException, MeasureAs=AudioContextCreateOscillator] OscillatorNode createOscillator(); [RaisesException, MeasureAs=AudioContextCreatePannerAutomated] PannerNode createPanner(); - [RaisesException, MeasureAs=AudioContextCreateConvolver] ConvolverNode createConvolver(); - [HighEntropy, RaisesException, MeasureAs=AudioContextCreateDynamicsCompressor] DynamicsCompressorNode createDynamicsCompressor(); - [RaisesException, MeasureAs=AudioContextCreateAnalyser] AnalyserNode createAnalyser(); + [RaisesException, MeasureAs=AudioContextCreatePeriodicWave] PeriodicWave createPeriodicWave(sequence real, sequence imag, optional PeriodicWaveConstraints constraints = {}); [RaisesException, MeasureAs=AudioContextCreateScriptProcessor] ScriptProcessorNode createScriptProcessor(optional unsigned long bufferSize, optional unsigned long numberOfInputChannels, optional unsigned long numberOfOutputChannels); [RaisesException, MeasureAs=AudioContextCreateStereoPanner] StereoPannerNode createStereoPanner(); - [HighEntropy, RaisesException, MeasureAs=AudioContextCreateOscillator] OscillatorNode createOscillator(); - [RaisesException, MeasureAs=AudioContextCreatePeriodicWave] PeriodicWave createPeriodicWave(sequence real, sequence imag, optional PeriodicWaveConstraints constraints = {}); - - // Channel splitting and merging - [RaisesException, MeasureAs=AudioContextCreateChannelSplitter] ChannelSplitterNode createChannelSplitter(optional unsigned long numberOfOutputs); - [RaisesException, MeasureAs=AudioContextCreateChannelMerger] ChannelMergerNode createChannelMerger(optional unsigned long numberOfInputs); - - [SecureContext] readonly attribute AudioWorklet audioWorklet; + [RaisesException, MeasureAs=AudioContextCreateWaveShaper] WaveShaperNode createWaveShaper(); - attribute EventHandler onstatechange; + [RaisesException, MeasureAs=AudioContextDecodeAudioData, CallWith=ScriptState] Promise decodeAudioData(ArrayBuffer audioData, optional DecodeSuccessCallback? successCallback, optional DecodeErrorCallback? errorCallback); }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/webgl/webgl2_rendering_context_base.idl b/tools/under-control/src/third_party/blink/renderer/modules/webgl/webgl2_rendering_context_base.idl index 87bbbd570..cbf89ceb8 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/webgl/webgl2_rendering_context_base.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/webgl/webgl2_rendering_context_base.idl @@ -393,118 +393,53 @@ interface mixin WebGL2RenderingContextBase { // called with only two arguments, it goes to the WebGL1 signatures; if it's // called with three or four arguments, it goes to the WebGL2 specific // signatures. - [NoAllocDirectCall] void uniform1fv(WebGLUniformLocation? location, - [AllowShared, PassAsSpan, BufferSourceTypeNoSizeLimit] Float32Array v, + [NoAllocDirectCall] void uniform1fv(WebGLUniformLocation? location, Float32List v, GLuint srcOffset, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniform1fv(WebGLUniformLocation? location, sequence v, + [NoAllocDirectCall] void uniform2fv(WebGLUniformLocation? location, Float32List v, GLuint srcOffset, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniform2fv(WebGLUniformLocation? location, - [AllowShared, PassAsSpan, BufferSourceTypeNoSizeLimit] Float32Array v, + [NoAllocDirectCall] void uniform3fv(WebGLUniformLocation? location, Float32List v, GLuint srcOffset, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniform2fv(WebGLUniformLocation? location, sequence v, + [NoAllocDirectCall] void uniform4fv(WebGLUniformLocation? location, Float32List v, GLuint srcOffset, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniform3fv(WebGLUniformLocation? location, - [AllowShared, PassAsSpan, BufferSourceTypeNoSizeLimit] Float32Array v, + [NoAllocDirectCall] void uniform1iv(WebGLUniformLocation? location, Int32List v, GLuint srcOffset, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniform3fv(WebGLUniformLocation? location, sequence v, + [NoAllocDirectCall] void uniform2iv(WebGLUniformLocation? location, Int32List v, GLuint srcOffset, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniform4fv(WebGLUniformLocation? location, - [AllowShared, PassAsSpan, BufferSourceTypeNoSizeLimit] Float32Array v, + [NoAllocDirectCall] void uniform3iv(WebGLUniformLocation? location, Int32List v, GLuint srcOffset, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniform4fv(WebGLUniformLocation? location, sequence v, + [NoAllocDirectCall] void uniform4iv(WebGLUniformLocation? location, Int32List v, GLuint srcOffset, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniform1iv(WebGLUniformLocation? location, - [AllowShared, PassAsSpan, BufferSourceTypeNoSizeLimit] Int32Array v, - GLuint srcOffset, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniform1iv(WebGLUniformLocation? location, sequence v, - GLuint srcOffset, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniform2iv(WebGLUniformLocation? location, - [AllowShared, PassAsSpan] Int32Array v, - GLuint srcOffset, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniform2iv(WebGLUniformLocation? location, sequence v, - GLuint srcOffset, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniform3iv(WebGLUniformLocation? location, - [AllowShared, PassAsSpan] Int32Array v, - GLuint srcOffset, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniform3iv(WebGLUniformLocation? location, sequence v, - GLuint srcOffset, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniform4iv(WebGLUniformLocation? location, - [AllowShared, PassAsSpan] Int32Array v, - GLuint srcOffset, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniform4iv(WebGLUniformLocation? location, sequence v, - GLuint srcOffset, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniform1uiv(WebGLUniformLocation? location, - [AllowShared, PassAsSpan] Uint32Array v, - optional GLuint srcOffset = 0, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniform1uiv(WebGLUniformLocation? location, sequence v, - optional GLuint srcOffset = 0, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniform2uiv(WebGLUniformLocation? location, - [AllowShared, PassAsSpan] Uint32Array v, - optional GLuint srcOffset = 0, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniform2uiv(WebGLUniformLocation? location, sequence v, + [NoAllocDirectCall] void uniform1uiv(WebGLUniformLocation? location, Uint32List v, optional GLuint srcOffset = 0, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniform3uiv(WebGLUniformLocation? location, - [AllowShared, PassAsSpan] Uint32Array v, + [NoAllocDirectCall] void uniform2uiv(WebGLUniformLocation? location, Uint32List v, optional GLuint srcOffset = 0, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniform3uiv(WebGLUniformLocation? location, sequence v, + [NoAllocDirectCall] void uniform3uiv(WebGLUniformLocation? location, Uint32List v, optional GLuint srcOffset = 0, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniform4uiv(WebGLUniformLocation? location, - [AllowShared, PassAsSpan] Uint32Array v, + [NoAllocDirectCall] void uniform4uiv(WebGLUniformLocation? location, Uint32List v, optional GLuint srcOffset = 0, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniform4uiv(WebGLUniformLocation? location, sequence v, - optional GLuint srcOffset = 0, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniformMatrix2fv(WebGLUniformLocation? location, GLboolean transpose, - [AllowShared, PassAsSpan] Float32Array array, - GLuint srcOffset, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniformMatrix2fv(WebGLUniformLocation? location, GLboolean transpose, sequence array, - GLuint srcOffset, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniformMatrix3fv(WebGLUniformLocation? location, GLboolean transpose, - [AllowShared, PassAsSpan] Float32Array array, + [NoAllocDirectCall] void uniformMatrix2fv(WebGLUniformLocation? location, GLboolean transpose, Float32List array, GLuint srcOffset, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniformMatrix3fv(WebGLUniformLocation? location, GLboolean transpose, sequence array, + [NoAllocDirectCall] void uniformMatrix3fv(WebGLUniformLocation? location, GLboolean transpose, Float32List array, GLuint srcOffset, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniformMatrix4fv(WebGLUniformLocation? location, GLboolean transpose, - [AllowShared, PassAsSpan] Float32Array array, + [NoAllocDirectCall] void uniformMatrix4fv(WebGLUniformLocation? location, GLboolean transpose, Float32List array, GLuint srcOffset, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniformMatrix4fv(WebGLUniformLocation? location, GLboolean transpose, sequence array, - GLuint srcOffset, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniformMatrix2x3fv(WebGLUniformLocation? location, GLboolean transpose, - [AllowShared, PassAsSpan] Float32Array value, - optional GLuint srcOffset = 0, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniformMatrix2x3fv(WebGLUniformLocation? location, GLboolean transpose, sequence value, - optional GLuint srcOffset = 0, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniformMatrix3x2fv(WebGLUniformLocation? location, GLboolean transpose, - [AllowShared, PassAsSpan] Float32Array value, - optional GLuint srcOffset = 0, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniformMatrix3x2fv(WebGLUniformLocation? location, GLboolean transpose, sequence value, - optional GLuint srcOffset = 0, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniformMatrix2x4fv(WebGLUniformLocation? location, GLboolean transpose, - [AllowShared, PassAsSpan] Float32Array value, - optional GLuint srcOffset = 0, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniformMatrix2x4fv(WebGLUniformLocation? location, GLboolean transpose, sequence value, - optional GLuint srcOffset = 0, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniformMatrix4x2fv(WebGLUniformLocation? location, GLboolean transpose, - [AllowShared, PassAsSpan] Float32Array value, + [NoAllocDirectCall] void uniformMatrix2x3fv(WebGLUniformLocation? location, GLboolean transpose, Float32List value, optional GLuint srcOffset = 0, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniformMatrix4x2fv(WebGLUniformLocation? location, GLboolean transpose, sequence value, + [NoAllocDirectCall] void uniformMatrix3x2fv(WebGLUniformLocation? location, GLboolean transpose, Float32List value, optional GLuint srcOffset = 0, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniformMatrix3x4fv(WebGLUniformLocation? location, GLboolean transpose, - [AllowShared, PassAsSpan] Float32Array value, + [NoAllocDirectCall] void uniformMatrix2x4fv(WebGLUniformLocation? location, GLboolean transpose, Float32List value, optional GLuint srcOffset = 0, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniformMatrix3x4fv(WebGLUniformLocation? location, GLboolean transpose, sequence value, + [NoAllocDirectCall] void uniformMatrix4x2fv(WebGLUniformLocation? location, GLboolean transpose, Float32List value, optional GLuint srcOffset = 0, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniformMatrix4x3fv(WebGLUniformLocation? location, GLboolean transpose, - [AllowShared, PassAsSpan] Float32Array value, + [NoAllocDirectCall] void uniformMatrix3x4fv(WebGLUniformLocation? location, GLboolean transpose, Float32List value, optional GLuint srcOffset = 0, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniformMatrix4x3fv(WebGLUniformLocation? location, GLboolean transpose, sequence value, + [NoAllocDirectCall] void uniformMatrix4x3fv(WebGLUniformLocation? location, GLboolean transpose, Float32List value, optional GLuint srcOffset = 0, optional GLuint srcLength = 0); void vertexAttribI4i(GLuint index, GLint x, GLint y, GLint z, GLint w); - [NoAllocDirectCall] void vertexAttribI4iv(GLuint index, [AllowShared, PassAsSpan] Int32Array v); - [NoAllocDirectCall] void vertexAttribI4iv(GLuint index, sequence v); + [NoAllocDirectCall] void vertexAttribI4iv(GLuint index, Int32List v); void vertexAttribI4ui(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); - [NoAllocDirectCall] void vertexAttribI4uiv(GLuint index, [AllowShared, PassAsSpan] Uint32Array v); - [NoAllocDirectCall] void vertexAttribI4uiv(GLuint index, sequence v); + [NoAllocDirectCall] void vertexAttribI4uiv(GLuint index, Uint32List v); void vertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset); /* Writing to the drawing buffer */ @@ -515,15 +450,10 @@ interface mixin WebGL2RenderingContextBase { /* Multiple Render Targets */ [NoAllocDirectCall] void drawBuffers(sequence buffers); - [NoAllocDirectCall] void clearBufferiv(GLenum buffer, GLint drawbuffer, - [AllowShared, PassAsSpan] Int32Array value, optional GLuint srcOffset = 0); - [NoAllocDirectCall] void clearBufferiv(GLenum buffer, GLint drawbuffer, sequence value, optional GLuint srcOffset = 0); + [NoAllocDirectCall] void clearBufferiv(GLenum buffer, GLint drawbuffer, Int32List value, optional GLuint srcOffset = 0); [NoAllocDirectCall] void clearBufferuiv(GLenum buffer, GLint drawbuffer, - [AllowShared, PassAsSpan] Uint32Array value, optional GLuint srcOffset = 0); - [NoAllocDirectCall] void clearBufferuiv(GLenum buffer, GLint drawbuffer, sequence value, optional GLuint srcOffset = 0); - [NoAllocDirectCall] void clearBufferfv(GLenum buffer, GLint drawbuffer, - [AllowShared, PassAsSpan] Float32Array value, optional GLuint srcOffset = 0); - [NoAllocDirectCall] void clearBufferfv(GLenum buffer, GLint drawbuffer, sequence value, optional GLuint srcOffset = 0); + Uint32List value, optional GLuint srcOffset = 0); + [NoAllocDirectCall] void clearBufferfv(GLenum buffer, GLint drawbuffer, Float32List value, optional GLuint srcOffset = 0); [NoAllocDirectCall] void clearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil); /* Query Objects */ diff --git a/tools/under-control/src/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.idl b/tools/under-control/src/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.idl index 3dc5d7e7c..5257bb331 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.idl @@ -39,6 +39,9 @@ typedef unsigned short GLushort; typedef unsigned long GLuint; typedef unrestricted float GLfloat; typedef unrestricted float GLclampf; +typedef [PassAsSpan] ([AllowShared, BufferSourceTypeNoSizeLimit] Float32Array or sequence) Float32List; +typedef [PassAsSpan] ([AllowShared, BufferSourceTypeNoSizeLimit] Int32Array or sequence) Int32List; +typedef [PassAsSpan] ([AllowShared, BufferSourceTypeNoSizeLimit] Uint32Array or sequence) Uint32List; interface mixin WebGLRenderingContextBase { @@ -485,10 +488,10 @@ interface mixin WebGLRenderingContextBase { void bufferData(GLenum target, GLsizeiptr size, GLenum usage); void bufferData(GLenum target, [AllowShared, BufferSourceTypeNoSizeLimit] ArrayBufferView data, GLenum usage); void bufferData(GLenum target, [AllowShared, BufferSourceTypeNoSizeLimit] ArrayBuffer? data, GLenum usage); - void bufferSubData(GLenum target, GLintptr offset, - [AllowShared, PassAsSpan] BufferSource data); GLenum checkFramebufferStatus(GLenum target); + void bufferSubData(GLenum target, GLintptr offset, + [AllowShared, PassAsSpan, BufferSourceTypeNoSizeLimit] BufferSource data); [NoAllocDirectCall] void clear(GLbitfield mask); [NoAllocDirectCall] void clearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); [NoAllocDirectCall] void clearDepth(GLclampf depth); @@ -668,63 +671,37 @@ interface mixin WebGLRenderingContextBase { GLenum format, GLenum type, VideoFrame frame); [NoAllocDirectCall] void uniform1f(WebGLUniformLocation? location, GLfloat x); - [NoAllocDirectCall] void uniform1fv(WebGLUniformLocation? location, - [AllowShared, PassAsSpan, BufferSourceTypeNoSizeLimit] Float32Array v); - [NoAllocDirectCall] void uniform1fv(WebGLUniformLocation? location, sequence v); + [NoAllocDirectCall] void uniform1fv(WebGLUniformLocation? location, Float32List v); [NoAllocDirectCall] void uniform1i(WebGLUniformLocation? location, GLint x); - [NoAllocDirectCall] void uniform1iv(WebGLUniformLocation? location, - [AllowShared, PassAsSpan, BufferSourceTypeNoSizeLimit] Int32Array v); - [NoAllocDirectCall] void uniform1iv(WebGLUniformLocation? location, sequence v); + [NoAllocDirectCall] void uniform1iv(WebGLUniformLocation? location, Int32List v); [NoAllocDirectCall] void uniform2f(WebGLUniformLocation? location, GLfloat x, GLfloat y); - [NoAllocDirectCall] void uniform2fv(WebGLUniformLocation? location, - [AllowShared, PassAsSpan] Float32Array v); - [NoAllocDirectCall] void uniform2fv(WebGLUniformLocation? location, sequence v); + [NoAllocDirectCall] void uniform2fv(WebGLUniformLocation? location, Float32List v); [NoAllocDirectCall] void uniform2i(WebGLUniformLocation? location, GLint x, GLint y); - [NoAllocDirectCall] void uniform2iv(WebGLUniformLocation? location, - [AllowShared, PassAsSpan] Int32Array v); - [NoAllocDirectCall] void uniform2iv(WebGLUniformLocation? location, sequence v); + [NoAllocDirectCall] void uniform2iv(WebGLUniformLocation? location, Int32List v); [NoAllocDirectCall] void uniform3f(WebGLUniformLocation? location, GLfloat x, GLfloat y, GLfloat z); - [NoAllocDirectCall] void uniform3fv(WebGLUniformLocation? location, - [AllowShared, PassAsSpan] Float32Array v); - [NoAllocDirectCall] void uniform3fv(WebGLUniformLocation? location, sequence v); + [NoAllocDirectCall] void uniform3fv(WebGLUniformLocation? location, Float32List v); [NoAllocDirectCall] void uniform3i(WebGLUniformLocation? location, GLint x, GLint y, GLint z); - [NoAllocDirectCall] void uniform3iv(WebGLUniformLocation? location, - [AllowShared, PassAsSpan] Int32Array v); - [NoAllocDirectCall] void uniform3iv(WebGLUniformLocation? location, sequence v); + [NoAllocDirectCall] void uniform3iv(WebGLUniformLocation? location, Int32List v); [NoAllocDirectCall] void uniform4f(WebGLUniformLocation? location, GLfloat x, GLfloat y, GLfloat z, GLfloat w); - [NoAllocDirectCall] void uniform4fv(WebGLUniformLocation? location, - [AllowShared, PassAsSpan] Float32Array v); - [NoAllocDirectCall] void uniform4fv(WebGLUniformLocation? location, sequence v); + [NoAllocDirectCall] void uniform4fv(WebGLUniformLocation? location, Float32List v); [NoAllocDirectCall] void uniform4i(WebGLUniformLocation? location, GLint x, GLint y, GLint z, GLint w); - [NoAllocDirectCall] void uniform4iv(WebGLUniformLocation? location, - [AllowShared, PassAsSpan] Int32Array v); - [NoAllocDirectCall] void uniform4iv(WebGLUniformLocation? location, sequence v); - - [NoAllocDirectCall] void uniformMatrix2fv(WebGLUniformLocation? location, GLboolean transpose, - [AllowShared, PassAsSpan] Float32Array array); - [NoAllocDirectCall] void uniformMatrix2fv(WebGLUniformLocation? location, GLboolean transpose, sequence array); - [NoAllocDirectCall] void uniformMatrix3fv(WebGLUniformLocation? location, GLboolean transpose, - [AllowShared, PassAsSpan] Float32Array array); - [NoAllocDirectCall] void uniformMatrix3fv(WebGLUniformLocation? location, GLboolean transpose, sequence array); - [NoAllocDirectCall] void uniformMatrix4fv(WebGLUniformLocation? location, GLboolean transpose, - [AllowShared, PassAsSpan] Float32Array array); - [NoAllocDirectCall] void uniformMatrix4fv(WebGLUniformLocation? location, GLboolean transpose, sequence array); + [NoAllocDirectCall] void uniform4iv(WebGLUniformLocation? location, Int32List v); + + [NoAllocDirectCall] void uniformMatrix2fv(WebGLUniformLocation? location, GLboolean transpose, Float32List array); + [NoAllocDirectCall] void uniformMatrix3fv(WebGLUniformLocation? location, GLboolean transpose, Float32List array); + [NoAllocDirectCall] void uniformMatrix4fv(WebGLUniformLocation? location, GLboolean transpose, Float32List array); void useProgram(WebGLProgram? program); void validateProgram(WebGLProgram program); [NoAllocDirectCall] void vertexAttrib1f(GLuint indx, GLfloat x); - [NoAllocDirectCall] void vertexAttrib1fv(GLuint indx, [AllowShared, PassAsSpan] Float32Array values); - [NoAllocDirectCall] void vertexAttrib1fv(GLuint indx, sequence values); + [NoAllocDirectCall] void vertexAttrib1fv(GLuint indx, Float32List values); [NoAllocDirectCall] void vertexAttrib2f(GLuint indx, GLfloat x, GLfloat y); - [NoAllocDirectCall] void vertexAttrib2fv(GLuint indx, [AllowShared, PassAsSpan] Float32Array values); - [NoAllocDirectCall] void vertexAttrib2fv(GLuint indx, sequence values); + [NoAllocDirectCall] void vertexAttrib2fv(GLuint indx, Float32List values); [NoAllocDirectCall] void vertexAttrib3f(GLuint indx, GLfloat x, GLfloat y, GLfloat z); - [NoAllocDirectCall] void vertexAttrib3fv(GLuint indx, [AllowShared, PassAsSpan] Float32Array values); - [NoAllocDirectCall] void vertexAttrib3fv(GLuint indx, sequence values); + [NoAllocDirectCall] void vertexAttrib3fv(GLuint indx, Float32List values); [NoAllocDirectCall] void vertexAttrib4f(GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w); - [NoAllocDirectCall] void vertexAttrib4fv(GLuint indx, [AllowShared, PassAsSpan] Float32Array values); - [NoAllocDirectCall] void vertexAttrib4fv(GLuint indx, sequence values); + [NoAllocDirectCall] void vertexAttrib4fv(GLuint indx, Float32List values); [NoAllocDirectCall] void vertexAttribPointer(GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLintptr offset); diff --git a/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_adapter.idl b/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_adapter.idl index cdc2c7eb7..75c2ffcde 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_adapter.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_adapter.idl @@ -10,11 +10,11 @@ ] interface GPUAdapter { [SameObject] readonly attribute GPUSupportedFeatures features; [SameObject] readonly attribute GPUSupportedLimits limits; - [SameObject, RuntimeEnabled=WebGPUAdapterInfoAttribute] readonly attribute GPUAdapterInfo info; + [SameObject] readonly attribute GPUAdapterInfo info; readonly attribute boolean isFallbackAdapter; [RuntimeEnabled=WebGPUExperimentalFeatures] readonly attribute boolean isCompatibilityMode; [CallWith=ScriptState] Promise requestDevice(optional GPUDeviceDescriptor descriptor = {}); // TODO(crbug.com/335383516): Remove this once synchronous info attribute is implemented. - [CallWith=ScriptState, Measure] Promise requestAdapterInfo(); + [RuntimeEnabled=DeprecatedRequestAdapterInfo, DeprecateAs=V8GPUAdapter_RequestAdapterInfo_Method, CallWith=ScriptState, Measure] Promise requestAdapterInfo(); }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_device.idl b/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_device.idl index 9ff322ab0..93bb0e252 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_device.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_device.idl @@ -26,7 +26,7 @@ [RaisesException] GPUBindGroupLayout createBindGroupLayout(GPUBindGroupLayoutDescriptor descriptor); GPUPipelineLayout createPipelineLayout(GPUPipelineLayoutDescriptor descriptor); - [RaisesException] GPUShaderModule createShaderModule(GPUShaderModuleDescriptor descriptor); + GPUShaderModule createShaderModule(GPUShaderModuleDescriptor descriptor); [CallWith=ScriptState] GPURenderPipeline createRenderPipeline(GPURenderPipelineDescriptor descriptor); [RaisesException] GPUComputePipeline createComputePipeline(GPUComputePipelineDescriptor descriptor); diff --git a/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_fence_descriptor.idl b/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_fence_descriptor.idl deleted file mode 100755 index cfae5c0ab..000000000 --- a/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_fence_descriptor.idl +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2019 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// https://gpuweb.github.io/gpuweb/ - -dictionary GPUFenceDescriptor : GPUObjectDescriptorBase { - GPUFenceValue initialValue = 0; -}; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_request_adapter_options.idl b/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_request_adapter_options.idl index a3e2a08a5..a0d090a0c 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_request_adapter_options.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_request_adapter_options.idl @@ -10,6 +10,7 @@ enum GPUPowerPreference { }; dictionary GPURequestAdapterOptions { + any featureLevel; GPUPowerPreference powerPreference; boolean forceFallbackAdapter = false; [RuntimeEnabled=WebGPUExperimentalFeatures] boolean compatibilityMode = false; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_shader_module_compilation_hint.idl b/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_shader_module_compilation_hint.idl index 00f6f2e93..c8e80938f 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_shader_module_compilation_hint.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_shader_module_compilation_hint.idl @@ -5,5 +5,6 @@ // https://gpuweb.github.io/gpuweb/ dictionary GPUShaderModuleCompilationHint { + required USVString entryPoint; (GPUPipelineLayout or GPUAutoLayoutMode) layout; }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_shader_module_descriptor.idl b/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_shader_module_descriptor.idl index ad01b11c8..1501edd56 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_shader_module_descriptor.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_shader_module_descriptor.idl @@ -5,7 +5,6 @@ // https://gpuweb.github.io/gpuweb/ dictionary GPUShaderModuleDescriptor : GPUObjectDescriptorBase { - required (USVString or Uint32Array) code; - object sourceMap; - record hints; + required USVString code; + sequence compilationHints = []; }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_supported_features.idl b/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_supported_features.idl index d60da1f92..b7d7d6650 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_supported_features.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_supported_features.idl @@ -16,12 +16,13 @@ enum GPUFeatureName { "rg11b10ufloat-renderable", "bgra8unorm-storage", "float32-filterable", + "dual-source-blending", + "clip-distances", // Non-standard (not currently in the spec). "chromium-experimental-timestamp-query-inside-passes", "chromium-experimental-subgroups", "chromium-experimental-subgroup-uniform-control-flow", - "dual-source-blending", // Currently subgroups features are under OT. "subgroups", "subgroups-f16", diff --git a/tools/under-control/src/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/tools/under-control/src/third_party/blink/renderer/platform/runtime_enabled_features.json5 index 72d0c25e9..1599f1a7d 100755 --- a/tools/under-control/src/third_party/blink/renderer/platform/runtime_enabled_features.json5 +++ b/tools/under-control/src/third_party/blink/renderer/platform/runtime_enabled_features.json5 @@ -304,21 +304,41 @@ }, { name: "AIPromptAPI", + public: true, status: "test", base_feature: "EnableAIPromptAPI", + implied_by: ["AIPromptAPIForWebPlatform"] + }, + { + name: "AIPromptAPIForExtension", + public: true, + origin_trial_feature_name: "AIPromptAPIForExtension", + status: "test", + base_feature: "EnableAIPromptAPIForExtension", + copied_from_base_feature_if: "overridden", + }, + { + name: "AIPromptAPIForWebPlatform", + public: true, + status: "test", + base_feature: "EnableAIPromptAPIForWebPlatform", }, { name: "AIRewriterAPI", + public: true, status: "test", base_feature: "EnableAIRewriterAPI", }, { name: "AISummarizationAPI", + public: true, status: "test", + origin_trial_feature_name: "AISummarizationAPI", base_feature: "EnableAISummarizationAPI", }, { name: "AIWriterAPI", + public: true, status: "test", base_feature: "EnableAIWriterAPI", }, @@ -381,6 +401,11 @@ name: "AtomicMoveAPI", status: "test", }, + // See https://crbug.com/40150299, and + // https://github.com/whatwg/dom/issues/1255. + { + name: "AtomicMoveAuto", + }, { name: "AttributionReporting", status: "stable", @@ -452,12 +477,6 @@ name: "AutoPictureInPictureVideoHeuristics", status: "experimental", }, - { - // If enabled, lazy loaded images can be auto sized if the sizes - // attribute is missing or set to auto. - name: "AutoSizeLazyLoadedImages", - status: "stable", - }, // When enabled, enforces new interoperable semantics for 3D transforms. // See crbug.com/1008483. { @@ -512,11 +531,17 @@ status: "stable", }, { - // There are two different code changes guarded by this feature. Both - // are about triggering a beforeunload cancel dialog and need adoption - // from developers. - // 1. If event.preventDefault() is called, prompt cancel dialog. - // 2. If event.returnValue is the empty string, do not prompt cancel dialog. + // TODO(crbug.com/40586353) There are two different code changes guarded + // by this feature, both related to triggering a beforeunload cancel + // dialog. + // 1. If event.preventDefault() is called, prompt cancel dialog. + // 2. If event.returnValue is the empty string, do not prompt cancel + // dialog. + // This flag was shipped to stable in M117, but there is an enterprise + // policy that allows this flag to be force-diabled. As a result, this + // flag should not be removed until at least M132. + // The enterprise policy has an extended expiration date of M130: + // https://groups.google.com/a/chromium.org/g/chromium-enterprise/c/52qHFoQF_mw/m/gw7e6qPlAAAJ name: "BeforeunloadEventCancelByPreventDefault", status: "stable", public: true, @@ -569,7 +594,7 @@ // Full support for box-decoration-break, including block fragmentation, // not just -webkit-box-decoration-break with inlines at line breaks. name: "BoxDecorationBreak", - status: "experimental", + status: "stable", }, { // crbug.com/41485013 @@ -600,8 +625,19 @@ status: "test", base_feature: "EnableBuiltInAIAPI", base_feature_status: "enabled", + // A origin trial is feature is required for the build to success. + // The feature reuses the AISummarizationAPI. Any other origin trial + // features in the `implied_by` list will enable this feature as well. + origin_trial_feature_name: "AISummarizationAPI", copied_from_base_feature_if: "overridden", - implied_by: ["AIPromptAPI", "AIRewriterAPI", "AISummarizationAPI", "AIWriterAPI"] + implied_by: [ + "AIPromptAPI", + "AIRewriterAPI", + "AISummarizationAPI", + "AIWriterAPI", + "LanguageDetectionAPI", + "TranslationAPIEntryPoint", + ] }, { // Bypasses the enforcement of the Page Embedded Permission Control @@ -636,11 +672,24 @@ { name: "Canvas2dLayers", }, + { + name: "Canvas2dLayersWithOptions", + status: "experimental", + depends_on: ["Canvas2dLayers"], + }, { name: "Canvas2dMesh", origin_trial_feature_name: "Canvas2dMesh", + origin_trial_allows_third_party: true, status: "test", }, + { + // This is a kill switch for shaping directly in TextMetrics when + // ctx.measureText() is called. Disabled after speedometer regression: + // https://crbug.com/362784008. + name: "Canvas2dTextMetricsShaping", + status: "experimental", + }, { name: "CanvasFloatingPoint", status: "experimental", @@ -710,19 +759,10 @@ name: "ClickToCapturedPointer", status: "experimental", }, - { - name: "ClipboardSvg", - status: "stable", - }, { name: "ClipPathRejectEmptyPaths", status: "stable", }, - { - // https://html.spec.whatwg.org/multipage/interaction.html#close-requests-and-close-watchers - name: "CloseWatcher", - status: "stable", - }, { // Avoid queuing a task to fire a selectionchange event when there is already a task scheduled // to do that for the target according to the new spec: @@ -767,8 +807,6 @@ { name: "CompressionDictionaryTransport", base_feature: "none", - origin_trial_feature_name: "CompressionDictionaryTransportV3", - origin_trial_allows_third_party: true, public: true, }, { @@ -870,6 +908,13 @@ name: "CSSAnchorScope", status: "experimental", }, + { + // Support for syntax in @property + // https://drafts.css-houdini.org/css-properties-values-api-1/#syntax-strings + name: "CSSAtPropertyStringSyntax", + status: "experimental", + + }, { // Whether values are allowed as counter style name: "CSSAtRuleCounterStyleImageSymbols", @@ -916,10 +961,6 @@ name: "CSSComputedStyleFullPseudoElementParser", status: "stable", }, - { - name: "CSSContentMultiArgAltText", - status: "stable", - }, { name: "CSSContentVisibilityImpliesContainIntrinsicSizeAuto", status: "stable", @@ -952,10 +993,6 @@ name: "CssDecoratingBoxFirstLine", status: "stable", }, - { - name: "CSSDisplayModePictureInPicture", - status: "stable", - }, { // crbug.com/353228153 name: "CssDisplaySerialziationFix", @@ -979,7 +1016,7 @@ // Spec change to search for container query and container units up the // flat tree instead of the shadow-including ancestors. name: "CSSFlatTreeContainer", - status: "test", + status: "stable", }, { name: "CSSFontSizeAdjust", @@ -1028,6 +1065,11 @@ name: "CSSLineClamp", status: "experimental", }, + { + // https://github.com/w3c/csswg-drafts/issues/10435 + name: "CSSLineClampWebkitBoxBlockification", + status: "stable", + }, { name: "CSSLogicalOverflow", status: "test", @@ -1043,6 +1085,10 @@ { name: "CSSMixins", }, + { + name: "CSSNestedDeclarations", + status: "stable", + }, { name: "CSSPaintAPIArguments", status: "experimental", @@ -1052,6 +1098,12 @@ // See crbug.com/1485525. name: "CSSParserIgnoreCharsetForURLs", }, + { + // Shipped in M130. Should be removed a little bit after M130 reaches + // stable. + name: "CSSPartAllowsMoreSelectorsAfter", + status: "stable", + }, { // The `inset-area` CSS property has been renamed to `position-area`. This // feature (CSSPositionAreaProperty) enables the new `position-area` @@ -1091,6 +1143,12 @@ name: "CSSProgressNotation", status: "experimental", }, + { + // For ::column pseudo element for fragment styling. + // https://github.com/flackr/carousel/blob/main/fragmentation/README.md + name: "CSSPseudoColumn", + status: "experimental", + }, { // Enables the :open and :closed pseudo-selectors. // https://chromestatus.com/feature/5085419215781888 @@ -1130,10 +1188,15 @@ name: "CSSRelativeColor", status: "stable", }, + { + // crbug.com/359616070 + name: "CSSRelativeColorLateResolveAlways", + status: "experimental", + }, { // crbug.com/325309578 name: "CSSRelativeColorSupportsCurrentcolor", - status: "test", + status: "experimental", }, { // Non-standard 'auto' keyword for the CSS resize property. Used for @@ -1228,15 +1291,6 @@ name: "CSSTextSpacing", depends_on: ["CSSTextAutoSpace"], }, - { - // Makes the transition shorthand omit longhands which have initial - // values as per a standards discussion. - // Shipped in M127, should be safe to remove in M132. - // https://issues.chromium.org/issues/41487057 - // https://github.com/web-platform-tests/wpt/issues/43574 - name: "CSSTransitionShorterSerialization", - status: "stable", - }, { // Support for tree-scoped [1] timeline names (e.g. produced by // scroll-timeline). @@ -1259,13 +1313,13 @@ status: "stable" }, { - name: "CursorAnchorInfoMojoPipe", - // No status as this will be controlled by the matching Chromium feature. + // Support the 'inert' keyword for the visibility property. + name: "CSSVisibilityInert", + status: "experimental", }, { - // https://html.spec.whatwg.org/#dom-customelementregistry-getname - name: "CustomElementsGetName", - status: "stable", + name: "CursorAnchorInfoMojoPipe", + // No status as this will be controlled by the matching Chromium feature. }, { name: "Database", @@ -1276,6 +1330,13 @@ origin_trial_allows_third_party: true, origin_trial_type: "deprecation", }, + { + // This will allow us to remove the GPUAdapter requestAdapterInfo method + // after the deprecation period. See https://crbug.com/335383516 + name: "DeprecatedRequestAdapterInfo", + status: "stable", + }, + // This allows pages to opt out of the unload deprecation. Enabling this // allows unload event handers to be used in the frame regardless of any // Permissions-Policy setting. @@ -1373,12 +1434,6 @@ base_feature_status: "enabled", copied_from_base_feature_if: "overridden", }, - { - // Shipping in M121. Flag should be removed after M121 has been - // shipping to stable for a few weeks. - name: "DirnameMoreInputTypes", - status: "stable", - }, { // Disables anti-aliasing for the Ahem font. Anti-aliasing this font breaks a // significant amount of WPT test expectations. @@ -1472,14 +1527,6 @@ base_feature: "none", public: true, }, - { - // Makes document's fallback base URL use about:blank instead of the base - // URL of whatever execution context created it in order to match the - // HTML spec and the behavior already shipped in all other browsers. This - // behavior is reflected by document.baseURI. - name: "DocumentBaseURIFix", - status: "stable", - }, { name: "DocumentCookie", }, @@ -1515,7 +1562,7 @@ name: "DocumentPictureInPicturePreferInitialPlacement", status: { "Android": "", - "default": "experimental", + "default": "stable", }, }, // Enables propagating user activation from a document picture-in-picture @@ -1534,13 +1581,18 @@ status: "experimental", }, // Enables the ability to use Document Policy header to control feature + // ExpectNoLinkedResources. + { + name: "DocumentPolicyExpectNoLinkedResources", + status: "experimental", + }, + // Enables the ability to use Document Policy header to control feature // IncludeJSCallStacksInCrashReports. https://chromestatus.com/feature/4731248572628992 { name: "DocumentPolicyIncludeJSCallStacksInCrashReports", origin_trial_feature_name: "DocumentPolicyIncludeJSCallStacksInCrashReports", status: "experimental", base_feature_status: "enabled", - browser_process_read_access: true, copied_from_base_feature_if: "overridden", }, { @@ -1564,20 +1616,6 @@ { name: "DocumentWrite", }, - // When enabled, this allows users of DOMParser to do: - // (new DOMParser()).parseFromString(...,{includeShadowRoots:true}). - // This is being deprecated and removed: crbug.com/329330085. - // The fieldtrial_testing_config currently disables this feature for tests. - { - name: "DOMParserIncludeShadowRoots", - }, - // Controls whether DOMParser.parseFromString() attempts to use the - // html fast path parser. This flag is to be used as a killswitch in case - // of any issues. - { - name: "DOMParserUsesHTMLFastPathParser", - status: "stable" - }, { name: "DOMPartsAPI", status: "experimental", @@ -1586,11 +1624,6 @@ { name: "DOMPartsAPIMinimal", }, - { - // Shipping in M121, so should be safe to remove in M126. - name: "DontFireDblclickOnDisabledFormControls", - status: "stable", - }, { // Drop the entire URL as plaintext in plaintext only editable position. // Fix for https://crbug.com/40895258. This change is landing in M127 and @@ -1618,9 +1651,20 @@ status: {"Android": "", "default": "experimental"}, }, { - // This is the "old" version of getInnerHTML() used for declarative shadow - // DOM, and this version is deprecated. The replacement is called - // `getHTML()` and it shipped in M125. + // TODO(crbug.fom/41492947) This is the "old" version of getInnerHTML() + // used for declarative shadow DOM, and this version is deprecated and + // currently being removed via Finch. The removal rollout plan is: + // 1. (July 29) Disable at 50% of Canary/Dev in M129. + // 2. (August 19) Disable at 50% of Canary/Dev/Beta, M129. + // 3. (September 16) Disable at 1% of Stable M129. + // 4. (September 23) Disable at 2% of Stable M129. + // 5. (September 30) Disable at 5% of Stable M129. + // 5.5. (September 30) Disable in code, M131, assuming no issues so far. + // 6. (October 7) Disable at 10% of Stable M129. + // 7. (October 14) Disable at 50% of Stable M129-M130 (Oct 15 stable release). + // 8. (October 21) Full disable via Finch, M129-130. + // In the meantime, replacement API is called `getHTML()` and that + // shipped in M125. name: "ElementGetInnerHTML", status: "stable", }, @@ -1708,15 +1752,10 @@ name: "FaceDetector", status: "experimental", }, - { - // crbug.com/333630754 - name: "FasterMinContent", - status: "stable", - }, { name: "FastNonCompositedScrollHitTest", depends_on: ["HitTestOpaqueness", "RasterInducingScroll"], - status: "test", + status: "stable", }, // Kill switch. { @@ -1942,6 +1981,11 @@ name: "FileSystemObserverUnobserve", status: "experimental", }, + { + // crbug.com/40755728 + name: "FindRubyInPage", + status: "test", + }, { name: "FindTextInReadonlyTextInput", status: "experimental", @@ -1960,6 +2004,7 @@ name: "FledgeBiddingAndAuctionServerAPI", origin_trial_feature_name: "FledgeBiddingAndAuctionServer", origin_trial_allows_third_party: true, + base_feature: "none", }, { name: "FledgeCustomMaxAuctionAdComponents", @@ -1982,7 +2027,8 @@ // experiment that enters trials after it got created; this makes it easy // to polyfill by only checking older things, and makes it serve its // purpose of modularly advertising new things. - implied_by: ["FledgePermitCrossOriginTrustedSignals", + implied_by: ["FledgeAuctionDealSupport", + "FledgePermitCrossOriginTrustedSignals", "FledgeRealTimeReporting"], base_feature: "none", }, @@ -1990,7 +2036,8 @@ name: "FledgeFeatureDetection", // FledgeFeatureDetection should be on if any of the features it aims // to help detect is on. - implied_by: ["FledgeCustomMaxAuctionAdComponents", + implied_by: ["FledgeAuctionDealSupport", + "FledgeCustomMaxAuctionAdComponents", "FledgeDeprecatedRenderURLReplacements", "FledgePermitCrossOriginTrustedSignals", "FledgeRealTimeReporting", @@ -2006,6 +2053,7 @@ // Permit trusted signals to come cross-origin, subject to CORS on the // trusted server side and opt-in on the worklet script side. name: "FledgePermitCrossOriginTrustedSignals", + status: "stable", }, { // Enables real time reporting API in Protected Audience. @@ -2040,12 +2088,6 @@ name: "FluentScrollbarUsesNinePatchTrack", status: "stable", }, - { - // Kill switch for crbug.com/1420810 fix - // TODO(xiaochengh): Remove after M122. - name: "FlushParserBeforeCreatingCustomElements", - status: "stable", - }, { name: "Focusgroup", status: "experimental", @@ -2069,14 +2111,6 @@ { name: "FontFamilyStyleMatchingCTMigration", }, - { - name: "FontMatchingCTMigration", - status: "stable", - }, - { - name: "FontPaletteAnimation", - status: "stable", - }, { name: "FontPresentWin", status: "stable", @@ -2093,7 +2127,7 @@ }, { name: "FontVariantEmoji", - status: "test", + status: "experimental", }, { name: "FontVariationSequences", @@ -2138,11 +2172,6 @@ name: "FormControlsVerticalWritingModeDirectionSupport", status: "stable", }, - { - // Bug fix for crbug.com/1429585 - name: "FormStateRestoreCallbackCallWithState", - status: "stable", - }, { name: "FractionalScrollOffsets", base_feature: "none", @@ -2225,7 +2254,7 @@ }, { name: "HitTestOpaqueness", - status: "experimental", + status: "stable", }, { name: "HrefTranslate", @@ -2282,10 +2311,6 @@ name: "HTMLPopoverHint", status: "experimental", }, - { - name: "HTMLSearchElement", - status: "stable", - }, { name: "HTMLSelectElementShowPicker", status: "stable", @@ -2294,14 +2319,6 @@ name: "HTMLSelectListElement", status: "experimental", }, - { - // http://crbug.com/1478969 - // https://github.com/whatwg/html/pull/9538 - // https://chromestatus.com/feature/6560361081995264 - // Enabled by default in M123, should be safe to remove in M127 - name: "HTMLUnsafeMethods", - status: "stable", - }, { // According to spec, text transforms should not affect the content // of plain text copy and paste - @@ -2328,13 +2345,6 @@ name: "ImportMapIntegrity", status: "stable" }, - { - // ImprovedXMLErrors tweaks the way that we emit XML parsing errors in - // some cases in order to comply with upstream changes to libxml. - // Shipping in M123, so should be safe to remove in M126. - name: "ImprovedXMLErrors", - status: "stable", - }, { name: "IncomingCallNotifications", }, @@ -2342,10 +2352,7 @@ // When enabled, every traversable mainframe same-doc navigation will // increment the `viz::LocalSurfaceId` from the impl thread. name: "IncrementLocalSurfaceIdForMainframeSameDocNavigation", - }, - { - name: "InertDisplayTransition", - status: "stable", + status: {"Android": "stable"}, }, { name: "InertElementNonEditable", @@ -2386,14 +2393,6 @@ // iOS. status: {"Android": "test", "iOS": "test", "default": "stable"}, }, - { - // If enabled, the input stepDown(n) and stepUp(n) methods will check - // that the current value is valid before applying step 10 of their - // specified algorithms. - // This flag can be removed in M128 assuming no issues. - name: "InputStepCurrentValueValidation", - status: "stable", - }, { name: "InputTypeSupportInsertLink", status: "stable", @@ -2423,10 +2422,6 @@ name: "InteroperablePrivateAttribution", status: "experimental", }, - { - name: "InterruptComposedScrollbarDisappearance", - status: "stable", - }, { // If enabled, IntersectionObserverScrollMargin will be parsed. name: "IntersectionObserverScrollMargin", @@ -2469,9 +2464,12 @@ }, { // TODO(crbug.com/40113891): This feature allows scrollers to be - // keyboard focusable by default. + // keyboard focusable by default. This was enabled by default in M130, + // but this flag should not be removed until the origin trial and + // enterprise policies have both expired. See the + // KeyboardFocusableScrollersOptOut flag. name: "KeyboardFocusableScrollers", - status: "experimental", + status: "stable", public: true, }, { @@ -2507,10 +2505,9 @@ { name: "LanguageDetectionAPI", status: "experimental", - }, - { - name: "LastSuccessfulPositionOption", - status: "stable", + origin_trial_feature_name: "LanguageDetectionAPI", + base_feature_status: "enabled", + copied_from_base_feature_if: "overridden", }, { name: "LayoutFlexNewRowAlgorithmV3", @@ -2521,17 +2518,13 @@ }, { name: "LayoutJustifySelfForBlocks", - status: "test", + status: "stable", }, { name: "LayoutNGShapeCache", status: "test", base_feature: "LayoutNGShapeCache", }, - { - name: "LayoutSegmentationFastPathForObjectReplacement", - status: "stable", - }, { name: "LazyInitializeMediaControls", base_feature: "none", @@ -2556,12 +2549,6 @@ name: "LCPAnimatedImagesWebExposed", status: "test", }, - { - name: "LCPMouseoverHeuristics", - }, - { - name: "LCPMultipleUpdatesPerElement", - }, { name: "LegacyWindowsDWriteFontFallback", // Enabled by features::kLegacyWindowsDWriteFontFallback; @@ -2595,10 +2582,6 @@ name: "LongTaskFromLongAnimationFrame", status: "test", }, - { - name: "MacFontsDeprecateFontTraitsWorkaround", - status: "stable", - }, { name: "MachineLearningNeuralNetwork", // Enabled by webnn::mojom::features::kWebMachineLearningNeuralNetwork. @@ -2751,7 +2734,13 @@ // If enabled, meter elements will render with a fallback style when // appearance is set to none. name: "MeterAppearanceNoneFallbackStyle", - status: "experimental", + status: "stable", + }, + { + // If enabled, the widget appearance will devolve based on user + // declared styles as defined in the css-ui-4 spec + name: "MeterDevolveAppearance", + status: "stable", }, // This is enabled by default on Windows only. The only part that's // "experimental" is the support on other platforms. @@ -2759,6 +2748,11 @@ name: "MiddleClickAutoscroll", status: "test", }, + // Killswitch. Remove after 1 or 2 stable releases. + { + name: "MinimimalResourceRequestPrepBeforeCacheLookup", + status: "stable", + }, { name: "MobileLayoutTheme", }, @@ -2779,12 +2773,6 @@ base_feature: "none", is_protected_feature: true, }, - // crbug.com/269917: Make mouse event targets agnostic to mousedown event - // cancellation when the pointer is dragged out of an iframe. - { - name: "MouseDragFromIframeOnCancelledMouseDown", - status: "stable", - }, // crbug.com/40078978: Allow mouse-drag text selection even when mousemove // event is cancelled. { @@ -2806,14 +2794,14 @@ status: "test", }, { + // https://chromestatus.com/feature/6270155647352832 name: "MultiSmoothScrollIntoView", - status: "experimental", + status: "stable", }, // crbug.com/1446498: This feature is being used for the deprecation of // Mutation Events. { name: "MutationEvents", - status: "stable", origin_trial_feature_name: "MutationEvents", origin_trial_type: "deprecation", origin_trial_allows_insecure: true, @@ -2868,13 +2856,6 @@ }, base_feature: "none", }, - { - // This is a killswitch for the changed behavior of - // CompositorFilterOperations::MapRect() for crbug.com/329235801. - // Can be removed in M127 if things are stable. - name: "NewFilterMapRect", - status: "stable", - }, { // This is a killswitch for the behavior of Element::GetFocusableArea // on delegatesFocus shadow hosts. This flag can be removed in M127 if @@ -3134,6 +3115,10 @@ name: "PageSwapEvent", status: "stable", }, + { + name: "PaintHighlightsForFirstLetter", + status: "stable", + }, { name: "PaintHoldingForIframes", status: "stable", @@ -3159,10 +3144,6 @@ { name: "PasswordReveal", }, - { - name: "PasswordStrongLabel", - status: "experimental", - }, { name: "PaymentApp", depends_on: ["PaymentRequest"], @@ -3262,8 +3243,21 @@ // See https://crbug.com/353538500 { name: "PointerEventTargetsInEventLists", + status: "stable", + }, + // TODO(crbug.com/364669918) This enables these two new functionalities: + // 1. add an imperative way to set invoker relationships between popovers. + // 2. invoker relationships create implicit anchor element references. + { + name: "PopoverAnchorRelationships", status: "experimental", }, + // This is a killswitch for the behavior of , + // which landed in M130 and can be removed in M132. + { + name: "PopoverDialogNewFocusBehavior", + status: "stable", + }, { name: "PositionOutsideTabSpanCheckSiblingNode", status: "stable", @@ -3328,12 +3322,6 @@ name: "PreserveFollowingBlockStylesDuringBlockMerge", status: "stable", }, - { - // When enabled, gives the option to pretty-print JSON documents to - // cleanly format the JSON and make it readable. - name:"PrettyPrintJSONDocument", - status: "stable", - }, { // When enabled, prevents undo to be applied if the enclosing block // is not editable @@ -3417,6 +3405,12 @@ implied_by: ["ProtectedOriginTrialsSampleAPI"], is_protected_feature: "true", }, + { + // Fix for ::cue, ::file-selector-button, and ::placeholder pseudo + // elements in getComputedStyle(). + name: "PseudoElementsCorrectInGetComputedStyle", + status: "stable", + }, { // Allowing pseudo elements to have focus. name: "PseudoElementsFocusable", @@ -3450,10 +3444,6 @@ name: "ReadableStreamAsyncIterable", status: "stable", }, - { - name: "RecollectInlinesReserveCapacity", - status: "stable", - }, // If enabled, the Accept-Language header will be reduced. { name: "ReduceAcceptLanguage", @@ -3510,18 +3500,17 @@ "default": "experimental"}, }, { - name: "RemoveDanglingMarkupInTarget", + // See https://issues.chromium.org/40805258 + name: "RemoveCollapsedPlaceholder", status: "stable", }, { - name: "RemoveDataUrlInSvgUse", + name: "RemoveDanglingMarkupInTarget", status: "stable", }, { - name: "RemoveMobileViewportDoubleTap", - public: true, + name: "RemoveDataUrlInSvgUse", status: "stable", - base_feature: "none", }, // Remove a node if it's selected fully even though it has children. See // https://crbug.com/331074432 @@ -3561,6 +3550,10 @@ "default": "", } }, + { + name: "ResetInputTypeToNoneBeforeCharacterInput", + status: "stable", + }, { name: "ResourceTimingContentType", status: "experimental", @@ -3575,11 +3568,21 @@ status: "experimental", base_feature: "none", }, + { + name: "ReuseShapeResultsByFonts", + status: "stable", + }, { // New behavior when line breaker rewinds floats. crbug.com/1499290 name: "RewindFloats", status: "stable", }, + { + // When enabled, the root element will have a placeholder after all text is deleted. + // crbug.com/40702380 + name: "RootElementWithPlaceHolderAfterDeletingSelection", + status: "stable", + }, { name: "RtcAudioJitterBufferMaxPackets", origin_trial_feature_name: "RtcAudioJitterBufferMaxPackets", @@ -3623,12 +3626,9 @@ name: "RTCRtpEncodingParametersCodec", status: "stable", }, - // Enables the use of |RTCRtpTransceiver::getHeaderExtensionsToNegotiate|, - // |RTCRtpTransceiver::setHeaderExtensionsToNegotiate|, and - // |RTCRtpTransceiver::getNegotiatedHeaderExtensions|. { - name: "RTCRtpHeaderExtensionControl", - status: "stable", + name: "RTCRtpScaleResolutionDownTo", + status: "test", }, { name: "RTCRtpScriptTransform", @@ -3650,11 +3650,6 @@ name: "RTCSvcScalabilityMode", status: "stable", }, - { - // crbug.com/336592423 - name: "RubyAnnotationSpaceFix", - status: "stable", - }, { // crbug.com/324111880 name: "RubyLineBreakable", @@ -3671,12 +3666,6 @@ name: "RubyShortHeuristics", status: "stable", }, - { - // Runs a microtask checkpoint before creating custom elements in - // XMLDocumentParser. Should be safe to remove after M125 - name: "RunMicrotaskBeforeXmlCustomElement", - status: "stable", - }, { name: "SanitizerAPI", status: "experimental", @@ -3788,6 +3777,13 @@ name: "SelectionAcrossShadowDOM", status: "experimental", }, + { + // selection.isCollapsed should return false if anchor and focus nodes + // are different, including in shadow tree. + // https://crbug.com/40400558 + name: "SelectionIsCollapsedShadowDOMSupport", + status: "experimental", + }, { // Maintain author-defined ::selection highlight colors, even if they // match the text color. @@ -3809,11 +3805,11 @@ status: "experimental", }, { - // If enabled, the type to search in a select element will ignore accents. - // This should land in M128, and can be cleaned up (assuming no problems) - // after M130. - // https://crbug.com/349089079 - name: "SelectTypeToSearchIgnoreAccents", + // This flag is a performance optimization which reorganizes some code + // for handling