From 2251675be776f75c8c13b8e9bdec2df6457f661b Mon Sep 17 00:00:00 2001 From: uazo <29201891+uazo@users.noreply.github.com> Date: Fri, 21 Nov 2025 03:24:23 +0000 Subject: [PATCH] [AUTO][FILECONTROL] - version 143.0.7499.40 --- tools/under-control/src/RELEASE | 2 +- .../browser/aw_content_browser_client.cc | 71 +- .../browser/aw_field_trials.cc | 40 +- .../chrome/android/java/AndroidManifest.xml | 35 +- .../CustomTabIntentDataProvider.java | 109 +- .../src/chrome/browser/about_flags.cc | 1318 +++--- .../chrome_browsing_data_remover_delegate.cc | 14 +- .../chrome_browser_interface_binders.cc | 1 + .../browser/chrome_content_browser_client.cc | 368 +- ...ent_browser_client_navigation_throttles.cc | 31 +- .../browser/flags/ChromeFeatureList.java | 264 +- .../src/chrome/browser/prefs/browser_prefs.cc | 363 +- .../src/chrome/browser/ui/tab_helpers.cc | 14 +- ...hrome_content_browser_client_webui_part.cc | 2 +- .../extensions/api/autofill_private.idl | 20 +- .../api/enterprise_reporting_private.idl | 25 - .../common/extensions/api/login_state.idl | 5 +- .../extensions/api/quick_unlock_private.idl | 12 +- .../extensions/api/settings_private.idl | 5 +- .../chrome_content_renderer_client.cc | 9 +- .../policy/resources/templates/policies.yaml | 3 + .../CloudProfileReportingEnabled.yaml | 2 +- .../AutoSelectCertificateForUrls.yaml | 4 +- .../DefaultSmartCardConnectSetting.yaml | 4 +- .../DefaultWebPrintingSetting.yaml | 10 +- .../PartitionedBlobUrlUsage.yaml | 2 +- .../SmartCardConnectAllowedForUrls.yaml | 4 +- .../SmartCardConnectBlockedForUrls.yaml | 4 +- .../WebPrintingAllowedForUrls.yaml | 4 +- .../WebPrintingBlockedForUrls.yaml | 4 +- ...ensionInstallCloudPolicyChecksEnabled.yaml | 7 +- .../GenerativeAI/GeminiActOnWebSettings.yaml | 38 + .../Miscellaneous/BookmarkBarEnabled.yaml | 1 + .../Miscellaneous/CacheEncryptionEnabled.yaml | 6 +- .../Miscellaneous/DisableScreenshots.yaml | 1 + .../Miscellaneous/FeedbackSurveysEnabled.yaml | 2 +- .../Miscellaneous/NTPShortcuts.yaml | 6 +- ...ionManagedClientCertificateForBrowser.yaml | 3 +- ...visionManagedClientCertificateForUser.yaml | 3 +- .../Miscellaneous/SilentPrintingEnabled.yaml | 1 + .../SystemFeaturesDisableList.yaml | 4 + .../Proxy/ProxyOverrideRules.yaml | 72 + .../Signin/LocalAuthFactorsComplexity.yaml | 54 + .../browser/web_contents/web_contents_impl.cc | 166 +- .../src/content/child/runtime_features.cc | 26 +- .../public/browser/content_browser_client.cc | 57 + .../common/api/chrome_url_overrides.idl | 4 +- .../common/api/declarative_net_request.idl | 5 +- .../src/services/network/network_context.cc | 72 +- .../variations/fieldtrial_testing_config.json | 4089 +++++++++-------- .../use_counter/metrics/web_feature.mojom | 58 +- .../webpreferences/web_preferences.mojom | 57 +- .../core/animation/animation_trigger.idl | 3 +- .../renderer/core/animation/event_trigger.idl | 2 +- .../core/animation/timeline_trigger.idl | 2 +- .../core/css/cssom/css_color_value.idl | 3 - .../core/css/parser/media_query_parser.cc | 65 +- .../renderer/core/dom/abort_controller.idl | 2 +- .../blink/renderer/core/dom/abort_signal.idl | 2 +- .../renderer/core/dom/character_data.idl | 8 +- .../blink/renderer/core/dom/child_node.idl | 8 +- .../renderer/core/dom/css_pseudo_element.idl | 2 +- .../renderer/core/dom/dom_token_list.idl | 4 +- .../blink/renderer/core/dom/element.idl | 14 +- .../renderer/core/dom/events/custom_event.idl | 2 +- .../blink/renderer/core/dom/events/event.idl | 10 +- .../core/dom/events/event_listener.idl | 2 +- .../renderer/core/dom/events/event_target.idl | 4 +- .../renderer/core/dom/mutation_observer.idl | 6 +- .../blink/renderer/core/dom/node.idl | 2 +- .../blink/renderer/core/dom/node_iterator.idl | 2 +- .../blink/renderer/core/dom/parent_node.idl | 8 +- .../blink/renderer/core/dom/range.idl | 26 +- .../blink/renderer/core/editing/selection.idl | 2 +- .../core/events/event_type_names.json5 | 1 + .../renderer/core/events/toggle_event.idl | 2 +- .../core/events/toggle_event_init.idl | 1 + .../renderer/core/exported/web_view_impl.cc | 45 +- ...> window_or_worker_global_scope_fetch.idl} | 2 +- .../renderer/core/fetch/worker_fetch.idl | 11 - .../coop_access_violation_report_body.idl | 2 +- .../frame/csp/csp_violation_report_body.idl | 2 +- .../deprecation/deprecation_report_body.idl | 2 +- .../document_policy_violation_report_body.idl | 2 +- .../frame/integrity_violation_report_body.idl | 2 +- .../core/frame/intervention_report_body.idl | 2 +- .../core/frame/navigator_cpu_performance.idl | 14 + ...rmissions_policy_violation_report_body.idl | 2 +- .../blink/renderer/core/frame/report_body.idl | 2 +- .../renderer/core/frame/test_report_body.idl | 2 +- .../blink/renderer/core/frame/window.idl | 6 +- .../renderer/core/geolocation/geolocation.idl | 6 +- .../core/html/canvas/image_data_settings.idl | 3 +- .../core/html/html_geolocation_element.idl | 2 +- .../core/html/html_script_element.idl | 9 + .../intersection_observer.idl | 1 - .../origin_trials/origin_trial_context.cc | 9 + .../automation_delegate_supplement.idl | 10 - ...omation_delegate.idl => model_context.idl} | 6 +- .../script_tools/model_context_supplement.idl | 11 + .../script_tools/model_context_testing.idl | 21 + .../blink/renderer/core/svg/svg_a_element.idl | 8 +- .../core/timing/performance_event_timing.idl | 1 + ...ow_or_worker_global_scope_performance.idl} | 8 +- .../core/timing/window_performance.idl | 13 - ...w_or_worker_global_scope_trusted_types.idl | 11 + .../blink/renderer/core/url/origin.idl | 3 +- .../core/view_transition/view_transition.idl | 7 + .../view_transition_callback.idl | 5 +- .../core/workers/worker_global_scope.idl | 3 - .../renderer/core/xml/xslt_processor.idl | 10 +- .../blink/renderer/modules/ai/writer.idl | 2 +- .../modules/badging/navigator_badge.idl | 7 +- .../bluetooth_remote_gatt_characteristic.idl | 2 +- .../buckets/navigator_storage_buckets.idl | 6 +- .../worker_navigator_storage_buckets.idl | 13 - ..._or_worker_global_scope_cache_storage.idl} | 2 +- .../cache_storage/worker_cache_storage.idl | 10 - .../canvas/canvas2d/canvas_gradient.idl | 1 + .../canvas_rendering_context_2d_settings.idl | 1 + ...vas_context_creation_attributes_module.idl | 18 +- ...rker_global_scope_create_image_bitmap.idl} | 2 +- .../worker_create_image_bitmap.idl | 13 - .../clipboard/clipboard_change_event.idl | 1 + .../clipboard/clipboard_change_event_init.idl | 5 +- .../identity_credential_error.idl | 4 +- .../identity_provider.idl | 2 +- .../modules/gamepad/window_gamepad.idl | 11 + .../indexeddb/window_indexed_database.idl | 31 - ...r_worker_global_scope_indexed_database.idl | 11 + .../worker_global_scope_indexed_database.idl | 31 - .../modules/locks/navigator_locks.idl | 5 +- .../modules/locks/worker_navigator_locks.idl | 13 - .../renderer/modules/ml/navigator_ml.idl | 9 +- .../modules/ml/webnn/ml_graph_builder.idl | 7 +- .../modules/ml/worker_navigator_ml.idl | 14 - .../netinfo/navigator_network_information.idl | 9 +- .../worker_navigator_network_information.idl | 10 - .../rtc_transport/rtc_received_packet.idl | 1 + .../rtc_transport/rtc_transport.idl | 31 +- .../rtc_transport_ice_candidate.idl | 16 + .../rtc_transport/rtc_transport_ice_event.idl | 10 + .../modules/smart_card/smart_card_context.idl | 2 +- .../smart_card_resource_manager.idl | 2 +- .../modules/storage/window_local_storage.idl | 11 + .../storage/window_session_storage.idl | 11 + .../modules/storage/window_storage.idl | 12 - .../webcodecs/video_decoder_config.idl | 2 - .../modules/webcodecs/video_frame.idl | 2 - .../webcodecs/video_frame_buffer_init.idl | 4 +- .../webcodecs/video_frame_copy_to_options.idl | 2 - .../modules/webcodecs/video_frame_init.idl | 4 +- .../webgl/webgl2_rendering_context_base.idl | 1 - .../webgpu/gpu_canvas_configuration.idl | 11 +- .../renderer/modules/webgpu/gpu_queue.idl | 4 + .../webgpu/gpu_texture_view_descriptor.idl | 2 +- .../renderer/modules/xr/xr_cube_layer.idl | 16 + .../renderer/modules/xr/xr_layer_init.idl | 5 + .../blink/renderer/modules/xr/xr_session.idl | 1 + .../blink/renderer/modules/xr/xr_view.idl | 1 + .../xr/xr_visibility_mask_change_event.idl | 24 + .../renderer/modules/xr/xr_webgl_binding.idl | 3 + .../platform/runtime_enabled_features.json5 | 634 +-- .../global-interface-listing-expected.txt | 14 + 164 files changed, 4950 insertions(+), 4023 deletions(-) create mode 100755 tools/under-control/src/components/policy/resources/templates/policy_definitions/GenerativeAI/GeminiActOnWebSettings.yaml create mode 100755 tools/under-control/src/components/policy/resources/templates/policy_definitions/Proxy/ProxyOverrideRules.yaml create mode 100755 tools/under-control/src/components/policy/resources/templates/policy_definitions/Signin/LocalAuthFactorsComplexity.yaml rename tools/under-control/src/third_party/blink/renderer/core/fetch/{window_fetch.idl => window_or_worker_global_scope_fetch.idl} (86%) delete mode 100755 tools/under-control/src/third_party/blink/renderer/core/fetch/worker_fetch.idl create mode 100755 tools/under-control/src/third_party/blink/renderer/core/frame/navigator_cpu_performance.idl delete mode 100755 tools/under-control/src/third_party/blink/renderer/core/script_tools/automation_delegate_supplement.idl rename tools/under-control/src/third_party/blink/renderer/core/script_tools/{automation_delegate.idl => model_context.idl} (83%) create mode 100755 tools/under-control/src/third_party/blink/renderer/core/script_tools/model_context_supplement.idl create mode 100755 tools/under-control/src/third_party/blink/renderer/core/script_tools/model_context_testing.idl rename tools/under-control/src/third_party/blink/renderer/core/timing/{worker_global_scope_performance.idl => window_or_worker_global_scope_performance.idl} (86%) delete mode 100755 tools/under-control/src/third_party/blink/renderer/core/timing/window_performance.idl create mode 100755 tools/under-control/src/third_party/blink/renderer/core/trustedtypes/window_or_worker_global_scope_trusted_types.idl delete mode 100755 tools/under-control/src/third_party/blink/renderer/modules/buckets/worker_navigator_storage_buckets.idl rename tools/under-control/src/third_party/blink/renderer/modules/cache_storage/{window_cache_storage.idl => window_or_worker_global_scope_cache_storage.idl} (86%) delete mode 100755 tools/under-control/src/third_party/blink/renderer/modules/cache_storage/worker_cache_storage.idl rename tools/under-control/src/third_party/blink/renderer/modules/canvas/imagebitmap/{window_create_image_bitmap.idl => window_or_worker_global_scope_create_image_bitmap.idl} (94%) delete mode 100755 tools/under-control/src/third_party/blink/renderer/modules/canvas/imagebitmap/worker_create_image_bitmap.idl create mode 100755 tools/under-control/src/third_party/blink/renderer/modules/gamepad/window_gamepad.idl delete mode 100755 tools/under-control/src/third_party/blink/renderer/modules/indexeddb/window_indexed_database.idl create mode 100755 tools/under-control/src/third_party/blink/renderer/modules/indexeddb/window_or_worker_global_scope_indexed_database.idl delete mode 100755 tools/under-control/src/third_party/blink/renderer/modules/indexeddb/worker_global_scope_indexed_database.idl delete mode 100755 tools/under-control/src/third_party/blink/renderer/modules/locks/worker_navigator_locks.idl delete mode 100755 tools/under-control/src/third_party/blink/renderer/modules/ml/worker_navigator_ml.idl delete mode 100755 tools/under-control/src/third_party/blink/renderer/modules/netinfo/worker_navigator_network_information.idl create mode 100755 tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_transport/rtc_transport_ice_candidate.idl create mode 100755 tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_transport/rtc_transport_ice_event.idl create mode 100755 tools/under-control/src/third_party/blink/renderer/modules/storage/window_local_storage.idl create mode 100755 tools/under-control/src/third_party/blink/renderer/modules/storage/window_session_storage.idl delete mode 100755 tools/under-control/src/third_party/blink/renderer/modules/storage/window_storage.idl create mode 100755 tools/under-control/src/third_party/blink/renderer/modules/xr/xr_cube_layer.idl create mode 100755 tools/under-control/src/third_party/blink/renderer/modules/xr/xr_visibility_mask_change_event.idl diff --git a/tools/under-control/src/RELEASE b/tools/under-control/src/RELEASE index 163fd741..b5eb33b5 100644 --- a/tools/under-control/src/RELEASE +++ b/tools/under-control/src/RELEASE @@ -1 +1 @@ -142.0.7444.176 +143.0.7499.40 diff --git a/tools/under-control/src/android_webview/browser/aw_content_browser_client.cc b/tools/under-control/src/android_webview/browser/aw_content_browser_client.cc index 56fccea0..7373dc28 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 @@ -20,11 +20,13 @@ #include "android_webview/browser/aw_contents.h" #include "android_webview/browser/aw_contents_client_bridge.h" #include "android_webview/browser/aw_contents_io_thread_client.h" +#include "android_webview/browser/aw_contents_statics.h" #include "android_webview/browser/aw_cookie_access_policy.h" #include "android_webview/browser/aw_devtools_manager_delegate.h" #include "android_webview/browser/aw_feature_list_creator.h" #include "android_webview/browser/aw_http_auth_handler.h" #include "android_webview/browser/aw_origin_matched_header.h" +#include "android_webview/browser/aw_policy_blocklist_service_factory.h" #include "android_webview/browser/aw_settings.h" #include "android_webview/browser/aw_speech_recognition_manager_delegate.h" #include "android_webview/browser/aw_web_contents_delegate.h" @@ -61,6 +63,7 @@ #include "base/functional/callback_helpers.h" #include "base/memory/ptr_util.h" #include "base/memory/scoped_refptr.h" +#include "base/metrics/histogram_functions.h" #include "base/metrics/histogram_macros.h" #include "base/notreached.h" #include "base/path_service.h" @@ -78,6 +81,7 @@ #include "components/page_load_metrics/browser/metrics_navigation_throttle.h" #include "components/page_load_metrics/browser/metrics_web_contents_observer.h" #include "components/policy/content/policy_blocklist_navigation_throttle.h" +#include "components/policy/content/safe_search_service.h" #include "components/policy/core/browser/browser_policy_connector_base.h" #include "components/prefs/pref_service.h" #include "components/safe_browsing/content/browser/async_check_tracker.h" @@ -87,6 +91,7 @@ #include "components/safe_browsing/core/common/hashprefix_realtime/hash_realtime_utils.h" #include "components/url_matcher/url_matcher.h" #include "components/url_matcher/url_util.h" +#include "components/user_prefs/user_prefs.h" #include "components/version_info/version_info.h" #include "content/public/browser/browser_context.h" #include "content/public/browser/browser_task_traits.h" @@ -172,7 +177,6 @@ bool g_created_network_context_params = false; // On apps targeting API level O or later, check cleartext is enforced. bool g_check_cleartext_permitted = false; - // Get async check tracker to make Safe Browsing v5 check asynchronous base::WeakPtr GetAsyncCheckTracker( const base::RepeatingCallback& wc_getter, @@ -210,8 +214,15 @@ std::string GetUserAgent() { if (base::FeatureList::IsEnabled( features::kWebViewReduceUAAndroidVersionDeviceModel)) { - return embedder_support::BuildUnifiedPlatformUAFromProductAndExtraOs( - product, "; wv"); + // The user-agent reduction feature for WebView, when enabled, should + // produce a consistent, unified platform string to ensure predictable + // behavior. This hardcoded value prevents device-specific platform details + // (e.g., "X11; Linux" on desktop devices) from appearing in the reduced + // User-Agent. The "Linux; Android 10; K; wv" string matches the expected + // format for a reduced WebView User-Agent. + constexpr char kUnifiedPlatformOsInfoWebview[] = "Linux; Android 10; K; wv"; + return embedder_support::BuildUserAgentFromOSAndProduct( + kUnifiedPlatformOsInfoWebview, product); } return embedder_support::BuildUserAgentFromProductAndExtraOSInfo( @@ -403,7 +414,7 @@ bool AwContentBrowserClient::IsHandledURL(const GURL& url) { return true; } - const std::string scheme = url.scheme(); + const std::string scheme = url.GetScheme(); DCHECK_EQ(scheme, base::ToLowerASCII(scheme)); static const char* const kProtocolList[] = { url::kHttpScheme, url::kHttpsScheme, @@ -451,6 +462,29 @@ void AwContentBrowserClient::AppendExtraCommandLineSwitches( command_line->CopySwitchesFrom(*base::CommandLine::ForCurrentProcess(), kSwitchNames); } + + if (base::FeatureList::IsEnabled( + features::kWebViewConfigurableLibraryPrefetch)) { + RendererLibraryPrefetchMode mode = GetRendererLibraryPrefetchMode(); + switch (mode) { + case RendererLibraryPrefetchMode::kDisabled: + command_line->AppendSwitchASCII( + switches::kWebViewRendererLibraryPrefetch, + switches::kWebViewRendererLibraryPrefetchDisabled); + break; + case RendererLibraryPrefetchMode::kEnabled: + command_line->AppendSwitchASCII( + switches::kWebViewRendererLibraryPrefetch, + switches::kWebViewRendererLibraryPrefetchEnabled); + break; + default: + // kDefault or unknown values are ignored. But sanitize for histograms. + mode = RendererLibraryPrefetchMode::kDefault; + break; + } + base::UmaHistogramEnumeration("Android.WebView.RendererLibraryPrefetchMode", + mode); + } } std::string AwContentBrowserClient::GetApplicationLocale() { @@ -628,10 +662,8 @@ void AwContentBrowserClient::OverrideWebPreferences( aw_settings->PopulateWebPreferences(web_prefs); } - // This preference is needed for back-forward transitions, but they are not - // enabled for webview (crbug.com/361600214). - web_prefs->increment_local_surface_id_for_mainframe_same_doc_navigation = - false; + // Back-forward transitions are not enabled for webview (crbug.com/361600214). + web_prefs->should_screenshot_on_mainframe_same_doc_navigation = false; AwWebContentsDelegate* delegate = static_cast(web_contents->GetDelegate()); @@ -663,9 +695,12 @@ void AwContentBrowserClient::CreateThrottlesForNavigation( navigation_interception::InterceptNavigationDelegate::MaybeCreateAndAdd( registry, navigation_interception::SynchronyMode::kSync); + AwBrowserContext* context = + AwBrowserContext::FromWebContents(navigation_handle.GetWebContents()); registry.AddThrottle(std::make_unique( - registry, - AwBrowserContext::FromWebContents(navigation_handle.GetWebContents()))); + registry, user_prefs::UserPrefs::Get(context), + AwPolicyBlocklistServiceFactory::GetForBrowserContext(context), + SafeSearchFactory::GetForBrowserContext(context))); AwSafeBrowsingNavigationThrottle::MaybeCreateAndAdd(registry); @@ -1428,18 +1463,6 @@ AwContentBrowserClient::GetAttributionReportingOsRegistrars( NOTREACHED(); } -network::mojom::IpProtectionProxyBypassPolicy -AwContentBrowserClient::GetIpProtectionProxyBypassPolicy() { - // The exact WebView-specific exclusion policy that is used will depend - // on android_webview::features::kWebViewIpProtectionExclusionCriteria - return network::mojom::IpProtectionProxyBypassPolicy::kExclusionList; -} - -bool AwContentBrowserClient::WillProvidePublicFirstPartySets() { - return base::CommandLine::ForCurrentProcess()->HasSwitch( - switches::kWebViewFpsComponent); -} - bool AwContentBrowserClient::IsFullCookieAccessAllowed( content::BrowserContext* browser_context, content::WebContents* web_contents, @@ -1495,4 +1518,8 @@ bool AwContentBrowserClient::IsSharedStorageSelectURLAllowed( return base::FeatureList::IsEnabled(network::features::kSharedStorageAPI); } +bool AwContentBrowserClient::ShouldAnimateBackForwardTransitions() { + return false; +} + } // namespace android_webview 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 d97f8c90..759cc12f 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,6 +4,7 @@ #include "android_webview/browser/aw_field_trials.h" +#include "android_webview/browser/metrics/aw_metrics_service_client.h" #include "android_webview/common/aw_features.h" #include "android_webview/common/aw_switches.h" #include "base/allocator/partition_alloc_features.h" @@ -24,7 +25,6 @@ #include "gpu/config/gpu_finch_features.h" #include "media/audio/audio_features.h" #include "media/base/media_switches.h" -#include "mojo/public/cpp/bindings/features.h" #include "net/base/features.h" #include "services/network/public/cpp/features.h" #include "services/tracing/public/cpp/tracing_features.h" @@ -37,12 +37,11 @@ void AwFieldTrials::OnVariationsSetupComplete() { // Persistent histograms must be enabled ASAP, but depends on Features. - base::FilePath metrics_dir; - if (base::PathService::Get(base::DIR_ANDROID_APP_DATA, &metrics_dir)) { - InstantiatePersistentHistogramsWithFeaturesAndCleanup(metrics_dir); - } else { - NOTREACHED(); - } + android_webview::AwMetricsServiceClient* metrics_service_client = + android_webview::AwMetricsServiceClient::GetInstance(); + metrics_service_client->SetUpMetricsDir(); + InstantiatePersistentHistogramsWithFeaturesAndCleanup( + metrics_service_client->GetMetricsDir()); } // TODO(crbug.com/40271903): Consider to migrate all WebView feature overrides @@ -66,15 +65,18 @@ void AwFieldTrials::RegisterFeatureOverrides(base::FeatureList* feature_list) { aw_feature_overrides.DisableFeature( blink::features::kAboutBlankPageRespectsDarkModeOnUserAction); + // TODO(crbug.com/433304196): Remove this once webview experiment has + // concluded. + aw_feature_overrides.DisableFeature( + blink::features::kAsyncTouchMovesImmediatelyAfterScroll); + // Disable enforcing `noopener` on Blob URL navigations on WebView. aw_feature_overrides.DisableFeature( blink::features::kEnforceNoopenerOnBlobURLNavigation); -#if BUILDFLAG(ENABLE_VALIDATING_COMMAND_DECODER) // Disable the passthrough on WebView. aw_feature_overrides.DisableFeature( ::features::kDefaultPassthroughCommandDecoder); -#endif // HDR does not support webview yet. See crbug.com/1493153 for an explanation. aw_feature_overrides.DisableFeature(ui::kAndroidHDR); @@ -201,8 +203,10 @@ void AwFieldTrials::RegisterFeatureOverrides(base::FeatureList* feature_list) { aw_feature_overrides.DisableFeature(::features::kFedCm); // Disable Digital Credentials API on WebView. - aw_feature_overrides.DisableFeature(::features::kWebIdentityDigitalCredentials); - aw_feature_overrides.DisableFeature(::features::kWebIdentityDigitalCredentialsCreation); + aw_feature_overrides.DisableFeature( + ::features::kWebIdentityDigitalCredentials); + aw_feature_overrides.DisableFeature( + ::features::kWebIdentityDigitalCredentialsCreation); // TODO(crbug.com/40272633): Web MIDI permission prompt for all usage. aw_feature_overrides.DisableFeature(blink::features::kBlockMidiByDefault); @@ -217,10 +221,6 @@ void AwFieldTrials::RegisterFeatureOverrides(base::FeatureList* feature_list) { // enabling site isolation. See crbug.com/356170748. aw_feature_overrides.DisableFeature(blink::features::kPaintHoldingForIframes); - // Default Nav Transition does not support WebView. - // TODO(crbug.com/434928245): cleanup this feature gate in M141. - aw_feature_overrides.DisableFeature(blink::features::kBackForwardTransitions); - // Disabling this feature for WebView, since it can switch focus when scrolled // in cases with multiple views which can trigger HTML focus changes that // aren't intended. See crbug.com/378779896, crbug.com/373672168 for more @@ -303,12 +303,22 @@ void AwFieldTrials::RegisterFeatureOverrides(base::FeatureList* feature_list) { aw_feature_overrides.DisableFeature( features::kAAudioPerStreamDeviceSelection); + // WebView exposes text autosizing to apps via setLayoutAlgorithm(), so + // we keep text autosizing support in WebView for now. Further WebView + // work will take place in https://crbug.com/391990606. + aw_feature_overrides.DisableFeature(blink::features::kForceOffTextAutosizing); + // Local Network Access restrictions should not be enforced in WebView. // The LNA permission is auto-granted in WebView, but the permission // policy currently blocks iframes from using it. crbug.com/442879527 aw_feature_overrides.DisableFeature( network::features::kLocalNetworkAccessChecks); + // Disable background media for WebView, until we have consensus on long-term + // behavior crbug.com/453706851 + aw_feature_overrides.DisableFeature( + features::kAndroidEnableBackgroundMediaLargeFormFactors); + // SystemTracing is enabled by default only in WebView for now. aw_feature_overrides.EnableFeature(features::kEnablePerfettoSystemTracing); } diff --git a/tools/under-control/src/chrome/android/java/AndroidManifest.xml b/tools/under-control/src/chrome/android/java/AndroidManifest.xml index 44297dfd..b2151944 100755 --- a/tools/under-control/src/chrome/android/java/AndroidManifest.xml +++ b/tools/under-control/src/chrome/android/java/AndroidManifest.xml @@ -24,21 +24,21 @@ by a child template that "extends" this file. + + + - - {% if channel in ['default'] %} - - {% endif %} - @@ -64,6 +64,8 @@ by a child template that "extends" this file. + + @@ -90,11 +92,20 @@ by a child template that "extends" this file. + + + + + + @@ -1214,7 +1225,7 @@ by a child template that "extends" this file. android:excludeFromRecents="true" android:exported="true" android:noHistory="true" - android:theme="@style/Theme.Material3.DayNight" + android:theme="@style/Theme.Material3Expressive.DayNight" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize" > diff --git a/tools/under-control/src/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java b/tools/under-control/src/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java index 4645c4cd..25fdcfa0 100755 --- a/tools/under-control/src/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java +++ b/tools/under-control/src/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java @@ -321,7 +321,7 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid private final @Nullable Intent mKeepAliveServiceIntent; private final @Nullable Bundle mAnimationBundle; - private final int mUiType; + private int mUiType; private final int mTitleVisibilityState; private final @Nullable String mMediaViewerUrl; private final boolean mEnableEmbeddedMediaExperience; @@ -589,11 +589,6 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid } } - mOpenInBrowserState = - IntentUtils.safeGetIntExtra( - intent, - EXTRA_OPEN_IN_BROWSER_STATE, - OpenInBrowserButtonState.OPEN_IN_BROWSER_STATE_DEFAULT); if (mUiType == CustomTabsUiType.POPUP) { mShareState = CustomTabsIntent.SHARE_STATE_OFF; } else { @@ -611,12 +606,15 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid List menuItems = IntentUtils.getParcelableArrayListExtra(intent, CustomTabsIntent.EXTRA_MENU_ITEMS); - addOpenInBrowserOption(intent, context); + mOpenInBrowserState = + IntentUtils.safeGetIntExtra( + intent, + EXTRA_OPEN_IN_BROWSER_STATE, + OpenInBrowserButtonState.OPEN_IN_BROWSER_STATE_DEFAULT); + int oibState = adjustOpenInBrowserOption(intent); + maybeAddOpenInBrowserOption(context, oibState); updateExtraMenuItems(menuItems); - // Disable CCT share options for automotive. See b/300292495. - if (ShareUtils.enableShareForAutomotive(true)) { - addShareOption(intent, context); - } + maybeAddShareOption(intent, context); boolean isTwa = mSession != null @@ -639,6 +637,9 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid mTrustedWebActivityDisplayMode = resolveTwaDisplayMode(); mTrustedWebActivityDisplayOverrideMode = resolveTwaDisplayOverrideMode(); + // After TWA checks, update custom tabs ui types. Order seems to matter + // here. + mUiType = getCustomTabsUiType(requestedUiType); int intentVisibilityState = IntentUtils.safeGetIntExtra( intent, @@ -818,12 +819,12 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid } /** - * Get the verified custom tabs UI type, according to the intent extras, and whether - * the intent is trusted. + * Get the verified custom tabs UI type, according to the intent extras, and whether the intent + * is trusted. * - * If the intent extras include a valid EXTRA_NETWORK, consider that the custom tab is - * used for captive portal scenarios especially and the UI hides the "Open in Chrome browser" - * menu item accordingly. + *

If the intent extras include a valid EXTRA_NETWORK, consider that the custom tab is used + * for captive portal scenarios especially and the UI hides the "Open in Chrome browser" menu + * item accordingly. * * @param requestedUiType requested UI type in the intent, unqualified * @return verified UI type @@ -831,6 +832,9 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid @BrowserServicesIntentDataProvider.CustomTabsUiType private int getCustomTabsUiType(int requestedUiType) { if (mNetwork != null) return CustomTabsUiType.NETWORK_BOUND_TAB; + if (isTrustedWebActivity() && resolveDisplayMode() == DisplayMode.MINIMAL_UI) { + return CustomTabsUiType.TRUSTED_WEB_ACTIVITY; + } if (!isTrustedIntent()) { if (VersionInfo.isLocalBuild()) Log.w(TAG, FIRST_PARTY_PITFALL_MSG); return CustomTabsUiType.DEFAULT; @@ -942,10 +946,12 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid * {@link CustomTabsIntent#EXTRA_DEFAULT_SHARE_MENU_ITEM}. * */ - private void addShareOption(Intent intent, Context context) { + private void maybeAddShareOption(Intent intent, Context context) { + // Disable CCT share options for automotive. See crbug.com/300292495. + if (!ShareUtils.enableShareForAutomotive(true)) return; + if (mShareState == CustomTabsIntent.SHARE_STATE_DEFAULT) { - if (mToolbarButtons.isEmpty() - || (isCpaOnlyOpenInBrowserDefault() && canAddMoreToolbarItems())) { + if (canAddShareAction()) { mToolbarButtons.add( CustomButtonParamsImpl.createShareButton( context, getColorProvider().getToolbarColor())); @@ -953,8 +959,7 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid mShowShareItemInMenu = true; } } else if (mShareState == CustomTabsIntent.SHARE_STATE_ON) { - if (mToolbarButtons.isEmpty() - || (isCpaOnlyOpenInBrowserDefault() && canAddMoreToolbarItems())) { + if (canAddShareAction()) { mToolbarButtons.add( CustomButtonParamsImpl.createShareButton( context, getColorProvider().getToolbarColor())); @@ -970,7 +975,21 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid } } - private void addOpenInBrowserOption(Intent intent, Context context) { + private boolean canAddShareAction() { + if (!ChromeFeatureList.sCctAdaptiveButton.isEnabled()) return mToolbarButtons.isEmpty(); + + if (!canAddMoreToolbarItems()) return false; + + if (mShareState == CustomTabsIntent.SHARE_STATE_OFF) { + return false; + } else if (mShareState == CustomTabsIntent.SHARE_STATE_ON) { + return true; + } else { // mShareState == CustomTabsIntent.SHARE_STATE_DEFAULT + return mToolbarButtons.isEmpty(); + } + } + + private int adjustOpenInBrowserOption(Intent intent) { boolean usingInteractiveOmnibox = CustomTabsConnection.getInstance().shouldEnableOmniboxForIntent(this); @@ -992,18 +1011,40 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid && IntentUtils.safeGetBooleanExtra( intent, EXTRA_OPEN_IN_BROWSER_BUTTON_ALLOWED, false)) { openInBrowserState = CustomTabsButtonState.BUTTON_STATE_ON; - } else { + } else if (!isCpaOnlyOpenInBrowserDefault()) { openInBrowserState = CustomTabsButtonState.BUTTON_STATE_OFF; } } - if (openInBrowserState == CustomTabsButtonState.BUTTON_STATE_ON) { - if (mToolbarButtons.isEmpty() - || (isCpaOnlyOpenInBrowserDefault() && canAddMoreToolbarItems())) { - mToolbarButtons.add( - CustomButtonParamsImpl.createOpenInBrowserButton( - context, getColorProvider().getToolbarColor())); - } + return openInBrowserState; + } + + private void maybeAddOpenInBrowserOption(Context context, int oibState) { + if (canAddOpenInBrowserAction(oibState)) { + mToolbarButtons.add( + CustomButtonParamsImpl.createOpenInBrowserButton( + context, getColorProvider().getToolbarColor())); + } + } + + private boolean canAddOpenInBrowserAction(int oibState) { + if (!ChromeFeatureList.sCctAdaptiveButton.isEnabled() + && oibState == CustomTabsButtonState.BUTTON_STATE_ON) { + return mToolbarButtons.isEmpty(); + } + + if (!canAddMoreToolbarItems()) return false; + + if (oibState == CustomTabsButtonState.BUTTON_STATE_OFF) { + return false; + } else if (oibState == CustomTabsButtonState.BUTTON_STATE_ON) { + return mToolbarButtons.isEmpty() || mShareState != CustomTabsIntent.SHARE_STATE_ON; + } else { // oibState == CustomTabsButtonState.BUTTON_STATE_DEFAULT + // Give SHARE a higher precedence than OIB. OIB is visible only in CPA+OIB + // experiment arm where SHARE is explicitly off. + return mToolbarButtons.isEmpty() + && isCpaOnlyOpenInBrowserDefault() + && mShareState == CustomTabsIntent.SHARE_STATE_OFF; } } @@ -1690,10 +1731,7 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid @Override public boolean isInteractiveOmniboxEnabled() { - return ChromeFeatureList.sSearchInCCT.isEnabled() - && isPackageNameInList( - getClientPackageName(), - ChromeFeatureList.sSearchinCctOmniboxAllowedPackageNames.getValue()); + return ChromeFeatureList.sSearchInCCT.isEnabled(); } @Override @@ -1857,7 +1895,8 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid } private boolean isCpaOnlyOpenInBrowserDefault() { - return ChromeFeatureList.sCctAdaptiveButtonContextualOnly.getValue() + return ChromeFeatureList.sCctAdaptiveButton.isEnabled() + && ChromeFeatureList.sCctAdaptiveButtonContextualOnly.getValue() && ChromeFeatureList.sCctAdaptiveButtonDefaultVariant.getValue() == AdaptiveToolbarButtonVariant.OPEN_IN_BROWSER; } diff --git a/tools/under-control/src/chrome/browser/about_flags.cc b/tools/under-control/src/chrome/browser/about_flags.cc index dc3bfe52..8b2c03c0 100755 --- a/tools/under-control/src/chrome/browser/about_flags.cc +++ b/tools/under-control/src/chrome/browser/about_flags.cc @@ -64,6 +64,7 @@ #include "chrome/browser/task_manager/common/task_manager_features.h" #include "chrome/browser/tpcd/experiment/tpcd_experiment_features.h" #include "chrome/browser/ui/browser_navigator_params.h" +#include "chrome/browser/ui/omnibox/omnibox_next_features.h" #include "chrome/browser/ui/tabs/tab_group_home/constants.h" #include "chrome/browser/ui/toasts/toast_features.h" #include "chrome/browser/ui/ui_features.h" @@ -96,18 +97,15 @@ #include "components/compose/buildflags.h" #include "components/compose/core/browser/compose_features.h" #include "components/content_settings/core/common/features.h" -#include "components/contextual_search/core/browser/contextual_search_field_trial.h" -#include "components/contextual_search/core/browser/public.h" #include "components/contextual_tasks/public/features.h" #include "components/data_sharing/public/features.h" #include "components/data_sharing/public/switches.h" +#include "components/device_signals/core/common/signals_features.h" #include "components/dom_distiller/core/dom_distiller_features.h" #include "components/dom_distiller/core/dom_distiller_switches.h" #include "components/download/public/common/download_features.h" -#include "components/enterprise/buildflags/buildflags.h" #include "components/enterprise/client_certificates/core/features.h" #include "components/enterprise/data_controls/core/browser/features.h" -#include "components/enterprise/obfuscation/core/utils.h" #include "components/error_page/common/error_page_switches.h" #include "components/feature_engagement/public/feature_constants.h" #include "components/feature_engagement/public/feature_list.h" @@ -185,6 +183,8 @@ #include "components/sync/base/command_line_switches.h" #include "components/sync/base/features.h" #include "components/sync_preferences/features.h" +#include "components/touch_to_search/core/browser/contextual_search_field_trial.h" +#include "components/touch_to_search/core/browser/public.h" #include "components/tracing/common/tracing_switches.h" #include "components/translate/core/browser/translate_prefs.h" #include "components/translate/core/browser/translate_ranker_impl.h" @@ -306,11 +306,9 @@ #include "chrome/browser/component_updater/cros_component_installer_chromeos.h" #include "chrome/browser/nearby_sharing/common/nearby_share_features.h" #include "chrome/common/webui_url_constants.h" -#include "chromeos/ash/components/assistant/buildflags.h" #include "chromeos/ash/components/memory/swap_configuration.h" #include "chromeos/ash/experiences/arc/arc_features.h" #include "chromeos/ash/experiences/arc/arc_util.h" -#include "chromeos/ash/services/assistant/public/cpp/features.h" #include "chromeos/constants/chromeos_features.h" #include "chromeos/constants/chromeos_switches.h" #include "components/app_restore/features.h" @@ -354,11 +352,11 @@ #include "components/unexportable_keys/features.h" // nogncheck #endif -#if BUILDFLAG(ENABLE_EXTENSIONS) +#if BUILDFLAG(ENABLE_EXTENSIONS_CORE) #include "chrome/browser/extensions/cws_info_service.h" #include "extensions/common/extension_features.h" #include "extensions/common/switches.h" -#endif // BUILDFLAG(ENABLE_EXTENSIONS) +#endif // BUILDFLAG(ENABLE_EXTENSIONS_CORE) #if BUILDFLAG(ENABLE_PDF) #include "pdf/pdf_features.h" @@ -445,24 +443,6 @@ const FeatureEntry::Choice kTouchTextSelectionStrategyChoices[] = { blink::switches::kTouchTextSelectionStrategy_Direction}}; #if BUILDFLAG(IS_WIN) -const FeatureEntry::FeatureParam kMediaFoundationClearStrategyUseFrameServer[] = - {{"strategy", "frame-server"}}; - -const FeatureEntry::FeatureParam - kMediaFoundationClearStrategyUseDirectComposition[] = { - {"strategy", "direct-composition"}}; - -const FeatureEntry::FeatureParam kMediaFoundationClearStrategyUseDynamic[] = { - {"strategy", "dynamic"}}; - -const FeatureEntry::FeatureVariation kMediaFoundationClearStrategyVariations[] = - {{"Direct Composition", kMediaFoundationClearStrategyUseDirectComposition, - std::size(kMediaFoundationClearStrategyUseDirectComposition), nullptr}, - {"Frame Server", kMediaFoundationClearStrategyUseFrameServer, - std::size(kMediaFoundationClearStrategyUseFrameServer), nullptr}, - {"Dynamic", kMediaFoundationClearStrategyUseDynamic, - std::size(kMediaFoundationClearStrategyUseDynamic), nullptr}}; - const FeatureEntry::Choice kUseAngleChoicesWindows[] = { {flag_descriptions::kUseAngleDefault, "", ""}, {flag_descriptions::kUseAngleD3D11, switches::kUseANGLE, @@ -775,16 +755,6 @@ const FeatureEntry::FeatureVariation kOmahaMinSdkVersionAndroidVariations[] = { std::size(kOmahaMinSdkVersionAndroidMinSdk1000), nullptr}, }; -const FeatureEntry::FeatureParam - kOptimizationGuidePersonalizedFetchingAllowPageInsights[] = { - {"allowed_contexts", "CONTEXT_PAGE_INSIGHTS_HUB"}}; -const FeatureEntry::FeatureVariation - kOptimizationGuidePersonalizedFetchingAllowPageInsightsVariations[] = { - {"for Page Insights", - kOptimizationGuidePersonalizedFetchingAllowPageInsights, - std::size(kOptimizationGuidePersonalizedFetchingAllowPageInsights), - nullptr}}; - const FeatureEntry::FeatureParam kFeedHeaderRemovalParam1 = { feed::kFeedHeaderRemovalTreatmentParam, feed::kFeedHeaderRemovalTreatmentValue1}; @@ -945,11 +915,46 @@ const FeatureEntry::FeatureVariation {"with holdback", kSearchPrefetchWithHoldback, std::size(kSearchPrefetchWithHoldback), nullptr}}; +#if !BUILDFLAG(IS_ANDROID) +const FeatureEntry::FeatureParam kWebUIOmniboxAimPopupAddContextButtonNone[] = { + {"AddContextButtonVariant", "none"}, + {"ForceToolsAndModels", "true"}, +}; +const FeatureEntry::FeatureParam + kWebUIOmniboxAimPopupAddContextButtonBelowResults[] = { + {"AddContextButtonVariant", "below_results"}, + {"ForceToolsAndModels", "true"}, +}; +const FeatureEntry::FeatureParam + kWebUIOmniboxAimPopupAddContextButtonAboveResults[] = { + {"AddContextButtonVariant", "above_results"}, + {"ForceToolsAndModels", "true"}, +}; +const FeatureEntry::FeatureParam kWebUIOmniboxAimPopupAddContextButtonInline[] = + { + {"AddContextButtonVariant", "inline"}, + {"ForceToolsAndModels", "true"}, +}; + +const FeatureEntry::FeatureVariation kWebUIOmniboxAimPopupVariations[] = { + {"- No \"Add Context\" Button", kWebUIOmniboxAimPopupAddContextButtonNone, + std::size(kWebUIOmniboxAimPopupAddContextButtonNone), nullptr}, + {"- \"Add Context\" Button below results (Variant 1)", + kWebUIOmniboxAimPopupAddContextButtonBelowResults, + std::size(kWebUIOmniboxAimPopupAddContextButtonBelowResults), nullptr}, + {"- \"Add Context\" Button above results (Variant 2)", + kWebUIOmniboxAimPopupAddContextButtonAboveResults, + std::size(kWebUIOmniboxAimPopupAddContextButtonAboveResults), nullptr}, + {"- \"Add Context\" Button inline (Variant 3)", + kWebUIOmniboxAimPopupAddContextButtonInline, + std::size(kWebUIOmniboxAimPopupAddContextButtonInline), nullptr}}; + const FeatureEntry::FeatureParam kWebUIOmniboxPopupDebugSxS[] = { {"SxS", "true"}}; const FeatureEntry::FeatureVariation kWebUIOmniboxPopupDebugVariations[] = { {"Side by Side", kWebUIOmniboxPopupDebugSxS, std::size(kWebUIOmniboxPopupDebugSxS), nullptr}}; +#endif // !BUILDFLAG(IS_ANDROID) #if BUILDFLAG(IS_CHROMEOS) const FeatureEntry::FeatureParam kArcVmMemorySizeShift_200[] = { @@ -1182,7 +1187,9 @@ const FeatureEntry::FeatureVariation kTextSafetyClassifierVariations[] = { }; const FeatureEntry::FeatureParam kPageActionsMigrationParams[] = { + {"ai_mode", "true"}, {"autofill_address", "true"}, + {"cookie_controls", "true"}, {"click_to_call", "true"}, {"collaboration_messaging", "true"}, {"discounts", "true"}, @@ -1260,6 +1267,55 @@ const FeatureEntry::FeatureVariation kJourneysVariations[] = { std::size(kJourneysAllLocalesParams), nullptr}, }; + +const FeatureEntry::FeatureParam + kLensAimSuggestionsTypeContextualWith3Suggestions[] = { + {"lens-aim-suggestions-type", "Contextual"}, + {"number-of-aim-suggestions", "3"}}; + +const FeatureEntry::FeatureParam kLensAimSuggestionsTypeContextualWith5Suggestions[] = { + {"lens-aim-suggestions-type", "Contextual"}, + {"number-of-aim-suggestions", "5"} +}; + +const FeatureEntry::FeatureParam + kLensAimSuggestionsTypeContextualWith8Suggestions[] = { + {"lens-aim-suggestions-type", "Contextual"}, + {"number-of-aim-suggestions", "8"}}; + +const FeatureEntry::FeatureParam + kLensAimSuggestionsTypeMultimodalWith3Suggestions[] = { + {"lens-aim-suggestions-type", "Multimodal"}, + {"number-of-aim-suggestions", "3"}}; + +const FeatureEntry::FeatureParam kLensAimSuggestionsTypeMultimodalWith5Suggestions[] = { + {"lens-aim-suggestions-type", "Multimodal"}, + {"number-of-aim-suggestions", "5"}}; + +const FeatureEntry::FeatureParam + kLensAimSuggestionsTypeMultimodalWith8Suggestions[] = { + {"lens-aim-suggestions-type", "Multimodal"}, + {"number-of-aim-suggestions", "8"}}; + +const FeatureEntry::FeatureVariation kLensAimSuggestionsVariations[] = { + {"with Contextual - 3 suggestions", + kLensAimSuggestionsTypeContextualWith3Suggestions, + std::size(kLensAimSuggestionsTypeContextualWith3Suggestions), nullptr}, + {"with Contextual - 5 suggestions", kLensAimSuggestionsTypeContextualWith5Suggestions, + std::size(kLensAimSuggestionsTypeContextualWith5Suggestions), nullptr}, + {"with Contextual - 8 suggestions", + kLensAimSuggestionsTypeContextualWith8Suggestions, + std::size(kLensAimSuggestionsTypeContextualWith8Suggestions), nullptr}, + {"with Multimodal - 3 suggestions", + kLensAimSuggestionsTypeMultimodalWith3Suggestions, + std::size(kLensAimSuggestionsTypeMultimodalWith3Suggestions), nullptr}, + {"with Multimodal - 5 suggestions", kLensAimSuggestionsTypeMultimodalWith5Suggestions, + std::size(kLensAimSuggestionsTypeMultimodalWith5Suggestions), nullptr}, + {"with Multimodal - 8 suggestions", + kLensAimSuggestionsTypeMultimodalWith8Suggestions, + std::size(kLensAimSuggestionsTypeMultimodalWith8Suggestions), nullptr}, + }; + const FeatureEntry::FeatureVariation kRemotePageMetadataVariations[] = { {"High Performance Canonicalization", nullptr, 0, "3362133"}, }; @@ -1424,6 +1480,32 @@ const FeatureEntry::FeatureVariation std::size(kOmniboxContextualSearchOnFocusSuggestionsLimit4), nullptr}, }; +const FeatureEntry::FeatureParam kOmniboxAimEntryPointHintLimitsDaily1[] = { + {"HideAimHintText", "false"}, + {"HideAimHintTextOnNtpOpen", "false"}, + {"AimHintImpressionLimitDaily", "1"}, + {"AimHintImpressionLimitTotal", "5"}, + {"EnableHintImpressionLimits", "true"}}; +const FeatureEntry::FeatureParam kOmniboxAimEntryPointHintLimitsDaily3[] = { + {"HideAimHintText", "false"}, + {"HideAimHintTextOnNtpOpen", "false"}, + {"AimHintImpressionLimitDaily", "3"}, + {"AimHintImpressionLimitTotal", "10"}, + {"EnableHintImpressionLimits", "true"}}; +const FeatureEntry::FeatureParam kOmniboxAimEntryPointHintLimitsUnlimited[] = { + {"HideAimHintText", "false"}, + {"HideAimHintTextOnNtpOpen", "false"}, + {"EnableHintImpressionLimits", "false"}}; + +const FeatureEntry::FeatureVariation kOmniboxAiModeEntryPointVariations[] = { + {"Hint Limits Daily 1 Total 5", kOmniboxAimEntryPointHintLimitsDaily1, + std::size(kOmniboxAimEntryPointHintLimitsDaily1), nullptr}, + {"Hint Limits Daily 3 Total 10", kOmniboxAimEntryPointHintLimitsDaily3, + std::size(kOmniboxAimEntryPointHintLimitsDaily3), nullptr}, + {"Hint Limits Unlimited", kOmniboxAimEntryPointHintLimitsUnlimited, + std::size(kOmniboxAimEntryPointHintLimitsUnlimited), nullptr}, +}; + const FeatureEntry::FeatureParam kContextualSuggestionsAblateOthersWhenPresentAblateAll[] = { {"AblateSearchOnly", "false"}, @@ -1593,108 +1675,88 @@ const FeatureEntry::FeatureVariation kOmniboxToolbeltVariations[] = { std::size(kOmniboxToolbeltAllActionsZeroTypedInputs), nullptr}, }; -const FeatureEntry::FeatureParam kComposeboxShowZps[] = { - {"ShowComposeboxZps", "true"}, -}; -const FeatureEntry::FeatureParam kComposeboxShowTypedSuggestAndZps[] = { - {"ShowComposeboxZps", "true"}, - {"ShowComposeboxTypedSuggest", "true"}, -}; -const FeatureEntry::FeatureParam kComposeboxNoClickOutsideClosure[] = { - {"ConfigParam", "EgIQAA=="}, -}; -const FeatureEntry::FeatureParam kComposeboxNoEscClosure[] = { - {"ConfigParam", "EgIIAA=="}, -}; -const FeatureEntry::FeatureParam kComposeboxShowContextMenu[] = { - {"ShowContextMenu", "true"}, - {"ShowRecentTabChip", "true"}, -}; -const FeatureEntry::FeatureParam kComposeboxShowContextMenuAndZps[] = { - {"ShowComposeboxZps", "true"}, - {"ShowContextMenu", "true"}, - {"ShowRecentTabChip", "true"}, -}; -const FeatureEntry::FeatureParam kComposeboxShowContextMenuAndZpsMultiFile[] = { - {"MaxNumFiles", "5"}, - {"ShowComposeboxZps", "true"}, - {"ShowContextMenu", "true"}, - {"ShowRecentTabChip", "true"}, -}; const FeatureEntry::FeatureParam - kComposeboxShowContextMenuAndZpsMultiFileNoViewport[] = { + kComposeboxShowContextMenuAndSuggestMultiFile[] = { {"MaxNumFiles", "5"}, {"ShowComposeboxZps", "true"}, + {"ShowComposeboxTypedSuggest", "true"}, + {"ShowContextMenu", "true"}, + {"ShowRecentTabChip", "true"}, +}; +const FeatureEntry::FeatureParam + kComposeboxShowContextMenuAndSuggestMultiFileNoViewport[] = { + {"MaxNumFiles", "5"}, + {"ShowComposeboxZps", "true"}, + {"ShowComposeboxTypedSuggest", "true"}, {"ShowContextMenu", "true"}, {"ShowRecentTabChip", "true"}, {"EnableViewportImages", "false"}, }; const FeatureEntry::FeatureParam - kComposeboxShowContextMenuAndZpsMultiFileAndTabPreviews[] = { + kComposeboxShowContextMenuAndSuggestMultiFileAndTabPreviews[] = { {"MaxNumFiles", "5"}, {"ShowComposeboxZps", "true"}, + {"ShowComposeboxTypedSuggest", "true"}, {"ShowContextMenu", "true"}, {"ShowRecentTabChip", "true"}, {"ShowContextMenuTabPreviews", "true"}, }; const FeatureEntry::FeatureParam kShowToolsAndModels[] = { - {"ShowContextMenu", "true"}, - {"ShowToolsAndModels", "true"}, - {"ShowComposeboxZps", "true"}, + {"ShowContextMenu", "true"}, {"ShowToolsAndModels", "true"}, + {"ShowComposeboxZps", "true"}, {"ShowComposeboxTypedSuggest", "true"}, {"ForceToolsAndModels", "true"}, }; const FeatureEntry::FeatureParam kShowCreateImageTool[] = { - {"ShowContextMenu", "true"}, - {"ShowToolsAndModels", "true"}, - {"ShowCreateImageTool", "true"}, - {"ShowComposeboxZps", "true"}, - {"ForceToolsAndModels", "true"}, + {"ShowContextMenu", "true"}, {"ShowToolsAndModels", "true"}, + {"ShowCreateImageTool", "true"}, {"ShowComposeboxZps", "true"}, + {"ForceToolsAndModels", "true"}, {"ShowComposeboxTypedSuggest", "true"}, }; const FeatureEntry::FeatureParam kComposeboxNext[] = { {"MaxNumFiles", "5"}, {"ShowContextMenu", "true"}, {"ShowContextMenuTabPreviews", "true"}, {"ShowComposeboxZps", "true"}, + {"ShowComposeboxTypedSuggest", "true"}, {"ShowToolsAndModels", "true"}, {"ShowCreateImageTool", "true"}, {"ForceToolsAndModels", "true"}, + {"ShowRecentTabChip", "true"}, + {"CloseComposeboxByEscape", "false"}, + {"CloseComposeboxByClickOutside", "false"}, + {"ContextMenuEnableMultiTabSelection", "true"}, }; const FeatureEntry::FeatureParam kComposeboxNextSingleContext[] = { {"MaxNumFiles", "1"}, {"ShowContextMenu", "true"}, {"ShowContextMenuTabPreviews", "true"}, {"ShowComposeboxZps", "true"}, + {"ShowComposeboxTypedSuggest", "true"}, {"ShowToolsAndModels", "true"}, {"ShowCreateImageTool", "true"}, {"ForceToolsAndModels", "true"}, + {"ShowRecentTabChip", "true"}, + {"CloseComposeboxByEscape", "false"}, + {"CloseComposeboxByClickOutside", "false"}, }; const FeatureEntry::FeatureVariation kNtpComposeboxVariations[] = { - {"- Show ZPS", kComposeboxShowZps, std::size(kComposeboxShowZps), nullptr}, - {"- Show Typed Suggest and ZPS", kComposeboxShowTypedSuggestAndZps, - std::size(kComposeboxShowTypedSuggestAndZps), nullptr}, - {"- Disable Click Outside Closure", kComposeboxNoClickOutsideClosure, - std::size(kComposeboxNoClickOutsideClosure), nullptr}, - {"- Disable Escape Closure", kComposeboxNoEscClosure, - std::size(kComposeboxNoEscClosure), nullptr}, - {"- Show Contextual Input Menu", kComposeboxShowContextMenu, - std::size(kComposeboxShowContextMenu), nullptr}, - {"- Show Contextual Input Menu and ZPS", kComposeboxShowContextMenuAndZps, - std::size(kComposeboxShowContextMenuAndZps), nullptr}, - {"- Show Contextual Input Menu and ZPS 5 File Limit", - kComposeboxShowContextMenuAndZpsMultiFile, - std::size(kComposeboxShowContextMenuAndZpsMultiFile), nullptr}, - {"- Show Contextual Input Menu and ZPS 5 File Limit, no viewport uploading", - kComposeboxShowContextMenuAndZpsMultiFileNoViewport, - std::size(kComposeboxShowContextMenuAndZpsMultiFileNoViewport), nullptr}, - {"- Show Contextual Input Menu, ZPS 5 File Limit and Tab Previews", - kComposeboxShowContextMenuAndZpsMultiFileAndTabPreviews, - std::size(kComposeboxShowContextMenuAndZpsMultiFileAndTabPreviews), + {"- Show Contextual Input Menu and Suggest, 5 File Limit", + kComposeboxShowContextMenuAndSuggestMultiFile, + std::size(kComposeboxShowContextMenuAndSuggestMultiFile), nullptr}, + {"- Show Contextual Input Menu and Suggest, 5 File Limit, no viewport " + "uploading", + kComposeboxShowContextMenuAndSuggestMultiFileNoViewport, + std::size(kComposeboxShowContextMenuAndSuggestMultiFileNoViewport), nullptr}, - {"- Show Context Menu with Tools and Models, ZPS", kShowToolsAndModels, - std::size(kShowToolsAndModels), nullptr}, - {"- Show Create Image in Context Menu, ZPS", kShowCreateImageTool, - std::size(kShowCreateImageTool), nullptr}, + {"- Show Contextual Input Menu and Suggest, Tab Previews, 5 File Limit", + kComposeboxShowContextMenuAndSuggestMultiFileAndTabPreviews, + std::size(kComposeboxShowContextMenuAndSuggestMultiFileAndTabPreviews), + nullptr}, + {"- Show Contextual Input Menu and Suggest with Tools and Models", + kShowToolsAndModels, std::size(kShowToolsAndModels), nullptr}, + {"- Show Contextual Input Menu and Suggest with Tools and Models including " + "Create Images", + kShowCreateImageTool, std::size(kShowCreateImageTool), nullptr}, {"- Next Experience", kComposeboxNext, std::size(kComposeboxNext), nullptr}, {"- Next Experience Single Context", kComposeboxNextSingleContext, std::size(kComposeboxNextSingleContext), nullptr}, @@ -1703,12 +1765,27 @@ const FeatureEntry::FeatureVariation kNtpComposeboxVariations[] = { const FeatureEntry::FeatureParam kShowNextRealboxTallBottomContext[] = { {"RealboxLayoutMode", ntp_realbox::kRealboxLayoutModeTallBottomContext}, }; +const FeatureEntry::FeatureParam + kShowNextRealboxTallBottomContextCyclingPlaceholders[] = { + {"RealboxLayoutMode", ntp_realbox::kRealboxLayoutModeTallBottomContext}, + {"CyclingPlaceholders", "true"}, +}; const FeatureEntry::FeatureParam kShowNextRealboxTallTopContext[] = { {"RealboxLayoutMode", ntp_realbox::kRealboxLayoutModeTallTopContext}, }; +const FeatureEntry::FeatureParam + kShowNextRealboxTallTopContextCyclingPlaceholders[] = { + {"RealboxLayoutMode", ntp_realbox::kRealboxLayoutModeTallTopContext}, + {"CyclingPlaceholders", "true"}, +}; const FeatureEntry::FeatureParam kShowNextRealboxCompact[] = { {"RealboxLayoutMode", ntp_realbox::kRealboxLayoutModeCompact}, }; +const FeatureEntry::FeatureParam kShowNextRealboxCompactCyclingPlaceholders[] = + { + {"RealboxLayoutMode", ntp_realbox::kRealboxLayoutModeCompact}, + {"CyclingPlaceholders", "true"}, +}; const FeatureEntry::FeatureVariation kNtpRealboxNextVariations[] = { {"- Show Next Realbox with Bottom Context Button (TallBottomContext)", @@ -1719,6 +1796,24 @@ const FeatureEntry::FeatureVariation kNtpRealboxNextVariations[] = { nullptr}, {"- Show Next Realbox (Compact)", kShowNextRealboxCompact, std::size(kShowNextRealboxCompact), nullptr}, + {"- Show Next Realbox: Bottom Context, Cycling placeholders", + kShowNextRealboxTallBottomContextCyclingPlaceholders, + std::size(kShowNextRealboxTallBottomContextCyclingPlaceholders), nullptr}, + {"- Show Next Realbox: Top Context, Cycling placeholders", + kShowNextRealboxTallTopContextCyclingPlaceholders, + std::size(kShowNextRealboxTallTopContextCyclingPlaceholders), nullptr}, + {"- Show Next Realbox: Compact, Cycling placeholders", + kShowNextRealboxCompactCyclingPlaceholders, + std::size(kShowNextRealboxCompactCyclingPlaceholders), nullptr}, +}; + +const FeatureEntry::FeatureParam kNtpNextShowStaticText[] = { + {"NtpNextShowStaticTextParam", "true"}, +}; + +const FeatureEntry::FeatureVariation kNtpNextVariations[] = { + {"- Show Static Text", kNtpNextShowStaticText, + std::size(kNtpNextShowStaticText), nullptr}, }; #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || @@ -1992,14 +2087,49 @@ const FeatureEntry::FeatureVariation std::size(kOmniboxRemoveSearchReadyOmniboxNoMatchParam), nullptr}}; #endif +const FeatureEntry::FeatureParam kOmniboxAimToggleOnlyParam[] = { + {"aim_toggle_only", "true"}}; + +const FeatureEntry::FeatureVariation kOmniboxMultimodalInputVariants[] = { + {"AIM Toggle Only", kOmniboxAimToggleOnlyParam, + std::size(kOmniboxAimToggleOnlyParam), nullptr}}; + +const FeatureEntry::FeatureParam kOmniboxImprovementForLFFVariationsAll[] = { + {OmniboxFieldTrial::kOmniboxImprovementForLFFSwitchToTabChip.name, "true"}, + {OmniboxFieldTrial::kOmniboxImprovementForLFFRemoveSuggestionViaButton.name, + "true"}, + {OmniboxFieldTrial::kOmniboxImprovementForLFFPersistEditingState.name, + "true"}}; + const FeatureEntry::FeatureParam kOmniboxImprovementForLFFVariationsSwitchToTabChip[] = { {OmniboxFieldTrial::kOmniboxImprovementForLFFSwitchToTabChip.name, "true"}}; +const FeatureEntry::FeatureParam + kOmniboxImprovementForLFFVariationsRemoveSuggestionViaButton[] = { + {OmniboxFieldTrial::kOmniboxImprovementForLFFRemoveSuggestionViaButton + .name, + "true"}}; + +const FeatureEntry::FeatureParam + kOmniboxImprovementForLFFVariationsPersistEditingState[] = { + {OmniboxFieldTrial::kOmniboxImprovementForLFFPersistEditingState.name, + "true"}}; + const FeatureEntry::FeatureVariation kOmniboxImprovementForLFFVariations[] = { + {"All", kOmniboxImprovementForLFFVariationsAll, + std::size(kOmniboxImprovementForLFFVariationsAll), nullptr}, {"Switch to Tab Chip", kOmniboxImprovementForLFFVariationsSwitchToTabChip, - std::size(kOmniboxImprovementForLFFVariationsSwitchToTabChip), nullptr}}; + std::size(kOmniboxImprovementForLFFVariationsSwitchToTabChip), nullptr}, + {"Remove Suggestion", + kOmniboxImprovementForLFFVariationsRemoveSuggestionViaButton, + std::size(kOmniboxImprovementForLFFVariationsRemoveSuggestionViaButton), + nullptr}, + {"Persist Editing State", + kOmniboxImprovementForLFFVariationsPersistEditingState, + std::size(kOmniboxImprovementForLFFVariationsPersistEditingState), + nullptr}}; #endif // BUILDFLAG(IS_ANDROID) @@ -3481,25 +3611,6 @@ const FeatureEntry::FeatureVariation std::size(kSafetyCheckUnusedSitePermissionsWithDelayParam), nullptr}, }; -const FeatureEntry::FeatureParam kSafetyHub_NoDelay[] = { - {safety_check::features::kPasswordCheckNotificationIntervalName, "0d"}, - {safety_check::features::kRevokedPermissionsNotificationIntervalName, "0d"}, - {safety_check::features::kNotificationPermissionsNotificationIntervalName, - "0d"}, - {safety_check::features::kSafeBrowsingNotificationIntervalName, "0d"}}; -const FeatureEntry::FeatureParam kSafetyHub_WithDelay[] = { - {safety_check::features::kPasswordCheckNotificationIntervalName, "0d"}, - {safety_check::features::kRevokedPermissionsNotificationIntervalName, "5m"}, - {safety_check::features::kNotificationPermissionsNotificationIntervalName, - "5m"}, - {safety_check::features::kSafeBrowsingNotificationIntervalName, "5m"}}; -const FeatureEntry::FeatureVariation kSafetyHubVariations[] = { - {"for testing no delay", kSafetyHub_NoDelay, std::size(kSafetyHub_NoDelay), - nullptr}, - {"for testing with delay", kSafetyHub_WithDelay, - std::size(kSafetyHub_WithDelay), nullptr}, -}; - const FeatureEntry::FeatureParam kTPCPhaseOutFacilitatedTestingControl1[] = { {tpcd::experiment::kForceEligibleForTestingName, "false"}, {tpcd::experiment::kDisable3PCookiesName, "false"}, @@ -3817,19 +3928,6 @@ const FeatureEntry::Choice kCastMirroringTargetPlayoutDelayChoices[] = { #endif // !BUILDFLAG(IS_ANDROID) -#if BUILDFLAG(ENABLE_BOUND_SESSION_CREDENTIALS) -const FeatureEntry::FeatureParam - kEnableBoundSessionCredentialsWithMultiSessionSupport[] = { - {"exclusive-registration-path", ""}}; - -const FeatureEntry::FeatureVariation - kEnableBoundSessionCredentialsVariations[] = { - {"with multi-session", - kEnableBoundSessionCredentialsWithMultiSessionSupport, - std::size(kEnableBoundSessionCredentialsWithMultiSessionSupport), - nullptr}}; -#endif // BUILDFLAG(ENABLE_BOUND_SESSION_CREDENTIALS) - #if BUILDFLAG(IS_ANDROID) const FeatureEntry::FeatureParam kEdgeToEdgeTabletFeatureParams[] = { {"e2e_tablet_invisible_bottom_chin_min_width", "768"}}; @@ -3900,20 +3998,16 @@ const flags_ui::FeatureEntry::FeatureVariation #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) || // BUILDFLAG(IS_CHROMEOS) -#if BUILDFLAG(IS_ANDROID) - -// UnoPhase2FollowUp flags. -const char kFastFollowFeatures[] = - "UnoForAuto," - "UnoPhase2FollowUp," - "UseHostedDomainForManagementCheckOnSignin"; - +#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) const FeatureEntry::Choice kReplaceSyncPromosWithSignInPromosChoices[] = { {"Default", "", ""}, - {"Follow-ups disabled", "disable-features", kFastFollowFeatures}, - {"Follow-ups enabled", "enable-features", kFastFollowFeatures}, + {"Disabled", switches::kDisableFeatures, + "ReplaceSyncPromosWithSignInPromos"}, + {"Enabled", switches::kEnableFeatures, "ReplaceSyncPromosWithSignInPromos"}, + {"Enabled with follow-ups", switches::kEnableFeatures, + "ReplaceSyncPromosWithSignInPromos,UnoPhase2FollowUp"}, }; -#endif // BUILDFLAG(IS_ANDROID) +#endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) #if !BUILDFLAG(IS_ANDROID) const FeatureEntry::FeatureParam kLinkPreviewTriggerTypeAltClick[] = { @@ -4840,6 +4934,26 @@ const FeatureEntry::FeatureVariation kAndroidTabHighlightingVariations[] = { {"Force Shift Click", kAndroidTabHighlightingForceShiftClick, std::size(kAndroidTabHighlightingForceShiftClick), nullptr}}; +const FeatureEntry::FeatureParam kAndroidPinnedTabsSearchBoxMovement[] = { + {"search_box_movement", "true"}}; +const FeatureEntry::FeatureParam kAndroidPinnedTabsSearchBoxSquishAnimation[] = + {{"search_box_squish_animation", "true"}}; +const FeatureEntry::FeatureParam + kAndroidPinnedTabsSearchBoxMovementWithSquishAnimation[] = { + {"search_box_movement", "true"}, + {"search_box_squish_animation", "true"}}; +const FeatureEntry::FeatureVariation kAndroidPinnedTabsVariations[] = { + {"Enable search box movement", kAndroidPinnedTabsSearchBoxMovement, + std::size(kAndroidPinnedTabsSearchBoxMovement), nullptr}, + {"Enable search box squish animation", + kAndroidPinnedTabsSearchBoxSquishAnimation, + std::size(kAndroidPinnedTabsSearchBoxSquishAnimation), nullptr}, + {"Enable search box movement with squish animation", + kAndroidPinnedTabsSearchBoxMovementWithSquishAnimation, + std::size(kAndroidPinnedTabsSearchBoxMovementWithSquishAnimation), + nullptr}, +}; + const FeatureEntry::FeatureParam kAndroidTipsNotificationsTrustAndSafety[] = { {"trust_and_safety", "true"}}; const FeatureEntry::FeatureParam kAndroidTipsNotificationsEssential[] = { @@ -4900,11 +5014,41 @@ const FeatureEntry::FeatureVariation kMobilePromoOnDesktopVariations[] = { #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) || \ BUILDFLAG(IS_CHROMEOS) +const FeatureEntry::FeatureParam kNtpCustomizeChromeAutoOpenOnEveryNTP[] = { + {"max_customize_chrome_auto_shown_count", "5"}, + {"max_customize_chrome_auto_shown_session_count", "5"}}; +const FeatureEntry::FeatureParam kNtpCustomizeChromeAutoOpenOnFirstNTPOnly[] = { + {"max_customize_chrome_auto_shown_count", "5"}, + {"max_customize_chrome_auto_shown_session_count", "1"}}; +const FeatureEntry::FeatureParam kNtpCustomizeChromeAutoOpenIPHOnly[] = { + {"max_customize_chrome_auto_shown_count", "0"}, + {"max_customize_chrome_auto_shown_session_count", "0"}}; +const FeatureEntry::FeatureVariation kNtpCustomizeChromeAutoOpenVariations[] = { + {"- On every NTP", kNtpCustomizeChromeAutoOpenOnEveryNTP, + std::size(kNtpCustomizeChromeAutoOpenOnEveryNTP), nullptr}, + {"- First NTP only", kNtpCustomizeChromeAutoOpenOnFirstNTPOnly, + std::size(kNtpCustomizeChromeAutoOpenOnFirstNTPOnly), nullptr}, + {"- IPH only", kNtpCustomizeChromeAutoOpenIPHOnly, + std::size(kNtpCustomizeChromeAutoOpenIPHOnly), nullptr}, +}; + const FeatureEntry::FeatureParam kNtpEnterpriseShortcutsWithFakeData[] = { - {"use_fake_data", "true"}}; + {"use_fake_data", "true"}, + {"allow_mixing", "false"}}; +const FeatureEntry::FeatureParam + kNtpEnterpriseShortcutsWithFakeDataWithMixing[] = { + {"use_fake_data", "true"}, + {"allow_mixing", "true"}}; +const FeatureEntry::FeatureParam kNtpEnterpriseShortcutsWithMixing[] = { + {"allow_mixing", "true"}}; const FeatureEntry::FeatureVariation kNtpEnterpriseShortcutsVariations[] = { {"with fake data", kNtpEnterpriseShortcutsWithFakeData, - std::size(kNtpEnterpriseShortcutsWithFakeData), nullptr}}; + std::size(kNtpEnterpriseShortcutsWithFakeData), nullptr}, + {"with fake data with mixing", + kNtpEnterpriseShortcutsWithFakeDataWithMixing, + std::size(kNtpEnterpriseShortcutsWithFakeDataWithMixing), nullptr}, + {"with mixing", kNtpEnterpriseShortcutsWithMixing, + std::size(kNtpEnterpriseShortcutsWithMixing), nullptr}}; #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) || \ // BUILDFLAG(IS_CHROMEOS) @@ -4962,21 +5106,76 @@ const FeatureEntry::FeatureVariation kPolicyDisclaimerRegistrationRetryDelay24h, std::size(kPolicyDisclaimerRegistrationRetryDelay24h), nullptr}, }; + +const FeatureEntry::FeatureParam + kOAuthMultiloginCookieBindingWithoutEnforcement[] = {{"enforced", "false"}}; +const FeatureEntry::FeatureParam + kOAuthMultiloginCookieBindingWithEnforcement[] = {{"enforced", "true"}}; + +const FeatureEntry::FeatureVariation + kOAuthMultiloginCookieBindingEnforcementVariations[] = { + {"without enforcement", kOAuthMultiloginCookieBindingWithoutEnforcement, + std::size(kOAuthMultiloginCookieBindingWithoutEnforcement), nullptr}, + {"with enforcement", kOAuthMultiloginCookieBindingWithEnforcement, + std::size(kOAuthMultiloginCookieBindingWithEnforcement), nullptr}, +}; #endif // BUILDFLAG(ENABLE_DICE_SUPPORT) #if BUILDFLAG(IS_ANDROID) -const FeatureEntry::FeatureParam kSeamlessSigninPromoTypeCompact[] = { - {"seamless-signin-promo-type", "compact"}}; -const FeatureEntry::FeatureParam kSeamlessSigninPromoTypeTwoButtons[] = { - {"seamless-signin-promo-type", "twoButtons"}}; - -const FeatureEntry::FeatureVariation kSeamlessSigninPromoTypes[] = { - {"with compact layout", kSeamlessSigninPromoTypeCompact, - std::size(kSeamlessSigninPromoTypeCompact), nullptr}, - {"with two buttons layout", kSeamlessSigninPromoTypeTwoButtons, - std::size(kSeamlessSigninPromoTypeTwoButtons), nullptr}}; +const FeatureEntry::FeatureParam kSeamlessSigninTwoButtonsContinue[] = { + {"seamless-signin-promo-type", "twoButtons"}, + {"seamless-signin-string-type", "continueButton"}}; +const FeatureEntry::FeatureParam kSeamlessSigninCompactContinue[] = { + {"seamless-signin-promo-type", "compact"}, + {"seamless-signin-string-type", "continueButton"}}; +const FeatureEntry::FeatureParam kSeamlessSigninTwoButtonsSignin[] = { + {"seamless-signin-promo-type", "twoButtons"}, + {"seamless-signin-string-type", "signinButton"}}; +const FeatureEntry::FeatureParam kSeamlessSigninCompactSignin[] = { + {"seamless-signin-promo-type", "compact"}, + {"seamless-signin-string-type", "signinButton"}}; +const FeatureEntry::FeatureVariation kSeamlessSigninVariations[] = { + {"with two buttons layout and \"Continue as\" button (group 1)", + kSeamlessSigninTwoButtonsContinue, + std::size(kSeamlessSigninTwoButtonsContinue), nullptr}, + {"with compact layout and \"Continue as\" button (group 2)", + kSeamlessSigninCompactContinue, std::size(kSeamlessSigninCompactContinue), + nullptr}, + {"with two buttons layout and \"Sign in as\" button (group 3)", + kSeamlessSigninTwoButtonsSignin, + std::size(kSeamlessSigninTwoButtonsSignin), nullptr}, + {"with compact layout and \"Sign in as\" button (group 4)", + kSeamlessSigninCompactSignin, std::size(kSeamlessSigninCompactSignin), + nullptr}}; #endif // BUILDFLAG(IS_ANDROID) +#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) +const FeatureEntry::FeatureParam kProfilePickerTextVariation1[] = { + {"profile-picker-variation", "keep-work-and-life-separate"}}; +const FeatureEntry::FeatureParam kProfilePickerTextVariation2[] = { + {"profile-picker-variation", "got-another-google-account"}}; +const FeatureEntry::FeatureParam kProfilePickerTextVariation3[] = { + {"profile-picker-variation", "keep-tasks-separate"}}; +const FeatureEntry::FeatureParam kProfilePickerTextVariation4[] = { + {"profile-picker-variation", "sharing-a-computer"}}; +const FeatureEntry::FeatureParam kProfilePickerTextVariation5[] = { + {"profile-picker-variation", "keep-everything-in-chrome"}}; + +const FeatureEntry::FeatureVariation kProfilePickerTextVariations[] = { + {"V1: Keep work and life separate", kProfilePickerTextVariation1, + std::size(kProfilePickerTextVariation1), nullptr}, + {"V2: Got another Google Account?", kProfilePickerTextVariation2, + std::size(kProfilePickerTextVariation2), nullptr}, + {"V3: Keep school, side projects, and other tasks separate", + kProfilePickerTextVariation3, std::size(kProfilePickerTextVariation3), + nullptr}, + {"V4: Sharing a computer?", kProfilePickerTextVariation4, + std::size(kProfilePickerTextVariation4), nullptr}, + {"V5: Keep everything in Chrome", kProfilePickerTextVariation5, + std::size(kProfilePickerTextVariation5), nullptr}, +}; +#endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) + // RECORDING USER METRICS FOR FLAGS: // ----------------------------------------------------------------------------- // The first line of the entry is the internal name. @@ -5270,9 +5469,6 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kAltClickAndSixPackCustomizationName, flag_descriptions::kAltClickAndSixPackCustomizationDescription, kOsCrOS, FEATURE_VALUE_TYPE(ash::features::kAltClickAndSixPackCustomization)}, - {"apn-policies", flag_descriptions::kApnPoliciesName, - flag_descriptions::kApnPoliciesDescription, kOsCrOS, - FEATURE_VALUE_TYPE(chromeos::features::kApnPolicies)}, {"apn-revamp", flag_descriptions::kApnRevampName, flag_descriptions::kApnRevampDescription, kOsCrOS, FEATURE_VALUE_TYPE(ash::features::kApnRevamp)}, @@ -5514,19 +5710,6 @@ const FeatureEntry kFeatureEntries[] = { kOsWin, FEATURE_VALUE_TYPE(media::kHardwareSecureDecryptionFallback), }, - { - "enable-media-foundation-clear", - flag_descriptions::kMediaFoundationClearName, - flag_descriptions::kMediaFoundationClearDescription, - kOsWin, - FEATURE_VALUE_TYPE(media::kMediaFoundationClearPlayback), - }, - {"enable-media-foundation-clear-rendering-strategy", - flag_descriptions::kMediaFoundationClearStrategyName, - flag_descriptions::kMediaFoundationClearStrategyDescription, kOsWin, - FEATURE_WITH_PARAMS_VALUE_TYPE(media::kMediaFoundationClearRendering, - kMediaFoundationClearStrategyVariations, - "MediaFoundationClearRendering")}, { "enable-media-foundation-camera-usage-monitoring", flag_descriptions::kMediaFoundationCameraUsageMonitoringName, @@ -5709,6 +5892,9 @@ const FeatureEntry kFeatureEntries[] = { FEATURE_WITH_PARAMS_VALUE_TYPE(dom_distiller::kReaderModeUseReadability, kReaderModeUseReadabilityChoices, "Reader Mode use readability")}, + {"submenus-in-app-menu", flag_descriptions::kSubmenusInAppMenuName, + flag_descriptions::kSubmenusInAppMenuDescription, kOsAndroid, + FEATURE_VALUE_TYPE(chrome::android::kSubmenusInAppMenu)}, {"submenus-tab-context-menu-lff-tab-strip", flag_descriptions::kSubmenusTabContextMenuLffTabStripName, flag_descriptions::kSubmenusTabContextMenuLffTabStripDescription, @@ -5785,10 +5971,10 @@ const FeatureEntry kFeatureEntries[] = { #endif // BUILDFLAG(IS_CHROMEOS) #if (BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_ANDROID)) - {"mojo-linux-sharedmem", flag_descriptions::kMojoLinuxChannelSharedMemName, - flag_descriptions::kMojoLinuxChannelSharedMemDescription, + {"mojo-use-eventfd", flag_descriptions::kMojoUseEventFdName, + flag_descriptions::kMojoUseEventFdDescription, kOsCrOS | kOsLinux | kOsAndroid, - FEATURE_VALUE_TYPE(mojo::core::kMojoLinuxChannelSharedMem)}, + FEATURE_VALUE_TYPE(mojo::core::kMojoUseEventFd)}, #endif #if BUILDFLAG(IS_ANDROID) {"enable-site-isolation-for-password-sites", @@ -6071,13 +6257,13 @@ const FeatureEntry kFeatureEntries[] = { #endif // BUILDFLAG(ENABLE_OPENXR) {"webxr-projection-layers", flag_descriptions::kWebXrProjectionLayersName, flag_descriptions::kWebXrProjectionLayersDescription, kOsWin | kOsAndroid, - FEATURE_VALUE_TYPE(device::features::kWebXrLayers)}, + FEATURE_VALUE_TYPE(device::features::kWebXRLayers)}, {"webxr-webgpu-binding", flag_descriptions::kWebXrWebGpuBindingName, flag_descriptions::kWebXrWebGpuBindingDescription, kOsWin | kOsAndroid, - FEATURE_VALUE_TYPE(device::features::kWebXrWebGpuBinding)}, + FEATURE_VALUE_TYPE(device::features::kWebXRWebGPUBinding)}, {"webxr-incubations", flag_descriptions::kWebXrIncubationsName, flag_descriptions::kWebXrIncubationsDescription, kOsAll, - FEATURE_VALUE_TYPE(device::features::kWebXrIncubations)}, + FEATURE_VALUE_TYPE(device::features::kWebXRIncubations)}, {"webxr-internals", flag_descriptions::kWebXrInternalsName, flag_descriptions::kWebXrInternalsDescription, kOsDesktop | kOsAndroid, FEATURE_VALUE_TYPE(device::features::kWebXrInternals)}, @@ -6186,16 +6372,12 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kGridTabSwitcherUpdateDescription, kOsAndroid, FEATURE_VALUE_TYPE(chrome::android::kGridTabSwitcherUpdate)}, - // Predictive back gesture - {"allow-tab-closing-upon-minimization", - flag_descriptions::kAllowTabClosingUponMinimizationName, - flag_descriptions::kAllowTabClosingUponMinimizationDescription, kOsAndroid, - FEATURE_VALUE_TYPE(chrome::android::kAllowTabClosingUponMinimization)}, - // Pinned tabs. {"android-pinned-tabs", flag_descriptions::kAndroidPinnedTabsName, flag_descriptions::kAndroidPinnedTabsDescription, kOsAndroid, - FEATURE_VALUE_TYPE(chrome::android::kAndroidPinnedTabs)}, + FEATURE_WITH_PARAMS_VALUE_TYPE(chrome::android::kAndroidPinnedTabs, + kAndroidPinnedTabsVariations, + "AndroidPinnedTabsVariations")}, // Pinned tabs on tablet tab strip. {"android-pinned-tabs-tablet-tab-strip", @@ -6203,6 +6385,12 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kAndroidPinnedTabsTabletTabStripDescription, kOsAndroid, FEATURE_VALUE_TYPE(chrome::android::kAndroidPinnedTabsTabletTabStrip)}, + // Home module pref refactor + {"home-module-pref-refactor", + flag_descriptions::kHomeModulePrefRefactorName, + flag_descriptions::kHomeModulePrefRefactorDescription, kOsAndroid, + FEATURE_VALUE_TYPE(chrome::android::kHomeModulePrefRefactor)}, + {"hub-back-button", flag_descriptions::kHubBackButtonName, flag_descriptions::kHubBackButtonDescription, kOsAndroid, FEATURE_VALUE_TYPE(chrome::android::kHubBackButton)}, @@ -6216,15 +6404,25 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kTabCollectionAndroidDescription, kOsAndroid, FEATURE_VALUE_TYPE(chrome::android::kTabCollectionAndroid)}, + {"tab-freezing-uses-discard", + flag_descriptions::kTabFreezingUsesDiscardName, + flag_descriptions::kTabFreezingUsesDiscardDescription, kOsAndroid, + FEATURE_VALUE_TYPE(chrome::android::kTabFreezingUsesDiscard)}, + {"toolbar-phone-animation-refactor", flag_descriptions::kToolbarPhoneAnimationRefactorName, flag_descriptions::kToolbarPhoneAnimationRefactorDescription, kOsAndroid, FEATURE_VALUE_TYPE(chrome::android::kToolbarPhoneAnimationRefactor)}, - {"form-factor-use-window-metrics", - flag_descriptions::kFormFactorUseMaxWindowMetricsName, - flag_descriptions::kFormFactorUseMaxWindowMetricsDescription, kOsAndroid, - FEATURE_VALUE_TYPE(ui::kFormFactorUseMaxWindowMetrics)}, + {"refactor-min-width-context-override", + flag_descriptions::kRefactorMinWidthContextOverrideName, + flag_descriptions::kRefactorMinWidthContextOverrideDescription, kOsAndroid, + FEATURE_VALUE_TYPE(ui::kRefactorMinWidthContextOverride)}, + + {"toolbar-stale-capture-bug-fix", + flag_descriptions::kToolbarStaleCaptureBugFixName, + flag_descriptions::kToolbarStaleCaptureBugFixDescription, kOsAndroid, + FEATURE_VALUE_TYPE(chrome::android::kToolbarStaleCaptureBugFix)}, {"toolbar-tablet-resize-refactor", flag_descriptions::kToolbarTabletResizeRefactorName, @@ -6364,6 +6562,10 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kAccessibilityDeprecateTypeAnnounceDescription, kOsAndroid, FEATURE_VALUE_TYPE(features::kAccessibilityDeprecateTypeAnnounce)}, + {"enable-accessibility-labeledby", + flag_descriptions::kEnableAccessibilityLabeledByName, + flag_descriptions::kEnableAccessibilityLabeledByDescription, kOsAndroid, + FEATURE_VALUE_TYPE(features::kAccessibilityLabeledBy)}, {"enable-accessibility-include-long-click-action", flag_descriptions::kAccessibilityIncludeLongClickActionName, flag_descriptions::kAccessibilityIncludeLongClickActionDescription, @@ -6458,18 +6660,6 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kImeSwitchCheckConnectionStatusName, flag_descriptions::kImeSwitchCheckConnectionStatusDescription, kOsCrOS, FEATURE_VALUE_TYPE(ash::features::kImeSwitchCheckConnectionStatus)}, - {"enable-cros-japanese-os-settings", - flag_descriptions::kJapaneseOSSettingsName, - flag_descriptions::kJapaneseOSSettingsDescription, kOsCrOS, - FEATURE_VALUE_TYPE(ash::features::kJapaneseOSSettings)}, - {"enable-accessibility-bounce-keys", - flag_descriptions::kAccessibilityBounceKeysName, - flag_descriptions::kAccessibilityBounceKeysDescription, kOsCrOS, - FEATURE_VALUE_TYPE(features::kAccessibilityBounceKeys)}, - {"enable-accessibility-slow-keys", - flag_descriptions::kAccessibilitySlowKeysName, - flag_descriptions::kAccessibilitySlowKeysDescription, kOsCrOS, - FEATURE_VALUE_TYPE(features::kAccessibilitySlowKeys)}, {"enable-experimental-accessibility-dictation-context-checking", flag_descriptions::kExperimentalAccessibilityDictationContextCheckingName, flag_descriptions:: @@ -6511,6 +6701,10 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kAndroidGrammarCheckName, flag_descriptions::kAndroidGrammarCheckDescription, kOsAndroid, FEATURE_VALUE_TYPE(spellcheck::kAndroidGrammarCheck)}, + {"enable-android-media-insertion", + flag_descriptions::kAndroidMediaInsertionName, + flag_descriptions::kAndroidMediaInsertionDescription, kOsAndroid, + FEATURE_VALUE_TYPE(features::kAndroidMediaInsertion)}, {"enable-android-spellcheck-native-ui", flag_descriptions::kAndroidSpellcheckNativeUiName, flag_descriptions::kAndroidSpellcheckNativeUiDescription, kOsAndroid, @@ -6565,10 +6759,6 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kArcAAudioMMAPLowLatencyName, flag_descriptions::kArcAAudioMMAPLowLatencyDescription, kOsCrOS, PLATFORM_FEATURE_NAME_TYPE("CrOSLateBootArcVmAAudioMMAPLowLatency")}, - {"arc-custom-tabs-experiment", - flag_descriptions::kArcCustomTabsExperimentName, - flag_descriptions::kArcCustomTabsExperimentDescription, kOsCrOS, - FEATURE_VALUE_TYPE(arc::kCustomTabsExperimentFeature)}, {kArcEnableAttestationFlag, flag_descriptions::kArcEnableAttestationName, flag_descriptions::kArcEnableAttestationDescription, kOsCrOS, FEATURE_VALUE_TYPE(arc::kEnableArcAttestation)}, @@ -6611,10 +6801,6 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kArcSwitchToKeyMintDaemonName, flag_descriptions::kArcSwitchToKeyMintDaemonDesc, kOsCrOS, PLATFORM_FEATURE_NAME_TYPE("CrOSLateBootArcSwitchToKeyMintDaemon")}, - {"arc-switch-to-keymint-on-t-override", - flag_descriptions::kArcSwitchToKeyMintOnTOverrideName, - flag_descriptions::kArcSwitchToKeyMintOnTOverrideDesc, kOsCrOS, - FEATURE_VALUE_TYPE(arc::kSwitchToKeyMintOnTOverride)}, {"arc-sync-install-priority", flag_descriptions::kArcSyncInstallPriorityName, flag_descriptions::kArcSyncInstallPriorityDescription, kOsCrOS, @@ -6791,6 +6977,10 @@ const FeatureEntry kFeatureEntries[] = { kAndroidComposeplateVariations, "AndroidComposeplate")}, + {"android-composeplate-lff", flag_descriptions::kAndroidComposeplateLFFName, + flag_descriptions::kAndroidComposeplateLFFDescription, kOsAndroid, + FEATURE_VALUE_TYPE(chrome::android::kAndroidComposeplateLFF)}, + {"new-tab-page-customization-for-mvt", flag_descriptions::kNewTabPageCustomizationForMvtName, flag_descriptions::kNewTabPageCustomizationForMvtDescription, kOsAndroid, @@ -6823,6 +7013,11 @@ const FeatureEntry kFeatureEntries[] = { kAuxiliarySearchDonationVariations, "AuxiliarySearchDonation")}, + {"auxiliary-search-history-donation", + flag_descriptions::kAuxiliarySearchHistoryDonationName, + flag_descriptions::kAuxiliarySearchHistoryDonationDescription, kOsAndroid, + FEATURE_VALUE_TYPE(chrome::android::kAuxiliarySearchHistoryDonation)}, + {"disable-instance-limit", flag_descriptions::kDisableInstanceLimitName, flag_descriptions::kDisableInstanceLimitDescription, kOsAndroid, FEATURE_VALUE_TYPE(chrome::android::kDisableInstanceLimit)}, @@ -6847,11 +7042,6 @@ const FeatureEntry kFeatureEntries[] = { kMostVisitedTilesNewScoringVariations, "MostVisitedTilesNewScoring")}, - {"most-visited-tiles-visual-deduplication", - flag_descriptions::kMostVisitedTilesVisualDeduplicationName, - flag_descriptions::kMostVisitedTilesVisualDeduplicationDescription, kOsAll, - FEATURE_VALUE_TYPE(history::kMostVisitedTilesVisualDeduplication)}, - {"omnibox-local-history-zero-suggest-beyond-ntp", flag_descriptions::kOmniboxLocalHistoryZeroSuggestBeyondNTPName, flag_descriptions::kOmniboxLocalHistoryZeroSuggestBeyondNTPDescription, @@ -6978,12 +7168,9 @@ const FeatureEntry kFeatureEntries[] = { {"ai-mode-omnibox-entry-point", flag_descriptions::kAiModeOmniboxEntryPointName, flag_descriptions::kAiModeOmniboxEntryPointDescription, kOsDesktop, - FEATURE_VALUE_TYPE(omnibox::kAiModeOmniboxEntryPoint)}, - - {"aim-server-eligibility", - flag_descriptions::kOmniboxAimServerEligibilityName, - flag_descriptions::kOmniboxAimServerEligibilityDescription, kOsAll, - FEATURE_VALUE_TYPE(omnibox::kAimServerEligibilityEnabled)}, + FEATURE_WITH_PARAMS_VALUE_TYPE(omnibox::kAiModeOmniboxEntryPoint, + kOmniboxAiModeEntryPointVariations, + "OmniboxAiModeEntryPointVariations")}, {"hide-aim-omnibox-entrypoint-on-user-input", flag_descriptions::kHideAimOmniboxEntrypointOnUserInputName, @@ -7079,6 +7266,11 @@ const FeatureEntry kFeatureEntries[] = { #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || // BUILDFLAG(IS_WIN) + {"aim-server-eligibility", + flag_descriptions::kOmniboxAimServerEligibilityName, + flag_descriptions::kOmniboxAimServerEligibilityDescription, kOsAll, + FEATURE_VALUE_TYPE(omnibox::kAimServerEligibilityEnabled)}, + #if BUILDFLAG(IS_ANDROID) {"animate-suggestions-list-appearance", flag_descriptions::kAnimateSuggestionsListAppearanceName, @@ -7098,7 +7290,9 @@ const FeatureEntry kFeatureEntries[] = { {"omnibox-multimodal-input", flag_descriptions::kOmniboxMultimodalInputName, flag_descriptions::kOmniboxMultimodalInputDescription, kOsAndroid, - FEATURE_VALUE_TYPE(omnibox::kOmniboxMultimodalInput)}, + FEATURE_WITH_PARAMS_VALUE_TYPE(omnibox::kOmniboxMultimodalInput, + kOmniboxMultimodalInputVariants, + "OmniboxMultiModalInput")}, {"omnibox-remove-search-ready-omnibox", flag_descriptions::kOmniboxRemoveSearchReadyOmniboxName, @@ -7465,11 +7659,6 @@ const FeatureEntry kFeatureEntries[] = { #endif // BUILDFLAG(IS_ANDROID) #if !BUILDFLAG(IS_ANDROID) - {flag_descriptions::kSidePanelResizingFlagId, - flag_descriptions::kSidePanelResizingName, - flag_descriptions::kSidePanelResizingDescription, kOsDesktop, - FEATURE_VALUE_TYPE(features::kSidePanelResizing)}, - {"by-date-history-in-side-panel", flag_descriptions::kByDateHistoryInSidePanelName, flag_descriptions::kByDateHistoryInSidePanelDescription, kOsDesktop, @@ -7515,6 +7704,12 @@ const FeatureEntry kFeatureEntries[] = { FEATURE_VALUE_TYPE( commerce::kPriceTrackingSubscriptionServiceProductVersion)}, + {"composebox-uses-chrome-compose-client", + flag_descriptions::kNtpComposeboxUsesChromeComposeClientName, + flag_descriptions::kNtpComposeboxUsesChromeComposeClientDescription, + kOsDesktop | kOsAndroid, + FEATURE_VALUE_TYPE(omnibox::kComposeboxUsesChromeComposeClient)}, + #if !BUILDFLAG(IS_ANDROID) {"ntp-alpha-background-collections", flag_descriptions::kNtpAlphaBackgroundCollectionsName, @@ -7550,11 +7745,15 @@ const FeatureEntry kFeatureEntries[] = { kNtpRealboxNextVariations, "NtpRealboxNext")}, - {"composebox-uses-chrome-compose-client", - flag_descriptions::kNtpComposeboxUsesChromeComposeClientName, - flag_descriptions::kNtpComposeboxUsesChromeComposeClientDescription, - kOsDesktop, - FEATURE_VALUE_TYPE(omnibox::kComposeboxUsesChromeComposeClient)}, +#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) || \ + BUILDFLAG(IS_CHROMEOS) + {"ntp-customize-chrome-auto-open", + flag_descriptions::kNtpCustomizeChromeAutoOpenName, + flag_descriptions::kNtpCustomizeChromeAutoOpenDescription, kOsDesktop, + FEATURE_WITH_PARAMS_VALUE_TYPE(ntp_features::kNtpCustomizeChromeAutoOpen, + kNtpCustomizeChromeAutoOpenVariations, + "NtpCustomizeChromeAutoOpen")}, +#endif {"ntp-drive-module", flag_descriptions::kNtpDriveModuleName, flag_descriptions::kNtpDriveModuleDescription, kOsDesktop, @@ -7608,6 +7807,12 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kNtpModuleSignInRequirementDescription, kOsDesktop, FEATURE_VALUE_TYPE(ntp_features::kNtpModuleSignInRequirement)}, + {"ntp-next-features", flag_descriptions::kNtpNextFeaturesName, + flag_descriptions::kNtpNextFeaturesDescription, kOsDesktop, + FEATURE_WITH_PARAMS_VALUE_TYPE(ntp_features::kNtpNextFeatures, + kNtpNextVariations, + "NtpNextFeatures")}, + {"ntp-modules-drag-and-drop", flag_descriptions::kNtpModulesDragAndDropName, flag_descriptions::kNtpModulesDragAndDropDescription, kOsDesktop, FEATURE_VALUE_TYPE(ntp_features::kNtpModulesDragAndDrop)}, @@ -7774,6 +7979,11 @@ const FeatureEntry kFeatureEntries[] = { FEATURE_VALUE_TYPE(blink::features::kZeroCopyTabCapture), }, + {"exclude-pip-from-screen-capture", + flag_descriptions::kExcludePipFromScreenCaptureName, + flag_descriptions::kExcludePipFromScreenCaptureDescription, kOsAll, + FEATURE_VALUE_TYPE(features::kExcludePipFromScreenCapture)}, + #if BUILDFLAG(ENABLE_PDF) {"accessible-pdf-form", flag_descriptions::kAccessiblePDFFormName, flag_descriptions::kAccessiblePDFFormDescription, kOsDesktop, @@ -8062,11 +8272,6 @@ const FeatureEntry kFeatureEntries[] = { #endif // BUILDFLAG(IS_WIN) #if !BUILDFLAG(IS_ANDROID) - {"enable-live-caption-multilang", - flag_descriptions::kEnableLiveCaptionMultilangName, - flag_descriptions::kEnableLiveCaptionMultilangDescription, kOsDesktop, - FEATURE_VALUE_TYPE(media::kLiveCaptionMultiLanguage)}, - {"enable-headless-live-caption", flag_descriptions::kEnableHeadlessLiveCaptionName, flag_descriptions::kEnableHeadlessLiveCaptionDescription, kOsDesktop, @@ -8082,10 +8287,7 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kEnableCrOSLiveTranslateName, flag_descriptions::kEnableCrOSLiveTranslateDescription, kOsCrOS, FEATURE_VALUE_TYPE(media::kLiveTranslate)}, - {"enable-chromeos-soda-languages", - flag_descriptions::kEnableCrOSSodaLanguagesName, - flag_descriptions::kEnableCrOSSodaLanguagesDescription, kOsCrOS, - FEATURE_VALUE_TYPE(speech::kCrosExpandSodaLanguages)}, + {"enable-chromeos-soda-conch", flag_descriptions::kEnableCrOSSodaConchLanguagesName, flag_descriptions::kEnableCrOSSodaConchLanguagesDescription, kOsCrOS, @@ -8217,13 +8419,6 @@ const FeatureEntry kFeatureEntries[] = { {"cct-navigation-metrics", flag_descriptions::kCCTNavigationMetricsName, flag_descriptions::kCCTNavigationMetricsDescription, kOsAndroid, FEATURE_VALUE_TYPE(chrome::android::kCCTNavigationMetrics)}, - {"cct-predictive-back-gesture", - flag_descriptions::kCCTPredictiveBackGestureName, - flag_descriptions::kCCTPredictiveBackGestureDescription, kOsAndroid, - FEATURE_VALUE_TYPE(chrome::android::kCCTPredictiveBackGesture)}, - {"cct-revamped-branding", flag_descriptions::kCCTRevampedBrandingName, - flag_descriptions::kCCTRevampedBrandingDescription, kOsAndroid, - FEATURE_VALUE_TYPE(chrome::android::kCCTRevampedBranding)}, {"cct-nested-security-icon", flag_descriptions::kCCTNestedSecurityIconName, flag_descriptions::kCCTNestedSecurityIconDescription, kOsAndroid, FEATURE_VALUE_TYPE(chrome::android::kCCTNestedSecurityIcon)}, @@ -8356,9 +8551,6 @@ const FeatureEntry kFeatureEntries[] = { #endif #if BUILDFLAG(IS_CHROMEOS) - {"enable-assistant-dsp", flag_descriptions::kEnableGoogleAssistantDspName, - flag_descriptions::kEnableGoogleAssistantDspDescription, kOsCrOS, - FEATURE_VALUE_TYPE(ash::assistant::features::kEnableDspHotword)}, {"disable-quick-answers-v2-translation", flag_descriptions::kDisableQuickAnswersV2TranslationName, flag_descriptions::kDisableQuickAnswersV2TranslationDescription, kOsCrOS, @@ -8393,10 +8585,6 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kEnterOverviewFromWallpaperName, flag_descriptions::kEnterOverviewFromWallpaperDescription, kOsCrOS, FEATURE_VALUE_TYPE(ash::features::kEnterOverviewFromWallpaper)}, - {"enable-assistant-stereo-input", - flag_descriptions::kEnableGoogleAssistantStereoInputName, - flag_descriptions::kEnableGoogleAssistantStereoInputDescription, kOsCrOS, - FEATURE_VALUE_TYPE(ash::assistant::features::kEnableStereoAudioInput)}, #endif // BUILDFLAG(IS_CHROMEOS) {"enable-gpu-service-logging", @@ -8478,6 +8666,9 @@ const FeatureEntry kFeatureEntries[] = { FEATURE_VALUE_TYPE(features::kStrictOriginIsolation)}, #if BUILDFLAG(IS_ANDROID) + {"load-all-tabs-at-startup", flag_descriptions::kLoadAllTabsAtStartupName, + flag_descriptions::kLoadAllTabsAtStartupDescription, kOsAndroid, + FEATURE_VALUE_TYPE(chrome::android::kLoadAllTabsAtStartup)}, {"lock-controls-on-tablets", flag_descriptions::kLockTopControlsOnLargeTabletsName, flag_descriptions::kLockTopControlsOnLargeTabletsDescription, kOsAndroid, @@ -8642,11 +8833,6 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kAccessibilityShakeToLocateDescription, kOsCrOS, FEATURE_VALUE_TYPE(features::kAccessibilityShakeToLocate)}, - {"enable-accessibility-service", - flag_descriptions::kAccessibilityServiceName, - flag_descriptions::kAccessibilityServiceDescription, kOsCrOS, - FEATURE_VALUE_TYPE(features::kAccessibilityService)}, - {"enable-accessibility-reduced-animations", flag_descriptions::kAccessibilityReducedAnimationsName, flag_descriptions::kAccessibilityReducedAnimationsDescription, kOsCrOS, @@ -8791,6 +8977,10 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kUseOutOfProcessVideoDecodingDescription, kOsLinux | kOsCrOS, FEATURE_VALUE_TYPE(media::kUseOutOfProcessVideoDecoding)}, + {"use-shared-image-in-oop-vd", + flag_descriptions::kUseSharedImageInOOPVDName, + flag_descriptions::kUseSharedImageInOOPVDDescription, kOsLinux | kOsCrOS, + FEATURE_VALUE_TYPE(media::kUseSharedImageInOOPVDProcess)}, #endif // BUILDFLAG(ALLOW_OOP_VIDEO_DECODER) {"notification-scheduler", flag_descriptions::kNotificationSchedulerName, @@ -8840,13 +9030,6 @@ const FeatureEntry kFeatureEntries[] = { #endif // BUILDFLAG(IS_ANDROID) #if BUILDFLAG(IS_ANDROID) - {"back-forward-transitions", flag_descriptions::kBackForwardTransitionsName, - flag_descriptions::kBackForwardTransitionsDescription, kOsAndroid, - FEATURE_VALUE_TYPE(blink::features::kBackForwardTransitions)}, - {"mirror-back-forward-gestures-in-rtl", - flag_descriptions::kMirrorBackForwardGesturesInRTLName, - flag_descriptions::kMirrorBackForwardGesturesInRTLDescription, kOsAndroid, - FEATURE_VALUE_TYPE(ui::kMirrorBackForwardGesturesInRTL)}, {"back-forward-transitions-cross-doc-shared-image", flag_descriptions::kBackForwardTransitionsCrossDocSharedImageName, flag_descriptions::kBackForwardTransitionsCrossDocSharedImageDescription, @@ -8879,12 +9062,6 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kViewportSegmentsDescription, kOsAll, FEATURE_VALUE_TYPE(blink::features::kViewportSegments)}, -#if BUILDFLAG(IS_CHROMEOS) - {"enable-assistant-aec", flag_descriptions::kEnableGoogleAssistantAecName, - flag_descriptions::kEnableGoogleAssistantAecDescription, kOsCrOS, - FEATURE_VALUE_TYPE(ash::assistant::features::kAssistantAudioEraser)}, -#endif - #if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) {"enable-location-provider-manager", flag_descriptions::kLocationProviderManagerName, @@ -8901,11 +9078,12 @@ const FeatureEntry kFeatureEntries[] = { FEATURE_VALUE_TYPE(features::kMuteNotificationSnoozeAction)}, #endif // !BUILDFLAG(IS_ANDROID) -#if BUILDFLAG(IS_ANDROID) - {"notification-one-tap-unsubscribe", - flag_descriptions::kNotificationOneTapUnsubscribeName, - flag_descriptions::kNotificationOneTapUnsubscribeDescription, kOsAndroid, - FEATURE_VALUE_TYPE(features::kNotificationOneTapUnsubscribe)}, +#if !BUILDFLAG(IS_ANDROID) + {"notification-one-tap-unsubscribe-on-desktop", + flag_descriptions::kNotificationOneTapUnsubscribeOnDesktopName, + flag_descriptions::kNotificationOneTapUnsubscribeOnDesktopDescription, + kOsDesktop, + FEATURE_VALUE_TYPE(features::kNotificationOneTapUnsubscribeOnDesktop)}, #endif // !BUILDFLAG(IS_ANDROID) #if BUILDFLAG(IS_MAC) @@ -9117,7 +9295,7 @@ const FeatureEntry kFeatureEntries[] = { {"geolocation-element", flag_descriptions::kGeolocationPermissionControlName, flag_descriptions::kGeolocationPermissionControlDescription, - kOsMac | kOsWin | kOsLinux, + kOsMac | kOsWin | kOsLinux | kOsAndroid, FEATURE_VALUE_TYPE(blink::features::kGeolocationElement)}, {"permission-promise-lifetime-modulation", @@ -9174,9 +9352,6 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kLauncherKeywordExtractionScoring, flag_descriptions::kLauncherKeywordExtractionScoringDescription, kOsCrOS, FEATURE_VALUE_TYPE(search_features::kLauncherKeywordExtractionScoring)}, - {"launcher-search-control", flag_descriptions::kLauncherSearchControlName, - flag_descriptions::kLauncherSearchControlDescription, kOsCrOS, - FEATURE_VALUE_TYPE(ash::features::kLauncherSearchControl)}, {"launcher-nudge-session-reset", flag_descriptions::kLauncherNudgeSessionResetName, flag_descriptions::kLauncherNudgeSessionResetDescription, kOsCrOS, @@ -9355,27 +9530,6 @@ const FeatureEntry kFeatureEntries[] = { FEATURE_VALUE_TYPE(ash::features::kWallpaperGooglePhotosSharedAlbums)}, #endif // BUILDFLAG(IS_CHROMEOS) -#if BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_LINUX) - {"enable-get-all-screens-media", flag_descriptions::kGetAllScreensMediaName, - flag_descriptions::kGetAllScreensMediaDescription, kOsCrOS | kOsLinux, - FEATURE_VALUE_TYPE(blink::features::kGetAllScreensMedia)}, -#endif // BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_LINUX) - -#if BUILDFLAG(IS_CHROMEOS) - {"enable-run-on-os-login", flag_descriptions::kRunOnOsLoginName, - flag_descriptions::kRunOnOsLoginDescription, kOsCrOS, - FEATURE_VALUE_TYPE(features::kDesktopPWAsRunOnOsLogin)}, - {"enable-prevent-close", flag_descriptions::kPreventCloseName, - flag_descriptions::kPreventCloseDescription, kOsCrOS, - FEATURE_VALUE_TYPE(features::kDesktopPWAsPreventClose)}, - - {"enable-cloud-identifiers", - flag_descriptions::kFileSystemAccessGetCloudIdentifiersName, - flag_descriptions::kFileSystemAccessGetCloudIdentifiersDescription, - kOsCrOS, - FEATURE_VALUE_TYPE(blink::features::kFileSystemAccessGetCloudIdentifiers)}, -#endif // BUILDFLAG(IS_CHROMEOS) - {"enable-global-vaapi-lock", flag_descriptions::kGlobalVaapiLockName, flag_descriptions::kGlobalVaapiLockDescription, kOsCrOS | kOsLinux, FEATURE_VALUE_TYPE(media::kGlobalVaapiLock)}, @@ -9391,14 +9545,6 @@ const FeatureEntry kFeatureEntries[] = { #endif #if BUILDFLAG(IS_ANDROID) - {"optimization-guide-personalized-fetching", - flag_descriptions::kOptimizationGuidePersonalizedFetchingName, - flag_descriptions::kOptimizationGuidePersonalizedFetchingDescription, - kOsAndroid, - FEATURE_WITH_PARAMS_VALUE_TYPE( - optimization_guide::features::kOptimizationGuidePersonalizedFetching, - kOptimizationGuidePersonalizedFetchingAllowPageInsightsVariations, - "OptimizationGuidePersonalizedFetchingAllowPageInsights")}, {"optimization-guide-push-notifications", flag_descriptions::kOptimizationGuidePushNotificationName, flag_descriptions::kOptimizationGuidePushNotificationDescription, @@ -9419,6 +9565,10 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kFedCmDelegationDescription, kOsAll, FEATURE_VALUE_TYPE(features::kFedCmDelegation)}, + {"fedcm-error-attribute", flag_descriptions::kFedCmErrorAttributeName, + flag_descriptions::kFedCmErrorAttributeDescription, kOsAll, + FEATURE_VALUE_TYPE(features::kFedCmErrorAttribute)}, + {"fedcm-idp-registration", flag_descriptions::kFedCmIdPRegistrationName, flag_descriptions::kFedCmIdPRegistrationDescription, kOsDesktop, FEATURE_VALUE_TYPE(features::kFedCmIdPRegistration)}, @@ -9435,6 +9585,15 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kFedCmMetricsEndpointDescription, kOsAll, FEATURE_VALUE_TYPE(features::kFedCmMetricsEndpoint)}, + {"fedcm-nonce-in-params", flag_descriptions::kFedCmNonceInParamsName, + flag_descriptions::kFedCmNonceInParamsDescription, kOsAll, + FEATURE_VALUE_TYPE(features::kFedCmNonceInParams)}, + + {"fedcm-well-known-endpoint-validation", + flag_descriptions::kFedCmWellKnownEndpointValidationName, + flag_descriptions::kFedCmWellKnownEndpointValidationDescription, kOsAll, + FEATURE_VALUE_TYPE(features::kFedCmWellKnownEndpointValidation)}, + {"fedcm-without-well-known-enforcement", flag_descriptions::kFedCmWithoutWellKnownEnforcementName, flag_descriptions::kFedCmWithoutWellKnownEnforcementDescription, kOsAll, @@ -9506,13 +9665,6 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kBindCookiesToSchemeDescription, kOsAll, FEATURE_VALUE_TYPE(net::features::kEnableSchemeBoundCookies)}, -#if BUILDFLAG(IS_CHROMEOS) - {"enable-keyboard-rewriter-fix", - flag_descriptions::kEnableKeyboardRewriterFixName, - flag_descriptions::kEnableKeyboardRewriterFixDescription, kOsCrOS, - FEATURE_VALUE_TYPE(ash::features::kEnableKeyboardRewriterFix)}, -#endif // BUILDFLAG(IS_CHROMEOS) - {"align-wakeups", flag_descriptions::kAlignWakeUpsName, flag_descriptions::kAlignWakeUpsDescription, kOsAll, FEATURE_VALUE_TYPE(base::kAlignWakeUps)}, @@ -9540,6 +9692,16 @@ const FeatureEntry kFeatureEntries[] = { kPolicyRegistrationDelayVariations, "CustomPolicyRegistrationDelay")}, +#if BUILDFLAG(IS_ANDROID) + {"try-initialize-policy-service-for-signed-in-user-in-new-entry-points", + flag_descriptions::kInitializePoliciesForSignedInUserInNewEntryPointsName, + flag_descriptions:: + kInitializePoliciesForSignedInUserInNewEntryPointsDescription, + kOsAndroid, + FEATURE_VALUE_TYPE( + policy::features::kInitializePoliciesForSignedInUserInNewEntryPoints)}, +#endif // BUILDFLAG(IS_ANDROID) + #if BUILDFLAG(IS_CHROMEOS) {"focus-follows-cursor", flag_descriptions::kFocusFollowsCursorName, flag_descriptions::kFocusFollowsCursorDescription, kOsCrOS, @@ -9558,6 +9720,10 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kPrerender2ReuseHostDescription, kOsAll, FEATURE_VALUE_TYPE(features::kPrerender2ReuseHost)}, + {"prerender-until-script", flag_descriptions::kPrerenderUntilScriptName, + flag_descriptions::kPrerenderUntilScriptDescription, kOsAll, + FEATURE_VALUE_TYPE(blink::features::kPrerenderUntilScript)}, + #if BUILDFLAG(IS_CHROMEOS) {"enable-phone-hub-call-notification", flag_descriptions::kPhoneHubCallNotificationName, @@ -9734,14 +9900,6 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kExtensionManifestV2DeprecationUnsupportedDescription, kOsDesktop, FEATURE_VALUE_TYPE(extensions_features::kExtensionManifestV2Unsupported)}, - -#if BUILDFLAG(IS_WIN) - {"launch-windows-native-hosts-directly", - flag_descriptions::kLaunchWindowsNativeHostsDirectlyName, - flag_descriptions::kLaunchWindowsNativeHostsDirectlyDescription, kOsWin, - FEATURE_VALUE_TYPE( - extensions_features::kLaunchWindowsNativeHostsDirectly)}, -#endif // IS_WIN #endif // ENABLE_EXTENSIONS #if !BUILDFLAG(IS_ANDROID) @@ -9874,6 +10032,13 @@ const FeatureEntry kFeatureEntries[] = { #endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || // BUILDFLAG(IS_CHROMEOS) +#if BUILDFLAG(IS_ANDROID) + {"auto-picture-in-picture-android", + flag_descriptions::kAutoPictureInPictureAndroidName, + flag_descriptions::kAutoPictureInPictureAndroidDescription, kOsAndroid, + FEATURE_VALUE_TYPE(media::kAutoPictureInPictureAndroid)}, +#endif + {"document-patching", flag_descriptions::kDocumentPatchingName, flag_descriptions::kDocumentPatchingDescription, kOsAll, FEATURE_VALUE_TYPE(blink::features::kDocumentPatching)}, @@ -10127,13 +10292,6 @@ const FeatureEntry kFeatureEntries[] = { content_settings::features::kSafetyCheckUnusedSitePermissions, kSafetyCheckUnusedSitePermissionsVariations, "SafetyCheckUnusedSitePermissions")}, - - {"safety-hub", flag_descriptions::kSafetyHubName, - flag_descriptions::kSafetyHubDescription, kOsAll, - FEATURE_WITH_PARAMS_VALUE_TYPE(safety_check::features::kSafetyHub, - kSafetyHubVariations, - "SafetyHub")}, - {"permission-site-settings-radio-button", flag_descriptions::kPermissionSiteSettingsRadioButtonName, flag_descriptions::kPermissionSiteSettingsRadioButtonDescription, kOsAll, @@ -10145,10 +10303,6 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kSafetyHubMagicStackDescription, kOsAndroid, FEATURE_VALUE_TYPE(features::kSafetyHubMagicStack)}, - {"safety-hub-followup", flag_descriptions::kSafetyHubFollowupName, - flag_descriptions::kSafetyHubFollowupDescription, kOsAndroid, - FEATURE_VALUE_TYPE(features::kSafetyHubFollowup)}, - {"safety-hub-android-survey", flag_descriptions::kSafetyHubAndroidSurveyName, flag_descriptions::kSafetyHubAndroidSurveyDescription, kOsAndroid, @@ -10173,11 +10327,6 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kSafetyHubUnifiedPasswordsModuleName, flag_descriptions::kSafetyHubUnifiedPasswordsModuleDescription, kOsAndroid, MULTI_VALUE_TYPE(kSafetyHubUnifiedPasswordsModuleChoices)}, -#else - {"safety-hub-one-off-survey", - flag_descriptions::kSafetyHubHaTSOneOffSurveyName, - flag_descriptions::kSafetyHubHaTSOneOffSurveyDescription, kOsDesktop, - FEATURE_VALUE_TYPE(features::kSafetyHubHaTSOneOffSurvey)}, #endif // BUILDFLAG(IS_ANDROID) #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) @@ -10251,20 +10400,28 @@ const FeatureEntry kFeatureEntries[] = { FEATURE_VALUE_TYPE(external_intents::kExternalNavigationDebugLogs)}, #endif - {"webui-omnibox-popup", flag_descriptions::kWebUIOmniboxPopupName, - flag_descriptions::kWebUIOmniboxPopupDescription, kOsDesktop, - FEATURE_VALUE_TYPE(omnibox::kWebUIOmniboxPopup)}, +#if !BUILDFLAG(IS_ANDROID) + {"webui-omnibox-aim-popup", flag_descriptions::kWebUIOmniboxAimPopupName, + flag_descriptions::kWebUIOmniboxAimPopupDescription, kOsDesktop, + FEATURE_WITH_PARAMS_VALUE_TYPE(omnibox::internal::kWebUIOmniboxAimPopup, + kWebUIOmniboxAimPopupVariations, + "WebUIOmniboxAimPopupVariations")}, {"webui-omnibox-full-popup", flag_descriptions::kWebUIOmniboxFullPopupName, flag_descriptions::kWebUIOmniboxFullPopupDescription, kOsDesktop, FEATURE_VALUE_TYPE(omnibox::kWebUIOmniboxFullPopup)}, + {"webui-omnibox-popup", flag_descriptions::kWebUIOmniboxPopupName, + flag_descriptions::kWebUIOmniboxPopupDescription, kOsDesktop, + FEATURE_VALUE_TYPE(omnibox::kWebUIOmniboxPopup)}, + {"webui-omnibox-popup-debug", flag_descriptions::kWebUIOmniboxPopupDebugName, flag_descriptions::kWebUIOmniboxPopupDebugDescription, kOsDesktop, FEATURE_WITH_PARAMS_VALUE_TYPE(omnibox::kWebUIOmniboxPopupDebug, kWebUIOmniboxPopupDebugVariations, "WebUIOmniboxPopupDebugVariations")}, +#endif // !BUILDFLAG(IS_ANDROID) #if BUILDFLAG(IS_CHROMEOS) {"arc-vm-memory-size", flag_descriptions::kArcVmMemorySizeName, @@ -10317,12 +10474,6 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kTabStripMouseCloseResizeDelayDescription, kOsAndroid, FEATURE_VALUE_TYPE(chrome::android::kTabStripMouseCloseResizeDelay)}, - {"tab-strip-transition-in-desktop-window", - flag_descriptions::kTabStripTransitionInDesktopWindowName, - flag_descriptions::kTabStripTransitionInDesktopWindowDescription, - kOsAndroid, - FEATURE_VALUE_TYPE(chrome::android::kTabStripTransitionInDesktopWindow)}, - {"tab-switcher-group-suggestions-android", flag_descriptions::kTabSwitcherGroupSuggestionsAndroidName, flag_descriptions::kTabSwitcherGroupSuggestionsAndroidDescription, @@ -10495,13 +10646,6 @@ const FeatureEntry kFeatureEntries[] = { kOsDesktop | kOsAndroid, FEATURE_VALUE_TYPE(features::kProcessPerSiteUpToMainFrameThreshold)}, -#if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) - {"camera-mic-effects", flag_descriptions::kCameraMicEffectsName, - flag_descriptions::kCameraMicEffectsDescription, - static_cast(kOsMac | kOsWin | kOsLinux), - FEATURE_VALUE_TYPE(media::kCameraMicEffects)}, -#endif - #if !BUILDFLAG(IS_ANDROID) {"get-display-media-confers-activation", flag_descriptions::kGetDisplayMediaConfersActivationName, @@ -10660,6 +10804,12 @@ const FeatureEntry kFeatureEntries[] = { FEATURE_VALUE_TYPE( autofill::features::kAutofillEnableFpanRiskBasedAuthentication)}, + {"ack-copy-output-request-early-for-view-transition", + flag_descriptions::kAckCopyOutputRequestEarlyForViewTransitionName, + flag_descriptions::kAckCopyOutputRequestEarlyForViewTransitionDescription, + kOsAll, + FEATURE_VALUE_TYPE(features::kAckCopyOutputRequestEarlyForViewTransition)}, + {"ack-on-surface-activation-when-interactive", flag_descriptions::kAckOnSurfaceActivationWhenInteractiveName, flag_descriptions::kAckOnSurfaceActivationWhenInteractiveDescription, @@ -10714,10 +10864,8 @@ const FeatureEntry kFeatureEntries[] = { {"enable-bound-session-credentials", flag_descriptions::kEnableBoundSessionCredentialsName, flag_descriptions::kEnableBoundSessionCredentialsDescription, - kOsMac | kOsWin | kOsLinux, - FEATURE_WITH_PARAMS_VALUE_TYPE(switches::kEnableBoundSessionCredentials, - kEnableBoundSessionCredentialsVariations, - "EnableBoundSessionCredentials")}, + kOsMac | kOsLinux, + FEATURE_VALUE_TYPE(switches::kEnableBoundSessionCredentials)}, {"enable-bound-session-credentials-software-keys-for-manual-testing", flag_descriptions:: kEnableBoundSessionCredentialsSoftwareKeysForManualTestingName, @@ -10729,10 +10877,6 @@ const FeatureEntry kFeatureEntries[] = { kEnableBoundSessionCredentialsSoftwareKeysForManualTesting)}, #endif // BUILDFLAG(ENABLE_BOUND_SESSION_CREDENTIALS) - {"menu-elements", flag_descriptions::kMenuElementsName, - flag_descriptions::kMenuElementsDescription, kOsAll, - FEATURE_VALUE_TYPE(blink::features::kMenuElements)}, - #if BUILDFLAG(IS_ANDROID) {"android-hub-search-tab-groups", flag_descriptions::kAndroidHubSearchTabGroupsName, @@ -10805,12 +10949,6 @@ const FeatureEntry kFeatureEntries[] = { FEATURE_VALUE_TYPE(chromeos::features::kCloudGamingDevice)}, #endif // BUILDFLAG(IS_CHROMEOS) - {"content-settings-partitioning", - flag_descriptions::kContentSettingsPartitioningName, - flag_descriptions::kContentSettingsPartitioningDescription, kOsAll, - FEATURE_VALUE_TYPE( - content_settings::features::kContentSettingsPartitioning)}, - #if BUILDFLAG(IS_ANDROID) {"use-fullscreen-insets-api", flag_descriptions::kFullscreenInsetsApiMigrationName, @@ -10848,19 +10986,10 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kAssistantIphDescription, kOsCrOS, FEATURE_VALUE_TYPE(feature_engagement::kIPHLauncherSearchHelpUiFeature)}, - {"battery-badge-icon", flag_descriptions::kBatteryBadgeIconName, - flag_descriptions::kBatteryBadgeIconDescription, kOsCrOS, - FEATURE_VALUE_TYPE(chromeos::features::kBatteryBadgeIcon)}, - {"battery-charge-limit", flag_descriptions::kBatteryChargeLimitName, flag_descriptions::kBatteryChargeLimitDescription, kOsCrOS, FEATURE_VALUE_TYPE(ash::features::kBatteryChargeLimit)}, - {"bluetooth-wifi-qs-pod-refresh", - flag_descriptions::kBluetoothWifiQSPodRefreshName, - flag_descriptions::kBluetoothWifiQSPodRefreshDescription, kOsCrOS, - FEATURE_VALUE_TYPE(chromeos::features::kBluetoothWifiQSPodRefresh)}, - {"mahi", flag_descriptions::kMahiName, flag_descriptions::kMahiDescription, kOsCrOS, FEATURE_VALUE_TYPE(chromeos::features::kMahi)}, @@ -10872,11 +11001,6 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kMahiPanelResizableDescription, kOsCrOS, FEATURE_VALUE_TYPE(chromeos::features::kMahiPanelResizable)}, - {"notification-width-increase", - flag_descriptions::kNotificationWidthIncreaseName, - flag_descriptions::kNotificationWidthIncreaseDescription, kOsCrOS, - FEATURE_VALUE_TYPE(chromeos::features::kNotificationWidthIncrease)}, - {"pompano", flag_descriptions::kPompanoName, flag_descriptions::kPompanoDescritpion, kOsCrOS, FEATURE_VALUE_TYPE(chromeos::features::kPompano)}, @@ -11030,10 +11154,6 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kBookmarkPaneAndroidDescription, kOsAndroid, FEATURE_VALUE_TYPE(chrome::android::kBookmarkPaneAndroid)}, - {"batch-tab-restore", flag_descriptions::kBatchTabRestoreName, - flag_descriptions::kBatchTabRestoreDescription, kOsAndroid, - FEATURE_VALUE_TYPE(chrome::android::kBatchTabRestore)}, - #endif // BUILDFLAG(IS_ANDROID) {"data-sharing-debug-logs", flag_descriptions::kDataSharingDebugLogsName, @@ -11108,10 +11228,6 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kAutofillEnableCardBenefitsSyncDescription, kOsAll, FEATURE_VALUE_TYPE(autofill::features::kAutofillEnableCardBenefitsSync)}, - {"linked-services-setting", flag_descriptions::kLinkedServicesSettingName, - flag_descriptions::kLinkedServicesSettingDescription, kOsAll, - FEATURE_VALUE_TYPE(features::kLinkedServicesSetting)}, - #if BUILDFLAG(IS_MAC) {"reduce-ip-address-change-notification", flag_descriptions::kReduceIPAddressChangeNotificationName, @@ -11165,19 +11281,16 @@ const FeatureEntry kFeatureEntries[] = { kStandardBoundSessionCredentialsFederatedSessionsVariations, "standard-device-bound-sessions-federated-sessions")}, + {"responsive-iframes", flag_descriptions::kResponsiveIframesName, + flag_descriptions::kResponsiveIframesDescription, kOsAll, + FEATURE_VALUE_TYPE(blink::features::kResponsiveIframes)}, + #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) {"replace-sync-promos-with-sign-in-promos-desktop", flag_descriptions::kReplaceSyncPromosWithSignInPromosName, flag_descriptions::kReplaceSyncPromosWithSignInPromosDescription, - kOsDesktop, - FEATURE_VALUE_TYPE(syncer::kReplaceSyncPromosWithSignInPromos)}, -#elif BUILDFLAG(IS_ANDROID) - {"replace-sync-promos-with-sign-in-promos", - flag_descriptions::kReplaceSyncPromosWithSignInPromosName, - flag_descriptions::kReplaceSyncPromosWithSignInPromosDescription, - kOsAndroid, MULTI_VALUE_TYPE(kReplaceSyncPromosWithSignInPromosChoices)}, -#endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) || - // BUILDFLAG(IS_ANDROID) + kOsDesktop, MULTI_VALUE_TYPE(kReplaceSyncPromosWithSignInPromosChoices)}, +#endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) {"pwm-show-suggestions-on-autofocus", flag_descriptions::kPasswordManagerShowSuggestionsOnAutofocusName, @@ -11219,12 +11332,12 @@ const FeatureEntry kFeatureEntries[] = { kOsDesktop, FEATURE_VALUE_TYPE(password_manager::features:: kWebAuthnUsePasskeyFromAnotherDeviceInContextMenu)}, +#endif {"web-authentication-passkey-upgrade", flag_descriptions::kWebAuthnPasskeyUpgradeName, flag_descriptions::kWebAuthnPasskeyUpgradeDescription, kOsDesktop | kOsAndroid, FEATURE_VALUE_TYPE(device::kWebAuthnPasskeyUpgrade)}, -#endif #if BUILDFLAG(IS_CHROMEOS) {"conch", flag_descriptions::kConchName, @@ -11238,19 +11351,6 @@ const FeatureEntry kFeatureEntries[] = { #endif // BUILDFLAG(IS_CHROMEOS) #if BUILDFLAG(IS_ANDROID) - {"autofill-sync-ewallet-accounts", - flag_descriptions::kAutofillSyncEwalletAccountsName, - flag_descriptions::kAutofillSyncEwalletAccountsDescription, kOsAndroid, - FEATURE_VALUE_TYPE(autofill::features::kAutofillSyncEwalletAccounts)}, - - {"ewallet-payments", flag_descriptions::kEwalletPaymentsName, - flag_descriptions::kEwalletPaymentsDescription, kOsAndroid, - FEATURE_VALUE_TYPE(payments::facilitated::kEwalletPayments)}, - - {"payment-link-detection", flag_descriptions::kPaymentLinkDetectionName, - flag_descriptions::kPaymentLinkDetectionDescription, kOsAndroid, - FEATURE_VALUE_TYPE(blink::features::kPaymentLinkDetection)}, - {"process-rank-policy-android", flag_descriptions::kProcessRankPolicyAndroidName, flag_descriptions::kProcessRankPolicyAndroidDescription, kOsAndroid, @@ -11261,10 +11361,6 @@ const FeatureEntry kFeatureEntries[] = { FEATURE_VALUE_TYPE(chrome::android::kProtectedTabsAndroid)}, #endif // BUILDFLAG(IS_ANDROID) - {"ruby-short-heuristics", flag_descriptions::kRubyShortHeuristicsName, - flag_descriptions::kRubyShortHeuristicsDescription, kOsAll, - FEATURE_VALUE_TYPE(blink::features::kRubyShortHeuristics)}, - {"prompt-api-for-gemini-nano", flag_descriptions::kPromptAPIForGeminiNanoName, flag_descriptions::kPromptAPIForGeminiNanoDescription, kOsDesktop, @@ -11325,20 +11421,6 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kCanvasHibernationDescription, kOsAll, FEATURE_VALUE_TYPE(blink::features::kCanvas2DHibernation)}, -#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) - {"sync-enable-bookmarks-in-transport-mode", - flag_descriptions::kSyncEnableBookmarksInTransportModeName, - flag_descriptions::kSyncEnableBookmarksInTransportModeDescription, - kOsWin | kOsMac | kOsLinux, - FEATURE_VALUE_TYPE(switches::kSyncEnableBookmarksInTransportMode)}, - {"reading-list-enable-sync-transport-mode-upon-sign-in", - flag_descriptions::kReadingListEnableSyncTransportModeUponSignInName, - flag_descriptions:: - kReadingListEnableSyncTransportModeUponSignInDescription, - kOsWin | kOsMac | kOsLinux, - FEATURE_VALUE_TYPE(syncer::kReadingListEnableSyncTransportModeUponSignIn)}, -#endif - {"visited-url-ranking-service-domain-deduplication", flag_descriptions::kVisitedURLRankingServiceDeduplicationName, flag_descriptions::kVisitedURLRankingServiceDeduplicationDescription, @@ -11401,6 +11483,18 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kLanguageDetectionAPIDescription, kOsAll, FEATURE_VALUE_TYPE(blink::features::kLanguageDetectionAPI)}, + {"lens-aim-suggestions", flag_descriptions::kLensAimSuggestionsName, + flag_descriptions::kLensAimSuggestionsDescription, kOsDesktop, + FEATURE_WITH_PARAMS_VALUE_TYPE(lens::features::kLensAimSuggestions, + kLensAimSuggestionsVariations, + "LensAimSuggestions")}, + + {"lens-aim-gradient-suggest-background", + flag_descriptions::kLensAimSuggestionsGradientBackgroundName, + flag_descriptions::kLensAimSuggestionsGradientBackgroundDescription, + kOsAll, + FEATURE_VALUE_TYPE(lens::features::kLensAimSuggestionsGradientBackground)}, + #if BUILDFLAG(IS_ANDROID) {"history-opt-in-educational-tip", @@ -11411,15 +11505,6 @@ const FeatureEntry kFeatureEntries[] = { "HistoryOptInEducationalTipVariations")}, #endif // BUILDFLAG(IS_ANDROID) -#if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) - {"supervised-user-local-web-approvals", - flag_descriptions::kSupervisedUserLocalWebApprovalsName, - flag_descriptions::kSupervisedUserLocalWebApprovalsDescription, - kOsLinux | kOsMac | kOsWin, - FEATURE_VALUE_TYPE(supervised_user::kLocalWebApprovals)}, - -#endif - #if BUILDFLAG(IS_ANDROID) {"sensitive-content", flag_descriptions::kSensitiveContentName, flag_descriptions::kSensitiveContentDescription, kOsAndroid, @@ -11516,6 +11601,10 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kDevToolsPrivacyUIDescription, kOsAll, FEATURE_VALUE_TYPE(features::kDevToolsPrivacyUI)}, + {"devtools-greendev-ui", flag_descriptions::kDevToolsGreenDevUiName, + flag_descriptions::kDevToolsGreenDevUiDescription, kOsAll, + FEATURE_VALUE_TYPE(features::kDevToolsGreenDevUi)}, + {"devtools-individual-request-throttling", flag_descriptions::kDevToolsIndividualRequestThrottlingName, flag_descriptions::kDevToolsIndividualRequestThrottlingDescription, kOsAll, @@ -11525,16 +11614,12 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kDevToolsLiveEditDescription, kOsAll, FEATURE_VALUE_TYPE(features::kDevToolsLiveEdit)}, - {"permissions-ai-v1", flag_descriptions::kPermissionsAIv1Name, - flag_descriptions::kPermissionsAIv1Description, kOsDesktop, - FEATURE_VALUE_TYPE(permissions::features::kPermissionsAIv1)}, - {"permissions-ai-v3", flag_descriptions::kPermissionsAIv3Name, flag_descriptions::kPermissionsAIv3Description, kOsDesktop, FEATURE_VALUE_TYPE(permissions::features::kPermissionsAIv3)}, {"permissions-ai-v4", flag_descriptions::kPermissionsAIv4Name, - flag_descriptions::kPermissionsAIv4Description, kOsDesktop, + flag_descriptions::kPermissionsAIv4Description, kOsAll, FEATURE_VALUE_TYPE(permissions::features::kPermissionsAIv4)}, {"permissions-ai-p92", flag_descriptions::kPermissionsAIP92Name, @@ -11650,14 +11735,6 @@ const FeatureEntry kFeatureEntries[] = { autofill::features:: kAutofillEnableCvcStorageAndFillingStandaloneFormEnhancement)}, - {"enable-bookmarks-selected-type-on-signin-for-testing", - flag_descriptions::kEnableBookmarksSelectedTypeOnSigninForTestingName, - flag_descriptions:: - kEnableBookmarksSelectedTypeOnSigninForTestingDescription, - kOsDesktop, - FEATURE_VALUE_TYPE( - syncer::kEnableBookmarksSelectedTypeOnSigninForTesting)}, - #if !BUILDFLAG(IS_ANDROID) {"separate-local-and-account-themes", flag_descriptions::kSeparateLocalAndAccountThemesName, @@ -11688,15 +11765,6 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kAutofillEnableCardBenefitsIphDescription, kOsDesktop, FEATURE_VALUE_TYPE(autofill::features::kAutofillEnableCardBenefitsIph)}, -#if BUILDFLAG(IS_ANDROID) - {"support-multiple-server-requests-for-pix-payments", - flag_descriptions::kSupportMultipleServerRequestsForPixPaymentsName, - flag_descriptions::kSupportMultipleServerRequestsForPixPaymentsDescription, - kOsAndroid, - FEATURE_VALUE_TYPE( - payments::facilitated::kSupportMultipleServerRequestsForPixPayments)}, -#endif // BUILDFLAG(IS_ANDROID) - {"autofill-enable-card-info-runtime-retrieval", flag_descriptions::kAutofillEnableCardInfoRuntimeRetrievalName, flag_descriptions::kAutofillEnableCardInfoRuntimeRetrievalDescription, @@ -11724,14 +11792,6 @@ const FeatureEntry kFeatureEntries[] = { FEATURE_VALUE_TYPE( password_manager::features::kPasswordFormGroupedAffiliations)}, -#if !BUILDFLAG(IS_ANDROID) - {"privacy-guide-ai-settings", - flag_descriptions::kPrivacyGuideAiSettingsName, - flag_descriptions::kPrivacyGuideAiSettingsDescription, kOsDesktop, - FEATURE_VALUE_TYPE(optimization_guide::features::kPrivacyGuideAiSettings)}, - -#endif // !BUILDFLAG(IS_ANDROID) - {"password-form-clientside-classifier", flag_descriptions::kPasswordFormClientsideClassifierName, flag_descriptions::kPasswordFormClientsideClassifierDescription, kOsAll, @@ -11835,6 +11895,19 @@ const FeatureEntry kFeatureEntries[] = { {"glic-actor", flag_descriptions::kGlicActorName, flag_descriptions::kGlicActorDescription, kOsMac | kOsWin | kOsLinux, FEATURE_VALUE_TYPE(features::kGlicActor)}, + {"glic-actor-autofill", flag_descriptions::kGlicActorAutofillName, + flag_descriptions::kGlicActorAutofillDescription, kOsDesktop, + FEATURE_VALUE_TYPE(features::kGlicActorAutofill)}, + {"actor-form-filling-service-enable-address", + flag_descriptions::kActorFormFillingServiceEnableAddressName, + flag_descriptions::kActorFormFillingServiceEnableAddressDescription, + kOsDesktop, + FEATURE_VALUE_TYPE(features::kActorFormFillingServiceEnableAddress)}, + {"actor-form-filling-service-enable-credit-card", + flag_descriptions::kActorFormFillingServiceEnableCreditCardName, + flag_descriptions::kActorFormFillingServiceEnableCreditCardDescription, + kOsDesktop, + FEATURE_VALUE_TYPE(features::kActorFormFillingServiceEnableCreditCard)}, {"glic-detached", flag_descriptions::kGlicDetachedName, flag_descriptions::kGlicDetachedDescription, kOsMac | kOsWin | kOsLinux, FEATURE_VALUE_TYPE(features::kGlicDetached)}, @@ -11884,16 +11957,31 @@ const FeatureEntry kFeatureEntries[] = { FEATURE_WITH_PARAMS_VALUE_TYPE(features::kGlicEntrypointVariations, kGlicEntrypointVariations, "GlicEntrypointVariations")}, + {"glic-default-to-last-active-conversation", + flag_descriptions::kGlicDefaultToLastActiveConversationName, + flag_descriptions::kGlicDefaultToLastActiveConversationDescription, + kOsMac | kOsWin | kOsLinux, + FEATURE_VALUE_TYPE(features::kGlicDefaultToLastActiveConversation)}, + {"glic-bind-pinned-unbound-tab", + flag_descriptions::kGlicBindPinnedUnboundTabName, + flag_descriptions::kGlicBindPinnedUnboundTabDescription, + kOsMac | kOsWin | kOsLinux, + FEATURE_VALUE_TYPE(features::kGlicBindPinnedUnboundTab)}, + {"glic-button-pressed-state", + flag_descriptions::kGlicButtonPressedStateName, + flag_descriptions::kGlicButtonPressedStateDescription, + kOsMac | kOsWin | kOsLinux, + FEATURE_VALUE_TYPE(features::kGlicButtonPressedState)}, + {"glic-capture-region", flag_descriptions::kGlicCaptureRegionName, + flag_descriptions::kGlicCaptureRegionDescription, kOsAll, + FEATURE_VALUE_TYPE(features::kGlicCaptureRegion)}, + {"glic-daisy-chain-new-tabs", flag_descriptions::kGlicDaisyChainNewTabsName, + flag_descriptions::kGlicDaisyChainNewTabsDescription, + kOsMac | kOsWin | kOsLinux, + FEATURE_VALUE_TYPE(features::kGlicDaisyChainNewTabs)}, #endif // BUILDFLAG(ENABLE_GLIC) #if BUILDFLAG(IS_ANDROID) - {"enterprise-security-event-reporting-on-android", - flag_descriptions::kEnterpriseSecurityEventReportingOnAndroidName, - flag_descriptions::kEnterpriseSecurityEventReportingOnAndroidDescription, - kOsAndroid, - FEATURE_VALUE_TYPE( - enterprise_connectors::kEnterpriseSecurityEventReportingOnAndroid)}, - {"enable-client-certificate-provisioning-on-android", flag_descriptions::kEnableClientCertificateProvisioningOnAndroidName, flag_descriptions:: @@ -11901,7 +11989,6 @@ const FeatureEntry kFeatureEntries[] = { kOsAndroid, FEATURE_VALUE_TYPE(client_certificates::features:: kEnableClientCertificateProvisioningOnAndroid)}, - #endif // BUILDFLAG(IS_ANDROID) {"service-worker-auto-preload", @@ -11931,6 +12018,11 @@ const FeatureEntry kFeatureEntries[] = { {"android-bookmark-bar", flag_descriptions::kAndroidBookmarkBarName, flag_descriptions::kAndroidBookmarkBarDescription, kOsAndroid, FEATURE_VALUE_TYPE(chrome::android::kAndroidBookmarkBar)}, + + {"android-bookmark-bar-fast-follow", + flag_descriptions::kAndroidBookmarkBarFastFollowName, + flag_descriptions::kAndroidBookmarkBarFastFollowDescription, kOsAndroid, + FEATURE_VALUE_TYPE(chrome::android::kAndroidBookmarkBarFastFollow)}, #endif // BUILDFLAG(IS_ANDROID) {"happy-eyeballs-v3", flag_descriptions::kHappyEyeballsV3Name, @@ -11957,13 +12049,6 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kPrivacySandboxAdsApiUxEnhancementsDescription, kOsAll, FEATURE_VALUE_TYPE(privacy_sandbox::kPrivacySandboxAdsApiUxEnhancements)}, -#if !BUILDFLAG(IS_ANDROID) - {"safety-hub-services-on-start-up", - flag_descriptions::kSafetyHubServicesOnStartUpName, - flag_descriptions::kSafetyHubServicesOnStartUpDescription, kOsDesktop, - FEATURE_VALUE_TYPE(features::kSafetyHubServicesOnStartUp)}, -#endif // !BUILDFLAG(IS_ANDROID) - #if BUILDFLAG(ENABLE_DICE_SUPPORT) {"enable-oauth-multilogin-cookies-binding", flag_descriptions::kEnableOAuthMultiloginCookiesBindingName, @@ -11977,13 +12062,15 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions:: kEnableOAuthMultiloginCookiesBindingServerExperimentDescription, kOsMac | kOsWin | kOsLinux, - FEATURE_VALUE_TYPE( - switches::kEnableOAuthMultiloginCookiesBindingServerExperiment)}, + FEATURE_WITH_PARAMS_VALUE_TYPE( + switches::kEnableOAuthMultiloginCookiesBindingServerExperiment, + kOAuthMultiloginCookieBindingEnforcementVariations, + "EnableOAuthMultiloginCookiesBindingServerExperiment")}, {"enable-chrome-refresh-token-binding", flag_descriptions::kEnableChromeRefreshTokenBindingName, flag_descriptions::kEnableChromeRefreshTokenBindingDescription, - kOsMac | kOsWin | kOsLinux, + kOsMac | kOsLinux, FEATURE_VALUE_TYPE(switches::kEnableChromeRefreshTokenBinding)}, #endif // BUILDFLAG(ENABLE_DICE_SUPPORT) @@ -12016,14 +12103,6 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kThrottleMainTo60HzDescription, kOsAll, FEATURE_VALUE_TYPE(features::kThrottleMainFrameTo60Hz)}, - {"client-side-detection-brand-and-page-intent", - flag_descriptions::kClientSideDetectionBrandAndIntentForScamDetectionName, - flag_descriptions:: - kClientSideDetectionBrandAndIntentForScamDetectionDescription, - kOsMac | kOsWin | kOsLinux, - FEATURE_VALUE_TYPE( - safe_browsing::kClientSideDetectionBrandAndIntentForScamDetection)}, - #if BUILDFLAG(IS_ANDROID) {"client-side-detection-send-intelligent-scan-info-android", flag_descriptions::kClientSideDetectionSendIntelligentScanInfoAndroidName, @@ -12034,13 +12113,6 @@ const FeatureEntry kFeatureEntries[] = { safe_browsing::kClientSideDetectionSendIntelligentScanInfoAndroid)}, #endif // BUILDFLAG(IS_ANDROID) - {"client-side-detection-show-scam-verdict-warning", - flag_descriptions::kClientSideDetectionShowScamVerdictWarningName, - flag_descriptions::kClientSideDetectionShowScamVerdictWarningDescription, - kOsMac | kOsWin | kOsLinux, - FEATURE_VALUE_TYPE( - safe_browsing::kClientSideDetectionShowScamVerdictWarning)}, - #if BUILDFLAG(IS_ANDROID) {"client-side-detection-show-scam-verdict-warning-android", flag_descriptions::kClientSideDetectionShowScamVerdictWarningAndroidName, @@ -12268,13 +12340,6 @@ const FeatureEntry kFeatureEntries[] = { FEATURE_VALUE_TYPE(ui::kAndroidWindowOcclusion)}, #endif // BUILDFLAG(IS_ANDROID) -#if BUILDFLAG(ENTERPRISE_CONTENT_ANALYSIS) - {"enterprise-file-obfuscation", - flag_descriptions::kEnterpriseFileObfuscationName, - flag_descriptions::kEnterpriseFileObfuscationDescription, kOsDesktop, - FEATURE_VALUE_TYPE(enterprise_obfuscation::kEnterpriseFileObfuscation)}, -#endif // BUILDFLAG(ENTERPRISE_CONTENT_ANALYSIS) - {"iph-autofill-credit-card-benefit-feature", flag_descriptions::kIPHAutofillCreditCardBenefitFeatureName, flag_descriptions::kIPHAutofillCreditCardBenefitFeatureDescription, @@ -12377,6 +12442,12 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kLocalNetworkAccessChecksWebSocketsDescription, kOsAll, FEATURE_VALUE_TYPE( network::features::kLocalNetworkAccessChecksWebSockets)}, + {"local-network-access-check-webtransport", + flag_descriptions::kLocalNetworkAccessChecksWebTransportName, + flag_descriptions::kLocalNetworkAccessChecksWebTransportDescription, + kOsAll, + FEATURE_VALUE_TYPE( + network::features::kLocalNetworkAccessChecksWebTransport)}, #if BUILDFLAG(IS_CHROMEOS) {"notebook-lm-app-preinstall", @@ -12489,13 +12560,6 @@ const FeatureEntry kFeatureEntries[] = { #endif // BUILDFLAG(IS_ANDROID) -#if !BUILDFLAG(IS_ANDROID) - {flag_descriptions::kTabGroupShorcutsId, - flag_descriptions::kTabGroupShorcutsName, - flag_descriptions::kTabGroupShorcutsDescription, kOsDesktop, - FEATURE_VALUE_TYPE(tabs::kTabGroupShortcuts)}, -#endif // !BUILDFLAG(IS_ANDROID) - {"bundled-security-settings", flag_descriptions::kBundledSecuritySettingsName, flag_descriptions::kBundledSecuritySettingsDescription, kOsDesktop, @@ -12569,6 +12633,11 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kSideBySideSessionRestoreName, flag_descriptions::kSideBySideSessionRestoreDescription, kOsDesktop, FEATURE_VALUE_TYPE(features::kSideBySideSessionRestore)}, + + {"open-dragged-links-same-tab", + flag_descriptions::kOpenDraggedLinksSameTabName, + flag_descriptions::kOpenDraggedLinksSameTabDescription, kOsDesktop, + FEATURE_VALUE_TYPE(blink::features::kSupportOpeningDraggedLinksInSameTab)}, #endif {"enable-secure-payment-confirmation-fallback-ux", @@ -12614,19 +12683,13 @@ const FeatureEntry kFeatureEntries[] = { #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) || // BUILDFLAG(IS_CHROMEOS) -#if !BUILDFLAG(IS_ANDROID) - {"pinned-tab-toast-on-close", flag_descriptions::kPinnedTabToastOnCloseName, - flag_descriptions::kPinnedTabToastOnCloseDescription, kOsDesktop, - FEATURE_VALUE_TYPE(toast_features::kPinnedTabToastOnClose)}, -#endif // !BUILDFLAG(IS_ANDROID) - {"discount-autofill", commerce::flag_descriptions::kDiscountAutofillName, commerce::flag_descriptions::kDiscountAutofillDescription, kOsDesktop, FEATURE_VALUE_TYPE(commerce::kDiscountAutofill)}, #if BUILDFLAG(IS_ANDROID) {"android-web-app-launch-handler", - flag_descriptions::kAndroidWebAppLaunchHandler, + flag_descriptions::kAndroidWebAppLaunchHandlerName, flag_descriptions::kAndroidWebAppLaunchHandlerDescription, kOsAndroid, FEATURE_VALUE_TYPE(features::kAndroidWebAppLaunchHandler)}, #endif // BUILDFLAG(IS_ANDROID) @@ -12641,6 +12704,9 @@ const FeatureEntry kFeatureEntries[] = { {"top-controls-refactor", flag_descriptions::kTopControlsRefactorName, flag_descriptions::kTopControlsRefactorDescription, kOsAndroid, FEATURE_VALUE_TYPE(chrome::android::kTopControlsRefactor)}, + {"top-controls-refactor-v2", flag_descriptions::kTopControlsRefactorV2Name, + flag_descriptions::kTopControlsRefactorV2Description, kOsAndroid, + FEATURE_VALUE_TYPE(chrome::android::kTopControlsRefactorV2)}, #endif // BUILDFLAG(IS_ANDROID) #if BUILDFLAG(IS_ANDROID) @@ -12728,18 +12794,6 @@ const FeatureEntry kFeatureEntries[] = { autofill::features:: kAutofillEnableMultipleRequestInVirtualCardDownstreamEnrollment)}, -#if BUILDFLAG(IS_ANDROID) - {"mvc-update-view-when-model-changed", - flag_descriptions::kMvcUpdateViewWhenModelChangedName, - flag_descriptions::kMvcUpdateViewWhenModelChangedDescription, kOsAndroid, - FEATURE_VALUE_TYPE(chrome::android::kMvcUpdateViewWhenModelChanged)}, - - {"reload-tab-ui-resources-if-changed", - flag_descriptions::kReloadTabUiResourcesIfChangedName, - flag_descriptions::kReloadTabUiResourcesIfChangedDescription, kOsAndroid, - FEATURE_VALUE_TYPE(chrome::android::kReloadTabUiResourcesIfChanged)}, -#endif // BUILDFLAG(IS_ANDROID) - {"page-actions-migration", flag_descriptions::kPageActionsMigrationName, flag_descriptions::kPageActionsMigrationDescription, kOsDesktop, FEATURE_WITH_PARAMS_VALUE_TYPE(features::kPageActionsMigration, @@ -12932,8 +12986,9 @@ const FeatureEntry kFeatureEntries[] = { {"enable-seamless-signin", flag_descriptions::kEnableSeamlessSigninName, flag_descriptions::kEnableSeamlessSigninDescription, kOsAndroid, FEATURE_WITH_PARAMS_VALUE_TYPE(switches::kEnableSeamlessSignin, - kSeamlessSigninPromoTypes, - "SeamlessSigninPromoTypes")}, + kSeamlessSigninVariations, + "SeamlessSigninVariations")}, + #endif // BUILDFLAG(IS_ANDROID) #if BUILDFLAG(IS_ANDROID) @@ -13323,6 +13378,11 @@ const FeatureEntry kFeatureEntries[] = { contextual_tasks::flag_descriptions::kContextualTasksDescription, kOsDesktop, FEATURE_VALUE_TYPE(contextual_tasks::kContextualTasks)}, + {"contextual-tasks-context", + contextual_tasks::flag_descriptions::kContextualTasksContextName, + contextual_tasks::flag_descriptions::kContextualTasksContextDescription, + kOsDesktop, FEATURE_VALUE_TYPE(contextual_tasks::kContextualTasksContext)}, + #if !BUILDFLAG(IS_ANDROID) {"create-new-tab-group-app-menu-top-level", flag_descriptions::kCreateNewTabGroupAppMenuTopLevelName, @@ -13385,13 +13445,186 @@ const FeatureEntry kFeatureEntries[] = { autofill::features::kAutofillPrioritizeSaveCardOverMandatoryReauth)}, #if BUILDFLAG(IS_ANDROID) + {"autofill-enable-keyboard-accessory-chip-redesign", + flag_descriptions::kAutofillEnableKeyboardAccessoryChipRedesignName, + flag_descriptions::kAutofillEnableKeyboardAccessoryChipRedesignDescription, + kOsAndroid, + FEATURE_VALUE_TYPE( + autofill::features::kAutofillEnableKeyboardAccessoryChipRedesign)}, +#endif + +#if BUILDFLAG(IS_ANDROID) + {"trusted-web-activity-contacts-delegation", + flag_descriptions::kTrustedWebActivityContactsDelegationName, + flag_descriptions::kTrustedWebActivityContactsDelegationDescription, + kOsAndroid, + FEATURE_VALUE_TYPE( + chrome::android::kTrustedWebActivityContactsDelegation)}, + {"migrate-account-manager-delegate", flag_descriptions::kMigrateAccountManagerDelegateName, flag_descriptions::kMigrateAccountManagerDelegateDescription, kOsAndroid, FEATURE_VALUE_TYPE(switches::kMigrateAccountManagerDelegate)}, #endif - // Add new entries above this line. + {"variations-seed-corpus", flag_descriptions::kVariationsSeedCorpusName, + flag_descriptions::kVariationsSeedCorpusDescription, kOsAll, + STRING_VALUE_TYPE(variations::switches::kVariationsSeedCorpus, "")}, + +#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ + BUILDFLAG(IS_CHROMEOS) + {"passkey-unlock-error-ui", flag_descriptions::kPasskeyUnlockErrorUiName, + flag_descriptions::kPasskeyUnlockErrorUiDescription, kOsDesktop, + FEATURE_VALUE_TYPE(device::kPasskeyUnlockErrorUi)}, +#endif + +#if BUILDFLAG(IS_CHROMEOS) + {"vids-app-preinstall", flag_descriptions::kVidsAppPreinstallName, + flag_descriptions::kVidsAppPreinstallDescription, kOsCrOS, + FEATURE_VALUE_TYPE(chromeos::features::kVidsAppPreinstall)}, +#endif + +#if (BUILDFLAG(IS_ANDROID)) + {"android-context-menu-duplicate-tabs", + flag_descriptions::kAndroidContextMenuDuplicateTabsName, + flag_descriptions::kAndroidContextMenuDuplicateTabsDescription, kOsAndroid, + FEATURE_VALUE_TYPE(chrome::android::kAndroidContextMenuDuplicateTabs)}, +#endif + + {"block-v8-optimizer-on-unfamiliar-sites", + flag_descriptions::kBlockV8OptimizerOnUnfamiliarSitesSettingName, + flag_descriptions::kBlockV8OptimizerOnUnfamiliarSitesSettingDescription, + kOsDesktop, + FEATURE_VALUE_TYPE(content_settings::features:: + kBlockV8OptimizerOnUnfamiliarSitesSetting)}, + + {"service-worker-synthetic-response", + flag_descriptions::kServiceWorkerSyntheticResponseName, + flag_descriptions::kServiceWorkerSyntheticResponseDescription, kOsAll, + FEATURE_VALUE_TYPE(blink::features::kServiceWorkerSyntheticResponse)}, + + {"user-value-default-browser-strings", + flag_descriptions::kUserValueDefaultBrowserStringsName, + flag_descriptions::kUserValueDefaultBrowserStringsDescription, kOsDesktop, + FEATURE_VALUE_TYPE(features::kUserValueDefaultBrowserStrings)}, + +#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ + BUILDFLAG(IS_CHROMEOS) + {"read-anything-read-aloud-ts-text-segmentation", + flag_descriptions::kReadAnythingReadAloudTsTextSegmentationName, + flag_descriptions::kReadAnythingReadAloudTsTextSegmentationDescription, + kOsDesktop, + FEATURE_VALUE_TYPE(features::kReadAnythingReadAloudTSTextSegmentation)}, +#endif + {"mdm-errors-for-dasher-accounts-handling", + flag_descriptions::kHandleMdmErrorsForDasherAccountsName, + flag_descriptions::kHandleMdmErrorsForDasherAccountsDescription, kOsAll, + FEATURE_VALUE_TYPE(switches::kHandleMdmErrorsForDasherAccounts)}, + +#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) + {"profile-creation-decline-signin-cta-experiment", + flag_descriptions::kProfileCreationDeclineSigninCTAExperimentName, + flag_descriptions::kProfileCreationDeclineSigninCTAExperimentDescription, + kOsMac | kOsWin | kOsLinux, + FEATURE_VALUE_TYPE(switches::kProfileCreationDeclineSigninCTAExperiment)}, +#endif + +#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) + {"show-profile-picker-to-all-users-experiment", + flag_descriptions::kShowProfilePickerToAllUsersExperimentName, + flag_descriptions::kShowProfilePickerToAllUsersExperimentDescription, + kOsMac | kOsWin | kOsLinux, + FEATURE_VALUE_TYPE(switches::kShowProfilePickerToAllUsersExperiment)}, +#endif + + {"profile-signals-reporting-enabled", + flag_descriptions::kProfileSignalsReportingEnabledName, + flag_descriptions::kProfileSignalsReportingEnabledDescription, kOsAll, + FEATURE_VALUE_TYPE( + enterprise_signals::features::kProfileSignalsReportingEnabled)}, + +#if BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS) + {"enable-extensions-for-corp-desktop-android", + flag_descriptions::kEnableExtensionsForCorpDesktopAndroidName, + flag_descriptions::kEnableExtensionsForCorpDesktopAndroidDescription, + kOsAndroid, + FEATURE_VALUE_TYPE( + extensions_features::kEnableExtensionsForCorpDesktopAndroid)}, +#endif + +#if BUILDFLAG(IS_ANDROID) + {"autofill-enable-keyboard-accessory-chip-width-adjustment", + flag_descriptions::kAutofillEnableKeyboardAccessoryChipWidthAdjustmentName, + flag_descriptions:: + kAutofillEnableKeyboardAccessoryChipWidthAdjustmentDescription, + kOsAndroid, + FEATURE_VALUE_TYPE( + autofill::features:: + kAutofillEnableKeyboardAccessoryChipWidthAdjustment)}, +#endif + +#if BUILDFLAG(ENABLE_DEVICE_BOUND_SESSIONS) + {"use-unexportable-key-service-in-browser-process", + flag_descriptions::kUseUnexportableKeyServiceInBrowserProcessName, + flag_descriptions::kUseUnexportableKeyServiceInBrowserProcessDescription, + kOsMac | kOsWin | kOsLinux, + FEATURE_VALUE_TYPE( + network::features::kUseUnexportableKeyServiceInBrowserProcess)}, +#endif + +#if BUILDFLAG(IS_ANDROID) + {"android-desktop-zoom-scaling", + flag_descriptions::kAndroidDesktopZoomScalingName, + flag_descriptions::kAndroidDesktopZoomScalingDescription, kOsAndroid, + FEATURE_VALUE_TYPE(features::kAndroidDesktopZoomScaling)}, +#endif + +#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) + {"profile-picker-text-variations", + flag_descriptions::kProfilePickerTextVariationsName, + flag_descriptions::kProfilePickerTextVariationsDescription, + kOsLinux | kOsMac | kOsWin, + FEATURE_WITH_PARAMS_VALUE_TYPE(switches::kProfilePickerTextVariations, + kProfilePickerTextVariations, + "ProfilePickerTextVariations")}, +#endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) + +#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ + BUILDFLAG(IS_CHROMEOS) + {"lens-overlay-optimization-filter", + flag_descriptions::kLensOverlayOptimizationFilterName, + flag_descriptions::kLensOverlayOptimizationFilterDescription, kOsDesktop, + FEATURE_VALUE_TYPE(lens::features::kLensOverlayOptimizationFilter)}, +#endif + +#if !BUILDFLAG(IS_ANDROID) + {"web-app-migrate-preinstalled-chat", + flag_descriptions::kWebAppMigratePreinstalledChatName, + flag_descriptions::kWebAppMigratePreinstalledChatDescription, kOsDesktop, + FEATURE_VALUE_TYPE(features::kWebAppMigratePreinstalledChat)}, +#endif + + {"connection-allowlists", flag_descriptions::kConnectionAllowlistsName, + flag_descriptions::kConnectionAllowlistsDescription, kOsAll, + FEATURE_VALUE_TYPE(network::features::kConnectionAllowlists)}, + +#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ + BUILDFLAG(IS_CHROMEOS) + {"read-anything-with-readability-enabled", + flag_descriptions::kReadAnythingWithReadabilityName, + flag_descriptions::kReadAnythingWithReadabilityDescription, kOsDesktop, + FEATURE_VALUE_TYPE(features::kReadAnythingWithReadability)}, +#endif + +#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ + BUILDFLAG(IS_CHROMEOS) + {"lens-overlay-non-blocking-privacy-notice", + flag_descriptions::kLensOverlayNonBlockingPrivacyNoticeName, + flag_descriptions::kLensOverlayNonBlockingPrivacyNoticeDescription, + kOsDesktop, + FEATURE_VALUE_TYPE(lens::features::kLensOverlayNonBlockingPrivacyNotice)}, +#endif + // Add new entries above this line. // NOTE: Adding a new flag requires adding a corresponding entry to enum // "LoginCustomFlags" in tools/metrics/histograms/enums.xml. See "Flag // Histograms" in tools/metrics/histograms/README.md (run the @@ -13724,9 +13957,8 @@ std::vector* GetEntriesForTesting() { void SetFeatureEntries(const std::vector& entries) { auto* entries_for_testing = GetEntriesForTesting(); // IN-TEST CHECK(entries_for_testing->empty()); - for (const auto& entry : entries) { - entries_for_testing->push_back(entry); - } + entries_for_testing->insert(entries_for_testing->end(), entries.begin(), + entries.end()); FlagsStateSingleton::GetInstance()->RebuildState(*entries_for_testing); } 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 a292c76c..e5695667 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 @@ -120,10 +120,11 @@ #include "components/password_manager/core/browser/password_manager_metrics_util.h" #include "components/password_manager/core/browser/password_store/password_store_interface.h" #include "components/password_manager/core/browser/password_store/smart_bubble_stats_store.h" -#include "components/payments/content/browser_binding/browser_bound_keys_deleter.h" -#include "components/payments/content/browser_binding/browser_bound_keys_deleter_factory.h" +#include "components/payments/content/browser_binding/browser_bound_key_deleter.h" +#include "components/payments/content/browser_binding/browser_bound_key_deleter_factory.h" #include "components/payments/content/web_payments_web_data_service.h" #include "components/performance_manager/public/user_tuning/prefs.h" +#include "components/permissions/features.h" #include "components/permissions/permission_actions_history.h" #include "components/permissions/permission_decision_auto_blocker.h" #include "components/prefs/pref_service.h" @@ -335,7 +336,7 @@ ChromeBrowsingDataRemoverDelegate::GetDomainsForDeferredCookieDeletion( std::string domain = GetDomainAndRegistry( url, net::registry_controlled_domains::INCLUDE_PRIVATE_REGISTRIES); if (domain.empty()) - domain = url.host(); + domain = url.GetHost(); domains.insert(domain); } return {domains.begin(), domains.end()}; @@ -732,13 +733,11 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData( } #endif // !BUILDFLAG(IS_ANDROID) -#if BUILDFLAG(IS_ANDROID) if (payments::BrowserBoundKeyDeleter* browser_bound_key_deleter = payments::BrowserBoundKeyDeleterFactory::GetForBrowserContext( profile_)) { browser_bound_key_deleter->RemoveInvalidBBKs(); } -#endif // BUILDFLAG(IS_ANDROID) #if BUILDFLAG(IS_CHROMEOS) if (base::FeatureList::IsEnabled( @@ -940,6 +939,11 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData( PermissionDecisionAutoBlockerFactory::GetForProfile(profile_) ->RemoveEmbargoAndResetCounts(filter); + if (base::FeatureList::IsEnabled( + permissions::features::kPermissionHeuristicAutoGrant)) { + PermissionActionsHistoryFactory::GetForProfile(profile_) + ->ResetHeuristicData(filter); + } } ////////////////////////////////////////////////////////////////////////////// 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 61c77dbc..76769dc5 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 @@ -130,6 +130,7 @@ #if BUILDFLAG(IS_WIN) #include "chrome/browser/media/media_foundation_service_monitor.h" +#include "content/public/browser/site_instance.h" #include "media/mojo/mojom/media_foundation_preferences.mojom.h" #include "media/mojo/services/media_foundation_preferences.h" #endif // BUILDFLAG(IS_WIN) 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 0ab10486..87a95ef5 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 @@ -52,7 +52,6 @@ #include "build/branding_buildflags.h" #include "build/build_config.h" #include "build/config/chromebox_for_meetings/buildflags.h" // PLATFORM_CFM -#include "chrome/browser/preloading/search_preload/search_preload_features.h" #include "chrome/browser/after_startup_task_utils.h" #include "chrome/browser/ai/ai_manager.h" #include "chrome/browser/app_mode/app_mode_utils.h" @@ -67,6 +66,7 @@ #include "chrome/browser/btm/btm_browser_signin_detector.h" #include "chrome/browser/btm/stateful_bounce_counter.h" #include "chrome/browser/child_process_host_flags.h" +#include "chrome/browser/chrome_browser_main.h" #include "chrome/browser/chrome_content_browser_client_binder_policies.h" #include "chrome/browser/chrome_content_browser_client_navigation_throttles.h" #include "chrome/browser/chrome_content_browser_client_parts.h" @@ -87,7 +87,6 @@ #include "chrome/browser/external_protocol/external_protocol_handler.h" #include "chrome/browser/favicon/favicon_utils.h" #include "chrome/browser/font_family_cache.h" -#include "chrome/browser/gpu/chrome_browser_main_extra_parts_gpu.h" #include "chrome/browser/headless/headless_mode_util.h" #include "chrome/browser/hid/chrome_hid_delegate.h" #include "chrome/browser/history/history_service_factory.h" @@ -104,21 +103,21 @@ #include "chrome/browser/media/webrtc/media_capture_devices_dispatcher.h" #include "chrome/browser/media/webrtc/media_device_salt_service_factory.h" #include "chrome/browser/media/webrtc/webrtc_logging_controller.h" -#include "chrome/browser/memory/chrome_browser_main_extra_parts_memory.h" -#include "chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.h" #include "chrome/browser/metrics/chrome_feature_list_creator.h" #include "chrome/browser/navigation_predictor/anchor_element_preloader.h" #include "chrome/browser/net/chrome_network_delegate.h" #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/optimization_guide/optimization_guide_keyed_service.h" +#include "chrome/browser/optimization_guide/optimization_guide_keyed_service_factory.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" #include "chrome/browser/performance_manager/public/chrome_content_browser_client_performance_manager_part.h" -#include "chrome/browser/performance_monitor/chrome_browser_main_extra_parts_performance_monitor.h" #include "chrome/browser/picture_in_picture/picture_in_picture_window_manager.h" #include "chrome/browser/picture_in_picture/scoped_tuck_picture_in_picture.h" #include "chrome/browser/plugins/plugin_utils.h" +#include "chrome/browser/policy/chrome_policy_blocklist_service_factory.h" #include "chrome/browser/policy/policy_util.h" #include "chrome/browser/policy/profile_policy_connector.h" #include "chrome/browser/predictors/loading_predictor.h" @@ -133,29 +132,28 @@ #include "chrome/browser/preloading/preloading_features.h" #include "chrome/browser/preloading/preloading_prefs.h" #include "chrome/browser/preloading/prerender/prerender_web_contents_delegate.h" +#include "chrome/browser/preloading/search_preload/search_preload_features.h" #include "chrome/browser/privacy_budget/identifiability_study_state.h" #include "chrome/browser/privacy_sandbox/privacy_sandbox_settings_factory.h" #include "chrome/browser/privacy_sandbox/tracking_protection_settings_factory.h" -#include "chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile_io_data.h" #include "chrome/browser/profiles/profile_manager.h" #include "chrome/browser/profiles/profile_selections.h" #include "chrome/browser/profiles/renderer_updater.h" #include "chrome/browser/profiles/renderer_updater_factory.h" -#include "chrome/browser/profiling_host/chrome_browser_main_extra_parts_profiling.h" #include "chrome/browser/renderer_host/chrome_navigation_ui_data.h" #include "chrome/browser/renderer_preferences_util.h" #include "chrome/browser/safe_browsing/url_checker_delegate_impl.h" #include "chrome/browser/search/search.h" #include "chrome/browser/search_engines/template_url_service_factory.h" -#include "chrome/browser/segmentation_platform/chrome_browser_main_extra_parts_segmentation_platform.h" #include "chrome/browser/serial/chrome_serial_delegate.h" #include "chrome/browser/sharing/sms/sms_remote_fetcher.h" #include "chrome/browser/signin/chrome_signin_proxying_url_loader_factory.h" #include "chrome/browser/signin/chrome_signin_url_loader_throttle.h" #include "chrome/browser/signin/header_modification_delegate_impl.h" #include "chrome/browser/speech/chrome_speech_recognition_manager_delegate.h" +#include "chrome/browser/speech/on_device_speech_recognition_util.h" #include "chrome/browser/ssl/chrome_security_blocking_page_factory.h" #include "chrome/browser/ssl/chrome_security_state_tab_helper.h" #include "chrome/browser/ssl/https_upgrades_interceptor.h" @@ -164,8 +162,6 @@ #include "chrome/browser/tab_group_sync/tab_group_sync_utils.h" #include "chrome/browser/task_manager/sampling/task_manager_impl.h" #include "chrome/browser/task_manager/task_manager_interface.h" -#include "chrome/browser/themes/theme_service.h" -#include "chrome/browser/themes/theme_service_factory.h" #include "chrome/browser/tracing/chrome_tracing_delegate.h" #include "chrome/browser/translate/translate_service.h" #include "chrome/browser/ui/blocked_content/blocked_window_params.h" @@ -212,6 +208,7 @@ #include "chrome/common/webui_url_constants.h" #include "chrome/grit/generated_resources.h" #include "chrome/installer/util/google_update_settings.h" +#include "components/autofill/core/common/autofill_features.h" #include "components/autofill/core/common/autofill_switches.h" #include "components/blocked_content/popup_blocker.h" #include "components/browsing_topics/browsing_topics_service.h" @@ -223,6 +220,7 @@ #include "components/content_settings/core/common/content_settings.h" #include "components/content_settings/core/common/content_settings_types.h" #include "components/content_settings/core/common/cookie_settings_base.h" +#include "components/contextual_tasks/public/features.h" #include "components/custom_handlers/protocol_handler_registry.h" #include "components/custom_handlers/protocol_handler_throttle.h" #include "components/dom_distiller/core/dom_distiller_switches.h" @@ -262,6 +260,7 @@ #include "components/no_state_prefetch/common/no_state_prefetch_final_status.h" #include "components/no_state_prefetch/common/no_state_prefetch_url_loader_throttle.h" #include "components/page_load_metrics/browser/metrics_web_contents_observer.h" +#include "components/password_manager/core/browser/features/password_features.h" #include "components/payments/content/payment_request_display_manager.h" #include "components/payments/content/secure_payment_confirmation_service_factory.h" #include "components/pdf/common/pdf_util.h" @@ -360,6 +359,7 @@ #include "media/base/media_switches.h" #include "media/media_buildflags.h" #include "media/mojo/buildflags.h" +#include "media/mojo/mojom/speech_recognizer.mojom.h" #include "mojo/public/cpp/bindings/remote.h" #include "net/base/data_url.h" #include "net/base/features.h" @@ -416,7 +416,6 @@ #include "base/strings/string_tokenizer.h" #include "base/win/win_util.h" #include "base/win/windows_version.h" -#include "chrome/browser/chrome_browser_main_win.h" #include "chrome/browser/lifetime/application_lifetime_desktop.h" #include "chrome/browser/performance_manager/public/dll_pre_read_policy_win.h" #include "chrome/browser/tracing/tracing_features.h" @@ -427,8 +426,6 @@ #include "sandbox/win/src/sandbox_policy.h" #elif BUILDFLAG(IS_MAC) #include "chrome/browser/browser_process_platform_part_mac.h" -#include "chrome/browser/chrome_browser_main_mac.h" -#include "chrome/browser/mac/chrome_browser_main_extra_parts_mac.h" #include "chrome/common/chrome_version.h" #include "components/soda/constants.h" #include "sandbox/mac/sandbox_serializer.h" @@ -456,7 +453,6 @@ #include "chrome/browser/ash/fileapi/mtp_file_system_backend_delegate.h" #include "chrome/browser/ash/login/signin_partition_manager.h" #include "chrome/browser/ash/login/startup_utils.h" -#include "chrome/browser/ash/main_parts/chrome_browser_main_parts_ash.h" #include "chrome/browser/ash/net/network_health/network_health_manager.h" #include "chrome/browser/ash/net/system_proxy_manager.h" #include "chrome/browser/ash/profiles/profile_helper.h" @@ -466,7 +462,6 @@ #include "chrome/browser/media/webrtc/multi_capture/multi_capture_data_service_factory.h" #include "chrome/browser/speech/tts_chromeos.h" #include "chrome/browser/speech/tts_controller_delegate_impl.h" -#include "chrome/browser/ui/ash/main_extra_parts/chrome_browser_main_extra_parts_ash.h" #include "chrome/browser/ui/ash/system_web_apps/system_web_app_ui_utils.h" #include "chrome/browser/ui/browser_dialogs.h" #include "chrome/browser/ui/webui/ash/kerberos/kerberos_in_browser_dialog.h" @@ -479,9 +474,6 @@ #include "components/user_manager/user_manager.h" #include "services/service_manager/public/mojom/interface_provider_spec.mojom.h" #include "storage/browser/file_system/external_mount_points.h" -#elif BUILDFLAG(IS_LINUX) -#include "chrome/browser/chrome_browser_main_linux.h" -#include "chrome/browser/ui/views/chrome_browser_main_extra_parts_views_linux.h" #elif BUILDFLAG(IS_ANDROID) #include "base/android/application_status_listener.h" #include "base/feature_list.h" @@ -491,7 +483,6 @@ #include "chrome/browser/android/service_tab_launcher.h" #include "chrome/browser/android/tab_android.h" #include "chrome/browser/android/tab_web_contents_delegate_android.h" -#include "chrome/browser/chrome_browser_main_android.h" #include "chrome/browser/chrome_content_browser_client_android.h" #include "chrome/browser/digital_credentials/digital_identity_provider_android.h" #include "chrome/browser/flags/android/chrome_feature_list.h" @@ -509,30 +500,35 @@ #include "ui/base/resource/resource_bundle_android.h" #include "ui/base/ui_base_paths.h" #include "ui/display/util/display_util.h" -#elif BUILDFLAG(IS_POSIX) -#include "chrome/browser/chrome_browser_main_posix.h" #endif #if !BUILDFLAG(IS_ANDROID) +#include "chrome/browser/actor/actor_features.h" #include "chrome/browser/actor/actor_keyed_service.h" +#include "chrome/browser/actor/actor_keyed_service_factory.h" +#include "chrome/browser/contextual_tasks/contextual_tasks_ui_service.h" +#include "chrome/browser/contextual_tasks/contextual_tasks_ui_service_factory.h" #include "chrome/browser/devtools/chrome_devtools_manager_delegate.h" #include "chrome/browser/devtools/devtools_window.h" #include "chrome/browser/digital_credentials/digital_identity_provider_desktop.h" #include "chrome/browser/direct_sockets/chrome_direct_sockets_delegate.h" -#include "chrome/browser/headless/chrome_browser_main_extra_parts_headless.h" #include "chrome/browser/media/unified_autoplay_config.h" #include "chrome/browser/metrics/usage_scenario/chrome_responsiveness_calculator_delegate.h" #include "chrome/browser/new_tab_page/new_tab_page_util.h" #include "chrome/browser/picture_in_picture/auto_picture_in_picture_tab_helper.h" +#include "chrome/browser/printing/print_preview_dialog_controller.h" #include "chrome/browser/screen_ai/screen_ai_install_state.h" #include "chrome/browser/search/instant_service.h" #include "chrome/browser/search/instant_service_factory.h" +#include "chrome/browser/themes/theme_service.h" +#include "chrome/browser/themes/theme_service_factory.h" #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser_dialogs.h" #include "chrome/browser/ui/browser_finder.h" #include "chrome/browser/ui/browser_list.h" #include "chrome/browser/ui/chrome_pages.h" #include "chrome/browser/ui/tabs/tab_strip_model.h" +#include "chrome/browser/ui/waap/waap_utils.h" #include "chrome/browser/ui/webui/chrome_content_browser_client_webui_part.h" #include "chrome/browser/ui/webui/webui_util_desktop.h" #include "chrome/browser/web_applications/isolated_web_apps/chrome_content_browser_client_isolated_web_apps_part.h" @@ -553,6 +549,7 @@ #include "components/keep_alive_registry/keep_alive_registry.h" #include "components/password_manager/content/common/web_ui_constants.h" #include "components/password_manager/core/common/password_manager_features.h" +#include "components/soda/soda_util.h" #include "components/webapps/isolated_web_apps/url_loading/url_loader_factory.h" #include "services/network/public/mojom/permissions_policy/permissions_policy_feature.mojom.h" #include "third_party/blink/public/mojom/installedapp/related_application.mojom.h" @@ -587,26 +584,12 @@ #include "components/crash/content/browser/crash_handler_host_linux.h" #endif -#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) -#include "chrome/browser/enterprise/chrome_browser_main_extra_parts_enterprise.h" -#endif - #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ BUILDFLAG(IS_CHROMEOS) #include "components/webapps/isolated_web_apps/scheme.h" #endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || // BUILDFLAG(IS_CHROMEOS) -#if defined(TOOLKIT_VIEWS) -#include "chrome/browser/ui/views/chrome_browser_main_extra_parts_views.h" -#endif - -#if BUILDFLAG(IS_LINUX) -#include "chrome/browser/chrome_browser_main_extra_parts_linux.h" -#elif BUILDFLAG(IS_OZONE) -#include "chrome/browser/chrome_browser_main_extra_parts_ozone.h" -#endif - #if BUILDFLAG(ENABLE_CAPTIVE_PORTAL_DETECTION) #include "components/captive_portal/content/captive_portal_tab_helper.h" #include "components/captive_portal/content/captive_portal_url_loader_throttle.h" @@ -786,23 +769,6 @@ BASE_FEATURE(kSkipPagehideInCommitForDSENavigation, BASE_FEATURE(kPrewarmServiceWorkerRegistrationForDSE, 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. -class ChromeBrowserMainExtraPartsThreadNotifier final - : public ChromeBrowserMainExtraParts { - public: - explicit ChromeBrowserMainExtraPartsThreadNotifier( - base::OnceClosure threads_ready_closure) - : threads_ready_closure_(std::move(threads_ready_closure)) {} - - // ChromeBrowserMainExtraParts: - void PostCreateThreads() final { std::move(threads_ready_closure_).Run(); } - - private: - base::OnceClosure threads_ready_closure_; -}; - // Cached version of the locale so we can return the locale on the I/O // thread. std::string& GetIOThreadApplicationLocale() { @@ -826,7 +792,7 @@ bool HandleNewTabPageLocationOverride( GURL* url, content::BrowserContext* browser_context) { if (!url->SchemeIs(content::kChromeUIScheme) || - url->host() != chrome::kChromeUINewTabHost) { + url->GetHost() != chrome::kChromeUINewTabHost) { return false; } @@ -1069,7 +1035,7 @@ void LaunchURL( ProtocolHandlerRegistryFactory::GetForBrowserContext( web_contents->GetBrowserContext()); if (protocol_handler_registry && - protocol_handler_registry->IsHandledProtocol(url.scheme())) { + protocol_handler_registry->IsHandledProtocol(url.GetScheme())) { return; } @@ -1145,8 +1111,8 @@ void LaunchURL( bool is_allowlisted = false; PolicyBlocklistService* service = - PolicyBlocklistFactory::GetForBrowserContext( - web_contents->GetBrowserContext()); + ChromePolicyBlocklistServiceFactory::GetForProfile( + Profile::FromBrowserContext(web_contents->GetBrowserContext())); if (ShouldHonorPolicies() && service) { const policy::URLBlocklist::URLBlocklistState url_state = service->GetURLBlocklistState(url); @@ -1368,6 +1334,20 @@ bool IsDefaultSearchEngine(Profile* profile, const GURL& url) { return false; } +#if !BUILDFLAG(IS_ANDROID) +bool IsActorActingOnWebContents(WebContents* web_contents) { + auto* actor_service = + actor::ActorKeyedService::Get(web_contents->GetBrowserContext()); + if (!actor_service) { + return false; + } + + const auto* tab_interface = + tabs::TabInterface::MaybeGetFromContents(web_contents); + return tab_interface && actor_service->IsActiveOnTab(*tab_interface); +} +#endif + } // namespace // static @@ -1638,103 +1618,10 @@ void ChromeContentBrowserClient::MaybeProxyNetworkBoundRequest( std::unique_ptr ChromeContentBrowserClient::CreateBrowserMainParts(bool is_integration_test) { - std::unique_ptr main_parts; - // Construct the Main browser parts based on the OS type. -#if BUILDFLAG(IS_WIN) - main_parts = std::make_unique(is_integration_test, - &startup_data_); -#elif BUILDFLAG(IS_MAC) - main_parts = std::make_unique(is_integration_test, - &startup_data_); -#elif BUILDFLAG(IS_CHROMEOS) - main_parts = std::make_unique( - is_integration_test, &startup_data_); -#elif BUILDFLAG(IS_LINUX) - main_parts = std::make_unique( - is_integration_test, &startup_data_); -#elif BUILDFLAG(IS_ANDROID) - main_parts = std::make_unique( - is_integration_test, &startup_data_); -#elif BUILDFLAG(IS_POSIX) - main_parts = std::make_unique( - is_integration_test, &startup_data_); -#else -#error "Unimplemented platform" -#endif - - main_parts->AddParts( - std::make_unique( - base::BindOnce(&ChromeContentBrowserClient::InitOnUIThread, - weak_factory_.GetWeakPtr()))); - - bool add_profiles_extra_parts = true; -#if BUILDFLAG(IS_ANDROID) - if (startup_data_.HasBuiltProfilePrefService()) { - add_profiles_extra_parts = false; - } -#endif - if (add_profiles_extra_parts) { - AddProfilesExtraParts(main_parts.get()); - } - - // Construct additional browser parts. Stages are called in the order in - // which they are added. -#if defined(TOOLKIT_VIEWS) -#if BUILDFLAG(IS_LINUX) - main_parts->AddParts( - std::make_unique()); -#else - main_parts->AddParts(std::make_unique()); -#endif -#endif - -#if BUILDFLAG(IS_MAC) - main_parts->AddParts(std::make_unique()); -#endif - -#if BUILDFLAG(IS_CHROMEOS) - // TODO(jamescook): Combine with `ChromeBrowserMainPartsAsh`. - main_parts->AddParts(std::make_unique()); -#endif - -#if BUILDFLAG(IS_LINUX) - main_parts->AddParts(std::make_unique()); -#elif BUILDFLAG(IS_OZONE) - main_parts->AddParts(std::make_unique()); -#endif - - main_parts->AddParts( - std::make_unique()); - - main_parts->AddParts( - std::make_unique()); - - main_parts->AddParts( - std::make_unique()); - - main_parts->AddParts(std::make_unique()); - - chrome::AddMetricsExtraParts(main_parts.get()); - -#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) - main_parts->AddParts( - std::make_unique< - enterprise_util::ChromeBrowserMainExtraPartsEnterprise>()); -#endif - -#if !BUILDFLAG(IS_ANDROID) - main_parts->AddParts( - std::make_unique()); -#endif - - // Always add ChromeBrowserMainExtraPartsGpu last to make sure - // GpuDataManager initialization could pick up about:flags settings. - main_parts->AddParts(std::make_unique()); - - main_parts->AddParts( - std::make_unique()); - - return main_parts; + return ChromeBrowserMainParts::Create( + is_integration_test, &startup_data_, + base::BindOnce(&ChromeContentBrowserClient::InitOnUIThread, + weak_factory_.GetWeakPtr())); } void ChromeContentBrowserClient::PostAfterStartupTask( @@ -1783,7 +1670,7 @@ ChromeContentBrowserClient::GetStoragePartitionConfigForSite( // The host in an extension site URL is the extension_id. CHECK(site.has_host()); return extensions::util::GetStoragePartitionConfigForExtensionId( - site.host(), browser_context); + site.GetHost(), browser_context); } #endif @@ -2103,7 +1990,7 @@ bool ChromeContentBrowserClient::DoesWebUIUrlRequireProcessLock( // embeds those tiles, should be locked. This allows most visited tiles to // stay in their parent (i.e., third-party NTP's) process. if (url.SchemeIs(chrome::kChromeSearchScheme) && - url.host() == chrome::kChromeSearchMostVisitedHost) { + url.GetHost() == chrome::kChromeSearchMostVisitedHost) { return false; } @@ -2323,7 +2210,7 @@ bool ChromeContentBrowserClient::ShouldStayInParentProcessForNTP( // // TODO(crbug.com/41261582): clean up the logic for detecting NTP. return url.SchemeIs(chrome::kChromeSearchScheme) && - url.host() == chrome::kChromeSearchMostVisitedHost && + url.GetHost() == chrome::kChromeSearchMostVisitedHost && search::IsNTPURL(parent_site_url); } @@ -2680,6 +2567,12 @@ bool ChromeContentBrowserClient::ShouldUrlUseApplicationIsolationLevel( return false; } +#if !BUILDFLAG(IS_ANDROID) +bool ChromeContentBrowserClient::IsInitialWebUIScheme(const GURL& url) { + return IsForInitialWebUI(url); +} +#endif // !BUILDFLAG(IS_ANDROID) + bool ChromeContentBrowserClient::IsIsolatedContextAllowedForUrl( content::BrowserContext* browser_context, const GURL& lock_url) { @@ -4190,6 +4083,7 @@ std::optional GetRootScrollbarThemeColor(WebContents* web_contents) { return std::nullopt; } +#if !BUILDFLAG(IS_ANDROID) if (ThemeService* theme_service = ThemeServiceFactory::GetForProfile( Profile::FromBrowserContext(web_contents->GetBrowserContext())); !theme_service || (theme_service->UsingDefaultTheme() && @@ -4197,6 +4091,7 @@ std::optional GetRootScrollbarThemeColor(WebContents* web_contents) { !theme_service->UsingDeviceTheme())) { return std::nullopt; } +#endif color_utils::HSL hsl; color_utils::SkColorToHSL( @@ -4433,6 +4328,24 @@ bool ChromeContentBrowserClient::CanCreateWindow( DCHECK(profile); *no_javascript_access = false; +#if !BUILDFLAG(IS_ANDROID) + // This block gives the Contextual Tasks feature the opportunity to intercept + // tab creation in the event it doesn't go directly through the feature's + // navigation throttle. When a new tab/window is created, it is done before + // the WebContents is created, so if we only let the navigation throttle + // handle it, we would end up with an empty tab or window. + contextual_tasks::ContextualTasksUiService* contextual_tasks_ui_service = + contextual_tasks::ContextualTasksUiServiceFactory::GetForBrowserContext( + profile); + if (base::FeatureList::IsEnabled(contextual_tasks::kContextualTasks) && + contextual_tasks_ui_service && + contextual_tasks_ui_service->HandleNavigation( + target_url, web_contents->GetLastCommittedURL(), web_contents, + /*is_to_new_tab=*/true)) { + return false; + } +#endif // !BUILDFLAG(IS_ANDROID) + // If the opener is trying to create a background window but doesn't have // the appropriate permission, fail the attempt. if (container_type == content::mojom::WindowContainerType::BACKGROUND) { @@ -4503,6 +4416,22 @@ ChromeContentBrowserClient::CreateSpeechRecognitionManagerDelegate() { return new speech::ChromeSpeechRecognitionManagerDelegate(); } +std::unique_ptr +ChromeContentBrowserClient::CreateModelBrokerClient( + content::BrowserContext* browser_context) { + auto* service = OptimizationGuideKeyedServiceFactory::GetForProfile( + Profile::FromBrowserContext(browser_context)); + return service ? service->CreateModelBrokerClient() : nullptr; +} + +media::mojom::AvailabilityStatus +ChromeContentBrowserClient::GetOnDeviceSpeechRecognitionAvailabilityStatus( + content::BrowserContext* context, + const std::string& language) { + return speech::GetOnDeviceSpeechRecognitionAvailabilityStatus(context, + language); +} + #if BUILDFLAG(IS_CHROMEOS) content::TtsControllerDelegate* ChromeContentBrowserClient::GetTtsControllerDelegate() { @@ -4853,12 +4782,6 @@ void ChromeContentBrowserClient::OverrideWebPreferences( base::FeatureList::IsEnabled(::features::kContextMenuEmptySpace); #endif - web_prefs->api_based_fingerprinting_interventions_enabled = - base::FeatureList::IsEnabled( - features::kIncognitoFingerprintingInterventions) && - Profile::FromBrowserContext(web_contents->GetBrowserContext()) - ->IsIncognitoProfile(); - web_prefs->content_based_fingerprinting_protection_enabled = fingerprinting_protection_filter::features:: IsFingerprintingProtectionEnabledForIncognitoState( @@ -5034,6 +4957,13 @@ base::FilePath ChromeContentBrowserClient::GetGraphiteDawnDiskCacheDirectory() { return user_data_dir.Append(FILE_PATH_LITERAL("GraphiteDawnCache")); } +base::FilePath ChromeContentBrowserClient::GetGPUPersistentCacheDirectory() { + base::FilePath user_data_dir; + base::PathService::Get(chrome::DIR_USER_DATA, &user_data_dir); + DCHECK(!user_data_dir.empty()); + return user_data_dir.Append(FILE_PATH_LITERAL("GPUPersistentCache")); +} + base::FilePath ChromeContentBrowserClient::GetNetLogDefaultDirectory() { base::FilePath user_data_dir; base::PathService::Get(chrome::DIR_USER_DATA, &user_data_dir); @@ -6168,7 +6098,7 @@ bool IsSystemFeatureURLDisabled(const GURL& url) { // chrome://os-settings/pwa.html shouldn't be replaced to let the settings app // installation complete successfully. if (url.DomainIs(chrome::kChromeUIOSSettingsHost) && - url.path() != "/pwa.html") { + url.GetPath() != "/pwa.html") { return IsSystemFeatureDisabled(policy::SystemFeature::kOsSettings); } @@ -6921,18 +6851,10 @@ bool ChromeContentBrowserClient::HandleExternalProtocol( #if !BUILDFLAG(IS_ANDROID) content::WebContents* web_contents = web_contents_getter.Run(); - if (web_contents) { - Profile* profile = - Profile::FromBrowserContext(web_contents->GetBrowserContext()); - const auto* tab_interface = - tabs::TabInterface::MaybeGetFromContents(web_contents); - auto* actor_service = actor::ActorKeyedService::Get(profile); + if (web_contents && IsActorActingOnWebContents(web_contents)) { // If actor is active, bail out early to prevent it from launching external // applications. - if (tab_interface && actor_service && - actor_service->IsActiveOnTab(*tab_interface)) { - return false; - } + return false; } #endif //! BUILDFLAG(IS_ANDROID) @@ -7027,15 +6949,32 @@ bool ChromeContentBrowserClient::HandleWebUI( // Rewrite chrome://help to chrome://settings/help. if (url->SchemeIs(content::kChromeUIScheme) && - url->host() == chrome::kChromeUIHelpHost) { + url->GetHost() == chrome::kChromeUIHelpHost) { *url = ReplaceURLHostAndPath(*url, chrome::kChromeUISettingsHost, chrome::kChromeUIHelpHost); } +#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ + BUILDFLAG(IS_CHROMEOS) + + // Rewrite chrome://settings/autofill to chrome://settings/yourSavedInfo. + if (url->SchemeIs(content::kChromeUIScheme) && + url->GetHost() == chrome::kChromeUISettingsHost && + url->GetPath() == chrome::kChromeUIAutofillPath && + base::FeatureList::IsEnabled( + autofill::features::kYourSavedInfoSettingsPage)) { + GURL::Replacements replacements; + replacements.SetPathStr(chrome::kChromeUIYourSavedInfoPath); + *url = url->ReplaceComponents(replacements); + } + +#endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || + // BUILDFLAG(IS_CHROMEOS) + #if BUILDFLAG(CHROME_ROOT_STORE_CERT_MANAGEMENT_UI) if (url->SchemeIs(content::kChromeUIScheme) && - url->host() == chrome::kChromeUISettingsHost && - url->path() == chrome::kChromeUICertificateRedirectPath) { + url->GetHost() == chrome::kChromeUISettingsHost && + url->GetPath() == chrome::kChromeUICertificateRedirectPath) { *url = GURL(chrome::kChromeUICertificateManagerDialogURL); return true; } @@ -7044,14 +6983,14 @@ bool ChromeContentBrowserClient::HandleWebUI( #if !BUILDFLAG(IS_ANDROID) // Redirect from deprecated trackingProtection subpage to cookies. if (url->SchemeIs(content::kChromeUIScheme) && - url->host() == chrome::kChromeUISettingsHost && - url->path() == chrome::kTrackingProtectionSubPagePath) { + url->GetHost() == chrome::kChromeUISettingsHost && + url->GetPath() == chrome::kTrackingProtectionSubPagePath) { GURL::Replacements replacements; replacements.SetPathStr(chrome::kCookiesSubPagePath); *url = url->ReplaceComponents(replacements); base::UmaHistogramBoolean("Settings.Cookies.TrackingProtectionRedirect", true); - } else if (url->path() == chrome::kCookiesSubPagePath) { + } else if (url->GetPath() == chrome::kCookiesSubPagePath) { base::UmaHistogramBoolean("Settings.Cookies.TrackingProtectionRedirect", false); } @@ -7126,7 +7065,7 @@ bool ChromeContentBrowserClient::HandleWebUIReverse( // displayed URL when rewriting chrome://settings/certificates to // chrome://certificate-manager if (url->SchemeIs(content::kChromeUIScheme) && - url->host() == chrome::kChromeUICertificateManagerHost) { + url->GetHost() == chrome::kChromeUICertificateManagerHost) { return true; } #endif // BUILDFLAG(CHROME_ROOT_STORE_CERT_MANAGEMENT_UI) @@ -7134,7 +7073,7 @@ bool ChromeContentBrowserClient::HandleWebUIReverse( // No need to actually reverse-rewrite the URL, but return true to update the // displayed URL when rewriting chrome://help to chrome://settings/help. return url->SchemeIs(content::kChromeUIScheme) && - url->host() == chrome::kChromeUISettingsHost; + url->GetHost() == chrome::kChromeUISettingsHost; } void ChromeContentBrowserClient::AddExtraPart( @@ -7355,8 +7294,7 @@ std::string ChromeContentBrowserClient::GetUserAgentBasedOnPolicy( blink::UserAgentMetadata ChromeContentBrowserClient::GetUserAgentMetadata() { DCHECK_CURRENTLY_ON(BrowserThread::UI); - return embedder_support::GetUserAgentMetadata( - g_browser_process->local_state()); + return embedder_support::GetUserAgentMetadata(); } std::optional ChromeContentBrowserClient::GetProductLogo() { @@ -7400,7 +7338,8 @@ bool ChromeContentBrowserClient::ShouldBlockRendererDebugURL( // If the debug URL being visited is listed in the URLBlocklist policy it // should be blocked. PolicyBlocklistService* service = - PolicyBlocklistFactory::GetForBrowserContext(context); + ChromePolicyBlocklistServiceFactory::GetForProfile( + Profile::FromBrowserContext(context)); using URLBlocklistState = policy::URLBlocklist::URLBlocklistState; URLBlocklistState blocklist_state = service->GetURLBlocklistState(url); return blocklist_state == URLBlocklistState::URL_IN_BLOCKLIST; @@ -7579,6 +7518,22 @@ base::OnceClosure ChromeContentBrowserClient::FetchRemoteSms( } #endif +std::optional +ChromeContentBrowserClient::MaybeOverrideSourceURLForClipboardAccess( + content::RenderFrameHost* render_frame_host, + const GURL& original_url) { + DCHECK(render_frame_host); +#if BUILDFLAG(ENABLE_PRINT_PREVIEW) + if (printing::PrintPreviewDialogController::IsPrintPreviewURL(original_url)) { + return printing::PrintPreviewDialogController::GetInstance() + ->GetInitiator(WebContents::FromRenderFrameHost(render_frame_host)) + ->GetPrimaryMainFrame() + ->GetLastCommittedURL(); + } +#endif // BUILDFLAG(ENABLE_PRINT_PREVIEW) + return std::nullopt; +} + bool ChromeContentBrowserClient::IsClipboardPasteAllowed( content::RenderFrameHost* render_frame_host) { DCHECK(render_frame_host); @@ -7792,7 +7747,7 @@ bool ChromeContentBrowserClient::AreV8OptimizationsDisabledForSite( // Only disable optimizations for schemes that might actually load web // content. auto* policy = ChildProcessSecurityPolicy::GetInstance(); - if (!site_url.is_empty() && !policy->IsWebSafeScheme(site_url.scheme())) { + if (!site_url.is_empty() && !policy->IsWebSafeScheme(site_url.GetScheme())) { return false; } @@ -8839,3 +8794,44 @@ bool ChromeContentBrowserClient::UsePrefetchPrerenderIntegration() { bool ChromeContentBrowserClient::UsePreloadServingMetrics() { return features::kDsePreload2UsePreloadServingMetrics.Get(); } + +#if !BUILDFLAG(IS_ANDROID) +bool ChromeContentBrowserClient::ShouldDisallowCredentialRequest( + content::WebContents* web_contents) { + if (!base::FeatureList::IsEnabled(password_manager::features::kActorLogin)) { + return false; + } + return IsActorActingOnWebContents(web_contents); +} +#endif // !BUILDFLAG(IS_ANDROID) + +bool ChromeContentBrowserClient::IsFileSystemAccessApiFilePickerAllowed( + WebContents* web_contents) { +#if !BUILDFLAG(IS_ANDROID) + if (base::FeatureList::IsEnabled( + actor::kGlicBlockFileSystemAccessApiFilePicker)) { + return !IsActorActingOnWebContents(web_contents); + } +#endif + return true; +} + +bool ChromeContentBrowserClient::ShouldSkipBeforeUnloadDialog( + content::RenderFrameHost* rfh) { +#if !BUILDFLAG(IS_ANDROID) + if (!base::FeatureList::IsEnabled( + actor::kGlicSkipBeforeUnloadDialogAndNavigate)) { + return false; + } + + auto* web_contents = content::WebContents::FromRenderFrameHost(rfh); + if (!web_contents) { + return false; + } + + return IsActorActingOnWebContents(web_contents); + +#else + return false; +#endif +} diff --git a/tools/under-control/src/chrome/browser/chrome_content_browser_client_navigation_throttles.cc b/tools/under-control/src/chrome/browser/chrome_content_browser_client_navigation_throttles.cc index 0fa6dc40..39d2c904 100755 --- a/tools/under-control/src/chrome/browser/chrome_content_browser_client_navigation_throttles.cc +++ b/tools/under-control/src/chrome/browser/chrome_content_browser_client_navigation_throttles.cc @@ -10,11 +10,13 @@ #include "build/buildflag.h" #include "chrome/browser/browser_process.h" #include "chrome/browser/data_sharing/data_sharing_navigation_throttle.h" +#include "chrome/browser/enterprise/data_protection/view_source_navigation_throttle.h" #include "chrome/browser/first_party_sets/first_party_sets_navigation_throttle.h" #include "chrome/browser/history/history_service_factory.h" #include "chrome/browser/interstitials/enterprise_util.h" #include "chrome/browser/lookalikes/lookalike_url_navigation_throttle.h" #include "chrome/browser/plugins/pdf_iframe_navigation_throttle.h" +#include "chrome/browser/policy/chrome_policy_blocklist_service_factory.h" #include "chrome/browser/policy/policy_util.h" #include "chrome/browser/preloading/prefetch/no_state_prefetch/chrome_no_state_prefetch_contents_delegate.h" #include "chrome/browser/preloading/prefetch/no_state_prefetch/no_state_prefetch_navigation_throttle.h" @@ -35,6 +37,7 @@ #include "chrome/common/pref_names.h" #include "components/captive_portal/content/captive_portal_service.h" #include "components/captive_portal/core/buildflags.h" +#include "components/contextual_tasks/public/features.h" #include "components/dom_distiller/content/browser/distiller_page_web_contents.h" #include "components/error_page/content/browser/net_error_auto_reloader.h" #include "components/fingerprinting_protection_filter/browser/throttle_manager.h" @@ -47,6 +50,7 @@ #include "components/page_load_metrics/browser/metrics_navigation_throttle.h" #include "components/payments/content/payment_handler_navigation_throttle.h" #include "components/policy/content/policy_blocklist_navigation_throttle.h" +#include "components/policy/content/safe_search_service.h" #include "components/privacy_sandbox/privacy_sandbox_settings.h" #include "components/safe_browsing/buildflags.h" #include "components/security_interstitials/content/insecure_form_navigation_throttle.h" @@ -54,6 +58,7 @@ #include "components/security_interstitials/content/ssl_error_navigation_throttle.h" #include "components/subresource_filter/content/browser/content_subresource_filter_throttle_manager.h" #include "components/tabs/public/tab_interface.h" +#include "components/user_prefs/user_prefs.h" #include "content/public/browser/navigation_handle.h" #include "content/public/browser/navigation_throttle_registry.h" #include "content/public/browser/web_contents.h" @@ -76,6 +81,7 @@ #include "chrome/browser/actor/actor_navigation_throttle.h" #include "chrome/browser/apps/link_capturing/link_capturing_navigation_throttle.h" #include "chrome/browser/apps/link_capturing/web_app_link_capturing_delegate.h" +#include "chrome/browser/contextual_tasks/contextual_tasks_navigation_throttle.h" #include "chrome/browser/devtools/devtools_window.h" #include "chrome/browser/page_info/web_view_side_panel_throttle.h" #include "chrome/browser/preloading/preview/preview_navigation_throttle.h" @@ -105,12 +111,8 @@ #endif // BUILDFLAG(ENABLE_PLATFORM_APPS) #if BUILDFLAG(ENABLE_EXTENSIONS) -#include "chrome/browser/extensions/chrome_content_browser_client_extensions_part.h" -#include "chrome/browser/extensions/user_script_listener.h" #include "chrome/browser/ui/browser_finder.h" #include "chrome/browser/ui/web_applications/app_browser_controller.h" -#include "extensions/browser/extension_navigation_throttle.h" -#include "extensions/browser/extensions_browser_client.h" #endif // BUILDFLAG(ENABLE_EXTENSIONS) #if BUILDFLAG(ENABLE_GUEST_VIEW) @@ -160,7 +162,12 @@ #if !BUILDFLAG(IS_ANDROID) #include "chrome/browser/enterprise/connectors/device_trust/navigation_throttle.h" #endif // !BUILDFLAG(IS_ANDROID) + #include "chrome/browser/enterprise/incognito/incognito_navigation_throttle.h" +#include "chrome/browser/extensions/chrome_content_browser_client_extensions_part.h" +#include "chrome/browser/extensions/user_script_listener.h" +#include "extensions/browser/extension_navigation_throttle.h" +#include "extensions/browser/extensions_browser_client.h" #endif // BUILDFLAG(ENABLE_EXTENSIONS_CORE) namespace { @@ -341,7 +348,7 @@ void CreateAndAddChromeThrottlesForNavigation( Profile* profile = Profile::FromBrowserContext(handle.GetWebContents()->GetBrowserContext()); -#if BUILDFLAG(ENABLE_EXTENSIONS) +#if BUILDFLAG(ENABLE_EXTENSIONS_CORE) if (!extensions::ChromeContentBrowserClientExtensionsPart:: AreExtensionsDisabledForProfile(profile)) { registry.AddThrottle( @@ -390,8 +397,13 @@ void CreateAndAddChromeThrottlesForNavigation( PasswordManagerNavigationThrottle::MaybeCreateAndAdd(registry); + content::BrowserContext* context = + handle.GetWebContents()->GetBrowserContext(); registry.AddThrottle(std::make_unique( - registry, handle.GetWebContents()->GetBrowserContext())); + registry, user_prefs::UserPrefs::Get(context), + ChromePolicyBlocklistServiceFactory::GetForProfile( + Profile::FromBrowserContext(context)), + SafeSearchFactory::GetForBrowserContext(context))); // Before setting up SSL error detection, configure SSLErrorHandler to invoke // the relevant extension API whenever an SSL interstitial is shown. @@ -434,6 +446,11 @@ void CreateAndAddChromeThrottlesForNavigation( // BUILDFLAG(IS_CHROMEOS) #if !BUILDFLAG(IS_ANDROID) + if (base::FeatureList::IsEnabled(contextual_tasks::kContextualTasks)) { + contextual_tasks::ContextualTasksNavigationThrottle::MaybeCreateAndAdd( + registry); + } + DevToolsWindow::MaybeCreateAndAddNavigationThrottle(registry); NewTabPageNavigationThrottle::MaybeCreateAndAdd(registry); @@ -457,6 +474,8 @@ void CreateAndAddChromeThrottlesForNavigation( std::make_unique( registry)); } + enterprise_data_protection::ViewSourceNavigationThrottle::MaybeCreateAndAdd( + registry, ui_manager); #endif // BUILDFLAG(SAFE_BROWSING_AVAILABLE) #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) diff --git a/tools/under-control/src/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java b/tools/under-control/src/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java index 9f9e077a..3ff50943 100755 --- a/tools/under-control/src/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java +++ b/tools/under-control/src/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java @@ -10,6 +10,7 @@ import org.chromium.base.MutableBooleanParamWithSafeDefault; import org.chromium.base.MutableFlagWithSafeDefault; import org.chromium.base.MutableIntParamWithSafeDefault; import org.chromium.base.MutableParamWithSafeDefault; +import org.chromium.base.SysUtils; import org.chromium.build.BuildConfig; import org.chromium.build.annotations.NullMarked; import org.chromium.components.cached_flags.BooleanCachedFeatureParam; @@ -153,6 +154,7 @@ public abstract class ChromeFeatureList { } // Feature names. + // LINT.IfChange(FeaturesExposedToJava) // keep-sorted start group_prefixes=["public static final String"] public static final String ACCESSIBILITY_MAGNIFICATION_FOLLOWS_INPUT_FOCUS = "AccessibilityMagnificationFollowsInputFocus"; @@ -162,8 +164,6 @@ public abstract class ChromeFeatureList { "AdaptiveButtonInTopToolbarCustomizationV2"; public static final String ADAPTIVE_BUTTON_IN_TOP_TOOLBAR_PAGE_SUMMARY = "AdaptiveButtonInTopToolbarPageSummary"; - public static final String ALLOW_TAB_CLOSING_UPON_MINIMIZATION = - "AllowTabClosingUponMinimization"; public static final String ANDROID_ANIMATED_PROGRESS_BAR_IN_BROWSER = "AndroidAnimatedProgressBarInBrowser"; public static final String ANDROID_ANIMATED_PROGRESS_BAR_IN_VIZ = @@ -175,13 +175,18 @@ public abstract class ChromeFeatureList { public static final String ANDROID_AUTOFILL_SUPPORT_FOR_HTTP_AUTH = "AndroidAutofillSupportForHttpAuth"; public static final String ANDROID_BOOKMARK_BAR = "AndroidBookmarkBar"; + public static final String ANDROID_BOOKMARK_BAR_FAST_FOLLOW = "AndroidBookmarkBarFastFollow"; public static final String ANDROID_BOTTOM_TOOLBAR = "AndroidBottomToolbar"; public static final String ANDROID_BOTTOM_TOOLBAR_V2 = "AndroidBottomToolbarV2"; public static final String ANDROID_COMPOSEPLATE = "AndroidComposeplate"; + public static final String ANDROID_COMPOSEPLATE_LFF = "AndroidComposeplateLFF"; + public static final String ANDROID_CONTEXT_MENU_DUPLICATE_TABS = + "AndroidContextMenuDuplicateTabs"; public static final String ANDROID_DATA_IMPORTER_SERVICE = "AndroidDataImporterService"; public static final String ANDROID_DESKTOP_DENSITY = "AndroidDesktopDensity"; public static final String ANDROID_ELEGANT_TEXT_HEIGHT = "AndroidElegantTextHeight"; public static final String ANDROID_FIRST_RUN_LAUNCH_BOUNDS = "AndroidFirstRunLaunchBounds"; + public static final String ANDROID_LOGO_VIEW_REFACTOR = "AndroidLogoViewRefactor"; public static final String ANDROID_MINIMAL_UI_LARGE_SCREEN = "AndroidMinimalUiLargeScreen"; public static final String ANDROID_NO_VISIBLE_HINT_FOR_DIFFERENT_TLD = "AndroidNoVisibleHintForDifferentTLD"; @@ -231,8 +236,7 @@ public abstract class ChromeFeatureList { "AndroidWindowPopupPredictFinalBounds"; public static final String ANDROID_WINDOW_POPUP_RESIZE_AFTER_SPAWN = "AndroidWindowPopupResizeAfterSpawn"; - public static final String ANDROID_XR_USES_SURFACE_CONTROL = - "AndroidWindowPopupResizeAfterSpawn"; + public static final String ANDROID_XR_USES_SURFACE_CONTROL = "AndroidXRUsesSurfaceControl"; public static final String ANDROID_ZOOM_INDICATOR = "AndroidZoomIndicator"; public static final String ANIMATED_GIF_REFACTOR = "AnimatedGifRefactor"; public static final String ANIMATED_IMAGE_DRAG_SHADOW = "AnimatedImageDragShadow"; @@ -251,6 +255,7 @@ public abstract class ChromeFeatureList { "AutofillAndroidDesktopSuppressAccessoryOnEmpty"; public static final String AUTOFILL_DEEP_LINK_AUTOFILL_OPTIONS = "AutofillDeepLinkAutofillOptions"; + public static final String AUTOFILL_ENABLE_BUY_NOW_PAY_LATER = "AutofillEnableBuyNowPayLater"; public static final String AUTOFILL_ENABLE_CARD_BENEFITS_FOR_AMERICAN_EXPRESS = "AutofillEnableCardBenefitsForAmericanExpress"; public static final String AUTOFILL_ENABLE_CARD_BENEFITS_FOR_BMO = @@ -260,6 +265,8 @@ public abstract class ChromeFeatureList { "AutofillEnableFlatRateCardBenefitsFromCurinos"; public static final String AUTOFILL_ENABLE_KEYBOARD_ACCESSORY_CHIP_REDESIGN = "AutofillEnableKeyboardAccessoryChipRedesign"; + public static final String AUTOFILL_ENABLE_KEYBOARD_ACCESSORY_CHIP_WIDTH_ADJUSTMENT = + "AutofillEnableKeyboardAccessoryChipWidthAdjustment"; public static final String AUTOFILL_ENABLE_LOCAL_IBAN = "AutofillEnableLocalIban"; public static final String AUTOFILL_ENABLE_LOYALTY_CARDS_FILLING = "AutofillEnableLoyaltyCardsFilling"; @@ -274,8 +281,6 @@ public abstract class ChromeFeatureList { "AutofillEnableSupportForHomeAndWork"; public static final String AUTOFILL_ENABLE_SYNCING_OF_PIX_BANK_ACCOUNTS = "AutofillEnableSyncingOfPixBankAccounts"; - public static final String AUTOFILL_ENABLE_VERVE_CARD_SUPPORT = - "AutofillEnableVerveCardSupport"; public static final String AUTOFILL_RETRY_IMAGE_FETCH_ON_FAILURE = "AutofillRetryImageFetchOnFailure"; public static final String AUTOFILL_SYNC_EWALLET_ACCOUNTS = "AutofillSyncEwalletAccounts"; @@ -284,13 +289,13 @@ public abstract class ChromeFeatureList { public static final String AUTOMOTIVE_BACK_BUTTON_BAR_STREAMLINE = "AutomotiveBackButtonBarStreamline"; public static final String AUTO_PICTURE_IN_PICTURE_ANDROID = "AutoPictureInPictureAndroid"; + public static final String AUTO_REVOKE_SUSPICIOUS_NOTIFICATION = + "AutoRevokeSuspiciousNotification"; public static final String AVOID_RELAYOUT_DURING_FOCUS_ANIMATION = "AvoidRelayoutDuringFocusAnimation"; public static final String BACKGROUND_THREAD_POOL_FIELD_TRIAL = "BackgroundThreadPoolFieldTrial"; public static final String BACK_FORWARD_CACHE = "BackForwardCache"; - public static final String BACK_FORWARD_TRANSITIONS = "BackForwardTransitions"; - public static final String BATCH_TAB_RESTORE = "BatchTabRestore"; public static final String BCIV_BOTTOM_CONTROLS = "AndroidBcivBottomControls"; public static final String BIOMETRIC_AUTH_IDENTITY_CHECK = "BiometricAuthIdentityCheck"; public static final String BLOCK_INTENTS_WHILE_LOCKED = "BlockIntentsWhileLocked"; @@ -299,6 +304,8 @@ public abstract class ChromeFeatureList { public static final String BROWSER_CONTROLS_DEBUGGING = "BrowserControlsDebugging"; public static final String BROWSER_CONTROLS_EARLY_RESIZE = "BrowserControlsEarlyResize"; public static final String BROWSER_CONTROLS_IN_VIZ = "AndroidBrowserControlsInViz"; + public static final String BROWSER_CONTROLS_RENDER_DRIVEN_SHOW_CONSTRAINT = + "BrowserControlsRenderDrivenShowConstraint"; public static final String BROWSING_DATA_MODEL = "BrowsingDataModel"; public static final String CACHE_ACTIVITY_TASKID = "CacheActivityTaskID"; public static final String CACHE_IS_MULTI_INSTANCE_API_31_ENABLED = @@ -318,7 +325,6 @@ public abstract class ChromeFeatureList { public static final String CCT_CONTEXTUAL_MENU_ITEMS = "CCTContextualMenuItems"; public static final String CCT_DESTROY_TAB_WHEN_MODEL_IS_EMPTY = "CCTDestroyTabWhenModelIsEmpty"; - public static final String CCT_EARLY_NAV = "CCTEarlyNav"; public static final String CCT_EXTEND_TRUSTED_CDN_PUBLISHER = "CCTExtendTrustedCdnPublisher"; public static final String CCT_FIX_WARMUP = "CCTFixWarmup"; public static final String CCT_FRE_IN_SAME_TASK = "CCTFreInSameTask"; @@ -335,7 +341,6 @@ public abstract class ChromeFeatureList { "CCTOpenInBrowserButtonIfAllowedByEmbedder"; public static final String CCT_OPEN_IN_BROWSER_BUTTON_IF_ENABLED_BY_EMBEDDER = "CCTOpenInBrowserButtonIfEnabledByEmbedder"; - public static final String CCT_PREDICTIVE_BACK_GESTURE = "CCTPredictiveBackGesture"; public static final String CCT_REALTIME_ENGAGEMENT_EVENTS_IN_BACKGROUND = "CCTRealtimeEngagementEventsInBackground"; public static final String CCT_REPORT_PARALLEL_REQUEST_STATUS = @@ -343,7 +348,6 @@ public abstract class ChromeFeatureList { public static final String CCT_REPORT_PRERENDER_EVENTS = "CCTReportPrerenderEvents"; public static final String CCT_RESET_TIMEOUT_ENABLED = "CCTResetTimeoutEnabled"; public static final String CCT_RESIZABLE_FOR_THIRD_PARTIES = "CCTResizableForThirdParties"; - public static final String CCT_REVAMPED_BRANDING = "CCTRevampedBranding"; public static final String CCT_SHOW_TAB_FIX = "CCTShowTabFix"; public static final String CCT_TAB_MODAL_DIALOG = "CCTTabModalDialog"; public static final String CCT_TOOLBAR_REFACTOR = "CCTToolbarRefactor"; @@ -454,6 +458,7 @@ public abstract class ChromeFeatureList { public static final String HISTORY_PANE_ANDROID = "HistoryPaneAndroid"; public static final String HOMEPAGE_IS_NEW_TAB_PAGE_POLICY_ANDROID = "HomepageIsNewTabPagePolicyAndroid"; + public static final String HOME_MODULE_PREF_REFACTOR = "HomeModulePrefRefactor"; public static final String HTTPS_FIRST_BALANCED_MODE = "HttpsFirstBalancedMode"; public static final String HUB_BACK_BUTTON = "HubBackButton"; public static final String HUB_SLIDE_ANIMATION = "HubSlideAnimation"; @@ -465,9 +470,9 @@ public abstract class ChromeFeatureList { public static final String KEYBOARD_ESC_BACK_NAVIGATION = "KeyboardEscBackNavigation"; public static final String LEGACY_TAB_STATE_DEPRECATION = "LegacyTabStateDeprecation"; public static final String LENS_ON_QUICK_ACTION_SEARCH_WIDGET = "LensOnQuickActionSearchWidget"; - public static final String LINKED_SERVICES_SETTING = "LinkedServicesSetting"; public static final String LOADING_PREDICTOR_LIMIT_PRECONNECT_SOCKET_COUNT = "LoadingPredictorLimitPreconnectSocketCount"; + public static final String LOAD_ALL_TABS_AT_STARTUP = "LoadAllTabsAtStartup"; public static final String LOAD_NATIVE_EARLY = "LoadNativeEarly"; public static final String LOCAL_NETWORK_ACCESS = "LocalNetworkAccessChecks"; public static final String LOCK_BACK_PRESS_HANDLER_AT_START = "LockBackPressHandlerAtStart"; @@ -476,6 +481,7 @@ public abstract class ChromeFeatureList { "LockTopControlsOnLargeTabletsV2"; public static final String LOOKALIKE_NAVIGATION_URL_SUGGESTIONS_UI = "LookalikeUrlNavigationSuggestionsUI"; + public static final String LOW_END_MEMORY_EXPERIMENT = BaseFeatures.LOW_END_MEMORY_EXPERIMENT; public static final String MAGIC_STACK_ANDROID = "MagicStackAndroid"; public static final String MALICIOUS_APK_DOWNLOAD_CHECK = "MaliciousApkDownloadCheck"; public static final String MAYLAUNCHURL_USES_SEPARATE_STORAGE_PARTITION = @@ -489,20 +495,19 @@ public abstract class ChromeFeatureList { public static final String MULTI_INSTANCE_APPLICATION_STATUS_CLEANUP = "MultiInstanceApplicationStatusCleanup"; public static final String MVC_UPDATE_VIEW_WHEN_MODEL_CHANGED = "MvcUpdateViewWhenModelChanged"; - public static final String NATIVE_PAGE_TRANSITION_HARDWARE_CAPTURE = - "NativePageTransitionHardwareCapture"; public static final String NAV_BAR_COLOR_ANIMATION = "NavBarColorAnimation"; public static final String NEW_TAB_PAGE_CUSTOMIZATION = "NewTabPageCustomization"; public static final String NEW_TAB_PAGE_CUSTOMIZATION_FOR_MVT = "NewTabPageCustomizationForMvt"; public static final String NEW_TAB_PAGE_CUSTOMIZATION_TOOLBAR_BUTTON = "NewTabPageCustomizationToolbarButton"; public static final String NEW_TAB_PAGE_CUSTOMIZATION_V2 = "NewTabPageCustomizationV2"; - public static final String NOTIFICATION_ONE_TAP_UNSUBSCRIBE = "NotificationOneTapUnsubscribe"; public static final String NOTIFICATION_PERMISSION_BOTTOM_SHEET = "NotificationPermissionBottomSheet"; public static final String NOTIFICATION_PERMISSION_VARIANT = "NotificationPermissionVariant"; public static final String NOTIFICATION_TRAMPOLINE = "NotificationTrampoline"; public static final String OMAHA_MIN_SDK_VERSION_ANDROID = "OmahaMinSdkVersionAndroid"; + public static final String OMNIBOX_AUTOFOCUS_ON_INCOGNITO_NTP = + "OmniboxAutofocusOnIncognitoNtp"; public static final String OMNIBOX_CACHE_SUGGESTION_RESOURCES = "OmniboxCacheSuggestionResources"; public static final String OPTIMIZATION_GUIDE_PUSH_NOTIFICATIONS = @@ -588,7 +593,6 @@ public abstract class ChromeFeatureList { public static final String SAFETY_HUB_ANDROID_SURVEY_V2 = "SafetyHubAndroidSurveyV2"; public static final String SAFETY_HUB_DISRUPTIVE_NOTIFICATION_REVOCATION = "SafetyHubDisruptiveNotificationRevocation"; - public static final String SAFETY_HUB_FOLLOWUP = "SafetyHubFollowup"; public static final String SAFETY_HUB_LOCAL_PASSWORDS_MODULE = "SafetyHubLocalPasswordsModule"; public static final String SAFETY_HUB_MAGIC_STACK = "SafetyHubMagicStack"; public static final String SAFETY_HUB_UNIFIED_PASSWORDS_MODULE = @@ -635,19 +639,20 @@ public abstract class ChromeFeatureList { "SplitCacheByNetworkIsolationKey"; public static final String START_SURFACE_RETURN_TIME = "StartSurfaceReturnTime"; public static final String STOP_APP_INDEXING_REPORT = "StopAppIndexingReport"; + public static final String SUBMENUS_IN_APP_MENU = "SubmenusInAppMenu"; public static final String SUBMENUS_TAB_CONTEXT_MENU_LFF_TAB_STRIP = "SubmenusTabContextMenuLffTabStrip"; public static final String SUGGESTION_ANSWERS_COLOR_REVERSE = "SuggestionAnswersColorReverse"; public static final String SUPPRESS_TOOLBAR_CAPTURES_AT_GESTURE_END = "SuppressToolbarCapturesAtGestureEnd"; + public static final String SYNC_ENABLE_NEW_SYNC_DASHBOARD_URL = "SyncEnableNewSyncDashboardUrl"; public static final String SYNC_ENABLE_PASSWORDS_SYNC_ERROR_MESSAGE_ALTERNATIVE = "SyncEnablePasswordsSyncErrorMessageAlternative"; public static final String TABLET_TAB_STRIP_ANIMATION = "TabletTabStripAnimation"; public static final String TAB_ARCHIVAL_DRAG_DROP_ANDROID = "TabArchivalDragDropAndroid"; public static final String TAB_CLOSURE_METHOD_REFACTOR = "TabClosureMethodRefactor"; public static final String TAB_COLLECTION_ANDROID = "TabCollectionAndroid"; - public static final String TAB_FREEZE_ON_UNDOABLE_CLOSURE_KILL_SWITCH = - "TabFreezeOnUndoableClosureKillSwitch"; + public static final String TAB_FREEZING_USES_DISCARD = "TabFreezingUsesDiscard"; public static final String TAB_GROUP_ANDROID_VISUAL_DATA_CLEANUP = "TabGroupAndroidVisualDataCleanup"; public static final String TAB_GROUP_ENTRY_POINTS_ANDROID = "TabGroupEntryPointsAndroid"; @@ -662,11 +667,7 @@ public abstract class ChromeFeatureList { public static final String TAB_STRIP_INCOGNITO_MIGRATION = "TabStripIncognitoMigration"; public static final String TAB_STRIP_LAYOUT_OPTIMIZATION = "TabStripLayoutOptimization"; public static final String TAB_STRIP_MOUSE_CLOSE_RESIZE_DELAY = "TabStripMouseCloseResizeDelay"; - public static final String TAB_STRIP_TRANSITION_IN_DESKTOP_WINDOW = - "TabStripTransitionInDesktopWindow"; public static final String TAB_SWITCHER_DRAG_DROP_ANDROID = "TabSwitcherDragDropAndroid"; - public static final String TAB_SWITCHER_FOREIGN_FAVICON_SUPPORT = - "TabSwitcherForeignFaviconSupport"; public static final String TAB_SWITCHER_GROUP_SUGGESTIONS_ANDROID = "TabSwitcherGroupSuggestionsAndroid"; public static final String TAB_SWITCHER_GROUP_SUGGESTIONS_TEST_MODE_ANDROID = @@ -685,15 +686,13 @@ public abstract class ChromeFeatureList { public static final String TOOLBAR_STALE_CAPTURE_BUG_FIX = "ToolbarStaleCaptureBugFix"; public static final String TOOLBAR_TABLET_RESIZE_REFACTOR = "ToolbarTabletResizeRefactor"; public static final String TOP_CONTROLS_REFACTOR = "TopControlsRefactor"; + public static final String TOP_CONTROLS_REFACTOR_V2 = "TopControlsRefactorV2"; public static final String TOUCH_TO_SEARCH_CALLOUT = "TouchToSearchCallout"; - public static final String TRACE_BINDER_IPC = "TraceBinderIpc"; public static final String TRACKING_PROTECTION_3PCD = "TrackingProtection3pcd"; - public static final String TRACKING_PROTECTION_USER_BYPASS_PWA = - "TrackingProtectionUserBypassPwa"; - public static final String TRACKING_PROTECTION_USER_BYPASS_PWA_TRIGGER = - "TrackingProtectionUserBypassPwaTrigger"; public static final String TRANSLATE_MESSAGE_UI = "TranslateMessageUI"; public static final String TRANSLATE_TFLITE = "TFLiteLanguageDetectionEnabled"; + public static final String TRUSTED_WEB_ACTIVITY_CONTACTS_DELEGATION = + "TrustedWebActivityContactsDelegation"; public static final String UMA_SESSION_CORRECTNESS_FIXES = "UmaSessionCorrectnessFixes"; public static final String UNO_PHASE_2_FOLLOW_UP = "UnoPhase2FollowUp"; public static final String UPDATE_COMPOSTIROR_FOR_SURFACE_CONTROL = @@ -707,6 +706,7 @@ public abstract class ChromeFeatureList { "UseInitialNetworkStateAtStartup"; public static final String USE_LIBUNWINDSTACK_NATIVE_UNWINDER_ANDROID = "UseLibunwindstackNativeUnwinderAndroid"; + public static final String VERIFY_QWACS = "VerifyQWACs"; public static final String VISITED_URL_RANKING_SERVICE = "VisitedURLRankingService"; public static final String WEB_APK_BACKUP_AND_RESTORE_BACKEND = "WebApkBackupAndRestoreBackend"; public static final String WEB_APK_INSTALL_FAILURE_NOTIFICATION = @@ -718,15 +718,12 @@ public abstract class ChromeFeatureList { public static final String WEB_OTP_CROSS_DEVICE_SIMPLE_STRING = "WebOtpCrossDeviceSimpleString"; public static final String XSURFACE_METRICS_REPORTING = "XsurfaceMetricsReporting"; // keep-sorted end + // LINT.ThenChange(//chrome/browser/flags/android/chrome_feature_list.cc:FeaturesExposedToJava) // keep-sorted start group_prefixes=["public static final CachedFlag"] + public static final CachedFlag sAccountForSuppressedKeyboardInsets = newCachedFlag(ACCOUNT_FOR_SUPPRESSED_KEYBOARD_INSETS, /* defaultValue= */ true); - public static final CachedFlag sAllowTabClosingUponMinimization = - newCachedFlag( - ALLOW_TAB_CLOSING_UPON_MINIMIZATION, - /* defaultValue= */ false, - /* defaultValueInTests= */ true); public static final CachedFlag sAndroidAnimatedProgressBarInBrowser = newCachedFlag(ANDROID_ANIMATED_PROGRESS_BAR_IN_BROWSER, true); public static final CachedFlag sAndroidAnimatedProgressBarInViz = @@ -739,14 +736,20 @@ public abstract class ChromeFeatureList { newCachedFlag(ANDROID_BOTTOM_TOOLBAR, true, true); public static final CachedFlag sAndroidBottomToolbarV2 = newCachedFlag(ANDROID_BOTTOM_TOOLBAR_V2, false, true); - public static final CachedFlag sAndroidComposeplate = - newCachedFlag(ANDROID_COMPOSEPLATE, false, true); + public static final CachedFlag sAndroidComposeplate = newCachedFlag(ANDROID_COMPOSEPLATE, true); + public static final CachedFlag sAndroidComposeplateLFF = + newCachedFlag( + ANDROID_COMPOSEPLATE_LFF, + /* defaultValue= */ false, + /* defaultValueInTests= */ true); public static final CachedFlag sAndroidDataImporterService = newCachedFlag(ANDROID_DATA_IMPORTER_SERVICE, true); public static final CachedFlag sAndroidDesktopDensity = newCachedFlag(ANDROID_DESKTOP_DENSITY, false); public static final CachedFlag sAndroidElegantTextHeight = newCachedFlag(ANDROID_ELEGANT_TEXT_HEIGHT, true); + public static final CachedFlag sAndroidLogoViewRefactor = + newCachedFlag(ANDROID_LOGO_VIEW_REFACTOR, /* defaultValue= */ true); public static final CachedFlag sAndroidMinimalUiLargeScreen = newCachedFlag(ANDROID_MINIMAL_UI_LARGE_SCREEN, true); public static final CachedFlag sAndroidOpenIncognitoAsWindow = @@ -766,19 +769,14 @@ public abstract class ChromeFeatureList { public static final CachedFlag sAndroidTabDeclutterDedupeTabIdsKillSwitch = newCachedFlag(ANDROID_TAB_DECLUTTER_DEDUPE_TAB_IDS_KILL_SWITCH, true); public static final CachedFlag sAndroidTabGroupsColorUpdateGm3 = - newCachedFlag( - ANDROID_TAB_GROUPS_COLOR_UPDATE_GM3, false, /* defaultValueInTests= */ true); + newCachedFlag(ANDROID_TAB_GROUPS_COLOR_UPDATE_GM3, true); public static final CachedFlag sAndroidTabSkipSaveTabsKillswitch = newCachedFlag(ANDROID_TAB_SKIP_SAVE_TABS_TASK_KILLSWITCH, true, true); - public static final CachedFlag sAndroidThemeModule = - newCachedFlag(ANDROID_THEME_MODULE, false, /* defaultValueInTests= */ true); + public static final CachedFlag sAndroidThemeModule = newCachedFlag(ANDROID_THEME_MODULE, true); public static final CachedFlag sAndroidThemeResourceProvider = newCachedFlag(ANDROID_THEME_RESOURCE_PROVIDER, false, /* defaultValueInTests= */ false); public static final CachedFlag sAndroidUseAdminsForEnterpriseInfo = - newCachedFlag( - ANDROID_USE_ADMINS_FOR_ENTERPRISE_INFO, - /* defaultValue= */ false, - /* defaultValueInTests= */ true); + newCachedFlag(ANDROID_USE_ADMINS_FOR_ENTERPRISE_INFO, true); public static final CachedFlag sAndroidWebAppLaunchHandler = newCachedFlag(ANDROID_WEB_APP_LAUNCH_HANDLER, false, true); public static final CachedFlag sAndroidWebAppMenuButton = @@ -804,16 +802,12 @@ public abstract class ChromeFeatureList { public static final CachedFlag sAsyncNotificationManagerForDownload = newCachedFlag(ASYNC_NOTIFICATION_MANAGER_FOR_DOWNLOAD, true); public static final CachedFlag sAutomotiveBackButtonBarStreamline = - newCachedFlag( - AUTOMOTIVE_BACK_BUTTON_BAR_STREAMLINE, - /* defaultValue= */ false, - /* defaultValueInTests= */ true); + newCachedFlag(AUTOMOTIVE_BACK_BUTTON_BAR_STREAMLINE, /* defaultValue= */ true); public static final CachedFlag sBackgroundThreadPoolFieldTrial = newCachedFlag( BACKGROUND_THREAD_POOL_FIELD_TRIAL, /* defaultValue= */ false, /* defaultValueInTests= */ true); - public static final CachedFlag sBatchTabRestore = newCachedFlag(BATCH_TAB_RESTORE, true); public static final CachedFlag sBlockIntentsWhileLocked = newCachedFlag(BLOCK_INTENTS_WHILE_LOCKED, false); public static final CachedFlag sBookmarkPaneAndroid = @@ -862,24 +856,19 @@ public abstract class ChromeFeatureList { newCachedFlag(CCT_OPEN_IN_BROWSER_BUTTON_IF_ALLOWED_BY_EMBEDDER, false); public static final CachedFlag sCctOpenInBrowserButtonIfEnabledByEmbedder = newCachedFlag(CCT_OPEN_IN_BROWSER_BUTTON_IF_ENABLED_BY_EMBEDDER, true); - public static final CachedFlag sCctPredictiveBackGesture = - newCachedFlag( - CCT_PREDICTIVE_BACK_GESTURE, - /* defaultValue= */ false, - /* defaultValueInTests= */ true); public static final CachedFlag sCctRealtimeEngagementEventsInBackground = newCachedFlag(CCT_REALTIME_ENGAGEMENT_EVENTS_IN_BACKGROUND, true); public static final CachedFlag sCctResetTimeoutEnabled = newCachedFlag(CCT_RESET_TIMEOUT_ENABLED, false); public static final CachedFlag sCctResizableForThirdParties = newCachedFlag(CCT_RESIZABLE_FOR_THIRD_PARTIES, true); - public static final CachedFlag sCctRevampedBranding = - newCachedFlag(CCT_REVAMPED_BRANDING, true); public static final CachedFlag sCctTabModalDialog = newCachedFlag(CCT_TAB_MODAL_DIALOG, true); public static final CachedFlag sCctToolbarRefactor = newCachedFlag(CCT_TOOLBAR_REFACTOR, false, true); public static final CachedFlag sChromeItemPickerUi = newCachedFlag(CHROME_ITEM_PICKER_UI, /* defaultValue= */ false); + public static final CachedFlag sChromeNativeUrlOverriding = + newCachedFlag(CHROME_NATIVE_URL_OVERRIDING, /* defaultValue= */ false); public static final CachedFlag sClampAutomotiveScaling = newCachedFlag(CLAMP_AUTOMOTIVE_SCALING, true); public static final CachedFlag sClankStartupLatencyInjection = @@ -893,9 +882,7 @@ public abstract class ChromeFeatureList { newCachedFlag(COMMAND_LINE_ON_NON_ROOTED, false); public static final CachedFlag sContextMenuPictureInPictureAndroid = newCachedFlag(CONTEXT_MENU_PICTURE_IN_PICTURE_ANDROID, false); - public static final CachedFlag sCpaSpecUpdate = - newCachedFlag( - CPA_SPEC_UPDATE, /* defaultValue= */ false, /* defaultValueInTests= */ true); + public static final CachedFlag sCpaSpecUpdate = newCachedFlag(CPA_SPEC_UPDATE, true); public static final CachedFlag sCpaTabGroupingButton = newCachedFlag( CONTEXTUAL_PAGE_ACTION_TAB_GROUPING, @@ -915,9 +902,7 @@ public abstract class ChromeFeatureList { public static final CachedFlag sEdgeToEdgeBottomChin = newCachedFlag(EDGE_TO_EDGE_BOTTOM_CHIN, /* defaultValue= */ true); public static final CachedFlag sEdgeToEdgeEverywhere = - newCachedFlag( - EDGE_TO_EDGE_EVERYWHERE, - /* defaultValue= */ true); + newCachedFlag(EDGE_TO_EDGE_EVERYWHERE, /* defaultValue= */ true); public static final CachedFlag sEdgeToEdgeMonitorConfigurations = newCachedFlag(EDGE_TO_EDGE_MONITOR_CONFIGURATIONS, /* defaultValue= */ true); public static final CachedFlag sEdgeToEdgeTablet = @@ -929,9 +914,9 @@ public abstract class ChromeFeatureList { public static final CachedFlag sEducationalTipModule = newCachedFlag(EDUCATIONAL_TIP_MODULE, true); public static final CachedFlag sEnableExclusiveAccessManager = - newCachedFlag(ENABLE_EXCLUSIVE_ACCESS_MANAGER, false); + newCachedFlag(ENABLE_EXCLUSIVE_ACCESS_MANAGER, false, false); public static final CachedFlag sEnableFullscreenToAnyScreenAndroid = - newCachedFlag(ENABLE_FULLSCREEN_TO_ANY_SCREEN_ANDROID, false); + newCachedFlag(ENABLE_FULLSCREEN_TO_ANY_SCREEN_ANDROID, false, true); public static final CachedFlag sEnableXAxisActivityTransition = newCachedFlag(ENABLE_X_AXIS_ACTIVITY_TRANSITION, false); public static final CachedFlag sFloatingSnackbar = newCachedFlag(FLOATING_SNACKBAR, true); @@ -947,7 +932,7 @@ public abstract class ChromeFeatureList { /* defaultValue= */ false, /* defaultValueInTests= */ false); public static final CachedFlag sGridTabSwitcherUpdate = - newCachedFlag(GRID_TAB_SWITCHER_UPDATE, false, /* defaultValueInTests= */ true); + newCachedFlag(GRID_TAB_SWITCHER_UPDATE, true); public static final CachedFlag sHistoryPaneAndroid = newCachedFlag( HISTORY_PANE_ANDROID, @@ -964,14 +949,18 @@ public abstract class ChromeFeatureList { LEGACY_TAB_STATE_DEPRECATION, /* defaultValue= */ true, /* defaultValueInTests= */ true); + public static final CachedFlag sLoadAllTabsAtStartup = + newCachedFlag( + LOAD_ALL_TABS_AT_STARTUP, + /* defaultValue= */ false, + /* defaultValueInTests= */ false); public static final CachedFlag sLoadNativeEarly = newCachedFlag( LOAD_NATIVE_EARLY, /* defaultValue= */ false, /* defaultValueInTests= */ true); public static final CachedFlag sLockBackPressHandlerAtStart = newCachedFlag(LOCK_BACK_PRESS_HANDLER_AT_START, true); - // TODO(https://crbug.com/438970923): Remove the use of BuildConfig by 2025 EoY. public static final CachedFlag sLockTopControlsOnLargeTabletsV2 = - newCachedFlag(LOCK_TOP_CONTROLS_ON_LARGE_TABLETS_V2, BuildConfig.IS_DESKTOP_ANDROID); + newCachedFlag(LOCK_TOP_CONTROLS_ON_LARGE_TABLETS_V2, false); public static final CachedFlag sMagicStackAndroid = newCachedFlag(MAGIC_STACK_ANDROID, true); public static final CachedFlag sMaliciousApkDownloadCheck = newCachedFlag( @@ -980,7 +969,7 @@ public abstract class ChromeFeatureList { /* defaultValueInTests= */ true); public static final CachedFlag sMiniOriginBar = newCachedFlag(MINI_ORIGIN_BAR, true, true); public static final CachedFlag sMitigateLegacySearchEnginePromoOverlap = - newCachedFlag(MITIGATE_LEGACY_SEARCH_ENGINE_PROMO_OVERLAP, false, true); + newCachedFlag(MITIGATE_LEGACY_SEARCH_ENGINE_PROMO_OVERLAP, true, true); public static final CachedFlag sMostVisitedTilesCustomization = newCachedFlag( MOST_VISITED_TILES_CUSTOMIZATION, @@ -993,7 +982,7 @@ public abstract class ChromeFeatureList { public static final CachedFlag sMvcUpdateViewWhenModelChanged = newCachedFlag( MVC_UPDATE_VIEW_WHEN_MODEL_CHANGED, - /* defaultValue= */ false, + /* defaultValue= */ true, /* defaultValueInTests= */ true); public static final CachedFlag sNavBarColorAnimation = newCachedFlag(NAV_BAR_COLOR_ANIMATION, /* defaultValue= */ true); @@ -1055,9 +1044,18 @@ public abstract class ChromeFeatureList { newCachedFlag(START_SURFACE_RETURN_TIME, true); public static final CachedFlag sTabClosureMethodRefactor = newCachedFlag(TAB_CLOSURE_METHOD_REFACTOR, false); + public static final CachedFlag sTabCollectionAndroid = + newCachedFlag(TAB_COLLECTION_ANDROID, true); + public static final CachedFlag sTabGroupAndroidVisualDataCleanup = + newCachedFlag(TAB_GROUP_ANDROID_VISUAL_DATA_CLEANUP, true); public static final CachedFlag sTabModelInitFixes = newCachedFlag( TAB_MODEL_INIT_FIXES, + /* defaultValue= */ true, + /* defaultValueInTests= */ true); + public static final CachedFlag sTabStorageSqlitePrototype = + newCachedFlag( + TAB_STORAGE_SQLITE_PROTOTYPE, /* defaultValue= */ false, /* defaultValueInTests= */ true); public static final CachedFlag sTabStripDensityChangeAndroid = @@ -1067,10 +1065,7 @@ public abstract class ChromeFeatureList { public static final CachedFlag sTabWindowManagerReportIndicesMismatch = newCachedFlag(TAB_WINDOW_MANAGER_REPORT_INDICES_MISMATCH, true); public static final CachedFlag sTabletTabStripAnimation = - newCachedFlag( - TABLET_TAB_STRIP_ANIMATION, - /* defaultValue= */ false, - /* defaultValueInTests= */ true); + newCachedFlag(TABLET_TAB_STRIP_ANIMATION, true); public static final CachedFlag sTestDefaultDisabled = newCachedFlag(TEST_DEFAULT_DISABLED, false); public static final CachedFlag sTestDefaultEnabled = newCachedFlag(TEST_DEFAULT_ENABLED, true); @@ -1084,6 +1079,11 @@ public abstract class ChromeFeatureList { TOOLBAR_SNAPSHOT_REFACTOR, /* defaultValue= */ false, /* defaultValueInTests= */ true); + public static final CachedFlag sToolbarStaleCaptureBugFix = + newCachedFlag( + TOOLBAR_STALE_CAPTURE_BUG_FIX, + /* defaultValue= */ false, + /* defaultValueInTests= */ true); public static final CachedFlag sToolbarTabletResizeRefactor = newCachedFlag(TOOLBAR_TABLET_RESIZE_REFACTOR, /* defaultValue= */ false); public static final CachedFlag sTopControlsRefactor = @@ -1091,14 +1091,13 @@ public abstract class ChromeFeatureList { TOP_CONTROLS_REFACTOR, /* defaultValue= */ false, /* defaultValueInTests= */ true); + public static final CachedFlag sTopControlsRefactorV2 = + newCachedFlag(TOP_CONTROLS_REFACTOR_V2, /* defaultValue= */ false); public static final CachedFlag sTouchToSearchCallout = newCachedFlag( TOUCH_TO_SEARCH_CALLOUT, /* defaultValue= */ false, /* defaultValueInTests= */ true); - public static final CachedFlag sTraceBinderIpc = - newCachedFlag( - TRACE_BINDER_IPC, /* defaultValue= */ false, /* defaultValueInTests= */ true); public static final CachedFlag sUseActivityManagerForTabActivation = newCachedFlag(USE_ACTIVITY_MANAGER_FOR_TAB_ACTIVATION, true); public static final CachedFlag sUseChimeAndroidSdk = @@ -1115,7 +1114,6 @@ public abstract class ChromeFeatureList { List.of( // keep-sorted start sAccountForSuppressedKeyboardInsets, - sAllowTabClosingUponMinimization, sAndroidAnimatedProgressBarInBrowser, sAndroidAnimatedProgressBarInViz, sAndroidAppIntegrationModule, @@ -1123,9 +1121,11 @@ public abstract class ChromeFeatureList { sAndroidBottomToolbar, sAndroidBottomToolbarV2, sAndroidComposeplate, + sAndroidComposeplateLFF, sAndroidDataImporterService, sAndroidDesktopDensity, sAndroidElegantTextHeight, + sAndroidLogoViewRefactor, sAndroidMinimalUiLargeScreen, sAndroidOpenIncognitoAsWindow, sAndroidProgressBarVisualUpdate, @@ -1149,7 +1149,6 @@ public abstract class ChromeFeatureList { sAsyncNotificationManager, sAutomotiveBackButtonBarStreamline, sBackgroundThreadPoolFieldTrial, - sBatchTabRestore, sBlockIntentsWhileLocked, sBookmarkPaneAndroid, sBrowserControlsDebugging, @@ -1171,14 +1170,13 @@ public abstract class ChromeFeatureList { sCctNestedSecurityIcon, sCctOpenInBrowserButtonIfAllowedByEmbedder, sCctOpenInBrowserButtonIfEnabledByEmbedder, - sCctPredictiveBackGesture, sCctRealtimeEngagementEventsInBackground, sCctResetTimeoutEnabled, sCctResizableForThirdParties, - sCctRevampedBranding, sCctTabModalDialog, sCctToolbarRefactor, sChromeItemPickerUi, + sChromeNativeUrlOverriding, sClampAutomotiveScaling, sClankStartupLatencyInjection, sCleanupLegacyTabState, @@ -1211,6 +1209,7 @@ public abstract class ChromeFeatureList { sIncognitoThemeOverlayTesting, sKeyboardEscBackNavigation, sLegacyTabStateDeprecation, + sLoadAllTabsAtStartup, sLoadNativeEarly, sLockBackPressHandlerAtStart, sLockTopControlsOnLargeTabletsV2, @@ -1249,17 +1248,21 @@ public abstract class ChromeFeatureList { sSmallerTabStripTitleLimit, sStartSurfaceReturnTime, sTabClosureMethodRefactor, + sTabCollectionAndroid, + sTabGroupAndroidVisualDataCleanup, sTabModelInitFixes, + sTabStorageSqlitePrototype, sTabStripDensityChangeAndroid, sTabStripIncognitoMigration, sTabWindowManagerReportIndicesMismatch, sTabletTabStripAnimation, sToolbarPhoneAnimationRefactor, sToolbarSnapshotRefactor, + sToolbarStaleCaptureBugFix, sToolbarTabletResizeRefactor, sTopControlsRefactor, + sTopControlsRefactorV2, sTouchToSearchCallout, - sTraceBinderIpc, sUseActivityManagerForTabActivation, sUseChimeAndroidSdk, sUseInitialNetworkStateAtStartup, @@ -1289,6 +1292,10 @@ public abstract class ChromeFeatureList { newMutableFlagWithSafeDefault(ANDROID_APPEARANCE_SETTINGS, false); public static final MutableFlagWithSafeDefault sAndroidBookmarkBar = newMutableFlagWithSafeDefault(ANDROID_BOOKMARK_BAR, false); + public static final MutableFlagWithSafeDefault sAndroidBookmarkBarFastFollow = + newMutableFlagWithSafeDefault(ANDROID_BOOKMARK_BAR_FAST_FOLLOW, false); + public static final MutableFlagWithSafeDefault sAndroidContextMenuDuplicateTabs = + newMutableFlagWithSafeDefault(ANDROID_CONTEXT_MENU_DUPLICATE_TABS, false); public static final MutableFlagWithSafeDefault sAndroidPinnedTabs = newMutableFlagWithSafeDefault(ANDROID_PINNED_TABS, false); public static final MutableFlagWithSafeDefault sAndroidPinnedTabsTabletTabStrip = @@ -1321,8 +1328,9 @@ public abstract class ChromeFeatureList { newMutableFlagWithSafeDefault(BROWSER_CONTROLS_EARLY_RESIZE, false); public static final MutableFlagWithSafeDefault sBrowserControlsInViz = newMutableFlagWithSafeDefault(BROWSER_CONTROLS_IN_VIZ, true); - public static final MutableFlagWithSafeDefault sChromeNativeUrlOverriding = - newMutableFlagWithSafeDefault(CHROME_NATIVE_URL_OVERRIDING, false); + // Default to false. The logic behind the flag is not relevant when native is not initialized. + public static final MutableFlagWithSafeDefault sBrowserControlsRenderDrivenShowConstraint = + newMutableFlagWithSafeDefault(BROWSER_CONTROLS_RENDER_DRIVEN_SHOW_CONSTRAINT, false); public static final MutableFlagWithSafeDefault sClearBrowsingDataAndroidSurvey = newMutableFlagWithSafeDefault(CLEAR_BROWSING_DATA_ANDROID_SURVEY, false); public static final MutableFlagWithSafeDefault sControlsVisibilityFromNavigations = @@ -1347,6 +1355,8 @@ public abstract class ChromeFeatureList { newMutableFlagWithSafeDefault(MEDIA_INDICATORS_ANDROID, false); public static final MutableFlagWithSafeDefault sNoVisibleHintForDifferentTLD = newMutableFlagWithSafeDefault(ANDROID_NO_VISIBLE_HINT_FOR_DIFFERENT_TLD, true); + public static final MutableFlagWithSafeDefault sOmniboxAutofocusOnIncognitoNtp = + newMutableFlagWithSafeDefault(OMNIBOX_AUTOFOCUS_ON_INCOGNITO_NTP, false); public static final MutableFlagWithSafeDefault sQuickDeleteAndroidSurvey = newMutableFlagWithSafeDefault(QUICK_DELETE_ANDROID_SURVEY, false); public static final MutableFlagWithSafeDefault sReadAloudTapToSeek = @@ -1359,8 +1369,6 @@ public abstract class ChromeFeatureList { newMutableFlagWithSafeDefault(SAFETY_HUB_ANDROID_SURVEY, false); public static final MutableFlagWithSafeDefault sSafetyHubAndroidSurveyV2 = newMutableFlagWithSafeDefault(SAFETY_HUB_ANDROID_SURVEY_V2, false); - public static final MutableFlagWithSafeDefault sSafetyHubFollowup = - newMutableFlagWithSafeDefault(SAFETY_HUB_FOLLOWUP, true); public static final MutableFlagWithSafeDefault sShowNewTabAnimations = newMutableFlagWithSafeDefault(SHOW_NEW_TAB_ANIMATIONS, false); public static final MutableFlagWithSafeDefault sShowTabListAnimations = @@ -1369,23 +1377,14 @@ public abstract class ChromeFeatureList { newMutableFlagWithSafeDefault(SUPPRESS_TOOLBAR_CAPTURES_AT_GESTURE_END, false); public static final MutableFlagWithSafeDefault sTabArchivalDragDropAndroid = newMutableFlagWithSafeDefault(TAB_ARCHIVAL_DRAG_DROP_ANDROID, true); - public static final MutableFlagWithSafeDefault sTabCollectionAndroid = - newMutableFlagWithSafeDefault(TAB_COLLECTION_ANDROID, false); - // Default value will only ever be reached in tests. - public static final MutableFlagWithSafeDefault sTabFreezeOnUndoableClosureKillSwitch = - newMutableFlagWithSafeDefault(TAB_FREEZE_ON_UNDOABLE_CLOSURE_KILL_SWITCH, true); - public static final MutableFlagWithSafeDefault sTabGroupAndroidVisualDataCleanup = - newMutableFlagWithSafeDefault(TAB_GROUP_ANDROID_VISUAL_DATA_CLEANUP, false); + public static final MutableFlagWithSafeDefault sTabFreezingUsesDiscard = + newMutableFlagWithSafeDefault(TAB_FREEZING_USES_DISCARD, false); public static final MutableFlagWithSafeDefault sTabGroupEntryPointsAndroid = newMutableFlagWithSafeDefault(TAB_GROUP_ENTRY_POINTS_ANDROID, true); public static final MutableFlagWithSafeDefault sTabGroupParityBottomSheetAndroid = newMutableFlagWithSafeDefault(TAB_GROUP_PARITY_BOTTOM_SHEET_ANDROID, true); - public static final MutableFlagWithSafeDefault sTabStorageSqlitePrototype = - newMutableFlagWithSafeDefault(TAB_STORAGE_SQLITE_PROTOTYPE, false); public static final MutableFlagWithSafeDefault sTabStripLayoutOptimization = newMutableFlagWithSafeDefault(TAB_STRIP_LAYOUT_OPTIMIZATION, true); - public static final MutableFlagWithSafeDefault sTabSwitcherForeignFaviconSupport = - newMutableFlagWithSafeDefault(TAB_SWITCHER_FOREIGN_FAVICON_SUPPORT, true); public static final MutableFlagWithSafeDefault sTabSwitcherGroupSuggestionsAndroid = newMutableFlagWithSafeDefault(TAB_SWITCHER_GROUP_SUGGESTIONS_ANDROID, false); public static final MutableFlagWithSafeDefault sTabSwitcherGroupSuggestionsTestModeAndroid = @@ -1408,6 +1407,11 @@ public abstract class ChromeFeatureList { newBooleanCachedFeatureParam(CCT_ADAPTIVE_BUTTON, "contextual_only", false); public static final IntCachedFeatureParam sCctAdaptiveButtonDefaultVariant = newIntCachedFeatureParam(CCT_ADAPTIVE_BUTTON, "default_variant", 0); + public static final IntCachedFeatureParam sLowMemoryDeviceThresholdMb = + newIntCachedFeatureParam( + LOW_END_MEMORY_EXPERIMENT, + "LowMemoryDeviceThresholdMB", + SysUtils.LOW_MEMORY_DEVICE_THRESHOLD_MB); public static final BooleanCachedFeatureParam sAndroidAppIntegrationModuleForceCardShow = newBooleanCachedFeatureParam(ANDROID_APP_INTEGRATION_MODULE, "force_card_shown", false); @@ -1437,7 +1441,7 @@ public abstract class ChromeFeatureList { newBooleanCachedFeatureParam(ANDROID_COMPOSEPLATE, "hide_incognito_button", false); public static final BooleanCachedFeatureParam sAndroidComposeplateV2Enabled = - newBooleanCachedFeatureParam(ANDROID_COMPOSEPLATE, "v2_enabled", false); + newBooleanCachedFeatureParam(ANDROID_COMPOSEPLATE, "v2_enabled", true); public static final BooleanCachedFeatureParam sAndroidBottomToolbarDefaultToTop = newBooleanCachedFeatureParam(ANDROID_BOTTOM_TOOLBAR, "default_to_top", true); @@ -1453,9 +1457,6 @@ public abstract class ChromeFeatureList { public static final IntCachedFeatureParam sBackgroundThreadPoolFieldTrialConfig = newIntCachedFeatureParam(BACKGROUND_THREAD_POOL_FIELD_TRIAL, "config", 4); - public static final IntCachedFeatureParam sBatchTabRestoreBatchSize = - newIntCachedFeatureParam(BATCH_TAB_RESTORE, "batch_tab_restore_batch_size", 5); - public static final IntCachedFeatureParam sCctAuthTabEnableHttpsRedirectsVerificationTimeoutMs = newIntCachedFeatureParam( CCT_AUTH_TAB_ENABLE_HTTPS_REDIRECTS, "verification_timeout_ms", 10_000); @@ -1491,6 +1492,10 @@ public abstract class ChromeFeatureList { "manufacturer_exclude_list", "xiaomi"); + public static final StringCachedFeatureParam sDesktopUAAllowedOnExternalDisplayForOem = + newStringCachedFeatureParam( + DESKTOP_UA_ON_CONNECTED_DISPLAY, "ext_display_desktop_ua_oem_allowlist", ""); + /** * A cached parameter used for specifying the height of the Google Bottom Bar in DP, when its * variant is NO_VARIANT. @@ -1626,13 +1631,9 @@ public abstract class ChromeFeatureList { newStringCachedFeatureParam( EDGE_TO_EDGE_USE_BACKUP_NAVBAR_INSETS, "e2e_backup_navbar_insets_oem_list", ""); - public static final BooleanCachedFeatureParam sEdgeToEdgeUseBackupNavbarInsetsUseTappable = - newBooleanCachedFeatureParam( - EDGE_TO_EDGE_USE_BACKUP_NAVBAR_INSETS, "use_tappable_element", true); - public static final BooleanCachedFeatureParam sEdgeToEdgeUseBackupNavbarInsetsUseGestures = newBooleanCachedFeatureParam( - EDGE_TO_EDGE_USE_BACKUP_NAVBAR_INSETS, "use_gesture_insets", true); + EDGE_TO_EDGE_USE_BACKUP_NAVBAR_INSETS, "use_gesture_insets", false); public static final IntCachedFeatureParam sEdgeToEdgeTabletInvisibleBottomChinMinWidth = newIntCachedFeatureParam( @@ -1641,9 +1642,6 @@ public abstract class ChromeFeatureList { public static final IntCachedFeatureParam sEdgeToEdgeTabletMinWidthThreshold = newIntCachedFeatureParam(EDGE_TO_EDGE_TABLET, "e2e_tablet_width_threshold", -1); - public static final BooleanCachedFeatureParam sLoadNativeEarlyConcurrentLoad = - newBooleanCachedFeatureParam(LOAD_NATIVE_EARLY, "concurrent_load", true); - public static final BooleanCachedFeatureParam sTabGroupListContainment = newBooleanCachedFeatureParam( GRID_TAB_SWITCHER_SURFACE_COLOR_UPDATE, "tab_group_list_containment", true); @@ -1691,39 +1689,33 @@ public abstract class ChromeFeatureList { newIntCachedFeatureParam( READALOUD_AUDIO_OVERVIEWS, "read_aloud_audio_overviews_speed_addition_percentage", - 20); + 10); public static final IntCachedFeatureParam sReadAloudReadabilityDelayMsAfterPageLoad = newIntCachedFeatureParam( - READALOUD, - "read_aloud_readability_delay_ms_after_page_load", - 3000); + READALOUD, "read_aloud_readability_delay_ms_after_page_load", 3000); public static final BooleanCachedFeatureParam sShouldConsiderLanguageInOverviewReadability = newBooleanCachedFeatureParam( - READALOUD_AUDIO_OVERVIEWS, - "read_aloud_audio_overviews_should_consider_language_in_overview_readability", - false - ); + READALOUD_AUDIO_OVERVIEWS, + "read_aloud_audio_overviews_should_consider_language_in_overview_readability", + true); /** Controls whether Referrer App ID is passed to Search Results Page via client= param. */ public static final BooleanCachedFeatureParam sSearchinCctApplyReferrerId = newBooleanCachedFeatureParam(SEARCH_IN_CCT, "apply_referrer_id", false); - /** Pipe ("|") separated list of package names allowed to use the interactive Omnibox. */ - // TODO(crbug.com/40239922): remove default value when no longer relevant. - public static final StringCachedFeatureParam sSearchinCctOmniboxAllowedPackageNames = - newStringCachedFeatureParam( - SEARCH_IN_CCT, - "omnibox_allowed_package_names", - BuildConfig.ENABLE_DEBUG_LOGS ? "org.chromium.customtabsclient" : ""); - public static final IntCachedFeatureParam sStartSurfaceReturnTimeTabletSecs = newIntCachedFeatureParam( START_SURFACE_RETURN_TIME, "start_surface_return_time_on_tablet_seconds", 14400); // 4 hours + public static final BooleanCachedFeatureParam + sTabStorageSqlitePrototypeAuthoritativeReadSource = + newBooleanCachedFeatureParam( + TAB_STORAGE_SQLITE_PROTOTYPE, "authoritative_read_source", false); + public static final StringCachedFeatureParam sTabStripLayoutOptimizationOemAllowlist = newStringCachedFeatureParam( TAB_STRIP_LAYOUT_OPTIMIZATION, "custom_headers_oem_allowlist", ""); @@ -1781,7 +1773,6 @@ public abstract class ChromeFeatureList { sAndroidThemeModuleForceDependencies, sAndroidThemeResourceProviderForceLight, sBackgroundThreadPoolFieldTrialConfig, - sBatchTabRestoreBatchSize, sCctAdaptiveButtonContextualOnly, sCctAdaptiveButtonDefaultVariant, sCctAdaptiveButtonEnableVoice, @@ -1801,6 +1792,7 @@ public abstract class ChromeFeatureList { sClampAutomotiveScalingMaxScalingPercentage, sClankStartupLatencyInjectionAmountMs, sCleanupLegacyTabStateBatchSize, + sDesktopUAAllowedOnExternalDisplayForOem, sEdgeToEdgeBottomChinOemList, sEdgeToEdgeBottomChinOemMinVersions, sEdgeToEdgeEverywhereOemList, @@ -1810,8 +1802,7 @@ public abstract class ChromeFeatureList { sEdgeToEdgeUseBackupNavbarInsetsOemList, sEdgeToEdgeUseBackupNavbarInsetsOemMinVersions, sEdgeToEdgeUseBackupNavbarInsetsUseGestures, - sEdgeToEdgeUseBackupNavbarInsetsUseTappable, - sLoadNativeEarlyConcurrentLoad, + sLowMemoryDeviceThresholdMb, sMagicStackAndroidShowAllModules, sMaliciousApkDownloadCheckTelemetryOnly, sMaxLegacyTabStateFilesCleanedUpPerSession, @@ -1833,10 +1824,10 @@ public abstract class ChromeFeatureList { sReadAloudAudioOverviewsSpeedAdditionPercentage, sReadAloudReadabilityDelayMsAfterPageLoad, sSearchinCctApplyReferrerId, - sSearchinCctOmniboxAllowedPackageNames, sShouldConsiderLanguageInOverviewReadability, sStartSurfaceReturnTimeTabletSecs, sTabGroupListContainment, + sTabStorageSqlitePrototypeAuthoritativeReadSource, sTabStripLayoutOptimizationOemAllowlist, sTabStripLayoutOptimizationOemDenylist, sTabStripLayoutOptimizationOnExternalDisplay, @@ -1855,11 +1846,32 @@ public abstract class ChromeFeatureList { sAndroidTabDeclutterAutoDeleteTimeDeltaHours = sAndroidTabDeclutterAutoDelete.newIntParam( "android_tab_declutter_auto_delete_time_delta_hours", 90 * 24); + + public static final MutableBooleanParamWithSafeDefault sAndroidPinnedTabsSearchBoxMovement = + sAndroidPinnedTabs.newBooleanParam("search_box_movement", false); + + public static final MutableBooleanParamWithSafeDefault + sAndroidPinnedTabsSearchBoxSquishAnimation = + sAndroidPinnedTabs.newBooleanParam("search_box_squish_animation", false); + public static final MutableIntParamWithSafeDefault sDisableInstanceLimitMemoryThresholdMb = sDisableInstanceLimit.newIntParam("max_instance_limit_memory_threshold_mb", 6500); public static final MutableIntParamWithSafeDefault sDisableInstanceLimitMaxCount = sDisableInstanceLimit.newIntParam("max_instance_limit", 20); + public static final MutableBooleanParamWithSafeDefault + sOmniboxAutofocusOnIncognitoNtpNotFirstTab = + sOmniboxAutofocusOnIncognitoNtp.newBooleanParam("not_first_tab", false); + + public static final MutableBooleanParamWithSafeDefault + sOmniboxAutofocusOnIncognitoNtpWithHardwareKeyboard = + sOmniboxAutofocusOnIncognitoNtp.newBooleanParam( + "with_hardware_keyboard", false); + + public static final MutableBooleanParamWithSafeDefault + sOmniboxAutofocusOnIncognitoNtpWithPrediction = + sOmniboxAutofocusOnIncognitoNtp.newBooleanParam("with_prediction", false); + public static final MutableBooleanParamWithSafeDefault sAndroidTabDeclutterAutoDeletePromoTest = sAndroidTabDeclutterAutoDelete.newBooleanParam( "android_tab_declutter_auto_delete_promo_test", false); 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 12845dd2..799c53e2 100755 --- a/tools/under-control/src/chrome/browser/prefs/browser_prefs.cc +++ b/tools/under-control/src/chrome/browser/prefs/browser_prefs.cc @@ -55,7 +55,6 @@ #include "chrome/browser/notifications/platform_notification_service_impl.h" #include "chrome/browser/permissions/quiet_notification_permission_ui_state.h" #include "chrome/browser/platform_experience/prefs.h" -#include "chrome/browser/policy/developer_tools_policy_handler.h" #include "chrome/browser/prefs/chrome_pref_service_factory.h" #include "chrome/browser/prefs/incognito_mode_prefs.h" #include "chrome/browser/prefs/session_startup_pref.h" @@ -78,6 +77,7 @@ #include "chrome/browser/sharing_hub/sharing_hub_features.h" #include "chrome/browser/signin/chrome_signin_client.h" #include "chrome/browser/ssl/ssl_config_service_manager.h" +#include "chrome/browser/subscription_eligibility/subscription_eligibility_prefs.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" @@ -107,7 +107,7 @@ #include "components/browsing_data/core/pref_names.h" #include "components/certificate_transparency/pref_names.h" #include "components/collaboration/public/pref_names.h" -#include "components/commerce/core/pref_names.h" +#include "components/commerce/core/prefs.h" #include "components/content_settings/core/browser/host_content_settings_map.h" #include "components/content_settings/core/common/pref_names.h" #include "components/custom_handlers/protocol_handler_registry.h" @@ -115,6 +115,7 @@ #include "components/domain_reliability/domain_reliability_prefs.h" #include "components/embedder_support/origin_trials/origin_trial_prefs.h" #include "components/enterprise/browser/identifiers/identifiers_prefs.h" +#include "components/enterprise/browser/promotion/promotion_prefs.h" #include "components/enterprise/buildflags/buildflags.h" #include "components/enterprise/connectors/core/connectors_prefs.h" #include "components/feature_engagement/public/pref_names.h" @@ -135,6 +136,8 @@ #include "components/ntp_tiles/custom_links_manager_impl.h" #include "components/ntp_tiles/enterprise/enterprise_shortcuts_manager_impl.h" #include "components/ntp_tiles/most_visited_sites.h" +#include "components/ntp_tiles/pref_names.h" +#include "components/ntp_tiles/tile_type.h" #include "components/offline_pages/buildflags/buildflags.h" #include "components/omnibox/browser/aim_eligibility_service.h" #include "components/omnibox/browser/document_provider.h" @@ -165,6 +168,7 @@ #include "components/regional_capabilities/regional_capabilities_prefs.h" #include "components/safe_browsing/buildflags.h" #include "components/safe_browsing/core/common/safe_browsing_prefs.h" +#include "components/safety_check/safety_check_prefs.h" #include "components/saved_tab_groups/public/pref_names.h" #include "components/search_engines/search_engine_choice/search_engine_choice_service.h" #include "components/search_engines/template_url_prepopulate_data.h" @@ -341,7 +345,6 @@ #include "chrome/browser/apps/app_discovery_service/almanac_fetcher.h" #include "chrome/browser/apps/app_preload_service/app_preload_service.h" #include "chrome/browser/apps/app_service/metrics/app_platform_metrics_service.h" -#include "chrome/browser/apps/app_service/webapk/webapk_prefs.h" #include "chrome/browser/ash/account_manager/account_apps_availability.h" #include "chrome/browser/ash/account_manager/account_manager_edu_coexistence_controller.h" #include "chrome/browser/ash/app_list/app_list_syncable_service.h" @@ -349,6 +352,7 @@ #include "chrome/browser/ash/app_mode/kiosk_controller.h" #include "chrome/browser/ash/app_restore/full_restore_prefs.h" #include "chrome/browser/ash/apps/apk_web_app_service.h" +#include "chrome/browser/ash/apps/webapk/webapk_prefs.h" #include "chrome/browser/ash/arc/boot_phase_monitor/arc_boot_phase_monitor_bridge.h" #include "chrome/browser/ash/arc/policy/arc_policy_bridge.h" #include "chrome/browser/ash/arc/session/arc_session_manager.h" @@ -459,7 +463,6 @@ #include "chromeos/ash/components/settings/device_settings_cache.h" #include "chromeos/ash/components/timezone/timezone_resolver.h" #include "chromeos/ash/experiences/arc/arc_prefs.h" -#include "chromeos/ash/services/assistant/public/cpp/assistant_prefs.h" #include "chromeos/ash/services/auth_factor_config/auth_factor_config.h" #include "chromeos/ash/services/bluetooth_config/bluetooth_power_controller_impl.h" #include "chromeos/ash/services/bluetooth_config/device_name_manager_impl.h" @@ -554,114 +557,6 @@ namespace { // Please keep the list of deprecated prefs in chronological order. i.e. Add to // the bottom of the list, not here at the top. -// Deprecated 07/2024 -#if BUILDFLAG(ENABLE_DICE_SUPPORT) -inline constexpr char kFirstRunStudyGroup[] = "browser.first_run_study_group"; -#endif - -#if !BUILDFLAG(IS_ANDROID) -// Deprecated 07/2024 -constexpr char kNtpRecipesDismissedTasks[] = "NewTabPage.DismissedRecipeTasks"; -constexpr char kNtpModulesFirstShownTime[] = "NewTabPage.ModulesFirstShownTime"; -constexpr char kNtpModulesFreVisible[] = "NewTabPage.ModulesFreVisible"; -constexpr char kNtpModulesShownCount[] = "NewTabPage.ModulesShownCount"; -constexpr char kNtpPhotosLastDismissedTimePrefName[] = - "NewTabPage.Photos.LastDimissedTime"; -constexpr char kNtpPhotosOptInAcknowledgedPrefName[] = - "NewTabPage.Photos.OptInAcknowledged"; -constexpr char kNtpPhotosLastMemoryOpenTimePrefName[] = - "NewTabPage.Photos.LastMemoryOpenTime"; -constexpr char kNtpPhotosSoftOptOutCountPrefName[] = - "NewTabPage.Photos.SoftOptOutCount"; -constexpr char kNtpPhotosLastSoftOptedOutTimePrefName[] = - "NewTabPage.Photos.LastSoftOptedoutTime"; -// Deprecated 08/2024 -constexpr char kDismissedTabsPrefName[] = - "NewTabPage.TabResumption.DismissedTabs"; -#endif - -#if BUILDFLAG(IS_CHROMEOS) -// Deprecated 07/2024. -constexpr char kAppDeduplicationServiceLastGetTimestamp[] = - "apps.app_deduplication_service.last_get_data_from_server_timestamp"; -// Deprecated 07/2024. -constexpr char kShowTunaScreenEnabled[] = "ash.tuna_screen_oobe_enabled"; -// Deprecated 08/2024. -inline constexpr char kStandaloneWindowMigrationNudgeShown[] = - "standalone_window_migration_nudge_shown"; -#endif - -#if BUILDFLAG(IS_ANDROID) -// All of these were deprecated 08/24. -constexpr char kObsoleteUnenrolledFromGoogleMobileServicesAfterApiErrorCode[] = - "unenrolled_from_google_mobile_services_after_api_error_code"; -constexpr char kObsoleteRequiresMigrationAfterSyncStatusChange[] = - "requires_migration_after_sync_status_change"; -constexpr char - kObsoleteUnenrolledFromGoogleMobileServicesWithErrorListVersion[] = - "unenrolled_from_google_mobile_services_with_error_list_version"; -constexpr char kObsoleteTimesReenrolledToGoogleMobileServices[] = - "times_reenrolled_to_google_mobile_services"; -constexpr char kObsoleteTimesAttemptedToReenrollToGoogleMobileServices[] = - "times_attempted_to_reenroll_to_google_mobile_services"; -constexpr char kObsoleteUserReceivedGMSCoreError[] = - "user_received_gmscore_error"; -#endif - -// Deprecated 08/2024. -constexpr char kSafeBrowsingEsbOptInWithFriendlierSettings[] = - "safebrowsing.esb_opt_in_with_friendlier_settings"; - -// Deprecated 08/2024. -#if BUILDFLAG(IS_CHROMEOS) -constexpr char kDeviceDMTokenV1[] = "device_dm_token"; -constexpr char kDeviceDMTokenV2[] = "device_dm_token_v2"; -#endif - -// Deprecated 08/2024 -#if BUILDFLAG(IS_ANDROID) -constexpr char kBackoffEntryKey[] = "query_tiles.backoff_entry_key"; -constexpr char kFirstScheduleTimeKey[] = "query_tiles.first_schedule_time_key"; -#endif - -// Deprecated 09/2024. -constexpr char kContentSettingsWindowLastTabIndex[] = - "content_settings_window.last_tab_index"; -constexpr char kSyncPasswordHash[] = "profile.sync_password_hash"; -constexpr char kSyncPasswordLengthAndHashSalt[] = - "profile.sync_password_length_and_hash_salt"; - -// Deprecated 09/2024 -#if BUILDFLAG(IS_CHROMEOS) -constexpr char kDemoModeResourcesRemoved[] = "demo_mode_resources_removed"; -constexpr char kAccumulatedUsagePref[] = - "demo_mode_resources_remover.accumulated_device_usage_s"; -#endif - -// Deprecated 09/2024 -#if !BUILDFLAG(IS_ANDROID) -constexpr char kPasswordGenerationNudgePasswordDismissCount[] = - "password_generation_nudge_password_dismiss_count"; -#endif // !BUILDFLAG(IS_ANDROID) - -// Deprecated 09/2024 -#if !BUILDFLAG(IS_ANDROID) -const char kTranslateKitRootDir[] = - "on_device_translation.translate_kit_root_dir"; -#endif - -// Deprecated 09/2024 -#if BUILDFLAG(IS_ANDROID) -constexpr char kPrivacySandboxActivityTypeRecord[] = - "privacy_sandbox.activity_type.record"; -#endif // BUILDFLAG(IS_ANDROID) - -// Deprecated 09/2024. -#if !BUILDFLAG(IS_ANDROID) -const char kTabResumeDismissedTabsPrefName[] = - "NewTabPage.MostRelevantTabResumption.DismissedTabs"; -#endif // !BUILDFLAG(IS_ANDROID) - // Deprecated 10/2024. constexpr char kLiveCaptionBubblePinned[] = "accessibility.captions.live_caption_bubble_pinned"; @@ -1177,21 +1072,12 @@ constexpr char kSessionRestoreTurnOffFromSessionInfoBarTimesShown[] = constexpr char kSessionRestorePrefChanged[] = "session.restore_pref_changed"; +constexpr char kLegacySyncSessionsGUID[] = "sync.session_sync_guid"; + // Register local state used only for migration (clearing or moving to a new // key). void RegisterLocalStatePrefsForMigration(PrefRegistrySimple* registry) { -#if BUILDFLAG(ENABLE_DICE_SUPPORT) - // Deprecated 07/2024. - registry->RegisterStringPref(kFirstRunStudyGroup, std::string()); -#endif - #if BUILDFLAG(IS_CHROMEOS) - // Deprecated 08/2024. - registry->RegisterStringPref(kDeviceDMTokenV1, std::string()); - registry->RegisterStringPref(kDeviceDMTokenV2, std::string()); - registry->RegisterBooleanPref(kDemoModeResourcesRemoved, false); - registry->RegisterIntegerPref(kAccumulatedUsagePref, 0); - // Deprecated 10/2024. registry->RegisterIntegerPref(kMigrationStep, 0); registry->RegisterDictionaryPref(kMoveMigrationResumeStepPref); @@ -1310,96 +1196,8 @@ void RegisterLocalStatePrefsForMigration(PrefRegistrySimple* registry) { // Register prefs used only for migration (clearing or moving to a new key). void RegisterProfilePrefsForMigration( user_prefs::PrefRegistrySyncable* registry) { - // Deprecated 05/28. - registry->RegisterTimePref(kPrivacySandboxFakeNoticePromptShownTimeSync, - base::Time()); - registry->RegisterTimePref(kPrivacySandboxFakeNoticePromptShownTime, - base::Time()); - registry->RegisterTimePref(kPrivacySandboxFakeNoticeFirstSignInTime, - base::Time()); - registry->RegisterTimePref(kPrivacySandboxFakeNoticeFirstSignOutTime, - base::Time()); - chrome_browser_net::secure_dns::RegisterProbesSettingBackupPref(registry); -#if !BUILDFLAG(IS_ANDROID) - // Deprecated 07/2024 - registry->RegisterListPref(kNtpRecipesDismissedTasks); - registry->RegisterBooleanPref(kNtpModulesFreVisible, true); - registry->RegisterIntegerPref(kNtpModulesShownCount, 0); - registry->RegisterTimePref(kNtpModulesFirstShownTime, base::Time()); - registry->RegisterTimePref(kNtpPhotosLastDismissedTimePrefName, base::Time()); - registry->RegisterBooleanPref(kNtpPhotosOptInAcknowledgedPrefName, false); - registry->RegisterTimePref(kNtpPhotosLastMemoryOpenTimePrefName, - base::Time()); - registry->RegisterTimePref(kNtpPhotosLastSoftOptedOutTimePrefName, - base::Time()); - registry->RegisterIntegerPref(kNtpPhotosSoftOptOutCountPrefName, 0); - // Deprecated 08/2024 - registry->RegisterListPref(kDismissedTabsPrefName); -#endif - -#if BUILDFLAG(IS_CHROMEOS) - // Deprecated 07/2024. - registry->RegisterTimePref(kAppDeduplicationServiceLastGetTimestamp, - base::Time()); - registry->RegisterBooleanPref(kShowTunaScreenEnabled, true); - - // Deprecated 08/2024 - registry->RegisterBooleanPref(kStandaloneWindowMigrationNudgeShown, false); -#endif // BUILDFLAG(IS_CHROMEOS) - -#if BUILDFLAG(IS_ANDROID) - // All of these were deprecated 08/2024. - registry->RegisterIntegerPref( - kObsoleteUnenrolledFromGoogleMobileServicesAfterApiErrorCode, 0); - registry->RegisterBooleanPref(kObsoleteRequiresMigrationAfterSyncStatusChange, - false); - registry->RegisterIntegerPref( - kObsoleteUnenrolledFromGoogleMobileServicesWithErrorListVersion, 0); - registry->RegisterIntegerPref(kObsoleteTimesReenrolledToGoogleMobileServices, - 0); - registry->RegisterIntegerPref( - kObsoleteTimesAttemptedToReenrollToGoogleMobileServices, 0); - registry->RegisterBooleanPref(kObsoleteUserReceivedGMSCoreError, false); -#endif - // Deprecated 08/2024. - registry->RegisterBooleanPref(kSafeBrowsingEsbOptInWithFriendlierSettings, - false); - -#if BUILDFLAG(IS_ANDROID) - // Deprecated 08/2024 - registry->RegisterListPref(kBackoffEntryKey); - registry->RegisterTimePref(kFirstScheduleTimeKey, base::Time()); -#endif - - // Deprecated 09/2024. - registry->RegisterIntegerPref(kContentSettingsWindowLastTabIndex, 0); - registry->RegisterStringPref(kSyncPasswordHash, std::string()); - registry->RegisterStringPref(kSyncPasswordLengthAndHashSalt, std::string()); - -// Deprecated 09/2024. -#if !BUILDFLAG(IS_ANDROID) - registry->RegisterIntegerPref(kPasswordGenerationNudgePasswordDismissCount, - 0); -#endif // !BUILDFLAG(IS_ANDROID) - -// Deprecated 09/2024. -#if !BUILDFLAG(IS_ANDROID) - registry->RegisterFilePathPref(kTranslateKitRootDir, base::FilePath()); -#endif - -// Deprecated 09/2024 -#if BUILDFLAG(IS_ANDROID) - registry->RegisterListPref(kPrivacySandboxActivityTypeRecord); -#endif // BUILDFLAG(IS_ANDROID) - -// Deprecated 09/2024 -#if !BUILDFLAG(IS_ANDROID) - registry->RegisterListPref(kTabResumeDismissedTabsPrefName, - base::Value::List()); -#endif // !BUILDFLAG(IS_ANDROID) - // Deprecated 10/2024. registry->RegisterIntegerPref(kModelExecutionMainToggleSettingState, 0); @@ -1583,6 +1381,16 @@ void RegisterProfilePrefsForMigration( // Deprecated 04/2025. registry->RegisterDictionaryPref(kSuggestionGroupVisibility); + // Deprecated 05/2025. + registry->RegisterTimePref(kPrivacySandboxFakeNoticePromptShownTimeSync, + base::Time()); + registry->RegisterTimePref(kPrivacySandboxFakeNoticePromptShownTime, + base::Time()); + registry->RegisterTimePref(kPrivacySandboxFakeNoticeFirstSignInTime, + base::Time()); + registry->RegisterTimePref(kPrivacySandboxFakeNoticeFirstSignOutTime, + base::Time()); + // Deprecated 05/2025. #if BUILDFLAG(IS_ANDROID) registry->RegisterBooleanPref(kWipedWebAPkDataForMigration, false); @@ -1712,6 +1520,14 @@ void RegisterProfilePrefsForMigration( // Deprecated 10/2025. registry->RegisterBooleanPref(kSessionRestorePrefChanged, false); + +#if !BUILDFLAG(IS_ANDROID) + // Deprecated 10/2025. + registry->RegisterIntegerPref(ntp_prefs::kNtpShortcutsType, 0); +#endif // !BUILDFLAG(IS_ANDROID) + + // Deprecated 10/2025. + registry->RegisterStringPref(kLegacySyncSessionsGUID, std::string()); } } // namespace @@ -2021,6 +1837,7 @@ void RegisterLocalState(PrefRegistrySimple* registry) { #if !BUILDFLAG(IS_ANDROID) registry->RegisterStringPref(prefs::kNonMilestoneUpdateToastVersion, ""); + registry->RegisterBooleanPref(prefs::kSilentPrintingEnabled, false); #endif // !BUILDFLAG(IS_ANDROID) // This is intentionally last. @@ -2048,10 +1865,11 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, chrome_browser_net::NetErrorTabHelper::RegisterProfilePrefs(registry); chrome_prefs::RegisterProfilePrefs(registry); collaboration::prefs::RegisterProfilePrefs(registry); - commerce::RegisterPrefs(registry); + commerce::RegisterProfilePrefs(registry); cross_device::RegisterProfilePrefs(registry); enterprise::RegisterIdentifiersProfilePrefs(registry); enterprise_connectors::RegisterProfilePrefs(registry); + enterprise_promotion::RegisterProfilePrefs(registry); enterprise_reporting::RegisterProfilePrefs(registry); dom_distiller::DistilledPagePrefs::RegisterProfilePrefs(registry); DownloadPrefs::RegisterProfilePrefs(registry); @@ -2090,7 +1908,6 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, PermissionBubbleMediaAccessHandler::RegisterProfilePrefs(registry); PlatformNotificationServiceImpl::RegisterProfilePrefs(registry); plus_addresses::prefs::RegisterProfilePrefs(registry); - policy::DeveloperToolsPolicyHandler::RegisterProfilePrefs(registry); policy::URLBlocklistManager::RegisterProfilePrefs(registry); PolicyUI::RegisterProfilePrefs(registry); PrefProxyConfigTrackerImpl::RegisterProfilePrefs(registry); @@ -2118,6 +1935,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, safe_browsing::file_type::RegisterProfilePrefs(registry); #endif safe_browsing::RegisterProfilePrefs(registry); + safety_check::prefs::RegisterProfilePrefs(registry); SearchPrefetchService::RegisterProfilePrefs(registry); blocked_content::SafeBrowsingTriggeredPopupBlocker::RegisterProfilePrefs( registry); @@ -2131,6 +1949,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, SharingSyncPreference::RegisterProfilePrefs(registry); SigninPrefs::RegisterProfilePrefs(registry); site_engagement::SiteEngagementService::RegisterProfilePrefs(registry); + subscription_eligibility::prefs::RegisterProfilePrefs(registry); supervised_user::RegisterProfilePrefs(registry); sync_sessions::SessionSyncPrefs::RegisterProfilePrefs(registry); syncer::DeviceInfoPrefs::RegisterProfilePrefs(registry); @@ -2213,7 +2032,6 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, commerce::CommerceUiTabHelper::RegisterProfilePrefs(registry); contextual_cueing::prefs::RegisterProfilePrefs(registry); DriveService::RegisterProfilePrefs(registry); - extensions::TabsCaptureVisibleTabFunction::RegisterProfilePrefs(registry); first_run::RegisterProfilePrefs(registry); gcm::RegisterProfilePrefs(registry); GoogleCalendarPageHandler::RegisterProfilePrefs(registry); @@ -2407,6 +2225,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, registry->RegisterBooleanPref(prefs::kLensDesktopNTPSearchEnabled, true); #endif + registry->RegisterBooleanPref(prefs::kDisableScreenshots, false); registry->RegisterListPref( webauthn::pref_names::kRemoteDesktopAllowedOrigins); @@ -2480,6 +2299,14 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, // the policies logic is implemented. registry->RegisterListPref(policy::policy_prefs::kIncognitoModeBlocklist); registry->RegisterListPref(policy::policy_prefs::kIncognitoModeAllowlist); + + registry->RegisterBooleanPref( + ntp_tiles::prefs::kTabResumptionHomeModuleEnabled, true); + + registry->RegisterBooleanPref(ntp_tiles::prefs::kMagicStackHomeModuleEnabled, + true); + + registry->RegisterBooleanPref(ntp_tiles::prefs::kTipsHomeModuleEnabled, true); } void RegisterUserProfilePrefs(user_prefs::PrefRegistrySyncable* registry) { @@ -2530,18 +2357,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. -#if BUILDFLAG(ENABLE_DICE_SUPPORT) - // Added 07/2024. - local_state->ClearPref(kFirstRunStudyGroup); -#endif - #if BUILDFLAG(IS_CHROMEOS) - // Added 08/2024. - local_state->ClearPref(kDeviceDMTokenV1); - local_state->ClearPref(kDeviceDMTokenV2); - local_state->ClearPref(kDemoModeResourcesRemoved); - local_state->ClearPref(kAccumulatedUsagePref); - // Added 10/2024. local_state->ClearPref(kMigrationStep); local_state->ClearPref(kMoveMigrationResumeStepPref); @@ -2655,6 +2471,11 @@ void MigrateObsoleteLocalStatePrefs(PrefService* local_state) { // Added 09/2025 local_state->ClearPref(kRendererCodeIntegrityEnabledNeedsDeletion); + // Added 10/2025 +#if !BUILDFLAG(IS_ANDROID) + local_state->ClearPref(prefs::kDefaultBrowserFirstShownTime); +#endif + // Please don't delete the following line. It is used by PRESUBMIT.py. // END_MIGRATE_OBSOLETE_LOCAL_STATE_PREFS @@ -2680,6 +2501,13 @@ void MigrateObsoleteProfilePrefs(PrefService* profile_prefs, // BEGIN_MIGRATE_OBSOLETE_PROFILE_PREFS // Please don't delete the preceding line. It is used by PRESUBMIT.py. +#if !BUILDFLAG(IS_ANDROID) + // Added 08/2024, but DO NOT REMOVE after the usual year. + // TODO(crbug.com/356148174): Remove once kMoveThemePrefsToSpecifics has been + // enabled for an year. + MigrateSyncingThemePrefsToNonSyncingIfNeeded(profile_prefs); +#endif // !BUILDFLAG(IS_ANDROID) + // Added 10/2025. profile_prefs->ClearPref(kSessionRestoreTurnOffFromRestartInfoBarTimesShown); profile_prefs->ClearPref(kSessionRestoreTurnOffFromSessionInfoBarTimesShown); @@ -2709,83 +2537,6 @@ void MigrateObsoleteProfilePrefs(PrefService* profile_prefs, MigrateDefaultBrowserLastDeclinedPref(profile_prefs); #endif -#if !BUILDFLAG(IS_ANDROID) - // Added 07/2024. - profile_prefs->ClearPref(kNtpRecipesDismissedTasks); - profile_prefs->ClearPref(kNtpModulesFirstShownTime); - profile_prefs->ClearPref(kNtpModulesFreVisible); - profile_prefs->ClearPref(kNtpModulesShownCount); - profile_prefs->ClearPref(kNtpPhotosLastDismissedTimePrefName); - profile_prefs->ClearPref(kNtpPhotosOptInAcknowledgedPrefName); - profile_prefs->ClearPref(kNtpPhotosLastMemoryOpenTimePrefName); - profile_prefs->ClearPref(kNtpPhotosLastSoftOptedOutTimePrefName); - profile_prefs->ClearPref(kNtpPhotosSoftOptOutCountPrefName); - // Added 08/2024 - profile_prefs->ClearPref(kDismissedTabsPrefName); -#endif - -#if BUILDFLAG(IS_CHROMEOS) - // Added 07/2024. - profile_prefs->ClearPref(kAppDeduplicationServiceLastGetTimestamp); - profile_prefs->ClearPref(kShowTunaScreenEnabled); - - // Added 08/2024. - profile_prefs->ClearPref(kStandaloneWindowMigrationNudgeShown); -#endif - -#if BUILDFLAG(IS_ANDROID) - // All of these were added 08/2024. - profile_prefs->ClearPref( - kObsoleteUnenrolledFromGoogleMobileServicesAfterApiErrorCode); - profile_prefs->ClearPref(kObsoleteRequiresMigrationAfterSyncStatusChange); - profile_prefs->ClearPref( - kObsoleteUnenrolledFromGoogleMobileServicesWithErrorListVersion); - profile_prefs->ClearPref(kObsoleteTimesReenrolledToGoogleMobileServices); - profile_prefs->ClearPref( - kObsoleteTimesAttemptedToReenrollToGoogleMobileServices); - profile_prefs->ClearPref(kObsoleteUserReceivedGMSCoreError); -#endif - // Added 08/2024. - profile_prefs->ClearPref(kSafeBrowsingEsbOptInWithFriendlierSettings); - -#if !BUILDFLAG(IS_ANDROID) - // Added 08/2024, but DO NOT REMOVE after the usual year. - // TODO(crbug.com/356148174): Remove once kMoveThemePrefsToSpecifics has been - // enabled for an year. - MigrateSyncingThemePrefsToNonSyncingIfNeeded(profile_prefs); -#endif // !BUILDFLAG(IS_ANDROID) - - // Added 08/2024. -#if BUILDFLAG(IS_ANDROID) - profile_prefs->ClearPref(kBackoffEntryKey); - profile_prefs->ClearPref(kFirstScheduleTimeKey); -#endif - - // Added 09/2024. - profile_prefs->ClearPref(kContentSettingsWindowLastTabIndex); - profile_prefs->ClearPref(kSyncPasswordHash); - profile_prefs->ClearPref(kSyncPasswordLengthAndHashSalt); - -// Added 09/2024 -#if !BUILDFLAG(IS_ANDROID) - profile_prefs->ClearPref(kPasswordGenerationNudgePasswordDismissCount); -#endif // !BUILDFLAG(IS_ANDROID) - -// Added 09/2024. -#if !BUILDFLAG(IS_ANDROID) - profile_prefs->ClearPref(kTranslateKitRootDir); -#endif - -// Added 09/2024 -#if BUILDFLAG(IS_ANDROID) - profile_prefs->ClearPref(kPrivacySandboxActivityTypeRecord); -#endif // BUILDFLAG(IS_ANDROID) - -// Added 09/2024 -#if !BUILDFLAG(IS_ANDROID) - profile_prefs->ClearPref(kTabResumeDismissedTabsPrefName); -#endif // !BUILDFLAG(IS_ANDROID) - // Added 10/2024. profile_prefs->ClearPref(kModelExecutionMainToggleSettingState); @@ -3082,6 +2833,14 @@ void MigrateObsoleteProfilePrefs(PrefService* profile_prefs, SigninPrefs(*profile_prefs).MigrateObsoleteSigninPrefs(); +#if !BUILDFLAG(IS_ANDROID) + // Added 10/2025 + NewTabPageUI::MigrateDeprecatedShortcutsTypePref(profile_prefs); +#endif // !BUILDFLAG(IS_ANDROID) + + // Added 10/2025. + profile_prefs->ClearPref(kLegacySyncSessionsGUID); + // 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 32421686..0d3ad9fc 100755 --- a/tools/under-control/src/chrome/browser/ui/tab_helpers.cc +++ b/tools/under-control/src/chrome/browser/ui/tab_helpers.cc @@ -17,7 +17,6 @@ #include "chrome/browser/breadcrumbs/breadcrumb_manager_tab_helper.h" #include "chrome/browser/browser_process.h" #include "chrome/browser/buildflags.h" -#include "chrome/browser/captive_portal/captive_portal_service_factory.h" #include "chrome/browser/chained_back_navigation_tracker.h" #include "chrome/browser/chrome_content_browser_client.h" #include "chrome/browser/commerce/shopping_service_factory.h" @@ -180,7 +179,7 @@ #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/fingerprinting_protection_filter/interventions/browser/interventions_web_contents_helper.h" +#include "components/fingerprinting_protection_filter/interventions/browser/canvas_interventions_web_contents_helper.h" #include "components/fingerprinting_protection_filter/interventions/common/interventions_features.h" #include "components/ip_protection/common/ip_protection_status.h" #include "components/page_load_metrics/browser/features.h" @@ -234,6 +233,7 @@ #endif #if BUILDFLAG(ENABLE_CAPTIVE_PORTAL_DETECTION) +#include "chrome/browser/captive_portal/captive_portal_service_factory.h" #include "components/captive_portal/content/captive_portal_tab_helper.h" #endif @@ -383,9 +383,15 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) { if (fingerprinting_protection_interventions::features:: ShouldBlockCanvasReadbackForIncognitoState( + profile->IsIncognitoProfile()) || + fingerprinting_protection_interventions::features:: + IsCanvasInterventionsEnabledForIncognitoState( profile->IsIncognitoProfile())) { - fingerprinting_protection_interventions::InterventionsWebContentsHelper:: - CreateForWebContents(web_contents, profile->IsIncognitoProfile()); + fingerprinting_protection_interventions:: + CanvasInterventionsWebContentsHelper::CreateForWebContents( + web_contents, + TrackingProtectionSettingsFactory::GetForProfile(profile), + profile->IsIncognitoProfile()); } // Only create the IpProtectionStatus if the User Bypass feature is enabled. diff --git a/tools/under-control/src/chrome/browser/ui/webui/chrome_content_browser_client_webui_part.cc b/tools/under-control/src/chrome/browser/ui/webui/chrome_content_browser_client_webui_part.cc index cd4aebac..045b2801 100755 --- a/tools/under-control/src/chrome/browser/ui/webui/chrome_content_browser_client_webui_part.cc +++ b/tools/under-control/src/chrome/browser/ui/webui/chrome_content_browser_client_webui_part.cc @@ -76,7 +76,7 @@ void ChromeContentBrowserClientWebUiPart::OverrideWebPreferences( // Set some non-font prefs for webui tabstrip. The tabstrip renderer is never // navigated to or from, so we don't need to replicate this logic in // OverrideWebPreferencesAfterNavigation. - if (url.host_piece() == chrome::kChromeUITabStripHost) { + if (url.host() == chrome::kChromeUITabStripHost) { web_prefs->touch_drag_drop_enabled = true; web_prefs->touch_dragend_context_menu = true; } 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 0b112183..854d058a 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 @@ -157,6 +157,7 @@ namespace autofillPrivate { FLIGHT_RESERVATION_PASSENGER_NAME, FLIGHT_RESERVATION_DEPARTURE_AIRPORT, FLIGHT_RESERVATION_ARRIVAL_AIRPORT, + FLIGHT_RESERVATION_DEPARTURE_DATE, MAX_VALID_FIELD_TYPE }; @@ -375,6 +376,10 @@ namespace autofillPrivate { // dynamically, because the "" string might need declension in // some languages. DOMString deleteEntityTypeString; + // Whether the entity type can be stored on Google Wallet servers. + // Note that an entity type might support Wallet and local storage + // as well. (e.g. Vehicle). + boolean supportsWalletStorage; }; // Contains date information: month, day and year. @@ -419,10 +424,15 @@ namespace autofillPrivate { dictionary EntityInstanceWithLabels { // The guid of the entity instance. DOMString guid; - // The enitity instance label. + // Contains the entity type name and other relevant information about the + // entity type. + EntityType type; + // The entity instance label. DOMString entityInstanceLabel; - // The enitity instance sublabel. + // The entity instance sublabel. DOMString entityInstanceSubLabel; + // Whether the entity is stored on Google Wallet servers. + boolean storedInWallet; }; // A Pay Over Time Issuer entry which can be displayed in the autofill @@ -457,7 +467,7 @@ namespace autofillPrivate { callback CheckForDeviceAuthCallback = void(boolean isDeviceAuthAvailable); callback LoadEntityInstancesCallback = void(EntityInstanceWithLabels[] entries); callback GetEntityInstanceByGuid = void(EntityInstance entityInstance); - callback GetAllEntityTypesCallback = void(EntityType[] entityTypes); + callback GetWritableEntityTypesCallback = void(EntityType[] entityTypes); callback GetAllAttributeTypesForEntityTypeNameCallback = void(AttributeType[] attributeTypes); callback GetAutofillAiOptInStatusCallback = void(boolean optedIn); @@ -595,9 +605,9 @@ namespace autofillPrivate { static void getEntityInstanceByGuid( DOMString guid, GetEntityInstanceByGuid callback); - // Returns a list of all possible entity types. Used for the user to decide + // Returns a list of writable entity types. Used for the user to decide // what entity instance to add. - static void getAllEntityTypes(GetAllEntityTypesCallback callback); + static void getWritableEntityTypes(GetWritableEntityTypesCallback callback); // Returns a list of all possible attribute types that can be set on an // entity instance with the respective entity type name. Used for diff --git a/tools/under-control/src/chrome/common/extensions/api/enterprise_reporting_private.idl b/tools/under-control/src/chrome/common/extensions/api/enterprise_reporting_private.idl index 2490d658..548f99c6 100755 --- a/tools/under-control/src/chrome/common/extensions/api/enterprise_reporting_private.idl +++ b/tools/under-control/src/chrome/common/extensions/api/enterprise_reporting_private.idl @@ -8,27 +8,21 @@ namespace enterprise.reportingPrivate { // Invoked by UploadChromeDesktopReport when the upload is // finished. // Also Invoked by setDeviceData when data is stored. - [platforms = ("win", "mac", "linux")] callback DoneCallback = void(); // Invoked by getDeviceId to return the ID. - [platforms = ("win", "mac", "linux")] callback GetDeviceIdCallback = void(DOMString id); // Invoked by getPersistentSecret to return the secret. - [platforms = ("win", "mac")] callback GetPersistentSecretCallback = void(ArrayBuffer secret); // Invoked by getDeviceDataCallback to return the device data. - [platforms = ("win", "mac", "linux")] callback GetDeviceDataCallback = void(ArrayBuffer data); // Possible states a particular device setting can be in. - [platforms = ("win", "mac", "linux")] enum SettingValue { UNKNOWN, DISABLED, ENABLED }; // Device info fields returned by the getDeviceInfo API. - [platforms = ("win", "mac", "linux")] dictionary DeviceInfo { DOMString osName; DOMString osVersion; @@ -47,7 +41,6 @@ namespace enterprise.reportingPrivate { }; // Invoked by getDeviceInfo to return device information. - [platforms = ("win", "mac", "linux")] callback GetDeviceInfoCallback = void(DeviceInfo deviceInfo); // Possible states for the EnterpriseRealTimeUrlCheckMode policy. @@ -106,14 +99,12 @@ namespace enterprise.reportingPrivate { // Captures the type of event so it can be associated with user or device in // Chrome for reporting purposes - [platforms = ("chromeos")] enum EventType { DEVICE, USER }; // Composite object that captures the information we need to report events. // Some fields like the record and priority are serialized to avoid any // dependency on proto definitions here, given the fact that they will likely // change in the future. These will be deserialized and validated in Chrome. - [platforms = ("chromeos")] dictionary EnqueueRecordRequest { // Serialized record data binary based on the proto definition in // //components/reporting/proto/synced/record.proto. @@ -129,17 +120,14 @@ namespace enterprise.reportingPrivate { // collection request is for. This will be used to identify the organization // in which the user is, and can then be used to determine their affiliation // with the current browser management state. - [platforms = ("win")] dictionary UserContext { DOMString userId; }; // Enumeration of the various states an AntiVirus software product can be in. - [platforms = ("win")] enum AntiVirusProductState { ON, OFF, SNOOZED, EXPIRED }; // Metadata about a specific AntiVirus software product. - [platforms = ("win")] dictionary AntiVirusSignal { DOMString displayName; DOMString productId; @@ -148,23 +136,19 @@ namespace enterprise.reportingPrivate { // Invoked by getAvInfo to return information about installed // AntiVirus software. - [platforms = ("win")] callback AvInfoCallback = void(AntiVirusSignal[] avSignals); // ID of an installed hotfix system update. - [platforms = ("win")] dictionary HotfixSignal { DOMString hotfixId; }; // Invoked by getHotfixes to return the IDs of installed hotfix // system updates. - [platforms = ("win")] callback HotfixesCallback = void(HotfixSignal[] hotfixSignals); // Used to indicate whether a given signal was correctly found or not, or // indicate a reason for not being able to find it. - [platforms = ("win", "mac", "linux")] enum PresenceValue { // Was unable to determine whether the signal source exists or not. This // typically indicates that a failure occurred before even trying to assess @@ -183,14 +167,12 @@ namespace enterprise.reportingPrivate { // Parameter used to collect information about a specific file system // resource. - [platforms = ("win", "mac", "linux")] dictionary GetFileSystemInfoOptions { DOMString path; boolean computeSha256; boolean computeExecutableMetadata; }; - [platforms = ("win", "mac", "linux")] dictionary GetFileSystemInfoRequest { // Information about the for whom the signal collection request is for. UserContext userContext; @@ -200,7 +182,6 @@ namespace enterprise.reportingPrivate { GetFileSystemInfoOptions[] options; }; - [platforms = ("win", "mac", "linux")] dictionary GetFileSystemInfoResponse { // Path to the file system object for whom those signals were collected. DOMString path; @@ -232,18 +213,15 @@ namespace enterprise.reportingPrivate { DOMString? version; }; - [platforms = ("win", "mac", "linux")] callback FileSystemInfoCallback = void(GetFileSystemInfoResponse[] fileSystemSignals); - [platforms = ("win")] enum RegistryHive { HKEY_CLASSES_ROOT, HKEY_LOCAL_MACHINE, HKEY_CURRENT_USER }; - [platforms = ("win", "mac")] dictionary GetSettingsOptions { // Path to a collection of settings. // On Windows it would be the path to the reg key inside the hive. @@ -273,7 +251,6 @@ namespace enterprise.reportingPrivate { RegistryHive? hive; }; - [platforms = ("win", "mac")] dictionary GetSettingsRequest { // Information about the for whom the signal collection request is for. UserContext userContext; @@ -283,7 +260,6 @@ namespace enterprise.reportingPrivate { GetSettingsOptions[] options; }; - [platforms = ("win", "mac")] dictionary GetSettingsResponse { // Path as given in the corresponding GetSettingsOptions // request. @@ -307,7 +283,6 @@ namespace enterprise.reportingPrivate { DOMString? value; }; - [platforms = ("win", "mac")] callback SettingsCallback = void(GetSettingsResponse[] settings); diff --git a/tools/under-control/src/chrome/common/extensions/api/login_state.idl b/tools/under-control/src/chrome/common/extensions/api/login_state.idl index e6835826..9999cd5f 100755 --- a/tools/under-control/src/chrome/common/extensions/api/login_state.idl +++ b/tools/under-control/src/chrome/common/extensions/api/login_state.idl @@ -12,7 +12,10 @@ namespace loginState { SIGNIN_PROFILE, // Specifies that the extension is in the user profile. - USER_PROFILE + USER_PROFILE, + + // Specifies that the extension is in the lock screen profile. + [nodoc] LOCK_PROFILE }; enum SessionState { diff --git a/tools/under-control/src/chrome/common/extensions/api/quick_unlock_private.idl b/tools/under-control/src/chrome/common/extensions/api/quick_unlock_private.idl index 3d7409c9..89eb9f98 100755 --- a/tools/under-control/src/chrome/common/extensions/api/quick_unlock_private.idl +++ b/tools/under-control/src/chrome/common/extensions/api/quick_unlock_private.idl @@ -74,7 +74,7 @@ namespace quickUnlockPrivate { // policy information). This API must be used to change the pref. // |token|: The token returned by $(ref:getAuthToken). // |enabled|: Whether to enable the lock screen. - [platforms=("chromeos")] static void setLockScreenEnabled( + static void setLockScreenEnabled( DOMString token, boolean enabled, optional VoidResultCallback onComplete); @@ -88,7 +88,6 @@ namespace quickUnlockPrivate { // |enabled|: Whether to enable PIN auto submit. // |onComplete|: Called with true if the quick unlock state was updated, // false otherwise. The update is treated as a single atomic operation. - [platforms=("chromeos")] static void setPinAutosubmitEnabled( DOMString token, DOMString pin, @@ -96,17 +95,16 @@ namespace quickUnlockPrivate { BooleanResultCallback onComplete); // Tests wether it is currently possible to authenticate using PIN. - [platforms=("chromeos")] static void canAuthenticatePin( + static void canAuthenticatePin( BooleanResultCallback onComplete); // Returns the set of quick unlock modes that are available for the user to // use. Some quick unlock modes may be disabled by policy. - [platforms=("chromeos")] static void getAvailableModes( + static void getAvailableModes( ModesCallback onComplete); // Returns the quick unlock modes that are currently enabled and usable on // the lock screen. - [platforms=("chromeos")] static void getActiveModes(ModesCallback onComplete); @@ -116,7 +114,7 @@ namespace quickUnlockPrivate { // |credential|: The given credential. // |onComplete|: Called with a list of warnings and errors the given // |credential| has (or an empty list if there are none). - [platforms=("chromeos")] static void checkCredential( + static void checkCredential( QuickUnlockMode mode, DOMString credential, CredentialCheckCallback onComplete); @@ -125,7 +123,6 @@ namespace quickUnlockPrivate { // |mode|: The quick unlock mode that is used. // |onComplete|: Called with the credential requirements of the given // |mode|. - [platforms=("chromeos")] static void getCredentialRequirements( QuickUnlockMode mode, CredentialRequirementsCallback onComplete); @@ -137,7 +134,6 @@ namespace quickUnlockPrivate { // credential the same for the associated mode, pass an empty string. // |onComplete|: Called with true if the quick unlock state was updated, // false otherwise. The update is treated as a single atomic operation. - [platforms=("chromeos")] static void setModes( DOMString token, QuickUnlockMode[] modes, diff --git a/tools/under-control/src/chrome/common/extensions/api/settings_private.idl b/tools/under-control/src/chrome/common/extensions/api/settings_private.idl index fdc7d18f..c7e7c3dc 100755 --- a/tools/under-control/src/chrome/common/extensions/api/settings_private.idl +++ b/tools/under-control/src/chrome/common/extensions/api/settings_private.idl @@ -20,7 +20,10 @@ namespace settingsPrivate { // Preferences are controlled neither by parent nor the child user. // Preference values are hard-coded values and can not be changed. - CHILD_RESTRICTION + CHILD_RESTRICTION, + + // Preferences are controlled by "Safe Browsing" off setting. + SAFE_BROWSING_OFF }; enum Enforcement { 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 58e46669..19e5e8d6 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 @@ -1318,8 +1318,9 @@ void ChromeContentRendererClient::WillSendRequest( if (search_box) { // Note: this GURL copy could be avoided if host() were added to WebURL. GURL gurl(target_url); - if (gurl.host_piece() == chrome::kChromeUIFaviconHost) + if (gurl.host() == chrome::kChromeUIFaviconHost) { search_box->GenerateImageURLFromTransientURL(target_url, new_url); + } } #endif // !BUILDFLAG(IS_ANDROID) } @@ -1620,7 +1621,7 @@ bool ChromeContentRendererClient::IsSafeRedirectTarget( if (target_url.SchemeIs(extensions::kExtensionScheme)) { const extensions::Extension* extension = extensions::RendererExtensionRegistry::Get()->GetByID( - target_url.host()); + target_url.GetHost()); if (!extension) { return false; } @@ -1628,7 +1629,7 @@ bool ChromeContentRendererClient::IsSafeRedirectTarget( extension, target_url, request_initiator, upstream_url)) { return true; } - return extension->guid() == upstream_url.host(); + return extension->guid() == upstream_url.GetHost(); } #endif // BUILDFLAG(ENABLE_EXTENSIONS_CORE) return true; @@ -1667,7 +1668,7 @@ void ChromeContentRendererClient::AppendContentSecurityPolicy( // Append a minimum CSP to ensure the extension can't relax the default // applied CSP through means like Service Worker. const std::string* default_csp = - extensions::CSPInfo::GetMinimumCSPToAppend(*extension, gurl.path()); + extensions::CSPInfo::GetMinimumCSPToAppend(*extension, gurl.GetPath()); if (!default_csp) return; 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 28503f05..5ce43f00 100755 --- a/tools/under-control/src/components/policy/resources/templates/policies.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policies.yaml @@ -1400,6 +1400,9 @@ policies: 1399: DeveloperToolsAvailabilityAllowlist 1400: DeveloperToolsAvailabilityBlocklist 1401: LocalNetworkAccessRestrictionsTemporaryOptOut + 1402: GeminiActOnWebSettings + 1403: LocalAuthFactorsComplexity + 1404: ProxyOverrideRules atomic_groups: 1: Homepage 2: RemoteAccess diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/CloudReporting/CloudProfileReportingEnabled.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/CloudReporting/CloudProfileReportingEnabled.yaml index 206cb453..193c206a 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/CloudReporting/CloudProfileReportingEnabled.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/CloudReporting/CloudProfileReportingEnabled.yaml @@ -18,10 +18,10 @@ features: supported_on: - chrome.*:130- - android:130- +- ios:143- future_on: - chrome_os - fuchsia -- ios items: - caption: Enable managed profile cloud reporting value: true diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/AutoSelectCertificateForUrls.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/AutoSelectCertificateForUrls.yaml index 3968c338..7921f1c6 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/AutoSelectCertificateForUrls.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/AutoSelectCertificateForUrls.yaml @@ -1,6 +1,6 @@ caption: Automatically select client certificates for these sites desc: |- - Setting the policy lets you make a list of URL patterns that specify sites for which Chrome can automatically select a client certificate. The value is an array of stringified JSON dictionaries, each with the form { "pattern": "$URL_PATTERN", "filter" : $FILTER }, where $URL_PATTERN is a content setting pattern. $FILTER restricts the client certificates the browser automatically selects from. Independent of the filter, only certificates that match the server's certificate request are selected. + Setting the policy lets you make a list of URL patterns that specify sites for which Chrome can automatically select a client certificate. The value is an array of stringified JSON dictionaries, each with the form { "pattern": "$URL_PATTERN", "filter" : $FILTER }, where $URL_PATTERN is a content setting pattern. $FILTER restricts the client certificates the browser automatically selects from. Independent of the filter, only certificates that match the server's certificate request are selected. On Android, Chrome can only select client certificates that it has provisioned itself; it cannot access certificates installed at the operating system level. Examples for the usage of the $FILTER section: @@ -26,7 +26,6 @@ features: per_profile: true future_on: - fuchsia -- android owners: - chromeos-commercial-networking-team@google.com - miersh@google.com @@ -37,6 +36,7 @@ schema: supported_on: - chrome.*:15- - chrome_os:15- +- android:143- tags: - website-sharing type: list diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/DefaultSmartCardConnectSetting.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/DefaultSmartCardConnectSetting.yaml index 2d7cc277..c0315bac 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/DefaultSmartCardConnectSetting.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/DefaultSmartCardConnectSetting.yaml @@ -13,8 +13,8 @@ example_value: 3 features: dynamic_refresh: true per_profile: true -future_on: -- chrome_os +supported_on: +- chrome_os:143- items: - caption: Do not allow Isolated Web App origins to connect to smart card readers name: BlockSmartCardConnect diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/DefaultWebPrintingSetting.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/DefaultWebPrintingSetting.yaml index 18d33427..84318145 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/DefaultWebPrintingSetting.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/DefaultWebPrintingSetting.yaml @@ -1,11 +1,11 @@ caption: Control use of the WebPrinting API default: null desc: |- - Setting the policy to 2 automatically blocks sites from using the WebPrinting API. + Setting the policy to 2 automatically blocks Isolated Web App origins from using the WebPrinting API. - Setting the policy to 3 will prompt the user when a site wants to use the WebPrinting API. + Setting the policy to 3 will prompt the user when an Isolated Web App origin wants to use the WebPrinting API. - Leaving it unset lets websites ask for local printer access, but users can change this setting. + Leaving it unset lets Isolated Web App origins ask for local printer access, but users can change this setting. example_value: 2 features: dynamic_refresh: true @@ -13,10 +13,10 @@ features: future_on: - chrome_os items: -- caption: Do not allow any site to request access to local printers via the WebPrinting API +- caption: Do not allow Isolated Web App origins to request access to local printers via the WebPrinting API name: BlockWebPrinting value: 2 -- caption: Allow sites to ask the user to grant access to local printers via the WebPrinting API +- caption: Allow Isolated Web App origins to ask the user to grant access to local printers via the WebPrinting API name: AskWebPrinting value: 3 owners: diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/PartitionedBlobUrlUsage.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/PartitionedBlobUrlUsage.yaml index 26184f89..211f5605 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/PartitionedBlobUrlUsage.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/PartitionedBlobUrlUsage.yaml @@ -15,7 +15,7 @@ desc: |- If you must use the policy, please file a bug at $1https://crbug.com/new?component=1779870&cc=awillia@chromium.org&priority=p1&type=bug&noWizard=true explaining your use case. The policy is scheduled to be offered through - $1Google Chrome version 143, after which + $1Google Chrome version 146, after which the old implementation will be removed. NOTE: Only newly-started renderer processes will reflect changes to this diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/SmartCardConnectAllowedForUrls.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/SmartCardConnectAllowedForUrls.yaml index 1f1ce827..0da8e4d2 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/SmartCardConnectAllowedForUrls.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/SmartCardConnectAllowedForUrls.yaml @@ -12,8 +12,8 @@ example_value: features: dynamic_refresh: true per_profile: true -future_on: -- chrome_os +supported_on: +- chrome_os:143- owners: - file://content/browser/smart_card/OWNERS schema: diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/SmartCardConnectBlockedForUrls.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/SmartCardConnectBlockedForUrls.yaml index 9e241619..e49a8ecd 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/SmartCardConnectBlockedForUrls.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/SmartCardConnectBlockedForUrls.yaml @@ -12,8 +12,8 @@ example_value: features: dynamic_refresh: true per_profile: true -future_on: -- chrome_os +supported_on: +- chrome_os:143- owners: - file://content/browser/smart_card/OWNERS schema: diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/WebPrintingAllowedForUrls.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/WebPrintingAllowedForUrls.yaml index 534c9c40..48f5482e 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/WebPrintingAllowedForUrls.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/WebPrintingAllowedForUrls.yaml @@ -1,6 +1,7 @@ caption: Allow WebPrinting API on these sites desc: |- Setting the policy lets you list the URL patterns that specify which sites are automatically granted access to local printers via the WebPrinting API. + Valid patterns are limited to Isolated Web Apps. Leaving the policy unset means DefaultWebPrintingSetting applies for all sites, if it's set. If not, users' personal settings apply. @@ -8,8 +9,7 @@ desc: |- For detailed information on valid url patterns, please see https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. * is not an accepted value for this policy. example_value: -- https://www.example.com -- '[*.]example.edu' +- isolated-app://aerugqztij5biqquuk3mfwpsaibuegaqcitgfchwuosuofdjabzqaaic features: dynamic_refresh: true per_profile: true diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/WebPrintingBlockedForUrls.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/WebPrintingBlockedForUrls.yaml index 83fd7da3..7157db43 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/WebPrintingBlockedForUrls.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/WebPrintingBlockedForUrls.yaml @@ -1,6 +1,7 @@ caption: Block WebPrinting API on these sites desc: |- Setting the policy lets you list the URL patterns that specify which sites are automatically denied access to local printers via the WebPrinting API. + Valid patterns are limited to Isolated Web Apps. Leaving the policy unset means DefaultWebPrintingSetting applies for all sites, if it's set. If not, users' personal settings apply. @@ -8,8 +9,7 @@ desc: |- For detailed information on valid url patterns, please see https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. * is not an accepted value for this policy. example_value: -- https://www.example.com -- '[*.]example.edu' +- isolated-app://aerugqztij5biqquuk3mfwpsaibuegaqcitgfchwuosuofdjabzqaaic features: dynamic_refresh: true per_profile: true diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Extensions/ExtensionInstallCloudPolicyChecksEnabled.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Extensions/ExtensionInstallCloudPolicyChecksEnabled.yaml index b4feacde..7ed60fde 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Extensions/ExtensionInstallCloudPolicyChecksEnabled.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Extensions/ExtensionInstallCloudPolicyChecksEnabled.yaml @@ -22,6 +22,7 @@ features: cloud_only: true dynamic_refresh: true per_profile: true + internal_only: true items: - caption: Validate whether an extension can be installed or not with a cloud service. value: true @@ -33,8 +34,8 @@ owners: - file://extensions/OWNERS schema: type: boolean -future_on: -- chrome.* -- chrome_os +supported_on: +- chrome.*:142- +- chrome_os:142- type: main tags: [] diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/GenerativeAI/GeminiActOnWebSettings.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/GenerativeAI/GeminiActOnWebSettings.yaml new file mode 100755 index 00000000..6a3d43df --- /dev/null +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/GenerativeAI/GeminiActOnWebSettings.yaml @@ -0,0 +1,38 @@ +caption: Allows Gemini app integrations to directly act on web pages +desc: |- + Controls if the Gemini app is allowed to take action on the web pages on behalf of the user. + + 0/unset = Gemini app is allowed to take action on the web pages. + + 1 = Gemini app is not allowed to take action on the web pages. + + This policy has no effect when the Gemini app is disabled. For example, the Gemini app can be disabled by GeminiSettings policy. + + For more information on Gemini in Chrome, please see https://support.google.com/chrome/a/answer/16291696. + + Gemini's actuation is not available in all countries or all languages. Setting this policy does not guarantee the feature will be enabled; it remains subject to availability. For more info on the roll-out, check the Enterprise Release Notes: https://support.google.com/chrome/a/answer/7679408?hl=en + +owners: +- liuwilliam@chromium.org +- file://chrome/browser/glic/OWNERS +example_value: 0 +features: + dynamic_refresh: true + per_profile: true +type: int-enum +schema: + type: integer + enum: + - 0 + - 1 +items: +- caption: Allow the Gemini app to take action on the web pages. + name: Enabled + value: 0 +- caption: Disallow the Gemini app to take action on the web pages. + name: Disabled + value: 1 +default: 0 +supported_on: +- chrome.*:143- +tags: [] \ No newline at end of file diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/BookmarkBarEnabled.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/BookmarkBarEnabled.yaml index cc763755..323662a7 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/BookmarkBarEnabled.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/BookmarkBarEnabled.yaml @@ -10,6 +10,7 @@ features: dynamic_refresh: true per_profile: true future_on: +- android - fuchsia items: - caption: Enable bookmark bar diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/CacheEncryptionEnabled.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/CacheEncryptionEnabled.yaml index f9f38ac3..5c72c994 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/CacheEncryptionEnabled.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/CacheEncryptionEnabled.yaml @@ -1,12 +1,10 @@ caption: This policy allows administrators to encrypt http cache on disk. desc: |- This policy allows the administrators to encrypt browser http cache on disk. - http cache on supported platforms. When this policy is Enabled, browser cache will be encrypted. - When this policy is Disabled or not set, browser cache - will not be encrypted. + When this policy is Disabled or not set, browser cache will not be encrypted. Browser cache encryption may result in a performance impact. owners: @@ -15,6 +13,8 @@ owners: - cbe-cep-eng@google.com future_on: - chrome.* +- chrome_os +- android features: dynamic_refresh: true per_profile: true diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/DisableScreenshots.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/DisableScreenshots.yaml index d2ddc5d3..e7023c72 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/DisableScreenshots.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/DisableScreenshots.yaml @@ -25,5 +25,6 @@ schema: supported_on: - chrome_os:22- - chrome.*:22- +- android:143- tags: [] type: main diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/FeedbackSurveysEnabled.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/FeedbackSurveysEnabled.yaml index 8e857a74..41b9978e 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/FeedbackSurveysEnabled.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/FeedbackSurveysEnabled.yaml @@ -1,5 +1,5 @@ owners: -- fjacky@chromium.org +- msramek@chromium.org - permissions-core@google.com - file://components/policy/OWNERS caption: Specifies whether in-product $1Google Chrome surveys are shown to users. diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/NTPShortcuts.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/NTPShortcuts.yaml index 8e43b852..3501d690 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/NTPShortcuts.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/NTPShortcuts.yaml @@ -1,10 +1,8 @@ -caption: Setting shortcuts on the New Tab Page (Beta) +caption: Setting shortcuts on the New Tab Page desc: |- - In development: for early preview only. - Setting the policy pre-configures up to 10 custom shortcuts on the $1Google Chrome New Tab page. - If set, users will see these shortcuts by default and users can toggle between “My shortcuts," "Most visited sites" or "My organization's shortcuts" on the "Customize Chrome" panel. If empty or unset, the user will only be able to toggle between “My shortcuts" or "Most visited sites" on the "Customize Chrome" panel. + If set, users will see these shortcuts by default, in addition to their personal shortcuts. Users can control visibility of their organization's shortcuts on the "Customize Chrome" panel. Shortcut URLs must be unique. diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/ProvisionManagedClientCertificateForBrowser.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/ProvisionManagedClientCertificateForBrowser.yaml index 2c7011fd..3614cc21 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/ProvisionManagedClientCertificateForBrowser.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/ProvisionManagedClientCertificateForBrowser.yaml @@ -10,8 +10,7 @@ desc: |- supported_on: - chrome.*:136- -future_on: -- android +- android:143- features: dynamic_refresh: true per_profile: false diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/ProvisionManagedClientCertificateForUser.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/ProvisionManagedClientCertificateForUser.yaml index b22d5c85..3afa09eb 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/ProvisionManagedClientCertificateForUser.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/ProvisionManagedClientCertificateForUser.yaml @@ -11,8 +11,7 @@ supported_on: - chrome.win:126- - chrome.mac:126- - chrome.linux:128- -future_on: -- android +- android:143- features: dynamic_refresh: true per_profile: true diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/SilentPrintingEnabled.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/SilentPrintingEnabled.yaml index d6b4ea56..9b9935ca 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/SilentPrintingEnabled.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/SilentPrintingEnabled.yaml @@ -26,5 +26,6 @@ schema: type: boolean future_on: - chrome_os +- chrome.* tags: [] type: main diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/SystemFeaturesDisableList.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/SystemFeaturesDisableList.yaml index 2e9b6ad1..24f51287 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/SystemFeaturesDisableList.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/SystemFeaturesDisableList.yaml @@ -98,6 +98,9 @@ items: - caption: Text Editor (supported since version 136) name: text_editor value: text_editor +- caption: Vids (supported since version 143) + name: vids + value: vids owners: - file://components/policy/OWNERS - ayaelattar@chromium.org @@ -130,6 +133,7 @@ schema: - google_maps - calculator - text_editor + - vids type: string type: array supported_on: diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Proxy/ProxyOverrideRules.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Proxy/ProxyOverrideRules.yaml new file mode 100755 index 00000000..7255cfdd --- /dev/null +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Proxy/ProxyOverrideRules.yaml @@ -0,0 +1,72 @@ +caption: Proxy override rules +desc: |- + Setting this policy configures rules that select what proxy the browser uses depending on the destination's URL and other conditions. This policy will take precedence over proxy settings set from the ProxySettings policy, the chrome.proxy extension API or manual user settings if any is set. + + Leaving the policy unset has no effect on other proxy policies or user settings. + + When the browser needs to decide what proxy to use, entries of the ProxyOverrideRules policy are evaluated in sequence until an entry has a match for at least one of the URL hosts in DestinationMatchers and if all entries in Conditions are met. The value in ProxyChain will be used as a proxy for such a match. If no match is found, proxy settings will fall back to what is set in the ProxySettings policy. + + The ProxyChain field entries correspond to string values of PAC files such as: + * DIRECT + * PROXY host:port + * HTTPS host:port + The first reachable entry will be used as a proxy. + + The Conditions field contains a list of conditions that must all be met for its override rule to be used to decide the proxy to use. If it is left unset, the entry will be used as long as at least one host in DestinationMatchers is matched. + + The DnsProbe condition checks if the provided DNS Host is able to resolve to an IP address. If the value of Result is "resolves" then the condition is considered as met. If the value is instead set to not_found, then the condition is considered met if the resolution failed. + +example_value: +- DestinationMatchers: + - 'https://some.app.com' + - 'https://other.app.org' + ProxyChain: + - 'HTTPS proxy.app:443' + - 'DIRECT' + Conditions: + - DnsProbe: + Host: 'corp.ads' + Result: "resolves" +features: + cloud_only: true + dynamic_refresh: true + per_profile: true +future_on: +- chrome.* +- chrome_os +- android +owners: +- seblalancette@chromium.org +- domfc@chromium.org +- cbe-eng@google.com +schema: + type: array + items: + type: object + properties: + DestinationMatchers: + type: array + items: + type: string + ProxyChain: + type: array + items: + type: string + Conditions: + type: array + items: + type: object + properties: + DnsProbe: + type: object + properties: + Host: + type: string + Result: + type: string + enum: + - resolves + - not_found +type: dict +tags: +- system-security diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Signin/LocalAuthFactorsComplexity.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Signin/LocalAuthFactorsComplexity.yaml new file mode 100755 index 00000000..6cfae3e8 --- /dev/null +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Signin/LocalAuthFactorsComplexity.yaml @@ -0,0 +1,54 @@ +owners: +- ghostbusters@google.com + +caption: Set minimum complexity for local PINs and passwords + +desc: |- + This policy configures the minimum complexity requirements for local authentication factors (PINs and local passwords) set by users on $2Google ChromeOS. + + If this policy is not set, default to complexity level None. + + This policy's requirements are enforced when a user sets up a new local PIN/password or changes an existing one. + + The complexity levels are based on Android's password quality metrics (https://developers.google.com/android/management/reference/rest/v1/PasswordRequirements), adapted for $2Google ChromeOS: + - 1 = None: A PIN/password is required, but there are no restrictions on its content or length. + - 2 = Low: Basic complexity requirements. + - 3 = Medium: Stricter length and character-type requirements. + - 4 = High: Strongest complexity requirements, demanding multiple character types. + + See the help center article for detailed explanations of what each level entails for both PINs and passwords. + +future_on: +- chrome_os + +features: + dynamic_refresh: true + per_profile: true + +type: int-enum + +schema: + type: integer + enum: + - 1 + - 2 + - 3 + - 4 + +items: +- caption: No Complexity + name: None + value: 1 +- caption: Low Complexity + name: Low + value: 2 +- caption: Medium Complexity + name: Medium + value: 3 +- caption: High Complexity + name: High + value: 4 + +default: 1 +example_value: 1 +tags: [] 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 b014cd48..4c901b77 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 @@ -87,6 +87,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/gpu/gpu_process_host.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" @@ -98,6 +99,7 @@ #include "content/browser/preloading/prefetch/prefetch_type.h" #include "content/browser/preloading/preloading.h" #include "content/browser/preloading/prerender/prerender_final_status.h" +#include "content/browser/preloading/prerender/prerender_handle_impl.h" #include "content/browser/preloading/prerender/prerender_host_registry.h" #include "content/browser/preloading/prerender/prerender_metrics.h" #include "content/browser/preloading/prerender/prerender_new_tab_handle.h" @@ -129,6 +131,7 @@ #include "content/browser/tpcd_heuristics/opener_heuristic_tab_helper.h" #include "content/browser/tpcd_heuristics/redirect_heuristic_tab_helper.h" #include "content/browser/wake_lock/wake_lock_context_host.h" +#include "content/browser/web_contents/file_chooser_impl.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" @@ -236,6 +239,7 @@ #if BUILDFLAG(IS_ANDROID) #include "base/android/device_info.h" +#include "base/android/scoped_service_binding_batch.h" #include "base/check.h" #include "content/browser/android/java_interfaces_impl.h" #include "content/browser/android/nfc_host.h" @@ -718,7 +722,7 @@ void RecordRendererUnresponsiveMetrics( "Renderer.Unresponsive.PageVisible.RenderProcessHostPriority", rph_priority); - bool widget_visible = !render_widget_host->is_hidden(); + bool widget_visible = !render_widget_host->IsHidden(); base::UmaHistogramBoolean( "Renderer.Unresponsive.PageVisible.WidgetVisibility", widget_visible); @@ -1724,20 +1728,6 @@ WebContentsImpl* WebContentsImpl::FromOuterFrameTreeNode( ->node_.GetInnerWebContentsInFrame(frame_tree_node); } -bool WebContentsImpl::OnMessageReceived(RenderFrameHostImpl* render_frame_host, - const IPC::Message& message) { - OPTIONAL_TRACE_EVENT1("content", "WebContentsImpl::OnMessageReceived", - "render_frame_host", render_frame_host); - - for (auto& observer : observers_.observer_list()) { - if (observer.OnMessageReceived(message, render_frame_host)) { - return true; - } - } - - return false; -} - std::string WebContentsImpl::GetTitleForMediaControls() { OPTIONAL_TRACE_EVENT0("content", "WebContentsImpl::GetTitleForMediaControls"); @@ -2047,6 +2037,14 @@ std::vector WebContentsImpl::GetOutermostMainFrames() { return result; } +#if BUILDFLAG(IS_MAC) && BUILDFLAG(USE_EXTERNAL_POPUP_MENU) +void WebContentsImpl::DecrementForbidExternalPopupMenus() { + DCHECK_GE(external_popup_menus_forbid_counter_, 1); + external_popup_menus_forbid_counter_--; + NotifyPreferencesChanged(); +} +#endif // BUILDFLAG(IS_MAC) && BUILDFLAG(USE_EXTERNAL_POPUP_MENU) + void WebContentsImpl::ExecutePageBroadcastMethod( PageBroadcastMethodCallback callback) { OPTIONAL_TRACE_EVENT0("content", @@ -2735,6 +2733,17 @@ bool WebContentsImpl::IsBeingVisiblyCaptured() { return visible_capturer_count_ > 0; } +#if BUILDFLAG(IS_MAC) && BUILDFLAG(USE_EXTERNAL_POPUP_MENU) +base::ScopedClosureRunner WebContentsImpl::ForbidExternalPopupMenus() { + // Disable external popups when forbidden, and re-enable them after. + external_popup_menus_forbid_counter_++; + NotifyPreferencesChanged(); + return base::ScopedClosureRunner( + base::BindOnce(&WebContentsImpl::DecrementForbidExternalPopupMenus, + weak_factory_.GetWeakPtr())); +} +#endif // BUILDFLAG(IS_MAC) && BUILDFLAG(USE_EXTERNAL_POPUP_MENU) + bool WebContentsImpl::IsAudioMuted() { return audio_stream_factory_ && audio_stream_factory_->IsMuted(); } @@ -3038,7 +3047,8 @@ base::TimeTicks WebContentsImpl::GetLastInteractionTimeTicks() { } WebContents::ScopedIgnoreInputEvents WebContentsImpl::IgnoreInputEvents( - std::optional audit_callback) { + std::optional audit_callback, + bool should_ignore_a11y_input) { OPTIONAL_TRACE_EVENT0("content", "WebContentsImpl::IgnoreInputEvents"); uint64_t callback_id = 0; @@ -3061,18 +3071,22 @@ WebContents::ScopedIgnoreInputEvents WebContentsImpl::IgnoreInputEvents( } #endif ++ignore_input_events_count_; + if (should_ignore_a11y_input) { + ++ignore_a11y_input_count_; + } } // Bind weakly, since the token might outlive us. return ScopedIgnoreInputEvents(base::BindOnce( - [](base::WeakPtr wc, + [](base::WeakPtr wc, bool should_ignore_a11y_input, std::optional callback_id) { if (wc) { OPTIONAL_TRACE_EVENT0("content", "WebContentsImpl::IgnoreInputEvents.Release"); if (callback_id.has_value()) { - CHECK(wc->web_input_event_audit_callbacks_.contains(*callback_id)); - wc->web_input_event_audit_callbacks_.erase(*callback_id); + auto it = wc->web_input_event_audit_callbacks_.find(*callback_id); + CHECK(it != wc->web_input_event_audit_callbacks_.end()); + wc->web_input_event_audit_callbacks_.erase(it); } else { #if BUILDFLAG(IS_ANDROID) // Reset gesture detection so that we don't continue to generate new @@ -3091,10 +3105,13 @@ WebContents::ScopedIgnoreInputEvents WebContentsImpl::IgnoreInputEvents( } #endif --wc->ignore_input_events_count_; + if (should_ignore_a11y_input) { + --wc->ignore_a11y_input_count_; + } } } }, - weak_factory_.GetWeakPtr(), + weak_factory_.GetWeakPtr(), should_ignore_a11y_input, audit_callback.has_value() ? std::make_optional(callback_id) : std::nullopt)); } @@ -3103,6 +3120,10 @@ bool WebContentsImpl::ShouldIgnoreInputEventsForTesting() { return ShouldIgnoreInputEvents(); } +bool WebContentsImpl::ShouldIgnoreA11yInputEventsForTesting() { + return ShouldIgnoreA11yInputEvents(); +} + bool WebContentsImpl::HasActiveEffectivelyFullscreenVideo() { return IsFullscreen() && media_web_contents_observer_->HasActiveEffectivelyFullscreenVideo(); @@ -3149,6 +3170,10 @@ void WebContentsImpl::SetPrimaryPageImportance( "IsPerceptibleImportanceSupported() is false"; CHECK(main_frame_importance >= subframe_importance); + // Batch service binding updates for the renderer processes of the main frame + // and the subframes. + base::android::ScopedServiceBindingBatch scoped_service_binding_batch; + if (base::FeatureList::IsEnabled(features::kSubframeImportance)) { CHECK( base::FeatureList::IsEnabled(features::kSubframePriorityContribution)); @@ -3297,6 +3322,11 @@ void WebContentsImpl::AttachInnerWebContentsImpl( inner_render_manager->current_frame_host(); RenderViewHostImpl* inner_render_view_host = inner_main_frame->render_view_host(); + RenderFrameHostImpl* inner_speculative_frame = + inner_render_manager->speculative_frame_host(); + RenderViewHostImpl* inner_speculative_render_view_host = + inner_speculative_frame ? inner_speculative_frame->render_view_host() + : nullptr; auto* outer_render_manager = render_frame_host_impl->frame_tree_node()->render_manager(); @@ -3321,6 +3351,16 @@ void WebContentsImpl::AttachInnerWebContentsImpl( prev_rwhv->Destroy(); } } + // Do the same for speculative render frame host's view. + if (inner_speculative_frame) { + RenderWidgetHostViewBase* prev_speculative_rwhv = + static_cast( + inner_speculative_frame->GetView()); + if (prev_speculative_rwhv && + !prev_speculative_rwhv->IsRenderWidgetHostViewChildFrame()) { + prev_speculative_rwhv->Destroy(); + } + } // When the WebContents being initialized has not already navigated, the // browser side Render{View,Frame}Host must be initialized and the @@ -3335,6 +3375,20 @@ void WebContentsImpl::AttachInnerWebContentsImpl( inner_web_contents_impl->CreateRenderWidgetHostViewForRenderManager( inner_render_view_host); } + // Do the same for speculative render frame host. + if (inner_speculative_render_view_host) { + inner_render_manager->InitRenderView( + inner_speculative_frame->GetSiteInstance()->group(), + inner_speculative_render_view_host, + /*proxy=*/nullptr, /*navigation_metrics_token=*/std::nullopt); + RenderWidgetHostViewBase* speculative_rwhv = + static_cast( + inner_speculative_frame->GetView()); + if (!speculative_rwhv) { + inner_web_contents_impl->CreateRenderWidgetHostViewForRenderManager( + inner_speculative_render_view_host); + } + } inner_web_contents_impl->RecursivelyUnregisterRenderWidgetHostViews(); @@ -3898,6 +3952,11 @@ const blink::web_pref::WebPreferences WebContentsImpl::ComputeWebPreferences( #endif // BUILDFLAG(IS_ANDROID) +#if BUILDFLAG(IS_MAC) && BUILDFLAG(USE_EXTERNAL_POPUP_MENU) + prefs.should_disable_external_popups = + external_popup_menus_forbid_counter_ != 0; +#endif // BUILDFLAG(IS_MAC) && BUILDFLAG(USE_EXTERNAL_POPUP_MENU) + GetContentClient()->browser()->OverrideWebPreferences( this, *main_frame->GetSiteInstance(), &prefs); return prefs; @@ -3920,13 +3979,11 @@ void WebContentsImpl::OnWebPreferencesChanged() { (force_enable_zoom_ != web_preferences_->force_enable_zoom); force_enable_zoom_ = web_preferences_->force_enable_zoom; if (force_enable_zoom_changed) { - std::vector frame_sink_ids; for (FrameTreeNode* node : primary_frame_tree_.Nodes()) { RenderFrameHostImpl* rfh = node->current_frame_host(); if (rfh->is_local_root()) { if (auto* rwh = rfh->GetRenderWidgetHost()) { rwh->SetForceEnableZoom(force_enable_zoom_); - frame_sink_ids.push_back(rwh->GetFrameSinkId()); } } } @@ -4738,8 +4795,8 @@ void WebContentsImpl::FullscreenStateChanged( delegate_->FullscreenStateChangedForTab(rfh, *options); } - if (!base::Contains(fullscreen_frames_, rfh)) { - fullscreen_frames_.insert(rfh); + if (bool was_inserted = fullscreen_frames_.insert(rfh).second; + was_inserted) { FullscreenFrameSetUpdated(); } return; @@ -7320,15 +7377,29 @@ void WebContentsImpl::ReadyToCommitNavigation( NavigationHandle* navigation_handle) { TRACE_EVENT1("navigation", "WebContentsImpl::ReadyToCommitNavigation", "navigation_handle", navigation_handle); + CHECK(!navigation_handle->IsSameDocument()); // Cross-document navigation of the top-level frame resets the capture // handle config. Using IsInPrimaryMainFrame is valid here since the browser // caches this state for the active main frame only. - if (!navigation_handle->IsSameDocument() && - navigation_handle->IsInPrimaryMainFrame()) { + if (navigation_handle->IsInPrimaryMainFrame()) { SetCaptureHandleConfig(blink::mojom::CaptureHandleConfig::New()); } + // Notify the OS that the workload is about to increase for main frame + // navigations only. This a trade off between latency and power - we don't + // want to do it for every navigation. + if (navigation_handle->IsInMainFrame()) { + auto* gpu_process_host = + GpuProcessHost::Get(GPU_PROCESS_KIND_SANDBOXED, /*force_create=*/false); + if (gpu_process_host) { + auto* host = gpu_process_host->gpu_host(); + if (host) { + host->NotifyWorkloadIncrease(); + } + } + } + observers_.NotifyObservers(&WebContentsObserver::ReadyToCommitNavigation, navigation_handle); @@ -7352,10 +7423,6 @@ void WebContentsImpl::ReadyToCommitNavigation( navigation_handle->GetURL()); } - if (navigation_handle->IsSameDocument()) { - return; - } - // SSLInfo is not needed on subframe navigations since the main-frame // certificate is the only one that can be inspected (using the info // bubble) without refreshing the page with DevTools open. @@ -9038,11 +9105,11 @@ double WebContentsImpl::GetPendingZoomLevel(RenderWidgetHostImpl* rwh) { } #if BUILDFLAG(IS_ANDROID) return HostZoomMapForRenderFrameHost(rfh) - ->GetZoomLevelForHostAndSchemeAndroid(url.scheme(), + ->GetZoomLevelForHostAndSchemeAndroid(url.GetScheme(), net::GetHostOrSpecFromURL(url)); #else return HostZoomMapForRenderFrameHost(rfh)->GetZoomLevelForHostAndScheme( - url.scheme(), net::GetHostOrSpecFromURL(url)); + url.GetScheme(), net::GetHostOrSpecFromURL(url)); #endif } @@ -10200,6 +10267,17 @@ bool WebContentsImpl::ShouldIgnoreInputEvents() { return web_contents->ShouldIgnoreInputEvents(); } +bool WebContentsImpl::ShouldIgnoreA11yInputEvents() { + if (ignore_a11y_input_count_ > 0) { + return true; + } + WebContentsImpl* web_contents = GetOuterWebContents(); + if (!web_contents) { + return false; + } + return web_contents->ShouldIgnoreA11yInputEvents(); +} + void WebContentsImpl::FocusOwningWebContents( RenderWidgetHostImpl* render_widget_host) { OPTIONAL_TRACE_EVENT1("content", "WebContentsImpl::FocusOwningWebContents", @@ -11319,8 +11397,11 @@ int WebContentsImpl::GetCurrentlyPlayingVideoCount() const { std::optional WebContentsImpl::GetFullscreenVideoSize() { std::optional id = media_web_contents_observer_->GetFullscreenVideoMediaPlayerId(); - if (id && base::Contains(cached_video_sizes_, id.value())) { - return std::optional(cached_video_sizes_[id.value()]); + if (id) { + if (auto it = cached_video_sizes_.find(id.value()); + it != cached_video_sizes_.end()) { + return std::optional(it->second); + } } return std::nullopt; } @@ -11796,6 +11877,10 @@ void WebContentsImpl::NotifyPageBecamePrimary(PageImpl& page) { save_package_->ClearPage(); save_package_.reset(); } + + // Sync draggable regions. + SetSupportsDraggableRegions(supports_draggable_regions_); + observers_.NotifyObservers(&WebContentsObserver::PrimaryPageChanged, page); } @@ -11926,6 +12011,17 @@ void WebContentsImpl::UpdateBrowserControlsState( offset_tag_modifications); } +void WebContentsImpl::SetSupportsDraggableRegions( + bool supports_draggable_regions) { + supports_draggable_regions_ = supports_draggable_regions; + ExecutePageBroadcastMethod( + [supports_draggable_regions](RenderViewHostImpl* rvh) { + if (auto& broadcast = rvh->GetAssociatedPageBroadcast()) { + broadcast->SetSupportsDraggableRegions(supports_draggable_regions); + } + }); +} + void WebContentsImpl::SetV8CompileHints(base::ReadOnlySharedMemoryRegion data) { GetPrimaryMainFrame()->GetAssociatedLocalMainFrame()->SetV8CompileHints( std::move(data)); @@ -12061,7 +12157,7 @@ std::unique_ptr WebContentsImpl::StartPrerendering( no_vary_search_hint, /*initiator_render_frame_host=*/nullptr, GetWeakPtr(), page_transition, should_warm_up_compositor, should_prepare_paint_tree, - /*should_pause_javascript_execution=*/false, + blink::mojom::SpeculationAction::kPrerender, std::move(url_match_predicate), std::move(prerender_navigation_handle_callback), base::WrapRefCounted( diff --git a/tools/under-control/src/content/child/runtime_features.cc b/tools/under-control/src/content/child/runtime_features.cc index ea1c36e8..49f75c34 100755 --- a/tools/under-control/src/content/child/runtime_features.cc +++ b/tools/under-control/src/content/child/runtime_features.cc @@ -18,6 +18,7 @@ #include "build/build_config.h" #include "cc/base/features.h" #include "components/attribution_reporting/features.h" +#include "components/content_settings/core/common/features.h" #include "content/common/content_navigation_policy.h" #include "content/common/content_switches_internal.h" #include "content/common/features.h" @@ -220,6 +221,8 @@ void SetRuntimeFeaturesFromChromiumFeatures() { raw_ref(features::kFedCmLightweightMode), kDefault}, {wf::EnableFedCmErrorAttribute, raw_ref(features::kFedCmErrorAttribute), kDefault}, + {wf::EnableFedCmNonStringToken, + raw_ref(features::kFedCmNonStringToken), kDefault}, {wf::EnableGamepadMultitouch, raw_ref(features::kEnableGamepadMultitouch)}, {wf::EnableSharedStorageAPI, @@ -250,13 +253,9 @@ void SetRuntimeFeaturesFromChromiumFeatures() { {wf::EnableInstalledApp, raw_ref(features::kInstalledApp)}, {wf::EnableIntegrityPolicyScript, raw_ref(network::features::kIntegrityPolicyScript)}, - {wf::EnableLazyInitializeMediaControls, - raw_ref(features::kLazyInitializeMediaControls)}, #if BUILDFLAG(IS_CHROMEOS) {wf::EnableLockedMode, raw_ref(blink::features::kLockedMode)}, #endif - {wf::EnableMediaCastOverlayButton, - raw_ref(media::kMediaCastOverlayButton)}, {wf::EnableMediaEngagementBypassAutoplayPolicies, raw_ref(media::kMediaEngagementBypassAutoplayPolicies)}, {wf::EnablePaymentApp, raw_ref(features::kServiceWorkerPaymentApps)}, @@ -302,20 +301,20 @@ void SetRuntimeFeaturesFromChromiumFeatures() { {wf::EnableWebXR, raw_ref(features::kWebXr)}, #if BUILDFLAG(ENABLE_VR) {wf::EnableWebXRFrontFacing, - raw_ref(device::features::kWebXrIncubations)}, + raw_ref(device::features::kWebXRIncubations)}, {wf::EnableWebXRFrameRate, - raw_ref(device::features::kWebXrIncubations)}, + raw_ref(device::features::kWebXRIncubations)}, {wf::EnableWebXRGPUBinding, - raw_ref(device::features::kWebXrWebGpuBinding)}, + raw_ref(device::features::kWebXRWebGPUBinding)}, {wf::EnableWebXRImageTracking, - raw_ref(device::features::kWebXrIncubations)}, - {wf::EnableWebXRLayers, raw_ref(device::features::kWebXrLayers)}, + raw_ref(device::features::kWebXRIncubations)}, + {wf::EnableWebXRLayers, raw_ref(device::features::kWebXRLayers)}, {wf::EnableWebXRPlaneDetection, - raw_ref(device::features::kWebXrIncubations)}, + raw_ref(device::features::kWebXRIncubations)}, {wf::EnableWebXRPoseMotionData, - raw_ref(device::features::kWebXrIncubations)}, + raw_ref(device::features::kWebXRIncubations)}, {wf::EnableWebXRSpecParity, - raw_ref(device::features::kWebXrIncubations)}, + raw_ref(device::features::kWebXRIncubations)}, #endif {wf::EnablePermissions, raw_ref(features::kWebPermissionsApi), kSetOnlyIfOverridden}, @@ -349,6 +348,9 @@ void SetRuntimeFeaturesFromChromiumFeatures() { kSetOnlyIfOverridden}, {"AttributionReporting", raw_ref(features::kPrivacySandboxAdsAPIsM1Override)}, + {"ApproximateGeolocationPermission", + raw_ref( + content_settings::features::kApproximateGeolocationPermission)}, {"AndroidDownloadableFontsMatching", raw_ref(features::kAndroidDownloadableFontsMatching)}, #if BUILDFLAG(IS_ANDROID) 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 68bafbcd..ce566b12 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 @@ -61,6 +61,7 @@ #include "media/audio/audio_manager.h" #include "media/capture/content/screen_enumerator.h" #include "media/mojo/mojom/media_service.mojom.h" +#include "media/mojo/mojom/speech_recognizer.mojom.h" #include "mojo/public/cpp/bindings/message.h" #include "net/base/isolation_info.h" #include "net/cookies/cookie_setting_override.h" @@ -96,6 +97,7 @@ #include "url/origin.h" #if BUILDFLAG(IS_ANDROID) +#include "content/browser/renderer_host/navigation_transitions/navigation_transition_config.h" #include "content/public/browser/tts_environment_android.h" #else #include "content/public/browser/authenticator_request_client_delegate.h" @@ -410,6 +412,12 @@ bool ContentBrowserClient::ShouldUrlUseApplicationIsolationLevel( return false; } +#if !BUILDFLAG(IS_ANDROID) +bool ContentBrowserClient::IsInitialWebUIScheme(const GURL& url) { + return false; +} +#endif // !BUILDFLAG(IS_ANDROID) + bool ContentBrowserClient::IsIsolatedContextAllowedForUrl( BrowserContext* browser_context, const GURL& lock_url) { @@ -887,6 +895,18 @@ ContentBrowserClient::CreateSpeechRecognitionManagerDelegate() { return nullptr; } +std::unique_ptr +ContentBrowserClient::CreateModelBrokerClient(BrowserContext* browser_context) { + return nullptr; +} + +media::mojom::AvailabilityStatus +ContentBrowserClient::GetOnDeviceSpeechRecognitionAvailabilityStatus( + BrowserContext* context, + const std::string& language) { + return media::mojom::AvailabilityStatus::kUnavailable; +} + #if BUILDFLAG(IS_CHROMEOS) TtsControllerDelegate* ContentBrowserClient::GetTtsControllerDelegate() { return nullptr; @@ -923,6 +943,10 @@ base::FilePath ContentBrowserClient::GetGraphiteDawnDiskCacheDirectory() { return base::FilePath(); } +base::FilePath ContentBrowserClient::GetGPUPersistentCacheDirectory() { + return base::FilePath(); +} + base::FilePath ContentBrowserClient::GetNetLogDefaultDirectory() { return base::FilePath(); } @@ -1538,6 +1562,14 @@ void ContentBrowserClient::ReportLegacyTechEvent( uint64_t column, std::optional cookie_issue_details) {} +std::optional +ContentBrowserClient::MaybeOverrideSourceURLForClipboardAccess( + RenderFrameHost* render_frame_host, + const GURL& original_url) { + DCHECK(render_frame_host); + return std::nullopt; +} + bool ContentBrowserClient::IsClipboardPasteAllowed( content::RenderFrameHost* render_frame_host) { return true; @@ -1760,11 +1792,21 @@ bool ContentBrowserClient:: return true; } +bool ContentBrowserClient::IsFileSystemAccessApiFilePickerAllowed( + WebContents* web_contents) { + return true; +} + bool ContentBrowserClient::ShouldUseFirstPartyStorageKey( const url::Origin& origin) { return false; } +bool ContentBrowserClient::ShouldSkipBeforeUnloadDialog( + content::RenderFrameHost* rfh) { + return false; +} + std::unique_ptr ContentBrowserClient::CreateResponsivenessCalculatorDelegate() { return nullptr; @@ -1981,4 +2023,19 @@ bool ContentBrowserClient::UsePreloadServingMetrics() { return false; } +#if !BUILDFLAG(IS_ANDROID) +bool ContentBrowserClient::ShouldDisallowCredentialRequest( + WebContents* web_contents) { + return false; +} +#endif // !BUILDFLAG(IS_ANDROID) + +bool ContentBrowserClient::ShouldAnimateBackForwardTransitions() { +#if BUILDFLAG(IS_ANDROID) + return NavigationTransitionConfig::SupportsBackForwardTransitions({}); +#else + return false; +#endif +} + } // namespace content diff --git a/tools/under-control/src/extensions/common/api/chrome_url_overrides.idl b/tools/under-control/src/extensions/common/api/chrome_url_overrides.idl index f6cdf569..94246b77 100755 --- a/tools/under-control/src/extensions/common/api/chrome_url_overrides.idl +++ b/tools/under-control/src/extensions/common/api/chrome_url_overrides.idl @@ -14,8 +14,8 @@ namespace chrome_url_overrides { // Override for the chrome://history page. DOMString? history; - [nodoc, platforms=("chromeos")] DOMString? activationmessage; - [nodoc, platforms=("chromeos")] DOMString? keyboard; + [nodoc] DOMString? activationmessage; + [nodoc] DOMString? keyboard; }; dictionary ManifestKeys { diff --git a/tools/under-control/src/extensions/common/api/declarative_net_request.idl b/tools/under-control/src/extensions/common/api/declarative_net_request.idl index 668d9626..4f3f780a 100755 --- a/tools/under-control/src/extensions/common/api/declarative_net_request.idl +++ b/tools/under-control/src/extensions/common/api/declarative_net_request.idl @@ -52,8 +52,9 @@ namespace declarativeNetRequest { // This describes the possible operations for a "modifyHeaders" rule. enum HeaderOperation { - // Adds a new entry for the specified header. This operation is not - // supported for request headers. + // Adds a new entry for the specified header. When modifying the headers of + // a request, this operation is only supported for + // specific headers. append, // Sets a new value for the specified header, removing any existing headers // with the same name. diff --git a/tools/under-control/src/services/network/network_context.cc b/tools/under-control/src/services/network/network_context.cc index ec828e8f..71cef856 100755 --- a/tools/under-control/src/services/network/network_context.cc +++ b/tools/under-control/src/services/network/network_context.cc @@ -831,7 +831,8 @@ NetworkContext::NetworkContext( } device_bound_session_manager_ = DeviceBoundSessionManager::Create( - url_request_context_->device_bound_session_service()); + url_request_context_->device_bound_session_service(), + cookie_manager_.get()); } NetworkContext::NetworkContext( @@ -1993,7 +1994,10 @@ void NetworkContext::CreateWebTransport( std::vector fingerprints, const std::vector& application_protocols, mojo::PendingRemote - pending_handshake_client) { + pending_handshake_client, + mojo::PendingRemote + url_loader_network_observer, + mojom::ClientSecurityStatePtr client_security_state) { if (!IsNetworkForNonceAndUrlAllowed( key.GetNonce().value_or(base::UnguessableToken::Null()), url)) { mojo::Remote remote_handshake_client( @@ -2004,7 +2008,9 @@ void NetworkContext::CreateWebTransport( } web_transports_.insert(std::make_unique( url, origin, key, fingerprints, application_protocols, this, - std::move(pending_handshake_client))); + std::move(pending_handshake_client), + std::move(url_loader_network_observer), + std::move(client_security_state))); } void NetworkContext::CreateNetLogExporter( @@ -2422,7 +2428,8 @@ void NetworkContext::PreconnectSockets( net::HttpNetworkSession* session = factory->GetSession(); net::HttpStreamFactory* http_stream_factory = session->http_stream_factory(); http_stream_factory->PreconnectStreams( - base::saturated_cast(num_streams), request_info); + base::saturated_cast(num_streams), request_info, + base::OnceClosure()); } #if BUILDFLAG(IS_P2P_ENABLED) @@ -2796,9 +2803,9 @@ URLRequestContextOwner NetworkContext::MakeURLRequestContext( } #if BUILDFLAG(IS_WIN) - if (params_->windows_system_proxy_resolver) { + if (params_->system_proxy_resolver) { builder.SetMojoWindowsSystemProxyResolver( - std::move(params_->windows_system_proxy_resolver)); + std::move(params_->system_proxy_resolver)); } #endif // BUILDFLAG(IS_WIN) @@ -2830,6 +2837,14 @@ URLRequestContextOwner NetworkContext::MakeURLRequestContext( params_->file_paths->no_vary_search_directory->path(); } cache_params.type = network_session_configurator::ChooseCacheType(); +#if BUILDFLAG(IS_WIN) + // For enterprise users, we always use simple backend when encryption is + // enabled. + if (params_->enable_encrypted_http_cache) { + cache_params.type = + net::URLRequestContextBuilder::HttpCacheParams::DISK_SIMPLE; + } +#endif if (params_->http_cache_file_operations_factory) { cache_params.file_operations_factory = base::MakeRefCounted( @@ -3156,7 +3171,12 @@ NetworkContext::MakeSessionCleanupCookieStore() const { crypto_delegate = std::make_unique( std::move(params_->cookie_encryption_provider)); } else { - crypto_delegate = cookie_config::GetCookieCryptoDelegate(); +#if !BUILDFLAG(IS_ANDROID) + // A cookie crypto delegate should not be created on Android to + // match the behavior of cookie_config::GetCookieCryptoDelegate(). + // See https://crbug.com/449652881 + NOTREACHED(); +#endif } } @@ -3239,7 +3259,7 @@ GURL NetworkContext::GetHSTSRedirectForPreconnect(const GURL& original_url) { // top-level navigation so we need to disallow HSTS upgrades for every // preconnect. if (!url_request_context_->transport_security_state()->ShouldUpgradeToSSL( - original_url.host(), /*is_top_level_nav=*/false)) { + original_url.GetHost(), /*is_top_level_nav=*/false)) { RecordHSTSPreconnectUpgradeReason( HSTSRedirectUpgradeReason::kNotUpgradedNoHSTSPin); return original_url; @@ -3263,6 +3283,14 @@ void NetworkContext::DestroySocketManager(P2PSocketManager* socket_manager) { void NetworkContext::CanUploadDomainReliability( const url::Origin& origin, base::OnceCallback callback) { + // If the NetworkContextClient hasn't been set yet or has disconnected for + // some reason, just return `false`. This could occur in the case of CCT for + // captive portal -- see crbug.com/446496025 for more details, do the similar + // check to CanSendSCTAuditingReport(). + if (!client_) { + std::move(callback).Run(false); + return; + } client_->OnCanSendDomainReliabilityUpload( origin, base::BindOnce([](base::OnceCallback callback, @@ -3548,6 +3576,34 @@ void NetworkContext::GetDeviceBoundSessionManager( } } +void NetworkContext::AddQuicHints( + const std::vector& origins, + const net::NetworkAnonymizationKey& network_anonymization_key) { + CHECK(url_request_context_); + + for (const auto& origin : origins) { + url::CanonHostInfo host_info; + std::string canonical_host( + net::CanonicalizeHost(origin.host(), &host_info)); + if (!host_info.IsIPAddress() && + !net::IsCanonicalizedHostCompliant(canonical_host)) { + LOG(ERROR) << "Invalid QUIC hint host: " << origin.host(); + continue; + } + + // The AlternativeService hostname can be used to signal a change of host. + // By passing in an empty host, the origin's host will be used. + net::AlternativeService alternative_service(net::NextProto::kProtoQUIC, "", + origin.port()); + + url::SchemeHostPort canonical_origin(url::kHttpsScheme, canonical_host, + origin.port()); + url_request_context_->http_server_properties()->SetQuicAlternativeService( + canonical_origin, network_anonymization_key, alternative_service, + base::Time::Max(), quic::ParsedQuicVersionVector()); + } +} + void NetworkContext::GetIpProxyStatus(GetIpProxyStatusCallback callback) { ip_protection::IpProxyStatus status = ip_protection::IpProxyStatus::kUnavailable; 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 64fc07ab..c135d4c5 100755 --- a/tools/under-control/src/testing/variations/fieldtrial_testing_config.json +++ b/tools/under-control/src/testing/variations/fieldtrial_testing_config.json @@ -13,8 +13,32 @@ { "name": "Enabled", "enable_features": [ - "AimServerEligibilityChangedNotification", - "AimServerEligibilityEnabledEn" + "AimServerEligibilityEnabled", + "AimServerEligibilityForPrimaryAccountEnabled" + ] + } + ] + } + ], + "AIMHintText": [ + { + "platforms": [ + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "ThreePerDayFifteenTotal", + "params": { + "AimHintImpressionLimitDaily": "3", + "AimHintImpressionLimitTotal": "15", + "EnableHintImpressionLimits": "true", + "HideAimHintTextOnNtpOpen": "false" + }, + "enable_features": [ + "AiModeOmniboxEntryPoint" ] } ] @@ -128,17 +152,20 @@ ] } ], - "AcceleratedVideoDecodeLinuxGL": [ + "AbslFlatMapInVariantMap": [ { "platforms": [ - "linux" + "android", + "chromeos", + "linux", + "windows", + "mac" ], "experiments": [ { "name": "Enabled", "enable_features": [ - "AcceleratedVideoDecodeLinuxGL", - "AcceleratedVideoDecodeLinuxZeroCopyGL" + "AbslFlatMapInVariantMap" ] } ] @@ -151,9 +178,13 @@ ], "experiments": [ { - "name": "Control", - "disable_features": [ - "AccessibilityDeprecateJavaNodecache" + "name": "OptimizeScrollDisableCache", + "params": { + "disable_cache": "true", + "optimize_scroll": "true" + }, + "enable_features": [ + "AccessibilityDeprecateJavaNodeCache" ] }, { @@ -175,13 +206,9 @@ ] }, { - "name": "OptimizeScrollDisableCache", - "params": { - "disable_cache": "true", - "optimize_scroll": "true" - }, - "enable_features": [ - "AccessibilityDeprecateJavaNodeCache" + "name": "Control", + "disable_features": [ + "AccessibilityDeprecateJavaNodecache" ] } ] @@ -217,7 +244,7 @@ ] } ], - "AccessibilityManifestV3AccessibilityCommon": [ + "AccessibilityManifestV3ChromeVox": [ { "platforms": [ "chromeos" @@ -226,7 +253,7 @@ { "name": "Enabled", "enable_features": [ - "AccessibilityManifestV3AccessibilityCommon" + "AccessibilityManifestV3ChromeVox" ] } ] @@ -368,6 +395,21 @@ ] } ], + "AccountRetrievalWaitsForRestoration": [ + { + "platforms": [ + "ios" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "AccountRetrievalWaitsForRestoration" + ] + } + ] + } + ], "AddSuggestStrongPasswordFromAddPassword": [ { "platforms": [ @@ -612,7 +654,8 @@ }, "enable_features": [ "AndroidAppearanceSettings", - "AndroidBookmarkBar" + "AndroidBookmarkBar", + "TopControlsRefactor" ] }, { @@ -622,7 +665,8 @@ }, "enable_features": [ "AndroidAppearanceSettings", - "AndroidBookmarkBar" + "AndroidBookmarkBar", + "TopControlsRefactor" ] } ] @@ -676,34 +720,16 @@ ] } ], - "AndroidComposeplate": [ + "AndroidComposeplateLFF": [ { "platforms": [ "android" ], "experiments": [ - { - "name": "EnabledV2", - "params": { - "v2_enabled": "true" - }, - "enable_features": [ - "AndroidComposeplate" - ] - }, { "name": "Enabled", "enable_features": [ - "AndroidComposeplate" - ] - }, - { - "name": "Enabled_HideIncognitoButton", - "params": { - "hide_incognito_button": "true" - }, - "enable_features": [ - "AndroidComposeplate" + "AndroidComposeplateLFF" ] } ] @@ -724,23 +750,6 @@ ] } ], - "AndroidDeviceContentFilters": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "AllowNonFamilyLinkUrlFilterMode", - "PropagateDeviceContentFiltersToSupervisedUser", - "SupervisedUserInterstitialWithoutApprovals" - ] - } - ] - } - ], "AndroidHatsNext": [ { "platforms": [ @@ -865,6 +874,36 @@ ] } ], + "AndroidPinnedTabsTabletTabStrip": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "AndroidPinnedTabsTabletTabStrip" + ] + } + ] + } + ], + "AndroidProgressBarVisualUpdate": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "AndroidProgressBarVisualUpdate" + ] + } + ] + } + ], "AndroidRaiseDisplayCriticalThreadPriority": [ { "platforms": [ @@ -900,6 +939,27 @@ ] } ], + "AndroidReaderModeImproveAppExperience": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "EnabledBothReadabilityDistillerAndTriggering", + "params": { + "show_cpa": "false", + "use_distiller": "true", + "use_heuristic": "false" + }, + "enable_features": [ + "ReaderModeDistillInApp", + "ReaderModeUseReadability" + ] + } + ] + } + ], "AndroidReaderModeImprovements": [ { "platforms": [ @@ -921,25 +981,6 @@ ] } ], - "AndroidReaderModeUseReadability": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "EnabledDistillerOnly", - "params": { - "use_distiller": "true", - "use_heuristic": "false" - }, - "enable_features": [ - "ReaderModeUseReadability" - ] - } - ] - } - ], "AndroidSandboxRendererProcessPolicy": [ { "platforms": [ @@ -957,6 +998,22 @@ ] } ], + "AndroidSmsOtpFilling": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "AndroidSmsOtpFilling", + "PasswordFormClientsideClassifier" + ] + } + ] + } + ], "AndroidSpareRendererCreation_V3": [ { "platforms": [ @@ -1060,59 +1117,6 @@ ] } ], - "AndroidThemeModule": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "AndroidProgressBarVisualUpdate", - "AndroidTabGroupsColorUpdateGM3", - "AndroidThemeModule", - "CpaSpecUpdate", - "GridTabSwitcherUpdate", - "TabletTabStripAnimation" - ] - }, - { - "name": "Enabled_M139", - "enable_features": [ - "AndroidProgressBarVisualUpdate", - "AndroidTabGroupsColorUpdateGM3", - "AndroidThemeModule", - "CpaSpecUpdate", - "GridTabSwitcherUpdate", - "TabletTabStripAnimation" - ] - }, - { - "name": "Enabled_GtsOnly", - "enable_features": [ - "AndroidThemeModule", - "GridTabSwitcherUpdate" - ] - } - ] - } - ], - "AndroidUseAdminsForEnterpriseInfo": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "AndroidUseAdminsForEnterpriseInfo" - ] - } - ] - } - ], "AndroidUseCorrectDisplayWorkArea": [ { "platforms": [ @@ -1239,6 +1243,21 @@ ] } ], + "AndroidZoomIndicator": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "AndroidZoomIndicator" + ] + } + ] + } + ], "AnimatedDefaultBrowserPromoInFRE": [ { "platforms": [ @@ -1290,6 +1309,25 @@ ] } ], + "AnimationTrigger": [ + { + "platforms": [ + "android", + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled_20250929", + "enable_features": [ + "AnimationTrigger" + ] + } + ] + } + ], "AnnotatedPageContentExtraction": [ { "platforms": [ @@ -2052,6 +2090,37 @@ ] } ], + "AutoRevokeSuspiciousNotification": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "EnabledLookback1d", + "params": { + "AutoRevokeSuspiciousNotificationEngagementScoreCutOff": "50.0", + "AutoRevokeSuspiciousNotificationLookBackPeriod": "1", + "AutoRevokeSuspiciousNotificationMinNotificationCount": "2" + }, + "enable_features": [ + "AutoRevokeSuspiciousNotification" + ] + }, + { + "name": "EnabledLookback7d", + "params": { + "AutoRevokeSuspiciousNotificationEngagementScoreCutOff": "50.0", + "AutoRevokeSuspiciousNotificationLookBackPeriod": "7", + "AutoRevokeSuspiciousNotificationMinNotificationCount": "4" + }, + "enable_features": [ + "AutoRevokeSuspiciousNotification" + ] + } + ] + } + ], "AutoSpeculationRules": [ { "platforms": [ @@ -2130,10 +2199,53 @@ ], "experiments": [ { - "name": "Enabled", + "name": "Enabled_20251023", "enable_features": [ "AutofillAddressSuggestionsOnTyping" ] + }, + { + "name": "EnabledHigherMinCharactersToShowSuggestions_20251023", + "params": { + "min_number_characters_to_match": "4" + }, + "enable_features": [ + "AutofillAddressSuggestionsOnTyping" + ] + }, + { + "name": "EnabledLowerMinMissingCharactersToShowSuggestions_20251023", + "params": { + "min_missing_characters_number": "7" + }, + "enable_features": [ + "AutofillAddressSuggestionsOnTyping" + ] + }, + { + "name": "EnabledHigherMaxCharactersToHideSuggestions_20251023", + "params": { + "max_number_characters_to_match": "7" + }, + "enable_features": [ + "AutofillAddressSuggestionsOnTyping" + ] + }, + { + "name": "EnabledTopTypes_20251023", + "params": { + "field_types": "9-83-30-60-36-13-33-7" + }, + "enable_features": [ + "AutofillAddressSuggestionsOnTyping" + ] + }, + { + "name": "EnabledStrikeDatabase_20251023", + "enable_features": [ + "AutofillAddressSuggestionsOnTyping", + "AutofillAddressSuggestionsOnTypingHasStrikeDatabase" + ] } ] } @@ -2208,6 +2320,26 @@ ] } ], + "AutofillAllowFillingModifiedInitialValues": [ + { + "platforms": [ + "android", + "chromeos", + "ios", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "AutofillAllowFillingModifiedInitialValues" + ] + } + ] + } + ], "AutofillAndPasswordsInSameSurface": [ { "platforms": [ @@ -2279,26 +2411,6 @@ ] } ], - "AutofillConsiderServerOnlyFormsInKeyMetrics": [ - { - "platforms": [ - "android", - "chromeos", - "ios", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "AutofillConsiderServerOnlyFormsInKeyMetrics" - ] - } - ] - } - ], "AutofillCreditCardUserPerceptionSurvey": [ { "platforms": [ @@ -2399,6 +2511,25 @@ ] } ], + "AutofillEnableBuyNowPayLaterUpdatedSuggestionSecondLineString": [ + { + "platforms": [ + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "AutofillEnableBuyNowPayLaterUpdatedSuggestionSecondLineString" + ] + } + ] + } + ], "AutofillEnableCardBenefitsForBmo": [ { "platforms": [ @@ -2490,6 +2621,36 @@ ] } ], + "AutofillEnableKeyboardAccessoryChipRedesign": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "AutofillEnableKeyboardAccessoryChipRedesign" + ] + } + ] + } + ], + "AutofillEnableKeyboardAccessoryChipWidthAdjustment": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "AutofillEnableKeyboardAccessoryChipWidthAdjustment" + ] + } + ] + } + ], "AutofillEnableLabelPrecedenceForTurkishAddresses": [ { "platforms": [ @@ -2511,28 +2672,6 @@ ] } ], - "AutofillEnableLoyaltyCardsFilling": [ - { - "platforms": [ - "android", - "chromeos", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "AutofillEnableEmailOrLoyaltyCardsFilling", - "AutofillEnableLoyaltyCardsFilling", - "IPH_AutofillEnableLoyaltyCards", - "SyncAutofillLoyaltyCard" - ] - } - ] - } - ], "AutofillEnableMultipleRequestInVirtualCardDownstreamEnrollment": [ { "platforms": [ @@ -2613,6 +2752,27 @@ ] } ], + "AutofillEnableSupportForNameAndEmail": [ + { + "platforms": [ + "android", + "chromeos", + "ios", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "AutofillEnableSupportForNameAndEmail", + "IPH_AutofillAccountNameEmailSuggestion" + ] + } + ] + } + ], "AutofillEnableSupportForParsingWithSharedLabels": [ { "platforms": [ @@ -2654,6 +2814,26 @@ ] } ], + "AutofillFixRewriterRules": [ + { + "platforms": [ + "android", + "chromeos", + "ios", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "AutofillFixRewriterRules" + ] + } + ] + } + ], "AutofillI18nINAddressModel": [ { "platforms": [ @@ -2716,28 +2896,7 @@ ] } ], - "AutofillImproveCityFieldClassification": [ - { - "platforms": [ - "android", - "android_webview", - "chromeos", - "ios", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "AutofillImproveCityFieldClassification" - ] - } - ] - } - ], - "AutofillImproveSubmissionDetectionV2": [ + "AutofillImproveSubmissionDetectionV3": [ { "platforms": [ "android", @@ -2749,10 +2908,10 @@ ], "experiments": [ { - "name": "Enabled", + "name": "Enabled_All", "enable_features": [ - "AutofillPreferSavedFormAsSubmittedForm", - "AutofillUseSubmittedFormInHtmlSubmission" + "AutofillFixFormTracking", + "AutofillReplaceCachedWebElementsByRendererIds" ] } ] @@ -2920,6 +3079,26 @@ ] } ], + "AutofillPrioritizeSaveCardOverMandatoryReauth": [ + { + "platforms": [ + "android", + "chromeos", + "ios", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "AutofillPrioritizeSaveCardOverMandatoryReauth" + ] + } + ] + } + ], "AutofillRelaxAddressImport": [ { "platforms": [ @@ -2981,6 +3160,24 @@ ] } ], + "AutofillShowBubblesBasedOnPriorities": [ + { + "platforms": [ + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "AutofillShowBubblesBasedOnPriorities" + ] + } + ] + } + ], "AutofillStructuredFieldsDisableAddressLines": [ { "platforms": [ @@ -3251,21 +3448,6 @@ ] } ], - "AutomotiveBackButtonBarStreamline": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "Enabled_140", - "enable_features": [ - "AutomotiveBackButtonBarStreamline" - ] - } - ] - } - ], "AvatarButtonSyncPromoWindows": [ { "platforms": [ @@ -3330,6 +3512,11 @@ { "platforms": [ "android", + "android_webview", + "chromeos", + "chromeos_lacros", + "fuchsia", + "ios", "linux", "mac", "windows" @@ -3746,21 +3933,6 @@ ] } ], - "BinderIpcTracing": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "Enabled_20250522", - "enable_features": [ - "TraceBinderIpc" - ] - } - ] - } - ], "BiometricAuthPwdFillAndroid": [ { "platforms": [ @@ -3791,21 +3963,6 @@ ] } ], - "BlingDiscoFeed": [ - { - "platforms": [ - "ios" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "EnableDiscoFeedEndpoint" - ] - } - ] - } - ], "BlinkLifecycleScriptForbidden": [ { "platforms": [ @@ -4044,6 +4201,23 @@ ] } ], + "BoostThreadsPriority": [ + { + "platforms": [ + "windows" + ], + "experiments": [ + { + "name": "CompositorAndInputScenarioBoost", + "enable_features": [ + "BoostCompositorThreadsPriorityWhenIdle", + "BoostThreadsPriorityDuringInputScenario", + "IOThreadInteractiveThreadType" + ] + } + ] + } + ], "BorealisProvision": [ { "platforms": [ @@ -4263,82 +4437,46 @@ ], "experiments": [ { - "name": "EnabledContextualPageActionOnly", + "name": "EnabledDefault", + "enable_features": [ + "CCTAdaptiveButton" + ] + }, + { + "name": "EnabledCPA+OIB", "params": { - "contextual_only": "true" + "contextual_only": "true", + "default_variant": "15" }, "enable_features": [ "CCTAdaptiveButton" ] }, { - "name": "Disabled", + "name": "EnabledCPA+OIB+ReaderModeFallbackMenu", + "params": { + "contextual_only": "true", + "default_variant": "15", + "reader_mode_fallback_menu": "true" + }, + "enable_features": [ + "CCTAdaptiveButton" + ] + }, + { + "name": "Control", "disable_features": [ "CCTAdaptiveButton" ] }, { - "name": "EnabledDefault", + "name": "EnabledOIBMenu", "params": { - "open_in_browser": "true" - }, - "enable_features": [ - "CCTAdaptiveButton" - ] - }, - { - "name": "EnabledContextualPageActionOnlyMenuOpenInBrowser", - "params": { - "contextual_only": "true", "show_open_in_browser_menu_top": "true" }, "enable_features": [ "CCTAdaptiveButton" ] - }, - { - "name": "EnabledContextualPageActionOnlyMenuRemoval", - "params": { - "contextual_only": "true", - "remove_desktop_site_menu_item": "true", - "remove_find_in_page_menu_item": "true" - }, - "enable_features": [ - "CCTAdaptiveButton" - ] - }, - { - "name": "EnabledContextualPageActionOnlyMenuCombo", - "params": { - "contextual_only": "true", - "remove_desktop_site_menu_item": "true", - "remove_find_in_page_menu_item": "true", - "show_open_in_browser_menu_top": "true" - }, - "enable_features": [ - "CCTAdaptiveButton" - ] - }, - { - "name": "EnabledContextualPageActionOnlyOpenInBrowser", - "params": { - "contextual_only": "true", - "default_variant": "15", - "open_in_browser": "true" - }, - "enable_features": [ - "CCTAdaptiveButton" - ] - }, - { - "name": "EnabledForModelTraining", - "params": { - "ml_training": "true", - "open_in_browser": "true" - }, - "enable_features": [ - "CCTAdaptiveButton" - ] } ] } @@ -4477,26 +4615,6 @@ ] } ], - "CacheStorageTaskPriority": [ - { - "platforms": [ - "android", - "android_webview", - "chromeos", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "CacheStorageTaskPriority" - ] - } - ] - } - ], "CacheStylusSettings": [ { "platforms": [ @@ -4596,29 +4714,6 @@ ] } ], - "CanvasInterventions": [ - { - "platforms": [ - "android_webview", - "android", - "chromeos", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled_20250527_NonDogfood", - "params": { - "enable_in_regular_mode": "false" - }, - "enable_features": [ - "CanvasNoise" - ] - } - ] - } - ], "CanvasTextNg": [ { "platforms": [ @@ -6281,22 +6376,6 @@ ] } ], - "CleanupToBeNormalTermination": [ - { - "platforms": [ - "android", - "android_webview" - ], - "experiments": [ - { - "name": "Enabled_20250728", - "enable_features": [ - "CleanupToBeNormalTermination" - ] - } - ] - } - ], "ClearBrowsingDataAndroidSurvey": [ { "platforms": [ @@ -6383,25 +6462,6 @@ ] } ], - "ClientSideDetectionOnlyExtractVisualFeatures": [ - { - "platforms": [ - "android", - "chromeos", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "ClientSideDetectionOnlyExtractVisualFeatures" - ] - } - ] - } - ], "ClientSideDetectionRetryLimit": [ { "platforms": [ @@ -6443,22 +6503,6 @@ ] } ], - "ClientSideDetectionSendIntelligentScanInfoAndroid": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "ClientSideDetectionSendIntelligentScanInfoAndroid", - "OptimizationGuideOnDeviceModel" - ] - } - ] - } - ], "ClientSideDetectionSendLlamaForcedTriggerInfo": [ { "platforms": [ @@ -6478,6 +6522,30 @@ ] } ], + "ClientSideDetectionShowScamVerdictWarningAndroid": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "EnabledWithWarning", + "enable_features": [ + "ClientSideDetectionSendIntelligentScanInfoAndroid", + "ClientSideDetectionShowScamVerdictWarningAndroid", + "OptimizationGuideOnDeviceModel" + ] + }, + { + "name": "EnabledMetricsCollection", + "enable_features": [ + "ClientSideDetectionSendIntelligentScanInfoAndroid", + "OptimizationGuideOnDeviceModel" + ] + } + ] + } + ], "ClipboardDeemphasisAndroid": [ { "platforms": [ @@ -6718,97 +6786,6 @@ ] } ], - "CommitBasedMemoryPressureWin": [ - { - "platforms": [ - "windows" - ], - "experiments": [ - { - "name": "All", - "params": { - "CommitAvailableCriticalThresholdMB": "1000", - "CommitAvailableModerateThresholdMB": "2000" - }, - "enable_features": [ - "BoostClosingTabs", - "CommitAvailableMemoryPressureThresholds", - "PageAllocatorRetryOnCommitFailure", - "TerminationTargetPolicy" - ], - "disable_features": [ - "CompressParkableStrings" - ] - }, - { - "name": "All_ExceptParkableStrings", - "params": { - "CommitAvailableCriticalThresholdMB": "1000", - "CommitAvailableModerateThresholdMB": "2000" - }, - "enable_features": [ - "BoostClosingTabs", - "CommitAvailableMemoryPressureThresholds", - "CompressParkableStrings", - "PageAllocatorRetryOnCommitFailure", - "TerminationTargetPolicy" - ] - }, - { - "name": "CommitBasedMemoryPressure", - "params": { - "CommitAvailableCriticalThresholdMB": "1000", - "CommitAvailableModerateThresholdMB": "2000" - }, - "enable_features": [ - "CommitAvailableMemoryPressureThresholds", - "CompressParkableStrings" - ], - "disable_features": [ - "BoostClosingTabs", - "PageAllocatorRetryOnCommitFailure", - "TerminationTargetPolicy" - ] - }, - { - "name": "BoostClosingTab", - "enable_features": [ - "BoostClosingTabs", - "CompressParkableStrings" - ], - "disable_features": [ - "CommitAvailableMemoryPressureThresholds", - "PageAllocatorRetryOnCommitFailure", - "TerminationTargetPolicy" - ] - }, - { - "name": "TerminateRendererOnCommitExhaustion", - "enable_features": [ - "CompressParkableStrings", - "PageAllocatorRetryOnCommitFailure", - "TerminationTargetPolicy" - ], - "disable_features": [ - "BoostClosingTabs", - "CommitAvailableMemoryPressureThresholds" - ] - }, - { - "name": "DisableParkableStrings", - "enable_features": [ - "BoostClosingTabs", - "CommitAvailableMemoryPressureThresholds", - "PageAllocatorRetryOnCommitFailure", - "TerminationTargetPolicy" - ], - "disable_features": [ - "CompressParkableStrings" - ] - } - ] - } - ], "Compare": [ { "platforms": [ @@ -6837,6 +6814,38 @@ ] } ], + "CompensateGestureDetectorTimeouts": [ + { + "platforms": [ + "android", + "android_webview", + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "params": { + "compensate_gesture_timeouts_for_long_delayed_sequences": "false" + }, + "enable_features": [ + "CompensateGestureDetectorTimeouts" + ] + }, + { + "name": "EnabledWithLongDelayedSequences", + "params": { + "compensate_gesture_timeouts_for_long_delayed_sequences": "true" + }, + "enable_features": [ + "CompensateGestureDetectorTimeouts" + ] + } + ] + } + ], "ComposeAXSnapshot": [ { "platforms": [ @@ -7026,6 +7035,27 @@ ] } ], + "CompressionDictionaryTTL": [ + { + "platforms": [ + "android", + "android_webview", + "chromeos", + "fuchsia", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enable", + "enable_features": [ + "CompressionDictionaryTTL" + ] + } + ] + } + ], "CompressionDictionaryTransportRequireKnownRootCert": [ { "platforms": [ @@ -7974,6 +8004,22 @@ ] } ], + "CrostiniContainerless": [ + { + "platforms": [ + "chromeos" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "CrostiniContainerless" + ], + "min_os_version": "16450.0.0" + } + ] + } + ], "CursiveManagedStylusPreinstall": [ { "platforms": [ @@ -8067,29 +8113,6 @@ ] } ], - "DOMStorageReliabilityEnhancements": [ - { - "platforms": [ - "windows", - "mac", - "chromeos", - "fuchsia", - "linux", - "ios", - "android", - "android_weblayer", - "android_webview" - ], - "experiments": [ - { - "name": "Enabled_20240904", - "enable_features": [ - "CoalesceStorageAreaCommits" - ] - } - ] - } - ], "DSEPreconnect2": [ { "platforms": [ @@ -8512,24 +8535,6 @@ ] } ], - "DesktopNtpFooter": [ - { - "platforms": [ - "chromeos", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "NtpFooter", - "enable_features": [ - "NtpFooter" - ] - } - ] - } - ], "DesktopNtpImageErrorDetection": [ { "platforms": [ @@ -8801,6 +8806,25 @@ ] } ], + "DesktopPWAsPredictableAppUpdating": [ + { + "platforms": [ + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "SilentPolicyAndDefaultAppUpdating", + "WebAppPredictableAppUpdating" + ] + } + ] + } + ], "DesktopUAOnConnectedDisplays": [ { "platforms": [ @@ -8819,6 +8843,21 @@ ] } ], + "DestroyOTRProfileEarly": [ + { + "platforms": [ + "ios" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "DestroyOTRProfileEarly" + ] + } + ] + } + ], "DestroySystemProfiles": [ { "platforms": [ @@ -8837,37 +8876,21 @@ ] } ], - "DevToolsAiSubmenuPrompts": [ - { - "platforms": [ - "chromeos", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "DevToolsAiSubmenuPrompts" - ], - "disable_features": [ - "DevToolsAiDebugWithAi" - ] - } - ] - } - ], - "DeviceBoundSessionCredentials": [ + "DeviceBoundSessionCredentials2": [ { "platforms": [ "windows" ], "experiments": [ { - "name": "Enabled_20250312", + "name": "Enabled_20251014", + "params": { + "OriginTrialFeedback": "true", + "SchemaVersion": "2" + }, "enable_features": [ "DeviceBoundSessions", + "DeviceBoundSessionsFederatedRegistration", "PersistDeviceBoundSessions" ] } @@ -8952,21 +8975,6 @@ ] } ], - "DisableBlackHoleOnNoNewNetwork": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "DisableBlackHoleOnNoNewNetwork" - ] - } - ] - } - ], "DisableBoostPriority": [ { "platforms": [ @@ -9010,6 +9018,25 @@ ] } ], + "DisableCookieDeprecationFacilitatedTestingLabels": [ + { + "platforms": [ + "android", + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "LabelsOff", + "disable_features": [ + "CookieDeprecationFacilitatedTestingLabels" + ] + } + ] + } + ], "DisableGeoLanguageModel": [ { "platforms": [ @@ -9060,26 +9087,6 @@ ] } ], - "DisableMojoTaskPerMessage": [ - { - "platforms": [ - "android", - "chromeos", - "chromeos_lacros", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "MojoTaskPerMessage" - ] - } - ] - } - ], "DisableNonYUVOverlaysFromExo": [ { "platforms": [ @@ -9098,6 +9105,25 @@ ] } ], + "DisablePartialStorageCleanupForGPUDiskCache": [ + { + "platforms": [ + "android", + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "DisablePartialStorageCleanupForGPUDiskCache" + ] + } + ] + } + ], "DisableSystemBlur": [ { "platforms": [ @@ -9514,6 +9540,25 @@ ] } ], + "DropMetricsFromNonProducedFramesOnlyIfTheyHadNoDamage": [ + { + "platforms": [ + "android", + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "DropMetricsFromNonProducedFramesOnlyIfTheyHadNoDamage" + ] + } + ] + } + ], "DumpOnOOBFontDataServiceCache": [ { "platforms": [ @@ -9554,7 +9599,6 @@ "platforms": [ "android", "chromeos", - "ios", "linux", "mac", "windows" @@ -9569,6 +9613,24 @@ ] } ], + "EdgeToEdgeUseBackupNavbarInsets": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled_20251007", + "params": { + "use_gesture_insets": "false" + }, + "enable_features": [ + "EdgeToEdgeUseBackupNavbarInsets" + ] + } + ] + } + ], "EffectiveBindingState": [ { "platforms": [ @@ -9585,6 +9647,28 @@ ] } ], + "EmitPerScrollJankMetricsAtEndOfScroll": [ + { + "platforms": [ + "android", + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Experiment_V1EnabledV4Disabled", + "enable_features": [ + "EmitPerScrollJankV1MetricAtEndOfScroll" + ], + "disable_features": [ + "EmitPerScrollJankV4MetricAtEndOfScroll" + ] + } + ] + } + ], "En840AndFstDecoderParamsUpdate": [ { "platforms": [ @@ -9683,6 +9767,25 @@ ] } ], + "EnableBestEffortTaskInhibitingPolicy": [ + { + "platforms": [ + "ios", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "EnableBestEffortTaskInhibitingPolicy", + "ScopedBestEffortExecutionFenceOnUIThread" + ] + } + ] + } + ], "EnableChromeFatalCrashEventsObserver": [ { "platforms": [ @@ -9728,29 +9831,6 @@ ] } ], - "EnableConfigurableThreadCacheMultiplier": [ - { - "platforms": [ - "android", - "chromeos", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "multiplier_2.0_20230904", - "params": { - "ThreadCacheMultiplier": "2", - "ThreadCacheMultiplierForAndroid": "1" - }, - "enable_features": [ - "EnableConfigurableThreadCacheMultiplier" - ] - } - ] - } - ], "EnableCustomInputStreamBufferSize": [ { "platforms": [ @@ -9878,6 +9958,21 @@ ] } ], + "EnableFullscreenToAnyScreenAndroid": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "EnableFullscreenToAnyScreenAndroid" + ] + } + ] + } + ], "EnableHangWatcher": [ { "platforms": [ @@ -10145,6 +10240,27 @@ ] } ], + "EnableVerdictCache": [ + { + "platforms": [ + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "params": { + "verdict_cache_max_size": "200" + }, + "enable_features": [ + "EnableVerdictCache" + ] + } + ] + } + ], "EnableWatermarkCustomization": [ { "platforms": [ @@ -10352,24 +10468,8 @@ "EsbAsASyncedSetting": [ { "platforms": [ - "android" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "EsbAsASyncedSetting" - ] - } - ] - } - ], - "EstablishGpuChannelInterventions": [ - { - "platforms": [ - "android", - "android_webview", "chromeos", + "chromeos_lacros", "linux", "mac", "windows" @@ -10378,8 +10478,7 @@ { "name": "Enabled", "enable_features": [ - "EarlyEstablishGpuChannel", - "EstablishGpuChannelAsync" + "EsbAsASyncedSetting" ] } ] @@ -10663,6 +10762,24 @@ ] } ], + "FRESignInHeaderTextUpdate": [ + { + "platforms": [ + "ios" + ], + "experiments": [ + { + "name": "Enabled", + "params": { + "FRESignInHeaderTextUpdateParam": "Arm0" + }, + "enable_features": [ + "FRESignInHeaderTextUpdate" + ] + } + ] + } + ], "FastPairAdvertisingFormat2025": [ { "platforms": [ @@ -10738,24 +10855,6 @@ ] } ], - "FasterBackgroundFreezing": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "Enabled", - "params": { - "DelayForBackgroundTabFreezingMills": "60000" - }, - "enable_features": [ - "stop-in-background" - ] - } - ] - } - ], "FedCmSegmentationPlatform": [ { "platforms": [ @@ -10965,30 +11064,6 @@ ] } ], - "FingerprintingProtectionFilter": [ - { - "platforms": [ - "android", - "chromeos", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled_20250331", - "params": { - "activation_level": "dry_run", - "enable_only_if_3pc_blocked": "false", - "performance_measurement_rate": "1.0" - }, - "enable_features": [ - "EnableFingerprintingProtectionFilter" - ] - } - ] - } - ], "FledgeBiddingAndAuctionNonceSupport": [ { "platforms": [ @@ -11118,7 +11193,7 @@ ] } ], - "ForceMigrateSyncingUserToSignedIn": [ + "ForceMigrateSyncingUserToSignedInAndroid": [ { "platforms": [ "android" @@ -11199,6 +11274,22 @@ ] } ], + "FullscreenSignInPromoUseDate": [ + { + "platforms": [ + "android", + "ios" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "FullscreenSignInPromoUseDate" + ] + } + ] + } + ], "FullscreenSigninPromoManagerMigration": [ { "platforms": [ @@ -11256,26 +11347,6 @@ ] } ], - "GCOnArrayBufferAllocationFailure": [ - { - "platforms": [ - "android_webview", - "android", - "chromeos", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "GCOnArrayBufferAllocationFailure" - ] - } - ] - } - ], "GMSCoreEmoji": [ { "platforms": [ @@ -11359,6 +11430,79 @@ ] } ], + "GlicActOnWebCapabilityForManagedTrials": [ + { + "platforms": [ + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled_Dogfood", + "enable_features": [ + "GlicActOnWebCapabilityForManagedTrials" + ] + } + ] + } + ], + "GlicActorRolloutControl": [ + { + "platforms": [ + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled_Dogfood", + "params": { + "glic_actor_enterprise_pref_default": "enabled_by_default", + "glic_actor_policy_control_exemption": "false" + }, + "enable_features": [ + "GlicActor", + "GlicActorUi" + ] + } + ] + } + ], + "GlicActorUiNudgeRedesign": [ + { + "platforms": [ + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "GlicActorUiNudgeRedesign" + ] + } + ] + } + ], + "GlicActorUiTabIndicatorSpinnerIgnoreReducedMotion": [ + { + "platforms": [ + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "GlicActorUiTabIndicatorSpinnerIgnoreReducedMotion" + ] + } + ] + } + ], "GlicAppendModelQualityClientId": [ { "platforms": [ @@ -11411,7 +11555,7 @@ ] } ], - "GlicContextualCueingDogfood": [ + "GlicDefaultTabContextSetting": [ { "platforms": [ "mac", @@ -11422,7 +11566,7 @@ { "name": "Enabled", "enable_features": [ - "ContextualCueing" + "GlicDefaultTabContextSetting" ] } ] @@ -11526,6 +11670,40 @@ ] } ], + "GlicForceNonSkSLBorder": [ + { + "platforms": [ + "mac", + "windows", + "linux" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "GlicForceNonSkSLBorder" + ] + } + ] + } + ], + "GlicForceSimplifiedBorder": [ + { + "platforms": [ + "mac", + "windows", + "linux" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "GlicForceSimplifiedBorder" + ] + } + ] + } + ], "GlicFreWarming": [ { "platforms": [ @@ -11559,6 +11737,23 @@ ] } ], + "GlicHandoffButtonHiddenClientControl": [ + { + "platforms": [ + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "GlicHandoffButtonHiddenClientControl" + ] + } + ] + } + ], "GlicMediaData": [ { "platforms": [ @@ -11577,16 +11772,18 @@ ] } ], - "GlicMultitabContext": [ + "GlicMultiInstance": [ { "platforms": [ "mac", + "linux", "windows" ], "experiments": [ { "name": "Enabled", "enable_features": [ + "GlicMultiInstance", "GlicMultiTab", "GlicMultitabUnderlines" ] @@ -11610,22 +11807,6 @@ ] } ], - "GlicScrollTo": [ - { - "platforms": [ - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "GlicScrollTo" - ] - } - ] - } - ], "GlicTieredRollout": [ { "platforms": [ @@ -11702,21 +11883,6 @@ ] } ], - "GlobalCacheListForGatingNotificationProtections": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "GlobalCacheListForGatingNotificationProtections" - ] - } - ] - } - ], "GlobalVaapiLock": [ { "platforms": [ @@ -12340,7 +12506,10 @@ ], "experiments": [ { - "name": "Enabled", + "name": "EnabledFirstJob", + "params": { + "tcp_based_attempt_delay_behavior": "first_job" + }, "enable_features": [ "HappyEyeballsV3" ] @@ -12523,21 +12692,6 @@ ] } ], - "HelpAppOnboardingRevamp": [ - { - "platforms": [ - "chromeos" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "HelpAppOnboardingRevamp" - ] - } - ] - } - ], "HideDelegatedFrameHostMac": [ { "platforms": [ @@ -12625,24 +12779,6 @@ ] } ], - "HlsDirectPlayback": [ - { - "platforms": [ - "chromeos", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "BuiltInHlsPlayer" - ] - } - ] - } - ], "Hotspot": [ { "platforms": [ @@ -12690,7 +12826,6 @@ "android", "android_weblayer", "android_webview", - "chromeos", "fuchsia" ], "experiments": [ @@ -12730,6 +12865,28 @@ ] } ] + }, + { + "platforms": [ + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled_NVS_HttpCache_Only_WithNewAreEquivalent_DevCanary_1008_Desktop", + "enable_features": [ + "HttpCacheNoVarySearch", + "HttpNoVarySearchDataUseNewAreEquivalent" + ], + "disable_features": [ + "DsePreload2", + "PrefetchPrerenderIntegration", + "SearchPrefetchWithNoVarySearchDiskCache" + ] + } + ] } ], "HttpDiskCachePrewarming": [ @@ -12816,60 +12973,6 @@ ] } ], - "IOSAIModeNTPEntryPoint": [ - { - "platforms": [ - "ios" - ], - "experiments": [ - { - "name": "EnabledWithOmniboxContainedSingleButton", - "params": { - "kNTPMIAEntrypointParam": "kNTPMIAEntrypointParamOmniboxContainedSingleButton" - }, - "enable_features": [ - "kNTPMIAEntrypoint" - ] - }, - { - "name": "EnabledWithOmniboxContainedInline", - "params": { - "kNTPMIAEntrypointParam": "kNTPMIAEntrypointParamOmniboxContainedInline" - }, - "enable_features": [ - "kNTPMIAEntrypoint" - ] - }, - { - "name": "EnabledWithOmniboxContainedEnlargedFakebox", - "params": { - "kNTPMIAEntrypointParam": "kNTPMIAEntrypointParamOmniboxContainedEnlargedFakebox" - }, - "enable_features": [ - "kNTPMIAEntrypoint" - ] - }, - { - "name": "EnabledWithEnlargedFakeboxNoIncognito", - "params": { - "kNTPMIAEntrypointParam": "kNTPMIAEntrypointParamEnlargedFakeboxNoIncognito" - }, - "enable_features": [ - "kNTPMIAEntrypoint" - ] - }, - { - "name": "EnabledWithAIMInQuickActions", - "params": { - "kNTPMIAEntrypointParam": "kNTPMIAEntrypointParamAIMInQuickActions" - }, - "enable_features": [ - "kNTPMIAEntrypoint" - ] - } - ] - } - ], "IOSAutofillAcrossIframesV2": [ { "platforms": [ @@ -12903,6 +13006,21 @@ ] } ], + "IOSAutofillBottomSheetNewBlur": [ + { + "platforms": [ + "ios" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "AutofillBottomSheetNewBlur" + ] + } + ] + } + ], "IOSAutofillRefillForForms": [ { "platforms": [ @@ -12997,6 +13115,21 @@ ] } ], + "IOSConfirmationButtonSwapOrder": [ + { + "platforms": [ + "ios" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "ConfirmationButtonSwapOrder" + ] + } + ] + } + ], "IOSCriteriaExperimentEnabled": [ { "platforms": [ @@ -13333,13 +13466,11 @@ { "name": "Enabled", "enable_features": [ - "LensUnaryApisWithHttpTransportEnabled", - "LensUnaryHttpTransportEnabled" - ], - "disable_features": [ "LensBlockFetchObjectsInteractionRPCsOnSeparateHandshake", "LensPrewarmHardStickinessInInputSelection", - "LensPrewarmHardStickinessInQueryFormulation" + "LensPrewarmHardStickinessInQueryFormulation", + "LensUnaryApisWithHttpTransportEnabled", + "LensUnaryHttpTransportEnabled" ] } ] @@ -13454,27 +13585,6 @@ ] } ], - "IOSLensUnification": [ - { - "platforms": [ - "ios" - ], - "experiments": [ - { - "name": "Enabled", - "params": { - "LensFilterAblationMode": "1", - "LensTranslateToggleMode": "1" - }, - "enable_features": [ - "EnableLensViewFinderUnifiedExperience", - "LensFiltersAblationModeEnabled", - "LensTranslateToggleModeEnabled" - ] - } - ] - } - ], "IOSLogApplicationStorageSizeMetrics": [ { "platforms": [ @@ -13550,6 +13660,21 @@ ] } ], + "IOSNewTabGridTransitions": [ + { + "platforms": [ + "ios" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "TabGridNewTransitions" + ] + } + ] + } + ], "IOSOmahaResyncTimerOnForeground": [ { "platforms": [ @@ -13653,6 +13778,21 @@ ] } ], + "IOSPasskeyModalLoginWithShim": [ + { + "platforms": [ + "ios" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "IOSPasskeyModalLoginWithShim" + ] + } + ] + } + ], "IOSPasskeyShim": [ { "platforms": [ @@ -13720,6 +13860,21 @@ ] } ], + "IOSSaveToDriveClientFolder": [ + { + "platforms": [ + "ios" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "IOSSaveToDriveClientFolder" + ] + } + ] + } + ], "IOSSaveToPhotosImprovements": [ { "platforms": [ @@ -13750,6 +13905,21 @@ ] } ], + "IOSSeparateProfilesForManagedAccountsForceMigration": [ + { + "platforms": [ + "ios" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "SeparateProfilesForManagedAccountsForceMigration" + ] + } + ] + } + ], "IOSShareExtensionMIM": [ { "platforms": [ @@ -13765,21 +13935,6 @@ ] } ], - "IOSSharedHighlightingColorChange": [ - { - "platforms": [ - "ios" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "IOSSharedHighlightingColorChange" - ] - } - ] - } - ], "IOSSkipCookieCaching": [ { "platforms": [ @@ -13949,6 +14104,24 @@ ] } ], + "IOSTipsNotificationsAlternativeStrings": [ + { + "platforms": [ + "ios" + ], + "experiments": [ + { + "name": "Enabled1", + "params": { + "TipsNotificationsAlternativeStringVersion": "1" + }, + "enable_features": [ + "IOSTipsNotificationsAlternativeStrings" + ] + } + ] + } + ], "IOSTrustedVaultNotification": [ { "platforms": [ @@ -14043,43 +14216,6 @@ ] } ], - "IPProtectionPhase0": [ - { - "platforms": [ - "android", - "chromeos", - "chromeos_lacros", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "enabled_incognito_full_mdl_Canary_Dev_2025-08-06_North_America", - "params": { - "BypassProbabilisticRevealTokenRegistry": "false", - "IpPrivacyDebugExperimentArm": "30", - "IpPrivacyDirectOnly": "false", - "IpPrivacyEnableIppInDevTools": "true", - "IpPrivacyEnableUserBypass": "true", - "IpPrivacyOnlyInIncognito": "true", - "IpPrivacyUseQuicProxies": "false", - "MaskedDomainListExperimentalVersion": "2025.8.8.0", - "ProbabilisticRevealTokenFetchOnly": "false", - "ProbabilisticRevealTokensOnlyInIncognito": "false" - }, - "enable_features": [ - "EnableIpPrivacyProxy", - "IpProtectionUx", - "MaskedDomainList" - ], - "disable_features": [ - "EnableProbabilisticRevealTokens" - ] - } - ] - } - ], "IdbPrioritizeForegroundClients": [ { "platforms": [ @@ -14103,6 +14239,26 @@ ] } ], + "IdbSqliteBackingStoreInMemoryContexts": [ + { + "platforms": [ + "android", + "android_webview", + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "IdbSqliteBackingStoreInMemoryContexts" + ] + } + ] + } + ], "IdentityInAuthError": [ { "platforms": [ @@ -14198,6 +14354,30 @@ ] } ], + "ImmersiveReadAnything": [ + { + "platforms": [ + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "ImmersiveReadAnything" + ] + }, + { + "name": "Disabled", + "disable_features": [ + "ImmersiveReadAnything" + ] + } + ] + } + ], "IncognitoScreenshot": [ { "platforms": [ @@ -14213,6 +14393,34 @@ ] } ], + "IncreaseHttp3Usage": [ + { + "platforms": [ + "android", + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "EnabledWithAll_20251024", + "params": { + "AdditionalDelay": "100ms", + "DelayMainJobWithAvailableSpdySession": "false", + "QuicHandshakeTimeout": "15s", + "mtu": "1230" + }, + "enable_features": [ + "AdditionalDelayMainJob", + "ConfigureQuicHints", + "ExtendQuicHandshakeTimeout", + "LowerQuicMaxPacketSize" + ] + } + ] + } + ], "IncreasedCmdBufferParseSlice": [ { "platforms": [ @@ -14236,26 +14444,32 @@ ] } ], - "InfiniteTabsFreezingOnMemoryPressure": [ + "InhibitSQLPreload": [ { "platforms": [ - "windows" + "android", + "chromeos", + "linux", + "windows", + "mac" ], "experiments": [ { - "name": "NoPurge", + "name": "InhibitSQLPreload", + "enable_features": [ + "InhibitSQLPreload" + ], "disable_features": [ - "InfiniteTabsFreezingOnMemoryPressure", - "MemoryPurgeOnFreeze" + "InhibitSQLPreloadOnFixedSSD" ] }, { - "name": "NoPurgeAndFreeze", + "name": "InhibitSQLPreloadOnFixedSSD", "enable_features": [ - "InfiniteTabsFreezingOnMemoryPressure" + "InhibitSQLPreloadOnFixedSSD" ], "disable_features": [ - "MemoryPurgeOnFreeze" + "InhibitSQLPreload" ] } ] @@ -14870,21 +15084,6 @@ ] } ], - "LayoutNGShapeCacheWebview": [ - { - "platforms": [ - "android_webview" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "LayoutNGShapeCache" - ] - } - ] - } - ], "LazyBlinkTimezoneInit": [ { "platforms": [ @@ -15007,37 +15206,6 @@ ] } ], - "LinkedServicesSettingIos": [ - { - "platforms": [ - "ios" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "LinkedServicesSettingIos" - ] - } - ] - } - ], - "LiveCaptionChromeOS2": [ - { - "platforms": [ - "chromeos" - ], - "experiments": [ - { - "name": "Enabled_2024_04_15", - "enable_features": [ - "CrosExpandSodaLanguages", - "LiveCaptionMultiLanguage" - ] - } - ] - } - ], "LiveCaptionExperimentalLanguages": [ { "platforms": [ @@ -15058,41 +15226,12 @@ ] } ], - "LiveCaptionMultiLanguageRollout": [ - { - "platforms": [ - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "params": { - "available_languages": "en-US,fr-FR,it-IT,de-DE" - }, - "enable_features": [ - "LiveCaptionMultiLanguage" - ] - } - ] - } - ], "LoadNativeEarly": [ { "platforms": [ "android" ], "experiments": [ - { - "name": "Enabled_ConcurrentLoad", - "params": { - "concurrent_load": "true" - }, - "enable_features": [ - "LoadNativeEarly" - ] - }, { "name": "Enabled", "enable_features": [ @@ -15102,28 +15241,6 @@ ] } ], - "LoadingPhaseBufferTimeAfterFirstMeaningfulPaint": [ - { - "platforms": [ - "android", - "chromeos", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "buffer_500ms_20230907", - "params": { - "LoadingPhaseBufferTimeAfterFirstMeaningfulPaintMillis": "500" - }, - "enable_features": [ - "LoadingPhaseBufferTimeAfterFirstMeaningfulPaint" - ] - } - ] - } - ], "LoadingPredictorLimitPreconnectSocketCount": [ { "platforms": [ @@ -15234,6 +15351,25 @@ ] } ], + "LocalNetworkAccessChecksWebTransport": [ + { + "platforms": [ + "android", + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "LocalNetworkAccessChecksWebTransport" + ] + } + ] + } + ], "LofnPermissiveUsbPassthrough": [ { "platforms": [ @@ -15374,40 +15510,6 @@ ] } ], - "MacCatapLoopbackAudioForScreenShare": [ - { - "platforms": [ - "mac" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "GetDisplayMediaIgnoreAudioPermissionFailures", - "MacCatapLoopbackAudioForScreenShare" - ] - } - ] - } - ], - "MacCriticalDiskSpacePressure": [ - { - "platforms": [ - "mac" - ], - "experiments": [ - { - "name": "Enabled", - "params": { - "MacCriticalDiskSpacePressureThresholdMB": "250" - }, - "enable_features": [ - "MacCriticalDiskSpacePressure" - ] - } - ] - } - ], "MacICloudKeychainRecoveryFactor": [ { "platforms": [ @@ -15554,22 +15656,6 @@ ] } ], - "MediaCodecLinearBlock": [ - { - "platforms": [ - "android_webview", - "android" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "MediaCodecBlockModel" - ] - } - ] - } - ], "MediaDeviceIdStoragePartitioning": [ { "platforms": [ @@ -15682,7 +15768,7 @@ ] } ], - "MemoryCacheIntelligentPruning": [ + "MemoryCacheCombined": [ { "platforms": [ "chromeos", @@ -15692,52 +15778,27 @@ ], "experiments": [ { - "name": "Enabled", + "name": "IP_Enabled", "enable_features": [ - "MemoryCacheIntelligentPruning" - ] - } - ] - } - ], - "MemoryCacheStrongRefPruningTuneUp": [ - { - "platforms": [ - "android", - "chromeos", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "DefaultsX2", - "params": { - "memory_cache_strong_ref_resource_size_threshold": "6291456", - "memory_cache_strong_ref_total_size_threshold": "31457280", - "strong_reference_prune_delay": "10m" - }, - "enable_features": [ - "MemoryCacheChangeStrongReferencePruneDelay", - "MemoryCacheStrongReference" - ], - "disable_features": [ + "MemoryCacheIntelligentPruning", + "MemoryCacheStrongReference", "ReleaseResourceDecodedDataOnMemoryPressure", "ReleaseResourceStrongReferencesOnMemoryPressure" + ], + "disable_features": [ + "MemoryCacheChangeStrongReferencePruneDelay", + "MemoryCacheStrongReferenceExtensions" ] }, { - "name": "DefaultsX3", - "params": { - "memory_cache_strong_ref_resource_size_threshold": "9437184", - "memory_cache_strong_ref_total_size_threshold": "47185920", - "strong_reference_prune_delay": "15m" - }, + "name": "IP_Enabled_NoPressureRelease", "enable_features": [ - "MemoryCacheChangeStrongReferencePruneDelay", + "MemoryCacheIntelligentPruning", "MemoryCacheStrongReference" ], "disable_features": [ + "MemoryCacheChangeStrongReferencePruneDelay", + "MemoryCacheStrongReferenceExtensions", "ReleaseResourceDecodedDataOnMemoryPressure", "ReleaseResourceStrongReferencesOnMemoryPressure" ] @@ -15754,6 +15815,145 @@ "MemoryCacheStrongReference" ], "disable_features": [ + "MemoryCacheIntelligentPruning", + "MemoryCacheStrongReferenceExtensions", + "ReleaseResourceDecodedDataOnMemoryPressure", + "ReleaseResourceStrongReferencesOnMemoryPressure" + ] + }, + { + "name": "MaxLimits1HourDelay_HM", + "params": { + "image": "true", + "manifest": "true", + "memory_cache_strong_ref_resource_size_threshold": "104857600", + "memory_cache_strong_ref_total_size_threshold": "209715200", + "raw": "true", + "strong_reference_prune_delay": "60m", + "svg_document": "true", + "xsl_stylesheet": "true" + }, + "enable_features": [ + "MemoryCacheChangeStrongReferencePruneDelay", + "MemoryCacheStrongReference", + "MemoryCacheStrongReferenceExtensions" + ], + "disable_features": [ + "MemoryCacheIntelligentPruning", + "ReleaseResourceDecodedDataOnMemoryPressure", + "ReleaseResourceStrongReferencesOnMemoryPressure" + ] + }, + { + "name": "Combination_HM_MaxLimits", + "params": { + "image": "true", + "manifest": "true", + "memory_cache_strong_ref_resource_size_threshold": "104857600", + "memory_cache_strong_ref_total_size_threshold": "209715200", + "raw": "true", + "strong_reference_prune_delay": "60m", + "svg_document": "true", + "xsl_stylesheet": "true" + }, + "enable_features": [ + "MemoryCacheChangeStrongReferencePruneDelay", + "MemoryCacheIntelligentPruning", + "MemoryCacheStrongReference", + "MemoryCacheStrongReferenceExtensions" + ], + "disable_features": [ + "ReleaseResourceDecodedDataOnMemoryPressure", + "ReleaseResourceStrongReferencesOnMemoryPressure" + ] + }, + { + "name": "Combination_Image_MaxLimits", + "params": { + "image": "true", + "memory_cache_strong_ref_resource_size_threshold": "104857600", + "memory_cache_strong_ref_total_size_threshold": "209715200", + "strong_reference_prune_delay": "60m" + }, + "enable_features": [ + "MemoryCacheChangeStrongReferencePruneDelay", + "MemoryCacheIntelligentPruning", + "MemoryCacheStrongReference", + "MemoryCacheStrongReferenceExtensions" + ], + "disable_features": [ + "ReleaseResourceDecodedDataOnMemoryPressure", + "ReleaseResourceStrongReferencesOnMemoryPressure" + ] + }, + { + "name": "Combination_HM_MaxLimits_Balanced", + "params": { + "cost_weight": "0.0005", + "freq_weight": "75.0", + "image": "true", + "manifest": "true", + "memory_cache_strong_ref_resource_size_threshold": "104857600", + "memory_cache_strong_ref_total_size_threshold": "209715200", + "raw": "true", + "strong_reference_prune_delay": "60m", + "svg_document": "true", + "type_weight": "75.0", + "xsl_stylesheet": "true" + }, + "enable_features": [ + "MemoryCacheChangeStrongReferencePruneDelay", + "MemoryCacheIntelligentPruning", + "MemoryCacheStrongReference", + "MemoryCacheStrongReferenceExtensions" + ], + "disable_features": [ + "ReleaseResourceDecodedDataOnMemoryPressure", + "ReleaseResourceStrongReferencesOnMemoryPressure" + ] + }, + { + "name": "Combination_HM_MaxLimits_SizeAware", + "params": { + "cost_weight": "0.005", + "freq_weight": "60.0", + "image": "true", + "manifest": "true", + "memory_cache_strong_ref_resource_size_threshold": "104857600", + "memory_cache_strong_ref_total_size_threshold": "209715200", + "raw": "true", + "strong_reference_prune_delay": "60m", + "svg_document": "true", + "type_weight": "80.0", + "xsl_stylesheet": "true" + }, + "enable_features": [ + "MemoryCacheChangeStrongReferencePruneDelay", + "MemoryCacheIntelligentPruning", + "MemoryCacheStrongReference", + "MemoryCacheStrongReferenceExtensions" + ], + "disable_features": [ + "ReleaseResourceDecodedDataOnMemoryPressure", + "ReleaseResourceStrongReferencesOnMemoryPressure" + ] + }, + { + "name": "IntelligentPruning_HM_DefaultLimits", + "params": { + "image": "true", + "manifest": "true", + "raw": "true", + "svg_document": "true", + "xsl_stylesheet": "true" + }, + "enable_features": [ + "MemoryCacheIntelligentPruning", + "MemoryCacheStrongReference", + "MemoryCacheStrongReferenceExtensions" + ], + "disable_features": [ + "MemoryCacheChangeStrongReferencePruneDelay", "ReleaseResourceDecodedDataOnMemoryPressure", "ReleaseResourceStrongReferencesOnMemoryPressure" ] @@ -15761,18 +15961,22 @@ ] } ], - "MemoryPurgeOnFreezeDisabled": [ + "MemoryCoordinatorLastResortGC": [ { "platforms": [ + "android", + "android_webview", "chromeos", + "ios", "linux", - "mac" + "mac", + "windows" ], "experiments": [ { - "name": "Disabled", - "disable_features": [ - "MemoryPurgeOnFreeze" + "name": "Enabled", + "enable_features": [ + "MemoryCoordinatorLastChanceGC" ] } ] @@ -15844,8 +16048,7 @@ { "name": "Enabled", "enable_features": [ - "DidObserveNewFeatureUsageImprovement", - "DidObserveSubresourceLoadImprovement" + "MetricsRenderFrameObserverImprovement" ] } ] @@ -15965,21 +16168,6 @@ ] } ], - "MitigateLegacySearchEnginePromoOverlap": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "MitigateLegacySearchEnginePromoOverlap" - ] - } - ] - } - ], "MojoChannelAssociatedSendUsesRunOrPostTask": [ { "platforms": [ @@ -16001,7 +16189,7 @@ ] } ], - "MojoInlineMessagePayloads": [ + "MojoInlineMessagePayloads2": [ { "platforms": [ "android", @@ -16022,20 +16210,16 @@ ] } ], - "MojoPredictiveAllocation": [ + "MojoUseEventFd": [ { "platforms": [ - "android", - "android_webview", - "linux", - "mac", - "windows" + "android" ], "experiments": [ { "name": "Enabled", "enable_features": [ - "MojoPredictiveAllocation" + "MojoUseEventFd" ] } ] @@ -16092,6 +16276,21 @@ ] } ], + "NTPBackgroundCustomization": [ + { + "platforms": [ + "ios" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "NTPBackgroundCustomization" + ] + } + ] + } + ], "NavigationThrottleRegistryAttributeCache": [ { "platforms": [ @@ -16201,6 +16400,29 @@ ] } ], + "NetworkQualityEstimatorAsync": [ + { + "platforms": [ + "android_webview", + "android", + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Experiment", + "params": { + "defer_until_next_step": "false" + }, + "enable_features": [ + "NetworkQualityEstimatorAsyncNotifyStartTransaction" + ] + } + ] + } + ], "NetworkQualityEstimatorParameterTuning": [ { "platforms": [ @@ -16226,6 +16448,26 @@ ] } ], + "NetworkServicePerPriorityTaskQueues": [ + { + "platforms": [ + "android", + "android_webview", + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "NetworkServicePerPriorityTaskQueues" + ] + } + ] + } + ], "NetworkServiceSandboxLinuxAndChromeOS": [ { "platforms": [ @@ -16259,7 +16501,7 @@ ] } ], - "NetworkServiceTaskScheduler": [ + "NetworkServiceTaskScheduler2": [ { "platforms": [ "android", @@ -16271,14 +16513,13 @@ ], "experiments": [ { - "name": "Enabled2", + "name": "Enabled", "params": { "http_cache": "true", "http_cache_transaction": "true" }, "enable_features": [ - "NetTaskScheduler", - "NetworkServiceTaskScheduler" + "NetTaskScheduler2" ] } ] @@ -16388,21 +16629,6 @@ ] } ], - "NoPreReadMainDllIfSsd": [ - { - "platforms": [ - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "NoPreReadMainDllIfSsd" - ] - } - ] - } - ], "NoThrottlingVisibleAgent": [ { "platforms": [ @@ -16629,6 +16855,25 @@ ] } ], + "OAuthMultiloginCookiesBinding": [ + { + "platforms": [ + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "params": { + "enforced": "true" + }, + "enable_features": [ + "EnableOAuthMultiloginCookiesBinding", + "EnableOAuthMultiloginCookiesBindingServerExperiment" + ] + } + ] + } + ], "OcclusionCullingQuadSplitLimit": [ { "platforms": [ @@ -16697,23 +16942,6 @@ ] } ], - "OfferMigrationToDiceUsers": [ - { - "platforms": [ - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "OfferMigrationToDiceUsers" - ] - } - ] - } - ], "OfferPinToTaskbarInFirstRunExperience": [ { "platforms": [ @@ -17046,7 +17274,9 @@ "experiments": [ { "name": "Enabled", - "disable_features": [ + "enable_features": [ + "ComposeboxUsesChromeComposeClient", + "OmniboxMultilineEditField", "OmniboxMultimodalInput" ] } @@ -17129,6 +17359,35 @@ ] } ], + "OnDeviceNotificationContentDetectionModelv2": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "EnabledSyntheticOnly", + "params": { + "ShowWarningsForSuspiciousNotificationsScoreThreshold": "70", + "ShowWarningsForSuspiciousNotificationsShouldSwapButtons": "false" + }, + "enable_features": [ + "ShowWarningsForSuspiciousNotifications" + ] + }, + { + "name": "EnabledRawAndSynthetic", + "params": { + "ShowWarningsForSuspiciousNotificationsScoreThreshold": "80", + "ShowWarningsForSuspiciousNotificationsShouldSwapButtons": "false" + }, + "enable_features": [ + "ShowWarningsForSuspiciousNotifications" + ] + } + ] + } + ], "OnDeviceStorage": [ { "platforms": [ @@ -17252,29 +17511,6 @@ ] } ], - "OptimizeHTMLElementUrls": [ - { - "platforms": [ - "android", - "android_webview", - "chromeos", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "params": { - "cache_size": "100" - }, - "enable_features": [ - "OptimizeHTMLElementUrls" - ] - } - ] - } - ], "OrcaEnabled": [ { "platforms": [ @@ -17336,6 +17572,26 @@ ] } ], + "OriginMatcherNewCopyAssignment": [ + { + "platforms": [ + "android", + "android_webview", + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "OriginMatcherNewCopyAssignment" + ] + } + ] + } + ], "OutOfProcessPrintDriversPrint": [ { "platforms": [ @@ -17478,9 +17734,11 @@ { "name": "Enabled", "params": { + "ai_mode": "true", "autofill_address": "true", "click_to_call": "true", "collaboration_messaging": "true", + "cookie_controls": "true", "discounts": "true", "file_system_access": "true", "find": "true", @@ -17634,45 +17892,6 @@ ] } ], - "PartitionAllocLargeThreadCacheSizeAndroid": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "size_android_512_20230925", - "params": { - "PartitionAllocLargeThreadCacheSizeValueForLowRAMAndroid": "512" - }, - "enable_features": [ - "PartitionAllocLargeThreadCacheSize" - ] - } - ] - } - ], - "PartitionAllocLargeThreadCacheSizeDesktop": [ - { - "platforms": [ - "chromeos", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "size_32768_20230925", - "params": { - "PartitionAllocLargeThreadCacheSizeValue": "32768" - }, - "enable_features": [ - "PartitionAllocLargeThreadCacheSize" - ] - } - ] - } - ], "PartitionAllocMemoryReclaimer": [ { "platforms": [ @@ -17967,28 +18186,6 @@ ] } ], - "PasswordFormClientsideClassifier": [ - { - "platforms": [ - "android", - "chromeos", - "chromeos_lacros", - "ios", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled_With_Predictions_Caching", - "enable_features": [ - "FieldClassificationModelCaching", - "PasswordFormClientsideClassifier" - ] - } - ] - } - ], "PasswordFormGroupedAffiliations": [ { "platforms": [ @@ -18049,9 +18246,9 @@ ], "experiments": [ { - "name": "VersionOne", + "name": "Enabled_SyncEnablePasswordsSyncErrorMessageAlternative", "params": { - "version": "1" + "version": "3" }, "enable_features": [ "SyncEnablePasswordsSyncErrorMessageAlternative" @@ -18119,6 +18316,7 @@ "PdfOutOfProcessIframe": [ { "platforms": [ + "chromeos", "linux", "mac", "windows" @@ -18229,6 +18427,42 @@ ] } ], + "PerfCombined2025": [ + { + "platforms": [ + "android", + "chromeos", + "ios", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "params": { + "MacCriticalDiskSpacePressureThresholdMB": "250" + }, + "enable_features": [ + "AsyncSetCookie", + "AvoidCloneArgsOnExtensionFunctionDispatch", + "AvoidUnnecessaryGetMinimizeButtonOffset", + "AvoidUnnecessaryShouldRenderRichAnimation", + "GCOnArrayBufferAllocationFailure", + "MacAllowBackgroundingRenderProcesses", + "MacCriticalDiskSpacePressure", + "NoPreReadMainDllIfSsd", + "PageAllocatorRetryOnCommitFailure", + "ReducePPMs", + "RemoveCancelledScriptedIdleTasks", + "ScreenWinDisplayLookupByHMONITOR", + "TerminationTargetPolicy", + "UpdateDirectManipulationHelperOnParentChange" + ] + } + ] + } + ], "PerformanceControlsHatsStudy": [ { "platforms": [ @@ -18412,24 +18646,6 @@ ] } ], - "PermissionsAIv1": [ - { - "platforms": [ - "chromeos", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "PermissionsAIv1" - ] - } - ] - } - ], "PermissionsAIv3": [ { "platforms": [ @@ -18451,6 +18667,7 @@ "PermissionsAIv4": [ { "platforms": [ + "android", "chromeos", "linux", "mac", @@ -18852,26 +19069,6 @@ ] } ], - "PreconnectBookmarkBarTrigger": [ - { - "platforms": [ - "linux", - "mac", - "windows", - "chromeos", - "chromeos_lacros" - ], - "experiments": [ - { - "name": "PrefetchEnabled_PreconnectEnabled", - "enable_features": [ - "BookmarkTriggerForPreconnect", - "BookmarkTriggerForPrefetch" - ] - } - ] - } - ], "PreconnectCreateNewTab": [ { "platforms": [ @@ -18984,6 +19181,24 @@ ] } ], + "PrefetchBookmarkBarTrigger": [ + { + "platforms": [ + "linux", + "mac", + "windows", + "chromeos" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "BookmarkTriggerForPrefetch" + ] + } + ] + } + ], "PrefetchManagerUseNetworkContextPrefetch": [ { "platforms": [ @@ -19103,27 +19318,6 @@ ] } ], - "PreloadInlineDeferredImages": [ - { - "platforms": [ - "android", - "android_webview", - "chromeos", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled_Preload_20250402", - "enable_features": [ - "DocumentPolicyExpectNoLinkedResources", - "PreloadLinkRelDataUrls" - ] - } - ] - } - ], "PreloadTopChromeWebUILessNavigations": [ { "platforms": [ @@ -19142,28 +19336,6 @@ ] } ], - "PreloadingEagerHeuristicsForDesktop": [ - { - "platforms": [ - "chromeos", - "chromeos_lacros", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "params": { - "hover_dwell_time": "10ms" - }, - "enable_features": [ - "PreloadingEagerHeuristics" - ] - } - ] - } - ], "Prerender2EarlyDocumentLifecycleUpdateV2": [ { "platforms": [ @@ -19334,26 +19506,6 @@ ] } ], - "PrioritizeHttpsResourceRecord": [ - { - "platforms": [ - "android", - "chromeos", - "ios", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "PrioritizeHttpsResourceRecord" - ] - } - ] - } - ], "PrivacySandboxActivityTypeStorage": [ { "platforms": [ @@ -19433,6 +19585,25 @@ ] } ], + "PrivacySandboxDisableNotices": [ + { + "platforms": [ + "linux", + "windows", + "android", + "mac", + "chromeos" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "DisablePrivacySandboxPrompts" + ] + } + ] + } + ], "PrivacySandboxGetPromptFromNoticeService": [ { "platforms": [ @@ -19679,6 +19850,23 @@ ] } ], + "ProfileCreationDeclineSigninCTAExperiment": [ + { + "platforms": [ + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "ProfileCreationDeclineSigninCTAExperiment" + ] + } + ] + } + ], "ProfileRemoteCommands": [ { "platforms": [ @@ -19831,25 +20019,6 @@ ] } ], - "ProtectedAudienceBidderUseBalancingThreadSelector": [ - { - "platforms": [ - "android", - "chromeos", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "FledgeBidderUseBalancingThreadSelector" - ] - } - ] - } - ], "ProtectedAudienceClickiness": [ { "platforms": [ @@ -19984,25 +20153,6 @@ ] } ], - "ProtectedAudienceSellerSignalsRequestsOneAtATime": [ - { - "platforms": [ - "android", - "chromeos", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "FledgeSellerSignalsRequestsOneAtATime" - ] - } - ] - } - ], "ProtectedAudienceSendDebugReportCooldownsToBandA": [ { "platforms": [ @@ -20212,6 +20362,26 @@ ] } ], + "PurgeVariationsSeedFromMemory": [ + { + "platforms": [ + "android", + "ios", + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "PurgeVariationsSeedFromMemory" + ] + } + ] + } + ], "PushMessagingDisallowSenderIDs": [ { "platforms": [ @@ -20360,27 +20530,6 @@ ] } ], - "RTCAlignReceivedEncodedVideoTransforms": [ - { - "platforms": [ - "android", - "android_webview", - "chromeos", - "ios", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "RTCAlignReceivedEncodedVideoTransforms" - ] - } - ] - } - ], "RawDrawAndDrDc": [ { "platforms": [ @@ -20440,28 +20589,6 @@ ] } ], - "ReadAloudAudioOverviews": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "Enabled_2025_09_09", - "params": { - "read_aloud_audio_overviews_should_consider_language_in_overview_readability": "true", - "read_aloud_audio_overviews_speed_addition_percentage": "10" - }, - "enable_features": [ - "ReadAloudAudioOverviews", - "ReadAloudAudioOverviewsFeedback", - "ReadAloudAudioOverviewsSkipDisclaimerWhenPossible", - "ReadAloudServerExperiments" - ] - } - ] - } - ], "ReadAloudReadabilityDelay": [ { "platforms": [ @@ -20771,31 +20898,6 @@ ] } ], - "ReducePPMs": [ - { - "platforms": [ - "android", - "chromeos", - "ios", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "AvoidCloneArgsOnExtensionFunctionDispatch", - "AvoidUnnecessaryGetMinimizeButtonOffset", - "AvoidUnnecessaryShouldRenderRichAnimation", - "ReducePPMs", - "ScreenWinDisplayLookupByHMONITOR", - "UpdateDirectManipulationHelperOnParentChange" - ] - } - ] - } - ], "ReduceUserAgentDataLinuxPlatformVersion": [ { "platforms": [ @@ -20841,22 +20943,6 @@ ] } ], - "ReloadHiddenTabsWithActiveCrashedSubframes": [ - { - "platforms": [ - "android", - "android_webview" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "ReloadHiddenTabsWithActiveCrashedSubframes" - ] - } - ] - } - ], "RemotePageMetadataAndroid": [ { "platforms": [ @@ -21066,9 +21152,6 @@ "DelayLayerTreeViewDeletionOnLocalSwap", "QueueNavigationsWhileWaitingForCommit", "RenderDocument" - ], - "disable_features": [ - "RenderDocumentCompositorReuse" ] } ] @@ -21126,6 +21209,9 @@ "experiments": [ { "name": "Enabled", + "params": { + "RendererSideContentDecodingForNavigation": "true" + }, "enable_features": [ "RendererSideContentDecoding" ] @@ -21133,21 +21219,6 @@ ] } ], - "ReportingEventsForAndroid": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "EnterpriseSecurityEventReportingOnAndroid" - ] - } - ] - } - ], "RequestMainFrameAfterFirstVideoFrame": [ { "platforms": [ @@ -21209,6 +21280,22 @@ ] } ], + "ResetTamperedDefaultSearchEngine": [ + { + "platforms": [ + "windows", + "mac" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "ResetTamperedDefaultSearchEngine" + ] + } + ] + } + ], "ResolutionBasedDecoderPriority": [ { "platforms": [ @@ -21286,6 +21373,116 @@ ] } ], + "RestrictSpellingAndGrammarHighlights": [ + { + "platforms": [ + "android", + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "ContentsAndEnablementAndSelection", + "params": { + "RestrictSpellingAndGrammarHighlightsChangedContents": "true", + "RestrictSpellingAndGrammarHighlightsChangedEnablement": "true", + "RestrictSpellingAndGrammarHighlightsChangedSelection": "true" + }, + "enable_features": [ + "RestrictSpellingAndGrammarHighlights" + ] + }, + { + "name": "ContentsAndEnablement", + "params": { + "RestrictSpellingAndGrammarHighlightsChangedContents": "true", + "RestrictSpellingAndGrammarHighlightsChangedEnablement": "true", + "RestrictSpellingAndGrammarHighlightsChangedSelection": "false" + }, + "enable_features": [ + "RestrictSpellingAndGrammarHighlights" + ] + }, + { + "name": "ContentsAndSelection", + "params": { + "RestrictSpellingAndGrammarHighlightsChangedContents": "true", + "RestrictSpellingAndGrammarHighlightsChangedEnablement": "false", + "RestrictSpellingAndGrammarHighlightsChangedSelection": "true" + }, + "enable_features": [ + "RestrictSpellingAndGrammarHighlights" + ] + }, + { + "name": "EnablementAndSelection", + "params": { + "RestrictSpellingAndGrammarHighlightsChangedContents": "false", + "RestrictSpellingAndGrammarHighlightsChangedEnablement": "true", + "RestrictSpellingAndGrammarHighlightsChangedSelection": "true" + }, + "enable_features": [ + "RestrictSpellingAndGrammarHighlights" + ] + }, + { + "name": "Contents", + "params": { + "RestrictSpellingAndGrammarHighlightsChangedContents": "true", + "RestrictSpellingAndGrammarHighlightsChangedEnablement": "false", + "RestrictSpellingAndGrammarHighlightsChangedSelection": "false" + }, + "enable_features": [ + "RestrictSpellingAndGrammarHighlights" + ] + }, + { + "name": "Enablement", + "params": { + "RestrictSpellingAndGrammarHighlightsChangedContents": "false", + "RestrictSpellingAndGrammarHighlightsChangedEnablement": "true", + "RestrictSpellingAndGrammarHighlightsChangedSelection": "false" + }, + "enable_features": [ + "RestrictSpellingAndGrammarHighlights" + ] + }, + { + "name": "Selection", + "params": { + "RestrictSpellingAndGrammarHighlightsChangedContents": "false", + "RestrictSpellingAndGrammarHighlightsChangedEnablement": "false", + "RestrictSpellingAndGrammarHighlightsChangedSelection": "true" + }, + "enable_features": [ + "RestrictSpellingAndGrammarHighlights" + ] + } + ] + } + ], + "ResumeNavigationWithSpeculativeRFHProcessGone": [ + { + "platforms": [ + "android", + "android_webview", + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "ResumeNavigationWithSpeculativeRFHProcessGone" + ] + } + ] + } + ], "RetrieveTrustedVaultKeyKeyboardAccessoryAction": [ { "platforms": [ @@ -21317,6 +21514,21 @@ ] } ], + "ReturnDeniedForNotificationsWhenNoAppLevelSettings": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "ReturnDeniedForNotificationsWhenNoAppLevelSettings" + ] + } + ] + } + ], "RichInlineAutocompleteIOS": [ { "platforms": [ @@ -21337,6 +21549,25 @@ ] } ], + "RollBackModeB": [ + { + "platforms": [ + "android", + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "RollBackModeB" + ] + } + ] + } + ], "RoundedWindows": [ { "platforms": [ @@ -21505,30 +21736,6 @@ ] } ], - "SafetyHubDisruptiveNotificationRevocation": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "Enabled_Moderate_v1", - "params": { - "experiment_version": "1", - "max_engagement_score": "0.0", - "min_engagement_score_delta": "3.0", - "min_notification_count": "4", - "shadow_run": "false", - "waiting_for_metrics_days": "1", - "waiting_time_as_proposed": "4d" - }, - "enable_features": [ - "SafetyHubDisruptiveNotificationRevocation" - ] - } - ] - } - ], "SafetyHubDisruptiveNotificationRevocationDesktop": [ { "platforms": [ @@ -22779,44 +22986,6 @@ ] } ], - "ScriptBlockingDryRunIOS": [ - { - "platforms": [ - "ios" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "EnableFingerprintingProtectionFilteriOSDryRun" - ] - } - ] - } - ], - "ScriptBlockingIncognito": [ - { - "platforms": [ - "android", - "chromeos", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled_20250812", - "params": { - "performance_measurement_rate": "1.0" - }, - "enable_features": [ - "EnableFingerprintingProtectionFilterInIncognito", - "FingerprintingProtectionUx" - ] - } - ] - } - ], "SeaPenQueryRewrite": [ { "platforms": [ @@ -23039,21 +23208,6 @@ ] } ], - "SegmentationCompactionFix": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "SegmentationCompactionFix" - ] - } - ] - } - ], "SegmentationPlatformURLVisitResumptionRanker": [ { "platforms": [ @@ -23336,7 +23490,8 @@ { "name": "Enabled", "enable_features": [ - "ServiceWorkerStaticRouterRaceNetworkRequestPerformanceImprovement" + "ServiceWorkerStaticRouterRaceNetworkRequestPerformanceImprovement", + "ServiceWorkerStaticRouterRaceRequestFix2" ] } ] @@ -23363,6 +23518,26 @@ ] } ], + "SessionRestoreInfoBar": [ + { + "platforms": [ + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled_ContinueDefault", + "params": { + "continue_session": "true" + }, + "enable_features": [ + "SessionRestoreInfoBar" + ] + } + ] + } + ], "SettingSearchExplorationHaTS": [ { "platforms": [ @@ -23471,21 +23646,6 @@ ] } ], - "SharedHighlightingAmp": [ - { - "platforms": [ - "ios" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "SharedHighlightingAmp" - ] - } - ] - } - ], "SharedHighlightingIphClank": [ { "platforms": [ @@ -23768,6 +23928,11 @@ { "name": "Enabled_WithMenu", "params": { + "drop_target_nudge_to_full_max_width": "360", + "drop_target_nudge_to_full_min_width": "120", + "drop_target_nudge_to_full_width_percentage": "15", + "drop_target_show_delay": "1400ms", + "drop_target_width_percentage": "15", "mini_toolbar_active_config": "showmenu" }, "enable_features": [ @@ -23776,6 +23941,8 @@ "IPH_SideBySideTabSwitchFeature", "ReloadSelectionModel", "SideBySide", + "SideBySideDropTargetNudge", + "SideBySideKeyboardShortcut", "SideBySideLinkMenuNewBadge", "SideBySideSessionRestore" ] @@ -23984,9 +24151,7 @@ "SkiaGraphite": [ { "platforms": [ - "android", - "mac", - "windows" + "mac" ], "experiments": [ { @@ -24000,6 +24165,25 @@ ] } ] + }, + { + "platforms": [ + "android", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "params": { + "dawn_backend_validation": "false", + "dawn_skip_validation": "true", + "dawn_use_persistent_cache": "true" + }, + "enable_features": [ + "SkiaGraphite" + ] + } + ] } ], "SkiaGraphiteSmallPathAtlas": [ @@ -24035,6 +24219,29 @@ ] } ], + "SkipIPCChanelPausingForNonGuests": [ + { + "platforms": [ + "android", + "android_webview", + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "params": { + "internal_webui_only": "false" + }, + "enable_features": [ + "SkipIPCChanelPausingForNonGuests" + ] + } + ] + } + ], "SkipModerateMemoryPressureLevelMac": [ { "platforms": [ @@ -24100,6 +24307,32 @@ ] } ], + "SlimScheduler": [ + { + "platforms": [ + "android", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "params": { + "pending_frames": "1" + }, + "enable_features": [ + "DisplaySchedulerAsClient", + "NoCompositorFrameAcks", + "NoLateBeginFrames" + ], + "disable_features": [ + "AckOnSurfaceActivationWhenInteractive" + ] + } + ] + } + ], "SlopBucket": [ { "platforms": [ @@ -24113,6 +24346,15 @@ "experiments": [ { "name": "Enabled", + "params": { + "chunk_size": "524288", + "enabled_for_cache_response": "true", + "max_chunks_per_request": "8", + "max_chunks_total": "32", + "memory_pressure_disable_level": "MODERATE", + "min_buffer_size": "32768", + "require_priority": "MEDIUM" + }, "enable_features": [ "SlopBucket" ] @@ -24150,29 +24392,6 @@ ] } ], - "SocketPoolSizePerTopLevelSiteTrial": [ - { - "platforms": [ - "android", - "chromeos", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "params": { - "SocketPoolSizePerTopLevelSiteTrialNormalProfileLimit": "513", - "SocketPoolSizePerTopLevelSiteTrialWebSocketProfileLimit": "513" - }, - "enable_features": [ - "SocketPoolSizePerTopLevelSiteTrial" - ] - } - ] - } - ], "SoftNavigationDetectionAdvancedPaintAttribution": [ { "platforms": [ @@ -24281,7 +24500,6 @@ "name": "Enabled", "enable_features": [ "PreventDuplicateImageDecodes", - "SendExplicitDecodeRequestsImmediately", "SpeculativeImageDecodes" ] } @@ -24337,6 +24555,36 @@ ] } ], + "SplitscreenVersusFullScreenForNewWindows": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "RobustWindowManagementExperimental" + ] + } + ] + } + ], + "SpotlightNeverRetainIndex": [ + { + "platforms": [ + "ios" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "SpotlightNeverRetainIndex" + ] + } + ] + } + ], "SqlScopedTransactionWebDatabase": [ { "platforms": [ @@ -24530,16 +24778,50 @@ ] } ], - "SupportMultipleServerRequestsForPixPayments": [ + "SubframeProcessShutdownDelay": [ { "platforms": [ - "android" + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "EnabledDelay10s", + "params": { + "delay_seconds": "10" + }, + "enable_features": [ + "SubframeProcessShutdownDelay" + ] + }, + { + "name": "EnabledDelay40s", + "params": { + "delay_seconds": "40" + }, + "enable_features": [ + "SubframeProcessShutdownDelay" + ] + } + ] + } + ], + "SubresourceFilterPrewarm": [ + { + "platforms": [ + "android", + "chromeos", + "linux", + "mac", + "windows" ], "experiments": [ { "name": "Enabled", "enable_features": [ - "SupportMultipleServerRequestsForPixPayments" + "SubresourceFilterPrewarm" ] } ] @@ -24548,6 +24830,8 @@ "SuppressMemoryListeners": [ { "platforms": [ + "android", + "chromeos", "linux", "mac", "windows" @@ -24560,6 +24844,9 @@ }, "enable_features": [ "SuppressMemoryListeners" + ], + "disable_features": [ + "SuppressMemoryMonitor" ] } ] @@ -24591,6 +24878,21 @@ ] } ], + "SustainedMPUrgentDiscarding": [ + { + "platforms": [ + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "SustainedMPUrgentDiscarding" + ] + } + ] + } + ], "SwiftShaderDeprecation": [ { "platforms": [ @@ -24612,6 +24914,29 @@ ] } ], + "SyncBookmarksLimit": [ + { + "platforms": [ + "android", + "chromeos", + "ios", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Limit250k", + "params": { + "sync-bookmarks-limit-value": "250000" + }, + "enable_features": [ + "SyncBookmarksLimit" + ] + } + ] + } + ], "SyncDetermineAccountManagedStatus": [ { "platforms": [ @@ -24655,50 +24980,6 @@ ] } ], - "SyncMoveValuablesToProfileDb": [ - { - "platforms": [ - "android", - "android_webview", - "chromeos", - "fuchsia", - "ios", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "SyncMoveValuablesToProfileDb" - ] - } - ] - } - ], - "SyncPointGraphValidation": [ - { - "platforms": [ - "android", - "android_webview", - "chromeos", - "fuchsia", - "ios", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "SyncPointGraphValidation" - ] - } - ] - } - ], "SyncUseOsCryptAsync": [ { "platforms": [ @@ -24807,6 +25088,23 @@ ] } ], + "SystemSignalCollectionImprovementEnabled": [ + { + "platforms": [ + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "SystemSignalCollectionImprovementEnabled" + ] + } + ] + } + ], "TLSTrustAnchorIDs": [ { "platforms": [ @@ -24870,7 +25168,7 @@ ] } ], - "TabCollectionAndroid": [ + "TabFreezingUsesDiscard": [ { "platforms": [ "android" @@ -24879,8 +25177,7 @@ { "name": "Enabled", "enable_features": [ - "TabCollectionAndroid", - "TabGroupAndroidVisualDataCleanup" + "TabFreezingUsesDiscard" ] } ] @@ -24901,21 +25198,6 @@ ] } ], - "TabGridNewTransitions": [ - { - "platforms": [ - "ios" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "TabGridNewTransitions" - ] - } - ] - } - ], "TabGroupParityAndroidV2": [ { "platforms": [ @@ -25029,7 +25311,7 @@ ] } ], - "TabletTabStripOptimizations": [ + "TabStorageSqlitePrototype": [ { "platforms": [ "android" @@ -25038,8 +25320,7 @@ { "name": "Enabled", "enable_features": [ - "MvcUpdateViewWhenModelChanged", - "ReloadTabUiResourcesIfChanged" + "TabStorageSqlitePrototype" ] } ] @@ -25156,6 +25437,55 @@ ] } ], + "TcpSocketPoolLimitRandomization": [ + { + "platforms": [ + "android", + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled_256", + "params": { + "TcpSocketPoolLimitRandomizationBase": "0.000001", + "TcpSocketPoolLimitRandomizationCapacity": "256", + "TcpSocketPoolLimitRandomizationMinimum": "0.01", + "TcpSocketPoolLimitRandomizationNoise": "0.2" + }, + "enable_features": [ + "TcpSocketPoolLimitRandomization" + ] + }, + { + "name": "Enabled_128", + "params": { + "TcpSocketPoolLimitRandomizationBase": "0.000001", + "TcpSocketPoolLimitRandomizationCapacity": "128", + "TcpSocketPoolLimitRandomizationMinimum": "0.01", + "TcpSocketPoolLimitRandomizationNoise": "0.2" + }, + "enable_features": [ + "TcpSocketPoolLimitRandomization" + ] + }, + { + "name": "Enabled_64", + "params": { + "TcpSocketPoolLimitRandomizationBase": "0.000001", + "TcpSocketPoolLimitRandomizationCapacity": "64", + "TcpSocketPoolLimitRandomizationMinimum": "0.01", + "TcpSocketPoolLimitRandomizationNoise": "0.2" + }, + "enable_features": [ + "TcpSocketPoolLimitRandomization" + ] + } + ] + } + ], "TextInputHostMojoCapabilityControlWorkaround": [ { "platforms": [ @@ -25188,67 +25518,6 @@ ] } ], - "ThirdPartyDisableChromeAutofillSettingsScreenStudy": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "ThirdPartyDisableChromeAutofillSettingsScreen" - ] - } - ] - } - ], - "ThreadCacheMinCachedMemoryForPurging": [ - { - "platforms": [ - "android", - "chromeos", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "size_500kb_20230909", - "params": { - "ThreadCacheMinCachedMemoryForPurgingBytes": "512000" - }, - "enable_features": [ - "EnableConfigurableThreadCacheMinCachedMemoryForPurging" - ] - } - ] - } - ], - "ThreadCachePurgeInterval": [ - { - "platforms": [ - "android", - "chromeos", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "interval_1_2_60_20230909", - "params": { - "ThreadCacheDefaultPurgeInterval": "2s", - "ThreadCacheMaxPurgeInterval": "60s", - "ThreadCacheMinPurgeInterval": "1s" - }, - "enable_features": [ - "EnableConfigurableThreadCachePurgeInterval" - ] - } - ] - } - ], "ThreeButtonPasswordSaveDialog": [ { "platforms": [ @@ -25287,22 +25556,16 @@ ] } ], - "TimedHTMLParserBudgetForAndroid": [ + "TokenHandleRefactoring": [ { "platforms": [ - "android", - "android_webview" + "chromeos" ], "experiments": [ { - "name": "Enabled_10_50_2", - "params": { - "default-parser-budget": "10ms", - "long-parser-budget": "50ms", - "num-yields-with-default-budget": "2" - }, + "name": "Enabled", "enable_features": [ - "TimedHTMLParserBudget" + "UseTokenHandleStore" ] } ] @@ -25342,16 +25605,16 @@ ] } ], - "TopControlsRefactor": [ + "ToolbarStaleCaptureBugFix": [ { "platforms": [ "android" ], "experiments": [ { - "name": "Enabled", + "name": "Enabled_20251008", "enable_features": [ - "TopControlsRefactor" + "ToolbarStaleCaptureBugFix" ] } ] @@ -25728,18 +25991,6 @@ "windows" ], "experiments": [ - { - "name": "ProcessPriority", - "enable_features": [ - "UnimportantFramesPriority", - "UserVisibleProcessPriority" - ], - "disable_features": [ - "IsolatesPriorityBestEffortWhenHidden", - "IsolatesPriorityUseProcessPriority", - "RestrictThreadPoolInBackground" - ] - }, { "name": "IsolatesPriority", "enable_features": [ @@ -25752,30 +26003,6 @@ "UserVisibleProcessPriority" ] }, - { - "name": "RestrictThreadPoolInBackground", - "enable_features": [ - "RestrictThreadPoolInBackground", - "UnimportantFramesPriority" - ], - "disable_features": [ - "IsolatesPriorityBestEffortWhenHidden", - "IsolatesPriorityUseProcessPriority", - "UserVisibleProcessPriority" - ] - }, - { - "name": "AllRendererSettings", - "enable_features": [ - "IsolatesPriorityBestEffortWhenHidden", - "IsolatesPriorityUseProcessPriority", - "RestrictThreadPoolInBackground", - "UnimportantFramesPriority" - ], - "disable_features": [ - "UserVisibleProcessPriority" - ] - }, { "name": "All", "enable_features": [ @@ -25809,21 +26036,6 @@ ] } ], - "UpdateStateBeforeUnbinding": [ - { - "platforms": [ - "android_webview" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "UpdateStateBeforeUnbinding" - ] - } - ] - } - ], "UploadOfficeToCloud": [ { "platforms": [ @@ -25942,37 +26154,6 @@ ] } ], - "UseFinchPermanentCountyForFetchCountryId": [ - { - "platforms": [ - "chromeos", - "linux" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "UseFinchPermanentCountyForFetchCountryId" - ] - } - ] - } - ], - "UseFirstCoalescedFrameAsFlingGenerationTimestamp": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "UseFirstCoalescedFrameAsFlingGenerationTimestamp" - ] - } - ] - } - ], "UseFreedesktopSecretKeyProvider": [ { "platforms": [ @@ -26003,21 +26184,6 @@ ] } ], - "UseFullScreenHeuristicForWgc": [ - { - "platforms": [ - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "UseFullScreenHeuristicForWgc" - ] - } - ] - } - ], "UseHeuristicForWindowsFullScreenPowerPoint": [ { "platforms": [ @@ -26066,6 +26232,41 @@ ] } ], + "UsePersistentCacheForCodeCache": [ + { + "platforms": [ + "android", + "chromeos", + "linux", + "windows", + "mac" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "UsePersistentCacheForCodeCache" + ] + } + ] + } + ], + "UsePostBodyForUrlProvisionFetcher": [ + { + "platforms": [ + "android", + "fuchsia" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "UsePostBodyForUrlProvisionFetcher" + ] + } + ] + } + ], "UseSCContentSharingPicker": [ { "platforms": [ @@ -26180,6 +26381,21 @@ ] } ], + "UserLevelMemoryPressureSignalMetricsOnly": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "UserLevelMemoryPressureSignalMetricsOnly" + ] + } + ] + } + ], "V8CodeFlushing": [ { "platforms": [ @@ -26196,14 +26412,15 @@ { "name": "Time180Sparkplug", "params": { - "V8FlushCodeOldTime": "180" + "bytecode_old_time": "180" }, "enable_features": [ - "V8FlushBaselineCode", - "V8FlushCodeBasedOnTime" + "V8Flag_flush_baseline_code", + "V8Flag_flush_code_based_on_time", + "V8Flag_ineffective_gcs_forces_last_resort" ], "disable_features": [ - "V8FlushCodeBasedOnTabVisibility" + "V8Flag_flush_code_based_on_tab_visibility" ] } ] @@ -26399,6 +26616,26 @@ ] } ], + "V8MemoryReducerFavorsMemoryAblation": [ + { + "platforms": [ + "android", + "android_webview", + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Disabled", + "disable_features": [ + "V8Flag_memory_reducer_favors_memory" + ] + } + ] + } + ], "V8ParserAblation": [ { "platforms": [ @@ -26456,6 +26693,29 @@ ] } ], + "V8SetIsLoadingExperiments": [ + { + "platforms": [ + "android", + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Both", + "enable_features": [ + "ComputeCurrentRailModeFromPerformanceScenario", + "RAILInputAsLoading" + ], + "disable_features": [ + "SetIsLoadingAblation" + ] + } + ] + } + ], "V8SideStepTransitions": [ { "platforms": [ @@ -26604,25 +26864,6 @@ ] } ], - "VariationsHeaderForCrossSiteSpeculationRulesPrefetch": [ - { - "platforms": [ - "android", - "chromeos", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "VariationsHeaderForCrossSiteSpeculationRulesPrefetch" - ] - } - ] - } - ], "VerifyDidCommitParams": [ { "platforms": [ @@ -26700,6 +26941,25 @@ ] } ], + "VerifyQWACsRollout": [ + { + "platforms": [ + "android", + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "VerifyQWACs" + ] + } + ] + } + ], "VideoConferenceDLCUIRollout": [ { "platforms": [ @@ -26738,21 +26998,6 @@ ] } ], - "VideoDecodeBatching": [ - { - "platforms": [ - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "VideoDecodeBatching" - ] - } - ] - } - ], "VideoPictureInPictureControlsUpdate2024": [ { "platforms": [ @@ -26821,12 +27066,25 @@ "name": "EnabledFSM", "enable_features": [ "VizDirectCompositorThreadIpcFrameSinkManager" + ], + "disable_features": [ + "VizDirectCompositorThreadIpcNonRoot" ] }, { "name": "EnabledNonRoot", "enable_features": [ "VizDirectCompositorThreadIpcNonRoot" + ], + "disable_features": [ + "VizDirectCompositorThreadIpcFrameSinkManager" + ] + }, + { + "name": "Control", + "disable_features": [ + "VizDirectCompositorThreadIpcFrameSinkManager", + "VizDirectCompositorThreadIpcNonRoot" ] } ] @@ -26842,12 +27100,25 @@ "name": "EnabledFSM", "enable_features": [ "VizDirectCompositorThreadIpcFrameSinkManager" + ], + "disable_features": [ + "VizDirectCompositorThreadIpcNonRoot" ] }, { "name": "EnabledNonRoot", "enable_features": [ "VizDirectCompositorThreadIpcNonRoot" + ], + "disable_features": [ + "VizDirectCompositorThreadIpcFrameSinkManager" + ] + }, + { + "name": "Control", + "disable_features": [ + "VizDirectCompositorThreadIpcFrameSinkManager", + "VizDirectCompositorThreadIpcNonRoot" ] } ] @@ -27316,20 +27587,6 @@ ] } ], - "WebRTC-ForceDtls13": [ - { - "platforms": [ - "android", - "android_webview", - "chromeos" - ], - "experiments": [ - { - "name": "Enabled,_20250207" - } - ] - } - ], "WebRTC-IPv6NetworkResolutionFixes": [ { "platforms": [ @@ -27846,21 +28103,6 @@ ] } ], - "WebViewConnectToComponentProviderInBackground": [ - { - "platforms": [ - "android_webview" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "WebViewConnectToComponentProviderInBackground" - ] - } - ] - } - ], "WebViewDisableCHIPS": [ { "platforms": [ @@ -28289,6 +28531,29 @@ ] } ], + "WebrtcAcceleratedScaling": [ + { + "platforms": [ + "chromeos", + "linux", + "mac", + "windows", + "android", + "ios" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "WebrtcAcceleratedScaling" + ], + "disable_features": [ + "BreakoutBoxConversionWithoutSinkSignal" + ] + } + ] + } + ], "WhatsNewHats": [ { "platforms": [ @@ -28513,6 +28778,24 @@ ] } ], + "YourSavedInfoBrandingInSettings": [ + { + "platforms": [ + "windows", + "mac", + "linux", + "chromeos" + ], + "experiments": [ + { + "name": "Enable", + "enable_features": [ + "YourSavedInfoBrandingInSettings" + ] + } + ] + } + ], "ZPSPrefetchDebouncingDesktop": [ { "platforms": [ diff --git a/tools/under-control/src/third_party/blink/public/mojom/use_counter/metrics/web_feature.mojom b/tools/under-control/src/third_party/blink/public/mojom/use_counter/metrics/web_feature.mojom index 2758d78f..1108bd8c 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 @@ -1397,8 +1397,8 @@ enum WebFeature { kAnchorClickDispatchForNonConnectedNode = 1971, kHTMLParseErrorNestedForm = 1972, kFontShapingNotDefGlyphObserved = 1973, - kPostMessageOutgoingWouldBeBlockedByConnectSrc = 1974, - kPostMessageIncomingWouldBeBlockedByConnectSrc = 1975, + kOBSOLETE_PostMessageOutgoingWouldBeBlockedByConnectSrc = 1974, + kOBSOLETE_PostMessageIncomingWouldBeBlockedByConnectSrc = 1975, kCrossOriginPropertyAccess = 1977, kCrossOriginPropertyAccessFromOpener = 1978, kCredentialManagerCreate = 1979, @@ -2202,7 +2202,7 @@ enum WebFeature { kV8XRSession_End_Method = 2911, kV8XRWebGLLayer_Constructor = 2912, kFetchKeepalive = 2913, - kCSSTransitionCancelledByRemovingStyle = 2914, + kOBSOLETE_CSSTransitionCancelledByRemovingStyle = 2914, kV8RTCRtpSender_SetStreams_Method = 2915, kCookieNoSameSite = 2916, kCookieInsecureAndSameSiteNone = 2917, @@ -3615,7 +3615,7 @@ enum WebFeature { kOBSOLETE_DeferredShaping2ReshapedByInspector = 4342, kOBSOLETE_DeferredShaping2ReshapedByPrinting = 4343, kOBSOLETE_DeferredShaping2ReshapedByScrolling = 4344, - kLCPCandidateImageFromOriginDirtyStyle = 4345, + kOBSOLETE_LCPCandidateImageFromOriginDirtyStyle = 4345, kV8TurboFanOsrCompileStarted = 4346, kV8Document_HasRedemptionRecord_Method = 4347, kOBSOLETE_DeferredShaping2ReshapedByLastResort = 4348, @@ -4682,7 +4682,7 @@ enum WebFeature { kInterestFor = 5373, kTextAutoSizingDisabledOnFlexbox = 5374, kAriaLabeledByAlternativeSpelling = 5375, - kCanvasTextNg = 5376, + kOBSOLETE_CanvasTextNg = 5376, kDOMWindowOpenPopup = 5377, kFencedFrameDisableUntrustedNetwork = 5378, kFencedFrameNotifyEvent = 5379, @@ -4697,7 +4697,8 @@ enum WebFeature { kOBSOLETE_V8AILanguageModel_MeasureInputUsage_Method = 5388, kCredentialsGetImmediateMediationWithWebAuthnOnly = 5389, kCredentialsGetImmediateMediationWithWebAuthnAndPasswords = 5390, - kOBSOLETENonNoneTouchActionWouldLoseEditableHandwritingRestoredByScroller = 5391, + kOBSOLETENonNoneTouchActionWouldLoseEditableHandwritingRestoredByScroller = + 5391, kTranslator_Create = 5392, kTranslator_Availability = 5393, kTranslator_SourceLanguage = 5394, @@ -4985,6 +4986,51 @@ enum WebFeature { kResolvedColumnRuleWidthWithNoneOrHiddenStyle = 5670, kResolvedOutlineWidthWithNoneOrHiddenStyle = 5671, kContextMenuEventDefaultPrevented = 5672, + kSmartCardEstablishContext = 5673, + kSmartCardConnect = 5674, + kNavigatorCPUPerformance = 5675, + kSelectionRemoveRangeNotFoundWouldThrow = 5676, + kNestedSvgCssSizingProperties = 5677, + kCryptoAlgorithmChaCha20Poly1305 = 5678, + kCryptoAlgorithmMlDsa44 = 5679, + kCryptoAlgorithmMlDsa65 = 5680, + kCryptoAlgorithmMlDsa87 = 5681, + kCryptoAlgorithmMlKem768 = 5682, + kCryptoAlgorithmMlKem1024 = 5683, + kClipboardChangedBetweenReadAndGetType = 5684, + kClipboardChangedBetweenGetTypes = 5685, + kClipboardReadAndGetTypeTimeDiffIsBetween5SecAnd1Min = 5686, + kClipboardReadAndGetTypeTimeDiffIsBetween1MinAnd10Min = 5687, + kClipboardReadAndGetTypeTimeDiffIsMoreThan10Min = 5688, + kClipboardGetTypeTimeDiffOfSameTypeIsBetween5SecAnd1Min = 5689, + kClipboardGetTypeTimeDiffOfSameTypeIsBetween1MinAnd10Min = 5690, + kClipboardGetTypeTimeDiffOfSameTypeIsMoreThan10Min = 5691, + kClipboardGetTypeWindowNotInFocus = 5692, + kReportBodyToJSON = 5693, + kCSPViolationReportBodyToJSON = 5694, + kDeprecationReportBodyToJSON = 5695, + kInterventionReportBodyToJSON = 5696, + kDocumentPolicyViolationReportBodyToJSON = 5697, + kIntegrityViolationReportBodyToJSON = 5698, + kPermissionsPolicyViolationReportBodyToJSON = 5699, + kCoopAccessViolationReportBodyToJSON = 5700, + kTestReportBodyToJSON = 5701, + kSpeculationRulesPrerenderUntilScript = 5702, + kClipboardChangeEventChangeIdAttribute = 5703, + kWebRTCLocalNetworkAccessCheck = 5704, + kWebRTCLocalNetworkAccessPublicToLocal = 5705, + kWebRTCLocalNetworkAccessPublicToLoopback = 5706, + kWebRTCLocalNetworkAccessLocalToLoopback = 5707, + kIdentityDigitalCredentialsCreation = 5708, + kIdentityDigitalCredentialsCreationSuccess = 5709, + kFedCmErrorCodeAttribute = 5710, + kFedCmErrorErrorAttribute = 5711, + kAnimationAllTypes = 5712, + kAnimationSvgTypes = 5713, + kAnimationNonCompositedTypes = 5714, + kAnimationCompositedTypes = 5715, + kAnimationSvgNonCompositedTypes = 5716, + kAnimationSvgCompositedTypes = 5717, // Add new features immediately above this line. Don't change assigned // numbers of any item, and don't reuse removed slots. Also don't add extra diff --git a/tools/under-control/src/third_party/blink/public/mojom/webpreferences/web_preferences.mojom b/tools/under-control/src/third_party/blink/public/mojom/webpreferences/web_preferences.mojom index 9827715a..34779a40 100755 --- a/tools/under-control/src/third_party/blink/public/mojom/webpreferences/web_preferences.mojom +++ b/tools/under-control/src/third_party/blink/public/mojom/webpreferences/web_preferences.mojom @@ -4,33 +4,34 @@ module blink.mojom; +import "mojo/public/mojom/base/string16.mojom"; +import "skia/public/mojom/skcolor.mojom"; import "third_party/blink/public/mojom/css/preferred_color_scheme.mojom"; import "third_party/blink/public/mojom/css/preferred_contrast.mojom"; import "third_party/blink/public/mojom/v8_cache_options.mojom"; import "url/mojom/url.mojom"; -import "mojo/public/mojom/base/string16.mojom"; -import "skia/public/mojom/skcolor.mojom"; enum PointerType { - kPointerNone = 1, // 1 << 0 - kPointerFirstType = kPointerNone, - kPointerCoarseType = 2, // 1 << 1 - kPointerFineType = 4 // 1 << 2 + kPointerNone = 1, // 1 << 0 + kPointerFirstType = kPointerNone, + kPointerCoarseType = 2, // 1 << 1 + kPointerFineType = 4, // 1 << 2 }; enum HoverType { - kHoverNone = 1, // 1 << 0 - kHoverFirstType = kHoverNone, - kHoverHoverType = 2 // 1 << 1 + kHoverNone = 1, // 1 << 0 + kHoverFirstType = kHoverNone, + kHoverHoverType = 2, // 1 << 1 }; -// For media feature update, indicating the update ability of the output display, +// For media feature update, indicating the update ability of the output +// display, // once renering is done: // Slow - e-ink screens, underpowered devices. // Fast - regular computer screen. enum OutputDeviceUpdateAbilityType { kSlowType, - kFastType + kFastType, }; // There are multiple editing details that are different on Windows than @@ -52,7 +53,7 @@ enum EditingBehavior { kEditingWindowsBehavior, kEditingUnixBehavior, kEditingAndroidBehavior, - kEditingChromeOSBehavior + kEditingChromeOSBehavior, }; // ImageAnimationPolicy is used for controlling image animation @@ -62,10 +63,15 @@ enum EditingBehavior { enum ImageAnimationPolicy { kImageAnimationPolicyAllowed, kImageAnimationPolicyAnimateOnce, - kImageAnimationPolicyNoAnimation + kImageAnimationPolicyNoAnimation, }; -enum ViewportStyle { kDefault, kMobile, kTelevision, kLast = kTelevision }; +enum ViewportStyle { + kDefault, + kMobile, + kTelevision, + kLast = kTelevision, +}; // Defines the autoplay policy to be used. Should match the class in // WebSettings.h. @@ -321,7 +327,7 @@ struct WebPreferences { [EnableIf=is_android] bool report_screen_size_in_physical_pixels_quirk; - // Used by Android_WebView only to support legacy apps that inject script int32o + // Used by Android_WebView only to support legacy apps that inject script into // a top-level initial empty document and expect it to persist on navigation. [EnableIf=is_android] bool reuse_global_for_unowned_main_frame; @@ -354,12 +360,12 @@ struct WebPreferences { [EnableIf=is_android] bool scroll_top_left_interop_enabled; - [EnableIf=is_android] // Don't accelerate small canvases to avoid crashes TODO(crbug.com/1004304) + [EnableIf=is_android] bool disable_accelerated_small_canvases; - [EnableIf=is_android] // Long press on links selects text instead of triggering context menu. + [EnableIf=is_android] bool long_press_link_select_text; // Disable the Web Authentication (WebAuthn) API. @@ -498,20 +504,27 @@ struct WebPreferences { bool modal_context_menu = true; // Whether the safe-area-insets should be changed dynamically based on - // browser controls shown ratio. This value is used in web settings only - // when feature DynamicSafeAreaInsets is enabled. + // browser controls shown ratio on Android. + [EnableIf=is_android] bool dynamic_safe_area_insets_enabled = false; // Whether PaymentRequest is enabled. Controlled by WebView settings on // WebView and by `kWebPayments` feature flag everywhere. bool payment_request_enabled = false; - bool api_based_fingerprinting_interventions_enabled = false; - bool content_based_fingerprinting_protection_enabled = false; bool ai_prompt_api_enabled = false; [EnableIf=is_android] - bool increment_local_surface_id_for_mainframe_same_doc_navigation = true; + bool should_screenshot_on_mainframe_same_doc_navigation = true; + + // On macOS, the popup UI for end tag before inserting @@ -2860,18 +2935,9 @@ name: "InsertBlockquoteBeforeOuterBlock", status: "stable", }, - { - name: "InsertLineBreakIfInlineListItem", - status: "stable", - }, { // crbug.com/1420675 name: "InsertLineBreakIfPhrasingContent", - status: {"Android": "test", "default": "stable"}, - }, - { - // Improved support for debugging CSSNestedDeclarations. - name: "InspectorGhostRules", status: "stable", }, { @@ -2904,8 +2970,9 @@ status: "stable", }, { - // If enabled, IntersectionObserverScrollMargin will be parsed. - name: "IntersectionObserverScrollMargin", + // If enabled, BeginMainFrame will always be requested when there are + // active IntersectionObservers and also active composited animations. + name: "IntersectionObserverCompositedAnimationsForceMainFrames", status: "stable", }, { @@ -2947,6 +3014,7 @@ "Mac": "stable", "Linux": "stable", "ChromeOS": "stable", + "Android": "test", "default": "", }, origin_trial_feature_name: "LanguageDetectionAPI", @@ -2965,17 +3033,6 @@ { name: "LayoutIgnoreMarginsForSticky", }, - { - name: "LayoutNGShapeCache", - status: "stable", - base_feature: "LayoutNGShapeCache", - }, - { - name: "LazyInitializeMediaControls", - base_feature: "none", - public: true, - // This is enabled by features::kLazyInitializeMediaControls. - }, { // Allow triggering the word suggestion from left click. // From crbug.com/433209485 @@ -2984,18 +3041,20 @@ "Android": "stable" } }, + { + // Makes light dismiss for popovers and dialogs use the click event + // instead of pointerdown and pointerup in order to fix light dismiss + // bugs for touch inputs. + // https://issues.chromium.org/issues/408010435 + name: "LightDismissFromClick", + status: "experimental", + }, { name: "LimitThirdPartyCookies", origin_trial_feature_name: "LimitThirdPartyCookies", status: "experimental", base_feature: "none", }, - { - // Stop emitting U+FFFC Object Replacement Character for out-of-flow - // objects such as floating or out-of-flow positioned. crbug.com/40658609 - name: "LineBreakOofNoOrc", - status: "stable", - }, { // Improves the logic for removing focus from a currently focused // element when its href attribute is removed by considering other ways @@ -3009,12 +3068,6 @@ name: "ListOwnerMustHaveCSSBox", status: "stable", }, - { - // Enabling this changes the `list-style-position` quirk to match the - // HTML standard spec. - name: "ListStylePositionQuirkStandard", - status: "stable", - }, { // Reverse origin trial allowing Local Network Access requests on // non-secure contexts (but still requiring a permission grant from the @@ -3161,12 +3214,6 @@ name: "MediaCaptureVoiceIsolation", status: "experimental", }, - // Set to reflect the MediaCastOverlayButton feature. - { - name: "MediaCastOverlayButton", - base_feature: "none", - public: true, - }, { name: "MediaControlsExpandGesture", base_feature: "none", @@ -3245,13 +3292,12 @@ }, { name: "MenuElements", - status: "test", + status: "experimental", }, { name: "MessagePortCloseEvent", status: "test", }, - // This is enabled by default on Windows only. The only part that's // "experimental" is the support on other platforms. { @@ -3364,7 +3410,6 @@ }, base_feature: "none", }, - { // This turns off all font antialiasing for tests unless it is // explicitly required and enabled using the @@ -3378,18 +3423,16 @@ name: "NoIdleEncodingForWebTests", status: "test", }, - // Doesn't increase the end offset on getting the range for a new line - // character. See https://crbug.com/326888905 - { - name: "NoIncreasingEndOffsetOnSplittingTextNodes", - status: "stable", - }, // Doesn't insert empty blockquotes on outdenting a blockquote. See // https://crbug.com/323960902 { name: "NonEmptyBlockquotesOnOutdenting", status: "stable", }, + { + name: "NonEmptyVisibleTextSelectionForTextFragment", + status: "stable", + }, { // TODO(crbug.com/1426629): This feature enables the deprecated value // slider-vertical. Disable this feature to stop parsing or allowing these @@ -3449,12 +3492,10 @@ status: "stable", }, { - // This flag makes the