diff --git a/tools/under-control/src/RELEASE b/tools/under-control/src/RELEASE index 778f62751..6596301e0 100644 --- a/tools/under-control/src/RELEASE +++ b/tools/under-control/src/RELEASE @@ -1 +1 @@ -133.0.6943.127 +134.0.6998.24 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 f9e3e0e54..d0e9dec32 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 @@ -188,10 +188,6 @@ class XrwNavigationThrottle : public content::NavigationThrottle { base::WeakPtr GetAsyncCheckTracker( const base::RepeatingCallback& wc_getter, content::FrameTreeNodeId frame_tree_node_id) { - if (!base::FeatureList::IsEnabled( - safe_browsing::kSafeBrowsingAsyncRealTimeCheck)) { - return nullptr; - } content::WebContents* web_contents = wc_getter.Run(); // Check whether current frame is a pre-rendered frame. WebView does not // support NoStatePrefetch, so we do not check for that. @@ -582,8 +578,9 @@ void AwContentBrowserClient::GetAdditionalMappedFilesForChildProcess( } } -void AwContentBrowserClient::OverrideWebkitPrefs( +void AwContentBrowserClient::OverrideWebPreferences( content::WebContents* web_contents, + content::SiteInstance& main_frame_site, blink::web_pref::WebPreferences* web_prefs) { AwSettings* aw_settings = AwSettings::FromWebContents(web_contents); if (aw_settings) { @@ -1017,6 +1014,14 @@ bool AwContentBrowserClient::ShouldDisableSiteIsolation( return true; } +bool AwContentBrowserClient::ShouldDisableOriginIsolation() { + // Since AW does not yet support OOPIFs, we must return true here to disable + // features that may trigger OOPIFs, such as origin isolation. + // + // Adding OOPIF support for AW is tracked by https://crbug.com/806404. + return true; +} + bool AwContentBrowserClient::ShouldLockProcessToSite( content::BrowserContext* browser_context, const GURL& effective_url) { @@ -1266,8 +1271,7 @@ bool AwContentBrowserClient::HasErrorPage(int http_status_code) { bool AwContentBrowserClient::SuppressDifferentOriginSubframeJSDialogs( content::BrowserContext* browser_context) { - return base::FeatureList::IsEnabled( - features::kWebViewSuppressDifferentOriginSubframeJSDialogs); + return false; } bool AwContentBrowserClient::ShouldPreconnectNavigation( 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 0ce806e8f..b9738a531 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 @@ -28,6 +28,7 @@ #include "third_party/blink/public/common/features_generated.h" #include "ui/android/ui_android_features.h" #include "ui/gl/gl_features.h" +#include "ui/gl/gl_switches.h" namespace internal { @@ -101,9 +102,11 @@ void AwFieldTrials::RegisterFeatureOverrides(base::FeatureList* feature_list) { aw_feature_overrides.DisableFeature( net::features::kThirdPartyStoragePartitioning); +#if BUILDFLAG(ENABLE_VALIDATING_COMMAND_DECODER) // Disable the passthrough on WebView. aw_feature_overrides.DisableFeature( ::features::kDefaultPassthroughCommandDecoder); +#endif // HDR does not support webview yet. See crbug.com/1493153 for an explanation. aw_feature_overrides.DisableFeature(ui::kAndroidHDR); @@ -239,6 +242,10 @@ void AwFieldTrials::RegisterFeatureOverrides(base::FeatureList* feature_list) { aw_feature_overrides.DisableFeature( ::features::kFocusRenderWidgetHostViewAndroidOnActionDown); + // Disabling the permission element as it needs embedder support in order to + // function and the webview permission manager cannot support it. + aw_feature_overrides.DisableFeature(blink::features::kPermissionElement); + if (base::CommandLine::ForCurrentProcess()->HasSwitch(switches::kDebugBsa)) { // Feature parameters can only be set via a field trial. const char kTrialName[] = "StudyDebugBsa"; @@ -259,7 +266,7 @@ void AwFieldTrials::RegisterFeatureOverrides(base::FeatureList* feature_list) { // Feature parameters can only be set via a field trial. // Note: Performing a field trial here means we cannot include - // |kDIPSTtl| in the testing config json. + // |kBtmTtl| in the testing config json. { const char kDipsWebViewExperiment[] = "DipsWebViewExperiment"; const char kDipsWebViewGroup[] = "DipsWebViewGroup"; @@ -268,18 +275,18 @@ void AwFieldTrials::RegisterFeatureOverrides(base::FeatureList* feature_list) { CHECK(dips_field_trial) << "Unexpected name conflict."; base::FieldTrialParams params; const std::string ttl_time_delta_30_days = "30d"; - params.emplace(features::kDIPSInteractionTtl.name, ttl_time_delta_30_days); + params.emplace(features::kBtmInteractionTtl.name, ttl_time_delta_30_days); base::AssociateFieldTrialParams(kDipsWebViewExperiment, kDipsWebViewGroup, params); aw_feature_overrides.OverrideFeatureWithFieldTrial( - features::kDIPSTtl, + features::kBtmTtl, base::FeatureList::OverrideState::OVERRIDE_ENABLE_FEATURE, dips_field_trial); } // Delete Incidental Party State (DIPS) feature is not yet supported on // WebView. - aw_feature_overrides.DisableFeature(::features::kDIPS); + aw_feature_overrides.DisableFeature(::features::kBtm); // These features have shown performance improvements in WebView but not some // other platforms. @@ -301,6 +308,9 @@ void AwFieldTrials::RegisterFeatureOverrides(base::FeatureList* feature_list) { // Disable Topics on WebView. aw_feature_overrides.DisableFeature(blink::features::kBrowsingTopics); + // Sharing ANGLE's Vulkan queue is not supported on WebView. + aw_feature_overrides.DisableFeature(::features::kVulkanFromANGLE); + // Temporarily turn off kFileSystemAccessDirectoryIterationBlocklistCheck for // a kill switch. https://crbug.com/393606977 aw_feature_overrides.DisableFeature( diff --git a/tools/under-control/src/chrome/android/java/AndroidManifest.xml b/tools/under-control/src/chrome/android/java/AndroidManifest.xml index 7151c54ac..5b5fe60a4 100755 --- a/tools/under-control/src/chrome/android/java/AndroidManifest.xml +++ b/tools/under-control/src/chrome/android/java/AndroidManifest.xml @@ -122,7 +122,7 @@ by a child template that "extends" this file. - + {% endif %} @@ -446,6 +446,18 @@ by a child template that "extends" this file. + + + + + + + + + + + + - @@ -1225,7 +1239,7 @@ by a child template that "extends" this file. {% endif %} /> {% endfor %} - {% set num_privileged_services = 5 %} + {% set num_privileged_services = 10 %} @@ -1275,6 +1289,11 @@ by a child template that "extends" this file. {% endif %} + {% if enable_vr == "true" %} + + + {% endif %} + + + + + {% block base_application_definitions %} {% endblock %} {% block extra_application_definitions_for_test %} 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 1068106ef..e7f573eff 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 @@ -6,6 +6,7 @@ #include +#include #include #include #include @@ -24,7 +25,6 @@ #include "base/metrics/histogram_macros.h" #include "base/metrics/user_metrics.h" #include "base/not_fatal_until.h" -#include "base/ranges/algorithm.h" #include "base/strings/strcat.h" #include "base/task/bind_post_task.h" #include "base/task/thread_pool.h" @@ -70,7 +70,6 @@ #include "chrome/browser/profiles/keep_alive/scoped_profile_keep_alive.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/reading_list/reading_list_model_factory.h" -#include "chrome/browser/safe_browsing/safe_browsing_service.h" #include "chrome/browser/safe_browsing/verdict_cache_manager_factory.h" #include "chrome/browser/search_engine_choice/search_engine_choice_service_factory.h" #include "chrome/browser/search_engines/template_url_service_factory.h" @@ -184,6 +183,8 @@ #if !BUILDFLAG(IS_ANDROID) +#include "chrome/browser/new_tab_page/microsoft_auth/microsoft_auth_service.h" +#include "chrome/browser/new_tab_page/microsoft_auth/microsoft_auth_service_factory.h" #include "chrome/browser/user_annotations/user_annotations_service_factory.h" #include "chrome/browser/user_education/browser_user_education_storage_service.h" #include "chrome/browser/web_applications/web_app.h" @@ -224,6 +225,10 @@ #include "chrome/browser/media/cdm_document_service_impl.h" #endif // BUILDFLAG(IS_WIN) +#if BUILDFLAG(SAFE_BROWSING_AVAILABLE) +#include "chrome/browser/safe_browsing/safe_browsing_service.h" +#endif + using base::UserMetricsAction; using content::BrowserContext; using content::BrowserThread; @@ -660,10 +665,12 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData( base::RecordAction(UserMetricsAction("ClearBrowsingData_Cookies")); network::mojom::NetworkContext* safe_browsing_context = nullptr; +#if BUILDFLAG(SAFE_BROWSING_AVAILABLE) safe_browsing::SafeBrowsingService* sb_service = g_browser_process->safe_browsing_service(); if (sb_service) safe_browsing_context = sb_service->GetNetworkContext(profile_); +#endif // Cleared for DATA_TYPE_HISTORY, DATA_TYPE_COOKIES and DATA_TYPE_PASSWORDS. browsing_data::RemoveFederatedSiteSettingsData(delete_begin_, delete_end_, @@ -733,6 +740,21 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData( delete_begin_, delete_end_, std::move(storage_key_matcher), CreateTaskCompletionClosure(TracingDataType::kMediaDeviceSalts)); } + +#if !BUILDFLAG(IS_ANDROID) + // Remove local storage data from New Tab page when whenever there's a + // Microsoft auth service and cookies and site data is cleared. + MicrosoftAuthService* microsoft_auth_service = + MicrosoftAuthServiceFactory::GetForProfile(profile_); + if (microsoft_auth_service) { + microsoft_auth_service->ClearAuthData(); + + profile_->GetDefaultStoragePartition()->ClearDataForOrigin( + content::StoragePartition::REMOVE_DATA_MASK_LOCAL_STORAGE, + /*quota_storage_remove_mask=*/0, GURL(chrome::kChromeUINewTabPageURL), + base::DoNothing()); + } +#endif // !BUILDFLAG(IS_ANDROID) } ////////////////////////////////////////////////////////////////////////////// @@ -900,6 +922,10 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData( ContentSettingsType::NOTIFICATION_INTERACTIONS, delete_begin_, delete_end_, website_settings_filter); + host_content_settings_map_->ClearSettingsForOneTypeWithPredicate( + ContentSettingsType::ARE_SUSPICIOUS_NOTIFICATIONS_ALLOWLISTED_BY_USER, + delete_begin_, delete_end_, website_settings_filter); + PermissionDecisionAutoBlockerFactory::GetForProfile(profile_) ->RemoveEmbargoAndResetCounts(filter); } @@ -1047,6 +1073,8 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData( if (web_data_service.get()) { web_data_service->RemoveFormElementsAddedBetween(delete_begin_, delete_end_); + web_data_service->RemoveEntityInstancesModifiedBetween(delete_begin_, + delete_end_); // Clear out the Autofill StrikeDatabase in its entirety. // TODO(crbug.com/40594007): Respect |delete_begin_| and |delete_end_| and // only clear out entries whose last strikes were created in that @@ -1393,7 +1421,7 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData( // StoragePartition of an IWA, and all Controlled Frame StoragePartitions if // DATA_TYPE_CONTROLLED_FRAME is specified in `remove_mask`. if (!filter_builder->GetStoragePartitionConfig().has_value() && - content::IsolatedWebAppsPolicy::AreIsolatedWebAppsEnabled(profile_)) { + content::AreIsolatedWebAppsEnabled(profile_)) { const web_app::WebAppRegistrar& web_app_registrar = web_app::WebAppProvider::GetForLocalAppsUnchecked(profile_) ->registrar_unsafe(); @@ -1467,9 +1495,8 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData( ContentSettingsType::TOP_LEVEL_STORAGE_ACCESS}) { host_content_settings_map_->ClearSettingsForOneTypeWithPredicate( type_to_clear, [&](const ContentSettingPatternSource& setting) { - return content_settings::IsGrantedByRelatedWebsiteSets( - type_to_clear, setting.metadata) && - base::ranges::any_of( + return setting.metadata.decided_by_related_website_sets() && + std::ranges::any_of( filter_builder->GetOrigins(), [&](const url::Origin& origin) -> bool { return setting.primary_pattern.Matches( @@ -1576,8 +1603,6 @@ void ChromeBrowsingDataRemoverDelegate::OnTaskComplete( sync_service->GetUserSettings()->KeepAccountSettingsPrefsOnlyForUsers( base::ToVector(gaia_ids, &signin::GaiaIdHash::FromGaiaId)); } - password_manager::features_util::KeepAccountStorageSettingsOnlyForUsers( - profile_->GetPrefs(), std::move(gaia_ids).extract()); } #endif // !BUILDFLAG(IS_ANDROID) @@ -1760,9 +1785,8 @@ void ChromeBrowsingDataRemoverDelegate::DisablePasswordsAutoSignin( CreateTaskCompletionClosure( TracingDataType::kDisableAutoSigninForProfilePasswords)); } - if (account_store && - password_manager::features_util::IsOptedInForAccountStorage( - profile_->GetPrefs(), sync_service)) { + if (account_store && password_manager::features_util::IsAccountStorageEnabled( + profile_->GetPrefs(), sync_service)) { account_store->DisableAutoSignInForOrigins( url_filter, CreateTaskCompletionClosure( 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 04ea62441..46b7820ba 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 @@ -90,7 +90,7 @@ #include "components/signin/public/identity_manager/identity_manager.h" #include "components/site_engagement/core/mojom/site_engagement_details.mojom.h" #include "components/translate/content/common/translate.mojom.h" -#include "components/user_notes/user_notes_features.h" +#include "components/webui/chrome_urls/features.h" #include "content/public/browser/browser_context.h" #include "content/public/browser/render_frame_host.h" #include "content/public/browser/render_process_host.h" @@ -108,8 +108,8 @@ #include "third_party/blink/public/mojom/facilitated_payments/payment_link_handler.mojom.h" #include "third_party/blink/public/mojom/lcp_critical_path_predictor/lcp_critical_path_predictor.mojom.h" #include "third_party/blink/public/mojom/loader/navigation_predictor.mojom.h" -#include "third_party/blink/public/mojom/payments/payment_credential.mojom.h" #include "third_party/blink/public/mojom/payments/payment_request.mojom.h" +#include "third_party/blink/public/mojom/payments/secure_payment_confirmation_service.mojom.h" #include "third_party/blink/public/mojom/prerender/prerender.mojom.h" #include "third_party/blink/public/public_buildflags.h" #include "ui/accessibility/accessibility_features.h" @@ -126,14 +126,21 @@ #endif // BUILDFLAG(FULL_SAFE_BROWSING) #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ - BUILDFLAG(IS_CHROMEOS_ASH) + BUILDFLAG(IS_CHROMEOS) +#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/connectors_internals/connectors_internals.mojom.h" #include "chrome/browser/ui/webui/connectors_internals/connectors_internals_ui.h" +#include "chrome/browser/ui/webui/discards/discards.mojom.h" +#include "chrome/browser/ui/webui/discards/discards_ui.h" +#include "chrome/browser/ui/webui/discards/site_data.mojom.h" #endif #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) #include "chrome/browser/ui/webui/app_settings/web_app_settings_ui.h" #include "chrome/browser/ui/webui/on_device_translation_internals/on_device_translation_internals_ui.h" +#include "chrome/browser/ui/webui/whats_new/whats_new_ui.h" #include "ui/webui/resources/cr_components/app_management/app_management.mojom.h" #endif @@ -151,6 +158,7 @@ #else #include "chrome/browser/badging/badge_manager.h" #include "chrome/browser/new_tab_page/modules/file_suggestion/drive_suggestion.mojom.h" +#include "chrome/browser/new_tab_page/modules/file_suggestion/microsoft_files.mojom.h" #include "chrome/browser/new_tab_page/modules/v2/authentication/microsoft_auth.mojom.h" #include "chrome/browser/new_tab_page/modules/v2/calendar/google_calendar.mojom.h" #include "chrome/browser/new_tab_page/modules/v2/calendar/outlook_calendar.mojom.h" @@ -180,6 +188,7 @@ #include "chrome/browser/ui/webui/new_tab_page/new_tab_page.mojom.h" #include "chrome/browser/ui/webui/new_tab_page/new_tab_page_ui.h" #include "chrome/browser/ui/webui/new_tab_page_third_party/new_tab_page_third_party_ui.h" +#include "chrome/browser/ui/webui/ntp_microsoft_auth/ntp_microsoft_auth_untrusted_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" @@ -219,32 +228,14 @@ #include "ui/webui/resources/js/metrics_reporter/metrics_reporter.mojom.h" #endif // BUILDFLAG(IS_ANDROID) -#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ - BUILDFLAG(IS_CHROMEOS) -#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" -#include "chrome/browser/ui/webui/discards/site_data.mojom.h" -#endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || - // BUILDFLAG(IS_CHROMEOS) - -#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) -#include "chrome/browser/ui/webui/whats_new/whats_new_ui.h" -#endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) - #if !BUILDFLAG(IS_CHROMEOS) && !BUILDFLAG(IS_ANDROID) #include "chrome/browser/ui/webui/app_home/app_home.mojom.h" #include "chrome/browser/ui/webui/app_home/app_home_ui.h" -#endif // !BUILDFLAG(IS_CHROMEOS) && !BUILDFLAG(IS_ANDROID) - -#if !BUILDFLAG(IS_CHROMEOS_ASH) && !BUILDFLAG(IS_ANDROID) #include "chrome/browser/ui/webui/signin/profile_customization_ui.h" #include "chrome/browser/ui/webui/signin/profile_picker_ui.h" -#endif // !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_CHROMEOS_ASH) +#endif // !BUILDFLAG(IS_CHROMEOS) && !BUILDFLAG(IS_ANDROID) -#if BUILDFLAG(IS_CHROMEOS_ASH) +#if BUILDFLAG(IS_CHROMEOS) #include "ash/constants/ash_features.h" #include "ash/public/mojom/hid_preserving_bluetooth_state_controller.mojom.h" #include "ash/webui/annotator/mojom/untrusted_annotator.mojom.h" @@ -337,6 +328,8 @@ #include "chrome/browser/ui/webui/ash/crostini_upgrader/crostini_upgrader.mojom.h" #include "chrome/browser/ui/webui/ash/crostini_upgrader/crostini_upgrader_ui.h" #include "chrome/browser/ui/webui/ash/curtain_ui/remote_maintenance_curtain_ui.h" +#include "chrome/browser/ui/webui/ash/dlp_internals/dlp_internals.mojom.h" +#include "chrome/browser/ui/webui/ash/dlp_internals/dlp_internals_ui.h" #include "chrome/browser/ui/webui/ash/emoji/emoji_picker.mojom.h" #include "chrome/browser/ui/webui/ash/emoji/emoji_search_proxy.h" #include "chrome/browser/ui/webui/ash/emoji/emoji_ui.h" @@ -413,17 +406,17 @@ #include "media/capture/video/chromeos/mojom/camera_app.mojom.h" #include "third_party/blink/public/mojom/digital_goods/digital_goods.mojom.h" #include "ui/webui/resources/cr_components/app_management/app_management.mojom.h" -#endif // BUILDFLAG(IS_CHROMEOS_ASH) +#endif // BUILDFLAG(IS_CHROMEOS) -#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || \ - BUILDFLAG(IS_ANDROID) #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) #include "chrome/browser/webshare/share_service_impl.h" #endif +#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || \ + BUILDFLAG(IS_ANDROID) #include "third_party/blink/public/mojom/webshare/webshare.mojom.h" #endif -#if BUILDFLAG(IS_CHROMEOS_ASH) && !defined(OFFICIAL_BUILD) +#if BUILDFLAG(IS_CHROMEOS) && !defined(OFFICIAL_BUILD) #include "ash/webui/sample_system_web_app_ui/mojom/sample_system_web_app_ui.mojom.h" #include "ash/webui/sample_system_web_app_ui/sample_system_web_app_ui.h" #include "ash/webui/sample_system_web_app_ui/sample_system_web_app_untrusted_ui.h" @@ -452,12 +445,6 @@ #include "media/mojo/mojom/speech_recognition_service.mojom.h" #endif // BUILDFLAG(ENABLE_BROWSER_SPEECH_SERVICE) -#if BUILDFLAG(ENABLE_EXTENSIONS) -#include "extensions/browser/api/mime_handler_private/mime_handler_private.h" -#include "extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.h" -#include "extensions/common/api/mime_handler.mojom.h" // nogncheck -#endif - #if BUILDFLAG(ENABLE_WEBUI_TAB_STRIP) #include "chrome/browser/ui/webui/tab_strip/tab_strip.mojom.h" #include "chrome/browser/ui/webui/tab_strip/tab_strip_ui.h" @@ -473,11 +460,6 @@ #include "third_party/blink/public/mojom/printing/web_printing.mojom.h" #endif -#if BUILDFLAG(IS_CHROMEOS) -#include "chrome/browser/ui/webui/ash/dlp_internals/dlp_internals.mojom.h" -#include "chrome/browser/ui/webui/ash/dlp_internals/dlp_internals_ui.h" -#endif - #if BUILDFLAG(CHROME_ROOT_STORE_CERT_MANAGEMENT_UI) #include "chrome/browser/ui/webui/certificate_manager/certificate_manager_ui.h" #include "ui/webui/resources/cr_components/certificate_manager/certificate_manager_v2.mojom.h" @@ -486,12 +468,14 @@ #if BUILDFLAG(ENABLE_DICE_SUPPORT) #include "chrome/browser/ui/webui/signin/batch_upload/batch_upload.mojom.h" #include "chrome/browser/ui/webui/signin/batch_upload_ui.h" +#include "chrome/browser/ui/webui/signin/signout_confirmation/signout_confirmation.mojom.h" +#include "chrome/browser/ui/webui/signin/signout_confirmation/signout_confirmation_ui.h" #include "components/signin/public/base/signin_switches.h" #endif // BUILDFLAG(ENABLE_DICE_SUPPORT) #if BUILDFLAG(ENABLE_GLIC) #include "chrome/browser/glic/glic_enabling.h" -#include "chrome/browser/ui/webui/glic/glic_ui.h" +#include "chrome/browser/glic/glic_ui.h" #endif namespace chrome::internal { @@ -621,33 +605,6 @@ void ForwardToJavaFrame(content::RenderFrameHost* render_frame_host, } #endif -#if BUILDFLAG(ENABLE_EXTENSIONS) -void BindMimeHandlerService( - content::RenderFrameHost* frame_host, - mojo::PendingReceiver - receiver) { - auto* guest_view = - extensions::MimeHandlerViewGuest::FromRenderFrameHost(frame_host); - if (!guest_view) { - return; - } - extensions::MimeHandlerServiceImpl::Create(guest_view->GetStreamWeakPtr(), - std::move(receiver)); -} - -void BindBeforeUnloadControl( - content::RenderFrameHost* frame_host, - mojo::PendingReceiver - receiver) { - auto* guest_view = - extensions::MimeHandlerViewGuest::FromRenderFrameHost(frame_host); - if (!guest_view) { - return; - } - guest_view->FuseBeforeUnloadControl(std::move(receiver)); -} -#endif - void BindNetworkHintsHandler( content::RenderFrameHost* frame_host, mojo::PendingReceiver receiver) { @@ -667,7 +624,7 @@ void BindSpeechRecognitionContextHandler( frame_host->GetProcess()->GetBrowserContext()); #if BUILDFLAG(ENABLE_BROWSER_SPEECH_SERVICE) auto* factory = SpeechRecognitionServiceFactory::GetForProfile(profile); -#elif BUILDFLAG(IS_CHROMEOS_ASH) +#elif BUILDFLAG(IS_CHROMEOS) auto* factory = CrosSpeechRecognitionServiceFactory::GetForProfile(profile); #else #error "No speech recognition service factory on this platform." @@ -845,7 +802,7 @@ void PopulateChromeFrameBinders( } #endif -#if BUILDFLAG(IS_CHROMEOS_ASH) +#if BUILDFLAG(IS_CHROMEOS) map->Add(base::BindRepeating( &apps::DigitalGoodsFactoryImpl::BindDigitalGoodsFactory)); #endif @@ -857,13 +814,6 @@ void PopulateChromeFrameBinders( } #endif -#if BUILDFLAG(ENABLE_EXTENSIONS) - map->Add( - base::BindRepeating(&BindMimeHandlerService)); - map->Add( - base::BindRepeating(&BindBeforeUnloadControl)); -#endif - map->Add( base::BindRepeating(&BindNetworkHintsHandler)); map->Add( @@ -896,10 +846,8 @@ void PopulateChromeFrameBinders( map->Add( base::BindRepeating(&BindScreenAIAnnotator)); - if (features::IsReadAnythingWithScreen2xEnabled()) { - map->Add( - base::BindRepeating(&BindScreen2xMainContentExtractor)); - } + map->Add( + base::BindRepeating(&BindScreen2xMainContentExtractor)); #endif #if BUILDFLAG(IS_WIN) @@ -959,7 +907,7 @@ void PopulateChromeWebUIFrameBinders( commerce::mojom::CommerceInternalsHandlerFactory, commerce::CommerceInternalsUI>(map); - if (base::FeatureList::IsEnabled(features::kInternalOnlyUisPref)) { + if (base::FeatureList::IsEnabled(chrome_urls::kInternalOnlyUisPref)) { RegisterWebUIControllerInterfaceBinder< chrome_urls::mojom::PageHandlerFactory, chrome_urls::ChromeUrlsUI>(map); } @@ -969,15 +917,17 @@ void PopulateChromeWebUIFrameBinders( DataSharingInternalsUI>(map); #if BUILDFLAG(ENABLE_GLIC) - if (GlicEnabling::IsEnabledForProfile(Profile::FromBrowserContext( + if (GlicEnabling::IsProfileEligible(Profile::FromBrowserContext( render_frame_host->GetProcess()->GetBrowserContext()))) { + // Register the binder for all eligible profiles but the WebUI page will + // check whether Glic is policy-enabled and restrict access if needed. RegisterWebUIControllerInterfaceBinder(map); } #endif #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ - BUILDFLAG(IS_CHROMEOS_ASH) + BUILDFLAG(IS_CHROMEOS) RegisterWebUIControllerInterfaceBinder< connectors_internals::mojom::PageHandler, enterprise_connectors::ConnectorsInternalsUI>(map); @@ -1022,7 +972,7 @@ void PopulateChromeWebUIFrameBinders( #if BUILDFLAG(ENABLE_WEBUI_TAB_STRIP) TabStripUI, #endif -#if BUILDFLAG(IS_CHROMEOS_ASH) +#if BUILDFLAG(IS_CHROMEOS) ash::OobeUI, ash::personalization_app::PersonalizationAppUI, ash::vc_background_ui::VcBackgroundUI, ash::settings::OSSettingsUI, ash::DiagnosticsDialogUI, ash::FirmwareUpdateAppUI, ash::ScanningUI, @@ -1101,10 +1051,10 @@ void PopulateChromeWebUIFrameBinders( RegisterWebUIControllerInterfaceBinder< theme_color_picker::mojom::ThemeColorPickerHandlerFactory, CustomizeChromeUI -#if !BUILDFLAG(IS_CHROMEOS_ASH) +#if !BUILDFLAG(IS_CHROMEOS) , ProfileCustomizationUI, settings::SettingsUI -#endif // !BUILDFLAG(IS_CHROMEOS_ASH) +#endif // !BUILDFLAG(IS_CHROMEOS) >(map); #if BUILDFLAG(CHROME_ROOT_STORE_CERT_MANAGEMENT_UI) @@ -1118,10 +1068,10 @@ void PopulateChromeWebUIFrameBinders( settings::SettingsUI, ReadingListUI, NewTabPageUI, CustomizeChromeUI, PasswordManagerUI, HistoryUI, lens::LensOverlayUntrustedUI, lens::LensSidePanelUntrustedUI -#if !BUILDFLAG(IS_CHROMEOS_ASH) && !BUILDFLAG(IS_ANDROID) +#if !BUILDFLAG(IS_CHROMEOS) && !BUILDFLAG(IS_ANDROID) , ProfilePickerUI -#endif //! BUILDFLAG(IS_CHROMEOS_ASH) && !BUILDFLAG(IS_ANDROID) +#endif //! BUILDFLAG(IS_CHROMEOS) && !BUILDFLAG(IS_ANDROID) >(map); #if !defined(OFFICIAL_BUILD) @@ -1146,23 +1096,30 @@ void PopulateChromeWebUIFrameBinders( ntp::calendar::mojom::GoogleCalendarPageHandler, NewTabPageUI>(map); } - if (base::FeatureList::IsEnabled(ntp_features::kNtpOutlookCalendarModule)) { + if (IsOutlookCalendarModuleEnabledForProfile(Profile::FromBrowserContext( + render_frame_host->GetBrowserContext()))) { RegisterWebUIControllerInterfaceBinder< ntp::calendar::mojom::OutlookCalendarPageHandler, NewTabPageUI>(map); } - if (base::FeatureList::IsEnabled( - ntp_features::kNtpMicrosoftAuthenticationModule)) { + if (IsMicrosoftModuleEnabledForProfile(Profile::FromBrowserContext( + render_frame_host->GetBrowserContext()))) { RegisterWebUIControllerInterfaceBinder< ntp::authentication::mojom::MicrosoftAuthPageHandler, NewTabPageUI>( map); } -#if BUILDFLAG(IS_CHROMEOS_ASH) + if (IsMicrosoftFilesModuleEnabledForProfile(Profile::FromBrowserContext( + render_frame_host->GetBrowserContext()))) { + RegisterWebUIControllerInterfaceBinder< + file_suggestion::mojom::MicrosoftFilesPageHandler, NewTabPageUI>(map); + } + +#if BUILDFLAG(IS_CHROMEOS) RegisterWebUIControllerInterfaceBinder< ash::mojom::HidPreservingBluetoothStateController, ash::settings::OSSettingsUI>(map); -#endif // defined(IS_CHROMEOS_ASH) +#endif // defined(IS_CHROMEOS) RegisterWebUIControllerInterfaceBinder< reading_list::mojom::PageHandlerFactory, ReadingListUI>(map); @@ -1235,7 +1192,7 @@ void PopulateChromeWebUIFrameBinders( TabStripUI>(map); #endif -#if BUILDFLAG(IS_CHROMEOS_ASH) +#if BUILDFLAG(IS_CHROMEOS) RegisterWebUIControllerInterfaceBinder< ash::file_manager::mojom::PageHandlerFactory, ash::file_manager::FileManagerUI>(map); @@ -1606,7 +1563,7 @@ void PopulateChromeWebUIFrameBinders( RegisterWebUIControllerInterfaceBinder(map); } -#endif // BUILDFLAG(IS_CHROMEOS_ASH) +#endif // BUILDFLAG(IS_CHROMEOS) #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ BUILDFLAG(IS_CHROMEOS) @@ -1630,7 +1587,7 @@ void PopulateChromeWebUIFrameBinders( ResetPasswordUI>(map); #endif -#if BUILDFLAG(IS_CHROMEOS_ASH) +#if BUILDFLAG(IS_CHROMEOS) // Because Nearby Share is only currently supported for the primary profile, // we should only register binders in that scenario. However, we don't want to // plumb the profile through to this function, so we 1) ensure that @@ -1649,7 +1606,7 @@ void PopulateChromeWebUIFrameBinders( map); RegisterWebUIControllerInterfaceBinder(map); -#endif // BUILDFLAG(IS_CHROMEOS_ASH) +#endif // BUILDFLAG(IS_CHROMEOS) #if !BUILDFLAG(IS_CHROMEOS) && !BUILDFLAG(IS_ANDROID) RegisterWebUIControllerInterfaceBinder<::app_home::mojom::PageHandlerFactory, @@ -1698,27 +1655,27 @@ void PopulateChromeWebUIFrameBinders( RegisterWebUIControllerInterfaceBinder< batch_upload::mojom::PageHandlerFactory, BatchUploadUI>(map); } + + RegisterWebUIControllerInterfaceBinder< + signout_confirmation::mojom::PageHandlerFactory, SignoutConfirmationUI>( + map); #endif // BUILDFLAG(ENABLE_DICE_SUPPORT) -#if BUILDFLAG(IS_CHROMEOS_ASH) +#if BUILDFLAG(IS_CHROMEOS) if (ash::features::IsFocusModeEnabled()) { RegisterWebUIControllerInterfaceBinder< ash::focus_mode::mojom::TrackProvider, ash::FocusModeUI>(map); } -#endif // BUILDFLAG(IS_CHROMEOS_ASH) -#if BUILDFLAG(IS_CHROMEOS_ASH) RegisterWebUIControllerInterfaceBinder< ash::sanitize_ui::mojom::SettingsResetter, ash::SanitizeDialogUI>(map); -#endif // BUILDFLAG(IS_CHROMEOS_ASH) -#if BUILDFLAG(IS_CHROMEOS_ASH) if (ash::features::IsGraduationEnabled()) { RegisterWebUIControllerInterfaceBinder< ash::graduation_ui::mojom::GraduationUiHandler, ash::graduation::GraduationUI>(map); } -#endif // BUILDFLAG(IS_CHROMEOS_ASH) +#endif // BUILDFLAG(IS_CHROMEOS) } void PopulateChromeWebUIFrameInterfaceBrokers( @@ -1727,23 +1684,21 @@ void PopulateChromeWebUIFrameInterfaceBrokers( // --- Section 1: chrome:// WebUIs: -#if BUILDFLAG(IS_CHROMEOS_ASH) && !defined(OFFICIAL_BUILD) +#if BUILDFLAG(IS_CHROMEOS) && !defined(OFFICIAL_BUILD) registry.ForWebUI() .Add() .Add(); registry.ForWebUI() .Add(); -#endif // BUILDFLAG(IS_CHROMEOS_ASH) && !defined(OFFICIAL_BUILD) +#endif // BUILDFLAG(IS_CHROMEOS) && !defined(OFFICIAL_BUILD) -#if BUILDFLAG(IS_CHROMEOS_ASH) +#if BUILDFLAG(IS_CHROMEOS) registry.ForWebUI() .Add() .Add() .Add(); -#endif // BUILDFLAG(IS_CHROMEOS_ASH) -#if BUILDFLAG(IS_CHROMEOS_ASH) registry.ForWebUI() .Add() .Add() @@ -1762,10 +1717,10 @@ void PopulateChromeWebUIFrameInterfaceBrokers( registry.ForWebUI() .Add(); registry.ForWebUI().Add(); -#endif // BUILDFLAG(IS_CHROMEOS_ASH) +#endif // BUILDFLAG(IS_CHROMEOS) // --- Section 2: chrome-untrusted:// WebUIs: -#if BUILDFLAG(IS_CHROMEOS_ASH) +#if BUILDFLAG(IS_CHROMEOS) registry.ForWebUI() .Add() .Add(); @@ -1800,12 +1755,12 @@ void PopulateChromeWebUIFrameInterfaceBrokers( registry.ForWebUI() .Add() .Add(); -#endif // BUILDFLAG(IS_CHROMEOS_ASH) +#endif // BUILDFLAG(IS_CHROMEOS) -#if BUILDFLAG(IS_CHROMEOS_ASH) && !defined(OFFICIAL_BUILD) +#if BUILDFLAG(IS_CHROMEOS) && !defined(OFFICIAL_BUILD) registry.ForWebUI() .Add(); -#endif // BUILDFLAG(IS_CHROMEOS_ASH) && !defined(OFFICIAL_BUILD) +#endif // BUILDFLAG(IS_CHROMEOS) && !defined(OFFICIAL_BUILD) #if BUILDFLAG(ENABLE_COMPOSE) registry.ForWebUI() @@ -1839,6 +1794,10 @@ void PopulateChromeWebUIFrameInterfaceBrokers( .Add(); } + registry.ForWebUI() + .Add(); + #endif // !BUILDFLAG(IS_ANDROID) } 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 a1a8e77a2..678e42c96 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 @@ -4,6 +4,7 @@ #include "chrome/browser/chrome_content_browser_client.h" +#include #include #include #include @@ -33,7 +34,6 @@ #include "base/no_destructor.h" #include "base/notreached.h" #include "base/path_service.h" -#include "base/ranges/algorithm.h" #include "base/stl_util.h" #include "base/strings/strcat.h" #include "base/strings/string_number_conversions.h" @@ -56,6 +56,7 @@ #include "chrome/browser/browser_features.h" #include "chrome/browser/browser_process.h" #include "chrome/browser/browsing_data/chrome_browsing_data_model_delegate.h" +#include "chrome/browser/browsing_data/chrome_browsing_data_remover_constants.h" #include "chrome/browser/browsing_topics/browsing_topics_service_factory.h" #include "chrome/browser/captive_portal/captive_portal_service_factory.h" #include "chrome/browser/child_process_host_flags.h" @@ -70,7 +71,8 @@ #include "chrome/browser/defaults.h" #include "chrome/browser/device_api/device_service_impl.h" #include "chrome/browser/device_api/managed_configuration_service.h" -#include "chrome/browser/dips/chrome_dips_delegate.h" +#include "chrome/browser/dips/dips_browser_signin_detector.h" +#include "chrome/browser/dips/stateful_bounce_counter.h" #include "chrome/browser/download/chrome_download_manager_delegate.h" #include "chrome/browser/download/download_prefs.h" #include "chrome/browser/enterprise/browser_management/management_service_factory.h" @@ -170,7 +172,6 @@ #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/task_manager/task_manager_interface.h" @@ -282,9 +283,9 @@ #include "components/omnibox/common/omnibox_features.h" #include "components/page_load_metrics/browser/metrics_navigation_throttle.h" #include "components/page_load_metrics/browser/metrics_web_contents_observer.h" -#include "components/payments/content/payment_credential_factory.h" #include "components/payments/content/payment_handler_navigation_throttle.h" #include "components/payments/content/payment_request_display_manager.h" +#include "components/payments/content/secure_payment_confirmation_service_factory.h" #include "components/pdf/common/pdf_util.h" #include "components/permissions/permission_context_base.h" #include "components/policy/content/policy_blocklist_navigation_throttle.h" @@ -329,6 +330,8 @@ #include "components/variations/variations_switches.h" #include "components/version_info/version_info.h" #include "components/webapps/common/web_app_id.h" +#include "components/webui/chrome_urls/features.h" +#include "components/webui/chrome_urls/pref_names.h" #include "content/public/browser/attribution_data_model.h" #include "content/public/browser/browser_accessibility_state.h" #include "content/public/browser/browser_child_process_host.h" @@ -343,7 +346,6 @@ #include "content/public/browser/child_process_security_policy.h" #include "content/public/browser/client_certificate_delegate.h" #include "content/public/browser/digital_identity_provider.h" -#include "content/public/browser/dips_delegate.h" #include "content/public/browser/file_url_loader.h" #include "content/public/browser/isolated_web_apps_policy.h" #include "content/public/browser/legacy_tech_cookie_issue_details.h" @@ -372,6 +374,7 @@ #include "content/public/common/content_switches.h" #include "content/public/common/url_utils.h" #include "content/public/common/window_container_type.mojom-shared.h" +#include "device/fido/features.h" #include "device/vr/buildflags/buildflags.h" #include "extensions/browser/browser_frame_context_data.h" #include "extensions/buildflags/buildflags.h" @@ -441,6 +444,7 @@ #include "chrome/browser/chrome_browser_main_win.h" #include "chrome/browser/lifetime/application_lifetime_desktop.h" #include "chrome/browser/performance_manager/public/dll_pre_read_policy_win.h" +#include "chrome/browser/tracing/tracing_features.h" #include "chrome/browser/tracing/windows_system_tracing_client_win.h" #include "chrome/install_static/install_util.h" #include "chrome/services/util_win/public/mojom/util_win.mojom.h" @@ -453,7 +457,7 @@ #include "chrome/browser/mac/auth_session_request.h" #include "chrome/browser/mac/chrome_browser_main_extra_parts_mac.h" #include "components/soda/constants.h" -#include "sandbox/mac/sandbox_compiler.h" +#include "sandbox/mac/sandbox_serializer.h" #include "sandbox/policy/mac/params.h" #include "sandbox/policy/mac/sandbox_mac.h" #elif BUILDFLAG(IS_CHROMEOS) @@ -546,6 +550,7 @@ #if !BUILDFLAG(IS_ANDROID) #include "chrome/browser/digital_credentials/digital_identity_provider_desktop.h" #include "chrome/browser/preloading/preview/preview_navigation_throttle.h" +#include "chrome/browser/ui/webui/ntp_microsoft_auth/ntp_microsoft_auth_response_capture_navigation_throttle.h" #include "chrome/browser/web_applications/isolated_web_apps/chrome_content_browser_client_isolated_web_apps_part.h" #include "chrome/browser/web_applications/locks/app_lock.h" #include "chrome/browser/web_applications/proto/web_app_install_state.pb.h" @@ -559,17 +564,16 @@ #include "chrome/browser/apps/app_service/app_install/app_install_navigation_throttle.h" #include "chrome/browser/apps/intent_helper/chromeos_disabled_apps_throttle.h" #include "chrome/browser/apps/link_capturing/chromeos_link_capturing_delegate.h" +#include "chrome/browser/apps/link_capturing/chromeos_reimpl_navigation_capturing_throttle.h" #include "chrome/browser/chromeos/enterprise/incognito_navigation_throttle.h" #include "chrome/browser/chromeos/policy/dlp/dlp_scoped_file_access_delegate.h" -#include "chrome/browser/chromeos/quickoffice/quickoffice_prefs.h" #include "chrome/browser/chromeos/tablet_mode/chrome_content_browser_client_tablet_mode_part.h" #include "chrome/browser/file_system_access/cloud_identifier/cloud_identifier_util_cros.h" -#include "chrome/browser/policy/networking/policy_cert_service.h" -#include "chrome/browser/policy/networking/policy_cert_service_factory.h" #include "chrome/browser/policy/system_features_disable_list_policy_handler.h" #include "chrome/browser/smart_card/chromeos_smart_card_delegate.h" #include "chrome/browser/web_applications/web_app_tab_helper.h" #include "chrome/common/chromeos/extensions/chromeos_system_extension_info.h" +#include "chromeos/ash/components/quickoffice/quickoffice_prefs.h" #include "chromeos/components/kiosk/kiosk_utils.h" #include "chromeos/constants/chromeos_features.h" #include "content/public/browser/chromeos/multi_capture_service.h" @@ -613,7 +617,7 @@ #include "components/lens/lens_features.h" #include "components/password_manager/content/common/web_ui_constants.h" #include "components/password_manager/core/common/password_manager_features.h" -#include "third_party/blink/public/mojom/permissions_policy/permissions_policy_feature.mojom.h" +#include "services/network/public/mojom/permissions_policy/permissions_policy_feature.mojom.h" #endif // !BUILDFLAG(IS_ANDROID) #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) @@ -716,6 +720,7 @@ #include "components/pdf/browser/pdf_navigation_throttle.h" #include "components/pdf/browser/pdf_url_loader_request_interceptor.h" #include "components/pdf/common/constants.h" +#include "pdf/pdf_features.h" #endif // BUILDFLAG(ENABLE_PDF) @@ -767,11 +772,6 @@ #include "components/enterprise/common/files_scan_data.h" #endif -// This should be after all other #includes. -#if defined(_WINDOWS_) // Detect whether windows.h was included. -#include "base/win/windows_h_disallowed.h" -#endif // defined(_WINDOWS_) - #if !BUILDFLAG(IS_ANDROID) #include "chrome/browser/screen_ai/screen_ai_install_state.h" #endif @@ -805,6 +805,8 @@ #include "chrome/browser/on_device_translation/pref_names.h" #endif // BUILDFLAG(ENABLE_ON_DEVICE_TRANSLATION) +#include "base/win/windows_h_disallowed.h" + using blink::mojom::EffectiveConnectionType; using blink::web_pref::WebPreferences; using content::BrowserThread; @@ -842,18 +844,6 @@ BASE_FEATURE(kSkipPagehideInCommitForDSENavigation, "SkipPagehideInCommitForDSENavigation", base::FEATURE_DISABLED_BY_DEFAULT); -BASE_FEATURE(kDisableJavascriptOptimizerByDefault, - "DisableJavascriptOptimizerByDefault", - base::FEATURE_DISABLED_BY_DEFAULT); - -#if BUILDFLAG(IS_WIN) -// A Feature to selectively enable connecting to the Windows system tracing -// service when the tracing service is started. -BASE_FEATURE(kWindowsSystemTracing, - "WindowsSystemTracing", - base::FEATURE_DISABLED_BY_DEFAULT); -#endif // BUILDFLAG(IS_WIN) - // A small ChromeBrowserMainExtraParts that invokes a callback when threads are // ready. Used to initialize ChromeContentBrowserClient data that needs the UI // thread. @@ -1024,7 +1014,7 @@ blink::mojom::AutoplayPolicy GetAutoplayPolicyForWebContents( ? blink::mojom::AutoplayPolicy::kDocumentUserActivationRequired : blink::mojom::AutoplayPolicy::kNoUserGestureRequired; } else if (web_contents->GetPrimaryMainFrame()->IsFeatureEnabled( - blink::mojom::PermissionsPolicyFeature::kAutoplay) && + network::mojom::PermissionsPolicyFeature::kAutoplay) && IsAutoplayAllowedByPolicy(web_contents->GetOuterWebContents(), prefs)) { // If the domain policy allows autoplay and has delegated that to an iframe, @@ -1616,6 +1606,7 @@ void ChromeContentBrowserClient::RegisterProfilePrefs( registry->RegisterBooleanPref( prefs::kAccessControlAllowMethodsInCORSPreflightSpecConformant, true); registry->RegisterBooleanPref(prefs::kDataUrlInSvgUseEnabled, false); + registry->RegisterBooleanPref(prefs::kPartitionedBlobUrlUsage, true); registry->RegisterBooleanPref(policy::policy_prefs::kMutationEventsEnabled, false); @@ -1649,6 +1640,8 @@ void ChromeContentBrowserClient::RegisterProfilePrefs( registry->RegisterBooleanPref(prefs::kWebAudioOutputBufferingEnabled, false); registry->RegisterBooleanPref(prefs::kSharedWorkerBlobURLFixEnabled, true); + registry->RegisterBooleanPref( + prefs::kServiceWorkerToControlSrcdocIframeEnabled, true); } // static @@ -1776,7 +1769,7 @@ ChromeContentBrowserClient::CreateBrowserMainParts(bool is_integration_test) { add_profiles_extra_parts = false; #endif if (add_profiles_extra_parts) - chrome::AddProfilesExtraParts(main_parts.get()); + AddProfilesExtraParts(main_parts.get()); // Construct additional browser parts. Stages are called in the order in // which they are added. @@ -2241,6 +2234,13 @@ void ChromeContentBrowserClient::GetAdditionalWebUISchemes( additional_schemes->emplace_back(content::kChromeDevToolsScheme); } +bool ChromeContentBrowserClient::IsInternalScheme(const GURL& url) { + if (!url.is_valid()) { + return false; + } + return url.SchemeIs(chrome::kChromeNativeScheme); +} + void ChromeContentBrowserClient::GetAdditionalViewSourceSchemes( std::vector* additional_schemes) { GetAdditionalWebUISchemes(additional_schemes); @@ -2436,15 +2436,9 @@ ChromeContentBrowserClient::GetPermissionsPolicyForIsolatedWebApp( Profile::FromBrowserContext(web_contents->GetBrowserContext()); auto& registrar = web_app::WebAppProvider::GetForWebApps(profile)->registrar_unsafe(); - // TODO(crbug.com/379916273): Evaluate call sites of FindBestAppWithUrlInScope - // for correctness. std::vector app_ids_for_origin = registrar.FindAllAppsNestedInUrl( - app_origin.GetURL(), - { - web_app::proto::InstallState::INSTALLED_WITH_OS_INTEGRATION, - web_app::proto::InstallState::INSTALLED_WITHOUT_OS_INTEGRATION, - }); + app_origin.GetURL(), web_app::WebAppFilter::InstalledInChrome()); if (app_ids_for_origin.empty()) { return blink::ParsedPermissionsPolicy(); } @@ -2560,6 +2554,11 @@ bool ChromeContentBrowserClient::ShouldDisableSiteIsolation( ShouldDisableSiteIsolationDueToMemoryThreshold(site_isolation_mode); } +bool ChromeContentBrowserClient::ShouldDisableOriginIsolation() { + return site_isolation::SiteIsolationPolicy:: + ShouldDisableOriginIsolationDueToMemoryThreshold(); +} + std::vector ChromeContentBrowserClient::GetAdditionalSiteIsolationModes() { std::vector modes; @@ -2583,8 +2582,7 @@ bool ChromeContentBrowserClient::ShouldUrlUseApplicationIsolationLevel( const GURL& url) { #if BUILDFLAG(ENABLE_EXTENSIONS) - if (!content::IsolatedWebAppsPolicy::AreIsolatedWebAppsEnabled( - browser_context)) { + if (!content::AreIsolatedWebAppsEnabled(browser_context)) { return false; } @@ -2788,6 +2786,11 @@ void ChromeContentBrowserClient::AppendExtraCommandLineSwitches( command_line->AppendSwitch(blink::switches::kDataUrlInSvgUseEnabled); } + if (!prefs->GetBoolean(prefs::kPartitionedBlobUrlUsage)) { + command_line->AppendSwitch( + blink::switches::kDisableBlobUrlPartitioning); + } + if (prefs->GetBoolean(policy::policy_prefs::kMutationEventsEnabled)) { command_line->AppendSwitch(blink::switches::kMutationEventsEnabled); } @@ -2899,11 +2902,16 @@ void ChromeContentBrowserClient::AppendExtraCommandLineSwitches( #endif // BUILDFLAG(IS_ANDROID) #if !BUILDFLAG(IS_ANDROID) - // Make the WebAuthenticationRemoteProxiedRequestsAllowed policy enable - // the experimental WebAuthenticationRemoteDesktopSupport Blink runtime + // Make the {WebAuthenticationRemoteProxiedRequestsAllowed or + // WebAuthenticationRemoteDesktopAllowedOrigins} policy enable the + // experimental WebAuthenticationRemoteDesktopSupport Blink runtime // feature. if (prefs->GetBoolean( - webauthn::pref_names::kRemoteProxiedRequestsAllowed)) { + webauthn::pref_names::kRemoteProxiedRequestsAllowed) || + (base::FeatureList::IsEnabled( + device::kWebAuthnRemoteDesktopAllowedOriginsPolicy) && + !prefs->GetList(webauthn::pref_names::kRemoteDesktopAllowedOrigins) + .empty())) { command_line->AppendSwitch(switches::kWebAuthRemoteDesktopSupport); } #endif @@ -3222,6 +3230,14 @@ bool ChromeContentBrowserClient::AllowCompressionDictionaryTransport( prefs::kCompressionDictionaryTransportEnabled); } +bool ChromeContentBrowserClient::AllowServiceWorkerToControlSrcdocIframe( + content::BrowserContext* browser_context) { + DCHECK_CURRENTLY_ON(BrowserThread::UI); + Profile* profile = Profile::FromBrowserContext(browser_context); + return profile->GetPrefs()->GetBoolean( + prefs::kServiceWorkerToControlSrcdocIframeEnabled); +} + bool ChromeContentBrowserClient::AllowSharedWorkerBlobURLFix( content::BrowserContext* browser_context) { DCHECK_CURRENTLY_ON(BrowserThread::UI); @@ -3708,19 +3724,6 @@ void ChromeContentBrowserClient::GrantCookieAccessDueToHeuristic( /*use_schemeless_patterns=*/ignore_schemes); } -#if BUILDFLAG(IS_CHROMEOS) -void ChromeContentBrowserClient::OnTrustAnchorUsed( - content::BrowserContext* browser_context) { - policy::PolicyCertService* service = - policy::PolicyCertServiceFactory::GetForProfile( - Profile::FromBrowserContext(browser_context)); - if (!service) { - NOTREACHED(); - } - service->SetUsedPolicyCertificates(); -} -#endif - bool ChromeContentBrowserClient::CanSendSCTAuditingReport( content::BrowserContext* browser_context) { return SCTReportingService::CanSendSCTAuditingReport(); @@ -3945,15 +3948,14 @@ bool UpdatePreferredColorScheme(WebPreferences* web_prefs, ToBlinkPreferredColorScheme(native_theme->GetPreferredColorScheme()); bool using_different_colored_frame = false; - if (Profile* profile = - Profile::FromBrowserContext(web_contents->GetBrowserContext())) { - if (ThemeService* theme_service = - ThemeServiceFactory::GetForProfile(profile)) { - using_different_colored_frame = - !theme_service->UsingDefaultTheme() || - theme_service->GetUserColor().has_value() || - theme_service->UsingDeviceTheme(); - } + Profile* profile = + Profile::FromBrowserContext(web_contents->GetBrowserContext()); + CHECK(profile); + if (ThemeService* theme_service = + ThemeServiceFactory::GetForProfile(profile)) { + using_different_colored_frame = !theme_service->UsingDefaultTheme() || + theme_service->GetUserColor().has_value() || + theme_service->UsingDeviceTheme(); } // Update based on the ColorProvider associated with `web_contents`. Depends @@ -3966,25 +3968,27 @@ bool UpdatePreferredColorScheme(WebPreferences* web_prefs, : blink::mojom::PreferredColorScheme::kDark; #endif // BUILDFLAG(IS_ANDROID) - // Reauth WebUI doesn't support dark mode yet because it shares the dialog - // with GAIA web contents that is not correctly themed. - const bool force_light = - url.SchemeIs(content::kChromeUIScheme) && - url.host_piece() == chrome::kChromeUISigninReauthHost; - - if (force_light) { - web_prefs->preferred_color_scheme = - blink::mojom::PreferredColorScheme::kLight; #if !BUILDFLAG(IS_ANDROID) - } else if (content::HasWebUIScheme(url)) { + // TODO(crbug.com/359577226): merge the branches for WebUI and non-WebUI + // contents after kContentUsesBrowserThemeColorMode is launched. + if (content::HasWebUIScheme(url)) { // If color scheme is not forced, WebUI should track the color mode of the // ColorProvider associated with `web_contents`. web_prefs->preferred_color_scheme = web_contents->GetColorMode() == ui::ColorProviderKey::ColorMode::kLight ? blink::mojom::PreferredColorScheme::kLight : blink::mojom::PreferredColorScheme::kDark; -#endif // !BUILDFLAG(IS_ANDROID) + } else if (base::FeatureList::IsEnabled( + features::kContentUsesBrowserThemeColorMode) && + !profile->IsIncognitoProfile()) { + // Track the browser theme's color mode in contents. + // Incognito contents are not affected by the browser theme. + web_prefs->preferred_color_scheme = + 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; } @@ -4308,8 +4312,9 @@ content::TtsPlatform* ChromeContentBrowserClient::GetTtsPlatform() { #endif } -void ChromeContentBrowserClient::OverrideWebkitPrefs( +void ChromeContentBrowserClient::OverrideWebPreferences( WebContents* web_contents, + content::SiteInstance& main_frame_site, WebPreferences* web_prefs) { Profile* profile = Profile::FromBrowserContext(web_contents->GetBrowserContext()); @@ -4574,10 +4579,8 @@ void ChromeContentBrowserClient::OverrideWebkitPrefs( UpdateForcedColorsForWebContent(web_prefs, web_contents, GetWebTheme()); - UpdatePreferredColorScheme( - web_prefs, - web_contents->GetPrimaryMainFrame()->GetSiteInstance()->GetSiteURL(), - web_contents, GetWebTheme()); + UpdatePreferredColorScheme(web_prefs, main_frame_site.GetSiteURL(), + web_contents, GetWebTheme()); web_prefs->translate_service_available = TranslateService::IsAvailable(prefs); @@ -4613,7 +4616,7 @@ void ChromeContentBrowserClient::OverrideWebkitPrefs( #endif for (auto& parts : extra_parts_) { - parts->OverrideWebkitPrefs(web_contents, web_prefs); + parts->OverrideWebPreferences(web_contents, main_frame_site, web_prefs); } web_prefs->prefers_default_scrollbar_styles = @@ -4622,12 +4625,14 @@ void ChromeContentBrowserClient::OverrideWebkitPrefs( bool ChromeContentBrowserClientParts::OverrideWebPreferencesAfterNavigation( WebContents* web_contents, + content::SiteInstance& main_frame_site, WebPreferences* web_prefs) { return false; } bool ChromeContentBrowserClient::OverrideWebPreferencesAfterNavigation( WebContents* web_contents, + content::SiteInstance& main_frame_site, WebPreferences* web_prefs) { bool prefs_changed = false; @@ -4656,8 +4661,8 @@ bool ChromeContentBrowserClient::OverrideWebPreferencesAfterNavigation( #endif // !BUILDFLAG(IS_ANDROID) for (auto& parts : extra_parts_) { - prefs_changed |= - parts->OverrideWebPreferencesAfterNavigation(web_contents, web_prefs); + prefs_changed |= parts->OverrideWebPreferencesAfterNavigation( + web_contents, main_frame_site, web_prefs); } prefs_changed |= @@ -5308,6 +5313,19 @@ ChromeContentBrowserClient::CreateThrottlesForNavigation( throttles.push_back(std::move(url_to_apps_throttle)); } +#if BUILDFLAG(IS_CHROMEOS) + // TODO(crbug.com/366547977): This currently does nothing and allows all + // navigations to proceed if v2 is enabled on ChromeOS. Implement. + std::unique_ptr + chromeos_reimpl_navigation_throttle = + apps::ChromeOsReimplNavigationCapturingThrottle::MaybeCreate(handle); + if (chromeos_reimpl_navigation_throttle) { + // Verify the v1 throttle has not been created. + CHECK_EQ(url_to_apps_throttle, nullptr); + throttles.push_back(std::move(chromeos_reimpl_navigation_throttle)); + } +#endif // BUILDFLAG(IS_CHROMEOS) + std::unique_ptr navigation_capturing_redirection_throttle = web_app::NavigationCapturingRedirectionThrottle::MaybeCreate(handle); @@ -5342,16 +5360,9 @@ ChromeContentBrowserClient::CreateThrottlesForNavigation( SupervisedUserGoogleAuthNavigationThrottle::MaybeCreate(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:: @@ -5360,7 +5371,8 @@ ChromeContentBrowserClient::CreateThrottlesForNavigation( } if (fingerprinting_protection_filter::features:: - IsFingerprintingProtectionFeatureEnabled()) { + IsFingerprintingProtectionEnabledForIncognitoState( + profile ? profile->IsIncognitoProfile() : false)) { if (auto* throttle_manager = fingerprinting_protection_filter:: ThrottleManager::FromNavigationHandle(*handle)) { throttle_manager->MaybeAppendNavigationThrottles(handle, &throttles); @@ -5527,6 +5539,11 @@ ChromeContentBrowserClient::CreateThrottlesForNavigation( } } } + + MaybeAddThrottle( + NtpMicrosoftAuthResponseCaptureNavigationThrottle::MaybeCreateThrottleFor( + handle), + &throttles); #endif #if BUILDFLAG(ENABLE_OFFLINE_PAGES) @@ -5828,10 +5845,10 @@ ChromeContentBrowserClient::MaybeCreateSafeBrowsingURLLoaderThrottle( // Don't run checks if it matches the enterprise allowlist. return nullptr; } + bool has_valid_dm_token = false; auto* connectors_service = enterprise_connectors::ConnectorsServiceFactory::GetForBrowserContext( browser_context); - bool has_valid_dm_token = false; if (connectors_service) { base::expected @@ -5885,13 +5902,17 @@ ChromeContentBrowserClient::MaybeCreateSafeBrowsingURLLoaderThrottle( std::optional referring_app_info = std::nullopt; #if BUILDFLAG(IS_ANDROID) - if (base::FeatureList::IsEnabled( + if (safe_browsing::IsEnhancedProtectionEnabled(*profile->GetPrefs()) && + base::FeatureList::IsEnabled( safe_browsing::kAddReferringAppInfoToProtegoPings)) { + bool get_webapk_info = base::FeatureList::IsEnabled( + safe_browsing::kAddReferringWebApkToProtegoPings); WebContents* web_contents = wc_getter.Run(); if (web_contents) { referring_app_info = std::make_optional( - safe_browsing::GetReferringAppInfo(web_contents)); + safe_browsing::GetReferringAppInfo(web_contents, + get_webapk_info)); } } #endif @@ -6160,8 +6181,7 @@ ChromeContentBrowserClient::CreateNonNetworkNavigationURLLoaderFactory( #endif // BUILDFLAG(IS_CHROMEOS) #if !BUILDFLAG(IS_ANDROID) if (scheme == chrome::kIsolatedAppScheme) { - if (content::IsolatedWebAppsPolicy::AreIsolatedWebAppsEnabled( - browser_context) && + if (content::AreIsolatedWebAppsEnabled(browser_context) && !browser_context->ShutdownStarted()) { return web_app::IsolatedWebAppURLLoaderFactory::CreateForFrame( browser_context, /*app_origin=*/std::nullopt, frame_tree_node_id); @@ -6184,8 +6204,7 @@ void ChromeContentBrowserClient:: DCHECK(factories); #if !BUILDFLAG(IS_ANDROID) - if (content::IsolatedWebAppsPolicy::AreIsolatedWebAppsEnabled( - browser_context) && + if (content::AreIsolatedWebAppsEnabled(browser_context) && !browser_context->ShutdownStarted()) { factories->emplace(chrome::kIsolatedAppScheme, web_app::IsolatedWebAppURLLoaderFactory::Create( @@ -6212,8 +6231,7 @@ void ChromeContentBrowserClient:: DCHECK(factories); #if !BUILDFLAG(IS_ANDROID) - if (content::IsolatedWebAppsPolicy::AreIsolatedWebAppsEnabled( - browser_context) && + if (content::AreIsolatedWebAppsEnabled(browser_context) && !browser_context->ShutdownStarted()) { factories->emplace(chrome::kIsolatedAppScheme, web_app::IsolatedWebAppURLLoaderFactory::Create( @@ -6480,8 +6498,7 @@ void ChromeContentBrowserClient:: bool is_initiator_iwa = request_initiator_origin.has_value() && request_initiator_origin->scheme() == chrome::kIsolatedAppScheme; - if (content::IsolatedWebAppsPolicy::AreIsolatedWebAppsEnabled( - browser_context) && + if (content::AreIsolatedWebAppsEnabled(browser_context) && !browser_context->ShutdownStarted() && is_initiator_iwa) { if (frame_host != nullptr) { factories->emplace( @@ -6666,7 +6683,6 @@ bool ChromeContentBrowserClient::WillInterceptWebSocket( return false; return (web_request_api->MayHaveProxies() || - web_request_api->MayHaveWebsocketProxiesForExtensionTelemetry() || web_request_api->IsAvailableToWebViewEmbedderFrame(frame)); #else return false; @@ -6969,10 +6985,12 @@ ChromeContentBrowserClient::GetWebAuthenticationRequestDelegate( } #endif -void ChromeContentBrowserClient::CreatePaymentCredential( +void ChromeContentBrowserClient::CreateSecurePaymentConfirmationService( content::RenderFrameHost* render_frame_host, - mojo::PendingReceiver receiver) { - payments::CreatePaymentCredential(render_frame_host, std::move(receiver)); + mojo::PendingReceiver + receiver) { + payments::CreateSecurePaymentConfirmationService(render_frame_host, + std::move(receiver)); } std::unique_ptr @@ -7304,10 +7322,6 @@ ChromeContentBrowserClient::GetAsyncCheckTracker( contents->IsPrerenderedFrame(frame_tree_node_id)) { return nullptr; } - if (!base::FeatureList::IsEnabled( - safe_browsing::kSafeBrowsingAsyncRealTimeCheck)) { - return nullptr; - } return safe_browsing::AsyncCheckTracker::GetOrCreateForWebContents( contents, safe_browsing_service_->ui_manager().get(), safe_browsing::AsyncCheckTracker:: @@ -7856,7 +7870,8 @@ bool ChromeContentBrowserClient::IsJitDisabledForSite( bool ChromeContentBrowserClient::AreV8OptimizationsDisabledForSite( content::BrowserContext* browser_context, const GURL& site_url) { - // Only disable optimizations for schemes that might atually load web content. + // Only disable optimizations for schemes that might actually load web + // content. auto* policy = ChildProcessSecurityPolicy::GetInstance(); if (!site_url.is_empty() && !policy->IsWebSafeScheme(site_url.scheme())) { return false; @@ -7871,20 +7886,19 @@ bool ChromeContentBrowserClient::AreV8OptimizationsDisabledForSite( CONTENT_SETTING_BLOCK; } - // Activate experiment only for users who haven't explicitly disabled v8 - // optimization by default so that most of the users in the "experiment - // off" branch have v8 optimization enabled. - if (base::FeatureList::GetInstance()->IsEnabled( - kDisableJavascriptOptimizerByDefault)) { - return true; - } - return (map && map->GetContentSetting(site_url, site_url, ContentSettingsType::JAVASCRIPT_OPTIMIZER) == CONTENT_SETTING_BLOCK); } +bool ChromeContentBrowserClient::DisallowV8FeatureFlagOverridesForSite( + const GURL& site_url) { + // Disable V8 feature flag overrides specifically for top-chrome WebUI URLs. + return base::FeatureList::IsEnabled(features::kWebUIBundledCodeCache) && + IsTopChromeWebUIURL(site_url); +} + ukm::UkmService* ChromeContentBrowserClient::GetUkmService() { return g_browser_process->GetMetricsServicesManager()->GetUkmService(); } @@ -7947,20 +7961,21 @@ void ChromeContentBrowserClient::OnKeepaliveRequestFinished() { #if BUILDFLAG(IS_MAC) bool ChromeContentBrowserClient::SetupEmbedderSandboxParameters( sandbox::mojom::Sandbox sandbox_type, - sandbox::SandboxCompiler* compiler) { + sandbox::SandboxSerializer* serializer) { if (sandbox_type == sandbox::mojom::Sandbox::kSpeechRecognition) { base::FilePath soda_component_path = speech::GetSodaDirectory(); CHECK(!soda_component_path.empty()); - CHECK(compiler->SetParameter(sandbox::policy::kParamSodaComponentPath, - soda_component_path.value())); + CHECK(serializer->SetParameter(sandbox::policy::kParamSodaComponentPath, + soda_component_path.value())); base::FilePath soda_language_pack_path = speech::GetSodaLanguagePacksDirectory(); CHECK(!soda_language_pack_path.empty()); - CHECK(compiler->SetParameter(sandbox::policy::kParamSodaLanguagePackPath, - soda_language_pack_path.value())); + CHECK(serializer->SetParameter(sandbox::policy::kParamSodaLanguagePackPath, + soda_language_pack_path.value())); return true; - } else if (sandbox_type == sandbox::mojom::Sandbox::kScreenAI) { + } + if (sandbox_type == sandbox::mojom::Sandbox::kScreenAI) { // ScreenAI service needs read access to ScreenAI component binary path to // load it. base::FilePath screen_ai_binary_path = @@ -7970,9 +7985,11 @@ bool ChromeContentBrowserClient::SetupEmbedderSandboxParameters( VLOG(1) << "Screen AI component not found."; return false; } - return compiler->SetParameter(sandbox::policy::kParamScreenAiComponentPath, - screen_ai_binary_path.value()); - } else if (sandbox_type == sandbox::mojom::Sandbox::kOnDeviceTranslation) { + return serializer->SetParameter( + sandbox::policy::kParamScreenAiComponentPath, + screen_ai_binary_path.value()); + } + if (sandbox_type == sandbox::mojom::Sandbox::kOnDeviceTranslation) { auto translatekit_binary_path = on_device_translation::ComponentManager::GetInstance() .GetTranslateKitComponentPath(); @@ -7980,7 +7997,7 @@ bool ChromeContentBrowserClient::SetupEmbedderSandboxParameters( VLOG(1) << "TranslationKit component not found."; return false; } - return compiler->SetParameter( + return serializer->SetParameter( sandbox::policy::kParamTranslatekitComponentPath, translatekit_binary_path.value()); } @@ -8165,8 +8182,7 @@ ChromeContentBrowserClient::GetAlternativeErrorPageOverrideInfo( content::BrowserContext* browser_context, int32_t error_code) { #if !BUILDFLAG(IS_ANDROID) - if (content::IsolatedWebAppsPolicy::AreIsolatedWebAppsEnabled( - browser_context) && + if (content::AreIsolatedWebAppsEnabled(browser_context) && url.SchemeIs(chrome::kIsolatedAppScheme)) { content::mojom::AlternativeErrorPageOverrideInfoPtr alternative_error_page_override_info = @@ -8450,6 +8466,20 @@ bool ChromeContentBrowserClient:: return true; } +bool ChromeContentBrowserClient::IsBlobUrlPartitioningEnabled( + content::BrowserContext* browser_context) { + DCHECK_CURRENTLY_ON(BrowserThread::UI); + const PrefService::Preference* pref = + Profile::FromBrowserContext(browser_context) + ->GetPrefs() + ->FindPreference(prefs::kPartitionedBlobUrlUsage); + + if (pref && pref->IsManaged() && pref->GetValue()->is_bool()) { + return pref->GetValue()->GetBool(); + } + return true; +} + void ChromeContentBrowserClient::SetIsMinimalMode(bool minimal) { is_minimal_mode_ = minimal; } @@ -8464,13 +8494,13 @@ bool ChromeContentBrowserClient:: } #if BUILDFLAG(ENABLE_VIDEO_EFFECTS) -void ChromeContentBrowserClient::BindVideoEffectsManager( +void ChromeContentBrowserClient::BindReadonlyVideoEffectsManager( const std::string& device_id, content::BrowserContext* browser_context, - mojo::PendingReceiver - video_effects_manager) { - media_effects::BindVideoEffectsManager(device_id, browser_context, - std::move(video_effects_manager)); + mojo::PendingReceiver + readonly_video_effects_manager) { + media_effects::BindReadonlyVideoEffectsManager( + device_id, browser_context, std::move(readonly_video_effects_manager)); } void ChromeContentBrowserClient::BindVideoEffectsProcessor( @@ -8549,12 +8579,6 @@ void ChromeContentBrowserClient::NotifyMultiCaptureStateChanged( } #endif // BUILDFLAG(IS_CHROMEOS) -std::unique_ptr -ChromeContentBrowserClient::CreateDipsDelegate() { - return std::make_unique( - base::PassKey()); -} - bool ChromeContentBrowserClient::ShouldEnableDips( content::BrowserContext* browser_context) { return ShouldBrowserContextEnableDips(browser_context); @@ -8563,12 +8587,35 @@ bool ChromeContentBrowserClient::ShouldEnableDips( bool ShouldBrowserContextEnableDips(content::BrowserContext* browser_context) { Profile* profile = Profile::FromBrowserContext(browser_context); Profile* result = GetHumanProfileSelections().ApplyProfileSelection(profile); - // TODO: crbug.com/358137275 - Use CHECK() once we know it's safe. - DUMP_WILL_BE_CHECK(!result || result == profile) + CHECK(!result || result == profile) << "ApplyProfileSelection() returned a different profile"; return result == profile; } +void ChromeContentBrowserClient::OnDipsServiceCreated( + content::BrowserContext* browser_context, + content::BtmService* dips_service) { + // Create BtmBrowserSigninDetector. + CHECK(BtmBrowserSigninDetector::Get(browser_context)); + dips::StatefulBounceCounter::CreateFor(dips_service); +} + +static_assert(content::ContentBrowserClient::kDefaultDipsRemoveMask == + (chrome_browsing_data_remover::FILTERABLE_DATA_TYPES & + ((content::BrowsingDataRemover::DATA_TYPE_CONTENT_END << 1) - + 1)), + "kDefaultDipsRemoveMask must contain all the entries of " + "FILTERABLE_DATA_TYPES that are known in //content"); + +uint64_t ChromeContentBrowserClient::GetDipsRemoveMask() { + return chrome_browsing_data_remover::FILTERABLE_DATA_TYPES; +} + +bool ChromeContentBrowserClient::ShouldDipsDeleteInteractionRecords( + uint64_t remove_mask) { + return remove_mask & chrome_browsing_data_remover::DATA_TYPE_HISTORY; +} + bool ChromeContentBrowserClient::ShouldSuppressAXLoadComplete( RenderFrameHost* rfh) { CHECK(rfh); @@ -8802,16 +8849,39 @@ void ChromeContentBrowserClient::OnTracingServiceStopped() { std::unique_ptr ChromeContentBrowserClient::OverrideForInternalWebUI(content::WebUI* web_ui, const GURL& url) { - if (!base::FeatureList::IsEnabled(features::kInternalOnlyUisPref)) { + if (!base::FeatureList::IsEnabled(chrome_urls::kInternalOnlyUisPref)) { return nullptr; } PrefService* local_state = g_browser_process->local_state(); DCHECK(local_state); - DCHECK(local_state->FindPreference(prefs::kInternalOnlyUisEnabled)); - if (local_state->GetBoolean(prefs::kInternalOnlyUisEnabled)) { + DCHECK(local_state->FindPreference(chrome_urls::kInternalOnlyUisEnabled)); + if (local_state->GetBoolean(chrome_urls::kInternalOnlyUisEnabled)) { return nullptr; } return std::make_unique(web_ui, url.host()); } + +#if BUILDFLAG(ENABLE_PDF) +std::optional +ChromeContentBrowserClient::MaybeOverrideLocalURLCrossOriginEmbedderPolicy( + content::NavigationHandle* navigation_handle) { + if (!chrome_pdf::features::IsOopifPdfEnabled() || + !navigation_handle->IsPdf()) { + return std::nullopt; + } + + // TODO(crbug.com/40053796): Local URLs inherit their policy container from + // the navigation initiator instead of the document creating the navigation + // request, so local PDF URL navigations in the PDF renderer inherit policies + // from the PDF extension frame (the parent frame) and might have the + // incorrect COEP. Until this is fixed, just copy the COEP directly from the + // PDF embedder. + content::RenderFrameHost* pdf_extension = navigation_handle->GetParentFrame(); + CHECK(pdf_extension); + content::RenderFrameHost* pdf_embedder = pdf_extension->GetParent(); + CHECK(pdf_embedder); + return pdf_embedder->GetCrossOriginEmbedderPolicy(); +} +#endif // BUILDFLAG(ENABLE_PDF) 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 48d8f8686..dc8800d42 100755 --- a/tools/under-control/src/chrome/browser/prefs/browser_prefs.cc +++ b/tools/under-control/src/chrome/browser/prefs/browser_prefs.cc @@ -90,6 +90,7 @@ #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/page_info/core/merchant_trust_service.h" #include "components/plus_addresses/plus_address_prefs.h" #include "components/privacy_sandbox/tpcd_pref_names.h" #include "components/services/on_device_translation/buildflags/buildflags.h" @@ -190,6 +191,7 @@ #include "components/translate/core/browser/translate_prefs.h" #include "components/update_client/update_client.h" #include "components/variations/service/variations_service.h" +#include "components/webui/chrome_urls/pref_names.h" #include "content/public/browser/render_process_host.h" #include "extensions/buildflags/buildflags.h" #include "net/http/http_server_properties_manager.h" @@ -203,6 +205,8 @@ #endif #if BUILDFLAG(ENABLE_EXTENSIONS_CORE) +#include "chrome/browser/extensions/extension_web_ui.h" +#include "chrome/browser/ui/webui/extensions/extensions_ui_prefs.h" #include "extensions/browser/api/runtime/runtime_api.h" #include "extensions/browser/extension_prefs.h" #include "extensions/browser/permissions_manager.h" @@ -215,7 +219,6 @@ #include "chrome/browser/extensions/activity_log/activity_log.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" #include "chrome/browser/ui/webui/extensions/extensions_ui.h" @@ -276,6 +279,7 @@ #include "chrome/browser/metrics/tab_stats/tab_stats_tracker.h" #include "chrome/browser/nearby_sharing/common/nearby_share_prefs.h" #include "chrome/browser/new_tab_page/modules/file_suggestion/drive_service.h" +#include "chrome/browser/new_tab_page/modules/file_suggestion/microsoft_files_page_handler.h" #include "chrome/browser/new_tab_page/modules/safe_browsing/safe_browsing_handler.h" #include "chrome/browser/new_tab_page/modules/v2/authentication/microsoft_auth_page_handler.h" #include "chrome/browser/new_tab_page/modules/v2/calendar/google_calendar_page_handler.h" @@ -312,7 +316,6 @@ #include "components/live_caption/live_caption_controller.h" #include "components/live_caption/live_translate_controller.h" #include "components/ntp_tiles/custom_links_manager_impl.h" -#include "components/user_notes/user_notes_prefs.h" #endif // BUILDFLAG(IS_ANDROID) #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) @@ -323,15 +326,14 @@ #include "chrome/browser/chromeos/extensions/echo_private/echo_private_api_util.h" #include "chrome/browser/chromeos/extensions/login_screen/login/login_api_prefs.h" #include "chrome/browser/chromeos/policy/dlp/dlp_rules_manager_impl.h" -#include "chrome/browser/chromeos/quickoffice/quickoffice_prefs.h" #include "chrome/browser/chromeos/reporting/metric_reporting_prefs.h" #include "chrome/browser/extensions/api/document_scan/profile_prefs_registry_util.h" #include "chrome/browser/extensions/api/enterprise_platform_keys/enterprise_platform_keys_registry_util.h" #include "chrome/browser/memory/oom_kills_monitor.h" #include "chrome/browser/policy/annotations/blocklist_handler.h" -#include "chrome/browser/policy/networking/policy_cert_service.h" #include "chrome/browser/policy/system_features_disable_list_policy_handler.h" #include "chrome/browser/ui/webui/certificates_handler.h" +#include "chromeos/ash/components/quickoffice/quickoffice_prefs.h" #include "chromeos/ui/wm/fullscreen/pref_names.h" #if BUILDFLAG(USE_CUPS) #include "chrome/browser/extensions/api/printing/printing_api_handler.h" @@ -339,7 +341,6 @@ #endif // BUILDFLAG(IS_CHROMEOS) #if BUILDFLAG(IS_CHROMEOS_ASH) -#include "ash/components/arc/arc_prefs.h" #include "ash/constants/ash_pref_names.h" #include "ash/public/cpp/ash_prefs.h" #include "chrome/browser/apps/app_discovery_service/almanac_fetcher.h" @@ -420,7 +421,6 @@ #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_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" @@ -435,6 +435,7 @@ #include "chrome/browser/ui/webui/settings/reset_settings_handler.h" #include "chrome/browser/upgrade_detector/upgrade_detector_chromeos.h" #include "chromeos/ash/components/audio/audio_devices_pref_handler_impl.h" +#include "chromeos/ash/components/boca/babelorca/babel_orca_manager.h" #include "chromeos/ash/components/boca/on_task/on_task_prefs.h" #include "chromeos/ash/components/demo_mode/utils/demo_session_utils.h" #include "chromeos/ash/components/local_search_service/search_metrics_reporter.h" @@ -446,7 +447,9 @@ #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/scheduler_config/scheduler_configuration_manager.h" #include "chromeos/ash/components/timezone/timezone_resolver.h" +#include "chromeos/ash/experiences/arc/arc_prefs.h" #include "chromeos/ash/services/assistant/public/cpp/assistant_prefs.h" #include "chromeos/ash/services/auth_factor_config/auth_factor_config.h" #include "chromeos/ash/services/bluetooth_config/bluetooth_power_controller_impl.h" @@ -512,7 +515,7 @@ #include "chrome/browser/ui/startup/first_run_service.h" #endif -#if !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_CHROMEOS) +#if BUILDFLAG(ENABLE_DOWNGRADE_PROCESSING) #include "chrome/browser/downgrade/downgrade_prefs.h" #endif @@ -557,66 +560,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 01/2024. -const char kPrivacySandboxPageViewed[] = "privacy_sandbox.page_viewed"; - -// Deprecated 01/2024. -const char kPrivacySandboxApisEnabledV2[] = "privacy_sandbox.apis_enabled_v2"; -const char kPrivacySandboxManuallyControlledV2[] = - "privacy_sandbox.manually_controlled_v2"; - -// Deprecated 01/2024. -#if BUILDFLAG(ENABLE_COMPOSE) -constexpr char kPrefHasAcceptedComposeConsent[] = - "compose_has_accepted_consent"; -constexpr char kAutofillAssistanceEnabled[] = "autofill_assistance.enabled"; -#endif - -// Deprecated 01/2024. -const char kSyncedLastTimePasswordCheckCompleted[] = - "profile.credentials_last_password_checkup_time"; - -// Deprecated 01/2024. -const char kDownloadBubbleIphSuppression[] = "suppress_download_bubble_iph"; - -#if BUILDFLAG(IS_CHROMEOS_ASH) -// Deprecated 01/2024. -const char kPersistedSystemExtensions[] = "system_extensions.persisted"; -#endif // BUILDFLAG(IS_CHROMEOS_ASH) - -// Deprecated 01/2024. -const char kPPAPISharedImagesForVideoDecoderAllowed[] = - "policy.ppapi_shared_images_for_video_decoder_allowed"; - -#if BUILDFLAG(IS_CHROMEOS_ASH) -// Deprecated 01/2024. -const char kBorealisVmTokenHash[] = "borealis.vm_token_hash"; -#endif // BUILDFLAG(IS_CHROMEOS_ASH) - -// Deprecated 01/2024. -#if BUILDFLAG(IS_CHROMEOS_ASH) -constexpr char kExtendedFkeysModifier[] = - "ash.settings.extended_fkeys_modifier"; -#endif // BUILDFLAG(IS_CHROMEOS_ASH) - -// Deprecated 01/2024. -constexpr char kNtpShownPage[] = "ntp.shown_page"; -constexpr char kNtpAppPageNames[] = "ntp.app_page_names"; - -// Deprecated 01/2024. -#if BUILDFLAG(IS_WIN) -const char kSearchResultsPagePrimaryFontsPref[] = - "cached_fonts.search_results_page.primary"; -const char kSearchResultsPageFallbackFontsPref[] = - "cached_fonts.search_results_page.fallback"; -#endif // BUILDFLAG(IS_WIN) - -// Deprecated 01/2024. -#if BUILDFLAG(IS_CHROMEOS_ASH) -constexpr char kUpdateNotificationLastShownMilestone[] = - "update_notification_last_shown_milestone"; -#endif // BUILDFLAG(IS_CHROMEOS_ASH) - // Deprecated 02/2024. #if BUILDFLAG(IS_ANDROID) constexpr char kSavePasswordsSuspendedByError[] = @@ -1154,42 +1097,55 @@ inline constexpr char kDeleteTimePeriodV2Basic[] = #if BUILDFLAG(IS_CHROMEOS_ASH) // Deprecated 12/2024 -const char kCryptAuthDeviceSyncIsRecoveringFromFailure[] = +inline const char kCryptAuthDeviceSyncIsRecoveringFromFailure[] = "cryptauth.device_sync.is_recovering_from_failure"; -const char kCryptAuthDeviceSyncLastSyncTimeSeconds[] = +inline const char kCryptAuthDeviceSyncLastSyncTimeSeconds[] = "cryptauth.device_sync.last_device_sync_time_seconds"; -const char kCryptAuthDeviceSyncReason[] = "cryptauth.device_sync.reason"; -const char kCryptAuthDeviceSyncUnlockKeys[] = +inline const char kCryptAuthDeviceSyncReason[] = "cryptauth.device_sync.reason"; +inline const char kCryptAuthDeviceSyncUnlockKeys[] = "cryptauth.device_sync.unlock_keys"; -const char kCryptAuthEnrollmentIsRecoveringFromFailure[] = +inline const char kCryptAuthEnrollmentIsRecoveringFromFailure[] = "cryptauth.enrollment.is_recovering_from_failure"; -const char kCryptAuthEnrollmentLastEnrollmentTimeSeconds[] = +inline const char kCryptAuthEnrollmentLastEnrollmentTimeSeconds[] = "cryptauth.enrollment.last_enrollment_time_seconds"; -const char kCryptAuthEnrollmentReason[] = "cryptauth.enrollment.reason"; -const char kCryptAuthEnrollmentUserPublicKey[] = +inline const char kCryptAuthEnrollmentReason[] = "cryptauth.enrollment.reason"; +inline const char kCryptAuthEnrollmentUserPublicKey[] = "cryptauth.enrollment.user_public_key"; -const char kCryptAuthEnrollmentUserPrivateKey[] = +inline const char kCryptAuthEnrollmentUserPrivateKey[] = "cryptauth.enrollment.user_private_key"; -const char kLacrosLaunchOnLogin[] = "lacros.launch_on_login"; -const char kLacrosLaunchSwitch[] = "lacros_launch_switch"; -const char kLacrosSelection[] = "lacros_selection"; +inline const char kLacrosLaunchOnLogin[] = "lacros.launch_on_login"; +inline const char kLacrosLaunchSwitch[] = "lacros_launch_switch"; +inline const char kLacrosSelection[] = "lacros_selection"; +inline constexpr char kAccessibilityCursorColorEnabled[] = + "settings.a11y.cursor_color_enabled"; #endif // Deprecated 12/2024. inline constexpr char kPageContentCollectionEnabled[] = "page_content_collection.enabled"; +// Deprecated 01/2025. +inline constexpr char kCompactModeEnabled[] = "compact_mode"; + +// Deprecated 01/2025. +inline constexpr char kSafeBrowsingAutomaticDeepScanningIPHSeen[] = + "safebrowsing.automatic_deep_scanning_iph_seen"; +inline constexpr char kSafeBrowsingAutomaticDeepScanPerformed[] = + "safe_browsing.automatic_deep_scan_performed"; + +#if BUILDFLAG(IS_CHROMEOS) +// Deprecated 01/2025. +inline constexpr char kUsedPolicyCertificates[] = + "policy.used_policy_certificates"; +#endif // BUILDFLAG(IS_CHROMEOS) + +// Deprecated 02/2025. +inline constexpr char kUserAgentClientHintsGREASEUpdateEnabled[] = + "policy.user_agent_client_hints_grease_update_enabled"; + // Register local state used only for migration (clearing or moving to a new // key). void RegisterLocalStatePrefsForMigration(PrefRegistrySimple* registry) { - // Deprecated 01/2024. - registry->RegisterBooleanPref(kPPAPISharedImagesForVideoDecoderAllowed, true); - - // Deprecated 01/2024. -#if BUILDFLAG(IS_CHROMEOS_ASH) - registry->RegisterIntegerPref(kExtendedFkeysModifier, 0); -#endif - // Deprecated 02/2024 #if BUILDFLAG(IS_MAC) registry->RegisterBooleanPref(kScreenTimeEnabled, true); @@ -1294,6 +1250,9 @@ void RegisterLocalStatePrefsForMigration(PrefRegistrySimple* registry) { registry->RegisterIntegerPref(kLacrosLaunchSwitch, 0); registry->RegisterIntegerPref(kLacrosSelection, 0); #endif + + // Deprecated 02/2025. + registry->RegisterBooleanPref(kUserAgentClientHintsGREASEUpdateEnabled, true); } // Register prefs used only for migration (clearing or moving to a new key). @@ -1301,47 +1260,6 @@ void RegisterProfilePrefsForMigration( user_prefs::PrefRegistrySyncable* registry) { chrome_browser_net::secure_dns::RegisterProbesSettingBackupPref(registry); - // Deprecated 01/2024. - registry->RegisterBooleanPref(kPrivacySandboxPageViewed, false); - - // Deprecated 01/2024. - registry->RegisterBooleanPref(kPrivacySandboxApisEnabledV2, false); - registry->RegisterBooleanPref(kPrivacySandboxManuallyControlledV2, false); - -// Deprecated 01/2024. -#if BUILDFLAG(ENABLE_COMPOSE) - registry->RegisterBooleanPref(kPrefHasAcceptedComposeConsent, false); - registry->RegisterBooleanPref(kAutofillAssistanceEnabled, false); -#endif - - // Deprecated 01/2024. - registry->RegisterTimePref(kSyncedLastTimePasswordCheckCompleted, - base::Time()); - - // Deprecated 01/2024. - registry->RegisterBooleanPref(kDownloadBubbleIphSuppression, false); - -// Deprecated 01/2024. -#if BUILDFLAG(IS_CHROMEOS_ASH) - registry->RegisterDictionaryPref(kPersistedSystemExtensions); - registry->RegisterStringPref(kBorealisVmTokenHash, ""); -#endif // BUILDFLAG(IS_CHROMEOS_ASH) - - // Deprecated 01/2024. - registry->RegisterIntegerPref(kNtpShownPage, 0); - registry->RegisterListPref(kNtpAppPageNames); - - // Deprecated 01/2024. -#if BUILDFLAG(IS_WIN) - registry->RegisterListPref(kSearchResultsPagePrimaryFontsPref); - registry->RegisterListPref(kSearchResultsPageFallbackFontsPref); -#endif - - // Deprecated 01/2024. -#if BUILDFLAG(IS_CHROMEOS_ASH) - registry->RegisterIntegerPref(kUpdateNotificationLastShownMilestone, -10); -#endif - // Deprecated 02/2024. #if BUILDFLAG(IS_ANDROID) registry->RegisterBooleanPref(kSavePasswordsSuspendedByError, false); @@ -1676,10 +1594,24 @@ void RegisterProfilePrefsForMigration( registry->RegisterStringPref(kCryptAuthEnrollmentUserPrivateKey, std::string()); registry->RegisterBooleanPref(kLacrosLaunchOnLogin, false); + registry->RegisterBooleanPref(kAccessibilityCursorColorEnabled, false); #endif // Deprecated 12/2024. registry->RegisterBooleanPref(kPageContentCollectionEnabled, false); + + // Deprecated 01/2025. + registry->RegisterBooleanPref(kCompactModeEnabled, false); + + // Deprecated 01/2025. + registry->RegisterBooleanPref(kSafeBrowsingAutomaticDeepScanningIPHSeen, + false); + registry->RegisterBooleanPref(kSafeBrowsingAutomaticDeepScanPerformed, false); + +#if BUILDFLAG(IS_CHROMEOS) + // Deprecated 01/2025. + registry->RegisterBooleanPref(kUsedPolicyCertificates, false); +#endif // BUILDFLAG(IS_CHROMEOS) } } // namespace @@ -1708,6 +1640,7 @@ void RegisterLocalState(PrefRegistrySimple* registry) { BrowserProcessImpl::RegisterPrefs(registry); ChromeContentBrowserClient::RegisterLocalStatePrefs(registry); chrome_labs_prefs::RegisterLocalStatePrefs(registry); + chrome_urls::RegisterPrefs(registry); ChromeMetricsServiceClient::RegisterPrefs(registry); enterprise_util::RegisterLocalStatePrefs(registry); component_updater::RegisterPrefs(registry); @@ -1773,12 +1706,9 @@ void RegisterLocalState(PrefRegistrySimple* registry) { // function called above. Please keep this list alphabetized. registry->RegisterBooleanPref( policy::policy_prefs::kIntensiveWakeUpThrottlingEnabled, false); - registry->RegisterBooleanPref( - policy::policy_prefs::kUserAgentClientHintsGREASEUpdateEnabled, true); #if BUILDFLAG(IS_WIN) && BUILDFLAG(GOOGLE_CHROME_BRANDING) registry->RegisterBooleanPref(prefs::kFeatureNotificationsEnabled, true); #endif // BUILDFLAG(IS_WIN) && BUILDFLAG(GOOGLE_CHROME_BRANDING) - registry->RegisterBooleanPref(prefs::kInternalOnlyUisEnabled, false); #if BUILDFLAG(IS_ANDROID) registry->RegisterBooleanPref(policy::policy_prefs::kBackForwardCacheEnabled, true); @@ -1949,7 +1879,7 @@ void RegisterLocalState(PrefRegistrySimple* registry) { #endif // BUILDFLAG(GOOGLE_CHROME_BRANDING) #endif // BUILDFLAG(IS_WIN) -#if !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_CHROMEOS) +#if BUILDFLAG(ENABLE_DOWNGRADE_PROCESSING) downgrade::RegisterPrefs(registry); #endif @@ -2058,6 +1988,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, media_device_salt::MediaDeviceIDSalt::RegisterProfilePrefs(registry); MediaEngagementService::RegisterProfilePrefs(registry); MediaStorageIdSalt::RegisterProfilePrefs(registry); + page_info::MerchantTrustService::RegisterProfilePrefs(registry); metrics::RegisterDemographicsProfilePrefs(registry); NotificationDisplayServiceImpl::RegisterProfilePrefs(registry); NotifierStateTracker::RegisterProfilePrefs(registry); @@ -2127,14 +2058,14 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, extensions::PermissionsManager::RegisterProfilePrefs(registry); extensions::ExtensionPrefs::RegisterProfilePrefs(registry); extensions::RuntimeAPI::RegisterPrefs(registry); + extensions_ui_prefs::RegisterProfilePrefs(registry); + ExtensionWebUI::RegisterProfilePrefs(registry); #endif // BUILDFLAG(ENABLE_EXTENSIONS_CORE) #if BUILDFLAG(ENABLE_EXTENSIONS) - ExtensionWebUI::RegisterProfilePrefs(registry); RegisterAnimationPolicyPrefs(registry); extensions::ActivityLog::RegisterProfilePrefs(registry); extensions::AudioAPI::RegisterUserPrefs(registry); - extensions::ExtensionsUI::RegisterProfilePrefs(registry); #if BUILDFLAG(IS_CHROMEOS_ASH) extensions::shared_storage::RegisterProfilePrefs(registry); #endif // BUILDFLAG(IS_CHROMEOS_ASH) @@ -2199,6 +2130,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, media_router::RegisterAccessCodeProfilePrefs(registry); media_router::RegisterProfilePrefs(registry); MicrosoftAuthPageHandler::RegisterProfilePrefs(registry); + MicrosoftFilesPageHandler::RegisterProfilePrefs(registry); NewTabPageHandler::RegisterProfilePrefs(registry); NewTabPageUI::RegisterProfilePrefs(registry); ntp::SafeBrowsingHandler::RegisterProfilePrefs(registry); @@ -2220,7 +2152,6 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, ThemeColorPickerHandler::RegisterProfilePrefs(registry); toolbar::RegisterProfilePrefs(registry); UnifiedAutoplayConfig::RegisterProfilePrefs(registry); - user_notes::RegisterProfilePrefs(registry); #endif // BUILDFLAG(IS_ANDROID) #if BUILDFLAG(IS_CHROMEOS) @@ -2232,7 +2163,6 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, chromeos::cloud_storage::RegisterProfilePrefs(registry); chromeos::cloud_upload::RegisterProfilePrefs(registry); policy::NetworkAnnotationBlocklistHandler::RegisterPrefs(registry); - policy::PolicyCertService::RegisterProfilePrefs(registry); quickoffice::RegisterProfilePrefs(registry); registry->RegisterBooleanPref(prefs::kDeskAPIThirdPartyAccessEnabled, false); registry->RegisterBooleanPref(prefs::kDeskAPIDeskSaveAndShareEnabled, false); @@ -2337,6 +2267,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, ash::reporting::RegisterProfilePrefs(registry); ChromeMediaAppGuestUIDelegate::RegisterProfilePrefs(registry); ash::boca::RegisterOnTaskProfilePrefs(registry); + ash::boca::BabelOrcaManager::RegisterProfilePrefs(registry); #endif // BUILDFLAG(IS_CHROMEOS_ASH) #if BUILDFLAG(IS_CHROMEOS_LACROS) @@ -2389,6 +2320,9 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, registry->RegisterBooleanPref( webauthn::pref_names::kRemoteProxiedRequestsAllowed, false); + registry->RegisterListPref( + webauthn::pref_names::kRemoteDesktopAllowedOrigins); + registry->RegisterStringPref( webauthn::pref_names::kLastUsedPairingFromSyncPublicKey, ""); @@ -2446,8 +2380,6 @@ 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) { @@ -2493,14 +2425,6 @@ void MigrateObsoleteLocalStatePrefs(PrefService* local_state) { // BEGIN_MIGRATE_OBSOLETE_LOCAL_STATE_PREFS // Please don't delete the preceding line. It is used by PRESUBMIT.py. - // Added 01/2024. - local_state->ClearPref(kPPAPISharedImagesForVideoDecoderAllowed); - -// Added 01/2024. -#if BUILDFLAG(IS_CHROMEOS_ASH) - local_state->ClearPref(kExtendedFkeysModifier); -#endif - // Added 02/2024 #if BUILDFLAG(IS_MAC) local_state->ClearPref(kScreenTimeEnabled); @@ -2606,6 +2530,9 @@ void MigrateObsoleteLocalStatePrefs(PrefService* local_state) { local_state->ClearPref(kLacrosSelection); #endif + // Added 02/2025. + local_state->ClearPref(kUserAgentClientHintsGREASEUpdateEnabled); + // Please don't delete the following line. It is used by PRESUBMIT.py. // END_MIGRATE_OBSOLETE_LOCAL_STATE_PREFS @@ -2658,57 +2585,6 @@ void MigrateObsoleteProfilePrefs(PrefService* profile_prefs, profile_path); #endif - // Added 01/2024. - profile_prefs->ClearPref(kPrivacySandboxPageViewed); - - // Added 01/2024. - profile_prefs->ClearPref(kPrivacySandboxApisEnabledV2); - profile_prefs->ClearPref(kPrivacySandboxManuallyControlledV2); - - // Added 01/2024. -#if BUILDFLAG(ENABLE_COMPOSE) - profile_prefs->ClearPref(kPrefHasAcceptedComposeConsent); - profile_prefs->ClearPref(kAutofillAssistanceEnabled); -#endif - - // Added 01/2024. - profile_prefs->ClearPref(kSyncedLastTimePasswordCheckCompleted); - - // Added 01/2024. - profile_prefs->ClearPref(kDownloadBubbleIphSuppression); - - // Added 01/2024. -#if BUILDFLAG(IS_CHROMEOS_ASH) - profile_prefs->ClearPref(kPersistedSystemExtensions); - profile_prefs->ClearPref(kBorealisVmTokenHash); -#endif // BUILDFLAG(IS_CHROMEOS_ASH) - -#if !BUILDFLAG(IS_ANDROID) - // Added 1/2024. - performance_manager::user_tuning::prefs::MigrateTabDiscardingExceptionsPref( - profile_prefs); -#endif - - // Added 01/2024. - profile_prefs->ClearPref(kNtpShownPage); - profile_prefs->ClearPref(kNtpAppPageNames); - - // Added 01/2024. -#if BUILDFLAG(IS_WIN) - profile_prefs->ClearPref(kSearchResultsPagePrimaryFontsPref); - profile_prefs->ClearPref(kSearchResultsPageFallbackFontsPref); -#endif - - // Added 01/2024. -#if BUILDFLAG(IS_CHROMEOS_ASH) - profile_prefs->ClearPref(kUpdateNotificationLastShownMilestone); -#endif - - // Added 01/2024. -#if BUILDFLAG(IS_ANDROID) - profile_prefs->ClearPref(kSavePasswordsSuspendedByError); -#endif - // Added 02/2024 profile_prefs->ClearPref(kSafeBrowsingDeepScanPromptSeen); profile_prefs->ClearPref(kSafeBrowsingEsbEnabledTimestamp); @@ -3022,11 +2898,30 @@ void MigrateObsoleteProfilePrefs(PrefService* profile_prefs, profile_prefs->ClearPref(kCryptAuthEnrollmentUserPublicKey); profile_prefs->ClearPref(kCryptAuthEnrollmentUserPrivateKey); profile_prefs->ClearPref(kLacrosLaunchOnLogin); + profile_prefs->ClearPref(kAccessibilityCursorColorEnabled); #endif // Added 12/2024. profile_prefs->ClearPref(kPageContentCollectionEnabled); +#if !BUILDFLAG(IS_ANDROID) + // Added 01/2025. + password_manager::features_util::MigrateDefaultProfileStorePref( + profile_prefs); +#endif // !BUILDFLAG(IS_ANDROID) + + // Added 01/2025. + profile_prefs->ClearPref(kCompactModeEnabled); + + // Added 01/2025. + profile_prefs->ClearPref(kSafeBrowsingAutomaticDeepScanPerformed); + profile_prefs->ClearPref(kSafeBrowsingAutomaticDeepScanningIPHSeen); + +#if BUILDFLAG(IS_CHROMEOS) + // Added 01/2025. + profile_prefs->ClearPref(kUsedPolicyCertificates); +#endif // BUILDFLAG(IS_CHROMEOS) + // 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 69f38a125..2d39a00a3 100755 --- a/tools/under-control/src/chrome/browser/ui/tab_helpers.cc +++ b/tools/under-control/src/chrome/browser/ui/tab_helpers.cc @@ -13,7 +13,6 @@ #include "base/time/default_tick_clock.h" #include "base/trace_event/trace_event.h" #include "build/build_config.h" -#include "build/chromeos_buildflags.h" #include "chrome/browser/bookmarks/bookmark_model_factory.h" #include "chrome/browser/breadcrumbs/breadcrumb_manager_tab_helper.h" #include "chrome/browser/browser_process.h" @@ -153,7 +152,6 @@ #include "components/site_engagement/content/site_engagement_service.h" #include "components/tracing/common/tracing_switches.h" #include "components/ukm/content/source_url_recorder.h" -#include "components/user_notes/user_notes_features.h" #include "components/webapps/browser/installable/installable_manager.h" #include "components/webapps/browser/installable/ml_installability_promoter.h" #include "content/public/browser/web_contents.h" @@ -212,22 +210,15 @@ #include "components/zoom/zoom_controller.h" #endif // BUILDFLAG(IS_ANDROID) -#if BUILDFLAG(IS_CHROMEOS_ASH) +#if BUILDFLAG(IS_CHROMEOS) #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/ash/mahi/web_contents/mahi_tab_helper.h" -#include "chrome/browser/ui/ash/google_one/google_one_offer_iph_tab_helper.h" -#endif - -#if BUILDFLAG(IS_CHROMEOS_LACROS) -#include "chrome/browser/lacros/web_contents_can_go_back_observer.h" -#endif - -#if BUILDFLAG(IS_CHROMEOS) #include "chrome/browser/chromeos/cros_apps/cros_apps_tab_helper.h" #include "chrome/browser/chromeos/gemini_app/gemini_app_tab_helper.h" #include "chrome/browser/chromeos/policy/dlp/dlp_content_tab_helper.h" #include "chrome/browser/chromeos/printing/print_preview/printing_init_cros.h" +#include "chrome/browser/ui/ash/google_one/google_one_offer_iph_tab_helper.h" #endif #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ @@ -356,9 +347,11 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) { } if (fingerprinting_protection_filter::features:: - IsFingerprintingProtectionFeatureEnabled()) { + IsFingerprintingProtectionEnabledForIncognitoState( + profile->IsIncognitoProfile())) { CreateFingerprintingProtectionWebContentsHelper( web_contents, profile->GetPrefs(), + HostContentSettingsMapFactory::GetForProfile(profile), TrackingProtectionSettingsFactory::GetForProfile(profile), profile->IsIncognitoProfile()); } @@ -507,9 +500,7 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) { web_contents, safe_browsing::TailoredSecurityServiceFactory::GetForProfile(profile)); } - if (base::FeatureList::IsEnabled( - safe_browsing::kSafeBrowsingAsyncRealTimeCheck) && - g_browser_process->safe_browsing_service()) { + if (g_browser_process->safe_browsing_service()) { safe_browsing::AsyncCheckTracker::CreateForWebContents( web_contents, g_browser_process->safe_browsing_service()->ui_manager(), safe_browsing::AsyncCheckTracker:: @@ -663,20 +654,14 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) { } #endif -#if BUILDFLAG(IS_CHROMEOS_ASH) +#if BUILDFLAG(IS_CHROMEOS) GoogleOneOfferIphTabHelper::CreateForWebContents(web_contents); // Do not create for Incognito mode. if (!profile->IsOffTheRecord()) { CampaignsManagerSessionTabHelper::CreateForWebContents(web_contents); } ash::BootTimesRecorderTabHelper::MaybeCreateForWebContents(web_contents); -#endif - -#if BUILDFLAG(IS_CHROMEOS_LACROS) - WebContentsCanGoBackObserver::CreateForWebContents(web_contents); -#endif -#if BUILDFLAG(IS_CHROMEOS) CrosAppsTabHelper::MaybeCreateForWebContents(web_contents); GeminiAppTabHelper::MaybeCreateForWebContents(web_contents); mahi::MahiTabHelper::MaybeCreateForWebContents(web_contents); @@ -687,10 +672,7 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) { webapps::PreRedirectionURLObserver::CreateForWebContents(web_contents); #endif -// TODO(crbug.com/40118868): Revisit the macro expression once build flag switch -// of lacros-chrome is complete. -#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || \ - (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) +#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) metrics::DesktopSessionDurationObserver::CreateForWebContents(web_contents); #endif @@ -710,7 +692,11 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) { kPerformanceControlsMemorySaverOptOutSurvey) || base::FeatureList::IsEnabled( performance_manager::features:: - kPerformanceControlsBatterySaverOptOutSurvey)) { + kPerformanceControlsBatterySaverOptOutSurvey) || + base::FeatureList::IsEnabled( + page_info::kMerchantTrustEvaluationControlSurvey) || + base::FeatureList::IsEnabled( + page_info::kMerchantTrustEvaluationExperimentSurvey)) { HatsHelper::CreateForWebContents(web_contents); } SharedHighlightingPromo::CreateForWebContents(web_contents); diff --git a/tools/under-control/src/chrome/browser/ui/webui/chrome_content_browser_client_webui_part.cc b/tools/under-control/src/chrome/browser/ui/webui/chrome_content_browser_client_webui_part.cc index bb8b59404..9210b158f 100755 --- a/tools/under-control/src/chrome/browser/ui/webui/chrome_content_browser_client_webui_part.cc +++ b/tools/under-control/src/chrome/browser/ui/webui/chrome_content_browser_client_webui_part.cc @@ -56,8 +56,9 @@ ChromeContentBrowserClientWebUiPart::ChromeContentBrowserClientWebUiPart() = ChromeContentBrowserClientWebUiPart::~ChromeContentBrowserClientWebUiPart() = default; -void ChromeContentBrowserClientWebUiPart::OverrideWebkitPrefs( +void ChromeContentBrowserClientWebUiPart::OverrideWebPreferences( content::WebContents* web_contents, + content::SiteInstance& main_frame_site, blink::web_pref::WebPreferences* web_prefs) { // This logic is invoked at startup, and anytime the default prefs change. GURL url = GetVisibleURL(web_contents); @@ -83,6 +84,7 @@ void ChromeContentBrowserClientWebUiPart::OverrideWebkitPrefs( bool ChromeContentBrowserClientWebUiPart::OverrideWebPreferencesAfterNavigation( content::WebContents* web_contents, + content::SiteInstance& main_frame_site, blink::web_pref::WebPreferences* web_prefs) { // This logic is invoked once on each navigation. @@ -92,8 +94,7 @@ bool ChromeContentBrowserClientWebUiPart::OverrideWebPreferencesAfterNavigation( } // Extensions are handled by ChromeContentBrowserClientExtensionsPart. - const GURL& site_url = - web_contents->GetPrimaryMainFrame()->GetSiteInstance()->GetSiteURL(); + const GURL& site_url = main_frame_site.GetSiteURL(); if (site_url.SchemeIs(extensions::kExtensionScheme)) { return false; } diff --git a/tools/under-control/src/chrome/common/extensions/api/autofill_private.idl b/tools/under-control/src/chrome/common/extensions/api/autofill_private.idl index f184f192f..a0abd0a15 100755 --- a/tools/under-control/src/chrome/common/extensions/api/autofill_private.idl +++ b/tools/under-control/src/chrome/common/extensions/api/autofill_private.idl @@ -23,8 +23,7 @@ namespace autofillPrivate { boolean isAutofillSyncToggleEnabled; }; - // A copy of FieldType from - // chrome/common/extensions/api/autofill_private.idl + // A copy of FieldType from components/autofill/core/browser/field_types.h. enum FieldType { NO_SERVER_DATA, UNKNOWN_TYPE, @@ -127,6 +126,14 @@ namespace autofillPrivate { ADDRESS_HOME_HOUSE_NUMBER_AND_APT, SINGLE_USERNAME_WITH_INTERMEDIATE_VALUES, IMPROVED_PREDICTION, + PASSPORT_NAME_TAG, + PASSPORT_NUMBER, + PASSPORT_ISSUING_COUNTRY_TAG, + PASSPORT_EXPIRATION_DATE_TAG, + PASSPORT_ISSUE_DATE_TAG, + LOYALTY_MEMBERSHIP_PROGRAM, + LOYALTY_MEMBERSHIP_PROVIDER, + LOYALTY_MEMBERSHIP_ID, MAX_VALID_FIELD_TYPE }; @@ -335,6 +342,10 @@ namespace autofillPrivate { // |address|: The address entry to save. static void saveAddress(AddressEntry address); + // Removes the address with the given ID. + // |guid|: ID of the address to remove. + static void removeAddress(DOMString guid); + // Gets the list of all countries. // |forAccountAddressProfile|: whether the address profile opened in the // editor originates in the user's profile. @@ -367,9 +378,9 @@ namespace autofillPrivate { // |iban|: The IBAN entry to save. static void saveIban(IbanEntry iban); - // Removes the entry (address or credit card) with the given ID. - // |guid|: ID of the entry to remove. - static void removeEntry(DOMString guid); + // Removes the payments entity with the given ID. + // |guid|: ID of the entity to remove. + static void removePaymentsEntity(DOMString guid); // Gets the list of credit cards. // |callback|: Callback which will be called with the list of credit cards. 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 a4a563c9c..b044f35d4 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 @@ -814,6 +814,8 @@ namespace autotestPrivate { // Response callback to report if a field trial exists and has been activated. callback IsFieldTrialActiveCallback = void(boolean active); + callback OverrideLobsterResponseForTestingCallback = void(boolean success); + // Request data containing the mock responses from // overrideOrcaResponseForTesting. dictionary OrcaResponseArray { @@ -1615,6 +1617,11 @@ namespace autotestPrivate { static void getCurrentInputMethodDescriptor( GetCurrentInputMethodDescriptorCallback callback); + // Overrides the response from Lobster Fetcher and returns the boolean value + // that indicates if the overriding is successful or not. + static void overrideLobsterResponseForTesting( + OverrideLobsterResponseForTestingCallback callback); + // Overrides the response from Orca Provider and returns the boolean value // that indicates if the overriding is successful or not. static void overrideOrcaResponseForTesting( diff --git a/tools/under-control/src/chrome/common/extensions/api/developer_private.idl b/tools/under-control/src/chrome/common/extensions/api/developer_private.idl index d43dd5346..d65deafb7 100755 --- a/tools/under-control/src/chrome/common/extensions/api/developer_private.idl +++ b/tools/under-control/src/chrome/common/extensions/api/developer_private.idl @@ -257,6 +257,7 @@ namespace developerPrivate { DOMString id; AccessModifier incognitoAccess; DOMString[] installWarnings; + boolean isCommandRegistrationHandledExternally; DOMString? launchUrl; Location location; DOMString? locationText; diff --git a/tools/under-control/src/chrome/common/extensions/api/enterprise_platform_keys.idl b/tools/under-control/src/chrome/common/extensions/api/enterprise_platform_keys.idl index 4b083fb55..c25f76a0c 100755 --- a/tools/under-control/src/chrome/common/extensions/api/enterprise_platform_keys.idl +++ b/tools/under-control/src/chrome/common/extensions/api/enterprise_platform_keys.idl @@ -21,14 +21,14 @@ namespace enterprise.platformKeys { // interface. The cryptographic operations, including key generation, are // hardware-backed. //

Only non-extractable keys can be generated. The supported key types - // are RSASSA-PKCS1-V1_5 and RSA-OAEP (on Chrome versions 134+) with + // are RSASSA-PKCS1-V1_5 and RSA-OAEP (on Chrome versions 135+) with // modulusLength up to 2048 and ECDSA with // namedCurve P-256. Each RSASSA-PKCS1-V1_5 and ECDSA key can // be used for signing data at most once, unless the extension is // allowlisted through the // KeyPermissions policy, // in which case the key can be used indefinitely. RSA-OAEP keys are - // supported since Chrome version 134 and can be used by extensions + // supported since Chrome version 135 and can be used by extensions // allowlisted through that same policy to unwrap other keys.

//

Keys generated on a specific Token cannot be used with // any other Tokens, nor can they be used with @@ -44,13 +44,13 @@ namespace enterprise.platformKeys { // non-extractable property, is done in software, so the keys are less // protected than hardware-backed keys. //

Only non-extractable keys can be generated. The supported key types - // are RSASSA-PKCS1-V1_5 and RSA-OAEP (on Chrome versions 134+) with + // are RSASSA-PKCS1-V1_5 and RSA-OAEP (on Chrome versions 135+) with // modulusLength up to 2048. Each RSASSA-PKCS1-V1_5 key can be // used for signing data at most once, unless the extension is allowlisted // through the // KeyPermissions policy, // in which case the key can be used indefinitely. RSA-OAEP keys are - // supported since Chrome version 134 and can be used by extensions + // supported since Chrome version 135 and can be used by extensions // allowlisted through that same policy to unwrap other keys.

//

Keys generated on a specific Token cannot be used with // any other Tokens, nor can they be used with diff --git a/tools/under-control/src/chrome/common/extensions/api/enterprise_platform_keys_internal.idl b/tools/under-control/src/chrome/common/extensions/api/enterprise_platform_keys_internal.idl index b98ff10cd..d4db017e5 100755 --- a/tools/under-control/src/chrome/common/extensions/api/enterprise_platform_keys_internal.idl +++ b/tools/under-control/src/chrome/common/extensions/api/enterprise_platform_keys_internal.idl @@ -22,7 +22,7 @@ namespace enterprise.platformKeysInternal { DOMString name; // Provided in case the algorithm is RSASSA-PKCS1-v1_5 or RSA-OAEP - // (the last type is supported on Chrome versions 134+). + // (the last type is supported on Chrome versions 135+). long? modulusLength; ArrayBuffer? publicExponent; Hash? hash; @@ -46,7 +46,7 @@ namespace enterprise.platformKeysInternal { static void getTokens(GetTokensCallback callback); // Internal version of SubtleCrypto.generateKey, currently supporting only - // RSASSA-PKCS1-v1_5, RSA-OAEP (on Chrome versions 134+), and ECDSA. + // RSASSA-PKCS1-v1_5, RSA-OAEP (on Chrome versions 135+), and ECDSA. // |tokenId| The id of a Token returned by |getTokens|. // |algorithm| The algorithm parameters as specified by WebCrypto. // |softwareBacked| Whether the key operations should be executed in diff --git a/tools/under-control/src/chrome/common/extensions/api/experimental_ai_data.idl b/tools/under-control/src/chrome/common/extensions/api/experimental_ai_data.idl index 4bb73991a..a804256f7 100755 --- a/tools/under-control/src/chrome/common/extensions/api/experimental_ai_data.idl +++ b/tools/under-control/src/chrome/common/extensions/api/experimental_ai_data.idl @@ -14,5 +14,8 @@ namespace experimentalAiData { DOMString userInput, long tabId, DataCallback callback); + static void getAiDataWithSpecifier(long tabId, + ArrayBuffer aiDataSpecifier, + DataCallback callback); }; }; diff --git a/tools/under-control/src/chrome/common/extensions/api/passwords_private.idl b/tools/under-control/src/chrome/common/extensions/api/passwords_private.idl index e1a91835c..c470b8fc2 100755 --- a/tools/under-control/src/chrome/common/extensions/api/passwords_private.idl +++ b/tools/under-control/src/chrome/common/extensions/api/passwords_private.idl @@ -357,7 +357,6 @@ namespace passwordsPrivate { callback PasswordCheckStatusCallback = void(PasswordCheckStatus status); callback ImportPasswordsCallback = void(ImportResults results); callback FetchFamilyResultsCallback = void(FamilyFetchResults results); - callback IsAccountStoreDefaultCallback = void(boolean isDefault); callback GetUrlCollectionCallback = void(UrlCollection urlCollection); callback CredentialsWithReusedPasswordCallback = void(PasswordUiEntryList[] entries); @@ -523,12 +522,6 @@ namespace passwordsPrivate { static void getPasswordCheckStatus( PasswordCheckStatusCallback callback); - // Requests whether the account store is a default location for saving - // passwords. False means the device store is a default one. Must be called - // when account storage is enabled. - static void isAccountStoreDefault( - IsAccountStoreDefaultCallback callback); - // Requests whether the given |url| meets the requirements to save a // password for it (e.g. valid, has proper scheme etc.) and returns the // corresponding URLCollection on success. Otherwise it raises an error. diff --git a/tools/under-control/src/chrome/common/extensions/api/system_indicator.idl b/tools/under-control/src/chrome/common/extensions/api/system_indicator.idl deleted file mode 100755 index bbbe8f249..000000000 --- a/tools/under-control/src/chrome/common/extensions/api/system_indicator.idl +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2012 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Manages an app's system indicator icon, an image displayed in the system's -// menubar, system tray, or other visible area provided by the OS. -// This is modelled after the other extension action APIs, such as -// chrome.browserAction and chrome.pageAction. -namespace systemIndicator { - dictionary SetIconDetails { - any? path; - any? imageData; - }; - - callback DoneCallback = void (); - - interface Functions { - // Set the image to be used as an indicator icon, using a set of ImageData - // objects. These objects should have multiple resolutions so that an - // appropriate size can be selected for the given icon size and DPI scaling - // settings. Only square ImageData objects are accepted. - static void setIcon( - SetIconDetails details, - optional DoneCallback callback); - - // Show the icon in the status tray. - static void enable(); - - // Hide the icon from the status tray. - static void disable(); - }; - - interface Events { - // Fired only when a click on the icon does not result in a menu being - // shown. - static void onClicked(); - }; -}; 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 a5ff7b9f2..71dcaea72 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 @@ -9,6 +9,7 @@ #include #include #include +#include #include "base/check_op.h" #include "base/command_line.h" @@ -20,6 +21,7 @@ #include "base/no_destructor.h" #include "base/notreached.h" #include "base/process/current_process.h" +#include "base/profiler/thread_group_profiler.h" #include "base/strings/string_number_conversions.h" #include "base/strings/string_util.h" #include "base/strings/utf_string_conversions.h" @@ -38,6 +40,7 @@ #include "chrome/common/crash_keys.h" #include "chrome/common/pepper_permission_util.h" #include "chrome/common/ppapi_utils.h" +#include "chrome/common/profiler/chrome_thread_group_profiler_client.h" #include "chrome/common/profiler/chrome_thread_profiler_client.h" #include "chrome/common/profiler/core_unwinders.h" #include "chrome/common/profiler/thread_profiler_configuration.h" @@ -185,8 +188,6 @@ #if BUILDFLAG(IS_ANDROID) #include "chrome/renderer/sandbox_status_extension_android.h" #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 @@ -230,7 +231,6 @@ #endif // BUILDFLAG(ENABLE_GUEST_VIEW) #if BUILDFLAG(ENABLE_PDF) -#include "chrome/renderer/pdf/chrome_pdf_internal_plugin_delegate.h" #include "components/pdf/renderer/internal_plugin_renderer_helpers.h" #endif // BUILDFLAG(ENABLE_PDF) @@ -285,7 +285,6 @@ using blink::WebURL; using blink::WebURLError; using blink::WebURLRequest; using blink::WebURLResponse; -using blink::WebVector; using blink::mojom::FetchCacheMode; using content::RenderFrame; using content::RenderThread; @@ -309,17 +308,23 @@ const char* const kPredefinedAllowedCameraDeviceOrigins[] = { "4EB74897CB187C7633357C2FE832E0AD6A44883A"}; #endif +#if BUILDFLAG(ENABLE_PDF) +std::vector GetAdditionalPdfInternalPluginAllowedOrigins() { + return {url::Origin::Create(GURL(chrome::kChromeUIPrintURL))}; +} +#endif // BUILDFLAG(ENABLE_PDF) + #if BUILDFLAG(ENABLE_PLUGINS) void AppendParams( const std::vector& additional_params, - WebVector* existing_names, - WebVector* existing_values) { + std::vector* existing_names, + std::vector* existing_values) { DCHECK(existing_names->size() == existing_values->size()); size_t existing_size = existing_names->size(); size_t total_size = existing_size + additional_params.size(); - WebVector names(total_size); - WebVector values(total_size); + std::vector names(total_size); + std::vector values(total_size); for (size_t i = 0; i < existing_size; ++i) { names[i] = (*existing_names)[i]; @@ -381,6 +386,8 @@ ChromeContentRendererClient::ChromeContentRendererClient() : remote_module_watcher_(nullptr, base::OnTaskRunnerDeleter(nullptr)) #endif { + base::ThreadGroupProfiler::SetClient( + std::make_unique()); sampling_profiler::ThreadProfiler::SetClient( std::make_unique()); @@ -608,7 +615,7 @@ void ChromeContentRendererClient::RenderFrameCreated( auto content_settings_delegate = std::make_unique(render_frame); -#if BUILDFLAG(ENABLE_EXTENSIONS) +#if BUILDFLAG(ENABLE_EXTENSIONS_CORE) content_settings_delegate->SetExtensionDispatcher( extensions::ExtensionsRendererClient::Get()->dispatcher()); #endif @@ -706,23 +713,9 @@ void ChromeContentRendererClient::RenderFrameCreated( render_frame, associated_interfaces); auto password_generation_agent = std::make_unique( render_frame, password_autofill_agent.get(), associated_interfaces); - new AutofillAgent( - render_frame, - {ExtractAllDatalists(false), FocusRequiresScroll(true), - QueryPasswordSuggestions(false), SecureContextRequired(false), - UserGestureRequired(true), - UsesKeyboardAccessoryForSuggestions(BUILDFLAG(IS_ANDROID))}, - std::move(password_autofill_agent), - std::move(password_generation_agent), associated_interfaces); - -#if BUILDFLAG(IS_ANDROID) - if (render_frame->IsMainFrame() && - base::FeatureList::IsEnabled( - payments::facilitated::kEnablePixDetection)) { - new payments::facilitated::FacilitatedPaymentsAgent( - render_frame, associated_interfaces); - } -#endif + new AutofillAgent(render_frame, std::move(password_autofill_agent), + std::move(password_generation_agent), + associated_interfaces); } if (content_capture::features::IsContentCaptureEnabled()) { @@ -866,7 +859,8 @@ bool ChromeContentRendererClient::IsPluginHandledExternally( // used within an origin allowed to create the internal PDF plugin; // otherwise, let Blink try to create the in-process PDF plugin. if (IsPdfInternalPluginAllowedOrigin( - render_frame->GetWebFrame()->GetSecurityOrigin())) { + render_frame->GetWebFrame()->GetSecurityOrigin(), + GetAdditionalPdfInternalPluginAllowedOrigins())) { return true; } } @@ -902,6 +896,7 @@ v8::Local ChromeContentRendererClient::GetScriptableObject( const blink::WebElement& plugin_element, v8::Isolate* isolate) { #if BUILDFLAG(ENABLE_EXTENSIONS) + // Used for plugins. return extensions::ExtensionsRendererClient::Get()->GetScriptableObject( plugin_element, isolate); #else @@ -915,6 +910,7 @@ bool ChromeContentRendererClient::OverrideCreatePlugin( WebPlugin** plugin) { std::string orig_mime_type = params.mime_type.Utf8(); #if BUILDFLAG(ENABLE_EXTENSIONS) + // Used for plugins. if (!extensions::ExtensionsRendererClient::Get()->OverrideCreatePlugin( render_frame, params)) { return false; @@ -1158,7 +1154,7 @@ WebPlugin* ChromeContentRendererClient::CreatePlugin( if (info.path.value() == ChromeContentClient::kPDFInternalPluginPath) { return pdf::CreateInternalPlugin( std::move(params), render_frame, - std::make_unique()); + GetAdditionalPdfInternalPluginAllowedOrigins()); } #endif // BUILDFLAG(ENABLE_PDF) @@ -1434,7 +1430,7 @@ bool ChromeContentRendererClient::RunIdleHandlerWhenWidgetsHidden() { } bool ChromeContentRendererClient::AllowPopup() { -#if BUILDFLAG(ENABLE_EXTENSIONS) +#if BUILDFLAG(ENABLE_EXTENSIONS_CORE) return extensions::ExtensionsRendererClient::Get()->AllowPopup(); #else return false; @@ -1443,7 +1439,7 @@ bool ChromeContentRendererClient::AllowPopup() { bool ChromeContentRendererClient::ShouldNotifyServiceWorkerOnWebSocketActivity( v8::Local context) { -#if BUILDFLAG(ENABLE_EXTENSIONS) +#if BUILDFLAG(ENABLE_EXTENSIONS_CORE) return extensions::Dispatcher::ShouldNotifyServiceWorkerOnWebSocketActivity( context); #else @@ -1457,7 +1453,7 @@ ChromeContentRendererClient::GetProtocolHandlerSecurityLevel( if (origin.scheme() == chrome::kIsolatedAppScheme) { return blink::ProtocolHandlerSecurityLevel::kSameOrigin; } -#if BUILDFLAG(ENABLE_EXTENSIONS) +#if BUILDFLAG(ENABLE_EXTENSIONS_CORE) return extensions::ExtensionsRendererClient::Get() ->GetProtocolHandlerSecurityLevel(); #else @@ -1473,7 +1469,7 @@ void ChromeContentRendererClient::WillSendRequest( const net::SiteForCookies& site_for_cookies, const url::Origin* initiator_origin, GURL* new_url) { -#if BUILDFLAG(ENABLE_EXTENSIONS) +#if BUILDFLAG(ENABLE_EXTENSIONS_CORE) // 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. extensions::ExtensionsRendererClient::Get()->WillSendRequest( @@ -1637,7 +1633,7 @@ ChromeContentRendererClient::GetSupportedKeySystems( bool ChromeContentRendererClient::ShouldReportDetailedMessageForSource( const std::u16string& source) { -#if BUILDFLAG(ENABLE_EXTENSIONS) +#if BUILDFLAG(ENABLE_EXTENSIONS_CORE) return extensions::IsSourceFromAnExtension(source); #else return false; @@ -1862,7 +1858,7 @@ void ChromeContentRendererClient::DidSetUserAgent( void ChromeContentRendererClient::AppendContentSecurityPolicy( const blink::WebURL& url, - blink::WebVector* csp) { + std::vector* csp) { #if BUILDFLAG(ENABLE_EXTENSIONS_CORE) #if BUILDFLAG(ENABLE_PDF) // Don't apply default CSP to PDF renderers. diff --git a/tools/under-control/src/components/policy/resources/templates/common_schemas.yaml b/tools/under-control/src/components/policy/resources/templates/common_schemas.yaml index f55183114..34fe3b02c 100755 --- a/tools/under-control/src/components/policy/resources/templates/common_schemas.yaml +++ b/tools/under-control/src/components/policy/resources/templates/common_schemas.yaml @@ -271,11 +271,19 @@ TimeUsageLimitEntry: UsbDeviceId: properties: product_id: + maximum: 65535 + minimum: 0 type: integer vendor_id: + maximum: 65535 + minimum: 0 type: integer + required: + - product_id + - vendor_id type: object UsbDeviceIdInclusive: + description: Use UsbDeviceId in new code. properties: product_id: type: integer diff --git a/tools/under-control/src/components/policy/resources/templates/policies.yaml b/tools/under-control/src/components/policy/resources/templates/policies.yaml index 876881008..a7e3083e9 100755 --- a/tools/under-control/src/components/policy/resources/templates/policies.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policies.yaml @@ -1324,7 +1324,15 @@ policies: 1323: AllowedInputMethodsForceEnabled 1324: WebRtcIPHandlingUrl 1325: GenAIPhotoEditingSettings - + 1326: PartitionedBlobUrlUsage + 1327: GlicSettings + 1328: DefaultControlledFrameSetting + 1329: ControlledFrameAllowedForUrls + 1330: ControlledFrameBlockedForUrls + 1331: ExternalStorageAllowlist + 1332: WebAuthenticationRemoteDesktopAllowedOrigins + 1333: ServiceWorkerToControlSrcdocIframeEnabled + 1334: ProvisionManagedClientCertificateForBrowser atomic_groups: 1: Homepage @@ -1383,3 +1391,4 @@ atomic_groups: 54: BrowserEventReporting 55: SmartCardConnectSettings 56: WebRtc + 57: ControlledFrameSettings diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/ControlledFrameAllowedForUrls.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/ControlledFrameAllowedForUrls.yaml new file mode 100755 index 000000000..517fcea38 --- /dev/null +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/ControlledFrameAllowedForUrls.yaml @@ -0,0 +1,30 @@ +caption: Allow Controlled Frame API on these sites +desc: |- + The Controlled Frame API, available to certain isolated contexts such as Isolated Web Apps (IWAs), allows an app to embed and manipulate arbitrary content. + Please see https://github.com/WICG/controlled-frame for details. + + Setting the policy lets you list the URL patterns that specify which sites are allowed to use the Controlled Frame API. + Valid patterns are limited to Isolated Web Apps. + + Leaving the policy unset means DefaultControlledFrameSetting applies for all sites, if it's set. + + URL patterns must not conflict with ControlledFrameBlockedForUrls. Neither policy takes precedence if a URL matches with both. + + For detailed information on valid url patterns, please see https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. * is not an accepted value for this policy. +example_value: +- isolated-app://aerugqztij5biqquuk3mfwpsaibuegaqcitgfchwuosuofdjabzqaaic +features: + dynamic_refresh: true + per_profile: true +supported_on: +- chrome_os:134- +future_on: +- chrome.* +owners: +- file://chrome/browser/controlled_frame/OWNERS +schema: + items: + type: string + type: array +tags: [] +type: list diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/ControlledFrameBlockedForUrls.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/ControlledFrameBlockedForUrls.yaml new file mode 100755 index 000000000..80244a05b --- /dev/null +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/ControlledFrameBlockedForUrls.yaml @@ -0,0 +1,30 @@ +caption: Block Controlled Frame API on these sites +desc: |- + The Controlled Frame API, available to certain isolated contexts such as Isolated Web Apps (IWAs), allows an app to embed and manipulate arbitrary content. + Please see https://github.com/WICG/controlled-frame for details. + + Setting the policy lets you list the URL patterns that specify which sites are not allowed to use the Controlled Frame API. + Valid patterns are limited to Isolated Web Apps. + + Leaving the policy unset means DefaultControlledFrameSetting applies for all sites, if it's set. + + URL patterns must not conflict with ControlledFrameAllowedForUrls. Neither policy takes precedence if a URL matches with both. + + For detailed information on valid url patterns, please see https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. * is not an accepted value for this policy. +example_value: +- isolated-app://aerugqztij5biqquuk3mfwpsaibuegaqcitgfchwuosuofdjabzqaaic +features: + dynamic_refresh: true + per_profile: true +supported_on: +- chrome_os:134- +future_on: +- chrome.* +owners: +- file://chrome/browser/controlled_frame/OWNERS +schema: + items: + type: string + type: array +tags: [] +type: list diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/DefaultControlledFrameSetting.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/DefaultControlledFrameSetting.yaml new file mode 100755 index 000000000..941dad8fc --- /dev/null +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/DefaultControlledFrameSetting.yaml @@ -0,0 +1,33 @@ +caption: Control use of the Controlled Frame API +default: null +desc: |- + The Controlled Frame API, available to certain isolated contexts such as Isolated Web Apps (IWAs), allows an app to embed and manipulate arbitrary content. + Please see https://github.com/WICG/controlled-frame for details. + + Setting the policy to 1 or leaving it unset allows Isolated Web App origins to use the Controlled Frame. + + Setting the policy to 2 blocks Isolated Web App origins from using the Controlled Frame. +example_value: 1 +features: + dynamic_refresh: true + per_profile: true +supported_on: +- chrome_os:134- +future_on: +- chrome.* +items: +- caption: Allow Isolated Web App origins to use the Controlled Frame + name: AllowControlledFrame + value: 1 +- caption: Do not allow Isolated Web App origins to use the Controlled Frame + name: BlockControlledFrame + value: 2 +owners: +- file://chrome/browser/controlled_frame/OWNERS +schema: + enum: + - 1 + - 2 + type: integer +tags: [] +type: int-enum diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/LegacySameSiteCookieBehaviorEnabledForDomainList.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/LegacySameSiteCookieBehaviorEnabledForDomainList.yaml index d140abb2f..6e78e13f4 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/LegacySameSiteCookieBehaviorEnabledForDomainList.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/LegacySameSiteCookieBehaviorEnabledForDomainList.yaml @@ -11,6 +11,7 @@ desc: |- example_value: - www.example.com - '[*.]example.edu' +deprecated: true features: dynamic_refresh: true per_profile: true diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/PartitionedBlobUrlUsage.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/PartitionedBlobUrlUsage.yaml new file mode 100755 index 000000000..c6750f7df --- /dev/null +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/PartitionedBlobUrlUsage.yaml @@ -0,0 +1,52 @@ +caption: Choose whether Blob URLs are partitioned during fetching and navigations + +default: true + +desc: |- + This policy controls whether Blob URLs are partitioned during fetching and navigation. + If this policy is set to Enabled or not set, Blob URLs will be partitioned. + If this policy is set to Disabled, Blob URLs won't be partitioned. + + If storage partitioning is disabled for a given top-level origin by either + ThirdPartyStoragePartitioningBlockedForOrigins + or DefaultThirdPartyStoragePartitioningSetting, + then Blob URLs will also not be partitioned. + + If you must use the policy, please file a bug on crbug.com explaining your + use case and CC {janiceliu, awillia}@chromium.org. The policy is scheduled to + be offered through $1Google Chrome + version 138, after which the old implementation will be removed. + + NOTE: Only newly-started renderer processes will reflect changes to this + policy while the browser is running. + + For detailed information on third-party storage partitioning, please see https://developers.google.com/privacy-sandbox/cookies/storage-partitioning. + +example_value: false + +features: + dynamic_refresh: true + per_profile: true + +future_on: + - chrome.* + - chrome_os + - android + +items: +- caption: Partition Blob URLs during fetching and navigation. + value: true +- caption: Do not partition Blob URLs during fetching and navigation. + value: false + +owners: +- awillia@chromium.org +- janiceliu@chromium.org +- potassium-katabolism@google.com + +schema: + type: boolean + +tags: [] + +type: main diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/policy_atomic_groups.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/policy_atomic_groups.yaml index 8781d26e7..600049178 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/policy_atomic_groups.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/policy_atomic_groups.yaml @@ -96,6 +96,12 @@ DirectSocketsSettings: - DefaultDirectSocketsPrivateNetworkAccessSetting - DirectSocketsPrivateNetworkAccessAllowedForUrls - DirectSocketsPrivateNetworkAccessBlockedForUrls +ControlledFrameSettings: + caption: Controlled Frame settings + policies: + - DefaultControlledFrameSetting + - ControlledFrameAllowedForUrls + - ControlledFrameBlockedForUrls SmartCardConnectSettings: caption: Smart Card Connect settings policies: diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Edu/ContentTransferEnablementStatus.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Edu/ContentTransferEnablementStatus.yaml index fb0cb1a97..03f9e5bcd 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Edu/ContentTransferEnablementStatus.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Edu/ContentTransferEnablementStatus.yaml @@ -1,8 +1,8 @@ -caption: Configure when the $2Google ChromeOS Content Transfer tool is available +caption: Configure when the $2Google ChromeOS Content transfer tool is available desc: |- - This policy enables the Content Transfer app for managed users. The Content Transfer app helps users transfer their data from their managed account to a consumer account. + This policy enables the Content transfer app for managed users. The Content transfer app helps users transfer their data from their managed account to a consumer account. - If is_enabled is set to true, the Content Transfer app will be shown on and between the start and end dates according to the local time. + If is_enabled is set to true, the Content transfer app will be shown on and between the start and end dates according to the local time. If is_enabled is set to false or unset, the app will not be shown. @@ -10,9 +10,9 @@ desc: |- If end_date is unset, then the app is shown indefinitely from the start date. - If both start_date and end_date are unset, the app is shown indefinitely. If the start and end dates are invalid, then the Content Transfer app will not be shown. This includes if the provided dates are non-existent or the end date is before the start date. + If both start_date and end_date are unset, the app is shown indefinitely. If the start and end dates are invalid, then the Content transfer app will not be shown. This includes if the provided dates are non-existent or the end date is before the start date. - Data transfer with Takeout also needs to be enabled in order for the Content Transfer app to work properly. See https://support.google.com/a/answer/6364687 for additional information. + Data transfer with Takeout also needs to be enabled in order for the Content transfer app to work properly. See https://support.google.com/a/answer/6364687 for additional information. example_value: is_enabled: true start_date: diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/GenerativeAI/AutofillPredictionSettings.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/GenerativeAI/AutofillPredictionSettings.yaml index 819bdfdf5..861854fcf 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/GenerativeAI/AutofillPredictionSettings.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/GenerativeAI/AutofillPredictionSettings.yaml @@ -1,13 +1,17 @@ caption: Settings for Autofill Prediction Settings desc: |- - Enables Autofill Prediction Settings. + Enables Autofill Prediction Settings. - 0 = Enable the feature for users, and send relevant data to Google to help train or improve AI models. Relevant data may include prompts, inputs, outputs, and source materials, depending on the feature. It may be reviewed by humans for the sole purpose of improving AI models. 0 is the default value, except when noted below. + 0 = Allow the feature to be used, while allowing Google to use relevant data to improve its AI models. Relevant data may include prompts, inputs, outputs, source materials, and written feedback, depending on the feature. It may also be reviewed by humans to improve AI models. 0 is the default value, except when noted below. - 1 = Enable the feature for users, but do not send data to Google to train or improve AI models. 1 is the default value for Enterprise users managed by Google Admin console and for Education accounts managed by Google Workspace. + 1 = Allow the feature to be used, but does not allow Google to improve models using users' content (including prompts, inputs, outputs, source materials, and written feedback). 1 is the default value for Enterprise users managed by Google Admin console and for Education accounts managed by Google Workspace. - 2 = Disable the feature. + 2 = Do not allow the feature. + + If the policy is unset, its behavior is determined by the GenAiDefaultSettings policy. + + For more information on data handling for generative AI features, please see https://support.google.com/chrome/a?p=generative_ai_settings. default: 0 example_value: 2 @@ -25,7 +29,7 @@ items: name: Disabled value: 2 owners: -- file://components/autofill_prediction_improvements/OWNERS +- file://components/autofill_ai/OWNERS - file://components/optimization_guide/OWNERS schema: enum: diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/GenerativeAI/CreateThemesSettings.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/GenerativeAI/CreateThemesSettings.yaml index c51a0e1ff..4fe631a7d 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/GenerativeAI/CreateThemesSettings.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/GenerativeAI/CreateThemesSettings.yaml @@ -3,11 +3,13 @@ caption: Settings for Create Themes with AI desc: |- Create Themes with AI lets users create custom themes/wallpapers by preselecting from a list of options. - 0 = Enable the feature for users, and send relevant data to Google to help train or improve AI models. Relevant data may include prompts, inputs, outputs, and source materials, depending on the feature. It may be reviewed by humans for the sole purpose of improving AI models. 0 is the default value, except when noted below. + 0 = Allow the feature to be used, while allowing Google to use relevant data to improve its AI models. Relevant data may include prompts, inputs, outputs, source materials, and written feedback, depending on the feature. It may also be reviewed by humans to improve AI models. 0 is the default value, except when noted below. - 1 = Enable the feature for users, but do not send data to Google to train or improve AI models. 1 is the default value for Enterprise users managed by Google Admin console and for Education accounts managed by Google Workspace. + 1 = Allow the feature to be used, but does not allow Google to improve models using users' content (including prompts, inputs, outputs, source materials, and written feedback). 1 is the default value for Enterprise users managed by Google Admin console and for Education accounts managed by Google Workspace. - 2 = Disable the feature. + 2 = Do not allow the feature. + + If the policy is unset, its behavior is determined by the GenAiDefaultSettings policy. For more information on data handling for generative AI features, please see https://support.google.com/chrome/a?p=generative_ai_settings. default: 0 diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/GenerativeAI/DevToolsGenAiSettings.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/GenerativeAI/DevToolsGenAiSettings.yaml index c63e1fc6e..d7acda05c 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/GenerativeAI/DevToolsGenAiSettings.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/GenerativeAI/DevToolsGenAiSettings.yaml @@ -3,17 +3,21 @@ caption: Settings for DevTools Generative AI Features desc: |- These features in $1Google Chrome's DevTools employ generative AI models to provide additional debugging information. To use these features, $1Google Chrome has to collect data such as error messages, stack traces, code snippets, and network requests and send them to a server owned by Google, which runs a generative AI model. Response body or authentication and cookie headers in network requests are not included in the data sent to the server. - 0 = Enable the feature for users, and send relevant data to Google to help train or improve AI models. Relevant data may include prompts, inputs, outputs, and source materials, depending on the feature. It may be reviewed by humans for the sole purpose of improving AI models. 0 is the default value, except when noted below. + 0 = Allow the feature to be used, while allowing Google to use relevant data to improve its AI models. Relevant data may include prompts, inputs, outputs, source materials, and written feedback, depending on the feature. It may also be reviewed by humans to improve AI models. 0 is the default value, except when noted below. - 1 = Enable the feature for users, but do not send data to Google to train or improve AI models. 1 is the default value for Enterprise users managed by Google Admin console and for Education accounts managed by Google Workspace. + 1 = Allow the feature to be used, but does not allow Google to improve models using users' content (including prompts, inputs, outputs, source materials, and written feedback). 1 is the default value for Enterprise users managed by Google Admin console and for Education accounts managed by Google Workspace. - 2 = Disable the feature. + 2 = Do not allow the feature. + + If the policy is unset, its behavior is determined by the GenAiDefaultSettings policy. DevTools Generative AI features include: - Console Insights: explains console messages and offers suggestions on how to fix console errors. - AI assistance: get help with understanding CSS styles (since version 131), network requests, performance, and files (all since version 132). + + For more information on data handling for generative AI features, please see https://support.google.com/chrome/a?p=generative_ai_settings. default: 0 example_value: 2 features: diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/GenerativeAI/GenAIPhotoEditingSettings.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/GenerativeAI/GenAIPhotoEditingSettings.yaml index 7f7fcd046..4bd494d16 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/GenerativeAI/GenAIPhotoEditingSettings.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/GenerativeAI/GenAIPhotoEditingSettings.yaml @@ -2,11 +2,15 @@ caption: Settings for Generative AI Photo Editing feature desc: |- This policy controls the settings of the Generative AI Photo Editing feature for $1Google ChromeOS. - 0 = Enable the feature for users, and send relevant data to Google to help train or improve AI models. Relevant data may include prompts, inputs, outputs, and source materials, depending on the feature. It may be reviewed by humans for the sole purpose of improving AI models. 0 is the default value, except when noted below. + 0 = Allow the feature to be used, while allowing Google to use relevant data to improve its AI models. Relevant data may include prompts, inputs, outputs, source materials, and written feedback, depending on the feature. It may also be reviewed by humans to improve AI models. 0 is the default value, except when noted below. - 1 = Enable the feature for users, but do not send data to Google to train or improve AI models. 1 is the default value for Enterprise users managed by Google Admin console and for Education accounts managed by Google Workspace. + 1 = Allow the feature to be used, but does not allow Google to improve models using users' content (including prompts, inputs, outputs, source materials, and written feedback). 1 is the default value for Enterprise users managed by Google Admin console and for Education accounts managed by Google Workspace. - 2 = Disable the feature. + 2 = Do not allow the feature. + + If the policy is unset, its behavior is determined by the GenAiDefaultSettings policy. + + For more information on data handling for generative AI features, please see https://support.google.com/chrome/a?p=generative_ai_settings. default: 0 example_value: 2 diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/GenerativeAI/GenAIVcBackgroundSettings.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/GenerativeAI/GenAIVcBackgroundSettings.yaml index 03916ce72..1983435a5 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/GenerativeAI/GenAIVcBackgroundSettings.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/GenerativeAI/GenAIVcBackgroundSettings.yaml @@ -2,11 +2,13 @@ caption: Settings for Generative AI VC Background feature desc: |- Generative AI VC Background allows users to self-express using generative AI features to create personalized video conferencing backgrounds in $1Google ChromeOS. - 0 = Enable the feature for users, and send relevant data to Google to help train or improve AI models. Relevant data may include prompts, inputs, outputs, and source materials, depending on the feature. It may be reviewed by humans for the sole purpose of improving AI models. 0 is the default value, except when noted below. + 0 = Allow the feature to be used, while allowing Google to use relevant data to improve its AI models. Relevant data may include prompts, inputs, outputs, source materials, and written feedback, depending on the feature. It may also be reviewed by humans to improve AI models. 0 is the default value, except when noted below. - 1 = Enable the feature for users, but do not send data to Google to train or improve AI models. 1 is the default value for Enterprise users managed by Google Admin console and for Education accounts managed by Google Workspace. + 1 = Allow the feature to be used, but does not allow Google to improve models using users' content (including prompts, inputs, outputs, source materials, and written feedback). 1 is the default value for Enterprise users managed by Google Admin console and for Education accounts managed by Google Workspace. - 2 = Disable the feature. + 2 = Do not allow the feature. + + If the policy is unset, its behavior is determined by the GenAiDefaultSettings policy. For more information on data handling for generative AI features, please see https://support.google.com/chrome/a?p=generative_ai_settings. default: 0 diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/GenerativeAI/GenAIWallpaperSettings.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/GenerativeAI/GenAIWallpaperSettings.yaml index d2ce32500..73063a1c0 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/GenerativeAI/GenAIWallpaperSettings.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/GenerativeAI/GenAIWallpaperSettings.yaml @@ -2,11 +2,13 @@ caption: Settings for Generative AI Wallpaper feature desc: |- Generative AI Wallpaper allows users to self-express using generative AI features to create personalized wallpapers in $1Google ChromeOS. - 0 = Enable the feature for users, and send relevant data to Google to help train or improve AI models. Relevant data may include prompts, inputs, outputs, and source materials, depending on the feature. It may be reviewed by humans for the sole purpose of improving AI models. 0 is the default value, except when noted below. + 0 = Allow the feature to be used, while allowing Google to use relevant data to improve its AI models. Relevant data may include prompts, inputs, outputs, source materials, and written feedback, depending on the feature. It may also be reviewed by humans to improve AI models. 0 is the default value, except when noted below. - 1 = Enable the feature for users, but do not send data to Google to train or improve AI models. 1 is the default value for Enterprise users managed by Google Admin console and for Education accounts managed by Google Workspace. + 1 = Allow the feature to be used, but does not allow Google to improve models using users' content (including prompts, inputs, outputs, source materials, and written feedback). 1 is the default value for Enterprise users managed by Google Admin console and for Education accounts managed by Google Workspace. - 2 = Disable the feature. + 2 = Do not allow the feature. + + If the policy is unset, its behavior is determined by the GenAiDefaultSettings policy. For more information on data handling for generative AI features, please see https://support.google.com/chrome/a?p=generative_ai_settings. default: 0 diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/GenerativeAI/GenAiDefaultSettings.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/GenerativeAI/GenAiDefaultSettings.yaml index b2e72b63b..d5435fea6 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/GenerativeAI/GenAiDefaultSettings.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/GenerativeAI/GenAiDefaultSettings.yaml @@ -3,15 +3,15 @@ caption: Set the default policy value for $1Google C desc: |- This policy defines the default setting for all covered generative AI features. For example, if this policy is set to value 1, then 1 will be the default setting for all covered generative AI features. It will not impact any manually set policy values. See https://support.google.com/chrome/a?p=generative_ai_settings for the list of covered features. - 0 = Allows the feature to be used, while allowing Google to use relevant data to improve its AI models. Relevant data may include prompts, inputs, outputs, source materials, and written feedback, depending on the feature. It may also be reviewed by humans to improve AI models. 0 is the default value, except when noted below. + 0 = Allow the feature to be used, while allowing Google to use relevant data to improve its AI models. Relevant data may include prompts, inputs, outputs, source materials, and written feedback, depending on the feature. It may also be reviewed by humans to improve AI models. 0 is the default value, except when noted below. - 1 = Allows the feature to be used, but does not allow Google to improve models using users' content (including prompts, inputs, outputs, source materials, and written feedback). 1 is the default value for Enterprise users managed by Google Admin console and for Education accounts managed by Google Workspace. + 1 = Allow the feature to be used, but does not allow Google to improve models using users' content (including prompts, inputs, outputs, source materials, and written feedback). 1 is the default value for Enterprise users managed by Google Admin console and for Education accounts managed by Google Workspace. - 2 = Disable the feature. + 2 = Do not allow the feature. If a covered feature does not have an equivalent policy value, the closest higher value will be used. Please review documentation for that feature for more details about how it interacts with values in this policy. - For more information on data handling for generative AI features, please see https://support.google.com/chrome/a?p=generative_ai_settings + For more information on data handling for generative AI features, please see https://support.google.com/chrome/a?p=generative_ai_settings. default: 0 default_for_enterprise_users: 1 diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/GenerativeAI/GenAiLensOverlaySettings.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/GenerativeAI/GenAiLensOverlaySettings.yaml index 017c24df1..c9c2c8044 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/GenerativeAI/GenAiLensOverlaySettings.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/GenerativeAI/GenAiLensOverlaySettings.yaml @@ -5,11 +5,15 @@ desc: |- There is no user setting to control this feature, it is generally made available to all users with Google as their default search engine unless disabled by this policy. - 0 = Enable the feature for users, and send relevant data to Google to help train or improve AI models. Relevant data may include prompts, inputs, outputs, and source materials, depending on the feature. It may be reviewed by humans for the sole purpose of improving AI models. 0 is the default value, except when noted below. + 0 = Allow the feature to be used, while allowing Google to use relevant data to improve its AI models. Relevant data may include prompts, inputs, outputs, source materials, and written feedback, depending on the feature. It may also be reviewed by humans to improve AI models. 0 is the default value, except when noted below. - 1 = Enable the feature for users, but do not send data to Google to train or improve AI models. 1 is the default value for Enterprise users managed by Google Admin console and for Education accounts managed by Google Workspace. + 1 = Allow the feature to be used, but does not allow Google to improve models using users' content (including prompts, inputs, outputs, source materials, and written feedback). 1 is the default value for Enterprise users managed by Google Admin console and for Education accounts managed by Google Workspace. - 2 = Disable the feature. + 2 = Do not allow the feature. + + If the policy is unset, its behavior is determined by the GenAiDefaultSettings policy. + + For more information on data handling for generative AI features, please see https://support.google.com/chrome/a?p=generative_ai_settings. default: 0 example_value: 2 diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/GenerativeAI/HelpMeReadSettings.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/GenerativeAI/HelpMeReadSettings.yaml index 3726a0bae..785d6e1dd 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/GenerativeAI/HelpMeReadSettings.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/GenerativeAI/HelpMeReadSettings.yaml @@ -2,11 +2,15 @@ caption: Settings for Help Me Read feature desc: |- This policy controls the settings of the Help Me Read feature for $1Google ChromeOS. - 0 = Enable the feature for users, and send relevant data to Google to help train or improve AI models. Relevant data may include prompts, inputs, outputs, and source materials, depending on the feature. It may be reviewed by humans for the sole purpose of improving AI models. 0 is the default value, except when noted below. + 0 = Allow the feature to be used, while allowing Google to use relevant data to improve its AI models. Relevant data may include prompts, inputs, outputs, source materials, and written feedback, depending on the feature. It may also be reviewed by humans to improve AI models. 0 is the default value, except when noted below. - 1 = Enable the feature for users, but do not send data to Google to train or improve AI models. 1 is the default value for Enterprise users managed by Google Admin console and for Education accounts managed by Google Workspace. + 1 = Allow the feature to be used, but does not allow Google to improve models using users' content (including prompts, inputs, outputs, source materials, and written feedback). 1 is the default value for Enterprise users managed by Google Admin console and for Education accounts managed by Google Workspace. - 2 = Disable the feature. + 2 = Do not allow the feature. + + If the policy is unset, its behavior is determined by the GenAiDefaultSettings policy. + + For more information on data handling for generative AI features, please see https://support.google.com/chrome/a?p=generative_ai_settings. default: 0 example_value: 2 diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/GenerativeAI/HelpMeWriteSettings.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/GenerativeAI/HelpMeWriteSettings.yaml index b206dc80e..dcaf67ba6 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/GenerativeAI/HelpMeWriteSettings.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/GenerativeAI/HelpMeWriteSettings.yaml @@ -3,11 +3,13 @@ caption: Settings for Help Me Write desc: |- Help Me Write is an AI-based writing assistant for short-form content on the web. Suggested content is based on prompts entered by the user and the content of the web page. - 0 = Enable the feature for users, and send relevant data to Google to help train or improve AI models. Relevant data may include prompts, inputs, outputs, and source materials, depending on the feature. It may be reviewed by humans for the sole purpose of improving AI models. 0 is the default value, except when noted below. + 0 = Allow the feature to be used, while allowing Google to use relevant data to improve its AI models. Relevant data may include prompts, inputs, outputs, source materials, and written feedback, depending on the feature. It may also be reviewed by humans to improve AI models. 0 is the default value, except when noted below. - 1 = Enable the feature for users, but do not send data to Google to train or improve AI models. 1 is the default value for Enterprise users managed by Google Admin console and for Education accounts managed by Google Workspace. + 1 = Allow the feature to be used, but does not allow Google to improve models using users' content (including prompts, inputs, outputs, source materials, and written feedback). 1 is the default value for Enterprise users managed by Google Admin console and for Education accounts managed by Google Workspace. - 2 = Disable the feature. + 2 = Do not allow the feature. + + If the policy is unset, its behavior is determined by the GenAiDefaultSettings policy. For more information on data handling for generative AI features, please see https://support.google.com/chrome/a?p=generative_ai_settings. default: 0 diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/GenerativeAI/HistorySearchSettings.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/GenerativeAI/HistorySearchSettings.yaml index 4941019b0..1e0907dd1 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/GenerativeAI/HistorySearchSettings.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/GenerativeAI/HistorySearchSettings.yaml @@ -3,13 +3,13 @@ caption: Settings for AI-powered History Search desc: |- AI History Search is a feature that allows users to search their browsing history and receive generated answers based on page contents and not just the page title and URL. - 0 = Enable the feature for users, and send relevant data to Google to help train or improve AI models. Relevant data may include prompts, inputs, outputs, and source materials, depending on the feature. It may be reviewed by humans for the sole purpose of improving AI models. 0 is the default value, except when noted below. + 0 = Allow the feature to be used, while allowing Google to use relevant data to improve its AI models. Relevant data may include prompts, inputs, outputs, source materials, and written feedback, depending on the feature. It may also be reviewed by humans to improve AI models. 0 is the default value, except when noted below. - 1 = Enable the feature for users, but do not send data to Google to train or improve AI models. 1 is the default value for Enterprise users managed by Google Admin console and for Education accounts managed by Google Workspace. + 1 = Allow the feature to be used, but does not allow Google to improve models using users' content (including prompts, inputs, outputs, source materials, and written feedback). 1 is the default value for Enterprise users managed by Google Admin console and for Education accounts managed by Google Workspace. - 2 = Disable the feature. + 2 = Do not allow the feature. - If the policy is unset, the default behavior is 0 for regular consumer users and 2 for managed users on $2Google ChromeOS. + If the policy is unset, its behavior is determined by the GenAiDefaultSettings policy. For more information on data handling for generative AI features, please see https://support.google.com/chrome/a?p=generative_ai_settings. default: 0 diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/GenerativeAI/TabCompareSettings.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/GenerativeAI/TabCompareSettings.yaml index 67b665f6c..fb677c52c 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/GenerativeAI/TabCompareSettings.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/GenerativeAI/TabCompareSettings.yaml @@ -3,11 +3,15 @@ default: 0 desc: |- Tab Compare is an AI-powered tool for comparing information across a user's tabs. As an example, the feature can be offered to the user when multiple tabs with products in a similar category are open. - 0 = Enable the feature for users, and send relevant data to Google to help train or improve AI models. Relevant data may include prompts, inputs, outputs, and source materials, depending on the feature. It may be reviewed by humans for the sole purpose of improving AI models. 0 is the default value, except when noted below. + 0 = Allow the feature to be used, while allowing Google to use relevant data to improve its AI models. Relevant data may include prompts, inputs, outputs, source materials, and written feedback, depending on the feature. It may also be reviewed by humans to improve AI models. 0 is the default value, except when noted below. - 1 = Enable the feature for users, but do not send data to Google to train or improve AI models. 1 is the default value for Enterprise users managed by Google Admin console and for Education accounts managed by Google Workspace. + 1 = Allow the feature to be used, but does not allow Google to improve models using users' content (including prompts, inputs, outputs, source materials, and written feedback). 1 is the default value for Enterprise users managed by Google Admin console and for Education accounts managed by Google Workspace. - 2 = Disable the feature. + 2 = Do not allow the feature. + + If the policy is unset, its behavior is determined by the GenAiDefaultSettings policy. + + For more information on data handling for generative AI features, please see https://support.google.com/chrome/a?p=generative_ai_settings. example_value: 2 features: diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/GenerativeAI/TabOrganizerSettings.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/GenerativeAI/TabOrganizerSettings.yaml index a576cc7ef..7c6f18281 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/GenerativeAI/TabOrganizerSettings.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/GenerativeAI/TabOrganizerSettings.yaml @@ -3,11 +3,13 @@ caption: Settings for Tab Organizer desc: |- Tab Organizer is an AI-based tool that automatically creates tab groups based on a user's open tabs. Suggestions are based on open tabs (but not page content). - 0 = Enable the feature for users, and send relevant data to Google to help train or improve AI models. Relevant data may include prompts, inputs, outputs, and source materials, depending on the feature. It may be reviewed by humans for the sole purpose of improving AI models. 0 is the default value, except when noted below. + 0 = Allow the feature to be used, while allowing Google to use relevant data to improve its AI models. Relevant data may include prompts, inputs, outputs, source materials, and written feedback, depending on the feature. It may also be reviewed by humans to improve AI models. 0 is the default value, except when noted below. - 1 = Enable the feature for users, but do not send data to Google to train or improve AI models. 1 is the default value for Enterprise users managed by Google Admin console and for Education accounts managed by Google Workspace. + 1 = Allow the feature to be used, but does not allow Google to improve models using users' content (including prompts, inputs, outputs, source materials, and written feedback). 1 is the default value for Enterprise users managed by Google Admin console and for Education accounts managed by Google Workspace. - 2 = Disable the feature. + 2 = Do not allow the feature. + + If the policy is unset, its behavior is determined by the GenAiDefaultSettings policy. For more information on data handling for generative AI features, please see https://support.google.com/chrome/a?p=generative_ai_settings. default: 0 diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/ExternalStorageAllowlist.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/ExternalStorageAllowlist.yaml new file mode 100755 index 000000000..7d66e0fd5 --- /dev/null +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/ExternalStorageAllowlist.yaml @@ -0,0 +1,24 @@ +caption: External Storage Allowlist +desc: |- + This policy specifies a list of USB storage devices that are exempt from the ExternalStorageDisabled and ExternalStorageReadOnly policies. + + Entries are pairs of USB Vendor Identifier and Product Identifier that identify the specific USB device model. + +example_value: +- product_id: 24577 + vendor_id: 1027 +- product_id: 8453 + vendor_id: 16700 +features: + dynamic_refresh: true + per_profile: true +owners: +- isandrk@chromium.org +schema: + items: + $ref: UsbDeviceId + type: array +future_on: +- chrome_os +tags: [] +type: dict diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/GlicSettings.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/GlicSettings.yaml new file mode 100755 index 000000000..40b25302d --- /dev/null +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/GlicSettings.yaml @@ -0,0 +1,32 @@ +caption: Control Glic access +desc: |- + If this policy is Enabled or not set, users are able to use the + Glic feature. Setting this policy to Disabled prevents + users from interacting with Glic; the button in the tab + strip is hidden and Glic is unavailable via keyboard + shortcut unless enabled in another profile. +owners: +- bokan@chromium.org +- file://chrome/browser/glic/OWNERS +example_value: 0 +future_on: +- chrome.* +features: + dynamic_refresh: true + per_profile: true +type: int-enum +schema: + type: integer + enum: + - 0 + - 1 +items: +- caption: Enable use of Glic + name: Enabled + value: 0 +- caption: Disable use of Glic. + name: Disabled + value: 1 +default: 0 +tags: +- google-sharing diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/GoogleLocationServicesEnabled.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/GoogleLocationServicesEnabled.yaml index f026cf263..ae845cf25 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/GoogleLocationServicesEnabled.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/GoogleLocationServicesEnabled.yaml @@ -11,6 +11,7 @@ supported_on: - chrome_os:124- features: dynamic_refresh: true + internal_only: true per_profile: false schema: type: integer diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/IsolatedWebAppInstallForceList.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/IsolatedWebAppInstallForceList.yaml index 067a03ed1..632f1baf4 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/IsolatedWebAppInstallForceList.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/IsolatedWebAppInstallForceList.yaml @@ -9,7 +9,9 @@ desc: |- Each item can also include these optional fields: * update_channel: The IWA release/update channel name. If not set, "default" is used. + * pinned_version: A specific version to install. The system will attempt to install this version if available on the specified update channel. By default, pinning an IWA to a specific version prevents it from being updated beyond that version. To unpin, remove this field. + * allow_downgrades:: Enables installing older versions of the IWA. This requires the `pinned_version` field to be set. If not provided or set to false downgrading is disabled for that IWA. example_value: - update_manifest_url: https://example.com/isolated_web_app/update_manifest.json @@ -22,6 +24,8 @@ features: per_profile: true supported_on: - chrome_os:128- +future_on: +- chrome.* owners: - file://chrome/browser/web_applications/isolated_web_apps/OWNERS - iwa-team@google.com diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/NTPOutlookCardVisible.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/NTPOutlookCardVisible.yaml index 4c5e59a3b..068fa6d9e 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/NTPOutlookCardVisible.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/NTPOutlookCardVisible.yaml @@ -1,8 +1,12 @@ -caption: Show Outlook Calendar card on the New Tab Page +caption: Show Outlook Calendar card on the New Tab Page (Beta) default: false desc: |- # TODO(crbug.com/376287682): insert HC article link + This is a beta feature. + This policy controls the visibility of the Outlook Card on the New Tab Page. The card will only be displayed on the New Tab Page if the policy is enabled and your organization authorized the usage of the Outlook Calendar data in the browser. + Outlook data will not be stored by the browser. + The Outlook card shows the next calendar event, along with a glanceable look at the rest of the day's meetings. It aims to address the issue of context switching and enhance productivity by giving users a shortcut to their next meeting. The Microsoft Outlook card will require additional admin configuration. For detailed information on connecting the Chrome New Tab Page Card to Outlook, please see help article. @@ -12,9 +16,6 @@ example_value: false features: dynamic_refresh: true per_profile: true -future_on: -- chrome.* -- chrome_os items: - caption: Enable NTP Outlook Calendar Card value: true @@ -27,5 +28,8 @@ owners: - ftirelo@chromium.org schema: type: boolean +supported_on: +- chrome.*:134- +- chrome_os:134- tags: [] type: main diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/NTPSharepointCardVisible.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/NTPSharepointCardVisible.yaml index cf303a270..127878667 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/NTPSharepointCardVisible.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/NTPSharepointCardVisible.yaml @@ -1,24 +1,25 @@ -caption: Show Sharepoint File Card on the New Tab Page +caption: Show SharePoint and OneDrive File Card on the New Tab Page (Beta) default: false desc: |- # TODO(crbug.com/376287682): insert HC article link - This policy controls the visibility of the Sharepoint File Card on the New Tab Page. The card will only be displayed on the New Tab Page if the policy is enabled and your organization authorized the usage of the Sharepoint File data in the browser. + This is a beta feature. - The Sharepoint Files recommendation card shows a list of recommended files. It aims to address the issue of context switching and enhance productivity by giving users a shortcut to their most important documents. + This policy controls the visibility of the SharePoint and OneDrive File Card on the New Tab Page. The card will only be displayed on the New Tab Page if the policy is enabled and your organization authorized the usage of the SharePoint and OneDrive File data in the browser. - The Microsoft Sharepoint card will require additional admin configuration. For detailed information on connecting the Chrome New Tab Page Card to Sharepoint, please see help article. + SharePoint and OneDrive data will not be stored by the browser. - If the NTPCardsVisible is disabled, the Sharepoint Card will not be shown. If NTPCardsVisible is enabled, the Sharepoint card will be shown if this policy is also enabled and there is data to be shown. If NTPCardsVisible is unset, the Sharepoint card will be shown if this policy is also enabled, the user has the card enabled in Customize Chrome, and there is data to be shown. + The SharePoint and OneDrive Files recommendation card shows a list of recommended files. It aims to address the issue of context switching and enhance productivity by giving users a shortcut to their most important documents. + + The Microsoft SharePoint and OneDrive card will require additional admin configuration. For detailed information on connecting the Chrome New Tab Page Card to Sharepoint, please see help article. + + If the NTPCardsVisible is disabled, the SharePoint and OneDrive Card will not be shown. If NTPCardsVisible is enabled, the SharePoint and OneDrive card will be shown if this policy is also enabled and there is data to be shown. If NTPCardsVisible is unset, the SharePoint and OneDrive card will be shown if this policy is also enabled, the user has the card enabled in Customize Chrome, and there is data to be shown. example_value: false features: dynamic_refresh: true per_profile: true -future_on: -- chrome.* -- chrome_os items: -- caption: Enable NTP Sharepoint File Card +- caption: Enable NTP SharePoint and OneDrive File Card value: true -- caption: Disable NTP Sharepoint File Card +- caption: Disable NTP SharePoint and OneDrive File Card value: false owners: - rtatum@google.com @@ -27,5 +28,8 @@ owners: - ftirelo@chromium.org schema: type: boolean +supported_on: +- chrome.*:134- +- chrome_os:134- tags: [] type: main diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/OverrideSecurityRestrictionsOnInsecureOrigin.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/OverrideSecurityRestrictionsOnInsecureOrigin.yaml index 61763e6b7..25418650f 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/OverrideSecurityRestrictionsOnInsecureOrigin.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/OverrideSecurityRestrictionsOnInsecureOrigin.yaml @@ -1,6 +1,6 @@ caption: Origins or hostname patterns for which restrictions on insecure origins should not apply desc: |- - Setting the policy specifies a list of origins (URLs) or hostname patterns (such as *.example.com) for which security restrictions on insecure origins won't apply. Organizations can specify origins for legacy applications that can't deploy TLS or set up a staging server for internal web development, so developers can test out features requiring secure contexts without having to deploy TLS on the staging server. This policy also prevents the origin from being labeled "Not Secure" in the address bar. + Setting the policy specifies a list of origins (URLs) or hostname patterns (such as *.example.com) for which security restrictions on insecure origins won't apply. Patterns are only accepted for hostnames; URLs/origins with schemes must be exact strings. Organizations can specify origins for legacy applications that can't deploy TLS or set up a staging server for internal web development, so developers can test out features requiring secure contexts without having to deploy TLS on the staging server. This policy also prevents the origin from being labeled "Not Secure" in the address bar. Setting a list of URLs in this policy amounts to setting the command-line flag --unsafely-treat-insecure-origin-as-secure to a comma-separated list of the same URLs. The policy overrides the command-line flag and UnsafelyTreatInsecureOriginAsSecure, if present. diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/ProvisionManagedClientCertificateForBrowser.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/ProvisionManagedClientCertificateForBrowser.yaml new file mode 100755 index 000000000..b376f1944 --- /dev/null +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/ProvisionManagedClientCertificateForBrowser.yaml @@ -0,0 +1,32 @@ +owners: +- hmare@google.com +- cbe-device-trust-eng@google.com +- file://components/enterprise/client_certificates/OWNERS +caption: Enables the provisioning of client certificates for managed browsers +desc: |- + Setting this policy to Enabled (value 1) will make the $1Google Chrome request a client certificate from the device management server for a managed browser session. This certificate will be made available for, e.g., mTLS connections. + + Setting this policy to Disabled (value 0), or leaving unset will prevent $1Google Chrome from requesting the client certificate. If a browser's managed client certificate had already been provisioned, due to this policy being enabled before, it will not be deleted, but it won't be available for mTLS connections and won't be renewed when it expires. + +future_on: +- chrome.* +features: + dynamic_refresh: true + per_profile: false + cloud_only: true +type: int-enum +schema: + type: integer + enum: + - 0 + - 1 +items: +- caption: Disable client certificate provisioning for browsers + name: Disabled + value: 0 +- caption: Enable client certificate provisioning for browsers + name: Enabled + value: 1 +default: 0 +example_value: 0 +tags: [] diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/ServiceWorkerToControlSrcdocIframeEnabled.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/ServiceWorkerToControlSrcdocIframeEnabled.yaml new file mode 100755 index 000000000..de0402797 --- /dev/null +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/ServiceWorkerToControlSrcdocIframeEnabled.yaml @@ -0,0 +1,35 @@ +caption: Allow ServiceWorker to control srcdoc iframes +desc: |- + https://github.com/w3c/ServiceWorker/issues/765 asks srcdoc iframe with + the "allow-same-origin" sandbox attribute to be under ServiceWorker control. + + Setting the policy to Enabled or leaving it unset means + $1Google Chrome makes srcdoc iframes + with "allow-same-origin" sandbox attributes to be under ServiceWorker control. + + Setting the policy to Disabled leaves the srcdoc iframe not controlled by + ServiceWorker. + + This policy is intended to be temporary and will be removed in 2026. +default: true +example_value: true +features: + dynamic_refresh: false + per_profile: true +items: +- caption: ServiceWorker can control srcdoc iframes + value: true +- caption: ServiceWorker won't control srcdoc iframes + value: false +owners: +- yyanagisawa@chromium.org +- file://content/browser/worker_host/OWNERS +schema: + type: boolean +supported_on: +- android:134- +- chrome.*:134- +- chrome_os:134- +- fuchsia:134- +tags: [] +type: main diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/WebAuthenticationRemoteDesktopAllowedOrigins.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/WebAuthenticationRemoteDesktopAllowedOrigins.yaml new file mode 100755 index 000000000..57dad911e --- /dev/null +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/WebAuthenticationRemoteDesktopAllowedOrigins.yaml @@ -0,0 +1,32 @@ +caption: Allowed Origins for Proxied WebAuthn Requests from Remote Desktop Applications. +desc: |- + A list of origins of remote desktop client apps that may execute WebAuthn API + requests that originate from a browsing session on a remote host. + + Any origin configured in this policy can make WebAuthn requests for Relying + Party IDs (RP IDs) that it would normally not allowed to be able to claim. + + Only valid HTTPS origins are allowed. Wildcards are not supported. + Any invalid entries are ignored. + +features: + dynamic_refresh: true + per_profile: true + platform_only: true +future_on: +- chrome.* +- chrome_os +example_value: +- https://remotedesktop.google.com +- https://vdi.corp.example +- https://server:8080/ +owners: +- natiahlyi@google.com +- file://device/fido/OWNERS +schema: + items: + type: string + type: array +tags: +- full-admin-access +type: list diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/PasswordManager/PasswordManagerPasskeysEnabled.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/PasswordManager/PasswordManagerPasskeysEnabled.yaml index 6059130db..3653c0081 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/PasswordManager/PasswordManagerPasskeysEnabled.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/PasswordManager/PasswordManagerPasskeysEnabled.yaml @@ -26,5 +26,6 @@ schema: supported_on: - chrome.*:132- - chrome_os:132- +- ios:134- tags: [] type: main diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/PowerManagement/DevicePowerBatteryChargingOptimization.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/PowerManagement/DevicePowerBatteryChargingOptimization.yaml index f6f19af96..6cd039f60 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/PowerManagement/DevicePowerBatteryChargingOptimization.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/PowerManagement/DevicePowerBatteryChargingOptimization.yaml @@ -37,7 +37,7 @@ schema: - 2 - 3 type: integer -future_on: -- chrome_os +supported_on: +- chrome_os:134- tags: [] type: int-enum diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Signin/ProfileSeparationDataMigrationSettings.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Signin/ProfileSeparationDataMigrationSettings.yaml index b86bd49ff..4ac2b2e58 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Signin/ProfileSeparationDataMigrationSettings.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Signin/ProfileSeparationDataMigrationSettings.yaml @@ -19,6 +19,7 @@ desc: |- supported_on: - chrome.*:119- +- ios:134- features: cloud_only: true diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/SkyVault/.group.details.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/SkyVault/.group.details.yaml index 5f0152f58..efdd19f45 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/SkyVault/.group.details.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/SkyVault/.group.details.yaml @@ -1,3 +1,3 @@ -caption: Turn SkyVault on or off +caption: Local user data storage desc: |- Configure policies to control whether user data is allowed on the device, and whether existing data should be uploaded to the cloud. \ No newline at end of file diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/SkyVault/policy_atomic_groups.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/SkyVault/policy_atomic_groups.yaml index e15a3b581..ad36cad8a 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/SkyVault/policy_atomic_groups.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/SkyVault/policy_atomic_groups.yaml @@ -1,5 +1,5 @@ SkyVaultSettings: - caption: SkyVault (all data in cloud) settings + caption: Local user data storage settings policies: - LocalUserFilesAllowed - LocalUserFilesMigrationDestination \ No newline at end of file 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 5a683026a..94917dc41 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 @@ -6,6 +6,7 @@ #include +#include #include #include #include @@ -16,6 +17,7 @@ #include #include +#include "base/auto_reset.h" #include "base/base_switches.h" #include "base/check_op.h" #include "base/command_line.h" @@ -38,7 +40,6 @@ #include "base/no_destructor.h" #include "base/observer_list.h" #include "base/process/process.h" -#include "base/ranges/algorithm.h" #include "base/strings/string_split.h" #include "base/strings/string_util.h" #include "base/strings/stringprintf.h" @@ -49,11 +50,12 @@ #include "base/trace_event/optional_trace_event.h" #include "base/trace_event/trace_event.h" #include "build/build_config.h" -#include "cc/input/browser_controls_offset_tags_info.h" +#include "cc/input/browser_controls_offset_tag_modifications.h" #include "components/attribution_reporting/features.h" #include "components/download/public/common/download_stats.h" #include "components/input/cursor_manager.h" #include "components/input/render_widget_host_input_event_router.h" +#include "components/input/switches.h" #include "components/input/utils.h" #include "components/url_formatter/url_formatter.h" #include "components/viz/common/features.h" @@ -124,6 +126,7 @@ #include "content/browser/tpcd_heuristics/opener_heuristic_tab_helper.h" #include "content/browser/tpcd_heuristics/redirect_heuristic_tab_helper.h" #include "content/browser/wake_lock/wake_lock_context_host.h" +#include "content/browser/web_contents/accessibility_mode_policy.h" #include "content/browser/web_contents/java_script_dialog_commit_deferring_condition.h" #include "content/browser/web_contents/partitioned_popins_controller.h" #include "content/browser/web_contents/slow_web_preference_cache.h" @@ -189,6 +192,7 @@ #include "third_party/blink/public/common/switches.h" #include "third_party/blink/public/common/web_preferences/web_preferences.h" #include "third_party/blink/public/common/widget/constants.h" +#include "third_party/blink/public/mojom/frame/deferred_fetch_policy.mojom-shared.h" #include "third_party/blink/public/mojom/frame/frame.mojom.h" #include "third_party/blink/public/mojom/frame/fullscreen.mojom.h" #include "third_party/blink/public/mojom/image_downloader/image_downloader.mojom.h" @@ -1268,9 +1272,6 @@ WebContentsImpl::WebContentsImpl(BrowserContext* browser_context) zoom_scroll_remainder_(0), force_disable_overscroll_content_(false), last_dialog_suppressed_(false), - accessibility_mode_( - BrowserAccessibilityState::GetInstance() - ->GetAccessibilityModeForBrowserContext(browser_context)), audio_stream_monitor_(this), media_web_contents_observer_( std::make_unique(this)), @@ -1410,34 +1411,6 @@ WebContentsImpl::~WebContentsImpl() { // prerendering. Shutdown them by destructing PrerenderHostRegistry. prerender_host_registry_.reset(); - // For historical reasons, it is the requestor's responsibility to reset - // `PrefetchContainer`s that were created by the requestor (= `this`) but have - // not yet started prefetching (Otherwise, they will stay alive forever in - // `PrefetchService`). - // TODO(crbug.com/40946257): Refactor to handle this case better. - if (base::FeatureList::IsEnabled( - features::kPrefetchBrowserInitiatedTriggers)) { - PrefetchService* prefetch_service = - BrowserContextImpl::From(GetBrowserContext())->GetPrefetchService(); - if (prefetch_service) { - for (const auto& prefetch_container : prefetch_containers_) { - if (prefetch_container) { - switch (prefetch_container->GetLoadState()) { - case PrefetchContainer::LoadState::kNotStarted: - case PrefetchContainer::LoadState::kEligible: - case PrefetchContainer::LoadState::kFailedIneligible: - case PrefetchContainer::LoadState::kFailedHeldback: - prefetch_service->ResetPrefetch(prefetch_container); - break; - case PrefetchContainer::LoadState::kStarted: - break; - } - } - } - } - prefetch_containers_.clear(); - } - #if BUILDFLAG(ENABLE_PPAPI) // Call this before WebContentsDestroyed() is broadcasted since // AudioFocusManager will be destroyed after that. @@ -1501,7 +1474,7 @@ std::unique_ptr WebContentsImpl::CreateWithOpener( {opener_flags, {} /* container_policy */, {} /* required_document_policy */, - blink::FramePolicy::DeferredFetchPolicy::kDisabled}); + blink::mojom::DeferredFetchPolicy::kDisabled}); } new_root->SetInitialPopupURL(params.initial_popup_url); new_root->SetPopupCreatorOrigin(opener_rfh->GetLastCommittedOrigin()); @@ -2053,7 +2026,29 @@ ui::ColorProviderKey::ColorMode WebContentsImpl::GetColorMode() const { return source->GetColorMode(); } -void WebContentsImpl::SetAccessibilityMode(ui::AXMode mode) { +void WebContentsImpl::SetAccessibilityMode(ui::AXMode new_ax_mode) { + // Create the policy lazily so that the client is only enrolled into an arm + // of a trial if accessibility is enabled. + if (!accessibility_mode_policy_) { + // Exit early if the first call is a no-op, since creating the policy in + // this case would skew analysis of any trials. + if (new_ax_mode.is_mode_off()) { + return; + } + accessibility_mode_policy_ = AccessibilityModePolicy::Create(*this); + } + // Unretained is safe here because this owns the policy. + accessibility_mode_policy_->SetAccessibilityMode(base::BindRepeating( + [](WebContentsImpl* web_contents, ui::AXMode ax_mode, bool apply) { + if (web_contents) { + web_contents->SetAccessibilityModeImpl(apply ? ax_mode + : ui::AXMode{}); + } + }, + base::Unretained(this), new_ax_mode)); +} + +void WebContentsImpl::SetAccessibilityModeImpl(ui::AXMode mode) { OPTIONAL_TRACE_EVENT2("content", "WebContentsImpl::SetAccessibilityMode", "mode", mode.ToString(), "previous_mode", accessibility_mode_.ToString()); @@ -2226,8 +2221,13 @@ FindRequestManager* WebContentsImpl::GetFindRequestManagerForTesting() { } void WebContentsImpl::UpdateZoom() { + UpdateZoom(GetPrimaryMainFrame()->GetGlobalId()); +} + +void WebContentsImpl::UpdateZoom(const GlobalRenderFrameHostId& rfh_id) { OPTIONAL_TRACE_EVENT0("content", "WebContentsImpl::UpdateZoom"); - RenderWidgetHostImpl* rwh = GetRenderViewHost()->GetWidget(); + RenderFrameHostImpl* rfh = RenderFrameHostImpl::FromID(rfh_id); + RenderWidgetHostImpl* rwh = rfh->GetRenderWidgetHost(); if (rwh->GetView()) { rwh->SynchronizeVisualProperties(); } @@ -2235,9 +2235,15 @@ void WebContentsImpl::UpdateZoom() { void WebContentsImpl::UpdateZoomIfNecessary(const std::string& scheme, const std::string& host) { + UpdateZoomIfNecessary(scheme, host, GetPrimaryMainFrame()); +} + +void WebContentsImpl::UpdateZoomIfNecessary(const std::string& scheme, + const std::string& host, + RenderFrameHostImpl* rfh) { OPTIONAL_TRACE_EVENT2("content", "WebContentsImpl::UpdateZoomIfNecessary", "scheme", scheme, "host", host); - NavigationEntry* entry = GetController().GetLastCommittedEntry(); + NavigationEntry* entry = rfh->GetController().GetLastCommittedEntry(); if (!entry) { return; } @@ -2248,7 +2254,7 @@ void WebContentsImpl::UpdateZoomIfNecessary(const std::string& scheme, return; } - UpdateZoom(); + UpdateZoom(rfh->GetGlobalId()); } std::vector WebContentsImpl::GetWebContentsAndAllInner() { @@ -2455,8 +2461,8 @@ const std::u16string& WebContentsImpl::GetTitle() { return GetNavigationEntryForTitle()->GetTitleForDisplay(); } -const std::optional& WebContentsImpl::GetAppTitle() { - return GetNavigationEntryForTitle()->GetAppTitle(); +const std::optional& WebContentsImpl::GetApplicationTitle() { + return GetNavigationEntryForTitle()->GetApplicationTitle(); } SiteInstanceImpl* WebContentsImpl::GetSiteInstance() { @@ -2639,19 +2645,20 @@ bool WebContentsImpl::IsCurrentlyAudible() { return is_currently_audible_; } -bool WebContentsImpl::IsCapabilityActive(CapabilityType capability_type) { +bool WebContentsImpl::IsCapabilityActive( + WebContentsCapabilityType capability_type) { switch (capability_type) { - case CapabilityType::kBluetoothConnected: + case WebContentsCapabilityType::kBluetoothConnected: return bluetooth_connected_device_count_ > 0; - case CapabilityType::kBluetoothScanning: + case WebContentsCapabilityType::kBluetoothScanning: return bluetooth_scanning_sessions_count_ > 0; - case CapabilityType::kSerial: + case WebContentsCapabilityType::kSerial: return serial_active_frame_count_ > 0; - case CapabilityType::kHID: + case WebContentsCapabilityType::kHID: return hid_active_frame_count_ > 0; - case CapabilityType::kUSB: + case WebContentsCapabilityType::kUSB: return usb_active_frame_count_ > 0; - case CapabilityType::kGeolocation: + case WebContentsCapabilityType::kGeolocation: return geolocation_active_frame_count_ > 0; } } @@ -2833,10 +2840,10 @@ void WebContentsImpl::OnAudioStateChanged() { audio_stream_monitor_.IsCurrentlyAudible() || (browser_plugin_embedder_ && browser_plugin_embedder_->AreAnyGuestsCurrentlyAudible()) || - base::ranges::any_of(GetInnerWebContents(), - [](WebContents* inner_contents) { - return inner_contents->IsCurrentlyAudible(); - }); + std::ranges::any_of(GetInnerWebContents(), + [](WebContents* inner_contents) { + return inner_contents->IsCurrentlyAudible(); + }); OPTIONAL_TRACE_EVENT2("content", "WebContentsImpl::OnAudioStateChanged", "is_currently_audible", is_currently_audible, "was_audible", is_currently_audible_); @@ -3362,8 +3369,10 @@ void WebContentsImpl::DidChangeVisibleSecurityState() { &WebContentsObserver::DidChangeVisibleSecurityState); } -const blink::web_pref::WebPreferences WebContentsImpl::ComputeWebPreferences() { +const blink::web_pref::WebPreferences WebContentsImpl::ComputeWebPreferences( + RenderFrameHostImpl* main_frame) { OPTIONAL_TRACE_EVENT0("browser", "WebContentsImpl::ComputeWebPreferences"); + CHECK(main_frame->is_main_frame()); blink::web_pref::WebPreferences prefs; @@ -3540,13 +3549,14 @@ const blink::web_pref::WebPreferences WebContentsImpl::ComputeWebPreferences() { #endif // BUILDFLAG(IS_ANDROID) // GuestViews in the same StoragePartition need to find each other's frames. - prefs.renderer_wide_named_frame_lookup = IsGuest(); + prefs.renderer_wide_named_frame_lookup = + IsGuest() || main_frame->frame_tree()->is_guest(); if (command_line.HasSwitch(switches::kHideScrollbars)) { prefs.hide_scrollbars = true; } - - GetContentClient()->browser()->OverrideWebkitPrefs(this, &prefs); + GetContentClient()->browser()->OverrideWebPreferences( + this, *main_frame->GetSiteInstance(), &prefs); return prefs; } @@ -3560,15 +3570,26 @@ void WebContentsImpl::OnWebPreferencesChanged() { return; } updating_web_preferences_ = true; - SetWebPreferences(ComputeWebPreferences()); + SetWebPreferences(ComputeWebPreferences(GetPrimaryMainFrame())); #if BUILDFLAG(IS_ANDROID) - for (FrameTreeNode* node : primary_frame_tree_.Nodes()) { - RenderFrameHostImpl* rfh = node->current_frame_host(); - if (rfh->is_local_root()) { - if (auto* rwh = rfh->GetRenderWidgetHost()) { - rwh->SetForceEnableZoom(web_preferences_->force_enable_zoom); + const bool force_enable_zoom_changed = + (force_enable_zoom_ != web_preferences_->force_enable_zoom); + force_enable_zoom_ = web_preferences_->force_enable_zoom; + if (force_enable_zoom_changed) { + std::vector frame_sink_ids; + for (FrameTreeNode* node : primary_frame_tree_.Nodes()) { + RenderFrameHostImpl* rfh = node->current_frame_host(); + if (rfh->is_local_root()) { + if (auto* rwh = rfh->GetRenderWidgetHost()) { + rwh->SetForceEnableZoom(force_enable_zoom_); + frame_sink_ids.push_back(rwh->GetFrameSinkId()); + } } } + // Notify VizCompositor thread of force_enable_zoom state changes. + if (auto* remote = GetRenderInputRouterDelegateRemote()) { + remote->ForceEnableZoomStateChanged(force_enable_zoom_, frame_sink_ids); + } } #endif updating_web_preferences_ = false; @@ -3665,28 +3686,28 @@ void WebContentsImpl::OnSharedDictionaryAccessed( void WebContentsImpl::OnDeviceBoundSessionAccessed( NavigationHandle* navigation, - const net::device_bound_sessions::SessionKey& session) { + const net::device_bound_sessions::SessionAccess& access) { OPTIONAL_TRACE_EVENT1("content", "WebContentsImpl::OnDeviceBoundSessionAccessed", "navigation_handle", navigation); // Use a variable to select between overloads. void (WebContentsObserver::*func)( - NavigationHandle*, const net::device_bound_sessions::SessionKey&) = + NavigationHandle*, const net::device_bound_sessions::SessionAccess&) = &WebContentsObserver::OnDeviceBoundSessionAccessed; - observers_.NotifyObservers(func, navigation, session); + observers_.NotifyObservers(func, navigation, access); } void WebContentsImpl::OnDeviceBoundSessionAccessed( RenderFrameHostImpl* rfh, - const net::device_bound_sessions::SessionKey& session) { + const net::device_bound_sessions::SessionAccess& access) { OPTIONAL_TRACE_EVENT1("content", "WebContentsImpl::OnDeviceBoundSessionAccessed", "render_frame_host", rfh); // Use a variable to select between overloads. void (WebContentsObserver::*func)( - RenderFrameHost*, const net::device_bound_sessions::SessionKey&) = + RenderFrameHost*, const net::device_bound_sessions::SessionAccess&) = &WebContentsObserver::OnDeviceBoundSessionAccessed; - observers_.NotifyObservers(func, rfh, session); + observers_.NotifyObservers(func, rfh, access); } void WebContentsImpl::NotifyStorageAccessed( @@ -3822,6 +3843,11 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params, CHECK(render_view_host_delegate_view_); CHECK(view_.get()); + // Set the accessibility mode after the view is created. + SetAccessibilityMode( + BrowserAccessibilityState::GetInstance() + ->GetAccessibilityModeForBrowserContext(GetBrowserContext())); + view_->CreateView(params.context); screen_orientation_provider_ = @@ -3839,8 +3865,8 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params, } RedirectChainDetector::CreateForWebContents(this); - DIPSWebContentsObserver::MaybeCreateForWebContents(this); - DipsNavigationFlowDetector::CreateForWebContents(this); + BtmWebContentsObserver::MaybeCreateForWebContents(this); + BtmNavigationFlowDetector::CreateForWebContents(this); RedirectHeuristicTabHelper::CreateForWebContents(this); OpenerHeuristicTabHelper::CreateForWebContents(this); @@ -4225,10 +4251,10 @@ bool WebContentsImpl::CanEnterFullscreenMode( // blocked. Therefore, disqualify it from fullscreen if it or any upstream // WebContents has an active blocker. return delegate_ && - base::ranges::all_of(GetAllOpeningWebContents(this), - [](auto* opener) { - return opener->fullscreen_blocker_count_ == 0; - }) && + std::ranges::all_of(GetAllOpeningWebContents(this), + [](auto* opener) { + return opener->fullscreen_blocker_count_ == 0; + }) && delegate_->CanEnterFullscreenModeForTab(requesting_frame); } @@ -4500,6 +4526,18 @@ void WebContentsImpl::UpdateVisibilityAndNotifyPageAndView( base::BindRepeating( [](PageVisibilityState page_visibility, RenderViewHostImpl* render_view_host) { + // If we are a guest frame tree, allow the visibility (ie + // display:none) to override the page visibility. + if (render_view_host->frame_tree()->is_guest()) { + RenderFrameProxyHost* proxy = render_view_host->frame_tree() + ->root() + ->render_manager() + ->GetProxyToOuterDelegate(); + if (proxy && proxy->cross_process_frame_connector()->IsHidden()) { + page_visibility = PageVisibilityState::kHidden; + } + } + render_view_host->SetFrameTreeVisibility(page_visibility); }, page_visibility); @@ -5382,6 +5420,7 @@ void WebContentsImpl::CreateMediaPlayerHostForRenderFrameHost( } void WebContentsImpl::RequestMediaAccessPermission( + RenderFrameHostImpl* render_frame_host, const MediaStreamRequest& request, MediaResponseCallback callback) { OPTIONAL_TRACE_EVENT2("content", @@ -5389,14 +5428,22 @@ void WebContentsImpl::RequestMediaAccessPermission( "render_process_id", request.render_process_id, "render_frame_id", request.render_frame_id); - if (delegate_) { + if (GuestPageHolderImpl* guest = + render_frame_host + ? GuestPageHolderImpl::FromRenderFrameHost(*render_frame_host) + : nullptr) { + if (auto* delegate = guest->delegate()) { + delegate->GuestRequestMediaAccessPermission(request, std::move(callback)); + return; + } + } else if (delegate_) { delegate_->RequestMediaAccessPermission(this, request, std::move(callback)); - } else { - std::move(callback).Run( - blink::mojom::StreamDevicesSet(), - blink::mojom::MediaStreamRequestResult::FAILED_DUE_TO_SHUTDOWN, - std::unique_ptr()); + return; } + std::move(callback).Run( + blink::mojom::StreamDevicesSet(), + blink::mojom::MediaStreamRequestResult::FAILED_DUE_TO_SHUTDOWN, + std::unique_ptr()); } void WebContentsImpl::ProcessSelectAudioOutput( @@ -5423,6 +5470,15 @@ bool WebContentsImpl::CheckMediaAccessPermission( DCHECK(type == blink::mojom::MediaStreamType::DEVICE_AUDIO_CAPTURE || type == blink::mojom::MediaStreamType::DEVICE_VIDEO_CAPTURE); + + if (auto* guest = + GuestPageHolderImpl::FromRenderFrameHost(*render_frame_host)) { + if (auto* delegate = guest->delegate()) { + return delegate->GuestCheckMediaAccessPermission(render_frame_host, + security_origin, type); + } + return false; + } return delegate_ && delegate_->CheckMediaAccessPermission( render_frame_host, security_origin, type); } @@ -5451,7 +5507,7 @@ bool WebContentsImpl::IsJavaScriptDialogShowing() const { bool WebContentsImpl::ShouldIgnoreUnresponsiveRenderer() { // Suppress unresponsive renderers if the command line asks for it. if (base::CommandLine::ForCurrentProcess()->HasSwitch( - switches::kDisableHangMonitor)) { + input::switches::kDisableHangMonitor)) { return true; } @@ -5924,16 +5980,16 @@ WebContents* WebContentsImpl::OpenURL( return new_contents; } -void WebContentsImpl::SetHistoryOffsetAndLengthForView( +void WebContentsImpl::SetHistoryIndexAndLengthForView( RenderViewHost* render_view_host, - int history_offset, + int history_index, int history_length) { OPTIONAL_TRACE_EVENT2( - "content", "WebContentsImpl::SetHistoryOffsetAndLengthForView", - "history_offset", history_offset, "history_length", history_length); + "content", "WebContentsImpl::SetHistoryIndexAndLengthForView", + "history_index", history_index, "history_length", history_length); if (auto& broadcast = static_cast(render_view_host) ->GetAssociatedPageBroadcast()) { - broadcast->SetHistoryOffsetAndLength(history_offset, history_length); + broadcast->SetHistoryIndexAndLength(history_index, history_length); } } @@ -7011,6 +7067,10 @@ void WebContentsImpl::DidFinishNavigation(NavigationHandle* navigation_handle) { max_loaded_frame_count_ = GetFrameTreeSize(&primary_frame_tree_); } + // TODO(crbug.com/40202416): MPArch GuestView: We might need to look up the + // preferences for the navigation here and adjust the guest, but for now + // SetWebPreferences does not adjust the guest frame tree so we look for the + // preferences matching the primary main frame. if (web_preferences_) { // Update the WebPreferences for this WebContents that depends on changes // that might occur during navigation. This will only update the preferences @@ -7018,7 +7078,8 @@ void WebContentsImpl::DidFinishNavigation(NavigationHandle* navigation_handle) { // that needs to stay the same after navigations). bool value_changed_due_to_override = GetContentClient()->browser()->OverrideWebPreferencesAfterNavigation( - this, web_preferences_.get()); + this, *GetPrimaryMainFrame()->GetSiteInstance(), + web_preferences_.get()); // We need to update the WebPreferences value on the renderer if the value // is changed due to the override above, or if the navigation is served from // the back-forward cache, because the WebPreferences value stored in the @@ -7137,7 +7198,8 @@ input::TouchEmulator* WebContentsImpl::GetTouchEmulator( void WebContentsImpl::NotifyObserversOfInputEvent( const viz::FrameSinkId& frame_sink_id, - std::unique_ptr event) { + std::unique_ptr event, + bool dispatched_to_renderer) { auto iter = created_widgets_.find(frame_sink_id); // This adds a safeguard against race condition where a RenderWidgetHostImpl // is being destroyed & removed from |created_widgets_|, but Viz may still @@ -7145,7 +7207,8 @@ void WebContentsImpl::NotifyObserversOfInputEvent( if (iter == created_widgets_.end()) { return; } - iter->second->NotifyObserversOfInputEvent(event->Event()); + iter->second->NotifyObserversOfInputEvent(event->Event(), + dispatched_to_renderer); } void WebContentsImpl::NotifyObserversOfInputEventAcks( @@ -8451,6 +8514,17 @@ void WebContentsImpl::NotifyOnJavaScriptDialogDismiss( javascript_dialog_dismiss_notifier_->NotifyOnDismiss(std::move(callback)); } +void WebContentsImpl::Close(RenderFrameHostImpl* render_frame_host) { + if (GuestPageHolderImpl* guest_holder = + GuestPageHolderImpl::FromRenderFrameHost(*render_frame_host)) { + if (auto* guest_delegate = guest_holder->delegate()) { + guest_delegate->GuestClose(); + } + return; + } + Close(); +} + void WebContentsImpl::RunBeforeUnloadConfirm( RenderFrameHostImpl* render_frame_host, bool is_reload, @@ -8581,20 +8655,46 @@ void WebContentsImpl::RunFileChooser( } } -double WebContentsImpl::GetPendingPageZoomLevel() { - NavigationEntry* pending_entry = GetController().GetPendingEntry(); - if (!pending_entry) { - return HostZoomMap::GetZoomLevel(this); +double WebContentsImpl::GetPendingZoomLevel(RenderWidgetHostImpl* rwh) { + // TODO(372932834): This needs to be modified for the PDF-in-OOPIF case, as + // while the PDF will have its own RenderWidgetHost, the associated + // RenderFrameHost won't always be at the root of a FrameTree (and the + // FrameTree won't be of type kGuest). + // Note: this could involve (something like) detecting that the rfh for `rwh` + // is *not* a frame-tree root, but *does* have a temporary zoom level set in + // HostZoomMap. + RenderFrameHostImpl* rfh = + rwh->frame_tree()->root()->current_frame_host()->GetOutermostMainFrame(); + + GURL url; + if (rfh->IsInBackForwardCache()) { + // If the `rfh`s page is in the bf cache, then the use of the pending (or + // last committed) entry would have the lookup be based on an unrelated URL. + // In that case use the RFH's last committed URL. While using the + // NavigationEntry is preferred in order to avoid a virtual URL, that + // shouldn't be a problem if the URL from the `rfh` is used. Note that + // subframes get their zoom updates asynchronously from the main frame, so + // it's possible to get here in a race condition for a page that is no + // longer visible. For example, it's possible to get here on Android in the + // tests FencedFrameParameterizedBrowserTest.NavigateUnfencedTopAndGoBack + // and All/FencedFrameAutomaticBeaconBrowserTest.MessageExceedsLengthLimit/ + // fencedframe. + url = rfh->GetLastCommittedURL(); + } else { + NavigationEntry* pending_entry = rfh->GetController().GetPendingEntry(); + if (!pending_entry) { + return HostZoomMap::GetZoomLevel(this, rfh->GetGlobalId()); + } + url = pending_entry->GetURL(); } - - GURL url = pending_entry->GetURL(); #if BUILDFLAG(IS_ANDROID) return HostZoomMap::GetForWebContents(this) ->GetZoomLevelForHostAndSchemeAndroid(url.scheme(), net::GetHostOrSpecFromURL(url)); #else - return HostZoomMap::GetForWebContents(this)->GetZoomLevelForHostAndScheme( - url.scheme(), net::GetHostOrSpecFromURL(url)); + return HostZoomMap::Get(rfh->GetSiteInstance()) + ->GetZoomLevelForHostAndScheme(url.scheme(), + net::GetHostOrSpecFromURL(url)); #endif } @@ -8654,6 +8754,16 @@ const blink::RendererPreferences& WebContentsImpl::GetRendererPrefs( return renderer_preferences_; } +const blink::web_pref::WebPreferences& +WebContentsImpl::GetOrCreateWebPreferences( + RenderViewHostImpl* render_view_host) { + if (auto* guest = GuestPageHolderImpl::FromRenderFrameHost( + *render_view_host->frame_tree()->GetMainFrame())) { + return guest->GetWebPreferences(); + } + return GetOrCreateWebPreferences(); +} + RenderFrameHostImpl* WebContentsImpl::GetOuterWebContentsFrame() { if (GetOuterDelegateFrameTreeNodeId().is_null()) { return nullptr; @@ -8914,8 +9024,18 @@ void WebContentsImpl::SetWindowRect(const gfx::Rect& new_bounds) { delegate_->SetContentsBounds(this, bounds); } -void WebContentsImpl::UpdateWindowPreferredSize(const gfx::Size& pref_size) { +void WebContentsImpl::UpdateWindowPreferredSize( + RenderFrameHostImpl* render_frame_host, + const gfx::Size& pref_size) { OPTIONAL_TRACE_EVENT0("content", "WebContentsImpl::UpdatePreferredSize"); + if (auto* guest = + GuestPageHolderImpl::FromRenderFrameHost(*render_frame_host)) { + guest->delegate()->GuestUpdateWindowPreferredSize(pref_size); + return; + } + + CHECK(render_frame_host->IsInPrimaryMainFrame()); + const gfx::Size old_size = GetPreferredSize(); preferred_size_ = pref_size; OnPreferredSizeChanged(old_size); @@ -9182,6 +9302,20 @@ bool WebContentsImpl::MaybeCopyContentAreaAsBitmap( return GetDelegate()->MaybeCopyContentAreaAsBitmap(std::move(callback)); } +bool WebContentsImpl::SupportsForwardTransitionAnimation() { +#if BUILDFLAG(IS_ANDROID) + return supports_forward_transition_animation_; +#else + return true; +#endif // !BUILDFLAG(IS_ANDROID) +} + +#if BUILDFLAG(IS_ANDROID) +void WebContentsImpl::SetSupportsForwardTransitionAnimation(bool supports) { + supports_forward_transition_animation_ = supports; +} +#endif // !BUILDFLAG(IS_ANDROID) + void WebContentsImpl::DidChangeName(RenderFrameHostImpl* render_frame_host, const std::string& name) { OPTIONAL_TRACE_EVENT2("content", "WebContentsImpl::DidChangeName", @@ -9308,11 +9442,12 @@ void WebContentsImpl::UpdateTitle(RenderFrameHostImpl* render_frame_host, } } -void WebContentsImpl::UpdateAppTitle(RenderFrameHostImpl* render_frame_host, - const std::u16string& app_title) { +void WebContentsImpl::UpdateApplicationTitle( + RenderFrameHostImpl* render_frame_host, + const std::u16string& application_title) { OPTIONAL_TRACE_EVENT2("content", "WebContentsImpl::UpdateTitle", - "render_frame_host", render_frame_host, "app_title", - app_title); + "render_frame_host", render_frame_host, + "application_title", application_title); // Same logic as UpdateTitle() above. NavigationEntryImpl* entry = render_frame_host->frame_tree()->controller().GetEntryWithUniqueID( @@ -9327,14 +9462,15 @@ void WebContentsImpl::UpdateAppTitle(RenderFrameHostImpl* render_frame_host, entry = render_frame_host->frame_tree()->controller().GetLastCommittedEntry(); } - std::u16string final_app_title; - base::TrimWhitespace(app_title, base::TRIM_ALL, &final_app_title); + std::u16string final_application_title; + base::TrimWhitespace(application_title, base::TRIM_ALL, + &final_application_title); - if (final_app_title == entry->GetAppTitle()) { + if (final_application_title == entry->GetApplicationTitle()) { return; } - entry->SetAppTitle(final_app_title); + entry->SetApplicationTitle(final_application_title); NotifyNavigationStateChanged(INVALIDATE_TYPE_TITLE); } @@ -9946,7 +10082,7 @@ bool WebContentsImpl::CreateRenderViewForRenderManager( ReattachOuterDelegateIfNeeded(); } - SetHistoryOffsetAndLengthForView( + SetHistoryIndexAndLengthForView( render_view_host, rvh_impl->frame_tree()->controller().GetLastCommittedEntryIndex(), rvh_impl->frame_tree()->controller().GetEntryCount()); @@ -10148,7 +10284,7 @@ gfx::Size WebContentsImpl::GetSize() { return window->bounds().size(); #elif BUILDFLAG(IS_ANDROID) ui::ViewAndroid* view_android = GetNativeView(); - return view_android->GetSize(); + return view_android->GetSizeDIPs(); #elif BUILDFLAG(IS_IOS) // TODO(crbug.com/40254930): Implement me. NOTREACHED(); @@ -10299,7 +10435,7 @@ void WebContentsImpl::IncrementBluetoothConnectedDeviceCount() { // Notify for UI updates if the state changes. bluetooth_connected_device_count_++; if (bluetooth_connected_device_count_ == 1) { - OnCapabilityTypesChanged(CapabilityType::kBluetoothConnected, + OnCapabilityTypesChanged(WebContentsCapabilityType::kBluetoothConnected, /*used=*/true); } } @@ -10316,7 +10452,7 @@ void WebContentsImpl::DecrementBluetoothConnectedDeviceCount() { DCHECK_NE(bluetooth_connected_device_count_, 0u); bluetooth_connected_device_count_--; if (bluetooth_connected_device_count_ == 0) { - OnCapabilityTypesChanged(CapabilityType::kBluetoothConnected, + OnCapabilityTypesChanged(WebContentsCapabilityType::kBluetoothConnected, /*used=*/false); } } @@ -10365,7 +10501,7 @@ void WebContentsImpl::IncrementSerialActiveFrameCount() { // Notify for UI updates if the state changes. serial_active_frame_count_++; if (serial_active_frame_count_ == 1) { - OnCapabilityTypesChanged(CapabilityType::kSerial, /*used=*/true); + OnCapabilityTypesChanged(WebContentsCapabilityType::kSerial, /*used=*/true); } } @@ -10382,7 +10518,8 @@ void WebContentsImpl::DecrementSerialActiveFrameCount() { DCHECK_NE(0u, serial_active_frame_count_); serial_active_frame_count_--; if (serial_active_frame_count_ == 0) { - OnCapabilityTypesChanged(CapabilityType::kSerial, /*used=*/false); + OnCapabilityTypesChanged(WebContentsCapabilityType::kSerial, + /*used=*/false); } } @@ -10399,7 +10536,7 @@ void WebContentsImpl::IncrementHidActiveFrameCount() { // non-zero. hid_active_frame_count_++; if (hid_active_frame_count_ == 1) { - OnCapabilityTypesChanged(CapabilityType::kHID, /*used=*/true); + OnCapabilityTypesChanged(WebContentsCapabilityType::kHID, /*used=*/true); } } @@ -10417,7 +10554,7 @@ void WebContentsImpl::DecrementHidActiveFrameCount() { DCHECK_NE(0u, hid_active_frame_count_); hid_active_frame_count_--; if (hid_active_frame_count_ == 0) { - OnCapabilityTypesChanged(CapabilityType::kHID, /*used=*/false); + OnCapabilityTypesChanged(WebContentsCapabilityType::kHID, /*used=*/false); } } @@ -10434,7 +10571,8 @@ void WebContentsImpl::IncrementGeolocationActiveFrameCount() { // non-zero. geolocation_active_frame_count_++; if (geolocation_active_frame_count_ == 1) { - OnCapabilityTypesChanged(CapabilityType::kGeolocation, /*used=*/true); + OnCapabilityTypesChanged(WebContentsCapabilityType::kGeolocation, + /*used=*/true); } } @@ -10452,13 +10590,14 @@ void WebContentsImpl::DecrementGeolocationActiveFrameCount() { DCHECK_NE(0u, geolocation_active_frame_count_); geolocation_active_frame_count_--; if (geolocation_active_frame_count_ == 0) { - OnCapabilityTypesChanged(CapabilityType::kGeolocation, + OnCapabilityTypesChanged(WebContentsCapabilityType::kGeolocation, /*used=*/false); } } -void WebContentsImpl::OnCapabilityTypesChanged(CapabilityType capability_type, - bool used) { +void WebContentsImpl::OnCapabilityTypesChanged( + WebContentsCapabilityType capability_type, + bool used) { OPTIONAL_TRACE_EVENT0("content", "WebContentsImpl::OnCapabilityTypesChanged"); NotifyNavigationStateChanged(INVALIDATE_TYPE_TAB); observers_.NotifyObservers(&WebContentsObserver::OnCapabilityTypesChanged, @@ -10478,7 +10617,7 @@ void WebContentsImpl::IncrementUsbActiveFrameCount() { // non-zero. usb_active_frame_count_++; if (usb_active_frame_count_ == 1) { - OnCapabilityTypesChanged(CapabilityType::kUSB, /*used=*/true); + OnCapabilityTypesChanged(WebContentsCapabilityType::kUSB, /*used=*/true); } } @@ -10496,7 +10635,7 @@ void WebContentsImpl::DecrementUsbActiveFrameCount() { DCHECK_NE(0u, usb_active_frame_count_); usb_active_frame_count_--; if (usb_active_frame_count_ == 0) { - OnCapabilityTypesChanged(CapabilityType::kUSB, /*used=*/false); + OnCapabilityTypesChanged(WebContentsCapabilityType::kUSB, /*used=*/false); } } @@ -11374,11 +11513,12 @@ void WebContentsImpl::UpdateBrowserControlsState( cc::BrowserControlsState constraints, cc::BrowserControlsState current, bool animate, - const std::optional& offset_tags_info) { + const std::optional& + offset_tag_modifications) { // Browser controls should be synchronised with the scroll state. Therefore, // they are controlled from the renderer by the main RenderFrame(Host). GetPrimaryPage().UpdateBrowserControlsState(constraints, current, animate, - offset_tags_info); + offset_tag_modifications); } void WebContentsImpl::SetV8CompileHints(base::ReadOnlySharedMemoryRegion data) { @@ -11464,7 +11604,7 @@ WebContentsImpl::GetRenderInputRouterDelegateRemote() { return rir_delegate_remote_.get(); } -void WebContentsImpl::StartPrefetch( +std::unique_ptr WebContentsImpl::StartPrefetch( const GURL& prefetch_url, bool use_prefetch_proxy, const blink::mojom::Referrer& referrer, @@ -11473,27 +11613,23 @@ void WebContentsImpl::StartPrefetch( std::optional holdback_status_override) { if (!base::FeatureList::IsEnabled( features::kPrefetchBrowserInitiatedTriggers)) { - return; + return nullptr; } PrefetchService* prefetch_service = BrowserContextImpl::From(GetBrowserContext())->GetPrefetchService(); if (!prefetch_service) { - return; + return nullptr; } PrefetchType prefetch_type(PreloadingTriggerType::kEmbedder, use_prefetch_proxy); - auto container = std::make_unique( *this, prefetch_url, prefetch_type, referrer, referring_origin, /*no_vary_search_hint=*/std::nullopt, std::move(attempt), holdback_status_override); - // TODO(crbug.com/40946257): Update this list when prefetch container is - // eliminated from `PrefetchService`. - prefetch_containers_.push_back(container->GetWeakPtr()); - prefetch_service->AddPrefetchContainer(std::move(container)); + return prefetch_service->AddPrefetchContainerWithHandle(std::move(container)); } std::unique_ptr WebContentsImpl::StartPrerendering( @@ -11546,6 +11682,10 @@ void WebContentsImpl::CancelAllPrerendering() { PrerenderFinalStatus::kAllPrerenderingCanceled); } +bool WebContentsImpl::IsAllowedToStartPrerendering() { + return GetPrerenderHostRegistry()->IsAllowedToStartPrerenderingForEmbedder(); +} + void WebContentsImpl::BackNavigationLikely(PreloadingPredictor predictor, WindowOpenDisposition disposition) { CHECK(!IsBeingDestroyed()); @@ -11705,6 +11845,9 @@ void WebContentsImpl::GetMediaCaptureRawDeviceIdsOpened( } void WebContentsImpl::WarmUpAndroidSpareRenderer() { + if (GetBrowserContext()->ShutdownStarted()) { + return; + } int renderer_timeout_seconds = features::kAndroidSpareRendererTimeoutSeconds.Get(); if (renderer_timeout_seconds < 0) { diff --git a/tools/under-control/src/content/child/runtime_features.cc b/tools/under-control/src/content/child/runtime_features.cc index 91637a9c7..614fcee1e 100755 --- a/tools/under-control/src/content/child/runtime_features.cc +++ b/tools/under-control/src/content/child/runtime_features.cc @@ -194,14 +194,8 @@ void SetRuntimeFeaturesFromChromiumFeatures() { {wf::EnableBackgroundFetch, raw_ref(features::kBackgroundFetch)}, {wf::EnableBoundaryEventDispatchTracksNodeRemoval, raw_ref(blink::features::kBoundaryEventDispatchTracksNodeRemoval)}, - {wf::EnableBrowserVerifiedUserActivationKeyboard, - raw_ref(features::kBrowserVerifiedUserActivationKeyboard)}, - {wf::EnableBrowserVerifiedUserActivationMouse, - raw_ref(features::kBrowserVerifiedUserActivationMouse)}, {wf::EnableCompositeBGColorAnimation, raw_ref(features::kCompositeBGColorAnimation)}, - {wf::EnableCooperativeScheduling, - raw_ref(features::kCooperativeScheduling)}, {wf::EnableDigitalGoods, raw_ref(features::kDigitalGoodsApi), kSetOnlyIfOverridden}, {wf::EnableDocumentPolicyNegotiation, @@ -217,9 +211,6 @@ void SetRuntimeFeaturesFromChromiumFeatures() { kDefault}, {wf::EnableFedCmIdPRegistration, raw_ref(features::kFedCmIdPRegistration), kDefault}, - {wf::EnableFedCmIdpSigninStatus, - raw_ref(features::kFedCmIdpSigninStatusEnabled), - kSetOnlyIfOverridden}, {wf::EnableFedCmLightweightMode, raw_ref(features::kFedCmLightweightMode), kDefault}, {wf::EnableGamepadMultitouch, @@ -347,9 +338,6 @@ void SetRuntimeFeaturesFromChromiumFeatures() { kSetOnlyIfOverridden}, {"AttributionReporting", raw_ref(features::kPrivacySandboxAdsAPIsM1Override)}, - {"AttributionReportingCrossAppWeb", - raw_ref(features::kPrivacySandboxAdsAPIsOverride), - kSetOnlyIfOverridden}, {"AndroidDownloadableFontsMatching", raw_ref(features::kAndroidDownloadableFontsMatching)}, #if BUILDFLAG(IS_ANDROID) @@ -412,7 +400,9 @@ void SetRuntimeFeaturesFromChromiumFeatures() { {"ExperimentalMachineLearningNeuralNetwork", raw_ref(webnn::mojom::features:: kExperimentalWebMachineLearningNeuralNetwork), - kSetOnlyIfOverridden}}; + kSetOnlyIfOverridden}, + {"WebAuthenticationNewBfCacheHandlingBlink", + raw_ref(device::kWebAuthnNewBfCacheHandling)}}; for (const auto& mapping : runtimeFeatureNameToChromiumFeatureMapping) { SetRuntimeFeatureFromChromiumFeature( *mapping.chromium_feature, mapping.option, [&mapping](bool enabled) { @@ -622,21 +612,6 @@ void ResolveInvalidConfigurations() { WebRuntimeFeatures::EnableAttributionReporting(false); } - if (!base::FeatureList::IsEnabled( - attribution_reporting::features::kConversionMeasurement) || - !base::FeatureList::IsEnabled( - network::features::kAttributionReportingCrossAppWeb)) { - LOG_IF(WARNING, - WebRuntimeFeatures::IsAttributionReportingCrossAppWebEnabled()) - << "AttributionReportingCrossAppWeb cannot be enabled in this " - "configuration. Use --" - << switches::kEnableFeatures << "=" - << attribution_reporting::features::kConversionMeasurement.name << "," - << network::features::kAttributionReportingCrossAppWeb.name - << " in addition."; - WebRuntimeFeatures::EnableAttributionReportingCrossAppWeb(false); - } - if (!base::FeatureList::IsEnabled(blink::features::kInterestGroupStorage)) { LOG_IF(WARNING, WebRuntimeFeatures::IsAdInterestGroupAPIEnabledByRuntimeFlag()) 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 f252c048f..f07621fc6 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 @@ -27,13 +27,12 @@ #include "content/browser/ai/echo_ai_manager_impl.h" #include "content/browser/renderer_host/render_frame_host_impl.h" #include "content/public/browser/anchor_element_preconnect_delegate.h" -#include "content/public/browser/authenticator_request_client_delegate.h" #include "content/public/browser/browser_context.h" #include "content/public/browser/browser_main_parts.h" +#include "content/public/browser/browsing_data_remover.h" #include "content/public/browser/client_certificate_delegate.h" #include "content/public/browser/devtools_manager_delegate.h" #include "content/public/browser/digital_identity_provider.h" -#include "content/public/browser/dips_delegate.h" #include "content/public/browser/identity_request_dialog_controller.h" #include "content/public/browser/legacy_tech_cookie_issue_details.h" #include "content/public/browser/login_delegate.h" @@ -87,7 +86,7 @@ #include "third_party/blink/public/mojom/file_system_access/file_system_access_cloud_identifier.mojom.h" #include "third_party/blink/public/mojom/file_system_access/file_system_access_error.mojom.h" #include "third_party/blink/public/mojom/origin_trials/origin_trials_settings.mojom.h" -#include "third_party/blink/public/mojom/payments/payment_credential.mojom.h" +#include "third_party/blink/public/mojom/payments/secure_payment_confirmation_service.mojom.h" #include "ui/gfx/image/image_skia.h" #include "ui/shell_dialogs/select_file_policy.h" #include "url/gurl.h" @@ -96,6 +95,8 @@ #if BUILDFLAG(IS_ANDROID) #include "content/public/browser/tts_environment_android.h" #else +#include "content/public/browser/authenticator_request_client_delegate.h" +#include "content/public/browser/web_authentication_delegate.h" #include "third_party/blink/public/mojom/installedapp/related_application.mojom.h" #endif @@ -243,6 +244,10 @@ void ContentBrowserClient::GetAdditionalViewSourceSchemes( GetAdditionalWebUISchemes(additional_schemes); } +bool ContentBrowserClient::IsInternalScheme(const GURL& url) { + return false; +} + network::mojom::IPAddressSpace ContentBrowserClient::DetermineAddressSpaceFromURL(const GURL& url) { return network::mojom::IPAddressSpace::kUnknown; @@ -367,6 +372,10 @@ bool ContentBrowserClient::ShouldDisableSiteIsolation( return false; } +bool ContentBrowserClient::ShouldDisableOriginIsolation() { + return false; +} + std::vector ContentBrowserClient::GetAdditionalSiteIsolationModes() { return std::vector(); @@ -486,6 +495,11 @@ bool ContentBrowserClient::AllowCompressionDictionaryTransport( return true; } +bool ContentBrowserClient::AllowServiceWorkerToControlSrcdocIframe( + BrowserContext* context) { + return true; +} + bool ContentBrowserClient::AllowSharedWorkerBlobURLFix( BrowserContext* context) { return true; @@ -493,6 +507,7 @@ bool ContentBrowserClient::AllowSharedWorkerBlobURLFix( bool ContentBrowserClient::OverrideWebPreferencesAfterNavigation( WebContents* web_contents, + SiteInstance& main_frame_site, blink::web_pref::WebPreferences* prefs) { return false; } @@ -1217,9 +1232,10 @@ void ContentBrowserClient::CreateManagedConfigurationService( mojo::PendingReceiver receiver) { } -void ContentBrowserClient::CreatePaymentCredential( +void ContentBrowserClient::CreateSecurePaymentConfirmationService( RenderFrameHost* render_frame_host, - mojo::PendingReceiver receiver) {} + mojo::PendingReceiver + receiver) {} #if !BUILDFLAG(IS_ANDROID) SerialDelegate* ContentBrowserClient::GetSerialDelegate() { @@ -1552,6 +1568,11 @@ bool ContentBrowserClient::AreV8OptimizationsDisabledForSite( return false; } +bool ContentBrowserClient::DisallowV8FeatureFlagOverridesForSite( + const GURL& site_url) { + return false; +} + ukm::UkmService* ContentBrowserClient::GetUkmService() { return nullptr; } @@ -1568,7 +1589,7 @@ void ContentBrowserClient::OnKeepaliveRequestFinished() {} #if BUILDFLAG(IS_MAC) bool ContentBrowserClient::SetupEmbedderSandboxParameters( sandbox::mojom::Sandbox sandbox_type, - sandbox::SandboxCompiler* compiler) { + sandbox::SandboxSerializer* serializer) { return false; } #endif // BUILDFLAG(IS_MAC) @@ -1745,23 +1766,28 @@ bool ContentBrowserClient:: return true; } +bool ContentBrowserClient::IsBlobUrlPartitioningEnabled( + content::BrowserContext* browser_context) { + return true; +} + bool ContentBrowserClient::UseOutermostMainFrameOrEmbedderForSubCaptureTargets() const { return false; } #if BUILDFLAG(ENABLE_VIDEO_EFFECTS) -void ContentBrowserClient::BindVideoEffectsManager( +void ContentBrowserClient::BindReadonlyVideoEffectsManager( const std::string& device_id, BrowserContext* browser_context, - mojo::PendingReceiver - video_effects_manager) {} + mojo::PendingReceiver + readonly_video_effects_manager) {} void ContentBrowserClient::BindVideoEffectsProcessor( const std::string& device_id, BrowserContext* browser_context, mojo::PendingReceiver - video_effects_manager) {} + video_effects_processor) {} #endif // BUILDFLAG(ENABLE_VIDEO_EFFECTS) void ContentBrowserClient::PreferenceRankAudioDeviceInfos( @@ -1786,14 +1812,19 @@ void ContentBrowserClient::NotifyMultiCaptureStateChanged( const std::string& label, MultiCaptureChanged state) {} -std::unique_ptr ContentBrowserClient::CreateDipsDelegate() { - return nullptr; -} - bool ContentBrowserClient::ShouldEnableDips(BrowserContext* browser_context) { return true; } +uint64_t ContentBrowserClient::GetDipsRemoveMask() { + return kDefaultDipsRemoveMask; +} + +bool ContentBrowserClient::ShouldDipsDeleteInteractionRecords( + uint64_t remove_mask) { + return remove_mask & BrowsingDataRemover::DATA_TYPE_COOKIES; +} + bool ContentBrowserClient::ShouldSuppressAXLoadComplete(RenderFrameHost* rfh) { return false; } @@ -1894,4 +1925,10 @@ std::unique_ptr ContentBrowserClient::OverrideForInternalWebUI( return nullptr; } +std::optional +ContentBrowserClient::MaybeOverrideLocalURLCrossOriginEmbedderPolicy( + content::NavigationHandle* navigation_handle) { + return std::nullopt; +} + } // namespace content diff --git a/tools/under-control/src/extensions/common/api/user_scripts.idl b/tools/under-control/src/extensions/common/api/user_scripts.idl index 3aadc81af..e6a656714 100755 --- a/tools/under-control/src/extensions/common/api/user_scripts.idl +++ b/tools/under-control/src/extensions/common/api/user_scripts.idl @@ -67,11 +67,10 @@ namespace userScripts { // The JavaScript execution environment to run the script in. The default is // `USER_SCRIPT`. ExecutionWorld? world; - - // If specified, specifies a specific user script world ID to execute in. - // Only valid if `world` is omitted or is `USER_SCRIPT`. If omitted, the - // script will execute in the default user script world. - // Values with leading underscores (`_`) are reserved. + // Specifies the user script world ID to execute in. If omitted, the script + // will execute in the default user script world. Only valid if `world` is + // omitted or is `USER_SCRIPT`. Values with leading underscores (`_`) are + // reserved. DOMString? worldId; }; @@ -116,13 +115,19 @@ namespace userScripts { // prior to page load, as the page may have already loaded by the time the // script reaches the target. boolean? injectImmediately; - // The script source to inject into the target. - ScriptSource js; + // The list of ScriptSource objects defining sources of scripts to be + // injected into the target. + ScriptSource[] js; // Details specifying the target into which to inject the script. InjectionTarget target; // The JavaScript "world" to run the script in. The default is // USER_SCRIPT. ExecutionWorld? world; + // Specifies the user script world ID to execute in. If omitted, the script + // will execute in the default user script world. Only valid if `world` is + // omitted or is `USER_SCRIPT`. Values with leading underscores (`_`) are + // reserved. + DOMString? worldId; }; // An object used to update the `USER_SCRIPT` world diff --git a/tools/under-control/src/gin/v8_initializer.cc b/tools/under-control/src/gin/v8_initializer.cc index 7fdb3ae4e..b6799720c 100755 --- a/tools/under-control/src/gin/v8_initializer.cc +++ b/tools/under-control/src/gin/v8_initializer.cc @@ -261,8 +261,28 @@ class V8FeatureVisitor : public base::FeatureVisitor { namespace { +// Sets mandatory V8 flags. void SetFlags(IsolateHolder::ScriptMode mode, const std::string& js_command_line_flags) { + SetV8Flags("--js-explicit-resource-management"); + + if (IsolateHolder::kStrictMode == mode) { + SetV8Flags("--use_strict"); + } + + // Apply any --js-flags explicitly specified by the caller. + if (!js_command_line_flags.empty()) { + std::vector flag_list = base::SplitStringPiece( + js_command_line_flags, ",", base::TRIM_WHITESPACE, + base::SPLIT_WANT_NONEMPTY); + for (const auto& flag : flag_list) { + v8::V8::SetFlagsFromString(std::string(flag).c_str(), flag.size()); + } + } +} + +// Sets feature controlled V8 flags. +void SetFeatureFlags() { // Chromium features prefixed with "V8Flag_" are forwarded to V8 as V8 flags, // with the "V8Flag_" prefix stripped off. For example, an enabled feature // "V8Flag_foo_bar" will be passed to V8 as the flag `--foo_bar`. Similarly, @@ -504,10 +524,6 @@ void SetFlags(IsolateHolder::ScriptMode mode, SetV8FlagsIfOverridden(features::kJavaScriptPromiseTry, "--js-promise-try", "--no-js-promise-try"); - if (IsolateHolder::kStrictMode == mode) { - SetV8Flags("--use_strict"); - } - // WebAssembly features. SetV8FlagsIfOverridden(features::kWebAssemblyDeopt, "--wasm-deopt", @@ -523,17 +539,6 @@ void SetFlags(IsolateHolder::ScriptMode mode, SetV8FlagsIfOverridden(features::kWebAssemblyTurboshaftInstructionSelection, "--turboshaft-wasm-instruction-selection-staged", "--no-turboshaft-wasm-instruction-selection-staged"); - - if (js_command_line_flags.empty()) - return; - - // Allow the --js-flags switch to override existing flags: - std::vector flag_list = - base::SplitStringPiece(js_command_line_flags, ",", base::TRIM_WHITESPACE, - base::SPLIT_WANT_NONEMPTY); - for (const auto& flag : flag_list) { - v8::V8::SetFlagsFromString(std::string(flag).c_str(), flag.size()); - } } } // namespace @@ -541,14 +546,19 @@ void SetFlags(IsolateHolder::ScriptMode mode, // static void V8Initializer::Initialize(IsolateHolder::ScriptMode mode, const std::string& js_command_line_flags, + bool disallow_v8_feature_flag_overrides, v8::OOMErrorCallback oom_error_callback) { static bool v8_is_initialized = false; if (v8_is_initialized) return; - // Flags need to be set before InitializePlatform as they are used for - // system instrumentation initialization. - // See https://crbug.com/v8/11043 + // Flags need to be set before InitializePlatform as they are used for system + // instrumentation initialization, see https://crbug.com/v8/11043. --js-flags + // and other mandatory flags in `SetFlags` must be ordered after feature flag + // overrides. + if (!disallow_v8_feature_flag_overrides) { + SetFeatureFlags(); + } SetFlags(mode, js_command_line_flags); v8::V8::InitializePlatform(V8Platform::Get()); diff --git a/tools/under-control/src/services/network/network_context.cc b/tools/under-control/src/services/network/network_context.cc index 8d2e38ac6..e74079c81 100755 --- a/tools/under-control/src/services/network/network_context.cc +++ b/tools/under-control/src/services/network/network_context.cc @@ -29,7 +29,6 @@ #include "base/memory/ref_counted.h" #include "base/metrics/histogram_functions.h" #include "base/not_fatal_until.h" -#include "base/ranges/algorithm.h" #include "base/sequence_checker.h" #include "base/strings/string_number_conversions.h" #include "base/strings/string_util.h" @@ -110,6 +109,7 @@ #include "services/network/http_server_properties_pref_delegate.h" #include "services/network/ignore_errors_cert_verifier.h" #include "services/network/is_browser_initiated.h" +#include "services/network/known_legacy_scope_domains_delegate.h" #include "services/network/net_log_exporter.h" #include "services/network/network_service.h" #include "services/network/network_service_network_delegate.h" @@ -134,6 +134,7 @@ #include "services/network/public/mojom/reporting_service.mojom.h" #include "services/network/public/mojom/trust_tokens.mojom-forward.h" #include "services/network/public/mojom/url_loader_factory.mojom.h" +#include "services/network/public/mojom/web_transport.mojom.h" #include "services/network/resolve_host_request.h" #include "services/network/resource_scheduler/resource_scheduler_client.h" #include "services/network/restricted_cookie_manager.h" @@ -167,10 +168,6 @@ #include "services/network/sct_auditing/sct_auditing_handler.h" #endif // BUILDFLAG(IS_CT_SUPPORTED) -#if BUILDFLAG(IS_CHROMEOS) -#include "services/network/cert_verifier_with_trust_anchors.h" -#endif // BUILDFLAG(IS_CHROMEOS) - #if BUILDFLAG(ENABLE_WEBSOCKETS) #include "services/network/websocket_factory.h" #endif // BUILDFLAG(ENABLE_WEBSOCKETS) @@ -597,7 +594,10 @@ enum class HSTSRedirectUpgradeReason { // LINT.ThenChange(//tools/metrics/histograms/metadata/net/enums.xml:HSTSRedirectUpgradeReason) void RecordHSTSPreconnectUpgradeReason(HSTSRedirectUpgradeReason reason) { - base::UmaHistogramEnumeration("Net.PreconnectHSTSUpgradesUrl", reason); + if (!base::FeatureList::IsEnabled( + net::features::kHstsTopLevelNavigationsOnly)) { + base::UmaHistogramEnumeration("Net.PreconnectHSTSUpgradesUrl", reason); + } } } // namespace @@ -1041,12 +1041,14 @@ void NetworkContext::GetRestrictedCookieManager( const url::Origin& origin, const net::IsolationInfo& isolation_info, const net::CookieSettingOverrides& cookie_setting_overrides, + const net::CookieSettingOverrides& devtools_cookie_setting_overrides, mojo::PendingRemote cookie_observer) { RestrictedCookieManager::ComputeFirstPartySetMetadata( origin, url_request_context_->cookie_store(), isolation_info, base::BindOnce(&NetworkContext::OnComputedFirstPartySetMetadata, weak_factory_.GetWeakPtr(), std::move(receiver), role, origin, isolation_info, cookie_setting_overrides, + devtools_cookie_setting_overrides, std::move(cookie_observer))); } @@ -1064,6 +1066,7 @@ void NetworkContext::OnComputedFirstPartySetMetadata( const url::Origin& origin, const net::IsolationInfo& isolation_info, const net::CookieSettingOverrides& cookie_setting_overrides, + const net::CookieSettingOverrides& devtools_cookie_setting_overrides, mojo::PendingRemote cookie_observer, net::FirstPartySetMetadata first_party_set_metadata) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); @@ -1072,8 +1075,8 @@ void NetworkContext::OnComputedFirstPartySetMetadata( std::make_unique( role, url_request_context_->cookie_store(), cookie_manager_->cookie_settings(), origin, isolation_info, - cookie_setting_overrides, std::move(cookie_observer), - std::move(first_party_set_metadata), + cookie_setting_overrides, devtools_cookie_setting_overrides, + std::move(cookie_observer), std::move(first_party_set_metadata), network_service_->metrics_updater()); auto callback = base::BindOnce(&NetworkContext::OnRCMDisconnect, @@ -1360,11 +1363,12 @@ void NetworkContext::ClearHttpAuthCache(base::Time start_time, url_request_context_->http_transaction_factory()->GetSession(); DCHECK(http_session); - http_session->http_auth_cache()->ClearEntriesAddedBetween( - start_time, end_time, BuildUrlFilter(std::move(filter))); - // TODO(mmenke): Use another error code for this, as ERR_ABORTED has somewhat - // magical handling with respect to navigations. - http_session->CloseAllConnections(net::ERR_ABORTED, "Clearing auth cache"); + if (http_session->http_auth_cache()->ClearEntriesAddedBetween( + start_time, end_time, BuildUrlFilter(std::move(filter)))) { + // TODO(mmenke): Use another error code for this, as ERR_ABORTED has + // somewhat magical handling with respect to navigations. + http_session->CloseAllConnections(net::ERR_ABORTED, "Clearing auth cache"); + } std::move(callback).Run(); } @@ -1929,6 +1933,14 @@ void NetworkContext::CreateWebTransport( std::vector fingerprints, mojo::PendingRemote pending_handshake_client) { + if (!IsNetworkForNonceAndUrlAllowed( + key.GetNonce().value_or(base::UnguessableToken::Null()), url)) { + mojo::Remote remote_handshake_client( + std::move(pending_handshake_client)); + remote_handshake_client->OnHandshakeFailed( + net::WebTransportError(net::ERR_NETWORK_ACCESS_REVOKED)); + return; + } web_transports_.insert( std::make_unique(url, origin, key, fingerprints, this, std::move(pending_handshake_client))); @@ -2076,6 +2088,7 @@ void NetworkContext::AddHSTS(const std::string& host, } void NetworkContext::IsHSTSActiveForHost(const std::string& host, + bool is_top_level_nav, IsHSTSActiveForHostCallback callback) { net::TransportSecurityState* security_state = url_request_context_->transport_security_state(); @@ -2085,7 +2098,8 @@ void NetworkContext::IsHSTSActiveForHost(const std::string& host, return; } - std::move(callback).Run(security_state->ShouldUpgradeToSSL(host)); + std::move(callback).Run( + security_state->ShouldUpgradeToSSL(host, is_top_level_nav)); } void NetworkContext::GetHSTSState(const std::string& domain, @@ -2456,7 +2470,7 @@ const net::HttpAuthPreferences* NetworkContext::GetHttpAuthPreferences() const { } size_t NetworkContext::NumOpenWebTransports() const { - return base::ranges::count(web_transports_, false, &WebTransport::torn_down); + return std::ranges::count(web_transports_, false, &WebTransport::torn_down); } bool NetworkContext::AllURLLoaderFactoriesAreBoundToNetworkForTesting( @@ -2555,18 +2569,6 @@ URLRequestContextOwner NetworkContext::MakeURLRequestContext( cert_verifier = std::make_unique( std::make_unique( std::move(cert_verifier))); - -#if BUILDFLAG(IS_CHROMEOS) - // TODO(crbug.com/40928765): The TrustAnchorUsed callback should - // work on all platforms. (Also consider whether this wrapper is the best - // way to handle this or if it should be refactored.) - auto cert_verifier_with_trust_anchors = - std::make_unique(base::BindRepeating( - &NetworkContext::TrustAnchorUsed, base::Unretained(this))); - cert_verifier_with_trust_anchors->InitializeOnIOThread( - std::move(cert_verifier)); - cert_verifier = std::move(cert_verifier_with_trust_anchors); -#endif // BUILDFLAG(IS_CHROMEOS) } builder.SetCertVerifier(IgnoreErrorsCertVerifier::MaybeWrapCertVerifier( @@ -2635,39 +2637,27 @@ URLRequestContextOwner NetworkContext::MakeURLRequestContext( builder.set_network_quality_estimator( network_service_->network_quality_estimator()); } + trust_token_store_ = std::make_unique(); - if (session_cleanup_cookie_store) { - std::unique_ptr cookie_store = - std::make_unique(session_cleanup_cookie_store.get(), - net_log); - if (params_->persist_session_cookies) { - cookie_store->SetPersistSessionCookies(true); - } - - builder.SetCookieStore(std::move(cookie_store)); + base::FilePath trust_token_path; + if (GetFullDataFilePath( + params_->file_paths, + &network::mojom::NetworkContextFilePaths::trust_token_database_name, + trust_token_path)) { + SQLiteTrustTokenPersister::CreateForFilePath( + base::ThreadPool::CreateSequencedTaskRunner( + {base::MayBlock(), kTrustTokenDatabaseTaskPriority, + base::TaskShutdownBehavior::BLOCK_SHUTDOWN}), + trust_token_path, kTrustTokenWriteBufferingWindow, + base::BindOnce(&NetworkContext::FinishConstructingTrustTokenStore, + weak_factory_.GetWeakPtr())); + } else { + trust_token_store_->OnStoreReady(std::make_unique( + std::make_unique(), + std::make_unique( + network_service()->trust_token_key_commitments()))); } - trust_token_store_ = std::make_unique(); - - base::FilePath trust_token_path; - if (GetFullDataFilePath( - params_->file_paths, - &network::mojom::NetworkContextFilePaths::trust_token_database_name, - trust_token_path)) { - SQLiteTrustTokenPersister::CreateForFilePath( - base::ThreadPool::CreateSequencedTaskRunner( - {base::MayBlock(), kTrustTokenDatabaseTaskPriority, - base::TaskShutdownBehavior::BLOCK_SHUTDOWN}), - trust_token_path, kTrustTokenWriteBufferingWindow, - base::BindOnce(&NetworkContext::FinishConstructingTrustTokenStore, - weak_factory_.GetWeakPtr())); - } else { - trust_token_store_->OnStoreReady(std::make_unique( - std::make_unique(), - std::make_unique( - network_service()->trust_token_key_commitments()))); - } - std::unique_ptr user_agent_settings = std::make_unique( params_->accept_language, params_->user_agent); @@ -2767,6 +2757,7 @@ URLRequestContextOwner NetworkContext::MakeURLRequestContext( scoped_refptr pref_registry(new PrefRegistrySimple()); HttpServerPropertiesPrefDelegate::RegisterPrefs(pref_registry.get()); NetworkQualitiesPrefDelegate::RegisterPrefs(pref_registry.get()); + KnownLegacyScopeDomainsPrefDelegate::RegisterPrefs(pref_registry.get()); pref_service = pref_service_factory.Create(pref_registry.get()); builder.SetHttpServerProperties(std::make_unique( @@ -2778,6 +2769,19 @@ URLRequestContextOwner NetworkContext::MakeURLRequestContext( pref_service.get(), network_service_->network_quality_estimator()); } + if (session_cleanup_cookie_store) { + std::unique_ptr cookie_store = + std::make_unique( + session_cleanup_cookie_store.get(), net_log, + std::make_unique( + pref_service.get())); + if (params_->persist_session_cookies) { + cookie_store->SetPersistSessionCookies(true); + } + + builder.SetCookieStore(std::move(cookie_store)); + } + base::FilePath transport_security_persister_file_name; if (GetFullDataFilePath(params_->file_paths, &network::mojom::NetworkContextFilePaths:: @@ -3007,12 +3011,11 @@ NetworkContext::MakeSessionCleanupCookieStore() const { #if BUILDFLAG(IS_WIN) const bool enable_exclusive_access = - params_->enable_locking_cookie_database.value_or( - base::FeatureList::IsEnabled( - features::kEnableLockCookieDatabaseByDefault)); + network_service()->exclusive_cookie_database_locking(); #else const bool enable_exclusive_access = false; #endif // BUILDFLAG(IS_WIN) + scoped_refptr sqlite_store( new net::SQLitePersistentCookieStore( cookie_path, client_task_runner, background_task_runner, @@ -3075,8 +3078,17 @@ GURL NetworkContext::GetHSTSRedirectForPreconnect(const GURL& original_url) { return original_url; } + // TODO(crbug.com/40725781); This currently doesn't allow for preconnect + // upgrades when kHstsTopLevelNavigationsOnly is enabled. Revisit this + // decision after analyzing Net.PreconnectHSTSUpgradesUrl metric. + // + // When kHstsTopLevelNavigationsOnly is enabled only top-level navigations + // will be eligable for HSTS upgrades (not sub-resource requests). + // Unfortunately we don't know at this point if this request is for a + // top-level navigation so we need to disallow HSTS upgrades for every + // preconnect. if (!url_request_context_->transport_security_state()->ShouldUpgradeToSSL( - original_url.host())) { + original_url.host(), /*is_top_level_nav=*/false)) { RecordHSTSPreconnectUpgradeReason( HSTSRedirectUpgradeReason::kNotUpgradedNoHSTSPin); return original_url; @@ -3153,12 +3165,6 @@ void NetworkContext::OnVerifyCertForSignedExchangeComplete( .Run(result, *pending_cert_verify->result.get(), pkp_bypassed); } -#if BUILDFLAG(IS_CHROMEOS) -void NetworkContext::TrustAnchorUsed() { - client_->OnTrustAnchorUsed(); -} -#endif // BUILDFLAG(IS_CHROMEOS) - #if BUILDFLAG(IS_DIRECTORY_TRANSFER_REQUIRED) void NetworkContext::EnsureMounted(network::TransferableDirectory* directory) { if (directory->NeedsMount()) { @@ -3335,6 +3341,9 @@ void NetworkContext::RevokeNetworkForNonces( websocket_factory_->RemoveIfNonceMatches(nonce); } #endif // BUILDFLAG(ENABLE_WEBSOCKETS) + for (const auto& transport : web_transports_) { + transport->CloseIfNonceMatches(nonce); + } } if (callback) { 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 ae195ecad..8b7bd5d13 100755 --- a/tools/under-control/src/testing/variations/fieldtrial_testing_config.json +++ b/tools/under-control/src/testing/variations/fieldtrial_testing_config.json @@ -101,21 +101,6 @@ ] } ], - "AccessibilityPageZoomEnhancements": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "AccessibilityPageZoomEnhancements" - ] - } - ] - } - ], "AccessibilityPageZoomV2": [ { "platforms": [ @@ -256,6 +241,24 @@ ] } ], + "AiSettingsPageEnterpriseDisabledUi": [ + { + "platforms": [ + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "AiSettingsPageEnterpriseDisabledUi" + ] + } + ] + } + ], "AiSettingsPageRefresh": [ { "platforms": [ @@ -341,6 +344,38 @@ ] } ], + "AndroidAppIntegrationV2": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled_SkipSchemaCheck", + "params": { + "skip_schema_check": "true", + "use_large_favicon": "true" + }, + "enable_features": [ + "AndroidAppIntegrationModule", + "AndroidAppIntegrationV2", + "AndroidAppIntegrationWithFavicon" + ] + }, + { + "name": "Enabled", + "params": { + "use_large_favicon": "true" + }, + "enable_features": [ + "AndroidAppIntegrationModule", + "AndroidAppIntegrationV2", + "AndroidAppIntegrationWithFavicon" + ] + } + ] + } + ], "AndroidAutofillPrefillRequestsForChangePassword": [ { "platforms": [ @@ -392,6 +427,36 @@ ] } ], + "AndroidDumpOnScrollWithoutResource": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "AndroidDumpOnScrollWithoutResource" + ] + } + ] + } + ], + "AndroidFallbackToNextSlot": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "AndroidFallbackToNextSlot" + ] + } + ] + } + ], "AndroidHatsNext": [ { "platforms": [ @@ -541,16 +606,13 @@ ], "experiments": [ { - "name": "EnableBoth", + "name": "DefaultAfterLoading", "params": { - "omnibox_spare_renderer_delay_ms": "500", - "spare_renderer_creation_delay_ms": "2000", - "spare_renderer_creation_timing": "delayed-during-loading", + "spare_renderer_creation_timing": "after-loading", "spare_renderer_timeout_seconds": "60" }, "enable_features": [ - "AndroidWarmUpSpareRendererWithTimeout", - "OverrideAndroidOmniboxSpareRendererDelay" + "AndroidWarmUpSpareRendererWithTimeout" ] } ] @@ -650,7 +712,8 @@ { "name": "Enabled", "enable_features": [ - "UseFrameIntervalDecider" + "UseFrameIntervalDecider", + "UseFrameIntervalDeciderNewAndroidFeatures" ] } ] @@ -1536,6 +1599,26 @@ ] } ], + "AutofillBetterLocalHeuristicPlaceholderSupport": [ + { + "platforms": [ + "android", + "android_webview", + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "AutofillBetterLocalHeuristicPlaceholderSupport" + ] + } + ] + } + ], "AutofillCreditCardUserPerceptionSurvey": [ { "platforms": [ @@ -1635,11 +1718,7 @@ "AutofillEnableCardBenefitsForAmericanExpress": [ { "platforms": [ - "android", - "chromeos", - "linux", - "mac", - "windows" + "android" ], "experiments": [ { @@ -1651,7 +1730,7 @@ ] } ], - "AutofillEnableCardBenefitsForCapitalOne": [ + "AutofillEnableCardBenefitsIph": [ { "platforms": [ "chromeos", @@ -1663,40 +1742,44 @@ { "name": "Enabled", "enable_features": [ - "AutofillEnableCardBenefitsForCapitalOne" + "AutofillEnableCardBenefitsIph" ] } ] } ], - "AutofillEnableCardBenefitsIph": [ + "AutofillEnableDisablingSuggestionsOnJSFocus": [ { "platforms": [ - "chromeos", - "linux", - "mac", - "windows" + "android" ], "experiments": [ { "name": "Enabled", "enable_features": [ - "AutofillEnableCardBenefitsIph" + "AutofillAndroidDisableSuggestionsOnJSFocus" ] } ] } ], - "AutofillEnableDisablingSuggestionsOnJSFocus": [ + "AutofillEnableEmailHeuristicOutsideForms": [ { "platforms": [ - "android" + "android", + "android_webview", + "chromeos", + "chromeos_lacros", + "ios", + "linux", + "mac", + "windows" ], "experiments": [ { "name": "Enabled", "enable_features": [ - "AutofillAndroidDisableSuggestionsOnJSFocus" + "AutofillEnableEmailHeuristicOutsideForms" ] } ] @@ -1900,26 +1983,6 @@ ] } ], - "AutofillEnableServerIban": [ - { - "platforms": [ - "android", - "chromeos", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "AutofillEnableLocalIban", - "AutofillEnableServerIban" - ] - } - ] - } - ], "AutofillEnableSupportForParsingWithSharedLabels": [ { "platforms": [ @@ -2146,6 +2209,26 @@ ] } ], + "AutofillImproveAddressFieldSwapping": [ + { + "platforms": [ + "android", + "chromeos", + "ios", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "AutofillImproveAddressFieldSwapping" + ] + } + ] + } + ], "AutofillImproveSubmissionDetectionV2": [ { "platforms": [ @@ -2267,10 +2350,11 @@ ] } ], - "AutofillLogDeduplicationMetrics": [ + "AutofillLogUKMEventsWithSampleRate": [ { "platforms": [ "android", + "android_weblayer", "chromeos", "ios", "linux", @@ -2281,17 +2365,16 @@ { "name": "Enabled", "enable_features": [ - "AutofillLogDeduplicationMetrics" + "AutofillLogUKMEventsWithSampleRate" ] } ] } ], - "AutofillLogUKMEventsWithSampleRate": [ + "AutofillModelPredictions": [ { "platforms": [ "android", - "android_weblayer", "chromeos", "ios", "linux", @@ -2301,19 +2384,22 @@ "experiments": [ { "name": "Enabled", + "params": { + "model_active": "false" + }, "enable_features": [ - "AutofillLogUKMEventsWithSampleRate" + "AutofillModelPredictions" ] } ] } ], - "AutofillModelPredictions": [ + "AutofillOptimizeFormExtraction": [ { "platforms": [ "android", + "android_webview", "chromeos", - "ios", "linux", "mac", "windows" @@ -2321,11 +2407,8 @@ "experiments": [ { "name": "Enabled", - "params": { - "model_active": "false" - }, "enable_features": [ - "AutofillModelPredictions" + "AutofillOptimizeFormExtraction" ] } ] @@ -2801,26 +2884,6 @@ ] } ], - "BackForwardCacheBroadcastChannel": [ - { - "platforms": [ - "android", - "android_webview", - "fuchsia", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "BFCacheOpenBroadcastChannel" - ] - } - ] - } - ], "BackForwardCacheForPageWithCacheControlNotStoredHeader": [ { "platforms": [ @@ -3005,26 +3068,6 @@ ] } ], - "BackForwardCacheSensors": [ - { - "platforms": [ - "android", - "android_webview", - "fuchsia", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "AllowSensorsToEnterBfcache" - ] - } - ] - } - ], "BackForwardTransitions": [ { "platforms": [ @@ -3039,7 +3082,9 @@ }, "enable_features": [ "BackForwardTransitions", - "MirrorBackForwardGesturesInRTL" + "CompressBitmapAtBackgroundPriority", + "MirrorBackForwardGesturesInRTL", + "NativePageTransitionHardwareCapture" ], "disable_features": [ "IPH_RtlGestureNavigation" @@ -3052,7 +3097,9 @@ ], "disable_features": [ "BackForwardTransitions", - "IPH_RtlGestureNavigation" + "CompressBitmapAtBackgroundPriority", + "IPH_RtlGestureNavigation", + "NativePageTransitionHardwareCapture" ] }, { @@ -3067,8 +3114,10 @@ }, "enable_features": [ "BackForwardTransitions", + "CompressBitmapAtBackgroundPriority", "IPH_RtlGestureNavigation", - "MirrorBackForwardGesturesInRTL" + "MirrorBackForwardGesturesInRTL", + "NativePageTransitionHardwareCapture" ] }, { @@ -3083,8 +3132,10 @@ }, "enable_features": [ "BackForwardTransitions", + "CompressBitmapAtBackgroundPriority", "IPH_RtlGestureNavigation", - "MirrorBackForwardGesturesInRTL" + "MirrorBackForwardGesturesInRTL", + "NativePageTransitionHardwareCapture" ] } ] @@ -3377,6 +3428,27 @@ ] } ], + "BookmarksUseBinaryTreeInTitledUrlIndex": [ + { + "platforms": [ + "android", + "chromeos", + "chromeos_lacros", + "ios", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "BookmarksUseBinaryTreeInTitledUrlIndex" + ] + } + ] + } + ], "BoostRenderProcessForLoading": [ { "platforms": [ @@ -3394,6 +3466,7 @@ "prioritize_prerendering": "false", "prioritize_prerendering_only": "false", "prioritize_renderer_initiated": "true", + "prioritize_restore": "false", "target_urls": "[]" }, "enable_features": [ @@ -3585,6 +3658,21 @@ ] } ], + "BusyLoopOnMainThread": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "BusyLoopOnMainThread" + ] + } + ] + } + ], "CCTEarlyNav": [ { "platforms": [ @@ -3875,28 +3963,10 @@ ] } ], - "CastCertificateRevocation": [ + "CastMirroringPlayoutDelayChromeOS": [ { "platforms": [ - "chromeos", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "CastCertificateRevocation" - ] - } - ] - } - ], - "CastMirroringPlayoutDelayChromeOS": [ - { - "platforms": [ - "chromeos" + "chromeos" ], "experiments": [ { @@ -4118,6 +4188,21 @@ ] } ], + "CheckWebAppExistenceAsync": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "CheckWebAppExistenceAsync" + ] + } + ] + } + ], "ChromeCartDomBasedHeuristics": [ { "platforms": [ @@ -4762,14 +4847,11 @@ ], "experiments": [ { - "name": "Enabled5MinutesKillDelay", + "name": "EnabledZeroProtectedDiscards_20250124", "params": { - "critical_threshold_percentage": "800", - "priority_app_lmk_delay_list": "com.mojang.minecraftpe,com.cisco.anyconnect.vpn.android.avf,com.cisco.anyconnect.vpn.android.avf:nchs,com.cisco.anyconnect.vpn.android.avf:umbrella,zscaler.com.zschromeosapp,net.openvpn.openvpn,net.openvpn.openvpn:openvpn_service,com.checkpoint.VPN,com.fortinet.forticlient_vpn,com.fast.free.unblock.secure.vpn,com.zscaler.doeprod4522", - "priority_app_lmk_delay_sec": "300" + "critical_protected_threshold_percentage": "0" }, "enable_features": [ - "ArcPriorityAppLmkDelay", "ChromeOSMemoryPressureSignalStudyArc" ] } @@ -4783,8 +4865,11 @@ ], "experiments": [ { - "name": "Disabled", - "disable_features": [ + "name": "EnabledZeroProtectedDiscards_20250124", + "params": { + "critical_protected_threshold_percentage": "0" + }, + "enable_features": [ "ChromeOSMemoryPressureSignalStudyNonArc" ] } @@ -4806,36 +4891,6 @@ ] } ], - "ChromeOSOobePersonalizedOnboarding": [ - { - "platforms": [ - "chromeos" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "OobePersonalizedOnboarding" - ] - } - ] - } - ], - "ChromeOSOobeSplitModifierKeyboard": [ - { - "platforms": [ - "chromeos" - ], - "experiments": [ - { - "name": "Disabled", - "disable_features": [ - "OobeSplitModifierKeyboardInfo" - ] - } - ] - } - ], "ChromeOSPrintingIppUsb": [ { "platforms": [ @@ -5054,6 +5109,7 @@ "enable_features": [ "EnableLensOverlay", "IPH_iOSLensOverlayEntrypointTip", + "LensClearcutLoggerFastQosEnabled", "LensOverlayEnableLocationBarEntrypoint" ] } @@ -5148,6 +5204,24 @@ ] } ], + "ChromnientSidePanelOpenInNewTab": [ + { + "platforms": [ + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "LensOverlaySidePanelOpenInNewTab" + ] + } + ] + } + ], "ChromnientSurvey": [ { "platforms": [ @@ -5259,9 +5333,10 @@ ], "experiments": [ { - "name": "Enabled", + "name": "EnabledV2", "params": { - "max_tiles_number": "1", + "disable_blend": "true", + "enable_v2": "true", "show_see_more": "true", "show_tabs_in_one_module": "true", "use_default_app_filter": "true", @@ -5272,10 +5347,8 @@ ] }, { - "name": "EnabledV2", + "name": "Enabled", "params": { - "disable_blend": "true", - "enable_v2": "true", "max_tiles_number": "1", "show_see_more": "true", "show_tabs_in_one_module": "true", @@ -5304,7 +5377,7 @@ ] } ], - "ClayBlocking": [ + "ClearBrowsingDataAndroidSurvey": [ { "platforms": [ "android" @@ -5313,14 +5386,11 @@ { "name": "Enabled", "params": { - "dialog_timeout_millis": "60000", - "enable_verbose_logging": "true", - "escape_hatch_block_limit": "10", - "max_retries": "2" + "en_site_id": "TmqhVJ5cH0tK1KeaPYj0StW6qFe8", + "probability": "0.0075" }, "enable_features": [ - "ClayBackendConnectionV2", - "ClayBlocking" + "ClearBrowsingDataAndroidSurvey" ] } ] @@ -5438,6 +5508,23 @@ ] } ], + "ClientSideDetectionLlamaForcedTriggerInfoForScamDetection": [ + { + "platforms": [ + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "ClientSideDetectionLlamaForcedTriggerInfoForScamDetection" + ] + } + ] + } + ], "ClientSideDetectionRetryLimit": [ { "platforms": [ @@ -5479,6 +5566,25 @@ ] } ], + "ClientSideDetectionSendLlamaForcedTriggerInfo": [ + { + "platforms": [ + "android", + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "ClientSideDetectionSendLlamaForcedTriggerInfo" + ] + } + ] + } + ], "ClientSideDetectionShowScamVerdictWarning": [ { "platforms": [ @@ -5983,24 +6089,6 @@ ] } ], - "ComposeUpfrontInputModes": [ - { - "platforms": [ - "chromeos", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "ComposeUpfrontInputModes" - ] - } - ] - } - ], "CompositeBackgroundColorAnimation": [ { "platforms": [ @@ -6168,6 +6256,24 @@ ] } ], + "ContentUsesBrowserThemeColorMode": [ + { + "platforms": [ + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "ContentUsesBrowserThemeColorMode" + ] + } + ] + } + ], "ContextualSearchBox": [ { "platforms": [ @@ -6178,11 +6284,13 @@ ], "experiments": [ { - "name": "Enabled_Teamfood", + "name": "Enabled_InnerHtml", "params": { "file-upload-limit-bytes": "200000000", "send-page-url-for-contextualization": "true", - "use-inner-text-as-context": "true", + "show-contextual-searchbox-ghost-loader-loading-state": "true", + "use-inner-html-as-context": "true", + "use-inner-text-as-context": "false", "use-pdf-interaction-type": "true", "use-pdf-vit-param": "true", "use-pdfs-as-context": "true", @@ -6300,21 +6408,6 @@ ] } ], - "CrOSAudioHfpMicSrToggle": [ - { - "platforms": [ - "chromeos" - ], - "experiments": [ - { - "name": "Enabled_20240625", - "enable_features": [ - "AudioHFPMicSRToggle" - ] - } - ] - } - ], "CrOSAudioSidetoneAndMicIndicator": [ { "platforms": [ @@ -6384,7 +6477,14 @@ ], "experiments": [ { - "name": "Preperiod_Enabled_NonDogfood" + "name": "Preperiod_Enabled_NonDogfood", + "enable_features": [ + "LinkLayerPrivacy" + ], + "min_os_version": "16151.0.0", + "hardware_classes": [ + "brya" + ] } ] } @@ -6937,6 +7037,26 @@ ] } ], + "CreateURLLoaderPipeAsync": [ + { + "platforms": [ + "android", + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "CreateURLLoaderPipeAsync" + ] + } + ] + } + ], "CreditCardInfobarDisplayLength": [ { "platforms": [ @@ -6989,6 +7109,21 @@ ] } ], + "CrosSwitcher": [ + { + "platforms": [ + "chromeos" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "CrosSwitcher" + ] + } + ] + } + ], "CrostiniTerminaDlcForceOta": [ { "platforms": [ @@ -7281,6 +7416,21 @@ ] } ], + "DefaultANGLEVulkan": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "DefaultANGLEVulkan" + ] + } + ] + } + ], "DefaultBrowserPromoAndroid2": [ { "platforms": [ @@ -7390,29 +7540,6 @@ ] } ], - "DeferRendererTasksAfterInput": [ - { - "platforms": [ - "android", - "android_webview", - "chromeos", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled_AllTypes_20241204", - "params": { - "policy": "all-types" - }, - "enable_features": [ - "DeferRendererTasksAfterInput" - ] - } - ] - } - ], "DeferSpeculativeRFHCreation": [ { "platforms": [ @@ -7739,27 +7866,6 @@ ] } ], - "DesktopOmniboxKeywordProvider": [ - { - "platforms": [ - "chromeos", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "enabled", - "params": { - "VitalizeAutocompletedKeywordsScore": "900" - }, - "enable_features": [ - "OmniboxVitalizeAutocompletedKeywords" - ] - } - ] - } - ], "DesktopOmniboxShortcutBoost": [ { "platforms": [ @@ -7898,36 +8004,16 @@ ] } ], - "DetailsStyling": [ + "DeviceIdValidation": [ { "platforms": [ - "android", - "android_webview", - "chromeos", - "linux", - "mac", - "windows" + "chromeos" ], "experiments": [ { "name": "Enabled", "enable_features": [ - "DetailsStyling" - ] - } - ] - } - ], - "DeviceIdValidation": [ - { - "platforms": [ - "chromeos" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "DeviceIdValidation" + "DeviceIdValidation" ] } ] @@ -8075,6 +8161,36 @@ ] } ], + "DisableInstanceLimitDesktop": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "DisableInstanceLimit" + ] + } + ] + } + ], + "DisableListTabSwitcher": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "DisableListTabSwitcher" + ] + } + ] + } + ], "DisableMemoryReclaimerInBackground": [ { "platforms": [ @@ -8091,6 +8207,26 @@ ] } ], + "DisableMojoTaskPerMessage": [ + { + "platforms": [ + "android", + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "MojoTaskPerMessage" + ] + } + ] + } + ], "DisableNonYUVOverlaysFromExo": [ { "platforms": [ @@ -8477,16 +8613,16 @@ ] } ], - "DownloadsMigrateToJobsAPI": [ + "DozeModePowerScheduler": [ { "platforms": [ - "android" + "chromeos" ], "experiments": [ { - "name": "Enabled", - "enable_features": [ - "DownloadsMigrateToJobsAPI" + "name": "Holdback", + "disable_features": [ + "EnableDozeModePowerScheduler" ] } ] @@ -8513,22 +8649,6 @@ ] } ], - "EarlyEstablishGpuChannelAndroid": [ - { - "platforms": [ - "android", - "android_webview" - ], - "experiments": [ - { - "name": "EarlyEstablishGpuChannel", - "enable_features": [ - "EarlyEstablishGpuChannel" - ] - } - ] - } - ], "EdgeToEdgeAndroid": [ { "platforms": [ @@ -8536,11 +8656,12 @@ ], "experiments": [ { - "name": "Enabled_WebOptInAndKeyNativePages_131", + "name": "Enabled_133", "params": { "disable_bottom_controls_stacker_y_offset": "false", "e2e_field_trial_oem_list": "oppo,xiaomi", - "e2e_field_trial_oem_min_versions": "34,34" + "e2e_field_trial_oem_min_versions": "34,34", + "scrollable_when_stacking": "true" }, "enable_features": [ "BottomBrowserControlsRefactor", @@ -8549,27 +8670,40 @@ "DynamicSafeAreaInsets", "DynamicSafeAreaInsetsOnScroll", "EdgeToEdgeBottomChin", + "EdgeToEdgeSafeAreaConstraint", "EdgeToEdgeWebOptIn" ] }, { - "name": "Enabled_BottomChin", + "name": "Enabled_WebOptInAndKeyNativePages_131", "params": { - "disable_bottom_controls_stacker_y_offset": "false" + "disable_bottom_controls_stacker_y_offset": "false", + "e2e_field_trial_oem_list": "oppo,xiaomi", + "e2e_field_trial_oem_min_versions": "34,34" }, "enable_features": [ "BottomBrowserControlsRefactor", "DrawCutoutEdgeToEdge", + "DrawKeyNativeEdgeToEdge", "DynamicSafeAreaInsets", "DynamicSafeAreaInsetsOnScroll", - "EdgeToEdgeBottomChin" + "EdgeToEdgeBottomChin", + "EdgeToEdgeWebOptIn" ] - }, + } + ] + } + ], + "EducationalTipModule": [ + { + "platforms": [ + "android" + ], + "experiments": [ { - "name": "Enabled_DynamicSafeAreaInsetsOnly", + "name": "Enabled", "enable_features": [ - "DynamicSafeAreaInsets", - "DynamicSafeAreaInsetsOnScroll" + "EducationalTipModule" ] } ] @@ -8656,6 +8790,21 @@ ] } ], + "EnableASWebAuthenticationSession": [ + { + "platforms": [ + "ios" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "EnableASWebAuthenticationSession" + ] + } + ] + } + ], "EnableCertManagementUIV2": [ { "platforms": [ @@ -8682,6 +8831,7 @@ { "name": "Enabled", "enable_features": [ + "EnableCertManagementUIV2EditCerts", "EnableCertManagementUIV2Write" ] } @@ -8920,44 +9070,6 @@ ] } ], - "EnableMainFrameOnlyADPFRendererMain": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "EnableMainFrameOnlyADPFRendererMain" - ] - } - ] - } - ], - "EnableOneTapForMaps": [ - { - "platforms": [ - "ios" - ], - "experiments": [ - { - "name": "Enabled_20240709", - "params": { - "OneTapForMapsConsentModeParam": "iph", - "TCAddressOneTap": "true", - "confidence_score_threshold": "0.9963" - }, - "enable_features": [ - "EnableExpKitTextClassifier", - "EnableExpKitTextClassifierAddress", - "EnableOneTapForMaps" - ], - "min_os_version": "16.4.0" - } - ] - } - ], "EnableOverwritingPlaceholderUsernames": [ { "platforms": [ @@ -9046,6 +9158,39 @@ ] } ], + "EnablePrintWatermark": [ + { + "platforms": [ + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Disabled", + "enable_features": [ + "EnablePrintWatermark" + ] + } + ] + } + ], + "EnableRootNsDnsProxy": [ + { + "platforms": [ + "chromeos" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "EnableRootNsDnsProxy" + ] + } + ] + } + ], "EnableSessionSerializationOptimizations": [ { "platforms": [ @@ -9195,27 +9340,6 @@ ] } ], - "EsbAiStringUpdate": [ - { - "platforms": [ - "android", - "chromeos", - "fuchsia", - "ios", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "EsbAiStringUpdate" - ] - } - ] - } - ], "EsbAsASyncedSetting": [ { "platforms": [ @@ -9481,6 +9605,21 @@ ] } ], + "ExternalRateControlForMediaFoundationVideoEncoder": [ + { + "platforms": [ + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "MediaFoundationUseSWBRCForH264Camera" + ] + } + ] + } + ], "ExtremeLightweightUAFDetector": [ { "platforms": [ @@ -9531,6 +9670,24 @@ ] } ], + "FRESignInSecondaryActionLabelUpdate": [ + { + "platforms": [ + "ios" + ], + "experiments": [ + { + "name": "Enabled", + "params": { + "FRESignInSecondaryActionLabelUpdateParam": "StaySignedOut" + }, + "enable_features": [ + "FRESignInSecondaryActionLabelUpdate" + ] + } + ] + } + ], "FastPairHandshakeLongTermRefactor": [ { "platforms": [ @@ -9546,6 +9703,21 @@ ] } ], + "FastPairKeyboards": [ + { + "platforms": [ + "chromeos" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "FastPairKeyboards" + ] + } + ] + } + ], "FasterSplitScreenSetup": [ { "platforms": [ @@ -9678,6 +9850,26 @@ ] } ], + "FencedFramesEnableCrossOriginAutomaticBeaconData": [ + { + "platforms": [ + "android", + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "FencedFramesCrossOriginAutomaticBeaconData" + ] + } + ] + } + ], "FencedFramesEnableReportEventHeaderChanges": [ { "platforms": [ @@ -9811,6 +10003,7 @@ "name": "Enabled_20241119_Dogfood", "params": { "activation_level": "enabled", + "enable_console_logging": "true", "enable_only_if_3pc_blocked": "false", "performance_measurement_rate": "1.0" }, @@ -9904,56 +10097,26 @@ ] } ], - "FocusMode": [ + "FollowOnboarding": [ { "platforms": [ - "chromeos" + "android" ], "experiments": [ { - "name": "FocusModeEnabled", + "name": "Enabled_20221116", + "params": { + "awareness_style": "IPH" + }, "enable_features": [ - "FocusMode" + "WebFeedAwareness", + "WebFeedOnboarding" ] } ] } ], - "FocusModeYTM": [ - { - "platforms": [ - "chromeos" - ], - "experiments": [ - { - "name": "FocusModeYTM", - "enable_features": [ - "FocusModeYTM" - ] - } - ] - } - ], - "FollowOnboarding": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "Enabled_20221116", - "params": { - "awareness_style": "IPH" - }, - "enable_features": [ - "WebFeedAwareness", - "WebFeedOnboarding" - ] - } - ] - } - ], - "FontDataService": [ + "FontDataService": [ { "platforms": [ "windows" @@ -9980,37 +10143,33 @@ ] } ], - "FontationsFontBackend": [ + "ForceSupervisedSigninWithCapabilities": [ { "platforms": [ - "android", - "android_webview", - "chromeos", - "fuchsia", - "linux", - "mac", - "windows" + "android" ], "experiments": [ { "name": "Enabled", "enable_features": [ - "FontationsFontBackend" + "ForceSupervisedSigninWithCapabilities" ] } ] } ], - "ForceSupervisedSigninWithCapabilities": [ + "ForceSupervisedUserReauthenticationForYouTube": [ { "platforms": [ - "android" + "linux", + "mac", + "windows" ], "experiments": [ { "name": "Enabled", "enable_features": [ - "ForceSupervisedSigninWithCapabilities" + "ForceSupervisedUserReauthenticationForYouTube" ] } ] @@ -10112,6 +10271,45 @@ ] } ], + "FusedLocationProviderTuning": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "params": { + "geolocation_request_max_location_age_millis": "2147483647", + "geolocation_request_min_update_interval_millis": "0" + }, + "enable_features": [ + "UseFusedLocationProvider" + ] + } + ] + } + ], + "GCOnArrayBufferAllocationFailure": [ + { + "platforms": [ + "android_webview", + "android", + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "GCOnArrayBufferAllocationFailure" + ] + } + ] + } + ], "GMSCoreEmoji": [ { "platforms": [ @@ -10576,6 +10774,29 @@ ] } ], + "HappinessTrackingBluetoothAudio": [ + { + "platforms": [ + "chromeos" + ], + "experiments": [ + { + "name": "Enabled_20250123", + "params": { + "enabled_for_googlers": "true", + "histogram_name": "ChromeOS.HaTS.BluetoothAudio", + "prob": "0.05", + "survey_cycle_length": "7", + "survey_start_date_ms": "1698332400000", + "trigger_id": "9ymFQS2qm0jBnuKU19R0UaKeWPaL" + }, + "enable_features": [ + "HappinessTrackingBluetoothAudio" + ] + } + ] + } + ], "HappinessTrackingBorealisGames": [ { "platforms": [ @@ -10744,6 +10965,28 @@ ] } ], + "HappinessTrackingSurveysForHistoryEmbeddings": [ + { + "platforms": [ + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "params": { + "en_site_id": "TKWU6DjUi0ugnJ3q1cK0Z69WFqDB", + "probability": "0.5" + }, + "enable_features": [ + "HappinessTrackingSurveysForHistoryEmbeddings" + ] + } + ] + } + ], "HappinessTrackingSystemBatteryLife": [ { "platforms": [ @@ -10876,6 +11119,29 @@ ] } ], + "HatsAudio": [ + { + "platforms": [ + "chromeos" + ], + "experiments": [ + { + "name": "Enabled_20250123", + "params": { + "enabled_for_googlers": "true", + "histogram_name": "ChromeOS.HaTS.Audio", + "prob": "0.01", + "survey_cycle_length": "7", + "survey_start_date_ms": "1642608000000", + "trigger_id": "cVHSWE7RR0jBnuKU19R0ThFKQTU5" + }, + "enable_features": [ + "HappinessTrackingAudio" + ] + } + ] + } + ], "HatsBluetoothRevamp": [ { "platforms": [ @@ -10983,6 +11249,29 @@ ] } ], + "HeapProfilerMobileSamplingRate": [ + { + "platforms": [ + "android", + "ios" + ], + "experiments": [ + { + "name": "Enabled", + "params": { + "browser-sampling-rate-bytes": "10000000", + "gpu-sampling-rate-bytes": "5000000", + "network-sampling-rate-bytes": "10000000", + "renderer-sampling-rate-bytes": "10000000", + "utility-sampling-rate-bytes": "1000000" + }, + "enable_features": [ + "HeapProfilerReporting" + ] + } + ] + } + ], "HeatmapPalmDetectionStudy": [ { "platforms": [ @@ -11043,6 +11332,27 @@ ] } ], + "HistoryEmbeddingsV2Images": [ + { + "platforms": [ + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "params": { + "EnableImagesForResults": "true" + }, + "enable_features": [ + "HistoryEmbeddings" + ] + } + ] + } + ], "HistorySyncAlternativeIllustration": [ { "platforms": [ @@ -11138,6 +11448,21 @@ ] } ], + "HttpsFirstBalancedModeAndroid": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "HttpsFirstBalancedMode" + ] + } + ] + } + ], "HttpsFirstBalancedModeAutoEnable": [ { "platforms": [ @@ -11221,9 +11546,10 @@ ], "experiments": [ { - "name": "Enabled_WithScans_5", + "name": "Enabled_WithThrottling_20250121", "enable_features": [ "AutofillAcrossIframesIos", + "AutofillAcrossIframesIosThrottling", "AutofillAcrossIframesIosTriggerFormExtraction" ] } @@ -11327,69 +11653,6 @@ ] } ], - "IOSContentNotification": [ - { - "platforms": [ - "ios" - ], - "experiments": [ - { - "name": "Enabled_Provisional", - "params": { - "ContentPushNotificationsExperimentType": "3" - }, - "enable_features": [ - "ContentPushNotifications" - ] - }, - { - "name": "Registered_Provisional", - "params": { - "ContentPushNotificationsExperimentType": "6" - }, - "enable_features": [ - "ContentPushNotifications" - ] - }, - { - "name": "Enabled_Promo", - "params": { - "ContentPushNotificationsExperimentType": "1" - }, - "enable_features": [ - "ContentPushNotifications" - ] - }, - { - "name": "Registered_Promo", - "params": { - "ContentPushNotificationsExperimentType": "5" - }, - "enable_features": [ - "ContentPushNotifications" - ] - }, - { - "name": "Enabled_Setuplist", - "params": { - "ContentPushNotificationsExperimentType": "2" - }, - "enable_features": [ - "ContentPushNotifications" - ] - }, - { - "name": "Registered_Setuplist", - "params": { - "ContentPushNotificationsExperimentType": "7" - }, - "enable_features": [ - "ContentPushNotifications" - ] - } - ] - } - ], "IOSCriteriaExperimentEnabled": [ { "platforms": [ @@ -11405,21 +11668,6 @@ ] } ], - "IOSDefaultBrowserBlueDotOnToolsMenuButton": [ - { - "platforms": [ - "ios" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "BlueDotOnToolsMenuButton" - ] - } - ] - } - ], "IOSDefaultBrowserRemindMeLater": [ { "platforms": [ @@ -11435,7 +11683,7 @@ ] } ], - "IOSDisableParcelTracking": [ + "IOSDeleteAllSavedCredentials": [ { "platforms": [ "ios" @@ -11444,7 +11692,7 @@ { "name": "Enabled", "enable_features": [ - "IOSDisableParcelTracking" + "IOSEnableDeleteAllSavedCredentials" ] } ] @@ -11525,21 +11773,6 @@ ] } ], - "IOSDownloadPDFExperience": [ - { - "platforms": [ - "ios" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "DownloadedPDFOpening" - ] - } - ] - } - ], "IOSFastApplicationWillTerminate": [ { "platforms": [ @@ -11645,6 +11878,21 @@ ] } ], + "IOSInactiveTabsIPad": [ + { + "platforms": [ + "ios" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "InactiveTabsIPadFeature" + ] + } + ] + } + ], "IOSIncognitoSoftLock": [ { "platforms": [ @@ -11763,25 +12011,7 @@ "name": "MeasurementsAndViewport_20240419", "enable_features": [ "EnableMeasurementsExperience", - "EnableViewportIntents" - ] - } - ] - } - ], - "IOSModernTabStrip": [ - { - "platforms": [ - "ios" - ], - "experiments": [ - { - "name": "Enabled", - "params": { - "modern-tab-strip-new-tab-button": "dynamic" - }, - "enable_features": [ - "ModernTabStrip" + "EnableViewportIntents" ] } ] @@ -12115,6 +12345,21 @@ ] } ], + "IOSStatelessFormSuggestionController": [ + { + "platforms": [ + "ios" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "StatelessFormSuggestionController" + ] + } + ] + } + ], "IOSTFLiteLanguageDetection": [ { "platforms": [ @@ -12161,7 +12406,7 @@ ] } ], - "IOSTabGroupSynciPhone": [ + "IOSTabGroupSynciPad": [ { "platforms": [ "ios" @@ -12248,9 +12493,9 @@ ], "experiments": [ { - "name": "EnabledWithDBPromoFirstAndSignInRemoved", + "name": "EnabledWithDBPromoFirst", "params": { - "updated-first-run-sequence-param": "3" + "updated-first-run-sequence-param": "1" }, "enable_features": [ "UpdatedFirstRunSequence" @@ -12304,21 +12549,6 @@ ] } ], - "IOSiPadInactiveTabs": [ - { - "platforms": [ - "ios" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "InactiveTabsIPadFeature" - ] - } - ] - } - ], "IPProtectionPhase0": [ { "platforms": [ @@ -12397,17 +12627,19 @@ ] } ], - "IdentityDiscAccountMenu": [ + "IgnoreDiscardAttemptMarker": [ { "platforms": [ - "ios" + "chromeos", + "linux", + "mac", + "windows" ], "experiments": [ { - "name": "IdentityDiscAccountMenu", + "name": "Enabled", "enable_features": [ - "IdentityConfirmationSnackbar", - "IdentityDiscAccountMenu" + "IgnoreDiscardAttemptMarker" ] } ] @@ -12664,6 +12896,25 @@ ] } ], + "IpadZpsSuggestionsLimitIncrease": [ + { + "platforms": [ + "ios" + ], + "experiments": [ + { + "name": "Enabled_ZPS_SUGGESTIONS_LIMIT_INCREASE_WITH_TRENDS", + "params": { + "IpadAdditionalTrendingQueries": "5", + "IpadZPSSuggestionsLimit": "20" + }, + "enable_features": [ + "IpadZeroSuggestMatches" + ] + } + ] + } + ], "IsolatedWebApps": [ { "platforms": [ @@ -12956,25 +13207,6 @@ ] } ], - "KillSpareRenderOnMemoryPressure": [ - { - "platforms": [ - "android", - "chromeos", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "KillSpareRenderOnMemoryPressure" - ] - } - ] - } - ], "KioskHeartbeatsViaERP": [ { "platforms": [ @@ -13044,7 +13276,7 @@ "lcpp_font_url_frequency_threshold": "0.1", "lcpp_max_font_url_count_per_origin": "5", "lcpp_max_font_url_length": "1024", - "lcpp_max_font_url_to_preload": "5" + "lcpp_max_font_url_to_preload": "1" }, "enable_features": [ "LCPPFontURLPredictor" @@ -13058,7 +13290,7 @@ "lcpp_font_url_frequency_threshold": "0.1", "lcpp_max_font_url_count_per_origin": "5", "lcpp_max_font_url_length": "1024", - "lcpp_max_font_url_to_preload": "5" + "lcpp_max_font_url_to_preload": "1" }, "enable_features": [ "LCPPFontURLPredictor" @@ -13081,6 +13313,7 @@ "name": "MediumPriority_20240418", "params": { "lcpp_adjust_image_load_priority": "true", + "lcpp_adjust_image_load_priority_confidence_threshold": "0.0", "lcpp_adjust_image_load_priority_override_first_n_boost": "true", "lcpp_enable_image_load_priority_for_htmlimageelement": "false", "lcpp_enable_perf_improvements": "true", @@ -13172,8 +13405,8 @@ ], "experiments": [ { - "name": "Disabled", - "disable_features": [ + "name": "Enabled", + "enable_features": [ "LanguageDetectionAPI" ] } @@ -13476,21 +13709,6 @@ ] } ], - "LocalPasswordsAndroidAccessLossWarning": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "UnifiedPasswordManagerLocalPasswordsAndroidAccessLossWarning" - ] - } - ] - } - ], "LofnPermissiveUsbPassthrough": [ { "platforms": [ @@ -13553,18 +13771,19 @@ ], "experiments": [ { - "name": "PreviousBest_20240501", + "name": "Enabled", "params": { "delay_async_exec_opt_out_auto_fetch_priority_hint": "false", - "delay_async_exec_opt_out_high_fetch_priority_hint": "false", + "delay_async_exec_opt_out_high_fetch_priority_hint": "true", "delay_async_exec_opt_out_low_fetch_priority_hint": "false", "low_pri_async_exec_cross_site_only": "true", - "low_pri_async_exec_exclude_document_write": "false", + "low_pri_async_exec_disable_when_lcp_not_in_html": "false", + "low_pri_async_exec_exclude_document_write": "true", "low_pri_async_exec_exclude_non_parser_inserted": "false", "low_pri_async_exec_feature_limit": "3s", - "low_pri_async_exec_lower_task_priority": "best_effort", + "low_pri_async_exec_lower_task_priority": "low", "low_pri_async_exec_main_frame_only": "true", - "low_pri_async_exec_target": "both", + "low_pri_async_exec_target": "non_ads", "low_pri_async_exec_timeout": "1s" }, "enable_features": [ @@ -13778,6 +13997,22 @@ ] } ], + "MediaCodecLinearBlock": [ + { + "platforms": [ + "android_webview", + "android" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "MediaCodecBlockModel" + ] + } + ] + } + ], "MediaDeviceIdStoragePartitioning": [ { "platforms": [ @@ -13792,8 +14027,7 @@ { "name": "Enabled", "enable_features": [ - "MediaDeviceIdPartitioning", - "MediaDeviceIdRandomSaltsPerStorageKey" + "MediaDeviceIdPartitioning" ] } ] @@ -14074,6 +14308,22 @@ ] } ], + "MigrateAccountPrefs": [ + { + "platforms": [ + "android", + "ios" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "MigrateAccountPrefs" + ] + } + ] + } + ], "MigrateAlwaysTranslateLanguagesFix": [ { "platforms": [ @@ -14127,21 +14377,6 @@ ] } ], - "MigrateSyncingUserToSignedInAndroid": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "MigrateSyncingUserToSignedIn" - ] - } - ] - } - ], "MojoChannelAssociatedSendUsesRunOrPostTask": [ { "platforms": [ @@ -14304,6 +14539,7 @@ "count": "2" }, "enable_features": [ + "KillSpareRenderOnMemoryPressure", "MultipleSpareRPHs" ] }, @@ -14313,6 +14549,7 @@ "count": "5" }, "enable_features": [ + "KillSpareRenderOnMemoryPressure", "MultipleSpareRPHs" ] } @@ -14600,27 +14837,6 @@ ] } ], - "NewEvSignalsEnabled": [ - { - "platforms": [ - "windows", - "mac", - "linux" - ], - "experiments": [ - { - "name": "Enabled", - "params": { - "DisableFileSystemInfo": "true", - "DisableSettings": "true" - }, - "enable_features": [ - "NewEvSignalsEnabled" - ] - } - ] - } - ], "NewOSCryptAlgorithmForPasswords": [ { "platforms": [ @@ -15851,28 +16067,6 @@ ] } ], - "ParkableImages": [ - { - "platforms": [ - "android", - "chromeos", - "fuchsia", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Both_V4", - "enable_features": [ - "DelayParkingImages", - "ParkableImagesToDisk", - "UseParkableImageSegmentReader" - ] - } - ] - } - ], "ParkableStringsLessAggressiveAndZstd": [ { "platforms": [ @@ -15916,10 +16110,11 @@ ] } ], - "PartitionAllocAdvancedMemorySafetyChecks": [ + "PartitionAllocBackupRefPtr": [ { "platforms": [ "android", + "android_weblayer", "android_webview", "chromeos", "fuchsia", @@ -15931,17 +16126,16 @@ { "name": "Enabled", "params": { - "PartitionAllocSchedulerLoopQuarantineBranchCapacity": "262144" + "enabled-processes": "all-processes" }, "enable_features": [ - "PartitionAllocSchedulerLoopQuarantine", - "PartitionAllocZappingByFreeFlags" + "PartitionAllocBackupRefPtr" ] } ] } ], - "PartitionAllocBackupRefPtr": [ + "PartitionAllocFewerMemoryRegions": [ { "platforms": [ "android", @@ -15956,11 +16150,8 @@ "experiments": [ { "name": "Enabled", - "params": { - "enabled-processes": "all-processes" - }, "enable_features": [ - "PartitionAllocBackupRefPtr" + "PartitionAllocFewerMemoryRegions" ] } ] @@ -16209,6 +16400,31 @@ ] } ], + "PartitionAllocWithAdvancedChecks": [ + { + "platforms": [ + "android", + "android_webview", + "chromeos", + "fuchsia", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "params": { + "PartitionAllocSchedulerLoopQuarantineBranchCapacity": "262144" + }, + "enable_features": [ + "PartitionAllocSchedulerLoopQuarantine", + "PartitionAllocZappingByFreeFlags" + ] + } + ] + } + ], "PartitionNetworkStateByNetworkAnonymizationKey": [ { "platforms": [ @@ -16335,6 +16551,7 @@ "PasswordLeakToggleMove": [ { "platforms": [ + "android", "chromeos", "fuchsia", "linux", @@ -16399,6 +16616,24 @@ ] } ], + "PasswordsSyncErrorMessageAlternatives": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "VersionOne", + "params": { + "version": "1" + }, + "enable_features": [ + "SyncEnablePasswordsSyncErrorMessageAlternative" + ] + } + ] + } + ], "Path2DPaintCache": [ { "platforms": [ @@ -16436,6 +16671,24 @@ ] } ], + "PdfInkSignatures": [ + { + "platforms": [ + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "PdfInk2" + ] + } + ] + } + ], "PdfOutOfProcessIframe": [ { "platforms": [ @@ -16471,6 +16724,24 @@ ] } ], + "PdfUseShowSaveFilePicker": [ + { + "platforms": [ + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "PdfUseShowSaveFilePicker" + ] + } + ] + } + ], "PdfUseSkiaRenderer": [ { "platforms": [ @@ -16541,8 +16812,6 @@ { "name": "Enabled", "enable_features": [ - "EarlyEstablishGpuChannel", - "EstablishGpuChannelAsync", "ExpandedPrefetchRange", "FledgeEnableWALForInterestGroupStorage", "MojoBindingsInlineSLS", @@ -16560,8 +16829,6 @@ { "name": "Enabled", "enable_features": [ - "EarlyEstablishGpuChannel", - "EstablishGpuChannelAsync", "FledgeEnableWALForInterestGroupStorage", "MojoBindingsInlineSLS", "NumberOfCoresWithCpuSecurityMitigation", @@ -16581,8 +16848,6 @@ { "name": "Enabled", "enable_features": [ - "EarlyEstablishGpuChannel", - "EstablishGpuChannelAsync", "FledgeEnableWALForInterestGroupStorage", "MojoBindingsInlineSLS", "ReduceCpuUtilization2", @@ -16729,12 +16994,30 @@ ] }, { - "name": "LegacyPrompt", - "params": { - "PermissionElementPromptPositioningParam": "legacy_prompt" - }, + "name": "LegacyPrompt", + "params": { + "PermissionElementPromptPositioningParam": "legacy_prompt" + }, + "enable_features": [ + "PermissionElementPromptPositioning" + ] + } + ] + } + ], + "PermissionsAIv1": [ + { + "platforms": [ + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", "enable_features": [ - "PermissionElementPromptPositioning" + "PermissionsAIv1" ] } ] @@ -16869,6 +17152,26 @@ ] } ], + "PlusAddressSuggestionsOnUsernameFields": [ + { + "platforms": [ + "android", + "chromeos", + "ios", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "PlusAddressSuggestionsOnUsernameFields" + ] + } + ] + } + ], "PlusAddressUserCreatedMultiplePlusAddressesSurvey": [ { "platforms": [ @@ -16962,11 +17265,7 @@ "PlusAddressAndroidOpenGmsCoreManagementPage", "PlusAddressFallbackFromContextMenu", "PlusAddressGlobalToggle", - "PlusAddressOfferCreationIfPasswordFieldIsNotVisible", - "PlusAddressOfferCreationOnSingleUsernameForms", "PlusAddressPreallocation", - "PlusAddressRefinedPasswordFormClassification", - "PlusAddressUserOnboardingEnabled", "PlusAddressesEnabled" ] } @@ -17001,15 +17300,14 @@ "platforms": [ "android", "chromeos", - "ios", "linux", "mac", "windows" ], "experiments": [ { - "name": "Enabled", - "enable_features": [ + "name": "Holdback", + "disable_features": [ "PolicyBlocklistProceedUntilResponse" ] } @@ -17238,10 +17536,10 @@ ], "experiments": [ { - "name": "Enabled_20241023", + "name": "Enabled_20250129", "params": { "PrefetchReusableUseNewWaitLoop": "true", - "prefetch_reusable_body_size_limit": "65536" + "prefetch_reusable_body_size_limit": "4194304" }, "enable_features": [ "PrefetchReusable" @@ -17617,22 +17915,26 @@ ] } ], - "PrivacyHubGeolocation": [ + "PrivacyGuideAiSettings": [ { "platforms": [ - "chromeos" + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" ], "experiments": [ { "name": "Enabled", "enable_features": [ - "CrosPrivacyHub" + "PrivacyGuideAiSettings" ] } ] } ], - "PrivacyHubV2-3": [ + "PrivacyHubGeolocation": [ { "platforms": [ "chromeos" @@ -17641,7 +17943,7 @@ { "name": "Enabled", "enable_features": [ - "CrosBlockWarnings" + "CrosPrivacyHub" ] } ] @@ -17707,7 +18009,6 @@ }, "enable_features": [ "AllowURNsInIframes", - "AttributionReportingCrossAppWeb", "BiddingAndScoringDebugReportingAPI", "BrowsingTopics", "FencedFrames", @@ -17761,6 +18062,33 @@ ] } ], + "PrivacySandboxAdsNoticeCCTSurvey": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "params": { + "accepted-trigger-rate": "1.0", + "decline-trigger-rate": "1.0", + "eea-accepted-trigger-id": "EHJUDsZQd0ugnJ3q1cK0Ru5GreU3", + "eea-control-trigger-id": "EHJUDsZQd0ugnJ3q1cK0Ru5GreU3", + "eea-declined-trigger-id": "EHJUDsZQd0ugnJ3q1cK0Ru5GreU3", + "probability": "1.0", + "row-acknowledged-trigger-id": "EHJUDsZQd0ugnJ3q1cK0Ru5GreU3", + "row-control-trigger-id": "EHJUDsZQd0ugnJ3q1cK0Ru5GreU3", + "survey-app-id": "com.google.android.googlequicksearchbox", + "survey-delay-ms": "20000" + }, + "enable_features": [ + "PrivacySandboxCctAdsNoticeSurvey" + ] + } + ] + } + ], "PrivacySandboxAllowPromptForBlocked3PCookies": [ { "platforms": [ @@ -17781,6 +18109,26 @@ ] } ], + "PrivacySandboxEqualizedPromptButtons": [ + { + "platforms": [ + "android", + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "PrivacySandboxEqualizedPromptButtons" + ] + } + ] + } + ], "PrivacySandboxInternalsDevUI": [ { "platforms": [ @@ -18010,6 +18358,23 @@ ] } ], + "ProgressiveAccessibility": [ + { + "platforms": [ + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "ProgressiveAccessibility" + ] + } + ] + } + ], "ProjectorUseDVSPlaybackEndpoint": [ { "platforms": [ @@ -18057,6 +18422,25 @@ ] } ], + "ProtectedAudienceAuctionDownloaderStaleWhileRevalidate": [ + { + "platforms": [ + "android", + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "FledgeAuctionDownloaderStaleWhileRevalidate" + ] + } + ] + } + ], "ProtectedAudienceBAndAPrivateAggregationAndSampleDebugReports": [ { "platforms": [ @@ -18115,7 +18499,7 @@ ] } ], - "ProtectedAudienceBAndATriggeredUpdates": [ + "ProtectedAudienceBidderUseBalancingThreadSelector": [ { "platforms": [ "android", @@ -18128,7 +18512,7 @@ { "name": "Enabled", "enable_features": [ - "EnableBandATriggeredUpdates" + "FledgeBidderUseBalancingThreadSelector" ] } ] @@ -18156,8 +18540,8 @@ "ProtectedAudienceEagerJSCompilation": [ { "platforms": [ + "android", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -18327,7 +18711,7 @@ ] } ], - "ProtectedAudiencesEnableBandAKAnonEnforcement": [ + "ProtectedAudienceTrustedSignalsKVv1CreativeScanning": [ { "platforms": [ "android", @@ -18340,13 +18724,13 @@ { "name": "Enabled", "enable_features": [ - "EnableBandAKAnonEnforcement" + "FledgeTrustedSignalsKVv1CreativeScanning" ] } ] } ], - "ProtectedAudiencesHeaderDirectFromSellerSignalsStudy": [ + "ProtectedAudiencesEnableBandAKAnonEnforcement": [ { "platforms": [ "android", @@ -18359,13 +18743,13 @@ { "name": "Enabled", "enable_features": [ - "FledgeDirectFromSellerSignalsHeaderAdSlot" + "EnableBandAKAnonEnforcement" ] } ] } ], - "ProtectedAudiencesKAnonymityEnforcementStudy": [ + "ProtectedAudiencesHeaderDirectFromSellerSignalsStudy": [ { "platforms": [ "android", @@ -18378,19 +18762,17 @@ { "name": "Enabled", "enable_features": [ - "FledgeConsiderKAnonymity", - "FledgeEnforceKAnonymity" + "FledgeDirectFromSellerSignalsHeaderAdSlot" ] } ] } ], - "ProtectedAudiencesSellerNonce": [ + "ProtectedAudiencesKAnonymityEnforcementStudy": [ { "platforms": [ "android", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -18399,7 +18781,8 @@ { "name": "Enabled", "enable_features": [ - "FledgeSellerNonce" + "FledgeConsiderKAnonymity", + "FledgeEnforceKAnonymity" ] } ] @@ -18647,30 +19030,6 @@ ] } ], - "ReactivePrefetchDesktop": [ - { - "platforms": [ - "chromeos", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "EnabledWithPreconnect_20240916", - "params": { - "use_predictions": "true" - }, - "enable_features": [ - "LoadingPredictorUseOptimizationGuide" - ], - "disable_features": [ - "LoadingPredictorPrefetch" - ] - } - ] - } - ], "ReadAloudAppMenuIPH": [ { "platforms": [ @@ -18894,6 +19253,30 @@ ] } ], + "RedWarningSurvey": [ + { + "platforms": [ + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "RedInterstitial_20241212", + "params": { + "RedWarningSurveyDidProceedFilter": "TRUE,FALSE", + "RedWarningSurveyTriggerId": "ZdMdCoDc50ugnJ3q1cK0VwqVnKb6", + "probability": "1.0" + }, + "enable_features": [ + "RedWarningSurvey" + ] + } + ] + } + ], "ReduceAcceptLanguage": [ { "platforms": [ @@ -19090,6 +19473,26 @@ ] } ], + "RemoveCancelledScriptedIdleTasks": [ + { + "platforms": [ + "android_webview", + "android", + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "RemoveCancelledScriptedIdleTasks" + ] + } + ] + } + ], "RemoveDataUrlInSvgUse": [ { "platforms": [ @@ -19367,6 +19770,37 @@ ] } ], + "ResamplingScrollEvents": [ + { + "platforms": [ + "android", + "chromeos", + "windows" + ], + "experiments": [ + { + "name": "Latency375", + "params": { + "latency": "0.375", + "mode": "frames" + }, + "enable_features": [ + "ResamplingScrollEventsExperimentalPrediction" + ] + }, + { + "name": "Latency500", + "params": { + "latency": "0.5", + "mode": "frames" + }, + "enable_features": [ + "ResamplingScrollEventsExperimentalPrediction" + ] + } + ] + } + ], "ResolutionBasedDecoderPriority": [ { "platforms": [ @@ -19472,26 +19906,6 @@ ] } ], - "RunPerformanceManagerOnMainThreadSync": [ - { - "platforms": [ - "android", - "android_webview", - "chromeos", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "RunPerformanceManagerOnMainThreadSync" - ] - } - ] - } - ], "RustyPng": [ { "platforms": [ @@ -19725,55 +20139,17 @@ "chromeos", "fuchsia", "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "params": { - "background-password-check-interval": "30d" - }, - "enable_features": [ - "SafetyHub" - ] - } - ] - }, - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "EnabledWithHats", - "params": { - "background-password-check-interval-in-days": "1", - "probability": "0.5", - "survey": "safety-hub-android-survey", - "trigger_id": "BqU7h7abt0tK1KeaPYj0WkmwAz4h" - }, - "enable_features": [ - "SafetyHub", - "SafetyHubAndroidOrganicSurvey", - "SafetyHubAndroidSurvey", - "SafetyHubAndroidSurveyV2", - "SafetyHubFollowup" - ] - } - ] - } - ], - "SafetyHubAndroid": [ - { - "platforms": [ - "android" + "mac", + "windows" ], "experiments": [ { "name": "Enabled", + "params": { + "background-password-check-interval": "30d" + }, "enable_features": [ - "RecordPermissionExpirationTimestamps" + "SafetyHub" ] } ] @@ -19826,6 +20202,25 @@ ] } ], + "SafetyHubServicesOnStartUp": [ + { + "platforms": [ + "chromeos", + "fuchsia", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "SafetyHubServicesOnStartUp" + ] + } + ] + } + ], "SavePasswordHashFromProfilePicker": [ { "platforms": [ @@ -20787,6 +21182,21 @@ ] } ], + "ScannerDogfood": [ + { + "platforms": [ + "chromeos" + ], + "experiments": [ + { + "name": "Enabled_Dogfood", + "enable_features": [ + "ScannerDogfood" + ] + } + ] + } + ], "SchedQoS": [ { "platforms": [ @@ -21018,13 +21428,10 @@ ] } ], - "ScriptStreamingForNonHTTP": [ + "ScrimForBrowserWindowModal": [ { "platforms": [ - "android", - "android_webview", "chromeos", - "fuchsia", "linux", "mac", "windows" @@ -21033,26 +21440,25 @@ { "name": "Enabled", "enable_features": [ - "ScriptStreamingForNonHTTP" + "ScrimForBrowserWindowModal" ] - }, + } + ] + } + ], + "ScrimForTabModal": [ + { + "platforms": [ + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ { - "name": "Enabled_CodeCache", - "params": { - "RestrictedWebUICodeCacheResources": "/new_tab_page.js,/shared.rollup.js,/lit/v3_0/lit.rollup.js,/mojo/mojo/public/js/bindings.js,/polymer/v3_0/polymer/polymer_bundled.min.js,/new_tab_page.mojom-webui.js,/cr_components/searchbox/searchbox.mojom-webui.js,/cr_components/most_visited/most_visited.mojom-webui.js,/lazy_load.js,/tab_search.js" - }, + "name": "Enabled", "enable_features": [ - "RestrictedWebUICodeCache", - "ScriptStreamingForNonHTTP", - "WebUICodeCache" - ] - }, - { - "name": "Disabled", - "disable_features": [ - "RestrictedWebUICodeCache", - "ScriptStreamingForNonHTTP", - "WebUICodeCache" + "ScrimForTabModal" ] } ] @@ -21145,6 +21551,56 @@ ] } ], + "SearchEnginePreconnectInterval": [ + { + "platforms": [ + "android", + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "EnabledWith50_20250114", + "params": { + "preconnect_interval": "50" + }, + "enable_features": [ + "SearchEnginePreconnectInterval" + ] + }, + { + "name": "EnabledWith40_20250114", + "params": { + "preconnect_interval": "40" + }, + "enable_features": [ + "SearchEnginePreconnectInterval" + ] + }, + { + "name": "EnabledWith30_20250114", + "params": { + "preconnect_interval": "30" + }, + "enable_features": [ + "SearchEnginePreconnectInterval" + ] + }, + { + "name": "EnabledWith20_20250114", + "params": { + "preconnect_interval": "20" + }, + "enable_features": [ + "SearchEnginePreconnectInterval" + ] + } + ] + } + ], "SearchInCCT": [ { "platforms": [ @@ -21240,27 +21696,6 @@ ] } ], - "SecureTimeCertificateVerification": [ - { - "platforms": [ - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "params": { - "FetchBehavior": "background-and-on-demand" - }, - "enable_features": [ - "CertVerificationNetworkTime", - "NetworkTimeServiceQuerying" - ] - } - ] - } - ], "SecureTimeCertificateVerificationAndroid": [ { "platforms": [ @@ -21642,6 +22077,47 @@ ] } ], + "ServiceWorkerSrcdocSupport": [ + { + "platforms": [ + "android", + "android_webview", + "chromeos", + "fuchsia", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "ServiceWorkerSrcdocSupport" + ] + } + ] + } + ], + "ServiceWorkerStaticRouterRaceNetworkRequestPerformanceImprovement": [ + { + "platforms": [ + "android", + "chromeos", + "fuchsia", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "ServiceWorkerStaticRouterRaceNetworkRequestPerformanceImprovement" + ] + } + ] + } + ], "SettingSearchExplorationHaTS": [ { "platforms": [ @@ -21793,6 +22269,26 @@ ] } ], + "SharingDisableVapid": [ + { + "platforms": [ + "android", + "chromeos", + "ios", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "SharingDisableVapid" + ] + } + ] + } + ], "SharingHubDesktopScreenshots": [ { "platforms": [ @@ -21861,6 +22357,35 @@ ] } ], + "ShowWarningsForSuspiciousNotifications": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "EnabledWithDefaultButtonPlacement", + "params": { + "ShowWarningsForSuspiciousNotificationsScoreThreshold": "100", + "ShowWarningsForSuspiciousNotificationsShouldSwapButtons": "false" + }, + "enable_features": [ + "ShowWarningsForSuspiciousNotifications" + ] + }, + { + "name": "EnabledWithButtonSwap", + "params": { + "ShowWarningsForSuspiciousNotificationsScoreThreshold": "100", + "ShowWarningsForSuspiciousNotificationsShouldSwapButtons": "true" + }, + "enable_features": [ + "ShowWarningsForSuspiciousNotifications" + ] + } + ] + } + ], "SidePanelCompanionDesktopM116Plus": [ { "platforms": [ @@ -21963,40 +22488,42 @@ ] } ], - "SigninInterceptSimpleButtons": [ + "SimdutfBase64Support": [ { "platforms": [ + "android", + "android_webview", + "chromeos", + "chromeos_lacros", "linux", "mac", "windows" ], "experiments": [ { - "name": "Enabled", + "name": "Enabled_SimdutfWithFurtherOptimization", "enable_features": [ - "SigninInterceptSimpleButtons" + "FurtherOptimizeParsingDataUrls", + "SimdutfBase64Support" ] } ] } ], - "SimdutfBase64Support": [ + "SimpleCachePrioritizedCaching": [ { "platforms": [ "android", "android_webview", "chromeos", - "chromeos_lacros", "linux", - "mac", - "windows" + "mac" ], "experiments": [ { - "name": "Enabled_SimdutfWithFurtherOptimization", + "name": "Enabled", "enable_features": [ - "FurtherOptimizeParsingDataUrls", - "SimdutfBase64Support" + "SimpleCachePrioritizedCaching" ] } ] @@ -22089,6 +22616,21 @@ ] } ], + "SkipIsolatedSplitPreload": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "SkipIsolatedSplitPreload" + ] + } + ] + } + ], "SkipPagehideInCommitForDSENavigation": [ { "platforms": [ @@ -22214,43 +22756,81 @@ { "name": "Enabled", "enable_features": [ - "SnapGroup" + "SnapGroup" + ] + } + ] + } + ], + "SnapshotInSwift": [ + { + "platforms": [ + "ios" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "SnapshotInSwift" + ] + } + ] + } + ], + "SonomaAccessibilityActivationRefinements": [ + { + "platforms": [ + "mac" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "SonomaAccessibilityActivationRefinements" ] } ] } ], - "SnapshotInSwift": [ + "SpdyHeadersToHttpResponseUseBuilder": [ { "platforms": [ - "ios" + "android", + "android_webview", + "chromeos", + "linux", + "mac", + "windows" ], "experiments": [ { "name": "Enabled", "enable_features": [ - "SnapshotInSwift" + "SpdyHeadersToHttpResponseUseBuilder" ] } ] } ], - "SonomaAccessibilityActivationRefinements": [ + "SpeculativeFixForServiceWorkerDataInDidStartServiceWorkerContext": [ { "platforms": [ - "mac" + "chromeos", + "linux", + "mac", + "windows" ], "experiments": [ { "name": "Enabled", "enable_features": [ - "SonomaAccessibilityActivationRefinements" + "SpeculativeFixForServiceWorkerDataInDidStartServiceWorkerContext" ] } ] } ], - "SpdyHeadersToHttpResponseUseBuilder": [ + "SpeculativeImageDecodes": [ { "platforms": [ "android", @@ -22264,7 +22844,9 @@ { "name": "Enabled", "enable_features": [ - "SpdyHeadersToHttpResponseUseBuilder" + "PreventDuplicateImageDecodes", + "SendExplicitDecodeRequestsImmediately", + "SpeculativeImageDecodes" ] } ] @@ -22597,6 +23179,23 @@ ] } ], + "SyncMinimizeDeletionsDuringBookmarkBatchUpload": [ + { + "platforms": [ + "android", + "ios" + ], + "experiments": [ + { + "name": "Enabled_WithFastDeletions", + "enable_features": [ + "SyncFastDeletionsDuringBookmarkBatchUpload", + "SyncMinimizeDeletionsDuringBookmarkBatchUpload" + ] + } + ] + } + ], "SysUiHoldbackStudy": [ { "platforms": [ @@ -22710,30 +23309,6 @@ ] } ], - "TabGroupSyncAndroid": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "IPH_TabGroupSyncOnStrip", - "IPH_TabGroupsRemoteGroup", - "IPH_TabGroupsSurface", - "IPH_TabGroupsSurfaceOnHide", - "TabGroupPaneAndroid", - "TabGroupSyncAndroid", - "TabStripGroupCollapseAndroid" - ], - "disable_features": [ - "TabGroupSyncDisableNetworkLayer" - ] - } - ] - } - ], "TabGroupSyncServiceDesktopMigration": [ { "platforms": [ @@ -22831,25 +23406,22 @@ ] } ], - "TabStateFlatBuffer": [ + "TabStripIncognitoMigration": [ { "platforms": [ "android" ], "experiments": [ { - "name": "Enabled_20240713", - "params": { - "migrate_stale_tabs": "true" - }, + "name": "Enabled", "enable_features": [ - "TabStateFlatBuffer" + "TabStripIncognitoMigration" ] } ] } ], - "TabStripIncognitoMigration": [ + "TabSwitcherFullNewTabButton": [ { "platforms": [ "android" @@ -22858,22 +23430,26 @@ { "name": "Enabled", "enable_features": [ - "TabStripIncognitoMigration" + "TabSwitcherFullNewTabButton" ] } ] } ], - "TabSwitcherFullNewTabButton": [ + "TabstripComboButton": [ { "platforms": [ - "android" + "chromeos", + "fuchsia", + "linux", + "mac", + "windows" ], "experiments": [ { "name": "Enabled", "enable_features": [ - "TabSwitcherFullNewTabButton" + "TabstripComboButton" ] } ] @@ -23176,72 +23752,81 @@ ] } ], - "ToastTimeoutStudy": [ + "ToolbarPinning": [ { "platforms": [ "chromeos", + "fuchsia", "linux", "mac", "windows" ], "experiments": [ { - "name": "EnabledWithUpdatedTimeout", - "params": { - "toast_timeout": "8s", - "toast_without_action_timeout": "4s" - }, + "name": "Enabled", "enable_features": [ - "ToastFramework" + "ToolbarPinning" ] } ] } ], - "ToolbarPinning": [ + "TouchpadFastClickStudy": [ { "platforms": [ - "chromeos", - "fuchsia", - "linux", - "mac", - "windows" + "chromeos" ], "experiments": [ { "name": "Enabled", "enable_features": [ - "ToolbarPinning" + "EnableFastTouchpadClick" ] } ] } ], - "TouchpadFastClickStudy": [ + "TraceBinderIpc": [ { "platforms": [ - "chromeos" + "android" ], "experiments": [ { "name": "Enabled", "enable_features": [ - "EnableFastTouchpadClick" + "TraceBinderIpc" ] } ] } ], - "TraceBinderIpc": [ + "TraceSiteInstanceGetProcessCreation": [ { "platforms": [ - "android" + "android", + "chromeos", + "linux", + "mac", + "windows" ], "experiments": [ + { + "name": "EnabledAndCrash", + "params": { + "crash_on_creation": "true" + }, + "enable_features": [ + "TraceSiteInstanceGetProcessCreation" + ] + }, { "name": "Enabled", + "params": { + "crash_on_creation": "false" + }, "enable_features": [ - "TraceBinderIpc" + "TraceSiteInstanceGetProcessCreation" ] } ] @@ -23587,6 +24172,23 @@ ] } ], + "UnoPhase2FastFollowsAndroid": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "UnoForAuto", + "UnoPhase2FollowUp", + "UseHostedDomainForManagementCheckOnSignin" + ] + } + ] + } + ], "UnoPwa": [ { "platforms": [ @@ -23647,6 +24249,7 @@ "platforms": [ "android", "android_webview", + "chromeos", "linux", "mac", "windows" @@ -23738,21 +24341,6 @@ ] } ], - "UseFusedLocationProvider": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "UseFusedLocationProvider" - ] - } - ] - } - ], "UseGMSCoreForBrandingInfo": [ { "platforms": [ @@ -24274,6 +24862,27 @@ ] } ], + "V8SafepointBumpQoSClass": [ + { + "platforms": [ + "mac" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "V8Flag_safepoint_bump_qos_class" + ] + }, + { + "name": "Control", + "disable_features": [ + "V8Flag_safepoint_bump_qos_class" + ] + } + ] + } + ], "V8SeparateGCPhases": [ { "platforms": [ @@ -24487,10 +25096,7 @@ ], "experiments": [ { - "name": "Enabled_2_pending_frames", - "params": { - "PendingFrames": "2" - }, + "name": "Enabled", "enable_features": [ "VSyncAlignedPresent" ] @@ -24534,22 +25140,6 @@ ] } ], - "ValidateNetworkServiceProcessIdentityMac": [ - { - "platforms": [ - "mac" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "MachPortRendezvousValidatePeerRequirements", - "ValidateNetworkServiceProcessIdentity" - ] - } - ] - } - ], "VerifyDidCommitParams": [ { "platforms": [ @@ -25010,6 +25600,22 @@ ] } ], + "WebGPUUseVulkanMemoryModel": [ + { + "platforms": [ + "android", + "chromeos" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "WebGPUUseVulkanMemoryModel" + ] + } + ] + } + ], "WebOtpBackendAuto": [ { "platforms": [ @@ -25535,6 +26141,34 @@ ] } ], + "WebUIInProcessResourceLoading": [ + { + "platforms": [ + "linux", + "windows", + "mac", + "chromeos" + ], + "experiments": [ + { + "name": "Enabled_NoScriptStreaming", + "enable_features": [ + "WebUIInProcessResourceLoading" + ], + "disable_features": [ + "ScriptStreamingForNonHTTP" + ] + }, + { + "name": "Enabled_WithScriptStreaming", + "enable_features": [ + "ScriptStreamingForNonHTTP", + "WebUIInProcessResourceLoading" + ] + } + ] + } + ], "WebUITabStrip": [ { "platforms": [ @@ -25580,6 +26214,21 @@ ] } ], + "WebViewDisableCHIPS": [ + { + "platforms": [ + "android_webview" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "WebViewDisableCHIPS" + ] + } + ] + } + ], "WebViewEnableADPFGpuMain": [ { "platforms": [ @@ -25625,7 +26274,7 @@ ] } ], - "WebViewRecordAppDataDirectorySize": [ + "WebViewPartitionedCookiesExcluded": [ { "platforms": [ "android_webview" @@ -25634,13 +26283,13 @@ { "name": "Enabled", "enable_features": [ - "WebViewRecordAppDataDirectorySize" + "WebViewPartitionedCookiesExcluded" ] } ] } ], - "WebViewSeparateResourceContext": [ + "WebViewPrefetchNativeLibrary": [ { "platforms": [ "android_webview" @@ -25649,13 +26298,28 @@ { "name": "Enabled", "enable_features": [ - "WebViewSeparateResourceContext" + "WebViewPrefetchNativeLibrary" + ] + } + ] + } + ], + "WebViewRecordAppDataDirectorySize": [ + { + "platforms": [ + "android_webview" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "WebViewRecordAppDataDirectorySize" ] } ] } ], - "WebViewSupervisedUserV2": [ + "WebViewSeparateResourceContext": [ { "platforms": [ "android_webview" @@ -25664,7 +26328,7 @@ { "name": "Enabled", "enable_features": [ - "WebViewSupervisedUserSiteBlock" + "WebViewSeparateResourceContext" ] } ] @@ -25903,16 +26567,17 @@ ] } ], - "WinSboxFilterServiceEnvironment": [ + "WinSboxCsrssLockdown": [ { "platforms": [ "windows" ], "experiments": [ { - "name": "Enabled", + "name": "Enabled_with_locale_proxy", "enable_features": [ - "WinSboxFilterServiceEnvironment" + "EnableCsrssLockdown", + "WinSboxProxyLocale" ] } ] @@ -26072,6 +26737,25 @@ ] } ], + "ZeroScrollMetricsUpdate": [ + { + "platforms": [ + "android", + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "ZeroScrollMetricsUpdate" + ] + } + ] + } + ], "iOSCPEPerformanceImprovements": [ { "platforms": [ diff --git a/tools/under-control/src/third_party/blink/public/mojom/use_counter/metrics/web_feature.mojom b/tools/under-control/src/third_party/blink/public/mojom/use_counter/metrics/web_feature.mojom index 59eed74e5..576a5e95c 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 @@ -684,16 +684,16 @@ enum WebFeature { kExecCommandOnInputOrTextarea = 1027, kV8History_ScrollRestoration_AttributeGetter = 1028, kV8History_ScrollRestoration_AttributeSetter = 1029, - kSVG1DOMFilter = 1030, + kObsoleteSVG1DOMFilter = 1030, kOfflineAudioContextStartRendering = 1031, kOfflineAudioContextSuspend = 1032, kOfflineAudioContextResume = 1033, - kSVG1DOMPaintServer = 1035, + kObsoleteSVG1DOMPaintServer = 1035, kSVGSVGElementFragmentSVGView = 1036, kSVGSVGElementFragmentSVGViewElement = 1037, kPresentationConnectionClose = 1038, kSVG1DOMShape = 1039, - kSVG1DOMText = 1040, + kObsoleteSVG1DOMText = 1040, kRTCPeerConnectionConstructorConstraints = 1041, kRTCPeerConnectionConstructorCompliant = 1042, kRTCPeerConnectionCreateOfferLegacyFailureCallback = 1044, @@ -1397,18 +1397,18 @@ enum WebFeature { kMediaStreamConstraintsMediaStreamSourceVideo = 1944, kMediaStreamConstraintsRenderToAssociatedSink = 1945, kMediaStreamConstraintsHotwordEnabled = 1946, - kMediaStreamConstraintsGoogEchoCancellation = 1947, - kMediaStreamConstraintsGoogExperimentalEchoCancellation = 1948, - kMediaStreamConstraintsGoogAutoGainControl = 1949, - kMediaStreamConstraintsGoogExperimentalAutoGainControl = 1950, - kMediaStreamConstraintsGoogNoiseSuppression = 1951, - kMediaStreamConstraintsGoogHighpassFilter = 1952, - kMediaStreamConstraintsGoogTypingNoiseDetection = 1953, - kMediaStreamConstraintsGoogExperimentalNoiseSuppression = 1954, - kMediaStreamConstraintsGoogBeamforming = 1955, - kMediaStreamConstraintsGoogArrayGeometry = 1956, - kMediaStreamConstraintsGoogAudioMirroring = 1957, - kMediaStreamConstraintsGoogDAEchoCancellation = 1958, + kOBSOLETE_MediaStreamConstraintsGoogEchoCancellation = 1947, + kOBSOLETE_MediaStreamConstraintsGoogExperimentalEchoCancellation = 1948, + kMediaStreamConstraintsAutoGainControl = 1949, + kOBSOLETE_MediaStreamConstraintsGoogExperimentalAutoGainControl = 1950, + kMediaStreamConstraintsNoiseSuppression = 1951, + kOBSOLETE_MediaStreamConstraintsGoogHighpassFilter = 1952, + kOBSOLETE_MediaStreamConstraintsGoogTypingNoiseDetection = 1953, + kOBSOLETE_MediaStreamConstraintsGoogExperimentalNoiseSuppression = 1954, + kOBSOLETE_MediaStreamConstraintsGoogBeamforming = 1955, + kOBSOLETE_MediaStreamConstraintsGoogArrayGeometry = 1956, + kOBSOLETE_MediaStreamConstraintsGoogAudioMirroring = 1957, + kOBSOLETE_MediaStreamConstraintsGoogDAEchoCancellation = 1958, kMediaStreamConstraintsGoogNoiseReduction = 1959, // The above items are available in M59 branch. @@ -3936,7 +3936,7 @@ enum WebFeature { kFedCmRpContext = 4580, kEventTimingArtificialPointerupOrClick = 4581, kAbortSignalAny = 4582, - kFedCmIdpSigninStatusApi = 4583, + kOBSOLETE_FedCmIdpSigninStatusApi = 4583, kFedCmIdpSigninStatusJsApi = 4584, kExecCommand = 4585, kWebGPUQueueSubmit = 4586, @@ -4004,11 +4004,11 @@ enum WebFeature { kV8RTCEncodedAudioFrame_SetMetadata_Method = 4645, kV8FetchLaterResult_Activated_AttributeGetter = 4646, kV8Window_FetchLater_Method = 4647, - kFetchLaterInvokeStateDeferred = 4648, - kFetchLaterInvokeStateScheduled = 4649, - kFetchLaterInvokeStateTerminated = 4650, + kOBSOLETE_FetchLaterInvokeStateDeferred = 4648, + kOBSOLETE_FetchLaterInvokeStateScheduled = 4649, + kOBSOLETE_FetchLaterInvokeStateTerminated = 4650, kFetchLaterInvokeStateAborted = 4651, - kFetchLaterInvokeStateActivated = 4652, + kOBSOLETE_FetchLaterInvokeStateActivated = 4652, kFetchLaterErrorUnknownBodyLength = 4653, kFetchLaterErrorQuotaExceeded = 4654, kV8FileSystemHandle_GetCloudIdentifiers_Method = 4655, @@ -4156,7 +4156,7 @@ enum WebFeature { kStorageAccessAPI_hasUnpartitionedCookieAccess = 4790, kStorageAccessAPI_requestStorageAccess_BeyondCookies_cookies = 4791, kVisualViewportScrollEndFired = 4792, - kAttributionReportingCrossAppWebSupportHeader = 4793, + kOBSOLETE_AttributionReportingCrossAppWebSupportHeader = 4793, kV8Element_AriaActiveDescendantElement_AttributeGetter = 4794, kV8Element_AriaActiveDescendantElement_AttributeSetter = 4795, kV8Element_AriaControlsElements_AttributeGetter = 4796, @@ -4347,7 +4347,7 @@ enum WebFeature { kV8ModelGenericSession_Destroy_Method = 4973, kUsedDeviceScaleAdjustment = 4974, kOBSOLETE_DisableThirdPartyStoragePartitioning2 = 4975, - kLinkRelPayment = 4976, + kLinkRelFacilitatedPayment = 4976, kOBSOLETE_V8GPUAdapter_RequestAdapterInfo_Method = 4977, kOBSOLETE_V8ModelGenericSession_Destroy_Method = 4978, kOBSOLETE_V8AITextSession_Execute_Method = 4979, @@ -4539,7 +4539,7 @@ enum WebFeature { kV8AILanguageModel_TokensLeft_AttributeGetter = 5155, kSvgContextFillOrStroke = 5156, kARIAActionsAttribute = 5157, - kResolveToConfigValueCoercedToTrue = 5158, + kOBSOLETE_ResolveToConfigValueCoercedToTrue = 5158, kServiceWorkerStaticRouter_RaceNetworkAndFetchHandlerImprovement = 5159, kHasCapUnits = 5160, kHasRcapUnits = 5161, @@ -4624,14 +4624,75 @@ enum WebFeature { kCanvasTextDirectionSet = 5238, kCanvasTextDirectionSetInherit = 5239, kTopicsAPIImg = 5240, + kMediaSessionEnterPictureInPicture = 5241, + kV8AILanguageDetector_Detect_Method = 5242, + kCharsetAutoDetection = 5243, + kCharsetAutoDetectionISO2022JP = 5244, + kRequestOTRMainFrame = 5245, + kMixedContentOnLocalhost = 5246, + kMixedFrameEmbeddedByLocalhost = 5247, + kV8AILanguageModelCapabilities_MaxTemperature_AttributeGetter = 5248, + kAboutSrcdocToBeControlledByServiceWorker = 5249, + kDisplayNoneComputedInContentVisibilityAutoLockedSubtree = 5250, + kV8AITranslator_SourceLanguage_AttributeGetter = 5251, + kV8AITranslator_TargetLanguage_AttributeGetter = 5252, + kV8AITranslator_Destroy_Method = 5253, + kV8AITranslator_Translate_Method = 5254, + kV8AITranslator_TranslateStreaming_Method = 5255, + kV8AITranslatorFactory_Create_Method = 5256, + kV8AILanguageDetectorFactory_Create_Method = 5257, + kV8AILanguageDetector_Destroy_Method = 5258, + kFetchLaterInvokeStatePending = 5259, + kFetchLaterInvokeStateSent = 5260, + kCSPWithUnsafeHashes = 5261, + kV8AIRewriter_SharedContext_AttributeGetter = 5262, + kV8AIRewriter_Tone_AttributeGetter = 5263, + kV8AIRewriter_Format_AttributeGetter = 5264, + kV8AIRewriter_Length_AttributeGetter = 5265, + kV8AIRewriter_ExpectedInputLanguages_AttributeGetter = 5266, + kV8AIRewriter_ExpectedContextLanguages_AttributeGetter = 5267, + kV8AIRewriter_OutputLanguage_AttributeGetter = 5268, + kV8AIWriter_SharedContext_AttributeGetter = 5269, + kV8AIWriter_Tone_AttributeGetter = 5270, + kV8AIWriter_Format_AttributeGetter = 5271, + kV8AIWriter_Length_AttributeGetter = 5272, + kV8AIWriter_ExpectedInputLanguages_AttributeGetter = 5273, + kV8AIWriter_ExpectedContextLanguages_AttributeGetter = 5274, + kV8AIWriter_OutputLanguage_AttributeGetter = 5275, + kGridAutoFlowColumnDense = 5276, + kGridAutoFlowRowDense = 5277, + kSchedulerPostTaskAbortBeforeRunning = 5278, + kSchedulerPostTaskAsyncAbort = 5279, + kSchedulerPostTaskSelfAbort = 5280, + kV8Window_Window_AttributeGetter = 5281, + kV8Window_Self_AttributeGetter = 5282, + kV8Window_Self_AttributeSetter = 5283, + kV8Window_Location_AttributeGetter = 5284, + kV8Window_Location_AttributeSetter = 5285, + kV8Window_Frames_AttributeGetter = 5286, + kV8Window_Frames_AttributeSetter = 5287, + kV8Window_Length_AttributeGetter = 5288, + kV8Window_Length_AttributeSetter = 5289, + kV8Window_Top_AttributeGetter = 5290, + kV8Window_Opener_AttributeGetter = 5291, + kV8Window_Opener_AttributeSetter = 5292, + kV8Window_Parent_AttributeGetter = 5293, + kV8Window_Parent_AttributeSetter = 5294, + kV8Window_Blur_Method = 5295, + kV8Window_Close_Method = 5296, + kV8Window_Focus_Method = 5297, + kV8Window_PostMessage_Method = 5298, + kWindowProxyIndexedGetter = 5300, + kWindowProxyNamedGetter = 5301 // 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 // spaces or comments in this file. Comments belong next to the usage of // these constants in code. - // Also, run update_use_counter_feature_enum.py in - // chromium/src/tools/metrics/histograms/ to update the UMA mapping. + // Also, run + // chromium/src/tools/metrics/histograms/update_use_counter_feature_enum.py + // to update the UMA mapping. }; -// LINT.ThenChange(//tools/metrics/histograms/enums.xml:FeatureObserver) +// LINT.ThenChange(//tools/metrics/histograms/metadata/blink/enums.xml:FeatureObserver) diff --git a/tools/under-control/src/third_party/blink/renderer/core/css/css_font_feature_values_rule.idl b/tools/under-control/src/third_party/blink/renderer/core/css/css_font_feature_values_rule.idl index 0ee238658..436f78dd7 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/css/css_font_feature_values_rule.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/css/css_font_feature_values_rule.idl @@ -3,7 +3,7 @@ // found in the LICENSE file. // https://drafts.csswg.org/css-fonts-4/#om-fontfeaturevalues - +[Exposed(Window ExposeCSSFontFeatureValuesRule)] interface CSSFontFeatureValuesRule : CSSRule { attribute CSSOMString fontFamily; diff --git a/tools/under-control/src/third_party/blink/renderer/core/css/css_function_declarations.idl b/tools/under-control/src/third_party/blink/renderer/core/css/css_function_declarations.idl new file mode 100755 index 000000000..60c2eab64 --- /dev/null +++ b/tools/under-control/src/third_party/blink/renderer/core/css/css_function_declarations.idl @@ -0,0 +1,9 @@ +// Copyright 2025 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// https://drafts.csswg.org/css-mixins-1/#cssfunctiondeclarations +[Exposed=Window, ImplementedAs=CSSFunctionDeclarationsRule, RuntimeEnabled=CSSFunctions] +interface CSSFunctionDeclarations : CSSRule { + [SameObject, PutForwards=cssText] readonly attribute CSSFunctionDescriptors style; +}; diff --git a/tools/under-control/src/third_party/blink/renderer/core/css/css_function_descriptors.idl b/tools/under-control/src/third_party/blink/renderer/core/css/css_function_descriptors.idl new file mode 100755 index 000000000..323c77dca --- /dev/null +++ b/tools/under-control/src/third_party/blink/renderer/core/css/css_function_descriptors.idl @@ -0,0 +1,9 @@ +// Copyright 2025 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// https://drafts.csswg.org/css-mixins-1/#cssfunctiondescriptors +[Exposed=Window, RuntimeEnabled=CSSFunctions] +interface CSSFunctionDescriptors : CSSStyleDeclaration { + [SetterCallWith=ExecutionContext, RaisesException=Setter] attribute CSSOMString result; +}; diff --git a/tools/under-control/src/third_party/blink/renderer/core/css/css_function_rule.idl b/tools/under-control/src/third_party/blink/renderer/core/css/css_function_rule.idl new file mode 100755 index 000000000..3a531ac8c --- /dev/null +++ b/tools/under-control/src/third_party/blink/renderer/core/css/css_function_rule.idl @@ -0,0 +1,17 @@ +// Copyright 2025 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +dictionary FunctionParameter { + required CSSOMString name; + required CSSOMString type; + CSSOMString defaultValue; +}; + +// https://drafts.csswg.org/css-mixins-1/#cssfunctionrule +[Exposed=Window, RuntimeEnabled=CSSFunctions] +interface CSSFunctionRule : CSSGroupingRule { + readonly attribute CSSOMString name; + sequence getParameters(); + readonly attribute CSSOMString returnType; +}; diff --git a/tools/under-control/src/third_party/blink/renderer/core/dom/abort_signal.idl b/tools/under-control/src/third_party/blink/renderer/core/dom/abort_signal.idl index 7f1d3e0f8..c2c44827b 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/dom/abort_signal.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/dom/abort_signal.idl @@ -26,7 +26,10 @@ readonly attribute boolean aborted; [CallWith=ScriptState] readonly attribute any reason; - [MeasureAs=AbortSignalThrowIfAborted] void throwIfAborted(); + [ + CallWith=Isolate, + MeasureAs=AbortSignalThrowIfAborted + ] void throwIfAborted(); attribute EventHandler onabort; }; diff --git a/tools/under-control/src/third_party/blink/renderer/core/dom/child_node_part.idl b/tools/under-control/src/third_party/blink/renderer/core/dom/child_node_part.idl index 8a9a29bd7..22d365257 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/dom/child_node_part.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/dom/child_node_part.idl @@ -11,5 +11,5 @@ interface ChildNodePart : Part { readonly attribute Node previousSibling; readonly attribute Node nextSibling; readonly attribute FrozenArray children; - [RaisesException] void replaceChildren((Node or DOMString or TrustedScript)... nodes); + [RaisesException] void replaceChildren((Node or DOMString)... nodes); }; diff --git a/tools/under-control/src/third_party/blink/renderer/core/dom/interest_invoker_element.idl b/tools/under-control/src/third_party/blink/renderer/core/dom/interest_invoker_element.idl index 95f754918..e47885cb4 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/dom/interest_invoker_element.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/dom/interest_invoker_element.idl @@ -5,5 +5,4 @@ [RuntimeEnabled=HTMLInterestTargetAttribute] interface mixin InterestInvokerElement { [CEReactions,Reflect=interesttarget] attribute Element? interestTargetElement; - [CEReactions,Reflect=interestaction] attribute DOMString interestAction; }; diff --git a/tools/under-control/src/third_party/blink/renderer/core/events/interest_event.idl b/tools/under-control/src/third_party/blink/renderer/core/events/interest_event.idl index 4b71a4296..2717627bc 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/events/interest_event.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/events/interest_event.idl @@ -7,11 +7,9 @@ Exposed=Window ] interface InterestEvent : Event { constructor(DOMString type, optional InterestEventInit eventInitDict = {}); - readonly attribute Element? invoker; - readonly attribute DOMString action; + readonly attribute Element? source; }; dictionary InterestEventInit : EventInit { - Element? invoker = null; - DOMString action = ""; + Element? source = null; }; 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 041ef7c30..972603d64 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 @@ -32,6 +32,7 @@ #include #include #include +#include #include "base/command_line.h" #include "base/debug/crash_logging.h" @@ -67,7 +68,6 @@ #include "third_party/blink/public/platform/web_runtime_features.h" #include "third_party/blink/public/platform/web_text_input_info.h" #include "third_party/blink/public/platform/web_url_request.h" -#include "third_party/blink/public/platform/web_vector.h" #include "third_party/blink/public/web/web_autofill_client.h" #include "third_party/blink/public/web/web_console_message.h" #include "third_party/blink/public/web/web_element.h" @@ -2537,11 +2537,11 @@ void WebViewImpl::SetPageLifecycleStateInternal( if (restoring_from_bfcache) { DCHECK(page_restore_params); - // Update the history offset and length value, as pages that are kept in + // Update the history index and length value, as pages that are kept in // the back-forward cache do not get notified about updates on these // values, so the currently saved value might be stale. - SetHistoryOffsetAndLength(page_restore_params->pending_history_list_offset, - page_restore_params->current_history_list_length); + SetHistoryIndexAndLength(page_restore_params->pending_history_list_index, + page_restore_params->current_history_list_length); } if (eviction_changed) HookBackForwardCacheEviction(new_state->eviction_enabled); @@ -3579,38 +3579,38 @@ void WebViewImpl::UpdateRendererPreferences( MaybePreloadSystemFonts(GetPage()); } -void WebViewImpl::SetHistoryOffsetAndLength(int32_t history_offset, - int32_t history_length) { - // -1 <= history_offset < history_length <= kMaxSessionHistoryEntries. - DCHECK_LE(-1, history_offset); - DCHECK_LT(history_offset, history_length); +void WebViewImpl::SetHistoryIndexAndLength(int32_t history_index, + int32_t history_length) { + // -1 <= history_index < history_length <= kMaxSessionHistoryEntries. + DCHECK_LE(-1, history_index); + DCHECK_LT(history_index, history_length); DCHECK_LE(history_length, kMaxSessionHistoryEntries); - history_list_offset_ = history_offset; + history_list_index_ = history_index; history_list_length_ = history_length; } void WebViewImpl::SetHistoryListFromNavigation( - int32_t history_offset, + int32_t history_index, std::optional history_length) { if (!history_length.has_value()) { - history_list_offset_ = history_offset; + history_list_index_ = history_index; return; } - SetHistoryOffsetAndLength(history_offset, *history_length); + SetHistoryIndexAndLength(history_index, *history_length); } void WebViewImpl::IncreaseHistoryListFromNavigation() { - // Advance our offset in session history, applying the length limit. + // Advance our index in session history, applying the length limit. // There is now no forward history. - history_list_offset_ = - std::min(history_list_offset_ + 1, kMaxSessionHistoryEntries - 1); - history_list_length_ = history_list_offset_ + 1; + history_list_index_ = + std::min(history_list_index_ + 1, kMaxSessionHistoryEntries - 1); + history_list_length_ = history_list_index_ + 1; } int32_t WebViewImpl::HistoryBackListCount() const { - return std::max(history_list_offset_, 0); + return std::max(history_list_index_, 0); } int32_t WebViewImpl::HistoryForwardListCount() const { @@ -4101,7 +4101,7 @@ void WebViewImpl::DraggableRegionsChanged() { return; } - WebVector web_regions = + std::vector web_regions = MainFrameImpl()->GetDocument().DraggableRegions(); // If |supports_draggable_regions_| is false, the web view should only send diff --git a/tools/under-control/src/third_party/blink/renderer/core/fetch/request_init.idl b/tools/under-control/src/third_party/blink/renderer/core/fetch/request_init.idl index d8ae06d8d..e9feb3fc0 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/fetch/request_init.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/fetch/request_init.idl @@ -32,7 +32,7 @@ dictionary RequestInit { // available in secure contexts, this has to be enforced after the fact // because the SecureContext IDL attribute doesn't affect dictionary members. [RuntimeEnabled=PrivateStateTokens] PrivateToken privateToken; - [RuntimeEnabled=AttributionReportingInterface] AttributionReportingRequestOptions attributionReporting; + [RuntimeEnabled=AttributionReporting] AttributionReportingRequestOptions attributionReporting; // TODO(domfarolino): add support for RequestInit window member. //any window; // can only be set to null }; diff --git a/tools/under-control/src/third_party/blink/renderer/core/frame/permissions_policy_violation_report_body.idl b/tools/under-control/src/third_party/blink/renderer/core/frame/permissions_policy_violation_report_body.idl index cb6c7b053..6f2018e1b 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/frame/permissions_policy_violation_report_body.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/frame/permissions_policy_violation_report_body.idl @@ -13,5 +13,6 @@ readonly attribute unsigned long? columnNumber; readonly attribute DOMString disposition; readonly attribute DOMString? message; + [RuntimeEnabled=PotentialPermissionsPolicyReporting] readonly attribute DOMString? allowAttribute; [CallWith=ScriptState] object toJSON(); }; diff --git a/tools/under-control/src/third_party/blink/renderer/core/frame/window.idl b/tools/under-control/src/third_party/blink/renderer/core/frame/window.idl index da9b8e7c8..1e47b0e21 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/frame/window.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/frame/window.idl @@ -36,11 +36,11 @@ ] interface Window : WindowProperties { // the current browsing context // FIXME: The spec uses the WindowProxy type for this and many other attributes. - [LegacyUnforgeable, CrossOrigin, CachedAccessor=kWindowProxy] readonly attribute Window window; - [Replaceable, CrossOrigin, CachedAccessor=kWindowProxy] readonly attribute Window self; + [LegacyUnforgeable, CrossOrigin, CachedAccessor=kWindowProxy, Measure] readonly attribute Window window; + [Replaceable, CrossOrigin, CachedAccessor=kWindowProxy, Measure] readonly attribute Window self; [LegacyUnforgeable, CachedAccessor=kWindowDocument] readonly attribute Document document; attribute DOMString name; - [PutForwards=href, LegacyUnforgeable, CrossOrigin=(Getter,Setter)] readonly attribute Location location; + [PutForwards=href, LegacyUnforgeable, CrossOrigin=(Getter,Setter), Measure] readonly attribute Location location; [CallWith=ScriptState] readonly attribute CustomElementRegistry customElements; readonly attribute History history; [Replaceable] readonly attribute Navigation navigation; @@ -51,19 +51,19 @@ [Replaceable, MeasureAs=BarPropStatusbar] readonly attribute BarProp statusbar; [Replaceable, MeasureAs=BarPropToolbar] readonly attribute BarProp toolbar; attribute DOMString status; - [CrossOrigin, CallWith=Isolate] void close(); + [CrossOrigin, CallWith=Isolate, Measure] void close(); [MeasureAs=WindowClosed, CrossOrigin] readonly attribute boolean closed; void stop(); - [CrossOrigin, CallWith=Isolate] void focus(); - [CrossOrigin] void blur(); + [CrossOrigin, CallWith=Isolate, Measure] void focus(); + [CrossOrigin, Measure] void blur(); // other browsing contexts - [Replaceable, CrossOrigin, CachedAccessor=kWindowProxy] readonly attribute Window frames; - [Replaceable, CrossOrigin] readonly attribute unsigned long length; - [LegacyUnforgeable, CrossOrigin] readonly attribute Window? top; + [Replaceable, CrossOrigin, CachedAccessor=kWindowProxy, Measure] readonly attribute Window frames; + [Replaceable, CrossOrigin, Measure] readonly attribute unsigned long length; + [LegacyUnforgeable, CrossOrigin, Measure] readonly attribute Window? top; // FIXME: opener should be of type any. - [CrossOrigin, ImplementedAs=openerForBindings, CallWith=Isolate, RaisesException=Setter] attribute any opener; - [Replaceable, CrossOrigin] readonly attribute Window? parent; + [CrossOrigin, ImplementedAs=openerForBindings, CallWith=Isolate, RaisesException=Setter, Measure] attribute any opener; + [Replaceable, CrossOrigin, Measure] readonly attribute Window? parent; [CheckSecurity=ReturnValue] readonly attribute Element? frameElement; [CallWith=Isolate, RaisesException] Window? open(optional USVString url="", optional DOMString target = "_blank", optional [LegacyNullToEmptyString] DOMString features = ""); @@ -90,9 +90,9 @@ [Measure, CallWith=ScriptState] DOMString? prompt(optional DOMString message = "", optional DOMString defaultValue = ""); [Measure, CallWith=ScriptState] void print(); - [CrossOrigin, CallWith=Isolate, RaisesException] void postMessage(any message, USVString targetOrigin, optional sequence transfer = []); + [CrossOrigin, CallWith=Isolate, RaisesException, Measure] void postMessage(any message, USVString targetOrigin, optional sequence transfer = []); - [CrossOrigin, CallWith=Isolate, RaisesException] void postMessage(any message, optional WindowPostMessageOptions options = {}); + [CrossOrigin, CallWith=Isolate, RaisesException, Measure] void postMessage(any message, optional WindowPostMessageOptions options = {}); // WindowOrWorkerGlobalScope mixin // https://html.spec.whatwg.org/C/#windoworworkerglobalscope-mixin diff --git a/tools/under-control/src/third_party/blink/renderer/core/html/canvas/image_data.idl b/tools/under-control/src/third_party/blink/renderer/core/html/canvas/image_data.idl index 1a9cbfd39..381f7439b 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/html/canvas/image_data.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/html/canvas/image_data.idl @@ -43,6 +43,6 @@ typedef (Uint8ClampedArray or Uint16Array or Float32Array) ImageDataArray; readonly attribute unsigned long width; readonly attribute unsigned long height; readonly attribute PredefinedColorSpace colorSpace; - [RuntimeEnabled=CanvasFloatingPoint] readonly attribute ImageDataStorageFormat storageFormat; + [RuntimeEnabled=ImageDataPixelFormat] readonly attribute ImageDataStorageFormat storageFormat; readonly attribute ImageDataArray data; }; diff --git a/tools/under-control/src/third_party/blink/renderer/core/html/canvas/image_data_settings.idl b/tools/under-control/src/third_party/blink/renderer/core/html/canvas/image_data_settings.idl index 38c279ac5..6fe41cb70 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/html/canvas/image_data_settings.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/html/canvas/image_data_settings.idl @@ -19,5 +19,5 @@ enum ImageDataStorageFormat { dictionary ImageDataSettings { PredefinedColorSpace colorSpace; - [RuntimeEnabled=CanvasFloatingPoint] ImageDataStorageFormat storageFormat = "uint8"; + [RuntimeEnabled=ImageDataPixelFormat] ImageDataStorageFormat storageFormat = "uint8"; }; diff --git a/tools/under-control/src/third_party/blink/renderer/core/html/canvas/image_encode_options.idl b/tools/under-control/src/third_party/blink/renderer/core/html/canvas/image_encode_options.idl index dd7202de1..c661d9c59 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/html/canvas/image_encode_options.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/html/canvas/image_encode_options.idl @@ -2,20 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -enum ImageColorSpace { - "srgb", // default - "rec2020", - "display-p3", -}; - -enum ImagePixelFormat { - "uint8", // default - "uint16", -}; - dictionary ImageEncodeOptions { DOMString type = "image/png"; unrestricted double quality = 1.0; - ImageColorSpace colorSpace = "srgb"; - ImagePixelFormat pixelFormat = "uint8"; }; 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 f8cc9a5d8..8ae1c0549 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 @@ -44,9 +44,9 @@ interface TextMetrics { readonly attribute double fontBoundingBoxDescent; readonly attribute double actualBoundingBoxAscent; readonly attribute double actualBoundingBoxDescent; - [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=TextMetricsBaselines] readonly attribute double hangingBaseline; + [RuntimeEnabled=TextMetricsBaselines] readonly attribute double alphabeticBaseline; + [RuntimeEnabled=TextMetricsBaselines] 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/forms/html_input_element.idl b/tools/under-control/src/third_party/blink/renderer/core/html/forms/html_input_element.idl index 0eea55ee0..2913f10aa 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 @@ -113,4 +113,3 @@ enum SelectionMode { "select", "start", "end", "preserve" }; }; HTMLInputElement includes PopoverInvokerElement; -HTMLInputElement includes InterestInvokerElement; diff --git a/tools/under-control/src/third_party/blink/renderer/core/html/html_attributionsrc_element_utils.idl b/tools/under-control/src/third_party/blink/renderer/core/html/html_attributionsrc_element_utils.idl index 1e2f58313..8c975e546 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/html/html_attributionsrc_element_utils.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/html/html_attributionsrc_element_utils.idl @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -[RuntimeEnabled=AttributionReportingInterface] +[RuntimeEnabled=AttributionReporting] interface mixin HTMLAttributionSrcElementUtils { [CEReactions, Reflect, SecureContext] attribute USVString attributionSrc; }; diff --git a/tools/under-control/src/third_party/blink/renderer/core/html/html_script_element.idl b/tools/under-control/src/third_party/blink/renderer/core/html/html_script_element.idl index 589239050..0efd0f2b9 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/html/html_script_element.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/html/html_script_element.idl @@ -44,6 +44,9 @@ // https://w3c.github.io/webappsec-subresource-integrity/#HTMLScriptElement [Reflect] attribute DOMString integrity; + // https://mikewest.github.io/inline-integrity/ + [Reflect, RuntimeEnabled=SignatureBasedInlineIntegrity] attribute DOMString signature; + // https://html.spec.whatwg.org/multipage/scripting.html#dom-script-supports [Measure] static boolean supports(DOMString type); diff --git a/tools/under-control/src/third_party/blink/renderer/core/origin_trials/origin_trial_context.cc b/tools/under-control/src/third_party/blink/renderer/core/origin_trials/origin_trial_context.cc index 3717db2f3..6c7ee6379 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/origin_trials/origin_trial_context.cc +++ b/tools/under-control/src/third_party/blink/renderer/core/origin_trials/origin_trial_context.cc @@ -33,6 +33,7 @@ #include "third_party/blink/renderer/core/workers/worklet_global_scope.h" #include "third_party/blink/renderer/platform/bindings/origin_trial_features.h" #include "third_party/blink/renderer/platform/bindings/script_state.h" +#include "third_party/blink/renderer/platform/instrumentation/resource_coordinator/document_resource_coordinator.h" #include "third_party/blink/renderer/platform/runtime_feature_state/runtime_feature_state_override_context.h" #include "third_party/blink/renderer/platform/weborigin/security_origin.h" #include "third_party/blink/renderer/platform/wtf/text/string_builder.h" diff --git a/tools/under-control/src/third_party/blink/renderer/core/svg/svg_component_transfer_function_element.idl b/tools/under-control/src/third_party/blink/renderer/core/svg/svg_component_transfer_function_element.idl index 919545329..ae72b5200 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/svg/svg_component_transfer_function_element.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/svg/svg_component_transfer_function_element.idl @@ -29,18 +29,18 @@ Exposed=Window ] interface SVGComponentTransferFunctionElement : SVGElement { // Component Transfer Types - [MeasureAs=SVG1DOMFilter] const unsigned short SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN = 0; - [MeasureAs=SVG1DOMFilter] const unsigned short SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY = 1; - [MeasureAs=SVG1DOMFilter] const unsigned short SVG_FECOMPONENTTRANSFER_TYPE_TABLE = 2; - [MeasureAs=SVG1DOMFilter] const unsigned short SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE = 3; - [MeasureAs=SVG1DOMFilter] const unsigned short SVG_FECOMPONENTTRANSFER_TYPE_LINEAR = 4; - [MeasureAs=SVG1DOMFilter] const unsigned short SVG_FECOMPONENTTRANSFER_TYPE_GAMMA = 5; + const unsigned short SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN = 0; + const unsigned short SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY = 1; + const unsigned short SVG_FECOMPONENTTRANSFER_TYPE_TABLE = 2; + const unsigned short SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE = 3; + const unsigned short SVG_FECOMPONENTTRANSFER_TYPE_LINEAR = 4; + const unsigned short SVG_FECOMPONENTTRANSFER_TYPE_GAMMA = 5; - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedEnumeration type; - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumberList tableValues; - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber slope; - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber intercept; - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber amplitude; - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber exponent; - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber offset; + readonly attribute SVGAnimatedEnumeration type; + readonly attribute SVGAnimatedNumberList tableValues; + readonly attribute SVGAnimatedNumber slope; + readonly attribute SVGAnimatedNumber intercept; + readonly attribute SVGAnimatedNumber amplitude; + readonly attribute SVGAnimatedNumber exponent; + readonly attribute SVGAnimatedNumber offset; }; diff --git a/tools/under-control/src/third_party/blink/renderer/core/svg/svg_fe_blend_element.idl b/tools/under-control/src/third_party/blink/renderer/core/svg/svg_fe_blend_element.idl index ed662a9e6..b2dc700cf 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/svg/svg_fe_blend_element.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/svg/svg_fe_blend_element.idl @@ -30,27 +30,27 @@ ] interface SVGFEBlendElement : SVGElement { // Blend Mode Types - [MeasureAs=SVG1DOMFilter] const unsigned short SVG_FEBLEND_MODE_UNKNOWN = 0; - [MeasureAs=SVG1DOMFilter] const unsigned short SVG_FEBLEND_MODE_NORMAL = 1; - [MeasureAs=SVG1DOMFilter] const unsigned short SVG_FEBLEND_MODE_MULTIPLY = 2; - [MeasureAs=SVG1DOMFilter] const unsigned short SVG_FEBLEND_MODE_SCREEN = 3; - [MeasureAs=SVG1DOMFilter] const unsigned short SVG_FEBLEND_MODE_DARKEN = 4; - [MeasureAs=SVG1DOMFilter] const unsigned short SVG_FEBLEND_MODE_LIGHTEN = 5; - [MeasureAs=SVG1DOMFilter] const unsigned short SVG_FEBLEND_MODE_OVERLAY = 6; - [MeasureAs=SVG1DOMFilter] const unsigned short SVG_FEBLEND_MODE_COLOR_DODGE = 7; - [MeasureAs=SVG1DOMFilter] const unsigned short SVG_FEBLEND_MODE_COLOR_BURN = 8; - [MeasureAs=SVG1DOMFilter] const unsigned short SVG_FEBLEND_MODE_HARD_LIGHT = 9; - [MeasureAs=SVG1DOMFilter] const unsigned short SVG_FEBLEND_MODE_SOFT_LIGHT = 10; - [MeasureAs=SVG1DOMFilter] const unsigned short SVG_FEBLEND_MODE_DIFFERENCE = 11; - [MeasureAs=SVG1DOMFilter] const unsigned short SVG_FEBLEND_MODE_EXCLUSION = 12; - [MeasureAs=SVG1DOMFilter] const unsigned short SVG_FEBLEND_MODE_HUE = 13; - [MeasureAs=SVG1DOMFilter] const unsigned short SVG_FEBLEND_MODE_SATURATION = 14; - [MeasureAs=SVG1DOMFilter] const unsigned short SVG_FEBLEND_MODE_COLOR = 15; - [MeasureAs=SVG1DOMFilter] const unsigned short SVG_FEBLEND_MODE_LUMINOSITY = 16; + const unsigned short SVG_FEBLEND_MODE_UNKNOWN = 0; + const unsigned short SVG_FEBLEND_MODE_NORMAL = 1; + const unsigned short SVG_FEBLEND_MODE_MULTIPLY = 2; + const unsigned short SVG_FEBLEND_MODE_SCREEN = 3; + const unsigned short SVG_FEBLEND_MODE_DARKEN = 4; + const unsigned short SVG_FEBLEND_MODE_LIGHTEN = 5; + const unsigned short SVG_FEBLEND_MODE_OVERLAY = 6; + const unsigned short SVG_FEBLEND_MODE_COLOR_DODGE = 7; + const unsigned short SVG_FEBLEND_MODE_COLOR_BURN = 8; + const unsigned short SVG_FEBLEND_MODE_HARD_LIGHT = 9; + const unsigned short SVG_FEBLEND_MODE_SOFT_LIGHT = 10; + const unsigned short SVG_FEBLEND_MODE_DIFFERENCE = 11; + const unsigned short SVG_FEBLEND_MODE_EXCLUSION = 12; + const unsigned short SVG_FEBLEND_MODE_HUE = 13; + const unsigned short SVG_FEBLEND_MODE_SATURATION = 14; + const unsigned short SVG_FEBLEND_MODE_COLOR = 15; + const unsigned short SVG_FEBLEND_MODE_LUMINOSITY = 16; - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedString in1; - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedString in2; - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedEnumeration mode; + readonly attribute SVGAnimatedString in1; + readonly attribute SVGAnimatedString in2; + readonly attribute SVGAnimatedEnumeration mode; }; SVGFEBlendElement includes SVGFilterPrimitiveStandardAttributes; diff --git a/tools/under-control/src/third_party/blink/renderer/core/svg/svg_fe_color_matrix_element.idl b/tools/under-control/src/third_party/blink/renderer/core/svg/svg_fe_color_matrix_element.idl index 50ea924db..ec591a27c 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/svg/svg_fe_color_matrix_element.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/svg/svg_fe_color_matrix_element.idl @@ -29,15 +29,15 @@ Exposed=Window ] interface SVGFEColorMatrixElement : SVGElement { // Color Matrix Types - [MeasureAs=SVG1DOMFilter] const unsigned short SVG_FECOLORMATRIX_TYPE_UNKNOWN = 0; - [MeasureAs=SVG1DOMFilter] const unsigned short SVG_FECOLORMATRIX_TYPE_MATRIX = 1; - [MeasureAs=SVG1DOMFilter] const unsigned short SVG_FECOLORMATRIX_TYPE_SATURATE = 2; - [MeasureAs=SVG1DOMFilter] const unsigned short SVG_FECOLORMATRIX_TYPE_HUEROTATE = 3; - [MeasureAs=SVG1DOMFilter] const unsigned short SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA = 4; + const unsigned short SVG_FECOLORMATRIX_TYPE_UNKNOWN = 0; + const unsigned short SVG_FECOLORMATRIX_TYPE_MATRIX = 1; + const unsigned short SVG_FECOLORMATRIX_TYPE_SATURATE = 2; + const unsigned short SVG_FECOLORMATRIX_TYPE_HUEROTATE = 3; + const unsigned short SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA = 4; - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedString in1; - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedEnumeration type; - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumberList values; + readonly attribute SVGAnimatedString in1; + readonly attribute SVGAnimatedEnumeration type; + readonly attribute SVGAnimatedNumberList values; }; SVGFEColorMatrixElement includes SVGFilterPrimitiveStandardAttributes; diff --git a/tools/under-control/src/third_party/blink/renderer/core/svg/svg_fe_component_transfer_element.idl b/tools/under-control/src/third_party/blink/renderer/core/svg/svg_fe_component_transfer_element.idl index 52a4341ea..caf7f1c84 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/svg/svg_fe_component_transfer_element.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/svg/svg_fe_component_transfer_element.idl @@ -28,7 +28,7 @@ [ Exposed=Window ] interface SVGFEComponentTransferElement : SVGElement { - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedString in1; + readonly attribute SVGAnimatedString in1; }; SVGFEComponentTransferElement includes SVGFilterPrimitiveStandardAttributes; diff --git a/tools/under-control/src/third_party/blink/renderer/core/svg/svg_fe_composite_element.idl b/tools/under-control/src/third_party/blink/renderer/core/svg/svg_fe_composite_element.idl index 525ef250f..d2810ea81 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/svg/svg_fe_composite_element.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/svg/svg_fe_composite_element.idl @@ -29,21 +29,21 @@ Exposed=Window ] interface SVGFECompositeElement : SVGElement { // Composite Operators - [MeasureAs=SVG1DOMFilter] const unsigned short SVG_FECOMPOSITE_OPERATOR_UNKNOWN = 0; - [MeasureAs=SVG1DOMFilter] const unsigned short SVG_FECOMPOSITE_OPERATOR_OVER = 1; - [MeasureAs=SVG1DOMFilter] const unsigned short SVG_FECOMPOSITE_OPERATOR_IN = 2; - [MeasureAs=SVG1DOMFilter] const unsigned short SVG_FECOMPOSITE_OPERATOR_OUT = 3; - [MeasureAs=SVG1DOMFilter] const unsigned short SVG_FECOMPOSITE_OPERATOR_ATOP = 4; - [MeasureAs=SVG1DOMFilter] const unsigned short SVG_FECOMPOSITE_OPERATOR_XOR = 5; - [MeasureAs=SVG1DOMFilter] const unsigned short SVG_FECOMPOSITE_OPERATOR_ARITHMETIC = 6; + const unsigned short SVG_FECOMPOSITE_OPERATOR_UNKNOWN = 0; + const unsigned short SVG_FECOMPOSITE_OPERATOR_OVER = 1; + const unsigned short SVG_FECOMPOSITE_OPERATOR_IN = 2; + const unsigned short SVG_FECOMPOSITE_OPERATOR_OUT = 3; + const unsigned short SVG_FECOMPOSITE_OPERATOR_ATOP = 4; + const unsigned short SVG_FECOMPOSITE_OPERATOR_XOR = 5; + const unsigned short SVG_FECOMPOSITE_OPERATOR_ARITHMETIC = 6; - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedString in2; - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedString in1; - [ImplementedAs=svgOperator, MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedEnumeration operator; - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber k1; - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber k2; - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber k3; - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber k4; + readonly attribute SVGAnimatedString in2; + readonly attribute SVGAnimatedString in1; + [ImplementedAs=svgOperator] readonly attribute SVGAnimatedEnumeration operator; + readonly attribute SVGAnimatedNumber k1; + readonly attribute SVGAnimatedNumber k2; + readonly attribute SVGAnimatedNumber k3; + readonly attribute SVGAnimatedNumber k4; }; SVGFECompositeElement includes SVGFilterPrimitiveStandardAttributes; diff --git a/tools/under-control/src/third_party/blink/renderer/core/svg/svg_fe_convolve_matrix_element.idl b/tools/under-control/src/third_party/blink/renderer/core/svg/svg_fe_convolve_matrix_element.idl index 3538b18c0..c7fc8cf3c 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/svg/svg_fe_convolve_matrix_element.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/svg/svg_fe_convolve_matrix_element.idl @@ -29,22 +29,22 @@ Exposed=Window ] interface SVGFEConvolveMatrixElement : SVGElement { // Edge Mode Values - [MeasureAs=SVG1DOMFilter] const unsigned short SVG_EDGEMODE_UNKNOWN = 0; - [MeasureAs=SVG1DOMFilter] const unsigned short SVG_EDGEMODE_DUPLICATE = 1; - [MeasureAs=SVG1DOMFilter] const unsigned short SVG_EDGEMODE_WRAP = 2; - [MeasureAs=SVG1DOMFilter] const unsigned short SVG_EDGEMODE_NONE = 3; + const unsigned short SVG_EDGEMODE_UNKNOWN = 0; + const unsigned short SVG_EDGEMODE_DUPLICATE = 1; + const unsigned short SVG_EDGEMODE_WRAP = 2; + const unsigned short SVG_EDGEMODE_NONE = 3; - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedString in1; - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedInteger orderX; - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedInteger orderY; - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumberList kernelMatrix; - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber divisor; - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber bias; - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedInteger targetX; - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedInteger targetY; - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedEnumeration edgeMode; - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber kernelUnitLengthX; - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber kernelUnitLengthY; + readonly attribute SVGAnimatedString in1; + readonly attribute SVGAnimatedInteger orderX; + readonly attribute SVGAnimatedInteger orderY; + readonly attribute SVGAnimatedNumberList kernelMatrix; + readonly attribute SVGAnimatedNumber divisor; + readonly attribute SVGAnimatedNumber bias; + readonly attribute SVGAnimatedInteger targetX; + readonly attribute SVGAnimatedInteger targetY; + readonly attribute SVGAnimatedEnumeration edgeMode; + readonly attribute SVGAnimatedNumber kernelUnitLengthX; + readonly attribute SVGAnimatedNumber kernelUnitLengthY; [Measure] readonly attribute SVGAnimatedBoolean preserveAlpha; }; diff --git a/tools/under-control/src/third_party/blink/renderer/core/svg/svg_fe_diffuse_lighting_element.idl b/tools/under-control/src/third_party/blink/renderer/core/svg/svg_fe_diffuse_lighting_element.idl index 593d161e8..1036bc3ff 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/svg/svg_fe_diffuse_lighting_element.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/svg/svg_fe_diffuse_lighting_element.idl @@ -28,11 +28,11 @@ [ Exposed=Window ] interface SVGFEDiffuseLightingElement : SVGElement { - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedString in1; - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber surfaceScale; - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber diffuseConstant; - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber kernelUnitLengthX; - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber kernelUnitLengthY; + readonly attribute SVGAnimatedString in1; + readonly attribute SVGAnimatedNumber surfaceScale; + readonly attribute SVGAnimatedNumber diffuseConstant; + readonly attribute SVGAnimatedNumber kernelUnitLengthX; + readonly attribute SVGAnimatedNumber kernelUnitLengthY; }; SVGFEDiffuseLightingElement includes SVGFilterPrimitiveStandardAttributes; diff --git a/tools/under-control/src/third_party/blink/renderer/core/svg/svg_fe_displacement_map_element.idl b/tools/under-control/src/third_party/blink/renderer/core/svg/svg_fe_displacement_map_element.idl index c535b68e9..4ee5f0290 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/svg/svg_fe_displacement_map_element.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/svg/svg_fe_displacement_map_element.idl @@ -29,17 +29,17 @@ Exposed=Window ] interface SVGFEDisplacementMapElement : SVGElement { // Channel Selectors - [MeasureAs=SVG1DOMFilter] const unsigned short SVG_CHANNEL_UNKNOWN = 0; - [MeasureAs=SVG1DOMFilter] const unsigned short SVG_CHANNEL_R = 1; - [MeasureAs=SVG1DOMFilter] const unsigned short SVG_CHANNEL_G = 2; - [MeasureAs=SVG1DOMFilter] const unsigned short SVG_CHANNEL_B = 3; - [MeasureAs=SVG1DOMFilter] const unsigned short SVG_CHANNEL_A = 4; + const unsigned short SVG_CHANNEL_UNKNOWN = 0; + const unsigned short SVG_CHANNEL_R = 1; + const unsigned short SVG_CHANNEL_G = 2; + const unsigned short SVG_CHANNEL_B = 3; + const unsigned short SVG_CHANNEL_A = 4; - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedString in1; - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedString in2; - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber scale; - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedEnumeration xChannelSelector; - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedEnumeration yChannelSelector; + readonly attribute SVGAnimatedString in1; + readonly attribute SVGAnimatedString in2; + readonly attribute SVGAnimatedNumber scale; + readonly attribute SVGAnimatedEnumeration xChannelSelector; + readonly attribute SVGAnimatedEnumeration yChannelSelector; }; SVGFEDisplacementMapElement includes SVGFilterPrimitiveStandardAttributes; diff --git a/tools/under-control/src/third_party/blink/renderer/core/svg/svg_fe_distant_light_element.idl b/tools/under-control/src/third_party/blink/renderer/core/svg/svg_fe_distant_light_element.idl index 0efa53094..3f0fed12c 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/svg/svg_fe_distant_light_element.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/svg/svg_fe_distant_light_element.idl @@ -28,6 +28,6 @@ [ Exposed=Window ] interface SVGFEDistantLightElement : SVGElement { - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber azimuth; - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber elevation; + readonly attribute SVGAnimatedNumber azimuth; + readonly attribute SVGAnimatedNumber elevation; }; diff --git a/tools/under-control/src/third_party/blink/renderer/core/svg/svg_fe_drop_shadow_element.idl b/tools/under-control/src/third_party/blink/renderer/core/svg/svg_fe_drop_shadow_element.idl index 7766e416c..6da4c9edc 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/svg/svg_fe_drop_shadow_element.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/svg/svg_fe_drop_shadow_element.idl @@ -22,13 +22,13 @@ [ Exposed=Window ] interface SVGFEDropShadowElement : SVGElement { - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedString in1; - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber dx; - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber dy; - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber stdDeviationX; - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber stdDeviationY; + readonly attribute SVGAnimatedString in1; + readonly attribute SVGAnimatedNumber dx; + readonly attribute SVGAnimatedNumber dy; + readonly attribute SVGAnimatedNumber stdDeviationX; + readonly attribute SVGAnimatedNumber stdDeviationY; - [MeasureAs=SVG1DOMFilter] void setStdDeviation(float stdDeviationX, float stdDeviationY); + void setStdDeviation(float stdDeviationX, float stdDeviationY); }; SVGFEDropShadowElement includes SVGFilterPrimitiveStandardAttributes; diff --git a/tools/under-control/src/third_party/blink/renderer/core/svg/svg_fe_gaussian_blur_element.idl b/tools/under-control/src/third_party/blink/renderer/core/svg/svg_fe_gaussian_blur_element.idl index 313924917..ae6298b57 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/svg/svg_fe_gaussian_blur_element.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/svg/svg_fe_gaussian_blur_element.idl @@ -28,11 +28,11 @@ [ Exposed=Window ] interface SVGFEGaussianBlurElement : SVGElement { - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedString in1; - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber stdDeviationX; - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber stdDeviationY; + readonly attribute SVGAnimatedString in1; + readonly attribute SVGAnimatedNumber stdDeviationX; + readonly attribute SVGAnimatedNumber stdDeviationY; - [MeasureAs=SVG1DOMFilter] void setStdDeviation(float stdDeviationX, float stdDeviationY); + void setStdDeviation(float stdDeviationX, float stdDeviationY); }; SVGFEGaussianBlurElement includes SVGFilterPrimitiveStandardAttributes; diff --git a/tools/under-control/src/third_party/blink/renderer/core/svg/svg_fe_image_element.idl b/tools/under-control/src/third_party/blink/renderer/core/svg/svg_fe_image_element.idl index 69340c231..5e7dbb6ca 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/svg/svg_fe_image_element.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/svg/svg_fe_image_element.idl @@ -28,7 +28,7 @@ [ Exposed=Window ] interface SVGFEImageElement : SVGElement { - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedPreserveAspectRatio preserveAspectRatio; + readonly attribute SVGAnimatedPreserveAspectRatio preserveAspectRatio; }; SVGFEImageElement includes SVGFilterPrimitiveStandardAttributes; diff --git a/tools/under-control/src/third_party/blink/renderer/core/svg/svg_fe_merge_node_element.idl b/tools/under-control/src/third_party/blink/renderer/core/svg/svg_fe_merge_node_element.idl index 5cdde1ff4..1752919f7 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/svg/svg_fe_merge_node_element.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/svg/svg_fe_merge_node_element.idl @@ -28,5 +28,5 @@ [ Exposed=Window ] interface SVGFEMergeNodeElement : SVGElement { - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedString in1; + readonly attribute SVGAnimatedString in1; }; diff --git a/tools/under-control/src/third_party/blink/renderer/core/svg/svg_fe_morphology_element.idl b/tools/under-control/src/third_party/blink/renderer/core/svg/svg_fe_morphology_element.idl index d1714bde8..b9dc3598d 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/svg/svg_fe_morphology_element.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/svg/svg_fe_morphology_element.idl @@ -29,14 +29,14 @@ Exposed=Window ] interface SVGFEMorphologyElement : SVGElement { // Morphology Operators - [MeasureAs=SVG1DOMFilter] const unsigned short SVG_MORPHOLOGY_OPERATOR_UNKNOWN = 0; - [MeasureAs=SVG1DOMFilter] const unsigned short SVG_MORPHOLOGY_OPERATOR_ERODE = 1; - [MeasureAs=SVG1DOMFilter] const unsigned short SVG_MORPHOLOGY_OPERATOR_DILATE = 2; + const unsigned short SVG_MORPHOLOGY_OPERATOR_UNKNOWN = 0; + const unsigned short SVG_MORPHOLOGY_OPERATOR_ERODE = 1; + const unsigned short SVG_MORPHOLOGY_OPERATOR_DILATE = 2; - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedString in1; - [ImplementedAs=svgOperator, MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedEnumeration operator; - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber radiusX; - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber radiusY; + readonly attribute SVGAnimatedString in1; + [ImplementedAs=svgOperator] readonly attribute SVGAnimatedEnumeration operator; + readonly attribute SVGAnimatedNumber radiusX; + readonly attribute SVGAnimatedNumber radiusY; }; SVGFEMorphologyElement includes SVGFilterPrimitiveStandardAttributes; diff --git a/tools/under-control/src/third_party/blink/renderer/core/svg/svg_fe_offset_element.idl b/tools/under-control/src/third_party/blink/renderer/core/svg/svg_fe_offset_element.idl index 187b340e7..13feff038 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/svg/svg_fe_offset_element.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/svg/svg_fe_offset_element.idl @@ -28,9 +28,9 @@ [ Exposed=Window ] interface SVGFEOffsetElement : SVGElement { - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedString in1; - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber dx; - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber dy; + readonly attribute SVGAnimatedString in1; + readonly attribute SVGAnimatedNumber dx; + readonly attribute SVGAnimatedNumber dy; }; SVGFEOffsetElement includes SVGFilterPrimitiveStandardAttributes; diff --git a/tools/under-control/src/third_party/blink/renderer/core/svg/svg_fe_point_light_element.idl b/tools/under-control/src/third_party/blink/renderer/core/svg/svg_fe_point_light_element.idl index 9ce287bc7..46e068fdc 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/svg/svg_fe_point_light_element.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/svg/svg_fe_point_light_element.idl @@ -28,7 +28,7 @@ [ Exposed=Window ] interface SVGFEPointLightElement : SVGElement { - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber x; - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber y; - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber z; + readonly attribute SVGAnimatedNumber x; + readonly attribute SVGAnimatedNumber y; + readonly attribute SVGAnimatedNumber z; }; diff --git a/tools/under-control/src/third_party/blink/renderer/core/svg/svg_fe_specular_lighting_element.idl b/tools/under-control/src/third_party/blink/renderer/core/svg/svg_fe_specular_lighting_element.idl index 9a90e14b3..ee9f1d5b2 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/svg/svg_fe_specular_lighting_element.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/svg/svg_fe_specular_lighting_element.idl @@ -28,12 +28,12 @@ [ Exposed=Window ] interface SVGFESpecularLightingElement : SVGElement { - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedString in1; - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber surfaceScale; - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber specularConstant; - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber specularExponent; - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber kernelUnitLengthX; - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber kernelUnitLengthY; + readonly attribute SVGAnimatedString in1; + readonly attribute SVGAnimatedNumber surfaceScale; + readonly attribute SVGAnimatedNumber specularConstant; + readonly attribute SVGAnimatedNumber specularExponent; + readonly attribute SVGAnimatedNumber kernelUnitLengthX; + readonly attribute SVGAnimatedNumber kernelUnitLengthY; }; SVGFESpecularLightingElement includes SVGFilterPrimitiveStandardAttributes; diff --git a/tools/under-control/src/third_party/blink/renderer/core/svg/svg_fe_spot_light_element.idl b/tools/under-control/src/third_party/blink/renderer/core/svg/svg_fe_spot_light_element.idl index bd4ee0c36..b880c0fd1 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/svg/svg_fe_spot_light_element.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/svg/svg_fe_spot_light_element.idl @@ -28,12 +28,12 @@ [ Exposed=Window ] interface SVGFESpotLightElement : SVGElement { - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber x; - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber y; - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber z; - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber pointsAtX; - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber pointsAtY; - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber pointsAtZ; - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber specularExponent; - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber limitingConeAngle; + readonly attribute SVGAnimatedNumber x; + readonly attribute SVGAnimatedNumber y; + readonly attribute SVGAnimatedNumber z; + readonly attribute SVGAnimatedNumber pointsAtX; + readonly attribute SVGAnimatedNumber pointsAtY; + readonly attribute SVGAnimatedNumber pointsAtZ; + readonly attribute SVGAnimatedNumber specularExponent; + readonly attribute SVGAnimatedNumber limitingConeAngle; }; diff --git a/tools/under-control/src/third_party/blink/renderer/core/svg/svg_fe_tile_element.idl b/tools/under-control/src/third_party/blink/renderer/core/svg/svg_fe_tile_element.idl index ff6e867cc..c0d24fe0f 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/svg/svg_fe_tile_element.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/svg/svg_fe_tile_element.idl @@ -28,7 +28,7 @@ [ Exposed=Window ] interface SVGFETileElement : SVGElement { - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedString in1; + readonly attribute SVGAnimatedString in1; }; SVGFETileElement includes SVGFilterPrimitiveStandardAttributes; diff --git a/tools/under-control/src/third_party/blink/renderer/core/svg/svg_fe_turbulence_element.idl b/tools/under-control/src/third_party/blink/renderer/core/svg/svg_fe_turbulence_element.idl index 42ad8ab7a..eaf15035f 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/svg/svg_fe_turbulence_element.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/svg/svg_fe_turbulence_element.idl @@ -29,21 +29,21 @@ Exposed=Window ] interface SVGFETurbulenceElement : SVGElement { // Turbulence Types - [MeasureAs=SVG1DOMFilter] const unsigned short SVG_TURBULENCE_TYPE_UNKNOWN = 0; - [MeasureAs=SVG1DOMFilter] const unsigned short SVG_TURBULENCE_TYPE_FRACTALNOISE = 1; - [MeasureAs=SVG1DOMFilter] const unsigned short SVG_TURBULENCE_TYPE_TURBULENCE = 2; + const unsigned short SVG_TURBULENCE_TYPE_UNKNOWN = 0; + const unsigned short SVG_TURBULENCE_TYPE_FRACTALNOISE = 1; + const unsigned short SVG_TURBULENCE_TYPE_TURBULENCE = 2; // Stitch Options - [MeasureAs=SVG1DOMFilter] const unsigned short SVG_STITCHTYPE_UNKNOWN = 0; - [MeasureAs=SVG1DOMFilter] const unsigned short SVG_STITCHTYPE_STITCH = 1; - [MeasureAs=SVG1DOMFilter] const unsigned short SVG_STITCHTYPE_NOSTITCH = 2; + const unsigned short SVG_STITCHTYPE_UNKNOWN = 0; + const unsigned short SVG_STITCHTYPE_STITCH = 1; + const unsigned short SVG_STITCHTYPE_NOSTITCH = 2; - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber baseFrequencyX; - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber baseFrequencyY; - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedInteger numOctaves; - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber seed; - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedEnumeration stitchTiles; - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedEnumeration type; + readonly attribute SVGAnimatedNumber baseFrequencyX; + readonly attribute SVGAnimatedNumber baseFrequencyY; + readonly attribute SVGAnimatedInteger numOctaves; + readonly attribute SVGAnimatedNumber seed; + readonly attribute SVGAnimatedEnumeration stitchTiles; + readonly attribute SVGAnimatedEnumeration type; }; SVGFETurbulenceElement includes SVGFilterPrimitiveStandardAttributes; diff --git a/tools/under-control/src/third_party/blink/renderer/core/svg/svg_filter_element.idl b/tools/under-control/src/third_party/blink/renderer/core/svg/svg_filter_element.idl index 06e1295c0..3f761576f 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/svg/svg_filter_element.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/svg/svg_filter_element.idl @@ -29,12 +29,12 @@ [ Exposed=Window ] interface SVGFilterElement : SVGElement { - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedEnumeration filterUnits; - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedEnumeration primitiveUnits; - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedLength x; - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedLength y; - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedLength width; - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedLength height; + readonly attribute SVGAnimatedEnumeration filterUnits; + readonly attribute SVGAnimatedEnumeration primitiveUnits; + readonly attribute SVGAnimatedLength x; + readonly attribute SVGAnimatedLength y; + readonly attribute SVGAnimatedLength width; + readonly attribute SVGAnimatedLength height; }; SVGFilterElement includes SVGURIReference; diff --git a/tools/under-control/src/third_party/blink/renderer/core/svg/svg_filter_primitive_standard_attributes.idl b/tools/under-control/src/third_party/blink/renderer/core/svg/svg_filter_primitive_standard_attributes.idl index f6852b746..4a524220a 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/svg/svg_filter_primitive_standard_attributes.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/svg/svg_filter_primitive_standard_attributes.idl @@ -27,9 +27,9 @@ // https://drafts.fxtf.org/filter-effects/#InterfaceSVGFilterPrimitiveStandardAttributes interface mixin SVGFilterPrimitiveStandardAttributes { - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedLength x; - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedLength y; - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedLength width; - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedLength height; - [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedString result; + readonly attribute SVGAnimatedLength x; + readonly attribute SVGAnimatedLength y; + readonly attribute SVGAnimatedLength width; + readonly attribute SVGAnimatedLength height; + readonly attribute SVGAnimatedString result; }; diff --git a/tools/under-control/src/third_party/blink/renderer/core/svg/svg_gradient_element.idl b/tools/under-control/src/third_party/blink/renderer/core/svg/svg_gradient_element.idl index 8c1fa4f81..62fb39013 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/svg/svg_gradient_element.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/svg/svg_gradient_element.idl @@ -29,14 +29,14 @@ Exposed=Window ] interface SVGGradientElement : SVGElement { // Spread Method Types - [MeasureAs=SVG1DOMPaintServer] const unsigned short SVG_SPREADMETHOD_UNKNOWN = 0; - [MeasureAs=SVG1DOMPaintServer] const unsigned short SVG_SPREADMETHOD_PAD = 1; - [MeasureAs=SVG1DOMPaintServer] const unsigned short SVG_SPREADMETHOD_REFLECT = 2; - [MeasureAs=SVG1DOMPaintServer] const unsigned short SVG_SPREADMETHOD_REPEAT = 3; + const unsigned short SVG_SPREADMETHOD_UNKNOWN = 0; + const unsigned short SVG_SPREADMETHOD_PAD = 1; + const unsigned short SVG_SPREADMETHOD_REFLECT = 2; + const unsigned short SVG_SPREADMETHOD_REPEAT = 3; - [MeasureAs=SVG1DOMPaintServer] readonly attribute SVGAnimatedEnumeration gradientUnits; - [MeasureAs=SVG1DOMPaintServer] readonly attribute SVGAnimatedTransformList gradientTransform; - [MeasureAs=SVG1DOMPaintServer] readonly attribute SVGAnimatedEnumeration spreadMethod; + readonly attribute SVGAnimatedEnumeration gradientUnits; + readonly attribute SVGAnimatedTransformList gradientTransform; + readonly attribute SVGAnimatedEnumeration spreadMethod; }; SVGGradientElement includes SVGURIReference; diff --git a/tools/under-control/src/third_party/blink/renderer/core/svg/svg_linear_gradient_element.idl b/tools/under-control/src/third_party/blink/renderer/core/svg/svg_linear_gradient_element.idl index 02a6d078c..b8062658c 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/svg/svg_linear_gradient_element.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/svg/svg_linear_gradient_element.idl @@ -27,8 +27,8 @@ [Exposed=Window] interface SVGLinearGradientElement : SVGGradientElement { - [MeasureAs=SVG1DOMPaintServer] readonly attribute SVGAnimatedLength x1; - [MeasureAs=SVG1DOMPaintServer] readonly attribute SVGAnimatedLength y1; - [MeasureAs=SVG1DOMPaintServer] readonly attribute SVGAnimatedLength x2; - [MeasureAs=SVG1DOMPaintServer] readonly attribute SVGAnimatedLength y2; + readonly attribute SVGAnimatedLength x1; + readonly attribute SVGAnimatedLength y1; + readonly attribute SVGAnimatedLength x2; + readonly attribute SVGAnimatedLength y2; }; diff --git a/tools/under-control/src/third_party/blink/renderer/core/svg/svg_pattern_element.idl b/tools/under-control/src/third_party/blink/renderer/core/svg/svg_pattern_element.idl index 49098b490..168a64252 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/svg/svg_pattern_element.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/svg/svg_pattern_element.idl @@ -27,13 +27,13 @@ [Exposed=Window] interface SVGPatternElement : SVGElement { - [MeasureAs=SVG1DOMPaintServer] readonly attribute SVGAnimatedEnumeration patternUnits; - [MeasureAs=SVG1DOMPaintServer] readonly attribute SVGAnimatedEnumeration patternContentUnits; - [MeasureAs=SVG1DOMPaintServer] readonly attribute SVGAnimatedTransformList patternTransform; - [MeasureAs=SVG1DOMPaintServer] readonly attribute SVGAnimatedLength x; - [MeasureAs=SVG1DOMPaintServer] readonly attribute SVGAnimatedLength y; - [MeasureAs=SVG1DOMPaintServer] readonly attribute SVGAnimatedLength width; - [MeasureAs=SVG1DOMPaintServer] readonly attribute SVGAnimatedLength height; + readonly attribute SVGAnimatedEnumeration patternUnits; + readonly attribute SVGAnimatedEnumeration patternContentUnits; + readonly attribute SVGAnimatedTransformList patternTransform; + readonly attribute SVGAnimatedLength x; + readonly attribute SVGAnimatedLength y; + readonly attribute SVGAnimatedLength width; + readonly attribute SVGAnimatedLength height; }; SVGPatternElement includes SVGFitToViewBox; diff --git a/tools/under-control/src/third_party/blink/renderer/core/svg/svg_radial_gradient_element.idl b/tools/under-control/src/third_party/blink/renderer/core/svg/svg_radial_gradient_element.idl index 3330290c6..a52e2d5b4 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/svg/svg_radial_gradient_element.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/svg/svg_radial_gradient_element.idl @@ -27,10 +27,10 @@ [Exposed=Window] interface SVGRadialGradientElement : SVGGradientElement { - [MeasureAs=SVG1DOMPaintServer] readonly attribute SVGAnimatedLength cx; - [MeasureAs=SVG1DOMPaintServer] readonly attribute SVGAnimatedLength cy; - [MeasureAs=SVG1DOMPaintServer] readonly attribute SVGAnimatedLength r; - [MeasureAs=SVG1DOMPaintServer] readonly attribute SVGAnimatedLength fx; - [MeasureAs=SVG1DOMPaintServer] readonly attribute SVGAnimatedLength fy; - [MeasureAs=SVG1DOMPaintServer] readonly attribute SVGAnimatedLength fr; + readonly attribute SVGAnimatedLength cx; + readonly attribute SVGAnimatedLength cy; + readonly attribute SVGAnimatedLength r; + readonly attribute SVGAnimatedLength fx; + readonly attribute SVGAnimatedLength fy; + readonly attribute SVGAnimatedLength fr; }; diff --git a/tools/under-control/src/third_party/blink/renderer/core/svg/svg_stop_element.idl b/tools/under-control/src/third_party/blink/renderer/core/svg/svg_stop_element.idl index 36fc16ec8..7bed08ab4 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/svg/svg_stop_element.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/svg/svg_stop_element.idl @@ -27,5 +27,5 @@ [Exposed=Window] interface SVGStopElement : SVGElement { - [MeasureAs=SVG1DOMPaintServer] readonly attribute SVGAnimatedNumber offset; + readonly attribute SVGAnimatedNumber offset; }; diff --git a/tools/under-control/src/third_party/blink/renderer/core/svg/svg_text_content_element.idl b/tools/under-control/src/third_party/blink/renderer/core/svg/svg_text_content_element.idl index 2117f0d68..a51524b71 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/svg/svg_text_content_element.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/svg/svg_text_content_element.idl @@ -28,12 +28,12 @@ [Exposed=Window] interface SVGTextContentElement : SVGGraphicsElement { // lengthAdjust Types - [MeasureAs=SVG1DOMText] const unsigned short LENGTHADJUST_UNKNOWN = 0; - [MeasureAs=SVG1DOMText] const unsigned short LENGTHADJUST_SPACING = 1; - [MeasureAs=SVG1DOMText] const unsigned short LENGTHADJUST_SPACINGANDGLYPHS = 2; + const unsigned short LENGTHADJUST_UNKNOWN = 0; + const unsigned short LENGTHADJUST_SPACING = 1; + const unsigned short LENGTHADJUST_SPACINGANDGLYPHS = 2; - [MeasureAs=SVG1DOMText] readonly attribute SVGAnimatedLength textLength; - [MeasureAs=SVG1DOMText] readonly attribute SVGAnimatedEnumeration lengthAdjust; + readonly attribute SVGAnimatedLength textLength; + readonly attribute SVGAnimatedEnumeration lengthAdjust; long getNumberOfChars(); [HighEntropy, Measure] float getComputedTextLength(); diff --git a/tools/under-control/src/third_party/blink/renderer/core/svg/svg_text_path_element.idl b/tools/under-control/src/third_party/blink/renderer/core/svg/svg_text_path_element.idl index 4fa851e0f..04b8c6a22 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/svg/svg_text_path_element.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/svg/svg_text_path_element.idl @@ -28,18 +28,18 @@ [Exposed=Window] interface SVGTextPathElement : SVGTextContentElement { // textPath Method Types - [MeasureAs=SVG1DOMText] const unsigned short TEXTPATH_METHODTYPE_UNKNOWN = 0; - [MeasureAs=SVG1DOMText] const unsigned short TEXTPATH_METHODTYPE_ALIGN = 1; - [MeasureAs=SVG1DOMText] const unsigned short TEXTPATH_METHODTYPE_STRETCH = 2; + const unsigned short TEXTPATH_METHODTYPE_UNKNOWN = 0; + const unsigned short TEXTPATH_METHODTYPE_ALIGN = 1; + const unsigned short TEXTPATH_METHODTYPE_STRETCH = 2; // textPath Spacing Types - [MeasureAs=SVG1DOMText] const unsigned short TEXTPATH_SPACINGTYPE_UNKNOWN = 0; - [MeasureAs=SVG1DOMText] const unsigned short TEXTPATH_SPACINGTYPE_AUTO = 1; - [MeasureAs=SVG1DOMText] const unsigned short TEXTPATH_SPACINGTYPE_EXACT = 2; + const unsigned short TEXTPATH_SPACINGTYPE_UNKNOWN = 0; + const unsigned short TEXTPATH_SPACINGTYPE_AUTO = 1; + const unsigned short TEXTPATH_SPACINGTYPE_EXACT = 2; - [MeasureAs=SVG1DOMText] readonly attribute SVGAnimatedLength startOffset; - [MeasureAs=SVG1DOMText] readonly attribute SVGAnimatedEnumeration method; - [MeasureAs=SVG1DOMText] readonly attribute SVGAnimatedEnumeration spacing; + readonly attribute SVGAnimatedLength startOffset; + readonly attribute SVGAnimatedEnumeration method; + readonly attribute SVGAnimatedEnumeration spacing; }; SVGTextPathElement includes SVGURIReference; diff --git a/tools/under-control/src/third_party/blink/renderer/core/svg/svg_text_positioning_element.idl b/tools/under-control/src/third_party/blink/renderer/core/svg/svg_text_positioning_element.idl index 3e3e90c3f..dcf973b52 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/svg/svg_text_positioning_element.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/svg/svg_text_positioning_element.idl @@ -27,9 +27,9 @@ [Exposed=Window] interface SVGTextPositioningElement : SVGTextContentElement { - [MeasureAs=SVG1DOMText] readonly attribute SVGAnimatedLengthList x; - [MeasureAs=SVG1DOMText] readonly attribute SVGAnimatedLengthList y; - [MeasureAs=SVG1DOMText] readonly attribute SVGAnimatedLengthList dx; - [MeasureAs=SVG1DOMText] readonly attribute SVGAnimatedLengthList dy; - [MeasureAs=SVG1DOMText] readonly attribute SVGAnimatedNumberList rotate; + readonly attribute SVGAnimatedLengthList x; + readonly attribute SVGAnimatedLengthList y; + readonly attribute SVGAnimatedLengthList dx; + readonly attribute SVGAnimatedLengthList dy; + readonly attribute SVGAnimatedNumberList rotate; }; diff --git a/tools/under-control/src/third_party/blink/renderer/core/testing/death_aware_script_wrappable.idl b/tools/under-control/src/third_party/blink/renderer/core/testing/death_aware_script_wrappable.idl deleted file mode 100755 index a45d8206e..000000000 --- a/tools/under-control/src/third_party/blink/renderer/core/testing/death_aware_script_wrappable.idl +++ /dev/null @@ -1,6 +0,0 @@ -// Copyright 2016 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -interface DeathAwareScriptWrappable { -}; diff --git a/tools/under-control/src/third_party/blink/renderer/core/timing/performance_resource_timing.idl b/tools/under-control/src/third_party/blink/renderer/core/timing/performance_resource_timing.idl index 7a4729e55..0b7cfacc2 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/timing/performance_resource_timing.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/timing/performance_resource_timing.idl @@ -77,6 +77,11 @@ interface PerformanceResourceTiming : PerformanceEntry { [RuntimeEnabled=ResourceTimingContentType] readonly attribute DOMString contentType; + // PerformanceResourceTiming#contentEncoding + // see: https://github.com/guohuideng2024/resource-timing/blob/gh-pages/Explainers/Content_Encoding.md + [RuntimeEnabled=ResourceTimingContentEncoding] + readonly attribute DOMString contentEncoding; + [RuntimeEnabled=ResourceTimingFinalResponseHeadersStart] readonly attribute DOMHighResTimeStamp finalResponseHeadersStart; readonly attribute DOMHighResTimeStamp firstInterimResponseStart; diff --git a/tools/under-control/src/third_party/blink/renderer/core/view_transition/scoped_view_transition.idl b/tools/under-control/src/third_party/blink/renderer/core/view_transition/scoped_view_transition.idl new file mode 100755 index 000000000..2a2c78b7c --- /dev/null +++ b/tools/under-control/src/third_party/blink/renderer/core/view_transition/scoped_view_transition.idl @@ -0,0 +1,12 @@ +// Copyright 2025 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +[ + ImplementedAs=ScopedViewTransition, + RuntimeEnabled=ScopedViewTransitions +] partial interface Element { + [CallWith=ScriptState, RaisesException] ViewTransition startViewTransition(); + [CallWith=ScriptState, RaisesException] ViewTransition startViewTransition(ViewTransitionCallback update); + [CallWith=ScriptState, RaisesException] ViewTransition startViewTransition(ViewTransitionOptions opts); +}; 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 0335fc797..a985dbe63 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 @@ -61,7 +61,7 @@ typedef (Blob or BufferSource or FormData or URLSearchParams or USVString) XMLHt [RaisesException] void open(ByteString method, USVString url, boolean async, optional USVString? username = null, optional USVString? password = null); [RaisesException] void setRequestHeader(ByteString name, ByteString value); [RaisesException, RuntimeEnabled=PrivateStateTokens, SecureContext, MeasureAs=TrustTokenXhr] void setPrivateToken(PrivateToken privateToken); - [RaisesException, RuntimeEnabled=AttributionReportingInterface, SecureContext] void setAttributionReporting(AttributionReportingRequestOptions attributionReporting); + [RaisesException, RuntimeEnabled=AttributionReporting, SecureContext] void setAttributionReporting(AttributionReportingRequestOptions attributionReporting); [RaisesException=Setter] attribute unsigned long timeout; [RaisesException=Setter] attribute boolean withCredentials; readonly attribute XMLHttpRequestUpload upload; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/ad_auction/ad_auction_data_config.idl b/tools/under-control/src/third_party/blink/renderer/modules/ad_auction/ad_auction_data_config.idl index 3681f2be1..4f5c8c75f 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/ad_auction/ad_auction_data_config.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/ad_auction/ad_auction_data_config.idl @@ -28,11 +28,9 @@ dictionary AdAuctionDataConfig { record perBuyerConfig; }; -// TODO(qingxinwu): make this a union that only one of `request` and `error` can -// be set. dictionary AdAuctionPerSellerData { required USVString seller; - // Only one of `request` and `error` can be set. + // Exactly one of `request` and `error` will be set, but not both. Uint8Array request; DOMString error; }; 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 c79d57091..7899def11 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 @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// https://github.com/explainers-by-googlers/prompt-api +// https://github.com/webmachinelearning/prompt-api enum AICapabilityAvailability { "readily", diff --git a/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_create_monitor.idl b/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_create_monitor.idl index b69e00b3b..9677924a6 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_create_monitor.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_create_monitor.idl @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// https://github.com/explainers-by-googlers/prompt-api +// https://github.com/webmachinelearning/prompt-api [ Exposed=(Window,Worker), diff --git a/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_language_model.idl b/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_language_model.idl index adf152e31..c21373547 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_language_model.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_language_model.idl @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// https://github.com/explainers-by-googlers/prompt-api +// https://github.com/webmachinelearning/prompt-api dictionary AILanguageModelCloneOptions { AbortSignal signal; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_language_model_create_options.idl b/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_language_model_create_options.idl index ff1f261b2..01bd68ca7 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_language_model_create_options.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_language_model_create_options.idl @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// https://github.com/explainers-by-googlers/prompt-api +// https://github.com/webmachinelearning/prompt-api dictionary AILanguageModelInitialPrompt { required AILanguageModelInitialPromptRole role; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_language_model_factory.idl b/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_language_model_factory.idl index bfc90bfe8..8f7eb718a 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_language_model_factory.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_language_model_factory.idl @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// https://github.com/explainers-by-googlers/prompt-api +// https://github.com/webmachinelearning/prompt-api enum AILanguageModelInitialPromptRole { "system", "user", "assistant" }; enum AILanguageModelPromptRole { "user", "assistant" }; @@ -25,6 +25,8 @@ interface AILanguageModelCapabilities { readonly attribute unsigned long? maxTopK; [Measure] readonly attribute float? defaultTemperature; + [Measure] + readonly attribute float? maxTemperature; }; [ 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 index 4543e8244..df918c1bf 100755 --- 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 @@ -41,8 +41,18 @@ interface AIRewriter { ] void destroy(); + [Measure] readonly attribute DOMString sharedContext; + [Measure] readonly attribute AIRewriterTone tone; + [Measure] readonly attribute AIRewriterFormat format; + [Measure] readonly attribute AIRewriterLength length; + [Measure] + readonly attribute FrozenArray? expectedInputLanguages; + [Measure] + readonly attribute FrozenArray? expectedContextLanguages; + [Measure] + readonly attribute DOMString? outputLanguage; }; 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 index 09646fa5a..9fb8c2272 100755 --- 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 @@ -15,6 +15,7 @@ dictionary AIRewriterCreateCoreOptions { AIRewriterLength length = "as-is"; sequence expectedInputLanguages; + sequence expectedContextLanguages; DOMString outputLanguage; }; 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 index 9c86cf531..0b8bb08a2 100755 --- 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 @@ -41,8 +41,18 @@ interface AIWriter { ] void destroy(); + [Measure] readonly attribute DOMString sharedContext; + [Measure] readonly attribute AIWriterTone tone; + [Measure] readonly attribute AIWriterFormat format; + [Measure] readonly attribute AIWriterLength length; + [Measure] + readonly attribute FrozenArray? expectedInputLanguages; + [Measure] + readonly attribute FrozenArray? expectedContextLanguages; + [Measure] + readonly attribute DOMString? outputLanguage; }; 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 index f6ca6174c..696850522 100755 --- 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 @@ -15,6 +15,7 @@ dictionary AIWriterCreateCoreOptions { AIWriterLength length = "medium"; sequence expectedInputLanguages; + sequence expectedContextLanguages; DOMString outputLanguage; }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/ai/on_device_translation/ai_language_detector.idl b/tools/under-control/src/third_party/blink/renderer/modules/ai/on_device_translation/ai_language_detector.idl index b3d66e90f..cf000544c 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/ai/on_device_translation/ai_language_detector.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/ai/on_device_translation/ai_language_detector.idl @@ -10,6 +10,7 @@ dictionary LanguageDetectionResult { ] interface AILanguageDetector { [ + Measure, CallWith=ScriptState, RaisesException ] @@ -17,6 +18,7 @@ interface AILanguageDetector { optional AILanguageDetectorDetectOptions options = {}); [ + Measure, CallWith=ScriptState ] undefined destroy(); diff --git a/tools/under-control/src/third_party/blink/renderer/modules/ai/on_device_translation/ai_language_detector_factory.idl b/tools/under-control/src/third_party/blink/renderer/modules/ai/on_device_translation/ai_language_detector_factory.idl index 69a62e6e7..f8cdb856d 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/ai/on_device_translation/ai_language_detector_factory.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/ai/on_device_translation/ai_language_detector_factory.idl @@ -5,10 +5,12 @@ ] interface AILanguageDetectorFactory { [ + Measure, CallWith=ScriptState, RaisesException ] Promise create(optional AILanguageDetectorCreateOptions options = {}); + // TODO(crbug.com/390459311): Replace with availability. [ CallWith=ScriptState ] diff --git a/tools/under-control/src/third_party/blink/renderer/modules/ai/on_device_translation/ai_translator.idl b/tools/under-control/src/third_party/blink/renderer/modules/ai/on_device_translation/ai_translator.idl index 139662e5d..0792fed6c 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/ai/on_device_translation/ai_translator.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/ai/on_device_translation/ai_translator.idl @@ -5,13 +5,26 @@ ] interface AITranslator { [ + Measure, CallWith=ScriptState, RaisesException ] Promise translate(DOMString input, optional AITranslatorTranslateOptions options = {}); -// TODO(crbug.com/322229993): Add `translateStreaming()`. [ + Measure, + CallWith=ScriptState, + RaisesException +] + ReadableStream translateStreaming(DOMString input, optional AITranslatorTranslateOptions options = {}); + + [Measure] + readonly attribute DOMString sourceLanguage; + [Measure] + readonly attribute DOMString targetLanguage; + +[ + Measure, CallWith=ScriptState ] undefined destroy(); diff --git a/tools/under-control/src/third_party/blink/renderer/modules/ai/on_device_translation/ai_translator_factory.idl b/tools/under-control/src/third_party/blink/renderer/modules/ai/on_device_translation/ai_translator_factory.idl index 9a17064b5..7a21ea1b2 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/ai/on_device_translation/ai_translator_factory.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/ai/on_device_translation/ai_translator_factory.idl @@ -5,10 +5,12 @@ ] interface AITranslatorFactory { [ + Measure, CallWith=ScriptState, RaisesException ] - Promise create(optional AITranslatorCreateOptions options = {}); + Promise create(AITranslatorCreateOptions options); + // TODO(crbug.com/390459310): Replace with availability. [ CallWith=ScriptState, RaisesException @@ -16,9 +18,12 @@ interface AITranslatorFactory { Promise capabilities(); }; -dictionary AITranslatorCreateOptions { - AbortSignal signal; - // TODO(crbug.com/322229993): Add AICreateMonitorCallback. +dictionary AITranslatorCreateCoreOptions { required DOMString sourceLanguage; required DOMString targetLanguage; }; + +dictionary AITranslatorCreateOptions : AITranslatorCreateCoreOptions { + AbortSignal signal; + AICreateMonitorCallback monitor; +}; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/ai/window_or_worker_global_scope_ai.idl b/tools/under-control/src/third_party/blink/renderer/modules/ai/window_or_worker_global_scope_ai.idl index 1a4ec48a8..af9a582c1 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/ai/window_or_worker_global_scope_ai.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/ai/window_or_worker_global_scope_ai.idl @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// https://github.com/explainers-by-googlers/prompt-api +// https://github.com/webmachinelearning/prompt-api [ Exposed=(Window,Worker), diff --git a/tools/under-control/src/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_context_2d.idl b/tools/under-control/src/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_context_2d.idl index 66fe87ea7..2d486fd43 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_context_2d.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_context_2d.idl @@ -2,119 +2,28 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -enum CanvasFillRule { "nonzero", "evenodd" }; -enum ImageSmoothingQuality {"low", "medium", "high"}; enum CanvasTextRendering {"auto", "optimizeSpeed", "optimizeLegibility", "geometricPrecision"}; enum CanvasFontStretch {"ultra-condensed", "extra-condensed", "condensed", "semi-condensed", "normal", "semi-expanded", "expanded", "extra-expanded", "ultra-expanded"}; -dictionary BeginLayerOptions { - CanvasFilterInput? filter = null; -}; - interface mixin BaseRenderingContext2D { // state - void save(); // push state on state stack - [NoAllocDirectCall, RaisesException] void restore(); // pop state stack if top state was pushed by save, and restore state - [MeasureAs=Canvas2DLayers, RuntimeEnabled=Canvas2dLayers, CallWith=ScriptState] void beginLayer(); // push state on state stack and creates bitmap for subsequent draw ops - [MeasureAs=Canvas2DLayers, RuntimeEnabled=Canvas2dLayersWithOptions, CallWith=ScriptState, RaisesException] void beginLayer(BeginLayerOptions options); // push state on state stack and creates bitmap for subsequent draw ops - [NoAllocDirectCall, RuntimeEnabled=Canvas2dLayers, RaisesException] void endLayer(); // pop state stack if top state was pushed by beginLayer, restore state and draw the bitmap - // Clear the canvas and reset the path - void reset(); boolean isContextLost(); - // transformations (default transform is the identity matrix) - [HighEntropy] void scale(unrestricted double x, unrestricted double y); - [HighEntropy, NoAllocDirectCall] void rotate(unrestricted double angle); - [HighEntropy] void translate(unrestricted double x, unrestricted double y); - [HighEntropy] void transform(unrestricted double a, unrestricted double b, unrestricted double c, unrestricted double d, unrestricted double e, unrestricted double f); - [HighEntropy] void setTransform(unrestricted double a, unrestricted double b, unrestricted double c, unrestricted double d, unrestricted double e, unrestricted double f); - [RaisesException] void setTransform(optional DOMMatrixInit transform = {}); - DOMMatrix getTransform(); - [NoAllocDirectCall] void resetTransform(); - - // compositing - attribute unrestricted double globalAlpha; // (default 1.0) - [HighEntropy] attribute DOMString globalCompositeOperation; // (default source-over) - [MeasureAs=Canvas2DFilter, SetterCallWith=ScriptState] attribute (DOMString or CanvasFilter)? filter; // (default 'none') - - // image smoothing - attribute boolean imageSmoothingEnabled; // (default True) - [MeasureAs=Canvas2DImageSmoothingQuality2] attribute ImageSmoothingQuality imageSmoothingQuality; // (default "low") - - // colors and styles (see also the CanvasDrawingStyles interface) - [HighEntropy, SetterCallWith=Isolate, RaisesException=Setter, GetterCallWith=ScriptState, NoAllocDirectCall=Setter] attribute any strokeStyle; // (default black) - [HighEntropy, SetterCallWith=Isolate, RaisesException=Setter, GetterCallWith=ScriptState] attribute any fillStyle; // (default black) - CanvasGradient createLinearGradient(double x0, double y0, double x1, double y1); - [RaisesException] CanvasGradient createRadialGradient(double x0, double y0, double r0, double x1, double y1, double r1); - CanvasGradient createConicGradient(double startAngle, double cx, double cy); - [RaisesException] CanvasPattern? createPattern(CanvasImageSource image, [LegacyNullToEmptyString] DOMString repetitionType); - - // shadows - [HighEntropy] attribute unrestricted double shadowOffsetX; - [HighEntropy] attribute unrestricted double shadowOffsetY; - [HighEntropy] attribute unrestricted double shadowBlur; - [HighEntropy] attribute DOMString shadowColor; - - // CanvasRect interface - [HighEntropy, NoAllocDirectCall] void clearRect(unrestricted double x, unrestricted double y, unrestricted double width, unrestricted double height); - [HighEntropy, NoAllocDirectCall] void fillRect(unrestricted double x, unrestricted double y, unrestricted double width, unrestricted double height); - [HighEntropy, NoAllocDirectCall] void strokeRect(unrestricted double x, unrestricted double y, unrestricted double width, unrestricted double height); - - // path API (see also CanvasPath) - [HighEntropy, NoAllocDirectCall] void beginPath(); - [HighEntropy] void fill(optional CanvasFillRule winding); - [HighEntropy] void fill(Path2D path, optional CanvasFillRule winding); - [HighEntropy, NoAllocDirectCall] void stroke(); - [HighEntropy] void stroke(Path2D path); - - [HighEntropy] void clip(optional CanvasFillRule winding); - [HighEntropy] void clip(Path2D path, optional CanvasFillRule winding); - [HighEntropy, MeasureAs=Canvas2DIsPointInPath] boolean isPointInPath(unrestricted double x, unrestricted double y, optional CanvasFillRule winding); - [HighEntropy, MeasureAs=Canvas2DIsPointInPath] boolean isPointInPath(Path2D path, unrestricted double x, unrestricted double y, optional CanvasFillRule winding); - [HighEntropy, MeasureAs=Canvas2DIsPointInStroke] boolean isPointInStroke(unrestricted double x, unrestricted double y); - [HighEntropy, MeasureAs=Canvas2DIsPointInStroke] boolean isPointInStroke(Path2D path, unrestricted double x, unrestricted double y); - - // text (see also the CanvasDrawingStyles interface) + // text (see also the CanvasPathDrawingStyles and CanvasTextDrawingStyles interfaces) [HighEntropy, MeasureAs=Canvas2DDrawText] void fillText(DOMString text, unrestricted double x, unrestricted double y, optional unrestricted double maxWidth); [HighEntropy, MeasureAs=Canvas2DDrawText] void strokeText(DOMString text, unrestricted double x, unrestricted double y, optional unrestricted double maxWidth); [HighEntropy, MeasureAs=Canvas2DMeasureText] TextMetrics measureText(DOMString text); [RuntimeEnabled=ExtendedTextMetrics] void fillTextCluster(TextCluster textCluster, double x, double y); [RuntimeEnabled=ExtendedTextMetrics] void fillTextCluster(TextCluster textCluster, double x, double y, TextClusterOptions options); - // 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); - - // triangle mesh API - [MeasureAs=Canvas2DMesh, RuntimeEnabled=Canvas2dMesh, RaisesException] Mesh2DVertexBuffer createMesh2DVertexBuffer(Float32Array buffer); - [MeasureAs=Canvas2DMesh, RuntimeEnabled=Canvas2dMesh, RaisesException] Mesh2DUVBuffer createMesh2DUVBuffer(Float32Array buffer); - [MeasureAs=Canvas2DMesh, RuntimeEnabled=Canvas2dMesh, RaisesException] Mesh2DIndexBuffer createMesh2DIndexBuffer(Uint16Array buffer); - [MeasureAs=Canvas2DMesh, RuntimeEnabled=Canvas2dMesh, HighEntropy, RaisesException] void drawMesh(Mesh2DVertexBuffer vertex_buffer, - Mesh2DUVBuffer uv_buffer, - Mesh2DIndexBuffer index_buffer, - CanvasImageSource image); - // pixel manipulation [RaisesException] ImageData createImageData(ImageData imagedata); [RaisesException] ImageData createImageData([EnforceRange] long sw, [EnforceRange] long sh); [RaisesException] ImageData createImageData([EnforceRange] long sw, [EnforceRange] long sh, ImageDataSettings imageDataSettings); [HighEntropy, MeasureAs=Canvas2DGetImageData, RaisesException] ImageData getImageData([EnforceRange] long sx, [EnforceRange] long sy, [EnforceRange] long sw, [EnforceRange] long sh); [HighEntropy, MeasureAs=Canvas2DGetImageData, RaisesException] ImageData getImageData([EnforceRange] long sx, [EnforceRange] long sy, [EnforceRange] long sw, [EnforceRange] long sh, ImageDataSettings imageDataSettings); - [RaisesException] void putImageData(ImageData imagedata, [EnforceRange] long dx, [EnforceRange] long dy); - [RaisesException] void putImageData(ImageData imagedata, [EnforceRange] long dx, [EnforceRange] long dy, [EnforceRange] long dirtyX, [EnforceRange] long dirtyY, [EnforceRange] long dirtyWidth, [EnforceRange] long dirtyHeight); - - // FIXME: factor out to CanvasDrawingStyles - // line caps/joins - [NoAllocDirectCall=Setter] attribute unrestricted double lineWidth; // (default 1) - attribute DOMString lineCap; // "butt", "round", "square" (default "butt") - attribute DOMString lineJoin; // "round", "bevel", "miter" (default "miter") - attribute unrestricted double miterLimit; // (default 10) - - // dashed lines - void setLineDash(sequence dash); - sequence getLineDash(); - attribute unrestricted double lineDashOffset; + [NoAllocDirectCall, RaisesException] void putImageData(ImageData imagedata, [EnforceRange] long dx, [EnforceRange] long dy); + [NoAllocDirectCall, RaisesException] void putImageData(ImageData imagedata, [EnforceRange] long dx, [EnforceRange] long dy, [EnforceRange] long dirtyX, [EnforceRange] long dirtyY, [EnforceRange] long dirtyWidth, [EnforceRange] long dirtyHeight); // text [HighEntropy] attribute DOMString font; // (default 10px sans-serif) diff --git a/tools/under-control/src/third_party/blink/renderer/modules/canvas/canvas2d/canvas_recording_context_2d.idl b/tools/under-control/src/third_party/blink/renderer/modules/canvas/canvas2d/canvas_recording_context_2d.idl new file mode 100755 index 000000000..8e607115e --- /dev/null +++ b/tools/under-control/src/third_party/blink/renderer/modules/canvas/canvas2d/canvas_recording_context_2d.idl @@ -0,0 +1,98 @@ +// 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. + +enum CanvasFillRule { "nonzero", "evenodd" }; +enum ImageSmoothingQuality {"low", "medium", "high"}; + +dictionary BeginLayerOptions { + CanvasFilterInput? filter = null; +}; + +interface mixin CanvasRecordingContext2D { + // state + [NoAllocDirectCall] void save(); // push state on state stack + [NoAllocDirectCall, RaisesException] void restore(); // pop state stack if top state was pushed by save, and restore state + [MeasureAs=Canvas2DLayers, RuntimeEnabled=Canvas2dLayers, CallWith=ScriptState] void beginLayer(); // push state on state stack and creates bitmap for subsequent draw ops + [MeasureAs=Canvas2DLayers, RuntimeEnabled=Canvas2dLayersWithOptions, CallWith=ScriptState, RaisesException] void beginLayer(BeginLayerOptions options); // push state on state stack and creates bitmap for subsequent draw ops + [NoAllocDirectCall, RuntimeEnabled=Canvas2dLayers, RaisesException] void endLayer(); // pop state stack if top state was pushed by beginLayer, restore state and draw the bitmap + // Clear the canvas and reset the path + void reset(); + + // transformations (default transform is the identity matrix) + [HighEntropy, NoAllocDirectCall] void scale(unrestricted double x, unrestricted double y); + [HighEntropy, NoAllocDirectCall] void rotate(unrestricted double angle); + [HighEntropy, NoAllocDirectCall] void translate(unrestricted double x, unrestricted double y); + [HighEntropy, NoAllocDirectCall] void transform(unrestricted double a, unrestricted double b, unrestricted double c, unrestricted double d, unrestricted double e, unrestricted double f); + DOMMatrix getTransform(); + [HighEntropy, NoAllocDirectCall] void setTransform(unrestricted double a, unrestricted double b, unrestricted double c, unrestricted double d, unrestricted double e, unrestricted double f); + [RaisesException] void setTransform(optional DOMMatrixInit transform = {}); + [NoAllocDirectCall] void resetTransform(); + + // compositing + [NoAllocDirectCall=Setter] attribute unrestricted double globalAlpha; // (default 1.0) + [HighEntropy] attribute DOMString globalCompositeOperation; // (default source-over) + [MeasureAs=Canvas2DFilter, SetterCallWith=ScriptState] attribute (DOMString or CanvasFilter)? filter; // (default 'none') + + // image smoothing + [NoAllocDirectCall=Setter] attribute boolean imageSmoothingEnabled; // (default True) + [MeasureAs=Canvas2DImageSmoothingQuality2] attribute ImageSmoothingQuality imageSmoothingQuality; // (default "low") + + // colors and styles (see also the CanvasDrawingStyles interface) + [HighEntropy, SetterCallWith=Isolate, RaisesException=Setter, GetterCallWith=ScriptState] attribute any strokeStyle; // (default black) + [HighEntropy, SetterCallWith=Isolate, RaisesException=Setter, GetterCallWith=ScriptState] attribute any fillStyle; // (default black) + CanvasGradient createLinearGradient(double x0, double y0, double x1, double y1); + [RaisesException] CanvasGradient createRadialGradient(double x0, double y0, double r0, double x1, double y1, double r1); + [RaisesException] CanvasPattern? createPattern(CanvasImageSource image, [LegacyNullToEmptyString] DOMString repetitionType); + CanvasGradient createConicGradient(double startAngle, double cx, double cy); + + // shadows + [HighEntropy, NoAllocDirectCall=Setter] attribute unrestricted double shadowOffsetX; + [HighEntropy, NoAllocDirectCall=Setter] attribute unrestricted double shadowOffsetY; + [HighEntropy, NoAllocDirectCall=Setter] attribute unrestricted double shadowBlur; + [HighEntropy] attribute DOMString shadowColor; + + // rects + [HighEntropy, NoAllocDirectCall] void clearRect(unrestricted double x, unrestricted double y, unrestricted double width, unrestricted double height); + [HighEntropy, NoAllocDirectCall] void fillRect(unrestricted double x, unrestricted double y, unrestricted double width, unrestricted double height); + [HighEntropy, NoAllocDirectCall] void strokeRect(unrestricted double x, unrestricted double y, unrestricted double width, unrestricted double height); + + // path API (see also CanvasPath) + [HighEntropy, NoAllocDirectCall] void beginPath(); + [HighEntropy] void fill(optional CanvasFillRule winding); + [HighEntropy] void fill(Path2D path, optional CanvasFillRule winding); + [HighEntropy, NoAllocDirectCall] void stroke(); + [HighEntropy] void stroke(Path2D path); + + [HighEntropy] void clip(optional CanvasFillRule winding); + [HighEntropy] void clip(Path2D path, optional CanvasFillRule winding); + [HighEntropy, MeasureAs=Canvas2DIsPointInPath] boolean isPointInPath(unrestricted double x, unrestricted double y, optional CanvasFillRule winding); + [HighEntropy, MeasureAs=Canvas2DIsPointInPath] boolean isPointInPath(Path2D path, unrestricted double x, unrestricted double y, optional CanvasFillRule winding); + [HighEntropy, MeasureAs=Canvas2DIsPointInStroke] boolean isPointInStroke(unrestricted double x, unrestricted double y); + [HighEntropy, MeasureAs=Canvas2DIsPointInStroke] boolean isPointInStroke(Path2D path, unrestricted double x, unrestricted 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); + + // triangle mesh API + [MeasureAs=Canvas2DMesh, RuntimeEnabled=Canvas2dMesh, RaisesException] Mesh2DVertexBuffer createMesh2DVertexBuffer(Float32Array buffer); + [MeasureAs=Canvas2DMesh, RuntimeEnabled=Canvas2dMesh, RaisesException] Mesh2DUVBuffer createMesh2DUVBuffer(Float32Array buffer); + [MeasureAs=Canvas2DMesh, RuntimeEnabled=Canvas2dMesh, RaisesException] Mesh2DIndexBuffer createMesh2DIndexBuffer(Uint16Array buffer); + [MeasureAs=Canvas2DMesh, RuntimeEnabled=Canvas2dMesh, HighEntropy, RaisesException] void drawMesh(Mesh2DVertexBuffer vertex_buffer, + Mesh2DUVBuffer uv_buffer, + Mesh2DIndexBuffer index_buffer, + CanvasImageSource image); + // FIXME: factor out to CanvasDrawingStyles + // line caps/joins + [NoAllocDirectCall=Setter] attribute unrestricted double lineWidth; // (default 1) + attribute DOMString lineCap; // "butt", "round", "square" (default "butt") + attribute DOMString lineJoin; // "round", "bevel", "miter" (default "miter") + [NoAllocDirectCall=Setter] attribute unrestricted double miterLimit; // (default 10) + + // dashed lines + void setLineDash(sequence dash); + sequence getLineDash(); + [NoAllocDirectCall=Setter] attribute unrestricted double lineDashOffset; +}; \ No newline at end of file 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 3236eafe4..aa5469dc8 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 @@ -64,3 +64,4 @@ interface CanvasRenderingContext2D { CanvasRenderingContext2D includes BaseRenderingContext2D; CanvasRenderingContext2D includes CanvasPath; CanvasRenderingContext2D includes Canvas2dGPUTransfer; +CanvasRenderingContext2D includes CanvasRecordingContext2D; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d_settings.idl b/tools/under-control/src/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d_settings.idl index 616c828a4..37709980c 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d_settings.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d_settings.idl @@ -7,7 +7,7 @@ dictionary CanvasRenderingContext2DSettings { boolean alpha = true; boolean desynchronized = false; PredefinedColorSpace colorSpace = "srgb"; - [RuntimeEnabled=CanvasFloatingPoint] CanvasPixelFormat pixelFormat = "uint8"; - CanvasWillReadFrequently willReadFrequently = "undefined"; + [RuntimeEnabled=CanvasFloatingPoint] CanvasPixelFormat colorType = "unorm8"; + boolean willReadFrequently = false; }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/canvas/htmlcanvas/canvas_context_creation_attributes_module.idl b/tools/under-control/src/third_party/blink/renderer/modules/canvas/htmlcanvas/canvas_context_creation_attributes_module.idl index e843e2e1b..172f2299e 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/canvas/htmlcanvas/canvas_context_creation_attributes_module.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/canvas/htmlcanvas/canvas_context_creation_attributes_module.idl @@ -22,7 +22,7 @@ // N.B.: Web IDL doesn't support multiple inheritance of dictionaries. enum CanvasPixelFormat { - "uint8", // default + "unorm8", // default "float16", }; @@ -50,7 +50,7 @@ dictionary CanvasContextCreationAttributesModule { // Canvas 2D attributes boolean alpha = true; // Also used for WebGL. PredefinedColorSpace colorSpace = "srgb"; - [RuntimeEnabled=CanvasFloatingPoint] CanvasPixelFormat pixelFormat = "uint8"; + [RuntimeEnabled=CanvasFloatingPoint] CanvasPixelFormat colorType = "unorm8"; CanvasWillReadFrequently willReadFrequently = "undefined"; // WebGL attributes diff --git a/tools/under-control/src/third_party/blink/renderer/modules/canvas/offscreencanvas2d/offscreen_canvas_rendering_context_2d.idl b/tools/under-control/src/third_party/blink/renderer/modules/canvas/offscreencanvas2d/offscreen_canvas_rendering_context_2d.idl index 05ace652c..e156a7fbe 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/canvas/offscreencanvas2d/offscreen_canvas_rendering_context_2d.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/canvas/offscreencanvas2d/offscreen_canvas_rendering_context_2d.idl @@ -11,8 +11,11 @@ // back-reference to the canvas [ImplementedAs=offscreenCanvasForBinding] readonly attribute OffscreenCanvas canvas; + [RuntimeEnabled=OffscreenCanvasGetContextAttributes] CanvasRenderingContext2DSettings getContextAttributes(); + }; OffscreenCanvasRenderingContext2D includes BaseRenderingContext2D; OffscreenCanvasRenderingContext2D includes CanvasPath; OffscreenCanvasRenderingContext2D includes Canvas2dGPUTransfer; +OffscreenCanvasRenderingContext2D includes CanvasRecordingContext2D; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/compression/compression_stream.idl b/tools/under-control/src/third_party/blink/renderer/modules/compression/compression_stream.idl index dd74ace8f..78652ab22 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/compression/compression_stream.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/compression/compression_stream.idl @@ -1,5 +1,5 @@ [ - Exposed=(Window,Worker) + Exposed=(Window,Worker,ShadowRealm) // TODO(crbug.com/41480387): This should be Exposed=* ] interface CompressionStream { [CallWith=ScriptState, RaisesException, MeasureAs=CompressionStreamConstructor] constructor(DOMString format); readonly attribute ReadableStream readable; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/compression/decompression_stream.idl b/tools/under-control/src/third_party/blink/renderer/modules/compression/decompression_stream.idl index 281d1dc5f..7856196ec 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/compression/decompression_stream.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/compression/decompression_stream.idl @@ -1,5 +1,5 @@ [ - Exposed=(Window,Worker) + Exposed=(Window,Worker,ShadowRealm) // TODO(crbug.com/41480387): This should be Exposed=* ] interface DecompressionStream { [CallWith=ScriptState, RaisesException, MeasureAs=DecompressionStreamConstructor] constructor(DOMString format); readonly attribute ReadableStream readable; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/authentication_extensions_payment_inputs.idl b/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/authentication_extensions_payment_inputs.idl index 1cfaed941..61b236bbc 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/authentication_extensions_payment_inputs.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/authentication_extensions_payment_inputs.idl @@ -6,5 +6,8 @@ dictionary AuthenticationExtensionsPaymentInputs { boolean isPayment; + + // A sequence of public key credential creation parameters for the browser bound key. + [RuntimeEnabled=SecurePaymentConfirmationBrowserBoundKeys] sequence browserBoundPubKeyCredParams; }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/authentication_extensions_payment_outputs.idl b/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/authentication_extensions_payment_outputs.idl index b6fda9aae..a253eeabc 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/authentication_extensions_payment_outputs.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/authentication_extensions_payment_outputs.idl @@ -4,7 +4,7 @@ // Outputs related to the payment extension. dictionary AuthenticationExtensionsPaymentOutputs { - // A sequence of signatures corresponding to the browser bound public keys in + // A signature corresponding to the browser bound public key in // clientDataJson. - sequence browser_bound_signatures; + AuthenticationExtensionsPaymentBrowserBoundSignature browser_bound_signature; }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/digital_credential.idl b/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/digital_credential.idl index a2ac28b3f..b2180a85b 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/digital_credential.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/digital_credential.idl @@ -13,5 +13,5 @@ readonly attribute USVString protocol; // https://wicg.github.io/digital-identities/#dom-digitalcredential-data - readonly attribute USVString data; + [SameObject] readonly attribute USVString data; }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/digital_credential_request_options.idl b/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/digital_credential_request_options.idl index 931c85b03..a0a79e73d 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/digital_credential_request_options.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/digital_credential_request_options.idl @@ -4,7 +4,8 @@ // https://wicg.github.io/digital-identities/#the-digitalcredentialrequestoptions-dictionary dictionary DigitalCredentialRequestOptions { - required sequence providers; + sequence providers; + sequence requests; }; // https://wicg.github.io/digital-identities/#dom-identityrequestprovider @@ -12,3 +13,8 @@ dictionary IdentityRequestProvider { required DOMString protocol; required (object or DOMString) request; }; + +dictionary DigitalCredentialRequest { + required DOMString protocol; + required (object or DOMString) data; +}; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/identity_provider.idl b/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/identity_provider.idl index c7e9d1fe3..32a1a3559 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/identity_provider.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/identity_provider.idl @@ -27,7 +27,7 @@ dictionary IdentityProviderToken { [CallWith=ScriptState, RaisesException, MeasureAs=FedCmUserInfo] static Promise> getUserInfo(IdentityProviderConfig config); - [RuntimeEnabled=FedCmIdpSigninStatus, CallWith=ScriptState] + [RuntimeEnabled=FedCm, CallWith=ScriptState] static void close(); [RuntimeEnabled=FedCmIdPRegistration, CallWith=ScriptState, ImplementedAs=registerIdentityProvider] diff --git a/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/identity_provider_account.idl b/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/identity_provider_account.idl new file mode 100755 index 000000000..744cdd0d7 --- /dev/null +++ b/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/identity_provider_account.idl @@ -0,0 +1,16 @@ +// 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://w3c-fedid.github.io/FedCM/#dictdef-identityprovideraccount + +dictionary IdentityProviderAccount { + required USVString id; + required USVString name; + required USVString email; + USVString given_name; + USVString picture; + sequence approved_clients; + sequence login_hints; + sequence domain_hints; +}; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/navigator_login.idl b/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/navigator_login.idl index 6303dc21d..b02409cb8 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/navigator_login.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/navigator_login.idl @@ -10,19 +10,31 @@ enum LoginStatus { "logged-out", }; +dictionary LoginStatusOptions { + // A list of account metadata associated with the currently signed-in + // sessions for this IdP. + sequence accounts; + // Duration after which the account metadata associated with this origin + // should be cleared. Specified in milliseconds. If not set, account metadata + // does not expire. Expiration does not impact the LoginStatus value. + unsigned long long expiration; +}; + [ ImplementedAs=NavigatorLogin ] partial interface Navigator { - [SecureContext, RuntimeEnabled=FedCmIdpSigninStatus] readonly attribute NavigatorLogin login; + [SecureContext, RuntimeEnabled=FedCm] readonly attribute NavigatorLogin login; }; [ Exposed=Window, SecureContext, - RuntimeEnabled=FedCmIdpSigninStatus + RuntimeEnabled=FedCm ] interface NavigatorLogin { [CallWith=ScriptState, MeasureAs=FedCmIdpSigninStatusJsApi] Promise setStatus(LoginStatus status); + [CallWith=ScriptState, MeasureAs=FedCmIdpSigninStatusJsApi, RuntimeEnabled=FedCmLightweightMode] + Promise setStatus(LoginStatus status, LoginStatusOptions options); }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/csspaint/paint_rendering_context_2d.idl b/tools/under-control/src/third_party/blink/renderer/modules/csspaint/paint_rendering_context_2d.idl index b86e848b9..63020b184 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/csspaint/paint_rendering_context_2d.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/csspaint/paint_rendering_context_2d.idl @@ -7,91 +7,6 @@ [ Exposed=PaintWorklet ] interface PaintRenderingContext2D { - // state - void save(); // push state on state stack - [NoAllocDirectCall, RaisesException] void restore(); // pop state stack if top state was pushed by save, and restore state - [MeasureAs=Canvas2DLayers, RuntimeEnabled=Canvas2dLayers, CallWith=ScriptState] void beginLayer(); // push state on state stack and creates bitmap for subsequent draw ops - [MeasureAs=Canvas2DLayers, RuntimeEnabled=Canvas2dLayersWithOptions, CallWith=ScriptState, RaisesException] void beginLayer(BeginLayerOptions options); // push state on state stack and creates bitmap for subsequent draw ops - [NoAllocDirectCall, RuntimeEnabled=Canvas2dLayers, RaisesException] void endLayer(); // pop state stack if top state was pushed by beginLayer, restore state and draw the bitmap - // Clear the canvas and reset the path - void reset(); - - // transformations (default transform is the identity matrix) - [HighEntropy] void scale(unrestricted double x, unrestricted double y); - [HighEntropy, NoAllocDirectCall] void rotate(unrestricted double angle); - [HighEntropy] void translate(unrestricted double x, unrestricted double y); - [HighEntropy] void transform(unrestricted double a, unrestricted double b, unrestricted double c, unrestricted double d, unrestricted double e, unrestricted double f); - [HighEntropy] void setTransform(unrestricted double a, unrestricted double b, unrestricted double c, unrestricted double d, unrestricted double e, unrestricted double f); - [NoAllocDirectCall] void resetTransform(); - [RaisesException] void setTransform(optional DOMMatrixInit transform = {}); - DOMMatrix getTransform(); - - - // compositing - attribute unrestricted double globalAlpha; // (default 1.0) - [HighEntropy] attribute DOMString globalCompositeOperation; // (default source-over) - [MeasureAs=Canvas2DFilter, SetterCallWith=ScriptState] attribute (DOMString or CanvasFilter)? filter; // (default 'none') - - // image smoothing - attribute boolean imageSmoothingEnabled; // (default True) - [RuntimeEnabled=CanvasImageSmoothing, MeasureAs=Canvas2DImageSmoothingQuality2] attribute ImageSmoothingQuality imageSmoothingQuality; // (default "low") - - // colors and styles (see also the CanvasDrawingStyles interface) - [HighEntropy, SetterCallWith=Isolate, RaisesException=Setter, GetterCallWith=ScriptState] attribute any strokeStyle; // (default black) - [HighEntropy, SetterCallWith=Isolate, RaisesException=Setter, GetterCallWith=ScriptState] attribute any fillStyle; // (default black) - CanvasGradient createLinearGradient(double x0, double y0, double x1, double y1); - [RaisesException] CanvasGradient createRadialGradient(double x0, double y0, double r0, double x1, double y1, double r1); - [RaisesException] CanvasPattern? createPattern(CanvasImageSource image, [LegacyNullToEmptyString] DOMString repetitionType); - CanvasGradient createConicGradient(double startAngle, double cx, double cy); - - // shadows - [HighEntropy] attribute unrestricted double shadowOffsetX; - [HighEntropy] attribute unrestricted double shadowOffsetY; - [HighEntropy] attribute unrestricted double shadowBlur; - [HighEntropy] attribute DOMString shadowColor; - - // rects - [HighEntropy, NoAllocDirectCall] void clearRect(unrestricted double x, unrestricted double y, unrestricted double width, unrestricted double height); - [HighEntropy, NoAllocDirectCall] void fillRect(unrestricted double x, unrestricted double y, unrestricted double width, unrestricted double height); - [HighEntropy, NoAllocDirectCall] void strokeRect(unrestricted double x, unrestricted double y, unrestricted double width, unrestricted double height); - - // path API (see also CanvasPath) - [HighEntropy, NoAllocDirectCall] void beginPath(); - [HighEntropy] void fill(optional CanvasFillRule winding); - [HighEntropy] void fill(Path2D path, optional CanvasFillRule winding); - [HighEntropy, NoAllocDirectCall] void stroke(); - [HighEntropy] void stroke(Path2D path); - - [HighEntropy] void clip(optional CanvasFillRule winding); - [HighEntropy] void clip(Path2D path, optional CanvasFillRule winding); - [HighEntropy, MeasureAs=Canvas2DIsPointInPath] boolean isPointInPath(unrestricted double x, unrestricted double y, optional CanvasFillRule winding); - [HighEntropy, MeasureAs=Canvas2DIsPointInPath] boolean isPointInPath(Path2D path, unrestricted double x, unrestricted double y, optional CanvasFillRule winding); - [HighEntropy, MeasureAs=Canvas2DIsPointInStroke] boolean isPointInStroke(unrestricted double x, unrestricted double y); - [HighEntropy, MeasureAs=Canvas2DIsPointInStroke] boolean isPointInStroke(Path2D path, unrestricted double x, unrestricted 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); - - // triangle mesh API - [MeasureAs=Canvas2DMesh, RuntimeEnabled=Canvas2dMesh, RaisesException] Mesh2DVertexBuffer createMesh2DVertexBuffer(Float32Array buffer); - [MeasureAs=Canvas2DMesh, RuntimeEnabled=Canvas2dMesh, RaisesException] Mesh2DUVBuffer createMesh2DUVBuffer(Float32Array buffer); - [MeasureAs=Canvas2DMesh, RuntimeEnabled=Canvas2dMesh, RaisesException] Mesh2DIndexBuffer createMesh2DIndexBuffer(Uint16Array buffer); - [MeasureAs=Canvas2DMesh, RuntimeEnabled=Canvas2dMesh, HighEntropy, RaisesException] void drawMesh(Mesh2DVertexBuffer vertex_buffer, - Mesh2DUVBuffer uv_buffer, - Mesh2DIndexBuffer index_buffer, - CanvasImageSource image); - // FIXME: factor out to CanvasDrawingStyles - // line caps/joins - attribute unrestricted double lineWidth; // (default 1) - attribute DOMString lineCap; // "butt", "round", "square" (default "butt") - attribute DOMString lineJoin; // "round", "bevel", "miter" (default "miter") - attribute unrestricted double miterLimit; // (default 10) - - // dashed lines - void setLineDash(sequence dash); - sequence getLineDash(); - attribute unrestricted double lineDashOffset; }; PaintRenderingContext2D includes CanvasPath; +PaintRenderingContext2D includes CanvasRecordingContext2D; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/encoding/text_decoder.idl b/tools/under-control/src/third_party/blink/renderer/modules/encoding/text_decoder.idl index f986eeb3d..9dfed6ed3 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/encoding/text_decoder.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/encoding/text_decoder.idl @@ -31,7 +31,7 @@ // https://encoding.spec.whatwg.org/#textdecoder [ - Exposed=(Window,Worker,SharedStorageWorklet) + Exposed=(Window,Worker,SharedStorageWorklet,ShadowRealm) // TODO(crbug.com/41480387): This should be Exposed=* ] interface TextDecoder { [RaisesException, MeasureAs=TextDecoderConstructor] constructor(optional DOMString label = "utf-8", optional TextDecoderOptions options = {}); readonly attribute DOMString encoding; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/encoding/text_decoder_stream.idl b/tools/under-control/src/third_party/blink/renderer/modules/encoding/text_decoder_stream.idl index 477c89093..b5f09ee82 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/encoding/text_decoder_stream.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/encoding/text_decoder_stream.idl @@ -4,7 +4,7 @@ // https://encoding.spec.whatwg.org/#interface-textdecoderstream [ - Exposed=(Window,Worker) + Exposed=(Window,Worker,ShadowRealm) // TODO(crbug.com/41480387): This should be Exposed=* ] interface TextDecoderStream { [CallWith=ScriptState, RaisesException, MeasureAs=TextDecoderStreamConstructor] constructor(optional DOMString label = "utf-8", optional TextDecoderOptions options = {}); readonly attribute DOMString encoding; 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 a60ed7c32..9a6547f2e 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 @@ -29,7 +29,7 @@ */ [ - Exposed=(Window,Worker,SharedStorageWorklet) + Exposed=(Window,Worker,SharedStorageWorklet,ShadowRealm) // TODO(crbug.com/41480387): This should be Exposed=* ] interface TextEncoder { [CallWith=ExecutionContext, RaisesException, MeasureAs=TextEncoderConstructor] constructor(); readonly attribute DOMString encoding; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/encoding/text_encoder_stream.idl b/tools/under-control/src/third_party/blink/renderer/modules/encoding/text_encoder_stream.idl index 48aec92dd..d2c71dee4 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/encoding/text_encoder_stream.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/encoding/text_encoder_stream.idl @@ -4,7 +4,7 @@ // https://encoding.spec.whatwg.org/#interface-textencoderstream [ - Exposed=(Window,Worker) + Exposed=(Window,Worker,ShadowRealm) // TODO(crbug.com/41480387): This should be Exposed=* ] interface TextEncoderStream { [CallWith=ScriptState, RaisesException, MeasureAs=TextEncoderStreamConstructor] constructor(); readonly attribute DOMString encoding; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/hid/hid_device.idl b/tools/under-control/src/third_party/blink/renderer/modules/hid/hid_device.idl index 217858142..b749d3200 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/hid/hid_device.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/hid/hid_device.idl @@ -54,7 +54,7 @@ CallWith=ScriptState, MeasureAs=HidDeviceSendReport ] Promise sendReport( - [EnforceRange] octet reportId, BufferSource data); + [EnforceRange] octet reportId, [PassAsSpan] BufferSource data); // Send a feature report to the device. Set |reportId| to the first byte of // the report and |data| to the remaining bytes. Set |reportId| to zero if @@ -64,7 +64,7 @@ CallWith=ScriptState, MeasureAs=HidDeviceSendFeatureReport ] Promise sendFeatureReport( - [EnforceRange] octet reportId, BufferSource data); + [EnforceRange] octet reportId, [PassAsSpan] BufferSource data); // Request a feature report from the device. Set |reportId| to the ID of the // feature report to request, or zero if the device does not use report IDs. diff --git a/tools/under-control/src/third_party/blink/renderer/modules/locks/navigator_locks.idl b/tools/under-control/src/third_party/blink/renderer/modules/locks/navigator_locks.idl index 21c7c562e..49afa4e6a 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/locks/navigator_locks.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/locks/navigator_locks.idl @@ -8,5 +8,6 @@ Exposed=Window, ImplementedAs=LockManager ] partial interface Navigator { + [RaisesException] readonly attribute LockManager locks; }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/locks/shared_storage_worklet_navigator_locks.idl b/tools/under-control/src/third_party/blink/renderer/modules/locks/shared_storage_worklet_navigator_locks.idl index d79be9a95..105a9cece 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/locks/shared_storage_worklet_navigator_locks.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/locks/shared_storage_worklet_navigator_locks.idl @@ -10,5 +10,6 @@ Exposed=SharedStorageWorklet, ImplementedAs=LockManager ] partial interface SharedStorageWorkletNavigator { + [RaisesException] readonly attribute LockManager locks; }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/locks/worker_navigator_locks.idl b/tools/under-control/src/third_party/blink/renderer/modules/locks/worker_navigator_locks.idl index 5f9e6aaf3..7dd9b8084 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/locks/worker_navigator_locks.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/locks/worker_navigator_locks.idl @@ -8,5 +8,6 @@ Exposed=Worker, ImplementedAs=LockManager ] partial interface WorkerNavigator { + [RaisesException] readonly attribute LockManager locks; }; 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 8004249fc..bcb5ae556 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 @@ -16,153 +16,163 @@ dictionary MLContextLostInfo { DOMString message; }; -dictionary MLSupportLimits { +dictionary MLDataTypeLimits { sequence dataTypes; }; +dictionary MLRankRange { + unsigned long min; + unsigned long max; +}; + +dictionary MLTensorLimits : MLDataTypeLimits { + MLRankRange rankRange; +}; + dictionary MLBinarySupportLimits { - MLSupportLimits a; - MLSupportLimits b; - MLSupportLimits output; + MLTensorLimits a; + MLTensorLimits b; + MLDataTypeLimits output; }; dictionary MLBatchNormalizationSupportLimits { - MLSupportLimits input; - MLSupportLimits mean; - MLSupportLimits variance; - MLSupportLimits scale; - MLSupportLimits bias; - MLSupportLimits output; + MLDataTypeLimits input; + MLDataTypeLimits mean; + MLDataTypeLimits variance; + MLDataTypeLimits scale; + MLDataTypeLimits bias; + MLDataTypeLimits output; }; dictionary MLConcatSupportLimits { - MLSupportLimits inputs; - MLSupportLimits output; + MLDataTypeLimits inputs; + MLDataTypeLimits output; }; dictionary MLConv2dSupportLimits { - MLSupportLimits input; - MLSupportLimits filter; - MLSupportLimits bias; - MLSupportLimits output; + MLDataTypeLimits input; + MLDataTypeLimits filter; + MLDataTypeLimits bias; + MLDataTypeLimits output; }; dictionary MLCumulativeSumSupportLimits { - MLSupportLimits input; - MLSupportLimits output; + MLDataTypeLimits input; + MLDataTypeLimits output; }; dictionary MLGatherSupportLimits { - MLSupportLimits input; - MLSupportLimits indices; - MLSupportLimits output; + MLDataTypeLimits input; + MLDataTypeLimits indices; + MLDataTypeLimits output; }; dictionary MLGemmSupportLimits { - MLSupportLimits a; - MLSupportLimits b; - MLSupportLimits c; - MLSupportLimits output; + MLDataTypeLimits a; + MLDataTypeLimits b; + MLDataTypeLimits c; + MLDataTypeLimits output; }; dictionary MLGruSupportLimits { - MLSupportLimits input; - MLSupportLimits weight; - MLSupportLimits recurrentWeight; - MLSupportLimits bias; - MLSupportLimits recurrentBias; - MLSupportLimits initialHiddenState; - MLSupportLimits outputs; + MLDataTypeLimits input; + MLDataTypeLimits weight; + MLDataTypeLimits recurrentWeight; + MLDataTypeLimits bias; + MLDataTypeLimits recurrentBias; + MLDataTypeLimits initialHiddenState; + MLDataTypeLimits outputs; }; dictionary MLGruCellSupportLimits { - MLSupportLimits input; - MLSupportLimits weight; - MLSupportLimits recurrentWeight; - MLSupportLimits hiddenState; - MLSupportLimits bias; - MLSupportLimits recurrentBias; - MLSupportLimits output; + MLDataTypeLimits input; + MLDataTypeLimits weight; + MLDataTypeLimits recurrentWeight; + MLDataTypeLimits hiddenState; + MLDataTypeLimits bias; + MLDataTypeLimits recurrentBias; + MLDataTypeLimits output; }; dictionary MLLstmSupportLimits { - MLSupportLimits input; - MLSupportLimits weight; - MLSupportLimits recurrentWeight; - MLSupportLimits bias; - MLSupportLimits recurrentBias; - MLSupportLimits peepholeWeight; - MLSupportLimits initialHiddenState; - MLSupportLimits initialCellState; - MLSupportLimits outputs; + MLDataTypeLimits input; + MLDataTypeLimits weight; + MLDataTypeLimits recurrentWeight; + MLDataTypeLimits bias; + MLDataTypeLimits recurrentBias; + MLDataTypeLimits peepholeWeight; + MLDataTypeLimits initialHiddenState; + MLDataTypeLimits initialCellState; + MLDataTypeLimits outputs; }; dictionary MLLstmCellSupportLimits { - MLSupportLimits input; - MLSupportLimits weight; - MLSupportLimits recurrentWeight; - MLSupportLimits hiddenState; - MLSupportLimits cellState; - MLSupportLimits bias; - MLSupportLimits recurrentBias; - MLSupportLimits peepholeWeight; - MLSupportLimits outputs; + MLDataTypeLimits input; + MLDataTypeLimits weight; + MLDataTypeLimits recurrentWeight; + MLDataTypeLimits hiddenState; + MLDataTypeLimits cellState; + MLDataTypeLimits bias; + MLDataTypeLimits recurrentBias; + MLDataTypeLimits peepholeWeight; + MLDataTypeLimits outputs; }; dictionary MLNormalizationSupportLimits { - MLSupportLimits input; - MLSupportLimits scale; - MLSupportLimits bias; - MLSupportLimits output; + MLDataTypeLimits input; + MLDataTypeLimits scale; + MLDataTypeLimits bias; + MLDataTypeLimits output; }; dictionary MLPreluSupportLimits { - MLSupportLimits input; - MLSupportLimits slope; - MLSupportLimits output; + MLDataTypeLimits input; + MLDataTypeLimits slope; + MLDataTypeLimits output; }; dictionary MLQuantizeDequantizeLinearSupportLimits { - MLSupportLimits input; - MLSupportLimits scale; - MLSupportLimits zeroPoint; - MLSupportLimits output; + MLDataTypeLimits input; + MLDataTypeLimits scale; + MLDataTypeLimits zeroPoint; + MLDataTypeLimits output; }; dictionary MLLogicalNotSupportLimits { - MLSupportLimits a; - MLSupportLimits output; + MLTensorLimits a; + MLDataTypeLimits output; }; dictionary MLSingleInputSupportLimits { - MLSupportLimits input; - MLSupportLimits output; + MLTensorLimits input; + MLDataTypeLimits output; }; dictionary MLScatterSupportLimits { - MLSupportLimits input; - MLSupportLimits indices; - MLSupportLimits updates; - MLSupportLimits output; + MLDataTypeLimits input; + MLDataTypeLimits indices; + MLDataTypeLimits updates; + MLDataTypeLimits output; }; dictionary MLSplitSupportLimits { - MLSupportLimits input; - MLSupportLimits outputs; + MLTensorLimits input; + MLDataTypeLimits outputs; }; dictionary MLWhereSupportLimits { - MLSupportLimits condition; - MLSupportLimits trueValue; - MLSupportLimits falseValue; - MLSupportLimits output; + MLTensorLimits condition; + MLTensorLimits trueValue; + MLTensorLimits falseValue; + MLDataTypeLimits output; }; dictionary MLOpSupportLimits { MLInputOperandLayout preferredInputLayout; - MLSupportLimits input; - MLSupportLimits constant; - MLSupportLimits output; + [EnforceRange] unsigned long long maxTensorByteLength; + MLDataTypeLimits input; + MLDataTypeLimits constant; + MLDataTypeLimits output; MLSingleInputSupportLimits argMin; MLSingleInputSupportLimits argMax; @@ -190,6 +200,7 @@ dictionary MLOpSupportLimits { MLBinarySupportLimits greaterOrEqual; MLBinarySupportLimits lesser; MLBinarySupportLimits lesserOrEqual; + MLBinarySupportLimits notEqual; MLBinarySupportLimits logicalAnd; MLBinarySupportLimits logicalOr; MLBinarySupportLimits logicalXor; 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 1137f74b1..8832864d1 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 @@ -268,6 +268,7 @@ dictionary MLTriangularOptions : MLOperatorOptions { [RaisesException] MLOperand greaterOrEqual(MLOperand a, MLOperand b, optional MLOperatorOptions options = {}); [RaisesException] MLOperand lesser(MLOperand a, MLOperand b, optional MLOperatorOptions options = {}); [RaisesException] MLOperand lesserOrEqual(MLOperand a, MLOperand b, optional MLOperatorOptions options = {}); + [RaisesException] MLOperand notEqual(MLOperand a, MLOperand b, optional MLOperatorOptions options = {}); [RaisesException] MLOperand logicalAnd(MLOperand a, MLOperand b, optional MLOperatorOptions options = {}); [RaisesException] MLOperand logicalOr(MLOperand a, MLOperand b, optional MLOperatorOptions options = {}); [RaisesException] MLOperand logicalXor(MLOperand a, MLOperand b, optional MLOperatorOptions options = {}); diff --git a/tools/under-control/src/third_party/blink/renderer/modules/payments/payment_request.idl b/tools/under-control/src/third_party/blink/renderer/modules/payments/payment_request.idl index cf29f3eb1..a38674a0f 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/payments/payment_request.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/payments/payment_request.idl @@ -25,4 +25,7 @@ attribute EventHandler onshippingaddresschange; attribute EventHandler onshippingoptionchange; [RuntimeEnabled=PaymentMethodChangeEvent] attribute EventHandler onpaymentmethodchange; + + // https://w3c.github.io/secure-payment-confirmation/#sctn-secure-payment-confirmation-available-api + [RuntimeEnabled=IsSecurePaymentConfirmationAvailableAPI, CallWith=ScriptState] static Promise isSecurePaymentConfirmationAvailable(); }; 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 61941fe03..791ca40f6 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 @@ -8,12 +8,12 @@ [ Exposed=(Window, DedicatedWorker) ] interface RTCEncodedAudioFrame { - [Measure, RaisesException] + [Measure, CallWith=ExecutionContext, RaisesException] constructor (RTCEncodedAudioFrame originalFrame, optional RTCEncodedAudioFrameOptions options = {}); [Measure] readonly attribute unsigned long timestamp; // RTP timestamp. [CallWith=ExecutionContext] attribute ArrayBuffer data; - RTCEncodedAudioFrameMetadata getMetadata(); + [CallWith=ExecutionContext] RTCEncodedAudioFrameMetadata getMetadata(); [CallWith=ExecutionContext] stringifier; - [RuntimeEnabled=RTCEncodedFrameSetMetadata, Measure, RaisesException] - void setMetadata(RTCEncodedAudioFrameMetadata metadata); + [RuntimeEnabled=RTCEncodedFrameSetMetadata, CallWith=ExecutionContext, Measure, RaisesException] + void setMetadata(RTCEncodedAudioFrameMetadata metadata); }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_encoded_audio_frame_metadata.idl b/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_encoded_audio_frame_metadata.idl index 6ec424d23..ac159f160 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_encoded_audio_frame_metadata.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_encoded_audio_frame_metadata.idl @@ -13,4 +13,7 @@ dictionary RTCEncodedAudioFrameMetadata { unsigned short? sequenceNumber; [RuntimeEnabled=RTCEncodedAudioFrameAbsCaptureTime] unsigned long long absCaptureTime; unsigned long rtpTimestamp; + [RuntimeEnabled=RTCEncodedFrameTimestamps] DOMHighResTimeStamp receiveTime; + [RuntimeEnabled=RTCEncodedFrameTimestamps] DOMHighResTimeStamp captureTime; + //[RuntimeEnabled=RTCEncodedTimestamps]DOMHighResTimeStamp senderCaptureTimeOffset }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/shared_storage/shared_storage_private_aggregation_config.idl b/tools/under-control/src/third_party/blink/renderer/modules/shared_storage/shared_storage_private_aggregation_config.idl index 48d97e789..4fd52505e 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/shared_storage/shared_storage_private_aggregation_config.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/shared_storage/shared_storage_private_aggregation_config.idl @@ -2,4 +2,6 @@ dictionary SharedStoragePrivateAggregationConfig { USVString aggregationCoordinatorOrigin; USVString contextId; [EnforceRange] unsigned long long filteringIdMaxBytes; + [EnforceRange, RuntimeEnabled=PrivateAggregationApiMaxContributions] + unsigned long long maxContributions; }; 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 9d771cb6b..ad1fefe9d 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 @@ -26,9 +26,16 @@ // https://w3c.github.io/speech-api/#speechrecognition enum SpeechRecognitionMode { - "ondevice-preferred", // On-device speech recognition if available, otherwise use Cloud speech recognition as a fallback. - "ondevice-only", // On-device speech recognition only. Returns an error if on-device speech recognition is not available. - "cloud-only", // Cloud speech recognition only. + // On-device speech recognition if available, otherwise use Cloud speech + // recognition as a fallback. + "ondevice-preferred", + + // On-device speech recognition only. Throws a language-not-supported error + // if on-device speech recognition is not available for the given language. + "ondevice-only", + + // Cloud speech recognition only. + "cloud-only", }; [ @@ -46,12 +53,17 @@ enum SpeechRecognitionMode { attribute boolean interimResults; attribute unsigned long maxAlternatives; [RuntimeEnabled=MediaStreamTrackWebSpeech] attribute SpeechRecognitionMode mode; + [RuntimeEnabled=WebSpeechRecognitionContext] attribute SpeechRecognitionContext context; // methods to drive the speech interaction [RaisesException, Measure] void start(); [RaisesException, Measure, RuntimeEnabled=MediaStreamTrackWebSpeech] void start(MediaStreamTrack track); [ImplementedAs=stopFunction] void stop(); void abort(); + [ + RaisesException, + RuntimeEnabled=WebSpeechRecognitionContext + ] void updateContext(SpeechRecognitionContext context); [ CallWith=ScriptState, RaisesException, diff --git a/tools/under-control/src/third_party/blink/renderer/modules/webaudio/testing/internals_web_audio.idl b/tools/under-control/src/third_party/blink/renderer/modules/webaudio/testing/internals_web_audio.idl index 0ad74502b..8de3271a8 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/webaudio/testing/internals_web_audio.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/webaudio/testing/internals_web_audio.idl @@ -8,4 +8,5 @@ unsigned long audioHandlerCount(); unsigned long audioWorkletProcessorCount(); void emulateDeviceFailureOnAudioContext(AudioContext context); + boolean isSilenceDetectionActive(AudioContext context); }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/webcodecs/video_encoder_encode_options.idl b/tools/under-control/src/third_party/blink/renderer/modules/webcodecs/video_encoder_encode_options.idl index 9e5b65dc8..8d00a7c5d 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/webcodecs/video_encoder_encode_options.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/webcodecs/video_encoder_encode_options.idl @@ -9,6 +9,7 @@ dictionary VideoEncoderEncodeOptions { VideoEncoderEncodeOptionsForVp9 vp9; VideoEncoderEncodeOptionsForAv1 av1; VideoEncoderEncodeOptionsForAvc avc; + VideoEncoderEncodeOptionsForHevc hevc; // Buffers that can be used for inter-frame prediction while encoding a given // frame. If this array is empty we basically ask for an intra-frame. diff --git a/tools/under-control/src/third_party/blink/renderer/modules/webcodecs/video_encoder_encode_options_for_hevc.idl b/tools/under-control/src/third_party/blink/renderer/modules/webcodecs/video_encoder_encode_options_for_hevc.idl new file mode 100755 index 000000000..ace87998f --- /dev/null +++ b/tools/under-control/src/third_party/blink/renderer/modules/webcodecs/video_encoder_encode_options_for_hevc.idl @@ -0,0 +1,9 @@ +// Copyright 2025 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/web-codecs + +dictionary VideoEncoderEncodeOptionsForHevc { + unsigned short quantizer; +}; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_adapter_info.idl b/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_adapter_info.idl index 667118c6a..dbf84c33d 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_adapter_info.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_adapter_info.idl @@ -12,6 +12,9 @@ [HighEntropy] readonly attribute DOMString architecture; [HighEntropy] readonly attribute DOMString device; [HighEntropy] readonly attribute DOMString description; + // Note that WebGPUSubgroupsFeatures is implied by WebGPUExperimentalFeatures. + [RuntimeEnabled=WebGPUSubgroupsFeatures] readonly attribute unsigned long subgroupMinSize; + [RuntimeEnabled=WebGPUSubgroupsFeatures] readonly attribute unsigned long subgroupMaxSize; [RuntimeEnabled=WebGPUDeveloperFeatures] readonly attribute DOMString driver; [RuntimeEnabled=WebGPUDeveloperFeatures] readonly attribute DOMString backend; [RuntimeEnabled=WebGPUDeveloperFeatures] readonly attribute DOMString type; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_supported_features.idl b/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_supported_features.idl index 2673a9ed9..92160940c 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_supported_features.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_supported_features.idl @@ -19,15 +19,13 @@ enum GPUFeatureName { "float32-blendable", "clip-distances", "dual-source-blending", + "subgroups", // Non-standard (not currently in the spec). "chromium-experimental-timestamp-query-inside-passes", "chromium-experimental-multi-draw-indirect", "chromium-experimental-unorm16-texture-formats", "chromium-experimental-snorm16-texture-formats", - // Currently subgroups features are under OT. - "subgroups", - "subgroups-f16", }; [ diff --git a/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_supported_limits.idl b/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_supported_limits.idl index 895b342a0..3c363b912 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_supported_limits.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_supported_limits.idl @@ -40,9 +40,6 @@ readonly attribute unsigned long maxComputeWorkgroupSizeY; readonly attribute unsigned long maxComputeWorkgroupSizeZ; readonly attribute unsigned long maxComputeWorkgroupsPerDimension; - // Note that WebGPUSubgroupsFeatures is implied by WebGPUExperimentalFeatures. - [RuntimeEnabled=WebGPUSubgroupsFeatures] readonly attribute unsigned long minSubgroupSize; - [RuntimeEnabled=WebGPUSubgroupsFeatures] readonly attribute unsigned long maxSubgroupSize; [RuntimeEnabled=WebGPUExperimentalFeatures] readonly attribute unsigned long maxStorageBuffersInFragmentStage; [RuntimeEnabled=WebGPUExperimentalFeatures] readonly attribute unsigned long maxStorageTexturesInFragmentStage; [RuntimeEnabled=WebGPUExperimentalFeatures] readonly attribute unsigned long maxStorageBuffersInVertexStage; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/webgpu/wgsl_language_features.idl b/tools/under-control/src/third_party/blink/renderer/modules/webgpu/wgsl_language_features.idl index 018830e91..af482a2fa 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/webgpu/wgsl_language_features.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/webgpu/wgsl_language_features.idl @@ -4,20 +4,6 @@ // https://gpuweb.github.io/gpuweb/ -enum WGSLFeatureName { - "readonly_and_readwrite_storage_textures", - "packed_4x8_integer_dot_product", - "unrestricted_pointer_parameters", - "pointer_composite_access", - - // Non-standard. - "chromium_testing_unimplemented", - "chromium_testing_unsafe_experimental", - "chromium_testing_experimental", - "chromium_testing_shipped_with_killswitch", - "chromium_testing_shipped", -}; - [ Exposed=(Window, Worker), SecureContext diff --git a/tools/under-control/src/third_party/blink/renderer/modules/webmidi/midi_connection_event.idl b/tools/under-control/src/third_party/blink/renderer/modules/webmidi/midi_connection_event.idl index fb46bf289..a05c8f17d 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/webmidi/midi_connection_event.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/webmidi/midi_connection_event.idl @@ -35,5 +35,5 @@ SecureContext ] interface MIDIConnectionEvent : Event { constructor(DOMString type, optional MIDIConnectionEventInit eventInitDict = {}); - readonly attribute MIDIPort port; + readonly attribute MIDIPort? port; }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/webmidi/midi_connection_event_init.idl b/tools/under-control/src/third_party/blink/renderer/modules/webmidi/midi_connection_event_init.idl index 6af2176b6..481083a79 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/webmidi/midi_connection_event_init.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/webmidi/midi_connection_event_init.idl @@ -5,7 +5,7 @@ // https://webaudio.github.io/web-midi-api/#MIDIConnectionEventInit dictionary MIDIConnectionEventInit : EventInit { - // TODO(foolip): |port| should be required and not nullable. + // TODO(crbug.com/40286113): `port` should be required and not nullable. // https://crbug.com/647693 // https://github.com/WebAudio/web-midi-api/issues/168 MIDIPort? port; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/webmidi/midi_message_event_init.idl b/tools/under-control/src/third_party/blink/renderer/modules/webmidi/midi_message_event_init.idl index d6cd9c24e..29ed5bf61 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/webmidi/midi_message_event_init.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/webmidi/midi_message_event_init.idl @@ -5,7 +5,7 @@ // https://webaudio.github.io/web-midi-api/#MIDIMessageEventInit dictionary MIDIMessageEventInit : EventInit { - // TODO(foolip): |data| should be required and not nullable. + // TODO(crbug.com/40286113): `data` should be required and not nullable. // https://crbug.com/647693 // https://github.com/WebAudio/web-midi-api/issues/168 Uint8Array? data; 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 8ca258f76..747ab52de 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 @@ -38,7 +38,7 @@ // shipped stable can have its runtime flag removed soon after. status: { valid_values: ["stable", "experimental", "test"], - valid_keys: ["Android", "Win", "ChromeOS_Ash", "ChromeOS_Lacros", "Mac", "Linux", "iOS"] + valid_keys: ["Android", "Win", "ChromeOS_Ash", "Mac", "Linux", "iOS"] }, // "implied_by" or "depends_on" specifies relationship to other features: @@ -240,6 +240,12 @@ name: "AccessibilityExposeDisplayNone", status: "test", }, + { + // If the author did not define aria-actions, surface button and link + // children inside option and menuitem elements as implicit actions. + name: "AccessibilityImplicitActions", + status: "experimental", + }, { // Use a minimum role of group on elements that are keyboard-focusable. // See https://w3c.github.io/html-aam/#minimum-role. @@ -303,7 +309,7 @@ name: "AIPromptAPI", public: true, status: "test", - implied_by: ["AIPromptAPIForWebPlatform"] + implied_by: ["AIPromptAPIForWebPlatform", "AIPromptAPIMultimodalInput"], }, { name: "AIPromptAPIForExtension", @@ -318,6 +324,11 @@ public: true, status: "test", }, + { + name: "AIPromptAPIMultimodalInput", + public: true, + status: "test", + }, { name: "AIRewriterAPI", public: true, @@ -340,6 +351,11 @@ name: "AllowContentInitiatedDataUrlNavigations", base_feature: "none", }, + // Fix for https://crbug.com/41238177. + { + name: "AllowCopyingEmptyLastTableCell", + status: "stable", + }, // If enabled, blink will not set the autofill state of a field after JS // modifies its value, and will instead leave it to the WebAutofillClient to // take care of the state setting. @@ -362,6 +378,11 @@ // net::features::kAllowSameSiteNoneCookiesInSandbox, which needs to be // enabled to make the whole feature work. }, + { + // https://crbug.com/40681200 + name: "AllowSkippingEditingBoundaryToMergeEnd", + status: "stable", + }, { name: "AllowSyntheticTimingForCanvasCapture", base_feature: "none", @@ -443,23 +464,6 @@ base_feature: "none", public: true, }, - { - name: "AttributionReportingCrossAppWeb", - base_feature: "none", - public: true, - status: "stable", - }, - { - // This only exists so we can use RuntimeEnabled in the IDL file - // when either implied_by flag is enabled. - name: "AttributionReportingInterface", - // This is not going into origin trial, "origin_trial_feature_name" is - // required for using the "implied_by" behaviour. - origin_trial_feature_name: "AttributionReportingInterface", - origin_trial_allows_third_party: true, - implied_by: ["AttributionReporting", "AttributionReportingCrossAppWeb"], - base_feature: "none", - }, { name: "AudioContextInterruptedState", status: "test", @@ -488,14 +492,9 @@ name: "AudioVideoTracks", status: "experimental", }, - // Re-enable this after crbug.com/378027651 is fixed. + // Killswitch. { name: "AuraScrollbarUsesNinePatchTrack", - status: "test", - }, - // Killswitch. Remove after 1 or 2 stable releases. - { - name: "AuraScrollbarUsesSolidColorThumb", status: "stable", }, { @@ -571,7 +570,6 @@ // platforms. See //services/shape_detection. "Android": "stable", "ChromeOS_Ash": "stable", - "ChromeOS_Lacros": "stable", "Mac": "stable", "default": "test", }, @@ -729,10 +727,6 @@ name: "CanvasHDR", status: "experimental", }, - { - name: "CanvasImageSmoothing", - status: "experimental", - }, { // https://crbug.com/377325952 name: "CanvasInterventions", @@ -781,6 +775,10 @@ name: "CaretPositionFromPoint", status: "stable", }, + { + name: "CascadedAfterChangeStyle", + status: "experimental", + }, { // Kill switch for changes to RenderFrameMetadataObserverImpl in connection with Engagement // Signals. See https://crrev.com/c/4544201 and https://crbug.com/1458640. @@ -802,6 +800,13 @@ name: "ClickToCapturedPointer", status: "experimental", }, + { + // Allows top-level sites to restrict collection of high-entropy UA client + // hints (from 3Ps, or itself) via the getHighEntropyValues API. + // crbug.com/385161047 + name: "ClientHintUAHighEntropyValuesPermissionPolicy", + status: "test", + }, // This ensures that clipboard event fires on a target node which is // focused in case no visible selection is present. // crbug.com/40735783 @@ -815,10 +820,6 @@ name: "ClipboardItemWithDOMStringSupport", status: "stable", }, - { - name: "ClipPathRejectEmptyPaths", - status: "stable", - }, { // Avoid queuing a task to fire a selectionchange event when there is already a task scheduled // to do that for the target according to the new spec: @@ -841,6 +842,7 @@ }, { name: "CompositeClipPathAnimation", + status: "experimental", public: true, }, { @@ -874,6 +876,10 @@ name: "ComputedAccessibilityInfo", status: "experimental", }, + { + name: "ComputeInsertionPositionBasedOnAnchorType", + status: "stable", + }, { name: "ComputePressure", status: { @@ -885,6 +891,10 @@ name: "ConcurrentViewTransitionsSPA", status: "stable", }, + { + name: "ConsiderFullChildNodeContentForListify", + status: "stable", + }, { name: "ContactsManager", status: {"Android": "stable", "default": "test"}, @@ -923,11 +933,6 @@ name: "CookieDeprecationFacilitatedTesting", base_feature: "none", }, - { - name: "CooperativeScheduling", - base_feature: "none", - public: true, - }, { name: "CoopRestrictProperties", origin_trial_feature_name: "CoopRestrictProperties", @@ -985,6 +990,26 @@ name: "CSSAnchorSizeInsetsMargins", status: "stable", }, + { + // https://github.com/w3c/csswg-drafts/issues/8942 + name: "CSSAnimationTrigger", + status: "test", + }, + { + name: "CSSAnimationTriggerRange", + status: "test", + implied_by: ["CSSAnimationTrigger"], + }, + { + name: "CSSAnimationTriggerTimeline", + status: "test", + implied_by: ["CSSAnimationTrigger"], + }, + { + name: "CSSAnimationTriggerType", + status: "test", + implied_by: ["CSSAnimationTrigger"], + }, { // Support for syntax in @property // https://drafts.css-houdini.org/css-properties-values-api-1/#syntax-strings @@ -1043,7 +1068,7 @@ }, { name: "CSSDynamicRangeLimit", - status: "experimental", + status: "stable", }, { // Include custom properties in CSSComputedStyleDeclaration::item/length. @@ -1079,6 +1104,13 @@ name: "CSSInert", status: "experimental", }, + { + // CSS if() function for custom properties. Supports only style + // queries in conditions. + // https://github.com/w3c/csswg-drafts/issues/10064. + name: "CSSInlineIfForStyleQueries", + status: "test", + }, { // https://chromestatus.com/feature/6289894144212992 name: "CSSKeyframesRuleLength", @@ -1093,9 +1125,8 @@ status: "experimental", }, { - // https://github.com/w3c/csswg-drafts/issues/10435 - name: "CSSLineClampWebkitBoxBlockification", - status: "stable", + name: "CSSLineClampLineBreakingEllipsis", + depends_on: ["CSSLineClamp"], }, { name: "CSSLogicalOverflow", @@ -1111,6 +1142,7 @@ }, { name: "CSSMixins", + status: "test", }, { name: "CSSNestedPseudoElements", @@ -1209,6 +1241,11 @@ name: "CSSResizeAuto", status: "stable", }, + { + // Enables env(safe-area-max-inset-*). + // https://github.com/w3c/csswg-drafts/issues/11019 + name: "CSSSafeAreaMaxInset" + }, { // The "@import scope(...)" syntax. // https://github.com/w3c/csswg-drafts/issues/7348 @@ -1261,6 +1298,11 @@ name: "CSSShapeFunction", status: "experimental", }, + { + name: "CSSShapeFunctionCompositeAnimation", + status: "experimental", + depends_on: ["CSSShapeFunction", "CompositeClipPathAnimation"] + }, { // sibling-index() and sibling-count() name: "CSSSiblingFunctions", @@ -1394,16 +1436,10 @@ name: "DesktopPWAsSubApps", status: "test", }, - { - // Enabled in M131. Can be removed a bit after M131 reaches stable. - name: "DetailsStyling", - status: "stable", - }, { name: "DeviceAttributes", status: { "ChromeOS_Ash": "stable", - "ChromeOS_Lacros": "stable", "default": "experimental", }, }, @@ -1442,7 +1478,6 @@ status: { "Android": "stable", "ChromeOS_Ash": "stable", - "ChromeOS_Lacros": "stable", // crbug.com/1143079: Web tests cannot differentiate ChromeOS and Linux, // so enable the API on all platforms for testing. "default": "test" @@ -1454,7 +1489,6 @@ status: { "Android": "stable", "ChromeOS_Ash": "stable", - "ChromeOS_Lacros": "stable", // crbug.com/1143079: Web tests cannot differentiate ChromeOS and Linux, // so enable the API on all platforms for testing. "default": "test" @@ -1547,6 +1581,12 @@ base_feature: "none", public: true, }, + { + // Scale very large height and width of HTML Element + // to allow DnD. + name: "DnDScaleHeightAndWidthToMaxDimension", + status: "stable", + }, { name: "DocumentCookie", }, @@ -1607,7 +1647,7 @@ // ExpectNoLinkedResources. { name: "DocumentPolicyExpectNoLinkedResources", - status: "experimental", + status: "stable", }, // Enables the ability to use Document Policy header to control feature // IncludeJSCallStacksInCrashReports. https://chromestatus.com/feature/4731248572628992 @@ -1634,6 +1674,12 @@ { name: "DocumentWrite", }, + { + // This is a flag for performance improvements that shipped in M134, + // for use as a kill-switch and for other finch measurement in Q2 2025. + name: "DOMInsertionFaster", + status: "stable", + }, { name: "DOMPartsAPI", status: "experimental", @@ -1643,11 +1689,8 @@ name: "DOMPartsAPIMinimal", }, { - // Drop the entire URL as plaintext in plaintext only editable position. - // Fix for https://crbug.com/40895258. This change is landing in M127 and - // the flag can be removed in M129 in case of no issues. - name: "DropUrlAsPlainTextInPlainTextOnlyEditablePosition", - status: "stable" + name: "DragImageNoNodeId", + status: "stable", }, // Dynamically change the safe area insets based on the bottom browser // controls visibility. @@ -1721,6 +1764,10 @@ name: "ExposeCoarsenedRenderTime", status: "stable", }, + { + name: "ExposeCSSFontFeatureValuesRule", + status: "stable", + }, { name: "ExposeRenderTimeNonTaoDelayedImage", }, @@ -1735,7 +1782,6 @@ // This list should match the supported operating systems for the // kEyeDropper base::Feature. "ChromeOS_Ash": "stable", - "ChromeOS_Lacros": "stable", "Linux": "stable", "Mac": "stable", "Win": "stable", @@ -1750,6 +1796,11 @@ name: "FaceDetector", status: "experimental", }, + // Kill switch. + { + name: "FastClearNeedsRepaint", + status: "stable", + }, { name: "FastNonCompositedScrollHitTest", depends_on: ["HitTestOpaqueness", "RasterInducingScroll"], @@ -1831,17 +1882,9 @@ status: "test", base_feature: "none", }, - { - name: "FedCmIdpSigninStatus", - depends_on: ["FedCm"], - public: true, - status: "stable", - base_feature: "none", - browser_process_read_access: true, - }, { name: "FedCmLightweightMode", - depends_on: ["FedCmIdpSigninStatus"], + depends_on: ["FedCm"], status: "test", public: true, base_feature: "none", @@ -1966,7 +2009,6 @@ name: "FileSystemAccessGetCloudIdentifiers", status: { "ChromeOS_Ash": "experimental", - "ChromeOS_Lacros": "experimental", "default": "", } }, @@ -2001,11 +2043,6 @@ name: "FileSystemObserverUnobserve", status: "experimental", }, - { - // crbug.com/369237322 - name: "FindDecomposedInShortText", - status: "stable", - }, { // crbug.com/40755728 name: "FindRubyInPage", @@ -2015,12 +2052,6 @@ name: "FindTextInReadonlyTextInput", status: "experimental", }, - { - // crbug.com/40755728 - name: "FindTextSkipCollapsedText", - status: "stable", - depends_on: ["FindDecomposedInShortText"], - }, { name: "Fledge", status: "stable", @@ -2093,7 +2124,7 @@ // Enables the ability to set seller nonces on the header response and // use bidNonce in bids. name: "FledgeSellerNonce", - status: "test", + status: "stable", }, { name: "FledgeTrustedSignalsKVv1CreativeScanning", @@ -2185,7 +2216,7 @@ }, { name: "ForceTallerSelectPopup", - status: {"ChromeOS_Ash": "stable", "ChromeOS_Lacros": "stable"}, + status: {"ChromeOS_Ash": "stable"}, }, { // TODO(crbug.com/1419161): Remove this feature after M113 has been stable @@ -2200,6 +2231,13 @@ name: "FormControlsVerticalWritingModeDirectionSupport", status: "stable", }, + { + // TODO(crbug.com/389587444): Remove this feature after M134 is stable. + // Form-associated custom elements should check isFocusable on the + // focus delegate if the shadow host has delegatesFocus=true. + name: "FormValidationCustomElementsDelegatesFocusFix", + status: "stable", + }, { name: "FractionalScrollOffsets", base_feature: "none", @@ -2248,26 +2286,16 @@ name: "HandwritingRecognition", status: { "ChromeOS_Ash": "stable", - "ChromeOS_Lacros": "stable", "default": "experimental", }, }, - { - // Updates the hanging behavior of preserved whitespace at the end of a - // line to not depend on text-align. This flag is to be used as a - // killswitch in case of any issues. - // https://github.com/w3c/csswg-drafts/issues/3440 - // crbug.com/1363901 - name: "HangingWhitespaceDoesNotDependOnAlignment", - status: "stable", - }, { name: "HasUAVisualTransition", status: "stable", }, { name: "HighlightInheritance", - status: "experimental", + status: "stable", }, { name: "HighlightPointerEvents", @@ -2301,8 +2329,9 @@ }, { // TODO(crbug.com/376516550): Enables dialog light dismiss functionality. + // This feature shipped in M134, so this flag can be removed in M136. name: "HTMLDialogLightDismiss", - status: "experimental", + status: "stable", }, // The `` should follow the specification, layout is not forced // when the `type` attribute is set to `image`. @@ -2329,7 +2358,7 @@ // When this flag is disabled only v1 actions (popover and dialog defaults) will work. { name: "HTMLInvokeActionsV2", - status: "experimental", + status: "test", }, // Adds support for the experimental `invoketarget` and `invokeaction` // attributes, as specified in the open-ui "Invokers" explainer. @@ -2338,15 +2367,6 @@ name: "HTMLInvokeTargetAttribute", status: "experimental", }, - // The `` should follow the specification: - // > Fallback: The object element represents the element's children. - // > This is the element's fallback content. - // https://html.spec.whatwg.org/C/#the-object-element - // This feature was shipped in M131, so this flag can be removed in M133. - { - name: "HTMLObjectElementFallbackDetachContentFrame", - status: "stable", - }, { // A flag, just for local testing to make the // HTML parser yield more often and take longer to resume. @@ -2354,12 +2374,6 @@ // yielding heuristics. name: "HTMLParserYieldAndDelayOftenForTesting", }, - { - // A flag to control the popovertargetaction=hover behavior, - // and associated CSS properties. - name: "HTMLPopoverActionHover", - status: "test", - }, { // TODO(crbug.com/1416284): Enables popover=hint functionality. // This shipped in M133, and this flag can be removed in M135. @@ -2371,9 +2385,8 @@ status: "stable", }, { - name: "IdentityDigest", + name: "ImageDataPixelFormat", status: "experimental", - implied_by: ["SignatureBasedIntegrity"] }, { name: "ImplicitRootScroller", @@ -2423,10 +2436,6 @@ name: "InertElementNonEditable", status: "stable", }, - { - name: "InertElementNonSearchable", - status: "stable", - }, { // If a painting bug no longer reproduces with this feature enabled, then // the bug is caused by incorrect cull rects. @@ -2477,6 +2486,10 @@ name: "InsertBlockquoteBeforeOuterBlock", status: "stable", }, + { + name: "InsertLineBreakIfInlineListItem", + status: "stable", + }, { // crbug.com/1420675 name: "InsertLineBreakIfPhrasingContent", @@ -2498,6 +2511,7 @@ { name: "InterestGroupsInSharedStorageWorklet", public: true, + status: "stable", }, { name: "InteroperablePrivateAttribution", @@ -2516,6 +2530,10 @@ name: "InvisibleSVGAnimationThrottling", status: "stable", }, + { + name: "IsSecurePaymentConfirmationAvailableAPI", + status: "experimental", + }, { name: "JavaScriptCompileHintsMagicAlwaysRuntime", status: "experimental", @@ -2577,6 +2595,9 @@ { name: "LayoutIgnoreMarginsForSticky", }, + { + name: "LayoutImageForceAspectRatioOfOneOnError", + }, { name: "LayoutJustifySelfForBlocks", status: "stable", @@ -2791,18 +2812,6 @@ name: "MetaRefreshNoFractional", status: "stable", }, - { - // If enabled, meter elements will render with a fallback style when - // appearance is set to none. - name: "MeterAppearanceNoneFallbackStyle", - status: "stable", - }, - { - // If enabled, the widget appearance will devolve based on user - // declared styles as defined in the css-ui-4 spec - name: "MeterDevolveAppearance", - status: "stable", - }, // This is enabled by default on Windows only. The only part that's // "experimental" is the support on other platforms. { @@ -2918,7 +2927,6 @@ status: { "Android": "stable", "ChromeOS_Ash": "stable", - "ChromeOS_Lacros": "stable", "default": "experimental", }, base_feature: "none", @@ -2951,13 +2959,6 @@ name: "NonEmptyBlockquotesOnOutdenting", status: "stable", }, - { - // 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 // slider-vertical. Disable this feature to stop parsing or allowing these @@ -3005,6 +3006,10 @@ name: "OffscreenCanvasCommit", status: "experimental", }, + { + name: "OffscreenCanvasGetContextAttributes", + status: "stable", + }, { name: "OmitBlurEventOnElementRemoval", status: "test" @@ -3180,6 +3185,11 @@ name: "PaintHoldingForLocalIframes", status: "stable", }, + // Kill switch. + { + name: "PaintLayerUpdateOptimizations", + status: "stable", + }, { name: "PaintTimingMixin", status: "experimental", @@ -3275,8 +3285,8 @@ // Tracking bug for the implementation: https://crbug.com/1462930 name: "PermissionElement", origin_trial_feature_name: "PermissionElement", - origin_trial_os: ["win", "mac", "linux", "fuchsia", "chromeos"], - status: {"Android": "", "default": "experimental"}, + origin_trial_os: ["win", "mac", "linux", "fuchsia", "chromeos", "android"], + status: "experimental", public: true, base_feature_status: "enabled", copied_from_base_feature_if: "overridden", @@ -3328,6 +3338,10 @@ name: "PositionOutsideTabSpanCheckSiblingNode", status: "stable", }, + { + name: "PotentialPermissionsPolicyReporting", + status: "experimental", + }, { name: "PreciseMemoryInfo", base_feature: "none", @@ -3385,6 +3399,13 @@ name: "PreventUndoIfNotEditable", status: "stable" }, + { + // Controls whether Private Aggregation's "maxContributions" field is + // enabled for Shared Storage callers. If disabled, the field will be + // ignored. https://chromestatus.com/feature/5189366316793856 + name: "PrivateAggregationApiMaxContributions", + status: "stable", + }, { name: "PrivateNetworkAccessNonSecureContextsAllowed", origin_trial_feature_name: "PrivateNetworkAccessNonSecureContextsAllowed", @@ -3491,10 +3512,6 @@ base_feature: "none", origin_trial_feature_name: "ReduceAcceptLanguage" }, - { - name: "ReduceCookieIPCs", - status: "stable", - }, { // If enabled, the deviceModel will be reduced to "K" and the // androidVersion will be reduced to a static "10" string in android @@ -3541,11 +3558,6 @@ "Linux": "stable", "default": "experimental"}, }, - { - // See https://issues.chromium.org/40805258 - name: "RemoveCollapsedPlaceholder", - status: "stable", - }, { name: "RemoveDanglingMarkupInTarget", status: "stable", @@ -3560,6 +3572,16 @@ name: "RemoveNodeHavingChildrenIfFullySelected", status: "stable", }, + { + // crbug.com/41047725 + name: "RemovePlaceholderBRForDisplayInline", + status: "stable", + }, + { + // See https://issues.chromium.org/issues/41474791 + name: "RemoveSelectionCanonicalizationInMoveParagraph", + status: "stable", + }, { // See https://issues.chromium.org/issues/41311101 name: "RemoveVisibleSelectionInDOMSelection", @@ -3591,6 +3613,10 @@ name: "ResetInputTypeToNoneBeforeCharacterInput", status: "stable", }, + { + name: "ResourceTimingContentEncoding", + status: "experimental", + }, { name: "ResourceTimingContentType", status: "experimental", @@ -3614,12 +3640,6 @@ name: "RewindFloats", status: "stable", }, - { - // When enabled, the root element will have a placeholder after all text is deleted. - // crbug.com/40702380 - name: "RootElementWithPlaceHolderAfterDeletingSelection", - status: "stable", - }, { name: "RtcAudioJitterBufferMaxPackets", origin_trial_feature_name: "RtcAudioJitterBufferMaxPackets", @@ -3639,6 +3659,10 @@ status: "experimental", origin_trial_feature_name: "RTCEncodedFrameSetMetadata", }, + { + name: "RTCEncodedFrameTimestamps", + status: "experimental", + }, { name: "RTCEncodedVideoFrameAdditionalMetadata", status: "experimental", @@ -3717,6 +3741,10 @@ name: "ScopedCustomElementRegistry", status: "experimental", }, + { + // https://github.com/WICG/view-transitions/blob/main/scoped-transitions.md + name: "ScopedViewTransitions" + }, // WebSpeech API with both speech recognition and synthesis functionality // is not fully enabled on all platforms. { @@ -3735,6 +3763,13 @@ name: "ScriptRunIteratorCombiningMarks", status: "stable", }, + // Killswitch to be removed after M134 reaches stable. + // With it enabled, LocalFrameView uses an optimized iteration over just + // scrollable areas with scroll nodes. + { + name: "ScrollableAreasWithScrollNodeOptimization", + status: "stable", + }, { name: "ScrollbarColor", status: "stable", @@ -3947,6 +3982,8 @@ }, { name: "SharedStorageWebLocks", + depends_on: ["SharedStorageAPI"], + status: "stable", }, { name: "SharedWorker", @@ -3960,6 +3997,10 @@ name: "SidewaysWritingModes", status: "stable", }, + { + name: "SignatureBasedInlineIntegrity", + status: "experimental", + }, { name: "SignatureBasedIntegrity", status: "experimental", @@ -3985,11 +4026,6 @@ origin_trial_feature_name: "SkipPreloadScanning", base_feature: "SkipPreloadScanning", }, - { - // Added in M131, should be safe to remove after M131 ships. - name: "SkipTemporaryDocumentFragment", - status: "stable", - }, { // Skips the browser touch event filter, ensuring that events that reach // the queue and would otherwise be filtered out will instead be passed @@ -4060,6 +4096,10 @@ { name: "SpeculationRulesPrefetchWithSubresources", }, + { + name: "SplitTextNotCleanupDummySpans", + status: "stable", + }, // Kill switch for change to unify image-set and srcset selection logic. { name: "SrcsetSelectionMatchesImageSet", @@ -4086,6 +4126,11 @@ origin_trial_allows_insecure: true, origin_trial_allows_third_party: true, }, + { + name: "StandardizedTimerClamping", + status: "experimental", + public: true, + }, { name: "StaticAnimationOptimization", status: "stable", @@ -4138,10 +4183,6 @@ name: "SvgFilterUserSpaceViewportForNonSvg", status: "stable", }, - { - name: "SvgGradientColorInterpolationLinearRgbSupport", - status: "stable", - }, { name: "SvgInlineRootPixelSnappingScaleAdjustment", status: "test", @@ -4151,14 +4192,12 @@ status: "stable", }, { - // Feature for optimizing SVG transform changes. This is a kill switch in - // case we encounter issues with these optimizations. - name: "SvgTransformOptimization", + // crbug.com/40890818 + name: "SvgTspanBboxCache", status: "stable", }, { - // crbug.com/40890818 - name: "SvgTspanBboxCache", + name: "SvgViewportOptimization", status: "stable", }, { @@ -4231,6 +4270,11 @@ name: "TestFeatureStable", status: "stable", }, + { + // crbug.com/389726691 + name: "TextCombineEmphasisNG", + status: "stable", + }, { name: "TextDetector", status: "experimental", @@ -4413,6 +4457,11 @@ name: "UnclosedFormControlIsInvalid", status: "experimental", }, + { + name: "UnencodedDigest", + status: "experimental", + implied_by: ["SignatureBasedIntegrity"] + }, { name: "UnexposedTaskIds", }, @@ -4470,7 +4519,6 @@ name: "UseBeginFramePresentationFeedback", status: { "ChromeOS_Ash": "stable", - "ChromeOS_Lacros": "stable", }, }, { @@ -4483,6 +4531,10 @@ "default": "", }, }, + { + name: "UsePositionForPointInFlexibleBoxWithSingleChildElement", + status: "stable", + }, { name: "UserDefinedEntryPointTiming", status: "experimental", @@ -4625,7 +4677,6 @@ name: "WebAppTabStrip", status: { "ChromeOS_Ash": "stable", - "ChromeOS_Lacros": "stable", "default": "experimental" }, base_feature: "DesktopPWAsTabStrip", @@ -4636,7 +4687,6 @@ name: "WebAppTabStripCustomizations", status: { "ChromeOS_Ash": "stable", - "ChromeOS_Lacros": "stable", "default": "experimental" }, base_feature: "DesktopPWAsTabStripCustomizations", @@ -4731,6 +4781,12 @@ name: "WebAuthenticationLargeBlobExtension", status: "stable", }, + { + name: "WebAuthenticationNewBfCacheHandlingBlink", + // No status because this blink runtime feature doesn't work by itself. + // It's controlled by the corresponding Chromium feature which needs to + // be enabled to make the whole feature work. + }, // https://w3c.github.io/webauthn/#prf-extension { name: "WebAuthenticationPRF", @@ -4754,7 +4810,7 @@ public: true, status: { "Android": "stable", - "ChromeOS_Ash": "stable", "ChromeOS_Lacros": "stable", + "ChromeOS_Ash": "stable", "Mac": "stable", "Win": "stable", "default": "experimental", @@ -4866,12 +4922,7 @@ // Using subgroup related features in WebGPU. // https://chromestatus.com/feature/5126409856221184 name: "WebGPUSubgroupsFeatures", - status: "experimental", - origin_trial_feature_name: "WebGPUSubgroupsFeatures", - base_feature: "none", - // Subgroups related features are also enabled if experimental - // WebGPU is enabled. - implied_by: ["WebGPUExperimentalFeatures"], + status: "stable", }, { name: "WebHID", @@ -4887,7 +4938,7 @@ { name: "WebIdentityDigitalCredentials", origin_trial_feature_name: "WebIdentityDigitalCredentials", - origin_trial_os: ["android"], + origin_trial_os: ["android", "win", "mac", "linux", "chromeos"], origin_trial_allows_third_party: true, implied_by: ["WebIdentityDigitalCredentialsCreation"], public: true, @@ -4900,6 +4951,11 @@ status: "test", base_feature: "none", }, + { + // When enabled, the legacy format of the Digital Credentials request isn't + // supported anymore, and only the modern format is supported. + name: "WebIdentityDigitalCredentialsStopSupportingLegacyRequestFormat", + }, // Kill switch for making BigInt handling in WebIDL use ToBigInt. { name: "WebIDLBigIntUsesToBigInt", @@ -4944,6 +5000,9 @@ name: "WebSocketStream", status: "stable", }, + { + name: "WebSpeechRecognitionContext", + }, { name: "WebTransportCustomCertificates", origin_trial_feature_name: "WebTransportCustomCertificates", 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 02f2e4ab9..ce351a20f 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 @@ -118,6 +118,16 @@ interface AnimationTimeline getter currentTime getter duration method constructor +interface AsyncDisposableStack + attribute @@toStringTag + getter disposed + method Symbol(Symbol.asyncDispose) + method adopt + method constructor + method defer + method disposeAsync + method move + method use interface Attr : Node attribute @@toStringTag getter localName @@ -509,6 +519,17 @@ interface CSSFontFaceRule : CSSRule attribute @@toStringTag getter style method constructor +interface CSSFontFeatureValuesRule : CSSRule + attribute @@toStringTag + getter annotation + getter characterVariant + getter fontFamily + getter ornaments + getter styleset + getter stylistic + getter swash + method constructor + setter fontFamily interface CSSFontPaletteValuesRule : CSSRule attribute @@toStringTag getter basePalette @@ -1638,6 +1659,16 @@ interface DevicePosture : EventTarget getter type method constructor setter onchange +interface DisposableStack + attribute @@toStringTag + getter disposed + method Symbol(Symbol.dispose) + method adopt + method constructor + method defer + method dispose + method move + method use interface Document : Node static method parseHTMLUnsafe attribute @@toStringTag @@ -2690,6 +2721,8 @@ interface GPUAdapterInfo getter architecture getter description getter device + getter subgroupMaxSize + getter subgroupMinSize getter vendor method constructor interface GPUBindGroup @@ -3357,12 +3390,15 @@ interface HTMLDetailsElement : HTMLElement setter open interface HTMLDialogElement : HTMLElement attribute @@toStringTag + getter closedBy getter open getter returnValue method close method constructor + method requestClose method show method showModal + setter closedBy setter open setter returnValue interface HTMLDirectoryElement : HTMLElement @@ -6300,6 +6336,7 @@ interface OffscreenCanvasRenderingContext2D method fill method fillRect method fillText + method getContextAttributes method getImageData method getLineDash method getTransform @@ -8753,6 +8790,7 @@ interface SharedStorage attribute @@toStringTag getter worklet method append + method batchUpdate method clear method constructor method createWorklet @@ -8761,6 +8799,21 @@ interface SharedStorage method run method selectURL method set +interface SharedStorageAppendMethod : SharedStorageModifierMethod + attribute @@toStringTag + method constructor +interface SharedStorageClearMethod : SharedStorageModifierMethod + attribute @@toStringTag + method constructor +interface SharedStorageDeleteMethod : SharedStorageModifierMethod + attribute @@toStringTag + method constructor +interface SharedStorageModifierMethod + attribute @@toStringTag + method constructor +interface SharedStorageSetMethod : SharedStorageModifierMethod + attribute @@toStringTag + method constructor interface SharedStorageWorklet attribute @@toStringTag method addModule @@ -8982,6 +9035,10 @@ interface SubtleCrypto method unwrapKey method verify method wrapKey +interface SuppressedError : Error + attribute message + attribute name + method constructor interface SyncManager attribute @@toStringTag method constructor