diff --git a/tools/under-control/src/RELEASE b/tools/under-control/src/RELEASE index 1b4309a8..98c80159 100644 --- a/tools/under-control/src/RELEASE +++ b/tools/under-control/src/RELEASE @@ -1 +1 @@ -124.0.6367.159 +125.0.6422.60 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 71b3dd63..96a11918 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 @@ -73,10 +73,11 @@ #include "components/policy/content/policy_blocklist_navigation_throttle.h" #include "components/policy/core/browser/browser_policy_connector_base.h" #include "components/prefs/pref_service.h" +#include "components/safe_browsing/content/browser/async_check_tracker.h" #include "components/safe_browsing/content/browser/browser_url_loader_throttle.h" #include "components/safe_browsing/content/browser/mojo_safe_browsing_impl.h" -#include "components/safe_browsing/core/browser/hashprefix_realtime/hash_realtime_utils.h" #include "components/safe_browsing/core/common/features.h" +#include "components/safe_browsing/core/common/hashprefix_realtime/hash_realtime_utils.h" #include "components/url_matcher/url_matcher.h" #include "components/url_matcher/url_util.h" #include "components/version_info/version_info.h" @@ -129,9 +130,10 @@ using content::BrowserThread; using content::WebContents; +using safe_browsing::AsyncCheckTracker; using safe_browsing::hash_realtime_utils::HashRealTimeSelection; -using AttributionReportType = - content::ContentBrowserClient::AttributionReportingOsReportType; +using AttributionReportingOsRegistrar = + content::ContentBrowserClient::AttributionReportingOsRegistrar; namespace android_webview { namespace { @@ -147,6 +149,57 @@ bool g_created_network_context_params = false; // On apps targeting API level O or later, check cleartext is enforced. bool g_check_cleartext_permitted = false; +BASE_FEATURE(kWebViewOptimizeXrwNavigationFlow, + "WebViewOptimizeXrwNavigationFlow", + base::FEATURE_DISABLED_BY_DEFAULT); + +// A throttle which checks if the XRW origin trial is enabled for this +// navigation, and forwards it to the proxying loader factory. +class XrwNavigationThrottle : public content::NavigationThrottle { + public: + explicit XrwNavigationThrottle(content::NavigationHandle* handle) + : NavigationThrottle(handle) {} + ~XrwNavigationThrottle() override { + AwProxyingURLLoaderFactory::ClearXrwResultForNavigation( + navigation_handle()->GetNavigationId()); + } + + ThrottleCheckResult WillStartRequest() override { + auto* handle = navigation_handle(); + AwProxyingURLLoaderFactory::SetXrwResultForNavigation( + handle->GetURL(), + handle->IsInOutermostMainFrame() + ? blink::mojom::ResourceType::kMainFrame + : blink::mojom::ResourceType::kSubFrame, + handle->GetFrameTreeNodeId(), handle->GetNavigationId()); + return content::NavigationThrottle::PROCEED; + } + + const char* GetNameForLogging() override { return "XrwNavigationThrottle"; } +}; + +// Get async check tracker to make Safe Browsing v5 check asynchronous +base::WeakPtr GetAsyncCheckTracker( + const base::RepeatingCallback& wc_getter, + int 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. + if (web_contents == nullptr || + web_contents->IsPrerenderedFrame(frame_tree_node_id)) { + return nullptr; + } + + return AsyncCheckTracker::GetOrCreateForWebContents( + web_contents, + AwBrowserProcess::GetInstance()->GetSafeBrowsingUIManager()) + ->GetWeakPtr(); +} + } // anonymous namespace std::string GetProduct() { @@ -223,6 +276,12 @@ void AwContentBrowserClient::OnNetworkServiceCreated( network::mojom::HttpAuthStaticParams::New()); content::GetNetworkService()->ConfigureHttpAuthPrefs( AwBrowserProcess::GetInstance()->CreateHttpAuthDynamicParams()); + if (base::FeatureList::IsEnabled(features::kWebViewAsyncDns)) { + content::GetNetworkService()->ConfigureStubHostResolver( + /*insecure_dns_client_enabled=*/true, net::SecureDnsMode::kAutomatic, + net::DnsOverHttpsConfig(), + /*additional_dns_types_enabled=*/true); + } } void AwContentBrowserClient::ConfigureNetworkContextParams( @@ -494,8 +553,9 @@ bool AwContentBrowserClient::IsPepperVpnProviderAPIAllowed( return false; } -content::TracingDelegate* AwContentBrowserClient::GetTracingDelegate() { - return new AwTracingDelegate(); +std::unique_ptr +AwContentBrowserClient::CreateTracingDelegate() { + return std::make_unique(); } void AwContentBrowserClient::GetAdditionalMappedFilesForChildProcess( @@ -577,6 +637,10 @@ AwContentBrowserClient::CreateThrottlesForNavigation( if (safe_browsing_throttle) { throttles.push_back(std::move(safe_browsing_throttle)); } + if (base::FeatureList::IsEnabled(kWebViewOptimizeXrwNavigationFlow)) { + throttles.push_back( + std::make_unique(navigation_handle)); + } return throttles; } @@ -596,10 +660,16 @@ AwContentBrowserClient::CreateURLLoaderThrottles( DCHECK_CURRENTLY_ON(BrowserThread::UI); // Set lookup mechanism based on feature flag - HashRealTimeSelection hash_real_time_selection = - (base::FeatureList::IsEnabled(safe_browsing::kHashPrefixRealTimeLookups)) - ? HashRealTimeSelection::kDatabaseManager - : HashRealTimeSelection::kNone; + HashRealTimeSelection hash_real_time_selection; + base::WeakPtr async_check_tracker; + if (base::FeatureList::IsEnabled(safe_browsing::kHashPrefixRealTimeLookups)) { + hash_real_time_selection = HashRealTimeSelection::kDatabaseManager; + async_check_tracker = GetAsyncCheckTracker(wc_getter, frame_tree_node_id); + } else { + hash_real_time_selection = HashRealTimeSelection::kNone; + async_check_tracker = nullptr; + } + std::vector> result; result.push_back(safe_browsing::BrowserURLLoaderThrottle::Create( base::BindRepeating( @@ -615,9 +685,7 @@ AwContentBrowserClient::CreateURLLoaderThrottles( /* hash_realtime_service */ nullptr, /* hash_realtime_selection */ hash_real_time_selection, - // TODO(crbug.com/1501194): pass in async_check_tracker to support async - // check on WV. - /* async_check_tracker */ nullptr)); + /* async_check_tracker */ async_check_tracker)); if (request.destination == network::mojom::RequestDestination::kDocument) { const bool is_load_url = @@ -836,7 +904,8 @@ bool AwContentBrowserClient::HandleExternalProtocol( new android_webview::AwProxyingURLLoaderFactory( frame_tree_node_id, std::move(receiver), mojo::NullRemote(), true /* intercept_only */, std::nullopt /* security_options */, - nullptr /* xrw_allowlist_matcher */, std::move(browser_context_handle)); + nullptr /* xrw_allowlist_matcher */, std::move(browser_context_handle), + std::nullopt /* navigation_id */); } else { content::GetIOThreadTaskRunner({})->PostTask( FROM_HERE, @@ -851,7 +920,8 @@ bool AwContentBrowserClient::HandleExternalProtocol( true /* intercept_only */, std::nullopt /* security_options */, nullptr /* xrw_allowlist_matcher */, - std::move(browser_context_handle)); + std::move(browser_context_handle), + std::nullopt /* navigation_id */); }, std::move(receiver), frame_tree_node_id, std::move(browser_context_handle))); @@ -945,6 +1015,7 @@ void AwContentBrowserClient::WillCreateURLLoaderFactory( int render_process_id, URLLoaderFactoryType type, const url::Origin& request_initiator, + const net::IsolationInfo& isolation_info, std::optional navigation_id, ukm::SourceIdObj ukm_source_id, network::URLLoaderFactoryBuilder& factory_builder, @@ -1014,7 +1085,7 @@ void AwContentBrowserClient::WillCreateURLLoaderFactory( frame->GetFrameTreeNodeId(), std::move(proxied_receiver), std::move(target_factory_remote), security_options, std::move(xrw_allowlist_matcher), - std::move(browser_context_handle))); + std::move(browser_context_handle), navigation_id)); } else { // A service worker and worker subresources set nullptr to |frame|, and // work without seeing the AllowUniversalAccessFromFileURLs setting. So, @@ -1029,7 +1100,7 @@ void AwContentBrowserClient::WillCreateURLLoaderFactory( std::move(proxied_receiver), std::move(target_factory_remote), std::nullopt /* security_options */, aw_browser_context->service_worker_xrw_allowlist_matcher(), - std::move(browser_context_handle))); + std::move(browser_context_handle), navigation_id)); } } @@ -1235,8 +1306,8 @@ bool AwContentBrowserClient::IsAttributionReportingOperationAllowed( NOTREACHED_NORETURN(); } -content::ContentBrowserClient::AttributionReportingOsReportTypes -AwContentBrowserClient::GetAttributionReportingOsReportTypes( +content::ContentBrowserClient::AttributionReportingOsRegistrars +AwContentBrowserClient::GetAttributionReportingOsRegistrars( content::WebContents* web_contents) { // Attribution reporting can register a source to either the top level origin // or the app. For WebView the default is to register sources against the app @@ -1258,7 +1329,8 @@ AwContentBrowserClient::GetAttributionReportingOsReportTypes( AwSettings* aw_settings = AwSettings::FromWebContents(web_contents); if (!aw_settings) { - return {AttributionReportType::kDisabled, AttributionReportType::kDisabled}; + return {AttributionReportingOsRegistrar::kDisabled, + AttributionReportingOsRegistrar::kDisabled}; } AwSettings::AttributionBehavior attribution_behavior = @@ -1266,14 +1338,17 @@ AwContentBrowserClient::GetAttributionReportingOsReportTypes( switch (attribution_behavior) { case AwSettings::AttributionBehavior::WEB_SOURCE_AND_WEB_TRIGGER: - return {AttributionReportType::kWeb, AttributionReportType::kWeb}; + return {AttributionReportingOsRegistrar::kWeb, + AttributionReportingOsRegistrar::kWeb}; case AwSettings::AttributionBehavior::APP_SOURCE_AND_WEB_TRIGGER: - return {AttributionReportType::kOs, AttributionReportType::kWeb}; + return {AttributionReportingOsRegistrar::kOs, + AttributionReportingOsRegistrar::kWeb}; case AwSettings::AttributionBehavior::APP_SOURCE_AND_APP_TRIGGER: - return {AttributionReportType::kOs, AttributionReportType::kOs}; + return {AttributionReportingOsRegistrar::kOs, + AttributionReportingOsRegistrar::kOs}; case AwSettings::AttributionBehavior::DISABLED: - return {AttributionReportType::kDisabled, - AttributionReportType::kDisabled}; + return {AttributionReportingOsRegistrar::kDisabled, + AttributionReportingOsRegistrar::kDisabled}; } NOTREACHED_NORETURN(); diff --git a/tools/under-control/src/chrome/android/java/AndroidManifest.xml b/tools/under-control/src/chrome/android/java/AndroidManifest.xml index 18390bd9..632b6fcf 100755 --- a/tools/under-control/src/chrome/android/java/AndroidManifest.xml +++ b/tools/under-control/src/chrome/android/java/AndroidManifest.xml @@ -117,6 +117,9 @@ by a child template that "extends" this file. + + + {% endif %} @@ -1095,6 +1098,8 @@ by a child template that "extends" this file. + @@ -1140,10 +1145,6 @@ by a child template that "extends" this file. - - diff --git a/tools/under-control/src/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc b/tools/under-control/src/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc index 6c40393a..d73dbe00 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 @@ -76,6 +76,7 @@ #include "chrome/browser/spellchecker/spellcheck_factory.h" #include "chrome/browser/spellchecker/spellcheck_service.h" #include "chrome/browser/sync/sync_service_factory.h" +#include "chrome/browser/tpcd/metadata/manager_factory.h" #include "chrome/browser/translate/chrome_translate_client.h" #include "chrome/browser/ui/find_bar/find_bar_state.h" #include "chrome/browser/ui/find_bar/find_bar_state_factory.h" @@ -125,6 +126,7 @@ #include "components/search_engines/template_url_service.h" #include "components/sync/service/sync_service.h" #include "components/sync/service/sync_user_settings.h" +#include "components/tpcd/metadata/manager.h" #include "components/web_cache/browser/web_cache_manager.h" #include "components/webrtc_logging/browser/log_cleanup.h" #include "components/webrtc_logging/browser/text_log_list.h" @@ -649,7 +651,7 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData( website_settings_filter, host_content_settings_map_); - if (!filter_builder->IsCrossSiteClearSiteDataForCookies()) { + if (!filter_builder->PartitionedCookiesOnly()) { browsing_data::RemoveEmbedderCookieData( delete_begin, delete_end, filter_builder, host_content_settings_map_, safe_browsing_context, @@ -664,8 +666,14 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData( BrowsingDataFilterBuilder::Mode::kPreserve) { auto* privacy_sandbox_settings = PrivacySandboxSettingsFactory::GetForProfile(profile_); - if (privacy_sandbox_settings) + if (privacy_sandbox_settings) { privacy_sandbox_settings->OnCookiesCleared(); + } + + if (tpcd::metadata::Manager* manager = + tpcd::metadata::ManagerFactory::GetForProfile(profile_)) { + manager->ResetCohorts(); + } #if BUILDFLAG(IS_ANDROID) Java_PackageHash_onCookiesDeleted( @@ -676,7 +684,7 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData( #if !BUILDFLAG(IS_ANDROID) if (nullable_filter.is_null() || - (!filter_builder->IsCrossSiteClearSiteDataForCookies() && + (!filter_builder->PartitionedCookiesOnly() && nullable_filter.Run(GaiaUrls::GetInstance()->google_url()))) { // Set a flag to clear account storage settings later instead of clearing // it now as we can not reset this setting before passwords are deleted. @@ -859,6 +867,10 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData( ContentSettingsType::REVOKED_UNUSED_SITE_PERMISSIONS, delete_begin_, delete_end_, website_settings_filter); + host_content_settings_map_->ClearSettingsForOneTypeWithPredicate( + ContentSettingsType::REVOKED_ABUSIVE_NOTIFICATION_PERMISSIONS, + delete_begin_, delete_end_, website_settings_filter); + host_content_settings_map_->ClearSettingsForOneTypeWithPredicate( ContentSettingsType::PRIVATE_NETWORK_GUARD, delete_begin_, delete_end_, website_settings_filter); @@ -879,7 +891,7 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData( // DATA_TYPE_COOKIES. DIPSEventRemovalType dips_mask = DIPSEventRemovalType::kNone; if ((remove_mask & content::BrowsingDataRemover::DATA_TYPE_COOKIES) && - !filter_builder->IsCrossSiteClearSiteDataForCookies()) { + !filter_builder->PartitionedCookiesOnly()) { dips_mask |= DIPSEventRemovalType::kStorage; } if (remove_mask & constants::DATA_TYPE_HISTORY) { @@ -984,7 +996,7 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData( CHECK(deferred_disable_passwords_auto_signin_cb_.is_null(), base::NotFatalUntil::M125); if ((remove_mask & content::BrowsingDataRemover::DATA_TYPE_COOKIES) && - !filter_builder->IsCrossSiteClearSiteDataForCookies()) { + !filter_builder->PartitionedCookiesOnly()) { // Unretained() is safe, this is only executed in OnTasksComplete() if the // object is still alive. Also, see the field docs for motivation. deferred_disable_passwords_auto_signin_cb_ = base::BindOnce( @@ -1194,7 +1206,7 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData( // results only when their respective URLs are in the filter. if ((remove_mask & (content::BrowsingDataRemover::DATA_TYPE_CACHE | content::BrowsingDataRemover::DATA_TYPE_COOKIES)) && - !filter_builder->IsCrossSiteClearSiteDataForCookies()) { + !filter_builder->PartitionedCookiesOnly()) { // If there is no template service or DSE, clear the caches. bool should_clear_zero_suggest_and_session_token = true; bool should_clear_search_prefetch = true; 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 820a259a..f5a1dd77 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 @@ -37,7 +37,6 @@ #include "chrome/browser/ui/search_engines/search_engine_tab_helper.h" #include "chrome/browser/ui/side_panel/companion/companion_utils.h" #include "chrome/browser/ui/ui_features.h" -#include "chrome/browser/ui/web_applications/draggable_region_host_impl.h" #include "chrome/browser/ui/webui/browsing_topics/browsing_topics_internals_ui.h" #include "chrome/browser/ui/webui/engagement/site_engagement_ui.h" #include "chrome/browser/ui/webui/internals/internals_ui.h" @@ -53,6 +52,7 @@ #include "chrome/browser/ui/webui/usb_internals/usb_internals.mojom.h" #include "chrome/browser/ui/webui/usb_internals/usb_internals_ui.h" #include "chrome/browser/web_applications/web_app_utils.h" +#include "chrome/common/buildflags.h" #include "chrome/common/chrome_features.h" #include "chrome/common/pref_names.h" #include "chrome/common/webui_url_constants.h" @@ -83,7 +83,7 @@ #include "components/privacy_sandbox/privacy_sandbox_features.h" #include "components/reading_list/features/reading_list_switches.h" #include "components/safe_browsing/buildflags.h" -#include "components/search_engines/search_engine_choice_utils.h" +#include "components/search_engines/search_engine_choice/search_engine_choice_utils.h" #include "components/security_state/content/content_utils.h" #include "components/security_state/core/security_state.h" #include "components/signin/public/identity_manager/identity_manager.h" @@ -153,12 +153,13 @@ #else #include "chrome/browser/badging/badge_manager.h" #include "chrome/browser/cart/chrome_cart.mojom.h" -#include "chrome/browser/new_tab_page/modules/drive/drive.mojom.h" #include "chrome/browser/new_tab_page/modules/feed/feed.mojom.h" +#include "chrome/browser/new_tab_page/modules/file_suggestion/file_suggestion.mojom.h" #include "chrome/browser/new_tab_page/modules/history_clusters/history_clusters.mojom.h" #include "chrome/browser/new_tab_page/modules/photos/photos.mojom.h" #include "chrome/browser/new_tab_page/modules/recipes/recipes.mojom.h" #include "chrome/browser/new_tab_page/modules/v2/history_clusters/history_clusters_v2.mojom.h" +#include "chrome/browser/new_tab_page/modules/v2/most_relevant_tab_resumption/most_relevant_tab_resumption.mojom.h" #include "chrome/browser/new_tab_page/modules/v2/tab_resumption/tab_resumption.mojom.h" #include "chrome/browser/new_tab_page/new_tab_page_util.h" #include "chrome/browser/payments/payment_request_factory.h" @@ -171,7 +172,6 @@ #include "chrome/browser/ui/webui/on_device_internals/on_device_internals_ui.h" #include "chrome/browser/ui/webui/web_app_internals/web_app_internals.mojom.h" #include "chrome/browser/ui/webui/web_app_internals/web_app_internals_ui.h" -#include "components/omnibox/browser/omnibox.mojom.h" #if !defined(OFFICIAL_BUILD) #include "chrome/browser/ui/webui/new_tab_page/foo/foo.mojom.h" // nogncheck crbug.com/1125897 #endif @@ -182,6 +182,7 @@ #include "chrome/browser/ui/webui/history/history_ui.h" #include "chrome/browser/ui/webui/internals/user_education/user_education_internals.mojom.h" #include "chrome/browser/ui/webui/lens/lens_untrusted_ui.h" +#include "chrome/browser/ui/webui/lens/search_bubble_ui.h" #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" @@ -218,6 +219,7 @@ #include "ui/webui/resources/cr_components/history_clusters/history_clusters.mojom.h" #include "ui/webui/resources/cr_components/history_embeddings/history_embeddings.mojom.h" #include "ui/webui/resources/cr_components/most_visited/most_visited.mojom.h" +#include "ui/webui/resources/cr_components/searchbox/searchbox.mojom.h" #include "ui/webui/resources/cr_components/theme_color_picker/theme_color_picker.mojom.h" #include "ui/webui/resources/js/browser_command/browser_command.mojom.h" #include "ui/webui/resources/js/metrics_reporter/metrics_reporter.mojom.h" @@ -246,6 +248,11 @@ #include "ui/webui/resources/cr_components/customize_themes/customize_themes.mojom.h" #endif // !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_CHROMEOS_ASH) +#if BUILDFLAG(IS_CHROMEOS_ASH) && BUILDFLAG(GOOGLE_CHROME_BRANDING) +#include "ash/webui/conch/conch_ui.h" +#include "ash/webui/conch/mojom/conch.mojom.h" +#endif // BUILDFLAG(IS_CHROMEOS_ASH) && BUILDFLAG(GOOGLE_CHROME_BRANDING) + #if BUILDFLAG(IS_CHROMEOS_ASH) #include "ash/constants/ash_features.h" #include "ash/public/mojom/hid_preserving_bluetooth_state_controller.mojom.h" @@ -253,6 +260,7 @@ #include "ash/webui/camera_app_ui/camera_app_ui.h" #include "ash/webui/color_internals/color_internals_ui.h" #include "ash/webui/color_internals/mojom/color_internals.mojom.h" +#include "ash/webui/common/mojom/accelerator_fetcher.mojom.h" #include "ash/webui/common/mojom/accessibility_features.mojom.h" #include "ash/webui/common/mojom/sea_pen.mojom.h" #include "ash/webui/common/mojom/shortcut_input_provider.mojom.h" @@ -306,6 +314,7 @@ #include "chrome/browser/ui/webui/ash/add_supervision/add_supervision.mojom.h" #include "chrome/browser/ui/webui/ash/add_supervision/add_supervision_ui.h" #include "chrome/browser/ui/webui/ash/app_install/app_install.mojom.h" +#include "chrome/browser/ui/webui/ash/app_install/app_install_dialog.h" #include "chrome/browser/ui/webui/ash/app_install/app_install_ui.h" #include "chrome/browser/ui/webui/ash/audio/audio.mojom.h" #include "chrome/browser/ui/webui/ash/audio/audio_ui.h" @@ -326,11 +335,14 @@ #include "chrome/browser/ui/webui/ash/emoji/seal.mojom.h" #include "chrome/browser/ui/webui/ash/enterprise_reporting/enterprise_reporting.mojom.h" #include "chrome/browser/ui/webui/ash/enterprise_reporting/enterprise_reporting_ui.h" +#include "chrome/browser/ui/webui/ash/extended_updates/extended_updates.mojom.h" +#include "chrome/browser/ui/webui/ash/extended_updates/extended_updates_ui.h" #include "chrome/browser/ui/webui/ash/internet_config_dialog.h" #include "chrome/browser/ui/webui/ash/internet_detail_dialog.h" #include "chrome/browser/ui/webui/ash/launcher_internals/launcher_internals.mojom.h" #include "chrome/browser/ui/webui/ash/launcher_internals/launcher_internals_ui.h" #include "chrome/browser/ui/webui/ash/lock_screen_reauth/lock_screen_network_ui.h" +#include "chrome/browser/ui/webui/ash/login/mojom/screens_factory.mojom.h" #include "chrome/browser/ui/webui/ash/login/oobe_ui.h" #include "chrome/browser/ui/webui/ash/mako/mako_ui.h" #include "chrome/browser/ui/webui/ash/manage_mirrorsync/manage_mirrorsync.mojom.h" @@ -465,6 +477,10 @@ #include "chrome/browser/ui/webui/dlp_internals/dlp_internals_ui.h" #endif +#if BUILDFLAG(CHROME_ROOT_STORE_CERT_MANAGEMENT_UI) +#include "ui/webui/resources/cr_components/certificate_manager/certificate_manager_v2.mojom.h" +#endif // BUILDFLAG(CHROME_ROOT_STORE_CERT_MANAGEMENT_UI) + namespace chrome::internal { using content::RegisterWebUIControllerInterfaceBinder; @@ -1029,14 +1045,6 @@ void PopulateChromeFrameBinders( #endif #endif // BUILDFLAG(ENABLE_SPEECH_SERVICE) -#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ - BUILDFLAG(IS_CHROMEOS) - if (!render_frame_host->GetParent()) { - map->Add( - base::BindRepeating(&DraggableRegionsHostImpl::CreateIfAllowed)); - } -#endif - #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ BUILDFLAG(IS_CHROMEOS) if (base::FeatureList::IsEnabled(blink::features::kDesktopPWAsSubApps) && @@ -1076,11 +1084,6 @@ void PopulateChromeFrameBinders( map->Add( base::BindRepeating(&printing::CreateWebPrintingServiceForFrame)); #endif - - if (base::FeatureList::IsEnabled(blink::features::kEnableModelExecutionAPI)) { - map->Add( - base::BindRepeating(&ModelManagerImpl::Create)); - } } void PopulateChromeWebUIFrameBinders( @@ -1160,6 +1163,8 @@ void PopulateChromeWebUIFrameBinders( if (lens::features::IsLensOverlayEnabled()) { RegisterWebUIControllerInterfaceBinder(map); + RegisterWebUIControllerInterfaceBinder< + lens::mojom::SearchBubblePageHandlerFactory, lens::SearchBubbleUI>(map); } RegisterWebUIControllerInterfaceBinder< @@ -1221,7 +1226,7 @@ void PopulateChromeWebUIFrameBinders( browser_command::mojom::CommandHandlerFactory, NewTabPageUI, WhatsNewUI>( map); - RegisterWebUIControllerInterfaceBinder(map); RegisterWebUIControllerInterfaceBinder(map); +#if BUILDFLAG(CHROME_ROOT_STORE_CERT_MANAGEMENT_UI) + RegisterWebUIControllerInterfaceBinder< + certificate_manager_v2::mojom::CertificateManagerPageHandlerFactory, + settings::SettingsUI>(map); +#endif // BUILDFLAG(CHROME_ROOT_STORE_CERT_MANAGEMENT_UI) + RegisterWebUIControllerInterfaceBinder< help_bubble::mojom::HelpBubbleHandlerFactory, InternalsUI, settings::SettingsUI, ReadingListUI, NewTabPageUI, CustomizeChromeUI, @@ -1269,8 +1280,8 @@ void PopulateChromeWebUIFrameBinders( } if (IsDriveModuleEnabled()) { - RegisterWebUIControllerInterfaceBinder(map); + RegisterWebUIControllerInterfaceBinder< + file_suggestion::mojom::FileSuggestionHandler, NewTabPageUI>(map); } if (base::FeatureList::IsEnabled(ntp_features::kNtpPhotosModule)) { @@ -1305,6 +1316,13 @@ void PopulateChromeWebUIFrameBinders( ntp::tab_resumption::mojom::PageHandler, NewTabPageUI>(map); } + if (base::FeatureList::IsEnabled( + ntp_features::kNtpMostRelevantTabResumptionModule)) { + RegisterWebUIControllerInterfaceBinder< + ntp::most_relevant_tab_resumption::mojom::PageHandler, NewTabPageUI>( + map); + } + #if BUILDFLAG(IS_CHROMEOS_ASH) if (ash::features::IsBluetoothDisconnectWarningEnabled()) { RegisterWebUIControllerInterfaceBinder< @@ -1422,6 +1440,12 @@ void PopulateChromeWebUIFrameBinders( ash::settings::mojom::DisplaySettingsProvider, ash::settings::OSSettingsUI>(map); + if (::features::IsShortcutCustomizationEnabled()) { + RegisterWebUIControllerInterfaceBinder< + ash::common::mojom::AcceleratorFetcher, ash::settings::OSSettingsUI>( + map); + } + RegisterWebUIControllerInterfaceBinder< ash::common::mojom::ShortcutInputProvider, ash::settings::OSSettingsUI, ash::ShortcutCustomizationAppUI>(map); @@ -1655,6 +1679,10 @@ void PopulateChromeWebUIFrameBinders( RegisterWebUIControllerInterfaceBinder(map); + RegisterWebUIControllerInterfaceBinder< + ash::extended_updates::mojom::PageHandlerFactory, + ash::extended_updates::ExtendedUpdatesUI>(map); + RegisterWebUIControllerInterfaceBinder< ash::firmware_update::mojom::UpdateProvider, ash::FirmwareUpdateAppUI>( map); @@ -1688,10 +1716,10 @@ void PopulateChromeWebUIFrameBinders( ash::settings::google_drive::mojom::PageHandlerFactory, ash::settings::OSSettingsUI>(map); - if (base::FeatureList::IsEnabled( - chromeos::features::kCrosWebAppInstallDialog) || - base::FeatureList::IsEnabled( - chromeos::features::kCrosOmniboxInstallDialog)) { + RegisterWebUIControllerInterfaceBinder< + ash::screens_factory::mojom::ScreensFactory, ash::OobeUI>(map); + + if (ash::app_install::AppInstallDialog::IsEnabled()) { RegisterWebUIControllerInterfaceBinder< ash::app_install::mojom::PageHandlerFactory, ash::app_install::AppInstallDialogUI>(map); @@ -1792,6 +1820,12 @@ void PopulateChromeWebUIFrameInterfaceBrokers( .Add(); #endif // BUILDFLAG(IS_CHROMEOS_ASH) && !defined(OFFICIAL_BUILD) +#if BUILDFLAG(IS_CHROMEOS_ASH) && BUILDFLAG(GOOGLE_CHROME_BRANDING) + registry.ForWebUI() + .Add() + .Add(); +#endif // BUILDFLAG(IS_CHROMEOS_ASH) && BUILDFLAG(GOOGLE_CHROME_BRANDING) + #if BUILDFLAG(IS_CHROMEOS_ASH) registry.ForWebUI() .Add() @@ -1854,7 +1888,9 @@ void PopulateChromeWebUIFrameInterfaceBrokers( #if !BUILDFLAG(IS_ANDROID) if (lens::features::IsLensOverlayEnabled()) { registry.ForWebUI() - .Add(); + .Add() + .Add() + .Add(); } if (companion::IsCompanionFeatureEnabled()) { registry.ForWebUI() 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 ac42bd8b..b07f8f58 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 @@ -82,6 +82,7 @@ #include "chrome/browser/font_family_cache.h" #include "chrome/browser/gpu/chrome_browser_main_extra_parts_gpu.h" #include "chrome/browser/hid/chrome_hid_delegate.h" +#include "chrome/browser/history/history_service_factory.h" #include "chrome/browser/interstitials/enterprise_util.h" #include "chrome/browser/lifetime/browser_shutdown.h" #include "chrome/browser/lookalikes/lookalike_url_navigation_throttle.h" @@ -97,6 +98,7 @@ #include "chrome/browser/memory/chrome_browser_main_extra_parts_memory.h" #include "chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.h" #include "chrome/browser/metrics/chrome_feature_list_creator.h" +#include "chrome/browser/model_execution/model_manager_impl.h" #include "chrome/browser/navigation_predictor/anchor_element_preloader.h" #include "chrome/browser/net/chrome_network_delegate.h" #include "chrome/browser/net/profile_network_context_service.h" @@ -160,6 +162,8 @@ #include "chrome/browser/ssl/security_state_tab_helper.h" #include "chrome/browser/ssl/ssl_client_certificate_selector.h" #include "chrome/browser/ssl/typed_navigation_upgrade_throttle.h" +#include "chrome/browser/supervised_user/supervised_user_google_auth_navigation_throttle.h" +#include "chrome/browser/supervised_user/supervised_user_navigation_throttle.h" #include "chrome/browser/task_manager/sampling/task_manager_impl.h" #include "chrome/browser/tracing/chrome_tracing_delegate.h" #include "chrome/browser/translate/translate_service.h" @@ -198,9 +202,9 @@ #include "chrome/common/env_vars.h" #include "chrome/common/google_url_loader_throttle.h" #include "chrome/common/logging_chrome.h" -#include "chrome/common/pdf_util.h" #include "chrome/common/ppapi_utils.h" #include "chrome/common/pref_names.h" +#include "chrome/common/profiler/process_type.h" #include "chrome/common/profiler/thread_profiler_configuration.h" #include "chrome/common/renderer_configuration.mojom.h" #include "chrome/common/secure_origin_allowlist.h" @@ -236,6 +240,8 @@ #include "components/error_page/common/localized_error.h" #include "components/error_page/content/browser/net_error_auto_reloader.h" #include "components/google/core/common/google_switches.h" +#include "components/heap_profiling/in_process/heap_profiler_controller.h" +#include "components/history/content/browser/visited_link_navigation_throttle.h" #include "components/keep_alive_registry/keep_alive_types.h" #include "components/keep_alive_registry/scoped_keep_alive.h" #include "components/language/core/browser/pref_names.h" @@ -258,6 +264,7 @@ #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/pdf/common/pdf_util.h" #include "components/performance_manager/embedder/performance_manager_registry.h" #include "components/permissions/bluetooth_delegate_impl.h" #include "components/permissions/permission_context_base.h" @@ -280,22 +287,20 @@ #include "components/safe_browsing/content/browser/safe_browsing_navigation_throttle.h" #include "components/safe_browsing/content/browser/ui_manager.h" #include "components/safe_browsing/core/browser/hashprefix_realtime/hash_realtime_service.h" -#include "components/safe_browsing/core/browser/hashprefix_realtime/hash_realtime_utils.h" #include "components/safe_browsing/core/browser/realtime/policy_engine.h" #include "components/safe_browsing/core/browser/realtime/url_lookup_service.h" #include "components/safe_browsing/core/browser/url_checker_delegate.h" #include "components/safe_browsing/core/common/features.h" +#include "components/safe_browsing/core/common/hashprefix_realtime/hash_realtime_utils.h" #include "components/safe_browsing/core/common/safe_browsing_prefs.h" #include "components/security_interstitials/content/insecure_form_navigation_throttle.h" #include "components/security_interstitials/content/ssl_error_handler.h" #include "components/security_interstitials/content/ssl_error_navigation_throttle.h" #include "components/security_state/core/security_state.h" -#include "components/services/storage/public/cpp/storage_prefs.h" #include "components/site_isolation/pref_names.h" #include "components/site_isolation/preloaded_isolated_origins.h" #include "components/site_isolation/site_isolation_policy.h" #include "components/subresource_filter/content/browser/content_subresource_filter_throttle_manager.h" -#include "components/supervised_user/core/common/buildflags.h" #include "components/translate/core/common/translate_switches.h" #include "components/user_prefs/user_prefs.h" #include "components/variations/variations_associated_data.h" @@ -315,6 +320,7 @@ #include "content/public/browser/child_process_data.h" #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/file_url_loader.h" #include "content/public/browser/isolated_web_apps_policy.h" #include "content/public/browser/legacy_tech_cookie_issue_details.h" @@ -371,6 +377,7 @@ #include "services/network/public/cpp/web_sandbox_flags.h" #include "services/network/public/mojom/network_service.mojom.h" #include "services/network/public/mojom/web_transport.mojom.h" +#include "services/video_effects/public/mojom/video_effects_processor.mojom-forward.h" #include "third_party/blink/public/common/features.h" #include "third_party/blink/public/common/loader/url_loader_throttle.h" #include "third_party/blink/public/common/navigation/navigation_policy.h" @@ -440,7 +447,6 @@ #include "chrome/browser/ash/net/network_health/network_health_manager.h" #include "chrome/browser/ash/net/system_proxy_manager.h" #include "chrome/browser/ash/profiles/profile_helper.h" -#include "chrome/browser/ash/settings/cros_settings.h" #include "chrome/browser/ash/smb_client/fileapi/smbfs_file_system_backend_delegate.h" #include "chrome/browser/ash/system/input_device_settings.h" #include "chrome/browser/ash/url_handler.h" @@ -453,6 +459,7 @@ #include "chrome/browser/ui/webui/ash/kerberos/kerberos_in_browser_dialog.h" #include "chrome/common/webui_url_constants.h" #include "chromeos/ash/components/browser_context_helper/browser_context_types.h" +#include "chromeos/ash/components/settings/cros_settings.h" #include "chromeos/ash/services/network_health/public/cpp/network_health_helper.h" #include "components/user_manager/user.h" #include "components/user_manager/user_manager.h" @@ -479,6 +486,7 @@ #include "chrome/browser/download/android/intercept_oma_download_navigation_throttle.h" #include "chrome/browser/flags/android/chrome_feature_list.h" #include "chrome/browser/ui/android/tab_model/tab_model_list.h" +#include "chrome/browser/ui/webid/digital_identity_safety_interstitial_bridge_android.h" #include "chrome/common/chrome_descriptors.h" #include "components/browser_ui/accessibility/android/font_size_prefs_android.h" #include "components/crash/content/browser/child_exit_observer_android.h" @@ -669,18 +677,11 @@ #include "components/pdf/common/constants.h" #endif // BUILDFLAG(ENABLE_PDF) -#if BUILDFLAG(ENABLE_SUPERVISED_USERS) -#include "chrome/browser/supervised_user/supervised_user_google_auth_navigation_throttle.h" -#endif #if BUILDFLAG(ENABLE_MEDIA_REMOTING) #include "chrome/browser/media/cast_remoting_connector.h" #endif -#if BUILDFLAG(ENABLE_SUPERVISED_USERS) -#include "chrome/browser/supervised_user/supervised_user_navigation_throttle.h" -#endif - #if BUILDFLAG(SAFE_BROWSING_AVAILABLE) #include "chrome/browser/safe_browsing/chrome_password_protection_service.h" #endif @@ -1179,6 +1180,17 @@ void LaunchURL( url_state == policy::URLBlocklist::URLBlocklistState::URL_IN_ALLOWLIST; } +#if BUILDFLAG(IS_CHROMEOS_ASH) + // Never skip security checks for the intent:// scheme because + // `ExternalProtocolHandler::LaunchUrlWithoutSecurityCheck` does not handle + // intent:// URLs correctly (or any URLs that should be opened in ARC). + // TODO(b/331400224): Fix `LaunchUrlWithoutSecurityCheck` to handle intent:// + // URLs correctly and stop treating them in a special way here. + if (url.SchemeIs("intent")) { + is_allowlisted = false; + } +#endif + // If the URL is in allowlist, we launch it without asking the user and // without any additional security checks. Since the URL is allowlisted, // we assume it can be executed. @@ -1411,6 +1423,33 @@ CreatePopupNavigationDelegate(NavigateParams params) { return std::make_unique(std::move(params)); } +// NOTE: MaybeCreateVisitedLinkNavigationThrottleFor is defined here due to +// usage of Profile code which lives in chrome/. The rest of the +// VisitedLinkNavigationThrottle class lives in components/, which cannot access +// chrome/ code due to layering. +std::unique_ptr +MaybeCreateVisitedLinkNavigationThrottleFor( + content::NavigationHandle* navigation_handle) { + if (!base::FeatureList::IsEnabled( + blink::features::kPartitionVisitedLinkDatabase)) { + return nullptr; + } + Profile* profile = Profile::FromBrowserContext( + navigation_handle->GetWebContents()->GetBrowserContext()); + // Off-the-record profiles do not record history or visited links. + if (profile->IsOffTheRecord()) { + return nullptr; + } + history::HistoryService* history_service = + HistoryServiceFactory::GetForProfile(profile, + ServiceAccessType::IMPLICIT_ACCESS); + if (!history_service) { + return nullptr; + } + return std::make_unique( + std::move(navigation_handle), history_service); +} + ChromeContentBrowserClient::PopupNavigationDelegateFactory g_popup_navigation_delegate_factory = &CreatePopupNavigationDelegate; @@ -1469,8 +1508,6 @@ void ChromeContentBrowserClient::RegisterLocalStatePrefs( registry->RegisterBooleanPref(prefs::kSitePerProcess, false); registry->RegisterBooleanPref(prefs::kTabFreezingEnabled, true); registry->RegisterIntegerPref(prefs::kSCTAuditingHashdanceReportCount, 0); - registry->RegisterBooleanPref(prefs::kNewBaseUrlInheritanceBehaviorAllowed, - true); #if BUILDFLAG(IS_CHROMEOS) registry->RegisterBooleanPref(prefs::kNativeClientForceAllowed, false); #endif // BUILDFLAG(IS_CHROMEOS) @@ -1765,15 +1802,9 @@ ChromeContentBrowserClient::GetStoragePartitionConfigForSite( std::unique_ptr ChromeContentBrowserClient::GetWebContentsViewDelegate( content::WebContents* web_contents) { - Profile* profile = - Profile::FromBrowserContext(web_contents->GetBrowserContext()); - // Do not track web contents performance for profiles that have Keyed Services - // disabled. - if (!AreKeyedServicesDisabledForProfileByDefault(profile)) { - if (auto* registry = - performance_manager::PerformanceManagerRegistry::GetInstance()) { - registry->MaybeCreatePageNodeForWebContents(web_contents); - } + if (auto* registry = + performance_manager::PerformanceManagerRegistry::GetInstance()) { + registry->MaybeCreatePageNodeForWebContents(web_contents); } return CreateWebContentsViewDelegate(web_contents); } @@ -2434,10 +2465,13 @@ bool ChromeContentBrowserClient::IsIsolatedContextAllowedForUrl( #endif } -bool ChromeContentBrowserClient::IsGetAllScreensMediaAllowed( - content::BrowserContext* context, - const url::Origin& origin) { - return capture_policy::IsGetAllScreensMediaAllowed(context, origin.GetURL()); +void ChromeContentBrowserClient::CheckGetAllScreensMediaAllowed( + content::RenderFrameHost* render_frame_host, + base::OnceCallback callback) { + capture_policy::CheckGetAllScreensMediaAllowed( + render_frame_host->GetBrowserContext(), + render_frame_host->GetMainFrame()->GetLastCommittedOrigin().GetURL(), + std::move(callback)); } bool ChromeContentBrowserClient::IsFileAccessAllowed( @@ -2613,12 +2647,6 @@ void ChromeContentBrowserClient::AppendExtraCommandLineSwitches( if (prefs->GetBoolean(prefs::kPrintPreviewDisabled)) command_line->AppendSwitch(switches::kDisablePrintPreview); - // This passes the preference set by an enterprise policy on to a blink - // switch so that we know whether to force WebSQL to be enabled. - if (prefs->GetBoolean(storage::kWebSQLAccess)) { - command_line->AppendSwitch(blink::switches::kWebSQLAccess); - } - if (prefs->GetBoolean(prefs::kDataUrlInSvgUseEnabled)) { command_line->AppendSwitch(blink::switches::kDataUrlInSvgUseEnabled); } @@ -2839,14 +2867,20 @@ void ChromeContentBrowserClient::AppendExtraCommandLineSwitches( if (base::FeatureList::IsEnabled(features::kNoPreReadMainDll)) { command_line->AppendSwitch(switches::kNoPreReadMainDll); } - if (base::FeatureList::IsEnabled(features::kNoAppCompatClearInChildren)) { - command_line->AppendSwitch(switches::kNoAppCompatClear); - } #endif ThreadProfilerConfiguration::Get()->AppendCommandLineSwitchForChildProcess( command_line); + if (process_type != switches::kZygoteProcess) { + // The switch value depends on the "HeapProfilerCentralControl" feature, and + // the zygote starts before the FeatureList is available. + heap_profiling::HeapProfilerController:: + AppendCommandLineSwitchForChildProcess( + command_line, chrome::GetChannel(), + GetProfileParamsProcess(*command_line)); + } + #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH) // Opt into a hardened stack canary mitigation if it hasn't already been // force-disabled. @@ -3589,6 +3623,43 @@ bool ChromeContentBrowserClient::ShouldDenyRequestOnCertificateError( namespace { +bool IsForcedColorsEnabledForWebContent(content::WebContents* contents, + const ui::NativeTheme* native_theme) { + if (!native_theme->InForcedColorsMode() || !contents) { + return false; + } + + PrefService* prefs = + Profile::FromBrowserContext(contents->GetBrowserContext())->GetPrefs(); + CHECK(prefs); + + const base::Value::List& forced_colors_blocklist = + prefs->GetList(prefs::kPageColorsBlockList); + + if (forced_colors_blocklist.empty()) { + return true; + } + + GURL url = contents->GetLastCommittedURL(); + + // Forced Colors should be disabled for the current URL if it is in the block + // list. + for (auto const& value : forced_colors_blocklist) { + ContentSettingsPattern pattern = + ContentSettingsPattern::FromString(value.GetString()); + + if (pattern == ContentSettingsPattern::Wildcard() || !pattern.IsValid()) { + continue; + } + + if (pattern.Matches(url)) { + return false; + } + } + + return true; +} + #if !BUILDFLAG(IS_ANDROID) blink::mojom::PreferredColorScheme ToBlinkPreferredColorScheme( ui::NativeTheme::PreferredColorScheme native_theme_scheme) { @@ -3622,11 +3693,20 @@ bool UpdatePreferredColorScheme(WebPreferences* web_prefs, delegate->IsNightModeEnabled() ? blink::mojom::PreferredColorScheme::kDark : blink::mojom::PreferredColorScheme::kLight; + web_prefs->browser_preferred_color_scheme = + web_prefs->preferred_color_scheme; } #else // Update based on native theme scheme. web_prefs->preferred_color_scheme = ToBlinkPreferredColorScheme(native_theme->GetPreferredColorScheme()); + + // Update based on the ColorProvider associated with `web_contents`. Depends + // on the browser color mode settings. + web_prefs->browser_preferred_color_scheme = + web_contents->GetColorMode() == ui::ColorProviderKey::ColorMode::kLight + ? blink::mojom::PreferredColorScheme::kLight + : blink::mojom::PreferredColorScheme::kDark; #endif // BUILDFLAG(IS_ANDROID) // Reauth WebUI doesn't support dark mode yet because it shares the dialog @@ -4213,7 +4293,8 @@ void ChromeContentBrowserClient::OverrideWebkitPrefs( break; } - web_prefs->in_forced_colors = GetWebTheme()->InForcedColorsMode(); + web_prefs->in_forced_colors = + IsForcedColorsEnabledForWebContent(web_contents, GetWebTheme()); UpdatePreferredColorScheme( web_prefs, @@ -4242,14 +4323,12 @@ void ChromeContentBrowserClient::OverrideWebkitPrefs( prefs->GetBoolean(prefs::kWebXRImmersiveArEnabled); #endif - // Only set `databases_enabled` if disabled. Otherwise check blink::feature - // settings for Origin Trial and Chrome flag settings, or prefs setting - // for Enterprise Policy. + // Only set `databases_enabled` if disabled, otherwise check blink::feature + // settings. web_prefs->databases_enabled = !web_prefs->databases_enabled ? false - : (base::FeatureList::IsEnabled(blink::features::kWebSQLAccess) || - prefs->GetBoolean(storage::kWebSQLAccess)); + : base::FeatureList::IsEnabled(blink::features::kWebSQLAccess); #if BUILDFLAG(IS_FUCHSIA) // Disable WebSQL support since it is being removed from the web platform @@ -4316,7 +4395,10 @@ bool ChromeContentBrowserClient::OverrideWebPreferencesAfterNavigation( parts->OverrideWebPreferencesAfterNavigation(web_contents, web_prefs); } - prefs_changed |= GetWebTheme()->InForcedColorsMode(); + const bool in_forced_colors = + IsForcedColorsEnabledForWebContent(web_contents, GetWebTheme()); + prefs_changed |= (web_prefs->in_forced_colors != in_forced_colors); + web_prefs->in_forced_colors = in_forced_colors; prefs_changed |= UpdatePreferredColorScheme(web_prefs, web_contents->GetLastCommittedURL(), @@ -4961,12 +5043,6 @@ ChromeContentBrowserClient::CreateThrottlesForNavigation( page_load_metrics::MetricsNavigationThrottle::Create(handle)); } -#if BUILDFLAG(ENABLE_SUPERVISED_USERS) - MaybeAddThrottle( - SupervisedUserNavigationThrottle::MaybeCreateThrottleFor(handle), - &throttles); -#endif - #if BUILDFLAG(IS_ANDROID) // TODO(davidben): This is insufficient to integrate with prerender properly. // https://crbug.com/370595 @@ -5055,11 +5131,13 @@ ChromeContentBrowserClient::CreateThrottlesForNavigation( } #endif -#if BUILDFLAG(ENABLE_SUPERVISED_USERS) MaybeAddThrottle( SupervisedUserGoogleAuthNavigationThrottle::MaybeCreate(handle), &throttles); -#endif + + MaybeAddThrottle( + SupervisedUserNavigationThrottle::MaybeCreateThrottleFor(handle), + &throttles); if (auto* throttle_manager = subresource_filter::ContentSubresourceFilterThrottleManager:: @@ -5292,6 +5370,9 @@ ChromeContentBrowserClient::CreateThrottlesForNavigation( &throttles); #endif // !BUILDFLAG(IS_ANDROID) + MaybeAddThrottle(MaybeCreateVisitedLinkNavigationThrottleFor(handle), + &throttles); + return throttles; } @@ -5419,8 +5500,13 @@ ChromeContentBrowserClient::GetSpareRendererDelayForSiteURL( return features::kSpareRendererWarmupDelay.Get(); } -content::TracingDelegate* ChromeContentBrowserClient::GetTracingDelegate() { - return new ChromeTracingDelegate(); +std::unique_ptr +ChromeContentBrowserClient::CreateTracingDelegate() { + return std::make_unique(); +} + +bool ChromeContentBrowserClient::IsSystemWideTracingEnabled() { + return ChromeTracingDelegate::IsSystemWideTracingEnabled(); } bool ChromeContentBrowserClient::IsPluginAllowedToCallRequestOSFileHandle( @@ -5552,6 +5638,8 @@ ChromeContentBrowserClient::MaybeCreateSafeBrowsingURLLoaderThrottle( profile->IsOffTheRecord(), profile->GetPrefs(), safe_browsing::hash_realtime_utils::GetCountryCode( g_browser_process->variations_service()), + safe_browsing::hash_realtime_utils::GetLatestCountryCode( + g_browser_process->variations_service()), /*log_usage_histograms=*/true); safe_browsing::AsyncCheckTracker* async_check_tracker = GetAsyncCheckTracker(wc_getter, is_enterprise_lookup_enabled, @@ -5813,8 +5901,6 @@ ChromeContentBrowserClient::CreateNonNetworkNavigationURLLoaderFactory( if (content::IsolatedWebAppsPolicy::AreIsolatedWebAppsEnabled( browser_context) && !browser_context->ShutdownStarted()) { - // TODO(crbug.com/1365848): Only register the factory if we are already in - // an isolated storage partition. return web_app::IsolatedWebAppURLLoaderFactory::Create(frame_tree_node_id, browser_context); } @@ -6123,9 +6209,6 @@ void ChromeContentBrowserClient:: if (content::IsolatedWebAppsPolicy::AreIsolatedWebAppsEnabled( browser_context) && !browser_context->ShutdownStarted()) { - // TODO(crbug.com/1365848): Only register the factory if we are already - // in an isolated storage partition. - if (frame_host != nullptr) { factories->emplace( chrome::kIsolatedAppScheme, @@ -6188,6 +6271,7 @@ void ChromeContentBrowserClient::WillCreateURLLoaderFactory( int render_process_id, URLLoaderFactoryType type, const url::Origin& request_initiator, + const net::IsolationInfo& isolation_info, std::optional navigation_id, ukm::SourceIdObj ukm_source_id, network::URLLoaderFactoryBuilder& factory_builder, @@ -6836,17 +6920,6 @@ bool ChromeContentBrowserClient::HandleWebUI( } #if !BUILDFLAG(IS_ANDROID) - // Redirect from the preloading sub-page to the performance page. - if (url->SchemeIs(content::kChromeUIScheme) && - url->host() == chrome::kChromeUISettingsHost && - url->path() == chrome::kPreloadingSubPagePath) { - GURL::Replacements replacements; - replacements.SetPathStr(chrome::kPerformanceSubPagePath); - *url = url->ReplaceComponents(replacements); - UMA_HISTOGRAM_BOOLEAN("Settings.Preloading.DeprecatedRedirect", true); - } else if (url->path() == chrome::kPerformanceSubPagePath) { - UMA_HISTOGRAM_BOOLEAN("Settings.Preloading.DeprecatedRedirect", false); - } Profile* profile = Profile::FromBrowserContext(browser_context); auto* tracking_protection_settings = TrackingProtectionSettingsFactory::GetForProfile(profile); @@ -7497,9 +7570,10 @@ void ChromeContentBrowserClient::IsClipboardCopyAllowedByPolicy( if (service->IsUrlAllowedToCopy(*source.data_transfer_endpoint()->GetURL(), metadata.size.value_or(0), &replacement_data)) { - std::move(callback).Run(data, std::nullopt); + std::move(callback).Run(metadata.format_type, data, std::nullopt); } else { - std::move(callback).Run(data, std::move(replacement_data)); + std::move(callback).Run(metadata.format_type, data, + std::move(replacement_data)); } #endif // BUILDFLAG(ENTERPRISE_DATA_CONTROLS) } @@ -7710,6 +7784,34 @@ ChromeContentBrowserClient::CreateIdentityRequestDialogController( return std::make_unique(web_contents); } +#if BUILDFLAG(IS_ANDROID) +namespace { + +void RunDigitalIdentityCallback( + std::unique_ptr bridge, + content::ContentBrowserClient::DigitalIdentityInterstitialCallback callback, + content::DigitalIdentityProvider::RequestStatusForMetrics + status_for_metrics) { + std::move(callback).Run(status_for_metrics); +} + +} // anonymous namespace + +void ChromeContentBrowserClient::ShowDigitalIdentityInterstitialIfNeeded( + content::WebContents& web_contents, + const url::Origin& origin, + DigitalIdentityInterstitialCallback callback) { + auto bridge = + std::make_unique(); + auto* bridge_ptr = bridge.get(); + // Callback takes ownership of |bridge|. + bridge_ptr->ShowInterstitialIfNeeded( + web_contents, origin, + base::BindOnce(&RunDigitalIdentityCallback, std::move(bridge), + std::move(callback))); +} +#endif + bool ChromeContentBrowserClient::SuppressDifferentOriginSubframeJSDialogs( content::BrowserContext* browser_context) { Profile* profile = Profile::FromBrowserContext(browser_context); @@ -7880,8 +7982,7 @@ ChromeContentBrowserClient::GetAlternativeErrorPageOverrideInfo( auto alternative_error_page_override_info = content::mojom::AlternativeErrorPageOverrideInfo::New(); bool is_portal_state = portal_state == PortalState::kPortal || - portal_state == PortalState::kPortalSuspected || - portal_state == PortalState::kProxyAuthRequired; + portal_state == PortalState::kPortalSuspected; // Use the alternative error page dictionary to provide additional // suggestions in the default error page. alternative_error_page_override_info->alternative_error_page_params.Set( @@ -8000,9 +8101,10 @@ bool ChromeContentBrowserClient::IsTransientActivationRequiredForHtmlFullscreen( const HostContentSettingsMap* const content_settings = HostContentSettingsMapFactory::GetForProfile( render_frame_host->GetBrowserContext()); - if (content_settings->GetContentSetting( + if (content_settings && + content_settings->GetContentSetting( url, url, ContentSettingsType::AUTOMATIC_FULLSCREEN) == - CONTENT_SETTING_ALLOW) { + CONTENT_SETTING_ALLOW) { return false; } } @@ -8142,6 +8244,15 @@ void ChromeContentBrowserClient::BindVideoEffectsManager( media_effects::BindVideoEffectsManager(device_id, browser_context, std::move(video_effects_manager)); } + +void ChromeContentBrowserClient::BindVideoEffectsProcessor( + const std::string& device_id, + content::BrowserContext* browser_context, + mojo::PendingReceiver + video_effects_processor) { + media_effects::BindVideoEffectsProcessor(device_id, browser_context, + std::move(video_effects_processor)); +} #endif // !BUILDFLAG(IS_ANDROID) void ChromeContentBrowserClient::PreferenceRankAudioDeviceInfos( @@ -8223,3 +8334,9 @@ bool ChromeContentBrowserClient::ShouldSuppressAXLoadComplete( return url == GURL(chrome::kChromeUINewTabURL) || url == GURL(chrome::kChromeUINewTabPageURL); } + +void ChromeContentBrowserClient::BindModelManager( + content::RenderFrameHost* rfh, + mojo::PendingReceiver receiver) { + ModelManagerImpl::Create(rfh, std::move(receiver)); +} 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 0328a8c6..93468395 100755 --- a/tools/under-control/src/chrome/browser/prefs/browser_prefs.cc +++ b/tools/under-control/src/chrome/browser/prefs/browser_prefs.cc @@ -116,6 +116,7 @@ #include "components/embedder_support/origin_trials/origin_trial_prefs.h" #include "components/enterprise/browser/identifiers/identifiers_prefs.h" #include "components/enterprise/buildflags/buildflags.h" +#include "components/fingerprinting_protection_filter/browser/fingerprinting_protection_filter_constants.h" #include "components/flags_ui/pref_service_flags_storage.h" #include "components/history_clusters/core/history_clusters_prefs.h" #include "components/image_fetcher/core/cache/image_cache.h" @@ -163,21 +164,20 @@ #include "components/security_interstitials/content/stateful_ssl_host_state_delegate.h" #include "components/segmentation_platform/embedder/default_model/device_switcher_result_dispatcher.h" #include "components/segmentation_platform/public/segmentation_platform_service.h" -#include "components/services/storage/public/cpp/storage_prefs.h" #include "components/sessions/core/session_id_generator.h" #include "components/signin/public/base/signin_pref_names.h" #include "components/signin/public/identity_manager/identity_manager.h" #include "components/site_engagement/content/site_engagement_service.h" -#include "components/subresource_filter/content/browser/ruleset_service.h" +#include "components/subresource_filter/content/shared/browser/ruleset_service.h" #include "components/subresource_filter/core/browser/subresource_filter_constants.h" #include "components/supervised_user/core/browser/supervised_user_preferences.h" -#include "components/supervised_user/core/common/buildflags.h" #include "components/sync/base/pref_names.h" #include "components/sync/service/glue/sync_transport_data_prefs.h" #include "components/sync/service/sync_prefs.h" #include "components/sync_device_info/device_info_prefs.h" #include "components/sync_preferences/pref_service_syncable.h" #include "components/sync_sessions/session_sync_prefs.h" +#include "components/tpcd/metadata/prefs.h" #include "components/tracing/common/pref_names.h" #include "components/translate/core/browser/translate_prefs.h" #include "components/update_client/update_client.h" @@ -238,11 +238,6 @@ #include "chrome/browser/screen_ai/pref_names.h" #endif -#if BUILDFLAG(ENABLE_SUPERVISED_USERS) -#include "components/supervised_user/core/browser/child_account_service.h" -#include "components/supervised_user/core/browser/supervised_user_service.h" -#endif - #include "components/feed/buildflags.h" #include "components/feed/core/common/pref_names.h" #include "components/feed/core/shared_prefs/pref_names.h" @@ -261,6 +256,7 @@ #include "chrome/browser/notifications/notification_channels_provider_android.h" #include "chrome/browser/password_manager/android/password_manager_android_util.h" #include "chrome/browser/readaloud/android/prefs.h" +#include "chrome/browser/safety_hub/android/prefs.h" #include "chrome/browser/ssl/known_interception_disclosure_infobar_delegate.h" #include "components/cdm/browser/media_drm_storage_impl.h" // nogncheck crbug.com/1125897 #include "components/ntp_snippets/register_prefs.h" @@ -278,7 +274,7 @@ #include "chrome/browser/media/unified_autoplay_config.h" #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/drive/drive_service.h" +#include "chrome/browser/new_tab_page/modules/file_suggestion/drive_service.h" #include "chrome/browser/new_tab_page/modules/photos/photos_service.h" #include "chrome/browser/new_tab_page/modules/recipes/recipes_service.h" #include "chrome/browser/new_tab_page/modules/safe_browsing/safe_browsing_handler.h" @@ -293,6 +289,7 @@ #include "chrome/browser/ui/commerce/commerce_ui_tab_helper.h" #include "chrome/browser/ui/safety_hub/safety_hub_prefs.h" #include "chrome/browser/ui/startup/startup_browser_creator.h" +#include "chrome/browser/ui/tabs/saved_tab_groups/saved_tab_group_utils.h" #include "chrome/browser/ui/webui/cr_components/theme_color_picker/theme_color_picker_handler.h" #include "chrome/browser/ui/webui/history/foreign_session_handler.h" #include "chrome/browser/ui/webui/new_tab_page/new_tab_page_handler.h" @@ -391,6 +388,7 @@ #include "chrome/browser/ash/login/screens/enable_adb_sideloading_screen.h" #include "chrome/browser/ash/login/screens/reset_screen.h" #include "chrome/browser/ash/login/security_token_session_controller.h" +#include "chrome/browser/ash/login/session/chrome_session_manager.h" #include "chrome/browser/ash/login/session/user_session_manager.h" #include "chrome/browser/ash/login/signin/signin_error_notifier.h" #include "chrome/browser/ash/login/signin/token_handle_fetcher.h" @@ -476,6 +474,7 @@ #include "chrome/browser/media/cdm_pref_service_helper.h" #include "chrome/browser/media/media_foundation_service_monitor.h" #include "chrome/browser/os_crypt/app_bound_encryption_metrics_win.h" +#include "chrome/browser/os_crypt/app_bound_encryption_provider_win.h" #if BUILDFLAG(GOOGLE_CHROME_BRANDING) #include "chrome/browser/win/conflicts/incompatible_applications_updater.h" #include "chrome/browser/win/conflicts/module_database.h" @@ -991,6 +990,9 @@ constexpr char kResetCheckDefaultBrowser[] = // Deprecated 02/2024 constexpr char kOsCryptAppBoundFixedDataPrefName[] = "os_crypt.app_bound_fixed_data"; +// Deprecated 03/2024 +constexpr char kOsCryptAppBoundFixedData2PrefName[] = + "os_crypt.app_bound_fixed_data2"; #endif // BUILDFLAG(IS_WIN) // Deprecated 02/2024. @@ -1007,16 +1009,35 @@ constexpr char kPrivacySandboxApisEnabled[] = "privacy_sandbox.apis_enabled"; constexpr char kOobeGuestAcceptedTos[] = "oobe.guest_accepted_tos"; #endif // BUILDFLAG(IS_CHROMEOS_ASH) +// Deprecated 03/2024. +constexpr char kShowInternalAccessibilityTree[] = + "accessibility.show_internal_accessibility_tree"; + // Deprecated 03/2024. // A `kDefaultSearchProviderChoicePending` pref persists (migrated to a new // pref name to reset the data), so the variable name has been changed here. constexpr char kDefaultSearchProviderChoicePendingDeprecated[] = "default_search_provider.choice_pending"; +// Deprecated 03/2024. +constexpr char kTrackingProtectionSentimentSurveyGroup[] = + "tracking_protection.tracking_protection_sentiment_survey_group"; +constexpr char kTrackingProtectionSentimentSurveyStartTime[] = + "tracking_protection.tracking_protection_sentiment_survey_start_time"; +constexpr char kTrackingProtectionSentimentSurveyEndTime[] = + "tracking_protection.tracking_protection_sentiment_survey_end_time"; + +// Deprecated 03/2024 +constexpr char kPreferencesMigratedToBasic[] = + "browser.clear_data.preferences_migrated_to_basic"; + // Deprecated 04/2024. inline constexpr char kOmniboxInstantKeywordUsed[] = "omnibox.instant_keyword_used"; +// Deprecated 04/2024. +inline constexpr char kDIPSTimerLastUpdate[] = "dips_timer_last_update"; + // Register local state used only for migration (clearing or moving to a new // key). void RegisterLocalStatePrefsForMigration(PrefRegistrySimple* registry) { @@ -1127,6 +1148,9 @@ void RegisterLocalStatePrefsForMigration(PrefRegistrySimple* registry) { // Deprecated 02/2024. registry->RegisterStringPref(kOsCryptAppBoundFixedDataPrefName, std::string()); + // Deprecated 03/2024. + registry->RegisterStringPref(kOsCryptAppBoundFixedData2PrefName, + std::string()); #endif #if BUILDFLAG(IS_CHROMEOS_ASH) @@ -1431,12 +1455,28 @@ void RegisterProfilePrefsForMigration( // Deprecated 03/2024. registry->RegisterBooleanPref(kPrivacySandboxApisEnabled, true); + // Deprecated 03/2024. + registry->RegisterBooleanPref(kShowInternalAccessibilityTree, false); + // Deprecated 03/2024. registry->RegisterBooleanPref(kDefaultSearchProviderChoicePendingDeprecated, false); + // Deprecated 03/2024 + registry->RegisterIntegerPref(kTrackingProtectionSentimentSurveyGroup, 0); + registry->RegisterTimePref(kTrackingProtectionSentimentSurveyStartTime, + base::Time()); + registry->RegisterTimePref(kTrackingProtectionSentimentSurveyEndTime, + base::Time()); + + // Deprecated 03/2024. + registry->RegisterBooleanPref(kPreferencesMigratedToBasic, false); + // Deprecated 04/2024. registry->RegisterBooleanPref(kOmniboxInstantKeywordUsed, false); + + // Deprecated 04/2024. + registry->RegisterTimePref(kDIPSTimerLastUpdate, base::Time()); } void ClearSyncRequestedPrefAndMaybeMigrate(PrefService* profile_prefs) { @@ -1521,9 +1561,14 @@ void RegisterLocalState(PrefRegistrySimple* registry) { sessions::SessionIdGenerator::RegisterPrefs(registry); SSLConfigServiceManager::RegisterPrefs(registry); subresource_filter::IndexedRulesetVersion::RegisterPrefs( - registry, subresource_filter::kSafeBrowsingFilterTag); + registry, subresource_filter::kSafeBrowsingRulesetConfig.filter_tag); + subresource_filter::IndexedRulesetVersion::RegisterPrefs( + registry, + fingerprinting_protection_filter::kFingerprintingProtectionRulesetConfig + .filter_tag); SystemNetworkContextManager::RegisterPrefs(registry); tpcd::experiment::RegisterLocalStatePrefs(registry); + tpcd::metadata::RegisterLocalStatePrefs(registry); tracing::RegisterPrefs(registry); update_client::RegisterPrefs(registry); variations::VariationsService::RegisterPrefs(registry); @@ -1584,6 +1629,7 @@ void RegisterLocalState(PrefRegistrySimple* registry) { ash::cert_provisioning::RegisterLocalStatePrefs(registry); ash::CellularESimProfileHandlerImpl::RegisterLocalStatePrefs(registry); ash::ManagedCellularPrefHandler::RegisterLocalStatePrefs(registry); + ash::ChromeSessionManager::RegisterPrefs(registry); ash::ChromeUserManagerImpl::RegisterPrefs(registry); crosapi::browser_util::RegisterLocalStatePrefs(registry); ash::CupsPrintersManager::RegisterLocalStatePrefs(registry); @@ -1685,10 +1731,13 @@ void RegisterLocalState(PrefRegistrySimple* registry) { registry->RegisterBooleanPref(prefs::kRendererAppContainerEnabled, true); registry->RegisterBooleanPref(prefs::kBlockBrowserLegacyExtensionPoints, true); + registry->RegisterBooleanPref(prefs::kApplicationBoundEncryptionEnabled, + true); registry->RegisterBooleanPref( policy::policy_prefs::kNativeWindowOcclusionEnabled, true); MediaFoundationServiceMonitor::RegisterPrefs(registry); os_crypt::RegisterLocalStatePrefs(registry); + os_crypt_async::AppBoundEncryptionProviderWin::RegisterLocalPrefs(registry); #if BUILDFLAG(GOOGLE_CHROME_BRANDING) IncompatibleApplicationsUpdater::RegisterLocalStatePrefs(registry); ModuleDatabase::RegisterLocalStatePrefs(registry); @@ -1726,6 +1775,10 @@ void RegisterLocalState(PrefRegistrySimple* registry) { registry->RegisterBooleanPref(prefs::kChromeForTestingAllowed, true); #endif +#if BUILDFLAG(IS_WIN) + registry->RegisterBooleanPref(prefs::kUiAutomationProviderEnabled, false); +#endif + // This is intentionally last. RegisterLocalStatePrefsForMigration(registry); } @@ -1813,7 +1866,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, SessionStartupPref::RegisterProfilePrefs(registry); SharingSyncPreference::RegisterProfilePrefs(registry); site_engagement::SiteEngagementService::RegisterProfilePrefs(registry); - storage::RegisterProfilePrefs(registry); + supervised_user::RegisterProfilePrefs(registry); sync_sessions::SessionSyncPrefs::RegisterProfilePrefs(registry); syncer::DeviceInfoPrefs::RegisterProfilePrefs(registry); syncer::SyncPrefs::RegisterProfilePrefs(registry); @@ -1867,10 +1920,6 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, ChromeRLZTrackerDelegate::RegisterProfilePrefs(registry); #endif -#if BUILDFLAG(ENABLE_SUPERVISED_USERS) - supervised_user::RegisterProfilePrefs(registry); -#endif - #if BUILDFLAG(ENABLE_FEED_V2) feed::prefs::RegisterFeedSharedProfilePrefs(registry); feed::RegisterProfilePrefs(registry); @@ -1889,6 +1938,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, query_tiles::RegisterPrefs(registry); readaloud::RegisterProfilePrefs(registry); RecentTabsPagePrefs::RegisterProfilePrefs(registry); + safety_hub_prefs::RegisterSafetyHubAndroidProfilePrefs(registry); usage_stats::UsageStatsBridge::RegisterProfilePrefs(registry); variations::VariationsService::RegisterProfilePrefs(registry); webapps::InstallPromptPrefs::RegisterProfilePrefs(registry); @@ -1935,6 +1985,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, toolbar::RegisterProfilePrefs(registry); UnifiedAutoplayConfig::RegisterProfilePrefs(registry); user_notes::RegisterProfilePrefs(registry); + tab_groups::SavedTabGroupUtils::RegisterProfilePrefs(registry); #if !BUILDFLAG(IS_CHROMEOS_LACROS) captions::LiveCaptionController::RegisterProfilePrefs(registry); @@ -2126,8 +2177,6 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, false); #endif - registry->RegisterTimePref(prefs::kDIPSTimerLastUpdate, base::Time()); - #if BUILDFLAG(ENABLE_SCREEN_AI_SERVICE) registry->RegisterBooleanPref(prefs::kAccessibilityPdfOcrAlwaysActive, true); #endif // BUILDFLAG(ENABLE_SCREEN_AI_SERVICE) @@ -2151,6 +2200,11 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, #if BUILDFLAG(ENABLE_COMPOSE) registry->RegisterBooleanPref(prefs::kPrefHasCompletedComposeFRE, false); + registry->RegisterBooleanPref(prefs::kEnableProactiveNudge, true); +#endif + +#if !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_FUCHSIA) + registry->RegisterIntegerPref(prefs::kChromeDataRegionSetting, 0); #endif } @@ -2301,6 +2355,8 @@ void MigrateObsoleteLocalStatePrefs(PrefService* local_state) { #if BUILDFLAG(IS_WIN) // Deprecated 02/2024. local_state->ClearPref(kOsCryptAppBoundFixedDataPrefName); + // Deprecated 03/2024. + local_state->ClearPref(kOsCryptAppBoundFixedData2PrefName); #endif #if BUILDFLAG(IS_CHROMEOS_ASH) @@ -2712,9 +2768,23 @@ void MigrateObsoleteProfilePrefs(PrefService* profile_prefs, // TODO(crbug.com/40282890): Remove ~one year after full launch. browser_sync::MaybeMigrateSyncingUserToSignedIn(profile_path, profile_prefs); + // Added 03/2024. + profile_prefs->ClearPref(kShowInternalAccessibilityTree); + + // Added 03/2024. + profile_prefs->ClearPref(kTrackingProtectionSentimentSurveyGroup); + profile_prefs->ClearPref(kTrackingProtectionSentimentSurveyStartTime); + profile_prefs->ClearPref(kTrackingProtectionSentimentSurveyEndTime); + + // Added 03/2024 + profile_prefs->ClearPref(kPreferencesMigratedToBasic); + // Added 04/2024. profile_prefs->ClearPref(kOmniboxInstantKeywordUsed); + // Added 04/2024. + profile_prefs->ClearPref(kDIPSTimerLastUpdate); + // 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 27236656..bfb35a47 100755 --- a/tools/under-control/src/chrome/browser/ui/tab_helpers.cc +++ b/tools/under-control/src/chrome/browser/ui/tab_helpers.cc @@ -36,6 +36,7 @@ #include "chrome/browser/history/history_tab_helper.h" #include "chrome/browser/history/top_sites_factory.h" #include "chrome/browser/history_clusters/history_clusters_tab_helper.h" +#include "chrome/browser/history_embeddings/history_embeddings_tab_helper.h" #include "chrome/browser/image_fetcher/image_fetcher_service_factory.h" #include "chrome/browser/login_detection/login_detection_tab_helper.h" #include "chrome/browser/lookalikes/safety_tip_web_contents_observer.h" @@ -76,6 +77,7 @@ #include "chrome/browser/storage_access_api/storage_access_api_service_impl.h" #include "chrome/browser/storage_access_api/storage_access_api_tab_helper.h" #include "chrome/browser/subresource_filter/chrome_content_subresource_filter_web_contents_helper_factory.h" +#include "chrome/browser/supervised_user/supervised_user_navigation_observer.h" #include "chrome/browser/sync/sessions/sync_sessions_router_tab_helper.h" #include "chrome/browser/sync/sessions/sync_sessions_web_contents_router_factory.h" #include "chrome/browser/tab_contents/navigation_metrics_recorder.h" @@ -117,6 +119,7 @@ #include "components/blocked_content/popup_blocker_tab_helper.h" #include "components/blocked_content/popup_opener_tab_helper.h" #include "components/breadcrumbs/core/breadcrumbs_status.h" +#include "components/browsing_topics/browsing_topics_redirect_observer.h" #include "components/captive_portal/core/buildflags.h" #include "components/client_hints/browser/client_hints_web_contents_observer.h" #include "components/commerce/content/browser/commerce_tab_helper.h" @@ -147,10 +150,9 @@ #include "components/safe_browsing/content/browser/safe_browsing_tab_observer.h" #include "components/safe_browsing/core/common/features.h" #include "components/search/ntp_features.h" -#include "components/search_engines/search_engine_choice_utils.h" +#include "components/search_engines/search_engine_choice/search_engine_choice_utils.h" #include "components/site_engagement/content/site_engagement_helper.h" #include "components/site_engagement/content/site_engagement_service.h" -#include "components/supervised_user/core/common/buildflags.h" #include "components/tracing/common/tracing_switches.h" #include "components/ukm/content/source_url_recorder.h" #include "components/user_notes/user_notes_features.h" @@ -227,6 +229,7 @@ #endif #if BUILDFLAG(IS_CHROMEOS) +#include "chrome/browser/chromeos/container_app/container_app_tab_helper.h" #include "chrome/browser/chromeos/cros_apps/cros_apps_tab_helper.h" #include "chrome/browser/chromeos/mahi/mahi_tab_helper.h" #include "chrome/browser/chromeos/policy/dlp/dlp_content_tab_helper.h" @@ -278,9 +281,6 @@ #include "chrome/browser/printing/printing_init.h" #endif -#if BUILDFLAG(ENABLE_SUPERVISED_USERS) -#include "chrome/browser/supervised_user/supervised_user_navigation_observer.h" -#endif #if !BUILDFLAG(IS_ANDROID) #include "chrome/browser/privacy_sandbox/tracking_protection_notice_service.h" @@ -368,6 +368,8 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) { if (breadcrumbs::IsEnabled(g_browser_process->local_state())) { BreadcrumbManagerTabHelper::CreateForWebContents(web_contents); } + browsing_topics::BrowsingTopicsRedirectObserver::MaybeCreateForWebContents( + web_contents); chrome::ChainedBackNavigationTracker::CreateForWebContents(web_contents); chrome_browser_net::NetErrorTabHelper::CreateForWebContents(web_contents); if (!autofill_client_provider.uses_platform_autofill()) { @@ -401,6 +403,7 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) { web_contents, TopSitesFactory::GetForProfile(profile).get()); HistoryTabHelper::CreateForWebContents(web_contents); HistoryClustersTabHelper::CreateForWebContents(web_contents); + HistoryEmbeddingsTabHelper::CreateForWebContents(web_contents); HttpsOnlyModeTabHelper::CreateForWebContents(web_contents); webapps::InstallableManager::CreateForWebContents(web_contents); login_detection::LoginDetectionTabHelper::MaybeCreateForWebContents( @@ -432,7 +435,7 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) { #if BUILDFLAG(IS_ANDROID) // If enabled, save sensitivity data for each non-incognito non-custom // android tab - // TODO(crbug.com/1466970): Consider moving check conditions or the + // TODO(crbug.com/40276584): Consider moving check conditions or the // registration logic to sensitivity_persisted_tab_data_android.* if (!profile->IsOffTheRecord()) { if (auto* tab = TabAndroid::FromWebContents(web_contents); @@ -512,6 +515,10 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) { StorageAccessAPITabHelper::CreateForWebContents( web_contents, StorageAccessAPIServiceFactory::GetForBrowserContext( web_contents->GetBrowserContext())); + // Do not create for Incognito mode. + if (!profile->IsOffTheRecord()) { + SupervisedUserNavigationObserver::CreateForWebContents(web_contents); + } HttpErrorTabHelper::CreateForWebContents(web_contents); sync_sessions::SyncSessionsRouterTabHelper::CreateForWebContents( web_contents, @@ -620,11 +627,11 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) { if (commerce::isContextualConsentEnabled()) { commerce_hint::CommerceHintTabHelper::CreateForWebContents(web_contents); } - auto* service = UnusedSitePermissionsServiceFactory::GetForProfile(profile); - if (service) { - UnusedSitePermissionsService::TabHelper::CreateForWebContents( - web_contents, service); - } + auto* service = UnusedSitePermissionsServiceFactory::GetForProfile(profile); + if (service) { + UnusedSitePermissionsService::TabHelper::CreateForWebContents(web_contents, + service); + } if (base::FeatureList::IsEnabled(ntp_features::kNtpHistoryClustersModule)) { side_panel::HistoryClustersTabHelper::CreateForWebContents(web_contents); } @@ -661,6 +668,7 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) { #endif #if BUILDFLAG(IS_CHROMEOS) + ContainerAppTabHelper::MaybeCreateForWebContents(web_contents); CrosAppsTabHelper::MaybeCreateForWebContents(web_contents); mahi::MahiTabHelper::MaybeCreateForWebContents(web_contents); policy::DlpContentTabHelper::MaybeCreateForWebContents(web_contents); @@ -702,7 +710,7 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) { } if (!profile->IsIncognitoProfile()) { - // TODO(1360846): Consider using the in-memory cache instead. + // TODO(crbug.com/40863325): Consider using the in-memory cache instead. commerce::CommerceUiTabHelper::CreateForWebContents( web_contents, commerce::ShoppingServiceFactory::GetForBrowserContext(profile), @@ -777,13 +785,6 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) { printing::InitializePrintingForWebContents(web_contents); #endif -#if BUILDFLAG(ENABLE_SUPERVISED_USERS) - // Do not create for Incognito mode. - if (!profile->IsOffTheRecord()) { - SupervisedUserNavigationObserver::CreateForWebContents(web_contents); - } -#endif - // --- Section 4: The warning --- // NONO NO NONONO ! 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 936ca83a..c5e44c94 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 @@ -119,6 +119,7 @@ namespace autofillPrivate { SINGLE_USERNAME_FORGOT_PASSWORD, ADDRESS_HOME_APT, ADDRESS_HOME_APT_TYPE, + ADDRESS_HOME_HOUSE_NUMBER_AND_APT, SINGLE_USERNAME_WITH_INTERMEDIATE_VALUES, MAX_VALID_FIELD_TYPE }; diff --git a/tools/under-control/src/chrome/common/extensions/api/document_scan.idl b/tools/under-control/src/chrome/common/extensions/api/document_scan.idl index 72b963cc..501cdc0a 100755 --- a/tools/under-control/src/chrome/common/extensions/api/document_scan.idl +++ b/tools/under-control/src/chrome/common/extensions/api/document_scan.idl @@ -3,7 +3,7 @@ // found in the LICENSE file. // Use the chrome.documentScan API to discover and retrieve -// images from attached paper document scanners. +// images from attached document scanners. [platforms=("chromeos", "lacros"), implemented_in="chrome/browser/extensions/api/document_scan/document_scan_api.h"] namespace documentScan { @@ -11,28 +11,25 @@ namespace documentScan { // The MIME types that are accepted by the caller. DOMString[]? mimeTypes; - // The number of scanned images allowed (defaults to 1). + // The number of scanned images allowed. The default is 1. long? maxImages; }; dictionary ScanResults { - // The data image URLs in a form that can be passed as the "src" value to - // an image tag. + // An array of data image URLs in a form that can be passed as the "src" + // value to an image tag. DOMString[] dataUrls; - // The MIME type of dataUrls. + // The MIME type of the dataUrls. DOMString mimeType; }; - // OperationResult is an enum that indicates the result of each operation - // performed by the backend. It contains the same causes as SANE_Status plus - // additional statuses that come from the IPC layers and image conversion - // stages. - [nodoc] enum OperationResult { + // An enum that indicates the result of each operation. + enum OperationResult { // An unknown or generic failure occurred. UNKNOWN, - // Operation succeeded. + // The operation succeeded. SUCCESS, // The operation is not supported. @@ -44,10 +41,10 @@ namespace documentScan { // The device is busy. DEVICE_BUSY, - // Data or argument is invalid. + // Either the data or an argument passed to the method is not valid. INVALID, - // Value is the wrong type for the underlying option. + // The supplied value is the wrong data type for the underlying option. WRONG_TYPE, // No more data is available. @@ -68,152 +65,163 @@ namespace documentScan { // The device requires authentication. ACCESS_DENIED, - // Not enough memory was available to complete the operation. + // Not enough memory is available on the Chromebook to complete the + // operation. NO_MEMORY, - // The device was not reachable. + // The device is not reachable. UNREACHABLE, - // The device was disconnected. + // The device is disconnected. MISSING, - // An internal error occurred. + // An error has occurred somewhere other than the calling application. INTERNAL_ERROR }; - // How the scanner is connected to the computer. - [nodoc] enum ConnectionType { + // Indicates how the scanner is connected to the computer. + enum ConnectionType { UNSPECIFIED, USB, NETWORK }; - // ScannerInfo contains general information about a scanner device. It is - // intended for filtering and constructing user-facing information, not for - // configuring a scan. - [nodoc] dictionary ScannerInfo { - // For connecting with openScanner. + // Contains general information about a scanner. It is + // intended for filtering and constructing user-facing information. to + // configure a scan, use $(ref:StartScanOptions). + dictionary ScannerInfo { + // The ID of a specific scanner. DOMString scannerId; - // Printable name for displaying in the UI. + // A human-readable name for the scanner to display in the UI. DOMString name; - // Scanner manufacturer. + // The scanner manufacturer. DOMString manufacturer; - // Scanner model if available, or a generic description. + // The scanner model if it is available, or a generic description. DOMString model; // For matching against other ScannerInfo entries that point // to the same physical device. DOMString deviceUuid; - // How the scanner is connected to the computer. + // Indicates how the scanner is connected to the computer. ConnectionType connectionType; // If true, the scanner connection's transport cannot be intercepted by a // passive listener, such as TLS or USB. boolean secure; - // MIME types that can be requested for returned scans. + // An array of MIME types that can be requested for returned scans. DOMString[] imageFormats; - // A general human-readable description of the protocol/backend used to - // access the scanner, such as Mopria, WSD, or epsonds. This is primarily + // A human-readable description of the protocol or driver used to + // access the scanner, such as Mopria, WSD, or epsonds. This is primarily // useful for allowing a user to choose between protocols if a device // supports multiple protocols. DOMString protocolType; }; - // The type of an option. This is the same set of types as SANE_Value_Type. - [nodoc] enum OptionType { - // Unknown option type. value will be unset. + // The data type of an option. + enum OptionType { + // The option's data type is unknown. The value property + // will be unset. UNKNOWN, - // true/false only. value will be a boolean. + // The value property will be one of truefalse. BOOL, - // Signed 32-bit integer. value will be long or long[], - // depending on whether the option takes more than one value. + // A signed 32-bit integer. The value property will be long or + // long[], depending on whether the option takes more than one value. INT, - // Double in the range -32768-32767.9999 with a resolution of 1/65535. - // value will be double or double[] depending on whether the - // option takes more than one value. + // A double in the range -32768-32767.9999 with a resolution of 1/65535. + // The value property will be double or double[] depending + // on whether the option takes more than one value. Double values that + // can't be exactly represented will be rounded to the available range + // and precision. FIXED, - // A sequence of any bytes except NUL ('\0'). value will be a - // DOMString. + // A sequence of any bytes except NUL ('\0'). The value + // property will be a DOMString. STRING, - // Hardware button or toggle. No value. + // An option of this type has no value. Instead, setting an option of + // this type causes an option-specific side effect in the scanner + // driver. For example, a button-typed option could be used by a + // scanner driver to provide a means to select default values or to + // tell an automatic document feeder to advance to the next sheet of + // paper. BUTTON, - // Grouping option. No value. This is included for compatibility, but - // will not normally be returned in ScannerOption values. Use + // Grouping option. No value. This is included for compatibility, but + // will not normally be returned in ScannerOption values. Use // getOptionGroups() to retrieve the list of groups with their // member options. GROUP }; - // The unit of measurement for an option. This is the same set of units as - // SANE_Unit. - [nodoc] enum OptionUnit { - // Value is a unitless number, e.g. threshold. + // Indicates the data type for $(ref:ScannerOption.unit). + enum OptionUnit { + // The value is a unitless number. For example, it can be a threshold. UNITLESS, - // Value is a number of pixels, e.g., scan dimensions. + // The value is a number of pixels, for example, scan dimensions. PIXEL, - // Value is the number of bits, e.g., color depth. + // The value is the number of bits, for example, color depth. BIT, - // Value is measured in millimeters, e.g., scan dimensions. + // The value is measured in millimeters, for example, scan dimensions. MM, - // Value is measured in dots per inch, e.g., resolution. + // The value is measured in dots per inch, for example, resolution. DPI, - // Value is a percent, e.g., brightness. + // The value is a percent, for example, brightness. PERCENT, - // Value is measured in microseconds, e.g., exposure time. + // The value is measured in microseconds, for example, exposure time. MICROSECOND }; - // The type of constraint represented by an OptionConstraint. - [nodoc] enum ConstraintType { - // Constraint represents a range of OptionType.INT values. - // min, max, and quant will be - // long, and list will be unset. + // The data type of constraint represented by an $(ref:OptionConstraint). + enum ConstraintType { + // The constraint on a range of OptionType.INT values. + // The min, max, and quant properties + // of OptionConstraint will be long, and its + // list propety will be unset. INT_RANGE, - // Constraint represents a range of OptionType.FIXED values. - // min, max, and quant will be - // double, and list will be unset. + // The constraint on a range of OptionType.FIXED values. + // The min, max, and quant properties + // of OptionConstraint will be double, and its + // list property will be unset. FIXED_RANGE, - // Constraint represents a specific list of OptionType.INT - // values. list will contain long values, and - // the other fields will be unset. + // The constraint on a specific list of OptionType.INT + // values. The OptionConstraint.list property will contain + // long values, and the other properties will be unset. INT_LIST, - // Constraint represents a specific list of OptionType.FIXED - // values. list will contain double values, and - // the other fields will be unset. + // The constraint on a specific list of OptionType.FIXED + // values. The OptionConstraint.list property will contain + // double values, and the other properties will be unset. FIXED_LIST, - // Constraint represents a specific list of OptionType.STRING - // values. list will contain DOMString values, - // and the other fields will be unset. + // The constraint on a specific list of OptionType.STRING + // values. The OptionConstraint.list property will contain + // DOMString values, and the other properties will be unset. STRING_LIST }; - // OptionConstraint represents the same set of value constraints - // as SANE_Constraint_Type, with the exception that an unconstrained value is - // represented by a lack of constraint rather than a special - // SANE_CONSTRAINT_NONE value. - [nodoc] dictionary OptionConstraint { + // The specific values for the $(ref:ConstraintType) structure. + // An unconstrained value is represented by a lack of constraints; + // there is no separate ConstraintType value to indicate an + // unconstrained value. + dictionary OptionConstraint { ConstraintType type; (long or double)? min; (long or double)? max; @@ -222,70 +230,72 @@ namespace documentScan { }; // How an option can be changed. - [nodoc] enum Configurability { - // Option is read-only and cannot be changed. + enum Configurability { + // The option is read-only. NOT_CONFIGURABLE, - // Option can be set in software. + // The option can be set in software. SOFTWARE_CONFIGURABLE, - // Option can be set by the user toggling/pushing a hardware button. + // The option can be set by the user toggling or pushing a button on + // the scanner. HARDWARE_CONFIGURABLE }; - // A self-describing configurable scanner option and current value, in the - // same style as SANE's SANE_Option_Descriptor and sane_control_option(). - [nodoc] dictionary ScannerOption { - // Option name using lowercase a-z, numbers, and dashes. + // A self-describing configurable scanner option and its current value. + dictionary ScannerOption { + // The option name using lowercase ASCII letters, numbers, and dashes. + // Diacritics are not allowed. DOMString name; - // Printable one-line title. + // A printable one-line title. DOMString title; - // Longer description of the option. + // A longer description of the option. DOMString description; - // The type that value will contain and that is needed for - // setting this option. + // The data type contained in the value property, which + // is needed for setting this option. OptionType type; - // Unit of measurement for this option. + // The unit of measurement for this option. OptionUnit unit; - // Current value of the option if relevant. Note the type passed here must - // match the type specified in type. + // The current value of the option, if relevant. Note that the data + // type of this property must match the data type specified in + // type. (boolean or double or double[] or long or long[] or DOMString)? value; - // Constraint on possible values. + // Defines $(ref:OptionConstraint) on the current scanner option. OptionConstraint? constraint; - // Can be detected from software. + // Indicates that this option can be detected from software. boolean isDetectable; - // Whether/how the option can be changed. + // Indicates whether and how the option can be changed. Configurability configurability; - // Can be automatically set by the backend. + // Can be automatically set by the scanner driver. boolean isAutoSettable; - // Emulated by the backend if true. + // Emulated by the scanner driver if true. boolean isEmulated; - // Option is active and can be set/retrieved. If false, the - // value field will not be set. + // Indicates the option is active and can be set or retrieved. If false, + // the value property will not be set. boolean isActive; - // UI should not display this option by default. + // Indicates that the UI should not display this option by default. boolean isAdvanced; - // Option is used for internal configuration and should never be displayed - // in the UI. + // Indicates that the option is used for internal configuration and + // should never be displayed in the UI. boolean isInternal; }; - // A set of criteria passed to getScannerList(). Only devices + // A set of criteria passed to getScannerList(). Only devices // that match all of the criteria will be returned. - [nodoc] dictionary DeviceFilter { + dictionary DeviceFilter { // Only return scanners that are directly attached to the computer. boolean? local; @@ -293,309 +303,352 @@ namespace documentScan { boolean? secure; }; - // OptionGroup is a group containing a list of option names. The groups and - // their contents are determined by the backend and do not have any defined - // semantics or consistent membership. This structure is primarily intended - // for UI layout assistance; it does not affect the individual option + // Contains a list of option names. The groups and their contents are + // determined by the scanner driver and do not have any defined semantics + // or consistent membership. This structure is primarily intended + // for UI layout assistance; it does not affect individual option // behaviors. - [nodoc] dictionary OptionGroup { - // Printable title, e.g. "Geometry options". + dictionary OptionGroup { + // Provides a printable title, for example "Geometry options". DOMString title; - // Names of contained options, in backend-provided order. + // An array of option names in driver-provided order. DOMString[] members; }; - // The response from getScannerList(). - [nodoc] dictionary GetScannerListResponse { - // The backend's enumeration result. Note that partial results could be + // The response from $(ref:getScannerList). + dictionary GetScannerListResponse { + // The enumeration result. Note that partial results could be // returned even if this indicates an error. OperationResult result; // A possibly-empty list of scanners that match the provided - // DeviceFilter. + // $(ref:DeviceFilter). ScannerInfo[] scanners; }; - // The response from openScanner(). - [nodoc] dictionary OpenScannerResponse { - // Same scanner ID passed to openScanner(). + // The response from $(ref:openScanner). + dictionary OpenScannerResponse { + // The scanner ID passed to openScanner(). DOMString scannerId; - // Backend result of opening the scanner. + // The result of opening the scanner. If the value of this is + // SUCCESS, the scannerHandle and + // options properties will be populated. OperationResult result; - // If result is OperationResult.SUCCESS, a handle - // to the scanner that can be used for further operations. + // If result is SUCCESS, a + // handle to the scanner that can be used for further operations. DOMString? scannerHandle; - // If result is OperationResult.SUCCESS, a - // key-value mapping from option names to ScannerOption. + // If result is SUCCESS, + // provides a key-value mapping where the key is a device-specific + // option and the value is an instance of $(ref:ScannerOption). object? options; }; - // The response from getOptionGroups(). - [nodoc] dictionary GetOptionGroupsResponse { - // Same scanner handle passed to getOptionGroups(). + // The response from $(ref:getOptionGroups). + dictionary GetOptionGroupsResponse { + // The same scanner handle as was passed to $(ref:getOptionGroups). DOMString scannerHandle; - // The backend's result of getting the option groups. + // The result of getting the option groups. If the value of this is + // SUCCESS, the groups property will be + // populated. OperationResult result; - // If result is OperationResult.SUCCESS, a list of - // option groups in the order supplied by the backend. + // If result is SUCCESS, provides a + // list of option groups in the order supplied by the scanner driver. OptionGroup[]? groups; }; // The response from closeScanner(). - [nodoc] dictionary CloseScannerResponse { - // Same scanner handle passed to closeScanner(). + dictionary CloseScannerResponse { + // The same scanner handle as was passed to $(ref:closeScanner). DOMString scannerHandle; - // Backend result of closing the scanner. Even if this value is not - // OperationResult.SUCCESS, the handle will be invalid and + // The result of closing the scanner. Even if this value is not + // SUCCESS, the handle will be invalid and // should not be used for any further operations. OperationResult result; }; - // A subset of ScannerOption that contains enough information to - // set an option to a new value. - [nodoc] dictionary OptionSetting { - // Name of the option to set. + // Passed to $(ref:setOptions) to set an option to $(ref:ScannerOption) to + // a new value. + dictionary OptionSetting { + // Indicates the name of the option to set. DOMString name; - // Type of the option. The requested type must match the real type of the - // underlying option. + // Indicates the data type of the option. The requested data type must + // match the real data type of the underlying option. OptionType type; - // Value to set. Leave unset to request automatic setting for options that - // have autoSettable enabled. The type supplied for - // value must match type. + // Indicates the value to set. Leave unset to request automatic setting for + // options that have autoSettable enabled. The data type + // supplied for value must match type. (boolean or double or double[] or long or long[] or DOMString)? value; }; // The result of setting an individual option. Each individual option - // supplied to setOptions() produces a separate result on the - // backend due to things like rounding and constraints. - [nodoc] dictionary SetOptionResult { - // Name of the option that was set. + // supplied to setOptions() produces a separate result + // due to things like rounding and constraints. + dictionary SetOptionResult { + // Indicates the name of the option that was set. DOMString name; - // Backend result of setting the option. + // Indicates the result of setting the option. OperationResult result; }; - // The response from a call to setOptions(). - [nodoc] dictionary SetOptionsResponse { - // The same scanner handle passed to setOptions(). + // The response from a call to $(ref:setOptions). + dictionary SetOptionsResponse { + // Provides the scanner handle passed to setOptions(). DOMString scannerHandle; - // One result per passed-in OptionSetting. + // An array of results, one each for every passed-in + // OptionSetting. SetOptionResult[] results; - // Updated key-value mapping from option names to - // ScannerOption containing the new configuration after - // attempting to set all supplied options. This has the same structure as - // the options field in OpenScannerResponse. + // An updated key-value mapping from option names to + // $(ref:ScannerOption) values containing the new configuration after + // attempting to set all supplied options. This has the same structure as + // the options property in $(ref:OpenScannerResponse). // - // This field will be set even if some options were not set successfully, - // but will be unset if retrieving the updated configuration fails (e.g., - // if the scanner is disconnected in the middle). + // This property will be set even if some options were not set successfully, + // but will be unset if retrieving the updated configuration fails (for + // example, if the scanner is disconnected in the middle of scanning). object? options; }; - // Used to specify options for startScan(). - [nodoc] dictionary StartScanOptions { - // MIME type to return scanned data in. + // Specifies options for $(ref:startScan). + dictionary StartScanOptions { + // Specifies the MIME type to return scanned data in. DOMString format; + + // If a non-zero value is specified, limits the maximum scanned bytes + // returned in a single $(ref:readScanData) response to that value. The + // smallest allowed value is 32768 (32 KB). If this property is not + // specified, the size of a returned chunk may be as large as the entire + // scanned image. + long? maxReadSize; }; // The response from startScan(). - [nodoc] dictionary StartScanResponse { - // The same scanner handle that was passed to startScan(). + dictionary StartScanResponse { + // Provides the same scanner handle that was passed to + // startScan(). DOMString scannerHandle; - // The backend's start scan result. + // The result of starting a scan. If the value of this is + // SUCCESS, the job property will be populated. OperationResult result; - // If result is OperationResult.SUCCESS, a handle - // that can be used to read scan data or cancel the job. + // If result is SUCCESS, provides a + // handle that can be used to read scan data or cancel the job. DOMString? job; }; // The response from cancelScan(). - [nodoc] dictionary CancelScanResponse { - // The same job handle that was passed to cancelScan(). + dictionary CancelScanResponse { + // Provides the same job handle that was passed to + // cancelScan(). DOMString job; - // The backend's cancel scan result. + // The backend's cancel scan result. If the result is + // OperationResult.SUCCESS or + // OperationResult.CANCELLED, the scan has been cancelled and + // the scanner is ready to start a new scan. If the result is + // OperationResult.DEVICE_BUSY , the scanner is still + // processing the requested cancellation; the caller should wait a short + // time and try the request again. Other result values indicate a permanent + // error that should not be retried. OperationResult result; }; - // The response from readScanData(). - [nodoc] dictionary ReadScanDataResponse { - // Same job handle passed to readScanData(). + // The response from $(ref:readScanData). + dictionary ReadScanDataResponse { + // Provides the job handle passed to readScanData(). DOMString job; - // The backend result of reading data. If this is - // OperationResult.SUCCESS, data will contain the - // next (possibly zero-length) chunk of image data that was ready for - // reading. If this is OperationResult.EOF, data - // will contain the final chunk of image data. + // The result of reading data. If its value is + // SUCCESS, then data contains the + // next (possibly zero-length) chunk of image data that is ready + // for reading. If its value is EOF, the data + // contains the last chunk of image data. OperationResult result; - // If result is OperationResult.SUCCESS, the next chunk of + // If result is SUCCESS, contains + // the next chunk of scanned image data. If result is + // EOF, contains the last chunk of // scanned image data. ArrayBuffer? data; - // If result is OperationResult.SUCCESS, an estimate of how - // much of the total scan data has been delivered so far, in the range - // 0-100. + // If result is SUCCESS, an estimate of + // how much of the total scan data has been delivered so far, in the range + // 0 to 100. long? estimatedCompletion; }; - // Callback from the scan method. - // |result| The results from the scan, if successful. - // Otherwise will return null and set runtime.lastError. + // Callback from the $(ref:scan) method. + // |result| Provides the results from the scan, if successful. + // Otherwise, this value will be null and $(ref:runtime.lastError) + // will be set. callback ScanCallback = void (ScanResults result); - // Callback from the getScannerList method. + // Callback from the $(ref:getScannerList) method. // |response| The response from enumeration, if the call was valid. - // Otherwise will return null and set runtime.lastError. - [nodoc] callback GetScannerListCallback = void (GetScannerListResponse response); + // Otherwise, this value will be null and $(ref:runtime.lastError) + // will be set. + callback GetScannerListCallback = void (GetScannerListResponse response); - // Callback from the openScanner method. + // Callback from the $(ref:openScanner) method. // |response| The response from opening the scanner, if the call was valid. - // Otherwise will return null and set runtime.lastError. - [nodoc] callback OpenScannerCallback = void (OpenScannerResponse response); + // Otherwise, this value will be null and $(ref:runtime.lastError) + // will be set. + callback OpenScannerCallback = void (OpenScannerResponse response); - // Callback from the getOptionGroups method. + // Callback from the $(ref:getOptionGroups) method. // |response| The response from getting the option groups, if the call was - // valid. Otherwise will return null and set runtime.lastError. - [nodoc] callback GetOptionGroupsCallback = + // valid. Otherwise, this value will be null and $(ref:runtime.lastError) + // will be set. + callback GetOptionGroupsCallback = void (GetOptionGroupsResponse response); - // Callback from the closeScanner method. + // Callback from the $(ref:closeScanner) method. // |response| The response from closing the scanner, if the call was valid. - // Otherwise will return null and set runtime.lastError. - [nodoc] callback CloseScannerCallback = void (CloseScannerResponse response); + // Otherwise, this value will be null and $(ref:runtime.lastError) + // will be set. + callback CloseScannerCallback = void (CloseScannerResponse response); - // Callback from the setOptions method. + // Callback from the $(ref:setOptions) method. // |response| The response from setting the options, if the call was valid. - // Otherwise will return null and set runtime.lastError. - [nodoc] callback SetOptionsCallback = void (SetOptionsResponse response); + // Otherwise, this value will be null and $(ref:runtime.lastError) + // will be set. + callback SetOptionsCallback = void (SetOptionsResponse response); - // Callback from the startScan method. + // Callback from the $(ref:startScan) method. // |response| The response from starting the scan, if the call was valid. - // Otherwise will return null and set runtime.lastError. - [nodoc] callback StartScanCallback = void (StartScanResponse response); + // Otherwise, this value will be null and $(ref:runtime.lastError) + // will be set. + callback StartScanCallback = void (StartScanResponse response); - // Callback from the cancelScan method. + // Callback from the $(ref:cancelScan) method. // |response| The response from canceling the scan, if the call was valid. - // Otherwise will return null and set runtime.lastError. - [nodoc] callback CancelScanCallback = void (CancelScanResponse response); + // Otherwise, this value will be null and $(ref:runtime.lastError) + // will be set. + callback CancelScanCallback = void (CancelScanResponse response); - // Callback from the readScanData method. + // Callback from the $(ref:readScanData) method. // |response| The response from reading the next chunk of scanned image data, - // if the call was valid. Otherwise will return null and set - // runtime.lastError. - [nodoc] callback ReadScanDataCallback = void (ReadScanDataResponse response); + // if the call was valid. Otherwise, this value will be null and + // $(ref:runtime.lastError) will be set. + callback ReadScanDataCallback = void (ReadScanDataResponse response); interface Functions { - // Performs a document scan. On success, the PNG data will be - // sent to the callback. - // |options| : Object containing scan parameters. + // Performs a document scan and returns a Promise that resolves + // with a $(ref:ScanResults) object. If a callback is passed to + // this function, the returned data is passed to it instead. + // |options| : An object containing scan parameters. // |callback| : Called with the result and data from the scan. static void scan( ScanOptions options, ScanCallback callback); - // Gets the list of available scanners. On success, the list will be - // sent to the callback. - // |filter| : DeviceFilter indicating which types of scanners + // Gets the list of available scanners and returns a Promise that + // resolves with a $(ref:GetScannerListResponse) object. If a callback + // is passed to this function, returned data is passed to it instead. + // |filter| : A $(ref:DeviceFilter) indicating which types of scanners // should be returned. // |callback| : Called with the result and list of scanners. - [nodoc] static void getScannerList( + static void getScannerList( DeviceFilter filter, GetScannerListCallback callback); - // Opens a scanner for exclusive access. On success, the response containing - // a scanner handle and configuration will be sent to the callback. - // |scannerId| : Scanner id previously returned from getScannerList - // indicating which scanner should be opened. + // Opens a scanner for exclusive access and returns a Promise that + // resolves with an $(ref:OpenScannerResponse) object. If a callback + // is passed to this function, returned data is passed to it instead. + // |scannerId| : The ID of a scanner to be opened. This value is one + // returned from a previous call to $(ref:getScannerList). // |callback| : Called with the result. - [nodoc] static void openScanner( + static void openScanner( DOMString scannerId, OpenScannerCallback callback); - // Gets the group names and member options from a scanner handle previously - // opened by openScanner. - // |scannerHandle| : Open scanner handle previously returned from - // openScanner. + // Gets the group names and member options from a scanner previously + // opened by $(ref:openScanner). This method returns a Promise that + // resolves with a $(ref:GetOptionGroupsResponse) object. If a callback + // is passed to this function, returned data is passed to it instead. + // |scannerHandle| : The handle of an open scanner returned from a call + // to $(ref:openScanner). // |callback| : Called with the result. - [nodoc] static void getOptionGroups( + static void getOptionGroups( DOMString scannerHandle, GetOptionGroupsCallback callback); - // Closes a previously opened scanner handle. A response indicating the - // outcome will be sent to the callback. Even if the response is not a - // success, the supplied handle will become invalid and should not be used - // for further operations. - // |scannerHandle| : Open scanner handle previously returned from - // openScanner. + // Closes the scanner with the passed in handle and returns a Promise + // that resolves with a $(ref:CloseScannerResponse) object. If a callback + // is used, the object is passed to it instead. Even if the response is + // not a success, the supplied handle becomes invalid and should not be + // used for further operations. + // |scannerHandle| : Specifies the handle of an open scanner that was + // previously returned from a call to $(ref:openScanner). // |callback| : Called with the result. - [nodoc] static void closeScanner( + static void closeScanner( DOMString scannerHandle, CloseScannerCallback callback); - // Sends the list of new option values in options as a bundle - // to be set on scannerHandle. Each option will be set by the - // backend the order specified. Returns a backend response indicating the - // result of each option setting and a new set of final option values after - // all options have been updated. - // |scannerHandle| : Open scanner handle previously returned from - // openScanner. - // |options| : A list of OptionSettings that will be applied to - // scannerHandle. + // Sets options on the specified scanner and returns a Promise that + // resolves with a $(ref:SetOptionsResponse) object containing the + // result of trying to set every value in the order of the passed-in + // $(ref:OptionSetting) object. If a callback is used, the object is + // passed to it instead. + // |scannerHandle| : The handle of the scanner to set options on. This + // should be a value previously returned from a call to $(ref:openScanner). + // |options| : A list of OptionSetting objects to be applied to + // the scanner. // |callback| : Called with the result. - [nodoc] static void setOptions( + static void setOptions( DOMString scannerHandle, OptionSetting[] options, SetOptionsCallback callback); - // Starts a scan using a previously opened scanner handle. A response - // indicating the outcome will be sent to the callback. If successful, the - // response will include a job handle that can be used in subsequent calls + // Starts a scan on the specified scanner and returns a Promise that + // resolves with a $(ref:StartScanResponse). If a callback is used, + // the object is passed to it instead. If the call was successful, the + // response includes a job handle that can be used in subsequent calls // to read scan data or cancel a scan. - // |scannerHandle| : Open scanner handle previously returned from - // openScanner. - // |options| : StartScanOptions indicating what options are to - // be used for the scan. StartScanOptions.format must match - // one of the entries returned in the scanner's ScannerInfo. + // |scannerHandle| : The handle of an open scanner. This should be a value + // previously returned from a call to $(ref:openScanner). + // |options| : A $(ref:StartScanOptions) object indicating the options to + // be used for the scan. The StartScanOptions.format property + // must match one of the entries returned in the scanner's + // ScannerInfo. // |callback| : Called with the result. - [nodoc] static void startScan( + static void startScan( DOMString scannerHandle, StartScanOptions options, StartScanCallback callback); - // Cancels a scan that was previously started using startScan. - // The response is sent to the callback. - // |job| : An active scan job previously returned from - // startScan. + // Cancels a started scan and returns a Promise that resolves with a + // $(ref:CancelScanResponse) object. If a callback is used, the object + // is passed to it instead. + // |job| : The handle of an active scan job previously returned from a + // call to $(ref:startScan). // |callback| : Called with the result. - [nodoc] static void cancelScan( + static void cancelScan( DOMString job, CancelScanCallback callback); - // Reads the next chunk of available image data from an active job handle. - // A response indicating the outcome will be sent to the callback. + // Reads the next chunk of available image data from an active job handle, + // and returns a Promise that resolves with a $(ref:ReadScanDataResponse) + // object. If a callback is used, the object is passed to it instead. // - // It is valid for a response to have result - // OperationResult.SUCCESS with a zero-length - // data member. This means the scanner is still working but - // does not yet have additional data ready. The caller should wait a short - // time and try again. + // // - // When the scan job completes, the response will have the result - // OperationResult.EOF. This response may contain a final - // non-zero data member. // |job| : Active job handle previously returned from - // startScan. + // $(ref:startScan). // |callback| : Called with the result. - [nodoc] static void readScanData( + static void readScanData( DOMString job, ReadScanDataCallback callback); }; }; diff --git a/tools/under-control/src/chrome/common/extensions/api/downloads.idl b/tools/under-control/src/chrome/common/extensions/api/downloads.idl index 005057bd..e710b480 100755 --- a/tools/under-control/src/chrome/common/extensions/api/downloads.idl +++ b/tools/under-control/src/chrome/common/extensions/api/downloads.idl @@ -137,7 +137,6 @@ namespace downloads { blockedTooLarge, sensitiveContentWarning, sensitiveContentBlock, - unsupportedFileType, deepScannedFailed, deepScannedSafe, deepScannedOpenedDangerous, diff --git a/tools/under-control/src/chrome/common/extensions/api/enterprise_kiosk_input.idl b/tools/under-control/src/chrome/common/extensions/api/enterprise_kiosk_input.idl index 234ed57f..de3ec93d 100755 --- a/tools/under-control/src/chrome/common/extensions/api/enterprise_kiosk_input.idl +++ b/tools/under-control/src/chrome/common/extensions/api/enterprise_kiosk_input.idl @@ -4,8 +4,8 @@ // Use the chrome.enterprise.kioskInput API to change input // settings for Kiosk sessions. -// Note: This API is only available extensions and Chrome apps installed -// by enterprise policy in ChromeOS Kiosk sessions. +// Note: This API is only available to extensions installed by enterprise +// policy in ChromeOS Kiosk sessions. [platforms = ("chromeos"), implemented_in = "chrome/browser/extensions/api/enterprise_kiosk_input/enterprise_kiosk_input_api.h"] namespace enterprise.kioskInput { diff --git a/tools/under-control/src/chrome/common/extensions/api/file_manager_private.idl b/tools/under-control/src/chrome/common/extensions/api/file_manager_private.idl index 828d8ad3..3ca503e1 100755 --- a/tools/under-control/src/chrome/common/extensions/api/file_manager_private.idl +++ b/tools/under-control/src/chrome/common/extensions/api/file_manager_private.idl @@ -416,6 +416,17 @@ enum BulkPinStage { cannot_enable_docs_offline }; +// The default location/volume that the user should use. +// It's usually MyFiles. When SkyVault is enabled the admin might +// choose between Google Drive and OneDrive. +// NOTE: This is independent of the Downloads folder which is mostly used +// in the browser (lacros or ash). +enum DefaultLocation { + my_files, + google_drive, + onedrive +}; + // These three fields together uniquely identify a task. dictionary FileTaskDescriptor { DOMString appId; @@ -853,6 +864,7 @@ dictionary Preferences { boolean driveFsBulkPinningAvailable; boolean driveFsBulkPinningEnabled; boolean localUserFilesAllowed; + DefaultLocation defaultLocation; }; dictionary PreferencesChange { @@ -1335,6 +1347,39 @@ dictionary BulkPinProgress { boolean emptiedQueue; }; +// Represents a custom view of files to be displayed. +dictionary MaterializedView { + // Unique indentifier for the view. + long viewId; + + // Name of the view displayed to the user. + DOMString name; +}; + +// Used by EntryData to store the file system of the entry. +dictionary FileSystemData { + // Name of the file system. Will be unique. + DOMString name; + + // File system URL of the root entry of the file system. + DOMString rootUrl; +}; + +// Representation of an entry as a replacement for File/Directory Entries. +dictionary EntryData { + // File system URL of the entry. + DOMString entryUrl; + + // If false, the entry is a file. + boolean isDirectory; + + // Localized name of the entry for display. + DOMString name; + + // Information about the filesystem the entry is located in. + FileSystemData filesystem; +}; + // Callback that does not take arguments. callback SimpleCallback = void(); @@ -1482,6 +1527,10 @@ callback ParseTrashInfoFilesCallback = void(ParsedTrashInfoFile[] files); callback GetBulkPinProgressCallback = void(BulkPinProgress progress); +callback GetMaterializedViewsCallback = void(MaterializedView[] views); + +callback ReadMaterializedViewCallback = void(EntryData[] files); + interface Functions { // Cancels file selection. static void cancelDialog(); @@ -2026,6 +2075,13 @@ interface Functions { // drive. [doesNotSupportPromises] static void calculateBulkPinRequiredSpace(SimpleCallback callback); + + // Returns a list of views that can be displayed to the user. + static void getMaterializedViews(GetMaterializedViewsCallback callback); + + // Returns the list of entries contained in the view identified by `viewId`. + static void readMaterializedView(long viewId, + ReadMaterializedViewCallback callback); }; // Events supported by fileManagerPrivate API. These events are broadcasted. diff --git a/tools/under-control/src/chrome/common/extensions/api/file_system_provider.idl b/tools/under-control/src/chrome/common/extensions/api/file_system_provider.idl index 5374be86..dc6c3ddd 100755 --- a/tools/under-control/src/chrome/common/extensions/api/file_system_provider.idl +++ b/tools/under-control/src/chrome/common/extensions/api/file_system_provider.idl @@ -61,6 +61,12 @@ namespace fileSystemProvider { DOMString id; }; + // Information relating to files that are served by a cloud file system. + dictionary CloudFileInfo { + // A tag that represents the version of the file. + DOMString? versionTag; + }; + // Represents metadata of a file or a directory. dictionary EntryMetadata { // True if it is a directory. Must be provided if requested in @@ -93,6 +99,11 @@ namespace fileSystemProvider { // local files not backed by cloud storage, it should be undefined when // requested. CloudIdentifier? cloudIdentifier; + + // Information that identifies a specific file in the underlying cloud file + // system. Must be provided if requested in options and the + // file is backed by cloud storage. + CloudFileInfo? cloudFileInfo; }; // Represents a watcher. @@ -221,6 +232,10 @@ namespace fileSystemProvider { // Set to true if cloudIdentifier value is // requested. boolean cloudIdentifier; + + // Set to true if cloudFileInfo value is + // requested. + boolean cloudFileInfo; }; // Options for the $(ref:onGetActionsRequested) event. @@ -493,6 +508,9 @@ namespace fileSystemProvider { // The type of the change which happened to the entry. ChangeType changeType; + + // Information relating to the file if backed by a cloud file system. + CloudFileInfo? cloudFileInfo; }; // Options for the $(ref:notify) method. @@ -564,6 +582,10 @@ namespace fileSystemProvider { [nocompile] callback FileDataCallback = void( ArrayBuffer data, boolean hasMore); + // Success callback for the $(ref:onOpenFileRequested) event. + [nocompile] callback OpenFileSuccessCallback = void( + optional EntryMetadata metadata); + // A generic result callback to indicate success or failure. callback ResultCallback = void(); @@ -683,7 +705,7 @@ namespace fileSystemProvider { // files opened at once can be specified with MountOptions. [maxListeners=1] static void onOpenFileRequested( OpenFileRequestedOptions options, - ProviderSuccessCallback successCallback, + OpenFileSuccessCallback successCallback, ProviderErrorCallback errorCallback); // Raised when opening a file previously opened with diff --git a/tools/under-control/src/chrome/common/extensions/api/file_system_provider_internal.idl b/tools/under-control/src/chrome/common/extensions/api/file_system_provider_internal.idl index 1390d1b2..ce8384e4 100755 --- a/tools/under-control/src/chrome/common/extensions/api/file_system_provider_internal.idl +++ b/tools/under-control/src/chrome/common/extensions/api/file_system_provider_internal.idl @@ -55,6 +55,14 @@ namespace fileSystemProviderInternal { boolean hasMore, long executionTime); + // Internal. Success callback of the onOpenFileRequested + // event. + static void openFileRequestedSuccess( + DOMString fileSystemId, + long requestId, + long executionTime, + optional fileSystemProvider.EntryMetadata metadata); + // Internal. Success callback of all of the operation requests, which do not // return any value. Must be called in case of a success. static void operationRequestedSuccess( 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 26a15ecb..3ee760ad 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 @@ -356,6 +356,7 @@ namespace passwordsPrivate { callback GetUrlCollectionCallback = void(UrlCollection urlCollection); callback CredentialsWithReusedPasswordCallback = void(PasswordUiEntryList[] entries); + callback PasswordManagerPinAvailableCallback = void(boolean available); interface Functions { // Function that logs that the Passwords page was accessed from the Chrome @@ -549,6 +550,13 @@ namespace passwordsPrivate { // Opens a file with exported passwords in the OS shell. static void showExportedFileInShell(DOMString file_path); + + // Shows a dialog for changing the Password Manager PIN. + static void changePasswordManagerPin(); + + // Checks whether changing Password Manager PIN is possible. + static void isPasswordManagerPinAvailable( + PasswordManagerPinAvailableCallback callback); }; interface Events { 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 bf59360f..620f0eba 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 @@ -35,7 +35,6 @@ #include "chrome/common/chrome_paths.h" #include "chrome/common/chrome_switches.h" #include "chrome/common/crash_keys.h" -#include "chrome/common/pdf_util.h" #include "chrome/common/pepper_permission_util.h" #include "chrome/common/ppapi_utils.h" #include "chrome/common/profiler/thread_profiler.h" @@ -61,6 +60,7 @@ #include "chrome/renderer/net_benchmarking_extension.h" #include "chrome/renderer/plugins/non_loadable_plugin_placeholder.h" #include "chrome/renderer/plugins/pdf_plugin_placeholder.h" +#include "chrome/renderer/supervised_user/supervised_user_error_page_controller_delegate_impl.h" #include "chrome/renderer/trusted_vault_encryption_keys_extension.h" #include "chrome/renderer/url_loader_throttle_provider_impl.h" #include "chrome/renderer/v8_unwinder.h" @@ -78,6 +78,7 @@ #include "components/content_capture/renderer/content_capture_sender.h" #include "components/content_settings/core/common/content_settings_pattern.h" #include "components/continuous_search/renderer/search_result_extractor_impl.h" +#include "components/country_codes/country_codes.h" #include "components/dom_distiller/content/renderer/distillability_agent.h" #include "components/dom_distiller/content/renderer/distiller_js_render_frame_observer.h" #include "components/dom_distiller/core/dom_distiller_features.h" @@ -86,6 +87,7 @@ #include "components/error_page/common/error.h" #include "components/error_page/common/localized_error.h" #include "components/feed/buildflags.h" +#include "components/feed/feed_feature_list.h" #include "components/grit/components_scaled_resources.h" #include "components/heap_profiling/in_process/heap_profiler_controller.h" #include "components/history_clusters/core/config.h" @@ -101,6 +103,7 @@ #include "components/paint_preview/buildflags/buildflags.h" #include "components/password_manager/core/common/password_manager_features.h" #include "components/pdf/common/constants.h" +#include "components/pdf/common/pdf_util.h" #include "components/permissions/features.h" #include "components/safe_browsing/buildflags.h" #include "components/safe_browsing/content/renderer/threat_dom_details.h" @@ -108,7 +111,6 @@ #include "components/subresource_filter/content/renderer/subresource_filter_agent.h" #include "components/subresource_filter/content/renderer/unverified_ruleset_dealer.h" #include "components/subresource_filter/core/common/common_features.h" -#include "components/supervised_user/core/common/buildflags.h" #include "components/variations/net/variations_http_headers.h" #include "components/variations/variations_switches.h" #include "components/version_info/version_info.h" @@ -251,10 +253,6 @@ #endif // BUILDFLAG(HAS_SPELLCHECK_PANEL) #endif // BUILDFLAG(ENABLE_SPELLCHECK) -#if BUILDFLAG(ENABLE_SUPERVISED_USERS) -#include "chrome/renderer/supervised_user/supervised_user_error_page_controller_delegate_impl.h" -#endif - #if BUILDFLAG(ENABLE_LIBRARY_CDMS) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_ANDROID) #include "chrome/renderer/media/chrome_key_systems.h" #endif @@ -656,16 +654,14 @@ void ChromeContentRendererClient::RenderFrameCreated( const bool search_result_extractor_enabled = render_frame->IsMainFrame() && - page_content_annotations::features::IsPageContentAnnotationEnabled(); + page_content_annotations::features::ShouldExtractRelatedSearches(); if (search_result_extractor_enabled) { continuous_search::SearchResultExtractorImpl::Create(render_frame); } new NetErrorHelper(render_frame); -#if BUILDFLAG(ENABLE_SUPERVISED_USERS) new SupervisedUserErrorPageControllerDelegateImpl(render_frame); -#endif if (!render_frame->IsMainFrame()) { auto* main_frame_no_state_prefetch_helper = @@ -774,7 +770,7 @@ void ChromeContentRendererClient::RenderFrameCreated( #endif #if BUILDFLAG(ENABLE_FEED_V2) if (render_frame->IsMainFrame() && - base::FeatureList::IsEnabled(feed::kWebFeed)) { + feed::IsWebFeedEnabledForLocale(country_codes::GetCurrentCountryCode())) { new feed::RssLinkReader(render_frame, registry); } #endif @@ -1357,10 +1353,8 @@ void ChromeContentRendererClient::PrepareErrorPage( http_method == "POST", std::move(alternative_error_page_info), error_html); -#if BUILDFLAG(ENABLE_SUPERVISED_USERS) SupervisedUserErrorPageControllerDelegateImpl::Get(render_frame) ->PrepareForErrorPage(); -#endif } void ChromeContentRendererClient::PrepareErrorPageForHttpStatusError( @@ -1589,11 +1583,12 @@ ChromeContentRendererClient::CreateWebSocketHandshakeThrottleProvider() { browser_interface_broker_.get()); } -std::unique_ptr +std::unique_ptr ChromeContentRendererClient::GetSupportedKeySystems( + content::RenderFrame* render_frame, media::GetSupportedKeySystemsCB cb) { #if BUILDFLAG(ENABLE_LIBRARY_CDMS) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_ANDROID) - return GetChromeKeySystems(std::move(cb)); + return GetChromeKeySystems(render_frame, std::move(cb)); #else std::move(cb).Run({}); return nullptr; 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 a3074afa..f1a5a2e1 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 @@ -11,6 +11,7 @@ #include #include #include +#include #include #include #include @@ -37,7 +38,6 @@ #include "base/observer_list.h" #include "base/process/process.h" #include "base/ranges/algorithm.h" -#include "base/strings/string_piece.h" #include "base/strings/string_split.h" #include "base/strings/string_util.h" #include "base/strings/stringprintf.h" @@ -179,6 +179,7 @@ #include "third_party/blink/public/mojom/input/input_handler.mojom-shared.h" #include "third_party/blink/public/mojom/mediastream/media_stream.mojom-shared.h" #include "third_party/blink/public/mojom/mediastream/media_stream.mojom.h" +#include "third_party/blink/public/mojom/page/draggable_region.mojom.h" #include "third_party/blink/public/mojom/window_features/window_features.mojom.h" #include "third_party/skia/include/core/SkBitmap.h" #include "ui/accessibility/ax_tree_combiner.h" @@ -272,8 +273,8 @@ BASE_FEATURE(kCrashOnDanglingBrowserContext, using LifecycleState = RenderFrameHost::LifecycleState; using LifecycleStateImpl = RenderFrameHostImpl::LifecycleStateImpl; -using AttributionReportingOsReportType = - ContentBrowserClient::AttributionReportingOsReportType; +using AttributionReportingOsRegistrar = + ContentBrowserClient::AttributionReportingOsRegistrar; base::LazyInstance>:: DestructorAtExit g_created_callbacks = LAZY_INSTANCE_INITIALIZER; @@ -452,40 +453,47 @@ float GetDeviceScaleAdjustment(int min_width) { } #endif -// Used to attach the "set of fullscreen contents" to a browser context. Storing -// sets of WebContents on their browser context is done for two reasons. One, +// Store a set of fullscreen WebContents and metadata for the browser context. +// Storing this information on the browser context is done for two reasons. One, // related WebContentses must necessarily share a browser context, so this saves // lookup time by restricting to one specific browser context. Two, separating // by browser context is preemptive paranoia about keeping things separate. -class FullscreenContentsHolder : public base::SupportsUserData::Data { +class FullscreenUserData : public base::SupportsUserData::Data { public: - FullscreenContentsHolder() = default; - ~FullscreenContentsHolder() override = default; + FullscreenUserData() = default; + ~FullscreenUserData() override = default; - FullscreenContentsHolder(const FullscreenContentsHolder&) = delete; - FullscreenContentsHolder& operator=(const FullscreenContentsHolder&) = delete; + FullscreenUserData(const FullscreenUserData&) = delete; + FullscreenUserData& operator=(const FullscreenUserData&) = delete; base::flat_set>* set() { return &set_; } + std::map* last_exits() { return &last_exits_; } + private: base::flat_set> set_; + // Track latest exits by origin to briefly block re-entry without a gesture. + std::map last_exits_; }; -const char kFullscreenContentsSet[] = "fullscreen-contents"; +const char kFullscreenUserData[] = "fullscreen-user-data"; + +FullscreenUserData* GetFullscreenUserData(BrowserContext* browser_context) { + auto* set_holder = static_cast( + browser_context->GetUserData(kFullscreenUserData)); + if (!set_holder) { + auto new_holder = std::make_unique(); + set_holder = new_holder.get(); + browser_context->SetUserData(kFullscreenUserData, std::move(new_holder)); + } + return set_holder; +} base::flat_set>* FullscreenContentsSet(BrowserContext* browser_context) { - auto* set_holder = static_cast( - browser_context->GetUserData(kFullscreenContentsSet)); - if (!set_holder) { - auto new_holder = std::make_unique(); - set_holder = new_holder.get(); - browser_context->SetUserData(kFullscreenContentsSet, std::move(new_holder)); - } - - return set_holder->set(); + return GetFullscreenUserData(browser_context)->set(); } // Returns true if `host` has the Window Management permission granted. @@ -564,7 +572,7 @@ class DefaultColorProviderSource : public ui::ColorProviderSource, GetColorProviderKey()); } - const ui::RendererColorMap GetRendererColorMap( + ui::RendererColorMap GetRendererColorMap( ui::ColorProviderKey::ColorMode color_mode, ui::ColorProviderKey::ForcedColors forced_colors) const override { auto key = GetColorProviderKey(); @@ -747,6 +755,18 @@ WebContentsImpl* WebContentsImpl::FromRenderWidgetHostImpl( return static_cast(rwh->delegate()); } +std::optional WebContentsImpl::AdjustedChildZoom( + const RenderWidgetHostViewChildFrame* render_widget) { + // permits zoom level to be set programmatically by script: + // https://developer.chrome.com/docs/apps/reference/webviewTag#method-setZoom + if (IsGuest() && GetRenderWidgetHostView() == render_widget) { + return GetPendingPageZoomLevel(); + } + + // Signals zoom level should be inherited from the parent + return std::nullopt; +} + void WebContents::SetScreenOrientationDelegate( ScreenOrientationDelegate* delegate) { ScreenOrientationProvider::SetDelegate(delegate); @@ -1922,6 +1942,12 @@ void WebContentsImpl::SetAccessibilityMode(ui::AXMode mode) { }); } +void WebContentsImpl::DidCapturedSurfaceControl() { + DCHECK_CURRENTLY_ON(BrowserThread::UI); + + observers_.NotifyObservers(&WebContentsObserver::OnCapturedSurfaceControl); +} + void WebContentsImpl::ResetAccessibility() { // In contrast to the above, do not bother with frames in the back-forward // cache since the reset is intended to generate new trees for observers of @@ -2267,6 +2293,10 @@ bool WebContentsImpl::IsWaitingForResponse() { return ongoing_navigation_request != nullptr; } +bool WebContentsImpl::HasUncommittedNavigationInPrimaryMainFrame() { + return primary_frame_tree_.root()->HasNavigation(); +} + const net::LoadStateWithParam& WebContentsImpl::GetLoadState() { return load_state_; } @@ -3958,8 +3988,10 @@ void WebContentsImpl::ExitFullscreenMode(bool will_cause_resize) { static_cast(view)->ExitFullscreenMode(); } - // Block automatic fullscreen temporarily, e.g. match kActivationLifespan. - block_automatic_fullscreen_until_ = base::TimeTicks::Now() + base::Seconds(5); + GetFullscreenUserData(GetBrowserContext()) + ->last_exits() + ->insert_or_assign(GetPrimaryMainFrame()->GetLastCommittedOrigin(), + base::TimeTicks::Now()); if (delegate_) { // This may spin the message loop and destroy this object crbug.com/1506535 @@ -4085,7 +4117,8 @@ ui::WindowShowState WebContentsImpl::GetWindowShowState() { : ui::SHOW_STATE_DEFAULT; } -DevicePostureProviderImpl* WebContentsImpl::GetDevicePostureProvider() { +blink::mojom::DevicePostureProvider* +WebContentsImpl::GetDevicePostureProvider() { return DevicePostureProviderImpl::GetOrCreate(this); } @@ -4388,6 +4421,7 @@ bool WebContentsImpl::RequestKeyboardLock( // KeyboardLock is only supported when called by the top-level browsing // context and is not supported in embedded content scenarios. if (GetOuterWebContents()) { + render_widget_host->GotResponseToKeyboardLockRequest(false); return false; } @@ -5379,7 +5413,10 @@ void WebContentsImpl::ResizeDueToAutoResize( } } -WebContents* WebContentsImpl::OpenURL(const OpenURLParams& params) { +WebContents* WebContentsImpl::OpenURL( + const OpenURLParams& params, + base::OnceCallback + navigation_handle_callback) { TRACE_EVENT1("content", "WebContentsImpl::OpenURL", "url", params.url); #if DCHECK_IS_ON() DCHECK(params.Valid()); @@ -5391,6 +5428,7 @@ WebContents* WebContentsImpl::OpenURL(const OpenURLParams& params) { // time, navigations, including the initial one, that goes through OpenURL // should be delayed until embedder is ready to resume loading. delayed_open_url_params_ = std::make_unique(params); + delayed_navigation_handle_callback_ = std::move(navigation_handle_callback); // If there was a navigation deferred when creating the window through // CreateNewWindow, drop it in favor of this navigation. @@ -5443,7 +5481,8 @@ WebContents* WebContentsImpl::OpenURL(const OpenURLParams& params) { } } - WebContents* new_contents = delegate_->OpenURLFromTab(this, params); + WebContents* new_contents = delegate_->OpenURLFromTab( + this, params, std::move(navigation_handle_callback)); if (source_render_frame_host && params.source_site_instance) { CHECK_EQ(source_render_frame_host->GetSiteInstance(), @@ -6063,23 +6102,20 @@ bool WebContentsImpl::GotResponseToKeyboardLockRequest(bool allowed) { OPTIONAL_TRACE_EVENT1("content", "WebContentsImpl::GotResponseToKeyboardLockRequest", "allowed", allowed); - if (!keyboard_lock_widget_) { return false; } - if (WebContentsImpl::FromRenderWidgetHostImpl(keyboard_lock_widget_) != this) { NOTREACHED(); return false; } - // KeyboardLock is only supported when called by the top-level browsing // context and is not supported in embedded content scenarios. if (GetOuterWebContents()) { + keyboard_lock_widget_->GotResponseToKeyboardLockRequest(false); return false; } - keyboard_lock_widget_->GotResponseToKeyboardLockRequest(allowed); return true; } @@ -6279,13 +6315,21 @@ void WebContentsImpl::ResumeLoadingCreatedWebContents() { "WebContentsImpl::ResumeLoadingCreatedWebContents"); if (delayed_load_url_params_.get()) { DCHECK(!delayed_open_url_params_); - GetController().LoadURLWithParams(*delayed_load_url_params_.get()); + base::WeakPtr navigation = + GetController().LoadURLWithParams(*delayed_load_url_params_.get()); + if (delayed_navigation_handle_callback_ && navigation) { + std::move(delayed_navigation_handle_callback_).Run(*navigation); + } + delayed_navigation_handle_callback_.Reset(); delayed_load_url_params_.reset(nullptr); return; } + CHECK(!delayed_navigation_handle_callback_); + if (delayed_open_url_params_.get()) { - OpenURL(*delayed_open_url_params_.get()); + OpenURL(*delayed_open_url_params_.get(), + std::move(delayed_navigation_handle_callback_)); delayed_open_url_params_.reset(nullptr); return; } @@ -6552,6 +6596,14 @@ void WebContentsImpl::DidFailLoadWithError( render_frame_host, url, error_code); } +void WebContentsImpl::DraggableRegionsChanged( + const std::vector& regions) { + if (!GetDelegate()) { + return; + } + GetDelegate()->DraggableRegionsChanged(regions, this); +} + void WebContentsImpl::NotifyChangedNavigationState( InvalidateTypes changed_flags) { NotifyNavigationStateChanged(changed_flags); @@ -7020,14 +7072,28 @@ std::optional WebContentsImpl::GetBaseBackgroundColor() { blink::ColorProviderColorMaps WebContentsImpl::GetColorProviderColorMaps() const { - const auto* source = GetColorProviderSource(); + const auto* color_mode_source = GetColorProviderSource(); + + // Unlike preferred color scheme, ForcedColors should always use the + // default color provider source, which reflects the NativeTheme web instance. + // This is because the Page colors feature only modifies the Forced colors + // mode for web without affecting the UI. + const auto* forced_colors_source = DefaultColorProviderSource::GetInstance(); + ui::ColorProviderKey::ForcedColors forced_colors = + forced_colors_source->GetForcedColors(); + if (forced_colors == ui::ColorProviderKey::ForcedColors::kNone) { + forced_colors = ui::ColorProviderKey::ForcedColors::kActive; + } + return blink::ColorProviderColorMaps{ - source->GetRendererColorMap(ui::ColorProviderKey::ColorMode::kLight, - ui::ColorProviderKey::ForcedColors::kNone), - source->GetRendererColorMap(ui::ColorProviderKey::ColorMode::kDark, - ui::ColorProviderKey::ForcedColors::kNone), - source->GetRendererColorMap(source->GetColorMode(), - ui::ColorProviderKey::ForcedColors::kActive)}; + color_mode_source->GetRendererColorMap( + ui::ColorProviderKey::ColorMode::kLight, + ui::ColorProviderKey::ForcedColors::kNone), + color_mode_source->GetRendererColorMap( + ui::ColorProviderKey::ColorMode::kDark, + ui::ColorProviderKey::ForcedColors::kNone), + forced_colors_source->GetRendererColorMap( + forced_colors_source->GetColorMode(), forced_colors)}; } void WebContentsImpl::PrintCrossProcessSubframe( @@ -7713,7 +7779,7 @@ std::u16string NormalizeLineBreaks(const std::u16string& source) { static const base::NoDestructor kReturn(u"\r"); static const base::NoDestructor kNewline(u"\n"); - std::vector pieces; + std::vector pieces; for (const auto& rn_line : base::SplitStringPieceUsingSubstr( source, *kReturnNewline, base::KEEP_WHITESPACE, @@ -8512,6 +8578,14 @@ void WebContentsImpl::RegisterExistingOriginAsHavingDefaultIsolation( } } +bool WebContentsImpl::MaybeCopyContentAreaAsBitmap( + base::OnceCallback callback) { + if (!GetDelegate()) { + return false; + } + return GetDelegate()->MaybeCopyContentAreaAsBitmap(std::move(callback)); +} + void WebContentsImpl::DidChangeName(RenderFrameHostImpl* render_frame_host, const std::string& name) { OPTIONAL_TRACE_EVENT2("content", "WebContentsImpl::DidChangeName", @@ -8998,6 +9072,18 @@ void WebContentsImpl::RendererUnresponsive( return; } + if (base::FeatureList::IsEnabled(features::kCrashReporting) && + base::FeatureList::IsEnabled( + blink::features::kDocumentPolicyIncludeJSCallStacksInCrashReports) && + this->GetLastCommittedURL().SchemeIsHTTPOrHTTPS()) { + RenderProcessHost* rph = render_widget_host->GetProcess(); + if (rph) { + RenderProcessHostImpl* process_host = + static_cast(rph); + process_host->InterruptJavaScriptIsolateAndCollectCallStack(); + } + } + observers_.NotifyObservers(&WebContentsObserver::OnRendererUnresponsive, render_widget_host->GetProcess()); if (delegate_) { @@ -10080,12 +10166,13 @@ bool WebContentsImpl::IsTransientActivationRequiredForHtmlFullscreen() { return false; } - // Require transient activation shortly after any related WebContents exited. - for (auto* rfhi : GetActiveTopLevelDocumentsInBrowsingContextGroup(host)) { - auto* related = WebContentsImpl::FromRenderFrameHostImpl(rfhi); - if (base::TimeTicks::Now() < related->block_automatic_fullscreen_until_) { - return true; - } + // Require transient activation shortly after a same-origin WebContents exit. + auto* last_exits = GetFullscreenUserData(GetBrowserContext())->last_exits(); + auto last_exit = last_exits->find(host->GetLastCommittedOrigin()); + constexpr base::TimeDelta kCooldown = base::Seconds(5); + if (last_exit != last_exits->end() && + base::TimeTicks::Now() < last_exit->second + kCooldown) { + return true; } return GetContentClient() @@ -10222,7 +10309,7 @@ WebContentsImpl::ParseDownloadHeaders(const std::string& headers) { OPTIONAL_TRACE_EVENT1("content", "WebContentsImpl::ParseDownloadHeaders", "headers", headers); download::DownloadUrlParameters::RequestHeadersType request_headers; - for (const base::StringPiece& key_value : base::SplitStringPiece( + for (const std::string_view& key_value : base::SplitStringPiece( headers, "\r\n", base::TRIM_WHITESPACE, base::SPLIT_WANT_NONEMPTY)) { std::vector pair = base::SplitString( key_value, ":", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL); @@ -10742,14 +10829,14 @@ void WebContentsImpl::SetOverscrollNavigationEnabled(bool enabled) { } network::mojom::AttributionSupport WebContentsImpl::GetAttributionSupport() { - ContentBrowserClient::AttributionReportingOsReportTypes reportTypes = - AttributionOsLevelManager::GetAttributionReportingOsReportTypes(this); + ContentBrowserClient::AttributionReportingOsRegistrars reportTypes = + AttributionOsLevelManager::GetAttributionReportingOsRegistrars(this); return AttributionManager::GetAttributionSupport( - reportTypes.source_report_type == - AttributionReportingOsReportType::kDisabled && - reportTypes.trigger_report_type == - AttributionReportingOsReportType::kDisabled); + reportTypes.source_registrar == + AttributionReportingOsRegistrar::kDisabled && + reportTypes.trigger_registrar == + AttributionReportingOsRegistrar::kDisabled); } void WebContentsImpl::UpdateAttributionSupportRenderer() { diff --git a/tools/under-control/src/content/child/runtime_features.cc b/tools/under-control/src/content/child/runtime_features.cc index 8e6b4817..3161cd58 100755 --- a/tools/under-control/src/content/child/runtime_features.cc +++ b/tools/under-control/src/content/child/runtime_features.cc @@ -36,6 +36,7 @@ #include "services/network/public/cpp/features.h" #include "third_party/blink/public/common/buildflags.h" #include "third_party/blink/public/common/features.h" +#include "third_party/blink/public/common/features_generated.h" #include "third_party/blink/public/common/loader/referrer_utils.h" #include "third_party/blink/public/common/switches.h" #include "third_party/blink/public/platform/web_runtime_features.h" @@ -185,8 +186,6 @@ void SetRuntimeFeaturesFromChromiumFeatures() { blinkFeatureToBaseFeatureMapping[] = { {wf::EnableAccessibilityAriaVirtualContent, raw_ref(features::kEnableAccessibilityAriaVirtualContent)}, - {wf::EnableAccessibilityExposeHTMLElement, - raw_ref(features::kEnableAccessibilityExposeHTMLElement)}, #if BUILDFLAG(IS_ANDROID) {wf::EnableAccessibilityPageZoom, raw_ref(features::kAccessibilityPageZoom)}, @@ -210,7 +209,6 @@ void SetRuntimeFeaturesFromChromiumFeatures() { raw_ref(features::kConsolidatedMovementXY)}, {wf::EnableCooperativeScheduling, raw_ref(features::kCooperativeScheduling)}, - {wf::EnableDevicePosture, raw_ref(features::kDevicePosture)}, {wf::EnableDigitalGoods, raw_ref(features::kDigitalGoodsApi), kSetOnlyIfOverridden}, {wf::EnableDocumentPolicyNegotiation, @@ -218,15 +216,9 @@ void SetRuntimeFeaturesFromChromiumFeatures() { {wf::EnableEyeDropperAPI, raw_ref(features::kEyeDropper), kSetOnlyIfOverridden}, {wf::EnableFedCm, raw_ref(features::kFedCm), kSetOnlyIfOverridden}, - {wf::EnableFedCmAutoSelectedFlag, - raw_ref(features::kFedCmAutoSelectedFlag), kSetOnlyIfOverridden}, {wf::EnableFedCmButtonMode, raw_ref(features::kFedCmButtonMode), kSetOnlyIfOverridden}, {wf::EnableFedCmAuthz, raw_ref(features::kFedCmAuthz), kDefault}, - {wf::EnableFedCmError, raw_ref(features::kFedCmError), - kSetOnlyIfOverridden}, - {wf::EnableFedCmDomainHint, raw_ref(features::kFedCmDomainHint), - kSetOnlyIfOverridden}, {wf::EnableFedCmIdPRegistration, raw_ref(features::kFedCmIdPRegistration), kDefault}, {wf::EnableFedCmIdpSigninStatus, @@ -242,12 +234,10 @@ void SetRuntimeFeaturesFromChromiumFeatures() { kSetOnlyIfOverridden}, {wf::EnableSharedStorageAPIM118, raw_ref(blink::features::kSharedStorageAPIM118), kDefault}, - {wf::EnableSharedStorageAPIM124, - raw_ref(blink::features::kSharedStorageAPIM124), kDefault}, + {wf::EnableSharedStorageAPIM125, + raw_ref(blink::features::kSharedStorageAPIM125), kDefault}, {wf::EnableFedCmMultipleIdentityProviders, raw_ref(features::kFedCmMultipleIdentityProviders), kDefault}, - {wf::EnableFedCmDisconnect, raw_ref(features::kFedCmDisconnect), - kSetOnlyIfOverridden}, {wf::EnableFedCmSelectiveDisclosure, raw_ref(features::kFedCmSelectiveDisclosure), kDefault}, {wf::EnableFencedFrames, @@ -308,7 +298,6 @@ void SetRuntimeFeaturesFromChromiumFeatures() { raw_ref(features::kUserActivationSameOriginVisibility)}, {wf::EnableVideoPlaybackQuality, raw_ref(features::kVideoPlaybackQuality)}, - {wf::EnableViewportSegments, raw_ref(features::kViewportSegments)}, {wf::EnableWebBluetooth, raw_ref(features::kWebBluetooth), kSetOnlyIfOverridden}, {wf::EnableWebBluetoothGetDevices, @@ -351,8 +340,6 @@ void SetRuntimeFeaturesFromChromiumFeatures() { #endif {wf::EnableRemoveMobileViewportDoubleTap, raw_ref(features::kRemoveMobileViewportDoubleTap)}, - {wf::EnableServiceWorkerBypassFetchHandler, - raw_ref(features::kServiceWorkerBypassFetchHandler)}, {wf::EnableServiceWorkerStaticRouter, raw_ref(features::kServiceWorkerStaticRouter)}, }; @@ -399,6 +386,9 @@ void SetRuntimeFeaturesFromChromiumFeatures() { raw_ref(features::kCookieDeprecationFacilitatedTesting)}, {"Database", raw_ref(blink::features::kWebSQLAccess), kSetOnlyIfOverridden}, + {"DocumentPolicyIncludeJSCallStacksInCrashReports", + raw_ref(blink::features:: + kDocumentPolicyIncludeJSCallStacksInCrashReports)}, {"FencedFramesLocalUnpartitionedDataAccess", raw_ref(blink::features::kFencedFramesLocalUnpartitionedDataAccess)}, {"Fledge", raw_ref(blink::features::kFledge), kSetOnlyIfOverridden}, @@ -610,21 +600,6 @@ void SetCustomizedRuntimeFeaturesFromCombinedArgs( break; } } - - if (base::FeatureList::IsEnabled(blink::features::kPendingBeaconAPI)) { - // The Chromium flag `kPendingBeaconAPI` is true, which enables the - // parts of the API's implementation in Chromium. - if (blink::features::kPendingBeaconAPIRequiresOriginTrial.Get()) { - // `kPendingBeaconAPIRequiresOriginTrial`=true specifies that - // execution context needs to have an origin trial token in order to use - // the PendingBeacon web API. - // So disable the RuntimeEnabledFeature flag PendingBeaconAPI here and let - // the existence of OT token to decide whether the web API is enabled. - WebRuntimeFeatures::EnablePendingBeaconAPI(false); - } else { - WebRuntimeFeatures::EnablePendingBeaconAPI(true); - } - } } // Ensures that the various ways of enabling/disabling features do not produce @@ -700,15 +675,15 @@ void ResolveInvalidConfigurations() { WebRuntimeFeatures::EnableSharedStorageAPIM118(false); } - if (!base::FeatureList::IsEnabled(blink::features::kSharedStorageAPIM124) || + if (!base::FeatureList::IsEnabled(blink::features::kSharedStorageAPIM125) || !base::FeatureList::IsEnabled(blink::features::kSharedStorageAPI)) { - LOG_IF(WARNING, WebRuntimeFeatures::IsSharedStorageAPIM124Enabled()) - << "SharedStorage for M124+ cannot be enabled in this " + LOG_IF(WARNING, WebRuntimeFeatures::IsSharedStorageAPIM125Enabled()) + << "SharedStorage for M125+ cannot be enabled in this " "configuration. Use --" << switches::kEnableFeatures << "=" << blink::features::kSharedStorageAPI.name << "," - << blink::features::kSharedStorageAPIM124.name << " in addition."; - WebRuntimeFeatures::EnableSharedStorageAPIM124(false); + << blink::features::kSharedStorageAPIM125.name << " in addition."; + WebRuntimeFeatures::EnableSharedStorageAPIM125(false); } if (!base::FeatureList::IsEnabled( 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 465de2f9..d2975a6c 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 @@ -5,6 +5,7 @@ #include "content/public/browser/content_browser_client.h" #include +#include #include #include "base/check.h" @@ -13,13 +14,13 @@ #include "base/functional/callback_helpers.h" #include "base/no_destructor.h" #include "base/notreached.h" -#include "base/strings/string_piece.h" #include "base/task/sequenced_task_runner.h" #include "base/task/thread_pool/thread_pool_instance.h" #include "base/values.h" #include "build/build_config.h" #include "build/buildflag.h" #include "build/chromeos_buildflags.h" +#include "content/browser/model_execution/mock_model_manager.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" @@ -43,6 +44,7 @@ #include "content/public/browser/responsiveness_calculator_delegate.h" #include "content/public/browser/sms_fetcher.h" #include "content/public/browser/speculation_host_delegate.h" +#include "content/public/browser/tracing_delegate.h" #include "content/public/browser/url_loader_request_interceptor.h" #include "content/public/browser/vpn_service_proxy.h" #include "content/public/browser/web_contents.h" @@ -54,6 +56,7 @@ #include "media/capture/content/screen_enumerator.h" #include "media/mojo/mojom/media_service.mojom.h" #include "mojo/public/cpp/bindings/message.h" +#include "net/base/isolation_info.h" #include "net/cookies/site_for_cookies.h" #include "net/ssl/client_cert_identity.h" #include "net/ssl/client_cert_store.h" @@ -85,10 +88,12 @@ #if BUILDFLAG(IS_ANDROID) #include "content/public/browser/tts_environment_android.h" +#else +#include "services/video_effects/public/mojom/video_effects_processor.mojom-forward.h" #endif using AttributionReportType = - content::ContentBrowserClient::AttributionReportingOsReportType; + content::ContentBrowserClient::AttributionReportingOsRegistrar; namespace content { @@ -183,13 +188,13 @@ bool ContentBrowserClient::DoesWebUIUrlRequireProcessLock(const GURL& url) { } bool ContentBrowserClient::ShouldTreatURLSchemeAsFirstPartyWhenTopLevel( - base::StringPiece scheme, + std::string_view scheme, bool is_embedded_origin_secure) { return false; } bool ContentBrowserClient::ShouldIgnoreSameSiteCookieRestrictionsWhenTopLevel( - base::StringPiece scheme, + std::string_view scheme, bool is_embedded_origin_secure) { return false; } @@ -346,10 +351,10 @@ bool ContentBrowserClient::IsIsolatedContextAllowedForUrl( return false; } -bool ContentBrowserClient::IsGetAllScreensMediaAllowed( - content::BrowserContext* context, - const url::Origin& origin) { - return false; +void ContentBrowserClient::CheckGetAllScreensMediaAllowed( + content::RenderFrameHost* render_frame_host, + base::OnceCallback callback) { + std::move(callback).Run(false); } size_t ContentBrowserClient::GetMaxRendererProcessCountOverride() { @@ -559,8 +564,8 @@ bool ContentBrowserClient::IsAttributionReportingOperationAllowed( return true; } -ContentBrowserClient::AttributionReportingOsReportTypes -ContentBrowserClient::GetAttributionReportingOsReportTypes( +ContentBrowserClient::AttributionReportingOsRegistrars +ContentBrowserClient::GetAttributionReportingOsRegistrars( WebContents* web_contents) { return {AttributionReportType::kWeb, AttributionReportType::kWeb}; } @@ -826,10 +831,14 @@ ContentBrowserClient::GetDevToolsBackgroundServiceExpirations( return {}; } -TracingDelegate* ContentBrowserClient::GetTracingDelegate() { +std::unique_ptr ContentBrowserClient::CreateTracingDelegate() { return nullptr; } +bool ContentBrowserClient::IsSystemWideTracingEnabled() { + return false; +} + bool ContentBrowserClient::IsPluginAllowedToCallRequestOSFileHandle( BrowserContext* browser_context, const GURL& url) { @@ -1006,6 +1015,7 @@ void ContentBrowserClient::WillCreateURLLoaderFactory( int render_process_id, URLLoaderFactoryType type, const url::Origin& request_initiator, + const net::IsolationInfo& isolation_info, std::optional navigation_id, ukm::SourceIdObj ukm_source_id, network::URLLoaderFactoryBuilder& factory_builder, @@ -1182,7 +1192,7 @@ bool ContentBrowserClient::ShowPaymentHandlerWindow( return false; } -bool ContentBrowserClient::CreateThreadPool(base::StringPiece name) { +bool ContentBrowserClient::CreateThreadPool(std::string_view name) { base::ThreadPoolInstance::Create(name); return true; } @@ -1430,7 +1440,7 @@ void ContentBrowserClient::IsClipboardCopyAllowedByPolicy( const ClipboardMetadata& metadata, const ClipboardPasteData& data, IsClipboardCopyAllowedCallback callback) { - std::move(callback).Run(data, std::nullopt); + std::move(callback).Run(metadata.format_type, data, std::nullopt); } #if BUILDFLAG(ENABLE_VR) @@ -1498,6 +1508,14 @@ ContentBrowserClient::CreateIdentityRequestDialogController( return std::make_unique(); } +void ContentBrowserClient::ShowDigitalIdentityInterstitialIfNeeded( + WebContents& web_contents, + const url::Origin& origin, + DigitalIdentityInterstitialCallback callback) { + std::move(callback).Run( + DigitalIdentityProvider::RequestStatusForMetrics::kErrorOther); +} + std::unique_ptr ContentBrowserClient::CreateDigitalIdentityProvider() { return nullptr; @@ -1662,9 +1680,15 @@ bool ContentBrowserClient::UseOutermostMainFrameOrEmbedderForSubCaptureTargets() #if !BUILDFLAG(IS_ANDROID) void ContentBrowserClient::BindVideoEffectsManager( const std::string& device_id, - content::BrowserContext* browser_context, + BrowserContext* browser_context, mojo::PendingReceiver video_effects_manager) {} + +void ContentBrowserClient::BindVideoEffectsProcessor( + const std::string& device_id, + BrowserContext* browser_context, + mojo::PendingReceiver + video_effects_manager) {} #endif // !BUILDFLAG(IS_ANDROID) void ContentBrowserClient::PreferenceRankAudioDeviceInfos( @@ -1696,4 +1720,10 @@ bool ContentBrowserClient::ShouldSuppressAXLoadComplete(RenderFrameHost* rfh) { return false; } +void ContentBrowserClient::BindModelManager( + RenderFrameHost* rfh, + mojo::PendingReceiver receiver) { + MockModelManager::Create(rfh, std::move(receiver)); +} + } // namespace content diff --git a/tools/under-control/src/extensions/common/api/automation.idl b/tools/under-control/src/extensions/common/api/automation.idl index 2a17c294..1e59e0a5 100755 --- a/tools/under-control/src/extensions/common/api/automation.idl +++ b/tools/under-control/src/extensions/common/api/automation.idl @@ -583,6 +583,7 @@ enum IntentInputEventType { insertTranspose, insertReplacementText, insertCompositionText, + insertLink, // Deletion. deleteWordBackward, deleteWordForward, diff --git a/tools/under-control/src/extensions/common/api/bluetooth_private.idl b/tools/under-control/src/extensions/common/api/bluetooth_private.idl index 59ab4d89..33084d19 100755 --- a/tools/under-control/src/extensions/common/api/bluetooth_private.idl +++ b/tools/under-control/src/extensions/common/api/bluetooth_private.idl @@ -58,7 +58,8 @@ namespace bluetoothPrivate { alreadyExists, notConnected, doesNotExist, - invalidArgs + invalidArgs, + nonAuthTimeout }; // Valid pairing responses. diff --git a/tools/under-control/src/extensions/common/api/networking_onc.idl b/tools/under-control/src/extensions/common/api/networking_onc.idl index cbb9aa1a..e1564730 100755 --- a/tools/under-control/src/extensions/common/api/networking_onc.idl +++ b/tools/under-control/src/extensions/common/api/networking_onc.idl @@ -731,6 +731,8 @@ namespace networking.onc { // 'None' conflicts with extension code generation so we must use a string // for 'Source' instead of a SourceType enum. DOMString? Source; + // When traffic counters were last reset. + double? TrafficCounterResetTime; // The network type. NetworkType Type; // For VPN networks, the network VPN properties. @@ -777,6 +779,8 @@ namespace networking.onc { IPConfigProperties? SavedIPConfig; // See $(ref:NetworkProperties.Source). DOMString? Source; + // See $(ref:NetworkProperties.TrafficCounterResetTime). + double? TrafficCounterResetTime; // See $(ref:NetworkProperties.Type). NetworkType Type; // See $(ref:NetworkProperties.VPN). diff --git a/tools/under-control/src/extensions/common/api/networking_private.idl b/tools/under-control/src/extensions/common/api/networking_private.idl index fddaefdf..8cfccf14 100755 --- a/tools/under-control/src/extensions/common/api/networking_private.idl +++ b/tools/under-control/src/extensions/common/api/networking_private.idl @@ -730,6 +730,7 @@ namespace networkingPrivate { // for 'Source' instead of a SourceType enum. DOMString? Source; TetherProperties? Tether; + double? TrafficCounterResetTime; NetworkType Type; VPNProperties? VPN; WiFiProperties? WiFi; @@ -756,6 +757,7 @@ namespace networkingPrivate { // See $(ref:NetworkProperties.Source). DOMString? Source; TetherProperties? Tether; + double? TrafficCounterResetTime; NetworkType Type; ManagedVPNProperties? VPN; ManagedWiFiProperties? WiFi; diff --git a/tools/under-control/src/extensions/common/api/scripts_internal.idl b/tools/under-control/src/extensions/common/api/scripts_internal.idl index 487f457e..57fa71a8 100755 --- a/tools/under-control/src/extensions/common/api/scripts_internal.idl +++ b/tools/under-control/src/extensions/common/api/scripts_internal.idl @@ -65,5 +65,8 @@ namespace scriptsInternal { Source source; // The JavaScript "world" to run the script in. extensionTypes.ExecutionWorld world; + // The ID of the world into which to inject. If omitted, uses the default + // world. + DOMString? worldId; }; }; 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 08f060c2..36738afa 100755 --- a/tools/under-control/src/extensions/common/api/user_scripts.idl +++ b/tools/under-control/src/extensions/common/api/user_scripts.idl @@ -65,6 +65,13 @@ 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. + // TODO(https://crbug.com/331680187): Remove nodoc. + [nodoc] DOMString? worldId; }; // An object used to filter user scripts for ${ref:getScripts}. @@ -75,12 +82,19 @@ namespace userScripts { }; // An object used to update the `USER_SCRIPT` world - // configuration. If a propertie is not specified, it will reset it to its + // configuration. If a property is not specified, it will reset it to its // default value. dictionary WorldProperties{ + // Specifies the ID of the specific user script world to update. + // If not provided, updates the properties of the default user script world. + // Values with leading underscores (`_`) are reserved. + // TODO(https://crbug.com/331680187): Remove nodoc. + [nodoc] DOMString? worldId; + // Specifies the world csp. The default is the `ISOLATED` // world csp. DOMString? csp; + // Specifies whether messaging APIs are exposed. The default is // false. boolean? messaging; diff --git a/tools/under-control/src/gin/v8_initializer.cc b/tools/under-control/src/gin/v8_initializer.cc index c8a18ab7..024d5386 100755 --- a/tools/under-control/src/gin/v8_initializer.cc +++ b/tools/under-control/src/gin/v8_initializer.cc @@ -11,6 +11,7 @@ #include #include #include +#include #include #include @@ -31,7 +32,6 @@ #include "base/notreached.h" #include "base/path_service.h" #include "base/rand_util.h" -#include "base/strings/string_piece.h" #include "base/strings/string_split.h" #include "base/strings/string_util.h" #include "base/system/sys_info.h" @@ -276,6 +276,9 @@ void SetFlags(IsolateHolder::ScriptMode mode, SetV8FlagsIfOverridden(features::kV8MegaDomIC, "--mega-dom-ic", "--no-mega-dom-ic"); SetV8FlagsIfOverridden(features::kV8Maglev, "--maglev", "--no-maglev"); + SetV8FlagsIfOverridden(features::kV8ConcurrentMaglevHighPriorityThreads, + "--concurrent-maglev-high-priority-threads", + "--no-concurrent-maglev-high-priority-threads"); if (base::FeatureList::IsEnabled(features::kV8MemoryReducer)) { SetV8FlagsFormatted("--memory-reducer-gc-count=%i", features::kV8MemoryReducerGCCount.Get()); @@ -294,6 +297,9 @@ void SetFlags(IsolateHolder::ScriptMode mode, SetV8FlagsIfOverridden(features::kV8SparkplugNeedsShortBuiltinCalls, "--sparkplug-needs-short-builtins", "--no-sparkplug-needs-short-builtins"); + SetV8FlagsIfOverridden(features::kV8BaselineBatchCompilation, + "--baseline-batch-compilation", + "--no-baseline-batch-compilation"); SetV8FlagsIfOverridden(features::kV8ShortBuiltinCalls, "--short-builtin-calls", "--no-short-builtin-calls"); SetV8FlagsIfOverridden(features::kV8CodeMemoryWriteProtection, @@ -380,20 +386,11 @@ void SetFlags(IsolateHolder::ScriptMode mode, "--no-intel-jcc-erratum-mitigation"); // JavaScript language features. - SetV8FlagsIfOverridden(features::kJavaScriptSymbolAsWeakMapKey, - "--harmony-symbol-as-weakmap-key", - "--no-harmony-symbol-as-weakmap-key"); if (base::FeatureList::IsEnabled(features::kJavaScriptRabGsab)) { SetV8Flags("--harmony-rab-gsab"); } else { SetV8Flags("--no-harmony-rab-gsab"); } - SetV8FlagsIfOverridden(features::kJavaScriptRegExpUnicodeSets, - "--harmony-regexp-unicode-sets", - "--no-harmony-regexp-unicode-sets"); - SetV8FlagsIfOverridden(features::kJavaScriptJsonParseWithSource, - "--harmony-json-parse-with-source", - "--no-harmony-json-parse-with-source"); SetV8FlagsIfOverridden(features::kJavaScriptArrayBufferTransfer, "--harmony-rab-gsab-transfer", "--no-harmony-rab-gsab-transfer"); @@ -425,6 +422,10 @@ void SetFlags(IsolateHolder::ScriptMode mode, "--use-libm-trig-functions", "--no-use-libm-trig-functions"); + SetV8FlagsIfOverridden(features::kV8UseOriginalMessageForStackTrace, + "--use-original-message-for-stack-trace", + "--no-use-original-message-for-stack-trace"); + SetV8FlagsIfOverridden(features::kJavaScriptCompileHintsMagic, "--compile-hints-magic", "--no-compile-hints-magic"); @@ -452,7 +453,7 @@ void SetFlags(IsolateHolder::ScriptMode mode, return; // Allow the --js-flags switch to override existing flags: - std::vector flag_list = + std::vector flag_list = base::SplitStringPiece(js_command_line_flags, ",", base::TRIM_WHITESPACE, base::SPLIT_WANT_NONEMPTY); for (const auto& flag : flag_list) { diff --git a/tools/under-control/src/services/network/network_context.cc b/tools/under-control/src/services/network/network_context.cc index 16e8cf43..5fb60171 100755 --- a/tools/under-control/src/services/network/network_context.cc +++ b/tools/under-control/src/services/network/network_context.cc @@ -29,6 +29,7 @@ #include "base/ranges/algorithm.h" #include "base/sequence_checker.h" #include "base/strings/string_number_conversions.h" +#include "base/strings/string_util.h" #include "base/strings/utf_string_conversions.h" #include "base/task/current_thread.h" #include "base/task/sequenced_task_runner.h" @@ -189,6 +190,10 @@ #include "base/android/application_status_listener.h" #endif // BUILDFLAG(IS_ANDROID) +#if BUILDFLAG(ENABLE_DEVICE_BOUND_SESSIONS) +#include "net/device_bound_sessions/device_bound_session_service.h" +#endif // BUILDFLAG(ENABLE_DEVICE_BOUND_SESSIONS) + namespace network { namespace { @@ -440,13 +445,12 @@ void TestVerifyCertCallback( } std::string HashesToBase64String(const net::HashValueVector& hashes) { - std::string str; - for (size_t i = 0; i != hashes.size(); ++i) { - if (i != 0) - str += ","; - str += hashes[i].ToString(); + std::vector strings; + strings.reserve(hashes.size()); + for (const auto& hash : hashes) { + strings.push_back(hash.ToString()); } - return str; + return base::JoinString(strings, ","); } #if BUILDFLAG(IS_CT_SUPPORTED) @@ -639,13 +643,15 @@ NetworkContext::NetworkContext( url_request_context_owner_ = MakeURLRequestContext( std::move(url_loader_factory_for_cert_net_fetcher), session_cleanup_cookie_store, - std::move(on_url_request_context_builder_configured)); + std::move(on_url_request_context_builder_configured), + params_->bound_network); url_request_context_ = url_request_context_owner_.url_request_context.get(); cookie_manager_ = std::make_unique( url_request_context_, &first_party_sets_access_delegate_, std::move(session_cleanup_cookie_store), - std::move(params_->cookie_manager_params)); + std::move(params_->cookie_manager_params), + network_service_->tpcd_metadata_manager()); cookie_manager_->AddSettingsWillChangeCallback( base::BindRepeating(&NetworkContext::OnCookieManagerSettingsChanged, @@ -734,7 +740,8 @@ NetworkContext::NetworkContext( url_request_context, nullptr, /*first_party_sets_access_delegate=*/nullptr, - nullptr)), + /*params=*/nullptr, + /*tpcd_metadata_manager=*/nullptr)), socket_factory_( std::make_unique(url_request_context_->net_log(), url_request_context)), @@ -2303,11 +2310,17 @@ URLRequestContextOwner NetworkContext::MakeURLRequestContext( url_loader_factory_for_cert_net_fetcher, scoped_refptr session_cleanup_cookie_store, OnURLRequestContextBuilderConfiguredCallback - on_url_request_context_builder_configured) { + on_url_request_context_builder_configured, + net::handles::NetworkHandle bound_network) { URLRequestContextBuilderMojo builder; const base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); + bool is_network_bound = bound_network != net::handles::kInvalidNetworkHandle; + if (is_network_bound) { + builder.BindToNetwork(bound_network); + } + std::unique_ptr cert_verifier; if (g_cert_verifier_for_testing) { cert_verifier = std::make_unique(); @@ -2396,10 +2409,15 @@ URLRequestContextOwner NetworkContext::MakeURLRequestContext( if (network_service_) { net_log = network_service_->net_log(); builder.set_net_log(net_log); - builder.set_host_resolver_manager( - network_service_->host_resolver_manager()); - builder.set_host_resolver_factory( - network_service_->host_resolver_factory()); + if (!is_network_bound) { + // Network bound URLRequestContexts build and configure their own special + // HostResolverManager and HostResolver. So, don't inject the + // NetworkService one even if NetworkService is enabled. + builder.set_host_resolver_manager( + network_service_->host_resolver_manager()); + builder.set_host_resolver_factory( + network_service_->host_resolver_factory()); + } builder.SetHttpAuthHandlerFactory( network_service_->CreateHttpAuthHandlerFactory(this)); builder.set_network_quality_estimator( @@ -2481,6 +2499,8 @@ URLRequestContextOwner NetworkContext::MakeURLRequestContext( cache_params.type = net::URLRequestContextBuilder::HttpCacheParams::IN_MEMORY; } else { + // Network-bound NetworkContexts should not persist state on disk. + CHECK(!is_network_bound); cache_params.path = params_->file_paths->http_cache_directory->path(); cache_params.type = network_session_configurator::ChooseCacheType(); if (params_->http_cache_file_operations_factory) { @@ -2526,6 +2546,8 @@ URLRequestContextOwner NetworkContext::MakeURLRequestContext( &network::mojom::NetworkContextFilePaths:: http_server_properties_file_name, http_server_properties_file_name)) { + // Network-bound NetworkContexts should not persist state on disk. + CHECK(!is_network_bound); scoped_refptr json_pref_store(new JsonPrefStore( http_server_properties_file_name, nullptr, base::ThreadPool::CreateSequencedTaskRunner( @@ -2553,6 +2575,8 @@ URLRequestContextOwner NetworkContext::MakeURLRequestContext( &network::mojom::NetworkContextFilePaths:: transport_security_persister_file_name, transport_security_persister_file_name)) { + // Network-bound NetworkContexts should not persist state on disk. + CHECK(!is_network_bound); builder.set_transport_security_persister_file_path( transport_security_persister_file_name); } @@ -2583,6 +2607,8 @@ URLRequestContextOwner NetworkContext::MakeURLRequestContext( reporting_and_nel_store_database_name, reporting_and_nel_store_database_name) && (reporting_enabled || nel_enabled)) { + // Network-bound NetworkContexts should not persist state on disk. + CHECK(!is_network_bound); scoped_refptr client_task_runner = base::SingleThreadTaskRunner::GetCurrentDefault(); scoped_refptr background_task_runner = @@ -2681,6 +2707,13 @@ URLRequestContextOwner NetworkContext::MakeURLRequestContext( builder.set_cookie_deprecation_label(*params_->cookie_deprecation_label); } +#if BUILDFLAG(ENABLE_DEVICE_BOUND_SESSIONS) + if (params_->device_bound_sessions_enabled) { + builder.set_device_bound_session_service( + net::DeviceBoundSessionService::Create()); + } +#endif + if (on_url_request_context_builder_configured) { std::move(on_url_request_context_builder_configured).Run(&builder); } @@ -3021,17 +3054,40 @@ void NetworkContext::FlushCachedClientCertIfNeeded( } } +void NetworkContext::FlushMatchingCachedClientCert( + const scoped_refptr& certificate) { + net::HttpNetworkSession* http_session = + url_request_context_->http_transaction_factory()->GetSession(); + DCHECK(http_session); + if (http_session->ssl_client_context()) { + http_session->ssl_client_context()->ClearMatchingClientCertificate( + certificate); + } +} + void NetworkContext::SetCookieDeprecationLabel( const std::optional& label) { CHECK(url_request_context_); url_request_context_->set_cookie_deprecation_label(label); } -void NetworkContext::RevokeNetworkForNonce( - const base::UnguessableToken& nonce, - RevokeNetworkForNonceCallback callback) { - network_revocation_nonces_.insert(nonce); - // TODO(crbug.com/41488151): Cancel requests in progress. +void NetworkContext::RevokeNetworkForNonces( + const std::vector& nonces, + RevokeNetworkForNoncesCallback callback) { + for (const auto& nonce : nonces) { + network_revocation_nonces_.insert(nonce); + const std::set& exemptions = network_revocation_exemptions_[nonce]; + for (const auto& factory : url_loader_factories_) { + for (const auto& loader : factory->url_loaders()) { + loader->CancelRequestIfNonceMatchesAndUrlNotExempted(nonce, exemptions); + } + } +#if BUILDFLAG(ENABLE_WEBSOCKETS) + if (websocket_factory_) { + websocket_factory_->RemoveIfNonceMatches(nonce); + } +#endif // BUILDFLAG(ENABLE_WEBSOCKETS) + } std::move(callback).Run(); } @@ -3040,12 +3096,7 @@ void NetworkContext::ExemptUrlFromNetworkRevocationForNonce( const base::UnguessableToken& nonce, ExemptUrlFromNetworkRevocationForNonceCallback callback) { GURL url_without_filename = exempted_url.GetWithoutFilename(); - if (network_revocation_exemptions_.contains(nonce)) { - network_revocation_exemptions_.find(nonce)->second.insert( - url_without_filename); - } else { - network_revocation_exemptions_.insert({nonce, {url_without_filename}}); - } + network_revocation_exemptions_[nonce].insert(url_without_filename); std::move(callback).Run(); } diff --git a/tools/under-control/src/testing/variations/fieldtrial_testing_config.json b/tools/under-control/src/testing/variations/fieldtrial_testing_config.json index 3163560f..77862622 100755 --- a/tools/under-control/src/testing/variations/fieldtrial_testing_config.json +++ b/tools/under-control/src/testing/variations/fieldtrial_testing_config.json @@ -222,25 +222,6 @@ ] } ], - "AllowBFCacheWhenClosedMediaStreamTrack": [ - { - "platforms": [ - "android", - "chromeos", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled_20231219", - "enable_features": [ - "AllowBFCacheWhenClosedMediaStreamTrack" - ] - } - ] - } - ], "AllowDatapipeDrainedAsBytesConsumerInBFCache": [ { "platforms": [ @@ -288,6 +269,21 @@ ] } ], + "AndroidAnimateSuggestionsListAppearance": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "AnimateSuggestionsListAppearance" + ] + } + ] + } + ], "AndroidAnimatedImageDragShadow": [ { "platforms": [ @@ -527,11 +523,6 @@ "experiments": [ { "name": "Enabled_Tablets", - "params": { - "enable_modernize_visual_update_on_tablet": "true", - "modernize_visual_update_active_color_on_omnibox": "true", - "modernize_visual_update_merge_clipboard_on_ntp": "true" - }, "enable_features": [ "OmniboxModernizeVisualUpdate" ] @@ -539,21 +530,6 @@ ] } ], - "AndroidPeripheralsSupportTabStrip": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "AdvancedPeripheralsSupportTabStrip" - ] - } - ] - } - ], "AndroidSandboxRendererProcessPolicy": [ { "platforms": [ @@ -619,6 +595,21 @@ ] } ], + "AndroidTabDeclutter": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "AndroidTabDeclutter" + ] + } + ] + } + ], "AndroidTabGroupStableIds": [ { "platforms": [ @@ -634,21 +625,6 @@ ] } ], - "AndroidVisibleUrlTruncationV2": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "AndroidVisibleUrlTruncationV2" - ] - } - ] - } - ], "AomVpxUseChromeThreads": [ { "platforms": [ @@ -964,10 +940,9 @@ ], "experiments": [ { - "name": "Enabled", + "name": "Enabled_20240328", "enable_features": [ - "AshUrgentDiscardingFromPerformanceManager", - "ContainerAppKiller" + "AshUrgentDiscardingFromPerformanceManager" ] } ] @@ -1063,7 +1038,7 @@ ] } ], - "AttributionReportingSourceDeactivationAfterFilterMatching": [ + "AttributionReportDeliveryRetryDelays": [ { "platforms": [ "android", @@ -1076,9 +1051,53 @@ ], "experiments": [ { - "name": "Enabled", + "name": "Enabled_CurrentDelay", + "params": { + "first_retry_delay": "5m", + "second_retry_delay": "15m" + }, "enable_features": [ - "AttributionReportingDeactivateAfterFilterMatch" + "AttributionReportDeliveryRetryDelays" + ] + }, + { + "name": "Enabled_SmallDelay", + "params": { + "first_retry_delay": "2m", + "second_retry_delay": "10m" + }, + "enable_features": [ + "AttributionReportDeliveryRetryDelays" + ] + }, + { + "name": "Enabled_MediumDelay", + "params": { + "first_retry_delay": "10m", + "second_retry_delay": "1h" + }, + "enable_features": [ + "AttributionReportDeliveryRetryDelays" + ] + }, + { + "name": "Enabled_LargeDelay", + "params": { + "first_retry_delay": "15m", + "second_retry_delay": "6h" + }, + "enable_features": [ + "AttributionReportDeliveryRetryDelays" + ] + }, + { + "name": "Enabled_XLargeDelay", + "params": { + "first_retry_delay": "20m", + "second_retry_delay": "24h" + }, + "enable_features": [ + "AttributionReportDeliveryRetryDelays" ] } ] @@ -1100,6 +1119,21 @@ ] } ], + "AudioOffload": [ + { + "platforms": [ + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "AudioOffload" + ] + } + ] + } + ], "AudioRendererAlgorithmStartingCapacityForEncrypted": [ { "platforms": [ @@ -1123,6 +1157,21 @@ ] } ], + "AuthenticateUsingNewWindowsHelloApi": [ + { + "platforms": [ + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "AuthenticateUsingNewWindowsHelloApi" + ] + } + ] + } + ], "AutoDisableAccessibility": [ { "platforms": [ @@ -1337,6 +1386,27 @@ ] } ], + "AutofillEnableCardBenefits": [ + { + "platforms": [ + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "AutofillEnableCardBenefitsForAmericanExpress", + "AutofillEnableCardBenefitsForCapitalOne", + "AutofillEnableCardBenefitsSync" + ] + } + ] + } + ], "AutofillEnableCvcStorage": [ { "platforms": [ @@ -1442,6 +1512,45 @@ ] } ], + "AutofillEnableLoadingAndConfirmation": [ + { + "platforms": [ + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "AutofillEnableSaveCardLoadingAndConfirmation", + "AutofillEnableSaveCardLocalSaveFallback", + "AutofillEnableVcnEnrollLoadingAndConfirmation" + ] + } + ] + } + ], + "AutofillEnableManualFallbackIPH": [ + { + "platforms": [ + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "AutofillEnableManualFallbackIPH" + ] + } + ] + } + ], "AutofillEnableMerchantDomainInUnmaskCardRequest": [ { "platforms": [ @@ -1503,21 +1612,6 @@ ] } ], - "AutofillEnablePaymentsMandatoryReauth": [ - { - "platforms": [ - "ios" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "AutofillEnablePaymentsMandatoryReauth" - ] - } - ] - } - ], "AutofillEnableVirtualCardOnFile": [ { "platforms": [ @@ -1585,6 +1679,27 @@ ] } ], + "AutofillLogDeduplicationMetrics": [ + { + "platforms": [ + "android", + "chromeos", + "chromeos_lacros", + "ios", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "AutofillLogDeduplicationMetrics" + ] + } + ] + } + ], "AutofillLogUKMEventsWithSampleRate": [ { "platforms": [ @@ -1717,27 +1832,6 @@ ] } ], - "AutofillRelaxCreditCardImport": [ - { - "platforms": [ - "android", - "chromeos", - "chromeos_lacros", - "ios", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled_20240115", - "enable_features": [ - "AutofillRelaxCreditCardImport" - ] - } - ] - } - ], "AutofillReplaceCachedWebElementsByRendererIds": [ { "platforms": [ @@ -1877,25 +1971,6 @@ ] } ], - "AutofillUndo": [ - { - "platforms": [ - "chromeos", - "chromeos_lacros", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "AutofillUndo" - ] - } - ] - } - ], "AutofillUploadVotesForFieldsWithEmail": [ { "platforms": [ @@ -2065,6 +2140,48 @@ ] } ], + "AvoidLoadingPredictorPrefetchDuringBrowserStartup": [ + { + "platforms": [ + "android", + "chromeos", + "chromeos_lacros", + "fuchsia", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "AvoidLoadingPredictorPrefetchDuringBrowserStartup" + ] + } + ] + } + ], + "AvoidResourceRequestCopies": [ + { + "platforms": [ + "android", + "android_webview", + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "AvoidResourceRequestCopies" + ] + } + ] + } + ], "BFCachePerformanceManagerPolicy": [ { "platforms": [ @@ -2453,6 +2570,27 @@ ] } ], + "BlinkSchedulerPrioritizeNavigationIPCs": [ + { + "platforms": [ + "android", + "android_webview", + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "BlinkSchedulerPrioritizeNavigationIPCs" + ] + } + ] + } + ], "BlockMidiByDefault": [ { "platforms": [ @@ -2727,6 +2865,22 @@ ] } ], + "BuiltInHlsMP4": [ + { + "platforms": [ + "android", + "android_webview" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "BuiltInHlsMP4" + ] + } + ] + } + ], "ButterOnDesktopFollowup": [ { "platforms": [ @@ -3307,6 +3461,24 @@ ] } ], + "ChromeHomeFrequency": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled_4H", + "params": { + "start_surface_return_time_on_tablet_seconds": "14400" + }, + "enable_features": [ + "StartSurfaceReturnTime" + ] + } + ] + } + ], "ChromeLabs": [ { "platforms": [ @@ -3457,7 +3629,7 @@ ] } ], - "ChromeOSDocumentScanAsyncDiscovery": [ + "ChromeOSContainerAppPreinstall": [ { "platforms": [ "chromeos" @@ -3466,7 +3638,22 @@ { "name": "Enabled", "enable_features": [ - "AsynchronousScannerDiscovery" + "ContainerAppPreinstall" + ] + } + ] + } + ], + "ChromeOSGlanceablesTimeManagementClassroomStudentData": [ + { + "platforms": [ + "chromeos" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "GlanceablesTimeManagementClassroomStudentData" ] } ] @@ -3503,21 +3690,6 @@ ] } ], - "ChromeOSHWVBREncoding": [ - { - "platforms": [ - "chromeos" - ], - "experiments": [ - { - "name": "Enabled_20230922", - "enable_features": [ - "ChromeOSHWVBREncoding" - ] - } - ] - } - ], "ChromeOSHoldingSpaceWallpaperNudge": [ { "platforms": [ @@ -3653,6 +3825,21 @@ ] } ], + "ChromeOSOobeQuickStart": [ + { + "platforms": [ + "chromeos" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "OobeQuickStart" + ] + } + ] + } + ], "ChromeOSPrintingIppUsb": [ { "platforms": [ @@ -3865,6 +4052,25 @@ ] } ], + "ClankLogoPolish": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled_Large_Logo_Size", + "params": { + "polish_logo_size_large": "true", + "polish_logo_size_medium": "false" + }, + "enable_features": [ + "LogoPolish" + ] + } + ] + } + ], "ClankMagicStack": [ { "platforms": [ @@ -3907,6 +4113,25 @@ ] } ], + "ClientSideDetectionDebuggingMetadataCache": [ + { + "platforms": [ + "android", + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "ClientSideDetectionDebuggingMetadataCache" + ] + } + ] + } + ], "ClientSideDetectionImagesCache": [ { "platforms": [ @@ -4058,6 +4283,21 @@ ] } ], + "CollectAndroidFrameTimelineMetricsWebviewStudy": [ + { + "platforms": [ + "android_webview" + ], + "experiments": [ + { + "name": "Enabled_20240320", + "enable_features": [ + "CollectAndroidFrameTimelineMetrics" + ] + } + ] + } + ], "Collections": [ { "platforms": [ @@ -4336,6 +4576,28 @@ ] } ], + "CompressionDictionaryTransport": [ + { + "platforms": [ + "android", + "android_webview", + "chromeos", + "chromeos_lacros", + "fuchsia", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "CompressionDictionaryTransport" + ] + } + ] + } + ], "CompressionDictionaryTransportOverHttp1": [ { "platforms": [ @@ -4356,12 +4618,12 @@ ] } ], - "CompressionDictionaryTransportRequireKnownRootCert": [ + "ConditionallySkipGpuChannelFlush": [ { "platforms": [ "android", - "chromeos", - "chromeos_lacros", + "android_webview", + "fuchsia", "linux", "mac", "windows" @@ -4370,7 +4632,7 @@ { "name": "Enabled", "enable_features": [ - "CompressionDictionaryTransportRequireKnownRootCert" + "ConditionallySkipGpuChannelFlush" ] } ] @@ -4416,29 +4678,6 @@ ] } ], - "ContentSettingsIndex": [ - { - "platforms": [ - "android", - "android_webview", - "chromeos", - "chromeos_lacros", - "fuchsia", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled_20240207", - "enable_features": [ - "HostIndexedMetadataGrants", - "IndexedHostContentSettingsMap" - ] - } - ] - } - ], "CookieAccessDetailsNotificationDeDuping": [ { "platforms": [ @@ -4537,6 +4776,65 @@ ] } ], + "CopyClientKeysCertsToChaps": [ + { + "platforms": [ + "chromeos" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "CopyClientKeysCertsToChaps" + ] + } + ] + } + ], + "CpssStringChange": [ + { + "platforms": [ + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "NewStringWithHats_20240221", + "params": { + "probability": "1.0", + "probability_vector": "0.3,0.7", + "prompt_disposition_filter": "LocationBarLeftQuietChip", + "prompt_disposition_reason_filter": "OnDevicePredictionModel,PredictionService", + "request_type_filter": "Notifications,Geolocation", + "survey_display_time": "OnPromptAppearing", + "trigger_id": "TfmwCkztT0ugnJ3q1cK0URBBSdir,FohGLzZdE0ugnJ3q1cK0QyypEaVo" + }, + "enable_features": [ + "CpssQuietChipTextUpdate", + "PermissionsPromptSurvey" + ] + } + ] + } + ], + "CrOSBluetoothA2dpAacCodec": [ + { + "platforms": [ + "chromeos" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "CrOSLateBootAudioA2DPAdvancedCodecs" + ] + } + ] + } + ], "CrOSBluetoothCoredump": [ { "platforms": [ @@ -4725,24 +5023,6 @@ ] } ], - "CrOSHibernate": [ - { - "platforms": [ - "chromeos" - ], - "experiments": [ - { - "name": "Enabled12Hrs_20231128", - "params": { - "HibernateAfterTimeHours": "12" - }, - "enable_features": [ - "CrOSSuspendToDisk" - ] - } - ] - } - ], "CrOSLateBootAllowFirmwareDumps": [ { "platforms": [ @@ -4906,21 +5186,6 @@ ] } ], - "CrOSLateBootSuspendToHibernate": [ - { - "platforms": [ - "chromeos" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "CrOSLateBootSuspendToHibernate" - ] - } - ] - } - ], "CrOSLateBootSwapZramCompAlgorithm": [ { "platforms": [ @@ -4972,7 +5237,7 @@ ], "experiments": [ { - "name": "EnabledGroupB_20240104", + "name": "EnabledGroup_20240401", "params": { "backoff_time_sec": "600", "idle_max_time_sec": "90000", @@ -5021,6 +5286,15 @@ "LauncherSearchControl", "ProductivityLauncherImageSearch" ] + }, + { + "name": "Enabled_ocronly", + "enable_features": [ + "LauncherImageSearch", + "LauncherImageSearchOcr", + "LauncherSearchControl", + "ProductivityLauncherImageSearch" + ] } ] } @@ -5198,6 +5472,22 @@ ] } ], + "CursorAnchorInfoMojoPipe": [ + { + "platforms": [ + "android", + "android_webview" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "CursorAnchorInfoMojoPipe" + ] + } + ] + } + ], "CustomizeChromeSidePanelExtensionsCard": [ { "platforms": [ @@ -5232,26 +5522,6 @@ ] } ], - "DIPSPreservePSData": [ - { - "platforms": [ - "android", - "chromeos", - "chromeos_lacros", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "DIPSPreservePSData" - ] - } - ] - } - ], "DIPSStatefulBounceEnforcement": [ { "platforms": [ @@ -5275,6 +5545,27 @@ ] } ], + "DOMParserIncludeShadowRoots": [ + { + "platforms": [ + "android", + "chromeos", + "chromeos_lacros", + "fuchsia", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Disabled", + "disable_features": [ + "DOMParserIncludeShadowRoots" + ] + } + ] + } + ], "DXGIWaitableSwapChain": [ { "platforms": [ @@ -5385,6 +5676,31 @@ ] } ], + "DefaultBrowserPromptRefreshLaunch": [ + { + "platforms": [ + "windows" + ], + "experiments": [ + { + "name": "Enabled1", + "params": { + "group_name": "enabled-arm-1", + "max_prompt_count": "5", + "reprompt_duration": "7d", + "reprompt_duration_multiplier ": "2", + "show_app_menu_chip": "false", + "show_info_bar": "true", + "updated_info_bar_copy": "true" + }, + "enable_features": [ + "DefaultBrowserPromptRefresh", + "DefaultBrowserPromptRefreshTrial" + ] + } + ] + } + ], "DefaultGpuDiskCacheSize": [ { "platforms": [ @@ -5733,6 +6049,25 @@ ] } ], + "DesktopOmniboxMLScoringWithCaching": [ + { + "platforms": [ + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "MlUrlScoreCaching" + ] + } + ] + } + ], "DesktopOmniboxMLScoringWithLinearMapping": [ { "platforms": [ @@ -5818,6 +6153,25 @@ ] } ], + "DesktopOmniboxStarterPackExpansion": [ + { + "platforms": [ + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "StarterPackExpansion" + ] + } + ] + } + ], "DesktopOmnibox_HistoryQuickProviderSpecificity": [ { "platforms": [ @@ -5871,6 +6225,23 @@ ] } ], + "DesktopWebAppUniversalInstallExperiment": [ + { + "platforms": [ + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "WebAppUniversalInstallExperiment", + "enable_features": [ + "WebAppUniversalInstall" + ] + } + ] + } + ], "DestroyProfileOnBrowserClose": [ { "platforms": [ @@ -5941,6 +6312,12 @@ "experiments": [ { "name": "Enabled_Dogfood", + "params": { + "aida_api_key": "someRandomAPIKey", + "aida_endpoint": "https://www.example.com/aida", + "aida_model_id": "aida_model_id", + "aida_scope": "https://www.example.com/auth/" + }, "enable_features": [ "DevToolsConsoleInsightsDogfood" ] @@ -6004,6 +6381,21 @@ ] } ], + "DipsOnForegroundSequence": [ + { + "platforms": [ + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "DipsOnForegroundSequence" + ] + } + ] + } + ], "DisableBlackHoleOnNoNewNetwork": [ { "platforms": [ @@ -6020,25 +6412,6 @@ ] } ], - "DisableCompressParkableStrings": [ - { - "platforms": [ - "chromeos", - "chromeos_lacros", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Disabled", - "disable_features": [ - "CompressParkableStrings" - ] - } - ] - } - ], "DisableGles2ForOopR": [ { "platforms": [ @@ -6057,6 +6430,22 @@ ] } ], + "DisableHangWatcherAndroid": [ + { + "platforms": [ + "android", + "android_webview" + ], + "experiments": [ + { + "name": "Disabled", + "disable_features": [ + "EnableHangWatcher" + ] + } + ] + } + ], "DisableUrgentPageDiscarding": [ { "platforms": [ @@ -6107,7 +6496,7 @@ { "name": "DoNotDiscard", "params": { - "distance": "2147483647", + "distance_factor": "100000.", "time_ms": "0" }, "enable_features": [ @@ -6115,10 +6504,10 @@ ] }, { - "name": "50_Pixels_1000_Ms", + "name": "50_250_ms", "params": { - "distance": "50", - "time_ms": "1000" + "distance_factor": ".5", + "time_ms": "250" }, "enable_features": [ "DiscardInputEventsToRecentlyMovedFrames" @@ -6327,6 +6716,21 @@ ] } ], + "DynamicCrxDownloaderPriority": [ + { + "platforms": [ + "mac" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "DynamicCrxDownloaderPriority" + ] + } + ] + } + ], "DynamicScrollCullRectExpansion": [ { "platforms": [ @@ -6349,7 +6753,7 @@ ] } ], - "DynamicTopChrome": [ + "EdgeToEdgeAndroid": [ { "platforms": [ "android" @@ -6357,38 +6761,9 @@ "experiments": [ { "name": "Enabled", - "params": { - "use_toolbar_bg_color_for_strip_transition_scrim": "true" - }, "enable_features": [ - "DynamicTopChrome" - ] - } - ] - } - ], - "ESBIPHPromoOnDownloads": [ - { - "platforms": [ - "chromeos", - "chromeos_lacros", - "fuchsia", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "params": { - "availability": "any", - "event_1": "name:download_bubble_dangerous_download_detected;comparator:>=1;window:21;storage:360", - "event_trigger": "name:download_bubble_esb_iph_trigger;comparator:==0;window:360;storage:360", - "event_used": "name:enable_enhanced_protection;comparator:==0;window:21;storage:360", - "session_rate": "any" - }, - "enable_features": [ - "IPH_DownloadEsbPromo" + "DrawCutoutEdgeToEdge", + "DrawEdgeToEdge" ] } ] @@ -6411,6 +6786,21 @@ ] } ], + "EnableADPFGpuCompositorThread": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "EnableADPFGpuCompositorThread" + ] + } + ] + } + ], "EnableADPFRendererMain": [ { "platforms": [ @@ -6461,6 +6851,36 @@ ] } ], + "EnableBatchVideoDecodingInRenderer": [ + { + "platforms": [ + "chromeos" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "VideoDecodeBatching" + ] + } + ] + } + ], + "EnableBookmarkFoldersForAccountStorage": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "EnableBookmarkFoldersForAccountStorage" + ] + } + ] + } + ], "EnableConfigurableThreadCacheMultiplier": [ { "platforms": [ @@ -6596,16 +7016,20 @@ ] } ], - "EnableMojoJSProtectedMemory": [ + "EnableModelExecutionAPI": [ { "platforms": [ + "android", + "chromeos", + "linux", + "mac", "windows" ], "experiments": [ { "name": "Enabled", "enable_features": [ - "EnableMojoJSProtectedMemory" + "EnableModelExecutionAPI" ] } ] @@ -6700,6 +7124,22 @@ ] } ], + "EnablePkcs12ToChapsDualWrite": [ + { + "platforms": [ + "chromeos", + "chromeos_lacros" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "EnablePkcs12ToChapsDualWrite" + ] + } + ] + } + ], "EnableReportingMultigenerationStorage": [ { "platforms": [ @@ -6733,25 +7173,6 @@ ] } ], - "EnableShoppingListDesktop": [ - { - "platforms": [ - "chromeos", - "chromeos_lacros", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled_20221005", - "enable_features": [ - "ShoppingList" - ] - } - ] - } - ], "EnableShoppingListIOSM119": [ { "platforms": [ @@ -6819,6 +7240,42 @@ ] } ], + "EnsureExistingRendererAlive": [ + { + "platforms": [ + "android", + "android_webview", + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "EnsureExistingRendererAlive" + ] + } + ] + } + ], + "EnterprisePolicyOnSignin": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "EnterprisePolicyOnSignin" + ] + } + ] + } + ], "EventTimingFallbackToModalDialogStart": [ { "platforms": [ @@ -6842,6 +7299,29 @@ ] } ], + "EventTimingHandleOrphanPointerup": [ + { + "platforms": [ + "android", + "chromeos", + "chromeos_lacros", + "fuchsia", + "linux", + "mac", + "windows", + "android_webview", + "android_weblayer" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "EventTimingHandleOrphanPointerup" + ] + } + ] + } + ], "EventTimingKeypressAndCompositionInteractionId": [ { "platforms": [ @@ -6865,6 +7345,29 @@ ] } ], + "ExcludeTransparentTextsFromBeingLcpEligible": [ + { + "platforms": [ + "android", + "chromeos", + "chromeos_lacros", + "fuchsia", + "linux", + "mac", + "windows", + "android_webview", + "android_weblayer" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "ExcludeTransparentTextsFromBeingLcpEligible" + ] + } + ] + } + ], "ExpandCompositedCullRect": [ { "platforms": [ @@ -7043,6 +7546,35 @@ ] } ], + "ExtremeLightweightUAFDetector": [ + { + "platforms": [ + "android", + "android_weblayer", + "android_webview", + "chromeos", + "chromeos_lacros", + "fuchsia", + "ios", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "BrowserProcessOnly", + "params": { + "quarantine_capacity_in_bytes": "1048576", + "sampling_frequency": "100", + "target_processes": "browser_only" + }, + "enable_features": [ + "ExtremeLightweightUAFDetector" + ] + } + ] + } + ], "FLEDGEBiddingAndAuctionServer": [ { "platforms": [ @@ -7282,6 +7814,26 @@ ] } ], + "FencedFramesEnableCrossOriginEventReporting": [ + { + "platforms": [ + "android", + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "FencedFramesCrossOriginEventReporting" + ] + } + ] + } + ], "FencedFramesEnableM120Features": [ { "platforms": [ @@ -7326,6 +7878,33 @@ ] } ], + "FenderLcpInfluencerScriptsPriority": [ + { + "platforms": [ + "android", + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "VeryHighPriorityForScriptAndLcpImage_20240215", + "params": { + "lcpscriptobserver_adjust_image_load_priority": "true", + "lcpscriptobserver_image_load_priority": "very_high", + "lcpscriptobserver_script_load_priority": "very_high", + "lcpscriptobserver_script_max_url_count_per_origin": "5", + "lcpscriptobserver_script_max_url_length": "1024" + }, + "enable_features": [ + "LCPScriptObserver" + ] + } + ] + } + ], "FenderScriptScheduling": [ { "platforms": [ @@ -7417,6 +7996,25 @@ ] } ], + "FixDataPipeTrapBug": [ + { + "platforms": [ + "android", + "android_webview", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Disabled", + "disable_features": [ + "FixDataPipeTrapBug" + ] + } + ] + } + ], "FixInputQueueingBug": [ { "platforms": [ @@ -7536,6 +8134,41 @@ ] } ], + "ForestFeature": [ + { + "platforms": [ + "chromeos", + "chromeos_lacros" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "ForestFeature" + ] + }, + { + "name": "EnabledWithoutWeather", + "enable_features": [ + "ForestFeature" + ], + "disable_features": [ + "BirchWeather" + ] + }, + { + "name": "EnabledWithWeatherProdEndpoint", + "params": { + "prod_weather_endpoint": "true" + }, + "enable_features": [ + "BirchWeather", + "ForestFeature" + ] + } + ] + } + ], "FormControlsVerticalWritingModeDirectionSupport": [ { "platforms": [ @@ -7691,6 +8324,37 @@ ] } ], + "GamingPerksStudy": [ + { + "platforms": [ + "chromeos" + ], + "experiments": [ + { + "name": "Notification_20240320", + "params": { + "IPH_ScalableIphGaming_availability": ">=0", + "IPH_ScalableIphGaming_event_1": "name:ScalableIphGameWindowOpened;comparator:>0;window:365;storage:365", + "IPH_ScalableIphGaming_event_trigger": "name:IphScalableIphGamingEventTrigger;comparator:==0;window:365;storage:365", + "IPH_ScalableIphGaming_event_used": "name:IphScalableIphGamingEventUsed;comparator:any;window:365;storage:365", + "IPH_ScalableIphGaming_session_rate": "<1", + "IPH_ScalableIphGaming_x_CustomButtonActionType": "PerksMinecraftRealms2023", + "IPH_ScalableIphGaming_x_CustomConditionTriggerEvent": "ScalableIphUnlocked", + "IPH_ScalableIphGaming_x_CustomNotificationBodyText": "", + "IPH_ScalableIphGaming_x_CustomNotificationButtonText": "Get perk", + "IPH_ScalableIphGaming_x_CustomNotificationId": "scalable_iph_gaming", + "IPH_ScalableIphGaming_x_CustomNotificationImageType": "Minecraft", + "IPH_ScalableIphGaming_x_CustomNotificationTitle": "Get 3 months of Minecraft Realms+ at no cost on your Chromebook", + "IPH_ScalableIphGaming_x_CustomUiType": "Notification", + "IPH_ScalableIphGaming_x_CustomVersionNumber": "1" + }, + "enable_features": [ + "IPH_ScalableIphGaming" + ] + } + ] + } + ], "GenGpuDiskCacheKeyPrefixInGpuService": [ { "platforms": [ @@ -8020,24 +8684,6 @@ ] } ], - "GridTabSwitcherAndroidAnimations": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "Enabled", - "params": { - "animation_start_timeout_ms": "300" - }, - "enable_features": [ - "GridTabSwitcherAndroidAnimations" - ] - } - ] - } - ], "GwpAsanLinux": [ { "platforms": [ @@ -8540,7 +9186,7 @@ "name": "EnabledInGPUAndNetwork", "params": { "gpu-process-params": "{\"is-supported\":true,\"nonstable-probability\":1,\"sampling-rate\":5000000,\"stable-probability\":1}", - "network-process-params": "{\"is-supported\":true}", + "network-process-params": "{\"is-supported\":true,\"nonstable-probability\":1,\"sampling-rate\":10000000,\"stable-probability\":1}", "renderer-process-params": "{\"is-supported\":false}", "utility-process-params": "{\"is-supported\":false}" }, @@ -8670,27 +9316,6 @@ ] } ], - "HighestRequestPriorityForClassifyUrl": [ - { - "platforms": [ - "android", - "chromeos", - "chromeos_lacros", - "ios", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled_20231129", - "enable_features": [ - "HighestRequestPriorityForClassifyUrl" - ] - } - ] - } - ], "HitTestOpaqueness": [ { "platforms": [ @@ -8772,17 +9397,25 @@ { "platforms": [ "android", + "android_weblayer", + "android_webview", "chromeos", "chromeos_lacros", + "fuchsia", + "ios", "linux", "mac", "windows" ], "experiments": [ { - "name": "Enabled_20240115", + "name": "WithReadAndDiscardBody_20240328", + "params": { + "http_disk_cache_prewarming_use_read_and_discard_body_option": "true" + }, "enable_features": [ - "HttpDiskCachePrewarming" + "HttpDiskCachePrewarming", + "SimpleURLLoaderUseReadAndDiscardBodyOption" ] } ] @@ -8928,7 +9561,7 @@ ], "experiments": [ { - "name": "Enabled_20240305", + "name": "Enabled_FFR_20240409", "params": { "IOSDockingPromoExperimentType": "1", "IOSDockingPromoNewUserInactiveThresholdHours": "24", @@ -8939,7 +9572,16 @@ ] }, { - "name": "Enabled_Beta_20240222", + "name": "Enabled_FRE_20240409", + "params": { + "IOSDockingPromoExperimentType": "2" + }, + "enable_features": [ + "IOSDockingPromo" + ] + }, + { + "name": "Enabled_Beta_FFR_20240409", "params": { "IOSDockingPromoExperimentType": "1", "IOSDockingPromoNewUserInactiveThresholdHours": "12", @@ -8950,7 +9592,16 @@ ] }, { - "name": "Enabled_Canary_Dev_20240222", + "name": "Enabled_Beta_FRE_20240409", + "params": { + "IOSDockingPromoExperimentType": "2" + }, + "enable_features": [ + "IOSDockingPromo" + ] + }, + { + "name": "Enabled_Canary_Dev_FFR_20240409", "params": { "IOSDockingPromoExperimentType": "1", "IOSDockingPromoNewUserInactiveThresholdHours": "6", @@ -8959,6 +9610,30 @@ "enable_features": [ "IOSDockingPromo" ] + }, + { + "name": "Enabled_Canary_Dev_FRE_20240409", + "params": { + "IOSDockingPromoExperimentType": "2" + }, + "enable_features": [ + "IOSDockingPromo" + ] + } + ] + } + ], + "IOSEnableColorLensAndVoiceIconsInHomeScreenWidget": [ + { + "platforms": [ + "ios" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "kEnableColorLensAndVoiceIconsInHomeScreenWidget" + ] } ] } @@ -9016,6 +9691,9 @@ "experiments": [ { "name": "Enabled", + "params": { + "HomeModuleMinimumPadding": "8" + }, "enable_features": [ "EnableFeedContainment" ] @@ -9094,49 +9772,18 @@ ], "experiments": [ { - "name": "Share_20240222", + "name": "History", "params": { "availability": "any", - "event_1": "name:share_toolbar_item_trigger;comparator:<2;window:365;storage:365", - "event_trigger": "name:share_toolbar_item_trigger;comparator:<1;window:7;storage:7", - "event_used": "name:share_toolbar_item_used;comparator:<1;window:3650;storage:3650", + "event_1": "name:history_on_overflow_menu_trigger;comparator:<2;window:365;storage:365", + "event_trigger": "name:history_on_overflow_menu_trigger;comparator:<1;window:7;storage:7", + "event_used": "name:history_on_overflow_menu_used;comparator:<1;window:3650;storage:3650", "session_rate": "<1" }, "enable_features": [ "IPHForSafariSwitcher", - "IPH_iOSShareToolbarItemFeature" - ], - "disable_features": [ "IPH_iOSHistoryOnOverflowMenuFeature" ] - }, - { - "name": "Share_Tracking_Only_20240222", - "params": { - "availability": "any", - "event_1": "name:share_toolbar_item_trigger;comparator:<2;window:365;storage:365", - "event_trigger": "name:share_toolbar_item_would_trigger;comparator:<1;window:7;storage:7", - "event_used": "name:share_toolbar_item_used;comparator:<1;window:3650;storage:3650", - "session_rate": "<1", - "tracking_only": "true" - }, - "enable_features": [ - "IPHForSafariSwitcher", - "IPH_iOSShareToolbarItemFeature" - ], - "disable_features": [ - "IPH_iOSHistoryOnOverflowMenuFeature" - ] - }, - { - "name": "History_20240222", - "enable_features": [ - "IPHForSafariSwitcher", - "IPH_iOSHistoryOnOverflowMenuFeature" - ], - "disable_features": [ - "IPH_iOSShareToolbarItemFeature" - ] } ] } @@ -9156,21 +9803,6 @@ ] } ], - "IOSLargeFakebox": [ - { - "platforms": [ - "ios" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "IOSLargeFakebox" - ] - } - ] - } - ], "IOSLogApplicationStorageSizeMetrics": [ { "platforms": [ @@ -9186,6 +9818,21 @@ ] } ], + "IOSMagicStackCollectionView": [ + { + "platforms": [ + "ios" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "IOSMagicStackCollectionView" + ] + } + ] + } + ], "IOSMeasurementExperience": [ { "platforms": [ @@ -9264,21 +9911,6 @@ ] } ], - "IOSPasswordBottomSheet": [ - { - "platforms": [ - "ios" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "IOSPasswordBottomSheet" - ] - } - ] - } - ], "IOSSaveToDrive": [ { "platforms": [ @@ -9309,21 +9941,6 @@ ] } ], - "IOSSessionRestorationSessionIDCheck": [ - { - "platforms": [ - "ios" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "SessionRestorationSessionIDCheck" - ] - } - ] - } - ], "IOSSharedHighlightingColorChange": [ { "platforms": [ @@ -9370,7 +9987,37 @@ ] } ], - "IOSTabPickup": [ + "IOSTabGroupInGridiPad": [ + { + "platforms": [ + "ios" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "TabGroupsIPad" + ] + } + ] + } + ], + "IOSTabGroupInGridiPhone": [ + { + "platforms": [ + "ios" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "TabGroupsInGrid" + ] + } + ] + } + ], + "IOSTabResumption": [ { "platforms": [ "ios" @@ -9403,6 +10050,21 @@ ] } ], + "IOSUnifiedBookmarkModel": [ + { + "platforms": [ + "ios" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "EnableBookmarkFoldersForAccountStorage" + ] + } + ] + } + ], "IOSUseUserDefaultsForExitedCleanlyBeacon": [ { "platforms": [ @@ -9418,22 +10080,6 @@ ] } ], - "IOSUserPolicy": [ - { - "platforms": [ - "ios" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "ShowUserPolicyNotificationAtStartupIfNeeded", - "UserPolicyForSigninAndNoSyncConsentLevel" - ] - } - ] - } - ], "IOSWebChannels": [ { "platforms": [ @@ -9522,37 +10168,21 @@ ] } ], - "IdentifiabilityStudyMetaExperiment": [ + "ImageDescriptionsAlternativeRouting": [ { "platforms": [ "android", "chromeos", "chromeos_lacros", - "fuchsia", "linux", "mac", "windows" ], - "experiments": [ - { - "name": "EnableMetaExperiment", - "enable_features": [ - "IdentifiabilityStudyMetaExperiment" - ] - } - ] - } - ], - "IdleTimeoutPolicies": [ - { - "platforms": [ - "ios" - ], "experiments": [ { "name": "Enabled", "enable_features": [ - "IdleTimeout" + "ImageDescriptionsAlternativeRouting" ] } ] @@ -9746,6 +10376,30 @@ ] } ], + "IndexedDBShardBackingStores": [ + { + "platforms": [ + "windows", + "mac", + "chromeos", + "chromeos_lacros", + "fuchsia", + "linux", + "ios", + "android", + "android_weblayer", + "android_webview" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "IndexedDBShardBackingStores" + ] + } + ] + } + ], "InputDeviceSettingsSplit": [ { "platforms": [ @@ -9762,6 +10416,21 @@ ] } ], + "InputStreamOptimizations": [ + { + "platforms": [ + "android_webview" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "InputStreamOptimizations" + ] + } + ] + } + ], "InsecureFormSubmissionInterstitial": [ { "platforms": [ @@ -9831,21 +10500,6 @@ ] } ], - "InvalidateLocalSurfaceIdPreCommit": [ - { - "platforms": [ - "android_webview" - ], - "experiments": [ - { - "name": "Enabled_20240305", - "enable_features": [ - "InvalidateLocalSurfaceIdPreCommit" - ] - } - ] - } - ], "IsolateSandboxedIframes": [ { "platforms": [ @@ -9869,6 +10523,23 @@ ] } ], + "IsolatedWebApps": [ + { + "platforms": [ + "chromeos", + "chromeos_lacros" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "IsolatedWebAppAutomaticUpdates", + "IsolatedWebApps" + ] + } + ] + } + ], "JourneysOnDeviceClusteringContentClustering": [ { "platforms": [ @@ -9910,6 +10581,13 @@ "enable_features": [ "KeepAliveInBrowserMigration" ] + }, + { + "name": "AttributionReportingInBrowserMigration", + "enable_features": [ + "AttributionReportingInBrowserMigration", + "KeepAliveInBrowserMigration" + ] } ] } @@ -10111,6 +10789,29 @@ ] } ], + "LCPPMultipleKey": [ + { + "platforms": [ + "android", + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "params": { + "lcpp_multiple_key_max_path_length": "15" + }, + "enable_features": [ + "LCPPMultipleKey" + ] + } + ] + } + ], "LCPTimingPredictorPrerender2": [ { "platforms": [ @@ -10161,6 +10862,22 @@ ] } ], + "LargeFakeboxWithColorIconsIOS": [ + { + "platforms": [ + "ios" + ], + "experiments": [ + { + "name": "LargeFakeboxWithColorIcons", + "enable_features": [ + "IOSLargeFakebox", + "OmniboxColorIcons" + ] + } + ] + } + ], "LauncherGameSearchStudy": [ { "platforms": [ @@ -10294,6 +11011,22 @@ ] } ], + "LiveCaptionChromeOS2": [ + { + "platforms": [ + "chromeos" + ], + "experiments": [ + { + "name": "Enabled_2024_04_15", + "enable_features": [ + "CrosExpandSodaLanguages", + "LiveCaptionMultiLanguage" + ] + } + ] + } + ], "LiveCaptionExperimentalLanguages": [ { "platforms": [ @@ -10445,6 +11178,28 @@ ] } ], + "LowerHighResolutionTimerThreshold": [ + { + "platforms": [ + "android", + "android_webview", + "chromeos", + "chromeos_lacros", + "fuchsia", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "LowerHighResolutionTimerThreshold" + ] + } + ] + } + ], "MacAllowBackgroundingRenderProcesses": [ { "platforms": [ @@ -10460,6 +11215,33 @@ ] } ], + "MacEfficientFileFlush": [ + { + "platforms": [ + "mac" + ], + "experiments": [ + { + "name": "EnabledFsyncOnly", + "params": { + "MacEfficientFileFlushUseBarrier": "false" + }, + "enable_features": [ + "MacEfficientFileFlush" + ] + }, + { + "name": "EnabledBarrierFsync", + "params": { + "MacEfficientFileFlushUseBarrier": "true" + }, + "enable_features": [ + "MacEfficientFileFlush" + ] + } + ] + } + ], "MacImmersiveFullscreen": [ { "platforms": [ @@ -10493,6 +11275,37 @@ ] } ], + "MagicStackRemoveGradientView": [ + { + "platforms": [ + "ios" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "MagicStackRemoveGradientView" + ] + } + ] + } + ], + "MahiEnabled": [ + { + "platforms": [ + "chromeos", + "chromeos_lacros" + ], + "experiments": [ + { + "name": "MahiEnabled", + "enable_features": [ + "Mahi" + ] + } + ] + } + ], "MainThreadCompositingPriority": [ { "platforms": [ @@ -10983,13 +11796,12 @@ ], "experiments": [ { - "name": "LowDeadlineWithPreconnect", + "name": "LowDeadlineWithPreconnect_20240411", "params": { "MinorModeRestrictionsFetchDeadlineMs": "400" }, "enable_features": [ - "MinorModeRestrictionsForHistorySyncOptIn", - "PreconnectAccountCapabilitiesBeforeSignIn" + "MinorModeRestrictionsForHistorySyncOptIn" ] } ] @@ -11004,7 +11816,7 @@ { "name": "LowDeadline", "params": { - "MinorModeRestrictionsFetchDeadlineMs": "400" + "MinorModeRestrictionsFetchDeadlineMs": "1000" }, "enable_features": [ "MinorModeRestrictionsForHistorySyncOptIn" @@ -11013,64 +11825,20 @@ ] } ], - "MiracleParameterForAndroid": [ + "MmapSafeBrowsingDatabase": [ { "platforms": [ - "android" + "ios" ], "experiments": [ { - "name": "Combined_20231205", + "name": "Enabled_20240116", "params": { - "PartitionAllocLargeThreadCacheSizeValueForLowRAMAndroidFor1GBTo2GB": "1024", - "PartitionAllocLargeThreadCacheSizeValueForLowRAMAndroidFor2GBTo4GB": "1024", - "PartitionAllocLargeThreadCacheSizeValueForLowRAMAndroidFor512MBTo1GB": "256", - "PartitionAllocLargeThreadCacheSizeValueForLowRAMAndroidForLessThan512MB": "512", - "ThreadCacheDefaultPurgeIntervalFor16GBAndAbove": "2s", - "ThreadCacheDefaultPurgeIntervalFor1GBTo2GB": "10s", - "ThreadCacheDefaultPurgeIntervalFor2GBTo4GB": "30s", - "ThreadCacheDefaultPurgeIntervalFor4GBTo8GB": "2s", - "ThreadCacheDefaultPurgeIntervalFor512MBTo1GB": "2s", - "ThreadCacheDefaultPurgeIntervalFor8GBTo16GB": "2s", - "ThreadCacheDefaultPurgeIntervalForLessThan512MB": "2s", - "ThreadCacheMaxPurgeIntervaFor16GBAndAbove": "60s", - "ThreadCacheMaxPurgeIntervaFor1GBTo2GB": "60s", - "ThreadCacheMaxPurgeIntervaFor2GBTo4GB": "60s", - "ThreadCacheMaxPurgeIntervaFor4GBTo8GB": "120s", - "ThreadCacheMaxPurgeIntervaFor512MBTo1GB": "60s", - "ThreadCacheMaxPurgeIntervaFor8GBTo16GB": "60s", - "ThreadCacheMaxPurgeIntervaForLessThan512MB": "60s", - "ThreadCacheMinPurgeIntervalFor16GBAndAbove": "1s", - "ThreadCacheMinPurgeIntervalFor1GBTo2GB": "5s", - "ThreadCacheMinPurgeIntervalFor2GBTo4GB": "2s", - "ThreadCacheMinPurgeIntervalFor4GBTo8GB": "1s", - "ThreadCacheMinPurgeIntervalFor512MBTo1GB": "1s", - "ThreadCacheMinPurgeIntervalFor8GBTo16GB": "1s", - "ThreadCacheMinPurgeIntervalForLessThan512MB": "1s", - "default-parser-budgetFor16GBAndAbove": "200ms", - "default-parser-budgetFor1GBTo2GB": "10ms", - "default-parser-budgetFor2GBTo4GB": "10ms", - "default-parser-budgetFor4GBTo8GB": "10ms", - "default-parser-budgetFor512MBTo1GB": "10ms", - "default-parser-budgetFor8GBTo16GB": "10ms", - "default-parser-budgetForLessThan512MB": "10ms", - "long-parser-budgetFor16GBAndAbove": "500ms", - "long-parser-budgetFor1GBTo2GB": "50ms", - "long-parser-budgetFor2GBTo4GB": "500ms", - "long-parser-budgetFor4GBTo8GB": "100ms", - "long-parser-budgetFor512MBTo1GB": "20ms", - "long-parser-budgetFor8GBTo16GB": "100ms", - "long-parser-budgetForLessThan512MB": "50ms", - "num-yields-with-default-budgetFor16GBAndAbove": "2", - "num-yields-with-default-budgetFor1GBTo2GB": "2", - "num-yields-with-default-budgetFor2GBTo4GB": "6", - "num-yields-with-default-budgetFor4GBTo8GB": "6", - "num-yields-with-default-budgetFor512MBTo1GB": "2", - "num-yields-with-default-budgetFor8GBTo16GB": "6", - "num-yields-with-default-budgetForLessThan512MB": "2" + "MmapSafeBrowsingDatabaseAsync": "true" }, "enable_features": [ - "TimedHTMLParserBudget" + "MmapSafeBrowsingDatabase", + "SafeBrowsingOnUIThread" ] } ] @@ -11120,6 +11888,27 @@ ] } ], + "MojoFixAssociatedHandleLeak": [ + { + "platforms": [ + "android", + "android_webview", + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Disabled", + "disable_features": [ + "MojoFixAssociatedHandleLeak" + ] + } + ] + } + ], "MojoInlineMessagePayloads": [ { "platforms": [ @@ -11180,6 +11969,25 @@ ] } ], + "MojoPredictiveAllocation": [ + { + "platforms": [ + "android", + "ios", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "MojoPredictiveAllocation" + ] + } + ] + } + ], "MouseDragOnCancelledMouseMove": [ { "platforms": [ @@ -11217,6 +12025,22 @@ ] } ], + "MultiCalendarSupport": [ + { + "platforms": [ + "chromeos", + "chromeos_lacros" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "MultiCalendarSupport" + ] + } + ] + } + ], "MutationEvents": [ { "platforms": [ @@ -11259,6 +12083,24 @@ ] } ], + "NavigationPredictorIntersectionObserver": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled_20240328", + "params": { + "random_anchor_sampling_period": "1" + }, + "enable_features": [ + "NavigationPredictor" + ] + } + ] + } + ], "NearbyShareNameEnabled": [ { "platforms": [ @@ -11274,6 +12116,21 @@ ] } ], + "NearbySharingRemoveRestrictToContacts": [ + { + "platforms": [ + "chromeos" + ], + "experiments": [ + { + "name": "Enabled", + "disable_features": [ + "NearbySharingRestrictToContacts" + ] + } + ] + } + ], "NearbySharingSelfShare": [ { "platforms": [ @@ -11365,25 +12222,6 @@ ] } ], - "NewConfirmationBubbleForGeneratedPasswords": [ - { - "platforms": [ - "chromeos", - "chromeos_lacros", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "NewConfirmationBubbleForGeneratedPasswords" - ] - } - ] - } - ], "NewEvSignalsEnabled": [ { "platforms": [ @@ -11420,21 +12258,6 @@ ] } ], - "NoAppCompatClearInChildren": [ - { - "platforms": [ - "windows" - ], - "experiments": [ - { - "name": "Disabled_20231128", - "disable_features": [ - "NoAppCompatClearInChildren" - ] - } - ] - } - ], "NoPasswordSuggestionFiltering": [ { "platforms": [ @@ -11454,21 +12277,6 @@ ] } ], - "NoPreReadMainDll": [ - { - "platforms": [ - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "NoPreReadMainDll" - ] - } - ] - } - ], "NoThrottlingVisibleAgent": [ { "platforms": [ @@ -11738,6 +12546,14 @@ "windows" ], "experiments": [ + { + "name": "Enabled_Icons_Layout_HoverFill", + "enable_features": [ + "NtpRealboxCr23ExpandedStateIcons", + "NtpRealboxCr23ExpandedStateLayout", + "NtpRealboxCr23HoverFillShape" + ] + }, { "name": "Enabled_Icons_Layout", "enable_features": [ @@ -11773,6 +12589,41 @@ ] } ], + "OidcAuthProfileManagement": [ + { + "platforms": [ + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "OidcAuthProfileManagement" + ] + } + ] + } + ], + "OmitBlurEventOnElementRemoval": [ + { + "platforms": [ + "android", + "chromeos", + "chromeos_lacros", + "fuchsia", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled" + } + ] + } + ], "OmniboxBundledExperimentV1": [ { "platforms": [ @@ -12010,6 +12861,21 @@ ] } ], + "OmniboxPrefBasedConsentHelper": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "PrefBasedDataCollectionConsentHelper" + ] + } + ] + } + ], "OmniboxPrerender": [ { "platforms": [ @@ -12125,21 +12991,6 @@ ] } ], - "OmniboxShortcutBoostIOS": [ - { - "platforms": [ - "ios" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "OmniboxPopulateShortcutsDatabase" - ] - } - ] - } - ], "OmniboxShortcutsAndroid": [ { "platforms": [ @@ -12290,8 +13141,7 @@ }, "enable_features": [ "ActiveContentSettingExpiry", - "OneTimePermission", - "PermissionsPromptSurvey" + "OneTimePermission" ] }, { @@ -12307,8 +13157,7 @@ }, "enable_features": [ "ActiveContentSettingExpiry", - "OneTimePermission", - "PermissionsPromptSurvey" + "OneTimePermission" ] }, { @@ -12321,9 +13170,6 @@ "survey_display_time": "OnPromptResolved", "trigger_id": "q1b37Zevt0ugnJ3q1cK0THbqyNJ4,zZBrVcebz0ugnJ3q1cK0Q9Uo6NFQ,m42rnDDGV0ugnJ3q1cK0RDuG9CQ4" }, - "enable_features": [ - "PermissionsPromptSurvey" - ], "disable_features": [ "ActiveContentSettingExpiry", "OneTimePermission" @@ -12333,8 +13179,7 @@ "name": "Control", "disable_features": [ "ActiveContentSettingExpiry", - "OneTimePermission", - "PermissionsPromptSurvey" + "OneTimePermission" ] } ] @@ -12446,27 +13291,6 @@ ] } ], - "OpenDownloadDialog": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "OpenDownloadDialog" - ] - }, - { - "name": "Control", - "disable_features": [ - "OpenDownloadDialog" - ] - } - ] - } - ], "OptionalToolbarButton": [ { "platforms": [ @@ -12561,6 +13385,7 @@ { "name": "Enabled_20230912", "params": { + "EarlyStart": "false", "JobPrint": "true", "Sandbox": "false" }, @@ -12742,6 +13567,9 @@ "PartitionAllocBackupRefPtr": [ { "platforms": [ + "android", + "android_weblayer", + "android_webview", "chromeos", "chromeos_lacros", "fuchsia", @@ -12749,27 +13577,6 @@ "mac", "windows" ], - "experiments": [ - { - "name": "Enabled", - "params": { - "brp-mode": "enabled-in-same-slot-mode", - "enabled-processes": "all-processes" - }, - "enable_features": [ - "PartitionAllocBackupRefPtr" - ] - } - ] - } - ], - "PartitionAllocBackupRefPtrAndroid": [ - { - "platforms": [ - "android", - "android_weblayer", - "android_webview" - ], "experiments": [ { "name": "Enabled", @@ -12840,6 +13647,28 @@ ] } ], + "PartitionAllocMakeFreeNoOpOnShutdown": [ + { + "platforms": [ + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "EnabledInShutdown", + "params": { + "callsite": "in-shutdown-threads" + }, + "enable_features": [ + "PartitionAllocMakeFreeNoOpOnShutdown" + ] + } + ] + } + ], "PartitionAllocMemoryReclaimer": [ { "platforms": [ @@ -12968,6 +13797,28 @@ ] } ], + "PartitionAllocUsePoolOffsetFreelists": [ + { + "platforms": [ + "android", + "android_webview", + "chromeos", + "chromeos_lacros", + "fuchsia", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "PartitionAllocUsePoolOffsetFreelists" + ] + } + ] + } + ], "PartitionNetworkStateByNetworkAnonymizationKey": [ { "platforms": [ @@ -13018,7 +13869,7 @@ ] } ], - "PasswordGenerationExperimentBatch1": [ + "PasswordGenerationExperiment": [ { "platforms": [ "chromeos", @@ -13029,23 +13880,12 @@ "windows" ], "experiments": [ - { - "name": "EnabledWithEditPassword", - "params": { - "PasswordGenerationExperimentSurveyTriggedId": "4yPTnSKPN0ugnJ3q1cK0YJ18dkNR", - "password_generation_variation": "edit_password", - "probability": "1.0" - }, - "enable_features": [ - "PasswordGenerationExperiment" - ] - }, { "name": "EnabledWithTrustedAdvice", "params": { "PasswordGenerationExperimentSurveyTriggedId": "Vm6DB1ki50ugnJ3q1cK0SpkrheAJ", "password_generation_variation": "trusted_advice", - "probability": "1.0" + "probability": "0.25" }, "enable_features": [ "PasswordGenerationExperiment" @@ -13056,7 +13896,94 @@ "params": { "PasswordGenerationExperimentSurveyTriggedId": "sD7hmDAoo0ugnJ3q1cK0VQ2Y8p6e", "password_generation_variation": "safety_first", - "probability": "1.0" + "probability": "0.25" + }, + "enable_features": [ + "PasswordGenerationExperiment" + ] + }, + { + "name": "EnabledWithTrySomethingNew", + "params": { + "PasswordGenerationExperimentSurveyTriggedId": "6QssdASS10ugnJ3q1cK0RUK4HnYU", + "password_generation_variation": "try_something_new", + "probability": "0.25" + }, + "enable_features": [ + "PasswordGenerationExperiment" + ] + }, + { + "name": "EnabledWithConvenience", + "params": { + "PasswordGenerationExperimentSurveyTriggedId": "W23VEAHCT0ugnJ3q1cK0SaPHa9J4", + "password_generation_variation": "convenience", + "probability": "0.25" + }, + "enable_features": [ + "PasswordGenerationExperiment" + ] + }, + { + "name": "EnabledWithCrossDevice", + "params": { + "PasswordGenerationExperimentSurveyTriggedId": "fRjzkFjzZ0ugnJ3q1cK0RWYBnkGK", + "password_generation_variation": "cross_device", + "probability": "0.25" + }, + "enable_features": [ + "PasswordGenerationExperiment" + ] + }, + { + "name": "EnabledWithChunkPassword", + "params": { + "PasswordGenerationExperimentSurveyTriggedId": "gnz68PSiB0ugnJ3q1cK0Y7PcR8ix", + "password_generation_variation": "chunk_password", + "probability": "0.25" + }, + "enable_features": [ + "PasswordGenerationExperiment" + ] + }, + { + "name": "EnabledWithNudgePassword", + "params": { + "PasswordGenerationExperimentSurveyTriggedId": "B8yvCYL9f0ugnJ3q1cK0NXtJvPAJ", + "password_generation_variation": "nudge_password", + "probability": "0.25" + }, + "enable_features": [ + "PasswordGenerationExperiment" + ] + }, + { + "name": "EnabledWithEditPassword", + "params": { + "PasswordGenerationExperimentSurveyTriggedId": "4yPTnSKPN0ugnJ3q1cK0YJ18dkNR", + "password_generation_variation": "edit_password", + "probability": "0.25" + }, + "enable_features": [ + "PasswordGenerationExperiment" + ] + }, + { + "name": "EnabledWithStrongLabel", + "params": { + "PasswordGenerationExperimentSurveyTriggedId": "p4WLf1M6c0ugnJ3q1cK0YsmLdpng", + "probability": "0.25" + }, + "enable_features": [ + "PasswordGenerationExperiment", + "PasswordStrongLabel" + ] + }, + { + "name": "Baseline", + "params": { + "PasswordGenerationExperimentSurveyTriggedId": "DX4MWyX4R0ugnJ3q1cK0YjEiaErj", + "probability": "0.25" }, "enable_features": [ "PasswordGenerationExperiment" @@ -13083,21 +14010,6 @@ ] } ], - "PasswordManagerAuthOnEntryIOSV2": [ - { - "platforms": [ - "ios" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "IOSPasswordAuthOnEntryV2" - ] - } - ] - } - ], "PasswordSharing": [ { "platforms": [ @@ -13109,13 +14021,47 @@ "mac", "windows" ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "SendPasswords" + ] + } + ] + } + ], + "PasswordSharingBackendAndroid": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "SharedPasswordNotificationUI" + ] + } + ] + } + ], + "PasswordSharingBackendDesktopIOS": [ + { + "platforms": [ + "chromeos", + "chromeos_lacros", + "ios", + "linux", + "mac", + "windows" + ], "experiments": [ { "name": "Enabled", "enable_features": [ "PasswordManagerEnableReceiverService", "PasswordManagerEnableSenderService", - "SendPasswords", "SharedPasswordNotificationUI" ] } @@ -13188,6 +14134,25 @@ ] } ], + "PdfOutOfProcessIframe": [ + { + "platforms": [ + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "PdfOopif" + ] + } + ] + } + ], "PdfUseSkiaRenderer": [ { "platforms": [ @@ -13208,31 +14173,6 @@ ] } ], - "PendingBeaconAPI": [ - { - "platforms": [ - "android", - "android_weblayer", - "windows", - "mac", - "linux", - "fuchsia", - "chromeos", - "chromeos_lacros" - ], - "experiments": [ - { - "name": "EnabledOnlyForOriginTrial", - "params": { - "requires_origin_trial": "true" - }, - "enable_features": [ - "PendingBeaconAPI" - ] - } - ] - } - ], "PerProcessReclaim": [ { "platforms": [ @@ -13438,6 +14378,37 @@ ] } ], + "PreFreeze": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "OnPreFreezeTrimMemory" + ] + } + ] + } + ], + "PreReadDllBrowserProcess": [ + { + "platforms": [ + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "NoPreReadMainDll", + "PrefetchVirtualMemoryPolicy" + ] + } + ] + } + ], "PreconnectCreateNewTab": [ { "platforms": [ @@ -13477,6 +14448,29 @@ ] } ], + "PreconnectToSearchWithPrivacyModeEnabled": [ + { + "platforms": [ + "android", + "android_weblayer", + "android_webview", + "chromeos", + "chromeos_lacros", + "fuchsia", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "PreconnectToSearchWithPrivacyModeEnabled" + ] + } + ] + } + ], "PrefetchDocumentManagerEarlyCookieCopySkipped": [ { "platforms": [ @@ -13669,6 +14663,25 @@ ] } ], + "PressAndHoldEscToExitBrowserFullscreen": [ + { + "platforms": [ + "linux", + "mac", + "windows", + "chromeos", + "chromeos_lacros" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "PressAndHoldEscToExitBrowserFullscreen" + ] + } + ] + } + ], "PriceDropNtpIPH": [ { "platforms": [ @@ -13691,6 +14704,25 @@ ] } ], + "PriceTrackingDesktopExpansionStudy": [ + { + "platforms": [ + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "ShoppingList" + ] + } + ] + } + ], "PriceTrackingIconColors": [ { "platforms": [ @@ -14287,7 +15319,7 @@ { "name": "DriveRecentsWithDefaultRecency", "enable_features": [ - "LauncherContinueSectionWithRecentsRollout" + "LauncherContinueSectionWithRecentsRollout125" ] }, { @@ -14296,7 +15328,7 @@ "mix_local_and_drive": "true" }, "enable_features": [ - "LauncherContinueSectionWithRecentsRollout" + "LauncherContinueSectionWithRecentsRollout125" ] }, { @@ -14305,7 +15337,7 @@ "max_recency_in_days": "14" }, "enable_features": [ - "LauncherContinueSectionWithRecentsRollout" + "LauncherContinueSectionWithRecentsRollout125" ] }, { @@ -14314,7 +15346,7 @@ "max_recency_in_days": "30" }, "enable_features": [ - "LauncherContinueSectionWithRecentsRollout" + "LauncherContinueSectionWithRecentsRollout125" ] }, { @@ -14425,7 +15457,7 @@ ] } ], - "ProtectedAudienceEnableWALForInterestGroupStorageStudy": [ + "ProtectedAudienceMoreGroupByOriginContextsStudy": [ { "platforms": [ "android", @@ -14437,9 +15469,23 @@ ], "experiments": [ { - "name": "Enabled", + "name": "Enabled_2_Contexts", + "params": { + "GroupByOriginContextLimit": "2", + "IncludeFacilitatedTestingGroups": "true" + }, "enable_features": [ - "FledgeEnableWALForInterestGroupStorage" + "FledgeBidderWorkletGroupByOriginContextsToKeep" + ] + }, + { + "name": "Enabled_5_Contexts", + "params": { + "GroupByOriginContextLimit": "5", + "IncludeFacilitatedTestingGroups": "true" + }, + "enable_features": [ + "FledgeBidderWorkletGroupByOriginContextsToKeep" ] } ] @@ -14571,6 +15617,26 @@ ] } ], + "ProtectedAudiencesMultiBid": [ + { + "platforms": [ + "android", + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "FledgeMultiBid" + ] + } + ] + } + ], "ProtectedAudiencesReportingTimeout": [ { "platforms": [ @@ -14654,6 +15720,28 @@ ] } ], + "PsRedesign": [ + { + "platforms": [ + "linux", + "windows", + "mac", + "chromeos", + "chromeos_lacros" + ], + "experiments": [ + { + "name": "Enabled", + "params": { + "enable-toggles": "true" + }, + "enable_features": [ + "PsRedesignAdPrivacyPage" + ] + } + ] + } + ], "PushMessagingDisallowSenderIDs": [ { "platforms": [ @@ -14774,6 +15862,26 @@ ] } ], + "ReactivePrefetchAndroidDiscardBody": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "//0": "This experiment is only enabled on Android,", + "//1": "because only android has the", + "//2": "LoadingPredictorPrefetch feature enabled by", + "//3": "default. On other platforms it would conflict", + "//4": "with the ReactivePrefetchDesktop experiment.", + "name": "Enabled", + "enable_features": [ + "LoadingPredictorPrefetchUseReadAndDiscardBody" + ] + } + ] + } + ], "ReactivePrefetchDesktop": [ { "platforms": [ @@ -15075,6 +16183,21 @@ ] } ], + "RegisterAppBoundEncryptionProvider": [ + { + "platforms": [ + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "RegisterAppBoundEncryptionProvider" + ] + } + ] + } + ], "RemotePageMetadataAndroid": [ { "platforms": [ @@ -15090,6 +16213,22 @@ ] } ], + "RemotePageMetadataBling": [ + { + "platforms": [ + "ios" + ], + "experiments": [ + { + "name": "Enabled_20240402", + "enable_features": [ + "PageContentAnnotationsPersistSalientImageMetadata", + "RemotePageMetadata" + ] + } + ] + } + ], "RemotePageMetadataDesktopExpansion": [ { "platforms": [ @@ -15195,6 +16334,20 @@ "windows" ], "experiments": [ + { + "name": "EnabledSubframeWithQueueing_20240108", + "params": { + "level": "subframe", + "queueing_level": "full" + }, + "enable_features": [ + "QueueNavigationsWhileWaitingForCommit", + "RenderDocument" + ], + "disable_features": [ + "RenderDocumentCompositorReuse" + ] + }, { "name": "EnabledCrashedFrameWithQueueing_20240108", "params": { @@ -15223,20 +16376,6 @@ "RenderDocumentCompositorReuse" ] }, - { - "name": "EnabledSubframeWithQueueing_20240108", - "params": { - "level": "subframe", - "queueing_level": "full" - }, - "enable_features": [ - "QueueNavigationsWhileWaitingForCommit", - "RenderDocument" - ], - "disable_features": [ - "RenderDocumentCompositorReuse" - ] - }, { "name": "EnabledSubframeWithQueueingAndCompReuse_20240108", "params": { @@ -15266,25 +16405,6 @@ ] } ], - "RendererMainIsNormalThreadTypeForWebRTC": [ - { - "platforms": [ - "linux", - "chromeos", - "chromeos_lacros", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "RendererMainIsNormalThreadTypeForWebRTC" - ] - } - ] - } - ], "ReportCertificateErrors": [ { "platforms": [ @@ -15347,6 +16467,21 @@ ] } ], + "RestartToGainAccessToKeychain": [ + { + "platforms": [ + "linux" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "RestartToGainAccessToKeychain" + ] + } + ] + } + ], "RetryGetVideoCaptureDeviceInfos": [ { "platforms": [ @@ -15362,6 +16497,42 @@ ] } ], + "RevampPageInfoIos": [ + { + "platforms": [ + "ios" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "RevampPageInfoIos" + ] + } + ] + } + ], + "RunPerformanceManagerOnMainThreadSync": [ + { + "platforms": [ + "android", + "android_webview", + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "RunPerformanceManagerOnMainThreadSync" + ] + } + ] + } + ], "RunTasksByBatches": [ { "platforms": [ @@ -15404,6 +16575,7 @@ { "platforms": [ "android", + "android_webview", "chromeos", "chromeos_lacros", "linux", @@ -15454,36 +16626,9 @@ ] } ], - "SafeBrowsingFriendlierSettings": [ - { - "platforms": [ - "android", - "chromeos", - "chromeos_lacros", - "ios", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "FriendlierSafeBrowsingSettingsEnhancedProtection", - "FriendlierSafeBrowsingSettingsStandardProtection" - ] - } - ] - } - ], "SafeBrowsingHashPrefixRealTimeLookups": [ { "platforms": [ - "chromeos", - "chromeos_lacros", - "linux", - "mac", - "windows", "ios" ], "experiments": [ @@ -15587,6 +16732,24 @@ ] } ], + "SafetyCheckMagicStack": [ + { + "platforms": [ + "ios" + ], + "experiments": [ + { + "name": "Enabled", + "params": { + "SafetyCheckMagicStackAutorunHoursThreshold": "24" + }, + "enable_features": [ + "SafetyCheckMagicStack" + ] + } + ] + } + ], "SafetyCheckUnusedSitePermissions": [ { "platforms": [ @@ -15620,6 +16783,9 @@ "experiments": [ { "name": "Enabled", + "params": { + "background-password-check-interval": "30d" + }, "enable_features": [ "SafetyHub" ] @@ -16570,6 +17736,22 @@ ] } ], + "SchedQoS": [ + { + "platforms": [ + "chromeos" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "SchedQoSOnResourcedForChrome" + ], + "min_os_version": "15849.0.0" + } + ] + } + ], "ScreenCaptureKitMacScreen": [ { "platforms": [ @@ -16620,6 +17802,36 @@ ] } ], + "ScreencastForceEnableServerSideSpeechRecognition": [ + { + "platforms": [ + "chromeos" + ], + "experiments": [ + { + "name": "Enabled_Dogfood", + "enable_features": [ + "ForceEnableServerSideSpeechRecognitionForDev" + ] + } + ] + } + ], + "ScreencastServerBasedUSMLocales": [ + { + "platforms": [ + "chromeos" + ], + "experiments": [ + { + "name": "Enabled_Dogfood", + "enable_features": [ + "InternalServerSideSpeechRecognitionByFinch" + ] + } + ] + } + ], "SeaPen": [ { "platforms": [ @@ -16636,6 +17848,21 @@ ] } ], + "SearchEnginePromoDialogRewrite": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "SearchEnginePromoDialogRewrite" + ] + } + ] + } + ], "SearchEnginesPromoV3": [ { "platforms": [ @@ -16655,6 +17882,21 @@ ] } ], + "SearchInCCT": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "SearchInCCT" + ] + } + ] + } + ], "SearchPrefetchHighPriorityPrefetches": [ { "platforms": [ @@ -16780,7 +18022,7 @@ { "name": "Enabled", "params": { - "probability": "1", + "probability": "0.5", "security-page-time": "15s", "security-page-trigger-id": "c4dvJ3Sz70ugnJ3q1cK0SkwJZodD" }, @@ -17049,26 +18291,6 @@ ] } ], - "SharedStorageEnableWALStudy": [ - { - "platforms": [ - "android", - "chromeos", - "chromeos_lacros", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "SharedStorageAPIEnableWALForDatabase" - ] - } - ] - } - ], "SharedStorageWorkletThreadImplementation": [ { "platforms": [ @@ -17153,21 +18375,6 @@ ] } ], - "ShowNtpAtStartupAndroid": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "ShowNtpAtStartupAndroid" - ] - } - ] - } - ], "SidePanelCompanionDesktopM116Plus": [ { "platforms": [ @@ -17276,30 +18483,6 @@ ] } ], - "SimpleURLLoaderUseReadAndDiscardBodyOption": [ - { - "platforms": [ - "android", - "android_weblayer", - "android_webview", - "chromeos", - "chromeos_lacros", - "fuchsia", - "ios", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "SimpleURLLoaderUseReadAndDiscardBodyOption" - ] - } - ] - } - ], "SimplifyLoadingTransparentPlaceholderImage": [ { "platforms": [ @@ -17349,6 +18532,26 @@ ] } ], + "SingleVideoFrameRateThrottling": [ + { + "platforms": [ + "chromeos", + "chromeos_lacros", + "fuchsia", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "SingleVideoFrameRateThrottling" + ] + } + ] + } + ], "SkiaGraphite": [ { "platforms": [ @@ -17469,6 +18672,21 @@ ] } ], + "SnapshotInSwift": [ + { + "platforms": [ + "ios" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "SnapshotInSwift" + ] + } + ] + } + ], "SonomaAccessibilityActivationRefinements": [ { "platforms": [ @@ -17580,21 +18798,6 @@ ] } ], - "SpotlightIntentDonation": [ - { - "platforms": [ - "ios" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "SpotlightDonateNewIntents" - ] - } - ] - } - ], "SqlWalMode": [ { "platforms": [ @@ -17613,6 +18816,8 @@ { "name": "Enabled", "enable_features": [ + "FledgeEnableWALForInterestGroupStorage", + "SharedStorageAPIEnableWALForDatabase", "SqlWALModeOnDipsDatabase", "SqlWALModeOnSegmentationDatabase" ] @@ -17814,16 +19019,33 @@ ] } ], - "SyncShowIdentityErrorsForSignedInUsers": [ + "SysUiHoldbackStudy": [ { "platforms": [ - "android" + "chromeos" ], "experiments": [ { - "name": "Enabled", + "name": "Default", + "disable_features": [ + "SysUiShouldHoldbackGifRecording", + "SysUiShouldHoldbackTaskManagement" + ] + }, + { + "name": "SysUiHoldbackStudy", "enable_features": [ - "SyncShowIdentityErrorsForSignedInUsers" + "SysUiShouldHoldbackGifRecording", + "SysUiShouldHoldbackTaskManagement" + ] + }, + { + "name": "NoFirstPartyIntegrations", + "enable_features": [ + "SysUiShouldHoldbackTaskManagement" + ], + "disable_features": [ + "SysUiShouldHoldbackGifRecording" ] } ] @@ -17914,7 +19136,8 @@ { "name": "Enabled", "enable_features": [ - "TabGroupParityAndroid" + "TabGroupParityAndroid", + "TabStripGroupIndicatorsAndroid" ] } ] @@ -17988,6 +19211,21 @@ ] } ], + "TabSateFlatBuffer": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled_20240408", + "enable_features": [ + "TabStateFlatBuffer" + ] + } + ] + } + ], "TabSearchFuzzySearchStudy": [ { "platforms": [ @@ -18174,6 +19412,26 @@ ] } ], + "ThirdPartyCookieDeprecationMetadataStageControl": [ + { + "platforms": [ + "android", + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "TpcdMetadataStageControl" + ] + } + ] + } + ], "ThreadCacheMinCachedMemoryForPurging": [ { "platforms": [ @@ -18339,21 +19597,6 @@ ] } ], - "TimeOfDayWallpaperForcedAutoSchedule": [ - { - "platforms": [ - "chromeos" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "TimeOfDayWallpaperForcedAutoSchedule" - ] - } - ] - } - ], "TimedHTMLParserBudget": [ { "platforms": [ @@ -18378,6 +19621,45 @@ ] } ], + "TimedHTMLParserBudgetForAndroid": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "params": { + "default-parser-budgetFor2GBTo4GB": "10ms", + "default-parser-budgetFor4GBTo8GB": "10ms", + "long-parser-budgetFor2GBTo4GB": "500ms", + "long-parser-budgetFor4GBTo8GB": "100ms", + "num-yields-with-default-budgetFor2GBTo4GB": "6", + "num-yields-with-default-budgetFor4GBTo8GB": "6" + }, + "enable_features": [ + "TimedHTMLParserBudget" + ] + } + ] + } + ], + "TimerSlackMac": [ + { + "platforms": [ + "mac" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "AlignWakeUps", + "TimerSlackMac" + ] + } + ] + } + ], "TopChromeWebUIUsesSpareRenderer": [ { "platforms": [ @@ -18460,35 +19742,6 @@ ] } ], - "TrackingProtectionSentimentSurvey": [ - { - "platforms": [ - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "params": { - "probability": "1.0", - "tracking-protection-control-delayed-probability": "0.25", - "tracking-protection-control-delayed-trigger-id": "FydWYHXps0ugnJ3q1cK0PU2EPh7v", - "tracking-protection-control-immediate-probability": "0.25", - "tracking-protection-control-immediate-trigger-id": "FydWYHXps0ugnJ3q1cK0PU2EPh7v", - "tracking-protection-immediate-over-delayed-probability": "0.5", - "tracking-protection-treatment-delayed-probability": "0.25", - "tracking-protection-treatment-delayed-trigger-id": "FydWYHXps0ugnJ3q1cK0PU2EPh7v", - "tracking-protection-treatment-immediate-probability": "0.25", - "tracking-protection-treatment-immediate-trigger-id": "FydWYHXps0ugnJ3q1cK0PU2EPh7v" - }, - "enable_features": [ - "TrackingProtectionSentimentSurvey" - ] - } - ] - } - ], "TrackpadDropdownMenu": [ { "platforms": [ @@ -18691,6 +19944,21 @@ ] } ], + "UIPumpImprovementsWin": [ + { + "platforms": [ + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "UIPumpImprovementsWin" + ] + } + ] + } + ], "UMA-NonUniformity-Trial-1-Percent": [ { "platforms": [ @@ -18752,8 +20020,10 @@ { "name": "Enabled", "enable_features": [ + "ClearLoginDatabaseForUPMUsers", "UnifiedPasswordManagerLocalPasswordsAndroidNoMigration", - "UnifiedPasswordManagerLocalPasswordsAndroidWithMigration" + "UnifiedPasswordManagerLocalPasswordsAndroidWithMigration", + "UnifiedPasswordManagerSyncOnlyInGMSCore" ] } ] @@ -19008,6 +20278,66 @@ ] } ], + "UseGpuSchedulerDfs": [ + { + "platforms": [ + "android", + "android_webview" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "UseGpuSchedulerDfs" + ] + } + ] + } + ], + "UseMoveNotCopyInAXTreeCombiner": [ + { + "platforms": [ + "android", + "android_webview", + "chromeos", + "chromeos_lacros", + "ios", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "UseMoveNotCopyInAXTreeCombiner" + ] + } + ] + } + ], + "UseMoveNotCopyInMergeTreeUpdate": [ + { + "platforms": [ + "android", + "android_webview", + "chromeos", + "chromeos_lacros", + "ios", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "UseMoveNotCopyInMergeTreeUpdate" + ] + } + ] + } + ], "UseMultiPlaneFormatForHardwareVideo": [ { "platforms": [ @@ -19139,22 +20469,47 @@ ] } ], - "UseV1MetricsTerminationHoldback": [ + "UseUtilityThreadGroup": [ { "platforms": [ - "android" + "android", + "android_weblayer", + "android_webview", + "chromeos", + "chromeos_lacros", + "fuchsia", + "ios", + "linux", + "mac", + "windows" ], "experiments": [ { - "name": "Disabled", - "disable_features": [ - "UseV1MetricsTermination" - ] - }, - { - "name": "V1MetricsHoldback", + "name": "Enabled", "enable_features": [ - "UseV1MetricsTermination" + "UseUtilityThreadGroup", + "V8ConcurrentMaglevHighPriorityThreads", + "V8ConcurrentMarkingHighPriorityThreads", + "V8ConcurrentSparkplugHighPriorityThreads" + ] + } + ] + } + ], + "UseZstdForParkableStrings": [ + { + "platforms": [ + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "UseZstdForParkableStrings" ] } ] @@ -19202,21 +20557,6 @@ ] } ], - "UserInteractiveCompositingMac": [ - { - "platforms": [ - "mac" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "UserInteractiveCompositingMac" - ] - } - ] - } - ], "UserLevelMemoryPressureSignalOn4GbDevices": [ { "platforms": [ @@ -19505,120 +20845,6 @@ ] } ], - "V8ConcurrentSparkplug": [ - { - "platforms": [ - "chromeos_lacros", - "chromeos", - "fuchsia", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "1Thread", - "params": { - "V8ConcurrentSparkplugMaxThreads": "1" - }, - "enable_features": [ - "V8ConcurrentSparkplug", - "V8Sparkplug" - ] - }, - { - "name": "Control", - "disable_features": [ - "V8ConcurrentSparkplug" - ] - }, - { - "name": "2Threads", - "params": { - "V8ConcurrentSparkplugMaxThreads": "2" - }, - "enable_features": [ - "V8ConcurrentSparkplug", - "V8Sparkplug" - ] - }, - { - "name": "ManyThreads", - "params": { - "V8ConcurrentSparkplugMaxThreads": "0" - }, - "enable_features": [ - "V8ConcurrentSparkplug", - "V8Sparkplug" - ] - }, - { - "name": "NoSparkplug", - "disable_features": [ - "V8ConcurrentSparkplug", - "V8Sparkplug" - ] - } - ] - } - ], - "V8ConcurrentSparkplugAndroid": [ - { - "platforms": [ - "android", - "android_weblayer", - "android_webview" - ], - "experiments": [ - { - "name": "1Thread", - "params": { - "V8ConcurrentSparkplugMaxThreads": "1" - }, - "enable_features": [ - "V8ConcurrentSparkplug", - "V8Sparkplug" - ] - }, - { - "name": "Control", - "disable_features": [ - "V8ConcurrentSparkplug", - "V8Sparkplug" - ] - }, - { - "name": "2Threads", - "params": { - "V8ConcurrentSparkplugMaxThreads": "2" - }, - "enable_features": [ - "V8ConcurrentSparkplug", - "V8Sparkplug" - ] - }, - { - "name": "ManyThreads", - "params": { - "V8ConcurrentSparkplugMaxThreads": "0" - }, - "enable_features": [ - "V8ConcurrentSparkplug", - "V8Sparkplug" - ] - }, - { - "name": "WithSparkplug", - "enable_features": [ - "V8Sparkplug" - ], - "disable_features": [ - "V8ConcurrentSparkplug" - ] - } - ] - } - ], "V8EfficiencyModeTiering": [ { "platforms": [ @@ -19973,6 +21199,30 @@ ] } ], + "V8SynchronousSparkplug": [ + { + "platforms": [ + "chromeos_lacros", + "chromeos", + "fuchsia", + "linux", + "mac", + "windows", + "android", + "android_weblayer", + "android_webview" + ], + "experiments": [ + { + "name": "Enabled", + "disable_features": [ + "V8BaselineBatchCompilation", + "V8ConcurrentSparkplug" + ] + } + ] + } + ], "V8Turboshaft": [ { "platforms": [ @@ -20151,6 +21401,24 @@ ] } ], + "VSyncAlignedPresent": [ + { + "platforms": [ + "mac" + ], + "experiments": [ + { + "name": "Enabled_2_pending_frames", + "params": { + "PendingFrames": "2" + }, + "enable_features": [ + "VSyncAlignedPresent" + ] + } + ] + } + ], "VSyncDecoding": [ { "platforms": [ @@ -20293,11 +21561,9 @@ { "name": "BackgroundReplaceEnabled", "enable_features": [ - "CameraEffectsSupportedByHardware", "CrOSLateBootAudioAPNoiseCancellation", "FeatureManagementVideoConference", - "VCBackgroundReplace", - "VideoConference" + "VCBackgroundReplace" ] }, { @@ -20403,10 +21669,12 @@ ], "hardware_classes": [ "brya", + "guybrush", "nissa", "rex", "skyrim", - "volteer" + "volteer", + "zork" ] } ] @@ -20506,26 +21774,25 @@ "name": "EnabledAllUsers", "params": { "for_tagged_profiles_only": "false", - "reprompt": "{\"*\": \"122.0.0.0\"}" + "reprompt": "NO_REPROMPT" }, "enable_features": [ "SearchEngineChoiceTrigger" ] - }, + } + ] + } + ], + "WaitUntilAccessTokenAvailableForClassifyUrl": [ + { + "platforms": [ + "android" + ], + "experiments": [ { - "name": "EnabledNewUsers", - "params": { - "for_tagged_profiles_only": "true", - "reprompt": "{\"*\": \"122.0.0.0\"}" - }, + "name": "Enabled", "enable_features": [ - "SearchEngineChoiceTrigger" - ] - }, - { - "name": "Disabled", - "disable_features": [ - "SearchEngineChoiceTrigger" + "WaitUntilAccessTokenAvailableForClassifyUrl" ] } ] @@ -20549,19 +21816,16 @@ ] } ], - "WebApkIconUpdateThreshold": [ + "WebApkBackupAndRestoreBackend": [ { "platforms": [ "android" ], "experiments": [ { - "name": "Enabled_WebApkIconUpdateThreshold", - "params": { - "change_threshold": "10" - }, + "name": "Enabled", "enable_features": [ - "WebApkIconUpdateThreshold" + "WebApkBackupAndRestoreBackend" ] } ] @@ -20585,6 +21849,21 @@ ] } ], + "WebApkUniversalInstallDefaultUrl": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "UniversalInstallDefaultUrl" + ] + } + ] + } + ], "WebApkUniversalInstallUI": [ { "platforms": [ @@ -20636,7 +21915,7 @@ { "name": "Enabled", "params": { - "min_gms_core_version_no_dots": "240400000" + "min_gms_core_version_no_dots": "241000000" }, "enable_features": [ "WebAuthenticationAndroidCredMan" @@ -20664,24 +21943,6 @@ ] } ], - "WebFeedsMVP": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "Enabled_Grouped_IphIntro_20210831", - "params": { - "intro_style": "IPH" - }, - "enable_features": [ - "WebFeed" - ] - } - ] - } - ], "WebGPU": [ { "platforms": [ @@ -20791,6 +22052,26 @@ ] } ], + "WebProtectResumableUpload": [ + { + "platforms": [ + "chromeos", + "chromeos_lacros", + "fuchsia", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "ResumableUploadEnabled" + ] + } + ] + } + ], "WebProtectWatermark": [ { "platforms": [ @@ -21155,6 +22436,27 @@ ] } ], + "WebRTC-Vp9InterLayerPred": [ + { + "platforms": [ + "android", + "android_weblayer", + "android_webview", + "chromeos", + "chromeos_lacros", + "fuchsia", + "ios", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "FlexibleMode,_20240321" + } + ] + } + ], "WebRTC-ZeroPlayoutDelay": [ { "platforms": [ @@ -21392,7 +22694,7 @@ ] } ], - "WebViewAttributionMeasurement": [ + "WebViewAsyncDns": [ { "platforms": [ "android_webview" @@ -21401,7 +22703,7 @@ { "name": "Enabled", "enable_features": [ - "AttributionReportingCrossAppWeb" + "WebViewAsyncDns" ] } ] @@ -21471,6 +22773,21 @@ ] } ], + "WebViewOptimizeXrwNavigationFlow": [ + { + "platforms": [ + "android_webview" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "WebViewOptimizeXrwNavigationFlow" + ] + } + ] + } + ], "WebViewRecordAppDataDirectorySize": [ { "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 e38a813e..b8f0f948 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 @@ -3600,16 +3600,16 @@ enum WebFeature { kViewTimelineConstructor = 4271, kH1UserAgentFontSizeInSectionApplied = 4272, kOBSOLETE_kV8PendingBeacon_Constructor = 4273, - kV8PendingBeacon_Url_AttributeGetter = 4274, + kOBSOLETE_kV8PendingBeacon_Url_AttributeGetter = 4274, kOBSOLETE_kV8PendingBeacon_Url_AttributeSetter = 4275, - kV8PendingBeacon_Method_AttributeGetter = 4276, + kOBSOLETE_kV8PendingBeacon_Method_AttributeGetter = 4276, kOBSOLETE_kV8PendingBeacon_Method_AttributeSetter = 4277, kOBSOLETE_kV8PendingBeacon_PageHideTimeout_AttributeGetter = 4278, kOBSOLETE_kV8PendingBeacon_PageHideTimeout_AttributeSetter = 4279, kOBSOLETE_kV8PendingBeacon_State_AttributeGetter = 4280, - kV8PendingBeacon_Deactivate_Method = 4281, + kOBSOLETE_kV8PendingBeacon_Deactivate_Method = 4281, kOBSOLETE_kV8PendingBeacon_SetData_Method = 4282, - kV8PendingBeacon_SendNow_Method = 4283, + kOBSOLETE_kV8PendingBeacon_SendNow_Method = 4283, // The items above roughly this point are available in the M104 branch. kTabSharingBarSwitchToCapturer = 4284, @@ -3647,15 +3647,15 @@ enum WebFeature { kCrossOriginScrollIntoView = 4316, kLinkRelCanonical = 4317, kCredentialManagerIsConditionalMediationAvailable = 4318, - kV8PendingBeacon_Pending_AttributeGetter = 4319, - kV8PendingBeacon_BackgroundTimeout_AttributeGetter = 4320, - kV8PendingBeacon_BackgroundTimeout_AttributeSetter = 4321, - kV8PendingBeacon_Timeout_AttributeGetter = 4322, - kV8PendingBeacon_Timeout_AttributeSetter = 4323, - kV8PendingGetBeacon_Constructor = 4324, - kV8PendingGetBeacon_SetURL_Method = 4325, - kV8PendingPostBeacon_Constructor = 4326, - kV8PendingPostBeacon_SetData_Method = 4327, + kOBSOLETE_kV8PendingBeacon_Pending_AttributeGetter = 4319, + kOBSOLETE_kV8PendingBeacon_BackgroundTimeout_AttributeGetter = 4320, + kOBSOLETE_kV8PendingBeacon_BackgroundTimeout_AttributeSetter = 4321, + kOBSOLETE_kV8PendingBeacon_Timeout_AttributeGetter = 4322, + kOBSOLETE_kV8PendingBeacon_Timeout_AttributeSetter = 4323, + kOBSOLETE_kV8PendingGetBeacon_Constructor = 4324, + kOBSOLETE_kV8PendingGetBeacon_SetURL_Method = 4325, + kOBSOLETE_kV8PendingPostBeacon_Constructor = 4326, + kOBSOLETE_kV8PendingPostBeacon_SetData_Method = 4327, kContentVisibilityAutoStateChangeHandlerRegistered = 4328, kReplacedElementPaintedWithLargeOverflow = 4329, // The items above roughly this point are available in the M105 branch. @@ -3748,7 +3748,7 @@ enum WebFeature { kCSSAtRuleSwash = 4407 , kCSSAtRuleOrnaments = 4408, kCSSAtRuleAnnotation = 4409, - kServiceWorkerBypassFetchHandlerForMainResource = 4410, + kOBSOLETE_ServiceWorkerBypassFetchHandlerForMainResource = 4410, kV8Document_HasPrivateToken_Method = 4411, kServiceWorkerSkippedForEmptyFetchHandler = 4412, kImageSet = 4413, @@ -3799,7 +3799,7 @@ enum WebFeature { kOptionLabelInQuirksMode = 4454, kParseFromStringIncludeShadows = 4455, kWebAppManifestScopeExtensions = 4456, - kServiceWorkerBypassFetchHandlerForMainResourceByOriginTrial = 4457, + kOBSOLETE_ServiceWorkerBypassFetchHandlerForMainResourceByOriginTrial = 4457, kOBSOLETE_V8RegExpUnicodeSetIncompatibilitiesWithUnicodeMode = 4458, kFedCmAutoReauthn = 4459, kTopicsAPIFetch = 4460, @@ -3814,9 +3814,9 @@ enum WebFeature { kServiceWorkerEventHandlerModifiedAfterInitialization = 4469, kAuthorizationCrossOrigin = 4470, kCSSColorMixFunction = 4471, - kCSSColorColorSpecifiedSpace = 4472, - kCSSColorLabOklab = 4473, - kCSSColorLchOklch = 4474, + kOBSOLETE_CSSColorColorSpecifiedSpace = 4472, + kOBSOLETE_CSSColorLabOklab = 4473, + kOBSOLETE_CSSColorLchOklch = 4474, kOBSOLETE_CreateNSResolverWithNonElements2 = 4475, kGetDisplayMediaWithPreferCurrentTabTrue = 4476, kFencedFrameConfigAttribute = 4477, @@ -3829,7 +3829,7 @@ enum WebFeature { kRTCPeerConnectionLegacyGetStatsTrial = 4482, kExecutedEmptyJavaScriptURLFromFrame = 4483, kExecutedJavaScriptURLFromFrame = 4484, - kServiceWorkerBypassFetchHandlerForSubResource = 4485, + kOBSOLETE_ServiceWorkerBypassFetchHandlerForSubResource = 4485, kCSSAtRuleStartingStyle = 4486, kPrivateAggregationApiFledgeExtensions = 4487, kDeprecatedInterestGroupDailyUpdateUrl = 4488, @@ -3894,7 +3894,7 @@ enum WebFeature { kOBSOLETE_TextWrapBalanceFail = 4545, kAttributionReportingCrossAppWeb = 4546, kSecurePaymentConfirmationActivationlessShow = 4547, - kServiceWorkerBypassFetchHandlerForAllWithRaceNetworkRequest = 4548, + kOBSOLETE_ServiceWorkerBypassFetchHandlerForAllWithRaceNetworkRequest = 4548, // The items above roughly this point are available in the M114 branch. kFlexIntrinsicSizesCacheMiss = 4549, @@ -3907,7 +3907,7 @@ enum WebFeature { kCSSValueAppearanceSliderVertical = 4556, kCSSValueAppearanceSliderthumbHorizontal = 4557, kCSSValueAppearanceSliderthumbVertical = 4558, - kServiceWorkerBypassFetchHandlerForAllWithRaceNetworkRequestByOriginTrial = 4559, + kOBSOLETE_ServiceWorkerBypassFetchHandlerForAllWithRaceNetworkRequestByOriginTrial = 4559, kOBSOLETE_EventTimingPaintedPresentationPromiseResolvedWithEarlierPromiseUnresolved = 4560, kLinkRelPreloadAsFont = 4561, kCrossWindowAccessToBrowserGeneratedDocument = 4562, @@ -3939,7 +3939,7 @@ enum WebFeature { kWebGPUQueueSubmit = 4586, kWebGPUCanvasContextGetCurrentTexture = 4587, kEditContext = 4588, - kServiceWorkerStaticRouter_RegisterRouter = 4589, + kOBSOLETE_kServiceWorkerStaticRouter_RegisterRouter = 4589, kServiceWorkerStaticRouter_Evaluate = 4590, kClientHintsUAFormFactors = 4591, kURLSearchParamsHasFnBehaviourDiverged = 4592, @@ -4032,7 +4032,7 @@ enum WebFeature { kTextWrapPretty = 4674, // The items above roughly this point are available in the M119 branch. - kV8PointerEvent_DeviceId_AttributeGetter = 4675, + kOBSOLETE_V8PointerEvent_DeviceId_AttributeGetter = 4675, kSourceMappingUrlMagicCommentAtSign = 4676, kHTMLDetailsElementNameAttribute = 4677, kHTMLDetailsElementNameAttributeClosesSelf = 4678, @@ -4267,11 +4267,11 @@ enum WebFeature { kTCPSocketConstructor = 4899, kTCPSocketOpenedAttribute = 4900, kTCPSocketClosedAttribute = 4901, - kTCPSocketCloseFunction= 4902, + kTCPSocketCloseFunction = 4902, kUDPSocketConstructor = 4903, kUDPSocketOpenedAttribute = 4904, kUDPSocketClosedAttribute = 4905, - kUDPSocketCloseFunction= 4906, + kUDPSocketCloseFunction = 4906, kTCPServerSocketConstructor = 4907, kTCPServerSocketOpenedAttribute = 4908, kTCPServerSocketClosedAttribute = 4909, @@ -4289,8 +4289,43 @@ enum WebFeature { kFledgeAuctionReportBuyerDebugModeConfig = 4919, kFedCmButtonMode = 4920, + kHTMLPermissionElement = 4921, - kSimplifyLoadingTransparentPlaceholderImage = 4921, + // Model Execution API: + kV8ModelGenericSession_Execute_Method = 4922, + kV8ModelGenericSession_ExecuteStreaming_Method = 4923, + kV8ModelManager_CanCreateGenericSession_Method = 4924, + kV8ModelManager_CreateGenericSession_Method = 4925, + + kV8Animation_Progress_AttributeGetter = 4926, + + kV8ModelManager_DefaultGenericSessionOptions_Method = 4927, + + kQuirksModeCursorHandApplied = 4928, + kSkippedPreloadScanning = 4929, + kCSSColor_SpaceRGB = 4930, + kCSSColor_SpaceRGB_outOfRec2020= 4931, + kCSSColor_SpaceOkLxx = 4932, + kCSSColor_SpaceOkLxx_outOfRec2020 = 4933, + + // Uses of base URL in sandboxed srcdoc frames: + kSandboxedSrcdocFrameResolvesRelativeURL = 4934, + + kV8Ink_RequestPresenter_Method = 4935, + kEventTimingOrphanPointerup = 4936, + kNavigatorCookieEnabledThirdParty = 4937, + + kFoldableAPIs = 4938, + + // https://drafts.csswg.org/css-scroll-snap-2/#snap-events + kSnapEvent = 4939, + + kStaticPropertyInAnimation = 4940, + + kSimplifyLoadingTransparentPlaceholderImage = 4941, + + kIdentityDigitalCredentialsSuccess = 4942, + kV8DeviceProperties_UniqueId_AttributeGetter = 4943, // Add new features immediately above this line. Don't change assigned // numbers of any item, and don't reuse removed slots. diff --git a/tools/under-control/src/third_party/blink/public/mojom/webpreferences/web_preferences.mojom b/tools/under-control/src/third_party/blink/public/mojom/webpreferences/web_preferences.mojom index c3ff064d..0471df98 100755 --- a/tools/under-control/src/third_party/blink/public/mojom/webpreferences/web_preferences.mojom +++ b/tools/under-control/src/third_party/blink/public/mojom/webpreferences/web_preferences.mojom @@ -419,6 +419,11 @@ struct WebPreferences { // when to apply system color overrides to author specified styles. bool in_forced_colors; + // The preferred color scheme set by the user's browser settings. The scheme + // is used to evaluate the used color scheme. Currently, only used for the + // scrollbars' used color scheme. + PreferredColorScheme browser_preferred_color_scheme; + // The preferred color scheme for the web content. The scheme is used to // evaluate the prefers-color-scheme media query and resolve UA color scheme // to be used based on the supported-color-schemes META tag and CSS property. diff --git a/tools/under-control/src/third_party/blink/renderer/core/animation/animation.idl b/tools/under-control/src/third_party/blink/renderer/core/animation/animation.idl index bd549dfe..37fd8a23 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/animation/animation.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/animation/animation.idl @@ -43,6 +43,7 @@ enum ReplaceState { "active", "removed", "persisted" }; attribute AnimationTimeline? timeline; [Measure, RaisesException=Setter] attribute CSSNumberish? startTime; [Measure, RaisesException=Setter] attribute CSSNumberish? currentTime; + [RuntimeEnabled=AnimationProgressAPI, Measure] readonly attribute double? progress; [Measure, RaisesException=Setter] attribute double playbackRate; [RuntimeEnabled=ScrollTimeline, Measure, RaisesException=Setter] attribute (TimelineRangeOffset or DOMString) rangeStart; [RuntimeEnabled=ScrollTimeline, Measure, RaisesException=Setter] attribute (TimelineRangeOffset or DOMString) rangeEnd; diff --git a/tools/under-control/src/third_party/blink/renderer/core/css/css_position_try_descriptors.idl b/tools/under-control/src/third_party/blink/renderer/core/css/css_position_try_descriptors.idl new file mode 100755 index 00000000..6c8f8c92 --- /dev/null +++ b/tools/under-control/src/third_party/blink/renderer/core/css/css_position_try_descriptors.idl @@ -0,0 +1,79 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// https://drafts.csswg.org/css-anchor-position-1/#om-position-try + +[Exposed=Window, RuntimeEnabled=CSSAnchorPositioning] +interface CSSPositionTryDescriptors : CSSStyleDeclaration { + [SetterCallWith=ExecutionContext, RaisesException=Setter] attribute CSSOMString margin; + [SetterCallWith=ExecutionContext, RaisesException=Setter] attribute CSSOMString marginTop; + [SetterCallWith=ExecutionContext, RaisesException=Setter] attribute CSSOMString marginRight; + [SetterCallWith=ExecutionContext, RaisesException=Setter] attribute CSSOMString marginBottom; + [SetterCallWith=ExecutionContext, RaisesException=Setter] attribute CSSOMString marginLeft; + [SetterCallWith=ExecutionContext, RaisesException=Setter] attribute CSSOMString marginBlock; + [SetterCallWith=ExecutionContext, RaisesException=Setter] attribute CSSOMString marginBlockStart; + [SetterCallWith=ExecutionContext, RaisesException=Setter] attribute CSSOMString marginBlockEnd; + [SetterCallWith=ExecutionContext, RaisesException=Setter] attribute CSSOMString marginInline; + [SetterCallWith=ExecutionContext, RaisesException=Setter] attribute CSSOMString marginInlineStart; + [SetterCallWith=ExecutionContext, RaisesException=Setter] attribute CSSOMString marginInlineEnd; + [SetterCallWith=ExecutionContext, RaisesException=Setter, ImplementedAs=marginTop] attribute CSSOMString margin-top; + [SetterCallWith=ExecutionContext, RaisesException=Setter, ImplementedAs=marginRight] attribute CSSOMString margin-right; + [SetterCallWith=ExecutionContext, RaisesException=Setter, ImplementedAs=marginBottom] attribute CSSOMString margin-bottom; + [SetterCallWith=ExecutionContext, RaisesException=Setter, ImplementedAs=marginLeft] attribute CSSOMString margin-left; + [SetterCallWith=ExecutionContext, RaisesException=Setter, ImplementedAs=marginBlock] attribute CSSOMString margin-block; + [SetterCallWith=ExecutionContext, RaisesException=Setter, ImplementedAs=marginBlockStart] attribute CSSOMString margin-block-start; + [SetterCallWith=ExecutionContext, RaisesException=Setter, ImplementedAs=marginBlockEnd] attribute CSSOMString margin-block-end; + [SetterCallWith=ExecutionContext, RaisesException=Setter, ImplementedAs=marginInline] attribute CSSOMString margin-inline; + [SetterCallWith=ExecutionContext, RaisesException=Setter, ImplementedAs=marginInlineStart] attribute CSSOMString margin-inline-start; + [SetterCallWith=ExecutionContext, RaisesException=Setter, ImplementedAs=marginInlineEnd] attribute CSSOMString margin-inline-end; + [SetterCallWith=ExecutionContext, RaisesException=Setter] attribute CSSOMString inset; + [SetterCallWith=ExecutionContext, RaisesException=Setter] attribute CSSOMString insetBlock; + [SetterCallWith=ExecutionContext, RaisesException=Setter] attribute CSSOMString insetBlockStart; + [SetterCallWith=ExecutionContext, RaisesException=Setter] attribute CSSOMString insetBlockEnd; + [SetterCallWith=ExecutionContext, RaisesException=Setter] attribute CSSOMString insetInline; + [SetterCallWith=ExecutionContext, RaisesException=Setter] attribute CSSOMString insetInlineStart; + [SetterCallWith=ExecutionContext, RaisesException=Setter] attribute CSSOMString insetInlineEnd; + [SetterCallWith=ExecutionContext, RaisesException=Setter] attribute CSSOMString top; + [SetterCallWith=ExecutionContext, RaisesException=Setter] attribute CSSOMString left; + [SetterCallWith=ExecutionContext, RaisesException=Setter] attribute CSSOMString right; + [SetterCallWith=ExecutionContext, RaisesException=Setter] attribute CSSOMString bottom; + [SetterCallWith=ExecutionContext, RaisesException=Setter, ImplementedAs=insetBlock] attribute CSSOMString inset-block; + [SetterCallWith=ExecutionContext, RaisesException=Setter, ImplementedAs=insetBlockStart] attribute CSSOMString inset-block-start; + [SetterCallWith=ExecutionContext, RaisesException=Setter, ImplementedAs=insetBlockEnd] attribute CSSOMString inset-block-end; + [SetterCallWith=ExecutionContext, RaisesException=Setter, ImplementedAs=insetInline] attribute CSSOMString inset-inline; + [SetterCallWith=ExecutionContext, RaisesException=Setter, ImplementedAs=insetInlineStart] attribute CSSOMString inset-inline-start; + [SetterCallWith=ExecutionContext, RaisesException=Setter, ImplementedAs=insetInlineEnd] attribute CSSOMString inset-inline-end; + [SetterCallWith=ExecutionContext, RaisesException=Setter] attribute CSSOMString width; + [SetterCallWith=ExecutionContext, RaisesException=Setter] attribute CSSOMString minWidth; + [SetterCallWith=ExecutionContext, RaisesException=Setter] attribute CSSOMString maxWidth; + [SetterCallWith=ExecutionContext, RaisesException=Setter] attribute CSSOMString height; + [SetterCallWith=ExecutionContext, RaisesException=Setter] attribute CSSOMString minHeight; + [SetterCallWith=ExecutionContext, RaisesException=Setter] attribute CSSOMString maxHeight; + [SetterCallWith=ExecutionContext, RaisesException=Setter] attribute CSSOMString blockSize; + [SetterCallWith=ExecutionContext, RaisesException=Setter] attribute CSSOMString minBlockSize; + [SetterCallWith=ExecutionContext, RaisesException=Setter] attribute CSSOMString maxBlockSize; + [SetterCallWith=ExecutionContext, RaisesException=Setter] attribute CSSOMString inlineSize; + [SetterCallWith=ExecutionContext, RaisesException=Setter] attribute CSSOMString minInlineSize; + [SetterCallWith=ExecutionContext, RaisesException=Setter] attribute CSSOMString maxInlineSize; + [SetterCallWith=ExecutionContext, RaisesException=Setter, ImplementedAs=minWidth] attribute CSSOMString min-width; + [SetterCallWith=ExecutionContext, RaisesException=Setter, ImplementedAs=maxWidth] attribute CSSOMString max-width; + [SetterCallWith=ExecutionContext, RaisesException=Setter, ImplementedAs=minHeight] attribute CSSOMString min-height; + [SetterCallWith=ExecutionContext, RaisesException=Setter, ImplementedAs=maxHeight] attribute CSSOMString max-height; + [SetterCallWith=ExecutionContext, RaisesException=Setter, ImplementedAs=blockSize] attribute CSSOMString block-size; + [SetterCallWith=ExecutionContext, RaisesException=Setter, ImplementedAs=minBlockSize] attribute CSSOMString min-block-size; + [SetterCallWith=ExecutionContext, RaisesException=Setter, ImplementedAs=maxBlockSize] attribute CSSOMString max-block-size; + [SetterCallWith=ExecutionContext, RaisesException=Setter, ImplementedAs=inlineSize] attribute CSSOMString inline-size; + [SetterCallWith=ExecutionContext, RaisesException=Setter, ImplementedAs=minInlineSize] attribute CSSOMString min-inline-size; + [SetterCallWith=ExecutionContext, RaisesException=Setter, ImplementedAs=maxInlineSize] attribute CSSOMString max-inline-size; + [SetterCallWith=ExecutionContext, RaisesException=Setter] attribute CSSOMString placeSelf; + [SetterCallWith=ExecutionContext, RaisesException=Setter] attribute CSSOMString alignSelf; + [SetterCallWith=ExecutionContext, RaisesException=Setter] attribute CSSOMString justifySelf; + [SetterCallWith=ExecutionContext, RaisesException=Setter, ImplementedAs=placeSelf] attribute CSSOMString place-self; + [SetterCallWith=ExecutionContext, RaisesException=Setter, ImplementedAs=alignSelf] attribute CSSOMString align-self; + [SetterCallWith=ExecutionContext, RaisesException=Setter, ImplementedAs=justifySelf] attribute CSSOMString justify-self; + [SetterCallWith=ExecutionContext, RaisesException=Setter] attribute CSSOMString positionAnchor; + [SetterCallWith=ExecutionContext, RaisesException=Setter, ImplementedAs=positionAnchor] attribute CSSOMString position-anchor; + [SetterCallWith=ExecutionContext, RaisesException=Setter] attribute CSSOMString insetArea; + [SetterCallWith=ExecutionContext, RaisesException=Setter, ImplementedAs=insetArea] attribute CSSOMString inset-area; +}; diff --git a/tools/under-control/src/third_party/blink/renderer/core/css/css_view_transition_rule.idl b/tools/under-control/src/third_party/blink/renderer/core/css/css_view_transition_rule.idl index 91be473f..d073ef84 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/css/css_view_transition_rule.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/css/css_view_transition_rule.idl @@ -6,6 +6,6 @@ Exposed=Window, RuntimeEnabled=ViewTransitionOnNavigation ] interface CSSViewTransitionRule : CSSRule { - [SetterCallWith=ExecutionContext] attribute CSSOMString navigation; + [SetterCallWith=ExecutionContext] readonly attribute CSSOMString navigation; + [RuntimeEnabled=ViewTransitionTypes, SameObject, SaveSameObject] readonly attribute FrozenArray types; }; - diff --git a/tools/under-control/src/third_party/blink/renderer/core/css/parser/media_query_parser.cc b/tools/under-control/src/third_party/blink/renderer/core/css/parser/media_query_parser.cc index 30df3a79..b2c30a33 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/css/parser/media_query_parser.cc +++ b/tools/under-control/src/third_party/blink/renderer/core/css/parser/media_query_parser.cc @@ -11,6 +11,7 @@ #include "third_party/blink/renderer/core/css/properties/css_parsing_utils.h" #include "third_party/blink/renderer/core/execution_context/execution_context.h" #include "third_party/blink/renderer/core/execution_context/security_context.h" +#include "third_party/blink/renderer/core/frame/local_dom_window.h" #include "third_party/blink/renderer/core/html/parser/html_parser_idioms.h" #include "third_party/blink/renderer/core/media_type_names.h" #include "third_party/blink/renderer/platform/runtime_enabled_features.h" @@ -90,12 +91,14 @@ class MediaQueryFeatureSet : public MediaQueryParser::FeatureSet { execution_context)) || (feature == media_feature_names::kHorizontalViewportSegmentsMediaFeature && - RuntimeEnabledFeatures::ViewportSegmentsEnabled()) || + RuntimeEnabledFeatures::ViewportSegmentsEnabled( + execution_context)) || (feature == media_feature_names::kVerticalViewportSegmentsMediaFeature && - RuntimeEnabledFeatures::ViewportSegmentsEnabled()) || + RuntimeEnabledFeatures::ViewportSegmentsEnabled( + execution_context)) || (feature == media_feature_names::kDevicePostureMediaFeature && - RuntimeEnabledFeatures::DevicePostureEnabled()) || + RuntimeEnabledFeatures::DevicePostureEnabled(execution_context)) || (feature == media_feature_names::kOverflowInlineMediaFeature && RuntimeEnabledFeatures::CSSOverflowMediaFeaturesEnabled()) || (feature == media_feature_names::kOverflowBlockMediaFeature && @@ -165,7 +168,10 @@ MediaQueryParser::MediaQueryParser(ParserType parser_type, syntax_level_(syntax_level), fake_context_(*MakeGarbageCollected( kHTMLStandardMode, - SecureContextMode::kInsecureContext)) {} + SecureContextMode::kInsecureContext, + DynamicTo(execution_context) + ? DynamicTo(execution_context)->document() + : nullptr)) {} MediaQueryParser::~MediaQueryParser() = default; diff --git a/tools/under-control/src/third_party/blink/renderer/core/dom/element.idl b/tools/under-control/src/third_party/blink/renderer/core/dom/element.idl index 0b50f7e7..53ad9ffc 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/dom/element.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/dom/element.idl @@ -106,10 +106,10 @@ dictionary CheckVisibilityOptions { // Declarative Shadow DOM getInnerHTML() function. This version should be // considered deprecated, as we work to standardize the version below, // getHTML(). - [Affects=Nothing, MeasureAs=ElementGetInnerHTML, RuntimeEnabled=ElementGetInnerHTML] HTMLString getInnerHTML(optional GetInnerHTMLOptions options = {}); + [Affects=Nothing, MeasureAs=ElementGetInnerHTML, RuntimeEnabled=ElementGetInnerHTML] DOMString getInnerHTML(optional GetInnerHTMLOptions options = {}); // Declarative Shadow DOM getHTML() function. - [Affects=Nothing, MeasureAs=ElementGetHTML, RaisesException, RuntimeEnabled=ElementGetHTML] HTMLString getHTML(optional GetHTMLOptions options = {}); + [Affects=Nothing, MeasureAs=ElementGetHTML, RaisesException, RuntimeEnabled=ElementGetHTML] DOMString getHTML(optional GetHTMLOptions options = {}); // Pointer Lock // https://w3c.github.io/pointerlock/#extensions-to-the-element-interface @@ -143,7 +143,7 @@ dictionary CheckVisibilityOptions { readonly attribute long clientHeight; // Used by both Anchor Positioning and Popover - [CEReactions,RuntimeEnabled=CSSAnchorPositioning] attribute Element? anchorElement; + [CEReactions,RuntimeEnabled=HTMLAnchorAttribute] attribute Element? anchorElement; // Non-standard API [MeasureAs=ElementScrollIntoViewIfNeeded] void scrollIntoViewIfNeeded(optional boolean centerIfNeeded); diff --git a/tools/under-control/src/third_party/blink/renderer/core/dom/node.idl b/tools/under-control/src/third_party/blink/renderer/core/dom/node.idl index eac7c52d..0eb51eff 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/dom/node.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/dom/node.idl @@ -75,6 +75,7 @@ boolean isDefaultNamespace(DOMString? namespaceURI); [CEReactions, PerWorldBindings, RaisesException] Node insertBefore(Node node, Node? child); + [CEReactions, PerWorldBindings, RaisesException, RuntimeEnabled=AtomicMoveAPI] Node moveBefore(Node node, Node? child); [CEReactions, PerWorldBindings, RaisesException, RuntimeCallStatsCounter=NodeAppendChild] Node appendChild(Node node); [CEReactions, PerWorldBindings, RaisesException] Node replaceChild(Node node, Node child); [CEReactions, RaisesException, RuntimeCallStatsCounter=NodeRemoveChild] Node removeChild(Node child); diff --git a/tools/under-control/src/third_party/blink/renderer/core/dom/observable.idl b/tools/under-control/src/third_party/blink/renderer/core/dom/observable.idl index db6e9868..598d29f9 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/dom/observable.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/dom/observable.idl @@ -45,10 +45,14 @@ interface Observable { [CallWith=ScriptState] Observable filter(Predicate predicate); [CallWith=ScriptState] Observable take(unsigned long long number_to_take); [CallWith=ScriptState] Observable drop(unsigned long long number_to_drop); + [CallWith=ScriptState, RaisesException] Observable flatMap(Mapper mapper); + [CallWith=ScriptState, RaisesException] Observable switchMap(Mapper mapper); // Promise-returning operators. // See https://wicg.github.io/observable/#promise-returning-operators. [CallWith=ScriptState] Promise> toArray(optional SubscribeOptions options = {}); [CallWith=ScriptState] Promise forEach(Visitor callback, optional SubscribeOptions options = {}); + [CallWith=ScriptState] Promise first(optional SubscribeOptions options = {}); + [CallWith=ScriptState] Promise last(optional SubscribeOptions options = {}); }; diff --git a/tools/under-control/src/third_party/blink/renderer/core/dom/shadow_root.idl b/tools/under-control/src/third_party/blink/renderer/core/dom/shadow_root.idl index 4479c5df..b78f12f1 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/dom/shadow_root.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/dom/shadow_root.idl @@ -49,7 +49,7 @@ interface ShadowRoot : DocumentFragment { [Affects=Nothing, MeasureAs=ElementGetHTML, RaisesException, RuntimeEnabled=ElementGetHTML] HTMLString getHTML(optional GetHTMLOptions options = {}); // The serializable attribute controls whether the shadow root will be - // serialized by getHTML({includeShadowRoots:true}). + // serialized by getHTML({serializableShadowRoots:true}). [RuntimeEnabled=ElementGetHTML] attribute boolean serializable; // The clonable attribute controls whether the shadow root will be diff --git a/tools/under-control/src/third_party/blink/renderer/core/editing/ime/character_bounds_update_event.idl b/tools/under-control/src/third_party/blink/renderer/core/editing/ime/character_bounds_update_event.idl index 4b6edda4..5d2cabca 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/editing/ime/character_bounds_update_event.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/editing/ime/character_bounds_update_event.idl @@ -10,8 +10,7 @@ // Spec draft: // https://w3c.github.io/edit-context/#characterboundsupdateevent [ - Exposed=Window, - RuntimeEnabled=EditContext + Exposed=Window ] interface CharacterBoundsUpdateEvent : Event { constructor(DOMString type, optional CharacterBoundsUpdateEventInit options = {}); readonly attribute unsigned long rangeStart; diff --git a/tools/under-control/src/third_party/blink/renderer/core/editing/ime/edit_context.idl b/tools/under-control/src/third_party/blink/renderer/core/editing/ime/edit_context.idl index 89543d77..9d00faad 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/editing/ime/edit_context.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/editing/ime/edit_context.idl @@ -11,8 +11,7 @@ [ Exposed=Window, - ActiveScriptWrappable, - RuntimeEnabled=EditContext + ActiveScriptWrappable ] interface EditContext : EventTarget { [CallWith=ScriptState] constructor(optional EditContextInit options = {}); [RaisesException] void updateSelection(unsigned long start, unsigned long end); diff --git a/tools/under-control/src/third_party/blink/renderer/core/editing/ime/text_format.idl b/tools/under-control/src/third_party/blink/renderer/core/editing/ime/text_format.idl index 9aaaea78..d38f25fb 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/editing/ime/text_format.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/editing/ime/text_format.idl @@ -11,8 +11,7 @@ enum UnderlineStyle { "none", "solid", "dotted", "dashed", "wavy" }; enum UnderlineThickness { "none", "thin", "thick" }; [ - Exposed=Window, - RuntimeEnabled=EditContext + Exposed=Window ] interface TextFormat { constructor(optional TextFormatInit options = {}); diff --git a/tools/under-control/src/third_party/blink/renderer/core/editing/ime/text_format_update_event.idl b/tools/under-control/src/third_party/blink/renderer/core/editing/ime/text_format_update_event.idl index 60c6971e..176c60f5 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/editing/ime/text_format_update_event.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/editing/ime/text_format_update_event.idl @@ -10,8 +10,7 @@ // Spec draft: // https://w3c.github.io/edit-context/#textformatupdateevent [ - Exposed=Window, - RuntimeEnabled=EditContext + Exposed=Window ] interface TextFormatUpdateEvent : Event { constructor(DOMString type, optional TextFormatUpdateEventInit options = {}); diff --git a/tools/under-control/src/third_party/blink/renderer/core/editing/ime/text_update_event.idl b/tools/under-control/src/third_party/blink/renderer/core/editing/ime/text_update_event.idl index a0c2229c..183aaf1e 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/editing/ime/text_update_event.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/editing/ime/text_update_event.idl @@ -12,8 +12,7 @@ // https://w3c.github.io/edit-context/#textupdateevent [ - Exposed=Window, - RuntimeEnabled=EditContext + Exposed=Window ] interface TextUpdateEvent : Event { constructor(DOMString type, optional TextUpdateEventInit options = {}); readonly attribute unsigned long updateRangeStart; diff --git a/tools/under-control/src/third_party/blink/renderer/core/events/event_type_names.json5 b/tools/under-control/src/third_party/blink/renderer/core/events/event_type_names.json5 index c9eaf4c7..8ad0efae 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/events/event_type_names.json5 +++ b/tools/under-control/src/third_party/blink/renderer/core/events/event_type_names.json5 @@ -167,6 +167,7 @@ "input", "inputreport", "inputsourceschange", + "interest", "invoke", "install", "interfacerequest", @@ -187,6 +188,7 @@ "loadingdone", "loadingerror", "loadstart", + "loseinterest", "lostpointercapture", "managedconfigurationchange", "mark", 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 new file mode 100755 index 00000000..4b71a429 --- /dev/null +++ b/tools/under-control/src/third_party/blink/renderer/core/events/interest_event.idl @@ -0,0 +1,17 @@ +// 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. + +[ + RuntimeEnabled=HTMLInterestTargetAttribute, + Exposed=Window +] interface InterestEvent : Event { + constructor(DOMString type, optional InterestEventInit eventInitDict = {}); + readonly attribute Element? invoker; + readonly attribute DOMString action; +}; + +dictionary InterestEventInit : EventInit { + Element? invoker = null; + DOMString action = ""; +}; diff --git a/tools/under-control/src/third_party/blink/renderer/core/events/pointer_event.idl b/tools/under-control/src/third_party/blink/renderer/core/events/pointer_event.idl index 36f08b8f..88d9a916 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/events/pointer_event.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/events/pointer_event.idl @@ -20,7 +20,7 @@ [MeasureAs=PointerEventAttributeCount] readonly attribute long twist; [MeasureAs=PointerEventAttributeCount] readonly attribute DOMString pointerType; [MeasureAs=PointerEventAttributeCount] readonly attribute boolean isPrimary; - [Measure, RuntimeEnabled=PointerEventDeviceId] readonly attribute long deviceId; + [MeasureAs=PointerEventAttributeCount, RuntimeEnabled=PointerEventDeviceId] readonly attribute DeviceProperties deviceProperties; // https://w3c.github.io/pointerevents/extension.html#extensions-to-the-pointerevent-interface [Measure] sequence getCoalescedEvents(); diff --git a/tools/under-control/src/third_party/blink/renderer/core/events/pointer_event_init.idl b/tools/under-control/src/third_party/blink/renderer/core/events/pointer_event_init.idl index 9e0d4a92..46dba9ba 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/events/pointer_event_init.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/events/pointer_event_init.idl @@ -17,7 +17,7 @@ dictionary PointerEventInit : MouseEventInit { long twist = 0; DOMString pointerType = ""; boolean isPrimary = false; - long deviceId = -1; + DeviceProperties deviceProperties; // https://w3c.github.io/pointerevents/extension.html#extensions-to-the-pointerevent-interface sequence coalescedEvents = []; 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 fb042e63..d0d5030c 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 @@ -56,10 +56,10 @@ #include "third_party/blink/public/common/web_preferences/web_preferences.h" #include "third_party/blink/public/mojom/frame/frame_replication_state.mojom-blink.h" #include "third_party/blink/public/mojom/input/focus_type.mojom-blink.h" +#include "third_party/blink/public/mojom/page/draggable_region.mojom-blink.h" #include "third_party/blink/public/mojom/window_features/window_features.mojom-blink.h" #include "third_party/blink/public/platform/interface_registry.h" #include "third_party/blink/public/platform/platform.h" -#include "third_party/blink/public/platform/scheduler/web_thread_scheduler.h" #include "third_party/blink/public/platform/web_media_player.h" #include "third_party/blink/public/platform/web_network_state_notifier.h" #include "third_party/blink/public/platform/web_runtime_features.h" @@ -1792,6 +1792,8 @@ void WebView::ApplyWebPreferences(const web_pref::WebPreferences& prefs, settings->SetLazyLoadEnabled(prefs.lazy_load_enabled); settings->SetInForcedColors(prefs.in_forced_colors); + settings->SetBrowserPreferredColorScheme( + prefs.browser_preferred_color_scheme); settings->SetPreferredColorScheme(prefs.preferred_color_scheme); settings->SetPreferredContrast(prefs.preferred_contrast); @@ -4016,25 +4018,47 @@ bool WebViewImpl::IsFencedFrameRoot() const { return GetPage()->IsMainFrameFencedFrameRoot(); } -void WebViewImpl::SetSupportsAppRegion(bool supports_app_region) { - supports_app_region_ = supports_app_region; +void WebViewImpl::SetSupportsDraggableRegions(bool supports_draggable_regions) { + supports_draggable_regions_ = supports_draggable_regions; if (!MainFrameImpl() || !MainFrameImpl()->GetFrame()) { return; } LocalFrame* local_frame = MainFrameImpl()->GetFrame(); - if (supports_app_region_) { - local_frame->View()->UpdateDocumentAnnotatedRegions(); + if (supports_draggable_regions_) { + local_frame->View()->UpdateDocumentDraggableRegions(); } else { - local_frame->GetDocument()->SetAnnotatedRegions( - Vector()); - local_frame->Client()->AnnotatedRegionsChanged(); + local_frame->GetDocument()->SetDraggableRegions( + Vector()); + chrome_client_->DraggableRegionsChanged(); } } -bool WebViewImpl::SupportsAppRegion() { - return supports_app_region_; +bool WebViewImpl::SupportsDraggableRegions() { + return supports_draggable_regions_; +} + +void WebViewImpl::DraggableRegionsChanged() { + WebVector web_regions = + MainFrameImpl()->GetDocument().DraggableRegions(); + + // If |supports_draggable_regions_| is false, the web view should only send + // empty regions to reset a previously set draggable regions. + DCHECK(supports_draggable_regions_ || web_regions.empty()); + + auto regions = Vector(); + for (WebDraggableRegion& web_region : web_regions) { + auto converted_bounds = + MainFrame()->ToWebLocalFrame()->FrameWidget()->BlinkSpaceToEnclosedDIPs( + web_region.bounds); + + auto region = mojom::blink::DraggableRegion::New(converted_bounds, + web_region.draggable); + regions.emplace_back(std::move(region)); + } + + local_main_frame_host_remote_->DraggableRegionsChanged(std::move(regions)); } void WebViewImpl::MojoDisconnected() { diff --git a/tools/under-control/src/third_party/blink/renderer/core/frame/pending_beacon.idl b/tools/under-control/src/third_party/blink/renderer/core/frame/pending_beacon.idl deleted file mode 100755 index 936a38a0..00000000 --- a/tools/under-control/src/third_party/blink/renderer/core/frame/pending_beacon.idl +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright 2022 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// https://github.com/WICG/pending-beacon/blob/main/README.md - -enum BeaconMethod { "POST", "GET" }; - -dictionary PendingBeaconOptions { - long backgroundTimeout = -1; - long timeout = -1; -}; - -// Interface for the PendingBeacon API. -[ - RuntimeEnabled = PendingBeaconAPI, - Exposed = Window, - SecureContext -] interface PendingBeacon { - [Measure] readonly attribute USVString url; - [Measure] readonly attribute BeaconMethod method; - [Measure] attribute long backgroundTimeout; - [Measure] attribute long timeout; - [Measure] readonly attribute boolean pending; - - [Measure] void deactivate(); - [Measure] void sendNow(); -}; - -// Interface for the PendingGetBeacon API. -[ - RuntimeEnabled = PendingBeaconAPI, - Exposed = Window, - SecureContext -] interface PendingGetBeacon : PendingBeacon { - [Measure, RaisesException, CallWith = ExecutionContext] constructor( - USVString? url, optional PendingBeaconOptions options); - - [Measure, RaisesException] void setURL(USVString? url); -}; - -// Interface for the PendingPostBeacon API. -[ - RuntimeEnabled = PendingBeaconAPI, - Exposed = Window, - SecureContext -] interface PendingPostBeacon : PendingBeacon { - [Measure, RaisesException, CallWith = ExecutionContext] constructor( - USVString? url, optional PendingBeaconOptions options); - - [Measure, RaisesException] void setData( - (ReadableStream or XMLHttpRequestBodyInit) data); -}; diff --git a/tools/under-control/src/third_party/blink/renderer/core/frame/settings.json5 b/tools/under-control/src/third_party/blink/renderer/core/frame/settings.json5 index 37d22bf7..99b02354 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/frame/settings.json5 +++ b/tools/under-control/src/third_party/blink/renderer/core/frame/settings.json5 @@ -1092,6 +1092,19 @@ type: "bool", }, + // Preferred color scheme from the browser settings passed to the renderer + // for evaluating the used color scheme. Currently, only used for the + // scrollbars' used color scheme. + { + name: "browserPreferredColorScheme", + initial: "mojom::blink::PreferredColorScheme::kLight", + invalidate: ["ColorScheme"], + type: "mojom::blink::PreferredColorScheme", + include_paths: [ + "third_party/blink/public/mojom/css/preferred_color_scheme.mojom-shared.h" + ], + }, + // Preferred color scheme from the OS/application passed to the renderer for // evaluating the prefers-color-scheme media query. { diff --git a/tools/under-control/src/third_party/blink/renderer/core/frame/visual_viewport.idl b/tools/under-control/src/third_party/blink/renderer/core/frame/visual_viewport.idl index 2564501f..790e0d2d 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/frame/visual_viewport.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/frame/visual_viewport.idl @@ -51,4 +51,5 @@ attribute EventHandler onresize; attribute EventHandler onscroll; + [RuntimeEnabled=VisualViewportOnScrollEnd] attribute EventHandler onscrollend; }; diff --git a/tools/under-control/src/third_party/blink/renderer/core/html/fenced_frame/fence_event.idl b/tools/under-control/src/third_party/blink/renderer/core/html/fenced_frame/fence_event.idl index 558612e0..ddfa9e48 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/html/fenced_frame/fence_event.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/html/fenced_frame/fence_event.idl @@ -19,18 +19,19 @@ dictionary FenceEvent { DOMString eventData; sequence destination; + // Determines if this data can be sent in a reportEvent() beacon or automatic + // beacon that originates from a document that is cross-origin to the mapped + // URL of the fenced frame config that loaded this frame tree. + // Note that automatic beacon data can only be set from documents that are + // same-origin to the fenced frame config's mapped URL, so this effectively + // opts in the data to being used in a cross-origin subframe. + boolean crossOriginExposed = false; + // When setting event data to be used later in an automatic beacon, the // following properties are used: // Determines if the beacon data will be used for only the next automatic // beacon event, or if it will be reused for all subsequent automatic beacons. boolean once = false; - // Determines if this data can be used for an automatic beacon that originates - // from a document that is cross-origin to the mapped URL of the fenced frame - // config that loaded this frame tree. Note that automatic beacon data can - // only be set from documents that are same-origin to the fenced frame - // config's mapped URL, so this effectively opts in the data to being used - // cross-origin. - boolean crossOriginExposed = false; // When reporting to a custom destination URL (with substitution of macros // defined by the buyer), the following property is used: diff --git a/tools/under-control/src/third_party/blink/renderer/core/html/html_area_element.idl b/tools/under-control/src/third_party/blink/renderer/core/html/html_area_element.idl index e213527f..9d4141e6 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/html/html_area_element.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/html/html_area_element.idl @@ -39,3 +39,4 @@ }; HTMLAreaElement includes HTMLHyperlinkElementUtils; +HTMLAreaElement includes InterestInvokerElement; diff --git a/tools/under-control/src/third_party/blink/renderer/core/html/html_element.idl b/tools/under-control/src/third_party/blink/renderer/core/html/html_element.idl index fb132219..d164632f 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/html/html_element.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/html/html_element.idl @@ -43,7 +43,7 @@ // EditContext // https://w3c.github.io/edit-context/ - [RuntimeEnabled=EditContext, RaisesException=Setter] attribute EditContext? editContext; + [RaisesException=Setter] attribute EditContext? editContext; // HTMLElement includes ElementContentEditable // https://html.spec.whatwg.org/C/#contenteditable diff --git a/tools/under-control/src/third_party/blink/renderer/core/html/html_template_element.idl b/tools/under-control/src/third_party/blink/renderer/core/html/html_template_element.idl index 1aac9105..086e5c51 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/html/html_template_element.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/html/html_template_element.idl @@ -35,15 +35,6 @@ ] interface HTMLTemplateElement : HTMLElement { readonly attribute DocumentFragment content; - // This is the deprecated and removed IDL for `shadowRoot`, which was used - // by the old declarative shadow DOM proposal. Note that it was only used - // for feature detection - this override of `shadowRoot` returns the same - // thing as HTMLElement's `shadowRoot` attribute. For safety, it is here, - // guarded by a runtime flag, in case of compat problems. - // TODO(crbug.com/1396384) Eventually remove this. - [ImplementedAs=OpenShadowRoot, RuntimeEnabled=DeprecatedTemplateShadowRoot] - readonly attribute ShadowRoot? shadowRoot; - // These are the declarative Shadow DOM IDL attributes, which reflect the // equivalent content attributes. Note that these are just the reflections // of HTMLTemplateElement's attribute, which isn't a common use case: in diff --git a/tools/under-control/src/third_party/blink/renderer/core/input/device_properties.idl b/tools/under-control/src/third_party/blink/renderer/core/input/device_properties.idl new file mode 100755 index 00000000..537c0d88 --- /dev/null +++ b/tools/under-control/src/third_party/blink/renderer/core/input/device_properties.idl @@ -0,0 +1,11 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +[ + Exposed=Window, + RuntimeEnabled=PointerEventDeviceId +] interface DeviceProperties { + constructor(optional DevicePropertiesInit devicePropertiesInitDict = {}); + [Measure] readonly attribute long uniqueId; +}; diff --git a/tools/under-control/src/third_party/blink/renderer/core/input/device_properties_init.idl b/tools/under-control/src/third_party/blink/renderer/core/input/device_properties_init.idl new file mode 100755 index 00000000..148ca73e --- /dev/null +++ b/tools/under-control/src/third_party/blink/renderer/core/input/device_properties_init.idl @@ -0,0 +1,9 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// https://w3c.github.io/pointerevents/#pointerevent-interface + +dictionary DevicePropertiesInit { + long uniqueId = -1; +}; 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 38603abc..ae85c028 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 @@ -13,6 +13,7 @@ #include "services/network/public/cpp/attribution_reporting_runtime_features.h" #include "services/network/public/cpp/features.h" #include "third_party/blink/public/common/features.h" +#include "third_party/blink/public/common/features_generated.h" #include "third_party/blink/public/common/origin_trials/origin_trials.h" #include "third_party/blink/public/common/origin_trials/trial_token.h" #include "third_party/blink/public/common/origin_trials/trial_token_result.h" @@ -534,10 +535,6 @@ bool OriginTrialContext::CanEnableTrialFromName(const StringView& trial_name) { features::kSpeculationRulesPrefetchFuture); } - if (trial_name == "PendingBeaconAPI") { - return base::FeatureList::IsEnabled(features::kPendingBeaconAPI); - } - if (trial_name == "BackForwardCacheSendNotRestoredReasons") { return base::FeatureList::IsEnabled( features::kBackForwardCacheSendNotRestoredReasons); @@ -555,14 +552,15 @@ bool OriginTrialContext::CanEnableTrialFromName(const StringView& trial_name) { network::features::kAttributionReportingCrossAppWeb); } - if (trial_name == "ComputePressure_v2") { - return base::FeatureList::IsEnabled(features::kComputePressure); - } - if (trial_name == "SoftNavigationHeuristics") { return base::FeatureList::IsEnabled(features::kSoftNavigationDetection); } + if (trial_name == "FoldableAPIs") { + return base::FeatureList::IsEnabled(features::kViewportSegments) && + base::FeatureList::IsEnabled(features::kDevicePosture); + } + return true; } diff --git a/tools/under-control/src/third_party/blink/renderer/core/testing/internals.idl b/tools/under-control/src/third_party/blink/renderer/core/testing/internals.idl index aaaffa30..80a85d92 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/testing/internals.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/testing/internals.idl @@ -215,7 +215,6 @@ interface Internals { sequence shortcutIconURLs(Document document); sequence allIconURLs(Document document); [RaisesException] long numberOfPages(optional double pageWidthInPixels = 800, optional double pageHeightInPixels = 600); - [RaisesException] DOMString pageProperty(DOMString propertyName, unsigned long pageNumber); [RaisesException] float pageScaleFactor(); [RaisesException] void setPageScaleFactor(float scaleFactor); [RaisesException] void setPageScaleFactorLimits(float minScaleFactor, float maxScaleFactor); @@ -264,7 +263,7 @@ interface Internals { // Overrides default behavior to support the app-region CSS property. // Setting to true enables collection of draggable/non-draggable // app regions. - void SetSupportsAppRegion(boolean supports_app_regions); + void SetSupportsDraggableRegions(boolean supports_draggable_regionss); // Returns a string with information about the mouse cursor used at the specified client location. DOMString getCurrentCursorInfo(); diff --git a/tools/under-control/src/third_party/blink/renderer/core/view_transition/view_transition.idl b/tools/under-control/src/third_party/blink/renderer/core/view_transition/view_transition.idl index d2e6f24f..98693ba2 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/view_transition/view_transition.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/view_transition/view_transition.idl @@ -28,4 +28,9 @@ // transition (where this object is provided via an event), this Promise is // resolved on creation. [CallWith=ScriptState] readonly attribute Promise updateCallbackDone; + + // This will return a ViewTransitionTypeSet that represents the active list of types + // for this transition. These types are selectable using the + // :active-view-transition-type pseudo-class. + [RuntimeEnabled=ViewTransitionTypes] readonly attribute ViewTransitionTypeSet types; }; diff --git a/tools/under-control/src/third_party/blink/renderer/core/view_transition/view_transition_options.idl b/tools/under-control/src/third_party/blink/renderer/core/view_transition/view_transition_options.idl index 561a0ba2..59cdb19d 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/view_transition/view_transition_options.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/view_transition/view_transition_options.idl @@ -3,5 +3,5 @@ // found in the LICENSE file. dictionary ViewTransitionOptions { ViewTransitionCallback? update = null; - sequence? type = null; + sequence? types = null; }; diff --git a/tools/under-control/src/third_party/blink/renderer/core/view_transition/view_transition_type_set.idl b/tools/under-control/src/third_party/blink/renderer/core/view_transition/view_transition_type_set.idl new file mode 100755 index 00000000..314ac622 --- /dev/null +++ b/tools/under-control/src/third_party/blink/renderer/core/view_transition/view_transition_type_set.idl @@ -0,0 +1,8 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +[Exposed=Window, RuntimeEnabled=ViewTransitionTypes] +interface ViewTransitionTypeSet { + setlike; + [RaisesException] void add(DOMString key); +}; diff --git a/tools/under-control/src/third_party/blink/renderer/extensions/webview/web_view.idl b/tools/under-control/src/third_party/blink/renderer/extensions/webview/web_view.idl index 9f85d72d..59cf9651 100755 --- a/tools/under-control/src/third_party/blink/renderer/extensions/webview/web_view.idl +++ b/tools/under-control/src/third_party/blink/renderer/extensions/webview/web_view.idl @@ -20,5 +20,5 @@ dictionary GetMediaIntegrityTokenProviderParams { // time to resolve (> 1s). // // The promise may reject as a MediaIntegrityError. - [NewObject, CallWith=ScriptState, HighEntropy, RaisesException, RuntimeEnabled=BlinkExtensionWebViewMediaIntegrity] Promise getExperimentalMediaIntegrityTokenProvider(GetMediaIntegrityTokenProviderParams params); + [NewObject, CallWith=ScriptState, HighEntropy, RaisesException, RuntimeEnabled=BlinkExtensionWebViewMediaIntegrity, SecureContext] Promise getExperimentalMediaIntegrityTokenProvider(GetMediaIntegrityTokenProviderParams params); }; 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 1975cee1..9958cada 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 @@ -5,10 +5,16 @@ // Information about a Bidding and Auction server style auction. // https://github.com/WICG/turtledove/blob/main/FLEDGE_browser_bidding_and_auction_API.md +dictionary AdAuctionDataBuyerConfig { + unsigned long targetSize; +}; + dictionary AdAuctionDataConfig { required USVString seller; - // TODO(1473331): Make `coordinator` required. + // TODO(crbug.com/40278958): Make `coordinator` required. USVString coordinatorOrigin; + unsigned long requestSize; + record perBuyerConfig; }; dictionary AdAuctionData { diff --git a/tools/under-control/src/third_party/blink/renderer/modules/app_banner/before_install_prompt_event.idl b/tools/under-control/src/third_party/blink/renderer/modules/app_banner/before_install_prompt_event.idl index 92fed78e..8500ee86 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/app_banner/before_install_prompt_event.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/app_banner/before_install_prompt_event.idl @@ -9,5 +9,5 @@ [CallWith=ExecutionContext] constructor(DOMString type, optional BeforeInstallPromptEventInit eventInitDict = {}); [HighEntropy=Direct, Measure] readonly attribute FrozenArray platforms; [CallWith=ScriptState, RaisesException] readonly attribute Promise userChoice; - [CallWith=ScriptState, RaisesException] Promise prompt(); + [CallWith=ScriptState, RaisesException] Promise prompt(); }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/badging/navigator_badge.idl b/tools/under-control/src/third_party/blink/renderer/modules/badging/navigator_badge.idl index ec1b035c..db1daff4 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/badging/navigator_badge.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/badging/navigator_badge.idl @@ -8,8 +8,8 @@ ImplementedAs=NavigatorBadge ] partial interface Navigator { [CallWith=ScriptState, MeasureAs=BadgeSet, RaisesException] - Promise setAppBadge(optional [EnforceRange] unsigned long long contents); + Promise setAppBadge(optional [EnforceRange] unsigned long long contents); [CallWith=ScriptState, MeasureAs=BadgeClear, RaisesException] - Promise clearAppBadge(); + Promise clearAppBadge(); }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/badging/worker_navigator_badge.idl b/tools/under-control/src/third_party/blink/renderer/modules/badging/worker_navigator_badge.idl index 4fd1c27b..1e2a3e83 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/badging/worker_navigator_badge.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/badging/worker_navigator_badge.idl @@ -8,8 +8,8 @@ ImplementedAs=NavigatorBadge ] partial interface WorkerNavigator { [Exposed=ServiceWorker, CallWith=ScriptState, MeasureAs=BadgeSet, RaisesException] - Promise setAppBadge(optional [EnforceRange] unsigned long long contents); + Promise setAppBadge(optional [EnforceRange] unsigned long long contents); [Exposed=ServiceWorker, CallWith=ScriptState, MeasureAs=BadgeClear, RaisesException] - Promise clearAppBadge(); + Promise clearAppBadge(); }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/clipboard/clipboard.idl b/tools/under-control/src/third_party/blink/renderer/modules/clipboard/clipboard.idl index a0d3c075..46896974 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/clipboard/clipboard.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/clipboard/clipboard.idl @@ -18,7 +18,6 @@ dictionary ClipboardUnsanitizedFormats { ] Promise> read(); [MeasureAs=AsyncClipboardAPIUnsanitizedRead, - RuntimeEnabled=ClipboardUnsanitizedContent, CallWith=ScriptState, RaisesException ] Promise> read(ClipboardUnsanitizedFormats formats); diff --git a/tools/under-control/src/third_party/blink/renderer/modules/compute_pressure/pressure_observer.idl b/tools/under-control/src/third_party/blink/renderer/modules/compute_pressure/pressure_observer.idl index fd25b275..89a5457e 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/compute_pressure/pressure_observer.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/compute_pressure/pressure_observer.idl @@ -14,16 +14,15 @@ enum PressureSource { SecureContext ] interface PressureObserver { [ - MeasureAs=PressureObserver_Constructor, - RaisesException - ] constructor(PressureUpdateCallback callback, - optional PressureObserverOptions options = {}); + MeasureAs=PressureObserver_Constructor + ] constructor(PressureUpdateCallback callback); [ CallWith=ScriptState, MeasureAs=PressureObserver_Observe, RaisesException - ] Promise observe(PressureSource source); + ] Promise observe(PressureSource source, + optional PressureObserverOptions options = {}); [ MeasureAs=PressureObserver_Unobserve @@ -34,7 +33,7 @@ enum PressureSource { [ SameObject, SaveSameObject - ] static readonly attribute FrozenArray supportedSources; + ] static readonly attribute FrozenArray knownSources; [ MeasureAs=PressureObserver_TakeRecords diff --git a/tools/under-control/src/third_party/blink/renderer/modules/compute_pressure/pressure_observer_options.idl b/tools/under-control/src/third_party/blink/renderer/modules/compute_pressure/pressure_observer_options.idl index e4ea40ce..1bf6349c 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/compute_pressure/pressure_observer_options.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/compute_pressure/pressure_observer_options.idl @@ -4,5 +4,5 @@ // https://w3c.github.io/compute-pressure/#the-pressureobserveroptions-dictionary dictionary PressureObserverOptions { - double sampleRate = 1.0; + [EnforceRange] unsigned long sampleInterval = 0; }; 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 90c00b1c..e87acc74 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,5 +4,11 @@ // https://wicg.github.io/digital-identities/#the-digitalcredentialrequestoptions-dictionary dictionary DigitalCredentialRequestOptions { - required sequence providers; + required sequence providers; +}; + +// https://wicg.github.io/digital-identities/#dom-identityrequestprovider +dictionary IdentityRequestProvider { + required DOMString protocol; + required DOMString request; }; 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 c11e6dfe..5476af57 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 @@ -9,6 +9,10 @@ dictionary IdentityUserInfo { USVString picture; }; +dictionary IdentityResolveOptions { + USVString accountId; +}; + // https://fedidcg.github.io/FedCM/#identityprovider [ Exposed=Window, @@ -23,12 +27,12 @@ dictionary IdentityUserInfo { static void close(); [RuntimeEnabled=FedCmIdPRegistration, CallWith=ScriptState, ImplementedAs=registerIdentityProvider] - static Promise register(USVString configURL); + static Promise register(USVString configURL); [RuntimeEnabled=FedCmIdPRegistration, CallWith=ScriptState, ImplementedAs=unregisterIdentityProvider] static Promise unregister(USVString configURL); // Allows an IdP to return a token to the RP from the content area, as opposed to // over HTTP with the id_assertion_endpoint. [RuntimeEnabled=FedCmAuthz, CallWith=ScriptState] - static Promise resolve(USVString token); + static Promise resolve(USVString token, optional IdentityResolveOptions options = {}); }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/identity_provider_config.idl b/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/identity_provider_config.idl index a2456e23..4238277e 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/identity_provider_config.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/identity_provider_config.idl @@ -35,12 +35,6 @@ dictionary DigitalCredentialProvider { // An opaque map of parameters sent to wallets upon selection. record params; - - // Alternatively, a provider can also be specified by a protocol and a - // request. - DOMString protocol; - DOMString request; - DOMString publicKey; }; dictionary DigitalCredentialSelector { 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 04a05ab0..6303dc21 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 @@ -24,5 +24,5 @@ partial interface Navigator { ] interface NavigatorLogin { [CallWith=ScriptState, MeasureAs=FedCmIdpSigninStatusJsApi] - Promise setStatus(LoginStatus status); + Promise setStatus(LoginStatus status); }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/delegated_ink/ink.idl b/tools/under-control/src/third_party/blink/renderer/modules/delegated_ink/ink.idl index 8dac929d..cb9d0c7f 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/delegated_ink/ink.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/delegated_ink/ink.idl @@ -7,5 +7,5 @@ [ Exposed=Window ] interface Ink { - [CallWith=ScriptState, RaisesException] Promise requestPresenter(optional InkPresenterParam param = {}); + [CallWith=ScriptState, Measure, RaisesException] Promise requestPresenter(optional InkPresenterParam param = {}); }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/file_system_access/file_system_file_handle.idl b/tools/under-control/src/third_party/blink/renderer/modules/file_system_access/file_system_file_handle.idl index 1f650d6d..e33b458d 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/file_system_access/file_system_file_handle.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/file_system_access/file_system_file_handle.idl @@ -44,16 +44,16 @@ CallWith=ScriptState, RaisesException, MeasureAs=FileSystemAccessMoveRename - ] Promise move(USVString new_entry_name); + ] Promise move(USVString new_entry_name); [ CallWith=ScriptState, RaisesException, MeasureAs=FileSystemAccessMoveReparent - ] Promise move(FileSystemDirectoryHandle destination_directory); + ] Promise move(FileSystemDirectoryHandle destination_directory); [ CallWith=ScriptState, RaisesException, MeasureAs=FileSystemAccessMoveReparentAndRename - ] Promise move(FileSystemDirectoryHandle destination_directory, + ] Promise move(FileSystemDirectoryHandle destination_directory, USVString new_entry_name); }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/file_system_access/file_system_writable_file_stream.idl b/tools/under-control/src/third_party/blink/renderer/modules/file_system_access/file_system_writable_file_stream.idl index 75d0c22d..6acd5454 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/file_system_access/file_system_writable_file_stream.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/file_system_access/file_system_writable_file_stream.idl @@ -13,15 +13,15 @@ [ CallWith=ScriptState, RaisesException - ] Promise write((BufferSource or Blob or USVString or WriteParams) data); + ] Promise write((BufferSource or Blob or USVString or WriteParams) data); [ CallWith=ScriptState, RaisesException - ] Promise truncate(unsigned long long size); + ] Promise truncate(unsigned long long size); [ CallWith=ScriptState, RaisesException - ] Promise seek(unsigned long long offset); + ] Promise seek(unsigned long long offset); }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/lock_screen/lock_screen_data.idl b/tools/under-control/src/third_party/blink/renderer/modules/lock_screen/lock_screen_data.idl index d5426fcc..fe3f8236 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/lock_screen/lock_screen_data.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/lock_screen/lock_screen_data.idl @@ -16,8 +16,8 @@ Promise getData(DOMString key); [CallWith=ScriptState] - Promise setData(DOMString key, DOMString data); + Promise setData(DOMString key, DOMString data); [CallWith=ScriptState] - Promise deleteData(DOMString key); + Promise deleteData(DOMString key); }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/mediasession/chapter_information.idl b/tools/under-control/src/third_party/blink/renderer/modules/mediasession/chapter_information.idl index 6bd102f7..2b135914 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/mediasession/chapter_information.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/mediasession/chapter_information.idl @@ -4,8 +4,11 @@ // https://wicg.github.io/mediasession/#dictdef-chapterinformation -dictionary ChapterInformation { - DOMString title = ""; - double startTime = 0; - sequence artwork; +[ + Exposed=Window, + RuntimeEnabled=MediaSessionChapterInformation +] interface ChapterInformation { + readonly attribute DOMString title; + readonly attribute double startTime; + [SameObject] readonly attribute FrozenArray artwork; }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/mediasession/chapter_information_init.idl b/tools/under-control/src/third_party/blink/renderer/modules/mediasession/chapter_information_init.idl new file mode 100755 index 00000000..ffa9741b --- /dev/null +++ b/tools/under-control/src/third_party/blink/renderer/modules/mediasession/chapter_information_init.idl @@ -0,0 +1,11 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// https://wicg.github.io/mediasession/#dictdef-chapterinformation + +dictionary ChapterInformationInit { + DOMString title = ""; + double startTime = 0; + sequence artwork = []; +}; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/mediasession/media_metadata.idl b/tools/under-control/src/third_party/blink/renderer/modules/mediasession/media_metadata.idl index d97f048b..64a02110 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/mediasession/media_metadata.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/mediasession/media_metadata.idl @@ -13,5 +13,5 @@ attribute DOMString artist; attribute DOMString album; [CallWith=ScriptState, RaisesException=Setter] attribute FrozenArray artwork; - [RuntimeEnabled=MediaSessionChapterInformation, CallWith=ScriptState, RaisesException=Setter] attribute FrozenArray chapterInfo; + [RuntimeEnabled=MediaSessionChapterInformation, CallWith=ScriptState, RaisesException=Setter, SameObject] readonly attribute FrozenArray chapterInfo; }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/mediasession/media_metadata_init.idl b/tools/under-control/src/third_party/blink/renderer/modules/mediasession/media_metadata_init.idl index cbeff95d..a783234f 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/mediasession/media_metadata_init.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/mediasession/media_metadata_init.idl @@ -9,5 +9,5 @@ dictionary MediaMetadataInit { DOMString artist = ""; DOMString album = ""; sequence artwork = []; - sequence chapterInfo = []; + sequence chapterInfo = []; }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/mediastream/media_stream_track.idl b/tools/under-control/src/third_party/blink/renderer/modules/mediastream/media_stream_track.idl index 6fac1628..513bcad4 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/mediastream/media_stream_track.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/mediastream/media_stream_track.idl @@ -55,7 +55,7 @@ enum MediaStreamTrackState { MediaTrackConstraints getConstraints(); MediaTrackSettings getSettings(); // https://w3c.github.io/mediacapture-extensions/#mediastreamtrack-statistics - [SameObject, Measure] readonly attribute MediaStreamTrackVideoStats? stats; + [SameObject, Measure] readonly attribute (MediaStreamTrackVideoStats or MediaStreamTrackAudioStats)? stats; // https://w3c.github.io/mediacapture-handle/identity/ [RuntimeEnabled=CaptureHandle, MeasureAs=CaptureHandle] CaptureHandle? getCaptureHandle(); diff --git a/tools/under-control/src/third_party/blink/renderer/modules/mediastream/media_stream_track_audio_stats.idl b/tools/under-control/src/third_party/blink/renderer/modules/mediastream/media_stream_track_audio_stats.idl new file mode 100755 index 00000000..759a9a77 --- /dev/null +++ b/tools/under-control/src/third_party/blink/renderer/modules/mediastream/media_stream_track_audio_stats.idl @@ -0,0 +1,18 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +[ + Exposed=Window +] interface MediaStreamTrackAudioStats { + [CallWith=ScriptState] readonly attribute unsigned long long deliveredFrames; + [CallWith=ScriptState] readonly attribute DOMHighResTimeStamp deliveredFramesDuration; + [CallWith=ScriptState] readonly attribute unsigned long long totalFrames; + [CallWith=ScriptState] readonly attribute DOMHighResTimeStamp totalFramesDuration; + [CallWith=ScriptState] readonly attribute DOMHighResTimeStamp latency; + [CallWith=ScriptState] readonly attribute DOMHighResTimeStamp averageLatency; + [CallWith=ScriptState] readonly attribute DOMHighResTimeStamp minimumLatency; + [CallWith=ScriptState] readonly attribute DOMHighResTimeStamp maximumLatency; + [CallWith=ScriptState] void resetLatency(); + [CallWith=ScriptState] object toJSON(); +}; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/mediastream/testing/internals_media_stream.idl b/tools/under-control/src/third_party/blink/renderer/modules/mediastream/testing/internals_media_stream.idl index 64e48f8d..c4ddb966 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/mediastream/testing/internals_media_stream.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/mediastream/testing/internals_media_stream.idl @@ -5,7 +5,7 @@ [ ImplementedAs=InternalsMediaStream ] partial interface Internals { - [CallWith=ScriptState] Promise addFakeDevice( + [CallWith=ScriptState] Promise addFakeDevice( MediaDeviceInfo deviceInfo, MediaTrackConstraints capabilities, MediaStreamTrack? dataSource); 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 917a0c7d..d2c0e96b 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 @@ -36,4 +36,36 @@ dictionary MLComputeResult { CallWith=ScriptState, RaisesException ] MLBuffer createBuffer(MLBufferDescriptor descriptor); + + // TODO(crbug.com/328105506): enable partial MLBuffer reads/writes. + // TODO(crbug.com/40278771): consider moving arguments into a dictonary + // per W3C recommendations: + // https://w3ctag.github.io/design-principles/#prefer-dictionaries + [ + RuntimeEnabled=MachineLearningNeuralNetwork, + CallWith=ScriptState, + RaisesException + ] void writeBuffer( + MLBuffer dstBuffer, + [AllowShared] ArrayBufferView srcData, + optional MLSize64 srcElementOffset = 0, + optional MLSize64 srcElementSize); + + [ + RuntimeEnabled=MachineLearningNeuralNetwork, + CallWith=ScriptState, + RaisesException + ] void writeBuffer( + MLBuffer dstBuffer, + ArrayBuffer srcData, + optional MLSize64 srcByteOffset = 0, + optional MLSize64 srcByteSize); + + // TODO(crbug.com/328102504): enable transferable view to avoid copy. + [ + RuntimeEnabled=MachineLearningNeuralNetwork, + CallWith=ScriptState, + RaisesException + ] Promise readBuffer( + MLBuffer srcBuffer); }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/ml/ml_context_options.idl b/tools/under-control/src/third_party/blink/renderer/modules/ml/ml_context_options.idl index 71d4da5a..de21161a 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/ml/ml_context_options.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/ml/ml_context_options.idl @@ -22,7 +22,8 @@ enum MLDevicePreference { // https://www.w3.org/TR/webnn/#enumdef-mldevicetype enum MLDeviceType { "cpu", - "gpu" + "gpu", + "npu" }; enum MLPowerPreference { 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 637a55d3..887e039c 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 @@ -83,6 +83,14 @@ dictionary MLGruOptions { sequence activations; }; +dictionary MLGruCellOptions { + MLOperand bias; + MLOperand recurrentBias; + boolean resetAfter = true; + MLGruWeightLayout layout = "zrn"; + sequence activations; +}; + dictionary MLHardSigmoidOptions { float alpha = 0.2; float beta = 0.5; @@ -116,6 +124,14 @@ dictionary MLLstmOptions { sequence activations; }; +dictionary MLLstmCellOptions { + MLOperand bias; + MLOperand recurrentBias; + MLOperand peepholeWeight; + MLLstmWeightLayout layout = "iofg"; + sequence activations; +}; + enum MLPaddingMode { "constant", "edge", @@ -258,6 +274,9 @@ dictionary MLTriangularOptions { [EnforceRange] unsigned long steps, [EnforceRange] unsigned long hiddenSize, optional MLGruOptions options = {}); + [RaisesException] MLOperand gruCell(MLOperand input, MLOperand weight, MLOperand recurrentWeight, MLOperand hiddenState, + [EnforceRange] unsigned long hiddenSize, optional MLGruCellOptions options = {}); + [RaisesException] MLOperand hardSigmoid(MLOperand x, optional MLHardSigmoidOptions options = {}); [RaisesException] MLActivation hardSigmoid(optional MLHardSigmoidOptions options = {}); @@ -280,6 +299,10 @@ dictionary MLTriangularOptions { [EnforceRange] unsigned long steps, [EnforceRange] unsigned long hiddenSize, optional MLLstmOptions options = {}); + [RaisesException] sequence lstmCell(MLOperand input, MLOperand weight, MLOperand recurrentWeight, + MLOperand hiddenState, MLOperand cellState, [EnforceRange] unsigned long hiddenSize, + optional MLLstmCellOptions options = {}); + [RaisesException] MLOperand pad(MLOperand input, sequence<[EnforceRange] unsigned long> beginningPadding, sequence<[EnforceRange] unsigned long> endingPadding, optional MLPadOptions options = {}); diff --git a/tools/under-control/src/third_party/blink/renderer/modules/model_execution/model_generic_session.idl b/tools/under-control/src/third_party/blink/renderer/modules/model_execution/model_generic_session.idl index e33b4a89..ba077a9e 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/model_execution/model_generic_session.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/model_execution/model_generic_session.idl @@ -7,6 +7,6 @@ Exposed=Window ] interface ModelGenericSession { - [CallWith=ScriptState, RaisesException] Promise execute(DOMString input); - [CallWith=ScriptState, RaisesException] ReadableStream executeStreaming(DOMString input); + [Measure, CallWith=ScriptState, RaisesException] Promise execute(DOMString input); + [Measure, CallWith=ScriptState, RaisesException] ReadableStream executeStreaming(DOMString input); }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/model_execution/model_manager.idl b/tools/under-control/src/third_party/blink/renderer/modules/model_execution/model_manager.idl index 8fb8da57..7f77c308 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/model_execution/model_manager.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/model_execution/model_manager.idl @@ -9,8 +9,9 @@ enum GenericModelAvailability { "readily", "after-download", "no" }; Exposed=Window ] interface ModelManager { - [CallWith=ScriptState, RaisesException] Promise canCreateGenericSession(); - [CallWith=ScriptState, RaisesException] Promise createGenericSession( + [Measure, CallWith=ScriptState, RaisesException] Promise canCreateGenericSession(); + [Measure, CallWith=ScriptState, RaisesException] Promise createGenericSession( optional ModelGenericSessionOptions options = {} ); + [Measure, CallWith=ScriptState, RaisesException] Promise defaultGenericSessionOptions(); }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/payments/payment_manager.idl b/tools/under-control/src/third_party/blink/renderer/modules/payments/payment_manager.idl index 319bf6ad..6ff91fb6 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/payments/payment_manager.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/payments/payment_manager.idl @@ -18,5 +18,5 @@ enum PaymentDelegation { ] interface PaymentManager { [SameObject, DeprecateAs=PaymentInstruments, RuntimeEnabled=PaymentInstruments] readonly attribute PaymentInstruments instruments; attribute DOMString userHint; - [CallWith=ScriptState, RaisesException] Promise enableDelegations(sequence delegations); + [CallWith=ScriptState, RaisesException] Promise enableDelegations(sequence delegations); }; 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 5f3e5943..32a7119c 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 @@ -14,8 +14,6 @@ attribute ArrayBuffer data; RTCEncodedAudioFrameMetadata getMetadata(); stringifier; - [RuntimeEnabled=RTCEncodedFrameSetMetadata, Measure, RaisesException] void - setTimestamp(unsigned long timestamp); [RuntimeEnabled=RTCEncodedFrameSetMetadata, Measure, RaisesException] void setMetadata(RTCEncodedAudioFrameMetadata metadata); }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_encoded_video_frame.idl b/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_encoded_video_frame.idl index 70ecf0df..f8225c59 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_encoded_video_frame.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_encoded_video_frame.idl @@ -22,7 +22,5 @@ enum RTCEncodedVideoFrameType { RTCEncodedVideoFrameMetadata getMetadata(); [RuntimeEnabled=RTCEncodedFrameSetMetadata, Measure, RaisesException] void setMetadata(RTCEncodedVideoFrameMetadata metadata); - [RuntimeEnabled=RTCEncodedFrameSetMetadata, Measure, RaisesException] void - setTimestamp(unsigned long timestamp); stringifier; }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/scheduler/scheduler.idl b/tools/under-control/src/third_party/blink/renderer/modules/scheduler/scheduler.idl index da19bad0..385ff296 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/scheduler/scheduler.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/scheduler/scheduler.idl @@ -20,6 +20,5 @@ enum AncestorStatus { ] interface Scheduler { [CallWith=ScriptState, MeasureAs=SchedulerPostTask, RaisesException] Promise postTask(SchedulerPostTaskCallback callback, optional SchedulerPostTaskOptions options = {}); [RuntimeEnabled=SchedulerYield, MeasureAs=SchedulerYield, CallWith=ScriptState, RaisesException] Promise yield(optional SchedulerYieldOptions options = {}); - [RuntimeEnabled=UnexposedTaskIds, CallWith=ScriptState, Exposed=Window] readonly attribute unsigned long taskId; - [RuntimeEnabled=UnexposedTaskIds, CallWith=ScriptState, Exposed=Window] AncestorStatus isAncestor(unsigned long parentId); + [RuntimeEnabled=UnexposedTaskIds, CallWith=ScriptState, Exposed=Window] attribute unsigned long taskId; }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/service_worker/clients.idl b/tools/under-control/src/third_party/blink/renderer/modules/service_worker/clients.idl index e9fc3454..5251bc3d 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/service_worker/clients.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/service_worker/clients.idl @@ -7,7 +7,7 @@ Exposed=ServiceWorker, ImplementedAs=ServiceWorkerClients ] interface Clients { - [CallWith=ScriptState] Promise get(DOMString id); + [CallWith=ScriptState] Promise get(DOMString id); [CallWith=ScriptState] Promise> matchAll(optional ClientQueryOptions options = {}); [CallWith=ScriptState] Promise openWindow(USVString url); [CallWith=ScriptState] Promise claim(); diff --git a/tools/under-control/src/third_party/blink/renderer/modules/service_worker/install_event.idl b/tools/under-control/src/third_party/blink/renderer/modules/service_worker/install_event.idl index 51f96938..56c244e0 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/service_worker/install_event.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/service_worker/install_event.idl @@ -10,10 +10,4 @@ constructor(DOMString type, optional ExtendableEventInit eventInitDict = {}); // https://w3c.github.io/ServiceWorker/#ref-for-dom-installevent-addroutes [RuntimeEnabled=ServiceWorkerStaticRouter, CallWith=ScriptState, RaisesException, MeasureAs=ServiceWorkerStaticRouter_AddRoutes] Promise addRoutes((RouterRule or sequence) rules); - - // Deprecated. - // See: - // https://github.com/WICG/service-worker-static-routing-api/blob/main/README.md#how-chrome-implements-this - // TODO(crbug.com/329285464): remove this method. - [RuntimeEnabled=ServiceWorkerStaticRouter, CallWith=ScriptState, RaisesException, MeasureAs=ServiceWorkerStaticRouter_RegisterRouter] Promise registerRouter((RouterRule or sequence) rules); }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/service_worker/router_condition.idl b/tools/under-control/src/third_party/blink/renderer/modules/service_worker/router_condition.idl index 633ce1b8..6b6dc0b5 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/service_worker/router_condition.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/service_worker/router_condition.idl @@ -23,4 +23,10 @@ dictionary RouterCondition { // `ImplementedAs` is necessary to avoid conflicts with C++ keyword `or`. // Chrome WebIDL compiler emits error without the leading underscore. [ImplementedAs=orConditions] sequence _or; + + // Experimental. + // For the `not` condition. + // `ImplementedAs` is necessary to avoid conflicts with C++ keyword `not`. + // Chrome WebIDL compiler emits error without the leading underscore. + [ImplementedAs=notCondition] RouterCondition _not; }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/shapedetection/detected_barcode.idl b/tools/under-control/src/third_party/blink/renderer/modules/shapedetection/detected_barcode.idl index e476b283..f427bfda 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/shapedetection/detected_barcode.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/shapedetection/detected_barcode.idl @@ -10,5 +10,5 @@ dictionary DetectedBarcode { required DOMString format; // 4 corner points in clockwise direction starting with top-left. Due to // possible perspective distortions, this is not necessarily a rectangle. - required FrozenArray cornerPoints; + required sequence cornerPoints; }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/shapedetection/detected_face.idl b/tools/under-control/src/third_party/blink/renderer/modules/shapedetection/detected_face.idl index c48ab082..daa2920a 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/shapedetection/detected_face.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/shapedetection/detected_face.idl @@ -7,5 +7,5 @@ dictionary DetectedFace { // TODO(xianglu): Implement any other fields. https://crbug.com/646083 required DOMRectReadOnly boundingBox; - required FrozenArray landmarks; + required sequence landmarks; }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/shapedetection/detected_text.idl b/tools/under-control/src/third_party/blink/renderer/modules/shapedetection/detected_text.idl index df51b78a..aabc1f84 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/shapedetection/detected_text.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/shapedetection/detected_text.idl @@ -9,5 +9,5 @@ dictionary DetectedText { required DOMRectReadOnly boundingBox; // 4 corner points in clockwise direction starting with top-left. Due to // possible perspective distortions, this is not necessarily a rectangle. - required FrozenArray cornerPoints; + required sequence cornerPoints; }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/shared_storage/shared_storage.idl b/tools/under-control/src/third_party/blink/renderer/modules/shared_storage/shared_storage.idl index 9065a623..01af65bd 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/shared_storage/shared_storage.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/shared_storage/shared_storage.idl @@ -72,7 +72,7 @@ ] Promise run(DOMString name, optional SharedStorageRunOperationMethodOptions options); [ - RuntimeEnabled=SharedStorageAPIM124, + RuntimeEnabled=SharedStorageAPIM125, CallWith=ScriptState, RaisesException, MeasureAs=SharedStorageAPI_CreateWorklet_Method diff --git a/tools/under-control/src/third_party/blink/renderer/modules/shared_storage/shared_storage_worklet.idl b/tools/under-control/src/third_party/blink/renderer/modules/shared_storage/shared_storage_worklet.idl index b222dfd6..9cafcfb2 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/shared_storage/shared_storage_worklet.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/shared_storage/shared_storage_worklet.idl @@ -15,7 +15,7 @@ typedef (USVString or FencedFrameConfig) SharedStorageResponse; ] Promise addModule(USVString moduleURL, optional WorkletOptions options = {}); [ - RuntimeEnabled=SharedStorageAPIM124, + RuntimeEnabled=SharedStorageAPIM125, Exposed=Window, CallWith=ScriptState, RaisesException, @@ -25,7 +25,7 @@ typedef (USVString or FencedFrameConfig) SharedStorageResponse; optional SharedStorageRunOperationMethodOptions options); [ - RuntimeEnabled=SharedStorageAPIM124, + RuntimeEnabled=SharedStorageAPIM125, Exposed=Window, CallWith=ScriptState, RaisesException, diff --git a/tools/under-control/src/third_party/blink/renderer/modules/wake_lock/wake_lock_sentinel.idl b/tools/under-control/src/third_party/blink/renderer/modules/wake_lock/wake_lock_sentinel.idl index 802bb85f..6445d2d1 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/wake_lock/wake_lock_sentinel.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/wake_lock/wake_lock_sentinel.idl @@ -14,5 +14,5 @@ readonly attribute boolean released; readonly attribute WakeLockType type; - [CallWith=ScriptState] Promise release(); + [CallWith=ScriptState] Promise release(); }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/webaudio/audio_context.idl b/tools/under-control/src/third_party/blink/renderer/modules/webaudio/audio_context.idl index 6ade0a94..65038c1b 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/webaudio/audio_context.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/webaudio/audio_context.idl @@ -40,9 +40,9 @@ dictionary AudioSinkOptions { ActiveScriptWrappable ] interface AudioContext : BaseAudioContext { [HighEntropy, CallWith=ExecutionContext, RaisesException, Measure] constructor(optional AudioContextOptions contextOptions = {}); - [MeasureAs=AudioContextSuspend, RaisesException, CallWith=ScriptState, ImplementedAs=suspendContext] Promise suspend(); - [MeasureAs=AudioContextClose, RaisesException, CallWith=ScriptState, ImplementedAs=closeContext] Promise close(); - [MeasureAs=AudioContextResume, RaisesException, CallWith=ScriptState, ImplementedAs=resumeContext] Promise resume(); + [MeasureAs=AudioContextSuspend, RaisesException, CallWith=ScriptState, ImplementedAs=suspendContext] Promise suspend(); + [MeasureAs=AudioContextClose, RaisesException, CallWith=ScriptState, ImplementedAs=closeContext] Promise close(); + [MeasureAs=AudioContextResume, RaisesException, CallWith=ScriptState, ImplementedAs=resumeContext] Promise resume(); // Output timestamp [MeasureAs=AudioContextGetOutputTimestamp, CallWith=ScriptState] AudioTimestamp getOutputTimestamp(); @@ -57,6 +57,6 @@ dictionary AudioSinkOptions { [RaisesException, MeasureAs=AudioContextCreateMediaStreamDestination] MediaStreamAudioDestinationNode createMediaStreamDestination(); [MeasureAs=AudioContextSinkId, SecureContext] readonly attribute (DOMString or AudioSinkInfo) sinkId; - [MeasureAs=AudioContextSetSinkId, RaisesException, CallWith=ScriptState, SecureContext] Promise setSinkId((DOMString or AudioSinkOptions) sinkId); + [MeasureAs=AudioContextSetSinkId, RaisesException, CallWith=ScriptState, SecureContext] Promise setSinkId((DOMString or AudioSinkOptions) sinkId); [SecureContext] attribute EventHandler onsinkchange; }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/webaudio/offline_audio_context.idl b/tools/under-control/src/third_party/blink/renderer/modules/webaudio/offline_audio_context.idl index 10ee612d..e74aea3f 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/webaudio/offline_audio_context.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/webaudio/offline_audio_context.idl @@ -33,6 +33,6 @@ attribute EventHandler oncomplete; readonly attribute unsigned long length; [HighEntropy, CallWith=ScriptState, RaisesException, ImplementedAs=startOfflineRendering, MeasureAs=OfflineAudioContextStartRendering] Promise startRendering(); - [RaisesException, CallWith=ScriptState, ImplementedAs=suspendContext, MeasureAs=OfflineAudioContextSuspend] Promise suspend(double suspendTime); - [RaisesException, MeasureAs=OfflineAudioContextResume, CallWith=ScriptState, ImplementedAs=resumeContext] Promise resume(); + [RaisesException, CallWith=ScriptState, ImplementedAs=suspendContext, MeasureAs=OfflineAudioContextSuspend] Promise suspend(double suspendTime); + [RaisesException, MeasureAs=OfflineAudioContextResume, CallWith=ScriptState, ImplementedAs=resumeContext] Promise resume(); }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/webcodecs/audio_decoder.idl b/tools/under-control/src/third_party/blink/renderer/modules/webcodecs/audio_decoder.idl index 574e9681..41f9206e 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/webcodecs/audio_decoder.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/webcodecs/audio_decoder.idl @@ -45,7 +45,7 @@ // Resolved after all output for earlier decode requests has been emitted. // // The next decode request must be for a keyframe. - [RaisesException] Promise flush(); + [RaisesException] Promise flush(); // Reset all codec state, including all pending requests. // diff --git a/tools/under-control/src/third_party/blink/renderer/modules/webcodecs/audio_encoder.idl b/tools/under-control/src/third_party/blink/renderer/modules/webcodecs/audio_encoder.idl index ab012bb1..f05bc276 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/webcodecs/audio_encoder.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/webcodecs/audio_encoder.idl @@ -34,7 +34,7 @@ // Enqueues a request to produce outputs for all already encoded data. // Resolved after emitting outputs for all previously encoded data. [RaisesException] - Promise flush(); + Promise flush(); // Discard all pending work and current encoder configuration. // diff --git a/tools/under-control/src/third_party/blink/renderer/modules/webcodecs/video_decoder.idl b/tools/under-control/src/third_party/blink/renderer/modules/webcodecs/video_decoder.idl index ad48b9c4..fc66d4b6 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/webcodecs/video_decoder.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/webcodecs/video_decoder.idl @@ -59,7 +59,7 @@ // TODO(sandersd): Consider relaxing the keyframe requirement. // TODO(sandersd): Indicate whether the flush() completed successfully or due // to a reset. - [RaisesException] Promise flush(); + [RaisesException] Promise flush(); // Discard all pending decode requests. // diff --git a/tools/under-control/src/third_party/blink/renderer/modules/webcodecs/video_encoder.idl b/tools/under-control/src/third_party/blink/renderer/modules/webcodecs/video_encoder.idl index fe51dc4c..7117fadb 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/webcodecs/video_encoder.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/webcodecs/video_encoder.idl @@ -36,7 +36,7 @@ // Enqueues a request to produce outputs for all already encoded frames. // Resolved after emitting outputs for all previously encoded frames. [RaisesException] - Promise flush(); + Promise flush(); // Discard all pending work and current encoder configuration. // diff --git a/tools/under-control/src/third_party/blink/renderer/modules/webcodecs/video_pixel_format.idl b/tools/under-control/src/third_party/blink/renderer/modules/webcodecs/video_pixel_format.idl index 7e722b77..cbb76cfa 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/webcodecs/video_pixel_format.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/webcodecs/video_pixel_format.idl @@ -7,28 +7,43 @@ enum VideoPixelFormat { // 4:2:0 Y, U, V "I420", + "I420P10", + "I420P12", // 4:2:0 Y, U, V, A "I420A", + "I420AP10", // 4:2:2 Y, U, V "I422", + "I422P10", + "I422P12", + + // 4:2:2 Y, U, V, A + "I422A", + "I422AP10", // 4:4:4 Y, U, V "I444", + "I444P10", + "I444P12", + + // 4:4:4 Y, U, V, A + "I444A", + "I444AP10", // 4:2:0 Y, UV "NV12", - // 32bpp RGBA + // 4:4:4 RGBA "RGBA", - // 32bpp RGBX (opaque) + // 4:4:4 RGBX (opaque) "RGBX", - // 32bpp BGRA + // 4:4:4 BGRA "BGRA", - // 32bpp BGRX (opaque) + // 4:4:4 BGRX (opaque) "BGRX", }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/webgl/webgl2_rendering_context_base.idl b/tools/under-control/src/third_party/blink/renderer/modules/webgl/webgl2_rendering_context_base.idl index 16ccf9b8..456775e2 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/webgl/webgl2_rendering_context_base.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/webgl/webgl2_rendering_context_base.idl @@ -305,7 +305,7 @@ interface mixin WebGL2RenderingContextBase { [RaisesException] void texImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, ImageBitmap bitmap); void texImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, - [AllowShared, BufferSourceTypeNoSizeLimit] ArrayBufferView srcData, GLuint srcOffset); + [AllowShared, BufferSourceTypeNoSizeLimit] ArrayBufferView srcData, GLintptr srcOffset); void texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, GLintptr offset); void texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, ImageData data); [CallWith=ScriptState, RaisesException] void texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, HTMLImageElement image); @@ -316,7 +316,7 @@ interface mixin WebGL2RenderingContextBase { [RaisesException] void texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, ImageBitmap bitmap); void texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, - [AllowShared, BufferSourceTypeNoSizeLimit] ArrayBufferView srcData, GLuint srcOffset); + [AllowShared, BufferSourceTypeNoSizeLimit] ArrayBufferView srcData, GLintptr srcOffset); void texStorage2D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); void texStorage3D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); void texImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, GLintptr offset); diff --git a/tools/under-control/src/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.idl b/tools/under-control/src/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.idl index 2a38371d..34708029 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.idl @@ -736,5 +736,5 @@ interface mixin WebGLRenderingContextBase { [RuntimeEnabled=OffscreenCanvasCommit] void commit(); // WebXR Device API support - [RuntimeEnabled=WebXR, SecureContext, CallWith=ScriptState, RaisesException, HighEntropy, MeasureAs=WebGLRenderingContextMakeXRCompatible] Promise makeXRCompatible(); + [RuntimeEnabled=WebXR, SecureContext, CallWith=ScriptState, RaisesException, HighEntropy, MeasureAs=WebGLRenderingContextMakeXRCompatible] Promise makeXRCompatible(); }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_buffer.idl b/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_buffer.idl index c92d0485..5c7cf6f2 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_buffer.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_buffer.idl @@ -10,7 +10,7 @@ typedef unsigned long long GPUSize64Out; Exposed=(Window, Worker), SecureContext ] interface GPUBuffer { - [CallWith=ScriptState, RaisesException] Promise mapAsync( + [CallWith=ScriptState, RaisesException] Promise mapAsync( GPUMapModeFlags mode, optional GPUSize64 offset = 0, optional GPUSize64 size); diff --git a/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_queue.idl b/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_queue.idl index cd2be3bc..85e2da28 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_queue.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_queue.idl @@ -10,7 +10,7 @@ ] interface GPUQueue { [CallWith=ScriptState] void submit(sequence buffers); - [CallWith=ScriptState] Promise onSubmittedWorkDone(); + [CallWith=ScriptState] Promise onSubmittedWorkDone(); // TODO(crbug.com/1088107): Merge these overloads into one with // [AllowShared] BufferSource (or whatever the upstream spec has), which diff --git a/tools/under-control/src/third_party/blink/renderer/modules/webshare/navigator_share.idl b/tools/under-control/src/third_party/blink/renderer/modules/webshare/navigator_share.idl index a562c5bb..676c97cf 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/webshare/navigator_share.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/webshare/navigator_share.idl @@ -12,5 +12,5 @@ boolean canShare(optional ShareData data = {}); [SecureContext, CallWith=ScriptState, RaisesException, MeasureAs=WebShareShare] - Promise share(optional ShareData data = {}); + Promise share(optional ShareData data = {}); }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/webtransport/web_transport.idl b/tools/under-control/src/third_party/blink/renderer/modules/webtransport/web_transport.idl index 5667b26f..aec6924a 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/webtransport/web_transport.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/webtransport/web_transport.idl @@ -20,7 +20,7 @@ readonly attribute WebTransportDatagramDuplexStream datagrams; void close(optional WebTransportCloseInfo closeInfo = {}); - readonly attribute Promise ready; + [CallWith=ScriptState] readonly attribute Promise ready; [CallWith=ScriptState] readonly attribute Promise closed; [CallWith=ScriptState, RuntimeEnabled=WebTransportStats] diff --git a/tools/under-control/src/third_party/blink/renderer/modules/webusb/usb_device.idl b/tools/under-control/src/third_party/blink/renderer/modules/webusb/usb_device.idl index 658ea75a..acc9b5ba 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/webusb/usb_device.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/webusb/usb_device.idl @@ -36,19 +36,19 @@ enum USBTransferStatus { readonly attribute FrozenArray configurations; readonly attribute boolean opened; - [CallWith=ScriptState, MeasureAs=UsbDeviceOpen, RaisesException] Promise open(); - [CallWith=ScriptState, MeasureAs=UsbDeviceClose, RaisesException] Promise close(); - [CallWith=ScriptState, MeasureAs=UsbDeviceForget, RaisesException] Promise forget(); - [CallWith=ScriptState, MeasureAs=UsbDeviceSelectConfiguration, RaisesException] Promise selectConfiguration(octet configurationValue); - [CallWith=ScriptState, MeasureAs=UsbDeviceClaimInterface, RaisesException] Promise claimInterface(octet interfaceNumber); - [CallWith=ScriptState, MeasureAs=UsbDeviceReleaseInterface, RaisesException] Promise releaseInterface(octet interfaceNumber); - [CallWith=ScriptState, MeasureAs=UsbDeviceSelectAlternateInterface, RaisesException] Promise selectAlternateInterface(octet interfaceNumber, octet alternateSetting); + [CallWith=ScriptState, MeasureAs=UsbDeviceOpen, RaisesException] Promise open(); + [CallWith=ScriptState, MeasureAs=UsbDeviceClose, RaisesException] Promise close(); + [CallWith=ScriptState, MeasureAs=UsbDeviceForget, RaisesException] Promise forget(); + [CallWith=ScriptState, MeasureAs=UsbDeviceSelectConfiguration, RaisesException] Promise selectConfiguration(octet configurationValue); + [CallWith=ScriptState, MeasureAs=UsbDeviceClaimInterface, RaisesException] Promise claimInterface(octet interfaceNumber); + [CallWith=ScriptState, MeasureAs=UsbDeviceReleaseInterface, RaisesException] Promise releaseInterface(octet interfaceNumber); + [CallWith=ScriptState, MeasureAs=UsbDeviceSelectAlternateInterface, RaisesException] Promise selectAlternateInterface(octet interfaceNumber, octet alternateSetting); [CallWith=ScriptState, MeasureAs=UsbDeviceControlTransferIn, RaisesException] Promise controlTransferIn(USBControlTransferParameters setup, unsigned short length); [CallWith=ScriptState, MeasureAs=UsbDeviceControlTransferOut, RaisesException] Promise controlTransferOut(USBControlTransferParameters setup, optional BufferSource data); - [CallWith=ScriptState, MeasureAs=UsbDeviceClearHalt, RaisesException] Promise clearHalt(USBDirection direction, octet endpointNumber); + [CallWith=ScriptState, MeasureAs=UsbDeviceClearHalt, RaisesException] Promise clearHalt(USBDirection direction, octet endpointNumber); [CallWith=ScriptState, MeasureAs=UsbDeviceTransferIn, RaisesException] Promise transferIn(octet endpointNumber, unsigned long length); [CallWith=ScriptState, MeasureAs=UsbDeviceTransferOut, RaisesException] Promise transferOut(octet endpointNumber, BufferSource data); [CallWith=ScriptState, MeasureAs=UsbDeviceIsochronousTransferIn, RaisesException] Promise isochronousTransferIn(octet endpointNumber, sequence packetLengths); [CallWith=ScriptState, MeasureAs=UsbDeviceIsochronousTransferOut, RaisesException] Promise isochronousTransferOut(octet endpointNumber, BufferSource data, sequence packetLengths); - [CallWith=ScriptState, MeasureAs=UsbDeviceReset, RaisesException] Promise reset(); + [CallWith=ScriptState, MeasureAs=UsbDeviceReset, RaisesException] Promise reset(); }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/xr/xr_session.idl b/tools/under-control/src/third_party/blink/renderer/modules/xr/xr_session.idl index 2b2c9660..6e01a5d8 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/xr/xr_session.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/xr/xr_session.idl @@ -67,13 +67,13 @@ enum XRReflectionFormat { [RuntimeEnabled=WebXRFrameRate] attribute EventHandler onframeratechange; [RaisesException] void updateRenderState(optional XRRenderStateInit init = {}); - [RuntimeEnabled=WebXRFrameRate, RaisesException] Promise updateTargetFrameRate(float rate); + [RuntimeEnabled=WebXRFrameRate, RaisesException] Promise updateTargetFrameRate(float rate); [CallWith=ScriptState, RaisesException] Promise requestReferenceSpace(XRReferenceSpaceType type); long requestAnimationFrame(XRFrameRequestCallback callback); void cancelAnimationFrame(long handle); - [CallWith=ScriptState, Measure, RaisesException] Promise end(); + [CallWith=ScriptState, Measure, RaisesException] Promise end(); // https://github.com/immersive-web/hit-test/blob/master/hit-testing-explainer.md [CallWith=ScriptState, MeasureAs=XRSessionRequestHitTestSource, RaisesException] diff --git a/tools/under-control/src/third_party/blink/renderer/modules/xr/xr_system.idl b/tools/under-control/src/third_party/blink/renderer/modules/xr/xr_system.idl index fea1daeb..8b6100fe 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/xr/xr_system.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/xr/xr_system.idl @@ -9,7 +9,7 @@ RuntimeEnabled=WebXR ] interface XRSystem : EventTarget { attribute EventHandler ondevicechange; - [CallWith=ScriptState, DeprecateAs=XRSupportsSession, RaisesException] Promise supportsSession(XRSessionMode mode); + [CallWith=ScriptState, DeprecateAs=XRSupportsSession, RaisesException] Promise supportsSession(XRSessionMode mode); [CallWith=ScriptState, MeasureAs=XRIsSessionSupported, RaisesException] Promise isSessionSupported(XRSessionMode mode); [CallWith=ScriptState, MeasureAs=XRRequestSession, RaisesException] Promise requestSession(XRSessionMode mode, optional XRSessionInit options = {}); };