From 06ca3a807c255245d4c4bd8bc8520b9f305e0d63 Mon Sep 17 00:00:00 2001 From: uazo <29201891+uazo@users.noreply.github.com> Date: Thu, 15 Aug 2024 02:39:02 +0000 Subject: [PATCH] [AUTO][FILECONTROL] - version 128.0.6613.40 --- tools/under-control/src/RELEASE | 2 +- .../browser/aw_content_browser_client.cc | 53 +- .../browser/aw_field_trials.cc | 77 +- .../chrome/android/java/AndroidManifest.xml | 39 +- .../chrome_browsing_data_remover_delegate.cc | 76 +- .../chrome_browser_interface_binders.cc | 134 +- .../browser/chrome_content_browser_client.cc | 472 +- .../src/chrome/browser/prefs/browser_prefs.cc | 870 +--- .../src/chrome/browser/ui/tab_helpers.cc | 14 +- .../extensions/api/autofill_private.idl | 3 + .../extensions/api/autotest_private.idl | 2 + .../extensions/api/developer_private.idl | 12 +- .../common/extensions/api/downloads.idl | 2 +- .../extensions/api/passwords_private.idl | 13 +- .../extensions/api/settings_private.idl | 4 +- .../chrome_content_renderer_client.cc | 96 +- .../browser/web_contents/web_contents_impl.cc | 330 +- .../src/content/child/runtime_features.cc | 19 +- .../public/browser/content_browser_client.cc | 41 +- .../src/extensions/common/api/app_runtime.idl | 3 +- .../src/extensions/common/api/automation.idl | 5 +- .../common/api/declarative_net_request.idl | 37 +- .../common/api/web_accessible_resources.idl | 2 + tools/under-control/src/gin/v8_initializer.cc | 32 +- .../src/services/network/network_context.cc | 181 +- .../variations/fieldtrial_testing_config.json | 4558 ++++++++++------- .../use_counter/metrics/web_feature.mojom | 68 +- .../webpreferences/web_preferences.mojom | 9 + .../renderer/core/aom/accessible_node.idl | 2 + .../renderer/core/css/css_margin_rule.idl | 13 + .../blink/renderer/core/css/css_rule.idl | 3 +- .../core/css/cssom/css_unit_values.idl | 18 +- .../renderer/core/dom/aria_attributes.idl | 2 + .../blink/renderer/core/dom/element.idl | 1 + .../renderer/core/dom/invoker_element.idl | 4 +- .../blink/renderer/core/dom/part_root.idl | 9 +- .../blink/renderer/core/editing/selection.idl | 2 + .../{invoke_event.idl => command_event.idl} | 10 +- .../core/events/event_type_names.json5 | 3 +- .../renderer/core/events/pointer_event.idl | 2 +- .../core/events/pointer_event_init.idl | 2 +- .../renderer/core/exported/web_view_impl.cc | 150 +- .../blink/renderer/core/frame/settings.json5 | 8 +- .../core/html/canvas/text_metrics.idl | 5 + .../renderer/core/input/device_properties.idl | 11 - .../core/navigation_api/navigation.idl | 12 +- .../origin_trials/origin_trial_context.cc | 77 - .../core/{dom => scheduler}/idle_deadline.idl | 0 .../idle_request_callback.idl | 0 .../idle_request_options.idl | 0 .../{modules => core}/scheduler/scheduler.idl | 0 .../scheduler_post_task_callback.idl | 0 .../scheduler/scheduler_post_task_options.idl | 0 .../scheduler/scheduler_yield_options.idl | 0 .../scheduler/script_wrappable_task_state.idl | 0 .../scheduler/task_controller.idl | 0 .../scheduler/task_controller_init.idl | 0 .../scheduler/task_priority_change_event.idl | 0 .../task_priority_change_event_init.idl | 0 .../scheduler/task_signal.idl | 0 .../scheduler/task_signal_any_init.idl | 0 .../scheduler/window_idle_tasks.idl | 0 .../window_or_worker_global_scope_timers.idl | 0 .../scheduler/window_or_worker_scheduler.idl | 0 .../blink/renderer/core/testing/internals.idl | 2 +- .../view_transition/page_reveal_event.idl | 4 +- .../page_reveal_event_init.idl | 9 + .../core/view_transition/page_swap_event.idl | 2 + .../view_transition/page_swap_event_init.idl | 10 + .../blink/renderer/modules/ai/ai.idl | 34 +- .../renderer/modules/ai/ai_text_session.idl | 25 +- .../modules/ai/ai_text_session_options.idl | 3 +- .../blink/renderer/modules/ai/window_ai.idl | 20 - ...l => window_or_worker_global_scope_ai.idl} | 8 +- .../offscreen_canvas_rendering_context_2d.idl | 2 - ...tication_extensions_client_inputs_json.idl | 38 + .../authentication_response_json.idl | 12 +- .../authenticator_assertion_response_json.idl | 8 +- ...uthenticator_attestation_response_json.idl | 9 +- .../credential_report_options.idl} | 6 +- .../credentials_container.idl | 1 + .../public_key_credential.idl | 1 + ...public_key_credential_creation_options.idl | 2 +- ...c_key_credential_creation_options_json.idl | 40 - .../public_key_credential_descriptor_json.idl | 11 + .../public_key_credential_json.idl | 4 +- .../public_key_credential_report_options.idl | 8 + .../public_key_credential_request_options.idl | 2 +- ...ic_key_credential_request_options_json.idl | 15 + .../registration_response_json.idl | 12 +- .../delegated_ink_trail_presenter.idl | 2 +- .../document_picture_in_picture_options.idl | 1 + .../file_system_observer.idl | 14 +- .../blink/renderer/modules/ml/ml.idl | 15 +- .../blink/renderer/modules/ml/ml_context.idl | 57 +- .../blink/renderer/modules/ml/ml_model.idl | 24 - .../renderer/modules/ml/ml_model_loader.idl | 15 - .../blink/renderer/modules/ml/ml_tensor.idl | 10 - .../renderer/modules/ml/ml_tensor_info.idl | 27 - .../renderer/modules/ml/navigator_ml.idl | 8 +- .../renderer/modules/ml/webnn/ml_buffer.idl | 5 +- .../modules/ml/webnn/ml_buffer_descriptor.idl | 4 +- .../modules/ml/webnn/ml_graph_builder.idl | 63 +- .../modules/ml/worker_navigator_ml.idl | 4 +- .../modules/peerconnection/rtc_rtp_ack.idl | 8 + .../modules/peerconnection/rtc_rtp_acks.idl | 23 + .../rtc_rtp_header_extension_init.idl | 8 + .../peerconnection/rtc_rtp_packet_init.idl | 13 + .../peerconnection/rtc_rtp_send_result.idl | 9 + .../peerconnection/rtc_rtp_send_stream.idl | 18 + .../modules/peerconnection/rtc_rtp_sender.idl | 3 + .../modules/peerconnection/rtc_rtp_sent.idl | 12 + .../peerconnection/rtc_rtp_transport.idl | 12 +- .../fullscreen_permission_descriptor.idl | 7 + .../permissions/permission_descriptor.idl | 1 + .../modules/shared_storage/shared_storage.idl | 5 +- .../shared_storage/shared_storage_worklet.idl | 2 +- .../shared_storage_worklet_global_scope.idl | 4 - .../shared_storage_worklet_options.idl | 12 + .../modules/speech/speech_recognition.idl | 3 + .../modules/webaudio/audio_context.idl | 1 + .../webaudio/testing/internals_web_audio.idl | 1 + .../modules/webcodecs/video_encoder.idl | 4 + .../webcodecs/video_encoder_buffer.idl | 11 + .../video_encoder_encode_options.idl | 7 + .../webgl/webgl2_rendering_context_base.idl | 122 +- .../webgl/webgl_rendering_context_base.idl | 66 +- .../webgl_shader_pixel_local_storage.idl | 6 +- .../modules/webgpu/gpu_blend_component.idl | 4 + .../webgpu/gpu_canvas_configuration.idl | 12 + .../webgpu/gpu_programmable_pass_encoder.idl | 2 +- .../modules/webgpu/gpu_supported_features.idl | 3 + .../modules/webgpu/gpu_supported_limits.idl | 5 +- .../platform/runtime_enabled_features.json5 | 594 ++- .../global-interface-listing-expected.txt | 31 + 135 files changed, 5039 insertions(+), 3995 deletions(-) create mode 100755 tools/under-control/src/third_party/blink/renderer/core/css/css_margin_rule.idl rename tools/under-control/src/third_party/blink/renderer/core/events/{invoke_event.idl => command_event.idl} (56%) delete mode 100755 tools/under-control/src/third_party/blink/renderer/core/input/device_properties.idl rename tools/under-control/src/third_party/blink/renderer/core/{dom => scheduler}/idle_deadline.idl (100%) rename tools/under-control/src/third_party/blink/renderer/core/{dom => scheduler}/idle_request_callback.idl (100%) rename tools/under-control/src/third_party/blink/renderer/core/{dom => scheduler}/idle_request_options.idl (100%) rename tools/under-control/src/third_party/blink/renderer/{modules => core}/scheduler/scheduler.idl (100%) rename tools/under-control/src/third_party/blink/renderer/{modules => core}/scheduler/scheduler_post_task_callback.idl (100%) rename tools/under-control/src/third_party/blink/renderer/{modules => core}/scheduler/scheduler_post_task_options.idl (100%) rename tools/under-control/src/third_party/blink/renderer/{modules => core}/scheduler/scheduler_yield_options.idl (100%) rename tools/under-control/src/third_party/blink/renderer/{modules => core}/scheduler/script_wrappable_task_state.idl (100%) rename tools/under-control/src/third_party/blink/renderer/{modules => core}/scheduler/task_controller.idl (100%) rename tools/under-control/src/third_party/blink/renderer/{modules => core}/scheduler/task_controller_init.idl (100%) rename tools/under-control/src/third_party/blink/renderer/{modules => core}/scheduler/task_priority_change_event.idl (100%) rename tools/under-control/src/third_party/blink/renderer/{modules => core}/scheduler/task_priority_change_event_init.idl (100%) rename tools/under-control/src/third_party/blink/renderer/{modules => core}/scheduler/task_signal.idl (100%) rename tools/under-control/src/third_party/blink/renderer/{modules => core}/scheduler/task_signal_any_init.idl (100%) rename tools/under-control/src/third_party/blink/renderer/{modules => core}/scheduler/window_idle_tasks.idl (100%) rename tools/under-control/src/third_party/blink/renderer/{modules => core}/scheduler/window_or_worker_global_scope_timers.idl (100%) rename tools/under-control/src/third_party/blink/renderer/{modules => core}/scheduler/window_or_worker_scheduler.idl (100%) create mode 100755 tools/under-control/src/third_party/blink/renderer/core/view_transition/page_reveal_event_init.idl create mode 100755 tools/under-control/src/third_party/blink/renderer/core/view_transition/page_swap_event_init.idl delete mode 100755 tools/under-control/src/third_party/blink/renderer/modules/ai/window_ai.idl rename tools/under-control/src/third_party/blink/renderer/modules/ai/{dedicated_worker_global_scope_ai.idl => window_or_worker_global_scope_ai.idl} (57%) create mode 100755 tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/authentication_extensions_client_inputs_json.idl rename tools/under-control/src/third_party/blink/renderer/{core/input/device_properties_init.idl => modules/credentialmanagement/credential_report_options.idl} (54%) create mode 100755 tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/public_key_credential_descriptor_json.idl create mode 100755 tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/public_key_credential_report_options.idl create mode 100755 tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/public_key_credential_request_options_json.idl delete mode 100755 tools/under-control/src/third_party/blink/renderer/modules/ml/ml_model.idl delete mode 100755 tools/under-control/src/third_party/blink/renderer/modules/ml/ml_model_loader.idl delete mode 100755 tools/under-control/src/third_party/blink/renderer/modules/ml/ml_tensor.idl delete mode 100755 tools/under-control/src/third_party/blink/renderer/modules/ml/ml_tensor_info.idl create mode 100755 tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_rtp_ack.idl create mode 100755 tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_rtp_acks.idl create mode 100755 tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_rtp_header_extension_init.idl create mode 100755 tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_rtp_packet_init.idl create mode 100755 tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_rtp_send_result.idl create mode 100755 tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_rtp_send_stream.idl create mode 100755 tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_rtp_sent.idl create mode 100755 tools/under-control/src/third_party/blink/renderer/modules/permissions/fullscreen_permission_descriptor.idl create mode 100755 tools/under-control/src/third_party/blink/renderer/modules/shared_storage/shared_storage_worklet_options.idl create mode 100755 tools/under-control/src/third_party/blink/renderer/modules/webcodecs/video_encoder_buffer.idl diff --git a/tools/under-control/src/RELEASE b/tools/under-control/src/RELEASE index 1d98f2b66..99ecb8a28 100644 --- a/tools/under-control/src/RELEASE +++ b/tools/under-control/src/RELEASE @@ -1 +1 @@ -127.0.6533.120 +128.0.6613.40 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 56a6a9dde..ac8518aef 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 @@ -6,6 +6,7 @@ #include #include +#include #include #include #include @@ -82,6 +83,7 @@ #include "components/url_matcher/url_matcher.h" #include "components/url_matcher/url_util.h" #include "components/version_info/version_info.h" +#include "content/public/browser/browser_context.h" #include "content/public/browser/browser_task_traits.h" #include "content/public/browser/browser_thread.h" #include "content/public/browser/child_process_security_policy.h" @@ -462,6 +464,7 @@ void AwContentBrowserClient::AllowCertificateError( base::OnceClosure AwContentBrowserClient::SelectClientCertificate( content::BrowserContext* browser_context, + int process_id, content::WebContents* web_contents, net::SSLCertRequestInfo* cert_request_info, net::ClientCertIdentityList client_certs, @@ -891,11 +894,17 @@ bool AwContentBrowserClient::HandleExternalProtocol( // We don't need to care for |security_options| as the factories constructed // below are used only for navigation. + // We also don't care about retrieving cookies in this case because these will + // be schemes unrelated to the regular network stack so it doesn't make sense + // to look for cookies. Providing a nullopt for the cookie manager lets + // the AwProxyingURLLoaderFactory know to skip that work. if (content::BrowserThread::CurrentlyOn(content::BrowserThread::IO)) { // Manages its own lifetime. new android_webview::AwProxyingURLLoaderFactory( - frame_tree_node_id, std::move(receiver), mojo::NullRemote(), - true /* intercept_only */, std::nullopt /* security_options */, + std::nullopt /* cookie_manager */, nullptr /* cookie_access_policy */, + std::nullopt /* isolation_info*/, 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), std::nullopt /* navigation_id */); } else { @@ -908,7 +917,10 @@ bool AwContentBrowserClient::HandleExternalProtocol( browser_context_handle) { // Manages its own lifetime. new android_webview::AwProxyingURLLoaderFactory( - frame_tree_node_id, std::move(receiver), mojo::NullRemote(), + std::nullopt /* cookie_manager */, + nullptr /* cookie_access_policy */, + std::nullopt /* isolation_info*/, frame_tree_node_id, + std::move(receiver), mojo::NullRemote(), true /* intercept_only */, std::nullopt /* security_options */, nullptr /* xrw_allowlist_matcher */, @@ -1046,6 +1058,17 @@ void AwContentBrowserClient::WillCreateURLLoaderFactory( scoped_refptr browser_context_handle = base::MakeRefCounted( static_cast(browser_context)); + + mojo::PendingRemote cookie_manager; + browser_context->GetDefaultStoragePartition() + ->GetNetworkContext() + ->GetCookieManager(cookie_manager.InitWithNewPipeAndPassReceiver()); + + AwBrowserContext* aw_browser_context = + static_cast(browser_context); + AwCookieAccessPolicy* cookie_access_policy = + aw_browser_context->GetCookieManager()->cookie_access_policy(); + if (frame) { auto security_options = std::make_optional(); @@ -1075,21 +1098,21 @@ void AwContentBrowserClient::WillCreateURLLoaderFactory( content::GetIOThreadTaskRunner({})->PostTask( FROM_HERE, - base::BindOnce(&AwProxyingURLLoaderFactory::CreateProxy, - frame->GetFrameTreeNodeId(), std::move(proxied_receiver), - std::move(target_factory_remote), security_options, - std::move(xrw_allowlist_matcher), - std::move(browser_context_handle), navigation_id)); + base::BindOnce( + &AwProxyingURLLoaderFactory::CreateProxy, std::move(cookie_manager), + cookie_access_policy, isolation_info, frame->GetFrameTreeNodeId(), + std::move(proxied_receiver), std::move(target_factory_remote), + security_options, std::move(xrw_allowlist_matcher), + 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, // we don't pass a valid |security_options| here. - AwBrowserContext* aw_browser_context = - static_cast(browser_context); content::GetIOThreadTaskRunner({})->PostTask( FROM_HERE, base::BindOnce( - &AwProxyingURLLoaderFactory::CreateProxy, + &AwProxyingURLLoaderFactory::CreateProxy, std::move(cookie_manager), + cookie_access_policy, isolation_info, content::RenderFrameHost::kNoFrameTreeNodeId, std::move(proxied_receiver), std::move(target_factory_remote), std::nullopt /* security_options */, @@ -1191,6 +1214,14 @@ void AwContentBrowserClient::LogWebFeatureForCurrentPage( render_frame_host, feature); } +void AwContentBrowserClient::LogWebDXFeatureForCurrentPage( + content::RenderFrameHost* render_frame_host, + blink::mojom::WebDXFeature feature) { + DCHECK_CURRENTLY_ON(BrowserThread::UI); + page_load_metrics::MetricsWebContentsObserver::RecordFeatureUsage( + render_frame_host, feature); +} + content::ContentBrowserClient::PrivateNetworkRequestPolicyOverride AwContentBrowserClient::ShouldOverridePrivateNetworkRequestPolicy( content::BrowserContext* browser_context, diff --git a/tools/under-control/src/android_webview/browser/aw_field_trials.cc b/tools/under-control/src/android_webview/browser/aw_field_trials.cc index 7ef990180..3d249bc4d 100755 --- a/tools/under-control/src/android_webview/browser/aw_field_trials.cc +++ b/tools/under-control/src/android_webview/browser/aw_field_trials.cc @@ -6,8 +6,11 @@ #include "android_webview/common/aw_switches.h" #include "base/base_paths_android.h" +#include "base/check.h" #include "base/feature_list.h" #include "base/memory/raw_ref.h" +#include "base/metrics/field_trial.h" +#include "base/metrics/field_trial_params.h" #include "base/metrics/persistent_histogram_allocator.h" #include "base/path_service.h" #include "components/history/core/browser/features.h" @@ -37,6 +40,12 @@ class AwFeatureOverrides { AwFeatureOverrides& operator=(const AwFeatureOverrides& other) = delete; ~AwFeatureOverrides() { + for (const auto& field_trial_override : field_trial_overrides_) { + feature_list_->RegisterFieldTrialOverride( + field_trial_override.feature->name, + field_trial_override.override_state, + field_trial_override.field_trial); + } feature_list_->RegisterExtraFeatureOverrides(std::move(overrides_)); } @@ -54,9 +63,29 @@ class AwFeatureOverrides { base::FeatureList::OverrideState::OVERRIDE_DISABLE_FEATURE); } + // Enable or disable a feature with a field trial. This can be used for + // setting feature parameters. + void OverrideFeatureWithFieldTrial( + const base::Feature& feature, + base::FeatureList::OverrideState override_state, + base::FieldTrial* field_trial) { + field_trial_overrides_.emplace_back(FieldTrialOverride{ + .feature = raw_ref(feature), + .override_state = override_state, + .field_trial = field_trial, + }); + } + private: + struct FieldTrialOverride { + raw_ref feature; + base::FeatureList::OverrideState override_state; + raw_ptr field_trial; + }; + base::raw_ref feature_list_; std::vector overrides_; + std::vector field_trial_overrides_; }; } // namespace @@ -83,14 +112,6 @@ void AwFieldTrials::RegisterFeatureOverrides(base::FeatureList* feature_list) { aw_feature_overrides.DisableFeature( net::features::kThirdPartyStoragePartitioning); - if (!base::FeatureList::IsEnabled( - mojo::features::kMojoFixAssociatedHandleLeak)) { - // Disable support for partitioning blob URLs if the bug fix that prevents - // blob URL creation from hanging under certain conditions isn't enabled. - aw_feature_overrides.DisableFeature( - net::features::kSupportPartitionedBlobUrl); - } - // Disable the passthrough on WebView. aw_feature_overrides.DisableFeature( ::features::kDefaultPassthroughCommandDecoder); @@ -105,6 +126,10 @@ void AwFieldTrials::RegisterFeatureOverrides(base::FeatureList* feature_list) { // Disable fenced frames on WebView. aw_feature_overrides.DisableFeature(blink::features::kFencedFrames); + // Disable FLEDGE on WebView. + aw_feature_overrides.DisableFeature(blink::features::kAdInterestGroupAPI); + aw_feature_overrides.DisableFeature(blink::features::kFledge); + // Disable low latency overlay for WebView. There is currently no plan to // enable these optimizations in WebView though they are not fundamentally // impossible. @@ -205,9 +230,26 @@ void AwFieldTrials::RegisterFeatureOverrides(base::FeatureList* feature_list) { aw_feature_overrides.DisableFeature( safe_browsing::kSafeBrowsingNewGmsApiForBrowseUrlDatabaseCheck); - if (base::CommandLine::ForCurrentProcess()->HasSwitch( - switches::kDebugBlindauth)) { - aw_feature_overrides.EnableFeature(net::features::kEnableIpProtectionProxy); + // PaintHolding for OOPIFs. This should be a no-op since WebView doesn't use + // site isolation but field trial testing doesn't indicate that. Revisit when + // enabling site isolation. See crbug.com/356170748. + aw_feature_overrides.DisableFeature(blink::features::kPaintHoldingForIframes); + + if (base::CommandLine::ForCurrentProcess()->HasSwitch(switches::kDebugBsa)) { + // Feature parameters can only be set via a field trial. + const char kTrialName[] = "StudyDebugBsa"; + const char kGroupName[] = "GroupDebugBsa"; + base::FieldTrial* field_trial = + base::FieldTrialList::CreateFieldTrial(kTrialName, kGroupName); + // If field_trial is null, there was some unexpected name conflict. + CHECK(field_trial); + base::FieldTrialParams params; + params.emplace(net::features::kIpPrivacyTokenServer.name, + "https://staging-phosphor-pa.sandbox.googleapis.com"); + base::AssociateFieldTrialParams(kTrialName, kGroupName, params); + aw_feature_overrides.OverrideFeatureWithFieldTrial( + net::features::kEnableIpProtectionProxy, + base::FeatureList::OverrideState::OVERRIDE_ENABLE_FEATURE, field_trial); aw_feature_overrides.EnableFeature(network::features::kMaskedDomainList); } @@ -215,4 +257,17 @@ void AwFieldTrials::RegisterFeatureOverrides(base::FeatureList* feature_list) { // WebView. // TODO(b/344852824): Enable the feature for WebView aw_feature_overrides.DisableFeature(::features::kDIPS); + + // Async Safe Browsing check will be rolled out together with + // kHashPrefixRealTimeLookups on WebView. + aw_feature_overrides.DisableFeature( + safe_browsing::kSafeBrowsingAsyncRealTimeCheck); + + // WebView does not currently support the Permissions API (crbug.com/490120) + aw_feature_overrides.DisableFeature(::features::kWebPermissionsApi); + + // TODO(crbug.com/356827071): Enable the feature for WebView. + // Disable PlzDedicatedWorker as a workaround for crbug.com/356827071. + // Otherwise, importScripts fails on WebView. + aw_feature_overrides.DisableFeature(blink::features::kPlzDedicatedWorker); } diff --git a/tools/under-control/src/chrome/android/java/AndroidManifest.xml b/tools/under-control/src/chrome/android/java/AndroidManifest.xml index ef22b3c2b..851497feb 100755 --- a/tools/under-control/src/chrome/android/java/AndroidManifest.xml +++ b/tools/under-control/src/chrome/android/java/AndroidManifest.xml @@ -585,7 +585,7 @@ by a child template that "extends" this file. android:excludeFromRecents="true" android:autoRemoveFromRecents="true" android:windowSoftInputMode="stateHidden|adjustPan" - android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize" + android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize|uiMode" {% endblock %}> {% endif %} - @@ -636,21 +636,21 @@ by a child template that "extends" this file. android:theme="@style/Theme.Chromium.Activity.Fullscreen" android:exported="false" android:windowSoftInputMode="stateAlwaysHidden|adjustResize" - android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize"> + android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize|uiMode"> + android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize|uiMode"> + android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize|uiMode"> @@ -665,7 +665,7 @@ by a child template that "extends" this file. android:theme="@style/Theme.Chromium.Activity.Fullscreen" android:windowSoftInputMode="stateAlwaysHidden|adjustResize" android:exported="false" - android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize"> + android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize|uiMode"> @@ -673,13 +673,13 @@ by a child template that "extends" this file. android:theme="@style/Theme.Chromium.Settings" android:windowSoftInputMode="stateAlwaysHidden|adjustResize" android:exported="false" - android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize"> + android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize|uiMode"> + android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize|uiMode"> @@ -691,7 +691,7 @@ by a child template that "extends" this file. android:theme="@style/Theme.Chromium.Activity.Fullscreen" android:windowSoftInputMode="stateAlwaysHidden|adjustResize" android:exported="false" - android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize"> + android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize|uiMode"> @@ -699,7 +699,7 @@ by a child template that "extends" this file. android:theme="@style/Theme.Chromium.Activity.Fullscreen" android:windowSoftInputMode="stateAlwaysHidden|adjustResize" android:exported="false" - android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize"> + android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize|uiMode"> @@ -1320,6 +1320,13 @@ by a child template that "extends" this file. android:grantUriPermissions="true"> + + + + #include "base/barrier_closure.h" +#include "base/containers/flat_set.h" +#include "base/containers/to_vector.h" #include "base/feature_list.h" #include "base/functional/bind.h" #include "base/functional/callback.h" @@ -21,6 +23,7 @@ #include "base/metrics/histogram_macros.h" #include "base/metrics/user_metrics.h" #include "base/not_fatal_until.h" +#include "base/ranges/algorithm.h" #include "base/strings/strcat.h" #include "base/task/bind_post_task.h" #include "base/task/thread_pool.h" @@ -74,6 +77,7 @@ #include "chrome/browser/search_engines/template_url_service_factory.h" #include "chrome/browser/share/share_history.h" #include "chrome/browser/share/share_ranking.h" +#include "chrome/browser/signin/identity_manager_factory.h" #include "chrome/browser/spellchecker/spellcheck_factory.h" #include "chrome/browser/spellchecker/spellcheck_service.h" #include "chrome/browser/sync/sync_service_factory.h" @@ -93,6 +97,7 @@ #include "components/bookmarks/browser/bookmark_model.h" #include "components/browsing_data/content/browsing_data_helper.h" #include "components/content_settings/core/browser/content_settings_registry.h" +#include "components/content_settings/core/browser/content_settings_utils.h" #include "components/content_settings/core/browser/host_content_settings_map.h" #include "components/content_settings/core/common/content_settings.h" #include "components/content_settings/core/common/content_settings_pattern.h" @@ -114,6 +119,7 @@ #include "components/open_from_clipboard/clipboard_recent_content.h" #include "components/password_manager/core/browser/features/password_features.h" #include "components/password_manager/core/browser/features/password_manager_features_util.h" +#include "components/password_manager/core/browser/password_manager_metrics_util.h" #include "components/password_manager/core/browser/password_store/password_store_interface.h" #include "components/password_manager/core/browser/password_store/smart_bubble_stats_store.h" #include "components/payments/content/payment_manifest_web_data_service.h" @@ -125,6 +131,12 @@ #include "components/reading_list/core/reading_list_model.h" #include "components/safe_browsing/core/browser/verdict_cache_manager.h" #include "components/search_engines/template_url_service.h" +#include "components/signin/public/base/consent_level.h" +#include "components/signin/public/base/gaia_id_hash.h" +#include "components/signin/public/identity_manager/account_info.h" +#include "components/signin/public/identity_manager/accounts_in_cookie_jar_info.h" +#include "components/signin/public/identity_manager/identity_manager.h" +#include "components/signin/public/identity_manager/identity_utils.h" #include "components/sync/service/sync_service.h" #include "components/sync/service/sync_user_settings.h" #include "components/tpcd/metadata/browser/manager.h" @@ -172,6 +184,7 @@ #endif // BUILDFLAG(ENABLE_FEED_V2) #if !BUILDFLAG(IS_ANDROID) +#include "chrome/browser/user_education/browser_feature_promo_storage_service.h" #include "chrome/browser/web_applications/web_app.h" #include "chrome/browser/web_applications/web_app_command_scheduler.h" #include "chrome/browser/web_applications/web_app_provider.h" @@ -509,7 +522,7 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData( CreateTaskCompletionClosure(TracingDataType::kAutofillOrigins)); autofill::PersonalDataManager* data_manager = - autofill::PersonalDataManagerFactory::GetForProfile(profile_); + autofill::PersonalDataManagerFactory::GetForBrowserContext(profile_); if (data_manager) data_manager->Refresh(); } @@ -610,6 +623,13 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData( bookmark_model->ClearLastUsedTimeInRange(delete_begin, delete_end); } +#if !BUILDFLAG(IS_ANDROID) + // Clear any stored User Education session data. Note that we can't clear a + // specific date range, as this is used for longitudinal metrics reporting, + // so selectively deleting entries would make the telemetry invalid. + BrowserFeaturePromoStorageService::ClearUsageHistory(profile_); +#endif + // Cleared for DATA_TYPE_HISTORY, DATA_TYPE_COOKIES and DATA_TYPE_PASSWORDS. browsing_data::RemoveFederatedSiteSettingsData(delete_begin_, delete_end_, website_settings_filter, @@ -969,6 +989,12 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData( browsing_data::RemoveFederatedSiteSettingsData(delete_begin_, delete_end_, website_settings_filter, host_content_settings_map_); + + // Record that a password removal action happened for the profile store. + AddPasswordRemovalReason( + profile_->GetPrefs(), password_manager::IsAccountStore(false), + password_manager::metrics_util::PasswordManagerCredentialRemovalReason:: + kClearBrowsingData); } if (remove_mask & constants::DATA_TYPE_ACCOUNT_PASSWORDS) { @@ -993,6 +1019,12 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData( CreateTaskCompletionClosure(TracingDataType::kAccountPasswords), std::move(sync_completion)); } + + // Record that a password removal action happened for the account store. + AddPasswordRemovalReason( + profile_->GetPrefs(), password_manager::IsAccountStore(true), + password_manager::metrics_util::PasswordManagerCredentialRemovalReason:: + kClearBrowsingData); } CHECK(deferred_disable_passwords_auto_signin_cb_.is_null(), @@ -1052,7 +1084,7 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData( CreateTaskCompletionClosure(TracingDataType::kAutofillData)); autofill::PersonalDataManager* data_manager = - autofill::PersonalDataManagerFactory::GetForProfile(profile_); + autofill::PersonalDataManagerFactory::GetForBrowserContext(profile_); if (data_manager) data_manager->Refresh(); } @@ -1427,6 +1459,29 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData( NOTIMPLEMENTED(); #endif // BUILDFLAG(IS_ANDROID) } + + ////////////////////////////////////////////////////////////////////////////// + // DATA_TYPE_RELATED_WEBSITE_SETS_PERMISSIONS + if (remove_mask & content::BrowsingDataRemover:: + DATA_TYPE_RELATED_WEBSITE_SETS_PERMISSIONS) { + for (ContentSettingsType type_to_clear : + {ContentSettingsType::STORAGE_ACCESS, + ContentSettingsType::TOP_LEVEL_STORAGE_ACCESS}) { + host_content_settings_map_->ClearSettingsForOneTypeWithPredicate( + type_to_clear, [&](const ContentSettingPatternSource& setting) { + return content_settings::IsGrantedByRelatedWebsiteSets( + type_to_clear, setting.metadata) && + base::ranges::any_of( + filter_builder->GetOrigins(), + [&](const url::Origin& origin) -> bool { + return setting.primary_pattern.Matches( + origin.GetURL()) || + setting.secondary_pattern.Matches( + origin.GetURL()); + }); + }); + } + } } void ChromeBrowsingDataRemoverDelegate::OnTaskStarted( @@ -1490,13 +1545,20 @@ void ChromeBrowsingDataRemoverDelegate::OnTaskComplete( // are refreshed the next time, typically on the next browser restart. if (should_clear_sync_account_settings_) { should_clear_sync_account_settings_ = false; - syncer::SyncService* sync_service = - SyncServiceFactory::GetForProfile(profile_); - if (sync_service) { - sync_service->GetUserSettings()->KeepAccountSettingsPrefsOnlyForUsers({}); + signin::IdentityManager* identity_manager = + IdentityManagerFactory::GetForProfile(profile_); + base::flat_set gaia_ids = + signin::GetAllGaiaIdsForKeyedPreferences( + identity_manager, + signin::AccountsInCookieJarInfo() /* empty_cookies */); + if (syncer::SyncService* sync_service = + SyncServiceFactory::GetForProfile(profile_); + sync_service) { + sync_service->GetUserSettings()->KeepAccountSettingsPrefsOnlyForUsers( + base::ToVector(gaia_ids, &signin::GaiaIdHash::FromGaiaId)); } password_manager::features_util::KeepAccountStorageSettingsOnlyForUsers( - profile_->GetPrefs(), {}); + profile_->GetPrefs(), std::move(gaia_ids).extract()); } #endif // !BUILDFLAG(IS_ANDROID) diff --git a/tools/under-control/src/chrome/browser/chrome_browser_interface_binders.cc b/tools/under-control/src/chrome/browser/chrome_browser_interface_binders.cc index 00d0d6ddb..2730ad90d 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 @@ -13,7 +13,6 @@ #include "build/chromeos_buildflags.h" #include "chrome/browser/accessibility/accessibility_labels_service.h" #include "chrome/browser/accessibility/accessibility_labels_service_factory.h" -#include "chrome/browser/ai/ai_manager_impl.h" #include "chrome/browser/ash/drive/file_system_util.h" #include "chrome/browser/browser_process.h" #include "chrome/browser/buildflags.h" @@ -36,8 +35,8 @@ #include "chrome/browser/ssl/security_state_tab_helper.h" #include "chrome/browser/translate/translate_frame_binder.h" #include "chrome/browser/ui/search_engines/search_engine_tab_helper.h" -#include "chrome/browser/ui/views/side_panel/companion/companion_utils.h" #include "chrome/browser/ui/ui_features.h" +#include "chrome/browser/ui/views/side_panel/companion/companion_utils.h" #include "chrome/browser/ui/webui/browsing_topics/browsing_topics_internals_ui.h" #include "chrome/browser/ui/webui/data_sharing_internals/data_sharing_internals_ui.h" #include "chrome/browser/ui/webui/engagement/site_engagement_ui.h" @@ -80,7 +79,6 @@ #include "components/no_state_prefetch/browser/no_state_prefetch_contents.h" #include "components/no_state_prefetch/browser/no_state_prefetch_processor_impl.h" #include "components/performance_manager/embedder/binders.h" -#include "components/performance_manager/public/features.h" #include "components/performance_manager/public/performance_manager.h" #include "components/prefs/pref_service.h" #include "components/privacy_sandbox/privacy_sandbox_features.h" @@ -108,6 +106,7 @@ #include "third_party/blink/public/common/features.h" #include "third_party/blink/public/common/features_generated.h" #include "third_party/blink/public/mojom/credentialmanagement/credential_manager.mojom.h" +#include "third_party/blink/public/mojom/facilitated_payments/payment_link_handler.mojom.h" #include "third_party/blink/public/mojom/lcp_critical_path_predictor/lcp_critical_path_predictor.mojom.h" #include "third_party/blink/public/mojom/loader/navigation_predictor.mojom.h" #include "third_party/blink/public/mojom/on_device_translation/translation_manager.mojom.h" @@ -146,6 +145,7 @@ #if BUILDFLAG(IS_ANDROID) #include "chrome/browser/android/dom_distiller/distiller_ui_handle_android.h" +#include "chrome/browser/facilitated_payments/payment_link_handler_factory.h" #include "chrome/browser/offline_pages/android/offline_page_auto_fetcher.h" #include "chrome/browser/ui/webui/feed_internals/feed_internals.mojom.h" #include "chrome/browser/ui/webui/feed_internals/feed_internals_ui.h" @@ -160,10 +160,7 @@ #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/calendar/google_calendar.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" @@ -195,6 +192,7 @@ #include "chrome/browser/ui/webui/new_tab_page_third_party/new_tab_page_third_party_ui.h" #include "chrome/browser/ui/webui/omnibox_popup/omnibox_popup_ui.h" #include "chrome/browser/ui/webui/password_manager/password_manager_ui.h" +#include "chrome/browser/ui/webui/privacy_sandbox/related_website_sets/related_website_sets.mojom.h" #include "chrome/browser/ui/webui/search_engine_choice/search_engine_choice.mojom.h" // nogncheck crbug.com/1125897 #include "chrome/browser/ui/webui/search_engine_choice/search_engine_choice_ui.h" #include "chrome/browser/ui/webui/settings/settings_ui.h" @@ -204,7 +202,6 @@ #include "chrome/browser/ui/webui/side_panel/customize_chrome/customize_chrome_ui.h" #include "chrome/browser/ui/webui/side_panel/customize_chrome/wallpaper_search/wallpaper_search.mojom.h" #include "chrome/browser/ui/webui/side_panel/history_clusters/history_clusters_side_panel_ui.h" -#include "chrome/browser/ui/webui/side_panel/performance_controls/performance_side_panel_ui.h" #include "chrome/browser/ui/webui/side_panel/read_anything/read_anything_untrusted_ui.h" #include "chrome/browser/ui/webui/side_panel/reading_list/reading_list.mojom.h" #include "chrome/browser/ui/webui/side_panel/reading_list/reading_list_ui.h" @@ -218,7 +215,6 @@ #include "ui/webui/resources/cr_components/color_change_listener/color_change_listener.mojom.h" #include "ui/webui/resources/cr_components/commerce/shopping_service.mojom.h" // nogncheck crbug.com/1125897 #include "ui/webui/resources/cr_components/customize_color_scheme_mode/customize_color_scheme_mode.mojom.h" -#include "ui/webui/resources/cr_components/customize_themes/customize_themes.mojom.h" #include "ui/webui/resources/cr_components/help_bubble/help_bubble.mojom.h" #include "ui/webui/resources/cr_components/history_clusters/history_clusters.mojom.h" #include "ui/webui/resources/cr_components/history_embeddings/history_embeddings.mojom.h" @@ -253,7 +249,6 @@ #if !BUILDFLAG(IS_CHROMEOS_ASH) && !BUILDFLAG(IS_ANDROID) #include "chrome/browser/ui/webui/signin/profile_customization_ui.h" #include "chrome/browser/ui/webui/signin/profile_picker_ui.h" -#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) @@ -261,6 +256,8 @@ #include "ash/public/mojom/hid_preserving_bluetooth_state_controller.mojom.h" #include "ash/webui/annotator/mojom/untrusted_annotator.mojom.h" #include "ash/webui/annotator/untrusted_annotator_ui.h" +#include "ash/webui/boca_ui/boca_ui.h" +#include "ash/webui/boca_ui/mojom/boca.mojom.h" #include "ash/webui/camera_app_ui/camera_app_helper.mojom.h" #include "ash/webui/camera_app_ui/camera_app_ui.h" #include "ash/webui/color_internals/color_internals_ui.h" @@ -310,6 +307,7 @@ #include "ash/webui/projector_app/untrusted_projector_ui.h" #include "ash/webui/recorder_app_ui/mojom/recorder_app.mojom.h" #include "ash/webui/recorder_app_ui/recorder_app_ui.h" +#include "ash/webui/sanitize_ui/sanitize_ui.h" #include "ash/webui/scanning/mojom/scanning.mojom.h" #include "ash/webui/scanning/scanning_ui.h" #include "ash/webui/shimless_rma/shimless_rma.h" @@ -493,6 +491,7 @@ #endif #if BUILDFLAG(CHROME_ROOT_STORE_CERT_MANAGEMENT_UI) +#include "chrome/browser/ui/webui/certificate_manager/certificate_manager_ui.h" #include "ui/webui/resources/cr_components/certificate_manager/certificate_manager_v2.mojom.h" #endif // BUILDFLAG(CHROME_ROOT_STORE_CERT_MANAGEMENT_UI) @@ -536,8 +535,8 @@ void BindCommerceHintObserver( content::RenderFrameHost* const frame_host, mojo::PendingReceiver receiver) { // This is specifically restricting this to main frames, whether they are the - // main frame of the tab or a element, while preventing this from - // working in subframes and fenced frames. + // main frame of the tab, while preventing this from working in subframes and + // fenced frames. if (frame_host->GetParent() || frame_host->IsFencedFrameRoot()) { mojo::ReportBadMessage( "Unexpected the message from subframe or fenced frame."); @@ -1104,6 +1103,13 @@ void PopulateChromeFrameBinders( map->Add( base::BindRepeating(&TranslationManagerImpl::Create)); } + +#if BUILDFLAG(IS_ANDROID) + if (base::FeatureList::IsEnabled(blink::features::kPaymentLinkDetection)) { + map->Add( + base::BindRepeating(&CreatePaymentLinkHandler)); + } +#endif } void PopulateChromeWebUIFrameBinders( @@ -1209,15 +1215,14 @@ void PopulateChromeWebUIFrameBinders( ash::cloud_upload::CloudUploadUI, ash::office_fallback::OfficeFallbackUI, ash::multidevice_setup::MultiDeviceSetupDialogUI, ash::ParentAccessUI, ash::EmojiUI, ash::RemoteMaintenanceCurtainUI, - ash::app_install::AppInstallDialogUI, + ash::app_install::AppInstallDialogUI, ash::SanitizeDialogUI, ash::printing::print_preview::PrintPreviewCrosUI, ash::extended_updates::ExtendedUpdatesUI, #endif NewTabPageUI, OmniboxPopupUI, BookmarksSidePanelUI, CustomizeChromeUI, InternalsUI, ReadingListUI, TabSearchUI, WebuiGalleryUI, - HistoryClustersSidePanelUI, PerformanceSidePanelUI, - ShoppingInsightsSidePanelUI, media_router::AccessCodeCastUI, - commerce::ProductSpecificationsUI>(map); + HistoryClustersSidePanelUI, ShoppingInsightsSidePanelUI, + media_router::AccessCodeCastUI, commerce::ProductSpecificationsUI>(map); RegisterWebUIControllerInterfaceBinder< new_tab_page::mojom::PageHandlerFactory, NewTabPageUI>(map); @@ -1240,7 +1245,7 @@ void PopulateChromeWebUIFrameBinders( history_clusters::mojom::PageHandler, HistoryUI>(map); } } - if (history_embeddings::IsHistoryEmbeddingEnabled()) { + if (history_embeddings::IsHistoryEmbeddingsEnabled()) { RegisterWebUIControllerInterfaceBinder< history_embeddings::mojom::PageHandler, HistoryUI>(map); } @@ -1281,71 +1286,37 @@ void PopulateChromeWebUIFrameBinders( #endif // !BUILDFLAG(IS_CHROMEOS_ASH) >(map); - RegisterWebUIControllerInterfaceBinder< - customize_themes::mojom::CustomizeThemesHandlerFactory, NewTabPageUI -#if !BUILDFLAG(IS_CHROMEOS_ASH) - , - ProfileCustomizationUI, settings::SettingsUI -#endif // !BUILDFLAG(IS_CHROMEOS_ASH) - >(map); - #if BUILDFLAG(CHROME_ROOT_STORE_CERT_MANAGEMENT_UI) RegisterWebUIControllerInterfaceBinder< certificate_manager_v2::mojom::CertificateManagerPageHandlerFactory, - settings::SettingsUI>(map); + CertificateManagerUI>(map); #endif // BUILDFLAG(CHROME_ROOT_STORE_CERT_MANAGEMENT_UI) RegisterWebUIControllerInterfaceBinder< help_bubble::mojom::HelpBubbleHandlerFactory, InternalsUI, settings::SettingsUI, ReadingListUI, NewTabPageUI, CustomizeChromeUI, - PasswordManagerUI>(map); + PasswordManagerUI, HistoryUI +#if !BUILDFLAG(IS_CHROMEOS_ASH) && !BUILDFLAG(IS_ANDROID) + , + ProfilePickerUI +#endif //! BUILDFLAG(IS_CHROMEOS_ASH) && !BUILDFLAG(IS_ANDROID) + >(map); #if !defined(OFFICIAL_BUILD) RegisterWebUIControllerInterfaceBinder( map); #endif // !defined(OFFICIAL_BUILD) - if (IsCartModuleEnabled()) { - RegisterWebUIControllerInterfaceBinder( - map); - } else if (IsCartModuleEnabled()) { - RegisterWebUIControllerInterfaceBinder(map); - } - if (IsDriveModuleEnabled()) { RegisterWebUIControllerInterfaceBinder< file_suggestion::mojom::FileSuggestionHandler, NewTabPageUI>(map); } - if (base::FeatureList::IsEnabled(ntp_features::kNtpPhotosModule)) { - RegisterWebUIControllerInterfaceBinder(map); - } - - if (IsRecipeTasksModuleEnabled()) { - RegisterWebUIControllerInterfaceBinder(map); - } - if (base::FeatureList::IsEnabled(ntp_features::kNtpFeedModule)) { RegisterWebUIControllerInterfaceBinder(map); } - if (base::FeatureList::IsEnabled(ntp_features::kNtpHistoryClustersModule) || - base::FeatureList::IsEnabled( - ntp_features::kNtpHistoryClustersModuleLoad)) { - if (base::FeatureList::IsEnabled(ntp_features::kNtpModulesRedesigned)) { - RegisterWebUIControllerInterfaceBinder< - ntp::history_clusters_v2::mojom::PageHandler, NewTabPageUI>(map); - } else { - RegisterWebUIControllerInterfaceBinder< - ntp::history_clusters::mojom::PageHandler, NewTabPageUI>(map); - } - } - if (base::FeatureList::IsEnabled(ntp_features::kNtpTabResumptionModule)) { RegisterWebUIControllerInterfaceBinder< ntp::tab_resumption::mojom::PageHandler, NewTabPageUI>(map); @@ -1382,13 +1353,6 @@ void PopulateChromeWebUIFrameBinders( BookmarksSidePanelUI, commerce::ProductSpecificationsUI, ShoppingInsightsSidePanelUI, HistoryUI>(map); - if (base::FeatureList::IsEnabled( - performance_manager::features::kPerformanceControlsSidePanel)) { - RegisterWebUIControllerInterfaceBinder< - side_panel::mojom::PerformancePageHandlerFactory, - PerformanceSidePanelUI>(map); - } - RegisterWebUIControllerInterfaceBinder< side_panel::mojom::CustomizeChromePageHandlerFactory, CustomizeChromeUI>( map); @@ -1412,12 +1376,6 @@ void PopulateChromeWebUIFrameBinders( read_anything::mojom::UntrustedPageHandlerFactory, ReadAnythingUntrustedUI>(map); - if (base::FeatureList::IsEnabled( - data_sharing::features::kDataSharingFeature)) { - RegisterWebUIControllerInterfaceBinder< - data_sharing::mojom::PageHandlerFactory, DataSharingUI>(map); - } - RegisterWebUIControllerInterfaceBinder(map); RegisterWebUIControllerInterfaceBinder< @@ -1784,11 +1742,9 @@ void PopulateChromeWebUIFrameBinders( 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); - } + RegisterWebUIControllerInterfaceBinder< + ash::app_install::mojom::PageHandlerFactory, + ash::app_install::AppInstallDialogUI>(map); RegisterWebUIControllerInterfaceBinder< new_window_proxy::mojom::NewWindowProxy, ash::EmojiUI>(map); @@ -1869,6 +1825,14 @@ void PopulateChromeWebUIFrameBinders( privacy_sandbox_internals::PrivacySandboxInternalsUI>(map); } +#if !BUILDFLAG(IS_ANDROID) + if (base::FeatureList::IsEnabled(privacy_sandbox::kRelatedWebsiteSetsDevUI)) { + RegisterWebUIControllerInterfaceBinder< + related_website_sets::mojom::RelatedWebsiteSetsPageHandler, + privacy_sandbox_internals::PrivacySandboxInternalsUI>(map); + } +#endif + #if BUILDFLAG(IS_CHROMEOS_ASH) if (ash::features::IsFocusModeEnabled()) { RegisterWebUIControllerInterfaceBinder< @@ -1920,8 +1884,13 @@ void PopulateChromeWebUIFrameInterfaceBrokers( #endif // BUILDFLAG(IS_CHROMEOS_ASH) // --- Section 2: chrome-untrusted:// WebUIs: - #if BUILDFLAG(IS_CHROMEOS_ASH) + if (ash::features::IsBocaEnabled()) { + registry.ForWebUI() + .Add() + .Add(); + } + if (chromeos::features::IsOrcaEnabled()) { registry.ForWebUI() .Add(); @@ -1969,13 +1938,18 @@ void PopulateChromeWebUIFrameInterfaceBrokers( registry.ForWebUI() .Add(); } - if (features::IsReadAnythingWebUIToolbarEnabled()) { - registry.ForWebUI() - .Add(); - } + registry.ForWebUI() + .Add(); if (base::FeatureList::IsEnabled(features::kHaTSWebUI)) { registry.ForWebUI().Add(); } + + if (base::FeatureList::IsEnabled( + data_sharing::features::kDataSharingFeature)) { + registry.ForWebUI() + .Add(); + } + #endif // !BUILDFLAG(IS_ANDROID) } diff --git a/tools/under-control/src/chrome/browser/chrome_content_browser_client.cc b/tools/under-control/src/chrome/browser/chrome_content_browser_client.cc index 7c3178793..c4b98aa0e 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 @@ -47,7 +47,7 @@ #include "build/chromeos_buildflags.h" #include "build/config/chromebox_for_meetings/buildflags.h" // PLATFORM_CFM #include "chrome/browser/after_startup_task_utils.h" -#include "chrome/browser/ai/ai_manager_impl.h" +#include "chrome/browser/ai/ai_manager_keyed_service_factory.h" #include "chrome/browser/app_mode/app_mode_utils.h" #include "chrome/browser/bluetooth/chrome_bluetooth_delegate_impl_client.h" #include "chrome/browser/browser_about_handler.h" @@ -140,6 +140,7 @@ #include "chrome/browser/profiling_host/chrome_browser_main_extra_parts_profiling.h" #include "chrome/browser/renderer_host/chrome_navigation_ui_data.h" #include "chrome/browser/renderer_preferences_util.h" +#include "chrome/browser/request_header_integrity/buildflags.h" #include "chrome/browser/safe_browsing/chrome_ping_manager_factory.h" #include "chrome/browser/safe_browsing/cloud_content_scanning/deep_scanning_utils.h" #include "chrome/browser/safe_browsing/delayed_warning_navigation_throttle.h" @@ -205,6 +206,7 @@ #include "chrome/common/logging_chrome.h" #include "chrome/common/ppapi_utils.h" #include "chrome/common/pref_names.h" +#include "chrome/common/profiler/main_thread_stack_sampling_profiler.h" #include "chrome/common/profiler/process_type.h" #include "chrome/common/profiler/thread_profiler_configuration.h" #include "chrome/common/renderer_configuration.mojom.h" @@ -240,8 +242,8 @@ #include "components/error_page/common/error_page_switches.h" #include "components/error_page/common/localized_error.h" #include "components/error_page/content/browser/net_error_auto_reloader.h" -#include "components/fingerprinting_protection_filter/browser/fingerprinting_protection_filter_features.h" #include "components/fingerprinting_protection_filter/browser/throttle_manager.h" +#include "components/fingerprinting_protection_filter/common/fingerprinting_protection_filter_features.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" @@ -329,6 +331,7 @@ #include "content/public/browser/legacy_tech_cookie_issue_details.h" #include "content/public/browser/navigation_handle.h" #include "content/public/browser/navigation_throttle.h" +#include "content/public/browser/network_service_instance.h" #include "content/public/browser/overlay_window.h" #include "content/public/browser/permission_controller.h" #include "content/public/browser/render_frame_host.h" @@ -348,6 +351,7 @@ #include "content/public/common/content_descriptors.h" #include "content/public/common/content_features.h" #include "content/public/common/content_switches.h" +#include "content/public/common/url_utils.h" #include "content/public/common/window_container_type.mojom-shared.h" #include "device/vr/buildflags/buildflags.h" #include "extensions/browser/browser_frame_context_data.h" @@ -370,6 +374,7 @@ #include "sandbox/policy/features.h" #include "sandbox/policy/mojom/sandbox.mojom.h" #include "sandbox/policy/switches.h" +#include "services/cert_verifier/public/mojom/cert_verifier_service_factory.mojom.h" #include "services/metrics/public/cpp/ukm_source_id.h" #include "services/network/public/cpp/features.h" #include "services/network/public/cpp/is_potentially_trustworthy.h" @@ -377,7 +382,9 @@ #include "services/network/public/cpp/resource_request.h" #include "services/network/public/cpp/self_deleting_url_loader_factory.h" #include "services/network/public/cpp/web_sandbox_flags.h" +#include "services/network/public/mojom/cert_verifier_service.mojom.h" #include "services/network/public/mojom/network_service.mojom.h" +#include "services/network/public/mojom/url_loader_factory.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" @@ -387,6 +394,7 @@ #include "third_party/blink/public/common/permissions_policy/permissions_policy.h" #include "third_party/blink/public/common/switches.h" #include "third_party/blink/public/mojom/browsing_topics/browsing_topics.mojom.h" +#include "third_party/blink/public/mojom/use_counter/metrics/web_feature.mojom.h" #include "third_party/blink/public/public_buildflags.h" #include "third_party/widevine/cdm/buildflags.h" #include "ui/base/clipboard/clipboard_format_type.h" @@ -484,12 +492,11 @@ #include "chrome/browser/android/tab_android.h" #include "chrome/browser/android/tab_web_contents_delegate_android.h" #include "chrome/browser/chrome_browser_main_android.h" +#include "chrome/browser/digital_credentials/digital_identity_provider_android.h" #include "chrome/browser/download/android/available_offline_content_provider.h" #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/browser/webid/digital_identity_provider_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" @@ -510,11 +517,12 @@ #endif #if !BUILDFLAG(IS_ANDROID) +#include "chrome/browser/digital_credentials/digital_identity_provider_desktop.h" #include "chrome/browser/preloading/preview/preview_navigation_throttle.h" #include "chrome/browser/web_applications/isolated_web_apps/chrome_content_browser_client_isolated_web_apps_part.h" #include "chrome/browser/web_applications/locks/app_lock.h" +#include "chrome/browser/web_applications/proto/web_app_install_state.pb.h" #include "chrome/browser/web_applications/web_app_helpers.h" -#include "chrome/browser/webid/digital_identity_provider_desktop.h" #include "third_party/blink/public/mojom/installedapp/related_application.mojom.h" #endif // !BUILDFLAG(IS_ANDROID) @@ -545,8 +553,10 @@ #include "chrome/browser/devtools/chrome_devtools_manager_delegate.h" #include "chrome/browser/devtools/devtools_window.h" #include "chrome/browser/direct_sockets/chrome_direct_sockets_delegate.h" +#include "chrome/browser/enterprise/connectors/connectors_service.h" #include "chrome/browser/headless/chrome_browser_main_extra_parts_headless.h" #include "chrome/browser/media/unified_autoplay_config.h" +#include "chrome/browser/media_effects/media_effects_manager_binder.h" #include "chrome/browser/metrics/usage_scenario/chrome_responsiveness_calculator_delegate.h" #include "chrome/browser/new_tab_page/new_tab_page_util.h" #include "chrome/browser/page_info/about_this_site_side_panel_throttle.h" @@ -576,10 +586,8 @@ #include "chrome/grit/chrome_unscaled_resources.h" // nogncheck crbug.com/1125897 #include "components/commerce/core/commerce_feature_list.h" #include "components/lens/lens_features.h" -#include "components/media_effects/media_effects_manager_binder.h" #include "components/password_manager/content/common/web_ui_constants.h" #include "components/password_manager/core/common/password_manager_features.h" -#include "chrome/browser/enterprise/connectors/connectors_service.h" #include "third_party/blink/public/mojom/permissions_policy/permissions_policy_feature.mojom.h" #endif // !BUILDFLAG(IS_ANDROID) @@ -682,6 +690,9 @@ #include "components/pdf/browser/pdf_navigation_throttle.h" #include "components/pdf/browser/pdf_url_loader_request_interceptor.h" #include "components/pdf/common/constants.h" +#if BUILDFLAG(IS_WIN) +#include "pdf/pdf_features.h" +#endif // BUILDFLAG(IS_WIN) #endif // BUILDFLAG(ENABLE_PDF) @@ -689,6 +700,10 @@ #include "chrome/browser/media/cast_remoting_connector.h" #endif +#if BUILDFLAG(ENABLE_REQUEST_HEADER_INTEGRITY) +#include "chrome/browser/request_header_integrity/request_header_integrity_url_loader_throttle.h" // nogncheck crbug.com/1125897 +#endif + #if BUILDFLAG(SAFE_BROWSING_AVAILABLE) #include "chrome/browser/safe_browsing/chrome_password_protection_service.h" #endif @@ -765,6 +780,11 @@ #include "services/device/public/cpp/geolocation/geolocation_system_permission_manager.h" #endif // BUILDFLAG(OS_LEVEL_GEOLOCATION_PERMISSION_SUPPORTED) +#if BUILDFLAG(IS_ANDROID) +#include "chrome/browser/feed/feed_service_factory.h" +#include "components/feed/feed_feature_list.h" +#endif // BUILDFLAG(IS_ANDROID) + using blink::mojom::EffectiveConnectionType; using blink::web_pref::WebPreferences; using content::BrowserThread; @@ -985,7 +1005,16 @@ blink::mojom::AutoplayPolicy GetAutoplayPolicyForWebContents( // allow autoplay within the iframe. Only allow a nesting of single depth. result = blink::mojom::AutoplayPolicy::kNoUserGestureRequired; } -#endif // !BUILDFLAG(IS_ANDROID) +#else // !BUILDFLAG(IS_ANDROID) + // TWAs don't require a user gesture for unmuted autoplay. + if (base::FeatureList::IsEnabled(features::kAllowUnmutedAutoplayForTWA)) { + if (auto* delegate = TabAndroid::FromWebContents(web_contents)) { + if (delegate->IsTrustedWebActivity()) { + result = blink::mojom::AutoplayPolicy::kNoUserGestureRequired; + } + } + } +#endif // BUILDFLAG(IS_ANDROID) return result; } @@ -1028,7 +1057,7 @@ bool URLHasExtensionPermission(extensions::ProcessMap* process_map, // Returns true if |extension_id| is allowed to run as an Isolated Context, // giving it access to additional APIs. bool IsExtensionIdAllowedToUseIsolatedContext(std::string_view extension_id) { - static constexpr auto kAllowedIsolatedContextExtensionIds = + constexpr auto kAllowedIsolatedContextExtensionIds = base::MakeFixedFlatSet({ "algkcnfjnajfhgimadimbjhmpaeohhln", // Secure Shell Extension (dev) "iodihamcpbpeioajjeobimgagajmlibd", // Secure Shell Extension @@ -1077,12 +1106,8 @@ void LaunchURL( network::mojom::WebSandboxFlags sandbox_flags, bool has_user_gesture, const std::optional& initiating_origin, - content::WeakDocumentPtr initiator_document -#if BUILDFLAG(IS_ANDROID) - , - mojo::PendingRemote* out_factory -#endif -) { + content::WeakDocumentPtr initiator_document, + mojo::PendingRemote* out_factory) { // If there is no longer a WebContents, the request may have raced with tab // closing. Don't fire the external request. (It may have been a prerender.) content::WebContents* web_contents = web_contents_getter.Run(); @@ -1480,6 +1505,15 @@ bool DetermineIfDevtoolsUserForProcessPerSite() { return is_devtools_user; } +net::handles::NetworkHandle GetBoundNetworkFromRenderFrameHost( + content::RenderFrameHost* frame) { + auto* web_contents = WebContents::FromRenderFrameHost(frame); + if (!web_contents) { + return net::handles::kInvalidNetworkHandle; + } + return web_contents->GetTargetNetwork(); +} + } // namespace // static @@ -1594,8 +1628,6 @@ void ChromeContentBrowserClient::RegisterProfilePrefs( static_cast( embedder_support::UserAgentReductionEnterprisePolicyState::kDefault)); registry->RegisterBooleanPref(prefs::kOriginAgentClusterDefaultEnabled, true); - registry->RegisterBooleanPref( - policy::policy_prefs::kIsolatedAppsDeveloperModeAllowed, true); registry->RegisterBooleanPref( prefs::kStrictMimetypeCheckForWorkerScriptsEnabled, true); @@ -1618,6 +1650,8 @@ void ChromeContentBrowserClient::RegisterProfilePrefs( registry->RegisterBooleanPref( policy::policy_prefs::kKeyboardFocusableScrollersEnabled, true); + registry->RegisterBooleanPref( + policy::policy_prefs::kStandardizedBrowserZoomEnabled, true); registry->RegisterBooleanPref( policy::policy_prefs:: @@ -1653,6 +1687,75 @@ void ChromeContentBrowserClient::SetApplicationLocale( FROM_HERE, base::BindOnce(&SetApplicationLocaleOnIOThread, locale)); } +void ChromeContentBrowserClient::MaybeProxyNetworkBoundRequest( + content::BrowserContext* browser_context, + net::handles::NetworkHandle bound_network, + network::URLLoaderFactoryBuilder& factory_builder, + network::mojom::URLLoaderFactoryOverridePtr* factory_override, + const net::IsolationInfo& isolation_info) { + if (bound_network == net::handles::kInvalidNetworkHandle) { + return; + } + + // We support one network-bound NetworkContext at most. If a new one is + // needed, make sure to clean up the previous one first. + if (bound_network != target_network_for_network_bound_network_context_) { + network_bound_network_context_ = + mojo::Remote(); + network::mojom::NetworkContextParamsPtr context_params = + network::mojom::NetworkContextParams::New(); + context_params->bound_network = bound_network; + context_params->cert_verifier_params = content::GetCertVerifierParams( + cert_verifier::mojom::CertVerifierCreationParams::New()); + ConfigureNetworkContextParams( + browser_context, true, base::FilePath(), context_params.get(), + cert_verifier::mojom::CertVerifierCreationParams::New().get()); + content::CreateNetworkContextInNetworkService( + network_bound_network_context_.BindNewPipeAndPassReceiver(), + std::move(context_params)); + target_network_for_network_bound_network_context_ = bound_network; + } + + // TLDR; if `factory_override` != nullptr, this is being called for the + // creation of a 2-layer URLLoaderFactory (see + // network.mojom.URLLoaderFactoryOverride documentation). In this case, we + // want to substitute the internal (defined by + // factory_override->overriding_factory, with a URLLoaderFactory that targets + // `bound_network`. If `factory_override` == nullptr, this is a single-layer + // URLLoaderFactory. In this case, we want the last URLLoaderFactory in the + // `factory_builder` chain to be a URLLoaderFactory that targets + // `bound_network`. + mojo::PendingReceiver proxied_receiver; + mojo::PendingRemote bypassed_remote; + if (!factory_override) { + // Hijack the receiver end returned by network::URLLoaderFactoryBuilder. + // This will be then redirected to a network-bound URLLoaderFactory. + std::tie(proxied_receiver, bypassed_remote) = factory_builder.Append(); + } else { + // Hijack the remote end stored in network::mojom::URLLoaderFactoryOverride. + // This will be then redirected to a network-bound URLLoaderFactory. + *factory_override = network::mojom::URLLoaderFactoryOverride::New(); + proxied_receiver = + (*factory_override) + ->overriding_factory.InitWithNewPipeAndPassReceiver(); + (*factory_override)->overridden_factory_receiver = + bypassed_remote.InitWithNewPipeAndPassReceiver(); + (*factory_override)->skip_cors_enabled_scheme_check = true; + } + + // Create a network-bound URLLoaderFactory and redirect the receiver end of + // the hijacked remote to this. + network::mojom::URLLoaderFactoryParamsPtr params = + network::mojom::URLLoaderFactoryParams::New(); + params->process_id = network::mojom::kBrowserProcessId; + params->is_trusted = true; + params->isolation_info = isolation_info; + // Disable CORS wrapping, this is already handled by the caller. + params->disable_web_security = true; + network_bound_network_context_->CreateURLLoaderFactory( + std::move(proxied_receiver), std::move(params)); +} + std::unique_ptr ChromeContentBrowserClient::CreateBrowserMainParts(bool is_integration_test) { std::unique_ptr main_parts; @@ -1789,6 +1892,10 @@ bool ChromeContentBrowserClient::IsShuttingDown() { return browser_shutdown::HasShutdownStarted(); } +void ChromeContentBrowserClient::ThreadPoolWillTerminate() { + sampling_profiler_.reset(); +} + content::StoragePartitionConfig ChromeContentBrowserClient::GetStoragePartitionConfigForSite( content::BrowserContext* browser_context, @@ -1992,18 +2099,21 @@ bool ChromeContentBrowserClient::ShouldAllowProcessPerSiteForMultipleMainFrames( return true; } -bool ChromeContentBrowserClient::ShouldUseSpareRenderProcessHost( +std::optional< + content::ContentBrowserClient::SpareProcessRefusedByEmbedderReason> +ChromeContentBrowserClient::ShouldUseSpareRenderProcessHost( content::BrowserContext* browser_context, const GURL& site_url) { Profile* profile = Profile::FromBrowserContext(browser_context); - if (!profile) - return false; + if (!profile) { + return SpareProcessRefusedByEmbedderReason::NoProfile; + } // Returning false here will ensure existing Top Chrome WebUI renderers are // considered for process reuse over the spare renderer. if (IsTopChromeWebUIURL(site_url) && !ShouldUseSpareRenderProcessHostForTopChromePage(profile)) { - return false; + return SpareProcessRefusedByEmbedderReason::TopFrameChromeWebUI; } #if !BUILDFLAG(IS_ANDROID) @@ -2011,16 +2121,21 @@ bool ChromeContentBrowserClient::ShouldUseSpareRenderProcessHost( // passing switches::kInstantProcess to the renderer process when it // launches. A spare process is launched earlier, before it is known which // navigation will use it, so it lacks this flag. - if (search::ShouldAssignURLToInstantRenderer(site_url, profile)) - return false; + if (search::ShouldAssignURLToInstantRenderer(site_url, profile)) { + // The NTP page chrome://new-tab-page and chrome://new-tab-page-third-party + // are using WebUI and will not use instant renderer. + // The only usecase is chrome-search:// URLs. + return SpareProcessRefusedByEmbedderReason::InstantRendererForNewTabPage; + } #endif #if BUILDFLAG(ENABLE_EXTENSIONS) - return ChromeContentBrowserClientExtensionsPart:: - ShouldUseSpareRenderProcessHost(profile, site_url); -#else - return true; + if (!ChromeContentBrowserClientExtensionsPart:: + ShouldUseSpareRenderProcessHost(profile, site_url)) { + return SpareProcessRefusedByEmbedderReason::ExtensionProcess; + } #endif + return std::nullopt; } bool ChromeContentBrowserClient::DoesSiteRequireDedicatedProcess( @@ -2036,6 +2151,22 @@ bool ChromeContentBrowserClient::DoesSiteRequireDedicatedProcess( return false; } +bool ChromeContentBrowserClient:: + ShouldAllowCrossProcessSandboxedFrameForPrecursor( + content::BrowserContext* browser_context, + const GURL& precursor, + const GURL& url) { + DCHECK_CURRENTLY_ON(content::BrowserThread::UI); +#if BUILDFLAG(ENABLE_EXTENSIONS) + if (!ChromeContentBrowserClientExtensionsPart:: + ShouldAllowCrossProcessSandboxedFrameForPrecursor(browser_context, + precursor, url)) { + return false; + } +#endif + return true; +} + bool ChromeContentBrowserClient::DoesWebUIUrlRequireProcessLock( const GURL& url) { // Note: This method can be called from multiple threads. It is not safe to @@ -2688,6 +2819,11 @@ void ChromeContentBrowserClient::AppendExtraCommandLineSwitches( command_line->AppendSwitch( blink::switches::kKeyboardFocusableScrollersOptOut); } + if (!prefs->GetBoolean( + policy::policy_prefs::kStandardizedBrowserZoomEnabled)) { + command_line->AppendSwitch( + blink::switches::kDisableStandardizedBrowserZoom); + } if (prefs->GetBoolean( policy::policy_prefs::kCSSCustomStateDeprecatedSyntaxEnabled)) { command_line->AppendSwitch( @@ -2816,6 +2952,7 @@ void ChromeContentBrowserClient::AppendExtraCommandLineSwitches( extensions::switches::kExtensionsOnChromeURLs, extensions::switches::kSetExtensionThrottleTestParams, // For tests only. extensions::switches::kAllowlistedExtensionID, + extensions::switches::kExtensionTestApiOnWebPages, // For tests only. #endif switches::kAllowInsecureLocalhost, switches::kAppsGalleryURL, @@ -2931,6 +3068,13 @@ void ChromeContentBrowserClient::AppendExtraCommandLineSwitches( switches::kChangeStackGuardOnForkEnabled); } #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) + +#if BUILDFLAG(IS_ANDROID) + // Communicating to renderer for starting the reader for web feed. + if (feed::IsWebFeedEnabledForLocale(feed::FeedServiceFactory::GetCountry())) { + command_line->AppendSwitch(feed::switches::kEnableRssLinkReader); + } +#endif } std::string @@ -3682,9 +3826,8 @@ bool ChromeContentBrowserClient::ShouldDenyRequestOnCertificateError( namespace { -bool IsForcedColorsEnabledForWebContent(content::WebContents* contents, - const ui::NativeTheme* native_theme) { - if (!native_theme->InForcedColorsMode() || !contents) { +bool ShouldDisableForcedColorsForWebContent(content::WebContents* contents) { + if (!contents) { return false; } @@ -3696,7 +3839,7 @@ bool IsForcedColorsEnabledForWebContent(content::WebContents* contents, prefs->GetList(prefs::kPageColorsBlockList); if (forced_colors_blocklist.empty()) { - return true; + return false; } GURL url = contents->GetLastCommittedURL(); @@ -3712,11 +3855,17 @@ bool IsForcedColorsEnabledForWebContent(content::WebContents* contents, } if (pattern.Matches(url)) { - return false; + return true; } } - return true; + return false; +} + +bool IsForcedColorsEnabledForWebContent(content::WebContents* contents, + const ui::NativeTheme* native_theme) { + return native_theme->InForcedColorsMode() && + !ShouldDisableForcedColorsForWebContent(contents); } #if !BUILDFLAG(IS_ANDROID) @@ -3789,7 +3938,7 @@ bool UpdatePreferredColorScheme(WebPreferences* web_prefs, if (force_light) { web_prefs->preferred_color_scheme = blink::mojom::PreferredColorScheme::kLight; - } else if (url.SchemeIs(content::kChromeUIScheme)) { + } else if (content::HasWebUIScheme(url)) { // If color scheme is not forced, WebUI should track the color mode of the // ColorProvider associated with `web_contents`. web_prefs->preferred_color_scheme = @@ -3837,6 +3986,7 @@ bool ShouldPromptOnMultipleMatchingCertificates(const Profile* profile) { base::OnceClosure ChromeContentBrowserClient::SelectClientCertificate( content::BrowserContext* browser_context, + int process_id, content::WebContents* web_contents, net::SSLCertRequestInfo* cert_request_info, net::ClientCertIdentityList client_certs, @@ -3926,12 +4076,38 @@ base::OnceClosure ChromeContentBrowserClient::SelectClientCertificate( // At this point, we're going to either a) continue without a valid // certificate (if we're not allowed to prompt) or b) show the picker for the - // user to select a valid cert. Only do this if the requestor has a valid - // WebContents. In the case of a), we want to preserve consistency (so that - // requests always fail or succeed across different platforms and contexts), - // and for b), we don't want to pop up UI for background requests like - // service workers (where there's no visual context to the user). + // user to select a valid cert. b) requires an associated WebContents; we + // don't want to show a picker with no context. In the case of a), we don't + // need a WebContents to display a picker. However, we don't always know + // whether a) or b) will happen on all platforms. In particular, on Android, + // the process to check for a cert will *also* show the picker. Thus, we + // typically just early-out here unless we're ready to show a cert picker. if (!web_contents) { + // There's one exception to the above. In the case of extensions, we allow + // the request to continue without a certificate if there are no client + // certs. This allows extension service workers to behave in the same way + // as extension offscreen documents and legacy extension background pages. + // Those cases would lead to the SSLClientCertificateSelector, which would + // automatically continue if the associated certificate list was empty. + // See https://crbug.com/333954429. + // Note: the !IS_ANDROID here is currently moot, but is important in case + // this ever changes. On Android, `matching_certificates` and + // `nonmatching_certificates` are always empty at this stage, even when + // there are matching certificates available in the OS, so this would + // result in always proceeding with no certificate for any request from an + // extension service worker. That decision would be remembered across the + // entire profile, potentially locking the user out of the origin. +#if BUILDFLAG(ENABLE_EXTENSIONS) && !BUILDFLAG(IS_ANDROID) + if (matching_certificates.empty() && nonmatching_certificates.empty()) { + extensions::ProcessMap* process_map = + extensions::ProcessMap::Get(profile); + if (process_map && process_map->Contains(process_id)) { + delegate->ContinueWithCertificate(nullptr, nullptr); + return base::OnceClosure(); + } + } +#endif + // Return without calling anything on `delegate`. This results in the // `delegate` being deleted, which implicitly calls to cancel the request. return base::OnceClosure(); @@ -4283,8 +4459,11 @@ void ChromeContentBrowserClient::OverrideWebkitPrefs( const webapps::AppId& app_id = browser->app_controller()->app_id(); const web_app::WebAppRegistrar& registrar = web_app_provider->registrar_unsafe(); - if (registrar.IsLocallyInstalled(app_id)) + if (registrar.IsInstallState( + app_id, {web_app::proto::INSTALLED_WITH_OS_INTEGRATION, + web_app::proto::INSTALLED_WITHOUT_OS_INTEGRATION})) { web_prefs->web_app_scope = registrar.GetAppScope(app_id); + } #if BUILDFLAG(IS_CHROMEOS_ASH) auto* system_app = browser->app_controller()->system_app(); @@ -4337,6 +4516,7 @@ void ChromeContentBrowserClient::OverrideWebkitPrefs( web_prefs->require_transient_activation_for_show_file_or_directory_picker = IsFileOrDirectoryPickerWithoutGestureAllowed(web_contents); #endif // !BUILDFLAG(IS_ANDROID) + // TODO(crbug.com/40941384): Remove this pref and solely rely on permissions. web_prefs->require_transient_activation_for_html_fullscreen = IsTransientActivationRequiredForHtmlFullscreen( web_contents->GetPrimaryMainFrame()); @@ -4365,6 +4545,9 @@ void ChromeContentBrowserClient::OverrideWebkitPrefs( web_prefs->in_forced_colors = IsForcedColorsEnabledForWebContent(web_contents, GetWebTheme()); + web_prefs->is_forced_colors_disabled = + ShouldDisableForcedColorsForWebContent(web_contents); + UpdatePreferredColorScheme( web_prefs, web_contents->GetPrimaryMainFrame()->GetSiteInstance()->GetSiteURL(), @@ -4445,6 +4628,7 @@ bool ChromeContentBrowserClient::OverrideWebPreferencesAfterNavigation( web_prefs->require_transient_activation_for_show_file_or_directory_picker = require_transient_activation_for_show_file_or_directory_picker; #endif // !BUILDFLAG(IS_ANDROID) + // TODO(crbug.com/40941384): Remove this pref and solely rely on permissions. const bool require_transient_activation_for_html_fullscreen = IsTransientActivationRequiredForHtmlFullscreen( web_contents->GetPrimaryMainFrame()); @@ -4464,6 +4648,12 @@ bool ChromeContentBrowserClient::OverrideWebPreferencesAfterNavigation( prefs_changed |= (web_prefs->in_forced_colors != in_forced_colors); web_prefs->in_forced_colors = in_forced_colors; + const bool is_forced_colors_disabled = + ShouldDisableForcedColorsForWebContent(web_contents); + prefs_changed |= + (web_prefs->is_forced_colors_disabled != is_forced_colors_disabled); + web_prefs->is_forced_colors_disabled = is_forced_colors_disabled; + prefs_changed |= UpdatePreferredColorScheme(web_prefs, web_contents->GetLastCommittedURL(), web_contents, GetWebTheme()); @@ -4849,12 +5039,26 @@ std::wstring ChromeContentBrowserClient::GetAppContainerSidForSandboxType( } } -bool ChromeContentBrowserClient::IsRendererAppContainerDisabled() { +bool ChromeContentBrowserClient::IsAppContainerDisabled( + sandbox::mojom::Sandbox sandbox_type) { DCHECK_CURRENTLY_ON(BrowserThread::UI); + constexpr auto kSandboxPolicyPrefMapping = + base::MakeFixedFlatMap({ + {sandbox::mojom::Sandbox::kRenderer, + prefs::kRendererAppContainerEnabled}, + {sandbox::mojom::Sandbox::kPrintCompositor, + prefs::kPrintingLPACSandboxEnabled}, + }); + auto iter = kSandboxPolicyPrefMapping.find(sandbox_type); + + if (iter == kSandboxPolicyPrefMapping.end()) { + return false; + } + PrefService* local_state = g_browser_process->local_state(); const PrefService::Preference* pref = - local_state->FindPreference(prefs::kRendererAppContainerEnabled); + local_state->FindPreference(iter->second); // App Container is disabled if managed pref is set to false. if (pref && pref->IsManaged() && !pref->GetValue()->GetBool()) return true; @@ -4978,6 +5182,15 @@ bool ChromeContentBrowserClient::IsRendererCodeIntegrityEnabled() { local_state->GetBoolean(prefs::kRendererCodeIntegrityEnabled); } +bool ChromeContentBrowserClient::IsPdfFontProxyEnabled() { +#if BUILDFLAG(ENABLE_PDF) + return base::FeatureList::IsEnabled( + chrome_pdf::features::kWinPdfUseFontProxy); +#else + return false; +#endif +} + // Note: Only use sparingly to add Chrome specific sandbox functionality here. // Other code should reside in the content layer. Changes to this function // should be reviewed by the security team. @@ -4999,8 +5212,8 @@ bool ChromeContentBrowserClient::ShouldEnableAudioProcessHighPriority() { bool ChromeContentBrowserClient::ShouldUseSkiaFontManager( const GURL& site_url) { - return (base::FeatureList::IsEnabled(features::kSkiaFontService) && - IsTopChromeWebUIURL(site_url)); + return IsTopChromeWebUIURL(site_url) && + base::FeatureList::IsEnabled(features::kSkiaFontService); } #endif // BUILDFLAG(IS_WIN) @@ -5851,6 +6064,12 @@ ChromeContentBrowserClient::CreateURLLoaderThrottles( wc_getter.Run())); #endif +#if BUILDFLAG(ENABLE_REQUEST_HEADER_INTEGRITY) + result.push_back( + std::make_unique< + request_header_integrity::RequestHeaderIntegrityURLLoaderThrottle>()); +#endif + if (chrome_navigation_ui_data && chrome_navigation_ui_data->is_no_state_prefetching()) { result.push_back( @@ -6395,6 +6614,14 @@ void ChromeContentBrowserClient::WillCreateURLLoaderFactory( ->is_captive_portal_window(); } #endif + + // WARNING: This must be the last interceptor in the chain as the proxying + // URLLoaderFactory installed by this needs to be the one actually sending + // packets over the network (to effectively target `bound_network`). + MaybeProxyNetworkBoundRequest(browser_context, + GetBoundNetworkFromRenderFrameHost(frame), + factory_builder, factory_override, + isolation_info); } std::vector> @@ -6402,6 +6629,7 @@ ChromeContentBrowserClient::WillCreateURLLoaderRequestInterceptors( content::NavigationUIData* navigation_ui_data, int frame_tree_node_id, int64_t navigation_id, + bool force_no_https_upgrade, scoped_refptr navigation_response_task_runner) { std::vector> interceptors; @@ -6424,11 +6652,13 @@ ChromeContentBrowserClient::WillCreateURLLoaderRequestInterceptors( interceptors.push_back(std::make_unique( frame_tree_node_id, navigation_id, navigation_response_task_runner)); - auto https_upgrades_interceptor = - HttpsUpgradesInterceptor::MaybeCreateInterceptor(frame_tree_node_id, - navigation_ui_data); - if (https_upgrades_interceptor) { - interceptors.push_back(std::move(https_upgrades_interceptor)); + if (!force_no_https_upgrade) { + auto https_upgrades_interceptor = + HttpsUpgradesInterceptor::MaybeCreateInterceptor(frame_tree_node_id, + navigation_ui_data); + if (https_upgrades_interceptor) { + interceptors.push_back(std::move(https_upgrades_interceptor)); + } } return interceptors; @@ -6500,73 +6730,6 @@ void ChromeContentBrowserClient::WillCreateWebTransport( mojo::PendingRemote handshake_client, WillCreateWebTransportCallback callback) { -#if BUILDFLAG(SAFE_BROWSING_AVAILABLE) - content::RenderFrameHost* frame = - content::RenderFrameHost::FromID(process_id, frame_routing_id); - if (frame) { - int frame_tree_node_id = frame->GetFrameTreeNodeId(); - content::WebContents* web_contents = - content::WebContents::FromFrameTreeNodeId(frame_tree_node_id); - DCHECK(web_contents); - Profile* profile = - Profile::FromBrowserContext(web_contents->GetBrowserContext()); - DCHECK(profile); - auto checker = std::make_unique( - base::BindOnce( - &ChromeContentBrowserClient::GetSafeBrowsingUrlCheckerDelegate, - base::Unretained(this), - safe_browsing::IsSafeBrowsingEnabled(*profile->GetPrefs()), - /*should_check_on_sb_disabled=*/false, - safe_browsing::GetURLAllowlistByPolicy(profile->GetPrefs())), - base::BindRepeating(&content::WebContents::FromFrameTreeNodeId, - frame_tree_node_id), - frame_tree_node_id); - auto* raw_checker = checker.get(); - raw_checker->Check( - url, - base::BindOnce( - &ChromeContentBrowserClient::SafeBrowsingWebApiHandshakeChecked, - weak_factory_.GetWeakPtr(), std::move(checker), process_id, - frame_routing_id, url, initiator_origin, - std::move(handshake_client), std::move(callback))); - return; - } -#endif - MaybeInterceptWebTransport(process_id, frame_routing_id, url, - initiator_origin, std::move(handshake_client), - std::move(callback)); -} - -void ChromeContentBrowserClient::SafeBrowsingWebApiHandshakeChecked( - std::unique_ptr checker, - int process_id, - int frame_routing_id, - const GURL& url, - const url::Origin& initiator_origin, - mojo::PendingRemote - handshake_client, - WillCreateWebTransportCallback callback, - safe_browsing::WebApiHandshakeChecker::CheckResult result) { - if (result == safe_browsing::WebApiHandshakeChecker::CheckResult::kProceed) { - MaybeInterceptWebTransport(process_id, frame_routing_id, url, - initiator_origin, std::move(handshake_client), - std::move(callback)); - } else { - std::move(callback).Run(std::move(handshake_client), - network::mojom::WebTransportError::New( - net::ERR_ABORTED, quic::QUIC_INTERNAL_ERROR, - "SafeBrowsing check failed", false)); - } -} - -void ChromeContentBrowserClient::MaybeInterceptWebTransport( - int process_id, - int frame_routing_id, - const GURL& url, - const url::Origin& initiator_origin, - mojo::PendingRemote - handshake_client, - WillCreateWebTransportCallback callback) { #if BUILDFLAG(ENABLE_EXTENSIONS) DCHECK_CURRENTLY_ON(BrowserThread::UI); // TODO(crbug.com/40195467): Add a unit test which calls @@ -6921,6 +7084,8 @@ bool ChromeContentBrowserClient::HandleExternalProtocol( const std::optional& initiating_origin, content::RenderFrameHost* initiator_document, mojo::PendingRemote* out_factory) { + CHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); + #if BUILDFLAG(ENABLE_EXTENSIONS) // External protocols are disabled for guests. An exception is made for the // "mailto" protocol, so that pages that utilize it work properly in a @@ -6945,26 +7110,11 @@ bool ChromeContentBrowserClient::HandleExternalProtocol( ? initiator_document->GetWeakDocumentPtr() : content::WeakDocumentPtr(); -#if BUILDFLAG(IS_ANDROID) - // For Android this is always called on the UI thread. - CHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); - - // Called synchronously so we can populate the |out_factory| param. + // On Android, populate the `out_factory` param. LaunchURL(weak_factory_.GetWeakPtr(), url, std::move(web_contents_getter), page_transition, is_primary_main_frame, is_in_fenced_frame_tree, sandbox_flags, has_user_gesture, initiating_origin, std::move(weak_initiator_document), out_factory); -#else - // TODO(crbug.com/40248796): Figure out why this was initially made async, - // and, if possible, unify with the sync path above. - content::GetUIThreadTaskRunner({})->PostTask( - FROM_HERE, - base::BindOnce(&LaunchURL, weak_factory_.GetWeakPtr(), url, - std::move(web_contents_getter), page_transition, - is_primary_main_frame, is_in_fenced_frame_tree, - sandbox_flags, has_user_gesture, initiating_origin, - std::move(weak_initiator_document))); -#endif return true; } @@ -7318,6 +7468,14 @@ void ChromeContentBrowserClient::LogWebFeatureForCurrentPage( render_frame_host, feature); } +void ChromeContentBrowserClient::LogWebDXFeatureForCurrentPage( + content::RenderFrameHost* render_frame_host, + blink::mojom::WebDXFeature feature) { + DCHECK_CURRENTLY_ON(BrowserThread::UI); + page_load_metrics::MetricsWebContentsObserver::RecordFeatureUsage( + render_frame_host, feature); +} + std::string ChromeContentBrowserClient::GetProduct() { return std::string(version_info::GetProductNameAndVersionForUserAgent()); } @@ -7873,36 +8031,6 @@ 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 - -content::ContentBrowserClient::DigitalIdentityInterstitialAbortCallback -ChromeContentBrowserClient::ShowDigitalIdentityInterstitialIfNeeded( - content::WebContents& web_contents, - const url::Origin& origin, - bool is_only_requesting_age, - DigitalIdentityInterstitialCallback callback) { - auto bridge = - std::make_unique(); - auto* bridge_ptr = bridge.get(); - // Callback takes ownership of |bridge|. - return bridge_ptr->ShowInterstitialIfNeeded( - web_contents, origin, is_only_requesting_age, - base::BindOnce(&RunDigitalIdentityCallback, std::move(bridge), - std::move(callback))); -} -#endif - std::unique_ptr ChromeContentBrowserClient::CreateDigitalIdentityProvider() { #if BUILDFLAG(IS_ANDROID) @@ -8204,8 +8332,11 @@ bool ChromeContentBrowserClient:: bool ChromeContentBrowserClient::IsTransientActivationRequiredForHtmlFullscreen( content::RenderFrameHost* render_frame_host) { + // TODO(crbug.com/40941384): Remove this code and solely rely on permissions. if (base::FeatureList::IsEnabled( - features::kAutomaticFullscreenContentSetting)) { + features::kAutomaticFullscreenContentSetting) && + !base::FeatureList::IsEnabled( + blink::features::kAutomaticFullscreenPermissionsQuery)) { const GURL& url = render_frame_host->GetLastCommittedURL(); const HostContentSettingsMap* const content_settings = HostContentSettingsMapFactory::GetForProfile( @@ -8446,9 +8577,11 @@ bool ChromeContentBrowserClient::ShouldSuppressAXLoadComplete( } void ChromeContentBrowserClient::BindAIManager( - content::RenderFrameHost* rfh, + content::BrowserContext* browser_context, mojo::PendingReceiver receiver) { - AIManagerImpl::Create(rfh, std::move(receiver)); + auto* ai_manager = + AIManagerKeyedServiceFactory::GetAIManagerKeyedService(browser_context); + ai_manager->AddReceiver(std::move(receiver)); } #if !BUILDFLAG(IS_ANDROID) @@ -8486,7 +8619,9 @@ void ChromeContentBrowserClient::QueryInstalledWebAppsByManifestId( .Set("manifest_id", manifest_id.spec()) .Set("frame_url", frame_url.spec())); - if (!lock.registrar().IsLocallyInstalled(app_id)) { + if (!lock.registrar().IsInstallState( + app_id, {web_app::proto::INSTALLED_WITHOUT_OS_INTEGRATION, + web_app::proto::INSTALLED_WITH_OS_INTEGRATION})) { debug_value.Set("did_find_application", false); return std::nullopt; } @@ -8519,3 +8654,8 @@ void ChromeContentBrowserClient::QueryInstalledWebAppsByManifestId( std::move(callback), std::move(arg_for_shutdown)); } #endif // !BUILDFLAG(IS_ANDROID) + +void ChromeContentBrowserClient::SetSamplingProfiler( + std::unique_ptr sampling_profiler) { + sampling_profiler_ = std::move(sampling_profiler); +} diff --git a/tools/under-control/src/chrome/browser/prefs/browser_prefs.cc b/tools/under-control/src/chrome/browser/prefs/browser_prefs.cc index c93cccc81..8cf6b5d7d 100755 --- a/tools/under-control/src/chrome/browser/prefs/browser_prefs.cc +++ b/tools/under-control/src/chrome/browser/prefs/browser_prefs.cc @@ -19,6 +19,7 @@ #include "chrome/browser/about_flags.h" #include "chrome/browser/accessibility/accessibility_labels_service.h" #include "chrome/browser/accessibility/invert_bubble_prefs.h" +#include "chrome/browser/accessibility/page_colors.h" #include "chrome/browser/accessibility/prefers_default_scrollbar_styles_prefs.h" #include "chrome/browser/browser_process_impl.h" #include "chrome/browser/chrome_content_browser_client.h" @@ -73,13 +74,13 @@ #include "chrome/browser/sharing_hub/sharing_hub_features.h" #include "chrome/browser/ssl/ssl_config_service_manager.h" #include "chrome/browser/task_manager/task_manager_interface.h" -#include "chrome/browser/tpcd/experiment/tpcd_pref_names.h" #include "chrome/browser/tracing/chrome_tracing_delegate.h" #include "chrome/browser/ui/browser_ui_prefs.h" #include "chrome/browser/ui/hats/hats_service_desktop.h" #include "chrome/browser/ui/network_profile_bubble.h" #include "chrome/browser/ui/performance_controls/performance_controls_metrics.h" #include "chrome/browser/ui/prefs/prefs_tab_helper.h" +#include "chrome/browser/ui/safety_hub/safety_hub_prefs.h" #include "chrome/browser/ui/search_engines/keyword_editor_controller.h" #include "chrome/browser/ui/send_tab_to_self/send_tab_to_self_bubble.h" #include "chrome/browser/ui/tabs/organization/prefs.h" @@ -96,6 +97,10 @@ #include "chrome/browser/ui/webui/ntp/new_tab_ui.h" #include "chrome/browser/ui/webui/policy/policy_ui.h" #include "chrome/browser/ui/webui/print_preview/policy_settings.h" +#include "components/privacy_sandbox/tpcd_pref_names.h" +#if BUILDFLAG(IS_CHROMEOS_ASH) +#include "chrome/browser/ui/webui/settings/reset_settings_handler.h" +#endif // BUILDFLAG(IS_CHROMEOS_ASH) #include "chrome/browser/updates/announcement_notification/announcement_notification_service.h" #include "chrome/browser/user_education/browser_feature_promo_storage_service.h" #include "chrome/browser/webauthn/chrome_authenticator_request_delegate.h" @@ -119,7 +124,7 @@ #include "components/enterprise/browser/identifiers/identifiers_prefs.h" #include "components/enterprise/buildflags/buildflags.h" #include "components/enterprise/connectors/connectors_prefs.h" -#include "components/fingerprinting_protection_filter/browser/fingerprinting_protection_filter_constants.h" +#include "components/fingerprinting_protection_filter/common/fingerprinting_protection_filter_constants.h" #include "components/flags_ui/pref_service_flags_storage.h" #include "components/history_clusters/core/history_clusters_prefs.h" #include "components/image_fetcher/core/cache/image_cache.h" @@ -173,7 +178,7 @@ #include "components/signin/public/identity_manager/identity_manager.h" #include "components/site_engagement/content/site_engagement_service.h" #include "components/subresource_filter/content/shared/browser/ruleset_service.h" -#include "components/subresource_filter/core/browser/subresource_filter_constants.h" +#include "components/subresource_filter/core/common/constants.h" #include "components/supervised_user/core/browser/supervised_user_preferences.h" #include "components/sync/base/pref_names.h" #include "components/sync/service/glue/sync_transport_data_prefs.h" @@ -225,6 +230,7 @@ #include "chrome/browser/ash/policy/remote_commands/crd/crd_admin_session_controller.h" #include "chrome/browser/ash/settings/hardware_data_usage_controller.h" #include "chrome/browser/ash/settings/stats_reporting_controller.h" +#include "chrome/browser/ash/system_web_apps/apps/media_app/media_app_guest_ui_config.h" #include "chrome/browser/component_updater/metadata_table_chromeos.h" #include "chrome/browser/extensions/api/shared_storage/shared_storage_private_api.h" #include "chrome/browser/ui/ash/projector/projector_app_client_impl.h" @@ -243,8 +249,11 @@ #endif #include "components/feed/buildflags.h" -#include "components/feed/core/common/pref_names.h" -#include "components/feed/core/shared_prefs/pref_names.h" +#if BUILDFLAG(ENABLE_FEED_V2) +#include "components/feed/core/common/pref_names.h" // nogncheck +#include "components/feed/core/shared_prefs/pref_names.h" // nogncheck +#include "components/feed/core/v2/ios_shared_prefs.h" // nogncheck +#endif #if BUILDFLAG(IS_ANDROID) #include "chrome/browser/accessibility/accessibility_prefs/android/accessibility_prefs_controller.h" @@ -260,10 +269,8 @@ #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" #include "components/ntp_tiles/popular_sites_impl.h" #include "components/permissions/contexts/geolocation_permission_context_android.h" #include "components/query_tiles/tile_service_prefs.h" @@ -279,8 +286,6 @@ #include "chrome/browser/metrics/tab_stats/tab_stats_tracker.h" #include "chrome/browser/nearby_sharing/common/nearby_share_prefs.h" #include "chrome/browser/new_tab_page/modules/file_suggestion/drive_service.h" -#include "chrome/browser/new_tab_page/modules/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" #include "chrome/browser/new_tab_page/modules/v2/calendar/google_calendar_page_handler.h" #include "chrome/browser/new_tab_page/modules/v2/most_relevant_tab_resumption/most_relevant_tab_resumption_page_handler.h" @@ -292,7 +297,6 @@ #include "chrome/browser/serial/serial_policy_allowed_ports.h" #include "chrome/browser/signin/signin_promo.h" #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/webui/cr_components/theme_color_picker/theme_color_picker_handler.h" #include "chrome/browser/ui/webui/history/foreign_session_handler.h" @@ -310,6 +314,10 @@ #include "components/user_notes/user_notes_prefs.h" #endif // BUILDFLAG(IS_ANDROID) +#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) +#include "chrome/browser/ui/webui/whats_new/whats_new_ui.h" +#endif + #if !BUILDFLAG(IS_ANDROID) && BUILDFLAG(GOOGLE_CHROME_BRANDING) #include "chrome/browser/promos/promos_utils.h" #endif // !BUILDFLAG(IS_ANDROID) && BUILDFLAG(GOOGLE_CHROME_BRANDING) @@ -337,7 +345,6 @@ #include "ash/components/arc/arc_prefs.h" #include "ash/constants/ash_pref_names.h" #include "ash/public/cpp/ash_prefs.h" -#include "chrome/browser/apps/app_deduplication_service/app_deduplication_service.h" #include "chrome/browser/apps/app_discovery_service/almanac_fetcher.h" #include "chrome/browser/apps/app_preload_service/app_preload_service.h" #include "chrome/browser/apps/app_service/metrics/app_platform_metrics_service.h" @@ -468,7 +475,7 @@ #include "chrome/browser/media/webrtc/system_media_capture_permissions_stats_mac.h" #include "chrome/browser/ui/cocoa/apps/quit_with_apps_controller_mac.h" #include "chrome/browser/ui/cocoa/confirm_quit.h" -#include "chrome/browser/web_applications/app_shim_registry_mac.h" +#include "chrome/browser/web_applications/os_integration/mac/app_shim_registry.h" #endif #if BUILDFLAG(IS_WIN) @@ -544,7 +551,7 @@ #endif #if BUILDFLAG(ENTERPRISE_DATA_CONTROLS) -#include "components/enterprise/data_controls/prefs.h" +#include "components/enterprise/data_controls/core/prefs.h" #endif namespace { @@ -552,209 +559,6 @@ namespace { // Please keep the list of deprecated prefs in chronological order. i.e. Add to // the bottom of the list, not here at the top. -// Deprecated 04/2023. -#if BUILDFLAG(IS_CHROMEOS_ASH) -const char kEasyUnlockHardlockState[] = "easy_unlock.hardlock_state"; -#endif // BUILDFLAG(IS_CHROMEOS_ASH) - -// Deprecated 04/2023. -#if BUILDFLAG(IS_CHROMEOS_ASH) -const char kBentoBarEnabled[] = "ash.bento_bar.enabled"; -const char kUserHasUsedDesksRecently[] = "ash.user_has_used_desks_recently"; -#endif // BUILDFLAG(IS_CHROMEOS_ASH) - -// Deprecated 04/2023. -#if BUILDFLAG(IS_ANDROID) -const char kUserSettingEnabled[] = "offline_prefetch.enabled"; -const char kBackoff[] = "offline_prefetch.backoff"; -const char kLimitlessPrefetchingEnabledTimePref[] = - "offline_prefetch.limitless_prefetching_enabled_time"; -const char kPrefetchTestingHeaderPref[] = - "offline_prefetch.testing_header_value"; -const char kEnabledByServer[] = "offline_prefetch.enabled_by_server"; -const char kNextForbiddenCheckTimePref[] = "offline_prefetch.next_gpb_check"; -const char kPrefetchCachedGCMToken[] = "offline_prefetch.gcm_token"; -#endif - -// Deprecated 04/2023. -const char kTypeSubscribedForInvalidations[] = - "invalidation.registered_for_invalidation"; -const char kActiveRegistrationToken[] = - "invalidation.active_registration_token"; -const char kFCMInvalidationClientIDCache[] = "fcm.invalidation.client_id_cache"; - -// Deprecated 04/2023. -#if BUILDFLAG(IS_CHROMEOS_ASH) -const char kConsolidatedConsentTrial[] = "per_user_metrics.trial_group"; -#endif // BUILDFLAG(IS_CHROMEOS_ASH) - -// Deprecated 04/2023. -#if BUILDFLAG(IS_CHROMEOS_ASH) -const char kOfficeFilesAlwaysMove[] = "filebrowser.office.always_move"; -const char kOfficeMoveConfirmationShown[] = - "filebrowser.office.move_confirmation_shown"; -#endif // BUILDFLAG(IS_CHROMEOS_ASH) - -// Deprecated 04/2023. -#if BUILDFLAG(IS_CHROMEOS_ASH) -const char kProximityAuthIsChromeOSLoginEnabled[] = - "proximity_auth.is_chromeos_login_enabled"; -#endif // BUILDFLAG(IS_CHROMEOS_ASH) - -// Deprecated 04/2023. -#if BUILDFLAG(IS_CHROMEOS_ASH) -const char kEnrollmentIdUploadedOnChromad[] = "chromad.enrollment_id_uploaded"; -const char kLastChromadMigrationAttemptTime[] = - "chromad.last_migration_attempt_time"; -#endif // BUILDFLAG(IS_CHROMEOS_ASH) - -// Deprecated 05/2023. -#if BUILDFLAG(IS_CHROMEOS_ASH) -const char kSmartLockSigninAllowed[] = "smart_lock_signin.allowed"; -#endif // BUILDFLAG(IS_CHROMEOS_ASH) - -// Deprecated 05/2023. -#if BUILDFLAG(IS_ANDROID) -const char kVideoTutorialsPreferredLocaleKey[] = - "video_tutorials.perferred_locale"; -const char kVideoTutorialsLastUpdatedTimeKey[] = - "video_tutorials.last_updated_time"; -const char kWeeklyStatsReportingTimestamp[] = - "explore_sites.weekly_stats_reporting_timestamp"; -#endif // BUILDFLAG(IS_ANDROID) - -// Deprecated 05/2023. -const char kForceEnablePepperVideoDecoderDevAPI[] = - "policy.force_enable_pepper_video_decoder_dev_api"; - -// Deprecated 05/2023. -const char kUseMojoVideoDecoderForPepperAllowed[] = - "policy.use_mojo_video_decoder_for_pepper_allowed"; - -// Deprecated 05/2023. -const char kPPAPISharedImagesSwapChainAllowed[] = - "policy.ppapi_shared_images_swap_chain_allowed"; - -// Deprecated 05/2023. -#if BUILDFLAG(IS_CHROMEOS_ASH) -const char kOfficeSetupComplete[] = "filebrowser.office.setup_complete"; -#endif // BUILDFLAG(IS_CHROMEOS_ASH) - -// Deprecated 05/2023. -#if BUILDFLAG(IS_ANDROID) -const char kTimesUPMAuthErrorShown[] = "times_upm_auth_error_shown"; -#endif // BUILDFLAG(IS_ANDROID) - -// Deprecated 05/2023. -#if BUILDFLAG(IS_CHROMEOS_ASH) -const char kSamlPasswordSyncToken[] = "saml.password_sync_token"; -#endif // BUILDFLAG(IS_CHROMEOS_ASH) - -// Deprecated 05/2023. -#if BUILDFLAG(ENABLE_SCREEN_AI_SERVICE) -const char kScreenAIScheduledDeletionTimePrefName[] = - "accessibility.screen_ai.scheduled_deletion_time"; -#endif - -// Deprecated 05/2023. -#if BUILDFLAG(IS_CHROMEOS_ASH) -const char kEventRemappedToRightClick[] = - "ash.settings.event_remapped_to_right_click"; -#endif - -// Deprecated 05/2023. -#if BUILDFLAG(IS_CHROMEOS_ASH) -const char kSupervisedUserSyncId[] = "ManagedUserSyncId"; -const char kSupervisedUserManagers[] = "ManagedUserManagers"; -const char kSupervisedUserManagerNames[] = "ManagedUserManagerNames"; -const char kSupervisedUserManagerDisplayEmails[] = - "ManagedUserManagerDisplayEmails"; -const char kSupervisedUsersFirstRun[] = "LocallyManagedUsersFirstRun"; -const char kSupervisedUserPasswordSchema[] = "SupervisedUserPasswordSchema"; -const char kSupervisedUserPasswordSalt[] = "SupervisedUserPasswordSalt"; -const char kSupervisedUserPasswordRevision[] = "SupervisedUserPasswordRevision"; -const char kSupervisedUserNeedPasswordUpdate[] = - "SupervisedUserNeedPasswordUpdate"; -const char kSupervisedUserIncompleteKey[] = "SupervisedUserHasIncompleteKey"; -#endif - -// Deprecated 06/2023. -#if BUILDFLAG(IS_CHROMEOS_ASH) -const char kWebAppCalculatorAppErasureFixAppliedPref[] = - "web_app.calculator_app_erasure_fix_applied"; -#endif // BUILDFLAG(IS_CHROMEOS_ASH) - -// Deprecated 06/2023. -const char kWebAppsExtensionIDs[] = "web_apps.extension_ids"; - -// Deprecated 06/2023. -#if BUILDFLAG(IS_CHROMEOS_ASH) -const char kOsSyncPrefsMigrated[] = "sync.os_sync_prefs_migrated"; -#endif // BUILDFLAG(IS_CHROMEOS_ASH) - -// Deprecated 06/2023. -#if !BUILDFLAG(IS_ANDROID) -const char kShouldShowSidePanelBookmarkTab[] = - "should_show_side_panel_bookmark_tab"; -#endif // !BUILDFLAG(IS_ANDROID) - -// Deprecated 06/2023. -#if BUILDFLAG(IS_CHROMEOS_ASH) -const char kGaiaLastOnlineSignInTime[] = "gaia.last_online_sign_in_time"; -const char kSAMLLastGAIASignInTime[] = "saml.last_gaia_sign_in_time"; -#endif // BUILDFLAG(IS_CHROMEOS_ASH) - -// Deprecated 07/2023. -#if !BUILDFLAG(IS_ANDROID) -const char kLegacyHoverCardImagesEnabled[] = "browser.hovercard_images_enabled"; -#endif // !BUILDFLAG(IS_ANDROID) - -#if BUILDFLAG(ENABLE_FEED_V2) -const char kVideoPreviewsType[] = "ntp_snippets.video_previews_type"; -#endif // BUILDFLAG(ENABLE_FEED_V2) - -// Deprecated 06/2023. -#if BUILDFLAG(IS_ANDROID) -const char kPrefExplicitLanguageAskShown[] = - "translate_explicit_language_ask_shown"; -#endif // BUILDFLAG(IS_ANDROID) - -// Deprecated 07/2023. -#if !BUILDFLAG(IS_CHROMEOS_ASH) -const char kUnifiedConsentMigrationState[] = "unified_consent.migration_state"; -#endif // !BUILDFLAG(IS_CHROMEOS_ASH) - -// Deprecated 07/2023. -const char kPasswordsGroupingInfoRequested[] = - "password_manager.passwords_grouping_info_requested"; - -// Deprecated 07/2023. -#if BUILDFLAG(IS_CHROMEOS_ASH) -const char kPowerMetricsIdleScreenOffCount[] = - "power.metrics.idle_screen_off_count"; -const char kPowerMetricsIdleSuspendCount[] = "power.metrics.idle_suspend_count"; -const char kPowerMetricsLidClosedSuspendCount[] = - "power.metrics.lid_closed_suspend_count"; -#endif // BUILDFLAG(IS_CHROMEOS_ASH) - -// Deprecated 07/2023. -#if BUILDFLAG(IS_CHROMEOS_ASH) -const char kHatsPrivacyHubBaselineIsSelected[] = - "hats_privacy_hub_baseline_is_selected"; -const char kHatsPrivacyHubBaselineCycleEndTs[] = - "hats_privacy_hub_baseline_end_timestamp"; -#endif // BUILDFLAG(IS_CHROMEOS_ASH) - -// Deprecated 07/2023. -#if BUILDFLAG(IS_CHROMEOS_ASH) -const char kClearUserDataDir1Pref[] = "lacros.clear_user_data_dir_1"; -#endif - -// Deprecated 07/2023. -const char kShutdownNumProcesses[] = "shutdown.num_processes"; -const char kShutdownNumProcessesSlow[] = "shutdown.num_processes_slow"; -const char kShutdownType[] = "shutdown.type"; - // Deprecated 08/2023. const char kDriveFsBulkPinningMaxQueueSize[] = "drivefs.bulk_pinning.max_queue_size"; @@ -1137,77 +941,102 @@ inline constexpr char kTrackingProtectionOffboardedSince[] = inline constexpr char kTrackingProtectionOffboardingAckAction[] = "tracking_protection.tracking_protection_offboarding_ack_action"; -// Register local state used only for migration (clearing or moving to a new -// key). -void RegisterLocalStatePrefsForMigration(PrefRegistrySimple* registry) { -// Deprecated 04/2023. -#if BUILDFLAG(IS_CHROMEOS_ASH) - registry->RegisterDictionaryPref(kEasyUnlockHardlockState); -#endif // BUILDFLAG(IS_CHROMEOS_ASH) - - // Deprecated 04/2023. - registry->RegisterDictionaryPref(kTypeSubscribedForInvalidations); - registry->RegisterStringPref(kActiveRegistrationToken, std::string()); - registry->RegisterStringPref(kFCMInvalidationClientIDCache, std::string()); - -// Deprecated 04/2023. #if BUILDFLAG(IS_CHROMEOS_ASH) - registry->RegisterStringPref(kConsolidatedConsentTrial, std::string()); -#endif // BUILDFLAG(IS_CHROMEOS_ASH) +// Deprecated 06/2024. +constexpr std::array + kHoldingSpaceWallpaperNudgeTimesOfFirstInteraction = { + "ash.holding_space.wallpaper_nudge.interaction_time." + "DroppedFileOnHoldingSpace.first_time", + "ash.holding_space.wallpaper_nudge.interaction_time." + "DroppedFileOnWallpaper.first_time", + "ash.holding_space.wallpaper_nudge.interaction_time." + "DraggedFileOverWallpaper.first_time", + "ash.holding_space.wallpaper_nudge.interaction_time.OpenedHoldingSpace." + "first_time", + "ash.holding_space.wallpaper_nudge.interaction_time." + "PinnedFileFromAnySource.first_time", + "ash.holding_space.wallpaper_nudge.interaction_time." + "PinnedFileFromContextMenu.first_time", + "ash.holding_space.wallpaper_nudge.interaction_time." + "PinnedFileFromFilesApp.first_time", + "ash.holding_space.wallpaper_nudge.interaction_time." + "PinnedFileFromHoldingSpaceDrop.first_time", + "ash.holding_space.wallpaper_nudge.interaction_time." + "PinnedFileFromPinButton.first_time", + "ash.holding_space.wallpaper_nudge.interaction_time." + "PinnedFileFromWallpaperDrop.first_time", + "ash.holding_space.wallpaper_nudge.interaction_time.UsedOtherItem." + "first_time", + "ash.holding_space.wallpaper_nudge.interaction_time.UsedPinnedItem." + "first_time", +}; -// Deprecated 04/2023. -#if BUILDFLAG(IS_CHROMEOS_ASH) - registry->RegisterBooleanPref(kEnrollmentIdUploadedOnChromad, false); - registry->RegisterTimePref(kLastChromadMigrationAttemptTime, - /*default_value=*/base::Time()); -#endif // BUILDFLAG(IS_CHROMEOS_ASH) +// Deprecated 06/2024. +constexpr char kHoldingSpaceWallpaperNudgeLastTimeNudgeShownCounterfactual[] = + "ash.holding_space.wallpaper_nudge.last_shown_time_counterfactual"; +constexpr char kHoldingSpaceWallpaperNudgeLastTimeNudgeShown[] = + "ash.holding_space.wallpaper_nudge.last_shown_time"; +constexpr char kHoldingSpaceWallpaperNudgeNudgeShownCountCounterfactual[] = + "ash.holding_space.wallpaper_nudge.shown_count_counterfactual"; +constexpr char kHoldingSpaceWallpaperNudgeNudgeShownCount[] = + "ash.holding_space.wallpaper_nudge.shown_count"; +constexpr char kHoldingSpaceWallpaperNudgeUserEligibleForNudge[] = + "ash.holding_space.wallpaper_nudge.user_eligible"; +constexpr char kHoldingSpaceWallpaperNudgeUserFirstEligibleSessionTime[] = + "ash.holding_space.wallpaper_nudge.first_eligible_session_time"; - // Deprecated 05/2023. - registry->RegisterBooleanPref(kForceEnablePepperVideoDecoderDevAPI, false); +// Deprecated 06/2024. +constexpr char kLocalUserFilesMigrationEnabled[] = + "filebrowser.local_user_files_migration_enabled"; - // Deprecated 05/2023. - registry->RegisterBooleanPref(kUseMojoVideoDecoderForPepperAllowed, true); +// Deprecated 06/2024. +constexpr char kBirchUseRecentTabs[] = "ash.birch.use_recent_tabs"; +constexpr char kBirchUseLastActive[] = "ash.birch.use_last_active"; +constexpr char kBirchUseMostVisited[] = "ash.birch.use_most_visited"; +constexpr char kBirchUseSelfShare[] = "ash.birch.use_self_share"; +#endif - // Deprecated 05/2023. - registry->RegisterBooleanPref(kPPAPISharedImagesSwapChainAllowed, true); +// Deprecated 06/2024 +constexpr char kDefaultSearchProviderChoicePending[] = + "default_search_provider.engine_choice_pending"; -// Deprecated 05/2023. -#if BUILDFLAG(ENABLE_SCREEN_AI_SERVICE) - registry->RegisterTimePref(kScreenAIScheduledDeletionTimePrefName, - base::Time()); +// Deprecated 07/2024 +#if BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(ENABLE_DICE_SUPPORT) +inline constexpr char kFirstRunStudyGroup[] = "browser.first_run_study_group"; #endif -// Deprecated 05/2023. -#if BUILDFLAG(IS_ANDROID) - registry->RegisterTimePref(kWeeklyStatsReportingTimestamp, base::Time()); -#endif // BUILDFLAG(IS_ANDROID) +#if !BUILDFLAG(IS_ANDROID) +// Deprecated 07/2024 +constexpr char kNtpRecipesDismissedTasks[] = "NewTabPage.DismissedRecipeTasks"; +constexpr char kNtpModulesFirstShownTime[] = "NewTabPage.ModulesFirstShownTime"; +constexpr char kNtpModulesFreVisible[] = "NewTabPage.ModulesFreVisible"; +constexpr char kNtpModulesShownCount[] = "NewTabPage.ModulesShownCount"; +constexpr char kNtpPhotosLastDismissedTimePrefName[] = + "NewTabPage.Photos.LastDimissedTime"; +constexpr char kNtpPhotosOptInAcknowledgedPrefName[] = + "NewTabPage.Photos.OptInAcknowledged"; +constexpr char kNtpPhotosLastMemoryOpenTimePrefName[] = + "NewTabPage.Photos.LastMemoryOpenTime"; +constexpr char kNtpPhotosSoftOptOutCountPrefName[] = + "NewTabPage.Photos.SoftOptOutCount"; +constexpr char kNtpPhotosLastSoftOptedOutTimePrefName[] = + "NewTabPage.Photos.LastSoftOptedoutTime"; +#endif -// Deprecated 05/2023. +// Deprecated 07/2024. #if BUILDFLAG(IS_CHROMEOS_ASH) - registry->RegisterListPref(kSupervisedUsersFirstRun); - registry->RegisterDictionaryPref(kSupervisedUserSyncId); - registry->RegisterDictionaryPref(kSupervisedUserManagers); - registry->RegisterDictionaryPref(kSupervisedUserManagerNames); - registry->RegisterDictionaryPref(kSupervisedUserManagerDisplayEmails); - - registry->RegisterDictionaryPref(kSupervisedUserPasswordSchema); - registry->RegisterDictionaryPref(kSupervisedUserPasswordSalt); - registry->RegisterDictionaryPref(kSupervisedUserPasswordRevision); - - registry->RegisterDictionaryPref(kSupervisedUserNeedPasswordUpdate); - registry->RegisterDictionaryPref(kSupervisedUserIncompleteKey); +constexpr char kAppDeduplicationServiceLastGetTimestamp[] = + "apps.app_deduplication_service.last_get_data_from_server_timestamp"; #endif -// Deprecated 07/2023. -#if !BUILDFLAG(IS_ANDROID) - registry->RegisterBooleanPref(kLegacyHoverCardImagesEnabled, false); -#endif // !BUILDFLAG(IS_ANDROID) - - // Deprecated 07/2023. - registry->RegisterIntegerPref(kShutdownNumProcesses, 0); - registry->RegisterIntegerPref(kShutdownNumProcessesSlow, 0); - registry->RegisterIntegerPref(kShutdownType, 0); +// Deprecated 07/2024 +#if BUILDFLAG(IS_CHROMEOS_ASH) +constexpr char kShowTunaScreenEnabled[] = "ash.tuna_screen_oobe_enabled"; +#endif +// Register local state used only for migration (clearing or moving to a new +// key). +void RegisterLocalStatePrefsForMigration(PrefRegistrySimple* registry) { // Deprecated 09/2023. #if BUILDFLAG(IS_WIN) registry->RegisterDictionaryPref(kSwReporter); @@ -1278,6 +1107,15 @@ void RegisterLocalStatePrefsForMigration(PrefRegistrySimple* registry) { // Deprecated 05/2024. registry->RegisterBooleanPref(kHasShownRefreshWhatsNew, false); #endif + +#if BUILDFLAG(IS_CHROMEOS_ASH) + // Deprecated 06/2024. + registry->RegisterBooleanPref(kLocalUserFilesMigrationEnabled, false); +#endif +#if BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(ENABLE_DICE_SUPPORT) + // Deprecated 07/2024. + registry->RegisterStringPref(kFirstRunStudyGroup, std::string()); +#endif } // Register prefs used only for migration (clearing or moving to a new key). @@ -1285,133 +1123,6 @@ void RegisterProfilePrefsForMigration( user_prefs::PrefRegistrySyncable* registry) { chrome_browser_net::secure_dns::RegisterProbesSettingBackupPref(registry); -// Deprecated 04/2023. -#if BUILDFLAG(IS_CHROMEOS_ASH) - registry->RegisterBooleanPref(kBentoBarEnabled, false); - registry->RegisterBooleanPref(kUserHasUsedDesksRecently, false); -#endif // BUILDFLAG(IS_CHROMEOS_ASH) - -// Deprecated 04/2023. -#if BUILDFLAG(IS_ANDROID) - registry->RegisterListPref(kBackoff); - registry->RegisterBooleanPref(kUserSettingEnabled, true); - registry->RegisterTimePref(kLimitlessPrefetchingEnabledTimePref, - base::Time()); - registry->RegisterStringPref(kPrefetchTestingHeaderPref, std::string()); - registry->RegisterBooleanPref(kEnabledByServer, false); - registry->RegisterTimePref(kNextForbiddenCheckTimePref, base::Time()); - registry->RegisterStringPref(kPrefetchCachedGCMToken, std::string()); -#endif - - // Deprecated 04/2023. - registry->RegisterDictionaryPref(kTypeSubscribedForInvalidations); - registry->RegisterStringPref(kActiveRegistrationToken, std::string()); - registry->RegisterStringPref(kFCMInvalidationClientIDCache, std::string()); - - // Deprecated 04/2023. -#if BUILDFLAG(IS_ANDROID) - ntp_snippets::prefs::RegisterProfilePrefsForMigrationApril2023(registry); -#endif - -// Deprecated 04/2023. -#if BUILDFLAG(IS_CHROMEOS_ASH) - registry->RegisterBooleanPref(kOfficeFilesAlwaysMove, false); - registry->RegisterBooleanPref(kOfficeMoveConfirmationShown, false); -#endif // BUILDFLAG(IS_CHROMEOS_ASH) - -// Deprecated 04/2023. -#if BUILDFLAG(IS_CHROMEOS_ASH) - registry->RegisterBooleanPref(kProximityAuthIsChromeOSLoginEnabled, false); -#endif // BUILDFLAG(IS_CHROMEOS_ASH) - -// Deprecated 05/2023. -#if BUILDFLAG(IS_CHROMEOS_ASH) - registry->RegisterBooleanPref(kSmartLockSigninAllowed, false); -#endif // BUILDFLAG(IS_CHROMEOS_ASH) - - // Deprecated 05/2023. -#if BUILDFLAG(IS_ANDROID) - registry->RegisterStringPref(kVideoTutorialsPreferredLocaleKey, - std::string()); - registry->RegisterTimePref(kVideoTutorialsLastUpdatedTimeKey, base::Time()); -#endif // BUILDFLAG(IS_ANDROID) - -// Deprecated 05/2023. -#if BUILDFLAG(IS_CHROMEOS_ASH) - registry->RegisterBooleanPref(kOfficeSetupComplete, false); -#endif // BUILDFLAG(IS_CHROMEOS_ASH) - -// Deprecated 05/2023. -#if BUILDFLAG(IS_ANDROID) - registry->RegisterIntegerPref(kTimesUPMAuthErrorShown, 0); -#endif // BUILDFLAG(IS_ANDROID) - -// Deprecated 05/2023. -#if BUILDFLAG(IS_CHROMEOS_ASH) - registry->RegisterStringPref(kSamlPasswordSyncToken, std::string()); -#endif // BUILDFLAG(IS_CHROMEOS_ASH) - -// Deprecated 05/2023. -#if BUILDFLAG(IS_CHROMEOS_ASH) - registry->RegisterBooleanPref(kEventRemappedToRightClick, false); -#endif // BUILDFLAG(IS_CHROMEOS_ASH) - -// Deprecated 06/2023. -#if BUILDFLAG(IS_CHROMEOS_ASH) - registry->RegisterBooleanPref(kWebAppCalculatorAppErasureFixAppliedPref, - false); -#endif // BUILDFLAG(IS_CHROMEOS_ASH) - - // Deprecated 06/2023. - registry->RegisterDictionaryPref(kWebAppsExtensionIDs); - - // Deprecated 06/2023. -#if BUILDFLAG(IS_CHROMEOS_ASH) - registry->RegisterBooleanPref(kOsSyncPrefsMigrated, false); -#endif // BUILDFLAG(IS_CHROMEOS_ASH) - - // Deprecated 06/2023. -#if !BUILDFLAG(IS_ANDROID) - registry->RegisterBooleanPref(kShouldShowSidePanelBookmarkTab, false); -#endif // !BUILDFLAG(IS_ANDROID) - - // Deprecated 06/2023. -#if BUILDFLAG(ENABLE_FEED_V2) - registry->RegisterIntegerPref(kVideoPreviewsType, 1); -#endif // BUILDFLAG(ENABLE_FEED_V2) - -// Deprecated 06/2023. -#if BUILDFLAG(IS_CHROMEOS_ASH) - registry->RegisterTimePref(kGaiaLastOnlineSignInTime, base::Time()); - registry->RegisterTimePref(kSAMLLastGAIASignInTime, base::Time()); -#endif // BUILDFLAG(IS_CHROMEOS_ASH) - - // Deprecated 06/2023. -#if BUILDFLAG(IS_ANDROID) - registry->RegisterBooleanPref(kPrefExplicitLanguageAskShown, false); -#endif // BUILDFLAG(IS_ANDROID) - -// Deprecated 07/2023. -#if !BUILDFLAG(IS_CHROMEOS_ASH) - registry->RegisterIntegerPref(kUnifiedConsentMigrationState, 0); -#endif // !BUILDFLAG(IS_CHROMEOS_ASH) - - // Deprecated 07/2023. - registry->RegisterBooleanPref(kPasswordsGroupingInfoRequested, false); - -// Deprecated 07/2023. -#if BUILDFLAG(IS_CHROMEOS_ASH) - registry->RegisterIntegerPref(kPowerMetricsIdleScreenOffCount, 0); - registry->RegisterIntegerPref(kPowerMetricsIdleSuspendCount, 0); - registry->RegisterIntegerPref(kPowerMetricsLidClosedSuspendCount, 0); -#endif // BUILDFLAG(IS_CHROMEOS_ASH) - -// Deprecated 07/2023. -#if BUILDFLAG(IS_CHROMEOS_ASH) - registry->RegisterIntegerPref(kHatsPrivacyHubBaselineIsSelected, false); - registry->RegisterIntegerPref(kHatsPrivacyHubBaselineCycleEndTs, 0); -#endif // BUILDFLAG(IS_CHROMEOS_ASH) - // Deprecated 08/2023. registry->RegisterIntegerPref(kDriveFsBulkPinningMaxQueueSize, 0); @@ -1651,6 +1362,62 @@ void RegisterProfilePrefsForMigration( registry->RegisterBooleanPref(kTrackingProtectionOffboarded, false); registry->RegisterTimePref(kTrackingProtectionOffboardedSince, base::Time()); registry->RegisterIntegerPref(kTrackingProtectionOffboardingAckAction, 0); + +#if BUILDFLAG(IS_CHROMEOS_ASH) + // Deprecated 06/2024. + for (const char* pref : kHoldingSpaceWallpaperNudgeTimesOfFirstInteraction) { + registry->RegisterTimePref(pref, base::Time()); + } + + // Deprecated 06/2024. + registry->RegisterBooleanPref(kHoldingSpaceWallpaperNudgeUserEligibleForNudge, + false); + registry->RegisterTimePref( + kHoldingSpaceWallpaperNudgeLastTimeNudgeShownCounterfactual, + base::Time()); + registry->RegisterTimePref(kHoldingSpaceWallpaperNudgeLastTimeNudgeShown, + base::Time()); + registry->RegisterTimePref( + kHoldingSpaceWallpaperNudgeUserFirstEligibleSessionTime, base::Time()); + registry->RegisterUint64Pref( + kHoldingSpaceWallpaperNudgeNudgeShownCountCounterfactual, 0u); + registry->RegisterUint64Pref(kHoldingSpaceWallpaperNudgeNudgeShownCount, 0u); + + // Deprecated 06/2024 + registry->RegisterBooleanPref(kBirchUseRecentTabs, true); + registry->RegisterBooleanPref(kBirchUseLastActive, true); + registry->RegisterBooleanPref(kBirchUseMostVisited, true); + registry->RegisterBooleanPref(kBirchUseSelfShare, true); +#endif // BUILDFLAG(IS_CHROMEOS_ASH) + + // Deprecated 06/2024. + registry->RegisterBooleanPref(kDefaultSearchProviderChoicePending, false); + +#if !BUILDFLAG(IS_ANDROID) + // Deprecated 07/2024 + registry->RegisterListPref(kNtpRecipesDismissedTasks); + registry->RegisterBooleanPref(kNtpModulesFreVisible, true); + registry->RegisterIntegerPref(kNtpModulesShownCount, 0); + registry->RegisterTimePref(kNtpModulesFirstShownTime, base::Time()); + registry->RegisterTimePref(kNtpPhotosLastDismissedTimePrefName, base::Time()); + registry->RegisterBooleanPref(kNtpPhotosOptInAcknowledgedPrefName, false); + registry->RegisterTimePref(kNtpPhotosLastMemoryOpenTimePrefName, + base::Time()); + registry->RegisterTimePref(kNtpPhotosLastSoftOptedOutTimePrefName, + base::Time()); + registry->RegisterIntegerPref(kNtpPhotosSoftOptOutCountPrefName, 0); +#endif + + // Deprecated 07/2024. +#if BUILDFLAG(IS_CHROMEOS_ASH) + registry->RegisterTimePref(kAppDeduplicationServiceLastGetTimestamp, + base::Time()); +#endif + +#if BUILDFLAG(IS_CHROMEOS_ASH) + // Deprecated 07/2024. + registry->RegisterBooleanPref(kShowTunaScreenEnabled, true); +#endif // BUILDFLAG(IS_CHROMEOS_ASH) } void ClearSyncRequestedPrefAndMaybeMigrate(PrefService* profile_prefs) { @@ -1686,6 +1453,7 @@ void RegisterLocalState(PrefRegistrySimple* registry) { accessibility::AccessibilityPrefsController::RegisterLocalStatePrefs( registry); #endif + autofill::prefs::RegisterLocalStatePrefs(registry); breadcrumbs::RegisterPrefs(registry); browser_shutdown::RegisterPrefs(registry); BrowserProcessImpl::RegisterPrefs(registry); @@ -1755,6 +1523,9 @@ void RegisterLocalState(PrefRegistrySimple* registry) { policy::policy_prefs::kIntensiveWakeUpThrottlingEnabled, false); registry->RegisterBooleanPref( policy::policy_prefs::kUserAgentClientHintsGREASEUpdateEnabled, true); +#if BUILDFLAG(IS_WIN) && BUILDFLAG(GOOGLE_CHROME_BRANDING) + registry->RegisterBooleanPref(prefs::kFeatureNotificationsEnabled, true); +#endif // BUILDFLAG(IS_WIN) && BUILDFLAG(GOOGLE_CHROME_BRANDING) #if BUILDFLAG(IS_ANDROID) registry->RegisterBooleanPref(policy::policy_prefs::kBackForwardCacheEnabled, true); @@ -1791,6 +1562,10 @@ void RegisterLocalState(PrefRegistrySimple* registry) { registry->RegisterIntegerPref(prefs::kLastWhatsNewVersion, 0); #endif // BUILDFLAG(IS_ANDROID) +#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) + WhatsNewUI::RegisterLocalStatePrefs(registry); +#endif + #if BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(ENABLE_DICE_SUPPORT) FirstRunService::RegisterLocalStatePrefs(registry); #endif @@ -1842,7 +1617,6 @@ void RegisterLocalState(PrefRegistrySimple* registry) { registry); ash::Preferences::RegisterPrefs(registry); ash::ResetScreen::RegisterPrefs(registry); - settings::ResetSettingsHandler::RegisterLocalStatePrefs(registry); ash::SchedulerConfigurationManager::RegisterLocalStatePrefs(registry); ash::ServicesCustomizationDocument::RegisterPrefs(registry); ash::standalone_browser::migrator_util::RegisterLocalStatePrefs(registry); @@ -1908,6 +1682,7 @@ void RegisterLocalState(PrefRegistrySimple* registry) { registry->RegisterIntegerPref(prefs::kDynamicCodeSettings, /*Default=*/0); registry->RegisterBooleanPref(prefs::kApplicationBoundEncryptionEnabled, true); + registry->RegisterBooleanPref(prefs::kPrintingLPACSandboxEnabled, true); registry->RegisterBooleanPref( policy::policy_prefs::kNativeWindowOcclusionEnabled, true); MediaFoundationServiceMonitor::RegisterPrefs(registry); @@ -1948,12 +1723,19 @@ void RegisterLocalState(PrefRegistrySimple* registry) { registry->RegisterBooleanPref(prefs::kOopPrintDriversAllowedByPolicy, true); #endif +#if BUILDFLAG(IS_WIN) && BUILDFLAG(GOOGLE_CHROME_BRANDING) + // TODO(b/328668317): Default pref should be set to true once this is + // launched. + registry->RegisterBooleanPref(prefs::kOsUpdateHandlerEnabled, false); +#endif // BUILDFLAG(IS_WIN) && BUILDFLAG(GOOGLE_CHROME_BRANDING) + #if BUILDFLAG(ENABLE_PDF) registry->RegisterBooleanPref(prefs::kPdfViewerOutOfProcessIframeEnabled, true); #endif // BUILDFLAG(ENABLE_PDF) -#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) +#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) || \ + BUILDFLAG(IS_ANDROID) registry->RegisterBooleanPref(prefs::kChromeForTestingAllowed, true); #endif @@ -1961,6 +1743,8 @@ void RegisterLocalState(PrefRegistrySimple* registry) { registry->RegisterBooleanPref(prefs::kUiAutomationProviderEnabled, false); #endif + registry->RegisterBooleanPref(prefs::kQRCodeGeneratorEnabled, true); + // This is intentionally last. RegisterLocalStatePrefsForMigration(registry); } @@ -2013,6 +1797,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, ntp_tiles::MostVisitedSites::RegisterProfilePrefs(registry); optimization_guide::prefs::RegisterProfilePrefs(registry); optimization_guide::model_execution::prefs::RegisterProfilePrefs(registry); + PageColors::RegisterProfilePrefs(registry); password_manager::PasswordManager::RegisterProfilePrefs(registry); payments::RegisterProfilePrefs(registry); performance_manager::user_tuning::prefs::RegisterProfilePrefs(registry); @@ -2034,6 +1819,10 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, QuietNotificationPermissionUiState::RegisterProfilePrefs(registry); RegisterBrowserUserPrefs(registry); RegisterPrefersDefaultScrollbarStylesPrefs(registry); + RegisterSafetyHubProfilePrefs(registry); +#if BUILDFLAG(IS_CHROMEOS_ASH) + settings::ResetSettingsHandler::RegisterProfilePrefs(registry); +#endif // BUILDFLAG(IS_CHROMEOS_ASH) safe_browsing::file_type::RegisterProfilePrefs(registry); safe_browsing::RegisterProfilePrefs(registry); SearchPrefetchService::RegisterProfilePrefs(registry); @@ -2122,7 +1911,6 @@ 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); @@ -2153,13 +1941,10 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, NewTabPageUI::RegisterProfilePrefs(registry); ntp::SafeBrowsingHandler::RegisterProfilePrefs(registry); ntp_tiles::CustomLinksManagerImpl::RegisterProfilePrefs(registry); - PhotosService::RegisterProfilePrefs(registry); PinnedTabCodec::RegisterProfilePrefs(registry); policy::DeveloperToolsPolicyHandler::RegisterProfilePrefs(registry); PromoService::RegisterProfilePrefs(registry); - RecipesService::RegisterProfilePrefs(registry); RegisterReadAnythingProfilePrefs(registry); - RegisterSafetyHubProfilePrefs(registry); settings::SettingsUI::RegisterProfilePrefs(registry); send_tab_to_self::RegisterProfilePrefs(registry); signin::RegisterProfilePrefs(registry); @@ -2216,7 +2001,6 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, apps::AlmanacFetcher::RegisterProfilePrefs(registry); apps::AppPlatformMetricsService::RegisterProfilePrefs(registry); apps::AppPreloadService::RegisterProfilePrefs(registry); - apps::deduplication::AppDeduplicationService::RegisterProfilePrefs(registry); apps::webapk_prefs::RegisterProfilePrefs(registry); arc::prefs::RegisterProfilePrefs(registry); ArcAppListPrefs::RegisterProfilePrefs(registry); @@ -2292,6 +2076,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, bruschetta::prefs::RegisterProfilePrefs(registry); wallpaper_handlers::prefs::RegisterProfilePrefs(registry); ash::reporting::RegisterProfilePrefs(registry); + ChromeMediaAppGuestUIDelegate::RegisterProfilePrefs(registry); #endif // BUILDFLAG(IS_CHROMEOS_ASH) #if BUILDFLAG(IS_CHROMEOS_LACROS) @@ -2379,10 +2164,6 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); #endif // BUILDFLAG(ENABLE_SCREEN_AI_SERVICE) -#if BUILDFLAG(IS_CHROMEOS_ASH) - registry->RegisterBooleanPref(kClearUserDataDir1Pref, false); -#endif - registry->RegisterBooleanPref( prefs::kManagedPrivateNetworkAccessRestrictionsEnabled, false); @@ -2406,6 +2187,8 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, #endif registry->RegisterIntegerPref(prefs::kLensOverlayStartCount, 0); + + registry->RegisterDictionaryPref(prefs::kReportingEndpoints); } void RegisterUserProfilePrefs(user_prefs::PrefRegistrySyncable* registry) { @@ -2451,72 +2234,6 @@ void MigrateObsoleteLocalStatePrefs(PrefService* local_state) { // BEGIN_MIGRATE_OBSOLETE_LOCAL_STATE_PREFS // Please don't delete the preceding line. It is used by PRESUBMIT.py. -// Added 04/2023. -#if BUILDFLAG(IS_CHROMEOS_ASH) - local_state->ClearPref(kEasyUnlockHardlockState); -#endif // BUILDFLAG(IS_CHROMEOS_ASH) - - // Added 04/2023. - local_state->ClearPref(kTypeSubscribedForInvalidations); - local_state->ClearPref(kActiveRegistrationToken); - local_state->ClearPref(kFCMInvalidationClientIDCache); - -// Added 04/2023. -#if BUILDFLAG(IS_CHROMEOS_ASH) - local_state->ClearPref(kConsolidatedConsentTrial); -#endif // BUILDFLAG(IS_CHROMEOS_ASH) - -// Added 04/2023. -#if BUILDFLAG(IS_CHROMEOS_ASH) - local_state->ClearPref(kEnrollmentIdUploadedOnChromad); - local_state->ClearPref(kLastChromadMigrationAttemptTime); -#endif // BUILDFLAG(IS_CHROMEOS_ASH) - - // Added 05/2023. - local_state->ClearPref(kForceEnablePepperVideoDecoderDevAPI); - - // Added 05/2023. - local_state->ClearPref(kUseMojoVideoDecoderForPepperAllowed); - - // Added 05/2023. - local_state->ClearPref(kPPAPISharedImagesSwapChainAllowed); - -// Added 05/2023. -#if BUILDFLAG(ENABLE_SCREEN_AI_SERVICE) - local_state->ClearPref(kScreenAIScheduledDeletionTimePrefName); -#endif - -// Added 05/2023. -#if BUILDFLAG(IS_ANDROID) - local_state->ClearPref(kWeeklyStatsReportingTimestamp); -#endif - -// Added 05/2023. -#if BUILDFLAG(IS_CHROMEOS_ASH) - local_state->ClearPref(kSupervisedUsersFirstRun); - local_state->ClearPref(kSupervisedUserSyncId); - local_state->ClearPref(kSupervisedUserManagers); - local_state->ClearPref(kSupervisedUserManagerNames); - local_state->ClearPref(kSupervisedUserManagerDisplayEmails); - - local_state->ClearPref(kSupervisedUserPasswordSchema); - local_state->ClearPref(kSupervisedUserPasswordSalt); - local_state->ClearPref(kSupervisedUserPasswordRevision); - - local_state->ClearPref(kSupervisedUserNeedPasswordUpdate); - local_state->ClearPref(kSupervisedUserIncompleteKey); -#endif - -// Added 07/2023. -#if !BUILDFLAG(IS_ANDROID) - local_state->ClearPref(kLegacyHoverCardImagesEnabled); -#endif - - // Added 07/2023. - local_state->ClearPref(kShutdownNumProcesses); - local_state->ClearPref(kShutdownNumProcessesSlow); - local_state->ClearPref(kShutdownType); - // Added 09/2023. #if BUILDFLAG(IS_WIN) local_state->ClearPref(kSwReporter); @@ -2585,6 +2302,16 @@ void MigrateObsoleteLocalStatePrefs(PrefService* local_state) { local_state->ClearPref(kHasShownRefreshWhatsNew); #endif +// Added 06/2024. +#if BUILDFLAG(IS_CHROMEOS_ASH) + local_state->ClearPref(kLocalUserFilesMigrationEnabled); +#endif // BUILDFLAG(IS_CHROMEOS_ASH) + +#if BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(ENABLE_DICE_SUPPORT) + // Added 07/2024. + local_state->ClearPref(kFirstRunStudyGroup); +#endif + // Please don't delete the following line. It is used by PRESUBMIT.py. // END_MIGRATE_OBSOLETE_LOCAL_STATE_PREFS @@ -2640,136 +2367,6 @@ void MigrateObsoleteProfilePrefs(PrefService* profile_prefs, MigrateDefaultBrowserLastDeclinedPref(profile_prefs); #endif -// Added 04/2023. -#if BUILDFLAG(IS_CHROMEOS_ASH) - profile_prefs->ClearPref(kBentoBarEnabled); - profile_prefs->ClearPref(kUserHasUsedDesksRecently); -#endif // BUILDFLAG(IS_CHROMEOS_ASH) - -// Added 04/2023. -#if BUILDFLAG(IS_ANDROID) - profile_prefs->ClearPref(kBackoff); - profile_prefs->ClearPref(kUserSettingEnabled); - profile_prefs->ClearPref(kLimitlessPrefetchingEnabledTimePref); - profile_prefs->ClearPref(kPrefetchTestingHeaderPref); - profile_prefs->ClearPref(kEnabledByServer); - profile_prefs->ClearPref(kNextForbiddenCheckTimePref); - profile_prefs->ClearPref(kPrefetchCachedGCMToken); -#endif - - // Added 04/2023. - profile_prefs->ClearPref(kTypeSubscribedForInvalidations); - profile_prefs->ClearPref(kActiveRegistrationToken); - profile_prefs->ClearPref(kFCMInvalidationClientIDCache); - - // Added 04/2023. -#if BUILDFLAG(IS_ANDROID) - ntp_snippets::prefs::MigrateObsoleteProfilePrefsApril2023(profile_prefs); -#endif - -// Added 04/2023. -#if BUILDFLAG(IS_CHROMEOS_ASH) - profile_prefs->ClearPref(kOfficeFilesAlwaysMove); - profile_prefs->ClearPref(kOfficeMoveConfirmationShown); -#endif // BUILDFLAG(IS_CHROMEOS_ASH) - -// Added 04/2023. -#if BUILDFLAG(IS_CHROMEOS_ASH) - profile_prefs->ClearPref(kProximityAuthIsChromeOSLoginEnabled); -#endif // BUILDFLAG(IS_CHROMEOS_ASH) - -// Added 05/2023. -#if BUILDFLAG(IS_CHROMEOS_ASH) - profile_prefs->ClearPref(kSmartLockSigninAllowed); -#endif // BUILDFLAG(IS_CHROMEOS_ASH) - -// Added 05/2023. -#if BUILDFLAG(IS_ANDROID) - profile_prefs->ClearPref(kVideoTutorialsPreferredLocaleKey); - profile_prefs->ClearPref(kVideoTutorialsLastUpdatedTimeKey); -#endif // BUILDFLAG(IS_ANDROID - -// Added 05/2023. -#if BUILDFLAG(IS_CHROMEOS_ASH) - profile_prefs->ClearPref(kOfficeSetupComplete); -#endif // BUILDFLAG(IS_CHROMEOS_ASH) - -// Added 05/2023. -#if BUILDFLAG(IS_CHROMEOS_ASH) - profile_prefs->ClearPref(kEventRemappedToRightClick); -#endif // BUILDFLAG(IS_CHROMEOS_ASH) - -// Added 05/2023. -#if BUILDFLAG(IS_ANDROID) - profile_prefs->ClearPref(kTimesUPMAuthErrorShown); -#endif // BUILDFLAG(IS_ANDROID) - -// Added 05/2023. -#if BUILDFLAG(IS_CHROMEOS_ASH) - profile_prefs->ClearPref(kSamlPasswordSyncToken); -#endif // BUILDFLAG(IS_CHROMEOS_ASH) - -// Added 06/2023. -#if BUILDFLAG(IS_CHROMEOS_ASH) - profile_prefs->ClearPref(kWebAppCalculatorAppErasureFixAppliedPref); -#endif // BUILDFLAG(IS_CHROMEOS_ASH) - - // Added 06/2023. - profile_prefs->ClearPref(kWebAppsExtensionIDs); - - // Added 06/2023. -#if BUILDFLAG(IS_CHROMEOS_ASH) - profile_prefs->ClearPref(kOsSyncPrefsMigrated); -#endif // BUILDFLAG(IS_CHROMEOS_ASH) - - // Added 06/2023. -#if !BUILDFLAG(IS_ANDROID) - profile_prefs->ClearPref(kShouldShowSidePanelBookmarkTab); -#endif // !BUILDFLAG(IS_ANDROID) - - // Added 06/2023. -#if BUILDFLAG(ENABLE_FEED_V2) - profile_prefs->ClearPref(kVideoPreviewsType); -#endif // BUILDFLAG(ENABLE_FEED_V2) - - // Added 06/2023. -#if BUILDFLAG(IS_CHROMEOS_ASH) - profile_prefs->ClearPref(kGaiaLastOnlineSignInTime); - profile_prefs->ClearPref(kSAMLLastGAIASignInTime); -#endif // BUILDFLAG(IS_CHROMEOS_ASH) - - // Added 06/2023. -#if BUILDFLAG(IS_ANDROID) - profile_prefs->ClearPref(kPrefExplicitLanguageAskShown); -#endif // BUILDFLAG(IS_ANDROID) - -// Added 07/2023. -#if !BUILDFLAG(IS_CHROMEOS_ASH) - profile_prefs->ClearPref(kUnifiedConsentMigrationState); -#endif - - // Added 07/2023. - profile_prefs->ClearPref(kPasswordsGroupingInfoRequested); - - // Added 07/2023. -#if BUILDFLAG(IS_CHROMEOS_ASH) - profile_prefs->ClearPref(kPowerMetricsIdleScreenOffCount); - profile_prefs->ClearPref(kPowerMetricsIdleSuspendCount); - profile_prefs->ClearPref(kPowerMetricsLidClosedSuspendCount); -#endif - syncer::SyncPrefs::MigrateAutofillWalletImportEnabledPref(profile_prefs); - -// Added 07/2023. -#if BUILDFLAG(IS_CHROMEOS_ASH) - profile_prefs->ClearPref(kHatsPrivacyHubBaselineIsSelected); - profile_prefs->ClearPref(kHatsPrivacyHubBaselineCycleEndTs); -#endif // BUILDFLAG(IS_CHROMEOS_ASH) - -// Added 07/2023. -#if BUILDFLAG(IS_CHROMEOS_ASH) - profile_prefs->ClearPref(kClearUserDataDir1Pref); -#endif - // Added 08/2023. invalidation::InvalidatorRegistrarWithMemory::ClearDeprecatedPrefs( profile_prefs); @@ -3053,11 +2650,66 @@ void MigrateObsoleteProfilePrefs(PrefService* profile_prefs, profile_prefs->ClearPref(kTrackingProtectionOffboardedSince); profile_prefs->ClearPref(kTrackingProtectionOffboardingAckAction); +#if BUILDFLAG(IS_CHROMEOS_ASH) + // Added 06/2024. + for (const char* pref : kHoldingSpaceWallpaperNudgeTimesOfFirstInteraction) { + profile_prefs->ClearPref(pref); + } + + // Added 06/2024. + profile_prefs->ClearPref(kHoldingSpaceWallpaperNudgeUserEligibleForNudge); + profile_prefs->ClearPref( + kHoldingSpaceWallpaperNudgeLastTimeNudgeShownCounterfactual); + profile_prefs->ClearPref(kHoldingSpaceWallpaperNudgeLastTimeNudgeShown); + profile_prefs->ClearPref( + kHoldingSpaceWallpaperNudgeUserFirstEligibleSessionTime); + profile_prefs->ClearPref( + kHoldingSpaceWallpaperNudgeNudgeShownCountCounterfactual); + profile_prefs->ClearPref(kHoldingSpaceWallpaperNudgeNudgeShownCount); + + // Added 06/2024. + profile_prefs->ClearPref(kBirchUseRecentTabs); + profile_prefs->ClearPref(kBirchUseLastActive); + profile_prefs->ClearPref(kBirchUseMostVisited); + profile_prefs->ClearPref(kBirchUseSelfShare); +#endif // BUILDFLAG(IS_CHROMEOS_ASH) + #if !BUILDFLAG(IS_ANDROID) // Added 06/2024. - syncer::SyncPrefs::MaybeMigratePasswordsToPerAccountPref(profile_prefs); + syncer::SyncPrefs::MaybeMigrateAutofillToPerAccountPref(profile_prefs); #endif // !BUILDFLAG(IS_ANDROID) +#if BUILDFLAG(IS_ANDROID) + // Added 06/2024 + feed::prefs::MigrateObsoleteFeedExperimentPref_Jun_2024(profile_prefs); +#endif // BUILDFLAG(IS_ANDROID) + + // Added 06/2024. + profile_prefs->ClearPref(kDefaultSearchProviderChoicePending); + +#if !BUILDFLAG(IS_ANDROID) + // Added 07/2024. + profile_prefs->ClearPref(kNtpRecipesDismissedTasks); + profile_prefs->ClearPref(kNtpModulesFirstShownTime); + profile_prefs->ClearPref(kNtpModulesFreVisible); + profile_prefs->ClearPref(kNtpModulesShownCount); + profile_prefs->ClearPref(kNtpPhotosLastDismissedTimePrefName); + profile_prefs->ClearPref(kNtpPhotosOptInAcknowledgedPrefName); + profile_prefs->ClearPref(kNtpPhotosLastMemoryOpenTimePrefName); + profile_prefs->ClearPref(kNtpPhotosLastSoftOptedOutTimePrefName); + profile_prefs->ClearPref(kNtpPhotosSoftOptOutCountPrefName); +#endif + + // Added 07/2024. +#if BUILDFLAG(IS_CHROMEOS_ASH) + profile_prefs->ClearPref(kAppDeduplicationServiceLastGetTimestamp); +#endif + +#if BUILDFLAG(IS_CHROMEOS_ASH) + // Added 07/2024. + profile_prefs->ClearPref(kShowTunaScreenEnabled); +#endif + // 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 7398027d5..21e3a2abf 100755 --- a/tools/under-control/src/chrome/browser/ui/tab_helpers.cc +++ b/tools/under-control/src/chrome/browser/ui/tab_helpers.cc @@ -133,7 +133,7 @@ #include "components/download/content/public/download_navigation_observer.h" #include "components/enterprise/buildflags/buildflags.h" #include "components/feed/buildflags.h" -#include "components/fingerprinting_protection_filter/browser/fingerprinting_protection_filter_features.h" +#include "components/fingerprinting_protection_filter/common/fingerprinting_protection_filter_features.h" #include "components/history/content/browser/web_contents_top_sites_observer.h" #include "components/history/core/browser/top_sites.h" #include "components/infobars/content/content_infobar_manager.h" @@ -155,7 +155,6 @@ #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/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/tracing/common/tracing_switches.h" @@ -180,6 +179,7 @@ #include "chrome/browser/android/policy/policy_auditor_bridge.h" #include "chrome/browser/banners/android/chrome_app_banner_manager_android.h" #include "chrome/browser/content_settings/request_desktop_site_web_contents_observer_android.h" +#include "chrome/browser/dips/dips_navigation_flow_detector.h" #include "chrome/browser/facilitated_payments/ui/chrome_facilitated_payments_client.h" #include "chrome/browser/fast_checkout/fast_checkout_tab_helper.h" #include "chrome/browser/flags/android/chrome_feature_list.h" @@ -204,8 +204,6 @@ #include "chrome/browser/ui/search_engine_choice/search_engine_choice_tab_helper.h" #include "chrome/browser/ui/views/side_panel/companion/companion_tab_helper.h" #include "chrome/browser/ui/views/side_panel/companion/exps_registration_success_observer.h" -#include "chrome/browser/ui/views/side_panel/customize_chrome/customize_chrome_tab_helper.h" -#include "chrome/browser/ui/views/side_panel/customize_chrome/customize_chrome_utils.h" #include "chrome/browser/ui/views/side_panel/history_clusters/history_clusters_tab_helper.h" #include "chrome/browser/ui/views/side_panel/read_anything/read_anything_tab_helper.h" #include "chrome/browser/ui/sync/browser_synced_tab_delegate.h" @@ -584,6 +582,7 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) { // --- Section 2: Platform-specific tab helpers --- #if BUILDFLAG(IS_ANDROID) + DipsNavigationFlowDetector::MaybeCreateForWebContents(web_contents); webapps::MLInstallabilityPromoter::CreateForWebContents(web_contents); { // Remove after fixing https://crbug/905919 @@ -641,8 +640,7 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) { PrivacySandboxPromptHelper::CreateForWebContents(web_contents); } - if (search_engines::IsChoiceScreenFlagEnabled( - search_engines::ChoicePromo::kDialog)) { + if (SearchEngineChoiceTabHelper::IsHelperNeeded()) { SearchEngineChoiceTabHelper::CreateForWebContents(web_contents); } @@ -767,10 +765,6 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) { } #endif -#if !BUILDFLAG(IS_ANDROID) - CustomizeChromeTabHelper::CreateForWebContents(web_contents); -#endif - // --- Section 3: Feature tab helpers behind BUILDFLAGs --- // NOT for "if enabled"; put those in section 1. 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 02b0a6dba..cfb8ceead 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 @@ -318,8 +318,11 @@ namespace autofillPrivate { static void saveAddress(AddressEntry address); // Gets the list of all countries. + // |forAccountAddressProfile|: whether the address profile opened in the + // editor originates in the user's profile. // |callback|: Callback which will be called with the countries. static void getCountryList( + boolean forAccountAddressProfile, GetCountryListCallback callback); // Gets the address components for a given country code. diff --git a/tools/under-control/src/chrome/common/extensions/api/autotest_private.idl b/tools/under-control/src/chrome/common/extensions/api/autotest_private.idl index 346abf38c..f30dcd10f 100755 --- a/tools/under-control/src/chrome/common/extensions/api/autotest_private.idl +++ b/tools/under-control/src/chrome/common/extensions/api/autotest_private.idl @@ -718,6 +718,8 @@ namespace autotestPrivate { long jankCount; // Display throughput percentage at fixed intervals. long[] throughput; + // The durations of the janks during this animation in millisecond. + double[] jankDurations; }; // Callback invoked to report the smoothness after StopSmoothnessTracking is diff --git a/tools/under-control/src/chrome/common/extensions/api/developer_private.idl b/tools/under-control/src/chrome/common/extensions/api/developer_private.idl index bdd4092a0..d9843cfd3 100755 --- a/tools/under-control/src/chrome/common/extensions/api/developer_private.idl +++ b/tools/under-control/src/chrome/common/extensions/api/developer_private.idl @@ -153,6 +153,7 @@ namespace developerPrivate { boolean reloading; boolean custodianApprovalRequired; boolean parentDisabledPermissions; + boolean unsupportedManifestVersion; }; dictionary OptionsPage { @@ -279,10 +280,9 @@ namespace developerPrivate { boolean showSafeBrowsingAllowlistWarning; SafetyCheckWarningReason? safetyCheckWarningReason; boolean showAccessRequestsInToolbar; - boolean acknowledgeSafetyCheckWarning; boolean? pinnedToToolbar; boolean isAffectedByMV2Deprecation; - boolean didAcknowledgeMV2DeprecationWarning; + boolean didAcknowledgeMV2DeprecationNotice; }; dictionary ProfileInfo { @@ -291,7 +291,7 @@ namespace developerPrivate { boolean isDeveloperModeControlledByPolicy; boolean isIncognitoAvailable; boolean isChildAccount; - boolean isMv2DeprecationWarningDismissed; + boolean isMv2DeprecationNoticeDismissed; }; // DEPRECATED: Prefer ExtensionInfo. @@ -345,13 +345,12 @@ namespace developerPrivate { boolean? showAccessRequestsInToolbar; SafetyCheckWarningReason? acknowledgeSafetyCheckWarningReason; boolean? acknowledgeSafetyCheckWarning; - boolean? acknowledgeMv2DeprecationWarning; boolean? pinnedToToolbar; }; dictionary ProfileConfigurationUpdate { boolean? inDeveloperMode; - boolean? isMv2DeprecationWarningDismissed; + boolean? isMv2DeprecationNoticeDismissed; }; dictionary ExtensionCommandUpdate { @@ -872,6 +871,9 @@ namespace developerPrivate { // if one is active. static void dismissSafetyHubExtensionsMenuNotification(); + // Triggers the dismissal of the mv2 deprecation notice for `extensionId`. + static void dismissMv2DeprecationNoticeForExtension(DOMString extensionId); + [nocompile, deprecated="Use openDevTools"] static void inspect(InspectOptions options, optional VoidCallback 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 e710b4801..1e2adc5ef 100755 --- a/tools/under-control/src/chrome/common/extensions/api/downloads.idl +++ b/tools/under-control/src/chrome/common/extensions/api/downloads.idl @@ -431,7 +431,7 @@ namespace downloads { // size * size pixels. The default and largest size for the icon is 32x32 // pixels. The only supported sizes are 16 and 32. It is an error to specify // any other size. - [legalValues=(16,32)] long? size; + long? size; }; // Encapsulates a change in the download UI. 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 37392ad31..fa0acdf05 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 @@ -365,6 +365,8 @@ namespace passwordsPrivate { callback PasswordManagerPinChangedCallback = void(boolean success); callback DisconnectCloudAuthenticatorCallback = void(boolean success); callback IsConnectedToCloudAuthenticatorCallback = void(boolean connected); + callback DeleteAllPasswordManagerDataCallback = void(boolean success); + callback AuthenticationResultCallback = void(boolean result); interface Functions { // Function that logs that the Passwords page was accessed from the Chrome @@ -550,8 +552,11 @@ namespace passwordsPrivate { // Switches Biometric authentication before filling state after // successful authentication. + // |callback|: The callback that gets invoked with the authentication + // result. [platforms = ("win", "mac")] static void - switchBiometricAuthBeforeFillingState(); + switchBiometricAuthBeforeFillingState( + AuthenticationResultCallback callback); // Shows a dialog for creating a shortcut for the Password Manager page. static void showAddShortcutDialog(); @@ -575,6 +580,12 @@ namespace passwordsPrivate { // the cloud authenticator. static void isConnectedToCloudAuthenticator( IsConnectedToCloudAuthenticatorCallback callback); + + // Deletes all password manager data (passwords, passkeys, etc.) + // |callback|: The callback that gets invoked with true on successful + // deletion and false on failure (e.g. not all data was deleted). + static void deleteAllPasswordManagerData( + DeleteAllPasswordManagerDataCallback callback); }; interface Events { diff --git a/tools/under-control/src/chrome/common/extensions/api/settings_private.idl b/tools/under-control/src/chrome/common/extensions/api/settings_private.idl index 3c86fe724..fdc7d18f4 100755 --- a/tools/under-control/src/chrome/common/extensions/api/settings_private.idl +++ b/tools/under-control/src/chrome/common/extensions/api/settings_private.idl @@ -106,12 +106,12 @@ namespace settingsPrivate { GetPrefCallback callback); // Gets the default page zoom factor. Possible values are currently between - // 0.25 and 5. For a full list, see zoom::kPresetZoomFactors. + // 0.25 and 5. For a full list, see zoom::kPresetBrowserZoomFactors. static void getDefaultZoom( GetDefaultZoomCallback callback); // Sets the page zoom factor. Must be less than 0.001 different than a value - // in zoom::kPresetZoomFactors. + // in zoom::kPresetBrowserZoomFactors. static void setDefaultZoom( double zoom, optional SetDefaultZoomCallback callback); diff --git a/tools/under-control/src/chrome/renderer/chrome_content_renderer_client.cc b/tools/under-control/src/chrome/renderer/chrome_content_renderer_client.cc index a88d69d5d..13f354e79 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 @@ -6,6 +6,7 @@ #include #include +#include #include #include @@ -14,7 +15,6 @@ #include "base/debug/crash_logging.h" #include "base/functional/bind.h" #include "base/metrics/histogram_functions.h" -#include "base/metrics/histogram_macros.h" #include "base/metrics/user_metrics_action.h" #include "base/no_destructor.h" #include "base/notreached.h" @@ -108,8 +108,8 @@ #include "components/safe_browsing/buildflags.h" #include "components/safe_browsing/content/renderer/threat_dom_details.h" #include "components/spellcheck/spellcheck_buildflags.h" -#include "components/subresource_filter/content/renderer/safe_browsing_unverified_ruleset_dealer.h" #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/variations/net/variations_http_headers.h" #include "components/variations/variations_switches.h" @@ -118,6 +118,7 @@ #include "components/web_cache/renderer/web_cache_impl.h" #include "components/webapps/renderer/web_page_metadata_agent.h" #include "content/public/common/content_constants.h" +#include "content/public/common/content_features.h" #include "content/public/common/content_switches.h" #include "content/public/common/page_visibility_state.h" #include "content/public/common/url_constants.h" @@ -126,7 +127,6 @@ #include "content/public/renderer/render_frame_visitor.h" #include "extensions/buildflags/buildflags.h" #include "extensions/renderer/extensions_renderer_api_provider.h" -#include "extensions/renderer/worker_script_context_set.h" #include "ipc/ipc_sync_channel.h" #include "media/base/media_switches.h" #include "media/media_buildflags.h" @@ -456,8 +456,8 @@ void ChromeContentRendererClient::RenderThreadStarted() { InitSpellCheck(); #endif - subresource_filter_ruleset_dealer_ = std::make_unique< - subresource_filter::SafeBrowsingUnverifiedRulesetDealer>(); + subresource_filter_ruleset_dealer_ = + std::make_unique(); phishing_model_setter_ = std::make_unique(); @@ -725,7 +725,7 @@ void ChromeContentRendererClient::RenderFrameCreated( // Owned by |render_frame|. new page_load_metrics::MetricsRenderFrameObserver(render_frame); - // There is no render thread, thus no SafeBrowsingUnverifiedRulesetDealer in + // There is no render thread, thus no UnverifiedRulesetDealer in // ChromeRenderViewTests. if (subresource_filter_ruleset_dealer_) { auto* subresource_filter_agent = @@ -762,8 +762,9 @@ void ChromeContentRendererClient::RenderFrameCreated( #endif // BUILDFLAG(HAS_SPELLCHECK_PANEL) #endif #if BUILDFLAG(ENABLE_FEED_V2) - if (render_frame->IsMainFrame() && - feed::IsWebFeedEnabledForLocale(country_codes::GetCurrentCountryCode())) { + base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); + if (command_line->HasSwitch(feed::switches::kEnableRssLinkReader) && + render_frame->IsMainFrame()) { new feed::RssLinkReader(render_frame, registry); } #endif @@ -866,6 +867,25 @@ bool ChromeContentRendererClient::IsPluginHandledExternally( #endif // BUILDFLAG(ENABLE_EXTENSIONS) && BUILDFLAG(ENABLE_PLUGINS) } +bool ChromeContentRendererClient::IsDomStorageDisabled() const { + if (!base::FeatureList::IsEnabled(features::kPdfEnforcements)) { + return false; + } + +#if BUILDFLAG(ENABLE_PDF) && BUILDFLAG(ENABLE_EXTENSIONS) + // PDF renderers shouldn't need to access DOM storage interfaces. Note that + // it's still possible to access localStorage or sessionStorage in a PDF + // document's context via DevTools; returning false here ensures that these + // objects are just seen as null by JavaScript (similarly to what happens for + // opaque origins). This avoids a renderer kill by the browser process which + // isn't expecting PDF renderer processes to ever use DOM storage + // interfaces. See https://crbug.com/357014503. + return pdf::IsPdfRenderer(); +#else + return false; +#endif +} + v8::Local ChromeContentRendererClient::GetScriptableObject( const blink::WebElement& plugin_element, v8::Isolate* isolate) { @@ -1412,17 +1432,8 @@ bool ChromeContentRendererClient::AllowPopup() { bool ChromeContentRendererClient::ShouldNotifyServiceWorkerOnWebSocketActivity( v8::Local context) { #if BUILDFLAG(ENABLE_EXTENSIONS) - extensions::ScriptContext* script_context = - ChromeExtensionsRendererClient::GetInstance() - ->extension_dispatcher() - ->GetWorkerScriptContextSet() - ->GetContextByV8Context(context); - // Only notify on web socket activity if the service worker is the background - // service worker for an extension. - return script_context && - ChromeExtensionsRendererClient::GetInstance() - ->ExtensionAPIEnabledForServiceWorkerScript( - script_context->service_worker_scope(), script_context->url()); + return extensions::Dispatcher::ShouldNotifyServiceWorkerOnWebSocketActivity( + context); #else return false; #endif @@ -1445,7 +1456,8 @@ ChromeContentRendererClient::GetProtocolHandlerSecurityLevel( void ChromeContentRendererClient::WillSendRequest( WebLocalFrame* frame, ui::PageTransition transition_type, - const blink::WebURL& url, + const blink::WebURL& upstream_url, + const blink::WebURL& target_url, const net::SiteForCookies& site_for_cookies, const url::Origin* initiator_origin, GURL* new_url) { @@ -1453,22 +1465,24 @@ void ChromeContentRendererClient::WillSendRequest( // Check whether the request should be allowed. If not allowed, we reset the // URL to something invalid to prevent the request and cause an error. ChromeExtensionsRendererClient::GetInstance()->WillSendRequest( - frame, transition_type, url, site_for_cookies, initiator_origin, new_url); + frame, transition_type, upstream_url, target_url, site_for_cookies, + initiator_origin, new_url); if (!new_url->is_empty()) return; #endif - if (!url.ProtocolIs(chrome::kChromeSearchScheme)) + if (!target_url.ProtocolIs(chrome::kChromeSearchScheme)) { return; + } #if !BUILDFLAG(IS_ANDROID) SearchBox* search_box = SearchBox::Get(content::RenderFrame::FromWebFrame(frame->LocalRoot())); if (search_box) { // Note: this GURL copy could be avoided if host() were added to WebURL. - GURL gurl(url); + GURL gurl(target_url); if (gurl.host_piece() == chrome::kChromeUIFaviconHost) - search_box->GenerateImageURLFromTransientURL(url, new_url); + search_box->GenerateImageURLFromTransientURL(target_url, new_url); } #endif // !BUILDFLAG(IS_ANDROID) } @@ -1484,6 +1498,14 @@ uint64_t ChromeContentRendererClient::VisitedLinkHash( canonical_url); } +uint64_t ChromeContentRendererClient::PartitionedVisitedLinkFingerprint( + std::string_view canonical_link_url, + const net::SchemefulSite& top_level_site, + const url::Origin& frame_origin) { + return chrome_observer_->visited_link_reader()->ComputePartitionedFingerprint( + canonical_link_url, top_level_site, frame_origin); +} + bool ChromeContentRendererClient::IsLinkVisited(uint64_t link_hash) { return chrome_observer_->visited_link_reader()->IsVisited(link_hash); } @@ -1491,6 +1513,8 @@ bool ChromeContentRendererClient::IsLinkVisited(uint64_t link_hash) { void ChromeContentRendererClient::AddOrUpdateVisitedLinkSalt( const url::Origin& origin, uint64_t salt) { + base::UmaHistogramBoolean( + "Blink.History.VisitedLinks.IsSaltFromNavigationThrottle", true); return chrome_observer_->visited_link_reader()->AddOrUpdateSalt(origin, salt); } @@ -1681,10 +1705,7 @@ void ChromeContentRendererClient:: blink::WebRuntimeFeatures::EnableWebUSBOnServiceWorkers(true); } #if !BUILDFLAG(IS_ANDROID) - if (base::FeatureList::IsEnabled( - features::kEnableWebHidOnExtensionServiceWorker)) { - blink::WebRuntimeFeatures::EnableWebHIDOnServiceWorkers(true); - } + blink::WebRuntimeFeatures::EnableWebHIDOnServiceWorkers(true); #endif // !BUILDFLAG(IS_ANDROID) } #endif // BUILDFLAG(ENABLE_EXTENSIONS) @@ -1791,20 +1812,23 @@ blink::WebFrame* ChromeContentRendererClient::FindFrame( #endif // BUILDFLAG(ENABLE_EXTENSIONS) } -bool ChromeContentRendererClient::IsSafeRedirectTarget(const GURL& from_url, - const GURL& to_url) { +bool ChromeContentRendererClient::IsSafeRedirectTarget(const GURL& upstream_url, + const GURL& target_url) { #if BUILDFLAG(ENABLE_EXTENSIONS) - if (to_url.SchemeIs(extensions::kExtensionScheme)) { + if (target_url.SchemeIs(extensions::kExtensionScheme)) { const extensions::Extension* extension = - extensions::RendererExtensionRegistry::Get()->GetByID(to_url.host()); - if (!extension) + extensions::RendererExtensionRegistry::Get()->GetByID( + target_url.host()); + if (!extension) { return false; + } // TODO(solomonkinard): Use initiator_origin and add tests. - if (extensions::WebAccessibleResourcesInfo::IsResourceWebAccessible( - extension, to_url.path(), nullptr)) { + if (extensions::WebAccessibleResourcesInfo::IsResourceWebAccessibleRedirect( + extension, target_url, /*initiator_origin=*/std::nullopt, + upstream_url)) { return true; } - return extension->guid() == from_url.host(); + return extension->guid() == upstream_url.host(); } #endif // BUILDFLAG(ENABLE_EXTENSIONS) return true; 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 8033e5e15..b66f7c515 100755 --- a/tools/under-control/src/content/browser/web_contents/web_contents_impl.cc +++ b/tools/under-control/src/content/browser/web_contents/web_contents_impl.cc @@ -16,7 +16,7 @@ #include #include -#include "base/allocator/partition_allocator/src/partition_alloc/partition_alloc_buildflags.h" +#include "base/allocator/partition_allocator/src/partition_alloc/buildflags.h" #include "base/check_op.h" #include "base/command_line.h" #include "base/containers/contains.h" @@ -45,6 +45,7 @@ #include "base/system/sys_info.h" #include "base/task/single_thread_task_runner.h" #include "base/time/time.h" +#include "base/timer/elapsed_timer.h" #include "base/trace_event/optional_trace_event.h" #include "base/trace_event/trace_event.h" #include "build/build_config.h" @@ -52,6 +53,8 @@ #include "cc/input/browser_controls_offset_tags_info.h" #include "components/attribution_reporting/features.h" #include "components/download/public/common/download_stats.h" +#include "components/input/cursor_manager.h" +#include "components/input/render_widget_host_input_event_router.h" #include "components/url_formatter/url_formatter.h" #include "components/viz/common/features.h" #include "components/viz/host/host_frame_sink_manager.h" @@ -61,6 +64,7 @@ #include "content/browser/attribution_reporting/attribution_manager.h" #include "content/browser/attribution_reporting/attribution_os_level_manager.h" #include "content/browser/bad_message.h" +#include "content/browser/browser_context_impl.h" #include "content/browser/browser_main_loop.h" #include "content/browser/browser_plugin/browser_plugin_embedder.h" #include "content/browser/browser_plugin/browser_plugin_guest.h" @@ -83,6 +87,7 @@ #include "content/browser/media/media_web_contents_observer.h" #include "content/browser/permissions/permission_controller_impl.h" #include "content/browser/permissions/permission_util.h" +#include "content/browser/preloading/prefetch/prefetch_service.h" #include "content/browser/preloading/preloading.h" #include "content/browser/preloading/prerender/prerender_final_status.h" #include "content/browser/preloading/prerender/prerender_host_registry.h" @@ -120,8 +125,6 @@ #include "content/browser/webui/web_ui_impl.h" #include "content/common/content_switches_internal.h" #include "content/common/features.h" -#include "content/common/input/cursor_manager.h" -#include "content/common/input/render_widget_host_input_event_router.h" #include "content/public/browser/ax_inspect_factory.h" #include "content/public/browser/browser_context.h" #include "content/public/browser/browser_plugin_guest_manager.h" @@ -163,6 +166,7 @@ #include "net/traffic_annotation/network_traffic_annotation.h" #include "ppapi/buildflags/buildflags.h" #include "services/device/public/mojom/wake_lock.mojom.h" +#include "services/network/public/cpp/request_destination.h" #include "services/network/public/cpp/web_sandbox_flags.h" #include "services/network/public/mojom/network_context.mojom.h" #include "third_party/abseil-cpp/absl/cleanup/cleanup.h" @@ -235,11 +239,6 @@ #include "ui/wm/core/window_util.h" #endif -#if PA_BUILDFLAG(USE_PARTITION_ALLOC_AS_MALLOC) && PA_BUILDFLAG(USE_STARSCAN) -#include "base/allocator/partition_allocator/src/partition_alloc/starscan/pcscan.h" -#include "content/browser/starscan_load_observer.h" -#endif - #if !BUILDFLAG(IS_ANDROID) #include "content/public/browser/document_picture_in_picture_window_controller.h" #include "content/public/browser/picture_in_picture_window_controller.h" @@ -510,13 +509,28 @@ FullscreenContentsSet(BrowserContext* browser_context) { bool IsWindowManagementGranted(RenderFrameHost* host) { content::PermissionController* permission_controller = host->GetBrowserContext()->GetPermissionController(); - DCHECK(permission_controller); + CHECK(permission_controller); return permission_controller->GetPermissionStatusForCurrentDocument( blink::PermissionType::WINDOW_MANAGEMENT, host) == blink::mojom::PermissionStatus::GRANTED; } +// Returns true if `host` has the Automatic Fullscreen permission granted. +bool IsAutomaticFullscreenGranted(RenderFrameHost* host) { + if (!base::FeatureList::IsEnabled( + blink::features::kAutomaticFullscreenPermissionsQuery)) { + return false; + } + content::PermissionController* permission_controller = + host->GetBrowserContext()->GetPermissionController(); + CHECK(permission_controller); + + return permission_controller->GetPermissionStatusForCurrentDocument( + blink::PermissionType::AUTOMATIC_FULLSCREEN, host) == + blink::mojom::PermissionStatus::GRANTED; +} + // Adjust the requested `rect` for opening or placing a window and return the id // of the display where the window will be placed. The bounds may not extend // outside a single screen's work area, and the `host` requires permission to @@ -633,7 +647,7 @@ using RenderWidgetHostAtPointCallback = std::optional)>; void RunCallback(RenderWidgetHostAtPointCallback callback, - base::WeakPtr view, + base::WeakPtr view, std::optional point) { auto* target = static_cast(view.get()); if (!callback.is_null()) { @@ -790,6 +804,10 @@ std::optional WebContentsImpl::AdjustedChildZoom( return std::nullopt; } +bool WebContentsImpl::IsPopup() const { + return is_popup_; +} + void WebContents::SetScreenOrientationDelegate( ScreenOrientationDelegate* delegate) { ScreenOrientationProvider::SetDelegate(delegate); @@ -912,18 +930,6 @@ WebContentsImpl::WebContentsTreeNode::WebContentsTreeNode( WebContentsImpl::WebContentsTreeNode::~WebContentsTreeNode() = default; -std::unique_ptr -WebContentsImpl::WebContentsTreeNode::DisconnectFromOuterWebContents() { - OPTIONAL_TRACE_EVENT0("content", - "WebContentsTreeNode::DisconnectFromOuterWebContents"); - std::unique_ptr inner_contents = - outer_web_contents_->node_.DetachInnerWebContents(current_web_contents_); - OuterContentsFrameTreeNode()->RemoveObserver(this); - outer_contents_frame_tree_node_id_ = FrameTreeNode::kFrameTreeNodeInvalidId; - outer_web_contents_ = nullptr; - return inner_contents; -} - void WebContentsImpl::WebContentsTreeNode::AttachInnerWebContents( std::unique_ptr inner_web_contents, RenderFrameHostImpl* render_frame_host) { @@ -1186,9 +1192,9 @@ WebContentsImpl::WebContentsImpl(BrowserContext* browser_context) last_active_time_(base::TimeTicks::Now()), closed_by_user_gesture_(false), minimum_zoom_percent_( - static_cast(blink::kMinimumPageZoomFactor * 100)), + static_cast(blink::kMinimumBrowserZoomFactor * 100)), maximum_zoom_percent_( - static_cast(blink::kMaximumPageZoomFactor * 100)), + static_cast(blink::kMaximumBrowserZoomFactor * 100)), zoom_scroll_remainder_(0), force_disable_overscroll_content_(false), last_dialog_suppressed_(false), @@ -1230,15 +1236,6 @@ WebContentsImpl::WebContentsImpl(BrowserContext* browser_context) if (base::FeatureList::IsEnabled(blink::features::kSharedStorageAPI)) { SharedStorageBudgetCharger::CreateForWebContents(this); } - -#if PA_BUILDFLAG(USE_PARTITION_ALLOC_AS_MALLOC) && PA_BUILDFLAG(USE_STARSCAN) - // TODO(crbug.com/40190798): Remove or move to another place after finishing - // the PCScan experiment. - if (partition_alloc::internal::PCScan::IsInitialized()) { - star_scan_load_observer_ = std::make_unique(this); - } -#endif // PA_BUILDFLAG(USE_PARTITION_ALLOC_AS_MALLOC) && - // PA_BUILDFLAG(USE_STARSCAN) } WebContentsImpl::~WebContentsImpl() { @@ -1326,6 +1323,34 @@ WebContentsImpl::~WebContentsImpl() { // prerendering. Shutdown them by destructing PrerenderHostRegistry. prerender_host_registry_.reset(); + // For historical reasons, it is the requestor's responsibility to reset + // `PrefetchContainer`s that were created by the requestor (= `this`) but have + // not yet started prefetching (Otherwise, they will stay alive forever in + // `PrefetchService`). + // TODO(crbug.com/40946257): Refactor to handle this case better. + if (base::FeatureList::IsEnabled( + features::kPrefetchBrowserInitiatedTriggers)) { + PrefetchService* prefetch_service = + BrowserContextImpl::From(GetBrowserContext())->GetPrefetchService(); + if (prefetch_service) { + for (const auto& prefetch_container : prefetch_containers_) { + if (prefetch_container) { + switch (prefetch_container->GetLoadState()) { + case PrefetchContainer::LoadState::kNotStarted: + case PrefetchContainer::LoadState::kEligible: + case PrefetchContainer::LoadState::kFailedIneligible: + case PrefetchContainer::LoadState::kFailedHeldback: + prefetch_service->ResetPrefetch(prefetch_container); + break; + case PrefetchContainer::LoadState::kStarted: + break; + } + } + } + } + prefetch_containers_.clear(); + } + #if BUILDFLAG(ENABLE_PPAPI) // Call this before WebContentsDestroyed() is broadcasted since // AudioFocusManager will be destroyed after that. @@ -1414,6 +1439,16 @@ std::unique_ptr WebContentsImpl::CreateWithOpener( params.guest_delegate->GetOwnerWebContents()); } + // To support multi-network feature in chrome (e.g. want to open a tab over + // a specific network such as Wi-Fi while the current default network is + // cellular connection), a feasible solution would be to associate the target + // network handle to WebContents on creation time and MUST set it before + // WebContents initialization, otherwise the renderer might create a + // URLLoaderFactory that won't load the resources from the target network + // handle during WebContents initialization below, as a result, it will end + // up with a URLLoaderFactory that has not been bound to the target network. + new_contents->target_network_ = params.target_network; + new_contents->Init(params, frame_policy); if (outer_web_contents) { outer_web_contents->InnerWebContentsCreated(new_contents.get()); @@ -2043,7 +2078,8 @@ class AXTreeSnapshotCombiner : public base::RefCounted { void WebContentsImpl::RequestAXTreeSnapshot(AXTreeSnapshotCallback callback, ui::AXMode ax_mode, size_t max_nodes, - base::TimeDelta timeout) { + base::TimeDelta timeout, + AXTreeSnapshotPolicy policy) { OPTIONAL_TRACE_EVENT1("content", "WebContentsImpl::RequestAXTreeSnapshot", "mode", ax_mode.ToString()); // Send a request to each of the frames in parallel. Each one will return @@ -2057,9 +2093,24 @@ void WebContentsImpl::RequestAXTreeSnapshot(AXTreeSnapshotCallback callback, auto combiner = base::MakeRefCounted( std::move(callback), std::move(params)); - GetPrimaryMainFrame()->ForEachRenderFrameHost( - [&combiner](RenderFrameHostImpl* rfh) { + GetPrimaryMainFrame()->ForEachRenderFrameHostWithAction( + [this, &combiner, policy](RenderFrameHostImpl* rfh) { + switch (policy) { + case AXTreeSnapshotPolicy::kAll: + break; + case AXTreeSnapshotPolicy::kSameOriginDirectDescendants: + if (GetPrimaryMainFrame()->GetSiteInstance() != + rfh->GetSiteInstance() || + rfh->IsFencedFrameRoot() || + !GetPrimaryMainFrame() + ->GetLastCommittedOrigin() + .IsSameOriginWith(rfh->GetLastCommittedOrigin())) { + return FrameIterationAction::kSkipChildren; + } + break; + } combiner->AXTreeSnapshotOnFrame(rfh); + return FrameIterationAction::kContinue; }); } @@ -2177,6 +2228,13 @@ void WebContentsImpl::SetUserAgentOverride( should_override_user_agent_in_new_tabs_ = override_in_new_tabs; + // Update any in-flight load requests with overrides for new tabs. + if (delayed_load_url_params_.get()) { + delayed_load_url_params_->override_user_agent = + override_in_new_tabs ? NavigationController::UA_OVERRIDE_TRUE + : NavigationController::UA_OVERRIDE_FALSE; + } + renderer_preferences_.user_agent_override = ua_override; // Send the new override string to all renderers in the current page. @@ -2874,6 +2932,11 @@ void WebContentsImpl::AttachInnerWebContents( DCHECK_EQ(this, WebContents::FromRenderFrameHost(render_frame_host_impl)); DCHECK(render_frame_host_impl->GetParent()); + // Inner WebContents aren't supported with prerendering. See + // https://crbug.com/40191159 for details. + CHECK_NE(RenderFrameHostImpl::LifecycleStateImpl::kPrerendering, + render_frame_host_impl->lifecycle_state()); + RenderFrameHostManager* inner_render_manager = inner_web_contents_impl->GetRenderManager(); RenderFrameHostImpl* inner_main_frame = @@ -2970,66 +3033,6 @@ void WebContentsImpl::AttachInnerWebContents( inner_main_frame->PropagateEmbeddingTokenToParentFrame(); } -std::unique_ptr WebContentsImpl::DetachFromOuterWebContents() { - OPTIONAL_TRACE_EVENT0("content", - "WebContentsImpl::DetachFromOuterWebContents"); - auto* outer_web_contents = GetOuterWebContents(); - DCHECK(outer_web_contents); - GetPrimaryMainFrame() - ->GetParentOrOuterDocumentOrEmbedder() - ->set_inner_tree_main_frame_tree_node_id( - FrameTreeNode::kFrameTreeNodeInvalidId); - - RecursivelyUnregisterRenderWidgetHostViews(); - - // Each RenderViewHost has a RenderWidgetHost which can have a - // RenderWidgetHostView, and it needs to be re-created with the appropriate - // platform view. It is important to re-create all child views, not only the - // current one, since the view can be swapped due to a cross-origin - // navigation. - std::set render_view_hosts; - primary_frame_tree_.ForEachRenderViewHost([&render_view_hosts]( - RenderViewHostImpl* rvh) { - if (rvh->GetWidget() && rvh->GetWidget()->GetView()) { - DCHECK(rvh->GetWidget()->GetView()->IsRenderWidgetHostViewChildFrame()); - render_view_hosts.insert(rvh); - } - }); - - for (auto* render_view_host : render_view_hosts) { - render_view_host->GetWidget()->GetView()->Destroy(); - } - - GetRenderManager() - ->current_frame_host() - ->browsing_context_state() - ->DeleteOuterDelegateProxy(node_.OuterContentsFrameTreeNode() - ->current_frame_host() - ->GetSiteInstance() - ->group()); - view_ = CreateWebContentsView( - this, GetContentClient()->browser()->GetWebContentsViewDelegate(this), - &render_view_host_delegate_view_); - view_->CreateView(gfx::NativeView()); - std::unique_ptr web_contents = - node_.DisconnectFromOuterWebContents(); - DCHECK_EQ(web_contents.get(), this); - node_.SetFocusedFrameTree(&GetPrimaryFrameTree()); - - for (auto* render_view_host : render_view_hosts) { - CreateRenderWidgetHostViewForRenderManager(render_view_host); - } - - RecursivelyRegisterRenderWidgetHostViews(); - GetPrimaryMainFrame()->UpdateAXTreeData(); - - // Invoke on the *outer* web contents observers for symmetry. - outer_web_contents->observers_.NotifyObservers( - &WebContentsObserver::InnerWebContentsDetached, this); - - return web_contents; -} - void WebContentsImpl::RecursivelyRegisterRenderWidgetHostViews() { OPTIONAL_TRACE_EVENT0( "content", "WebContentsImpl::RecursivelyRegisterRenderWidgetHostViews"); @@ -3238,6 +3241,10 @@ const blink::web_pref::WebPreferences WebContentsImpl::ComputeWebPreferences() { prefs.spatial_navigation_enabled = false; } +#if BUILDFLAG(IS_ANDROID) + prefs.long_press_link_select_text = long_press_link_select_text_; +#endif + prefs.stylus_handwriting_enabled = stylus_handwriting_enabled_; prefs.disable_reading_from_canvas = @@ -3939,7 +3946,8 @@ bool WebContentsImpl::PreHandleGestureEvent( return delegate_ && delegate_->PreHandleGestureEvent(this, event); } -RenderWidgetHostInputEventRouter* WebContentsImpl::GetInputEventRouter() { +input::RenderWidgetHostInputEventRouter* +WebContentsImpl::GetInputEventRouter() { if (!IsBeingDestroyed()) { if (GetOuterWebContents()) { return GetOuterWebContents()->GetInputEventRouter(); @@ -3947,7 +3955,7 @@ RenderWidgetHostInputEventRouter* WebContentsImpl::GetInputEventRouter() { if (!rwh_input_event_router_.get()) { rwh_input_event_router_ = - std::make_unique( + std::make_unique( GetHostFrameSinkManager(), this); } } @@ -4630,6 +4638,8 @@ FrameTree* WebContentsImpl::CreateNewWindow( if (!web_contents_impl) { return nullptr; } + web_contents_impl->is_popup_ = + params.disposition == WindowOpenDisposition::NEW_POPUP; return &web_contents_impl->GetPrimaryFrameTree(); } @@ -4713,6 +4723,8 @@ FrameTree* WebContentsImpl::CreateNewWindow( } auto* new_contents_impl = new_contents.get(); + new_contents_impl->is_popup_ = + params.disposition == WindowOpenDisposition::NEW_POPUP; // If the new frame has a name, make sure any SiteInstances that can find // this named frame have proxies for it. Must be called after @@ -6458,11 +6470,16 @@ bool WebContentsImpl::FocusLocationBarByDefault() { void WebContentsImpl::DidStartNavigation(NavigationHandle* navigation_handle) { TRACE_EVENT1("navigation", "WebContentsImpl::DidStartNavigation", "navigation_handle", navigation_handle); - { - SCOPED_UMA_HISTOGRAM_TIMER("WebContentsObserver.DidStartNavigation"); - observers_.NotifyObservers(&WebContentsObserver::DidStartNavigation, - navigation_handle); - } + base::ElapsedTimer duration; + observers_.NotifyObservers(&WebContentsObserver::DidStartNavigation, + navigation_handle); + base::TimeDelta elapsed = duration.Elapsed(); + base::UmaHistogramTimes("WebContentsObserver.DidStartNavigation", elapsed); + base::UmaHistogramTimes( + base::StrCat( + {"WebContentsObserver.DidStartNavigation.", + navigation_handle->IsInMainFrame() ? "MainFrame" : "Subframe"}), + elapsed); if (navigation_handle->IsInPrimaryMainFrame()) { // When the browser is started with about:blank as the startup URL, focus // the location bar (which will also select its contents) so people can @@ -6738,7 +6755,8 @@ void WebContentsImpl::NotifyNavigationStateChangedFromController( NotifyNavigationStateChanged(changed_flags); } -TouchEmulator* WebContentsImpl::GetTouchEmulator(bool create_if_necessary) { +input::TouchEmulator* WebContentsImpl::GetTouchEmulator( + bool create_if_necessary) { CHECK(rwh_input_event_router_); if (!touch_emulator_ && create_if_necessary) { @@ -6905,6 +6923,14 @@ void WebContentsImpl::DidNavigateAnyFramePostCommit( } } +void WebContentsImpl::DidUpdateNavigationHandleTiming( + NavigationHandle* navigation_handle) { + SCOPED_UMA_HISTOGRAM_TIMER( + "WebContentsObserver.DidUpdateNavigationHandleTiming"); + observers_.NotifyObservers( + &WebContentsObserver::DidUpdateNavigationHandleTiming, navigation_handle); +} + bool WebContentsImpl::CanOverscrollContent() const { OPTIONAL_TRACE_EVENT0("content", "WebContentsImpl::CanOverscrollContent"); // Disable overscroll when touch emulation is on. See crbug.com/369938. @@ -6997,10 +7023,17 @@ void WebContentsImpl::DidLoadResourceFromMemoryCache( StoragePartition* partition = source->GetProcess()->GetStoragePartition(); - DCHECK(!blink::IsRequestDestinationFrame(request_destination)); + // This method should only be called for resource loads (not navigations), so + // CHECK that here using `request_destination`. Note that + // `network::mojom::RequestDestination::kObject` and + // `network::mojom::RequestDestination::kEmbed` can correspond to navigations + // (see `blink::IsRequestDestinationFrame()`) but can also correspond to + // resource loads, so exclude those from the CHECK. + CHECK(request_destination != network::mojom::RequestDestination::kDocument); + CHECK(!network::IsRequestDestinationEmbeddedFrame(request_destination)); + partition->GetNetworkContext()->NotifyExternalCacheHit( url, http_method, source->GetNetworkIsolationKey(), - /*is_subframe_document_resource=*/false, /*include_credentials=*/include_credentials); } @@ -7063,7 +7096,8 @@ void WebContentsImpl::ViewSource(RenderFrameHostImpl* frame) { // Any new WebContents opened while this WebContents is in fullscreen can be // used to confuse the user, so drop fullscreen. - base::ScopedClosureRunner fullscreen_block = ForSecurityDropFullscreen(); + base::ScopedClosureRunner fullscreen_block = + ForSecurityDropFullscreen(/*display_id=*/display::kInvalidDisplayId); // The new view source contents will be independent of this contents, so // release the fullscreen block. fullscreen_block.RunAndReset(); @@ -7324,7 +7358,8 @@ void WebContentsImpl::EnumerateDirectory( // Any explicit focusing of another window while this WebContents is in // fullscreen can be used to confuse the user, so drop fullscreen. - base::ScopedClosureRunner fullscreen_block = ForSecurityDropFullscreen(); + base::ScopedClosureRunner fullscreen_block = + ForSecurityDropFullscreen(/*display_id=*/display::kInvalidDisplayId); listener->SetFullscreenBlock(std::move(fullscreen_block)); if (delegate_) { @@ -7627,10 +7662,7 @@ bool WebContentsImpl::UpdateTitleForEntryImpl(NavigationEntryImpl* entry, return false; // Nothing changed, don't bother. } - entry->SetTitle(final_title); - // The title for display may differ from the title just set; grab it. - final_title = entry->GetTitleForDisplay(); - + entry->SetTitle(std::move(final_title)); return true; } @@ -7930,7 +7962,8 @@ void WebContentsImpl::RunJavaScriptDialog( // Running a dialog causes an exit to webpage-initiated fullscreen. // http://crbug.com/728276 - base::ScopedClosureRunner fullscreen_block = ForSecurityDropFullscreen(); + base::ScopedClosureRunner fullscreen_block = + ForSecurityDropFullscreen(/*display_id=*/display::kInvalidDisplayId); auto callback = base::BindOnce( &WebContentsImpl::OnDialogClosed, weak_factory_.GetWeakPtr(), @@ -8041,7 +8074,8 @@ void WebContentsImpl::RunBeforeUnloadConfirm( // Running a dialog causes an exit to webpage-initiated fullscreen. // http://crbug.com/728276 - base::ScopedClosureRunner fullscreen_block = ForSecurityDropFullscreen(); + base::ScopedClosureRunner fullscreen_block = + ForSecurityDropFullscreen(/*display_id=*/display::kInvalidDisplayId); auto callback = base::BindOnce( &WebContentsImpl::OnDialogClosed, weak_factory_.GetWeakPtr(), @@ -8110,7 +8144,8 @@ void WebContentsImpl::RunFileChooser( // Any explicit focusing of another window while this WebContents is in // fullscreen can be used to confuse the user, so drop fullscreen. - base::ScopedClosureRunner fullscreen_block = ForSecurityDropFullscreen(); + base::ScopedClosureRunner fullscreen_block = + ForSecurityDropFullscreen(/*display_id=*/display::kInvalidDisplayId); listener->SetFullscreenBlock(std::move(fullscreen_block)); if (delegate_) { @@ -9042,7 +9077,8 @@ void WebContentsImpl::DidCallFocus() { OPTIONAL_TRACE_EVENT0("content", "WebContentsImpl::DidCallFocus"); // Any explicit focusing of another window while this WebContents is in // fullscreen can be used to confuse the user, so drop fullscreen. - base::ScopedClosureRunner fullscreen_block = ForSecurityDropFullscreen(); + base::ScopedClosureRunner fullscreen_block = + ForSecurityDropFullscreen(/*display_id=*/display::kInvalidDisplayId); // The other contents is independent of this contents, so release the // fullscreen block. fullscreen_block.RunAndReset(); @@ -10286,6 +10322,15 @@ void WebContentsImpl::IsClipboardPasteAllowedByPolicy( weak_factory_.GetWeakPtr(), std::move(callback))); } +void WebContentsImpl::OnTextCopiedToClipboard( + RenderFrameHostImpl* render_frame_host, + const std::u16string& copied_text) { + OPTIONAL_TRACE_EVENT1("content", "WebContentsImpl::OnTextCopiedToClipboard", + "render_frame_host", render_frame_host); + observers_.NotifyObservers(&WebContentsObserver::OnTextCopiedToClipboard, + render_frame_host, copied_text); +} + void WebContentsImpl::IsClipboardPasteAllowedWrapperCallback( IsClipboardPasteAllowedCallback callback, std::optional clipboard_paste_data) { @@ -10326,6 +10371,11 @@ bool WebContentsImpl::IsTransientActivationRequiredForHtmlFullscreen() { return true; } + // Waive transient activation requirements if Automatic Fullscreen is granted. + if (IsAutomaticFullscreenGranted(host)) { + return false; + } + return GetContentClient() ->browser() ->IsTransientActivationRequiredForHtmlFullscreen(host); @@ -10860,11 +10910,42 @@ gfx::mojom::DelegatedInkPointRenderer* WebContentsImpl::GetDelegatedInkRenderer( return delegated_ink_point_renderer_.get(); } +void WebContentsImpl::StartPrefetch( + const GURL& prefetch_url, + bool use_prefetch_proxy, + const blink::mojom::Referrer& referrer, + const std::optional& referring_origin, + base::WeakPtr attempt) { + if (!base::FeatureList::IsEnabled( + features::kPrefetchBrowserInitiatedTriggers)) { + return; + } + + PrefetchService* prefetch_service = + BrowserContextImpl::From(GetBrowserContext())->GetPrefetchService(); + if (!prefetch_service) { + return; + } + + PrefetchType prefetch_type(PreloadingTriggerType::kEmbedder, + use_prefetch_proxy); + + auto container = std::make_unique( + *this, prefetch_url, prefetch_type, referrer, referring_origin, + /*no_vary_search_expected=*/std::nullopt, std::move(attempt)); + + // TODO(crbug.com/40946257): Update this list when prefetch container is + // eliminated from `PrefetchService`. + prefetch_containers_.push_back(container->GetWeakPtr()); + prefetch_service->AddPrefetchContainer(std::move(container)); +} + std::unique_ptr WebContentsImpl::StartPrerendering( const GURL& prerendering_url, PreloadingTriggerType trigger_type, const std::string& embedder_histogram_suffix, ui::PageTransition page_transition, + bool should_warm_up_compositor, PreloadingHoldbackStatus holdback_status_override, PreloadingAttempt* preloading_attempt, base::RepeatingCallback url_match_predicate, @@ -10879,7 +10960,8 @@ std::unique_ptr WebContentsImpl::StartPrerendering( content::ChildProcessHost::kInvalidUniqueID, GetWeakPtr(), /*initiator_frame_token=*/std::nullopt, /*initiator_frame_tree_node_id=*/RenderFrameHost::kNoFrameTreeNodeId, - ukm::kInvalidSourceId, page_transition, std::move(url_match_predicate), + ukm::kInvalidSourceId, page_transition, should_warm_up_compositor, + std::move(url_match_predicate), std::move(prerender_navigation_handle_callback)); attributes.holdback_status_override = holdback_status_override; @@ -11021,6 +11103,20 @@ WebContentsImpl::GetBackForwardTransitionAnimationManager() { return GetView()->GetBackForwardTransitionAnimationManager(); } +#if BUILDFLAG(IS_ANDROID) +void WebContentsImpl::SetLongPressLinkSelectText(bool enabled) { + if (long_press_link_select_text_ == enabled) { + return; + } + long_press_link_select_text_ = enabled; + NotifyPreferencesChanged(); +} +#endif + +net::handles::NetworkHandle WebContentsImpl::GetTargetNetwork() { + return target_network_; +} + // static void WebContentsImpl::UpdateAttributionSupportAllRenderers() { for (WebContentsImpl* web_contents : GetAllWebContents()) { diff --git a/tools/under-control/src/content/child/runtime_features.cc b/tools/under-control/src/content/child/runtime_features.cc index 8e24f32e0..ec9a79e21 100755 --- a/tools/under-control/src/content/child/runtime_features.cc +++ b/tools/under-control/src/content/child/runtime_features.cc @@ -19,7 +19,6 @@ #include "build/chromeos_buildflags.h" #include "cc/base/features.h" #include "components/attribution_reporting/features.h" -#include "components/ml/webnn/features.mojom-features.h" #include "content/common/content_navigation_policy.h" #include "content/common/content_switches_internal.h" #include "content/common/features.h" @@ -34,6 +33,7 @@ #include "media/base/media_switches.h" #include "services/device/public/cpp/device_features.h" #include "services/network/public/cpp/features.h" +#include "services/webnn/public/mojom/features.mojom-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" @@ -256,9 +256,6 @@ void SetRuntimeFeaturesFromChromiumFeatures() { #if BUILDFLAG(IS_CHROMEOS) {wf::EnableLockedMode, raw_ref(blink::features::kLockedMode)}, #endif - {wf::EnableMachineLearningModelLoader, - raw_ref(features::kEnableMachineLearningModelLoaderWebPlatformApi), - kSetOnlyIfOverridden}, {wf::EnableMediaCastOverlayButton, raw_ref(media::kMediaCastOverlayButton)}, {wf::EnableMediaEngagementBypassAutoplayPolicies, @@ -305,9 +302,6 @@ void SetRuntimeFeaturesFromChromiumFeatures() { {wf::EnableWebIdentityDigitalCredentials, raw_ref(features::kWebIdentityDigitalCredentials), kSetOnlyIfOverridden}, - {wf::EnableMachineLearningNeuralNetwork, - raw_ref(webnn::mojom::features::kWebMachineLearningNeuralNetwork), - kDefault}, {wf::EnableWebOTP, raw_ref(features::kWebOTP), kSetOnlyIfOverridden}, {wf::EnableWebOTPAssertionFeaturePolicy, raw_ref(features::kWebOTPAssertionFeaturePolicy), @@ -335,6 +329,8 @@ void SetRuntimeFeaturesFromChromiumFeatures() { raw_ref(features::kRemoveMobileViewportDoubleTap)}, {wf::EnableServiceWorkerStaticRouter, raw_ref(features::kServiceWorkerStaticRouter)}, + {wf::EnablePermissions, raw_ref(features::kWebPermissionsApi), + kSetOnlyIfOverridden}, }; for (const auto& mapping : blinkFeatureToBaseFeatureMapping) { SetRuntimeFeatureFromChromiumFeature( @@ -362,8 +358,6 @@ void SetRuntimeFeaturesFromChromiumFeatures() { {"AttributionReportingCrossAppWeb", raw_ref(features::kPrivacySandboxAdsAPIsOverride), kSetOnlyIfOverridden}, - {"AttributionReportingCrossAppWeb", - raw_ref(features::kAttributionReportingCrossAppWebOverride)}, {"AndroidDownloadableFontsMatching", raw_ref(features::kAndroidDownloadableFontsMatching)}, #if BUILDFLAG(IS_ANDROID) @@ -384,7 +378,7 @@ void SetRuntimeFeaturesFromChromiumFeatures() { kSetOnlyIfOverridden}, {"FencedFramesLocalUnpartitionedDataAccess", raw_ref(blink::features::kFencedFramesLocalUnpartitionedDataAccess)}, - {"Fledge", raw_ref(blink::features::kFledge), kSetOnlyIfOverridden}, + {"Fledge", raw_ref(blink::features::kFledge)}, {"Fledge", raw_ref(features::kPrivacySandboxAdsAPIsOverride), kSetOnlyIfOverridden}, {"Fledge", raw_ref(features::kPrivacySandboxAdsAPIsM1Override), @@ -394,6 +388,8 @@ void SetRuntimeFeaturesFromChromiumFeatures() { {"FontSrcLocalMatching", raw_ref(features::kFontSrcLocalMatching)}, {"LegacyWindowsDWriteFontFallback", raw_ref(features::kLegacyWindowsDWriteFontFallback)}, + {"MachineLearningNeuralNetwork", + raw_ref(webnn::mojom::features::kWebMachineLearningNeuralNetwork)}, {"OriginIsolationHeader", raw_ref(features::kOriginIsolationHeader)}, {"ReduceAcceptLanguage", raw_ref(network::features::kReduceAcceptLanguage)}, @@ -449,7 +445,6 @@ void SetRuntimeFeaturesFromCommandLine(const base::CommandLine& command_line) { using wrf = WebRuntimeFeatures; const SwitchToFeatureMap switchToFeatureMapping[] = { // Stable Features - {wrf::EnablePermissions, switches::kDisablePermissionsAPI, false}, {wrf::EnablePresentation, switches::kDisablePresentationAPI, false}, {wrf::EnableRemotePlayback, switches::kDisableRemotePlaybackAPI, false}, {wrf::EnableTimerThrottlingForBackgroundTabs, @@ -478,6 +473,8 @@ void SetRuntimeFeaturesFromCommandLine(const base::CommandLine& command_line) { blink::switches::kKeyboardFocusableScrollersEnabled, true}, {wrf::EnableKeyboardFocusableScrollers, blink::switches::kKeyboardFocusableScrollersOptOut, false}, + {wrf::EnableStandardizedBrowserZoom, + blink::switches::kDisableStandardizedBrowserZoom, false}, {wrf::EnableCSSCustomStateDeprecatedSyntax, blink::switches::kCSSCustomStateDeprecatedSyntaxEnabled, true}, {wrf::EnableTextFragmentIdentifiers, 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 fe7feddd5..dc4110d88 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 @@ -20,7 +20,7 @@ #include "build/build_config.h" #include "build/buildflag.h" #include "build/chromeos_buildflags.h" -#include "content/browser/ai/mock_ai_manager_impl.h" +#include "content/browser/ai/echo_ai_manager_impl.h" #include "content/public/browser/anchor_element_preconnect_delegate.h" #include "content/public/browser/authenticator_request_client_delegate.h" #include "content/public/browser/browser_context.h" @@ -125,6 +125,8 @@ bool ContentBrowserClient::IsShuttingDown() { return false; } +void ContentBrowserClient::ThreadPoolWillTerminate() {} + bool ContentBrowserClient::AllowGpuLaunchRetryOnIOThread() { return true; } @@ -165,10 +167,11 @@ bool ContentBrowserClient::ShouldAllowProcessPerSiteForMultipleMainFrames( return true; } -bool ContentBrowserClient::ShouldUseSpareRenderProcessHost( +std::optional +ContentBrowserClient::ShouldUseSpareRenderProcessHost( BrowserContext* browser_context, const GURL& site_url) { - return true; + return std::nullopt; } bool ContentBrowserClient::DoesSiteRequireDedicatedProcess( @@ -178,6 +181,14 @@ bool ContentBrowserClient::DoesSiteRequireDedicatedProcess( return false; } +bool ContentBrowserClient::ShouldAllowCrossProcessSandboxedFrameForPrecursor( + BrowserContext* browser_context, + const GURL& precursor, + const GURL& url) { + DCHECK(browser_context); + return true; +} + bool ContentBrowserClient::ShouldLockProcessToSite( BrowserContext* browser_context, const GURL& effective_url) { @@ -674,6 +685,7 @@ bool ContentBrowserClient::ShouldDenyRequestOnCertificateError( base::OnceClosure ContentBrowserClient::SelectClientCertificate( BrowserContext* browser_context, + int process_id, WebContents* web_contents, net::SSLCertRequestInfo* cert_request_info, net::ClientCertIdentityList client_certs, @@ -958,7 +970,8 @@ std::wstring ContentBrowserClient::GetAppContainerSidForSandboxType( L"924012148-129201922"); } -bool ContentBrowserClient::IsRendererAppContainerDisabled() { +bool ContentBrowserClient::IsAppContainerDisabled( + sandbox::mojom::Sandbox sandbox_type) { return false; } @@ -973,6 +986,10 @@ bool ContentBrowserClient::IsRendererCodeIntegrityEnabled() { return false; } +bool ContentBrowserClient::IsPdfFontProxyEnabled() { + return false; +} + bool ContentBrowserClient::ShouldEnableAudioProcessHighPriority() { // TODO(crbug.com/40242320): Delete this method when the // kAudioProcessHighPriorityEnabled enterprise policy is deprecated. @@ -1095,6 +1112,7 @@ ContentBrowserClient::WillCreateURLLoaderRequestInterceptors( content::NavigationUIData* navigation_ui_data, int frame_tree_node_id, int64_t navigation_id, + bool force_no_https_upgrade, scoped_refptr navigation_response_task_runner) { return std::vector>(); } @@ -1526,17 +1544,6 @@ ContentBrowserClient::CreateIdentityRequestDialogController( return std::make_unique(); } -ContentBrowserClient::DigitalIdentityInterstitialAbortCallback -ContentBrowserClient::ShowDigitalIdentityInterstitialIfNeeded( - WebContents& web_contents, - const url::Origin& origin, - bool is_only_requesting_age, - DigitalIdentityInterstitialCallback callback) { - std::move(callback).Run( - DigitalIdentityProvider::RequestStatusForMetrics::kErrorOther); - return base::OnceClosure(); -} - std::unique_ptr ContentBrowserClient::CreateDigitalIdentityProvider() { return nullptr; @@ -1743,9 +1750,9 @@ bool ContentBrowserClient::ShouldSuppressAXLoadComplete(RenderFrameHost* rfh) { } void ContentBrowserClient::BindAIManager( - RenderFrameHost* rfh, + BrowserContext* browser_context, mojo::PendingReceiver receiver) { - MockAIManagerImpl::Create(rfh, std::move(receiver)); + EchoAIManagerImpl::Create(browser_context, std::move(receiver)); } #if !BUILDFLAG(IS_ANDROID) diff --git a/tools/under-control/src/extensions/common/api/app_runtime.idl b/tools/under-control/src/extensions/common/api/app_runtime.idl index 8e7138ecc..0edabe0cc 100755 --- a/tools/under-control/src/extensions/common/api/app_runtime.idl +++ b/tools/under-control/src/extensions/common/api/app_runtime.idl @@ -47,7 +47,8 @@ namespace app.runtime { arc, intent_url, app_home_page, - focus_mode + focus_mode, + sparky }; // An app can be launched with a specific action in mind, for example, to diff --git a/tools/under-control/src/extensions/common/api/automation.idl b/tools/under-control/src/extensions/common/api/automation.idl index 707a07434..4f30b05b6 100755 --- a/tools/under-control/src/extensions/common/api/automation.idl +++ b/tools/under-control/src/extensions/common/api/automation.idl @@ -95,7 +95,6 @@ orientationChanged, parentChanged, placeholderChanged, - portalActivated, positionInSetChanged, rangeValueChanged, rangeValueMaxChanged, @@ -310,7 +309,7 @@ pdfRoot, pluginObject, popUpButton, - portal, + portalDeprecated, preDeprecated, progressIndicator, radioButton, @@ -478,6 +477,7 @@ contents, placeholder, popoverAttribute, + prohibited, relatedElement, title, value @@ -488,6 +488,7 @@ attributeExplicitlyEmpty, buttonLabel, popoverAttribute, + prohibitedNameRepair, relatedElement, rubyAnnotation, summary, diff --git a/tools/under-control/src/extensions/common/api/declarative_net_request.idl b/tools/under-control/src/extensions/common/api/declarative_net_request.idl index 30f4e8f2b..b63682503 100755 --- a/tools/under-control/src/extensions/common/api/declarative_net_request.idl +++ b/tools/under-control/src/extensions/common/api/declarative_net_request.idl @@ -170,16 +170,23 @@ namespace declarativeNetRequest { DOMString? regexSubstitution; }; - // TODO(crbug.com/40727004): Add documentation once feature is complete. - [nodoc] dictionary HeaderInfo { + dictionary HeaderInfo { // The name of the header. This condition matches on the name // only if both `values` and `excludedValues` are not specified. DOMString header; - // If specified, this condition matches if the header's value - // contains at least one element in this list. + // If specified, this condition matches if the header's value matches at + // least one pattern in this list. This supports case-insensitive header + // value matching plus the following constructs: + // + // '*' : Matches any number of characters. + // + // '?' : Matches zero or one character(s). + // + // '*' and '?' can be escaped with a backslash, e.g. '\*' and '\?' DOMString[]? values; - // If specified, this condition is not matched if the header - // exists but its value contains at least one element in this list. + // If specified, this condition is not matched if the header exists but its + // value contains at least one element in this list. This uses the same + // match pattern syntax as `values`. DOMString[]? excludedValues; }; @@ -355,15 +362,13 @@ namespace declarativeNetRequest { // Rule matches if the request matches any response header condition in this // list (if specified). - // TODO(crbug.com/40727004): Add documentation once feature is complete. - [nodoc] HeaderInfo[]? responseHeaders; + HeaderInfo[]? responseHeaders; // Rule does not match if the request matches any response header // condition in this list (if specified). If both `excludedResponseHeaders` // and `responseHeaders` are specified, then the `excludedResponseHeaders` // property takes precedence. - // TODO(crbug.com/40727004): Add documentation once feature is complete. - [nodoc] HeaderInfo[]? excludedResponseHeaders; + HeaderInfo[]? excludedResponseHeaders; }; dictionary ModifyHeaderInfo { @@ -636,8 +641,10 @@ namespace declarativeNetRequest { // extension updates. //
  • Static rules specified as part of the extension package can not be // removed using this function.
  • - //
  • $(ref:MAX_NUMBER_OF_DYNAMIC_AND_SESSION_RULES) is the maximum number - // of combined dynamic and session rules an extension can add.
  • + //
  • $(ref:MAX_NUMBER_OF_DYNAMIC_RULES) is the maximum number + // of dynamic rules an extension can add. The number of + // unsafe rules must not exceed + // $(ref:MAX_NUMBER_OF_UNSAFE_DYNAMIC_RULES).
  • // // |callback|: Called once the update is complete or has failed. In case of // an error, $(ref:runtime.lastError) will be set and no change will be made @@ -667,8 +674,8 @@ namespace declarativeNetRequest { // specified rules are added and removed, or an error is returned. //
  • These rules are not persisted across sessions and are backed in // memory.
  • - //
  • $(ref:MAX_NUMBER_OF_DYNAMIC_AND_SESSION_RULES) is the maximum number - // of combined dynamic and session rules an extension can add.
  • + //
  • $(ref:MAX_NUMBER_OF_SESSION_RULES) is the maximum number + // of session rules an extension can add.
  • // // |callback|: Called once the update is complete or has failed. In case of // an error, $(ref:runtime.lastError) will be set and no change will be made @@ -786,7 +793,7 @@ namespace declarativeNetRequest { // The maximum number of combined dynamic and session scoped rules an // extension can add. - [nodoc, value=5000] static long MAX_NUMBER_OF_DYNAMIC_AND_SESSION_RULES(); + [nodoc, value=5000, deprecated="There is no longer a combined limit. See $(ref:MAX_NUMBER_OF_DYNAMIC_RULES) and $(ref:MAX_NUMBER_OF_SESSION_RULES)."] static long MAX_NUMBER_OF_DYNAMIC_AND_SESSION_RULES(); // The maximum number of dynamic rules that an extension can add. [value=30000] static long MAX_NUMBER_OF_DYNAMIC_RULES(); diff --git a/tools/under-control/src/extensions/common/api/web_accessible_resources.idl b/tools/under-control/src/extensions/common/api/web_accessible_resources.idl index d74b8f152..7ee7e03ad 100755 --- a/tools/under-control/src/extensions/common/api/web_accessible_resources.idl +++ b/tools/under-control/src/extensions/common/api/web_accessible_resources.idl @@ -24,6 +24,8 @@ // dynamic ID. This is an identifier that uniquely identifies the extension // and is generated each session. The corresponding dynamic extension URL // is available through $(ref:runtime.getURL). + // Dynamic resources can be loaded regardless of the value. However, if + // true, resources must be can only be loaded using the dynamic URL. boolean? use_dynamic_url; }; diff --git a/tools/under-control/src/gin/v8_initializer.cc b/tools/under-control/src/gin/v8_initializer.cc index 3b4fcd93e..5d020cdea 100755 --- a/tools/under-control/src/gin/v8_initializer.cc +++ b/tools/under-control/src/gin/v8_initializer.cc @@ -290,6 +290,10 @@ void SetFlags(IsolateHolder::ScriptMode mode, "--cppheap-optimize-sweep-for-mutator", "--no-cppheap-optimize-sweep-for-mutator"); SetV8FlagsIfOverridden(features::kV8MinorMS, "--minor-ms", "--no-minor-ms"); + if (base::FeatureList::IsEnabled(features::kV8ScavengerHigherCapacity)) { + SetV8FlagsFormatted("--scavenger-max-new-space-capacity-mb=%i", + features::kV8ScavengerMaxCapacity.Get()); + } SetV8FlagsIfOverridden(features::kV8Sparkplug, "--sparkplug", "--no-sparkplug"); SetV8FlagsIfOverridden(features::kV8Turbofan, "--turbofan", "--no-turbofan"); @@ -404,6 +408,18 @@ void SetFlags(IsolateHolder::ScriptMode mode, "--intel-jcc-erratum-mitigation", "--no-intel-jcc-erratum-mitigation"); + SetV8FlagsIfOverridden(features::kV8UpdateLimitAfterLoading, + "--update-allocation-limits-after-loading", + "--no-update-allocation-limits-after-loading"); + + SetV8FlagsIfOverridden(features::kV8UseLibmTrigFunctions, + "--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"); + // JavaScript language features. SetV8FlagsIfOverridden(features::kJavaScriptIteratorHelpers, "--harmony-iterator-helpers", @@ -411,9 +427,6 @@ void SetFlags(IsolateHolder::ScriptMode mode, SetV8FlagsIfOverridden(features::kJavaScriptPromiseWithResolvers, "--js-promise-withresolvers", "--no-js-promise-withresolvers"); - SetV8FlagsIfOverridden(features::kJavaScriptArrayFromAsync, - "--harmony-array-from-async", - "--no-harmony-array-from-async"); SetV8FlagsIfOverridden(features::kJavaScriptRegExpModifiers, "--js-regexp-modifiers", "--no-js-regexp-modifiers"); SetV8FlagsIfOverridden(features::kJavaScriptImportAttributes, @@ -424,19 +437,13 @@ void SetFlags(IsolateHolder::ScriptMode mode, SetV8FlagsIfOverridden(features::kJavaScriptRegExpDuplicateNamedGroups, "--js-regexp-duplicate-named-groups", "--no-js-duplicate-named-groups"); + SetV8FlagsIfOverridden(features::kJavaScriptPromiseTry, "--js-promise-try", + "--no-js-promise-try"); if (IsolateHolder::kStrictMode == mode) { SetV8Flags("--use_strict"); } - SetV8FlagsIfOverridden(features::kV8UseLibmTrigFunctions, - "--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"); @@ -445,6 +452,9 @@ void SetFlags(IsolateHolder::ScriptMode mode, SetV8FlagsIfOverridden(features::kWebAssemblyInlining, "--experimental-wasm-inlining", "--no-experimental-wasm-inlining"); + SetV8FlagsIfOverridden(features::kWebAssemblyInliningCallIndirect, + "--wasm-inlining-call-indirect", + "--no-wasm-inlining-call-indirect"); SetV8FlagsIfOverridden(features::kWebAssemblyLiftoffCodeFlushing, "--flush-liftoff-code", "--no-flush-liftoff-code"); SetV8FlagsIfOverridden(features::kWebAssemblyGenericWrapper, diff --git a/tools/under-control/src/services/network/network_context.cc b/tools/under-control/src/services/network/network_context.cc index 42d451bfe..5c20e5b79 100755 --- a/tools/under-control/src/services/network/network_context.cc +++ b/tools/under-control/src/services/network/network_context.cc @@ -27,6 +27,7 @@ #include "base/memory/ptr_util.h" #include "base/memory/ref_counted.h" #include "base/metrics/histogram_functions.h" +#include "base/not_fatal_until.h" #include "base/ranges/algorithm.h" #include "base/sequence_checker.h" #include "base/strings/string_number_conversions.h" @@ -73,7 +74,6 @@ #include "net/cookies/cookie_setting_override.h" #include "net/dns/host_cache.h" #include "net/dns/mapped_host_resolver.h" -#include "net/extras/shared_dictionary/shared_dictionary_isolation_key.h" #include "net/extras/sqlite/cookie_crypto_delegate.h" #include "net/extras/sqlite/sqlite_persistent_cookie_store.h" #include "net/first_party_sets/first_party_set_metadata.h" @@ -89,6 +89,8 @@ #include "net/net_buildflags.h" #include "net/proxy_resolution/configured_proxy_resolution_service.h" #include "net/proxy_resolution/proxy_config.h" +#include "net/shared_dictionary/shared_dictionary_isolation_key.h" +#include "net/storage_access_api/status.h" #include "net/traffic_annotation/network_traffic_annotation.h" #include "net/url_request/static_http_user_agent_settings.h" #include "net/url_request/url_request.h" @@ -96,7 +98,6 @@ #include "net/url_request/url_request_context_builder.h" #include "services/network/brokered_client_socket_factory.h" #include "services/network/cookie_manager.h" -#include "services/network/cors/cors_url_loader_factory.h" #include "services/network/data_remover_util.h" #include "services/network/disk_cache/mojo_backend_file_operations_factory.h" #include "services/network/host_resolver.h" @@ -109,11 +110,11 @@ #include "services/network/is_browser_initiated.h" #include "services/network/net_log_exporter.h" #include "services/network/network_service.h" -#include "services/network/network_service_memory_cache.h" #include "services/network/network_service_network_delegate.h" #include "services/network/network_service_proxy_delegate.h" #include "services/network/oblivious_http_request_handler.h" #include "services/network/prefetch_cache.h" +#include "services/network/prefetch_matching_url_loader_factory.h" #include "services/network/prefetch_url_loader_client.h" #include "services/network/proxy_config_service_mojo.h" #include "services/network/proxy_lookup_request.h" @@ -137,7 +138,6 @@ #include "services/network/session_cleanup_cookie_store.h" #include "services/network/shared_dictionary/shared_dictionary_constants.h" #include "services/network/shared_dictionary/shared_dictionary_manager.h" -#include "services/network/shared_dictionary/shared_dictionary_network_transaction_factory.h" #include "services/network/shared_dictionary/shared_dictionary_storage.h" #include "services/network/ssl_config_service_mojo.h" #include "services/network/throttling/network_conditions.h" @@ -195,7 +195,7 @@ #endif // BUILDFLAG(IS_ANDROID) #if BUILDFLAG(ENABLE_DEVICE_BOUND_SESSIONS) -#include "net/device_bound_sessions/device_bound_session_service.h" +#include "net/device_bound_sessions/session_service.h" #endif // BUILDFLAG(ENABLE_DEVICE_BOUND_SESSIONS) namespace network { @@ -638,8 +638,12 @@ NetworkContext::NetworkContext( cors_preflight_controller_(network_service), http_auth_merged_preferences_(network_service), ohttp_handler_(this), + prefetch_enabled_( + base::FeatureList::IsEnabled(features::kNetworkContextPrefetch)), cors_non_wildcard_request_headers_support_(base::FeatureList::IsEnabled( - features::kCorsNonWildcardRequestHeadersSupport)) { + features::kCorsNonWildcardRequestHeadersSupport)), + prefetch_cache_(prefetch_enabled_ ? std::make_unique() + : nullptr) { #if BUILDFLAG(IS_WIN) && DCHECK_IS_ON() if (params_->file_paths) { DCHECK(params_->win_permissions_set) @@ -737,9 +741,6 @@ NetworkContext::NetworkContext( #endif resource_scheduler_ = std::make_unique(); - if (base::FeatureList::IsEnabled(features::kNetworkServiceMemoryCache)) - memory_cache_ = std::make_unique(this); - if (params_->http_auth_static_network_context_params) { http_auth_merged_preferences_.SetAllowDefaultCredentials( params_->http_auth_static_network_context_params @@ -780,6 +781,10 @@ NetworkContext::NetworkContext( base::MakeRefCounted( std::move(params_->http_cache_file_operations_factory)); } + + if (prefetch_enabled_) { + InitializePrefetchURLLoaderFactory(); + } } NetworkContext::NetworkContext( @@ -808,7 +813,11 @@ NetworkContext::NetworkContext( url_request_context)), cors_preflight_controller_(network_service), http_auth_merged_preferences_(network_service), - ohttp_handler_(this) { + ohttp_handler_(this), + prefetch_enabled_( + base::FeatureList::IsEnabled(features::kNetworkContextPrefetch)), + prefetch_cache_(prefetch_enabled_ ? std::make_unique() + : nullptr) { // May be nullptr in tests. if (network_service_) network_service_->RegisterNetworkContext(this); @@ -820,6 +829,10 @@ NetworkContext::NetworkContext( acam_preflight_spec_conformant_ = base::FeatureList::IsEnabled( network::features:: kAccessControlAllowMethodsInCORSPreflightSpecConformant); + + if (prefetch_enabled_) { + InitializePrefetchURLLoaderFactory(); + } } NetworkContext::~NetworkContext() { @@ -878,7 +891,7 @@ NetworkContext::~NetworkContext() { // Clear `url_loader_factories_` before deleting the contents, as it can // result in re-entrant calls to DestroyURLLoaderFactory(). - std::set, + std::set, base::UniquePtrComparator> url_loader_factories = std::move(url_loader_factories_); } @@ -914,9 +927,11 @@ void NetworkContext::CreateURLLoaderFactory( mojo::PendingReceiver receiver, mojom::URLLoaderFactoryParamsPtr params, scoped_refptr resource_scheduler_client) { - url_loader_factories_.emplace(std::make_unique( - this, std::move(params), std::move(resource_scheduler_client), - std::move(receiver), &cors_origin_access_list_)); + url_loader_factories_.emplace( + std::make_unique( + this, std::move(params), std::move(resource_scheduler_client), + std::move(receiver), &cors_origin_access_list_, + prefetch_cache_.get())); } void NetworkContext::CreateURLLoaderFactoryForCertNetFetcher( @@ -962,7 +977,7 @@ void NetworkContext::CreateURLLoaderFactory( void NetworkContext::ResetURLLoaderFactories() { // Move all factories to a temporary vector so ClearBindings() does not // invalidate the iterator if the factory gets deleted. - std::vector factories; + std::vector factories; factories.reserve(url_loader_factories_.size()); for (const auto& factory : url_loader_factories_) factories.push_back(factory.get()); @@ -1000,7 +1015,7 @@ void NetworkContext::OnRCMDisconnect( const network::RestrictedCookieManager* rcm) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); auto it = restricted_cookie_managers_.find(rcm); - DCHECK(it != restricted_cookie_managers_.end()); + CHECK(it != restricted_cookie_managers_.end(), base::NotFatalUntil::M130); restricted_cookie_managers_.erase(it); } @@ -1112,7 +1127,7 @@ void NetworkContext::SetBlockTrustTokens(bool block) { void NetworkContext::OnProxyLookupComplete( ProxyLookupRequest* proxy_lookup_request) { auto it = proxy_lookup_requests_.find(proxy_lookup_request); - DCHECK(it != proxy_lookup_requests_.end()); + CHECK(it != proxy_lookup_requests_.end(), base::NotFatalUntil::M130); proxy_lookup_requests_.erase(it); } @@ -1121,12 +1136,12 @@ void NetworkContext::DisableQuic() { } void NetworkContext::DestroyURLLoaderFactory( - cors::CorsURLLoaderFactory* url_loader_factory) { + PrefetchMatchingURLLoaderFactory* url_loader_factory) { if (is_destructing_) { return; } auto it = url_loader_factories_.find(url_loader_factory); - DCHECK(it != url_loader_factories_.end()); + CHECK(it != url_loader_factories_.end(), base::NotFatalUntil::M130); url_loader_factories_.erase(it); } @@ -1143,7 +1158,7 @@ void NetworkContext::LoaderCreated(uint32_t process_id) { void NetworkContext::LoaderDestroyed(uint32_t process_id) { auto it = loader_count_per_process_.find(process_id); - DCHECK(it != loader_count_per_process_.end()); + CHECK(it != loader_count_per_process_.end(), base::NotFatalUntil::M130); it->second -= 1; if (it->second == 0) loader_count_per_process_.erase(it); @@ -1245,10 +1260,6 @@ void NetworkContext::ClearHttpCache(base::Time start_time, url_request_context_, std::move(filter), start_time, end_time, base::BindOnce(&NetworkContext::OnHttpCacheCleared, base::Unretained(this), std::move(callback)))); - - NetworkServiceMemoryCache* memory_cache = GetMemoryCache(); - if (memory_cache) - memory_cache->Clear(); } void NetworkContext::ComputeHttpCacheSize( @@ -1391,12 +1402,38 @@ void NetworkContext::QueueReport( const GURL& url, const std::optional& reporting_source, const net::NetworkAnonymizationKey& network_anonymization_key, - const std::optional& user_agent, base::Value::Dict body) { + QueueReportInternal(type, group, url, reporting_source, + network_anonymization_key, std::move(body), + net::ReportingTargetType::kDeveloper); +} + +void NetworkContext::QueueEnterpriseReport(const std::string& type, + const std::string& group, + const GURL& url, + base::Value::Dict body) { + // Enterprise reports don't use a |reporting_source| or + // |network_anonymization_key|. Enterprise endpoints are profile-bound and not + // document-bound like web developer endpoints. + QueueReportInternal(type, group, url, /*reporting_source=*/std::nullopt, + net::NetworkAnonymizationKey(), std::move(body), + net::ReportingTargetType::kEnterprise); +} + +void NetworkContext::QueueReportInternal( + const std::string& type, + const std::string& group, + const GURL& url, + const std::optional& reporting_source, + const net::NetworkAnonymizationKey& network_anonymization_key, + base::Value::Dict body, + net::ReportingTargetType target_type) { #if BUILDFLAG(ENABLE_REPORTING) // If |reporting_source| is provided, it must not be empty. DCHECK(!(reporting_source.has_value() && reporting_source->is_empty())); - if (require_network_anonymization_key_) { + // Enterprise reports have an empty |network_anonymization_key|. + if (target_type == net::ReportingTargetType::kDeveloper && + require_network_anonymization_key_) { DCHECK(!network_anonymization_key.IsEmpty()); } @@ -1409,16 +1446,15 @@ void NetworkContext::QueueReport( return; } - std::string reported_user_agent = user_agent.value_or(""); - if (reported_user_agent.empty() && - request_context->http_user_agent_settings() != nullptr) { + std::string reported_user_agent = ""; + if (request_context->http_user_agent_settings() != nullptr) { reported_user_agent = request_context->http_user_agent_settings()->GetUserAgent(); } - reporting_service->QueueReport(url, reporting_source, - network_anonymization_key, reported_user_agent, - group, type, std::move(body), 0 /* depth */); + reporting_service->QueueReport( + url, reporting_source, network_anonymization_key, reported_user_agent, + group, type, std::move(body), 0 /* depth */, target_type); #endif // BUILDFLAG(ENABLE_REPORTING) } @@ -1597,8 +1633,7 @@ void NetworkContext::SetCTPolicy(mojom::CTPolicyPtr ct_policy) { return; require_ct_delegate_->UpdateCTPolicies(ct_policy->excluded_hosts, - ct_policy->excluded_spkis, - ct_policy->excluded_legacy_spkis); + ct_policy->excluded_spkis); } int NetworkContext::CheckCTRequirementsForSignedExchange( @@ -1782,7 +1817,7 @@ void NetworkContext::CreateWebSocket( const GURL& url, const std::vector& requested_protocols, const net::SiteForCookies& site_for_cookies, - bool has_storage_access, + net::StorageAccessApiStatus storage_access_api_status, const net::IsolationInfo& isolation_info, std::vector additional_headers, int32_t process_id, @@ -1802,7 +1837,7 @@ void NetworkContext::CreateWebSocket( DCHECK_GE(process_id, 0); websocket_factory_->CreateWebSocket( - url, requested_protocols, site_for_cookies, has_storage_access, + url, requested_protocols, site_for_cookies, storage_access_api_status, isolation_info, std::move(additional_headers), process_id, origin, options, static_cast(traffic_annotation), @@ -1917,14 +1952,12 @@ void NetworkContext::VerifyCertForSignedExchange( void NetworkContext::NotifyExternalCacheHit(const GURL& url, const std::string& http_method, const net::NetworkIsolationKey& key, - bool is_subframe_document_resource, bool include_credentials) { net::HttpCache* cache = url_request_context_->http_transaction_factory()->GetCache(); if (!cache) return; - cache->OnExternalCacheHit(url, http_method, key, - is_subframe_document_resource, include_credentials); + cache->OnExternalCacheHit(url, http_method, key, include_credentials); } void NetworkContext::SetCorsOriginAccessListsForOrigin( @@ -2312,10 +2345,6 @@ const net::HttpAuthPreferences* NetworkContext::GetHttpAuthPreferences() const { return &http_auth_merged_preferences_; } -NetworkServiceMemoryCache* NetworkContext::GetMemoryCache() { - return memory_cache_.get(); -} - size_t NetworkContext::NumOpenWebTransports() const { return base::ranges::count(web_transports_, false, &WebTransport::torn_down); } @@ -2722,25 +2751,17 @@ URLRequestContextOwner NetworkContext::MakeURLRequestContext( builder.set_quic_context(std::move(quic_context)); if (params_->shared_dictionary_enabled) { - CHECK(GetSharedDictionaryManager()); - builder.SetCreateHttpTransactionFactoryCallback(base::BindOnce( - [](base::WeakPtr context, - net::HttpNetworkSession* session) - -> std::unique_ptr { - CHECK(context); - return std::make_unique( - *context->GetSharedDictionaryManager(), - std::make_unique(session)); - }, - weak_factory_.GetWeakPtr())); - } else { - builder.SetCreateHttpTransactionFactoryCallback( - base::BindOnce([](net::HttpNetworkSession* session) - -> std::unique_ptr { - return std::make_unique(session); - })); + builder.set_enable_shared_dictionary(true); + builder.set_enable_shared_zstd( + base::FeatureList::IsEnabled(network::features::kSharedZstd)); } + builder.SetCreateHttpTransactionFactoryCallback( + base::BindOnce([](net::HttpNetworkSession* session) + -> std::unique_ptr { + return std::make_unique(session); + })); + builder.set_host_mapping_rules( command_line->GetSwitchValueASCII(switches::kHostResolverRules)); @@ -2888,7 +2909,7 @@ void NetworkContext::OnHttpCacheCleared(ClearHttpCacheCallback callback, void NetworkContext::OnHostResolverShutdown(HostResolver* resolver) { auto found_resolver = host_resolvers_.find(resolver); - DCHECK(found_resolver != host_resolvers_.end()); + CHECK(found_resolver != host_resolvers_.end(), base::NotFatalUntil::M130); host_resolvers_.erase(found_resolver); } @@ -2925,7 +2946,7 @@ GURL NetworkContext::GetHSTSRedirect(const GURL& original_url) { #if BUILDFLAG(IS_P2P_ENABLED) void NetworkContext::DestroySocketManager(P2PSocketManager* socket_manager) { auto iter = socket_managers_.find(socket_manager); - DCHECK(iter != socket_managers_.end()); + CHECK(iter != socket_managers_.end(), base::NotFatalUntil::M130); socket_managers_.erase(iter); } #endif // BUILDFLAG(IS_P2P_ENABLED) @@ -2944,7 +2965,7 @@ void NetworkContext::OnVerifyCertForSignedExchangeComplete( uint64_t cert_verify_id, int result) { auto iter = cert_verifier_requests_.find(cert_verify_id); - DCHECK(iter != cert_verifier_requests_.end()); + CHECK(iter != cert_verifier_requests_.end(), base::NotFatalUntil::M130); auto pending_cert_verify = std::move(iter->second); cert_verifier_requests_.erase(iter); @@ -3104,6 +3125,23 @@ void NetworkContext::GetSharedDictionaryOriginsBetween( std::move(callback)); } +void NetworkContext::PreloadSharedDictionaryInfoForDocument( + const std::vector& urls, + mojo::PendingReceiver + preload_handle) { + if (shared_dictionary_manager_) { + shared_dictionary_manager_->PreloadSharedDictionaryInfoForDocument( + urls, std::move(preload_handle)); + } +} + +void NetworkContext::HasPreloadedSharedDictionaryInfoForTesting( + HasPreloadedSharedDictionaryInfoForTestingCallback callback) { + std::move(callback).Run( + shared_dictionary_manager_ && + shared_dictionary_manager_->HasPreloadedSharedDictionaryInfo()); +} + void NetworkContext::ResourceSchedulerClientVisibilityChanged( const base::UnguessableToken& client_token, bool visible) { @@ -3174,20 +3212,10 @@ void NetworkContext::Prefetch( uint32_t options, const ResourceRequest& request, const net::MutableNetworkTrafficAnnotationTag& traffic_annotation) { - if (!base::FeatureList::IsEnabled(features::kNetworkContextPrefetch)) { + if (!prefetch_enabled_) { return; } - if (!prefetch_cache_) { - // Lazily initialized to avoid slowing down startup. - prefetch_cache_ = std::make_unique(); - } - - if (!prefetch_url_loader_factory_remote_.is_bound() || - !prefetch_url_loader_factory_remote_.is_connected()) { - InitializePrefetchURLLoaderFactory(); - } - PrefetchURLLoaderClient* client = prefetch_cache_->Emplace(request); if (!client) { // This is normal if we already have a prefetch in progress for the {NIK, @@ -3200,6 +3228,11 @@ void NetworkContext::Prefetch( client->BindNewPipeAndPassRemote(), traffic_annotation); } +void NetworkContext::GetBoundNetworkForTesting( + GetBoundNetworkForTestingCallback callback) { + std::move(callback).Run(url_request_context()->bound_network()); +} + bool NetworkContext::IsNetworkForNonceAndUrlAllowed( const base::UnguessableToken& nonce, const GURL& url) const { 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 61b112ed4..cee8f79a9 100755 --- a/tools/under-control/src/testing/variations/fieldtrial_testing_config.json +++ b/tools/under-control/src/testing/variations/fieldtrial_testing_config.json @@ -91,11 +91,12 @@ "AccessibilityManageBroadcastReceiverOnBackground": [ { "platforms": [ - "android" + "android", + "android_webview" ], "experiments": [ { - "name": "Enabled", + "name": "Enabled_20240701", "enable_features": [ "AccessibilityManageBroadcastReceiverOnBackground" ] @@ -298,52 +299,22 @@ ] } ], - "AllowTrustedVaultAutoUpgradeSyntheticFieldTrial": [ - { - "platforms": [ - "android", - "chromeos", - "chromeos_lacros", - "ios", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "TrustedVaultAutoUpgradeSyntheticFieldTrial" - ] - } - ] - } - ], - "AllowUndamagedNonrootRenderPassToSkip": [ + "AndroidAnimateSuggestionsListAppearance": [ { "platforms": [ - "android", - "android_weblayer", - "android_webview", - "chromeos", - "chromeos_lacros", - "fuchsia", - "ios", - "linux", - "mac", - "windows" + "android" ], "experiments": [ { "name": "Enabled", "enable_features": [ - "AllowUndamagedNonrootRenderPassToSkip" + "AnimateSuggestionsListAppearance" ] } ] } ], - "AndroidAnimateSuggestionsListAppearance": [ + "AndroidAnimatedImageDragShadow": [ { "platforms": [ "android" @@ -352,22 +323,22 @@ { "name": "Enabled", "enable_features": [ - "AnimateSuggestionsListAppearance" + "AnimatedImageDragShadow" ] } ] } ], - "AndroidAnimatedImageDragShadow": [ + "AndroidAutofillDirectFormSubmission": [ { "platforms": [ - "android" + "android_webview" ], "experiments": [ { "name": "Enabled", "enable_features": [ - "AnimatedImageDragShadow" + "AndroidAutofillDirectFormSubmission" ] } ] @@ -432,22 +403,6 @@ ] } ], - "AndroidDesktopWindowing": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "DragDropTabTearing", - "TabStripLayoutOptimization" - ] - } - ] - } - ], "AndroidHatsNext": [ { "platforms": [ @@ -652,23 +607,16 @@ ] } ], - "AomVpxUseChromeThreads": [ + "AnimationForDesktopCapturePermissionChecker": [ { "platforms": [ - "android", - "android_webview", - "chromeos", - "chromeos_lacros", - "linux", - "mac", - "windows" + "mac" ], "experiments": [ { "name": "Enabled", "enable_features": [ - "LibaomUseChromeThreads", - "LibvpxUseChromeThreads" + "AnimationForDesktopCapturePermissionChecker" ] } ] @@ -742,6 +690,14 @@ "AppInstallServiceUri", "CrosMall" ] + }, + { + "name": "Enabled_20240619", + "enable_features": [ + "AppInstallServiceUri", + "CrosMall", + "CrosMallSwa" + ] } ] } @@ -822,27 +778,36 @@ ], "experiments": [ { - "name": "HATS_Survey_Finding", + "name": "HATS_Survey_Needing", "params": { - "prob": "0.025", + "prob": "0.075", "survey_cycle_length": "7", "survey_start_date_ms": "1717064595", - "trigger_id": "G3Fdon7fh0jBnuKU19R0XRX1udZS" + "trigger_id": "c568w7vW40jBnuKU19R0RZJEYkgx" }, "enable_features": [ - "HappinessTrackingLauncherAppsFinding" + "HappinessTrackingLauncherAppsNeeding" ] - }, + } + ] + } + ], + "AppsCollectionsHATSFinding": [ + { + "platforms": [ + "chromeos" + ], + "experiments": [ { - "name": "HATS_Survey_Needing", + "name": "HATS_Survey_Finding", "params": { - "prob": "0.075", + "prob": "0.025", "survey_cycle_length": "7", "survey_start_date_ms": "1717064595", - "trigger_id": "c568w7vW40jBnuKU19R0RZJEYkgx" + "trigger_id": "G3Fdon7fh0jBnuKU19R0XRX1udZS" }, "enable_features": [ - "HappinessTrackingLauncherAppsNeeding" + "HappinessTrackingLauncherAppsFinding" ] } ] @@ -914,6 +879,24 @@ ] } ], + "ArcOnDemandV2": [ + { + "platforms": [ + "chromeos" + ], + "experiments": [ + { + "name": "Enabled_app_launch_20240705", + "params": { + "activate_on_app_launch": "true" + }, + "enable_features": [ + "ArcOnDemandV2" + ] + } + ] + } + ], "ArcSkipDropPageCache": [ { "platforms": [ @@ -1094,12 +1077,12 @@ ], "experiments": [ { - "name": "VirtualSwapEnabled_100PercentVmSize_5SecondSwapInterval", + "name": "VirtualSwapEnabled_25PercentVmSize_10SecondSwapInterval", "params": { "guest_reclaim_enabled": "true", - "size_percentage": "100", + "size_percentage": "25", "virtual_swap_enabled": "true", - "virtual_swap_interval_ms": "5000" + "virtual_swap_interval_ms": "10000" }, "enable_features": [ "ArcGuestZram" @@ -1358,7 +1341,7 @@ ] } ], - "AuthenticateUsingNewWindowsHelloApi": [ + "AuthenticateUsingUserConsentVerifierApi": [ { "platforms": [ "windows" @@ -1367,7 +1350,8 @@ { "name": "Enabled", "enable_features": [ - "AuthenticateUsingNewWindowsHelloApi" + "AuthenticateUsingUserConsentVerifierApi", + "AuthenticateUsingUserConsentVerifierInteropApi" ] } ] @@ -1591,11 +1575,10 @@ ] } ], - "AutofillDetectRemovedFormControls": [ + "AutofillDontPrefixMatchCreditCardNumbersOrCvcs": [ { "platforms": [ "android", - "android_webview", "chromeos", "chromeos_lacros", "ios", @@ -1607,66 +1590,58 @@ { "name": "Enabled", "enable_features": [ - "AutofillDetectRemovedFormControls" + "AutofillDontPrefixMatchCreditCardNumbersOrCvcs" ] } ] } ], - "AutofillEnableAccountStorageForIneligibleCountries": [ + "AutofillDynamicallyLoadsFieldsForAddressInput": [ { "platforms": [ - "android", - "chromeos", - "chromeos_lacros", - "ios", - "linux", - "mac", - "windows" + "ios" ], "experiments": [ { "name": "Enabled", "enable_features": [ - "AutofillEnableAccountStorageForIneligibleCountries" + "AutofillDynamicallyLoadsFieldsForAddressInput" ] } ] } ], - "AutofillEnableAndroidNKeyForFidoAuthentication": [ + "AutofillEnableAccountStorageForIneligibleCountries": [ { "platforms": [ - "android" + "android", + "chromeos", + "chromeos_lacros", + "ios", + "linux", + "mac", + "windows" ], "experiments": [ { "name": "Enabled", "enable_features": [ - "AutofillEnableAndroidNKeyForFidoAuthentication" + "AutofillEnableAccountStorageForIneligibleCountries" ] } ] } ], - "AutofillEnableCardArtAndCardProductName": [ + "AutofillEnableAndroidNKeyForFidoAuthentication": [ { "platforms": [ - "android", - "chromeos", - "chromeos_lacros", - "linux", - "mac", - "windows" + "android" ], "experiments": [ { "name": "Enabled", "enable_features": [ - "AutofillEnableCardArtImage", - "AutofillEnableCardProductName", - "AutofillEnableNewCardArtAndNetworkImages", - "AutofillEnableVirtualCardMetadata" + "AutofillEnableAndroidNKeyForFidoAuthentication" ] } ] @@ -1840,7 +1815,9 @@ "AutofillEnableLoadingAndConfirmation": [ { "platforms": [ + "android", "chromeos", + "ios", "linux", "mac", "windows" @@ -1937,6 +1914,27 @@ ] } ], + "AutofillEnableVerveCardSupport": [ + { + "platforms": [ + "android", + "chromeos", + "chromeos_lacros", + "ios", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "AutofillEnableVerveCardSupport" + ] + } + ] + } + ], "AutofillEnableVirtualCardOnFile": [ { "platforms": [ @@ -2010,6 +2008,25 @@ ] } ], + "AutofillForUnclassifiedFieldsAvailable": [ + { + "platforms": [ + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "AutofillForUnclassifiedFieldsAvailable" + ] + } + ] + } + ], "AutofillGranularFillingAvailable": [ { "platforms": [ @@ -2148,25 +2165,6 @@ ] } ], - "AutofillManualFallbackForUnclassifiedFieldsAvailable": [ - { - "platforms": [ - "chromeos", - "chromeos_lacros", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "AutofillForUnclassifiedFieldsAvailable" - ] - } - ] - } - ], "AutofillModelPredictions": [ { "platforms": [ @@ -2258,7 +2256,7 @@ ] } ], - "AutofillPopupZOrderSecuritySurface_DisabledByDefault": [ + "AutofillPopupZOrderSecuritySurface_V2": [ { "platforms": [ "chromeos", @@ -2299,6 +2297,25 @@ ] } ], + "AutofillRequireValidLocalCardsInSettings": [ + { + "platforms": [ + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "AutofillRequireValidLocalCardsInSettings" + ] + } + ] + } + ], "AutofillSharedStorageServerCardData": [ { "platforms": [ @@ -2436,11 +2453,10 @@ ] } ], - "AutofillUploadVotesForFieldsWithEmail": [ + "AutofillUKMExperimentalFields": [ { "platforms": [ "android", - "android_webview", "chromeos", "chromeos_lacros", "ios", @@ -2451,20 +2467,22 @@ "experiments": [ { "name": "Enabled", + "params": { + "autofill_experimental_regex_bucket1": "test1" + }, "enable_features": [ - "AutofillUploadVotesForFieldsWithEmail" + "AutofillUKMExperimentalFields" ] } ] } ], - "AutofillUpstream": [ + "AutofillUploadCardRequestTimeout": [ { "platforms": [ "android", "chromeos", "chromeos_lacros", - "fuchsia", "ios", "linux", "mac", @@ -2472,15 +2490,15 @@ ], "experiments": [ { - "name": "Enabled_20220124", + "name": "Enabled", "enable_features": [ - "AutofillUpstream" + "AutofillUploadCardRequestTimeout" ] } ] } ], - "AutofillUseI18nAddressModelV2": [ + "AutofillUploadVotesForFieldsWithEmail": [ { "platforms": [ "android", @@ -2496,49 +2514,100 @@ { "name": "Enabled", "enable_features": [ - "AutofillEnableDependentLocalityParsing", - "AutofillEnableParsingOfStreetLocation", - "AutofillEnableRationalizationEngineForMX", - "AutofillEnableSupportForAddressOverflow", - "AutofillEnableSupportForAddressOverflowAndLandmark", - "AutofillEnableSupportForAdminLevel2", - "AutofillEnableSupportForApartmentNumbers", - "AutofillEnableSupportForBetweenStreets", - "AutofillEnableSupportForBetweenStreetsOrLandmark", - "AutofillEnableSupportForLandmark", - "AutofillLocalHeuristicsOverrides", - "AutofillPreferLabelsInSomeCountries", - "AutofillUseBRAddressModel", - "AutofillUseI18nAddressModel", - "AutofillUseMXAddressModel" + "AutofillUploadVotesForFieldsWithEmail" ] } ] } ], - "AutomaticLazyFrameLoading": [ + "AutofillUpstream": [ { "platforms": [ "android", "chromeos", "chromeos_lacros", "fuchsia", + "ios", "linux", "mac", "windows" ], "experiments": [ { - "name": "Enabled_LazyEmbeds0_20220809", + "name": "Enabled_20220124", + "enable_features": [ + "AutofillUpstream" + ] + } + ] + } + ], + "AutofillUpstreamUpdatedUi": [ + { + "platforms": [ + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled_Security", "params": { - "allowed_websites": "https://www.youtube.com|/embed,https://www.google.com|/maps/embed", - "strategy": "allow_list", - "timeout": "0" + "autofill_upstream_updated_ui_treatment": "1" }, "enable_features": [ - "AutomaticLazyFrameLoadingToEmbedUrls", - "AutomaticLazyFrameLoadingToEmbeds" - ], + "AutofillUpstreamUpdatedUi" + ] + } + ] + } + ], + "AutofillVcnEnrollRequestTimeout": [ + { + "platforms": [ + "android", + "chromeos", + "chromeos_lacros", + "ios", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "AutofillVcnEnrollRequestTimeout" + ] + } + ] + } + ], + "AutomaticLazyFrameLoading": [ + { + "platforms": [ + "android", + "chromeos", + "chromeos_lacros", + "fuchsia", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled_LazyEmbeds0_20220809", + "params": { + "allowed_websites": "https://www.youtube.com|/embed,https://www.google.com|/maps/embed", + "strategy": "allow_list", + "timeout": "0" + }, + "enable_features": [ + "AutomaticLazyFrameLoadingToEmbedUrls", + "AutomaticLazyFrameLoadingToEmbeds" + ], "disable_features": [ "AutomaticLazyFrameLoadingToAds" ] @@ -2655,7 +2724,6 @@ { "platforms": [ "android", - "android_webview", "chromeos", "chromeos_lacros", "linux", @@ -3189,6 +3257,31 @@ ] } ], + "BoostRenderProcessForLoading": [ + { + "platforms": [ + "android", + "chromeos", + "chromeos_lacros", + "fuchsia", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "params": { + "prioritize_prerendering": "false", + "target_urls": "[]" + }, + "enable_features": [ + "BoostRenderProcessForLoading" + ] + } + ] + } + ], "BorealisProvision": [ { "platforms": [ @@ -3416,49 +3509,50 @@ ] } ], - "ButterOnDesktopFollowup": [ + "CCTGoogleBottomBar": [ { "platforms": [ - "chromeos_lacros" + "android" ], "experiments": [ { - "name": "Enabled", + "name": "EnabledWithSearchButton_Dev_20240718", + "params": { + "google_bottom_bar_button_list": "0,3,9,2" + }, "enable_features": [ - "ButterOnDesktopFollowup" + "CCTGoogleBottomBar" ] } ] } ], - "CCTGoogleBottomBar": [ + "CCTPrewarmTab": [ { "platforms": [ "android" ], "experiments": [ { - "name": "EnabledWithBalancedLayout_Dev", - "params": { - "google_bottom_bar_button_list": "0,3,1,2" - }, + "name": "Enabled", "enable_features": [ - "CCTGoogleBottomBar" + "CCTPrewarmTab" ] } ] } ], - "CCTPrewarmTab": [ + "COMInitForUtilWin": [ { "platforms": [ - "android" + "windows" ], "experiments": [ { "name": "Enabled", "enable_features": [ - "CCTPrewarmTab" + "UtilWinProcessUsesUIPump", + "UtilityWithUIPumpInitializesCOM" ] } ] @@ -3601,7 +3695,7 @@ ] } ], - "Canvas2DHibernationReleaseTransferMemory": [ + "Canvas2DReclaimUnusedResources": [ { "platforms": [ "android", @@ -3617,20 +3711,18 @@ { "name": "Enabled", "enable_features": [ - "Canvas2DHibernationReleaseTransferMemory" + "Canvas2DReclaimUnusedResources" ] } ] } ], - "Canvas2DReclaimUnusedResources": [ + "CanvasHibernationExperiments": [ { "platforms": [ "android", - "android_webview", "chromeos", "chromeos_lacros", - "fuchsia", "linux", "mac", "windows" @@ -3639,7 +3731,10 @@ { "name": "Enabled", "enable_features": [ - "Canvas2DReclaimUnusedResources" + "Canvas2DHibernation", + "Canvas2DHibernationReleaseTransferMemory", + "ClearCanvasResourcesInBackground", + "EvictionUnlocksResources" ] } ] @@ -3698,38 +3793,6 @@ ] } ], - "CastAppMenuExperiment": [ - { - "platforms": [ - "chromeos", - "chromeos_lacros", - "fuchsia", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "EnabledWithOrderingChange", - "params": { - "cast_listed_first": "true" - }, - "enable_features": [ - "CastAppMenuExperiment" - ] - }, - { - "name": "EnabledWithoutOrderingChange", - "params": { - "cast_listed_first": "false" - }, - "enable_features": [ - "CastAppMenuExperiment" - ] - } - ] - } - ], "CastMirroringPlayoutDelayChromeOS": [ { "platforms": [ @@ -3908,6 +3971,25 @@ ] } ], + "CdmStorageDatabaseDefaultTrial": [ + { + "platforms": [ + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Disabled", + "disable_features": [ + "CdmStorageDatabaseMigration" + ] + } + ] + } + ], "CheckHTMLParserBudgetLessOften": [ { "platforms": [ @@ -4135,21 +4217,6 @@ ] } ], - "ChromeOSGlanceablesTimeManagementClassroomStudentData": [ - { - "platforms": [ - "chromeos" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "GlanceablesTimeManagementClassroomStudentData" - ] - } - ] - } - ], "ChromeOSGlanceablesTimeManagementClassroomStudentView": [ { "platforms": [ @@ -4766,261 +4833,129 @@ ] } ], - "ChromeOSWelcomeTour": [ + "ChromeOSWelcomeTourV2": [ { "platforms": [ "chromeos" ], "experiments": [ { - "name": "Counterfactual_CANARY_DEV_10_20240601", - "params": { - "is-counterfactual": "true" - }, + "name": "Enabled", "enable_features": [ - "WelcomeTour" - ], - "disable_features": [ "WelcomeTourV2" ] }, { - "name": "Enabled_CANARY_DEV_10_20240601", - "params": { - "is-counterfactual": "false" - }, + "name": "Counterfactual", "enable_features": [ - "WelcomeTour" - ], - "disable_features": [ - "WelcomeTourV2" + "WelcomeTourCounterfactualArm" ] }, { - "name": "Counterfactual_BETA_10_20240601", - "params": { - "is-counterfactual": "true" - }, + "name": "Holdback", "enable_features": [ - "WelcomeTour" - ], - "disable_features": [ - "WelcomeTourV2" + "WelcomeTourHoldbackArm" ] - }, + } + ] + } + ], + "ChromeStartAccessibility": [ + { + "platforms": [ + "android" + ], + "experiments": [ { - "name": "Enabled_BETA_10_20240601", - "params": { - "is-counterfactual": "false" - }, + "name": "Enabled", "enable_features": [ - "WelcomeTour" - ], - "disable_features": [ - "WelcomeTourV2" + "StartSurfaceWithAccessibility" ] - }, + } + ] + } + ], + "ChromeWallpaperSearchEntrypoints": [ + { + "platforms": [ + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" + ], + "experiments": [ { - "name": "Counterfactual_STABLE_10_20240601", - "params": { - "is-counterfactual": "true" - }, + "name": "BothEntrypointsAndAnimation", "enable_features": [ - "WelcomeTour" - ], - "disable_features": [ - "WelcomeTourV2" + "CustomizeChromeWallpaperSearchButton", + "NtpWallpaperSearchButton", + "NtpWallpaperSearchButtonAnimation" ] }, { - "name": "Enabled_STABLE_10_20240601", - "params": { - "is-counterfactual": "false" - }, + "name": "BothEntrypointsNoAnimation", "enable_features": [ - "WelcomeTour" + "CustomizeChromeWallpaperSearchButton", + "NtpWallpaperSearchButton" ], "disable_features": [ - "WelcomeTourV2" + "NtpWallpaperSearchButtonAnimation" ] }, { - "name": "Counterfactual_CANARY_DEV_10_20240601_m127", - "params": { - "is-counterfactual": "true" - }, + "name": "PanoramaButtonOnlyNoAnimation", "enable_features": [ - "WelcomeTour" + "CustomizeChromeWallpaperSearchButton" ], "disable_features": [ - "WelcomeTourV2" + "NtpWallpaperSearchButton", + "NtpWallpaperSearchButtonAnimation" ] - }, + } + ] + } + ], + "ChromeWallpaperSearchGlobal": [ + { + "platforms": [ + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" + ], + "experiments": [ { - "name": "Enabled_CANARY_DEV_10_20240601_m127", - "params": { - "is-counterfactual": "false" - }, + "name": "WallpaperSearchGlobal", "enable_features": [ - "WelcomeTour" + "CustomizeChromeWallpaperSearch", + "CustomizeChromeWallpaperSearchInspirationCard", + "WallpaperSearchGraduated" ], "disable_features": [ - "WelcomeTourV2" + "WallpaperSearchSettingsVisibility" ] - }, + } + ] + } + ], + "ChromeWallpaperSearchHaTS": [ + { + "platforms": [ + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" + ], + "experiments": [ { - "name": "EnabledV2_CANARY_DEV_10_20240601_m127", + "name": "Enabled", "params": { - "is-counterfactual": "false" - }, - "enable_features": [ - "WelcomeTour", - "WelcomeTourV2" - ] - }, - { - "name": "Counterfactual_BETA_10_20240601_m127", - "params": { - "is-counterfactual": "true" - }, - "enable_features": [ - "WelcomeTour" - ], - "disable_features": [ - "WelcomeTourV2" - ] - }, - { - "name": "Enabled_BETA_10_20240601_m127", - "params": { - "is-counterfactual": "false" - }, - "enable_features": [ - "WelcomeTour" - ], - "disable_features": [ - "WelcomeTourV2" - ] - }, - { - "name": "EnabledV2_BETA_10_20240601_m127", - "params": { - "is-counterfactual": "false" - }, - "enable_features": [ - "WelcomeTour", - "WelcomeTourV2" - ] - }, - { - "name": "Counterfactual_STABLE_10_20240601_m127", - "params": { - "is-counterfactual": "true" - }, - "enable_features": [ - "WelcomeTour" - ], - "disable_features": [ - "WelcomeTourV2" - ] - }, - { - "name": "Enabled_STABLE_10_20240601_m127", - "params": { - "is-counterfactual": "false" - }, - "enable_features": [ - "WelcomeTour" - ], - "disable_features": [ - "WelcomeTourV2" - ] - }, - { - "name": "EnabledV2_STABLE_10_20240601_m127", - "params": { - "is-counterfactual": "false" - }, - "enable_features": [ - "WelcomeTour", - "WelcomeTourV2" - ] - } - ] - } - ], - "ChromeStartAccessibility": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "StartSurfaceWithAccessibility" - ] - } - ] - } - ], - "ChromeWallpaperSearchEntrypoints": [ - { - "platforms": [ - "chromeos", - "chromeos_lacros", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "BothEntrypointsAndAnimation", - "enable_features": [ - "CustomizeChromeWallpaperSearchButton", - "NtpWallpaperSearchButton", - "NtpWallpaperSearchButtonAnimation" - ] - }, - { - "name": "BothEntrypointsNoAnimation", - "enable_features": [ - "CustomizeChromeWallpaperSearchButton", - "NtpWallpaperSearchButton" - ], - "disable_features": [ - "NtpWallpaperSearchButtonAnimation" - ] - }, - { - "name": "PanoramaButtonOnlyNoAnimation", - "enable_features": [ - "CustomizeChromeWallpaperSearchButton" - ], - "disable_features": [ - "NtpWallpaperSearchButton", - "NtpWallpaperSearchButtonAnimation" - ] - } - ] - } - ], - "ChromeWallpaperSearchHaTS": [ - { - "platforms": [ - "chromeos", - "chromeos_lacros", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "params": { - "WallpaperSearchHatsDelayParam": "18s", - "en_site_id": "foo", - "probability": "1.0" + "WallpaperSearchHatsDelayParam": "18s", + "en_site_id": "foo", + "probability": "1.0" }, "enable_features": [ "HappinessTrackingSurveysForWallpaperSearch" @@ -5061,10 +4996,11 @@ ], "experiments": [ { - "name": "Enabled", + "name": "Enabled_Responsive_Omnibox_Entry_Point", "params": { "endpoint-url": "https://lensfrontend-pa.googleapis.com/v1/crupload", - "omnibox-entry-point": "false", + "omnibox-entry-point": "true", + "omnibox-entry-point-always-visible": "false", "select-text-over-region-trigger-threshold": "0.1", "text-vertical-margin": "12", "use-oauth-for-requests": "true" @@ -5109,25 +5045,6 @@ ] } ], - "ClankLogoPolish": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "Enabled_Large_Logo_Size", - "params": { - "polish_logo_size_large": "true", - "polish_logo_size_medium": "false" - }, - "enable_features": [ - "LogoPolish" - ] - } - ] - } - ], "ClankTabResumpton": [ { "platforms": [ @@ -5180,11 +5097,29 @@ ] } ], - "ClientSideDetectionKeyboardPointerLockRequest": [ + "ClearDeviceDataOnSignOutForManagedUsers": [ + { + "platforms": [ + "ios" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "ClearDeviceDataOnSignOutForManagedUsers" + ] + } + ] + } + ], + "ClearGrShaderDiskCacheOnInvalidPrefix": [ { "platforms": [ "android", "chromeos", + "chromeos_lacros", + "fuchsia", + "ios", "linux", "mac", "windows" @@ -5193,13 +5128,31 @@ { "name": "Enabled", "enable_features": [ - "ClientSideDetectionKeyboardPointerLockRequest" + "ClearGrShaderDiskCacheOnInvalidPrefix" ] } ] } ], - "ClientSideDetectionModelImageEmbedder": [ + "ClearUndecryptablePasswords": [ + { + "platforms": [ + "mac", + "windows", + "linux", + "ios" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "ClearUndecryptablePasswords" + ] + } + ] + } + ], + "ClientSideDetectionKeyboardPointerLockRequest": [ { "platforms": [ "android", @@ -5212,7 +5165,7 @@ { "name": "Enabled", "enable_features": [ - "ClientSideDetectionModelImageEmbedder" + "ClientSideDetectionKeyboardPointerLockRequest" ] } ] @@ -5315,6 +5268,29 @@ ] } ], + "CoalesceSelectionchangeEvent": [ + { + "platforms": [ + "android", + "android_weblayer", + "android_webview", + "chromeos", + "chromeos_lacros", + "fuchsia", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "CoalesceSelectionchangeEvent" + ] + } + ] + } + ], "CodeBasedRBD": [ { "platforms": [ @@ -5379,7 +5355,6 @@ "enable_persisted_tab_data_maintenance": "true", "enable_price_notification": "true", "enable_price_tracking": "true", - "price_tracking_with_optimization_guide": "true", "use_root_bookmark_as_default": "true" }, "enable_features": [ @@ -5424,7 +5399,6 @@ "params": { "enable_persisted_tab_data_maintenance": "true", "enable_price_tracking": "true", - "price_tracking_with_optimization_guide": "true", "use_root_bookmark_as_default": "true" }, "enable_features": [ @@ -5437,7 +5411,6 @@ "params": { "enable_persisted_tab_data_maintenance": "true", "enable_price_tracking": "true", - "price_tracking_with_optimization_guide": "true", "use_cct": "false", "use_root_bookmark_as_default": "true" }, @@ -5453,7 +5426,6 @@ "autodismiss_enabled": "true", "enable_persisted_tab_data_maintenance": "true", "enable_price_tracking": "true", - "price_tracking_with_optimization_guide": "true", "use_root_bookmark_as_default": "true" }, "enable_features": [ @@ -5469,7 +5441,6 @@ "enable_persisted_tab_data_maintenance": "true", "enable_price_notification": "true", "enable_price_tracking": "true", - "price_tracking_with_optimization_guide": "true", "use_root_bookmark_as_default": "true" }, "enable_features": [ @@ -5500,7 +5471,6 @@ "enable_persisted_tab_data_maintenance": "true", "enable_price_notification": "true", "enable_price_tracking": "true", - "price_tracking_with_optimization_guide": "true", "use_root_bookmark_as_default": "true" }, "enable_features": [ @@ -5519,7 +5489,6 @@ "enable_persisted_tab_data_maintenance": "true", "enable_price_notification": "true", "enable_price_tracking": "true", - "price_tracking_with_optimization_guide": "true", "use_cct": "false", "use_root_bookmark_as_default": "true" }, @@ -5533,6 +5502,26 @@ ] } ], + "CombinedWebViewOptimizations": [ + { + "platforms": [ + "android_webview" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "AvoidResourceRequestCopies", + "CreateSpareRendererOnBrowserContextCreation", + "EnsureExistingRendererAlive", + "LazyBindJsInjection", + "SkipUnnecessaryThreadHopsForParseHeaders", + "WebViewOptimizeXrwNavigationFlow" + ] + } + ] + } + ], "CommerceHintAndroid": [ { "platforms": [ @@ -5597,6 +5586,23 @@ ] } ], + "ComposeEnableNudgeForUnspecifiedHint": [ + { + "platforms": [ + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Disabled", + "disable_features": [ + "ComposeEnableNudgeForUnspecifiedHint" + ] + } + ] + } + ], "ComposeModelQualityLogging": [ { "platforms": [ @@ -5642,6 +5648,46 @@ ] } ], + "ComposeProactiveNudgePosition": [ + { + "platforms": [ + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled_CursorNudge", + "params": { + "proactive_nudge_compact_ui": "true", + "proactive_nudge_delay_milliseconds": "1000", + "proactive_nudge_force_show_probability": "0.02", + "proactive_nudge_show_probability": "0.0" + }, + "enable_features": [ + "AutofillCaretExtraction", + "ComposeProactiveNudge", + "EnableComposeNudgeAtCursor" + ] + }, + { + "name": "Enabled_FieldNudge", + "params": { + "proactive_nudge_delay_milliseconds": "1000", + "proactive_nudge_force_show_probability": "0.02", + "proactive_nudge_show_probability": "0.0" + }, + "enable_features": [ + "ComposeProactiveNudge" + ], + "disable_features": [ + "AutofillCaretExtraction", + "EnableComposeNudgeAtCursor" + ] + } + ] + } + ], "ComposeUiRefinement": [ { "platforms": [ @@ -5837,8 +5883,8 @@ ], "experiments": [ { - "name": "Disabled", - "disable_features": [ + "name": "Enabled_20240621", + "enable_features": [ "CookieAccessDetailsNotificationDeDuping" ] } @@ -5966,6 +6012,21 @@ ] } ], + "CrOSAudioHfpMicSrToggle": [ + { + "platforms": [ + "chromeos" + ], + "experiments": [ + { + "name": "Enabled_20240625", + "enable_features": [ + "AudioHFPMicSRToggle" + ] + } + ] + } + ], "CrOSBluetoothA2dpAacCodec": [ { "platforms": [ @@ -6041,21 +6102,6 @@ ] } ], - "CrOSBluetoothMicophoneSuperResolution": [ - { - "platforms": [ - "chromeos" - ], - "experiments": [ - { - "name": "Enabled_3", - "enable_features": [ - "CrOSLateBootAudioHFPMicSR" - ] - } - ] - } - ], "CrOSEnforceSystemAec": [ { "platforms": [ @@ -6317,23 +6363,6 @@ "CrOSLockMainProgramText" ] }, - { - "name": "EnabledEarlyDiscardAggressiveGradient_20240605", - "params": { - "CompleteStallMs": "700", - "MaxLastVisibleDurationSeconds": "3600", - "MinLastVisibleDurationSeconds": "300", - "PartialStallMs": "20" - }, - "enable_features": [ - "CrOSLateBootDiscardStaleAtModeratePressure", - "CrOSLateBootOverrideLmkdPsiDefaults" - ], - "disable_features": [ - "CrOSLateBootPsiAdjustAvailable", - "CrOSLockMainProgramText" - ] - }, { "name": "EnabledAvailableAdjustmentPsi_20240605", "enable_features": [ @@ -6396,19 +6425,6 @@ "CrOSLateBootDiscardStaleAtModeratePressure", "CrOSLateBootOverrideLmkdPsiDefaults" ] - }, - { - "name": "EnabledAvailableAdjustmentPsiWithEarlyDiscardAndMlockChrome_20240605", - "params": { - "CompleteStallMs": "700", - "PartialStallMs": "20" - }, - "enable_features": [ - "CrOSLateBootDiscardStaleAtModeratePressure", - "CrOSLateBootOverrideLmkdPsiDefaults", - "CrOSLateBootPsiAdjustAvailable", - "CrOSLockMainProgramText" - ] } ] } @@ -6597,21 +6613,6 @@ ] } ], - "CreateSpareRendererOnBrowserContextCreation": [ - { - "platforms": [ - "android_webview" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "CreateSpareRendererOnBrowserContextCreation" - ] - } - ] - } - ], "CreditCardInfobarDisplayLength": [ { "platforms": [ @@ -6767,65 +6768,105 @@ ] } ], - "DIPSDisablePrepopulation": [ + "DIPSStatefulBounceEnforcement": [ { "platforms": [ "android", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" ], "experiments": [ { - "name": "Disabled", - "disable_features": [ - "DipsPrepopulation" + "name": "Enabled_v0", + "params": { + "delete": "true", + "triggering_action": "stateful_bounce" + }, + "enable_features": [ + "DIPS" ] } ] } ], - "DIPSStatefulBounceEnforcement": [ + "DOMParserIncludeShadowRoots": [ { "platforms": [ "android", "chromeos", + "chromeos_lacros", + "fuchsia", "linux", "mac", "windows" ], "experiments": [ { - "name": "Enabled_v0", - "params": { - "delete": "true", - "triggering_action": "stateful_bounce" - }, - "enable_features": [ - "DIPS" + "name": "Disabled", + "disable_features": [ + "DOMParserIncludeShadowRoots" ] } ] } ], - "DOMParserIncludeShadowRoots": [ + "DOMStorageReliabilityEnhancements": [ { "platforms": [ - "android", + "windows", + "mac", "chromeos", "chromeos_lacros", "fuchsia", + "linux", + "ios", + "android", + "android_weblayer", + "android_webview" + ], + "experiments": [ + { + "name": "BothEnabled", + "enable_features": [ + "CoalesceStorageAreaCommits", + "DomStorageSmartFlushing" + ] + }, + { + "name": "CoalescingEnabled", + "enable_features": [ + "CoalesceStorageAreaCommits" + ], + "disable_features": [ + "DomStorageSmartFlushing" + ] + }, + { + "name": "CheckpointingEnabled", + "enable_features": [ + "DomStorageSmartFlushing" + ], + "disable_features": [ + "CoalesceStorageAreaCommits" + ] + } + ] + } + ], + "DTCKeyUploadedBySharedAPIEnabled": [ + { + "platforms": [ "linux", "mac", "windows" ], "experiments": [ { - "name": "Disabled", - "disable_features": [ - "DOMParserIncludeShadowRoots" + "name": "Enabled", + "enable_features": [ + "DTCKeyUploadedBySharedAPIEnabled" ] } ] @@ -6849,6 +6890,24 @@ ] } ], + "DangerousDownloadInterstitial": [ + { + "platforms": [ + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "DangerousDownloadInterstitial" + ] + } + ] + } + ], "DataControlsDesktop": [ { "platforms": [ @@ -6868,6 +6927,25 @@ ] } ], + "DataControlsScreenshotProtection": [ + { + "platforms": [ + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "EnableScreenshotProtection" + ] + } + ] + } + ], "DbscPhase1aStudy": [ { "platforms": [ @@ -6968,6 +7046,21 @@ ] } ], + "DefaultBrowserPromoIPadStudy": [ + { + "platforms": [ + "ios" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "DefaultBrowserPromoIPadExperimentalString" + ] + } + ] + } + ], "DefaultBrowserPromptRefreshLaunch": [ { "platforms": [ @@ -6975,16 +7068,16 @@ ], "experiments": [ { - "name": "V2Enabled1_20240516", + "name": "V2Enabled3V2_20240625", "params": { - "group_name": "enabled-v2-arm-1", + "group_name": "enabled-v2-arm-3", "max_prompt_count": "5", "reprompt_duration": "21d", "reprompt_duration_multiplier": "1", "show_app_menu_chip": "false", - "show_app_menu_item": "false", + "show_app_menu_item": "true", "show_info_bar": "true", - "updated_info_bar_copy": "true" + "updated_info_bar_copy": "false" }, "enable_features": [ "DefaultBrowserPromptRefresh", @@ -7049,18 +7142,58 @@ "experiments": [ { "name": "Enabled", - "params": { - "BlockListByDevice": "", - "BlockListByModel": "" - }, + "params": { + "BlockListByDevice": "", + "BlockListByModel": "" + }, + "enable_features": [ + "DefaultPassthroughCommandDecoder" + ] + } + ] + } + ], + "DeferSpeculativeRFHCreation": [ + { + "platforms": [ + "android", + "android_webview", + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "DeferSpeculativeRFHCreation" + ] + } + ] + } + ], + "DeferredSparerRendererForTopChromeWebUI": [ + { + "platforms": [ + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", "enable_features": [ - "DefaultPassthroughCommandDecoder" + "DeferredSpareRendererForTopChromeWebUI" ] } ] } ], - "DeferredSparerRendererForTopChromeWebUI": [ + "DelayMediaSinkDiscovery": [ { "platforms": [ "chromeos", @@ -7073,7 +7206,7 @@ { "name": "Enabled", "enable_features": [ - "DeferredSpareRendererForTopChromeWebUI" + "DelayMediaSinkDiscovery" ] } ] @@ -7129,6 +7262,21 @@ ] } ], + "DeskBarWindowOcclusionOptimization": [ + { + "platforms": [ + "chromeos" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "DeskBarWindowOcclusionOptimization" + ] + } + ] + } + ], "DeskButton": [ { "platforms": [ @@ -7189,7 +7337,7 @@ "name": "Enabled_DefaultOn", "params": { "link_capturing_guardrail_storage_duration": "60", - "on_by_default": "true" + "link_capturing_state": "on_by_default" }, "enable_features": [ "DesktopPWAsLinkCapturing" @@ -7199,7 +7347,7 @@ "name": "Enabled_DefaultOff", "params": { "link_capturing_guardrail_storage_duration": "60", - "on_by_default": "false" + "link_capturing_state": "off_by_default" }, "enable_features": [ "DesktopPWAsLinkCapturing" @@ -7296,7 +7444,7 @@ ] } ], - "DesktopOmniboxCalculatorProvider": [ + "DesktopNtpTabResumption": [ { "platforms": [ "chromeos", @@ -7307,15 +7455,19 @@ ], "experiments": [ { - "name": "Enabled", + "name": "TabResumption_Random", + "params": { + "use_random_score": "true" + }, "enable_features": [ - "OmniboxCalcProvider" + "NtpMostRelevantTabResumptionModule", + "SegmentationPlatformURLVisitResumptionRanker" ] } ] } ], - "DesktopOmniboxKeywordProvider": [ + "DesktopOmniboxCalculatorProvider": [ { "platforms": [ "chromeos", @@ -7326,18 +7478,15 @@ ], "experiments": [ { - "name": "enabled", - "params": { - "VitalizeAutocompletedKeywordsScore": "900" - }, + "name": "Enabled", "enable_features": [ - "OmniboxVitalizeAutocompletedKeywords" + "OmniboxCalcProvider" ] } ] } ], - "DesktopOmniboxMLScoringWithLinearMapping": [ + "DesktopOmniboxKeywordProvider": [ { "platforms": [ "chromeos", @@ -7348,45 +7497,12 @@ ], "experiments": [ { - "name": "Enabled_Moderate", - "params": { - "MlUrlScoringShortcutDocumentSignals": "true", - "MlUrlSearchBlending_MappedSearchBlendingGroupingThreshold": "1400", - "MlUrlSearchBlending_MappedSearchBlendingMax": "2800", - "MlUrlSearchBlending_MappedSearchBlendingMin": "600", - "enable_scoring_signals_annotators_for_ml_scoring": "true" - }, - "enable_features": [ - "MlUrlScoring", - "UrlScoringModel" - ] - }, - { - "name": "Enabled_Conservative", - "params": { - "MlUrlScoringShortcutDocumentSignals": "true", - "MlUrlSearchBlending_MappedSearchBlendingGroupingThreshold": "1000", - "MlUrlSearchBlending_MappedSearchBlendingMax": "2000", - "MlUrlSearchBlending_MappedSearchBlendingMin": "0", - "enable_scoring_signals_annotators_for_ml_scoring": "true" - }, - "enable_features": [ - "MlUrlScoring", - "UrlScoringModel" - ] - }, - { - "name": "Enabled_Aggressive", + "name": "enabled", "params": { - "MlUrlScoringShortcutDocumentSignals": "true", - "MlUrlSearchBlending_MappedSearchBlendingGroupingThreshold": "1500", - "MlUrlSearchBlending_MappedSearchBlendingMax": "4000", - "MlUrlSearchBlending_MappedSearchBlendingMin": "1000", - "enable_scoring_signals_annotators_for_ml_scoring": "true" + "VitalizeAutocompletedKeywordsScore": "900" }, "enable_features": [ - "MlUrlScoring", - "UrlScoringModel" + "OmniboxVitalizeAutocompletedKeywords" ] } ] @@ -7484,7 +7600,7 @@ "name": "Enabled", "params": { "guardrail_report_prob": "0.5", - "max_days_to_store_guardrails": "90", + "max_days_to_store_guardrails": "180", "model_and_user_decline_report_prob": "0.5" }, "enable_features": [ @@ -7494,6 +7610,27 @@ ] } ], + "DesktopReEngagement": [ + { + "platforms": [ + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "params": { + "max_active_days": "0", + "max_active_weeks": "0", + "max_monthly_active_days": "2" + }, + "enable_features": [ + "AllowRecentSessionTracking", + "IPH_DesktopReEngagement" + ] + } + ] + } + ], "DesktopWebAppUniversalInstallExperiment": [ { "platforms": [ @@ -7546,34 +7683,11 @@ ] } ], - "DevToolsConsoleInsights": [ - { - "platforms": [ - "chromeos", - "chromeos_lacros", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "DevToolsConsoleInsights_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": [ - "DevToolsConsoleInsights" - ] - } - ] - } - ], - "DevToolsConsoleInsightsDogfood": [ + "DetailsStyling": [ { "platforms": [ + "android", + "android_webview", "chromeos", "chromeos_lacros", "linux", @@ -7582,16 +7696,9 @@ ], "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/", - "opt_in": "false" - }, + "name": "Enabled", "enable_features": [ - "DevToolsConsoleInsightsDogfood" + "DetailsStyling" ] } ] @@ -7716,22 +7823,6 @@ ] } ], - "DisableHangWatcherAndroid": [ - { - "platforms": [ - "android", - "android_webview" - ], - "experiments": [ - { - "name": "Disabled", - "disable_features": [ - "EnableHangWatcher" - ] - } - ] - } - ], "DisableMemoryReclaimerInBackground": [ { "platforms": [ @@ -7833,24 +7924,6 @@ ] } ], - "DisconnectExtensionMessagePortWhenPageEntersBFCache": [ - { - "platforms": [ - "chromeos", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled_20231030", - "enable_features": [ - "DisconnectExtensionMessagePortWhenPageEntersBFCache" - ] - } - ] - } - ], "DiscountConsentV2": [ { "platforms": [ @@ -7898,6 +7971,26 @@ ] } ], + "DlpRegionalizedEndpoints": [ + { + "platforms": [ + "chromeos", + "chromeos_lacros", + "fuchsia", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "DlpRegionalizedEndpoints" + ] + } + ] + } + ], "DnsHttpsSvcbTimeout": [ { "platforms": [ @@ -7973,6 +8066,21 @@ ] } ], + "DontFallbackToDefaultImplementationInAccountManagerFacade": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "DontFallbackToDefaultImplementationInAccountManagerFacade" + ] + } + ] + } + ], "DownloadLater": [ { "platforms": [ @@ -8095,6 +8203,28 @@ ] } ], + "DropUnrecognizedTemplateUrlParameters": [ + { + "platforms": [ + "android_webview", + "android", + "chromeos", + "chromeos_lacros", + "ios", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "DropUnrecognizedTemplateUrlParameters" + ] + } + ] + } + ], "DynamicCrxDownloaderPriority": [ { "platforms": [ @@ -8223,8 +8353,8 @@ { "name": "Enabled", "enable_features": [ - "DrawCutoutEdgeToEdge", - "DrawEdgeToEdge" + "DynamicSafeAreaInsets", + "DynamicSafeAreaInsetsOnScroll" ] } ] @@ -8312,21 +8442,6 @@ ] } ], - "EnableBatchVideoDecodingInRenderer": [ - { - "platforms": [ - "chromeos" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "VideoDecodeBatching" - ] - } - ] - } - ], "EnableConfigurableThreadCacheMultiplier": [ { "platforms": [ @@ -8351,38 +8466,6 @@ ] } ], - "EnableCrossSiteFlagNetworkIsolationKey": [ - { - "platforms": [ - "android", - "chromeos", - "chromeos_lacros", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "EnableCrossSiteFlag", - "enable_features": [ - "EnableCrossSiteFlagNetworkIsolationKey" - ] - }, - { - "name": "EnableFrameSiteSharedOpaque", - "enable_features": [ - "EnableFrameSiteSharedOpaqueNetworkIsolationKey" - ] - }, - { - "name": "CacheClearedControl", - "enable_features": [ - "HttpCacheKeyingExperimentControlGroup" - ] - } - ] - } - ], "EnableCustomInputStreamBufferSize": [ { "platforms": [ @@ -8489,38 +8572,19 @@ { "name": "Enabled", "enable_features": [ - "DrawImmediatelyWhenInteractive" - ] - }, - { - "name": "EnabledV2", - "enable_features": [ - "DrawImmediatelyWhenInteractive" - ] - }, - { - "name": "EnabledV3", - "enable_features": [ - "DrawImmediatelyWhenInteractive" - ] - } - ] - } - ], - "EnableModelExecutionAPI": [ - { - "platforms": [ - "android", - "chromeos", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "EnableModelExecutionAPI" + "DrawImmediatelyWhenInteractive" + ] + }, + { + "name": "EnabledV2", + "enable_features": [ + "DrawImmediatelyWhenInteractive" + ] + }, + { + "name": "EnabledV3", + "enable_features": [ + "DrawImmediatelyWhenInteractive" ] } ] @@ -8533,26 +8597,15 @@ ], "experiments": [ { - "name": "Enabled_20240202", - "params": { - "OneTapForMapsConsentModeParam": "iph" - }, - "enable_features": [ - "EnableOneTapForMaps" - ], - "disable_features": [ - "EnableExpKitTextClassifier" - ], - "min_os_version": "16.4.0" - }, - { - "name": "EnabledWithTC_20240202", + "name": "Enabled_20240709", "params": { "OneTapForMapsConsentModeParam": "iph", - "onetap": "true" + "TCAddressOneTap": "true", + "confidence_score_threshold": "0.9963" }, "enable_features": [ "EnableExpKitTextClassifier", + "EnableExpKitTextClassifierAddress", "EnableOneTapForMaps" ], "min_os_version": "16.4.0" @@ -8600,7 +8653,7 @@ ] } ], - "EnablePixDetectionStudy": [ + "EnablePixPayflow": [ { "platforms": [ "android" @@ -8609,7 +8662,11 @@ { "name": "Enabled", "enable_features": [ - "EnablePixDetection" + "AutofillEnableSyncingOfPixBankAccounts", + "EnablePixDetection", + "EnablePixDetectionOnCopyEvent", + "EnablePixDetectionOnDomContentLoaded", + "EnablePixPayments" ] } ] @@ -8631,6 +8688,25 @@ ] } ], + "EnablePreferencesAccountStorage": [ + { + "platforms": [ + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "EnablePreferencesAccountStorage" + ] + } + ] + } + ], "EnableSessionSerializationOptimizations": [ { "platforms": [ @@ -8747,7 +8823,6 @@ { "platforms": [ "android", - "android_webview", "chromeos", "chromeos_lacros", "linux", @@ -8852,6 +8927,26 @@ ] } ], + "EvictionThrottlesDraw": [ + { + "platforms": [ + "android", + "android_webview", + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "EvictionThrottlesDraw" + ] + } + ] + } + ], "ExcludeTransparentTextsFromBeingLcpEligible": [ { "platforms": [ @@ -8894,21 +8989,6 @@ ] } ], - "ExpandedPrefetchRange": [ - { - "platforms": [ - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "ExpandedPrefetchRange" - ] - } - ] - } - ], "ExperimentalFeaturesVisibilityDesktop": [ { "platforms": [ @@ -8948,25 +9028,6 @@ ] } ], - "ExtensionManifestV2Deprecation": [ - { - "platforms": [ - "chromeos", - "chromeos_lacros", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled_WarningOnly", - "enable_features": [ - "ExtensionManifestV2DeprecationWarning" - ] - } - ] - } - ], "ExtensionPageHats": [ { "platforms": [ @@ -9034,26 +9095,6 @@ ] } ], - "ExtensionSafetyHubAdditionalTriggers": [ - { - "platforms": [ - "chromeos", - "chromeos_lacros", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "SafetyHubExtensionsOffStoreTrigger", - "SafetyHubExtensionsUwSTrigger" - ] - } - ] - } - ], "ExtensionSafetyHubNoPrivacyPracticesTrigger": [ { "platforms": [ @@ -9195,6 +9236,24 @@ ] } ], + "FamilyMemberRoleFeedback": [ + { + "platforms": [ + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled_20240722", + "enable_features": [ + "FetchListFamilyMembersWithCapability", + "UseFamilyMemberRolePrefsForFeedback" + ] + } + ] + } + ], "FastPairHandshakeLongTermRefactor": [ { "platforms": [ @@ -9217,9 +9276,10 @@ ], "experiments": [ { - "name": "Enabled_20231115", + "name": "Enabled_20240711", "params": { "pwa-companion-app-id": "ckdjfcfapbgminighllemapmpdlpihia", + "pwa-companion-device-ids": "08A97F,5A36A5,6EDAF7,9ADB11,A7D7A0,C8E228,D87A3E,F2020E,F58DE7,30346C,7862CE,C193F7,05D40E,02FC97,AB442D,FB19ED,C55C79,2EE57B", "pwa-companion-install-uri": "https://mypixelbuds.google.com/", "pwa-companion-play-store-uri": "https://play.google.com/store/apps/details?id=com.google.android.apps.wearables.maestro.companion" }, @@ -9228,9 +9288,10 @@ ] }, { - "name": "Enabled_20231115_Dogfood", + "name": "Enabled_20240711_Dogfood", "params": { "pwa-companion-app-id": "ckdjfcfapbgminighllemapmpdlpihia", + "pwa-companion-device-ids": "08A97F,5A36A5,6EDAF7,9ADB11,A7D7A0,C8E228,D87A3E,F2020E,F58DE7,30346C,7862CE,C193F7,05D40E,02FC97,AB442D,FB19ED,C55C79,2EE57B", "pwa-companion-install-uri": "https://mypixelbuds.google.com/", "pwa-companion-play-store-uri": "https://play.google.com/store/apps/details?id=com.google.android.apps.wearables.maestro.companion" }, @@ -9242,6 +9303,7 @@ "name": "EnabledWithStagingLinks_Dogfood", "params": { "pwa-companion-app-id": "kncedjianpafagdchkiinagaaokkhpaa", + "pwa-companion-device-ids": "08A97F,5A36A5,6EDAF7,9ADB11,A7D7A0,C8E228,D87A3E,F2020E,F58DE7,30346C,7862CE,C193F7,05D40E,02FC97,AB442D,FB19ED,C55C79,2EE57B", "pwa-companion-install-uri": "https://mypixelbuds-preprod.corp.google.com/", "pwa-companion-play-store-uri": "https://play.google.com/store/apps/details?id=com.google.android.apps.wearables.maestro.companion" }, @@ -9268,6 +9330,21 @@ ] } ], + "FeedContainment": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "FeedContainment" + ] + } + ] + } + ], "FeedLoadingPlaceholder": [ { "platforms": [ @@ -9355,36 +9432,6 @@ ] } ], - "FeedSportsCard": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "Enabled_20230921", - "enable_features": [ - "FeedSportsCard" - ] - } - ] - } - ], - "FeedUserInteractionReliabilityReport": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "Enabled_20230602", - "enable_features": [ - "FeedUserInteractionReliabilityReport" - ] - } - ] - } - ], "FencedFramesEnableCredentialsForAutomaticBeacons": [ { "platforms": [ @@ -9573,26 +9620,22 @@ ] } ], - "FixDataPipeTrapBug": [ + "Floss": [ { "platforms": [ - "android", - "android_webview", - "linux", - "mac", - "windows" + "chromeos" ], "experiments": [ { - "name": "Disabled", - "disable_features": [ - "FixDataPipeTrapBug" + "name": "Enabled", + "enable_features": [ + "Floss" ] } ] } ], - "Floss": [ + "FlossIsAvailabilityCheckNeeded": [ { "platforms": [ "chromeos" @@ -9600,8 +9643,8 @@ "experiments": [ { "name": "Enabled", - "enable_features": [ - "Floss" + "disable_features": [ + "FlossIsAvailabilityCheckNeeded" ] } ] @@ -9793,20 +9836,37 @@ ], "experiments": [ { - "name": "Notification_20240320", + "name": "CounterfactualControl_20240710", + "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": "any", + "IPH_ScalableIphGaming_tracking_only": "true", + "IPH_ScalableIphGaming_x_CustomConditionTriggerEvent": "ScalableIphUnlocked", + "IPH_ScalableIphGaming_x_CustomUiType": "None", + "IPH_ScalableIphGaming_x_CustomVersionNumber": "1" + }, + "enable_features": [ + "IPH_ScalableIphGaming" + ] + }, + { + "name": "Notification_20240710", "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_session_rate": "any", "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_CustomNotificationTitle": "Get 3 months of Minecraft Realms Plus at no cost on your Chromebook", "IPH_ScalableIphGaming_x_CustomUiType": "Notification", "IPH_ScalableIphGaming_x_CustomVersionNumber": "1" }, @@ -9934,17 +9994,18 @@ ] } ], - "GinJavaBridgeMojo": [ + "GlobalMediaControlsUpdatedUI": [ { "platforms": [ - "android", - "android_webview" + "linux", + "mac", + "windows" ], "experiments": [ { "name": "Enabled", "enable_features": [ - "GinJavaBridgeMojo" + "GlobalMediaControlsUpdatedUI" ] } ] @@ -10109,21 +10170,6 @@ ] } ], - "GpuInfoCollectionSeparatePrefetch": [ - { - "platforms": [ - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "GpuInfoCollectionSeparatePrefetch" - ] - } - ] - } - ], "GrCacheLimits": [ { "platforms": [ @@ -10335,6 +10381,27 @@ ] } ], + "HappinessTrackingOffice": [ + { + "platforms": [ + "chromeos" + ], + "experiments": [ + { + "name": "Enabled", + "params": { + "prob": "0.01", + "survey_cycle_length": "90", + "survey_start_date_ms": "1721606400000", + "trigger_id": "ZMEQmwKYE0jBnuKU19R0Uk7d5aG4" + }, + "enable_features": [ + "HappinessTrackingOffice" + ] + } + ] + } + ], "HappinessTrackingOsSettingsSearch": [ { "platforms": [ @@ -10684,63 +10751,23 @@ } ] } - ], - "HatsUnlock": [ - { - "platforms": [ - "chromeos" - ], - "experiments": [ - { - "name": "Enabled", - "params": { - "prob": "0.001", - "survey_cycle_length": "7", - "survey_start_date_ms": "1627801200000", - "trigger_id": "qqZi3hpfx0jBnuKU19R0UA7zE7e4" - }, - "enable_features": [ - "HappinessTrackingUnlock" - ] - } - ] - } - ], - "HeapProfilingAllProcesses": [ - { - "platforms": [ - "mac" - ], - "experiments": [ - { - "name": "EnabledInGPUAndNetwork", - "params": { - "gpu-process-params": "{\"is-supported\":true,\"nonstable-probability\":1,\"sampling-rate\":5000000,\"stable-probability\":1}", - "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}" - }, - "enable_features": [ - "HeapProfilerReporting" - ] - } - ] - }, + ], + "HatsUnlock": [ { "platforms": [ - "chromeos", - "chromeos_lacros", - "linux", - "windows" + "chromeos" ], "experiments": [ { - "name": "EnabledInNetwork", + "name": "Enabled", "params": { - "network-process-params": "{\"is-supported\":true,\"nonstable-probability\":1,\"sampling-rate\":10000000,\"stable-probability\":1}" + "prob": "0.001", + "survey_cycle_length": "7", + "survey_start_date_ms": "1627801200000", + "trigger_id": "qqZi3hpfx0jBnuKU19R0UA7zE7e4" }, "enable_features": [ - "HeapProfilerReporting" + "HappinessTrackingUnlock" ] } ] @@ -10759,44 +10786,29 @@ ], "experiments": [ { - "name": "Enabled", + "name": "Enabled_20240627", + "params": { + "utility-prob-pct": "50", + "utility-process-params": "{\"is-supported\":true,\"sampling-rate-bytes\":1000000}" + }, "enable_features": [ - "HeapProfilerCentralControl" + "HeapProfilerCentralControl", + "HeapProfilerReporting" ] } ] } ], - "HelpAppAppsDiscoveryV2": [ + "HeatmapPalmDetectionStudy": [ { "platforms": [ - "chromeos", - "chromeos_lacros" + "chromeos" ], "experiments": [ { - "name": "AllEnabled", - "enable_features": [ - "HelpAppAppsList", - "HelpAppHomePageAppArticles" - ] - }, - { - "name": "OnlyHomePageAppArticlesEnabled", - "enable_features": [ - "HelpAppHomePageAppArticles" - ], - "disable_features": [ - "HelpAppAppsList" - ] - }, - { - "name": "OnlyAppsListEnabled", + "name": "Enabled", "enable_features": [ - "HelpAppAppsList" - ], - "disable_features": [ - "HelpAppHomePageAppArticles" + "EnableHeatmapPalmDetection" ] } ] @@ -11062,6 +11074,21 @@ ] } ], + "IOSChooseFromDrive": [ + { + "platforms": [ + "ios" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "IOSChooseFromDrive" + ] + } + ] + } + ], "IOSContentNotification": [ { "platforms": [ @@ -11125,16 +11152,16 @@ ] } ], - "IOSDiscoverFeedSportCard": [ + "IOSDisableFullscreenStudy": [ { "platforms": [ "ios" ], "experiments": [ { - "name": "Enabled", - "enable_features": [ - "DiscoverFeedSportCard" + "name": "Disabled", + "disable_features": [ + "DisableFullscreenScrolling" ] } ] @@ -11290,44 +11317,41 @@ ] } ], - "IOSFeedContainment": [ + "IOSFeedSyncPromo": [ { "platforms": [ "ios" ], "experiments": [ { - "name": "Enabled", + "name": "Launched_Vertical_6Impressions", "params": { - "HomeModuleMinimumPadding": "8" + "DiscoverFeedTopSyncPromoStyle": "2", + "autodismissImpressions": "6" }, "enable_features": [ - "EnableFeedContainment" + "EnableDiscoverFeedTopSyncPromo" ] } ] } ], - "IOSFeedSyncPromo": [ + "IOSFollowUIUpdate": [ { "platforms": [ "ios" ], "experiments": [ { - "name": "Launched_Vertical_6Impressions", - "params": { - "DiscoverFeedTopSyncPromoStyle": "2", - "autodismissImpressions": "6" - }, + "name": "Enabled", "enable_features": [ - "EnableDiscoverFeedTopSyncPromo" + "EnableFollowUIUpdate" ] } ] } ], - "IOSFollowUIUpdate": [ + "IOSFullscreenImprovement": [ { "platforms": [ "ios" @@ -11336,13 +11360,13 @@ { "name": "Enabled", "enable_features": [ - "EnableFollowUIUpdate" + "FullscreenImprovement" ] } ] } ], - "IOSFullscreenImprovement": [ + "IOSHomeMemoryImprovements": [ { "platforms": [ "ios" @@ -11351,7 +11375,22 @@ { "name": "Enabled", "enable_features": [ - "FullscreenImprovement" + "HomeMemoryImprovements" + ] + } + ] + } + ], + "IOSInactiveTabButtonRefactoring": [ + { + "platforms": [ + "ios" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "InactiveTabButtonRefactoring" ] } ] @@ -11372,7 +11411,7 @@ ] } ], - "IOSLogApplicationStorageSizeMetrics": [ + "IOSLensWebPageEarlyTransitionEnabled": [ { "platforms": [ "ios" @@ -11381,13 +11420,13 @@ { "name": "Enabled", "enable_features": [ - "LogApplicationStorageSizeMetrics" + "LensWebPageEarlyTransitionEnabled" ] } ] } ], - "IOSMagicStackCollectionView": [ + "IOSLogApplicationStorageSizeMetrics": [ { "platforms": [ "ios" @@ -11396,7 +11435,7 @@ { "name": "Enabled", "enable_features": [ - "IOSMagicStackCollectionView" + "LogApplicationStorageSizeMetrics" ] } ] @@ -11469,6 +11508,21 @@ ] } ], + "IOSParcelTrackingCarrierNumberDetection": [ + { + "platforms": [ + "ios" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "EnableNewParcelTrackingNumberDetection" + ] + } + ] + } + ], "IOSPartitionAllocBackupRefPtr": [ { "platforms": [ @@ -11500,6 +11554,21 @@ ] } ], + "IOSSaveToPhotosImprovements": [ + { + "platforms": [ + "ios" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "SaveToPhotosImprovements" + ] + } + ] + } + ], "IOSSaveUsernameInUff": [ { "platforms": [ @@ -11639,19 +11708,23 @@ ] } ], - "IOSTabResumption": [ + "IOSTabResumption15": [ { "platforms": [ "ios" ], "experiments": [ { - "name": "Enabled", + "name": "Tab_Resumption_15_And_2_20240610", "params": { - "variant": "tab-pickup-threshold-ten-minutes" + "tr15-salient-image": "true", + "tr15-see-more-button": "true" }, "enable_features": [ - "TabPickupThreshold" + "PageContentAnnotations", + "SegmentationPlatformURLVisitResumptionRanker", + "TabResumption1_5", + "TabResumption2" ] } ] @@ -11951,6 +12024,25 @@ ] } ], + "InfoBarIconMonochrome": [ + { + "platforms": [ + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "InfoBarIconMonochrome" + ] + } + ] + } + ], "InputDeviceSettingsSplit": [ { "platforms": [ @@ -12231,6 +12323,25 @@ ] } ], + "KeyboardAndPointerLockPrompt": [ + { + "platforms": [ + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "KeyboardAndPointerLockPrompt" + ] + } + ] + } + ], "KeyboardFocusableScrollers": [ { "platforms": [ @@ -12259,6 +12370,25 @@ ] } ], + "KidsProfile": [ + { + "platforms": [ + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "AllFeatures", + "enable_features": [ + "ForceSafeSearchForUnauthenticatedSupervisedUsers", + "HideGuestModeForSupervisedUsers", + "UncredentialedFilteringFallbackForSupervisedUsers" + ] + } + ] + } + ], "KioskHeartbeatsViaERP": [ { "platforms": [ @@ -12307,6 +12437,30 @@ ] } ], + "LCPPDoubleKey": [ + { + "platforms": [ + "android", + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "params": { + "lcpp_initiator_origin_histogram_sliding_window_size": "10000", + "lcpp_initiator_origin_max_histogram_buckets": "100" + }, + "enable_features": [ + "LCPPInitiatorOrigin" + ] + } + ] + } + ], "LCPPFontURLPredictor": [ { "platforms": [ @@ -12544,21 +12698,6 @@ ] } ], - "LazyBindJsInjection": [ - { - "platforms": [ - "android_webview" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "LazyBindJsInjection" - ] - } - ] - } - ], "LazyBlinkTimezoneInit": [ { "platforms": [ @@ -12937,28 +13076,16 @@ ] } ], - "MacEfficientFileFlush": [ + "MacAppCodeSignSafeUpdates": [ { "platforms": [ "mac" ], "experiments": [ { - "name": "EnabledFsyncOnly", - "params": { - "MacEfficientFileFlushUseBarrier": "false" - }, - "enable_features": [ - "MacEfficientFileFlush" - ] - }, - { - "name": "EnabledBarrierFsync", - "params": { - "MacEfficientFileFlushUseBarrier": "true" - }, + "name": "Enabled", "enable_features": [ - "MacEfficientFileFlush" + "MacAppCodeSignClone" ] } ] @@ -13208,26 +13335,6 @@ ] } ], - "MediaSessionEnterPictureInPicture": [ - { - "platforms": [ - "chromeos", - "chromeos_lacros", - "fuchsia", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "MediaSessionEnterPictureInPicture" - ] - } - ] - } - ], "MeetDevicesMojoServices": [ { "platforms": [ @@ -13331,48 +13438,26 @@ "enable_features": [ "MessagePumpEpoll" ] - } - ] - } - ], - "MessagesPreinstall": [ - { - "platforms": [ - "chromeos" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "MessagesPreinstall" - ] - } - ] - } - ], - "MetricsLogTrimming": [ - { - "platforms": [ - "android", - "android_webview", - "chromeos", - "chromeos_lacros", - "ios", - "linux", - "mac", - "windows" + } + ] + } + ], + "MessagesPreinstall": [ + { + "platforms": [ + "chromeos" ], "experiments": [ { "name": "Enabled", "enable_features": [ - "MetricsLogTrimming" + "MessagesPreinstall" ] } ] } ], - "MetricsServiceDeltaSnapshotInBg": [ + "MetricsLogTrimming": [ { "platforms": [ "android", @@ -13388,19 +13473,20 @@ { "name": "Enabled", "enable_features": [ - "MetricsServiceDeltaSnapshotInBg" + "MetricsLogTrimming" ] } ] } ], - "MetricsTracingCalculationReduction": [ + "MetricsServiceDeltaSnapshotInBg": [ { "platforms": [ "android", "android_webview", "chromeos", "chromeos_lacros", + "ios", "linux", "mac", "windows" @@ -13409,7 +13495,7 @@ { "name": "Enabled", "enable_features": [ - "MetricsTracingCalculationReduction" + "MetricsServiceDeltaSnapshotInBg" ] } ] @@ -13484,6 +13570,7 @@ }, "enable_features": [ "MinorModeRestrictionsForHistorySyncOptIn", + "PrefetchSystemCapabilitiesOnAppStartup", "PrefetchSystemCapabilitiesOnFirstRun", "UseSystemCapabilitiesForMinorModeRestrictions" ] @@ -13510,28 +13597,6 @@ ] } ], - "MojoBindingsInlineSLS": [ - { - "platforms": [ - "android", - "android_webview", - "chromeos", - "chromeos_lacros", - "ios", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "MojoBindingsInlineSLS" - ] - } - ] - } - ], "MojoChannelAssociatedCrashesOnSendError": [ { "platforms": [ @@ -13576,27 +13641,6 @@ ] } ], - "MojoFixAssociatedHandleLeak": [ - { - "platforms": [ - "android", - "android_webview", - "chromeos", - "chromeos_lacros", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Disabled", - "disable_features": [ - "MojoFixAssociatedHandleLeak" - ] - } - ] - } - ], "MojoInlineMessagePayloads": [ { "platforms": [ @@ -13661,6 +13705,22 @@ ] } ], + "MojoUseBinder": [ + { + "platforms": [ + "android", + "android_webview" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "MojoUseBinder" + ] + } + ] + } + ], "MouseDragOnCancelledMouseMove": [ { "platforms": [ @@ -13767,6 +13827,15 @@ "enable_features": [ "NavBarColorMatchesTabBackground" ] + }, + { + "name": "Enabled_DisabledAnimation", + "params": { + "color_animation_disabled": "true" + }, + "enable_features": [ + "NavBarColorMatchesTabBackground" + ] } ] } @@ -13778,10 +13847,10 @@ ], "experiments": [ { - "name": "Enabled_20240522", + "name": "Enabled_20240703", "params": { "intersection_observer_delay": "1000ms", - "max_intersection_observations": "345", + "max_intersection_observations": "120", "random_anchor_sampling_period": "1" }, "enable_features": [ @@ -13791,6 +13860,21 @@ ] } ], + "NavigationPredictorNewViewportFeatures": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "NavigationPredictorNewViewportFeatures" + ] + } + ] + } + ], "NearbyBleV2": [ { "platforms": [ @@ -13806,6 +13890,36 @@ ] } ], + "NearbyBleV2GattServer": [ + { + "platforms": [ + "chromeos" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "EnableNearbyBleV2GattServer" + ] + } + ] + } + ], + "NearbyMdns": [ + { + "platforms": [ + "chromeos" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "EnableNearbyMdns" + ] + } + ] + } + ], "NearbyShareNameEnabled": [ { "platforms": [ @@ -13852,6 +13966,21 @@ ] } ], + "NearbySharingWifiDirect": [ + { + "platforms": [ + "chromeos" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "NearbySharingWifiDirect" + ] + } + ] + } + ], "NetAdapterMaxBufSize": [ { "platforms": [ @@ -13948,35 +14077,35 @@ ] } ], - "NewPresentationFeedbackTimeStamps": [ + "NoPasswordSuggestionFiltering": [ { "platforms": [ - "mac" + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" ], "experiments": [ { "name": "Enabled", "enable_features": [ - "NewPresentationFeedbackTimeStamps" + "NoPasswordSuggestionFiltering" ] } ] } ], - "NoPasswordSuggestionFiltering": [ + "NoPreReadMainDll": [ { "platforms": [ - "chromeos", - "chromeos_lacros", - "linux", - "mac", "windows" ], "experiments": [ { "name": "Enabled", "enable_features": [ - "NoPasswordSuggestionFiltering" + "NoPreReadMainDll" ] } ] @@ -14089,26 +14218,6 @@ ] } ], - "NormalPriorityImageDecoding": [ - { - "platforms": [ - "chromeos", - "chromeos_lacros", - "fuchsia", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "NormalPriorityImageDecoding" - ] - } - ] - } - ], "NotReachedIsFatal": [ { "platforms": [ @@ -14162,98 +14271,56 @@ ] } ], - "NtpHistoryClusters": [ + "OidcAuthProfileManagement": [ { "platforms": [ - "chromeos", - "chromeos_lacros", "linux", "mac", "windows" ], "experiments": [ { - "name": "Redesigned_Quests_WithHaTS_20240105", - "params": { - "NtpHistoryClustersModuleCategoriesBoostlistParam": "/m/testparsinglogicboost,/m/testparsinglogicboost-2", - "NtpHistoryClustersModuleScoreThresholdParam": "-0.25", - "NtpModuleIgnoredHaTSDelayTimeParam": "12", - "NtpModulesInteractionBasedSurveyEligibleIdsParam": "{\"disable\":{\"history_clusters\":\"abc\"},\"dismiss\":{\"history_clusters\":\"abc\"},\"ignore\":{\"history_clusters\":\"abc\"},\"use\":{\"history_clusters\":\"abc\"}}", - "NtpModulesOrderParam": "drive", - "NtpRealboxWidthBehaviorParam": "wide", - "probability": "1.0" - }, + "name": "Enabled", "enable_features": [ - "HappinessTrackingSurveysForDesktopNtpModules", - "NtpChromeCartInHistoryClusterModule", - "NtpDriveModuleShowSixFiles", - "NtpHistoryClustersModule", - "NtpHistoryClustersModuleCategories", - "NtpHistoryClustersModuleSuggestionChipHeader", - "NtpHistoryClustersModuleUseModelRanking", - "NtpModulesOrder", - "NtpModulesRedesigned", - "NtpRealboxIsTall", - "NtpRealboxWidthBehavior" + "OidcAuthProfileManagement" ] } ] } ], - "NtpTabResumption": [ + "OmitBlurEventOnElementRemoval": [ { "platforms": [ + "android", "chromeos", "chromeos_lacros", + "fuchsia", "linux", "mac", "windows" ], "experiments": [ { - "name": "Enabled", - "enable_features": [ - "NtpTabResumptionModule" - ] + "name": "Enabled" } ] } ], - "OidcAuthProfileManagement": [ + "OmniboxActionsInSuggestIOS": [ { "platforms": [ - "linux", - "mac", - "windows" + "ios" ], "experiments": [ { "name": "Enabled", "enable_features": [ - "OidcAuthProfileManagement" + "OmniboxIOSActionsInSuggest" ] } ] } ], - "OmitBlurEventOnElementRemoval": [ - { - "platforms": [ - "android", - "chromeos", - "chromeos_lacros", - "fuchsia", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled" - } - ] - } - ], "OmniboxAsyncViewInflation": [ { "platforms": [ @@ -14348,16 +14415,42 @@ ] } ], - "OmniboxImplementationChangeIOSV2": [ + "OmniboxElegantTextHeight": [ { "platforms": [ - "ios" + "android" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "OmniboxElegantTextHeight" + ] + } + ] + } + ], + "OmniboxFeaturedEnterpriseSiteSearch": [ + { + "platforms": [ + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" ], "experiments": [ + { + "name": "Enabled_IPH", + "enable_features": [ + "ShowFeaturedEnterpriseSiteSearch", + "ShowFeaturedEnterpriseSiteSearchIPH" + ] + }, { "name": "Enabled", "enable_features": [ - "kIOSNewOmniboxImplementation" + "ShowFeaturedEnterpriseSiteSearch" ] } ] @@ -14412,31 +14505,89 @@ ], "experiments": [ { - "name": "Enabled", + "name": "Enabled", + "params": { + "enable_scoring_signals_annotators": "true" + }, + "enable_features": [ + "LogUrlScoringSignals" + ] + } + ] + } + ], + "OmniboxMlUrlPiecewiseMappedScoringDesktop": [ + { + "platforms": [ + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled_AdjustedBy0", + "params": { + "MlUrlPiecewiseMappedSearchBlending": "true", + "MlUrlPiecewiseMappedSearchBlending_BreakPoints": "0,550;0.018,1300;0.14,1398;1,1422", + "MlUrlPiecewiseMappedSearchBlending_GroupingThreshold": "1400", + "MlUrlPiecewiseMappedSearchBlending_RelevanceBias": "0", + "MlUrlScoringShortcutDocumentSignals": "true", + "enable_scoring_signals_annotators_for_ml_scoring": "true" + }, + "enable_features": [ + "MlUrlPiecewiseMappedSearchBlending", + "MlUrlScoring", + "UrlScoringModel" + ] + }, + { + "name": "Enabled_DemotedBy50", + "params": { + "MlUrlPiecewiseMappedSearchBlending": "true", + "MlUrlPiecewiseMappedSearchBlending_BreakPoints": "0,550;0.018,1250;0.14,1348;1,1422", + "MlUrlPiecewiseMappedSearchBlending_GroupingThreshold": "1350", + "MlUrlPiecewiseMappedSearchBlending_RelevanceBias": "0", + "MlUrlScoringShortcutDocumentSignals": "true", + "enable_scoring_signals_annotators_for_ml_scoring": "true" + }, + "enable_features": [ + "MlUrlPiecewiseMappedSearchBlending", + "MlUrlScoring", + "UrlScoringModel" + ] + }, + { + "name": "Enabled_PromotedBy100", "params": { - "enable_scoring_signals_annotators": "true" + "MlUrlPiecewiseMappedSearchBlending": "true", + "MlUrlPiecewiseMappedSearchBlending_BreakPoints": "0,550;0.018,1400;0.14,1498;1,1522", + "MlUrlPiecewiseMappedSearchBlending_GroupingThreshold": "1500", + "MlUrlPiecewiseMappedSearchBlending_RelevanceBias": "0", + "MlUrlScoringShortcutDocumentSignals": "true", + "enable_scoring_signals_annotators_for_ml_scoring": "true" }, "enable_features": [ - "LogUrlScoringSignals" + "MlUrlPiecewiseMappedSearchBlending", + "MlUrlScoring", + "UrlScoringModel" ] - } - ] - } - ], - "OmniboxMlScoringWithCachingDesktop": [ - { - "platforms": [ - "chromeos", - "chromeos_lacros", - "linux", - "mac", - "windows" - ], - "experiments": [ + }, { - "name": "Enabled", + "name": "Enabled_PromotedBy50", + "params": { + "MlUrlPiecewiseMappedSearchBlending": "true", + "MlUrlPiecewiseMappedSearchBlending_BreakPoints": "0,550;0.018,1350;0.14,1448;1,1472", + "MlUrlPiecewiseMappedSearchBlending_GroupingThreshold": "1450", + "MlUrlPiecewiseMappedSearchBlending_RelevanceBias": "0", + "MlUrlScoringShortcutDocumentSignals": "true", + "enable_scoring_signals_annotators_for_ml_scoring": "true" + }, "enable_features": [ - "MlUrlScoreCaching" + "MlUrlPiecewiseMappedSearchBlending", + "MlUrlScoring", + "UrlScoringModel" ] } ] @@ -14675,51 +14826,6 @@ ] } ], - "OmniboxZeroSuggestPrefetchingAndroid": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "Enabled_ZPSPrefetchOnSRP", - "enable_features": [ - "ZeroSuggestPrefetchingOnSRP" - ], - "disable_features": [ - "ZeroSuggestPrefetchingOnWeb" - ] - }, - { - "name": "Enabled_ZPSPrefetchOnSRPAndWeb", - "enable_features": [ - "ZeroSuggestPrefetchingOnSRP", - "ZeroSuggestPrefetchingOnWeb" - ] - } - ] - } - ], - "OnBeginFrameAcks": [ - { - "platforms": [ - "android", - "chromeos", - "chromeos_lacros", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "OnBeginFrameAcks" - ] - } - ] - } - ], "OneCopyLegacyMPVideoFrameUploadViaSI": [ { "platforms": [ @@ -14972,28 +15078,85 @@ ] } ], - "OpaqueResponseBlockingV02": [ + "OptGuideBatchSRPTuning": [ { "platforms": [ "android", "chromeos", "chromeos_lacros", - "fuchsia", + "ios", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled_20240624", + "params": { + "max_urls_for_srp_fetch": "10" + }, + "enable_features": [ + "OptimizationHintsFetchingSRP" + ] + } + ] + } + ], + "OptGuideURLCacheSize": [ + { + "platforms": [ + "android", + "chromeos", + "chromeos_lacros", + "ios", "linux", "mac", "windows" ], + "experiments": [ + { + "name": "Enabled_20240625", + "params": { + "max_url_keyed_hint_cache_size": "50" + }, + "enable_features": [ + "OptimizationHints" + ] + } + ] + } + ], + "OptimizeAssociateWindowsAndroid": [ + { + "platforms": [ + "android" + ], "experiments": [ { "name": "Enabled", "enable_features": [ - "OpaqueResponseBlockingV02" + "OptimizeAssociateWindowsAndroid" ] - }, + } + ] + } + ], + "OptimizeParsingDataUrls": [ + { + "platforms": [ + "android", + "android_webview", + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" + ], + "experiments": [ { - "name": "Control", - "disable_features": [ - "OpaqueResponseBlockingV02" + "name": "Enabled_20240711", + "enable_features": [ + "OptimizeParsingDataUrls" ] } ] @@ -15044,6 +15207,18 @@ "ReadAloudTapToSeek", "SegmentationPlatformAdaptiveToolbarV2Feature" ] + }, + { + "name": "Segmentation_Fixed_Random_6_Button_Forced_Refresh_60_Days_20240703", + "enable_features": [ + "AdaptiveButtonInTopToolbarAddToBookmarks", + "AdaptiveButtonInTopToolbarCustomizationV2", + "AdaptiveButtonInTopToolbarTranslate", + "IPH_ReadAloudExpandedPlayerFeature", + "ReadAloudBackgroundPlayback", + "ReadAloudInMultiWindow", + "SegmentationPlatformAdaptiveToolbarV2Feature" + ] } ] } @@ -15130,11 +15305,43 @@ ] } ], + "OverrideAndroidOmniboxSpareRendererDelay": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled_500ms", + "params": { + "omnibox_spare_renderer_delay_ms": "500" + }, + "enable_features": [ + "OverrideAndroidOmniboxSpareRendererDelay" + ] + } + ] + } + ], + "OzonePlatformAuto": [ + { + "platforms": [ + "linux" + ], + "experiments": [ + { + "name": "Enabled_Dogfood", + "enable_features": [ + "AllowWindowDragUsingSystemDragDrop", + "OverrideDefaultOzonePlatformHintToAuto" + ] + } + ] + } + ], "PMProcessPriorityPolicy": [ { "platforms": [ - "android", - "android_webview", "chromeos", "chromeos_lacros", "linux", @@ -15627,26 +15834,47 @@ { "platforms": [ "android", - "android_weblayer", "chromeos", "chromeos_lacros", - "fuchsia", "linux", "mac", "windows" ], "experiments": [ { - "name": "enabled_triple_nik_cross_site_flag_nak_rollout", + "//0": "This feature has shipped for Chrome but not for ", + "//1": "Chromium embedders, so the corresponding feature ", + "//2": "flag value is false but we rely on this entry to ", + "//3": "enable the feature for most types of tests", + "name": "EnableFeatureForTests", "enable_features": [ - "PartitionConnectionsByNetworkIsolationKey", - "PartitionDomainReliabilityByNetworkIsolationKey" + "PartitionConnectionsByNetworkIsolationKey" ], "disable_features": [] } ] } ], + "PartitionVisitedLinkDatabase": [ + { + "platforms": [ + "android", + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "PartitionVisitedLinkDatabase", + "enable_features": [ + "PartitionVisitedLinkDatabase" + ] + } + ] + } + ], "PassHistogramSharedMemoryOnLaunch": [ { "platforms": [ @@ -15971,14 +16199,99 @@ ] }, { - "name": "EnabledGroupC_08222019", - "params": { - "GraphWalkBackoffTimeSec": "180", - "NodeInvisibleTimeSec": "3600", - "NodeTrimBackoffTimeSec": "7200" - }, + "name": "EnabledGroupC_08222019", + "params": { + "GraphWalkBackoffTimeSec": "180", + "NodeInvisibleTimeSec": "3600", + "NodeTrimBackoffTimeSec": "7200" + }, + "enable_features": [ + "TrimOnMemoryPressure" + ] + } + ] + } + ], + "PerfCombined2024": [ + { + "platforms": [ + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "ExpandedPrefetchRange", + "FledgeEnableWALForInterestGroupStorage", + "GpuInfoCollectionSeparatePrefetch", + "MojoBindingsInlineSLS", + "RunTasksByBatches", + "SharedStorageAPIEnableWALForDatabase", + "SqlWALModeOnDipsDatabase", + "SqlWALModeOnSegmentationDatabase" + ] + } + ] + }, + { + "platforms": [ + "mac" + ], + "experiments": [ + { + "name": "Enabled", + "params": { + "MacEfficientFileFlushUseBarrier": "true" + }, + "enable_features": [ + "FledgeEnableWALForInterestGroupStorage", + "MacEfficientFileFlush", + "MojoBindingsInlineSLS", + "NumberOfCoresWithCpuSecurityMitigation", + "SharedStorageAPIEnableWALForDatabase", + "SqlWALModeOnDipsDatabase", + "SqlWALModeOnSegmentationDatabase" + ] + } + ] + }, + { + "platforms": [ + "chromeos", + "chromeos_lacros", + "linux", + "fuchsia", + "android_webview" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "FledgeEnableWALForInterestGroupStorage", + "MojoBindingsInlineSLS", + "SharedStorageAPIEnableWALForDatabase", + "SqlWALModeOnDipsDatabase", + "SqlWALModeOnSegmentationDatabase" + ] + } + ] + }, + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", "enable_features": [ - "TrimOnMemoryPressure" + "FledgeEnableWALForInterestGroupStorage", + "MojoBindingsInlineSLS", + "SharedStorageAPIEnableWALForDatabase", + "SqlWALModeOnDipsDatabase", + "SqlWALModeOnSegmentationDatabase" + ], + "disable_features": [ + "EnableHangWatcher" ] } ] @@ -16048,6 +16361,26 @@ ] } ], + "PerformanceInterventionMetricsStudy": [ + { + "platforms": [ + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled_20240626", + "enable_features": [ + "IPH_PerformanceInterventionDialogFeature", + "PerformanceIntervention" + ] + } + ] + } + ], "PeripheralCustomization": [ { "platforms": [ @@ -16066,6 +16399,46 @@ ] } ], + "PermissionElementPromptPositioning": [ + { + "platforms": [ + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "NearElement", + "params": { + "PermissionElementPromptPositioningParam": "near_element" + }, + "enable_features": [ + "PermissionElementPromptPositioning" + ] + }, + { + "name": "WindowMiddle", + "params": { + "PermissionElementPromptPositioningParam": "window_middle" + }, + "enable_features": [ + "PermissionElementPromptPositioning" + ] + }, + { + "name": "LegacyPrompt", + "params": { + "PermissionElementPromptPositioningParam": "legacy_prompt" + }, + "enable_features": [ + "PermissionElementPromptPositioning" + ] + } + ] + } + ], "PickerUI": [ { "platforms": [ @@ -16085,22 +16458,22 @@ ] } ], - "PlusAddressFallbackFromContextMenu": [ + "PlusAddressCreateSuggestion": [ { "platforms": [ - "android", - "chromeos", - "chromeos_lacros", - "ios", - "linux", - "mac", - "windows" + "android" ], "experiments": [ { - "name": "Enabled", + "name": "PlusAddress_IPH_Enabled", + "params": { + "availability": "any", + "event_trigger": "name:plus_address_create_suggestion_iph_trigger;comparator:<10;window:90;storage:360", + "event_used": "name:plus_address_create_suggestion_accepted;comparator:<2;window:90;storage:360", + "session_rate": "<1" + }, "enable_features": [ - "PlusAddressFallbackFromContextMenu" + "IPH_PlusAddressCreateSuggestion" ] } ] @@ -16121,10 +16494,11 @@ { "name": "Enabled", "enable_features": [ + "PlusAddressAffiliations", + "PlusAddressFallbackFromContextMenu", "PlusAddressRefresh", - "PlusAddressRefreshUiInDesktopModal", - "PlusAddressUIRedesign", - "PlusAddressesEnabled" + "PlusAddressesEnabled", + "SyncPlusAddress" ] } ] @@ -16239,7 +16613,6 @@ { "name": "Enabled", "enable_features": [ - "NoPreReadMainDll", "PrefetchVirtualMemoryPolicy" ] } @@ -16381,12 +16754,39 @@ { "name": "Enabled", "enable_features": [ + "AppPreloadServiceAllUserTypes", "PreinstalledWebAppsCoreOnly" ] } ] } ], + "PreloadSystemFonts": [ + { + "platforms": [ + "android", + "chromeos", + "chromeos_lacros", + "fuchsia", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "params": { + "preload_system_fonts_from_page": "false", + "preload_system_fonts_required_memory_gb": "4", + "preload_system_fonts_targets": "[{\"family\":\"arial\",\"weight\":400,\"size\":14,\"csize\":14,\"text\":\"ab\"}]" + }, + "enable_features": [ + "PreloadSystemFonts" + ] + } + ] + } + ], "PreloadTopChromeWebUI": [ { "platforms": [ @@ -16442,6 +16842,29 @@ ] } ], + "Prerender2BookmarkBarTrigger": [ + { + "platforms": [ + "linux", + "mac", + "windows", + "chromeos", + "chromeos_lacros" + ], + "experiments": [ + { + "name": "OnlyMouseDown_20240718", + "params": { + "prerender_bookmarkbar_on_mouse_hover_trigger": "false", + "prerender_bookmarkbar_on_mouse_pressed_trigger": "true" + }, + "enable_features": [ + "BookmarkTriggerForPrerender2" + ] + } + ] + } + ], "Prerender2EarlyDocumentLifecycleUpdate": [ { "platforms": [ @@ -16484,6 +16907,24 @@ ] } ], + "Prerender2NewTabPageAndroidTrigger": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled_20240628", + "params": { + "prerender_new_tab_page_on_touch_trigger": "47" + }, + "enable_features": [ + "NewTabPageAndroidTriggerForPrerender2" + ] + } + ] + } + ], "Prerender2NewTabPageTrigger": [ { "platforms": [ @@ -16495,7 +16936,7 @@ ], "experiments": [ { - "name": "BothMouseDownAndMouseHover_20240610", + "name": "BothMouseDownAndMouseHover_20240617", "params": { "prerender_new_tab_page_on_mouse_hover_trigger": "true", "prerender_new_tab_page_on_mouse_pressed_trigger": "true", @@ -16506,7 +16947,7 @@ ] }, { - "name": "OnlyMouseHover300ms_20240610", + "name": "OnlyMouseHover300ms_20240617", "params": { "prerender_new_tab_page_on_mouse_hover_trigger": "true", "prerender_new_tab_page_on_mouse_pressed_trigger": "false", @@ -16517,7 +16958,7 @@ ] }, { - "name": "OnlyMouseHover200ms_20240610", + "name": "OnlyMouseHover200ms_20240617", "params": { "prerender_new_tab_page_on_mouse_hover_trigger": "true", "prerender_new_tab_page_on_mouse_pressed_trigger": "false", @@ -16528,7 +16969,7 @@ ] }, { - "name": "OnlyMouseDown_20240610", + "name": "OnlyMouseDown_20240617", "params": { "prerender_new_tab_page_on_mouse_hover_trigger": "false", "prerender_new_tab_page_on_mouse_pressed_trigger": "true" @@ -16538,7 +16979,7 @@ ] }, { - "name": "Control_20240610", + "name": "Control_20240617", "disable_features": [ "NewTabPageTriggerForPrerender2" ] @@ -16546,10 +16987,65 @@ ] } ], - "PressAndHoldEscToExitBrowserFullscreen": [ + "Prerender2WarmUpCompositor": [ { "platforms": [ - "chromeos" + "android", + "linux", + "mac", + "windows", + "chromeos", + "chromeos_lacros" + ], + "experiments": [ + { + "name": "DidCommitLoad_20240626", + "params": { + "trigger_point": "did_commit_load" + }, + "enable_features": [ + "Prerender2WarmUpCompositor", + "WarmUpCompositor" + ] + }, + { + "name": "DidDispatchDOMContentLoadedEvent_20240626", + "params": { + "trigger_point": "did_dispatch_dom_content_loaded_event" + }, + "enable_features": [ + "Prerender2WarmUpCompositor", + "WarmUpCompositor" + ] + }, + { + "name": "DidFinishLoad_20240626", + "params": { + "trigger_point": "did_finish_load" + }, + "enable_features": [ + "Prerender2WarmUpCompositor", + "WarmUpCompositor" + ] + }, + { + "name": "Control_20240626", + "disable_features": [ + "Prerender2WarmUpCompositor", + "WarmUpCompositor" + ] + } + ] + } + ], + "PressAndHoldEscToExitBrowserFullscreen0612": [ + { + "platforms": [ + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" ], "experiments": [ { @@ -16875,6 +17371,33 @@ ] } ], + "PrivacySandboxActivityTypeStorage": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "EnabledWithSkipPreFirstTab", + "params": { + "skip-pre-first-tab": "true" + }, + "enable_features": [ + "PrivacySandboxActivityTypeStorage" + ] + }, + { + "name": "EnabledWithoutSkipPreFirstTab", + "params": { + "skip-pre-first-tab": "false" + }, + "enable_features": [ + "PrivacySandboxActivityTypeStorage" + ] + } + ] + } + ], "PrivacySandboxAdsAPIs": [ { "platforms": [ @@ -16928,6 +17451,26 @@ ] } ], + "PrivacySandboxAttestationsLoadPreInstalledComponent": [ + { + "platforms": [ + "android", + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled_PrivacySandboxAttestationsLoadPreInstalledComponent", + "enable_features": [ + "PrivacySandboxAttestationsLoadPreInstalledComponent" + ] + } + ] + } + ], "PrivacySandboxHatsForDesktopM1": [ { "platforms": [ @@ -17025,44 +17568,6 @@ ] } ], - "PrivacySandboxLocalNoticeConfirmation": [ - { - "platforms": [ - "android", - "chromeos", - "chromeos_lacros", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Default_To_OS_Country_Enabled", - "params": { - "default-to-os-country": "true" - }, - "enable_features": [ - "PrivacySandboxLocalNoticeConfirmation" - ] - }, - { - "name": "Default_To_OS_Country_Disabled", - "params": { - "default-to-os-country": "false" - }, - "enable_features": [ - "PrivacySandboxLocalNoticeConfirmation" - ] - }, - { - "name": "Local_Notice_Confirmation_Disabled", - "disable_features": [ - "PrivacySandboxLocalNoticeConfirmation" - ] - } - ] - } - ], "PrivacySandboxProactiveTopicsBlocking": [ { "platforms": [ @@ -17337,30 +17842,15 @@ "disable_features": [ "MigrateSessionsOnNetworkChangeV2", "webViewPropagateNetworkSignals" - ] - }, - { - "name": "SignalNoConnecMigration_20230706", - "enable_features": [ - "webViewPropagateNetworkSignals" - ], - "disable_features": [ - "MigrateSessionsOnNetworkChangeV2" - ] - } - ] - } - ], - "ProtectEncryptionKey": [ - { - "platforms": [ - "windows" - ], - "experiments": [ + ] + }, { - "name": "Enabled", + "name": "SignalNoConnecMigration_20230706", "enable_features": [ - "ProtectEncryptionKey" + "webViewPropagateNetworkSignals" + ], + "disable_features": [ + "MigrateSessionsOnNetworkChangeV2" ] } ] @@ -17400,7 +17890,7 @@ ] } ], - "ProtectedAudienceMultiThreadedSellerWorklet": [ + "ProtectedAudienceMultiThreadedBidderWorklet": [ { "platforms": [ "android", @@ -17414,36 +17904,16 @@ { "name": "TwoThreads", "params": { - "seller_worklet_thread_pool_size": "2" + "bidder_worklet_thread_pool_size_logarithmic_scaling_factor": "1.0" }, "enable_features": [ - "FledgeSellerWorkletThreadPool" - ] - } - ] - } - ], - "ProtectedAudienceScoreAdRenderSize": [ - { - "platforms": [ - "android", - "chromeos", - "chromeos_lacros", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "RenderSizeInScoreAdBrowserSignals" + "FledgeBidderWorkletThreadPool" ] } ] } ], - "ProtectedAudienceStoreBandAKeysInDatabaseStudy": [ + "ProtectedAudienceMultiThreadedSellerWorklet": [ { "platforms": [ "android", @@ -17455,21 +17925,23 @@ ], "experiments": [ { - "name": "Enabled", + "name": "TwoThreads", + "params": { + "seller_worklet_thread_pool_size": "2" + }, "enable_features": [ - "FledgeStoreBandAKeysInDB" + "FledgeSellerWorkletThreadPool" ] } ] } ], - "ProtectedAudiences40ComponentAds": [ + "ProtectedAudienceScoreAdRenderSize": [ { "platforms": [ "android", "chromeos", "chromeos_lacros", - "fuchsia", "linux", "mac", "windows" @@ -17477,11 +17949,8 @@ "experiments": [ { "name": "Enabled", - "params": { - "FledgeAdComponentLimit": "40" - }, "enable_features": [ - "FledgeCustomMaxAuctionAdComponents" + "RenderSizeInScoreAdBrowserSignals" ] } ] @@ -17528,26 +17997,6 @@ ] } ], - "ProtectedAudiencesMultiBid": [ - { - "platforms": [ - "android", - "chromeos", - "chromeos_lacros", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "FledgeMultiBid" - ] - } - ] - } - ], "ProtectedAudiencesPermitCrossOriginTrustedSignals": [ { "platforms": [ @@ -17588,27 +18037,6 @@ ] } ], - "ProtectedAudiencesReportingTimeout": [ - { - "platforms": [ - "android", - "chromeos", - "chromeos_lacros", - "fuchsia", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "FledgeReportingTimeout" - ] - } - ] - } - ], "ProtectedAudiencesUpdateIfOlderThanMs": [ { "platforms": [ @@ -17731,6 +18159,30 @@ ] } ], + "PushMessagingGcmEndpointEnvironment": [ + { + "platforms": [ + "android", + "chromeos", + "chromeos_lacros", + "fuchsia", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled_Dogfood", + "params": { + "PushMessagingGcmEndpointUrl": "https://jmt17.google.com/fcm/send/" + }, + "enable_features": [ + "PushMessagingGcmEndpointEnvironment" + ] + } + ] + } + ], "QUIC": [ { "platforms": [ @@ -17916,9 +18368,9 @@ ], "experiments": [ { - "name": "Enabled_20240514", + "name": "Enabled_20240623", "params": { - "voices_override": "CiMKA3ZmehIQzqHOv8+FzrzPgM6vzr3OuRoCZWwiAkdSKAIwCQoXCgNpdGISBEFyaWEaAml0IgJJVCgCMAoKGAoDaXRjEgVDb3N0YRoCaXQiAklUKAEwCAoaCgNpdGQSB0NvcmFsbG8aAml0IgJJVCgBMAsKGQoDa2RhEgZPY2Vhbm8aAml0IgJJVCgCMAYKGQoDaGViEgbXoNeU16gaAml3IgJJTCgBMAwKHwoDaGVjEgzXkNeV1rnXk9a2150aAml3IgJJTCgCMAsKGQoDaGVkEgbXqdeT15QaAml3IgJJTCgBMAkKHwoDaGVlEgzXkNa115bXlda515EaAml3IgJJTCgCMAcKIgoDbWxjEg/gtKHgtYbgtK/gtY3gtb0aAm1sIgJJTigCMAkKIgoDbWxlEg/gtKTgtJ/gtL7gtJXgtIIaAm1sIgJJTigBMAIKHwoDbWxmEgzgtLXgtL7gtK/gtYEaAm1sIgJJTigCMAwKHwoDbWxtEgzgtKTgtYDgtLDgtIIaAm1sIgJJTigBMAsKHwoDbXJhEgzgpJXgpYvgpLDgpLIaAm1yIgJJTigCMAoKKAoDbXJjEhXgpK7gpLngpL7gpLjgpL7gpJfgpLAaAm1yIgJJTigBMAUKHAoDbXJkEgngpKjgpKbgpYAaAm1yIgJJTigCMAsKHwoDbXJmEgzgpLDgpYHgpKzgpYAaAm1yIgJJTigCMAwKGQoDYWZiEgbFgcSFa2EaAnBsIgJQTCgCMAIKFwoDYm1nEgRNZWNoGgJwbCICUEwoATAMChkKA2ptaxIGQ2htdXJhGgJwbCICUEwoATAKChgKA29kYRIFT2NlYW4aAnBsIgJQTCgCMAgKGgoDemZnEgdKZXppb3JvGgJwbCICUEwoAjAJChYKA3ZmdhIDQWVyGgJybyICUk8oAjAHCigKA3RhYxIV4K6V4K6f4K6x4K+N4K6V4K6w4K+IGgJ0YSICSU4oAjAFCiIKA3RhZBIP4K6q4K614K6z4K6u4K+NGgJ0YSICSU4oATAMCjEKA3RhZhIe4K6q4K+G4K6w4K+B4K6Z4K+N4K6V4K6f4K6y4K+NGgJ0YSICSU4oAjALChwKA3RhZxIJ4K6o4K6k4K6/GgJ0YSICSU4oATAJCh8KA3RlZhIM4LCw4LGC4LCs4LGAGgJ0ZSICSU4oAjAKCiUKA3RlbRIS4LCr4LGA4LCy4LGN4LCh4LGNGgJ0ZSICSU4oATABChwKA21vbBIJ4Lih4Lit4LiqGgJ0aCICVEgoAjAFChgKA2FtYRIFQnVsdXQaAnRyIgJUUigBMAwKFwoDY2ZzEgRWYWRpGgJ0ciICVFIoAjAHChcKA2VmdRIER8O2bBoCdHIiAlRSKAIwCQoXCgNtZm0SBEhhdmEaAnRyIgJUUigCMAUKGAoDdG1jEgVTYWhpbBoCdHIiAlRSKAEwBgodCgNoZmQSCtCe0LrQtdCw0L0aAnVrIgJVQSgCMAkKIAoDdmljEg1I4buTbmcgbmfhu41jGgJ2aSICVk4oAjAHCiAKA3ZpZBINQ8OhbmggxJHhu5NuZxoCdmkiAlZOKAEwBgoXCgN2aWUSBFLDqnUaAnZpIgJWTigCMAEKHQoDdmlmEgrEkMOhbSBtw6J5GgJ2aSICVk4oATAF" + "voices_override": "CiMKA3ZmehIQzqHOv8+FzrzPgM6vzr3OuRoCZWwiAkdSKAIwCQoXCgNpdGISBEFyaWEaAml0IgJJVCgCMAoKGAoDaXRjEgVDb3N0YRoCaXQiAklUKAEwCAoaCgNpdGQSB0NvcmFsbG8aAml0IgJJVCgBMAsKGQoDa2RhEgZPY2Vhbm8aAml0IgJJVCgCMAYKGQoDaGViEgbXoNeU16gaAml3IgJJTCgBMAwKHwoDaGVjEgzXkNeV1rnXk9a2150aAml3IgJJTCgCMAsKGQoDaGVkEgbXkNeS150aAml3IgJJTCgBMAkKHwoDaGVlEgzXkNa115bXlda515EaAml3IgJJTCgCMAcKIgoDbWxjEg/gtKHgtYbgtK/gtY3gtb0aAm1sIgJJTigCMAkKIgoDbWxlEg/gtKTgtJ/gtL7gtJXgtIIaAm1sIgJJTigBMAIKHwoDbWxmEgzgtLXgtL7gtK/gtYEaAm1sIgJJTigCMAwKHwoDbWxtEgzgtKTgtYDgtLDgtIIaAm1sIgJJTigBMAsKHwoDbXJhEgzgpJXgpYvgpLDgpLIaAm1yIgJJTigCMAoKKAoDbXJjEhXgpK7gpLngpL7gpLjgpL7gpJfgpLAaAm1yIgJJTigBMAUKHAoDbXJkEgngpKjgpKbgpYAaAm1yIgJJTigCMAsKHwoDbXJmEgzgpLDgpYHgpKzgpYAaAm1yIgJJTigCMAwKGQoDYWZiEgbFgcSFa2EaAnBsIgJQTCgCMAIKFwoDYm1nEgRNZWNoGgJwbCICUEwoATAMChkKA2ptaxIGQ2htdXJhGgJwbCICUEwoATAKChgKA29kYRIFT2NlYW4aAnBsIgJQTCgCMAgKGgoDemZnEgdKZXppb3JvGgJwbCICUEwoAjAJChYKA3ZmdhIDQWVyGgJybyICUk8oAjAHCigKA3RhYxIV4K6V4K6f4K6x4K+N4K6V4K6w4K+IGgJ0YSICSU4oAjAFCiIKA3RhZBIP4K6q4K614K6z4K6u4K+NGgJ0YSICSU4oATAMCjEKA3RhZhIe4K6q4K+G4K6w4K+B4K6Z4K+N4K6V4K6f4K6y4K+NGgJ0YSICSU4oAjALChwKA3RhZxIJ4K6o4K6k4K6/GgJ0YSICSU4oATAJCh8KA3RlZhIM4LCw4LGC4LCs4LGAGgJ0ZSICSU4oAjAKCiUKA3RlbRIS4LCr4LGA4LCy4LGN4LCh4LGNGgJ0ZSICSU4oATABCisKA21vbBIY4Lih4Lir4Liy4Liq4Lih4Li44LiX4LijGgJ0aCICVEgoAjAFChgKA2FtYRIFQnVsdXQaAnRyIgJUUigBMAwKFwoDY2ZzEgRWYWRpGgJ0ciICVFIoAjAHChcKA2VmdRIER8O2bBoCdHIiAlRSKAIwCQoXCgNtZm0SBEhhdmEaAnRyIgJUUigCMAUKGAoDdG1jEgVTYWhpbBoCdHIiAlRSKAEwBgodCgNoZmQSCtCe0LrQtdCw0L0aAnVrIgJVQSgCMAkKIAoDdmljEg1I4buTbmcgbmfhu41jGgJ2aSICVk4oAjAHCiAKA3ZpZBINQ8OhbmggxJHhu5NuZxoCdmkiAlZOKAEwBgoXCgN2aWUSBFLDqnUaAnZpIgJWTigCMAEKHQoDdmlmEgrEkMOhbSBtw6J5GgJ2aSICVk4oATAF" }, "enable_features": [ "ReadAloud", @@ -18042,6 +18494,27 @@ ] } ], + "ReadAnythingReadAloudWordHighlighting": [ + { + "platforms": [ + "chromeos" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "ReadAnythingReadAloudAutomaticWordHighlighting" + ] + }, + { + "name": "Disabled", + "disable_features": [ + "ReadAnythingReadAloudAutomaticWordHighlighting" + ] + } + ] + } + ], "ReclaimOldPrepaintTiles": [ { "platforms": [ @@ -18436,6 +18909,27 @@ ] } ], + "RenderPassDrawnRect": [ + { + "platforms": [ + "android", + "android_webview", + "chromeos", + "ios", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "RenderPassDrawnRect" + ] + } + ] + } + ], "ReportCertificateErrors": [ { "platforms": [ @@ -18456,54 +18950,61 @@ ] } ], - "ReportingServiceAlwaysFlush": [ + "ReportEventTimingAtVisibilityChange": [ { "platforms": [ "android", - "android_webview", "chromeos", "chromeos_lacros", - "ios", + "fuchsia", "linux", "mac", - "windows" + "windows", + "android_webview", + "android_weblayer" ], "experiments": [ { "name": "Enabled", "enable_features": [ - "ReportingServiceAlwaysFlush" + "ReportEventTimingAtVisibilityChange" ] } ] } ], - "RestartToGainAccessToKeychain": [ + "ReportingServiceAlwaysFlush": [ { "platforms": [ - "linux" + "android", + "android_webview", + "chromeos", + "chromeos_lacros", + "ios", + "linux", + "mac", + "windows" ], "experiments": [ { "name": "Enabled", "enable_features": [ - "RestartToGainAccessToKeychain" + "ReportingServiceAlwaysFlush" ] } ] } ], - "RestoreSignedInAccountAndSettingsFromBackupAndroid": [ + "RestartToGainAccessToKeychain": [ { "platforms": [ - "android" + "linux" ], "experiments": [ { - "name": "EnabledWithMetrics_20240507", + "name": "Enabled", "enable_features": [ - "RestoreSignedInAccountAndSettingsFromBackup", - "UpdateMetricsServicesStateInRestore" + "RestartToGainAccessToKeychain" ] } ] @@ -18524,22 +19025,6 @@ ] } ], - "RevampPageInfoIos": [ - { - "platforms": [ - "ios" - ], - "experiments": [ - { - "name": "Enabled_20240530", - "enable_features": [ - "PageInfoAboutThisSite", - "RevampPageInfoIos" - ] - } - ] - } - ], "RichInlineAutocompleteAndroid": [ { "platforms": [ @@ -18569,6 +19054,7 @@ "name": "Enabled", "params": { "RichAutocompletionAutocompleteShortcutTextMinChar": "3", + "RichAutocompletionAutocompleteTitlesMinChar": "3", "RichAutocompletionParam": "TextField" }, "enable_features": [ @@ -18578,6 +19064,21 @@ ] } ], + "RoundedDisplay": [ + { + "platforms": [ + "chromeos" + ], + "experiments": [ + { + "name": "RoundedDisplayEnabled", + "enable_features": [ + "RoundedDisplay" + ] + } + ] + } + ], "RubyLineBreakable": [ { "platforms": [ @@ -18669,8 +19170,7 @@ { "platforms": [ "android", - "android_webview", - "windows" + "android_webview" ], "experiments": [ { @@ -18689,6 +19189,7 @@ "android_webview", "chromeos", "chromeos_lacros", + "ios", "linux", "mac", "windows" @@ -18703,21 +19204,6 @@ ] } ], - "SafeBrowsingAsyncRealTimeCheck": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "SafeBrowsingAsyncRealTimeCheck" - ] - } - ] - } - ], "SafeBrowsingDeepScanningPromptRemoval": [ { "platforms": [ @@ -18875,6 +19361,7 @@ "SafetyHub": [ { "platforms": [ + "android", "chromeos", "chromeos_lacros", "fuchsia", @@ -18898,6 +19385,7 @@ "SafetyHubAbusiveNotificationRevocation": [ { "platforms": [ + "android", "chromeos", "chromeos_lacros", "fuchsia", @@ -19861,19 +20349,65 @@ ], "experiments": [ { - "name": "Enabled", - "params": { - "fade_delay_scaling_factor": "2.0", - "fade_duration_scaling_factor": "0.5" - }, + "name": "Enabled", + "params": { + "fade_delay_scaling_factor": "2.0", + "fade_duration_scaling_factor": "0.5" + }, + "enable_features": [ + "ScaleScrollbarAnimationTiming" + ] + } + ] + } + ], + "SchedQoS": [ + { + "platforms": [ + "chromeos" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "SchedQoSOnResourcedForChrome" + ], + "min_os_version": "15849.0.0" + } + ] + } + ], + "ScreenCaptureKitMacScreen": [ + { + "platforms": [ + "mac" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "ScreenCaptureKitMacScreen" + ] + } + ] + } + ], + "ScreencastForceEnableServerSideSpeechRecognition": [ + { + "platforms": [ + "chromeos" + ], + "experiments": [ + { + "name": "Enabled_Dogfood", "enable_features": [ - "ScaleScrollbarAnimationTiming" + "ForceEnableServerSideSpeechRecognitionForDev" ] } ] } ], - "SchedQoS": [ + "ScreencastGm3": [ { "platforms": [ "chromeos" @@ -19882,53 +20416,53 @@ { "name": "Enabled", "enable_features": [ - "SchedQoSOnResourcedForChrome" - ], - "min_os_version": "15849.0.0" + "ProjectorGm3" + ] } ] } ], - "ScreenCaptureKitMacScreen": [ + "ScreencastServerBasedUSMLocales": [ { "platforms": [ - "mac" + "chromeos" ], "experiments": [ { - "name": "Enabled", + "name": "Enabled_Dogfood", "enable_features": [ - "ScreenCaptureKitMacScreen" + "InternalServerSideSpeechRecognitionByFinch" ] } ] } ], - "ScreencastForceEnableServerSideSpeechRecognition": [ + "ScreencastServerBasedUSMRNNTLocales": [ { "platforms": [ "chromeos" ], "experiments": [ { - "name": "Enabled_Dogfood", + "name": "Enabled", "enable_features": [ - "ForceEnableServerSideSpeechRecognitionForDev" + "InternalServerSideSpeechRecognitionUSMModelFinch" ] } ] } ], - "ScreencastServerBasedUSMLocales": [ + "ScreenlockReauthPromoCard": [ { "platforms": [ - "chromeos" + "mac", + "windows" ], "experiments": [ { - "name": "Enabled_Dogfood", + "name": "Enabled", "enable_features": [ - "InternalServerSideSpeechRecognitionByFinch" + "ScreenlockReauthPromoCard" ] } ] @@ -19980,6 +20514,27 @@ ] } ], + "SearchEngineChoiceAttribution": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Disabled", + "disable_features": [ + "SearchEngineChoiceAttribution" + ] + }, + { + "name": "Enabled", + "enable_features": [ + "SearchEngineChoiceAttribution" + ] + } + ] + } + ], "SearchInCCT": [ { "platforms": [ @@ -20057,24 +20612,6 @@ ] } ], - "SearchResumptionModuleAndroid": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "Enabled", - "params": { - "use_new_service": "true" - }, - "enable_features": [ - "SearchResumptionModuleAndroid" - ] - } - ] - } - ], "SearchWebInSidePanel": [ { "platforms": [ @@ -20134,7 +20671,7 @@ ] } ], - "SeedAccountsRevampAndroid": [ + "SegmentationCompactionFix": [ { "platforms": [ "android" @@ -20143,13 +20680,13 @@ { "name": "Enabled", "enable_features": [ - "SeedAccountsRevamp" + "SegmentationCompactionFix" ] } ] } ], - "SegmentationCompactionFix": [ + "SegmentationPlatformURLVisitResumptionRanker": [ { "platforms": [ "android" @@ -20157,8 +20694,30 @@ "experiments": [ { "name": "Enabled", + "params": { + "use_random_score": "true" + }, "enable_features": [ - "SegmentationCompactionFix" + "SegmentationPlatformURLVisitResumptionRanker" + ] + } + ] + } + ], + "SegmentationPlatformUmaFromSqlDb": [ + { + "platforms": [ + "android", + "ios", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "SegmentationPlatformUmaFromSqlDb" ] } ] @@ -20328,22 +20887,16 @@ ] } ], - "ShadowKidsApiWithSafeSites": [ + "ShareCustomActionsInCCT": [ { "platforms": [ - "android", - "chromeos", - "chromeos_lacros", - "ios", - "linux", - "mac", - "windows" + "android" ], "experiments": [ { - "name": "Enabled_20231018", + "name": "Enabled", "enable_features": [ - "ShadowKidsApiWithSafeSites" + "ShareCustomActionsInCCT" ] } ] @@ -20518,41 +21071,7 @@ ] } ], - "ShortcutsNotApps": [ - { - "platforms": [ - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "ShortcutsNotApps", - "enable_features": [ - "ShortcutsNotApps" - ] - } - ] - } - ], - "ShortcutsNotAppsRevealDesktop": [ - { - "platforms": [ - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "ShortcutsNotAppsRevealDesktop", - "enable_features": [ - "ShortcutsNotAppsRevealDesktop" - ] - } - ] - } - ], - "ShowWebauthnSuggestionsOnAutofocus": [ + "ShowSuggestionsOnAutofocus": [ { "platforms": [ "android", @@ -20566,7 +21085,7 @@ { "name": "Enabled", "enable_features": [ - "ShowWebauthnSuggestionsOnAutofocus" + "ShowSuggestionsOnAutofocus" ] } ] @@ -20749,33 +21268,32 @@ ] } ], - "SkiaGraphite": [ + "SkiaFontService": [ { "platforms": [ - "mac", "windows" ], "experiments": [ { "name": "Enabled", "enable_features": [ - "SkiaGraphite" + "SkiaFontService" ] } ] } ], - "SkipParentApprovalToInstallExtensions": [ + "SkiaGraphite": [ { "platforms": [ - "chromeos", - "chromeos_lacros" + "mac", + "windows" ], "experiments": [ { "name": "Enabled", "enable_features": [ - "EnableSupervisedUserSkipParentApprovalToInstallExtensions" + "SkiaGraphite" ] } ] @@ -20785,7 +21303,6 @@ { "platforms": [ "android", - "android_webview", "chromeos", "chromeos_lacros", "linux", @@ -20969,52 +21486,32 @@ { "platforms": [ "android", - "android_weblayer", - "android_webview", "chromeos", "chromeos_lacros", - "fuchsia", "linux", "mac", "windows" ], "experiments": [ { - "name": "Experiment_Triple_Key_20201001", + "//0": "This feature has shipped for Chrome but not for ", + "//1": "Chromium embedders, so the corresponding feature ", + "//2": "flag value is false but we rely on this entry to ", + "//3": "enable the feature for most types of tests", + "name": "EnableFeatureForTests", "enable_features": [ - "AppendFrameOriginToNetworkIsolationKey", - "SplitCacheByNetworkIsolationKey", - "UseRegistrableDomainInNetworkIsolationKey" + "SplitCacheByNetworkIsolationKey" ] } ] } ], - "SpotlightIndexReadingListAndOpenTabs": [ - { - "platforms": [ - "ios" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "SpotlightOpenTabsSource", - "SpotlightReadingListSource" - ] - } - ] - } - ], - "SqlWalMode": [ + "StaleStorageCleanup": [ { "platforms": [ "android", - "android_weblayer", - "android_webview", "chromeos", "chromeos_lacros", - "fuchsia", "ios", "linux", "mac", @@ -21022,34 +21519,40 @@ ], "experiments": [ { - "name": "Enabled", + "name": "Auto_Dogfood", "enable_features": [ - "FledgeEnableWALForInterestGroupStorage", - "SharedStorageAPIEnableWALForDatabase", - "SqlWALModeOnDipsDatabase", - "SqlWALModeOnSegmentationDatabase", - "SqlWALModeOnWebDatabase" + "DeleteStaleLocalStorageOnStartup", + "DeleteStaleSessionCookiesOnStartup", + "EvictStaleQuotaStorage" + ] + }, + { + "name": "Opt_In_Dogfood", + "enable_features": [ + "DeleteStaleLocalStorageOnStartup", + "DeleteStaleSessionCookiesOnStartup", + "EvictStaleQuotaStorage" ] } ] } ], - "StaleStorageCleanup": [ + "StandardizedBrowserZoom": [ { "platforms": [ "android", + "android_webview", "chromeos", "chromeos_lacros", - "ios", "linux", "mac", "windows" ], "experiments": [ { - "name": "Enabled_Dogfood", + "name": "Enabled", "enable_features": [ - "DeleteStaleSessionCookiesOnStartup" + "StandardizedBrowserZoom" ] } ] @@ -21190,31 +21693,62 @@ ] } ], - "SyncIncreaseNudgeDelayForSingleClient": [ + "SuppressToolbarCapturesAtGestureEndStudy": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "EnableGestureBeginEndTypes", + "SuppressToolbarCapturesAtGestureEnd" + ] + }, + { + "name": "Disabled", + "disable_features": [ + "EnableGestureBeginEndTypes", + "SuppressToolbarCapturesAtGestureEnd" + ] + }, + { + "name": "Enabled_GestureBeginEndTypes", + "enable_features": [ + "EnableGestureBeginEndTypes" + ], + "disable_features": [ + "SuppressToolbarCapturesAtGestureEnd" + ] + } + ] + } + ], + "SuppressesLoadingPredictorOnSlowNetwork": [ { "platforms": [ "android", "chromeos", "chromeos_lacros", - "ios", "linux", "mac", "windows" ], "experiments": [ { - "name": "EnabledFactor2", + "name": "Enabled", "params": { - "SyncIncreaseNudgeDelayForSingleClientFactor": "2.0" + "slow_network_threshold": "208ms" }, "enable_features": [ - "SyncIncreaseNudgeDelayForSingleClient" + "SuppressesLoadingPredictorOnSlowNetwork" ] } ] } ], - "SyncPlusAddress": [ + "SyncIncreaseNudgeDelayForSingleClient": [ { "platforms": [ "android", @@ -21227,9 +21761,12 @@ ], "experiments": [ { - "name": "Enabled", + "name": "EnabledFactor2", + "params": { + "SyncIncreaseNudgeDelayForSingleClientFactor": "2.0" + }, "enable_features": [ - "SyncPlusAddress" + "SyncIncreaseNudgeDelayForSingleClient" ] } ] @@ -21340,6 +21877,21 @@ ] } ], + "TabGroupCreationDialogAndroid": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "TabGroupCreationDialogAndroid" + ] + } + ] + } + ], "TabGroupParityAndroid": [ { "platforms": [ @@ -21395,7 +21947,7 @@ ] } ], - "TabGroupsSaveUIUpdate": [ + "TabGroupsSaveUIUpdateAndSaveV2": [ { "platforms": [ "chromeos", @@ -21409,31 +21961,21 @@ { "name": "Enabled", "enable_features": [ - "TabGroupsSaveUIUpdate" + "TabGroupsSaveUIUpdate", + "TabGroupsSaveV2" ] } ] } ], - "TabHoverCardImages": [ + "TabHoverCardImagesMacArm": [ { "platforms": [ - "chromeos", - "chromeos_lacros", - "fuchsia", - "linux", - "mac", - "windows" + "mac" ], "experiments": [ { "name": "Enabled", - "params": { - "crossfade_preview_at": "0.25", - "page_loaded_delay": "300", - "page_loading_delay": "300", - "page_not_ready_delay": "800" - }, "enable_features": [ "TabHoverCardImages" ] @@ -21497,12 +22039,32 @@ ], "experiments": [ { - "name": "Enabled_20240713", - "params": { - "migrate_stale_tabs": "true" - }, + "name": "Enabled_20240713", + "params": { + "migrate_stale_tabs": "true" + }, + "enable_features": [ + "TabStateFlatBuffer" + ] + } + ] + } + ], + "TabStripCollectionStorage": [ + { + "platforms": [ + "chromeos", + "chromeos_lacros", + "fuchsia", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", "enable_features": [ - "TabStateFlatBuffer" + "TabStripCollectionStorage" ] } ] @@ -21813,40 +22375,37 @@ ] } ], - "TimedHTMLParserBudgetForAndroid": [ + "TimerSlackMac": [ { "platforms": [ - "android" + "mac" ], "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" + "AlignWakeUps", + "TimerSlackMac" ] } ] } ], - "TimerSlackMac": [ + "ToolbarPinning": [ { "platforms": [ - "mac" + "chromeos", + "chromeos_lacros", + "fuchsia", + "linux", + "mac", + "windows" ], "experiments": [ { "name": "Enabled", "enable_features": [ - "AlignWakeUps", - "TimerSlackMac" + "ToolbarPinning" ] } ] @@ -21959,7 +22518,7 @@ ] } ], - "TransactionsShadowDomSupport": [ + "TransportSecurityFileWriterSchedule": [ { "platforms": [ "android", @@ -21972,31 +22531,12 @@ ], "experiments": [ { - "name": "Enabled_Fully_20240306", - "enable_features": [ - "AutofillIncludeFormElementsInShadowDom", - "AutofillIncludeShadowDomInUnassociatedListedElements", - "ShadowDomSupport" - ] - }, - { - "name": "Enabled_Without_Extracting_Unassociated_Listed_Elements_20240306", - "enable_features": [ - "AutofillIncludeFormElementsInShadowDom", - "ShadowDomSupport" - ], - "disable_features": [ - "AutofillIncludeShadowDomInUnassociatedListedElements" - ] - }, - { - "name": "Enabled_Without_Extracting_Form_Elements_20240306", + "name": "Enabled1Minute_20240626", + "params": { + "commit_interval": "1m" + }, "enable_features": [ - "AutofillIncludeShadowDomInUnassociatedListedElements", - "ShadowDomSupport" - ], - "disable_features": [ - "AutofillIncludeFormElementsInShadowDom" + "TransportSecurityFileWriterSchedule" ] } ] @@ -22221,7 +22761,7 @@ ] } ], - "UPMLocalPasswords": [ + "UPMClearMigratedDataStudy": [ { "platforms": [ "android" @@ -22229,12 +22769,8 @@ "experiments": [ { "name": "Enabled", - "params": { - "min_gms_version_for_auto": "241512000" - }, "enable_features": [ - "ClearLoginDatabaseForUPMUsers", - "UnifiedPasswordManagerSyncOnlyInGMSCore" + "ClearLoginDatabaseForAllMigratedUPMUsers" ] } ] @@ -22331,6 +22867,31 @@ ] } ], + "UnoPhase2Android": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Phase2", + "enable_features": [ + "EnablePasswordsAccountStorageForNonSyncingUsers", + "FeedBottomSyncStringRemoval", + "HideSettingsSignInPromo", + "ReadingListEnableSyncTransportModeUponSignIn", + "ReplaceSyncPromosWithSignInPromos", + "RestoreSignedInAccountAndSettingsFromBackup", + "SyncEnableContactInfoDataTypeForCustomPassphraseUsers", + "SyncEnableContactInfoDataTypeInTransportMode", + "SyncEnableWalletMetadataInTransportMode", + "SyncEnableWalletOfferInTransportMode", + "UpdateMetricsServicesStateInRestore" + ] + } + ] + } + ], "UnthrottledTabProcessReporting": [ { "platforms": [ @@ -22440,6 +23001,23 @@ ] } ], + "UseContextSnapshot": [ + { + "platforms": [ + "android", + "android_webview", + "android_weblayer" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "UseContextSnapshot" + ] + } + ] + } + ], "UseDMSAAForTiles": [ { "platforms": [ @@ -22619,45 +23197,6 @@ ] } ], - "UseMultiPlaneFormatForHardwareVideo": [ - { - "platforms": [ - "mac", - "windows", - "chromeos", - "chromeos_lacros", - "linux", - "fuchsia" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "UseMultiPlaneFormatForHardwareVideo" - ] - } - ] - } - ], - "UseMultiPlaneFormatForSoftwareVideo": [ - { - "platforms": [ - "mac", - "windows", - "chromeos", - "chromeos_lacros", - "linux" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "UseMultiPlaneFormatForSoftwareVideo" - ] - } - ] - } - ], "UseSmartRefForGPUFenceHandle": [ { "platforms": [ @@ -22714,33 +23253,6 @@ ] } ], - "UseUtilityThreadGroup": [ - { - "platforms": [ - "android", - "android_weblayer", - "android_webview", - "chromeos", - "chromeos_lacros", - "fuchsia", - "ios", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "UseUtilityThreadGroup", - "V8ConcurrentMaglevHighPriorityThreads", - "V8ConcurrentMarkingHighPriorityThreads", - "V8ConcurrentSparkplugHighPriorityThreads" - ] - } - ] - } - ], "UserBypassUI": [ { "platforms": [ @@ -23071,6 +23583,28 @@ ] } ], + "V8CppGCEnableLargerCage": [ + { + "platforms": [ + "android", + "android_webview", + "chromeos", + "chromeos_lacros", + "fuchsia", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "V8CppGCEnableLargerCage" + ] + } + ] + } + ], "V8EfficiencyModeTiering": [ { "platforms": [ @@ -23172,46 +23706,34 @@ ] } ], - "V8IdleGcOnContextDisposal": [ + "V8IntelJCCErratumMitigation": [ { "platforms": [ - "android", - "android_webview", "chromeos", "chromeos_lacros", - "fuchsia", "linux", "mac", "windows" ], "experiments": [ { - "name": "Enabled", + "name": "EnabledNoSlowHistogram", "enable_features": [ - "V8IdleGcOnContextDisposal" + "V8IntelJCCErratumMitigation" ] - } - ] - } - ], - "V8IntelJCCErratumMitigation": [ - { - "platforms": [ - "chromeos", - "chromeos_lacros", - "linux", - "mac", - "windows" - ], - "experiments": [ + }, { "name": "Enabled", "enable_features": [ - "V8IntelJCCErratumMitigation" + "V8IntelJCCErratumMitigation", + "V8SlowHistogramsIntelJCCErratumMitigation" ] }, { "name": "Control", + "enable_features": [ + "V8SlowHistogramsIntelJCCErratumMitigation" + ], "disable_features": [ "V8IntelJCCErratumMitigation" ] @@ -23298,7 +23820,7 @@ ] } ], - "V8MemoryReducer": [ + "V8ScavengerHigherCapacity": [ { "platforms": [ "android", @@ -23312,58 +23834,36 @@ ], "experiments": [ { - "name": "V8MemoryReducer2GCs", + "name": "V8ScavengerMaxCapacity16MB", "params": { - "V8MemoryReducerGCCount": "2" + "V8ScavengerMaxCapacity": "16" }, "enable_features": [ - "V8MemoryReducer" + "V8ScavengerHigherCapacity" ] }, { - "name": "V8MemoryReducer1GC", + "name": "V8ScavengerMaxCapacity32MB", "params": { - "V8MemoryReducerGCCount": "1" + "V8ScavengerMaxCapacity": "32" }, "enable_features": [ - "V8MemoryReducer" + "V8ScavengerHigherCapacity" ] }, { - "name": "V8MemoryReducer3GCs", + "name": "V8ScavengerMaxCapacity64MB", "params": { - "V8MemoryReducerGCCount": "3" + "V8ScavengerMaxCapacity": "64" }, "enable_features": [ - "V8MemoryReducer" + "V8ScavengerHigherCapacity" ] }, { "name": "Control", "disable_features": [ - "V8MemoryReducer" - ] - } - ] - } - ], - "V8MinorMS": [ - { - "platforms": [ - "android", - "android_webview", - "chromeos", - "chromeos_lacros", - "fuchsia", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "V8MinorMS" + "V8ScavengerHigherCapacity" ] } ] @@ -23499,31 +23999,27 @@ ] } ], - "V8SynchronousSparkplug": [ + "V8Turboshaft": [ { "platforms": [ - "chromeos_lacros", + "android", "chromeos", - "fuchsia", + "chromeos_lacros", "linux", "mac", - "windows", - "android", - "android_weblayer", - "android_webview" + "windows" ], "experiments": [ { "name": "Enabled", - "disable_features": [ - "V8BaselineBatchCompilation", - "V8ConcurrentSparkplug" + "enable_features": [ + "V8Turboshaft" ] } ] } ], - "V8Turboshaft": [ + "V8TurboshaftInstructionSelection": [ { "platforms": [ "android", @@ -23537,18 +24033,20 @@ { "name": "Enabled", "enable_features": [ - "V8Turboshaft" + "V8TurboshaftInstructionSelection" ] } ] } ], - "V8TurboshaftInstructionSelection": [ + "V8UpdateLimitAfterLoading": [ { "platforms": [ "android", + "android_webview", "chromeos", "chromeos_lacros", + "fuchsia", "linux", "mac", "windows" @@ -23557,7 +24055,7 @@ { "name": "Enabled", "enable_features": [ - "V8TurboshaftInstructionSelection" + "V8UpdateLimitAfterLoading" ] } ] @@ -23851,6 +24349,36 @@ ] } ], + "VersionedWallpaperInfo": [ + { + "platforms": [ + "chromeos" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "VersionedWallpaperInfo" + ] + } + ] + } + ], + "VideoConferenceDLCUIRollout": [ + { + "platforms": [ + "chromeos" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "VcDlcUi" + ] + } + ] + } + ], "VideoConferenceRollout": [ { "platforms": [ @@ -23963,27 +24491,9 @@ "guybrush", "nissa", "rex", - "skyrim", - "volteer", - "zork" - ] - } - ] - }, - { - "platforms": [ - "linux" - ], - "experiments": [ - { - "name": "Vulkan", - "enable_features": [ - "DefaultANGLEVulkan", - "Vulkan", - "VulkanFromANGLE" - ], - "disable_features": [ - "VaapiVideoDecoder" + "skyrim", + "volteer", + "zork" ] } ] @@ -24055,19 +24565,42 @@ ] } ], - "WaitForAccountCapabilitiesInSigninIntercept": [ + "WaitForLateScrollEvents": [ { "platforms": [ + "android", + "android_webview", + "chromeos", "linux", "mac", "windows" ], "experiments": [ { - "name": "WaitForCapabilitiesWithPreconnect_20240503", + "name": "DispatchImmediately", + "params": { + "mode": "DispatchScrollEventsImmediately" + }, + "enable_features": [ + "WaitForLateScrollEvents" + ] + }, + { + "name": "UseScrollPredictorForDeadline", + "params": { + "mode": "UseScrollPredictorForDeadline" + }, + "enable_features": [ + "WaitForLateScrollEvents" + ] + }, + { + "name": "UseScrollPredictorForEmptyQueue", + "params": { + "mode": "UseScrollPredictorForEmptyQueue" + }, "enable_features": [ - "CustomWebSignInInterceptForSupervisedUsers", - "PreconnectAccountCapabilitiesPostSignin" + "WaitForLateScrollEvents" ] } ] @@ -24175,6 +24708,33 @@ ] } ], + "WebAssemblyInliningCallIndirect": [ + { + "platforms": [ + "android", + "android_webview", + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "WebAssemblyInliningCallIndirect" + ] + }, + { + "name": "Control", + "disable_features": [ + "WebAssemblyInliningCallIndirect" + ] + } + ] + } + ], "WebAuthenticationAndroidCredMan": [ { "platforms": [ @@ -24184,7 +24744,7 @@ { "name": "Enabled", "params": { - "min_gms_core_version_no_dots": "241900000" + "min_gms_core_version_no_dots": "242300000" }, "enable_features": [ "WebAuthenticationAndroidCredMan" @@ -24316,28 +24876,22 @@ ] } ], - "WebProtectCustomRuleMessageDialog": [ + "WebPermissionsApi": [ { "platforms": [ - "chromeos", - "chromeos_lacros", - "fuchsia", - "linux", - "mac", - "windows" + "android_webview" ], "experiments": [ { "name": "Enabled", "enable_features": [ - "DialogCustomRuleMessageEnabled", - "RealTimeUrlFilteringCustomMessage" + "WebPermissionsApi" ] } ] } ], - "WebProtectResumableUpload": [ + "WebProtectCustomRuleMessageDialog": [ { "platforms": [ "chromeos", @@ -24351,7 +24905,8 @@ { "name": "Enabled", "enable_features": [ - "ResumableUploadEnabled" + "DialogCustomRuleMessageEnabled", + "RealTimeUrlFilteringCustomMessage" ] } ] @@ -24529,69 +25084,68 @@ ] } ], - "WebRTC-Bwe-ReceiverLimitCapsOnly": [ + "WebRTC-Bwe-ProbingConfiguration": [ { "platforms": [ "android", "android_webview", "chromeos", - "fuchsia", - "ios", + "chromeos_lacros", "linux", "mac", "windows" ], "experiments": [ { - "name": "Enabled" + "name": "network_state_probe_duration:200ms,network_state_interval:10s,min_probe_delta:20ms,est_lower_than_network_ratio:0.7,skip_if_est_larger_than_fraction_of_max:0.9,alr_scale:1.5,step_size:1.5" } ] } ], - "WebRTC-Bwe-RobustThroughputEstimatorSettings": [ + "WebRTC-Bwe-ReceiverLimitCapsOnly": [ { "platforms": [ "android", "android_webview", "chromeos", - "chromeos_lacros", "fuchsia", + "ios", "linux", "mac", "windows" ], "experiments": [ { - "name": "enabled:true,_V1" + "name": "Enabled" } ] } ], - "WebRTC-IPv6NetworkResolutionFixes": [ + "WebRTC-Bwe-RobustThroughputEstimatorSettings": [ { "platforms": [ "android", "android_webview", "chromeos", - "ios", + "chromeos_lacros", + "fuchsia", "linux", "mac", "windows" ], "experiments": [ { - "name": "Enabled,ResolveStunHostnameForFamily:true,PreferGlobalIPv6Address:true,DiversifyIpv6Interfaces:true,_20220929" + "name": "enabled:true,_V1" } ] } ], - "WebRTC-JitterEstimatorConfig": [ + "WebRTC-IPv6NetworkResolutionFixes": [ { "platforms": [ "android", "android_webview", "chromeos", - "chromeos_lacros", "ios", "linux", "mac", @@ -24599,30 +25153,31 @@ ], "experiments": [ { - "name": "num_stddev_delay_clamp:5,num_stddev_delay_outlier:2,num_stddev_size_outlier:2,estimate_noise_when_congested:false,_20230118_BETA" + "name": "Enabled,ResolveStunHostnameForFamily:true,PreferGlobalIPv6Address:true,DiversifyIpv6Interfaces:true,_20220929" } ] } ], - "WebRTC-LibvpxVp9Encoder-SvcFrameDropConfig": [ + "WebRTC-JitterEstimatorConfig": [ { "platforms": [ "android", "android_webview", "chromeos", "chromeos_lacros", + "ios", "linux", "mac", "windows" ], "experiments": [ { - "name": "Enabled,layer_drop_mode:1,max_consec_drop:2,_20240416" + "name": "num_stddev_delay_clamp:5,num_stddev_delay_outlier:2,num_stddev_size_outlier:2,estimate_noise_when_congested:false,_20230118_BETA" } ] } ], - "WebRTC-PaddingMode-RecentLargePacket": [ + "WebRTC-LibvpxVp9Encoder-SvcFrameDropConfig": [ { "platforms": [ "android", @@ -24635,7 +25190,7 @@ ], "experiments": [ { - "name": "Enabled,_V1" + "name": "Enabled,layer_drop_mode:1,max_consec_drop:2,_20240416" } ] } @@ -24774,27 +25329,6 @@ ] } ], - "WebRTC-Vp9InterLayerPred": [ - { - "platforms": [ - "android", - "android_weblayer", - "android_webview", - "chromeos", - "chromeos_lacros", - "fuchsia", - "ios", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "FlexibleMode,_20240321" - } - ] - } - ], "WebRTC-ZeroPlayoutDelay": [ { "platforms": [ @@ -24859,6 +25393,27 @@ ] } ], + "WebRtcEncodedTransformDirectCallback": [ + { + "platforms": [ + "android", + "android_webview", + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "WebRtcEncodedTransformDirectCallback" + ] + } + ] + } + ], "WebRtcHWDecodingDisabledCfM": [ { "platforms": [ @@ -25037,7 +25592,7 @@ ] } ], - "WebViewOptimizeXrwNavigationFlow": [ + "WebViewPreloadClasses": [ { "platforms": [ "android_webview" @@ -25046,13 +25601,13 @@ { "name": "Enabled", "enable_features": [ - "WebViewOptimizeXrwNavigationFlow" + "WebViewPreloadClasses" ] } ] } ], - "WebViewPreloadClasses": [ + "WebViewRecordAppDataDirectorySize": [ { "platforms": [ "android_webview" @@ -25061,13 +25616,13 @@ { "name": "Enabled", "enable_features": [ - "WebViewPreloadClasses" + "WebViewRecordAppDataDirectorySize" ] } ] } ], - "WebViewRecordAppDataDirectorySize": [ + "WebViewSeparateResourceContext": [ { "platforms": [ "android_webview" @@ -25076,7 +25631,7 @@ { "name": "Enabled", "enable_features": [ - "WebViewRecordAppDataDirectorySize" + "WebViewSeparateResourceContext" ] } ] @@ -25123,7 +25678,7 @@ "name": "Enabled", "params": { "RelaxLimitAImageReaderMaxSizeToOneBlocklist": "*Broadcom*|*Google*", - "RelaxLimitAImageReaderMaxSizeToOneManufacturerBlocklist": "*Google*", + "RelaxLimitAImageReaderMaxSizeToOneManufacturerBlocklist": "*Broadcom*|*Google*", "RelaxLimitAImageReaderMaxSizeToOneSoCBlocklist": "*Broadcom*" }, "enable_features": [ @@ -25273,6 +25828,53 @@ ] } ], + "WhatsNewV2Study": [ + { + "platforms": [ + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "WhatsNewVersion2" + ] + } + ] + } + ], + "WinPdfUseFontProxy": [ + { + "platforms": [ + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "WinPdfUseFontProxy" + ] + } + ] + } + ], + "WinSboxACProfileWithoutFirewall": [ + { + "platforms": [ + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "WinSboxACProfileWithoutFirewall" + ] + } + ] + } + ], "WinSboxNoFakeGdiInit": [ { "platforms": [ @@ -25303,6 +25905,114 @@ ] } ], + "YieldWithInputHint": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "YieldWithInputHint" + ] + } + ] + } + ], + "ZPSPrefetchOnSRPWithDebouncingAndroid": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled_300ms_FromLastRun", + "params": { + "ZeroSuggestPrefetchDebounceDelay": "300", + "ZeroSuggestPrefetchDebounceFromLastRun": "true" + }, + "enable_features": [ + "ZeroSuggestPrefetchDebouncing", + "ZeroSuggestPrefetchingOnSRP" + ], + "disable_features": [ + "ZeroSuggestPrefetchingOnWeb" + ] + }, + { + "name": "Enabled_300ms_FromLastRequest", + "params": { + "ZeroSuggestPrefetchDebounceDelay": "300", + "ZeroSuggestPrefetchDebounceFromLastRun": "false" + }, + "enable_features": [ + "ZeroSuggestPrefetchDebouncing", + "ZeroSuggestPrefetchingOnSRP" + ], + "disable_features": [ + "ZeroSuggestPrefetchingOnWeb" + ] + }, + { + "name": "Enabled_600ms_FromLastRun", + "params": { + "ZeroSuggestPrefetchDebounceDelay": "600", + "ZeroSuggestPrefetchDebounceFromLastRun": "true" + }, + "enable_features": [ + "ZeroSuggestPrefetchDebouncing", + "ZeroSuggestPrefetchingOnSRP" + ], + "disable_features": [ + "ZeroSuggestPrefetchingOnWeb" + ] + }, + { + "name": "Enabled_600ms_FromLastRequest", + "params": { + "ZeroSuggestPrefetchDebounceDelay": "600", + "ZeroSuggestPrefetchDebounceFromLastRun": "false" + }, + "enable_features": [ + "ZeroSuggestPrefetchDebouncing", + "ZeroSuggestPrefetchingOnSRP" + ], + "disable_features": [ + "ZeroSuggestPrefetchingOnWeb" + ] + }, + { + "name": "Enabled_900ms_FromLastRun", + "params": { + "ZeroSuggestPrefetchDebounceDelay": "900", + "ZeroSuggestPrefetchDebounceFromLastRun": "true" + }, + "enable_features": [ + "ZeroSuggestPrefetchDebouncing", + "ZeroSuggestPrefetchingOnSRP" + ], + "disable_features": [ + "ZeroSuggestPrefetchingOnWeb" + ] + }, + { + "name": "Enabled_900ms_FromLastRequest", + "params": { + "ZeroSuggestPrefetchDebounceDelay": "900", + "ZeroSuggestPrefetchDebounceFromLastRun": "false" + }, + "enable_features": [ + "ZeroSuggestPrefetchDebouncing", + "ZeroSuggestPrefetchingOnSRP" + ], + "disable_features": [ + "ZeroSuggestPrefetchingOnWeb" + ] + } + ] + } + ], "ZeroCopyTabCaptureStudyMac": [ { "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 30310f2d7..11c5b6cb5 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 @@ -1141,7 +1141,7 @@ enum WebFeature { kRTCIceServerURLs = 1657, kOffscreenCanvasTransferToImageBitmap2D = 1658, kOffscreenCanvasTransferToImageBitmapWebGL = 1659, - kOffscreenCanvasCommit2D = 1660, + kOBSOLETE_OffscreenCanvasCommit2D = 1660, kOffscreenCanvasCommitWebGL = 1661, kRTCConfigurationIceTransportPolicy = 1662, kRTCConfigurationIceTransports = 1664, @@ -2408,13 +2408,13 @@ enum WebFeature { kRegisterProtocolHandlerCrossOriginSubframe = 3093, kWebNfcNdefReaderScan = 3094, kWebNfcNdefWriterWrite = 3095, - kHTMLPortalElement = 3096, - kV8HTMLPortalElement_Activate_Method = 3097, - kV8HTMLPortalElement_PostMessage_Method = 3098, - kV8Window_PortalHost_AttributeGetter = 3099, - kV8PortalHost_PostMessage_Method = 3100, - kV8PortalActivateEvent_Data_AttributeGetter = 3101, - kV8PortalActivateEvent_AdoptPredecessor_Method = 3102, + kOBSOLETE_HTMLPortalElement = 3096, + kOBSOLETE_V8HTMLPortalElement_Activate_Method = 3097, + kOBSOLETE_V8HTMLPortalElement_PostMessage_Method = 3098, + kOBSOLETE_V8Window_PortalHost_AttributeGetter = 3099, + kOBSOLETE_V8PortalHost_PostMessage_Method = 3100, + kOBSOLETE_V8PortalActivateEvent_Data_AttributeGetter = 3101, + kOBSOLETE_V8PortalActivateEvent_AdoptPredecessor_Method = 3102, kLinkRelPrefetchForSignedExchanges = 3103, kMessageEventSharedArrayBufferSameOrigin = 3104, kMessageEventSharedArrayBufferSameAgentCluster = 3105, @@ -3366,7 +3366,7 @@ enum WebFeature { kV8Navigator_CreateAdRequest_Method = 4053, kV8Navigator_FinalizeAd_Method = 4054, kRegionCapture = 4055, - kAppHistory = 4056, + kNavigationAPI = 4056, kFlexboxAlignSingleLineDifference = 4057, kExternalProtocolBlockedBySandbox = 4058, kOBSOLETE_WebAssemblyDynamicTiering = 4059, @@ -3721,7 +3721,7 @@ enum WebFeature { kViewTransition = 4383, kElementTogglePopover = 4384, kOBSOLETE_LayoutMediaInlineChildren = 4385, - kReduceAcceptLanguage = 4386, + kOBSOLETE_ReduceAcceptLanguage = 4386, // The items above roughly this point are available in the M109 branch. kOBSOLETE_UuidInPackageUrlNavigation = 4387, @@ -3795,7 +3795,7 @@ enum WebFeature { kServiceWorkerFetchHandlerModifiedAfterInitialization = 4453, // The items above roughly this point are available in the M111 branch. - kOptionLabelInQuirksMode = 4454, + kOBSOLETE_OptionLabelInQuirksMode = 4454, kParseFromStringIncludeShadows = 4455, kWebAppManifestScopeExtensions = 4456, kOBSOLETE_ServiceWorkerBypassFetchHandlerForMainResourceByOriginTrial = 4457, @@ -3867,8 +3867,8 @@ enum WebFeature { kHtmlClipboardApiUnsanitizedRead = 4522, kHtmlClipboardApiUnsanitizedWrite = 4523, kAsyncClipboardAPIUnsanitizedRead = 4524, - kWindowOpenFullscreenRequested = 4525, - kFullscreenAllowedByWindowOpen = 4526, + kOBSOLETE_WindowOpenFullscreenRequested = 4525, + kOBSOLETE_FullscreenAllowedByWindowOpen = 4526, // The items above roughly this point are available in the M113 branch. kAttributeValueContainsLtOrGt = 4527, @@ -4030,7 +4030,6 @@ enum WebFeature { kTextWrapPretty = 4674, // The items above roughly this point are available in the M119 branch. - kOBSOLETE_V8PointerEvent_DeviceId_AttributeGetter = 4675, kSourceMappingUrlMagicCommentAtSign = 4676, kHTMLDetailsElementNameAttribute = 4677, kHTMLDetailsElementNameAttributeClosesSelf = 4678, @@ -4306,7 +4305,7 @@ enum WebFeature { kStaticPropertyInAnimation = 4940, kSimplifyLoadingTransparentPlaceholderImage = 4941, kIdentityDigitalCredentialsSuccess = 4942, - kV8DeviceProperties_UniqueId_AttributeGetter = 4943, + kOBSOLETE_V8DeviceProperties_UniqueId_AttributeGetter = 4943, // The items above roughly this point are available in the M125 branch. kSharedStorageAPI_SelectURLOverallPageloadBudgetInsufficient = 4944, @@ -4367,6 +4366,45 @@ enum WebFeature { kV8InvalidatedNoUndetectableObjectsProtector = 4997, kV8DocumentAllLegacyCall = 4998, kV8DocumentAllLegacyConstruct = 4999, + kInsideListMarkerPositionQuirk = 5000, + kZstdContentEncodingForNavigation = 5001, + kZstdContentEncodingForMainFrameNavigation = 5002, + kZstdContentEncodingForSubFrameNavigation = 5003, + kZstdContentEncodingForSubresource = 5004, + kEventTimingOrphanPointerupWithClick = 5005, + kDisableReduceAcceptLanguage = 5006, + kSharedStorageAPI_CreateWorklet_CrossOriginScriptDefaultDataOrigin = 5007, + kDeprecatedAIModel = 5008, + kDeprecatedAICanCreateGenericSession = 5009, + kDeprecatedAICreateGenericSession = 5010, + kDeprecatedAIDefaultGenericSessionOptions = 5011, + kDeprecatedAITextSessionExecute = 5012, + kDeprecatedAITextSessionExecuteStreaming = 5013, + kARIAColIndexTextAttribute = 5014, + kARIARowIndexTextAttribute = 5015, + kV8PointerEvent_PersistentDeviceId_AttributeGetter = 5016, + kDelegatedInkExpectedImprovement = 5017, + kCSSSelectorNthChildOfSelector = 5018, + kDisableStandardizedBrowserZoom = 5019, + kV8FileSystemObserver_Constructor = 5020, + kV8FileSystemObserver_Observe_Method = 5021, + kV8FileSystemObserver_Disconnect_Method = 5022, + kV8ML_CreateContext_Method = 5023, + kV8MLContext_Compute_Method = 5024, + kV8MLContext_Dispatch_Method = 5025, + kCSSMixins = 5026, + kDurationFormat = 5027, + kSharedStorageAPI_AddModule_CrossOriginScript = 5028, + kCrossOriginOpenerPolicyNoopenerAllowPopups = 5029, + kCrossOriginOpenerPolicyNoopenerAllowPopupsReportOnly = 5030, + kV8ConsoleContext = 5031, + kButtonTypeAttrInvalid = 5032, + kButtonTypeAttrEmptyString = 5033, + kProtectedAudienceDirectFromSellerSignals = 5034, + kWebGPUSubgroupsFeatures = 5035, + kAudioContextOnError = 5036, + kNoVarySearchPrerender = 5037, + kFlexNewColumnWrapIntrinsicSize = 5043, // Add new features immediately above this line. Don't change assigned // numbers of any item, and don't reuse removed slots. Also don't add extra diff --git a/tools/under-control/src/third_party/blink/public/mojom/webpreferences/web_preferences.mojom b/tools/under-control/src/third_party/blink/public/mojom/webpreferences/web_preferences.mojom index 2dc2c8577..5560f0ff4 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 @@ -358,6 +358,10 @@ struct WebPreferences { // Don't accelerate small canvases to avoid crashes TODO(crbug.com/1004304) bool disable_accelerated_small_canvases; + [EnableIf=is_android] + // Long press on links selects text instead of triggering context menu. + bool long_press_link_select_text; + // Disable the Web Authentication (WebAuthn) API. // TODO(crbug.com/1284805): Remove once WebView supports WebAuthn. [EnableIf=is_android] @@ -418,6 +422,11 @@ struct WebPreferences { // when to apply system color overrides to author specified styles. bool in_forced_colors; + // Indicates if Forced Colors mode should be disabled for this page. + // This allows users opt out of forced colors on specific sites. + // Forced colors are disabled for sites in the `kPageColorsBlockList` pref. + bool is_forced_colors_disabled; + // The preferred color scheme set by the user's browser settings. The variable // follows the browser's color mode setting unless a browser theme (custom or // not) is defined, in which case the color scheme is set to the default diff --git a/tools/under-control/src/third_party/blink/renderer/core/aom/accessible_node.idl b/tools/under-control/src/third_party/blink/renderer/core/aom/accessible_node.idl index 02775b6fe..04ce76e22 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/aom/accessible_node.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/aom/accessible_node.idl @@ -17,6 +17,7 @@ attribute DOMString? checked; attribute long? colCount; attribute unsigned long? colIndex; + [RuntimeEnabled=AriaRowColIndexText] attribute DOMString? colIndexText; attribute unsigned long? colSpan; attribute AccessibleNodeList? controls; attribute DOMString? current; @@ -49,6 +50,7 @@ attribute DOMString? roleDescription; attribute long? rowCount; attribute unsigned long? rowIndex; + [RuntimeEnabled=AriaRowColIndexText] attribute DOMString? rowIndexText; attribute unsigned long? rowSpan; attribute boolean? selected; attribute long? setSize; diff --git a/tools/under-control/src/third_party/blink/renderer/core/css/css_margin_rule.idl b/tools/under-control/src/third_party/blink/renderer/core/css/css_margin_rule.idl new file mode 100755 index 000000000..7b0b139d0 --- /dev/null +++ b/tools/under-control/src/third_party/blink/renderer/core/css/css_margin_rule.idl @@ -0,0 +1,13 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// https://drafts.csswg.org/cssom/#the-cssmarginrule-interface + +[ + Exposed=Window, + RuntimeEnabled=PageMarginBoxes +] interface CSSMarginRule : CSSRule { + readonly attribute DOMString name; + [SameObject, PutForwards=cssText] readonly attribute CSSStyleDeclaration style; +}; diff --git a/tools/under-control/src/third_party/blink/renderer/core/css/css_rule.idl b/tools/under-control/src/third_party/blink/renderer/core/css/css_rule.idl index 7235a3ba8..194f50e0a 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/css/css_rule.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/css/css_rule.idl @@ -29,8 +29,7 @@ const unsigned short MEDIA_RULE = 4; const unsigned short FONT_FACE_RULE = 5; const unsigned short PAGE_RULE = 6; - // TODO(foolip): Implement CSSMarginRule. - // const unsigned short MARGIN_RULE = 9; + [RuntimeEnabled=PageMarginBoxes] const unsigned short MARGIN_RULE = 9; const unsigned short NAMESPACE_RULE = 10; readonly attribute unsigned short type; attribute DOMString cssText; diff --git a/tools/under-control/src/third_party/blink/renderer/core/css/cssom/css_unit_values.idl b/tools/under-control/src/third_party/blink/renderer/core/css/cssom/css_unit_values.idl index fb28d054b..e5fa1a98f 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/css/cssom/css_unit_values.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/css/cssom/css_unit_values.idl @@ -14,15 +14,15 @@ [NewObject] CSSUnitValue em(double value); [NewObject] CSSUnitValue rem(double value); [NewObject] CSSUnitValue ex(double value); - [NewObject, RuntimeEnabled=CSSNumericFactoryCompleteness] CSSUnitValue rex(double value); + [NewObject] CSSUnitValue rex(double value); [NewObject] CSSUnitValue ch(double value); - [NewObject, RuntimeEnabled=CSSNumericFactoryCompleteness] CSSUnitValue rch(double value); - [NewObject, RuntimeEnabled=CSSNumericFactoryCompleteness] CSSUnitValue ic(double value); - [NewObject, RuntimeEnabled=CSSNumericFactoryCompleteness] CSSUnitValue ric(double value); - [NewObject, RuntimeEnabled=CSSNumericFactoryCompleteness] CSSUnitValue lh(double value); - [NewObject, RuntimeEnabled=CSSNumericFactoryCompleteness] CSSUnitValue rlh(double value); - [NewObject, RuntimeEnabled=CSSCapFontUnits] CSSUnitValue cap(double value); - [NewObject, RuntimeEnabled=CSSCapFontUnits] CSSUnitValue rcap(double value); + [NewObject] CSSUnitValue rch(double value); + [NewObject] CSSUnitValue ic(double value); + [NewObject] CSSUnitValue ric(double value); + [NewObject] CSSUnitValue lh(double value); + [NewObject] CSSUnitValue rlh(double value); + [NewObject] CSSUnitValue cap(double value); + [NewObject] CSSUnitValue rcap(double value); [NewObject] CSSUnitValue vw(double value); [NewObject] CSSUnitValue vh(double value); [NewObject] CSSUnitValue vi(double value); @@ -84,7 +84,7 @@ [NewObject] CSSUnitValue dpi(double value); [NewObject] CSSUnitValue dpcm(double value); [NewObject] CSSUnitValue dppx(double value); - [NewObject, RuntimeEnabled=CSSNumericFactoryCompleteness] CSSUnitValue x(double value); + [NewObject] CSSUnitValue x(double value); // [NewObject] CSSUnitValue fr(double value); diff --git a/tools/under-control/src/third_party/blink/renderer/core/dom/aria_attributes.idl b/tools/under-control/src/third_party/blink/renderer/core/dom/aria_attributes.idl index d0d951893..6c0777aac 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/dom/aria_attributes.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/dom/aria_attributes.idl @@ -14,6 +14,7 @@ interface mixin AriaAttributes { [CEReactions, Reflect=aria_checked] attribute DOMString? ariaChecked; [CEReactions, Reflect=aria_colcount] attribute DOMString? ariaColCount; [CEReactions, Reflect=aria_colindex] attribute DOMString? ariaColIndex; + [RuntimeEnabled=AriaRowColIndexText, CEReactions, Reflect=aria_colindextext] attribute DOMString? ariaColIndexText; [CEReactions, Reflect=aria_colspan] attribute DOMString? ariaColSpan; [CEReactions, Reflect=aria_current] attribute DOMString? ariaCurrent; [CEReactions, Reflect=aria_description] attribute DOMString? ariaDescription; @@ -39,6 +40,7 @@ interface mixin AriaAttributes { [CEReactions, Reflect=aria_roledescription] attribute DOMString? ariaRoleDescription; [CEReactions, Reflect=aria_rowcount] attribute DOMString? ariaRowCount; [CEReactions, Reflect=aria_rowindex] attribute DOMString? ariaRowIndex; + [RuntimeEnabled=AriaRowColIndexText, CEReactions, Reflect=aria_rowindextext] attribute DOMString? ariaRowIndexText; [CEReactions, Reflect=aria_rowspan] attribute DOMString? ariaRowSpan; [CEReactions, Reflect=aria_selected] attribute DOMString? ariaSelected; [CEReactions, Reflect=aria_setsize] attribute DOMString? ariaSetSize; 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 bda854f8f..e990d9295 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 @@ -141,6 +141,7 @@ dictionary CheckVisibilityOptions { readonly attribute long clientLeft; readonly attribute long clientWidth; readonly attribute long clientHeight; + [RuntimeEnabled=StandardizedBrowserZoom] readonly attribute double currentCSSZoom; // Used by both Anchor Positioning and Popover [CEReactions,RuntimeEnabled=HTMLAnchorAttribute] attribute Element? anchorElement; diff --git a/tools/under-control/src/third_party/blink/renderer/core/dom/invoker_element.idl b/tools/under-control/src/third_party/blink/renderer/core/dom/invoker_element.idl index 52a9d5aed..f7bf5d619 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/dom/invoker_element.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/dom/invoker_element.idl @@ -4,6 +4,6 @@ [RuntimeEnabled=HTMLInvokeTargetAttribute] interface mixin InvokerElement { - [CEReactions,Reflect=invoketarget] attribute Element? invokeTargetElement; - [CEReactions,Reflect=invokeaction] attribute DOMString invokeAction; + [CEReactions,Reflect=commandfor] attribute Element? commandForElement; + [CEReactions,Reflect=command] attribute DOMString command; }; diff --git a/tools/under-control/src/third_party/blink/renderer/core/dom/part_root.idl b/tools/under-control/src/third_party/blink/renderer/core/dom/part_root.idl index b647ecdc3..9078415fe 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/dom/part_root.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/dom/part_root.idl @@ -11,8 +11,13 @@ interface mixin PartRootMixin { // Retrieve the parts list for this PartRoot, always in tree order breaking // ties for a Node using the order Parts were constructed. sequence getParts(); - // Retrieve getParts()[index].NodeToSortBy. This is experimental. - [PerWorldBindings] Node getPartNode(unsigned long index); + // Retrieve the Nodes corresponding to the NodeParts returned by getParts(), + // without building the Part objects. + [RuntimeEnabled=DOMPartsAPIMinimal] sequence getNodePartNodes(); + // Retrieve the pairs of previous/next Nodes corresponding to the + // ChildNodeParts returned by getParts(), without building the Part objects. + // Nodes are paired, so for 3 ChildNodeParts, 6 Nodes will be returned. + [RuntimeEnabled=DOMPartsAPIMinimal] sequence getChildNodePartNodes(); // This clones the PartRoot, and also clones the Node tree itself, starting // at the RootContainer. In the case of a DocumentPartRoot, the entire // document tree is cloned. In the case of a ChildPartRoot, only the children diff --git a/tools/under-control/src/third_party/blink/renderer/core/editing/selection.idl b/tools/under-control/src/third_party/blink/renderer/core/editing/selection.idl index e328aa504..17689f4b0 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/editing/selection.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/editing/selection.idl @@ -58,6 +58,8 @@ [MeasureAs=SelectionContainsNode] boolean containsNode(Node node, optional boolean allowPartialContainment = false); [MeasureAs=SelectionDOMString] stringifier; + [RuntimeEnabled=SelectionAcrossShadowDOM] readonly attribute DOMString direction; + // Non-standard APIs // https://github.com/w3c/selection-api/issues/34 diff --git a/tools/under-control/src/third_party/blink/renderer/core/events/invoke_event.idl b/tools/under-control/src/third_party/blink/renderer/core/events/command_event.idl similarity index 56% rename from tools/under-control/src/third_party/blink/renderer/core/events/invoke_event.idl rename to tools/under-control/src/third_party/blink/renderer/core/events/command_event.idl index a12fdded6..4f9eec663 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/events/invoke_event.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/events/command_event.idl @@ -5,13 +5,13 @@ [ RuntimeEnabled=HTMLInvokeTargetAttribute, Exposed=Window -] interface InvokeEvent : Event { - constructor(DOMString type, optional InvokeEventInit eventInitDict = {}); +] interface CommandEvent : Event { + constructor(DOMString type, optional CommandEventInit eventInitDict = {}); readonly attribute Element? invoker; - readonly attribute DOMString action; + readonly attribute DOMString command; }; -dictionary InvokeEventInit : EventInit { +dictionary CommandEventInit : EventInit { Element? invoker = null; - DOMString action = ""; + DOMString command = ""; }; 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 185e1208d..988721dcb 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 @@ -77,6 +77,7 @@ "click", "close", "closing", + "command", "complete", "compositionend", "compositionstart", @@ -168,7 +169,6 @@ "inputreport", "inputsourceschange", "interest", - "invoke", "install", "interfacerequest", "invalid", @@ -244,7 +244,6 @@ "popstate", "popoverhide", "popovershow", - "portalactivate", "prerenderingchange", "prioritychange", "progress", 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 970a6abb2..7f82ae8c0 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; - [MeasureAs=PointerEventAttributeCount, RuntimeEnabled=PointerEventDeviceId] readonly attribute DeviceProperties? deviceProperties; + [Measure, RuntimeEnabled=PointerEventDeviceId] readonly attribute long persistentDeviceId; // 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 1821e4ebb..81387bf89 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; - DeviceProperties? deviceProperties = null; + long persistentDeviceId = 0; // 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 65c00aae8..36bd7ee7e 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 @@ -462,6 +462,21 @@ SkFontHinting RendererPreferencesToSkiaHinting( } #endif // !BUILDFLAG(IS_MAC) && !BUILDFLAG(IS_WIN) +void ForEachFrameWidgetControlledByView( + WebViewImpl& web_view, + base::FunctionRef callback) { + for (WebFrame* frame = web_view.MainFrame(); frame; + frame = frame->TraverseNext()) { + if (auto* frame_impl = DynamicTo(frame)) { + if (frame_impl->GetFrame()->IsLocalRoot()) { + if (auto* widget = frame_impl->FrameWidgetImpl()) { + callback(widget); + } + } + } + } +} + } // namespace // WebView ---------------------------------------------------------------- @@ -470,7 +485,6 @@ WebView* WebView::Create( WebViewClient* client, bool is_hidden, blink::mojom::PrerenderParamPtr prerender_param, - bool is_inside_portal, std::optional fenced_frame_mode, bool compositing_enabled, @@ -487,18 +501,17 @@ WebView* WebView::Create( client, is_hidden ? mojom::blink::PageVisibilityState::kHidden : mojom::blink::PageVisibilityState::kVisible, - std::move(prerender_param), is_inside_portal, fenced_frame_mode, - compositing_enabled, widgets_never_composited, To(opener), - std::move(page_handle), agent_group_scheduler, - session_storage_namespace_id, std::move(page_base_background_color), - browsing_context_group_info, color_provider_colors); + std::move(prerender_param), fenced_frame_mode, compositing_enabled, + widgets_never_composited, To(opener), std::move(page_handle), + agent_group_scheduler, session_storage_namespace_id, + std::move(page_base_background_color), browsing_context_group_info, + color_provider_colors); } WebViewImpl* WebViewImpl::Create( WebViewClient* client, mojom::blink::PageVisibilityState visibility, blink::mojom::PrerenderParamPtr prerender_param, - bool is_inside_portal, std::optional fenced_frame_mode, bool compositing_enabled, @@ -511,8 +524,8 @@ WebViewImpl* WebViewImpl::Create( const BrowsingContextGroupInfo& browsing_context_group_info, const ColorProviderColorMaps* color_provider_colors) { return new WebViewImpl( - client, visibility, std::move(prerender_param), is_inside_portal, - fenced_frame_mode, compositing_enabled, widgets_never_composited, opener, + client, visibility, std::move(prerender_param), fenced_frame_mode, + compositing_enabled, widgets_never_composited, opener, std::move(page_handle), agent_group_scheduler, session_storage_namespace_id, std::move(page_base_background_color), browsing_context_group_info, color_provider_colors); @@ -569,7 +582,6 @@ WebViewImpl::WebViewImpl( WebViewClient* client, mojom::blink::PageVisibilityState visibility, blink::mojom::PrerenderParamPtr prerender_param, - bool is_inside_portal, std::optional fenced_frame_mode, bool does_composite, @@ -584,8 +596,10 @@ WebViewImpl::WebViewImpl( : widgets_never_composited_(widgets_never_composited), web_view_client_(client), chrome_client_(MakeGarbageCollected(this)), - minimum_zoom_level_(PageZoomFactorToZoomLevel(kMinimumPageZoomFactor)), - maximum_zoom_level_(PageZoomFactorToZoomLevel(kMaximumPageZoomFactor)), + minimum_zoom_level_( + blink::ZoomFactorToZoomLevel(kMinimumBrowserZoomFactor)), + maximum_zoom_level_( + blink::ZoomFactorToZoomLevel(kMaximumBrowserZoomFactor)), does_composite_(does_composite), fullscreen_controller_(std::make_unique(this)), page_base_background_color_( @@ -618,10 +632,10 @@ WebViewImpl::WebViewImpl( page_->SetIsPrerendering(true); page_->SetPrerenderMetricSuffix( String(prerender_param->page_metric_suffix)); + page_->SetShouldWarmUpCompositorOnPrerender( + prerender_param->should_warm_up_compositor); } - // TODO(crbug.com/40287334): Remove the is_inside_portal parameter. - if (fenced_frame_mode && features::IsFencedFramesEnabled()) { page_->SetIsMainFrameFencedFrameRoot(); page_->SetDeprecatedFencedFrameMode(*fenced_frame_mode); @@ -1281,6 +1295,11 @@ void WebViewImpl::DidUpdateBrowserControls() { visual_viewport.SetBrowserControlsAdjustment( GetBrowserControls().UnreportedSizeAdjustment()); } + + if (RuntimeEnabledFeatures::DynamicSafeAreaInsetsEnabled() && + RuntimeEnabledFeatures::DynamicSafeAreaInsetsOnScrollEnabled()) { + GetPage()->UpdateSafeAreaInsetWithBrowserControls(GetBrowserControls()); + } } BrowserControls& WebViewImpl::GetBrowserControls() { @@ -1299,6 +1318,11 @@ void WebViewImpl::ResizeViewWhileAnchored( if (old_viewport_shrink != GetBrowserControls().ShrinkViewport()) MainFrameImpl()->GetFrameView()->DynamicViewportUnitsChanged(); + if (RuntimeEnabledFeatures::DynamicSafeAreaInsetsEnabled()) { + GetPage()->UpdateSafeAreaInsetWithBrowserControls(GetBrowserControls(), + /* force_update= */ true); + } + { // Avoids unnecessary invalidations while various bits of state in // TextAutosizer are updated. @@ -1749,6 +1773,8 @@ void WebView::ApplyWebPreferences(const web_pref::WebPreferences& prefs, prefs.scroll_top_left_interop_enabled); RuntimeEnabledFeatures::SetAcceleratedSmallCanvasesEnabled( !prefs.disable_accelerated_small_canvases); + RuntimeEnabledFeatures::SetLongPressLinkSelectTextEnabled( + prefs.long_press_link_select_text); #endif // BUILDFLAG(IS_ANDROID) #if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_FUCHSIA) @@ -1795,6 +1821,7 @@ void WebView::ApplyWebPreferences(const web_pref::WebPreferences& prefs, settings->SetLazyLoadEnabled(prefs.lazy_load_enabled); settings->SetInForcedColors(prefs.in_forced_colors); + settings->SetIsForcedColorsDisabled(prefs.is_forced_colors_disabled); settings->SetPreferredRootScrollbarColorScheme( prefs.preferred_root_scrollbar_color_scheme); settings->SetPreferredColorScheme(prefs.preferred_color_scheme); @@ -1889,14 +1916,17 @@ void WebViewImpl::SetPageFocus(bool enable) { if (enable) { LocalFrame* focused_frame = page_->GetFocusController().FocusedFrame(); if (focused_frame) { + // TODO(editing-dev): The use of UpdateStyleAndLayout needs to be audited. + // See http://crbug.com/590369 for more details. + focused_frame->GetDocument()->UpdateStyleAndLayout( + DocumentUpdateReason::kFocus); Element* element = focused_frame->GetDocument()->FocusedElement(); if (element && focused_frame->Selection() - .ComputeVisibleSelectionInDOMTreeDeprecated() + .ComputeVisibleSelectionInDOMTree() .IsNone()) { // If the selection was cleared while the WebView was not // focused, then the focus element shows with a focus ring but // no caret and does respond to keyboard inputs. - focused_frame->GetDocument()->UpdateStyleAndLayoutTree(); if (element->IsTextControl()) { element->UpdateSelectionOnFocus(SelectionBehaviorOnFocus::kRestore); } else if (IsEditable(*element)) { @@ -2187,7 +2217,7 @@ void WebViewImpl::ComputeScaleAndScrollForEditableElementRects( 2 * caret_bounds_in_content.height() ? minReadableCaretHeightForTextArea : minReadableCaretHeight) * - MainFrameImpl()->GetFrame()->PageZoomFactor(); + MainFrameImpl()->GetFrame()->LayoutZoomFactor(); new_scale = ClampPageScaleFactorToLimits( MaximumLegiblePageScale() * min_readable_caret_height_for_node / caret_bounds_in_content.height()); @@ -2274,45 +2304,52 @@ void WebViewImpl::AdvanceFocus(bool reverse) { : mojom::blink::FocusType::kForward); } -double WebViewImpl::ClampZoomLevel(double zoom_level) { - if (zoom_level < minimum_zoom_level_) { - return minimum_zoom_level_; - } - if (zoom_level > maximum_zoom_level_) { - return maximum_zoom_level_; - } - return zoom_level; +double WebViewImpl::ClampZoomLevel(double zoom_level) const { + return std::max(minimum_zoom_level_, + std::min(maximum_zoom_level_, zoom_level)); } -double WebViewImpl::SetMainFrameZoomLevel(double zoom_level) { +double WebViewImpl::ZoomLevelToZoomFactor(double zoom_level, + bool for_main_frame) const { + double zoom_factor = blink::ZoomLevelToZoomFactor(zoom_level); + if (for_main_frame && zoom_factor_override_) { + zoom_factor = zoom_factor_override_; + } if (zoom_factor_for_device_scale_factor_) { if (compositor_device_scale_factor_override_) { - page_->SetInspectorDeviceScaleFactorOverride( - zoom_factor_for_device_scale_factor_ / - compositor_device_scale_factor_override_); + zoom_factor *= compositor_device_scale_factor_override_; } else { - page_->SetInspectorDeviceScaleFactorOverride(1.0f); + zoom_factor *= zoom_factor_for_device_scale_factor_; } } + return zoom_factor; +} - float zoom_factor = - zoom_factor_override_ - ? zoom_factor_override_ - : static_cast(PageZoomLevelToZoomFactor(zoom_level)); +double WebViewImpl::ZoomFactorToZoomLevel(double zoom_factor) const { if (zoom_factor_for_device_scale_factor_) { if (compositor_device_scale_factor_override_) { - zoom_factor *= compositor_device_scale_factor_override_; + zoom_factor /= compositor_device_scale_factor_override_; } else { - zoom_factor *= zoom_factor_for_device_scale_factor_; + zoom_factor /= zoom_factor_for_device_scale_factor_; } } - return zoom_factor; + return blink::ZoomFactorToZoomLevel(zoom_factor); } -void WebViewImpl::RecomputeMainFrameZoomFactor() { - if (auto* main_frame = MainFrameImpl()) { - if (auto* widget = main_frame->FrameWidgetImpl()) { - widget->SetZoomLevel(widget->GetZoomLevel()); +void WebViewImpl::UpdateWidgetZoomFactors() { + ForEachFrameWidgetControlledByView(*this, [](WebFrameWidgetImpl* widget) { + widget->SetZoomLevel(widget->GetZoomLevel()); + }); +} + +void WebViewImpl::UpdateInspectorDeviceScaleFactorOverride() { + if (zoom_factor_for_device_scale_factor_) { + if (compositor_device_scale_factor_override_) { + page_->SetInspectorDeviceScaleFactorOverride( + zoom_factor_for_device_scale_factor_ / + compositor_device_scale_factor_override_); + } else { + page_->SetInspectorDeviceScaleFactorOverride(1.0f); } } } @@ -2366,10 +2403,12 @@ void WebViewImpl::SetPageScaleFactor(float scale_factor) { void WebViewImpl::SetZoomFactorForDeviceScaleFactor( float zoom_factor_for_device_scale_factor) { DCHECK(does_composite_); - // We can't early-return here if these are already equal, because we may - // need to propagate the correct zoom factor to newly navigated frames. - zoom_factor_for_device_scale_factor_ = zoom_factor_for_device_scale_factor; - RecomputeMainFrameZoomFactor(); + if (zoom_factor_for_device_scale_factor_ != + zoom_factor_for_device_scale_factor) { + zoom_factor_for_device_scale_factor_ = zoom_factor_for_device_scale_factor; + UpdateWidgetZoomFactors(); + UpdateInspectorDeviceScaleFactorOverride(); + } } void WebViewImpl::SetPageLifecycleStateFromNewPageCommit( @@ -3213,12 +3252,12 @@ void WebViewImpl::ConfigureAutoResizeMode() { void WebViewImpl::SetCompositorDeviceScaleFactorOverride( float device_scale_factor) { - if (compositor_device_scale_factor_override_ == device_scale_factor) - return; - compositor_device_scale_factor_override_ = device_scale_factor; - if (zoom_factor_for_device_scale_factor_) { - RecomputeMainFrameZoomFactor(); - return; + if (compositor_device_scale_factor_override_ != device_scale_factor) { + compositor_device_scale_factor_override_ = device_scale_factor; + if (zoom_factor_for_device_scale_factor_) { + UpdateWidgetZoomFactors(); + UpdateInspectorDeviceScaleFactorOverride(); + } } } @@ -3307,8 +3346,7 @@ void WebViewImpl::UpdateColorProviders( bool color_providers_did_change = page_->UpdateColorProviders(color_provider_colors); if (color_providers_did_change) { - Page::PlatformColorsChanged(); - Page::ColorSchemeChanged(); + Page::ForcedColorsChanged(); } } @@ -3763,7 +3801,11 @@ void WebViewImpl::SetBackgroundColorOverrideForFullscreenController( void WebViewImpl::SetZoomFactorOverride(float zoom_factor) { zoom_factor_override_ = zoom_factor; - RecomputeMainFrameZoomFactor(); + // This only affects the local main frame, so no need to propagate to all + // frame widgets. + if (web_widget_) { + web_widget_->SetZoomLevel(web_widget_->GetZoomLevel()); + } } Element* WebViewImpl::FocusedElement() const { 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 fd10a6aa2..af6df2234 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 @@ -1088,7 +1088,13 @@ { name: "inForcedColors", initial: false, - invalidate: ["ColorScheme"], + type: "bool", + }, + + { + name: "isForcedColorsDisabled", + initial: false, + invalidate: ["ForcedColors"], type: "bool", }, diff --git a/tools/under-control/src/third_party/blink/renderer/core/html/canvas/text_metrics.idl b/tools/under-control/src/third_party/blink/renderer/core/html/canvas/text_metrics.idl index 33b847e94..ca9db2136 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/html/canvas/text_metrics.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/html/canvas/text_metrics.idl @@ -43,6 +43,11 @@ interface TextMetrics { [RuntimeEnabled=ExtendedTextMetrics] readonly attribute double emHeightAscent; [RuntimeEnabled=ExtendedTextMetrics] readonly attribute double emHeightDescent; + // For editing, to get the text offset at a point + [RuntimeEnabled=ExtendedTextMetrics] unsigned long caretPositionFromPoint(double x); + // For selection [RuntimeEnabled=ExtendedTextMetrics, RaisesException] sequence getSelectionRects([EnforceRange] unsigned long start, [EnforceRange] unsigned long end); + // For bounding box + [RuntimeEnabled=ExtendedTextMetrics, RaisesException] DOMRectReadOnly getActualBoundingBox([EnforceRange] unsigned long start, [EnforceRange] unsigned long end); }; 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 deleted file mode 100755 index 537c0d88a..000000000 --- a/tools/under-control/src/third_party/blink/renderer/core/input/device_properties.idl +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2024 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -[ - 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/navigation_api/navigation.idl b/tools/under-control/src/third_party/blink/renderer/core/navigation_api/navigation.idl index 259fb1192..77ff4d84a 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/navigation_api/navigation.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/navigation_api/navigation.idl @@ -9,19 +9,19 @@ ] interface Navigation : EventTarget { readonly attribute NavigationHistoryEntry? currentEntry; sequence entries(); - [RaisesException, MeasureAs=AppHistory] void updateCurrentEntry(NavigationUpdateCurrentEntryOptions options); + [RaisesException, MeasureAs=NavigationAPI] void updateCurrentEntry(NavigationUpdateCurrentEntryOptions options); readonly attribute NavigationTransition? transition; [RuntimeEnabled=NavigationActivation] readonly attribute NavigationActivation? activation; readonly attribute boolean canGoBack; readonly attribute boolean canGoForward; - [CallWith=ScriptState, MeasureAs=AppHistory] NavigationResult navigate(USVString url, optional NavigationNavigateOptions options = {}); - [CallWith=ScriptState, MeasureAs=AppHistory] NavigationResult reload(optional NavigationReloadOptions options = {}); + [CallWith=ScriptState, MeasureAs=NavigationAPI] NavigationResult navigate(USVString url, optional NavigationNavigateOptions options = {}); + [CallWith=ScriptState, MeasureAs=NavigationAPI] NavigationResult reload(optional NavigationReloadOptions options = {}); - [CallWith=ScriptState, MeasureAs=AppHistory] NavigationResult traverseTo(DOMString key, optional NavigationOptions options = {}); - [CallWith=ScriptState, MeasureAs=AppHistory] NavigationResult back(optional NavigationOptions options = {}); - [CallWith=ScriptState, MeasureAs=AppHistory] NavigationResult forward(optional NavigationOptions options = {}); + [CallWith=ScriptState, MeasureAs=NavigationAPI] NavigationResult traverseTo(DOMString key, optional NavigationOptions options = {}); + [CallWith=ScriptState, MeasureAs=NavigationAPI] NavigationResult back(optional NavigationOptions options = {}); + [CallWith=ScriptState, MeasureAs=NavigationAPI] NavigationResult forward(optional NavigationOptions options = {}); attribute EventHandler onnavigate; attribute EventHandler onnavigatesuccess; 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 8872babe9..0068d3934 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 @@ -10,7 +10,6 @@ #include "base/feature_list.h" #include "base/time/time.h" #include "components/attribution_reporting/features.h" -#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" @@ -18,7 +17,6 @@ #include "third_party/blink/public/common/origin_trials/trial_token.h" #include "third_party/blink/public/common/origin_trials/trial_token_result.h" #include "third_party/blink/public/common/origin_trials/trial_token_validator.h" -#include "third_party/blink/public/mojom/frame/frame.mojom-blink.h" #include "third_party/blink/public/mojom/origin_trial_feature/origin_trial_feature.mojom-shared.h" #include "third_party/blink/public/platform/platform.h" #include "third_party/blink/public/platform/web_security_origin.h" @@ -28,7 +26,6 @@ #include "third_party/blink/renderer/bindings/core/v8/worker_or_worklet_script_controller.h" #include "third_party/blink/renderer/core/dom/document.h" #include "third_party/blink/renderer/core/execution_context/execution_context.h" -#include "third_party/blink/renderer/core/frame/attribution_src_loader.h" #include "third_party/blink/renderer/core/frame/local_dom_window.h" #include "third_party/blink/renderer/core/frame/local_frame.h" #include "third_party/blink/renderer/core/frame/settings.h" @@ -446,24 +443,6 @@ bool OriginTrialContext::InstallSettingFeature( if (document.GetSettings()) document.GetSettings()->SetForceDarkModeEnabled(true); return true; - case mojom::blink::OriginTrialFeature::kAttributionReportingCrossAppWeb: - static_assert( - network::AttributionReportingRuntimeFeature::kMaxValue == - network::AttributionReportingRuntimeFeature::kCrossAppWeb, - "Any new attribution reporting runtime features with an associated " - "origin trial feature need to be able to update the browser when the " - "OT feature is installed. If your new runtime feature also has an OT " - "feature, please add a switch case for the new feature."); - // Tell the browser about this change, but return false so the feature can - // still be installed using the default method. - document.GetFrame() - ->GetLocalFrameHostRemote() - .SetAttributionReportingRuntimeFeatures( - document.GetFrame() - ->GetAttributionSrcLoader() - ->GetRuntimeFeatures()); - return false; - default: return false; } @@ -515,9 +494,6 @@ void OriginTrialContext::AddForceEnabledTrials( } bool OriginTrialContext::CanEnableTrialFromName(const StringView& trial_name) { - if (trial_name == "PrivacySandboxAdsAPIs") - return base::FeatureList::IsEnabled(features::kPrivacySandboxAdsAPIs); - if (trial_name == "FledgeBiddingAndAuctionServer") { return base::FeatureList::IsEnabled(features::kInterestGroupStorage) && base::FeatureList::IsEnabled( @@ -548,13 +524,6 @@ bool OriginTrialContext::CanEnableTrialFromName(const StringView& trial_name) { network::features::kCompressionDictionaryTransportBackend); } - if (trial_name == "AttributionReportingCrossAppWeb") { - return base::FeatureList::IsEnabled( - attribution_reporting::features::kConversionMeasurement) && - base::FeatureList::IsEnabled( - network::features::kAttributionReportingCrossAppWeb); - } - if (trial_name == "SoftNavigationHeuristics") { return base::FeatureList::IsEnabled(features::kSoftNavigationDetection); } @@ -571,42 +540,6 @@ bool OriginTrialContext::CanEnableTrialFromName(const StringView& trial_name) { return true; } -Vector -OriginTrialContext::RestrictedFeaturesForTrial(const String& trial_name) { - if (trial_name == "PrivacySandboxAdsAPIs") { - Vector restricted; - if (!base::FeatureList::IsEnabled(features::kInterestGroupStorage)) { - restricted.push_back(mojom::blink::OriginTrialFeature::kFledge); - } - if (!base::FeatureList::IsEnabled(features::kBrowsingTopics)) { - restricted.push_back(mojom::blink::OriginTrialFeature::kTopicsAPI); - } - if (!base::FeatureList::IsEnabled(features::kBrowsingTopics) || - !base::FeatureList::IsEnabled(features::kBrowsingTopicsDocumentAPI)) { - restricted.push_back( - mojom::blink::OriginTrialFeature::kTopicsDocumentAPI); - } - if (!base::FeatureList::IsEnabled( - attribution_reporting::features::kConversionMeasurement)) { - restricted.push_back( - mojom::blink::OriginTrialFeature::kAttributionReporting); - } - if (!base::FeatureList::IsEnabled(features::kFencedFrames)) { - restricted.push_back(mojom::blink::OriginTrialFeature::kFencedFrames); - } - if (!base::FeatureList::IsEnabled(features::kSharedStorageAPI)) { - restricted.push_back(mojom::blink::OriginTrialFeature::kSharedStorageAPI); - } - if (!base::FeatureList::IsEnabled(features::kFencedFramesAPIChanges)) { - restricted.push_back( - mojom::blink::OriginTrialFeature::kFencedFramesAPIChanges); - } - return restricted; - } - - return {}; -} - OriginTrialFeaturesEnabled OriginTrialContext::EnableTrialFromName( const String& trial_name, base::Time expiry_time) { @@ -619,9 +552,6 @@ OriginTrialFeaturesEnabled OriginTrialContext::EnableTrialFromName( return result; } - Vector restricted = - RestrictedFeaturesForTrial(trial_name); - bool did_enable_feature = false; for (mojom::blink::OriginTrialFeature feature : origin_trials::FeaturesForTrial(trial_name.Utf8())) { @@ -631,13 +561,6 @@ OriginTrialFeaturesEnabled OriginTrialContext::EnableTrialFromName( continue; } - if (restricted.Contains(feature)) { - DVLOG(1) << "EnableTrialFromName: feature " << static_cast(feature) - << " is restricted from being enabled via the trial: " - << trial_name << "."; - continue; - } - did_enable_feature = true; enabled_features_.insert(feature); origin_trial_features.push_back(feature); diff --git a/tools/under-control/src/third_party/blink/renderer/core/dom/idle_deadline.idl b/tools/under-control/src/third_party/blink/renderer/core/scheduler/idle_deadline.idl similarity index 100% rename from tools/under-control/src/third_party/blink/renderer/core/dom/idle_deadline.idl rename to tools/under-control/src/third_party/blink/renderer/core/scheduler/idle_deadline.idl diff --git a/tools/under-control/src/third_party/blink/renderer/core/dom/idle_request_callback.idl b/tools/under-control/src/third_party/blink/renderer/core/scheduler/idle_request_callback.idl similarity index 100% rename from tools/under-control/src/third_party/blink/renderer/core/dom/idle_request_callback.idl rename to tools/under-control/src/third_party/blink/renderer/core/scheduler/idle_request_callback.idl diff --git a/tools/under-control/src/third_party/blink/renderer/core/dom/idle_request_options.idl b/tools/under-control/src/third_party/blink/renderer/core/scheduler/idle_request_options.idl similarity index 100% rename from tools/under-control/src/third_party/blink/renderer/core/dom/idle_request_options.idl rename to tools/under-control/src/third_party/blink/renderer/core/scheduler/idle_request_options.idl diff --git a/tools/under-control/src/third_party/blink/renderer/modules/scheduler/scheduler.idl b/tools/under-control/src/third_party/blink/renderer/core/scheduler/scheduler.idl similarity index 100% rename from tools/under-control/src/third_party/blink/renderer/modules/scheduler/scheduler.idl rename to tools/under-control/src/third_party/blink/renderer/core/scheduler/scheduler.idl diff --git a/tools/under-control/src/third_party/blink/renderer/modules/scheduler/scheduler_post_task_callback.idl b/tools/under-control/src/third_party/blink/renderer/core/scheduler/scheduler_post_task_callback.idl similarity index 100% rename from tools/under-control/src/third_party/blink/renderer/modules/scheduler/scheduler_post_task_callback.idl rename to tools/under-control/src/third_party/blink/renderer/core/scheduler/scheduler_post_task_callback.idl diff --git a/tools/under-control/src/third_party/blink/renderer/modules/scheduler/scheduler_post_task_options.idl b/tools/under-control/src/third_party/blink/renderer/core/scheduler/scheduler_post_task_options.idl similarity index 100% rename from tools/under-control/src/third_party/blink/renderer/modules/scheduler/scheduler_post_task_options.idl rename to tools/under-control/src/third_party/blink/renderer/core/scheduler/scheduler_post_task_options.idl diff --git a/tools/under-control/src/third_party/blink/renderer/modules/scheduler/scheduler_yield_options.idl b/tools/under-control/src/third_party/blink/renderer/core/scheduler/scheduler_yield_options.idl similarity index 100% rename from tools/under-control/src/third_party/blink/renderer/modules/scheduler/scheduler_yield_options.idl rename to tools/under-control/src/third_party/blink/renderer/core/scheduler/scheduler_yield_options.idl diff --git a/tools/under-control/src/third_party/blink/renderer/modules/scheduler/script_wrappable_task_state.idl b/tools/under-control/src/third_party/blink/renderer/core/scheduler/script_wrappable_task_state.idl similarity index 100% rename from tools/under-control/src/third_party/blink/renderer/modules/scheduler/script_wrappable_task_state.idl rename to tools/under-control/src/third_party/blink/renderer/core/scheduler/script_wrappable_task_state.idl diff --git a/tools/under-control/src/third_party/blink/renderer/modules/scheduler/task_controller.idl b/tools/under-control/src/third_party/blink/renderer/core/scheduler/task_controller.idl similarity index 100% rename from tools/under-control/src/third_party/blink/renderer/modules/scheduler/task_controller.idl rename to tools/under-control/src/third_party/blink/renderer/core/scheduler/task_controller.idl diff --git a/tools/under-control/src/third_party/blink/renderer/modules/scheduler/task_controller_init.idl b/tools/under-control/src/third_party/blink/renderer/core/scheduler/task_controller_init.idl similarity index 100% rename from tools/under-control/src/third_party/blink/renderer/modules/scheduler/task_controller_init.idl rename to tools/under-control/src/third_party/blink/renderer/core/scheduler/task_controller_init.idl diff --git a/tools/under-control/src/third_party/blink/renderer/modules/scheduler/task_priority_change_event.idl b/tools/under-control/src/third_party/blink/renderer/core/scheduler/task_priority_change_event.idl similarity index 100% rename from tools/under-control/src/third_party/blink/renderer/modules/scheduler/task_priority_change_event.idl rename to tools/under-control/src/third_party/blink/renderer/core/scheduler/task_priority_change_event.idl diff --git a/tools/under-control/src/third_party/blink/renderer/modules/scheduler/task_priority_change_event_init.idl b/tools/under-control/src/third_party/blink/renderer/core/scheduler/task_priority_change_event_init.idl similarity index 100% rename from tools/under-control/src/third_party/blink/renderer/modules/scheduler/task_priority_change_event_init.idl rename to tools/under-control/src/third_party/blink/renderer/core/scheduler/task_priority_change_event_init.idl diff --git a/tools/under-control/src/third_party/blink/renderer/modules/scheduler/task_signal.idl b/tools/under-control/src/third_party/blink/renderer/core/scheduler/task_signal.idl similarity index 100% rename from tools/under-control/src/third_party/blink/renderer/modules/scheduler/task_signal.idl rename to tools/under-control/src/third_party/blink/renderer/core/scheduler/task_signal.idl diff --git a/tools/under-control/src/third_party/blink/renderer/modules/scheduler/task_signal_any_init.idl b/tools/under-control/src/third_party/blink/renderer/core/scheduler/task_signal_any_init.idl similarity index 100% rename from tools/under-control/src/third_party/blink/renderer/modules/scheduler/task_signal_any_init.idl rename to tools/under-control/src/third_party/blink/renderer/core/scheduler/task_signal_any_init.idl diff --git a/tools/under-control/src/third_party/blink/renderer/modules/scheduler/window_idle_tasks.idl b/tools/under-control/src/third_party/blink/renderer/core/scheduler/window_idle_tasks.idl similarity index 100% rename from tools/under-control/src/third_party/blink/renderer/modules/scheduler/window_idle_tasks.idl rename to tools/under-control/src/third_party/blink/renderer/core/scheduler/window_idle_tasks.idl diff --git a/tools/under-control/src/third_party/blink/renderer/modules/scheduler/window_or_worker_global_scope_timers.idl b/tools/under-control/src/third_party/blink/renderer/core/scheduler/window_or_worker_global_scope_timers.idl similarity index 100% rename from tools/under-control/src/third_party/blink/renderer/modules/scheduler/window_or_worker_global_scope_timers.idl rename to tools/under-control/src/third_party/blink/renderer/core/scheduler/window_or_worker_global_scope_timers.idl diff --git a/tools/under-control/src/third_party/blink/renderer/modules/scheduler/window_or_worker_scheduler.idl b/tools/under-control/src/third_party/blink/renderer/core/scheduler/window_or_worker_scheduler.idl similarity index 100% rename from tools/under-control/src/third_party/blink/renderer/modules/scheduler/window_or_worker_scheduler.idl rename to tools/under-control/src/third_party/blink/renderer/core/scheduler/window_or_worker_scheduler.idl 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 963222781..dac9289c1 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 @@ -219,7 +219,7 @@ interface Internals { [RaisesException] void setPageScaleFactor(float scaleFactor); [RaisesException] void setPageScaleFactorLimits(float minScaleFactor, float maxScaleFactor); - [RaisesException] float pageZoomFactor(); + [RaisesException] float layoutZoomFactor(); [RaisesException] void setIsCursorVisible(Document document, boolean isVisible); void setMaxNumberOfFramesToTen(boolean enable); diff --git a/tools/under-control/src/third_party/blink/renderer/core/view_transition/page_reveal_event.idl b/tools/under-control/src/third_party/blink/renderer/core/view_transition/page_reveal_event.idl index d5b6adc0b..97556f439 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/view_transition/page_reveal_event.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/view_transition/page_reveal_event.idl @@ -2,11 +2,11 @@ // 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-view-transitions-2/#reveal-event - +// https://html.spec.whatwg.org/multipage/nav-history-apis.html#pagerevealevent [ Exposed=Window, RuntimeEnabled=PageRevealEvent ] interface PageRevealEvent : Event { + constructor(DOMString type, optional PageRevealEventInit eventInitDict = {}); [RuntimeEnabled=ViewTransitionOnNavigation] readonly attribute ViewTransition? viewTransition; }; diff --git a/tools/under-control/src/third_party/blink/renderer/core/view_transition/page_reveal_event_init.idl b/tools/under-control/src/third_party/blink/renderer/core/view_transition/page_reveal_event_init.idl new file mode 100755 index 000000000..7ad41ff16 --- /dev/null +++ b/tools/under-control/src/third_party/blink/renderer/core/view_transition/page_reveal_event_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://html.spec.whatwg.org/multipage/nav-history-apis.html#pagerevealeventinit + +dictionary PageRevealEventInit : EventInit { + ViewTransition? viewTransition = null; +}; diff --git a/tools/under-control/src/third_party/blink/renderer/core/view_transition/page_swap_event.idl b/tools/under-control/src/third_party/blink/renderer/core/view_transition/page_swap_event.idl index b4e21a940..35aeb4888 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/view_transition/page_swap_event.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/view_transition/page_swap_event.idl @@ -2,10 +2,12 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +// https://html.spec.whatwg.org/multipage/nav-history-apis.html#pageswapevent [ Exposed=Window, RuntimeEnabled=PageSwapEvent ] interface PageSwapEvent : Event { + constructor(DOMString type, optional PageSwapEventInit eventInitDict = {}); [RuntimeEnabled=ViewTransitionOnNavigation] readonly attribute ViewTransition? viewTransition; readonly attribute NavigationActivation? activation; }; diff --git a/tools/under-control/src/third_party/blink/renderer/core/view_transition/page_swap_event_init.idl b/tools/under-control/src/third_party/blink/renderer/core/view_transition/page_swap_event_init.idl new file mode 100755 index 000000000..54aa6327f --- /dev/null +++ b/tools/under-control/src/third_party/blink/renderer/core/view_transition/page_swap_event_init.idl @@ -0,0 +1,10 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// https://html.spec.whatwg.org/multipage/nav-history-apis.html#pageswapeventinit + +dictionary PageSwapEventInit : EventInit { + NavigationActivation? activation = null; + ViewTransition? viewTransition = null; +}; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/ai/ai.idl b/tools/under-control/src/third_party/blink/renderer/modules/ai/ai.idl index a7eb1b30f..2f7fdeaf1 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/ai/ai.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/ai/ai.idl @@ -2,7 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// TODO(crbug.com/343126579): Add link to spec/explainer. +// https://github.com/explainers-by-googlers/prompt-api + enum AIModelAvailability { "readily", "after-download", @@ -11,50 +12,29 @@ enum AIModelAvailability { [ Exposed=Window, - RuntimeEnabled=ModelExecutionAPI + RuntimeEnabled=BuiltInAIAPI ] interface AI { [ Measure, CallWith=ScriptState, - RaisesException + RaisesException, + RuntimeEnabled=AIPromptAPI ] Promise canCreateTextSession(); - [ - Measure, - ImplementedAs=canCreateTextSession, - CallWith=ScriptState, - RaisesException - ] - Promise canCreateGenericSession(); [ Measure, CallWith=ScriptState, - RaisesException + RaisesException, + RuntimeEnabled=AIPromptAPI ] Promise createTextSession( optional AITextSessionOptions options = {} ); - [ - Measure, - ImplementedAs=createTextSession, - CallWith=ScriptState, - RaisesException - ] - Promise createGenericSession( - optional AITextSessionOptions options = {} - ); [ Measure, CallWith=ScriptState, RaisesException ] Promise defaultTextSessionOptions(); - [ - Measure, - ImplementedAs=defaultTextSessionOptions, - CallWith=ScriptState, - RaisesException - ] - Promise defaultGenericSessionOptions(); }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_text_session.idl b/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_text_session.idl index 37d9b76bd..13a0092fe 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_text_session.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_text_session.idl @@ -2,38 +2,27 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// TODO(crbug.com/343126579): Add link to spec/explainer. +// https://github.com/explainers-by-googlers/prompt-api + [ Exposed=Window, - RuntimeEnabled=ModelExecutionAPI + RuntimeEnabled=AIPromptAPI ] interface AITextSession { [ Measure, CallWith=ScriptState, - RaisesException + RaisesException, + RuntimeEnabled=AIPromptAPI ] Promise prompt(DOMString input); [ Measure, - ImplementedAs=prompt, CallWith=ScriptState, - RaisesException - ] - Promise execute(DOMString input); - [ - Measure, - CallWith=ScriptState, - RaisesException + RaisesException, + RuntimeEnabled=AIPromptAPI ] ReadableStream promptStreaming(DOMString input); - [ - Measure, - ImplementedAs=promptStreaming, - CallWith=ScriptState, - RaisesException - ] - Promise executeStreaming(DOMString input); [ Measure, CallWith=ScriptState, diff --git a/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_text_session_options.idl b/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_text_session_options.idl index 2068eff10..a465d3381 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_text_session_options.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_text_session_options.idl @@ -2,7 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// TODO(crbug.com/343126579): Add link to spec/explainer. +// https://github.com/explainers-by-googlers/prompt-api + dictionary AITextSessionOptions { [EnforceRange] unsigned long topK; float temperature; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/ai/window_ai.idl b/tools/under-control/src/third_party/blink/renderer/modules/ai/window_ai.idl deleted file mode 100755 index 564d74552..000000000 --- a/tools/under-control/src/third_party/blink/renderer/modules/ai/window_ai.idl +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2024 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// TODO(crbug.com/343126579): Add link to spec/explainer. -[ - ImplementedAs=DOMAI, - RuntimeEnabled=ModelExecutionAPI -] partial interface Window { - [ - Replaceable - ] - readonly attribute AI ai; - // TODO(crbug.com/341851444): Remove after confirming there is no usage. - [ - Replaceable, - ImplementedAs=ai - ] - readonly attribute AI model; -}; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/ai/dedicated_worker_global_scope_ai.idl b/tools/under-control/src/third_party/blink/renderer/modules/ai/window_or_worker_global_scope_ai.idl similarity index 57% rename from tools/under-control/src/third_party/blink/renderer/modules/ai/dedicated_worker_global_scope_ai.idl rename to tools/under-control/src/third_party/blink/renderer/modules/ai/window_or_worker_global_scope_ai.idl index acf508445..54491572d 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/ai/dedicated_worker_global_scope_ai.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/ai/window_or_worker_global_scope_ai.idl @@ -2,11 +2,13 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// TODO(crbug.com/343126579): Add link to spec/explainer. +// https://github.com/explainers-by-googlers/prompt-api + [ + Exposed=(Window,Worker), ImplementedAs=DOMAI, - RuntimeEnabled=ModelExecutionAPI -] partial interface DedicatedWorkerGlobalScope { + RuntimeEnabled=BuiltInAIAPI +] partial interface mixin WindowOrWorkerGlobalScope { [ Replaceable ] diff --git a/tools/under-control/src/third_party/blink/renderer/modules/canvas/offscreencanvas2d/offscreen_canvas_rendering_context_2d.idl b/tools/under-control/src/third_party/blink/renderer/modules/canvas/offscreencanvas2d/offscreen_canvas_rendering_context_2d.idl index 02b76a9b1..6e571b329 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/canvas/offscreencanvas2d/offscreen_canvas_rendering_context_2d.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/canvas/offscreencanvas2d/offscreen_canvas_rendering_context_2d.idl @@ -11,8 +11,6 @@ // back-reference to the canvas [ImplementedAs=offscreenCanvasForBinding] readonly attribute OffscreenCanvas canvas; - [RuntimeEnabled=OffscreenCanvasCommit] void commit(); - // state void save(); // push state on state stack [NoAllocDirectCall, RaisesException] void restore(); // pop state stack if top state was pushed by save, and restore state diff --git a/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/authentication_extensions_client_inputs_json.idl b/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/authentication_extensions_client_inputs_json.idl new file mode 100755 index 000000000..eb2c21925 --- /dev/null +++ b/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/authentication_extensions_client_inputs_json.idl @@ -0,0 +1,38 @@ +// 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/webauthn/#dictdef-authenticationextensionsclientinputsjson + +dictionary AuthenticationExtensionsLargeBlobInputsJSON { + DOMString support; + boolean read; + Base64URLString write; +}; + +dictionary AuthenticationExtensionsPRFInputsJSON { + AuthenticationExtensionsPRFValuesJSON eval; + record evalByCredential; +}; + +dictionary AuthenticationExtensionsPRFValuesJSON { + required Base64URLString first; + Base64URLString second; +}; + +dictionary AuthenticationExtensionsClientInputsJSON { + USVString appid; + USVString appidExclude; + boolean hmacCreateSecret; + USVString credentialProtectionPolicy; + boolean enforceCredentialProtectionPolicy = false; + boolean minPinLength; + boolean credProps = false; + [RuntimeEnabled=WebAuthenticationLargeBlobExtension] AuthenticationExtensionsLargeBlobInputsJSON largeBlob; + Base64URLString credBlob; + boolean getCredBlob; + [RuntimeEnabled=SecurePaymentConfirmation] AuthenticationExtensionsPaymentInputs payment; + [RuntimeEnabled=WebAuthenticationRemoteDesktopSupport] RemoteDesktopClientOverride remoteDesktopClientOverride; + [RuntimeEnabled=WebAuthenticationSupplementalPubKeys] AuthenticationExtensionsSupplementalPubKeysInputs supplementalPubKeys; + [RuntimeEnabled=WebAuthenticationPRF] AuthenticationExtensionsPRFInputsJSON prf; +}; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/authentication_response_json.idl b/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/authentication_response_json.idl index 1d0c04f68..3e03371ed 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/authentication_response_json.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/authentication_response_json.idl @@ -5,10 +5,10 @@ // https://w3c.github.io/webauthn/#dictdef-authenticationresponsejson dictionary AuthenticationResponseJSON { - Base64URLString id; - Base64URLString rawId; - AuthenticatorAssertionResponseJSON response; - DOMString? authenticatorAttachment; - AuthenticationExtensionsClientOutputsJSON clientExtensionResults; - DOMString type; + required Base64URLString id; + required Base64URLString rawId; + required AuthenticatorAssertionResponseJSON response; + DOMString authenticatorAttachment; + required AuthenticationExtensionsClientOutputsJSON clientExtensionResults; + required DOMString type; }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/authenticator_assertion_response_json.idl b/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/authenticator_assertion_response_json.idl index ede85a66f..e7d2a8635 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/authenticator_assertion_response_json.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/authenticator_assertion_response_json.idl @@ -5,8 +5,8 @@ // https://w3c.github.io/webauthn/#dictdef-authenticatorassertionresponsejson dictionary AuthenticatorAssertionResponseJSON { - Base64URLString clientDataJSON; - Base64URLString authenticatorData; - Base64URLString signature; - Base64URLString? userHandle; + required Base64URLString clientDataJSON; + required Base64URLString authenticatorData; + required Base64URLString signature; + Base64URLString userHandle; }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/authenticator_attestation_response_json.idl b/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/authenticator_attestation_response_json.idl index a137e76c9..97a17b895 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/authenticator_attestation_response_json.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/authenticator_attestation_response_json.idl @@ -5,7 +5,10 @@ // https://w3c.github.io/webauthn/#dictdef-authenticatorattestationresponsejson dictionary AuthenticatorAttestationResponseJSON { - Base64URLString clientDataJSON; - Base64URLString attestationObject; - sequence transports; + required Base64URLString clientDataJSON; + required Base64URLString authenticatorData; + required sequence transports; + Base64URLString publicKey; + required long long publicKeyAlgorithm; + required Base64URLString attestationObject; }; 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/modules/credentialmanagement/credential_report_options.idl similarity index 54% rename from tools/under-control/src/third_party/blink/renderer/core/input/device_properties_init.idl rename to tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/credential_report_options.idl index 504d6bf44..6e36c7f6a 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/input/device_properties_init.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/credential_report_options.idl @@ -2,8 +2,6 @@ // 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 = 0; +dictionary CredentialReportOptions { + PublicKeyCredentialReportOptions publicKey; }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/credentials_container.idl b/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/credentials_container.idl index ea5001df6..d1c0176c3 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/credentials_container.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/credentials_container.idl @@ -10,4 +10,5 @@ interface CredentialsContainer { [CallWith=ScriptState, RaisesException, MeasureAs=CredentialManagerStore] Promise store(Credential credential); [CallWith=ScriptState, RaisesException, MeasureAs=CredentialManagerCreate] Promise create(optional CredentialCreationOptions options = {}); [CallWith=ScriptState, MeasureAs=CredentialManagerPreventSilentAccess] Promise preventSilentAccess(); + [CallWith=ScriptState, RaisesException, RuntimeEnabled=CredentialManagerReport] Promise report(CredentialReportOptions options); }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/public_key_credential.idl b/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/public_key_credential.idl index 81dd1d567..58d9427bc 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/public_key_credential.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/public_key_credential.idl @@ -17,4 +17,5 @@ [CallWith=ScriptState] static Promise isConditionalMediationAvailable(); [RuntimeEnabled=WebAuthenticationJSONSerialization, CallWith=ScriptState] PublicKeyCredentialJSON toJSON(); [RuntimeEnabled=WebAuthenticationJSONSerialization, CallWith=ScriptState, RaisesException] static PublicKeyCredentialCreationOptions parseCreationOptionsFromJSON(PublicKeyCredentialCreationOptionsJSON options); + [RuntimeEnabled=WebAuthenticationJSONSerialization, CallWith=ScriptState, RaisesException] static PublicKeyCredentialRequestOptions parseRequestOptionsFromJSON(PublicKeyCredentialRequestOptionsJSON options); }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/public_key_credential_creation_options.idl b/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/public_key_credential_creation_options.idl index 7e126da2f..43e4a2e0d 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/public_key_credential_creation_options.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/public_key_credential_creation_options.idl @@ -11,7 +11,7 @@ dictionary PublicKeyCredentialCreationOptions { unsigned long timeout; sequence excludeCredentials = []; AuthenticatorSelectionCriteria authenticatorSelection; - [RuntimeEnabled=WebAuthenticationHints] sequence hints = []; + sequence hints = []; // https://w3c.github.io/webauthn/#enumdef-attestationconveyancepreference DOMString attestation; AuthenticationExtensionsClientInputs extensions; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/public_key_credential_creation_options_json.idl b/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/public_key_credential_creation_options_json.idl index df4a0fe96..f49a4a137 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/public_key_credential_creation_options_json.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/public_key_credential_creation_options_json.idl @@ -10,46 +10,6 @@ dictionary PublicKeyCredentialUserEntityJSON { required DOMString displayName; }; -dictionary PublicKeyCredentialDescriptorJSON { - required Base64URLString id; - required DOMString type; - sequence transports; -}; - -dictionary AuthenticationExtensionsLargeBlobInputsJSON { - DOMString support; - boolean read; - Base64URLString write; -}; - -dictionary AuthenticationExtensionsPRFInputsJSON { - AuthenticationExtensionsPRFValuesJSON eval; - record evalByCredential; -}; - -dictionary AuthenticationExtensionsPRFValuesJSON { - required Base64URLString first; - Base64URLString second; -}; - -dictionary AuthenticationExtensionsClientInputsJSON { - USVString appid; - USVString appidExclude; - boolean hmacCreateSecret; - boolean uvm; - USVString credentialProtectionPolicy; - boolean enforceCredentialProtectionPolicy = false; - boolean minPinLength; - boolean credProps = false; - [RuntimeEnabled=WebAuthenticationLargeBlobExtension] AuthenticationExtensionsLargeBlobInputsJSON largeBlob; - Base64URLString credBlob; - boolean getCredBlob; - [RuntimeEnabled=SecurePaymentConfirmation] AuthenticationExtensionsPaymentInputs payment; - [RuntimeEnabled=WebAuthenticationRemoteDesktopSupport] RemoteDesktopClientOverride remoteDesktopClientOverride; - [RuntimeEnabled=WebAuthenticationSupplementalPubKeys] AuthenticationExtensionsSupplementalPubKeysInputs supplementalPubKeys; - [RuntimeEnabled=WebAuthenticationPRF] AuthenticationExtensionsPRFInputsJSON prf; -}; - dictionary PublicKeyCredentialCreationOptionsJSON { required PublicKeyCredentialRpEntity rp; required PublicKeyCredentialUserEntityJSON user; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/public_key_credential_descriptor_json.idl b/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/public_key_credential_descriptor_json.idl new file mode 100755 index 000000000..c9959e389 --- /dev/null +++ b/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/public_key_credential_descriptor_json.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://w3c.github.io/webauthn/#dictdef-publickeycredentialdescriptorjson + +dictionary PublicKeyCredentialDescriptorJSON { + required Base64URLString id; + required DOMString type; + sequence transports; +}; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/public_key_credential_json.idl b/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/public_key_credential_json.idl index 88c4dfffc..98b310ab1 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/public_key_credential_json.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/public_key_credential_json.idl @@ -5,4 +5,6 @@ // https://w3c.github.io/webauthn/#typedefdef-publickeycredentialjson typedef DOMString Base64URLString; -typedef (RegistrationResponseJSON or AuthenticationResponseJSON) PublicKeyCredentialJSON; + +// This is either RegistrationResponseJSON or AuthenticationResponseJSON. +typedef object PublicKeyCredentialJSON; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/public_key_credential_report_options.idl b/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/public_key_credential_report_options.idl new file mode 100755 index 000000000..b6046e0d0 --- /dev/null +++ b/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/public_key_credential_report_options.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. + +dictionary PublicKeyCredentialReportOptions { + USVString rpId; + BufferSource unknownCredentialId; +}; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/public_key_credential_request_options.idl b/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/public_key_credential_request_options.idl index 4304025ab..8e0cb5d06 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/public_key_credential_request_options.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/public_key_credential_request_options.idl @@ -11,6 +11,6 @@ dictionary PublicKeyCredentialRequestOptions { sequence allowCredentials = []; // A DOMString expressing a UserVerificationRequirement. DOMString userVerification; - [RuntimeEnabled=WebAuthenticationHints] sequence hints = []; + sequence hints = []; AuthenticationExtensionsClientInputs extensions; }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/public_key_credential_request_options_json.idl b/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/public_key_credential_request_options_json.idl new file mode 100755 index 000000000..07f6880d4 --- /dev/null +++ b/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/public_key_credential_request_options_json.idl @@ -0,0 +1,15 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// https://w3c.github.io/webauthn/#dictdef-publickeycredentialrequestoptionsjson + +dictionary PublicKeyCredentialRequestOptionsJSON { + required Base64URLString challenge; + unsigned long timeout; + DOMString rpId; + sequence allowCredentials = []; + DOMString userVerification = "preferred"; + sequence hints = []; + AuthenticationExtensionsClientInputsJSON extensions; +}; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/registration_response_json.idl b/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/registration_response_json.idl index bfacf6621..2e02595ad 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/registration_response_json.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/registration_response_json.idl @@ -5,10 +5,10 @@ // https://w3c.github.io/webauthn/#dictdef-registrationresponsejson dictionary RegistrationResponseJSON { - Base64URLString id; - Base64URLString rawId; - AuthenticatorAttestationResponseJSON response; - DOMString? authenticatorAttachment; - AuthenticationExtensionsClientOutputsJSON clientExtensionResults; - DOMString type; + required Base64URLString id; + required Base64URLString rawId; + required AuthenticatorAttestationResponseJSON response; + DOMString authenticatorAttachment; + required AuthenticationExtensionsClientOutputsJSON clientExtensionResults; + required DOMString type; }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/delegated_ink/delegated_ink_trail_presenter.idl b/tools/under-control/src/third_party/blink/renderer/modules/delegated_ink/delegated_ink_trail_presenter.idl index 1a03b2623..4f0aa8a29 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/delegated_ink/delegated_ink_trail_presenter.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/delegated_ink/delegated_ink_trail_presenter.idl @@ -10,5 +10,5 @@ [CallWith=ScriptState, RaisesException] void updateInkTrailStartPoint(PointerEvent evt, InkTrailStyle style); readonly attribute Element? presentationArea; - readonly attribute unsigned long expectedImprovement; + [DeprecateAs=DelegatedInkExpectedImprovement] readonly attribute unsigned long expectedImprovement; }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/document_picture_in_picture/document_picture_in_picture_options.idl b/tools/under-control/src/third_party/blink/renderer/modules/document_picture_in_picture/document_picture_in_picture_options.idl index a7cba86be..de4f0294a 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/document_picture_in_picture/document_picture_in_picture_options.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/document_picture_in_picture/document_picture_in_picture_options.idl @@ -8,4 +8,5 @@ dictionary DocumentPictureInPictureOptions { [EnforceRange] unsigned long long width = 0; [EnforceRange] unsigned long long height = 0; boolean disallowReturnToOpener = false; + [RuntimeEnabled=DocumentPictureInPicturePreferInitialPlacement] boolean preferInitialWindowPlacement = false; }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/file_system_access/file_system_observer.idl b/tools/under-control/src/third_party/blink/renderer/modules/file_system_access/file_system_observer.idl index ae7e3fe6f..a1d0cd837 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/file_system_access/file_system_observer.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/file_system_access/file_system_observer.idl @@ -12,14 +12,18 @@ ] interface FileSystemObserver { [ CallWith=ScriptState, - RaisesException + RaisesException, + Measure ] constructor(FileSystemObserverCallback callback); [ - CallWith=ScriptState, - RaisesException + CallWith=ScriptState, + RaisesException, + Measure ] Promise observe(FileSystemHandle handle, optional FileSystemObserverObserveOptions options = {}); - void unobserve(FileSystemHandle handle); - void disconnect(); + [ + RuntimeEnabled=FileSystemObserverUnobserve + ] void unobserve(FileSystemHandle handle); + [Measure] void disconnect(); }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/ml/ml.idl b/tools/under-control/src/third_party/blink/renderer/modules/ml/ml.idl index 145e6156f..72d92876d 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/ml/ml.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/ml/ml.idl @@ -2,16 +2,15 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// This will be a shared interface by two APIs: -// - The Model Loader API, -// https://github.com/webmachinelearning/model-loader/blob/main/explainer.md -// - The WebNN API, -// https://github.com/webmachinelearning/webnn/blob/main/explainer.md +// https://www.w3.org/TR/webnn/#api-ml [ - RuntimeEnabled=MachineLearningCommon, + RuntimeEnabled=MachineLearningNeuralNetwork, Exposed=(Window, DedicatedWorker) ] interface ML { - [CallWith=ScriptState, RaisesException] - Promise createContext(optional MLContextOptions options = {}); + [ + CallWith=ScriptState, + RaisesException, + Measure + ] Promise createContext(optional MLContextOptions options = {}); }; 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 cac50a9bd..23f444f0e 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 @@ -19,17 +19,63 @@ dictionary MLComputeResult { MLNamedArrayBufferViews outputs; }; +dictionary MLContextLostInfo { + DOMString message; +}; + +dictionary MLSupportLimits { + sequence dataTypes; +}; + +dictionary MLArgMinMaxSupportLimits { + MLSupportLimits input; + MLSupportLimits output; +}; + +dictionary MLConcatSupportLimits { + MLSupportLimits inputs; +}; + +dictionary MLGatherSupportLimits { + MLSupportLimits input; + MLSupportLimits indices; +}; + +dictionary MLWhereSupportLimits { + MLSupportLimits condition; + MLSupportLimits trueValue; + MLSupportLimits falseValue; +}; + +dictionary MLOpSupportLimits { + MLSupportLimits input; + MLSupportLimits constant; + MLSupportLimits output; + + MLArgMinMaxSupportLimits argMin; + MLArgMinMaxSupportLimits argMax; + MLConcatSupportLimits concat; + MLGatherSupportLimits gather; + MLWhereSupportLimits where; +}; + typedef record MLNamedBuffers; [ - RuntimeEnabled=MachineLearningCommon, + RuntimeEnabled=MachineLearningNeuralNetwork, SecureContext, Exposed=(Window, DedicatedWorker) ] interface MLContext { + [ + RuntimeEnabled=MachineLearningNeuralNetwork, + CallWith=ScriptState + ] readonly attribute Promise lost; + [ RuntimeEnabled=MachineLearningNeuralNetwork, CallWith=ScriptState, - RaisesException + RaisesException, + Measure ] Promise compute( MLGraph graph, MLNamedArrayBufferViews inputs, MLNamedArrayBufferViews outputs); @@ -75,7 +121,12 @@ typedef record MLNamedBuffers; [ RuntimeEnabled=MachineLearningNeuralNetwork, CallWith=ScriptState, - RaisesException + RaisesException, + Measure ] void dispatch( MLGraph graph, MLNamedBuffers inputs, MLNamedBuffers outputs); + [ + RuntimeEnabled=MachineLearningNeuralNetwork, + CallWith=ScriptState + ] MLOpSupportLimits opSupportLimits(); }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/ml/ml_model.idl b/tools/under-control/src/third_party/blink/renderer/modules/ml/ml_model.idl deleted file mode 100755 index e6c0f225c..000000000 --- a/tools/under-control/src/third_party/blink/renderer/modules/ml/ml_model.idl +++ /dev/null @@ -1,24 +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. - -// We expect `MLModel` serves as an umbrella interface and the Model Loader API -// will be the first one using it. It will also be a good counterpart of the -// `MLGraph` used in the WebNN API. -// -// Explainer of Model Loader API: -// https://github.com/webmachinelearning/model-loader/blob/main/explainer.md -// Spec of the WebNN API: -// https://webmachinelearning.github.io/webnn/ - -[ - SecureContext, - RuntimeEnabled=MachineLearningModelLoader -] interface MLModel { - [CallWith=ScriptState, RaisesException] Promise> - compute(record inputs); - - [CallWith=ScriptState] sequence inputs(); - - [CallWith=ScriptState] sequence outputs(); -}; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/ml/ml_model_loader.idl b/tools/under-control/src/third_party/blink/renderer/modules/ml/ml_model_loader.idl deleted file mode 100755 index af26860fa..000000000 --- a/tools/under-control/src/third_party/blink/renderer/modules/ml/ml_model_loader.idl +++ /dev/null @@ -1,15 +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/webmachinelearning/model-loader/blob/main/explainer.md - -[ - RuntimeEnabled=MachineLearningModelLoader, - Exposed=Window -] interface MLModelLoader { - [CallWith=ScriptState, RaisesException] constructor(MLContext context); - - [CallWith=ScriptState, RaisesException] Promise - load(ArrayBuffer buffer); -}; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/ml/ml_tensor.idl b/tools/under-control/src/third_party/blink/renderer/modules/ml/ml_tensor.idl deleted file mode 100755 index 1bf4b25fc..000000000 --- a/tools/under-control/src/third_party/blink/renderer/modules/ml/ml_tensor.idl +++ /dev/null @@ -1,10 +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/webmachinelearning/model-loader/blob/main/explainer.md - -dictionary MLTensor { - required ArrayBufferView data; - required sequence dimensions; -}; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/ml/ml_tensor_info.idl b/tools/under-control/src/third_party/blink/renderer/modules/ml/ml_tensor_info.idl deleted file mode 100755 index c2482e393..000000000 --- a/tools/under-control/src/third_party/blink/renderer/modules/ml/ml_tensor_info.idl +++ /dev/null @@ -1,27 +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/webmachinelearning/model-loader/blob/main/explainer.md - -enum MLDataType { - "unknown", - "int64", - "uint64", - "float64", - "int32", - "uint32", - "float32", - "int16", - "uint16", - "float16", - "int8", - "uint8", - "bool", -}; - -dictionary MLTensorInfo { - required DOMString name; - required MLDataType type; - required sequence dimensions; -}; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/ml/navigator_ml.idl b/tools/under-control/src/third_party/blink/renderer/modules/ml/navigator_ml.idl index 415ffcc4a..580223366 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/ml/navigator_ml.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/ml/navigator_ml.idl @@ -2,17 +2,13 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// This will be a shared interface by two APIs: -// - The Model Loader API, -// https://github.com/webmachinelearning/model-loader/blob/main/explainer.md -// - The WebNN API, -// https://github.com/webmachinelearning/webnn/blob/main/explainer.md +// https://www.w3.org/TR/webnn/#api-ml [ Exposed=Window, SecureContext, ImplementedAs=NavigatorML, - RuntimeEnabled=MachineLearningCommon + RuntimeEnabled=MachineLearningNeuralNetwork ] partial interface Navigator { [SameObject] readonly attribute ML ml; }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/ml/webnn/ml_buffer.idl b/tools/under-control/src/third_party/blink/renderer/modules/ml/webnn/ml_buffer.idl index 5470ec289..957e5ed44 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/ml/webnn/ml_buffer.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/ml/webnn/ml_buffer.idl @@ -4,13 +4,12 @@ // https://www.w3.org/TR/webnn/#api-mlbuffer -typedef unsigned long long MLSize64Out; - [ RuntimeEnabled=MachineLearningNeuralNetwork, Exposed=(Window, DedicatedWorker) ] interface MLBuffer { - readonly attribute MLSize64Out size; + readonly attribute MLOperandDataType dataType; + readonly attribute FrozenArray shape; void destroy(); }; \ No newline at end of file diff --git a/tools/under-control/src/third_party/blink/renderer/modules/ml/webnn/ml_buffer_descriptor.idl b/tools/under-control/src/third_party/blink/renderer/modules/ml/webnn/ml_buffer_descriptor.idl index 5eece593e..34e3ecf2d 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/ml/webnn/ml_buffer_descriptor.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/ml/webnn/ml_buffer_descriptor.idl @@ -6,6 +6,6 @@ typedef [EnforceRange] unsigned long long MLSize64; -dictionary MLBufferDescriptor { - required MLSize64 size; +dictionary MLBufferDescriptor : MLOperandDescriptor { + // TODO(crbug.com/343638938): Add buffer usage flags. }; \ No newline at end of file diff --git a/tools/under-control/src/third_party/blink/renderer/modules/ml/webnn/ml_graph_builder.idl b/tools/under-control/src/third_party/blink/renderer/modules/ml/webnn/ml_graph_builder.idl index f4d166037..560c8cffb 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 @@ -4,7 +4,7 @@ // https://www.w3.org/TR/webnn/ -typedef record MLNamedOperands; +typedef record MLNamedOperands; enum MLInputOperandLayout { "nchw", "nhwc" }; @@ -18,24 +18,29 @@ enum MLLstmWeightLayout { "iofg", "ifgo" }; enum MLGruWeightLayout { "zrn", "rzn" }; +dictionary MLOperatorOptions { + USVString label = ""; +}; + dictionary MLArgMinMaxOptions { sequence<[EnforceRange] unsigned long> axes; boolean keepDimensions = false; - boolean selectLastIndex = false; + // See spec issue https://github.com/webmachinelearning/webnn/issues/653. + MLOperandDataType outputDataType = "int32"; }; // A spec file was issued for WG discussion: // https://github.com/webmachinelearning/webnn/issues/481. // TODO(crbug.com/1502361): Revisit whether the scale and bias operands // should be required inputs based on WG's consensus. -dictionary MLBatchNormalizationOptions { +dictionary MLBatchNormalizationOptions : MLOperatorOptions{ MLOperand scale; MLOperand bias; [EnforceRange] unsigned long axis = 1; float epsilon = 1e-5; }; -dictionary MLConv2dOptions { +dictionary MLConv2dOptions : MLOperatorOptions{ sequence<[EnforceRange] unsigned long> padding; sequence<[EnforceRange] unsigned long> strides; sequence<[EnforceRange] unsigned long> dilations; @@ -45,7 +50,7 @@ dictionary MLConv2dOptions { MLOperand bias; }; -dictionary MLConvTranspose2dOptions { +dictionary MLConvTranspose2dOptions : MLOperatorOptions{ sequence<[EnforceRange] unsigned long> padding; sequence<[EnforceRange] unsigned long> strides; sequence<[EnforceRange] unsigned long> dilations; @@ -179,7 +184,7 @@ dictionary MLReduceOptions { enum MLInterpolationMode {"nearest-neighbor", "linear" }; -dictionary MLResample2dOptions { +dictionary MLResample2dOptions : MLOperatorOptions{ MLInterpolationMode mode = "nearest-neighbor"; sequence scales; sequence<[EnforceRange] unsigned long> sizes; @@ -205,7 +210,7 @@ dictionary MLTriangularOptions { ] interface MLGraphBuilder { constructor(MLContext context); - [RaisesException] MLOperand input(DOMString name, MLOperandDescriptor desc); + [RaisesException] MLOperand input(USVString name, MLOperandDescriptor desc); [RaisesException] MLOperand constant(MLOperandDescriptor desc, ArrayBufferView bufferView); @@ -215,7 +220,6 @@ dictionary MLTriangularOptions { [RaisesException] MLOperand batchNormalization(MLOperand input, MLOperand mean, MLOperand variance, optional MLBatchNormalizationOptions options = {}); [RaisesException] MLOperand clamp(MLOperand input, optional MLClampOptions options = {}); - [RaisesException] MLActivation clamp(optional MLClampOptions options = {}); [RaisesException] MLOperand concat(sequence inputs, [EnforceRange] unsigned long axis); @@ -223,18 +227,18 @@ dictionary MLTriangularOptions { [RaisesException] MLOperand convTranspose2d(MLOperand input, MLOperand filter, optional MLConvTranspose2dOptions options = {}); // Element-wise binary operations - [RaisesException] MLOperand add(MLOperand a, MLOperand b); - [RaisesException] MLOperand sub(MLOperand a, MLOperand b); - [RaisesException] MLOperand mul(MLOperand a, MLOperand b); - [RaisesException] MLOperand div(MLOperand a, MLOperand b); - [RaisesException] MLOperand max(MLOperand a, MLOperand b); - [RaisesException] MLOperand min(MLOperand a, MLOperand b); - [RaisesException] MLOperand pow(MLOperand a, MLOperand b); - [RaisesException] MLOperand equal(MLOperand a, MLOperand b); - [RaisesException] MLOperand greater(MLOperand a, MLOperand b); - [RaisesException] MLOperand greaterOrEqual(MLOperand a, MLOperand b); - [RaisesException] MLOperand lesser(MLOperand a, MLOperand b); - [RaisesException] MLOperand lesserOrEqual(MLOperand a, MLOperand b); + [RaisesException] MLOperand add(MLOperand a, MLOperand b, optional MLOperatorOptions options = {}); + [RaisesException] MLOperand sub(MLOperand a, MLOperand b, optional MLOperatorOptions options = {}); + [RaisesException] MLOperand mul(MLOperand a, MLOperand b, optional MLOperatorOptions options = {}); + [RaisesException] MLOperand div(MLOperand a, MLOperand b, optional MLOperatorOptions options = {}); + [RaisesException] MLOperand max(MLOperand a, MLOperand b, optional MLOperatorOptions options = {}); + [RaisesException] MLOperand min(MLOperand a, MLOperand b, optional MLOperatorOptions options = {}); + [RaisesException] MLOperand pow(MLOperand a, MLOperand b, optional MLOperatorOptions options = {}); + [RaisesException] MLOperand equal(MLOperand a, MLOperand b, optional MLOperatorOptions options = {}); + [RaisesException] MLOperand greater(MLOperand a, MLOperand b, optional MLOperatorOptions options = {}); + [RaisesException] MLOperand greaterOrEqual(MLOperand a, MLOperand b, optional MLOperatorOptions options = {}); + [RaisesException] MLOperand lesser(MLOperand a, MLOperand b, optional MLOperatorOptions options = {}); + [RaisesException] MLOperand lesserOrEqual(MLOperand a, MLOperand b, optional MLOperatorOptions options = {}); // Element-wise unary operations [RaisesException] MLOperand abs(MLOperand x); @@ -299,15 +303,18 @@ dictionary MLTriangularOptions { 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 = {}); + [ + CallWith=ScriptState, + RaisesException + ] MLOperand pad(MLOperand input, sequence<[EnforceRange] unsigned long> beginningPadding, + sequence<[EnforceRange] unsigned long> endingPadding, optional MLPadOptions options = {}); // Pooling operations [RaisesException] MLOperand averagePool2d(MLOperand input, optional MLPool2dOptions options = {}); [RaisesException] MLOperand l2Pool2d(MLOperand input, optional MLPool2dOptions options = {}); [RaisesException] MLOperand maxPool2d(MLOperand input, optional MLPool2dOptions options = {}); - [RaisesException] MLOperand prelu(MLOperand x, MLOperand slope); + [RaisesException] MLOperand prelu(MLOperand x, MLOperand slope, optional MLOperatorOptions options = {}); [RaisesException] MLOperand reduceL1(MLOperand input, optional MLReduceOptions options = {}); [RaisesException] MLOperand reduceL2(MLOperand input, optional MLReduceOptions options = {}); @@ -325,15 +332,19 @@ dictionary MLTriangularOptions { [RaisesException] MLOperand reshape(MLOperand input, sequence<[EnforceRange] unsigned long> newShape); - [RaisesException] MLOperand resample2d(MLOperand input, optional MLResample2dOptions options = {}); + [ + CallWith=ScriptState, + RaisesException + ] MLOperand resample2d(MLOperand input, optional MLResample2dOptions options = {}); [RaisesException] MLOperand sigmoid(MLOperand input); [RaisesException] MLActivation sigmoid(); [RaisesException] MLOperand slice(MLOperand input, sequence<[EnforceRange] unsigned long> starts, sequence<[EnforceRange] unsigned long> sizes); + // TODO: crbug.com/342919187 - Remove the deprecated version once ort-web 1.18.* supporting softmax(input, aixs) is released. [RaisesException] MLOperand softmax(MLOperand input); - [RaisesException] MLActivation softmax(); + [RaisesException] MLOperand softmax(MLOperand input, [EnforceRange] unsigned long axis); [RaisesException] MLOperand softplus(MLOperand input); [RaisesException] MLActivation softplus(); @@ -352,7 +363,7 @@ dictionary MLTriangularOptions { [RaisesException] MLOperand triangular(MLOperand input, optional MLTriangularOptions options = {}); - [RaisesException] MLOperand where(MLOperand condition, MLOperand true_value, MLOperand false_value); + [RaisesException] MLOperand where(MLOperand condition, MLOperand trueValue, MLOperand falseValue); [ CallWith=ScriptState, diff --git a/tools/under-control/src/third_party/blink/renderer/modules/ml/worker_navigator_ml.idl b/tools/under-control/src/third_party/blink/renderer/modules/ml/worker_navigator_ml.idl index 214161088..04dfa670d 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/ml/worker_navigator_ml.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/ml/worker_navigator_ml.idl @@ -2,11 +2,13 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +// https://www.w3.org/TR/webnn/#api-ml + [ Exposed=DedicatedWorker, SecureContext, ImplementedAs=NavigatorML, - RuntimeEnabled=MachineLearningCommon + RuntimeEnabled=MachineLearningNeuralNetwork ] partial interface WorkerNavigator { [SameObject] readonly attribute ML ml; }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_rtp_ack.idl b/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_rtp_ack.idl new file mode 100755 index 000000000..4b8ed4b7b --- /dev/null +++ b/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_rtp_ack.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. + +dictionary RTCRtpAck { + unsigned long long ackId; + unsigned long long remoteReceiveTimestamp; +}; \ No newline at end of file diff --git a/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_rtp_acks.idl b/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_rtp_acks.idl new file mode 100755 index 000000000..b3f6073ed --- /dev/null +++ b/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_rtp_acks.idl @@ -0,0 +1,23 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + + +enum ExplicitCongestionNotification { + // ECT = ECN-Capable Transport + "unset", // AKA "Not-ECT"; Bits: 00 + "scalable-congestion-not-experienced", // AKA "ECT(1)" or "Scalable" or "L4S" ; Bits: 01 + "classic-congestion-not-experienced", // AKA "ECT(0)" or "Classic" or "not L4S"; Bits: 10 + "congestion-experienced" // AKA "CE" or "ECN-marked" or "marked"; Bits: 11 +}; + +// Collection of RTP packet remote feedback, delivered in a single RTCP message. +// TODO: crbug.com/345101934 - Improve name as the explainer evolves, https://github.com/w3c/webrtc-rtptransport/blob/main/explainer-use-case-2.md +[ + Exposed=(Window,Worker), RuntimeEnabled=RTCRtpTransport +] interface RTCRtpAcks { + sequence acks(); + readonly attribute unsigned long long remoteSendTimestamp; + readonly attribute DOMHighResTimeStamp receivedTime; + readonly attribute ExplicitCongestionNotification explicitCongestionNotification; // AKA "ECN" +}; \ No newline at end of file diff --git a/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_rtp_header_extension_init.idl b/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_rtp_header_extension_init.idl new file mode 100755 index 000000000..c551480ce --- /dev/null +++ b/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_rtp_header_extension_init.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. + +dictionary RTCRtpHeaderExtensionInit { + required DOMString uri; + required AllowSharedBufferSource value; +}; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_rtp_packet_init.idl b/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_rtp_packet_init.idl new file mode 100755 index 000000000..c8d17de59 --- /dev/null +++ b/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_rtp_packet_init.idl @@ -0,0 +1,13 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +dictionary RTCRtpPacketInit { + boolean marker = false; + required octet payloadType; + required unsigned long timestamp; + sequence csrcs = []; + + sequence headerExtensions = []; + required AllowSharedBufferSource payload; +}; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_rtp_send_result.idl b/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_rtp_send_result.idl new file mode 100755 index 000000000..b6fd54656 --- /dev/null +++ b/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_rtp_send_result.idl @@ -0,0 +1,9 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +[Exposed=(Window,Worker), RuntimeEnabled=RTCRtpTransport] +interface RTCRtpSendResult { + readonly attribute RTCRtpSent? sent; + readonly attribute RTCRtpUnsentReason? unsent; +}; \ No newline at end of file diff --git a/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_rtp_send_stream.idl b/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_rtp_send_stream.idl new file mode 100755 index 000000000..063be019a --- /dev/null +++ b/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_rtp_send_stream.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. + +dictionary RTCRtpSendOptions { + DOMHighResTimeStamp sendTime; +}; + +enum RTCRtpUnsentReason { + "overuse", + "transport-unavailable", +}; + +[Exposed=(Window,Worker), RuntimeEnabled=RTCRtpTransport] +interface RTCRtpSendStream { + [CallWith=ScriptState] Promise sendRtp(RTCRtpPacketInit packet, RTCRtpSendOptions options); +}; + diff --git a/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_rtp_sender.idl b/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_rtp_sender.idl index f44ab8ce5..33ec56330 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_rtp_sender.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_rtp_sender.idl @@ -19,4 +19,7 @@ interface RTCRtpSender { [Measure, CallWith=ScriptState, RaisesException] RTCInsertableStreams createEncodedStreams(); + + [RuntimeEnabled=RTCRtpTransport] + Promise> replaceSendStreams(); }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_rtp_sent.idl b/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_rtp_sent.idl new file mode 100755 index 000000000..e1b225339 --- /dev/null +++ b/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_rtp_sent.idl @@ -0,0 +1,12 @@ +// 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,Worker), RuntimeEnabled=RTCRtpTransport] +interface RTCRtpSent { + readonly attribute DOMHighResTimeStamp time; + + // Can be correlated with acks + readonly attribute unsigned long long? ackId; + readonly attribute unsigned long long size; +}; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_rtp_transport.idl b/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_rtp_transport.idl index 3aa934227..429dade50 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_rtp_transport.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_rtp_transport.idl @@ -3,4 +3,14 @@ // found in the LICENSE file. [Exposed=Window, RuntimeEnabled=RTCRtpTransport] -interface RTCRtpTransport {}; +interface RTCRtpTransport { + // TODO(crbug.com/345101934): This needs to actually be on some + // Worker-exposed object. Being discussed in + // https://github.com/w3c/webrtc-rtptransport/issues/33. + sequence readReceivedAcks(long maxCount); + + // TODO(crbug.com/345101934): This needs to actually be on some + // Worker-exposed object. Being discussed in + // https://github.com/w3c/webrtc-rtptransport/issues/33. + sequence readSentRtp(long maxCount); +}; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/permissions/fullscreen_permission_descriptor.idl b/tools/under-control/src/third_party/blink/renderer/modules/permissions/fullscreen_permission_descriptor.idl new file mode 100755 index 000000000..e1e09c663 --- /dev/null +++ b/tools/under-control/src/third_party/blink/renderer/modules/permissions/fullscreen_permission_descriptor.idl @@ -0,0 +1,7 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +dictionary FullscreenPermissionDescriptor : PermissionDescriptor { + boolean allowWithoutGesture = false; +}; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/permissions/permission_descriptor.idl b/tools/under-control/src/third_party/blink/renderer/modules/permissions/permission_descriptor.idl index a3d16bdb2..ff255e11c 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/permissions/permission_descriptor.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/permissions/permission_descriptor.idl @@ -41,6 +41,7 @@ enum PermissionName { "speaker-selection", "keyboard-lock", "pointer-lock", + "fullscreen", }; // The PermissionDescriptor dictionary is a base to describe permissions. Some 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 01af65bd7..338fa4d5d 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 @@ -61,7 +61,7 @@ RaisesException, MeasureAs=SharedStorageAPI_SelectURL_Method ] Promise selectURL(DOMString name, - FrozenArray urls, + sequence urls, optional SharedStorageRunOperationMethodOptions options); [ @@ -73,11 +73,12 @@ [ RuntimeEnabled=SharedStorageAPIM125, + Exposed=Window, CallWith=ScriptState, RaisesException, MeasureAs=SharedStorageAPI_CreateWorklet_Method ] Promise createWorklet(USVString moduleURL, - optional WorkletOptions options = {}); + optional SharedStorageWorkletOptions options = {}); [ Exposed=Window, 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 9cafcfb2e..23fe3b4bd 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 @@ -21,7 +21,7 @@ typedef (USVString or FencedFrameConfig) SharedStorageResponse; RaisesException, MeasureAs=SharedStorageAPI_SelectURL_Method ] Promise selectURL(DOMString name, - FrozenArray urls, + sequence urls, optional SharedStorageRunOperationMethodOptions options); [ diff --git a/tools/under-control/src/third_party/blink/renderer/modules/shared_storage/shared_storage_worklet_global_scope.idl b/tools/under-control/src/third_party/blink/renderer/modules/shared_storage/shared_storage_worklet_global_scope.idl index 1e4406607..9369cd2f9 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/shared_storage/shared_storage_worklet_global_scope.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/shared_storage/shared_storage_worklet_global_scope.idl @@ -29,10 +29,6 @@ interface SharedStorageWorkletGlobalScope : WorkletGlobalScope { readonly attribute Crypto crypto; }; -// TODO(yaoxia): Figure out whether `urls`'s type can be `FrozenArray` instead -// of `sequence`. Currently, the conversion from `Vector` to -// `IDLArray` would cause an error, while the conversion from it to -// `IDLSequence` wouldn't. callback RunFunctionForSharedStorageSelectURLOperation = Promise(sequence urls, optional any data); diff --git a/tools/under-control/src/third_party/blink/renderer/modules/shared_storage/shared_storage_worklet_options.idl b/tools/under-control/src/third_party/blink/renderer/modules/shared_storage/shared_storage_worklet_options.idl new file mode 100755 index 000000000..7e04b3a09 --- /dev/null +++ b/tools/under-control/src/third_party/blink/renderer/modules/shared_storage/shared_storage_worklet_options.idl @@ -0,0 +1,12 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +enum SharedStorageDataOrigin { "context-origin", "script-origin" }; + +dictionary SharedStorageWorkletOptions : WorkletOptions { + // Currently only used for a use counter. + // TODO(348445878): Make this option live after we determine what its + // default should be. + SharedStorageDataOrigin dataOrigin = "context-origin"; +}; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/speech/speech_recognition.idl b/tools/under-control/src/third_party/blink/renderer/modules/speech/speech_recognition.idl index d46ffc53c..dbdc33693 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/speech/speech_recognition.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/speech/speech_recognition.idl @@ -39,9 +39,12 @@ attribute boolean continuous; attribute boolean interimResults; attribute unsigned long maxAlternatives; + [RuntimeEnabled=MediaStreamTrackWebSpeech] attribute boolean localService; + [RuntimeEnabled=MediaStreamTrackWebSpeech] attribute boolean allowCloudFallback; // methods to drive the speech interaction [RaisesException, Measure] void start(); + [RaisesException, Measure, RuntimeEnabled=MediaStreamTrackWebSpeech] void start(MediaStreamTrack track); [ImplementedAs=stopFunction] void stop(); void abort(); 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 7afb66c0a..41ce0e206 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 @@ -60,5 +60,6 @@ dictionary AudioSinkOptions { [MeasureAs=AudioContextSinkId, SecureContext] readonly attribute (DOMString or AudioSinkInfo) sinkId; [MeasureAs=AudioContextSetSinkId, RaisesException, CallWith=ScriptState, SecureContext] Promise setSinkId((DOMString or AudioSinkOptions) sinkId); + [RuntimeEnabled=AudioContextOnError, MeasureAs=AudioContextOnError] attribute EventHandler onerror; [SecureContext] attribute EventHandler onsinkchange; }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/webaudio/testing/internals_web_audio.idl b/tools/under-control/src/third_party/blink/renderer/modules/webaudio/testing/internals_web_audio.idl index ddc21d173..0ad74502b 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/webaudio/testing/internals_web_audio.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/webaudio/testing/internals_web_audio.idl @@ -7,4 +7,5 @@ ] partial interface Internals { unsigned long audioHandlerCount(); unsigned long audioWorkletProcessorCount(); + void emulateDeviceFailureOnAudioContext(AudioContext context); }; 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 7117fadb6..ad57f3ced 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 @@ -56,4 +56,8 @@ // Call prior to configure() to determine whether config will be supported. [CallWith=ScriptState, RaisesException] static Promise isConfigSupported(VideoEncoderConfig config); + + // Returns a list of all buffers that can be used while encoding + [CallWith=ScriptState, RaisesException, RuntimeEnabled=WebCodecsVideoEncoderBuffers] + sequence getAllFrameBuffers(); }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/webcodecs/video_encoder_buffer.idl b/tools/under-control/src/third_party/blink/renderer/modules/webcodecs/video_encoder_buffer.idl new file mode 100755 index 000000000..46bd4647e --- /dev/null +++ b/tools/under-control/src/third_party/blink/renderer/modules/webcodecs/video_encoder_buffer.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,DedicatedWorker), + SecureContext, + RuntimeEnabled=WebCodecsVideoEncoderBuffers +] interface VideoEncoderBuffer { + readonly attribute DOMString id; +}; \ No newline at end of file diff --git a/tools/under-control/src/third_party/blink/renderer/modules/webcodecs/video_encoder_encode_options.idl b/tools/under-control/src/third_party/blink/renderer/modules/webcodecs/video_encoder_encode_options.idl index 7fdb5a9fe..9e5b65dc8 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/webcodecs/video_encoder_encode_options.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/webcodecs/video_encoder_encode_options.idl @@ -9,4 +9,11 @@ dictionary VideoEncoderEncodeOptions { VideoEncoderEncodeOptionsForVp9 vp9; VideoEncoderEncodeOptionsForAv1 av1; VideoEncoderEncodeOptionsForAvc avc; + + // Buffers that can be used for inter-frame prediction while encoding a given + // frame. If this array is empty we basically ask for an intra-frame. + sequence referenceBuffers; + + // A buffer where the encoded frame should be saved after encoding. + VideoEncoderBuffer updateBuffer; }; \ No newline at end of file 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 456775e24..cbf89ceb8 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/webgl/webgl2_rendering_context_base.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/webgl/webgl2_rendering_context_base.idl @@ -393,118 +393,53 @@ interface mixin WebGL2RenderingContextBase { // called with only two arguments, it goes to the WebGL1 signatures; if it's // called with three or four arguments, it goes to the WebGL2 specific // signatures. - [NoAllocDirectCall] void uniform1fv(WebGLUniformLocation? location, - [AllowShared, FlexibleArrayBufferView, BufferSourceTypeNoSizeLimit] Float32Array v, + [NoAllocDirectCall] void uniform1fv(WebGLUniformLocation? location, Float32List v, GLuint srcOffset, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniform1fv(WebGLUniformLocation? location, sequence v, + [NoAllocDirectCall] void uniform2fv(WebGLUniformLocation? location, Float32List v, GLuint srcOffset, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniform2fv(WebGLUniformLocation? location, - [AllowShared, FlexibleArrayBufferView, BufferSourceTypeNoSizeLimit] Float32Array v, + [NoAllocDirectCall] void uniform3fv(WebGLUniformLocation? location, Float32List v, GLuint srcOffset, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniform2fv(WebGLUniformLocation? location, sequence v, + [NoAllocDirectCall] void uniform4fv(WebGLUniformLocation? location, Float32List v, GLuint srcOffset, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniform3fv(WebGLUniformLocation? location, - [AllowShared, FlexibleArrayBufferView, BufferSourceTypeNoSizeLimit] Float32Array v, + [NoAllocDirectCall] void uniform1iv(WebGLUniformLocation? location, Int32List v, GLuint srcOffset, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniform3fv(WebGLUniformLocation? location, sequence v, + [NoAllocDirectCall] void uniform2iv(WebGLUniformLocation? location, Int32List v, GLuint srcOffset, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniform4fv(WebGLUniformLocation? location, - [AllowShared, FlexibleArrayBufferView, BufferSourceTypeNoSizeLimit] Float32Array v, + [NoAllocDirectCall] void uniform3iv(WebGLUniformLocation? location, Int32List v, GLuint srcOffset, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniform4fv(WebGLUniformLocation? location, sequence v, + [NoAllocDirectCall] void uniform4iv(WebGLUniformLocation? location, Int32List v, GLuint srcOffset, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniform1iv(WebGLUniformLocation? location, - [AllowShared, FlexibleArrayBufferView, BufferSourceTypeNoSizeLimit] Int32Array v, - GLuint srcOffset, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniform1iv(WebGLUniformLocation? location, sequence v, - GLuint srcOffset, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniform2iv(WebGLUniformLocation? location, - [AllowShared, FlexibleArrayBufferView, BufferSourceTypeNoSizeLimit] Int32Array v, - GLuint srcOffset, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniform2iv(WebGLUniformLocation? location, sequence v, - GLuint srcOffset, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniform3iv(WebGLUniformLocation? location, - [AllowShared, FlexibleArrayBufferView, BufferSourceTypeNoSizeLimit] Int32Array v, - GLuint srcOffset, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniform3iv(WebGLUniformLocation? location, sequence v, - GLuint srcOffset, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniform4iv(WebGLUniformLocation? location, - [AllowShared, FlexibleArrayBufferView, BufferSourceTypeNoSizeLimit] Int32Array v, - GLuint srcOffset, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniform4iv(WebGLUniformLocation? location, sequence v, - GLuint srcOffset, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniform1uiv(WebGLUniformLocation? location, - [AllowShared, FlexibleArrayBufferView, BufferSourceTypeNoSizeLimit] Uint32Array v, - optional GLuint srcOffset = 0, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniform1uiv(WebGLUniformLocation? location, sequence v, - optional GLuint srcOffset = 0, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniform2uiv(WebGLUniformLocation? location, - [AllowShared, FlexibleArrayBufferView, BufferSourceTypeNoSizeLimit] Uint32Array v, - optional GLuint srcOffset = 0, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniform2uiv(WebGLUniformLocation? location, sequence v, + [NoAllocDirectCall] void uniform1uiv(WebGLUniformLocation? location, Uint32List v, optional GLuint srcOffset = 0, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniform3uiv(WebGLUniformLocation? location, - [AllowShared, FlexibleArrayBufferView, BufferSourceTypeNoSizeLimit] Uint32Array v, + [NoAllocDirectCall] void uniform2uiv(WebGLUniformLocation? location, Uint32List v, optional GLuint srcOffset = 0, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniform3uiv(WebGLUniformLocation? location, sequence v, + [NoAllocDirectCall] void uniform3uiv(WebGLUniformLocation? location, Uint32List v, optional GLuint srcOffset = 0, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniform4uiv(WebGLUniformLocation? location, - [AllowShared, FlexibleArrayBufferView, BufferSourceTypeNoSizeLimit] Uint32Array v, + [NoAllocDirectCall] void uniform4uiv(WebGLUniformLocation? location, Uint32List v, optional GLuint srcOffset = 0, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniform4uiv(WebGLUniformLocation? location, sequence v, - optional GLuint srcOffset = 0, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniformMatrix2fv(WebGLUniformLocation? location, GLboolean transpose, - [AllowShared, BufferSourceTypeNoSizeLimit] Float32Array array, - GLuint srcOffset, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniformMatrix2fv(WebGLUniformLocation? location, GLboolean transpose, sequence array, - GLuint srcOffset, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniformMatrix3fv(WebGLUniformLocation? location, GLboolean transpose, - [AllowShared, BufferSourceTypeNoSizeLimit] Float32Array array, + [NoAllocDirectCall] void uniformMatrix2fv(WebGLUniformLocation? location, GLboolean transpose, Float32List array, GLuint srcOffset, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniformMatrix3fv(WebGLUniformLocation? location, GLboolean transpose, sequence array, + [NoAllocDirectCall] void uniformMatrix3fv(WebGLUniformLocation? location, GLboolean transpose, Float32List array, GLuint srcOffset, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniformMatrix4fv(WebGLUniformLocation? location, GLboolean transpose, - [AllowShared, BufferSourceTypeNoSizeLimit] Float32Array array, + [NoAllocDirectCall] void uniformMatrix4fv(WebGLUniformLocation? location, GLboolean transpose, Float32List array, GLuint srcOffset, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniformMatrix4fv(WebGLUniformLocation? location, GLboolean transpose, sequence array, - GLuint srcOffset, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniformMatrix2x3fv(WebGLUniformLocation? location, GLboolean transpose, - [AllowShared, BufferSourceTypeNoSizeLimit] Float32Array value, - optional GLuint srcOffset = 0, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniformMatrix2x3fv(WebGLUniformLocation? location, GLboolean transpose, sequence value, - optional GLuint srcOffset = 0, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniformMatrix3x2fv(WebGLUniformLocation? location, GLboolean transpose, - [AllowShared, BufferSourceTypeNoSizeLimit] Float32Array value, - optional GLuint srcOffset = 0, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniformMatrix3x2fv(WebGLUniformLocation? location, GLboolean transpose, sequence value, - optional GLuint srcOffset = 0, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniformMatrix2x4fv(WebGLUniformLocation? location, GLboolean transpose, - [AllowShared, BufferSourceTypeNoSizeLimit] Float32Array value, - optional GLuint srcOffset = 0, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniformMatrix2x4fv(WebGLUniformLocation? location, GLboolean transpose, sequence value, - optional GLuint srcOffset = 0, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniformMatrix4x2fv(WebGLUniformLocation? location, GLboolean transpose, - [AllowShared, BufferSourceTypeNoSizeLimit] Float32Array value, + [NoAllocDirectCall] void uniformMatrix2x3fv(WebGLUniformLocation? location, GLboolean transpose, Float32List value, optional GLuint srcOffset = 0, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniformMatrix4x2fv(WebGLUniformLocation? location, GLboolean transpose, sequence value, + [NoAllocDirectCall] void uniformMatrix3x2fv(WebGLUniformLocation? location, GLboolean transpose, Float32List value, optional GLuint srcOffset = 0, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniformMatrix3x4fv(WebGLUniformLocation? location, GLboolean transpose, - [AllowShared, BufferSourceTypeNoSizeLimit] Float32Array value, + [NoAllocDirectCall] void uniformMatrix2x4fv(WebGLUniformLocation? location, GLboolean transpose, Float32List value, optional GLuint srcOffset = 0, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniformMatrix3x4fv(WebGLUniformLocation? location, GLboolean transpose, sequence value, + [NoAllocDirectCall] void uniformMatrix4x2fv(WebGLUniformLocation? location, GLboolean transpose, Float32List value, optional GLuint srcOffset = 0, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniformMatrix4x3fv(WebGLUniformLocation? location, GLboolean transpose, - [AllowShared, BufferSourceTypeNoSizeLimit] Float32Array value, + [NoAllocDirectCall] void uniformMatrix3x4fv(WebGLUniformLocation? location, GLboolean transpose, Float32List value, optional GLuint srcOffset = 0, optional GLuint srcLength = 0); - [NoAllocDirectCall] void uniformMatrix4x3fv(WebGLUniformLocation? location, GLboolean transpose, sequence value, + [NoAllocDirectCall] void uniformMatrix4x3fv(WebGLUniformLocation? location, GLboolean transpose, Float32List value, optional GLuint srcOffset = 0, optional GLuint srcLength = 0); void vertexAttribI4i(GLuint index, GLint x, GLint y, GLint z, GLint w); - [NoAllocDirectCall] void vertexAttribI4iv(GLuint index, [AllowShared, BufferSourceTypeNoSizeLimit] Int32Array v); - [NoAllocDirectCall] void vertexAttribI4iv(GLuint index, sequence v); + [NoAllocDirectCall] void vertexAttribI4iv(GLuint index, Int32List v); void vertexAttribI4ui(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); - [NoAllocDirectCall] void vertexAttribI4uiv(GLuint index, [AllowShared, BufferSourceTypeNoSizeLimit] Uint32Array v); - [NoAllocDirectCall] void vertexAttribI4uiv(GLuint index, sequence v); + [NoAllocDirectCall] void vertexAttribI4uiv(GLuint index, Uint32List v); void vertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset); /* Writing to the drawing buffer */ @@ -515,15 +450,10 @@ interface mixin WebGL2RenderingContextBase { /* Multiple Render Targets */ [NoAllocDirectCall] void drawBuffers(sequence buffers); - [NoAllocDirectCall] void clearBufferiv(GLenum buffer, GLint drawbuffer, - [AllowShared, BufferSourceTypeNoSizeLimit] Int32Array value, optional GLuint srcOffset = 0); - [NoAllocDirectCall] void clearBufferiv(GLenum buffer, GLint drawbuffer, sequence value, optional GLuint srcOffset = 0); + [NoAllocDirectCall] void clearBufferiv(GLenum buffer, GLint drawbuffer, Int32List value, optional GLuint srcOffset = 0); [NoAllocDirectCall] void clearBufferuiv(GLenum buffer, GLint drawbuffer, - [AllowShared, BufferSourceTypeNoSizeLimit] Uint32Array value, optional GLuint srcOffset = 0); - [NoAllocDirectCall] void clearBufferuiv(GLenum buffer, GLint drawbuffer, sequence value, optional GLuint srcOffset = 0); - [NoAllocDirectCall] void clearBufferfv(GLenum buffer, GLint drawbuffer, - [AllowShared, BufferSourceTypeNoSizeLimit] Float32Array value, optional GLuint srcOffset = 0); - [NoAllocDirectCall] void clearBufferfv(GLenum buffer, GLint drawbuffer, sequence value, optional GLuint srcOffset = 0); + Uint32List value, optional GLuint srcOffset = 0); + [NoAllocDirectCall] void clearBufferfv(GLenum buffer, GLint drawbuffer, Float32List value, optional GLuint srcOffset = 0); [NoAllocDirectCall] void clearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil); /* Query Objects */ diff --git a/tools/under-control/src/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.idl b/tools/under-control/src/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.idl index 34708029d..33c036130 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.idl @@ -39,6 +39,9 @@ typedef unsigned short GLushort; typedef unsigned long GLuint; typedef unrestricted float GLfloat; typedef unrestricted float GLclampf; +typedef [PassAsSpan] ([AllowShared, BufferSourceTypeNoSizeLimit] Float32Array or sequence) Float32List; +typedef [PassAsSpan] ([AllowShared, BufferSourceTypeNoSizeLimit] Int32Array or sequence) Int32List; +typedef [PassAsSpan] ([AllowShared, BufferSourceTypeNoSizeLimit] Uint32Array or sequence) Uint32List; interface mixin WebGLRenderingContextBase { @@ -485,11 +488,10 @@ interface mixin WebGLRenderingContextBase { void bufferData(GLenum target, GLsizeiptr size, GLenum usage); void bufferData(GLenum target, [AllowShared, BufferSourceTypeNoSizeLimit] ArrayBufferView data, GLenum usage); void bufferData(GLenum target, [AllowShared, BufferSourceTypeNoSizeLimit] ArrayBuffer? data, GLenum usage); - void bufferSubData(GLenum target, GLintptr offset, - [AllowShared, FlexibleArrayBufferView, BufferSourceTypeNoSizeLimit] ArrayBufferView data); - void bufferSubData(GLenum target, GLintptr offset, [AllowShared, BufferSourceTypeNoSizeLimit] ArrayBuffer data); GLenum checkFramebufferStatus(GLenum target); + void bufferSubData(GLenum target, GLintptr offset, + [AllowShared, PassAsSpan, BufferSourceTypeNoSizeLimit] BufferSource data); [NoAllocDirectCall] void clear(GLbitfield mask); [NoAllocDirectCall] void clearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); [NoAllocDirectCall] void clearDepth(GLclampf depth); @@ -669,63 +671,37 @@ interface mixin WebGLRenderingContextBase { GLenum format, GLenum type, VideoFrame frame); [NoAllocDirectCall] void uniform1f(WebGLUniformLocation? location, GLfloat x); - [NoAllocDirectCall] void uniform1fv(WebGLUniformLocation? location, - [AllowShared, FlexibleArrayBufferView, BufferSourceTypeNoSizeLimit] Float32Array v); - [NoAllocDirectCall] void uniform1fv(WebGLUniformLocation? location, sequence v); + [NoAllocDirectCall] void uniform1fv(WebGLUniformLocation? location, Float32List v); [NoAllocDirectCall] void uniform1i(WebGLUniformLocation? location, GLint x); - [NoAllocDirectCall] void uniform1iv(WebGLUniformLocation? location, - [AllowShared, FlexibleArrayBufferView, BufferSourceTypeNoSizeLimit] Int32Array v); - [NoAllocDirectCall] void uniform1iv(WebGLUniformLocation? location, sequence v); + [NoAllocDirectCall] void uniform1iv(WebGLUniformLocation? location, Int32List v); [NoAllocDirectCall] void uniform2f(WebGLUniformLocation? location, GLfloat x, GLfloat y); - [NoAllocDirectCall] void uniform2fv(WebGLUniformLocation? location, - [AllowShared, FlexibleArrayBufferView, BufferSourceTypeNoSizeLimit] Float32Array v); - [NoAllocDirectCall] void uniform2fv(WebGLUniformLocation? location, sequence v); + [NoAllocDirectCall] void uniform2fv(WebGLUniformLocation? location, Float32List v); [NoAllocDirectCall] void uniform2i(WebGLUniformLocation? location, GLint x, GLint y); - [NoAllocDirectCall] void uniform2iv(WebGLUniformLocation? location, - [AllowShared, FlexibleArrayBufferView, BufferSourceTypeNoSizeLimit] Int32Array v); - [NoAllocDirectCall] void uniform2iv(WebGLUniformLocation? location, sequence v); + [NoAllocDirectCall] void uniform2iv(WebGLUniformLocation? location, Int32List v); [NoAllocDirectCall] void uniform3f(WebGLUniformLocation? location, GLfloat x, GLfloat y, GLfloat z); - [NoAllocDirectCall] void uniform3fv(WebGLUniformLocation? location, - [AllowShared, FlexibleArrayBufferView, BufferSourceTypeNoSizeLimit] Float32Array v); - [NoAllocDirectCall] void uniform3fv(WebGLUniformLocation? location, sequence v); + [NoAllocDirectCall] void uniform3fv(WebGLUniformLocation? location, Float32List v); [NoAllocDirectCall] void uniform3i(WebGLUniformLocation? location, GLint x, GLint y, GLint z); - [NoAllocDirectCall] void uniform3iv(WebGLUniformLocation? location, - [AllowShared, FlexibleArrayBufferView, BufferSourceTypeNoSizeLimit] Int32Array v); - [NoAllocDirectCall] void uniform3iv(WebGLUniformLocation? location, sequence v); + [NoAllocDirectCall] void uniform3iv(WebGLUniformLocation? location, Int32List v); [NoAllocDirectCall] void uniform4f(WebGLUniformLocation? location, GLfloat x, GLfloat y, GLfloat z, GLfloat w); - [NoAllocDirectCall] void uniform4fv(WebGLUniformLocation? location, - [AllowShared, FlexibleArrayBufferView, BufferSourceTypeNoSizeLimit] Float32Array v); - [NoAllocDirectCall] void uniform4fv(WebGLUniformLocation? location, sequence v); + [NoAllocDirectCall] void uniform4fv(WebGLUniformLocation? location, Float32List v); [NoAllocDirectCall] void uniform4i(WebGLUniformLocation? location, GLint x, GLint y, GLint z, GLint w); - [NoAllocDirectCall] void uniform4iv(WebGLUniformLocation? location, - [AllowShared, FlexibleArrayBufferView, BufferSourceTypeNoSizeLimit] Int32Array v); - [NoAllocDirectCall] void uniform4iv(WebGLUniformLocation? location, sequence v); - - [NoAllocDirectCall] void uniformMatrix2fv(WebGLUniformLocation? location, GLboolean transpose, - [AllowShared, BufferSourceTypeNoSizeLimit] Float32Array array); - [NoAllocDirectCall] void uniformMatrix2fv(WebGLUniformLocation? location, GLboolean transpose, sequence array); - [NoAllocDirectCall] void uniformMatrix3fv(WebGLUniformLocation? location, GLboolean transpose, - [AllowShared, BufferSourceTypeNoSizeLimit] Float32Array array); - [NoAllocDirectCall] void uniformMatrix3fv(WebGLUniformLocation? location, GLboolean transpose, sequence array); - [NoAllocDirectCall] void uniformMatrix4fv(WebGLUniformLocation? location, GLboolean transpose, - [AllowShared, BufferSourceTypeNoSizeLimit] Float32Array array); - [NoAllocDirectCall] void uniformMatrix4fv(WebGLUniformLocation? location, GLboolean transpose, sequence array); + [NoAllocDirectCall] void uniform4iv(WebGLUniformLocation? location, Int32List v); + + [NoAllocDirectCall] void uniformMatrix2fv(WebGLUniformLocation? location, GLboolean transpose, Float32List array); + [NoAllocDirectCall] void uniformMatrix3fv(WebGLUniformLocation? location, GLboolean transpose, Float32List array); + [NoAllocDirectCall] void uniformMatrix4fv(WebGLUniformLocation? location, GLboolean transpose, Float32List array); void useProgram(WebGLProgram? program); void validateProgram(WebGLProgram program); [NoAllocDirectCall] void vertexAttrib1f(GLuint indx, GLfloat x); - [NoAllocDirectCall] void vertexAttrib1fv(GLuint indx, [AllowShared, BufferSourceTypeNoSizeLimit] Float32Array values); - [NoAllocDirectCall] void vertexAttrib1fv(GLuint indx, sequence values); + void vertexAttrib1fv(GLuint indx, Float32List values); [NoAllocDirectCall] void vertexAttrib2f(GLuint indx, GLfloat x, GLfloat y); - [NoAllocDirectCall] void vertexAttrib2fv(GLuint indx, [AllowShared, BufferSourceTypeNoSizeLimit] Float32Array values); - [NoAllocDirectCall] void vertexAttrib2fv(GLuint indx, sequence values); + void vertexAttrib2fv(GLuint indx, Float32List values); [NoAllocDirectCall] void vertexAttrib3f(GLuint indx, GLfloat x, GLfloat y, GLfloat z); - [NoAllocDirectCall] void vertexAttrib3fv(GLuint indx, [AllowShared, BufferSourceTypeNoSizeLimit] Float32Array values); - [NoAllocDirectCall] void vertexAttrib3fv(GLuint indx, sequence values); + void vertexAttrib3fv(GLuint indx, Float32List values); [NoAllocDirectCall] void vertexAttrib4f(GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w); - [NoAllocDirectCall] void vertexAttrib4fv(GLuint indx, [AllowShared, BufferSourceTypeNoSizeLimit] Float32Array values); - [NoAllocDirectCall] void vertexAttrib4fv(GLuint indx, sequence values); + void vertexAttrib4fv(GLuint indx, Float32List values); [NoAllocDirectCall] void vertexAttribPointer(GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLintptr offset); diff --git a/tools/under-control/src/third_party/blink/renderer/modules/webgl/webgl_shader_pixel_local_storage.idl b/tools/under-control/src/third_party/blink/renderer/modules/webgl/webgl_shader_pixel_local_storage.idl index 68aa637c4..d8e0a1dc0 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/webgl/webgl_shader_pixel_local_storage.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/webgl/webgl_shader_pixel_local_storage.idl @@ -29,7 +29,7 @@ GLint layer); undefined framebufferPixelLocalClearValuefvWEBGL( GLint plane, - [AllowShared, BufferSourceTypeNoSizeLimit] Float32Array value, + [AllowShared, PassAsSpan] Float32Array value, optional GLuint srcOffset = 0); undefined framebufferPixelLocalClearValuefvWEBGL( GLint plane, @@ -37,7 +37,7 @@ optional GLuint srcOffset = 0); undefined framebufferPixelLocalClearValueivWEBGL( GLint plane, - [AllowShared, BufferSourceTypeNoSizeLimit] Int32Array value, + [AllowShared, PassAsSpan] Int32Array value, optional GLuint srcOffset = 0); undefined framebufferPixelLocalClearValueivWEBGL( GLint plane, @@ -45,7 +45,7 @@ optional GLuint srcOffset = 0); undefined framebufferPixelLocalClearValueuivWEBGL( GLint plane, - [AllowShared, BufferSourceTypeNoSizeLimit] Uint32Array value, + [AllowShared, PassAsSpan] Uint32Array value, optional GLuint srcOffset = 0); undefined framebufferPixelLocalClearValueuivWEBGL( GLint plane, diff --git a/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_blend_component.idl b/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_blend_component.idl index 2d15fb9f4..1507cc13f 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_blend_component.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_blend_component.idl @@ -26,6 +26,10 @@ enum GPUBlendFactor { "src-alpha-saturated", "constant", "one-minus-constant", + "src1", + "one-minus-src1", + "src1-alpha", + "one-minus-src1-alpha", }; enum GPUBlendOperation { diff --git a/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_canvas_configuration.idl b/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_canvas_configuration.idl index 0508de450..86e38a9e4 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_canvas_configuration.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_canvas_configuration.idl @@ -9,6 +9,15 @@ enum GPUCanvasAlphaMode { "premultiplied", }; +enum GPUCanvasToneMappingMode { + "standard", + "extended", +}; + +dictionary GPUCanvasToneMapping { + GPUCanvasToneMappingMode mode = "standard"; +}; + dictionary GPUCanvasConfiguration { required GPUDevice device; required GPUTextureFormat format; @@ -16,5 +25,8 @@ dictionary GPUCanvasConfiguration { sequence viewFormats = []; PredefinedColorSpace colorSpace = "srgb"; GPUCanvasAlphaMode alphaMode = "opaque"; + [RuntimeEnabled=WebGPUHDR] GPUCanvasToneMapping toneMapping = {}; + // TODO(https://crbug.com/333967627): Remove support for this older version + // of the API once the new API lands. [RuntimeEnabled=CanvasHDR] CanvasHighDynamicRangeOptions hdrOptions; }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_programmable_pass_encoder.idl b/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_programmable_pass_encoder.idl index de563e781..59d3b08e1 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_programmable_pass_encoder.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_programmable_pass_encoder.idl @@ -10,7 +10,7 @@ interface mixin GPUProgrammablePassEncoder { [RaisesException, NoAllocDirectCall] void setBindGroup( GPUIndex32 index, GPUBindGroup? bindGroup, - [AllowShared, FlexibleArrayBufferView, BufferSourceTypeNoSizeLimit] Uint32Array dynamicOffsetsData, + [AllowShared, PassAsSpan, BufferSourceTypeNoSizeLimit] Uint32Array dynamicOffsetsData, GPUSize64 dynamicOffsetsDataStart, GPUSize32 dynamicOffsetsDataLength); diff --git a/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_supported_features.idl b/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_supported_features.idl index ab5347663..d60da1f92 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_supported_features.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_supported_features.idl @@ -22,6 +22,9 @@ enum GPUFeatureName { "chromium-experimental-subgroups", "chromium-experimental-subgroup-uniform-control-flow", "dual-source-blending", + // Currently subgroups features are under OT. + "subgroups", + "subgroups-f16", }; [ diff --git a/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_supported_limits.idl b/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_supported_limits.idl index 5c8d99e55..1977a92d9 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_supported_limits.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_supported_limits.idl @@ -40,6 +40,7 @@ readonly attribute unsigned long maxComputeWorkgroupSizeY; readonly attribute unsigned long maxComputeWorkgroupSizeZ; readonly attribute unsigned long maxComputeWorkgroupsPerDimension; - [RuntimeEnabled=WebGPUExperimentalFeatures] readonly attribute unsigned long minSubgroupSize; - [RuntimeEnabled=WebGPUExperimentalFeatures] readonly attribute unsigned long maxSubgroupSize; + // Note that WebGPUSubgroupsFeatures is implied by WebGPUExperimentalFeatures. + [RuntimeEnabled=WebGPUSubgroupsFeatures] readonly attribute unsigned long minSubgroupSize; + [RuntimeEnabled=WebGPUSubgroupsFeatures] readonly attribute unsigned long maxSubgroupSize; }; diff --git a/tools/under-control/src/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/tools/under-control/src/third_party/blink/renderer/platform/runtime_enabled_features.json5 index 8321d6cff..75e44e6b7 100755 --- a/tools/under-control/src/third_party/blink/renderer/platform/runtime_enabled_features.json5 +++ b/tools/under-control/src/third_party/blink/renderer/platform/runtime_enabled_features.json5 @@ -248,6 +248,20 @@ base_feature: "none", public: true, }, + { + // Enforce no accessible name on objects that have a role where names are + // prohibited (listed in https://w3c.github.io/aria/#namefromprohibited): + // log a friendly error in the developer console, and trigger a DCHECK(). + // The incorrect markup situation will be repaired, and the name will + // be exposed as a description instead. + // TODO(crbug.com/350528330, + // https://github.com/web-platform-tests/interop-accessibility/issues/133, + // https://github.com/w3c/accname/issues/240, + // https://github.com/w3c/accname/issues/241): If community feedback is + // positive, and WPT + accname testable statements are updated to allow + // this, then add status: test. + name: "AccessibilityProhibitedNames", + }, { name: "AccessibilitySerializationSizeMetrics", status: "experimental", @@ -265,6 +279,7 @@ { // Interest Group JS API/runtimeflag. name: "AdInterestGroupAPI", + status: "stable", origin_trial_feature_name: "AdInterestGroupAPI", implied_by: ["Fledge", "Parakeet"], public: true, @@ -282,6 +297,11 @@ status: "test", base_feature: "none", }, + { + name: "AIPromptAPI", + status: "test", + base_feature: "EnableAIPromptAPI", + }, { name: "AllowContentInitiatedDataUrlNavigations", base_feature: "none", @@ -331,6 +351,10 @@ name: "AriaNotify", status: "test", }, + { + name: "AriaRowColIndexText", + status: "stable", + }, // See https://crbug.com/40150299, and // https://github.com/whatwg/dom/issues/1255. { @@ -339,18 +363,15 @@ }, { name: "AttributionReporting", - origin_trial_feature_name: "PrivacySandboxAdsAPIs", - origin_trial_allows_third_party: true, - status: "experimental", + status: "stable", base_feature: "none", public: true, }, { name: "AttributionReportingCrossAppWeb", - origin_trial_feature_name: "AttributionReportingCrossAppWeb", - origin_trial_allows_third_party: true, base_feature: "none", public: true, + status: "stable", }, { // This only exists so we can use RuntimeEnabled in the IDL file @@ -365,7 +386,7 @@ }, { name: "AudioContextOnError", - status: "experimental", + status: "stable", }, { // AudioContext.playoutStats interface. @@ -391,6 +412,12 @@ base_feature: "none", origin_trial_feature_name: "AutoDarkMode", }, + { + // Enables Permissions API query support for Automatic Fullscreen. + // https://chromestatus.com/feature/6218822004768768 + name: "AutomaticFullscreenPermissionsQuery", + status: "stable", + }, { name: "AutomationControlled", base_feature: "none", @@ -405,15 +432,6 @@ // If enabled, lazy loaded images can be auto sized if the sizes // attribute is missing or set to auto. name: "AutoSizeLazyLoadedImages", - depends_on: ["NoIntrinsicSizeOverride"], - status: "stable", - }, - { - name: "AvoidCaretVisibleSelectionAdjuster", - status: "stable", - }, - { - name: "BackdropInheritOriginating", status: "stable", }, // When enabled, enforces new interoperable semantics for 3D transforms. @@ -516,11 +534,22 @@ public: true, status: "experimental", }, + { + // Full support for box-decoration-break, including block fragmentation, + // not just -webkit-box-decoration-break with inlines at line breaks. + name: "BoxDecorationBreak", + status: "experimental", + }, { // crbug.com/41485013 name: "BreakIteratorDataGenerator", status: "stable", }, + { + // crbug.com/41485013 + name: "BreakIteratorSetStartOffset", + status: "stable", + }, { name: "BrowserVerifiedUserActivationKeyboard", base_feature: "none", @@ -535,6 +564,14 @@ name: "BufferedBytesConsumerLimitSize", status: "stable", }, + { + name: "BuiltInAIAPI", + status: "test", + base_feature: "EnableBuiltInAIAPI", + base_feature_status: "enabled", + copied_from_base_feature_if: "overridden", + implied_by: ["AIPromptAPI"] + }, { // Bypasses the enforcement of the Page Embedded Permission Control // security checks. This flag is disabled by default and should only be @@ -566,6 +603,7 @@ }, { name: "Canvas2dMesh", + origin_trial_feature_name: "Canvas2dMesh", status: "test", }, { @@ -620,7 +658,7 @@ { // https://www.w3.org/TR/cssom-view-1/#dom-document-caretpositionfrompoint name: "CaretPositionFromPoint", - status: "test", + status: "stable", }, { // Kill switch for changes to RenderFrameMetadataObserverImpl in connection with Engagement @@ -649,6 +687,13 @@ name: "CloseWatcher", status: "stable", }, + { + // Avoid queuing a task to fire a selectionchange event when there is already a task scheduled + // to do that for the target according to the new spec: + // https://w3c.github.io/selection-api/#scheduling-selectionhange-event + name: "CoalesceSelectionchangeEvent", + status: "experimental", + }, { name: "CoepReflection", status: "test", @@ -666,6 +711,10 @@ name: "CompositeClipPathAnimation", public: true, }, + { + name: "CompositedAnimationsCancelledAsynchronously", + status: "stable" + }, { name: "CompositedSelectionUpdate", public: true, @@ -726,6 +775,16 @@ name: "ContinueEventTimingRecordingWhenBufferIsFull", status: "experimental", }, + { + // Enable support for Controlled Frame, providing the Controlled + // Frame tag to IWA apps and other contexts. See + // https://github.com/WICG/controlled-frame/blob/main/README.md for more + // info. + name: "ControlledFrame", + public: true, + status: "experimental", + base_feature_status: "disabled", + }, { name: "CookieDeprecationFacilitatedTesting", base_feature: "none", @@ -759,6 +818,12 @@ name: "CrossFramePerformanceTimeline", status: "experimental", }, + { + // CSS attr() function that accepts not only string types + // and can be used in all properties. + // https://drafts.csswg.org/css-values-4/#attr-notation + name: "CSSAdvancedAttrFunction", + }, { // Allows positioning a positioned element relative to another one. // https://drafts.csswg.org/css-anchor-1/ @@ -799,10 +864,6 @@ name: "CSSCalcSizeFunction", status: "experimental", }, - { - name: "CSSCapFontUnits", - status: "stable", - }, { // Support case-sensitive attribute selector modifier // https://drafts.csswg.org/selectors-4/#attribute-case @@ -852,6 +913,11 @@ name: "CSSCustomStateNewSyntax", status: "stable", }, + { + // crbug.com/345562934 + name: "CssDecoratingBoxFirstLine", + status: "stable", + }, { name: "CSSDisplayModePictureInPicture", status: "stable", @@ -870,6 +936,12 @@ name: "CSSExponentialFunctions", status: "stable", }, + { + // Spec change to search for container query and container units up the + // flat tree instead of the shadow-including ancestors. + name: "CSSFlatTreeContainer", + status: "test", + }, { name: "CSSFontSizeAdjust", status: "stable", @@ -885,6 +957,12 @@ name: "CSSHexAlphaColor", status: "stable", }, + { + // For the position-try-fallbacks property, replaces the inset-area() + // syntax with just <'inset-area'>. + name: "CSSInsetAreaValue", + status: "experimental", + }, { // https://chromestatus.com/feature/6289894144212992 name: "CSSKeyframesRuleLength", @@ -900,14 +978,9 @@ name: "CSSLazyParsingFastPath", status: "experimental" }, - { - // Support for 'light-dark()' function to select computed color values - // based on the used color-scheme. - name: "CSSLightDarkColors", - status: "stable", - }, { name: "CSSLineClamp", + status: "experimental", }, { name: "CSSLogicalOverflow", @@ -918,11 +991,7 @@ status: "experimental", }, { - // Support for typed om numeric factory methods for various units that - // were otherwise shipped: rex, rch, ic, ric, lh, rlh, x (cap and rcap - // covered by separate runtime flag). - name: "CSSNumericFactoryCompleteness", - status: "stable", + name: "CSSMixins", }, { name: "CSSPaintAPIArguments", @@ -937,6 +1006,22 @@ name: "CSSPositionStickyStaticScrollPosition", status: "test", }, + { + // position-try-options has been renamed to position-try-fallbacks. + // This feature was shipped in M128, so this flag can be removed in M130. + name: "CSSPositionTryFallbacks", + depends_on: ["CSSAnchorPositioning"], + status: "stable", + }, + { + // Kill switch (inverted logic) to re-enable `position-try-options`. That + // property was renamed to `position-try-fallbacks` which is enabled via + // the CSSPositionTryFallbacks flag. + // This feature was disabled in M128, so this flag (and the code to + // implement `position-try-options`) can be removed in M130. + name: "CSSPositionTryOptions", + depends_on: ["CSSAnchorPositioning"], + }, { // Support the position-try-order property. // https://drafts.csswg.org/css-anchor-position-1/#position-try-order-property @@ -971,16 +1056,16 @@ status: "test", }, { - // For scroll-markers pseudo elements for Carousel. + // For ::scroll-marker and ::scroll-marker-group pseudo elements for Carousel. // https://github.com/flackr/carousel/tree/main/scroll-marker name: "CSSPseudoScrollMarkers", status: "experimental", }, { - // TODO(crbug.com/40932006): Non-standard 'reading-order-items' keyword - // for CSS reading of grid and flex layout. - // https://drafts.csswg.org/css-display-4/#reading-order-items - name: "CSSReadingOrderItems", + // TODO(crbug.com/40932006): Non-standard 'reading-flow' keyword + // for reading of grid and flexbox items. + // https://drafts.csswg.org/css-display-4/#reading-flow + name: "CSSReadingFlow", status: "experimental", }, { @@ -999,7 +1084,7 @@ { // crbug.com/40249572 name: "CssRubyAlign", - status: "experimental", + status: "stable", depends_on: ["RubyLineBreakable"], }, { @@ -1043,11 +1128,6 @@ name: "CSSSignRelatedFunctions", status: "experimental", }, - { - // A separate feature for testing compatibility, related to the work on - // https://chromestatus.com/feature/5196713071738880 - name: "CSSSizingKeywordAnimation", - }, { name: "CSSSnapContainerQueries", status: "experimental", @@ -1079,7 +1159,7 @@ // TODO(https://crbug.com/1411581): // https://w3c.github.io/csswg-drafts/css-inline-3/#propdef-leading-trim name: "CSSTextBoxTrim", - status: "test", + status: "experimental", }, { // crbug.com/1463890, crbug.com/1463891: CSS `text-spacing` shorthand @@ -1102,14 +1182,6 @@ // [1] https://drafts.csswg.org/css-scoping-1/#shadow-names name: "CSSTreeScopedTimelines", }, - { - // Container query selectors containing uknown or unsupported queries - // never selects a container with this feature enabled. - // For instance, "@container (width > 0px) or (foo: bar)" will never - // select or match any containers. - name: "CSSUnknownContainerQueriesNoSelection", - status: "stable", - }, // Support for `user-select:contain`. { name: "CSSUserSelectContain", @@ -1255,6 +1327,14 @@ status: "experimental", base_feature: "none", }, + { + name: "DisableReduceAcceptLanguage", + origin_trial_feature_name: "DisableReduceAcceptLanguage", + origin_trial_type: "deprecation", + origin_trial_allows_insecure: true, + origin_trial_allows_third_party: true, + base_feature: "none", + }, { name: "DisableSelectAllForEmptyText", status: "stable", @@ -1359,6 +1439,15 @@ "default": "stable", }, }, + // Enables `preferInitialWindowPlacement` Document PiP option to skip + // re-using the previous pip window bounds. + { + name: "DocumentPictureInPicturePreferInitialPlacement", + status: { + "Android": "", + "default": "experimental", + }, + }, // Enables propagating user activation from a document picture-in-picture // window up to its opener window and vice versa. { @@ -1411,7 +1500,6 @@ // The fieldtrial_testing_config currently disables this feature for tests. { name: "DOMParserIncludeShadowRoots", - status: "stable", }, // Controls whether DOMParser.parseFromString() attempts to use the // html fast path parser. This flag is to be used as a killswitch in case @@ -1423,12 +1511,33 @@ { name: "DOMPartsAPI", status: "experimental", + implied_by: ["DOMPartsAPIMinimal"], + }, + { + name: "DOMPartsAPIMinimal", }, { // Shipping in M121, so should be safe to remove in M126. name: "DontFireDblclickOnDisabledFormControls", status: "stable", }, + { + // Drop the entire URL as plaintext in plaintext only editable position. + // Fix for https://crbug.com/40895258. This change is landing in M127 and + // the flag can be removed in M129 in case of no issues. + name: "DropUrlAsPlainTextInPlainTextOnlyEditablePosition", + status: "stable" + }, + // Dynamically change the safe area insets based on the bottom browser + // controls visibility. + { + name: "DynamicSafeAreaInsets", + }, + // Dynamically change the safe area insets as browser controls scrolls. + { + name: "DynamicSafeAreaInsetsOnScroll", + depends_on: ["DynamicSafeAreaInsets"] + }, { name: "DynamicScrollCullRectExpansion", status: "experimental", @@ -1534,7 +1643,6 @@ status: "test", base_feature: "none", origin_trial_feature_name: "FedCmContinueOnBundle", - origin_trial_os: ["win", "mac", "linux", "chromeos"], origin_trial_allows_third_party: true, }, { @@ -1551,7 +1659,6 @@ status: "test", base_feature: "none", origin_trial_feature_name: "FedCmButtonMode", - origin_trial_os: ["win", "mac", "linux", "chromeos"], origin_trial_allows_third_party: true, }, { @@ -1618,22 +1725,19 @@ name: "FencedFrames", base_feature: "none", // This helps enable and expose the element, but note that - // blink::features::kFencedFrames must be enabled as well, similar to - // Portals, as we require the support of the browser process to fully - // enable the feature. Enabling this runtime enabled feature alone has no - // effect. - origin_trial_feature_name: "PrivacySandboxAdsAPIs", - origin_trial_allows_third_party: true, + // blink::features::kFencedFrames must be enabled as well, as we require + // the support of the browser process to fully enable the feature. + // Enabling this runtime enabled feature alone has no effect. public: true, + status: "stable", }, { name: "FencedFramesAPIChanges", // Various new IDL attributes on the element (such as // `config`, `sandbox`, and `allow`). - origin_trial_feature_name: "PrivacySandboxAdsAPIs", - origin_trial_allows_third_party: true, base_feature_status: "enabled", copied_from_base_feature_if: "enabled_or_overridden", + status: "stable", }, { name: "FencedFramesDefaultMode", @@ -1732,15 +1836,21 @@ depends_on: ["FileSystemAccess"], status: "experimental", }, + { + // The unobserve function of the FileSystemObserver. + // See https://crbug.com/321980469. + name: "FileSystemObserverUnobserve", + depends_on: ["FileSystemObserver"], + status: "experimental", + }, { name: "FindTextInReadonlyTextInput", status: "experimental", }, { name: "Fledge", + status: "stable", base_feature: "none", - origin_trial_feature_name: "PrivacySandboxAdsAPIs", - origin_trial_allows_third_party: true, public: true, }, { @@ -1758,6 +1868,7 @@ }, { name: "FledgeCustomMaxAuctionAdComponents", + status: "stable", }, { // Enables using a 'deprecatedRenderURLReplacements' field within the @@ -1792,6 +1903,7 @@ { name: "FledgeMultiBid", public: true, + status: "stable", }, { name: "FledgeNegativeTargeting", @@ -1813,6 +1925,7 @@ // Enables using a 'reportingTimeout' field within the Protected Audience // ad auction config. name: "FledgeReportingTimeout", + status: "stable", }, { name: "FledgeTrustedBiddingSignalsSlotSize", @@ -1820,9 +1933,19 @@ }, { name: "FluentOverlayScrollbars", + // The associated base feature is defined in + // ui/native_theme/native_theme_features.cc. + base_feature: "none", }, { name: "FluentScrollbars", + // The associated base feature is defined in + // ui/native_theme/native_theme_features.cc. + base_feature: "none", + }, + { + name: "FluentScrollbarUsesNinePatchTrack", + status: "stable", }, { // Kill switch for crbug.com/1420810 fix @@ -1843,6 +1966,10 @@ { name: "FontationsFontBackend", }, + { + name: "FontationsForSelectedFormats", + status: "stable", + }, { name: "FontFamilyPostscriptMatchingCTMigration", }, @@ -1857,14 +1984,23 @@ name: "FontPaletteAnimation", status: "stable", }, + { + name: "FontPresentWin", + status: "stable", + }, { name: "FontSrcLocalMatching", base_feature: "none", // No status, as the web platform runtime enabled feature is controlled by // a Chromium level feature. }, + { + name: "FontSystemFallbackNotoCjk", + status: "stable", + }, { name: "FontVariantEmoji", + status: "test", }, { name: "FontVariationSequences", @@ -1927,15 +2063,6 @@ name: "FreezeFramesOnVisibility", status: "experimental", }, - { - // Enables `fullscreen` windowFeatures parameter in window.open(). - name: "FullscreenPopupWindows", - status: "experimental", - base_feature_status: "enabled", - copied_from_base_feature_if: "overridden", - origin_trial_feature_name: "FullscreenPopupWindows", - origin_trial_os: ["win", "mac", "linux", "chromeos"], - }, { name: "GamepadButtonAxisEvents", status: "experimental", @@ -1967,14 +2094,14 @@ depends_on: ["GetDisplayMedia"], status: "experimental", }, - { - name: "GetNextSiblingPositionWhenLastChild", - status: "stable", - }, { name: "GroupEffect", status: "test", }, + { + name: "HandleDeletionWithNonEditableContentAtBlockBoundary", + status: "stable", + }, { name: "HandwritingRecognition", status: { @@ -2040,6 +2167,10 @@ name: "HTMLInvokeTargetAttribute", status: "experimental", }, + { + name: "HTMLMenuElementIsListOwner", + status: "stable", + }, { // A flag, just for local testing to make the // HTML parser yield more often and take longer to resume. @@ -2144,6 +2275,11 @@ name: "InlineBlockInSameLine", status: "stable", }, + { + // crbug.com/343749045 + name: "InlineCursorMultiColFix", + status: "stable", + }, { // If enabled, and the inner html parser is unable to successfully // parse, it will log histograms of why it failed. The logging is @@ -2222,6 +2358,13 @@ status: "experimental", origin_trial_feature_name: "JavaScriptCompileHintsMagic", }, + { + // Allows :target to match elements even after they are removed and + // reattached to the document. Enabled in M128, should be safe to remove + // in M133. + name: "KeepCSSTargetAfterReattach", + status: "stable", + }, { name: "KeyboardAccessibleTooltip", status: "experimental", @@ -2248,6 +2391,11 @@ origin_trial_allows_insecure: true, origin_trial_allows_third_party: true, }, + { + // This is a killswitch for a bug fix that is shipping in M128. + name: "LabelAndDelegatesFocusNewHandling", + status: "stable", + }, { // This feature makes HTMLLabelElement::DefaultEventHandler always call // HTMLElement::DefaultEventHandler instead of only doing so @@ -2264,25 +2412,16 @@ depends_on: ["CSSAnchorPositioning"], status: "stable", }, - { - name: "LayoutBaselineFix", - status: "stable", - }, - { - name: "LayoutBlockButton", - depends_on: ["LayoutBaselineFix"], - status: "stable", - }, { name: "LayoutFlexNewRowAlgorithmV3", status: "test", }, { - name: "LayoutFlexUnderInvalidationFix", - status: "stable", + name: "LayoutIgnoreMarginsForSticky", }, { - name: "LayoutIgnoreMarginsForSticky", + name: "LayoutMasonry", + status: "test", }, { name: "LayoutNGShapeCache", @@ -2346,6 +2485,11 @@ name: "LongAnimationFrameTiming", status: "stable" }, + { + // Long press on a link selects the link text instead of bringing up + // context menu. Enabled only on Android AuthView. + name: "LongPressLinkSelectText", + }, { // Use LongAnimationFrameMonitor to emit longtask entries name: "LongTaskFromLongAnimationFrame", @@ -2355,28 +2499,9 @@ name: "MacFontsDeprecateFontTraitsWorkaround", status: "stable", }, - { - name: "MachineLearningCommon", - implied_by: ["MachineLearningModelLoader", "MachineLearningNeuralNetwork"], - status: "experimental", - }, - { - name: "MachineLearningModelLoader", - public: true, - status: "experimental", - base_feature: "none", - }, { name: "MachineLearningNeuralNetwork", - public: true, - status: { - "ChromeOS_Ash": "experimental", - "ChromeOS_Lacros": "experimental", - "Win": "experimental", - "Mac": "experimental", - "Linux": "experimental", - "default": "test" - }, + // Enabled by webnn::mojom::features::kWebMachineLearningNeuralNetwork. base_feature: "none", }, { @@ -2504,6 +2629,9 @@ status: "test", base_feature: "none", }, + { + name: "MediaStreamTrackWebSpeech", + }, { name: "MessagePortCloseEvent", status: "test", @@ -2525,9 +2653,8 @@ name: "MobileLayoutTheme", }, { - name: "ModelExecutionAPI", - status: "test", - base_feature: "EnableModelExecutionAPI", + name: "ModifyParagraphCrossEditingoundary", + status: "stable", }, { name: "MojoJS", @@ -2564,6 +2691,10 @@ name: "MultiSelectDeselectWhenOnlyOption", status: "test", }, + { + name: "MultiSmoothScrollIntoView", + status: "experimental", + }, // crbug.com/1446498: This feature is being used for the deprecation of // Mutation Events. { @@ -2633,10 +2764,6 @@ name: "NewGetFocusableAreaBehavior", status: "stable", }, - { - name: "NextSiblingPositionUseNextCandidate", - status: "stable", - }, { name: "NoIdleEncodingForWebTests", status: "test", @@ -2647,13 +2774,6 @@ name: "NoIncreasingEndOffsetOnSplittingTextNodes", status: "stable", }, - { - // If enabled, LayoutReplaced::IntrinsicSize will return the - // natural/intrinsic size for this replaced element based on the natural - // size for the element's contents - name: "NoIntrinsicSizeOverride", - status: "stable", - }, // Makes enter/leave Mouse and Pointer Events non-composed as per // corresponding specifications. { @@ -2711,23 +2831,6 @@ status: "experimental", base_feature: "none", }, - // Origin trial to experiment with No-Vary-Search in Prefetch Cache. - // The functionality in this Origin Trial is now enabled by default in the - // browser by network::features::kPrefetchNoVarySearchShippedByDefault - // feature parameter of network::features::kPrefetchNoVarySearch. - // This runtime enabled feature is ignored as long as the feature - // parameter network::features::kPrefetchNoVarySearchShippedByDefault is - // not disabled via Finch. - // See crbug.com/1378075. Depends on SpeculationRulesPrefetchProxy to be - // enabled. - // On the browser side, the trial needs features::kPrefetchUseContentRefactor - // enabled. If features::kPrefetchUseContentRefactor is disabled, then - // the code will behave as if PrefetchNoVarySearch is disabled. - { - name: "NoVarySearchPrefetch", - base_feature: "none", - origin_trial_feature_name: "NoVarySearchPrefetch", - }, { name: "ObservableAPI", status: "experimental", @@ -2750,14 +2853,6 @@ // Android does not yet support SystemMonitor. status: {"Android": "", "default": "stable"}, }, - // This flag is a killswitch. It was only exists as a way for us to turn - // the feature off in the emergency that it breaks websites. - // TODO(http://crbug.com/1473340): Delete internal web_tests which are - // redundant with existing WPTs when we delete this flag. - { - name: "OptionElementAlwaysUseLabel", - status: "stable", - }, { name: "OrientationEvent", status: {"Android": "stable"}, @@ -2906,6 +3001,7 @@ // https://www.w3.org/TR/css-page-3/#margin-boxes { name: "PageMarginBoxes", + status: "experimental", }, { name: "PagePopup", @@ -2922,13 +3018,11 @@ }, { name: "PaintHoldingForIframes", - status: "test", - implied_by: ["ViewTransitionOnNavigationForIframes"], + status: "stable", }, { name: "PaintHoldingForLocalIframes", status: "stable", - implied_by: ["ViewTransitionOnNavigationForIframes"], }, { name: "PaintUnderInvalidationChecking", @@ -3040,7 +3134,7 @@ }, { name: "PointerEventDeviceId", - status: "test", + status: "stable", }, { name: "PositionOutsideTabSpanCheckSiblingNode", @@ -3101,30 +3195,22 @@ base_feature: "none", }, { - // When enabled, gives the option to pretty-print JSON documents to - // cleanly format the JSON and make it readable. - name:"PrettyPrintJSONDocument", + // When enabled, styling for the content within heading will be + // preserved after merge. + name: "PreserveFollowingBlockStylesDuringBlockMerge", status: "stable", }, { - // Privacy intervention to disable reading the system accent-color via - // images. - name: "PreventReadingSystemAccentColor", + // When enabled, gives the option to pretty-print JSON documents to + // cleanly format the JSON and make it readable. + name:"PrettyPrintJSONDocument", status: "stable", }, - // The RTE feature encompasses multiple APIs, including: Attribution - // Reporting, FLEDGE, Topics and Fenced Frames. - { - name: "PrivacySandboxAdsAPIs", - base_feature: "none", - origin_trial_feature_name: "PrivacySandboxAdsAPIs", - origin_trial_allows_third_party: true, - }, { // Controls whether filtering IDs can be specified for Private Aggregation // contributions. If disabled, any IDs will be ignored. name: "PrivateAggregationApiFilteringIds", - status: "experimental", + status: "stable", }, { name: "PrivateAggregationAuctionReportBuyerDebugModeConfig", @@ -3219,6 +3305,7 @@ }, { name: "RasterInducingScroll", + status: "test", }, { name: "ReadableStreamAsyncIterable", @@ -3264,6 +3351,9 @@ name: "RegionCapture", status: {"Android": "", "default": "stable"}, }, + { + name: "RelOpenerBcgDependencyHint", + }, { name: "RemotePlayback", public: true, @@ -3319,6 +3409,10 @@ // https://github.com/WICG/display-locking/blob/main/explainers/update-rendering.md name: "RenderPriorityAttribute", }, + { + name: "ReportEventTimingAtVisibilityChange", + status: "experimental", + }, { // TODO(crbug.com/1500633): Remove this flag when the new CursorAnchorInfo // mojo pipe is launched. @@ -3417,18 +3511,18 @@ { // crbug.com/324111880 name: "RubyLineBreakable", - status: "experimental", + status: "stable", }, { // crbug.com/340041662 name: "RubyLineEdgeAlignment", - status: "experimental", + status: "stable", depends_on: ["RubyLineBreakable"], }, { // crbug.com/324111880 name: "RubyShortHeuristics", - status: "test", + status: "stable", }, { // Runs a microtask checkpoint before creating custom elements in @@ -3487,21 +3581,12 @@ status: "stable", implied_by: ["AnimationWorklet", "ScrollTimelineCurrentTime"] }, - { - name: "ScrollTimelineAlwaysOnCompositor", - status: "stable", - depends_on: ["ScrollTimelineOnCompositor"], - }, { // Separate flag for crbug.com/1426506 (getCurrentTime API change) which // is expected to land after the initial launch of ScrollTimeline. name: "ScrollTimelineCurrentTime", status: "experimental" }, - { - name: "ScrollTimelineOnCompositor", - status: "stable" - }, // Implements documentElement.scrollTop/Left and bodyElement.scrollTop/Left // as per the spec, matching other Web engines. // @@ -3545,12 +3630,40 @@ status: "stable", base_feature: "none", }, + { + // Implement Selection API across shadow DOM + // See https://w3c.github.io/selection-api/ + name: "SelectionAcrossShadowDOM", + status: "experimental", + }, { // Maintain author-defined ::selection highlight colors, even if they // match the text color. name: "SelectionRespectsColors", status: "stable", }, + { + // Sets the minimum target size of , and
    . + // https://github.com/whatwg/html/issues/10310 + name: "SelectParserRelaxation", + status: "experimental", + }, + { + // If enabled, the type to search in a select element will ignore accents. + // This should land in M128, and can be cleaned up (assuming no problems) + // after M130. + // https://crbug.com/349089079 + name: "SelectTypeToSearchIgnoreAccents", + status: "stable", + }, { name: "SendBeaconThrowForBlobWithNonSimpleType", public: true, @@ -3621,9 +3734,8 @@ { name: "SharedStorageAPI", base_feature: "none", - origin_trial_feature_name: "PrivacySandboxAdsAPIs", - origin_trial_allows_third_party: true, public: true, + status: "stable", }, { name: "SharedStorageAPIM118", @@ -3649,6 +3761,11 @@ name: "ShowPickerConsumeUserActivation", status: "stable" }, + { + // crbug.com/40501131 + name: "SidewaysWritingModes", + status: "test", + }, { name: "SignatureBasedIntegrity", origin_trial_feature_name: "SignatureBasedIntegrity", @@ -3662,7 +3779,7 @@ { name: "SkipAd", depends_on: ["MediaSession"], - status: "experimental", + status: "stable", }, { // If enabled, HTMLPreloadScanner will be skipped. @@ -3724,52 +3841,6 @@ name: "SpeakerSelection", status: "experimental", }, - { - name: "SpeculationRulesDocumentRules", - base_feature: "none", - origin_trial_feature_name: "SpeculationRulesPrefetchFuture", - origin_trial_allows_third_party: true, - status: "stable", - }, - { - name: "SpeculationRulesDocumentRulesSelectorMatches", - base_feature_status: "enabled", - copied_from_base_feature_if: "overridden", - origin_trial_feature_name: "SpeculationRulesPrefetchFuture", - origin_trial_allows_third_party: true, - status: "stable", - }, - { - name: "SpeculationRulesEagerness", - base_feature_status: "enabled", - copied_from_base_feature_if: "overridden", - origin_trial_feature_name: "SpeculationRulesPrefetchFuture", - origin_trial_allows_third_party: true, - status: "stable", - implied_by: ["SpeculationRulesNoVarySearchHint"], - }, - { - name: "SpeculationRulesFetchFromHeader", - base_feature: "none", - origin_trial_feature_name: "SpeculationRulesPrefetchFuture", - origin_trial_allows_third_party: true, - status: "stable", - }, - { - name: "SpeculationRulesImplicitSource", - status: "stable", - }, - { - name: "SpeculationRulesNoVarySearchHint", - origin_trial_feature_name: "NoVarySearchPrefetch", - }, - // The "expects_no_vary_search" hint is enabled if it is enabled: - // * through an origin trial token (NoVarySearchPrefetch) or - // * by default (SpeculationRulesNoVarySearchHintShippedByDefault) - { - name: "SpeculationRulesNoVarySearchHintShippedByDefault", - status: "stable" - }, { name: "SpeculationRulesPointerDownHeuristics", base_feature_status: "enabled", @@ -3793,17 +3864,6 @@ { name: "SpeculationRulesPrefetchWithSubresources", }, - { - name: "SpeculationRulesRelativeToDocument", - base_feature: "none", - origin_trial_feature_name: "SpeculationRulesPrefetchFuture", - origin_trial_allows_third_party: true, - status: "stable", - }, - { - name: "SpellCheckerReplaceRangeUseInsertText", - status: "stable", - }, { name: "SrcsetMaxDensity", }, @@ -3818,7 +3878,15 @@ { // See https://github.com/w3c/csswg-drafts/issues/9398 name: "StandardizedBrowserZoom", - status: "test", + status: "stable", + public: true, + }, + { + name: "StandardizedBrowserZoomOptOut", + origin_trial_feature_name: "DisableStandardizedBrowserZoom", + origin_trial_type: "deprecation", + origin_trial_allows_insecure: true, + origin_trial_allows_third_party: true, }, { name: "StaticAnimationOptimization", @@ -3844,13 +3912,16 @@ status: "experimental", }, { - // Allows