From adcbd3d21399aa05040186d651a04a54b4766b3a Mon Sep 17 00:00:00 2001 From: uazo <29201891+uazo@users.noreply.github.com> Date: Thu, 9 Jan 2025 03:32:50 +0000 Subject: [PATCH] [AUTO][FILECONTROL] - version 132.0.6834.83 --- tools/under-control/src/RELEASE | 2 +- .../browser/aw_content_browser_client.cc | 94 +- .../browser/aw_field_trials.cc | 38 +- .../chrome/android/java/AndroidManifest.xml | 24 +- .../chrome_browsing_data_remover_delegate.cc | 30 +- .../chrome_browser_interface_binders.cc | 301 +- .../browser/chrome_content_browser_client.cc | 207 +- .../src/chrome/browser/prefs/browser_prefs.cc | 477 +- .../src/chrome/browser/ui/tab_helpers.cc | 64 +- .../common/extensions/api/appview_tag.idl | 3 - .../extensions/api/autofill_private.idl | 5 +- .../extensions/api/file_manager_private.idl | 3 - .../extensions/api/odfs_config_private.idl | 8 + .../extensions/api/printing_metrics.idl | 2 +- .../common/extensions/api/vpn_provider.idl | 2 +- .../chrome_content_renderer_client.cc | 39 +- .../policy/resources/templates/policies.yaml | 12 +- .../Arc/ArcGoogleLocationServicesEnabled.yaml | 5 +- .../Arc/ArcOpenLinksInBrowserByDefault.yaml | 9 +- .../Boca/.group.details.yaml | 2 + .../Boca/ClassManagementEnabled.yaml | 31 + .../CACertificateManagementAllowed.yaml | 8 +- .../CertificateManagement/CACertificates.yaml | 10 +- .../CACertificatesWithConstraints.yaml | 10 +- .../CADistrustedCertificates.yaml | 10 +- .../CAHintCertificates.yaml | 10 +- .../RequiredClientCertificateForDevice.yaml | 8 +- .../RequiredClientCertificateForUser.yaml | 8 +- ...iteCookieBehaviorEnabledForDomainList.yaml | 7 +- .../Edu/ContentTransferEnablementStatus.yaml | 4 +- .../Extensions/ExtensionInstallForcelist.yaml | 4 +- .../GenAiLensOverlaySettings.yaml | 44 + ...viceLoginScreenGeolocationAccessLevel.yaml | 1 + .../DeviceNativeClientForceAllowed.yaml | 24 + .../DeviceRestrictionSchedule.yaml | 4 +- .../Miscellaneous/DownloadRestrictions.yaml | 1 + .../EnterpriseSearchAggregatorSettings.yaml | 56 + .../IsolatedWebAppInstallForceList.yaml | 14 +- .../LacrosDataBackwardMigrationMode.yaml | 3 +- .../Miscellaneous/MutationEventsEnabled.yaml | 1 + .../Miscellaneous/NTPOutlookCardVisible.yaml | 31 + .../NTPSharepointCardVisible.yaml | 31 + .../NativeClientForceAllowed.yaml | 3 +- .../OnSecurityEventEnterpriseConnector.yaml | 3 + ...refixedVideoFullscreenApiAvailability.yaml | 15 +- .../SharedWorkerBlobURLFixEnabled.yaml | 38 + .../ThirdPartyBlockingEnabled.yaml | 3 + .../Miscellaneous/TranslatorAPIAllowed.yaml | 25 + .../Network/DeviceDockMacAddressSource.yaml | 1 - .../PasswordManagerPasskeysEnabled.yaml | 30 + .../ThirdPartyPasswordManagersAllowed.yaml | 2 +- .../PasswordManager/policy_atomic_groups.yaml | 1 + ...iceAdvancedBatteryChargeModeDayConfig.yaml | 1 - ...eviceAdvancedBatteryChargeModeEnabled.yaml | 1 - ...eviceBatteryChargeCustomStartCharging.yaml | 1 - ...DeviceBatteryChargeCustomStopCharging.yaml | 1 - .../DeviceBatteryChargeMode.yaml | 1 - .../DeviceBootOnAcEnabled.yaml | 1 - .../DevicePowerPeakShiftBatteryThreshold.yaml | 1 - .../DevicePowerPeakShiftDayConfig.yaml | 1 - .../DevicePowerPeakShiftEnabled.yaml | 1 - .../DeviceUsbPowerShareEnabled.yaml | 1 - .../LocalUserFilesMigrationDestination.yaml | 4 +- .../WilcoDtc/DeviceWilcoDtcAllowed.yaml | 1 - .../WilcoDtc/DeviceWilcoDtcConfiguration.yaml | 1 - .../browser/web_contents/web_contents_impl.cc | 838 ++- .../src/content/child/runtime_features.cc | 36 +- .../public/browser/content_browser_client.cc | 47 +- .../src/extensions/common/api/automation.idl | 9 +- .../src/extensions/common/api/cec_private.idl | 2 +- .../src/extensions/common/api/clipboard.idl | 2 +- .../src/extensions/common/api/power.idl | 2 +- .../common/api/virtual_keyboard.idl | 2 +- tools/under-control/src/gin/v8_initializer.cc | 13 +- .../src/services/network/network_context.cc | 217 +- .../variations/fieldtrial_testing_config.json | 5086 ++++++++--------- .../use_counter/metrics/web_feature.mojom | 107 +- .../core/css/parser/media_query_parser.cc | 58 +- .../core/dom/aria_relationship_attributes.idl | 2 +- .../blink/renderer/core/dom/document.idl | 9 +- .../blink/renderer/core/dom/element.idl | 16 +- .../blink/renderer/core/dom/shadow_root.idl | 3 + .../core/events/event_type_names.json5 | 3 +- .../renderer/core/exported/web_view_impl.cc | 39 +- .../core/highlight/highlight_registry.idl | 10 + .../highlights_from_point_options.idl | 7 + .../core/html/canvas/text_cluster.idl | 5 +- .../core/html/forms/html_select_element.idl | 2 +- ....idl => html_selected_content_element.idl} | 2 +- .../core/html/html_dialog_element.idl | 2 + .../renderer/core/html/html_embed_element.idl | 2 +- .../core/html/html_iframe_element.idl | 2 +- .../core/html/html_object_element.idl | 4 +- .../core/html/html_permission_element.idl | 7 + .../core/html/html_script_element.idl | 2 +- .../core/inspector/dev_tools_host.idl | 7 + .../core/inspector/inspector_overlay_host.idl | 2 +- .../origin_trials/origin_trial_context.cc | 8 +- .../renderer/core/sanitizer/sanitizer_api.idl | 64 + .../blink/renderer/core/testing/internals.idl | 9 +- .../core/testing/worker_internals.idl | 2 + .../timing/performance_navigation_timing.idl | 1 + .../timing/performance_resource_timing.idl | 2 + .../core/timing/performance_script_timing.idl | 1 - .../timing/performance_timing_confidence.idl | 17 + .../core/trustedtypes/trusted_type_policy.idl | 6 +- .../core/xmlhttprequest/xml_http_request.idl | 2 +- .../modules/ad_auction/navigator_auction.idl | 2 +- .../modules/ad_auction/protected_audience.idl | 7 +- .../ad_auction/storage_interest_group.idl | 19 + .../blink/renderer/modules/ai/ai.idl | 2 +- .../renderer/modules/ai/ai_create_monitor.idl | 14 + ...ai_assistant.idl => ai_language_model.idl} | 16 +- ...l => ai_language_model_create_options.idl} | 10 +- ...tory.idl => ai_language_model_factory.idl} | 16 +- .../modules/ai/ai_summarizer_factory.idl | 2 +- .../ai_language_detector_capabilities.idl | 2 +- .../awc/additional_windowing_controls.idl | 4 +- .../bluetooth_remote_gatt_characteristic.idl | 6 +- .../bluetooth_remote_gatt_descriptor.idl | 2 +- .../renderer/modules/cache_storage/cache.idl | 2 +- .../canvas2d/canvas_rendering_context_2d.idl | 3 +- .../offscreen_canvas_rendering_context_2d.idl | 1 + .../modules/clipboard/clipboard_item.idl | 3 +- ...uthentication_extensions_client_inputs.idl | 5 + .../identity_provider.idl | 6 +- .../identity_provider_config.idl | 8 +- .../file_system_sync_access_handle.idl | 2 +- .../modules/gamepad/gamepad_axis_event.idl | 15 - .../gamepad/gamepad_axis_event_init.idl | 11 - .../modules/gamepad/gamepad_button_event.idl | 15 - .../gamepad/gamepad_button_event_init.idl | 11 - .../renderer/modules/indexeddb/idb_record.idl | 15 + .../lock_screen/dom_window_lock_screen.idl | 13 - .../modules/lock_screen/lock_screen_data.idl | 23 - .../blink/renderer/modules/locks/lock.idl | 2 +- .../renderer/modules/locks/lock_manager.idl | 2 +- ...shared_storage_worklet_navigator_locks.idl | 14 + .../modules/mediastream/media_devices.idl | 7 + .../mediastream/media_stream_constraints.idl | 6 +- .../blink/renderer/modules/ml/ml_context.idl | 17 +- .../modules/ml/ml_context_options.idl | 8 - .../modules/ml/webnn/ml_graph_builder.idl | 9 +- .../renderer/modules/ml/webnn/ml_operand.idl | 4 +- .../ml/webnn/ml_operand_descriptor.idl | 10 +- .../renderer/modules/ml/webnn/ml_tensor.idl | 5 + .../modules/ml/webnn/ml_tensor_descriptor.idl | 7 +- .../modules/ml/webnn/ml_tensor_usage.idl | 2 + .../language_translator.idl | 4 +- .../on_device_translation/translation.idl | 2 + .../modules/payments/payment_manager.idl | 2 +- .../rtc_encoded_audio_frame.idl | 2 +- .../rtc_encoded_video_frame.idl | 2 +- .../peerconnection/rtc_stats_report.idl | 3 + .../modules/permissions/permission_status.idl | 6 - .../push_messaging/push_message_data.idl | 3 +- .../modules/quota/storage_manager.idl | 5 +- ...d_storage_run_operation_method_options.idl | 1 + .../shared_storage_worklet_global_scope.idl | 16 + .../shared_storage_worklet_navigator.idl | 9 + .../web_install/navigator_web_install.idl | 2 +- .../modules/webaudio/base_audio_context.idl | 3 +- .../modules/webcodecs/media_effect_info.idl | 11 + .../modules/webcodecs/video_frame.idl | 6 + .../webcodecs/video_frame_buffer_init.idl | 3 + .../modules/webcodecs/video_frame_init.idl | 2 + .../webcodecs/video_frame_metadata.idl | 11 + .../webgl/webgl_rendering_context_base.idl | 3 +- .../renderer/modules/webgpu/gpu_device.idl | 1 + .../webgpu/gpu_request_adapter_options.idl | 2 +- .../modules/webgpu/gpu_supported_features.idl | 3 + .../modules/webgpu/gpu_texture_descriptor.idl | 7 + .../webgpu/gpu_texture_view_descriptor.idl | 1 + .../renderer/modules/webusb/usb_device.idl | 6 +- .../modules/xr/xr_composition_layer.idl | 2 +- .../renderer/modules/xr/xr_gpu_binding.idl | 2 +- .../renderer/modules/xr/xr_gpu_sub_image.idl | 2 +- .../modules/xr/xr_projection_layer.idl | 2 +- .../renderer/modules/xr/xr_render_state.idl | 2 +- .../modules/xr/xr_render_state_init.idl | 2 +- .../renderer/modules/xr/xr_session_init.idl | 4 +- .../platform/runtime_enabled_features.json5 | 426 +- .../global-interface-listing-expected.txt | 27 +- 183 files changed, 4870 insertions(+), 4484 deletions(-) create mode 100755 tools/under-control/src/components/policy/resources/templates/policy_definitions/Boca/.group.details.yaml create mode 100755 tools/under-control/src/components/policy/resources/templates/policy_definitions/Boca/ClassManagementEnabled.yaml create mode 100755 tools/under-control/src/components/policy/resources/templates/policy_definitions/GenerativeAI/GenAiLensOverlaySettings.yaml create mode 100755 tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/DeviceNativeClientForceAllowed.yaml create mode 100755 tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/EnterpriseSearchAggregatorSettings.yaml create mode 100755 tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/NTPOutlookCardVisible.yaml create mode 100755 tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/NTPSharepointCardVisible.yaml create mode 100755 tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/SharedWorkerBlobURLFixEnabled.yaml create mode 100755 tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/TranslatorAPIAllowed.yaml create mode 100755 tools/under-control/src/components/policy/resources/templates/policy_definitions/PasswordManager/PasswordManagerPasskeysEnabled.yaml create mode 100755 tools/under-control/src/third_party/blink/renderer/core/highlight/highlights_from_point_options.idl rename tools/under-control/src/third_party/blink/renderer/core/html/forms/{html_selected_option_element.idl => html_selected_content_element.idl} (79%) create mode 100755 tools/under-control/src/third_party/blink/renderer/core/sanitizer/sanitizer_api.idl create mode 100755 tools/under-control/src/third_party/blink/renderer/core/timing/performance_timing_confidence.idl create mode 100755 tools/under-control/src/third_party/blink/renderer/modules/ad_auction/storage_interest_group.idl create mode 100755 tools/under-control/src/third_party/blink/renderer/modules/ai/ai_create_monitor.idl rename tools/under-control/src/third_party/blink/renderer/modules/ai/{ai_assistant.idl => ai_language_model.idl} (73%) rename tools/under-control/src/third_party/blink/renderer/modules/ai/{ai_assistant_create_options.idl => ai_language_model_create_options.idl} (61%) rename tools/under-control/src/third_party/blink/renderer/modules/ai/{ai_assistant_factory.idl => ai_language_model_factory.idl} (64%) delete mode 100755 tools/under-control/src/third_party/blink/renderer/modules/gamepad/gamepad_axis_event.idl delete mode 100755 tools/under-control/src/third_party/blink/renderer/modules/gamepad/gamepad_axis_event_init.idl delete mode 100755 tools/under-control/src/third_party/blink/renderer/modules/gamepad/gamepad_button_event.idl delete mode 100755 tools/under-control/src/third_party/blink/renderer/modules/gamepad/gamepad_button_event_init.idl create mode 100755 tools/under-control/src/third_party/blink/renderer/modules/indexeddb/idb_record.idl delete mode 100755 tools/under-control/src/third_party/blink/renderer/modules/lock_screen/dom_window_lock_screen.idl delete mode 100755 tools/under-control/src/third_party/blink/renderer/modules/lock_screen/lock_screen_data.idl create mode 100755 tools/under-control/src/third_party/blink/renderer/modules/locks/shared_storage_worklet_navigator_locks.idl create mode 100755 tools/under-control/src/third_party/blink/renderer/modules/shared_storage/shared_storage_worklet_navigator.idl create mode 100755 tools/under-control/src/third_party/blink/renderer/modules/webcodecs/media_effect_info.idl create mode 100755 tools/under-control/src/third_party/blink/renderer/modules/webcodecs/video_frame_metadata.idl diff --git a/tools/under-control/src/RELEASE b/tools/under-control/src/RELEASE index 89856573e..b78a3bab6 100644 --- a/tools/under-control/src/RELEASE +++ b/tools/under-control/src/RELEASE @@ -1 +1 @@ -131.0.6778.205 +132.0.6834.83 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 f8b01df49..88eb4fc1b 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 @@ -34,6 +34,7 @@ #include "android_webview/browser/network_service/aw_proxying_restricted_cookie_manager.h" #include "android_webview/browser/network_service/aw_proxying_url_loader_factory.h" #include "android_webview/browser/network_service/aw_url_loader_throttle.h" +#include "android_webview/browser/prefetch/aw_prefetch_service_delegate.h" #include "android_webview/browser/safe_browsing/aw_safe_browsing_navigation_throttle.h" #include "android_webview/browser/safe_browsing/aw_url_checker_delegate_impl.h" #include "android_webview/browser/supervised_user/aw_supervised_user_throttle.h" @@ -94,6 +95,7 @@ #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/prefetch_service_delegate.h" #include "content/public/browser/render_frame_host.h" #include "content/public/browser/render_process_host.h" #include "content/public/browser/render_view_host.h" @@ -587,21 +589,15 @@ void AwContentBrowserClient::GetAdditionalMappedFilesForChildProcess( content::PosixFileDescriptorInfo* mappings) { base::MemoryMappedFile::Region region; int fd = ui::GetMainAndroidPackFd(®ion); - if (base::FeatureList::IsEnabled(features::kWebViewCheckPakFileDescriptors)) { - CHECK_GE(fd, 0); - } + CHECK_GE(fd, 0); mappings->ShareWithRegion(kAndroidWebViewMainPakDescriptor, fd, region); fd = ui::GetCommonResourcesPackFd(®ion); - if (base::FeatureList::IsEnabled(features::kWebViewCheckPakFileDescriptors)) { - CHECK_GE(fd, 0); - } + CHECK_GE(fd, 0); mappings->ShareWithRegion(kAndroidWebView100PercentPakDescriptor, fd, region); fd = ui::GetLocalePackFd(®ion); - if (base::FeatureList::IsEnabled(features::kWebViewCheckPakFileDescriptors)) { - CHECK_GE(fd, 0); - } + CHECK_GE(fd, 0); mappings->ShareWithRegion(kAndroidWebViewLocalePakDescriptor, fd, region); int crash_signal_fd = @@ -618,8 +614,7 @@ void AwContentBrowserClient::OverrideWebkitPrefs( if (aw_settings) { aw_settings->PopulateWebPreferences(web_prefs); } - web_prefs->modal_context_menu = - !base::FeatureList::IsEnabled(features::kWebViewImageDrag); + web_prefs->modal_context_menu = false; } std::vector> @@ -680,6 +675,14 @@ AwContentBrowserClient::CreateThrottlesForNavigation( return throttles; } +std::unique_ptr +AwContentBrowserClient::CreatePrefetchServiceDelegate( + content::BrowserContext* browser_context) { + AwBrowserContext* aw_browser_context = + static_cast(browser_context); + return std::make_unique(aw_browser_context); +} + std::unique_ptr AwContentBrowserClient::CreateDevToolsManagerDelegate() { return std::make_unique(); @@ -913,6 +916,8 @@ bool AwContentBrowserClient::HandleExternalProtocol( content::RenderFrameHost* initiator_document, const net::IsolationInfo& isolation_info, mojo::PendingRemote* out_factory) { + DCHECK_CURRENTLY_ON(BrowserThread::UI); + // Sandbox flags // ============= // @@ -947,39 +952,28 @@ bool AwContentBrowserClient::HandleExternalProtocol( // 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( - std::nullopt /* cookie_manager */, nullptr /* cookie_access_policy */, - isolation_info, web_contents_key, 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 { - content::GetIOThreadTaskRunner({})->PostTask( - FROM_HERE, - base::BindOnce( - [](mojo::PendingReceiver receiver, - std::optional web_contents_key, - content::FrameTreeNodeId frame_tree_node_id, - scoped_refptr - browser_context_handle, - const net::IsolationInfo& isolation_info) { - // Manages its own lifetime. - new android_webview::AwProxyingURLLoaderFactory( - std::nullopt /* cookie_manager */, - nullptr /* cookie_access_policy */, isolation_info, - web_contents_key, 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 */); - }, - std::move(receiver), web_contents_key, frame_tree_node_id, - std::move(browser_context_handle), isolation_info)); - } + content::GetIOThreadTaskRunner({})->PostTask( + FROM_HERE, + base::BindOnce( + [](mojo::PendingReceiver receiver, + std::optional web_contents_key, + content::FrameTreeNodeId frame_tree_node_id, + scoped_refptr + browser_context_handle, + const net::IsolationInfo& isolation_info) { + // Manages its own lifetime. + new android_webview::AwProxyingURLLoaderFactory( + std::nullopt /* cookie_manager */, + nullptr /* cookie_access_policy */, isolation_info, + web_contents_key, 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 */); + }, + std::move(receiver), web_contents_key, frame_tree_node_id, + std::move(browser_context_handle), isolation_info)); return false; } @@ -1253,17 +1247,7 @@ blink::UserAgentMetadata AwContentBrowserClient::GetUserAgentMetadata() { content::ContentBrowserClient::WideColorGamutHeuristic AwContentBrowserClient::GetWideColorGamutHeuristic() { - if (base::FeatureList::IsEnabled(features::kWebViewWideColorGamutSupport)) { - return WideColorGamutHeuristic::kUseWindow; - } - - if (display::HasForceDisplayColorProfile() && - display::GetForcedDisplayColorProfile() == - gfx::ColorSpace::CreateDisplayP3D65()) { - return WideColorGamutHeuristic::kUseWindow; - } - - return WideColorGamutHeuristic::kNone; + return WideColorGamutHeuristic::kUseWindow; } void AwContentBrowserClient::LogWebFeatureForCurrentPage( 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 736418070..4ab726d30 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 @@ -4,7 +4,9 @@ #include "android_webview/browser/aw_field_trials.h" +#include "android_webview/common/aw_features.h" #include "android_webview/common/aw_switches.h" +#include "base/allocator/partition_alloc_features.h" #include "base/base_paths_android.h" #include "base/check.h" #include "base/feature_list.h" @@ -263,21 +265,30 @@ void AwFieldTrials::RegisterFeatureOverrides(base::FeatureList* feature_list) { aw_feature_overrides.EnableFeature(network::features::kMaskedDomainList); } + // Feature parameters can only be set via a field trial. + // Note: Performing a field trial here means we cannot include + // |kDIPSTtl| in the testing config json. + { + const char kDipsWebViewExperiment[] = "DipsWebViewExperiment"; + const char kDipsWebViewGroup[] = "DipsWebViewGroup"; + base::FieldTrial* dips_field_trial = base::FieldTrialList::CreateFieldTrial( + kDipsWebViewExperiment, kDipsWebViewGroup); + CHECK(dips_field_trial) << "Unexpected name conflict."; + base::FieldTrialParams params; + const std::string ttl_time_delta_30_days = "30d"; + params.emplace(features::kDIPSInteractionTtl.name, ttl_time_delta_30_days); + base::AssociateFieldTrialParams(kDipsWebViewExperiment, kDipsWebViewGroup, + params); + aw_feature_overrides.OverrideFeatureWithFieldTrial( + features::kDIPSTtl, + base::FeatureList::OverrideState::OVERRIDE_ENABLE_FEATURE, + dips_field_trial); + } + // Delete Incidental Party State (DIPS) feature is not yet supported on // 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); - aw_feature_overrides.DisableFeature( - safe_browsing::kHashPrefixRealTimeLookups); - - // WebView does not currently support the Permissions API (crbug.com/490120) - aw_feature_overrides.DisableFeature(::features::kWebPermissionsApi); - // TODO(crbug.com/41492947): See crrev.com/c/5744034 for details, but I was // unable to add this feature to fieldtrial_testing_config and pass all tests. aw_feature_overrides.EnableFeature(blink::features::kElementGetInnerHTML); @@ -293,4 +304,9 @@ void AwFieldTrials::RegisterFeatureOverrides(base::FeatureList* feature_list) { // TODO(crbug.com/336852432): Enable this feature for WebView. aw_feature_overrides.DisableFeature( blink::features::kNavigationPredictorNewViewportFeatures); + + // This feature is global for the process and thus should not be enabled by + // WebView. + aw_feature_overrides.DisableFeature( + base::features::kPartitionAllocMemoryTagging); } diff --git a/tools/under-control/src/chrome/android/java/AndroidManifest.xml b/tools/under-control/src/chrome/android/java/AndroidManifest.xml index ab689d478..9bb1c9572 100755 --- a/tools/under-control/src/chrome/android/java/AndroidManifest.xml +++ b/tools/under-control/src/chrome/android/java/AndroidManifest.xml @@ -850,21 +850,6 @@ by a child template that "extends" this file. - - - - @@ -1101,6 +1086,13 @@ by a child template that "extends" this file. android:documentLaunchMode="always" android:noHistory="true"/> + + + + @@ -1183,7 +1175,7 @@ by a child template that "extends" this file. android:screenOrientation="landscape" android:label="WebXR" android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" - tools:ignore="NonResizeableActivity"> + tools:ignore="NonResizeableActivity,DiscouragedApi"> diff --git a/tools/under-control/src/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc b/tools/under-control/src/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc index bba15cbd9..7961ea057 100755 --- a/tools/under-control/src/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc +++ b/tools/under-control/src/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc @@ -42,6 +42,7 @@ #include "chrome/browser/content_settings/host_content_settings_map_factory.h" #include "chrome/browser/crash_upload_list/crash_upload_list.h" #include "chrome/browser/custom_handlers/protocol_handler_registry_factory.h" +#include "chrome/browser/dips/chrome_dips_delegate.h" #include "chrome/browser/dips/dips_service_impl.h" #include "chrome/browser/dips/dips_utils.h" #include "chrome/browser/domain_reliability/service_factory.h" @@ -113,6 +114,7 @@ #include "components/history/core/common/pref_names.h" #include "components/keyed_service/core/service_access_type.h" #include "components/language/core/browser/url_language_histogram.h" +#include "components/lens/lens_features.h" #include "components/media_device_salt/media_device_salt_service.h" #include "components/nacl/browser/nacl_browser.h" #include "components/nacl/browser/pnacl_host.h" @@ -150,6 +152,7 @@ #include "content/public/browser/browser_task_traits.h" #include "content/public/browser/browser_thread.h" #include "content/public/browser/browsing_data_filter_builder.h" +#include "content/public/browser/dips_delegate.h" #include "content/public/browser/host_zoom_map.h" #include "content/public/browser/origin_trials_controller_delegate.h" #include "content/public/browser/prefetch_service_delegate.h" @@ -186,7 +189,7 @@ #if !BUILDFLAG(IS_ANDROID) #include "chrome/browser/user_annotations/user_annotations_service_factory.h" -#include "chrome/browser/user_education/browser_feature_promo_storage_service.h" +#include "chrome/browser/user_education/browser_user_education_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" @@ -278,7 +281,8 @@ ChromeBrowsingDataRemoverDelegate::ChromeBrowsingDataRemoverDelegate( webapp_registry_(std::make_unique()) #endif , - credential_store_(MakeCredentialStore()) { + credential_store_(MakeCredentialStore()), + dips_delegate_(ChromeDipsDelegate::Create()) { domain_reliability_clearer_ = base::BindRepeating( [](BrowserContext* browser_context, content::BrowsingDataFilterBuilder* filter_builder, @@ -542,6 +546,17 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData( if (optimization_guide_keyed_service) optimization_guide_keyed_service->ClearData(); +#if !BUILDFLAG(IS_ANDROID) + // Remove localStorage data from Lens Overlay UI whenever any history is + // deleted. + if (lens::features::IsLensOverlayTranslateLanguagesFetchEnabled()) { + profile_->GetDefaultStoragePartition()->ClearDataForOrigin( + content::StoragePartition::REMOVE_DATA_MASK_LOCAL_STORAGE, + /*quota_storage_remove_mask=*/0, + GURL(chrome::kChromeUILensOverlayUntrustedURL), base::DoNothing()); + } +#endif + content::PrefetchServiceDelegate::ClearData(profile_); #if BUILDFLAG(IS_ANDROID) @@ -611,7 +626,7 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData( // 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_); + BrowserUserEducationStorageService::ClearUsageHistory(profile_); #endif // Cleared for DATA_TYPE_HISTORY, DATA_TYPE_COOKIES and DATA_TYPE_PASSWORDS. @@ -896,9 +911,14 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData( DIPSEventRemovalType dips_mask = DIPSEventRemovalType::kNone; if ((remove_mask & content::BrowsingDataRemover::DATA_TYPE_COOKIES) && !filter_builder->PartitionedCookiesOnly()) { - dips_mask |= DIPSEventRemovalType::kStorage; + // If there's no delegate, delete everything whenever the user is deleting + // cookies. + dips_mask |= dips_delegate_ ? DIPSEventRemovalType::kStorage + : DIPSEventRemovalType::kAll; } - if (remove_mask & constants::DATA_TYPE_HISTORY) { + // If there's a delegate, ask it whether to delete DIPS history. + if (dips_delegate_ && + dips_delegate_->ShouldDeleteInteractionRecords(remove_mask)) { dips_mask |= DIPSEventRemovalType::kHistory; } 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 b3c61c575..bb23f913c 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 @@ -17,13 +17,10 @@ #include "chrome/browser/ash/drive/file_system_util.h" #include "chrome/browser/browser_process.h" #include "chrome/browser/buildflags.h" -#include "chrome/browser/cart/commerce_hint_service.h" -#include "chrome/browser/companion/core/features.h" #include "chrome/browser/dom_distiller/dom_distiller_service_factory.h" #include "chrome/browser/history_clusters/history_clusters_service_factory.h" #include "chrome/browser/media/media_engagement_score_details.mojom.h" #include "chrome/browser/navigation_predictor/navigation_predictor.h" -#include "chrome/browser/on_device_translation/translation_manager_impl.h" #include "chrome/browser/optimization_guide/optimization_guide_internals_ui.h" #include "chrome/browser/password_manager/chrome_password_manager_client.h" #include "chrome/browser/predictors/lcp_critical_path_predictor/lcp_critical_path_predictor_host.h" @@ -37,7 +34,8 @@ #include "chrome/browser/translate/translate_frame_binder.h" #include "chrome/browser/ui/search_engines/search_engine_tab_helper.h" #include "chrome/browser/ui/ui_features.h" -#include "chrome/browser/ui/views/side_panel/companion/companion_utils.h" +#include "chrome/browser/ui/webui/bluetooth_internals/bluetooth_internals.mojom.h" +#include "chrome/browser/ui/webui/bluetooth_internals/bluetooth_internals_ui.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" @@ -59,7 +57,6 @@ #include "chrome/common/pref_names.h" #include "chrome/common/webui_url_constants.h" #include "chrome/services/speech/buildflags/buildflags.h" -#include "chromeos/ash/components/boca/boca_role_util.h" #include "components/browsing_topics/mojom/browsing_topics_internals.mojom.h" #include "components/commerce/content/browser/commerce_internals_ui.h" #include "components/commerce/core/internals/mojom/commerce_internals.mojom.h" @@ -89,6 +86,7 @@ #include "components/security_state/content/content_utils.h" #include "components/security_state/content/security_state_tab_helper.h" #include "components/security_state/core/security_state.h" +#include "components/services/on_device_translation/buildflags/buildflags.h" #include "components/signin/public/identity_manager/identity_manager.h" #include "components/site_engagement/core/mojom/site_engagement_details.mojom.h" #include "components/translate/content/common/translate.mojom.h" @@ -110,7 +108,6 @@ #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" #include "third_party/blink/public/mojom/payments/payment_credential.mojom.h" #include "third_party/blink/public/mojom/payments/payment_request.mojom.h" #include "third_party/blink/public/mojom/prerender/prerender.mojom.h" @@ -154,7 +151,7 @@ #else #include "chrome/browser/badging/badge_manager.h" #include "chrome/browser/cart/chrome_cart.mojom.h" -#include "chrome/browser/new_tab_page/modules/file_suggestion/file_suggestion.mojom.h" +#include "chrome/browser/new_tab_page/modules/file_suggestion/drive_suggestion.mojom.h" #include "chrome/browser/new_tab_page/modules/v2/calendar/google_calendar.mojom.h" #include "chrome/browser/new_tab_page/modules/v2/calendar/outlook_calendar.mojom.h" #include "chrome/browser/new_tab_page/modules/v2/most_relevant_tab_resumption/most_relevant_tab_resumption.mojom.h" @@ -194,7 +191,6 @@ #include "chrome/browser/ui/webui/search_engine_choice/search_engine_choice_ui.h" #include "chrome/browser/ui/webui/settings/settings_ui.h" #include "chrome/browser/ui/webui/side_panel/bookmarks/bookmarks_side_panel_ui.h" -#include "chrome/browser/ui/webui/side_panel/companion/companion_side_panel_untrusted_ui.h" #include "chrome/browser/ui/webui/side_panel/customize_chrome/customize_chrome.mojom.h" #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" @@ -207,11 +203,12 @@ #include "chrome/browser/ui/webui/webui_gallery/webui_gallery_ui.h" #include "chrome/browser/web_applications/web_install_service_impl.h" #include "chrome/common/webui_url_constants.h" +#include "components/commerce/core/mojom/product_specifications.mojom.h" +#include "components/commerce/core/mojom/shopping_service.mojom.h" // nogncheck crbug.com/1125897 #include "components/optimization_guide/core/optimization_guide_features.h" #include "components/page_image_service/mojom/page_image_service.mojom.h" #include "components/search/ntp_features.h" #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/help_bubble/help_bubble.mojom.h" #include "ui/webui/resources/cr_components/history_clusters/history_clusters.mojom.h" @@ -417,20 +414,6 @@ #include "ui/webui/resources/cr_components/app_management/app_management.mojom.h" #endif // BUILDFLAG(IS_CHROMEOS_ASH) -#if BUILDFLAG(IS_CHROMEOS_LACROS) -#include "chrome/browser/apps/digital_goods/digital_goods_factory_stub.h" -#include "chrome/browser/apps/digital_goods/digital_goods_lacros.h" -#include "chrome/browser/chromeos/cros_apps/api/cros_apps_api_frame_context.h" -#include "chrome/browser/chromeos/cros_apps/api/cros_apps_api_registry.h" -#include "chrome/browser/lacros/cros_apps/api/diagnostics/cros_diagnostics_impl.h" -#include "chromeos/constants/chromeos_features.h" -#include "chromeos/lacros/lacros_service.h" -#include "third_party/blink/public/mojom/chromeos/diagnostics/cros_diagnostics.mojom.h" -#else -#include "chrome/browser/ui/webui/bluetooth_internals/bluetooth_internals.mojom.h" // nogncheck -#include "chrome/browser/ui/webui/bluetooth_internals/bluetooth_internals_ui.h" // nogncheck -#endif // BUILDFLAG(IS_CHROMEOS_LACROS) - #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || \ BUILDFLAG(IS_ANDROID) #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) @@ -455,10 +438,6 @@ #include "chrome/browser/speech/speech_recognition_service.h" #include "media/mojo/mojom/renderer_extensions.mojom.h" #include "media/mojo/mojom/speech_recognition.mojom.h" // nogncheck -#if BUILDFLAG(IS_CHROMEOS_LACROS) -#include "chrome/browser/accessibility/live_caption/live_caption_surface.h" -#include "chromeos/crosapi/mojom/speech_recognition.mojom.h" -#endif // BUILDFLAG(IS_CHROMEOS_LACROS) #endif // BUILDFLAG(ENABLE_SPEECH_SERVICE) #if BUILDFLAG(IS_WIN) @@ -494,8 +473,8 @@ #endif #if BUILDFLAG(IS_CHROMEOS) -#include "chrome/browser/ui/webui/dlp_internals/dlp_internals.mojom.h" -#include "chrome/browser/ui/webui/dlp_internals/dlp_internals_ui.h" +#include "chrome/browser/ui/webui/ash/dlp_internals/dlp_internals.mojom.h" +#include "chrome/browser/ui/webui/ash/dlp_internals/dlp_internals_ui.h" #endif #if BUILDFLAG(CHROME_ROOT_STORE_CERT_MANAGEMENT_UI) @@ -509,6 +488,11 @@ #include "components/signin/public/base/signin_switches.h" #endif // BUILDFLAG(ENABLE_DICE_SUPPORT) +#if BUILDFLAG(ENABLE_ON_DEVICE_TRANSLATION) +#include "chrome/browser/on_device_translation/translation_manager_impl.h" +#include "third_party/blink/public/mojom/on_device_translation/translation_manager.mojom.h" +#endif // BUILDFLAG(ENABLE_ON_DEVICE_TRANSLATION) + namespace chrome::internal { using content::RegisterWebUIControllerInterfaceBinder; @@ -545,68 +529,6 @@ void BindImageAnnotator( ->BindImageAnnotator(std::move(receiver)); } -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, 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."); - return; - } - -// Check if features require CommerceHint are enabled. -#if !BUILDFLAG(IS_ANDROID) - if (!IsCartModuleEnabled()) { - return; - } -#else - if (!base::FeatureList::IsEnabled(commerce::kCommerceHintAndroid)) { - return; - } -#endif - -// On Android, commerce hint observer is enabled for all users with the feature -// enabled since the observer is only used for collecting metrics for now, and -// we want to maximize the user population exposed; on Desktop, ChromeCart is -// not available for non-signin single-profile users and therefore neither does -// commerce hint observer. -#if !BUILDFLAG(IS_ANDROID) - Profile* profile = Profile::FromBrowserContext( - frame_host->GetProcess()->GetBrowserContext()); - auto* identity_manager = IdentityManagerFactory::GetForProfile(profile); - ProfileManager* profile_manager = g_browser_process->profile_manager(); - if (!identity_manager || !profile_manager) { - return; - } - if (!identity_manager->HasPrimaryAccount(signin::ConsentLevel::kSignin) && - profile_manager->GetNumberOfProfiles() <= 1) { - return; - } -#endif - auto* web_contents = content::WebContents::FromRenderFrameHost(frame_host); - if (!web_contents) { - return; - } - content::BrowserContext* browser_context = web_contents->GetBrowserContext(); - if (!browser_context) { - return; - } - if (browser_context->IsOffTheRecord()) { - return; - } - - cart::CommerceHintService::CreateForWebContents(web_contents); - cart::CommerceHintService* service = - cart::CommerceHintService::FromWebContents(web_contents); - if (!service) { - return; - } - service->BindCommerceHintObserver(frame_host, std::move(receiver)); -} - void BindDistillabilityService( content::RenderFrameHost* const frame_host, mojo::PendingReceiver @@ -653,9 +575,9 @@ void BindDistillerJavaScriptService( std::move(receiver)); } -void BindPrerenderCanceler( +void BindNoStatePrefetchCanceler( content::RenderFrameHost* frame_host, - mojo::PendingReceiver receiver) { + mojo::PendingReceiver receiver) { auto* web_contents = content::WebContents::FromRenderFrameHost(frame_host); if (!web_contents) { return; @@ -667,7 +589,8 @@ void BindPrerenderCanceler( if (!no_state_prefetch_contents) { return; } - no_state_prefetch_contents->AddPrerenderCancelerReceiver(std::move(receiver)); + no_state_prefetch_contents->AddNoStatePrefetchCancelerReceiver( + std::move(receiver)); } void BindNoStatePrefetchProcessor( @@ -738,15 +661,7 @@ void BindSpeechRecognitionContextHandler( return; } -#if BUILDFLAG(IS_CHROMEOS_LACROS) - // On LaCrOS, forward to Ash. - auto* service = chromeos::LacrosService::Get(); - if (service && service->IsAvailable()) { - service->GetRemote() - ->BindSpeechRecognitionContext(std::move(receiver)); - } -#else - // On other platforms (Ash, desktop), bind via the appropriate factory. + // Bind via the appropriate factory. Profile* profile = Profile::FromBrowserContext( frame_host->GetProcess()->GetBrowserContext()); #if BUILDFLAG(ENABLE_BROWSER_SPEECH_SERVICE) @@ -757,7 +672,6 @@ void BindSpeechRecognitionContextHandler( #error "No speech recognition service factory on this platform." #endif factory->BindSpeechRecognitionContext(std::move(receiver)); -#endif // BUILDFLAG(IS_CHROMEOS_LACROS) } void BindSpeechRecognitionClientBrowserInterfaceHandler( @@ -765,20 +679,11 @@ void BindSpeechRecognitionClientBrowserInterfaceHandler( mojo::PendingReceiver receiver) { if (captions::IsLiveCaptionFeatureSupported()) { -#if BUILDFLAG(IS_CHROMEOS_LACROS) - // On LaCrOS, forward to Ash. - auto* service = chromeos::LacrosService::Get(); - if (service && service->IsAvailable()) { - service->GetRemote() - ->BindSpeechRecognitionClientBrowserInterface(std::move(receiver)); - } -#else - // On other platforms (Ash, desktop), bind in this process. + // Bind in this process. Profile* profile = Profile::FromBrowserContext( frame_host->GetProcess()->GetBrowserContext()); SpeechRecognitionClientBrowserInterfaceFactory::GetForProfile(profile) ->BindReceiver(std::move(receiver)); -#endif // BUILDFLAG(IS_CHROMEOS_LACROS) } } @@ -786,40 +691,6 @@ void BindSpeechRecognitionRecognizerClientHandler( content::RenderFrameHost* frame_host, mojo::PendingReceiver client_receiver) { -#if BUILDFLAG(IS_CHROMEOS_LACROS) - // On LaCrOS, forward to Ash. - - // Hold a client-browser interface just long enough to bootstrap a remote - // recognizer client. - mojo::Remote - interface_remote; - auto* service = chromeos::LacrosService::Get(); - if (!service || !service->IsAvailable()) { - return; - } - service->GetRemote() - ->BindSpeechRecognitionClientBrowserInterface( - interface_remote.BindNewPipeAndPassReceiver()); - - // Grab the per-web-contents logic on our end to drive the remote client. - auto* surface = captions::LiveCaptionSurface::GetOrCreateForWebContents( - content::WebContents::FromRenderFrameHost(frame_host)); - mojo::PendingRemote surface_remote; - mojo::PendingReceiver - surface_client_receiver; - surface->BindToSurfaceClient( - surface_remote.InitWithNewPipeAndPassReceiver(), - surface_client_receiver.InitWithNewPipeAndPassRemote()); - - // Populate static info to send to the client. - auto metadata = media::mojom::SpeechRecognitionSurfaceMetadata::New(); - metadata->session_id = surface->session_id(); - - // Bootstrap the recognizer client. - interface_remote->BindRecognizerToRemoteClient( - std::move(client_receiver), std::move(surface_client_receiver), - std::move(surface_remote), std::move(metadata)); -#else Profile* profile = Profile::FromBrowserContext( frame_host->GetProcess()->GetBrowserContext()); PrefService* profile_prefs = profile->GetPrefs(); @@ -828,7 +699,6 @@ void BindSpeechRecognitionRecognizerClientHandler( captions::LiveCaptionSpeechRecognitionHost::Create( frame_host, std::move(client_receiver)); } -#endif } #if BUILDFLAG(IS_WIN) @@ -886,69 +756,12 @@ void BindScreen2xMainContentExtractor( } #endif -#if BUILDFLAG(IS_CHROMEOS_LACROS) -// A helper class to register ChromeOS Apps API binders. This includes the logic -// that checks that the feature is allowed on Profile before registering a -// binder, and wraps the binder with per-frame feature enablement checks before -// binding the Mojo pipe. -class CrosAppsApiFrameBinderMap { - STACK_ALLOCATED(); - - public: - CrosAppsApiFrameBinderMap( - content::RenderFrameHost* rfh, - mojo::BinderMapWithContext& map) - : api_registry_(CrosAppsApiRegistry::GetInstance( - Profile::FromBrowserContext(rfh->GetBrowserContext()))), - map_(map) {} - ~CrosAppsApiFrameBinderMap() = default; - - // If `api_feature` is enabled (e.g. base::Feature is enabled), and it can be - // enabled on the profile, registers a binder that performs context dependent - // checks (e.g. whether the frame's last committed URL is in the allowlist) - // before calling `binder_func`. - template - void MaybeAdd() { - if (!api_registry_->CanEnableApi(api_feature)) { - return; - } - - map_->template Add( - base::BindRepeating([](content::RenderFrameHost* rfh, - mojo::PendingReceiver receiver) { - auto* profile = Profile::FromBrowserContext(rfh->GetBrowserContext()); - const auto& api_registry = CrosAppsApiRegistry::GetInstance(profile); - - if (!api_registry.IsApiEnabledForFrame( - api_feature, CrosAppsApiFrameContext(*rfh))) { - mojo::ReportBadMessage(base::StringPrintf( - "The requesting context isn't allowed to access interface %s " - "because it isn't allowed to access the corresponding API: %s", - Interface::Name_, base::ToString(api_feature).c_str())); - return; - } - - binder_func(rfh, std::move(receiver)); - })); - } - - private: - const raw_ref api_registry_; - raw_ref> map_; -}; -#endif - void PopulateChromeFrameBinders( mojo::BinderMapWithContext* map, content::RenderFrameHost* render_frame_host) { map->Add( base::BindRepeating(&BindImageAnnotator)); - map->Add( - base::BindRepeating(&BindCommerceHintObserver)); - map->Add( base::BindRepeating(&NavigationPredictor::Create)); @@ -961,8 +774,8 @@ void PopulateChromeFrameBinders( map->Add( base::BindRepeating(&BindDistillerJavaScriptService)); - map->Add( - base::BindRepeating(&BindPrerenderCanceler)); + map->Add( + base::BindRepeating(&BindNoStatePrefetchCanceler)); map->Add( base::BindRepeating(&BindNoStatePrefetchProcessor)); @@ -1027,24 +840,6 @@ void PopulateChromeFrameBinders( &apps::DigitalGoodsFactoryImpl::BindDigitalGoodsFactory)); #endif -#if BUILDFLAG(IS_CHROMEOS_LACROS) - if (web_app::IsWebAppsCrosapiEnabled()) { - map->Add( - base::BindRepeating(&apps::DigitalGoodsFactoryLacros::Bind)); - } else { - map->Add( - base::BindRepeating(&apps::DigitalGoodsFactoryStub::Bind)); - } - - if (chromeos::features::IsBlinkExtensionEnabled()) { - // Add frame binders for ChromeOS Apps APIs here using `binder_map_wrapper`. - CrosAppsApiFrameBinderMap binder_map_wrapper(render_frame_host, *map); - binder_map_wrapper - .MaybeAdd(); - } -#endif - #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) if (base::FeatureList::IsEnabled(features::kWebShare)) { map->Add( @@ -1088,10 +883,8 @@ void PopulateChromeFrameBinders( base::BindRepeating(&web_app::SubAppsServiceImpl::CreateIfAllowed)); } - if (features::IsPdfOcrEnabled()) { - map->Add( - base::BindRepeating(&BindScreenAIAnnotator)); - } + map->Add( + base::BindRepeating(&BindScreenAIAnnotator)); if (features::IsReadAnythingWithScreen2xEnabled()) { map->Add( @@ -1109,10 +902,12 @@ void PopulateChromeFrameBinders( base::BindRepeating(&printing::CreateWebPrintingServiceForFrame)); #endif +#if BUILDFLAG(ENABLE_ON_DEVICE_TRANSLATION) if (base::FeatureList::IsEnabled(blink::features::kEnableTranslationAPI)) { - map->Add( - base::BindRepeating(&TranslationManagerImpl::Create)); + map->Add(base::BindRepeating( + &on_device_translation::TranslationManagerImpl::Create)); } +#endif #if BUILDFLAG(IS_ANDROID) if (base::FeatureList::IsEnabled(blink::features::kPaymentLinkDetection)) { @@ -1125,10 +920,8 @@ void PopulateChromeFrameBinders( void PopulateChromeWebUIFrameBinders( mojo::BinderMapWithContext* map, content::RenderFrameHost* render_frame_host) { -#if !BUILDFLAG(IS_CHROMEOS_LACROS) RegisterWebUIControllerInterfaceBinder<::mojom::BluetoothInternalsHandler, BluetoothInternalsUI>(map); -#endif RegisterWebUIControllerInterfaceBinder< media::mojom::MediaEngagementScoreDetailsProvider, MediaEngagementUI>( @@ -1252,19 +1045,13 @@ void PopulateChromeWebUIFrameBinders( render_frame_host->GetProcess()->GetBrowserContext()); if (history_clusters_service && history_clusters_service->is_journeys_feature_flag_enabled()) { - if (base::FeatureList::IsEnabled(history_clusters::kSidePanelJourneys)) { - RegisterWebUIControllerInterfaceBinder< - history_clusters::mojom::PageHandler, HistoryUI, - HistoryClustersSidePanelUI>(map); - } else { - RegisterWebUIControllerInterfaceBinder< - history_clusters::mojom::PageHandler, HistoryUI>(map); - } + RegisterWebUIControllerInterfaceBinder(map); } if (history_embeddings::IsHistoryEmbeddingsEnabled()) { if (history_clusters_service && - history_clusters_service->is_journeys_feature_flag_enabled() && - base::FeatureList::IsEnabled(history_clusters::kSidePanelJourneys)) { + history_clusters_service->is_journeys_feature_flag_enabled()) { RegisterWebUIControllerInterfaceBinder< history_embeddings::mojom::PageHandler, HistoryUI, HistoryClustersSidePanelUI>(map); @@ -1334,7 +1121,7 @@ void PopulateChromeWebUIFrameBinders( if (IsDriveModuleEnabled()) { RegisterWebUIControllerInterfaceBinder< - file_suggestion::mojom::FileSuggestionHandler, NewTabPageUI>(map); + file_suggestion::mojom::DriveSuggestionHandler, NewTabPageUI>(map); } if (base::FeatureList::IsEnabled( @@ -1373,6 +1160,11 @@ void PopulateChromeWebUIFrameBinders( BookmarksSidePanelUI, commerce::ProductSpecificationsUI, ShoppingInsightsSidePanelUI, HistoryUI>(map); + RegisterWebUIControllerInterfaceBinder< + commerce::product_specifications::mojom:: + ProductSpecificationsHandlerFactory, + commerce::ProductSpecificationsUI, HistoryUI>(map); + RegisterWebUIControllerInterfaceBinder< side_panel::mojom::CustomizeChromePageHandlerFactory, CustomizeChromeUI>( map); @@ -1735,6 +1527,9 @@ void PopulateChromeWebUIFrameBinders( ash::firmware_update::mojom::UpdateProvider, ash::FirmwareUpdateAppUI>( map); + RegisterWebUIControllerInterfaceBinder< + ash::firmware_update::mojom::SystemUtils, ash::FirmwareUpdateAppUI>(map); + if (ash::features::IsDriveFsMirroringEnabled()) { RegisterWebUIControllerInterfaceBinder< ash::manage_mirrorsync::mojom::PageHandlerFactory, @@ -1953,11 +1748,9 @@ void PopulateChromeWebUIFrameInterfaceBrokers( // --- Section 2: chrome-untrusted:// WebUIs: #if BUILDFLAG(IS_CHROMEOS_ASH) - if (ash::boca_util::IsEnabled()) { - registry.ForWebUI() - .Add() - .Add(); - } + registry.ForWebUI() + .Add() + .Add(); if (chromeos::features::IsOrcaEnabled() || ash::features::IsLobsterEnabled()) { @@ -1981,7 +1774,7 @@ void PopulateChromeWebUIFrameInterfaceBrokers( registry.ForWebUI() .Add() - .Add(); + .Add(); registry.ForWebUI() .Add(); @@ -2001,6 +1794,7 @@ void PopulateChromeWebUIFrameInterfaceBrokers( if (lens::features::IsLensOverlayEnabled()) { registry.ForWebUI() .Add() + .Add() .Add() .Add() .Add(); @@ -2008,6 +1802,7 @@ void PopulateChromeWebUIFrameInterfaceBrokers( if (lens::features::IsLensOverlayEnabled()) { registry.ForWebUI() .Add() + .Add() .Add() .Add() .Add(); @@ -2018,10 +1813,6 @@ void PopulateChromeWebUIFrameInterfaceBrokers( .Add() .Add(); } - if (companion::IsCompanionFeatureEnabled()) { - registry.ForWebUI() - .Add(); - } registry.ForWebUI() .Add(); if (base::FeatureList::IsEnabled(features::kHaTSWebUI)) { 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 bfbdf8fcc..25b5c325f 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 @@ -108,7 +108,6 @@ #include "chrome/browser/net/profile_network_context_service.h" #include "chrome/browser/net/profile_network_context_service_factory.h" #include "chrome/browser/net/system_network_context_manager.h" -#include "chrome/browser/on_device_translation/service_controller.h" #include "chrome/browser/optimization_guide/chrome_browser_main_extra_parts_optimization_guide.h" #include "chrome/browser/payments/payment_request_display_manager_factory.h" #include "chrome/browser/performance_manager/public/chrome_browser_main_extra_parts_performance_manager.h" @@ -264,7 +263,7 @@ #include "components/lens/buildflags.h" #include "components/live_caption/caption_util.h" #include "components/media_device_salt/media_device_salt_service.h" -#include "components/media_router/browser/presentation/presentation_service_delegate_impl.h" +#include "components/media_router/browser/presentation/controller_presentation_service_delegate_impl.h" #include "components/media_router/browser/presentation/receiver_presentation_service_delegate_impl.h" #include "components/media_router/browser/presentation/web_contents_presentation_manager.h" #include "components/metrics/client_info.h" @@ -282,7 +281,6 @@ #include "components/payments/content/payment_request_display_manager.h" #include "components/pdf/common/pdf_util.h" #include "components/performance_manager/embedder/performance_manager_registry.h" -#include "components/performance_manager/public/scenarios/performance_scenarios.h" #include "components/permissions/permission_context_base.h" #include "components/policy/content/policy_blocklist_navigation_throttle.h" #include "components/policy/content/policy_blocklist_service.h" @@ -292,7 +290,6 @@ #include "components/prefs/pref_registry_simple.h" #include "components/prefs/pref_service.h" #include "components/prefs/scoped_user_pref_update.h" -#include "components/privacy_sandbox/privacy_sandbox_attestations/privacy_sandbox_attestations.h" #include "components/privacy_sandbox/privacy_sandbox_features.h" #include "components/privacy_sandbox/privacy_sandbox_prefs.h" #include "components/privacy_sandbox/privacy_sandbox_settings.h" @@ -314,6 +311,7 @@ #include "components/security_interstitials/content/ssl_error_handler.h" #include "components/security_interstitials/content/ssl_error_navigation_throttle.h" #include "components/security_state/core/security_state.h" +#include "components/services/on_device_translation/buildflags/buildflags.h" #include "components/site_isolation/pref_names.h" #include "components/site_isolation/preloaded_isolated_origins.h" #include "components/site_isolation/site_isolation_policy.h" @@ -361,6 +359,7 @@ #include "content/public/browser/web_contents_view_delegate.h" #include "content/public/browser/web_ui_url_loader_factory.h" #include "content/public/browser/webui_config_map.h" +#include "content/public/common/buildflags.h" #include "content/public/common/content_descriptors.h" #include "content/public/common/content_features.h" #include "content/public/common/content_switches.h" @@ -487,7 +486,6 @@ #include "chrome/browser/ui/browser_dialogs.h" #include "chrome/browser/ui/webui/ash/kerberos/kerberos_in_browser_dialog.h" #include "chrome/common/webui_url_constants.h" -#include "chromeos/ash/components/boca/boca_role_util.h" #include "chromeos/ash/components/browser_context_helper/browser_context_types.h" #include "chromeos/ash/components/http_auth_dialog/http_auth_dialog.h" #include "chromeos/ash/components/settings/cros_settings.h" @@ -646,8 +644,6 @@ // BUILDFLAG(IS_CHROMEOS_ASH) #if defined(TOOLKIT_VIEWS) -#include "chrome/browser/ui/side_search/side_search_side_contents_helper.h" -#include "chrome/browser/ui/side_search/side_search_utils.h" #include "chrome/browser/ui/views/chrome_browser_main_extra_parts_views.h" #endif @@ -809,6 +805,11 @@ #include "components/feed/feed_feature_list.h" #endif // BUILDFLAG(IS_ANDROID) +#if BUILDFLAG(ENABLE_ON_DEVICE_TRANSLATION) +#include "chrome/browser/on_device_translation/component_manager.h" +#include "chrome/browser/on_device_translation/pref_names.h" +#endif // BUILDFLAG(ENABLE_ON_DEVICE_TRANSLATION) + using blink::mojom::EffectiveConnectionType; using blink::web_pref::WebPreferences; using content::BrowserThread; @@ -840,22 +841,14 @@ using web_apps::ChromeContentBrowserClientIsolatedWebAppsPart; namespace { -#if BUILDFLAG(IS_ANDROID) -// Kill switch that allows falling back to the legacy behavior on Android when -// it comes to site isolation for Gaia's origin (|GaiaUrls::gaia_origin()|). -BASE_FEATURE(kAllowGaiaOriginIsolationOnAndroid, - "AllowGaiaOriginIsolationOnAndroid", - base::FEATURE_ENABLED_BY_DEFAULT); - -BASE_FEATURE(kPrivateNetworkAccessRestrictionsForAutomotive, - "PrivateNetworkAccessRestrictionsForAutomotive", - base::FEATURE_ENABLED_BY_DEFAULT); -#endif // BUILDFLAG(IS_ANDROID) - BASE_FEATURE(kSkipPagehideInCommitForDSENavigation, "SkipPagehideInCommitForDSENavigation", base::FEATURE_DISABLED_BY_DEFAULT); +BASE_FEATURE(kDisableJavascriptOptimizerByDefault, + "DisableJavascriptOptimizerByDefault", + base::FEATURE_DISABLED_BY_DEFAULT); + // A small ChromeBrowserMainExtraParts that invokes a callback when threads are // ready. Used to initialize ChromeContentBrowserClient data that needs the UI // thread. @@ -1007,7 +1000,7 @@ blink::mojom::AutoplayPolicy GetAutoplayPolicyForWebContents( switches::autoplay::kDocumentUserActivationRequiredPolicy) { result = blink::mojom::AutoplayPolicy::kDocumentUserActivationRequired; } else { - NOTREACHED_IN_MIGRATION(); + NOTREACHED(); } #if !BUILDFLAG(IS_ANDROID) @@ -1099,12 +1092,14 @@ bool IsExtensionIdAllowedToUseIsolatedContext(std::string_view extension_id) { #endif // BUILDFLAG(ENABLE_EXTENSIONS_CORE) -mojo::PendingRemote GetPrerenderCanceler( +mojo::PendingRemote +GetNoStatePrefetchCanceler( base::OnceCallback wc_getter) { - mojo::PendingRemote canceler; + mojo::PendingRemote canceler; prerender::ChromeNoStatePrefetchContentsDelegate::FromWebContents( std::move(wc_getter).Run()) - ->AddPrerenderCancelerReceiver(canceler.InitWithNewPipeAndPassReceiver()); + ->AddNoStatePrefetchCancelerReceiver( + canceler.InitWithNewPipeAndPassReceiver()); return canceler; } @@ -1571,6 +1566,9 @@ void ChromeContentBrowserClient::RegisterLocalStatePrefs( true); #if BUILDFLAG(IS_CHROMEOS) registry->RegisterBooleanPref(prefs::kNativeClientForceAllowed, false); + registry->RegisterBooleanPref(prefs::kDeviceNativeClientForceAllowed, false); + registry->RegisterBooleanPref(prefs::kDeviceNativeClientForceAllowedCache, + false); #endif // BUILDFLAG(IS_CHROMEOS) #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_ANDROID) registry->RegisterBooleanPref(prefs::kOutOfProcessSystemDnsResolutionEnabled, @@ -1598,19 +1596,24 @@ void ChromeContentBrowserClient::RegisterProfilePrefs( #if !BUILDFLAG(IS_ANDROID) registry->RegisterBooleanPref(prefs::kAutoplayAllowed, false); registry->RegisterListPref(prefs::kAutoplayAllowlist); - registry->RegisterListPref( - prefs::kScreenCaptureWithoutGestureAllowedForOrigins); registry->RegisterListPref( prefs::kFileOrDirectoryPickerWithoutGestureAllowedForOrigins); registry->RegisterIntegerPref(prefs::kFetchKeepaliveDurationOnShutdown, 0); registry->RegisterBooleanPref( prefs::kSharedArrayBufferUnrestrictedAccessAllowed, false); +#endif +#if BUILDFLAG(ENABLE_SCREEN_CAPTURE) + registry->RegisterListPref( + prefs::kScreenCaptureWithoutGestureAllowedForOrigins); #endif registry->RegisterBooleanPref(prefs::kSandboxExternalProtocolBlocked, true); registry->RegisterBooleanPref(prefs::kSSLErrorOverrideAllowed, true); registry->RegisterListPref(prefs::kSSLErrorOverrideAllowedForOrigins); registry->RegisterBooleanPref(prefs::kCompressionDictionaryTransportEnabled, true); +#if BUILDFLAG(ENABLE_ON_DEVICE_TRANSLATION) + registry->RegisterBooleanPref(prefs::kTranslatorAPIAllowed, true); +#endif registry->RegisterBooleanPref( prefs::kSuppressDifferentOriginSubframeJSDialogs, true); #if BUILDFLAG(IS_ANDROID) @@ -1668,6 +1671,7 @@ void ChromeContentBrowserClient::RegisterProfilePrefs( #endif registry->RegisterBooleanPref(prefs::kWebAudioOutputBufferingEnabled, false); + registry->RegisterBooleanPref(prefs::kSharedWorkerBlobURLFixEnabled, true); } // static @@ -2299,8 +2303,12 @@ ChromeContentBrowserClient::DetermineAddressSpaceFromURL(const GURL& url) { return network::mojom::IPAddressSpace::kUnknown; } -bool ChromeContentBrowserClient::LogWebUIUrl(const GURL& web_ui_url) { - return webui::LogWebUIUrl(web_ui_url); +bool ChromeContentBrowserClient::LogWebUICreated(const GURL& web_ui_url) { + return webui::LogWebUICreated(web_ui_url); +} + +bool ChromeContentBrowserClient::LogWebUIShown(const GURL& web_ui_url) { + return webui::LogWebUIShown(web_ui_url); } bool ChromeContentBrowserClient::IsWebUIAllowedToMakeNetworkRequests( @@ -2943,10 +2951,6 @@ void ChromeContentBrowserClient::AppendExtraCommandLineSwitches( webauthn::pref_names::kRemoteProxiedRequestsAllowed)) { command_line->AppendSwitch(switches::kWebAuthRemoteDesktopSupport); } - - if (IsCartModuleEnabled()) { - command_line->AppendSwitch(commerce::switches::kEnableChromeCart); - } #endif } @@ -3268,6 +3272,13 @@ bool ChromeContentBrowserClient::AllowCompressionDictionaryTransport( prefs::kCompressionDictionaryTransportEnabled); } +bool ChromeContentBrowserClient::AllowSharedWorkerBlobURLFix( + content::BrowserContext* browser_context) { + DCHECK_CURRENTLY_ON(BrowserThread::UI); + Profile* profile = Profile::FromBrowserContext(browser_context); + return profile->GetPrefs()->GetBoolean(prefs::kSharedWorkerBlobURLFixEnabled); +} + void ChromeContentBrowserClient::RequestFilesAccess( const std::vector& files, const GURL& destination_url, @@ -3430,12 +3441,12 @@ std::string ChromeContentBrowserClient::GetWebBluetoothBlocklist() { } bool ChromeContentBrowserClient::IsInterestGroupAPIAllowed( + content::BrowserContext* browser_context, content::RenderFrameHost* render_frame_host, InterestGroupApiOperation operation, const url::Origin& top_frame_origin, const url::Origin& api_origin) { - Profile* profile = - Profile::FromBrowserContext(render_frame_host->GetBrowserContext()); + Profile* profile = Profile::FromBrowserContext(browser_context); auto* privacy_sandbox_settings = PrivacySandboxSettingsFactory::GetForProfile(profile); DCHECK(privacy_sandbox_settings); @@ -3641,6 +3652,25 @@ bool ChromeContentBrowserClient::IsSharedStorageSelectURLAllowed( out_block_is_site_setting_specific); } +bool ChromeContentBrowserClient::IsFencedStorageReadAllowed( + content::BrowserContext* browser_context, + content::RenderFrameHost* rfh, + const url::Origin& top_frame_origin, + const url::Origin& accessing_origin) { + Profile* profile = Profile::FromBrowserContext(browser_context); + auto* privacy_sandbox_settings = + PrivacySandboxSettingsFactory::GetForProfile(profile); + DCHECK(privacy_sandbox_settings); + bool allowed = privacy_sandbox_settings->IsFencedStorageReadAllowed( + top_frame_origin, accessing_origin, rfh); + if (rfh) { + content_settings::PageSpecificContentSettings::BrowsingDataAccessed( + rfh, blink::StorageKey::CreateFirstParty(accessing_origin), + BrowsingDataModel::StorageType::kSharedStorage, !allowed); + } + return allowed; +} + bool ChromeContentBrowserClient::IsPrivateAggregationAllowed( content::BrowserContext* browser_context, const url::Origin& top_frame_origin, @@ -3762,8 +3792,7 @@ void ChromeContentBrowserClient::OnTrustAnchorUsed( policy::PolicyCertServiceFactory::GetForProfile( Profile::FromBrowserContext(browser_context)); if (!service) { - NOTREACHED_IN_MIGRATION(); - return; + NOTREACHED(); } service->SetUsedPolicyCertificates(); } @@ -4040,8 +4069,7 @@ bool UpdatePreferredColorScheme(WebPreferences* web_prefs, bool CanPromptWithNonmatchingCertificates(const Profile* profile) { #if BUILDFLAG(IS_CHROMEOS_ASH) if (ash::ProfileHelper::IsSigninProfile(profile) || - ash::ProfileHelper::IsLockScreenProfile(profile) || - ash::ProfileHelper::IsLockScreenAppProfile(profile)) { + ash::ProfileHelper::IsLockScreenProfile(profile)) { // On non-regular profiles (e.g. sign-in profile or lock-screen profile), // never show certificate selection to the user. A client certificate is an // identifier that can be stable for a long time, so only the administrator @@ -5067,9 +5095,6 @@ std::wstring ChromeContentBrowserClient::GetAppContainerSidForSandboxType( case sandbox::mojom::Sandbox::kPrintCompositor: case sandbox::mojom::Sandbox::kAudio: case sandbox::mojom::Sandbox::kScreenAI: -#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) - case sandbox::mojom::Sandbox::kVideoEffects: -#endif case sandbox::mojom::Sandbox::kSpeechRecognition: case sandbox::mojom::Sandbox::kPdfConversion: case sandbox::mojom::Sandbox::kService: @@ -5158,9 +5183,6 @@ bool ChromeContentBrowserClient::PreSpawnChild( break; case sandbox::mojom::Sandbox::kUtility: case sandbox::mojom::Sandbox::kGpu: -#if BUILDFLAG(ENABLE_PPAPI) - case sandbox::mojom::Sandbox::kPpapi: -#endif case sandbox::mojom::Sandbox::kNoSandbox: case sandbox::mojom::Sandbox::kNoSandboxAndElevatedPrivileges: case sandbox::mojom::Sandbox::kXrCompositing: @@ -5169,12 +5191,7 @@ bool ChromeContentBrowserClient::PreSpawnChild( case sandbox::mojom::Sandbox::kPrintBackend: #endif case sandbox::mojom::Sandbox::kPrintCompositor: -#if !BUILDFLAG(IS_ANDROID) case sandbox::mojom::Sandbox::kScreenAI: -#endif -#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) - case sandbox::mojom::Sandbox::kVideoEffects: -#endif case sandbox::mojom::Sandbox::kAudio: case sandbox::mojom::Sandbox::kOnDeviceModelExecution: case sandbox::mojom::Sandbox::kSpeechRecognition: @@ -5204,7 +5221,7 @@ bool ChromeContentBrowserClient::PreSpawnChild( // Allow loading Chrome's DLLs. for (const auto* dll : {chrome::kBrowserResourcesDll, chrome::kElfDll}) { - result = config->AllowExtraDlls(GetModulePath(dll).value().c_str()); + result = config->AllowExtraDll(GetModulePath(dll).value().c_str()); if (result != sandbox::SBOX_ALL_OK) return false; } @@ -5298,7 +5315,7 @@ content::ControllerPresentationServiceDelegate* ChromeContentBrowserClient::GetControllerPresentationServiceDelegate( content::WebContents* web_contents) { if (media_router::MediaRouterEnabled(web_contents->GetBrowserContext())) { - return media_router::PresentationServiceDelegateImpl:: + return media_router::ControllerPresentationServiceDelegateImpl:: GetOrCreateForWebContents(web_contents); } return nullptr; @@ -5338,18 +5355,6 @@ void ChromeContentBrowserClient::RemovePresentationObserver( } } -bool ChromeContentBrowserClient::AddPrivacySandboxAttestationsObserver( - content::PrivacySandboxAttestationsObserver* observer) { - return privacy_sandbox::PrivacySandboxAttestations::GetInstance() - ->AddObserver(observer); -} - -void ChromeContentBrowserClient::RemovePrivacySandboxAttestationsObserver( - content::PrivacySandboxAttestationsObserver* observer) { - privacy_sandbox::PrivacySandboxAttestations::GetInstance()->RemoveObserver( - observer); -} - std::vector> ChromeContentBrowserClient::CreateThrottlesForNavigation( content::NavigationHandle* handle) { @@ -5597,12 +5602,12 @@ ChromeContentBrowserClient::CreateThrottlesForNavigation( MaybeAddThrottle( chromeos::KioskSettingsNavigationThrottle::MaybeCreateThrottleFor(handle), &throttles); - if (ash::boca_util::IsEnabled()) { - MaybeAddThrottle( - ash::OnTaskLockedSessionNavigationThrottle::MaybeCreateThrottleFor( - handle), - &throttles); - } + + MaybeAddThrottle( + ash::OnTaskLockedSessionNavigationThrottle::MaybeCreateThrottleFor( + handle), + &throttles); + #endif #if BUILDFLAG(IS_MAC) @@ -5642,14 +5647,6 @@ ChromeContentBrowserClient::CreateThrottlesForNavigation( handle), &throttles); -#if defined(TOOLKIT_VIEWS) - if (profile && IsSideSearchEnabled(profile)) { - MaybeAddThrottle( - SideSearchSideContentsHelper::MaybeCreateThrottleFor(handle), - &throttles); - } -#endif - #if BUILDFLAG(ENABLE_LENS_DESKTOP_GOOGLE_BRANDED_FEATURES) if (lens::features::IsLensSidePanelEnabled()) { MaybeAddThrottle( @@ -6006,7 +6003,8 @@ ChromeContentBrowserClient::MaybeCreateSafeBrowsingURLLoaderThrottle( profile->IsOffTheRecord(), profile->GetPrefs(), safe_browsing::hash_realtime_utils::GetCountryCode( g_browser_process->variations_service()), - /*log_usage_histograms=*/true); + /*log_usage_histograms=*/true, + /*are_background_lookups_allowed=*/true); safe_browsing::AsyncCheckTracker* async_check_tracker = GetAsyncCheckTracker(wc_getter, is_enterprise_lookup_enabled, is_consumer_lookup_enabled, @@ -6149,7 +6147,7 @@ ChromeContentBrowserClient::CreateURLLoaderThrottles( chrome_navigation_ui_data->is_no_state_prefetching()) { result.push_back( std::make_unique( - GetPrerenderCanceler(wc_getter))); + GetNoStatePrefetchCanceler(wc_getter))); } #if BUILDFLAG(IS_ANDROID) @@ -6971,9 +6969,7 @@ bool ChromeContentBrowserClient::ShouldForceDownloadResource( Profile* profile = Profile::FromBrowserContext(browser_context); bool force_download = profile->GetPrefs()->GetBoolean( quickoffice::kQuickOfficeForceFileDownloadEnabled); - - if (base::FeatureList::IsEnabled(features::kQuickOfficeForceFileDownload) && - force_download) { + if (force_download) { std::string extension_id = PluginUtils::GetExtensionIdForMimeType(browser_context, mime_type); @@ -7996,9 +7992,7 @@ ChromeContentBrowserClient::ShouldOverridePrivateNetworkRequestPolicy( } #if BUILDFLAG(IS_ANDROID) - if (base::FeatureList::IsEnabled( - kPrivateNetworkAccessRestrictionsForAutomotive) && - base::android::BuildInfo::GetInstance()->is_automotive()) { + if (base::android::BuildInfo::GetInstance()->is_automotive()) { return content::ContentBrowserClient::PrivateNetworkRequestPolicyOverride:: kBlockInsteadOfWarn; } @@ -8038,6 +8032,12 @@ bool ChromeContentBrowserClient::IsJitDisabledForSite( bool ChromeContentBrowserClient::AreV8OptimizationsDisabledForSite( content::BrowserContext* browser_context, const GURL& site_url) { + // Only disable optimizations for schemes that might atually load web content. + auto* policy = ChildProcessSecurityPolicy::GetInstance(); + if (!site_url.is_empty() && !policy->IsWebSafeScheme(site_url.scheme())) { + return false; + } + Profile* profile = Profile::FromBrowserContext(browser_context); auto* map = HostContentSettingsMapFactory::GetForProfile(profile); // Special case to determine if any policy is set. @@ -8047,10 +8047,12 @@ bool ChromeContentBrowserClient::AreV8OptimizationsDisabledForSite( CONTENT_SETTING_BLOCK; } - // Only disable optimizations for schemes that might atually load web content. - auto* policy = ChildProcessSecurityPolicy::GetInstance(); - if (!policy->IsWebSafeScheme(site_url.scheme())) { - return false; + // Activate experiment only for users who haven't explicitly disabled v8 + // optimization by default so that most of the users in the "experiment + // off" branch have v8 optimization enabled. + if (base::FeatureList::GetInstance()->IsEnabled( + kDisableJavascriptOptimizerByDefault)) { + return true; } return (map && @@ -8148,7 +8150,8 @@ bool ChromeContentBrowserClient::SetupEmbedderSandboxParameters( screen_ai_binary_path.value()); } else if (sandbox_type == sandbox::mojom::Sandbox::kOnDeviceTranslation) { auto translatekit_binary_path = - OnDeviceTranslationServiceController::GetTranslateKitComponentPath(); + on_device_translation::ComponentManager::GetInstance() + .GetTranslateKitComponentPath(); if (translatekit_binary_path.empty()) { VLOG(1) << "TranslationKit component not found."; return false; @@ -8497,11 +8500,11 @@ bool ChromeContentBrowserClient:: #if BUILDFLAG(IS_MAC) std::string ChromeContentBrowserClient::GetChildProcessSuffix(int child_flags) { - if (child_flags == chrome::kChildProcessHelperAlerts) { + if (child_flags == + base::to_underlying(ChildProcessHostFlags::kChildProcessHelperAlerts)) { return chrome::kMacHelperSuffixAlerts; } - NOTREACHED_IN_MIGRATION() << "Unsupported child process flags!"; - return {}; + NOTREACHED() << "Unsupported child process flags!"; } #endif // BUILDFLAG(IS_MAC) @@ -8533,11 +8536,6 @@ bool ChromeContentBrowserClient::DoesGaiaOriginRequireDedicatedProcess() { // improve security generally and specifically it allows the exposure of // certain optional privileged APIs. - // Kill switch that falls back to the legacy behavior. - if (!base::FeatureList::IsEnabled(kAllowGaiaOriginIsolationOnAndroid)) { - return false; - } - if (site_isolation::SiteIsolationPolicy:: ShouldDisableSiteIsolationDueToMemoryThreshold( content::SiteIsolationMode::kPartialSiteIsolation)) { @@ -8721,11 +8719,11 @@ bool ChromeContentBrowserClient::ShouldSuppressAXLoadComplete( void ChromeContentBrowserClient::BindAIManager( content::BrowserContext* browser_context, - std::variant context, + base::SupportsUserData* context_user_data, mojo::PendingReceiver receiver) { auto* ai_manager = AIManagerKeyedServiceFactory::GetAIManagerKeyedService(browser_context); - ai_manager->AddReceiver(std::move(receiver), context); + ai_manager->AddReceiver(std::move(receiver), *context_user_data); } #if !BUILDFLAG(IS_ANDROID) @@ -8859,17 +8857,6 @@ void ChromeContentBrowserClient::SetSamplingProfiler( sampling_profiler_ = std::move(sampling_profiler); } -base::ReadOnlySharedMemoryRegion -ChromeContentBrowserClient::GetPerformanceScenarioRegionForProcess( - content::RenderProcessHost* process_host) { - return performance_manager::GetSharedScenarioRegionForProcess(process_host); -} - -base::ReadOnlySharedMemoryRegion -ChromeContentBrowserClient::GetGlobalPerformanceScenarioRegion() { - return performance_manager::GetGlobalSharedScenarioRegion(); -} - bool ChromeContentBrowserClient::ShouldDispatchPagehideDuringCommit( content::BrowserContext* browser_context, const GURL& destination_url) { 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 3e27913d4..7d352058f 100755 --- a/tools/under-control/src/chrome/browser/prefs/browser_prefs.cc +++ b/tools/under-control/src/chrome/browser/prefs/browser_prefs.cc @@ -23,7 +23,7 @@ #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" -#include "chrome/browser/chromeos/enterprise/cloud_storage/policy_utils.h" +#include "chrome/browser/chromeos/enterprise/cloud_storage/pref_utils.h" #include "chrome/browser/chromeos/upload_office_to_cloud/upload_office_to_cloud.h" #include "chrome/browser/component_updater/component_updater_prefs.h" #include "chrome/browser/devtools/devtools_window.h" @@ -72,7 +72,6 @@ #include "chrome/browser/search/search.h" #include "chrome/browser/sharing_hub/sharing_hub_features.h" #include "chrome/browser/ssl/ssl_config_service_manager.h" -#include "chrome/browser/task_manager/task_manager_interface.h" #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" @@ -82,14 +81,9 @@ #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" -#include "chrome/browser/ui/tabs/pinned_tab_codec.h" -#include "chrome/browser/ui/tabs/saved_tab_groups/saved_tab_group_pref_names.h" -#include "chrome/browser/ui/tabs/tab_strip_prefs.h" #include "chrome/browser/ui/toolbar/chrome_labs/chrome_labs_prefs.h" #include "chrome/browser/ui/toolbar/chrome_location_bar_model_delegate.h" #include "chrome/browser/ui/toolbar/toolbar_pref_names.h" -#include "chrome/browser/ui/views/side_panel/side_panel_prefs.h" #include "chrome/browser/ui/webui/accessibility/accessibility_ui.h" #include "chrome/browser/ui/webui/bookmarks/bookmark_prefs.h" #include "chrome/browser/ui/webui/flags/flags_ui.h" @@ -98,6 +92,7 @@ #include "chrome/browser/ui/webui/print_preview/policy_settings.h" #include "components/plus_addresses/plus_address_prefs.h" #include "components/privacy_sandbox/tpcd_pref_names.h" +#include "components/services/on_device_translation/buildflags/buildflags.h" #include "components/sharing_message/sharing_sync_preference.h" #include "components/signin/core/browser/active_primary_accounts_metrics_recorder.h" #if BUILDFLAG(IS_CHROMEOS_ASH) @@ -105,7 +100,7 @@ #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/user_education/browser_user_education_storage_service.h" #include "chrome/browser/webauthn/chrome_authenticator_request_delegate.h" #include "chrome/browser/webauthn/webauthn_pref_names.h" #include "chrome/common/buildflags.h" @@ -127,6 +122,7 @@ #include "components/enterprise/buildflags/buildflags.h" #include "components/enterprise/connectors/core/connectors_prefs.h" #include "components/fingerprinting_protection_filter/common/fingerprinting_protection_filter_constants.h" +#include "components/fingerprinting_protection_filter/common/prefs.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" @@ -207,6 +203,7 @@ #endif #if BUILDFLAG(ENABLE_EXTENSIONS_CORE) +#include "extensions/browser/api/runtime/runtime_api.h" #include "extensions/browser/extension_prefs.h" #include "extensions/browser/permissions_manager.h" #include "extensions/browser/pref_names.h" @@ -223,7 +220,6 @@ #include "chrome/browser/ui/extensions/settings_api_bubble_helpers.h" #include "chrome/browser/ui/webui/extensions/extensions_ui.h" #include "extensions/browser/api/audio/audio_api.h" -#include "extensions/browser/api/runtime/runtime_api.h" #if BUILDFLAG(IS_CHROMEOS_ASH) #include "chrome/browser/ash/device_name/device_name_store.h" #include "chrome/browser/ash/extensions/extensions_permissions_tracker.h" @@ -273,7 +269,6 @@ #include "components/webapps/browser/android/install_prompt_prefs.h" #else // BUILDFLAG(IS_ANDROID) #include "chrome/browser/cart/cart_service.h" -#include "chrome/browser/companion/core/promo_handler.h" #include "chrome/browser/device_api/device_service_impl.h" #include "chrome/browser/gcm/gcm_product_util.h" #include "chrome/browser/hid/hid_policy_allowed_devices.h" @@ -286,7 +281,6 @@ #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" #include "chrome/browser/new_tab_page/promos/promo_service.h" -#include "chrome/browser/on_device_translation/pref_names.h" #include "chrome/browser/policy/developer_tools_policy_handler.h" #include "chrome/browser/promos/promos_utils.h" #include "chrome/browser/screen_ai/pref_names.h" @@ -294,9 +288,16 @@ #include "chrome/browser/search_engine_choice/search_engine_choice_dialog_service.h" #include "chrome/browser/serial/serial_policy_allowed_ports.h" #include "chrome/browser/signin/signin_promo.h" +#include "chrome/browser/task_manager/task_manager_interface.h" #include "chrome/browser/themes/theme_syncable_service.h" #include "chrome/browser/ui/commerce/commerce_ui_tab_helper.h" #include "chrome/browser/ui/startup/startup_browser_creator.h" +#include "chrome/browser/ui/tabs/organization/prefs.h" +#include "chrome/browser/ui/tabs/pinned_tab_codec.h" +#include "chrome/browser/ui/tabs/saved_tab_groups/saved_tab_group_pref_names.h" +#include "chrome/browser/ui/tabs/tab_strip_prefs.h" +#include "chrome/browser/ui/views/side_panel/side_panel_prefs.h" +#include "chrome/browser/ui/webui/certificate_manager/certificate_manager_handler.h" #include "chrome/browser/ui/webui/cr_components/theme_color_picker/theme_color_picker_handler.h" #include "chrome/browser/ui/webui/history/foreign_session_handler.h" #include "chrome/browser/ui/webui/new_tab_page/new_tab_page_handler.h" @@ -318,13 +319,13 @@ #endif #if BUILDFLAG(IS_CHROMEOS) -#include "chrome/browser/chromeos/extensions/echo_private/echo_private_api.h" +#include "chrome/browser/chromeos/extensions/echo_private/echo_private_api_util.h" #include "chrome/browser/chromeos/extensions/login_screen/login/login_api_prefs.h" #include "chrome/browser/chromeos/policy/dlp/dlp_rules_manager_impl.h" #include "chrome/browser/chromeos/quickoffice/quickoffice_prefs.h" #include "chrome/browser/chromeos/reporting/metric_reporting_prefs.h" -#include "chrome/browser/extensions/api/document_scan/document_scan_api_handler.h" -#include "chrome/browser/extensions/api/enterprise_platform_keys/enterprise_platform_keys_api.h" +#include "chrome/browser/extensions/api/document_scan/profile_prefs_registry_util.h" +#include "chrome/browser/extensions/api/enterprise_platform_keys/enterprise_platform_keys_registry_util.h" #include "chrome/browser/memory/oom_kills_monitor.h" #include "chrome/browser/policy/annotations/blocklist_handler.h" #include "chrome/browser/policy/networking/policy_cert_service.h" @@ -366,7 +367,6 @@ #include "chrome/browser/ash/child_accounts/screen_time_controller.h" #include "chrome/browser/ash/child_accounts/time_limits/app_activity_registry.h" #include "chrome/browser/ash/child_accounts/time_limits/app_time_controller.h" -#include "chrome/browser/ash/crosapi/browser_util.h" #include "chrome/browser/ash/crostini/crostini_pref_names.h" #include "chrome/browser/ash/cryptauth/client_app_metadata_provider_service.h" #include "chrome/browser/ash/cryptauth/cryptauth_device_id_provider_impl.h" @@ -379,9 +379,6 @@ #include "chrome/browser/ash/guest_os/guest_id.h" #include "chrome/browser/ash/guest_os/guest_os_pref_names.h" #include "chrome/browser/ash/guest_os/guest_os_terminal.h" -#include "chrome/browser/ash/lock_screen_apps/state_controller.h" -#include "chrome/browser/ash/login/demo_mode/demo_session.h" -#include "chrome/browser/ash/login/demo_mode/demo_setup_controller.h" #include "chrome/browser/ash/login/quick_unlock/fingerprint_storage.h" #include "chrome/browser/ash/login/quick_unlock/pin_storage_prefs.h" #include "chrome/browser/ash/login/quick_unlock/quick_unlock_utils.h" @@ -438,6 +435,7 @@ #include "chrome/browser/upgrade_detector/upgrade_detector_chromeos.h" #include "chromeos/ash/components/audio/audio_devices_pref_handler_impl.h" #include "chromeos/ash/components/boca/on_task/on_task_prefs.h" +#include "chromeos/ash/components/demo_mode/utils/demo_session_utils.h" #include "chromeos/ash/components/local_search_service/search_metrics_reporter.h" #include "chromeos/ash/components/network/cellular_esim_profile_handler_impl.h" #include "chromeos/ash/components/network/cellular_metrics_logger.h" @@ -447,7 +445,6 @@ #include "chromeos/ash/components/network/proxy/proxy_config_handler.h" #include "chromeos/ash/components/policy/restriction_schedule/device_restriction_schedule_controller.h" #include "chromeos/ash/components/report/report_controller.h" -#include "chromeos/ash/components/standalone_browser/migrator_util.h" #include "chromeos/ash/components/timezone/timezone_resolver.h" #include "chromeos/ash/services/assistant/public/cpp/assistant_prefs.h" #include "chromeos/ash/services/auth_factor_config/auth_factor_config.h" @@ -457,7 +454,7 @@ #include "chromeos/ash/services/multidevice_setup/multidevice_setup_service.h" #include "chromeos/components/quick_answers/public/cpp/quick_answers_prefs.h" #include "components/account_manager_core/chromeos/account_manager.h" -#include "components/onc/onc_pref_names.h" +#include "components/onc/onc_pref_names.h" // nogncheck #include "components/quirks/quirks_manager.h" #include "components/user_manager/user_manager_impl.h" #include "extensions/browser/api/lock_screen_data/lock_screen_item_storage.h" @@ -484,7 +481,7 @@ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) #include "chrome/browser/enterprise/platform_auth/platform_auth_policy_observer.h" -#include "components/os_crypt/sync/os_crypt.h" +#include "components/os_crypt/sync/os_crypt.h" // nogncheck #endif #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ @@ -542,6 +539,10 @@ #include "chrome/browser/ash/wallpaper_handlers/wallpaper_prefs.h" #endif +#if BUILDFLAG(ENABLE_ON_DEVICE_TRANSLATION) +#include "chrome/browser/on_device_translation/pref_names.h" +#endif // BUILDFLAG(ENABLE_ON_DEVICE_TRANSLATION) + #if BUILDFLAG(ENTERPRISE_DATA_CONTROLS) #include "components/enterprise/data_controls/core/browser/prefs.h" #endif @@ -551,93 +552,8 @@ 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 09/2023. -const char kPrivacySandboxM1Unrestricted[] = "privacy_sandbox.m1.unrestricted"; -#if BUILDFLAG(IS_WIN) -const char kSwReporter[] = "software_reporter"; -const char kChromeCleaner[] = "chrome_cleaner"; -const char kSettingsResetPrompt[] = "settings_reset_prompt"; -#endif -// A boolean specifying whether the new download bubble UI is enabled. If it is -// set to false, the old download shelf UI will be shown instead. -const char kDownloadBubbleEnabled[] = "download_bubble_enabled"; - -// Deprecated 09/2023. -#if BUILDFLAG(IS_CHROMEOS_ASH) -const char kGestureEducationNotificationShown[] = - "ash.gesture_education.notification_shown"; - -// Note that this very name is used outside ChromeOS Ash, where it isn't -// deprecated. -const char kSyncInitialSyncFeatureSetupCompleteOnAsh[] = - "sync.has_setup_completed"; -#endif - -// Deprecated 09/2023. -const char kPrivacySandboxManuallyControlled[] = - "privacy_sandbox.manually_controlled"; - -// Deprecated 09/2023. -#if BUILDFLAG(IS_ANDROID) -const char kSettingsMigratedToUPM[] = "profile.settings_migrated_to_upm"; -#endif - // Deprecated 10/2023. const char kSyncRequested[] = "sync.requested"; -const char kDownloadLastCompleteTime[] = "download.last_complete_time"; - -// Deprecated 10/2023. -#if BUILDFLAG(IS_CHROMEOS_ASH) -const char kLastSuccessfulDomainPref[] = "android_sms.last_successful_domain"; -const char kShouldAttemptReenable[] = "android_sms.should_attempt_reenable"; -const char kAudioVolumePercent[] = "settings.audio.volume_percent"; -#endif // BUILDFLAG(IS_CHROMEOS_ASH) - -// Deprecated 10/2023. -#if BUILDFLAG(IS_CHROMEOS) -const char kSupportedLinksAppPrefsKey[] = "supported_links_infobar.apps"; -#endif // BUILDFLAG(IS_CHROMEOS) - -// Deprecated 10/2023. -#if BUILDFLAG(IS_CHROMEOS_ASH) -constexpr char kNightLightCachedLatitude[] = "ash.night_light.cached_latitude"; -constexpr char kNightLightCachedLongitude[] = - "ash.night_light.cached_longitude"; -#endif // BUILDFLAG(IS_CHROMEOS_ASH) - -// Deprecated 11/2023. -#if BUILDFLAG(IS_CHROMEOS_ASH) -constexpr char kUserGeolocationAllowed[] = "ash.user.geolocation_allowed"; -#endif // BUILDFLAG(IS_CHROMEOS_ASH) - -// Deprecated 11/2023. -const char kPrivacySandboxAntiAbuseInitialized[] = - "privacy_sandbox.anti_abuse_initialized"; - -// Deprecated 11/2023. -constexpr char kWebRTCAllowLegacyTLSProtocols[] = - "webrtc.allow_legacy_tls_protocols"; - -// Deprecated 11/2023. -#if BUILDFLAG(IS_CHROMEOS_ASH) -constexpr char kSystemTrayExpanded[] = "ash.system_tray.expanded"; -#endif - -// Deprecated 11/2023. -constexpr char kPasswordChangeSuccessTrackerFlows[] = - "password_manager.password_change_success_tracker.flows"; -constexpr char kPasswordChangeSuccessTrackerVersion[] = - "password_manager.password_change_success_tracker.version"; - -// Deprecated 11/2023. -#if BUILDFLAG(IS_CHROMEOS_ASH) -constexpr char kImageSearchPrivacyNotice[] = - "ash.launcher.image_search_privacy_notice"; -#endif // BUILDFLAG(IS_CHROMEOS_ASH) - -// Deprecated 11/2023. -constexpr char kWebAndAppActivityEnabledForShopping[] = - "web_and_app_activity_enabled_for_shopping"; // Deprecated 12/2023. #if BUILDFLAG(IS_ANDROID) @@ -1100,6 +1016,10 @@ const char kTabResumeDismissedTabsPrefName[] = "NewTabPage.MostRelevantTabResumption.DismissedTabs"; #endif // !BUILDFLAG(IS_ANDROID) +// Deprecated 10/2024. +constexpr char kLiveCaptionBubblePinned[] = + "accessibility.captions.live_caption_bubble_pinned"; + // Deprecated 10/2024. #if BUILDFLAG(IS_CHROMEOS) const char kMigrationStep[] = "ash.browser_data_migrator.migration_step"; @@ -1109,6 +1029,22 @@ const char kMoveMigrationResumeCountPref[] = "ash.browser_data_migrator.move_migration_resume_count"; const char kLacrosSecondaryProfilesAllowed[] = "lacros_secondary_profiles_allowed"; +constexpr char kDataVerPref[] = "lacros.data_version"; +constexpr char kMigrationAttemptCountPref[] = + "ash.browser_data_migrator.migration_attempt_count"; +constexpr char kProfileMigrationCompletedForUserPref[] = + "lacros.profile_migration_completed_for_user"; +constexpr char kProfileMoveMigrationCompletedForUserPref[] = + "lacros.profile_move_migration_completed_for_user"; +constexpr char kProfileMigrationCompletedForNewUserPref[] = + "lacros.profile_migration_completed_for_new_user"; +const char kProfileDataBackwardMigrationCompletedForUserPref[] = + "lacros.profile_data_backward_migration_completed_for_user"; +const char kGotoFilesPref[] = "lacros.goto_files"; +const char kProfileMigrationCompletionTimeForUserPref[] = + "lacros.profile_migration_completion_time_for_user"; +const char kLacrosDataBackwardMigrationMode[] = + "lacros_data_backward_migration_mode"; #endif #if !BUILDFLAG(IS_ANDROID) @@ -1130,21 +1066,63 @@ inline constexpr char kAccessibilityFaceGazeCursorSmoothing[] = const char kBeforeunloadEventCancelByPreventDefaultEnabled[] = "policy.beforeunload_event_cancel_by_prevent_default_enabled"; -// 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); - registry->RegisterDictionaryPref(kChromeCleaner); -#endif +// Deprecated 10/2024. +inline constexpr char kDocumentSuggestEnabled[] = "documentsuggest.enabled"; - // Deprecated 09/2023. #if BUILDFLAG(IS_CHROMEOS_ASH) - registry->RegisterBooleanPref(kGestureEducationNotificationShown, true); +// Deprecated 10/2024 +inline constexpr char kWallpaperSeaPenMigrationStatus[] = + "ash.wallpaper.sea_pen.migration_status"; +#endif + +// Deprecated 10/2024 +inline constexpr char kFirstTimeInterstitialBannerState[] = + "profile.managed.banner_state"; + +// Deprecated 10/2024 +inline constexpr char kSidePanelCompanionEntryPinnedToToolbar[] = + "side_panel.companion_pinned_to_toolbar"; +inline constexpr char kMsbbPromoDeclinedCountPref[] = + "Companion.Promo.MSBB.Declined.Count"; +inline constexpr char kSigninPromoDeclinedCountPref[] = + "Companion.Promo.Signin.Declined.Count"; +inline constexpr char kExpsPromoDeclinedCountPref[] = + "Companion.Promo.Exps.Declined.Count"; +inline constexpr char kExpsPromoShownCountPref[] = + "Companion.Promo.Exps.Shown.Count"; +inline constexpr char kPcoPromoShownCountPref[] = + "Companion.Promo.PCO.Shown.Count"; +inline constexpr char kPcoPromoDeclinedCountPref[] = + "Companion.Promo.PCO.Declined.Count"; +inline constexpr char kExpsOptInStatusGrantedPref[] = + "Companion.Exps.OptIn.Status.Granted"; +inline constexpr char kHasNavigatedToExpsSuccessPage[] = + "Companion.HasNavigatedToExpsSuccessPage"; + +// Deprecated 11/2024. +#if BUILDFLAG(IS_CHROMEOS) +constexpr char kNoteTakingAppEnabledOnLockScreen[] = + "settings.note_taking_app_enabled_on_lock_screen"; +constexpr char kNoteTakingAppsLockScreenAllowlist[] = + "settings.note_taking_apps_lock_screen_whitelist"; +constexpr char kNoteTakingAppsLockScreenToastShown[] = + "settings.note_taking_apps_lock_screen_toast_shown"; +constexpr char kRestoreLastLockScreenNote[] = + "settings.restore_last_lock_screen_note"; #endif - // Deprecated 11/2023. +// Deprecated 11/2024 +constexpr char kPrefixedVideoFullscreenApiAvailability[] = + "media.prefixed_fullscreen_video_api_availability"; + +// Deprecated 11/2024 +constexpr char kOnDeviceModelTimeoutCount[] = + "optimization_guide.on_device.timeout_count"; + +// Register local state used only for migration (clearing or moving to a new +// key). +void RegisterLocalStatePrefsForMigration(PrefRegistrySimple* registry) { + // Deprecated 12/2023. #if BUILDFLAG(IS_CHROMEOS_ASH) registry->RegisterBooleanPref(kIsolatedWebAppsEnabled, false); #endif @@ -1230,6 +1208,16 @@ void RegisterLocalStatePrefsForMigration(PrefRegistrySimple* registry) { registry->RegisterIntegerPref(kMigrationStep, 0); registry->RegisterDictionaryPref(kMoveMigrationResumeStepPref); registry->RegisterDictionaryPref(kMoveMigrationResumeCountPref); + registry->RegisterDictionaryPref(kDataVerPref); + registry->RegisterDictionaryPref(kMigrationAttemptCountPref); + registry->RegisterDictionaryPref(kProfileMigrationCompletedForUserPref); + registry->RegisterDictionaryPref(kProfileMoveMigrationCompletedForUserPref); + registry->RegisterDictionaryPref(kProfileMigrationCompletedForNewUserPref); + registry->RegisterDictionaryPref( + kProfileDataBackwardMigrationCompletedForUserPref); + registry->RegisterListPref(kGotoFilesPref); + registry->RegisterDictionaryPref(kProfileMigrationCompletionTimeForUserPref); + registry->RegisterStringPref(kLacrosDataBackwardMigrationMode, ""); #endif #if !BUILDFLAG(IS_ANDROID) @@ -1240,77 +1228,17 @@ void RegisterLocalStatePrefsForMigration(PrefRegistrySimple* registry) { // Deprecated 10/2024. registry->RegisterBooleanPref(kBeforeunloadEventCancelByPreventDefaultEnabled, true); + + // Deprecated 11/2024. + registry->RegisterIntegerPref(kOnDeviceModelTimeoutCount, 0); } // Register prefs used only for migration (clearing or moving to a new key). void RegisterProfilePrefsForMigration( user_prefs::PrefRegistrySyncable* registry) { chrome_browser_net::secure_dns::RegisterProbesSettingBackupPref(registry); - - // Deprecated 09/2023. - registry->RegisterBooleanPref(kPrivacySandboxM1Unrestricted, false); -#if BUILDFLAG(IS_WIN) - registry->RegisterDictionaryPref(kSwReporter); - registry->RegisterDictionaryPref(kSettingsResetPrompt); - registry->RegisterDictionaryPref(kChromeCleaner); -#endif - registry->RegisterBooleanPref(kDownloadBubbleEnabled, true); - registry->RegisterBooleanPref(kPrivacySandboxManuallyControlled, false); -#if BUILDFLAG(IS_CHROMEOS_ASH) - registry->RegisterBooleanPref(kSyncInitialSyncFeatureSetupCompleteOnAsh, - false); -#endif -#if BUILDFLAG(IS_ANDROID) - registry->RegisterBooleanPref(kSettingsMigratedToUPM, false); -#endif - registry->RegisterBooleanPref(kSyncRequested, false); - // Deprecated 10/2023. -#if BUILDFLAG(IS_CHROMEOS_ASH) - registry->RegisterStringPref(kLastSuccessfulDomainPref, std::string()); - registry->RegisterBooleanPref(kShouldAttemptReenable, true); - registry->RegisterDoublePref(kAudioVolumePercent, 0); -#endif // BUILDFLAG(IS_CHROMEOS_ASH) - registry->RegisterTimePref(kDownloadLastCompleteTime, base::Time()); - -// Deprecated 10/2023. -#if BUILDFLAG(IS_CHROMEOS) - registry->RegisterDictionaryPref(kSupportedLinksAppPrefsKey); -#endif // BUILDFLAG(IS_CHROMEOS) - -// Deprecated 10/2023. -#if BUILDFLAG(IS_CHROMEOS_ASH) - registry->RegisterDoublePref(kNightLightCachedLatitude, 0.0); - registry->RegisterDoublePref(kNightLightCachedLongitude, 0.0); -#endif // BUILDFLAG(IS_CHROMEOS_ASH) - - // Deprecated 11/2023. - registry->RegisterBooleanPref(kPrivacySandboxAntiAbuseInitialized, false); - - // Deprecated 11/2023. - registry->RegisterBooleanPref(kWebRTCAllowLegacyTLSProtocols, false); - -// Deprecated 11/2023. -#if BUILDFLAG(IS_CHROMEOS_ASH) - registry->RegisterBooleanPref(kSystemTrayExpanded, true); -#endif // BUILDFLAG(IS_CHROMEOS_ASH) - -// Deprecated 11/2023. -#if BUILDFLAG(IS_CHROMEOS_ASH) - registry->RegisterBooleanPref(kUserGeolocationAllowed, true); -#endif // BUILDFLAG(IS_CHROMEOS_ASH) - - // Deprecated 11/2023. - registry->RegisterListPref(kPasswordChangeSuccessTrackerFlows); - registry->RegisterIntegerPref(kPasswordChangeSuccessTrackerVersion, 0); - - // Deprecated 11/2023. -#if BUILDFLAG(IS_CHROMEOS_ASH) - registry->RegisterDictionaryPref(kImageSearchPrivacyNotice); -#endif // BUILDFLAG(IS_CHROMEOS_ASH) - - // Deprecated 11/2023. - registry->RegisterBooleanPref(kWebAndAppActivityEnabledForShopping, true); + registry->RegisterBooleanPref(kSyncRequested, false); // Deprecated 12/2023. #if BUILDFLAG(IS_ANDROID) @@ -1604,7 +1532,42 @@ void RegisterProfilePrefsForMigration( #if BUILDFLAG(IS_CHROMEOS_ASH) // Deprecated 10/2024 registry->RegisterIntegerPref(kAccessibilityFaceGazeCursorSmoothing, 7); + + // Deprecated 10/2024 + registry->RegisterIntegerPref(kWallpaperSeaPenMigrationStatus, 0); #endif // BUILDFLAG(IS_CHROMEOS_ASH) + + // Deprecated 10/2024 + registry->RegisterBooleanPref(kLiveCaptionBubblePinned, false); + + // Deprecated 10/2024 + registry->RegisterBooleanPref(kDocumentSuggestEnabled, true); + + // Deprecated 10/2024 + registry->RegisterIntegerPref(kFirstTimeInterstitialBannerState, 0); + + // Deprecated 10/2024 + registry->RegisterBooleanPref(kSidePanelCompanionEntryPinnedToToolbar, false); + registry->RegisterIntegerPref(kMsbbPromoDeclinedCountPref, 0); + registry->RegisterIntegerPref(kSigninPromoDeclinedCountPref, 0); + registry->RegisterIntegerPref(kExpsPromoDeclinedCountPref, 0); + registry->RegisterIntegerPref(kExpsPromoShownCountPref, 0); + registry->RegisterIntegerPref(kPcoPromoShownCountPref, 0); + registry->RegisterIntegerPref(kPcoPromoDeclinedCountPref, 0); + registry->RegisterBooleanPref(kExpsOptInStatusGrantedPref, false); + registry->RegisterBooleanPref(kHasNavigatedToExpsSuccessPage, false); + +#if BUILDFLAG(IS_CHROMEOS) + // Deprecated 11/2024 + registry->RegisterBooleanPref(kNoteTakingAppEnabledOnLockScreen, false); + registry->RegisterListPref(kNoteTakingAppsLockScreenAllowlist, + base::Value::List()); + registry->RegisterDictionaryPref(kNoteTakingAppsLockScreenToastShown); + registry->RegisterBooleanPref(kRestoreLastLockScreenNote, false); +#endif + + // Deprecated 11/2024 + registry->RegisterStringPref(kPrefixedVideoFullscreenApiAvailability, ""); } void ClearSyncRequestedPrefAndMaybeMigrate(PrefService* profile_prefs) { @@ -1750,9 +1713,12 @@ void RegisterLocalState(PrefRegistrySimple* registry) { task_manager::TaskManagerInterface::RegisterPrefs(registry); UpgradeDetector::RegisterPrefs(registry); registry->RegisterIntegerPref(prefs::kLastWhatsNewVersion, 0); - on_device_translation::RegisterLocalStatePrefs(registry); #endif // BUILDFLAG(IS_ANDROID) +#if BUILDFLAG(ENABLE_ON_DEVICE_TRANSLATION) + on_device_translation::RegisterLocalStatePrefs(registry); +#endif // BUILDFLAG(ENABLE_ON_DEVICE_TRANSLATION) + #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) WhatsNewUI::RegisterLocalStatePrefs(registry); #endif @@ -1771,14 +1737,12 @@ void RegisterLocalState(PrefRegistrySimple* registry) { ash::ManagedCellularPrefHandler::RegisterLocalStatePrefs(registry); ash::ChromeSessionManager::RegisterPrefs(registry); user_manager::UserManagerImpl::RegisterPrefs(registry); - crosapi::browser_util::RegisterLocalStatePrefs(registry); ash::CupsPrintersManager::RegisterLocalStatePrefs(registry); ash::bluetooth_config::BluetoothPowerControllerImpl::RegisterLocalStatePrefs( registry); ash::bluetooth_config::DeviceNameManagerImpl::RegisterLocalStatePrefs( registry); - ash::DemoSession::RegisterLocalStatePrefs(registry); - ash::DemoSetupController::RegisterLocalStatePrefs(registry); + ash::demo_mode::RegisterLocalStatePrefs(registry); ash::DeviceNameStore::RegisterLocalStatePrefs(registry); ash::DozeModePowerStatusScheduler::RegisterLocalStatePrefs(registry); chromeos::DeviceOAuth2TokenStoreChromeOS::RegisterPrefs(registry); @@ -1808,7 +1772,6 @@ void RegisterLocalState(PrefRegistrySimple* registry) { ash::SchedulerConfigurationManager::RegisterLocalStatePrefs(registry); ash::SecureDnsManager::RegisterLocalStatePrefs(registry); ash::ServicesCustomizationDocument::RegisterPrefs(registry); - ash::standalone_browser::migrator_util::RegisterLocalStatePrefs(registry); ash::StartupUtils::RegisterPrefs(registry); ash::StatsReportingController::RegisterLocalStatePrefs(registry); ash::system::AutomaticRebootManager::RegisterPrefs(registry); @@ -1964,12 +1927,12 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, chrome_browser_net::NetErrorTabHelper::RegisterProfilePrefs(registry); chrome_prefs::RegisterProfilePrefs(registry); commerce::RegisterPrefs(registry); - DocumentProvider::RegisterProfilePrefs(registry); enterprise::RegisterIdentifiersProfilePrefs(registry); enterprise_connectors::RegisterProfilePrefs(registry); enterprise_reporting::RegisterProfilePrefs(registry); dom_distiller::DistilledPagePrefs::RegisterProfilePrefs(registry); DownloadPrefs::RegisterProfilePrefs(registry); + fingerprinting_protection_filter::prefs::RegisterProfilePrefs(registry); permissions::PermissionHatsTriggerHelper::RegisterProfilePrefs(registry); history_clusters::prefs::RegisterProfilePrefs(registry); HostContentSettingsMap::RegisterProfilePrefs(registry); @@ -2054,6 +2017,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, #if BUILDFLAG(ENABLE_EXTENSIONS_CORE) extensions::PermissionsManager::RegisterProfilePrefs(registry); extensions::ExtensionPrefs::RegisterProfilePrefs(registry); + extensions::RuntimeAPI::RegisterPrefs(registry); #endif // BUILDFLAG(ENABLE_EXTENSIONS_CORE) #if BUILDFLAG(ENABLE_EXTENSIONS) @@ -2065,7 +2029,6 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, #if BUILDFLAG(IS_CHROMEOS_ASH) extensions::shared_storage::RegisterProfilePrefs(registry); #endif // BUILDFLAG(IS_CHROMEOS_ASH) - extensions::RuntimeAPI::RegisterPrefs(registry); // TODO(devlin): This would be more inline with the other calls here if it // were nested in either a class or separate namespace with a simple // Register[Profile]Prefs() name. @@ -2108,12 +2071,11 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, #else // BUILDFLAG(IS_ANDROID) bookmarks_webui::RegisterProfilePrefs(registry); browser_sync::ForeignSessionHandler::RegisterProfilePrefs(registry); - BrowserFeaturePromoStorageService::RegisterProfilePrefs(registry); + BrowserUserEducationStorageService::RegisterProfilePrefs(registry); captions::LiveTranslateController::RegisterProfilePrefs(registry); CartService::RegisterProfilePrefs(registry); ChromeAuthenticatorRequestDelegate::RegisterProfilePrefs(registry); commerce::CommerceUiTabHelper::RegisterProfilePrefs(registry); - companion::PromoHandler::RegisterProfilePrefs(registry); DeviceServiceImpl::RegisterProfilePrefs(registry); DevToolsWindow::RegisterProfilePrefs(registry); DriveService::RegisterProfilePrefs(registry); @@ -2155,9 +2117,10 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, #endif // BUILDFLAG(IS_ANDROID) #if BUILDFLAG(IS_CHROMEOS) - extensions::DocumentScanAPIHandler::RegisterProfilePrefs(registry); + extensions::DocumentScanRegisterProfilePrefs(registry); extensions::login_api::RegisterProfilePrefs(registry); - extensions::platform_keys::RegisterProfilePrefs(registry); + extensions::platform_keys::EnterprisePlatformKeysRegisterProfilePrefs( + registry); certificate_manager::CertificatesHandler::RegisterProfilePrefs(registry); chromeos::cloud_storage::RegisterProfilePrefs(registry); chromeos::cloud_upload::RegisterProfilePrefs(registry); @@ -2247,7 +2210,6 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, crostini::prefs::RegisterProfilePrefs(registry); flags_ui::PrefServiceFlagsStorage::RegisterProfilePrefs(registry); guest_os::prefs::RegisterProfilePrefs(registry); - lock_screen_apps::StateController::RegisterProfilePrefs(registry); plugin_vm::prefs::RegisterProfilePrefs(registry); policy::ArcAppInstallEventLogger::RegisterProfilePrefs(registry); policy::AppInstallEventLogManagerWrapper::RegisterProfilePrefs(registry); @@ -2330,6 +2292,8 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, side_panel_prefs::RegisterProfilePrefs(registry); tabs::RegisterProfilePrefs(registry); + + CertificateManagerPageHandler::RegisterProfilePrefs(registry); #endif // !BUILDFLAG(IS_ANDROID) registry->RegisterBooleanPref(webauthn::pref_names::kAllowWithBrokenCerts, @@ -2425,18 +2389,7 @@ 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 09/2023. -#if BUILDFLAG(IS_WIN) - local_state->ClearPref(kSwReporter); - local_state->ClearPref(kChromeCleaner); -#endif - -// Added 09/2023. -#if BUILDFLAG(IS_CHROMEOS_ASH) - local_state->ClearPref(kGestureEducationNotificationShown); -#endif - -// Added 11/2023. + // Added 12/2023. #if BUILDFLAG(IS_CHROMEOS_ASH) local_state->ClearPref(kIsolatedWebAppsEnabled); #endif @@ -2520,6 +2473,15 @@ void MigrateObsoleteLocalStatePrefs(PrefService* local_state) { local_state->ClearPref(kMigrationStep); local_state->ClearPref(kMoveMigrationResumeStepPref); local_state->ClearPref(kMoveMigrationResumeCountPref); + local_state->ClearPref(kDataVerPref); + local_state->ClearPref(kMigrationAttemptCountPref); + local_state->ClearPref(kProfileMigrationCompletedForUserPref); + local_state->ClearPref(kProfileMoveMigrationCompletedForUserPref); + local_state->ClearPref(kProfileMigrationCompletedForNewUserPref); + local_state->ClearPref(kProfileDataBackwardMigrationCompletedForUserPref); + local_state->ClearPref(kGotoFilesPref); + local_state->ClearPref(kProfileMigrationCompletionTimeForUserPref); + local_state->ClearPref(kLacrosDataBackwardMigrationMode); #endif #if !BUILDFLAG(IS_ANDROID) @@ -2530,6 +2492,9 @@ void MigrateObsoleteLocalStatePrefs(PrefService* local_state) { // Added 10/2024. local_state->ClearPref(kBeforeunloadEventCancelByPreventDefaultEnabled); + // Added 11/2024 + local_state->ClearPref(kOnDeviceModelTimeoutCount); + // Please don't delete the following line. It is used by PRESUBMIT.py. // END_MIGRATE_OBSOLETE_LOCAL_STATE_PREFS @@ -2570,65 +2535,9 @@ void MigrateObsoleteProfilePrefs(PrefService* profile_prefs, MigrateDefaultBrowserLastDeclinedPref(profile_prefs); #endif - // Added 09/2023. - profile_prefs->ClearPref(kPrivacySandboxM1Unrestricted); -#if BUILDFLAG(IS_WIN) - profile_prefs->ClearPref(kSwReporter); - profile_prefs->ClearPref(kSettingsResetPrompt); - profile_prefs->ClearPref(kChromeCleaner); -#endif - profile_prefs->ClearPref(kDownloadBubbleEnabled); - profile_prefs->ClearPref(kPrivacySandboxManuallyControlled); -#if BUILDFLAG(IS_CHROMEOS_ASH) - profile_prefs->ClearPref(kSyncInitialSyncFeatureSetupCompleteOnAsh); -#endif -#if BUILDFLAG(IS_ANDROID) - profile_prefs->ClearPref(kSettingsMigratedToUPM); -#endif - // Added 10/2023. ClearSyncRequestedPrefAndMaybeMigrate(profile_prefs); -// Added 10/2023. -#if BUILDFLAG(IS_CHROMEOS_ASH) - profile_prefs->ClearPref(kLastSuccessfulDomainPref); - profile_prefs->ClearPref(kShouldAttemptReenable); - profile_prefs->ClearPref(kAudioVolumePercent); -#endif // BUILDFLAG(IS_CHROMEOS_ASH) - - // Added 10/2023. -#if BUILDFLAG(IS_CHROMEOS) - profile_prefs->ClearPref(kSupportedLinksAppPrefsKey); -#endif // BUILDFLAG(IS_CHROMEOS_ASH) - -#if BUILDFLAG(IS_CHROMEOS_ASH) - // Added 10/2023. - profile_prefs->ClearPref(kNightLightCachedLatitude); - profile_prefs->ClearPref(kNightLightCachedLongitude); -#endif // BUILDFLAG(IS_CHROMEOS_ASH) - - // Added 11/2023. - profile_prefs->ClearPref(kPrivacySandboxAntiAbuseInitialized); - - // Added 11/2023. - profile_prefs->ClearPref(kWebRTCAllowLegacyTLSProtocols); - -#if BUILDFLAG(IS_CHROMEOS_ASH) - // Added 11/2023. - profile_prefs->ClearPref(kSystemTrayExpanded); -#endif // BUILDFLAG(IS_CHROMEOS_ASH) - -#if BUILDFLAG(IS_CHROMEOS_ASH) - // Added 11/2023. - profile_prefs->ClearPref(kUserGeolocationAllowed); -#endif // BUILDFLAG(IS_CHROMEOS_ASH) - -#if !BUILDFLAG(IS_ANDROID) - // Added 11/2023. - password_manager::features_util::MigrateOptInPrefToSyncSelectedTypes( - profile_prefs); -#endif // !BUILDFLAG(IS_ANDROID) - #if BUILDFLAG(IS_ANDROID) // Added 11/2023, but DO NOT REMOVE after the usual year! // TODO(crbug.com/40268177): The pref kPasswordsUseUPMLocalAndSeparateStores @@ -2641,18 +2550,6 @@ void MigrateObsoleteProfilePrefs(PrefService* profile_prefs, profile_path); #endif - // Added 11/2023. - profile_prefs->ClearPref(kPasswordChangeSuccessTrackerFlows); - profile_prefs->ClearPref(kPasswordChangeSuccessTrackerVersion); - -#if BUILDFLAG(IS_CHROMEOS_ASH) - // Added 11/2023. - profile_prefs->ClearPref(kImageSearchPrivacyNotice); -#endif // BUILDFLAG(IS_CHROMEOS_ASH) - - // Added 11/2023. - profile_prefs->ClearPref(kWebAndAppActivityEnabledForShopping); - #if !BUILDFLAG(IS_ANDROID) // Added 12/2023. password_manager::features_util::MigrateDeclinedSaveOptInToExplicitOptOut( @@ -2965,8 +2862,42 @@ void MigrateObsoleteProfilePrefs(PrefService* profile_prefs, #if BUILDFLAG(IS_CHROMEOS_ASH) // Added 10/2024 profile_prefs->ClearPref(kAccessibilityFaceGazeCursorSmoothing); + + // Added 10/2024 + profile_prefs->ClearPref(kWallpaperSeaPenMigrationStatus); #endif // BUILDFLAG(IS_CHROMEOS_ASH) + // Added 10/2024 + profile_prefs->ClearPref(kLiveCaptionBubblePinned); + + // Added 10/2024 + profile_prefs->ClearPref(kDocumentSuggestEnabled); + + // Added 10/2024 + profile_prefs->ClearPref(kFirstTimeInterstitialBannerState); + + // Added 10/2024 + profile_prefs->ClearPref(kSidePanelCompanionEntryPinnedToToolbar); + profile_prefs->ClearPref(kMsbbPromoDeclinedCountPref); + profile_prefs->ClearPref(kSigninPromoDeclinedCountPref); + profile_prefs->ClearPref(kExpsPromoDeclinedCountPref); + profile_prefs->ClearPref(kExpsPromoShownCountPref); + profile_prefs->ClearPref(kPcoPromoShownCountPref); + profile_prefs->ClearPref(kPcoPromoDeclinedCountPref); + profile_prefs->ClearPref(kExpsOptInStatusGrantedPref); + profile_prefs->ClearPref(kHasNavigatedToExpsSuccessPage); + +#if BUILDFLAG(IS_CHROMEOS) + // Deprecated 11/2024 + profile_prefs->ClearPref(kNoteTakingAppEnabledOnLockScreen); + profile_prefs->ClearPref(kNoteTakingAppsLockScreenAllowlist); + profile_prefs->ClearPref(kNoteTakingAppsLockScreenToastShown); + profile_prefs->ClearPref(kRestoreLastLockScreenNote); +#endif + + // Added 11/2024 + profile_prefs->ClearPref(kPrefixedVideoFullscreenApiAvailability); + // 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 a1ddc3b63..6e28cc6a8 100755 --- a/tools/under-control/src/chrome/browser/ui/tab_helpers.cc +++ b/tools/under-control/src/chrome/browser/ui/tab_helpers.cc @@ -107,7 +107,6 @@ #include "chrome/browser/ui/tab_dialogs.h" #include "chrome/browser/ui/tab_ui_helper.h" #include "chrome/browser/ui/thumbnails/thumbnail_tab_helper.h" -#include "chrome/browser/ui/views/side_panel/companion/companion_utils.h" #include "chrome/browser/v8_compile_hints/v8_compile_hints_tab_helper.h" #include "chrome/browser/vr/vr_tab_helper.h" #include "chrome/common/buildflags.h" @@ -181,18 +180,20 @@ #include "chrome/browser/content_settings/request_desktop_site_web_contents_observer_android.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/fingerprinting_protection/chrome_fingerprinting_protection_web_contents_helper_factory.h" #include "chrome/browser/flags/android/chrome_feature_list.h" #include "chrome/browser/plugins/plugin_observer_android.h" +#include "chrome/browser/privacy_sandbox/tracking_protection_settings_factory.h" #include "chrome/browser/ui/android/context_menu_helper.h" #include "chrome/browser/ui/javascript_dialogs/javascript_tab_modal_dialog_manager_delegate_android.h" #include "components/facilitated_payments/core/features/features.h" +#include "components/fingerprinting_protection_filter/common/fingerprinting_protection_filter_features.h" #include "components/sensitive_content/android/android_sensitive_content_client.h" #include "components/sensitive_content/features.h" #include "components/webapps/browser/android/app_banner_manager_android.h" #include "content/public/common/content_features.h" #else #include "chrome/browser/banners/app_banner_manager_desktop.h" -#include "chrome/browser/companion/core/features.h" #include "chrome/browser/picture_in_picture/auto_picture_in_picture_tab_helper.h" #include "chrome/browser/preloading/prefetch/zero_suggest_prefetch/zero_suggest_prefetch_tab_helper.h" #include "chrome/browser/tab_contents/form_interaction_tab_helper.h" @@ -205,8 +206,6 @@ #include "chrome/browser/ui/sync/browser_synced_tab_delegate.h" #include "chrome/browser/ui/ui_features.h" #include "chrome/browser/ui/uma_browsing_activity_observer.h" -#include "chrome/browser/ui/views/side_panel/companion/companion_tab_helper.h" -#include "chrome/browser/ui/views/side_panel/companion/exps_registration_success_observer.h" #include "chrome/browser/ui/views/side_panel/history_clusters/history_clusters_tab_helper.h" #include "chrome/browser/ui/views/side_panel/read_anything/read_anything_side_panel_controller.h" #include "components/commerce/content/browser/hint/commerce_hint_tab_helper.h" @@ -216,11 +215,6 @@ #include "components/zoom/zoom_controller.h" #endif // BUILDFLAG(IS_ANDROID) -#if defined(TOOLKIT_VIEWS) -#include "chrome/browser/ui/side_search/side_search_tab_contents_helper.h" -#include "chrome/browser/ui/side_search/side_search_utils.h" -#endif - #if BUILDFLAG(IS_CHROMEOS_ASH) #include "chrome/browser/ash/boot_times_recorder/boot_times_recorder_tab_helper.h" #include "chrome/browser/ash/growth/campaigns_manager_session_tab_helper.h" @@ -233,8 +227,8 @@ #endif #if BUILDFLAG(IS_CHROMEOS) -#include "chrome/browser/chromeos/container_app/container_app_tab_helper.h" #include "chrome/browser/chromeos/cros_apps/cros_apps_tab_helper.h" +#include "chrome/browser/chromeos/gemini_app/gemini_app_tab_helper.h" #include "chrome/browser/chromeos/policy/dlp/dlp_content_tab_helper.h" #include "chrome/browser/chromeos/printing/print_preview/printing_init_cros.h" #endif @@ -260,10 +254,7 @@ #include "chrome/browser/extensions/navigation_extension_enabler.h" #include "chrome/browser/extensions/tab_helper.h" #include "chrome/browser/ui/extensions/extension_side_panel_utils.h" -#include "chrome/browser/ui/web_applications/web_app_metrics.h" -#include "chrome/browser/ui/web_applications/web_app_metrics_tab_helper.h" #include "chrome/browser/web_applications/policy/pre_redirection_url_observer.h" -#include "chrome/browser/web_applications/web_app_tab_helper.h" #include "chrome/browser/web_applications/web_app_utils.h" #include "extensions/browser/view_type_utils.h" // nogncheck #include "extensions/common/extension_features.h" @@ -356,11 +347,7 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) { Profile::FromBrowserContext(web_contents->GetBrowserContext()); // --- Section 1: Common tab helpers --- - if (page_info::IsAboutThisSiteAsyncFetchingEnabled() -#if defined(TOOLKIT_VIEWS) - || page_info::IsPersistentSidePanelEntryFeatureEnabled() -#endif - ) { + if (page_info::IsAboutThisSiteAsyncFetchingEnabled()) { if (auto* optimization_guide_decider = OptimizationGuideKeyedServiceFactory::GetForProfile(profile)) { AboutThisSiteTabHelper::CreateForWebContents(web_contents, @@ -381,6 +368,14 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) { sensitive_content::AndroidSensitiveContentClient::CreateForWebContents( web_contents, "SensitiveContent.Chrome."); } + + if (fingerprinting_protection_filter::features:: + IsFingerprintingProtectionFeatureEnabled()) { + CreateFingerprintingProtectionWebContentsHelper( + web_contents, profile->GetPrefs(), + TrackingProtectionSettingsFactory::GetForProfile(profile), + profile->IsIncognitoProfile()); + } #endif // BUILDFLAG(IS_ANDROID) if (breadcrumbs::IsEnabled(g_browser_process->local_state())) { BreadcrumbManagerTabHelper::CreateForWebContents(web_contents); @@ -483,7 +478,7 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) { } #endif // BUILDFLAG(IS_ANDROID) } - chrome::InitializePageLoadMetricsForWebContents(web_contents); + InitializePageLoadMetricsForWebContents(web_contents); if (auto* pm_registry = performance_manager::PerformanceManagerRegistry::GetInstance()) { pm_registry->SetPageType(web_contents, performance_manager::PageType::kTab); @@ -560,10 +555,6 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) { SupervisedUserNavigationObserver::CreateForWebContents(web_contents); } HttpErrorTabHelper::CreateForWebContents(web_contents); - sync_sessions::SyncSessionsRouterTabHelper::CreateForWebContents( - web_contents, - sync_sessions::SyncSessionsWebContentsRouterFactory::GetForProfile( - profile)); TabUIHelper::CreateForWebContents(web_contents); tasks::TaskTabHelper::CreateForWebContents(web_contents); tpcd::metadata::TpcdMetadataDevtoolsObserver::CreateForWebContents( @@ -663,8 +654,7 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) { base::FeatureList::IsEnabled(features::kWebUITabStrip)) { ThumbnailTabHelper::CreateForWebContents(web_contents); } - chrome::UMABrowsingActivityObserver::TabHelper::CreateForWebContents( - web_contents); + UMABrowsingActivityObserver::TabHelper::CreateForWebContents(web_contents); web_modal::WebContentsModalDialogManager::CreateForWebContents(web_contents); if (OmniboxFieldTrial::IsZeroSuggestPrefetchingEnabled()) { ZeroSuggestPrefetchTabHelper::CreateForWebContents(web_contents); @@ -672,15 +662,6 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) { if (commerce::isContextualConsentEnabled()) { commerce_hint::CommerceHintTabHelper::CreateForWebContents(web_contents); } - if (companion::IsCompanionFeatureEnabled()) { - companion::CompanionTabHelper::CreateForWebContents(web_contents); - } - if (base::FeatureList::IsEnabled( - companion::features::internal:: - kCompanionEnabledByObservingExpsNavigations)) { - companion::ExpsRegistrationSuccessObserver::CreateForWebContents( - web_contents); - } #endif // BUILDFLAG(IS_ANDROID) #if BUILDFLAG(ENABLE_COMPOSE) @@ -705,8 +686,8 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) { #endif #if BUILDFLAG(IS_CHROMEOS) - ContainerAppTabHelper::MaybeCreateForWebContents(web_contents); CrosAppsTabHelper::MaybeCreateForWebContents(web_contents); + GeminiAppTabHelper::MaybeCreateForWebContents(web_contents); mahi::MahiTabHelper::MaybeCreateForWebContents(web_contents); policy::DlpContentTabHelper::MaybeCreateForWebContents(web_contents); #endif @@ -748,12 +729,6 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) { FontPrewarmerTabHelper::CreateForWebContents(web_contents); #endif -#if defined(TOOLKIT_VIEWS) - if (IsSideSearchEnabled(profile)) { - SideSearchTabContentsHelper::CreateForWebContents(web_contents); - } -#endif - // --- Section 3: Feature tab helpers behind BUILDFLAGs --- // NOT for "if enabled"; put those in section 1. @@ -780,13 +755,6 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) { extensions::NavigationExtensionEnabler::CreateForWebContents(web_contents); extensions::WebNavigationTabObserver::CreateForWebContents(web_contents); - if (web_app::AreWebAppsEnabled(profile)) { - web_app::WebAppTabHelper::CreateForWebContents(web_contents); - } - // Note WebAppMetricsTabHelper must be created after AppBannerManager. - if (web_app::WebAppMetricsTabHelper::IsEnabled(web_contents)) { - web_app::WebAppMetricsTabHelper::CreateForWebContents(web_contents); - } #endif #if BUILDFLAG(ENABLE_OFFLINE_PAGES) diff --git a/tools/under-control/src/chrome/common/extensions/api/appview_tag.idl b/tools/under-control/src/chrome/common/extensions/api/appview_tag.idl index 18f00d138..faf48fdaa 100755 --- a/tools/under-control/src/chrome/common/extensions/api/appview_tag.idl +++ b/tools/under-control/src/chrome/common/extensions/api/appview_tag.idl @@ -4,9 +4,6 @@ // Use the appview tag to embed other Chrome Apps within your // Chrome App. (see Usage). -[documentation_title=" Tag", - documentation_namespace="", - documented_in="tags/appview"] namespace appviewTag { // This object specifies details and operations to perform on the embedding // request. The app to be embedded can make a decision on whether or not to 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 95d8ca0a7..09a44d75f 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 @@ -35,6 +35,9 @@ namespace autofillPrivate { NAME_MIDDLE_INITIAL, NAME_FULL, NAME_SUFFIX, + ALTERNATIVE_FULL_NAME, + ALTERNATIVE_GIVEN_NAME, + ALTERNATIVE_FAMILY_NAME, EMAIL_ADDRESS, PHONE_HOME_NUMBER, PHONE_HOME_CITY_CODE, @@ -388,7 +391,7 @@ namespace autofillPrivate { // Logs that the server cards edit link was clicked. static void logServerCardLinkClicked(); - // Logs that a serve IBAN's edit link was clicked. + // Logs that a server IBAN's edit link was clicked. static void logServerIbanLinkClicked(); // Enrolls a credit card into virtual cards. diff --git a/tools/under-control/src/chrome/common/extensions/api/file_manager_private.idl b/tools/under-control/src/chrome/common/extensions/api/file_manager_private.idl index 417d36398..f772316e5 100755 --- a/tools/under-control/src/chrome/common/extensions/api/file_manager_private.idl +++ b/tools/under-control/src/chrome/common/extensions/api/file_manager_private.idl @@ -2009,9 +2009,6 @@ interface Functions { // result of the onDriveConfirmDialog event. static void notifyDriveDialogResult(DriveDialogResult result); - // Opens a new browser tab and navigates to `url`. - static void openURL(DOMString url); - // Creates a new Files app window in the directory provided in `params`. [doesNotSupportPromises] static void openWindow(OpenWindowParams params, BooleanCallback callback); diff --git a/tools/under-control/src/chrome/common/extensions/api/odfs_config_private.idl b/tools/under-control/src/chrome/common/extensions/api/odfs_config_private.idl index 166ab9ff9..ee7072f32 100755 --- a/tools/under-control/src/chrome/common/extensions/api/odfs_config_private.idl +++ b/tools/under-control/src/chrome/common/extensions/api/odfs_config_private.idl @@ -26,6 +26,7 @@ namespace odfsConfigPrivate { callback GetAccountRestrictionsCallback = void( AccountRestrictionsInfo restrictions); callback ShowAutomatedMountErrorCallback = void(); + callback OpenInOfficeAppCallback = void(); callback BoolCallback = void(boolean result); interface Functions { @@ -50,6 +51,13 @@ namespace odfsConfigPrivate { // Returns whether the FileSystemProviderContentCache feature flag is // enabled. static void isContentCacheEnabled(BoolCallback callback); + + // Opens the tab inside the M365 PWA. This will not cause a new navigation + // but instead re-parent the tab to a new instance of the M365 PWA. It does + // nothing if the M365 PWA is not installed. + // + // |tabId| : Specifies the tab which should be opened in Office + static void openInOfficeApp(long tabId, OpenInOfficeAppCallback callback); }; interface Events { diff --git a/tools/under-control/src/chrome/common/extensions/api/printing_metrics.idl b/tools/under-control/src/chrome/common/extensions/api/printing_metrics.idl index 55cdc5a2c..e9a4d8a65 100755 --- a/tools/under-control/src/chrome/common/extensions/api/printing_metrics.idl +++ b/tools/under-control/src/chrome/common/extensions/api/printing_metrics.idl @@ -4,7 +4,7 @@ // Use the chrome.printingMetrics API to fetch data about // printing usage. -[platforms=("chromeos", "lacros"), +[platforms=("chromeos"), implemented_in="chrome/browser/chromeos/extensions/printing_metrics/printing_metrics_api.h"] namespace printingMetrics { // The source of the print job. diff --git a/tools/under-control/src/chrome/common/extensions/api/vpn_provider.idl b/tools/under-control/src/chrome/common/extensions/api/vpn_provider.idl index 95ad1eb04..4f7abdc79 100755 --- a/tools/under-control/src/chrome/common/extensions/api/vpn_provider.idl +++ b/tools/under-control/src/chrome/common/extensions/api/vpn_provider.idl @@ -4,7 +4,7 @@ // Use the chrome.vpnProvider API to implement a VPN // client. -[platforms=("chromeos", "lacros"), +[platforms=("chromeos"), implemented_in="chrome/browser/chromeos/extensions/vpn_provider/vpn_provider_api.h"] namespace vpnProvider { // A parameters class for the VPN interface. 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 cc8af23c1..a00e0e601 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 @@ -50,7 +50,6 @@ #include "chrome/grit/renderer_resources.h" #include "chrome/renderer/benchmarking_extension.h" #include "chrome/renderer/browser_exposed_renderer_interfaces.h" -#include "chrome/renderer/cart/commerce_hint_agent.h" #include "chrome/renderer/chrome_content_settings_agent_delegate.h" #include "chrome/renderer/chrome_render_frame_observer.h" #include "chrome/renderer/chrome_render_thread_observer.h" @@ -76,7 +75,6 @@ #include "components/autofill/content/renderer/password_generation_agent.h" #include "components/autofill/core/common/autofill_features.h" #include "components/commerce/content/renderer/commerce_web_extractor.h" -#include "components/commerce/core/commerce_feature_list.h" #include "components/content_capture/common/content_capture_features.h" #include "components/content_capture/renderer/content_capture_sender.h" #include "components/content_settings/core/common/content_settings_pattern.h" @@ -94,14 +92,15 @@ #include "components/fingerprinting_protection_filter/renderer/renderer_agent.h" #include "components/fingerprinting_protection_filter/renderer/unverified_ruleset_dealer.h" #include "components/grit/components_scaled_resources.h" +#include "components/guest_view/buildflags/buildflags.h" #include "components/heap_profiling/in_process/heap_profiler_controller.h" #include "components/history_clusters/core/config.h" #include "components/metrics/call_stacks/call_stack_profile_builder.h" #include "components/network_hints/renderer/web_prescient_networking_impl.h" #include "components/no_state_prefetch/renderer/no_state_prefetch_client.h" #include "components/no_state_prefetch/renderer/no_state_prefetch_helper.h" +#include "components/no_state_prefetch/renderer/no_state_prefetch_render_frame_observer.h" #include "components/no_state_prefetch/renderer/no_state_prefetch_utils.h" -#include "components/no_state_prefetch/renderer/prerender_render_frame_observer.h" #include "components/optimization_guide/core/optimization_guide_features.h" #include "components/page_content_annotations/core/page_content_annotations_features.h" #include "components/page_load_metrics/renderer/metrics_render_frame_observer.h" @@ -303,8 +302,6 @@ using SecureContextRequired = autofill::AutofillAgent::SecureContextRequired; using UserGestureRequired = autofill::AutofillAgent::UserGestureRequired; using UsesKeyboardAccessoryForSuggestions = autofill::AutofillAgent::UsesKeyboardAccessoryForSuggestions; -using EnableHeavyFormDataScraping = - autofill::PasswordAutofillAgent::EnableHeavyFormDataScraping; namespace { @@ -610,7 +607,7 @@ void ChromeContentRendererClient::RenderFrameCreated( new ChromeRenderFrameObserver(render_frame, web_cache_impl_.get()); service_manager::BinderRegistry* registry = render_frame_observer->registry(); - new prerender::PrerenderRenderFrameObserver(render_frame); + new prerender::NoStatePrefetchRenderFrameObserver(render_frame); auto content_settings_delegate = std::make_unique(render_frame); @@ -709,10 +706,7 @@ void ChromeContentRendererClient::RenderFrameCreated( if (!render_frame->IsInFencedFrameTree() || base::FeatureList::IsEnabled(blink::features::kFencedFramesAPIChanges)) { auto password_autofill_agent = std::make_unique( - render_frame, associated_interfaces, - EnableHeavyFormDataScraping( - chrome::GetChannel() == version_info::Channel::CANARY || - chrome::GetChannel() == version_info::Channel::DEV)); + render_frame, associated_interfaces); auto password_generation_agent = std::make_unique( render_frame, password_autofill_agent.get(), associated_interfaces); new AutofillAgent( @@ -775,18 +769,6 @@ void ChromeContentRendererClient::RenderFrameCreated( } #endif -// We should create CommerceHintAgent only for a main frame except a fenced -// frame that is the main frame as well, so we should check if |render_frame| -// is the fenced frame. -#if !BUILDFLAG(IS_ANDROID) - if (command_line->HasSwitch(commerce::switches::kEnableChromeCart) && -#else - if (base::FeatureList::IsEnabled(commerce::kCommerceHintAndroid) && -#endif // !BUILDFLAG(IS_ANDROID) - render_frame->GetWebFrame()->IsOutermostMainFrame()) { - new cart::CommerceHintAgent(render_frame); - } - #if BUILDFLAG(ENABLE_SPELLCHECK) new SpellCheckProvider(render_frame, spellcheck_.get()); @@ -1063,8 +1045,7 @@ WebPlugin* ChromeContentRendererClient::CreatePlugin( }; switch (status) { case chrome::mojom::PluginStatus::kNotFound: { - NOTREACHED_IN_MIGRATION(); - break; + NOTREACHED(); } case chrome::mojom::PluginStatus::kAllowed: case chrome::mojom::PluginStatus::kPlayImportantContent: { @@ -1113,7 +1094,7 @@ WebPlugin* ChromeContentRendererClient::CreatePlugin( is_module_allowed = has_enable_nacl_switch || (is_pnacl_mime_type && - blink::WebOriginTrials::isTrialEnabled(&document, "PNaCl")); + blink::WebOriginTrials::IsPNaClEnabled(&document)); } } if (!is_module_allowed) { @@ -1170,7 +1151,8 @@ WebPlugin* ChromeContentRendererClient::CreatePlugin( render_frame, params, info, identifier, group_name, IDR_BLOCKED_PLUGIN_HTML, l10n_util::GetStringFUTF16(IDS_PLUGIN_BLOCKED, group_name)); - placeholder->set_blocked_for_prerendering(is_no_state_prefetching); + placeholder->set_blocked_for_no_state_prefetching( + is_no_state_prefetching); placeholder->AllowLoading(); break; } @@ -1371,9 +1353,8 @@ void ChromeContentRendererClient::ReportNaClAppType( } } else { // We found an extension that is not covered by any metric - NOTREACHED_IN_MIGRATION() - << "Invalid NaCl usage in extension. Extension name: " - << extension->name() << ", type: " << extension->GetType(); + NOTREACHED() << "Invalid NaCl usage in extension. Extension name: " + << extension->name() << ", type: " << extension->GetType(); } } diff --git a/tools/under-control/src/components/policy/resources/templates/policies.yaml b/tools/under-control/src/components/policy/resources/templates/policies.yaml index 2286645f1..3a365cfc0 100755 --- a/tools/under-control/src/components/policy/resources/templates/policies.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policies.yaml @@ -1305,10 +1305,16 @@ policies: 1304: DirectSocketsPrivateNetworkAccessAllowedForUrls 1305: DirectSocketsPrivateNetworkAccessBlockedForUrls 1306: SelectParserRelaxationEnabled - 1307: '' - 1308: '' - 1309: '' + 1307: ClassManagementEnabled + 1308: EnterpriseSearchAggregatorSettings + 1309: TranslatorAPIAllowed 1310: WebAudioOutputBufferingEnabled + 1311: NTPOutlookCardVisible + 1312: NTPSharepointCardVisible + 1313: SharedWorkerBlobURLFixEnabled + 1314: DeviceNativeClientForceAllowed + 1315: GenAiLensOverlaySettings + 1316: PasswordManagerPasskeysEnabled atomic_groups: 1: Homepage diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Arc/ArcGoogleLocationServicesEnabled.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Arc/ArcGoogleLocationServicesEnabled.yaml index d4f7d97fe..051c3dc6c 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Arc/ArcGoogleLocationServicesEnabled.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Arc/ArcGoogleLocationServicesEnabled.yaml @@ -1,13 +1,10 @@ caption: Control Android Google location services -deprecated: true default: 0 default_for_enterprise_users: 0 desc: |- - Warning! This policy is deprecated, please use GoogleLocationServicesEnabled instead. $2Google ChromeOS now has a system location toggle, which governs the entire system including Android. The Android toggle is now read-only and reflects the $2Google ChromeOS location state. - Unless the DefaultGeolocationSetting policy is set to BlockGeolocation, then setting GoogleLocationServicesEnabled turns Google location services on during initial setup. Setting the policy to GoogleLocationServicesDisabled or leaving it unset keeps location services off during setup. - Setting policy to GoogleLocationServicesUnderUserControl prompts users about whether or not to use Google location services. If they turn it on, Android apps, $2Google ChromeOS apps, websites, and system services use the services to search the device location and send anonymous location data to Google. + Setting policy to BackupAndRestoreUnderUserControl prompts users about whether or not to use Google location services. If they turn it on, Android apps use the services to search the device location and send anonymous location data to Google. After initial setup, users can turn Google location services on or off. example_value: 1 diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Arc/ArcOpenLinksInBrowserByDefault.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Arc/ArcOpenLinksInBrowserByDefault.yaml index 21045cea9..dbe2cc7c5 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Arc/ArcOpenLinksInBrowserByDefault.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Arc/ArcOpenLinksInBrowserByDefault.yaml @@ -2,9 +2,8 @@ caption: Open links in Chrome browser by default desc: |- Setting the policy to False allows Android apps to capture supported links by default. Setting the policy to True make all links open in Chrome browser by default. - If the policy is not set, Android apps capture supported links by default. -default: true -default_for_enterprise_users: false + If the policy is not set, links are opened by default in Android apps for managed users and in the browser for consumers. +default: false example_value: true features: dynamic_refresh: false @@ -19,7 +18,7 @@ owners: - ovn@google.com schema: type: boolean -future_on: -- chrome_os +supported_on: +- chrome_os:132- tags: [] type: main diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Boca/.group.details.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Boca/.group.details.yaml new file mode 100755 index 000000000..63f95aa06 --- /dev/null +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Boca/.group.details.yaml @@ -0,0 +1,2 @@ +caption: Class management tools Settings +desc: Controls settings for class management tools. diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Boca/ClassManagementEnabled.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Boca/ClassManagementEnabled.yaml new file mode 100755 index 000000000..60e68d46a --- /dev/null +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Boca/ClassManagementEnabled.yaml @@ -0,0 +1,31 @@ +caption: Configure Class management tools +default: disabled +desc: |- + Setting the policy specifies whether users use class management tools for sending/receiving content, sending/receiving caption as students, teachers, or if class management tools is disabled for users. +example_value: disabled +features: + dynamic_refresh: true + per_profile: true +items: +- caption: Users are not able to use any of the class management features or be added to a class management session. + name: disabled + value: disabled +- caption: Users will be able to join and be added to a class management session. Teachers will be able to send content to these users. + name: students + value: students +- caption: Users will be able to connect and deploy content to students. This includes sending web content and making live captions/translations of the teacher’s voice available to the students. + name: teachers + value: teachers +owners: +- cros-edu-eng@google.com +- aprilzhou@google.com +schema: + enum: + - disabled + - student + - teacher + type: string +supported_on: +- chrome_os:132- +tags: [] +type: string-enum diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/CertificateManagement/CACertificateManagementAllowed.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/CertificateManagement/CACertificateManagementAllowed.yaml index 6a07e225f..77f85772f 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/CertificateManagement/CACertificateManagementAllowed.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/CertificateManagement/CACertificateManagementAllowed.yaml @@ -20,8 +20,11 @@ items: name: None value: 2 owners: -- file://components/policy/OWNERS -- poromov@chromium.org +- dadrian@chromium.org +- davidben@chromium.org +- hchao@chromium.org +- mattm@chromium.org +- chrome-secure-web-and-net@chromium.org schema: enum: - 0 @@ -30,5 +33,6 @@ schema: type: integer supported_on: - chrome_os:78- +- chrome.*:132- tags: [] type: int-enum diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/CertificateManagement/CACertificates.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/CertificateManagement/CACertificates.yaml index 2eb6b7af6..bf29adee5 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/CertificateManagement/CACertificates.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/CertificateManagement/CACertificates.yaml @@ -18,11 +18,9 @@ schema: items: type: string type: array -future_on: -- chrome.linux -- chrome.mac -- chrome.win -- android -- chrome_os +supported_on: +- chrome_os:132- +- chrome.*:132- +- android:132- tags: [] type: list diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/CertificateManagement/CACertificatesWithConstraints.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/CertificateManagement/CACertificatesWithConstraints.yaml index 0ba9c160d..d7139a2c6 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/CertificateManagement/CACertificatesWithConstraints.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/CertificateManagement/CACertificatesWithConstraints.yaml @@ -37,11 +37,9 @@ schema: type: array items: type: string -future_on: -- chrome.linux -- chrome.mac -- chrome.win -- android -- chrome_os +supported_on: +- chrome_os:132- +- chrome.*:132- +- android:132- tags: [] type: dict diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/CertificateManagement/CADistrustedCertificates.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/CertificateManagement/CADistrustedCertificates.yaml index 8cc89b8f7..6f25b7a80 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/CertificateManagement/CADistrustedCertificates.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/CertificateManagement/CADistrustedCertificates.yaml @@ -22,11 +22,9 @@ schema: items: type: string type: array -future_on: -- chrome.linux -- chrome.mac -- chrome.win -- android -- chrome_os +supported_on: +- chrome_os:132- +- chrome.*:132- +- android:132- tags: [] type: list diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/CertificateManagement/CAHintCertificates.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/CertificateManagement/CAHintCertificates.yaml index 7208a4268..c42cdf4df 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/CertificateManagement/CAHintCertificates.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/CertificateManagement/CAHintCertificates.yaml @@ -18,11 +18,9 @@ schema: items: type: string type: array -future_on: -- chrome.linux -- chrome.mac -- chrome.win -- android -- chrome_os +supported_on: +- chrome_os:132- +- chrome.*:132- +- android:132- tags: [] type: list diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/CertificateManagement/RequiredClientCertificateForDevice.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/CertificateManagement/RequiredClientCertificateForDevice.yaml index 97bc8bda8..88797c70b 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/CertificateManagement/RequiredClientCertificateForDevice.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/CertificateManagement/RequiredClientCertificateForDevice.yaml @@ -1,6 +1,9 @@ caption: Required device-wide Client Certificates -desc: Specifies device-wide client certificates that should be enrolled using the +desc: |- + Specifies device-wide client certificates that should be enrolled using the device management protocol. + + The EC key algorithm option is supported since $2Google ChromeOS version 132. device_only: true example_value: - cert_profile_id: cert_profile_id_1 @@ -29,9 +32,10 @@ schema: (optional, default: True).' type: boolean key_algorithm: - description: The algorithm for key pair generation. + description: The algorithm for key pair generation. The EC option is supported since version 132. enum: - rsa + - ec type: string name: description: The name of the certificate profile. diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/CertificateManagement/RequiredClientCertificateForUser.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/CertificateManagement/RequiredClientCertificateForUser.yaml index 8462ecb10..7597f66cc 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/CertificateManagement/RequiredClientCertificateForUser.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/CertificateManagement/RequiredClientCertificateForUser.yaml @@ -1,6 +1,9 @@ caption: Required Client Certificates -desc: Specifies client certificates that should be enrolled using the device management +desc: |- + Specifies client certificates that should be enrolled using the device management protocol. + + The EC key algorithm option is supported since $2Google ChromeOS version 132. device_only: false example_value: - cert_profile_id: cert_profile_id_1 @@ -29,9 +32,10 @@ schema: (optional, default: True).' type: boolean key_algorithm: - description: The algorithm for key pair generation. + description: The algorithm for key pair generation. The EC option is supported since version 132. enum: - rsa + - ec type: string name: description: The name of the certificate profile. diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/LegacySameSiteCookieBehaviorEnabledForDomainList.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/LegacySameSiteCookieBehaviorEnabledForDomainList.yaml index e6b0d0419..d140abb2f 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/LegacySameSiteCookieBehaviorEnabledForDomainList.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/LegacySameSiteCookieBehaviorEnabledForDomainList.yaml @@ -24,8 +24,9 @@ schema: type: string type: array supported_on: -- chrome.*:79- -- chrome_os:79- -- android:79- +# TODO(crbug.com/376084059): Clean up policy and supporting code +- chrome.*:79-131 +- chrome_os:79-131 +- android:79-131 tags: [] type: list diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Edu/ContentTransferEnablementStatus.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Edu/ContentTransferEnablementStatus.yaml index d04ed6554..fb0cb1a97 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Edu/ContentTransferEnablementStatus.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Edu/ContentTransferEnablementStatus.yaml @@ -62,7 +62,7 @@ schema: type: integer type: object type: object -future_on: -- chrome_os +supported_on: +- chrome_os:132- tags: [] type: dict diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Extensions/ExtensionInstallForcelist.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Extensions/ExtensionInstallForcelist.yaml index aa28d044a..aaf96b0b8 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Extensions/ExtensionInstallForcelist.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Extensions/ExtensionInstallForcelist.yaml @@ -2,7 +2,9 @@ arc_support: Android apps can be force-installed from the Google Admin console u Google Play. They do not use this policy. caption: Configure the list of force-installed apps and extensions desc: |- - Setting the policy specifies a list of apps and extensions that install silently, without user interaction, and which users can't uninstall or turn off. Permissions are granted implicitly, including for the enterprise.deviceAttributes and enterprise.platformKeys extension APIs. (These 2 APIs aren't available to apps and extensions that aren't force-installed.) + Setting the policy specifies a list of apps and extensions that install silently, without user interaction, and which users can't uninstall or turn off through the $1Google Chrome interface. Permissions are granted implicitly, including for the enterprise.deviceAttributes and enterprise.platformKeys extension APIs. (These 2 APIs aren't available to apps and extensions that aren't force-installed.) + + Although $1Google Chrome aims to prevent users from uninstalling these extensions, some operating systems make it impossible for $1Google Chrome to defend robustly against extensions being modified externally, so this prevention is best efforts. Leaving the policy unset means no apps or extensions are autoinstalled, and users can uninstall any app or extension in $1Google Chrome. diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/GenerativeAI/GenAiLensOverlaySettings.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/GenerativeAI/GenAiLensOverlaySettings.yaml new file mode 100755 index 000000000..017c24df1 --- /dev/null +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/GenerativeAI/GenAiLensOverlaySettings.yaml @@ -0,0 +1,44 @@ +caption: Settings for the Lens Overlay feature + +desc: |- + Lens Overlay lets users issue Google searches by interacting with a screenshot of the current page laid over the actual web contents. Additionally, lets users issue Google searches that are contextually aware of the current page. To provide contextual answers, the Lens Overlay send page content to Google to answer the user's query with the context of the page the user is on. + + There is no user setting to control this feature, it is generally made available to all users with Google as their default search engine unless disabled by this policy. + + 0 = Enable the feature for users, and send relevant data to Google to help train or improve AI models. Relevant data may include prompts, inputs, outputs, and source materials, depending on the feature. It may be reviewed by humans for the sole purpose of improving AI models. 0 is the default value, except when noted below. + + 1 = Enable the feature for users, but do not send data to Google to train or improve AI models. 1 is the default value for Enterprise users managed by Google Admin console and for Education accounts managed by Google Workspace. + + 2 = Disable the feature. + +default: 0 +example_value: 2 +features: + dynamic_refresh: true + per_profile: true +items: +- caption: Allow Lens Overlay and improve AI models. + name: Allowed + value: 0 +- caption: Allow Lens Overlay without improving AI models. + name: AllowedWithoutLogging + value: 1 +- caption: Do not allow Lens Overlay. + name: Disabled + value: 2 +owners: +- mercerd@google.com +- stanfield@google.com +- file://components/lens/OWNERS +schema: + enum: + - 0 + - 1 + - 2 + type: integer +tags: +- google-sharing +future_on: +- chrome.* +- chrome_os +type: int-enum diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/DeviceLoginScreenGeolocationAccessLevel.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/DeviceLoginScreenGeolocationAccessLevel.yaml index 26b727fa8..288c73d2a 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/DeviceLoginScreenGeolocationAccessLevel.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/DeviceLoginScreenGeolocationAccessLevel.yaml @@ -25,6 +25,7 @@ desc: |- resolution on the Log-in screen. device_only: true features: + internal_only: true dynamic_refresh: true per_profile: false supported_on: diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/DeviceNativeClientForceAllowed.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/DeviceNativeClientForceAllowed.yaml new file mode 100755 index 000000000..b0f6f04ed --- /dev/null +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/DeviceNativeClientForceAllowed.yaml @@ -0,0 +1,24 @@ +caption: Forces Native Client (NaCl) to be allowed to run on $2Google ChromeOS. +default: true +desc: |- + Setting the policy to True allows Native Client to continue to run even if the default behavior is that Native Client is disabled. + Setting the policy to False or leaving it unset will use the default behavior. +device_only: true +example_value: true +features: + dynamic_refresh: false + per_profile: false +items: +- caption: Allow Native Client to Run + value: true +- caption: Use Default Behavior + value: false +owners: +- fabiansommer@chromium.org +- file://ATL_OWNERS +schema: + type: boolean +supported_on: +- chrome_os:132- +tags: [] +type: main diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/DeviceRestrictionSchedule.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/DeviceRestrictionSchedule.yaml index c5a6dc154..1d0ea225c 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/DeviceRestrictionSchedule.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/DeviceRestrictionSchedule.yaml @@ -27,7 +27,7 @@ schema: items: $ref: WeeklyTimeIntervalChecked type: array -future_on: -- chrome_os +supported_on: +- chrome_os:132- tags: [] type: dict diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/DownloadRestrictions.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/DownloadRestrictions.yaml index c08dfd786..cb6ac925d 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/DownloadRestrictions.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/DownloadRestrictions.yaml @@ -28,6 +28,7 @@ features: per_profile: true future_on: - fuchsia +- ios items: - caption: No special restrictions. Default. name: DefaultDownloadSecurity diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/EnterpriseSearchAggregatorSettings.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/EnterpriseSearchAggregatorSettings.yaml new file mode 100755 index 000000000..e06b32faf --- /dev/null +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/EnterpriseSearchAggregatorSettings.yaml @@ -0,0 +1,56 @@ +caption: Enterprise search aggregator settings +desc: |- + This policy allows administrators to set a designated enterprise search aggregator that will provide search recommendations and results within the address bar when triggered by a specific keyword. Users can initiate a search by typing the keyword specified in the shortcut field with or without the @ prefix (e.g. @work), followed by Space or Tab, in the address bar. + + The following fields are required: name, shortcut, search_url, suggest_url. + + The name field corresponds to the search engine name shown to the user in the address bar. + + The shortcut field corresponds to the keyword that the user enters to trigger the search. The shortcut can include plain words and characters, but cannot include spaces or start with the @ symbol. Shortcuts must be unique. + + The search_url field specifies the URL on which to search. Enter the web address for the search engine's results page, and use '{searchTerms}' in place of the query. + + The suggest_url field specifies the URL that provides search suggestions. If suggest_url contains '{searchTerms}', then Chrome will obtain search suggestions by a GET request to the URL replacing '{searchTerms}' with the user's search query. Otherwise, a POST request will be made, the the user's query will be passed in the POST params under key 'query'. + + The icon_url field specifies the URL to an image that will be used on the search suggestions. A default icon will be used when this field is not set. It's recommended to use a favicon (example https://www.google.com/favicon.ico). + + On Microsoft® Windows®, this policy is only available on instances that are joined to a Microsoft® Active Directory® domain, joined to Microsoft® Azure® Active Directory® or enrolled in Chrome Browser Cloud Management. + + On macOS, this policy is only available on instances that are managed via MDM, joined to a domain via MCX or enrolled in Chrome Browser Cloud Management. + +example_value: + name: My Search Aggregator + shortcut: work + search_url: https://www.aggregator.com/search?q=site%3Awikipedia.com+{searchTerms} + suggest_url: https://www.aggregator.com/suggest?q={searchTerms} + icon_url: https://www.google.com/favicon.ico +features: + dynamic_refresh: true + per_profile: true +owners: +- ftirelo@chromium.org +- jdonnelly@chromium.org +- mahmadi@chromium.org +schema: + type: object + properties: + name: + type: string + shortcut: + type: string + search_url: + type: string + suggest_url: + type: string + icon_url: + type: string + required: + - name + - shortcut + - suggest_url + - search_url +future_on: +- chrome.* +- chrome_os +tags: [] +type: dict diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/IsolatedWebAppInstallForceList.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/IsolatedWebAppInstallForceList.yaml index 22fe5760f..81dbc874e 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/IsolatedWebAppInstallForceList.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/IsolatedWebAppInstallForceList.yaml @@ -4,11 +4,16 @@ desc: |- IWAs are applications that have useful security properties unavailable to normal web pages. They are packaged in a Signed Web Bundle. The public key of the Signed Web Bundle is used to create the Web Bundle ID that identifies the IWA. So far this policy works for Managed Guest Session only. - Each list item of the policy is an object which has two mandatory fields: the update manifest URL and Web Bundle ID of the Isolated Web App. Each item can also have an optional field with the IWA release channel name. If the "update_channel" is not set, then the value of "default" will be used. + Each list item of the policy is an object which has two mandatory fields: the update manifest URL and Web Bundle ID of the Isolated Web App. + + Each item can also have optional fields: an IWA release/update channel name (update_channel) and a specific version to pin (pinned_version). + If the "update_channel" is not set, then the value of "default" will be used. When the pinned_version is specified, the system will attempt to install that specific version (if available on the current update channel). + By default, version pinning does not allow going back to older versions. Pinning an IWA to a specific version prevents it from being updated beyond that version. To unpin, remove this field. example_value: - update_manifest_url: https://example.com/isolated_web_app/update_manifest.json web_bundle_id: aerugqztij5biqquuk3mfwpsaibuegaqcitgfchwuosuofdjabzqaaic update_channel: beta + pinned_version: 1.2.3 features: dynamic_refresh: true per_profile: true @@ -31,6 +36,13 @@ schema: The name of the IWA's update/release channel. This value can be any string; no restrictions are imposed. If no value is provided, the "default" channel will be used. + pinned_version: + type: string + description: >- + Specifies the desired version of the IWA. If provided, the system will attempt to install this specific version and subsequently block any further updates. + To unpin the app and enable updates again, remove this field. + **Important:** If the provided version does not exist, the IWA will get stuck on the currently installed version. + This is because after trying (and it this case failing) to update to pinned version, pinning disables any further automatic updates. required: - update_manifest_url - web_bundle_id diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/LacrosDataBackwardMigrationMode.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/LacrosDataBackwardMigrationMode.yaml index 00c8da307..d901a82b2 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/LacrosDataBackwardMigrationMode.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/LacrosDataBackwardMigrationMode.yaml @@ -44,6 +44,7 @@ schema: - keep_all type: string supported_on: -- chrome_os:110- +- chrome_os:110-130 tags: [] type: string-enum +deprecated: true diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/MutationEventsEnabled.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/MutationEventsEnabled.yaml index fa239cf0f..c04e86040 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/MutationEventsEnabled.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/MutationEventsEnabled.yaml @@ -1,4 +1,5 @@ caption: Re-enable deprecated/removed Mutation Events +deprecated: true default: false desc: |- This policy provides a temporary opt-back-in to a deprecated and removed set of platform events called Mutation Events. diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/NTPOutlookCardVisible.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/NTPOutlookCardVisible.yaml new file mode 100755 index 000000000..4c5e59a3b --- /dev/null +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/NTPOutlookCardVisible.yaml @@ -0,0 +1,31 @@ +caption: Show Outlook Calendar card on the New Tab Page +default: false +desc: |- # TODO(crbug.com/376287682): insert HC article link + This policy controls the visibility of the Outlook Card on the New Tab Page. The card will only be displayed on the New Tab Page if the policy is enabled and your organization authorized the usage of the Outlook Calendar data in the browser. + + The Outlook card shows the next calendar event, along with a glanceable look at the rest of the day's meetings. It aims to address the issue of context switching and enhance productivity by giving users a shortcut to their next meeting. + + The Microsoft Outlook card will require additional admin configuration. For detailed information on connecting the Chrome New Tab Page Card to Outlook, please see help article. + + If the NTPCardsVisible is disabled, the Outlook Card will not be shown. If NTPCardsVisible is enabled, the Outlook card will be shown if this policy is also enabled and there is data to be shown. If NTPCardsVisible is unset, the Outlook card will be shown if this policy is also enabled, the user has the card enabled in Customize Chrome, and there is data to be shown. +example_value: false +features: + dynamic_refresh: true + per_profile: true +future_on: +- chrome.* +- chrome_os +items: +- caption: Enable NTP Outlook Calendar Card + value: true +- caption: Disable NTP Outlook Calendar Card + value: false +owners: +- rtatum@google.com +- tiborg@chromium.org +- danpeng@google.com +- ftirelo@chromium.org +schema: + type: boolean +tags: [] +type: main diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/NTPSharepointCardVisible.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/NTPSharepointCardVisible.yaml new file mode 100755 index 000000000..cf303a270 --- /dev/null +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/NTPSharepointCardVisible.yaml @@ -0,0 +1,31 @@ +caption: Show Sharepoint File Card on the New Tab Page +default: false +desc: |- # TODO(crbug.com/376287682): insert HC article link + This policy controls the visibility of the Sharepoint File Card on the New Tab Page. The card will only be displayed on the New Tab Page if the policy is enabled and your organization authorized the usage of the Sharepoint File data in the browser. + + The Sharepoint Files recommendation card shows a list of recommended files. It aims to address the issue of context switching and enhance productivity by giving users a shortcut to their most important documents. + + The Microsoft Sharepoint card will require additional admin configuration. For detailed information on connecting the Chrome New Tab Page Card to Sharepoint, please see help article. + + If the NTPCardsVisible is disabled, the Sharepoint Card will not be shown. If NTPCardsVisible is enabled, the Sharepoint card will be shown if this policy is also enabled and there is data to be shown. If NTPCardsVisible is unset, the Sharepoint card will be shown if this policy is also enabled, the user has the card enabled in Customize Chrome, and there is data to be shown. +example_value: false +features: + dynamic_refresh: true + per_profile: true +future_on: +- chrome.* +- chrome_os +items: +- caption: Enable NTP Sharepoint File Card + value: true +- caption: Disable NTP Sharepoint File Card + value: false +owners: +- rtatum@google.com +- tiborg@chromium.org +- danpeng@google.com +- ftirelo@chromium.org +schema: + type: boolean +tags: [] +type: main diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/NativeClientForceAllowed.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/NativeClientForceAllowed.yaml index 114816d82..78a716acf 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/NativeClientForceAllowed.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/NativeClientForceAllowed.yaml @@ -1,6 +1,7 @@ caption: Forces Native Client (NaCl) to be allowed to run. default: false default_for_enterprise_users: false +deprecated: true desc: |- Setting the policy to True allows Native Client to continue to run even if the default behavior is that Native Client is disabled. Setting the policy to False will use the default behavior. @@ -19,7 +20,7 @@ owners: schema: type: boolean supported_on: -- chrome_os:116- +- chrome_os:116-131 - chrome.*:116-119 tags: [] type: main diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/OnSecurityEventEnterpriseConnector.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/OnSecurityEventEnterpriseConnector.yaml index 5f41b7608..cb8ac5131 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/OnSecurityEventEnterpriseConnector.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/OnSecurityEventEnterpriseConnector.yaml @@ -51,6 +51,9 @@ schema: type: string type: object type: array +future_on: +- android +- ios supported_on: - chrome.*:84- - chrome_os:84- diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/PrefixedVideoFullscreenApiAvailability.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/PrefixedVideoFullscreenApiAvailability.yaml index f08edf135..c4cc8d663 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/PrefixedVideoFullscreenApiAvailability.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/PrefixedVideoFullscreenApiAvailability.yaml @@ -5,6 +5,8 @@ owners: caption: Manage the deprecated prefixed video fullscreen API's availability desc: |- + Starting in M132, this policy will be removed, along with the prefixed video-specific fullscreen APIs. + Setting the policy to enabled will allow the prefixed video-specific fullscreen APIs (e.g. Video.webkitEnterFullscreen()) to be used from Javascript. Setting the policy to disabled will prevent the prefixed video-specific fullscreen APIs from being used in Javascript, leaving only the standard fullscreen APIs (e.g. Element.requestFullscreen()). @@ -13,16 +15,15 @@ desc: |- If the policy is unset, the behavior defaults to runtime-enabled. - Note: this policy is a temporary solution to help transition away from webkit-prefixed fullscreen APIs. It will tentatively be removed in M130, or in the few following releases. - + Note: this policy is a temporary solution to help transition away from webkit-prefixed fullscreen APIs. M131 is the last release which will have this policy. supported_on: -- android:124- -- chrome.*:124- -- chrome_os:124- -- fuchsia:124- +- android:124-131 +- chrome.*:124-131 +- chrome_os:124-131 +- fuchsia:124-131 -deprecated: false +deprecated: true features: dynamic_refresh: true diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/SharedWorkerBlobURLFixEnabled.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/SharedWorkerBlobURLFixEnabled.yaml new file mode 100755 index 000000000..6da0c0320 --- /dev/null +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/SharedWorkerBlobURLFixEnabled.yaml @@ -0,0 +1,38 @@ +caption: Make SharedWorker blob URL behavior aligned with the specification +desc: |- + Upon https://w3c.github.io/ServiceWorker/#control-and-use-worker-client, + workers should inherit controllers for the blob URL. However, existing code + allows only DedicatedWorkers to inherit the controller, and SharedWorkers do + not inherit the controller. + + Setting the policy to Enabled or leaving it unset means + $1Google Chrome inherit the controller + if a blob URL is used as a SharedWorker URL. + + Setting the policy to Disabled leaves the behavior not aligned with the + specification as-is. + + This policy is intended to be temporary and will be removed in the future. +default: true +example_value: true +features: + dynamic_refresh: false + per_profile: true +items: +- caption: A blob URL SharedWorker inherits a controller. + value: true +- caption: A blob URL SharedWorker does not inherit a controller. (legacy behavior) + value: false +owners: +- yyanagisawa@chromium.org +- file://content/browser/worker_host/OWNERS +schema: + type: boolean +supported_on: +- android:132- +- chrome.*:132- +- chrome_os:132- +- fuchsia:132- +tags: [] +type: main + diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/ThirdPartyBlockingEnabled.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/ThirdPartyBlockingEnabled.yaml index 09bab216b..3ceda312f 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/ThirdPartyBlockingEnabled.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/ThirdPartyBlockingEnabled.yaml @@ -1,5 +1,8 @@ caption: Enable third party software injection blocking +deprecated: true desc: |- + This policy is deprecated. + Setting the policy to Enabled or leaving it unset prevents third-party software from injecting executable code into $1Google Chrome's processes. Setting the policy to Disabled allows this software to inject such code into $1Google Chrome's processes. diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/TranslatorAPIAllowed.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/TranslatorAPIAllowed.yaml new file mode 100755 index 000000000..ec87a17fb --- /dev/null +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/TranslatorAPIAllowed.yaml @@ -0,0 +1,25 @@ +caption: Allow Translator API +default: true +desc: |- + Setting the policy to Enabled or leaving it unset allows the use of Translator API in $1Google Chrome. + + Setting the policy to Disabled disallows the use of Translator API. +example_value: true +features: + dynamic_refresh: true + per_profile: true +items: +- caption: Allows the use of Translator API + value: true +- caption: Disallows the use of Translator API + value: false +owners: +- file://chrome/browser/ai/OWNERS +schema: + type: boolean +supported_on: +- chrome.win:132- +- chrome.mac:132- +- chrome.linux:132- +tags: [] +type: main diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Network/DeviceDockMacAddressSource.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Network/DeviceDockMacAddressSource.yaml index c3b7ec348..626beb9eb 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Network/DeviceDockMacAddressSource.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Network/DeviceDockMacAddressSource.yaml @@ -26,7 +26,6 @@ items: value: 3 owners: - bkersting@google.com -- kerker@chromium.org - chungsheng@google.com - byronlee@chromium.org - chromeos-oem-services@google.com diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/PasswordManager/PasswordManagerPasskeysEnabled.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/PasswordManager/PasswordManagerPasskeysEnabled.yaml new file mode 100755 index 000000000..6059130db --- /dev/null +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/PasswordManager/PasswordManagerPasskeysEnabled.yaml @@ -0,0 +1,30 @@ +arc_support: This policy has no effect on Android apps. +caption: Enable saving passkeys to the password manager +desc: |- + This policy controls the browser's ability to save passkeys in the built-in password manager. It does not limit access to, or change the contents of, passkeys already saved in the password manager. If the PasswordManagerEnabled policy is set to Disabled then saving in the built-in password manager is disabled in general, including passkeys and passwords, and thus this policy is not applicable. + + Setting the policy to Enabled or leaving unset means that users can save passkeys in the built-in password manager if signed into $1Google Chrome. + + Setting the policy to Disabled means users can't save passkeys to the built-in password manager, but previously saved passkeys will still work. +default: true +example_value: false +features: + can_be_recommended: false + dynamic_refresh: true + per_profile: true +items: +- caption: Enable saving passkeys using the password manager + value: true +- caption: Disable saving passkeys using the password manager + value: false +owners: +- file://components/policy/OWNERS +- markusheintz@chromium.org +- agl@chromium.org +schema: + type: boolean +supported_on: +- chrome.*:132- +- chrome_os:132- +tags: [] +type: main diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/PasswordManager/ThirdPartyPasswordManagersAllowed.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/PasswordManager/ThirdPartyPasswordManagersAllowed.yaml index 05578a001..bc4609e71 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/PasswordManager/ThirdPartyPasswordManagersAllowed.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/PasswordManager/ThirdPartyPasswordManagersAllowed.yaml @@ -30,7 +30,7 @@ items: - caption: Block switching to a third-party password manager value: false owners: -- fhorschig@chromium.org +- friedrichh@chromium.org - file://components/android_autofill/OWNERS - file://components/autofill/android/OWNERS schema: diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/PasswordManager/policy_atomic_groups.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/PasswordManager/policy_atomic_groups.yaml index 0f6bda32e..29f12c97a 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/PasswordManager/policy_atomic_groups.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/PasswordManager/policy_atomic_groups.yaml @@ -6,3 +6,4 @@ PasswordManager: - PasswordManagerAllowShowPasswords - PasswordSharingEnabled - ThirdPartyPasswordManagersAllowed + - PasswordManagerPasskeysEnabled diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/PowerManagement/DeviceAdvancedBatteryChargeModeDayConfig.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/PowerManagement/DeviceAdvancedBatteryChargeModeDayConfig.yaml index 41c82710b..80a7d0572 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/PowerManagement/DeviceAdvancedBatteryChargeModeDayConfig.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/PowerManagement/DeviceAdvancedBatteryChargeModeDayConfig.yaml @@ -27,7 +27,6 @@ features: per_profile: false owners: - bkersting@google.com -- kerker@chromium.org - chungsheng@google.com - byronlee@chromium.org - chromeos-oem-services@google.com diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/PowerManagement/DeviceAdvancedBatteryChargeModeEnabled.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/PowerManagement/DeviceAdvancedBatteryChargeModeEnabled.yaml index 461a8c789..543900b60 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/PowerManagement/DeviceAdvancedBatteryChargeModeEnabled.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/PowerManagement/DeviceAdvancedBatteryChargeModeEnabled.yaml @@ -19,7 +19,6 @@ items: value: false owners: - bkersting@google.com -- kerker@chromium.org - chungsheng@google.com - byronlee@chromium.org - chromeos-oem-services@google.com diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/PowerManagement/DeviceBatteryChargeCustomStartCharging.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/PowerManagement/DeviceBatteryChargeCustomStartCharging.yaml index 5b0a8c3c0..be1872531 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/PowerManagement/DeviceBatteryChargeCustomStartCharging.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/PowerManagement/DeviceBatteryChargeCustomStartCharging.yaml @@ -10,7 +10,6 @@ features: per_profile: false owners: - bkersting@google.com -- kerker@chromium.org - chungsheng@google.com - byronlee@chromium.org - chromeos-oem-services@google.com diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/PowerManagement/DeviceBatteryChargeCustomStopCharging.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/PowerManagement/DeviceBatteryChargeCustomStopCharging.yaml index 8a8f12bb8..5b2801d73 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/PowerManagement/DeviceBatteryChargeCustomStopCharging.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/PowerManagement/DeviceBatteryChargeCustomStopCharging.yaml @@ -10,7 +10,6 @@ features: per_profile: false owners: - bkersting@google.com -- kerker@chromium.org - chungsheng@google.com - byronlee@chromium.org - chromeos-oem-services@google.com diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/PowerManagement/DeviceBatteryChargeMode.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/PowerManagement/DeviceBatteryChargeMode.yaml index ae0d14c4b..52c61fc69 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/PowerManagement/DeviceBatteryChargeMode.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/PowerManagement/DeviceBatteryChargeMode.yaml @@ -29,7 +29,6 @@ items: value: 5 owners: - bkersting@google.com -- kerker@chromium.org - chungsheng@google.com - byronlee@chromium.org - chromeos-oem-services@google.com diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/PowerManagement/DeviceBootOnAcEnabled.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/PowerManagement/DeviceBootOnAcEnabled.yaml index f46d29369..1d9173331 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/PowerManagement/DeviceBootOnAcEnabled.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/PowerManagement/DeviceBootOnAcEnabled.yaml @@ -17,7 +17,6 @@ items: value: false owners: - bkersting@google.com -- kerker@chromium.org - chungsheng@google.com - byronlee@chromium.org - chromeos-oem-services@google.com diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/PowerManagement/DevicePowerPeakShiftBatteryThreshold.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/PowerManagement/DevicePowerPeakShiftBatteryThreshold.yaml index 70bada76e..e49312ec6 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/PowerManagement/DevicePowerPeakShiftBatteryThreshold.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/PowerManagement/DevicePowerPeakShiftBatteryThreshold.yaml @@ -10,7 +10,6 @@ features: per_profile: false owners: - bkersting@google.com -- kerker@chromium.org - chungsheng@google.com - byronlee@chromium.org - chromeos-oem-services@google.com diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/PowerManagement/DevicePowerPeakShiftDayConfig.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/PowerManagement/DevicePowerPeakShiftDayConfig.yaml index 3b2e59f2c..64327dad3 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/PowerManagement/DevicePowerPeakShiftDayConfig.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/PowerManagement/DevicePowerPeakShiftDayConfig.yaml @@ -33,7 +33,6 @@ features: per_profile: false owners: - bkersting@google.com -- kerker@chromium.org - chungsheng@google.com - byronlee@chromium.org - chromeos-oem-services@google.com diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/PowerManagement/DevicePowerPeakShiftEnabled.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/PowerManagement/DevicePowerPeakShiftEnabled.yaml index a83d21f4a..64329d12f 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/PowerManagement/DevicePowerPeakShiftEnabled.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/PowerManagement/DevicePowerPeakShiftEnabled.yaml @@ -17,7 +17,6 @@ items: value: false owners: - bkersting@google.com -- kerker@chromium.org - chungsheng@google.com - byronlee@chromium.org - chromeos-oem-services@google.com diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/PowerManagement/DeviceUsbPowerShareEnabled.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/PowerManagement/DeviceUsbPowerShareEnabled.yaml index 9c99c9272..8c9331107 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/PowerManagement/DeviceUsbPowerShareEnabled.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/PowerManagement/DeviceUsbPowerShareEnabled.yaml @@ -21,7 +21,6 @@ items: value: false owners: - bkersting@google.com -- kerker@chromium.org - chungsheng@google.com - byronlee@chromium.org - chromeos-oem-services@google.com diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/SkyVault/LocalUserFilesMigrationDestination.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/SkyVault/LocalUserFilesMigrationDestination.yaml index e40252a5f..98baaed61 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/SkyVault/LocalUserFilesMigrationDestination.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/SkyVault/LocalUserFilesMigrationDestination.yaml @@ -30,7 +30,7 @@ schema: - "google_drive" - "microsoft_onedrive" - "read_only" -future_on: -- chrome_os +supported_on: +- chrome_os:132- tags: [] type: string-enum \ No newline at end of file diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/WilcoDtc/DeviceWilcoDtcAllowed.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/WilcoDtc/DeviceWilcoDtcAllowed.yaml index 7dee25b0a..1d0466fd3 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/WilcoDtc/DeviceWilcoDtcAllowed.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/WilcoDtc/DeviceWilcoDtcAllowed.yaml @@ -16,7 +16,6 @@ items: value: false owners: - bkersting@google.com -- kerker@chromium.org - chungsheng@google.com - byronlee@chromium.org - chromeos-oem-services@google.com diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/WilcoDtc/DeviceWilcoDtcConfiguration.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/WilcoDtc/DeviceWilcoDtcConfiguration.yaml index 6d2f05acb..d3ff580f1 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/WilcoDtc/DeviceWilcoDtcConfiguration.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/WilcoDtc/DeviceWilcoDtcConfiguration.yaml @@ -14,7 +14,6 @@ features: max_size: 1000000 owners: - bkersting@google.com -- kerker@chromium.org - chungsheng@google.com - byronlee@chromium.org - chromeos-oem-services@google.com 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 eaa40a041..03b529154 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 @@ -55,6 +55,7 @@ #include "components/download/public/common/download_stats.h" #include "components/input/cursor_manager.h" #include "components/input/render_widget_host_input_event_router.h" +#include "components/input/utils.h" #include "components/url_formatter/url_formatter.h" #include "components/viz/common/features.h" #include "components/viz/host/host_frame_sink_manager.h" @@ -81,6 +82,7 @@ #include "content/browser/fenced_frame/fenced_frame.h" #include "content/browser/find_request_manager.h" #include "content/browser/gpu/gpu_data_manager_impl.h" +#include "content/browser/guest_page_holder_impl.h" #include "content/browser/host_zoom_map_impl.h" #include "content/browser/media/audio_stream_monitor.h" #include "content/browser/media/media_web_contents_observer.h" @@ -120,6 +122,7 @@ #include "content/browser/site_instance_impl.h" #include "content/browser/wake_lock/wake_lock_context_host.h" #include "content/browser/web_contents/java_script_dialog_commit_deferring_condition.h" +#include "content/browser/web_contents/partitioned_popins_controller.h" #include "content/browser/web_contents/slow_web_preference_cache.h" #include "content/browser/web_contents/web_contents_view.h" #include "content/browser/web_contents/web_contents_view_child_frame.h" @@ -211,9 +214,10 @@ #if BUILDFLAG(IS_WIN) #include "base/threading/thread_restrictions.h" +#include "components/stylus_handwriting/win/features.h" #include "content/browser/renderer_host/dip_util.h" #include "ui/gfx/geometry/dip_util.h" -#endif +#endif // BUILDFLAG(IS_WIN) #if BUILDFLAG(IS_ANDROID) #include "content/browser/android/java_interfaces_impl.h" @@ -269,11 +273,6 @@ enum class CrashRepHandlingOutcome { // The window which we dobounce load info updates in. constexpr auto kUpdateLoadStatesInterval = base::Milliseconds(250); -// Kill switch for crash immediately on dangling BrowserContext. -BASE_FEATURE(kCrashOnDanglingBrowserContext, - "CrashOnDanglingBrowserContext", - base::FEATURE_ENABLED_BY_DEFAULT); - // Kill switch for inner WebContents visibility updates. BASE_FEATURE(kUpdateInnerWebContentsVisibility, "UpdateInnerWebContentsVisibility", @@ -326,7 +325,8 @@ bool IsUserInteractionInputType(blink::WebInputEvent::Type type) { return type == blink::WebInputEvent::Type::kMouseDown || type == blink::WebInputEvent::Type::kGestureScrollBegin || type == blink::WebInputEvent::Type::kTouchStart || - type == blink::WebInputEvent::Type::kRawKeyDown; + type == blink::WebInputEvent::Type::kRawKeyDown || + type == blink::WebInputEvent::Type::kKeyDown; } // Ensures that OnDialogClosed is only called once. @@ -856,30 +856,45 @@ bool WebContentsImpl::IsPopup() const { bool WebContentsImpl::IsPartitionedPopin() const { // The feature must be enabled if a popin was opened. - DCHECK(base::FeatureList::IsEnabled(blink::features::kPartitionedPopins) || - !partitioned_popin_opener_); + CHECK(base::FeatureList::IsEnabled(blink::features::kPartitionedPopins) || + (!partitioned_popin_opener_ && !partitioned_popin_opener_properties_)); - return !!partitioned_popin_opener_; + // We must check local data and not `partitioned_popin_opener_` as it could + // go away before this popin closes. + return !!partitioned_popin_opener_properties_; } -RenderFrameHostImpl* WebContentsImpl::PartitionedPopinOpener() const { +const PartitionedPopinOpenerProperties& +WebContentsImpl::GetPartitionedPopinOpenerProperties() const { + // This function is only usable if we are in a popin. + CHECK(IsPartitionedPopin()); + + return *partitioned_popin_opener_properties_; +} + +RenderFrameHostImpl* WebContentsImpl::GetPartitionedPopinOpener( + base::PassKey) const { // A popin cannot open a popin so at most one could be set at a time. - DCHECK(!partitioned_popin_opener_ || !opened_partitioned_popin_); + CHECK(!partitioned_popin_opener_ || !opened_partitioned_popin_); // The feature must be enabled if the popin opener is set. - DCHECK(base::FeatureList::IsEnabled(blink::features::kPartitionedPopins) || - !partitioned_popin_opener_); + CHECK(base::FeatureList::IsEnabled(blink::features::kPartitionedPopins) || + !partitioned_popin_opener_); return partitioned_popin_opener_.get(); } -WebContents* WebContentsImpl::OpenedPartitionedPopin() const { +void WebContentsImpl::ClearPartitionedPopinOpenerForTesting() { + partitioned_popin_opener_.reset(); +} + +WebContents* WebContentsImpl::GetOpenedPartitionedPopin() const { // A popin cannot open a popin so at most one could be set at a time. - DCHECK(!partitioned_popin_opener_ || !opened_partitioned_popin_); + CHECK(!IsPartitionedPopin() || !opened_partitioned_popin_); // The feature must be enabled if a popin was opened. - DCHECK(base::FeatureList::IsEnabled(blink::features::kPartitionedPopins) || - !opened_partitioned_popin_); + CHECK(base::FeatureList::IsEnabled(blink::features::kPartitionedPopins) || + !opened_partitioned_popin_); return opened_partitioned_popin_.get(); } @@ -1046,8 +1061,7 @@ WebContentsImpl::WebContentsTreeNode::DetachInnerWebContents( } } - NOTREACHED_IN_MIGRATION(); - return nullptr; + NOTREACHED(); } FrameTreeNode* @@ -1148,58 +1162,45 @@ class WebContentsOfBrowserContext : public base::SupportsUserData::Data { return; // Everything is okay - nothing to warn about. } -#if BUILDFLAG(IS_ANDROID) - JNIEnv* env = base::android::AttachCurrentThread(); -#endif // BUILDFLAG(IS_ANDROID) - // Any remaining WebContents contain dangling pointers to the // BrowserContext being destroyed. Such WebContents (and their // RenderFrameHosts, SiteInstances, etc.) risk causing // use-after-free bugs. For more discussion about managing the // lifetime of WebContents please see https://crbug.com/1376879#c44. - for (WebContentsImpl* web_contents_with_dangling_ptr_to_browser_context : - web_contents_set_) { - std::string creator = web_contents_with_dangling_ptr_to_browser_context - ->GetCreatorLocation() - .ToString(); - SCOPED_CRASH_KEY_STRING256("shutdown", "web_contents/creator", creator); - - const std::optional& ownership_location = - web_contents_with_dangling_ptr_to_browser_context - ->ownership_location(); - std::string owner; - if (ownership_location) { - if (ownership_location->has_source_info()) { - owner = std::string(ownership_location->function_name()) + "@" + - ownership_location->file_name(); - } else { - owner = "no_source_info"; - } + WebContentsImpl* const web_contents_with_dangling_ptr_to_browser_context = + *web_contents_set_.begin(); + const std::string creator = + web_contents_with_dangling_ptr_to_browser_context->GetCreatorLocation() + .ToString(); + SCOPED_CRASH_KEY_STRING256("shutdown", "web_contents/creator", creator); + + const std::optional& ownership_location = + web_contents_with_dangling_ptr_to_browser_context->ownership_location(); + std::string owner; + if (ownership_location) { + if (ownership_location->has_source_info()) { + owner = std::string(ownership_location->function_name()) + "@" + + ownership_location->file_name(); } else { - owner = "unknown"; + owner = "no_source_info"; } - SCOPED_CRASH_KEY_STRING256("shutdown", "web_contents/owner", owner); + } else { + owner = "unknown"; + } + SCOPED_CRASH_KEY_STRING256("shutdown", "web_contents/owner", owner); #if BUILDFLAG(IS_ANDROID) - // On Android, also report the Java stack trace from WebContents's - // creation. - WebContentsAndroid::ReportDanglingPtrToBrowserContext( - env, web_contents_with_dangling_ptr_to_browser_context); + // On Android, also report the Java stack trace from WebContents's + // creation. + WebContentsAndroid::ReportDanglingPtrToBrowserContext( + base::android::AttachCurrentThread(), + web_contents_with_dangling_ptr_to_browser_context); #endif // BUILDFLAG(IS_ANDROID) - if (base::FeatureList::IsEnabled(kCrashOnDanglingBrowserContext)) { - LOG(FATAL) - << "BrowserContext is getting destroyed without first closing all " - << "WebContents (for more info see https://crbug.com/1376879#c44); " - << "creator = " << creator; - } else { - NOTREACHED_IN_MIGRATION() - << "BrowserContext is getting destroyed without first closing all " - << "WebContents (for more info see https://crbug.com/1376879#c44); " - << "creator = " << creator; - base::debug::DumpWithoutCrashing(); - } - } + NOTREACHED() + << "BrowserContext is getting destroyed without first closing all " + << "WebContents (for more info see https://crbug.com/1376879#c44); " + << "creator = " << creator; } std::unique_ptr Clone() override { @@ -1306,6 +1307,10 @@ WebContentsImpl::WebContentsImpl(BrowserContext* browser_context) inverted_colors_ = native_theme->GetInvertedColors(); renderer_preferences_.caret_blink_interval = native_theme->GetCaretBlinkInterval(); +#if BUILDFLAG(IS_CHROMEOS) + renderer_preferences_.use_overlay_scrollbar = + native_theme->use_overlay_scrollbar(); +#endif screen_change_monitor_ = std::make_unique(base::BindRepeating( @@ -1314,6 +1319,12 @@ WebContentsImpl::WebContentsImpl(BrowserContext* browser_context) if (base::FeatureList::IsEnabled(blink::features::kSharedStorageAPI)) { SharedStorageBudgetCharger::CreateForWebContents(this); } + + if (input::IsTransferInputToVizSupported()) { + GetHostFrameSinkManager()->SetupRenderInputRouterDelegateConnection( + compositor_frame_sink_grouping_id_, + rir_delegate_client_receiver_.BindNewPipeAndPassRemote()); + } } WebContentsImpl::~WebContentsImpl() { @@ -1371,8 +1382,8 @@ WebContentsImpl::~WebContentsImpl() { } } - for (RenderWidgetHostImpl* widget : created_widgets_) { - widget->DetachDelegate(); + for (auto& itr : created_widgets_) { + itr.second->DetachDelegate(); } created_widgets_.clear(); @@ -1880,7 +1891,7 @@ void WebContentsImpl::ForEachFrameTree( node_iter.AdvanceSkippingChildren(); } else { if (node->IsMainFrame()) { - on_frame_tree.Run(node->frame_tree()); + on_frame_tree(node->frame_tree()); } ++node_iter; } @@ -1945,12 +1956,9 @@ void WebContentsImpl::ExecutePageBroadcastMethodForAllPages( PageBroadcastMethodCallback callback) { OPTIONAL_TRACE_EVENT0( "content", "WebContentsImpl::ExecutePageBroadcastMethodForAllPages"); - ForEachFrameTree(base::BindRepeating( - [](PageBroadcastMethodCallback* callback, FrameTree& frame_tree) { - frame_tree.root()->render_manager()->ExecutePageBroadcastMethod( - *callback); - }, - &callback)); + ForEachFrameTree([callback](FrameTree& frame_tree) { + frame_tree.root()->render_manager()->ExecutePageBroadcastMethod(callback); + }); } RenderViewHostImpl* WebContentsImpl::GetRenderViewHost() { @@ -2032,15 +2040,13 @@ void WebContentsImpl::SetPageBaseBackgroundColor(std::optional color) { return; } page_base_background_color_ = color; - ExecutePageBroadcastMethod(base::BindRepeating( - [](std::optional color, RenderViewHostImpl* rvh) { - // Null `broadcast` can happen before view is created on the renderer - // side, in which case this color will be sent in CreateView. - if (auto& broadcast = rvh->GetAssociatedPageBroadcast()) { - broadcast->SetPageBaseBackgroundColor(color); - } - }, - page_base_background_color_)); + ExecutePageBroadcastMethod([color](RenderViewHostImpl* rvh) { + // Null `broadcast` can happen before view is created on the renderer + // side, in which case this color will be sent in CreateView. + if (auto& broadcast = rvh->GetAssociatedPageBroadcast()) { + broadcast->SetPageBaseBackgroundColor(color); + } + }); } void WebContentsImpl::SetColorProviderSource(ui::ColorProviderSource* source) { @@ -2296,7 +2302,7 @@ void WebContentsImpl::SetAlwaysSendSubresourceNotifications() { } bool WebContentsImpl::GetSendSubresourceNotification() { - return GetRendererPrefs().send_subresource_notification; + return GetRendererPrefs(GetRenderViewHost()).send_subresource_notification; } void WebContentsImpl::SetUserAgentOverride( @@ -2336,7 +2342,7 @@ void WebContentsImpl::SetUserAgentOverride( // No need to reload if the current entry matches that of the // NavigationRequest supplied to DidStartNavigation() as NavigationRequest // handles it. - ForEachFrameTree(base::BindRepeating([](FrameTree& frame_tree) { + ForEachFrameTree([](FrameTree& frame_tree) { // For prerendering, we don't want to activate a prerendered page loaded // with a stale UA and will handle it even if it finishes loading. if (!frame_tree.IsLoadingIncludingInnerFrameTrees() && @@ -2361,7 +2367,7 @@ void WebContentsImpl::SetUserAgentOverride( } else { frame_tree.controller().Reload(ReloadType::BYPASSING_CACHE, true); } - })); + }); observers_.NotifyObservers(&WebContentsObserver::UserAgentOverrideSet, ua_override); @@ -2500,7 +2506,7 @@ const std::string& WebContentsImpl::GetEncoding() { void WebContentsImpl::Discard() { if (!base::FeatureList::IsEnabled(features::kWebContentsDiscard)) { - NOTREACHED_NORETURN(); + NOTREACHED(); } AboutToBeDiscarded(this); @@ -2600,6 +2606,17 @@ void WebContentsImpl::SetAudioMuted(bool mute) { GetAudioStreamFactory()->SetMuted(mute); + // Notfiy all guest page holders that we are muting. + ForEachFrameTree([mute](FrameTree& frame_tree) { + if (frame_tree.is_guest()) { + GuestPageHolderImpl* guest_page_holder = + GuestPageHolderImpl::FromRenderFrameHost( + *frame_tree.root()->current_frame_host()); + CHECK(guest_page_holder); + guest_page_holder->SetAudioMutedFromWebContents(mute); + } + }); + observers_.NotifyObservers(&WebContentsObserver::DidUpdateAudioMutingState, mute); // Notification for UI updates in response to the changed muting state. @@ -2610,24 +2627,21 @@ bool WebContentsImpl::IsCurrentlyAudible() { return is_currently_audible_; } -bool WebContentsImpl::IsConnectedToBluetoothDevice() { - return bluetooth_connected_device_count_ > 0; -} - -bool WebContentsImpl::IsScanningForBluetoothDevices() { - return bluetooth_scanning_sessions_count_ > 0; -} - -bool WebContentsImpl::IsConnectedToSerialPort() { - return serial_active_frame_count_ > 0; -} - -bool WebContentsImpl::IsConnectedToHidDevice() { - return hid_active_frame_count_ > 0; -} - -bool WebContentsImpl::IsConnectedToUsbDevice() { - return usb_active_frame_count_ > 0; +bool WebContentsImpl::IsCapabilityActive(CapabilityType capability_type) { + switch (capability_type) { + case CapabilityType::kBluetoothConnected: + return bluetooth_connected_device_count_ > 0; + case CapabilityType::kBluetoothScanning: + return bluetooth_scanning_sessions_count_ > 0; + case CapabilityType::kSerial: + return serial_active_frame_count_ > 0; + case CapabilityType::kHID: + return hid_active_frame_count_ > 0; + case CapabilityType::kUSB: + return usb_active_frame_count_ > 0; + case CapabilityType::kGeolocation: + return geolocation_active_frame_count_ > 0; + } } bool WebContentsImpl::HasFileSystemAccessHandles() { @@ -2706,12 +2720,10 @@ bool WebContentsImpl::IsCrashed() { case base::TERMINATION_STATUS_STILL_RUNNING: return false; case base::TERMINATION_STATUS_MAX_ENUM: - NOTREACHED_IN_MIGRATION(); - return false; + NOTREACHED(); } - NOTREACHED_IN_MIGRATION(); - return false; + NOTREACHED(); } void WebContentsImpl::SetPrimaryMainFrameProcessStatus( @@ -2824,13 +2836,11 @@ void WebContentsImpl::OnAudioStateChanged() { is_currently_audible_ = is_currently_audible; was_ever_audible_ = was_ever_audible_ || is_currently_audible_; - ExecutePageBroadcastMethod(base::BindRepeating( - [](bool is_currently_audible, RenderViewHostImpl* rvh) { - if (auto& broadcast = rvh->GetAssociatedPageBroadcast()) { - broadcast->AudioStateChanged(is_currently_audible); - } - }, - is_currently_audible_)); + ExecutePageBroadcastMethod([is_currently_audible](RenderViewHostImpl* rvh) { + if (auto& broadcast = rvh->GetAssociatedPageBroadcast()) { + broadcast->AudioStateChanged(is_currently_audible); + } + }); // Notification for UI updates in response to the changed audio state. NotifyNavigationStateChanged(INVALIDATE_TYPE_AUDIO); @@ -2938,6 +2948,10 @@ WebContents::ScopedIgnoreInputEvents WebContentsImpl::IgnoreInputEvents( : std::nullopt)); } +bool WebContentsImpl::ShouldIgnoreInputEventsForTesting() { + return ShouldIgnoreInputEvents(); +} + bool WebContentsImpl::HasActiveEffectivelyFullscreenVideo() { return IsFullscreen() && media_web_contents_observer_->HasActiveEffectivelyFullscreenVideo(); @@ -3042,6 +3056,9 @@ void WebContentsImpl::AttachInnerWebContents( std::unique_ptr inner_web_contents, RenderFrameHost* render_frame_host, bool is_full_page) { + // Not reachable with MPArch based guests. + CHECK(!base::FeatureList::IsEnabled(features::kGuestViewMPArch)); + OPTIONAL_TRACE_EVENT2("content", "WebContentsImpl::AttachInnerWebContents", "inner_web_contents", static_cast(inner_web_contents.get()), @@ -3090,12 +3107,12 @@ void WebContentsImpl::AttachInnerWebContents( } } - // When the WebContents being initialized has an opener, the browser side - // Render{View,Frame}Host must be initialized and the RenderWidgetHostView - // created. This is needed because the usual initialization happens during - // the first navigation, but when attaching a new window we don't navigate - // before attaching. If the browser side is already initialized, the calls - // below will just early return. + // When the WebContents being initialized has not already navigated, the + // browser side Render{View,Frame}Host must be initialized and the + // RenderWidgetHostView created. This is needed because the usual + // initialization happens during the first navigation, but not all guest types + // navigate before attaching. If the browser side is already initialized, the + // calls below will just early return. inner_render_manager->InitRenderView( inner_main_frame->GetSiteInstance()->group(), inner_render_view_host, nullptr); @@ -3153,6 +3170,94 @@ void WebContentsImpl::AttachInnerWebContents( inner_main_frame->PropagateEmbeddingTokenToParentFrame(); } +void WebContentsImpl::AttachGuestPage( + std::unique_ptr guest_page, + RenderFrameHost* outer_render_frame_host) { + CHECK(base::FeatureList::IsEnabled(features::kGuestViewMPArch)); + + OPTIONAL_TRACE_EVENT1("content", "WebContentsImpl::AttachGuestPage", + "guest_page", static_cast(guest_page.get())); + auto* outer_render_frame_host_impl = + static_cast(outer_render_frame_host); + CHECK_EQ(this, + WebContents::FromRenderFrameHost(outer_render_frame_host_impl)); + CHECK(outer_render_frame_host_impl->GetParent()); + + // Guest pages aren't supported with prerendering. See + // https://crbug.com/40191159 for details. + CHECK_NE(RenderFrameHostImpl::LifecycleStateImpl::kPrerendering, + outer_render_frame_host_impl->lifecycle_state()); + + auto* guest_page_impl = static_cast(guest_page.get()); + outer_render_frame_host_impl->GetParent()->TakeGuestOwnership( + base::WrapUnique( + static_cast(guest_page.release()))); + + FrameTree& inner_frame_tree = guest_page_impl->frame_tree(); + RenderFrameHostManager* inner_render_manager = + inner_frame_tree.root()->render_manager(); + RenderFrameHostImpl* inner_main_frame = + inner_render_manager->current_frame_host(); + RenderViewHostImpl* inner_render_view_host = + inner_main_frame->render_view_host(); + auto* outer_render_manager = + outer_render_frame_host_impl->frame_tree_node()->render_manager(); + + if (RenderWidgetHostViewBase* prev_rwhv = + inner_render_manager->GetRenderWidgetHostView()) { + // Ensure that if there is an existing RenderWidgetHostView, it's valid to + // embed. + CHECK(prev_rwhv->IsRenderWidgetHostViewChildFrame()); + static_cast(prev_rwhv) + ->UnregisterFrameSinkId(); + } + + // Make `outer_render_frame_host_impl` the placeholder for the inner frame + // tree. + outer_render_frame_host_impl->set_inner_tree_main_frame_tree_node_id( + inner_main_frame->frame_tree_node()->frame_tree_node_id()); + guest_page_impl->set_outer_frame_tree_node_id( + outer_render_frame_host_impl->frame_tree_node()->frame_tree_node_id()); + + // When the guest page being initialized has not already navigated, the + // browser side Render{View,Frame}Host must be initialized and the + // RenderWidgetHostView created. This is needed because the usual + // initialization happens during the first navigation, but not all guest types + // navigate before attaching. If the browser side is already initialized, the + // call below will just early return. + inner_render_manager->InitRenderView( + inner_main_frame->GetSiteInstance()->group(), inner_render_view_host, + /*proxy=*/nullptr); + + RenderFrameProxyHost* proxy = + inner_main_frame->browsing_context_state()->CreateOuterDelegateProxy( + outer_render_frame_host_impl->GetSiteInstance()->group(), + inner_main_frame->frame_tree_node(), blink::RemoteFrameToken()); + // Since the inner page is created from the browser side we do + // not have RemoteFrame mojo channels. New channels will be bound when the + // `CreateView` IPC is sent. + + // When attaching a GuestView as an inner frame tree, there should already be + // a live RenderFrame, which has to be swapped. + if (outer_render_frame_host_impl->IsRenderFrameLive()) { + inner_render_manager->SwapOuterDelegateFrame(outer_render_frame_host_impl, + proxy); + } + + RenderWidgetHostViewBase* child_rwhvb = + inner_render_manager->GetRenderWidgetHostView(); + CHECK(child_rwhvb); + CHECK(child_rwhvb->IsRenderWidgetHostViewChildFrame()); + RenderWidgetHostViewChildFrame* child_rwhv = + static_cast(child_rwhvb); + inner_render_manager->SetRWHViewForInnerFrameTree(child_rwhv); + child_rwhv->RegisterFrameSinkId(); + + outer_render_manager->set_attach_complete(); + inner_main_frame->PropagateEmbeddingTokenToParentFrame(); + // TODO(crbug.com/40202416): Determine if anything else is needed here. +} + void WebContentsImpl::RecursivelyRegisterRenderWidgetHostViews() { OPTIONAL_TRACE_EVENT0( "content", "WebContentsImpl::RecursivelyRegisterRenderWidgetHostViews"); @@ -3294,7 +3399,7 @@ const blink::web_pref::WebPreferences WebContentsImpl::ComputeWebPreferences() { prefs.autoplay_policy = blink::mojom::AutoplayPolicy::kDocumentUserActivationRequired; } else { - NOTREACHED_IN_MIGRATION(); + NOTREACHED(); } prefs.dont_send_key_events_to_javascript = @@ -3333,8 +3438,6 @@ const blink::web_pref::WebPreferences WebContentsImpl::ComputeWebPreferences() { int min_width_in_dp = static_cast(min_width / display.device_scale_factor()); if (prefs.viewport_enabled && - base::FeatureList::IsEnabled( - blink::features::kDefaultViewportIsDeviceWidth) && (ui::GetDeviceFormFactor() == ui::DEVICE_FORM_FACTOR_AUTOMOTIVE || (min_width_in_dp >= kAndroidMinimumTabletWidthDp && ui::GetDeviceFormFactor() != ui::DEVICE_FORM_FACTOR_TV))) { @@ -3367,7 +3470,12 @@ const blink::web_pref::WebPreferences WebContentsImpl::ComputeWebPreferences() { prefs.long_press_link_select_text = long_press_link_select_text_; #endif +#if BUILDFLAG(IS_ANDROID) prefs.stylus_handwriting_enabled = stylus_handwriting_enabled_; +#elif BUILDFLAG(IS_WIN) + prefs.stylus_handwriting_enabled = + stylus_handwriting::win::IsStylusHandwritingWinEnabled(); +#endif prefs.disable_reading_from_canvas = command_line.HasSwitch(switches::kDisableReadingFromCanvas); @@ -3453,14 +3561,9 @@ void WebContentsImpl::NotifyPreferencesChanged() { void WebContentsImpl::SyncRendererPrefs() { OPTIONAL_TRACE_EVENT0("content", "WebContentsImpl::SyncRendererPrefs"); - blink::RendererPreferences renderer_preferences = GetRendererPrefs(); - RenderViewHostImpl::GetPlatformSpecificPrefs(&renderer_preferences); - ExecutePageBroadcastMethodForAllPages(base::BindRepeating( - [](const blink::RendererPreferences& preferences, - RenderViewHostImpl* rvh) { - rvh->SendRendererPreferencesToRenderer(preferences); - }, - renderer_preferences)); + ExecutePageBroadcastMethodForAllPages([this](RenderViewHostImpl* rvh) { + rvh->SendRendererPreferencesToRenderer(GetRendererPrefs(rvh)); + }); } void WebContentsImpl::OnCookiesAccessed(NavigationHandle* navigation, @@ -3563,8 +3666,7 @@ WebContentsImpl::GetPermissionsPolicyForIsolatedWebApp( void WebContentsImpl::Stop() { TRACE_EVENT0("content", "WebContentsImpl::Stop"); - ForEachFrameTree(base::BindRepeating( - [](FrameTree& frame_tree) { frame_tree.StopLoading(); })); + ForEachFrameTree([](FrameTree& frame_tree) { frame_tree.StopLoading(); }); GetPrerenderHostRegistry()->CancelAllHosts(PrerenderFinalStatus::kStop); observers_.NotifyObservers(&WebContentsObserver::NavigationStopped); } @@ -3740,7 +3842,7 @@ void WebContentsImpl::OnWebContentsDestroyed(WebContentsImpl* web_contents) { pending_contents_.erase(iter); return; } - NOTREACHED_IN_MIGRATION(); + NOTREACHED(); } void WebContentsImpl::OnRenderWidgetHostDestroyed( @@ -3862,7 +3964,8 @@ void WebContentsImpl::RenderWidgetCreated( RenderWidgetHostImpl* render_widget_host) { OPTIONAL_TRACE_EVENT1("content", "WebContentsImpl::RenderWidgetCreated", "render_widget_host", render_widget_host); - created_widgets_.insert(render_widget_host); + CHECK(!created_widgets_.contains(render_widget_host->GetFrameSinkId())); + created_widgets_[render_widget_host->GetFrameSinkId()] = render_widget_host; } void WebContentsImpl::RenderWidgetDeleted( @@ -3872,7 +3975,7 @@ void WebContentsImpl::RenderWidgetDeleted( // Note that IsBeingDestroyed() can return true at this point as // ~WebContentsImpl() calls RFHM::ClearRFHsPendingShutdown(), which might lead // us here. - created_widgets_.erase(render_widget_host); + created_widgets_.erase(render_widget_host->GetFrameSinkId()); if (IsBeingDestroyed()) { return; @@ -4343,23 +4446,7 @@ void WebContentsImpl::UpdateVisibilityAndNotifyPageAndView( }, page_visibility); - if (page_visibility == PageVisibilityState::kHidden) { - GetController().SetActive(false); - } else { - // We cannot show a page or capture video unless there is a valid renderer - // associated with this web contents. The navigation controller for this - // page must be set to active (allowing navigation to complete, a renderer - // and its associated views to be created, etc.) if any of these conditions - // holds. - // - // Previously, it was possible for browser-side code to try to capture video - // from a restored tab (for a variety of reasons, including the browser - // creating preview thumbnails) and the tab would never actually load. By - // keying this behavior off of |page_visibility| instead of just - // |new_visibility| we avoid this case. See crbug.com/1020782 for more - // context. - GetController().SetActive(true); - + if (page_visibility != PageVisibilityState::kHidden) { // This shows the Page before showing the individual RenderWidgets, as // RenderWidgets will work to produce compositor frames and handle input // as soon as they are shown. But the Page and other classes do not expect @@ -4401,20 +4488,6 @@ void WebContentsImpl::UpdateVisibilityAndNotifyPageAndView( // Similar to when showing the page, we only hide the page after // hiding the individual RenderWidgets. ForEachRenderViewHost(view_mask, update_frame_tree_visibility); - } else { - for (FrameTreeNode* node : - FrameTree::SubtreeAndInnerTreeNodes(GetPrimaryMainFrame())) { - RenderFrameProxyHost* proxy_to_parent_or_outer_delegate = - node->render_manager()->GetProxyToParentOrOuterDelegate(); - if (!proxy_to_parent_or_outer_delegate) { - continue; - } - - // DelegateWasShown keeps track of crash metrics. This is safe to - // call for GuestViews, and inner frame trees. - proxy_to_parent_or_outer_delegate->cross_process_frame_connector() - ->DelegateWasShown(); - } } if (new_visibility != Visibility::VISIBLE) { @@ -4433,6 +4506,38 @@ void WebContentsImpl::UpdateVisibilityAndNotifyPageAndView( ->UpdateVisibilityAndNotifyPageAndView(new_visibility, is_activity); } } + + // We cannot show a page or capture video unless there is a valid renderer + // associated with this web contents. The navigation controller for this page + // must be set to active (allowing navigation to complete, a renderer and its + // associated views to be created, etc.) if any of these conditions holds. + // + // Previously, it was possible for browser-side code to try to capture video + // from a restored tab (for a variety of reasons, including the browser + // creating preview thumbnails) and the tab would never actually load. By + // keying this behavior off of |page_visibility| instead of just + // |new_visibility| we avoid this case. See crbug.com/1020782 for more + // context. + // + // SetActive() can immediately begin a navigation, synchronously emitting the + // relevant events. Ensure this is done after the WebContents has successfully + // transitioned to the visible state. See crbug.com/383189046 for details. + GetController().SetActive(page_visibility != PageVisibilityState::kHidden); + + // DelegateWasShown() keeps track of crash metrics. This is safe to call for + // GuestViews, and inner frame trees. Call this only after visibility changes + // and navigations have been processed to ensure clients have all information + // necessary to log the correct crash metrics. + if (page_visibility != PageVisibilityState::kHidden) { + for (FrameTreeNode* node : + FrameTree::SubtreeAndInnerTreeNodes(GetPrimaryMainFrame())) { + if (RenderFrameProxyHost* proxy_to_parent_or_outer_delegate = + node->render_manager()->GetProxyToParentOrOuterDelegate()) { + proxy_to_parent_or_outer_delegate->cross_process_frame_connector() + ->DelegateWasShown(); + } + } + } } #if BUILDFLAG(IS_ANDROID) @@ -4569,8 +4674,7 @@ bool WebContentsImpl::RequestKeyboardLock( "esc_key_locked", esc_key_locked); DCHECK(render_widget_host); if (WebContentsImpl::FromRenderWidgetHostImpl(render_widget_host) != this) { - NOTREACHED_IN_MIGRATION(); - return false; + NOTREACHED(); } // KeyboardLock is only supported when called by the top-level browsing @@ -4627,6 +4731,9 @@ bool WebContentsImpl::OnRenderFrameProxyVisibilityChanged( return false; } + // Not reachable with MPArch based guests. + CHECK(!base::FeatureList::IsEnabled(features::kGuestViewMPArch)); + DCHECK(GetOuterWebContents()); switch (visibility) { @@ -5214,6 +5321,19 @@ void WebContentsImpl::RequestMediaAccessPermission( } } +void WebContentsImpl::ProcessSelectAudioOutput( + const SelectAudioOutputRequest& request, + SelectAudioOutputCallback callback) { + DCHECK_CURRENTLY_ON(BrowserThread::UI); + + if (delegate_) { + delegate_->ProcessSelectAudioOutput(request, std::move(callback)); + } else { + std::move(callback).Run( + base::unexpected(content::SelectAudioOutputError::kNotSupported)); + } +} + bool WebContentsImpl::CheckMediaAccessPermission( RenderFrameHostImpl* render_frame_host, const url::Origin& security_origin, @@ -6463,8 +6583,7 @@ void WebContentsImpl::Find(int request_id, OPTIONAL_TRACE_EVENT0("content", "WebContentsImpl::Find"); // Cowardly refuse to search for no text. if (search_text.empty()) { - NOTREACHED_IN_MIGRATION(); - return; + NOTREACHED(); } GetOrCreateFindRequestManager()->Find(request_id, search_text, @@ -6858,6 +6977,11 @@ void WebContentsImpl::DraggableRegionsChanged( GetDelegate()->DraggableRegionsChanged(regions, this); } +void WebContentsImpl::OnFirstContentfulPaintInPrimaryMainFrame() { + observers_.NotifyObservers( + &WebContentsObserver::OnFirstContentfulPaintInPrimaryMainFrame); +} + void WebContentsImpl::NotifyChangedNavigationState( InvalidateTypes changed_flags) { NotifyNavigationStateChanged(changed_flags); @@ -6903,6 +7027,47 @@ input::TouchEmulator* WebContentsImpl::GetTouchEmulator( return touch_emulator_.get(); } +void WebContentsImpl::NotifyObserversOfInputEvent( + const viz::FrameSinkId& frame_sink_id, + std::unique_ptr event) { + auto iter = created_widgets_.find(frame_sink_id); + // This adds a safeguard against race condition where a RenderWidgetHostImpl + // is being destroyed & removed from |created_widgets_|, but Viz may still + // send a mojo call referencing it. + if (iter == created_widgets_.end()) { + return; + } + iter->second->NotifyObserversOfInputEvent(event->Event()); +} + +void WebContentsImpl::NotifyObserversOfInputEventAcks( + const viz::FrameSinkId& frame_sink_id, + blink::mojom::InputEventResultSource ack_source, + blink::mojom::InputEventResultState ack_result, + std::unique_ptr event) { + auto iter = created_widgets_.find(frame_sink_id); + // This adds a safeguard against race condition where a RenderWidgetHostImpl + // is being destroyed & removed from |created_widgets_|, but Viz may still + // send a mojo call referencing it. + if (iter == created_widgets_.end()) { + return; + } + iter->second->NotifyObserversOfInputEventAcks(ack_source, ack_result, + event->Event()); +} + +void WebContentsImpl::OnInvalidInputEventSource( + const viz::FrameSinkId& frame_sink_id) { + auto iter = created_widgets_.find(frame_sink_id); + // This adds a safeguard against race condition where a RenderWidgetHostImpl + // is being destroyed & removed from |created_widgets_|, but Viz may still + // send a mojo call referencing it. + if (iter == created_widgets_.end()) { + return; + } + iter->second->OnInvalidInputEventSource(); +} + void WebContentsImpl::DidNavigateMainFramePreCommit( NavigationHandle* navigation_handle, bool navigation_is_within_page) { @@ -8001,7 +8166,7 @@ void WebContentsImpl::RenderFrameDeleted( } void WebContentsImpl::ShowContextMenu( - RenderFrameHost& render_frame_host, + RenderFrameHostImpl& render_frame_host, mojo::PendingAssociatedRemote context_menu_client, const ContextMenuParams& params) { @@ -8019,6 +8184,18 @@ void WebContentsImpl::ShowContextMenu( } ContextMenuParams context_menu_params(params); + + // Give guest a first crack at the context menu. + if (GuestPageHolderImpl* guest_holder = + GuestPageHolderImpl::FromRenderFrameHost(render_frame_host)) { + if (auto* guest_delegate = guest_holder->delegate()) { + if (guest_delegate->GuestHandleContextMenu(render_frame_host, + context_menu_params)) { + return; + } + } + } + // Allow WebContentsDelegates to handle the context menu operation first. if (delegate_ && delegate_->HandleContextMenu(render_frame_host, context_menu_params)) { @@ -8230,6 +8407,26 @@ void WebContentsImpl::RunBeforeUnloadConfirm( dialog_manager_->RunBeforeUnloadDialog( this, render_frame_host, is_reload, base::BindOnce(&CloseDialogCallbackWrapper::Run, wrapper, false)); +#if BUILDFLAG(IS_ANDROID) + // If A embeds a subframe B and B has a BeforeUnload handler whereas A + // doesn't, the main frame navigation from A will show a dialog. In that + // case `render_frame_host` is B and `initiator` is A. The navigation + // request is on A. + RenderFrameHostImpl* initiator = + render_frame_host->GetBeforeUnloadInitiator(); + NavigationRequest* request = + initiator ? initiator->frame_tree_node()->navigation_request() + : nullptr; + auto* animation_manager = + static_cast( + GetBackForwardTransitionAnimationManager()); + // We might not always have a NavigationRequest at this point (i.e. a + // renderer-initiated navigation). However if this is a browser-initiated + // history navigation, the request can't be null. + if (animation_manager && request) { + animation_manager->OnBeforeUnloadDialogShown(request->GetNavigationId()); + } +#endif } } @@ -8267,13 +8464,6 @@ void WebContentsImpl::RunFileChooser( } double WebContentsImpl::GetPendingPageZoomLevel() { -#if BUILDFLAG(IS_ANDROID) - // On Android, use the default page zoom level when the AccessibilityPageZoom - // feature is disabled. - if (!base::FeatureList::IsEnabled(features::kAccessibilityPageZoom)) { - return 0.0; - } -#endif NavigationEntry* pending_entry = GetController().GetPendingEntry(); if (!pending_entry) { return HostZoomMap::GetZoomLevel(this); @@ -8336,7 +8526,13 @@ RenderViewHostDelegateView* WebContentsImpl::GetDelegateView() { return render_view_host_delegate_view_; } -const blink::RendererPreferences& WebContentsImpl::GetRendererPrefs() const { +const blink::RendererPreferences& WebContentsImpl::GetRendererPrefs( + RenderViewHostImpl* render_view_host) { + if (auto* guest = GuestPageHolderImpl::FromRenderFrameHost( + *render_view_host->frame_tree()->GetMainFrame())) { + return guest->GetRendererPrefs(); + } + RenderViewHostImpl::GetPlatformSpecificPrefs(&renderer_preferences_); return renderer_preferences_; } @@ -8823,14 +9019,11 @@ void WebContentsImpl::RegisterExistingOriginAsHavingDefaultIsolation( // FrameNavigationEntries. // * Some frames won't have FrameNavigationEntries (Issues 524208, 608402). // * Some pending navigations won't have NavigationEntries. - web_contents->ForEachFrameTree(base::BindRepeating( - [](const url::Origin& origin, - NavigationRequest* navigation_request_to_exclude, - FrameTree& frame_tree) { + web_contents->ForEachFrameTree( + [origin, navigation_request_to_exclude](FrameTree& frame_tree) { frame_tree.RegisterExistingOriginAsHavingDefaultIsolation( origin, navigation_request_to_exclude); - }, - origin, navigation_request_to_exclude)); + }); } } @@ -8992,50 +9185,6 @@ void WebContentsImpl::UpdateTargetURL(RenderFrameHostImpl* render_frame_host, } } -bool WebContentsImpl::ShouldRouteMessageEvent( - RenderFrameHostImpl* target_rfh) const { - OPTIONAL_TRACE_EVENT1("content", "WebContentsImpl::ShouldRouteMessageEvent", - "render_frame_host", target_rfh); - // Allow the message if this WebContents is dedicated to a browser plugin - // guest. - // Note: This check means that an embedder could theoretically receive a - // postMessage from anyone (not just its own guests). However, this is - // probably not a risk for apps since other pages won't have references - // to App windows. - return GetBrowserPluginGuest() || GetBrowserPluginEmbedder(); -} - -void WebContentsImpl::EnsureOpenerProxiesExist( - RenderFrameHostImpl* source_rfh) { - OPTIONAL_TRACE_EVENT1("content", "WebContentsImpl::EnsureOpenerProxiesExist", - "render_frame_host", source_rfh); - WebContentsImpl* source_web_contents = static_cast( - WebContents::FromRenderFrameHost(source_rfh)); - - if (source_web_contents) { - // If this message is going to outer WebContents from inner WebContents, - // then we should not create a RenderView. AttachToOuterWebContentsFrame() - // already created a RenderFrameProxyHost for that purpose. - if (GetBrowserPluginEmbedder() && - source_web_contents->browser_plugin_guest_) { - return; - } - - if (this != source_web_contents && GetBrowserPluginGuest()) { - // We create a RenderFrameProxyHost for the embedder in the guest's render - // process but we intentionally do not expose the embedder's opener chain - // to it. - source_web_contents->GetRenderManager()->CreateRenderFrameProxy( - GetSiteInstance()->group(), - source_web_contents->GetPrimaryMainFrame()->browsing_context_state()); - } else { - source_rfh->frame_tree_node()->render_manager()->CreateOpenerProxies( - GetSiteInstance()->group(), nullptr, - source_rfh->browsing_context_state()); - } - } -} - void WebContentsImpl::SetAsFocusedWebContentsIfNecessary() { SetFocusedFrameTree(&GetPrimaryFrameTree()); } @@ -9117,9 +9266,15 @@ void WebContentsImpl::SetFocusedFrame(FrameTreeNode* node, // An embedding frame focusing a fenced frame is not allowed since that would // be an information leak. If a renderer attempts to do that, that should be // blocked by `RenderFrameProxyHost::DidFocusFrame()`. - DCHECK(inner_contents || node->current_frame_host() - ->inner_tree_main_frame_tree_node_id() - .is_null()); + // + // TODO(https://crbug.com/376085320): MPArch based allows focus on + // the inner frame tree node. For now, disable this DCHECK when the flag is + // enabled. + DCHECK(base::FeatureList::IsEnabled(features::kGuestViewMPArch) || + inner_contents || + node->current_frame_host() + ->inner_tree_main_frame_tree_node_id() + .is_null()); if (inner_contents) { // An inner WebContents is not created from Fenced Frames so we @@ -9534,6 +9689,7 @@ void WebContentsImpl::CreateRenderWidgetHostViewForRenderManager( case FrameTree::Type::kPrerender: return false; case FrameTree::Type::kFencedFrame: + case FrameTree::Type::kGuest: return true; } }(); @@ -9808,8 +9964,7 @@ gfx::Size WebContentsImpl::GetSize() { return view_android->bounds().size(); #elif BUILDFLAG(IS_IOS) // TODO(crbug.com/40254930): Implement me. - NOTREACHED_IN_MIGRATION(); - return gfx::Size(); + NOTREACHED(); #endif } @@ -9957,8 +10112,8 @@ void WebContentsImpl::IncrementBluetoothConnectedDeviceCount() { // Notify for UI updates if the state changes. bluetooth_connected_device_count_++; if (bluetooth_connected_device_count_ == 1) { - OnDeviceConnectionTypesChanged( - WebContentsObserver::DeviceConnectionType::kBluetooth, /*used=*/true); + OnCapabilityTypesChanged(CapabilityType::kBluetoothConnected, + /*used=*/true); } } @@ -9974,9 +10129,8 @@ void WebContentsImpl::DecrementBluetoothConnectedDeviceCount() { DCHECK_NE(bluetooth_connected_device_count_, 0u); bluetooth_connected_device_count_--; if (bluetooth_connected_device_count_ == 0) { - OnDeviceConnectionTypesChanged( - WebContentsObserver::DeviceConnectionType::kBluetooth, - /*used=*/false); + OnCapabilityTypesChanged(CapabilityType::kBluetoothConnected, + /*used=*/false); } } @@ -10024,8 +10178,7 @@ void WebContentsImpl::IncrementSerialActiveFrameCount() { // Notify for UI updates if the state changes. serial_active_frame_count_++; if (serial_active_frame_count_ == 1) { - OnDeviceConnectionTypesChanged( - WebContentsObserver::DeviceConnectionType::kSerial, /*used=*/true); + OnCapabilityTypesChanged(CapabilityType::kSerial, /*used=*/true); } } @@ -10042,8 +10195,7 @@ void WebContentsImpl::DecrementSerialActiveFrameCount() { DCHECK_NE(0u, serial_active_frame_count_); serial_active_frame_count_--; if (serial_active_frame_count_ == 0) { - OnDeviceConnectionTypesChanged( - WebContentsObserver::DeviceConnectionType::kSerial, /*used=*/false); + OnCapabilityTypesChanged(CapabilityType::kSerial, /*used=*/false); } } @@ -10060,8 +10212,7 @@ void WebContentsImpl::IncrementHidActiveFrameCount() { // non-zero. hid_active_frame_count_++; if (hid_active_frame_count_ == 1) { - OnDeviceConnectionTypesChanged( - WebContentsObserver::DeviceConnectionType::kHID, /*used=*/true); + OnCapabilityTypesChanged(CapabilityType::kHID, /*used=*/true); } } @@ -10079,20 +10230,52 @@ void WebContentsImpl::DecrementHidActiveFrameCount() { DCHECK_NE(0u, hid_active_frame_count_); hid_active_frame_count_--; if (hid_active_frame_count_ == 0) { - OnDeviceConnectionTypesChanged( - WebContentsObserver::DeviceConnectionType::kHID, /*used=*/false); + OnCapabilityTypesChanged(CapabilityType::kHID, /*used=*/false); } } -void WebContentsImpl::OnDeviceConnectionTypesChanged( - WebContentsObserver::DeviceConnectionType device_connection_type, - bool used) { - OPTIONAL_TRACE_EVENT0("content", - "WebContentsImpl::OnDeviceConnectionTypesChanged"); +void WebContentsImpl::IncrementGeolocationActiveFrameCount() { + OPTIONAL_TRACE_EVENT0( + "content", "WebContentsImpl::IncrementGeolocationActiveFrameCount"); + // Trying to invalidate the tab state while being destroyed could result in a + // use after free. + if (IsBeingDestroyed()) { + return; + } + + // Notify for UI updates if the active frame count transitions from zero to + // non-zero. + geolocation_active_frame_count_++; + if (geolocation_active_frame_count_ == 1) { + OnCapabilityTypesChanged(CapabilityType::kGeolocation, /*used=*/true); + } +} + +void WebContentsImpl::DecrementGeolocationActiveFrameCount() { + OPTIONAL_TRACE_EVENT0( + "content", "WebContentsImpl::DecrementGeolocationActiveFrameCount"); + // Trying to invalidate the tab state while being destroyed could result in a + // use after free. + if (IsBeingDestroyed()) { + return; + } + + // Notify for UI updates if the active frame count transitions from non-zero + // to zero. + DCHECK_NE(0u, geolocation_active_frame_count_); + geolocation_active_frame_count_--; + if (geolocation_active_frame_count_ == 0) { + OnCapabilityTypesChanged(CapabilityType::kGeolocation, + /*used=*/false); + } +} + +void WebContentsImpl::OnCapabilityTypesChanged(CapabilityType capability_type, + bool used) { + OPTIONAL_TRACE_EVENT0("content", "WebContentsImpl::OnCapabilityTypesChanged"); NotifyNavigationStateChanged(INVALIDATE_TYPE_TAB); - observers_.NotifyObservers( - &WebContentsObserver::OnDeviceConnectionTypesChanged, - device_connection_type, used); + observers_.NotifyObservers(&WebContentsObserver::OnCapabilityTypesChanged, + capability_type, used); } void WebContentsImpl::IncrementUsbActiveFrameCount() { @@ -10108,8 +10291,7 @@ void WebContentsImpl::IncrementUsbActiveFrameCount() { // non-zero. usb_active_frame_count_++; if (usb_active_frame_count_ == 1) { - OnDeviceConnectionTypesChanged( - WebContentsObserver::DeviceConnectionType::kUSB, /*used=*/true); + OnCapabilityTypesChanged(CapabilityType::kUSB, /*used=*/true); } } @@ -10127,8 +10309,7 @@ void WebContentsImpl::DecrementUsbActiveFrameCount() { DCHECK_NE(0u, usb_active_frame_count_); usb_active_frame_count_--; if (usb_active_frame_count_ == 0) { - OnDeviceConnectionTypesChanged( - WebContentsObserver::DeviceConnectionType::kUSB, /*used=*/false); + OnCapabilityTypesChanged(CapabilityType::kUSB, /*used=*/false); } } @@ -10202,6 +10383,7 @@ void WebContentsImpl::SetSpatialNavigationDisabled(bool disabled) { NotifyPreferencesChanged(); } +#if BUILDFLAG(IS_ANDROID) void WebContentsImpl::SetStylusHandwritingEnabled(bool enabled) { if (stylus_handwriting_enabled_ == enabled) { return; @@ -10209,6 +10391,7 @@ void WebContentsImpl::SetStylusHandwritingEnabled(bool enabled) { stylus_handwriting_enabled_ = enabled; NotifyPreferencesChanged(); } +#endif // BUILDFLAG(IS_ANDROID) PictureInPictureResult WebContentsImpl::EnterPictureInPicture() { OPTIONAL_TRACE_EVENT0("content", "WebContentsImpl::EnterPictureInPicture"); @@ -10306,24 +10489,34 @@ void WebContentsImpl::ClearDeviceEmulationSize() { ForwardingAudioStreamFactory* WebContentsImpl::GetAudioStreamFactory() { if (!audio_stream_factory_) { - std::unique_ptr broker_factory; - if (delegate_) { - broker_factory = delegate_->CreateAudioStreamBrokerFactory(this); - } - if (!broker_factory) { - broker_factory = AudioStreamBrokerFactory::CreateImpl(); - } - audio_stream_factory_.emplace( - this, - // BrowserMainLoop::GetInstance() may be null in unit tests. - BrowserMainLoop::GetInstance() - ? static_cast( - BrowserMainLoop::GetInstance()->user_input_monitor()) - : nullptr, - std::move(broker_factory)); + audio_stream_factory_ = CreateAudioStreamFactory(); } + return audio_stream_factory_.get(); +} + +std::unique_ptr +WebContentsImpl::CreateAudioStreamFactory( + base::PassKey pass_key) { + return CreateAudioStreamFactory(); +} - return &*audio_stream_factory_; +std::unique_ptr +WebContentsImpl::CreateAudioStreamFactory() { + std::unique_ptr broker_factory; + if (delegate_) { + broker_factory = delegate_->CreateAudioStreamBrokerFactory(this); + } + if (!broker_factory) { + broker_factory = AudioStreamBrokerFactory::CreateImpl(); + } + return std::make_unique( + this, + // BrowserMainLoop::GetInstance() may be null in unit tests. + BrowserMainLoop::GetInstance() + ? static_cast( + BrowserMainLoop::GetInstance()->user_input_monitor()) + : nullptr, + std::move(broker_factory)); } void WebContentsImpl::MediaStartedPlaying( @@ -10453,11 +10646,25 @@ void WebContentsImpl::OnFrameIsCapturingMediaStreamChanged( // for ascending. std::vector WebContentsImpl::GetUnattachedOwnedNodes( RenderFrameHostImpl* owner) { - std::vector unattached_owned_nodes; + if (owner->GetParent()) { + return {}; + } BrowserPluginGuestManager* guest_manager = GetBrowserContext()->GetGuestManager(); - if (owner == GetPrimaryMainFrame() && guest_manager) { - guest_manager->ForEachUnattachedGuest( + if (!guest_manager) { + return {}; + } + std::vector unattached_owned_nodes; + if (base::FeatureList::IsEnabled(features::kGuestViewMPArch)) { + guest_manager->ForEachUnattachedGuestPage( + owner->GetPage(), [&](GuestPageHolder& guest_page) { + unattached_owned_nodes.push_back( + static_cast(guest_page) + .frame_tree() + .root()); + }); + } else if (owner == GetPrimaryMainFrame()) { + guest_manager->ForEachUnattachedGuestContents( this, [&](WebContents* guest_contents) { unattached_owned_nodes.push_back( static_cast(guest_contents) @@ -10688,17 +10895,20 @@ void WebContentsImpl::OnNativeThemeUpdated(ui::NativeTheme* observed_theme) { OPTIONAL_TRACE_EVENT0("content", "WebContentsImpl::OnNativeThemeUpdated"); DCHECK(native_theme_observation_.IsObservingSource(observed_theme)); - bool using_dark_colors = observed_theme->ShouldUseDarkColors(); - bool in_forced_colors = observed_theme->InForcedColorsMode(); - ui::NativeTheme::PreferredColorScheme preferred_color_scheme = + const bool using_dark_colors = observed_theme->ShouldUseDarkColors(); + const bool in_forced_colors = observed_theme->InForcedColorsMode(); + const ui::NativeTheme::PreferredColorScheme preferred_color_scheme = observed_theme->GetPreferredColorScheme(); - ui::NativeTheme::PreferredContrast preferred_contrast = + const ui::NativeTheme::PreferredContrast preferred_contrast = observed_theme->GetPreferredContrast(); - bool prefers_reduced_transparency = + const bool prefers_reduced_transparency = observed_theme->GetPrefersReducedTransparency(); - bool inverted_colors = observed_theme->GetInvertedColors(); - base::TimeDelta caret_blink_interval = + const bool inverted_colors = observed_theme->GetInvertedColors(); + const base::TimeDelta caret_blink_interval = observed_theme->GetCaretBlinkInterval(); +#if BUILDFLAG(IS_CHROMEOS) + const bool use_overlay_scrollbar = observed_theme->use_overlay_scrollbar(); +#endif bool preferences_changed = false; if (using_dark_colors_ != using_dark_colors) { @@ -10730,11 +10940,22 @@ void WebContentsImpl::OnNativeThemeUpdated(ui::NativeTheme* observed_theme) { NotifyPreferencesChanged(); } + bool renderer_preference_changed = false; // Only caret blink interval from NativeTheme impacts // blink::RendererPreferences, which are not synced in // NotifyPreferencesChanged(). Sync these if the interval has changed. if (renderer_preferences_.caret_blink_interval != caret_blink_interval) { renderer_preferences_.caret_blink_interval = caret_blink_interval; + renderer_preference_changed = true; + } +#if BUILDFLAG(IS_CHROMEOS) + if (renderer_preferences_.use_overlay_scrollbar != use_overlay_scrollbar) { + renderer_preferences_.use_overlay_scrollbar = use_overlay_scrollbar; + renderer_preference_changed = true; + } +#endif + + if (renderer_preference_changed) { SyncRendererPrefs(); } } @@ -10753,14 +10974,11 @@ void WebContentsImpl::OnColorProviderChanged() { } blink::ColorProviderColorMaps color_map = GetColorProviderColorMaps(); - ExecutePageBroadcastMethodForAllPages(base::BindRepeating( - [](const blink::ColorProviderColorMaps& color_map, - RenderViewHostImpl* rvh) { - if (auto& broadcast = rvh->GetAssociatedPageBroadcast()) { - broadcast->UpdateColorProviders(color_map); - } - }, - color_map)); + ExecutePageBroadcastMethodForAllPages([&color_map](RenderViewHostImpl* rvh) { + if (auto& broadcast = rvh->GetAssociatedPageBroadcast()) { + broadcast->UpdateColorProviders(color_map); + } + }); observers_.NotifyObservers(&WebContentsObserver::OnColorProviderChanged); @@ -10812,10 +11030,8 @@ void WebContentsImpl::ForEachRenderViewHost( if ((view_mask & (ForEachRenderViewHostTypes::kPrerenderViews | ForEachRenderViewHostTypes::kActiveViews)) != 0) { - ForEachFrameTree(base::BindRepeating( - [](ForEachRenderViewHostTypes view_mask, - std::set& render_view_hosts, - FrameTree& frame_tree) { + ForEachFrameTree( + [view_mask, &render_view_hosts](FrameTree& frame_tree) { // Check the view masks. if (frame_tree.is_prerendering()) { // We are in a prerendering page. @@ -10833,8 +11049,7 @@ void WebContentsImpl::ForEachRenderViewHost( [&render_view_hosts](RenderViewHostImpl* rvh) { render_view_hosts.insert(rvh); }); - }, - view_mask, std::ref(render_view_hosts))); + }); } if ((view_mask & ForEachRenderViewHostTypes::kBackForwardCacheViews) != 0) { @@ -11111,6 +11326,7 @@ std::unique_ptr WebContentsImpl::StartPrerendering( const std::string& embedder_histogram_suffix, ui::PageTransition page_transition, bool should_warm_up_compositor, + bool should_prepare_paint_tree, PreloadingHoldbackStatus holdback_status_override, PreloadingAttempt* preloading_attempt, base::RepeatingCallback WebContentsImpl::StartPrerendering( /*target_hint=*/std::nullopt, content::Referrer(), /*eagerness=*/std::nullopt, /*no_vary_search_expected=*/std::nullopt, - /*initiator_origin=*/std::nullopt, - content::ChildProcessHost::kInvalidUniqueID, GetWeakPtr(), - /*initiator_frame_token=*/std::nullopt, - /*initiator_frame_tree_node_id=*/FrameTreeNodeId(), ukm::kInvalidSourceId, - page_transition, should_warm_up_compositor, + /*initiato_render_frame_host=*/nullptr, GetWeakPtr(), page_transition, + should_warm_up_compositor, should_prepare_paint_tree, std::move(url_match_predicate), std::move(prerender_navigation_handle_callback), base::MakeRefCounted()); @@ -11250,13 +11463,11 @@ void WebContentsImpl::UpdateAttributionSupportRenderer() { "WebContentsImpl::UpdateAttributionSupportRenderer"); network::mojom::AttributionSupport support = GetAttributionSupport(); - ExecutePageBroadcastMethodForAllPages(base::BindRepeating( - [](network::mojom::AttributionSupport support, RenderViewHostImpl* rvh) { - if (auto& broadcast = rvh->GetAssociatedPageBroadcast()) { - broadcast->SetPageAttributionSupport(support); - } - }, - support)); + ExecutePageBroadcastMethodForAllPages([support](RenderViewHostImpl* rvh) { + if (auto& broadcast = rvh->GetAssociatedPageBroadcast()) { + broadcast->SetPageAttributionSupport(support); + } + }); } BackForwardTransitionAnimationManager* @@ -11330,7 +11541,14 @@ void WebContentsImpl::SetPartitionedPopinOpenerOnNewWindowIfNeeded( return; } + PartitionedPopinsController::CreateForWebContents( + static_cast(opener->delegate())); new_window->partitioned_popin_opener_ = opener->GetWeakPtr(); + new_window->partitioned_popin_opener_properties_ = + PartitionedPopinOpenerProperties( + opener->GetMainFrame()->GetLastCommittedOrigin(), + opener->ComputeSiteForCookies(), + opener->GetStorageKey().ancestor_chain_bit()); opened_partitioned_popin_ = new_window->GetWeakPtr(); } diff --git a/tools/under-control/src/content/child/runtime_features.cc b/tools/under-control/src/content/child/runtime_features.cc index b99a71088..42414bdcf 100755 --- a/tools/under-control/src/content/child/runtime_features.cc +++ b/tools/under-control/src/content/child/runtime_features.cc @@ -46,6 +46,7 @@ #include "ui/gfx/switches.h" #include "ui/gl/gl_switches.h" #include "ui/native_theme/native_theme_features.h" +#include "ui/native_theme/native_theme_utils.h" #if BUILDFLAG(IS_ANDROID) #include "base/android/build_info.h" @@ -169,7 +170,7 @@ void SetRuntimeFeatureFromChromiumFeature(const base::Feature& chromium_feature, } break; default: - NOTREACHED_IN_MIGRATION(); + NOTREACHED(); } } @@ -186,10 +187,6 @@ void SetRuntimeFeaturesFromChromiumFeatures() { blinkFeatureToBaseFeatureMapping[] = { {wf::EnableAccessibilityAriaVirtualContent, raw_ref(features::kEnableAccessibilityAriaVirtualContent)}, -#if BUILDFLAG(IS_ANDROID) - {wf::EnableAccessibilityPageZoom, - raw_ref(features::kAccessibilityPageZoom)}, -#endif {wf::EnableAccessibilityUseAXPositionForDocumentMarkers, raw_ref(features::kUseAXPositionForDocumentMarkers)}, {wf::EnableAOMAriaRelationshipProperties, @@ -214,7 +211,8 @@ void SetRuntimeFeaturesFromChromiumFeatures() { {wf::EnableFedCm, raw_ref(features::kFedCm), kSetOnlyIfOverridden}, {wf::EnableFedCmButtonMode, raw_ref(features::kFedCmButtonMode), kSetOnlyIfOverridden}, - {wf::EnableFedCmAuthz, raw_ref(features::kFedCmAuthz), kDefault}, + {wf::EnableFedCmAuthz, raw_ref(features::kFedCmAuthz), + kSetOnlyIfOverridden}, {wf::EnableFedCmIdPRegistration, raw_ref(features::kFedCmIdPRegistration), kDefault}, {wf::EnableFedCmIdpSigninStatus, @@ -270,8 +268,6 @@ void SetRuntimeFeaturesFromChromiumFeatures() { raw_ref(features::kPeriodicBackgroundSync)}, {wf::EnablePushMessagingSubscriptionChange, raw_ref(features::kPushSubscriptionChangeEvent)}, - {wf::EnableRestrictGamepadAccess, - raw_ref(features::kRestrictGamepadAccess)}, {wf::EnableSecurePaymentConfirmation, raw_ref(features::kSecurePaymentConfirmation)}, {wf::EnableSecurePaymentConfirmationDebug, @@ -315,6 +311,8 @@ void SetRuntimeFeaturesFromChromiumFeatures() { raw_ref(device::features::kWebXrIncubations)}, {wf::EnableWebXRFrameRate, raw_ref(device::features::kWebXrIncubations)}, + {wf::EnableWebXRGPUBinding, + raw_ref(device::features::kWebXrIncubations)}, {wf::EnableWebXRHandInput, raw_ref(device::features::kWebXrHandInput)}, {wf::EnableWebXRImageTracking, @@ -409,8 +407,6 @@ void SetRuntimeFeaturesFromChromiumFeatures() { raw_ref(features::kTouchTextEditingRedesign)}, {"TrustedTypesFromLiteral", raw_ref(features::kTrustedTypesFromLiteral)}, - {"WebSerialBluetooth", - raw_ref(features::kEnableBluetoothSerialPortProfileInSerialApi)}, {"MediaStreamTrackTransfer", raw_ref(features::kMediaStreamTrackTransfer)}, {"PrivateNetworkAccessPermissionPrompt", @@ -538,7 +534,9 @@ void SetCustomizedRuntimeFeaturesFromCombinedArgs( // These checks are custom wrappers around base::FeatureList::IsEnabled // They're moved here to distinguish them from actual base checks +#if !BUILDFLAG(IS_CHROMEOS) WebRuntimeFeatures::EnableOverlayScrollbars(ui::IsOverlayScrollbarEnabled()); +#endif WebRuntimeFeatures::EnableFluentScrollbars(ui::IsFluentScrollbarEnabled()); WebRuntimeFeatures::EnableFluentOverlayScrollbars( ui::IsFluentOverlayScrollbarEnabled()); @@ -697,7 +695,8 @@ void ResolveInvalidConfigurations() { } if (!base::FeatureList::IsEnabled(blink::features::kInterestGroupStorage)) { - LOG_IF(WARNING, WebRuntimeFeatures::IsAdInterestGroupAPIEnabled()) + LOG_IF(WARNING, + WebRuntimeFeatures::IsAdInterestGroupAPIEnabledByRuntimeFlag()) << "AdInterestGroupAPI cannot be enabled in this " "configuration. Use --" << switches::kEnableFeatures << "=" @@ -706,22 +705,11 @@ void ResolveInvalidConfigurations() { WebRuntimeFeatures::EnableFledge(false); } - if (base::FeatureList::IsEnabled( - features::kCookieDeprecationFacilitatedTesting)) { - WebRuntimeFeatures::EnableFledgeMultiBid(false); - WebRuntimeFeatures::EnableFledgeRealTimeReporting(false); - - if (!base::FeatureList::IsEnabled( - blink::features:: - kAlwaysAllowFledgeDeprecatedRenderURLReplacements)) { - WebRuntimeFeatures::EnableFledgeDeprecatedRenderURLReplacements(false); - } - } - // PermissionElement cannot be enabled without the support of the // browser process. if (!base::FeatureList::IsEnabled(blink::features::kPermissionElement)) { - LOG_IF(WARNING, WebRuntimeFeatures::IsPermissionElementEnabled()) + LOG_IF(WARNING, + WebRuntimeFeatures::IsPermissionElementEnabledByRuntimeFlag()) << "PermissionElement cannot be enabled in this configuration. Use --" << switches::kEnableFeatures << "=" << blink::features::kPermissionElement.name << " instead."; 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 b80b9e005..a1b6aad35 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 @@ -14,6 +14,7 @@ #include "base/functional/callback_helpers.h" #include "base/no_destructor.h" #include "base/notreached.h" +#include "base/supports_user_data.h" #include "base/task/sequenced_task_runner.h" #include "base/task/thread_pool/thread_pool_instance.h" #include "base/values.h" @@ -21,6 +22,7 @@ #include "build/buildflag.h" #include "build/chromeos_buildflags.h" #include "content/browser/ai/echo_ai_manager_impl.h" +#include "content/browser/renderer_host/render_frame_host_impl.h" #include "content/public/browser/anchor_element_preconnect_delegate.h" #include "content/public/browser/authenticator_request_client_delegate.h" #include "content/public/browser/browser_context.h" @@ -238,7 +240,11 @@ ContentBrowserClient::DetermineAddressSpaceFromURL(const GURL& url) { return network::mojom::IPAddressSpace::kUnknown; } -bool ContentBrowserClient::LogWebUIUrl(const GURL& web_ui_url) { +bool ContentBrowserClient::LogWebUICreated(const GURL& web_ui_url) { + return false; +} + +bool ContentBrowserClient::LogWebUIShown(const GURL& web_ui_url) { return false; } @@ -475,6 +481,11 @@ bool ContentBrowserClient::AllowCompressionDictionaryTransport( return true; } +bool ContentBrowserClient::AllowSharedWorkerBlobURLFix( + BrowserContext* context) { + return true; +} + bool ContentBrowserClient::OverrideWebPreferencesAfterNavigation( WebContents* web_contents, blink::web_pref::WebPreferences* prefs) { @@ -544,6 +555,7 @@ std::string ContentBrowserClient::GetWebBluetoothBlocklist() { } bool ContentBrowserClient::IsInterestGroupAPIAllowed( + content::BrowserContext* browser_context, content::RenderFrameHost* render_frame_host, InterestGroupApiOperation operation, const url::Origin& top_frame_origin, @@ -622,6 +634,14 @@ bool ContentBrowserClient::IsSharedStorageSelectURLAllowed( return false; } +bool ContentBrowserClient::IsFencedStorageReadAllowed( + content::BrowserContext* browser_context, + content::RenderFrameHost* rfh, + const url::Origin& top_frame_origin, + const url::Origin& accessing_origin) { + return false; +} + bool ContentBrowserClient::IsPrivateAggregationAllowed( content::BrowserContext* browser_context, const url::Origin& top_frame_origin, @@ -926,14 +946,6 @@ void ContentBrowserClient::RemovePresentationObserver( PresentationObserver* observer, WebContents* web_contents) {} -bool ContentBrowserClient::AddPrivacySandboxAttestationsObserver( - PrivacySandboxAttestationsObserver* observer) { - return true; -} - -void ContentBrowserClient::RemovePrivacySandboxAttestationsObserver( - PrivacySandboxAttestationsObserver* observer) {} - void ContentBrowserClient::OpenURL( content::SiteInstance* site_instance, const content::OpenURLParams& params, @@ -1092,7 +1104,7 @@ void ContentBrowserClient::CreateWebSocket( mojo::PendingRemote handshake_client) { // NOTREACHED because WillInterceptWebSocket returns false. - NOTREACHED_IN_MIGRATION(); + NOTREACHED(); } void ContentBrowserClient::WillCreateWebTransport( @@ -1770,9 +1782,9 @@ bool ContentBrowserClient::ShouldSuppressAXLoadComplete(RenderFrameHost* rfh) { void ContentBrowserClient::BindAIManager( BrowserContext* browser_context, - std::variant context, + base::SupportsUserData* context_user_data, mojo::PendingReceiver receiver) { - EchoAIManagerImpl::Create(context, std::move(receiver)); + EchoAIManagerImpl::Create(*context_user_data, std::move(receiver)); } #if !BUILDFLAG(IS_ANDROID) @@ -1795,17 +1807,6 @@ bool ContentBrowserClient::IsSaveableNavigation( void ContentBrowserClient::OnUiaProviderRequested(bool uia_provider_enabled) {} #endif -base::ReadOnlySharedMemoryRegion -ContentBrowserClient::GetPerformanceScenarioRegionForProcess( - RenderProcessHost* process_host) { - return base::ReadOnlySharedMemoryRegion(); -} - -base::ReadOnlySharedMemoryRegion -ContentBrowserClient::GetGlobalPerformanceScenarioRegion() { - return base::ReadOnlySharedMemoryRegion(); -} - bool ContentBrowserClient::AllowNonActivatedCrossOriginPaintHolding() { return false; } diff --git a/tools/under-control/src/extensions/common/api/automation.idl b/tools/under-control/src/extensions/common/api/automation.idl index 858b67ac9..801d79eab 100755 --- a/tools/under-control/src/extensions/common/api/automation.idl +++ b/tools/under-control/src/extensions/common/api/automation.idl @@ -382,7 +382,8 @@ required, richlyEditable, vertical, - visited + visited, + hasActions }; // All possible actions that can be performed on automation nodes. @@ -476,8 +477,9 @@ caption, contents, cssAltText, + interestTarget, placeholder, - popoverAttribute, + popoverTarget, prohibited, prohibitedAndRedundant, relatedElement, @@ -489,7 +491,8 @@ ariaDescription, attributeExplicitlyEmpty, buttonLabel, - popoverAttribute, + interestTarget, + popoverTarget, prohibitedNameRepair, relatedElement, rubyAnnotation, diff --git a/tools/under-control/src/extensions/common/api/cec_private.idl b/tools/under-control/src/extensions/common/api/cec_private.idl index 0a570a99c..c4079629f 100755 --- a/tools/under-control/src/extensions/common/api/cec_private.idl +++ b/tools/under-control/src/extensions/common/api/cec_private.idl @@ -3,7 +3,7 @@ // found in the LICENSE file. // Private API for HDMI CEC functionality. -[platforms=("chromeos", "lacros")] +[platforms=("chromeos")] namespace cecPrivate { enum DisplayCecPowerState { diff --git a/tools/under-control/src/extensions/common/api/clipboard.idl b/tools/under-control/src/extensions/common/api/clipboard.idl index f503c88d8..695876db4 100755 --- a/tools/under-control/src/extensions/common/api/clipboard.idl +++ b/tools/under-control/src/extensions/common/api/clipboard.idl @@ -6,7 +6,7 @@ // access data of the clipboard. This is a temporary solution for // chromeos platform apps until open-web alternative is available. It will be // deprecated once open-web solution is available, which could be in 2017 Q4. -[platforms=("chromeos", "lacros"), +[platforms=("chromeos"), implemented_in="extensions/browser/api/clipboard/clipboard_api.h"] namespace clipboard { // Supported image types. diff --git a/tools/under-control/src/extensions/common/api/power.idl b/tools/under-control/src/extensions/common/api/power.idl index 497e7d39e..8ce387517 100755 --- a/tools/under-control/src/extensions/common/api/power.idl +++ b/tools/under-control/src/extensions/common/api/power.idl @@ -29,7 +29,7 @@ namespace power { // Reports a user activity in order to awake the screen from a dimmed or // turned off state or from a screensaver. Exits the screensaver if it is // currently active. - [platforms=("chromeos", "lacros")] static void reportActivity( + [platforms=("chromeos")] static void reportActivity( optional VoidCallback callback); }; }; diff --git a/tools/under-control/src/extensions/common/api/virtual_keyboard.idl b/tools/under-control/src/extensions/common/api/virtual_keyboard.idl index 8ac7469ea..6f8c35f33 100755 --- a/tools/under-control/src/extensions/common/api/virtual_keyboard.idl +++ b/tools/under-control/src/extensions/common/api/virtual_keyboard.idl @@ -4,7 +4,7 @@ // The chrome.virtualKeyboard API is a kiosk only API used to // configure virtual keyboard layout and behavior in kiosk sessions. -[platforms=("chromeos", "lacros")] +[platforms=("chromeos")] namespace virtualKeyboard { //

Determines whether advanced virtual keyboard features should be enabled // or not. They are enabled by default.

diff --git a/tools/under-control/src/gin/v8_initializer.cc b/tools/under-control/src/gin/v8_initializer.cc index a428a78a7..6fd3a37ee 100755 --- a/tools/under-control/src/gin/v8_initializer.cc +++ b/tools/under-control/src/gin/v8_initializer.cc @@ -340,6 +340,9 @@ void SetFlags(IsolateHolder::ScriptMode mode, SetV8FlagsIfOverridden(features::kV8ExternalMemoryAccountedInGlobalLimit, "--external-memory-accounted-in-global-limit", "--no-external-memory-accounted-in-global-limit"); + SetV8FlagsIfOverridden(features::kV8GCSpeedUsesCounters, + "--gc-speed-uses-counters", + "--no-gc-speed-uses-counters"); SetV8FlagsIfOverridden(features::kV8TurboFastApiCalls, "--turbo-fast-api-calls", "--no-turbo-fast-api-calls"); SetV8FlagsIfOverridden(features::kV8MegaDomIC, "--mega-dom-ic", @@ -443,16 +446,6 @@ void SetFlags(IsolateHolder::ScriptMode mode, SetV8FlagsFormatted("--no-efficiency-mode-for-tiering-heuristics"); } - if (base::FeatureList::IsEnabled( - features::kWebAssemblyMoreAggressiveCodeCaching)) { - SetV8FlagsFormatted( - "--wasm-caching-threshold=%d --wasm-caching-hard-threshold=%d " - "--wasm-caching-timeout-ms=%d", - features::kWebAssemblyMoreAggressiveCodeCachingThreshold.Get(), - features::kWebAssemblyMoreAggressiveCodeCachingHardThreshold.Get(), - features::kWebAssemblyMoreAggressiveCodeCachingTimeoutMs.Get()); - } - // Make sure aliases of kV8SlowHistograms only enable the feature to // avoid contradicting settings between multiple finch experiments. bool any_slow_histograms_alias = diff --git a/tools/under-control/src/services/network/network_context.cc b/tools/under-control/src/services/network/network_context.cc index 383f570b3..f03bc67fb 100755 --- a/tools/under-control/src/services/network/network_context.cc +++ b/tools/under-control/src/services/network/network_context.cc @@ -17,6 +17,7 @@ #include "base/build_time.h" #include "base/callback_list.h" #include "base/check.h" +#include "base/check_op.h" #include "base/command_line.h" #include "base/containers/unique_ptr_adapters.h" #include "base/dcheck_is_on.h" @@ -89,6 +90,7 @@ #include "net/http/http_request_headers.h" #include "net/http/http_server_properties.h" #include "net/http/http_transaction_factory.h" +#include "net/log/net_log_source_type.h" #include "net/net_buildflags.h" #include "net/proxy_resolution/configured_proxy_resolution_service.h" #include "net/proxy_resolution/proxy_config.h" @@ -219,14 +221,16 @@ class WrappedTestingCertVerifier : public net::CertVerifier { std::unique_ptr* out_req, const net::NetLogWithSource& net_log) override { verify_result->Reset(); - if (!g_cert_verifier_for_testing) + if (!g_cert_verifier_for_testing) { return net::ERR_FAILED; + } return g_cert_verifier_for_testing->Verify( params, verify_result, std::move(callback), out_req, net_log); } void SetConfig(const Config& config) override { - if (!g_cert_verifier_for_testing) + if (!g_cert_verifier_for_testing) { return; + } g_cert_verifier_for_testing->SetConfig(config); } void AddObserver(Observer* observer) override { @@ -340,8 +344,9 @@ bool MatchesDomainFilter(mojom::ClearDataFilter_Type filter_type, // must contain no origins. A null filter matches everything. base::RepeatingCallback MakeDomainFilter( mojom::ClearDataFilter* filter) { - if (!filter) + if (!filter) { return base::BindRepeating([](const std::string&) { return true; }); + } DCHECK(filter->origins.empty()) << "Origin filtering not allowed in a domain-only filter"; @@ -430,8 +435,9 @@ class NetworkContextApplicationStatusListener } void Notify(base::android::ApplicationState state) override { - if (callback_) + if (callback_) { callback_.Run(state); + } } private: @@ -501,8 +507,9 @@ void SCTAuditingDelegate::MaybeEnqueueReport( const net::X509Certificate* validated_certificate_chain, const net::SignedCertificateTimestampAndStatusList& signed_certificate_timestamps) { - if (!context_) + if (!context_) { return; + } context_->MaybeEnqueueSCTReport(host_port_pair, validated_certificate_chain, signed_certificate_timestamps); } @@ -516,13 +523,15 @@ bool GetFullDataFilePath( std::optional network::mojom::NetworkContextFilePaths::* field_name, base::FilePath& full_path) { - if (!file_paths) + if (!file_paths) { return false; + } std::optional relative_file_path = file_paths.get()->*field_name; - if (!relative_file_path.has_value()) + if (!relative_file_path.has_value()) { return false; + } // Path to a data file should always be a plain filename. DCHECK_EQ(relative_file_path->BaseName(), *relative_file_path); @@ -578,6 +587,23 @@ mojom::URLLoaderFactoryParamsPtr CreateURLLoaderFactoryParamsForPrefetch() { return params; } +// These values are persisted to logs. Entries should not be renumbered and +// numeric values should never be reused. +// +// LINT.IfChange(HSTSRedirectUpgradeReason) +enum class HSTSRedirectUpgradeReason { + kNotUpgradedNotHTTP = 0, + kNotUpgradedHSTSUnavailable = 1, + kNotUpgradedNoHSTSPin = 2, + kUpgraded = 3, + kMaxValue = kUpgraded, +}; +// LINT.ThenChange(//tools/metrics/histograms/metadata/net/enums.xml:HSTSRedirectUpgradeReason) + +void RecordHSTSPreconnectUpgradeReason(HSTSRedirectUpgradeReason reason) { + base::UmaHistogramEnumeration("Net.PreconnectHSTSUpgradesUrl", reason); +} + } // namespace constexpr uint32_t NetworkContext::kMaxOutstandingRequestsPerProcess; @@ -639,7 +665,8 @@ NetworkContext::NetworkContext( http_auth_merged_preferences_(network_service), ohttp_handler_(this), prefetch_enabled_( - base::FeatureList::IsEnabled(features::kNetworkContextPrefetch)), + base::FeatureList::IsEnabled(features::kNetworkContextPrefetch) && + (params_->bound_network == net::handles::kInvalidNetworkHandle)), cors_non_wildcard_request_headers_support_(base::FeatureList::IsEnabled( features::kCorsNonWildcardRequestHeadersSupport)), prefetch_cache_(prefetch_enabled_ ? std::make_unique() @@ -753,8 +780,9 @@ NetworkContext::NetworkContext( params_->split_auth_cache_by_network_anonymization_key); #if BUILDFLAG(IS_CT_SUPPORTED) - if (params_->ct_policy) + if (params_->ct_policy) { SetCTPolicy(std::move(params_->ct_policy)); + } base::FilePath sct_auditing_path; GetFullDataFilePath(params_->file_paths, @@ -767,8 +795,9 @@ NetworkContext::NetworkContext( #endif // BUILDFLAG(IS_CT_SUPPORTED) #if BUILDFLAG(IS_ANDROID) - if (params_->cookie_manager) + if (params_->cookie_manager) { GetCookieManager(std::move(params_->cookie_manager)); + } #endif // BUILDFLAG(IS_ANDROID) CreateURLLoaderFactoryForCertNetFetcher( @@ -815,16 +844,20 @@ NetworkContext::NetworkContext( http_auth_merged_preferences_(network_service), ohttp_handler_(this), prefetch_enabled_( - base::FeatureList::IsEnabled(features::kNetworkContextPrefetch)), + base::FeatureList::IsEnabled(features::kNetworkContextPrefetch) && + (url_request_context_->bound_network() == + net::handles::kInvalidNetworkHandle)), prefetch_cache_(prefetch_enabled_ ? std::make_unique() : nullptr) { // May be nullptr in tests. - if (network_service_) + if (network_service_) { network_service_->RegisterNetworkContext(this); + } resource_scheduler_ = std::make_unique(); - for (const auto& key : cors_exempt_header_list) + for (const auto& key : cors_exempt_header_list) { cors_exempt_header_list_.insert(key); + } acam_preflight_spec_conformant_ = base::FeatureList::IsEnabled( network::features:: @@ -843,8 +876,9 @@ NetworkContext::~NetworkContext() { network_service_->DeregisterNetworkContext(this); } - if (domain_reliability_monitor_) + if (domain_reliability_monitor_) { domain_reliability_monitor_->Shutdown(); + } // Because of the order of declaration in the class, // domain_reliability_monitor_ will be destroyed before // |url_loader_factories_| which could own URLLoader's whose destructor call @@ -987,10 +1021,12 @@ void NetworkContext::ResetURLLoaderFactories() { // invalidate the iterator if the factory gets deleted. std::vector factories; factories.reserve(url_loader_factories_.size()); - for (const auto& factory : url_loader_factories_) + for (const auto& factory : url_loader_factories_) { factories.push_back(factory.get()); - for (auto* factory : factories) + } + for (auto* factory : factories) { factory->ClearBindings(); + } } void NetworkContext::GetViaObliviousHttp( @@ -1187,8 +1223,9 @@ void NetworkContext::LoaderDestroyed(uint32_t process_id) { auto it = loader_count_per_process_.find(process_id); CHECK(it != loader_count_per_process_.end(), base::NotFatalUntil::M130); it->second -= 1; - if (it->second == 0) + if (it->second == 0) { loader_count_per_process_.erase(it); + } } bool NetworkContext::CanCreateLoader(uint32_t process_id) { @@ -1199,10 +1236,12 @@ bool NetworkContext::CanCreateLoader(uint32_t process_id) { size_t NetworkContext::GetNumOutstandingResolveHostRequestsForTesting() const { size_t sum = 0; - if (internal_host_resolver_) + if (internal_host_resolver_) { sum += internal_host_resolver_->GetNumOutstandingRequestsForTesting(); - for (const auto& host_resolver : host_resolvers_) + } + for (const auto& host_resolver : host_resolvers_) { sum += host_resolver->GetNumOutstandingRequestsForTesting(); // IN-TEST + } return sum; } @@ -1271,8 +1310,9 @@ void NetworkContext::ClearNetworkingHistoryBetween( // commited to disk. They probably should, as most similar methods net/ // exposes do. // May not be set in all tests. - if (network_qualities_pref_delegate_) + if (network_qualities_pref_delegate_) { network_qualities_pref_delegate_->ClearPrefs(); + } url_request_context_->http_server_properties()->Clear(barrier); } @@ -1427,8 +1467,9 @@ void NetworkContext::SendReportsAndRemoveSource( DCHECK(!reporting_source.is_empty()); net::ReportingService* reporting_service = url_request_context()->reporting_service(); - if (reporting_service) + if (reporting_service) { reporting_service->SendReportsAndRemoveSource(reporting_source); + } #endif // BUILDFLAG(ENABLE_REPORTING) } @@ -1504,8 +1545,9 @@ void NetworkContext::QueueSignedExchangeReport( net::NetworkErrorLoggingService* logging_service = url_request_context_->network_error_logging_service(); - if (!logging_service) + if (!logging_service) { return; + } std::string user_agent; if (url_request_context_->http_user_agent_settings() != nullptr) { user_agent = @@ -1665,8 +1707,9 @@ void NetworkContext::SetEnableReferrers(bool enable_referrers) { #if BUILDFLAG(IS_CT_SUPPORTED) void NetworkContext::SetCTPolicy(mojom::CTPolicyPtr ct_policy) { - if (!require_ct_delegate_) + if (!require_ct_delegate_) { return; + } require_ct_delegate_->UpdateCTPolicies(ct_policy->excluded_hosts, ct_policy->excluded_spkis); @@ -1696,8 +1739,9 @@ int NetworkContext::CheckCTRequirementsForSignedExchange( case net::TransportSecurityState::CT_NOT_REQUIRED: // CT is not required if the certificate does not chain to a publicly // trusted root certificate. - if (!cert_verify_result.is_issued_by_known_root) + if (!cert_verify_result.is_issued_by_known_root) { return net::OK; + } // For old certificates (issued before 2018-05-01), // CheckCTRequirements() may return CT_NOT_REQUIRED, so we check the // compliance status here. @@ -1867,8 +1911,9 @@ void NetworkContext::CreateWebSocket( mojo::PendingRemote header_client, const std::optional& throttling_profile_id) { #if BUILDFLAG(ENABLE_WEBSOCKETS) - if (!websocket_factory_) + if (!websocket_factory_) { websocket_factory_ = std::make_unique(this); + } DCHECK_GE(process_id, 0); @@ -1998,8 +2043,9 @@ void NetworkContext::VerifyCertForSignedExchange( net::NetLogSourceType::CERT_VERIFIER_JOB)); cert_verifier_requests_[cert_verify_id] = std::move(pending_cert_verify); - if (result != net::ERR_IO_PENDING) + if (result != net::ERR_IO_PENDING) { OnVerifyCertForSignedExchangeComplete(cert_verify_id, result); + } } void NetworkContext::NotifyExternalCacheHit(const GURL& url, @@ -2008,8 +2054,9 @@ void NetworkContext::NotifyExternalCacheHit(const GURL& url, bool include_credentials) { net::HttpCache* cache = url_request_context_->http_transaction_factory()->GetCache(); - if (!cache) + if (!cache) { return; + } cache->OnExternalCacheHit(url, http_method, key, include_credentials); } @@ -2165,23 +2212,27 @@ void NetworkContext::VerifyCertificateForTesting( result, base::BindOnce(TestVerifyCertCallback, std::move(state), std::move(callback)), - request, net::NetLogWithSource()); + request, + net::NetLogWithSource::Make(net::NetLog::Get(), + net::NetLogSourceType::NONE)); } void NetworkContext::PreconnectSockets( uint32_t num_streams, const GURL& original_url, mojom::CredentialsMode credentials_mode, - const net::NetworkAnonymizationKey& network_anonymization_key) { + const net::NetworkAnonymizationKey& network_anonymization_key, + const net::MutableNetworkTrafficAnnotationTag& traffic_annotation) { DCHECK(!require_network_anonymization_key_ || !network_anonymization_key.IsEmpty()); - GURL url = GetHSTSRedirect(original_url); + GURL url = GetHSTSRedirectForPreconnect(original_url); // |PreconnectSockets| may receive arguments from the renderer, which is not // guaranteed to validate them. - if (num_streams == 0) + if (num_streams == 0) { return; + } // Preconnect is disallowed if network access is disabled for the nonce. if (network_anonymization_key.GetNonce().has_value() && @@ -2200,6 +2251,7 @@ void NetworkContext::PreconnectSockets( request_info.method = net::HttpRequestHeaders::kGetMethod; request_info.extra_headers.SetHeader(net::HttpRequestHeaders::kUserAgent, user_agent); + request_info.traffic_annotation = traffic_annotation; switch (credentials_mode) { case mojom::CredentialsMode::kOmit: @@ -2255,12 +2307,13 @@ void NetworkContext::CreateP2PSocketManager( void NetworkContext::CreateMdnsResponder( mojo::PendingReceiver responder_receiver) { #if BUILDFLAG(ENABLE_MDNS) - if (!mdns_responder_manager_) + if (!mdns_responder_manager_) { mdns_responder_manager_ = std::make_unique(); + } mdns_responder_manager_->CreateMdnsResponder(std::move(responder_receiver)); #else - NOTREACHED_IN_MIGRATION(); + NOTREACHED(); #endif // BUILDFLAG(ENABLE_MDNS) } @@ -2356,10 +2409,11 @@ void NetworkContext::LookupServerBasicAuthCredentials( net::HttpAuthCache::Entry* entry = http_auth_cache->LookupByPath( url::SchemeHostPort(url), net::HttpAuth::AUTH_SERVER, network_anonymization_key, url.path()); - if (entry && entry->scheme() == net::HttpAuth::AUTH_SCHEME_BASIC) + if (entry && entry->scheme() == net::HttpAuth::AUTH_SCHEME_BASIC) { std::move(callback).Run(entry->credentials()); - else + } else { std::move(callback).Run(std::nullopt); + } } #if BUILDFLAG(IS_CHROMEOS_ASH) @@ -2394,10 +2448,11 @@ void NetworkContext::LookupProxyAuthCredentials( net::HttpAuthCache::Entry* entry = http_auth_cache->Lookup( scheme_host_port, net::HttpAuth::AUTH_PROXY, realm, net_scheme, net::NetworkAnonymizationKey()); - if (entry) + if (entry) { std::move(callback).Run(entry->credentials()); - else + } else { std::move(callback).Run(std::nullopt); + } } #endif // BUILDFLAG(IS_CHROMEOS_ASH) @@ -2538,26 +2593,29 @@ URLRequestContextOwner NetworkContext::MakeURLRequestContext( // Decide which ProxyDelegate to create. At most one of these will be the // case for any given NetworkContext: either PrefetchProxy, handling its // custom proxy configs, or IpProtection, using the proxy allowlist. - // TODO(https://crbug.com/40947771): Once the WebView traffic experiment is - // done, we should only create an IpProtectionProxyDelegate when - // `params_->ip_protection_config_getter` is set (to avoid creating - // proxynetwork_conte delegates for network contexts that don't participate in - // IP Protection, or for any network context when the IP Protection feature is - // disabled). - auto* nspal = network_service_->masked_domain_list_manager(); + auto* mdl_manager = network_service_->masked_domain_list_manager(); std::unique_ptr ip_protection_control_mojo; - if (!params_->initial_custom_proxy_config && nspal->IsEnabled()) { - auto ipp_core = std::make_unique( - std::make_unique( - std::move(params_->ip_protection_config_getter)), - params_->enable_ip_protection); + bool requires_ipp_proxy_delegate = + mdl_manager->IsEnabled() && + (params_->ip_protection_core_host || + net::features::kIpPrivacyAlwaysCreateCore.Get()); + if (requires_ipp_proxy_delegate) { + CHECK(!params_->initial_custom_proxy_config); + CHECK(!params_->custom_proxy_config_client_receiver); + auto ip_protection_core_impl = + std::make_unique( + std::make_unique( + std::move(params_->ip_protection_core_host)), + mdl_manager, params_->enable_ip_protection); ip_protection_control_mojo = std::make_unique( - std::move(params_->ip_protection_control), ipp_core.get()); + std::move(params_->ip_protection_control), + ip_protection_core_impl.get()); builder.set_proxy_delegate( std::make_unique( - nspal, std::move(ipp_core))); + ip_protection_core_impl.get())); + ip_protection_core_ = std::move(ip_protection_core_impl); } else if (params_->initial_custom_proxy_config || params_->custom_proxy_config_client_receiver) { builder.set_proxy_delegate(std::make_unique( @@ -2589,8 +2647,9 @@ URLRequestContextOwner NetworkContext::MakeURLRequestContext( std::unique_ptr cookie_store = std::make_unique(session_cleanup_cookie_store.get(), net_log); - if (params_->persist_session_cookies) + if (params_->persist_session_cookies) { cookie_store->SetPersistSessionCookies(true); + } builder.SetCookieStore(std::move(cookie_store)); } @@ -2792,8 +2851,9 @@ URLRequestContextOwner NetworkContext::MakeURLRequestContext( net::HttpNetworkSessionParams session_params; bool is_quic_force_disabled = false; - if (network_service_ && network_service_->quic_disabled()) + if (network_service_ && network_service_->quic_disabled()) { is_quic_force_disabled = true; + } auto quic_context = std::make_unique(); network_session_configurator::ParseCommandLineAndFieldTrials( @@ -2865,6 +2925,20 @@ URLRequestContextOwner NetworkContext::MakeURLRequestContext( #if BUILDFLAG(ENABLE_DEVICE_BOUND_SESSIONS) if (params_->device_bound_sessions_enabled) { builder.set_has_device_bound_session_service(true); + + if (base::FeatureList::IsEnabled( + net::features::kPersistDeviceBoundSessions)) { + base::FilePath device_bound_sessions_file_path; + if (GetFullDataFilePath(params_->file_paths, + &network::mojom::NetworkContextFilePaths:: + device_bound_sessions_database_name, + device_bound_sessions_file_path)) { + // Network-bound NetworkContexts should not persist state on disk. + CHECK(!is_network_bound); + builder.set_device_bound_sessions_file_path( + device_bound_sessions_file_path); + } + } } #endif @@ -2944,7 +3018,10 @@ NetworkContext::MakeSessionCleanupCookieStore() const { } #if BUILDFLAG(IS_WIN) - const bool enable_exclusive_access = params_->enable_locking_cookie_database; + const bool enable_exclusive_access = + params_->enable_locking_cookie_database.value_or( + base::FeatureList::IsEnabled( + features::kEnableLockCookieDatabaseByDefault)); #else const bool enable_exclusive_access = false; #endif // BUILDFLAG(IS_WIN) @@ -2989,20 +3066,36 @@ void NetworkContext::OnHttpCacheSizeComputed( void NetworkContext::OnConnectionError() { // If owned by the network service, this call will delete |this|. - if (on_connection_close_callback_) + if (on_connection_close_callback_) { std::move(on_connection_close_callback_).Run(this); + } } -GURL NetworkContext::GetHSTSRedirect(const GURL& original_url) { +GURL NetworkContext::GetHSTSRedirectForPreconnect(const GURL& original_url) { // TODO(lilyhoughton) This needs to be gotten rid of once explicit // construction with a URLRequestContext is no longer supported. - if (!url_request_context_->transport_security_state() || - !original_url.SchemeIs("http") || - !url_request_context_->transport_security_state()->ShouldUpgradeToSSL( + + if (!url_request_context_->transport_security_state()) { + RecordHSTSPreconnectUpgradeReason( + HSTSRedirectUpgradeReason::kNotUpgradedHSTSUnavailable); + return original_url; + } + + if (!original_url.SchemeIs(url::kHttpScheme)) { + RecordHSTSPreconnectUpgradeReason( + HSTSRedirectUpgradeReason::kNotUpgradedNotHTTP); + return original_url; + } + + if (!url_request_context_->transport_security_state()->ShouldUpgradeToSSL( original_url.host())) { + RecordHSTSPreconnectUpgradeReason( + HSTSRedirectUpgradeReason::kNotUpgradedNoHSTSPin); return original_url; } + RecordHSTSPreconnectUpgradeReason(HSTSRedirectUpgradeReason::kUpgraded); + GURL::Replacements replacements; replacements.SetSchemeStr("https"); return original_url.ReplaceComponents(replacements); @@ -3062,8 +3155,9 @@ void NetworkContext::OnVerifyCertForSignedExchangeComplete( } #if BUILDFLAG(IS_CT_SUPPORTED) if (result != net::ERR_SSL_PINNED_KEY_NOT_IN_CERT_CHAIN && - ct_result != net::OK) + ct_result != net::OK) { result = ct_result; + } #endif // BUILDFLAG(IS_CT_SUPPORTED) } @@ -3092,8 +3186,9 @@ void NetworkContext::InitializeCorsParams() { cors_origin_access_list_.SetBlockListForOrigin(pattern->source_origin, pattern->block_patterns); } - for (const auto& key : params_->cors_exempt_header_list) + for (const auto& key : params_->cors_exempt_header_list) { cors_exempt_header_list_.insert(key); + } acam_preflight_spec_conformant_ = base::FeatureList::IsEnabled( 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 6e3fb9bdf..6f4508a8a 100755 --- a/tools/under-control/src/testing/variations/fieldtrial_testing_config.json +++ b/tools/under-control/src/testing/variations/fieldtrial_testing_config.json @@ -5,7 +5,6 @@ "android_webview", "android", "chromeos", - "chromeos_lacros", "ios", "linux", "mac", @@ -22,6 +21,26 @@ ] } ], + "ANGLEPerContextBlobCache": [ + { + "platforms": [ + "android_webview", + "android", + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "ANGLEPerContextBlobCache" + ] + } + ] + } + ], "AVFoundationCaptureForwardSampleTimestamps": [ { "platforms": [ @@ -37,6 +56,21 @@ ] } ], + "AblateSearchProviderWarmupRequests": [ + { + "platforms": [ + "ios" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "AblateSearchProviderWarmup" + ] + } + ] + } + ], "AccessibilityIncludeLongClickAction": [ { "platforms": [ @@ -222,11 +256,34 @@ ] } ], - "AiSettingsPageRefresh": [ + "AggressiveShaderCacheLimits": [ { "platforms": [ + "android", + "android_weblayer", + "android_webview", "chromeos", "chromeos_lacros", + "fuchsia", + "ios", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "AggressiveShaderCacheLimits" + ] + } + ] + } + ], + "AiSettingsPageRefresh": [ + { + "platforms": [ + "chromeos", "linux", "mac", "windows" @@ -262,7 +319,6 @@ "android", "android_webview", "chromeos", - "chromeos_lacros", "fuchsia", "ios", "linux", @@ -324,48 +380,6 @@ ] } ], - "AndroidBackPressRefactor": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "EnabledWithSystemBack_20230404", - "params": { - "system_back": "true" - }, - "enable_features": [ - "BackGestureRefactorAndroid" - ], - "disable_features": [ - "BackGestureActivityTabProvider" - ] - }, - { - "name": "EnabledWithoutSystemBack_20230404", - "params": { - "system_back": "false" - }, - "enable_features": [ - "BackGestureRefactorAndroid" - ], - "disable_features": [ - "BackGestureActivityTabProvider" - ] - }, - { - "name": "ControlWithActivityTabProvider_20230404", - "enable_features": [ - "BackGestureActivityTabProvider" - ], - "disable_features": [ - "BackGestureRefactorAndroid" - ] - } - ] - } - ], "AndroidBrowserControlsInViz": [ { "platforms": [ @@ -378,7 +392,6 @@ "AndroidBrowserControlsInViz" ], "disable_features": [ - "AndroidBcivPhoneOnly", "AndroidBcivWithSimpleScheduler", "AndroidBcivWithSuppression", "AndroidBcivZeroBrowserFrames" @@ -406,7 +419,7 @@ ] } ], - "AndroidHubFloatingActionButton": [ + "AndroidHubSearch": [ { "platforms": [ "android" @@ -415,24 +428,8 @@ { "name": "Enabled", "params": { - "hub_alternative_fab_color": "true" + "enable_press_enter_to_search": "true" }, - "enable_features": [ - "AndroidHubFloatingActionButton", - "IPH_TabSwitcherFloatingActionButton" - ] - } - ] - } - ], - "AndroidHubSearch": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "Enabled", "enable_features": [ "AndroidHubSearch" ] @@ -496,38 +493,6 @@ ] } ], - "AndroidMessagesSaveCard": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "Enabled_60000_dialogV2_2022-04-18", - "params": { - "autodismiss_duration_ms_SaveCard": "60000", - "save_card_dialog_v2_enabled": "true", - "save_card_message_use_followup_button_text": "false", - "save_card_message_use_gpay_icon": "true" - }, - "enable_features": [ - "MessagesForAndroidSaveCard" - ] - }, - { - "name": "Enabled_60000_dialogV1_2022-04-18", - "params": { - "autodismiss_duration_ms_SaveCard": "60000", - "save_card_message_use_followup_button_text": "false", - "save_card_message_use_gpay_icon": "true" - }, - "enable_features": [ - "MessagesForAndroidSaveCard" - ] - } - ] - } - ], "AndroidPdfInline": [ { "platforms": [ @@ -699,8 +664,7 @@ "ApnRevamp": [ { "platforms": [ - "chromeos", - "chromeos_lacros" + "chromeos" ], "experiments": [ { @@ -961,17 +925,14 @@ ] } ], - "ArcOnDemandV2": [ + "ArcOnDemandV2_holdback": [ { "platforms": [ "chromeos" ], "experiments": [ { - "name": "Enabled_app_launch_20240705", - "params": { - "activate_on_app_launch": "true" - }, + "name": "Enabled", "enable_features": [ "ArcOnDemandV2" ] @@ -1241,6 +1202,23 @@ ] } ], + "AsyncFastCheckout": [ + { + "platforms": [ + "android", + "android_weblayer", + "android_webview" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "AsyncFastCheckout" + ] + } + ] + } + ], "AsyncNotiicationmanager": [ { "platforms": [ @@ -1262,7 +1240,6 @@ "android", "android_webview", "chromeos", - "chromeos_lacros", "ios", "linux", "mac" @@ -1280,8 +1257,7 @@ "AudioFocusEnforcementStudy": [ { "platforms": [ - "chromeos", - "chromeos_lacros" + "chromeos" ], "experiments": [ { @@ -1308,29 +1284,6 @@ ] } ], - "AudioRendererAlgorithmStartingCapacityForEncrypted": [ - { - "platforms": [ - "android", - "chromeos", - "chromeos_lacros", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "StartingCapacityForEncrypted_1000ms", - "params": { - "starting_capacity_for_encrypted": "1000ms" - }, - "enable_features": [ - "AudioRendererAlgorithmParameters" - ] - } - ] - } - ], "AudioSelectionImprovement": [ { "platforms": [ @@ -1341,9 +1294,6 @@ "name": "Enabled", "enable_features": [ "AudioSelectionImprovement" - ], - "disable_features": [ - "ResetAudioSelectionImprovementPref" ] } ] @@ -1364,22 +1314,6 @@ ] } ], - "AuthenticateUsingUserConsentVerifierApi": [ - { - "platforms": [ - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "AuthenticateUsingUserConsentVerifierApi", - "AuthenticateUsingUserConsentVerifierInteropApi" - ] - } - ] - } - ], "AutoDisableAccessibility": [ { "platforms": [ @@ -1404,7 +1338,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -1486,7 +1419,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -1505,11 +1437,28 @@ ] } ], + "AutofillAiTeamfood": [ + { + "platforms": [ + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "AutofillAi" + ] + } + ] + } + ], "AutofillCreditCardUserPerceptionSurvey": [ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -1534,7 +1483,6 @@ "android", "android_webview", "chromeos", - "chromeos_lacros", "ios", "linux", "mac", @@ -1550,6 +1498,24 @@ ] } ], + "AutofillDisableLocalCardMigration": [ + { + "platforms": [ + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "AutofillDisableLocalCardMigration" + ] + } + ] + } + ], "AutofillDynamicallyLoadsFieldsForAddressInput": [ { "platforms": [ @@ -1570,7 +1536,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "ios", "linux", "mac", @@ -1601,11 +1566,11 @@ ] } ], - "AutofillEnableCardBenefits": [ + "AutofillEnableCardBenefitsForAmericanExpress": [ { "platforms": [ + "android", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -1614,18 +1579,16 @@ { "name": "Enabled", "enable_features": [ - "AutofillEnableCardBenefitsForAmericanExpress", - "AutofillEnableCardBenefitsForCapitalOne" + "AutofillEnableCardBenefitsForAmericanExpress" ] } ] } ], - "AutofillEnableCardBenefitsIph": [ + "AutofillEnableCardBenefitsForCapitalOne": [ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -1634,18 +1597,16 @@ { "name": "Enabled", "enable_features": [ - "AutofillEnableCardBenefitsIph" + "AutofillEnableCardBenefitsForCapitalOne" ] } ] } ], - "AutofillEnableCvcStorage": [ + "AutofillEnableCardBenefitsIph": [ { "platforms": [ - "android", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -1654,15 +1615,13 @@ { "name": "Enabled", "enable_features": [ - "AutofillEnableCvcStorageAndFilling", - "AutofillEnableCvcStorageAndFillingEnhancement", - "SyncAutofillWalletCredentialData" + "AutofillEnableCardBenefitsIph" ] } ] } ], - "AutofillEnableDisablingSuggestionsOnJSFocus": [ + "AutofillEnableCardBenefitsSync": [ { "platforms": [ "android" @@ -1671,65 +1630,75 @@ { "name": "Enabled", "enable_features": [ - "AutofillAndroidDisableSuggestionsOnJSFocus" + "AutofillEnableCardBenefitsSync" ] } ] } ], - "AutofillEnableEmailHeuristicOnlyAddressForms": [ + "AutofillEnableCvcStorage": [ { "platforms": [ "android", "chromeos", - "chromeos_lacros", - "ios", "linux", "mac", "windows" ], "experiments": [ { - "name": "Enabled_AutocompleteAll", - "params": { - "autocomplete_email": "false" - }, + "name": "Enabled", "enable_features": [ - "AutofillEnableEmailHeuristicOnlyAddressForms" + "AutofillEnableCvcStorageAndFilling", + "AutofillEnableCvcStorageAndFillingEnhancement", + "SyncAutofillWalletCredentialData" ] } ] } ], - "AutofillEnableExpirationDateImprovements": [ + "AutofillEnableDisablingSuggestionsOnJSFocus": [ { "platforms": [ - "android", - "android_webview", - "chromeos", - "chromeos_lacros", - "fuchsia", - "ios", - "linux", - "mac", - "windows" + "android" ], "experiments": [ { "name": "Enabled", "enable_features": [ - "AutofillEnableExpirationDateImprovements" + "AutofillAndroidDisableSuggestionsOnJSFocus" ] } ] } ], - "AutofillEnableFillingPhoneCountryCodesByAddressCountryCodes": [ + "AutofillEnableExpirationDateImprovements": [ + { + "platforms": [ + "android", + "android_webview", + "chromeos", + "fuchsia", + "ios", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "AutofillEnableExpirationDateImprovements" + ] + } + ] + } + ], + "AutofillEnableFillingPhoneCountryCodesByAddressCountryCodes": [ { "platforms": [ "android", "chromeos", - "chromeos_lacros", "fuchsia", "ios", "linux", @@ -1769,7 +1738,6 @@ "android", "android_webview", "chromeos", - "chromeos_lacros", "ios", "linux", "mac", @@ -1812,7 +1780,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "ios", "linux", "mac", @@ -1833,7 +1800,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "ios", "linux", "mac", @@ -1854,7 +1820,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -1875,7 +1840,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "ios", "linux", "mac", @@ -1891,12 +1855,11 @@ ] } ], - "AutofillEnableVcnGrayOutForMerchantOptOut": [ + "AutofillEnableServerIban": [ { "platforms": [ "android", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -1905,18 +1868,20 @@ { "name": "Enabled", "enable_features": [ - "AutofillEnableVcnGrayOutForMerchantOptOut" + "AutofillEnableLocalIban", + "AutofillEnableServerIban" ] } ] } ], - "AutofillEnableVirtualCardOnFile": [ + "AutofillEnableSupportForParsingWithSharedLabels": [ { "platforms": [ "android", + "android_webview", "chromeos", - "chromeos_lacros", + "ios", "linux", "mac", "windows" @@ -1925,20 +1890,17 @@ { "name": "Enabled", "enable_features": [ - "AutofillParseVcnCardOnFileStandaloneCvcFields", - "SyncAutofillWalletUsageData" + "AutofillEnableSupportForParsingWithSharedLabels" ] } ] } ], - "AutofillFixCachingOnJavaScriptChanges": [ + "AutofillEnableVcnGrayOutForMerchantOptOut": [ { "platforms": [ "android", - "android_webview", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -1947,20 +1909,38 @@ { "name": "Enabled", "enable_features": [ - "AllowJavaScriptToResetAutofillState", - "AutofillFixCachingOnJavaScriptChanges" + "AutofillEnableVcnGrayOutForMerchantOptOut" + ] + } + ] + } + ], + "AutofillEnableVirtualCardOnFile": [ + { + "platforms": [ + "android", + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "AutofillParseVcnCardOnFileStandaloneCvcFields", + "SyncAutofillWalletUsageData" ] } ] } ], - "AutofillFixFormTracking": [ + "AutofillFixCachingOnJavaScriptChanges": [ { "platforms": [ "android", "android_webview", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -1969,7 +1949,8 @@ { "name": "Enabled", "enable_features": [ - "AutofillFixFormTracking" + "AllowJavaScriptToResetAutofillState", + "AutofillFixCachingOnJavaScriptChanges" ] } ] @@ -1981,7 +1962,6 @@ "android", "android_webview", "chromeos", - "chromeos_lacros", "ios", "linux", "mac", @@ -2003,7 +1983,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -2025,7 +2004,6 @@ "android", "android_webview", "chromeos", - "chromeos_lacros", "ios", "linux", "mac", @@ -2045,7 +2023,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -2098,13 +2075,12 @@ ] } ], - "AutofillI18nAddressModelNewCountries": [ + "AutofillI18nAddressModelAndRegexesGEITPL": [ { "platforms": [ "android", "android_webview", "chromeos", - "chromeos_lacros", "ios", "linux", "mac", @@ -2114,21 +2090,20 @@ { "name": "Enabled", "enable_features": [ - "AutofillUseAUAddressModel", - "AutofillUseCAAddressModel", - "AutofillUseDEAddressModel", + "AutofillGreekRegexes", + "AutofillUseITAddressModel", "AutofillUsePLAddressModel" ] } ] } ], - "AutofillImportFromAutocompleteUnrecognized": [ + "AutofillI18nAddressModelNewCountries": [ { "platforms": [ "android", + "android_webview", "chromeos", - "chromeos_lacros", "ios", "linux", "mac", @@ -2138,57 +2113,62 @@ { "name": "Enabled", "enable_features": [ - "AutofillImportFromAutocompleteUnrecognized" + "AutofillUseAUAddressModel", + "AutofillUseCAAddressModel", + "AutofillUseDEAddressModel" ] } ] } ], - "AutofillImproveSubmittedFormComputation": [ + "AutofillImportFromAutocompleteUnrecognized": [ { "platforms": [ "android", - "android_webview", "chromeos", - "chromeos_lacros", + "ios", "linux", "mac", "windows" ], "experiments": [ { - "name": "Enabled_All", + "name": "Enabled", "enable_features": [ - "AutofillPreferSavedFormAsSubmittedForm", - "AutofillUseSubmittedFormInHtmlSubmission" + "AutofillImportFromAutocompleteUnrecognized" ] } ] } ], - "AutofillKeyboardAccessory": [ + "AutofillImproveSubmissionDetectionV2": [ { "platforms": [ - "android" + "android", + "android_webview", + "chromeos", + "linux", + "mac", + "windows" ], "experiments": [ { - "name": "Enabled_With_Cards_and_VCN_20230324", + "name": "Enabled", "enable_features": [ - "AutofillKeyboardAccessory", - "AutofillManualFallbackAndroid" + "AutofillFixFormTracking", + "AutofillPreferSavedFormAsSubmittedForm", + "AutofillUseSubmittedFormInHtmlSubmission" ] } ] } ], - "AutofillLogDeduplicationMetrics": [ + "AutofillInferLabelFromDefaultSelectText": [ { "platforms": [ "android", + "android_webview", "chromeos", - "chromeos_lacros", - "ios", "linux", "mac", "windows" @@ -2197,40 +2177,33 @@ { "name": "Enabled", "enable_features": [ - "AutofillLogDeduplicationMetrics" + "AutofillInferLabelFromDefaultSelectText" ] } ] } ], - "AutofillLogDeduplicationMetricsFollowup": [ + "AutofillKeyboardAccessory": [ { "platforms": [ - "android", - "chromeos", - "chromeos_lacros", - "ios", - "linux", - "mac", - "windows" + "android" ], "experiments": [ { - "name": "Enabled", + "name": "Enabled_With_Cards_and_VCN_20230324", "enable_features": [ - "AutofillLogDeduplicationMetricsFollowup" + "AutofillKeyboardAccessory", + "AutofillManualFallbackAndroid" ] } ] } ], - "AutofillLogUKMEventsWithSampleRate": [ + "AutofillLogDeduplicationMetrics": [ { "platforms": [ "android", - "android_weblayer", "chromeos", - "chromeos_lacros", "ios", "linux", "mac", @@ -2240,18 +2213,18 @@ { "name": "Enabled", "enable_features": [ - "AutofillLogUKMEventsWithSampleRate" + "AutofillLogDeduplicationMetrics" ] } ] } ], - "AutofillModelPredictions": [ + "AutofillLogUKMEventsWithSampleRate": [ { "platforms": [ "android", + "android_weblayer", "chromeos", - "chromeos_lacros", "ios", "linux", "mac", @@ -2260,21 +2233,19 @@ "experiments": [ { "name": "Enabled", - "params": { - "model_active": "false" - }, "enable_features": [ - "AutofillModelPredictions" + "AutofillLogUKMEventsWithSampleRate" ] } ] } ], - "AutofillMoreProminentPopup": [ + "AutofillModelPredictions": [ { "platforms": [ + "android", "chromeos", - "chromeos_lacros", + "ios", "linux", "mac", "windows" @@ -2282,8 +2253,11 @@ "experiments": [ { "name": "Enabled", + "params": { + "model_active": "false" + }, "enable_features": [ - "AutofillMoreProminentPopup" + "AutofillModelPredictions" ] } ] @@ -2295,7 +2269,6 @@ "android", "android_webview", "chromeos", - "chromeos_lacros", "ios", "linux", "mac", @@ -2317,7 +2290,6 @@ "android", "android_webview", "chromeos", - "chromeos_lacros", "ios", "linux", "mac", @@ -2337,7 +2309,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -2356,25 +2327,16 @@ ] } ], - "AutofillPhoneNumberDetectionImprovements": [ + "AutofillPaymentsSheetV2Ios": [ { "platforms": [ - "android", - "android_webview", - "chromeos", - "chromeos_lacros", - "ios", - "linux", - "mac", - "windows" + "ios" ], "experiments": [ { - "name": "Enabled_TrunkTypes_CountryCode", + "name": "Enabled", "enable_features": [ - "AutofillEnableSupportForPhoneNumberTrunkTypes", - "AutofillInferCountryCallingCode", - "AutofillPreferParsedPhoneNumber" + "AutofillPaymentsSheetV2Ios" ] } ] @@ -2384,7 +2346,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -2403,7 +2364,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -2423,7 +2383,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "ios", "linux", "mac", @@ -2440,31 +2399,11 @@ ] } ], - "AutofillPredictionImprovementsTeamfood": [ - { - "platforms": [ - "chromeos", - "chromeos_lacros", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "AutofillPredictionImprovements" - ] - } - ] - } - ], "AutofillSharedStorageServerCardData": [ { "platforms": [ "android", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -2485,7 +2424,6 @@ "android", "android_webview", "chromeos", - "chromeos_lacros", "ios", "linux", "mac", @@ -2505,7 +2443,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "mac", "windows", "linux" @@ -2556,33 +2493,11 @@ ] } ], - "AutofillTrackMultipleUseDates": [ - { - "platforms": [ - "android", - "chromeos", - "chromeos_lacros", - "ios", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "AutofillTrackMultipleUseDates" - ] - } - ] - } - ], "AutofillUKMExperimentalFields": [ { "platforms": [ "android", "chromeos", - "chromeos_lacros", "ios", "linux", "mac", @@ -2606,7 +2521,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "ios", "linux", "mac", @@ -2627,7 +2541,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "ios", "linux", "mac", @@ -2669,7 +2582,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "fuchsia", "ios", "linux", @@ -2690,7 +2602,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -2713,7 +2624,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "ios", "linux", "mac", @@ -2786,7 +2696,6 @@ "android", "android_webview", "chromeos", - "chromeos_lacros", "ios", "linux", "mac", @@ -2810,7 +2719,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -2831,7 +2739,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -2871,7 +2778,6 @@ "platforms": [ "android", "android_webview", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -2892,7 +2798,6 @@ "platforms": [ "android", "android_webview", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -2936,7 +2841,6 @@ "platforms": [ "android", "android_webview", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -3057,7 +2961,6 @@ "android", "android_webview", "chromeos", - "chromeos_lacros", "fuchsia", "ios", "linux", @@ -3079,7 +2982,6 @@ "platforms": [ "android", "android_webview", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -3110,11 +3012,75 @@ ] } ], + "BackForwardTransitions": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "NoIPH", + "params": { + "dump-without-crash-navigation-entry-screenshot-cache": "false", + "dump-without-crash-tab-on-back-gesture-handler": "false" + }, + "enable_features": [ + "BackForwardTransitions", + "MirrorBackForwardGesturesInRTL" + ], + "disable_features": [ + "IPH_RtlGestureNavigation" + ] + }, + { + "name": "RTLOnly", + "enable_features": [ + "MirrorBackForwardGesturesInRTL" + ], + "disable_features": [ + "BackForwardTransitions", + "IPH_RtlGestureNavigation" + ] + }, + { + "name": "IPHOnUnsuccessfulBackNav", + "params": { + "availability": "any", + "event_trigger": "name:rtl_gesture_iph_trigger;comparator:==0;window:365;storage:365", + "event_used": "name:rtl_gesture_iph_show;comparator:==0;window:365;storage:365", + "session_rate": "<1", + "x_trigger": "", + "x_unhandled_gesture_threshold": "2" + }, + "enable_features": [ + "BackForwardTransitions", + "IPH_RtlGestureNavigation", + "MirrorBackForwardGesturesInRTL" + ] + }, + { + "name": "IPHOnFirstSuccessfulBackNav", + "params": { + "availability": "any", + "event_trigger": "name:rtl_gesture_iph_trigger;comparator:==0;window:365;storage:365", + "event_used": "name:rtl_gesture_iph_show;comparator:==0;window:365;storage:365", + "session_rate": "<1", + "x_trigger": "non-empty-stack", + "x_unhandled_gesture_threshold": "2" + }, + "enable_features": [ + "BackForwardTransitions", + "IPH_RtlGestureNavigation", + "MirrorBackForwardGesturesInRTL" + ] + } + ] + } + ], "BackNavigationMenuIPH": [ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -3158,7 +3124,6 @@ "android", "android_webview", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -3197,7 +3162,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "linux", "android_webview", "android_weblayer" @@ -3248,8 +3212,7 @@ "BatteryBadgeIconEnabled": [ { "platforms": [ - "chromeos", - "chromeos_lacros" + "chromeos" ], "experiments": [ { @@ -3265,7 +3228,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -3297,7 +3259,7 @@ ] } ], - "BirchWeather": [ + "BirchCoral": [ { "platforms": [ "chromeos" @@ -3306,36 +3268,7 @@ { "name": "Enabled", "enable_features": [ - "BirchWeather" - ] - }, - { - "name": "EnabledWithWeatherAlphaEndpoint", - "params": { - "prod_weather_endpoint": "false" - }, - "enable_features": [ - "BirchWeather" - ] - } - ] - } - ], - "BlinkSchedulerDiscreteInputMatchesResponsivenessMetrics": [ - { - "platforms": [ - "android", - "android_webview", - "chromeos", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "BlinkSchedulerDiscreteInputMatchesResponsivenessMetrics" + "CoralFeature" ] } ] @@ -3346,7 +3279,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -3417,7 +3349,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -3442,8 +3373,7 @@ "BorealisProvision": [ { "platforms": [ - "chromeos", - "chromeos_lacros" + "chromeos" ], "experiments": [ { @@ -3458,8 +3388,7 @@ "BorealisZinkGlDriver": [ { "platforms": [ - "chromeos", - "chromeos_lacros" + "chromeos" ], "experiments": [ { @@ -3478,7 +3407,6 @@ "android_weblayer", "android_webview", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -3508,24 +3436,6 @@ ] } ], - "BrowserSwitcherNoneIsGreylist": [ - { - "platforms": [ - "fuchsia", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "BrowserSwitcherNoneIsGreylist" - ] - } - ] - } - ], "BrowserThreadPoolAdjustmentForAndroid": [ { "platforms": [ @@ -3551,7 +3461,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -3591,7 +3500,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -3611,7 +3519,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -3629,7 +3536,7 @@ ] } ], - "BuiltInH264Decoder": [ + "BuiltInHlsMP4": [ { "platforms": [ "android", @@ -3639,23 +3546,22 @@ { "name": "Enabled", "enable_features": [ - "BuiltInH264Decoder" + "BuiltInHlsMP4" ] } ] } ], - "BuiltInHlsMP4": [ + "CCTEarlyNav": [ { "platforms": [ - "android", - "android_webview" + "android" ], "experiments": [ { "name": "Enabled", "enable_features": [ - "BuiltInHlsMP4" + "CCTEarlyNav" ] } ] @@ -3687,6 +3593,19 @@ "experiments": [ { "name": "Enabled", + "params": { + "holdback": "false" + }, + "enable_features": [ + "CCTNavigationalPrefetch", + "PrefetchBrowserInitiatedTriggers" + ] + }, + { + "name": "Holdback", + "params": { + "holdback": "true" + }, "enable_features": [ "CCTNavigationalPrefetch", "PrefetchBrowserInitiatedTriggers" @@ -3750,7 +3669,6 @@ "android", "android_weblayer", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -3778,7 +3696,6 @@ "android_weblayer", "android_webview", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -3814,7 +3731,6 @@ "android", "android_webview", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -3889,7 +3805,6 @@ "android", "android_webview", "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -3910,7 +3825,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -3933,7 +3847,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -3964,43 +3877,6 @@ ] } ], - "CaptureModeEducation": [ - { - "platforms": [ - "chromeos", - "chromeos_lacros" - ], - "experiments": [ - { - "name": "EnabledShortcutNudge_20231214", - "params": { - "CaptureModeEducationParam": "ShortcutNudge" - }, - "enable_features": [ - "CaptureModeEducation" - ] - }, - { - "name": "EnabledShortcutTutorial_20231214", - "params": { - "CaptureModeEducationParam": "ShortcutTutorial" - }, - "enable_features": [ - "CaptureModeEducation" - ] - }, - { - "name": "EnabledQuickSettingsNudge_20231214", - "params": { - "CaptureModeEducationParam": "QuickSettingsNudge" - }, - "enable_features": [ - "CaptureModeEducation" - ] - } - ] - } - ], "CastCertificateRevocation": [ { "platforms": [ @@ -4022,8 +3898,7 @@ "CastMirroringPlayoutDelayChromeOS": [ { "platforms": [ - "chromeos", - "chromeos_lacros" + "chromeos" ], "experiments": [ { @@ -4042,7 +3917,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -4098,8 +3972,7 @@ }, { "platforms": [ - "chromeos", - "chromeos_lacros" + "chromeos" ], "experiments": [ { @@ -4163,8 +4036,7 @@ "MainThreadCompositingPriority", "QuickIntensiveWakeUpThrottlingAfterLoading", "ReduceCookieIPCs", - "UseCompositorJob", - "UseEcoQoSForBackgroundProcess" + "UseCompositorJob" ], "disable_features": [ "RecordSequenceManagerCrashKeys", @@ -4178,7 +4050,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -4212,11 +4083,32 @@ ] } ], + "CctSignInPrompt": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "params": { + "cadence_day": "14", + "if_allowed_by_embedder": "true", + "if_enabled_by_embedder": "true", + "show_limit": "2", + "user_act_count": "2" + }, + "enable_features": [ + "CctSignInPrompt" + ] + } + ] + } + ], "CdmStorageDatabaseDefaultTrial": [ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -4237,7 +4129,6 @@ "android", "android_webview", "chromeos", - "chromeos_lacros", "ios", "linux", "mac", @@ -4260,7 +4151,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -4284,7 +4174,6 @@ "android", "android_webview", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -4303,7 +4192,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -4322,7 +4210,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -4337,24 +4224,6 @@ ] } ], - "ChromeHomeFrequency": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "Enabled_4H", - "params": { - "start_surface_return_time_on_tablet_seconds": "14400" - }, - "enable_features": [ - "StartSurfaceReturnTime" - ] - } - ] - } - ], "ChromeLabs": [ { "platforms": [ @@ -4376,8 +4245,7 @@ "ChromeLabsChromeOS": [ { "platforms": [ - "chromeos", - "chromeos_lacros" + "chromeos" ], "experiments": [ { @@ -4490,21 +4358,6 @@ ] } ], - "ChromeOSContainerAppPreinstall": [ - { - "platforms": [ - "chromeos" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "ContainerAppPreinstall" - ] - } - ] - } - ], "ChromeOSGrowthFramework": [ { "platforms": [ @@ -4942,21 +4795,6 @@ ] } ], - "ChromeOSIgnoreUiGainsOnAGC": [ - { - "platforms": [ - "chromeos" - ], - "experiments": [ - { - "name": "Enabled_20230905", - "enable_features": [ - "IgnoreUiGains" - ] - } - ] - } - ], "ChromeOSMaterialNextWaveOneWithTimeOfDayM117AndBeyond": [ { "platforms": [ @@ -5042,21 +4880,6 @@ ] } ], - "ChromeOSOobeQuickStart": [ - { - "platforms": [ - "chromeos" - ], - "experiments": [ - { - "name": "Disabled", - "disable_features": [ - "OobeQuickStart" - ] - } - ] - } - ], "ChromeOSOobeSplitModifierKeyboard": [ { "platforms": [ @@ -5144,7 +4967,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -5168,7 +4990,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -5192,7 +5013,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -5250,7 +5070,7 @@ ] } ], - "ChromnientImageContextMenuActions": [ + "ChromnientFetchSrp": [ { "platforms": [ "chromeos", @@ -5261,100 +5081,200 @@ ], "experiments": [ { - "name": "CopyAndSaveAsImageEnabled", - "params": { - "enable-copy-as-image": "true", - "enable-save-as-image": "true", - "text-received-timeout": "2000" - }, + "name": "FetchSrpEnabled" + } + ] + } + ], + "ChromnientIOS": [ + { + "platforms": [ + "ios" + ], + "experiments": [ + { + "name": "Enabled_M131", "enable_features": [ - "LensOverlayImageContextMenuActions" + "EnableLensOverlay", + "IPH_iOSLensOverlayEntrypointTip", + "LensOverlayEnableLocationBarEntrypoint" ] } ] } ], - "ChromnientPostLaunchTranslate": [ + "ChromnientIPH": [ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" ], "experiments": [ { - "name": "TranslateButtonEnabled", + "name": "EnabledSocialMedia", + "params": { + "availability": "any", + "event_trigger": "name:lens_overlay_iph_triggered;comparator:any;window:90;storage:365", + "event_used": "name:lens_overlay_used;comparator:==0;window:90;storage:365", + "session_rate": "==0", + "x_url_allow_filters": "%5B%22facebook%2Ecom%22%2C%22web%2Ewhatsapp%2Ecom%22%2C%22instagram%2Ecom%22%2C%22x%2Ecom%22%2C%22twitter%2Ecom%22%2C%22reddit%2Ecom%22%2C%22tiktok%2Ecom%22%2C%22pinterest%2Ecom%22%2C%22quora%2Ecom%22%2C%22youtube%2Ecom%2Fshorts%22%5D", + "x_url_block_filters": "%5B%22facebook%2Ecom%2Flogin%22%2C%22x%2Ecom%2Flogin%22%2C%22instagram%2Ecom%2Faccounts%2Flogin%22%2C%22reddit%2Ecom%2Flogin%22%2C%22tiktok%2Ecom%2Flogin%22%2C%22pinterest%2Ecom%2Flogin%22%2C%22amazon%2Ecom%2Fap%2Fsignin%22%5D", + "x_wait_time": "7s" + }, "enable_features": [ - "IPH_LensOverlayTranslateButton", - "LensOverlayTranslateButton" + "IPH_LensOverlay" ] } ] } ], - "ChromnientSurvey": [ + "ChromnientImageContextMenuActions": [ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" ], "experiments": [ { - "name": "Enabled", + "name": "CopyAndSaveAsImageEnabled", "params": { - "en_site_id": "LvUA3D5Ts0ugnJ3q1cK0SHbD7uPa", - "probability": "1.0" + "enable-copy-as-image": "true", + "enable-save-as-image": "true", + "text-received-timeout": "2000" }, "enable_features": [ - "LensOverlaySurvey" + "LensOverlayImageContextMenuActions" ] } ] } ], - "ClankFeedSyntheticCapabilities": [ + "ChromnientLatencyOptimizations": [ { "platforms": [ - "android" + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" ], "experiments": [ { - "name": "Enabled", + "name": "AllOptimizationsEnabled", + "params": { + "enable-cluster-info-optimization": "true", + "enable-early-interaction-optimization": "true", + "enable-early-start-query-flow-optimization": "true" + }, "enable_features": [ - "FeedSyntheticCapabilities" + "LensOverlayLatencyOptimizations" ] } ] } ], - "ClankFollowUIUpdate": [ + "ChromnientMoreTranslateLanguages": [ { "platforms": [ - "android" + "chromeos", + "linux", + "mac", + "windows" ], "experiments": [ { - "name": "Enabled", + "name": "MoreTranslateLanguagesEnabled", "enable_features": [ - "FeedFollowUiUpdate" + "LensOverlayTranslateLanguages" ] } ] } ], - "ClankMostVisitedTilesNewScoring": [ + "ChromnientPostLaunchTranslate": [ { "platforms": [ - "android" + "chromeos", + "linux", + "mac", + "windows" ], "experiments": [ { - "name": "Enabled_DecayStairCase_Cap10", + "name": "TranslateButtonEnabled", + "enable_features": [ + "IPH_LensOverlayTranslateButton", + "LensOverlayTranslateButton" + ] + } + ] + } + ], + "ChromnientSurvey": [ + { + "platforms": [ + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "params": { + "en_site_id": "LvUA3D5Ts0ugnJ3q1cK0SHbD7uPa", + "probability": "0.5", + "results-time": "6s" + }, + "enable_features": [ + "LensOverlaySurvey" + ] + } + ] + } + ], + "ClankFeedSyntheticCapabilities": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "FeedSyntheticCapabilities" + ] + } + ] + } + ], + "ClankFollowUIUpdate": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "FeedFollowUiUpdate" + ] + } + ] + } + ], + "ClankMostVisitedTilesNewScoring": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled_DecayStairCase_Cap10", "params": { "daily_visit_count_cap": "10", "recency_factor": "decay_staircase" @@ -5509,6 +5429,21 @@ ] } ], + "ClassifyUrlOnProcessResponseEventChromeOs": [ + { + "platforms": [ + "chromeos" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "ClassifyUrlOnProcessResponseEvent" + ] + } + ] + } + ], "ClassifyUrlOnProcessResponseEventLinuxMacAndWindows": [ { "platforms": [ @@ -5533,14 +5468,15 @@ ], "experiments": [ { - "name": "DarkLaunch", + "name": "Enabled", "params": { "dialog_timeout_millis": "60000", - "is_dark_launch": "true", - "silent_pending_duration_millis": "0", - "use_fake_backend": "false" + "enable_verbose_logging": "true", + "escape_hatch_block_limit": "10", + "max_retries": "2" }, "enable_features": [ + "ClayBackendConnectionV2", "ClayBlocking" ] } @@ -5567,7 +5503,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "fuchsia", "ios", "linux", @@ -5706,7 +5641,6 @@ "android_weblayer", "android_webview", "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -5933,22 +5867,6 @@ ] } ], - "ComInitForUtilWin": [ - { - "platforms": [ - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "UtilWinProcessUsesUiPump", - "UtilityWithUiPumpInitializesCom" - ] - } - ] - } - ], "CommerceHintAndroid": [ { "platforms": [ @@ -5969,7 +5887,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "ios", "linux", "mac", @@ -5989,7 +5906,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -6017,7 +5933,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -6026,6 +5941,7 @@ { "name": "Enabled_Dogfood", "enable_features": [ + "CompareConfirmationToast", "ProductSpecifications", "ProductSpecificationsMqlsLogging" ] @@ -6033,6 +5949,7 @@ { "name": "Enabled", "enable_features": [ + "CompareConfirmationToast", "ProductSpecifications", "ProductSpecificationsMqlsLogging" ] @@ -6107,7 +6024,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -6177,7 +6093,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -6192,10 +6107,12 @@ ] } ], - "CompressionDictionaryPreload": [ + "CompositeBackgroundColorAnimation": [ { "platforms": [ "android", + "android_weblayer", + "android_webview", "chromeos", "chromeos_lacros", "fuchsia", @@ -6205,19 +6122,20 @@ ], "experiments": [ { - "name": "EnabledPreloadConditionalUse", - "disable_features": [ - "AutocompleteDictionaryPreload", - "PreloadedDictionaryConditionalUse" + "name": "Enabled", + "enable_features": [ + "CompositeBGColorAnimation", + "DeferImplInvalidation" ] } ] } ], - "CompressionDictionaryTransportRequireKnownRootCert": [ + "CompositeClipPathAnimation": [ { "platforms": [ "android", + "android_weblayer", "android_webview", "chromeos", "chromeos_lacros", @@ -6228,38 +6146,60 @@ ], "experiments": [ { - "name": "Disable", + "name": "Enabled", + "enable_features": [ + "CompositeClipPathAnimation" + ] + } + ] + } + ], + "CompressionDictionaryPreload": [ + { + "platforms": [ + "android", + "chromeos", + "fuchsia", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "EnabledPreloadConditionalUse", "disable_features": [ - "CompressionDictionaryTransportRequireKnownRootCert" + "AutocompleteDictionaryPreload", + "PreloadedDictionaryConditionalUse" ] } ] } ], - "ConcurrentViewTransitionsSPA": [ + "CompressionDictionaryTransportRequireKnownRootCert": [ { "platforms": [ - "android_webview", "android", + "android_webview", "chromeos", - "chromeos_lacros", + "fuchsia", "linux", "mac", "windows" ], "experiments": [ { - "name": "Enabled", - "enable_features": [ - "ConcurrentViewTransitionsSPA" + "name": "Disable", + "disable_features": [ + "CompressionDictionaryTransportRequireKnownRootCert" ] } ] } ], - "ConditionalImageResize": [ + "ConcurrentViewTransitionsSPA": [ { "platforms": [ + "android_webview", "android", "chromeos", "linux", @@ -6270,18 +6210,17 @@ { "name": "Enabled", "enable_features": [ - "ConditionalImageResize" + "ConcurrentViewTransitionsSPA" ] } ] } ], - "ConditionallySkipGpuChannelFlush": [ + "ConditionalImageResize": [ { "platforms": [ "android", - "android_webview", - "fuchsia", + "chromeos", "linux", "mac", "windows" @@ -6290,7 +6229,7 @@ { "name": "Enabled", "enable_features": [ - "ConditionallySkipGpuChannelFlush" + "ConditionalImageResize" ] } ] @@ -6301,7 +6240,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -6340,7 +6278,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -6349,6 +6286,7 @@ { "name": "Enabled_Teamfood", "params": { + "file-upload-limit-bytes": "200000000", "use-pdfs-as-context": "true" }, "enable_features": [ @@ -6358,11 +6296,25 @@ ] } ], + "ControlsVisibilityFromNavigations": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "ControlsVisibilityFromNavigations" + ] + } + ] + } + ], "CookieDeprecationFacilitatedTestingCookieDeprecation": [ { "platforms": [ "chromeos", - "chromeos_lacros", "windows", "mac", "linux", @@ -6400,7 +6352,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "windows", "mac", "linux", @@ -6420,7 +6371,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -6557,21 +6507,6 @@ ] } ], - "CrOSBluetoothHfpSuperWideband": [ - { - "platforms": [ - "chromeos" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "CrOSLateBootAudioHFPSwb" - ] - } - ] - } - ], "CrOSEnforceSystemAec": [ { "platforms": [ @@ -6682,8 +6617,7 @@ "CrOSLateBootArcVmVcpuBoost": [ { "platforms": [ - "chromeos", - "chromeos_lacros" + "chromeos" ], "experiments": [ { @@ -6765,8 +6699,7 @@ "CrOSLateBootEEVDF": [ { "platforms": [ - "chromeos", - "chromeos_lacros" + "chromeos" ], "experiments": [ { @@ -6781,8 +6714,7 @@ "CrOSLateBootEEVDFEligibility": [ { "platforms": [ - "chromeos", - "chromeos_lacros" + "chromeos" ], "experiments": [ { @@ -6797,8 +6729,7 @@ "CrOSLateBootHighResOffGlobalVariables": [ { "platforms": [ - "chromeos", - "chromeos_lacros" + "chromeos" ], "experiments": [ { @@ -6813,8 +6744,7 @@ "CrOSLateBootHighResOffVariables": [ { "platforms": [ - "chromeos", - "chromeos_lacros" + "chromeos" ], "experiments": [ { @@ -6851,7 +6781,7 @@ ], "experiments": [ { - "name": "EnabledEarlyDiscard_20240918", + "name": "EnabledEarlyDiscard_20241031", "params": { "CompleteStallMs": "700", "PartialStallMs": "20", @@ -6860,32 +6790,6 @@ "enable_features": [ "CrOSLateBootDiscardStaleAtModeratePressure", "CrOSLateBootOverrideLmkdPsiDefaults" - ], - "disable_features": [ - "CrOSLockMainProgramText" - ] - }, - { - "name": "EnabledMlockChrome_20240918", - "enable_features": [ - "CrOSLockMainProgramText" - ], - "disable_features": [ - "CrOSLateBootDiscardStaleAtModeratePressure", - "CrOSLateBootOverrideLmkdPsiDefaults" - ] - }, - { - "name": "EnabledEarlyDiscardAndMlockChrome_20240918", - "params": { - "CompleteStallMs": "700", - "PartialStallMs": "20", - "VmmmsReclaimProportion": "0" - }, - "enable_features": [ - "CrOSLateBootDiscardStaleAtModeratePressure", - "CrOSLateBootOverrideLmkdPsiDefaults", - "CrOSLockMainProgramText" ] } ] @@ -6988,21 +6892,6 @@ ] } ], - "CrOSLateBootSetRtForDisplayThreads": [ - { - "platforms": [ - "chromeos" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "CrOSLateBootSetRtForDisplayThreads" - ] - } - ] - } - ], "CrOSLateBootSlowAdaptiveCharging": [ { "platforms": [ @@ -7031,6 +6920,9 @@ }, "enable_features": [ "CrOSLateBootSplitGenerations" + ], + "disable_features": [ + "CrOSLateBootMglruConservativeMm" ] }, { @@ -7044,36 +6936,55 @@ ] }, { - "name": "EnabledSwappiness140", + "name": "EnabledSwappiness185", "params": { - "Swappiness": "140" + "Swappiness": "185" }, "enable_features": [ "CrOSLateBootSplitGenerations" + ], + "disable_features": [ + "CrOSLateBootMglruConservativeMm" ] }, { - "name": "EnabledSwappiness180", + "name": "EnabledSwappiness185ConservativeMm", "params": { - "Swappiness": "180" + "Swappiness": "185" }, "enable_features": [ + "CrOSLateBootMglruConservativeMm", "CrOSLateBootSplitGenerations" ] }, { - "name": "EnabledConservativeMm", + "name": "EnabledSwappiness170", + "params": { + "Swappiness": "170" + }, "enable_features": [ - "CrOSLateBootMglruConservativeMm" + "CrOSLateBootSplitGenerations" ], "disable_features": [ - "CrOSLateBootSplitGenerations" + "CrOSLateBootMglruConservativeMm" ] - } - ] - } - ], - "CrOSLateBootSuspendAwareSwapZramWriteback": [ + }, + { + "name": "EnabledSwappiness150", + "params": { + "Swappiness": "150" + }, + "enable_features": [ + "CrOSLateBootSplitGenerations" + ], + "disable_features": [ + "CrOSLateBootMglruConservativeMm" + ] + } + ] + } + ], + "CrOSLateBootSuspendAwareSwapZramWriteback": [ { "platforms": [ "chromeos" @@ -7124,7 +7035,7 @@ ] } ], - "CrOSLocalImageSearch": [ + "CrOSLocalImageSearchIca": [ { "platforms": [ "chromeos" @@ -7133,80 +7044,40 @@ { "name": "Enabled", "enable_features": [ - "LauncherImageSearch", - "LauncherImageSearchIndexingLimit", - "LauncherImageSearchOcr", - "LauncherSearchControl", - "ProductivityLauncherImageSearch" - ] - }, - { - "name": "Enabled_20240516", - "enable_features": [ - "LauncherImageSearch", - "LauncherImageSearchIndexingLimit", - "LauncherImageSearchOcr", - "LauncherSearchControl", - "ProductivityLauncherImageSearch" - ] - }, - { - "name": "Disabled_20240516", - "disable_features": [ - "LauncherImageSearch", - "LauncherImageSearchIndexingLimit", - "LauncherImageSearchOcr", - "LauncherSearchControl", - "ProductivityLauncherImageSearch" - ] - }, - { - "name": "EnabledOnCore", - "enable_features": [ - "LauncherImageSearch", - "LauncherImageSearchIndexingLimit", - "LauncherImageSearchOcr", - "LauncherSearchControl", - "LocalImageSearchOnCore", - "ProductivityLauncherImageSearch" + "LauncherImageSearchIca" ] } ] } ], - "CrOSMglruNoKVMOpt": [ + "CrOSLockMainProgramText": [ { "platforms": [ "chromeos" ], "experiments": [ { - "name": "NoKVMOptBehavior_20230613", - "params": { - "MGLRUEnableValue": "7" - }, + "name": "Enabled", "enable_features": [ - "MGLRUEnable" + "CrOSLockMainProgramText" ] } ] } ], - "CrabbyAvif": [ + "CrOSMglruNoKVMOpt": [ { "platforms": [ - "android", - "android_webview", - "chromeos", - "linux", - "mac", - "windows" + "chromeos" ], "experiments": [ { - "name": "Enabled_CrabbyAvif", + "name": "NoKVMOptBehavior_20230613", + "params": { + "MGLRUEnableValue": "7" + }, "enable_features": [ - "CrabbyAvif" + "MGLRUEnable" ] } ] @@ -7315,7 +7186,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -7372,7 +7242,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -7394,7 +7263,6 @@ "windows", "mac", "chromeos", - "chromeos_lacros", "fuchsia", "linux", "ios", @@ -7445,48 +7313,10 @@ ] } ], - "DangerousDownloadInterstitial": [ - { - "platforms": [ - "chromeos", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "DangerousDownloadInterstitial" - ] - } - ] - } - ], - "DataControlsDesktop": [ - { - "platforms": [ - "chromeos", - "chromeos_lacros", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "EnableDesktopDataControls" - ] - } - ] - } - ], "DataControlsScreenshotProtection": [ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -7505,7 +7335,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -7544,7 +7373,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -7570,7 +7398,6 @@ "android_weblayer", "android_webview", "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -7586,26 +7413,6 @@ ] } ], - "DecreaseProcessingAudioFifoSize": [ - { - "platforms": [ - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled1_20230425", - "params": { - "fifo_size": "10" - }, - "enable_features": [ - "DecreaseProcessingAudioFifoSize" - ] - } - ] - } - ], "DedicatedMediaServiceThread": [ { "platforms": [ @@ -7671,7 +7478,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -7694,7 +7500,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -7715,7 +7520,6 @@ "DefaultPassthroughCommandDecoder": [ { "platforms": [ - "android", "android_webview" ], "experiments": [ @@ -7730,6 +7534,26 @@ ] } ] + }, + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "passthrough_ON_drdc_OFF_20241022", + "params": { + "BlockListByDevice": "", + "BlockListByModel": "" + }, + "enable_features": [ + "DefaultPassthroughCommandDecoder" + ], + "disable_features": [ + "EnableDrDc" + ] + } + ] } ], "DeferConciergeStartup": [ @@ -7776,7 +7600,6 @@ "android", "android_webview", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -7800,7 +7623,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -7820,7 +7642,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -7859,7 +7680,6 @@ "android", "android_webview", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -7880,6 +7700,22 @@ ] } ], + "DeprecatedExternalPickerFunction": [ + { + "platforms": [ + "android", + "android_webview" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "DeprecatedExternalPickerFunction" + ] + } + ] + } + ], "DescribeIt": [ { "platforms": [ @@ -7928,8 +7764,7 @@ "DeskProfiles": [ { "platforms": [ - "chromeos", - "chromeos_lacros" + "chromeos" ], "experiments": [ { @@ -7956,7 +7791,7 @@ ] } ], - "DesktopLinkCapturingPWAExperiment": [ + "DesktopNtpDriveCache": [ { "platforms": [ "linux", @@ -7965,83 +7800,69 @@ ], "experiments": [ { - "name": "Enabled_DefaultOn", - "params": { - "link_capturing_guardrail_storage_duration": "60", - "link_capturing_state": "on_by_default" - }, - "enable_features": [ - "PwaNavigationCapturing" - ] - }, - { - "name": "Enabled_DefaultOff", + "name": "Cache_1m", "params": { - "link_capturing_guardrail_storage_duration": "60", - "link_capturing_state": "off_by_default" + "NtpDriveModuleCacheMaxAgeSParam": "60", + "NtpDriveModuleExperimentGroupParam": "experiment_1234" }, "enable_features": [ - "PwaNavigationCapturing" + "NtpDriveModule" ] } ] } ], - "DesktopNtpDriveCache": [ + "DesktopNtpImageErrorDetection": [ { "platforms": [ + "chromeos", "linux", "mac", "windows" ], "experiments": [ { - "name": "Cache_1m", - "params": { - "NtpDriveModuleCacheMaxAgeSParam": "60", - "NtpDriveModuleExperimentGroupParam": "experiment_1234" - }, + "name": "ImageErrorDetection", "enable_features": [ - "NtpDriveModule" + "NtpBackgroundImageErrorDetection" ] } ] } ], - "DesktopNtpImageErrorDetection": [ + "DesktopNtpMiddleSlotPromoDismissal": [ { "platforms": [ "chromeos", - "chromeos_lacros", + "fuchsia", "linux", "mac", "windows" ], "experiments": [ { - "name": "ImageErrorDetection", + "name": "MiddleSlotPromoDismissal", "enable_features": [ - "NtpBackgroundImageErrorDetection" + "NtpMiddleSlotPromoDismissal" ] } ] } ], - "DesktopNtpMiddleSlotPromoDismissal": [ + "DesktopNtpMobilePromo": [ { "platforms": [ "chromeos", "chromeos_lacros", - "fuchsia", "linux", "mac", "windows" ], "experiments": [ { - "name": "MiddleSlotPromoDismissal", + "name": "Enabled_20241101", "enable_features": [ - "NtpMiddleSlotPromoDismissal" + "NtpMobilePromo" ] } ] @@ -8051,7 +7872,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -8079,7 +7899,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -8102,7 +7921,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -8121,7 +7939,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -8143,7 +7960,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -8173,7 +7989,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -8192,7 +8007,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -8268,8 +8082,7 @@ "linux", "mac", "windows", - "chromeos", - "chromeos_lacros" + "chromeos" ], "experiments": [ { @@ -8281,21 +8094,6 @@ ] } ], - "DestroyProfileOnBrowserClose": [ - { - "platforms": [ - "chromeos_lacros" - ], - "experiments": [ - { - "name": "DestroyProfileOnBrowserClose", - "enable_features": [ - "DestroyProfileOnBrowserClose" - ] - } - ] - } - ], "DestroySystemProfiles": [ { "platforms": [ @@ -8320,7 +8118,6 @@ "android", "android_webview", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -8339,7 +8136,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -8358,11 +8154,10 @@ ] } ], - "DevToolsExplainThisResourceDogfood": [ + "DevToolsAiAssistancePerformanceAgentDogfood": [ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -8372,20 +8167,19 @@ "name": "Enabled_Dogfood", "params": { "aida_model_id": "codey_gemit_mpp_streaming", - "aida_temperature": "-1" + "aida_temperature": "0" }, "enable_features": [ - "DevToolsExplainThisResourceDogfood" + "DevToolsAiAssistancePerformanceAgentDogfood" ] } ] } ], - "DevToolsFreestylerDogfood": [ + "DevToolsExplainThisResourceDogfood": [ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -8395,10 +8189,10 @@ "name": "Enabled_Dogfood", "params": { "aida_model_id": "codey_gemit_mpp_streaming", - "aida_temperature": "-1" + "aida_temperature": "0" }, "enable_features": [ - "DevToolsFreestylerDogfood" + "DevToolsExplainThisResourceDogfood" ] } ] @@ -8449,6 +8243,24 @@ ] } ], + "DipsForWebView": [ + { + "platforms": [ + "android_webview" + ], + "experiments": [ + { + "name": "enabled", + "params": { + "delete": "false" + }, + "enable_features": [ + "DIPS" + ] + } + ] + } + ], "DipsOnForegroundSequence": [ { "platforms": [ @@ -8467,8 +8279,6 @@ "DirectCompositorThreadIpc": [ { "platforms": [ - "android", - "android_webview", "linux" ], "experiments": [ @@ -8546,7 +8356,7 @@ ] } ], - "DisableTrimmingWhileSuspended": [ + "DisableNonYUVOverlaysFromExo": [ { "platforms": [ "chromeos" @@ -8555,54 +8365,103 @@ { "name": "Enabled", "enable_features": [ - "DisableTrimmingWhileSuspended" + "DisableNonYUVOverlaysFromExo" + ], + "hardware_classes": [ + "drallion" ] } ] } ], - "DisableUrgentPageDiscarding": [ + "DisableSystemBlur": [ { "platforms": [ - "mac", - "windows" + "chromeos" ], "experiments": [ { - "name": "Disabled", - "disable_features": [ - "UrgentPageDiscarding" + "name": "DisableSystemBlur", + "enable_features": [ + "DisableSystemBlur" ] } ] } ], - "DisallowManagedProfileSignout": [ + "DisableTrimmingWhileSuspended": [ { "platforms": [ - "chromeos_lacros", - "linux", - "mac", - "windows" + "chromeos" ], "experiments": [ { "name": "Enabled", "enable_features": [ - "DisallowManagedProfileSignout" + "DisableTrimmingWhileSuspended" ] } ] } ], - "DiscardInputEventsToRecentlyMovedFrames": [ + "DisableUrgentPageDiscarding": [ + { + "platforms": [ + "mac", + "windows" + ], + "experiments": [ + { + "name": "Disabled", + "disable_features": [ + "UrgentPageDiscarding" + ] + } + ] + } + ], + "DisallowManagedProfileSignout": [ { "platforms": [ - "android", - "android_weblayer", - "android_webview", - "chromeos", - "chromeos_lacros", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "DisallowManagedProfileSignout" + ] + } + ] + } + ], + "DiscardFrozenBrowsingInstancesWithGrowingPMF": [ + { + "platforms": [ + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "DiscardFrozenBrowsingInstancesWithGrowingPMF" + ] + } + ] + } + ], + "DiscardInputEventsToRecentlyMovedFrames": [ + { + "platforms": [ + "android", + "android_weblayer", + "android_webview", + "chromeos", "linux", "mac", "windows" @@ -8631,26 +8490,10 @@ ] } ], - "DiscoFeedEndpoint": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "DiscoFeedEndpoint" - ] - } - ] - } - ], "DiscountAutoPopup": [ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -8724,7 +8567,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -8745,7 +8587,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "ios", "linux", "mac", @@ -8775,7 +8616,6 @@ "android", "android_webview", "chromeos", - "chromeos_lacros", "fuchsia", "ios", "linux", @@ -8798,7 +8638,6 @@ "android", "android_webview", "chromeos", - "chromeos_lacros", "fuchsia", "ios", "linux", @@ -8846,7 +8685,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -8937,28 +8775,6 @@ ] } ], - "DynamicScrollCullRectExpansion": [ - { - "platforms": [ - "android", - "android_webview", - "chromeos", - "chromeos_lacros", - "fuchsia", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "DynamicScrollCullRectExpansion" - ] - } - ] - } - ], "EagerPrefetchBlockUntilHeadDifferentTimeoutsRetrospective": [ { "platforms": [ @@ -9002,6 +8818,21 @@ "android" ], "experiments": [ + { + "name": "Enabled_WebOptInAndKeyNativePages_131", + "params": { + "disable_bottom_controls_stacker_y_offset": "false" + }, + "enable_features": [ + "BottomBrowserControlsRefactor", + "DrawCutoutEdgeToEdge", + "DrawKeyNativeEdgeToEdge", + "DynamicSafeAreaInsets", + "DynamicSafeAreaInsetsOnScroll", + "EdgeToEdgeBottomChin", + "EdgeToEdgeWebOptIn" + ] + }, { "name": "Enabled_BottomChin", "params": { @@ -9030,7 +8861,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -9049,8 +8879,7 @@ "En840AndFstDecoderParamsUpdate": [ { "platforms": [ - "chromeos", - "chromeos_lacros" + "chromeos" ], "experiments": [ { @@ -9078,12 +8907,41 @@ ] } ], + "EnableADPFSeparateRendererMainSession": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "EnableADPFSeparateRendererMainSession" + ] + } + ] + } + ], + "EnableADPFSetThreads": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "EnableADPFSetThreads" + ] + } + ] + } + ], "EnableBackForwardCacheForOngoingSubframeNavigation": [ { "platforms": [ "android", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -9113,12 +8971,58 @@ ] } ], + "EnableCertManagementUIV2": [ + { + "platforms": [ + "linux" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "EnableCertManagementUIV2" + ] + } + ] + } + ], + "EnableCertManagementUIV2Write": [ + { + "platforms": [ + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "EnableCertManagementUIV2Write" + ] + } + ] + } + ], + "EnableChromeFatalCrashEventsObserver": [ + { + "platforms": [ + "chromeos" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "EnableChromeFatalCrashEventsObserver" + ] + } + ] + } + ], "EnableConfigurableThreadCacheMultiplier": [ { "platforms": [ "android", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -9186,7 +9090,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux" ], "experiments": [ @@ -9203,7 +9106,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -9251,6 +9153,21 @@ ] } ], + "EnableFatalCrashEventsObserver": [ + { + "platforms": [ + "chromeos" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "EnableFatalCrashEventsObserver" + ] + } + ] + } + ], "EnableImmediateDrawDuringScrollInteraction": [ { "platforms": [ @@ -9271,6 +9188,36 @@ ] } ], + "EnableInteractiveOnlyADPFRenderer": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "EnableInteractiveOnlyADPFRenderer" + ] + } + ] + } + ], + "EnableMainFrameOnlyADPFRendererMain": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "EnableMainFrameOnlyADPFRendererMain" + ] + } + ] + } + ], "EnableOneTapForMaps": [ { "platforms": [ @@ -9317,7 +9264,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "fuchsia", "ios", "linux", @@ -9353,8 +9299,7 @@ "EnablePkcs12ToChapsDualWrite": [ { "platforms": [ - "chromeos", - "chromeos_lacros" + "chromeos" ], "experiments": [ { @@ -9366,25 +9311,6 @@ ] } ], - "EnablePreferencesAccountStorage": [ - { - "platforms": [ - "chromeos", - "chromeos_lacros", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "EnablePreferencesAccountStorage" - ] - } - ] - } - ], "EnableReportingFromUnmanagedDevices": [ { "platforms": [ @@ -9445,6 +9371,21 @@ ] } ], + "EnableUserSessionActivityReporting": [ + { + "platforms": [ + "chromeos" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "EnableUserSessionActivityReporting" + ] + } + ] + } + ], "EnableVkPipelineCache": [ { "platforms": [ @@ -9482,7 +9423,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -9515,9 +9455,10 @@ "EsbAiStringUpdate": [ { "platforms": [ + "android", "chromeos", - "chromeos_lacros", "fuchsia", + "ios", "linux", "mac", "windows" @@ -9538,7 +9479,6 @@ "android", "android_webview", "chromeos", - "chromeos_lacros", "ios", "linux", "mac", @@ -9554,22 +9494,7 @@ ] } ], - "EventTimingFallbackToModalDialogStart": [ - { - "platforms": [ - "android_webview" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "EventTimingFallbackToModalDialogStart" - ] - } - ] - } - ], - "EventTimingHandleKeyboardEventSimulatedClick": [ + "EventTimingSelectionAutoScrollNoInteractionId": [ { "platforms": [ "android", @@ -9586,68 +9511,7 @@ { "name": "Enabled", "enable_features": [ - "EventTimingHandleKeyboardEventSimulatedClick" - ] - } - ] - } - ], - "EventTimingHandleOrphanPointerup": [ - { - "platforms": [ - "android", - "chromeos", - "chromeos_lacros", - "fuchsia", - "linux", - "mac", - "windows", - "android_webview", - "android_weblayer" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "EventTimingHandleOrphanPointerup" - ] - } - ] - } - ], - "EventTimingKeypressAndCompositionInteractionId": [ - { - "platforms": [ - "android_webview" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "EventTimingKeypressAndCompositionInteractionId" - ] - } - ] - } - ], - "EventTimingTapStopScrollNoInteractionId": [ - { - "platforms": [ - "android", - "chromeos", - "chromeos_lacros", - "fuchsia", - "linux", - "mac", - "windows", - "android_webview", - "android_weblayer" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "EventTimingTapStopScrollNoInteractionId" + "EventTimingSelectionAutoScrollNoInteractionId" ] } ] @@ -9673,36 +9537,12 @@ ] } ], - "ExcludeTransparentTextsFromBeingLcpEligible": [ - { - "platforms": [ - "android", - "chromeos", - "chromeos_lacros", - "fuchsia", - "linux", - "mac", - "windows", - "android_webview", - "android_weblayer" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "ExcludeTransparentTextsFromBeingLcpEligible" - ] - } - ] - } - ], "ExpandCompositedCullRect": [ { "platforms": [ "android", "android_webview", "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -9748,7 +9588,6 @@ "android", "chromeos", "chromeos_lacros", - "fuchsia", "ios", "linux", "mac", @@ -9756,9 +9595,22 @@ ], "experiments": [ { - "name": "Enabled", + "name": "EnabledRemovePrefDependency", "enable_features": [ "ExtendedReportingRemovePrefDependency" + ], + "disable_features": [ + "SafeBrowsingHashPrefixRealTimeLookupsSamplePing" + ] + }, + { + "name": "EnabledRemovePrefDependencyAndHprtSamplePing", + "params": { + "HashPrefixRealTimeLookupsSampleRate": "50" + }, + "enable_features": [ + "ExtendedReportingRemovePrefDependency", + "SafeBrowsingHashPrefixRealTimeLookupsSamplePing" ] } ] @@ -9768,7 +9620,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -9783,30 +9634,10 @@ ] } ], - "ExtensionParentalControlsOnLinuxMacWindows": [ - { - "platforms": [ - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "EnableExtensionsPermissionsForSupervisedUsersOnDesktop", - "EnableSupervisedUserSkipParentApprovalToInstallExtensions", - "UpdatedSupervisedUserExtensionApprovalStrings" - ] - } - ] - } - ], "ExtensionsServiceWorkerOptimizedEventDispatch": [ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -9839,8 +9670,7 @@ "ExternalHDR10": [ { "platforms": [ - "chromeos", - "chromeos_lacros" + "chromeos" ], "experiments": [ { @@ -9858,20 +9688,19 @@ "android", "android_webview", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" ], "experiments": [ { - "name": "Quarantine_900_100_1024_v5", + "name": "Quarantine_900_100_512_v6", "params": { - "object_size_threshold_in_bytes": "1024", - "quarantine_capacity_for_large_objects_in_bytes": "102400", - "quarantine_capacity_for_small_objects_in_bytes": "946176", + "object_size_threshold_in_bytes": "512", + "quarantine_capacity_for_large_objects_in_bytes": "0", + "quarantine_capacity_for_small_objects_in_bytes": "1048576", "sampling_frequency": "100", - "target_processes": "non_renderer" + "target_processes": "browser_only" }, "enable_features": [ "ExtremeLightweightUAFDetector" @@ -9884,7 +9713,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows", @@ -9922,8 +9750,7 @@ "FasterSplitScreenSetup": [ { "platforms": [ - "chromeos", - "chromeos_lacros" + "chromeos" ], "experiments": [ { @@ -9965,58 +9792,37 @@ ] } ], - "FeedPositionAndroid": [ + "FeedMemoryImprovement": [ { "platforms": [ "android" ], "experiments": [ { - "name": "Enabled_Feed_Position_Push_Down_Small_1", + "name": "Enabled_2GB_20241104", "params": { - "push_down_feed_small": "true" + "low_memory_threshold": "2048" }, "enable_features": [ - "FeedPositionAndroid" + "FeedLowMemoryImprovement" ] }, { - "name": "Enabled_Feed_Position_Push_Down_Large_1", + "name": "Enabled_4GB_20241104", "params": { - "push_down_feed_large": "true" + "low_memory_threshold": "4096" }, "enable_features": [ - "FeedPositionAndroid" + "FeedLowMemoryImprovement" ] }, { - "name": "Enabled_Feed_Position_Pull_Up_1", + "name": "Enabled_All_20241104", "params": { - "pull_up_feed": "true" - }, - "enable_features": [ - "FeedPositionAndroid" - ] - } - ] - } - ], - "FeedPullToRefreshIph": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "Enabled", - "params": { - "availability": "any", - "event_trigger": "name:pulltorefresh_triggered;comparator:==0;window:360;storage:360", - "event_used": "name:feed_swipe_refresh_shown;comparator:==0;window:7;storage:360", - "session_rate": "==0" + "low_memory_threshold": "-1" }, "enable_features": [ - "IPH_FeedSwipeRefresh" + "FeedLowMemoryImprovement" ] } ] @@ -10042,7 +9848,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -10057,32 +9862,11 @@ ] } ], - "FencedFramesEnableCrossOriginEventReporting": [ - { - "platforms": [ - "android", - "chromeos", - "chromeos_lacros", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "FencedFramesCrossOriginEventReportingUnlabeledTraffic" - ] - } - ] - } - ], "FencedFramesEnableReportEventHeaderChanges": [ { "platforms": [ "android", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -10102,7 +9886,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -10122,7 +9905,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -10161,7 +9943,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -10202,7 +9983,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -10225,7 +10005,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -10235,7 +10014,7 @@ "name": "Enabled_DryRun_20240729_Dogfood", "params": { "activation_level": "dry_run", - "enable_on_3pc_blocked": "false" + "enable_only_if_3pc_blocked": "false" }, "enable_features": [ "EnableFingerprintingProtectionFilter" @@ -10249,7 +10028,7 @@ "name": "Enabled", "params": { "activation_level": "dry_run", - "enable_on_3pc_blocked": "false" + "enable_only_if_3pc_blocked": "false" }, "enable_features": [ "EnableFingerprintingProtectionFilter" @@ -10277,28 +10056,12 @@ ] } ], - "FlossIsAvailabilityCheckNeeded": [ - { - "platforms": [ - "chromeos" - ], - "experiments": [ - { - "name": "Enabled", - "disable_features": [ - "FlossIsAvailabilityCheckNeeded" - ] - } - ] - } - ], "FlushPersistentSystemProfileOnWrite": [ { "platforms": [ "android", "android_webview", "chromeos", - "chromeos_lacros", "ios", "linux", "mac", @@ -10369,7 +10132,6 @@ "android", "android_webview", "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -10385,30 +10147,82 @@ ] } ], + "ForceMigrateSyncingUserToSignedIn": [ + { + "platforms": [ + "ios" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "ForceMigrateSyncingUserToSignedIn" + ] + } + ] + } + ], "ForestFeature": [ { "platforms": [ + "chromeos" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "ForestFeature" + ] + } + ] + } + ], + "FormControlsVerticalWritingModeDirectionSupport": [ + { + "platforms": [ + "android", + "android_webview", + "chromeos", + "fuchsia", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "FormControlsVerticalWritingModeDirectionSupport" + ] + } + ] + } + ], + "FrameRoutingCache": [ + { + "platforms": [ + "android", + "android_webview", "chromeos", - "chromeos_lacros" + "fuchsia", + "linux", + "mac", + "windows" ], "experiments": [ { "name": "Enabled", "enable_features": [ - "ForestFeature" + "FrameRoutingCache" ] } ] } ], - "FormControlsVerticalWritingModeDirectionSupport": [ + "FreezingOnBatterySaver": [ { "platforms": [ - "android", - "android_webview", "chromeos", - "chromeos_lacros", - "fuchsia", "linux", "mac", "windows" @@ -10417,29 +10231,28 @@ { "name": "Enabled", "enable_features": [ - "FormControlsVerticalWritingModeDirectionSupport" + "FreezingOnBatterySaver" ] } ] } ], - "FrameRoutingCache": [ + "FreezingOnBatterySaverTweaks": [ { "platforms": [ - "android", - "android_webview", "chromeos", - "chromeos_lacros", - "fuchsia", "linux", "mac", "windows" ], "experiments": [ { - "name": "Enabled", + "name": "LowCPUThreshold", + "params": { + "freezing_high_cpu_proportion": "0.05" + }, "enable_features": [ - "FrameRoutingCache" + "CPUMeasurementInFreezingPolicy" ] } ] @@ -10544,7 +10357,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "fuchsia", "ios", "linux", @@ -10564,8 +10376,7 @@ "GifRecording": [ { "platforms": [ - "chromeos", - "chromeos_lacros" + "chromeos" ], "experiments": [ { @@ -10614,7 +10425,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -10633,7 +10443,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -10778,7 +10587,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -10798,6 +10606,21 @@ ] } ], + "GraduationUseEmbeddedTransferEndpoint": [ + { + "platforms": [ + "chromeos" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "GraduationUseEmbeddedTransferEndpoint" + ] + } + ] + } + ], "GroupedHistoryAllLocales": [ { "platforms": [ @@ -10870,7 +10693,6 @@ "android", "android_webview", "chromeos", - "chromeos_lacros", "fuchsia", "ios", "linux", @@ -10894,7 +10716,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -10913,8 +10734,7 @@ "HappinessTrackingBorealisGames": [ { "platforms": [ - "chromeos", - "chromeos_lacros" + "chromeos" ], "experiments": [ { @@ -10935,8 +10755,7 @@ "HappinessTrackingMediaAppPdf": [ { "platforms": [ - "chromeos", - "chromeos_lacros" + "chromeos" ], "experiments": [ { @@ -10978,8 +10797,7 @@ "HappinessTrackingOsSettingsSearch": [ { "platforms": [ - "chromeos", - "chromeos_lacros" + "chromeos" ], "experiments": [ { @@ -11000,8 +10818,7 @@ "HappinessTrackingPersonalizationAvatar": [ { "platforms": [ - "chromeos", - "chromeos_lacros" + "chromeos" ], "experiments": [ { @@ -11022,8 +10839,7 @@ "HappinessTrackingPersonalizationScreensaver": [ { "platforms": [ - "chromeos", - "chromeos_lacros" + "chromeos" ], "experiments": [ { @@ -11044,8 +10860,7 @@ "HappinessTrackingPersonalizationWallpaper": [ { "platforms": [ - "chromeos", - "chromeos_lacros" + "chromeos" ], "experiments": [ { @@ -11066,8 +10881,7 @@ "HappinessTrackingPhotosExperience": [ { "platforms": [ - "chromeos", - "chromeos_lacros" + "chromeos" ], "experiments": [ { @@ -11285,8 +11099,7 @@ "HatsPrivacyHubPostLaunch": [ { "platforms": [ - "chromeos", - "chromeos_lacros" + "chromeos" ], "experiments": [ { @@ -11364,8 +11177,7 @@ "HelpAppLauncherSearch": [ { "platforms": [ - "chromeos", - "chromeos_lacros" + "chromeos" ], "experiments": [ { @@ -11377,6 +11189,21 @@ ] } ], + "HelpAppOnboardingRevamp": [ + { + "platforms": [ + "chromeos" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "HelpAppOnboardingRevamp" + ] + } + ] + } + ], "HideDelegatedFrameHostMac": [ { "platforms": [ @@ -11396,7 +11223,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -11484,8 +11310,7 @@ "Hotspot": [ { "platforms": [ - "chromeos", - "chromeos_lacros" + "chromeos" ], "experiments": [ { @@ -11510,7 +11335,6 @@ "android_weblayer", "android_webview", "chromeos", - "chromeos_lacros", "fuchsia", "ios", "linux", @@ -11531,12 +11355,29 @@ ] } ], + "HttpsFirstBalancedModeAutoEnable": [ + { + "platforms": [ + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "HttpsFirstBalancedModeAutoEnable" + ] + } + ] + } + ], "HttpsFirstModeV2ForEngagedSites": [ { "platforms": [ "windows", "chromeos", - "chromeos_lacros", "mac", "linux" ], @@ -11560,7 +11401,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -11591,6 +11431,26 @@ ] } ], + "IOSAcquisitionOnDesktopPromo": [ + { + "platforms": [ + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "EnabledPromosGroup_2024_10_24", + "enable_features": [ + "IOSPromoAddressBubble", + "IOSPromoPaymentBubble", + "IOSPromoRefreshedPasswordBubble" + ] + } + ] + } + ], "IOSAutofillAcrossIframes": [ { "platforms": [ @@ -11598,39 +11458,40 @@ ], "experiments": [ { - "name": "Enabled", + "name": "Enabled_WithScans_5", "enable_features": [ - "AutofillAcrossIframesIos" + "AutofillAcrossIframesIos", + "AutofillAcrossIframesIosTriggerFormExtraction" ] } ] } ], - "IOSBackgroundPasteboardAccess": [ + "IOSAutofillInIsolatedWorld": [ { "platforms": [ "ios" ], "experiments": [ { - "name": "Enabled_CanaryDev", + "name": "Enabled", "enable_features": [ - "OnlyAccessClipboardAsync" + "AutofillIsolatedWorldForJavascriptIos" ] } ] } ], - "IOSBackgroundRefresh": [ + "IOSBackgroundPasteboardAccess": [ { "platforms": [ "ios" ], "experiments": [ { - "name": "Enabled_20220908", + "name": "Enabled_CanaryDev", "enable_features": [ - "EnableFeedBackgroundRefresh" + "OnlyAccessClipboardAsync" ] } ] @@ -11673,36 +11534,36 @@ ], "experiments": [ { - "name": "Enabled_Promo", + "name": "Enabled_Provisional", "params": { - "ContentPushNotificationsExperimentType": "1" + "ContentPushNotificationsExperimentType": "3" }, "enable_features": [ "ContentPushNotifications" ] }, { - "name": "Registered_Promo", + "name": "Registered_Provisional", "params": { - "ContentPushNotificationsExperimentType": "5" + "ContentPushNotificationsExperimentType": "6" }, "enable_features": [ "ContentPushNotifications" ] }, { - "name": "Enabled_Provisional", + "name": "Enabled_Promo", "params": { - "ContentPushNotificationsExperimentType": "3" + "ContentPushNotificationsExperimentType": "1" }, "enable_features": [ "ContentPushNotifications" ] }, { - "name": "Registered_Provisional", + "name": "Registered_Promo", "params": { - "ContentPushNotificationsExperimentType": "6" + "ContentPushNotificationsExperimentType": "5" }, "enable_features": [ "ContentPushNotifications" @@ -11744,6 +11605,51 @@ ] } ], + "IOSDefaultBrowserBlueDotOnToolsMenuButton": [ + { + "platforms": [ + "ios" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "BlueDotOnToolsMenuButton" + ] + } + ] + } + ], + "IOSDefaultBrowserRemindMeLater": [ + { + "platforms": [ + "ios" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "IPH_iOSPromoDefaultBrowserReminder" + ] + } + ] + } + ], + "IOSDisableParcelTracking": [ + { + "platforms": [ + "ios" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "IOSDisableParcelTracking" + ] + } + ] + } + ], "IOSDockingPromo": [ { "platforms": [ @@ -11939,21 +11845,6 @@ ] } ], - "IOSInactiveTabButtonRefactoring": [ - { - "platforms": [ - "ios" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "InactiveTabButtonRefactoring" - ] - } - ] - } - ], "IOSInternalAdditionalFeaturesSwitch": [ { "platforms": [ @@ -12066,6 +11957,21 @@ ] } ], + "IOSOmahaResyncTimerOnForeground": [ + { + "platforms": [ + "ios" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "OmahaResyncTimerOnForeground" + ] + } + ] + } + ], "IOSOverflowMenuCustomization": [ { "platforms": [ @@ -12111,6 +12017,21 @@ ] } ], + "IOSPasswordBottomSheetV2": [ + { + "platforms": [ + "ios" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "IOSPasswordBottomSheetV2" + ] + } + ] + } + ], "IOSPriceInsightsContextualPanel": [ { "platforms": [ @@ -12165,6 +12086,21 @@ ] } ], + "IOSReactivationNotifications": [ + { + "platforms": [ + "ios" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "IOSReactivationNotifications" + ] + } + ] + } + ], "IOSSaveToPhotosImprovements": [ { "platforms": [ @@ -12243,6 +12179,24 @@ ] } ], + "IOSStartTimeStartupRemediations": [ + { + "platforms": [ + "ios" + ], + "experiments": [ + { + "name": "EnabledWithSaveNTPWebState", + "params": { + "ios-startup-remediations-save-ntp-web-state": "true" + }, + "enable_features": [ + "IOSStartTimeStartupRemediations" + ] + } + ] + } + ], "IOSTFLiteLanguageDetection": [ { "platforms": [ @@ -12319,6 +12273,9 @@ "PageContentAnnotations", "SegmentationPlatformURLVisitResumptionRanker", "TabResumption2" + ], + "disable_features": [ + "VisitedURLRankingHistoryVisibilityScoreFilter" ] } ] @@ -12411,12 +12368,26 @@ ] } ], + "IOSiPadInactiveTabs": [ + { + "platforms": [ + "ios" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "InactiveTabsIPadFeature" + ] + } + ] + } + ], "IPProtectionPhase0": [ { "platforms": [ "android", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -12443,7 +12414,7 @@ ] } ], - "IdbPrioritizeForegroundClients": [ + "IdbExpediteBackendProcessingForForegroundClients": [ { "platforms": [ "windows", @@ -12457,6 +12428,29 @@ "android_weblayer", "android_webview" ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "IdbExpediteBackendProcessingForForegroundClients" + ] + } + ] + } + ], + "IdbPrioritizeForegroundClients": [ + { + "platforms": [ + "windows", + "mac", + "chromeos", + "fuchsia", + "linux", + "ios", + "android", + "android_weblayer", + "android_webview" + ], "experiments": [ { "name": "Enabled", @@ -12526,7 +12520,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -12545,7 +12538,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -12560,21 +12552,6 @@ ] } ], - "IncognitoReauthenticationForAndroid": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "IncognitoReauthenticationForAndroid" - ] - } - ] - } - ], "IncognitoScreenshot": [ { "platforms": [ @@ -12596,7 +12573,6 @@ "android", "android_webview", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -12611,21 +12587,6 @@ ] } ], - "IncreaseWindowsTextContrast": [ - { - "platforms": [ - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "IncreaseWindowsTextContrast" - ] - } - ] - } - ], "IncreasedCmdBufferParseSlice": [ { "platforms": [ @@ -12633,7 +12594,6 @@ "android_weblayer", "android_webview", "chromeos", - "chromeos_lacros", "fuchsia", "ios", "linux", @@ -12650,30 +12610,10 @@ ] } ], - "InfoBarIconMonochrome": [ - { - "platforms": [ - "chromeos", - "chromeos_lacros", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "InfoBarIconMonochrome" - ] - } - ] - } - ], "InputDeviceSettingsSplit": [ { "platforms": [ - "chromeos", - "chromeos_lacros" + "chromeos" ], "experiments": [ { @@ -12731,24 +12671,40 @@ ] } ], - "IntersectionOptimization": [ + "InvalidationsWithDirectMessagesPerPlatform": [ + { + "platforms": [ + "chromeos" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "DeviceCertProvisioningInvalidationWithDirectMessagesEnabled", + "DeviceLocalAccountPolicyInvalidationWithDirectMessagesEnabled", + "DevicePolicyInvalidationWithDirectMessagesEnabled", + "DeviceRemoteCommandsInvalidationWithDirectMessagesEnabled", + "UserCertProvisioningInvalidationWithDirectMessagesEnabled", + "UserPolicyInvalidationWithDirectMessagesEnabled", + "UserRemoteCommandsInvalidationWithDirectMessagesEnabled" + ] + } + ] + }, { "platforms": [ - "android", - "android_weblayer", - "android_webview", - "chromeos", - "chromeos_lacros", - "fuchsia", "linux", "mac", "windows" ], "experiments": [ { - "name": "Enabled", + "name": "BrowserPolicyUserRemoteCommands", "enable_features": [ - "IntersectionOptimization" + "CbcmPolicyInvalidationWithDirectMessagesEnabled", + "CbcmRemoteCommandsInvalidationWithDirectMessagesEnabled", + "UserPolicyInvalidationWithDirectMessagesEnabled", + "UserRemoteCommandsInvalidationWithDirectMessagesEnabled" ] } ] @@ -12757,8 +12713,7 @@ "IsolatedWebApps": [ { "platforms": [ - "chromeos", - "chromeos_lacros" + "chromeos" ], "experiments": [ { @@ -12771,11 +12726,25 @@ ] } ], + "JavaScriptPermissionBasedAPIMetricsEnabled": [ + { + "platforms": [ + "ios" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "JavaScriptPermissionBasedAPIMetricsEnabled" + ] + } + ] + } + ], "JourneysOnDeviceClusteringContentClustering": [ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -12803,6 +12772,11 @@ "experiments": [ { "name": "Enabled", + "params": { + "jump_start_max_away_time_minutes": "960", + "jump_start_memory_threshold_kb": "2097152", + "jump_start_min_away_time_minutes": "120" + }, "enable_features": [ "JumpStartOmnibox" ] @@ -12815,7 +12789,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -12968,7 +12941,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -12989,7 +12961,6 @@ "android", "android_webview", "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -13011,7 +12982,7 @@ ] } ], - "KidsProfilePhase1": [ + "KidsProfilePhase2": [ { "platforms": [ "linux", @@ -13020,12 +12991,15 @@ ], "experiments": [ { - "name": "AllFeatures", + "name": "Enabled", "enable_features": [ + "CustomProfileStringsForSupervisedUsers", "ForceSafeSearchForUnauthenticatedSupervisedUsers", "ForceSupervisedUserReauthenticationForBlockedSites", "ForceSupervisedUserReauthenticationForYouTube", "HideGuestModeForSupervisedUsers", + "IPH_SupervisedUserProfileSignin", + "ShowKiteForSupervisedUsers", "UncredentialedFilteringFallbackForSupervisedUsers" ] } @@ -13035,8 +13009,7 @@ "KioskHeartbeatsViaERP": [ { "platforms": [ - "chromeos", - "chromeos_lacros" + "chromeos" ], "experiments": [ { @@ -13044,6 +13017,12 @@ "enable_features": [ "KioskHeartbeatsViaERP" ] + }, + { + "name": "Disabled", + "disable_features": [ + "KioskHeartbeatsViaERP" + ] } ] } @@ -13053,7 +13032,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -13085,7 +13063,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -13126,7 +13103,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -13158,7 +13134,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -13181,7 +13156,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -13225,12 +13199,11 @@ ] } ], - "LCPTimingPredictorPrerender2": [ + "LCPPPrefetchSubresource": [ { "platforms": [ "android", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -13239,22 +13212,27 @@ { "name": "Enabled", "enable_features": [ - "LCPTimingPredictorPrerender2" + "LCPPPrefetchSubresource" ] } ] } ], - "LacrosGooglePolicyRollout": [ + "LCPTimingPredictorPrerender2": [ { "platforms": [ - "chromeos" + "android", + "android_webview", + "chromeos", + "linux", + "mac", + "windows" ], "experiments": [ { - "name": "Enabled_Dogfood", + "name": "Enabled", "enable_features": [ - "LacrosGooglePolicyRollout" + "LCPTimingPredictorPrerender2" ] } ] @@ -13285,7 +13263,6 @@ "android", "android_webview", "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -13306,7 +13283,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -13326,7 +13302,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -13347,7 +13322,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "fuchsia", "ios", "linux", @@ -13412,7 +13386,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -13435,7 +13408,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "fuchsia", "linux", "ios", @@ -13514,7 +13486,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -13538,7 +13509,6 @@ "android", "android_webview", "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -13554,6 +13524,22 @@ ] } ], + "LobsterDogfood": [ + { + "platforms": [ + "chromeos" + ], + "experiments": [ + { + "name": "Enabled_Dogfood", + "enable_features": [ + "LobsterDogfood", + "LobsterRightClickMenu" + ] + } + ] + } + ], "LocalPasswordsAndroidAccessLossWarning": [ { "platforms": [ @@ -13574,7 +13560,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "ios", "linux", "mac", @@ -13646,7 +13631,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -13674,22 +13658,28 @@ ] } ], - "MacAccessibilityAPIMigration": [ + "MHTML_Improvements": [ { "platforms": [ - "mac" + "android", + "android_webview", + "chromeos", + "ios", + "linux", + "mac", + "windows" ], "experiments": [ { "name": "Enabled", "enable_features": [ - "MacAccessibilityAPIMigration" + "MHTML_Improvements" ] } ] } ], - "MacAllowBackgroundingRenderProcesses": [ + "MacAccessibilityAPIMigration": [ { "platforms": [ "mac" @@ -13698,7 +13688,7 @@ { "name": "Enabled", "enable_features": [ - "MacAllowBackgroundingRenderProcesses" + "MacAccessibilityAPIMigration" ] } ] @@ -13728,7 +13718,7 @@ { "name": "Enabled", "params": { - "LocationProviderManagerMode": "NetworkOnly" + "LocationProviderManagerMode": "HybridPlatform" }, "enable_features": [ "LocationProviderManager" @@ -13773,8 +13763,7 @@ "MahiEnabled": [ { "platforms": [ - "chromeos", - "chromeos_lacros" + "chromeos" ], "experiments": [ { @@ -13825,8 +13814,7 @@ "MainThreadCompositingPriority": [ { "platforms": [ - "chromeos", - "chromeos_lacros" + "chromeos" ], "experiments": [ { @@ -13843,7 +13831,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -13866,7 +13853,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -13985,7 +13971,6 @@ "android", "android_webview", "chromeos", - "chromeos_lacros", "ios", "linux", "mac", @@ -14032,7 +14017,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -14056,36 +14040,53 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" ], "experiments": [ { - "name": "ShortDelay", - "params": { - "memory_purge_background_max_delay": "45s", - "memory_purge_background_min_delay": "30s" - }, + "name": "DisableAll", "enable_features": [ + "ForwardMemoryPressureToBlinkIsolates", + "ReleaseResourceDecodedDataOnMemoryPressure", + "ReleaseResourceStrongReferencesOnMemoryPressure" + ], + "disable_features": [ "MemoryPurgeInBackground" ] }, { - "name": "LongDelay", - "params": { - "memory_purge_background_max_delay": "11m", - "memory_purge_background_min_delay": "10m" - }, + "name": "DisableGC", "enable_features": [ - "MemoryPurgeInBackground" + "MemoryPurgeInBackground", + "ReleaseResourceDecodedDataOnMemoryPressure", + "ReleaseResourceStrongReferencesOnMemoryPressure" + ], + "disable_features": [ + "ForwardMemoryPressureToBlinkIsolates" ] }, { - "name": "Disabled", + "name": "DisableStrongReferences", + "enable_features": [ + "ForwardMemoryPressureToBlinkIsolates", + "MemoryPurgeInBackground", + "ReleaseResourceDecodedDataOnMemoryPressure" + ], "disable_features": [ - "MemoryPurgeInBackground" + "ReleaseResourceStrongReferencesOnMemoryPressure" + ] + }, + { + "name": "DisableDecodedData", + "enable_features": [ + "ForwardMemoryPressureToBlinkIsolates", + "MemoryPurgeInBackground", + "ReleaseResourceStrongReferencesOnMemoryPressure" + ], + "disable_features": [ + "ReleaseResourceDecodedDataOnMemoryPressure" ] } ] @@ -14128,7 +14129,6 @@ "android", "android_webview", "chromeos", - "chromeos_lacros", "ios", "linux", "mac", @@ -14150,7 +14150,6 @@ "android", "android_webview", "chromeos", - "chromeos_lacros", "ios", "linux", "mac", @@ -14185,7 +14184,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -14205,7 +14203,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -14221,7 +14218,7 @@ ] } ], - "MigrateSyncingUserToSignedIn": [ + "MigrateSyncingUserToSignedInAndroid": [ { "platforms": [ "android" @@ -14236,35 +14233,12 @@ ] } ], - "MojoChannelAssociatedCrashesOnSendError": [ - { - "platforms": [ - "android", - "android_webview", - "chromeos", - "chromeos_lacros", - "fuchsia", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "MojoChannelAssociatedCrashesOnSendError" - ] - } - ] - } - ], "MojoChannelAssociatedSendUsesRunOrPostTask": [ { "platforms": [ "android", "android_webview", "chromeos", - "chromeos_lacros", "ios", "linux", "mac", @@ -14285,7 +14259,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "fuchsia", "ios", "linux", @@ -14307,7 +14280,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -14364,7 +14336,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -14397,8 +14368,7 @@ "MultiCalendarSupport": [ { "platforms": [ - "chromeos", - "chromeos_lacros" + "chromeos" ], "experiments": [ { @@ -14415,7 +14385,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -14436,7 +14405,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -14550,8 +14518,7 @@ "NearbySharingSelfShare": [ { "platforms": [ - "chromeos", - "chromeos_lacros" + "chromeos" ], "experiments": [ { @@ -14583,7 +14550,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -14606,7 +14572,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -14631,8 +14596,7 @@ { "platforms": [ "linux", - "chromeos", - "chromeos_lacros" + "chromeos" ], "experiments": [ { @@ -14671,9 +14635,29 @@ ], "experiments": [ { - "name": "Enabled_20220622", + "name": "Enabled_20220622", + "enable_features": [ + "EnableNeuralPalmDetectionFilter" + ] + } + ] + } + ], + "NewContentForCheckerboardedScrolls": [ + { + "platforms": [ + "android_webview", + "android", + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", "enable_features": [ - "EnableNeuralPalmDetectionFilter" + "NewContentForCheckerboardedScrolls" ] } ] @@ -14704,7 +14688,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -14719,7 +14702,7 @@ ] } ], - "NoPreReadMainDll": [ + "NoPreReadMainDllIfSsd": [ { "platforms": [ "windows" @@ -14728,7 +14711,7 @@ { "name": "Enabled", "enable_features": [ - "NoPreReadMainDll" + "NoPreReadMainDllIfSsd" ] } ] @@ -14740,7 +14723,6 @@ "android", "android_webview", "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -14762,7 +14744,6 @@ "android", "android_webview", "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -14783,7 +14764,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -14865,7 +14845,12 @@ "OcclusionCullingQuadSplitLimit": [ { "platforms": [ - "chromeos" + "android", + "chromeos", + "fuchsia", + "linux", + "mac", + "windows" ], "experiments": [ { @@ -14947,7 +14932,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -15015,7 +14999,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -15064,7 +15047,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -15095,7 +15077,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "ios", "linux", "mac", @@ -15130,7 +15111,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -15193,7 +15173,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "ios", "linux", "mac", @@ -15293,7 +15272,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -15463,7 +15441,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "ios", "linux", "mac", @@ -15487,7 +15464,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -15586,7 +15562,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -15635,7 +15610,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -15666,13 +15640,30 @@ ] } ], + "OnDeviceNotificationContentDetectionModel": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "EnabledWithAllowlistSampling", + "params": { + "OnDeviceNotificationContentDetectionModelAllowlistSamplingRate": "100" + }, + "enable_features": [ + "OnDeviceNotificationContentDetectionModel" + ] + } + ] + } + ], "OneCopyLegacyMPVideoFrameUploadViaSI": [ { "platforms": [ "mac", "windows", "chromeos", - "chromeos_lacros", "linux", "fuchsia" ], @@ -15705,7 +15696,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -15923,7 +15913,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "ios", "linux", "mac", @@ -15947,7 +15936,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "ios", "linux", "mac", @@ -15981,47 +15969,6 @@ ] } ], - "OptimizeParsingDataUrls": [ - { - "platforms": [ - "android", - "android_webview", - "chromeos", - "chromeos_lacros", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled_20240711", - "enable_features": [ - "OptimizeParsingDataUrls" - ] - } - ] - } - ], - "OptimizeStaticAnimationProperties": [ - { - "platforms": [ - "android", - "android_webview", - "chromeos", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "StaticAnimationOptimization" - ] - } - ] - } - ], "OrcaEnabled": [ { "platforms": [ @@ -16088,8 +16035,7 @@ "OsFeedbackDialog": [ { "platforms": [ - "chromeos", - "chromeos_lacros" + "chromeos" ], "experiments": [ { @@ -16116,26 +16062,10 @@ ] } ], - "OsUpdateHandler": [ - { - "platforms": [ - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "RegisterOsUpdateHandlerWin" - ] - } - ] - } - ], "OutOfProcessPrintDriversPrint": [ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -16188,8 +16118,21 @@ "enable_features": [ "AllowWindowDragUsingSystemDragDrop", "OverrideDefaultOzonePlatformHintToAuto", + "WaylandPerSurfaceScale", "WaylandTextInputV3" ] + }, + { + "name": "Enabled_IME_UiScale_Video_Dogfood", + "enable_features": [ + "AcceleratedVideoDecodeLinuxGL", + "AcceleratedVideoDecodeLinuxZeroCopyGL", + "AllowWindowDragUsingSystemDragDrop", + "OverrideDefaultOzonePlatformHintToAuto", + "WaylandPerSurfaceScale", + "WaylandTextInputV3", + "WaylandUiScale" + ] } ] } @@ -16198,7 +16141,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -16209,6 +16151,39 @@ "enable_features": [ "PMProcessPriorityPolicy", "PriorityOverridePendingViews" + ], + "disable_features": [ + "MacAllowBackgroundingRenderProcesses", + "RestrictThreadPoolInBackground", + "SetIsolatesPriority", + "UnimportantFramesPriority", + "UserVisibleProcessPriority" + ] + }, + { + "name": "EnabledWithMacBackgrounding", + "enable_features": [ + "MacAllowBackgroundingRenderProcesses", + "PMProcessPriorityPolicy", + "PriorityOverridePendingViews" + ], + "disable_features": [ + "RestrictThreadPoolInBackground", + "SetIsolatesPriority", + "UnimportantFramesPriority", + "UserVisibleProcessPriority" + ] + }, + { + "name": "EnabledWithTriStatePriority", + "enable_features": [ + "MacAllowBackgroundingRenderProcesses", + "PMProcessPriorityPolicy", + "PriorityOverridePendingViews", + "RestrictThreadPoolInBackground", + "SetIsolatesPriority", + "UnimportantFramesPriority", + "UserVisibleProcessPriority" ] } ] @@ -16229,6 +16204,44 @@ ] } ], + "PWANavigationCapturingV2WindowMacLinux": [ + { + "platforms": [ + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "EnabledSettingOnByDefault20241105", + "params": { + "link_capturing_state": "reimpl_default_on" + }, + "enable_features": [ + "PwaNavigationCapturing" + ] + }, + { + "name": "EnabledSettingOffByDefault20241105", + "params": { + "link_capturing_state": "reimpl_default_off" + }, + "enable_features": [ + "PwaNavigationCapturing" + ] + }, + { + "name": "EnabledSettingOnForClientModes", + "params": { + "link_capturing_state": "reimpl_on_via_client_mode" + }, + "enable_features": [ + "PwaNavigationCapturing" + ] + } + ] + } + ], "PageAllocatorRetryOnCommitFailure": [ { "platforms": [ @@ -16249,7 +16262,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -16310,7 +16322,6 @@ "android_webview", "android", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -16330,7 +16341,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -16348,13 +16358,55 @@ ] } ], - "PartitionAllocAdvancedMemorySafetyChecks": [ + "ParkableStringsLessAggressiveAndZstd": [ { "platforms": [ "android", "android_webview", "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "LessAggressiveParkableString", + "UseZstdForParkableStrings" + ] + } + ] + } + ], + "PartialPageZeroing": [ + { + "platforms": [ + "android", + "chromeos", "chromeos_lacros", + "ios", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "EnabledPAAndV8_20241106", + "enable_features": [ + "PartitionAllocEventuallyZeroFreedMemory", + "V8Flag_zero_unused_memory" + ] + } + ] + } + ], + "PartitionAllocAdvancedMemorySafetyChecks": [ + { + "platforms": [ + "android", + "android_webview", + "chromeos", "fuchsia", "linux", "mac", @@ -16381,7 +16433,6 @@ "android_weblayer", "android_webview", "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -16422,7 +16473,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -16446,7 +16496,6 @@ "android", "android_webview", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -16509,43 +16558,115 @@ "disable_features": [ "PartitionAllocSortActiveSlotSpans" ] - }, + }, + { + "name": "DontStraightenLargerSlotSpanFreeLists_v2", + "params": { + "interval": "4s" + }, + "enable_features": [ + "PartitionAllocMemoryReclaimer", + "PartitionAllocSortSmallerSlotSpanFreeLists" + ], + "disable_features": [ + "PartitionAllocSortActiveSlotSpans", + "PartitionAllocStraightenLargerSlotSpanFreeLists" + ] + } + ] + } + ], + "PartitionAllocMemoryTagging": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "params": { + "enabled-processes": "all-processes", + "memtag-mode": "sync", + "retag-mode": "random" + }, + "enable_features": [ + "PartitionAllocMemoryTagging" + ] + } + ] + } + ], + "PartitionAllocParameterTuning": [ + { + "platforms": [ + "android", + "android_weblayer", + "android_webview", + "chromeos", + "fuchsia", + "linux", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "BlinkUseLargeEmptySlotSpanRingForBufferRoot", + "PartitionAllocAdjustSizeWhenInForeground", + "PartitionAllocLargeEmptySlotSpanRing" + ] + } + ] + } + ], + "PartitionAllocPermissiveMte": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "PartitionAllocPermissiveMte" + ] + } + ] + } + ], + "PartitionAllocShadowMetadata": [ + { + "platforms": [ + "linux" + ], + "experiments": [ { - "name": "DontStraightenLargerSlotSpanFreeLists_v2", + "name": "Enabled", "params": { - "interval": "4s" + "enabled-processes": "renderer-only" }, "enable_features": [ - "PartitionAllocMemoryReclaimer", - "PartitionAllocSortSmallerSlotSpanFreeLists" - ], - "disable_features": [ - "PartitionAllocSortActiveSlotSpans", - "PartitionAllocStraightenLargerSlotSpanFreeLists" + "PartitionAllocShadowMetadata" ] } ] } ], - "PartitionAllocParameterTuning": [ + "PartitionAllocShortMemoryReclaim": [ { "platforms": [ "android", - "android_weblayer", "android_webview", "chromeos", - "chromeos_lacros", - "fuchsia", "linux", + "mac", "windows" ], "experiments": [ { "name": "Enabled", "enable_features": [ - "BlinkUseLargeEmptySlotSpanRingForBufferRoot", - "PartitionAllocAdjustSizeWhenInForeground", - "PartitionAllocLargeEmptySlotSpanRing" + "PartitionAllocShortMemoryReclaim" ] } ] @@ -16556,7 +16677,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -16581,7 +16701,6 @@ "android", "android_webview", "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -16603,7 +16722,6 @@ "android", "android_webview", "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -16624,7 +16742,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -16649,19 +16766,11 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" ], "experiments": [ - { - "name": "Control", - "disable_features": [ - "PartitionVisitedLinkDatabase", - "PartitionVisitedLinkDatabaseWithSelfLinks" - ] - }, { "name": "EnabledNoSelfLinks", "enable_features": [ @@ -16679,6 +16788,13 @@ "disable_features": [ "PartitionVisitedLinkDatabase" ] + }, + { + "name": "Control", + "disable_features": [ + "PartitionVisitedLinkDatabase", + "PartitionVisitedLinkDatabaseWithSelfLinks" + ] } ] } @@ -16689,7 +16805,6 @@ "android", "android_webview", "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -16705,26 +16820,6 @@ ] } ], - "PasswordGenerationSoftNudge": [ - { - "platforms": [ - "chromeos", - "chromeos_lacros", - "fuchsia", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "PasswordGenerationSoftNudge" - ] - } - ] - } - ], "PasswordInfobarDisplayLength": [ { "platforms": [ @@ -16743,16 +16838,19 @@ ] } ], - "PasswordMigrationWarningDeprecationStudy": [ + "PasswordManualFallbackAvailable": [ { "platforms": [ - "android" + "chromeos", + "linux", + "mac", + "windows" ], "experiments": [ { - "name": "Deprecation", - "disable_features": [ - "UnifiedPasswordManagerLocalPasswordsMigrationWarning" + "name": "Enabled", + "enable_features": [ + "PasswordManualFallbackAvailable" ] } ] @@ -16826,7 +16924,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -16845,7 +16942,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -16860,11 +16956,28 @@ ] } ], + "PdfSearchify": [ + { + "platforms": [ + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "PdfSearchify" + ] + } + ] + } + ], "PdfUseSkiaRenderer": [ { "platforms": [ "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -16932,6 +17045,7 @@ "name": "Enabled", "enable_features": [ "AvoidScheduleWorkDuringNativeEventProcessing", + "ConditionallySkipGpuChannelFlush", "EarlyEstablishGpuChannel", "EstablishGpuChannelAsync", "ExpandedPrefetchRange", @@ -16943,7 +17057,8 @@ "RunTasksByBatches", "SharedStorageAPIEnableWALForDatabase", "SqlWALModeOnDipsDatabase", - "SqlWALModeOnSegmentationDatabase" + "SqlWALModeOnSegmentationDatabase", + "UIPumpImprovementsWin" ] } ] @@ -16960,6 +17075,7 @@ }, "enable_features": [ "AvoidScheduleWorkDuringNativeEventProcessing", + "ConditionallySkipGpuChannelFlush", "EarlyEstablishGpuChannel", "EstablishGpuChannelAsync", "FledgeEnableWALForInterestGroupStorage", @@ -16978,7 +17094,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "fuchsia" ], @@ -16987,6 +17102,7 @@ "name": "Enabled", "enable_features": [ "AvoidScheduleWorkDuringNativeEventProcessing", + "ConditionallySkipGpuChannelFlush", "EarlyEstablishGpuChannel", "EstablishGpuChannelAsync", "FledgeEnableWALForInterestGroupStorage", @@ -17009,6 +17125,8 @@ "name": "Enabled", "enable_features": [ "AvoidScheduleWorkDuringNativeEventProcessing", + "ConditionallySkipGpuChannelFlush", + "DirectCompositorThreadIpc", "FledgeEnableWALForInterestGroupStorage", "LevelDBProtoAsyncWrite", "MojoBindingsInlineSLS", @@ -17029,6 +17147,8 @@ "name": "Enabled", "enable_features": [ "AvoidScheduleWorkDuringNativeEventProcessing", + "ConditionallySkipGpuChannelFlush", + "DirectCompositorThreadIpc", "FledgeEnableWALForInterestGroupStorage", "LevelDBProtoAsyncWrite", "MojoBindingsInlineSLS", @@ -17049,7 +17169,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -17088,31 +17207,10 @@ ] } ], - "PerformanceInterventionMetricsStudy": [ - { - "platforms": [ - "chromeos", - "chromeos_lacros", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled_20240626", - "enable_features": [ - "IPH_PerformanceInterventionDialogFeature", - "PerformanceIntervention" - ] - } - ] - } - ], "PerformanceInterventionUILaunch": [ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -17151,8 +17249,7 @@ "PeripheralCustomization": [ { "platforms": [ - "chromeos", - "chromeos_lacros" + "chromeos" ], "experiments": [ { @@ -17170,7 +17267,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -17210,7 +17306,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -17238,15 +17333,13 @@ "PickerUI": [ { "platforms": [ - "chromeos", - "chromeos_lacros" + "chromeos" ], "experiments": [ { "name": "Enabled", "enable_features": [ "ModifierSplit", - "ModifierSplitDogfood", "Picker" ] } @@ -17268,21 +17361,6 @@ ] } ], - "PlusAddressAndroidErrorStatesEnabled": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "PlusAddressAndroidErrorStatesEnabled" - ] - } - ] - } - ], "PlusAddressCreateSuggestion": [ { "platforms": [ @@ -17309,7 +17387,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "ios", "linux", "mac", @@ -17319,15 +17396,13 @@ { "name": "Enabled", "enable_features": [ - "PlusAddressAndroidManualFallbackEnabled", - "PlusAddressBlocklistEnabled", + "PlusAddressAndroidOpenGmsCoreManagementPage", "PlusAddressFallbackFromContextMenu", "PlusAddressGlobalToggle", - "PlusAddressIOSManualFallbackEnabled", + "PlusAddressOfferCreationIfPasswordFieldIsNotVisible", "PlusAddressOfferCreationOnSingleUsernameForms", "PlusAddressPreallocation", - "PlusAddressSuggestionRedesign", - "PlusAddressUpdatedErrorStatesInOnboardingModal", + "PlusAddressRefinedPasswordFormClassification", "PlusAddressUserOnboardingEnabled", "PlusAddressesEnabled" ] @@ -17341,7 +17416,6 @@ "android", "android_webview", "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -17364,7 +17438,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "ios", "linux", "mac", @@ -17380,23 +17453,23 @@ ] } ], - "PostGetMyMemoryStateToBackground": [ + "PompanoEnabled": [ { "platforms": [ - "android", - "android_webview" + "chromeos" ], "experiments": [ { "name": "Enabled", "enable_features": [ - "PostGetMyMemoryStateToBackground" + "MahiPanelResizable", + "Pompano" ] } ] } ], - "PostPowerMonitorBroadcastReceiverInitToBackground": [ + "PostGetMyMemoryStateToBackground": [ { "platforms": [ "android", @@ -17406,7 +17479,7 @@ { "name": "Enabled", "enable_features": [ - "PostPowerMonitorBroadcastReceiverInitToBackground" + "PostGetMyMemoryStateToBackground" ] } ] @@ -17433,7 +17506,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "ios", "linux", "mac", @@ -17449,29 +17521,6 @@ ] } ], - "PreInitializePageAndFrameForSVGImage": [ - { - "platforms": [ - "android", - "chromeos", - "chromeos_lacros", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "params": { - "max_pre_initialize_count": "1" - }, - "enable_features": [ - "PreInitializePageAndFrameForSVGImage" - ] - } - ] - } - ], "PreReadDllBrowserProcess": [ { "platforms": [ @@ -17506,7 +17555,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -17533,7 +17581,6 @@ "android_weblayer", "android_webview", "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -17556,7 +17603,6 @@ "android_webview", "android_weblayer", "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -17597,7 +17643,6 @@ "android", "android_webview", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -17616,7 +17661,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -17637,14 +17681,17 @@ "android", "android_webview", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" ], "experiments": [ { - "name": "Enabled_20240312", + "name": "Enabled_20241023", + "params": { + "PrefetchReusableUseNewWaitLoop": "true", + "prefetch_reusable_body_size_limit": "65536" + }, "enable_features": [ "PrefetchReusable" ] @@ -17652,100 +17699,91 @@ ] } ], - "PreinstalledWebAppsCoreOnly": [ + "PreloadTopChromeWebUI": [ { "platforms": [ - "chromeos", - "chromeos_lacros" + "linux", + "mac", + "windows", + "chromeos" ], "experiments": [ { - "name": "Enabled", + "name": "preload-on-warmup-delay", + "params": { + "delay-preload": "true", + "preload-mode": "preload-on-warmup", + "smart-preload": "true" + }, "enable_features": [ - "AppPreloadServiceAllUserTypes", - "PreinstalledWebAppsCoreOnly" + "PreloadTopChromeWebUI" ] } ] } ], - "PreloadSystemFonts": [ + "PreloadingHeuristicsMLModel": [ { "platforms": [ - "android", "chromeos", - "chromeos_lacros", - "fuchsia", "linux", "mac", "windows" ], "experiments": [ { - "name": "Enabled", + "name": "Enabled_20240726_NoEnact", "params": { - "preload_system_fonts_required_memory_gb": "4", - "preload_system_fonts_targets": "[{\"family\":\"arial\",\"weight\":400,\"size\":14,\"csize\":14,\"text\":\"ab\"}]" + "enact_candidates": "false", + "one_execution_per_hover": "false" }, "enable_features": [ - "PreloadSystemFonts" + "PreloadingHeuristicsMLModel" ] } ] } ], - "PreloadTopChromeWebUI": [ + "PreloadingViewportHeuristics": [ { "platforms": [ - "linux", - "mac", - "windows", - "chromeos", - "chromeos_lacros" + "android" ], "experiments": [ { - "name": "preload-on-warmup", + "name": "Moderate", "params": { - "preload-mode": "preload-on-warmup", - "smart-preload": "true" + "delay": "1000ms", + "distance_from_ptr_down_high": "0", + "distance_from_ptr_down_low": "-0.3", + "largest_anchor_threshold": "0.5" }, "enable_features": [ - "PreloadTopChromeWebUI" + "PreloadingViewportHeuristics" ] }, { - "name": "preload-on-warmup-delay", + "name": "Aggressive", "params": { - "delay-preload": "true", - "preload-mode": "preload-on-warmup", - "smart-preload": "true" + "delay": "1000ms", + "distance_from_ptr_down_high": "0", + "distance_from_ptr_down_low": "-0.3", + "largest_anchor_threshold": "0.25" }, "enable_features": [ - "PreloadTopChromeWebUI" + "PreloadingViewportHeuristics" ] - } - ] - } - ], - "PreloadingHeuristicsMLModel": [ - { - "platforms": [ - "chromeos", - "chromeos_lacros", - "linux", - "mac", - "windows" - ], - "experiments": [ + }, { - "name": "Enabled_20240726_NoEnact", + "name": "Conservative", "params": { - "enact_candidates": "false", - "one_execution_per_hover": "false" + "delay": "1000ms", + "distance_from_ptr_down_high": "0", + "distance_from_ptr_down_low": "-0.3", + "largest_anchor_threshold": "1" }, "enable_features": [ - "PreloadingHeuristicsMLModel" + "PreloadingViewportHeuristics" ] } ] @@ -17757,8 +17795,7 @@ "linux", "mac", "windows", - "chromeos", - "chromeos_lacros" + "chromeos" ], "experiments": [ { @@ -17782,8 +17819,7 @@ "linux", "mac", "windows", - "chromeos", - "chromeos_lacros" + "chromeos" ], "experiments": [ { @@ -17800,18 +17836,40 @@ "platforms": [ "linux", "mac", - "windows", - "chromeos", - "chromeos_lacros" + "windows", + "chromeos" + ], + "experiments": [ + { + "name": "Enabled", + "params": { + "embedder_blocked_hosts": "" + }, + "enable_features": [ + "Prerender2EmbedderBlockedHosts" + ] + } + ] + } + ], + "Prerender2FallbackPrefetchSpecRules": [ + { + "platforms": [ + "android", + "android_webview", + "chromeos", + "linux", + "mac", + "windows" ], "experiments": [ { - "name": "Enabled", + "name": "Enabled_20241023", "params": { - "embedder_blocked_hosts": "" + "kPrerender2FallbackPrefetchReusablePolicy": "UseIfIsLikelyAheadOfPrerender" }, "enable_features": [ - "Prerender2EmbedderBlockedHosts" + "Prerender2FallbackPrefetchSpecRules" ] } ] @@ -17841,8 +17899,7 @@ "linux", "mac", "windows", - "chromeos", - "chromeos_lacros" + "chromeos" ], "experiments": [ { @@ -17859,52 +17916,21 @@ ] } ], - "Prerender2WarmUpCompositor": [ + "PreserveDiscardableImageMapQuality": [ { "platforms": [ + "android_webview", "android", + "chromeos", "linux", "mac", - "windows", - "chromeos", - "chromeos_lacros" + "windows" ], "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" - }, + "name": "Enabled", "enable_features": [ - "Prerender2WarmUpCompositor", - "WarmUpCompositor" - ] - }, - { - "name": "Control_20240626", - "disable_features": [ - "Prerender2WarmUpCompositor", - "WarmUpCompositor" + "PreserveDiscardableImageMapQuality" ] } ] @@ -17951,7 +17977,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -17971,7 +17996,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -17990,7 +18014,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -18023,6 +18046,39 @@ "enable_features": [ "PriceTrackingPromo", "SegmentationPlatformEphemeralCardRanker" + ], + "disable_features": [ + "SegmentationPlatformTipsEphemeralCard" + ] + }, + { + "name": "Tips_Enabled", + "params": { + "TipsEphemeralCardExperimentTrainParam": "lens_ephemeral_module_search_variation,save_passwords_ephemeral_module,enhanced_safe_browsing_ephemeral_module,address_bar_position_ephemeral_module", + "TipsEphemeralCardModuleMaxImpressionCount": "3", + "TipsLensShopExperimentType": "0", + "TipsSafeBrowsingExperimentType": "0" + }, + "enable_features": [ + "SegmentationPlatformEphemeralCardRanker", + "SegmentationPlatformTipsEphemeralCard" + ], + "disable_features": [ + "PriceTrackingPromo" + ] + }, + { + "name": "Tips_And_Price_Tracking_Enabled", + "params": { + "TipsEphemeralCardExperimentTrainParam": "lens_ephemeral_module_search_variation,save_passwords_ephemeral_module,enhanced_safe_browsing_ephemeral_module,address_bar_position_ephemeral_module", + "TipsEphemeralCardModuleMaxImpressionCount": "3", + "TipsLensShopExperimentType": "0", + "TipsSafeBrowsingExperimentType": "0" + }, + "enable_features": [ + "PriceTrackingPromo", + "SegmentationPlatformEphemeralCardRanker", + "SegmentationPlatformTipsEphemeralCard" ] } ] @@ -18080,7 +18136,6 @@ "android_weblayer", "android_webview", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -18105,7 +18160,6 @@ "android", "android_webview", "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -18124,8 +18178,7 @@ "PrivacyHubAppPermissions": [ { "platforms": [ - "chromeos", - "chromeos_lacros" + "chromeos" ], "experiments": [ { @@ -18140,8 +18193,7 @@ "PrivacyHubAppPermissionsV2": [ { "platforms": [ - "chromeos", - "chromeos_lacros" + "chromeos" ], "experiments": [ { @@ -18156,8 +18208,7 @@ "PrivacyHubGeolocation": [ { "platforms": [ - "chromeos", - "chromeos_lacros" + "chromeos" ], "experiments": [ { @@ -18172,8 +18223,7 @@ "PrivacyHubMVP": [ { "platforms": [ - "chromeos", - "chromeos_lacros" + "chromeos" ], "experiments": [ { @@ -18261,7 +18311,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -18291,6 +18340,26 @@ ] } ], + "PrivacySandboxAdsApiUxEnhancements": [ + { + "platforms": [ + "android", + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "PrivacySandboxAdsApiUxEnhancements" + ] + } + ] + } + ], "PrivacySandboxAdsNoticeCCT": [ { "platforms": [ @@ -18313,7 +18382,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -18391,7 +18459,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -18411,7 +18478,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -18431,7 +18497,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -18468,46 +18533,11 @@ ] } ], - "PrivacySandboxV4": [ - { - "platforms": [ - "android", - "chromeos", - "chromeos_lacros", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled_Notice_GA_Stable", - "params": { - "notice-required": "true", - "restricted-notice": "true" - }, - "enable_features": [ - "PrivacySandboxSettings4" - ] - }, - { - "name": "Enabled_Consent_GA_Stable", - "params": { - "consent-required": "true", - "restricted-notice": "true" - }, - "enable_features": [ - "PrivacySandboxSettings4" - ] - } - ] - } - ], "PrivateAggregationApiFilteringIds": [ { "platforms": [ "android", "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -18528,7 +18558,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -18565,7 +18594,6 @@ "android", "android_weblayer", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -18589,7 +18617,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -18608,7 +18635,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -18627,25 +18653,6 @@ ] } ], - "ProcessReuseOnPrerenderCOOPSwap": [ - { - "platforms": [ - "windows", - "mac", - "linux", - "chromeos", - "chromeos_lacros" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "ProcessReuseOnPrerenderCOOPSwap" - ] - } - ] - } - ], "ProcessReuseOnPrerenderCOOPSwapAndroid": [ { "platforms": [ @@ -18741,7 +18748,6 @@ "ProfilesReordering": [ { "platforms": [ - "chromeos_lacros", "linux", "mac", "windows" @@ -18808,7 +18814,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -18823,12 +18828,11 @@ ] } ], - "ProtectedAudienceMorePAggMetrics": [ + "ProtectedAudienceEarlyProcessCreationStudy": [ { "platforms": [ "android", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -18837,30 +18841,26 @@ { "name": "Enabled", "enable_features": [ - "PrivateAggregationApiProtectedAudienceAdditionalExtensions" + "FledgeStartAnticipatoryProcesses" ] } ] } ], - "ProtectedAudienceMultiThreadedBidderWorklet": [ + "ProtectedAudienceMorePAggMetrics": [ { "platforms": [ "android", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" ], "experiments": [ { - "name": "TwoThreads", - "params": { - "bidder_worklet_thread_pool_size_logarithmic_scaling_factor": "1.0" - }, + "name": "Enabled", "enable_features": [ - "FledgeBidderWorkletThreadPool" + "PrivateAggregationApiProtectedAudienceAdditionalExtensions" ] } ] @@ -18871,7 +18871,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -18889,12 +18888,30 @@ ] } ], + "ProtectedAudienceNoWasmLazyCompilationStudy": [ + { + "platforms": [ + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "FledgeNoWasmLazyCompilation" + ] + } + ] + } + ], "ProtectedAudiencePreconnectCacheStudy": [ { "platforms": [ "android", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -18909,12 +18926,30 @@ ] } ], + "ProtectedAudienceTrustedKVSupport": [ + { + "platforms": [ + "android", + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "FledgeTrustedSignalsKVv2Support" + ] + } + ] + } + ], "ProtectedAudiencesHeaderDirectFromSellerSignalsStudy": [ { "platforms": [ "android", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -18934,7 +18969,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -18950,7 +18984,7 @@ ] } ], - "ProtectedAudiencesUpdateIfOlderThanMs": [ + "ProtectedAudiencesSellerNonce": [ { "platforms": [ "android", @@ -18964,19 +18998,17 @@ { "name": "Enabled", "enable_features": [ - "InterestGroupUpdateIfOlderThan" + "FledgeSellerNonce" ] } ] } ], - "PruneOldTransferCacheEntries": [ + "ProtectedAudiencesUpdateIfOlderThanMs": [ { "platforms": [ "android", - "android_webview", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -18985,19 +19017,33 @@ { "name": "Enabled", "enable_features": [ - "PruneOldTransferCacheEntries" + "InterestGroupUpdateIfOlderThan" + ] + } + ] + } + ], + "ProvisionalNotificationAlert": [ + { + "platforms": [ + "ios" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "ProvisionalNotificationAlert" ] } ] } ], - "PruneRedundantAXInlineTextBoxText": [ + "PruneOldTransferCacheEntries": [ { "platforms": [ "android", "android_webview", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -19006,7 +19052,7 @@ { "name": "Enabled", "enable_features": [ - "AccessibilityPruneRedundantInlineText" + "PruneOldTransferCacheEntries" ] } ] @@ -19019,8 +19065,7 @@ "windows", "android", "mac", - "chromeos", - "chromeos_lacros" + "chromeos" ], "experiments": [ { @@ -19037,7 +19082,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -19058,7 +19102,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -19084,7 +19127,6 @@ "android_webview", "android", "chromeos", - "chromeos_lacros", "fuchsia", "ios", "linux", @@ -19150,7 +19192,6 @@ "android", "android_webview", "chromeos", - "chromeos_lacros", "ios", "linux", "mac", @@ -19228,7 +19269,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -19309,7 +19349,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -19328,7 +19367,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -19354,7 +19392,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -19373,7 +19410,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -19399,59 +19435,37 @@ { "name": "Enabled", "enable_features": [ - "ReadAnythingReadAloud" - ] - }, - { - "name": "Disabled", - "disable_features": [ - "ReadAnythingReadAloud" - ] - } - ] - } - ], - "ReadAnythingReadAloudPhraseHighlighting": [ - { - "platforms": [ - "chromeos", - "chromeos_lacros", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "ReadAnythingReadAloudPhraseHighlighting" + "ReadAnythingReadAloud" ] }, { "name": "Disabled", "disable_features": [ - "ReadAnythingReadAloudPhraseHighlighting" + "ReadAnythingReadAloud" ] } ] } ], - "ReadAnythingReadAloudWordHighlighting": [ + "ReadAnythingReadAloudPhraseHighlighting": [ { "platforms": [ - "chromeos" + "chromeos", + "linux", + "mac", + "windows" ], "experiments": [ { "name": "Enabled", "enable_features": [ - "ReadAnythingReadAloudAutomaticWordHighlighting" + "ReadAnythingReadAloudPhraseHighlighting" ] }, { "name": "Disabled", "disable_features": [ - "ReadAnythingReadAloudAutomaticWordHighlighting" + "ReadAnythingReadAloudPhraseHighlighting" ] } ] @@ -19463,7 +19477,6 @@ "android", "android_webview", "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -19484,7 +19497,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -19505,7 +19517,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -19556,7 +19567,6 @@ "android", "android_webview", "chromeos", - "chromeos_lacros", "ios", "linux", "mac", @@ -19591,6 +19601,37 @@ ] } ], + "RegisterOsUpdateHandlerWin": [ + { + "platforms": [ + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "RegisterOsUpdateHandlerWin" + ] + } + ] + } + ], + "RegmonPolicyMonitoring": [ + { + "platforms": [ + "chromeos" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "CrOSLateBootRegmonPolicyMonitoringEnabled", + "NetworkAnnotationMonitoring" + ] + } + ] + } + ], "RemotePageMetadataAndroid": [ { "platforms": [ @@ -19634,7 +19675,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -19658,7 +19698,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -19703,6 +19742,24 @@ ] } ], + "RemoveRendererProcessLimit": [ + { + "platforms": [ + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "RemoveRendererProcessLimit" + ] + } + ] + } + ], "RemoveSearchEngineChoiceAttribution": [ { "platforms": [ @@ -19746,7 +19803,6 @@ "android_webview", "android", "chromeos", - "chromeos_lacros", "fuchsia", "ios", "linux", @@ -19866,46 +19922,40 @@ ] } ], - "ReportEventTimingAtVisibilityChange": [ + "ReportingServiceAlwaysFlush": [ { "platforms": [ "android", + "android_webview", "chromeos", - "chromeos_lacros", - "fuchsia", + "ios", "linux", "mac", - "windows", - "android_webview", - "android_weblayer" + "windows" ], "experiments": [ { "name": "Enabled", "enable_features": [ - "ReportEventTimingAtVisibilityChange" + "ReportingServiceAlwaysFlush" ] } ] } ], - "ReportingServiceAlwaysFlush": [ + "ResolutionBasedDecoderPriority": [ { "platforms": [ - "android", - "android_webview", - "chromeos", - "chromeos_lacros", - "ios", "linux", "mac", - "windows" + "windows", + "chromeos" ], "experiments": [ { "name": "Enabled", "enable_features": [ - "ReportingServiceAlwaysFlush" + "ResolutionBasedDecoderPriority" ] } ] @@ -19941,20 +19991,21 @@ ] } ], - "RichInlineAutocompleteAndroid": [ + "ReuseDetectionBasedOnPasswordHashes": [ { "platforms": [ - "android" + "android", + "chromeos", + "ios", + "linux", + "mac", + "windows" ], "experiments": [ { - "name": "Enabled_3Chars_AdditionalText", - "params": { - "rich_autocomplete_full_url": "true", - "rich_autocomplete_minimum_characters": "3" - }, + "name": "Enabled", "enable_features": [ - "OmniboxRichAutocompletion" + "ReuseDetectionBasedOnPasswordHashes" ] } ] @@ -20012,57 +20063,12 @@ ] } ], - "RubyLineBreakable": [ - { - "platforms": [ - "android", - "android_webview", - "chromeos", - "chromeos_lacros", - "fuchsia", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "RubyLineBreakable" - ] - } - ] - } - ], - "RubyShortHeuristics": [ - { - "platforms": [ - "android", - "android_webview", - "chromeos", - "chromeos_lacros", - "fuchsia", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "RubyShortHeuristics" - ] - } - ] - } - ], "RunPerformanceManagerOnMainThreadSync": [ { "platforms": [ "android", "android_webview", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -20117,9 +20123,7 @@ "SafeBrowsingDeepScanningCriteria": [ { "platforms": [ - "android", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -20137,8 +20141,8 @@ "SafeBrowsingExternalAppRedirectTelemetry": [ { "platforms": [ + "android", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -20168,50 +20172,10 @@ ] } ], - "SafeBrowsingHashDatabaseOffsetMap": [ - { - "platforms": [ - "chromeos", - "chromeos_lacros", - "linux", - "mac", - "windows", - "ios" - ], - "experiments": [ - { - "name": "Enabled1024", - "params": { - "HashDatabaseOffsetMapBytesPerOffset": "1024" - }, - "enable_features": [ - "SafeBrowsingHashDatabaseOffsetMap" - ] - } - ] - } - ], - "SafeBrowsingHashPrefixRealTimeLookups": [ - { - "platforms": [ - "android_webview" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "SafeBrowsingAsyncRealTimeCheck", - "SafeBrowsingHashPrefixRealTimeLookups" - ] - } - ] - } - ], "SafeBrowsingHashPrefixRealTimeLookupsFasterOhttpKeyRotation": [ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -20249,7 +20213,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows", @@ -20329,7 +20292,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -20349,7 +20311,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -20375,6 +20336,7 @@ { "name": "Enabled", "params": { + "background-password-check-interval-in-days": "1", "probability": "0.5", "trigger_id": "BqU7h7abt0tK1KeaPYj0WkmwAz4h" }, @@ -20419,7 +20381,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -21357,7 +21318,6 @@ "android_weblayer", "android_webview", "chromeos", - "chromeos_lacros", "fuchsia", "ios", "linux", @@ -21372,24 +21332,133 @@ "fade_duration_scaling_factor": "0.5" }, "enable_features": [ - "ScaleScrollbarAnimationTiming" + "ScaleScrollbarAnimationTiming" + ] + } + ] + } + ], + "SchedQoS": [ + { + "platforms": [ + "chromeos" + ], + "experiments": [ + { + "name": "Enabled_M131_20241107", + "enable_features": [ + "SchedQoSOnResourcedForChrome" + ], + "min_os_version": "16060.0.0" + } + ] + }, + { + "platforms": [ + "chromeos" + ], + "experiments": [ + { + "name": "Enabled_M132_20241107", + "enable_features": [ + "SchedQoSOnResourcedForChrome" + ], + "min_os_version": "16088.0.0" + } + ] + }, + { + "platforms": [ + "chromeos" + ], + "experiments": [ + { + "name": "Enabled_M132_20241107", + "enable_features": [ + "SchedQoSOnResourcedForChrome" + ], + "disable_features": [ + "CrOSLateBootInitDLServer", + "CrOSLateBootSetRtForDisplayThreads", + "SetRtForDisplayThreads", + "SetThreadBgForBgProcess" + ], + "min_os_version": "16088.0.0" + }, + { + "name": "EnabledRTForDisplay_M132_20241107", + "enable_features": [ + "CrOSLateBootInitDLServer", + "SetRtForDisplayThreads", + "SetThreadBgForBgProcess" + ], + "disable_features": [ + "CrOSLateBootSetRtForDisplayThreads", + "SchedQoSOnResourcedForChrome" + ], + "min_os_version": "16088.0.0" + }, + { + "name": "EnabledRTForDisplayQoS_M132_20241107", + "enable_features": [ + "CrOSLateBootInitDLServer", + "CrOSLateBootSetRtForDisplayThreads", + "SchedQoSOnResourcedForChrome" + ], + "disable_features": [ + "SetRtForDisplayThreads", + "SetThreadBgForBgProcess" + ], + "min_os_version": "16088.0.0" + } + ] + } + ], + "SchoolToolsBocaPollingInterval": [ + { + "platforms": [ + "chromeos" + ], + "experiments": [ + { + "name": "Enabled_0", + "params": { + "InSessionPollingIntervalInSeconds": "0", + "IndefinitePollingIntervalInSeconds": "0" + }, + "enable_features": [ + "BocaCustomPolling" + ] + }, + { + "name": "Enabled_10", + "params": { + "InSessionPollingIntervalInSeconds": "10", + "IndefinitePollingIntervalInSeconds": "10" + }, + "enable_features": [ + "BocaCustomPolling" + ] + }, + { + "name": "Enabled_60", + "params": { + "InSessionPollingIntervalInSeconds": "60", + "IndefinitePollingIntervalInSeconds": "60" + }, + "enable_features": [ + "BocaCustomPolling" ] - } - ] - } - ], - "SchedQoS": [ - { - "platforms": [ - "chromeos" - ], - "experiments": [ + }, { - "name": "Enabled", + "name": "Enabled_300", + "params": { + "InSessionPollingIntervalInSeconds": "300", + "IndefinitePollingIntervalInSeconds": "300" + }, "enable_features": [ - "SchedQoSOnResourcedForChrome" - ], - "min_os_version": "15849.0.0" + "BocaCustomPolling" + ] } ] } @@ -21476,17 +21545,10 @@ ], "experiments": [ { - "name": "Reauth_Enabled", + "name": "Enabled", "enable_features": [ "BiometricsAuthForPwdFill" ] - }, - { - "name": "Reauth_With_Promo_Enabled", - "enable_features": [ - "BiometricsAuthForPwdFill", - "ScreenlockReauthPromoCard" - ] } ] } @@ -21619,7 +21681,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -21639,7 +21700,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -21676,7 +21736,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -21735,7 +21794,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -21766,21 +21824,6 @@ ] } ], - "SecagentdEnableXDRNetworkEvents": [ - { - "platforms": [ - "chromeos" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "CrOSLateBootSecagentdXDRNetworkEvents" - ] - } - ] - } - ], "SecureTimeCertificateVerification": [ { "platforms": [ @@ -21836,27 +21879,6 @@ ] } ], - "SegmentationPlatformTipsEphemeralCard": [ - { - "platforms": [ - "ios" - ], - "experiments": [ - { - "name": "Enabled", - "params": { - "TipsEphemeralCardExperimentTrainParam": "lens_ephemeral_module_search_variation,save_passwords_ephemeral_module,enhanced_safe_browsing_ephemeral_module,address_bar_position_ephemeral_module", - "TipsEphemeralCardModuleMaxImpressionCount": "3", - "TipsLensShopExperimentType": "0", - "TipsSafeBrowsingExperimentType": "0" - }, - "enable_features": [ - "SegmentationPlatformTipsEphemeralCard" - ] - } - ] - } - ], "SegmentationPlatformURLVisitResumptionRanker": [ { "platforms": [ @@ -21901,7 +21923,19 @@ ], "experiments": [ { - "name": "Enabled", + "name": "EnabledWithStaticPromo", + "params": { + "SegmentedDefaultBrowserExperimentType": "0" + }, + "enable_features": [ + "SegmentedDefaultBrowserPromo" + ] + }, + { + "name": "EnabledWithAnimatedPromo", + "params": { + "SegmentedDefaultBrowserExperimentType": "1" + }, "enable_features": [ "SegmentedDefaultBrowserPromo" ] @@ -21954,7 +21988,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "ios", "linux", "mac", @@ -21963,6 +21996,9 @@ "experiments": [ { "name": "Enabled", + "params": { + "variant_with_magic_stack_card": "true" + }, "enable_features": [ "SendTabToSelfIOSPushNotifications" ] @@ -21993,12 +22029,19 @@ ], "experiments": [ { - "name": "Enabled", + "//0": "This experiment group might not be included in the", + "//1": " same finch config, but it's important for now to ", + "//2": "have tests ran with all relevant flags and params ", + "//3": " enabled.", + "//4": "Note that SensitiveContentWhileSwitchingTabs ", + "//5": "depends on SensitiveContent being enabed, too.", + "name": "Enabled_WithPwmHeuristicsAndTabSwitching", "params": { - "sensitive_content_use_pwm_heuristics": "false" + "sensitive_content_use_pwm_heuristics": "true" }, "enable_features": [ - "SensitiveContent" + "SensitiveContent", + "SensitiveContentWhileSwitchingTabs" ] }, { @@ -22009,6 +22052,15 @@ "enable_features": [ "SensitiveContent" ] + }, + { + "name": "Enabled", + "params": { + "sensitive_content_use_pwm_heuristics": "false" + }, + "enable_features": [ + "SensitiveContent" + ] } ] } @@ -22019,7 +22071,6 @@ "android", "android_webview", "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -22061,7 +22112,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -22088,7 +22138,6 @@ "android", "android_webview", "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -22109,7 +22158,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -22130,7 +22178,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -22151,7 +22198,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -22170,7 +22216,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -22181,11 +22226,11 @@ "params": { "en_site_id": "JcjxgSDnh0ugnJ3q1cK0UVkwDj1o", "probability": "1.0", - "settings-time": "5s", + "settings-time": "10s", "survey": "settings-privacy" }, "enable_features": [ - "HappinessTrackingSurveysForDesktopSettingsPrivacy" + "HappinessTrackingSurveysForDesktopSettings" ] } ] @@ -22221,26 +22266,6 @@ ] } ], - "ShareThisTabDialog": [ - { - "platforms": [ - "chromeos", - "chromeos_lacros", - "fuchsia", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "ShareThisTabDialog" - ] - } - ] - } - ], "SharedHighlightingAmp": [ { "platforms": [ @@ -22283,7 +22308,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -22325,7 +22349,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -22344,7 +22367,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -22395,7 +22417,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -22414,7 +22435,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -22444,7 +22464,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -22466,7 +22485,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -22494,7 +22512,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -22533,28 +22550,6 @@ ] } ], - "SimplifyLoadingTransparentPlaceholderImage": [ - { - "platforms": [ - "android", - "android_webview", - "chromeos", - "chromeos_lacros", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled_20240610", - "enable_features": [ - "OptimizeLoadingDataUrls", - "SimplifyLoadingTransparentPlaceholderImage" - ] - } - ] - } - ], "SingleNTPRemoveExtraNTPs": [ { "platforms": [ @@ -22587,7 +22582,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -22629,7 +22623,6 @@ "android", "android_webview", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -22650,7 +22643,6 @@ "android", "android_webview", "chromeos", - "chromeos_lacros", "ios", "linux", "mac", @@ -22669,8 +22661,7 @@ "SkyVaultGA": [ { "platforms": [ - "chromeos", - "chromeos_lacros" + "chromeos" ], "experiments": [ { @@ -22685,8 +22676,7 @@ "SkyVaultTTBeta": [ { "platforms": [ - "chromeos", - "chromeos_lacros" + "chromeos" ], "experiments": [ { @@ -22731,8 +22721,7 @@ "SnapGroup": [ { "platforms": [ - "chromeos", - "chromeos_lacros" + "chromeos" ], "experiments": [ { @@ -22780,7 +22769,6 @@ "android", "android_webview", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -22800,7 +22788,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -22837,7 +22824,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -22884,7 +22870,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -22910,7 +22895,6 @@ "android_weblayer", "android_webview", "chromeos", - "chromeos_lacros", "fuchsia", "ios", "linux", @@ -22927,30 +22911,60 @@ ] } ], - "StaleStorageCleanup": [ + "StaleSessionCookieCleanup": [ { "platforms": [ "android", "chromeos", - "chromeos_lacros", "ios", "linux", "mac", "windows" ], "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "DeleteStaleSessionCookiesOnStartup" + ] + }, { "name": "Auto_Dogfood", + "enable_features": [ + "DeleteStaleSessionCookiesOnStartup" + ] + }, + { + "name": "Opt_In_Dogfood", + "enable_features": [ + "DeleteStaleSessionCookiesOnStartup" + ] + } + ] + } + ], + "StaleStorageCleanup": [ + { + "platforms": [ + "android", + "chromeos", + "ios", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", "enable_features": [ "DeleteOrphanLocalStorageOnStartup", "DeleteStaleLocalStorageOnStartup", - "DeleteStaleSessionCookiesOnStartup", "EvictOrphanQuotaStorage", "EvictStaleQuotaStorage" ] }, { - "name": "Enabled_NoSessionCookieCleanup", + "name": "Auto_Dogfood", "enable_features": [ "DeleteOrphanLocalStorageOnStartup", "DeleteStaleLocalStorageOnStartup", @@ -22963,7 +22977,6 @@ "enable_features": [ "DeleteOrphanLocalStorageOnStartup", "DeleteStaleLocalStorageOnStartup", - "DeleteStaleSessionCookiesOnStartup", "EvictOrphanQuotaStorage", "EvictStaleQuotaStorage" ] @@ -22977,7 +22990,6 @@ "android", "android_webview", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -23013,7 +23025,6 @@ "android", "android_webview", "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -23035,7 +23046,6 @@ "android", "android_webview", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -23071,7 +23081,6 @@ "android_webview", "android", "chromeos", - "chromeos_lacros", "ios", "linux", "mac", @@ -23092,7 +23101,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -23110,6 +23118,21 @@ ] } ], + "SunfishFeature": [ + { + "platforms": [ + "chromeos" + ], + "experiments": [ + { + "name": "Enabled_Dogfood", + "enable_features": [ + "SunfishFeature" + ] + } + ] + } + ], "SuppressToolbarCapturesAtGestureEndStudy": [ { "platforms": [ @@ -23132,7 +23155,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -23159,7 +23181,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "ios", "linux", "mac", @@ -23253,8 +23274,7 @@ "SystemInfoAnswerCardsInLauncher": [ { "platforms": [ - "chromeos", - "chromeos_lacros" + "chromeos" ], "experiments": [ { @@ -23270,7 +23290,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -23336,7 +23355,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -23356,7 +23374,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -23375,7 +23392,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -23411,7 +23427,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -23455,7 +23470,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -23471,21 +23485,6 @@ ] } ], - "TabStripGroupContextMenuAndroid": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "TabStripGroupContextMenuAndroid" - ] - } - ] - } - ], "TabStripIncognitoMigration": [ { "platforms": [ @@ -23501,16 +23500,20 @@ ] } ], - "TabStripStartupRefactoring": [ + "TabstripDeclutter": [ { "platforms": [ - "android" + "chromeos", + "fuchsia", + "linux", + "mac", + "windows" ], "experiments": [ { "name": "Enabled", "enable_features": [ - "TabStripStartupRefactoring" + "TabstripDeclutter" ] } ] @@ -23520,7 +23523,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -23573,7 +23575,6 @@ "android_weblayer", "android_webview", "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -23614,7 +23615,6 @@ "android_weblayer", "android_webview", "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -23634,7 +23634,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -23655,7 +23654,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -23678,7 +23676,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -23728,7 +23725,6 @@ "android", "android_webview", "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -23748,7 +23744,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -23772,7 +23767,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -23788,84 +23782,73 @@ ] } ], - "TopChromeToast": [ + "TopChromeWebUIUsesSpareRenderer": [ { "platforms": [ "chromeos", - "chromeos_lacros", + "fuchsia", "linux", "mac", "windows" ], "experiments": [ { - "name": "EnabledWith10sDuration", - "params": { - "toast_timeout": "10s", - "toast_without_action_timeout": "10s" - }, + "name": "Enabled", "enable_features": [ - "ImageCopiedToast", - "LinkCopiedToast", - "LinkToHighlightCopiedToast", - "ReadingListToast", - "ToastFramework" + "TopChromeWebUIUsesSpareRenderer" ] } ] } ], - "TopChromeWebUIUsesSpareRenderer": [ + "TouchpadFastClickStudy": [ { "platforms": [ - "chromeos", - "chromeos_lacros", - "fuchsia", - "linux", - "mac", - "windows" + "chromeos" ], "experiments": [ { "name": "Enabled", "enable_features": [ - "TopChromeWebUIUsesSpareRenderer" + "EnableFastTouchpadClick" ] } ] } ], - "TouchpadFastClickStudy": [ + "TrackingProtection3pcd": [ { "platforms": [ + "android", "chromeos", - "chromeos_lacros" + "linux", + "mac", + "windows" ], "experiments": [ { "name": "Enabled", "enable_features": [ - "EnableFastTouchpadClick" + "TrackingProtection3pcd" ] } ] } ], - "TrackingProtection3pcd": [ + "TrackingProtection3pcdUx": [ { "platforms": [ "android", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" ], "experiments": [ { - "name": "Enabled", - "enable_features": [ - "TrackingProtection3pcd" + "name": "Rewind", + "disable_features": [ + "TrackingProtection3pcdUx" ] } ] @@ -23905,7 +23888,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -23923,17 +23905,32 @@ "TransportSecurityFileWriterSchedule": [ { "platforms": [ - "android", - "android_webview", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" ], "experiments": [ { - "name": "Enabled1Minute_20240626", + "name": "Enabled10Minutes_20241105", + "params": { + "commit_interval": "10m" + }, + "enable_features": [ + "TransportSecurityFileWriterSchedule" + ] + } + ] + } + ], + "TransportSecurityFileWriterScheduleAndroid": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled1Minute_20241105", "params": { "commit_interval": "1m" }, @@ -23949,7 +23946,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "ios", "linux", "mac", @@ -24056,7 +24052,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -24075,25 +24070,6 @@ ] } ], - "TurnOffStreamingMediaCachingAlways": [ - { - "platforms": [ - "android", - "chromeos", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "TurnOffStreamingMediaCachingAlways" - ] - } - ] - } - ], "UIEnableSharedImageCacheForGpu": [ { "platforms": [ @@ -24101,7 +24077,6 @@ "android_weblayer", "android_webview", "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -24117,21 +24092,6 @@ ] } ], - "UIPumpImprovementsWin": [ - { - "platforms": [ - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "UIPumpImprovementsWin" - ] - } - ] - } - ], "UMA-NonUniformity-Trial-1-Percent": [ { "platforms": [ @@ -24140,7 +24100,6 @@ "android_webview", "ios", "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -24165,7 +24124,6 @@ "android", "ios", "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -24184,21 +24142,6 @@ ] } ], - "UPMClearMigratedDataStudy": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "ClearLoginDatabaseForAllMigratedUPMUsers" - ] - } - ] - } - ], "USSMigrationEnabled": [ { "platforms": [ @@ -24229,15 +24172,11 @@ ] } ], - "UnblockTouchMoveEarlier": [ + "UnifiedAutoplay": [ { "platforms": [ - "android", - "android_webview", "chromeos", - "chromeos_lacros", "fuchsia", - "ios", "linux", "mac", "windows" @@ -24246,18 +24185,15 @@ { "name": "Enabled", "enable_features": [ - "UnblockTouchMoveEarlier" + "PreloadMediaEngagementData" ] } ] } ], - "UnifiedAutoplay": [ + "UnoDesktopM0Followup": [ { "platforms": [ - "chromeos", - "chromeos_lacros", - "fuchsia", "linux", "mac", "windows" @@ -24266,13 +24202,13 @@ { "name": "Enabled", "enable_features": [ - "PreloadMediaEngagementData" + "OutlineSilhouetteIcon" ] } ] } ], - "UnoDesktopM0Followup": [ + "UnoDesktopM0Full": [ { "platforms": [ "linux", @@ -24283,15 +24219,18 @@ { "name": "Enabled", "enable_features": [ - "OutlineSilhouetteIcon" + "ExplicitBrowserSigninUIOnDesktop", + "SyncEnableContactInfoDataTypeInTransportMode" ] } ] } ], - "UnoDesktopM0Full": [ + "UnoPwa": [ { "platforms": [ + "chromeos", + "chromeos_lacros", "linux", "mac", "windows" @@ -24300,8 +24239,7 @@ { "name": "Enabled", "enable_features": [ - "ExplicitBrowserSigninUIOnDesktop", - "SyncEnableContactInfoDataTypeInTransportMode" + "WebAppDontAddExistingAppsToSync" ] } ] @@ -24347,7 +24285,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "fuchsia", "ios", "linux", @@ -24359,9 +24296,6 @@ "name": "Enabled", "enable_features": [ "UseBoringSSLForRandBytes" - ], - "disable_features": [ - "UseGetrandomForRandBytes" ] } ] @@ -24409,7 +24343,6 @@ "android_webview", "android_weblayer", "chromeos", - "chromeos_lacros", "fuchsia", "ios", "linux", @@ -24450,7 +24383,6 @@ "android_webview", "android_weblayer", "chromeos", - "chromeos_lacros", "fuchsia", "ios", "linux", @@ -24522,8 +24454,7 @@ "linux", "mac", "windows", - "chromeos", - "chromeos_lacros" + "chromeos" ], "experiments": [ { @@ -24536,8 +24467,7 @@ }, { "platforms": [ - "chromeos", - "chromeos_lacros" + "chromeos" ], "experiments": [ { @@ -24558,7 +24488,6 @@ "android", "android_webview", "chromeos", - "chromeos_lacros", "ios", "linux", "mac", @@ -24580,7 +24509,6 @@ "android", "android_webview", "chromeos", - "chromeos_lacros", "ios", "linux", "mac", @@ -24602,7 +24530,6 @@ "android", "android_webview", "chromeos", - "chromeos_lacros", "ios", "linux", "mac", @@ -24638,7 +24565,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -24717,7 +24643,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -24753,7 +24678,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -24936,7 +24860,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "ios", "linux", "mac", @@ -24959,7 +24882,6 @@ "android_weblayer", "android_webview", "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -25065,7 +24987,6 @@ "android", "android_webview", "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -25085,7 +25006,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -25137,7 +25057,6 @@ "android", "android_webview", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -25159,7 +25078,6 @@ "android_weblayer", "android_webview", "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -25181,13 +25099,32 @@ ] } ], + "V8GCSpeedUsesCounters": [ + { + "platforms": [ + "android", + "android_webview", + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "V8GCSpeedUsesCounters" + ] + } + ] + } + ], "V8IncrementalMarkingStartUserVisible": [ { "platforms": [ "android", "android_webview", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -25206,7 +25143,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -25268,7 +25204,6 @@ "android", "android_webview", "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -25317,7 +25252,6 @@ "android", "android_webview", "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -25337,7 +25271,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -25368,7 +25301,6 @@ "android", "android_webview", "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -25413,114 +25345,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", - "fuchsia", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Control", - "disable_features": [ - "V8SlowHistograms" - ] - }, - { - "name": "Enabled", - "enable_features": [ - "V8SlowHistograms" - ] - } - ] - } - ], - "V8Sparkplug-Android": [ - { - "platforms": [ - "android", - "android_weblayer", - "android_webview" - ], - "experiments": [ - { - "name": "DefaultX" - }, - { - "name": "Disabled", - "disable_features": [ - "V8SlowHistogramsSparkplugAndroid", - "V8Sparkplug" - ] - }, - { - "name": "Enabled", - "enable_features": [ - "V8SlowHistogramsSparkplugAndroid", - "V8Sparkplug" - ] - } - ] - } - ], - "V8UpdateLimitAfterLoading": [ - { - "platforms": [ - "android", - "android_webview", - "chromeos", - "chromeos_lacros", - "fuchsia", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "V8UpdateLimitAfterLoading" - ] - } - ] - } - ], - "V8WasmCodeFlushing": [ - { - "platforms": [ - "android", - "android_weblayer", - "android_webview", - "chromeos", - "chromeos_lacros", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "WebAssemblyLiftoffCodeFlushing" - ] - }, - { - "name": "Control", - "disable_features": [ - "WebAssemblyLiftoffCodeFlushing" - ] - } - ] - } - ], - "V8WasmMoreAggressiveCodeCaching": [ - { - "platforms": [ - "android", - "android_weblayer", - "android_webview", - "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -25528,69 +25352,55 @@ ], "experiments": [ { - "name": "1_ReducedThreshold", - "params": { - "WebAssemblyCodeCachingThreshold": "200" - }, - "enable_features": [ - "WebAssemblyMoreAggressiveCodeCaching" - ] - }, - { - "name": "2_IncreasedThreshold", - "params": { - "WebAssemblyCodeCachingThreshold": "10000" - }, - "enable_features": [ - "WebAssemblyMoreAggressiveCodeCaching" + "name": "Control", + "disable_features": [ + "V8SlowHistograms" ] }, { - "name": "3_ReducedHardThreshold", - "params": { - "WebAssemblyCodeCachingHardThreshold": "200000" - }, + "name": "Enabled", "enable_features": [ - "WebAssemblyMoreAggressiveCodeCaching" + "V8SlowHistograms" ] - }, + } + ] + } + ], + "V8Sparkplug-Android": [ + { + "platforms": [ + "android", + "android_weblayer", + "android_webview" + ], + "experiments": [ { - "name": "4_IncreasedHardThreshold", - "params": { - "WebAssemblyCodeCachingHardThreshold": "10000000" - }, - "enable_features": [ - "WebAssemblyMoreAggressiveCodeCaching" - ] + "name": "DefaultX" }, { - "name": "5_ReducedTimeout", - "params": { - "WebAssemblyCodeCachingTimeoutMs": "500" - }, - "enable_features": [ - "WebAssemblyMoreAggressiveCodeCaching" + "name": "Disabled", + "disable_features": [ + "V8SlowHistogramsSparkplugAndroid", + "V8Sparkplug" ] }, { - "name": "6_IncreasedTimeout", - "params": { - "WebAssemblyCodeCachingTimeoutMs": "10000" - }, + "name": "Enabled", "enable_features": [ - "WebAssemblyMoreAggressiveCodeCaching" + "V8SlowHistogramsSparkplugAndroid", + "V8Sparkplug" ] } ] } ], - "V8WasmTurboshaft": [ + "V8UpdateLimitAfterLoading": [ { "platforms": [ "android", "android_webview", "chromeos", - "chromeos_lacros", + "fuchsia", "linux", "mac", "windows" @@ -25599,24 +25409,7 @@ { "name": "Enabled", "enable_features": [ - "WebAssemblyTurboshaft", - "WebAssemblyTurboshaftInstructionSelection" - ] - }, - { - "name": "EnabledNoInstructionSelection", - "enable_features": [ - "WebAssemblyTurboshaft" - ], - "disable_features": [ - "WebAssemblyTurboshaftInstructionSelection" - ] - }, - { - "name": "Control", - "disable_features": [ - "WebAssemblyTurboshaft", - "WebAssemblyTurboshaftInstructionSelection" + "V8UpdateLimitAfterLoading" ] } ] @@ -25646,7 +25439,6 @@ "android", "android_webview", "chromeos", - "chromeos_lacros", "ios", "linux", "mac", @@ -25677,13 +25469,28 @@ ] } ], + "ValidateNetworkServiceProcessIdentityMac": [ + { + "platforms": [ + "mac" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "MachPortRendezvousValidatePeerRequirements", + "ValidateNetworkServiceProcessIdentity" + ] + } + ] + } + ], "VerifyDidCommitParams": [ { "platforms": [ "windows", "mac", "chromeos", - "chromeos_lacros", "fuchsia", "linux", "ios", @@ -25829,7 +25636,6 @@ "android_webview", "android", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -25863,7 +25669,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -25946,65 +25751,6 @@ ] } ], - "WaitForLateScrollEvents": [ - { - "platforms": [ - "android", - "android_webview", - "chromeos", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "DispatchImmediately", - "params": { - "mode": "DispatchScrollEventsImmediately" - }, - "enable_features": [ - "WaitForLateScrollEvents" - ] - }, - { - "name": "UseScrollPredictorForDeadline", - "params": { - "mode": "UseScrollPredictorForDeadline" - }, - "enable_features": [ - "WaitForLateScrollEvents" - ] - }, - { - "name": "UseScrollPredictorForEmptyQueue", - "params": { - "mode": "UseScrollPredictorForEmptyQueue" - }, - "enable_features": [ - "WaitForLateScrollEvents" - ] - } - ] - } - ], - "WebApkAllowIconUpdate": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "Enabled_WebApkAllowIconUpdate", - "params": { - "shell_version": "166" - }, - "enable_features": [ - "WebApkAllowIconUpdate" - ] - } - ] - } - ], "WebApkBackupAndRestore": [ { "platforms": [ @@ -26069,7 +25815,6 @@ "android", "android_webview", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -26096,7 +25841,6 @@ "android", "android_webview", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -26121,7 +25865,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "ios", "linux", "mac", @@ -26137,29 +25880,10 @@ ] } ], - "WebAuthenticationEnclaveAuthenticator": [ - { - "platforms": [ - "chromeos" - ], - "experiments": [ - { - "name": "Enabled", - "params": { - "WebAuthenticationGpmPin": "true" - }, - "enable_features": [ - "WebAuthenticationEnclaveAuthenticator" - ] - } - ] - } - ], "WebContentsCaptureHiDPI": [ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -26178,7 +25902,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -26253,7 +25976,8 @@ "WebGPUUseTintIR": [ { "platforms": [ - "mac" + "mac", + "windows" ], "experiments": [ { @@ -26281,21 +26005,6 @@ ] } ], - "WebPermissionsApi": [ - { - "platforms": [ - "android_webview" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "WebPermissionsApi" - ] - } - ] - } - ], "WebRTC-Aec3BufferingMaxAllowedExcessRenderBlocksOverride": [ { "platforms": [ @@ -26336,7 +26045,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -26370,7 +26078,6 @@ "windows", "mac", "chromeos", - "chromeos_lacros", "fuchsia", "linux", "ios", @@ -26409,7 +26116,6 @@ "android", "android_webview", "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -26455,7 +26161,6 @@ "android", "android_webview", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -26492,7 +26197,6 @@ "android", "android_webview", "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -26529,7 +26233,6 @@ "android", "android_webview", "chromeos", - "chromeos_lacros", "ios", "linux", "mac", @@ -26548,7 +26251,6 @@ "android", "android_weblayer", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -26566,7 +26268,6 @@ "android", "android_weblayer", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -26584,7 +26285,6 @@ "android", "android_webview", "chromeos", - "chromeos_lacros", "fuchsia", "linux", "mac", @@ -26603,7 +26303,6 @@ "windows", "mac", "chromeos", - "chromeos_lacros", "fuchsia", "linux", "android", @@ -26623,7 +26322,6 @@ "android", "android_webview", "chromeos", - "chromeos_lacros", "ios", "linux", "mac", @@ -26641,7 +26339,6 @@ "platforms": [ "android", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -26686,7 +26383,6 @@ "windows", "mac", "chromeos", - "chromeos_lacros", "fuchsia", "linux", "ios", @@ -26706,7 +26402,6 @@ "windows", "mac", "chromeos", - "chromeos_lacros", "fuchsia", "linux", "android", @@ -26719,10 +26414,7 @@ "params": { "max_post_decode_queue_size": "10", "reduce_steady_state_queue_size_threshold": "20" - }, - "enable_features": [ - "LowLatencyVideoRendererAlgorithm" - ] + } } ] } @@ -26748,7 +26440,6 @@ "android", "android_webview", "chromeos", - "chromeos_lacros", "ios", "linux", "mac", @@ -26770,7 +26461,6 @@ "android", "android_webview", "chromeos", - "chromeos_lacros", "linux", "mac", "windows" @@ -26788,8 +26478,7 @@ "WebRtcHWDecodingDisabledCfM": [ { "platforms": [ - "chromeos", - "chromeos_lacros" + "chromeos" ], "experiments": [ { @@ -26805,7 +26494,6 @@ { "platforms": [ "chromeos", - "chromeos_lacros", "fuchsia", "linux", "windows" @@ -26841,28 +26529,6 @@ ] } ] - }, - { - "platforms": [ - "chromeos_lacros" - ], - "experiments": [ - { - "name": "Enabled", - "params": { - "availability": "any", - "event_trigger": "name:webui_tab_strip_iph_triggered;comparator:<3;window:1;storage:365", - "event_used": "name:webui_tab_strip_opened;comparator:==0;window:90;storage:365", - "session_rate": "any" - }, - "enable_features": [ - "IPH_WebUITabStrip", - "TextfieldFocusOnTapUp", - "WebUITabStrip", - "WebUITabStripTabDragIntegration" - ] - } - ] } ], "WebViewAsyncDns": [ @@ -26902,6 +26568,21 @@ ] } ], + "WebViewEnableADPF": [ + { + "platforms": [ + "android_webview" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "WebViewEnableADPF" + ] + } + ] + } + ], "WebViewFrameRateHints": [ { "platforms": [ @@ -27245,6 +26926,21 @@ ] } ], + "WinSboxParallelProcessLaunch": [ + { + "platforms": [ + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "WinSboxParallelProcessLaunch" + ] + } + ] + } + ], "WinSystemLocationPermission": [ { "platforms": [ @@ -27267,7 +26963,10 @@ ], "experiments": [ { - "name": "Enabled", + "name": "EnabledThrottling0ms", + "params": { + "poll_interval_ms": "0" + }, "enable_features": [ "YieldWithInputHint" ] @@ -27281,24 +26980,13 @@ "windows", "mac", "linux", - "chromeos", - "chromeos_lacros" + "chromeos" ], "experiments": [ { - "name": "Enabled_300ms_FromLastRequest", + "name": "Enabled_300ms_FromLastRun", "params": { "ZeroSuggestPrefetchDebounceDelay": "300", - "ZeroSuggestPrefetchDebounceFromLastRun": "false" - }, - "enable_features": [ - "ZeroSuggestPrefetchDebouncing" - ] - }, - { - "name": "Enabled_900ms_FromLastRun", - "params": { - "ZeroSuggestPrefetchDebounceDelay": "900", "ZeroSuggestPrefetchDebounceFromLastRun": "true" }, "enable_features": [ @@ -27315,41 +27003,29 @@ ], "experiments": [ { - "name": "Enabled_300ms_FromLastRequest", + "name": "Enabled_300ms_FromLastRun", "params": { "ZeroSuggestPrefetchDebounceDelay": "300", - "ZeroSuggestPrefetchDebounceFromLastRun": "false" - }, - "enable_features": [ - "AblateSearchProviderWarmup", - "ZeroSuggestPrefetchDebouncing" - ] - }, - { - "name": "Enabled_900ms_FromLastRun", - "params": { - "ZeroSuggestPrefetchDebounceDelay": "900", "ZeroSuggestPrefetchDebounceFromLastRun": "true" }, "enable_features": [ - "AblateSearchProviderWarmup", "ZeroSuggestPrefetchDebouncing" ] } ] } ], - "ZPSPrefetchOnSRPWithDebouncingAndroid": [ + "ZPSPrefetchOnSRPWithAblationAndroid": [ { "platforms": [ "android" ], "experiments": [ { - "name": "Enabled_300ms_FromLastRequest", + "name": "Enabled_Prefetching_Warmup_Ablation_Debouncing", "params": { "ZeroSuggestPrefetchDebounceDelay": "300", - "ZeroSuggestPrefetchDebounceFromLastRun": "false" + "ZeroSuggestPrefetchDebounceFromLastRun": "true" }, "enable_features": [ "AblateSearchProviderWarmup", @@ -27361,27 +27037,23 @@ ] }, { - "name": "Enabled_900ms_FromLastRun", - "params": { - "ZeroSuggestPrefetchDebounceDelay": "900", - "ZeroSuggestPrefetchDebounceFromLastRun": "true" - }, + "name": "Enabled_Prefetching_Warmup_Ablation", "enable_features": [ "AblateSearchProviderWarmup", - "ZeroSuggestPrefetchDebouncing", "ZeroSuggestPrefetchingOnSRP" ], "disable_features": [ + "ZeroSuggestPrefetchDebouncing", "ZeroSuggestPrefetchingOnWeb" ] }, { "name": "Enabled_Prefetching_Only", "enable_features": [ - "AblateSearchProviderWarmup", "ZeroSuggestPrefetchingOnSRP" ], "disable_features": [ + "AblateSearchProviderWarmup", "ZeroSuggestPrefetchDebouncing", "ZeroSuggestPrefetchingOnWeb" ] diff --git a/tools/under-control/src/third_party/blink/public/mojom/use_counter/metrics/web_feature.mojom b/tools/under-control/src/third_party/blink/public/mojom/use_counter/metrics/web_feature.mojom index c62051383..32b507709 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 @@ -4303,7 +4303,7 @@ enum WebFeature { kCSSColor_SpaceOkLxx_outOfRec2020 = 4933, kSandboxedSrcdocFrameResolvesRelativeURL = 4934, kV8Ink_RequestPresenter_Method = 4935, - kEventTimingOrphanPointerup = 4936, + kOBSOLETE_EventTimingOrphanPointerup = 4936, kNavigatorCookieEnabledThirdParty = 4937, kFoldableAPIs = 4938, kSnapEvent = 4939, @@ -4376,7 +4376,7 @@ enum WebFeature { kZstdContentEncodingForMainFrameNavigation = 5002, kZstdContentEncodingForSubFrameNavigation = 5003, kZstdContentEncodingForSubresource = 5004, - kEventTimingOrphanPointerupWithClick = 5005, + kOBSOLETE_EventTimingOrphanPointerupWithClick = 5005, kDisableReduceAcceptLanguage = 5006, kSharedStorageAPI_CreateWorklet_CrossOriginScriptDefaultDataOrigin = 5007, kDeprecatedAIModel = 5008, @@ -4451,22 +4451,22 @@ enum WebFeature { kV8AISummarizer_Type_AttributeGetter = 5077, kV8AISummarizer_Format_AttributeGetter = 5078, kV8AISummarizer_Length_AttributeGetter = 5079, - kV8AIAssistantCapabilities_Available_AttributeGetter = 5080, - kV8AIAssistantCapabilities_DefaultTopK_AttributeGetter = 5081, - kV8AIAssistantCapabilities_MaxTopK_AttributeGetter = 5082, - kV8AIAssistantCapabilities_DefaultTemperature_AttributeGetter = 5083, - kV8AIAssistantFactory_Capabilities_Method = 5084, - kV8AIAssistantFactory_Create_Method = 5085, + kOBSOLETE_V8AIAssistantCapabilities_Available_AttributeGetter = 5080, + kOBSOLETE_V8AIAssistantCapabilities_DefaultTopK_AttributeGetter = 5081, + kOBSOLETE_V8AIAssistantCapabilities_MaxTopK_AttributeGetter = 5082, + kOBSOLETE_V8AIAssistantCapabilities_DefaultTemperature_AttributeGetter = 5083, + kOBSOLETE_V8AIAssistantFactory_Capabilities_Method = 5084, + kOBSOLETE_V8AIAssistantFactory_Create_Method = 5085, kOBSOLETE_V8AI_Assistant_AttributeGetter = 5086, - kV8AIAssistant_MaxTokens_AttributeGetter = 5087, - kV8AIAssistant_TokensSoFar_AttributeGetter = 5088, - kV8AIAssistant_TokensLeft_AttributeGetter = 5089, - kV8AIAssistant_TopK_AttributeGetter = 5090, - kV8AIAssistant_Temperature_AttributeGetter = 5091, - kV8AIAssistant_Clone_Method = 5092, - kV8AIAssistant_Destroy_Method = 5093, - kV8AIAssistant_Prompt_Method = 5094, - kV8AIAssistant_PromptStreaming_Method = 5095, + kOBSOLETE_V8AIAssistant_MaxTokens_AttributeGetter = 5087, + kOBSOLETE_V8AIAssistant_TokensSoFar_AttributeGetter = 5088, + kOBSOLETE_V8AIAssistant_TokensLeft_AttributeGetter = 5089, + kOBSOLETE_V8AIAssistant_TopK_AttributeGetter = 5090, + kOBSOLETE_V8AIAssistant_Temperature_AttributeGetter = 5091, + kOBSOLETE_V8AIAssistant_Clone_Method = 5092, + kOBSOLETE_V8AIAssistant_Destroy_Method = 5093, + kOBSOLETE_V8AIAssistant_Prompt_Method = 5094, + kOBSOLETE_V8AIAssistant_PromptStreaming_Method = 5095, kV8Window_PopinContextTypesSupported_Method = 5096, kV8Window_PopinContextType_Method = 5097, kWebAuthentication_AttestationFormats = 5098, @@ -4478,7 +4478,7 @@ enum WebFeature { kV8PublicKeyCredential_SignalUnknownCredential_Method = 5104, kV8PublicKeyCredential_SignalAllAcceptedCredentials_Method = 5105, kV8PublicKeyCredential_SignalCurrentUserDetails_Method = 5106, - kV8AIAssistant_CountPromptTokens_Method = 5107, + kOBSOLETE_V8AIAssistant_CountPromptTokens_Method = 5107, kHTMLSearchElement = 5108, kHTMLUnsafeMethods = 5109, kV8GPUSupportedLimits_MaxInterStageShaderComponents_AttributeGetter = 5110, @@ -4491,6 +4491,77 @@ enum WebFeature { kV8PerformanceResourceTiming_WorkerMatchedSourceType_AttributeGetter = 5117, kV8PerformanceResourceTiming_WorkerFinalSourceType_AttributeGetter = 5118, kV8AI_LanguageModel_AttributeGetter = 5119, + kV8RTCEncodedVideoFrame_Timestamp_AttributeGetter = 5120, + kV8RTCEncodedAudioFrame_Timestamp_AttributeGetter = 5121, + kOBSOLETE_V8AIAssistantCapabilities_LanguageAvailable_Method = 5122, + kWebGLRenderingContextReadPixels = 5123, + kSelectAudioOutput = 5124, + kV8PaymentManager_UserHint_AttributeGetter = 5125, + kV8PaymentManager_UserHint_AttributeSetter = 5126, + kPerformanceNavigationTimingConfidence = 5127, + kHttpParsersParseDateFromUTCStringDifferent = 5128, + kHttpParsersParseDateFromStringDifferent = 5129, + kMediaQueryRangeSyntax = 5130, + kParseHTMLSafe = 5131, + kSetHTMLSafe = 5132, + kSelectElementAppearanceBaseSelect = 5133, + kSelectElementPickerAppearanceBaseSelect = 5134, + kCssValueWritingModeVerticalRl = 5135, + kCssValueWritingModeVerticalLr = 5136, + kCssValueWritingModeSidewaysRl = 5137, + kCssValueWritingModeSidewaysLr = 5138, + kV8AILanguageModel_TopK_AttributeGetter = 5139, + kV8AILanguageModel_Temperature_AttributeGetter = 5140, + kV8AILanguageModel_Clone_Method = 5141, + kV8AILanguageModel_Destroy_Method = 5142, + kV8AILanguageModel_Prompt_Method = 5143, + kV8AILanguageModel_PromptStreaming_Method = 5144, + kV8AILanguageModel_CountPromptTokens_Method = 5145, + kV8AILanguageModelCapabilities_LanguageAvailable_Method = 5146, + kV8AILanguageModelCapabilities_Available_AttributeGetter = 5147, + kV8AILanguageModelCapabilities_DefaultTopK_AttributeGetter = 5148, + kV8AILanguageModelCapabilities_MaxTopK_AttributeGetter = 5149, + kV8AILanguageModelCapabilities_DefaultTemperature_AttributeGetter = 5150, + kV8AILanguageModelFactory_Capabilities_Method = 5151, + kV8AILanguageModelFactory_Create_Method = 5152, + kV8AILanguageModel_MaxTokens_AttributeGetter = 5153, + kV8AILanguageModel_TokensSoFar_AttributeGetter = 5154, + kV8AILanguageModel_TokensLeft_AttributeGetter = 5155, + kSvgContextFillOrStroke = 5156, + kARIAActionsAttribute = 5157, + kResolveToConfigValueCoercedToTrue = 5158, + kServiceWorkerStaticRouter_RaceNetworkAndFetchHandlerImprovement = 5159, + kHasCapUnits = 5160, + kHasRcapUnits = 5161, + kHasIcUnits = 5162, + kHasRicUnits = 5163, + kHasLhUnits = 5164, + kHasRlhUnits = 5165, + kCSSColorFunction = 5166, + kCSSColor_SpaceLxx = 5167, + kCSSColor_SpaceHwb = 5168, + kCSSRoundModRemFunctions = 5169, + kCSSTrigFunctions = 5170, + kCSSCalcConstants = 5171, + kHasChUnits = 5172, + kHasRchUnits = 5173, + kHasRexUnits = 5174, + kCSSExponentialFunctions = 5175, + kCSSLinearEasing = 5176, + kOverflowMediaQuery = 5177, + kHasSpellingOrGrammarErrorPseudoElement = 5178, + kDynamicRangeMediaQuery = 5179, + kDisplayModeMediaQuery = 5180, + kCSSWordBreakAutoPhrase = 5181, + kCSSSelectorPseudoModal = 5182, + kUpdateMediaQuery = 5183, + kCSSSelectorPseudoFileSelectorButton = 5184, + kWebAuthnGetClientCapabilities = 5185, + kVisitedColumnRuleColor = 5186, + kDocumentIsolationPolicyRequireCorp = 5187, + kDocumentIsolationPolicyCredentialless = 5188, + kClipPathGeometryBox = 5189, + kActiveViewTransitionPseudo = 5190, // 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/renderer/core/css/parser/media_query_parser.cc b/tools/under-control/src/third_party/blink/renderer/core/css/parser/media_query_parser.cc index ebb5700c4..19ed6fcc3 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/css/parser/media_query_parser.cc +++ b/tools/under-control/src/third_party/blink/renderer/core/css/parser/media_query_parser.cc @@ -31,7 +31,7 @@ class MediaQueryFeatureSet : public MediaQueryParser::FeatureSet { public: MediaQueryFeatureSet() = default; - bool IsAllowed(const String& feature) const override { + bool IsAllowed(const AtomicString& feature) const override { if (feature == media_feature_names::kInlineSizeMediaFeature || feature == media_feature_names::kMinInlineSizeMediaFeature || feature == media_feature_names::kMaxInlineSizeMediaFeature || @@ -40,13 +40,14 @@ class MediaQueryFeatureSet : public MediaQueryParser::FeatureSet { feature == media_feature_names::kMaxBlockSizeMediaFeature || feature == media_feature_names::kStuckMediaFeature || feature == media_feature_names::kSnappedMediaFeature || + feature == media_feature_names::kOverflowingMediaFeature || CSSVariableParser::IsValidVariableName(feature)) { return false; } return true; } bool IsAllowedWithoutValue( - const String& feature, + const AtomicString& feature, const ExecutionContext* execution_context) const override { // Media features that are prefixed by min/max cannot be used without a // value. @@ -112,22 +113,24 @@ class MediaQueryFeatureSet : public MediaQueryParser::FeatureSet { feature == media_feature_names::kResizableMediaFeature); } - bool IsCaseSensitive(const String& feature) const override { return false; } + bool IsCaseSensitive(const AtomicString& feature) const override { + return false; + } bool SupportsRange() const override { return true; } }; } // namespace MediaQuerySet* MediaQueryParser::ParseMediaQuerySet( - const String& query_string, - const ExecutionContext* execution_context) { + StringView query_string, + ExecutionContext* execution_context) { CSSParserTokenStream stream(query_string); return ParseMediaQuerySet(stream, execution_context); } MediaQuerySet* MediaQueryParser::ParseMediaQuerySet( CSSParserTokenStream& stream, - const ExecutionContext* execution_context) { + ExecutionContext* execution_context) { return MediaQueryParser(kMediaQuerySetParser, kHTMLStandardMode, execution_context) .ParseImpl(stream); @@ -136,14 +139,14 @@ MediaQuerySet* MediaQueryParser::ParseMediaQuerySet( MediaQuerySet* MediaQueryParser::ParseMediaQuerySetInMode( CSSParserTokenStream& stream, CSSParserMode mode, - const ExecutionContext* execution_context) { + ExecutionContext* execution_context) { return MediaQueryParser(kMediaQuerySetParser, mode, execution_context) .ParseImpl(stream); } MediaQuerySet* MediaQueryParser::ParseMediaCondition( CSSParserTokenStream& stream, - const ExecutionContext* execution_context) { + ExecutionContext* execution_context) { return MediaQueryParser(kMediaConditionParser, kHTMLStandardMode, execution_context) .ParseImpl(stream); @@ -151,7 +154,7 @@ MediaQuerySet* MediaQueryParser::ParseMediaCondition( MediaQueryParser::MediaQueryParser(ParserType parser_type, CSSParserMode mode, - const ExecutionContext* execution_context, + ExecutionContext* execution_context, SyntaxLevel syntax_level) : parser_type_(parser_type), mode_(mode), @@ -230,14 +233,14 @@ MediaQuery::RestrictorType MediaQueryParser::ConsumeRestrictor( return MediaQuery::RestrictorType::kNone; } -String MediaQueryParser::ConsumeType(CSSParserTokenStream& stream) { +AtomicString MediaQueryParser::ConsumeType(CSSParserTokenStream& stream) { if (stream.Peek().GetType() != kIdentToken) { return g_null_atom; } if (IsRestrictorOrLogicalOperator(stream.Peek())) { return g_null_atom; } - return stream.ConsumeIncludingWhitespace().Value().ToString(); + return stream.ConsumeIncludingWhitespace().Value().ToAtomicString(); } MediaQueryOperator MediaQueryParser::ConsumeComparison( @@ -267,20 +270,19 @@ MediaQueryOperator MediaQueryParser::ConsumeComparison( return MediaQueryOperator::kGt; } - NOTREACHED_IN_MIGRATION(); - return MediaQueryOperator::kNone; + NOTREACHED(); } -String MediaQueryParser::ConsumeAllowedName(CSSParserTokenStream& stream, - const FeatureSet& feature_set) { +AtomicString MediaQueryParser::ConsumeAllowedName( + CSSParserTokenStream& stream, + const FeatureSet& feature_set) { if (stream.Peek().GetType() != kIdentToken) { return g_null_atom; } - String name = stream.Peek().Value().ToString(); + AtomicString name = stream.Peek().Value().ToAtomicString(); if (!feature_set.IsCaseSensitive(name)) { name = name.LowerASCII(); } - name = AttemptStaticStringCreation(name); if (!feature_set.IsAllowed(name)) { return g_null_atom; } @@ -288,9 +290,10 @@ String MediaQueryParser::ConsumeAllowedName(CSSParserTokenStream& stream, return name; } -String MediaQueryParser::ConsumeUnprefixedName(CSSParserTokenStream& stream, - const FeatureSet& feature_set) { - String name = ConsumeAllowedName(stream, feature_set); +AtomicString MediaQueryParser::ConsumeUnprefixedName( + CSSParserTokenStream& stream, + const FeatureSet& feature_set) { + AtomicString name = ConsumeAllowedName(stream, feature_set); if (name.IsNull()) { return name; } @@ -311,7 +314,7 @@ const MediaQueryExpNode* MediaQueryParser::ConsumeFeature( CSSParserTokenStream::State start = stream.Save(); { - String feature_name = ConsumeAllowedName(stream, feature_set); + AtomicString feature_name = ConsumeAllowedName(stream, feature_set); // = if (!feature_name.IsNull() && stream.AtEnd() && @@ -348,7 +351,7 @@ const MediaQueryExpNode* MediaQueryParser::ConsumeFeature( { // Try: (e.g., “width <= 10px”) - String feature_name = ConsumeUnprefixedName(stream, feature_set); + AtomicString feature_name = ConsumeUnprefixedName(stream, feature_set); if (!feature_name.IsNull() && !stream.AtEnd()) { MediaQueryOperator op = ConsumeComparison(stream); if (op != MediaQueryOperator::kNone) { @@ -358,6 +361,7 @@ const MediaQueryExpNode* MediaQueryParser::ConsumeFeature( auto left = MediaQueryExpComparison(); auto right = MediaQueryExpComparison(*value, op); + UseCountRangeSyntax(); return MakeGarbageCollected( MediaQueryExp::Create(feature_name, MediaQueryExpBounds(left, right))); @@ -393,7 +397,7 @@ const MediaQueryExpNode* MediaQueryParser::ConsumeFeature( return nullptr; } - String feature_name = ConsumeUnprefixedName(stream, feature_set); + AtomicString feature_name = ConsumeUnprefixedName(stream, feature_set); if (feature_name.IsNull()) { return nullptr; } @@ -421,6 +425,7 @@ const MediaQueryExpNode* MediaQueryParser::ConsumeFeature( auto left = MediaQueryExpComparison(*value1, op1); auto right = MediaQueryExpComparison(); + UseCountRangeSyntax(); return MakeGarbageCollected( MediaQueryExp::Create(feature_name, MediaQueryExpBounds(left, right))); } @@ -444,6 +449,7 @@ const MediaQueryExpNode* MediaQueryParser::ConsumeFeature( return nullptr; } + UseCountRangeSyntax(); return MakeGarbageCollected(MediaQueryExp::Create( feature_name, MediaQueryExpBounds(MediaQueryExpComparison(*value1, op1), @@ -566,7 +572,7 @@ MediaQuery* MediaQueryParser::ConsumeQuery(CSSParserTokenStream& stream) { // // [ not | only ]? [ and ]? MediaQuery::RestrictorType restrictor = ConsumeRestrictor(stream); - String type = ConsumeType(stream); + AtomicString type = ConsumeType(stream); if (!type.IsNull()) { if (!ConsumeIfIdent(stream, "and")) { @@ -615,4 +621,8 @@ MediaQuerySet* MediaQueryParser::ParseImpl(CSSParserTokenStream& stream) { return MakeGarbageCollected(std::move(queries)); } +void MediaQueryParser::UseCountRangeSyntax() { + UseCounter::Count(execution_context_, WebFeature::kMediaQueryRangeSyntax); +} + } // namespace blink diff --git a/tools/under-control/src/third_party/blink/renderer/core/dom/aria_relationship_attributes.idl b/tools/under-control/src/third_party/blink/renderer/core/dom/aria_relationship_attributes.idl index a897ae321..4bbf751fc 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/dom/aria_relationship_attributes.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/dom/aria_relationship_attributes.idl @@ -14,7 +14,7 @@ [CEReactions, Measure] attribute FrozenArray? ariaErrorMessageElements; [CEReactions, Measure] attribute FrozenArray? ariaFlowToElements; [CEReactions, Measure] attribute FrozenArray? ariaLabelledByElements; - [CEReactions, Measure] attribute FrozenArray? ariaOwnsElements; + [CEReactions, Measure, RuntimeEnabled=AOMAriaRelationshipPropertiesAriaOwns] attribute FrozenArray? ariaOwnsElements; }; Element includes AriaRelationshipAttributes; diff --git a/tools/under-control/src/third_party/blink/renderer/core/dom/document.idl b/tools/under-control/src/third_party/blink/renderer/core/dom/document.idl index 1a68da3e5..81890912e 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/dom/document.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/dom/document.idl @@ -81,7 +81,12 @@ typedef (HTMLScriptElement or SVGScriptElement) HTMLOrSVGScriptElement; // https://html.spec.whatwg.org/C/#the-document-object // https://github.com/whatwg/html/pull/9538 - [CallWith=ExecutionContext,MeasureAs=ParseHTMLUnsafe] static Document parseHTMLUnsafe(HTMLString html); + [CallWith=ExecutionContext,RaisesException,MeasureAs=ParseHTMLUnsafe] static Document parseHTMLUnsafe(HTMLString html); + // https://wicg.github.io/sanitizer-api/#sanitizer-api + // TODO(356601280): Merge the two setHTMLUnsafe variants into one, once the + // different RuntimeEnabled flags are both perma-enabled. + [RuntimeEnabled=SanitizerAPI,RaisesException,CallWith=ExecutionContext,MeasureAs=ParseHTMLUnsafe,CEReactions] static Document parseHTMLUnsafe(HTMLString html, SetHTMLOptions options); + [RuntimeEnabled=SanitizerAPI,RaisesException,CallWith=ExecutionContext,MeasureAs=ParseHTMLSafe,CEReactions] static Document parseHTML(DOMString html, optional SetHTMLOptions options = {}); // resource metadata management @@ -196,7 +201,7 @@ typedef (HTMLScriptElement or SVGScriptElement) HTMLOrSVGScriptElement; // Deprecated prefixed page visibility API. // TODO(davidben): This is a property so attaching a deprecation warning results in false positives when outputting // document in the console. It's possible https://crbug.com/43394 will resolve this. - [MeasureAs=PrefixedPageVisibility, ImplementedAs=visibilityState] readonly attribute DOMString webkitVisibilityState; + [MeasureAs=PrefixedPageVisibility, ImplementedAs=visibilityStateAsString] readonly attribute DOMString webkitVisibilityState; [MeasureAs=PrefixedPageVisibility, ImplementedAs=hidden] readonly attribute boolean webkitHidden; // Private Token API (https://github.com/wicg/trust-token-api) 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 5be3cc7c6..39db560ef 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 @@ -27,6 +27,12 @@ dictionary CheckVisibilityOptions { [RuntimeEnabled=CheckVisibilityExtraProperties] boolean visibilityProperty = false; }; +// Options dictionary for setHTML and setHTMLUnsafe. +// See: https://wicg.github.io/sanitizer-api/#configobject +dictionary SetHTMLOptions { + (Sanitizer or SanitizerConfig) sanitizer; +}; + // https://dom.spec.whatwg.org/#interface-element [ @@ -93,15 +99,17 @@ dictionary CheckVisibilityOptions { // DOM Parsing and Serialization // https://w3c.github.io/DOM-Parsing/#extensions-to-the-element-interface - // - // TODO(mkwst): Write a spec for the `TrustedHTML` variants. - // TODO(lyf): Change the type to `[TreatNullAs=xxx] HTMLString` after - // https://crbug.com/1058762 has been fixed. [CEReactions, RuntimeCallStatsCounter=ElementInnerHTML, RaisesException=Setter] attribute [LegacyNullToEmptyString, StringContext=TrustedHTML] DOMString innerHTML; [CEReactions, RaisesException=Setter] attribute [LegacyNullToEmptyString, StringContext=TrustedHTML] DOMString outerHTML; [CEReactions, RaisesException] void insertAdjacentHTML(DOMString position, HTMLString text); + // https://github.com/whatwg/html/pull/9538 [RaisesException,MeasureAs=SetHTMLUnsafe,CEReactions] void setHTMLUnsafe(HTMLString html); + // https://wicg.github.io/sanitizer-api/#sanitizer-api + // TODO(vogelheim): Merge the two setHTMLUnsafe variants into one, once the + // different RuntimeEnabled flags are both perma-enabled. + [RuntimeEnabled=SanitizerAPI,RaisesException,MeasureAs=SetHTMLUnsafe,CEReactions] void setHTMLUnsafe(HTMLString html, SetHTMLOptions options); + [RuntimeEnabled=SanitizerAPI,RaisesException,MeasureAs=SetHTMLSafe,CEReactions] void setHTML(DOMString html, optional SetHTMLOptions options = {}); // Declarative Shadow DOM getInnerHTML() function. This version should be // considered deprecated, as we work to standardize the version below, diff --git a/tools/under-control/src/third_party/blink/renderer/core/dom/shadow_root.idl b/tools/under-control/src/third_party/blink/renderer/core/dom/shadow_root.idl index 6d3be570d..30932c4ef 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/dom/shadow_root.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/dom/shadow_root.idl @@ -89,6 +89,9 @@ interface ShadowRoot : DocumentFragment { (DOMString or ElementCreationOptions) options); [RaisesException,MeasureAs=SetHTMLUnsafe,CEReactions] void setHTMLUnsafe(HTMLString string); + [RuntimeEnabled=SanitizerAPI,RaisesException,MeasureAs=SetHTMLUnsafe,CEReactions] void setHTMLUnsafe(HTMLString html, SetHTMLOptions options); + [RuntimeEnabled=SanitizerAPI,RaisesException,MeasureAs=SetHTMLSafe,CEReactions] void setHTML(DOMString html, optional SetHTMLOptions options = {}); + }; ShadowRoot includes DocumentOrShadowRoot; 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 4b36b52f2..46e434176 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 @@ -91,6 +91,7 @@ "contentvisibilityautostatechange", "contextlost", "contextmenu", + "contextoverflow", "contextrestored", "controllerchange", "cookiechange", @@ -114,6 +115,7 @@ "dismiss", "display", "dispose", + "downloadprogress", "downloading", "drag", "dragend", @@ -254,7 +256,6 @@ "push", "pushsubscriptionchange", "quicstream", - "quotachange", "ratechange", "readeradd", "readerremove", 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 fb7d3474e..ad134361e 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 @@ -188,6 +188,10 @@ #include "ui/base/ui_base_features.h" #include "ui/gfx/geometry/skia_conversions.h" +#if BUILDFLAG(IS_CHROMEOS) +#include "ui/native_theme/native_theme.h" +#endif + #if !BUILDFLAG(IS_MAC) #include "skia/ext/legacy_display_globals.h" #include "third_party/blink/public/platform/web_font_render_style.h" @@ -404,8 +408,7 @@ ui::mojom::blink::WindowOpenDisposition NavigationPolicyToDisposition( case kNavigationPolicyLinkPreview: NOTREACHED(); } - NOTREACHED_IN_MIGRATION() << "Unexpected NavigationPolicy"; - return ui::mojom::blink::WindowOpenDisposition::IGNORE_ACTION; + NOTREACHED() << "Unexpected NavigationPolicy"; } // Records the queuing duration for activation IPC. @@ -441,8 +444,7 @@ SkFontHinting RendererPreferencesToSkiaHinting( case gfx::FontRenderParams::HINTING_FULL: return SkFontHinting::kNormal; default: - NOTREACHED_IN_MIGRATION(); - return SkFontHinting::kNormal; + NOTREACHED(); } } #endif @@ -457,8 +459,7 @@ SkFontHinting RendererPreferencesToSkiaHinting( case gfx::FontRenderParams::HINTING_FULL: return SkFontHinting::kFull; default: - NOTREACHED_IN_MIGRATION(); - return SkFontHinting::kNormal; + NOTREACHED(); } } #endif // !BUILDFLAG(IS_MAC) && !BUILDFLAG(IS_WIN) @@ -1213,6 +1214,10 @@ void WebViewImpl::DidFirstVisuallyNonEmptyPaint() { local_main_frame_host_remote_->DidFirstVisuallyNonEmptyPaint(); } +void WebViewImpl::OnFirstContentfulPaint() { + local_main_frame_host_remote_->OnFirstContentfulPaint(); +} + void WebViewImpl::UpdateICBAndResizeViewport( const gfx::Size& visible_viewport_size) { // We'll keep the initial containing block size from changing when the top @@ -3427,6 +3432,16 @@ void WebViewImpl::UpdateFontRenderingFromRendererPrefs() { #endif // !BUILDFLAG(IS_MAC) } +#if BUILDFLAG(IS_CHROMEOS) +void WebViewImpl::UpdateUseOverlayScrollbar(bool use_overlay_scrollbar) { + ui::NativeTheme::GetInstanceForWeb()->set_use_overlay_scrollbar( + use_overlay_scrollbar); + if (MainFrameImpl() && MainFrameImpl()->GetFrameView()) { + MainFrameImpl()->GetFrameView()->UsesOverlayScrollbarsChanged(); + } +} +#endif + void WebViewImpl::ActivatePrerenderedPage( mojom::blink::PrerenderPageActivationParamsPtr prerender_page_activation_params, @@ -3545,13 +3560,13 @@ void WebViewImpl::UpdateRendererPreferences( SetExplicitlyAllowedPorts( renderer_preferences_.explicitly_allowed_network_ports); - if (renderer_preferences_.prefixed_fullscreen_video_api_availability - .has_value()) { - WebRuntimeFeatures::EnableFeatureFromString( - "PrefixedVideoFullscreen", - renderer_preferences_.prefixed_fullscreen_video_api_availability - .value()); +#if BUILDFLAG(IS_CHROMEOS) + if (!ScrollbarTheme::MockScrollbarsEnabled()) { + WebRuntimeFeatures::EnableOverlayScrollbars( + renderer_preferences_.use_overlay_scrollbar); + UpdateUseOverlayScrollbar(renderer_preferences_.use_overlay_scrollbar); } +#endif MaybePreloadSystemFonts(GetPage()); } diff --git a/tools/under-control/src/third_party/blink/renderer/core/highlight/highlight_registry.idl b/tools/under-control/src/third_party/blink/renderer/core/highlight/highlight_registry.idl index 741e0de95..fcd61e444 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/highlight/highlight_registry.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/highlight/highlight_registry.idl @@ -6,4 +6,14 @@ Exposed=Window ] interface HighlightRegistry { maplike; + + // Returns the sequence of highlights that intersect with the specified + // coordinates, ordered by priority. It also returns highlights inside + // shadow trees if the shadow root is passed in as part of the |options| + // parameter. + [RuntimeEnabled=HighlightsFromPoint] + sequence highlightsFromPoint( + float x, + float y, + optional HighlightsFromPointOptions options = {}); }; diff --git a/tools/under-control/src/third_party/blink/renderer/core/highlight/highlights_from_point_options.idl b/tools/under-control/src/third_party/blink/renderer/core/highlight/highlights_from_point_options.idl new file mode 100755 index 000000000..9f0d1c685 --- /dev/null +++ b/tools/under-control/src/third_party/blink/renderer/core/highlight/highlights_from_point_options.idl @@ -0,0 +1,7 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +dictionary HighlightsFromPointOptions { + sequence shadowRoots = []; +}; \ No newline at end of file diff --git a/tools/under-control/src/third_party/blink/renderer/core/html/canvas/text_cluster.idl b/tools/under-control/src/third_party/blink/renderer/core/html/canvas/text_cluster.idl index 7538036db..ead609e7e 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/html/canvas/text_cluster.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/html/canvas/text_cluster.idl @@ -3,11 +3,10 @@ Exposed=(Window,Worker) ] interface TextCluster { - readonly attribute DOMString text; attribute double x; attribute double y; - attribute unsigned long begin; - attribute unsigned long end; + readonly attribute unsigned long begin; + readonly attribute unsigned long end; readonly attribute DOMString align; readonly attribute DOMString baseline; }; \ No newline at end of file diff --git a/tools/under-control/src/third_party/blink/renderer/core/html/forms/html_select_element.idl b/tools/under-control/src/third_party/blink/renderer/core/html/forms/html_select_element.idl index 3a7beb614..71e25667d 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/html/forms/html_select_element.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/html/forms/html_select_element.idl @@ -61,5 +61,5 @@ // https://html.spec.whatwg.org/multipage/input.html#dom-select-showpicker [RaisesException, RuntimeEnabled=HTMLSelectElementShowPicker, MeasureAs=ShowPickerSelect] void showPicker(); - [RuntimeEnabled=CustomizableSelect] attribute HTMLSelectedOptionElement? selectedOptionElement; + [RuntimeEnabled=SelectedcontentelementAttribute] attribute HTMLSelectedContentElement? selectedContentElement; }; diff --git a/tools/under-control/src/third_party/blink/renderer/core/html/forms/html_selected_option_element.idl b/tools/under-control/src/third_party/blink/renderer/core/html/forms/html_selected_content_element.idl similarity index 79% rename from tools/under-control/src/third_party/blink/renderer/core/html/forms/html_selected_option_element.idl rename to tools/under-control/src/third_party/blink/renderer/core/html/forms/html_selected_content_element.idl index 43e150993..37172fc5c 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/html/forms/html_selected_option_element.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/html/forms/html_selected_content_element.idl @@ -6,4 +6,4 @@ Exposed=Window, HTMLConstructor, RuntimeEnabled=CustomizableSelect -] interface HTMLSelectedOptionElement : HTMLElement {}; +] interface HTMLSelectedContentElement : HTMLElement {}; diff --git a/tools/under-control/src/third_party/blink/renderer/core/html/html_dialog_element.idl b/tools/under-control/src/third_party/blink/renderer/core/html/html_dialog_element.idl index 4f3196c70..d3822eda8 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/html/html_dialog_element.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/html/html_dialog_element.idl @@ -30,7 +30,9 @@ ] interface HTMLDialogElement : HTMLElement { [CEReactions, Reflect] attribute boolean open; attribute DOMString returnValue; + [CEReactions,RuntimeEnabled=HTMLDialogLightDismiss] attribute DOMString closedBy; [CEReactions, Measure, RaisesException] void show(); [CEReactions, Measure, RaisesException] void showModal(); [CEReactions] void close(optional DOMString returnValue); + [CEReactions,RuntimeEnabled=HTMLDialogLightDismiss] void requestClose(optional DOMString returnValue); }; diff --git a/tools/under-control/src/third_party/blink/renderer/core/html/html_embed_element.idl b/tools/under-control/src/third_party/blink/renderer/core/html/html_embed_element.idl index 3f377cc86..cbd1d1b54 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/html/html_embed_element.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/html/html_embed_element.idl @@ -27,7 +27,7 @@ ActiveScriptWrappable, HTMLConstructor ] interface HTMLEmbedElement : HTMLElement { - [CEReactions, Reflect, URL, RaisesException=Setter] attribute ScriptURLString src; + [CEReactions, Reflect, URL] attribute ScriptURLString src; [CEReactions, Reflect] attribute DOMString type; [CEReactions, Reflect] attribute DOMString width; [CEReactions, Reflect] attribute DOMString height; diff --git a/tools/under-control/src/third_party/blink/renderer/core/html/html_iframe_element.idl b/tools/under-control/src/third_party/blink/renderer/core/html/html_iframe_element.idl index d50ad2964..47411f747 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/html/html_iframe_element.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/html/html_iframe_element.idl @@ -28,7 +28,7 @@ HTMLConstructor ] interface HTMLIFrameElement : HTMLElement { [CEReactions, Reflect, URL] attribute USVString src; - [CEReactions, Reflect, RaisesException=Setter] attribute HTMLString srcdoc; + [CEReactions, Reflect] attribute HTMLString srcdoc; [CEReactions, Reflect] attribute DOMString name; [PutForwards=value] readonly attribute DOMTokenList sandbox; // Note: The seamless attribute was once supported, but was removed. diff --git a/tools/under-control/src/third_party/blink/renderer/core/html/html_object_element.idl b/tools/under-control/src/third_party/blink/renderer/core/html/html_object_element.idl index 8f2a892cb..8ea4dcfca 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/html/html_object_element.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/html/html_object_element.idl @@ -27,7 +27,7 @@ ActiveScriptWrappable, HTMLConstructor ] interface HTMLObjectElement : HTMLElement { - [CEReactions, Reflect, URL, RaisesException=Setter] attribute ScriptURLString data; + [CEReactions, Reflect, URL] attribute ScriptURLString data; [CEReactions, Reflect] attribute DOMString type; [CEReactions, Reflect] attribute DOMString name; [CEReactions, Reflect] attribute DOMString useMap; @@ -55,7 +55,7 @@ [CEReactions, Reflect] attribute unsigned long hspace; [CEReactions, Reflect] attribute DOMString standby; [CEReactions, Reflect] attribute unsigned long vspace; - [CEReactions, Reflect, URL, RaisesException=Setter] attribute ScriptURLString codeBase; + [CEReactions, Reflect, URL] attribute ScriptURLString codeBase; [CEReactions, Reflect] attribute DOMString codeType; [CEReactions, Reflect] attribute [LegacyNullToEmptyString] DOMString border; diff --git a/tools/under-control/src/third_party/blink/renderer/core/html/html_permission_element.idl b/tools/under-control/src/third_party/blink/renderer/core/html/html_permission_element.idl index 297e0bee4..b190caacd 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/html/html_permission_element.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/html/html_permission_element.idl @@ -2,6 +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/373648906): Figure out where this definition should be. +enum PermissionState { + "granted", + "denied", + "prompt" +}; + [RuntimeEnabled=PermissionElement, Exposed=Window] interface HTMLPermissionElement : HTMLElement { [HTMLConstructor] constructor(); diff --git a/tools/under-control/src/third_party/blink/renderer/core/html/html_script_element.idl b/tools/under-control/src/third_party/blink/renderer/core/html/html_script_element.idl index 2f37437d5..589239050 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/html/html_script_element.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/html/html_script_element.idl @@ -22,7 +22,7 @@ Exposed=Window, HTMLConstructor ] interface HTMLScriptElement : HTMLElement { - [CEReactions, Reflect, URL, RaisesException=Setter] attribute ScriptURLString src; + [CEReactions, Reflect, URL] attribute ScriptURLString src; [CEReactions, Reflect] attribute DOMString type; [CEReactions, Reflect] attribute boolean noModule; [CEReactions, Reflect] attribute DOMString charset; diff --git a/tools/under-control/src/third_party/blink/renderer/core/inspector/dev_tools_host.idl b/tools/under-control/src/third_party/blink/renderer/core/inspector/dev_tools_host.idl index 14bae8ff6..6d0351bc2 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/inspector/dev_tools_host.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/inspector/dev_tools_host.idl @@ -30,6 +30,11 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +dictionary Accelerator { + unsigned short keyCode; + long modifiers; +}; + dictionary ShowContextMenuItem { required DOMString type; [EnforceRange] unsigned short id; @@ -37,6 +42,8 @@ dictionary ShowContextMenuItem { boolean isExperimentalFeature = false; boolean enabled = true; boolean checked = false; + boolean isDevToolsPerformanceMenuItem = false; + Accelerator accelerator; sequence subItems; }; diff --git a/tools/under-control/src/third_party/blink/renderer/core/inspector/inspector_overlay_host.idl b/tools/under-control/src/third_party/blink/renderer/core/inspector/inspector_overlay_host.idl index aa9c0226e..d75e5e1a3 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/inspector/inspector_overlay_host.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/inspector/inspector_overlay_host.idl @@ -31,5 +31,5 @@ [ LegacyNoInterfaceObject ] interface InspectorOverlayHost { - [RaisesException] void send(any command); + void send(any command); }; 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 1a639d6cc..37a1428da 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 @@ -18,7 +18,7 @@ #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/origin_trial_feature/origin_trial_feature.mojom-shared.h" +#include "third_party/blink/public/mojom/origin_trials/origin_trial_feature.mojom-shared.h" #include "third_party/blink/public/platform/platform.h" #include "third_party/blink/public/platform/web_security_origin.h" #include "third_party/blink/renderer/bindings/core/v8/script_controller.h" @@ -128,8 +128,7 @@ std::ostream& operator<<(std::ostream& stream, OriginTrialTokenStatus status) { case OriginTrialTokenStatus::kUnknownTrial: return stream << "kUnknownTrial"; } - NOTREACHED_IN_MIGRATION(); - return stream; + NOTREACHED(); #else return stream << (static_cast(status)); #endif // ifndef NDEBUG @@ -530,8 +529,7 @@ bool OriginTrialContext::CanEnableTrialFromName(const StringView& trial_name) { } if (trial_name == "FoldableAPIs") { - return base::FeatureList::IsEnabled(features::kViewportSegments) && - base::FeatureList::IsEnabled(features::kDevicePosture); + return base::FeatureList::IsEnabled(features::kViewportSegments); } if (trial_name == "PermissionElement") { diff --git a/tools/under-control/src/third_party/blink/renderer/core/sanitizer/sanitizer_api.idl b/tools/under-control/src/third_party/blink/renderer/core/sanitizer/sanitizer_api.idl new file mode 100755 index 000000000..2ee206715 --- /dev/null +++ b/tools/under-control/src/third_party/blink/renderer/core/sanitizer/sanitizer_api.idl @@ -0,0 +1,64 @@ +// 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 + +// (New and revised) IDL for Sanitizer API. +// Extracted from: https://wicg.github.io/sanitizer-api/ + +[ + Exposed=(Window,Worker), + RuntimeEnabled=SanitizerAPI +] +interface Sanitizer { + [CallWith=ExecutionContext, RaisesException] + constructor(optional SanitizerConfig config = {}); + + // Query configuration: + SanitizerConfig get(); + + // Modify a Sanitizer’s lists and fields: + undefined allowElement(SanitizerElementWithAttributes element); + undefined removeElement(SanitizerElement element); + undefined replaceWithChildrenElement(SanitizerElement element); + undefined allowAttribute(SanitizerAttribute attribute); + undefined removeAttribute(SanitizerAttribute attribute); + undefined setComments(boolean allow); + undefined setDataAttributes(boolean allow); + + // Remove markup that executes script. May modify multiple lists: + undefined removeUnsafe(); +}; + +dictionary SanitizerElementNamespace { + required DOMString name; + [ImplementedAs=namespaceURI] DOMString? _namespace = + "http://www.w3.org/1999/xhtml"; +}; + +// Used by "elements" +dictionary SanitizerElementNamespaceWithAttributes : SanitizerElementNamespace { + sequence attributes; + sequence removeAttributes; +}; + +typedef (DOMString or SanitizerElementNamespace) SanitizerElement; +typedef (DOMString or SanitizerElementNamespaceWithAttributes) SanitizerElementWithAttributes; + +dictionary SanitizerAttributeNamespace { + required DOMString name; + [ImplementedAs=namespaceURI] DOMString? _namespace = null; +}; +typedef (DOMString or SanitizerAttributeNamespace) SanitizerAttribute; + +dictionary SanitizerConfig { + sequence elements; + sequence removeElements; + sequence replaceWithChildrenElements; + + sequence attributes; + sequence removeAttributes; + + boolean comments; + boolean dataAttributes; +}; + 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 9c58a54b6..edbacb8f9 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 @@ -304,7 +304,7 @@ interface Internals { [CallWith=ScriptState] Promise createResolvedPromise(any value); [CallWith=ScriptState] Promise createRejectedPromise(any reason); - [CallWith=ScriptState] Promise addOneToPromise(Promise promise); + [CallWith=ScriptState] Promise addOneToPromise(Promise promise); [CallWith=ScriptState, RaisesException] Promise promiseCheck(long arg1, boolean arg2, object arg3, DOMString arg4, sequence arg5); [CallWith=ScriptState] Promise promiseCheckWithoutExceptionState(object arg1, DOMString arg2, DOMString... variadic); [CallWith=ScriptState] Promise promiseCheckRange([EnforceRange] octet arg1); @@ -323,8 +323,8 @@ interface Internals { boolean isInCanvasFontCache(Document document, DOMString fontString); unsigned long canvasFontCacheMaxFonts(); - void forceLoseCanvasContext(HTMLCanvasElement canvas, DOMString contextType); - void forceLoseCanvasContext(OffscreenCanvas offscreencanvas, DOMString context_type); + void forceLoseCanvasContext(CanvasRenderingContext2D ctx); + void forceLoseCanvasContext(OffscreenCanvasRenderingContext2D ctx); void disableCanvasAcceleration(HTMLCanvasElement canvas); DictionaryTest dictionaryTest(); @@ -459,4 +459,7 @@ interface Internals { // NetworkContext. Intended to be used to allow remote context executors to // continue functioning in fenced frame WPTs after network is revoked. [CallWith=ScriptState] Promise exemptUrlFromNetworkRevocation(USVString url); + + DOMString lastCompiledScriptFileName(Document document); + boolean lastCompiledScriptUsedCodeCache(Document document); }; diff --git a/tools/under-control/src/third_party/blink/renderer/core/testing/worker_internals.idl b/tools/under-control/src/third_party/blink/renderer/core/testing/worker_internals.idl index e3be19be1..56fb209bf 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/testing/worker_internals.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/testing/worker_internals.idl @@ -11,4 +11,6 @@ interface WorkerInternals { [CallWith=ScriptState, RaisesException] void countDeprecation(unsigned long feature); [CallWith=ScriptState] void collectGarbage(); + + void forceLoseCanvasContext(OffscreenCanvasRenderingContext2D ctx); }; diff --git a/tools/under-control/src/third_party/blink/renderer/core/timing/performance_navigation_timing.idl b/tools/under-control/src/third_party/blink/renderer/core/timing/performance_navigation_timing.idl index b3ec33600..e40663069 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/timing/performance_navigation_timing.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/timing/performance_navigation_timing.idl @@ -32,6 +32,7 @@ enum NavigationEntropy { readonly attribute unsigned short redirectCount; [RuntimeEnabled=BackForwardCacheNotRestoredReasons] readonly attribute NotRestoredReasons? notRestoredReasons; [RuntimeEnabled=PerformanceNavigateSystemEntropy] readonly attribute NavigationEntropy systemEntropy; + [RuntimeEnabled=PerformanceNavigationTimingConfidence] readonly attribute PerformanceTimingConfidence confidence; [CallWith=ScriptState] readonly attribute DOMHighResTimeStamp criticalCHRestart; [CallWith=ScriptState, ImplementedAs=toJSONForBinding] object toJSON(); }; diff --git a/tools/under-control/src/third_party/blink/renderer/core/timing/performance_resource_timing.idl b/tools/under-control/src/third_party/blink/renderer/core/timing/performance_resource_timing.idl index d576d0cbd..7a4729e55 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/timing/performance_resource_timing.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/timing/performance_resource_timing.idl @@ -77,6 +77,8 @@ interface PerformanceResourceTiming : PerformanceEntry { [RuntimeEnabled=ResourceTimingContentType] readonly attribute DOMString contentType; + [RuntimeEnabled=ResourceTimingFinalResponseHeadersStart] + readonly attribute DOMHighResTimeStamp finalResponseHeadersStart; readonly attribute DOMHighResTimeStamp firstInterimResponseStart; [CallWith=ScriptState, ImplementedAs=toJSONForBinding] object toJSON(); diff --git a/tools/under-control/src/third_party/blink/renderer/core/timing/performance_script_timing.idl b/tools/under-control/src/third_party/blink/renderer/core/timing/performance_script_timing.idl index 1f2060de9..8369d8238 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/timing/performance_script_timing.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/timing/performance_script_timing.idl @@ -5,7 +5,6 @@ enum ScriptInvokerType { "classic-script", "module-script", - "execute-script", "event-listener", "user-callback", "resolve-promise", diff --git a/tools/under-control/src/third_party/blink/renderer/core/timing/performance_timing_confidence.idl b/tools/under-control/src/third_party/blink/renderer/core/timing/performance_timing_confidence.idl new file mode 100755 index 000000000..c8f286667 --- /dev/null +++ b/tools/under-control/src/third_party/blink/renderer/core/timing/performance_timing_confidence.idl @@ -0,0 +1,17 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +enum PerformanceTimingConfidenceValue { + "high", + "low" +}; + +[ + Exposed=Window, + RuntimeEnabled=PerformanceNavigationTimingConfidence +] interface PerformanceTimingConfidence { + readonly attribute double randomizedTriggerRate; + readonly attribute PerformanceTimingConfidenceValue value; + [CallWith=ScriptState] object toJSON(); +}; diff --git a/tools/under-control/src/third_party/blink/renderer/core/trustedtypes/trusted_type_policy.idl b/tools/under-control/src/third_party/blink/renderer/core/trustedtypes/trusted_type_policy.idl index ab1839ee9..983832e7d 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/trustedtypes/trusted_type_policy.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/trustedtypes/trusted_type_policy.idl @@ -10,7 +10,7 @@ typedef (TrustedHTML or TrustedScript or TrustedScriptURL) TrustedType; Exposed=(Window, Worker) ] interface TrustedTypePolicy { readonly attribute DOMString name; - [CallWith=ScriptState, RaisesException] TrustedHTML createHTML(DOMString input, any... args); - [CallWith=ScriptState, RaisesException] TrustedScript createScript(DOMString input, any... args); - [CallWith=ScriptState, RaisesException] TrustedScriptURL createScriptURL(DOMString input, any... args); + [CallWith=Isolate, RaisesException] TrustedHTML createHTML(DOMString input, any... args); + [CallWith=Isolate, RaisesException] TrustedScript createScript(DOMString input, any... args); + [CallWith=Isolate, RaisesException] TrustedScriptURL createScriptURL(DOMString input, any... args); }; diff --git a/tools/under-control/src/third_party/blink/renderer/core/xmlhttprequest/xml_http_request.idl b/tools/under-control/src/third_party/blink/renderer/core/xmlhttprequest/xml_http_request.idl index bec566277..0335fc797 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/xmlhttprequest/xml_http_request.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/xmlhttprequest/xml_http_request.idl @@ -76,7 +76,7 @@ typedef (Blob or BufferSource or FormData or URLSearchParams or USVString) XMLHt ByteString getAllResponseHeaders(); [RaisesException] void overrideMimeType(DOMString mime); [RaisesException=Setter] attribute XMLHttpRequestResponseType responseType; - [CallWith=ScriptState, RaisesException=Getter] readonly attribute any response; + [CallWith=ScriptState] readonly attribute any response; [RaisesException=Getter] readonly attribute USVString responseText; [Exposed=Window, MeasureAs=XMLHttpRequestResponseXML, RaisesException=Getter] readonly attribute Document? responseXML; }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/ad_auction/navigator_auction.idl b/tools/under-control/src/third_party/blink/renderer/modules/ad_auction/navigator_auction.idl index a06d7a803..600d27857 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/ad_auction/navigator_auction.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/ad_auction/navigator_auction.idl @@ -59,5 +59,5 @@ typedef (USVString or FencedFrameConfig) UrnOrConfig; [RuntimeEnabled=EnforceAnonymityExposure, CallWith=ScriptState] readonly attribute boolean deprecatedRunAdAuctionEnforcesKAnonymity; - [RuntimeEnabled=FledgeFeatureDetection, SameObject, CallWith=ScriptState] readonly attribute ProtectedAudience protectedAudience; + [SameObject, CallWith=ScriptState] readonly attribute ProtectedAudience protectedAudience; }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/ad_auction/protected_audience.idl b/tools/under-control/src/third_party/blink/renderer/modules/ad_auction/protected_audience.idl index 77e24be68..652366b81 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/ad_auction/protected_audience.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/ad_auction/protected_audience.idl @@ -2,10 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -[ - SecureContext, - Exposed=Window, - RuntimeEnabled=FledgeFeatureDetection -] interface ProtectedAudience { +[SecureContext, Exposed=Window] +interface ProtectedAudience { [CallWith=ScriptState] any queryFeatureSupport(DOMString feature); }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/ad_auction/storage_interest_group.idl b/tools/under-control/src/third_party/blink/renderer/modules/ad_auction/storage_interest_group.idl new file mode 100755 index 000000000..4cf805e22 --- /dev/null +++ b/tools/under-control/src/third_party/blink/renderer/modules/ad_auction/storage_interest_group.idl @@ -0,0 +1,19 @@ +// 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 + +typedef (long long or AuctionAd) PreviousWinElement; + +typedef sequence PreviousWin; + +dictionary StorageInterestGroup : AuctionAdInterestGroup { + unsigned long long joinCount; + unsigned long long bidCount; + sequence prevWinsMs; + USVString joiningOrigin; + long long timeSinceGroupJoinedMs; + long long lifetimeRemainingMs; + long long timeSinceLastUpdateMs; + long long timeUntilNextUpdateMs; + unsigned long long estimatedSize; +}; 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 6625b0e7a..64fa64099 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 @@ -19,7 +19,7 @@ interface AI { Measure, RuntimeEnabled=AIPromptAPI ] - readonly attribute AIAssistantFactory languageModel; + readonly attribute AILanguageModelFactory languageModel; [ Measure, RuntimeEnabled=AISummarizationAPI diff --git a/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_create_monitor.idl b/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_create_monitor.idl new file mode 100755 index 000000000..22ca5859b --- /dev/null +++ b/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_create_monitor.idl @@ -0,0 +1,14 @@ +// Copyright 2024 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// https://github.com/explainers-by-googlers/prompt-api + +[ + Exposed=(Window,Worker) +] +interface AICreateMonitor : EventTarget { + attribute EventHandler ondownloadprogress; +}; + +callback AICreateMonitorCallback = undefined (AICreateMonitor monitor); diff --git a/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_assistant.idl b/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_language_model.idl similarity index 73% rename from tools/under-control/src/third_party/blink/renderer/modules/ai/ai_assistant.idl rename to tools/under-control/src/third_party/blink/renderer/modules/ai/ai_language_model.idl index 80ff40b92..39f39a8fd 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_assistant.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_language_model.idl @@ -4,11 +4,11 @@ // https://github.com/explainers-by-googlers/prompt-api -dictionary AIAssistantCloneOptions { +dictionary AILanguageModelCloneOptions { AbortSignal signal; }; -dictionary AIAssistantPromptOptions { +dictionary AILanguageModelPromptOptions { AbortSignal signal; }; @@ -16,7 +16,7 @@ dictionary AIAssistantPromptOptions { Exposed=(Window,Worker), RuntimeEnabled=AIPromptAPI ] -interface AIAssistant { +interface AILanguageModel : EventTarget { [ Measure, CallWith=ScriptState, @@ -24,7 +24,7 @@ interface AIAssistant { ] Promise prompt( DOMString input, - optional AIAssistantPromptOptions options = {} + optional AILanguageModelPromptOptions options = {} ); [ Measure, @@ -33,7 +33,7 @@ interface AIAssistant { ] ReadableStream promptStreaming( DOMString input, - optional AIAssistantPromptOptions options = {} + optional AILanguageModelPromptOptions options = {} ); [ @@ -43,7 +43,7 @@ interface AIAssistant { ] Promise countPromptTokens( DOMString input, - optional AIAssistantPromptOptions options = {} + optional AILanguageModelPromptOptions options = {} ); [Measure] @@ -58,12 +58,14 @@ interface AIAssistant { [Measure] readonly attribute float temperature; + attribute EventHandler oncontextoverflow; + [ Measure, CallWith=ScriptState, RaisesException ] - Promise clone(optional AIAssistantCloneOptions options = {}); + Promise clone(optional AILanguageModelCloneOptions options = {}); [ Measure, CallWith=ScriptState, diff --git a/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_assistant_create_options.idl b/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_language_model_create_options.idl similarity index 61% rename from tools/under-control/src/third_party/blink/renderer/modules/ai/ai_assistant_create_options.idl rename to tools/under-control/src/third_party/blink/renderer/modules/ai/ai_language_model_create_options.idl index 2933dab8f..ff1f261b2 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_assistant_create_options.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_language_model_create_options.idl @@ -4,15 +4,17 @@ // https://github.com/explainers-by-googlers/prompt-api -dictionary AIAssistantInitialPrompt { - required AIAssistantInitialPromptRole role; +dictionary AILanguageModelInitialPrompt { + required AILanguageModelInitialPromptRole role; required DOMString content; }; -dictionary AIAssistantCreateOptions { +dictionary AILanguageModelCreateOptions { AbortSignal signal; + AICreateMonitorCallback monitor; + [EnforceRange] unsigned long topK; float temperature; DOMString systemPrompt; - sequence initialPrompts; + sequence initialPrompts; }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_assistant_factory.idl b/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_language_model_factory.idl similarity index 64% rename from tools/under-control/src/third_party/blink/renderer/modules/ai/ai_assistant_factory.idl rename to tools/under-control/src/third_party/blink/renderer/modules/ai/ai_language_model_factory.idl index fd24c808c..1bbeddce9 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_assistant_factory.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_language_model_factory.idl @@ -4,16 +4,18 @@ // https://github.com/explainers-by-googlers/prompt-api -enum AIAssistantInitialPromptRole { "system", "user", "assistant" }; -enum AIAssistantPromptRole { "user", "assistant" }; +enum AILanguageModelInitialPromptRole { "system", "user", "assistant" }; +enum AILanguageModelPromptRole { "user", "assistant" }; [ Exposed=(Window,Worker), RuntimeEnabled=AIPromptAPI ] -interface AIAssistantCapabilities { +interface AILanguageModelCapabilities { [Measure] readonly attribute AICapabilityAvailability available; + [Measure] + AICapabilityAvailability languageAvailable(DOMString languageTag); // Always null if available === "no" [Measure] @@ -28,19 +30,19 @@ interface AIAssistantCapabilities { Exposed=(Window,Worker), RuntimeEnabled=AIPromptAPI ] -interface AIAssistantFactory { +interface AILanguageModelFactory { [ Measure, CallWith=ScriptState, RaisesException ] - Promise capabilities(); + Promise capabilities(); [ Measure, CallWith=ScriptState, RaisesException ] - Promise create( - optional AIAssistantCreateOptions options = {} + Promise create( + optional AILanguageModelCreateOptions options = {} ); }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_summarizer_factory.idl b/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_summarizer_factory.idl index a54c6a10f..1dc705f43 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_summarizer_factory.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/ai/ai_summarizer_factory.idl @@ -15,7 +15,7 @@ interface AISummarizerCapabilities { AICapabilityAvailability supportsFormat(AISummarizerFormat format); AICapabilityAvailability supportsLength(AISummarizerLength length); - AICapabilityAvailability supportsInputLanguage(DOMString languageTag); + AICapabilityAvailability languageAvailable(DOMString languageTag); }; enum AISummarizerType { "tl;dr", "key-points", "teaser", "headline" }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/ai/on_device_translation/ai_language_detector_capabilities.idl b/tools/under-control/src/third_party/blink/renderer/modules/ai/on_device_translation/ai_language_detector_capabilities.idl index 0dca63124..f29c7cf1d 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/ai/on_device_translation/ai_language_detector_capabilities.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/ai/on_device_translation/ai_language_detector_capabilities.idl @@ -9,5 +9,5 @@ interface AILanguageDetectorCapabilities { ] readonly attribute AICapabilityAvailability available; - AICapabilityAvailability canDetect(DOMString languageTag); + AICapabilityAvailability languageAvailable(DOMString languageTag); }; \ No newline at end of file diff --git a/tools/under-control/src/third_party/blink/renderer/modules/awc/additional_windowing_controls.idl b/tools/under-control/src/third_party/blink/renderer/modules/awc/additional_windowing_controls.idl index 1eec920a1..d6c7921da 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/awc/additional_windowing_controls.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/awc/additional_windowing_controls.idl @@ -4,7 +4,7 @@ // Permission-gated access to Additional Windowing Controls (AWC) APIs. // https://w3c.github.io/window-management/ -// https://github.com/ivansandrk/additional-windowing-controls/blob/main/awc-explainer.md +// https://github.com/explainers-by-googlers/additional-windowing-controls/blob/main/README.md [ SecureContext, @@ -26,4 +26,4 @@ [ CallWith=ScriptState, RaisesException, MeasureAs=WindowSetResizable ] Promise setResizable(boolean resizable); -}; \ No newline at end of file +}; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/bluetooth/bluetooth_remote_gatt_characteristic.idl b/tools/under-control/src/third_party/blink/renderer/modules/bluetooth/bluetooth_remote_gatt_characteristic.idl index e76e16900..1fd67a0e0 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/bluetooth/bluetooth_remote_gatt_characteristic.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/bluetooth/bluetooth_remote_gatt_characteristic.idl @@ -17,9 +17,9 @@ [RaisesException, CallWith=ScriptState, MeasureAs=WebBluetoothRemoteCharacteristicGetDescriptor] Promise getDescriptor(BluetoothDescriptorUUID descriptor); [RaisesException, CallWith=ScriptState, MeasureAs=WebBluetoothRemoteCharacteristicGetDescriptors] Promise> getDescriptors(optional BluetoothDescriptorUUID descriptor); [CallWith=ScriptState, RaisesException, MeasureAs=WebBluetoothRemoteCharacteristicReadValue] Promise readValue(); - [CallWith=ScriptState, RaisesException, MeasureAs=WebBluetoothRemoteCharacteristicWriteValue] Promise writeValue(BufferSource value); - [CallWith=ScriptState, RaisesException, MeasureAs=WebBluetoothRemoteCharacteristicWriteValueWithResponse] Promise writeValueWithResponse(BufferSource value); - [CallWith=ScriptState, RaisesException, MeasureAs=WebBluetoothRemoteCharacteristicWriteValueWithoutResponse] Promise writeValueWithoutResponse(BufferSource value); + [CallWith=ScriptState, RaisesException, MeasureAs=WebBluetoothRemoteCharacteristicWriteValue] Promise writeValue([PassAsSpan] BufferSource value); + [CallWith=ScriptState, RaisesException, MeasureAs=WebBluetoothRemoteCharacteristicWriteValueWithResponse] Promise writeValueWithResponse([PassAsSpan] BufferSource value); + [CallWith=ScriptState, RaisesException, MeasureAs=WebBluetoothRemoteCharacteristicWriteValueWithoutResponse] Promise writeValueWithoutResponse([PassAsSpan] BufferSource value); [CallWith=ScriptState, RaisesException, MeasureAs=WebBluetoothRemoteCharacteristicStartNotifications] Promise startNotifications(); [CallWith=ScriptState, RaisesException, MeasureAs=WebBluetoothRemoteCharacteristicStopNotifications] Promise stopNotifications(); diff --git a/tools/under-control/src/third_party/blink/renderer/modules/bluetooth/bluetooth_remote_gatt_descriptor.idl b/tools/under-control/src/third_party/blink/renderer/modules/bluetooth/bluetooth_remote_gatt_descriptor.idl index cab89fa82..bc6b07208 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/bluetooth/bluetooth_remote_gatt_descriptor.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/bluetooth/bluetooth_remote_gatt_descriptor.idl @@ -15,5 +15,5 @@ readonly attribute UUID uuid; readonly attribute DataView? value; [CallWith=ScriptState, RaisesException, MeasureAs=WebBluetoothRemoteDescriptorReadValue] Promise readValue(); - [CallWith=ScriptState, RaisesException, MeasureAs=WebBluetoothRemoteDescriptorWriteValue] Promise writeValue(BufferSource value); + [CallWith=ScriptState, RaisesException, MeasureAs=WebBluetoothRemoteDescriptorWriteValue] Promise writeValue([PassAsSpan] BufferSource value); }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/cache_storage/cache.idl b/tools/under-control/src/third_party/blink/renderer/modules/cache_storage/cache.idl index 9ad1f6f70..9e0ada25d 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/cache_storage/cache.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/cache_storage/cache.idl @@ -9,7 +9,7 @@ Exposed=(Window,Worker) ] interface Cache { [CallWith=ScriptState, MeasureAs=CacheStorageRead, RaisesException] - Promise match(RequestInfo request, optional CacheQueryOptions options = {}); + Promise<(Response or undefined)> match(RequestInfo request, optional CacheQueryOptions options = {}); [CallWith=ScriptState, MeasureAs=CacheStorageRead, RaisesException] Promise> matchAll(optional RequestInfo request, diff --git a/tools/under-control/src/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.idl b/tools/under-control/src/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.idl index c8afb078b..0687fa7a8 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.idl @@ -110,7 +110,7 @@ interface CanvasRenderingContext2D { [HighEntropy, NoAllocDirectCall] void beginPath(); [HighEntropy] void fill(optional CanvasFillRule winding); [HighEntropy] void fill(Path2D path, optional CanvasFillRule winding); - [HighEntropy] void stroke(); + [HighEntropy, NoAllocDirectCall] void stroke(); [HighEntropy] void stroke(Path2D path); // Focus rings void drawFocusIfNeeded(Element element); @@ -127,6 +127,7 @@ interface CanvasRenderingContext2D { [HighEntropy] void fillText(DOMString text, unrestricted double x, unrestricted double y, optional unrestricted double maxWidth); [HighEntropy] void strokeText(DOMString text, unrestricted double x, unrestricted double y, optional unrestricted double maxWidth); [HighEntropy] TextMetrics measureText(DOMString text); + [RuntimeEnabled=ExtendedTextMetrics] void fillTextCluster(TextCluster textCluster, double x, double y); // drawing images [RaisesException] void drawImage(CanvasImageSource image, unrestricted double x, unrestricted double y); 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 95017bc0b..d9ff5f7ea 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 @@ -76,6 +76,7 @@ [HighEntropy] void fillText(DOMString text, unrestricted double x, unrestricted double y, optional unrestricted double maxWidth); [HighEntropy] void strokeText(DOMString text, unrestricted double x, unrestricted double y, optional unrestricted double maxWidth); [HighEntropy, MeasureAs=OffscreenCanvasMeasureText] TextMetrics measureText(DOMString text); + [RuntimeEnabled=ExtendedTextMetrics] void fillTextCluster(TextCluster textCluster, double x, double y); // drawing images [RaisesException] void drawImage(CanvasImageSource image, unrestricted double x, unrestricted double y); diff --git a/tools/under-control/src/third_party/blink/renderer/modules/clipboard/clipboard_item.idl b/tools/under-control/src/third_party/blink/renderer/modules/clipboard/clipboard_item.idl index b44083d4b..dce2d5b9d 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/clipboard/clipboard_item.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/clipboard/clipboard_item.idl @@ -3,12 +3,13 @@ // found in the LICENSE file. // https://w3c.github.io/clipboard-apis/#clipboard-interface +typedef Promise<(DOMString or Blob)> ClipboardItemData; [ SecureContext, Exposed=Window ] interface ClipboardItem { - [RaisesException] constructor(record> items); + [RaisesException] constructor(record items); readonly attribute FrozenArray types; [ diff --git a/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/authentication_extensions_client_inputs.idl b/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/authentication_extensions_client_inputs.idl index a010cfe7f..5ab307819 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/authentication_extensions_client_inputs.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/authentication_extensions_client_inputs.idl @@ -4,6 +4,10 @@ // https://w3c.github.io/webauthn/#dictdef-authenticationextensionsclientinputs +// LINT.IfChange +// When adding or modifying extensions here, ensure that the +// `OnGetClientCapabilitiesComplete` function in +// `public_key_credential.cc` is updated accordingly. dictionary AuthenticationExtensionsClientInputs { // https://w3c.github.io/webauthn/#sctn-appid-extension USVString appid; @@ -50,3 +54,4 @@ dictionary AuthenticationExtensionsClientInputs { // https://w3c.github.io/webauthn/#prf-extension [RuntimeEnabled=WebAuthenticationPRF] AuthenticationExtensionsPRFInputs prf; }; +// LINT.ThenChange(//third_party/blink/renderer/modules/credentialmanagement/public_key_credential.cc) diff --git a/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/identity_provider.idl b/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/identity_provider.idl index 5476af579..c7e9d1fe3 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/identity_provider.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/identity_provider.idl @@ -13,6 +13,10 @@ dictionary IdentityResolveOptions { USVString accountId; }; +dictionary IdentityProviderToken { + required USVString token; +}; + // https://fedidcg.github.io/FedCM/#identityprovider [ Exposed=Window, @@ -34,5 +38,5 @@ dictionary IdentityResolveOptions { // Allows an IdP to return a token to the RP from the content area, as opposed to // over HTTP with the id_assertion_endpoint. [RuntimeEnabled=FedCmAuthz, CallWith=ScriptState] - static Promise resolve(USVString token, optional IdentityResolveOptions options = {}); + static Promise resolve((USVString or IdentityProviderToken) token, optional IdentityResolveOptions options = {}); }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/identity_provider_config.idl b/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/identity_provider_config.idl index 507f9950c..0aeedb16f 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/identity_provider_config.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/identity_provider_config.idl @@ -17,10 +17,14 @@ dictionary IdentityProviderConfig { [RuntimeEnabled=FedCmIdPRegistration] DOMString type; }; +dictionary IdentityProviderField { + required USVString name; +}; + dictionary IdentityProviderRequestOptions : IdentityProviderConfig { USVString nonce; DOMString loginHint; [RuntimeEnabled=FedCmDomainHint] DOMString domainHint; - [RuntimeEnabled=FedCmAuthz] sequence fields; - [RuntimeEnabled=FedCmAuthz] record params; + [RuntimeEnabled=FedCmAuthz] sequence<(USVString or IdentityProviderField)> fields; + [RuntimeEnabled=FedCmAuthz] any params; }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/file_system_access/file_system_sync_access_handle.idl b/tools/under-control/src/third_party/blink/renderer/modules/file_system_access/file_system_sync_access_handle.idl index e9ed3e2b5..48e051730 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/file_system_access/file_system_sync_access_handle.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/file_system_access/file_system_sync_access_handle.idl @@ -25,6 +25,6 @@ optional FileSystemReadWriteOptions options = {}); [ RaisesException, Measure - ] unsigned long long write(AllowSharedBufferSource buffer, + ] unsigned long long write([PassAsSpan] AllowSharedBufferSource buffer, optional FileSystemReadWriteOptions options = {}); }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/gamepad/gamepad_axis_event.idl b/tools/under-control/src/third_party/blink/renderer/modules/gamepad/gamepad_axis_event.idl deleted file mode 100755 index f7d16c27a..000000000 --- a/tools/under-control/src/third_party/blink/renderer/modules/gamepad/gamepad_axis_event.idl +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2018 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Non-standard gamepad axis event. -// https://docs.google.com/document/d/1rnQ1gU0iwPXbO7OvKS6KO9gyfpSdSQvKhK9_OkzUuKE - -[ - Exposed=Window, - RuntimeEnabled=GamepadButtonAxisEvents -] interface GamepadAxisEvent : GamepadEvent { - constructor(DOMString type, optional GamepadAxisEventInit eventInitDict = {}); - [ImplementedAs=getAxis] readonly attribute unsigned long axis; - [ImplementedAs=getValue] readonly attribute double value; -}; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/gamepad/gamepad_axis_event_init.idl b/tools/under-control/src/third_party/blink/renderer/modules/gamepad/gamepad_axis_event_init.idl deleted file mode 100755 index 28bbd88f7..000000000 --- a/tools/under-control/src/third_party/blink/renderer/modules/gamepad/gamepad_axis_event_init.idl +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2018 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Initialization dictionary type for GamepadAxisEvent. -// https://docs.google.com/document/d/1rnQ1gU0iwPXbO7OvKS6KO9gyfpSdSQvKhK9_OkzUuKE - -dictionary GamepadAxisEventInit : GamepadEventInit { - unsigned long axis; - double value; -}; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/gamepad/gamepad_button_event.idl b/tools/under-control/src/third_party/blink/renderer/modules/gamepad/gamepad_button_event.idl deleted file mode 100755 index 03548a4f0..000000000 --- a/tools/under-control/src/third_party/blink/renderer/modules/gamepad/gamepad_button_event.idl +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2018 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Non-standard gamepad button event. -// https://docs.google.com/document/d/1rnQ1gU0iwPXbO7OvKS6KO9gyfpSdSQvKhK9_OkzUuKE - -[ - Exposed=Window, - RuntimeEnabled=GamepadButtonAxisEvents -] interface GamepadButtonEvent : GamepadEvent { - constructor(DOMString type, optional GamepadButtonEventInit eventInitDict = {}); - [ImplementedAs=getButton] readonly attribute unsigned long button; - [ImplementedAs=getValue] readonly attribute double value; -}; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/gamepad/gamepad_button_event_init.idl b/tools/under-control/src/third_party/blink/renderer/modules/gamepad/gamepad_button_event_init.idl deleted file mode 100755 index 870f1bb34..000000000 --- a/tools/under-control/src/third_party/blink/renderer/modules/gamepad/gamepad_button_event_init.idl +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2018 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Initialization dictionary type for GamepadButtonEvent. -// https://docs.google.com/document/d/1rnQ1gU0iwPXbO7OvKS6KO9gyfpSdSQvKhK9_OkzUuKE - -dictionary GamepadButtonEventInit : GamepadEventInit { - unsigned long button; - double value; -}; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/indexeddb/idb_record.idl b/tools/under-control/src/third_party/blink/renderer/modules/indexeddb/idb_record.idl new file mode 100755 index 000000000..bb1ba0231 --- /dev/null +++ b/tools/under-control/src/third_party/blink/renderer/modules/indexeddb/idb_record.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. + +[Exposed=(Window,Worker), RuntimeEnabled=IndexedDbGetAllRecords] +interface IDBRecord { + [CachedAttribute=isKeyDirty, CallWith=ScriptState] + readonly attribute any key; + + [CachedAttribute=isPrimaryKeyDirty, CallWith=ScriptState] + readonly attribute any primaryKey; + + [CachedAttribute=isValueDirty, CallWith=ScriptState] + readonly attribute any value; +}; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/lock_screen/dom_window_lock_screen.idl b/tools/under-control/src/third_party/blink/renderer/modules/lock_screen/dom_window_lock_screen.idl deleted file mode 100755 index a659bc78f..000000000 --- a/tools/under-control/src/third_party/blink/renderer/modules/lock_screen/dom_window_lock_screen.idl +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2021 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// https://github.com/WICG/lock-screen/blob/main/README.md -[ - SecureContext, - ImplementedAs=LockScreenData, - RuntimeEnabled=WebAppsLockScreen -] partial interface Window { - [CallWith=ScriptState] - Promise getLockScreenData(); -}; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/lock_screen/lock_screen_data.idl b/tools/under-control/src/third_party/blink/renderer/modules/lock_screen/lock_screen_data.idl deleted file mode 100755 index fe3f8236e..000000000 --- a/tools/under-control/src/third_party/blink/renderer/modules/lock_screen/lock_screen_data.idl +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2021 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// https://github.com/WICG/lock-screen/blob/main/README.md -[ - SecureContext, - RuntimeEnabled=WebAppsLockScreen -] interface LockScreenData { - [CallWith=ScriptState] - Promise> getKeys(); - - [CallWith=ScriptState] - // TODO (crbug.com/1293259): Use `(DOMString or undefined)` instead of `any` - // when supported by the Blink IDL compiler. - Promise getData(DOMString key); - - [CallWith=ScriptState] - Promise setData(DOMString key, DOMString data); - - [CallWith=ScriptState] - Promise deleteData(DOMString key); -}; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/locks/lock.idl b/tools/under-control/src/third_party/blink/renderer/modules/locks/lock.idl index 2edd4c10d..20d005d6d 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/locks/lock.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/locks/lock.idl @@ -5,7 +5,7 @@ // https://w3c.github.io/web-locks/#lock [ SecureContext, - Exposed=(Window,Worker) + Exposed(Window StableBlinkFeatures, Worker StableBlinkFeatures, SharedStorageWorklet SharedStorageWebLocks) ] interface Lock { readonly attribute DOMString name; readonly attribute LockMode mode; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/locks/lock_manager.idl b/tools/under-control/src/third_party/blink/renderer/modules/locks/lock_manager.idl index c85058ae5..b2aed99d9 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/locks/lock_manager.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/locks/lock_manager.idl @@ -8,7 +8,7 @@ callback LockGrantedCallback = any (Lock? lock); // https://w3c.github.io/web-locks/#lockmanager [ SecureContext, - Exposed=(Window,Worker) + Exposed(Window StableBlinkFeatures, Worker StableBlinkFeatures, SharedStorageWorklet SharedStorageWebLocks) ] interface LockManager { [CallWith=ScriptState, RaisesException, Measure] Promise request( DOMString name, diff --git a/tools/under-control/src/third_party/blink/renderer/modules/locks/shared_storage_worklet_navigator_locks.idl b/tools/under-control/src/third_party/blink/renderer/modules/locks/shared_storage_worklet_navigator_locks.idl new file mode 100755 index 000000000..d79be9a95 --- /dev/null +++ b/tools/under-control/src/third_party/blink/renderer/modules/locks/shared_storage_worklet_navigator_locks.idl @@ -0,0 +1,14 @@ +// 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/web-locks/#navigatorlocks + +[ + SecureContext, + RuntimeEnabled=SharedStorageWebLocks, + Exposed=SharedStorageWorklet, + ImplementedAs=LockManager +] partial interface SharedStorageWorkletNavigator { + readonly attribute LockManager locks; +}; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/mediastream/media_devices.idl b/tools/under-control/src/third_party/blink/renderer/modules/mediastream/media_devices.idl index 2580e8aa9..9e86a9040 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/mediastream/media_devices.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/mediastream/media_devices.idl @@ -35,6 +35,13 @@ ] Promise> getAllScreensMedia(); + [ + RuntimeEnabled = SelectAudioOutput, + CallWith = ScriptState, RaisesException, + MeasureAs = SelectAudioOutput + ] Promise + selectAudioOutput(optional AudioOutputOptions options = {}); + // https://w3c.github.io/mediacapture-handle/identity/ // Allows an application APP to opt-in to exposing certain information to // applications which end up capturing APP. diff --git a/tools/under-control/src/third_party/blink/renderer/modules/mediastream/media_stream_constraints.idl b/tools/under-control/src/third_party/blink/renderer/modules/mediastream/media_stream_constraints.idl index c475a6fb1..8a4780d6f 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/mediastream/media_stream_constraints.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/mediastream/media_stream_constraints.idl @@ -16,8 +16,6 @@ typedef DisplayMediaIncludeOrExclude MonitorTypeSurfacesEnum; dictionary UserMediaStreamConstraints { (boolean or MediaTrackConstraints) video = false; (boolean or MediaTrackConstraints) audio = false; - // TODO(crbug.com/1382520): Remove the controller. - [RuntimeEnabled = CaptureController] CaptureController controller; }; // https://www.w3.org/TR/screen-capture/#dom-displaymediastreamoptions @@ -54,3 +52,7 @@ dictionary MediaStreamConstraints { SurfaceSwitchingPreferenceEnum surfaceSwitching; MonitorTypeSurfacesEnum monitorTypeSurfaces; }; + +dictionary AudioOutputOptions { + DOMString deviceId = ""; +}; 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 0a877fdc4..f25341438 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 @@ -302,29 +302,17 @@ typedef record MLNamedTensors; RaisesException ] Promise createTensor(MLTensorDescriptor descriptor); - // TODO(crbug.com/328105506): enable partial MLTensor reads/writes. - // TODO(crbug.com/40278771): consider moving arguments into a dictonary - // per W3C recommendations: - // https://w3ctag.github.io/design-principles/#prefer-dictionaries [ RuntimeEnabled=MachineLearningNeuralNetwork, CallWith=ScriptState, RaisesException - ] void writeTensor( - MLTensor dstTensor, - [AllowShared] ArrayBufferView srcData, - optional MLSize64 srcElementOffset = 0, - optional MLSize64 srcElementSize); + ] void writeTensor(MLTensor dstTensor, [AllowShared] ArrayBufferView srcData); [ RuntimeEnabled=MachineLearningNeuralNetwork, CallWith=ScriptState, RaisesException - ] void writeTensor( - MLTensor dstTensor, - ArrayBuffer srcData, - optional MLSize64 srcByteOffset = 0, - optional MLSize64 srcByteSize); + ] void writeTensor(MLTensor dstTensor, [AllowShared] ArrayBuffer srcData); [ RuntimeEnabled=MachineLearningNeuralNetwork, @@ -349,7 +337,6 @@ typedef record MLNamedTensors; MLTensor sourceTensor, [AllowShared] ArrayBuffer destinationData); - // TODO(crbug.com/1273291): enable partial buffer dispatches. [ RuntimeEnabled=MachineLearningNeuralNetwork, CallWith=ScriptState, diff --git a/tools/under-control/src/third_party/blink/renderer/modules/ml/ml_context_options.idl b/tools/under-control/src/third_party/blink/renderer/modules/ml/ml_context_options.idl index 08cd3d15a..85f706433 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/ml/ml_context_options.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/ml/ml_context_options.idl @@ -28,12 +28,4 @@ dictionary MLContextOptions { // Preference as related to power consumption. MLPowerPreference powerPreference = "default"; - - // Number of thread to use. - // "0" means the backend can determine it automatically. - // - // TODO(crbug.com/338162119): Figure out why the TFLite XNNPACK delegate - // choosing its own thread count is not resulting in good performance, then - // remove this. - unsigned long numThreads = 0; }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/ml/webnn/ml_graph_builder.idl b/tools/under-control/src/third_party/blink/renderer/modules/ml/webnn/ml_graph_builder.idl index 31ae09aae..d14b0a167 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 @@ -201,6 +201,10 @@ dictionary MLScatterOptions : MLOperatorOptions { [EnforceRange] unsigned long axis = 0; }; +dictionary MLSliceOptions : MLOperatorOptions { + [EnforceRange] sequence<[EnforceRange] unsigned long> strides; +}; + dictionary MLTransposeOptions : MLOperatorOptions { sequence<[EnforceRange] unsigned long> permutation; }; @@ -368,7 +372,10 @@ dictionary MLTriangularOptions : MLOperatorOptions { [RaisesException] MLOperand sigmoid(MLOperand input, optional MLOperatorOptions options = {}); - [RaisesException] MLOperand slice(MLOperand input, sequence<[EnforceRange] unsigned long> starts, sequence<[EnforceRange] unsigned long> sizes, optional MLOperatorOptions options = {}); + [RaisesException] MLOperand slice(MLOperand input, + sequence<[EnforceRange] unsigned long> starts, + sequence<[EnforceRange] unsigned long> sizes, + optional MLSliceOptions options = {}); // TODO: crbug.com/342919187 - Remove the deprecated version once ort-web 1.18.* supporting softmax(input, aixs) is released. [RaisesException] MLOperand softmax(MLOperand input, optional MLOperatorOptions options = {}); diff --git a/tools/under-control/src/third_party/blink/renderer/modules/ml/webnn/ml_operand.idl b/tools/under-control/src/third_party/blink/renderer/modules/ml/webnn/ml_operand.idl index 5a91aae62..9c14ca8c0 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/ml/webnn/ml_operand.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/ml/webnn/ml_operand.idl @@ -8,6 +8,6 @@ RuntimeEnabled=MachineLearningNeuralNetwork, Exposed=(Window, DedicatedWorker) ] interface MLOperand { - MLOperandDataType dataType(); - sequence shape(); + readonly attribute MLOperandDataType dataType; + readonly attribute FrozenArray shape; }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/ml/webnn/ml_operand_descriptor.idl b/tools/under-control/src/third_party/blink/renderer/modules/ml/webnn/ml_operand_descriptor.idl index f77ad14c2..44b7aa6d9 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/ml/webnn/ml_operand_descriptor.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/ml/webnn/ml_operand_descriptor.idl @@ -12,14 +12,12 @@ enum MLOperandDataType { "int64", "uint64", "int8", - "uint8" + "uint8", + "int4", + "uint4" }; dictionary MLOperandDescriptor { required MLOperandDataType dataType; - - // TODO(crbug.com/365813262): Remove this field in favor of `shape`. - sequence<[EnforceRange] unsigned long> dimensions; - // TODO(crbug.com/365813262): Make this field required and remove its default. - sequence<[EnforceRange] unsigned long> shape = []; + required sequence<[EnforceRange] unsigned long> shape; }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/ml/webnn/ml_tensor.idl b/tools/under-control/src/third_party/blink/renderer/modules/ml/webnn/ml_tensor.idl index 3f6273473..ef652c127 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/ml/webnn/ml_tensor.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/ml/webnn/ml_tensor.idl @@ -10,6 +10,11 @@ ] interface MLTensor { readonly attribute MLOperandDataType dataType; readonly attribute FrozenArray shape; + readonly attribute boolean importableToWebGPU; + readonly attribute boolean readable; + readonly attribute boolean writable; + +// TODO(crbug.com/343638938): Remove this after the M132 branch cut. readonly attribute MLTensorUsageFlags usage; void destroy(); diff --git a/tools/under-control/src/third_party/blink/renderer/modules/ml/webnn/ml_tensor_descriptor.idl b/tools/under-control/src/third_party/blink/renderer/modules/ml/webnn/ml_tensor_descriptor.idl index 04ecdcd8b..71e7bbed8 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/ml/webnn/ml_tensor_descriptor.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/ml/webnn/ml_tensor_descriptor.idl @@ -4,8 +4,11 @@ // https://www.w3.org/TR/webnn/#api-mltensor -typedef [EnforceRange] unsigned long long MLSize64; - dictionary MLTensorDescriptor : MLOperandDescriptor { + boolean importableToWebGPU = false; + boolean readable = false; + boolean writable = false; + + // TODO(crbug.com/343638938): Remove this after the M132 branch cut. MLTensorUsageFlags usage; }; \ No newline at end of file diff --git a/tools/under-control/src/third_party/blink/renderer/modules/ml/webnn/ml_tensor_usage.idl b/tools/under-control/src/third_party/blink/renderer/modules/ml/webnn/ml_tensor_usage.idl index 049d28baf..03f7c49a4 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/ml/webnn/ml_tensor_usage.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/ml/webnn/ml_tensor_usage.idl @@ -4,6 +4,8 @@ // https://www.w3.org/TR/webnn/#api-mltensor +// TODO(crbug.com/343638938): Remove this file after the M132 branch cut. + typedef unsigned long MLFlagsConstant; typedef [EnforceRange] unsigned long MLTensorUsageFlags; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/on_device_translation/language_translator.idl b/tools/under-control/src/third_party/blink/renderer/modules/on_device_translation/language_translator.idl index f44726764..b03829af9 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/on_device_translation/language_translator.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/on_device_translation/language_translator.idl @@ -4,7 +4,7 @@ [ RuntimeEnabled=TranslationAPI, - Exposed=(Window,Worker) + Exposed=Window ] interface LanguageTranslator { [ @@ -13,4 +13,6 @@ interface LanguageTranslator { RaisesException ] Promise translate(DOMString input); + + undefined destroy(); }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/on_device_translation/translation.idl b/tools/under-control/src/third_party/blink/renderer/modules/on_device_translation/translation.idl index a27472ece..3f905edfb 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/on_device_translation/translation.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/on_device_translation/translation.idl @@ -15,6 +15,7 @@ enum TranslationAvailability { interface Translation { [ RuntimeEnabled=TranslationAPI, + Exposed=Window, Measure, CallWith=ScriptState, RaisesException @@ -24,6 +25,7 @@ interface Translation { ); [ RuntimeEnabled=TranslationAPI, + Exposed=Window, Measure, CallWith=ScriptState, RaisesException diff --git a/tools/under-control/src/third_party/blink/renderer/modules/payments/payment_manager.idl b/tools/under-control/src/third_party/blink/renderer/modules/payments/payment_manager.idl index a1ca7b940..84df921ac 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/payments/payment_manager.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/payments/payment_manager.idl @@ -17,7 +17,7 @@ enum PaymentDelegation { SecureContext ] interface PaymentManager { [SameObject, DeprecateAs=PaymentInstruments, RuntimeEnabled=PaymentInstruments] readonly attribute PaymentInstruments instruments; - attribute DOMString userHint; + [Measure] attribute DOMString userHint; // The implementation resolves with boolean, even though the spec says undefined. [CallWith=ScriptState, PromiseIDLTypeMismatch, RaisesException] Promise enableDelegations(sequence delegations); }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_encoded_audio_frame.idl b/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_encoded_audio_frame.idl index 9520a1eae..61941fe03 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_encoded_audio_frame.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_encoded_audio_frame.idl @@ -10,7 +10,7 @@ ] interface RTCEncodedAudioFrame { [Measure, RaisesException] constructor (RTCEncodedAudioFrame originalFrame, optional RTCEncodedAudioFrameOptions options = {}); - readonly attribute unsigned long timestamp; // RTP timestamp. + [Measure] readonly attribute unsigned long timestamp; // RTP timestamp. [CallWith=ExecutionContext] attribute ArrayBuffer data; RTCEncodedAudioFrameMetadata getMetadata(); [CallWith=ExecutionContext] stringifier; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_encoded_video_frame.idl b/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_encoded_video_frame.idl index 3d8f7b804..66c61541d 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_encoded_video_frame.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_encoded_video_frame.idl @@ -17,7 +17,7 @@ enum RTCEncodedVideoFrameType { [Measure, RaisesException] constructor (RTCEncodedVideoFrame originalFrame, optional RTCEncodedVideoFrameOptions options = {}); readonly attribute RTCEncodedVideoFrameType type; - readonly attribute unsigned long timestamp; // RTP timestamp. + [Measure] readonly attribute unsigned long timestamp; // RTP timestamp. [CallWith=ExecutionContext] attribute ArrayBuffer data; RTCEncodedVideoFrameMetadata getMetadata(); [RuntimeEnabled=RTCEncodedFrameSetMetadata, Measure, RaisesException] diff --git a/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_stats_report.idl b/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_stats_report.idl index 4fb7fd700..571ff59f1 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_stats_report.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_stats_report.idl @@ -126,6 +126,9 @@ dictionary RTCInboundRtpStreamStats : RTCReceivedRtpStreamStats { unsigned long long retransmittedPacketsReceived; unsigned long long retransmittedBytesReceived; unsigned long rtxSsrc; + double totalCorruptionProbability; + double totalSquaredCorruptionProbability; + unsigned long long corruptionMeasurements; }; // https://w3c.github.io/webrtc-stats/#remoteinboundrtpstats-dict* diff --git a/tools/under-control/src/third_party/blink/renderer/modules/permissions/permission_status.idl b/tools/under-control/src/third_party/blink/renderer/modules/permissions/permission_status.idl index 8b67d3f47..12783e97b 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/permissions/permission_status.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/permissions/permission_status.idl @@ -5,12 +5,6 @@ // Specification at: // https://w3c.github.io/permissions/ -enum PermissionState { - "granted", - "denied", - "prompt" -}; - [ ActiveScriptWrappable, Exposed=(Window,Worker), diff --git a/tools/under-control/src/third_party/blink/renderer/modules/push_messaging/push_message_data.idl b/tools/under-control/src/third_party/blink/renderer/modules/push_messaging/push_message_data.idl index 723926b26..643d7f902 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/push_messaging/push_message_data.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/push_messaging/push_message_data.idl @@ -9,6 +9,7 @@ ] interface PushMessageData { ArrayBuffer arrayBuffer(); Blob blob(); - [CallWith=ScriptState, RaisesException] any json(); + [RuntimeEnabled=PushMessageDataBytes] Uint8Array bytes(); + [CallWith=ScriptState] any json(); USVString text(); }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/quota/storage_manager.idl b/tools/under-control/src/third_party/blink/renderer/modules/quota/storage_manager.idl index 2d99bb46d..11ebb9c2f 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/quota/storage_manager.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/quota/storage_manager.idl @@ -7,10 +7,9 @@ [ SecureContext, Exposed=(Window,Worker) -] interface StorageManager : EventTarget { +] interface StorageManager { [CallWith=ScriptState, MeasureAs=DurableStoragePersisted, RaisesException] Promise persisted(); [Exposed=Window, CallWith=ScriptState, MeasureAs=DurableStoragePersist, RaisesException] Promise persist(); [CallWith=ScriptState, MeasureAs=DurableStorageEstimate, RaisesException] Promise estimate(); - [RuntimeEnabled=QuotaChange] attribute EventHandler onquotachange; -}; \ No newline at end of file +}; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/shared_storage/shared_storage_run_operation_method_options.idl b/tools/under-control/src/third_party/blink/renderer/modules/shared_storage/shared_storage_run_operation_method_options.idl index c2196d1ba..ffc0ea458 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/shared_storage/shared_storage_run_operation_method_options.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/shared_storage/shared_storage_run_operation_method_options.idl @@ -3,4 +3,5 @@ dictionary SharedStorageRunOperationMethodOptions { boolean resolveToConfig = false; boolean keepAlive = false; SharedStoragePrivateAggregationConfig privateAggregationConfig; + DOMString savedQuery = ""; }; 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 9369cd2f9..c5315b49a 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 @@ -27,6 +27,22 @@ interface SharedStorageWorkletGlobalScope : WorkletGlobalScope { RaisesException ] readonly attribute Crypto crypto; + + [ + RuntimeEnabled=InterestGroupsInSharedStorageWorklet, + CallWith=ScriptState, + RaisesException + ] Promise> interestGroups(); + + [ + // This avoids naming conflict with the overloaded + // WorkerOrWorkletGlobalScope::navigator() method. + ImplementedAs=Navigator, + RuntimeEnabled=SharedStorageWebLocks, + CallWith=ScriptState, + RaisesException + ] + readonly attribute SharedStorageWorkletNavigator navigator; }; callback RunFunctionForSharedStorageSelectURLOperation = diff --git a/tools/under-control/src/third_party/blink/renderer/modules/shared_storage/shared_storage_worklet_navigator.idl b/tools/under-control/src/third_party/blink/renderer/modules/shared_storage/shared_storage_worklet_navigator.idl new file mode 100755 index 000000000..c663deab9 --- /dev/null +++ b/tools/under-control/src/third_party/blink/renderer/modules/shared_storage/shared_storage_worklet_navigator.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. + +[ + RuntimeEnabled=SharedStorageWebLocks, + Exposed=SharedStorageWorklet, + ImplementedAs=SharedStorageWorkletNavigator +] interface SharedStorageWorkletNavigator {}; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/web_install/navigator_web_install.idl b/tools/under-control/src/third_party/blink/renderer/modules/web_install/navigator_web_install.idl index c18e3ace9..96cb2244e 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/web_install/navigator_web_install.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/web_install/navigator_web_install.idl @@ -8,6 +8,6 @@ RuntimeEnabled=WebAppInstallation, ImplementedAs=NavigatorWebInstall ] partial interface Navigator { - [CallWith=ScriptState, RaisesException] Promise install(USVString manifest_id); + [CallWith=ScriptState, RaisesException] Promise install(); [CallWith=ScriptState, RaisesException] Promise install(USVString manifest_id, USVString install_url); }; \ No newline at end of file diff --git a/tools/under-control/src/third_party/blink/renderer/modules/webaudio/base_audio_context.idl b/tools/under-control/src/third_party/blink/renderer/modules/webaudio/base_audio_context.idl index 4fd219184..fa68a8b97 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/webaudio/base_audio_context.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/webaudio/base_audio_context.idl @@ -6,7 +6,8 @@ enum AudioContextState { "suspended", "running", - "closed" + "closed", + "interrupted" }; // https://webaudio.github.io/web-audio-api/#BaseAudioContext diff --git a/tools/under-control/src/third_party/blink/renderer/modules/webcodecs/media_effect_info.idl b/tools/under-control/src/third_party/blink/renderer/modules/webcodecs/media_effect_info.idl new file mode 100755 index 000000000..9463cd3dd --- /dev/null +++ b/tools/under-control/src/third_party/blink/renderer/modules/webcodecs/media_effect_info.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://github.com/markafoltz/camera-effects + +dictionary MediaEffectInfo { + boolean enabled; +}; + +dictionary BackgroundBlur : MediaEffectInfo {}; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/webcodecs/video_frame.idl b/tools/under-control/src/third_party/blink/renderer/modules/webcodecs/video_frame.idl index 9c8d03956..f014f4772 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/webcodecs/video_frame.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/webcodecs/video_frame.idl @@ -49,6 +49,12 @@ typedef ([AllowShared] ArrayBuffer or [AllowShared] ArrayBufferView) AllowShared // Color space of the data produced by copyTo(). readonly attribute VideoColorSpace colorSpace; + // The VideoFrameMetadata associated with this frame. Possible members are + // recorded in https://www.w3.org/TR/webcodecs-video-frame-metadata-registry/. + // By design, all VideoFrameMetadata properties are serializable. + [RaisesException, RuntimeEnabled="VideoFrameMetadataBackgroundBlur"] + VideoFrameMetadata metadata(); + // Returns the minimum size (in bytes) of a buffer that copyTo() could // copy this frame into with the given options. [RaisesException] unsigned long allocationSize( diff --git a/tools/under-control/src/third_party/blink/renderer/modules/webcodecs/video_frame_buffer_init.idl b/tools/under-control/src/third_party/blink/renderer/modules/webcodecs/video_frame_buffer_init.idl index 890c4f97c..5b6c0df21 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/webcodecs/video_frame_buffer_init.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/webcodecs/video_frame_buffer_init.idl @@ -18,6 +18,9 @@ dictionary VideoFrameBufferInit { DOMRectInit visibleRect; + [RuntimeEnabled=WebCodecsOrientation] double rotation = 0; + [RuntimeEnabled=WebCodecsOrientation] boolean flip = false; + [EnforceRange] unsigned long displayWidth; [EnforceRange] unsigned long displayHeight; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/webcodecs/video_frame_init.idl b/tools/under-control/src/third_party/blink/renderer/modules/webcodecs/video_frame_init.idl index 7cb9062be..ce6200589 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/webcodecs/video_frame_init.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/webcodecs/video_frame_init.idl @@ -10,6 +10,8 @@ dictionary VideoFrameInit { [EnforceRange] unsigned long long duration; // microseconds AlphaOption alpha = "keep"; DOMRectInit visibleRect; + [RuntimeEnabled=WebCodecsOrientation] double rotation = 0; + [RuntimeEnabled=WebCodecsOrientation] boolean flip = false; [EnforceRange] unsigned long displayWidth; [EnforceRange] unsigned long displayHeight; }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/webcodecs/video_frame_metadata.idl b/tools/under-control/src/third_party/blink/renderer/modules/webcodecs/video_frame_metadata.idl new file mode 100755 index 000000000..5999a1f67 --- /dev/null +++ b/tools/under-control/src/third_party/blink/renderer/modules/webcodecs/video_frame_metadata.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://github.com/WICG/web-codecs + +dictionary VideoFrameMetadata { + // Possible members are recorded in the VideoFrame Metadata Registry. + [RuntimeEnabled="VideoFrameMetadataBackgroundBlur"] + BackgroundBlur backgroundBlur; +}; 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 5257bb331..dad417ed4 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 @@ -597,7 +597,8 @@ interface mixin WebGLRenderingContextBase { void pixelStorei(GLenum pname, GLint param); void polygonOffset(GLfloat factor, GLfloat units); - void readPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, + [HighEntropy] void readPixels( + GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, [AllowShared, BufferSourceTypeNoSizeLimit] ArrayBufferView? pixels); void renderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); diff --git a/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_device.idl b/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_device.idl index 93bb0e252..5f9f34712 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_device.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_device.idl @@ -10,6 +10,7 @@ ] interface GPUDevice : EventTarget { [SameObject] readonly attribute GPUSupportedFeatures features; [SameObject] readonly attribute GPUSupportedLimits limits; + [RuntimeEnabled=WebGPUDeviceAdapterInfo, SameObject] readonly attribute GPUAdapterInfo adapterInfo; [CallWith=ScriptState] readonly attribute Promise lost; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_request_adapter_options.idl b/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_request_adapter_options.idl index f19414794..5a22d9b29 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_request_adapter_options.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_request_adapter_options.idl @@ -14,5 +14,5 @@ dictionary GPURequestAdapterOptions { GPUPowerPreference powerPreference; boolean forceFallbackAdapter = false; [RuntimeEnabled=WebGPUExperimentalFeatures] boolean compatibilityMode = false; - [RuntimeEnabled=WebXRLayers] boolean xrCompatible = false; + [RuntimeEnabled=WebXRGPUBinding] boolean xrCompatible = false; }; 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 bb1872b84..471859fdb 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_supported_features.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_supported_features.idl @@ -16,6 +16,7 @@ enum GPUFeatureName { "rg11b10ufloat-renderable", "bgra8unorm-storage", "float32-filterable", + "float32-blendable", "clip-distances", "dual-source-blending", @@ -24,6 +25,8 @@ enum GPUFeatureName { "chromium-experimental-subgroups", "chromium-experimental-subgroup-uniform-control-flow", "chromium-experimental-multi-draw-indirect", + "chromium-experimental-unorm16-texture-formats", + "chromium-experimental-snorm16-texture-formats", // Currently subgroups features are under OT. "subgroups", "subgroups-f16", diff --git a/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_texture_descriptor.idl b/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_texture_descriptor.idl index 4bbb2f63b..4fd221fc9 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_texture_descriptor.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_texture_descriptor.idl @@ -127,4 +127,11 @@ enum GPUTextureFormat { "astc-12x10-unorm-srgb", "astc-12x12-unorm", "astc-12x12-unorm-srgb", + /* R/RG/RGBA16 norm texture formats - Non-standard (not currently in the spec) */ + "r16unorm", + "rg16unorm", + "rgba16unorm", + "r16snorm", + "rg16snorm", + "rgba16snorm", }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_texture_view_descriptor.idl b/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_texture_view_descriptor.idl index 215eb2ad5..3fd5dfe68 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_texture_view_descriptor.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_texture_view_descriptor.idl @@ -12,6 +12,7 @@ dictionary GPUTextureViewDescriptor : GPUObjectDescriptorBase { GPUIntegerCoordinate mipLevelCount; GPUIntegerCoordinate baseArrayLayer = 0; GPUIntegerCoordinate arrayLayerCount; + [RuntimeEnabled=WebGPUTextureViewUsage] GPUTextureUsageFlags usage = 0; }; enum GPUTextureViewDimension { diff --git a/tools/under-control/src/third_party/blink/renderer/modules/webusb/usb_device.idl b/tools/under-control/src/third_party/blink/renderer/modules/webusb/usb_device.idl index acc9b5ba8..7e20e7a32 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/webusb/usb_device.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/webusb/usb_device.idl @@ -44,11 +44,11 @@ enum USBTransferStatus { [CallWith=ScriptState, MeasureAs=UsbDeviceReleaseInterface, RaisesException] Promise releaseInterface(octet interfaceNumber); [CallWith=ScriptState, MeasureAs=UsbDeviceSelectAlternateInterface, RaisesException] Promise selectAlternateInterface(octet interfaceNumber, octet alternateSetting); [CallWith=ScriptState, MeasureAs=UsbDeviceControlTransferIn, RaisesException] Promise controlTransferIn(USBControlTransferParameters setup, unsigned short length); - [CallWith=ScriptState, MeasureAs=UsbDeviceControlTransferOut, RaisesException] Promise controlTransferOut(USBControlTransferParameters setup, optional BufferSource data); + [CallWith=ScriptState, MeasureAs=UsbDeviceControlTransferOut, RaisesException] Promise controlTransferOut(USBControlTransferParameters setup, optional [PassAsSpan] BufferSource data); [CallWith=ScriptState, MeasureAs=UsbDeviceClearHalt, RaisesException] Promise clearHalt(USBDirection direction, octet endpointNumber); [CallWith=ScriptState, MeasureAs=UsbDeviceTransferIn, RaisesException] Promise transferIn(octet endpointNumber, unsigned long length); - [CallWith=ScriptState, MeasureAs=UsbDeviceTransferOut, RaisesException] Promise transferOut(octet endpointNumber, BufferSource data); + [CallWith=ScriptState, MeasureAs=UsbDeviceTransferOut, RaisesException] Promise transferOut(octet endpointNumber, [PassAsSpan] BufferSource data); [CallWith=ScriptState, MeasureAs=UsbDeviceIsochronousTransferIn, RaisesException] Promise isochronousTransferIn(octet endpointNumber, sequence packetLengths); - [CallWith=ScriptState, MeasureAs=UsbDeviceIsochronousTransferOut, RaisesException] Promise isochronousTransferOut(octet endpointNumber, BufferSource data, sequence packetLengths); + [CallWith=ScriptState, MeasureAs=UsbDeviceIsochronousTransferOut, RaisesException] Promise isochronousTransferOut(octet endpointNumber, [PassAsSpan] BufferSource data, sequence packetLengths); [CallWith=ScriptState, MeasureAs=UsbDeviceReset, RaisesException] Promise reset(); }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/xr/xr_composition_layer.idl b/tools/under-control/src/third_party/blink/renderer/modules/xr/xr_composition_layer.idl index 5532ee8c2..f50268d73 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/xr/xr_composition_layer.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/xr/xr_composition_layer.idl @@ -15,7 +15,7 @@ enum XRLayerLayout { [ SecureContext, Exposed=Window, - RuntimeEnabled=WebXRLayers + RuntimeEnabled=WebXRLayersCommon ] interface XRCompositionLayer : XRLayer { readonly attribute XRLayerLayout layout; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/xr/xr_gpu_binding.idl b/tools/under-control/src/third_party/blink/renderer/modules/xr/xr_gpu_binding.idl index 2633754a9..7d439e792 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/xr/xr_gpu_binding.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/xr/xr_gpu_binding.idl @@ -12,7 +12,7 @@ dictionary XRGPUProjectionLayerInit { [ SecureContext, Exposed=Window, - RuntimeEnabled=WebXRLayers + RuntimeEnabled=WebXRGPUBinding ] interface XRGPUBinding { [RaisesException] constructor(XRSession session, GPUDevice device); diff --git a/tools/under-control/src/third_party/blink/renderer/modules/xr/xr_gpu_sub_image.idl b/tools/under-control/src/third_party/blink/renderer/modules/xr/xr_gpu_sub_image.idl index 0e14907df..f50df184d 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/xr/xr_gpu_sub_image.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/xr/xr_gpu_sub_image.idl @@ -5,7 +5,7 @@ [ SecureContext, Exposed=Window, - RuntimeEnabled=WebXRLayers + RuntimeEnabled=WebXRGPUBinding ] interface XRGPUSubImage : XRSubImage { [SameObject] readonly attribute GPUTexture colorTexture; [SameObject] readonly attribute GPUTexture? depthStencilTexture; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/xr/xr_projection_layer.idl b/tools/under-control/src/third_party/blink/renderer/modules/xr/xr_projection_layer.idl index 22cb6051b..4161258f3 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/xr/xr_projection_layer.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/xr/xr_projection_layer.idl @@ -6,7 +6,7 @@ [ SecureContext, Exposed=Window, - RuntimeEnabled=WebXRLayers + RuntimeEnabled=WebXRLayersCommon ] interface XRProjectionLayer : XRCompositionLayer { readonly attribute unsigned long textureWidth; readonly attribute unsigned long textureHeight; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/xr/xr_render_state.idl b/tools/under-control/src/third_party/blink/renderer/modules/xr/xr_render_state.idl index c016cb906..59c36be0c 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/xr/xr_render_state.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/xr/xr_render_state.idl @@ -12,5 +12,5 @@ readonly attribute double depthFar; readonly attribute double? inlineVerticalFieldOfView; readonly attribute XRWebGLLayer? baseLayer; - [RuntimeEnabled=WebXRLayers] readonly attribute FrozenArray layers; + [RuntimeEnabled=WebXRLayersCommon] readonly attribute FrozenArray layers; }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/xr/xr_render_state_init.idl b/tools/under-control/src/third_party/blink/renderer/modules/xr/xr_render_state_init.idl index 85805c6a7..6116aa69d 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/xr/xr_render_state_init.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/xr/xr_render_state_init.idl @@ -8,5 +8,5 @@ dictionary XRRenderStateInit { double depthFar; double inlineVerticalFieldOfView; XRWebGLLayer? baseLayer; - [RuntimeEnabled=WebXRLayers] sequence? layers; + [RuntimeEnabled=WebXRLayersCommon] sequence? layers; }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/xr/xr_session_init.idl b/tools/under-control/src/third_party/blink/renderer/modules/xr/xr_session_init.idl index ae4b47627..b8af14a0c 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/xr/xr_session_init.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/xr/xr_session_init.idl @@ -4,8 +4,8 @@ // https://immersive-web.github.io/webxr/#dictdef-xrsessioninit dictionary XRSessionInit { - sequence requiredFeatures; - sequence optionalFeatures; + sequence requiredFeatures; + sequence optionalFeatures; XRDOMOverlayInit domOverlay; [RuntimeEnabled=WebXRImageTracking] sequence trackedImages; XRDepthStateInit depthSensing; 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 298f1e0b9..db7c64eeb 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 @@ -239,20 +239,11 @@ // See https://w3c.github.io/html-aam/#minimum-role. name: "AccessibilityMinRoleTabbable", }, - { - name: "AccessibilityObjectModel", - status: "experimental", - }, { name: "AccessibilityOSLevelBoldText", status: "experimental", public: true, }, - { - name: "AccessibilityPageZoom", - 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): @@ -358,6 +349,10 @@ name: "AllowJavaScriptToResetAutofillState", status: "experimental", }, + { + name: "AllowPreloadingWithCSPMetaTag", + status: "experimental", + }, { name: "AllowURNsInIframes", base_feature: "none", @@ -384,6 +379,12 @@ public: true, status: "experimental", }, + { + name: "AOMAriaRelationshipPropertiesAriaOwns", + public: true, + status: "experimental", + depends_on: ["AOMAriaRelationshipProperties"], + }, { name: "AppTitle", status: "experimental", @@ -391,6 +392,10 @@ origin_trial_os: ["win", "mac", "linux", "chromeos"], base_feature: "WebAppEnableAppTitle", }, + { + name: "AriaActions", + status: "experimental", + }, { name: "AriaNotify", status: "test", @@ -428,6 +433,10 @@ implied_by: ["AttributionReporting", "AttributionReportingCrossAppWeb"], base_feature: "none", }, + { + name: "AudioContextInterruptedState", + status: "test", + }, { name: "AudioContextOnError", status: "stable", @@ -452,7 +461,7 @@ name: "AudioVideoTracks", status: "experimental", }, - // Killswitch activated for crbug.com/365405756; need to re-enable this. + // Re-enable this after crbug.com/378027651 is fixed. { name: "AuraScrollbarUsesNinePatchTrack", status: "test", @@ -523,13 +532,6 @@ "default": "test", }, }, - { - // When the element href attribute scheme is "data" or "javascript", - // set element's frozen base URL to document's fallback base URL. - // This feature was shipped in M129, so this flag can be removed in M131. - name: "BaseElementUrlUseFallback", - status: "stable", - }, { name: "BidiCaretAffinity", }, @@ -580,21 +582,11 @@ name: "BoxDecorationBreak", status: "stable", }, - { - // crbug.com/41485013 - name: "BreakIteratorDataGenerator", - status: "stable", - }, { // crbug.com/371615505 name: "BreakIteratorHyphenMinus", status: "stable", }, - { - // crbug.com/41485013 - name: "BreakIteratorSetStartOffset", - status: "stable", - }, { name: "BrowserVerifiedUserActivationKeyboard", base_feature: "none", @@ -641,6 +633,12 @@ status: "experimental", base_feature: "none", }, + { + // Increase disabled color on calendar picker's month-popup-button to 0.9. + // Enabled by default on M132. Remove flag on or after M135. + name: "CalendarPickerMonthPopupButtonDisabledColor", + status: "stable", + }, { name: "CallExitNodeWithoutLayoutObject", status: "stable", @@ -753,6 +751,10 @@ name: "ClickToCapturedPointer", status: "experimental", }, + { + name: "ClipboardItemWithDOMStringSupport", + status: "experimental", + }, { name: "ClipPathRejectEmptyPaths", status: "stable", @@ -883,8 +885,9 @@ { // Allow WebAuthn relying parties to report information about existing // credentials back to credential storage providers. + // Enabled by default on M132. Remove flag on or after M135. name: "CredentialManagerReport", - status: "experimental", + status: "stable", }, { name: "CrossFramePerformanceTimeline", @@ -910,7 +913,7 @@ { // Support anchor-size() values in inset and margin properties. name: "CSSAnchorSizeInsetsMargins", - status: "experimental", + status: "stable", }, { // Support for syntax in @property @@ -1002,11 +1005,6 @@ name: "CSSCustomStateNewSyntax", status: "stable", }, - { - // crbug.com/353228153 - name: "CssDisplaySerialziationFix", - status: "stable", - }, { name: "CSSDynamicRangeLimit", status: "experimental", @@ -1046,6 +1044,11 @@ name: "CSSHexAlphaColor", status: "stable", }, + { + // Support making elements inert through the interactivity property. + name: "CSSInert", + status: "experimental", + }, { // The `inset-area` CSS property has been renamed to `position-area`. This // feature (CSSInsetAreaProperty) enables the old `inset-area` property. @@ -1096,6 +1099,14 @@ name: "CSSNestedDeclarations", status: "stable", }, + { + name: "CSSNestedPseudoElements", + status: "experimental", + }, + { + name: "CSSOverflowContainerQueries", + status: "experimental", + }, { name: "CSSPaintAPIArguments", status: "experimental", @@ -1182,7 +1193,7 @@ { // crbug.com/359616070 name: "CSSRelativeColorLateResolveAlways", - status: "experimental", + status: "stable", }, { // crbug.com/365818844 @@ -1232,7 +1243,7 @@ // Flag for supporting scroll-state() and container-type: scroll-state // Implied by supporting at least one of the scroll-state query features. name: "CSSScrollStateContainerQueries", - implied_by: ["CSSStickyContainerQueries", "CSSSnapContainerQueries"], + implied_by: ["CSSStickyContainerQueries", "CSSSnapContainerQueries", "CSSOverflowContainerQueries"], }, { name: "CSSSelectorFragmentAnchor", @@ -1256,6 +1267,10 @@ name: "CSSStickyContainerQueries", status: "experimental", }, + { + name: "CSSSupportsAtRuleFunction", + status: "experimental", + }, { name: "CSSSupportsForImportRules", status: "stable", @@ -1307,11 +1322,6 @@ name: "CSSViewTransitionClass", status: "stable" }, - { - // Support the 'inert' keyword for the visibility property. - name: "CSSVisibilityInert", - status: "experimental", - }, { name: "CursorAnchorInfoMojoPipe", // No status as this will be controlled by the matching Chromium feature. @@ -1386,11 +1396,7 @@ }, { name: "DevicePosture", - public: true, - status: "experimental", - base_feature_status: "enabled", - copied_from_base_feature_if: "overridden", - origin_trial_feature_name: "FoldableAPIs", + status: "stable", }, { // This feature makes the element close properly when its "open" @@ -1403,7 +1409,7 @@ // events every time it is closed or opened. // https://bugs.chromium.org/p/chromium/issues/detail?id=1521813 name: "DialogElementToggleEvents", - status: "experimental", + status: "stable", }, { name: "DialogNewFocusBehavior", @@ -1552,6 +1558,15 @@ name: "DocumentInstallChunking", status: "stable", }, + { + // Enables DocumentIsolationPolicy. + // See https://https://github.com/WICG/document-isolation-policy. + name: "DocumentIsolationPolicy", + status: "experimental", + origin_trial_feature_name: "DocumentIsolationPolicy", + origin_trial_os: ["win", "mac", "linux", "chromeos"], + base_feature: "none", + }, { name: "DocumentOpenOriginAliasRemoval", status: "experimental", @@ -1654,14 +1669,9 @@ name: "DynamicSafeAreaInsetsOnScroll", depends_on: ["DynamicSafeAreaInsets"] }, - { - name: "DynamicScrollCullRectExpansion", - status: "stable", - }, { name: "ElementCapture", - origin_trial_feature_name: "ElementCapture", - status: {"Android": "", "default": "experimental"}, + status: {"Android": "", "default": "stable"}, }, { // TODO(crbug.fom/41492947) This is the "old" version of getInnerHTML() @@ -1686,29 +1696,28 @@ }, { name: "EventTimingHandleKeyboardEventSimulatedClick", - status: "experimental", + status: "stable", }, { name: "EventTimingInteractionCount", status: "experimental", }, + { + // Event Timings should not get interactionId assigned if the next paint + // was affected by autoscroll, i.e. from text selection. + name: "EventTimingSelectionAutoScrollNoInteractionId", + status: "experimental", + }, { // When the fling is active, a tap on the page can stop scroll. When // calculating the input latency, we should exclude all the input events // caused by this tap. name: "EventTimingTapStopScrollNoInteractionId", - status: "experimental", - }, - // Killswitch. Remove after 1-2 stable releases, and rename - // cc::ScrollNode::main_thread_scrolling_reasons to - // main_thread_repaint_reasons. - { - name: "ExcludePopupMainThreadScrollingReason", status: "stable", }, { name: "ExcludeTransparentTextsFromBeingLcpEligible", - status: "experimental", + status: "stable", }, { name: "ExperimentalContentSecurityPolicyFeatures", @@ -1728,6 +1737,10 @@ name: "ExperimentalPolicies", status: "experimental", }, + { + name: "ExposeCoarsenedRenderTime", + status: "test", + }, { name: "ExposeRenderTimeNonTaoDelayedImage", }, @@ -1782,7 +1795,7 @@ depends_on: ["FedCm"], public: true, browser_process_read_access: true, - status: "test", + status: "stable", base_feature: "none", origin_trial_feature_name: "FedCmContinueOnBundle", origin_trial_allows_third_party: true, @@ -1798,7 +1811,7 @@ name: "FedCmButtonMode", depends_on: ["FedCm"], public: true, - status: "test", + status: "stable", base_feature: "none", origin_trial_feature_name: "FedCmButtonMode", origin_trial_allows_third_party: true, @@ -1902,7 +1915,7 @@ // Add Request.bytes() and Response.bytes() // https://chromestatus.com/feature/5239268180754432 name: "FetchBodyBytes", - status: "experimental", + status: "stable", }, { // The Blink runtime-enabled feature name for the API's IDL. @@ -1966,7 +1979,7 @@ { // Non-OPFS File System Access API. name: "FileSystemAccessLocal", - status: {"Android": "test", "default": "stable"}, + status: {"default": "stable"}, }, { name: "FileSystemAccessLockingScheme", @@ -2000,7 +2013,7 @@ { // crbug.com/40755728 name: "FindRubyInPage", - status: "test", + status: "stable", }, { name: "FindTextInReadonlyTextInput", @@ -2028,6 +2041,7 @@ origin_trial_feature_name: "FledgeBiddingAndAuctionServer", origin_trial_allows_third_party: true, base_feature: "none", + status: "stable", }, { name: "FledgeCustomMaxAuctionAdComponents", @@ -2044,40 +2058,11 @@ name: "FledgeDirectFromSellerSignalsHeaderAdSlot", status: "stable", }, - { - name: "FledgeFeatureDetectAll", - // FledgeFeatureDetectAll should be enabled by any feature-detectable - // experiment that enters trials after it got created; this makes it easy - // to polyfill by only checking older things, and makes it serve its - // purpose of modularly advertising new things. - implied_by: ["FledgeAuctionDealSupport", - "FledgePermitCrossOriginTrustedSignals", - "FledgeRealTimeReporting"], - base_feature: "none", - }, - { - name: "FledgeFeatureDetection", - // FledgeFeatureDetection should be on if any of the features it aims - // to help detect is on. - implied_by: ["FledgeAuctionDealSupport", - "FledgeCustomMaxAuctionAdComponents", - "FledgeDeprecatedRenderURLReplacements", - "FledgePermitCrossOriginTrustedSignals", - "FledgeRealTimeReporting", - "FledgeReportingTimeout"], - base_feature: "none", - }, { name: "FledgeMultiBid", public: true, status: "stable", }, - { - // Permit trusted signals to come cross-origin, subject to CORS on the - // trusted server side and opt-in on the worklet script side. - name: "FledgePermitCrossOriginTrustedSignals", - status: "stable", - }, { // Enables real time reporting API in Protected Audience. // https://github.com/WICG/turtledove/blob/main/PA_real_time_monitoring.md @@ -2091,6 +2076,12 @@ name: "FledgeReportingTimeout", status: "stable", }, + { + // Enables the ability to set seller nonces on the header response and + // use bidNonce in bids. + name: "FledgeSellerNonce", + status: "test", + }, { name: "FledgeTrustedSignalsKVv2Support", status: "test", @@ -2205,10 +2196,6 @@ name: "FreezeFramesOnVisibility", status: "experimental", }, - { - name: "GamepadButtonAxisEvents", - status: "experimental", - }, { name: "GamepadMultitouch", status: "experimental", @@ -2272,6 +2259,9 @@ { name: "HighlightPointerEvents", }, + { + name: "HighlightsFromPoint", + }, { name: "HitTestOpaqueness", status: "stable", @@ -2296,6 +2286,11 @@ name: "HTMLAnchorAttribute", status: "experimental", }, + { + // TODO(crbug.com/376516550): Enables dialog light dismiss functionality. + name: "HTMLDialogLightDismiss", + status: "experimental", + }, // The `` should follow the specification, layout is not forced // when the `type` attribute is set to `image`. // https://html.spec.whatwg.org/C/#the-embed-element @@ -2383,6 +2378,10 @@ name: "IncrementLocalSurfaceIdForMainframeSameDocNavigation", status: {"Android": "stable"}, }, + { + name: "IndexedDbGetAllRecords", + status: "experimental", + }, { name: "InertElementNonEditable", status: "stable", @@ -2442,6 +2441,10 @@ name: "InsertLineBreakIfPhrasingContent", status: {"Android": "test", "default": "stable"}, }, + { + // Improved support for debugging CSSNestedDeclarations. + name: "InspectorGhostRules", + }, { name: "InstalledApp", public: true, @@ -2451,6 +2454,10 @@ { name: "InstallOnDeviceSpeechRecognition", }, + { + name: "InterestGroupsInSharedStorageWorklet", + public: true, + }, { name: "InteroperablePrivateAttribution", status: "experimental", @@ -2460,10 +2467,6 @@ name: "IntersectionObserverScrollMargin", status: "stable", }, - { - name: "IntersectionOptimization", - status: "stable", - }, { name: "InvertedColors", status: "experimental", @@ -2473,15 +2476,14 @@ status: "stable", }, { - name: "JavaScriptCompileHintsMagicRuntime", + name: "JavaScriptCompileHintsMagicAlwaysRuntime", status: "experimental", - origin_trial_feature_name: "JavaScriptCompileHintsMagic", + origin_trial_feature_name: "JavaScriptCompileHintsMagicAlways", }, { - // Fix to crbug.com/40934455. - // Should be removed a bit after M129 reaches stable. - name: "KeepActiveIfLabelActive", - status: "stable", + name: "JavaScriptCompileHintsMagicRuntime", + status: "experimental", + origin_trial_feature_name: "JavaScriptCompileHintsMagic", }, { // Allows :target to match elements even after they are removed and @@ -2524,13 +2526,6 @@ name: "LabelAndDelegatesFocusNewHandling", status: "stable", }, - { - // This feature makes HTMLLabelElement::DefaultEventHandler always call - // HTMLElement::DefaultEventHandler instead of only doing so - // conditionally. Shipping in M123 so should be safe to remove in M127. - name: "LabelEventHandlerCallSuper", - status: "stable", - }, { name: "LangAttributeAwareFormControlUI", settable_from_internals: true, @@ -2558,6 +2553,10 @@ status: "test", base_feature: "LayoutNGShapeCache", }, + { + name: "LayoutStretch", + status: "experimental", + }, { name: "LazyInitializeMediaControls", base_feature: "none", @@ -2598,6 +2597,10 @@ name: "LineBoxBelowLeadingFloats", status: "stable", }, + { + name: "ListItemWithCounterSetNotSetExplicitValue", + status: "stable", + }, { name: "LockedMode", status: "test", @@ -2821,6 +2824,10 @@ name: "MoveToParagraphStartOrEndSkipsNonEditable", status: "stable", }, + { + name: "MultipleImportMaps", + status: "experimental", + }, { name: "MultiSelectDeselectWhenOnlyOption", status: "test", @@ -2971,8 +2978,7 @@ }, { name: "OnDeviceChange", - // Android does not yet support SystemMonitor. - status: {"Android": "", "default": "stable"}, + status: "stable" }, { name: "OnDeviceWebSpeechAvailable", @@ -2999,6 +3005,7 @@ name: "OriginTrialsSampleAPI", base_feature: "none", origin_trial_feature_name: "Frobulate", + public: true, }, // As above. Do not change this flag to stable, as it exists solely to // generate code used by the origin trials sample API implementation. @@ -3024,6 +3031,7 @@ origin_trial_feature_name: "FrobulateDeprecation", origin_trial_type: "deprecation", origin_trial_allows_insecure: true, + public: true, }, // As above. Do not change this flag to stable, as it exists solely to // generate code used by the origin trials sample API implementation. @@ -3165,6 +3173,10 @@ name: "PartitionedPopins", status: "experimental", }, + { + name: "PartitionVisitedLinkDatabaseWithSelfLinks", + status: {"iOS": "", "default": "experimental"}, + }, // This is to add an option to enable the Reveal button on password inputs while waiting ::reveal gets standardized. { name: "PasswordReveal", @@ -3217,6 +3229,10 @@ name: "PerformanceNavigateSystemEntropy", status: "experimental", }, + { + name: "PerformanceNavigationTimingConfidence", + status: "experimental", + }, { name: "PeriodicBackgroundSync", public: true, @@ -3234,7 +3250,7 @@ name: "PermissionElement", origin_trial_feature_name: "PermissionElement", origin_trial_os: ["win", "mac", "linux", "fuchsia", "chromeos"], - status: "experimental", + status: {"Android": "", "default": "experimental"}, public: true, base_feature_status: "enabled", copied_from_base_feature_if: "overridden", @@ -3255,6 +3271,7 @@ name: "PNaCl", base_feature: "none", origin_trial_feature_name: "PNaCl", + public: true, }, { name: "PointerEventDeviceId", @@ -3431,6 +3448,12 @@ name: "PseudoElementsFocusable", status: "experimental", }, + { + name: "PushMessageDataBytes", + depends_on: ["PushMessaging"], + status: "stable", + base_feature: "none", + }, { name: "PushMessaging", public: true, @@ -3447,10 +3470,6 @@ name: "QuickIntensiveWakeUpThrottlingAfterLoading", status: "stable", }, - { - name: "QuotaChange", - status: "experimental", - }, { name: "RasterInducingScroll", status: "test", @@ -3554,7 +3573,7 @@ }, { name: "ReportEventTimingAtVisibilityChange", - status: "experimental", + status: "stable", }, { // TODO(crbug.com/1500633): Remove this flag when the new CursorAnchorInfo @@ -3573,6 +3592,10 @@ name: "ResourceTimingContentType", status: "experimental", }, + { + name: "ResourceTimingFinalResponseHeadersStart", + status: "experimental", + }, { name: "ResourceTimingUseCORSForBodySizes", status: "test", @@ -3665,24 +3688,26 @@ name: "RTCSvcScalabilityMode", status: "stable", }, - { - // crbug.com/324111880 - name: "RubyLineBreakable", - status: "stable", - }, { // crbug.com/324111880 name: "RubyShortHeuristics", status: "stable", }, { + // Spec: https://wicg.github.io/sanitizer-api/ + // Tracking bug: crbug.com/356601280 name: "SanitizerAPI", - status: "experimental", + status: "test", }, { name: "SchedulerYield", status: "stable", }, + { + // See crbug.com/41321247 and crbug.com/376370642 + name: "ScheduleSelectionChangeOnBackspace", + status: {"Android": "", "default": "stable"}, + }, { // https://wicg.github.io/webcomponents/proposals/Scoped-Custom-Element-Registries name: "ScopedCustomElementRegistry", @@ -3721,11 +3746,6 @@ name: "ScrollIntoViewRootFrameViewportBugFix", status: "stable", }, - // Killswitch. Remove after M126 or M127 stable. - { - name: "ScrollNodeForOverflowHidden", - status: "stable", - }, { name: "ScrollTimeline", status: "stable", @@ -3780,6 +3800,23 @@ status: "stable", base_feature: "none", }, + { + // SelectAudioOutput API + // https://chromestatus.com/feature/5164535504437248 + name: "SelectAudioOutput", + status: { + "Android": "", + "default": "test", + }, + }, + { + // The selectedcontentelement attribute is for connecting select elements + // to arbitrary elements. + // https://github.com/openui/open-ui/issues/1063 + name: "SelectedcontentelementAttribute", + status: "experimental", + depends_on: ["CustomizableSelect"], + }, { // Implement Selection API across shadow DOM // See https://w3c.github.io/selection-api/ @@ -3790,14 +3827,16 @@ // selection.isCollapsed should return false if anchor and focus nodes // are different, including in shadow tree. // https://crbug.com/40400558 + // This feature was shipped in M131, so this flag can be removed in M133. name: "SelectionIsCollapsedShadowDOMSupport", - status: "experimental", + status: "stable", }, { - // Maintain author-defined ::selection highlight colors, even if they - // match the text color. - name: "SelectionRespectsColors", - status: "stable", + // Update HandleMousePressEvent to continue handling event, even after a + // focus slided from shadow host with delegatesFocus. + // See https://crbug.com/40622041 + name: "SelectionOnShadowDOMWithDelegatesFocus", + status: "experimental", }, { // Sets the minimum target size of