diff --git a/tools/under-control/src/RELEASE b/tools/under-control/src/RELEASE index deddf373..5ef9cd5d 100644 --- a/tools/under-control/src/RELEASE +++ b/tools/under-control/src/RELEASE @@ -1 +1 @@ -128.0.6613.120 +129.0.6668.42 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 ac8518ae..c2e5438e 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 @@ -844,6 +844,20 @@ bool AwContentBrowserClient::ShouldOverrideUrlLoading( request_headers, ignore_navigation); } +bool AwContentBrowserClient::ShouldAllowSameSiteRenderFrameHostChange( + const content::RenderFrameHost& rfh) { + content::RenderFrameHost* rfh_ptr = + const_cast(&rfh); + content::WebContents* web_contents = + content::WebContents::FromRenderFrameHost(rfh_ptr); + AwSettings* aw_settings = AwSettings::FromWebContents(web_contents); + // Don't allow same-site RFH swap on non-crashed frames if the initial page + // scale is non-default. See the comment in `AwSettings` about this for more + // details. + return !aw_settings || !rfh_ptr->IsRenderFrameLive() || + !aw_settings->initial_page_scale_is_non_default(); +} + std::unique_ptr AwContentBrowserClient::CreateLoginDelegate( const net::AuthChallengeInfo& auth_info, @@ -1337,7 +1351,7 @@ bool AwContentBrowserClient::IsAttributionReportingOperationAllowed( } } - NOTREACHED_NORETURN(); + NOTREACHED(); } content::ContentBrowserClient::AttributionReportingOsRegistrars @@ -1385,7 +1399,7 @@ AwContentBrowserClient::GetAttributionReportingOsRegistrars( AttributionReportingOsRegistrar::kDisabled}; } - NOTREACHED_NORETURN(); + NOTREACHED(); } network::mojom::IpProtectionProxyBypassPolicy 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 3d249bc4..7d3e9268 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 @@ -165,6 +165,11 @@ void AwFieldTrials::RegisterFeatureOverrides(base::FeatureList* feature_list) { // clear on how user can remove persistent media licenses from UI. aw_feature_overrides.DisableFeature(media::kMediaDrmPersistentLicense); + // WebView does not support multiple processes, so don't try to call some + // MediaDrm APIs in a separate process. + aw_feature_overrides.DisableFeature( + media::kAllowMediaCodecCallsInSeparateProcess); + aw_feature_overrides.DisableFeature(::features::kBackgroundFetch); // SurfaceControl is controlled by kWebViewSurfaceControl flag. @@ -226,10 +231,6 @@ void AwFieldTrials::RegisterFeatureOverrides(base::FeatureList* feature_list) { aw_feature_overrides.DisableFeature(blink::features::kDevicePosture); aw_feature_overrides.DisableFeature(blink::features::kViewportSegments); - // New Safe Browsing API is still being rolled out on WebView. - aw_feature_overrides.DisableFeature( - safe_browsing::kSafeBrowsingNewGmsApiForBrowseUrlDatabaseCheck); - // PaintHolding for OOPIFs. This should be a no-op since WebView doesn't use // site isolation but field trial testing doesn't indicate that. Revisit when // enabling site isolation. See crbug.com/356170748. @@ -262,10 +263,16 @@ void AwFieldTrials::RegisterFeatureOverrides(base::FeatureList* feature_list) { // kHashPrefixRealTimeLookups on WebView. aw_feature_overrides.DisableFeature( safe_browsing::kSafeBrowsingAsyncRealTimeCheck); + aw_feature_overrides.DisableFeature( + safe_browsing::kHashPrefixRealTimeLookups); // WebView does not currently support the Permissions API (crbug.com/490120) aw_feature_overrides.DisableFeature(::features::kWebPermissionsApi); + // 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. diff --git a/tools/under-control/src/chrome/android/java/AndroidManifest.xml b/tools/under-control/src/chrome/android/java/AndroidManifest.xml index 851497fe..0635acb3 100755 --- a/tools/under-control/src/chrome/android/java/AndroidManifest.xml +++ b/tools/under-control/src/chrome/android/java/AndroidManifest.xml @@ -405,7 +405,10 @@ by a child template that "extends" this file. android:theme="@style/Theme.BrowserUI.NoDisplay" android:taskAffinity="" android:excludeFromRecents="true" - android:exported="false" /> + android:exported="false"> + + @@ -1024,15 +1029,6 @@ by a child template that "extends" this file. android:exported="false" android:permission="android.permission.BIND_JOB_SERVICE"/> - - - - - - + @@ -1329,9 +1326,7 @@ by a child template that "extends" this file. diff --git a/tools/under-control/src/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc b/tools/under-control/src/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc index 3c1287fd..497d806f 100755 --- a/tools/under-control/src/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc +++ b/tools/under-control/src/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc @@ -104,7 +104,6 @@ #include "components/crash/core/app/crashpad.h" #include "components/custom_handlers/protocol_handler_registry.h" #include "components/device_event_log/device_event_log.h" -#include "components/feed/buildflags.h" #include "components/heavy_ad_intervention/heavy_ad_blocklist.h" #include "components/heavy_ad_intervention/heavy_ad_service.h" #include "components/history/core/browser/history_service.h" @@ -167,21 +166,19 @@ #include "chrome/browser/android/customtabs/chrome_origin_verifier.h" #include "chrome/browser/android/oom_intervention/oom_intervention_decider.h" #include "chrome/browser/android/webapps/webapp_registry.h" +#include "chrome/browser/feed/feed_service_factory.h" #include "chrome/browser/offline_pages/offline_page_model_factory.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/ui/android/tab_model/tab_model.h" #include "chrome/browser/ui/android/tab_model/tab_model_list.h" #include "components/cdm/browser/media_drm_storage_impl.h" // nogncheck crbug.com/1125897 +#include "components/feed/core/v2/public/feed_service.h" // nogncheck +#include "components/feed/feed_feature_list.h" #include "components/installedapp/android/jni_headers/PackageHash_jni.h" #include "components/offline_pages/core/offline_page_feature.h" #include "components/offline_pages/core/offline_page_model.h" #endif // BUILDFLAG(IS_ANDROID) -#if BUILDFLAG(ENABLE_FEED_V2) -#include "chrome/browser/feed/feed_service_factory.h" -#include "components/feed/core/v2/public/feed_service.h" // nogncheck -#include "components/feed/feed_feature_list.h" -#endif // BUILDFLAG(ENABLE_FEED_V2) #if !BUILDFLAG(IS_ANDROID) #include "chrome/browser/user_education/browser_feature_promo_storage_service.h" @@ -209,6 +206,8 @@ #include "chromeos/ash/components/dbus/attestation/interface.pb.h" #include "chromeos/ash/components/dbus/constants/attestation_constants.h" // nogncheck #include "chromeos/ash/components/dbus/dbus_thread_manager.h" // nogncheck +#include "chromeos/components/mahi/public/cpp/mahi_manager.h" +#include "chromeos/constants/chromeos_features.h" #include "components/user_manager/user.h" #include "device/fido/cros/credential_store.h" #endif // BUILDFLAG(IS_CHROMEOS_ASH) @@ -1133,7 +1132,6 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData( } #if BUILDFLAG(IS_ANDROID) -#if BUILDFLAG(ENABLE_FEED_V2) if (filter_builder->MatchesMostOriginsAndDomains()) { // Don't bridge through if the service isn't present, which means // we're probably running in a native unit test. @@ -1143,8 +1141,6 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData( service->ClearCachedData(); } } -#endif // BUILDFLAG(ENABLE_FEED_V2) - #endif // BUILDFLAG(IS_ANDROID) #if BUILDFLAG(IS_ANDROID) @@ -1187,6 +1183,14 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData( &history_task_tracker_); } } + +#if BUILDFLAG(IS_CHROMEOS_ASH) + // If the cache from the browser is cleared. Mahi should clear its cache. + if (filter_builder->MatchesMostOriginsAndDomains() && + chromeos::features::IsMahiEnabled() && chromeos::MahiManager::Get()) { + chromeos::MahiManager::Get()->ClearCache(); + } +#endif } ////////////////////////////////////////////////////////////////////////////// @@ -1455,6 +1459,12 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData( tab_model->CloseTabsNavigatedInTimeWindow(delete_begin, delete_end); } + + TabModel* archived_tab_model = TabModelList::GetArchivedTabModel(); + if (archived_tab_model) { + archived_tab_model->CloseTabsNavigatedInTimeWindow(delete_begin, + delete_end); + } #else // BUILDFLAG(IS_ANDROID) NOTIMPLEMENTED(); #endif // BUILDFLAG(IS_ANDROID) diff --git a/tools/under-control/src/chrome/browser/chrome_browser_interface_binders.cc b/tools/under-control/src/chrome/browser/chrome_browser_interface_binders.cc index 2730ad90..555394ec 100755 --- a/tools/under-control/src/chrome/browser/chrome_browser_interface_binders.cc +++ b/tools/under-control/src/chrome/browser/chrome_browser_interface_binders.cc @@ -32,7 +32,7 @@ #include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile_manager.h" #include "chrome/browser/signin/identity_manager_factory.h" -#include "chrome/browser/ssl/security_state_tab_helper.h" +#include "chrome/browser/speech/on_device_speech_recognition_impl.h" #include "chrome/browser/translate/translate_frame_binder.h" #include "chrome/browser/ui/search_engines/search_engine_tab_helper.h" #include "chrome/browser/ui/ui_features.h" @@ -68,7 +68,6 @@ #include "components/dom_distiller/content/common/mojom/distillability_service.mojom.h" #include "components/dom_distiller/content/common/mojom/distiller_javascript_service.mojom.h" #include "components/dom_distiller/core/dom_distiller_service.h" -#include "components/feed/buildflags.h" #include "components/history_clusters/core/features.h" #include "components/history_clusters/core/history_clusters_service.h" #include "components/history_clusters/history_clusters_internals/webui/history_clusters_internals_ui.h" @@ -86,6 +85,7 @@ #include "components/safe_browsing/buildflags.h" #include "components/search_engines/search_engine_choice/search_engine_choice_utils.h" #include "components/security_state/content/content_utils.h" +#include "components/security_state/content/security_state_tab_helper.h" #include "components/security_state/core/security_state.h" #include "components/signin/public/identity_manager/identity_manager.h" #include "components/site_engagement/core/mojom/site_engagement_details.mojom.h" @@ -102,7 +102,6 @@ #include "mojo/public/cpp/bindings/pending_receiver.h" #include "mojo/public/cpp/bindings/self_owned_receiver.h" #include "services/image_annotation/public/mojom/image_annotation.mojom.h" -#include "services/screen_ai/buildflags/buildflags.h" #include "third_party/blink/public/common/features.h" #include "third_party/blink/public/common/features_generated.h" #include "third_party/blink/public/mojom/credentialmanagement/credential_manager.mojom.h" @@ -116,11 +115,6 @@ #include "third_party/blink/public/public_buildflags.h" #include "ui/accessibility/accessibility_features.h" -#if BUILDFLAG(ENABLE_SCREEN_AI_SERVICE) -#include "chrome/browser/screen_ai/screen_ai_service_router.h" -#include "chrome/browser/screen_ai/screen_ai_service_router_factory.h" -#endif - #if BUILDFLAG(ENABLE_UNHANDLED_TAP) #include "chrome/browser/android/contextualsearch/unhandled_tap_notifier_impl.h" #include "chrome/browser/android/contextualsearch/unhandled_tap_web_contents_observer.h" @@ -157,9 +151,7 @@ #else #include "chrome/browser/badging/badge_manager.h" #include "chrome/browser/cart/chrome_cart.mojom.h" -#include "chrome/browser/new_tab_page/modules/feed/feed.mojom.h" #include "chrome/browser/new_tab_page/modules/file_suggestion/file_suggestion.mojom.h" -#include "chrome/browser/new_tab_page/modules/history_clusters/history_clusters.mojom.h" #include "chrome/browser/new_tab_page/modules/v2/calendar/google_calendar.mojom.h" #include "chrome/browser/new_tab_page/modules/v2/most_relevant_tab_resumption/most_relevant_tab_resumption.mojom.h" #include "chrome/browser/new_tab_page/modules/v2/tab_resumption/tab_resumption.mojom.h" @@ -192,6 +184,7 @@ #include "chrome/browser/ui/webui/new_tab_page_third_party/new_tab_page_third_party_ui.h" #include "chrome/browser/ui/webui/omnibox_popup/omnibox_popup_ui.h" #include "chrome/browser/ui/webui/password_manager/password_manager_ui.h" +#include "chrome/browser/ui/webui/privacy_sandbox/private_state_tokens/private_state_tokens.mojom.h" #include "chrome/browser/ui/webui/privacy_sandbox/related_website_sets/related_website_sets.mojom.h" #include "chrome/browser/ui/webui/search_engine_choice/search_engine_choice.mojom.h" // nogncheck crbug.com/1125897 #include "chrome/browser/ui/webui/search_engine_choice/search_engine_choice_ui.h" @@ -228,6 +221,8 @@ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ BUILDFLAG(IS_CHROMEOS) #include "chrome/browser/companion/visual_query/visual_query_suggestions_service_factory.h" +#include "chrome/browser/screen_ai/screen_ai_service_router.h" +#include "chrome/browser/screen_ai/screen_ai_service_router_factory.h" #include "chrome/browser/ui/web_applications/sub_apps_service_impl.h" #include "chrome/browser/ui/webui/discards/discards.mojom.h" #include "chrome/browser/ui/webui/discards/discards_ui.h" @@ -830,6 +825,14 @@ void BindMediaFoundationRendererNotifierHandler( #endif // BUILDFLAG(IS_WIN) #endif // BUILDFLAG(ENABLE_SPEECH_SERVICE) +void BindOnDeviceSpeechRecognitionHandler( + content::RenderFrameHost* frame_host, + mojo::PendingReceiver receiver) { + speech::OnDeviceSpeechRecognitionImpl::GetOrCreateForCurrentDocument( + frame_host) + ->Bind(std::move(receiver)); +} + #if BUILDFLAG(IS_WIN) void BindMediaFoundationPreferences( content::RenderFrameHost* frame_host, @@ -842,7 +845,8 @@ void BindMediaFoundationPreferences( } #endif // BUILDFLAG(IS_WIN) -#if BUILDFLAG(ENABLE_SCREEN_AI_SERVICE) +#if BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || \ + BUILDFLAG(IS_WIN) void BindScreenAIAnnotator( content::RenderFrameHost* frame_host, mojo::PendingReceiver receiver) { @@ -861,10 +865,7 @@ void BindScreen2xMainContentExtractor( frame_host->GetProcess()->GetBrowserContext()) ->BindMainContentExtractor(std::move(receiver)); } -#endif -#if BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || \ - BUILDFLAG(IS_WIN) void BindVisualSuggestionsModelProvider( content::RenderFrameHost* frame_host, mojo::PendingReceiver< @@ -1045,6 +1046,8 @@ void PopulateChromeFrameBinders( map->Add( base::BindRepeating(&BindNetworkHintsHandler)); + map->Add( + base::BindRepeating(&BindOnDeviceSpeechRecognitionHandler)); #if BUILDFLAG(ENABLE_SPEECH_SERVICE) map->Add( @@ -1075,9 +1078,7 @@ void PopulateChromeFrameBinders( map->Add( base::BindRepeating(&BindVisualSuggestionsModelProvider)); } -#endif -#if BUILDFLAG(ENABLE_SCREEN_AI_SERVICE) if (features::IsPdfOcrEnabled()) { map->Add( base::BindRepeating(&BindScreenAIAnnotator)); @@ -1194,7 +1195,8 @@ void PopulateChromeWebUIFrameBinders( lens::LensUntrustedUI>(map); } - if (lens::features::IsLensOverlaySearchBubbleEnabled()) { + if (lens::features::IsLensOverlayEnabled() && + lens::features::IsLensOverlaySearchBubbleEnabled()) { RegisterWebUIControllerInterfaceBinder< lens::mojom::SearchBubblePageHandlerFactory, lens::SearchBubbleUI>(map); } @@ -1312,11 +1314,6 @@ void PopulateChromeWebUIFrameBinders( file_suggestion::mojom::FileSuggestionHandler, NewTabPageUI>(map); } - if (base::FeatureList::IsEnabled(ntp_features::kNtpFeedModule)) { - RegisterWebUIControllerInterfaceBinder(map); - } - if (base::FeatureList::IsEnabled(ntp_features::kNtpTabResumptionModule)) { RegisterWebUIControllerInterfaceBinder< ntp::tab_resumption::mojom::PageHandler, NewTabPageUI>(map); @@ -1764,7 +1761,7 @@ void PopulateChromeWebUIFrameBinders( DiscardsUI>(map); #endif -#if BUILDFLAG(ENABLE_FEED_V2) && BUILDFLAG(IS_ANDROID) +#if BUILDFLAG(IS_ANDROID) RegisterWebUIControllerInterfaceBinder(map); #endif @@ -1813,8 +1810,8 @@ void PopulateChromeWebUIFrameBinders( #if !BUILDFLAG(IS_ANDROID) if (base::FeatureList::IsEnabled( optimization_guide::features::kOptimizationGuideOnDeviceModel)) { - RegisterWebUIControllerInterfaceBinder<::mojom::OnDeviceInternalsPage, - OnDeviceInternalsUI>(map); + RegisterWebUIControllerInterfaceBinder< + ::mojom::OnDeviceInternalsPageHandlerFactory, OnDeviceInternalsUI>(map); } #endif @@ -1831,6 +1828,12 @@ void PopulateChromeWebUIFrameBinders( related_website_sets::mojom::RelatedWebsiteSetsPageHandler, privacy_sandbox_internals::PrivacySandboxInternalsUI>(map); } + + if (base::FeatureList::IsEnabled(privacy_sandbox::kPrivateStateTokensDevUI)) { + RegisterWebUIControllerInterfaceBinder< + private_state_tokens::mojom::PrivateStateTokensPageHandler, + privacy_sandbox_internals::PrivacySandboxInternalsUI>(map); + } #endif #if BUILDFLAG(IS_CHROMEOS_ASH) @@ -1886,7 +1889,7 @@ void PopulateChromeWebUIFrameInterfaceBrokers( // --- Section 2: chrome-untrusted:// WebUIs: #if BUILDFLAG(IS_CHROMEOS_ASH) if (ash::features::IsBocaEnabled()) { - registry.ForWebUI() + registry.ForWebUI() .Add() .Add(); } @@ -1934,6 +1937,12 @@ void PopulateChromeWebUIFrameInterfaceBrokers( .Add() .Add(); } + if (lens::features::IsLensOverlaySearchBubbleEnabled()) { + registry.ForWebUI() + .Add() + .Add() + .Add(); + } if (companion::IsCompanionFeatureEnabled()) { registry.ForWebUI() .Add(); diff --git a/tools/under-control/src/chrome/browser/chrome_content_browser_client.cc b/tools/under-control/src/chrome/browser/chrome_content_browser_client.cc index c4b98aa0..4db37945 100755 --- a/tools/under-control/src/chrome/browser/chrome_content_browser_client.cc +++ b/tools/under-control/src/chrome/browser/chrome_content_browser_client.cc @@ -21,6 +21,7 @@ #include "base/containers/fixed_flat_set.h" #include "base/dcheck_is_on.h" #include "base/feature_list.h" +#include "base/files/file_path.h" #include "base/functional/bind.h" #include "base/functional/callback.h" #include "base/i18n/base_i18n_switches.h" @@ -43,6 +44,7 @@ #include "base/types/expected.h" #include "base/types/expected_macros.h" #include "base/values.h" +#include "build/branding_buildflags.h" #include "build/build_config.h" #include "build/chromeos_buildflags.h" #include "build/config/chromebox_for_meetings/buildflags.h" // PLATFORM_CFM @@ -81,6 +83,7 @@ #include "chrome/browser/first_party_sets/first_party_sets_navigation_throttle.h" #include "chrome/browser/font_family_cache.h" #include "chrome/browser/gpu/chrome_browser_main_extra_parts_gpu.h" +#include "chrome/browser/headless/headless_mode_util.h" #include "chrome/browser/hid/chrome_hid_delegate.h" #include "chrome/browser/history/history_service_factory.h" #include "chrome/browser/interstitials/enterprise_util.h" @@ -155,15 +158,17 @@ #include "chrome/browser/signin/header_modification_delegate_impl.h" #include "chrome/browser/speech/chrome_speech_recognition_manager_delegate.h" #include "chrome/browser/ssl/chrome_security_blocking_page_factory.h" +#include "chrome/browser/ssl/chrome_security_state_tab_helper.h" #include "chrome/browser/ssl/https_defaulted_callbacks.h" #include "chrome/browser/ssl/https_upgrades_interceptor.h" #include "chrome/browser/ssl/https_upgrades_navigation_throttle.h" #include "chrome/browser/ssl/sct_reporting_service.h" -#include "chrome/browser/ssl/security_state_tab_helper.h" #include "chrome/browser/ssl/ssl_client_certificate_selector.h" #include "chrome/browser/ssl/typed_navigation_upgrade_throttle.h" +#include "chrome/browser/supervised_user/classify_url_navigation_throttle.h" #include "chrome/browser/supervised_user/supervised_user_google_auth_navigation_throttle.h" #include "chrome/browser/supervised_user/supervised_user_navigation_throttle.h" +#include "chrome/browser/tab_group_sync/tab_group_sync_utils.h" #include "chrome/browser/task_manager/sampling/task_manager_impl.h" #include "chrome/browser/themes/theme_service.h" #include "chrome/browser/themes/theme_service_factory.h" @@ -201,6 +206,7 @@ #include "chrome/common/chrome_paths.h" #include "chrome/common/chrome_paths_internal.h" #include "chrome/common/chrome_switches.h" +#include "chrome/common/crash_keys.h" #include "chrome/common/env_vars.h" #include "chrome/common/google_url_loader_throttle.h" #include "chrome/common/logging_chrome.h" @@ -306,6 +312,7 @@ #include "components/site_isolation/preloaded_isolated_origins.h" #include "components/site_isolation/site_isolation_policy.h" #include "components/subresource_filter/content/browser/content_subresource_filter_throttle_manager.h" +#include "components/supervised_user/core/common/features.h" #include "components/translate/core/common/translate_switches.h" #include "components/user_prefs/user_prefs.h" #include "components/variations/variations_associated_data.h" @@ -409,13 +416,15 @@ #include "url/third_party/mozilla/url_parse.h" #include "url/url_constants.h" +#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) +#include "chrome/browser/enterprise/platform_auth/platform_auth_navigation_throttle.h" +#endif #if BUILDFLAG(IS_WIN) #include "base/files/file_util.h" #include "base/strings/string_tokenizer.h" #include "base/win/win_util.h" #include "base/win/windows_version.h" #include "chrome/browser/chrome_browser_main_win.h" -#include "chrome/browser/enterprise/platform_auth/platform_auth_navigation_throttle.h" #include "chrome/browser/lifetime/application_lifetime_desktop.h" #include "chrome/install_static/install_util.h" #include "chrome/services/util_win/public/mojom/util_win.mojom.h" @@ -437,7 +446,9 @@ #include "ash/webui/camera_app_ui/url_constants.h" #include "ash/webui/help_app_ui/url_constants.h" #include "ash/webui/media_app_ui/url_constants.h" +#include "ash/webui/print_management/url_constants.h" #include "ash/webui/scanning/url_constants.h" +#include "ash/webui/shortcut_customization_ui/url_constants.h" #include "chrome/app/chrome_crash_reporter_client.h" #include "chrome/browser/ash/arc/fileapi/arc_content_file_system_backend_delegate.h" #include "chrome/browser/ash/arc/fileapi/arc_documents_provider_backend_delegate.h" @@ -459,7 +470,7 @@ #include "chrome/browser/ash/profiles/profile_helper.h" #include "chrome/browser/ash/smb_client/fileapi/smbfs_file_system_backend_delegate.h" #include "chrome/browser/ash/system/input_device_settings.h" -#include "chrome/browser/ash/url_handler.h" +#include "chrome/browser/ash/url_handler/url_handler.h" #include "chrome/browser/chromeos/app_mode/kiosk_settings_navigation_throttle.h" #include "chrome/browser/speech/tts_chromeos.h" #include "chrome/browser/speech/tts_controller_delegate_impl.h" @@ -523,6 +534,7 @@ #include "chrome/browser/web_applications/locks/app_lock.h" #include "chrome/browser/web_applications/proto/web_app_install_state.pb.h" #include "chrome/browser/web_applications/web_app_helpers.h" +#include "components/keep_alive_registry/keep_alive_registry.h" #include "third_party/blink/public/mojom/installedapp/related_application.mojom.h" #endif // !BUILDFLAG(IS_ANDROID) @@ -756,7 +768,7 @@ #include "base/win/windows_h_disallowed.h" #endif // defined(_WINDOWS_) -#if BUILDFLAG(ENABLE_SCREEN_AI_SERVICE) +#if !BUILDFLAG(IS_ANDROID) #include "chrome/browser/screen_ai/screen_ai_install_state.h" #endif @@ -771,10 +783,10 @@ #include "chromeos/components/kiosk/kiosk_utils.h" #endif // BUILDFLAG(IS_CHROMEOS) -#if BUILDFLAG(ENTERPRISE_DATA_CONTROLS) +#if BUILDFLAG(ENTERPRISE_DATA_CONTROLS) && !BUILDFLAG(IS_ANDROID) #include "chrome/browser/enterprise/data_protection/data_protection_clipboard_utils.h" #include "chrome/browser/enterprise/data_protection/paste_allowed_request.h" -#endif // BUILDFLAG(ENTERPRISE_DATA_CONTROLS) +#endif // BUILDFLAG(ENTERPRISE_DATA_CONTROLS) && !BUILDFLAG(IS_ANDROID) #if BUILDFLAG(OS_LEVEL_GEOLOCATION_PERMISSION_SUPPORTED) #include "services/device/public/cpp/geolocation/geolocation_system_permission_manager.h" @@ -1464,7 +1476,9 @@ std::unique_ptr MaybeCreateVisitedLinkNavigationThrottleFor( content::NavigationHandle* navigation_handle) { if (!base::FeatureList::IsEnabled( - blink::features::kPartitionVisitedLinkDatabase)) { + blink::features::kPartitionVisitedLinkDatabase) && + !base::FeatureList::IsEnabled( + blink::features::kPartitionVisitedLinkDatabaseWithSelfLinks)) { return nullptr; } Profile* profile = Profile::FromBrowserContext( @@ -1486,14 +1500,19 @@ MaybeCreateVisitedLinkNavigationThrottleFor( ChromeContentBrowserClient::PopupNavigationDelegateFactory g_popup_navigation_delegate_factory = &CreatePopupNavigationDelegate; -bool DetermineIfDevtoolsUserForProcessPerSite() { +#if !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(CHROME_FOR_TESTING) +bool DetermineIfDevToolsUserForProcessPerSite() { bool is_devtools_user = false; + // Only count uses of DevTools from within the last week. + constexpr base::TimeDelta kDevToolsUserActivityWindow = base::Days(7); + auto now = base::Time::Now(); if (ProfileManager* profile_manager = g_browser_process->profile_manager()) { std::vector profiles = profile_manager->GetLoadedProfiles(); for (auto* profile : profiles) { - if (profile->GetPrefs()->HasPrefPath( - prefs::kDevToolsSyncedPreferencesSyncDisabled) || - profile->GetPrefs()->HasPrefPath(prefs::kDevToolsPreferences)) { + base::Time last_open_time = base::Time::FromDeltaSinceWindowsEpoch( + base::Milliseconds(profile->GetPrefs()->GetInt64( + prefs::kDevToolsLastOpenTimestamp))); + if (now - last_open_time < kDevToolsUserActivityWindow) { is_devtools_user = true; break; } @@ -1504,6 +1523,7 @@ bool DetermineIfDevtoolsUserForProcessPerSite() { is_devtools_user); return is_devtools_user; } +#endif net::handles::NetworkHandle GetBoundNetworkFromRenderFrameHost( content::RenderFrameHost* frame) { @@ -1849,7 +1869,7 @@ ChromeContentBrowserClient::CreateBrowserMainParts(bool is_integration_test) { #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) main_parts->AddParts( std::make_unique< - chrome::enterprise_util::ChromeBrowserMainExtraPartsEnterprise>()); + enterprise_util::ChromeBrowserMainExtraPartsEnterprise>()); #endif #if !BUILDFLAG(IS_ANDROID) @@ -2089,13 +2109,33 @@ bool ChromeContentBrowserClient::ShouldUseProcessPerSite( bool ChromeContentBrowserClient::ShouldAllowProcessPerSiteForMultipleMainFrames( content::BrowserContext* browser_context) { - static bool is_devtools_user = DetermineIfDevtoolsUserForProcessPerSite(); +#if !BUILDFLAG(IS_ANDROID) +#if BUILDFLAG(CHROME_FOR_TESTING) + static bool is_devtools_user = true; +#else + static bool is_devtools_user = + DetermineIfDevToolsUserForProcessPerSite() || headless::IsHeadlessMode(); +#endif - // TODO(dtapuska): Implement enterprise policy support here. if (is_devtools_user && base::FeatureList::IsEnabled( features::kProcessPerSiteSkipDevtoolsUsers)) { return false; } +#endif + // Skip enterprise users. + if (base::FeatureList::IsEnabled( + features::kProcessPerSiteSkipEnterpriseUsers)) { + Profile* profile = Profile::FromBrowserContext(browser_context); + if (!profile) { + return false; + } + auto* management_service = + policy::ManagementServiceFactory::GetForProfile(profile); + if (policy::ManagementServiceFactory::GetForPlatform()->IsManaged() && + management_service && management_service->IsManaged()) { + return false; + } + } return true; } @@ -2700,6 +2740,7 @@ void MaybeAppendBlinkSettingsSwitchForFieldTrial( void ChromeContentBrowserClient::AppendExtraCommandLineSwitches( base::CommandLine* command_line, int child_process_id) { + crash_keys::AppendStringAnnotationsCommandLineSwitch(command_line); #if BUILDFLAG(IS_MAC) std::unique_ptr client_info = GoogleUpdateSettings::LoadMetricsClientInfo(); @@ -3055,7 +3096,7 @@ void ChromeContentBrowserClient::AppendExtraCommandLineSwitches( if (const auto* heap_profiler_controller = heap_profiling::HeapProfilerController::GetInstance()) { heap_profiler_controller->AppendCommandLineSwitchForChildProcess( - command_line, GetProfileParamsProcess(*command_line), + command_line, GetProfilerProcessType(*command_line), child_process_id); } } @@ -3469,11 +3510,19 @@ bool ChromeContentBrowserClient::IsPrivacySandboxReportingDestinationAttested( void ChromeContentBrowserClient::OnAuctionComplete( content::RenderFrameHost* render_frame_host, - content::InterestGroupManager::InterestGroupDataKey winner_data_key) { - content_settings::PageSpecificContentSettings::BrowsingDataAccessed( - render_frame_host, winner_data_key, - BrowsingDataModel::StorageType::kInterestGroup, - /*blocked=*/false); + std::optional + winner_data_key) { + if (winner_data_key) { + content_settings::PageSpecificContentSettings::BrowsingDataAccessed( + render_frame_host, winner_data_key.value(), + BrowsingDataModel::StorageType::kInterestGroup, + /*blocked=*/false); + } + if (auto* observer = + page_load_metrics::MetricsWebContentsObserver::FromWebContents( + WebContents::FromRenderFrameHost(render_frame_host))) { + observer->OnAdAuctionComplete(render_frame_host); + } } bool ChromeContentBrowserClient::IsAttributionReportingOperationAllowed( @@ -3826,8 +3875,9 @@ bool ChromeContentBrowserClient::ShouldDenyRequestOnCertificateError( namespace { -bool ShouldDisableForcedColorsForWebContent(content::WebContents* contents) { - if (!contents) { +bool ShouldDisableForcedColorsForWebContent(content::WebContents* contents, + bool in_forced_colors) { + if (!contents || !in_forced_colors) { return false; } @@ -3865,7 +3915,8 @@ bool ShouldDisableForcedColorsForWebContent(content::WebContents* contents) { bool IsForcedColorsEnabledForWebContent(content::WebContents* contents, const ui::NativeTheme* native_theme) { return native_theme->InForcedColorsMode() && - !ShouldDisableForcedColorsForWebContent(contents); + !ShouldDisableForcedColorsForWebContent(contents, + /*in_forced_colors=*/true); } #if !BUILDFLAG(IS_ANDROID) @@ -3938,6 +3989,7 @@ bool UpdatePreferredColorScheme(WebPreferences* web_prefs, if (force_light) { web_prefs->preferred_color_scheme = blink::mojom::PreferredColorScheme::kLight; +#if !BUILDFLAG(IS_ANDROID) } else if (content::HasWebUIScheme(url)) { // If color scheme is not forced, WebUI should track the color mode of the // ColorProvider associated with `web_contents`. @@ -3945,6 +3997,7 @@ bool UpdatePreferredColorScheme(WebPreferences* web_prefs, web_contents->GetColorMode() == ui::ColorProviderKey::ColorMode::kLight ? blink::mojom::PreferredColorScheme::kLight : blink::mojom::PreferredColorScheme::kDark; +#endif // !BUILDFLAG(IS_ANDROID) } return old_preferred_color_scheme != web_prefs->preferred_color_scheme; @@ -4045,12 +4098,12 @@ base::OnceClosure ChromeContentBrowserClient::SelectClientCertificate( } #endif // BUILDFLAG(IS_CHROMEOS_ASH) - GURL requesting_url = chrome::enterprise_util::GetRequestingUrl( - cert_request_info->host_and_port); + GURL requesting_url = + enterprise_util::GetRequestingUrl(cert_request_info->host_and_port); DCHECK(requesting_url.is_valid()) << "Invalid URL string: " << requesting_url; net::ClientCertIdentityList matching_certificates, nonmatching_certificates; - chrome::enterprise_util::AutoSelectCertificates( + enterprise_util::AutoSelectCertificates( profile, requesting_url, std::move(client_certs), &matching_certificates, &nonmatching_certificates); @@ -4516,10 +4569,6 @@ void ChromeContentBrowserClient::OverrideWebkitPrefs( web_prefs->require_transient_activation_for_show_file_or_directory_picker = IsFileOrDirectoryPickerWithoutGestureAllowed(web_contents); #endif // !BUILDFLAG(IS_ANDROID) - // TODO(crbug.com/40941384): Remove this pref and solely rely on permissions. - web_prefs->require_transient_activation_for_html_fullscreen = - IsTransientActivationRequiredForHtmlFullscreen( - web_contents->GetPrimaryMainFrame()); #if BUILDFLAG(IS_CHROMEOS) web_prefs->subapps_apis_require_user_gesture_and_authorization = @@ -4545,8 +4594,8 @@ void ChromeContentBrowserClient::OverrideWebkitPrefs( web_prefs->in_forced_colors = IsForcedColorsEnabledForWebContent(web_contents, GetWebTheme()); - web_prefs->is_forced_colors_disabled = - ShouldDisableForcedColorsForWebContent(web_contents); + web_prefs->is_forced_colors_disabled = ShouldDisableForcedColorsForWebContent( + web_contents, GetWebTheme()->InForcedColorsMode()); UpdatePreferredColorScheme( web_prefs, @@ -4628,15 +4677,6 @@ bool ChromeContentBrowserClient::OverrideWebPreferencesAfterNavigation( web_prefs->require_transient_activation_for_show_file_or_directory_picker = require_transient_activation_for_show_file_or_directory_picker; #endif // !BUILDFLAG(IS_ANDROID) - // TODO(crbug.com/40941384): Remove this pref and solely rely on permissions. - const bool require_transient_activation_for_html_fullscreen = - IsTransientActivationRequiredForHtmlFullscreen( - web_contents->GetPrimaryMainFrame()); - prefs_changed |= - (web_prefs->require_transient_activation_for_html_fullscreen != - require_transient_activation_for_html_fullscreen); - web_prefs->require_transient_activation_for_html_fullscreen = - require_transient_activation_for_html_fullscreen; for (auto& parts : extra_parts_) { prefs_changed |= @@ -4648,8 +4688,8 @@ bool ChromeContentBrowserClient::OverrideWebPreferencesAfterNavigation( prefs_changed |= (web_prefs->in_forced_colors != in_forced_colors); web_prefs->in_forced_colors = in_forced_colors; - const bool is_forced_colors_disabled = - ShouldDisableForcedColorsForWebContent(web_contents); + const bool is_forced_colors_disabled = ShouldDisableForcedColorsForWebContent( + web_contents, GetWebTheme()->InForcedColorsMode()); prefs_changed |= (web_prefs->is_forced_colors_disabled != is_forced_colors_disabled); web_prefs->is_forced_colors_disabled = is_forced_colors_disabled; @@ -5023,9 +5063,7 @@ std::wstring ChromeContentBrowserClient::GetAppContainerSidForSandboxType( #endif case sandbox::mojom::Sandbox::kPrintCompositor: case sandbox::mojom::Sandbox::kAudio: -#if BUILDFLAG(ENABLE_SCREEN_AI_SERVICE) case sandbox::mojom::Sandbox::kScreenAI: -#endif case sandbox::mojom::Sandbox::kSpeechRecognition: case sandbox::mojom::Sandbox::kPdfConversion: case sandbox::mojom::Sandbox::kService: @@ -5125,7 +5163,7 @@ bool ChromeContentBrowserClient::PreSpawnChild( case sandbox::mojom::Sandbox::kPrintBackend: #endif case sandbox::mojom::Sandbox::kPrintCompositor: -#if BUILDFLAG(ENABLE_SCREEN_AI_SERVICE) +#if !BUILDFLAG(IS_ANDROID) case sandbox::mojom::Sandbox::kScreenAI: #endif case sandbox::mojom::Sandbox::kAudio: @@ -5419,9 +5457,16 @@ ChromeContentBrowserClient::CreateThrottlesForNavigation( SupervisedUserGoogleAuthNavigationThrottle::MaybeCreate(handle), &throttles); - MaybeAddThrottle( - SupervisedUserNavigationThrottle::MaybeCreateThrottleFor(handle), - &throttles); + if (base::FeatureList::IsEnabled( + supervised_user::kClassifyUrlOnProcessResponseEvent)) { + MaybeAddThrottle( + supervised_user::MaybeCreateClassifyUrlNavigationThrottleFor(handle), + &throttles); + } else { + MaybeAddThrottle( + SupervisedUserNavigationThrottle::MaybeCreateThrottleFor(handle), + &throttles); + } if (auto* throttle_manager = subresource_filter::ContentSubresourceFilterThrottleManager:: @@ -5429,8 +5474,8 @@ ChromeContentBrowserClient::CreateThrottlesForNavigation( throttle_manager->MaybeAppendNavigationThrottles(handle, &throttles); } - if (base::FeatureList::IsEnabled(fingerprinting_protection_filter::features:: - kEnableFingerprintingProtectionFilter)) { + if (fingerprinting_protection_filter::features:: + IsFingerprintingProtectionFeatureEnabled()) { if (auto* throttle_manager = fingerprinting_protection_filter:: ThrottleManager::FromNavigationHandle(*handle)) { throttle_manager->MaybeAppendNavigationThrottles(handle, &throttles); @@ -5644,7 +5689,7 @@ ChromeContentBrowserClient::CreateThrottlesForNavigation( &throttles); } -#if BUILDFLAG(IS_WIN) +#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) // Don't perform platform authentication in incognito and guest profiles. if (profile && !profile->IsOffTheRecord()) { MaybeAddThrottle( @@ -5652,7 +5697,7 @@ ChromeContentBrowserClient::CreateThrottlesForNavigation( handle), &throttles); } -#endif // BUILDFLAG(IS_WIN) +#endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) #if BUILDFLAG(IS_CHROMEOS) // TODO(b:296844164) Handle captive portal signin properly. @@ -5714,7 +5759,7 @@ bool ChromeContentBrowserClient::EnforceSystemAudioEchoCancellation() { // TODO(b/270042522): This is a short term solution to enforce the system // audio cancellation and will be removed before Lacros is released. The // short term solution will not work on Lacros. -#if BUILDFLAG(IS_CHROMEOS_ASH) && defined(USE_CRAS) +#if BUILDFLAG(IS_CHROMEOS_ASH) && BUILDFLAG(USE_CRAS) bool system_aec_enabled = false; ash::CrosSettings::Get()->GetBoolean(ash::kDeviceSystemAecEnabled, &system_aec_enabled); @@ -5787,13 +5832,23 @@ ChromeContentBrowserClient::GetDevToolsBackgroundServiceExpirations( std::optional ChromeContentBrowserClient::GetSpareRendererDelayForSiteURL( const GURL& site_url) { - if (!IsTopChromeWebUIURL(site_url)) { - return std::nullopt; + if (IsTopChromeWebUIURL(site_url)) { + // Experiments have shown that delaying 2s brings the most significant + // improvements to Top Chrome WebUIs. See crbug.com/41490050. + return base::Seconds(2); } - // Experiments have shown that delaying 2s brings the most significant - // improvements to Top Chrome WebUIs. See crbug.com/41490050. - return base::Seconds(2); +#if BUILDFLAG(IS_ANDROID) + // Delay the creation of the renderer on Android since the CPU tends + // to be busy during loading. + if (base::FeatureList::IsEnabled( + features::kAndroidWarmUpSpareRendererWithTimeout)) { + return base::Milliseconds( + features::kAndroidSpareRendererCreationDelayMs.Get()); + } +#endif + + return std::nullopt; } std::unique_ptr @@ -5911,7 +5966,8 @@ ChromeContentBrowserClient::MaybeCreateSafeBrowsingURLLoaderThrottle( connectors_service->GetDMTokenForRealTimeUrlCheck().has_value(); bool is_enterprise_lookup_enabled = safe_browsing::RealTimePolicyEngine::CanPerformEnterpriseFullURLLookup( - profile->GetPrefs(), has_valid_dm_token, profile->IsOffTheRecord()); + profile->GetPrefs(), has_valid_dm_token, profile->IsOffTheRecord(), + profile->IsGuestSession()); #else bool is_enterprise_lookup_enabled = false; #endif @@ -6065,9 +6121,12 @@ ChromeContentBrowserClient::CreateURLLoaderThrottles( #endif #if BUILDFLAG(ENABLE_REQUEST_HEADER_INTEGRITY) - result.push_back( - std::make_unique< - request_header_integrity::RequestHeaderIntegrityURLLoaderThrottle>()); + if (request_header_integrity::RequestHeaderIntegrityURLLoaderThrottle:: + IsFeatureEnabled()) { + result.push_back( + std::make_unique()); + } #endif if (chrome_navigation_ui_data && @@ -6384,6 +6443,14 @@ bool IsSystemFeatureURLDisabled(const GURL& url) { return IsSystemFeatureDisabled(policy::SystemFeature::kTerminal); } + if (url.DomainIs(ash::kChromeUIPrintManagementHost)) { + return IsSystemFeatureDisabled(policy::SystemFeature::kPrintJobs); + } + + if (url.DomainIs(ash::kChromeUIShortcutCustomizationAppHost)) { + return IsSystemFeatureDisabled(policy::SystemFeature::kKeyShortcuts); + } + #endif return false; @@ -6934,7 +7001,7 @@ bool ChromeContentBrowserClient::IsSecurityLevelAcceptableForWebAuthn( } content::WebContents* web_contents = content::WebContents::FromRenderFrameHost(rfh); - SecurityStateTabHelper::CreateForWebContents(web_contents); + ChromeSecurityStateTabHelper::CreateForWebContents(web_contents); SecurityStateTabHelper* helper = SecurityStateTabHelper::FromWebContents(web_contents); security_state::SecurityLevel security_level = helper->GetSecurityLevel(); @@ -7151,6 +7218,16 @@ bool ChromeContentBrowserClient::HandleWebUI( chrome::kChromeUIHelpHost); } +#if BUILDFLAG(CHROME_ROOT_STORE_CERT_MANAGEMENT_UI) + if (base::FeatureList::IsEnabled(features::kEnableCertManagementUIV2) && + url->SchemeIs(content::kChromeUIScheme) && + url->host() == chrome::kChromeUISettingsHost && + url->path() == chrome::kChromeUICertificateRedirectPath) { + *url = GURL(chrome::kChromeUICertificateManagerDialogURL); + return true; + } +#endif // BUILDFLAG(CHROME_ROOT_STORE_CERT_MANAGEMENT_UI) + #if !BUILDFLAG(IS_ANDROID) Profile* profile = Profile::FromBrowserContext(browser_context); auto* tracking_protection_settings = @@ -7258,16 +7335,15 @@ bool ChromeContentBrowserClient::HandleWebUIReverse( } #endif // BUILDFLAG(IS_WIN) -#if !BUILDFLAG(IS_ANDROID) - // TODO(crbug.com/40258836): Remove this after feature is launched. +#if BUILDFLAG(CHROME_ROOT_STORE_CERT_MANAGEMENT_UI) // No need to actually reverse-rewrite the URL, but return true to update the - // displayed URL when rewriting chrome://settings/passwords to - // chrome://password-manager. + // displayed URL when rewriting chrome://settings/certificates to + // chrome://certificate-manager if (url->SchemeIs(content::kChromeUIScheme) && - url->DomainIs(password_manager::kChromeUIPasswordManagerHost)) { + url->host() == chrome::kChromeUICertificateManagerHost) { return true; } -#endif +#endif // BUILDFLAG(CHROME_ROOT_STORE_CERT_MANAGEMENT_UI) // No need to actually reverse-rewrite the URL, but return true to update the // displayed URL when rewriting chrome://help to chrome://settings/help. @@ -7778,7 +7854,8 @@ void ChromeContentBrowserClient::IsClipboardPasteAllowedByPolicy( const content::ClipboardMetadata& metadata, ClipboardPasteData clipboard_paste_data, IsClipboardPasteAllowedCallback callback) { -#if BUILDFLAG(ENTERPRISE_DATA_CONTROLS) +// TODO(b/352728209): Add Android-specific hook for Data Controls. +#if BUILDFLAG(ENTERPRISE_DATA_CONTROLS) && !BUILDFLAG(IS_ANDROID) enterprise_data_protection::PasteAllowedRequest::StartPasteAllowedRequest( source, destination, metadata, std::move(clipboard_paste_data), std::move(callback)); @@ -7792,7 +7869,8 @@ void ChromeContentBrowserClient::IsClipboardCopyAllowedByPolicy( const content::ClipboardMetadata& metadata, const ClipboardPasteData& data, IsClipboardCopyAllowedCallback callback) { -#if BUILDFLAG(ENTERPRISE_DATA_CONTROLS) +// TODO(b/352728209): Add Android-specific hook for Data Controls. +#if BUILDFLAG(ENTERPRISE_DATA_CONTROLS) && !BUILDFLAG(IS_ANDROID) enterprise_data_protection::IsClipboardCopyAllowedByPolicy( source, metadata, data, std::move(callback)); #else @@ -7808,7 +7886,7 @@ void ChromeContentBrowserClient::IsClipboardCopyAllowedByPolicy( std::move(callback).Run(metadata.format_type, data, std::move(replacement_data)); } -#endif // BUILDFLAG(ENTERPRISE_DATA_CONTROLS) +#endif // BUILDFLAG(ENTERPRISE_DATA_CONTROLS) && !BUILDFLAG(IS_ANDROID) } #if BUILDFLAG(ENABLE_VR) @@ -7919,6 +7997,30 @@ bool ChromeContentBrowserClient::IsJitDisabledForSite( CONTENT_SETTING_BLOCK); } +bool ChromeContentBrowserClient::AreV8OptimizationsDisabledForSite( + content::BrowserContext* browser_context, + const GURL& site_url) { + Profile* profile = Profile::FromBrowserContext(browser_context); + auto* map = HostContentSettingsMapFactory::GetForProfile(profile); + // Special case to determine if any policy is set. + if (map && site_url.is_empty()) { + return map->GetDefaultContentSetting( + ContentSettingsType::JAVASCRIPT_OPTIMIZER, nullptr) == + CONTENT_SETTING_BLOCK; + } + + // Only disable optimizations for schemes that might atually load web content. + auto* policy = ChildProcessSecurityPolicy::GetInstance(); + if (!policy->IsWebSafeScheme(site_url.scheme())) { + return false; + } + + return (map && + map->GetContentSetting(site_url, site_url, + ContentSettingsType::JAVASCRIPT_OPTIMIZER) == + CONTENT_SETTING_BLOCK); +} + ukm::UkmService* ChromeContentBrowserClient::GetUkmService() { return g_browser_process->GetMetricsServicesManager()->GetUkmService(); } @@ -7946,15 +8048,19 @@ void ChromeContentBrowserClient::OnKeepaliveRequestStarted( const auto timeout = GetKeepaliveTimerTimeout(context); keepalive_deadline_ = std::max(keepalive_deadline_, now + timeout); if (keepalive_deadline_ > now && !keepalive_timer_.IsRunning()) { - DVLOG(1) << "Starting a keepalive timer(" << timeout.InSecondsF() - << " seconds)"; - keepalive_timer_.Start( - FROM_HERE, keepalive_deadline_ - now, - base::BindOnce( - &ChromeContentBrowserClient::OnKeepaliveTimerFired, - weak_factory_.GetWeakPtr(), - std::make_unique( - KeepAliveOrigin::BROWSER, KeepAliveRestartOption::DISABLED))); + if (!KeepAliveRegistry::GetInstance()->IsShuttingDown()) { + DVLOG(1) << "Starting a keepalive timer(" << timeout.InSecondsF() + << " seconds)"; + keepalive_timer_.Start( + FROM_HERE, keepalive_deadline_ - now, + base::BindOnce( + &ChromeContentBrowserClient::OnKeepaliveTimerFired, + weak_factory_.GetWeakPtr(), + std::make_unique( + KeepAliveOrigin::BROWSER, KeepAliveRestartOption::DISABLED))); + } else { + DVLOG(1) << "Keepalive timer not started as browser is shutting down"; + } } #endif // !BUILDFLAG(IS_ANDROID) } @@ -7990,7 +8096,6 @@ bool ChromeContentBrowserClient::SetupEmbedderSandboxParameters( CHECK(compiler->SetParameter(sandbox::policy::kParamSodaLanguagePackPath, soda_language_pack_path.value())); return true; -#if BUILDFLAG(ENABLE_SCREEN_AI_SERVICE) } else if (sandbox_type == sandbox::mojom::Sandbox::kScreenAI) { // ScreenAI service needs read access to ScreenAI component binary path to // load it. @@ -8003,7 +8108,6 @@ bool ChromeContentBrowserClient::SetupEmbedderSandboxParameters( } return compiler->SetParameter(sandbox::policy::kParamScreenAiComponentPath, screen_ai_binary_path.value()); -#endif } return false; @@ -8014,6 +8118,23 @@ bool ChromeContentBrowserClient::SetupEmbedderSandboxParameters( void ChromeContentBrowserClient::GetHyphenationDictionary( base::OnceCallback callback) { #if BUILDFLAG(USE_MINIKIN_HYPHENATION) && !BUILDFLAG(IS_ANDROID) + // Chrome for Testing bundles hyphenation dictionaries however, if the + // component updater is disabled (which is commonly the case with test + // automation frameworks), the hyphenation dictionaries directory is never + // initialized. To work around this, provide the well known hyphenation + // directory here bypassing the disabled component installer. +#if BUILDFLAG(CHROME_FOR_TESTING) + if (base::CommandLine::ForCurrentProcess()->HasSwitch( + switches::kDisableComponentUpdate)) { + base::FilePath dir; + if (base::PathService::Get(base::DIR_EXE, &dir)) { + dir = dir.AppendASCII("hyphen-data"); + std::move(callback).Run(dir); + return; + } + } +#endif // BUILDFLAG(CHROME_FOR_TESTING) + component_updater::HyphenationComponentInstallerPolicy:: GetHyphenationDictionary(std::move(callback)); #endif @@ -8157,13 +8278,9 @@ bool ChromeContentBrowserClient::ShouldDisableOriginAgentClusterDefault( } bool ChromeContentBrowserClient::WillProvidePublicFirstPartySets() { -#if BUILDFLAG(ENABLE_COMPONENT_UPDATER) return !is_minimal_mode_ && !base::CommandLine::ForCurrentProcess()->HasSwitch( switches::kDisableComponentUpdate); -#else - return false; -#endif // BUILDFLAG(ENABLE_COMPONENT_UPDATER) } content::mojom::AlternativeErrorPageOverrideInfoPtr @@ -8330,28 +8447,6 @@ bool ChromeContentBrowserClient:: #endif // !BUILDFLAG(IS_ANDROID) } -bool ChromeContentBrowserClient::IsTransientActivationRequiredForHtmlFullscreen( - content::RenderFrameHost* render_frame_host) { - // TODO(crbug.com/40941384): Remove this code and solely rely on permissions. - if (base::FeatureList::IsEnabled( - features::kAutomaticFullscreenContentSetting) && - !base::FeatureList::IsEnabled( - blink::features::kAutomaticFullscreenPermissionsQuery)) { - const GURL& url = render_frame_host->GetLastCommittedURL(); - const HostContentSettingsMap* const content_settings = - HostContentSettingsMapFactory::GetForProfile( - render_frame_host->GetBrowserContext()); - if (content_settings && - content_settings->GetContentSetting( - url, url, ContentSettingsType::AUTOMATIC_FULLSCREEN) == - CONTENT_SETTING_ALLOW) { - return false; - } - } - - return true; -} - #if BUILDFLAG(IS_MAC) std::string ChromeContentBrowserClient::GetChildProcessSuffix(int child_flags) { if (child_flags == chrome::kChildProcessHelperAlerts) { @@ -8444,7 +8539,7 @@ bool ChromeContentBrowserClient:: } #endif - if (chrome::IsRunningInAppMode()) { + if (IsRunningInAppMode()) { return false; } @@ -8578,10 +8673,11 @@ bool ChromeContentBrowserClient::ShouldSuppressAXLoadComplete( void ChromeContentBrowserClient::BindAIManager( content::BrowserContext* browser_context, + std::variant context, mojo::PendingReceiver receiver) { auto* ai_manager = AIManagerKeyedServiceFactory::GetAIManagerKeyedService(browser_context); - ai_manager->AddReceiver(std::move(receiver)); + ai_manager->AddReceiver(std::move(receiver), context); } #if !BUILDFLAG(IS_ANDROID) @@ -8655,6 +8751,11 @@ void ChromeContentBrowserClient::QueryInstalledWebAppsByManifestId( } #endif // !BUILDFLAG(IS_ANDROID) +bool ChromeContentBrowserClient::IsSaveableNavigation( + content::NavigationHandle* navigation_handle) { + return tab_groups::TabGroupSyncUtils::IsSaveableNavigation(navigation_handle); +} + void ChromeContentBrowserClient::SetSamplingProfiler( std::unique_ptr sampling_profiler) { sampling_profiler_ = std::move(sampling_profiler); diff --git a/tools/under-control/src/chrome/browser/prefs/browser_prefs.cc b/tools/under-control/src/chrome/browser/prefs/browser_prefs.cc index 8cf6b5d7..812bb38a 100755 --- a/tools/under-control/src/chrome/browser/prefs/browser_prefs.cc +++ b/tools/under-control/src/chrome/browser/prefs/browser_prefs.cc @@ -70,7 +70,6 @@ #include "chrome/browser/push_messaging/push_messaging_service_impl.h" #include "chrome/browser/rlz/chrome_rlz_tracker_delegate.h" #include "chrome/browser/search/search.h" -#include "chrome/browser/sharing/sharing_sync_preference.h" #include "chrome/browser/sharing_hub/sharing_hub_features.h" #include "chrome/browser/ssl/ssl_config_service_manager.h" #include "chrome/browser/task_manager/task_manager_interface.h" @@ -97,7 +96,10 @@ #include "chrome/browser/ui/webui/ntp/new_tab_ui.h" #include "chrome/browser/ui/webui/policy/policy_ui.h" #include "chrome/browser/ui/webui/print_preview/policy_settings.h" +#include "components/plus_addresses/plus_address_prefs.h" #include "components/privacy_sandbox/tpcd_pref_names.h" +#include "components/sharing_message/sharing_sync_preference.h" +#include "components/signin/core/browser/active_primary_accounts_metrics_recorder.h" #if BUILDFLAG(IS_CHROMEOS_ASH) #include "chrome/browser/ui/webui/settings/reset_settings_handler.h" #endif // BUILDFLAG(IS_CHROMEOS_ASH) @@ -123,7 +125,7 @@ #include "components/embedder_support/origin_trials/origin_trial_prefs.h" #include "components/enterprise/browser/identifiers/identifiers_prefs.h" #include "components/enterprise/buildflags/buildflags.h" -#include "components/enterprise/connectors/connectors_prefs.h" +#include "components/enterprise/connectors/core/connectors_prefs.h" #include "components/fingerprinting_protection_filter/common/fingerprinting_protection_filter_constants.h" #include "components/flags_ui/pref_service_flags_storage.h" #include "components/history_clusters/core/history_clusters_prefs.h" @@ -198,7 +200,6 @@ #include "ppapi/buildflags/buildflags.h" #include "printing/buildflags/buildflags.h" #include "rlz/buildflags/buildflags.h" -#include "services/screen_ai/buildflags/buildflags.h" #if BUILDFLAG(ENABLE_BACKGROUND_MODE) #include "chrome/browser/background/background_mode_manager.h" @@ -208,8 +209,8 @@ #include "chrome/browser/accessibility/animation_policy_prefs.h" #include "chrome/browser/apps/platform_apps/shortcut_manager.h" #include "chrome/browser/extensions/activity_log/activity_log.h" -#include "chrome/browser/extensions/api/commands/command_service.h" #include "chrome/browser/extensions/api/tabs/tabs_api.h" +#include "chrome/browser/extensions/commands/command_service.h" #include "chrome/browser/extensions/extension_web_ui.h" #include "chrome/browser/extensions/preinstalled_apps.h" #include "chrome/browser/ui/extensions/settings_api_bubble_helpers.h" @@ -244,17 +245,6 @@ #include "chrome/browser/pdf/pdf_pref_names.h" #endif // BUILDFLAG(ENABLE_PDF) -#if BUILDFLAG(ENABLE_SCREEN_AI_SERVICE) -#include "chrome/browser/screen_ai/pref_names.h" -#endif - -#include "components/feed/buildflags.h" -#if BUILDFLAG(ENABLE_FEED_V2) -#include "components/feed/core/common/pref_names.h" // nogncheck -#include "components/feed/core/shared_prefs/pref_names.h" // nogncheck -#include "components/feed/core/v2/ios_shared_prefs.h" // nogncheck -#endif - #if BUILDFLAG(IS_ANDROID) #include "chrome/browser/accessibility/accessibility_prefs/android/accessibility_prefs_controller.h" #include "chrome/browser/android/bookmarks/partner_bookmarks_shim.h" @@ -271,6 +261,9 @@ #include "chrome/browser/readaloud/android/prefs.h" #include "chrome/browser/ssl/known_interception_disclosure_infobar_delegate.h" #include "components/cdm/browser/media_drm_storage_impl.h" // nogncheck crbug.com/1125897 +#include "components/feed/core/common/pref_names.h" // nogncheck +#include "components/feed/core/shared_prefs/pref_names.h" // nogncheck +#include "components/feed/core/v2/ios_shared_prefs.h" // nogncheck #include "components/ntp_tiles/popular_sites_impl.h" #include "components/permissions/contexts/geolocation_permission_context_android.h" #include "components/query_tiles/tile_service_prefs.h" @@ -292,6 +285,7 @@ #include "chrome/browser/new_tab_page/modules/v2/tab_resumption/tab_resumption_page_handler.h" #include "chrome/browser/new_tab_page/promos/promo_service.h" #include "chrome/browser/policy/developer_tools_policy_handler.h" +#include "chrome/browser/screen_ai/pref_names.h" #include "chrome/browser/search/background/ntp_custom_background_service.h" #include "chrome/browser/search_engine_choice/search_engine_choice_dialog_service.h" #include "chrome/browser/serial/serial_policy_allowed_ports.h" @@ -353,10 +347,7 @@ #include "chrome/browser/ash/account_manager/account_manager_edu_coexistence_controller.h" #include "chrome/browser/ash/app_list/app_list_syncable_service.h" #include "chrome/browser/ash/app_list/arc/arc_app_list_prefs.h" -#include "chrome/browser/ash/app_mode/kiosk_chrome_app_manager.h" -#include "chrome/browser/ash/app_mode/kiosk_cryptohome_remover.h" -#include "chrome/browser/ash/app_mode/kiosk_system_session.h" -#include "chrome/browser/ash/app_mode/web_app/web_kiosk_app_manager.h" +#include "chrome/browser/ash/app_mode/kiosk_controller.h" #include "chrome/browser/ash/app_restore/full_restore_prefs.h" #include "chrome/browser/ash/apps/apk_web_app_service.h" #include "chrome/browser/ash/arc/boot_phase_monitor/arc_boot_phase_monitor_bridge.h" @@ -427,12 +418,12 @@ #include "chrome/browser/ash/policy/status_collector/status_collector.h" #include "chrome/browser/ash/power/auto_screen_brightness/metrics_reporter.h" #include "chrome/browser/ash/power/power_metrics_reporter.h" -#include "chrome/browser/ash/preferences.h" +#include "chrome/browser/ash/preferences/preferences.h" #include "chrome/browser/ash/printing/cups_printers_manager.h" #include "chrome/browser/ash/printing/enterprise/enterprise_printers_provider.h" #include "chrome/browser/ash/release_notes/release_notes_storage.h" #include "chrome/browser/ash/scanning/chrome_scanning_app_delegate.h" -#include "chrome/browser/ash/scheduler_configuration_manager.h" +#include "chrome/browser/ash/scheduler_config/scheduler_configuration_manager.h" #include "chrome/browser/ash/settings/device_settings_cache.h" #include "chrome/browser/ash/system/automatic_reboot_manager.h" #include "chrome/browser/ash/system/input_device_settings.h" @@ -454,6 +445,7 @@ #include "chromeos/ash/components/network/managed_cellular_pref_handler.h" #include "chromeos/ash/components/network/network_metadata_store.h" #include "chromeos/ash/components/network/proxy/proxy_config_handler.h" +#include "chromeos/ash/components/policy/restriction_schedule/device_restriction_schedule_controller.h" #include "chromeos/ash/components/report/report_controller.h" #include "chromeos/ash/components/standalone_browser/migrator_util.h" #include "chromeos/ash/components/timezone/timezone_resolver.h" @@ -551,7 +543,7 @@ #endif #if BUILDFLAG(ENTERPRISE_DATA_CONTROLS) -#include "components/enterprise/data_controls/core/prefs.h" +#include "components/enterprise/data_controls/core/browser/prefs.h" #endif namespace { @@ -559,10 +551,6 @@ namespace { // Please keep the list of deprecated prefs in chronological order. i.e. Add to // the bottom of the list, not here at the top. -// Deprecated 08/2023. -const char kDriveFsBulkPinningMaxQueueSize[] = - "drivefs.bulk_pinning.max_queue_size"; - // Deprecated 09/2023. const char kPrivacySandboxM1Unrestricted[] = "privacy_sandbox.m1.unrestricted"; #if BUILDFLAG(IS_WIN) @@ -925,10 +913,8 @@ inline constexpr char kTrackingProtectionOnboardingNoticeLastRequested[] = #if !BUILDFLAG(IS_ANDROID) inline constexpr char kAccessibilityReadAnythingOmniboxIconLabelShownCount[] = "settings.a11y.read_anything.omnibox_icon_label_shown_count"; -#endif // Deprecated 06/2024. -#if BUILDFLAG(ENABLE_SCREEN_AI_SERVICE) inline constexpr char kAccessibilityPdfOcrAlwaysActive[] = "settings.a11y.pdf_ocr_always_active"; #endif @@ -1034,6 +1020,33 @@ constexpr char kAppDeduplicationServiceLastGetTimestamp[] = constexpr char kShowTunaScreenEnabled[] = "ash.tuna_screen_oobe_enabled"; #endif +// Deprecated 08/2024 +#if BUILDFLAG(IS_CHROMEOS) +inline constexpr char kStandaloneWindowMigrationNudgeShown[] = + "standalone_window_migration_nudge_shown"; +#endif + +#if BUILDFLAG(IS_ANDROID) +// All of these were deprecated 08/24. +constexpr char kObsoleteUnenrolledFromGoogleMobileServicesAfterApiErrorCode[] = + "unenrolled_from_google_mobile_services_after_api_error_code"; +constexpr char kObsoleteRequiresMigrationAfterSyncStatusChange[] = + "requires_migration_after_sync_status_change"; +constexpr char + kObsoleteUnenrolledFromGoogleMobileServicesWithErrorListVersion[] = + "unenrolled_from_google_mobile_services_with_error_list_version"; +constexpr char kObsoleteTimesReenrolledToGoogleMobileServices[] = + "times_reenrolled_to_google_mobile_services"; +constexpr char kObsoleteTimesAttemptedToReenrollToGoogleMobileServices[] = + "times_attempted_to_reenroll_to_google_mobile_services"; +constexpr char kObsoleteUserReceivedGMSCoreError[] = + "user_received_gmscore_error"; +#endif + +// Deprecated 08/2024. +constexpr char kSafeBrowsingEsbOptInWithFriendlierSettings[] = + "safebrowsing.esb_opt_in_with_friendlier_settings"; + // Register local state used only for migration (clearing or moving to a new // key). void RegisterLocalStatePrefsForMigration(PrefRegistrySimple* registry) { @@ -1123,9 +1136,6 @@ void RegisterProfilePrefsForMigration( user_prefs::PrefRegistrySyncable* registry) { chrome_browser_net::secure_dns::RegisterProbesSettingBackupPref(registry); - // Deprecated 08/2023. - registry->RegisterIntegerPref(kDriveFsBulkPinningMaxQueueSize, 0); - // Deprecated 09/2023. registry->RegisterBooleanPref(kPrivacySandboxM1Unrestricted, false); #if BUILDFLAG(IS_WIN) @@ -1351,10 +1361,8 @@ void RegisterProfilePrefsForMigration( #if !BUILDFLAG(IS_ANDROID) registry->RegisterIntegerPref( kAccessibilityReadAnythingOmniboxIconLabelShownCount, 0); -#endif -// Deprecated 06/2024. -#if BUILDFLAG(ENABLE_SCREEN_AI_SERVICE) + // Deprecated 06/2024. registry->RegisterBooleanPref(kAccessibilityPdfOcrAlwaysActive, true); #endif @@ -1418,6 +1426,29 @@ void RegisterProfilePrefsForMigration( // Deprecated 07/2024. registry->RegisterBooleanPref(kShowTunaScreenEnabled, true); #endif // BUILDFLAG(IS_CHROMEOS_ASH) + +// Deprecated 08/2024 +#if BUILDFLAG(IS_CHROMEOS) + registry->RegisterBooleanPref(kStandaloneWindowMigrationNudgeShown, false); +#endif + +#if BUILDFLAG(IS_ANDROID) + // All of these were deprecated 08/2024. + registry->RegisterIntegerPref( + kObsoleteUnenrolledFromGoogleMobileServicesAfterApiErrorCode, 0); + registry->RegisterBooleanPref(kObsoleteRequiresMigrationAfterSyncStatusChange, + false); + registry->RegisterIntegerPref( + kObsoleteUnenrolledFromGoogleMobileServicesWithErrorListVersion, 0); + registry->RegisterIntegerPref(kObsoleteTimesReenrolledToGoogleMobileServices, + 0); + registry->RegisterIntegerPref( + kObsoleteTimesAttemptedToReenrollToGoogleMobileServices, 0); + registry->RegisterBooleanPref(kObsoleteUserReceivedGMSCoreError, false); +#endif + // Deprecated 08/2024. + registry->RegisterBooleanPref(kSafeBrowsingEsbOptInWithFriendlierSettings, + false); } void ClearSyncRequestedPrefAndMaybeMigrate(PrefService* profile_prefs) { @@ -1460,7 +1491,7 @@ void RegisterLocalState(PrefRegistrySimple* registry) { ChromeContentBrowserClient::RegisterLocalStatePrefs(registry); chrome_labs_prefs::RegisterLocalStatePrefs(registry); ChromeMetricsServiceClient::RegisterPrefs(registry); - chrome::enterprise_util::RegisterLocalStatePrefs(registry); + enterprise_util::RegisterLocalStatePrefs(registry); component_updater::RegisterPrefs(registry); domain_reliability::RegisterPrefs(registry); embedder_support::OriginTrialPrefs::RegisterPrefs(registry); @@ -1502,6 +1533,8 @@ void RegisterLocalState(PrefRegistrySimple* registry) { HidPolicyAllowedDevices::RegisterLocalStatePrefs(registry); #endif sessions::SessionIdGenerator::RegisterPrefs(registry); + signin::ActivePrimaryAccountsMetricsRecorder::RegisterLocalStatePrefs( + registry); SSLConfigServiceManager::RegisterPrefs(registry); subresource_filter::IndexedRulesetVersion::RegisterPrefs( registry, subresource_filter::kSafeBrowsingRulesetConfig.filter_tag); @@ -1599,9 +1632,7 @@ void RegisterLocalState(PrefRegistrySimple* registry) { ash::FastTransitionObserver::RegisterPrefs(registry); ash::HWDataUsageController::RegisterLocalStatePrefs(registry); ash::KerberosCredentialsManager::RegisterLocalStatePrefs(registry); - ash::KioskChromeAppManager::RegisterLocalStatePrefs(registry); - ash::KioskSystemSession::RegisterLocalStatePrefs(registry); - ash::KioskCryptohomeRemover::RegisterPrefs(registry); + ash::KioskController::RegisterLocalStatePrefs(registry); ash::language_prefs::RegisterPrefs(registry); ash::local_search_service::SearchMetricsReporter::RegisterLocalStatePrefs( registry); @@ -1626,7 +1657,6 @@ void RegisterLocalState(PrefRegistrySimple* registry) { ash::TimeZoneResolver::RegisterPrefs(registry); ash::UserImageManagerImpl::RegisterPrefs(registry); ash::UserSessionManager::RegisterPrefs(registry); - ash::WebKioskAppManager::RegisterPrefs(registry); component_updater::MetadataTable::RegisterPrefs(registry); ash::CryptAuthDeviceIdProviderImpl::RegisterLocalPrefs(registry); extensions::ExtensionAssetsManagerChromeOS::RegisterPrefs(registry); @@ -1641,12 +1671,14 @@ void RegisterLocalState(PrefRegistrySimple* registry) { policy::BrowserPolicyConnectorAsh::RegisterPrefs(registry); policy::CrdAdminSessionController::RegisterLocalStatePrefs(registry); policy::DeviceCloudPolicyManagerAsh::RegisterPrefs(registry); + policy::DeviceRestrictionScheduleController::RegisterLocalStatePrefs( + registry); policy::DeviceStatusCollector::RegisterPrefs(registry); policy::DeviceWallpaperImageExternalDataHandler::RegisterPrefs(registry); policy::DMTokenStorage::RegisterPrefs(registry); policy::EnrollmentRequisitionManager::RegisterPrefs(registry); - policy::MinimumVersionPolicyHandler::RegisterPrefs(registry); policy::EuiccStatusUploader::RegisterLocalStatePrefs(registry); + policy::MinimumVersionPolicyHandler::RegisterPrefs(registry); policy::TPMAutoUpdateModePolicyHandler::RegisterPrefs(registry); quirks::QuirksManager::RegisterPrefs(registry); UpgradeDetectorChromeos::RegisterPrefs(registry); @@ -1665,6 +1697,11 @@ void RegisterLocalState(PrefRegistrySimple* registry) { QuitWithAppsController::RegisterPrefs(registry); system_media_permissions::RegisterSystemMediaPermissionStatesPrefs(registry); AppShimRegistry::Get()->RegisterLocalPrefs(registry); + + // The default value is not signicant as this preference is only consulted if + // it is explicitly set by an enterprise policy. + registry->RegisterBooleanPref(prefs::kWebAppsUseAdHocCodeSigningForAppShims, + false); #endif #if BUILDFLAG(IS_CHROMEOS_LACROS) @@ -1706,9 +1743,9 @@ void RegisterLocalState(PrefRegistrySimple* registry) { DeviceOAuth2TokenStoreDesktop::RegisterPrefs(registry); #endif -#if BUILDFLAG(ENABLE_SCREEN_AI_SERVICE) +#if !BUILDFLAG(IS_ANDROID) screen_ai::RegisterLocalStatePrefs(registry); -#endif // BUILDFLAG(ENABLE_SCREEN_AI_SERVICE) +#endif // !BUILDFLAG(IS_ANDROID) #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) PlatformAuthPolicyObserver::RegisterPrefs(registry); @@ -1772,6 +1809,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, commerce::RegisterPrefs(registry); DocumentProvider::RegisterProfilePrefs(registry); enterprise::RegisterIdentifiersProfilePrefs(registry); + enterprise_connectors::RegisterProfilePrefs(registry); enterprise_reporting::RegisterProfilePrefs(registry); dom_distiller::DistilledPagePrefs::RegisterProfilePrefs(registry); DownloadPrefs::RegisterProfilePrefs(registry); @@ -1804,6 +1842,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, permissions::RegisterProfilePrefs(registry); PermissionBubbleMediaAccessHandler::RegisterProfilePrefs(registry); PlatformNotificationServiceImpl::RegisterProfilePrefs(registry); + plus_addresses::prefs::RegisterProfilePrefs(registry); policy::URLBlocklistManager::RegisterProfilePrefs(registry); PolicyUI::RegisterProfilePrefs(registry); PrefProxyConfigTrackerImpl::RegisterProfilePrefs(registry); @@ -1893,12 +1932,9 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, ChromeRLZTrackerDelegate::RegisterProfilePrefs(registry); #endif -#if BUILDFLAG(ENABLE_FEED_V2) +#if BUILDFLAG(IS_ANDROID) feed::prefs::RegisterFeedSharedProfilePrefs(registry); feed::RegisterProfilePrefs(registry); -#endif - -#if BUILDFLAG(IS_ANDROID) cdm::MediaDrmStorageImpl::RegisterProfilePrefs(registry); KnownInterceptionDisclosureInfoBarDelegate::RegisterProfilePrefs(registry); MediaDrmOriginIdManager::RegisterProfilePrefs(registry); @@ -1926,7 +1962,6 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, DeviceServiceImpl::RegisterProfilePrefs(registry); DevToolsWindow::RegisterProfilePrefs(registry); DriveService::RegisterProfilePrefs(registry); - enterprise_connectors::RegisterProfilePrefs(registry); extensions::CommandService::RegisterProfilePrefs(registry); extensions::TabsCaptureVisibleTabFunction::RegisterProfilePrefs(registry); first_run::RegisterProfilePrefs(registry); @@ -2070,7 +2105,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, ProjectorAppClientImpl::RegisterProfilePrefs(registry); ash::floating_workspace_util::RegisterProfilePrefs(registry); policy::RebootNotificationsScheduler::RegisterProfilePrefs(registry); - ash::KioskChromeAppManager::RegisterProfilePrefs(registry); + ash::KioskController::RegisterProfilePrefs(registry); file_manager::file_tasks::RegisterProfilePrefs(registry); file_manager::prefs::RegisterProfilePrefs(registry); bruschetta::prefs::RegisterProfilePrefs(registry); @@ -2151,6 +2186,9 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, registry->RegisterIntegerPref(prefs::kMemorySaverChipExpandedCount, 0); registry->RegisterTimePref(prefs::kLastMemorySaverChipExpandedTimestamp, base::Time()); + registry->RegisterBooleanPref( + prefs::kAccessibilityMainNodeAnnotationsEnabled, false, + user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); #endif #if BUILDFLAG(IS_ANDROID) @@ -2158,12 +2196,6 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, false); #endif -#if BUILDFLAG(ENABLE_SCREEN_AI_SERVICE) - registry->RegisterBooleanPref( - prefs::kAccessibilityMainNodeAnnotationsEnabled, false, - user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); -#endif // BUILDFLAG(ENABLE_SCREEN_AI_SERVICE) - registry->RegisterBooleanPref( prefs::kManagedPrivateNetworkAccessRestrictionsEnabled, false); @@ -2189,6 +2221,8 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, registry->RegisterIntegerPref(prefs::kLensOverlayStartCount, 0); registry->RegisterDictionaryPref(prefs::kReportingEndpoints); + + registry->RegisterBooleanPref(prefs::kCompactModeEnabled, false); } void RegisterUserProfilePrefs(user_prefs::PrefRegistrySyncable* registry) { @@ -2346,37 +2380,12 @@ void MigrateObsoleteProfilePrefs(PrefService* profile_prefs, chrome_browser_net::secure_dns::MigrateProbesSettingToOrFromBackup( profile_prefs); - // Once this migration is complete, the tracked preference - // `kGoogleServicesLastSyncingAccountIdDeprecated` can be removed. - if (profile_prefs->HasPrefPath( - prefs::kGoogleServicesLastSyncingAccountIdDeprecated)) { - std::string account_id = profile_prefs->GetString( - prefs::kGoogleServicesLastSyncingAccountIdDeprecated); - profile_prefs->ClearPref( - prefs::kGoogleServicesLastSyncingAccountIdDeprecated); - bool is_email = account_id.find('@') != std::string::npos; - if (!is_email && !account_id.empty()) { - profile_prefs->SetString(prefs::kGoogleServicesLastSyncingGaiaId, - account_id); - } - } - // TODO(326079444): After experiment is over, update the deprecated date and // allow this to be cleaned up. #if !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_CHROMEOS) MigrateDefaultBrowserLastDeclinedPref(profile_prefs); #endif - // Added 08/2023. - invalidation::InvalidatorRegistrarWithMemory::ClearDeprecatedPrefs( - profile_prefs); - invalidation::PerUserTopicSubscriptionManager::ClearDeprecatedPrefs( - profile_prefs); - invalidation::FCMInvalidationService::ClearDeprecatedPrefs(profile_prefs); - - // Added 08/2023. - profile_prefs->ClearPref(kDriveFsBulkPinningMaxQueueSize); - // Added 09/2023. profile_prefs->ClearPref(kPrivacySandboxM1Unrestricted); #if BUILDFLAG(IS_WIN) @@ -2638,10 +2647,8 @@ void MigrateObsoleteProfilePrefs(PrefService* profile_prefs, #if !BUILDFLAG(IS_ANDROID) profile_prefs->ClearPref( kAccessibilityReadAnythingOmniboxIconLabelShownCount); -#endif -// Added 06/2024. -#if BUILDFLAG(ENABLE_SCREEN_AI_SERVICE) + // Added 06/2024. profile_prefs->ClearPref(kAccessibilityPdfOcrAlwaysActive); #endif @@ -2710,6 +2717,26 @@ void MigrateObsoleteProfilePrefs(PrefService* profile_prefs, profile_prefs->ClearPref(kShowTunaScreenEnabled); #endif +// Added 08/2024 +#if BUILDFLAG(IS_CHROMEOS) + profile_prefs->ClearPref(kStandaloneWindowMigrationNudgeShown); +#endif + +#if BUILDFLAG(IS_ANDROID) + // All of these were added 08/2024. + profile_prefs->ClearPref( + kObsoleteUnenrolledFromGoogleMobileServicesAfterApiErrorCode); + profile_prefs->ClearPref(kObsoleteRequiresMigrationAfterSyncStatusChange); + profile_prefs->ClearPref( + kObsoleteUnenrolledFromGoogleMobileServicesWithErrorListVersion); + profile_prefs->ClearPref(kObsoleteTimesReenrolledToGoogleMobileServices); + profile_prefs->ClearPref( + kObsoleteTimesAttemptedToReenrollToGoogleMobileServices); + profile_prefs->ClearPref(kObsoleteUserReceivedGMSCoreError); +#endif + // Added 08/2024. + profile_prefs->ClearPref(kSafeBrowsingEsbOptInWithFriendlierSettings); + // Please don't delete the following line. It is used by PRESUBMIT.py. // END_MIGRATE_OBSOLETE_PROFILE_PREFS diff --git a/tools/under-control/src/chrome/browser/ui/tab_helpers.cc b/tools/under-control/src/chrome/browser/ui/tab_helpers.cc index 21e3a2ab..bc81c5a0 100755 --- a/tools/under-control/src/chrome/browser/ui/tab_helpers.cc +++ b/tools/under-control/src/chrome/browser/ui/tab_helpers.cc @@ -9,6 +9,7 @@ #include "base/command_line.h" #include "base/feature_list.h" +#include "base/logging.h" #include "base/time/default_tick_clock.h" #include "base/trace_event/trace_event.h" #include "build/build_config.h" @@ -28,7 +29,6 @@ #include "chrome/browser/content_settings/sound_content_setting_observer.h" #include "chrome/browser/dips/dips_bounce_detector.h" #include "chrome/browser/dips/dips_service.h" -#include "chrome/browser/enterprise/data_protection/data_protection_navigation_controller.h" #include "chrome/browser/external_protocol/external_protocol_observer.h" #include "chrome/browser/favicon/favicon_utils.h" #include "chrome/browser/file_system_access/file_system_access_features.h" @@ -73,9 +73,9 @@ #include "chrome/browser/safe_browsing/trigger_creator.h" #include "chrome/browser/sessions/session_tab_helper_factory.h" #include "chrome/browser/ssl/chrome_security_blocking_page_factory.h" +#include "chrome/browser/ssl/chrome_security_state_tab_helper.h" #include "chrome/browser/ssl/connection_help_tab_helper.h" #include "chrome/browser/ssl/https_only_mode_tab_helper.h" -#include "chrome/browser/ssl/security_state_tab_helper.h" #include "chrome/browser/storage_access_api/storage_access_api_service_factory.h" #include "chrome/browser/storage_access_api/storage_access_api_service_impl.h" #include "chrome/browser/storage_access_api/storage_access_api_tab_helper.h" @@ -132,7 +132,6 @@ #include "components/download/content/factory/navigation_monitor_factory.h" #include "components/download/content/public/download_navigation_observer.h" #include "components/enterprise/buildflags/buildflags.h" -#include "components/feed/buildflags.h" #include "components/fingerprinting_protection_filter/common/fingerprinting_protection_filter_features.h" #include "components/history/content/browser/web_contents_top_sites_observer.h" #include "components/history/core/browser/top_sites.h" @@ -165,6 +164,7 @@ #include "content/public/browser/web_contents.h" #include "extensions/buildflags/buildflags.h" #include "media/base/media_switches.h" +#include "net/base/features.h" #include "pdf/buildflags.h" #include "ppapi/buildflags/buildflags.h" #include "printing/buildflags/buildflags.h" @@ -196,19 +196,18 @@ #include "chrome/browser/preloading/prefetch/zero_suggest_prefetch/zero_suggest_prefetch_tab_helper.h" #include "chrome/browser/tab_contents/form_interaction_tab_helper.h" #include "chrome/browser/ui/bookmarks/bookmark_tab_helper.h" -#include "chrome/browser/ui/commerce/commerce_ui_tab_helper.h" #include "chrome/browser/ui/intent_picker_tab_helper.h" #include "chrome/browser/ui/javascript_dialogs/javascript_tab_modal_dialog_manager_delegate_desktop.h" #include "chrome/browser/ui/sad_tab_helper.h" #include "chrome/browser/ui/search/search_tab_helper.h" #include "chrome/browser/ui/search_engine_choice/search_engine_choice_tab_helper.h" -#include "chrome/browser/ui/views/side_panel/companion/companion_tab_helper.h" -#include "chrome/browser/ui/views/side_panel/companion/exps_registration_success_observer.h" -#include "chrome/browser/ui/views/side_panel/history_clusters/history_clusters_tab_helper.h" -#include "chrome/browser/ui/views/side_panel/read_anything/read_anything_tab_helper.h" #include "chrome/browser/ui/sync/browser_synced_tab_delegate.h" #include "chrome/browser/ui/ui_features.h" #include "chrome/browser/ui/uma_browsing_activity_observer.h" +#include "chrome/browser/ui/views/side_panel/companion/companion_tab_helper.h" +#include "chrome/browser/ui/views/side_panel/companion/exps_registration_success_observer.h" +#include "chrome/browser/ui/views/side_panel/history_clusters/history_clusters_tab_helper.h" +#include "chrome/browser/ui/views/side_panel/read_anything/read_anything_side_panel_controller.h" #include "components/commerce/content/browser/hint/commerce_hint_tab_helper.h" #include "components/image_fetcher/core/image_fetcher_service.h" #include "components/omnibox/browser/omnibox_field_trial.h" @@ -223,7 +222,7 @@ #endif #if BUILDFLAG(IS_CHROMEOS_ASH) -#include "chrome/browser/ash/boot_times_recorder_tab_helper.h" +#include "chrome/browser/ash/boot_times_recorder/boot_times_recorder_tab_helper.h" #include "chrome/browser/ash/growth/campaigns_manager_session_tab_helper.h" #include "chrome/browser/ui/ash/google_one_offer_iph_tab_helper.h" #endif @@ -266,7 +265,7 @@ #include "chrome/browser/web_applications/policy/pre_redirection_url_observer.h" #include "chrome/browser/web_applications/web_app_tab_helper.h" #include "chrome/browser/web_applications/web_app_utils.h" -#include "extensions/browser/view_type_utils.h" +#include "extensions/browser/view_type_utils.h" // nogncheck #include "extensions/common/extension_features.h" #include "extensions/common/mojom/view_type.mojom.h" #endif @@ -286,11 +285,6 @@ #include "chrome/browser/printing/printing_init.h" #endif - -#if !BUILDFLAG(IS_ANDROID) -#include "chrome/browser/privacy_sandbox/tracking_protection_notice_service.h" -#endif - #if BUILDFLAG(ENABLE_COMPOSE) #include "chrome/browser/compose/chrome_compose_client.h" #include "chrome/browser/compose/compose_enabling.h" @@ -302,6 +296,10 @@ #include "chrome/browser/rlz/chrome_rlz_tracker_web_contents_observer.h" #endif +#if BUILDFLAG(ENABLE_REPORTING) +#include "components/tpcd/enterprise_reporting/enterprise_reporting_tab_helper.h" +#endif + using content::WebContents; namespace { @@ -348,8 +346,7 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) { // observer list. content_settings::PageSpecificContentSettings::CreateForWebContents( web_contents, - std::make_unique( - web_contents)); + std::make_unique(web_contents)); // RedirectChainDetector comes before common tab helpers since // DIPSWebContentsObserver has it as a dependency. @@ -389,6 +386,7 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) { ChromeRLZTrackerWebContentsObserver::CreateForWebContentsIfNeeded( web_contents); #endif + ChromeSecurityStateTabHelper::CreateForWebContents(web_contents); ChromeTranslateClient::CreateForWebContents(web_contents); client_hints::ClientHintsWebContentsObserver::CreateForWebContents( web_contents); @@ -399,17 +397,25 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) { ConnectionHelpTabHelper::CreateForWebContents(web_contents); CoreTabHelper::CreateForWebContents(web_contents); DIPSWebContentsObserver::MaybeCreateForWebContents(web_contents); +#if BUILDFLAG(ENABLE_REPORTING) + if (base::FeatureList::IsEnabled( + net::features::kReportingApiEnableEnterpriseCookieIssues)) { + tpcd::enterprise_reporting::EnterpriseReportingTabHelper:: + CreateForWebContents(web_contents); + } +#endif ExternalProtocolObserver::CreateForWebContents(web_contents); favicon::CreateContentFaviconDriverForWebContents(web_contents); FileSystemAccessPermissionRequestManager::CreateForWebContents(web_contents); FileSystemAccessTabHelper::CreateForWebContents(web_contents); FindBarState::ConfigureWebContents(web_contents); - if (base::FeatureList::IsEnabled(fingerprinting_protection_filter::features:: - kEnableFingerprintingProtectionFilter)) { + if (fingerprinting_protection_filter::features:: + IsFingerprintingProtectionFeatureEnabled()) { // TODO(https://crbug.com/40280666): Move this to TabFeatures. CreateFingerprintingProtectionWebContentsHelper( web_contents, profile->GetPrefs(), - TrackingProtectionSettingsFactory::GetForProfile(profile)); + TrackingProtectionSettingsFactory::GetForProfile(profile), + profile->IsIncognitoProfile()); } download::DownloadNavigationObserver::CreateForWebContents( web_contents, @@ -529,7 +535,6 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) { profile, web_contents); SafetyTipWebContentsObserver::CreateForWebContents(web_contents); SearchEngineTabHelper::CreateForWebContents(web_contents); - SecurityStateTabHelper::CreateForWebContents(web_contents); if (site_engagement::SiteEngagementService::IsEnabled()) { site_engagement::SiteEngagementService::Helper::CreateForWebContents( web_contents, @@ -627,10 +632,6 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) { FormInteractionTabHelper::CreateForWebContents(web_contents); FramebustBlockTabHelper::CreateForWebContents(web_contents); IntentPickerTabHelper::CreateForWebContents(web_contents); -#if BUILDFLAG(ENTERPRISE_WATERMARK) - enterprise_data_protection::DataProtectionNavigationController:: - MaybeCreateForWebContents(web_contents); -#endif javascript_dialogs::TabModalDialogManager::CreateForWebContents( web_contents, std::make_unique( @@ -647,11 +648,6 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) { SadTabHelper::CreateForWebContents(web_contents); SearchTabHelper::CreateForWebContents(web_contents); TabDialogs::CreateForWebContents(web_contents); - if (privacy_sandbox::TrackingProtectionNoticeService::TabHelper:: - IsHelperNeeded(profile)) { - privacy_sandbox::TrackingProtectionNoticeService::TabHelper:: - CreateForWebContents(web_contents); - } MemorySaverChipTabHelper::CreateForWebContents(web_contents); TabResourceUsageTabHelper::CreateForWebContents(web_contents); if (base::FeatureList::IsEnabled(features::kTabHoverCardImages) || @@ -673,9 +669,6 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) { if (companion::IsCompanionFeatureEnabled()) { companion::CompanionTabHelper::CreateForWebContents(web_contents); } - if (features::IsReadAnythingLocalSidePanelEnabled()) { - ReadAnythingTabHelper::CreateForWebContents(web_contents); - } if (base::FeatureList::IsEnabled( companion::features::internal:: kCompanionEnabledByObservingExpsNavigations)) { @@ -743,16 +736,6 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) { HatsHelper::CreateForWebContents(web_contents); } SharedHighlightingPromo::CreateForWebContents(web_contents); - - if (!profile->IsIncognitoProfile()) { - // TODO(crbug.com/40863325): Consider using the in-memory cache instead. - commerce::CommerceUiTabHelper::CreateForWebContents( - web_contents, - commerce::ShoppingServiceFactory::GetForBrowserContext(profile), - BookmarkModelFactory::GetForBrowserContext(profile), - ImageFetcherServiceFactory::GetForKey(profile->GetProfileKey()) - ->GetImageFetcher(image_fetcher::ImageFetcherConfig::kNetworkOnly)); - } #endif #if BUILDFLAG(IS_WIN) @@ -783,12 +766,6 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) { extensions::TabHelper::CreateForWebContents(web_contents); extensions::NavigationExtensionEnabler::CreateForWebContents(web_contents); - if (base::FeatureList::IsEnabled( - extensions_features::kExtensionSidePanelIntegration)) { - extensions::side_panel_util::CreateSidePanelManagerForWebContents( - profile, web_contents); - } - extensions::WebNavigationTabObserver::CreateForWebContents(web_contents); if (web_app::AreWebAppsEnabled(profile)) { web_app::WebAppTabHelper::CreateForWebContents(web_contents); diff --git a/tools/under-control/src/chrome/common/extensions/api/autotest_private.idl b/tools/under-control/src/chrome/common/extensions/api/autotest_private.idl index f30dcd10..4e1c4007 100755 --- a/tools/under-control/src/chrome/common/extensions/api/autotest_private.idl +++ b/tools/under-control/src/chrome/common/extensions/api/autotest_private.idl @@ -692,6 +692,14 @@ namespace autotestPrivate { callback StopFrameCountingCallback = void (FrameCountingPerSinkData[] data); + dictionary OverdrawData { + // Average overdraw as percentage of the display size grouped by + // `bucketSizeInSeconds` arg of `startOverdrawTracking` call. + double[] averageOverdraws; + }; + + callback StopOverdrawTrackingCallback = void (OverdrawData data); + // Result of calling setWindowBounds, which returns the actual bounds and // display the window was set to. This may be different than the requested // bounds and display, for example if the window is showing an ARC app and @@ -718,8 +726,10 @@ namespace autotestPrivate { long jankCount; // Display throughput percentage at fixed intervals. long[] throughput; + // The timestamps of the janks during this animation in milllisecond. + long[] jankTimestamps; // The durations of the janks during this animation in millisecond. - double[] jankDurations; + long[] jankDurations; }; // Callback invoked to report the smoothness after StopSmoothnessTracking is @@ -1626,6 +1636,23 @@ namespace autotestPrivate { static void stopFrameCounting( StopFrameCountingCallback callback); + // Starts overdraw tracking for the display associated with + // `displayId` in viz. `bucketSizeInSeconds` decides the bucket size + // of the overdraw records. + // If it is X seconds, each record is the average overdraw of the + // frames presented on the display in X seconds. + static void startOverdrawTracking( + long bucketSizeInSeconds, + optional DOMString displayId, + VoidCallback callback + ); + + // Ends overdraw tracking in viz and return the collected data. + static void stopOverdrawTracking( + optional DOMString displayId, + StopOverdrawTrackingCallback callback + ); + // Install a bruschetta VM. static void installBruschetta( DOMString vm_name, VoidCallback callback); diff --git a/tools/under-control/src/chrome/renderer/chrome_content_renderer_client.cc b/tools/under-control/src/chrome/renderer/chrome_content_renderer_client.cc index 13f354e7..a0f33874 100755 --- a/tools/under-control/src/chrome/renderer/chrome_content_renderer_client.cc +++ b/tools/under-control/src/chrome/renderer/chrome_content_renderer_client.cc @@ -19,6 +19,7 @@ #include "base/no_destructor.h" #include "base/notreached.h" #include "base/process/current_process.h" +#include "base/profiler/process_type.h" #include "base/strings/string_number_conversions.h" #include "base/strings/string_util.h" #include "base/strings/utf_string_conversions.h" @@ -42,6 +43,7 @@ #include "chrome/common/secure_origin_allowlist.h" #include "chrome/common/url_constants.h" #include "chrome/common/webui_url_constants.h" +#include "chrome/common/webui_util.h" #include "chrome/grit/branded_strings.h" #include "chrome/grit/generated_resources.h" #include "chrome/grit/renderer_resources.h" @@ -86,7 +88,6 @@ #include "components/dom_distiller/core/url_constants.h" #include "components/error_page/common/error.h" #include "components/error_page/common/localized_error.h" -#include "components/feed/buildflags.h" #include "components/feed/feed_feature_list.h" #include "components/grit/components_scaled_resources.h" #include "components/heap_profiling/in_process/heap_profiler_controller.h" @@ -122,6 +123,7 @@ #include "content/public/common/content_switches.h" #include "content/public/common/page_visibility_state.h" #include "content/public/common/url_constants.h" +#include "content/public/common/url_utils.h" #include "content/public/common/webplugininfo.h" #include "content/public/renderer/render_frame.h" #include "content/public/renderer/render_frame_visitor.h" @@ -141,6 +143,7 @@ #include "services/tracing/public/cpp/stack_sampling/tracing_sampler_profiler.h" #include "third_party/blink/public/common/associated_interfaces/associated_interface_provider.h" #include "third_party/blink/public/common/features.h" +#include "third_party/blink/public/common/tokens/tokens.h" #include "third_party/blink/public/mojom/fetch/fetch_api_request.mojom-shared.h" #include "third_party/blink/public/mojom/page/page_visibility_state.mojom.h" #include "third_party/blink/public/platform/platform.h" @@ -177,6 +180,8 @@ #include "chrome/renderer/wallet/boarding_pass_extractor.h" #include "components/facilitated_payments/content/renderer/facilitated_payments_agent.h" #include "components/facilitated_payments/core/features/features.h" +#include "components/feed/content/renderer/rss_link_reader.h" +#include "components/feed/feed_feature_list.h" #else #include "chrome/renderer/searchbox/searchbox.h" #include "chrome/renderer/searchbox/searchbox_extension.h" @@ -191,11 +196,6 @@ #include "chrome/renderer/render_frame_font_family_accessor.h" #endif -#if BUILDFLAG(ENABLE_FEED_V2) -#include "components/feed/content/renderer/rss_link_reader.h" -#include "components/feed/feed_feature_list.h" -#endif - #if BUILDFLAG(ENABLE_NACL) #include "components/nacl/common/nacl_constants.h" #include "components/nacl/renderer/nacl_helper.h" @@ -385,8 +385,7 @@ ChromeContentRendererClient::ChromeContentRendererClient() ) { #if BUILDFLAG(ENABLE_EXTENSIONS) EnsureExtensionsClientInitialized(); - extensions::ExtensionsRendererClient::Set( - ChromeExtensionsRendererClient::GetInstance()); + ChromeExtensionsRendererClient::Create(); #endif #if BUILDFLAG(ENABLE_PLUGINS) for (const char* origin : kPredefinedAllowedCameraDeviceOrigins) @@ -435,16 +434,16 @@ void ChromeContentRendererClient::RenderThreadStarted() { web_cache_impl_ = std::make_unique(); #if BUILDFLAG(ENABLE_EXTENSIONS) - ChromeExtensionsRendererClient* chrome_extensions_renderer_client = - ChromeExtensionsRendererClient::GetInstance(); - chrome_extensions_renderer_client->AddAPIProvider( + auto* extensions_renderer_client = + extensions::ExtensionsRendererClient::Get(); + extensions_renderer_client->AddAPIProvider( std::make_unique()); - chrome_extensions_renderer_client->AddAPIProvider( + extensions_renderer_client->AddAPIProvider( std::make_unique()); - chrome_extensions_renderer_client->AddAPIProvider( + extensions_renderer_client->AddAPIProvider( std::make_unique< controlled_frame::ControlledFrameExtensionsRendererAPIProvider>()); - chrome_extensions_renderer_client->RenderThreadStarted(); + extensions_renderer_client->RenderThreadStarted(); WebSecurityPolicy::RegisterURLSchemeAsExtension( WebString::FromASCII(extensions::kExtensionScheme)); WebSecurityPolicy::RegisterURLSchemeAsCodeCacheWithHashing( @@ -594,7 +593,7 @@ void ChromeContentRendererClient::RenderFrameCreated( std::make_unique(render_frame); #if BUILDFLAG(ENABLE_EXTENSIONS) content_settings_delegate->SetExtensionDispatcher( - ChromeExtensionsRendererClient::GetInstance()->extension_dispatcher()); + extensions::ExtensionsRendererClient::Get()->dispatcher()); #endif content_settings::ContentSettingsAgentImpl* content_settings = new content_settings::ContentSettingsAgentImpl( @@ -610,8 +609,8 @@ void ChromeContentRendererClient::RenderFrameCreated( } #if BUILDFLAG(ENABLE_EXTENSIONS) - ChromeExtensionsRendererClient::GetInstance()->RenderFrameCreated( - render_frame, registry); + extensions::ExtensionsRendererClient::Get()->RenderFrameCreated(render_frame, + registry); #endif #if BUILDFLAG(ENABLE_PPAPI) @@ -761,7 +760,7 @@ void ChromeContentRendererClient::RenderFrameCreated( new SpellCheckPanel(render_frame, registry, this); #endif // BUILDFLAG(HAS_SPELLCHECK_PANEL) #endif -#if BUILDFLAG(ENABLE_FEED_V2) +#if BUILDFLAG(IS_ANDROID) base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); if (command_line->HasSwitch(feed::switches::kEnableRssLinkReader) && render_frame->IsMainFrame()) { @@ -797,8 +796,8 @@ void ChromeContentRendererClient::WebViewCreated( new prerender::NoStatePrefetchClient(web_view); #if BUILDFLAG(ENABLE_EXTENSIONS) - ChromeExtensionsRendererClient::GetInstance()->WebViewCreated( - web_view, outermost_origin); + extensions::ExtensionsRendererClient::Get()->WebViewCreated(web_view, + outermost_origin); #endif } @@ -890,7 +889,7 @@ v8::Local ChromeContentRendererClient::GetScriptableObject( const blink::WebElement& plugin_element, v8::Isolate* isolate) { #if BUILDFLAG(ENABLE_EXTENSIONS) - return ChromeExtensionsRendererClient::GetInstance()->GetScriptableObject( + return extensions::ExtensionsRendererClient::Get()->GetScriptableObject( plugin_element, isolate); #else return v8::Local(); @@ -903,7 +902,7 @@ bool ChromeContentRendererClient::OverrideCreatePlugin( WebPlugin** plugin) { std::string orig_mime_type = params.mime_type.Utf8(); #if BUILDFLAG(ENABLE_EXTENSIONS) - if (!ChromeExtensionsRendererClient::GetInstance()->OverrideCreatePlugin( + if (!extensions::ExtensionsRendererClient::Get()->OverrideCreatePlugin( render_frame, params)) { return false; } @@ -1392,15 +1391,14 @@ void ChromeContentRendererClient::PostIOThreadCreated( base::SingleThreadTaskRunner* io_thread_task_runner) { io_thread_task_runner->PostTask( FROM_HERE, base::BindOnce(&ThreadProfiler::StartOnChildThread, - metrics::CallStackProfileParams::Thread::kIo)); + base::ProfilerThreadType::kIo)); } void ChromeContentRendererClient::PostCompositorThreadCreated( base::SingleThreadTaskRunner* compositor_thread_task_runner) { compositor_thread_task_runner->PostTask( - FROM_HERE, - base::BindOnce(&ThreadProfiler::StartOnChildThread, - metrics::CallStackProfileParams::Thread::kCompositor)); + FROM_HERE, base::BindOnce(&ThreadProfiler::StartOnChildThread, + base::ProfilerThreadType::kCompositor)); // Enable stack sampling for tracing. // We pass in CreateCoreUnwindersFactory here since it lives in the chrome/ // layer while TracingSamplerProfiler is outside of chrome/. @@ -1423,7 +1421,7 @@ bool ChromeContentRendererClient::RunIdleHandlerWhenWidgetsHidden() { bool ChromeContentRendererClient::AllowPopup() { #if BUILDFLAG(ENABLE_EXTENSIONS) - return ChromeExtensionsRendererClient::GetInstance()->AllowPopup(); + return extensions::ExtensionsRendererClient::Get()->AllowPopup(); #else return false; #endif @@ -1446,7 +1444,7 @@ ChromeContentRendererClient::GetProtocolHandlerSecurityLevel( return blink::ProtocolHandlerSecurityLevel::kSameOrigin; } #if BUILDFLAG(ENABLE_EXTENSIONS) - return ChromeExtensionsRendererClient::GetInstance() + return extensions::ExtensionsRendererClient::Get() ->GetProtocolHandlerSecurityLevel(); #else return blink::ProtocolHandlerSecurityLevel::kStrict; @@ -1464,7 +1462,7 @@ void ChromeContentRendererClient::WillSendRequest( #if BUILDFLAG(ENABLE_EXTENSIONS) // Check whether the request should be allowed. If not allowed, we reset the // URL to something invalid to prevent the request and cause an error. - ChromeExtensionsRendererClient::GetInstance()->WillSendRequest( + extensions::ExtensionsRendererClient::Get()->WillSendRequest( frame, transition_type, upstream_url, target_url, site_for_cookies, initiator_origin, new_url); if (!new_url->is_empty()) @@ -1603,6 +1601,14 @@ ChromeContentRendererClient::CreateWebSocketHandshakeThrottleProvider() { browser_interface_broker_.get()); } +bool ChromeContentRendererClient::ShouldUseCodeCacheWithHashing( + const blink::WebURL& request_url) const { + if (content::HasWebUIScheme(request_url)) { + return chrome::ShouldUseCodeCacheForWebUIUrl(GURL(request_url)); + } + return true; +} + std::unique_ptr ChromeContentRendererClient::GetSupportedKeySystems( content::RenderFrame* render_frame, @@ -1657,7 +1663,7 @@ bool ChromeContentRendererClient::IsPluginAllowedToUseCameraDeviceAPI( void ChromeContentRendererClient::RunScriptsAtDocumentStart( content::RenderFrame* render_frame) { #if BUILDFLAG(ENABLE_EXTENSIONS) - ChromeExtensionsRendererClient::GetInstance()->RunScriptsAtDocumentStart( + extensions::ExtensionsRendererClient::Get()->RunScriptsAtDocumentStart( render_frame); // |render_frame| might be dead by now. #endif @@ -1666,7 +1672,7 @@ void ChromeContentRendererClient::RunScriptsAtDocumentStart( void ChromeContentRendererClient::RunScriptsAtDocumentEnd( content::RenderFrame* render_frame) { #if BUILDFLAG(ENABLE_EXTENSIONS) - ChromeExtensionsRendererClient::GetInstance()->RunScriptsAtDocumentEnd( + extensions::ExtensionsRendererClient::Get()->RunScriptsAtDocumentEnd( render_frame); // |render_frame| might be dead by now. #endif @@ -1675,7 +1681,7 @@ void ChromeContentRendererClient::RunScriptsAtDocumentEnd( void ChromeContentRendererClient::RunScriptsAtDocumentIdle( content::RenderFrame* render_frame) { #if BUILDFLAG(ENABLE_EXTENSIONS) - ChromeExtensionsRendererClient::GetInstance()->RunScriptsAtDocumentIdle( + extensions::ExtensionsRendererClient::Get()->RunScriptsAtDocumentIdle( render_frame); // |render_frame| might be dead by now. #endif @@ -1723,8 +1729,7 @@ bool ChromeContentRendererClient::AllowScriptExtensionForServiceWorker( void ChromeContentRendererClient:: WillInitializeServiceWorkerContextOnWorkerThread() { // This is called on the service worker thread. - ThreadProfiler::StartOnChildThread( - metrics::CallStackProfileParams::Thread::kServiceWorker); + ThreadProfiler::StartOnChildThread(base::ProfilerThreadType::kServiceWorker); } void ChromeContentRendererClient:: @@ -1733,8 +1738,8 @@ void ChromeContentRendererClient:: const GURL& service_worker_scope, const GURL& script_url) { #if BUILDFLAG(ENABLE_EXTENSIONS) - ChromeExtensionsRendererClient::GetInstance() - ->extension_dispatcher() + extensions::ExtensionsRendererClient::Get() + ->dispatcher() ->DidInitializeServiceWorkerContextOnWorkerThread( context_proxy, service_worker_scope, script_url); #endif @@ -1745,13 +1750,14 @@ void ChromeContentRendererClient::WillEvaluateServiceWorkerOnWorkerThread( v8::Local v8_context, int64_t service_worker_version_id, const GURL& service_worker_scope, - const GURL& script_url) { + const GURL& script_url, + const blink::ServiceWorkerToken& service_worker_token) { #if BUILDFLAG(ENABLE_EXTENSIONS) - ChromeExtensionsRendererClient::GetInstance() - ->extension_dispatcher() + extensions::ExtensionsRendererClient::Get() + ->dispatcher() ->WillEvaluateServiceWorkerOnWorkerThread( context_proxy, v8_context, service_worker_version_id, - service_worker_scope, script_url); + service_worker_scope, script_url, service_worker_token); #endif } @@ -1760,8 +1766,8 @@ void ChromeContentRendererClient::DidStartServiceWorkerContextOnWorkerThread( const GURL& service_worker_scope, const GURL& script_url) { #if BUILDFLAG(ENABLE_EXTENSIONS) - ChromeExtensionsRendererClient::GetInstance() - ->extension_dispatcher() + extensions::ExtensionsRendererClient::Get() + ->dispatcher() ->DidStartServiceWorkerContextOnWorkerThread( service_worker_version_id, service_worker_scope, script_url); #endif @@ -1773,8 +1779,8 @@ void ChromeContentRendererClient::WillDestroyServiceWorkerContextOnWorkerThread( const GURL& service_worker_scope, const GURL& script_url) { #if BUILDFLAG(ENABLE_EXTENSIONS) - ChromeExtensionsRendererClient::GetInstance() - ->extension_dispatcher() + extensions::ExtensionsRendererClient::Get() + ->dispatcher() ->WillDestroyServiceWorkerContextOnWorkerThread( context, service_worker_version_id, service_worker_scope, script_url); #endif @@ -1806,7 +1812,8 @@ blink::WebFrame* ChromeContentRendererClient::FindFrame( blink::WebLocalFrame* relative_to_frame, const std::string& name) { #if BUILDFLAG(ENABLE_EXTENSIONS) - return ChromeExtensionsRendererClient::FindFrame(relative_to_frame, name); + return extensions::ExtensionsRendererClient::FindFrame(relative_to_frame, + name); #else return nullptr; #endif // BUILDFLAG(ENABLE_EXTENSIONS) diff --git a/tools/under-control/src/content/browser/web_contents/web_contents_impl.cc b/tools/under-control/src/content/browser/web_contents/web_contents_impl.cc index b66f7c51..e8eb786e 100755 --- a/tools/under-control/src/content/browser/web_contents/web_contents_impl.cc +++ b/tools/under-control/src/content/browser/web_contents/web_contents_impl.cc @@ -16,7 +16,7 @@ #include #include -#include "base/allocator/partition_allocator/src/partition_alloc/buildflags.h" +#include "base/base_switches.h" #include "base/check_op.h" #include "base/command_line.h" #include "base/containers/contains.h" @@ -42,6 +42,7 @@ #include "base/strings/string_split.h" #include "base/strings/string_util.h" #include "base/strings/stringprintf.h" +#include "base/strings/to_string.h" #include "base/system/sys_info.h" #include "base/task/single_thread_task_runner.h" #include "base/time/time.h" @@ -111,6 +112,7 @@ #include "content/browser/renderer_host/render_widget_host_impl.h" #include "content/browser/renderer_host/render_widget_host_view_base.h" #include "content/browser/renderer_host/render_widget_host_view_child_frame.h" +#include "content/browser/renderer_host/spare_render_process_host_manager.h" #include "content/browser/renderer_host/text_input_manager.h" #include "content/browser/renderer_host/visible_time_request_trigger.h" #include "content/browser/screen_details/screen_change_monitor.h" @@ -164,6 +166,7 @@ #include "net/base/url_util.h" #include "net/http/http_util.h" #include "net/traffic_annotation/network_traffic_annotation.h" +#include "partition_alloc/buildflags.h" #include "ppapi/buildflags/buildflags.h" #include "services/device/public/mojom/wake_lock.mojom.h" #include "services/network/public/cpp/request_destination.h" @@ -267,6 +270,19 @@ enum class PrimaryPointerType { kMaxValue = kFine }; +// These values are persisted to logs. Entries should not be renumbered and +// numeric values should never be reused. +// +// LINT.IfChange(CrashRepHandlingOutcome) +enum class CrashRepHandlingOutcome { + // Dialog wasn't suppressed and the crash report will be potentially queued. + kPotentiallyQueued = 0, + // Dialog was suppressed so the crash report was dropped. + kDropped = 1, + kMaxValue = kDropped, +}; +// LINT.ThenChange(//tools/metrics/histograms/enums.xml:CrashRepHandlingOutcome) + // The window which we dobounce load info updates in. constexpr auto kUpdateLoadStatesInterval = base::Milliseconds(250); @@ -518,10 +534,6 @@ bool IsWindowManagementGranted(RenderFrameHost* host) { // Returns true if `host` has the Automatic Fullscreen permission granted. bool IsAutomaticFullscreenGranted(RenderFrameHost* host) { - if (!base::FeatureList::IsEnabled( - blink::features::kAutomaticFullscreenPermissionsQuery)) { - return false; - } content::PermissionController* permission_controller = host->GetBrowserContext()->GetPermissionController(); CHECK(permission_controller); @@ -792,22 +804,14 @@ WebContentsImpl* WebContentsImpl::FromRenderWidgetHostImpl( return static_cast(rwh->delegate()); } -std::optional WebContentsImpl::AdjustedChildZoom( - const RenderWidgetHostViewChildFrame* render_widget) { - // permits zoom level to be set programmatically by script: - // https://developer.chrome.com/docs/apps/reference/webviewTag#method-setZoom - if (IsGuest() && GetRenderWidgetHostView() == render_widget) { - return GetPendingPageZoomLevel(); - } - - // Signals zoom level should be inherited from the parent - return std::nullopt; -} - bool WebContentsImpl::IsPopup() const { return is_popup_; } +RenderFrameHostImpl* WebContentsImpl::PartitionedPopinOpener() const { + return partitioned_popin_opener_.get(); +} + void WebContents::SetScreenOrientationDelegate( ScreenOrientationDelegate* delegate) { ScreenOrientationProvider::SetDelegate(delegate); @@ -1189,7 +1193,8 @@ WebContentsImpl::WebContentsImpl(BrowserContext* browser_context) notify_disconnection_(false), dialog_manager_(nullptr), is_showing_before_unload_dialog_(false), - last_active_time_(base::TimeTicks::Now()), + last_active_time_ticks_(base::TimeTicks::Now()), + last_active_time_(base::Time::Now()), closed_by_user_gesture_(false), minimum_zoom_percent_( static_cast(blink::kMinimumBrowserZoomFactor * 100)), @@ -1895,14 +1900,6 @@ WebContentsView* WebContentsImpl::GetView() const { void WebContentsImpl::OnScreensChange(bool is_multi_screen_changed) { OPTIONAL_TRACE_EVENT1("content", "WebContentsImpl::OnScreensChange", "is_multi_screen_changed", is_multi_screen_changed); - // Allow fullscreen requests shortly after user-generated screens changes. - // TODO(crbug.com/40165350): Mac should not activate this on local process - // display::Screen signals, but via RenderWidgetHostViewMac screen updates. - if (base::FeatureList::IsEnabled( - blink::features::kWindowPlacementFullscreenOnScreensChange)) { - transient_allow_fullscreen_.Activate(); - } - // Mac display info may originate from a remote process hosting the NSWindow; // this local process display::Screen signal should not trigger updates. // TODO(crbug.com/40165350): Unify screen info plumbing, caching, etc. @@ -2742,7 +2739,11 @@ void WebContentsImpl::OnAudioStateChanged() { is_currently_audible_); } -base::TimeTicks WebContentsImpl::GetLastActiveTime() { +base::TimeTicks WebContentsImpl::GetLastActiveTimeTicks() { + return last_active_time_ticks_; +} + +base::Time WebContentsImpl::GetLastActiveTime() { return last_active_time_; } @@ -2780,6 +2781,14 @@ WebContents::ScopedIgnoreInputEvents WebContentsImpl::IgnoreInputEvents( } while (web_input_event_audit_callbacks_.contains(callback_id)); web_input_event_audit_callbacks_[callback_id] = std::move(*audit_callback); } else { +#if BUILDFLAG(IS_ANDROID) + CHECK(ignore_input_events_count_ != 0 || + !GetPrimaryMainFrame() + ->GetRenderWidgetHost() + ->GetRenderInputRouter() + ->IsAnyScrollGestureInProgress()) + << "Input suppression started mid gesture"; +#endif ++ignore_input_events_count_; } @@ -2794,17 +2803,23 @@ WebContents::ScopedIgnoreInputEvents WebContentsImpl::IgnoreInputEvents( CHECK(wc->web_input_event_audit_callbacks_.contains(*callback_id)); wc->web_input_event_audit_callbacks_.erase(*callback_id); } else { - --wc->ignore_input_events_count_; +#if BUILDFLAG(IS_ANDROID) // Reset gesture detection so that we don't continue to generate new // gestures from suppressed touches. These suppressed gestures would // otherwise confuse the event stream validator when input is // re-enabled. - if (wc->ignore_input_events_count_ == 0) { + // + // This needs to be done while input is still suppressed since + // resetting can generate gesture end events for a gesture sequence + // which was being suppressed. + if (wc->ignore_input_events_count_ == 1) { if (auto* view = wc->GetRenderWidgetHostView()) { static_cast(view) ->ResetGestureDetection(); } } +#endif + --wc->ignore_input_events_count_; } } }, @@ -3587,9 +3602,13 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params, // it should be hidden. visibility_ = params.initially_hidden ? Visibility::HIDDEN : Visibility::VISIBLE; + GetController().SetActive(visibility_ == Visibility::VISIBLE); enable_wake_locks_ = params.enable_wake_locks; + if (!params.last_active_time_ticks.is_null()) { + last_active_time_ticks_ = params.last_active_time_ticks; + } if (!params.last_active_time.is_null()) { last_active_time_ = params.last_active_time; } @@ -4023,7 +4042,8 @@ bool WebContentsImpl::CanEnterFullscreenMode( // the screen, or that it was downstream from a WebContents when UI was // blocked. Therefore, disqualify it from fullscreen if it or any upstream // WebContents has an active blocker. - return base::ranges::all_of(GetAllOpeningWebContents(this), + return delegate_ && + base::ranges::all_of(GetAllOpeningWebContents(this), [](auto* opener) { return opener->fullscreen_blocker_count_ == 0; }) && @@ -4301,7 +4321,10 @@ void WebContentsImpl::UpdateVisibilityAndNotifyPageAndView( render_view_host->SetFrameTreeVisibility(page_visibility); }, page_visibility); - if (page_visibility != PageVisibilityState::kHidden) { + + if (page_visibility == PageVisibilityState::kHidden) { + GetController().SetActive(false); + } else { // We cannot show a page or capture video unless there is a valid renderer // associated with this web contents. The navigation controller for this // page must be set to active (allowing navigation to complete, a renderer @@ -4347,7 +4370,8 @@ void WebContentsImpl::UpdateVisibilityAndNotifyPageAndView( // the CrossProcessFrameConnector. if (new_visibility == Visibility::VISIBLE) { if (is_activity) { - last_active_time_ = base::TimeTicks::Now(); + last_active_time_ticks_ = base::TimeTicks::Now(); + last_active_time_ = base::Time::Now(); } SetVisibilityAndNotifyObservers(new_visibility); } @@ -4640,6 +4664,9 @@ FrameTree* WebContentsImpl::CreateNewWindow( } web_contents_impl->is_popup_ = params.disposition == WindowOpenDisposition::NEW_POPUP; + if (params.features->is_partitioned_popin && web_contents_impl->is_popup_) { + web_contents_impl->partitioned_popin_opener_ = opener->GetWeakPtr(); + } return &web_contents_impl->GetPrimaryFrameTree(); } @@ -4725,6 +4752,9 @@ FrameTree* WebContentsImpl::CreateNewWindow( auto* new_contents_impl = new_contents.get(); new_contents_impl->is_popup_ = params.disposition == WindowOpenDisposition::NEW_POPUP; + if (params.features->is_partitioned_popin && new_contents_impl->is_popup_) { + new_contents_impl->partitioned_popin_opener_ = opener->GetWeakPtr(); + } // If the new frame has a name, make sure any SiteInstances that can find // this named frame have proxies for it. Must be called after @@ -6021,6 +6051,16 @@ void WebContentsImpl::SaveFrameWithHeaders( params->set_download_source(download::DownloadSource::WEB_CONTENTS_API); params->set_isolation_info(rfhi.ComputeIsolationInfoForNavigation(url)); + FrameTreeNode* frame_tree_node = rfhi.frame_tree_node(); + FrameNavigationEntry* frame_navigation_entry = + frame_tree_node->frame_tree() + .controller() + .GetLastCommittedEntry() + ->GetFrameEntry(frame_tree_node); + if (frame_navigation_entry) { + params->set_initiator(frame_navigation_entry->initiator_origin()); + } + GetBrowserContext()->GetDownloadManager()->DownloadUrl(std::move(params)); } @@ -6219,9 +6259,10 @@ bool WebContentsImpl::GotResponseToKeyboardLockRequest(bool allowed) { if (!keyboard_lock_widget_) { return false; } + // Exits early here if GotResponseToKeyboardLockRequest() was called from + // the dtor for `this`. if (WebContentsImpl::FromRenderWidgetHostImpl(keyboard_lock_widget_) != this) { - NOTREACHED_IN_MIGRATION(); return false; } // KeyboardLock is only supported when called by the top-level browsing @@ -6272,6 +6313,42 @@ void WebContentsImpl::DidEndColorChooser() { } #endif +int WebContentsImpl::DownloadImageFromAxNode(const ui::AXTreeID tree_id, + const ui::AXNodeID node_id, + const gfx::Size& preferred_size, + uint32_t max_bitmap_size, + bool bypass_cache, + ImageDownloadCallback callback) { + OPTIONAL_TRACE_EVENT1("content", "WebContentsImpl::DownloadImage", + "tree_id,node_id", + tree_id.ToString() + "," + base::ToString(node_id)); + DCHECK_CURRENTLY_ON(BrowserThread::UI); + const int download_id = GetNextDownloadId(); + // Always use the main frame when downloading via A11y ids. + RenderFrameHostImpl* main_frame = GetPrimaryMainFrame(); + if (!main_frame->IsRenderFrameLive()) { + // If the renderer process is dead (i.e. crash, or memory pressure on + // Android), the downloader service will be invalid. Pre-Mojo, this would + // hang the callback indefinitely since the IPC would be dropped. Now, + // respond with a 400 HTTP error code to indicate that something went wrong. + // Additionally for A11y requests, send an empty URL back since it won't be + // used anyways. + GetUIThreadTaskRunner({})->PostTask( + FROM_HERE, + base::BindOnce(&WebContentsImpl::OnDidDownloadImage, + weak_factory_.GetWeakPtr(), main_frame->GetWeakPtr(), + std::move(callback), download_id, GURL(), 400, + std::vector(), std::vector())); + return download_id; + } + CHECK_EQ(main_frame->GetAXTreeID(), tree_id); + main_frame->GetMojoImageDownloader()->DownloadImageFromAxNode( + node_id, preferred_size, max_bitmap_size, bypass_cache, + base::BindOnce(&WebContentsImpl::OnDidDownloadImage, + weak_factory_.GetWeakPtr(), main_frame->GetWeakPtr(), + std::move(callback), download_id, GURL())); + return download_id; +} int WebContentsImpl::DownloadImage( const GURL& url, bool is_favicon, @@ -6296,8 +6373,7 @@ int WebContentsImpl::DownloadImageInFrame( WebContents::ImageDownloadCallback callback) { OPTIONAL_TRACE_EVENT0("content", "WebContentsImpl::DownloadImageInFrame"); DCHECK_CURRENTLY_ON(BrowserThread::UI); - static int next_image_download_id = 0; - const int download_id = ++next_image_download_id; + const int download_id = GetNextDownloadId(); RenderFrameHostImpl* initiator_frame = initiator_frame_routing_id.child_id @@ -7615,6 +7691,14 @@ void WebContentsImpl::OnFirstVisuallyNonEmptyPaint(PageImpl& page) { observers_.NotifyObservers(&WebContentsObserver::OnBackgroundColorChanged); last_sent_background_color_ = page.background_color(); } +#if BUILDFLAG(IS_ANDROID) + if (base::FeatureList::IsEnabled( + features::kAndroidWarmUpSpareRendererWithTimeout) && + features::kAndroidSpareRendererCreationTiming.Get() == + features::kAndroidSpareRendererCreationAfterFirstPaint) { + WarmUpAndroidSpareRenderer(); + } +#endif } bool WebContentsImpl::IsGuest() { @@ -8593,6 +8677,15 @@ void WebContentsImpl::DidStopLoading() { manager->DidStopLoading(); } }); + +#if BUILDFLAG(IS_ANDROID) + if (base::FeatureList::IsEnabled( + features::kAndroidWarmUpSpareRendererWithTimeout) && + features::kAndroidSpareRendererCreationTiming.Get() == + features::kAndroidSpareRendererCreationAfterLoading) { + WarmUpAndroidSpareRenderer(); + } +#endif } void WebContentsImpl::DidChangeLoadProgressForPrimaryMainFrame() { @@ -9259,6 +9352,14 @@ void WebContentsImpl::RendererUnresponsive( return; } + CrashRepHandlingOutcome outcome = + base::CommandLine::ForCurrentProcess()->HasSwitch( + switches::kNoErrorDialogs) + ? CrashRepHandlingOutcome::kDropped + : CrashRepHandlingOutcome::kPotentiallyQueued; + base::UmaHistogramEnumeration( + "ReportingAndNEL.UnresponsiveRenderer.CrashReportOutcome", outcome); + if (base::FeatureList::IsEnabled(features::kCrashReporting) && base::FeatureList::IsEnabled( blink::features::kDocumentPolicyIncludeJSCallStacksInCrashReports) && @@ -9567,6 +9668,11 @@ void WebContentsImpl::OnDidDownloadImage( original_image_sizes); } +int WebContentsImpl::GetNextDownloadId() { + static int next_image_download_id = 0; + return ++next_image_download_id; +} + void WebContentsImpl::OnDialogClosed(int render_process_id, int render_frame_id, JavaScriptDialogCallback response_callback, @@ -10354,15 +10460,8 @@ bool WebContentsImpl::IsTransientActivationRequiredForHtmlFullscreen() { return false; } - RenderFrameHostImpl* host = GetPrimaryMainFrame(); - if (base::FeatureList::IsEnabled( - blink::features::kWindowPlacementFullscreenOnScreensChange) && - IsWindowManagementGranted(host) && - transient_allow_fullscreen_.IsActive()) { - return false; - } - // Require transient activation shortly after a same-origin WebContents exit. + RenderFrameHostImpl* host = GetPrimaryMainFrame(); auto* last_exits = GetFullscreenUserData(GetBrowserContext())->last_exits(); auto last_exit = last_exits->find(host->GetLastCommittedOrigin()); constexpr base::TimeDelta kCooldown = base::Seconds(5); @@ -10376,9 +10475,7 @@ bool WebContentsImpl::IsTransientActivationRequiredForHtmlFullscreen() { return false; } - return GetContentClient() - ->browser() - ->IsTransientActivationRequiredForHtmlFullscreen(host); + return true; } bool WebContentsImpl::IsBackForwardCacheSupported() { @@ -10948,7 +11045,9 @@ std::unique_ptr WebContentsImpl::StartPrerendering( bool should_warm_up_compositor, PreloadingHoldbackStatus holdback_status_override, PreloadingAttempt* preloading_attempt, - base::RepeatingCallback url_match_predicate, + base::RepeatingCallback&)> + url_match_predicate, base::RepeatingCallback prerender_navigation_handle_callback) { PrerenderAttributes attributes( @@ -11143,4 +11242,17 @@ void WebContentsImpl::GetMediaCaptureRawDeviceIdsOpened( base::BindPostTaskToCurrentDefault(std::move(callback))); } +void WebContentsImpl::WarmUpAndroidSpareRenderer() { + int renderer_timeout_seconds = + features::kAndroidSpareRendererTimeoutSeconds.Get(); + if (renderer_timeout_seconds < 0) { + SpareRenderProcessHostManager::GetInstance().WarmupSpareRenderProcessHost( + GetBrowserContext()); + } else { + base::TimeDelta timeout = base::Seconds(renderer_timeout_seconds); + SpareRenderProcessHostManager::GetInstance().WarmupSpareRenderProcessHost( + GetBrowserContext(), timeout); + } +} + } // namespace content diff --git a/tools/under-control/src/content/child/runtime_features.cc b/tools/under-control/src/content/child/runtime_features.cc index ec9a79e2..94954e96 100755 --- a/tools/under-control/src/content/child/runtime_features.cc +++ b/tools/under-control/src/content/child/runtime_features.cc @@ -389,7 +389,8 @@ void SetRuntimeFeaturesFromChromiumFeatures() { {"LegacyWindowsDWriteFontFallback", raw_ref(features::kLegacyWindowsDWriteFontFallback)}, {"MachineLearningNeuralNetwork", - raw_ref(webnn::mojom::features::kWebMachineLearningNeuralNetwork)}, + raw_ref(webnn::mojom::features::kWebMachineLearningNeuralNetwork), + kSetOnlyIfOverridden}, {"OriginIsolationHeader", raw_ref(features::kOriginIsolationHeader)}, {"ReduceAcceptLanguage", raw_ref(network::features::kReduceAcceptLanguage)}, @@ -412,6 +413,10 @@ void SetRuntimeFeaturesFromChromiumFeatures() { raw_ref(features::kMediaStreamTrackTransfer)}, {"PrivateNetworkAccessPermissionPrompt", raw_ref(network::features::kPrivateNetworkAccessPermissionPrompt), + kSetOnlyIfOverridden}, + {"ExperimentalMachineLearningNeuralNetwork", + raw_ref(webnn::mojom::features:: + kExperimentalWebMachineLearningNeuralNetwork), kSetOnlyIfOverridden}}; for (const auto& mapping : runtimeFeatureNameToChromiumFeatureMapping) { SetRuntimeFeatureFromChromiumFeature( diff --git a/tools/under-control/src/content/public/browser/content_browser_client.cc b/tools/under-control/src/content/public/browser/content_browser_client.cc index dc4110d8..79c37e0a 100755 --- a/tools/under-control/src/content/public/browser/content_browser_client.cc +++ b/tools/under-control/src/content/public/browser/content_browser_client.cc @@ -556,7 +556,8 @@ bool ContentBrowserClient::IsPrivacySandboxReportingDestinationAttested( void ContentBrowserClient::OnAuctionComplete( RenderFrameHost* render_frame_host, - InterestGroupManager::InterestGroupDataKey data_key) {} + std::optional + winner_data_key) {} network::mojom::AttributionSupport ContentBrowserClient::GetAttributionSupport( AttributionReportingOsApiState state, @@ -1163,6 +1164,11 @@ bool ContentBrowserClient::ShouldOverrideUrlLoading( } #endif +bool ContentBrowserClient::ShouldAllowSameSiteRenderFrameHostChange( + const RenderFrameHost& rfh) { + return true; +} + bool ContentBrowserClient::AllowRenderingMhtmlOverHttp( NavigationUIData* navigation_ui_data) { return false; @@ -1510,6 +1516,12 @@ bool ContentBrowserClient::IsJitDisabledForSite(BrowserContext* browser_context, return false; } +bool ContentBrowserClient::AreV8OptimizationsDisabledForSite( + BrowserContext* browser_context, + const GURL& site_url) { + return false; +} + ukm::UkmService* ContentBrowserClient::GetUkmService() { return nullptr; } @@ -1656,11 +1668,6 @@ bool ContentBrowserClient:: return true; } -bool ContentBrowserClient::IsTransientActivationRequiredForHtmlFullscreen( - content::RenderFrameHost* render_frame_host) { - return true; -} - bool ContentBrowserClient::ShouldUseFirstPartyStorageKey( const url::Origin& origin) { return false; @@ -1751,8 +1758,9 @@ bool ContentBrowserClient::ShouldSuppressAXLoadComplete(RenderFrameHost* rfh) { void ContentBrowserClient::BindAIManager( BrowserContext* browser_context, + std::variant context, mojo::PendingReceiver receiver) { - EchoAIManagerImpl::Create(browser_context, std::move(receiver)); + EchoAIManagerImpl::Create(browser_context, context, std::move(receiver)); } #if !BUILDFLAG(IS_ANDROID) @@ -1766,4 +1774,9 @@ void ContentBrowserClient::QueryInstalledWebAppsByManifestId( } #endif // !BUILDFLAG(IS_ANDROID) +bool ContentBrowserClient::IsSaveableNavigation( + NavigationHandle* navigation_handle) { + return false; +} + } // namespace content diff --git a/tools/under-control/src/extensions/common/api/automation.idl b/tools/under-control/src/extensions/common/api/automation.idl index 4f30b05b..12a5aff1 100755 --- a/tools/under-control/src/extensions/common/api/automation.idl +++ b/tools/under-control/src/extensions/common/api/automation.idl @@ -229,7 +229,6 @@ figcaption, figure, footer, - footerAsNonLandmark, form, genericContainer, // -------------------------------------------------------------- @@ -244,7 +243,6 @@ gridCell, group, header, - headerAsNonLandmark, heading, iframe, iframePresentational, @@ -326,6 +324,8 @@ search, searchBox, section, + sectionFooter, + sectionHeader, sectionWithoutName, slider, spinButton, @@ -478,6 +478,7 @@ placeholder, popoverAttribute, prohibited, + prohibitedAndRedundant, relatedElement, title, value diff --git a/tools/under-control/src/extensions/common/api/declarative_net_request.idl b/tools/under-control/src/extensions/common/api/declarative_net_request.idl index b6368250..53f1745e 100755 --- a/tools/under-control/src/extensions/common/api/declarative_net_request.idl +++ b/tools/under-control/src/extensions/common/api/declarative_net_request.idl @@ -528,6 +528,15 @@ namespace declarativeNetRequest { // not need to correspond to a real tab ID. Default is -1, meaning that // the request isn't related to a tab. long? tabId; + + // The headers provided by a hypothetical response if the request does not + // get blocked or redirected before it is sent. Represented as an object + // which maps a header name to a list of string values. If not specified, + // the hypothetical response would return empty response headers, which can + // match rules which match on the non-existence of headers. + // E.g. {"content-type": ["text/html; charset=utf-8", + // "multipart/form-data"]} + object? responseHeaders; }; dictionary MatchedRuleInfoDebug { diff --git a/tools/under-control/src/extensions/common/api/networking_private.idl b/tools/under-control/src/extensions/common/api/networking_private.idl index 8cfccf14..4493f066 100755 --- a/tools/under-control/src/extensions/common/api/networking_private.idl +++ b/tools/under-control/src/extensions/common/api/networking_private.idl @@ -65,6 +65,14 @@ namespace networkingPrivate { Direct, Manual, PAC, WPAD }; + enum ApnType { + Default, Attach, Tether + }; + + enum ApnSource { + Modem, Modb, Ui, Admin + }; + // Managed property types. These types all share a common structure: // Active: For properties that are translated from the configuration // manager (e.g. Shill), the 'active' value currently in use by the @@ -160,6 +168,8 @@ namespace networkingPrivate { DOMString? Name; DOMString? Password; DOMString? Username; + ApnType[]? ApnTypes; + ApnSource? Source; }; dictionary ManagedAPNProperties { diff --git a/tools/under-control/src/extensions/common/api/web_accessible_resources.idl b/tools/under-control/src/extensions/common/api/web_accessible_resources.idl index 7ee7e03a..af93f41e 100755 --- a/tools/under-control/src/extensions/common/api/web_accessible_resources.idl +++ b/tools/under-control/src/extensions/common/api/web_accessible_resources.idl @@ -25,7 +25,7 @@ // and is generated each session. The corresponding dynamic extension URL // is available through $(ref:runtime.getURL). // Dynamic resources can be loaded regardless of the value. However, if - // true, resources must be can only be loaded using the dynamic URL. + // true, resources can only be loaded using the dynamic URL. boolean? use_dynamic_url; }; diff --git a/tools/under-control/src/gin/v8_initializer.cc b/tools/under-control/src/gin/v8_initializer.cc index 5d020cde..d08f7915 100755 --- a/tools/under-control/src/gin/v8_initializer.cc +++ b/tools/under-control/src/gin/v8_initializer.cc @@ -15,8 +15,6 @@ #include #include -#include "base/allocator/partition_allocator/src/partition_alloc/page_allocator.h" -#include "base/allocator/partition_allocator/src/partition_alloc/partition_address_space.h" #include "base/bits.h" #include "base/check.h" #include "base/check_op.h" @@ -41,6 +39,8 @@ #include "build/build_config.h" #include "gin/array_buffer.h" #include "gin/gin_features.h" +#include "partition_alloc/page_allocator.h" +#include "partition_alloc/partition_address_space.h" #include "tools/v8_context_snapshot/buildflags.h" #include "v8/include/v8-initialization.h" #include "v8/include/v8-snapshot.h" @@ -66,7 +66,7 @@ std::optional g_snapshot_file_type; bool GenerateEntropy(unsigned char* buffer, size_t amount) { base::RandBytes( - // SAFETY: This depends on callers providing a valid pointer/size pair. + // SAFETY: This depends on v8 providing a valid pointer/size pair. // // TODO(crbug.com/338574383): The signature is fixed as it's a callback // from v8, but maybe v8 can use a span. @@ -444,11 +444,10 @@ void SetFlags(IsolateHolder::ScriptMode mode, SetV8Flags("--use_strict"); } - SetV8FlagsIfOverridden(features::kJavaScriptCompileHintsMagic, - "--compile-hints-magic", "--no-compile-hints-magic"); - // WebAssembly features. + SetV8FlagsIfOverridden(features::kWebAssemblyDeopt, "--wasm-deopt", + "--no-wasm-deopt"); SetV8FlagsIfOverridden(features::kWebAssemblyInlining, "--experimental-wasm-inlining", "--no-experimental-wasm-inlining"); diff --git a/tools/under-control/src/services/network/network_context.cc b/tools/under-control/src/services/network/network_context.cc index 5c20e5b7..ec0d2386 100755 --- a/tools/under-control/src/services/network/network_context.cc +++ b/tools/under-control/src/services/network/network_context.cc @@ -105,6 +105,7 @@ #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" @@ -1090,6 +1091,25 @@ void NetworkContext::GetStoredTrustTokenCounts( } } +void NetworkContext::GetPrivateStateTokenRedemptionRecords( + GetPrivateStateTokenRedemptionRecordsCallback callback) { + // The Trust Tokens feature is disabled, return immediately with an empty + // map. + if (!trust_token_store_) { + base::flat_map> + empty_result; + std::move(callback).Run(std::move(empty_result)); + return; + } + auto get_redemption_records_from_store = + [](NetworkContext::GetPrivateStateTokenRedemptionRecordsCallback callback, + TrustTokenStore* trust_token_store) { + std::move(callback).Run(trust_token_store->GetRedemptionRecords()); + }; + trust_token_store_->ExecuteOrEnqueue( + base::BindOnce(get_redemption_records_from_store, std::move(callback))); +} + void NetworkContext::DeleteStoredTrustTokens( const url::Origin& issuer, DeleteStoredTrustTokensCallback callback) { @@ -1385,6 +1405,15 @@ void NetworkContext::SetDocumentReportingEndpoints( #endif // BUILDFLAG(ENABLE_REPORTING) } +void NetworkContext::SetEnterpriseReportingEndpoints( + const base::flat_map& endpoints) { +#if BUILDFLAG(ENABLE_REPORTING) + if (auto* reporting_service = url_request_context()->reporting_service()) { + reporting_service->SetEnterpriseReportingEndpoints(endpoints); + } +#endif // BUILDFLAG(ENABLE_REPORTING) +} + void NetworkContext::SendReportsAndRemoveSource( const base::UnguessableToken& reporting_source) { #if BUILDFLAG(ENABLE_REPORTING) @@ -1869,6 +1898,23 @@ void NetworkContext::ResolveHost( const net::NetworkAnonymizationKey& network_anonymization_key, mojom::ResolveHostParametersPtr optional_parameters, mojo::PendingRemote response_client) { + // Dns request is disallowed if network access is disabled for the nonce. + if (network_anonymization_key.GetNonce().has_value() && + !IsNetworkForNonceAndUrlAllowed( + /*nonce=*/network_anonymization_key.GetNonce().value(), + /*url=*/host->is_host_port_pair() + ? GURL(host->get_host_port_pair().ToString()) + : host->get_scheme_host_port().GetURL())) { + mojo::Remote remote_response_client( + std::move(response_client)); + remote_response_client->OnComplete( + net::ERR_NETWORK_ACCESS_REVOKED, + net::ResolveErrorInfo(net::ERR_NETWORK_ACCESS_REVOKED), + /*resolved_addresses=*/std::nullopt, + /*endpoint_results_with_metadata=*/std::nullopt); + return; + } + if (!internal_host_resolver_) { internal_host_resolver_ = std::make_unique( url_request_context_->host_resolver(), url_request_context_->net_log()); @@ -2130,6 +2176,13 @@ void NetworkContext::PreconnectSockets( if (num_streams == 0) return; + // Preconnect is disallowed if network access is disabled for the nonce. + if (network_anonymization_key.GetNonce().has_value() && + !IsNetworkForNonceAndUrlAllowed( + network_anonymization_key.GetNonce().value(), url)) { + return; + } + std::string user_agent; if (url_request_context_->http_user_agent_settings()) { user_agent = @@ -2150,7 +2203,7 @@ void NetworkContext::PreconnectSockets( case mojom::CredentialsMode::kSameOrigin: // Not yet implemented. If you need this credentials mode please update // this branch to set the correct request_info fields. - NOTREACHED_NORETURN() << "kSameOrigin not yet implemented"; + NOTREACHED() << "kSameOrigin not yet implemented"; case mojom::CredentialsMode::kInclude: request_info.load_flags = net::LOAD_NORMAL; @@ -2483,10 +2536,11 @@ URLRequestContextOwner NetworkContext::MakeURLRequestContext( // `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). - auto* nspal = network_service_->network_service_proxy_allow_list(); + auto* nspal = network_service_->masked_domain_list_manager(); if (!params_->initial_custom_proxy_config && nspal->IsEnabled()) { auto ipp_config_cache = std::make_unique( - std::move(params_->ip_protection_config_getter)); + 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); @@ -2723,6 +2777,10 @@ URLRequestContextOwner NetworkContext::MakeURLRequestContext( builder.set_persistent_reporting_and_nel_store(nullptr); } + if (params_->enterprise_reporting_endpoints.has_value()) { + builder.set_enterprise_reporting_endpoints( + params_->enterprise_reporting_endpoints.value()); + } #endif // BUILDFLAG(ENABLE_REPORTING) net::HttpNetworkSessionParams session_params; 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 cee8f79a..c1170f27 100755 --- a/tools/under-control/src/testing/variations/fieldtrial_testing_config.json +++ b/tools/under-control/src/testing/variations/fieldtrial_testing_config.json @@ -344,23 +344,6 @@ ] } ], - "AndroidAutofillPrefillRequestsForLoginForms": [ - { - "platforms": [ - "android_webview" - ], - "experiments": [ - { - "name": "Enabled_LooseSimilarityCheckWithCancellingSession_20240604", - "enable_features": [ - "AndroidAutofillCancelSessionOnNavigation", - "AndroidAutofillPrefillRequestsForLoginForms", - "AndroidAutofillUsePwmPredictionsForOverrides" - ] - } - ] - } - ], "AndroidBackPressRefactor": [ { "platforms": [ @@ -403,6 +386,24 @@ ] } ], + "AndroidBrowserControlsInViz": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled_20240718", + "enable_features": [ + "AndroidBrowserControlsInViz" + ], + "disable_features": [ + "AndroidBcivWithSuppression" + ] + } + ] + } + ], "AndroidHatsNext": [ { "platforms": [ @@ -410,12 +411,10 @@ ], "experiments": [ { - "name": "EnabledWithMessages_20210831", + "name": "EnabledStartupSurvey", "params": { "en_site_id": "78FakAwAN0tK1KeaPYj0PoiAHrrQ", - "max-number": "100", - "probability": "0.5", - "site-id": "78FakAwAN0tK1KeaPYj0PoiAHrrQ" + "probability": "0.5" }, "enable_features": [ "ChromeSurveyNextAndroid" @@ -432,8 +431,12 @@ "experiments": [ { "name": "Enabled", + "params": { + "hub_alternative_fab_color": "true" + }, "enable_features": [ - "AndroidHubFloatingActionButton" + "AndroidHubFloatingActionButton", + "IPH_TabSwitcherFloatingActionButton" ] } ] @@ -544,6 +547,28 @@ ] } ], + "AndroidSpareRendererCreation": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "EnableBoth", + "params": { + "omnibox_spare_renderer_delay_ms": "500", + "spare_renderer_creation_delay_ms": "2000", + "spare_renderer_creation_timing": "delayed-during-loading", + "spare_renderer_timeout_seconds": "60" + }, + "enable_features": [ + "AndroidWarmUpSpareRendererWithTimeout", + "OverrideAndroidOmniboxSpareRendererDelay" + ] + } + ] + } + ], "AndroidSystemTracing": [ { "platforms": [ @@ -600,8 +625,29 @@ "experiments": [ { "name": "Enabled", + "params": { + "android_tab_declutter_archive_enabled": "true", + "android_tab_declutter_archive_time_delta_hours": "168", + "android_tab_declutter_auto_delete_enabled": "false" + }, "enable_features": [ - "AndroidTabDeclutter" + "AndroidTabDeclutter", + "IPH_AndroidTabDeclutter" + ] + } + ] + } + ], + "AndroidUseFrameIntervalDecider": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "UseFrameIntervalDecider" ] } ] @@ -702,21 +748,6 @@ ] } ], - "AppSpecificHistory": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "AppSpecificHistory" - ] - } - ] - } - ], "AppStreamingAccessibilityIntegration": [ { "platforms": [ @@ -848,7 +879,7 @@ ] } ], - "ArcIgnoreHoverEventAnr": [ + "ArcExtendIntentAnrTimeout": [ { "platforms": [ "chromeos" @@ -857,9 +888,25 @@ { "name": "Enabled", "enable_features": [ - "IgnoreHoverEventAnr" + "ArcExtendIntentAnrTimeout" ], - "min_os_version": "15818.0.0" + "min_os_version": "15962.0.0" + } + ] + } + ], + "ArcExtendServiceAnrTimeout": [ + { + "platforms": [ + "chromeos" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "ArcExtendServiceAnrTimeout" + ], + "min_os_version": "15962.0.0" } ] } @@ -912,22 +959,6 @@ ] } ], - "ArcUnthrottleOnActiveAudio": [ - { - "platforms": [ - "chromeos" - ], - "experiments": [ - { - "name": "Enabled_20240307", - "enable_features": [ - "ArcUnthrottleOnActiveAudio" - ], - "min_os_version": "15794.0.0" - } - ] - } - ], "ArcVmBlkMultipleWorkers": [ { "platforms": [ @@ -973,6 +1004,25 @@ ] } ], + "ArcVmGkiOnT": [ + { + "platforms": [ + "chromeos" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "ArcVmGki" + ], + "min_os_version": "15979.0.0", + "hardware_classes": [ + "brya" + ] + } + ] + } + ], "ArcVmIdleManagerV2": [ { "platforms": [ @@ -1117,16 +1167,16 @@ ] } ], - "AshUrgentDiscardingFromPerformanceManager": [ + "AshSessionRestoreDeferOccludedActiveTabLoad": [ { "platforms": [ "chromeos" ], "experiments": [ { - "name": "Enabled_20240328", + "name": "Enabled", "enable_features": [ - "AshUrgentDiscardingFromPerformanceManager" + "AshSessionRestoreDeferOccludedActiveTabLoad" ] } ] @@ -1341,6 +1391,36 @@ ] } ], + "AudioSelectionImprovement": [ + { + "platforms": [ + "chromeos" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "AudioSelectionImprovement" + ] + } + ] + } + ], + "AuthPanelInSession": [ + { + "platforms": [ + "chromeos" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "UseAuthPanelInSession" + ] + } + ] + } + ], "AuthenticateUsingUserConsentVerifierApi": [ { "platforms": [ @@ -1488,27 +1568,6 @@ ] } ], - "AutofillAssociateForms": [ - { - "platforms": [ - "android", - "chromeos", - "chromeos_lacros", - "ios", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "AutofillAssociateForms" - ] - } - ] - } - ], "AutofillChangeDisusedAddressSuggestionTreatment": [ { "platforms": [ @@ -1536,10 +1595,6 @@ "AutofillContentEditableChangeEvents": [ { "platforms": [ - "android", - "android_webview", - "chromeos", - "chromeos_lacros", "ios" ], "experiments": [ @@ -1661,8 +1716,7 @@ "name": "Enabled", "enable_features": [ "AutofillEnableCardBenefitsForAmericanExpress", - "AutofillEnableCardBenefitsForCapitalOne", - "AutofillEnableCardBenefitsSync" + "AutofillEnableCardBenefitsForCapitalOne" ] } ] @@ -1914,6 +1968,27 @@ ] } ], + "AutofillEnablePaymentsFieldSwapping": [ + { + "platforms": [ + "android", + "chromeos", + "chromeos_lacros", + "ios", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "AutofillEnablePaymentsFieldSwapping" + ] + } + ] + } + ], "AutofillEnableVerveCardSupport": [ { "platforms": [ @@ -1971,21 +2046,6 @@ ] } ], - "AutofillEnableXHRSubmissionDetectionIOS": [ - { - "platforms": [ - "ios" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "AutofillEnableXHRSubmissionDetectionIOS" - ] - } - ] - } - ], "AutofillFixCachingOnJavaScriptChanges": [ { "platforms": [ @@ -2027,6 +2087,28 @@ ] } ], + "AutofillGivePrecedenceToEmailOverUsername": [ + { + "platforms": [ + "android", + "android_webview", + "chromeos", + "chromeos_lacros", + "ios", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "AutofillGivePrecedenceToEmailOverUsername" + ] + } + ] + } + ], "AutofillGranularFillingAvailable": [ { "platforms": [ @@ -2084,6 +2166,31 @@ ] } ], + "AutofillI18nAddressModelNewCountries": [ + { + "platforms": [ + "android", + "android_webview", + "chromeos", + "chromeos_lacros", + "ios", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "AutofillUseAUAddressModel", + "AutofillUseCAAddressModel", + "AutofillUseDEAddressModel", + "AutofillUsePLAddressModel" + ] + } + ] + } + ], "AutofillImproveSubmissionDetection": [ { "platforms": [ @@ -2208,6 +2315,28 @@ ] } ], + "AutofillPageLanguageDetection": [ + { + "platforms": [ + "android", + "android_webview", + "chromeos", + "chromeos_lacros", + "ios", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "AutofillPageLanguageDetection" + ] + } + ] + } + ], "AutofillPasswordUserPerceptionSurvey": [ { "platforms": [ @@ -2256,6 +2385,25 @@ ] } ], + "AutofillPopupDontAcceptNonVisibleEnoughSuggestion": [ + { + "platforms": [ + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "AutofillPopupDontAcceptNonVisibleEnoughSuggestion" + ] + } + ] + } + ], "AutofillPopupZOrderSecuritySurface_V2": [ { "platforms": [ @@ -2336,10 +2484,11 @@ ] } ], - "AutofillSilentlyRemoveQuasiDuplicates": [ + "AutofillStructuredFieldsDisableAddressLines": [ { "platforms": [ "android", + "android_webview", "chromeos", "chromeos_lacros", "ios", @@ -2351,29 +2500,7 @@ { "name": "Enabled", "enable_features": [ - "AutofillSilentlyRemoveQuasiDuplicates" - ] - } - ] - } - ], - "AutofillSuggestionNStrikeModel": [ - { - "platforms": [ - "chromeos", - "chromeos_lacros", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "params": { - "strike-limit": "5" - }, - "enable_features": [ - "AutofillSuggestionNStrikeModel" + "AutofillStructuredFieldsDisableAddressLines" ] } ] @@ -2434,11 +2561,13 @@ ] } ], - "AutofillTestFormWithTestAddresses": [ + "AutofillTrackMultipleUseDates": [ { "platforms": [ + "android", "chromeos", "chromeos_lacros", + "ios", "linux", "mac", "windows" @@ -2447,7 +2576,7 @@ { "name": "Enabled", "enable_features": [ - "AutofillTestFormWithTestAddresses" + "AutofillTrackMultipleUseDates" ] } ] @@ -2585,80 +2714,6 @@ ] } ], - "AutomaticLazyFrameLoading": [ - { - "platforms": [ - "android", - "chromeos", - "chromeos_lacros", - "fuchsia", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled_LazyEmbeds0_20220809", - "params": { - "allowed_websites": "https://www.youtube.com|/embed,https://www.google.com|/maps/embed", - "strategy": "allow_list", - "timeout": "0" - }, - "enable_features": [ - "AutomaticLazyFrameLoadingToEmbedUrls", - "AutomaticLazyFrameLoadingToEmbeds" - ], - "disable_features": [ - "AutomaticLazyFrameLoadingToAds" - ] - }, - { - "name": "Enabled_LazyEmbeds3000_20220809", - "params": { - "allowed_websites": "https://www.youtube.com|/embed,https://www.google.com|/maps/embed", - "strategy": "allow_list", - "timeout": "3000" - }, - "enable_features": [ - "AutomaticLazyFrameLoadingToEmbedUrls", - "AutomaticLazyFrameLoadingToEmbeds" - ], - "disable_features": [ - "AutomaticLazyFrameLoadingToAds" - ] - }, - { - "name": "Enabled_LazyEmbeds5000_20220809", - "params": { - "allowed_websites": "https://www.youtube.com|/embed,https://www.google.com|/maps/embed", - "strategy": "allow_list", - "timeout": "5000" - }, - "enable_features": [ - "AutomaticLazyFrameLoadingToEmbedUrls", - "AutomaticLazyFrameLoadingToEmbeds" - ], - "disable_features": [ - "AutomaticLazyFrameLoadingToAds" - ] - }, - { - "name": "Enabled_LazyEmbedUrls_20220809", - "params": { - "allowed_websites": "https://www.youtube.com|/embed,https://www.google.com|/maps/embed", - "strategy": "allow_list" - }, - "enable_features": [ - "AutomaticLazyFrameLoadingToEmbedUrls" - ], - "disable_features": [ - "AutomaticLazyFrameLoadingToAds", - "AutomaticLazyFrameLoadingToEmbeds" - ] - } - ] - } - ], "AvatarsCloudMigration": [ { "platforms": [ @@ -2690,7 +2745,7 @@ { "name": "Enabled", "params": { - "AvoidEntryCreationForNoStoreCacheSize": "10000" + "AvoidEntryCreationForNoStoreCacheSize": "40000" }, "enable_features": [ "AvoidEntryCreationForNoStore" @@ -3026,21 +3081,6 @@ ] } ], - "BackgroundCrxDownloaderMac": [ - { - "platforms": [ - "mac" - ], - "experiments": [ - { - "name": "Enabled_Dogfood", - "enable_features": [ - "BackgroundCrxDownloaderMac" - ] - } - ] - } - ], "BackgroundResourceFetch": [ { "platforms": [ @@ -3063,21 +3103,6 @@ ] } ], - "BackgroundThreadNormalMemoryPriorityWin": [ - { - "platforms": [ - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "BackgroundThreadNormalMemoryPriorityWin" - ] - } - ] - } - ], "BatchNativeEventsInMessagePumpEpoll": [ { "platforms": [ @@ -3114,7 +3139,7 @@ ] } ], - "BatterySaverModeRenderTuning": [ + "BatterySaverModeAlignWakeUps": [ { "platforms": [ "chromeos", @@ -3127,7 +3152,9 @@ { "name": "Enabled", "enable_features": [ - "BatterySaverModeRenderTuning" + "BatterySaverModeAlignWakeUps", + "LowerHighResolutionTimerThreshold", + "TimerSlackMac" ] } ] @@ -3175,6 +3202,30 @@ ] } ], + "BirchWeather": [ + { + "platforms": [ + "chromeos" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "BirchWeather" + ] + }, + { + "name": "EnabledWithWeatherAlphaEndpoint", + "params": { + "prod_weather_endpoint": "false" + }, + "enable_features": [ + "BirchWeather" + ] + } + ] + } + ], "BlinkSchedulerCompositorTQPolicyDuringThreadedScroll": [ { "platforms": [ @@ -3201,6 +3252,26 @@ ] } ], + "BlinkSchedulerDiscreteInputMatchesResponsivenessMetrics": [ + { + "platforms": [ + "android", + "android_webview", + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "BlinkSchedulerDiscreteInputMatchesResponsivenessMetrics" + ] + } + ] + } + ], "BlockAcceptClientHints": [ { "platforms": [ @@ -3314,27 +3385,6 @@ ] } ], - "BottomOmniboxPhase2IOS": [ - { - "platforms": [ - "ios" - ], - "experiments": [ - { - "name": "Enabled_Both_Top", - "params": { - "BottomOmniboxPromoDefaultPositionParam": "Top" - }, - "enable_features": [ - "BottomOmniboxPromoAppLaunch", - "BottomOmniboxPromoDefaultPosition", - "BottomOmniboxPromoFRE", - "BottomOmniboxPromoRegionFilter" - ] - } - ] - } - ], "BoundaryEventDispatchTracksNodeRemoval": [ { "platforms": [ @@ -3493,6 +3543,22 @@ ] } ], + "BuiltInH264Decoder": [ + { + "platforms": [ + "android", + "android_webview" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "BuiltInH264Decoder" + ] + } + ] + } + ], "BuiltInHlsMP4": [ { "platforms": [ @@ -3542,22 +3608,6 @@ ] } ], - "COMInitForUtilWin": [ - { - "platforms": [ - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "UtilWinProcessUsesUIPump", - "UtilityWithUIPumpInitializesCOM" - ] - } - ] - } - ], "CPSS-V2-Android": [ { "platforms": [ @@ -3592,6 +3642,26 @@ ] } ], + "CPUMeasurementInFreezingPolicy": [ + { + "platforms": [ + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "CPUMeasurementInFreezingPolicy", + "ResourceAttributionIncludeOrigins" + ] + } + ] + } + ], "CSSDisplayAnimation": [ { "platforms": [ @@ -3740,6 +3810,26 @@ ] } ], + "CanvasHibernationSnapshotZstd": [ + { + "platforms": [ + "android", + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "CanvasHibernationSnapshotZstd" + ] + } + ] + } + ], "CanvasOutOfProcessRasterization": [ { "platforms": [ @@ -3990,6 +4080,28 @@ ] } ], + "ChangeFrameRateOfLoadingTabAnimation": [ + { + "platforms": [ + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "EnabledWith67msFrameDelay", + "params": { + "loading_tab_animation_frame_delay": "67ms" + }, + "enable_features": [ + "ChangeFrameRateOfLoadingTabAnimation" + ] + } + ] + } + ], "CheckHTMLParserBudgetLessOften": [ { "platforms": [ @@ -4049,24 +4161,6 @@ ] } ], - "ChromeHomeFrequency": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "Enabled_4H", - "params": { - "start_surface_return_time_on_tablet_seconds": "14400" - }, - "enable_features": [ - "StartSurfaceReturnTime" - ] - } - ] - } - ], "ChromeLabs": [ { "platforms": [ @@ -4843,17 +4937,9 @@ "name": "Enabled", "enable_features": [ "WelcomeTourV2" - ] - }, - { - "name": "Counterfactual", - "enable_features": [ - "WelcomeTourCounterfactualArm" - ] - }, - { - "name": "Holdback", - "enable_features": [ + ], + "disable_features": [ + "WelcomeTourCounterfactualArm", "WelcomeTourHoldbackArm" ] } @@ -4985,7 +5071,7 @@ ] } ], - "Chromnient": [ + "ChromnientPostLaunch": [ { "platforms": [ "chromeos", @@ -4996,20 +5082,13 @@ ], "experiments": [ { - "name": "Enabled_Responsive_Omnibox_Entry_Point", + "name": "FipEntryPointDisabledAndVideoFrameEnabled", "params": { - "endpoint-url": "https://lensfrontend-pa.googleapis.com/v1/crupload", - "omnibox-entry-point": "true", - "omnibox-entry-point-always-visible": "false", - "select-text-over-region-trigger-threshold": "0.1", - "text-vertical-margin": "12", - "use-oauth-for-requests": "true" + "find-in-page-entry-point": "false" }, "enable_features": [ + "ContextMenuSearchForVideoFrame", "LensOverlay" - ], - "disable_features": [ - "ContextMenuSearchForVideoFrame" ] } ] @@ -5045,6 +5124,63 @@ ] } ], + "ClankMostVisitedTilesReselect": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled_PartialMatch_Arm3", + "params": { + "lax_path": "true", + "lax_query": "true", + "lax_ref": "true", + "lax_scheme_host": "true" + }, + "enable_features": [ + "MostVisitedTilesReselect" + ] + }, + { + "name": "Enabled_PartialMatch_Arm2", + "params": { + "lax_path": "false", + "lax_query": "true", + "lax_ref": "true", + "lax_scheme_host": "true" + }, + "enable_features": [ + "MostVisitedTilesReselect" + ] + }, + { + "name": "Enabled_PartialMatch_Arm1", + "params": { + "lax_path": "false", + "lax_query": "false", + "lax_ref": "true", + "lax_scheme_host": "true" + }, + "enable_features": [ + "MostVisitedTilesReselect" + ] + }, + { + "name": "Enabled_ExactMatch", + "params": { + "lax_path": "false", + "lax_query": "false", + "lax_ref": "false", + "lax_scheme_host": "false" + }, + "enable_features": [ + "MostVisitedTilesReselect" + ] + } + ] + } + ], "ClankTabResumpton": [ { "platforms": [ @@ -5097,6 +5233,22 @@ ] } ], + "ClassifyUrlOnProcessResponseEventAndroidAndChromeOS": [ + { + "platforms": [ + "android", + "chromeos" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "ClassifyUrlOnProcessResponseEvent" + ] + } + ] + } + ], "ClearDeviceDataOnSignOutForManagedUsers": [ { "platforms": [ @@ -5502,6 +5654,22 @@ ] } ], + "ComInitForUtilWin": [ + { + "platforms": [ + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "UtilWinProcessUsesUiPump", + "UtilityWithUiPumpInitializesCom" + ] + } + ] + } + ], "CombinedWebViewOptimizations": [ { "platforms": [ @@ -5509,14 +5677,26 @@ ], "experiments": [ { - "name": "Enabled", + "name": "Enabled_20240729", + "params": { + "compile-in-parallel": "false", + "compile-strategy": "lazy", + "inline-script-timeout": "0ms", + "precompile-main-frame-only": "true", + "scan-main-frame-only": "true" + }, "enable_features": [ "AvoidResourceRequestCopies", "CreateSpareRendererOnBrowserContextCreation", "EnsureExistingRendererAlive", + "InputStreamOptimizations", "LazyBindJsInjection", + "PrecompileInlineScripts", "SkipUnnecessaryThreadHopsForParseHeaders", - "WebViewOptimizeXrwNavigationFlow" + "ThreadedBodyLoader", + "ThreadedPreloadScanner", + "WebViewOptimizeXrwNavigationFlow", + "WebViewPreloadClasses" ] } ] @@ -5586,18 +5766,26 @@ ] } ], - "ComposeEnableNudgeForUnspecifiedHint": [ + "Compare": [ { "platforms": [ + "chromeos", + "chromeos_lacros", "linux", "mac", "windows" ], "experiments": [ { - "name": "Disabled", - "disable_features": [ - "ComposeEnableNudgeForUnspecifiedHint" + "name": "Enabled_Dogfood", + "enable_features": [ + "ProductSpecifications" + ] + }, + { + "name": "Enabled", + "enable_features": [ + "ProductSpecifications" ] } ] @@ -5657,12 +5845,12 @@ ], "experiments": [ { - "name": "Enabled_CursorNudge", + "name": "Enabled_CursorNudgeModel", "params": { "proactive_nudge_compact_ui": "true", "proactive_nudge_delay_milliseconds": "1000", - "proactive_nudge_force_show_probability": "0.02", - "proactive_nudge_show_probability": "0.0" + "proactive_nudge_force_show_probability": "0.00", + "proactive_nudge_show_probability": "0.02" }, "enable_features": [ "AutofillCaretExtraction", @@ -5671,17 +5859,16 @@ ] }, { - "name": "Enabled_FieldNudge", + "name": "Enabled_CursorNudgeRandom", "params": { + "proactive_nudge_compact_ui": "true", "proactive_nudge_delay_milliseconds": "1000", "proactive_nudge_force_show_probability": "0.02", - "proactive_nudge_show_probability": "0.0" + "proactive_nudge_show_probability": "0.02" }, "enable_features": [ - "ComposeProactiveNudge" - ], - "disable_features": [ "AutofillCaretExtraction", + "ComposeProactiveNudge", "EnableComposeNudgeAtCursor" ] } @@ -5870,27 +6057,6 @@ ] } ], - "CookieAccessDetailsNotificationDeDuping": [ - { - "platforms": [ - "android", - "android_webview", - "chromeos", - "chromeos_lacros", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled_20240621", - "enable_features": [ - "CookieAccessDetailsNotificationDeDuping" - ] - } - ] - } - ], "CookieDeprecationFacilitatedTestingCookieDeprecation": [ { "platforms": [ @@ -5983,35 +6149,6 @@ ] } ], - "CpssStringChange": [ - { - "platforms": [ - "chromeos", - "chromeos_lacros", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "NewStringWithHats_20240221", - "params": { - "probability": "1.0", - "probability_vector": "0.3,0.7", - "prompt_disposition_filter": "LocationBarLeftQuietChip", - "prompt_disposition_reason_filter": "OnDevicePredictionModel,PredictionService", - "request_type_filter": "Notifications,Geolocation", - "survey_display_time": "OnPromptAppearing", - "trigger_id": "TfmwCkztT0ugnJ3q1cK0URBBSdir,FohGLzZdE0ugnJ3q1cK0QyypEaVo" - }, - "enable_features": [ - "CpssQuietChipTextUpdate", - "PermissionsPromptSurvey" - ] - } - ] - } - ], "CrOSAudioHfpMicSrToggle": [ { "platforms": [ @@ -6027,6 +6164,38 @@ ] } ], + "CrOSAudioSidetoneAndMicIndicator": [ + { + "platforms": [ + "chromeos" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "VCTrayMicIndicator", + "VCTrayTitleHeader" + ] + }, + { + "name": "EnabledWithoutMicIndicator", + "enable_features": [ + "VCTrayTitleHeader" + ], + "disable_features": [ + "VCTrayMicIndicator" + ] + }, + { + "name": "Control", + "disable_features": [ + "VCTrayMicIndicator", + "VCTrayTitleHeader" + ] + } + ] + } + ], "CrOSBluetoothA2dpAacCodec": [ { "platforms": [ @@ -6308,6 +6477,38 @@ ] } ], + "CrOSLateBootEEVDFEligibility": [ + { + "platforms": [ + "chromeos", + "chromeos_lacros" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "CrOSLateBootEEVDFEligibility" + ] + } + ] + } + ], + "CrOSLateBootHighResOffGlobalVariables": [ + { + "platforms": [ + "chromeos", + "chromeos_lacros" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "CrOSLateBootHighResOffGlobal" + ] + } + ] + } + ], "CrOSLateBootHighResOffVariables": [ { "platforms": [ @@ -6349,10 +6550,11 @@ ], "experiments": [ { - "name": "EnabledEarlyDiscard_20240605", + "name": "EnabledEarlyDiscard_20240802", "params": { "CompleteStallMs": "700", - "PartialStallMs": "20" + "PartialStallMs": "20", + "VmmmsReclaimProportion": "0" }, "enable_features": [ "CrOSLateBootDiscardStaleAtModeratePressure", @@ -6364,7 +6566,10 @@ ] }, { - "name": "EnabledAvailableAdjustmentPsi_20240605", + "name": "EnabledAvailableAdjustmentPsi_20240802", + "params": { + "PsiTopThreshold": "80.0" + }, "enable_features": [ "CrOSLateBootPsiAdjustAvailable" ], @@ -6375,9 +6580,23 @@ ] }, { - "name": "EnabledAvailableAdjustmentPsiFull_20240605", + "name": "EnabledAvailableAdjustmentPsiTopThreshold60_20240802", "params": { - "PsiTopThreshold": "20.0", + "PsiTopThreshold": "60.0" + }, + "enable_features": [ + "CrOSLateBootPsiAdjustAvailable" + ], + "disable_features": [ + "CrOSLateBootDiscardStaleAtModeratePressure", + "CrOSLateBootOverrideLmkdPsiDefaults", + "CrOSLockMainProgramText" + ] + }, + { + "name": "EnabledAvailableAdjustmentPsiFull_20240802", + "params": { + "PsiTopThreshold": "40.0", "PsiUseFull": "true" }, "enable_features": [ @@ -6390,10 +6609,12 @@ ] }, { - "name": "EnabledAvailableAdjustmentPsiWithEarlyDiscard_20240605", + "name": "EnabledAvailableAdjustmentPsiWithEarlyDiscard_20240802", "params": { "CompleteStallMs": "700", - "PartialStallMs": "20" + "PartialStallMs": "20", + "PsiTopThreshold": "80.0", + "VmmmsReclaimProportion": "0" }, "enable_features": [ "CrOSLateBootDiscardStaleAtModeratePressure", @@ -6405,7 +6626,7 @@ ] }, { - "name": "EnabledMlockChrome_20240605", + "name": "EnabledMlockChrome_20240802", "enable_features": [ "CrOSLockMainProgramText" ], @@ -6416,7 +6637,10 @@ ] }, { - "name": "EnabledMlockChromeWithAvailableAdjustmentPsi_20240605", + "name": "EnabledMlockChromeWithAvailableAdjustmentPsi_20240802", + "params": { + "PsiTopThreshold": "80.0" + }, "enable_features": [ "CrOSLateBootPsiAdjustAvailable", "CrOSLockMainProgramText" @@ -6425,6 +6649,21 @@ "CrOSLateBootDiscardStaleAtModeratePressure", "CrOSLateBootOverrideLmkdPsiDefaults" ] + }, + { + "name": "EnabledAvailableAdjustmentPsiWithEarlyDiscardAndMlockChrome_20240802", + "params": { + "CompleteStallMs": "700", + "PartialStallMs": "20", + "PsiTopThreshold": "80.0", + "VmmmsReclaimProportion": "0" + }, + "enable_features": [ + "CrOSLateBootDiscardStaleAtModeratePressure", + "CrOSLateBootOverrideLmkdPsiDefaults", + "CrOSLateBootPsiAdjustAvailable", + "CrOSLockMainProgramText" + ] } ] } @@ -6474,6 +6713,21 @@ ] } ], + "CrOSLateBootSetRtForDisplayThreads": [ + { + "platforms": [ + "chromeos" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "CrOSLateBootSetRtForDisplayThreads" + ] + } + ] + } + ], "CrOSLateBootSlowAdaptiveCharging": [ { "platforms": [ @@ -6489,6 +6743,48 @@ ] } ], + "CrOSLateBootSplitGenerations": [ + { + "platforms": [ + "chromeos" + ], + "experiments": [ + { + "name": "enabled_swappiness_60", + "enable_features": [ + "CrOSLateBootSplitGenerations" + ] + }, + { + "name": "enabled_swappiness_140", + "params": { + "Swappiness": "140" + }, + "enable_features": [ + "CrOSLateBootSplitGenerations" + ] + }, + { + "name": "enabled_swappiness_180", + "params": { + "Swappiness": "180" + }, + "enable_features": [ + "CrOSLateBootSplitGenerations" + ] + }, + { + "name": "enabled_swappiness_195", + "params": { + "Swappiness": "195" + }, + "enable_features": [ + "CrOSLateBootSplitGenerations" + ] + } + ] + } + ], "CrOSLateBootSwapZramCompAlgorithm": [ { "platforms": [ @@ -6768,7 +7064,7 @@ ] } ], - "DIPSStatefulBounceEnforcement": [ + "DIPSOnHTTPCache": [ { "platforms": [ "android", @@ -6779,10 +7075,9 @@ ], "experiments": [ { - "name": "Enabled_v0", + "name": "AnyBounceTrigger", "params": { - "delete": "true", - "triggering_action": "stateful_bounce" + "triggering_action": "bounce" }, "enable_features": [ "DIPS" @@ -6855,6 +7150,21 @@ ] } ], + "DTCKeyRotationUploadedBySharedAPIEnabled": [ + { + "platforms": [ + "mac" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "DTCKeyRotationUploadedBySharedAPIEnabled" + ] + } + ] + } + ], "DTCKeyUploadedBySharedAPIEnabled": [ { "platforms": [ @@ -7031,6 +7341,21 @@ ] } ], + "DedicatedMediaServiceThread": [ + { + "platforms": [ + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "DedicatedMediaServiceThread" + ] + } + ] + } + ], "DefaultANGLEMetal": [ { "platforms": [ @@ -7087,6 +7412,32 @@ ] } ], + "DefaultBrowserPromptRefreshMacLaunch": [ + { + "platforms": [ + "mac" + ], + "experiments": [ + { + "name": "V2Enabled3V2_20240723", + "params": { + "group_name": "enabled-v2-arm-3v2", + "max_prompt_count": "5", + "reprompt_duration": "21d", + "reprompt_duration_multiplier": "1", + "show_app_menu_chip": "false", + "show_app_menu_item": "true", + "show_info_bar": "true", + "updated_info_bar_copy": "false" + }, + "enable_features": [ + "DefaultBrowserPromptRefresh", + "DefaultBrowserPromptRefreshTrial" + ] + } + ] + } + ], "DefaultGpuDiskCacheSize": [ { "platforms": [ @@ -7153,6 +7504,29 @@ ] } ], + "DeferRendererTasksAfterInput": [ + { + "platforms": [ + "android", + "android_webview", + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled_AllDeferrableTypes", + "params": { + "policy": "all-deferrable-types" + }, + "enable_features": [ + "DeferRendererTasksAfterInput" + ] + } + ] + } + ], "DeferSpeculativeRFHCreation": [ { "platforms": [ @@ -7166,7 +7540,12 @@ ], "experiments": [ { - "name": "Enabled", + "name": "EnabledWithPrewarmAndDelay", + "params": { + "create_speculative_rfh_delay_ms": "1", + "create_speculative_rfh_filter_restore": "true", + "warmup_spare_process": "true" + }, "enable_features": [ "DeferSpeculativeRFHCreation" ] @@ -7356,6 +7735,28 @@ ] } ], + "DesktopNtpCalendar": [ + { + "platforms": [ + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "CalendarModuleEnabled", + "params": { + "NtpCalendarModuleMaxEventsParam": "5" + }, + "enable_features": [ + "NtpCalendarModule" + ] + } + ] + } + ], "DesktopNtpDriveCache": [ { "platforms": [ @@ -7924,30 +8325,7 @@ ] } ], - "DiscountConsentV2": [ - { - "platforms": [ - "fuchsia", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "enabled_ntp_native_dialog_with_approved_strings_M104_20220809", - "params": { - "discount-consent-ntp-variation": "4", - "step-one-static-content": "Let Google help you find discounts for your carts", - "step-one-use-static-content": "true" - }, - "enable_features": [ - "DiscountConsentV2" - ] - } - ] - } - ], - "DiscountsAutoPopup": [ + "DiscountAutoPopup": [ { "platforms": [ "chromeos", @@ -7971,6 +8349,29 @@ ] } ], + "DiscountConsentV2": [ + { + "platforms": [ + "fuchsia", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "enabled_ntp_native_dialog_with_approved_strings_M104_20220809", + "params": { + "discount-consent-ntp-variation": "4", + "step-one-static-content": "Let Google help you find discounts for your carts", + "step-one-use-static-content": "true" + }, + "enable_features": [ + "DiscountConsentV2" + ] + } + ] + } + ], "DlpRegionalizedEndpoints": [ { "platforms": [ @@ -8225,21 +8626,6 @@ ] } ], - "DynamicCrxDownloaderPriority": [ - { - "platforms": [ - "mac" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "DynamicCrxDownloaderPriority" - ] - } - ] - } - ], "DynamicScrollCullRectExpansion": [ { "platforms": [ @@ -8262,37 +8648,6 @@ ] } ], - "ESBDownloadRowPromo": [ - { - "platforms": [ - "chromeos", - "chromeos_lacros", - "fuchsia", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "params": { - "availability": "any", - "blocked_by": "none", - "blocking": "none", - "event_1": "name:esb_download_promo_row_viewed;comparator:<7;window:90;storage:90", - "event_2": "name:esb_download_promo_row_clicked;comparator:<3;window:90;storage:90", - "event_trigger": "name:dangerous_download_esb_promo_row_trigger;comparator:any;window:360;storage:360", - "event_used": "name:enable_enhanced_protection;comparator:==0;window:21;storage:90", - "session_rate": "any", - "session_rate_impact": "none" - }, - "enable_features": [ - "EsbDownloadRowPromo" - ] - } - ] - } - ], "ESBInfobarPromo": [ { "platforms": [ @@ -8351,7 +8706,20 @@ ], "experiments": [ { - "name": "Enabled", + "name": "Enabled_BottomChin", + "params": { + "disable_bottom_controls_stacker_y_offset": "false" + }, + "enable_features": [ + "BottomBrowserControlsRefactor", + "DrawCutoutEdgeToEdge", + "DynamicSafeAreaInsets", + "DynamicSafeAreaInsetsOnScroll", + "EdgeToEdgeBottomChin" + ] + }, + { + "name": "Enabled_DynamicSafeAreaInsetsOnly", "enable_features": [ "DynamicSafeAreaInsets", "DynamicSafeAreaInsetsOnScroll" @@ -8360,6 +8728,27 @@ ] } ], + "ElementGetInnerHTML": [ + { + "platforms": [ + "android", + "chromeos", + "chromeos_lacros", + "fuchsia", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Disabled", + "disable_features": [ + "ElementGetInnerHTML" + ] + } + ] + } + ], "En840AndFstDecoderParamsUpdate": [ { "platforms": [ @@ -8442,6 +8831,22 @@ ] } ], + "EnableCertManagementUIV2": [ + { + "platforms": [ + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "EnableCertManagementUIV2" + ] + } + ] + } + ], "EnableConfigurableThreadCacheMultiplier": [ { "platforms": [ @@ -8528,6 +8933,43 @@ ] } ], + "EnableDiscountOnShoppyPagesDesktop": [ + { + "platforms": [ + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "params": { + "discount-on-shoppy-page": "true" + }, + "enable_features": [ + "EnableDiscountInfoApi" + ] + } + ] + } + ], + "EnableExtensibleEnterpriseSSO": [ + { + "platforms": [ + "mac" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "EnableExtensibleEnterpriseSSO" + ] + } + ] + } + ], "EnableFallbackFontsCrashReporting": [ { "platforms": [ @@ -8563,27 +9005,15 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" ], "experiments": [ { - "name": "Enabled", - "enable_features": [ - "DrawImmediatelyWhenInteractive" - ] - }, - { - "name": "EnabledV2", - "enable_features": [ - "DrawImmediatelyWhenInteractive" - ] - }, - { - "name": "EnabledV3", + "name": "EnabledV4", "enable_features": [ + "AckOnSurfaceActivationWhenInteractive", "DrawImmediatelyWhenInteractive" ] } @@ -8767,25 +9197,6 @@ ] } ], - "EnableWatchdogReportOnlyModeOnGpuInit": [ - { - "platforms": [ - "chromeos", - "chromeos_lacros", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "EnableWatchdogReportOnlyModeOnGpuInit" - ] - } - ] - } - ], "EnableWifiQos": [ { "platforms": [ @@ -8839,7 +9250,7 @@ ] } ], - "EnterprisePolicyOnSignin": [ + "EphemeralCCT": [ { "platforms": [ "android" @@ -8848,7 +9259,7 @@ { "name": "Enabled", "enable_features": [ - "EnterprisePolicyOnSignin" + "CCTEphemeralMode" ] } ] @@ -8889,6 +9300,29 @@ ] } ], + "EventTimingHandleKeyboardEventSimulatedClick": [ + { + "platforms": [ + "android", + "chromeos", + "chromeos_lacros", + "fuchsia", + "linux", + "mac", + "windows", + "android_webview", + "android_weblayer" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "EventTimingHandleKeyboardEventSimulatedClick" + ] + } + ] + } + ], "EventTimingHandleOrphanPointerup": [ { "platforms": [ @@ -8927,6 +9361,29 @@ ] } ], + "EventTimingTapStopScrollNoInteractionId": [ + { + "platforms": [ + "android", + "chromeos", + "chromeos_lacros", + "fuchsia", + "linux", + "mac", + "windows", + "android_webview", + "android_weblayer" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "EventTimingTapStopScrollNoInteractionId" + ] + } + ] + } + ], "EvictionThrottlesDraw": [ { "platforms": [ @@ -9028,7 +9485,7 @@ ] } ], - "ExtensionPageHats": [ + "ExtensionManifestV2Deprecation": [ { "platforms": [ "chromeos", @@ -9039,39 +9496,9 @@ ], "experiments": [ { - "name": "PanelNotSeen", - "params": { - "extension-page-trigger-id": "42JiNWbpq0ugnJ3q1cK0Q7uYnB1P", - "extension-survey-arm": "ExtensionsSafetyHubHaTSArms::kReviewPanelNotShown", - "prob": "1", - "settings-time": "10s" - }, + "name": "Enabled_DisableMV2Extensions", "enable_features": [ - "HappinessTrackingSurveysExtensionsSafetyHub" - ] - }, - { - "name": "PanelSeen", - "params": { - "extension-page-trigger-id": "Zxq6GQvXC0ugnJ3q1cK0Q3gXah4x", - "extension-survey-arm": "ExtensionsSafetyHubHaTSArms::kReviewPanelShown", - "prob": "1", - "settings-time": "10s" - }, - "enable_features": [ - "HappinessTrackingSurveysExtensionsSafetyHub" - ] - }, - { - "name": "PanelInteraction", - "params": { - "extension-page-trigger-id": "evSXEigVW0ugnJ3q1cK0UapaYUbK", - "extension-survey-arm": "ExtensionsSafetyHubHaTSArms::kReviewPanelInteraction", - "prob": "1", - "settings-time": "10s" - }, - "enable_features": [ - "HappinessTrackingSurveysExtensionsSafetyHub" + "ExtensionManifestV2Disabled" ] } ] @@ -9089,7 +9516,8 @@ "name": "Enabled", "enable_features": [ "EnableExtensionsPermissionsForSupervisedUsersOnDesktop", - "EnableSupervisedUserSkipParentApprovalToInstallExtensions" + "EnableSupervisedUserSkipParentApprovalToInstallExtensions", + "UpdatedSupervisedUserExtensionApprovalStrings" ] } ] @@ -9114,25 +9542,6 @@ ] } ], - "ExtensionTelemetryDeclarativeNetRequestActionSignal": [ - { - "platforms": [ - "chromeos", - "chromeos_lacros", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "SafeBrowsingExtensionTelemetryDeclarativeNetRequestActionSignal" - ] - } - ] - } - ], "ExtensionsServiceWorkerOptimizedEventDispatch": [ { "platforms": [ @@ -9532,6 +9941,26 @@ ] } ], + "FencedFramesEnableSrcPermissionsPolicy": [ + { + "platforms": [ + "android", + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "FencedFramesSrcPermissionsPolicy" + ] + } + ] + } + ], "FenderAutoPreconnectLcpOrigins": [ { "platforms": [ @@ -9613,13 +10042,39 @@ "ServiceWorkerMergeFindRegistrationForClientUrl", "ServiceWorkerRegistrationCache", "ServiceWorkerScopeCache", - "ServiceWorkerStorageControlOnThreadPool", "ServiceWorkerStorageControlResponseUseHighPriority" ] } ] } ], + "FingerprintingProtectionFilter": [ + { + "platforms": [ + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled_DryRun_20240729_Dogfood", + "params": { + "activation_level": "dry_run", + "enable_on_3pc_blocked": "false" + }, + "enable_features": [ + "EnableFingerprintingProtectionFilter" + ], + "disable_features": [ + "FingerprintingProtectionSetting", + "FingerprintingProtectionUx" + ] + } + ] + } + ], "Floss": [ { "platforms": [ @@ -9687,6 +10142,21 @@ ] } ], + "FocusModeYTM": [ + { + "platforms": [ + "chromeos" + ], + "experiments": [ + { + "name": "FocusModeYTM", + "enable_features": [ + "FocusModeYTM" + ] + } + ] + } + ], "FollowOnboarding": [ { "platforms": [ @@ -9718,25 +10188,6 @@ "enable_features": [ "ForestFeature" ] - }, - { - "name": "EnabledWithoutWeather", - "enable_features": [ - "ForestFeature" - ], - "disable_features": [ - "BirchWeather" - ] - }, - { - "name": "EnabledWithWeatherProdEndpoint", - "params": { - "prod_weather_endpoint": "true" - }, - "enable_features": [ - "BirchWeather", - "ForestFeature" - ] } ] } @@ -9836,7 +10287,7 @@ ], "experiments": [ { - "name": "CounterfactualControl_20240710", + "name": "CounterfactualControl_20240805", "params": { "IPH_ScalableIphGaming_availability": ">=0", "IPH_ScalableIphGaming_event_1": "name:ScalableIphGameWindowOpened;comparator:>0;window:365;storage:365", @@ -9853,7 +10304,7 @@ ] }, { - "name": "Notification_20240710", + "name": "Notification_20240805", "params": { "IPH_ScalableIphGaming_availability": ">=0", "IPH_ScalableIphGaming_event_1": "name:ScalableIphGameWindowOpened;comparator:>0;window:365;storage:365", @@ -9864,8 +10315,10 @@ "IPH_ScalableIphGaming_x_CustomConditionTriggerEvent": "ScalableIphUnlocked", "IPH_ScalableIphGaming_x_CustomNotificationBodyText": "", "IPH_ScalableIphGaming_x_CustomNotificationButtonText": "Get perk", + "IPH_ScalableIphGaming_x_CustomNotificationIcon": "Redeem", "IPH_ScalableIphGaming_x_CustomNotificationId": "scalable_iph_gaming", "IPH_ScalableIphGaming_x_CustomNotificationImageType": "Minecraft", + "IPH_ScalableIphGaming_x_CustomNotificationSummaryText": "None", "IPH_ScalableIphGaming_x_CustomNotificationTitle": "Get 3 months of Minecraft Realms Plus at no cost on your Chromebook", "IPH_ScalableIphGaming_x_CustomUiType": "Notification", "IPH_ScalableIphGaming_x_CustomVersionNumber": "1" @@ -9877,21 +10330,6 @@ ] } ], - "GcmNativeBackgroundTask": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "GcmNativeBackgroundTask" - ] - } - ] - } - ], "GenGpuDiskCacheKeyPrefixInGpuService": [ { "platforms": [ @@ -10170,6 +10608,25 @@ ] } ], + "GpuYieldRasterization": [ + { + "platforms": [ + "android", + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "GpuYieldRasterization" + ] + } + ] + } + ], "GrCacheLimits": [ { "platforms": [ @@ -10265,32 +10722,6 @@ ] } ], - "H2InitialMaxConcurrentStreamsOverride": [ - { - "platforms": [ - "android", - "android_webview", - "chromeos", - "chromeos_lacros", - "fuchsia", - "ios", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "params": { - "initial_max_concurrent_streams": "10" - }, - "enable_features": [ - "H2InitialMaxConcurrentStreamsOverride" - ] - } - ] - } - ], "HTTP2": [ { "platforms": [ @@ -10317,6 +10748,37 @@ ] } ], + "HandleLocalNetworkPermission": [ + { + "platforms": [ + "mac" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "UseNetworkFrameworkForLocalDiscovery" + ] + } + ] + }, + { + "platforms": [ + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "ShowCastPermissionRejectedError" + ] + } + ] + } + ], "HangoutsExtensionV3": [ { "platforms": [ @@ -10786,8 +11248,11 @@ ], "experiments": [ { - "name": "Enabled_20240627", + "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}" }, @@ -10969,6 +11434,26 @@ ] } ], + "HttpsFirstBalancedMode": [ + { + "platforms": [ + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "HttpsFirstBalancedMode", + "HttpsFirstModeInterstitialAugust2024Refresh" + ] + } + ] + } + ], "HttpsFirstModeIncognitoPhase1": [ { "platforms": [ @@ -11029,6 +11514,37 @@ ] } ], + "IOSAccountCapabilitiesMigration": [ + { + "platforms": [ + "ios" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "ReplaceSupervisionPrefsWithAccountCapabilitiesOnIOS", + "ReplaceSupervisionSystemCapabilitiesWithAccountCapabilitiesOnIOS" + ] + } + ] + } + ], + "IOSAutofillAcrossIframes": [ + { + "platforms": [ + "ios" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "AutofillAcrossIframesIos" + ] + } + ] + } + ], "IOSBackgroundPasteboardAccess": [ { "platforms": [ @@ -11152,21 +11668,6 @@ ] } ], - "IOSDisableFullscreenStudy": [ - { - "platforms": [ - "ios" - ], - "experiments": [ - { - "name": "Disabled", - "disable_features": [ - "DisableFullscreenScrolling" - ] - } - ] - } - ], "IOSDockingPromo": [ { "platforms": [ @@ -11242,21 +11743,6 @@ ] } ], - "IOSEnableColorLensAndVoiceIconsInHomeScreenWidget": [ - { - "platforms": [ - "ios" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "kEnableColorLensAndVoiceIconsInHomeScreenWidget" - ] - } - ] - } - ], "IOSFastApplicationWillTerminate": [ { "platforms": [ @@ -11538,6 +12024,30 @@ ] } ], + "IOSPriceInsightsContextualPanel": [ + { + "platforms": [ + "ios" + ], + "experiments": [ + { + "name": "BigBubbleBlueEntrypointHighPrice_CanaryDev", + "params": { + "LowPriceStringParam": "GoodDealNow", + "entrypoint-highlight-iph": "true", + "entrypoint-rich-iph": "true" + }, + "enable_features": [ + "ContextualPanel", + "PriceInsights", + "PriceInsightsHighPrice", + "PriceInsightsIos", + "RichBubbleWithoutImage" + ] + } + ] + } + ], "IOSSaveToDrive": [ { "platforms": [ @@ -11693,7 +12203,7 @@ ] } ], - "IOSTabGroupSync": [ + "IOSTabGroupSynciPhone": [ { "platforms": [ "ios" @@ -12000,30 +12510,6 @@ ] } ], - "IndexedDBShardBackingStores": [ - { - "platforms": [ - "windows", - "mac", - "chromeos", - "chromeos_lacros", - "fuchsia", - "linux", - "ios", - "android", - "android_weblayer", - "android_webview" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "IndexedDBShardBackingStores" - ] - } - ] - } - ], "InfoBarIconMonochrome": [ { "platforms": [ @@ -12059,21 +12545,6 @@ ] } ], - "InputStreamOptimizations": [ - { - "platforms": [ - "android_webview" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "InputStreamOptimizations" - ] - } - ] - } - ], "InsecureFormSubmissionInterstitial": [ { "platforms": [ @@ -12323,20 +12794,16 @@ ] } ], - "KeyboardAndPointerLockPrompt": [ + "KeyboardAccessoryUpgrade": [ { "platforms": [ - "chromeos", - "chromeos_lacros", - "linux", - "mac", - "windows" + "ios" ], "experiments": [ { "name": "Enabled", "enable_features": [ - "KeyboardAndPointerLockPrompt" + "IOSKeyboardAccessoryUpgrade" ] } ] @@ -12641,22 +13108,6 @@ ] } ], - "LargeFakeboxWithColorIconsIOS": [ - { - "platforms": [ - "ios" - ], - "experiments": [ - { - "name": "LargeFakeboxWithColorIcons", - "enable_features": [ - "IOSLargeFakebox", - "OmniboxColorIcons" - ] - } - ] - } - ], "LauncherGameSearchStudy": [ { "platforms": [ @@ -12740,25 +13191,6 @@ ] } ], - "LeftHandSideActivityIndicators": [ - { - "platforms": [ - "chromeos", - "chromeos_lacros", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "LeftHandSideActivityIndicators" - ] - } - ] - } - ], "LevelDBProtoAsyncWrite": [ { "platforms": [ @@ -12949,6 +13381,28 @@ ] } ], + "LoadingPredictorLimitPreconnectSocketCount": [ + { + "platforms": [ + "android", + "android_webview", + "chromeos", + "chromeos_lacros", + "fuchsia", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "LoadingPredictorLimitPreconnectSocketCount" + ] + } + ] + } + ], "LocalStateEnterprisePasswordHashes": [ { "platforms": [ @@ -12986,6 +13440,21 @@ ] } ], + "LogJavaScriptErrors": [ + { + "platforms": [ + "ios" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "LogJavaScriptErrors" + ] + } + ] + } + ], "LogOnDeviceMetricsOnStartup": [ { "platforms": [ @@ -13039,28 +13508,6 @@ ] } ], - "LowerHighResolutionTimerThreshold": [ - { - "platforms": [ - "android", - "android_webview", - "chromeos", - "chromeos_lacros", - "fuchsia", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "LowerHighResolutionTimerThreshold" - ] - } - ] - } - ], "MacAllowBackgroundingRenderProcesses": [ { "platforms": [ @@ -13563,16 +14010,14 @@ ], "experiments": [ { - "name": "Deadline250_WithSystem_WithPrefetch_20240604_M125+", + "name": "Deadline500_WithPrefetchOnStartup_20240819_M128+", "params": { - "FetchImmediatelyAvailableCapabilityDeadlineMs": "100", - "MinorModeRestrictionsFetchDeadlineMs": "250" + "MinorModeRestrictionsFetchDeadlineMs": "500" }, "enable_features": [ "MinorModeRestrictionsForHistorySyncOptIn", "PrefetchSystemCapabilitiesOnAppStartup", - "PrefetchSystemCapabilitiesOnFirstRun", - "UseSystemCapabilitiesForMinorModeRestrictions" + "PrefetchSystemCapabilitiesOnFirstRun" ] } ] @@ -13847,10 +14292,10 @@ ], "experiments": [ { - "name": "Enabled_20240703", + "name": "Enabled_20240723", "params": { "intersection_observer_delay": "1000ms", - "max_intersection_observations": "120", + "max_intersection_observations": "60", "random_anchor_sampling_period": "1" }, "enable_features": [ @@ -14004,6 +14449,32 @@ ] } ], + "NetworkQualityEstimatorParameterTuning": [ + { + "platforms": [ + "android", + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Experiment", + "params": { + "HalfLifeSeconds": "15", + "RecentEndToEndThresholdInSeconds": "60", + "RecentHTTPThresholdInSeconds": "60", + "RecentTransportThresholdInSeconds": "60" + }, + "enable_features": [ + "NetworkQualityEstimator" + ] + } + ] + } + ], "NetworkServiceSandboxLinuxAndChromeOS": [ { "platforms": [ @@ -14133,24 +14604,6 @@ ] } ], - "NonModalPromoCooldownSeparation": [ - { - "platforms": [ - "ios" - ], - "experiments": [ - { - "name": "CooldownDays14_2024_06_02", - "params": { - "cooldown-days": "14" - }, - "enable_features": [ - "NonModalDefaultBrowserPromoCooldownRefactor" - ] - } - ] - } - ], "NonStandardAppearanceValueSliderVertical": [ { "platforms": [ @@ -14173,28 +14626,6 @@ ] } ], - "NonStandardAppearanceValuesHighUsage": [ - { - "platforms": [ - "android", - "android_webview", - "chromeos", - "chromeos_lacros", - "fuchsia", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Disabled", - "disable_features": [ - "NonStandardAppearanceValuesHighUsage" - ] - } - ] - } - ], "NormalMaxItemsInCacheForSoftware": [ { "platforms": [ @@ -14218,23 +14649,16 @@ ] } ], - "NotReachedIsFatal": [ + "NotificationLimit": [ { "platforms": [ - "android", - "android_webview", - "chromeos", - "chromeos_lacros", - "ios", - "linux", - "mac", - "windows" + "chromeos" ], "experiments": [ { - "name": "Enabled_V1", + "name": "Enabled", "enable_features": [ - "NotReachedIsFatal" + "NotificationLimit" ] } ] @@ -14256,6 +14680,21 @@ ] } ], + "NotificationWidthIncrease": [ + { + "platforms": [ + "chromeos" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "NotificationWidthIncrease" + ] + } + ] + } + ], "NotificationsIgnoreRequireInteraction": [ { "platforms": [ @@ -14306,6 +14745,21 @@ ] } ], + "OmniboxAblateVisibleNetworks": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "OmniboxAblateVisibleNetworks" + ] + } + ] + } + ], "OmniboxActionsInSuggestIOS": [ { "platforms": [ @@ -14321,6 +14775,27 @@ ] } ], + "OmniboxAnswerActions": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "params": { + "ShowAboveKeyboard": "false", + "ShowIfUrlsPresent": "false", + "ShowRichCard": "true" + }, + "enable_features": [ + "OmniboxAnswerActions", + "OmniboxSuggestionAnswerMigration" + ] + } + ] + } + ], "OmniboxAsyncViewInflation": [ { "platforms": [ @@ -14516,6 +14991,83 @@ ] } ], + "OmniboxMlUrlPiecewiseMappedScoringAndroid": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled_AdjustedBy0", + "params": { + "MlUrlPiecewiseMappedSearchBlending": "true", + "MlUrlPiecewiseMappedSearchBlending_BreakPoints": "0,590;0.034,595;0.043,790;0.067,795;0.076,900;0.117,930;0.147,1200;0.184,1205;0.2,1300;0.647,1350;0.668,1410;0.988,1430;1,1530", + "MlUrlPiecewiseMappedSearchBlending_GroupingThreshold": "1414", + "MlUrlPiecewiseMappedSearchBlending_RelevanceBias": "0", + "MlUrlScoringShortcutDocumentSignals": "true", + "MlUrlSearchBlending_MappedSearchBlending": "false", + "enable_scoring_signals_annotators_for_ml_scoring": "true" + }, + "enable_features": [ + "MlUrlPiecewiseMappedSearchBlending", + "MlUrlScoring", + "UrlScoringModel" + ] + }, + { + "name": "Enabled_DemotedBy50", + "params": { + "MlUrlPiecewiseMappedSearchBlending": "true", + "MlUrlPiecewiseMappedSearchBlending_BreakPoints": "0,590;0.034,545;0.043,740;0.067,745;0.076,850;0.117,880;0.147,1150;0.184,1155;0.2,1250;0.647,1300;0.668,1360;0.988,1380;1,1530", + "MlUrlPiecewiseMappedSearchBlending_GroupingThreshold": "1364", + "MlUrlPiecewiseMappedSearchBlending_RelevanceBias": "0", + "MlUrlScoringShortcutDocumentSignals": "true", + "MlUrlSearchBlending_MappedSearchBlending": "false", + "enable_scoring_signals_annotators_for_ml_scoring": "true" + }, + "enable_features": [ + "MlUrlPiecewiseMappedSearchBlending", + "MlUrlScoring", + "UrlScoringModel" + ] + }, + { + "name": "Enabled_PromotedBy100", + "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_RelevanceBias": "0", + "MlUrlScoringShortcutDocumentSignals": "true", + "MlUrlSearchBlending_MappedSearchBlending": "false", + "enable_scoring_signals_annotators_for_ml_scoring": "true" + }, + "enable_features": [ + "MlUrlPiecewiseMappedSearchBlending", + "MlUrlScoring", + "UrlScoringModel" + ] + }, + { + "name": "Enabled_PromotedBy50", + "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_RelevanceBias": "0", + "MlUrlScoringShortcutDocumentSignals": "true", + "MlUrlSearchBlending_MappedSearchBlending": "false", + "enable_scoring_signals_annotators_for_ml_scoring": "true" + }, + "enable_features": [ + "MlUrlPiecewiseMappedSearchBlending", + "MlUrlScoring", + "UrlScoringModel" + ] + } + ] + } + ], "OmniboxMlUrlPiecewiseMappedScoringDesktop": [ { "platforms": [ @@ -14593,6 +15145,83 @@ ] } ], + "OmniboxMlUrlPiecewiseMappedScoringIOS": [ + { + "platforms": [ + "ios" + ], + "experiments": [ + { + "name": "Enabled_AdjustedBy0", + "params": { + "MlUrlPiecewiseMappedSearchBlending": "true", + "MlUrlPiecewiseMappedSearchBlending_BreakPoints": "0,590;0.006,790;0.082,1290;0.443,1360;0.464,1400;0.987,1425;1,1530", + "MlUrlPiecewiseMappedSearchBlending_GroupingThreshold": "1414", + "MlUrlPiecewiseMappedSearchBlending_RelevanceBias": "0", + "MlUrlScoringShortcutDocumentSignals": "true", + "MlUrlSearchBlending_MappedSearchBlending": "false", + "enable_scoring_signals_annotators_for_ml_scoring": "true" + }, + "enable_features": [ + "MlUrlPiecewiseMappedSearchBlending", + "MlUrlScoring", + "UrlScoringModel" + ] + }, + { + "name": "Enabled_DemotedBy50", + "params": { + "MlUrlPiecewiseMappedSearchBlending": "true", + "MlUrlPiecewiseMappedSearchBlending_BreakPoints": "0,590;0.006,740;0.082,1240;0.443,1310;0.464,1350;0.987,1375;1,1530", + "MlUrlPiecewiseMappedSearchBlending_GroupingThreshold": "1364", + "MlUrlPiecewiseMappedSearchBlending_RelevanceBias": "0", + "MlUrlScoringShortcutDocumentSignals": "true", + "MlUrlSearchBlending_MappedSearchBlending": "false", + "enable_scoring_signals_annotators_for_ml_scoring": "true" + }, + "enable_features": [ + "MlUrlPiecewiseMappedSearchBlending", + "MlUrlScoring", + "UrlScoringModel" + ] + }, + { + "name": "Enabled_PromotedBy100", + "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_RelevanceBias": "0", + "MlUrlScoringShortcutDocumentSignals": "true", + "MlUrlSearchBlending_MappedSearchBlending": "false", + "enable_scoring_signals_annotators_for_ml_scoring": "true" + }, + "enable_features": [ + "MlUrlPiecewiseMappedSearchBlending", + "MlUrlScoring", + "UrlScoringModel" + ] + }, + { + "name": "Enabled_PromotedBy50", + "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_RelevanceBias": "0", + "MlUrlScoringShortcutDocumentSignals": "true", + "MlUrlSearchBlending_MappedSearchBlending": "false", + "enable_scoring_signals_annotators_for_ml_scoring": "true" + }, + "enable_features": [ + "MlUrlPiecewiseMappedSearchBlending", + "MlUrlScoring", + "UrlScoringModel" + ] + } + ] + } + ], "OmniboxOnClobberFocusTypeOnContent": [ { "platforms": [ @@ -15204,7 +15833,6 @@ "AdaptiveButtonInTopToolbarCustomizationV2", "AdaptiveButtonInTopToolbarTranslate", "ReadAloudInMultiWindow", - "ReadAloudTapToSeek", "SegmentationPlatformAdaptiveToolbarV2Feature" ] }, @@ -15229,6 +15857,42 @@ "chromeos" ], "experiments": [ + { + "name": "Enabled_i18n_p0_p1_langs_from_128_Dogfood", + "params": { + "ime_allowlist": "[\"xkb:es::spa\"]" + }, + "enable_features": [ + "OrcaDanish", + "OrcaDogfood", + "OrcaDutch", + "OrcaFinnish", + "OrcaItalian", + "OrcaNorwegian", + "OrcaPortugese", + "OrcaSpanish", + "OrcaSwedish" + ] + }, + { + "name": "Enabled_i18n_p0_langs_pre_128_Dogfood", + "params": { + "ime_allowlist": "[\"xkb:es::spa\"]" + }, + "enable_features": [ + "OrcaDogfood", + "OrcaInternationalize", + "OrcaUseL10nStrings" + ] + }, + { + "name": "Pre_I18n_Launch_Disablement", + "disable_features": [ + "OrcaFrench", + "OrcaGerman", + "OrcaJapanese" + ] + }, { "name": "Enabled_From_121_Dogfood", "params": { @@ -15281,6 +15945,21 @@ ] } ], + "OsUpdateHandler": [ + { + "platforms": [ + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "RegisterOsUpdateHandlerWin" + ] + } + ] + } + ], "OutOfProcessPrintDriversPrint": [ { "platforms": [ @@ -15305,24 +15984,6 @@ ] } ], - "OverrideAndroidOmniboxSpareRendererDelay": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "Enabled_500ms", - "params": { - "omnibox_spare_renderer_delay_ms": "500" - }, - "enable_features": [ - "OverrideAndroidOmniboxSpareRendererDelay" - ] - } - ] - } - ], "OzonePlatformAuto": [ { "platforms": [ @@ -15875,6 +16536,26 @@ ] } ], + "PartitionVisitedLinkDatabaseWithSelfLinks": [ + { + "platforms": [ + "android", + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "PartitionVisitedLinkDatabaseWithSelfLinks", + "enable_features": [ + "PartitionVisitedLinkDatabaseWithSelfLinks" + ] + } + ] + } + ], "PassHistogramSharedMemoryOnLaunch": [ { "platforms": [ @@ -16080,6 +16761,21 @@ ] } ], + "PasswordlessGaiaForConsumers": [ + { + "platforms": [ + "chromeos" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "PasswordlessGaiaForConsumers" + ] + } + ] + } + ], "Path2DPaintCache": [ { "platforms": [ @@ -16099,38 +16795,6 @@ ] } ], - "PdfOcrChromeOS": [ - { - "platforms": [ - "chromeos" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "PdfOcr" - ] - } - ] - } - ], - "PdfOcrDesktop": [ - { - "platforms": [ - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "PdfOcr" - ] - } - ] - } - ], "PdfOutOfProcessIframe": [ { "platforms": [ @@ -16340,27 +17004,6 @@ ] } ], - "PerformanceControlsRound2Improvements": [ - { - "platforms": [ - "chromeos", - "chromeos_lacros", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled_20240516", - "enable_features": [ - "DiscardRingImprovements", - "IPH_DiscardRing", - "MemorySaverModeAggressiveness" - ] - } - ] - } - ], "PerformanceInterventionMetricsStudy": [ { "platforms": [ @@ -16381,6 +17024,46 @@ ] } ], + "PerformanceInterventionUILaunch": [ + { + "platforms": [ + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "EnabledString1_20240724", + "params": { + "intervention_dialog_version": "1" + }, + "enable_features": [ + "PerformanceInterventionUI" + ] + }, + { + "name": "EnabledString2_20240724", + "params": { + "intervention_dialog_version": "2" + }, + "enable_features": [ + "PerformanceInterventionUI" + ] + }, + { + "name": "EnabledString3_20240724", + "params": { + "intervention_dialog_version": "3" + }, + "enable_features": [ + "PerformanceInterventionUI" + ] + } + ] + } + ], "PeripheralCustomization": [ { "platforms": [ @@ -16439,6 +17122,35 @@ ] } ], + "PermissionsPEPCHaTS": [ + { + "platforms": [ + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "RecoverySurveyDismiss_20240729", + "params": { + "action_filter": "Dismissed", + "initial_permission_status_filter": "deny", + "probability": "0.5", + "probability_vector": "0.5,0.5", + "prompt_disposition_filter": "ElementAnchoredBubble", + "request_type_filter": "VideoCapture,AudioCapture", + "survey_display_time": "OnPromptResolved", + "trigger_id": "oqdSQ6wky0ugnJ3q1cK0WRpR8GW2,WCAaJD6T80ugnJ3q1cK0XaNn1zy3" + }, + "enable_features": [ + "PermissionsPromptSurvey" + ] + } + ] + } + ], "PickerUI": [ { "platforms": [ @@ -16496,7 +17208,9 @@ "enable_features": [ "PlusAddressAffiliations", "PlusAddressFallbackFromContextMenu", + "PlusAddressOfferCreationOnSingleUsernameForms", "PlusAddressRefresh", + "PlusAddressSettingsRefreshDesktop", "PlusAddressesEnabled", "SyncPlusAddress" ] @@ -16528,6 +17242,38 @@ ] } ], + "PostGetMyMemoryStateToBackground": [ + { + "platforms": [ + "android", + "android_webview" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "PostGetMyMemoryStateToBackground" + ] + } + ] + } + ], + "PostPowerMonitorBroadcastReceiverInitToBackground": [ + { + "platforms": [ + "android", + "android_webview" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "PostPowerMonitorBroadcastReceiverInitToBackground" + ] + } + ] + } + ], "PostQuantumKyber": [ { "platforms": [ @@ -16595,7 +17341,7 @@ { "name": "Enabled", "params": { - "max_pre_initialize_count": "3" + "max_pre_initialize_count": "1" }, "enable_features": [ "PreInitializePageAndFrameForSVGImage" @@ -16776,7 +17522,6 @@ { "name": "Enabled", "params": { - "preload_system_fonts_from_page": "false", "preload_system_fonts_required_memory_gb": "4", "preload_system_fonts_targets": "[{\"family\":\"arial\",\"weight\":400,\"size\":14,\"csize\":14,\"text\":\"ab\"}]" }, @@ -16831,9 +17576,10 @@ ], "experiments": [ { - "name": "Enabled_20240501_NoEnact", + "name": "Enabled_20240726_NoEnact", "params": { - "enact_candidates": "false" + "enact_candidates": "false", + "one_execution_per_hover": "false" }, "enable_features": [ "PreloadingHeuristicsMLModel" @@ -16853,7 +17599,7 @@ ], "experiments": [ { - "name": "OnlyMouseDown_20240718", + "name": "OnlyMouseDown_20240730", "params": { "prerender_bookmarkbar_on_mouse_hover_trigger": "false", "prerender_bookmarkbar_on_mouse_pressed_trigger": "true" @@ -16914,7 +17660,7 @@ ], "experiments": [ { - "name": "Enabled_20240628", + "name": "Enabled_20240807", "params": { "prerender_new_tab_page_on_touch_trigger": "47" }, @@ -16925,68 +17671,6 @@ ] } ], - "Prerender2NewTabPageTrigger": [ - { - "platforms": [ - "linux", - "mac", - "windows", - "chromeos", - "chromeos_lacros" - ], - "experiments": [ - { - "name": "BothMouseDownAndMouseHover_20240617", - "params": { - "prerender_new_tab_page_on_mouse_hover_trigger": "true", - "prerender_new_tab_page_on_mouse_pressed_trigger": "true", - "prerender_start_delay_on_mouse_hover_ms": "300" - }, - "enable_features": [ - "NewTabPageTriggerForPrerender2" - ] - }, - { - "name": "OnlyMouseHover300ms_20240617", - "params": { - "prerender_new_tab_page_on_mouse_hover_trigger": "true", - "prerender_new_tab_page_on_mouse_pressed_trigger": "false", - "prerender_start_delay_on_mouse_hover_ms": "300" - }, - "enable_features": [ - "NewTabPageTriggerForPrerender2" - ] - }, - { - "name": "OnlyMouseHover200ms_20240617", - "params": { - "prerender_new_tab_page_on_mouse_hover_trigger": "true", - "prerender_new_tab_page_on_mouse_pressed_trigger": "false", - "prerender_start_delay_on_mouse_hover_ms": "200" - }, - "enable_features": [ - "NewTabPageTriggerForPrerender2" - ] - }, - { - "name": "OnlyMouseDown_20240617", - "params": { - "prerender_new_tab_page_on_mouse_hover_trigger": "false", - "prerender_new_tab_page_on_mouse_pressed_trigger": "true" - }, - "enable_features": [ - "NewTabPageTriggerForPrerender2" - ] - }, - { - "name": "Control_20240617", - "disable_features": [ - "NewTabPageTriggerForPrerender2" - ] - } - ] - } - ], "Prerender2WarmUpCompositor": [ { "platforms": [ @@ -17092,6 +17776,7 @@ { "name": "Enabled", "enable_features": [ + "PriceTrackingSubscriptionServiceLocaleKey", "ShoppingList" ] } @@ -17173,6 +17858,21 @@ ] } ], + "Printscanmgr": [ + { + "platforms": [ + "chromeos" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "AddPrinterViaPrintscanmgr" + ] + } + ] + } + ], "PrioritizeCompositingAfterDelay": [ { "platforms": [ @@ -17568,7 +18268,7 @@ ] } ], - "PrivacySandboxProactiveTopicsBlocking": [ + "PrivacySandboxPrivacyGuideAdTopics": [ { "platforms": [ "android", @@ -17582,7 +18282,7 @@ { "name": "Enabled", "enable_features": [ - "PrivacySandboxProactiveTopicsBlocking" + "PrivacySandboxPrivacyGuideAdTopics" ] } ] @@ -17936,7 +18636,7 @@ ] } ], - "ProtectedAudienceScoreAdRenderSize": [ + "ProtectedAudiencePreconnectCacheStudy": [ { "platforms": [ "android", @@ -17950,7 +18650,7 @@ { "name": "Enabled", "enable_features": [ - "RenderSizeInScoreAdBrowserSignals" + "FledgeUsePreconnectCache" ] } ] @@ -18099,11 +18799,12 @@ ] } ], - "PsRedesign": [ + "PsDualWritePrefsToNoticeStorage": [ { "platforms": [ "linux", "windows", + "android", "mac", "chromeos", "chromeos_lacros" @@ -18111,11 +18812,8 @@ "experiments": [ { "name": "Enabled", - "params": { - "enable-toggles": "true" - }, "enable_features": [ - "PsRedesignAdPrivacyPage" + "PsDualWritePrefsToNoticeStorage" ] } ] @@ -18279,6 +18977,26 @@ ] } ], + "RasterInducingScroll": [ + { + "platforms": [ + "android_webview", + "android", + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "RasterInducingScroll" + ] + } + ] + } + ], "RawDrawAndDrDc": [ { "platforms": [ @@ -18381,6 +19099,21 @@ ] } ], + "ReadAloudTapToSeek": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "ReadAloudTapToSeek" + ] + } + ] + } + ], "ReadAnythingDocsIntegrationRollout": [ { "platforms": [ @@ -18656,25 +19389,6 @@ ] } ], - "RelatedSearchesViaZPSPrefetchingDesktop": [ - { - "platforms": [ - "chromeos", - "chromeos_lacros", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "ExtractRelatedSearchesFromPrefetchedZPSResponse" - ] - } - ] - } - ], "RemotePageMetadataAndroid": [ { "platforms": [ @@ -19079,6 +19793,23 @@ ] } ], + "RoundedWindows": [ + { + "platforms": [ + "chromeos" + ], + "experiments": [ + { + "name": "RoundedWindowsEnabled", + "enable_features": [ + "ArcRoundedWindowCompat", + "FeatureManagementRoundedWindows", + "RoundedWindows" + ] + } + ] + } + ], "RubyLineBreakable": [ { "platforms": [ @@ -19238,19 +19969,6 @@ } ], "SafeBrowsingHashPrefixRealTimeLookups": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "SafeBrowsingHashPrefixRealTimeLookups" - ] - } - ] - }, { "platforms": [ "android_webview" @@ -19266,6 +19984,25 @@ ] } ], + "SafeBrowsingHashPrefixRealTimeLookupsFasterOhttpKeyRotation": [ + { + "platforms": [ + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "SafeBrowsingHashPrefixRealTimeLookupsFasterOhttpKeyRotation" + ] + } + ] + } + ], "SafeBrowsingNestedArchives": [ { "platforms": [ @@ -19285,21 +20022,6 @@ ] } ], - "SafeBrowsingNewGmsApiForLocalDatabaseCheck": [ - { - "platforms": [ - "android_webview" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "SafeBrowsingNewGmsApiForBrowseUrlDatabaseCheck" - ] - } - ] - } - ], "SafeBrowsingSevenZipEvaluationEnabled": [ { "platforms": [ @@ -19418,6 +20140,26 @@ ] } ], + "SavePasswordHashFromProfilePicker": [ + { + "platforms": [ + "chromeos", + "chromeos_lacros", + "fuchsia", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "SavePasswordHashFromProfilePicker" + ] + } + ] + } + ], "ScalableIphStudy": [ { "platforms": [ @@ -20584,14 +21326,16 @@ ], "experiments": [ { - "name": "EnabledSearchNavigationPrefetchAndTouchDownTrigger_20231110", + "name": "EnabledWith100CacheEntries_20240806", "params": { + "cache_size": "100", "navigation_prefetch_param": "op", "touch_down": "true" }, "enable_features": [ "OmniboxTouchDownTriggerForPrefetch", - "SearchNavigationPrefetch" + "SearchNavigationPrefetch", + "SearchPrefetchServicePrefetching" ] } ] @@ -20632,6 +21376,21 @@ ] } ], + "SecagentdEnableXDRFileEvents": [ + { + "platforms": [ + "chromeos" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "CrOSLateBootSecagentdXDRFileEvents" + ] + } + ] + } + ], "SecagentdEnableXDRNetworkEvents": [ { "platforms": [ @@ -20647,30 +21406,6 @@ ] } ], - "SecurityPageHats": [ - { - "platforms": [ - "chromeos", - "chromeos_lacros", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "params": { - "probability": "0.5", - "security-page-time": "15s", - "security-page-trigger-id": "c4dvJ3Sz70ugnJ3q1cK0SkwJZodD" - }, - "enable_features": [ - "HappinessTrackingSurveysForSecurityPage" - ] - } - ] - } - ], "SegmentationCompactionFix": [ { "platforms": [ @@ -20723,6 +21458,46 @@ ] } ], + "SelectFileOpenDocument": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "SelectFileOpenDocument" + ] + } + ] + } + ], + "SelectParserRelaxation": [ + { + "platforms": [ + "android", + "linux", + "mac", + "windows", + "chromeos" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "SelectParserRelaxation" + ] + }, + { + "name": "Disabled", + "disable_features": [ + "SelectParserRelaxation" + ] + } + ] + } + ], "SendTabToSelfV2": [ { "platforms": [ @@ -20796,7 +21571,6 @@ { "name": "Enabled", "params": { - "respect_navigation_preload": "true", "script_checksum_to_bypass": "144B3D5485B621F5896FD51D6A6FE66A07B6DBC3ACF6404748A833C2D592F900", "use_allowlist": "true" }, @@ -20871,17 +21645,21 @@ ] } ], - "ServiceWorkerStorageControl": [ + "ServiceWorkerStorageSuppressPostTask": [ { "platforms": [ - "android" + "android", + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" ], "experiments": [ { "name": "Enabled", "enable_features": [ - "ServiceWorkerStorageControlOnIOThread", - "ServiceWorkerStorageControlResponseQueue" + "ServiceWorkerStorageSuppressPostTask" ] } ] @@ -21521,6 +22299,7 @@ { "name": "Auto_Dogfood", "enable_features": [ + "DeleteOrphanLocalStorageOnStartup", "DeleteStaleLocalStorageOnStartup", "DeleteStaleSessionCookiesOnStartup", "EvictStaleQuotaStorage" @@ -21529,8 +22308,10 @@ { "name": "Opt_In_Dogfood", "enable_features": [ + "DeleteOrphanLocalStorageOnStartup", "DeleteStaleLocalStorageOnStartup", "DeleteStaleSessionCookiesOnStartup", + "EvictOrphanQuotaStorage", "EvictStaleQuotaStorage" ] } @@ -21616,65 +22397,6 @@ ] } ], - "StructuredMetricsExternalMetrics": [ - { - "platforms": [ - "chromeos" - ], - "experiments": [ - { - "name": "UploadCadence20ReadCadence5", - "params": { - "external_metrics_collection_interval_in_seconds": "300", - "upload_time_in_seconds": "1200" - }, - "enable_features": [ - "EnableStructuredMetrics", - "EnableStructuredMetricsService" - ] - }, - { - "name": "UploadCadence10ReadCadence3", - "params": { - "external_metrics_collection_interval_in_seconds": "180", - "upload_time_in_seconds": "600" - }, - "enable_features": [ - "EnableStructuredMetrics", - "EnableStructuredMetricsService" - ] - }, - { - "name": "UploadCadence20", - "params": { - "upload_time_in_seconds": "1200" - }, - "enable_features": [ - "EnableStructuredMetrics", - "EnableStructuredMetricsService" - ] - }, - { - "name": "StructuredMetricsExternalMetrics_100_20231027", - "params": { - "file_limit": "100" - }, - "enable_features": [ - "EnableStructuredMetrics" - ] - }, - { - "name": "StructuredMetricsExternalMetrics_70_20231027", - "params": { - "file_limit": "70" - }, - "enable_features": [ - "EnableStructuredMetrics" - ] - } - ] - } - ], "SuppressToolbarCaptures": [ { "platforms": [ @@ -21725,7 +22447,7 @@ ] } ], - "SuppressesLoadingPredictorOnSlowNetwork": [ + "SuppressesNetworkActivitiesOnSlowNetwork": [ { "platforms": [ "android", @@ -21737,12 +22459,37 @@ ], "experiments": [ { - "name": "Enabled", + "name": "SuppressesAll", "params": { - "slow_network_threshold": "208ms" + "slow_network_threshold": "208ms", + "slow_network_threshold_for_prerendering": "208ms", + "slow_network_threshold_for_search_prefetch": "208ms" }, "enable_features": [ - "SuppressesLoadingPredictorOnSlowNetwork" + "SuppressesLoadingPredictorOnSlowNetwork", + "SuppressesPrerenderingOnSlowNetwork", + "SuppressesSearchPrefetchOnSlowNetwork" + ] + } + ] + } + ], + "SyncEnableContactInfoDataTypeForChildUsers": [ + { + "platforms": [ + "android", + "chromeos", + "chromeos_lacros", + "ios", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "SyncEnableContactInfoDataTypeForChildUsers" ] } ] @@ -21819,6 +22566,31 @@ ] } ], + "SysUiHoldbackStudyM129": [ + { + "platforms": [ + "chromeos" + ], + "experiments": [ + { + "name": "Default", + "disable_features": [ + "SysUiShouldHoldbackDriveIntegration", + "SysUiShouldHoldbackFocusMode", + "SysUiShouldHoldbackForest" + ] + }, + { + "name": "EnrolledInHoldback", + "enable_features": [ + "SysUiShouldHoldbackDriveIntegration", + "SysUiShouldHoldbackFocusMode", + "SysUiShouldHoldbackForest" + ] + } + ] + } + ], "SystemEmojiPickerGIFSupportByDefault": [ { "platforms": [ @@ -21878,21 +22650,6 @@ } ], "TabGroupCreationDialogAndroid": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "TabGroupCreationDialogAndroid" - ] - } - ] - } - ], - "TabGroupParityAndroid": [ { "platforms": [ "android" @@ -21901,11 +22658,10 @@ { "name": "Enabled", "params": { - "skip_tab_group_creation_dialog": "true" + "show_tab_group_creation_dialog_setting": "true" }, "enable_features": [ - "TabGroupParityAndroid", - "TabStripGroupIndicatorsAndroid" + "TabGroupCreationDialogAndroid" ] } ] @@ -21920,6 +22676,10 @@ { "name": "Enabled", "enable_features": [ + "IPH_TabGroupSyncOnStrip", + "IPH_TabGroupsRemoteGroup", + "IPH_TabGroupsSurface", + "IPH_TabGroupsSurfaceOnHide", "TabGroupPaneAndroid", "TabGroupSyncAndroid", "TabStripGroupCollapseAndroid" @@ -22070,6 +22830,21 @@ ] } ], + "TabStripGroupContextMenuAndroid": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "TabStripGroupContextMenuAndroid" + ] + } + ] + } + ], "TabStripStartupRefactoring": [ { "platforms": [ @@ -22120,6 +22895,29 @@ ] } ], + "TemplateUrlReconciliation": [ + { + "platforms": [ + "android", + "android_weblayer", + "android_webview", + "chromeos", + "chromeos_lacros", + "fuchsia", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "TemplateUrlReconciliation" + ] + } + ] + } + ], "TextInputHostMojoCapabilityControlWorkaround": [ { "platforms": [ @@ -22178,28 +22976,6 @@ ] } ], - "ThirdPartyScriptDetection": [ - { - "platforms": [ - "android", - "chromeos", - "chromeos_lacros", - "fuchsia", - "linux", - "mac", - "windows", - "android_webview" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "ThirdPartyScriptDetection" - ] - } - ] - } - ], "ThreadCacheMinCachedMemoryForPurging": [ { "platforms": [ @@ -22302,7 +23078,6 @@ { "platforms": [ "android", - "android_webview", "chromeos", "chromeos_lacros", "linux", @@ -22375,22 +23150,6 @@ ] } ], - "TimerSlackMac": [ - { - "platforms": [ - "mac" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "AlignWakeUps", - "TimerSlackMac" - ] - } - ] - } - ], "ToolbarPinning": [ { "platforms": [ @@ -22431,27 +23190,6 @@ ] } ], - "TopLevelThirdPartyCookieDeprecationTrialService": [ - { - "platforms": [ - "android", - "chromeos", - "chromeos_lacros", - "fuchsia", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "TopLevelTpcdSupportSettings" - ] - } - ] - } - ], "TouchpadFastClickStudy": [ { "platforms": [ @@ -22542,6 +23280,27 @@ ] } ], + "TruncateLanguageDetectionSample": [ + { + "platforms": [ + "android", + "chromeos", + "chromeos_lacros", + "ios", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "TruncateLanguageDetectionSample" + ] + } + ] + } + ], "TrustSafetySentimentSurvey": [ { "platforms": [ @@ -22849,6 +23608,23 @@ ] } ], + "UnoDesktopM0Followup": [ + { + "platforms": [ + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "OutlineSilhouetteIcon" + ] + } + ] + } + ], "UnoDesktopM0Full": [ { "platforms": [ @@ -22876,6 +23652,7 @@ { "name": "Phase2", "enable_features": [ + "EnableBatchUploadFromSettings", "EnablePasswordsAccountStorageForNonSyncingUsers", "FeedBottomSyncStringRemoval", "HideSettingsSignInPromo", @@ -22937,6 +23714,26 @@ ] } ], + "UseAsyncOsCryptInLoginDatabase": [ + { + "platforms": [ + "android", + "chromeos", + "ios", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "UseAsyncOsCryptInLoginDatabase" + ] + } + ] + } + ], "UseBoringSSLForRandBytes": [ { "platforms": [ @@ -23124,7 +23921,9 @@ "platforms": [ "linux", "mac", - "windows" + "windows", + "chromeos", + "chromeos_lacros" ], "experiments": [ { @@ -23197,6 +23996,21 @@ ] } ], + "UseSCContentSharingPicker": [ + { + "platforms": [ + "mac" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "UseSCContentSharingPicker" + ] + } + ] + } + ], "UseSmartRefForGPUFenceHandle": [ { "platforms": [ @@ -23276,25 +24090,6 @@ ] } ], - "UserEducationV2Study": [ - { - "platforms": [ - "chromeos", - "chromeos_lacros", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "UserEducationExperienceVersion2" - ] - } - ] - } - ], "UserLevelMemoryPressureSignalOn4GbDevices": [ { "platforms": [ @@ -23766,60 +24561,6 @@ ] } ], - "V8Maglev": [ - { - "platforms": [ - "chromeos", - "chromeos_lacros", - "fuchsia", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "V8Maglev" - ] - } - ] - } - ], - "V8MaglevAndroid": [ - { - "platforms": [ - "android", - "android_weblayer", - "android_webview" - ], - "experiments": [ - { - "name": "MaglevAndTF", - "enable_features": [ - "V8Maglev", - "V8Turbofan" - ] - }, - { - "name": "MaglevAndNoTF", - "enable_features": [ - "V8Maglev" - ], - "disable_features": [ - "V8Turbofan" - ] - }, - { - "name": "NoMaglevAndNoTF", - "disable_features": [ - "V8Maglev", - "V8Turbofan" - ] - } - ] - } - ], "V8ScavengerHigherCapacity": [ { "platforms": [ @@ -23999,46 +24740,6 @@ ] } ], - "V8Turboshaft": [ - { - "platforms": [ - "android", - "chromeos", - "chromeos_lacros", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "V8Turboshaft" - ] - } - ] - } - ], - "V8TurboshaftInstructionSelection": [ - { - "platforms": [ - "android", - "chromeos", - "chromeos_lacros", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "V8TurboshaftInstructionSelection" - ] - } - ] - } - ], "V8UpdateLimitAfterLoading": [ { "platforms": [ @@ -24253,24 +24954,6 @@ ] } ], - "VariableRefreshRateBorealis": [ - { - "platforms": [ - "chromeos" - ], - "experiments": [ - { - "name": "Enabled", - "params": { - "ignore-availability": "false" - }, - "enable_features": [ - "EnableVariableRefreshRate" - ] - } - ] - } - ], "VerifyDidCommitParams": [ { "platforms": [ @@ -24472,28 +25155,23 @@ ] } ], - "Vulkan": [ + "VisitedURLRankingService": [ { "platforms": [ - "chromeos" + "android", + "ios", + "linux", + "mac", + "windows" ], "experiments": [ { - "name": "Enabled", + "name": "VisitedURLRankingService", + "params": { + "VisitedURLRankingFetchDurationInHoursParam": "168" + }, "enable_features": [ - "DefaultANGLEVulkan", - "Vulkan", - "VulkanFromANGLE" - ], - "hardware_classes": [ - "brya", - "dedede", - "guybrush", - "nissa", - "rex", - "skyrim", - "volteer", - "zork" + "VisitedURLRankingService" ] } ] @@ -24545,26 +25223,6 @@ ] } ], - "WaffleStudy": [ - { - "platforms": [ - "chromeos", - "chromeos_lacros" - ], - "experiments": [ - { - "name": "EnabledAllUsers", - "params": { - "for_tagged_profiles_only": "false", - "reprompt": "NO_REPROMPT" - }, - "enable_features": [ - "SearchEngineChoiceTrigger" - ] - } - ] - } - ], "WaitForLateScrollEvents": [ { "platforms": [ @@ -24682,6 +25340,33 @@ ] } ], + "WebAssemblyDeopt": [ + { + "platforms": [ + "android", + "android_webview", + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "WebAssemblyDeopt" + ] + }, + { + "name": "Control", + "disable_features": [ + "WebAssemblyDeopt" + ] + } + ] + } + ], "WebAssemblyGenericWrapper": [ { "platforms": [ @@ -24735,33 +25420,19 @@ ] } ], - "WebAuthenticationAndroidCredMan": [ + "WebAuthenticationEnclaveAuthenticator": [ { "platforms": [ - "android" + "mac", + "windows", + "linux" ], "experiments": [ { "name": "Enabled", "params": { - "min_gms_core_version_no_dots": "242300000" + "WebAuthenticationGpmPin": "true" }, - "enable_features": [ - "WebAuthenticationAndroidCredMan" - ] - } - ] - } - ], - "WebAuthenticationEnclaveAuthenticator": [ - { - "platforms": [ - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", "enable_features": [ "WebAuthenticationEnclaveAuthenticator" ] @@ -24912,25 +25583,6 @@ ] } ], - "WebProtectWatermark": [ - { - "platforms": [ - "chromeos", - "chromeos_lacros", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "EnableWatermarkView" - ] - } - ] - } - ], "WebRTC-Aec3BufferingMaxAllowedExcessRenderBlocksOverride": [ { "platforms": [ @@ -25573,6 +26225,22 @@ ] } ], + "WebViewFrameRateHints": [ + { + "platforms": [ + "android_webview" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "WebViewFrameRateHints" + ], + "min_os_version": "15.0.0" + } + ] + } + ], "WebViewIPProtectionPhase0": [ { "platforms": [ @@ -25592,21 +26260,6 @@ ] } ], - "WebViewPreloadClasses": [ - { - "platforms": [ - "android_webview" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "WebViewPreloadClasses" - ] - } - ] - } - ], "WebViewRecordAppDataDirectorySize": [ { "platforms": [ @@ -25905,6 +26558,21 @@ ] } ], + "WinSystemLocationPermission": [ + { + "platforms": [ + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "WinSystemLocationPermission" + ] + } + ] + } + ], "YieldWithInputHint": [ { "platforms": [ @@ -25920,26 +26588,16 @@ ] } ], - "ZPSPrefetchOnSRPWithDebouncingAndroid": [ + "ZPSPrefetchDebouncingDesktop": [ { "platforms": [ - "android" + "windows", + "mac", + "linux", + "chromeos", + "chromeos_lacros" ], "experiments": [ - { - "name": "Enabled_300ms_FromLastRun", - "params": { - "ZeroSuggestPrefetchDebounceDelay": "300", - "ZeroSuggestPrefetchDebounceFromLastRun": "true" - }, - "enable_features": [ - "ZeroSuggestPrefetchDebouncing", - "ZeroSuggestPrefetchingOnSRP" - ], - "disable_features": [ - "ZeroSuggestPrefetchingOnWeb" - ] - }, { "name": "Enabled_300ms_FromLastRequest", "params": { @@ -25947,31 +26605,61 @@ "ZeroSuggestPrefetchDebounceFromLastRun": "false" }, "enable_features": [ - "ZeroSuggestPrefetchDebouncing", - "ZeroSuggestPrefetchingOnSRP" - ], - "disable_features": [ - "ZeroSuggestPrefetchingOnWeb" + "ZeroSuggestPrefetchDebouncing" ] }, { - "name": "Enabled_600ms_FromLastRun", + "name": "Enabled_900ms_FromLastRun", "params": { - "ZeroSuggestPrefetchDebounceDelay": "600", + "ZeroSuggestPrefetchDebounceDelay": "900", "ZeroSuggestPrefetchDebounceFromLastRun": "true" }, "enable_features": [ - "ZeroSuggestPrefetchDebouncing", - "ZeroSuggestPrefetchingOnSRP" - ], - "disable_features": [ - "ZeroSuggestPrefetchingOnWeb" + "ZeroSuggestPrefetchDebouncing" + ] + } + ] + } + ], + "ZPSPrefetchDebouncingIOS": [ + { + "platforms": [ + "ios" + ], + "experiments": [ + { + "name": "Enabled_300ms_FromLastRequest", + "params": { + "ZeroSuggestPrefetchDebounceDelay": "300", + "ZeroSuggestPrefetchDebounceFromLastRun": "false" + }, + "enable_features": [ + "ZeroSuggestPrefetchDebouncing" ] }, { - "name": "Enabled_600ms_FromLastRequest", + "name": "Enabled_900ms_FromLastRun", "params": { - "ZeroSuggestPrefetchDebounceDelay": "600", + "ZeroSuggestPrefetchDebounceDelay": "900", + "ZeroSuggestPrefetchDebounceFromLastRun": "true" + }, + "enable_features": [ + "ZeroSuggestPrefetchDebouncing" + ] + } + ] + } + ], + "ZPSPrefetchOnSRPWithDebouncingAndroid": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled_300ms_FromLastRequest", + "params": { + "ZeroSuggestPrefetchDebounceDelay": "300", "ZeroSuggestPrefetchDebounceFromLastRun": "false" }, "enable_features": [ @@ -25997,16 +26685,12 @@ ] }, { - "name": "Enabled_900ms_FromLastRequest", - "params": { - "ZeroSuggestPrefetchDebounceDelay": "900", - "ZeroSuggestPrefetchDebounceFromLastRun": "false" - }, + "name": "Enabled_Prefetching_Only", "enable_features": [ - "ZeroSuggestPrefetchDebouncing", "ZeroSuggestPrefetchingOnSRP" ], "disable_features": [ + "ZeroSuggestPrefetchDebouncing", "ZeroSuggestPrefetchingOnWeb" ] } 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 11c5b6cb..3c01e6bc 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 @@ -3001,7 +3001,7 @@ enum WebFeature { kThirdPartyAccess = 3698, kThirdPartyActivation = 3699, kThirdPartyAccessAndActivation = 3700, - kFullscreenAllowedByScreensChange = 3701, + kOBSOLETE_FullscreenAllowedByScreensChange = 3701, kNewLayoutOverflowDifferentBlock = 3702, kNewLayoutOverflowDifferentFlex = 3703, kNewLayoutOverflowDifferentAndAlreadyScrollsBlock = 3704, @@ -3388,8 +3388,8 @@ enum WebFeature { kScriptWebBundle = 4074, // The items above roughly this point are available in the M97 branch. - kRunAdAuction = 4075, - kJoinAdInterestGroup = 4076, + kOBSOLETE_kRunAdAuction = 4075, + kOBSOLETE_kJoinAdInterestGroup = 4076, kFileSystemUrlNavigation = 4077, kV8Navigator_AdAuctionComponents_Method = 4078, kClientHintsUAFullVersionList = 4079, @@ -3613,8 +3613,8 @@ enum WebFeature { kTabSharingBarSwitchToCapturer = 4284, kTabSharingBarSwitchToCapturee = 4285, - kAutomaticLazyAds = 4286, - kAutomaticLazyEmbeds = 4287, + kOBSOLATE_AutomaticLazyAds = 4286, + kOBSOLATE_AutomaticLazyEmbeds = 4287, kOBSOLETE_TouchActionChangedAtPointerDown = 4288, kDeviceOrientationPermissionRequested = 4289, kDeviceOrientationUsedWithoutPermissionRequest = 4290, @@ -4063,7 +4063,7 @@ enum WebFeature { kStorageAccessAPI_requestStorageAccess_BeyondCookies_locks = 4706, kStorageAccessAPI_requestStorageAccess_BeyondCookies_locks_Use = 4707, kOBSOLETE_RubyElementWithDisplayBlockAndRt = 4708, - kCSSDeclarationAfterNestedRule = 4709, + kOBSOLETE_CSSDeclarationAfterNestedRule = 4709, kThirdPartyCookieAdAccessBlockByExperiment = 4710, // The items above roughly this point are available in the M120 branch. @@ -4354,7 +4354,7 @@ enum WebFeature { kV8AITextSession_PromptStreaming_Method = 4985, kV8AI_CanCreateTextSession_Method = 4986, kV8AI_CreateTextSession_Method = 4987, - kV8AI_DefaultTextSessionOptions_Method = 4988, + kOBSOLETE_V8AI_DefaultTextSessionOptions_Method = 4988, kV8AITextSession_Destroy_Method = 4989, kImportMapIntegrity = 4990, kSelectElementAppearanceNone = 4991, @@ -4404,7 +4404,40 @@ enum WebFeature { kWebGPUSubgroupsFeatures = 5035, kAudioContextOnError = 5036, kNoVarySearchPrerender = 5037, + kV8AITextSession_Clone_Method = 5038, + kGamepadHapticActuatorType = 5039, + kSelectionDirection = 5040, + kSelectionGetComposedRanges = 5041, + kEyeDropperOpen = 5042, kFlexNewColumnWrapIntrinsicSize = 5043, + kV8AI_TextModelInfo_Method = 5044, + kEventTimingSimulatedClickWithNoKeyboardInteraction = 5045, + kViewTransitionGroupNesting = 5046, + kV8LanguageDetector_Detect_Method = 5047, + kV8Translation_CanDetect_Method = 5048, + kV8Translation_CreateDetector_Method = 5049, + kV8AI_Summarizer_AttributeGetter = 5050, + kV8AISummarizer_Summarize_Method = 5051, + kV8AISummarizer_SummarizeStreaming_Method = 5052, + kV8AISummarizer_Destroy_Method = 5053, + kV8AISummarizerFactory_Capabilities_Method = 5054, + kV8AISummarizerFactory_Create_Method = 5055, + kSharedStorageWriteFromBidderGenerateBid = 5056, + kSharedStorageWriteFromBidderReportWin = 5057, + kSharedStorageWriteFromSellerScoreAd = 5058, + kSharedStorageWriteFromSellerReportResult = 5059, + kCSSInsetAreaProperty = 5060, + kStructuredCloneMethod = 5061, + kV8AI_Writer_AttributeGetter = 5062, + kV8AIWriterFactory_Create_Method = 5063, + kV8AIWriter_Write_Method = 5064, + kV8AIWriter_WriteStreaming_Method = 5065, + kV8AIWriter_Destroy_Method = 5066, + kV8AI_Rewriter_AttributeGetter = 5067, + kV8AIRewriterFactory_Create_Method = 5068, + kV8AIRewriter_Rewrite_Method = 5069, + kV8AIRewriter_RewriteStreaming_Method = 5070, + kV8AIRewriter_Destroy_Method = 5071, // 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 diff --git a/tools/under-control/src/third_party/blink/public/mojom/webpreferences/web_preferences.mojom b/tools/under-control/src/third_party/blink/public/mojom/webpreferences/web_preferences.mojom index 5560f0ff..9cfafc5d 100755 --- a/tools/under-control/src/third_party/blink/public/mojom/webpreferences/web_preferences.mojom +++ b/tools/under-control/src/third_party/blink/public/mojom/webpreferences/web_preferences.mojom @@ -408,10 +408,6 @@ struct WebPreferences { // policy. bool require_transient_activation_for_show_file_or_directory_picker; - // HTML Fullscreen (e.g. `Element.requestFullscreen()`)'s transient activation - // requirement can be bypassed via the "Automatic Fullscreen" content setting. - bool require_transient_activation_for_html_fullscreen; - // `navigator.subApps.{add|remove|list}()`'s user gesture and authorization // can be bypassed via // `SubAppsAPIsAllowedWithoutGestureAndAuthorizationForOrigins` policy. diff --git a/tools/under-control/src/third_party/blink/renderer/core/css/css_position_try_descriptors.idl b/tools/under-control/src/third_party/blink/renderer/core/css/css_position_try_descriptors.idl index 6c8f8c92..048ebf7b 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/css/css_position_try_descriptors.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/css/css_position_try_descriptors.idl @@ -4,7 +4,7 @@ // https://drafts.csswg.org/css-anchor-position-1/#om-position-try -[Exposed=Window, RuntimeEnabled=CSSAnchorPositioning] +[Exposed=Window] interface CSSPositionTryDescriptors : CSSStyleDeclaration { [SetterCallWith=ExecutionContext, RaisesException=Setter] attribute CSSOMString margin; [SetterCallWith=ExecutionContext, RaisesException=Setter] attribute CSSOMString marginTop; @@ -74,6 +74,9 @@ interface CSSPositionTryDescriptors : CSSStyleDeclaration { [SetterCallWith=ExecutionContext, RaisesException=Setter, ImplementedAs=justifySelf] attribute CSSOMString justify-self; [SetterCallWith=ExecutionContext, RaisesException=Setter] attribute CSSOMString positionAnchor; [SetterCallWith=ExecutionContext, RaisesException=Setter, ImplementedAs=positionAnchor] attribute CSSOMString position-anchor; - [SetterCallWith=ExecutionContext, RaisesException=Setter] attribute CSSOMString insetArea; - [SetterCallWith=ExecutionContext, RaisesException=Setter, ImplementedAs=insetArea] attribute CSSOMString inset-area; + [RuntimeEnabled=CSSPositionAreaProperty, SetterCallWith=ExecutionContext, RaisesException=Setter] attribute CSSOMString positionArea; + [RuntimeEnabled=CSSPositionAreaProperty, SetterCallWith=ExecutionContext, RaisesException=Setter, ImplementedAs=positionArea] attribute CSSOMString position-area; + // TODO(crbug.com/352360007): these can be removed when inset-area is removed. + [RuntimeEnabled=CSSInsetAreaProperty, SetterCallWith=ExecutionContext, RaisesException=Setter] attribute CSSOMString insetArea; + [RuntimeEnabled=CSSInsetAreaProperty, SetterCallWith=ExecutionContext, RaisesException=Setter, ImplementedAs=insetArea] attribute CSSOMString inset-area; }; diff --git a/tools/under-control/src/third_party/blink/renderer/core/css/css_position_try_rule.idl b/tools/under-control/src/third_party/blink/renderer/core/css/css_position_try_rule.idl index 4b4bee2a..5e8bcb58 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/css/css_position_try_rule.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/css/css_position_try_rule.idl @@ -4,7 +4,7 @@ // https://drafts.csswg.org/css-anchor-position-1/#idl-index -[Exposed=Window, RuntimeEnabled=CSSAnchorPositioning] +[Exposed=Window] interface CSSPositionTryRule : CSSRule { readonly attribute CSSOMString name; [SameObject, PutForwards=cssText] readonly attribute CSSStyleDeclaration style; diff --git a/tools/under-control/src/third_party/blink/renderer/core/css/css_style_sheet_init.idl b/tools/under-control/src/third_party/blink/renderer/core/css/css_style_sheet_init.idl index 001278c9..07beceba 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/css/css_style_sheet_init.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/css/css_style_sheet_init.idl @@ -4,7 +4,6 @@ dictionary CSSStyleSheetInit { (MediaList or DOMString) media = ""; - DOMString title = ""; boolean alternate = false; boolean disabled = false; }; diff --git a/tools/under-control/src/third_party/blink/renderer/core/dom/aria_attributes.idl b/tools/under-control/src/third_party/blink/renderer/core/dom/aria_attributes.idl index 6c0777aa..e384f2d8 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/dom/aria_attributes.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/dom/aria_attributes.idl @@ -6,50 +6,50 @@ // which is defined in AriaRelationshipAttributes. // https://w3c.github.io/aria/#idl-interface interface mixin AriaAttributes { - [CEReactions, Reflect=aria_atomic] attribute DOMString? ariaAtomic; - [CEReactions, Reflect=aria_autocomplete] attribute DOMString? ariaAutoComplete; - [CEReactions, Reflect=aria_busy] attribute DOMString? ariaBusy; - [CEReactions, Reflect=aria_braillelabel] attribute DOMString? ariaBrailleLabel; - [CEReactions, Reflect=aria_brailleroledescription] attribute DOMString? ariaBrailleRoleDescription; - [CEReactions, Reflect=aria_checked] attribute DOMString? ariaChecked; - [CEReactions, Reflect=aria_colcount] attribute DOMString? ariaColCount; - [CEReactions, Reflect=aria_colindex] attribute DOMString? ariaColIndex; - [RuntimeEnabled=AriaRowColIndexText, CEReactions, Reflect=aria_colindextext] attribute DOMString? ariaColIndexText; - [CEReactions, Reflect=aria_colspan] attribute DOMString? ariaColSpan; - [CEReactions, Reflect=aria_current] attribute DOMString? ariaCurrent; - [CEReactions, Reflect=aria_description] attribute DOMString? ariaDescription; - [CEReactions, Reflect=aria_disabled] attribute DOMString? ariaDisabled; - [CEReactions, Reflect=aria_expanded] attribute DOMString? ariaExpanded; - [CEReactions, Reflect=aria_haspopup] attribute DOMString? ariaHasPopup; - [CEReactions, Reflect=aria_hidden] attribute DOMString? ariaHidden; - [CEReactions, Reflect=aria_invalid] attribute DOMString? ariaInvalid; - [CEReactions, Reflect=aria_keyshortcuts] attribute DOMString? ariaKeyShortcuts; - [CEReactions, Reflect=aria_label] attribute DOMString? ariaLabel; - [CEReactions, Reflect=aria_level] attribute DOMString? ariaLevel; - [CEReactions, Reflect=aria_live] attribute DOMString? ariaLive; - [CEReactions, Reflect=aria_modal] attribute DOMString? ariaModal; - [CEReactions, Reflect=aria_multiline] attribute DOMString? ariaMultiLine; - [CEReactions, Reflect=aria_multiselectable] attribute DOMString? ariaMultiSelectable; - [CEReactions, Reflect=aria_orientation] attribute DOMString? ariaOrientation; - [CEReactions, Reflect=aria_placeholder] attribute DOMString? ariaPlaceholder; - [CEReactions, Reflect=aria_posinset] attribute DOMString? ariaPosInSet; - [CEReactions, Reflect=aria_pressed] attribute DOMString? ariaPressed; - [CEReactions, Reflect=aria_readonly] attribute DOMString? ariaReadOnly; - [CEReactions, Reflect=aria_relevant] attribute DOMString? ariaRelevant; - [CEReactions, Reflect=aria_required] attribute DOMString? ariaRequired; - [CEReactions, Reflect=aria_roledescription] attribute DOMString? ariaRoleDescription; - [CEReactions, Reflect=aria_rowcount] attribute DOMString? ariaRowCount; - [CEReactions, Reflect=aria_rowindex] attribute DOMString? ariaRowIndex; - [RuntimeEnabled=AriaRowColIndexText, CEReactions, Reflect=aria_rowindextext] attribute DOMString? ariaRowIndexText; - [CEReactions, Reflect=aria_rowspan] attribute DOMString? ariaRowSpan; - [CEReactions, Reflect=aria_selected] attribute DOMString? ariaSelected; - [CEReactions, Reflect=aria_setsize] attribute DOMString? ariaSetSize; - [CEReactions, Reflect=aria_sort] attribute DOMString? ariaSort; - [CEReactions, Reflect=aria_valuemax] attribute DOMString? ariaValueMax; - [CEReactions, Reflect=aria_valuemin] attribute DOMString? ariaValueMin; - [CEReactions, Reflect=aria_valuenow] attribute DOMString? ariaValueNow; - [CEReactions, Reflect=aria_valuetext] attribute DOMString? ariaValueText; - [RuntimeEnabled=AccessibilityAriaVirtualContent, CEReactions, Reflect=aria_virtualcontent] attribute DOMString? ariaVirtualContent; + [CEReactions, MeasureAs="WebDXFeature::kAriaAttributeReflection", Reflect=aria_atomic] attribute DOMString? ariaAtomic; + [CEReactions, MeasureAs="WebDXFeature::kAriaAttributeReflection", Reflect=aria_autocomplete] attribute DOMString? ariaAutoComplete; + [CEReactions, MeasureAs="WebDXFeature::kAriaAttributeReflection", Reflect=aria_busy] attribute DOMString? ariaBusy; + [CEReactions, MeasureAs="WebDXFeature::kAriaAttributeReflection", Reflect=aria_braillelabel] attribute DOMString? ariaBrailleLabel; + [CEReactions, MeasureAs="WebDXFeature::kAriaAttributeReflection", Reflect=aria_brailleroledescription] attribute DOMString? ariaBrailleRoleDescription; + [CEReactions, MeasureAs="WebDXFeature::kAriaAttributeReflection", Reflect=aria_checked] attribute DOMString? ariaChecked; + [CEReactions, MeasureAs="WebDXFeature::kAriaAttributeReflection", Reflect=aria_colcount] attribute DOMString? ariaColCount; + [CEReactions, MeasureAs="WebDXFeature::kAriaAttributeReflection", Reflect=aria_colindex] attribute DOMString? ariaColIndex; + [RuntimeEnabled=AriaRowColIndexText, CEReactions, MeasureAs="WebDXFeature::kAriaAttributeReflection", Reflect=aria_colindextext] attribute DOMString? ariaColIndexText; + [CEReactions, MeasureAs="WebDXFeature::kAriaAttributeReflection", Reflect=aria_colspan] attribute DOMString? ariaColSpan; + [CEReactions, MeasureAs="WebDXFeature::kAriaAttributeReflection", Reflect=aria_current] attribute DOMString? ariaCurrent; + [CEReactions, MeasureAs="WebDXFeature::kAriaAttributeReflection", Reflect=aria_description] attribute DOMString? ariaDescription; + [CEReactions, MeasureAs="WebDXFeature::kAriaAttributeReflection", Reflect=aria_disabled] attribute DOMString? ariaDisabled; + [CEReactions, MeasureAs="WebDXFeature::kAriaAttributeReflection", Reflect=aria_expanded] attribute DOMString? ariaExpanded; + [CEReactions, MeasureAs="WebDXFeature::kAriaAttributeReflection", Reflect=aria_haspopup] attribute DOMString? ariaHasPopup; + [CEReactions, MeasureAs="WebDXFeature::kAriaAttributeReflection", Reflect=aria_hidden] attribute DOMString? ariaHidden; + [CEReactions, MeasureAs="WebDXFeature::kAriaAttributeReflection", Reflect=aria_invalid] attribute DOMString? ariaInvalid; + [CEReactions, MeasureAs="WebDXFeature::kAriaAttributeReflection", Reflect=aria_keyshortcuts] attribute DOMString? ariaKeyShortcuts; + [CEReactions, MeasureAs="WebDXFeature::kAriaAttributeReflection", Reflect=aria_label] attribute DOMString? ariaLabel; + [CEReactions, MeasureAs="WebDXFeature::kAriaAttributeReflection", Reflect=aria_level] attribute DOMString? ariaLevel; + [CEReactions, MeasureAs="WebDXFeature::kAriaAttributeReflection", Reflect=aria_live] attribute DOMString? ariaLive; + [CEReactions, MeasureAs="WebDXFeature::kAriaAttributeReflection", Reflect=aria_modal] attribute DOMString? ariaModal; + [CEReactions, MeasureAs="WebDXFeature::kAriaAttributeReflection", Reflect=aria_multiline] attribute DOMString? ariaMultiLine; + [CEReactions, MeasureAs="WebDXFeature::kAriaAttributeReflection", Reflect=aria_multiselectable] attribute DOMString? ariaMultiSelectable; + [CEReactions, MeasureAs="WebDXFeature::kAriaAttributeReflection", Reflect=aria_orientation] attribute DOMString? ariaOrientation; + [CEReactions, MeasureAs="WebDXFeature::kAriaAttributeReflection", Reflect=aria_placeholder] attribute DOMString? ariaPlaceholder; + [CEReactions, MeasureAs="WebDXFeature::kAriaAttributeReflection", Reflect=aria_posinset] attribute DOMString? ariaPosInSet; + [CEReactions, MeasureAs="WebDXFeature::kAriaAttributeReflection", Reflect=aria_pressed] attribute DOMString? ariaPressed; + [CEReactions, MeasureAs="WebDXFeature::kAriaAttributeReflection", Reflect=aria_readonly] attribute DOMString? ariaReadOnly; + [CEReactions, MeasureAs="WebDXFeature::kAriaAttributeReflection", Reflect=aria_relevant] attribute DOMString? ariaRelevant; + [CEReactions, MeasureAs="WebDXFeature::kAriaAttributeReflection", Reflect=aria_required] attribute DOMString? ariaRequired; + [CEReactions, MeasureAs="WebDXFeature::kAriaAttributeReflection", Reflect=aria_roledescription] attribute DOMString? ariaRoleDescription; + [CEReactions, MeasureAs="WebDXFeature::kAriaAttributeReflection", Reflect=aria_rowcount] attribute DOMString? ariaRowCount; + [CEReactions, MeasureAs="WebDXFeature::kAriaAttributeReflection", Reflect=aria_rowindex] attribute DOMString? ariaRowIndex; + [RuntimeEnabled=AriaRowColIndexText, CEReactions, MeasureAs="WebDXFeature::kAriaAttributeReflection", Reflect=aria_rowindextext] attribute DOMString? ariaRowIndexText; + [CEReactions, MeasureAs="WebDXFeature::kAriaAttributeReflection", Reflect=aria_rowspan] attribute DOMString? ariaRowSpan; + [CEReactions, MeasureAs="WebDXFeature::kAriaAttributeReflection", Reflect=aria_selected] attribute DOMString? ariaSelected; + [CEReactions, MeasureAs="WebDXFeature::kAriaAttributeReflection", Reflect=aria_setsize] attribute DOMString? ariaSetSize; + [CEReactions, MeasureAs="WebDXFeature::kAriaAttributeReflection", Reflect=aria_sort] attribute DOMString? ariaSort; + [CEReactions, MeasureAs="WebDXFeature::kAriaAttributeReflection", Reflect=aria_valuemax] attribute DOMString? ariaValueMax; + [CEReactions, MeasureAs="WebDXFeature::kAriaAttributeReflection", Reflect=aria_valuemin] attribute DOMString? ariaValueMin; + [CEReactions, MeasureAs="WebDXFeature::kAriaAttributeReflection", Reflect=aria_valuenow] attribute DOMString? ariaValueNow; + [CEReactions, MeasureAs="WebDXFeature::kAriaAttributeReflection", Reflect=aria_valuetext] attribute DOMString? ariaValueText; + [RuntimeEnabled=AccessibilityAriaVirtualContent, CEReactions, MeasureAs="WebDXFeature::kAriaAttributeReflection", Reflect=aria_virtualcontent] attribute DOMString? ariaVirtualContent; }; Element includes AriaAttributes; 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 e990d929..47f56ad0 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 @@ -144,7 +144,7 @@ dictionary CheckVisibilityOptions { [RuntimeEnabled=StandardizedBrowserZoom] readonly attribute double currentCSSZoom; // Used by both Anchor Positioning and Popover - [CEReactions,RuntimeEnabled=HTMLAnchorAttribute] attribute Element? anchorElement; + [CEReactions,RuntimeEnabled=HTMLAnchorAttribute,ImplementedAs=anchorElementForBinding] attribute Element? anchorElement; // Non-standard API [MeasureAs=ElementScrollIntoViewIfNeeded] void scrollIntoViewIfNeeded(optional boolean centerIfNeeded); diff --git a/tools/under-control/src/third_party/blink/renderer/core/dom/events/event_target.idl b/tools/under-control/src/third_party/blink/renderer/core/dom/events/event_target.idl index 85769987..c85efe46 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/dom/events/event_target.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/dom/events/event_target.idl @@ -32,5 +32,5 @@ dictionary ObservableEventListenerOptions { void addEventListener(DOMString type, EventListener? listener, optional (AddEventListenerOptions or boolean) options); void removeEventListener(DOMString type, EventListener? listener, optional (EventListenerOptions or boolean) options); [ImplementedAs=dispatchEventForBindings, RaisesException, RuntimeCallStatsCounter=EventTargetDispatchEvent] boolean dispatchEvent(Event event); - [MeasureAs=EventTargetOnObservable, RuntimeEnabled=ObservableAPI] Observable on(DOMString type, optional ObservableEventListenerOptions options = {}); + [MeasureAs=EventTargetOnObservable, RuntimeEnabled=ObservableAPI] Observable when(DOMString type, optional ObservableEventListenerOptions 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 d8b68314..88c64b65 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 @@ -56,6 +56,12 @@ interface ShadowRoot : DocumentFragment { // cloned by DOM cloning operations. readonly attribute boolean clonable; + // The referenceTarget attribute is the ID of an element in the shadow tree. + // When the host element is the target of an IDREF attribute like + // aria-activedescendant, the reference resolves to the referenceTarget. + // See https://crbug.com/346835896 + [RuntimeEnabled=ShadowRootReferenceTarget] attribute DOMString referenceTarget; + // Scoped element creation APIs // https://wicg.github.io/webcomponents/proposals/Scoped-Custom-Element-Registries#scoped-element-creation-apis [ diff --git a/tools/under-control/src/third_party/blink/renderer/core/editing/get_composed_ranges_options.idl b/tools/under-control/src/third_party/blink/renderer/core/editing/get_composed_ranges_options.idl new file mode 100755 index 00000000..05ad6de3 --- /dev/null +++ b/tools/under-control/src/third_party/blink/renderer/core/editing/get_composed_ranges_options.idl @@ -0,0 +1,7 @@ + +// 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 GetComposedRangesOptions { + sequence shadowRoots = []; +}; diff --git a/tools/under-control/src/third_party/blink/renderer/core/editing/selection.idl b/tools/under-control/src/third_party/blink/renderer/core/editing/selection.idl index 17689f4b..025dc252 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/editing/selection.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/editing/selection.idl @@ -58,7 +58,8 @@ [MeasureAs=SelectionContainsNode] boolean containsNode(Node node, optional boolean allowPartialContainment = false); [MeasureAs=SelectionDOMString] stringifier; - [RuntimeEnabled=SelectionAcrossShadowDOM] readonly attribute DOMString direction; + [MeasureAs=SelectionDirection, RuntimeEnabled=SelectionAcrossShadowDOM] readonly attribute DOMString direction; + [MeasureAs=SelectionGetComposedRanges, RuntimeEnabled=SelectionAcrossShadowDOM] sequence getComposedRanges(optional GetComposedRangesOptions options = {}); // Non-standard APIs diff --git a/tools/under-control/src/third_party/blink/renderer/core/events/event_type_names.json5 b/tools/under-control/src/third_party/blink/renderer/core/events/event_type_names.json5 index 988721dc..503ca009 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/events/event_type_names.json5 +++ b/tools/under-control/src/third_party/blink/renderer/core/events/event_type_names.json5 @@ -275,6 +275,8 @@ "resourcetimingbufferfull", "result", "resume", + "rtcrtptransportprocessor", + "rtctransform", "samplebufferfull", "screenschange", "scroll", diff --git a/tools/under-control/src/third_party/blink/renderer/core/events/pointer_event.idl b/tools/under-control/src/third_party/blink/renderer/core/events/pointer_event.idl index 7f82ae8c..1a0cac44 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/events/pointer_event.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/events/pointer_event.idl @@ -23,6 +23,6 @@ [Measure, RuntimeEnabled=PointerEventDeviceId] readonly attribute long persistentDeviceId; // https://w3c.github.io/pointerevents/extension.html#extensions-to-the-pointerevent-interface - [Measure] sequence getCoalescedEvents(); + [Measure, SecureContext] sequence getCoalescedEvents(); [Measure] sequence getPredictedEvents(); }; 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 36bd7ee7..42b00bd0 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 @@ -401,7 +401,7 @@ ui::mojom::blink::WindowOpenDisposition NavigationPolicyToDisposition( case kNavigationPolicyPictureInPicture: return ui::mojom::blink::WindowOpenDisposition::NEW_PICTURE_IN_PICTURE; case kNavigationPolicyLinkPreview: - NOTREACHED_NORETURN(); + NOTREACHED(); } NOTREACHED_IN_MIGRATION() << "Unexpected NavigationPolicy"; return ui::mojom::blink::WindowOpenDisposition::IGNORE_ACTION; @@ -477,6 +477,17 @@ void ForEachFrameWidgetControlledByView( } } +void MaybePreloadSystemFonts(Page* page) { + static bool is_first_run = true; + if (!is_first_run) { + return; + } + is_first_run = false; + + page->GetAgentGroupScheduler().DefaultTaskRunner()->PostTask( + FROM_HERE, WTF::BindOnce([]() { FontCache::MaybePreloadSystemFonts(); })); +} + } // namespace // WebView ---------------------------------------------------------------- @@ -666,11 +677,6 @@ WebViewImpl::~WebViewImpl() { DCHECK(!page_); } -WebDevToolsAgentImpl* WebViewImpl::MainFrameDevToolsAgentImpl() { - WebLocalFrameImpl* main_frame = MainFrameImpl(); - return main_frame ? main_frame->DevToolsAgentImpl() : nullptr; -} - void WebViewImpl::SetTabKeyCyclesThroughElements(bool value) { if (page_) page_->SetTabKeyCyclesThroughElements(value); @@ -1789,8 +1795,6 @@ void WebView::ApplyWebPreferences(const web_pref::WebPreferences& prefs, prefs.require_transient_activation_for_get_display_media); settings->SetRequireTransientActivationForShowFileOrDirectoryPicker( prefs.require_transient_activation_for_show_file_or_directory_picker); - settings->SetRequireTransientActivationForHtmlFullscreen( - prefs.require_transient_activation_for_html_fullscreen); settings->SetViewportEnabled(prefs.viewport_enabled); settings->SetViewportMetaEnabled(prefs.viewport_meta_enabled); settings->SetViewportStyle(prefs.viewport_style); @@ -2309,31 +2313,11 @@ double WebViewImpl::ClampZoomLevel(double zoom_level) const { std::min(maximum_zoom_level_, zoom_level)); } -double WebViewImpl::ZoomLevelToZoomFactor(double zoom_level, - bool for_main_frame) const { - double zoom_factor = blink::ZoomLevelToZoomFactor(zoom_level); - if (for_main_frame && zoom_factor_override_) { - zoom_factor = zoom_factor_override_; +double WebViewImpl::ZoomLevelToZoomFactor(double zoom_level) const { + if (zoom_factor_override_) { + return zoom_factor_override_; } - if (zoom_factor_for_device_scale_factor_) { - if (compositor_device_scale_factor_override_) { - zoom_factor *= compositor_device_scale_factor_override_; - } else { - zoom_factor *= zoom_factor_for_device_scale_factor_; - } - } - return zoom_factor; -} - -double WebViewImpl::ZoomFactorToZoomLevel(double zoom_factor) const { - if (zoom_factor_for_device_scale_factor_) { - if (compositor_device_scale_factor_override_) { - zoom_factor /= compositor_device_scale_factor_override_; - } else { - zoom_factor /= zoom_factor_for_device_scale_factor_; - } - } - return blink::ZoomFactorToZoomLevel(zoom_factor); + return blink::ZoomLevelToZoomFactor(zoom_level); } void WebViewImpl::UpdateWidgetZoomFactors() { @@ -2343,14 +2327,12 @@ void WebViewImpl::UpdateWidgetZoomFactors() { } void WebViewImpl::UpdateInspectorDeviceScaleFactorOverride() { - if (zoom_factor_for_device_scale_factor_) { - if (compositor_device_scale_factor_override_) { - page_->SetInspectorDeviceScaleFactorOverride( - zoom_factor_for_device_scale_factor_ / - compositor_device_scale_factor_override_); - } else { - page_->SetInspectorDeviceScaleFactorOverride(1.0f); - } + if (compositor_device_scale_factor_override_) { + page_->SetInspectorDeviceScaleFactorOverride( + zoom_factor_for_device_scale_factor_ / + compositor_device_scale_factor_override_); + } else { + page_->SetInspectorDeviceScaleFactorOverride(1.0f); } } @@ -2948,6 +2930,10 @@ void WebViewImpl::UpdatePageDefinedViewportConstraints( } UpdateMainFrameLayoutSize(); + + if (RuntimeEnabledFeatures::ViewportChangesUpdateTextAutosizingEnabled()) { + TextAutosizer::UpdatePageInfoInAllFrames(GetPage()->MainFrame()); + } } void WebViewImpl::UpdateMainFrameLayoutSize() { @@ -3079,12 +3065,17 @@ void WebViewImpl::Show(const LocalFrameToken& opener_frame_token, window_features->has_width = web_window_features.width_set; window_features->has_height = web_window_features.height_set; window_features->is_popup = web_window_features.is_popup; + window_features->is_partitioned_popin = + web_window_features.is_partitioned_popin; local_main_frame_host_remote_->ShowCreatedWindow( opener_frame_token, NavigationPolicyToDisposition(policy), std::move(window_features), opened_by_user_gesture, WTF::BindOnce(&WebViewImpl::DidShowCreatedWindow, WTF::Unretained(this))); - MainFrameDevToolsAgentImpl()->DidShowNewWindow(); + if (auto* dev_tools_agent = + MainFrameImpl()->DevToolsAgentImpl(/*create_if_necessary=*/false)) { + dev_tools_agent->DidShowNewWindow(); + } } void WebViewImpl::DidShowCreatedWindow() { @@ -3254,10 +3245,8 @@ void WebViewImpl::SetCompositorDeviceScaleFactorOverride( float device_scale_factor) { if (compositor_device_scale_factor_override_ != device_scale_factor) { compositor_device_scale_factor_override_ = device_scale_factor; - if (zoom_factor_for_device_scale_factor_) { - UpdateWidgetZoomFactors(); - UpdateInspectorDeviceScaleFactorOverride(); - } + UpdateWidgetZoomFactors(); + UpdateInspectorDeviceScaleFactorOverride(); } } @@ -3555,6 +3544,8 @@ void WebViewImpl::UpdateRendererPreferences( renderer_preferences_.prefixed_fullscreen_video_api_availability .value()); } + + MaybePreloadSystemFonts(GetPage()); } void WebViewImpl::SetHistoryOffsetAndLength(int32_t history_offset, @@ -4075,6 +4066,10 @@ bool WebViewImpl::SupportsDraggableRegions() { } void WebViewImpl::DraggableRegionsChanged() { + if (!MainFrameImpl()) { + return; + } + WebVector web_regions = MainFrameImpl()->GetDocument().DraggableRegions(); diff --git a/tools/under-control/src/third_party/blink/renderer/core/frame/selector_directive.idl b/tools/under-control/src/third_party/blink/renderer/core/frame/selector_directive.idl index 4f230f7d..fe7735d0 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/frame/selector_directive.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/frame/selector_directive.idl @@ -7,5 +7,5 @@ Exposed=Window, RuntimeEnabled=TextFragmentAPI ] interface SelectorDirective : Directive { - [CallWith=ScriptState, NewObject] Promise getMatchingRange(); + [CallWith=ScriptState, NewObject, RaisesException] Promise getMatchingRange(); }; 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 af6df223..cc212e07 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 @@ -976,14 +976,6 @@ initial: true, }, - // HTML Fullscreen (e.g. `Element.requestFullscreen()`)'s transient - // activation requirement can be bypassed via the "Automatic Fullscreen" - // content setting. - { - name: "requireTransientActivationForHtmlFullscreen", - initial: true, - }, - // // Dark mode // diff --git a/tools/under-control/src/third_party/blink/renderer/core/frame/window_or_worker_global_scope.idl b/tools/under-control/src/third_party/blink/renderer/core/frame/window_or_worker_global_scope.idl index 9176dc3e..ae20a439 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/frame/window_or_worker_global_scope.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/frame/window_or_worker_global_scope.idl @@ -38,5 +38,5 @@ [RuntimeEnabled=CoepReflection] readonly attribute DOMString crossOriginEmbedderPolicy; - [RaisesException, CallWith=ScriptState] any structuredClone(any value, optional StructuredSerializeOptions options = {}); + [RaisesException, CallWith=ScriptState, MeasureAs=StructuredCloneMethod] any structuredClone(any value, optional StructuredSerializeOptions options = {}); }; diff --git a/tools/under-control/src/third_party/blink/renderer/core/html/canvas/text_metrics.idl b/tools/under-control/src/third_party/blink/renderer/core/html/canvas/text_metrics.idl index ca9db213..75c2f73e 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/html/canvas/text_metrics.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/html/canvas/text_metrics.idl @@ -37,9 +37,9 @@ interface TextMetrics { readonly attribute double fontBoundingBoxDescent; readonly attribute double actualBoundingBoxAscent; readonly attribute double actualBoundingBoxDescent; - [RuntimeEnabled=TextMetricsBaselines] readonly attribute double hangingBaseline; - [RuntimeEnabled=TextMetricsBaselines] readonly attribute double alphabeticBaseline; - [RuntimeEnabled=TextMetricsBaselines] readonly attribute double ideographicBaseline; + [RuntimeEnabled=TextMetricsBaselines, MeasureAs="WebDXFeature::kCanvasTextBaselines"] readonly attribute double hangingBaseline; + [RuntimeEnabled=TextMetricsBaselines, MeasureAs="WebDXFeature::kCanvasTextBaselines"] readonly attribute double alphabeticBaseline; + [RuntimeEnabled=TextMetricsBaselines, MeasureAs="WebDXFeature::kCanvasTextBaselines"] readonly attribute double ideographicBaseline; [RuntimeEnabled=ExtendedTextMetrics] readonly attribute double emHeightAscent; [RuntimeEnabled=ExtendedTextMetrics] readonly attribute double emHeightDescent; diff --git a/tools/under-control/src/third_party/blink/renderer/core/html/fenced_frame/fenced_frame_config.idl b/tools/under-control/src/third_party/blink/renderer/core/html/fenced_frame/fenced_frame_config.idl index c3148702..4f052219 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/html/fenced_frame/fenced_frame_config.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/html/fenced_frame/fenced_frame_config.idl @@ -14,7 +14,5 @@ interface FencedFrameConfig { // For more information on why this is needed please see: // https://github.com/WICG/fenced-frame/issues/48#issuecomment-1245809738 [RuntimeEnabled=FencedFramesDefaultMode] constructor(USVString url); - readonly attribute FencedFrameConfigSize? width; - readonly attribute FencedFrameConfigSize? height; void setSharedStorageContext(DOMString contextString); }; diff --git a/tools/under-control/src/third_party/blink/renderer/core/html/forms/html_input_element.idl b/tools/under-control/src/third_party/blink/renderer/core/html/forms/html_input_element.idl index 9975c26b..25711d47 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/html/forms/html_input_element.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/html/forms/html_input_element.idl @@ -46,7 +46,7 @@ enum SelectionMode { "select", "start", "end", "preserve" }; [CEReactions, Reflect] attribute DOMString formTarget; [CEReactions] attribute unsigned long height; attribute boolean indeterminate; - readonly attribute HTMLElement? list; + [ImplementedAs=listForBinding] readonly attribute HTMLElement? list; [CEReactions, Reflect] attribute DOMString max; [CEReactions, RaisesException=Setter] attribute long maxLength; [CEReactions, Reflect] attribute DOMString min; diff --git a/tools/under-control/src/third_party/blink/renderer/core/html/forms/html_label_element.idl b/tools/under-control/src/third_party/blink/renderer/core/html/forms/html_label_element.idl index 24d8fca6..e7ea73f3 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/html/forms/html_label_element.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/html/forms/html_label_element.idl @@ -25,5 +25,5 @@ ] interface HTMLLabelElement : HTMLElement { readonly attribute HTMLFormElement? form; [CEReactions, Reflect=for] attribute DOMString htmlFor; - readonly attribute HTMLElement? control; + [ImplementedAs=controlForBinding] readonly attribute HTMLElement? control; }; diff --git a/tools/under-control/src/third_party/blink/renderer/core/html/forms/html_select_element.idl b/tools/under-control/src/third_party/blink/renderer/core/html/forms/html_select_element.idl index 124c9265..6fb52d10 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/html/forms/html_select_element.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/html/forms/html_select_element.idl @@ -60,4 +60,6 @@ // https://html.spec.whatwg.org/multipage/input.html#dom-select-showpicker [RaisesException, RuntimeEnabled=HTMLSelectElementShowPicker] void showPicker(); + + [RuntimeEnabled=StylableSelect] attribute HTMLSelectedOptionElement? selectedOptionElement; }; diff --git a/tools/under-control/src/third_party/blink/renderer/core/html/forms/html_selected_option_element.idl b/tools/under-control/src/third_party/blink/renderer/core/html/forms/html_selected_option_element.idl new file mode 100755 index 00000000..3a5d481d --- /dev/null +++ b/tools/under-control/src/third_party/blink/renderer/core/html/forms/html_selected_option_element.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. + +[ + Exposed=Window, + HTMLConstructor, + RuntimeEnabled=StylableSelect +] interface HTMLSelectedOptionElement : HTMLElement {}; diff --git a/tools/under-control/src/third_party/blink/renderer/core/html/html_iframe_element.idl b/tools/under-control/src/third_party/blink/renderer/core/html/html_iframe_element.idl index 950bc1d0..d50ad296 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/html/html_iframe_element.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/html/html_iframe_element.idl @@ -60,7 +60,7 @@ [RuntimeEnabled=TopicsAPI, SecureContext, CEReactions, Reflect] attribute boolean browsingTopics; // Protected Audience (https://wicg.github.io/turtledove) - [RuntimeEnabled=FledgeNegativeTargeting, SecureContext, CEReactions, Reflect] attribute boolean adAuctionHeaders; + [SecureContext, CEReactions, Reflect] attribute boolean adAuctionHeaders; // Iframes credentialless // https://github.com/WICG/anonymous-iframe diff --git a/tools/under-control/src/third_party/blink/renderer/core/scheduler/scheduler.idl b/tools/under-control/src/third_party/blink/renderer/core/scheduler/scheduler.idl index 385ff296..f11a8357 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/scheduler/scheduler.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/scheduler/scheduler.idl @@ -19,6 +19,6 @@ enum AncestorStatus { ImplementedAs=DOMScheduler ] interface Scheduler { [CallWith=ScriptState, MeasureAs=SchedulerPostTask, RaisesException] Promise postTask(SchedulerPostTaskCallback callback, optional SchedulerPostTaskOptions options = {}); - [RuntimeEnabled=SchedulerYield, MeasureAs=SchedulerYield, CallWith=ScriptState, RaisesException] Promise yield(optional SchedulerYieldOptions options = {}); + [RuntimeEnabled=SchedulerYield, MeasureAs=SchedulerYield, CallWith=ScriptState, RaisesException] Promise yield(); [RuntimeEnabled=UnexposedTaskIds, CallWith=ScriptState, Exposed=Window] attribute unsigned long taskId; }; diff --git a/tools/under-control/src/third_party/blink/renderer/core/scheduler/scheduler_yield_options.idl b/tools/under-control/src/third_party/blink/renderer/core/scheduler/scheduler_yield_options.idl deleted file mode 100755 index 6e3484f9..00000000 --- a/tools/under-control/src/third_party/blink/renderer/core/scheduler/scheduler_yield_options.idl +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2023 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -enum SchedulerYieldPriority { - "user-blocking", - "user-visible", - "background", - "inherit" -}; - -enum SchedulerSignalInherit { - "inherit" -}; - -// https://github.com/WICG/scheduling-apis/blob/main/explainers/yield-and-continuation.md -dictionary SchedulerYieldOptions { - (AbortSignal or SchedulerSignalInherit) signal; - SchedulerYieldPriority priority; -}; diff --git a/tools/under-control/src/third_party/blink/renderer/core/testing/internals.idl b/tools/under-control/src/third_party/blink/renderer/core/testing/internals.idl index dac9289c..c0041324 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/testing/internals.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/testing/internals.idl @@ -201,9 +201,7 @@ interface Internals { [RaisesException] DOMString layerTreeAsText(Document document, optional unsigned short flags); - DOMString scrollingStateTreeAsText(Document document); [RaisesException] DOMString mainThreadScrollingReasons(Document document); - [RaisesException] DOMRectList nonFastScrollableRects(Document document); void evictAllResources(); diff --git a/tools/under-control/src/third_party/blink/renderer/core/timing/performance.idl b/tools/under-control/src/third_party/blink/renderer/core/timing/performance.idl index 2380bac8..f178be94 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/timing/performance.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/timing/performance.idl @@ -35,7 +35,7 @@ // should have a default value. [Exposed=(Window,Worker)] interface Performance : EventTarget { - [Affects=Nothing] DOMHighResTimeStamp now(); + [Affects=Nothing, NoAllocDirectCall] DOMHighResTimeStamp now(); readonly attribute DOMHighResTimeStamp timeOrigin; // Performance Timeline diff --git a/tools/under-control/src/third_party/blink/renderer/core/xmlhttprequest/xml_http_request.idl b/tools/under-control/src/third_party/blink/renderer/core/xmlhttprequest/xml_http_request.idl index b81ee89f..bec56627 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/xmlhttprequest/xml_http_request.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/xmlhttprequest/xml_http_request.idl @@ -78,6 +78,5 @@ typedef (Blob or BufferSource or FormData or URLSearchParams or USVString) XMLHt [RaisesException=Setter] attribute XMLHttpRequestResponseType responseType; [CallWith=ScriptState, RaisesException=Getter] readonly attribute any response; [RaisesException=Getter] readonly attribute USVString responseText; - // TODO(foolip): responseXML should be [Exposed=Window]. - [MeasureAs=XMLHttpRequestResponseXML, RaisesException=Getter] readonly attribute Document? responseXML; + [Exposed=Window, MeasureAs=XMLHttpRequestResponseXML, RaisesException=Getter] readonly attribute Document? responseXML; }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/ad_auction/auction_ad.idl b/tools/under-control/src/third_party/blink/renderer/modules/ad_auction/auction_ad.idl index 6f09eb9f..23f4384a 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/ad_auction/auction_ad.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/ad_auction/auction_ad.idl @@ -13,6 +13,8 @@ dictionary AuctionAd { USVString sizeGroup; USVString buyerReportingId; USVString buyerAndSellerReportingId; + [RuntimeEnabled=FledgeAuctionDealSupport] + sequence selectableBuyerAndSellerReportingIds; any metadata; DOMString adRenderId; sequence allowedReportingOrigins; 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 aa22c78c..c1e959e2 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 @@ -90,13 +90,10 @@ dictionary AuctionAdConfig { sequence requiredSellerCapabilities; AuctionAdInterestGroupSize requestedSize; - [RuntimeEnabled=FledgeTrustedBiddingSignalsSlotSize] sequence allSlotsRequestedSizes; - [RuntimeEnabled=FledgeNegativeTargeting] Promise additionalBids; - [RuntimeEnabled=FledgeNegativeTargeting] DOMString auctionNonce; ProtectedAudiencePrivateAggregationConfig privateAggregationConfig; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/ad_auction/auction_ad_interest_group.idl b/tools/under-control/src/third_party/blink/renderer/modules/ad_auction/auction_ad_interest_group.idl index 6dac2c09..64f1a58c 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/ad_auction/auction_ad_interest_group.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/ad_auction/auction_ad_interest_group.idl @@ -65,6 +65,8 @@ dictionary AuctionAdInterestGroup { sequence trustedBiddingSignalsKeys; DOMString trustedBiddingSignalsSlotSizeMode; long maxTrustedBiddingSignalsURLLength; + [RuntimeEnabled=FledgeTrustedSignalsKVv2Support] + USVString trustedBiddingSignalsCoordinator; any userBiddingSignals; sequence ads; sequence adComponents; 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 9fe6a190..f77caab7 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 @@ -22,13 +22,13 @@ typedef (USVString or FencedFrameConfig) UrnOrConfig; [CallWith=ScriptState, Measure, RaisesException] Promise leaveAdInterestGroup(optional AuctionAdInterestGroupKey group); - [RuntimeEnabled=FledgeClearOriginJoinedAdInterestGroups, CallWith=ScriptState, RaisesException] + [CallWith=ScriptState, RaisesException] Promise clearOriginJoinedAdInterestGroups(USVString owner, optional sequence groupsToKeep); [CallWith=ScriptState, Measure, RaisesException] void updateAdInterestGroups(); - [RuntimeEnabled=FledgeNegativeTargeting, CallWith=ScriptState, Measure, RaisesException] + [CallWith=ScriptState, Measure, RaisesException] Promise createAuctionNonce(); [RuntimeEnabled=Fledge, CallWith=ScriptState, Measure, RaisesException] 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 2f7fdeaf..bdae0995 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 @@ -4,37 +4,37 @@ // https://github.com/explainers-by-googlers/prompt-api -enum AIModelAvailability { +enum AICapabilityAvailability { "readily", "after-download", "no" }; [ - Exposed=Window, + Exposed=(Window,Worker), RuntimeEnabled=BuiltInAIAPI ] interface AI { [ - Measure, - CallWith=ScriptState, - RaisesException, + // TODO: Add Measure RuntimeEnabled=AIPromptAPI ] - Promise canCreateTextSession(); + readonly attribute AIAssistantFactory assistant; [ Measure, - CallWith=ScriptState, - RaisesException, - RuntimeEnabled=AIPromptAPI + RuntimeEnabled=AISummarizationAPI ] - Promise createTextSession( - optional AITextSessionOptions options = {} - ); + readonly attribute AISummarizerFactory summarizer; + [ Measure, - CallWith=ScriptState, - RaisesException + RuntimeEnabled=AIWriterAPI ] - Promise defaultTextSessionOptions(); + readonly attribute AIWriterFactory writer; + + [ + Measure, + RuntimeEnabled=AIRewriterAPI + ] + readonly attribute AIRewriterFactory rewriter; }; 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 new file mode 100755 index 00000000..c1ca2ac0 --- /dev/null +++ b/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_assistant_factory.idl @@ -0,0 +1,39 @@ +// 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 AIAssistantCapabilities { + readonly attribute AICapabilityAvailability available; + + // Always null if available === "no" + readonly attribute unsigned long? defaultTopK; + readonly attribute unsigned long? maxTopK; + readonly attribute float? defaultTemperature; +}; + +[ + Exposed=(Window,Worker), + RuntimeEnabled=AIPromptAPI +] +interface AIAssistantFactory { + [ + // TODO: Add Measure + CallWith=ScriptState, + RaisesException + ] + Promise capabilities(); + [ + // TODO: Add Measure + CallWith=ScriptState, + RaisesException + ] + Promise create( + optional AITextSessionOptions options = {} + ); +}; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_rewriter.idl b/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_rewriter.idl new file mode 100755 index 00000000..1af87e2d --- /dev/null +++ b/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_rewriter.idl @@ -0,0 +1,46 @@ +// 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. + +// Rewriter API +// https://github.com/explainers-by-googlers/writing-assistance-apis + +dictionary AIRewriterRewriteOptions { + DOMString context; + AbortSignal signal; +}; + +[ + Exposed=(Window,Worker), + RuntimeEnabled=AIRewriterAPI +] +interface AIRewriter { + [ + Measure, + CallWith=ScriptState, + RaisesException + ] + Promise rewrite( + DOMString input, + optional AIRewriterRewriteOptions options = {}); + + [ + Measure, + CallWith=ScriptState, + RaisesException + ] + ReadableStream rewriteStreaming( + DOMString input, + optional AIRewriterRewriteOptions options = {}); + + [ + Measure, + CallWith=ScriptState, + RaisesException + ] + void destroy(); + + readonly attribute DOMString sharedContext; + readonly attribute AIRewriterTone tone; + readonly attribute AIRewriterLength length; +}; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_rewriter_factory.idl b/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_rewriter_factory.idl new file mode 100755 index 00000000..a839be46 --- /dev/null +++ b/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_rewriter_factory.idl @@ -0,0 +1,30 @@ +// 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. + +// Rewriter API +// https://github.com/explainers-by-googlers/writing-assistance-apis + +enum AIRewriterTone { "as-is", "more-formal", "more-casual" }; +enum AIRewriterLength { "as-is", "shorter", "longer" }; + +dictionary AIRewriterCreateOptions { + AbortSignal signal; + DOMString sharedContext; + + AIRewriterTone tone = "as-is"; + AIRewriterLength length = "as-is"; +}; + +[ + Exposed=(Window,Worker), + RuntimeEnabled=AIRewriterAPI +] +interface AIRewriterFactory { + [ + Measure, + CallWith=ScriptState, + RaisesException + ] + Promise create(optional AIRewriterCreateOptions 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 new file mode 100755 index 00000000..04a0b4cb --- /dev/null +++ b/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_summarizer.idl @@ -0,0 +1,30 @@ +// 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. + +// TODO(crbug.com/356058864): Add explainer link + +[ + Exposed=(Window,Worker), + RuntimeEnabled=AISummarizationAPI +] +interface AISummarizer { + [ + Measure, + CallWith=ScriptState, + RaisesException + ] + Promise summarize(DOMString input); + [ + Measure, + CallWith=ScriptState, + RaisesException + ] + ReadableStream summarizeStreaming(DOMString input); + [ + Measure, + CallWith=ScriptState, + RaisesException + ] + void destroy(); +}; 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 new file mode 100755 index 00000000..62c17101 --- /dev/null +++ b/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_summarizer_factory.idl @@ -0,0 +1,32 @@ +// 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. + +// TODO(crbug.com/356058864): Add explainer link + +[ + Exposed=(Window,Worker), + RuntimeEnabled=AISummarizationAPI +] +interface AISummarizerCapabilities { + readonly attribute AICapabilityAvailability available; +}; + +[ + Exposed=(Window,Worker), + RuntimeEnabled=AISummarizationAPI +] +interface AISummarizerFactory { + [ + Measure, + CallWith=ScriptState, + RaisesException + ] + Promise create(); + [ + Measure, + CallWith=ScriptState, + RaisesException + ] + Promise capabilities(); +}; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_text_session.idl b/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_text_session.idl index 13a0092f..06d28b1d 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_text_session.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_text_session.idl @@ -5,7 +5,7 @@ // https://github.com/explainers-by-googlers/prompt-api [ - Exposed=Window, + Exposed=(Window,Worker), RuntimeEnabled=AIPromptAPI ] interface AITextSession { @@ -23,6 +23,20 @@ interface AITextSession { RuntimeEnabled=AIPromptAPI ] ReadableStream promptStreaming(DOMString input); + + readonly attribute unsigned long long maxTokens; + readonly attribute unsigned long long tokensSoFar; + readonly attribute unsigned long long tokensLeft; + + readonly attribute unsigned long topK; + readonly attribute float temperature; + + [ + Measure, + CallWith=ScriptState, + RaisesException + ] + Promise clone(); [ Measure, CallWith=ScriptState, 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_text_session_options.idl index a465d338..3a337b7c 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_text_session_options.idl @@ -7,4 +7,5 @@ dictionary AITextSessionOptions { [EnforceRange] unsigned long topK; float temperature; + DOMString systemPrompt; }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_writer.idl b/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_writer.idl new file mode 100755 index 00000000..86e73340 --- /dev/null +++ b/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_writer.idl @@ -0,0 +1,44 @@ +// 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. + +// Writer API +// https://github.com/explainers-by-googlers/writing-assistance-apis + +dictionary AIWriterWriteOptions { + DOMString context; + AbortSignal signal; +}; + +[ + Exposed=(Window,Worker), + RuntimeEnabled=AIWriterAPI +] +interface AIWriter { + [ + Measure, + CallWith=ScriptState, + RaisesException + ] + Promise write( + DOMString input, + optional AIWriterWriteOptions options = {}); + + [ + Measure, + CallWith=ScriptState, + RaisesException + ] + ReadableStream writeStreaming( + DOMString input, + optional AIWriterWriteOptions options = {}); + + [ + Measure, + CallWith=ScriptState, + RaisesException + ] + void destroy(); + + readonly attribute DOMString sharedContext; +}; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_writer_factory.idl b/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_writer_factory.idl new file mode 100755 index 00000000..16bc7503 --- /dev/null +++ b/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_writer_factory.idl @@ -0,0 +1,24 @@ +// 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. + +// Writer API +// https://github.com/explainers-by-googlers/writing-assistance-apis + +dictionary AIWriterCreateOptions { + AbortSignal signal; + DOMString sharedContext; +}; + +[ + Exposed=(Window,Worker), + RuntimeEnabled=AIWriterAPI +] +interface AIWriterFactory { + [ + Measure, + CallWith=ScriptState, + RaisesException + ] + Promise create(optional AIWriterCreateOptions options = {}); +}; 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 5edfbb82..375f3a4b 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 @@ -115,7 +115,6 @@ interface CanvasRenderingContext2D { void drawFocusIfNeeded(Element element); void drawFocusIfNeeded(Path2D path, Element element); - [RuntimeEnabled=Canvas2dScrollPathIntoView] void scrollPathIntoView(optional Path2D path); void clip(optional CanvasFillRule winding); void clip(Path2D path, optional CanvasFillRule winding); [HighEntropy] boolean isPointInPath(unrestricted double x, unrestricted double y, optional CanvasFillRule winding); @@ -128,14 +127,15 @@ interface CanvasRenderingContext2D { [HighEntropy] void strokeText(DOMString text, unrestricted double x, unrestricted double y, optional unrestricted double maxWidth); [HighEntropy] TextMetrics measureText(DOMString text); - // Render entire FormattedText with line wrapping (one-shot) - [RuntimeEnabled=FormattedText, RaisesException] void drawFormattedText(FormattedText formattedText, double x, double y); - // drawing images [RaisesException] void drawImage(CanvasImageSource image, unrestricted double x, unrestricted double y); [RaisesException] void drawImage(CanvasImageSource image, unrestricted double x, unrestricted double y, unrestricted double width, unrestricted double height); [RaisesException] void drawImage(CanvasImageSource image, unrestricted double sx, unrestricted double sy, unrestricted double sw, unrestricted double sh, unrestricted double dx, unrestricted double dy, unrestricted double dw, unrestricted double dh); + // placeElement: https://github.com/Igalia/explainers/blob/main/canvas-formatted-text/html-in-canvas.md + [RuntimeEnabled=CanvasPlaceElement, RaisesException] void placeElement(Element element, unrestricted double x, + unrestricted double y); + // triangle mesh API [MeasureAs=Canvas2DMesh, RuntimeEnabled=Canvas2dMesh, RaisesException] Mesh2DVertexBuffer createMesh2DVertexBuffer(Float32Array buffer); [MeasureAs=Canvas2DMesh, RuntimeEnabled=Canvas2dMesh, RaisesException] Mesh2DUVBuffer createMesh2DUVBuffer(Float32Array buffer); diff --git a/tools/under-control/src/third_party/blink/renderer/modules/compute_pressure/testing/create_virtual_pressure_source_options.idl b/tools/under-control/src/third_party/blink/renderer/modules/compute_pressure/testing/create_virtual_pressure_source_options.idl new file mode 100755 index 00000000..d961e761 --- /dev/null +++ b/tools/under-control/src/third_party/blink/renderer/modules/compute_pressure/testing/create_virtual_pressure_source_options.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. + +// Represents the optional parameters described in +// https://w3c.github.io/compute-pressure/#create-virtual-pressure-source +dictionary CreateVirtualPressureSourceOptions { + boolean available = true; +}; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/compute_pressure/testing/internals_compute_pressure.idl b/tools/under-control/src/third_party/blink/renderer/modules/compute_pressure/testing/internals_compute_pressure.idl new file mode 100755 index 00000000..e080a103 --- /dev/null +++ b/tools/under-control/src/third_party/blink/renderer/modules/compute_pressure/testing/internals_compute_pressure.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. + +[ + ImplementedAs=InternalsComputePressure +] partial interface Internals { + [CallWith=ScriptState] Promise createVirtualPressureSource(PressureSource source, CreateVirtualPressureSourceOptions options); + [CallWith=ScriptState] Promise removeVirtualPressureSource(PressureSource source); + [CallWith=ScriptState] Promise updateVirtualPressureSource(PressureSource source, PressureState state); +}; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/authentication_response_json.idl b/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/authentication_response_json.idl index 3e03371e..31d6ceec 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/authentication_response_json.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/authentication_response_json.idl @@ -5,7 +5,7 @@ // https://w3c.github.io/webauthn/#dictdef-authenticationresponsejson dictionary AuthenticationResponseJSON { - required Base64URLString id; + required DOMString id; required Base64URLString rawId; required AuthenticatorAssertionResponseJSON response; DOMString authenticatorAttachment; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/identity_credential_request_options.idl b/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/identity_credential_request_options.idl index 2739342a..bfd24918 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/identity_credential_request_options.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/identity_credential_request_options.idl @@ -23,4 +23,8 @@ dictionary IdentityCredentialRequestOptions { [RuntimeEnabled=FedCmButtonMode, MeasureAs=FedCmButtonMode] IdentityCredentialRequestOptionsMode mode = "widget"; // A querying language that allows an RP to ask what it wants from the IdPs. [RuntimeEnabled=FedCmSelectiveDisclosure] IdentityStandardClaims claims; + // This is a debugging aid string instead of an actual member of this dictionary. + // `mediation` could be accidentally set by web developers here and this helps + // with showing debugging info to developers when it happens. + USVString mediation; }; 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 43e4a2e0..45eadee8 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,5 +14,6 @@ dictionary PublicKeyCredentialCreationOptions { sequence hints = []; // https://w3c.github.io/webauthn/#enumdef-attestationconveyancepreference DOMString attestation; + [RuntimeEnabled=WebAuthenticationAttestationFormats] 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 index b6046e0d..3c6a76b1 100755 --- 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 @@ -4,5 +4,18 @@ dictionary PublicKeyCredentialReportOptions { USVString rpId; - BufferSource unknownCredentialId; + 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/registration_response_json.idl b/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/registration_response_json.idl index 2e02595a..ad712127 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/registration_response_json.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/registration_response_json.idl @@ -5,7 +5,7 @@ // https://w3c.github.io/webauthn/#dictdef-registrationresponsejson dictionary RegistrationResponseJSON { - required Base64URLString id; + required DOMString id; required Base64URLString rawId; required AuthenticatorAttestationResponseJSON response; DOMString authenticatorAttachment; 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 371d41e7..fd323f05 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 @@ -49,7 +49,7 @@ typedef (object or DOMString) AlgorithmIdentifier; [CallWith=ScriptState, MeasureAs=SubtleCryptoDeriveBits, RaisesException] Promise deriveBits(AlgorithmIdentifier algorithm, CryptoKey baseKey, unsigned long length); [CallWith=ScriptState, MeasureAs=SubtleCryptoImportKey, RaisesException] Promise importKey(KeyFormat format, (BufferSource or JsonWebKey) keyData, AlgorithmIdentifier algorithm, boolean extractable, sequence keyUsages); - [CallWith=ScriptState, MeasureAs=SubtleCryptoExportKey] Promise exportKey(KeyFormat format, CryptoKey key); + [CallWith=ScriptState, MeasureAs=SubtleCryptoExportKey, RaisesException] Promise exportKey(KeyFormat format, CryptoKey key); [CallWith=ScriptState, MeasureAs=SubtleCryptoWrapKey, RaisesException] Promise wrapKey(KeyFormat format, CryptoKey key, CryptoKey wrappingKey, AlgorithmIdentifier wrapAlgorithm); [CallWith=ScriptState, MeasureAs=SubtleCryptoUnwrapKey, RaisesException] Promise unwrapKey(KeyFormat format, BufferSource wrappedKey, CryptoKey unwrappingKey, AlgorithmIdentifier unwrapAlgorithm, AlgorithmIdentifier unwrappedKeyAlgorithm, boolean extractable, sequence keyUsages); diff --git a/tools/under-control/src/third_party/blink/renderer/modules/encoding/text_encoder.idl b/tools/under-control/src/third_party/blink/renderer/modules/encoding/text_encoder.idl index 6e7c4bf3..a60ed7c3 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/encoding/text_encoder.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/encoding/text_encoder.idl @@ -33,6 +33,6 @@ ] interface TextEncoder { [CallWith=ExecutionContext, RaisesException, MeasureAs=TextEncoderConstructor] constructor(); readonly attribute DOMString encoding; - [MeasureAs=TextEncoderEncode] Uint8Array encode(optional USVString input = ""); + [MeasureAs=TextEncoderEncode, RaisesException] Uint8Array encode(optional USVString input = ""); [MeasureAs=TextEncoderEncodeInto] TextEncoderEncodeIntoResult encodeInto(USVString source, Uint8Array destination); }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/eyedropper/eye_dropper.idl b/tools/under-control/src/third_party/blink/renderer/modules/eyedropper/eye_dropper.idl index 4d42425d..45d0e3a8 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/eyedropper/eye_dropper.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/eyedropper/eye_dropper.idl @@ -11,6 +11,6 @@ ] interface EyeDropper { [CallWith=ExecutionContext] constructor(); - [CallWith=ScriptState, RaisesException] Promise open( + [CallWith=ScriptState, RaisesException, MeasureAs=EyeDropperOpen] Promise open( optional ColorSelectionOptions options = {}); }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/formatted_text/formatted_text.idl b/tools/under-control/src/third_party/blink/renderer/modules/formatted_text/formatted_text.idl deleted file mode 100755 index 07542568..00000000 --- a/tools/under-control/src/third_party/blink/renderer/modules/formatted_text/formatted_text.idl +++ /dev/null @@ -1,20 +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. - -dictionary FormattedTextRun { - DOMString? text; - DOMString? style; -}; - -typedef (DOMString or FormattedTextRun) FormattedTextRunSingle; - -typedef sequence FormattedTextRunList; - -[ - RuntimeEnabled=FormattedText, - Exposed=Window -] -interface FormattedText { - [CallWith=ExecutionContext, RaisesException] static FormattedText? format((FormattedTextRunList or FormattedTextRunSingle) text_runs, optional DOMString? style = null, optional double inline_constraint, optional double block_constraint); -}; 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 250c2f5b..3bbe7ed0 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 @@ -26,7 +26,7 @@ enum GamepadHapticsResult { ] interface GamepadHapticActuator { [RuntimeEnabled=WGIGamepadTriggerRumble, SameObject] readonly attribute FrozenArray effects; - readonly attribute GamepadHapticActuatorType type; + [MeasureAs=GamepadHapticActuatorType] readonly attribute GamepadHapticActuatorType type; [CallWith=ScriptState] Promise playEffect( GamepadHapticEffectType type, GamepadEffectParameters params); diff --git a/tools/under-control/src/third_party/blink/renderer/modules/mediastream/capture_controller.idl b/tools/under-control/src/third_party/blink/renderer/modules/mediastream/capture_controller.idl index 02562e2e..54239e33 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/mediastream/capture_controller.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/mediastream/capture_controller.idl @@ -31,6 +31,13 @@ interface CaptureController : EventTarget { // https://screen-share.github.io/mouse-events/#capture-controller-extensions [RuntimeEnabled=CapturedMouseEvents] attribute EventHandler oncapturedmousechange; + [ + RuntimeEnabled = CapturedSurfaceControl, + MeasureAs = CapturedSurfaceControl, + CallWith = ScriptState + ] + Promise captureWheel(HTMLElement? element); + [ RuntimeEnabled = CapturedSurfaceControl, MeasureAs = CapturedSurfaceControl, diff --git a/tools/under-control/src/third_party/blink/renderer/modules/mediastream/media_track_capabilities.idl b/tools/under-control/src/third_party/blink/renderer/modules/mediastream/media_track_capabilities.idl index 30aba310..299bd57b 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/mediastream/media_track_capabilities.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/mediastream/media_track_capabilities.idl @@ -41,6 +41,7 @@ dictionary MediaTrackCapabilities { boolean torch; // W3C Media Capture Extensions [RuntimeEnabled=MediaCaptureBackgroundBlur] sequence backgroundBlur; + [RuntimeEnabled=MediaCaptureCameraControls] sequence backgroundSegmentationMask; [RuntimeEnabled=MediaCaptureCameraControls] sequence eyeGazeCorrection; [RuntimeEnabled=MediaCaptureCameraControls] sequence faceFraming; // Screen Capture API diff --git a/tools/under-control/src/third_party/blink/renderer/modules/mediastream/media_track_constraint_set.idl b/tools/under-control/src/third_party/blink/renderer/modules/mediastream/media_track_constraint_set.idl index 5be3f36a..f684315b 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/mediastream/media_track_constraint_set.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/mediastream/media_track_constraint_set.idl @@ -51,6 +51,7 @@ dictionary MediaTrackConstraintSet { // W3C Media Capture Extensions [RuntimeEnabled=MediaCaptureBackgroundBlur] ConstrainBoolean backgroundBlur; + [RuntimeEnabled=MediaCaptureCameraControls] ConstrainBoolean backgroundSegmentationMask; [RuntimeEnabled=MediaCaptureCameraControls] ConstrainBoolean eyeGazeCorrection; [RuntimeEnabled=MediaCaptureCameraControls] ConstrainBoolean faceFraming; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/mediastream/media_track_settings.idl b/tools/under-control/src/third_party/blink/renderer/modules/mediastream/media_track_settings.idl index f21615bb..1104f5ba 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/mediastream/media_track_settings.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/mediastream/media_track_settings.idl @@ -46,6 +46,7 @@ dictionary MediaTrackSettings { // W3C Media Capture Extensions [RuntimeEnabled=MediaCaptureBackgroundBlur] boolean backgroundBlur; + [RuntimeEnabled=MediaCaptureCameraControls] boolean backgroundSegmentationMask; [RuntimeEnabled=MediaCaptureCameraControls] boolean eyeGazeCorrection; [RuntimeEnabled=MediaCaptureCameraControls] boolean faceFraming; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/mediastream/media_track_supported_constraints.idl b/tools/under-control/src/third_party/blink/renderer/modules/mediastream/media_track_supported_constraints.idl index 6dfa1967..52a9cbbc 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/mediastream/media_track_supported_constraints.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/mediastream/media_track_supported_constraints.idl @@ -49,6 +49,7 @@ dictionary MediaTrackSupportedConstraints { // W3C Media Capture Extensions [RuntimeEnabled=MediaCaptureBackgroundBlur] boolean backgroundBlur = true; + [RuntimeEnabled=MediaCaptureCameraControls] boolean backgroundSegmentationMask = true; [RuntimeEnabled=MediaCaptureCameraControls] boolean eyeGazeCorrection = true; [RuntimeEnabled=MediaCaptureCameraControls] boolean faceFraming = true; 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 23f444f0..0b072287 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 @@ -32,6 +32,12 @@ dictionary MLArgMinMaxSupportLimits { MLSupportLimits output; }; +dictionary MLBinarySupportLimits { + MLSupportLimits a; + MLSupportLimits b; + MLSupportLimits output; +}; + dictionary MLConcatSupportLimits { MLSupportLimits inputs; }; @@ -41,6 +47,16 @@ dictionary MLGatherSupportLimits { MLSupportLimits indices; }; +dictionary MLLogicalNotSupportLimits { + MLSupportLimits a; + MLSupportLimits output; +}; + +dictionary MLSingleInputSupportLimits { + MLSupportLimits input; + MLSupportLimits output; +}; + dictionary MLWhereSupportLimits { MLSupportLimits condition; MLSupportLimits trueValue; @@ -48,6 +64,7 @@ dictionary MLWhereSupportLimits { }; dictionary MLOpSupportLimits { + MLInputOperandLayout preferredInputLayout; MLSupportLimits input; MLSupportLimits constant; MLSupportLimits output; @@ -55,7 +72,50 @@ dictionary MLOpSupportLimits { MLArgMinMaxSupportLimits argMin; MLArgMinMaxSupportLimits argMax; MLConcatSupportLimits concat; + + // Element-wise binary ops. + MLBinarySupportLimits add; + MLBinarySupportLimits sub; + MLBinarySupportLimits mul; + MLBinarySupportLimits div; + MLBinarySupportLimits max; + MLBinarySupportLimits min; + MLBinarySupportLimits pow; + + // Element-wise logical ops. + MLBinarySupportLimits equal; + MLBinarySupportLimits greater; + MLBinarySupportLimits greaterOrEqual; + MLBinarySupportLimits lesser; + MLBinarySupportLimits lesserOrEqual; + MLLogicalNotSupportLimits logicalNot; + + // Element-wise unary ops. + MLSingleInputSupportLimits abs; + MLSingleInputSupportLimits ceil; + MLSingleInputSupportLimits cos; + MLSingleInputSupportLimits erf; + MLSingleInputSupportLimits exp; + MLSingleInputSupportLimits floor; + MLSingleInputSupportLimits identity; + MLSingleInputSupportLimits log; + MLSingleInputSupportLimits neg; + MLSingleInputSupportLimits reciprocal; + MLSingleInputSupportLimits sin; + MLSingleInputSupportLimits sqrt; + MLSingleInputSupportLimits tan; + + MLSingleInputSupportLimits elu; MLGatherSupportLimits gather; + MLSingleInputSupportLimits gelu; + MLSingleInputSupportLimits leakyRelu; + MLSingleInputSupportLimits relu; + MLSingleInputSupportLimits sigmoid; + MLSingleInputSupportLimits slice; + MLSingleInputSupportLimits softmax; + MLSingleInputSupportLimits softplus; + MLSingleInputSupportLimits softsign; + MLSingleInputSupportLimits split; MLWhereSupportLimits where; }; @@ -71,6 +131,12 @@ typedef record MLNamedBuffers; CallWith=ScriptState ] readonly attribute Promise lost; + [ + RuntimeEnabled=MachineLearningNeuralNetwork, + CallWith=ScriptState, + RaisesException + ] void destroy(); + [ RuntimeEnabled=MachineLearningNeuralNetwork, CallWith=ScriptState, @@ -83,7 +149,7 @@ typedef record MLNamedBuffers; RuntimeEnabled=MachineLearningNeuralNetwork, CallWith=ScriptState, RaisesException - ] MLBuffer createBuffer(MLBufferDescriptor descriptor); + ] Promise createBuffer(MLBufferDescriptor descriptor); // TODO(crbug.com/328105506): enable partial MLBuffer reads/writes. // TODO(crbug.com/40278771): consider moving arguments into a dictonary @@ -109,7 +175,6 @@ typedef record MLNamedBuffers; optional MLSize64 srcByteOffset = 0, optional MLSize64 srcByteSize); - // TODO(crbug.com/328102504): enable transferable view to avoid copy. [ RuntimeEnabled=MachineLearningNeuralNetwork, CallWith=ScriptState, @@ -117,6 +182,22 @@ typedef record MLNamedBuffers; ] Promise readBuffer( MLBuffer srcBuffer); + [ + RuntimeEnabled=MachineLearningNeuralNetwork, + CallWith=ScriptState, + RaisesException + ] Promise readBuffer( + MLBuffer srcBuffer, + [AllowShared] ArrayBufferView dstData); + + [ + RuntimeEnabled=MachineLearningNeuralNetwork, + CallWith=ScriptState, + RaisesException + ] Promise readBuffer( + MLBuffer srcBuffer, + [AllowShared] ArrayBuffer dstData); + // TODO(crbug.com/1273291): enable partial buffer dispatches. [ RuntimeEnabled=MachineLearningNeuralNetwork, diff --git a/tools/under-control/src/third_party/blink/renderer/modules/ml/ml_context_options.idl b/tools/under-control/src/third_party/blink/renderer/modules/ml/ml_context_options.idl index de21161a..08cd3d15 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/ml/ml_context_options.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/ml/ml_context_options.idl @@ -2,21 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// This will be a shared interface by two APIs: -// - The Model Loader API, -// https://github.com/webmachinelearning/model-loader/blob/main/explainer.md -// - The WebNN API, -// https://github.com/webmachinelearning/webnn/blob/main/explainer.md - -enum MLDevicePreference { - // Let the backend selects the most suitable device. - "auto", - // The backend will use GPU to do model inference. If some operator is not - // supported by GPU, it will fall back to CPU. - "gpu", - // The backend will use CPU to do model inference. - "cpu" -}; +// https://www.w3.org/TR/webnn/#api-mlcontextoptions // Corresponds to WebNN MLDeviceType enum // https://www.w3.org/TR/webnn/#enumdef-mldevicetype @@ -27,8 +13,8 @@ enum MLDeviceType { }; enum MLPowerPreference { - // Let the backend selects the most suitable behavior. - "auto", + // Let the user agent select the most suitable behavior. + "default", // Prioritizes execution speed over power consumption. "high-performance", // Prioritizes power consumption over other considerations such as execution @@ -36,25 +22,18 @@ enum MLPowerPreference { "low-power", }; -enum MLModelFormat { - // Tensorflow-lite flatbuffer. - "tflite" -}; - dictionary MLContextOptions { - // Preferred kind of device used for model loader API. - MLDevicePreference devicePreference = "auto"; - // Specified type of device used for WebNN API. MLDeviceType deviceType = "cpu"; // Preference as related to power consumption. - MLPowerPreference powerPreference = "auto"; - - // Model format for the model loader API. - MLModelFormat modelFormat = "tflite"; + MLPowerPreference powerPreference = "default"; // Number of thread to use. // "0" means the backend can determine it automatically. + // + // TODO(crbug.com/338162119): Figure out why the TFLite XNNPACK delegate + // choosing its own thread count is not resulting in good performance, then + // remove this. unsigned long numThreads = 0; }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/ml/webnn/ml_activation.idl b/tools/under-control/src/third_party/blink/renderer/modules/ml/webnn/ml_activation.idl deleted file mode 100755 index f9de0751..00000000 --- a/tools/under-control/src/third_party/blink/renderer/modules/ml/webnn/ml_activation.idl +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2023 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-mlactivation - -[ - RuntimeEnabled=MachineLearningNeuralNetwork, - Exposed=(Window, DedicatedWorker) -] interface MLActivation {}; \ No newline at end of file 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 560c8cff..cb4c2162 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 @@ -12,6 +12,8 @@ enum MLConv2dFilterOperandLayout { "oihw", "hwio", "ohwi", "ihwo" }; enum MLConvTranspose2dFilterOperandLayout { "iohw", "hwoi", "ohwi" }; +enum MLRecurrentNetworkActivation { "relu", "sigmoid", "tanh" }; + enum MLRecurrentNetworkDirection { "forward", "backward", "both" }; enum MLLstmWeightLayout { "iofg", "ifgo" }; @@ -22,8 +24,7 @@ dictionary MLOperatorOptions { USVString label = ""; }; -dictionary MLArgMinMaxOptions { - sequence<[EnforceRange] unsigned long> axes; +dictionary MLArgMinMaxOptions : MLOperatorOptions { boolean keepDimensions = false; // See spec issue https://github.com/webmachinelearning/webnn/issues/653. MLOperandDataType outputDataType = "int32"; @@ -33,14 +34,14 @@ dictionary MLArgMinMaxOptions { // https://github.com/webmachinelearning/webnn/issues/481. // TODO(crbug.com/1502361): Revisit whether the scale and bias operands // should be required inputs based on WG's consensus. -dictionary MLBatchNormalizationOptions : MLOperatorOptions{ +dictionary MLBatchNormalizationOptions : MLOperatorOptions { MLOperand scale; MLOperand bias; [EnforceRange] unsigned long axis = 1; float epsilon = 1e-5; }; -dictionary MLConv2dOptions : MLOperatorOptions{ +dictionary MLConv2dOptions : MLOperatorOptions { sequence<[EnforceRange] unsigned long> padding; sequence<[EnforceRange] unsigned long> strides; sequence<[EnforceRange] unsigned long> dilations; @@ -50,7 +51,7 @@ dictionary MLConv2dOptions : MLOperatorOptions{ MLOperand bias; }; -dictionary MLConvTranspose2dOptions : MLOperatorOptions{ +dictionary MLConvTranspose2dOptions : MLOperatorOptions { sequence<[EnforceRange] unsigned long> padding; sequence<[EnforceRange] unsigned long> strides; sequence<[EnforceRange] unsigned long> dilations; @@ -62,11 +63,11 @@ dictionary MLConvTranspose2dOptions : MLOperatorOptions{ MLOperand bias; }; -dictionary MLGatherOptions { +dictionary MLGatherOptions : MLOperatorOptions { [EnforceRange] unsigned long axis = 0; }; -dictionary MLGemmOptions { +dictionary MLGemmOptions : MLOperatorOptions { MLOperand c; float alpha = 1.0; float beta = 1.0; @@ -74,7 +75,7 @@ dictionary MLGemmOptions { boolean bTranspose = false; }; -dictionary MLGruOptions { +dictionary MLGruOptions : MLOperatorOptions { MLOperand bias; MLOperand recurrentBias; MLOperand initialHiddenState; @@ -82,39 +83,39 @@ dictionary MLGruOptions { boolean returnSequence = false; MLRecurrentNetworkDirection direction = "forward"; MLGruWeightLayout layout = "zrn"; - sequence activations; + sequence activations; }; -dictionary MLGruCellOptions { +dictionary MLGruCellOptions : MLOperatorOptions { MLOperand bias; MLOperand recurrentBias; boolean resetAfter = true; MLGruWeightLayout layout = "zrn"; - sequence activations; + sequence activations; }; -dictionary MLHardSigmoidOptions { +dictionary MLHardSigmoidOptions : MLOperatorOptions { float alpha = 0.2; float beta = 0.5; }; -dictionary MLLayerNormalizationOptions { +dictionary MLLayerNormalizationOptions : MLOperatorOptions { MLOperand scale; MLOperand bias; sequence<[EnforceRange] unsigned long> axes; float epsilon = 1e-5; }; -dictionary MLLeakyReluOptions { +dictionary MLLeakyReluOptions : MLOperatorOptions { float alpha = 0.01; }; -dictionary MLLinearOptions { +dictionary MLLinearOptions : MLOperatorOptions { float alpha = 1.0; float beta = 0; }; -dictionary MLLstmOptions { +dictionary MLLstmOptions : MLOperatorOptions { MLOperand bias; MLOperand recurrentBias; MLOperand peepholeWeight; @@ -123,15 +124,15 @@ dictionary MLLstmOptions { boolean returnSequence = false; MLRecurrentNetworkDirection direction = "forward"; MLLstmWeightLayout layout = "iofg"; - sequence activations; + sequence activations; }; -dictionary MLLstmCellOptions { +dictionary MLLstmCellOptions : MLOperatorOptions { MLOperand bias; MLOperand recurrentBias; MLOperand peepholeWeight; MLLstmWeightLayout layout = "iofg"; - sequence activations; + sequence activations; }; enum MLPaddingMode { @@ -141,7 +142,7 @@ enum MLPaddingMode { "symmetric" }; -dictionary MLPadOptions { +dictionary MLPadOptions : MLOperatorOptions { MLPaddingMode mode = "constant"; float value = 0; }; @@ -151,7 +152,7 @@ enum MLRoundingType { "ceil" }; -dictionary MLPool2dOptions { +dictionary MLPool2dOptions : MLOperatorOptions { sequence<[EnforceRange] unsigned long> windowDimensions; sequence<[EnforceRange] unsigned long> padding; sequence<[EnforceRange] unsigned long> strides; @@ -161,45 +162,45 @@ dictionary MLPool2dOptions { sequence<[EnforceRange] unsigned long> outputSizes; }; -dictionary MLClampOptions { +dictionary MLClampOptions : MLOperatorOptions { float minValue; float maxValue; }; -dictionary MLEluOptions { +dictionary MLEluOptions : MLOperatorOptions { float alpha = 1; }; -dictionary MLInstanceNormalizationOptions { +dictionary MLInstanceNormalizationOptions : MLOperatorOptions { MLOperand scale; MLOperand bias; float epsilon = 1e-5; MLInputOperandLayout layout = "nchw"; }; -dictionary MLReduceOptions { +dictionary MLReduceOptions : MLOperatorOptions { sequence<[EnforceRange] unsigned long> axes; boolean keepDimensions = false; }; enum MLInterpolationMode {"nearest-neighbor", "linear" }; -dictionary MLResample2dOptions : MLOperatorOptions{ +dictionary MLResample2dOptions : MLOperatorOptions { MLInterpolationMode mode = "nearest-neighbor"; sequence scales; sequence<[EnforceRange] unsigned long> sizes; sequence<[EnforceRange] unsigned long> axes; }; -dictionary MLTransposeOptions { +dictionary MLTransposeOptions : MLOperatorOptions { sequence<[EnforceRange] unsigned long> permutation; }; -dictionary MLSplitOptions { +dictionary MLSplitOptions : MLOperatorOptions { [EnforceRange] unsigned long axis = 0; }; -dictionary MLTriangularOptions { +dictionary MLTriangularOptions : MLOperatorOptions { boolean upper = true; [EnforceRange] long diagonal = 0; }; @@ -208,20 +209,23 @@ dictionary MLTriangularOptions { RuntimeEnabled=MachineLearningNeuralNetwork, Exposed=(Window, DedicatedWorker) ] interface MLGraphBuilder { - constructor(MLContext context); + [ + CallWith=ScriptState, + RaisesException + ] constructor(MLContext context); [RaisesException] MLOperand input(USVString name, MLOperandDescriptor desc); [RaisesException] MLOperand constant(MLOperandDescriptor desc, ArrayBufferView bufferView); - [RaisesException] MLOperand argMin(MLOperand input, optional MLArgMinMaxOptions options = {}); - [RaisesException] MLOperand argMax(MLOperand input, optional MLArgMinMaxOptions options = {}); + [RaisesException] MLOperand argMin(MLOperand input, [EnforceRange] unsigned long axis, optional MLArgMinMaxOptions options = {}); + [RaisesException] MLOperand argMax(MLOperand input, [EnforceRange] unsigned long axis, optional MLArgMinMaxOptions options = {}); [RaisesException] MLOperand batchNormalization(MLOperand input, MLOperand mean, MLOperand variance, optional MLBatchNormalizationOptions options = {}); [RaisesException] MLOperand clamp(MLOperand input, optional MLClampOptions options = {}); - [RaisesException] MLOperand concat(sequence inputs, [EnforceRange] unsigned long axis); + [RaisesException] MLOperand concat(sequence inputs, [EnforceRange] unsigned long axis, optional MLOperatorOptions options = {}); [RaisesException] MLOperand conv2d(MLOperand input, MLOperand filter, optional MLConv2dOptions options = {}); [RaisesException] MLOperand convTranspose2d(MLOperand input, MLOperand filter, optional MLConvTranspose2dOptions options = {}); @@ -241,32 +245,30 @@ dictionary MLTriangularOptions { [RaisesException] MLOperand lesserOrEqual(MLOperand a, MLOperand b, optional MLOperatorOptions options = {}); // Element-wise unary operations - [RaisesException] MLOperand abs(MLOperand x); - [RaisesException] MLOperand ceil(MLOperand x); - [RaisesException] MLOperand cos(MLOperand x); - [RaisesException] MLOperand exp(MLOperand x); - [RaisesException] MLOperand floor(MLOperand x); - [RaisesException] MLOperand log(MLOperand x); - [RaisesException] MLOperand neg(MLOperand x); - [RaisesException] MLOperand sin(MLOperand x); - [RaisesException] MLOperand tan(MLOperand x); - [RaisesException] MLOperand erf(MLOperand x); - [RaisesException] MLOperand identity(MLOperand x); - [RaisesException] MLOperand logicalNot(MLOperand x); - [RaisesException] MLOperand reciprocal(MLOperand x); - [RaisesException] MLOperand sqrt(MLOperand x); + [RaisesException] MLOperand abs(MLOperand x, optional MLOperatorOptions options = {}); + [RaisesException] MLOperand ceil(MLOperand x, optional MLOperatorOptions options = {}); + [RaisesException] MLOperand cos(MLOperand x, optional MLOperatorOptions options = {}); + [RaisesException] MLOperand exp(MLOperand x, optional MLOperatorOptions options = {}); + [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 sin(MLOperand x, optional MLOperatorOptions options = {}); + [RaisesException] MLOperand tan(MLOperand x, optional MLOperatorOptions options = {}); + [RaisesException] MLOperand erf(MLOperand x, optional MLOperatorOptions options = {}); + [RaisesException] MLOperand identity(MLOperand x, optional MLOperatorOptions options = {}); + [RaisesException] MLOperand logicalNot(MLOperand x, optional MLOperatorOptions options = {}); + [RaisesException] MLOperand reciprocal(MLOperand x, optional MLOperatorOptions options = {}); + [RaisesException] MLOperand sqrt(MLOperand x, optional MLOperatorOptions options = {}); - [RaisesException] MLOperand cast(MLOperand input, MLOperandDataType outputDataType); + [RaisesException] MLOperand cast(MLOperand input, MLOperandDataType outputDataType, optional MLOperatorOptions options = {}); [RaisesException] MLOperand elu(MLOperand x, optional MLEluOptions options = {}); - [RaisesException] MLActivation elu(optional MLEluOptions options = {}); - [RaisesException] MLOperand expand(MLOperand input, sequence<[EnforceRange] unsigned long> newShape); + [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 gelu(MLOperand input); - [RaisesException] MLActivation gelu(); + [RaisesException] MLOperand gelu(MLOperand input, optional MLOperatorOptions options = {}); [RaisesException] MLOperand gemm(MLOperand a, MLOperand b, optional MLGemmOptions options = {}); @@ -278,22 +280,18 @@ dictionary MLTriangularOptions { [EnforceRange] unsigned long hiddenSize, optional MLGruCellOptions options = {}); [RaisesException] MLOperand hardSigmoid(MLOperand x, optional MLHardSigmoidOptions options = {}); - [RaisesException] MLActivation hardSigmoid(optional MLHardSigmoidOptions options = {}); - [RaisesException] MLOperand hardSwish(MLOperand x); - [RaisesException] MLActivation hardSwish(); + [RaisesException] MLOperand hardSwish(MLOperand x, optional MLOperatorOptions options = {}); [RaisesException] MLOperand instanceNormalization(MLOperand input, optional MLInstanceNormalizationOptions options = {}); - [RaisesException] MLOperand matmul(MLOperand a, MLOperand b); + [RaisesException] MLOperand matmul(MLOperand a, MLOperand b, optional MLOperatorOptions options = {}); [RaisesException] MLOperand layerNormalization(MLOperand input, optional MLLayerNormalizationOptions options = {}); [RaisesException] MLOperand leakyRelu(MLOperand x, optional MLLeakyReluOptions options = {}); - [RaisesException] MLActivation leakyRelu(optional MLLeakyReluOptions options = {}); [RaisesException] MLOperand linear(MLOperand input, optional MLLinearOptions options = {}); - [RaisesException] MLActivation linear(optional MLLinearOptions options = {}); [RaisesException] sequence lstm(MLOperand input, MLOperand weight, MLOperand recurrentWeight, [EnforceRange] unsigned long steps, [EnforceRange] unsigned long hiddenSize, @@ -327,43 +325,38 @@ dictionary MLTriangularOptions { [RaisesException] MLOperand reduceSum(MLOperand input, optional MLReduceOptions options = {}); [RaisesException] MLOperand reduceSumSquare(MLOperand input, optional MLReduceOptions options = {}); - [RaisesException] MLOperand relu(MLOperand input); - [RaisesException] MLActivation relu(); + [RaisesException] MLOperand relu(MLOperand input, optional MLOperatorOptions options = {}); - [RaisesException] MLOperand reshape(MLOperand input, sequence<[EnforceRange] unsigned long> newShape); + [RaisesException] MLOperand reshape(MLOperand input, sequence<[EnforceRange] unsigned long> newShape, optional MLOperatorOptions options = {}); [ CallWith=ScriptState, RaisesException ] MLOperand resample2d(MLOperand input, optional MLResample2dOptions options = {}); - [RaisesException] MLOperand sigmoid(MLOperand input); - [RaisesException] MLActivation sigmoid(); + [RaisesException] MLOperand sigmoid(MLOperand input, optional MLOperatorOptions options = {}); - [RaisesException] MLOperand slice(MLOperand input, sequence<[EnforceRange] unsigned long> starts, sequence<[EnforceRange] unsigned long> sizes); + [RaisesException] MLOperand slice(MLOperand input, sequence<[EnforceRange] unsigned long> starts, sequence<[EnforceRange] unsigned long> sizes, optional MLOperatorOptions options = {}); // TODO: crbug.com/342919187 - Remove the deprecated version once ort-web 1.18.* supporting softmax(input, aixs) is released. - [RaisesException] MLOperand softmax(MLOperand input); - [RaisesException] MLOperand softmax(MLOperand input, [EnforceRange] unsigned long axis); + [RaisesException] MLOperand softmax(MLOperand input, optional MLOperatorOptions options = {}); + [RaisesException] MLOperand softmax(MLOperand input, [EnforceRange] unsigned long axis, optional MLOperatorOptions options = {}); - [RaisesException] MLOperand softplus(MLOperand input); - [RaisesException] MLActivation softplus(); + [RaisesException] MLOperand softplus(MLOperand input, optional MLOperatorOptions options = {}); - [RaisesException] MLOperand softsign(MLOperand input); - [RaisesException] MLActivation softsign(); + [RaisesException] MLOperand softsign(MLOperand input, optional MLOperatorOptions options = {}); [RaisesException] sequence split(MLOperand input, [EnforceRange] unsigned long splits, optional MLSplitOptions options = {}); [RaisesException] sequence split(MLOperand input, sequence<[EnforceRange] unsigned long> splits, optional MLSplitOptions options = {}); - [RaisesException] MLOperand tanh(MLOperand input); - [RaisesException] MLActivation tanh(); + [RaisesException] MLOperand tanh(MLOperand input, optional MLOperatorOptions options = {}); [RaisesException] MLOperand transpose( MLOperand input, optional MLTransposeOptions options = {}); [RaisesException] MLOperand triangular(MLOperand input, optional MLTriangularOptions options = {}); - [RaisesException] MLOperand where(MLOperand condition, MLOperand trueValue, MLOperand falseValue); + [RaisesException] MLOperand where(MLOperand condition, MLOperand trueValue, MLOperand falseValue, optional MLOperatorOptions options = {}); [ CallWith=ScriptState, 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 new file mode 100755 index 00000000..50f0c8a0 --- /dev/null +++ b/tools/under-control/src/third_party/blink/renderer/modules/on_device_translation/language_detector.idl @@ -0,0 +1,23 @@ +// 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. + +// Explainer: https://github.com/WICG/translation-api/blob/5151a1b1b37cd604542715141b0a203a8c6e9061/README.md +// TODO(https://crbug.com/349927087): Migrate to latest API when it is decided. +dictionary LanguageDetectionResult { + DOMString? detectedLanguage; + double confidence; +}; + +[ + RuntimeEnabled=LanguageDetectionAPI, + Exposed=(Window,Worker) +] +interface LanguageDetector { + [ + Measure, + CallWith=ScriptState, + RaisesException + ] + Promise> detect(DOMString input); +}; 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 9330c439..081b88e8 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 @@ -9,7 +9,7 @@ enum TranslationAvailability { }; [ - RuntimeEnabled=TranslationAPI, + RuntimeEnabled=TranslationAPIEntryPoint, Exposed=(Window,Worker) ] interface Translation { @@ -31,4 +31,18 @@ interface Translation { Promise createTranslator( TranslationLanguageOptions options ); + [ + RuntimeEnabled=LanguageDetectionAPI, + Measure, + CallWith=ScriptState, + RaisesException + ] + Promise canDetect(); + [ + RuntimeEnabled=LanguageDetectionAPI, + Measure, + CallWith=ScriptState, + RaisesException + ] + Promise createDetector(); }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/on_device_translation/window_or_worker_global_scope_translation.idl b/tools/under-control/src/third_party/blink/renderer/modules/on_device_translation/window_or_worker_global_scope_translation.idl index 0677963a..bf399ebf 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/on_device_translation/window_or_worker_global_scope_translation.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/on_device_translation/window_or_worker_global_scope_translation.idl @@ -4,7 +4,7 @@ [ ImplementedAs=DOMTranslation, - RuntimeEnabled=TranslationAPI, + RuntimeEnabled=TranslationAPIEntryPoint, Exposed=(Window,Worker) ] partial interface mixin WindowOrWorkerGlobalScope { [Replaceable] readonly attribute Translation translation; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/dedicated_worker_global_scope_rtc_rtp_transport_processor.idl b/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/dedicated_worker_global_scope_rtc_rtp_transport_processor.idl new file mode 100755 index 00000000..6f6b2981 --- /dev/null +++ b/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/dedicated_worker_global_scope_rtc_rtp_transport_processor.idl @@ -0,0 +1,8 @@ +// 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. + +[ImplementedAs=DedicatedWorkerGlobalScopeRTCRtpTransportProcessor, RuntimeEnabled=RTCRtpTransport] +partial interface DedicatedWorkerGlobalScope { + attribute EventHandler onrtcrtptransportprocessor; +}; \ No newline at end of file diff --git a/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/dedicated_worker_global_scope_rtc_transform.idl b/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/dedicated_worker_global_scope_rtc_transform.idl new file mode 100755 index 00000000..ac7d77e3 --- /dev/null +++ b/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/dedicated_worker_global_scope_rtc_transform.idl @@ -0,0 +1,10 @@ +// 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://w3c.github.io/webrtc-encoded-transform/#ref-for-dedicatedworkerglobalscope + +[ImplementedAs=DedicatedWorkerGlobalScopeRTCTransform, RuntimeEnabled=RTCRtpScriptTransform] +partial interface DedicatedWorkerGlobalScope { + attribute EventHandler onrtctransform; +}; \ No newline at end of file diff --git a/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_data_channel.idl b/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_data_channel.idl index ac13a829..547d2bab 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_data_channel.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_data_channel.idl @@ -36,7 +36,7 @@ enum RTCDataChannelState { [ ActiveScriptWrappable, - Exposed=Window + Exposed(Window StableBlinkFeatures, DedicatedWorker TransferableRTCDataChannel) ] interface RTCDataChannel : EventTarget { readonly attribute USVString label; readonly attribute boolean ordered; @@ -61,6 +61,9 @@ enum RTCDataChannelState { [RaisesException] void send(ArrayBuffer data); [RaisesException] void send(ArrayBufferView data); + // https://w3c.github.io/webrtc-priority/#datachannel + [RuntimeEnabled=RTCDataChannelPriority] readonly attribute RTCPriorityType priority; + // Non-standard APIs [Measure] readonly attribute boolean reliable; }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_data_channel_init.idl b/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_data_channel_init.idl index 8b5ab27f..1524c503 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_data_channel_init.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_data_channel_init.idl @@ -11,4 +11,7 @@ dictionary RTCDataChannelInit { USVString protocol = ""; boolean negotiated = false; [EnforceRange] unsigned short id; + + // https://w3c.github.io/webrtc-priority/#datachannel + [RuntimeEnabled=RTCDataChannelPriority] RTCPriorityType priority = "low"; }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_encoded_audio_frame.idl b/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_encoded_audio_frame.idl index 291e54df..9520a1ea 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_encoded_audio_frame.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_encoded_audio_frame.idl @@ -11,9 +11,9 @@ [Measure, RaisesException] constructor (RTCEncodedAudioFrame originalFrame, optional RTCEncodedAudioFrameOptions options = {}); readonly attribute unsigned long timestamp; // RTP timestamp. - attribute ArrayBuffer data; + [CallWith=ExecutionContext] attribute ArrayBuffer data; RTCEncodedAudioFrameMetadata getMetadata(); - stringifier; + [CallWith=ExecutionContext] stringifier; [RuntimeEnabled=RTCEncodedFrameSetMetadata, Measure, RaisesException] void setMetadata(RTCEncodedAudioFrameMetadata metadata); }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_encoded_video_frame.idl b/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_encoded_video_frame.idl index 4f62e834..3d8f7b80 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_encoded_video_frame.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_encoded_video_frame.idl @@ -18,9 +18,9 @@ enum RTCEncodedVideoFrameType { constructor (RTCEncodedVideoFrame originalFrame, optional RTCEncodedVideoFrameOptions options = {}); readonly attribute RTCEncodedVideoFrameType type; readonly attribute unsigned long timestamp; // RTP timestamp. - attribute ArrayBuffer data; + [CallWith=ExecutionContext] attribute ArrayBuffer data; RTCEncodedVideoFrameMetadata getMetadata(); [RuntimeEnabled=RTCEncodedFrameSetMetadata, Measure, RaisesException] void setMetadata(RTCEncodedVideoFrameMetadata metadata); - stringifier; + [CallWith=ExecutionContext] stringifier; }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver.idl b/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver.idl index d1731392..dde2f42e 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver.idl @@ -20,4 +20,6 @@ interface RTCRtpReceiver { [Measure, CallWith=ScriptState, RaisesException] RTCInsertableStreams createEncodedStreams(); + [RuntimeEnabled=RTCRtpScriptTransform, RaisesException=Setter] + attribute RTCRtpScriptTransform? transform; }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_rtp_script_transform.idl b/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_rtp_script_transform.idl new file mode 100755 index 00000000..08335037 --- /dev/null +++ b/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_rtp_script_transform.idl @@ -0,0 +1,10 @@ +// 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://w3c.github.io/webrtc-encoded-transform/#rtcrtpscripttransform + +[Exposed=Window, RuntimeEnabled=RTCRtpScriptTransform] +interface RTCRtpScriptTransform { + [CallWith=ScriptState, RaisesException] constructor(Worker worker, optional any options, optional sequence transfer); +}; \ No newline at end of file diff --git a/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_rtp_script_transformer.idl b/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_rtp_script_transformer.idl new file mode 100755 index 00000000..89fdb595 --- /dev/null +++ b/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_rtp_script_transformer.idl @@ -0,0 +1,15 @@ +// 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://w3c.github.io/webrtc-encoded-transform/#rtcrtpscripttransformer + +// TODO(crbug.com/354881878): implement the rest of the spec +[Exposed=DedicatedWorker, RuntimeEnabled=RTCRtpScriptTransform] +interface RTCRtpScriptTransformer : EventTarget { + readonly attribute ReadableStream readable; + [CallWith=ScriptState] Promise sendKeyFrameRequest(); + readonly attribute WritableStream writable; + // Additional context added by the application to configure its transform. + [CachedAttribute=IsOptionsDirty, CallWith=ScriptState] readonly attribute any options; +}; \ No newline at end of file diff --git a/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_rtp_sender.idl b/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_rtp_sender.idl index 33ec5633..88168a42 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_rtp_sender.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_rtp_sender.idl @@ -10,9 +10,9 @@ interface RTCRtpSender { readonly attribute RTCDtlsTransport? rtcpTransport; [CallWith=ScriptState, HighEntropy, Measure] static RTCRtpCapabilities? getCapabilities(DOMString kind); // options argument is defined by https://w3c.github.io/webrtc-extensions/#rtcrtpsender-setparameters-keyframe - [CallWith=ScriptState] Promise setParameters(RTCRtpSendParameters parameters, optional RTCSetParameterOptions options = {}); + [CallWith=ScriptState, RaisesException] Promise setParameters(RTCRtpSendParameters parameters, optional RTCSetParameterOptions options = {}); RTCRtpSendParameters getParameters(); - [Measure, CallWith=ScriptState] Promise replaceTrack(MediaStreamTrack? withTrack); + [Measure, CallWith=ScriptState, RaisesException] Promise replaceTrack(MediaStreamTrack? withTrack); [Measure] readonly attribute RTCDTMFSender? dtmf; [Measure, RaisesException] void setStreams(MediaStream... streams); [CallWith=ScriptState] Promise getStats(); @@ -22,4 +22,7 @@ interface RTCRtpSender { [RuntimeEnabled=RTCRtpTransport] Promise> replaceSendStreams(); + + [RuntimeEnabled=RTCRtpScriptTransform, RaisesException=Setter] + attribute RTCRtpScriptTransform? transform; }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_rtp_transport.idl b/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_rtp_transport.idl index 429dade5..a168c63b 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_rtp_transport.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_rtp_transport.idl @@ -4,13 +4,24 @@ [Exposed=Window, RuntimeEnabled=RTCRtpTransport] interface RTCRtpTransport { - // TODO(crbug.com/345101934): This needs to actually be on some - // Worker-exposed object. Being discussed in - // https://github.com/w3c/webrtc-rtptransport/issues/33. - sequence readReceivedAcks(long maxCount); - - // TODO(crbug.com/345101934): This needs to actually be on some - // Worker-exposed object. Being discussed in - // https://github.com/w3c/webrtc-rtptransport/issues/33. - sequence readSentRtp(long maxCount); + [CallWith=ScriptState, RaisesException] + undefined createProcessor(Worker worker, optional any options, optional sequence transfer); }; + +[Exposed=DedicatedWorker, RuntimeEnabled=RTCRtpTransport] +interface RTCRtpTransportProcessor { + sequence readReceivedAcks(long maxCount); + sequence readSentRtp(long maxCount); + + attribute unsigned long customMaxBandwidth; // bps +}; + +[Exposed=DedicatedWorker, RuntimeEnabled=RTCRtpTransport] +interface RTCRtpTransportProcessorEvent : Event { + readonly attribute RTCRtpTransportProcessor processor; +}; + +[ImplementedAs=DedicatedWorkerGlobalScopeRTCRtpTransportProcessor, RuntimeEnabled=RTCRtpTransport] +partial interface DedicatedWorkerGlobalScope { + attribute EventHandler onrtcrtptransportprocessor; +}; \ No newline at end of file diff --git a/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_transform_event.idl b/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_transform_event.idl new file mode 100755 index 00000000..42e741cb --- /dev/null +++ b/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_transform_event.idl @@ -0,0 +1,10 @@ +// 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://w3c.github.io/webrtc-encoded-transform/#rtctransformevent + +[Exposed=DedicatedWorker, RuntimeEnabled=RTCRtpScriptTransform] +interface RTCTransformEvent : Event { + readonly attribute RTCRtpScriptTransformer transformer; +}; \ No newline at end of file diff --git a/tools/under-control/src/third_party/blink/renderer/modules/sanitizer_api/element_sanitizer.idl b/tools/under-control/src/third_party/blink/renderer/modules/sanitizer_api/element_sanitizer.idl deleted file mode 100755 index bc228442..00000000 --- a/tools/under-control/src/third_party/blink/renderer/modules/sanitizer_api/element_sanitizer.idl +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2021 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/WICG/sanitizer-api - -dictionary ElementSetHTMLOptions { - Sanitizer sanitizer; -}; - -[ - RuntimeEnabled=SanitizerAPI, - SecureContext, - ImplementedAs=ElementSanitizer -] partial interface Element { - [CEReactions, RaisesException, CallWith=ScriptState, MeasureAs=SanitizerAPIElementSetSanitized] void setHTML(DOMString markup, optional ElementSetHTMLOptions options = {}); - -}; - diff --git a/tools/under-control/src/third_party/blink/renderer/modules/sanitizer_api/sanitizer.idl b/tools/under-control/src/third_party/blink/renderer/modules/sanitizer_api/sanitizer.idl deleted file mode 100755 index b91de8a6..00000000 --- a/tools/under-control/src/third_party/blink/renderer/modules/sanitizer_api/sanitizer.idl +++ /dev/null @@ -1,23 +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. - -// https://github.com/WICG/sanitizer-api - -typedef (DocumentFragment or Document) SanitizerInput; - -[ - Exposed=Window, - SecureContext, - RuntimeEnabled=SanitizerAPI -] interface Sanitizer { - [MeasureAs=SanitizerAPICreated, CallWith=ExecutionContext, RaisesException] constructor(optional SanitizerConfig config = {}); - - [MeasureAs=SanitizerAPIToFragment, -CallWith=ScriptState, RaisesException] DocumentFragment sanitize(SanitizerInput input); - [MeasureAs=SanitizerAPISanitizeFor, CallWith=ScriptState, RaisesException] Element? sanitizeFor(DOMString element, DOMString markup); - - [MeasureAs=SanitizerAPIGetConfig] SanitizerConfig getConfiguration(); - [MeasureAs=SanitizerAPIGetDefaultConfig] static SanitizerConfig getDefaultConfiguration(); -}; - diff --git a/tools/under-control/src/third_party/blink/renderer/modules/sanitizer_api/sanitizer_config.idl b/tools/under-control/src/third_party/blink/renderer/modules/sanitizer_api/sanitizer_config.idl deleted file mode 100755 index 7dc68ee8..00000000 --- a/tools/under-control/src/third_party/blink/renderer/modules/sanitizer_api/sanitizer_config.idl +++ /dev/null @@ -1,16 +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. - -// https://wicg.github.io/sanitizer-api/#sanitizer-api - -dictionary SanitizerConfig { - sequence allowElements; - sequence blockElements; - sequence dropElements; - record> allowAttributes; - record> dropAttributes; - boolean allowCustomElements; - boolean allowUnknownMarkup; - boolean allowComments; -}; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/speech/speech_recognition.idl b/tools/under-control/src/third_party/blink/renderer/modules/speech/speech_recognition.idl index dbdc3369..7d23b98f 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/speech/speech_recognition.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/speech/speech_recognition.idl @@ -47,6 +47,16 @@ [RaisesException, Measure, RuntimeEnabled=MediaStreamTrackWebSpeech] void start(MediaStreamTrack track); [ImplementedAs=stopFunction] void stop(); void abort(); + [ + CallWith=ScriptState, + RaisesException, + RuntimeEnabled=OnDeviceWebSpeechAvailable + ] Promise onDeviceWebSpeechAvailable(DOMString lang); + [ + CallWith=ScriptState, + RaisesException, + RuntimeEnabled=InstallOnDeviceSpeechRecognition + ] Promise installOnDeviceSpeechRecognition(DOMString lang); // event methods attribute EventHandler onaudiostart; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/video_rvfc/video_frame_metadata.idl b/tools/under-control/src/third_party/blink/renderer/modules/video_rvfc/video_frame_callback_metadata.idl similarity index 98% rename from tools/under-control/src/third_party/blink/renderer/modules/video_rvfc/video_frame_metadata.idl rename to tools/under-control/src/third_party/blink/renderer/modules/video_rvfc/video_frame_callback_metadata.idl index 00b1409f..4dac9c13 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/video_rvfc/video_frame_metadata.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/video_rvfc/video_frame_callback_metadata.idl @@ -4,7 +4,7 @@ // See https://wicg.github.io/video-rvfc/. -dictionary VideoFrameMetadata { +dictionary VideoFrameCallbackMetadata { // The time at which the user agent submitted the frame for composition. required DOMHighResTimeStamp presentationTime; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/video_rvfc/video_frame_request_callback.idl b/tools/under-control/src/third_party/blink/renderer/modules/video_rvfc/video_frame_request_callback.idl index 90974ced..efa78c8c 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/video_rvfc/video_frame_request_callback.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/video_rvfc/video_frame_request_callback.idl @@ -4,4 +4,4 @@ // See https://wicg.github.io/video-rvfc/. -callback VideoFrameRequestCallback = void(DOMHighResTimeStamp time, VideoFrameMetadata metadata); +callback VideoFrameRequestCallback = void(DOMHighResTimeStamp time, VideoFrameCallbackMetadata metadata); 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 835fdcf6..9ff322ab 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 @@ -30,7 +30,7 @@ [CallWith=ScriptState] GPURenderPipeline createRenderPipeline(GPURenderPipelineDescriptor descriptor); [RaisesException] GPUComputePipeline createComputePipeline(GPUComputePipelineDescriptor descriptor); - [CallWith=ScriptState] Promise createRenderPipelineAsync(GPURenderPipelineDescriptor descriptor); + [CallWith=ScriptState, RaisesException] Promise createRenderPipelineAsync(GPURenderPipelineDescriptor descriptor); [CallWith=ScriptState] Promise createComputePipelineAsync(GPUComputePipelineDescriptor descriptor); GPUCommandEncoder createCommandEncoder(optional GPUCommandEncoderDescriptor descriptor = {}); 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 ec91083e..a3e2a08a 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 @@ -13,4 +13,5 @@ dictionary GPURequestAdapterOptions { GPUPowerPreference powerPreference; boolean forceFallbackAdapter = false; [RuntimeEnabled=WebGPUExperimentalFeatures] boolean compatibilityMode = false; + [RuntimeEnabled=WebXRLayers] boolean xrCompatible = false; }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/xr/xr_gpu_binding.idl b/tools/under-control/src/third_party/blink/renderer/modules/xr/xr_gpu_binding.idl new file mode 100755 index 00000000..2633754a --- /dev/null +++ b/tools/under-control/src/third_party/blink/renderer/modules/xr/xr_gpu_binding.idl @@ -0,0 +1,28 @@ +// 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 XRGPUProjectionLayerInit { + required GPUTextureFormat colorFormat; + GPUTextureFormat? depthStencilFormat; + GPUTextureUsageFlags textureUsage = 0x10; // GPUTextureUsage.RENDER_ATTACHMENT + double scaleFactor = 1.0; +}; + +[ + SecureContext, + Exposed=Window, + RuntimeEnabled=WebXRLayers +] interface XRGPUBinding { + [RaisesException] constructor(XRSession session, GPUDevice device); + + readonly attribute double nativeProjectionScaleFactor; + + [RaisesException] + XRProjectionLayer createProjectionLayer(XRGPUProjectionLayerInit init); + + [RaisesException] + XRGPUSubImage getViewSubImage(XRProjectionLayer layer, XRView view); + + GPUTextureFormat getPreferredColorFormat(); +}; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/xr/xr_gpu_sub_image.idl b/tools/under-control/src/third_party/blink/renderer/modules/xr/xr_gpu_sub_image.idl new file mode 100755 index 00000000..0e14907d --- /dev/null +++ b/tools/under-control/src/third_party/blink/renderer/modules/xr/xr_gpu_sub_image.idl @@ -0,0 +1,15 @@ +// 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. + +[ + SecureContext, + Exposed=Window, + RuntimeEnabled=WebXRLayers +] interface XRGPUSubImage : XRSubImage { + [SameObject] readonly attribute GPUTexture colorTexture; + [SameObject] readonly attribute GPUTexture? depthStencilTexture; + [SameObject] readonly attribute GPUTexture? motionVectorTexture; + + GPUTextureViewDescriptor getViewDescriptor(); +}; 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 75e44e6b..72d0c25e 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 @@ -234,6 +234,11 @@ name: "AccessibilityExposeDisplayNone", status: "test", }, + { + // Use a minimum role of group on elements that are keyboard-focusable. + // See https://w3c.github.io/html-aam/#minimum-role. + name: "AccessibilityMinRoleTabbable", + }, { name: "AccessibilityObjectModel", status: "experimental", @@ -302,6 +307,21 @@ status: "test", base_feature: "EnableAIPromptAPI", }, + { + name: "AIRewriterAPI", + status: "test", + base_feature: "EnableAIRewriterAPI", + }, + { + name: "AISummarizationAPI", + status: "test", + base_feature: "EnableAISummarizationAPI", + }, + { + name: "AIWriterAPI", + status: "test", + base_feature: "EnableAIWriterAPI", + }, { name: "AllowContentInitiatedDataUrlNavigations", base_feature: "none", @@ -407,17 +427,21 @@ name: "AudioVideoTracks", status: "experimental", }, + // Killswitch. Remove after 1 or 2 stable releases. + { + name: "AuraScrollbarUsesNinePatchTrack", + status: "stable", + }, + // Killswitch. Remove after 1 or 2 stable releases. + { + name: "AuraScrollbarUsesSolidColorThumb", + status: "stable", + }, { name: "AutoDarkMode", base_feature: "none", origin_trial_feature_name: "AutoDarkMode", }, - { - // Enables Permissions API query support for Automatic Fullscreen. - // https://chromestatus.com/feature/6218822004768768 - name: "AutomaticFullscreenPermissionsQuery", - status: "stable", - }, { name: "AutomationControlled", base_feature: "none", @@ -480,6 +504,13 @@ "default": "test", }, }, + { + // When the element href attribute scheme is "data" or "javascript", + // set element's frozen base URL to document's fallback base URL. + // This feature was shipped in M129, so this flag can be removed in M131. + name: "BaseElementUrlUseFallback", + status: "stable", + }, { // There are two different code changes guarded by this feature. Both // are about triggering a beforeunload cancel dialog and need adoption @@ -570,7 +601,7 @@ base_feature: "EnableBuiltInAIAPI", base_feature_status: "enabled", copied_from_base_feature_if: "overridden", - implied_by: ["AIPromptAPI"] + implied_by: ["AIPromptAPI", "AIRewriterAPI", "AISummarizationAPI", "AIWriterAPI"] }, { // Bypasses the enforcement of the Page Embedded Permission Control @@ -585,6 +616,10 @@ status: "experimental", base_feature: "none", }, + { + name: "CallExitNodeWithoutLayoutObject", + status: "stable", + }, { name: "Canvas2dCanvasFilter", status: "experimental", @@ -606,10 +641,6 @@ origin_trial_feature_name: "Canvas2dMesh", status: "test", }, - { - name: "Canvas2dScrollPathIntoView", - status: "experimental", - }, { name: "CanvasFloatingPoint", status: "experimental", @@ -622,6 +653,11 @@ name: "CanvasImageSmoothing", status: "experimental", }, + { + // https://github.com/Igalia/explainers/blob/main/canvas-formatted-text/html-in-canvas.md + name: "CanvasPlaceElement", + status: "experimental", + }, { // Kill switch for https://crbug.com/330506337. name: "CanvasUsesArcPaintOp", @@ -692,7 +728,7 @@ // to do that for the target according to the new spec: // https://w3c.github.io/selection-api/#scheduling-selectionhange-event name: "CoalesceSelectionchangeEvent", - status: "experimental", + status: "stable", }, { name: "CoepReflection", @@ -763,6 +799,10 @@ name: "ContactsManagerExtraProperties", status: {"Android": "stable", "default": "test"}, }, + { + name: "ContainerTypeNoLayoutContainment", + status: "stable", + }, { name: "ContentIndex", status: {"Android": "stable", "default": "experimental"}, @@ -824,18 +864,10 @@ // https://drafts.csswg.org/css-values-4/#attr-notation name: "CSSAdvancedAttrFunction", }, - { - // Allows positioning a positioned element relative to another one. - // https://drafts.csswg.org/css-anchor-1/ - name: "CSSAnchorPositioning", - implied_by: ["HTMLSelectListElement"], - status: "stable", - }, { // Support for the anchor-scope property. // https://drafts.csswg.org/css-anchor-position-1/#anchor-scope name: "CSSAnchorScope", - depends_on: ["CSSAnchorPositioning"], status: "experimental", }, { @@ -861,8 +893,10 @@ }, { // https://chromestatus.com/feature/5196713071738880 + // Shipped in M129. Should be safe to remove the flag a bit after + // M129 has shipped to stable. name: "CSSCalcSizeFunction", - status: "experimental", + status: "stable", }, { // Support case-sensitive attribute selector modifier @@ -922,6 +956,11 @@ name: "CSSDisplayModePictureInPicture", status: "stable", }, + { + // crbug.com/353228153 + name: "CssDisplaySerialziationFix", + status: "stable", + }, { name: "CSSDynamicRangeLimit", status: "experimental", @@ -950,6 +989,11 @@ name: "CSSFunctions", status: "test", }, + { + // https://chromestatus.com/feature/5157805733183488 + name: "CSSGapDecoration", + status: "test", + }, { // This needs to be kept as a runtime flag as long as we need to forcibly // disable it for WebView on Android versions older than P. See @@ -958,10 +1002,12 @@ status: "stable", }, { - // For the position-try-fallbacks property, replaces the inset-area() - // syntax with just <'inset-area'>. - name: "CSSInsetAreaValue", - status: "experimental", + // The `inset-area` CSS property has been renamed to `position-area`. This + // feature (CSSInsetAreaProperty) enables the old `inset-area` property. + // This is enabled by default for now, but deprecated in M129. The plan is + // to disable it starting in M131. + name: "CSSInsetAreaProperty", + status: "stable", }, { // https://chromestatus.com/feature/6289894144212992 @@ -990,6 +1036,10 @@ name: "CSSMarkerNestedPseudoElement", status: "experimental", }, + { + name: "CSSMasonryLayout", + status: "test", + }, { name: "CSSMixins", }, @@ -1002,6 +1052,21 @@ // See crbug.com/1485525. name: "CSSParserIgnoreCharsetForURLs", }, + { + // The `inset-area` CSS property has been renamed to `position-area`. This + // feature (CSSPositionAreaProperty) enables the new `position-area` + // property. This is shipped in M129, and (depending on the status of the + // CSSInsetAreaProperty feature) can be removed in M131. + name: "CSSPositionAreaProperty", + status: "stable", + }, + { + // For the position-try-fallbacks property, replaces the inset-area() + // syntax (which had the old "inset-area" name) with just a + // <'position-area'>. + name: "CSSPositionAreaValue", + status: "stable", + }, { name: "CSSPositionStickyStaticScrollPosition", status: "test", @@ -1010,7 +1075,6 @@ // position-try-options has been renamed to position-try-fallbacks. // This feature was shipped in M128, so this flag can be removed in M130. name: "CSSPositionTryFallbacks", - depends_on: ["CSSAnchorPositioning"], status: "stable", }, { @@ -1020,21 +1084,6 @@ // This feature was disabled in M128, so this flag (and the code to // implement `position-try-options`) can be removed in M130. name: "CSSPositionTryOptions", - depends_on: ["CSSAnchorPositioning"], - }, - { - // Support the position-try-order property. - // https://drafts.csswg.org/css-anchor-position-1/#position-try-order-property - name: "CSSPositionTryOrder", - implied_by: ["CSSAnchorPositioning"], - }, - { - // Support the position-visibility property for anchor positioning. - // https://drafts.csswg.org/css-anchor-position-1/#position-visibility - // TODO(crbug.com/332933527): Support anchors-valid and no-overflow. For - // now, this only supports always and anchors-visible. - name: "CSSPositionVisibility", - implied_by: ["CSSAnchorPositioning"], }, // https://drafts.csswg.org/css-values-5/#progress // progress(), media-progress(), container-progress() @@ -1055,11 +1104,19 @@ name: "CSSPseudoPlayingPaused", status: "test", }, + { + // For ::scroll-up-button and ::scroll-down-button pseudo elements for Carousel. + // https://github.com/flackr/carousel/tree/main/scroll-button + name: "CSSPseudoScrollButtons", + status: "experimental", + depends_on: ["PseudoElementsFocusable"], + }, { // For ::scroll-marker and ::scroll-marker-group pseudo elements for Carousel. // https://github.com/flackr/carousel/tree/main/scroll-marker name: "CSSPseudoScrollMarkers", status: "experimental", + depends_on: ["PseudoElementsFocusable"], }, { // TODO(crbug.com/40932006): Non-standard 'reading-flow' keyword @@ -1073,6 +1130,11 @@ name: "CSSRelativeColor", status: "stable", }, + { + // crbug.com/325309578 + name: "CSSRelativeColorSupportsCurrentcolor", + status: "test", + }, { // Non-standard 'auto' keyword for the CSS resize property. Used for // selectively enable resize corner for textarea via UA stylesheet, but @@ -1090,17 +1152,17 @@ { // https://drafts.csswg.org/css-scroll-snap-2/#scrollsnapchange name: "CSSScrollSnapChangeEvent", - status: "experimental", + status: "stable", }, { // https://drafts.csswg.org/css-scroll-snap-2/#scrollsnapchanging name: "CSSScrollSnapChangingEvent", - status: "experimental", + status: "stable", }, { // https://drafts.csswg.org/css-scroll-snap-2/#snap-events name: "CSSScrollSnapEvents", - status: "experimental", + status: "stable", implied_by: ["CSSScrollSnapChangeEvent", "CSSScrollSnapChangingEvent"], }, { @@ -1298,10 +1360,18 @@ "default": "test" }, }, + { + // Shipping in M130. Flag should be removed after M130 has been + // shipping to stable for a few weeks. + name: "DirAutoFixSlotExclusions", + status: "stable", + }, { name: "DirectSockets", public: true, status: "experimental", + base_feature_status: "enabled", + copied_from_base_feature_if: "overridden", }, { // Shipping in M121. Flag should be removed after M121 has been @@ -1540,7 +1610,7 @@ }, { name: "DynamicScrollCullRectExpansion", - status: "experimental", + status: "stable", }, { name: "ElementCapture", @@ -1565,10 +1635,28 @@ name: "EscapeLtGtInAttributes", status: "experimental", }, + { + name: "EventTimingHandleKeyboardEventSimulatedClick", + status: "experimental", + }, { name: "EventTimingInteractionCount", status: "experimental", }, + { + // When the fling is active, a tap on the page can stop scroll. When + // calculating the input latency, we should exclude all the input events + // caused by this tap. + name: "EventTimingTapStopScrollNoInteractionId", + status: "experimental", + }, + // Killswitch. Remove after 1-2 stable releases, and rename + // cc::ScrollNode::main_thread_scrolling_reasons to + // main_thread_repaint_reasons. + { + name: "ExcludePopupMainThreadScrollingReason", + status: "stable", + }, { name: "ExcludeTransparentTextsFromBeingLcpEligible", status: "experimental", @@ -1582,6 +1670,11 @@ name: "ExperimentalJSProfilerMarkers", status: "experimental", }, + { + name: "ExperimentalMachineLearningNeuralNetwork", + // Enabled by webnn::mojom::features::kExperimentalWebMachineLearningNeuralNetwork. + base_feature: "none", + }, { name: "ExperimentalPolicies", status: "experimental", @@ -1620,6 +1713,11 @@ name: "FasterMinContent", status: "stable", }, + { + name: "FastNonCompositedScrollHitTest", + depends_on: ["HitTestOpaqueness", "RasterInducingScroll"], + status: "test", + }, // Kill switch. { name: "FastPathSingleSelectorExactMatch", @@ -1835,12 +1933,13 @@ name: "FileSystemObserver", depends_on: ["FileSystemAccess"], status: "experimental", + origin_trial_feature_name: "FileSystemObserver", + origin_trial_os: ["win", "mac", "linux", "chromeos"], }, { // The unobserve function of the FileSystemObserver. // See https://crbug.com/321980469. name: "FileSystemObserverUnobserve", - depends_on: ["FileSystemObserver"], status: "experimental", }, { @@ -1853,19 +1952,15 @@ base_feature: "none", public: true, }, + { + // Enables deal support within auctions. + name: "FledgeAuctionDealSupport", + }, { name: "FledgeBiddingAndAuctionServerAPI", origin_trial_feature_name: "FledgeBiddingAndAuctionServer", origin_trial_allows_third_party: true, }, - { - name: "FledgeClearOriginJoinedAdInterestGroups", - status: "stable", - }, - { - name: "FledgeCreateAuctionNonceSynchronousResolution", - status: "stable", - }, { name: "FledgeCustomMaxAuctionAdComponents", status: "stable", @@ -1887,7 +1982,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: ["FledgePermitCrossOriginTrustedSignals", + "FledgeRealTimeReporting"], base_feature: "none", }, { @@ -1897,6 +1993,7 @@ implied_by: ["FledgeCustomMaxAuctionAdComponents", "FledgeDeprecatedRenderURLReplacements", "FledgePermitCrossOriginTrustedSignals", + "FledgeRealTimeReporting", "FledgeReportingTimeout"], base_feature: "none", }, @@ -1905,10 +2002,6 @@ public: true, status: "stable", }, - { - name: "FledgeNegativeTargeting", - status: "stable", - }, { // Permit trusted signals to come cross-origin, subject to CORS on the // trusted server side and opt-in on the worklet script side. @@ -1928,8 +2021,8 @@ status: "stable", }, { - name: "FledgeTrustedBiddingSignalsSlotSize", - status: "stable", + name: "FledgeTrustedSignalsKVv2Support", + status: "test", }, { name: "FluentOverlayScrollbars", @@ -2032,10 +2125,6 @@ name: "ForceTallerSelectPopup", status: {"ChromeOS_Ash": "stable", "ChromeOS_Lacros": "stable"}, }, - { - name: "FormattedText", - status: "experimental", - }, { // TODO(crbug.com/1419161): Remove this feature after M113 has been stable // for a few weeks or more. This is a kill switch that, when enabled, goes @@ -2102,6 +2191,10 @@ name: "HandleDeletionWithNonEditableContentAtBlockBoundary", status: "stable", }, + { + name: "HandleSelectionChangeOnDeletingEmptyElement", + status: "stable", + }, { name: "HandwritingRecognition", status: { @@ -2287,11 +2380,6 @@ name: "InnerHTMLParserFastpathLogFailure", status: "experimental", }, - { - // Kill switch for https://crbug.com/40877677 - name: "InputClipRulesCss", - status: "stable", - }, { name: "InputMultipleFieldsUI", // No plan to support complex UI for date/time INPUT types on Android and @@ -2328,6 +2416,9 @@ status: "stable", base_feature: "none", }, + { + name: "InstallOnDeviceSpeechRecognition", + }, { name: "InteroperablePrivateAttribution", status: "experimental", @@ -2343,7 +2434,7 @@ }, { name: "IntersectionOptimization", - status: "experimental", + status: "stable", }, { name: "InvertedColors", @@ -2358,6 +2449,12 @@ status: "experimental", origin_trial_feature_name: "JavaScriptCompileHintsMagic", }, + { + // Fix to crbug.com/40934455. + // Should be removed a bit after M129 reaches stable. + name: "KeepActiveIfLabelActive", + status: "stable", + }, { // Allows :target to match elements even after they are removed and // reattached to the document. Enabled in M128, should be safe to remove @@ -2384,9 +2481,9 @@ // keyboard focusable by default. name: "KeyboardFocusableScrollersOptOut", origin_trial_feature_name: "KeyboardFocusableScrollersOptOut", - // This is not a deprecation feature, but we need this type to set the - // origin trial. This feature will allow sites to have time to adjust to - // the breaking change by opting out. + // This is not a feature that is being deprecated, but the origin trial + // *is* being used to allow sites to opt back out of the feature launch. + // So we're marking it as a "deprecation" trial. origin_trial_type: "deprecation", origin_trial_allows_insecure: true, origin_trial_allows_third_party: true, @@ -2407,9 +2504,12 @@ name: "LangAttributeAwareFormControlUI", settable_from_internals: true, }, + { + name: "LanguageDetectionAPI", + status: "experimental", + }, { name: "LastSuccessfulPositionOption", - depends_on: ["CSSAnchorPositioning"], status: "stable", }, { @@ -2420,7 +2520,7 @@ name: "LayoutIgnoreMarginsForSticky", }, { - name: "LayoutMasonry", + name: "LayoutJustifySelfForBlocks", status: "test", }, { @@ -2581,6 +2681,10 @@ name: "MediaLatencyHint", status: "test", }, + { + name: "MediaPlaybackWhileNotVisiblePermissionPolicy", + status: "test", + }, { name: "MediaPreviewsOptOut", base_feature: "none", @@ -2643,6 +2747,12 @@ name: "MetaRefreshNoFractional", status: "stable", }, + { + // If enabled, meter elements will render with a fallback style when + // appearance is set to none. + name: "MeterAppearanceNoneFallbackStyle", + status: "experimental", + }, // This is enabled by default on Windows only. The only part that's // "experimental" is the support on other platforms. { @@ -2687,6 +2797,10 @@ name: "MoveEndingSelectionToListChild", status: "stable", }, + { + name: "MoveToParagraphStartOrEndSkipsNonEditable", + status: "stable", + }, { name: "MultiSelectDeselectWhenOnlyOption", status: "test", @@ -2735,6 +2849,10 @@ // Android does not yet support NavigatorContentUtils. status: {"Android": "", "default": "stable"}, }, + { + name: "NestedViewTransition", + status: "experimental", + }, { name: "NetInfoConstantType", }, @@ -2788,14 +2906,11 @@ status: "stable", }, { - // TODO(crbug.com/924486): This feature enables the deprecated values - // inner-spin-button, push-button, searchfield-cancel-button, - // slider-horizontal, square-button. Disable this feature to stop - // parsing or allowing these values. - // This feature is disabled in fieldtrial testing config because we are - // testing the deprecation via Finch. - // https://drafts.csswg.org/css-ui-4/#appearance-switching - name: "NonStandardAppearanceValuesHighUsage", + // Input event data for textarea should not be null for certain + // inputTypes. + // https://issues.chromium.org/issues/40737336 + name: "NonNullInputEventDataForTextArea", + status: "stable" }, { // TODO(crbug.com/1426629): This feature enables the deprecated value @@ -2853,6 +2968,9 @@ // Android does not yet support SystemMonitor. status: {"Android": "", "default": "stable"}, }, + { + name: "OnDeviceWebSpeechAvailable", + }, { name: "OrientationEvent", status: {"Android": "stable"}, @@ -3033,6 +3151,10 @@ name: "Parakeet", origin_trial_feature_name: "Parakeet", }, + { + name: "PartitionedPopins", + status: "experimental", + }, // This is to add an option to enable the Reveal button on password inputs while waiting ::reveal gets standardized. { name: "PasswordReveal", @@ -3136,6 +3258,12 @@ name: "PointerEventDeviceId", status: "stable", }, + // Coalesced/predicted event targets in untrusted events. + // See https://crbug.com/353538500 + { + name: "PointerEventTargetsInEventLists", + status: "experimental", + }, { name: "PositionOutsideTabSpanCheckSiblingNode", status: "stable", @@ -3206,6 +3334,12 @@ name:"PrettyPrintJSONDocument", status: "stable", }, + { + // When enabled, prevents undo to be applied if the enclosing block + // is not editable + name: "PreventUndoIfNotEditable", + status: "stable" + }, { // Controls whether filtering IDs can be specified for Private Aggregation // contributions. If disabled, any IDs will be ignored. @@ -3283,6 +3417,11 @@ implied_by: ["ProtectedOriginTrialsSampleAPI"], is_protected_feature: "true", }, + { + // Allowing pseudo elements to have focus. + name: "PseudoElementsFocusable", + status: "experimental", + }, { name: "PushMessaging", public: true, @@ -3447,6 +3586,10 @@ status: "experimental", base_feature: "none", }, + { + name: "RTCDataChannelPriority", + status: "experimental", + }, { name: "RTCEncodedAudioFrameAbsCaptureTime", status: "experimental", @@ -3487,6 +3630,10 @@ name: "RTCRtpHeaderExtensionControl", status: "stable", }, + { + name: "RTCRtpScriptTransform", + status: "experimental", + }, { name: "RTCRtpTransport", status: "test", @@ -3536,9 +3683,7 @@ }, { name: "SchedulerYield", - origin_trial_feature_name: "SchedulerYield", - origin_trial_allows_third_party: true, - status: "experimental", + status: "stable", }, { // https://wicg.github.io/webcomponents/proposals/Scoped-Custom-Element-Registries @@ -3571,6 +3716,13 @@ name: "ScrollEndEvents", status: "stable", }, + // TODO(355460994): Remove after M129. + // scroll into root frame didn't take scrollbar and borders into account, + // while this is fixed, to avoid any web compat issues we have this killswitch. + { + name: "ScrollIntoViewRootFrameViewportBugFix", + status: "stable", + }, // Killswitch. Remove after M126 or M127 stable. { name: "ScrollNodeForOverflowHidden", @@ -3705,6 +3857,22 @@ name: "SetSequentialFocusStartingPoint", status: "experimental", }, + { + // Reference Target allows IDREF attributes to refer inside Shadow DOM. + // crbug.com/346835896 + name: "ShadowRootReferenceTarget", + status: "test", + }, + { + // crbug.com/360716751 + name: "ShapeOutsideClippedImageFix", + status: "stable", + }, + { + // crbug.com/359616076 and crbug.com/360158400 + name: "ShapeOutsideWritingModeFix", + status: "experimental", + }, { // crbug.com/329677645 name: "ShapeResultCachedPreviousSafeToBreakOffset", @@ -3764,7 +3932,7 @@ { // crbug.com/40501131 name: "SidewaysWritingModes", - status: "test", + status: "experimental", }, { name: "SignatureBasedIntegrity", @@ -3947,10 +4115,27 @@ name: "SvgNoPixelSnappingScaleAdjustment", status: "stable", }, + { + // Feature for optimizing SVG transform changes. This is a kill switch in + // case we encounter issues with these optimizations. + name: "SvgTransformOptimization", + status: "stable", + }, { name: "SynthesizedKeyboardEventsForAccessibilityActions", status: "experimental", }, + { + // This is used for emoji variation selectors support in system + // fallback matching. This is a workaround solution that helps to + // avoid incorrect font matching due to lack of cmap format 14 + // subtable in system emoji fonts on various platforms. + // This should be eventually removed when the custom emoji font + // is shipped with Chrome or when system emoji fonts will have + // cmap format 14 subtable. + name: "SystemFallbackEmojiVSSupport", + status: "test", + }, { name: "SystemWakeLock", status: "experimental", @@ -4011,11 +4196,6 @@ name: "TextAlignJustifyBidiIsolate", status: "stable", }, - { - // crbug.com/331729346 - name: "TextAlignLastJustifyNewLine", - status: "stable", - }, { // This is a kill switch for the fix to crbug.com/333940413. It landed // in M126, and can be removed if all is well by M128. @@ -4143,6 +4323,10 @@ status: "experimental", base_feature: "none", }, + { + name: "TransferableRTCDataChannel", + status: "experimental", + }, // This is conditionally set if the platform supports translation. { name: "TranslateService", @@ -4152,6 +4336,11 @@ status: "test", base_feature: "EnableTranslationAPI", }, + { + name: "TranslationAPIEntryPoint", + status: "test", + implied_by: ["TranslationAPI", "LanguageDetectionAPI"], + }, { name: "TrustedTypeBeforePolicyCreationEvent", status: "experimental", @@ -4171,7 +4360,7 @@ // preventDefault(), instead of waiting for the browser to send // touchscrollstarted. name: "UnblockTouchMoveEarlier", - status: "experimental", + status: "stable", }, { name: "UnclosedFormControlIsInvalid", @@ -4202,7 +4391,7 @@ // bypass the USB blocklist. { name: "UnrestrictedUsb", - status: "experimental", + status: "stable", depends_on: ["WebUSB"], }, { @@ -4264,6 +4453,11 @@ base_feature: "none", public: true, }, + { + // crbug.com/356190942 + name: "VerticalInputRangeKeyOperationFix", + status: "stable", + }, { // Whether a video element should automatically play fullscreen unless // 'playsinline' is set. @@ -4287,6 +4481,12 @@ { name: "VideoTrackGeneratorInWorker", }, + { + // This is a kill switch for a fix where viewport changes did not update + // the text autosizer, see: crbug.com/359910401. + name: "ViewportChangesUpdateTextAutosizing", + status: "stable", + }, { name: "ViewportHeightClientHintHeader", status: "stable", @@ -4435,12 +4635,19 @@ name: "WebAuthAuthenticatorAttachment", status: "test", }, + // https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptions-attestationformats + { + name: "WebAuthenticationAttestationFormats", + status: "experimental", + }, + // Methods for deserializing WebAuthn requests from JSON/serializing + // responses into JSON. // https://w3c.github.io/webauthn/#dom-publickeycredential-tojson // https://w3c.github.io/webauthn/#sctn-parseCreationOptionsFromJSON // https://w3c.github.io/webauthn/#sctn-parseRequestOptionsFromJSON { name: "WebAuthenticationJSONSerialization", - status: "experimental", + status: "stable", }, { name: "WebAuthenticationLargeBlobExtension", @@ -4508,10 +4715,6 @@ name: "WebCryptoCurve25519", status: "experimental", }, - { - name: "WebExposedScrollOffset", - status: "stable", - }, { name: "WebFontResizeLCP", status: "experimental", @@ -4558,7 +4761,7 @@ }, { name: "WebGPUHDR", - status: "experimental", + status: "stable", }, { // Using subgroup related features in WebGPU. @@ -4774,11 +4977,6 @@ { name: "WindowDefaultStatus", }, - // Allows sites to request fullscreen when the set of screens change. - { - name: "WindowPlacementFullscreenOnScreensChange", - status: "experimental", - }, { // Allows browser-providers writing suggestions to be turned on/off // through the attribute. diff --git a/tools/under-control/src/third_party/blink/web_tests/virtual/stable/webexposed/global-interface-listing-expected.txt b/tools/under-control/src/third_party/blink/web_tests/virtual/stable/webexposed/global-interface-listing-expected.txt index ebdc68d6..64194e08 100755 --- a/tools/under-control/src/third_party/blink/web_tests/virtual/stable/webexposed/global-interface-listing-expected.txt +++ b/tools/under-control/src/third_party/blink/web_tests/virtual/stable/webexposed/global-interface-listing-expected.txt @@ -694,7 +694,9 @@ interface CSSPositionTryDescriptors : CSSStyleDeclaration getter place-self getter placeSelf getter position-anchor + getter position-area getter positionAnchor + getter positionArea getter right getter top getter width @@ -765,7 +767,9 @@ interface CSSPositionTryDescriptors : CSSStyleDeclaration setter place-self setter placeSelf setter position-anchor + setter position-area setter positionAnchor + setter positionArea setter right setter top setter width @@ -1732,6 +1736,8 @@ interface Document : Node getter onresume getter onscroll getter onscrollend + getter onscrollsnapchange + getter onscrollsnapchanging getter onsearch getter onsecuritypolicyviolation getter onseeked @@ -1949,6 +1955,8 @@ interface Document : Node setter onresume setter onscroll setter onscrollend + setter onscrollsnapchange + setter onscrollsnapchanging setter onsearch setter onsecuritypolicyviolation setter onseeked @@ -2480,8 +2488,6 @@ interface Fence method setReportEventDataForAutomaticBeacons interface FencedFrameConfig attribute @@toStringTag - getter height - getter width method constructor method setSharedStorageContext interface File : Blob @@ -3426,6 +3432,8 @@ interface HTMLElement : Element getter onresize getter onscroll getter onscrollend + getter onscrollsnapchange + getter onscrollsnapchanging getter onsecuritypolicyviolation getter onseeked getter onseeking @@ -3559,6 +3567,8 @@ interface HTMLElement : Element setter onresize setter onscroll setter onscrollend + setter onscrollsnapchange + setter onscrollsnapchanging setter onsecuritypolicyviolation setter onseeked setter onseeking @@ -5338,6 +5348,8 @@ interface MathMLElement : Element getter onresize getter onscroll getter onscrollend + getter onscrollsnapchange + getter onscrollsnapchanging getter onsecuritypolicyviolation getter onseeked getter onseeking @@ -5447,6 +5459,8 @@ interface MathMLElement : Element setter onresize setter onscroll setter onscrollend + setter onscrollsnapchange + setter onscrollsnapchanging setter onsecuritypolicyviolation setter onseeked setter onseeking @@ -6816,12 +6830,15 @@ interface ProtectedAudience interface PublicKeyCredential : Credential static method isConditionalMediationAvailable static method isUserVerifyingPlatformAuthenticatorAvailable + static method parseCreationOptionsFromJSON + static method parseRequestOptionsFromJSON attribute @@toStringTag getter authenticatorAttachment getter rawId getter response method constructor method getClientExtensionResults + method toJSON interface PushManager static getter supportedContentEncodings attribute @@toStringTag @@ -7527,6 +7544,8 @@ interface SVGElement : Element getter onresize getter onscroll getter onscrollend + getter onscrollsnapchange + getter onscrollsnapchanging getter onsecuritypolicyviolation getter onseeked getter onseeking @@ -7638,6 +7657,8 @@ interface SVGElement : Element setter onresize setter onscroll setter onscrollend + setter onscrollsnapchange + setter onscrollsnapchanging setter onsecuritypolicyviolation setter onseeked setter onseeking @@ -8453,6 +8474,7 @@ interface Scheduler attribute @@toStringTag method constructor method postTask + method yield interface Scheduling attribute @@toStringTag method constructor @@ -8695,6 +8717,11 @@ interface SharedWorker : EventTarget getter port method constructor setter onerror +interface SnapEvent : Event + attribute @@toStringTag + getter snapTargetBlock + getter snapTargetInline + method constructor interface SourceBuffer : EventTarget attribute @@toStringTag getter appendWindowEnd @@ -11803,6 +11830,8 @@ namespace console getter onresize getter onscroll getter onscrollend + getter onscrollsnapchange + getter onscrollsnapchanging getter onsearch getter onsecuritypolicyviolation getter onseeked @@ -12021,6 +12050,8 @@ namespace console setter onresize setter onscroll setter onscrollend + setter onscrollsnapchange + setter onscrollsnapchanging setter onsearch setter onsecuritypolicyviolation setter onseeked