diff --git a/tools/under-control/src/RELEASE b/tools/under-control/src/RELEASE
index 1ace3f3f..e341da95 100644
--- a/tools/under-control/src/RELEASE
+++ b/tools/under-control/src/RELEASE
@@ -1 +1 @@
-138.0.7204.169
+139.0.7258.128
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 65881e05..bff0c537 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
@@ -24,6 +24,7 @@
#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_settings.h"
#include "android_webview/browser/aw_speech_recognition_manager_delegate.h"
#include "android_webview/browser/aw_web_contents_delegate.h"
@@ -63,10 +64,11 @@
#include "base/metrics/histogram_macros.h"
#include "base/notreached.h"
#include "base/path_service.h"
+#include "base/strings/string_util.h"
#include "base/strings/utf_string_conversions.h"
#include "base/task/sequenced_task_runner.h"
#include "base/task/thread_pool/thread_pool_instance.h"
-#include "base/trace_event/base_tracing.h"
+#include "base/trace_event/trace_event.h"
#include "build/build_config.h"
#include "components/crash/content/browser/crash_handler_host_linux.h"
#include "components/embedder_support/origin_trials/origin_trials_settings_storage.h"
@@ -643,9 +645,14 @@ void AwContentBrowserClient::GetAdditionalMappedFilesForChildProcess(
CHECK_GE(fd, 0);
mappings->ShareWithRegion(kAndroidWebView100PercentPakDescriptor, fd, region);
- fd = ui::GetLocalePackFd(®ion);
- CHECK_GE(fd, 0);
- mappings->ShareWithRegion(kAndroidWebViewLocalePakDescriptor, fd, region);
+ // WebView will (currently) only ever have one locale pak, compared to Clank,
+ // which has up to 2. This will change in the near future when we introduce
+ // genders to locales.
+ auto locale_paks = ui::GetLocalePaks();
+ CHECK_EQ(locale_paks.size(), 1u);
+ CHECK_GE(locale_paks.at(0).fd, 0);
+ mappings->ShareWithRegion(kAndroidWebViewLocalePakDescriptor,
+ locale_paks.at(0).fd, locale_paks.at(0).region);
int crash_signal_fd =
crashpad::CrashHandlerHost::Get()->GetDeathSignalSocket();
@@ -978,14 +985,16 @@ bool AwContentBrowserClient::HandleExternalProtocol(
const net::IsolationInfo& isolation_info) {
// Manages its own lifetime.
new android_webview::AwProxyingURLLoaderFactory(
- std::nullopt /* cookie_manager */,
- nullptr /* cookie_access_policy */, isolation_info,
+ /* cookie_manager=*/std::nullopt,
+ /* cookie_access_policy=*/nullptr, isolation_info,
web_contents_key, frame_tree_node_id, std::move(receiver),
- mojo::NullRemote(), true /* intercept_only */,
- std::nullopt /* security_options */,
- nullptr /* xrw_allowlist_matcher */,
+ mojo::NullRemote(),
+ /* intercept_only=*/true,
+ /* security_options=*/std::nullopt,
+ /* xrw_allowlist_matcher=*/nullptr,
+ /* origin_matched_headers=*/{},
std::move(browser_context_handle),
- std::nullopt /* navigation_id */);
+ /* navigation_id=*/std::nullopt);
},
std::move(receiver), web_contents_key, frame_tree_node_id,
std::move(browser_context_handle), isolation_info));
@@ -1176,6 +1185,7 @@ void AwContentBrowserClient::WillCreateURLLoaderFactory(
frame->GetFrameTreeNodeId(), std::move(proxied_receiver),
std::move(target_factory_remote), security_options,
std::move(xrw_allowlist_matcher),
+ aw_browser_context->GetOriginMatchedHeaders(),
std::move(browser_context_handle), navigation_id));
} else {
// A service worker and worker subresources set nullptr to |frame|, and
@@ -1190,6 +1200,7 @@ void AwContentBrowserClient::WillCreateURLLoaderFactory(
std::move(proxied_receiver), std::move(target_factory_remote),
std::nullopt /* security_options */,
aw_browser_context->service_worker_xrw_allowlist_matcher(),
+ aw_browser_context->GetOriginMatchedHeaders(),
std::move(browser_context_handle), navigation_id));
}
}
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 d9c002f4..2b193811 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
@@ -18,6 +18,7 @@
#include "components/permissions/features.h"
#include "components/safe_browsing/core/common/features.h"
#include "components/translate/core/common/translate_util.h"
+#include "components/variations/feature_overrides.h"
#include "components/viz/common/features.h"
#include "content/public/common/content_features.h"
#include "gpu/config/gpu_finch_features.h"
@@ -32,48 +33,6 @@
#include "ui/gl/gl_features.h"
#include "ui/gl/gl_switches.h"
-namespace internal {
-
-AwFeatureOverrides::AwFeatureOverrides(base::FeatureList& feature_list)
- : feature_list_(feature_list) {}
-
-AwFeatureOverrides::~AwFeatureOverrides() {
- // TODO(crbug.com/379864779): This doesn't play well with potential server-
- // side overrides.
- for (const auto& field_trial_override : field_trial_overrides_) {
- feature_list_->RegisterFieldTrialOverride(
- field_trial_override.feature->name, field_trial_override.override_state,
- field_trial_override.field_trial);
- }
- feature_list_->RegisterExtraFeatureOverrides(
- std::move(overrides_), /*replace_use_default_overrides=*/true);
-}
-
-void AwFeatureOverrides::EnableFeature(const base::Feature& feature) {
- overrides_.emplace_back(
- std::cref(feature),
- base::FeatureList::OverrideState::OVERRIDE_ENABLE_FEATURE);
-}
-
-void AwFeatureOverrides::DisableFeature(const base::Feature& feature) {
- overrides_.emplace_back(
- std::cref(feature),
- base::FeatureList::OverrideState::OVERRIDE_DISABLE_FEATURE);
-}
-
-void AwFeatureOverrides::OverrideFeatureWithFieldTrial(
- const base::Feature& feature,
- base::FeatureList::OverrideState override_state,
- base::FieldTrial* field_trial) {
- field_trial_overrides_.emplace_back(FieldTrialOverride{
- .feature = raw_ref(feature),
- .override_state = override_state,
- .field_trial = field_trial,
- });
-}
-
-} // namespace internal
-
void AwFieldTrials::OnVariationsSetupComplete() {
// Persistent histograms must be enabled ASAP, but depends on Features.
base::FilePath metrics_dir;
@@ -90,7 +49,7 @@ void AwFieldTrials::RegisterFeatureOverrides(base::FeatureList* feature_list) {
if (!feature_list) {
return;
}
- internal::AwFeatureOverrides aw_feature_overrides(*feature_list);
+ variations::FeatureOverrides aw_feature_overrides(*feature_list);
// Disable third-party storage partitioning on WebView.
aw_feature_overrides.DisableFeature(
@@ -104,6 +63,10 @@ void AwFieldTrials::RegisterFeatureOverrides(base::FeatureList* feature_list) {
aw_feature_overrides.DisableFeature(
blink::features::kEnforceNoopenerOnBlobURLNavigation);
+ // TODO(crbug.com/421547429): Temporarily disabled to address crashes.
+ aw_feature_overrides.DisableFeature(
+ network::features::kMaskedDomainListFlatbufferImpl);
+
#if BUILDFLAG(ENABLE_VALIDATING_COMMAND_DECODER)
// Disable the passthrough on WebView.
aw_feature_overrides.DisableFeature(
@@ -148,10 +111,20 @@ void AwFieldTrials::RegisterFeatureOverrides(base::FeatureList* feature_list) {
// kVulkan in case it becomes enabled by default.
aw_feature_overrides.DisableFeature(::features::kVulkan);
+ // WebView does not support web-app (service-worker) based payment apps for
+ // Payment Request.
aw_feature_overrides.DisableFeature(::features::kServiceWorkerPaymentApps);
+
+ // Payment Request on WebView does not send down the deprecated parameters to
+ // Android payment apps.
aw_feature_overrides.EnableFeature(
::payments::android::kAndroidPaymentIntentsOmitDeprecatedParameters);
+ // WebView does not support Secure Payment Confirmation, and thus should not
+ // expose the PaymentRequest.securePaymentConfirmationAvailability API.
+ aw_feature_overrides.DisableFeature(
+ blink::features::kSecurePaymentConfirmationAvailabilityAPI);
+
// WebView does not support overlay fullscreen yet for video overlays.
aw_feature_overrides.DisableFeature(media::kOverlayFullscreenVideo);
@@ -161,8 +134,7 @@ void AwFieldTrials::RegisterFeatureOverrides(base::FeatureList* feature_list) {
// WebView does not support multiple processes, so don't try to call some
// MediaDrm APIs in a separate process.
- aw_feature_overrides.DisableFeature(
- media::kAllowMediaCodecCallsInSeparateProcess);
+ aw_feature_overrides.DisableFeature(media::kMediaDrmQueryInSeparateProcess);
aw_feature_overrides.DisableFeature(::features::kBackgroundFetch);
@@ -250,24 +222,6 @@ void AwFieldTrials::RegisterFeatureOverrides(base::FeatureList* feature_list) {
// function and the webview permission manager cannot support it.
aw_feature_overrides.DisableFeature(blink::features::kPermissionElement);
- if (base::CommandLine::ForCurrentProcess()->HasSwitch(switches::kDebugBsa)) {
- // Feature parameters can only be set via a field trial.
- const char kTrialName[] = "StudyDebugBsa";
- const char kGroupName[] = "GroupDebugBsa";
- base::FieldTrial* field_trial =
- base::FieldTrialList::CreateFieldTrial(kTrialName, kGroupName);
- // If field_trial is null, there was some unexpected name conflict.
- CHECK(field_trial);
- base::FieldTrialParams params;
- params.emplace(net::features::kIpPrivacyTokenServer.name,
- "https://staging-phosphor-pa.sandbox.googleapis.com");
- base::AssociateFieldTrialParams(kTrialName, kGroupName, params);
- aw_feature_overrides.OverrideFeatureWithFieldTrial(
- net::features::kEnableIpProtectionProxy,
- base::FeatureList::OverrideState::OVERRIDE_ENABLE_FEATURE, field_trial);
- aw_feature_overrides.EnableFeature(network::features::kMaskedDomainList);
- }
-
// Feature parameters can only be set via a field trial.
// Note: Performing a field trial here means we cannot include
// |kBtmTtl| in the testing config json.
@@ -315,6 +269,11 @@ void AwFieldTrials::RegisterFeatureOverrides(base::FeatureList* feature_list) {
// Sharing ANGLE's Vulkan queue is not supported on WebView.
aw_feature_overrides.DisableFeature(::features::kVulkanFromANGLE);
+ // This feature has not been experimented with yet on WebView.
+ // TODO(crbug.com/371512561): Disable this feature for WebView only if webview
+ // itself is using GLES.
+ aw_feature_overrides.DisableFeature(::features::kDefaultANGLEVulkan);
+
// Partitioned :visited links history is not supported on WebView.
aw_feature_overrides.DisableFeature(
blink::features::kPartitionVisitedLinkDatabaseWithSelfLinks);
@@ -327,4 +286,8 @@ void AwFieldTrials::RegisterFeatureOverrides(base::FeatureList* feature_list) {
// TODO(crbug.com/422161917): Revert this for the ablation study.
aw_feature_overrides.EnableFeature(
features::kServiceWorkerBackgroundUpdateForRegisteredStorageKeys);
+
+ // Explicitly disable PrefetchProxy instead of relying only on passing an
+ // empty URL.
+ aw_feature_overrides.DisableFeature(features::kPrefetchProxy);
}
diff --git a/tools/under-control/src/chrome/android/java/AndroidManifest.xml b/tools/under-control/src/chrome/android/java/AndroidManifest.xml
index f8815b41..40da3e5f 100755
--- a/tools/under-control/src/chrome/android/java/AndroidManifest.xml
+++ b/tools/under-control/src/chrome/android/java/AndroidManifest.xml
@@ -468,12 +468,6 @@ by a child template that "extends" this file.
android:excludeFromRecents="true"
android:exported="false" />
-
-
-
-
-
-
RemoveInvalidBBKs();
}
#endif // BUILDFLAG(IS_ANDROID)
+
+#if BUILDFLAG(IS_CHROMEOS)
+ if (base::FeatureList::IsEnabled(
+ browsing_data::features::kDbdRevampDesktop) &&
+ ash::SystemProxyManager::Get()) {
+ // Sends a request to the System-proxy daemon to clear the proxy user
+ // credentials. System-proxy retrieves proxy username and password from
+ // the NetworkService, but not the creation time of the credentials. The
+ // |ClearUserCredentials| request will remove all the cached proxy
+ // credentials. If credentials prior to |delete_begin_| are removed from
+ // System-proxy, the daemon will send a D-Bus request to Chrome to fetch
+ // them from the NetworkService when needed.
+ ash::SystemProxyManager::Get()->ClearUserCredentials();
+ }
+#endif // BUILDFLAG(IS_CHROMEOS)
}
//////////////////////////////////////////////////////////////////////////////
@@ -978,17 +996,6 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData(
CreateTaskCompletionClosureForMojo(
TracingDataType::kHttpAuthCache));
- scoped_refptr web_data_service =
- webdata_services::WebDataServiceWrapperFactory::
- GetPaymentManifestWebDataServiceForBrowserContext(
- profile_, ServiceAccessType::EXPLICIT_ACCESS);
- if (web_data_service) {
- web_data_service->ClearSecurePaymentConfirmationCredentials(
- delete_begin_, delete_end_,
- CreateTaskCompletionClosure(
- TracingDataType::kSecurePaymentConfirmationCredentials));
- }
-
#if BUILDFLAG(IS_CHROMEOS)
if (ash::SystemProxyManager::Get()) {
// Sends a request to the System-proxy daemon to clear the proxy user
@@ -1120,6 +1127,26 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData(
}
}
+ if ((remove_mask & constants::DATA_TYPE_PASSWORDS)
+#if !BUILDFLAG(IS_ANDROID)
+ ||
+ ((remove_mask & constants::DATA_TYPE_FORM_DATA) &&
+ base::FeatureList::IsEnabled(browsing_data::features::kDbdRevampDesktop))
+#endif // !BUILDFLAG(IS_ANDROID)
+ ) {
+ scoped_refptr
+ payment_web_data_service =
+ webdata_services::WebDataServiceWrapperFactory::
+ GetPaymentManifestWebDataServiceForBrowserContext(
+ profile_, ServiceAccessType::EXPLICIT_ACCESS);
+ if (payment_web_data_service) {
+ payment_web_data_service->ClearSecurePaymentConfirmationCredentials(
+ delete_begin_, delete_end_,
+ CreateTaskCompletionClosure(
+ TracingDataType::kSecurePaymentConfirmationCredentials));
+ }
+ }
+
//////////////////////////////////////////////////////////////////////////////
// DATA_TYPE_CACHE
if (remove_mask & content::BrowsingDataRemover::DATA_TYPE_CACHE) {
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 ce9a5553..20511f01 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
@@ -32,6 +32,8 @@
#include "chrome/common/buildflags.h"
#include "chrome/common/pref_names.h"
#include "chrome/services/speech/buildflags/buildflags.h"
+#include "components/autofill/content/browser/content_autofill_client.h"
+#include "components/credential_management/content_credential_manager.h"
#include "components/dom_distiller/content/browser/distillability_driver.h"
#include "components/dom_distiller/content/browser/distiller_javascript_service_impl.h"
#include "components/dom_distiller/content/common/mojom/distillability_service.mojom.h"
@@ -396,6 +398,32 @@ void BindModelBroker(
}
}
+void BindCredentialManager(
+ content::RenderFrameHost* frame_host,
+ mojo::PendingReceiver receiver) {
+ content::WebContents* web_contents =
+ content::WebContents::FromRenderFrameHost(frame_host);
+ autofill::ContentAutofillClient* autofill_client =
+ autofill::ContentAutofillClient::FromWebContents(web_contents);
+ // Not every `WebContents` has a `ContentAutofillClient`.
+ if (!autofill_client) {
+ return;
+ }
+ credential_management::ContentCredentialManager* content_credential_manager =
+ autofill_client->GetContentCredentialManager();
+
+ // Try to bind to the credential manager, but if it's not available for this
+ // render frame host, the request will be just dropped. This will cause the
+ // message pipe to be closed, which will raise a connection error on the peer
+ // side.
+ if (!content_credential_manager) {
+ // TODO(crbug.com/406224744): Retry to bind the credential manager.
+ return;
+ }
+
+ content_credential_manager->BindRequest(frame_host, std::move(receiver));
+}
+
} // namespace
void PopulateChromeFrameBinders(
@@ -446,7 +474,7 @@ void PopulateChromeFrameBinders(
}
map->Add(
- base::BindRepeating(&ChromePasswordManagerClient::BindCredentialManager));
+ base::BindRepeating(&BindCredentialManager));
map->Add(
base::BindRepeating(
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 e856d9cf..d271eb57 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
@@ -32,6 +32,7 @@
#include "base/metrics/field_trial_params.h"
#include "base/metrics/histogram_functions.h"
#include "base/no_destructor.h"
+#include "base/notimplemented.h"
#include "base/notreached.h"
#include "base/path_service.h"
#include "base/stl_util.h"
@@ -232,9 +233,11 @@
#include "components/enterprise/common/proto/connectors.pb.h"
#include "components/enterprise/content/clipboard_restriction_service.h"
#include "components/enterprise/content/pref_names.h"
+#include "components/enterprise/data_controls/content/browser/last_replaced_clipboard_data.h"
#include "components/error_page/common/error.h"
#include "components/error_page/common/error_page_switches.h"
#include "components/error_page/common/localized_error.h"
+#include "components/fingerprinting_protection_filter/common/fingerprinting_protection_filter_features.h"
#include "components/google/core/common/google_switches.h"
#include "components/heap_profiling/in_process/heap_profiler_controller.h"
#include "components/keep_alive_registry/keep_alive_types.h"
@@ -259,7 +262,7 @@
#include "components/payments/content/payment_request_display_manager.h"
#include "components/payments/content/secure_payment_confirmation_service_factory.h"
#include "components/pdf/common/pdf_util.h"
-#include "components/permissions/permission_context_base.h"
+#include "components/permissions/content_setting_permission_context_base.h"
#include "components/policy/content/policy_blocklist_service.h"
#include "components/policy/core/common/management/management_service.h"
#include "components/policy/core/common/policy_pref_names.h"
@@ -285,6 +288,7 @@
#include "components/search_engines/template_url_service.h"
#include "components/security_state/core/security_state.h"
#include "components/services/on_device_translation/buildflags/buildflags.h"
+#include "components/site_isolation/features.h"
#include "components/site_isolation/pref_names.h"
#include "components/site_isolation/preloaded_isolated_origins.h"
#include "components/site_isolation/site_isolation_policy.h"
@@ -322,7 +326,9 @@
#include "content/public/browser/permission_descriptor_util.h"
#include "content/public/browser/render_frame_host.h"
#include "content/public/browser/render_process_host.h"
+#include "content/public/browser/service_worker_context.h"
#include "content/public/browser/site_isolation_mode.h"
+#include "content/public/browser/site_isolation_policy.h"
#include "content/public/browser/sms_fetcher.h"
#include "content/public/browser/tts_controller.h"
#include "content/public/browser/tts_platform.h"
@@ -338,9 +344,9 @@
#include "content/public/common/content_descriptors.h"
#include "content/public/common/content_features.h"
#include "content/public/common/content_switches.h"
+#include "content/public/common/origin_util.h"
#include "content/public/common/url_utils.h"
#include "content/public/common/window_container_type.mojom-shared.h"
-#include "device/fido/features.h"
#include "device/vr/buildflags/buildflags.h"
#include "extensions/browser/browser_frame_context_data.h"
#include "extensions/buildflags/buildflags.h"
@@ -482,11 +488,12 @@
#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"
#include "chrome/browser/safe_browsing/android/safe_browsing_referring_app_bridge_android.h"
#include "chrome/browser/ui/android/tab_model/tab_model_list.h"
-#include "chrome/common/chrome_descriptors.h"
+#include "chrome/common/chrome_descriptors_android.h"
#include "components/browser_ui/accessibility/android/font_size_prefs_android.h"
#include "components/crash/content/browser/child_exit_observer_android.h"
#include "components/crash/content/browser/crash_memory_metrics_collector_android.h"
@@ -622,8 +629,8 @@
#include "chrome/browser/speech/extension_api/tts_engine_extension_api.h"
#include "chrome/browser/ui/web_applications/app_browser_controller.h"
#include "chrome/browser/web_applications/web_app_utils.h"
-#include "content/public/browser/site_isolation_policy.h"
#include "extensions/browser/api/web_request/web_request_proxying_webtransport.h"
+#include "extensions/common/user_script.h"
#endif // BUILDFLAG(ENABLE_EXTENSIONS)
#if BUILDFLAG(ENABLE_GUEST_VIEW)
@@ -774,6 +781,11 @@ BASE_FEATURE(kSkipPagehideInCommitForDSENavigation,
"SkipPagehideInCommitForDSENavigation",
base::FEATURE_DISABLED_BY_DEFAULT);
+// Warm up the ServiceWorker registration for DSE.
+BASE_FEATURE(kPrewarmServiceWorkerRegistrationForDSE,
+ "PrewarmServiceWorkerRegistrationForDSE",
+ 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.
@@ -1327,6 +1339,10 @@ bool IsDefaultSearchEngine(Profile* profile, const GURL& url) {
auto* template_url_service =
TemplateURLServiceFactory::GetForProfile(profile);
+ if (!template_url_service) {
+ return false;
+ }
+
const TemplateURL* default_search_engine =
template_url_service->GetDefaultSearchProvider();
@@ -1392,12 +1408,7 @@ void ChromeContentBrowserClient::RegisterLocalStatePrefs(
registry->RegisterIntegerPref(prefs::kSCTAuditingHashdanceReportCount, 0);
registry->RegisterBooleanPref(prefs::kDataURLWhitespacePreservationEnabled,
true);
-#if BUILDFLAG(IS_CHROMEOS)
- registry->RegisterBooleanPref(prefs::kNativeClientForceAllowed, false);
- registry->RegisterBooleanPref(prefs::kDeviceNativeClientForceAllowed, false);
- registry->RegisterBooleanPref(prefs::kDeviceNativeClientForceAllowedCache,
- false);
-#endif // BUILDFLAG(IS_CHROMEOS)
+ registry->RegisterBooleanPref(prefs::kEnableUnsafeSwiftShader, false);
#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_ANDROID)
registry->RegisterBooleanPref(prefs::kOutOfProcessSystemDnsResolutionEnabled,
true);
@@ -1473,12 +1484,6 @@ void ChromeContentBrowserClient::RegisterProfilePrefs(
policy::policy_prefs::kCSSCustomStateDeprecatedSyntaxEnabled,
/*default_value=*/false);
- registry->RegisterBooleanPref(
- policy::policy_prefs::kSelectParserRelaxationEnabled,
- /*default_value=*/true);
-
- registry->RegisterBooleanPref(
- policy::policy_prefs::kKeyboardFocusableScrollersEnabled, true);
registry->RegisterBooleanPref(
policy::policy_prefs::kStandardizedBrowserZoomEnabled, true);
@@ -2458,6 +2463,59 @@ ChromeContentBrowserClient::GetOriginsRequiringDedicatedProcess() {
return isolated_origin_list;
}
+void ChromeContentBrowserClient::WillComputeSiteForNavigation(
+ content::BrowserContext* browser_context,
+ const GURL& url) {
+ if (!site_isolation::SiteIsolationPolicy::
+ IsOriginIsolationForJsOptExceptionsEnabled()) {
+ return;
+ }
+
+ // Only process HTTP(S) URLs. Special URLs like data:, about:blank and others
+ // can't really be isolated by the process model on their own.
+ if (!url.SchemeIsHTTPOrHTTPS()) {
+ return;
+ }
+
+ // If the JS optimizer policy for this `url`'s origin differs from the default
+ // JS optimizer policy, then the url needs to be put into its own process
+ // (otherwise it will have the default JS setting applied). This lets JS
+ // optimizer policy rules be applied to URLs on clients that have partial site
+ // isolation (like Android). This also improves JS optimizer rules handling on
+ // clients where subdomains of a site are not isolated. For example, if a.com
+ // has site isolation, but sub.a.com needs a different rule (More information
+ // at: crbug.com/377733397). Note that this will cause explicit opt-outs using
+ // the Origin-Agent-Cluster header to be ignored. Note that it is safe to do
+ // this multiple times for the same origin because AddFutureIsolatedOrigins
+ // should drop requests to isolate an origin that is already isolated.
+ Profile* profile = Profile::FromBrowserContext(browser_context);
+ auto* map = HostContentSettingsMapFactory::GetForProfile(profile);
+ if (!map) {
+ return;
+ }
+
+ if (map->GetDefaultContentSetting(ContentSettingsType::JAVASCRIPT_OPTIMIZER,
+ nullptr) !=
+ map->GetContentSetting(url, url,
+ ContentSettingsType::JAVASCRIPT_OPTIMIZER)) {
+ url::Origin origin(url::Origin::Create(url));
+ content::ChildProcessSecurityPolicy* policy =
+ content::ChildProcessSecurityPolicy::GetInstance();
+ // The user added a content setting rule and then navigated, so specify the
+ // isolation source as USER_TRIGGERED. This choice doesn't matter much
+ // because the origin isolation is only for this session.
+ // TODO(crbug.com/410544327): We may create a more specific source in the
+ // future to show more clearly on chrome://process-internals the reason for
+ // isolating this origin.
+ // TODO(crbug.com/417770940): Investigate to see if adding this on JS
+ // optimizer rule change would work better.
+ policy->AddFutureIsolatedOrigins({origin},
+ content::ChildProcessSecurityPolicy::
+ IsolatedOriginSource::USER_TRIGGERED,
+ browser_context);
+ }
+}
+
bool ChromeContentBrowserClient::ShouldEnableStrictSiteIsolation() {
if (base::FeatureList::IsEnabled(features::kSitePerProcess)) {
return true;
@@ -2556,9 +2614,8 @@ bool ChromeContentBrowserClient::IsIsolatedContextAllowedForUrl(
void ChromeContentBrowserClient::CheckGetAllScreensMediaAllowed(
content::RenderFrameHost* render_frame_host,
base::OnceCallback callback) {
- capture_policy::CheckGetAllScreensMediaAllowed(
- render_frame_host->GetMainFrame()->GetLastCommittedOrigin().GetURL(),
- std::move(callback));
+ std::move(callback).Run(capture_policy::IsMultiScreenCaptureAllowed(
+ render_frame_host->GetMainFrame()->GetLastCommittedOrigin().GetURL()));
}
bool ChromeContentBrowserClient::IsFileAccessAllowed(
@@ -2729,11 +2786,6 @@ void ChromeContentBrowserClient::AppendExtraCommandLineSwitches(
blink::switches::kDisableBlobUrlPartitioning);
}
- if (!prefs->GetBoolean(
- policy::policy_prefs::kKeyboardFocusableScrollersEnabled)) {
- command_line->AppendSwitch(
- blink::switches::kKeyboardFocusableScrollersOptOut);
- }
if (!prefs->GetBoolean(
policy::policy_prefs::kStandardizedBrowserZoomEnabled)) {
command_line->AppendSwitch(
@@ -2744,11 +2796,6 @@ void ChromeContentBrowserClient::AppendExtraCommandLineSwitches(
command_line->AppendSwitch(
blink::switches::kCSSCustomStateDeprecatedSyntaxEnabled);
}
- if (!prefs->GetBoolean(
- policy::policy_prefs::kSelectParserRelaxationEnabled)) {
- command_line->AppendSwitch(
- blink::switches::kDisableSelectParserRelaxation);
- }
if (prefs->GetBoolean(policy::policy_prefs::
kForcePermissionPolicyUnloadDefaultEnabled)) {
@@ -2853,9 +2900,7 @@ void ChromeContentBrowserClient::AppendExtraCommandLineSwitches(
// Make the WebAuthenticationRemoteDesktopAllowedOrigins policy enable the
// experimental WebAuthenticationRemoteDesktopSupport Blink runtime
// feature.
- if (base::FeatureList::IsEnabled(
- device::kWebAuthnRemoteDesktopAllowedOriginsPolicy) &&
- !prefs->GetList(webauthn::pref_names::kRemoteDesktopAllowedOrigins)
+ if (!prefs->GetList(webauthn::pref_names::kRemoteDesktopAllowedOrigins)
.empty()) {
command_line->AppendSwitch(switches::kWebAuthRemoteDesktopSupport);
}
@@ -2886,6 +2931,7 @@ void ChromeContentBrowserClient::AppendExtraCommandLineSwitches(
extensions::switches::kDisableExtensionsHttpThrottling,
extensions::switches::kEnableExperimentalExtensionApis,
extensions::switches::kExtensionsOnChromeURLs,
+ extensions::switches::kExtensionsOnExtensionURLs,
extensions::switches::kSetExtensionThrottleTestParams, // For tests
// only.
extensions::switches::kAllowlistedExtensionID,
@@ -2895,6 +2941,7 @@ void ChromeContentBrowserClient::AppendExtraCommandLineSwitches(
switches::kAppsGalleryURL,
switches::kDisableJavaScriptHarmonyShipping,
variations::switches::kEnableBenchmarking,
+ variations::switches::kEnableBenchmarkingApi,
switches::kEnableDistillabilityService,
switches::kEnableNaCl,
#if BUILDFLAG(ENABLE_NACL)
@@ -3342,9 +3389,10 @@ ChromeContentBrowserClient::AllowWebBluetooth(
// base::CommandLine::ForCurrentProcess()->
// HasSwitch(switches::kEnableWebBluetooth) is true.
if (base::GetFieldTrialParamValue(
- permissions::PermissionContextBase::kPermissionsKillSwitchFieldStudy,
- "Bluetooth") ==
- permissions::PermissionContextBase::kPermissionsKillSwitchBlockedValue) {
+ permissions::ContentSettingPermissionContextBase::
+ kPermissionsKillSwitchFieldStudy,
+ "Bluetooth") == permissions::ContentSettingPermissionContextBase::
+ kPermissionsKillSwitchBlockedValue) {
// The kill switch is enabled for this permission. Block requests.
return AllowWebBluetoothResult::BLOCK_GLOBALLY_DISABLED;
}
@@ -3672,7 +3720,20 @@ bool ChromeContentBrowserClient::IsPrefetchWithServiceWorkerAllowed(
content::BrowserContext* browser_context) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
Profile* profile = Profile::FromBrowserContext(browser_context);
- return profile->GetPrefs()->GetBoolean(prefs::kPrefetchWithServiceWorkerEnabled);
+ return profile->GetPrefs()->GetBoolean(
+ prefs::kPrefetchWithServiceWorkerEnabled);
+}
+
+bool ChromeContentBrowserClient::IsServiceWorkerSyntheticResponseAllowed(
+ content::BrowserContext* browser_context,
+ const GURL& url) {
+ Profile* profile = Profile::FromBrowserContext(browser_context);
+ if (!profile || profile->IsSystemProfile()) {
+ // Exclude if the profile is a system profile.
+ return false;
+ }
+
+ return IsDefaultSearchEngine(profile, url);
}
void ChromeContentBrowserClient::GrantCookieAccessDueToHeuristic(
@@ -3708,6 +3769,61 @@ bool ChromeContentBrowserClient::AreThirdPartyCookiesGenerallyAllowed(
return !cookie_settings->ShouldBlockThirdPartyCookies();
}
+void ChromeContentBrowserClient::PrewarmServiceWorkerRegistrationForDSE(
+ content::BrowserContext* browser_context,
+ content::ServiceWorkerContext& service_worker_context) {
+ TRACE_EVENT(
+ "ServiceWorker",
+ "ChromeContentBrowserClient::PrewarmServiceWorkerRegistrationForDSE");
+
+ if (ChromeContentBrowserClient::
+ PrewarmServiceWorkerRegistrationForDSECalledCountForTesting()) {
+ CHECK_IS_TEST();
+ ++(*ChromeContentBrowserClient::
+ PrewarmServiceWorkerRegistrationForDSECalledCountForTesting());
+ }
+
+ if (!base::FeatureList::IsEnabled(kPrewarmServiceWorkerRegistrationForDSE)) {
+ return;
+ }
+
+ Profile* profile = Profile::FromBrowserContext(browser_context);
+
+ if (!profile) {
+ return;
+ }
+
+ TemplateURLService* template_url_service =
+ TemplateURLServiceFactory::GetForProfile(profile);
+
+ if (!template_url_service) {
+ return;
+ }
+
+ GURL url =
+ template_url_service->GenerateSearchURLForDefaultSearchProvider(u"");
+
+ if (!content::OriginCanAccessServiceWorkers(url)) {
+ return;
+ }
+
+ const blink::StorageKey key =
+ blink::StorageKey::CreateFirstParty(url::Origin::Create(url));
+
+ if (!service_worker_context.MaybeHasRegistrationForStorageKey(key)) {
+ return;
+ }
+
+ service_worker_context.CheckHasServiceWorker(url, key, base::DoNothing());
+}
+
+// static
+std::optional& ChromeContentBrowserClient::
+ PrewarmServiceWorkerRegistrationForDSECalledCountForTesting() {
+ static std::optional call_count;
+ return call_count;
+}
+
bool ChromeContentBrowserClient::CanSendSCTAuditingReport(
content::BrowserContext* browser_context) {
return SCTReportingService::CanSendSCTAuditingReport();
@@ -4366,9 +4482,10 @@ void ChromeContentBrowserClient::OverrideWebPreferences(
Profile::FromBrowserContext(web_contents->GetBrowserContext());
PrefService* prefs = profile->GetPrefs();
-// Fill font preferences. These are not registered on Android
+// Fill font preferences. These are not registered on Android unless we're built
+// with extensions (the chrome.fontSettings API can change these).
// - http://crbug.com/308033, http://crbug.com/696364.
-#if !BUILDFLAG(IS_ANDROID)
+#if !BUILDFLAG(IS_ANDROID) || BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS)
// Enabling the FontFamilyCache needs some KeyedService that might not be
// available for some irregular profiles, like the System Profile.
if (!AreKeyedServicesDisabledForProfileByDefault(profile)) {
@@ -4675,6 +4792,18 @@ void ChromeContentBrowserClient::OverrideWebPreferences(
web_prefs->always_show_context_menu_on_touch =
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(
+ Profile::FromBrowserContext(web_contents->GetBrowserContext())
+ ->IsIncognitoProfile());
}
bool ChromeContentBrowserClientParts::OverrideWebPreferencesAfterNavigation(
@@ -4973,14 +5102,7 @@ void ChromeContentBrowserClient::GetAdditionalMappedFilesForChildProcess(
fd = ui::GetCommonResourcesPackFd(®ion);
mappings->ShareWithRegion(kAndroidChrome100PercentPakDescriptor, fd, region);
- fd = ui::GetLocalePackFd(®ion);
- mappings->ShareWithRegion(kAndroidLocalePakDescriptor, fd, region);
-
- // Optional secondary locale .pak file.
- fd = ui::GetSecondaryLocalePackFd(®ion);
- if (fd != -1) {
- mappings->ShareWithRegion(kAndroidSecondaryLocalePakDescriptor, fd, region);
- }
+ GetMappedLocalePacksForChildProcess(mappings);
base::FilePath app_data_path;
base::PathService::Get(base::DIR_ANDROID_APP_DATA, &app_data_path);
@@ -5546,12 +5668,6 @@ ChromeContentBrowserClient::MaybeCreateSafeBrowsingURLLoaderThrottle(
safe_browsing::RealTimePolicyEngine::CanPerformEnterpriseFullURLLookup(
profile->GetPrefs(), has_valid_dm_token, profile->IsOffTheRecord(),
profile->IsGuestSession());
-#if BUILDFLAG(IS_ANDROID)
- is_enterprise_lookup_enabled =
- is_enterprise_lookup_enabled &&
- base::FeatureList::IsEnabled(
- safe_browsing::kEnterpriseRealTimeUrlCheckOnAndroid);
-#endif
bool is_consumer_lookup_enabled =
safe_browsing::RealTimePolicyEngine::CanPerformFullURLLookup(
profile->GetPrefs(), profile->IsOffTheRecord(),
@@ -5584,17 +5700,13 @@ ChromeContentBrowserClient::MaybeCreateSafeBrowsingURLLoaderThrottle(
std::optional referring_app_info =
std::nullopt;
#if BUILDFLAG(IS_ANDROID)
- if (safe_browsing::IsEnhancedProtectionEnabled(*profile->GetPrefs()) &&
- base::FeatureList::IsEnabled(
- safe_browsing::kAddReferringAppInfoToProtegoPings)) {
- bool get_webapk_info = base::FeatureList::IsEnabled(
- safe_browsing::kAddReferringWebApkToProtegoPings);
+ if (safe_browsing::IsEnhancedProtectionEnabled(*profile->GetPrefs())) {
WebContents* web_contents = wc_getter.Run();
if (web_contents) {
referring_app_info =
std::make_optional(
safe_browsing::GetReferringAppInfo(web_contents,
- get_webapk_info));
+ /*get_webapk_info=*/true));
}
}
#endif
@@ -7565,15 +7677,12 @@ ChromeContentBrowserClient::ShouldOverridePrivateNetworkRequestPolicy(
}
#endif
-// TODO(crbug.com/400455013): Add LNA support on Android
-#if !BUILDFLAG(IS_ANDROID)
Profile* profile = Profile::FromBrowserContext(browser_context);
if (profile->GetPrefs()->GetBoolean(
prefs::kManagedLocalNetworkAccessRestrictionsEnabled)) {
return content::ContentBrowserClient::PrivateNetworkRequestPolicyOverride::
kBlockInsteadOfWarn;
}
-#endif
return content::ContentBrowserClient::PrivateNetworkRequestPolicyOverride::
kDefault;
@@ -8165,21 +8274,6 @@ bool ChromeContentBrowserClient::DoesGaiaOriginRequireDedicatedProcess() {
#endif // !BUILDFLAG(IS_ANDROID)
}
-bool ChromeContentBrowserClient::CanBackForwardCachedPageReceiveCookieChanges(
- content::BrowserContext& browser_context,
- const GURL& url,
- const net::SiteForCookies& site_for_cookies,
- const url::Origin& top_frame_origin,
- const net::CookieSettingOverrides overrides,
- base::optional_ref cookie_partition_key) {
- scoped_refptr cookie_settings =
- CookieSettingsFactory::GetForProfile(
- Profile::FromBrowserContext(&browser_context));
- CHECK(cookie_settings);
- return cookie_settings->IsFullCookieAccessAllowed(
- url, site_for_cookies, top_frame_origin, overrides, cookie_partition_key);
-}
-
void ChromeContentBrowserClient::GetCloudIdentifiers(
const storage::FileSystemURL& url,
content::FileSystemAccessPermissionContext::HandleType handle_type,
@@ -8470,6 +8564,11 @@ void ChromeContentBrowserClient::QueryInstalledWebAppsByManifestId(
base::OnceCallback)>
callback) {
Profile* profile = Profile::FromBrowserContext(browser_context);
+
+ if (!web_app::AreWebAppsEnabled(profile)) {
+ return std::move(callback).Run(std::nullopt);
+ }
+
web_app::WebAppProvider* const provider =
web_app::WebAppProvider::GetForLocalAppsUnchecked(profile);
@@ -8712,3 +8811,16 @@ ChromeContentBrowserClient::MaybeCreateKeepAliveRequestTracker(
return ChromeKeepAliveRequestTracker::MaybeCreateKeepAliveRequestTracker(
request, ukm_source_id, std::move(is_context_detached_callback));
}
+
+std::optional>
+ChromeContentBrowserClient::GetClipboardTypesIfPolicyApplied(
+ const ui::ClipboardSequenceNumberToken& seqno) {
+ const data_controls::LastReplacedClipboardData& last_replaced_data =
+ data_controls::GetLastReplacedClipboardData();
+
+ if (last_replaced_data.seqno == seqno) {
+ return last_replaced_data.GetAvailableTypes();
+ }
+
+ return std::nullopt;
+}
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 ea2c0d1b..b38a980c 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
@@ -228,8 +228,6 @@ bool IsErrorPageAutoReloadEnabled() {
void MaybeCreateAndAddVisitedLinkNavigationThrottle(
content::NavigationThrottleRegistry& registry) {
if (!base::FeatureList::IsEnabled(
- blink::features::kPartitionVisitedLinkDatabase) &&
- !base::FeatureList::IsEnabled(
blink::features::kPartitionVisitedLinkDatabaseWithSelfLinks)) {
return;
}
@@ -355,8 +353,7 @@ void CreateAndAddChromeThrottlesForNavigation(
#endif
SupervisedUserGoogleAuthNavigationThrottle::MaybeCreateAndAdd(registry);
-
- supervised_user::MaybeCreateAndAddClassifyUrlNavigationThrottle(registry);
+ supervised_user::ClassifyUrlNavigationThrottle::MaybeCreateAndAdd(registry);
if (auto* throttle_manager =
subresource_filter::ContentSubresourceFilterThrottleManager::
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 4f639e5a..13c2b053 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
@@ -173,6 +173,7 @@ public abstract class ChromeFeatureList {
"AndroidAppIntegrationWithFavicon";
public static final String ANDROID_BOOKMARK_BAR = "AndroidBookmarkBar";
public static final String ANDROID_BOTTOM_TOOLBAR = "AndroidBottomToolbar";
+ public static final String ANDROID_COMPOSEPLATE = "AndroidComposeplate";
public static final String ANDROID_DUMP_ON_SCROLL_WITHOUT_RESOURCE =
"AndroidDumpOnScrollWithoutResource";
public static final String ANDROID_ELEGANT_TEXT_HEIGHT = "AndroidElegantTextHeight";
@@ -187,8 +188,11 @@ public abstract class ChromeFeatureList {
"AndroidOmniboxFocusedNewTabPage";
public static final String ANDROID_OPEN_PDF_INLINE_BACKPORT = "AndroidOpenPdfInlineBackport";
public static final String ANDROID_PDF_ASSIST_CONTENT = "AndroidPdfAssistContent";
+ public static final String ANDROID_PINNED_TABS = "AndroidPinnedTabs";
public static final String ANDROID_PROGRESS_BAR_VISUAL_UPDATE =
"AndroidProgressBarVisualUpdate";
+ public static final String ANDROID_SHOW_RESTORE_TABS_PROMO_ON_FRE_BYPASSED_KILL_SWITCH =
+ "AndroidShowRestoreTabsPromoOnFREBypassedKillSwitch";
public static final String ANDROID_SURFACE_COLOR_UPDATE = "AndroidSurfaceColorUpdate";
public static final String ANDROID_TAB_DECLUTTER_ARCHIVE_ALL_BUT_ACTIVE =
"AndroidTabDeclutterArchiveAllButActiveTab";
@@ -205,6 +209,8 @@ public abstract class ChromeFeatureList {
"AndroidTabDeclutterPerformanceImprovements";
public static final String ANDROID_TAB_DECLUTTER_RESCUE_KILLSWITCH =
"AndroidTabDeclutterRescueKillswitch";
+ public static final String ANDROID_TAB_GROUPS_COLOR_UPDATE_GM3 =
+ "AndroidTabGroupsColorUpdateGM3";
public static final String ANDROID_TAB_SKIP_SAVE_TABS_TASK_KILLSWITCH =
"AndroidTabSkipSaveTabsTaskKillswitch";
public static final String ANDROID_THEME_MODULE = "AndroidThemeModule";
@@ -225,6 +231,8 @@ public abstract class ChromeFeatureList {
"AutofillEnableCardBenefitsForBmo";
public static final String AUTOFILL_ENABLE_CVC_STORAGE = "AutofillEnableCvcStorageAndFilling";
public static final String AUTOFILL_ENABLE_LOCAL_IBAN = "AutofillEnableLocalIban";
+ public static final String AUTOFILL_ENABLE_LOYALTY_CARDS_FILLING =
+ "AutofillEnableLoyaltyCardsFilling";
public static final String AUTOFILL_ENABLE_PAYMENT_SETTINGS_CARD_PROMO_AND_SCAN_CARD =
"AutofillEnablePaymentSettingsCardPromoAndScanCard";
public static final String AUTOFILL_ENABLE_PAYMENT_SETTINGS_SERVER_CARD_SAVE =
@@ -251,12 +259,15 @@ public abstract class ChromeFeatureList {
"AutofillVirtualViewStructureAndroid";
public static final String AVOID_RELAYOUT_DURING_FOCUS_ANIMATION =
"AvoidRelayoutDuringFocusAnimation";
- public static final String BACKGROUND_THREAD_POOL = "BackgroundThreadPool";
+ 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_INSTALLING_EXTENSIONS_ON_DESKTOP_ANDROID =
+ "BlockInstallingExtensionsOnDesktopAndroid";
public static final String BLOCK_INTENTS_WHILE_LOCKED = "BlockIntentsWhileLocked";
public static final String BOARDING_PASS_DETECTOR = "BoardingPassDetector";
public static final String BOOKMARK_PANE_ANDROID = "BookmarkPaneAndroid";
@@ -270,6 +281,7 @@ public abstract class ChromeFeatureList {
"CacheIsMultiInstanceApi31Enabled";
public static final String CAPTIVE_PORTAL_CERTIFICATE_LIST = "CaptivePortalCertificateList";
public static final String CCT_ADAPTIVE_BUTTON = "CCTAdaptiveButton";
+ public static final String CCT_ADAPTIVE_BUTTON_TEST_SWITCH = "CCTAdaptiveButtonTestSwitch";
public static final String CCT_AUTH_TAB = "CCTAuthTab";
public static final String CCT_AUTH_TAB_DISABLE_ALL_EXTERNAL_INTENTS =
"CCTAuthTabDisableAllExternalIntents";
@@ -284,6 +296,7 @@ public abstract class ChromeFeatureList {
"CCTEphemeralMediaViewerExperiment";
public static final String CCT_EPHEMERAL_MODE = "CCTEphemeralMode";
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";
public static final String CCT_GOOGLE_BOTTOM_BAR = "CCTGoogleBottomBar";
public static final String CCT_GOOGLE_BOTTOM_BAR_VARIANT_LAYOUTS =
@@ -302,6 +315,8 @@ public abstract class ChromeFeatureList {
public static final String CCT_PREDICTIVE_BACK_GESTURE = "CCTPredictiveBackGesture";
// NOTE: Do not query this feature directly, use WarmupManager#isCCTPrewarmTabFeatureEnabled.
public static final String CCT_PREWARM_TAB = "CCTPrewarmTab";
+ public static final String CCT_REALTIME_ENGAGEMENT_EVENTS_IN_BACKGROUND =
+ "CCTRealtimeEngagementEventsInBackground";
public static final String CCT_REPORT_PARALLEL_REQUEST_STATUS =
"CCTReportParallelRequestStatus";
public static final String CCT_REPORT_PRERENDER_EVENTS = "CCTReportPrerenderEvents";
@@ -326,6 +341,8 @@ public abstract class ChromeFeatureList {
public static final String CONTEXTUAL_PAGE_ACTIONS = "ContextualPageActions";
public static final String CONTEXTUAL_PAGE_ACTION_READER_MODE =
"ContextualPageActionReaderMode";
+ public static final String CONTEXTUAL_PAGE_ACTION_TAB_GROUPING =
+ "ContextualPageActionTabGrouping";
public static final String CONTEXTUAL_SEARCH_DISABLE_ONLINE_DETECTION =
"ContextualSearchDisableOnlineDetection";
public static final String CONTEXTUAL_SEARCH_SUPPRESS_SHORT_VIEW =
@@ -346,23 +363,25 @@ public abstract class ChromeFeatureList {
public static final String DATA_SHARING_JOIN_ONLY = "DataSharingJoinOnly";
public static final String DATA_SHARING_NON_PRODUCTION_ENVIRONMENT =
"DataSharingNonProductionEnvironment";
+ public static final String SHARED_DATA_TYPES_KILL_SWITCH = "SharedDataTypesKillSwitch";
+ public static final String DATA_SHARING_ENABLE_UPDATE_CHROME_UI =
+ "DataSharingEnableUpdateChromeUI";
public static final String DEFAULT_BROWSER_PROMO_ANDROID2 = "DefaultBrowserPromoAndroid2";
public static final String DETAILED_LANGUAGE_SETTINGS = "DetailedLanguageSettings";
public static final String DEVICE_AUTHENTICATOR_ANDROIDX = "DeviceAuthenticatorAndroidx";
public static final String DISABLE_INSTANCE_LIMIT = "DisableInstanceLimit";
- public static final String DISABLE_LIST_TAB_SWITCHER = "DisableListTabSwitcher";
public static final String DISCO_FEED_ENDPOINT = "DiscoFeedEndpoint";
+ public static final String DISPLAY_EDGE_TO_EDGE_FULLSCREEN = "DisplayEdgeToEdgeFullscreen";
public static final String DISPLAY_WILDCARD_CONTENT_SETTINGS =
"DisplayWildcardInContentSettings";
- public static final String DISPLAY_EDGE_TO_EDGE_FULLSCREEN = "DisplayEdgeToEdgeFullscreen";
public static final String DRAW_CUTOUT_EDGE_TO_EDGE = "DrawCutoutEdgeToEdge";
public static final String DRAW_KEY_NATIVE_EDGE_TO_EDGE = "DrawKeyNativeEdgeToEdge";
public static final String DYNAMIC_SAFE_AREA_INSETS = "DynamicSafeAreaInsets";
public static final String EDGE_TO_EDGE_BOTTOM_CHIN = "EdgeToEdgeBottomChin";
public static final String EDGE_TO_EDGE_DEBUGGING = "EdgeToEdgeDebugging";
+ public static final String EDGE_TO_EDGE_EVERYWHERE = "EdgeToEdgeEverywhere";
public static final String EDGE_TO_EDGE_MONITOR_CONFIGURATIONS =
"EdgeToEdgeMonitorConfigurations";
- public static final String EDGE_TO_EDGE_EVERYWHERE = "EdgeToEdgeEverywhere";
public static final String EDGE_TO_EDGE_SAFE_AREA_CONSTRAINT = "EdgeToEdgeSafeAreaConstraint";
public static final String EDGE_TO_EDGE_TABLET = "EdgeToEdgeTablet";
public static final String EDGE_TO_EDGE_WEB_OPT_IN = "EdgeToEdgeWebOptIn";
@@ -371,11 +390,12 @@ public abstract class ChromeFeatureList {
public static final String EDUCATIONAL_TIP_MODULE = "EducationalTipModule";
public static final String EMPTY_TAB_LIST_ANIMATION_KILL_SWITCH =
"EmptyTabListAnimationKillSwitch";
- public static final String ENABLE_SAVE_PACKAGE_FOR_OFF_THE_RECORD =
- "EnableSavePackageForOffTheRecord";
public static final String ENABLE_CLIPBOARD_DATA_CONTROLS_ANDROID =
"EnableClipboardDataControlsAndroid";
public static final String ENABLE_DISCOUNT_INFO_API = "EnableDiscountInfoApi";
+ public static final String ENABLE_EXCLUSIVE_ACCESS_MANAGER = "EnableExclusiveAccessManager";
+ public static final String ENABLE_SAVE_PACKAGE_FOR_OFF_THE_RECORD =
+ "EnableSavePackageForOffTheRecord";
public static final String ENABLE_X_AXIS_ACTIVITY_TRANSITION = "EnableXAxisActivityTransition";
public static final String FEED_CONTAINMENT = "FeedContainment";
public static final String FEED_FOLLOW_UI_UPDATE = "FeedFollowUiUpdate";
@@ -397,9 +417,9 @@ public abstract class ChromeFeatureList {
public static final String FULLSCREEN_INSETS_API_MIGRATION = "FullscreenInsetsApiMigration";
public static final String FULLSCREEN_INSETS_API_MIGRATION_ON_AUTOMOTIVE =
"FullscreenInsetsApiMigrationOnAutomotive";
- public static final String GRID_TAB_SWITCHER_UPDATE = "GridTabSwitcherUpdate";
public static final String GRID_TAB_SWITCHER_SURFACE_COLOR_UPDATE =
"GridTabSwitcherSurfaceColorUpdate";
+ public static final String GRID_TAB_SWITCHER_UPDATE = "GridTabSwitcherUpdate";
public static final String GROUP_NEW_TAB_WITH_PARENT = "GroupNewTabWithParent";
public static final String GROUP_SUGGESTION_SERVICE = "GroupSuggestionService";
public static final String HASH_PREFIX_REAL_TIME_LOOKUPS =
@@ -421,11 +441,13 @@ public abstract class ChromeFeatureList {
public static final String LINKED_SERVICES_SETTING = "LinkedServicesSetting";
public static final String LOADING_PREDICTOR_LIMIT_PRECONNECT_SOCKET_COUNT =
"LoadingPredictorLimitPreconnectSocketCount";
+ public static final String LOCAL_NETWORK_ACCESS = "LocalNetworkAccessChecks";
public static final String LOCK_BACK_PRESS_HANDLER_AT_START = "LockBackPressHandlerAtStart";
public static final String LOGIN_DB_DEPRECATION_ANDROID = "LoginDbDeprecationAndroid";
public static final String LOOKALIKE_NAVIGATION_URL_SUGGESTIONS_UI =
"LookalikeUrlNavigationSuggestionsUI";
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 =
"MayLaunchUrlUsesSeparateStoragePartition";
public static final String MINI_ORIGIN_BAR = "MiniOriginBar";
@@ -442,8 +464,10 @@ public abstract class ChromeFeatureList {
public static final String NEW_TAB_PAGE_ANDROID_TRIGGER_FOR_PRERENDER2 =
"NewTabPageAndroidTriggerForPrerender2";
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";
@@ -485,13 +509,13 @@ public abstract class ChromeFeatureList {
public static final String PRIVACY_SANDBOX_ADS_NOTICE_CCT = "PrivacySandboxAdsNoticeCCT";
public static final String PRIVACY_SANDBOX_AD_TOPICS_CONTENT_PARITY =
"PrivacySandboxAdTopicsContentParity";
- public static final String PRIVACY_SANDBOX_CCT_ADS_NOTICE_SURVEY =
- "PrivacySandboxCctAdsNoticeSurvey";
public static final String PRIVACY_SANDBOX_RELATED_WEBSITE_SETS_UI =
"PrivacySandboxRelatedWebsiteSetsUi";
public static final String PRIVACY_SANDBOX_SENTIMENT_SURVEY = "PrivacySandboxSentimentSurvey";
public static final String PRIVACY_SANDBOX_SETTINGS_4 = "PrivacySandboxSettings4";
public static final String PROCESS_RANK_POLICY_ANDROID = "ProcessRankPolicyAndroid";
+ public static final String PROPAGATE_DEVICE_CONTENT_FILTERS_TO_SUPERVISED_USER =
+ "PropagateDeviceContentFiltersToSupervisedUser";
public static final String PUSH_MESSAGING_DISALLOW_SENDER_IDS =
"PushMessagingDisallowSenderIDs";
public static final String PWA_RESTORE_UI = "PwaRestoreUi";
@@ -540,6 +564,10 @@ public abstract class ChromeFeatureList {
public static final String SEARCH_IN_CCT = "SearchInCCT";
public static final String SEARCH_IN_CCT_ALTERNATE_TAP_HANDLING =
"SearchInCCTAlternateTapHandling";
+ public static final String SEARCH_IN_CCT_IF_ENABLED_BY_EMBEDDER =
+ "SearchInCCTIfEnabledByEmbedder";
+ public static final String SEARCH_IN_CCT_ALTERNATE_TAP_HANDLING_IF_ENABLED_BY_EMBEDDER =
+ "SearchInCCTAlternateTapHandlingIfEnabledByEmbedder";
public static final String SEARCH_RESUMPTION_MODULE_ANDROID = "SearchResumptionModuleAndroid";
public static final String SEED_ACCOUNTS_REVAMP = "SeedAccountsRevamp";
public static final String SEGMENTATION_PLATFORM_ANDROID_HOME_MODULE_RANKER =
@@ -555,6 +583,7 @@ public abstract class ChromeFeatureList {
public static final String SHARE_CUSTOM_ACTIONS_IN_CCT = "ShareCustomActionsInCCT";
public static final String SHOW_HOME_BUTTON_POLICY_ANDROID = "ShowHomeButtonPolicyAndroid";
public static final String SHOW_NEW_TAB_ANIMATIONS = "ShowNewTabAnimations";
+ public static final String SHOW_TAB_LIST_ANIMATIONS = "ShowTabListAnimations";
public static final String SHOW_WARNINGS_FOR_SUSPICIOUS_NOTIFICATIONS =
"ShowWarningsForSuspiciousNotifications";
public static final String SKIP_ISOLATED_SPLIT_PRELOAD = "SkipIsolatedSplitPreload";
@@ -572,15 +601,15 @@ public abstract class ChromeFeatureList {
"SwapNewTabAndNewTabInGroupAndroid";
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_GROUP_ENTRY_POINTS_ANDROID = "TabGroupEntryPointsAndroid";
public static final String TAB_GROUP_PARITY_BOTTOM_SHEET_ANDROID =
"TabGroupParityBottomSheetAndroid";
- public static final String TAB_GROUP_SYNC_ANDROID = "TabGroupSyncAndroid";
- public static final String TAB_GROUP_SYNC_AUTO_OPEN_KILL_SWITCH =
- "TabGroupSyncAutoOpenKillSwitch";
- public static final String TABLET_TAB_STRIP_ANIMATION = "TabletTabStripAnimation";
- public static final String TAB_RESUMPTION_MODULE_ANDROID = "TabResumptionModuleAndroid";
public static final String TAB_STATE_FLAT_BUFFER = "TabStateFlatBuffer";
public static final String TAB_STRIP_CONTEXT_MENU = "TabStripContextMenuAndroid";
public static final String TAB_STRIP_DENSITY_CHANGE_ANDROID = "TabStripDensityChangeAndroid";
@@ -591,6 +620,11 @@ public abstract class ChromeFeatureList {
public static final String TAB_STRIP_TRANSITION_IN_DESKTOP_WINDOW =
"TabStripTransitionInDesktopWindow";
public static final String TAB_SWITCHER_COLOR_BLEND_ANIMATE = "TabSwitcherColorBlendAnimate";
+ public static final String TAB_SWITCHER_DRAG_DROP_ANDROID = "TabSwitcherDragDropAndroid";
+ public static final String TAB_SWITCHER_GROUP_SUGGESTIONS_ANDROID =
+ "TabSwitcherGroupSuggestionsAndroid";
+ public static final String TAB_SWITCHER_GROUP_SUGGESTIONS_TEST_MODE_ANDROID =
+ "TabSwitcherGroupSuggestionsTestModeAndroid";
public static final String TAB_SWITCHER_FOREIGN_FAVICON_SUPPORT =
"TabSwitcherForeignFaviconSupport";
public static final String TAB_WINDOW_MANAGER_REPORT_INDICES_MISMATCH =
@@ -598,10 +632,11 @@ public abstract class ChromeFeatureList {
public static final String TASK_MANAGER_CLANK = "TaskManagerClank";
public static final String TEST_DEFAULT_DISABLED = "TestDefaultDisabled";
public static final String TEST_DEFAULT_ENABLED = "TestDefaultEnabled";
- public static final String TILE_CONTEXT_MENU_REFACTOR = "TileContextMenuRefactor";
public static final String TINKER_TANK_BOTTOM_SHEET = "TinkerTankBottomSheet";
+ public static final String TOOLBAR_PHONE_ANIMATION_REFACTOR = "ToolbarPhoneAnimationRefactor";
public static final String TOOLBAR_SCROLL_ABLATION = "AndroidToolbarScrollAblation";
public static final String TOP_CONTROLS_REFACTOR = "TopControlsRefactor";
+ 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 =
@@ -613,11 +648,13 @@ public abstract class ChromeFeatureList {
public static final String UNO_PHASE_2_FOLLOW_UP = "UnoPhase2FollowUp";
public static final String UPDATE_COMPOSTIROR_FOR_SURFACE_CONTROL =
"UpdateCompositorForSurfaceControl";
+ public static final String USE_ACTIVITY_MANAGER_FOR_TAB_ACTIVATION =
+ "UseActivityManagerForTabActivation";
public static final String USE_ALTERNATE_HISTORY_SYNC_ILLUSTRATION =
"UseAlternateHistorySyncIllustration";
public static final String USE_CHIME_ANDROID_SDK = "UseChimeAndroidSdk";
- public static final String USE_ACTIVITY_MANAGER_FOR_TAB_ACTIVATION =
- "UseActivityManagerForTabActivation";
+ public static final String USE_INITIAL_NETWORK_STATE_AT_STARTUP =
+ "UseInitialNetworkStateAtStartup";
public static final String USE_LIBUNWINDSTACK_NATIVE_UNWINDER_ANDROID =
"UseLibunwindstackNativeUnwinderAndroid";
public static final String VISITED_URL_RANKING_SERVICE = "VisitedURLRankingService";
@@ -635,7 +672,10 @@ public abstract class ChromeFeatureList {
public static final CachedFlag sAccountForSuppressedKeyboardInsets =
newCachedFlag(ACCOUNT_FOR_SUPPRESSED_KEYBOARD_INSETS, /* defaultValue= */ true);
public static final CachedFlag sAllowTabClosingUponMinimization =
- newCachedFlag(ALLOW_TAB_CLOSING_UPON_MINIMIZATION, false);
+ newCachedFlag(
+ ALLOW_TAB_CLOSING_UPON_MINIMIZATION,
+ /* defaultValue= */ false,
+ /* defaultValueInTests= */ true);
public static final CachedFlag sAndroidAppIntegration =
newCachedFlag(ANDROID_APP_INTEGRATION, true);
public static final CachedFlag sAndroidAppIntegrationModule =
@@ -648,12 +688,17 @@ public abstract class ChromeFeatureList {
newCachedFlag(ANDROID_APP_INTEGRATION_WITH_FAVICON, true);
public static final CachedFlag sAndroidBottomToolbar =
newCachedFlag(ANDROID_BOTTOM_TOOLBAR, false, true);
+ public static final CachedFlag sAndroidComposeplate =
+ newCachedFlag(ANDROID_COMPOSEPLATE, false, true);
public static final CachedFlag sAndroidElegantTextHeight =
newCachedFlag(ANDROID_ELEGANT_TEXT_HEIGHT, true);
public static final CachedFlag sAndroidMinimalUiLargeScreen =
newCachedFlag(ANDROID_MINIMAL_UI_LARGE_SCREEN, false, true);
public static final CachedFlag sAndroidProgressBarVisualUpdate =
- newCachedFlag(ANDROID_PROGRESS_BAR_VISUAL_UPDATE, false);
+ newCachedFlag(
+ ANDROID_PROGRESS_BAR_VISUAL_UPDATE,
+ /* defaultValue= */ false,
+ /* defaultValueInTests= */ true);
public static final CachedFlag sAndroidSurfaceColorUpdate =
newCachedFlag(
ANDROID_SURFACE_COLOR_UPDATE,
@@ -661,6 +706,9 @@ public abstract class ChromeFeatureList {
/* defaultValueInTests= */ true);
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);
public static final CachedFlag sAndroidTabSkipSaveTabsKillswitch =
newCachedFlag(ANDROID_TAB_SKIP_SAVE_TABS_TASK_KILLSWITCH, true, true);
public static final CachedFlag sAndroidThemeModule =
@@ -674,6 +722,8 @@ public abstract class ChromeFeatureList {
newCachedFlag(ASYNC_NOTIFICATION_MANAGER, false, true);
public static final CachedFlag sAsyncNotificationManagerForDownload =
newCachedFlag(ASYNC_NOTIFICATION_MANAGER_FOR_DOWNLOAD, false, true);
+ public static final CachedFlag sBackgroundThreadPoolFieldTrial =
+ newCachedFlag(BACKGROUND_THREAD_POOL_FIELD_TRIAL, false);
public static final CachedFlag sBatchTabRestore =
newCachedFlag(
BATCH_TAB_RESTORE, /* defaultValue= */ false, /* defaultValueInTests= */ true);
@@ -700,6 +750,9 @@ public abstract class ChromeFeatureList {
/* defaultValue= */ false,
/* defaultValueInTests= */ true);
public static final CachedFlag sCctEphemeralMode = newCachedFlag(CCT_EPHEMERAL_MODE, true);
+ public static final CachedFlag sCctFixWarmup =
+ newCachedFlag(
+ CCT_FIX_WARMUP, /* defaultValue= */ false, /* defaultValueInTests= */ true);
public static final CachedFlag sCctFreInSameTask = newCachedFlag(CCT_FRE_IN_SAME_TASK, true);
public static final CachedFlag sCctGoogleBottomBar =
newCachedFlag(
@@ -720,15 +773,20 @@ public abstract class ChromeFeatureList {
/* defaultValueInTests= */ true);
public static final CachedFlag sCctNestedSecurityIcon =
newCachedFlag(CCT_NESTED_SECURITY_ICON, true);
+ public static final CachedFlag sCctOpenInBrowserButtonIfAllowedByEmbedder =
+ 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 sCctOpenInBrowserButtonIfAllowedByEmbedder =
- 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 sCctRealtimeEngagementEventsInBackground =
+ newCachedFlag(
+ CCT_REALTIME_ENGAGEMENT_EVENTS_IN_BACKGROUND,
+ /* defaultValue= */ false,
+ /* defaultValueInTests= */ true);
public static final CachedFlag sCctResizableForThirdParties =
newCachedFlag(CCT_RESIZABLE_FOR_THIRD_PARTIES, true);
public static final CachedFlag sCctRevampedBranding =
@@ -746,7 +804,14 @@ public abstract class ChromeFeatureList {
/* defaultValueInTests= */ true);
public static final CachedFlag sCommandLineOnNonRooted =
newCachedFlag(COMMAND_LINE_ON_NON_ROOTED, false);
- public static final CachedFlag sCpaSpecUpdate = newCachedFlag(CPA_SPEC_UPDATE, false);
+ public static final CachedFlag sCpaSpecUpdate =
+ newCachedFlag(
+ CPA_SPEC_UPDATE, /* defaultValue= */ false, /* defaultValueInTests= */ true);
+ public static final CachedFlag sCpaTabGroupingButton =
+ newCachedFlag(
+ CONTEXTUAL_PAGE_ACTION_TAB_GROUPING,
+ /* defaultValue= */ false,
+ /* defaultValueInTests= */ true);
public static final CachedFlag sCrossDeviceTabPaneAndroid =
newCachedFlag(CROSS_DEVICE_TAB_PANE_ANDROID, false);
public static final CachedFlag sDisableInstanceLimit =
@@ -754,11 +819,8 @@ public abstract class ChromeFeatureList {
DISABLE_INSTANCE_LIMIT,
/* defaultValue= */ false,
/* defaultValueInTests= */ true);
- public static final CachedFlag sDisableListTabSwitcher =
- newCachedFlag(
- DISABLE_LIST_TAB_SWITCHER,
- /* defaultValue= */ false,
- /* defaultValueInTests= */ true);
+ public static final CachedFlag sDisplayEdgeToEdgeFullscreen =
+ newCachedFlag(DISPLAY_EDGE_TO_EDGE_FULLSCREEN, false, true);
public static final CachedFlag sDrawKeyNativeEdgeToEdge =
newCachedFlag(DRAW_KEY_NATIVE_EDGE_TO_EDGE, true);
public static final CachedFlag sEdgeToEdgeBottomChin =
@@ -768,13 +830,13 @@ public abstract class ChromeFeatureList {
EDGE_TO_EDGE_DEBUGGING,
/* defaultValue= */ false,
/* defaultValueInTests= */ true);
- public static final CachedFlag sEdgeToEdgeMonitorConfigurations =
- newCachedFlag(EDGE_TO_EDGE_MONITOR_CONFIGURATIONS, /* defaultValue= */ true);
public static final CachedFlag sEdgeToEdgeEverywhere =
newCachedFlag(
EDGE_TO_EDGE_EVERYWHERE,
/* defaultValue= */ false,
/* defaultValueInTests= */ true);
+ public static final CachedFlag sEdgeToEdgeMonitorConfigurations =
+ newCachedFlag(EDGE_TO_EDGE_MONITOR_CONFIGURATIONS, /* defaultValue= */ true);
public static final CachedFlag sEdgeToEdgeTablet = newCachedFlag(EDGE_TO_EDGE_TABLET, false);
public static final CachedFlag sEdgeToEdgeWebOptIn =
newCachedFlag(EDGE_TO_EDGE_WEB_OPT_IN, true);
@@ -784,11 +846,11 @@ public abstract class ChromeFeatureList {
newCachedFlag(EDUCATIONAL_TIP_MODULE, false, true);
public static final CachedFlag sEnableDiscountInfoApi =
newCachedFlag(ENABLE_DISCOUNT_INFO_API, false, true);
+ public static final CachedFlag sEnableExclusiveAccessManager =
+ newCachedFlag(ENABLE_EXCLUSIVE_ACCESS_MANAGER, false);
public static final CachedFlag sEnableXAxisActivityTransition =
newCachedFlag(ENABLE_X_AXIS_ACTIVITY_TRANSITION, false);
public static final CachedFlag sFloatingSnackbar = newCachedFlag(FLOATING_SNACKBAR, true);
- public static final CachedFlag sForceListTabSwitcher =
- newCachedFlag(FORCE_LIST_TAB_SWITCHER, false);
public static final CachedFlag sForceTranslucentNotificationTrampoline =
newCachedFlag(FORCE_TRANSLUCENT_NOTIFICATION_TRAMPOLINE, false);
public static final CachedFlag sFullscreenInsetsApiMigration =
@@ -817,9 +879,17 @@ public abstract class ChromeFeatureList {
public static final CachedFlag sLockBackPressHandlerAtStart =
newCachedFlag(LOCK_BACK_PRESS_HANDLER_AT_START, true);
public static final CachedFlag sMagicStackAndroid = newCachedFlag(MAGIC_STACK_ANDROID, true);
+ public static final CachedFlag sMaliciousApkDownloadCheck =
+ newCachedFlag(
+ MALICIOUS_APK_DOWNLOAD_CHECK,
+ /* defaultValue= */ false,
+ /* defaultValueInTests= */ true);
public static final CachedFlag sMiniOriginBar = newCachedFlag(MINI_ORIGIN_BAR, false, true);
public static final CachedFlag sMostVisitedTilesCustomization =
- newCachedFlag(MOST_VISITED_TILES_CUSTOMIZATION, false);
+ newCachedFlag(
+ MOST_VISITED_TILES_CUSTOMIZATION,
+ /* defaultValue= */ false,
+ /* defaultValueInTests= */ true);
public static final CachedFlag sMostVisitedTilesReselect =
newCachedFlag(MOST_VISITED_TILES_RESELECT, false);
public static final CachedFlag sMultiInstanceApplicationStatusCleanup =
@@ -830,15 +900,22 @@ public abstract class ChromeFeatureList {
/* defaultValue= */ false,
/* defaultValueInTests= */ true);
public static final CachedFlag sNavBarColorAnimation =
- newCachedFlag(NAV_BAR_COLOR_ANIMATION, false);
+ newCachedFlag(
+ NAV_BAR_COLOR_ANIMATION,
+ /* defaultValue= */ false,
+ /* defaultValueInTests= */ true);
public static final CachedFlag sNavBarColorMatchesTabBackground =
newCachedFlag(NAV_BAR_COLOR_MATCHES_TAB_BACKGROUND, true);
public static final CachedFlag sNewTabPageAndroidTriggerForPrerender2 =
newCachedFlag(NEW_TAB_PAGE_ANDROID_TRIGGER_FOR_PRERENDER2, true);
public static final CachedFlag sNewTabPageCustomization =
newCachedFlag(NEW_TAB_PAGE_CUSTOMIZATION, false, true);
+ public static final CachedFlag sNewTabPageCustomizationForMvt =
+ newCachedFlag(NEW_TAB_PAGE_CUSTOMIZATION_FOR_MVT, false);
public static final CachedFlag sNewTabPageCustomizationToolbarButton =
newCachedFlag(NEW_TAB_PAGE_CUSTOMIZATION_TOOLBAR_BUTTON, false);
+ public static final CachedFlag sNewTabPageCustomizationV2 =
+ newCachedFlag(NEW_TAB_PAGE_CUSTOMIZATION_V2, false);
public static final CachedFlag sNotificationTrampoline =
newCachedFlag(NOTIFICATION_TRAMPOLINE, false);
public static final CachedFlag sOptimizationGuidePushNotifications =
@@ -847,10 +924,7 @@ public abstract class ChromeFeatureList {
public static final CachedFlag sPostGetMyMemoryStateToBackground =
newCachedFlag(POST_GET_MEMORY_PRESSURE_TO_BACKGROUND, true);
public static final CachedFlag sPowerSavingModeBroadcastReceiverInBackground =
- newCachedFlag(
- POWER_SAVING_MODE_BROADCAST_RECEIVER_IN_BACKGROUND,
- /* defaultValue= */ false,
- /* defaultValueInTests= */ true);
+ newCachedFlag(POWER_SAVING_MODE_BROADCAST_RECEIVER_IN_BACKGROUND, true);
public static final CachedFlag sPrefetchBrowserInitiatedTriggers =
newCachedFlag(PREFETCH_BROWSER_INITIATED_TRIGGERS, true);
public static final CachedFlag sPriceChangeModule = newCachedFlag(PRICE_CHANGE_MODULE, true);
@@ -870,6 +944,10 @@ public abstract class ChromeFeatureList {
SEARCH_IN_CCT, /* defaultValue= */ false, /* defaultValueInTests= */ true);
public static final CachedFlag sSearchInCCTAlternateTapHandling =
newCachedFlag(SEARCH_IN_CCT_ALTERNATE_TAP_HANDLING, false);
+ public static final CachedFlag sSearchInCCTIfEnabledByEmbedder =
+ newCachedFlag(SEARCH_IN_CCT_IF_ENABLED_BY_EMBEDDER, true);
+ public static final CachedFlag sSearchInCCTAlternateTapHandlingIfEnabledByEmbedder =
+ newCachedFlag(SEARCH_IN_CCT_ALTERNATE_TAP_HANDLING_IF_ENABLED_BY_EMBEDDER, true);
public static final CachedFlag sSettingsSingleActivity =
newCachedFlag(SETTINGS_SINGLE_ACTIVITY, false);
public static final CachedFlag sShowHomeButtonPolicyAndroid =
@@ -885,8 +963,6 @@ 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 sTabletTabStripAnimation =
- newCachedFlag(TABLET_TAB_STRIP_ANIMATION, false);
public static final CachedFlag sTabStateFlatBuffer =
newCachedFlag(
TAB_STATE_FLAT_BUFFER,
@@ -906,6 +982,11 @@ public abstract class ChromeFeatureList {
/* defaultValueInTests= */ true);
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);
public static final CachedFlag sTestDefaultDisabled =
newCachedFlag(TEST_DEFAULT_DISABLED, false);
public static final CachedFlag sTestDefaultEnabled = newCachedFlag(TEST_DEFAULT_ENABLED, true);
@@ -914,11 +995,21 @@ public abstract class ChromeFeatureList {
TOP_CONTROLS_REFACTOR,
/* defaultValue= */ false,
/* defaultValueInTests= */ true);
+ public static final CachedFlag sTouchToSearchCallout =
+ newCachedFlag(
+ TOUCH_TO_SEARCH_CALLOUT,
+ /* defaultValue= */ false,
+ /* defaultValueInTests= */ true);
public static final CachedFlag sTraceBinderIpc = newCachedFlag(TRACE_BINDER_IPC, false);
- public static final CachedFlag sUseChimeAndroidSdk =
- newCachedFlag(USE_CHIME_ANDROID_SDK, false);
public static final CachedFlag sUseActivityManagerForTabActivation =
newCachedFlag(USE_ACTIVITY_MANAGER_FOR_TAB_ACTIVATION, true);
+ public static final CachedFlag sUseChimeAndroidSdk =
+ newCachedFlag(USE_CHIME_ANDROID_SDK, false);
+ public static final CachedFlag sUseInitialNetworkStateAtStartup =
+ newCachedFlag(
+ USE_INITIAL_NETWORK_STATE_AT_STARTUP,
+ /* defaultValue= */ false,
+ /* defaultValueInTests= */ true);
public static final CachedFlag sUseLibunwindstackNativeUnwinderAndroid =
newCachedFlag(USE_LIBUNWINDSTACK_NATIVE_UNWINDER_ANDROID, true);
public static final CachedFlag sWebApkMinShellApkVersion =
@@ -934,17 +1025,20 @@ public abstract class ChromeFeatureList {
sAndroidAppIntegrationV2,
sAndroidAppIntegrationWithFavicon,
sAndroidBottomToolbar,
+ sAndroidComposeplate,
sAndroidElegantTextHeight,
sAndroidMinimalUiLargeScreen,
sAndroidProgressBarVisualUpdate,
sAndroidSurfaceColorUpdate,
sAndroidTabDeclutterDedupeTabIdsKillSwitch,
+ sAndroidTabGroupsColorUpdateGm3,
sAndroidTabSkipSaveTabsKillswitch,
sAndroidThemeModule,
sAndroidWebAppLaunchHandler,
sAndroidWindowPopupLargeScreen,
sAppSpecificHistory,
sAsyncNotificationManager,
+ sBackgroundThreadPoolFieldTrial,
sBatchTabRestore,
sBlockIntentsWhileLocked,
sBookmarkPaneAndroid,
@@ -958,6 +1052,7 @@ public abstract class ChromeFeatureList {
sCctBlockTouchesDuringEnterAnimation,
sCctEphemeralMediaViewerExperiment,
sCctEphemeralMode,
+ sCctFixWarmup,
sCctFreInSameTask,
sCctGoogleBottomBar,
sCctGoogleBottomBarVariantLayouts,
@@ -966,9 +1061,10 @@ public abstract class ChromeFeatureList {
sCctMinimized,
sCctNavigationalPrefetch,
sCctNestedSecurityIcon,
- sCctPredictiveBackGesture,
sCctOpenInBrowserButtonIfAllowedByEmbedder,
sCctOpenInBrowserButtonIfEnabledByEmbedder,
+ sCctPredictiveBackGesture,
+ sCctRealtimeEngagementEventsInBackground,
sCctResizableForThirdParties,
sCctRevampedBranding,
sCctTabModalDialog,
@@ -978,9 +1074,10 @@ public abstract class ChromeFeatureList {
sCollectAndroidFrameTimelineMetrics,
sCommandLineOnNonRooted,
sCpaSpecUpdate,
+ sCpaTabGroupingButton,
sCrossDeviceTabPaneAndroid,
sDisableInstanceLimit,
- sDisableListTabSwitcher,
+ sDisplayEdgeToEdgeFullscreen,
sDrawKeyNativeEdgeToEdge,
sEdgeToEdgeBottomChin,
sEdgeToEdgeDebugging,
@@ -991,9 +1088,9 @@ public abstract class ChromeFeatureList {
sEducationalTipDefaultBrowserPromoCard,
sEducationalTipModule,
sEnableDiscountInfoApi,
+ sEnableExclusiveAccessManager,
sEnableXAxisActivityTransition,
sFloatingSnackbar,
- sForceListTabSwitcher,
sForceTranslucentNotificationTrampoline,
sFullscreenInsetsApiMigration,
sFullscreenInsetsApiMigrationOnAutomotive,
@@ -1006,6 +1103,7 @@ public abstract class ChromeFeatureList {
sLegacyTabStateDeprecation,
sLockBackPressHandlerAtStart,
sMagicStackAndroid,
+ sMaliciousApkDownloadCheck,
sMiniOriginBar,
sMostVisitedTilesCustomization,
sMostVisitedTilesReselect,
@@ -1015,7 +1113,9 @@ public abstract class ChromeFeatureList {
sNavBarColorMatchesTabBackground,
sNewTabPageAndroidTriggerForPrerender2,
sNewTabPageCustomization,
+ sNewTabPageCustomizationForMvt,
sNewTabPageCustomizationToolbarButton,
+ sNewTabPageCustomizationV2,
sNotificationTrampoline,
sOptimizationGuidePushNotifications,
sPaintPreviewDemo,
@@ -1029,22 +1129,26 @@ public abstract class ChromeFeatureList {
sSafetyHubWeakAndReusedPasswords,
sSearchInCCT,
sSearchInCCTAlternateTapHandling,
+ sSearchInCCTIfEnabledByEmbedder,
+ sSearchInCCTAlternateTapHandlingIfEnabledByEmbedder,
sSettingsSingleActivity,
sShowHomeButtonPolicyAndroid,
sSkipIsolatedSplitPreload,
sSmallerTabStripTitleLimit,
sStartSurfaceReturnTime,
sTabClosureMethodRefactor,
- sTabletTabStripAnimation,
sTabStateFlatBuffer,
sTabStripDensityChangeAndroid,
sTabStripIncognitoMigration,
sTabStripLayoutOptimization,
sTabWindowManagerReportIndicesMismatch,
+ sTabletTabStripAnimation,
sTopControlsRefactor,
+ sTouchToSearchCallout,
sTraceBinderIpc,
- sUseChimeAndroidSdk,
sUseActivityManagerForTabActivation,
+ sUseChimeAndroidSdk,
+ sUseInitialNetworkStateAtStartup,
sUseLibunwindstackNativeUnwinderAndroid,
sWebApkMinShellApkVersion);
@@ -1063,6 +1167,8 @@ public abstract class ChromeFeatureList {
// MutableFlagWithSafeDefault instances.
/* Alphabetical: */
+ public static final MutableFlagWithSafeDefault sAdaptiveButtonInTopToolbarCustomizationV2 =
+ newMutableFlagWithSafeDefault(ADAPTIVE_BUTTON_IN_TOP_TOOLBAR_CUSTOMIZATION_V2, false);
public static final MutableFlagWithSafeDefault sAndroidAppearanceSettings =
newMutableFlagWithSafeDefault(ANDROID_APPEARANCE_SETTINGS, false);
public static final MutableFlagWithSafeDefault sAndroidBookmarkBar =
@@ -1070,7 +1176,13 @@ public abstract class ChromeFeatureList {
public static final MutableFlagWithSafeDefault sAndroidDumpOnScrollWithoutResource =
newMutableFlagWithSafeDefault(ANDROID_DUMP_ON_SCROLL_WITHOUT_RESOURCE, false);
public static final MutableFlagWithSafeDefault sAndroidNativePagesInNewTab =
- newMutableFlagWithSafeDefault(ANDROID_NATIVE_PAGES_IN_NEW_TAB, false);
+ newMutableFlagWithSafeDefault(ANDROID_NATIVE_PAGES_IN_NEW_TAB, true);
+ public static final MutableFlagWithSafeDefault sAndroidPinnedTabs =
+ newMutableFlagWithSafeDefault(ANDROID_PINNED_TABS, false);
+ public static final MutableFlagWithSafeDefault
+ sAndroidShowRestoreTabsPromoOnFreBypassedKillSwitch =
+ newMutableFlagWithSafeDefault(
+ ANDROID_SHOW_RESTORE_TABS_PROMO_ON_FRE_BYPASSED_KILL_SWITCH, true);
public static final MutableFlagWithSafeDefault sAndroidTabDeclutterArchiveAllButActiveTab =
newMutableFlagWithSafeDefault(ANDROID_TAB_DECLUTTER_ARCHIVE_ALL_BUT_ACTIVE, false);
public static final MutableFlagWithSafeDefault sAndroidTabDeclutterArchiveDuplicateTabs =
@@ -1129,22 +1241,35 @@ public abstract class ChromeFeatureList {
newMutableFlagWithSafeDefault(SAFETY_HUB_FOLLOWUP, true);
public static final MutableFlagWithSafeDefault sShowNewTabAnimations =
newMutableFlagWithSafeDefault(SHOW_NEW_TAB_ANIMATIONS, false);
+ public static final MutableFlagWithSafeDefault sShowTabListAnimations =
+ newMutableFlagWithSafeDefault(SHOW_TAB_LIST_ANIMATIONS, false);
public static final MutableFlagWithSafeDefault sSuppressToolbarCapturesAtGestureEnd =
newMutableFlagWithSafeDefault(SUPPRESS_TOOLBAR_CAPTURES_AT_GESTURE_END, false);
public static final MutableFlagWithSafeDefault sSwapNewTabAndNewTabInGroupAndroid =
newMutableFlagWithSafeDefault(SWAP_NEW_TAB_AND_NEW_TAB_IN_GROUP_ANDROID, 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 sTabGroupEntryPointsAndroid =
newMutableFlagWithSafeDefault(TAB_GROUP_ENTRY_POINTS_ANDROID, false);
public static final MutableFlagWithSafeDefault sTabGroupParityBottomSheetAndroid =
newMutableFlagWithSafeDefault(TAB_GROUP_PARITY_BOTTOM_SHEET_ANDROID, false);
public static final MutableFlagWithSafeDefault sTabSwitcherColorBlendAnimate =
newMutableFlagWithSafeDefault(TAB_SWITCHER_COLOR_BLEND_ANIMATE, true);
+ public static final MutableFlagWithSafeDefault sTabSwitcherGroupSuggestionsAndroid =
+ newMutableFlagWithSafeDefault(TAB_SWITCHER_GROUP_SUGGESTIONS_ANDROID, false);
+ public static final MutableFlagWithSafeDefault sTabSwitcherGroupSuggestionsTestModeAndroid =
+ newMutableFlagWithSafeDefault(TAB_SWITCHER_GROUP_SUGGESTIONS_TEST_MODE_ANDROID, false);
public static final MutableFlagWithSafeDefault sTabSwitcherForeignFaviconSupport =
newMutableFlagWithSafeDefault(TAB_SWITCHER_FOREIGN_FAVICON_SUPPORT, true);
+ public static final MutableFlagWithSafeDefault sToolbarPhoneAnimationRefactor =
+ newMutableFlagWithSafeDefault(TOOLBAR_PHONE_ANIMATION_REFACTOR, false);
public static final MutableFlagWithSafeDefault sToolbarScrollAblation =
newMutableFlagWithSafeDefault(TOOLBAR_SCROLL_ABLATION, false);
- public static final MutableFlagWithSafeDefault sAdaptiveButtonInTopToolbarCustomizationV2 =
- newMutableFlagWithSafeDefault(ADAPTIVE_BUTTON_IN_TOP_TOOLBAR_CUSTOMIZATION_V2, false);
// CachedFeatureParam instances.
/* Alphabetical order by feature name, arbitrary order by param name: */
@@ -1155,6 +1280,10 @@ public abstract class ChromeFeatureList {
newBooleanCachedFeatureParam(CCT_ADAPTIVE_BUTTON, "open_in_browser", false);
public static final BooleanCachedFeatureParam sCctAdaptiveButtonEnableVoice =
newBooleanCachedFeatureParam(CCT_ADAPTIVE_BUTTON, "voice", false);
+ public static final BooleanCachedFeatureParam sCctAdaptiveButtonContextualOnly =
+ newBooleanCachedFeatureParam(CCT_ADAPTIVE_BUTTON, "contextual_only", false);
+ public static final IntCachedFeatureParam sCctAdaptiveButtonDefaultVariant =
+ newIntCachedFeatureParam(CCT_ADAPTIVE_BUTTON, "default_variant", 0);
public static final IntCachedFeatureParam sAndroidAppIntegrationV2ContentTtlHours =
newIntCachedFeatureParam(ANDROID_APP_INTEGRATION_V2, "content_ttl_hours", 168);
@@ -1203,9 +1332,18 @@ public abstract class ChromeFeatureList {
"multi_data_source_skip_device_check",
false);
+ public static final BooleanCachedFeatureParam sAndroidComposeplateSkipLocaleCheck =
+ newBooleanCachedFeatureParam(ANDROID_COMPOSEPLATE, "skip_locale_check", false);
+
+ public static final BooleanCachedFeatureParam sAndroidComposeplateHideIncognitoButton =
+ newBooleanCachedFeatureParam(ANDROID_COMPOSEPLATE, "hide_incognito_button", false);
+
public static final BooleanCachedFeatureParam sAndroidBottomToolbarDefaultToTop =
newBooleanCachedFeatureParam(ANDROID_BOTTOM_TOOLBAR, "default_to_top", true);
+ public static final IntCachedFeatureParam sBackgroundThreadPoolFieldTrialConfig =
+ newIntCachedFeatureParam(BACKGROUND_THREAD_POOL_FIELD_TRIAL, "config", 0);
+
public static final IntCachedFeatureParam sBatchTabRestoreBatchSize =
newIntCachedFeatureParam(BATCH_TAB_RESTORE, "batch_tab_restore_batch_size", 5);
@@ -1342,6 +1480,12 @@ public abstract class ChromeFeatureList {
"max_legacy_tab_state_files_deleted_per_session",
100);
+ public static final IntCachedFeatureParam sDisableInstanceLimitMemoryThresholdMb =
+ newIntCachedFeatureParam(
+ DISABLE_INSTANCE_LIMIT, "max_instance_limit_memory_threshold_mb", 6500);
+ public static final IntCachedFeatureParam sDisableInstanceLimitMaxCount =
+ newIntCachedFeatureParam(DISABLE_INSTANCE_LIMIT, "max_instance_limit", 20);
+
/** Cached param whether we disable e2e on the recent tabs page. */
public static final BooleanCachedFeatureParam sDrawKeyNativeEdgeToEdgeDisableRecentTabsE2e =
newBooleanCachedFeatureParam(
@@ -1411,12 +1555,21 @@ public abstract class ChromeFeatureList {
public static final BooleanCachedFeatureParam sEdgeToEdgeEverywhereIsDebugging =
newBooleanCachedFeatureParam(EDGE_TO_EDGE_EVERYWHERE, "e2e_everywhere_debug", false);
+ public static final IntCachedFeatureParam sEdgeToEdgeTabletInvisibleBottomChinMinWidth =
+ newIntCachedFeatureParam(
+ EDGE_TO_EDGE_TABLET, "e2e_tablet_invisible_bottom_chin_min_width", -1);
+
+ public static final IntCachedFeatureParam sEdgeToEdgeTabletMinWidthThreshold =
+ newIntCachedFeatureParam(EDGE_TO_EDGE_TABLET, "e2e_tablet_width_threshold", -1);
+
public static final BooleanCachedFeatureParam sTabGroupListContainment =
newBooleanCachedFeatureParam(
GRID_TAB_SWITCHER_SURFACE_COLOR_UPDATE, "tab_group_list_containment", true);
public static final BooleanCachedFeatureParam sMagicStackAndroidShowAllModules =
newBooleanCachedFeatureParam(MAGIC_STACK_ANDROID, "show_all_modules", false);
+ public static final BooleanCachedFeatureParam sMaliciousApkDownloadCheckTelemetryOnly =
+ newBooleanCachedFeatureParam(MALICIOUS_APK_DOWNLOAD_CHECK, "telemetry_only", false);
public static final BooleanCachedFeatureParam sMostVisitedTilesReselectLaxSchemeHost =
newBooleanCachedFeatureParam(MOST_VISITED_TILES_RESELECT, "lax_scheme_host", false);
public static final BooleanCachedFeatureParam sMostVisitedTilesReselectLaxRef =
@@ -1454,6 +1607,12 @@ public abstract class ChromeFeatureList {
"skip_shopping_persisted_tab_data_delayed_initialization",
true);
+ public static final IntCachedFeatureParam sReadAloudAudioOverviewsSpeedAdditionPercentage =
+ newIntCachedFeatureParam(
+ READALOUD_AUDIO_OVERVIEWS,
+ "read_aloud_audio_overviews_speed_addition_percentage",
+ 20);
+
/** 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);
@@ -1505,14 +1664,17 @@ public abstract class ChromeFeatureList {
public static final IntCachedFeatureParam sWebApkMinShellApkVersionValue =
newIntCachedFeatureParam(WEB_APK_MIN_SHELL_APK_VERSION, "version", 146);
+ public static final BooleanCachedFeatureParam sTouchToSearchCalloutTextVariant =
+ newBooleanCachedFeatureParam(TOUCH_TO_SEARCH_CALLOUT, "text_variant", false);
+
/** All {@link CachedFeatureParam}s of features in this FeatureList */
public static final List> sParamsCached =
List.of(
sAndroidAppIntegrationModuleForceCardShow,
sAndroidAppIntegrationModuleShowThirdPartyCard,
sAndroidAppIntegrationMultiDataSourceHistoryContentTtlHours,
- sAndroidAppIntegrationMultiDataSourceSkipSchemaCheck,
sAndroidAppIntegrationMultiDataSourceSkipDeviceCheck,
+ sAndroidAppIntegrationMultiDataSourceSkipSchemaCheck,
sAndroidAppIntegrationV2ContentTtlHours,
sAndroidAppIntegrationWithFaviconScheduleDelayTimeMs,
sAndroidAppIntegrationWithFaviconSkipDeviceCheck,
@@ -1520,12 +1682,16 @@ public abstract class ChromeFeatureList {
sAndroidAppIntegrationWithFaviconUseLargeFavicon,
sAndroidAppIntegrationWithFaviconZeroStateFaviconNumber,
sAndroidBottomToolbarDefaultToTop,
+ sAndroidComposeplateSkipLocaleCheck,
+ sAndroidComposeplateHideIncognitoButton,
sAndroidThemeModuleForceDependencies,
+ sBackgroundThreadPoolFieldTrialConfig,
sBatchTabRestoreBatchSize,
+ sCctAdaptiveButtonContextualOnly,
+ sCctAdaptiveButtonDefaultVariant,
sCctAdaptiveButtonEnableOpenInBrowser,
sCctAdaptiveButtonEnableVoice,
sCctAuthTabEnableHttpsRedirectsVerificationTimeoutMs,
- sClampAutomotiveScalingMaxScalingPercentage,
sCctAutoTranslateAllowAllFirstParties,
sCctAutoTranslatePackageNamesAllowlist,
sCctGoogleBottomBarButtonList,
@@ -1538,10 +1704,13 @@ public abstract class ChromeFeatureList {
sCctResizableForThirdPartiesAllowlistEntries,
sCctResizableForThirdPartiesDefaultPolicy,
sCctResizableForThirdPartiesDenylistEntries,
+ sClampAutomotiveScalingMaxScalingPercentage,
sClankStartupLatencyInjectionAmountMs,
sCollectAndroidFrameTimelineMetricsJankTrackerDelayedStartMs,
sDeleteLegacyTabStateFilesBatchSize,
sDeleteMigratedLegacyTabStateFilesAfterRestore,
+ sDisableInstanceLimitMaxCount,
+ sDisableInstanceLimitMemoryThresholdMb,
sDrawKeyNativeEdgeToEdgeDisableCctMediaViewerE2e,
sDrawKeyNativeEdgeToEdgeDisableHubE2e,
sDrawKeyNativeEdgeToEdgeDisableIncognitoNtpE2e,
@@ -1552,10 +1721,13 @@ public abstract class ChromeFeatureList {
sEdgeToEdgeEverywhereIsDebugging,
sEdgeToEdgeEverywhereOemList,
sEdgeToEdgeEverywhereOemMinVersions,
+ sEdgeToEdgeTabletInvisibleBottomChinMinWidth,
+ sEdgeToEdgeTabletMinWidthThreshold,
sMagicStackAndroidShowAllModules,
+ sMaliciousApkDownloadCheckTelemetryOnly,
sMaxLegacyTabStateFilesDeletedPerSession,
- sMostVisitedTilesReselectLaxQuery,
sMostVisitedTilesReselectLaxPath,
+ sMostVisitedTilesReselectLaxQuery,
sMostVisitedTilesReselectLaxRef,
sMostVisitedTilesReselectLaxSchemeHost,
sNavBarColorAnimationDisableBottomChinColorAnimation,
@@ -1568,6 +1740,7 @@ public abstract class ChromeFeatureList {
sOmahaMinSdkVersionMinSdkVersion,
sOptimizationGuidePushNotificationsMaxCacheSize,
sPriceChangeModuleSkipShoppingPersistedTabDataDelayedInit,
+ sReadAloudAudioOverviewsSpeedAdditionPercentage,
sSearchinCctApplyReferrerId,
sSearchinCctOmniboxAllowedPackageNames,
sStartSurfaceReturnTimeTabletSecs,
@@ -1578,6 +1751,7 @@ public abstract class ChromeFeatureList {
sTabStripLayoutOptimizationOnExternalDisplay,
sTabStripLayoutOptimizationOnExternalDisplayOemDenylist,
sTabWindowManagerReportIndicesMismatchTimeDiffThresholdMs,
+ sTouchToSearchCalloutTextVariant,
sUseChimeAndroidSdkAlwaysRegister,
sWebApkMinShellApkVersionValue);
@@ -1585,28 +1759,28 @@ public abstract class ChromeFeatureList {
/* Alphabetical: */
public static final MutableBooleanParamWithSafeDefault
sAndroidNativePagesInNewTabBookmarksEnabled =
- sAndroidNativePagesInNewTab.newBooleanParam(
- "android_native_pages_in_new_tab_bookmarks_enabled", true);
+ sAndroidNativePagesInNewTab.newBooleanParam(
+ "android_native_pages_in_new_tab_bookmarks_enabled", true);
public static final MutableBooleanParamWithSafeDefault
sAndroidNativePagesInNewTabDownloadsEnabled =
- sAndroidNativePagesInNewTab.newBooleanParam(
- "android_native_pages_in_new_tab_downloads_enabled", true);
+ sAndroidNativePagesInNewTab.newBooleanParam(
+ "android_native_pages_in_new_tab_downloads_enabled", true);
public static final MutableBooleanParamWithSafeDefault
sAndroidNativePagesInNewTabHistoryEnabled =
- sAndroidNativePagesInNewTab.newBooleanParam(
- "android_native_pages_in_new_tab_history_enabled", true);
+ sAndroidNativePagesInNewTab.newBooleanParam(
+ "android_native_pages_in_new_tab_history_enabled", true);
public static final MutableBooleanParamWithSafeDefault
sAndroidNativePagesInNewTabRecentTabsEnabled =
sAndroidNativePagesInNewTab.newBooleanParam(
"android_native_pages_in_new_tab_recent_tabs_enabled", true);
- public static final MutableIntParamWithSafeDefault
- sAndroidTabDeclutterAutoDeleteTimeDeltaHours =
- sAndroidTabDeclutterAutoDelete.newIntParam(
- "android_tab_declutter_auto_delete_time_delta_hours", 90 * 24);
public static final MutableBooleanParamWithSafeDefault
sDisableBottomControlsStackerYOffsetDispatching =
sBottomBrowserControlsRefactor.newBooleanParam(
"disable_bottom_controls_stacker_y_offset", false);
+ public static final MutableIntParamWithSafeDefault
+ sAndroidTabDeclutterAutoDeleteTimeDeltaHours =
+ sAndroidTabDeclutterAutoDelete.newIntParam(
+ "android_tab_declutter_auto_delete_time_delta_hours", 90 * 24);
public static final MutableIntParamWithSafeDefault sTabSwitcherColorBlendAnimateDurationMs =
sTabSwitcherColorBlendAnimate.newIntParam("animation_duration_ms", 240);
public static final MutableIntParamWithSafeDefault sTabSwitcherColorBlendAnimateInterpolator =
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 bab4996a..87e90ea5 100755
--- a/tools/under-control/src/chrome/browser/prefs/browser_prefs.cc
+++ b/tools/under-control/src/chrome/browser/prefs/browser_prefs.cc
@@ -51,6 +51,7 @@
#include "chrome/browser/notifications/notifier_state_tracker.h"
#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"
@@ -115,6 +116,7 @@
#include "components/enterprise/browser/identifiers/identifiers_prefs.h"
#include "components/enterprise/buildflags/buildflags.h"
#include "components/enterprise/connectors/core/connectors_prefs.h"
+#include "components/feature_engagement/public/pref_names.h"
#include "components/fingerprinting_protection_filter/common/fingerprinting_protection_filter_constants.h"
#include "components/fingerprinting_protection_filter/common/prefs.h"
#include "components/history_clusters/core/history_clusters_prefs.h"
@@ -276,6 +278,7 @@
#include "components/permissions/contexts/geolocation_permission_context_android.h"
#include "components/webapps/browser/android/install_prompt_prefs.h"
#else // BUILDFLAG(IS_ANDROID)
+#include "chrome/browser/contextual_cueing/contextual_cueing_prefs.h"
#include "chrome/browser/device_api/device_service_impl.h"
#include "chrome/browser/gcm/gcm_product_util.h"
#include "chrome/browser/hid/hid_policy_allowed_devices.h"
@@ -483,10 +486,6 @@
#include "chrome/browser/media/cdm_pref_service_helper.h"
#include "chrome/browser/media/media_foundation_service_monitor.h"
#include "chrome/browser/os_crypt/app_bound_encryption_provider_win.h"
-#if BUILDFLAG(GOOGLE_CHROME_BRANDING)
-#include "chrome/browser/win/conflicts/incompatible_applications_updater.h"
-#include "chrome/browser/win/conflicts/third_party_conflicts_manager.h"
-#endif // BUILDFLAG(GOOGLE_CHROME_BRANDING)
#endif // BUILDFLAG(IS_WIN)
#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC)
@@ -1114,6 +1113,47 @@ inline constexpr char kSyncBagOfChips[] = "sync.bag_of_chips";
inline constexpr char kSyncLastSyncedTime[] = "sync.last_synced_time";
inline constexpr char kSyncLastPollTime[] = "sync.last_poll_time";
inline constexpr char kSyncPollInterval[] = "sync.short_poll_interval";
+inline constexpr char kHasSeenWelcomePage[] = "browser.has_seen_welcome_page";
+inline constexpr char kSharingVapidKey[] = "sharing.vapid_key";
+
+#if BUILDFLAG(IS_WIN)
+// Deprecated 05/2025.
+inline constexpr char kIncompatibleApplications[] = "incompatible_applications";
+
+// Deprecated 05/2025.
+inline constexpr char kModuleBlocklistCacheMD5Digest[] =
+ "module_blocklist_cache_md5_digest";
+#endif // BUILDFLAG(IS_WIN)
+
+// Deprecated 05/2025.
+inline constexpr char kPrivacySandboxFakeNoticePromptShownTimeSync[] =
+ "privacy_sandbox.fake_notice.prompt_shown_time_sync";
+inline constexpr char kPrivacySandboxFakeNoticePromptShownTime[] =
+ "privacy_sandbox.fake_notice.prompt_shown_time";
+inline constexpr char kPrivacySandboxFakeNoticeFirstSignInTime[] =
+ "privacy_sandbox.fake_notice.first_sign_in_time";
+inline constexpr char kPrivacySandboxFakeNoticeFirstSignOutTime[] =
+ "privacy_sandbox.fake_notice.first_sign_out_time";
+
+// Deprecated 06/2025.
+inline constexpr char kStorageGarbageCollect[] =
+ "extensions.storage.garbagecollect";
+inline constexpr char kVariationsLimitedEntropySyntheticTrialSeed[] =
+ "variations_limited_entropy_synthetic_trial_seed";
+inline constexpr char kVariationsLimitedEntropySyntheticTrialSeedV2[] =
+ "variations_limited_entropy_synthetic_trial_seed_v2";
+inline constexpr char kGaiaCookiePeriodicReportTimeDeprecated[] =
+ "gaia_cookie.periodic_report_time";
+
+#if BUILDFLAG(IS_CHROMEOS)
+// Deprecated 06/2025.
+inline constexpr char kNativeClientForceAllowed[] =
+ "native_client_force_allowed";
+inline constexpr char kDeviceNativeClientForceAllowed[] =
+ "device_native_client_force_allowed";
+inline constexpr char kDeviceNativeClientForceAllowedCache[] =
+ "device_native_client_force_allowed_cache";
+#endif // BUILDFLAG(IS_CHROMEOS)
// Register local state used only for migration (clearing or moving to a new
// key).
@@ -1222,11 +1262,41 @@ void RegisterLocalStatePrefsForMigration(PrefRegistrySimple* registry) {
registry->RegisterListPref(
kPerformanceInterventionNotificationAcceptHistoryDeprecated);
#endif
+
+#if BUILDFLAG(IS_WIN)
+ // Deprecated 05/2025.
+ registry->RegisterDictionaryPref(kIncompatibleApplications);
+
+ // Deprecated 05/2025.
+ registry->RegisterStringPref(kModuleBlocklistCacheMD5Digest, "");
+#endif
+
+ // Deprecated 06/2025.
+ registry->RegisterUint64Pref(kVariationsLimitedEntropySyntheticTrialSeed, 0);
+ registry->RegisterUint64Pref(kVariationsLimitedEntropySyntheticTrialSeedV2,
+ 0);
+
+#if BUILDFLAG(IS_CHROMEOS)
+ // Deprecated 06/2025
+ registry->RegisterBooleanPref(kNativeClientForceAllowed, false);
+ registry->RegisterBooleanPref(kDeviceNativeClientForceAllowed, false);
+ registry->RegisterBooleanPref(kDeviceNativeClientForceAllowedCache, false);
+#endif // BUILDFLAG(IS_CHROMEOS)
}
// 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_CHROMEOS)
@@ -1576,6 +1646,12 @@ void RegisterProfilePrefsForMigration(
registry->RegisterTimePref(kSyncLastSyncedTime, base::Time());
registry->RegisterTimePref(kSyncLastPollTime, base::Time());
registry->RegisterTimeDeltaPref(kSyncPollInterval, base::TimeDelta());
+ registry->RegisterDictionaryPref(kSharingVapidKey);
+ registry->RegisterBooleanPref(kHasSeenWelcomePage, false);
+
+ // Deprecated 06/2025
+ registry->RegisterBooleanPref(kStorageGarbageCollect, false);
+ registry->RegisterDoublePref(kGaiaCookiePeriodicReportTimeDeprecated, 0);
}
} // namespace
@@ -1638,6 +1714,7 @@ void RegisterLocalState(PrefRegistrySimple* registry) {
ProfileAttributesStorage::RegisterPrefs(registry);
ProfileNetworkContextService::RegisterLocalStatePrefs(registry);
profiles::RegisterPrefs(registry);
+ feature_engagement::RegisterLocalStatePrefs(registry);
#if BUILDFLAG(IS_ANDROID)
PushMessagingServiceImpl::RegisterPrefs(registry);
#endif
@@ -1827,10 +1904,6 @@ void RegisterLocalState(PrefRegistrySimple* registry) {
policy::policy_prefs::kNativeWindowOcclusionEnabled, true);
MediaFoundationServiceMonitor::RegisterPrefs(registry);
os_crypt_async::AppBoundEncryptionProviderWin::RegisterLocalPrefs(registry);
-#if BUILDFLAG(GOOGLE_CHROME_BRANDING)
- IncompatibleApplicationsUpdater::RegisterLocalStatePrefs(registry);
- ThirdPartyConflictsManager::RegisterLocalStatePrefs(registry);
-#endif // BUILDFLAG(GOOGLE_CHROME_BRANDING)
#endif // BUILDFLAG(IS_WIN)
#if BUILDFLAG(ENABLE_DOWNGRADE_PROCESSING)
@@ -1863,6 +1936,7 @@ void RegisterLocalState(PrefRegistrySimple* registry) {
// TODO(b/328668317): Default pref should be set to true once this is
// launched.
registry->RegisterBooleanPref(prefs::kOsUpdateHandlerEnabled, false);
+ platform_experience::prefs::RegisterPrefs(*registry);
#endif // BUILDFLAG(IS_WIN) && BUILDFLAG(GOOGLE_CHROME_BRANDING)
#if BUILDFLAG(ENABLE_PDF)
@@ -2076,6 +2150,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry,
captions::LiveTranslateController::RegisterProfilePrefs(registry);
ChromeAuthenticatorRequestDelegate::RegisterProfilePrefs(registry);
commerce::CommerceUiTabHelper::RegisterProfilePrefs(registry);
+ contextual_cueing::prefs::RegisterProfilePrefs(registry);
DeviceServiceImpl::RegisterProfilePrefs(registry);
DriveService::RegisterProfilePrefs(registry);
extensions::TabsCaptureVisibleTabFunction::RegisterProfilePrefs(registry);
@@ -2300,11 +2375,10 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry,
registry->RegisterBooleanPref(
prefs::kAccessibilityMainNodeAnnotationsEnabled, false,
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
+#endif // !BUILDFLAG(IS_ANDROID)
- // TODO(crbug.com/400455013): Add LNA support on Android
registry->RegisterBooleanPref(
prefs::kManagedLocalNetworkAccessRestrictionsEnabled, false);
-#endif // !BUILDFLAG(IS_ANDROID)
#if BUILDFLAG(IS_ANDROID)
registry->RegisterBooleanPref(prefs::kVirtualKeyboardResizesLayoutByDefault,
@@ -2491,6 +2565,25 @@ void MigrateObsoleteLocalStatePrefs(PrefService* local_state) {
kPerformanceInterventionNotificationAcceptHistoryDeprecated);
#endif // !BUILDFLAG(IS_ANDROID)
+#if BUILDFLAG(IS_WIN)
+ // Deprecated 05/2025.
+ local_state->ClearPref(kIncompatibleApplications);
+
+ // Deprecated 05/2025.
+ local_state->ClearPref(kModuleBlocklistCacheMD5Digest);
+#endif
+
+ // Added 06/2025.
+ local_state->ClearPref(kVariationsLimitedEntropySyntheticTrialSeed);
+ local_state->ClearPref(kVariationsLimitedEntropySyntheticTrialSeedV2);
+
+#if BUILDFLAG(IS_CHROMEOS)
+ // Added 06/2025
+ local_state->ClearPref(kNativeClientForceAllowed);
+ local_state->ClearPref(kDeviceNativeClientForceAllowed);
+ local_state->ClearPref(kDeviceNativeClientForceAllowedCache);
+#endif
+
// Please don't delete the following line. It is used by PRESUBMIT.py.
// END_MIGRATE_OBSOLETE_LOCAL_STATE_PREFS
@@ -2516,6 +2609,12 @@ void MigrateObsoleteProfilePrefs(PrefService* profile_prefs,
// BEGIN_MIGRATE_OBSOLETE_PROFILE_PREFS
// Please don't delete the preceding line. It is used by PRESUBMIT.py.
+ // Added 05/2025.
+ profile_prefs->ClearPref(kPrivacySandboxFakeNoticePromptShownTimeSync);
+ profile_prefs->ClearPref(kPrivacySandboxFakeNoticePromptShownTime);
+ profile_prefs->ClearPref(kPrivacySandboxFakeNoticeFirstSignInTime);
+ profile_prefs->ClearPref(kPrivacySandboxFakeNoticeFirstSignOutTime);
+
privacy_sandbox::PrivacySandboxNoticeStorage::UpdateNoticeSchemaV2(
profile_prefs);
@@ -2886,6 +2985,12 @@ void MigrateObsoleteProfilePrefs(PrefService* profile_prefs,
profile_prefs->ClearPref(kSyncLastSyncedTime);
profile_prefs->ClearPref(kSyncLastPollTime);
profile_prefs->ClearPref(kSyncPollInterval);
+ profile_prefs->ClearPref(kSharingVapidKey);
+ profile_prefs->ClearPref(kHasSeenWelcomePage);
+
+ // Added 06/2025.
+ profile_prefs->ClearPref(kStorageGarbageCollect);
+ profile_prefs->ClearPref(kGaiaCookiePeriodicReportTimeDeprecated);
// 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 8b3b888e..b1cd6837 100755
--- a/tools/under-control/src/chrome/browser/ui/tab_helpers.cc
+++ b/tools/under-control/src/chrome/browser/ui/tab_helpers.cc
@@ -220,7 +220,6 @@
#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
BUILDFLAG(IS_CHROMEOS)
#include "chrome/browser/ui/blocked_content/framebust_block_tab_helper.h"
-#include "chrome/browser/ui/browser_finder.h"
#include "chrome/browser/ui/hats/hats_helper.h"
#include "chrome/browser/ui/performance_controls/performance_controls_hats_service_factory.h"
#include "chrome/browser/ui/shared_highlighting/shared_highlighting_promo.h"
@@ -241,13 +240,13 @@
#include "chrome/browser/ui/extensions/extension_side_panel_utils.h"
#include "chrome/browser/web_applications/policy/pre_redirection_url_observer.h"
#include "chrome/browser/web_applications/web_app_utils.h"
-#include "extensions/browser/view_type_utils.h" // nogncheck
#include "extensions/common/extension_features.h"
#include "extensions/common/mojom/view_type.mojom.h"
#endif
#if BUILDFLAG(ENABLE_EXTENSIONS_CORE)
#include "chrome/browser/extensions/tab_helper.h"
+#include "extensions/browser/view_type_utils.h"
#endif
#if BUILDFLAG(ENABLE_OFFLINE_PAGES)
@@ -628,13 +627,10 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) {
PluginObserverAndroid::CreateForWebContents(web_contents);
task_manager::WebContentsTags::CreateForTabContents(web_contents);
- if (base::FeatureList::IsEnabled(payments::facilitated::kEnablePixPayments) ||
- base::FeatureList::IsEnabled(blink::features::kPaymentLinkDetection)) {
if (auto* optimization_guide_decider =
OptimizationGuideKeyedServiceFactory::GetForProfile(profile)) {
ChromeFacilitatedPaymentsClient::CreateForWebContents(
web_contents, optimization_guide_decider);
- }
}
#else // BUILDFLAG(IS_ANDROID)
if (web_app::AreWebAppsUserInstallable(profile)) {
@@ -741,7 +737,7 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) {
web_contents, false));
#endif
-#if BUILDFLAG(ENABLE_EXTENSIONS)
+#if BUILDFLAG(ENABLE_EXTENSIONS_CORE)
// If the web contents already have a view type, don't overwrite it here. One
// case where this can happen is when the user opens undocked developer tools.
// For all developer tools web contents, the view type is set to
@@ -751,6 +747,9 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) {
extensions::SetViewType(web_contents,
extensions::mojom::ViewType::kTabContents);
}
+#endif
+
+#if BUILDFLAG(ENABLE_EXTENSIONS)
extensions::AppTabHelper::CreateForWebContents(web_contents);
extensions::NavigationExtensionEnabler::CreateForWebContents(web_contents);
extensions::WebNavigationTabObserver::CreateForWebContents(web_contents);
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 19e93ff1..02e815d9 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
@@ -125,7 +125,6 @@ namespace autofillPrivate {
ADDRESS_HOME_APT_TYPE,
ADDRESS_HOME_HOUSE_NUMBER_AND_APT,
SINGLE_USERNAME_WITH_INTERMEDIATE_VALUES,
- IMPROVED_PREDICTION,
PASSPORT_NAME_TAG,
PASSPORT_NUMBER,
PASSPORT_ISSUING_COUNTRY,
diff --git a/tools/under-control/src/chrome/common/extensions/api/enterprise_login.idl b/tools/under-control/src/chrome/common/extensions/api/enterprise_login.idl
new file mode 100755
index 00000000..1cc6936c
--- /dev/null
+++ b/tools/under-control/src/chrome/common/extensions/api/enterprise_login.idl
@@ -0,0 +1,17 @@
+// Copyright 2025 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Use the chrome.enterprise.login API to exit user sessions.
+// Note: This API is only available to extensions installed by enterprise
+// policy in ChromeOS managed sessions.
+[platforms = ("chromeos"),
+ implemented_in = "chrome/browser/extensions/api/enterprise_login/enterprise_login_api.h"]
+namespace enterprise.login {
+ callback VoidCallback = void ();
+ interface Functions {
+ // Exits the current managed guest session.
+ static void exitCurrentManagedGuestSession(
+ optional VoidCallback callback);
+ };
+};
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 6d580d20..2490d658 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
@@ -319,10 +319,14 @@ namespace enterprise.reportingPrivate {
enum DetectorType { PREDEFINED_DLP, USER_DEFINED };
// Information for a data detector used to apply data masking functionality.
+ // The fields of this dictionary correspond to the proto fields of
+ // `MatchedUrlNavigationRule::DataMaskingAction`.
dictionary MatchedDetector {
DOMString detectorId;
DOMString displayName;
- DetectorType detectorType;
+ DOMString? maskType;
+ DOMString? pattern;
+ DetectorType? detectorType;
};
// Information for a data leak prevention rule that was used to mask data.
@@ -437,21 +441,15 @@ namespace enterprise.reportingPrivate {
DoneCallback callback);
};
- dictionary DataMaskingRule {
- // Corresponds to `MatchedUrlNavigationRule::DataMaskingAction::mask_type`.
- DOMString level;
-
- // Corresponds to `MatchedUrlNavigationRule::DataMaskingAction::pattern`.
- DOMString regex_pattern;
-
- // The URL being navigated to that triggered the rule.
+ dictionary DataMaskingRules {
+ // The URL being navigated to that triggered the rules.
DOMString url;
- TriggeredRuleInfo triggeredRuleInfo;
+ TriggeredRuleInfo[] triggeredRuleInfo;
};
interface Events {
- static void onDataMaskingRulesTriggered(DataMaskingRule[] rules);
+ static void onDataMaskingRulesTriggered(DataMaskingRules rules);
};
};
diff --git a/tools/under-control/src/chrome/common/extensions/api/passwords_private.idl b/tools/under-control/src/chrome/common/extensions/api/passwords_private.idl
index c470b8fc..4b92daae 100755
--- a/tools/under-control/src/chrome/common/extensions/api/passwords_private.idl
+++ b/tools/under-control/src/chrome/common/extensions/api/passwords_private.idl
@@ -240,6 +240,9 @@ namespace passwordsPrivate {
// requested.
DOMString? password;
+ // Recovery password for the password change flow.
+ DOMString? backupPassword;
+
// Text shown if the password was obtained via a federated identity.
DOMString? federationText;
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 a051c685..fe8055b5 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
@@ -480,7 +480,7 @@ void ChromeContentRendererClient::RenderThreadStarted() {
extensions_v8::LoadTimesExtension::Get());
base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
- if (command_line->HasSwitch(variations::switches::kEnableBenchmarking)) {
+ if (command_line->HasSwitch(variations::switches::kEnableBenchmarkingApi)) {
blink::WebScriptController::RegisterExtension(
extensions_v8::BenchmarkingExtension::Get());
}
@@ -727,8 +727,15 @@ void ChromeContentRendererClient::RenderFrameCreated(
subresource_filter_agent->Initialize();
}
- if (fingerprinting_protection_filter::features::
- IsFingerprintingProtectionFeatureEnabled() &&
+ if (render_frame->IsMainFrame() && !render_frame->IsInFencedFrameTree()) {
+ // This web pref applies at the level of the current browser session and may
+ // change when settings are modified, so we copy the latest value every time
+ // a new top-level main frame is created for a new page.
+ content_based_fingerprinting_protection_enabled_ =
+ render_frame->GetBlinkPreferences()
+ .content_based_fingerprinting_protection_enabled;
+ }
+ if (content_based_fingerprinting_protection_enabled_ &&
fingerprinting_protection_ruleset_dealer_) {
auto* fingerprinting_protection_renderer_agent =
new fingerprinting_protection_filter::RendererAgent(
@@ -1889,6 +1896,11 @@ void ChromeContentRendererClient::AppendContentSecurityPolicy(
#endif
}
+bool ChromeContentRendererClient::
+ IsContentBasedFingerprintingProtectionEnabled() {
+ return content_based_fingerprinting_protection_enabled_;
+}
+
std::unique_ptr
ChromeContentRendererClient::CreateLinkPreviewTriggerer() {
return ::CreateWebLinkPreviewTriggerer();
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 a9400a04..c108fbae 100755
--- a/tools/under-control/src/components/policy/resources/templates/policies.yaml
+++ b/tools/under-control/src/components/policy/resources/templates/policies.yaml
@@ -1364,8 +1364,13 @@ policies:
1363: TLS13EarlyDataEnabled
1364: LocalNetworkAccessRestrictionsEnabled
1365: PrefetchWithServiceWorkerEnabled
- 1366: AIModeSearchSuggestSettings
+ 1366: ''
1367: AIModeSettings
+ 1368: WatermarkStyle
+ 1369: KioskApplicationLogCollectionEnabled
+ 1370: EnableUnsafeSwiftShader
+ 1371: LocalNetworkAccessAllowedForUrls
+ 1372: LocalNetworkAccessBlockedForUrls
atomic_groups:
1: Homepage
@@ -1425,3 +1430,4 @@ atomic_groups:
55: SmartCardConnectSettings
56: WebRtc
57: ControlledFrameSettings
+ 58: LocalNetworkAccessSettings
diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/DefaultThirdPartyStoragePartitioningSetting.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/DefaultThirdPartyStoragePartitioningSetting.yaml
index 54e5aac5..4863bc6e 100755
--- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/DefaultThirdPartyStoragePartitioningSetting.yaml
+++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/DefaultThirdPartyStoragePartitioningSetting.yaml
@@ -8,6 +8,8 @@ desc: |-
If this policy is set to 2 - BlockPartitioning, third-party storage partitioning will be disabled for all contexts.
Use ThirdPartyStoragePartitioningBlockedForOrigins to disable third-party storage partitioning for specific top-level origins. For detailed information on third-party storage partitioning, please see https://developers.google.com/privacy-sandbox/cookies/storage-partitioning.
+
+ This will be removed in Chrome 145, and the requestStorageAccess method is recommended for use instead: https://developer.mozilla.org/en-US/docs/Web/API/Document/requestStorageAccess. Feedback can be left at https://crbug.com/425248669.
example_value: 1
features:
dynamic_refresh: true
diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/ThirdPartyStoragePartitioningBlockedForOrigins.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/ThirdPartyStoragePartitioningBlockedForOrigins.yaml
index 8f8d8d0f..a7c703ad 100755
--- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/ThirdPartyStoragePartitioningBlockedForOrigins.yaml
+++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/ThirdPartyStoragePartitioningBlockedForOrigins.yaml
@@ -7,6 +7,8 @@ desc: |-
For detailed information on valid patterns, please see https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. Note that patterns you list here are treated as origins, not URLs, so you should not specify a path.
For detailed information on third-party storage partitioning, please see https://developers.google.com/privacy-sandbox/cookies/storage-partitioning.
+
+ This will be removed in Chrome 145, and the requestStorageAccess method is recommended for use instead: https://developer.mozilla.org/en-US/docs/Web/API/Document/requestStorageAccess. Feedback can be left at https://crbug.com/425248669.
example_value:
- www.example.com
- '[*.]example.edu'
diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Crostini/CrostiniArcAdbSideloadingAllowed.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Crostini/CrostiniArcAdbSideloadingAllowed.yaml
index 8301d74c..e0d6784f 100755
--- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Crostini/CrostiniArcAdbSideloadingAllowed.yaml
+++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Crostini/CrostiniArcAdbSideloadingAllowed.yaml
@@ -22,8 +22,8 @@ items:
name: Allow
value: 1
owners:
-- janagrill@google.com
-- okalitova@chromium.org
+- rbock@google.com
+- chromeos-commercial-remote-management@google.com
schema:
enum:
- 0
diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Crostini/DeviceCrostiniArcAdbSideloadingAllowed.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Crostini/DeviceCrostiniArcAdbSideloadingAllowed.yaml
index 0cf2dabd..e7c7793d 100755
--- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Crostini/DeviceCrostiniArcAdbSideloadingAllowed.yaml
+++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Crostini/DeviceCrostiniArcAdbSideloadingAllowed.yaml
@@ -25,8 +25,8 @@ items:
name: AllowForAffiliatedUsers
value: 2
owners:
-- janagrill@google.com
-- okalitova@chromium.org
+- rbock@google.com
+- chromeos-commercial-remote-management@google.com
schema:
enum:
- 0
diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/DeviceUpdate/DeviceMinimumVersion.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/DeviceUpdate/DeviceMinimumVersion.yaml
index 2aa355f9..bae8f45a 100755
--- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/DeviceUpdate/DeviceMinimumVersion.yaml
+++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/DeviceUpdate/DeviceMinimumVersion.yaml
@@ -38,8 +38,7 @@ features:
dynamic_refresh: true
per_profile: false
owners:
-- janagrill@google.com
-- mpolzer@google.com
+- rbock@google.com
- chromeos-commercial-remote-management@google.com
schema:
properties:
diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/DeviceUpdate/DeviceMinimumVersionAueMessage.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/DeviceUpdate/DeviceMinimumVersionAueMessage.yaml
index 47d38908..bcca03a0 100755
--- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/DeviceUpdate/DeviceMinimumVersionAueMessage.yaml
+++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/DeviceUpdate/DeviceMinimumVersionAueMessage.yaml
@@ -14,8 +14,7 @@ features:
dynamic_refresh: true
per_profile: false
owners:
-- janagrill@google.com
-- mpolzer@google.com
+- rbock@google.com
- chromeos-commercial-remote-management@google.com
schema:
type: string
diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/DeviceUpdate/DeviceTargetVersionPrefix.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/DeviceUpdate/DeviceTargetVersionPrefix.yaml
index 1bf651d7..6d8ef601 100755
--- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/DeviceUpdate/DeviceTargetVersionPrefix.yaml
+++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/DeviceUpdate/DeviceTargetVersionPrefix.yaml
@@ -15,8 +15,7 @@ example_value: '1412.'
features:
dynamic_refresh: true
owners:
-- janagrill@google.com
-- mpolzer@google.com
+- rbock@google.com
- chromeos-commercial-remote-management@google.com
schema:
type: string
diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Extensions/DeviceLoginScreenExtensionManifestV2Availability.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Extensions/DeviceLoginScreenExtensionManifestV2Availability.yaml
index 2e4b9cc2..35f02ccd 100755
--- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Extensions/DeviceLoginScreenExtensionManifestV2Availability.yaml
+++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Extensions/DeviceLoginScreenExtensionManifestV2Availability.yaml
@@ -17,7 +17,8 @@ desc: |-
Extensions availability are still controlled by other policies.
supported_on:
-- chrome_os:111-
+- chrome_os:111-138
+deprecated: true
device_only: true
features:
dynamic_refresh: true
diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Extensions/ExtensionInstallBlocklist.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Extensions/ExtensionInstallBlocklist.yaml
index 71ab98f1..58db0d85 100755
--- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Extensions/ExtensionInstallBlocklist.yaml
+++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Extensions/ExtensionInstallBlocklist.yaml
@@ -2,7 +2,7 @@ caption: Configure extension installation blocklist
desc: |-
Allows you to specify which extensions the users can NOT install. Extensions already installed will be disabled if blocked, without a way for the user to enable them. Once an extension disabled due to the blocklist is removed from it, it will automatically get re-enabled.
- A blocklist value of '*' means all extensions are blocked unless they are explicitly listed in the allowlist.
+ A blocklist value of '*' means all extensions are blocked by default. Extensions that are explicitly listed in the allowlist are allowed if they are signed (packed). All unpacked extensions are blocked.
If this policy is left not set the user can install any extension in $1Google Chrome.
example_value:
diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Extensions/ExtensionManifestV2Availability.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Extensions/ExtensionManifestV2Availability.yaml
index 55b0f91b..7077a777 100755
--- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Extensions/ExtensionManifestV2Availability.yaml
+++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Extensions/ExtensionManifestV2Availability.yaml
@@ -17,8 +17,9 @@ desc: |-
Extensions availability are still controlled by other policies.
supported_on:
-- chrome.*:110-
-- chrome_os:110-
+- chrome.*:110-138
+- chrome_os:110-138
+deprecated: true
future_on:
- fuchsia
features:
diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/GenerativeAI/AIModeSearchSuggestSettings.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/GenerativeAI/AIModeSearchSuggestSettings.yaml
deleted file mode 100755
index 987a8906..00000000
--- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/GenerativeAI/AIModeSearchSuggestSettings.yaml
+++ /dev/null
@@ -1,40 +0,0 @@
-caption: Settings for AI Mode Search recommendations in the address bar and new tab page search box
-
-desc: |-
- This policy controls the AI Mode recommendations section in the address bar and the new tab page search box.
-
- This feature is available to all users with Google as their default search engine, unless it is disabled by this policy.
-
- If the policy is unset, its behavior is determined by the GenAiDefaultSettings policy.
-
- When policy is set to 0 - Enabled or not set, the feature will be available to users. When policy is set to 1 - Disabled, the feature will not be available.
-
- 0 = Allow the feature to be used
- 1 = Do not allow the feature.
-
-default: 0
-example_value: 1
-features:
- dynamic_refresh: true
- per_profile: true
-items:
-- caption: Allow AI Mode recommendations.
- name: Allowed
- value: 0
-- caption: Do not allow AI Mode recommendations.
- name: Disabled
- value: 1
-owners:
-- file://components/omnibox/OWNERS
-schema:
- enum:
- - 0
- - 1
- type: integer
-future_on:
-- android
-- ios
-- chrome.*
-- chrome_os
-tags: []
-type: int-enum
diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/GenerativeAI/AutofillPredictionSettings.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/GenerativeAI/AutofillPredictionSettings.yaml
index a07977cb..f062e2ff 100755
--- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/GenerativeAI/AutofillPredictionSettings.yaml
+++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/GenerativeAI/AutofillPredictionSettings.yaml
@@ -29,7 +29,7 @@ items:
name: Disabled
value: 2
owners:
-- file://components/autofill_ai/OWNERS
+- file://components/autofill/OWNERS
- jkeitel@google.com
schema:
enum:
diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/GenerativeAI/GeminiSettings.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/GenerativeAI/GeminiSettings.yaml
index 0d635f53..efc9f089 100755
--- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/GenerativeAI/GeminiSettings.yaml
+++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/GenerativeAI/GeminiSettings.yaml
@@ -38,4 +38,5 @@ default: 0
supported_on:
- chrome.win:137-
- chrome.mac:137-
+- ios:139-
tags: []
diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Kiosk/KioskApplicationLogCollectionEnabled.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Kiosk/KioskApplicationLogCollectionEnabled.yaml
new file mode 100755
index 00000000..8c0ab1f5
--- /dev/null
+++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Kiosk/KioskApplicationLogCollectionEnabled.yaml
@@ -0,0 +1,25 @@
+owners:
+- macinashutosh@google.com
+- irfedorova@google.com
+- file://chromeos/components/kiosk/OWNERS
+caption: Enable kiosk application log collection
+default: false
+desc: |-
+ Setting the policy to Enabled means Kiosk application level logs would be collected when a kiosk application is running on the device. Logs would be collected for all kiosk application types.
+ These logs would be stored in a separate kiosk_apps.log file.
+ Leaving this policy unset or setting it to Disabled means the Kiosk application level logs would not be collected.
+features:
+ dynamic_refresh: true
+ per_profile: true
+type: main
+schema:
+ type: boolean
+items:
+- caption: Enable Kiosk application logs
+ value: true
+- caption: Disable Kiosk application logs
+ value: false
+example_value: false
+future_on:
+- chrome_os
+tags: []
diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/LocalNetworkAccessSettings/.group.details.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/LocalNetworkAccessSettings/.group.details.yaml
new file mode 100755
index 00000000..bf74c590
--- /dev/null
+++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/LocalNetworkAccessSettings/.group.details.yaml
@@ -0,0 +1,2 @@
+caption: Local Network Access settings
+desc: A group of policies related to Local Network Access settings. See https://developer.chrome.com/blog/local-network-access
diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/LocalNetworkAccessSettings/LocalNetworkAccessAllowedForUrls.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/LocalNetworkAccessSettings/LocalNetworkAccessAllowedForUrls.yaml
new file mode 100755
index 00000000..5648fb3c
--- /dev/null
+++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/LocalNetworkAccessSettings/LocalNetworkAccessAllowedForUrls.yaml
@@ -0,0 +1,41 @@
+owners:
+- hchao@chromium.org
+- cthomp@chromium.org
+- chrome-secure-web-and-net@chromium.org
+
+caption: Allow sites to make requests to local network endpoints.
+
+desc: |-
+ List of URL patterns. Requests initiated from websites served by matching origins are not subject to Local Network Access checks.
+
+ If an origin is covered by both this policy and by LocalNetworkAccessBlockedForUrls, LocalNetworkAccessBlockedForUrls takes precedence.
+
+ For origins not covered by the patterns specified here, the user's personal configuration will apply.
+
+ For detailed information on valid URL patterns, please see https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns.
+
+ See https://github.com/explainers-by-googlers/local-network-access for Local Network Access restrictions.
+
+example_value:
+- http://www.example.com:8080
+- '[*.]example.edu'
+- '*'
+
+supported_on:
+- chrome.*:139-
+- chrome_os:139-
+
+features:
+ dynamic_refresh: true
+ per_profile: true
+
+type: list
+
+schema:
+ items:
+ type: string
+ type: array
+
+tags:
+- system-security
diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/LocalNetworkAccessSettings/LocalNetworkAccessBlockedForUrls.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/LocalNetworkAccessSettings/LocalNetworkAccessBlockedForUrls.yaml
new file mode 100755
index 00000000..2ecf3d96
--- /dev/null
+++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/LocalNetworkAccessSettings/LocalNetworkAccessBlockedForUrls.yaml
@@ -0,0 +1,42 @@
+owners:
+- hchao@chromium.org
+- cthomp@chromium.org
+- chrome-secure-web-and-net@chromium.org
+
+caption: Block sites from making requests to local network endpoints.
+
+desc: |-
+ List of URL patterns. Requests initiated from websites served by matching origins are blocked from issuing Local Network Access requests.
+
+ If an origin is covered by both this policy and by LocalNetworkAccessAllowedForUrls, this policy takes precedence.
+
+ Depending on the stage of the rollout of Local Network Access, LocalNetworkAccessRestrictionsEnabled may also need to be enabled for this policy to block Local Network Access requests.
+
+ For origins not covered by the patterns specified here, the user's personal configuration will apply.
+
+ For detailed information on valid URL patterns, please see https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns.
+
+ See https://github.com/explainers-by-googlers/local-network-access for Local Network Access restrictions.
+
+example_value:
+- http://www.example.com:8080
+- '[*.]example.edu'
+- '*'
+
+supported_on:
+- chrome.*:139-
+- chrome_os:139-
+
+features:
+ dynamic_refresh: true
+ per_profile: true
+
+type: list
+
+schema:
+ items:
+ type: string
+ type: array
+
+tags: []
diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Network/LocalNetworkAccessRestrictionsEnabled.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/LocalNetworkAccessSettings/LocalNetworkAccessRestrictionsEnabled.yaml
similarity index 98%
rename from tools/under-control/src/components/policy/resources/templates/policy_definitions/Network/LocalNetworkAccessRestrictionsEnabled.yaml
rename to tools/under-control/src/components/policy/resources/templates/policy_definitions/LocalNetworkAccessSettings/LocalNetworkAccessRestrictionsEnabled.yaml
index b6d25f06..9ab2d855 100755
--- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Network/LocalNetworkAccessRestrictionsEnabled.yaml
+++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/LocalNetworkAccessSettings/LocalNetworkAccessRestrictionsEnabled.yaml
@@ -6,8 +6,6 @@ owners:
caption: Specifies whether to apply restrictions to requests to local
network endpoints
-deprecated: true
-
desc: |-
When this policy is set to Enabled, any time when a warning is supposed to be
displayed in the DevTools due to CookiesAllowedForUrls policy.
example_value: false
features:
can_be_recommended: true
diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/ChromeDataRegionSetting.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/ChromeDataRegionSetting.yaml
index ccfa3e76..e723168a 100755
--- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/ChromeDataRegionSetting.yaml
+++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/ChromeDataRegionSetting.yaml
@@ -1,19 +1,20 @@
caption: Set the data regions preference for data storage
desc: |-
- Choose to store your covered data from $1Google Chrome in a specific geographic location.
+ Choose to store your users' covered Chrome Enterprise data in a specific geographic location.
If this policy is left unset or is set to No preference (value 0), covered data may be stored in any geographic location(s).
If this policy is set to United States (value 1), covered data will be stored in United States.
- If this policy is set to Europe (value 2), covered data will be stored in Europe.
+ If this policy is set to Europe (value 2), covered data will be stored in the European Union.
+
+ This can only be set in the Google Admin console via Data > Compliance > Data regions > Region > Data at rest.
default: 0
example_value: 0
features:
cloud_only: true
dynamic_refresh: false
per_profile: true
- unlisted: true
user_only: true
items:
- caption: No preference.
diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/DeviceNativeClientForceAllowed.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/DeviceNativeClientForceAllowed.yaml
index 3a52d758..190d85bf 100755
--- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/DeviceNativeClientForceAllowed.yaml
+++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/DeviceNativeClientForceAllowed.yaml
@@ -1,5 +1,6 @@
caption: Forces Native Client (NaCl) to be allowed to run on $2Google ChromeOS.
default: false
+deprecated: true
desc: |-
Setting the policy to True allows Native Client to continue to run even if the default behavior is that Native Client is disabled.
Setting the policy to False or leaving it unset will use the default behavior.
@@ -19,6 +20,6 @@ owners:
schema:
type: boolean
supported_on:
-- chrome_os:132-
+- chrome_os:132-138
tags: []
type: main
diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/DeviceUserInitiatedFirmwareUpdatesEnabled.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/DeviceUserInitiatedFirmwareUpdatesEnabled.yaml
index 0db11b0b..bfcee5c4 100755
--- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/DeviceUserInitiatedFirmwareUpdatesEnabled.yaml
+++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/DeviceUserInitiatedFirmwareUpdatesEnabled.yaml
@@ -10,8 +10,8 @@ desc: |-
Setting the policy to Disabled or leaving it unset prevents all users from applying firmware updates.
This policy applies to firmware for external peripheral firmware updates and internal component firmware updates for Google ChromeOS Flex devices. Internal component firmware updates for $2Google ChromeOS devices are not affected by this policy.
-future_on:
-- chrome_os
+supported_on:
+- chrome_os:139-
device_only: true
features:
dynamic_refresh: true
@@ -24,7 +24,7 @@ items:
value: true
- caption: Users may not initiate firmware updates
value: false
-default: false
+default: true
example_value: true
tags: ['google-sharing']
generate_device_proto: True
diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/EnableUnsafeSwiftShader.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/EnableUnsafeSwiftShader.yaml
new file mode 100755
index 00000000..b9d72e89
--- /dev/null
+++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/EnableUnsafeSwiftShader.yaml
@@ -0,0 +1,30 @@
+caption: Allow software WebGL fallback using SwiftShader
+desc: |-
+ A policy that controls if SwiftShader will be used as a WebGL fallback when hardware GPU acceleration is not available.
+
+ SwiftShader has been used to support WebGL on systems without GPU acceleration such as headless systems or virtual machines but has been deprecated due to security issues. Starting in M139, WebGL context creation will fail when it would have otherwise used SwiftShader. This policy allows the browser or administrator to temporarily defer the deprecation.
+
+ Setting the policy to Enabled, SwiftShader will be used as a software WebGL fallback.
+
+ Setting the policy to Disabled or not set, WebGL context creation may fail if hardware GPU acceleration is not available. Web pages may misbehave if they do not gracefully handle WebGL context creation failure.
+
+ This is a temporary policy which will be removed in the future.
+default: false
+example_value: false
+features:
+ dynamic_refresh: false
+ per_profile: false
+items:
+- caption: Enable support for unsafe SwiftShader WebGL fallback
+ value: true
+- caption: Disable support for unsafe SwiftShader WebGL fallback
+ value: false
+owners:
+- geofflang@chromium.org
+- file://gpu/OWNERS
+schema:
+ type: boolean
+supported_on:
+- chrome.*:139-
+tags: []
+type: main
diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/EnterpriseCustomLabelForBrowser.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/EnterpriseCustomLabelForBrowser.yaml
index c12eadc7..f52eebaa 100755
--- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/EnterpriseCustomLabelForBrowser.yaml
+++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/EnterpriseCustomLabelForBrowser.yaml
@@ -6,12 +6,16 @@ desc: |-
When this policy is applied, any strings that surpass 16 characters will be truncated with a “...” Please refrain from using extended names.
Note that this policy is only applied for managed browsers, so it will have no effect for managed users on unmanaged browsers.
+
+ On Microsoft® Windows®, this policy is only available on instances that are joined to a Microsoft® Active Directory® domain, joined to Microsoft® Azure® Active Directory® or enrolled in Chrome Enterprise Core.
+
+ On macOS, this policy is only available on instances that are managed via MDM, joined to a domain via MCX or enrolled in Chrome Enterprise Core.
example_value: Chromium
features:
dynamic_refresh: true
per_profile: false
-future_on:
-- chrome.*
+supported_on:
+- chrome.*:139-
owners:
- file://components/enterprise/OWNERS
- esalma@google.com
diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/EnterpriseHardwarePlatformAPIEnabled.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/EnterpriseHardwarePlatformAPIEnabled.yaml
index d2b595d3..27056535 100755
--- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/EnterpriseHardwarePlatformAPIEnabled.yaml
+++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/EnterpriseHardwarePlatformAPIEnabled.yaml
@@ -9,8 +9,6 @@ example_value: true
features:
dynamic_refresh: true
per_profile: true
-future_on:
-- fuchsia
items:
- caption: Allow managed extensions to use the Enterprise Hardware Platform API
value: true
diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/EnterpriseLogoUrlForBrowser.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/EnterpriseLogoUrlForBrowser.yaml
index 0f172630..92bb69a3 100755
--- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/EnterpriseLogoUrlForBrowser.yaml
+++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/EnterpriseLogoUrlForBrowser.yaml
@@ -6,12 +6,16 @@ desc: |-
It is recommended to use the favicon (example https://www.google.com/favicon.ico) or an icon no smaller than 48 x 48 px.
Note that this policy is only applied for managed browsers, so it will have no effect for managed users on unmanaged browsers.
+
+ On Microsoft® Windows®, this policy is only available on instances that are joined to a Microsoft® Active Directory® domain, joined to Microsoft® Azure® Active Directory® or enrolled in Chrome Enterprise Core.
+
+ On macOS, this policy is only available on instances that are managed via MDM, joined to a domain via MCX or enrolled in Chrome Enterprise Core.
example_value: https://example.com/image.png
features:
dynamic_refresh: true
per_profile: false
-future_on:
-- chrome.*
+supported_on:
+- chrome.*:139-
owners:
- file://components/policy/OWNERS
- esalma@google.com
diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/EnterpriseSearchAggregatorSettings.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/EnterpriseSearchAggregatorSettings.yaml
index cf134ac8..9b1f1e8e 100755
--- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/EnterpriseSearchAggregatorSettings.yaml
+++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/EnterpriseSearchAggregatorSettings.yaml
@@ -1,6 +1,8 @@
caption: Enterprise search aggregator settings
desc: |-
- This policy allows administrators to set a designated enterprise search aggregator that will provide search recommendations and results within the address bar when triggered by a specific keyword. Users can initiate a search by typing the keyword specified in the shortcut field with or without the @ prefix (e.g. @work), followed by Space or Tab, in the address bar.
+ This policy allows administrators to set a designated enterprise search aggregator that will provide search recommendations and results within the omnibox (address bar) and the search box on the New Tab page.
+
+ By default, enterprise search suggestions will be blended and shown alongside regular $1Google Chrome recommendations. Users can explicitly scope their search to just the enterprise search aggregator by typing the keyword specified in the shortcut field with or without the @ prefix (e.g. @work) followed by Space or Tab in the omnibox. Scoped enterprise searches (triggered by a keyword) are currently only supported in the omnibox and not in the search box on the New Tab page.
The following fields are required: name, shortcut, search_url, suggest_url.
@@ -14,7 +16,7 @@ desc: |-
The icon_url field specifies the URL to an image that will be used on the search suggestions. A default icon will be used when this field is not set. It's recommended to use a favicon (example https://www.google.com/favicon.ico). Supported image file formats: JPEG, PNG, and ICO.
- The require_shortcut field specifies whether the address bar shortcut is required to see search recommendations. If this field is not set, the address bar shortcut is not required.
+ The require_shortcut field specifies whether the address bar shortcut is required to see search recommendations. If required, suggestions will not be shown in the search box on the New Tab page, but will continue to be shown in the omnibox (address bar) in scoped search mode. If this field is not set, the address bar shortcut is not required.
On Microsoft® Windows®, this policy is only available on instances that are joined to a Microsoft® Active Directory® domain, joined to Microsoft® Azure® Active Directory® or enrolled in Chrome Enterprise Core.
diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/EssentialSearchEnabled.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/EssentialSearchEnabled.yaml
index 9b91668a..e7a41862 100755
--- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/EssentialSearchEnabled.yaml
+++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/EssentialSearchEnabled.yaml
@@ -16,7 +16,6 @@ items:
- caption: Use essential and non-essential cookies in search.
value: false
owners:
-- ayag@chromium.org
- mohammedabdon@chromium.org
- dp-chromeos-eng@google.com
schema:
diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/GaiaLockScreenOfflineSigninTimeLimitDays.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/GaiaLockScreenOfflineSigninTimeLimitDays.yaml
index a3bbc836..1ccba372 100755
--- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/GaiaLockScreenOfflineSigninTimeLimitDays.yaml
+++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/GaiaLockScreenOfflineSigninTimeLimitDays.yaml
@@ -20,7 +20,7 @@ features:
dynamic_refresh: true
per_profile: true
owners:
-- ayag@chromium.org
+- andreydav@google.com
- chromeos-commercial-identity@google.com
- file://components/policy/OWNERS
schema:
diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/KeyboardFocusableScrollersEnabled.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/KeyboardFocusableScrollersEnabled.yaml
index 0e952527..8465120e 100755
--- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/KeyboardFocusableScrollersEnabled.yaml
+++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/KeyboardFocusableScrollersEnabled.yaml
@@ -1,5 +1,6 @@
caption: Enable keyboard focusable scrollers
default: true
+deprecated: true
desc: |-
This policy provides a temporary opt-out for the new keyboard focusable scrollers behavior.
@@ -7,13 +8,11 @@ desc: |-
When this policy is Disabled, scrollers will not be keyboard-focusable by default.
- This policy is a temporary workaround, and will be removed in M135.
+ This policy is a temporary workaround. From M139, this policy is deprecated.
example_value: true
features:
dynamic_refresh: true
per_profile: true
-future_on:
- - fuchsia
items:
- caption: "Enabled: Scrollers are focusable by default."
value: true
@@ -24,9 +23,9 @@ owners:
schema:
type: boolean
supported_on:
- - chrome.*:127-
- - chrome_os:127-
- - android:127-
- - webview_android:127-
+ - chrome.*:127-138
+ - chrome_os:127-138
+ - android:127-138
+ - webview_android:127-138
tags: []
type: main
diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/LacrosDataBackwardMigrationMode.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/LacrosDataBackwardMigrationMode.yaml
index d901a82b..bba0d7ab 100755
--- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/LacrosDataBackwardMigrationMode.yaml
+++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/LacrosDataBackwardMigrationMode.yaml
@@ -34,8 +34,9 @@ items:
name: keep_all
value: keep_all
owners:
-- janagrill@google.com
+- artyomchen@google.com
- vsavu@google.com
+- chromeos-commercial-remote-management@google.com
schema:
enum:
- none
diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/NTPFooterManagementNoticeEnabled.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/NTPFooterManagementNoticeEnabled.yaml
index 365e2e5f..c0f54fa8 100755
--- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/NTPFooterManagementNoticeEnabled.yaml
+++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/NTPFooterManagementNoticeEnabled.yaml
@@ -6,12 +6,18 @@ desc: |-
If this policy is left unset or set to true, managed browsers will display a “Managed by…” notice with an icon.
If this policy is set to false, the management notice will be hidden.
+
+ Note that this policy is only applied for managed browsers, so it will have no effect for managed users on unmanaged browsers.
+
+ On Microsoft® Windows®, this policy is only available on instances that are joined to a Microsoft® Active Directory® domain, joined to Microsoft® Azure® Active Directory® or enrolled in Chrome Enterprise Core.
+
+ On macOS, this policy is only available on instances that are managed via MDM, joined to a domain via MCX or enrolled in Chrome Enterprise Core.
example_value: true
features:
dynamic_refresh: true
per_profile: false
-future_on:
-- chrome.*
+supported_on:
+- chrome.*:139-
items:
- caption: Enable management notice on NTP Footer
value: true
diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/NTPOutlookCardVisible.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/NTPOutlookCardVisible.yaml
index 068fa6d9..b29fc868 100755
--- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/NTPOutlookCardVisible.yaml
+++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/NTPOutlookCardVisible.yaml
@@ -1,15 +1,13 @@
-caption: Show Outlook Calendar card on the New Tab Page (Beta)
+caption: Show Outlook Calendar card on the New Tab Page
default: false
-desc: |- # TODO(crbug.com/376287682): insert HC article link
- This is a beta feature.
-
+desc: |-
This policy controls the visibility of the Outlook Card on the New Tab Page. The card will only be displayed on the New Tab Page if the policy is enabled and your organization authorized the usage of the Outlook Calendar data in the browser.
Outlook data will not be stored by the browser.
The Outlook card shows the next calendar event, along with a glanceable look at the rest of the day's meetings. It aims to address the issue of context switching and enhance productivity by giving users a shortcut to their next meeting.
- The Microsoft Outlook card will require additional admin configuration. For detailed information on connecting the Chrome New Tab Page Card to Outlook, please see help article.
+ The Microsoft Outlook card will require additional admin configuration. For detailed information on connecting the Chrome New Tab Page Card to Outlook, please see https://support.google.com/chrome/a?p=chrome_ntp_microsoft_cards.
If the NTPCardsVisible is disabled, the Outlook Card will not be shown. If NTPCardsVisible is enabled, the Outlook card will be shown if this policy is also enabled and there is data to be shown. If NTPCardsVisible is unset, the Outlook card will be shown if this policy is also enabled, the user has the card enabled in Customize Chrome, and there is data to be shown.
example_value: false
diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/NTPSharepointCardVisible.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/NTPSharepointCardVisible.yaml
index 12787866..75376bbc 100755
--- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/NTPSharepointCardVisible.yaml
+++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/NTPSharepointCardVisible.yaml
@@ -1,15 +1,13 @@
-caption: Show SharePoint and OneDrive File Card on the New Tab Page (Beta)
+caption: Show SharePoint and OneDrive File Card on the New Tab Page
default: false
-desc: |- # TODO(crbug.com/376287682): insert HC article link
- This is a beta feature.
-
+desc: |-
This policy controls the visibility of the SharePoint and OneDrive File Card on the New Tab Page. The card will only be displayed on the New Tab Page if the policy is enabled and your organization authorized the usage of the SharePoint and OneDrive File data in the browser.
SharePoint and OneDrive data will not be stored by the browser.
The SharePoint and OneDrive Files recommendation card shows a list of recommended files. It aims to address the issue of context switching and enhance productivity by giving users a shortcut to their most important documents.
- The Microsoft SharePoint and OneDrive card will require additional admin configuration. For detailed information on connecting the Chrome New Tab Page Card to Sharepoint, please see help article.
+ The Microsoft SharePoint and OneDrive card will require additional admin configuration. For detailed information on connecting the Chrome New Tab Page Card to Sharepoint, please see https://support.google.com/chrome/a?p=chrome_ntp_microsoft_cards.
If the NTPCardsVisible is disabled, the SharePoint and OneDrive Card will not be shown. If NTPCardsVisible is enabled, the SharePoint and OneDrive card will be shown if this policy is also enabled and there is data to be shown. If NTPCardsVisible is unset, the SharePoint and OneDrive card will be shown if this policy is also enabled, the user has the card enabled in Customize Chrome, and there is data to be shown.
example_value: false
diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/SamlLockScreenOfflineSigninTimeLimitDays.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/SamlLockScreenOfflineSigninTimeLimitDays.yaml
index 4ab2223c..aa31e28c 100755
--- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/SamlLockScreenOfflineSigninTimeLimitDays.yaml
+++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/SamlLockScreenOfflineSigninTimeLimitDays.yaml
@@ -20,7 +20,7 @@ features:
dynamic_refresh: true
per_profile: true
owners:
-- ayag@chromium.org
+- andreydav@google.com
- chromeos-commercial-identity@google.com
- file://components/policy/OWNERS
schema:
diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/SiteSearchSettings.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/SiteSearchSettings.yaml
index 239f10a0..840ce684 100755
--- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/SiteSearchSettings.yaml
+++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/SiteSearchSettings.yaml
@@ -12,7 +12,9 @@ desc: |-
Site search entries configured as featured are displayed in the address bar when the user types "@". Up to three entries can be selected as featured.
- Users cannot edit or disable site search entries set by policy, but they can add new shortcuts for the same URL. In addition, users cannot create new site search entries with a shortcut previously created via this policy.
+ For a site search entry where allow_user_override is true, users have the ability to edit or disable that entry. However, featured engines (beginning with "@") can only be disabled. If a user modifies an entry that was initially created by this policy, it will no longer be managed by policy and will be treated like a user-created shortcut. When allow_user_override is false or unspecified for a site search entry, users cannot edit or disable that entry. The setting to allow user override is only supported on M139 and later; earlier versions will default to disabling user override.
+
+ Users cannot create new site search entries with a shortcut previously created via this policy unless allow_user_override is set to true for the site search entry.
In case of a conflict with a shortcut previously created by the user, the user setting takes precedence. However, users can still trigger the option created by the policy by typing "@" in the search bar. For example, if the user already defined "work" as a shortcut to URL1 and the policy defines "work" as a shortcut to URL2, then typing "work" in the search bar will trigger a search to URL1, but typing "@work" in the search bar will trigger a search to URL2.
@@ -28,6 +30,10 @@ example_value:
- name: YouTube
shortcut: youtube
url: https://www.youtube.com/results?search_query=%s
+- name: Google Drive
+ shortcut: drive
+ url: https://drive.google.com/?q=%s
+ allow_user_override: true
features:
dynamic_refresh: true
per_profile: true
@@ -47,6 +53,8 @@ schema:
type: string
url:
type: string
+ allow_user_override:
+ type: boolean
required:
- shortcut
- name
diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/WatermarkStyle.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/WatermarkStyle.yaml
new file mode 100755
index 00000000..60236e9b
--- /dev/null
+++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/WatermarkStyle.yaml
@@ -0,0 +1,45 @@
+caption: Configure Custom Watermark Settings
+desc: |-
+ Allows administrators to customize the appearance of watermarks applied by Data Loss Prevention (DLP) rules. This includes setting its filling/oultine opacity, and defining its font size.
+ If this policy or some values is not set, Chrome will use its default watermark behavior.
+ The default values are: fill opacity at 4, outline opacity at 6, and font size at 24.
+
+ The 'Fill Opacity' is a percentage from 0 (fully transparent) to 100 (fully opaque).
+ The 'Outline Opacity' is a percentage from 0 (fully transparent) to 100 (fully opaque).
+ The 'FontSize' is specified in points .
+owners:
+- adamkl@google.com
+- cbe-cep-eng@google.com
+
+supported_on:
+- chrome.*:139-
+- chrome_os:139-
+
+features:
+ cloud_only: true
+ dynamic_refresh: true
+ per_profile: true
+type: dict
+schema:
+ type: object
+ properties:
+ fill_opacity:
+ type: integer
+ minimum: 0
+ maximum: 100
+ description: "Fill opacity of the watermark text, from 0 (transparent) to 100 (opaque)."
+ outline_opacity:
+ type: integer
+ minimum: 0
+ maximum: 100
+ description: "Outline opacity of the watermark text, from 0 (transparent) to 100 (opaque)."
+ font_size:
+ type: integer
+ minimum: 1
+ description: "Font size of the watermark text in points."
+example_value:
+ fill_opacity: 4
+ outline_opacity: 6
+ font_size: 24
+tags: []
+label: Custom Watermark Configuration
\ No newline at end of file
diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/WebRtcEventLogCollectionAllowed.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/WebRtcEventLogCollectionAllowed.yaml
index bbfede69..53aec751 100755
--- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/WebRtcEventLogCollectionAllowed.yaml
+++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/WebRtcEventLogCollectionAllowed.yaml
@@ -10,7 +10,7 @@ features:
dynamic_refresh: true
per_profile: true
future_on:
-- fuchsia
+- android
items:
- caption: Allow WebRTC event log collection from Google services
value: true
diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Signin/DeviceAuthenticationFlowAutoReloadInterval.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Signin/DeviceAuthenticationFlowAutoReloadInterval.yaml
index 70fb9cb7..779bea82 100755
--- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Signin/DeviceAuthenticationFlowAutoReloadInterval.yaml
+++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Signin/DeviceAuthenticationFlowAutoReloadInterval.yaml
@@ -25,7 +25,7 @@ supported_on:
- chrome_os:129-
owners:
-- ayag@chromium.org
+- andreydav@google.com
- chromeos-commercial-identity@google.com
schema:
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 f3204a39..cce6fe2d 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
@@ -23,6 +23,7 @@
#include "base/command_line.h"
#include "base/containers/contains.h"
#include "base/containers/flat_set.h"
+#include "base/debug/crash_logging.h"
#include "base/feature_list.h"
#include "base/files/file_path.h"
#include "base/functional/bind.h"
@@ -270,6 +271,10 @@
#include "content/public/browser/picture_in_picture_window_controller.h"
#endif // !BUILDFLAG(IS_ANDROID)
+#if BUILDFLAG(IS_IOS) && !BUILDFLAG(IS_IOS_TVOS)
+#include "content/browser/ios/nfc_host.h"
+#endif
+
namespace content {
namespace {
@@ -2086,6 +2091,25 @@ RenderWidgetHostView* WebContentsImpl::GetTopLevelRenderWidgetHostView() {
return GetRenderManager()->GetRenderWidgetHostView();
}
+RenderWidgetHost* WebContentsImpl::FindWidgetAtPoint(const gfx::PointF& point) {
+ if (GetOuterWebContents()) {
+ return GetOuterWebContents()->FindWidgetAtPoint(point);
+ }
+ gfx::PointF transformed_point;
+ input::RenderWidgetHostViewInput* rwhvi =
+ GetInputEventRouter()->GetRenderWidgetHostViewInputAtPoint(
+ static_cast(
+ GetTopLevelRenderWidgetHostView()),
+ point, &transformed_point);
+
+ RenderWidgetHostImpl* widget_host = RenderWidgetHostImpl::From(
+ static_cast(rwhvi)->GetRenderWidgetHost());
+ if (!widget_host) {
+ return nullptr;
+ }
+ return widget_host;
+}
+
WebContentsView* WebContentsImpl::GetView() const {
return view_.get();
}
@@ -3771,10 +3795,6 @@ const blink::web_pref::WebPreferences WebContentsImpl::ComputeWebPreferences(
#if BUILDFLAG(IS_ANDROID)
prefs.device_scale_adjustment = GetDeviceScaleAdjustment(min_width_in_dp);
-
- if (base::FeatureList::IsEnabled(blink::features::kForceOffTextAutosizing)) {
- prefs.text_autosizing_enabled = false;
- }
#endif // BUILDFLAG(IS_ANDROID)
// GuestViews in the same StoragePartition need to find each other's frames.
@@ -5993,9 +6013,9 @@ device::mojom::WakeLockContext* WebContentsImpl::GetWakeLockContext() {
return wake_lock_context_host_->GetWakeLockContext();
}
-#if BUILDFLAG(IS_ANDROID)
+#if BUILDFLAG(IS_ANDROID) || (BUILDFLAG(IS_IOS) && !BUILDFLAG(IS_IOS_TVOS))
void WebContentsImpl::GetNFC(
- RenderFrameHost* render_frame_host,
+ RenderFrameHostImpl* render_frame_host,
mojo::PendingReceiver receiver) {
if (!nfc_host_) {
nfc_host_ = std::make_unique(this);
@@ -8136,6 +8156,13 @@ void WebContentsImpl::UnregisterProtocolHandler(RenderFrameHostImpl* source,
delegate_->UnregisterProtocolHandler(source, protocol, url, user_gesture);
}
+base::ScopedClosureRunner WebContentsImpl::MarkAudible() {
+ auto audible_client = audio_stream_monitor_.RegisterAudibleClient(
+ GetPrimaryMainFrame()->GetGlobalId());
+ return base::ScopedClosureRunner(
+ base::DoNothingWithBoundArgs(std::move(audible_client)));
+}
+
void WebContentsImpl::DomOperationResponse(RenderFrameHost* render_frame_host,
const std::string& json_string) {
OPTIONAL_TRACE_EVENT2("content", "WebContentsImpl::DomOperationResponse",
@@ -10684,8 +10711,6 @@ void WebContentsImpl::UpdateWindowControlsOverlay(
GetPrimaryMainFrame()->GetRenderWidgetHost()) {
render_widget_host->SynchronizeVisualProperties();
}
-
- view_->UpdateWindowControlsOverlay(bounding_rect);
}
BrowserPluginEmbedder* WebContentsImpl::GetBrowserPluginEmbedder() const {
@@ -11396,6 +11421,13 @@ void WebContentsImpl::IsClipboardPasteAllowedWrapperCallback(
--suppress_unresponsive_renderer_count_;
}
+std::optional>
+WebContentsImpl::GetClipboardTypesIfPolicyApplied(
+ const ui::ClipboardSequenceNumberToken& seqno) {
+ return GetContentClient()->browser()->GetClipboardTypesIfPolicyApplied(
+ seqno);
+}
+
void WebContentsImpl::BindScreenOrientation(
RenderFrameHost* rfh,
mojo::PendingAssociatedReceiver
@@ -11982,9 +12014,11 @@ std::unique_ptr WebContentsImpl::StartPrefetch(
const blink::mojom::Referrer& referrer,
const std::optional& referring_origin,
std::optional no_vary_search_hint,
+ std::optional priority,
scoped_refptr preload_pipeline_info,
base::WeakPtr attempt,
- std::optional holdback_status_override) {
+ std::optional holdback_status_override,
+ std::optional ttl) {
if (!base::FeatureList::IsEnabled(
features::kPrefetchBrowserInitiatedTriggers)) {
return nullptr;
@@ -12000,9 +12034,9 @@ std::unique_ptr WebContentsImpl::StartPrefetch(
use_prefetch_proxy);
auto container = std::make_unique(
*this, prefetch_url, prefetch_type, embedder_histogram_suffix, referrer,
- referring_origin, std::move(no_vary_search_hint),
+ referring_origin, std::move(no_vary_search_hint), std::move(priority),
std::move(preload_pipeline_info), std::move(attempt),
- holdback_status_override);
+ holdback_status_override, std::move(ttl));
return prefetch_service->AddPrefetchContainerWithHandle(std::move(container));
}
diff --git a/tools/under-control/src/content/child/runtime_features.cc b/tools/under-control/src/content/child/runtime_features.cc
index 873f4a0a..ff7b85c2 100755
--- a/tools/under-control/src/content/child/runtime_features.cc
+++ b/tools/under-control/src/content/child/runtime_features.cc
@@ -29,6 +29,7 @@
#include "device/vr/buildflags/buildflags.h"
#include "gpu/config/gpu_finch_features.h"
#include "gpu/config/gpu_switches.h"
+#include "media/audio/audio_features.h"
#include "media/base/media_switches.h"
#include "net/base/features.h"
#include "services/device/public/cpp/device_features.h"
@@ -191,6 +192,10 @@ void SetRuntimeFeaturesFromChromiumFeatures() {
raw_ref(features::kUseAXPositionForDocumentMarkers)},
{wf::EnableAOMAriaRelationshipProperties,
raw_ref(features::kEnableAriaElementReflection)},
+#if BUILDFLAG(IS_ANDROID)
+ {wf::EnableAudioOutputDevices,
+ raw_ref(features::kAAudioPerStreamDeviceSelection)},
+#endif
{wf::EnableBackgroundFetch, raw_ref(features::kBackgroundFetch)},
{wf::EnableBoundaryEventDispatchTracksNodeRemoval,
raw_ref(blink::features::kBoundaryEventDispatchTracksNodeRemoval)},
@@ -353,6 +358,7 @@ void SetRuntimeFeaturesFromChromiumFeatures() {
raw_ref(network::features::kCompressionDictionaryTransportBackend)},
{"CookieDeprecationFacilitatedTesting",
raw_ref(features::kCookieDeprecationFacilitatedTesting)},
+ {"CSPHashesV1", raw_ref(network::features::kCSPScriptSrcHashesInV1)},
{"DocumentPolicyIncludeJSCallStacksInCrashReports",
raw_ref(blink::features::
kDocumentPolicyIncludeJSCallStacksInCrashReports),
@@ -465,14 +471,8 @@ void SetRuntimeFeaturesFromCommandLine(const base::CommandLine& command_line) {
{wrf::EnableScriptedSpeechSynthesis, switches::kDisableSpeechSynthesisAPI,
false},
{wrf::EnableSharedWorker, switches::kDisableSharedWorkers, false},
- {wrf::EnableKeyboardFocusableScrollers,
- blink::switches::kKeyboardFocusableScrollersEnabled, true},
- {wrf::EnableKeyboardFocusableScrollers,
- blink::switches::kKeyboardFocusableScrollersOptOut, false},
{wrf::EnableStandardizedBrowserZoom,
blink::switches::kDisableStandardizedBrowserZoom, false},
- {wrf::EnableSelectParserRelaxation,
- blink::switches::kDisableSelectParserRelaxation, false},
{wrf::EnableTextFragmentIdentifiers,
switches::kDisableScrollToTextFragment, false},
{wrf::EnableWebAuthenticationRemoteDesktopSupport,
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 4a377944..acedc332 100755
--- a/tools/under-control/src/content/public/browser/content_browser_client.cc
+++ b/tools/under-control/src/content/public/browser/content_browser_client.cc
@@ -14,6 +14,7 @@
#include "base/files/file_path.h"
#include "base/functional/callback_helpers.h"
#include "base/no_destructor.h"
+#include "base/notimplemented.h"
#include "base/notreached.h"
#include "base/supports_user_data.h"
#include "base/task/sequenced_task_runner.h"
@@ -724,6 +725,12 @@ bool ContentBrowserClient::IsPrefetchWithServiceWorkerAllowed(
return true;
}
+bool ContentBrowserClient::IsServiceWorkerSyntheticResponseAllowed(
+ content::BrowserContext* browser_context,
+ const GURL& url) {
+ return false;
+}
+
void ContentBrowserClient::GrantCookieAccessDueToHeuristic(
content::BrowserContext* browser_context,
const net::SchemefulSite& top_frame_site,
@@ -737,6 +744,10 @@ bool ContentBrowserClient::AreThirdPartyCookiesGenerallyAllowed(
return true;
}
+void ContentBrowserClient::PrewarmServiceWorkerRegistrationForDSE(
+ BrowserContext* browser_context,
+ ServiceWorkerContext& service_worker_context) {}
+
bool ContentBrowserClient::CanSendSCTAuditingReport(
BrowserContext* browser_context) {
return false;
@@ -957,7 +968,7 @@ ContentBrowserClient::GetDevToolsBackgroundServiceExpirations(
}
std::unique_ptr ContentBrowserClient::CreateTracingDelegate() {
- return nullptr;
+ return std::make_unique();
}
bool ContentBrowserClient::IsSystemWideTracingEnabled() {
@@ -1778,16 +1789,6 @@ ContentBrowserClient::CreateResponsivenessCalculatorDelegate() {
return nullptr;
}
-bool ContentBrowserClient::CanBackForwardCachedPageReceiveCookieChanges(
- content::BrowserContext& browser_context,
- const GURL& url,
- const net::SiteForCookies& site_for_cookies,
- const url::Origin& top_frame_origin,
- const net::CookieSettingOverrides overrides,
- base::optional_ref cookie_partition_key) {
- return true;
-}
-
void ContentBrowserClient::GetCloudIdentifiers(
const storage::FileSystemURL& url,
FileSystemAccessPermissionContext::HandleType handle_type,
@@ -2002,4 +2003,10 @@ ContentBrowserClient::MaybeCreateKeepAliveRequestTracker(
return nullptr;
}
+std::optional>
+ContentBrowserClient::GetClipboardTypesIfPolicyApplied(
+ const ui::ClipboardSequenceNumberToken& seqno) {
+ return std::nullopt;
+}
+
} // namespace content
diff --git a/tools/under-control/src/gin/v8_initializer.cc b/tools/under-control/src/gin/v8_initializer.cc
index 4e4b552a..f37529e1 100755
--- a/tools/under-control/src/gin/v8_initializer.cc
+++ b/tools/under-control/src/gin/v8_initializer.cc
@@ -27,6 +27,7 @@
#include "base/files/file_path.h"
#include "base/files/memory_mapped_file.h"
#include "base/lazy_instance.h"
+#include "base/logging.h"
#include "base/metrics/histogram_functions.h"
#include "base/metrics/histogram_macros.h"
#include "base/notreached.h"
@@ -374,9 +375,6 @@ void SetFeatureFlags() {
SetV8FlagsIfOverridden(features::kV8ExternalMemoryAccountedInGlobalLimit,
"--external-memory-accounted-in-global-limit",
"--no-external-memory-accounted-in-global-limit");
- SetV8FlagsIfOverridden(features::kV8GCSpeedUsesCounters,
- "--gc-speed-uses-counters",
- "--no-gc-speed-uses-counters");
SetV8FlagsIfOverridden(features::kV8TurboFastApiCalls,
"--turbo-fast-api-calls", "--no-turbo-fast-api-calls");
SetV8FlagsIfOverridden(features::kV8MegaDomIC, "--mega-dom-ic",
diff --git a/tools/under-control/src/services/network/network_context.cc b/tools/under-control/src/services/network/network_context.cc
index e9d152aa..b19bfa46 100755
--- a/tools/under-control/src/services/network/network_context.cc
+++ b/tools/under-control/src/services/network/network_context.cc
@@ -19,6 +19,8 @@
#include "base/check.h"
#include "base/check_op.h"
#include "base/command_line.h"
+#include "base/containers/flat_set.h"
+#include "base/containers/to_vector.h"
#include "base/containers/unique_ptr_adapters.h"
#include "base/dcheck_is_on.h"
#include "base/feature_list.h"
@@ -224,6 +226,21 @@ class WrappedTestingCertVerifier : public net::CertVerifier {
return g_cert_verifier_for_testing->Verify(
params, verify_result, std::move(callback), out_req, net_log);
}
+ void Verify2QwacBinding(
+ const std::string& binding,
+ const std::string& hostname,
+ const scoped_refptr& tls_cert,
+ base::OnceCallback&)>
+ callback,
+ const net::NetLogWithSource& net_log) override {
+ if (!g_cert_verifier_for_testing) {
+ base::SingleThreadTaskRunner::GetCurrentDefault()->PostTask(
+ FROM_HERE, base::BindOnce(std::move(callback), nullptr));
+ return;
+ }
+ g_cert_verifier_for_testing->Verify2QwacBinding(
+ binding, hostname, tls_cert, std::move(callback), net_log);
+ }
void SetConfig(const Config& config) override {
if (!g_cert_verifier_for_testing) {
return;
@@ -2084,6 +2101,21 @@ void NetworkContext::VerifyCertForSignedExchange(
CTVerificationMode::kSignedExchange, std::move(callback));
}
+void NetworkContext::Verify2QwacCertBinding(
+ const std::string& binding,
+ const std::string& hostname,
+ const scoped_refptr& tls_certificate,
+ Verify2QwacCertBindingCallback callback) {
+ net::CertVerifier* cert_verifier =
+ g_cert_verifier_for_testing ? g_cert_verifier_for_testing
+ : url_request_context_->cert_verifier();
+ cert_verifier->Verify2QwacBinding(
+ binding, hostname, tls_certificate, std::move(callback),
+ net::NetLogWithSource::Make(
+ url_request_context_->net_log(),
+ net::NetLogSourceType::CERT_VERIFIER_2QWAC_JOB));
+}
+
void NetworkContext::NotifyExternalCacheHit(const GURL& url,
const std::string& http_method,
const net::NetworkIsolationKey& key,
@@ -2255,6 +2287,14 @@ void NetworkContext::VerifyCertificateForTesting(
net::NetLogSourceType::NONE));
}
+void NetworkContext::GetTrustAnchorIDsForTesting(
+ GetTrustAnchorIDsForTestingCallback callback) {
+ std::move(callback).Run(
+ base::ToVector(url_request_context_->ssl_config_service()
+ ->GetSSLContextConfig()
+ .trust_anchor_ids));
+}
+
void NetworkContext::PreconnectSockets(
uint32_t num_streams,
const GURL& original_url,
@@ -2561,9 +2601,10 @@ void NetworkContext::OnHttpAuthDynamicParamsChanged(
http_auth_dynamic_network_service_params->allow_gssapi_library_load);
#endif // BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_LINUX)
if (http_auth_dynamic_network_service_params->allowed_schemes.has_value()) {
- http_auth_merged_preferences_.set_allowed_schemes(std::set(
- http_auth_dynamic_network_service_params->allowed_schemes->begin(),
- http_auth_dynamic_network_service_params->allowed_schemes->end()));
+ http_auth_merged_preferences_.set_allowed_schemes(
+ base::flat_set(
+ http_auth_dynamic_network_service_params->allowed_schemes->begin(),
+ http_auth_dynamic_network_service_params->allowed_schemes->end()));
} else {
http_auth_merged_preferences_.set_allowed_schemes(std::nullopt);
}
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 b9c436e1..d743d715 100755
--- a/tools/under-control/src/testing/variations/fieldtrial_testing_config.json
+++ b/tools/under-control/src/testing/variations/fieldtrial_testing_config.json
@@ -114,7 +114,35 @@
],
"experiments": [
{
- "name": "Enabled",
+ "name": "Control",
+ "disable_features": [
+ "AccessibilityDeprecateJavaNodecache"
+ ]
+ },
+ {
+ "name": "OptimizeScroll",
+ "params": {
+ "optimize_scroll": "true"
+ },
+ "enable_features": [
+ "AccessibilityDeprecateJavaNodeCache"
+ ]
+ },
+ {
+ "name": "DisableCache",
+ "params": {
+ "disable_cache": "true"
+ },
+ "enable_features": [
+ "AccessibilityDeprecateJavaNodeCache"
+ ]
+ },
+ {
+ "name": "OptimizeScrollDisableCache",
+ "params": {
+ "disable_cache": "true",
+ "optimize_scroll": "true"
+ },
"enable_features": [
"AccessibilityDeprecateJavaNodeCache"
]
@@ -167,6 +195,36 @@
]
}
],
+ "AccessibilityManifestV3EspeakNGTts": [
+ {
+ "platforms": [
+ "chromeos"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "enable_features": [
+ "AccessibilityManifestV3EspeakNGTts"
+ ]
+ }
+ ]
+ }
+ ],
+ "AccessibilityManifestV3GoogleTts": [
+ {
+ "platforms": [
+ "chromeos"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "enable_features": [
+ "AccessibilityManifestV3GoogleTts"
+ ]
+ }
+ ]
+ }
+ ],
"AccessibilityManifestV3SelectToSpeak": [
{
"platforms": [
@@ -332,6 +390,29 @@
]
}
],
+ "AccessibilityUseAXBitset": [
+ {
+ "platforms": [
+ "android",
+ "android_weblayer",
+ "android_webview",
+ "chromeos",
+ "chromeos_lacros",
+ "ios",
+ "linux",
+ "mac",
+ "windows"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "enable_features": [
+ "AccessibilityUseAXBitset"
+ ]
+ }
+ ]
+ }
+ ],
"AdaptiveChargingParamTuning": [
{
"platforms": [
@@ -422,24 +503,6 @@
]
}
],
- "AiSettingsPageEnterpriseDisabledUi": [
- {
- "platforms": [
- "chromeos",
- "linux",
- "mac",
- "windows"
- ],
- "experiments": [
- {
- "name": "Enabled",
- "enable_features": [
- "AiSettingsPageEnterpriseDisabledUi"
- ]
- }
- ]
- }
- ],
"AlignWakeUps": [
{
"platforms": [
@@ -477,20 +540,16 @@
]
}
],
- "AlwaysBlock3pcsIncognito": [
+ "AllowTabClosingUponMinimization": [
{
"platforms": [
- "android",
- "chromeos",
- "linux",
- "mac",
- "windows"
+ "android"
],
"experiments": [
{
"name": "Enabled",
"enable_features": [
- "AlwaysBlock3pcsIncognito"
+ "AllowTabClosingUponMinimization"
]
}
]
@@ -581,6 +640,30 @@
]
}
],
+ "AndroidComposeplate": [
+ {
+ "platforms": [
+ "android"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "enable_features": [
+ "AndroidComposeplate"
+ ]
+ },
+ {
+ "name": "Enabled_HideIncognitoButton",
+ "params": {
+ "hide_incognito_button": "true"
+ },
+ "enable_features": [
+ "AndroidComposeplate"
+ ]
+ }
+ ]
+ }
+ ],
"AndroidDumpOnScrollWithoutResource": [
{
"platforms": [
@@ -596,23 +679,6 @@
]
}
],
- "AndroidGridTabSwitcherUpdate": [
- {
- "platforms": [
- "android"
- ],
- "experiments": [
- {
- "name": "Enabled",
- "enable_features": [
- "AndroidThemeModule",
- "GridTabSwitcherSurfaceColorUpdate",
- "GridTabSwitcherUpdate"
- ]
- }
- ]
- }
- ],
"AndroidHatsNext": [
{
"platforms": [
@@ -718,7 +784,7 @@
]
}
],
- "AndroidReaderModeImprovements": [
+ "AndroidProgressBarVisualUpdate": [
{
"platforms": [
"android"
@@ -726,11 +792,42 @@
"experiments": [
{
"name": "Enabled",
+ "enable_features": [
+ "AndroidProgressBarVisualUpdate"
+ ]
+ }
+ ]
+ }
+ ],
+ "AndroidRaiseDisplayCriticalThreadPriority": [
+ {
+ "platforms": [
+ "android",
+ "android_webview"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "enable_features": [
+ "RaiseDisplayCriticalThreadPriority"
+ ]
+ }
+ ]
+ }
+ ],
+ "AndroidReaderModeImprovements": [
+ {
+ "platforms": [
+ "android"
+ ],
+ "experiments": [
+ {
+ "name": "EnabledCustomCpaTimeout",
"params": {
"always_on_entry_point": "false",
"custom_cpa_timeout": "300",
"custom_cpa_timeout_enabled": "true",
- "trigger_on_mobile_friendly_pages": "true"
+ "trigger_on_mobile_friendly_pages": "false"
},
"enable_features": [
"ReaderModeImprovements"
@@ -889,6 +986,63 @@
]
}
],
+ "AndroidTabGroupsColorUpdateGm3": [
+ {
+ "platforms": [
+ "android"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "enable_features": [
+ "AndroidTabGroupsColorUpdateGM3"
+ ]
+ }
+ ]
+ }
+ ],
+ "AndroidTabStripLayoutOptimization": [
+ {
+ "platforms": [
+ "android"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "enable_features": [
+ "TabStripLayoutOptimization"
+ ]
+ }
+ ]
+ }
+ ],
+ "AndroidThemeModule": [
+ {
+ "platforms": [
+ "android"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "enable_features": [
+ "AndroidThemeModule",
+ "CpaSpecUpdate",
+ "GridTabSwitcherSurfaceColorUpdate",
+ "GridTabSwitcherUpdate",
+ "TabletTabStripAnimation"
+ ]
+ },
+ {
+ "name": "Enabled_Gts",
+ "enable_features": [
+ "AndroidThemeModule",
+ "GridTabSwitcherSurfaceColorUpdate",
+ "GridTabSwitcherUpdate"
+ ]
+ }
+ ]
+ }
+ ],
"AndroidUseFrameIntervalDeciderAdaptiveFrameRate": [
{
"platforms": [
@@ -1651,28 +1805,6 @@
]
}
],
- "AutocompleteControllerMetricsOptimization": [
- {
- "platforms": [
- "android_webview",
- "android",
- "chromeos_lacros",
- "chromeos",
- "ios",
- "linux",
- "mac",
- "windows"
- ],
- "experiments": [
- {
- "name": "Enabled",
- "enable_features": [
- "AutocompleteControllerMetricsOptimization"
- ]
- }
- ]
- }
- ],
"AutocorrectByDefault": [
{
"platforms": [
@@ -1748,7 +1880,7 @@
]
}
],
- "AutofillAiTeamfoodInternal": [
+ "AutofillAiUs": [
{
"platforms": [
"chromeos",
@@ -1758,52 +1890,19 @@
],
"experiments": [
{
- "name": "Enabled",
+ "name": "EnabledWithoutApc",
"enable_features": [
- "AutofillAiServerModel",
- "AutofillAiUploadModelRequestAndResponse"
- ]
- }
- ]
- }
- ],
- "AutofillAiTeamfoodV2": [
- {
- "platforms": [
- "chromeos",
- "linux",
- "mac",
- "windows"
- ],
- "experiments": [
- {
- "name": "Enabled",
- "enable_features": [
- "AutofillAiIgnoreGeoIp",
"AutofillAiWithDataSchema",
"FormsClassificationsMqlsLogging"
]
- }
- ]
- }
- ],
- "AutofillAiVoteForFormatStrings": [
- {
- "platforms": [
- "android",
- "chromeos",
- "chromeos_lacros",
- "ios",
- "linux",
- "mac",
- "windows"
- ],
- "experiments": [
+ },
{
- "name": "Enabled",
+ "name": "EnabledWithApc",
"enable_features": [
- "AutofillAiVoteForFormatStringsFromMultipleFields",
- "AutofillAiVoteForFormatStringsFromSingleFields"
+ "AutofillAiServerModel",
+ "AutofillAiUploadModelRequestAndResponse",
+ "AutofillAiWithDataSchema",
+ "FormsClassificationsMqlsLogging"
]
}
]
@@ -1851,11 +1950,13 @@
]
}
],
- "AutofillDeduplicateAccountAddresses": [
+ "AutofillDetectFieldVisibility": [
{
"platforms": [
"android",
+ "android_webview",
"chromeos",
+ "chromeos_lacros",
"ios",
"linux",
"mac",
@@ -1863,9 +1964,9 @@
],
"experiments": [
{
- "name": "Enabled",
+ "name": "Enabled_20250523",
"enable_features": [
- "AutofillDeduplicateAccountAddresses"
+ "AutofillDetectFieldVisibility"
]
}
]
@@ -2002,6 +2103,25 @@
]
}
],
+ "AutofillEnableFlatRateCardBenefitsFromCurinos": [
+ {
+ "platforms": [
+ "chromeos",
+ "chromeos_lacros",
+ "linux",
+ "mac",
+ "windows"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "enable_features": [
+ "AutofillEnableFlatRateCardBenefitsFromCurinos"
+ ]
+ }
+ ]
+ }
+ ],
"AutofillEnableFpanRiskBasedAuthentication": [
{
"platforms": [
@@ -2306,6 +2426,21 @@
]
}
],
+ "AutofillLocalSaveCardBottomSheet": [
+ {
+ "platforms": [
+ "ios"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "enable_features": [
+ "AutofillLocalSaveCardBottomSheet"
+ ]
+ }
+ ]
+ }
+ ],
"AutofillModelPredictions": [
{
"platforms": [
@@ -2484,6 +2619,26 @@
]
}
],
+ "AutofillRequireCvcForPossibleCardUpdate": [
+ {
+ "platforms": [
+ "android",
+ "chromeos",
+ "ios",
+ "linux",
+ "mac",
+ "windows"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "enable_features": [
+ "AutofillRequireCvcForPossibleCardUpdate"
+ ]
+ }
+ ]
+ }
+ ],
"AutofillSaveCardBottomSheet": [
{
"platforms": [
@@ -2499,6 +2654,26 @@
]
}
],
+ "AutofillServerUploadMoreData": [
+ {
+ "platforms": [
+ "android",
+ "chromeos",
+ "ios",
+ "linux",
+ "mac",
+ "windows"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "enable_features": [
+ "AutofillServerUploadMoreData"
+ ]
+ }
+ ]
+ }
+ ],
"AutofillSharedStorageServerCardData": [
{
"platforms": [
@@ -2582,6 +2757,27 @@
]
}
],
+ "AutofillSupportSplitZipCode": [
+ {
+ "platforms": [
+ "android",
+ "android_webview",
+ "chromeos",
+ "ios",
+ "linux",
+ "mac",
+ "windows"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "enable_features": [
+ "AutofillSupportSplitZipCode"
+ ]
+ }
+ ]
+ }
+ ],
"AutofillSurveys": [
{
"platforms": [
@@ -2760,6 +2956,21 @@
]
}
],
+ "AutomaticUsbDetach": [
+ {
+ "platforms": [
+ "android"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "enable_features": [
+ "AutomaticUsbDetach"
+ ]
+ }
+ ]
+ }
+ ],
"AvoidDuplicateDelayBeginFrame": [
{
"platforms": [
@@ -3038,7 +3249,10 @@
],
"experiments": [
{
- "name": "Enabled_20250327",
+ "name": "PrioritizeUnlessShouldClearAllAndNoEviction_20250520",
+ "params": {
+ "level": "prioritize-unless-should-clear-all-and-no-eviction"
+ },
"enable_features": [
"BackForwardCachePrioritizedEntry"
]
@@ -3157,22 +3371,6 @@
]
}
],
- "BatchNativeEventsInMessagePumpKqueue": [
- {
- "platforms": [
- "mac",
- "ios"
- ],
- "experiments": [
- {
- "name": "Enabled",
- "enable_features": [
- "BatchNativeEventsInMessagePumpKqueue"
- ]
- }
- ]
- }
- ],
"BatchTabRestore": [
{
"platforms": [
@@ -3327,28 +3525,6 @@
]
}
],
- "BlockAcceptClientHints": [
- {
- "platforms": [
- "android",
- "chromeos",
- "linux",
- "mac",
- "windows"
- ],
- "experiments": [
- {
- "name": "Enabled",
- "params": {
- "BlockedSite": "https://www.google.com"
- },
- "enable_features": [
- "BlockAcceptClientHints"
- ]
- }
- ]
- }
- ],
"BlockTelephonyDevicePhoneMute": [
{
"platforms": [
@@ -3397,6 +3573,21 @@
]
}
],
+ "BocaOnTaskLockedQuizMigration": [
+ {
+ "platforms": [
+ "chromeos"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "enable_features": [
+ "BocaOnTaskLockedQuizMigration"
+ ]
+ }
+ ]
+ }
+ ],
"BocaOnTaskMuteArcAudio": [
{
"platforms": [
@@ -3672,6 +3863,93 @@
]
}
],
+ "CCTAdaptiveButton": [
+ {
+ "platforms": [
+ "android"
+ ],
+ "experiments": [
+ {
+ "name": "Disabled",
+ "disable_features": [
+ "CCTAdaptiveButton"
+ ]
+ },
+ {
+ "name": "EnabledDefault",
+ "params": {
+ "open_in_browser": "true"
+ },
+ "enable_features": [
+ "CCTAdaptiveButton"
+ ]
+ },
+ {
+ "name": "EnabledContextualPageActionOnly",
+ "params": {
+ "contextual_only": "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"
+ ]
+ }
+ ]
+ }
+ ],
"CCTEarlyNav": [
{
"platforms": [
@@ -3702,6 +3980,21 @@
]
}
],
+ "CCTFixWarmup": [
+ {
+ "platforms": [
+ "android"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "enable_features": [
+ "CCTFixWarmup"
+ ]
+ }
+ ]
+ }
+ ],
"CCTGoogleBottomBar": [
{
"platforms": [
@@ -3777,6 +4070,21 @@
]
}
],
+ "CCTRealtimeEngagementEventsInBackground": [
+ {
+ "platforms": [
+ "android"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "enable_features": [
+ "CCTRealtimeEngagementEventsInBackground"
+ ]
+ }
+ ]
+ }
+ ],
"CSSReadingFlow": [
{
"platforms": [
@@ -4060,24 +4368,6 @@
]
}
],
- "CastStreamingVp9": [
- {
- "platforms": [
- "chromeos",
- "linux",
- "mac",
- "windows"
- ],
- "experiments": [
- {
- "name": "Enabled",
- "enable_features": [
- "CastStreamingVp9"
- ]
- }
- ]
- }
- ],
"CastStreamingWinHardwareH264": [
{
"platforms": [
@@ -4835,21 +5125,6 @@
]
}
],
- "ChromeOSOobeGaiaInfoScreen": [
- {
- "platforms": [
- "chromeos"
- ],
- "experiments": [
- {
- "name": "Disabled",
- "disable_features": [
- "OobeGaiaInfoScreen"
- ]
- }
- ]
- }
- ],
"ChromeOSOobePersonalizedOnboardingHoldback": [
{
"platforms": [
@@ -5059,6 +5334,33 @@
]
}
],
+ "ChromnientEduActionChip": [
+ {
+ "platforms": [
+ "chromeos",
+ "linux",
+ "mac",
+ "windows"
+ ],
+ "experiments": [
+ {
+ "name": "TestConfig",
+ "params": {
+ "disabled-by-glic": "true",
+ "hashed-domain-block-filters": "1525650667",
+ "url-allow-filters": "[\"*\"]",
+ "url-block-filters": "[]",
+ "url-path-forced-allowed-match-patterns": "[]",
+ "url-path-match-allow-filters": "[\"(?i)allowedword\"]",
+ "url-path-match-block-filters": "[\"(?i)blockedword\"]"
+ },
+ "enable_features": [
+ "LensOverlayEduActionChip"
+ ]
+ }
+ ]
+ }
+ ],
"ChromnientFetchSrp": [
{
"platforms": [
@@ -5099,24 +5401,6 @@
]
}
],
- "ChromnientMoreTranslateLanguages": [
- {
- "platforms": [
- "chromeos",
- "linux",
- "mac",
- "windows"
- ],
- "experiments": [
- {
- "name": "MoreTranslateLanguagesEnabled",
- "enable_features": [
- "LensOverlayTranslateLanguages"
- ]
- }
- ]
- }
- ],
"ChromnientNewFeedback": [
{
"platforms": [
@@ -5135,7 +5419,7 @@
]
}
],
- "ChromnientPostLaunchTranslate": [
+ "ChromnientPermissionBubbleAlt": [
{
"platforms": [
"chromeos",
@@ -5145,10 +5429,9 @@
],
"experiments": [
{
- "name": "TranslateButtonEnabled",
+ "name": "Enabled",
"enable_features": [
- "IPH_LensOverlayTranslateButton",
- "LensOverlayTranslateButton"
+ "LensOverlayPermissionBubbleAlt"
]
}
]
@@ -5214,6 +5497,24 @@
]
}
],
+ "ChromnientUpdatedVisuals": [
+ {
+ "platforms": [
+ "chromeos",
+ "linux",
+ "mac",
+ "windows"
+ ],
+ "experiments": [
+ {
+ "name": "VisualUpdatesEnabled",
+ "enable_features": [
+ "LensOverlayVisualSelectionUpdates"
+ ]
+ }
+ ]
+ }
+ ],
"ClampAutoScaling": [
{
"platforms": [
@@ -5262,6 +5563,21 @@
]
}
],
+ "ClankMostVisitedTilesCustomization": [
+ {
+ "platforms": [
+ "android"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "enable_features": [
+ "MostVisitedTilesCustomization"
+ ]
+ }
+ ]
+ }
+ ],
"ClankMostVisitedTilesNewScoring": [
{
"platforms": [
@@ -5401,28 +5717,6 @@
]
}
],
- "ClickToCapturedPointer": [
- {
- "platforms": [
- "android",
- "android_weblayer",
- "android_webview",
- "chromeos",
- "chromeos_lacros",
- "linux",
- "mac",
- "windows"
- ],
- "experiments": [
- {
- "name": "Enabled",
- "enable_features": [
- "ClickToCapturedPointer"
- ]
- }
- ]
- }
- ],
"ClientSideDetectionAcceptHCAllowlist": [
{
"platforms": [
@@ -5459,6 +5753,25 @@
]
}
],
+ "ClientSideDetectionOnlyExtractVisualFeatures": [
+ {
+ "platforms": [
+ "android",
+ "chromeos",
+ "linux",
+ "mac",
+ "windows"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "enable_features": [
+ "ClientSideDetectionOnlyExtractVisualFeatures"
+ ]
+ }
+ ]
+ }
+ ],
"ClientSideDetectionRetryLimit": [
{
"platforms": [
@@ -6070,6 +6383,9 @@
"experiments": [
{
"name": "Enabled",
+ "params": {
+ "frames": "4"
+ },
"enable_features": [
"CompositeBGColorAnimation",
"DeferImplInvalidation"
@@ -6217,6 +6533,21 @@
]
}
],
+ "ContextualPageActionTabGrouping": [
+ {
+ "platforms": [
+ "android"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "enable_features": [
+ "ContextualPageActionTabGrouping"
+ ]
+ }
+ ]
+ }
+ ],
"ContextualSearchBox": [
{
"platforms": [
@@ -6227,9 +6558,9 @@
],
"experiments": [
{
- "name": "Enabled_NoAutoFocus_20250421",
+ "name": "Enabled_AutoFocus_ApcOnly_UiUpdates_20250613",
"params": {
- "auto-focus-searchbox": "false",
+ "auto-focus-searchbox": "true",
"page-content-request-id-fix": "true",
"pdf-text-character-limit": "5000",
"send-page-url-for-contextualization": "true",
@@ -6237,7 +6568,7 @@
"update-viewport-each-query": "true",
"use-apc-as-context": "true",
"use-inner-html-as-context": "false",
- "use-inner-text-as-context": "true",
+ "use-inner-text-as-context": "false",
"use-pdf-interaction-type": "true",
"use-pdf-vit-param": "true",
"use-pdfs-as-context": "true",
@@ -6960,6 +7291,21 @@
]
}
],
+ "CredentialManagementThirdPartyWebApiRequestForwarding": [
+ {
+ "platforms": [
+ "android"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "enable_features": [
+ "CredentialManagementThirdPartyWebApiRequestForwarding"
+ ]
+ }
+ ]
+ }
+ ],
"CredentialProviderAutomaticPasskeyUpgrade": [
{
"platforms": [
@@ -7142,6 +7488,32 @@
]
}
],
+ "DSEPreconnect2": [
+ {
+ "platforms": [
+ "android",
+ "chromeos",
+ "chromeos_lacros",
+ "linux",
+ "mac",
+ "windows"
+ ],
+ "experiments": [
+ {
+ "name": "EnabledWithbase_60_30_30_30__20250507",
+ "params": {
+ "IdleTimeoutInSeconds": "60",
+ "MaxPreconnectRetryInterval": "30",
+ "MaxShortSessionThreshold": "30s",
+ "PingIntervalInSeconds": "30"
+ },
+ "enable_features": [
+ "SearchEnginePreconnect2"
+ ]
+ }
+ ]
+ }
+ ],
"DTCAntivirusSignalEnabled": [
{
"platforms": [
@@ -7190,6 +7562,25 @@
]
}
],
+ "DbdRevampDesktop": [
+ {
+ "platforms": [
+ "chromeos",
+ "chromeos_lacros",
+ "linux",
+ "mac",
+ "windows"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "enable_features": [
+ "DbdRevampDesktop"
+ ]
+ }
+ ]
+ }
+ ],
"DbscPhase1aStudy": [
{
"platforms": [
@@ -7311,9 +7702,12 @@
]
}
],
- "DefaultProfileEnterpriseBadging": [
+ "DefaultSiteInstanceGroups": [
{
"platforms": [
+ "android",
+ "chromeos",
+ "fuchsia",
"linux",
"mac",
"windows"
@@ -7322,7 +7716,7 @@
{
"name": "Enabled",
"enable_features": [
- "EnterpriseProfileBadgingForAvatar"
+ "DefaultSiteInstanceGroups"
]
}
]
@@ -7662,6 +8056,69 @@
]
}
],
+ "DesktopOmniboxContextualSearch": [
+ {
+ "platforms": [
+ "chromeos",
+ "linux",
+ "mac",
+ "windows"
+ ],
+ "experiments": [
+ {
+ "name": "_enabled_OnFocusZPS_NoPrefetch_LensAction",
+ "params": {
+ "Limit": "0",
+ "OmniboxZpsMaxSearchSuggestions": "3",
+ "OmniboxZpsMaxSuggestions": "6",
+ "OmniboxZpsMaxUrlSuggestions": "3",
+ "OnFocusMaxSearchSuggestions": "3",
+ "OnFocusMaxUrlSuggestions": "3",
+ "OnFocusMostVisitedMaxSuggestions": "6"
+ },
+ "enable_features": [
+ "OmniboxContextualSearchOnFocusSuggestions",
+ "OmniboxFocusTriggersWebAndSRPZeroSuggest",
+ "OmniboxHideSuggestionGroupHeaders",
+ "OmniboxUrlSuggestionsOnFocus",
+ "OmniboxZeroSuggestSynchronousMatchesOnly",
+ "OmniboxZpsSuggestionLimit"
+ ],
+ "disable_features": [
+ "LensOverlayOmniboxEntryPoint"
+ ]
+ },
+ {
+ "name": "_enabled_OnFocusZPS_ContextualSearchAndUrlSuggestions_LensAction",
+ "params": {
+ "OmniboxZpsMaxSearchSuggestions": "3",
+ "OmniboxZpsMaxSuggestions": "6",
+ "OmniboxZpsMaxUrlSuggestions": "3",
+ "OnFocusMaxSearchSuggestions": "3",
+ "OnFocusMaxUrlSuggestions": "3",
+ "OnFocusMostVisitedMaxSuggestions": "6"
+ },
+ "enable_features": [
+ "ContextualZeroSuggestLensFulfillment",
+ "OmniboxContextualSearchOnFocusSuggestions",
+ "OmniboxFocusTriggersWebAndSRPZeroSuggest",
+ "OmniboxHideSuggestionGroupHeaders",
+ "OmniboxUrlSuggestionsOnFocus",
+ "OmniboxZeroSuggestSynchronousMatchesOnly",
+ "OmniboxZpsSuggestionLimit",
+ "SendContextualUrlSuggestParam",
+ "SendPageTitleSuggestParam",
+ "ShowSuggestionsOnNoApc",
+ "UseApcPaywallSignal",
+ "ZeroSuggestPrefetchingOnWeb"
+ ],
+ "disable_features": [
+ "LensOverlayOmniboxEntryPoint"
+ ]
+ }
+ ]
+ }
+ ],
"DesktopOmniboxRichAutocompletionMinChar": [
{
"platforms": [
@@ -8240,6 +8697,21 @@
]
}
],
+ "DisplayEdgeToEdgeFullscreen": [
+ {
+ "platforms": [
+ "android"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "enable_features": [
+ "DisplayEdgeToEdgeFullscreen"
+ ]
+ }
+ ]
+ }
+ ],
"DlpRegionalizedEndpoints": [
{
"platforms": [
@@ -8309,28 +8781,6 @@
]
}
],
- "DomStorageAblation": [
- {
- "platforms": [
- "android",
- "chromeos",
- "linux",
- "windows"
- ],
- "experiments": [
- {
- "name": "Enabled",
- "params": {
- "factor": "0",
- "offset": "5ms"
- },
- "enable_features": [
- "DomStorageAblation"
- ]
- }
- ]
- }
- ],
"DownloadLater": [
{
"platforms": [
@@ -8452,6 +8902,28 @@
]
}
],
+ "DropInputEventsWhilePaintHolding": [
+ {
+ "platforms": [
+ "android",
+ "android_weblayer",
+ "android_webview",
+ "chromeos",
+ "chromeos_lacros",
+ "linux",
+ "mac",
+ "windows"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "enable_features": [
+ "DropInputEventsWhilePaintHolding"
+ ]
+ }
+ ]
+ }
+ ],
"DwaFeature": [
{
"platforms": [
@@ -8472,43 +8944,6 @@
]
}
],
- "EagerPrefetchBlockUntilHeadDifferentTimeoutsRetrospective": [
- {
- "platforms": [
- "chromeos",
- "linux",
- "mac",
- "windows"
- ],
- "experiments": [
- {
- "name": "Enabled",
- "params": {
- "block_until_head_timeout_eager_prefetch": "500"
- },
- "enable_features": [
- "PrefetchUseContentRefactor"
- ]
- }
- ]
- }
- ],
- "EarlyEstablishGpuChannelAndroid": [
- {
- "platforms": [
- "android",
- "android_webview"
- ],
- "experiments": [
- {
- "name": "EarlyEstablishGpuChannel",
- "enable_features": [
- "EarlyEstablishGpuChannel"
- ]
- }
- ]
- }
- ],
"EdgeToEdgeDebugging": [
{
"platforms": [
@@ -9057,6 +9492,45 @@
]
}
],
+ "EnableWatermarkCustomization": [
+ {
+ "platforms": [
+ "chromeos",
+ "linux",
+ "mac",
+ "windows"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "enable_features": [
+ "EnableWatermarkCustomization"
+ ]
+ }
+ ]
+ }
+ ],
+ "EncryptedPrefHashing": [
+ {
+ "platforms": [
+ "android",
+ "android_webview",
+ "chromeos",
+ "chromeos_lacros",
+ "linux",
+ "mac",
+ "windows"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "enable_features": [
+ "EncryptedPrefHashing"
+ ]
+ }
+ ]
+ }
+ ],
"EndOfLifeIncentive": [
{
"platforms": [
@@ -9075,6 +9549,42 @@
]
}
],
+ "EnhancedFieldsForSecOps": [
+ {
+ "platforms": [
+ "chromeos",
+ "linux",
+ "mac",
+ "windows"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "enable_features": [
+ "EnhancedFieldsForSecOps",
+ "EnhancedSecurityEventFields"
+ ]
+ }
+ ]
+ }
+ ],
+ "EnterpriseBadgingForNtpFooter": [
+ {
+ "platforms": [
+ "linux",
+ "mac",
+ "windows"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "enable_features": [
+ "EnterpriseBadgingForNtpFooter"
+ ]
+ }
+ ]
+ }
+ ],
"EnterpriseFileObfuscation": [
{
"platforms": [
@@ -9112,6 +9622,24 @@
]
}
],
+ "EnterpriseIframeDlpRulesSupport": [
+ {
+ "platforms": [
+ "chromeos",
+ "linux",
+ "mac",
+ "windows"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "enable_features": [
+ "EnterpriseIframeDlpRulesSupport"
+ ]
+ }
+ ]
+ }
+ ],
"EnterpriseUpdatedProfileCreationScreen": [
{
"platforms": [
@@ -9149,13 +9677,12 @@
]
}
],
- "EscapeLtGtInAttributes": [
+ "EstablishGpuChannelInterventions": [
{
"platforms": [
"android",
"android_webview",
"chromeos",
- "ios",
"linux",
"mac",
"windows"
@@ -9164,7 +9691,8 @@
{
"name": "Enabled",
"enable_features": [
- "EscapeLtGtInAttributes"
+ "EarlyEstablishGpuChannel",
+ "EstablishGpuChannelAsync"
]
}
]
@@ -9339,6 +9867,21 @@
]
}
],
+ "ExternalDisplayEventTelemetry": [
+ {
+ "platforms": [
+ "chromeos"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "enable_features": [
+ "ExternalDisplayEventTelemetry"
+ ]
+ }
+ ]
+ }
+ ],
"ExternalHDR10": [
{
"platforms": [
@@ -9721,25 +10264,6 @@
]
}
],
- "FeedbackIncludeVariations": [
- {
- "platforms": [
- "android",
- "ios",
- "linux",
- "mac",
- "windows"
- ],
- "experiments": [
- {
- "name": "Enabled",
- "enable_features": [
- "FeedbackIncludeVariations"
- ]
- }
- ]
- }
- ],
"FencedFramesEnableCredentialsForAutomaticBeacons": [
{
"platforms": [
@@ -9759,26 +10283,6 @@
]
}
],
- "FencedFramesEnableCrossOriginAutomaticBeaconData": [
- {
- "platforms": [
- "android",
- "chromeos",
- "chromeos_lacros",
- "linux",
- "mac",
- "windows"
- ],
- "experiments": [
- {
- "name": "Enabled",
- "enable_features": [
- "FencedFramesCrossOriginAutomaticBeaconData"
- ]
- }
- ]
- }
- ],
"FencedFramesEnableReportEventHeaderChanges": [
{
"platforms": [
@@ -10057,6 +10561,21 @@
]
}
],
+ "ForceOffTextAutosizing": [
+ {
+ "platforms": [
+ "android"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "enable_features": [
+ "ForceOffTextAutosizing"
+ ]
+ }
+ ]
+ }
+ ],
"ForestFeature": [
{
"platforms": [
@@ -10132,6 +10651,22 @@
]
}
],
+ "FullscreenSigninPromoManagerMigration": [
+ {
+ "platforms": [
+ "ios"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "enable_features": [
+ "FullscreenSigninPromoManagerMigration",
+ "IPH_iOSPromoSigninFullscreen"
+ ]
+ }
+ ]
+ }
+ ],
"FusedLocationProviderTuning": [
{
"platforms": [
@@ -10257,12 +10792,48 @@
]
}
],
- "GlicContextualCueingDogfood": [
+ "GlicClientResponsivenessCheckExtension": [
{
"platforms": [
"mac",
"windows"
],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "params": {
+ "glic-client-unresponsive-ui-max-time-ms": "15000"
+ },
+ "enable_features": [
+ "GlicClientResponsivenessCheck"
+ ]
+ }
+ ]
+ }
+ ],
+ "GlicClosedCaptioning": [
+ {
+ "platforms": [
+ "mac",
+ "windows"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "enable_features": [
+ "GlicClosedCaptioning"
+ ]
+ }
+ ]
+ }
+ ],
+ "GlicContextualCueingDogfood": [
+ {
+ "platforms": [
+ "mac",
+ "windows",
+ "linux"
+ ],
"experiments": [
{
"name": "Enabled",
@@ -10277,7 +10848,8 @@
{
"platforms": [
"mac",
- "windows"
+ "windows",
+ "linux"
],
"experiments": [
{
@@ -10289,11 +10861,27 @@
]
}
],
+ "GlicExplicitBackgroundColor": [
+ {
+ "platforms": [
+ "windows"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled_Dogfood",
+ "enable_features": [
+ "GlicExplicitBackgroundColor"
+ ]
+ }
+ ]
+ }
+ ],
"GlicRolloutDogfood": [
{
"platforms": [
"mac",
- "windows"
+ "windows",
+ "linux"
],
"experiments": [
{
@@ -10305,18 +10893,37 @@
]
}
],
- "GlicSettingsDogfood": [
+ "GlicScrollTo": [
{
"platforms": [
"mac",
"windows"
],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "params": {
+ "glic-scroll-to-enforce-document-id": "true"
+ },
+ "enable_features": [
+ "GlicScrollTo"
+ ]
+ }
+ ]
+ }
+ ],
+ "GlicSettingsDogfood": [
+ {
+ "platforms": [
+ "mac",
+ "windows",
+ "linux"
+ ],
"experiments": [
{
"name": "Enabled",
"params": {
"glic-allowed-origins-override": "https://www.google.com",
- "glic-client-responsiveness-check-interval-ms": "5000",
"glic-fre-url": "https://www.google.com/?",
"glic-guest-url": "https://www.google.com/",
"glic-shortcuts-launcher-toggle-learn-more-url": "https://support.google.com/",
@@ -10327,7 +10934,6 @@
"enable_features": [
"GlicAppMenuNewBadge",
"GlicCSPConfig",
- "GlicClientResponsivenessCheck",
"GlicFreURLConfig",
"GlicKeyboardShortcutNewBadge",
"GlicPageContextEligibility",
@@ -10342,7 +10948,8 @@
{
"platforms": [
"mac",
- "windows"
+ "windows",
+ "linux"
],
"experiments": [
{
@@ -10358,7 +10965,8 @@
{
"platforms": [
"mac",
- "windows"
+ "windows",
+ "linux"
],
"experiments": [
{
@@ -10379,7 +10987,8 @@
{
"platforms": [
"mac",
- "windows"
+ "windows",
+ "linux"
],
"experiments": [
{
@@ -10696,10 +11305,10 @@
{
"name": "EnabledLowerTotalPages",
"params": {
- "AllocationSamplingMultiplier": "2000",
- "AllocationSamplingRange": "20",
+ "AllocationSamplingMultiplier": "1000",
+ "AllocationSamplingRange": "10",
"MaxAllocations": "2048",
- "MaxMetadata": "2048",
+ "MaxMetadata": "6144",
"ProcessSamplingProbability": "0.1",
"TotalPages": "6144"
},
@@ -11240,6 +11849,27 @@
]
}
],
+ "HeapProfilerMultiKeyHashSet": [
+ {
+ "platforms": [
+ "android",
+ "chromeos",
+ "chromeos_lacros",
+ "ios",
+ "linux",
+ "mac",
+ "windows"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "enable_features": [
+ "HeapProfilerMultiKeyHashSet"
+ ]
+ }
+ ]
+ }
+ ],
"HeapProfilingLoadFactor": [
{
"platforms": [
@@ -11579,6 +12209,21 @@
]
}
],
+ "IOSAutofillAllowDefaultPreventedSubmission": [
+ {
+ "platforms": [
+ "ios"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "enable_features": [
+ "AutofillAllowDefaultPreventedSubmission"
+ ]
+ }
+ ]
+ }
+ ],
"IOSAutofillInIsolatedWorld": [
{
"platforms": [
@@ -11609,6 +12254,21 @@
]
}
],
+ "IOSAutofillReportFormSubmissionErrors": [
+ {
+ "platforms": [
+ "ios"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "enable_features": [
+ "AutofillReportFormSubmissionErrors"
+ ]
+ }
+ ]
+ }
+ ],
"IOSAutofillThrottleDocumentFormScan": [
{
"platforms": [
@@ -11725,7 +12385,7 @@
]
}
],
- "IOSChromnientIPHFix": [
+ "IOSChromnientIPad": [
{
"platforms": [
"ios"
@@ -11734,8 +12394,7 @@
{
"name": "Enabled",
"enable_features": [
- "IPH_iOSLensOverlayEntrypointTip",
- "LensOverlayDisableIPHPanGesture"
+ "EnableLensOverlayForceIPadSupport"
]
}
]
@@ -11879,6 +12538,21 @@
]
}
],
+ "IOSDownloadAutoDeletionFeatureEnabled": [
+ {
+ "platforms": [
+ "ios"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "enable_features": [
+ "DownloadAutoDeletionFeatureEnabled"
+ ]
+ }
+ ]
+ }
+ ],
"IOSDownloadNoUIUpdateInBackground": [
{
"platforms": [
@@ -11894,6 +12568,21 @@
]
}
],
+ "IOSEnablePasswordManagerTrustedVaultWidget": [
+ {
+ "platforms": [
+ "ios"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "enable_features": [
+ "IOSEnablePasswordManagerTrustedVaultWidget"
+ ]
+ }
+ ]
+ }
+ ],
"IOSEnterpriseRealtimeEventReporting": [
{
"platforms": [
@@ -12116,6 +12805,36 @@
]
}
],
+ "IOSLensFetchSrp": [
+ {
+ "platforms": [
+ "ios"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "enable_features": [
+ "LensVsintParamEnabled"
+ ]
+ }
+ ]
+ }
+ ],
+ "IOSLensGestureTextSelectionDisabled": [
+ {
+ "platforms": [
+ "ios"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "enable_features": [
+ "LensGestureTextSelectionDisabled"
+ ]
+ }
+ ]
+ }
+ ],
"IOSLensUnification": [
{
"platforms": [
@@ -12182,6 +12901,21 @@
]
}
],
+ "IOSMiniMapUniversalLink": [
+ {
+ "platforms": [
+ "ios"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "enable_features": [
+ "IOSMiniMapUniversalLink"
+ ]
+ }
+ ]
+ }
+ ],
"IOSOmahaResyncTimerOnForeground": [
{
"platforms": [
@@ -12603,25 +13337,6 @@
]
}
],
- "IPProtectionMdlImpl": [
- {
- "platforms": [
- "android",
- "chromeos",
- "linux",
- "mac",
- "windows"
- ],
- "experiments": [
- {
- "name": "enabled",
- "enable_features": [
- "MaskedDomainListFlatbufferImpl"
- ]
- }
- ]
- }
- ],
"IPProtectionPhase0": [
{
"platforms": [
@@ -12677,22 +13392,6 @@
]
}
],
- "IdentityDiscAccountMenu2": [
- {
- "platforms": [
- "ios"
- ],
- "experiments": [
- {
- "name": "Enabled",
- "enable_features": [
- "IdentityConfirmationSnackbar",
- "IdentityDiscAccountMenu"
- ]
- }
- ]
- }
- ],
"IdentityInAuthError": [
{
"platforms": [
@@ -12844,24 +13543,6 @@
]
}
],
- "InputScenarioPriorityBoostDesktop": [
- {
- "platforms": [
- "chromeos",
- "chromeos_lacros",
- "linux",
- "windows"
- ],
- "experiments": [
- {
- "name": "Enabled",
- "enable_features": [
- "InputScenarioPriorityBoost"
- ]
- }
- ]
- }
- ],
"InputVizard": [
{
"platforms": [
@@ -12907,6 +13588,25 @@
]
}
],
+ "InstallerDownloader": [
+ {
+ "platforms": [
+ "windows"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "params": {
+ "installer_url_template": "https://dl.google.com/tag/s/appguid%3D%7B4EA16AC7-FD5A-47C3-875B-DBF4A2008C20%7D%26iid%3D%%7BIIDGUID%7D%26lang%3DLANGUAGE%26browser%3D4%26usagestats%3DSTATS%26appname%3DGoogle%2520Chrome%26needsadmin%3Dprefers%26ap%3Dx64-statsdef_1%26brand%3DLMFN%26installdataindex%3Dempty/update2/installers/ChromeSetup.exe",
+ "learn_more_url": "https://support.google.com/chrome/?p=win10_transition"
+ },
+ "enable_features": [
+ "InstallerDownloader"
+ ]
+ }
+ ]
+ }
+ ],
"InvalidateSearchEngineChoiceOnDeviceRestoreDetection": [
{
"platforms": [
@@ -12925,43 +13625,6 @@
]
}
],
- "IpadZpsSuggestionsLimitIncrease": [
- {
- "platforms": [
- "ios"
- ],
- "experiments": [
- {
- "name": "Enabled_ZPS_SUGGESTIONS_LIMIT_INCREASE_WITH_TRENDS",
- "params": {
- "IpadAdditionalTrendingQueries": "5",
- "IpadZPSSuggestionsLimit": "20"
- },
- "enable_features": [
- "IpadZeroSuggestMatches"
- ]
- }
- ]
- }
- ],
- "IsCurrentlyLowMemoryJavaless": [
- {
- "platforms": [
- "android"
- ],
- "experiments": [
- {
- "name": "Enabled",
- "params": {
- "IsCurrentlyLowMemoryOption": "JavalessApproximation"
- },
- "enable_features": [
- "IsCurrentlyLowMemoryJavaless"
- ]
- }
- ]
- }
- ],
"IsolatedWebApps": [
{
"platforms": [
@@ -13032,17 +13695,33 @@
]
}
],
- "K12AgeClassificationMetricsProvider": [
+ "KeepDefaultSearchEngineAlive": [
{
"platforms": [
- "chromeos"
+ "chromeos",
+ "linux",
+ "mac",
+ "windows"
],
"experiments": [
{
- "name": "Enabled",
+ "name": "EnabledDSEKeepAlive",
"enable_features": [
- "K12AgeClassificationMetricsProvider"
+ "KeepDefaultSearchEngineRendererAlive",
+ "TrackEmptyRendererProcessesForReuse"
+ ],
+ "disable_features": [
+ "ProcessPerSiteForDSE"
]
+ },
+ {
+ "name": "EnabledDSEKeepAliveWithProcessSharing",
+ "enable_features": [
+ "KeepDefaultSearchEngineRendererAlive",
+ "ProcessPerSiteForDSE",
+ "TrackEmptyRendererProcessesForReuse"
+ ],
+ "disable_features": []
}
]
}
@@ -13547,6 +14226,42 @@
]
}
],
+ "LensOverlayBackToLivePage": [
+ {
+ "platforms": [
+ "chromeos",
+ "linux",
+ "mac",
+ "windows"
+ ],
+ "experiments": [
+ {
+ "name": "LensOverlayBackToLivePageEnabled",
+ "enable_features": [
+ "LensOverlayBackToPage"
+ ]
+ }
+ ]
+ }
+ ],
+ "LensSearchSidePanelDefaultWidth": [
+ {
+ "platforms": [
+ "chromeos",
+ "linux",
+ "mac",
+ "windows"
+ ],
+ "experiments": [
+ {
+ "name": "LensSearchSidePanelDefaultWidthEnabled",
+ "enable_features": [
+ "LensSearchSidePanelDefaultWidthChange"
+ ]
+ }
+ ]
+ }
+ ],
"LensSearchSidePanelScrollToAPI": [
{
"platforms": [
@@ -13601,27 +14316,6 @@
]
}
],
- "ListAccountsUsesBinaryFormat": [
- {
- "platforms": [
- "android",
- "chromeos",
- "fuchsia",
- "ios",
- "linux",
- "mac",
- "windows"
- ],
- "experiments": [
- {
- "name": "Enabled",
- "enable_features": [
- "ListAccountsUsesBinaryFormat"
- ]
- }
- ]
- }
- ],
"LiveCaptionChromeOS2": [
{
"platforms": [
@@ -13814,6 +14508,7 @@
"LocalNetworkAccessChecks": [
{
"platforms": [
+ "android",
"chromeos",
"linux",
"mac",
@@ -13821,9 +14516,9 @@
],
"experiments": [
{
- "name": "EnabledWarning",
+ "name": "EnabledBlocking",
"params": {
- "LocalNetworkAccessChecksWarn": "true"
+ "LocalNetworkAccessChecksWarn": "false"
},
"enable_features": [
"LocalNetworkAccessChecks"
@@ -13917,24 +14612,6 @@
]
}
],
- "LoginDbDeprecationAndroid": [
- {
- "platforms": [
- "android"
- ],
- "experiments": [
- {
- "name": "Enabled",
- "params": {
- "login-db-deprecation-export-delay-seconds": "5"
- },
- "enable_features": [
- "LoginDbDeprecationAndroid"
- ]
- }
- ]
- }
- ],
"LongAnimationFrameSourceCharPosition": [
{
"platforms": [
@@ -13958,28 +14635,11 @@
{
"platforms": [
"android",
- "chromeos",
- "linux",
- "mac",
- "windows"
+ "android_webview"
],
"experiments": [
{
"name": "Enabled",
- "params": {
- "delay_async_exec_opt_out_auto_fetch_priority_hint": "false",
- "delay_async_exec_opt_out_high_fetch_priority_hint": "true",
- "delay_async_exec_opt_out_low_fetch_priority_hint": "false",
- "low_pri_async_exec_cross_site_only": "true",
- "low_pri_async_exec_disable_when_lcp_not_in_html": "false",
- "low_pri_async_exec_exclude_document_write": "true",
- "low_pri_async_exec_exclude_non_parser_inserted": "false",
- "low_pri_async_exec_feature_limit": "3s",
- "low_pri_async_exec_lower_task_priority": "low",
- "low_pri_async_exec_main_frame_only": "true",
- "low_pri_async_exec_target": "non_ads",
- "low_pri_async_exec_timeout": "1s"
- },
"enable_features": [
"LowPriorityAsyncScriptExecution"
]
@@ -14104,6 +14764,21 @@
]
}
],
+ "MakeAccountsAvailableInIdentityManager": [
+ {
+ "platforms": [
+ "android"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "enable_features": [
+ "MakeAccountsAvailableInIdentityManager"
+ ]
+ }
+ ]
+ }
+ ],
"MaliciousApkDownloadCheck": [
{
"platforms": [
@@ -14276,7 +14951,7 @@
]
}
],
- "MemoryCacheStrongReference": [
+ "MemoryCacheStrongRefPruningTuneUp": [
{
"platforms": [
"android",
@@ -14287,13 +14962,39 @@
],
"experiments": [
{
- "name": "FilterImageAllPages_20240124",
+ "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": [
- "MemoryCacheStrongReference",
- "MemoryCacheStrongReferenceFilterImages"
- ],
- "disable_features": [
- "MemoryCacheStrongReferenceFilterScripts"
+ "MemoryCacheChangeStrongReferencePruneDelay",
+ "MemoryCacheStrongReference"
+ ]
+ },
+ {
+ "name": "DefaultsX3",
+ "params": {
+ "memory_cache_strong_ref_resource_size_threshold": "9437184",
+ "memory_cache_strong_ref_total_size_threshold": "47185920",
+ "strong_reference_prune_delay": "15m"
+ },
+ "enable_features": [
+ "MemoryCacheChangeStrongReferencePruneDelay",
+ "MemoryCacheStrongReference"
+ ]
+ },
+ {
+ "name": "MaxLimits1HourDelay",
+ "params": {
+ "memory_cache_strong_ref_resource_size_threshold": "104857600",
+ "memory_cache_strong_ref_total_size_threshold": "209715200",
+ "strong_reference_prune_delay": "60m"
+ },
+ "enable_features": [
+ "MemoryCacheChangeStrongReferencePruneDelay",
+ "MemoryCacheStrongReference"
]
}
]
@@ -14356,6 +15057,26 @@
]
}
],
+ "MemoryPurgeOnFreezeLimit": [
+ {
+ "platforms": [
+ "android",
+ "android_webview",
+ "chromeos",
+ "linux",
+ "mac",
+ "windows"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "enable_features": [
+ "MemoryPurgeOnFreezeLimit"
+ ]
+ }
+ ]
+ }
+ ],
"MemorySaverModeRenderTuning": [
{
"platforms": [
@@ -14695,16 +15416,16 @@
]
}
],
- "MsaaSettingsMac": [
+ "MostVisitedTilesVisualDeduplication": [
{
"platforms": [
- "mac"
+ "android"
],
"experiments": [
{
- "name": "DetectHiDpiForMsaa",
+ "name": "Enabled",
"enable_features": [
- "DetectHiDpiForMsaa"
+ "MostVisitedTilesVisualDeduplication"
]
}
]
@@ -14781,26 +15502,6 @@
]
}
],
- "MutationEvents": [
- {
- "platforms": [
- "android",
- "chromeos",
- "fuchsia",
- "linux",
- "mac",
- "windows"
- ],
- "experiments": [
- {
- "name": "Disabled",
- "disable_features": [
- "MutationEvents"
- ]
- }
- ]
- }
- ],
"MvcUpdateViewWhenModelChanged": [
{
"platforms": [
@@ -14816,6 +15517,25 @@
]
}
],
+ "NavBarColorAnimationEnabled": [
+ {
+ "platforms": [
+ "android"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "params": {
+ "disable_bottom_chin_color_animation": "false",
+ "disable_edge_to_edge_layout_color_animation": "false"
+ },
+ "enable_features": [
+ "NavBarColorAnimation"
+ ]
+ }
+ ]
+ }
+ ],
"NearbyBleV2": [
{
"platforms": [
@@ -15083,27 +15803,6 @@
]
}
],
- "NoThrowForCSPBlockedWorker": [
- {
- "platforms": [
- "android",
- "android_webview",
- "chromeos",
- "fuchsia",
- "linux",
- "mac",
- "windows"
- ],
- "experiments": [
- {
- "name": "Enabled",
- "enable_features": [
- "NoThrowForCSPBlockedWorker"
- ]
- }
- ]
- }
- ],
"NonModalSignInPromo": [
{
"platforms": [
@@ -15220,6 +15919,28 @@
]
}
],
+ "NtpComposeboxDesktop": [
+ {
+ "platforms": [
+ "chromeos",
+ "chromeos_lacros",
+ "linux",
+ "mac",
+ "windows"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "params": {
+ "ConfigParam": "CgIIAw=="
+ },
+ "enable_features": [
+ "NtpComposebox"
+ ]
+ }
+ ]
+ }
+ ],
"NtpMicrosoftFilesCard": [
{
"platforms": [
@@ -15318,6 +16039,21 @@
]
}
],
+ "OfferPinToTaskbarInFirstRunExperience": [
+ {
+ "platforms": [
+ "windows"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "enable_features": [
+ "OfferPinToTaskbarInFirstRunExperience"
+ ]
+ }
+ ]
+ }
+ ],
"OfferPinToTaskbarWhenSettingDefault": [
{
"platforms": [
@@ -15382,6 +16118,65 @@
]
}
],
+ "OmniboxAIModeZPSAndroid": [
+ {
+ "platforms": [
+ "android"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled_1",
+ "params": {
+ "LocalHistoryNonNormalizedContents": "true",
+ "SuppressPsuggestBackfillWithMIA": "true"
+ },
+ "enable_features": [
+ "OmniboxMiaZPS"
+ ]
+ }
+ ]
+ }
+ ],
+ "OmniboxAIModeZPSDesktop": [
+ {
+ "platforms": [
+ "chromeos",
+ "chromeos_lacros",
+ "linux",
+ "mac",
+ "windows"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled_2_AIM_Suggestions",
+ "params": {
+ "LocalHistoryNonNormalizedContents": "true"
+ },
+ "enable_features": [
+ "OmniboxMiaZPS"
+ ]
+ }
+ ]
+ }
+ ],
+ "OmniboxAiModeZpsIOS": [
+ {
+ "platforms": [
+ "ios"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled_5_PSuggest_4_AIM_Without_Backfill",
+ "params": {
+ "SuppressPsuggestBackfillWithMIA": "true"
+ },
+ "enable_features": [
+ "OmniboxMiaZPS"
+ ]
+ }
+ ]
+ }
+ ],
"OmniboxAnswerActions": [
{
"platforms": [
@@ -15481,30 +16276,6 @@
]
}
],
- "OmniboxDriveEligibility": [
- {
- "platforms": [
- "chromeos",
- "linux",
- "mac",
- "windows"
- ],
- "experiments": [
- {
- "name": "EnabledPrimaryAccountStrictEligibilityAndNoSyncRequirement",
- "enable_features": [
- "OmniboxDocumentProvider",
- "OmniboxDocumentProviderEnterpriseEligibility",
- "OmniboxDocumentProviderNoSyncRequirement",
- "OmniboxDocumentProviderPrimaryAccountRequirement"
- ],
- "disable_features": [
- "OmniboxDocumentProviderEnterpriseEligibilityWhenUnknown"
- ]
- }
- ]
- }
- ],
"OmniboxElegantTextHeight": [
{
"platforms": [
@@ -15614,6 +16385,21 @@
]
}
],
+ "OmniboxMobileParityUpdateV2": [
+ {
+ "platforms": [
+ "android"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "enable_features": [
+ "OmniboxMobileParityUpdateV2"
+ ]
+ }
+ ]
+ }
+ ],
"OmniboxOnDeviceBrainModel": [
{
"platforms": [
@@ -15657,29 +16443,19 @@
]
}
],
- "OmniboxOnFocusZPSV1": [
+ "OmniboxRestoreInvisibleFocusOnly": [
{
"platforms": [
"chromeos",
- "chromeos_lacros",
"linux",
"mac",
"windows"
],
"experiments": [
{
- "name": "Enabled_6_Suggestions",
- "params": {
- "OnFocusMaxSearchSuggestions": "3",
- "OnFocusMaxUrlSuggestions": "3",
- "OnFocusMostVisitedMaxSuggestions": "6"
- },
+ "name": "Enabled",
"enable_features": [
- "HappinessTrackingSurveyForOmniboxOnFocusZps",
- "OmniboxFocusTriggersWebAndSRPZeroSuggest",
- "OmniboxHideSuggestionGroupHeaders",
- "OmniboxUrlSuggestionsOnFocus",
- "ZeroSuggestPrefetchingOnWeb"
+ "OmniboxRestoreInvisibleFocusOnly"
]
}
]
@@ -15719,6 +16495,21 @@
]
}
],
+ "OnDeviceStorage": [
+ {
+ "platforms": [
+ "ios"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "enable_features": [
+ "OnDeviceStorage"
+ ]
+ }
+ ]
+ }
+ ],
"OneGroupPerRenderer": [
{
"platforms": [
@@ -15896,21 +16687,6 @@
]
}
],
- "OsFeedbackDialog": [
- {
- "platforms": [
- "chromeos"
- ],
- "experiments": [
- {
- "name": "Enabled",
- "enable_features": [
- "OsFeedbackDialog"
- ]
- }
- ]
- }
- ],
"OutOfProcessPrintDriversPrint": [
{
"platforms": [
@@ -15977,6 +16753,21 @@
]
}
],
+ "OzonePlatformAutoExternal": [
+ {
+ "platforms": [
+ "linux"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "enable_features": [
+ "OverrideDefaultOzonePlatformHintToAuto"
+ ]
+ }
+ ]
+ }
+ ],
"PWAIconAndTitleInNativeNotificationsWin": [
{
"platforms": [
@@ -16080,10 +16871,15 @@
{
"name": "Enabled",
"params": {
+ "autofill_address": "true",
+ "file_system_access": "true",
+ "intent_picker": "true",
"lens_overlay": "true",
"memory_saver": "true",
"offer_notification": "true",
- "translate": "true"
+ "price_insights": "true",
+ "translate": "true",
+ "zoom": "true"
},
"enable_features": [
"PageActionsMigration"
@@ -16149,21 +16945,6 @@
]
}
],
- "PageInfoLastVisitedIOS": [
- {
- "platforms": [
- "ios"
- ],
- "experiments": [
- {
- "name": "Enabled",
- "enable_features": [
- "PageInfoLastVisitedIOS"
- ]
- }
- ]
- }
- ],
"PaintHoldingOOPIF": [
{
"platforms": [
@@ -16555,8 +17336,7 @@
"PartitionAllocSchedulerLoopQuarantine",
"PartitionAllocWithAdvancedChecks",
"PartitionAllocZappingByFreeFlags"
- ],
- "disable_benchmarking": "true"
+ ]
}
]
}
@@ -16636,8 +17416,9 @@
],
"experiments": [
{
- "name": "Enabled",
+ "name": "Enabled_With_Predictions_Caching",
"enable_features": [
+ "FieldClassificationModelCaching",
"PasswordFormClientsideClassifier"
]
}
@@ -16762,24 +17543,6 @@
]
}
],
- "PdfInkSignatures": [
- {
- "platforms": [
- "chromeos",
- "linux",
- "mac",
- "windows"
- ],
- "experiments": [
- {
- "name": "Enabled",
- "enable_features": [
- "PdfInk2"
- ]
- }
- ]
- }
- ],
"PdfOutOfProcessIframe": [
{
"platforms": [
@@ -16876,97 +17639,6 @@
]
}
],
- "PerfCombined2024": [
- {
- "platforms": [
- "windows"
- ],
- "experiments": [
- {
- "name": "Enabled",
- "enable_features": [
- "EarlyEstablishGpuChannel",
- "EstablishGpuChannelAsync",
- "ExpandedPrefetchRange",
- "FledgeEnableWALForInterestGroupStorage",
- "MojoBindingsInlineSLS",
- "ReduceCpuUtilization2",
- "SharedStorageAPIEnableWALForDatabase"
- ]
- }
- ]
- },
- {
- "platforms": [
- "mac"
- ],
- "experiments": [
- {
- "name": "Enabled",
- "enable_features": [
- "EarlyEstablishGpuChannel",
- "EstablishGpuChannelAsync",
- "FledgeEnableWALForInterestGroupStorage",
- "MojoBindingsInlineSLS",
- "NumberOfCoresWithCpuSecurityMitigation",
- "ReduceCpuUtilization2",
- "SharedStorageAPIEnableWALForDatabase"
- ]
- }
- ]
- },
- {
- "platforms": [
- "chromeos",
- "linux",
- "fuchsia"
- ],
- "experiments": [
- {
- "name": "Enabled",
- "enable_features": [
- "EarlyEstablishGpuChannel",
- "EstablishGpuChannelAsync",
- "FledgeEnableWALForInterestGroupStorage",
- "MojoBindingsInlineSLS",
- "ReduceCpuUtilization2",
- "SharedStorageAPIEnableWALForDatabase"
- ]
- }
- ]
- },
- {
- "platforms": [
- "android_webview"
- ],
- "experiments": [
- {
- "name": "Enabled",
- "enable_features": [
- "FledgeEnableWALForInterestGroupStorage",
- "MojoBindingsInlineSLS",
- "SharedStorageAPIEnableWALForDatabase"
- ]
- }
- ]
- },
- {
- "platforms": [
- "android"
- ],
- "experiments": [
- {
- "name": "Enabled",
- "enable_features": [
- "FledgeEnableWALForInterestGroupStorage",
- "MojoBindingsInlineSLS",
- "ReduceCpuUtilization2",
- "SharedStorageAPIEnableWALForDatabase"
- ]
- }
- ]
- }
- ],
"PerformanceControlsHatsStudy": [
{
"platforms": [
@@ -17016,7 +17688,7 @@
],
"experiments": [
{
- "name": "Enabled_Uniform_20250526",
+ "name": "Enabled_Uniform_20250603",
"params": {
"en_site_id": "N5wFxEDQr0ugnJ3q1cK0SNopqcEc",
"hats_histogram_name": "Feedback.HappinessTrackingSurvey.PerformanceControlsPPMSurvey",
@@ -17038,7 +17710,7 @@
],
"experiments": [
{
- "name": "Enabled_Uniform_20250526",
+ "name": "Enabled_Uniform_20250603",
"params": {
"en_site_id": "N5wFxEDQr0ugnJ3q1cK0SNopqcEc",
"hats_histogram_name": "Feedback.HappinessTrackingSurvey.PerformanceControlsPPMSurvey",
@@ -17053,30 +17725,6 @@
]
}
]
- },
- {
- "platforms": [
- "mac"
- ],
- "experiments": [
- {
- "name": "Enabled_Uniform_20250526",
- "params": {
- "en_site_id": "N5wFxEDQr0ugnJ3q1cK0SNopqcEc",
- "hats_histogram_name": "Feedback.HappinessTrackingSurvey.PerformanceControlsPPMSurvey",
- "hats_survey_ukm_id": "1027171324",
- "ppm_survey_segment_max_memory_gb1": "8",
- "ppm_survey_segment_name1": "Mac, up to 8 GB",
- "ppm_survey_segment_name2": "Mac, over 8 GB",
- "ppm_survey_uniform_sample": "true",
- "probability": "0.252",
- "survey": "performance-ppm"
- },
- "enable_features": [
- "PerformanceControlsPPMSurvey"
- ]
- }
- ]
}
],
"PerformanceInterventionAlgorithm": [
@@ -17187,6 +17835,25 @@
]
}
],
+ "PermissionSiteSettingsRadioButton": [
+ {
+ "platforms": [
+ "chromeos",
+ "linux",
+ "windows",
+ "mac",
+ "android"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "enable_features": [
+ "PermissionSiteSettingsRadioButton"
+ ]
+ }
+ ]
+ }
+ ],
"PermissionsAIv1": [
{
"platforms": [
@@ -17272,6 +17939,24 @@
]
}
],
+ "PinnedTabToastOnClose": [
+ {
+ "platforms": [
+ "chromeos",
+ "linux",
+ "mac",
+ "windows"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "enable_features": [
+ "PinnedTabToastOnClose"
+ ]
+ }
+ ]
+ }
+ ],
"PinweaverPasswords": [
{
"platforms": [
@@ -17321,27 +18006,6 @@
]
}
],
- "PlusAddressCreateSuggestion": [
- {
- "platforms": [
- "android"
- ],
- "experiments": [
- {
- "name": "PlusAddress_IPH_Enabled",
- "params": {
- "availability": "any",
- "event_trigger": "name:plus_address_create_suggestion_iph_trigger;comparator:<10;window:90;storage:360",
- "event_used": "name:plus_address_create_suggestion_accepted;comparator:<2;window:90;storage:360",
- "session_rate": "<1"
- },
- "enable_features": [
- "IPH_PlusAddressCreateSuggestion"
- ]
- }
- ]
- }
- ],
"PlusAddressDeclinedFirstTimeCreateSurvey": [
{
"platforms": [
@@ -17380,46 +18044,6 @@
]
}
],
- "PlusAddressFullFormFill": [
- {
- "platforms": [
- "android",
- "chromeos",
- "ios",
- "linux",
- "mac",
- "windows"
- ],
- "experiments": [
- {
- "name": "Enabled",
- "enable_features": [
- "PlusAddressFullFormFill"
- ]
- }
- ]
- }
- ],
- "PlusAddressSuggestionsOnUsernameFields": [
- {
- "platforms": [
- "android",
- "chromeos",
- "ios",
- "linux",
- "mac",
- "windows"
- ],
- "experiments": [
- {
- "name": "Enabled",
- "enable_features": [
- "PlusAddressSuggestionsOnUsernameFields"
- ]
- }
- ]
- }
- ],
"PlusAddressUserCreatedMultiplePlusAddressesSurvey": [
{
"platforms": [
@@ -17541,6 +18165,21 @@
]
}
],
+ "PointerLockOnAndroid": [
+ {
+ "platforms": [
+ "android"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "enable_features": [
+ "PointerLockOnAndroid"
+ ]
+ }
+ ]
+ }
+ ],
"PolicyBlocklistProceedUntilResponse": [
{
"platforms": [
@@ -17624,21 +18263,6 @@
]
}
],
- "PowerSavingModeBroadcastReceiverInBackground": [
- {
- "platforms": [
- "android"
- ],
- "experiments": [
- {
- "name": "Enabled",
- "enable_features": [
- "PowerSavingModeBroadcastReceiverInBackground"
- ]
- }
- ]
- }
- ],
"PreconnectCreateNewTab": [
{
"platforms": [
@@ -17686,6 +18310,25 @@
]
}
],
+ "PreconnectNonSearchOmniboxSuggestions": [
+ {
+ "platforms": [
+ "android",
+ "chromeos",
+ "linux",
+ "mac",
+ "windows"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "enable_features": [
+ "PreconnectNonSearchOmniboxSuggestions"
+ ]
+ }
+ ]
+ }
+ ],
"PreconnectToSearchDesktop": [
{
"platforms": [
@@ -17709,6 +18352,24 @@
]
}
],
+ "PrefetchBlockUntilHeadTimeoutForWebViewPrefetch": [
+ {
+ "platforms": [
+ "android_webview"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "params": {
+ "block_until_head_timeout_embedder_prefetch": "0"
+ },
+ "enable_features": [
+ "PrefetchUseContentRefactor"
+ ]
+ }
+ ]
+ }
+ ],
"PrefetchManagerUseNetworkContextPrefetch": [
{
"platforms": [
@@ -17955,29 +18616,6 @@
]
}
],
- "Prerender2BookmarkBarTriggerV2": [
- {
- "platforms": [
- "linux",
- "mac",
- "windows",
- "chromeos"
- ],
- "experiments": [
- {
- "name": "MouseDownAndMouseHover300ms_20241008",
- "params": {
- "prerender_bookmarkbar_on_mouse_hover_trigger": "true",
- "prerender_bookmarkbar_on_mouse_pressed_trigger": "true",
- "prerender_start_delay_on_mouse_hover_ms": "300"
- },
- "enable_features": [
- "BookmarkTriggerForPrerender2"
- ]
- }
- ]
- }
- ],
"Prerender2EarlyDocumentLifecycleUpdateV2": [
{
"platforms": [
@@ -18064,6 +18702,27 @@
]
}
],
+ "PrewarmServiceWorkerRegistrationForDSE": [
+ {
+ "platforms": [
+ "android",
+ "chromeos",
+ "chromeos_lacros",
+ "fuchsia",
+ "linux",
+ "mac",
+ "windows"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "enable_features": [
+ "PrewarmServiceWorkerRegistrationForDSE"
+ ]
+ }
+ ]
+ }
+ ],
"PriceTrackingDesktopExpansionStudy": [
{
"platforms": [
@@ -18153,25 +18812,6 @@
]
}
],
- "PrivacyGuideAiSettings": [
- {
- "platforms": [
- "chromeos",
- "chromeos_lacros",
- "linux",
- "mac",
- "windows"
- ],
- "experiments": [
- {
- "name": "Enabled",
- "enable_features": [
- "PrivacyGuideAiSettings"
- ]
- }
- ]
- }
- ],
"PrivacySandboxActivityTypeStorage": [
{
"platforms": [
@@ -18251,51 +18891,6 @@
]
}
],
- "PrivacySandboxAdsNoticeCCT": [
- {
- "platforms": [
- "android"
- ],
- "experiments": [
- {
- "name": "Enabled_AGSA",
- "params": {
- "app-id": "com.google.android.googlequicksearchbox"
- },
- "enable_features": [
- "PrivacySandboxAdsNoticeCCT"
- ]
- }
- ]
- }
- ],
- "PrivacySandboxAdsNoticeCCTSurvey": [
- {
- "platforms": [
- "android"
- ],
- "experiments": [
- {
- "name": "Enabled",
- "params": {
- "accepted-trigger-rate": "1.0",
- "declined-trigger-rate": "1.0",
- "eea-accepted-trigger-id": "EHJUDsZQd0ugnJ3q1cK0Ru5GreU3",
- "eea-control-trigger-id": "EHJUDsZQd0ugnJ3q1cK0Ru5GreU3",
- "eea-declined-trigger-id": "EHJUDsZQd0ugnJ3q1cK0Ru5GreU3",
- "probability": "1.0",
- "row-acknowledged-trigger-id": "EHJUDsZQd0ugnJ3q1cK0Ru5GreU3",
- "row-control-trigger-id": "EHJUDsZQd0ugnJ3q1cK0Ru5GreU3",
- "survey-app-id": "com.google.android.googlequicksearchbox",
- "survey-delay-ms": "20000"
- },
- "enable_features": [
- "PrivacySandboxCctAdsNoticeSurvey"
- ]
- }
- ]
- }
- ],
"PrivacySandboxAllowPromptForBlocked3PCookies": [
{
"platforms": [
@@ -19471,24 +20066,6 @@
]
}
],
- "ReadAnythingDocsIntegrationRollout": [
- {
- "platforms": [
- "chromeos",
- "linux",
- "mac",
- "windows"
- ],
- "experiments": [
- {
- "name": "Enabled",
- "enable_features": [
- "ReadAnythingDocsIntegration"
- ]
- }
- ]
- }
- ],
"ReadAnythingIPHRollout": [
{
"platforms": [
@@ -19682,6 +20259,28 @@
]
}
],
+ "ReduceCallingServiceWorkerRegisteredStorageKeysOnStartup": [
+ {
+ "platforms": [
+ "android",
+ "android_webview",
+ "chromeos",
+ "chromeos_lacros",
+ "fuchsia",
+ "linux",
+ "mac",
+ "windows"
+ ],
+ "experiments": [
+ {
+ "name": "ReduceCallingServiceWorkerRegisteredStorageKeysOnStartup",
+ "enable_features": [
+ "ReduceCallingServiceWorkerRegisteredStorageKeysOnStartup"
+ ]
+ }
+ ]
+ }
+ ],
"ReduceCpuUtilization2": [
{
"platforms": [
@@ -19752,6 +20351,28 @@
]
}
],
+ "ReducePPMs": [
+ {
+ "platforms": [
+ "android",
+ "chromeos",
+ "ios",
+ "linux",
+ "mac",
+ "windows"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "enable_features": [
+ "AvoidCloneArgsOnExtensionFunctionDispatch",
+ "AvoidUnnecessaryGetMinimizeButtonOffset",
+ "ReducePPMs"
+ ]
+ }
+ ]
+ }
+ ],
"ReduceUserAgentDataLinuxPlatformVersion": [
{
"platforms": [
@@ -19889,26 +20510,6 @@
]
}
],
- "RemoveCancelledScriptedIdleTasks": [
- {
- "platforms": [
- "android_webview",
- "android",
- "chromeos",
- "linux",
- "mac",
- "windows"
- ],
- "experiments": [
- {
- "name": "Enabled",
- "enable_features": [
- "RemoveCancelledScriptedIdleTasks"
- ]
- }
- ]
- }
- ],
"RemoveDataUrlInSvgUse": [
{
"platforms": [
@@ -20072,6 +20673,22 @@
"android_webview"
],
"experiments": [
+ {
+ "name": "EnabledAllFramesWithQueueing",
+ "params": {
+ "level": "all-frames",
+ "queueing_level": "full"
+ },
+ "enable_features": [
+ "QueueNavigationsWhileWaitingForCommit",
+ "RenderDocument",
+ "WebViewRenderDocument"
+ ],
+ "disable_features": [
+ "DelayLayerTreeViewDeletionOnLocalSwap",
+ "RenderDocumentCompositorReuse"
+ ]
+ },
{
"name": "EnabledSubframeWithQueueing",
"params": {
@@ -20080,9 +20697,11 @@
},
"enable_features": [
"QueueNavigationsWhileWaitingForCommit",
- "RenderDocument"
+ "RenderDocument",
+ "WebViewRenderDocument"
],
"disable_features": [
+ "DelayLayerTreeViewDeletionOnLocalSwap",
"RenderDocumentCompositorReuse"
]
},
@@ -20094,23 +20713,11 @@
},
"enable_features": [
"QueueNavigationsWhileWaitingForCommit",
- "RenderDocument"
- ],
- "disable_features": [
- "RenderDocumentCompositorReuse"
- ]
- },
- {
- "name": "EnabledAllFramesWithQueueing",
- "params": {
- "level": "all-frames",
- "queueing_level": "full"
- },
- "enable_features": [
- "QueueNavigationsWhileWaitingForCommit",
- "RenderDocument"
+ "RenderDocument",
+ "WebViewRenderDocument"
],
"disable_features": [
+ "DelayLayerTreeViewDeletionOnLocalSwap",
"RenderDocumentCompositorReuse"
]
}
@@ -20275,6 +20882,21 @@
]
}
],
+ "ResetMetricsUploadBackoffOnForeground": [
+ {
+ "platforms": [
+ "android"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "enable_features": [
+ "ResetMetricsUploadBackoffOnForeground"
+ ]
+ }
+ ]
+ }
+ ],
"ResolutionBasedDecoderPriority": [
{
"platforms": [
@@ -20481,26 +21103,6 @@
]
}
],
- "SafeBrowsingRemoveCookiesInAuthRequests": [
- {
- "platforms": [
- "chromeos",
- "linux",
- "mac",
- "windows",
- "android",
- "ios"
- ],
- "experiments": [
- {
- "name": "Enabled",
- "enable_features": [
- "SafeBrowsingRemoveCookiesInAuthRequests"
- ]
- }
- ]
- }
- ],
"SafeBrowsingSyncCheckerCheckAllowlist": [
{
"platforms": [
@@ -20604,20 +21206,19 @@
"SafetyHubDisruptiveNotificationRevocation": [
{
"platforms": [
- "chromeos",
- "fuchsia",
- "linux",
- "mac",
- "windows",
"android"
],
"experiments": [
{
- "name": "ShadowRun_20250227",
+ "name": "Enabled_Moderate_v1",
"params": {
- "max_engagement_score": "0",
- "min_notification_count": "3",
- "shadow_run": "true"
+ "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"
@@ -21812,6 +22413,21 @@
]
}
],
+ "ScreenAIPartitionAllocAdvancedChecksEnabled": [
+ {
+ "platforms": [
+ "linux"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "enable_features": [
+ "ScreenAIPartitionAllocAdvancedChecksEnabled"
+ ]
+ }
+ ]
+ }
+ ],
"ScreenCaptureKitMacScreen": [
{
"platforms": [
@@ -22015,32 +22631,6 @@
]
}
],
- "SearchEnginePreconnect2": [
- {
- "platforms": [
- "android",
- "chromeos",
- "chromeos_lacros",
- "linux",
- "mac",
- "windows"
- ],
- "experiments": [
- {
- "name": "EnabledWithbase_60_30_30_30__20250507",
- "params": {
- "IdleTimeoutInSeconds": "60",
- "MaxPreconnectRetryInterval": "30",
- "MaxShortSessionThreshold": "30",
- "PingIntervalInSeconds": "30"
- },
- "enable_features": [
- "SearchEnginePreconnect2"
- ]
- }
- ]
- }
- ],
"SearchEnginePreconnectInterval": [
{
"platforms": [
@@ -22250,24 +22840,6 @@
]
}
],
- "SelfFreeze": [
- {
- "platforms": [
- "android"
- ],
- "experiments": [
- {
- "name": "Enabled_Both_20250401",
- "params": {
- "max_chunk_size": "100"
- },
- "enable_features": [
- "ShouldFreezeSelf"
- ]
- }
- ]
- }
- ],
"SendTabToSelfIOSPushNotifications": [
{
"platforms": [
@@ -22345,6 +22917,23 @@
]
}
],
+ "SeparateProfilesForManagedAccounts": [
+ {
+ "platforms": [
+ "ios"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "enable_features": [
+ "IdentityConfirmationSnackbar",
+ "IdentityDiscAccountMenu",
+ "SeparateProfilesForManagedAccounts"
+ ]
+ }
+ ]
+ }
+ ],
"ServerBasedTranscriptionForScreencast": [
{
"platforms": [
@@ -22400,7 +22989,11 @@
{
"name": "ServiceWorkerBackgroundUpdateForRegisteredStorageKeys",
"enable_features": [
- "ServiceWorkerBackgroundUpdateForRegisteredStorageKeys"
+ "ServiceWorkerBackgroundUpdateForRegisteredStorageKeys",
+ "ServiceWorkerBackgroundUpdateForServiceWorkerScopeCache"
+ ],
+ "disable_features": [
+ "ServiceWorkerMergeFindRegistrationForClientUrl"
]
}
]
@@ -22480,6 +23073,21 @@
]
}
],
+ "ShareDefaultBrowserStatus": [
+ {
+ "platforms": [
+ "ios"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "enable_features": [
+ "ShareDefaultBrowserStatus"
+ ]
+ }
+ ]
+ }
+ ],
"ShareInWebContextMenuIOS": [
{
"platforms": [
@@ -22608,6 +23216,12 @@
"windows"
],
"experiments": [
+ {
+ "name": "JoinOnlyEnabled",
+ "enable_features": [
+ "DataSharingJoinOnly"
+ ]
+ },
{
"name": "DataSharingEnabled",
"params": {
@@ -22617,12 +23231,6 @@
"DataSharing",
"DataSharingJoinOnly"
]
- },
- {
- "name": "JoinOnlyEnabled",
- "enable_features": [
- "DataSharingJoinOnly"
- ]
}
]
}
@@ -22721,6 +23329,27 @@
]
}
],
+ "ShoppingAlternateServer": [
+ {
+ "platforms": [
+ "android",
+ "chromeos",
+ "chromeos_lacros",
+ "ios",
+ "linux",
+ "mac",
+ "windows"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "enable_features": [
+ "ShoppingAlternateServer"
+ ]
+ }
+ ]
+ }
+ ],
"ShortCircuitUnfocusAnimation": [
{
"platforms": [
@@ -22826,6 +23455,25 @@
]
}
],
+ "SidePanelResizing": [
+ {
+ "platforms": [
+ "chromeos",
+ "fuchsia",
+ "linux",
+ "mac",
+ "windows"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "enable_features": [
+ "SidePanelResizing"
+ ]
+ }
+ ]
+ }
+ ],
"SideSearchInProductHelp": [
{
"platforms": [
@@ -22851,6 +23499,23 @@
]
}
],
+ "SignInPromoMaterialNextUI": [
+ {
+ "platforms": [
+ "linux",
+ "mac",
+ "windows"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "enable_features": [
+ "SignInPromoMaterialNextUI"
+ ]
+ }
+ ]
+ }
+ ],
"SimdutfBase64Support": [
{
"platforms": [
@@ -23011,6 +23676,21 @@
]
}
],
+ "SkiaGraphitePrecompilation": [
+ {
+ "platforms": [
+ "mac"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "enable_features": [
+ "SkiaGraphitePrecompilation"
+ ]
+ }
+ ]
+ }
+ ],
"SkipIsolatedSplitPreload": [
{
"platforms": [
@@ -23026,6 +23706,21 @@
]
}
],
+ "SkipModerateMemoryPressureLevelMac": [
+ {
+ "platforms": [
+ "mac"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "enable_features": [
+ "SkipModerateMemoryPressureLevelMac"
+ ]
+ }
+ ]
+ }
+ ],
"SkipPagehideInCommitForDSENavigation": [
{
"platforms": [
@@ -23046,21 +23741,6 @@
]
}
],
- "SkipParentAccessCodeForReauth": [
- {
- "platforms": [
- "chromeos"
- ],
- "experiments": [
- {
- "name": "Enabled",
- "enable_features": [
- "SkipParentAccessCodeForReauth"
- ]
- }
- ]
- }
- ],
"SkyVaultGA": [
{
"platforms": [
@@ -23091,6 +23771,41 @@
]
}
],
+ "SlimDirectReceiverIpc": [
+ {
+ "platforms": [
+ "android"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "enable_features": [
+ "SlimDirectReceiverIpc"
+ ]
+ }
+ ]
+ }
+ ],
+ "SlopBucket": [
+ {
+ "platforms": [
+ "android",
+ "chromeos",
+ "chromeos_lacros",
+ "linux",
+ "mac",
+ "windows"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "enable_features": [
+ "SlopBucket"
+ ]
+ }
+ ]
+ }
+ ],
"SmartZoom": [
{
"platforms": [
@@ -23121,6 +23836,26 @@
]
}
],
+ "SoftNavigationDetectionAdvancedPaintAttribution": [
+ {
+ "platforms": [
+ "android",
+ "android_webview",
+ "chromeos",
+ "linux",
+ "mac",
+ "windows"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "enable_features": [
+ "SoftNavigationDetectionAdvancedPaintAttribution"
+ ]
+ }
+ ]
+ }
+ ],
"SonomaAccessibilityActivationRefinements": [
{
"platforms": [
@@ -23547,6 +24282,21 @@
]
}
],
+ "SyncTrustedVaultInfobarImprovements": [
+ {
+ "platforms": [
+ "ios"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "enable_features": [
+ "SyncTrustedVaultInfobarImprovements"
+ ]
+ }
+ ]
+ }
+ ],
"SysPkJPandVKMv3": [
{
"platforms": [
@@ -23635,6 +24385,25 @@
]
}
],
+ "TLSTrustAnchorIDs": [
+ {
+ "platforms": [
+ "chromeos",
+ "linux",
+ "mac",
+ "windows",
+ "android"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "enable_features": [
+ "TLSTrustAnchorIDs"
+ ]
+ }
+ ]
+ }
+ ],
"TabAudioMuting": [
{
"platforms": [
@@ -23695,25 +24464,6 @@
]
}
],
- "TabGroupShortcuts": [
- {
- "platforms": [
- "chromeos",
- "fuchsia",
- "linux",
- "mac",
- "windows"
- ],
- "experiments": [
- {
- "name": "Enabled",
- "enable_features": [
- "TabGroupShortcuts"
- ]
- }
- ]
- }
- ],
"TabGroupSuggestionMetricsOnly": [
{
"platforms": [
@@ -23794,21 +24544,6 @@
]
}
],
- "TabStripLayoutOptimization": [
- {
- "platforms": [
- "android"
- ],
- "experiments": [
- {
- "name": "Enabled",
- "enable_features": [
- "TabStripLayoutOptimization"
- ]
- }
- ]
- }
- ],
"TabstripComboButton": [
{
"platforms": [
@@ -23903,6 +24638,59 @@
]
}
],
+ "TcpConnectionPoolSizeTrial": [
+ {
+ "platforms": [
+ "android",
+ "chromeos",
+ "linux",
+ "mac",
+ "windows"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled_255",
+ "params": {
+ "TcpConnectionPoolSizeTrialNormal": "255",
+ "TcpConnectionPoolSizeTrialWebSocket": "255"
+ },
+ "enable_features": [
+ "TcpConnectionPoolSizeTrial"
+ ]
+ },
+ {
+ "name": "Enabled_257",
+ "params": {
+ "TcpConnectionPoolSizeTrialNormal": "257",
+ "TcpConnectionPoolSizeTrialWebSocket": "257"
+ },
+ "enable_features": [
+ "TcpConnectionPoolSizeTrial"
+ ]
+ },
+ {
+ "name": "Enabled_512",
+ "params": {
+ "TcpConnectionPoolSizeTrialNormal": "512",
+ "TcpConnectionPoolSizeTrialWebSocket": "512"
+ },
+ "enable_features": [
+ "TcpConnectionPoolSizeTrial"
+ ]
+ },
+ {
+ "name": "Enabled_1024",
+ "params": {
+ "TcpConnectionPoolSizeTrialNormal": "1024",
+ "TcpConnectionPoolSizeTrialWebSocket": "1024"
+ },
+ "enable_features": [
+ "TcpConnectionPoolSizeTrial"
+ ]
+ }
+ ]
+ }
+ ],
"TcpPortRandomizationWin": [
{
"platforms": [
@@ -23910,9 +24698,9 @@
],
"experiments": [
{
- "name": "Dogfood",
+ "name": "Enabled",
"params": {
- "TcpPortRandomizationWinVersionMinimum": "16"
+ "TcpPortRandomizationWinVersionMinimum": "23"
},
"enable_features": [
"TcpPortRandomizationWin"
@@ -23999,6 +24787,24 @@
]
}
],
+ "ThreeButtonPasswordSaveDialog": [
+ {
+ "platforms": [
+ "chromeos",
+ "linux",
+ "mac",
+ "windows"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "enable_features": [
+ "ThreeButtonPasswordSaveDialog"
+ ]
+ }
+ ]
+ }
+ ],
"ThrottleMainFrameTo60HzV2": [
{
"platforms": [
@@ -24015,27 +24821,6 @@
]
}
],
- "ThrottleUnimportantFrameTimers": [
- {
- "platforms": [
- "android",
- "android_webview",
- "chromeos",
- "fuchsia",
- "linux",
- "mac",
- "windows"
- ],
- "experiments": [
- {
- "name": "Enabled",
- "enable_features": [
- "ThrottleUnimportantFrameTimers"
- ]
- }
- ]
- }
- ],
"TimedHTMLParserBudgetForAndroid": [
{
"platforms": [
@@ -24091,6 +24876,24 @@
]
}
],
+ "TouchToSearchCallout": [
+ {
+ "platforms": [
+ "android"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "params": {
+ "text_variant": "true"
+ },
+ "enable_features": [
+ "TouchToSearchCallout"
+ ]
+ }
+ ]
+ }
+ ],
"TouchpadFastClickStudy": [
{
"platforms": [
@@ -24174,21 +24977,6 @@
]
}
],
- "TransparentHwndEnlargement": [
- {
- "platforms": [
- "windows"
- ],
- "experiments": [
- {
- "name": "DisableTransparentHwndEnlargement",
- "disable_features": [
- "EnableTransparentHwndEnlargement"
- ]
- }
- ]
- }
- ],
"TransportSecurityFileWriterScheduleAndroid": [
{
"platforms": [
@@ -24207,6 +24995,21 @@
]
}
],
+ "TriggerPasswordResyncWhenUndecryptablePasswordsDetected": [
+ {
+ "platforms": [
+ "windows"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "enable_features": [
+ "TriggerPasswordResyncWhenUndecryptablePasswordsDetected"
+ ]
+ }
+ ]
+ }
+ ],
"TrustSafetySentimentSurvey": [
{
"platforms": [
@@ -24388,22 +25191,6 @@
]
}
],
- "URLFilteringForAndroid": [
- {
- "platforms": [
- "android"
- ],
- "experiments": [
- {
- "name": "Enabled",
- "enable_features": [
- "EnterpriseRealTimeUrlCheckOnAndroid",
- "EnterpriseUrlFilteringEventReportingOnAndroid"
- ]
- }
- ]
- }
- ],
"USSMigrationEnabled": [
{
"platforms": [
@@ -24465,16 +25252,32 @@
],
"experiments": [
{
- "name": "UnimportantFrame_LowerPriority",
+ "name": "ProcessPriority",
"enable_features": [
"UnimportantFramesPriority",
"UserVisibleProcessPriority"
+ ],
+ "disable_features": [
+ "RestrictThreadPoolInBackground",
+ "SetIsolatesPriority"
+ ]
+ },
+ {
+ "name": "RendererSettings",
+ "enable_features": [
+ "RestrictThreadPoolInBackground",
+ "SetIsolatesPriority",
+ "UnimportantFramesPriority"
+ ],
+ "disable_features": [
+ "UserVisibleProcessPriority"
]
},
{
- "name": "UnimportantFrame_LowerPriorityAndFrameRate",
+ "name": "All",
"enable_features": [
- "ThrottleUnimportantFrameRate",
+ "RestrictThreadPoolInBackground",
+ "SetIsolatesPriority",
"UnimportantFramesPriority",
"UserVisibleProcessPriority"
]
@@ -24543,7 +25346,7 @@
]
}
],
- "UnoPhase2FastFollowsAndroid": [
+ "UpdateStateBeforeUnbinding": [
{
"platforms": [
"android"
@@ -24552,9 +25355,7 @@
{
"name": "Enabled",
"enable_features": [
- "UnoForAuto",
- "UnoPhase2FollowUp",
- "UseHostedDomainForManagementCheckOnSignin"
+ "UpdateStateBeforeUnbinding"
]
}
]
@@ -24648,6 +25449,22 @@
]
}
],
+ "UseFinchPermanentCountyForFetchCountryId": [
+ {
+ "platforms": [
+ "chromeos",
+ "linux"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "enable_features": [
+ "UseFinchPermanentCountyForFetchCountryId"
+ ]
+ }
+ ]
+ }
+ ],
"UseFirstCoalescedFrameAsFlingGenerationTimestamp": [
{
"platforms": [
@@ -24670,18 +25487,23 @@
],
"experiments": [
{
- "name": "EnableDecryption",
+ "name": "Enabled",
"enable_features": [
"UseFreedesktopSecretKeyProvider"
- ],
- "disable_features": [
- "UseFreedesktopSecretKeyProviderForEncryption"
]
- },
+ }
+ ]
+ }
+ ],
+ "UseFreedesktopSecretKeyProviderForEncryption": [
+ {
+ "platforms": [
+ "linux"
+ ],
+ "experiments": [
{
- "name": "EnableDecryptionAndEncryption",
+ "name": "Enabled",
"enable_features": [
- "UseFreedesktopSecretKeyProvider",
"UseFreedesktopSecretKeyProviderForEncryption"
]
}
@@ -24703,6 +25525,21 @@
]
}
],
+ "UseInitialNetworkStateAtStartup": [
+ {
+ "platforms": [
+ "android"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "enable_features": [
+ "UseInitialNetworkStateAtStartup"
+ ]
+ }
+ ]
+ }
+ ],
"UseSCContentSharingPicker": [
{
"platforms": [
@@ -24846,46 +25683,6 @@
]
}
],
- "V8CompileHints3": [
- {
- "platforms": [
- "windows"
- ],
- "experiments": [
- {
- "name": "Disabled",
- "disable_features": [
- "ProduceCompileHints2"
- ]
- },
- {
- "name": "Enabled",
- "enable_features": [
- "ProduceCompileHints2"
- ]
- }
- ]
- }
- ],
- "V8DiscardMemoryPoolBeforeMemoryPressureGcs": [
- {
- "platforms": [
- "android",
- "chromeos",
- "linux",
- "mac",
- "windows"
- ],
- "experiments": [
- {
- "name": "Enabled",
- "enable_features": [
- "V8Flag_discard_memory_pool_before_memory_pressure_gcs"
- ]
- }
- ]
- }
- ],
"V8EfficiencyModeTiering": [
{
"platforms": [
@@ -24955,26 +25752,6 @@
]
}
],
- "V8GCSpeedUsesCounters": [
- {
- "platforms": [
- "android",
- "android_webview",
- "chromeos",
- "linux",
- "mac",
- "windows"
- ],
- "experiments": [
- {
- "name": "Enabled",
- "enable_features": [
- "V8GCSpeedUsesCounters"
- ]
- }
- ]
- }
- ],
"V8IncrementalMarkingStartUserVisible": [
{
"platforms": [
@@ -25029,6 +25806,50 @@
]
}
],
+ "V8LargePagePool": [
+ {
+ "platforms": [
+ "android",
+ "android_weblayer",
+ "android_webview",
+ "chromeos",
+ "fuchsia",
+ "linux",
+ "mac",
+ "windows"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "enable_features": [
+ "V8Flag_large_page_pool"
+ ]
+ }
+ ]
+ }
+ ],
+ "V8LateHeapLimitCheck": [
+ {
+ "platforms": [
+ "android",
+ "android_weblayer",
+ "android_webview",
+ "chromeos",
+ "fuchsia",
+ "linux",
+ "mac",
+ "windows"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "enable_features": [
+ "V8Flag_late_heap_limit_check"
+ ]
+ }
+ ]
+ }
+ ],
"V8LocalCompileHints": [
{
"platforms": [
@@ -25073,6 +25894,31 @@
]
}
],
+ "V8PreconfigureOldGen": [
+ {
+ "platforms": [
+ "android",
+ "android_weblayer",
+ "android_webview",
+ "chromeos",
+ "fuchsia",
+ "linux",
+ "mac",
+ "windows"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "params": {
+ "V8PreconfigureOldGenSize": "32"
+ },
+ "enable_features": [
+ "V8PreconfigureOldGen"
+ ]
+ }
+ ]
+ }
+ ],
"V8SideStepTransitions": [
{
"platforms": [
@@ -25446,6 +26292,21 @@
]
}
],
+ "VizDirectCompositorThreadIpcNonRoot": [
+ {
+ "platforms": [
+ "android"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "enable_features": [
+ "VizDirectCompositorThreadIpcNonRoot"
+ ]
+ }
+ ]
+ }
+ ],
"VulkanV2": [
{
"platforms": [
@@ -25484,6 +26345,29 @@
]
}
],
+ "WasmTtsComponentUpdaterV3Enabled": [
+ {
+ "platforms": [
+ "linux",
+ "mac",
+ "windows"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "enable_features": [
+ "WasmTtsComponentUpdaterV3Enabled"
+ ]
+ },
+ {
+ "name": "Disabled",
+ "disable_features": [
+ "WasmTtsComponentUpdaterV3Enabled"
+ ]
+ }
+ ]
+ }
+ ],
"WebApkBackupAndRestore": [
{
"platforms": [
@@ -25603,6 +26487,26 @@
]
}
],
+ "WebGPUEnableRangeAnalysisForRobustness": [
+ {
+ "platforms": [
+ "android",
+ "android_webview",
+ "chromeos",
+ "linux",
+ "mac",
+ "windows"
+ ],
+ "experiments": [
+ {
+ "name": "Enabled",
+ "enable_features": [
+ "WebGPUEnableRangeAnalysisForRobustness"
+ ]
+ }
+ ]
+ }
+ ],
"WebGPUSupportMetrics": [
{
"platforms": [
@@ -26832,6 +27736,25 @@
]
}
],
+ "WidevinePersistentLicenseSupport": [
+ {
+ "platforms": [
+ "chromeos",
+ "chromeos_lacros",
+ "linux",
+ "mac",
+ "windows"
+ ],
+ "experiments": [
+ {
+ "name": "Disabled_M140",
+ "disable_features": [
+ "WidevinePersistentLicenseSupport"
+ ]
+ }
+ ]
+ }
+ ],
"WidgetsForMultiprofileExperiment": [
{
"platforms": [
@@ -27021,25 +27944,6 @@
]
}
],
- "ZeroScrollMetricsUpdate": [
- {
- "platforms": [
- "android",
- "chromeos",
- "linux",
- "mac",
- "windows"
- ],
- "experiments": [
- {
- "name": "Enabled",
- "enable_features": [
- "ZeroScrollMetricsUpdate"
- ]
- }
- ]
- }
- ],
"ZramHugePageRecompression": [
{
"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 c7bb01b9..ba774d2b 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
@@ -10,7 +10,8 @@ module blink.mojom;
// https://chromium.googlesource.com/chromium/src.git/+/HEAD/docs/use_counter_wiki.md
//
// Do not change assigned numbers of existing items: add new features
-// to the end of the list.
+// to the end of the list. It's OK to rename an existing feature without
+// changing its numerical value.
//
// If you want to mark an item as no-longer-used, simply rename it, prefixing
// "kOBSOLETE_" before the existing name.
@@ -539,7 +540,7 @@ enum WebFeature {
kV8Event_InitEvent_Method = 867,
kV8KeyboardEvent_InitKeyboardEvent_Method = 868,
kV8MouseEvent_InitMouseEvent_Method = 869,
- kV8MutationEvent_InitMutationEvent_Method = 870,
+ kOBSOLETE_V8MutationEvent_InitMutationEvent_Method = 870,
kV8StorageEvent_InitStorageEvent_Method = 871,
kV8UIEvent_InitUIEvent_Method = 873,
kRequestFileSystemNonWebbyOrigin = 876,
@@ -790,14 +791,14 @@ enum WebFeature {
kDocumentCreateEventErrorEvent = 1170,
kDocumentCreateEventFocusEvent = 1171,
kDocumentCreateEventHashChangeEvent = 1172,
- kDocumentCreateEventMutationEvent = 1173,
+ kOBSOLETE_DocumentCreateEventMutationEvent = 1173,
kDocumentCreateEventPageTransitionEvent = 1174,
kDocumentCreateEventPopStateEvent = 1176,
kDocumentCreateEventTextEvent = 1182,
kDocumentCreateEventTransitionEvent = 1183,
kDocumentCreateEventWheelEvent = 1184,
kDocumentCreateEventTrackEvent = 1186,
- kDocumentCreateEventMutationEvents = 1188,
+ kOBSOLETE_DocumentCreateEventMutationEvents = 1188,
kDocumentCreateEventSVGEvents = 1190,
kDocumentCreateEventDeviceMotionEvent = 1195,
kDocumentCreateEventDeviceOrientationEvent = 1196,
@@ -1575,7 +1576,7 @@ enum WebFeature {
kOBSOLETE_BatteryStatusInsecureOrigin = 2199,
kBatteryStatusCrossOrigin = 2200,
kBatteryStatusSameOriginABA = 2201,
- kHasIDClassTagAttribute = 2203,
+ kOBSOLETE_HasIDClassTagAttribute = 2203,
kHasBeforeOrAfterPseudoElement = 2204,
kShapeOutsideMaybeAffectedInlineSize = 2205,
kShapeOutsideMaybeAffectedInlinePosition = 2206,
@@ -3009,26 +3010,26 @@ enum WebFeature {
kPaymentHandlerStandardizedPaymentMethodIdentifier = 3750,
kWebCodecsAudioEncoder = 3751,
kEmbeddedCrossOriginFrameWithoutFrameAncestorsOrXFO = 3752,
- kAddressSpacePrivateSecureContextEmbeddedLocal = 3753,
- kAddressSpacePrivateNonSecureContextEmbeddedLocal = 3754,
- kAddressSpacePublicSecureContextEmbeddedLocal = 3755,
- kAddressSpacePublicNonSecureContextEmbeddedLocal = 3756,
- kAddressSpacePublicSecureContextEmbeddedPrivate = 3757,
- kAddressSpacePublicNonSecureContextEmbeddedPrivate = 3758,
- kAddressSpaceUnknownSecureContextEmbeddedLocal = 3759,
- kAddressSpaceUnknownNonSecureContextEmbeddedLocal = 3760,
- kAddressSpaceUnknownSecureContextEmbeddedPrivate = 3761,
- kAddressSpaceUnknownNonSecureContextEmbeddedPrivate = 3762,
- kAddressSpacePrivateSecureContextNavigatedToLocal = 3763,
- kAddressSpacePrivateNonSecureContextNavigatedToLocal = 3764,
- kAddressSpacePublicSecureContextNavigatedToLocal = 3765,
- kAddressSpacePublicNonSecureContextNavigatedToLocal = 3766,
- kAddressSpacePublicSecureContextNavigatedToPrivate = 3767,
- kAddressSpacePublicNonSecureContextNavigatedToPrivate = 3768,
- kAddressSpaceUnknownSecureContextNavigatedToLocal = 3769,
- kAddressSpaceUnknownNonSecureContextNavigatedToLocal = 3770,
- kAddressSpaceUnknownSecureContextNavigatedToPrivate = 3771,
- kAddressSpaceUnknownNonSecureContextNavigatedToPrivate = 3772,
+ kAddressSpaceLocalSecureContextEmbeddedLoopbackV2 = 3753,
+ kAddressSpaceLocalNonSecureContextEmbeddedLoopbackV2 = 3754,
+ kAddressSpacePublicSecureContextEmbeddedLoopbackV2 = 3755,
+ kAddressSpacePublicNonSecureContextEmbeddedLoopbackV2 = 3756,
+ kAddressSpacePublicSecureContextEmbeddedLocalV2 = 3757,
+ kAddressSpacePublicNonSecureContextEmbeddedLocalV2 = 3758,
+ kAddressSpaceUnknownSecureContextEmbeddedLoopbackV2 = 3759,
+ kAddressSpaceUnknownNonSecureContextEmbeddedLoopbackV2 = 3760,
+ kAddressSpaceUnknownSecureContextEmbeddedLocalV2 = 3761,
+ kAddressSpaceUnknownNonSecureContextEmbeddedLocalV2 = 3762,
+ kAddressSpaceLocalSecureContextNavigatedToLoopbackV2 = 3763,
+ kAddressSpaceLocalNonSecureContextNavigatedToLoopbackV2 = 3764,
+ kAddressSpacePublicSecureContextNavigatedToLoopbackV2 = 3765,
+ kAddressSpacePublicNonSecureContextNavigatedToLoopbackV2 = 3766,
+ kAddressSpacePublicSecureContextNavigatedToLocalV2 = 3767,
+ kAddressSpacePublicNonSecureContextNavigatedToLocalV2 = 3768,
+ kAddressSpaceUnknownSecureContextNavigatedToLoopbackV2 = 3769,
+ kAddressSpaceUnknownNonSecureContextNavigatedToLoopbackV2 = 3770,
+ kAddressSpaceUnknownSecureContextNavigatedToLocalV2 = 3771,
+ kAddressSpaceUnknownNonSecureContextNavigatedToLocalV2 = 3772,
kOBSOLETE_RTCPeerConnectionSdpSemanticsPlanB = 3773,
// The items above roughly this point are available in the M89 branch.
kFetchRespondWithNoResponseWithUsedRequestBody = 3774,
@@ -3198,7 +3199,7 @@ enum WebFeature {
kXRFrameFillJointRadii = 3939,
kXRFrameFillPoses = 3940,
kOBSOLETE_kWindowOpenNewPopupBehaviorMismatch = 3941,
- kExplicitPointerCaptureClickTargetDiff = 3942,
+ kOBSOLETE_kExplicitPointerCaptureClickTargetDiff = 3942,
// The items above roughly this point are available in the M92 branch.
kControlledNonBlobURLWorkerWillBeUncontrolled = 3943,
kMediaMetaThemeColor = 3944,
@@ -4180,8 +4181,8 @@ enum WebFeature {
kDOMNodeRemovedFromDocumentEventFired = 4888,
kDOMNodeInsertedIntoDocumentEventFired = 4889,
kDOMCharacterDataModifiedEventFired = 4890,
- kAnyMutationEventFired = 4891,
- kAnyMutationEventListenerAdded = 4892,
+ kOBSOLETE_AnyMutationEventFired = 4891,
+ kOBSOLETE_AnyMutationEventListenerAdded = 4892,
kBadgeSetWithoutNotificationPermissionInBrowserWindow = 4893,
kBadgeSetWithoutNotificationPermissionInAppWindow = 4894,
kBadgeSetWithoutNotificationPermissionInWorker = 4895,
@@ -4505,7 +4506,7 @@ enum WebFeature {
kGeolocationSucceeded = 5201,
kGeolocationSucceededWithoutInjectionMitigation = 5202,
kSharedWorkerScriptUnderServiceWorkerControlIsBlob = 5203,
- kDisableThirdPartyStoragePartitioning3 = 5204,
+ kOBSOLETE_DisableThirdPartyStoragePartitioning3 = 5204,
kControlledFrameElement = 5205,
kCanvas2DIsPointInPath = 5206,
kCanvas2DIsPointInStroke = 5207,
@@ -4899,6 +4900,11 @@ enum WebFeature {
kSchedulerYieldNonTrivialInherit = 5590,
kSchedulerYieldNonTrivialInheritCrossFrameIgnored = 5591,
kLocalNetworkAccessPrivateAliasUse = 5592,
+ kV8URLPattern_Generate_Method = 5593,
+ kSelectMultipleSizeOne = 5594,
+ kWebGPUFeatureLevelCompatibility = 5595,
+ kOverscrollBehaviorOnNonScrollableScrollContainer = 5596,
+ kFetchRetry = 5612,
// 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 3d0dcede..ff66e79f 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
@@ -507,4 +507,8 @@ struct WebPreferences {
// 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;
};
diff --git a/tools/under-control/src/third_party/blink/renderer/core/animation/animation.idl b/tools/under-control/src/third_party/blink/renderer/core/animation/animation.idl
index 194590e7..03be82a3 100755
--- a/tools/under-control/src/third_party/blink/renderer/core/animation/animation.idl
+++ b/tools/under-control/src/third_party/blink/renderer/core/animation/animation.idl
@@ -64,5 +64,4 @@ enum ReplaceState { "active", "removed", "persisted" };
[Measure] attribute EventHandler onremove;
[CallWith=ScriptState] readonly attribute Promise finished;
[CallWith=ScriptState] readonly attribute Promise ready;
- [RuntimeEnabled=AnimationTrigger] attribute AnimationTrigger? trigger;
};
diff --git a/tools/under-control/src/third_party/blink/renderer/core/animation/animation_trigger.idl b/tools/under-control/src/third_party/blink/renderer/core/animation/animation_trigger.idl
index c76b635a..e7995395 100755
--- a/tools/under-control/src/third_party/blink/renderer/core/animation/animation_trigger.idl
+++ b/tools/under-control/src/third_party/blink/renderer/core/animation/animation_trigger.idl
@@ -17,4 +17,6 @@ enum AnimationTriggerType { "once", "repeat", "alternate", "state" };
[CallWith=ExecutionContext] readonly attribute (TimelineRangeOffset or DOMString) rangeEnd;
[CallWith=ExecutionContext] readonly attribute (TimelineRangeOffset or DOMString) exitRangeStart;
[CallWith=ExecutionContext] readonly attribute (TimelineRangeOffset or DOMString) exitRangeEnd;
+ [RaisesException] void addAnimation(Animation animation);
+ void removeAnimation(Animation animation);
};
diff --git a/tools/under-control/src/third_party/blink/renderer/core/css/parser/media_query_parser.cc b/tools/under-control/src/third_party/blink/renderer/core/css/parser/media_query_parser.cc
index 252a71fc..8d7097a3 100755
--- a/tools/under-control/src/third_party/blink/renderer/core/css/parser/media_query_parser.cc
+++ b/tools/under-control/src/third_party/blink/renderer/core/css/parser/media_query_parser.cc
@@ -234,7 +234,7 @@ std::optional ConsumeUnparsed(
CSSVariableData* data =
CSSVariableData::Create(value_string, /* is_animation_tainted= */ false,
/* is_attr_tainted= */ false,
- /*needs_variable_resolution=*/false);
+ /*needs_variable_resolution=*/true);
const CSSValue* value =
MakeGarbageCollected(data, &context);
return MediaQueryExpValue(*value);
diff --git a/tools/under-control/src/third_party/blink/renderer/core/dom/element.idl b/tools/under-control/src/third_party/blink/renderer/core/dom/element.idl
index d8c71eb9..2bbfde8d 100755
--- a/tools/under-control/src/third_party/blink/renderer/core/dom/element.idl
+++ b/tools/under-control/src/third_party/blink/renderer/core/dom/element.idl
@@ -171,6 +171,7 @@ dictionary SetHTMLUnsafeOptions {
// Element Timing
[CEReactions, Reflect=elementtiming] attribute DOMString elementTiming;
[RuntimeEnabled=ContainerTiming, CEReactions, Reflect=containertiming] attribute DOMString containerTiming;
+ [RuntimeEnabled=ContainerTiming, CEReactions, Reflect=containertiming-ignore] attribute boolean containerTimingIgnore;
// Heading Offset
[CEReactions, RuntimeEnabled=HeadingOffset] attribute unsigned long headingOffset;
diff --git a/tools/under-control/src/third_party/blink/renderer/core/dom/shadow_root.idl b/tools/under-control/src/third_party/blink/renderer/core/dom/shadow_root.idl
index 79492da2..b1d827d2 100755
--- a/tools/under-control/src/third_party/blink/renderer/core/dom/shadow_root.idl
+++ b/tools/under-control/src/third_party/blink/renderer/core/dom/shadow_root.idl
@@ -54,32 +54,6 @@ interface ShadowRoot : DocumentFragment {
// See https://crbug.com/346835896
[RuntimeEnabled=ShadowRootReferenceTarget] attribute DOMString referenceTarget;
- // Scoped element creation APIs
- // https://wicg.github.io/webcomponents/proposals/Scoped-Custom-Element-Registries#scoped-element-creation-apis
- [
- NewObject, PerWorldBindings, RaisesException, CEReactions,
- RuntimeEnabled=ScopedCustomElementRegistry,
- ImplementedAs=CreateElementForBinding
- ]
- Element createElement(DOMString localName);
- [
- NewObject, PerWorldBindings, RaisesException, CEReactions,
- RuntimeEnabled=ScopedCustomElementRegistry,
- ImplementedAs=CreateElementForBinding
- ]
- Element createElement(DOMString localName, (DOMString or ElementCreationOptions) options);
- [
- NewObject, RaisesException, CEReactions,
- RuntimeEnabled=ScopedCustomElementRegistry
- ]
- Element createElementNS(DOMString? namespaceURI, DOMString qualifiedName);
- [
- NewObject, RaisesException, CEReactions,
- RuntimeEnabled=ScopedCustomElementRegistry
- ]
- Element createElementNS(DOMString? namespaceURI, DOMString qualifiedName,
- (DOMString or ElementCreationOptions) options);
-
[RaisesException,MeasureAs=SetHTMLUnsafe,CEReactions] void setHTMLUnsafe(HTMLString string);
[RuntimeEnabled=SanitizerAPI,RaisesException,MeasureAs=SetHTMLUnsafe,CEReactions] void setHTMLUnsafe(HTMLString html, SetHTMLUnsafeOptions options);
[RuntimeEnabled=SanitizerAPI,RaisesException,MeasureAs=SetHTMLSafe,CEReactions] void setHTML(DOMString html, optional SetHTMLOptions options = {});
diff --git a/tools/under-control/src/third_party/blink/renderer/core/events/event_type_names.json5 b/tools/under-control/src/third_party/blink/renderer/core/events/event_type_names.json5
index 43d78551..3511748a 100755
--- a/tools/under-control/src/third_party/blink/renderer/core/events/event_type_names.json5
+++ b/tools/under-control/src/third_party/blink/renderer/core/events/event_type_names.json5
@@ -6,15 +6,9 @@
data: [
"DOMActivate",
- "DOMCharacterDataModified",
"DOMContentLoaded",
"DOMFocusIn",
"DOMFocusOut",
- "DOMNodeInserted",
- "DOMNodeInsertedIntoDocument",
- "DOMNodeRemoved",
- "DOMNodeRemovedFromDocument",
- "DOMSubtreeModified",
"abort",
"abortpayment",
"accessibleclick",
diff --git a/tools/under-control/src/third_party/blink/renderer/core/events/mutation_event.idl b/tools/under-control/src/third_party/blink/renderer/core/events/mutation_event.idl
deleted file mode 100755
index 4263f46c..00000000
--- a/tools/under-control/src/third_party/blink/renderer/core/events/mutation_event.idl
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright (C) 2006 Apple Computer, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public License
- * along with this library; see the file COPYING.LIB. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-// https://w3c.github.io/uievents/#interface-MutationEvent
-
-[
- Exposed=Window,
- RuntimeEnabled=MutationEvents
-] interface MutationEvent : Event {
- // attrChangeType
- const unsigned short MODIFICATION = 1;
- const unsigned short ADDITION = 2;
- const unsigned short REMOVAL = 3;
-
- readonly attribute Node? relatedNode;
- readonly attribute DOMString prevValue;
- readonly attribute DOMString newValue;
- readonly attribute DOMString attrName;
- readonly attribute unsigned short attrChange;
- // TODO(foolip): None of the initMutationEvent() arguments should be optional.
- [Measure] void initMutationEvent(DOMString type,
- optional boolean bubbles = false,
- optional boolean cancelable = false,
- optional Node? relatedNode = null,
- optional DOMString prevValue = "undefined",
- optional DOMString newValue = "undefined",
- optional DOMString attrName = "undefined",
- optional unsigned short attrChange = 0);
-};
diff --git a/tools/under-control/src/third_party/blink/renderer/core/events/security_policy_violation_event.idl b/tools/under-control/src/third_party/blink/renderer/core/events/security_policy_violation_event.idl
index 12b334f5..372123e0 100755
--- a/tools/under-control/src/third_party/blink/renderer/core/events/security_policy_violation_event.idl
+++ b/tools/under-control/src/third_party/blink/renderer/core/events/security_policy_violation_event.idl
@@ -48,4 +48,7 @@ enum SecurityPolicyViolationEventDisposition {
readonly attribute long lineNumber;
readonly attribute long columnNumber;
readonly attribute DOMString sample;
+ // Contains the hashes of scripts that were blocked from being run through
+ // eval due to unsafe-eval not being set.
+ [RuntimeEnabled=CSPHashesV1] readonly attribute DOMString evalHash;
};
diff --git a/tools/under-control/src/third_party/blink/renderer/core/events/security_policy_violation_event_init.idl b/tools/under-control/src/third_party/blink/renderer/core/events/security_policy_violation_event_init.idl
index 50dc8c3e..090daa55 100755
--- a/tools/under-control/src/third_party/blink/renderer/core/events/security_policy_violation_event_init.idl
+++ b/tools/under-control/src/third_party/blink/renderer/core/events/security_policy_violation_event_init.idl
@@ -24,4 +24,5 @@ dictionary SecurityPolicyViolationEventInit : EventInit {
long columnNumber = 0;
DOMString violatedDirective = "";
+ [RuntimeEnabled=CSPHashesV1] DOMString evalHash;
};
diff --git a/tools/under-control/src/third_party/blink/renderer/core/events/toggle_event.idl b/tools/under-control/src/third_party/blink/renderer/core/events/toggle_event.idl
index 92086f18..98c02609 100755
--- a/tools/under-control/src/third_party/blink/renderer/core/events/toggle_event.idl
+++ b/tools/under-control/src/third_party/blink/renderer/core/events/toggle_event.idl
@@ -8,5 +8,5 @@
constructor(DOMString type, optional ToggleEventInit eventInitDict = {});
readonly attribute DOMString oldState;
readonly attribute DOMString newState;
- [RuntimeEnabled=ToggleEventSource] readonly attribute Element source;
+ [RuntimeEnabled=ToggleEventSource] readonly attribute Element? source;
};
diff --git a/tools/under-control/src/third_party/blink/renderer/core/exported/web_view_impl.cc b/tools/under-control/src/third_party/blink/renderer/core/exported/web_view_impl.cc
index 97141017..f518b711 100755
--- a/tools/under-control/src/third_party/blink/renderer/core/exported/web_view_impl.cc
+++ b/tools/under-control/src/third_party/blink/renderer/core/exported/web_view_impl.cc
@@ -35,6 +35,7 @@
#include
#include "base/command_line.h"
+#include "base/debug/alias.h"
#include "base/debug/crash_logging.h"
#include "base/debug/dump_without_crashing.h"
#include "base/memory/scoped_refptr.h"
@@ -252,16 +253,6 @@ HashSet& WebViewImpl::AllInstances() {
return all_instances;
}
-static bool g_should_use_external_popup_menus = false;
-
-void WebView::SetUseExternalPopupMenus(bool use_external_popup_menus) {
- g_should_use_external_popup_menus = use_external_popup_menus;
-}
-
-bool WebViewImpl::UseExternalPopupMenus() {
- return g_should_use_external_popup_menus;
-}
-
namespace {
class EmptyEventListener final : public NativeEventListener {
@@ -800,8 +791,8 @@ float WebViewImpl::MaximumLegiblePageScale() const {
}
void WebViewImpl::ComputeScaleAndScrollForBlockRect(
- const gfx::Point& hit_point_in_root_frame,
- const gfx::Rect& block_rect_in_root_frame,
+ gfx::Rect hit_rect_in_root_frame,
+ gfx::Rect block_rect_in_root_frame,
float padding,
float default_scale_when_already_legible,
float& scale,
@@ -810,9 +801,7 @@ void WebViewImpl::ComputeScaleAndScrollForBlockRect(
scale = PageScaleFactor();
scroll = gfx::Point();
- gfx::Rect rect = block_rect_in_root_frame;
-
- if (!rect.IsEmpty()) {
+ if (!block_rect_in_root_frame.IsEmpty()) {
float default_margin = doubleTapZoomContentDefaultMargin;
float minimum_margin = doubleTapZoomContentMinimumMargin;
// We want the margins to have the same physical size, which means we
@@ -821,11 +810,15 @@ void WebViewImpl::ComputeScaleAndScrollForBlockRect(
// we express them as a fraction of the target rectangle: this will be
// correct if we end up fully zooming to it, and won't matter if we
// don't.
- rect = WidenRectWithinPageBounds(
- rect, static_cast(default_margin * rect.width() / size_.width()),
- static_cast(minimum_margin * rect.width() / size_.width()));
+ block_rect_in_root_frame = WidenRectWithinPageBounds(
+ block_rect_in_root_frame,
+ base::ClampFloor(default_margin * block_rect_in_root_frame.width() /
+ size_.width()),
+ base::ClampFloor(minimum_margin * block_rect_in_root_frame.width() /
+ size_.width()));
// Fit block to screen, respecting limits.
- scale = static_cast(size_.width()) / rect.width();
+ scale =
+ static_cast(size_.width()) / block_rect_in_root_frame.width();
scale = std::min(scale, MaximumLegiblePageScale());
if (PageScaleFactor() < default_scale_when_already_legible)
scale = std::max(scale, default_scale_when_already_legible);
@@ -839,32 +832,57 @@ void WebViewImpl::ComputeScaleAndScrollForBlockRect(
// double-tap zoom strategy (fitting the containing block to the screen)
// though.
- float screen_width = size_.width() / scale;
- float screen_height = size_.height() / scale;
+ float viewport_width = size_.width() / scale;
+ float viewport_height = size_.height() / scale;
- // Scroll to vertically align the block.
- if (rect.height() < screen_height) {
- // Vertically center short blocks.
- rect.Offset(0, -0.5 * (screen_height - rect.height()));
+ if (RuntimeEnabledFeatures::AlignZoomToCenterEnabled()) {
+ const float kMarginPadding = 20 / scale;
+ hit_rect_in_root_frame.Intersect(
+ gfx::Rect(hit_rect_in_root_frame.origin(),
+ gfx::Size(viewport_width - kMarginPadding,
+ viewport_height - kMarginPadding)));
+ // If the block fits in the viewport, center the block.
+ // Otherwise center the target point.
+ gfx::Point center_point_in_root_frame(
+ block_rect_in_root_frame.width() <= viewport_width
+ ? block_rect_in_root_frame.CenterPoint().x()
+ : hit_rect_in_root_frame.CenterPoint().x(),
+ block_rect_in_root_frame.height() <= viewport_height
+ ? block_rect_in_root_frame.CenterPoint().y()
+ : hit_rect_in_root_frame.CenterPoint().y());
+ gfx::Vector2d viewport_center(viewport_width * 0.5, viewport_height * 0.5);
+ gfx::Point frame_offset = center_point_in_root_frame - viewport_center;
+ scroll = MainFrameImpl()->GetFrameView()->RootFrameToDocument(frame_offset);
} else {
- // Ensure position we're zooming to (+ padding) isn't off the bottom of
- // the screen.
- rect.set_y(std::max(
- rect.y(), hit_point_in_root_frame.y() + padding - screen_height));
- } // Otherwise top align the block.
+ // TODO(crbug.com/422382412): Remove this branch once the above
+ // lands in stable.
+ // Scroll to vertically align the block.
+ if (block_rect_in_root_frame.height() < viewport_height) {
+ // Vertically center short blocks.
+ block_rect_in_root_frame.Offset(
+ 0, -0.5 * (viewport_height - block_rect_in_root_frame.height()));
+ } else {
+ // Ensure position we're zooming to (+ padding) isn't off the bottom of
+ // the screen.
+ block_rect_in_root_frame.set_y(std::max(
+ block_rect_in_root_frame.y(),
+ hit_rect_in_root_frame.y() + padding - viewport_height));
+ } // Otherwise top align the block.
- // Do the same thing for horizontal alignment.
- if (rect.width() < screen_width) {
- rect.Offset(-0.5 * (screen_width - rect.width()), 0);
- } else {
- rect.set_x(std::max(
- rect.x(), hit_point_in_root_frame.x() + padding - screen_width));
+ // Do the same thing for horizontal alignment.
+ if (block_rect_in_root_frame.width() < viewport_width) {
+ block_rect_in_root_frame.Offset(
+ -0.5 * (viewport_width - block_rect_in_root_frame.width()), 0);
+ } else {
+ block_rect_in_root_frame.set_x(std::max(
+ block_rect_in_root_frame.x(),
+ hit_rect_in_root_frame.x() + padding - viewport_width));
+ }
+ scroll.set_x(block_rect_in_root_frame.x());
+ scroll.set_y(block_rect_in_root_frame.y());
+ scale = ClampPageScaleFactorToLimits(scale);
+ scroll = MainFrameImpl()->GetFrameView()->RootFrameToDocument(scroll);
}
- scroll.set_x(rect.x());
- scroll.set_y(rect.y());
-
- scale = ClampPageScaleFactorToLimits(scale);
- scroll = MainFrameImpl()->GetFrameView()->RootFrameToDocument(scroll);
scroll =
GetPage()->GetVisualViewport().ClampDocumentOffsetAtScale(scroll, scale);
}
@@ -950,9 +968,9 @@ void WebViewImpl::AnimateDoubleTapZoom(const gfx::Point& point_in_root_frame,
float scale;
gfx::Point scroll;
-
+ gfx::Rect rect_in_root_frame(point_in_root_frame, gfx::Size(1, 1));
ComputeScaleAndScrollForBlockRect(
- point_in_root_frame, rect_to_zoom, touchPointPadding,
+ rect_in_root_frame, rect_to_zoom, touchPointPadding,
MinimumPageScaleFactor() * doubleTapZoomAlreadyLegibleRatio, scale,
scroll);
@@ -1007,7 +1025,7 @@ void WebViewImpl::ZoomToFindInPageRect(const gfx::Rect& rect_in_root_frame) {
float scale;
gfx::Point scroll;
- ComputeScaleAndScrollForBlockRect(rect_in_root_frame.origin(), block_bounds,
+ ComputeScaleAndScrollForBlockRect(rect_in_root_frame, block_bounds,
nonUserInitiatedPointPadding,
MinimumPageScaleFactor(), scale, scroll);
@@ -1905,6 +1923,10 @@ void WebView::ApplyWebPreferences(const web_pref::WebPreferences& prefs,
RuntimeEnabledFeatures::SetPaymentRequestEnabled(
prefs.payment_request_enabled);
+
+ if (prefs.api_based_fingerprinting_interventions_enabled) {
+ RuntimeEnabledFeatures::SetReduceScreenSizeEnabled(true);
+ }
}
void WebViewImpl::ThemeChanged() {
@@ -3838,35 +3860,6 @@ Element* WebViewImpl::FocusedElement() const {
return document->FocusedElement();
}
-WebHitTestResult WebViewImpl::HitTestResultForTap(
- const gfx::Point& tap_point_window_pos,
- const gfx::Size& tap_area) {
- auto* main_frame = DynamicTo(page_->MainFrame());
- if (!main_frame)
- return HitTestResult();
-
- WebGestureEvent tap_event(WebInputEvent::Type::kGestureTap,
- WebInputEvent::kNoModifiers, base::TimeTicks::Now(),
- WebGestureDevice::kTouchscreen);
- // GestureTap is only ever from a touchscreen.
- tap_event.SetPositionInWidget(gfx::PointF(tap_point_window_pos));
- tap_event.data.tap.tap_count = 1;
- tap_event.data.tap.width = tap_area.width();
- tap_event.data.tap.height = tap_area.height();
-
- WebGestureEvent scaled_event =
- TransformWebGestureEvent(MainFrameImpl()->GetFrameView(), tap_event);
-
- HitTestResult result =
- main_frame->GetEventHandler()
- .HitTestResultForGestureEvent(
- scaled_event, HitTestRequest::kReadOnly | HitTestRequest::kActive)
- .GetHitTestResult();
-
- result.SetToShadowHostIfInUAShadowRoot();
- return result;
-}
-
void WebViewImpl::SetTabsToLinks(bool enable) {
tabs_to_links_ = enable;
}
diff --git a/tools/under-control/src/third_party/blink/renderer/core/fetch/retry_options.idl b/tools/under-control/src/third_party/blink/renderer/core/fetch/retry_options.idl
index 2770904e..f0b60ae3 100755
--- a/tools/under-control/src/third_party/blink/renderer/core/fetch/retry_options.idl
+++ b/tools/under-control/src/third_party/blink/renderer/core/fetch/retry_options.idl
@@ -19,11 +19,10 @@ dictionary RetryOptions {
// A factor of 1.0 means fixed delay. Defaults to browser-configured value if not specified.
double? backoffFactor;
- // Optional: Maximum total time allowed for all retry attempts in milliseconds,
- // measured from when the first attempt fails. If this duration is exceeded,
- // no further retries will be made, even if maxAttempts has not been reached.
- // Defaults to browser-configured value if not specified.
- unsigned long? maxAge;
+ // Maximum total time allowed for all retry attempts in milliseconds, measure
+ // from when the first request starts. If this duration is exceeded, no further
+ // retries will be made, even if maxAttempts has not been reached.
+ required unsigned long maxAge;
// Optional: Controls whether the browser should continue attempting retries
// even after the originating document has been unloaded.
diff --git a/tools/under-control/src/third_party/blink/renderer/core/frame/window.idl b/tools/under-control/src/third_party/blink/renderer/core/frame/window.idl
index 1e47b0e2..32d02453 100755
--- a/tools/under-control/src/third_party/blink/renderer/core/frame/window.idl
+++ b/tools/under-control/src/third_party/blink/renderer/core/frame/window.idl
@@ -135,8 +135,8 @@
[HighEntropy=Direct, MeasureAs=WindowPageXOffset, Replaceable] readonly attribute double pageXOffset;
[HighEntropy=Direct, MeasureAs=WindowScrollY, Replaceable] readonly attribute double scrollY;
[HighEntropy=Direct, MeasureAs=WindowPageYOffset, Replaceable] readonly attribute double pageYOffset;
- void scroll(optional ScrollToOptions options = {});
- void scroll(unrestricted double x, unrestricted double y);
+ [ImplementedAs=scrollTo] void scroll(optional ScrollToOptions options = {});
+ [ImplementedAs=scrollTo] void scroll(unrestricted double x, unrestricted double y);
void scrollTo(optional ScrollToOptions options = {});
void scrollTo(unrestricted double x, unrestricted double y);
void scrollBy(optional ScrollToOptions options = {});
diff --git a/tools/under-control/src/third_party/blink/renderer/core/highlight/highlight_hit_result.idl b/tools/under-control/src/third_party/blink/renderer/core/highlight/highlight_hit_result.idl
new file mode 100755
index 00000000..7368bb5c
--- /dev/null
+++ b/tools/under-control/src/third_party/blink/renderer/core/highlight/highlight_hit_result.idl
@@ -0,0 +1,8 @@
+// Copyright 2025 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+dictionary HighlightHitResult {
+ Highlight highlight;
+ sequence ranges;
+};
\ No newline at end of file
diff --git a/tools/under-control/src/third_party/blink/renderer/core/highlight/highlight_registry.idl b/tools/under-control/src/third_party/blink/renderer/core/highlight/highlight_registry.idl
index fcd61e44..0e580df5 100755
--- a/tools/under-control/src/third_party/blink/renderer/core/highlight/highlight_registry.idl
+++ b/tools/under-control/src/third_party/blink/renderer/core/highlight/highlight_registry.idl
@@ -12,7 +12,7 @@
// shadow trees if the shadow root is passed in as part of the |options|
// parameter.
[RuntimeEnabled=HighlightsFromPoint]
- sequence highlightsFromPoint(
+ sequence highlightsFromPoint(
float x,
float y,
optional HighlightsFromPointOptions options = {});
diff --git a/tools/under-control/src/third_party/blink/renderer/core/html/canvas/html_canvas_element.idl b/tools/under-control/src/third_party/blink/renderer/core/html/canvas/html_canvas_element.idl
index 489b1c80..86a02053 100755
--- a/tools/under-control/src/third_party/blink/renderer/core/html/canvas/html_canvas_element.idl
+++ b/tools/under-control/src/third_party/blink/renderer/core/html/canvas/html_canvas_element.idl
@@ -24,6 +24,18 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+dictionary CanvasHitTestRect {
+ double x;
+ double y;
+ double? width;
+ double? height;
+};
+
+dictionary CanvasElementHitTestRegion {
+ Element element;
+ CanvasHitTestRect rect;
+};
+
// https://html.spec.whatwg.org/C/canvas.html#htmlcanvaselement
[
Exposed=Window,
diff --git a/tools/under-control/src/third_party/blink/renderer/core/html/html_element.idl b/tools/under-control/src/third_party/blink/renderer/core/html/html_element.idl
index 2075667c..25305b06 100755
--- a/tools/under-control/src/third_party/blink/renderer/core/html/html_element.idl
+++ b/tools/under-control/src/third_party/blink/renderer/core/html/html_element.idl
@@ -59,6 +59,7 @@
// CSSOM View Module
// https://drafts.csswg.org/cssom-view/#extensions-to-the-htmlelement-interface
+ [RuntimeEnabled=HTMLElementScrollParent, ImplementedAs=unclosedScrollParent] readonly attribute Element? scrollParent;
[PerWorldBindings, ImplementedAs=unclosedOffsetParent] readonly attribute Element? offsetParent;
[ImplementedAs=offsetTopForBinding] readonly attribute long offsetTop;
[ImplementedAs=offsetLeftForBinding] readonly attribute long offsetLeft;
diff --git a/tools/under-control/src/third_party/blink/renderer/core/html/html_menu_item_element.idl b/tools/under-control/src/third_party/blink/renderer/core/html/html_menu_item_element.idl
index 8cb2568c..ad0afdc4 100755
--- a/tools/under-control/src/third_party/blink/renderer/core/html/html_menu_item_element.idl
+++ b/tools/under-control/src/third_party/blink/renderer/core/html/html_menu_item_element.idl
@@ -8,6 +8,9 @@
RuntimeEnabled=MenuElements
] interface HTMLMenuItemElement : HTMLElement {
[CEReactions, Reflect] attribute boolean disabled;
- [CEReactions, Reflect=checked] attribute boolean defaultChecked;
- [ImplementedAs=Checked] attribute boolean checked;
+ [CEReactions] attribute boolean checked;
+
+ // Command Invokers
+ [RuntimeEnabled=HTMLCommandAttributes, CEReactions, Reflect=commandfor] attribute Element? commandForElement;
+ [RuntimeEnabled=HTMLCommandAttributes, CEReactions] attribute DOMString command;
};
diff --git a/tools/under-control/src/third_party/blink/renderer/core/streams/readable_stream_byob_reader.idl b/tools/under-control/src/third_party/blink/renderer/core/streams/readable_stream_byob_reader.idl
index fee1494d..6af0c213 100755
--- a/tools/under-control/src/third_party/blink/renderer/core/streams/readable_stream_byob_reader.idl
+++ b/tools/under-control/src/third_party/blink/renderer/core/streams/readable_stream_byob_reader.idl
@@ -8,7 +8,8 @@
] interface ReadableStreamBYOBReader {
[CallWith=ScriptState, RaisesException] constructor(ReadableStream stream);
- [CallWith=ScriptState, RaisesException] Promise read(ArrayBufferView view);
+ [CallWith=ScriptState, RaisesException] Promise read(ArrayBufferView view, optional ReadableStreamBYOBReaderReadOptions options = {});
+
[CallWith=ScriptState, RaisesException] void releaseLock();
};
diff --git a/tools/under-control/src/third_party/blink/renderer/core/streams/readable_stream_byob_reader_read_options.idl b/tools/under-control/src/third_party/blink/renderer/core/streams/readable_stream_byob_reader_read_options.idl
new file mode 100755
index 00000000..33043399
--- /dev/null
+++ b/tools/under-control/src/third_party/blink/renderer/core/streams/readable_stream_byob_reader_read_options.idl
@@ -0,0 +1,9 @@
+// Copyright 2025 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// https://streams.spec.whatwg.org/#dictdef-readablestreambyobreaderreadoptions
+
+dictionary ReadableStreamBYOBReaderReadOptions {
+ [EnforceRange] unsigned long long min = 1;
+};
diff --git a/tools/under-control/src/third_party/blink/renderer/core/testing/internals.idl b/tools/under-control/src/third_party/blink/renderer/core/testing/internals.idl
index 9252f262..9b0731c8 100755
--- a/tools/under-control/src/third_party/blink/renderer/core/testing/internals.idl
+++ b/tools/under-control/src/third_party/blink/renderer/core/testing/internals.idl
@@ -325,7 +325,7 @@ interface Internals {
unsigned long canvasFontCacheMaxFonts();
void forceLoseCanvasContext(CanvasRenderingContext2D ctx);
void forceLoseCanvasContext(OffscreenCanvasRenderingContext2D ctx);
- void disableCanvasAcceleration(HTMLCanvasElement canvas);
+ void disableCanvasAccelerationForCanvas2D(HTMLCanvasElement canvas);
boolean isCanvasImageSourceAccelerated(HTMLCanvasElement imageSource);
boolean isCanvasImageSourceAccelerated(OffscreenCanvas imageSource);
diff --git a/tools/under-control/src/third_party/blink/renderer/core/timing/interaction_contentful_paint.idl b/tools/under-control/src/third_party/blink/renderer/core/timing/interaction_contentful_paint.idl
new file mode 100755
index 00000000..2e3e7be6
--- /dev/null
+++ b/tools/under-control/src/third_party/blink/renderer/core/timing/interaction_contentful_paint.idl
@@ -0,0 +1,18 @@
+// Copyright 2025 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// https://github.com/WICG/soft-navigations
+[Exposed=Window, RuntimeEnabled=SoftNavigationHeuristics]
+interface InteractionContentfulPaint : PerformanceEntry {
+ readonly attribute DOMHighResTimeStamp renderTime;
+ readonly attribute DOMHighResTimeStamp loadTime;
+ readonly attribute unsigned long long size;
+ readonly attribute DOMString id;
+ readonly attribute DOMString url;
+ readonly attribute Element? element;
+
+ [CallWith=ScriptState, ImplementedAs=toJSONForBinding] object toJSON();
+};
+
+InteractionContentfulPaint includes PaintTimingMixin;
diff --git a/tools/under-control/src/third_party/blink/renderer/core/timing/performance.idl b/tools/under-control/src/third_party/blink/renderer/core/timing/performance.idl
index 082305b5..11c4cec1 100755
--- a/tools/under-control/src/third_party/blink/renderer/core/timing/performance.idl
+++ b/tools/under-control/src/third_party/blink/renderer/core/timing/performance.idl
@@ -74,9 +74,6 @@ interface Performance : EventTarget {
[Exposed=Window, SameObject, SaveSameObject] readonly attribute EventCounts eventCounts;
[Exposed=Window, RuntimeEnabled=EventTimingInteractionCount] readonly attribute unsigned long long interactionCount;
- // TODO(https://crbug.com/1457049): remove this once visited links are partitioned.
- [RuntimeEnabled=SoftNavigationHeuristicsExposeFPAndFCP] readonly attribute boolean softNavPaintMetricsSupported;
-
[Exposed=Window, RuntimeEnabled=UserDefinedEntryPointTiming] Function bind(Function innerFunction, optional any thisArg, any... args);
[CallWith=ScriptState, ImplementedAs=toJSONForBinding] object toJSON();
diff --git a/tools/under-control/src/third_party/blink/renderer/core/timing/performance_resource_timing.idl b/tools/under-control/src/third_party/blink/renderer/core/timing/performance_resource_timing.idl
index 0b7cfacc..924fb62e 100755
--- a/tools/under-control/src/third_party/blink/renderer/core/timing/performance_resource_timing.idl
+++ b/tools/under-control/src/third_party/blink/renderer/core/timing/performance_resource_timing.idl
@@ -86,5 +86,10 @@ interface PerformanceResourceTiming : PerformanceEntry {
readonly attribute DOMHighResTimeStamp finalResponseHeadersStart;
readonly attribute DOMHighResTimeStamp firstInterimResponseStart;
+ // PerformanceResourceTiming#initiatorUrl
+ // see: https://github.com/MicrosoftEdge/MSEdgeExplainers/blob/main/ResourceTimingInitiatorInfo/explainer.md
+ [RuntimeEnabled=ResourceTimingInitiator]
+ readonly attribute DOMString initiatorUrl;
+
[CallWith=ScriptState, ImplementedAs=toJSONForBinding] object toJSON();
};
diff --git a/tools/under-control/src/third_party/blink/renderer/core/timing/soft_navigation_entry.idl b/tools/under-control/src/third_party/blink/renderer/core/timing/soft_navigation_entry.idl
index 8f0ba420..b3a47acf 100755
--- a/tools/under-control/src/third_party/blink/renderer/core/timing/soft_navigation_entry.idl
+++ b/tools/under-control/src/third_party/blink/renderer/core/timing/soft_navigation_entry.idl
@@ -6,3 +6,4 @@
interface SoftNavigationEntry : PerformanceEntry {
};
+SoftNavigationEntry includes PaintTimingMixin;
diff --git a/tools/under-control/src/third_party/blink/renderer/core/url_pattern/url_pattern.idl b/tools/under-control/src/third_party/blink/renderer/core/url_pattern/url_pattern.idl
index 437195f1..a6dd54cf 100755
--- a/tools/under-control/src/third_party/blink/renderer/core/url_pattern/url_pattern.idl
+++ b/tools/under-control/src/third_party/blink/renderer/core/url_pattern/url_pattern.idl
@@ -24,6 +24,9 @@ enum URLPatternComponent { "protocol", "username", "password", "hostname",
[RaisesException, CallWith=ScriptState, Measure]
URLPatternResult? exec(optional URLPatternInput input = {}, optional USVString baseURL);
+ [RuntimeEnabled=URLPatternGenerate, RaisesException, Measure]
+ USVString generate(URLPatternComponent component, record groups);
+
readonly attribute USVString protocol;
readonly attribute USVString username;
readonly attribute USVString password;
diff --git a/tools/under-control/src/third_party/blink/renderer/modules/ai/language_model.idl b/tools/under-control/src/third_party/blink/renderer/modules/ai/language_model.idl
index 3bdfcb31..adda8048 100755
--- a/tools/under-control/src/third_party/blink/renderer/modules/ai/language_model.idl
+++ b/tools/under-control/src/third_party/blink/renderer/modules/ai/language_model.idl
@@ -10,6 +10,7 @@ dictionary LanguageModelCloneOptions {
dictionary LanguageModelPromptOptions {
object responseConstraint;
+ boolean omitResponseConstraintInput = false;
AbortSignal signal;
};
diff --git a/tools/under-control/src/third_party/blink/renderer/modules/ai/language_model_create_options.idl b/tools/under-control/src/third_party/blink/renderer/modules/ai/language_model_create_options.idl
index 462f0b35..2f457156 100755
--- a/tools/under-control/src/third_party/blink/renderer/modules/ai/language_model_create_options.idl
+++ b/tools/under-control/src/third_party/blink/renderer/modules/ai/language_model_create_options.idl
@@ -16,6 +16,9 @@ dictionary LanguageModelMessage {
// The DOMString branch is shorthand for `[{ type: "text", value: providedValue }]`
required (DOMString or sequence) content;
+
+ // Whether this message is an assistant response prefix.
+ boolean prefix = false;
};
dictionary LanguageModelMessageContent {
@@ -23,9 +26,13 @@ dictionary LanguageModelMessageContent {
required LanguageModelMessageValue value;
};
+// LINT.IfChange
enum LanguageModelMessageRole { "system", "user", "assistant" };
+// LINT.ThenChange(//third_party/blink/renderer/modules/ai/ai_metrics.h:LanguageModelInputRole)
+// LINT.IfChange
enum LanguageModelMessageType { "text", "image", "audio" };
+// LINT.ThenChange(//third_party/blink/renderer/modules/ai/ai_metrics.h:LanguageModelInputType)
typedef (
ImageBitmapSource
diff --git a/tools/under-control/src/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.idl b/tools/under-control/src/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.idl
index a618c35b..db9fb916 100755
--- a/tools/under-control/src/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.idl
+++ b/tools/under-control/src/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.idl
@@ -61,6 +61,9 @@ interface CanvasRenderingContext2D {
void drawElement(Element element, unrestricted double x, unrestricted double y,
unrestricted double dwidth, unrestricted double dheight);
+ [RuntimeEnabled=CanvasDrawElement, RaisesException]
+ void setHitTestRegions(sequence hitTestRegions);
+
[MeasureAs=GetCanvas2DContextAttributes] CanvasRenderingContext2DSettings getContextAttributes();
};
diff --git a/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/payment_credential_instrument.idl b/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/payment_credential_instrument.idl
index 1466f3ab..ac32300d 100755
--- a/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/payment_credential_instrument.idl
+++ b/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/payment_credential_instrument.idl
@@ -8,4 +8,5 @@ dictionary PaymentCredentialInstrument {
required USVString displayName;
required USVString icon;
boolean iconMustBeShown = true;
+ [RuntimeEnabled=SecurePaymentConfirmationUxRefresh] USVString details;
};
diff --git a/tools/under-control/src/third_party/blink/renderer/modules/indexeddb/idb_get_all_records_options.idl b/tools/under-control/src/third_party/blink/renderer/modules/indexeddb/idb_get_all_options.idl
similarity index 73%
rename from tools/under-control/src/third_party/blink/renderer/modules/indexeddb/idb_get_all_records_options.idl
rename to tools/under-control/src/third_party/blink/renderer/modules/indexeddb/idb_get_all_options.idl
index 5a0c218f..36a86836 100755
--- a/tools/under-control/src/third_party/blink/renderer/modules/indexeddb/idb_get_all_records_options.idl
+++ b/tools/under-control/src/third_party/blink/renderer/modules/indexeddb/idb_get_all_options.idl
@@ -1,8 +1,8 @@
-// Copyright 2024 The Chromium Authors
+// Copyright 2025 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-dictionary IDBGetAllRecordsOptions {
+dictionary IDBGetAllOptions {
any query = null;
[EnforceRange] unsigned long count;
IDBCursorDirection direction = "next";
diff --git a/tools/under-control/src/third_party/blink/renderer/modules/indexeddb/idb_index.idl b/tools/under-control/src/third_party/blink/renderer/modules/indexeddb/idb_index.idl
index 4d190b09..43abad80 100755
--- a/tools/under-control/src/third_party/blink/renderer/modules/indexeddb/idb_index.idl
+++ b/tools/under-control/src/third_party/blink/renderer/modules/indexeddb/idb_index.idl
@@ -36,9 +36,10 @@
[NewObject, CallWith=ScriptState, RaisesException] IDBRequest get(any key);
[NewObject, CallWith=ScriptState, RaisesException] IDBRequest getKey(any key);
- [NewObject, CallWith=ScriptState, RaisesException] IDBRequest getAll(optional any query = null,
+
+ [NewObject, CallWith=ScriptState, RaisesException] IDBRequest getAll(optional any query_or_options = null,
optional [EnforceRange] unsigned long count);
- [NewObject, CallWith=ScriptState, RaisesException] IDBRequest getAllKeys(optional any query = null,
+ [NewObject, CallWith=ScriptState, RaisesException] IDBRequest getAllKeys(optional any query_or_options = null,
optional [EnforceRange] unsigned long count);
[NewObject, CallWith=ScriptState, RaisesException] IDBRequest count(optional any key = null);
@@ -48,5 +49,5 @@
optional IDBCursorDirection direction = "next");
[RuntimeEnabled=IndexedDbGetAllRecords, NewObject, CallWith=ScriptState, RaisesException]
- IDBRequest getAllRecords(optional IDBGetAllRecordsOptions options = {});
+ IDBRequest getAllRecords(optional IDBGetAllOptions options = {});
};
diff --git a/tools/under-control/src/third_party/blink/renderer/modules/indexeddb/idb_object_store.idl b/tools/under-control/src/third_party/blink/renderer/modules/indexeddb/idb_object_store.idl
index 6863bd31..42bd90b8 100755
--- a/tools/under-control/src/third_party/blink/renderer/modules/indexeddb/idb_object_store.idl
+++ b/tools/under-control/src/third_party/blink/renderer/modules/indexeddb/idb_object_store.idl
@@ -58,15 +58,15 @@
IDBRequest getKey(any key);
[CallWith=ScriptState, MeasureAs=IndexedDBRead, NewObject, RaisesException]
- IDBRequest getAll(optional any query = null,
+ IDBRequest getAll(optional any query_or_options = null,
optional [EnforceRange] unsigned long count);
[CallWith=ScriptState, MeasureAs=IndexedDBRead, NewObject, RaisesException]
- IDBRequest getAllKeys(optional any query = null,
+ IDBRequest getAllKeys(optional any query_or_options = null,
optional [EnforceRange] unsigned long count);
[RuntimeEnabled=IndexedDbGetAllRecords, CallWith=ScriptState, MeasureAs=IndexedDBRead, NewObject, RaisesException]
- IDBRequest getAllRecords(optional IDBGetAllRecordsOptions options = {});
+ IDBRequest getAllRecords(optional IDBGetAllOptions options = {});
[CallWith=ScriptState, MeasureAs=IndexedDBRead, NewObject, RaisesException]
IDBRequest count(optional any key = null);
diff --git a/tools/under-control/src/third_party/blink/renderer/modules/ml/ml_context.idl b/tools/under-control/src/third_party/blink/renderer/modules/ml/ml_context.idl
index 0649d864..d8081307 100755
--- a/tools/under-control/src/third_party/blink/renderer/modules/ml/ml_context.idl
+++ b/tools/under-control/src/third_party/blink/renderer/modules/ml/ml_context.idl
@@ -340,12 +340,9 @@ typedef record MLNamedTensors;
CallWith=ScriptState
] MLOpSupportLimits opSupportLimits();
- // TODO(crbug.com/345352987): remove device once MLContext(gpuDevice) is
- // implemented.
[
RuntimeEnabled=MachineLearningNeuralNetwork,
CallWith=ScriptState,
RaisesException
- ] Promise exportToGPU(
- GPUDevice device, MLTensor tensor);
+ ] Promise exportToGPU(MLTensor tensor);
};
diff --git a/tools/under-control/src/third_party/blink/renderer/modules/payments/payment_entity_logo.idl b/tools/under-control/src/third_party/blink/renderer/modules/payments/payment_entity_logo.idl
new file mode 100755
index 00000000..a1e6f8f1
--- /dev/null
+++ b/tools/under-control/src/third_party/blink/renderer/modules/payments/payment_entity_logo.idl
@@ -0,0 +1,9 @@
+// Copyright 2025 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// https://w3c.github.io/secure-payment-confirmation/#sctn-paymententitylogo-dictionary
+dictionary PaymentEntityLogo {
+ required USVString url;
+ required USVString label;
+};
diff --git a/tools/under-control/src/third_party/blink/renderer/modules/payments/secure_payment_confirmation_request.idl b/tools/under-control/src/third_party/blink/renderer/modules/payments/secure_payment_confirmation_request.idl
index d9e6a5da..453e2fb6 100755
--- a/tools/under-control/src/third_party/blink/renderer/modules/payments/secure_payment_confirmation_request.idl
+++ b/tools/under-control/src/third_party/blink/renderer/modules/payments/secure_payment_confirmation_request.idl
@@ -24,8 +24,16 @@ dictionary SecurePaymentConfirmationRequest {
// were to launch this we should find a non-card specific way to encode
// this information in the SecurePaymentConfirmationRequest, or better
// encapsulate it into a single sub-dictionary.
+ //
+ // Note: These parameters are deprecated in favour of
+ // |paymentEntitiesLogos|, but are being kept for now to support partner
+ // testing while the updated API is in development.
[RuntimeEnabled=SecurePaymentConfirmationNetworkAndIssuerIcons] NetworkOrIssuerInformation networkInfo;
[RuntimeEnabled=SecurePaymentConfirmationNetworkAndIssuerIcons] NetworkOrIssuerInformation issuerInfo;
+
+ // A list of logos representing entities that are facilitating the payment
+ // that this SPC call is for.
+ [RuntimeEnabled=SecurePaymentConfirmationUxRefresh] sequence paymentEntitiesLogos;
};
dictionary NetworkOrIssuerInformation {
diff --git a/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_encoded_audio_frame_metadata.idl b/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_encoded_audio_frame_metadata.idl
index ee7eb8de..41092e69 100755
--- a/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_encoded_audio_frame_metadata.idl
+++ b/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_encoded_audio_frame_metadata.idl
@@ -15,4 +15,5 @@ dictionary RTCEncodedAudioFrameMetadata {
[RuntimeEnabled=RTCEncodedFrameTimestamps] DOMHighResTimeStamp receiveTime;
[RuntimeEnabled=RTCEncodedFrameTimestamps] DOMHighResTimeStamp captureTime;
[RuntimeEnabled=RTCEncodedFrameTimestamps] DOMHighResTimeStamp senderCaptureTimeOffset;
+ [RuntimeEnabled=RTCEncodedFrameAudioLevel] double audioLevel;
};
diff --git a/tools/under-control/src/third_party/blink/renderer/modules/speech/speech_grammar.idl b/tools/under-control/src/third_party/blink/renderer/modules/speech/speech_grammar.idl
index 0b86587e..62f0c041 100755
--- a/tools/under-control/src/third_party/blink/renderer/modules/speech/speech_grammar.idl
+++ b/tools/under-control/src/third_party/blink/renderer/modules/speech/speech_grammar.idl
@@ -29,7 +29,7 @@
LegacyWindowAlias=webkitSpeechGrammar,
LegacyWindowAlias_Measure,
LegacyWindowAlias_RuntimeEnabled=ScriptedSpeechRecognition,
- LegacyNoInterfaceObject
+ Exposed=Window, RuntimeEnabled=UnprefixedSpeechRecognition
] interface SpeechGrammar {
[Measure] constructor();
[URL,CallWith=ScriptState] attribute DOMString src;
diff --git a/tools/under-control/src/third_party/blink/renderer/modules/speech/speech_grammar_list.idl b/tools/under-control/src/third_party/blink/renderer/modules/speech/speech_grammar_list.idl
index 41acd6c6..af54d020 100755
--- a/tools/under-control/src/third_party/blink/renderer/modules/speech/speech_grammar_list.idl
+++ b/tools/under-control/src/third_party/blink/renderer/modules/speech/speech_grammar_list.idl
@@ -29,7 +29,7 @@
LegacyWindowAlias=webkitSpeechGrammarList,
LegacyWindowAlias_Measure,
LegacyWindowAlias_RuntimeEnabled=ScriptedSpeechRecognition,
- LegacyNoInterfaceObject
+ Exposed=Window, RuntimeEnabled=UnprefixedSpeechRecognition
] interface SpeechGrammarList {
[Measure] constructor();
readonly attribute unsigned long length;
diff --git a/tools/under-control/src/third_party/blink/renderer/modules/speech/speech_recognition.idl b/tools/under-control/src/third_party/blink/renderer/modules/speech/speech_recognition.idl
index ebe12b78..7f3d0402 100755
--- a/tools/under-control/src/third_party/blink/renderer/modules/speech/speech_recognition.idl
+++ b/tools/under-control/src/third_party/blink/renderer/modules/speech/speech_recognition.idl
@@ -25,19 +25,6 @@
// https://w3c.github.io/speech-api/#speechrecognition
-enum SpeechRecognitionMode {
- // On-device speech recognition if available, otherwise use Cloud speech
- // recognition as a fallback.
- "ondevice-preferred",
-
- // On-device speech recognition only. Throws a language-not-supported error
- // if on-device speech recognition is not available for the given language.
- "ondevice-only",
-
- // Cloud speech recognition only.
- "cloud-only",
-};
-
enum AvailabilityStatus {
// On-device speech recognition is not supported.
"unavailable",
@@ -52,12 +39,17 @@ enum AvailabilityStatus {
"available",
};
+dictionary SpeechRecognitionOptions {
+ required sequence langs; // BCP-47 language tags
+ boolean processLocally = false; // Instructs the recognition to be performed on-device. If `false` (default), any available recognition method may be used.
+};
+
[
ActiveScriptWrappable,
LegacyWindowAlias=webkitSpeechRecognition,
LegacyWindowAlias_Measure,
LegacyWindowAlias_RuntimeEnabled=ScriptedSpeechRecognition,
- LegacyNoInterfaceObject
+ Exposed=Window, RuntimeEnabled=UnprefixedSpeechRecognition
] interface SpeechRecognition : EventTarget {
[CallWith=ExecutionContext, Measure] constructor();
// recognition parameters
@@ -66,7 +58,7 @@ enum AvailabilityStatus {
attribute boolean continuous;
attribute boolean interimResults;
attribute unsigned long maxAlternatives;
- [RuntimeEnabled=OnDeviceWebSpeechAvailable] attribute SpeechRecognitionMode mode;
+ [RuntimeEnabled=OnDeviceWebSpeechAvailable] attribute boolean processLocally;
[RuntimeEnabled=WebSpeechRecognitionContext] attribute SpeechRecognitionPhraseList phrases;
// methods to drive the speech interaction
@@ -78,12 +70,12 @@ enum AvailabilityStatus {
CallWith=ScriptState,
RaisesException,
RuntimeEnabled=OnDeviceWebSpeechAvailable
- ] static Promise availableOnDevice(DOMString lang);
+ ] static Promise available(SpeechRecognitionOptions options);
[
CallWith=ScriptState,
RaisesException,
RuntimeEnabled=InstallOnDeviceSpeechRecognition
- ] static Promise installOnDevice(DOMString lang);
+ ] static Promise install(SpeechRecognitionOptions options);
// event methods
attribute EventHandler onaudiostart;
diff --git a/tools/under-control/src/third_party/blink/renderer/modules/speech/speech_recognition_error_event.idl b/tools/under-control/src/third_party/blink/renderer/modules/speech/speech_recognition_error_event.idl
index b75869f0..c12f7c20 100755
--- a/tools/under-control/src/third_party/blink/renderer/modules/speech/speech_recognition_error_event.idl
+++ b/tools/under-control/src/third_party/blink/renderer/modules/speech/speech_recognition_error_event.idl
@@ -29,7 +29,7 @@
LegacyWindowAlias=webkitSpeechRecognitionError,
LegacyWindowAlias_Measure,
LegacyWindowAlias_RuntimeEnabled=ScriptedSpeechRecognition,
- LegacyNoInterfaceObject
+ Exposed=Window, RuntimeEnabled=UnprefixedSpeechRecognition
] interface SpeechRecognitionErrorEvent : Event {
constructor(DOMString type, optional SpeechRecognitionErrorEventInit eventInitDict = {});
readonly attribute DOMString error;
diff --git a/tools/under-control/src/third_party/blink/renderer/modules/speech/speech_recognition_event.idl b/tools/under-control/src/third_party/blink/renderer/modules/speech/speech_recognition_event.idl
index c06bb2e5..1d85c6ff 100755
--- a/tools/under-control/src/third_party/blink/renderer/modules/speech/speech_recognition_event.idl
+++ b/tools/under-control/src/third_party/blink/renderer/modules/speech/speech_recognition_event.idl
@@ -29,7 +29,7 @@
LegacyWindowAlias=webkitSpeechRecognitionEvent,
LegacyWindowAlias_Measure,
LegacyWindowAlias_RuntimeEnabled=ScriptedSpeechRecognition,
- LegacyNoInterfaceObject
+ Exposed=Window, RuntimeEnabled=UnprefixedSpeechRecognition
] interface SpeechRecognitionEvent : Event {
constructor(DOMString type, optional SpeechRecognitionEventInit initDict = {});
readonly attribute unsigned long resultIndex;
diff --git a/tools/under-control/src/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.idl b/tools/under-control/src/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.idl
index eaddade6..60201523 100755
--- a/tools/under-control/src/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.idl
+++ b/tools/under-control/src/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.idl
@@ -645,10 +645,13 @@ interface mixin WebGLRenderingContextBase {
GLenum target, GLint level, GLint internalformat,
GLenum format, GLenum type, VideoFrame frame);
- [RuntimeEnabled=CanvasDrawElement, CallWith=ScriptState, RaisesException]
+ [RuntimeEnabled=CanvasDrawElement, RaisesException]
void texElement2D(GLenum target, GLint level, GLint internalformat,
GLenum format, GLenum type, Element element);
+ [RuntimeEnabled=CanvasDrawElement, RaisesException]
+ void setHitTestRegions(sequence hitTestRegions);
+
void texSubImage2D(
GLenum target, GLint level, GLint xoffset, GLint yoffset,
GLsizei width, GLsizei height, GLenum format, GLenum type,
diff --git a/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_bind_group_layout_entry.idl b/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_bind_group_layout_entry.idl
index 62bda500..bd8cac5d 100755
--- a/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_bind_group_layout_entry.idl
+++ b/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_bind_group_layout_entry.idl
@@ -3,6 +3,7 @@
dictionary GPUBindGroupLayoutEntry {
required GPUIndex32 binding;
required GPUShaderStageFlags visibility;
+ [RuntimeEnabled=WebGPUExperimentalFeatures] GPUSize32 bindingArraySize = 1;
GPUBufferBindingLayout buffer;
GPUSamplerBindingLayout sampler;
diff --git a/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_request_adapter_options.idl b/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_request_adapter_options.idl
index cdada82e..b0aaf57f 100755
--- a/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_request_adapter_options.idl
+++ b/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_request_adapter_options.idl
@@ -10,7 +10,7 @@ enum GPUPowerPreference {
};
dictionary GPURequestAdapterOptions {
- [RuntimeEnabled=WebGPUFeatureLevel] DOMString featureLevel = "core";
+ [RuntimeEnabled=WebGPUCompatibilityMode] DOMString featureLevel = "core";
GPUPowerPreference powerPreference;
boolean forceFallbackAdapter = false;
[RuntimeEnabled=WebXRGPUBinding] boolean xrCompatible = false;
diff --git a/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_supported_features.idl b/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_supported_features.idl
index e5581418..21027100 100755
--- a/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_supported_features.idl
+++ b/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_supported_features.idl
@@ -5,6 +5,7 @@
// https://gpuweb.github.io/gpuweb/
enum GPUFeatureName {
+ "core-features-and-limits",
"depth-clip-control",
"depth32float-stencil8",
"texture-compression-bc",
@@ -22,7 +23,6 @@ enum GPUFeatureName {
"clip-distances",
"dual-source-blending",
"subgroups",
- "core-features-and-limits",
// Non-standard (not currently in the spec).
"chromium-experimental-timestamp-query-inside-passes",
diff --git a/tools/under-control/src/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/tools/under-control/src/third_party/blink/renderer/platform/runtime_enabled_features.json5
index 7b24b556..9cbf970b 100755
--- a/tools/under-control/src/third_party/blink/renderer/platform/runtime_enabled_features.json5
+++ b/tools/under-control/src/third_party/blink/renderer/platform/runtime_enabled_features.json5
@@ -303,11 +303,6 @@
name: "AdjustEndOfNextParagraphIfMovedParagraphIsUpdated",
status: "stable",
},
- // See crbug.com/41115285
- {
- name: "AdjustStartOfParagraphToMoveDuringIndent",
- status: "stable",
- },
{
name: "AdTagging",
public: true,
@@ -327,6 +322,9 @@
"Linux": "experimental",
"default": "",
},
+ origin_trial_feature_name: "AIPromptAPIMultimodalInput",
+ origin_trial_os: ["win", "mac", "linux"],
+ origin_trial_allows_third_party: true,
implied_by: ["AIPromptAPIMultimodalInput"],
},
{
@@ -352,6 +350,11 @@
"Linux": "experimental",
"default": "",
},
+ origin_trial_feature_name: "AIPromptAPIMultimodalInput",
+ origin_trial_os: ["win", "mac", "linux"],
+ origin_trial_allows_third_party: true,
+ base_feature_status: "enabled",
+ copied_from_base_feature_if: "overridden",
},
{
// Gates access to the responseConstraint enhancement for "AIPromptAPI".
@@ -372,6 +375,7 @@
"default": "",
},
origin_trial_feature_name: "AIRewriterAPI",
+ origin_trial_os: ["win", "mac", "linux"],
origin_trial_allows_third_party: true,
base_feature_status: "enabled",
copied_from_base_feature_if: "overridden",
@@ -388,10 +392,6 @@
"Linux": "stable",
"default": "",
},
- origin_trial_feature_name: "AISummarizationAPI",
- origin_trial_allows_third_party: true,
- base_feature_status: "enabled",
- copied_from_base_feature_if: "overridden",
},
{
name: "AISummarizationAPIForWorkers",
@@ -406,6 +406,7 @@
"default": "",
},
origin_trial_feature_name: "AIWriterAPI",
+ origin_trial_os: ["win", "mac", "linux"],
origin_trial_allows_third_party: true,
base_feature_status: "enabled",
copied_from_base_feature_if: "overridden",
@@ -414,6 +415,10 @@
name: "AIWriterAPIForWorkers",
public: true,
},
+ {
+ name: "AlignZoomToCenter",
+ status: "stable",
+ },
{
name: "AllowContentInitiatedDataUrlNavigations",
base_feature: "none",
@@ -477,7 +482,7 @@
{
// https://drafts.csswg.org/web-animations-2/#triggers
name: "AnimationTrigger",
- status: "test",
+ status: "experimental",
},
{
name: "AnimationWorklet",
@@ -526,15 +531,6 @@
// network service.
name: "AsyncSetCookie",
},
- // This flag specifically guards live Range (and by extension, selection)
- // preservation for atomic move (`moveBefore()`). This is not part of the
- // launching proposal, per discussion in
- // https://github.com/whatwg/dom/pull/1307, but because it could come later
- // and was already mostly implemented, we flag-guard the implementation for
- // later use.
- {
- name: "AtomicMoveRangePreservation",
- },
{
name: "AttributionReporting",
status: "stable",
@@ -562,8 +558,10 @@
},
{
name: "AudioOutputDevices",
- // Android does not yet support switching of audio output devices
+ // Android support for switching audio output devices is not stable
status: {"Android": "", "default": "stable"},
+ public: true,
+ base_feature: "none"
},
{
name: "AudioVideoTracks",
@@ -717,13 +715,14 @@
name: "BuiltInAIAPI",
status: "experimental",
base_feature_status: "enabled",
- // A origin trial is feature is required for the build to success.
- // The feature reuses the AISummarizationAPI. Any other origin trial
+ // An OT feature name is required to satisfy `implied_by` build checks.
+ // The feature reuses AIPromptAPIMultimodalInput, but any origin trial
// features in the `implied_by` list will enable this feature as well.
- origin_trial_feature_name: "AISummarizationAPI",
+ origin_trial_feature_name: "AIPromptAPIMultimodalInput",
copied_from_base_feature_if: "overridden",
implied_by: [
"AIPromptAPI",
+ "AIPromptAPIMultimodalInput",
"AIRewriterAPI",
"AISummarizationAPI",
"AIWriterAPI",
@@ -893,12 +892,6 @@
name: "ClearPopoverInvokerAfterBeforeToggle",
status: "stable",
},
- // crbug.com/40851596: Send click to the capture pointer target instead of
- // the common ancestor of pointerdown and pointerup targets.
- {
- name: "ClickToCapturedPointer",
- status: "stable",
- },
{
// Allows top-level sites to restrict collection of high-entropy UA client
// hints (from 3Ps, or itself) via the getHighEntropyValues API.
@@ -941,6 +934,10 @@
name: "ClipboardSnapshotResetOnWrite",
status: "stable",
},
+ {
+ name: "ClipElementVisibleBoundsInLocalRoot",
+ status: "stable",
+ },
{
name: "ClipPathNestedRasterOptimization",
status: "stable",
@@ -1077,13 +1074,6 @@
origin_trial_feature_name: "CoopRestrictProperties",
base_feature: "none",
},
- {
- // crbug.com/40258893
- // Update UA styles for lists to match HTML spec. This was added in M135
- // and can be removed after M138.
- name: "CorrectStylesForLists",
- status: "stable",
- },
{
// Corrects the handling of