diff --git a/tools/under-control/src/RELEASE b/tools/under-control/src/RELEASE index 9907944f..9b55e2ae 100644 --- a/tools/under-control/src/RELEASE +++ b/tools/under-control/src/RELEASE @@ -1 +1 @@ -143.0.7499.110 +144.0.7559.76 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 759cc12f..093dadfd 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 @@ -10,7 +10,6 @@ #include "base/allocator/partition_alloc_features.h" #include "base/base_paths_android.h" #include "base/check.h" -#include "base/metrics/field_trial_params.h" #include "base/metrics/persistent_histogram_allocator.h" #include "base/path_service.h" #include "components/history/core/browser/features.h" @@ -32,6 +31,7 @@ #include "third_party/blink/public/common/features.h" #include "third_party/blink/public/common/features_generated.h" #include "ui/android/ui_android_features.h" +#include "ui/base/ui_base_features.h" #include "ui/gl/gl_features.h" #include "ui/gl/gl_switches.h" @@ -113,6 +113,11 @@ void AwFieldTrials::RegisterFeatureOverrides(base::FeatureList* feature_list) { // Disable scrollbar-width on WebView. aw_feature_overrides.DisableFeature(blink::features::kScrollbarWidth); + // TODO(crbug.com/402144902): Remove this once webview experiment has + // concluded. + aw_feature_overrides.DisableFeature( + ::features::kSendEmptyGestureScrollUpdate); + // Disable Populating the VisitedLinkDatabase on WebView. aw_feature_overrides.DisableFeature(history::kPopulateVisitedLinkDatabase); @@ -232,24 +237,8 @@ void AwFieldTrials::RegisterFeatureOverrides(base::FeatureList* feature_list) { // function and the webview permission manager cannot support it. aw_feature_overrides.DisableFeature(blink::features::kPermissionElement); aw_feature_overrides.DisableFeature(blink::features::kGeolocationElement); - - // |kBtmTtl| in the testing config json. - { - const char kDipsWebViewExperiment[] = "DipsWebViewExperiment"; - const char kDipsWebViewGroup[] = "DipsWebViewGroup"; - base::FieldTrial* dips_field_trial = base::FieldTrialList::CreateFieldTrial( - kDipsWebViewExperiment, kDipsWebViewGroup); - CHECK(dips_field_trial) << "Unexpected name conflict."; - base::FieldTrialParams params; - const std::string ttl_time_delta_30_days = "30d"; - params.emplace(features::kBtmInteractionTtl.name, ttl_time_delta_30_days); - base::AssociateFieldTrialParams(kDipsWebViewExperiment, kDipsWebViewGroup, - params); - aw_feature_overrides.OverrideFeatureWithFieldTrial( - features::kBtmTtl, - base::FeatureList::OverrideState::OVERRIDE_ENABLE_FEATURE, - dips_field_trial); - } + aw_feature_overrides.DisableFeature(blink::features::kUserMediaElement); + aw_feature_overrides.DisableFeature(blink::features::kInstallElement); // Delete Incidental Party State (DIPS) feature is not yet supported on // WebView. @@ -287,10 +276,6 @@ void AwFieldTrials::RegisterFeatureOverrides(base::FeatureList* feature_list) { aw_feature_overrides.DisableFeature( blink::features::kPartitionVisitedLinkDatabaseWithSelfLinks); - // Disable draw cutout edge-to-edge on WebView. Safe area insets are not - // handled correctly when WebView is drawing edge-to-edge. - aw_feature_overrides.DisableFeature(features::kDrawCutoutEdgeToEdge); - // Explicitly disable PrefetchProxy instead of relying only on passing an // empty URL. aw_feature_overrides.DisableFeature(features::kPrefetchProxy); @@ -321,4 +306,8 @@ void AwFieldTrials::RegisterFeatureOverrides(base::FeatureList* feature_list) { // SystemTracing is enabled by default only in WebView for now. aw_feature_overrides.EnableFeature(features::kEnablePerfettoSystemTracing); + + // Deemed that performance benefit is not worth the stability cost. + // See crbug.com/1309151. + aw_feature_overrides.DisableFeature(::features::kGpuShaderDiskCache); } diff --git a/tools/under-control/src/chrome/android/java/AndroidManifest.xml b/tools/under-control/src/chrome/android/java/AndroidManifest.xml index b2151944..bd02a9b4 100755 --- a/tools/under-control/src/chrome/android/java/AndroidManifest.xml +++ b/tools/under-control/src/chrome/android/java/AndroidManifest.xml @@ -397,6 +397,17 @@ by a child template that "extends" this file. + + + - - - - - - @@ -1048,15 +1051,6 @@ by a child template that "extends" this file. android:exported="false" android:permission="android.permission.BIND_JOB_SERVICE"/> - - - - - - - @@ -1229,6 +1223,17 @@ by a child template that "extends" this file. android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize" > + + + + + + + @@ -1408,6 +1413,7 @@ by a child template that "extends" this file. android:name="androidx.startup.InitializationProvider" tools:node="remove"> + menuItems = IntentUtils.getParcelableArrayListExtra(intent, CustomTabsIntent.EXTRA_MENU_ITEMS); - mOpenInBrowserState = + int openInBrowserState = IntentUtils.safeGetIntExtra( intent, EXTRA_OPEN_IN_BROWSER_STATE, OpenInBrowserButtonState.OPEN_IN_BROWSER_STATE_DEFAULT); + if (isOpenInBrowserDisallowed( + getUiType(), getCustomTabMode() == CustomTabProfileType.INCOGNITO)) { + openInBrowserState = CustomTabsButtonState.BUTTON_STATE_OFF; + } + mOpenInBrowserState = openInBrowserState; + int oibState = adjustOpenInBrowserOption(intent); maybeAddOpenInBrowserOption(context, oibState); updateExtraMenuItems(menuItems); @@ -993,11 +1000,7 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid boolean usingInteractiveOmnibox = CustomTabsConnection.getInstance().shouldEnableOmniboxForIntent(this); - int openInBrowserState = - IntentUtils.safeGetIntExtra( - intent, - EXTRA_OPEN_IN_BROWSER_STATE, - CustomTabsButtonState.BUTTON_STATE_DEFAULT); + int openInBrowserState = mOpenInBrowserState; if (openInBrowserState == CustomTabsButtonState.BUTTON_STATE_ON && !ChromeFeatureList.sCctOpenInBrowserButtonIfEnabledByEmbedder.isEnabled()) { @@ -1048,6 +1051,37 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid } } + /** + * Returns {@code true} if open-in-browser (action button/menu item) should not be presented on + * the UI surface. + * + * @param type {@link CustomTabsUiType} value. + * @param incognito Whether the {@link CustomTabProfileType} is incongnito. + */ + public static boolean isOpenInBrowserDisallowed(int type, boolean incognito) { + return !isOpenInBrowserAllowedForType(type) + || incognito + || !FirstRunStatus.getFirstRunFlowComplete(); + } + + private static boolean isOpenInBrowserAllowedForType(int type) { + switch (type) { + case CustomTabsUiType.MEDIA_VIEWER: + case CustomTabsUiType.READER_MODE: + case CustomTabsUiType.MINIMAL_UI_WEBAPP: + case CustomTabsUiType.OFFLINE_PAGE: + case CustomTabsUiType.AUTH_TAB: + case CustomTabsUiType.NETWORK_BOUND_TAB: + case CustomTabsUiType.POPUP: + return false; + case CustomTabsUiType.TRUSTED_WEB_ACTIVITY: + return !ChromeFeatureList.sAndroidWebAppMenuButton.isEnabled(); + case CustomTabsUiType.DEFAULT: + default: + return true; + } + } + private @Nullable String resolveUrlToLoad(Intent intent) { String url = IntentHandler.getUrlFromIntent(intent); diff --git a/tools/under-control/src/chrome/browser/about_flags.cc b/tools/under-control/src/chrome/browser/about_flags.cc index 35046bf0..683307e2 100755 --- a/tools/under-control/src/chrome/browser/about_flags.cc +++ b/tools/under-control/src/chrome/browser/about_flags.cc @@ -42,7 +42,6 @@ #include "chrome/browser/browser_process.h" #include "chrome/browser/devtools/features.h" #include "chrome/browser/flag_descriptions.h" -#include "chrome/browser/ip_protection/ip_protection_switches.h" #include "chrome/browser/login_detection/login_detection_util.h" #include "chrome/browser/media/router/discovery/access_code/access_code_cast_constants.h" #include "chrome/browser/media/router/discovery/access_code/access_code_cast_feature.h" @@ -68,7 +67,6 @@ #include "chrome/browser/ui/tabs/tab_group_home/constants.h" #include "chrome/browser/ui/toasts/toast_features.h" #include "chrome/browser/ui/ui_features.h" -#include "chrome/browser/ui/webui/new_tab_page/composebox/variations/aim_entrypoint_fieldtrial.h" #include "chrome/browser/ui/webui/new_tab_page/composebox/variations/composebox_fieldtrial.h" #include "chrome/browser/unexpire_flags.h" #include "chrome/browser/unexpire_flags_gen.h" @@ -83,11 +81,13 @@ #include "components/assist_ranker/predictor_config_definitions.h" #include "components/autofill/core/browser/manual_testing_import.h" #include "components/autofill/core/browser/studies/autofill_experiments.h" +#include "components/autofill/core/common/autofill_debug_features.h" #include "components/autofill/core/common/autofill_features.h" #include "components/autofill/core/common/autofill_payments_features.h" #include "components/autofill/core/common/autofill_switches.h" #include "components/autofill/core/common/autofill_util.h" #include "components/browser_sync/browser_sync_switches.h" +#include "components/browser_ui/accessibility/android/features.h" #include "components/browsing_data/core/features.h" #include "components/collaboration/public/features.h" #include "components/commerce/core/commerce_feature_list.h" @@ -100,6 +100,7 @@ #include "components/contextual_tasks/public/features.h" #include "components/data_sharing/public/features.h" #include "components/data_sharing/public/switches.h" +#include "components/desktop_to_mobile_promos/features.h" #include "components/device_signals/core/common/signals_features.h" #include "components/dom_distiller/core/dom_distiller_features.h" #include "components/dom_distiller/core/dom_distiller_switches.h" @@ -110,8 +111,6 @@ #include "components/feature_engagement/public/feature_constants.h" #include "components/feature_engagement/public/feature_list.h" #include "components/feed/feed_feature_list.h" -#include "components/fingerprinting_protection_filter/common/fingerprinting_protection_filter_features.h" -#include "components/fingerprinting_protection_filter/interventions/common/interventions_features.h" #include "components/heavy_ad_intervention/heavy_ad_features.h" #include "components/history/core/browser/features.h" #include "components/history_clusters/core/config.h" @@ -123,8 +122,8 @@ #include "components/lens/buildflags.h" #include "components/lens/lens_features.h" #include "components/manta/features.h" +#include "components/metrics/private_metrics/private_metrics_features.h" #include "components/mirroring/service/mirroring_features.h" -#include "components/network_session_configurator/common/network_features.h" #include "components/network_session_configurator/common/network_switches.h" #include "components/no_state_prefetch/browser/no_state_prefetch_field_trial.h" #include "components/ntp_tiles/features.h" @@ -167,6 +166,7 @@ #include "components/send_tab_to_self/features.h" #include "components/sensitive_content/features.h" #include "components/services/heap_profiling/public/cpp/switches.h" +#include "components/services/on_device_translation/buildflags/buildflags.h" #include "components/services/storage/public/cpp/buckets/bucket_info.h" #include "components/shared_highlighting/core/common/shared_highlighting_features.h" #include "components/sharing_message/features.h" @@ -245,7 +245,6 @@ #include "storage/browser/quota/quota_features.h" #include "third_party/blink/public/common/features.h" #include "third_party/blink/public/common/features_generated.h" -#include "third_party/blink/public/common/forcedark/forcedark_switches.h" #include "third_party/blink/public/common/switches.h" #include "ui/accessibility/accessibility_features.h" #include "ui/accessibility/accessibility_switches.h" @@ -277,8 +276,10 @@ #include "components/facilitated_payments/core/features/features.h" #include "components/messages/android/messages_feature.h" #include "components/payments/content/android/payment_feature_map.h" +#include "components/permissions/android/permissions_android_feature_map.h" #include "components/push_messaging/push_messaging_features.h" #include "components/translate/content/android/translate_message.h" +#include "components/variations/net/omnibox_autofocus_http_headers.h" #include "ui/android/ui_android_features.h" #else // BUILDFLAG(IS_ANDROID) #include "chrome/browser/component_updater/iwa_key_distribution_component_installer.h" @@ -341,9 +342,12 @@ #include "chrome/browser/contextual_cueing/contextual_cueing_features.h" // nogncheck #include "chrome/browser/enterprise/profile_management/profile_management_features.h" #include "chrome/browser/enterprise/webstore/features.h" -#include "components/services/on_device_translation/public/cpp/features.h" #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) +#if BUILDFLAG(ENABLE_ON_DEVICE_TRANSLATION) +#include "components/services/on_device_translation/public/cpp/features.h" +#endif // BUILDFLAG(ENABLE_ON_DEVICE_TRANSLATION) + #if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) #include "chrome/browser/enterprise/platform_auth/platform_auth_features.h" #endif @@ -776,65 +780,6 @@ const FeatureEntry::Choice kSafetyHubUnifiedPasswordsModuleChoices[] = { #endif // BUILDFLAG(IS_ANDROID) -#if !BUILDFLAG(IS_CHROMEOS) -const FeatureEntry::FeatureParam kForceDark_SimpleHsl[] = { - {"inversion_method", "hsl_based"}, - {"foreground_lightness_threshold", "150"}, - {"background_lightness_threshold", "205"}}; - -const FeatureEntry::FeatureParam kForceDark_SimpleCielab[] = { - {"inversion_method", "cielab_based"}, - {"foreground_lightness_threshold", "150"}, - {"background_lightness_threshold", "205"}}; - -const FeatureEntry::FeatureParam kForceDark_SimpleRgb[] = { - {"inversion_method", "rgb_based"}, - {"foreground_lightness_threshold", "150"}, - {"background_lightness_threshold", "205"}}; - -// Keep in sync with the kForceDark_SelectiveImageInversion -// in aw_feature_entries.cc if you tweak these parameters. -const FeatureEntry::FeatureParam kForceDark_SelectiveImageInversion[] = { - {"inversion_method", "cielab_based"}, - {"image_behavior", "selective"}, - {"foreground_lightness_threshold", "150"}, - {"background_lightness_threshold", "205"}}; - -const FeatureEntry::FeatureParam kForceDark_SelectiveElementInversion[] = { - {"inversion_method", "cielab_based"}, - {"foreground_lightness_threshold", "150"}, - {"background_lightness_threshold", "205"}}; - -const FeatureEntry::FeatureParam kForceDark_SelectiveGeneralInversion[] = { - {"inversion_method", "cielab_based"}, - {"image_behavior", "selective"}, - {"foreground_lightness_threshold", "150"}, - {"background_lightness_threshold", "205"}}; - -const FeatureEntry::FeatureParam kForceDark_TransparencyAndNumColors[] = { - {"classifier_policy", "transparency_and_num_colors"}}; - -const FeatureEntry::FeatureVariation kForceDarkVariations[] = { - {"with simple HSL-based inversion", kForceDark_SimpleHsl, - std::size(kForceDark_SimpleHsl), nullptr}, - {"with simple CIELAB-based inversion", kForceDark_SimpleCielab, - std::size(kForceDark_SimpleCielab), nullptr}, - {"with simple RGB-based inversion", kForceDark_SimpleRgb, - std::size(kForceDark_SimpleRgb), nullptr}, - {"with selective image inversion", kForceDark_SelectiveImageInversion, - std::size(kForceDark_SelectiveImageInversion), nullptr}, - {"with selective inversion of non-image elements", - kForceDark_SelectiveElementInversion, - std::size(kForceDark_SelectiveElementInversion), nullptr}, - {"with selective inversion of everything", - kForceDark_SelectiveGeneralInversion, - std::size(kForceDark_SelectiveGeneralInversion), nullptr}, - {"with selective image inversion based on transparency and number of " - "colors", - kForceDark_TransparencyAndNumColors, - std::size(kForceDark_TransparencyAndNumColors), nullptr}}; -#endif // !BUILDFLAG(IS_CHROMEOS) - const FeatureEntry::FeatureParam kWebIdentityDigitalIdentityCredentialNoDialogParam[] = { {"dialog", "no_dialog"}}; @@ -918,22 +863,29 @@ const FeatureEntry::FeatureVariation #if !BUILDFLAG(IS_ANDROID) const FeatureEntry::FeatureParam kWebUIOmniboxAimPopupAddContextButtonNone[] = { {"AddContextButtonVariant", "none"}, - {"ForceToolsAndModels", "true"}, + {"ShowVoiceSearchInSteadyComposebox", "true"}, + {"ShowVoiceSearchInExpandedComposebox", "true"}, }; const FeatureEntry::FeatureParam kWebUIOmniboxAimPopupAddContextButtonBelowResults[] = { {"AddContextButtonVariant", "below_results"}, - {"ForceToolsAndModels", "true"}, + {"ShowVoiceSearchInSteadyComposebox", "true"}, + {"ShowVoiceSearchInExpandedComposebox", "true"}, }; const FeatureEntry::FeatureParam kWebUIOmniboxAimPopupAddContextButtonAboveResults[] = { {"AddContextButtonVariant", "above_results"}, - {"ForceToolsAndModels", "true"}, }; const FeatureEntry::FeatureParam kWebUIOmniboxAimPopupAddContextButtonInline[] = { {"AddContextButtonVariant", "inline"}, - {"ForceToolsAndModels", "true"}, + {"ShowRecentTabChip", "true"}, +}; +const FeatureEntry::FeatureParam + kWebUIOmniboxAimPopupAddContextButtonDragAndDrop[] = { + {"AddContextButtonVariant", "below_results"}, + {"EnableContextDragAndDrop", "true"}, + {"ShowRecentTabChip", "true"}, }; const FeatureEntry::FeatureVariation kWebUIOmniboxAimPopupVariations[] = { @@ -947,7 +899,10 @@ const FeatureEntry::FeatureVariation kWebUIOmniboxAimPopupVariations[] = { std::size(kWebUIOmniboxAimPopupAddContextButtonAboveResults), nullptr}, {"- \"Add Context\" Button inline (Variant 3)", kWebUIOmniboxAimPopupAddContextButtonInline, - std::size(kWebUIOmniboxAimPopupAddContextButtonInline), nullptr}}; + std::size(kWebUIOmniboxAimPopupAddContextButtonInline), nullptr}, + {"- \"Add Context\" Button enable drag and drop", + kWebUIOmniboxAimPopupAddContextButtonDragAndDrop, + std::size(kWebUIOmniboxAimPopupAddContextButtonDragAndDrop), nullptr}}; const FeatureEntry::FeatureParam kWebUIOmniboxPopupDebugSxS[] = { {"SxS", "true"}}; @@ -1060,12 +1015,6 @@ const FeatureEntry::Choice kForceTextDirectionChoices[] = { switches::kForceDirectionRTL}, }; -const FeatureEntry::Choice kIpProtectionProxyOptOutChoices[] = { - {flag_descriptions::kIpProtectionProxyOptOutChoiceDefault, "", ""}, - {flag_descriptions::kIpProtectionProxyOptOutChoiceOptOut, - switches::kDisableIpProtectionProxy, ""}, -}; - #if BUILDFLAG(IS_CHROMEOS) const FeatureEntry::Choice kSchedulerConfigurationChoices[] = { {flags_ui::kGenericExperimentChoiceDefault, "", ""}, @@ -1189,14 +1138,17 @@ const FeatureEntry::FeatureVariation kTextSafetyClassifierVariations[] = { const FeatureEntry::FeatureParam kPageActionsMigrationParams[] = { {"ai_mode", "true"}, {"autofill_address", "true"}, + {"bookmark_star", "true"}, {"cookie_controls", "true"}, {"click_to_call", "true"}, {"collaboration_messaging", "true"}, {"discounts", "true"}, {"file_system_access", "true"}, + {"filled_card_information", "true"}, {"find", "true"}, {"intent_picker", "true"}, {"lens_overlay", "true"}, + {"lens_overlay_homework", "true"}, {"manage_passwords", "true"}, {"mandatory_reauth", "true"}, {"memory_saver", "true"}, @@ -1204,8 +1156,11 @@ const FeatureEntry::FeatureParam kPageActionsMigrationParams[] = { {"price_insights", "true"}, {"price_tracking", "true"}, {"pwa_install", "true"}, + {"reading_mode", "true"}, + {"save_payments", "true"}, {"sharing_hub", "true"}, {"translate", "true"}, + {"virtual_card", "true"}, {"zoom", "true"}, }; const FeatureEntry::FeatureVariation kPageActionsMigrationVariations[] = { @@ -1267,16 +1222,15 @@ const FeatureEntry::FeatureVariation kJourneysVariations[] = { std::size(kJourneysAllLocalesParams), nullptr}, }; - const FeatureEntry::FeatureParam kLensAimSuggestionsTypeContextualWith3Suggestions[] = { {"lens-aim-suggestions-type", "Contextual"}, {"number-of-aim-suggestions", "3"}}; -const FeatureEntry::FeatureParam kLensAimSuggestionsTypeContextualWith5Suggestions[] = { - {"lens-aim-suggestions-type", "Contextual"}, - {"number-of-aim-suggestions", "5"} -}; +const FeatureEntry::FeatureParam + kLensAimSuggestionsTypeContextualWith5Suggestions[] = { + {"lens-aim-suggestions-type", "Contextual"}, + {"number-of-aim-suggestions", "5"}}; const FeatureEntry::FeatureParam kLensAimSuggestionsTypeContextualWith8Suggestions[] = { @@ -1288,9 +1242,10 @@ const FeatureEntry::FeatureParam {"lens-aim-suggestions-type", "Multimodal"}, {"number-of-aim-suggestions", "3"}}; -const FeatureEntry::FeatureParam kLensAimSuggestionsTypeMultimodalWith5Suggestions[] = { - {"lens-aim-suggestions-type", "Multimodal"}, - {"number-of-aim-suggestions", "5"}}; +const FeatureEntry::FeatureParam + kLensAimSuggestionsTypeMultimodalWith5Suggestions[] = { + {"lens-aim-suggestions-type", "Multimodal"}, + {"number-of-aim-suggestions", "5"}}; const FeatureEntry::FeatureParam kLensAimSuggestionsTypeMultimodalWith8Suggestions[] = { @@ -1301,7 +1256,8 @@ const FeatureEntry::FeatureVariation kLensAimSuggestionsVariations[] = { {"with Contextual - 3 suggestions", kLensAimSuggestionsTypeContextualWith3Suggestions, std::size(kLensAimSuggestionsTypeContextualWith3Suggestions), nullptr}, - {"with Contextual - 5 suggestions", kLensAimSuggestionsTypeContextualWith5Suggestions, + {"with Contextual - 5 suggestions", + kLensAimSuggestionsTypeContextualWith5Suggestions, std::size(kLensAimSuggestionsTypeContextualWith5Suggestions), nullptr}, {"with Contextual - 8 suggestions", kLensAimSuggestionsTypeContextualWith8Suggestions, @@ -1309,12 +1265,13 @@ const FeatureEntry::FeatureVariation kLensAimSuggestionsVariations[] = { {"with Multimodal - 3 suggestions", kLensAimSuggestionsTypeMultimodalWith3Suggestions, std::size(kLensAimSuggestionsTypeMultimodalWith3Suggestions), nullptr}, - {"with Multimodal - 5 suggestions", kLensAimSuggestionsTypeMultimodalWith5Suggestions, + {"with Multimodal - 5 suggestions", + kLensAimSuggestionsTypeMultimodalWith5Suggestions, std::size(kLensAimSuggestionsTypeMultimodalWith5Suggestions), nullptr}, {"with Multimodal - 8 suggestions", kLensAimSuggestionsTypeMultimodalWith8Suggestions, std::size(kLensAimSuggestionsTypeMultimodalWith8Suggestions), nullptr}, - }; +}; const FeatureEntry::FeatureVariation kRemotePageMetadataVariations[] = { {"High Performance Canonicalization", nullptr, 0, "3362133"}, @@ -1677,7 +1634,6 @@ const FeatureEntry::FeatureVariation kOmniboxToolbeltVariations[] = { const FeatureEntry::FeatureParam kComposeboxShowContextMenuAndSuggestMultiFile[] = { - {"MaxNumFiles", "5"}, {"ShowComposeboxZps", "true"}, {"ShowComposeboxTypedSuggest", "true"}, {"ShowContextMenu", "true"}, @@ -1685,7 +1641,6 @@ const FeatureEntry::FeatureParam }; const FeatureEntry::FeatureParam kComposeboxShowContextMenuAndSuggestMultiFileNoViewport[] = { - {"MaxNumFiles", "5"}, {"ShowComposeboxZps", "true"}, {"ShowComposeboxTypedSuggest", "true"}, {"ShowContextMenu", "true"}, @@ -1694,7 +1649,6 @@ const FeatureEntry::FeatureParam }; const FeatureEntry::FeatureParam kComposeboxShowContextMenuAndSuggestMultiFileAndTabPreviews[] = { - {"MaxNumFiles", "5"}, {"ShowComposeboxZps", "true"}, {"ShowComposeboxTypedSuggest", "true"}, {"ShowContextMenu", "true"}, @@ -1704,22 +1658,21 @@ const FeatureEntry::FeatureParam const FeatureEntry::FeatureParam kShowToolsAndModels[] = { {"ShowContextMenu", "true"}, {"ShowToolsAndModels", "true"}, {"ShowComposeboxZps", "true"}, {"ShowComposeboxTypedSuggest", "true"}, - {"ForceToolsAndModels", "true"}, }; const FeatureEntry::FeatureParam kShowCreateImageTool[] = { - {"ShowContextMenu", "true"}, {"ShowToolsAndModels", "true"}, - {"ShowCreateImageTool", "true"}, {"ShowComposeboxZps", "true"}, - {"ForceToolsAndModels", "true"}, {"ShowComposeboxTypedSuggest", "true"}, + {"ShowContextMenu", "true"}, + {"ShowToolsAndModels", "true"}, + {"ShowCreateImageTool", "true"}, + {"ShowComposeboxZps", "true"}, + {"ShowComposeboxTypedSuggest", "true"}, }; const FeatureEntry::FeatureParam kComposeboxNext[] = { - {"MaxNumFiles", "5"}, {"ShowContextMenu", "true"}, {"ShowContextMenuTabPreviews", "true"}, {"ShowComposeboxZps", "true"}, {"ShowComposeboxTypedSuggest", "true"}, {"ShowToolsAndModels", "true"}, {"ShowCreateImageTool", "true"}, - {"ForceToolsAndModels", "true"}, {"ShowRecentTabChip", "true"}, {"CloseComposeboxByEscape", "false"}, {"CloseComposeboxByClickOutside", "false"}, @@ -1733,11 +1686,32 @@ const FeatureEntry::FeatureParam kComposeboxNextSingleContext[] = { {"ShowComposeboxTypedSuggest", "true"}, {"ShowToolsAndModels", "true"}, {"ShowCreateImageTool", "true"}, - {"ForceToolsAndModels", "true"}, {"ShowRecentTabChip", "true"}, {"CloseComposeboxByEscape", "false"}, {"CloseComposeboxByClickOutside", "false"}, }; +const FeatureEntry::FeatureParam kComposeboxNextSingleContextForRealboxNext[] = + { + {"MaxNumFiles", "1"}, + {"ShowContextMenu", "true"}, + {"ShowComposeboxZps", "true"}, + {"ShowComposeboxTypedSuggest", "true"}, + {"ShowToolsAndModels", "true"}, + {"ShowCreateImageTool", "true"}, + {"ShowRecentTabChip", "true"}, + {"ShowSubmit", "true"}, +}; +const FeatureEntry::FeatureParam kComposeboxNextForRealboxNext[] = { + {"ShowContextMenu", "true"}, + {"ShowComposeboxZps", "true"}, + {"ShowComposeboxTypedSuggest", "true"}, + {"ShowToolsAndModels", "true"}, + {"ShowCreateImageTool", "true"}, + {"ShowRecentTabChip", "true"}, + {"ContextMenuEnableMultiTabSelection", "true"}, + {"ShowSubmit", "true"}, + {"EnableEphemeralContextMenuDescription", "true"}}; + const FeatureEntry::FeatureVariation kNtpComposeboxVariations[] = { {"- Show Contextual Input Menu and Suggest, 5 File Limit", @@ -1760,6 +1734,11 @@ const FeatureEntry::FeatureVariation kNtpComposeboxVariations[] = { {"- Next Experience", kComposeboxNext, std::size(kComposeboxNext), nullptr}, {"- Next Experience Single Context", kComposeboxNextSingleContext, std::size(kComposeboxNextSingleContext), nullptr}, + {"- Next Experience for Realbox Next", kComposeboxNextForRealboxNext, + std::size(kComposeboxNextForRealboxNext), nullptr}, + {"- Next Experience Single Context for Realbox Next", + kComposeboxNextSingleContextForRealboxNext, + std::size(kComposeboxNextSingleContextForRealboxNext), nullptr}, }; const FeatureEntry::FeatureParam kShowNextRealboxTallBottomContext[] = { @@ -1811,9 +1790,75 @@ const FeatureEntry::FeatureParam kNtpNextShowStaticText[] = { {"NtpNextShowStaticTextParam", "true"}, }; +const FeatureEntry::FeatureParam kNtpNextShowDeepDiveSuggestions[] = { + {"NtpNextShowDeepDiveSuggestionsParam", "true"}, + {"NtpNextSuggestionsFromNewSearchSuggestionsEndpointParam", "false"}, + {"NtpNextClientSensitivityCheckParam", "true"}, +}; +const FeatureEntry::FeatureParam kNtpNextShowSimplificationUI[] = { + {"NtpNextShowSimplificationUIParam", "true"}, + {"NtpNextClientSensitivityCheckParam", "true"}, +}; +const FeatureEntry::FeatureParam kNtpNextShowSimplificationUIWithDeepDive[] = { + {"NtpNextShowSimplificationUIParam", "true"}, + {"NtpNextShowDeepDiveSuggestionsParam", "true"}, + {"NtpNextSuggestionsFromNewSearchSuggestionsEndpointParam", "false"}, + {"NtpNextClientSensitivityCheckParam", "true"}, +}; + const FeatureEntry::FeatureVariation kNtpNextVariations[] = { {"- Show Static Text", kNtpNextShowStaticText, std::size(kNtpNextShowStaticText), nullptr}, + {"- Show Deep Dive Suggestions", kNtpNextShowDeepDiveSuggestions, + std::size(kNtpNextShowDeepDiveSuggestions), nullptr}, + {"- Show Row UI", kNtpNextShowSimplificationUI, + std::size(kNtpNextShowSimplificationUI), nullptr}, + {"- Show Row UI With Deep Dive", kNtpNextShowSimplificationUIWithDeepDive, + std::size(kNtpNextShowSimplificationUIWithDeepDive), nullptr}, +}; + +const FeatureEntry::FeatureParam + kNtpFeatureOptimizationModuleRemovalDefault[] = { + {"ModuleMinStalenessUpdateTimeInterval", "24h"}, + {"StaleModulesCountThreshold", "14"}, +}; + +const FeatureEntry::FeatureParam + kNtpFeatureOptimizationModuleRemovalTesting[] = { + {"ModuleMinStalenessUpdateTimeInterval", "1s"}, + {"StaleModulesCountThreshold", "2"}, +}; + +const FeatureEntry::FeatureVariation + kNtpFeatureOptimizationModuleRemovalVariations[] = { + {"- Default Auto-Removal Timing", + kNtpFeatureOptimizationModuleRemovalDefault, + std::size(kNtpFeatureOptimizationModuleRemovalDefault), nullptr}, + {"- Auto-Removal Timing for Testing", + kNtpFeatureOptimizationModuleRemovalTesting, + std::size(kNtpFeatureOptimizationModuleRemovalTesting), nullptr}, +}; + +const FeatureEntry::FeatureParam + kNtpFeatureOptimizationShortcutsRemovalDefault[] = { + {"ShortcutsMinStalenessUpdateTimeInterval", "24h"}, + {"StaleShortcutsCountThreshold", "60"}, +}; + +const FeatureEntry::FeatureParam + kNtpFeatureOptimizationShortcutsRemovalTesting[] = { + {"ShortcutsMinStalenessUpdateTimeInterval", "1s"}, + {"StaleShortcutsCountThreshold", "5"}, +}; + +const FeatureEntry::FeatureVariation + kNtpFeatureOptimizationShortcutsRemovalVariations[] = { + {"- Default Auto-Removal Timing", + kNtpFeatureOptimizationShortcutsRemovalDefault, + std::size(kNtpFeatureOptimizationShortcutsRemovalDefault), nullptr}, + {"- Auto-Removal Timing for Testing", + kNtpFeatureOptimizationShortcutsRemovalTesting, + std::size(kNtpFeatureOptimizationShortcutsRemovalTesting), nullptr}, }; #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || @@ -2087,12 +2132,42 @@ const FeatureEntry::FeatureVariation std::size(kOmniboxRemoveSearchReadyOmniboxNoMatchParam), nullptr}}; #endif -const FeatureEntry::FeatureParam kOmniboxAimToggleOnlyParam[] = { - {"aim_toggle_only", "true"}}; +const FeatureEntry::FeatureParam kOmniboxAimDedicatedModeButton[] = { + {"show_dedicated_mode_button", "true"}}; +const FeatureEntry::FeatureParam kOmniboxAimDedicatedModeButtonWithHint[] = { + {"show_dedicated_mode_button", "true"}, + {"show_try_aimode_hint_in_mode_button", "true"}}; +const FeatureEntry::FeatureParam kOmniboxAimCompactFusebox[] = { + {"compact_fusebox", "true"}}; +const FeatureEntry::FeatureParam kOmniboxAimMultiContext[] = { + {"multi_context", "true"}}; +const FeatureEntry::FeatureParam kOmniboxAimMultiContextDedicatedModeButton[] = + {{"multi_context", "true"}, {"show_dedicated_mode_button", "true"}}; +const FeatureEntry::FeatureParam + kOmniboxAimMultiContextDedicatedModeButtonWithHint[] = { + {"multi_context", "true"}, + {"show_dedicated_mode_button", "true"}, + {"show_try_aimode_hint_in_mode_button", "true"}}; +const FeatureEntry::FeatureParam kOmniboxAimMultiContextCompactFusebox[] = { + {"multi_context", "true"}, + {"compact_fusebox", "true"}}; const FeatureEntry::FeatureVariation kOmniboxMultimodalInputVariants[] = { - {"AIM Toggle Only", kOmniboxAimToggleOnlyParam, - std::size(kOmniboxAimToggleOnlyParam), nullptr}}; + {"Dedicated Button", kOmniboxAimDedicatedModeButton, + std::size(kOmniboxAimDedicatedModeButton), nullptr}, + {"Button with Hint", kOmniboxAimDedicatedModeButtonWithHint, + std::size(kOmniboxAimDedicatedModeButtonWithHint), nullptr}, + {"Compact", kOmniboxAimCompactFusebox, std::size(kOmniboxAimCompactFusebox), + nullptr}, + {"MC (Multi context)", kOmniboxAimMultiContext, + std::size(kOmniboxAimMultiContext), nullptr}, + {"MC Dedicated Button", kOmniboxAimMultiContextDedicatedModeButton, + std::size(kOmniboxAimMultiContextDedicatedModeButton), nullptr}, + {"MC Button with Hint", kOmniboxAimMultiContextDedicatedModeButtonWithHint, + std::size(kOmniboxAimMultiContextDedicatedModeButtonWithHint), nullptr}, + {"MC Compact", kOmniboxAimMultiContextCompactFusebox, + std::size(kOmniboxAimMultiContextCompactFusebox), nullptr}, +}; const FeatureEntry::FeatureParam kOmniboxMultilineEditFieldForAutocomplete[] = { {"wrap_autocomplete_text", "true"}}; @@ -2222,29 +2297,6 @@ const FeatureEntry::FeatureVariation {"12 matches", kOmniboxUIMaxAutocompleteMatches12, std::size(kOmniboxUIMaxAutocompleteMatches12), nullptr}}; -const FeatureEntry::FeatureParam kOmniboxMaxURLMatches2[] = { - {OmniboxFieldTrial::kOmniboxMaxURLMatchesParam, "2"}}; -const FeatureEntry::FeatureParam kOmniboxMaxURLMatches3[] = { - {OmniboxFieldTrial::kOmniboxMaxURLMatchesParam, "3"}}; -const FeatureEntry::FeatureParam kOmniboxMaxURLMatches4[] = { - {OmniboxFieldTrial::kOmniboxMaxURLMatchesParam, "4"}}; -const FeatureEntry::FeatureParam kOmniboxMaxURLMatches5[] = { - {OmniboxFieldTrial::kOmniboxMaxURLMatchesParam, "5"}}; -const FeatureEntry::FeatureParam kOmniboxMaxURLMatches6[] = { - {OmniboxFieldTrial::kOmniboxMaxURLMatchesParam, "6"}}; - -const FeatureEntry::FeatureVariation kOmniboxMaxURLMatchesVariations[] = { - {"2 matches", kOmniboxMaxURLMatches2, std::size(kOmniboxMaxURLMatches2), - nullptr}, - {"3 matches", kOmniboxMaxURLMatches3, std::size(kOmniboxMaxURLMatches3), - nullptr}, - {"4 matches", kOmniboxMaxURLMatches4, std::size(kOmniboxMaxURLMatches4), - nullptr}, - {"5 matches", kOmniboxMaxURLMatches5, std::size(kOmniboxMaxURLMatches5), - nullptr}, - {"6 matches", kOmniboxMaxURLMatches6, std::size(kOmniboxMaxURLMatches6), - nullptr}}; - #if BUILDFLAG(IS_ANDROID) const FeatureEntry::FeatureParam kOmniboxMiaZpsEnabledWithHistoryAblation[] = { {OmniboxFieldTrial::kSuppressPsuggestBackfillWithMIAParam, "true"}}; @@ -2426,27 +2478,6 @@ const FeatureEntry::FeatureVariation kNumSrpZpsRelatedSearches[] = { std::size(kSrpZps15RelatedSearches)}, }; -#if !BUILDFLAG(IS_ANDROID) -const FeatureEntry::FeatureParam kMinimumTabWidthSettingPinned[] = { - {tabs::kMinimumTabWidthFeatureParameterName, "54"}}; -const FeatureEntry::FeatureParam kMinimumTabWidthSettingMedium[] = { - {tabs::kMinimumTabWidthFeatureParameterName, "72"}}; -const FeatureEntry::FeatureParam kMinimumTabWidthSettingLarge[] = { - {tabs::kMinimumTabWidthFeatureParameterName, "140"}}; -const FeatureEntry::FeatureParam kMinimumTabWidthSettingFull[] = { - {tabs::kMinimumTabWidthFeatureParameterName, "256"}}; - -const FeatureEntry::FeatureVariation kTabScrollingVariations[] = { - {" - tabs shrink to pinned tab width", kMinimumTabWidthSettingPinned, - std::size(kMinimumTabWidthSettingPinned), nullptr}, - {" - tabs shrink to a medium width", kMinimumTabWidthSettingMedium, - std::size(kMinimumTabWidthSettingMedium), nullptr}, - {" - tabs shrink to a large width", kMinimumTabWidthSettingLarge, - std::size(kMinimumTabWidthSettingLarge), nullptr}, - {" - tabs don't shrink", kMinimumTabWidthSettingFull, - std::size(kMinimumTabWidthSettingFull), nullptr}}; -#endif - #if !BUILDFLAG(IS_ANDROID) const FeatureEntry::FeatureParam kTabSearchToolbarButton[] = { {"tab_search_toolbar_button", "true"}}; @@ -2457,49 +2488,17 @@ const FeatureEntry::FeatureVariation kTabstripComboButtonVariations[] = { }; #endif -const FeatureEntry::FeatureParam kTabScrollingButtonPositionRight[] = { - {features::kTabScrollingButtonPositionParameterName, "0"}}; -const FeatureEntry::FeatureParam kTabScrollingButtonPositionLeft[] = { - {features::kTabScrollingButtonPositionParameterName, "1"}}; -const FeatureEntry::FeatureParam kTabScrollingButtonPositionSplit[] = { - {features::kTabScrollingButtonPositionParameterName, "2"}}; - -const FeatureEntry::FeatureVariation kTabScrollingButtonPositionVariations[] = { - {" - to the right of the tabstrip", kTabScrollingButtonPositionRight, - std::size(kTabScrollingButtonPositionRight), nullptr}, - {" - to the left of the tabstrip", kTabScrollingButtonPositionLeft, - std::size(kTabScrollingButtonPositionLeft), nullptr}, - {" - on both sides of the tabstrip", kTabScrollingButtonPositionSplit, - std::size(kTabScrollingButtonPositionSplit), nullptr}}; - #if !BUILDFLAG(IS_ANDROID) -const FeatureEntry::FeatureParam kTabScrollingWithDraggingWithConstantSpeed[] = - {{tabs::kTabScrollingWithDraggingModeName, "1"}}; -const FeatureEntry::FeatureParam kTabScrollingWithDraggingWithVariableSpeed[] = - {{tabs::kTabScrollingWithDraggingModeName, "2"}}; +const FeatureEntry::FeatureParam kShowSidePanelsOnSameSide[] = { + {"side_panel_relative_alignment", "same"}}; +const FeatureEntry::FeatureParam kShowSidePanelsOnOppositeSide[] = { + {"side_panel_relative_alignment", "opposite"}}; -const FeatureEntry::FeatureVariation kTabScrollingWithDraggingVariations[] = { - {" - tabs scrolling with constant speed", - kTabScrollingWithDraggingWithConstantSpeed, - std::size(kTabScrollingWithDraggingWithConstantSpeed), nullptr}, - {" - tabs scrolling with variable speed region", - kTabScrollingWithDraggingWithVariableSpeed, - std::size(kTabScrollingWithDraggingWithVariableSpeed), nullptr}}; - -const FeatureEntry::FeatureParam kScrollableTabStripOverflowDivider[] = { - {tabs::kScrollableTabStripOverflowModeName, "1"}}; -const FeatureEntry::FeatureParam kScrollableTabStripOverflowFade[] = { - {tabs::kScrollableTabStripOverflowModeName, "2"}}; -const FeatureEntry::FeatureParam kScrollableTabStripOverflowShadow[] = { - {tabs::kScrollableTabStripOverflowModeName, "3"}}; - -const FeatureEntry::FeatureVariation kScrollableTabStripOverflowVariations[] = { - {" - Divider", kScrollableTabStripOverflowDivider, - std::size(kScrollableTabStripOverflowDivider), nullptr}, // Divider - {" - Fade", kScrollableTabStripOverflowFade, - std::size(kScrollableTabStripOverflowFade), nullptr}, // Fade - {" - Shadow", kScrollableTabStripOverflowShadow, - std::size(kScrollableTabStripOverflowShadow), nullptr}, // Shadow +const FeatureEntry::FeatureVariation kSidePanelRelativeAlignmentVariants[] = { + {" - show panels on the same side", kShowSidePanelsOnSameSide, + std::size(kShowSidePanelsOnSameSide)}, + {" - show panels on opposite side", kShowSidePanelsOnOppositeSide, + std::size(kShowSidePanelsOnOppositeSide)}, }; #endif @@ -2889,6 +2888,14 @@ const FeatureEntry::FeatureParam kQuickDeletePromoHideArm[] = { {segmentation_platform::features::kEphemeralCardRankerForceHideCardParam, segmentation_platform::kQuickDeletePromo}, }; +const FeatureEntry::FeatureParam kTipsNotificationsPromoShowArm[] = { + {segmentation_platform::features::kEphemeralCardRankerForceShowCardParam, + segmentation_platform::kTipsNotificationsPromo}, +}; +const FeatureEntry::FeatureParam kTipsNotificationsPromoHideArm[] = { + {segmentation_platform::features::kEphemeralCardRankerForceHideCardParam, + segmentation_platform::kTipsNotificationsPromo}, +}; const FeatureEntry::FeatureVariation kEphemeralCardRankerCardOverrideOptions[] = { @@ -2908,6 +2915,12 @@ const FeatureEntry::FeatureVariation kEphemeralCardRankerCardOverrideOptions[] = std::size(kQuickDeletePromoShowArm), nullptr}, {"- Force hide quick delete promo", kQuickDeletePromoHideArm, std::size(kQuickDeletePromoHideArm), nullptr}, + {"- Force show tips notifications promo", + kTipsNotificationsPromoShowArm, + std::size(kTipsNotificationsPromoShowArm), nullptr}, + {"- Force hide tips notifications promo", + kTipsNotificationsPromoHideArm, + std::size(kTipsNotificationsPromoHideArm), nullptr}, }; #endif // BUILDFLAG(IS_ANDROID) #if BUILDFLAG(IS_ANDROID) @@ -3958,20 +3971,6 @@ const FeatureEntry::FeatureVariation kAndroidThemeResourceProviderVariations[] = std::size(sAndroidThemeResourceProviderParams), nullptr}, }; -const FeatureEntry::FeatureParam - kAuxiliaryNavigationStaysInBrowserOnForDesktopWindowing[] = { - {"auxiliary_navigation_stays_in_browser", "desktop_wm"}}; -const FeatureEntry::FeatureParam kAuxiliaryNavigationStaysInBrowserOn[] = { - {"auxiliary_navigation_stays_in_browser", "all_wm"}}; -const FeatureEntry::FeatureVariation - kAuxiliaryNavigationStaysInBrowserVariations[] = { - {" - desktop windowing mode", - kAuxiliaryNavigationStaysInBrowserOnForDesktopWindowing, - std::size(kAuxiliaryNavigationStaysInBrowserOnForDesktopWindowing), - nullptr}, - {" - all windowing modes", kAuxiliaryNavigationStaysInBrowserOn, - std::size(kAuxiliaryNavigationStaysInBrowserOn), nullptr}}; - #endif // BUILDFLAG(IS_ANDROID) #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) || \ @@ -4231,7 +4230,7 @@ const FeatureEntry::FeatureVariation kSkiaGraphiteVariations[] = { std::size(kSkiaGraphite_DebugLabelsEnabled), nullptr}, }; -#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) +#if BUILDFLAG(ENABLE_ON_DEVICE_TRANSLATION) const FeatureEntry::FeatureParam kTranslationAPI_SkipLanguagePackLimit[] = { {"TranslationAPIAcceptLanguagesCheck", "false"}, {"TranslationAPILimitLanguagePackCount", "false"}}; @@ -4239,7 +4238,7 @@ const FeatureEntry::FeatureParam kTranslationAPI_SkipLanguagePackLimit[] = { const FeatureEntry::FeatureVariation kTranslationAPIVariations[] = { {"without language pack limit", kTranslationAPI_SkipLanguagePackLimit, std::size(kTranslationAPI_SkipLanguagePackLimit), nullptr}}; -#endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) +#endif // BUILDFLAG(ENABLE_ON_DEVICE_TRANSLATION) #if BUILDFLAG(IS_ANDROID) const FeatureEntry::FeatureParam kSensitiveContentUsePwmHeuristics[] = { @@ -4375,38 +4374,6 @@ const FeatureEntry::FeatureVariation kServiceWorkerAutoPreloadVariations[] = { std::size(kServiceWorkerAutoPreload_SWNotRunningOnly), nullptr}, }; -// LINT.IfChange(FingerprintingProtectionFilterFeatureParams) -const FeatureEntry::FeatureParam - kEnableFingerprintingProtectionFilter_WithLogging[] = { - {"activation_level", "enabled"}, - {"enable_console_logging", "true"}}; -const FeatureEntry::FeatureParam - kEnableFingerprintingProtectionFilter_DryRunWithLogging[] = { - {"activation_level", "dry_run"}, - {"enable_console_logging", "true"}}; -const FeatureEntry::FeatureVariation - kEnableFingerprintingProtectionFilterVariations[] = { - {" - with Console Logs", - kEnableFingerprintingProtectionFilter_WithLogging, - std::size(kEnableFingerprintingProtectionFilter_WithLogging), nullptr}, - {" - Dry Run with Console Logs", - kEnableFingerprintingProtectionFilter_DryRunWithLogging, - std::size(kEnableFingerprintingProtectionFilter_DryRunWithLogging), - nullptr}}; - -const FeatureEntry::FeatureParam - kEnableFingerprintingProtectionFilterInIncognito_WithLogging[] = { - {"activation_level", "enabled"}, - {"enable_console_logging", "true"}}; -const FeatureEntry::FeatureVariation - kEnableFingerprintingProtectionFilterInIncognitoVariations[] = { - {" - with Console Logs", - kEnableFingerprintingProtectionFilterInIncognito_WithLogging, - std::size( - kEnableFingerprintingProtectionFilterInIncognito_WithLogging), - nullptr}}; -// LINT.ThenChange(//ios/chrome/browser/flags/about_flags.mm:FingerprintingProtectionFilterFeatureParams) - #if !BUILDFLAG(IS_ANDROID) const FeatureEntry::FeatureParam kMerchantTrustEnabledWithSampleData[] = { {page_info::kMerchantTrustEnabledWithSampleDataName, "true"}}; @@ -4517,18 +4484,6 @@ const FeatureEntry::FeatureVariation kStandardBoundSessionCredentialsFederatedSessionsForDevelopers), nullptr}}; -const FeatureEntry::FeatureParam kEnableBlockCanvasReadbackInAllModes[] = { - {"enable_in_regular_mode", "true"}}; -const FeatureEntry::FeatureVariation kEnableBlockCanvasReadbackVariations[] = { - {" - In all browsing modes", kEnableBlockCanvasReadbackInAllModes, - std::size(kEnableBlockCanvasReadbackInAllModes), nullptr}}; - -const FeatureEntry::FeatureParam kEnableCanvasNoiseInAllModes[] = { - {"enable_in_regular_mode", "true"}}; -const FeatureEntry::FeatureVariation kEnableCanvasNoiseVariations[] = { - {" - In all browsing modes", kEnableCanvasNoiseInAllModes, - std::size(kEnableCanvasNoiseInAllModes), nullptr}}; - // LINT.IfChange(AutofillVcnEnrollStrikeExpiryTime) const FeatureEntry::FeatureParam kAutofillVcnEnrollStrikeExpiryTime_120Days[] = {{"autofill_vcn_strike_expiry_time_days", "120"}}; @@ -4683,6 +4638,21 @@ const FeatureEntry::FeatureVariation kGlicEntrypointVariations[] = { kGlicEntrypointVariationsLabelAndIconAndHighlight, std::size(kGlicEntrypointVariationsLabelAndIconAndHighlight), nullptr}, }; + +const FeatureEntry::FeatureParam kGlicButtonAltLabelVariant0[] = { + {"glic-button-alt-label-variant", "0"}}; +const FeatureEntry::FeatureParam kGlicButtonAltLabelVariant1[] = { + {"glic-button-alt-label-variant", "1"}}; +const FeatureEntry::FeatureParam kGlicButtonAltLabelVariant2[] = { + {"glic-button-alt-label-variant", "2"}}; + +const FeatureEntry::FeatureVariation kGlicButtonAltLabelVariations[] = { + {"A", kGlicButtonAltLabelVariant0, std::size(kGlicButtonAltLabelVariant0), + nullptr}, + {"B", kGlicButtonAltLabelVariant1, std::size(kGlicButtonAltLabelVariant1), + nullptr}, + {"C", kGlicButtonAltLabelVariant2, std::size(kGlicButtonAltLabelVariant2), + nullptr}}; #endif // BUILDFLAG(ENABLE_GLIC) const FeatureEntry::FeatureParam kAutofillShowTypePredictionsAsTitle[] = { @@ -4913,21 +4883,17 @@ const FeatureEntry::FeatureVariation kCCTResetTimeoutVariations[] = { }; #endif -#if BUILDFLAG(IS_ANDROID) -const FeatureEntry::FeatureParam kAndroidTabDeclutterAutoDeleteTesting[] = { - {"android_tab_declutter_auto_delete_promo_test", "true"}}; -const FeatureEntry::FeatureVariation - kAndroidTabDeclutterAutoDeleteVariations[] = { - {"Testing", kAndroidTabDeclutterAutoDeleteTesting, - std::size(kAndroidTabDeclutterAutoDeleteTesting), nullptr}}; -#endif // BUILDFLAG(IS_ANDROID) - #if BUILDFLAG(IS_ANDROID) const FeatureEntry::FeatureParam kAndroidHubSearchTabGroupsPane[] = { {"enable_hub_search_tab_groups_pane", "true"}}; +const FeatureEntry::FeatureParam kAndroidHubSearchTabGroupStrings[] = { + {"enable_hub_search_tab_group_strings", "true"}}; const FeatureEntry::FeatureVariation kAndroidHubSearchTabGroupsVariations[] = { {"on Tab Groups Pane", kAndroidHubSearchTabGroupsPane, - std::size(kAndroidHubSearchTabGroupsPane), nullptr}}; + std::size(kAndroidHubSearchTabGroupsPane), nullptr}, + {"with Tab Group Strings", kAndroidHubSearchTabGroupStrings, + std::size(kAndroidHubSearchTabGroupStrings), nullptr}, +}; #endif // BUILDFLAG(IS_ANDROID) #if BUILDFLAG(IS_ANDROID) @@ -4967,6 +4933,23 @@ const FeatureEntry::FeatureParam kAndroidTipsNotificationsEssential[] = { {"essential", "true"}}; const FeatureEntry::FeatureParam kAndroidTipsNotificationsNewFeatures[] = { {"new_features", "true"}}; +const FeatureEntry::FeatureParam + kAndroidTipsNotificationsAlwaysShowOptInPromo[] = { + {"always_show_opt_in_promo", "true"}, + {"trust_and_safety", "true"}}; +const FeatureEntry::FeatureParam + kAndroidTipsNotificationsScheduleInstantNotification[] = { + {"start_time_minutes", "0"}, + {"window_time_minutes", "1"}, + {"trust_and_safety", "true"}}; +const FeatureEntry::FeatureParam + kAndroidTipsNotificationsScheduleDelayedNotification[] = { + {"start_time_minutes", "2"}, + {"window_time_minutes", "4"}, + {"trust_and_safety", "true"}}; +const FeatureEntry::FeatureParam + kAndroidTipsNotificationsResetFeatureTipShown[] = { + {"reset_feature_tip_shown", "true"}}; const FeatureEntry::FeatureVariation kAndroidTipsNotificationsVariations[] = { {" - Trust and Safety", kAndroidTipsNotificationsTrustAndSafety, @@ -4974,7 +4957,26 @@ const FeatureEntry::FeatureVariation kAndroidTipsNotificationsVariations[] = { {" - Essential", kAndroidTipsNotificationsEssential, std::size(kAndroidTipsNotificationsEssential), nullptr}, {" - New Features", kAndroidTipsNotificationsNewFeatures, - std::size(kAndroidTipsNotificationsNewFeatures), nullptr}}; + std::size(kAndroidTipsNotificationsNewFeatures), nullptr}, + {" - Always Show Opt In", kAndroidTipsNotificationsAlwaysShowOptInPromo, + std::size(kAndroidTipsNotificationsAlwaysShowOptInPromo), nullptr}, + {" - Schedule Instant Notification", + kAndroidTipsNotificationsScheduleInstantNotification, + std::size(kAndroidTipsNotificationsScheduleInstantNotification), nullptr}, + {" - Schedule Delayed Notification", + kAndroidTipsNotificationsScheduleDelayedNotification, + std::size(kAndroidTipsNotificationsScheduleDelayedNotification), nullptr}, + {" - Reset Feature Tip Shown", + kAndroidTipsNotificationsResetFeatureTipShown, + std::size(kAndroidTipsNotificationsResetFeatureTipShown), nullptr}, +}; + +const FeatureEntry::FeatureParam kRobustWindowManagementBulkCloseEnabled[] = { + {"bulk_close", "false"}}; +const FeatureEntry::FeatureVariation kRobustWindowManagementVariations[] = { + {"Bulk Close", kRobustWindowManagementBulkCloseEnabled, + std::size(kRobustWindowManagementBulkCloseEnabled), nullptr}}; + #endif // BUILDFLAG(IS_ANDROID) #if !BUILDFLAG(IS_ANDROID) @@ -5038,24 +5040,6 @@ const FeatureEntry::FeatureVariation kNtpCustomizeChromeAutoOpenVariations[] = { {"- IPH only", kNtpCustomizeChromeAutoOpenIPHOnly, std::size(kNtpCustomizeChromeAutoOpenIPHOnly), nullptr}, }; - -const FeatureEntry::FeatureParam kNtpEnterpriseShortcutsWithFakeData[] = { - {"use_fake_data", "true"}, - {"allow_mixing", "false"}}; -const FeatureEntry::FeatureParam - kNtpEnterpriseShortcutsWithFakeDataWithMixing[] = { - {"use_fake_data", "true"}, - {"allow_mixing", "true"}}; -const FeatureEntry::FeatureParam kNtpEnterpriseShortcutsWithMixing[] = { - {"allow_mixing", "true"}}; -const FeatureEntry::FeatureVariation kNtpEnterpriseShortcutsVariations[] = { - {"with fake data", kNtpEnterpriseShortcutsWithFakeData, - std::size(kNtpEnterpriseShortcutsWithFakeData), nullptr}, - {"with fake data with mixing", - kNtpEnterpriseShortcutsWithFakeDataWithMixing, - std::size(kNtpEnterpriseShortcutsWithFakeDataWithMixing), nullptr}, - {"with mixing", kNtpEnterpriseShortcutsWithMixing, - std::size(kNtpEnterpriseShortcutsWithMixing), nullptr}}; #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) || \ // BUILDFLAG(IS_CHROMEOS) @@ -5183,6 +5167,81 @@ const FeatureEntry::FeatureVariation kProfilePickerTextVariations[] = { }; #endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) +#if BUILDFLAG(IS_ANDROID) +const FeatureEntry::FeatureParam kAndroidDesktopZoomScalingFactorSmall[] = { + {"desktop-zoom-scaling-factor", "109"}, + {"monitor-zoom-scaling-factor", "120"}}; +const FeatureEntry::FeatureParam kAndroidDesktopZoomScalingFactorMedium[] = { + {"desktop-zoom-scaling-factor", "115"}, + {"monitor-zoom-scaling-factor", "125"}}; +const FeatureEntry::FeatureParam kAndroidDesktopZoomScalingFactorLarge[] = { + {"desktop-zoom-scaling-factor", "120"}, + {"monitor-zoom-scaling-factor", "130"}}; +const FeatureEntry::FeatureVariation kAndroidDesktopZoomScalingVariations[] = { + {"with 109 scaling, 120 monitor", kAndroidDesktopZoomScalingFactorSmall, + std::size(kAndroidDesktopZoomScalingFactorSmall), nullptr}, + {"with 115 scaling, 125 monitor", kAndroidDesktopZoomScalingFactorMedium, + std::size(kAndroidDesktopZoomScalingFactorMedium), nullptr}, + {"with 120 scaling, 130 monitor", kAndroidDesktopZoomScalingFactorLarge, + std::size(kAndroidDesktopZoomScalingFactorLarge), nullptr}}; +#endif // BUILDFLAG(IS_ANDROID) + +const FeatureEntry::FeatureParam kContextualTaskPermanentButton[] = { + {"ContextualTasksEntryPoint", "toolbar-permanent"}}; +const FeatureEntry::FeatureParam kContextualTaskEphemeralButton[] = { + {"ContextualTasksEntryPoint", "toolbar-revisit"}}; +const FeatureEntry::FeatureParam kContextualTaskPageAction[] = { + {"ContextualTasksEntryPoint", "page-action-revisit"}}; + +const FeatureEntry::FeatureVariation kContextualTaskEntryPointVariations[] = { + {"permanent toolbar button", kContextualTaskPermanentButton, + std::size(kContextualTaskPermanentButton), nullptr}, + {"ephemeral toolbar button", kContextualTaskEphemeralButton, + std::size(kContextualTaskEphemeralButton), nullptr}, + {"page action chip", kContextualTaskPageAction, + std::size(kContextualTaskPageAction), nullptr}}; + +const FeatureEntry::FeatureParam kTaskScopedSidePanel[] = { + {"TaskScopedSidePanel", "true"}}; +const FeatureEntry::FeatureParam kTabScopedSidePanel[] = { + {"TaskScopedSidePanel", "false"}}; + +const FeatureEntry::FeatureVariation kContextualTaskContextVariations[] = { + {" - Task scoped side panel", kTaskScopedSidePanel, + std::size(kTaskScopedSidePanel), nullptr}, + {" - Tab scoped side panel", kTabScopedSidePanel, + std::size(kTabScopedSidePanel), nullptr}}; + +#if BUILDFLAG(IS_ANDROID) +const FeatureEntry::FeatureParam kAnimatedProgressBar30FpsCap[] = { + {"fps_cap", "30"}}; +const FeatureEntry::FeatureParam kAnimatedProgressBar60FpsCap[] = { + {"fps_cap", "60"}}; + +const FeatureEntry::FeatureVariation + kAndroidAnimatedProgressBarInBrowserVariations[] = { + {"with 30fps cap", kAnimatedProgressBar30FpsCap, + std::size(kAnimatedProgressBar30FpsCap), nullptr}, + {"with 60fsp cap", kAnimatedProgressBar60FpsCap, + std::size(kAnimatedProgressBar60FpsCap), nullptr}}; +#endif // BUILDFLAG(IS_ANDROID) + +#if BUILDFLAG(IS_ANDROID) +const FeatureEntry::Choice kOmniboxAutofocusOnIncognitoNtpChoices[] = { + {flags_ui::kGenericExperimentChoiceDefault, "", ""}, + {flags_ui::kGenericExperimentChoiceDisabled, switches::kDisableFeatures, + "OmniboxAutofocusOnIncognitoNtp"}, + {"Autofocus when physical keyboard attached or not first tab", + switches::kEnableFeatures, + "OmniboxAutofocusOnIncognitoNtp:not_first_tab/true/with_prediction/false/" + "with_hardware_keyboard/true"}, + {"Autofocus when physical keyboard attached or prediction condition met", + switches::kEnableFeatures, + "OmniboxAutofocusOnIncognitoNtp:not_first_tab/false/with_prediction/true/" + "with_hardware_keyboard/true"}, +}; +#endif // !BUILDFLAG(IS_ANDROID) + // RECORDING USER METRICS FOR FLAGS: // ----------------------------------------------------------------------------- // The first line of the entry is the internal name. @@ -5293,6 +5352,10 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kExtensionsOnExtensionUrlsName, flag_descriptions::kExtensionsOnExtensionUrlsDescription, kOsAll, SINGLE_VALUE_TYPE(extensions::switches::kExtensionsOnExtensionURLs)}, + {"web-request-security-info", + flag_descriptions::kWebRequestSecurityInfoName, + flag_descriptions::kWebRequestSecurityInfoDescription, kOsDesktop, + FEATURE_VALUE_TYPE(extensions_features::kWebRequestSecurityInfo)}, #endif // ENABLE_EXTENSIONS #if BUILDFLAG(IS_ANDROID) {"contextual-search-suppress-short-view", @@ -5336,7 +5399,7 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kShowAutofillTypePredictionsName, flag_descriptions::kShowAutofillTypePredictionsDescription, kOsAll, FEATURE_WITH_PARAMS_VALUE_TYPE( - autofill::features::test::kAutofillShowTypePredictions, + autofill::features::debug::kAutofillShowTypePredictions, kAutofillShowTypePredictionsVariations, "AutofillShowTypePredictions")}, {"autofill-more-prominent-popup", @@ -5405,6 +5468,9 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kWebTransportDeveloperModeName, flag_descriptions::kWebTransportDeveloperModeDescription, kOsAll, SINGLE_VALUE_TYPE(switches::kWebTransportDeveloperMode)}, + {"structured-dns-errors", flag_descriptions::kStructuredDnsErrorsName, + flag_descriptions::kStructuredDnsErrorsDescription, kOsAll, + FEATURE_VALUE_TYPE(net::features::kUseStructuredDnsErrors)}, {"disable-javascript-harmony-shipping", flag_descriptions::kJavascriptHarmonyShippingName, flag_descriptions::kJavascriptHarmonyShippingDescription, kOsAll, @@ -5455,18 +5521,6 @@ const FeatureEntry kFeatureEntries[] = { {"top-chrome-touch-ui", flag_descriptions::kTopChromeTouchUiName, flag_descriptions::kTopChromeTouchUiDescription, kOsDesktop, MULTI_VALUE_TYPE(kTopChromeTouchUiChoices)}, - -#if BUILDFLAG(ENABLE_WEBUI_TAB_STRIP) - {flag_descriptions::kWebUITabStripFlagId, - flag_descriptions::kWebUITabStripName, - flag_descriptions::kWebUITabStripDescription, kOsDesktop, - FEATURE_VALUE_TYPE(features::kWebUITabStrip)}, - {"webui-tab-strip-context-menu-after-tap", - flag_descriptions::kWebUITabStripContextMenuAfterTapName, - flag_descriptions::kWebUITabStripContextMenuAfterTapDescription, - kOsDesktop, - FEATURE_VALUE_TYPE(features::kWebUITabStripContextMenuAfterTap)}, -#endif // BUILDFLAG(ENABLE_WEBUI_TAB_STRIP) #if BUILDFLAG(IS_CHROMEOS) {"allow-apn-modification-policy", flag_descriptions::kAllowApnModificationPolicyName, @@ -5786,7 +5840,7 @@ const FeatureEntry kFeatureEntries[] = { #if BUILDFLAG(IS_ANDROID) {"zero-copy-video-encoding", flag_descriptions::kZeroCopyVideoEncodingName, flag_descriptions::kZeroCopyVideoEncodingDescription, kOsAndroid, - FEATURE_VALUE_TYPE(media::kEnableSurfaceInputForAndroidVEA)}, + FEATURE_VALUE_TYPE(media::kSurfaceInputForAndroidVEA)}, #endif // BUILDFLAG(IS_ANDROID) {"enable-show-autofill-signatures", flag_descriptions::kShowAutofillSignaturesName, @@ -6236,10 +6290,6 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kPulseaudioLoopbackForScreenShareDescription, kOsLinux, FEATURE_VALUE_TYPE(media::kPulseaudioLoopbackForScreenShare)}, - {"simplified-tab-drag-ui", flag_descriptions::kSimplifiedTabDragUIName, - flag_descriptions::kSimplifiedTabDragUIDescription, kOsLinux, - FEATURE_VALUE_TYPE(features::kAllowWindowDragUsingSystemDragDrop)}, - {"wayland-per-window-scaling", flag_descriptions::kWaylandPerWindowScalingName, flag_descriptions::kWaylandPerWindowScalingDescription, kOsLinux, @@ -6261,6 +6311,11 @@ const FeatureEntry kFeatureEntries[] = { {"openxr-spatial-entities", flag_descriptions::kOpenXrSpatialEntitiesName, flag_descriptions::kOpenXrSpatialEntitiesDescription, kOsWin | kOsAndroid, FEATURE_VALUE_TYPE(device::features::kOpenXrSpatialEntities)}, + {"spatial-entities-depth-hit-test", + flag_descriptions::kSpatialEntitesDepthHitTestName, + flag_descriptions::kSpatialEntitesDepthHitTestDescription, + kOsWin | kOsAndroid, + FEATURE_VALUE_TYPE(device::features::kSpatialEntitesDepthHitTest)}, #endif // BUILDFLAG(ENABLE_OPENXR) {"webxr-projection-layers", flag_descriptions::kWebXrProjectionLayersName, flag_descriptions::kWebXrProjectionLayersDescription, kOsWin | kOsAndroid, @@ -6281,11 +6336,7 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kWebXrHandAnonymizationStrategyName, flag_descriptions::kWebXrHandAnonymizationStrategyDescription, kOsDesktop | kOsAndroid, MULTI_VALUE_TYPE(KWebXrHandAnonymizationChoices)}, -#if BUILDFLAG(IS_ANDROID) - {"webxr-shared-buffers", flag_descriptions::kWebXrSharedBuffersName, - flag_descriptions::kWebXrSharedBuffersDescription, kOsAndroid, - FEATURE_VALUE_TYPE(device::features::kWebXrSharedBuffers)}, -#if BUILDFLAG(ENABLE_OPENXR) +#if BUILDFLAG(IS_ANDROID) && BUILDFLAG(ENABLE_OPENXR) {"enable-openxr-android", flag_descriptions::kOpenXRName, flag_descriptions::kOpenXRDescription, kOsAndroid, FEATURE_VALUE_TYPE(device::features::kOpenXR)}, @@ -6296,8 +6347,7 @@ const FeatureEntry kFeatureEntries[] = { {"enable-openxr-extended", flag_descriptions::kOpenXRExtendedFeaturesName, flag_descriptions::kOpenXRExtendedFeaturesDescription, kOsAndroid, FEATURE_VALUE_TYPE(device::features::kOpenXrExtendedFeatureSupport)}, -#endif // BUILDFLAG(ENABLE_OPENXR) -#endif // BUILDFLAG(IS_ANDROID) +#endif // BUILDFLAG(IS_ANDROID) && BUILDFLAG(ENABLE_OPENXR) #endif // ENABLE_VR #if BUILDFLAG(IS_CHROMEOS) {"disable-accelerated-mjpeg-decode", @@ -6554,30 +6604,22 @@ const FeatureEntry kFeatureEntries[] = { #endif // BUILDFLAG(IS_ANDROID) {"enable-force-dark", flag_descriptions::kAutoWebContentsDarkModeName, flag_descriptions::kAutoWebContentsDarkModeDescription, kOsAll, -#if BUILDFLAG(IS_CHROMEOS) - // TODO(crbug.com/40651782): Investigate crash reports and - // re-enable variations for ChromeOS. FEATURE_VALUE_TYPE(blink::features::kForceWebContentsDarkMode)}, -#else - FEATURE_WITH_PARAMS_VALUE_TYPE(blink::features::kForceWebContentsDarkMode, - kForceDarkVariations, - "ForceDarkVariations")}, -#endif // BUILDFLAG(IS_CHROMEOS) #if BUILDFLAG(IS_ANDROID) {"enable-accessibility-deprecate-type-announce", flag_descriptions::kAccessibilityDeprecateTypeAnnounceName, flag_descriptions::kAccessibilityDeprecateTypeAnnounceDescription, kOsAndroid, FEATURE_VALUE_TYPE(features::kAccessibilityDeprecateTypeAnnounce)}, + {"enable-accessibility-improve-live-region-announce", + flag_descriptions::kAccessibilityImproveLiveRegionAnnounceName, + flag_descriptions::kAccessibilityImproveLiveRegionAnnounceDescription, + kOsAndroid, + FEATURE_VALUE_TYPE(features::kAccessibilityImproveLiveRegionAnnounce)}, {"enable-accessibility-labeledby", flag_descriptions::kEnableAccessibilityLabeledByName, flag_descriptions::kEnableAccessibilityLabeledByDescription, kOsAndroid, FEATURE_VALUE_TYPE(features::kAccessibilityLabeledBy)}, - {"enable-accessibility-include-long-click-action", - flag_descriptions::kAccessibilityIncludeLongClickActionName, - flag_descriptions::kAccessibilityIncludeLongClickActionDescription, - kOsAndroid, - FEATURE_VALUE_TYPE(features::kAccessibilityIncludeLongClickAction)}, {"enable-accessibility-populate-supplemental-description-api", flag_descriptions::kAccessibilityPopulateSupplementalDescriptionApiName, flag_descriptions:: @@ -6585,6 +6627,17 @@ const FeatureEntry kFeatureEntries[] = { kOsAndroid, FEATURE_VALUE_TYPE( features::kAccessibilityPopulateSupplementalDescriptionApi)}, + {"enable-accessibility-sequential-focus", + flag_descriptions::kAccessibilitySequentialFocusName, + flag_descriptions::kAccessibilitySequentialFocusDescription, kOsAndroid, + FEATURE_VALUE_TYPE(features::kAccessibilitySequentialFocus)}, + {"enable-accessibility-set-selectable-on-all-nodes-with-text", + flag_descriptions::kAccessibilitySetSelectableOnAllNodesWithTextName, + flag_descriptions:: + kAccessibilitySetSelectableOnAllNodesWithTextDescription, + kOsAndroid, + FEATURE_VALUE_TYPE( + features::kAccessibilitySetSelectableOnAllNodesWithText)}, {"enable-accessibility-text-formatting", flag_descriptions::kAccessibilityTextFormattingName, flag_descriptions::kAccessibilityTextFormattingDescription, kOsAndroid, @@ -6617,10 +6670,7 @@ const FeatureEntry kFeatureEntries[] = { kOsAll, SINGLE_VALUE_TYPE( ::switches::kEnableExperimentalAccessibilityLanguageDetectionDynamic)}, - {"enable-aria-element-reflection", - flag_descriptions::kAriaElementReflectionName, - flag_descriptions::kAriaElementReflectionDescription, kOsAll, - FEATURE_VALUE_TYPE(features::kEnableAriaElementReflection)}, + #if BUILDFLAG(IS_CHROMEOS) {"enable-cros-autocorrect-params-tuning", flag_descriptions::kAutocorrectParamsTuningName, @@ -6638,10 +6688,6 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kImeAssistMultiWordName, flag_descriptions::kImeAssistMultiWordDescription, kOsCrOS, FEATURE_VALUE_TYPE(ash::features::kAssistMultiWord)}, - {"enable-cros-ime-fst-decoder-params-update", - flag_descriptions::kImeFstDecoderParamsUpdateName, - flag_descriptions::kImeFstDecoderParamsUpdateDescription, kOsCrOS, - FEATURE_VALUE_TYPE(ash::features::kImeFstDecoderParamsUpdate)}, {"enable-cros-ime-system-emoji-picker-gif-support", flag_descriptions::kImeSystemEmojiPickerGIFSupportName, flag_descriptions::kImeSystemEmojiPickerGIFSupportDescription, kOsCrOS, @@ -6749,7 +6795,7 @@ const FeatureEntry kFeatureEntries[] = { {"enable-secure-payment-confirmation-browser-bound-key", flag_descriptions::kSecurePaymentConfirmationBrowserBoundKeysName, flag_descriptions::kSecurePaymentConfirmationBrowserBoundKeysDescription, - kOsAndroid, + kOsAndroid | kOsMac | kOsWin, FEATURE_VALUE_TYPE( blink::features::kSecurePaymentConfirmationBrowserBoundKeys)}, #if BUILDFLAG(IS_ANDROID) @@ -6905,9 +6951,6 @@ const FeatureEntry kFeatureEntries[] = { {"eche-swa", flag_descriptions::kEcheSWAName, flag_descriptions::kEcheSWADescription, kOsCrOS, FEATURE_VALUE_TYPE(ash::features::kEcheSWA)}, - {"eche-launcher", flag_descriptions::kEcheLauncherName, - flag_descriptions::kEcheLauncherDescription, kOsCrOS, - FEATURE_VALUE_TYPE(ash::features::kEcheLauncherListView)}, {"eche-swa-check-android-network-info", flag_descriptions::kEcheSWACheckAndroidNetworkInfoName, flag_descriptions::kEcheSWACheckAndroidNetworkInfoDescription, kOsCrOS, @@ -7040,6 +7083,10 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kChangeUnfocusedPriorityName, flag_descriptions::kChangeUnfocusedPriorityDescription, kOsAndroid, FEATURE_VALUE_TYPE(chrome::android::kChangeUnfocusedPriority)}, + + {"chrome-item-picker-ui", flag_descriptions::kChromeItemPickerUiName, + flag_descriptions::kChromeItemPickerUiDescription, kOsAndroid, + FEATURE_VALUE_TYPE(chrome::android::kChromeItemPickerUi)}, #endif // BUILDFLAG(IS_ANDROID) {"most-visited-tiles-new-scoring", @@ -7414,12 +7461,6 @@ const FeatureEntry kFeatureEntries[] = { kOmniboxUIMaxAutocompleteMatchesVariations, "OmniboxBundledExperimentV1")}, - {"omnibox-max-url-matches", flag_descriptions::kOmniboxMaxURLMatchesName, - flag_descriptions::kOmniboxMaxURLMatchesDescription, kOsAll, - FEATURE_WITH_PARAMS_VALUE_TYPE(omnibox::kOmniboxMaxURLMatches, - kOmniboxMaxURLMatchesVariations, - "OmniboxMaxURLMatchesVariations")}, - {"omnibox-mia-zps", flag_descriptions::kOmniboxMiaZps, flag_descriptions::kOmniboxMiaZpsDescription, kOsAll, #if BUILDFLAG(IS_ANDROID) @@ -7557,6 +7598,12 @@ const FeatureEntry kFeatureEntries[] = { kJourneysVariations, "HistoryJourneys")}, + {"annotated-page-content-extraction", + flag_descriptions::kAnnotatedPageContentExtractionName, + flag_descriptions::kAnnotatedPageContentExtractionDescription, kOsAndroid, + FEATURE_VALUE_TYPE( + page_content_annotations::features::kAnnotatedPageContentExtraction)}, + {"extract-related-searches-from-prefetched-zps-response", flag_descriptions::kExtractRelatedSearchesFromPrefetchedZPSResponseName, flag_descriptions:: @@ -7573,15 +7620,6 @@ const FeatureEntry kFeatureEntries[] = { kPageContentAnnotationsVariations, "PageContentAnnotations")}, - {"page-content-annotations-persist-salient-image-metadata", - flag_descriptions::kPageContentAnnotationsPersistSalientImageMetadataName, - flag_descriptions:: - kPageContentAnnotationsPersistSalientImageMetadataDescription, - kOsDesktop, - FEATURE_VALUE_TYPE( - page_content_annotations::features:: - kPageContentAnnotationsPersistSalientImageMetadata)}, - {"page-content-annotations-remote-page-metadata", flag_descriptions::kPageContentAnnotationsRemotePageMetadataName, flag_descriptions::kPageContentAnnotationsRemotePageMetadataDescription, @@ -7591,6 +7629,10 @@ const FeatureEntry kFeatureEntries[] = { kRemotePageMetadataVariations, "RemotePageMetadata")}, + {"page-content-cache", flag_descriptions::kPageContentCacheName, + flag_descriptions::kPageContentCacheDescription, kOsAndroid, + FEATURE_VALUE_TYPE(page_content_annotations::features::kPageContentCache)}, + {"page-visibility-page-content-annotations", flag_descriptions::kPageVisibilityPageContentAnnotationsName, flag_descriptions::kPageVisibilityPageContentAnnotationsDescription, @@ -7612,28 +7654,6 @@ const FeatureEntry kFeatureEntries[] = { "MBIMode")}, #if !BUILDFLAG(IS_ANDROID) - {flag_descriptions::kScrollableTabStripFlagId, - flag_descriptions::kScrollableTabStripName, - flag_descriptions::kScrollableTabStripDescription, kOsDesktop, - FEATURE_WITH_PARAMS_VALUE_TYPE(tabs::kScrollableTabStrip, - kTabScrollingVariations, - "TabScrolling")}, -#endif - {flag_descriptions::kTabScrollingButtonPositionFlagId, - flag_descriptions::kTabScrollingButtonPositionName, - flag_descriptions::kTabScrollingButtonPositionDescription, kOsDesktop, - FEATURE_WITH_PARAMS_VALUE_TYPE(features::kTabScrollingButtonPosition, - kTabScrollingButtonPositionVariations, - "TabScrollingButtonPosition")}, - -#if !BUILDFLAG(IS_ANDROID) - {flag_descriptions::kScrollableTabStripWithDraggingFlagId, - flag_descriptions::kScrollableTabStripWithDraggingName, - flag_descriptions::kScrollableTabStripWithDraggingDescription, kOsDesktop, - FEATURE_WITH_PARAMS_VALUE_TYPE(tabs::kScrollableTabStripWithDragging, - kTabScrollingWithDraggingVariations, - "TabScrollingWithDragging")}, - {"tabsearch-toolbar-button", flag_descriptions::kLaunchedTabSearchToolbarName, flag_descriptions::kLaunchedTabSearchToolbarDescription, kOsDesktop, @@ -7646,16 +7666,18 @@ const FeatureEntry kFeatureEntries[] = { kTabstripComboButtonVariations, "TabstripComboButton")}, - {flag_descriptions::kScrollableTabStripOverflowFlagId, - flag_descriptions::kScrollableTabStripOverflowName, - flag_descriptions::kScrollableTabStripOverflowDescription, kOsDesktop, - FEATURE_WITH_PARAMS_VALUE_TYPE(tabs::kScrollableTabStripOverflow, - kScrollableTabStripOverflowVariations, - "ScrollableTabStripOverflow")}, + {"tab-groups-focusing", flag_descriptions::kTabGroupsFocusingName, + flag_descriptions::kTabGroupsFocusingDescription, kOsDesktop, + FEATURE_VALUE_TYPE(features::kTabGroupsFocusing)}, +#endif - {"split-tabstrip", flag_descriptions::kSplitTabStripName, - flag_descriptions::kSplitTabStripDescription, kOsDesktop, - FEATURE_VALUE_TYPE(tabs::kSplitTabStrip)}, +#if !BUILDFLAG(IS_ANDROID) + {"side-panel-relative-alignment", + flag_descriptions::kSidePanelRelativeAlignmentName, + flag_descriptions::kSidePanelRelativeAlignmentDescription, kOsDesktop, + FEATURE_WITH_PARAMS_VALUE_TYPE(features::kToolbarHeightSidePanel, + kSidePanelRelativeAlignmentVariants, + "SidePanelRelativeAlignment")}, #endif #if BUILDFLAG(IS_ANDROID) @@ -7737,11 +7759,6 @@ const FeatureEntry kFeatureEntries[] = { kNtpCalendarModuleVariations, "DesktopNtpModules")}, - {"ntp-compose-entrypoint", - flag_descriptions::kNtpSearchboxComposeEntrypointName, - flag_descriptions::kNtpSearchboxComposeEntrypointDescription, kOsDesktop, - FEATURE_VALUE_TYPE(ntp_composebox::kNtpSearchboxComposeEntrypoint)}, - {"ntp-composebox", flag_descriptions::kNtpComposeboxName, flag_descriptions::kNtpComposeboxDescription, kOsDesktop, FEATURE_WITH_PARAMS_VALUE_TYPE(ntp_composebox::kNtpComposebox, @@ -7770,12 +7787,6 @@ const FeatureEntry kFeatureEntries[] = { kNtpDriveModuleVariations, "DesktopNtpModules")}, - {"ntp-drive-module-no-sync-requirement", - flag_descriptions::kNtpDriveModuleHistorySyncRequirementName, - flag_descriptions::kNtpDriveModuleHistorySyncRequirementDescription, - kOsDesktop, - FEATURE_VALUE_TYPE(ntp_features::kNtpDriveModuleHistorySyncRequirement)}, - {"ntp-drive-module-segmentation", flag_descriptions::kNtpDriveModuleSegmentationName, flag_descriptions::kNtpDriveModuleSegmentationDescription, kOsDesktop, @@ -7792,6 +7803,31 @@ const FeatureEntry kFeatureEntries[] = { FEATURE_VALUE_TYPE(ntp_features::kNtpDummyModules)}, #endif + {"ntp-feature-optimization-module-removal", + flag_descriptions::kNtpFeatureOptimizationModuleRemovalName, + flag_descriptions::kNtpFeatureOptimizationModuleRemovalDescription, + kOsDesktop, + FEATURE_WITH_PARAMS_VALUE_TYPE( + ntp_features::kNtpFeatureOptimizationModuleRemoval, + kNtpFeatureOptimizationModuleRemovalVariations, + "NtpFeatureOptimizationModuleRemoval")}, + + {"ntp-feature-optimization-shortcuts-removal", + flag_descriptions::kNtpFeatureOptimizationShortcutsRemovalName, + flag_descriptions::kNtpFeatureOptimizationShortcutsRemovalDescription, + kOsDesktop, + FEATURE_WITH_PARAMS_VALUE_TYPE( + ntp_features::kNtpFeatureOptimizationShortcutsRemoval, + kNtpFeatureOptimizationShortcutsRemovalVariations, + "NtpFeatureOptimizationShortcutsRemoval")}, + + {"ntp-feature-optimization-dismiss-modules-removal", + flag_descriptions::kNtpFeatureOptimizationDismissModulesRemovalName, + flag_descriptions::kNtpFeatureOptimizationDismissModulesRemovalDescription, + kOsDesktop, + FEATURE_VALUE_TYPE( + ntp_features::kNtpFeatureOptimizationDismissModulesRemoval)}, + {"ntp-footer", flag_descriptions::kNtpFooterName, flag_descriptions::kNtpFooterDescription, kOsDesktop, FEATURE_VALUE_TYPE(ntp_features::kNtpFooter)}, @@ -8086,20 +8122,6 @@ const FeatureEntry kFeatureEntries[] = { kOsAndroid, FEATURE_VALUE_TYPE(external_intents::kNavigationCaptureRefactorAndroid)}, - {"enable-auxiliary-navigation-stays-in-browser", - flag_descriptions::kAuxiliaryNavigationStaysInBrowserName, - flag_descriptions::kAuxiliaryNavigationStaysInBrowserDescription, - kOsAndroid, - FEATURE_WITH_PARAMS_VALUE_TYPE( - external_intents::kAuxiliaryNavigationStaysInBrowser, - kAuxiliaryNavigationStaysInBrowserVariations, - "AuxiliaryNavigationStaysInBrowser")}, - - {"enable-auxiliary-navigation-stays-in-PWA", - flag_descriptions::kAuxiliaryNavigationStaysInPWAName, - flag_descriptions::kAuxiliaryNavigationStaysInPWADescription, kOsAndroid, - FEATURE_VALUE_TYPE(external_intents::kAuxiliaryNavigationStaysInPWA)}, - {"enable-magic-stack-android", flag_descriptions::kMagicStackAndroidName, flag_descriptions::kMagicStackAndroidDescription, kOsAndroid, FEATURE_WITH_PARAMS_VALUE_TYPE(chrome::android::kMagicStackAndroid, @@ -8119,18 +8141,6 @@ const FeatureEntry kFeatureEntries[] = { FEATURE_VALUE_TYPE( chrome::android::kEducationalTipDefaultBrowserPromoCard)}, - {"enable-reparent-auxiliary-navigation-from-pwa", - flag_descriptions::kReparentAuxiliaryNavigationFromPWAName, - flag_descriptions::kReparentAuxiliaryNavigationFromPWADescription, - kOsAndroid, - FEATURE_VALUE_TYPE(external_intents::kReparentAuxiliaryNavigationFromPWA)}, - - {"enable-reparent-top-level-navigation-from-pwa", - flag_descriptions::kReparentTopLevelNavigationFromPWAName, - flag_descriptions::kReparentTopLevelNavigationFromPWADescription, - kOsAndroid, - FEATURE_VALUE_TYPE(external_intents::kReparentTopLevelNavigationFromPWA)}, - {"enable-segmentation-platform-ephemeral_card_ranker", flag_descriptions::kSegmentationPlatformEphemeralCardRankerName, flag_descriptions::kSegmentationPlatformEphemeralCardRankerDescription, @@ -8243,6 +8253,12 @@ const FeatureEntry kFeatureEntries[] = { FEATURE_VALUE_TYPE( chrome::android::kAnnotatedPageContentsVirtualStructure)}, + {"auto-revoke-suspicious-notification", + flag_descriptions::kAutoRevokeSuspiciousNotificationName, + flag_descriptions::kAutoRevokeSuspiciousNotificationDescription, + kOsAndroid, + FEATURE_VALUE_TYPE(safe_browsing::kAutoRevokeSuspiciousNotification)}, + #endif // BUILDFLAG(IS_ANDROID) {"report-notification-content-detection-data", @@ -8940,20 +8956,11 @@ const FeatureEntry kFeatureEntries[] = { SINGLE_VALUE_TYPE(switches::kEnableWebGPUDeveloperFeatures)}, #if BUILDFLAG(IS_CHROMEOS) - {"game-dashboard-game-pwas", flag_descriptions::kGameDashboardGamePWAs, - flag_descriptions::kGameDashboardGamePWAsDescription, kOsCrOS, - FEATURE_VALUE_TYPE(ash::features::kGameDashboardGamePWAs)}, - {"game-dashboard-gamepad-support", flag_descriptions::kGameDashboardGamepadSupport, flag_descriptions::kGameDashboardGamepadSupport, kOsCrOS, FEATURE_VALUE_TYPE(ash::features::kGameDashboardGamepadSupport)}, - {"game-dashboard-games-in-test", - flag_descriptions::kGameDashboardGamesInTest, - flag_descriptions::kGameDashboardGamesInTestDescription, kOsCrOS, - FEATURE_VALUE_TYPE(ash::features::kGameDashboardGamesInTest)}, - {"game-dashboard-utilities", flag_descriptions::kGameDashboardUtilities, flag_descriptions::kGameDashboardUtilitiesDescription, kOsCrOS, FEATURE_VALUE_TYPE(ash::features::kGameDashboardUtilities)}, @@ -9015,9 +9022,6 @@ const FeatureEntry kFeatureEntries[] = { #endif // BUILDFLAG(IS_ANDROID) #if BUILDFLAG(IS_CHROMEOS) - {"scalable-iph-debug", flag_descriptions::kScalableIphDebugName, - flag_descriptions::kScalableIphDebugDescription, kOsCrOS, - FEATURE_VALUE_TYPE(ash::features::kScalableIphDebug)}, {"settings-app-notification-settings", flag_descriptions::kSettingsAppNotificationSettingsName, flag_descriptions::kSettingsAppNotificationSettingsDescription, kOsCrOS, @@ -9223,10 +9227,6 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kEnableMediaFoundationVideoCaptureDescription, kOsWin, FEATURE_VALUE_TYPE(media::kMediaFoundationVideoCapture)}, #endif // BUILDFLAG(IS_WIN) - {"shared-highlighting-manager", - flag_descriptions::kSharedHighlightingManagerName, - flag_descriptions::kSharedHighlightingManagerDescription, kOsAll, - FEATURE_VALUE_TYPE(shared_highlighting::kSharedHighlightingManager)}, #if BUILDFLAG(IS_CHROMEOS) {"reset-shortcut-customizations", @@ -9257,6 +9257,13 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kEnableExperimentalCookieFeaturesDescription, kOsAll, MULTI_VALUE_TYPE(kEnableExperimentalCookieFeaturesChoices)}, + {"enable-extension-install-policy-fetching", + flag_descriptions::kEnableExtensionInstallPolicyFetchingName, + flag_descriptions::kEnableExtensionInstallPolicyFetchingDescription, + kOsWin | kOsMac | kOsLinux | kOsCrOS, + FEATURE_VALUE_TYPE( + policy::features::kEnableExtensionInstallPolicyFetching)}, + {"canvas-2d-layers", flag_descriptions::kCanvas2DLayersName, flag_descriptions::kCanvas2DLayersDescription, kOsAll, SINGLE_VALUE_TYPE(switches::kEnableCanvas2DLayers)}, @@ -9361,13 +9368,6 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kLauncherKeywordExtractionScoring, flag_descriptions::kLauncherKeywordExtractionScoringDescription, kOsCrOS, FEATURE_VALUE_TYPE(search_features::kLauncherKeywordExtractionScoring)}, - {"launcher-nudge-session-reset", - flag_descriptions::kLauncherNudgeSessionResetName, - flag_descriptions::kLauncherNudgeSessionResetDescription, kOsCrOS, - FEATURE_VALUE_TYPE(ash::features::kLauncherNudgeSessionReset)}, - {"text-in-shelf", flag_descriptions::kTextInShelfName, - flag_descriptions::kTextInShelfDescription, kOsCrOS, - FEATURE_VALUE_TYPE(ash::features::kHomeButtonWithText)}, {"hybrid-charger-notifications", flag_descriptions::kHybridChargerNotificationsName, flag_descriptions::kHybridChargerNotificationsDescription, kOsCrOS, @@ -9431,11 +9431,6 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kSmartSuggestionForLargeDownloadsDescription, kOsAndroid, FEATURE_VALUE_TYPE(download::features::kSmartSuggestionForLargeDownloads)}, - - {"quick-delete-android-survey", - flag_descriptions::kQuickDeleteAndroidSurveyName, - flag_descriptions::kQuickDeleteAndroidSurveyDescription, kOsAndroid, - FEATURE_VALUE_TYPE(chrome::android::kQuickDeleteAndroidSurvey)}, #endif // BUILDFLAG(IS_ANDROID) {"pwa-update-dialog-for-icon", @@ -9509,6 +9504,16 @@ const FeatureEntry kFeatureEntries[] = { autofill::features::kAutofillEnableOffersInClankKeyboardAccessory)}, #endif +#if BUILDFLAG(IS_CHROMEOS) + {"autofill-enable-payments-mandatory-reauth-chromeos", + flag_descriptions::kAutofillEnablePaymentsMandatoryReauthChromeOsName, + flag_descriptions:: + kAutofillEnablePaymentsMandatoryReauthChromeOsDescription, + kOsCrOS, + FEATURE_VALUE_TYPE( + autofill::features::kAutofillEnablePaymentsMandatoryReauthChromeOs)}, +#endif + #if BUILDFLAG(ENABLE_PDF) {"pdf-xfa-forms", flag_descriptions::kPdfXfaFormsName, flag_descriptions::kPdfXfaFormsDescription, kOsDesktop, @@ -9520,14 +9525,6 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kEnableManagedConfigurationWebApiDescription, kOsCrOS, FEATURE_VALUE_TYPE(blink::features::kManagedConfiguration)}, - {"clear-cross-site-cross-browsing-context-group-window-name", - flag_descriptions::kClearCrossSiteCrossBrowsingContextGroupWindowNameName, - flag_descriptions:: - kClearCrossSiteCrossBrowsingContextGroupWindowNameDescription, - kOsAll, - FEATURE_VALUE_TYPE( - features::kClearCrossSiteCrossBrowsingContextGroupWindowName)}, - #if BUILDFLAG(IS_CHROMEOS) {kWallpaperFastRefreshInternalName, flag_descriptions::kWallpaperFastRefreshName, @@ -9552,13 +9549,6 @@ const FeatureEntry kFeatureEntries[] = { FEATURE_VALUE_TYPE(features::kUIDebugTools), }, -#endif -#if BUILDFLAG(IS_ANDROID) - {"optimization-guide-push-notifications", - flag_descriptions::kOptimizationGuidePushNotificationName, - flag_descriptions::kOptimizationGuidePushNotificationDescription, - kOsAndroid, - FEATURE_VALUE_TYPE(optimization_guide::features::kPushNotifications)}, #endif {"fedcm-alternative-identifiers", @@ -9614,6 +9604,11 @@ const FeatureEntry kFeatureEntries[] = { FEATURE_VALUE_TYPE( segmentation_platform::features::kSegmentationPlatformFedCmUser)}, + {"fedcm-navigation-interception", + flag_descriptions::kFedCmNavigationInterceptionName, + flag_descriptions::kFedCmNavigationInterceptionDescription, kOsAll, + FEATURE_VALUE_TYPE(features::kFedCmNavigationInterception)}, + {"web-identity-digital-credentials", flag_descriptions::kWebIdentityDigitalCredentialsName, flag_descriptions::kWebIdentityDigitalCredentialsDescription, kOsAll, @@ -9649,16 +9644,6 @@ const FeatureEntry kFeatureEntries[] = { #endif #if BUILDFLAG(IS_ANDROID) - {"enable-legacy-tabstate-deprecation", - flag_descriptions::kLegacyTabStateDeprecationName, - flag_descriptions::kLegacyTabStateDeprecationDescription, kOsAndroid, - FEATURE_VALUE_TYPE(chrome::android::kLegacyTabStateDeprecation)}, - - {"enable-cleanup-legacy-tabstate", - flag_descriptions::kCleanupLegacyTabStateName, - flag_descriptions::kCleanupLegacyTabStateDescription, kOsAndroid, - FEATURE_VALUE_TYPE(chrome::android::kCleanupLegacyTabState)}, - {"biometric-reauth-password-filling", flag_descriptions::kBiometricReauthForPasswordFillingName, flag_descriptions::kBiometricReauthForPasswordFillingDescription, @@ -10001,24 +9986,12 @@ const FeatureEntry kFeatureEntries[] = { #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || \ BUILDFLAG(IS_CHROMEOS) - {"media-session-enter-picture-in-picture", - flag_descriptions::kMediaSessionEnterPictureInPictureName, - flag_descriptions::kMediaSessionEnterPictureInPictureDescription, - kOsDesktop, - FEATURE_VALUE_TYPE(blink::features::kMediaSessionEnterPictureInPicture)}, - {"auto-picture-in-picture-for-video-playback", flag_descriptions::kAutoPictureInPictureForVideoPlaybackName, flag_descriptions::kAutoPictureInPictureForVideoPlaybackDescription, kOsDesktop, FEATURE_VALUE_TYPE(media::kAutoPictureInPictureForVideoPlayback)}, - {"video-picture-in-picture-controls-update-2024", - flag_descriptions::kVideoPictureInPictureControlsUpdate2024Name, - flag_descriptions::kVideoPictureInPictureControlsUpdate2024Description, - kOsDesktop, - FEATURE_VALUE_TYPE(media::kVideoPictureInPictureControlsUpdate2024)}, - {"document-picture-in-picture-animate-resize", flag_descriptions::kDocumentPictureInPictureAnimateResizeName, flag_descriptions::kDocumentPictureInPictureAnimateResizeDescription, @@ -10308,20 +10281,6 @@ const FeatureEntry kFeatureEntries[] = { permissions::features::kPermissionSiteSettingsRadioButton)}, #if BUILDFLAG(IS_ANDROID) - {"safety-hub-magic-stack", flag_descriptions::kSafetyHubMagicStackName, - flag_descriptions::kSafetyHubMagicStackDescription, kOsAndroid, - FEATURE_VALUE_TYPE(features::kSafetyHubMagicStack)}, - - {"safety-hub-android-survey", - flag_descriptions::kSafetyHubAndroidSurveyName, - flag_descriptions::kSafetyHubAndroidSurveyDescription, kOsAndroid, - FEATURE_VALUE_TYPE(features::kSafetyHubAndroidSurvey)}, - - {"safety-hub-android-survey-v2", - flag_descriptions::kSafetyHubAndroidSurveyV2Name, - flag_descriptions::kSafetyHubAndroidSurveyV2Description, kOsAndroid, - FEATURE_VALUE_TYPE(features::kSafetyHubAndroidSurveyV2)}, - {"safety-hub-weak-reused-passwords", flag_descriptions::kSafetyHubWeakAndReusedPasswordsName, flag_descriptions::kSafetyHubWeakAndReusedPasswordsDescription, kOsAndroid, @@ -10410,6 +10369,11 @@ const FeatureEntry kFeatureEntries[] = { #endif #if !BUILDFLAG(IS_ANDROID) + {"aim-entry-point-direct-navigation", + flag_descriptions::kAiModeEntryPointAlwaysNavigatesName, + flag_descriptions::kAiModeEntryPointAlwaysNavigatesDescription, kOsDesktop, + FEATURE_VALUE_TYPE(omnibox::kAiModeEntryPointAlwaysNavigates)}, + {"webui-omnibox-aim-popup", flag_descriptions::kWebUIOmniboxAimPopupName, flag_descriptions::kWebUIOmniboxAimPopupDescription, kOsDesktop, FEATURE_WITH_PARAMS_VALUE_TYPE(omnibox::internal::kWebUIOmniboxAimPopup, @@ -10473,11 +10437,6 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kTabStripIncognitoMigrationDescription, kOsAndroid, FEATURE_VALUE_TYPE(chrome::android::kTabStripIncognitoMigration)}, - {"tab-strip-layout-optimization", - flag_descriptions::kTabStripLayoutOptimizationName, - flag_descriptions::kTabStripLayoutOptimizationDescription, kOsAndroid, - FEATURE_VALUE_TYPE(chrome::android::kTabStripLayoutOptimization)}, - {"tab-strip-mouse-close-resize-delay", flag_descriptions::kTabStripMouseCloseResizeDelayName, flag_descriptions::kTabStripMouseCloseResizeDelayDescription, kOsAndroid, @@ -10603,11 +10562,6 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kCompressionDictionaryTTLDescription, kOsAll, FEATURE_VALUE_TYPE(network::features::kCompressionDictionaryTTL)}, - {"enable-container-type-no-layout-containment", - flag_descriptions::kContainerTypeNoLayoutContainmentName, - flag_descriptions::kContainerTypeNoLayoutContainmentDescription, kOsAll, - FEATURE_VALUE_TYPE(blink::features::kContainerTypeNoLayoutContainment)}, - #if BUILDFLAG(IS_ANDROID) {"deprecated-external-picker-function", flag_descriptions::kDeprecatedExternalPickerFunctionName, @@ -10693,9 +10647,6 @@ const FeatureEntry kFeatureEntries[] = { autofill::features::kAutofillEnableCvcStorageAndFilling)}, #if BUILDFLAG(IS_CHROMEOS) - {"drive-fs-show-cse-files", flag_descriptions::kDriveFsShowCSEFilesName, - flag_descriptions::kDriveFsShowCSEFilesDescription, kOsCrOS, - FEATURE_VALUE_TYPE(ash::features::kDriveFsShowCSEFiles)}, {"drive-fs-mirroring", flag_descriptions::kDriveFsMirroringName, flag_descriptions::kDriveFsShowCSEFilesDescription, kOsCrOS, FEATURE_VALUE_TYPE(ash::features::kDriveFsMirroring)}, @@ -10791,11 +10742,6 @@ const FeatureEntry kFeatureEntries[] = { #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) || // BUILDFLAG(IS_CHROMEOS) - {"ip-protection-proxy-opt-out", - flag_descriptions::kIpProtectionProxyOptOutName, - flag_descriptions::kIpProtectionProxyOptOutDescription, kOsAll, - MULTI_VALUE_TYPE(kIpProtectionProxyOptOutChoices)}, - {"protected-audience-debug-token", flag_descriptions::kProtectedAudiencesConsentedDebugTokenName, flag_descriptions::kProtectedAudiencesConsentedDebugTokenDescription, @@ -10972,13 +10918,6 @@ const FeatureEntry kFeatureEntries[] = { chrome::android::kFullscreenInsetsApiMigrationOnAutomotive)}, #endif // BUILDFLAG(IS_ANDROID) -#if BUILDFLAG(IS_MAC) - {"enable-mac-ime-live-conversion-fix", - flag_descriptions::kMacImeLiveConversionFixName, - flag_descriptions::kMacImeLiveConversionFixDescription, kOsMac, - FEATURE_VALUE_TYPE(features::kMacImeLiveConversionFix)}, -#endif - {"tear-off-web-app-tab-opens-web-app-window", flag_descriptions::kTearOffWebAppAppTabOpensWebAppWindowName, flag_descriptions::kTearOffWebAppAppTabOpensWebAppWindowDescription, @@ -11110,21 +11049,6 @@ const FeatureEntry kFeatureEntries[] = { kOsAndroid, FEATURE_VALUE_TYPE(chrome::android::kAndroidTabDeclutterArchiveTabGroups)}, - {"android-tab-declutter-auto-delete", - flag_descriptions::kAndroidTabDeclutterAutoDeleteName, - flag_descriptions::kAndroidTabDeclutterAutoDeleteDescription, kOsAndroid, - FEATURE_WITH_PARAMS_VALUE_TYPE( - chrome::android::kAndroidTabDeclutterAutoDelete, - kAndroidTabDeclutterAutoDeleteVariations, - "AndroidTabDeclutterAutoDeleteVariations")}, - - {"android-tab-declutter-auto-delete-kill-switch", - flag_descriptions::kAndroidTabDeclutterAutoDeleteKillSwitchName, - flag_descriptions::kAndroidTabDeclutterAutoDeleteKillSwitchDescription, - kOsAndroid, - FEATURE_VALUE_TYPE( - chrome::android::kAndroidTabDeclutterAutoDeleteKillSwitch)}, - {"android-tab-declutter-performance-improvements", flag_descriptions::kAndroidTabDeclutterPerformanceImprovementsName, flag_descriptions::kAndroidTabDeclutterPerformanceImprovementsDescription, @@ -11145,7 +11069,7 @@ const FeatureEntry kFeatureEntries[] = { {"android-zoom-indicator", flag_descriptions::kAndroidZoomIndicatorName, flag_descriptions::kAndroidZoomIndicatorDescription, kOsAndroid, - FEATURE_VALUE_TYPE(chrome::android::kAndroidZoomIndicator)}, + FEATURE_VALUE_TYPE(browser_ui::kAndroidZoomIndicator)}, {"android-tips-notifications", flag_descriptions::kAndroidTipsNotificationsName, @@ -11199,13 +11123,6 @@ const FeatureEntry kFeatureEntries[] = { #endif // BUILDFLAG(IS_CHROMEOS) #if BUILDFLAG(IS_ANDROID) - {"autofill-enable-syncing-of-pix-bank-accounts", - flag_descriptions::kAutofillEnableSyncingOfPixBankAccountsName, - flag_descriptions::kAutofillEnableSyncingOfPixBankAccountsDescription, - kOsAndroid, - FEATURE_VALUE_TYPE( - autofill::features::kAutofillEnableSyncingOfPixBankAccounts)}, - {"enable-pix-account-linking", flag_descriptions::kEnablePixAccountLinkingName, flag_descriptions::kEnablePixAccountLinkingDescription, kOsAndroid, @@ -11244,29 +11161,6 @@ const FeatureEntry kFeatureEntries[] = { FEATURE_VALUE_TYPE(net::features::kReduceIPAddressChangeNotification)}, #endif // BUILDFLAG(IS_MAC) - // LINT.IfChange(FingerprintingProtectionFilterFeatureEntries) - {"enable-fingerprinting-protection-blocklist", - flag_descriptions::kEnableFingerprintingProtectionBlocklistName, - flag_descriptions::kEnableFingerprintingProtectionBlocklistDescription, - kOsAll, - FEATURE_WITH_PARAMS_VALUE_TYPE( - fingerprinting_protection_filter::features:: - kEnableFingerprintingProtectionFilter, - kEnableFingerprintingProtectionFilterVariations, - "EnableFingerprintingProtectionFilter")}, - - {"enable-fingerprinting-protection-blocklist-incognito", - flag_descriptions::kEnableFingerprintingProtectionBlocklistInIncognitoName, - flag_descriptions:: - kEnableFingerprintingProtectionBlocklistInIncognitoDescription, - kOsAll, - FEATURE_WITH_PARAMS_VALUE_TYPE( - fingerprinting_protection_filter::features:: - kEnableFingerprintingProtectionFilterInIncognito, - kEnableFingerprintingProtectionFilterInIncognitoVariations, - "EnableFingerprintingProtectionFilterInIncognito")}, - // LINT.ThenChange(//ios/chrome/browser/flags/about_flags.mm:FingerprintingProtectionFeatureEntries) - {"enable-standard-device-bound-session-credentials", flag_descriptions::kEnableStandardBoundSessionCredentialsName, flag_descriptions::kEnableStandardBoundSessionCredentialsDescription, @@ -11419,13 +11313,6 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kCssMasonryLayoutDescription, kOsAll, FEATURE_VALUE_TYPE(blink::features::kCSSMasonryLayout)}, - {"storage-access-api-follows-same-origin-policy", - flag_descriptions::kStorageAccessApiFollowsSameOriginPolicyName, - flag_descriptions::kStorageAccessApiFollowsSameOriginPolicyDescription, - kOsAll, - FEATURE_VALUE_TYPE( - net::features::kStorageAccessApiFollowsSameOriginPolicy)}, - {"canvas-2d-hibernation", flag_descriptions::kCanvasHibernationName, flag_descriptions::kCanvasHibernationDescription, kOsAll, FEATURE_VALUE_TYPE(blink::features::kCanvas2DHibernation)}, @@ -11610,10 +11497,6 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kDevToolsPrivacyUIDescription, kOsAll, FEATURE_VALUE_TYPE(features::kDevToolsPrivacyUI)}, - {"devtools-greendev-ui", flag_descriptions::kDevToolsGreenDevUiName, - flag_descriptions::kDevToolsGreenDevUiDescription, kOsAll, - FEATURE_VALUE_TYPE(features::kDevToolsGreenDevUi)}, - {"devtools-individual-request-throttling", flag_descriptions::kDevToolsIndividualRequestThrottlingName, flag_descriptions::kDevToolsIndividualRequestThrottlingDescription, kOsAll, @@ -11635,6 +11518,17 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kPermissionsAIP92Description, kOsAll, FEATURE_VALUE_TYPE(permissions::features::kPermissionsAIP92)}, +#if BUILDFLAG(IS_ANDROID) + {"permissions-android-clapper-loud", + flag_descriptions::kPermissionsAndroidClapperLoudName, + flag_descriptions::kPermissionsAndroidClapperLoudDescription, kOsAndroid, + FEATURE_VALUE_TYPE(permissions::kPermissionsAndroidClapperLoud)}, + {"permissions-android-clapper-quiet", + flag_descriptions::kPermissionsAndroidClapperQuietName, + flag_descriptions::kPermissionsAndroidClapperQuietDescription, kOsAndroid, + FEATURE_VALUE_TYPE(permissions::kPermissionsAndroidClapperQuiet)}, +#endif // BUILDFLAG(IS_ANDROID) + #if BUILDFLAG(IS_CHROMEOS) {"exclude-display-in-mirror-mode", flag_descriptions::kExcludeDisplayInMirrorModeName, @@ -11726,14 +11620,6 @@ const FeatureEntry kFeatureEntries[] = { #endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || // BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) -#if BUILDFLAG(IS_ANDROID) - {"biometric-auth-identity-check", - flag_descriptions::kBiometricAuthIdentityCheckName, - flag_descriptions::kBiometricAuthIdentityCheckDescription, kOsAndroid, - FEATURE_VALUE_TYPE( - password_manager::features::kBiometricAuthIdentityCheck)}, -#endif // BUILDFLAG(IS_ANDROID) - {"autofill-enable-cvc-storage-and-filling-standalone-form-enhancement", flag_descriptions:: kAutofillEnableCvcStorageAndFillingStandaloneFormEnhancementName, @@ -11781,9 +11667,9 @@ const FeatureEntry kFeatureEntries[] = { FEATURE_VALUE_TYPE( autofill::features::kAutofillEnableCardInfoRuntimeRetrieval)}, -#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) +#if BUILDFLAG(ENABLE_ON_DEVICE_TRANSLATION) {"translation-api", flag_descriptions::kTranslationAPIName, - flag_descriptions::kTranslationAPIDescription, kOsMac | kOsWin | kOsLinux, + flag_descriptions::kTranslationAPIDescription, kOsDesktop, FEATURE_WITH_PARAMS_VALUE_TYPE(blink::features::kTranslationAPI, kTranslationAPIVariations, "TranslationAPI")}, @@ -11791,9 +11677,9 @@ const FeatureEntry kFeatureEntries[] = { {"translation-api-streaming-by-sentence", flag_descriptions::kTranslationAPIStreamingBySentenceName, flag_descriptions::kTranslationAPIStreamingBySentenceDescription, - kOsMac | kOsWin | kOsLinux, + kOsDesktop, FEATURE_VALUE_TYPE(on_device_translation::kTranslateStreamingBySentence)}, -#endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) +#endif // BUILDFLAG(ENABLE_ON_DEVICE_TRANSLATION) {"password-form-grouped-affiliations", flag_descriptions::kPasswordFormGroupedAffiliationsName, @@ -11816,10 +11702,6 @@ const FeatureEntry kFeatureEntries[] = { "ContextualCueingEnabledOptions")}, #endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) - {"partitioned-popins", flag_descriptions::kPartitionedPopinsName, - flag_descriptions::kPartitionedPopinsDescription, kOsDesktop, - FEATURE_VALUE_TYPE(blink::features::kPartitionedPopins)}, - #if !BUILDFLAG(IS_ANDROID) {"separate-local-and-account-search-engines", flag_descriptions::kSeparateLocalAndAccountSearchEnginesName, @@ -11838,6 +11720,13 @@ const FeatureEntry kFeatureEntries[] = { "PartitionAllocWithAdvancedChecks")}, #endif // PA_BUILDFLAG(USE_PARTITION_ALLOC_AS_MALLOC) + {"partition-visited-link-database-with-self-links", + flag_descriptions::kPartitionVisitedLinkDatabaseWithSelfLinksName, + flag_descriptions::kPartitionVisitedLinkDatabaseWithSelfLinksDescription, + kOsAll, + FEATURE_VALUE_TYPE( + blink::features::kPartitionVisitedLinkDatabaseWithSelfLinks)}, + {"predictable-reported-quota", flag_descriptions::kPredictableReportedQuotaName, flag_descriptions::kPredictableReportedQuotaDescription, kOsAll, @@ -11880,13 +11769,6 @@ const FeatureEntry kFeatureEntries[] = { FEATURE_VALUE_TYPE(features::kMacAccessibilityAPIMigration)}, #endif // BUILDFLAG(IS_MAC) -#if BUILDFLAG(ENABLE_EXTENSIONS) - {"allow-legacy-mv2-extensions", - flag_descriptions::kAllowLegacyMV2ExtensionsName, - flag_descriptions::kAllowLegacyMV2ExtensionsDescription, kOsDesktop, - FEATURE_VALUE_TYPE(extensions_features::kAllowLegacyMV2Extensions)}, -#endif // BUILDFLAG(ENABLE_EXTENSIONS) - #if !BUILDFLAG(IS_ANDROID) {"enable-lens-overlay-translate-languages", flag_descriptions::kLensOverlayTranslateLanguagesName, @@ -11896,98 +11778,92 @@ const FeatureEntry kFeatureEntries[] = { #if BUILDFLAG(ENABLE_GLIC) {"glic", flag_descriptions::kGlicName, flag_descriptions::kGlicDescription, - kOsMac | kOsWin | kOsLinux, FEATURE_VALUE_TYPE(features::kGlic)}, + kOsDesktop, FEATURE_VALUE_TYPE(features::kGlic)}, {"glic-z-order-changes", flag_descriptions::kGlicZOrderChangesName, - flag_descriptions::kGlicZOrderChangesDescription, - kOsMac | kOsWin | kOsLinux, + flag_descriptions::kGlicZOrderChangesDescription, kOsDesktop, FEATURE_VALUE_TYPE(features::kGlicZOrderChanges)}, {"glic-actor", flag_descriptions::kGlicActorName, - flag_descriptions::kGlicActorDescription, kOsMac | kOsWin | kOsLinux, + flag_descriptions::kGlicActorDescription, kOsDesktop, FEATURE_VALUE_TYPE(features::kGlicActor)}, {"glic-actor-autofill", flag_descriptions::kGlicActorAutofillName, flag_descriptions::kGlicActorAutofillDescription, kOsDesktop, FEATURE_VALUE_TYPE(features::kGlicActorAutofill)}, - {"actor-form-filling-service-enable-address", - flag_descriptions::kActorFormFillingServiceEnableAddressName, - flag_descriptions::kActorFormFillingServiceEnableAddressDescription, - kOsDesktop, - FEATURE_VALUE_TYPE(features::kActorFormFillingServiceEnableAddress)}, - {"actor-form-filling-service-enable-credit-card", - flag_descriptions::kActorFormFillingServiceEnableCreditCardName, - flag_descriptions::kActorFormFillingServiceEnableCreditCardDescription, - kOsDesktop, - FEATURE_VALUE_TYPE(features::kActorFormFillingServiceEnableCreditCard)}, {"glic-detached", flag_descriptions::kGlicDetachedName, - flag_descriptions::kGlicDetachedDescription, kOsMac | kOsWin | kOsLinux, + flag_descriptions::kGlicDetachedDescription, kOsDesktop, FEATURE_VALUE_TYPE(features::kGlicDetached)}, {"glic-panel-reset-top-chrome-button", flag_descriptions::kGlicPanelResetTopChromeButtonName, - flag_descriptions::kGlicPanelResetTopChromeButtonDescription, - kOsMac | kOsWin | kOsLinux, + flag_descriptions::kGlicPanelResetTopChromeButtonDescription, kOsDesktop, FEATURE_WITH_PARAMS_VALUE_TYPE(features::kGlicPanelResetTopChromeButton, kGlicPanelResetTopChromeButtonVariations, "GlicPanelResetTopChromeButton")}, {"glic-panel-reset-on-start", flag_descriptions::kGlicPanelResetOnStartName, - flag_descriptions::kGlicPanelResetOnStartDescription, - kOsMac | kOsWin | kOsLinux, + flag_descriptions::kGlicPanelResetOnStartDescription, kOsDesktop, FEATURE_VALUE_TYPE(features::kGlicPanelResetOnStart)}, {"glic-panel-set-position-on-drag", flag_descriptions::kGlicPanelSetPositionOnDragName, - flag_descriptions::kGlicPanelSetPositionOnDragDescription, - kOsMac | kOsWin | kOsLinux, + flag_descriptions::kGlicPanelSetPositionOnDragDescription, kOsDesktop, FEATURE_VALUE_TYPE(features::kGlicPanelSetPositionOnDrag)}, {"glic-panel-reset-on-session-timeout", flag_descriptions::kGlicPanelResetOnSessionTimeoutName, - flag_descriptions::kGlicPanelResetOnSessionTimeoutDescription, - kOsMac | kOsWin | kOsLinux, + flag_descriptions::kGlicPanelResetOnSessionTimeoutDescription, kOsDesktop, FEATURE_WITH_PARAMS_VALUE_TYPE(features::kGlicPanelResetOnSessionTimeout, kGlicPanelResetOnSessionTimeoutVariations, "GlicPanelResetOnSessionTimeout")}, {"glic-panel-reset-size-and-location-on-open", flag_descriptions::kGlicPanelResetSizeAndLocationName, - flag_descriptions::kGlicPanelResetSizeAndLocationDescription, - kOsMac | kOsWin | kOsLinux, + flag_descriptions::kGlicPanelResetSizeAndLocationDescription, kOsDesktop, FEATURE_VALUE_TYPE(features::kGlicPanelResetSizeAndLocationOnOpen)}, {"glic-pre-warming", flag_descriptions::kGlicWarmingName, - flag_descriptions::kGlicWarmingDescription, kOsMac | kOsWin | kOsLinux, + flag_descriptions::kGlicWarmingDescription, kOsDesktop, FEATURE_WITH_PARAMS_VALUE_TYPE(features::kGlicWarming, kGlicWarmingVariations, "GlicWarming")}, {"glic-side-panel", flag_descriptions::kGlicSidePanelName, - flag_descriptions::kGlicSidePanelDescription, kOsMac | kOsWin | kOsLinux, + flag_descriptions::kGlicSidePanelDescription, kOsDesktop, FEATURE_VALUE_TYPE(features::kGlicMultiInstance)}, {"glic-fre-pre-warming", flag_descriptions::kGlicFreWarmingName, - flag_descriptions::kGlicFreWarmingDescription, kOsMac | kOsWin | kOsLinux, + flag_descriptions::kGlicFreWarmingDescription, kOsDesktop, FEATURE_VALUE_TYPE(features::kGlicFreWarming)}, {"glic-entrypoint-variations", flag_descriptions::kGlicEntrypointVariationsName, - flag_descriptions::kGlicEntrypointVariationsDescription, - kOsMac | kOsWin | kOsLinux, + flag_descriptions::kGlicEntrypointVariationsDescription, kOsDesktop, FEATURE_WITH_PARAMS_VALUE_TYPE(features::kGlicEntrypointVariations, kGlicEntrypointVariations, "GlicEntrypointVariations")}, {"glic-default-to-last-active-conversation", flag_descriptions::kGlicDefaultToLastActiveConversationName, flag_descriptions::kGlicDefaultToLastActiveConversationDescription, - kOsMac | kOsWin | kOsLinux, + kOsDesktop, FEATURE_VALUE_TYPE(features::kGlicDefaultToLastActiveConversation)}, {"glic-bind-pinned-unbound-tab", flag_descriptions::kGlicBindPinnedUnboundTabName, - flag_descriptions::kGlicBindPinnedUnboundTabDescription, - kOsMac | kOsWin | kOsLinux, + flag_descriptions::kGlicBindPinnedUnboundTabDescription, kOsDesktop, FEATURE_VALUE_TYPE(features::kGlicBindPinnedUnboundTab)}, {"glic-button-pressed-state", flag_descriptions::kGlicButtonPressedStateName, - flag_descriptions::kGlicButtonPressedStateDescription, - kOsMac | kOsWin | kOsLinux, + flag_descriptions::kGlicButtonPressedStateDescription, kOsDesktop, FEATURE_VALUE_TYPE(features::kGlicButtonPressedState)}, + {"glic-button-alt-label", flag_descriptions::kGlicButtonAltLabelName, + flag_descriptions::kGlicButtonAltLabelDescription, kOsDesktop, + FEATURE_WITH_PARAMS_VALUE_TYPE(features::kGlicButtonAltLabel, + kGlicButtonAltLabelVariations, + "GlicButtonAltLabel")}, {"glic-capture-region", flag_descriptions::kGlicCaptureRegionName, flag_descriptions::kGlicCaptureRegionDescription, kOsAll, FEATURE_VALUE_TYPE(features::kGlicCaptureRegion)}, {"glic-daisy-chain-new-tabs", flag_descriptions::kGlicDaisyChainNewTabsName, - flag_descriptions::kGlicDaisyChainNewTabsDescription, - kOsMac | kOsWin | kOsLinux, + flag_descriptions::kGlicDaisyChainNewTabsDescription, kOsDesktop, FEATURE_VALUE_TYPE(features::kGlicDaisyChainNewTabs)}, + {"glic-toolbar-height-side-panel", + flag_descriptions::kGlicUseToolbarHeightSidePanelName, + flag_descriptions::kGlicUseToolbarHeightSidePanelDescription, kOsDesktop, + FEATURE_VALUE_TYPE(features::kGlicUseToolbarHeightSidePanel)}, +#if BUILDFLAG(IS_CHROMEOS) + {"glic-use-non-client", flag_descriptions::kGlicUseNonClientName, + flag_descriptions::kGlicUseNonClientDescription, kOsCrOS, + FEATURE_VALUE_TYPE(features::kGlicUseNonClient)}, +#endif // BUILDFLAG(IS_CHROMEOS) #endif // BUILDFLAG(ENABLE_GLIC) #if BUILDFLAG(IS_ANDROID) @@ -12038,10 +11914,6 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kHappyEyeballsV3Description, kOsAll, FEATURE_VALUE_TYPE(net::features::kHappyEyeballsV3)}, - {"signature-based-sri", flag_descriptions::kSignatureBasedSriName, - flag_descriptions::kSignatureBasedSriDescription, kOsAll, - FEATURE_VALUE_TYPE(network::features::kSRIMessageSignatureEnforcement)}, - #if !BUILDFLAG(IS_ANDROID) {"policy-promotion-banner-flag", flag_descriptions::kEnablePolicyPromotionBannerName, @@ -12294,6 +12166,11 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kAndroidMinimalUiLargeScreenDescription, kOsAndroid, FEATURE_VALUE_TYPE(webapps::features::kAndroidMinimalUiLargeScreen)}, + {"enable-android-new-media-picker", + flag_descriptions::kAndroidNewMediaPickerName, + flag_descriptions::kAndroidNewMediaPickerDescription, kOsAndroid, + FEATURE_VALUE_TYPE(chrome::android::kAndroidNewMediaPicker)}, + {"enable-android-window-controls-overlay", flag_descriptions::kAndroidWindowControlsOverlayName, flag_descriptions::kAndroidWindowControlsOverlayDescription, kOsAndroid, @@ -12318,6 +12195,13 @@ const FeatureEntry kFeatureEntries[] = { chrome::android::kThirdPartyDisableChromeAutofillSettingsScreen)}, #endif // BUILDFLAG(IS_ANDROID) +#if BUILDFLAG(IS_ANDROID) + {"enable-android-window-popup-custom-tab-ui", + flag_descriptions::kAndroidWindowPopupCustomTabUiName, + flag_descriptions::kAndroidWindowPopupCustomTabUiDescription, kOsAndroid, + FEATURE_VALUE_TYPE(chrome::android::kAndroidWindowPopupCustomTabUi)}, +#endif // BUILDFLAG(IS_ANDROID) + #if BUILDFLAG(IS_ANDROID) {"enable-android-window-popup-large-screen", flag_descriptions::kAndroidWindowPopupLargeScreenName, @@ -12387,6 +12271,13 @@ const FeatureEntry kFeatureEntries[] = { FEATURE_VALUE_TYPE(printing::features::kApiPrintingMarginsAndScale)}, #endif // BUILDFLAG(IS_CHROMEOS) + {"align-pdf-default-print-settings-with-html", + flag_descriptions::kAlignPdfDefaultPrintSettingsWithHTMLName, + flag_descriptions::kAlignPdfDefaultPrintSettingsWithHTMLDescription, + kOsAll, + FEATURE_VALUE_TYPE( + printing::features::kAlignPdfDefaultPrintSettingsWithHTML)}, + {"supervised-user-block-interstitial-v3", flag_descriptions::kSupervisedUserBlockInterstitialV3Name, flag_descriptions::kSupervisedUserBlockInterstitialV3Description, kOsAll, @@ -12465,13 +12356,6 @@ const FeatureEntry kFeatureEntries[] = { FEATURE_VALUE_TYPE(chromeos::features::kNotebookLmAppPreinstall)}, #endif // BUILDFLAG(IS_CHROMEOS) - {"enable-canvas-noise", flag_descriptions::kEnableCanvasNoiseName, - flag_descriptions::kEnableCanvasNoiseDescription, kOsAll, - FEATURE_WITH_PARAMS_VALUE_TYPE( - fingerprinting_protection_interventions::features::kCanvasNoise, - kEnableCanvasNoiseVariations, - "EnableCanvasNoise")}, - #if !BUILDFLAG(IS_ANDROID) {"tab-capture-infobar-links", flag_descriptions::kTabCaptureInfobarLinksName, @@ -12622,7 +12506,9 @@ const FeatureEntry kFeatureEntries[] = { {"robust-window-management", flag_descriptions::kRobustWindowManagementName, flag_descriptions::kRobustWindowManagementDescription, kOsAndroid, - FEATURE_VALUE_TYPE(chrome::android::kRobustWindowManagement)}, + FEATURE_WITH_PARAMS_VALUE_TYPE(chrome::android::kRobustWindowManagement, + kRobustWindowManagementVariations, + "RobustWindowManagement")}, {"robust-window-management-experimental", flag_descriptions::kRobustWindowManagementExperimentalName, @@ -13007,6 +12893,14 @@ const FeatureEntry kFeatureEntries[] = { FEATURE_VALUE_TYPE(switches::kForceHistoryOptInScreen)}, #endif // BUILDFLAG(IS_ANDROID) +#if BUILDFLAG(IS_ANDROID) + {"fre-signin-alternative-secondary-button-text", + flag_descriptions::kFRESignInAlternativeSecondaryButtonTextName, + flag_descriptions::kFRESignInAlternativeSecondaryButtonTextDescription, + kOsAndroid, + FEATURE_VALUE_TYPE(switches::kFRESignInAlternativeSecondaryButtonText)}, +#endif // BUILDFLAG(IS_ANDROID) + #if !BUILDFLAG(IS_ANDROID) {"enable-lens-overlay-edu-action-chip", flag_descriptions::kLensOverlayEduActionChipName, @@ -13122,13 +13016,6 @@ const FeatureEntry kFeatureEntries[] = { FEATURE_VALUE_TYPE(password_manager::features:: kApplyClientsideModelPredictionsForPasswordTypes)}, - {"apply-clientside-model-predictions-for-otps", - flag_descriptions::kApplyClientsideModelPredictionsForOtpsName, - flag_descriptions::kApplyClientsideModelPredictionsForOtpsDescription, - kOsAll, - FEATURE_VALUE_TYPE( - password_manager::features::kApplyClientsideModelPredictionsForOtps)}, - {"canvas-draw-element", flag_descriptions::kCanvasDrawElementName, flag_descriptions::kCanvasDrawElementDescription, kOsAll, FEATURE_VALUE_TYPE(blink::features::kCanvasDrawElement)}, @@ -13151,13 +13038,6 @@ const FeatureEntry kFeatureEntries[] = { #endif // BUILDFLAG(ENABLE_DICE_SUPPORT) -#if BUILDFLAG(IS_ANDROID) - {"android-animated-progress-bar-in-viz", - flag_descriptions::kAndroidAnimatedProgressBarInVizName, - flag_descriptions::kAndroidAnimatedProgressBarInVizDescription, kOsAndroid, - FEATURE_VALUE_TYPE(features::kAndroidAnimatedProgressBarInViz)}, -#endif // BUILDFLAG(IS_ANDROID) - #if !BUILDFLAG(IS_ANDROID) {"enable-lens-overlay-force-empty-csb-query", flag_descriptions::kLensOverlayForceEmptyCsbQueryName, @@ -13179,6 +13059,12 @@ const FeatureEntry kFeatureEntries[] = { kOsDesktop, FEATURE_VALUE_TYPE( browsing_data::features::kBrowsingHistoryActorIntegrationM1)}, + + {"browsing-history-actor-integration-M2", + flag_descriptions::kBrowsingHistoryActorIntegrationM2Name, + flag_descriptions::kBrowsingHistoryActorIntegrationM2Description, + kOsDesktop, + FEATURE_VALUE_TYPE(history::kBrowsingHistoryActorIntegrationM2)}, #endif // !BUILDFLAG(IS_ANDROID) {"autofill-manual-testing-data", @@ -13243,9 +13129,7 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kEnableNtpEnterpriseShortcutsName, flag_descriptions::kEnableNtpEnterpriseShortcutsDescription, static_cast(kOsCrOS | kOsLinux | kOsMac | kOsWin), - FEATURE_WITH_PARAMS_VALUE_TYPE(ntp_tiles::kNtpEnterpriseShortcuts, - kNtpEnterpriseShortcutsVariations, - "NtpEnterpriseShortcuts")}, + FEATURE_VALUE_TYPE(ntp_tiles::kNtpEnterpriseShortcuts)}, #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) ||\ // BUILDFLAG(IS_CHROMEOS) @@ -13298,6 +13182,12 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kMulticastInDirectSocketsName, flag_descriptions::kMulticastInDirectSocketsDescription, kOsDesktop, FEATURE_VALUE_TYPE(blink::features::kMulticastInDirectSockets)}, + {"controlled-frame-web-request-security-info", + flag_descriptions::kControlledFrameWebRequestSecurityInfoName, + flag_descriptions::kControlledFrameWebRequestSecurityInfoDescription, + kOsDesktop, + FEATURE_VALUE_TYPE( + blink::features::kControlledFrameWebRequestSecurityInfo)}, #endif // !BUILDFLAG(IS_ANDROID) #if BUILDFLAG(IS_ANDROID) @@ -13307,12 +13197,31 @@ const FeatureEntry kFeatureEntries[] = { FEATURE_VALUE_TYPE(webapps::features::kAndroidWebAppMenuButton)}, #endif // BUILDFLAG(IS_ANDROID) +#if BUILDFLAG(IS_ANDROID) + {"use-web-app-header-for-standalone-mode", + flag_descriptions::kAndroidWebAppHeaderForStandaloneModeName, + flag_descriptions::kAndroidWebAppHeaderForStandaloneModeDescription, + kOsAndroid, + FEATURE_VALUE_TYPE( + webapps::features::kAndroidWebAppHeaderForStandaloneMode)}, +#endif // BUILDFLAG(IS_ANDROID) + +#if BUILDFLAG(IS_ANDROID) + {"enable-twa-origin-display", + flag_descriptions::kAndroidEnableTWAOriginDisplayName, + flag_descriptions::kAndroidEnableTWAOriginDisplayDescription, kOsAndroid, + FEATURE_VALUE_TYPE(webapps::features::kAndroidTWAOriginDisplay)}, +#endif // BUILDFLAG(IS_ANDROID) + #if BUILDFLAG(IS_ANDROID) {"android-animated-progress-bar-in-browser", flag_descriptions::kAndroidAnimatedProgressBarInBrowserName, flag_descriptions::kAndroidAnimatedProgressBarInBrowserDescription, kOsAndroid, - FEATURE_VALUE_TYPE(features::kAndroidAnimatedProgressBarInBrowser)}, + FEATURE_WITH_PARAMS_VALUE_TYPE( + features::kAndroidAnimatedProgressBarInBrowser, + kAndroidAnimatedProgressBarInBrowserVariations, + "AndroidAnimatedProgressBarInBrowser")}, #endif // BUILDFLAG(IS_ANDROID) {"enable-cross-device-pref-tracker", @@ -13364,14 +13273,6 @@ const FeatureEntry kFeatureEntries[] = { FEATURE_VALUE_TYPE( autofill::features::kAutofillPreferBuyNowPayLaterBlocklists)}, - {"enable-block-canvas-readback", - flag_descriptions::kEnableBlockCanvasReadbackName, - flag_descriptions::kEnableBlockCanvasReadbackDescription, kOsAll, - FEATURE_WITH_PARAMS_VALUE_TYPE(fingerprinting_protection_interventions:: - features::kBlockCanvasReadback, - kEnableBlockCanvasReadbackVariations, - "EnableBlockCanvasReadback")}, - #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ BUILDFLAG(IS_CHROMEOS) {"autofill-enable-ai-based-amount-extraction", @@ -13385,12 +13286,33 @@ const FeatureEntry kFeatureEntries[] = { {"contextual-tasks", contextual_tasks::flag_descriptions::kContextualTasksName, contextual_tasks::flag_descriptions::kContextualTasksDescription, - kOsDesktop, FEATURE_VALUE_TYPE(contextual_tasks::kContextualTasks)}, + kOsDesktop, + FEATURE_WITH_PARAMS_VALUE_TYPE(contextual_tasks::kContextualTasks, + kContextualTaskEntryPointVariations, + "ContextualTasks")}, {"contextual-tasks-context", contextual_tasks::flag_descriptions::kContextualTasksContextName, contextual_tasks::flag_descriptions::kContextualTasksContextDescription, - kOsDesktop, FEATURE_VALUE_TYPE(contextual_tasks::kContextualTasksContext)}, + kOsDesktop, + FEATURE_WITH_PARAMS_VALUE_TYPE(contextual_tasks::kContextualTasksContext, + kContextualTaskContextVariations, + "ContextualTasks")}, + + {"contextual-tasks-suggestions-enabled", + contextual_tasks::flag_descriptions:: + kContextualTasksSuggestionsEnabledName, + contextual_tasks::flag_descriptions:: + kContextualTasksSuggestionsEnabledDescription, + kOsDesktop, + FEATURE_VALUE_TYPE(contextual_tasks::kContextualTasksSuggestionsEnabled)}, + + {"contextual-tasks-context-library", + contextual_tasks::flag_descriptions::kContextualTasksContextLibraryName, + contextual_tasks::flag_descriptions:: + kContextualTasksContextLibraryDescription, + kOsDesktop, + FEATURE_VALUE_TYPE(contextual_tasks::kContextualTasksContextLibrary)}, #if !BUILDFLAG(IS_ANDROID) {"create-new-tab-group-app-menu-top-level", @@ -13482,6 +13404,10 @@ const FeatureEntry kFeatureEntries[] = { #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ BUILDFLAG(IS_CHROMEOS) + {"passkey-unlock-manager", flag_descriptions::kPasskeyUnlockManagerName, + flag_descriptions::kPasskeyUnlockManagerDescription, kOsDesktop, + FEATURE_VALUE_TYPE(device::kPasskeyUnlockManager)}, + {"passkey-unlock-error-ui", flag_descriptions::kPasskeyUnlockErrorUiName, flag_descriptions::kPasskeyUnlockErrorUiDescription, kOsDesktop, FEATURE_VALUE_TYPE(device::kPasskeyUnlockErrorUi)}, @@ -13538,6 +13464,42 @@ const FeatureEntry kFeatureEntries[] = { FEATURE_VALUE_TYPE(switches::kProfileCreationDeclineSigninCTAExperiment)}, #endif +#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) + {"profile-creation-friction-reduction-experiment-prefill-name-requirement", + flag_descriptions:: + kProfileCreationFrictionReductionExperimentPrefillNameRequirementName, + flag_descriptions:: + kProfileCreationFrictionReductionExperimentPrefillNameRequirementDescription, + kOsMac | kOsWin | kOsLinux, + FEATURE_VALUE_TYPE( + switches:: + kProfileCreationFrictionReductionExperimentPrefillNameRequirement)}, +#endif + +#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) + {"profile-creation-friction-reduction-experiment-remove-signin-step", + flag_descriptions:: + kProfileCreationFrictionReductionExperimentRemoveSigninStepName, + flag_descriptions:: + kProfileCreationFrictionReductionExperimentRemoveSigninStepDescription, + kOsMac | kOsWin | kOsLinux, + FEATURE_VALUE_TYPE( + switches:: + kProfileCreationFrictionReductionExperimentRemoveSigninStep)}, +#endif + +#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) + {"profile-creation-friction-reduction-experiment-skip-customize-profile", + flag_descriptions:: + kProfileCreationFrictionReductionExperimentSkipCustomizeProfileName, + flag_descriptions:: + kProfileCreationFrictionReductionExperimentSkipCustomizeProfileDescription, + kOsMac | kOsWin | kOsLinux, + FEATURE_VALUE_TYPE( + switches:: + kProfileCreationFrictionReductionExperimentSkipCustomizeProfile)}, +#endif + #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) {"show-profile-picker-to-all-users-experiment", flag_descriptions::kShowProfilePickerToAllUsersExperimentName, @@ -13546,21 +13508,20 @@ const FeatureEntry kFeatureEntries[] = { FEATURE_VALUE_TYPE(switches::kShowProfilePickerToAllUsersExperiment)}, #endif +#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) + {"open-all-profiles-from-profile-picker-experiment", + flag_descriptions::kOpenAllProfilesFromProfilePickerExperimentName, + flag_descriptions::kOpenAllProfilesFromProfilePickerExperimentDescription, + kOsMac | kOsWin | kOsLinux, + FEATURE_VALUE_TYPE(switches::kOpenAllProfilesFromProfilePickerExperiment)}, +#endif + {"profile-signals-reporting-enabled", flag_descriptions::kProfileSignalsReportingEnabledName, flag_descriptions::kProfileSignalsReportingEnabledDescription, kOsAll, FEATURE_VALUE_TYPE( enterprise_signals::features::kProfileSignalsReportingEnabled)}, -#if BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS) - {"enable-extensions-for-corp-desktop-android", - flag_descriptions::kEnableExtensionsForCorpDesktopAndroidName, - flag_descriptions::kEnableExtensionsForCorpDesktopAndroidDescription, - kOsAndroid, - FEATURE_VALUE_TYPE( - extensions_features::kEnableExtensionsForCorpDesktopAndroid)}, -#endif - #if BUILDFLAG(IS_ANDROID) {"autofill-enable-keyboard-accessory-chip-width-adjustment", flag_descriptions::kAutofillEnableKeyboardAccessoryChipWidthAdjustmentName, @@ -13585,7 +13546,9 @@ const FeatureEntry kFeatureEntries[] = { {"android-desktop-zoom-scaling", flag_descriptions::kAndroidDesktopZoomScalingName, flag_descriptions::kAndroidDesktopZoomScalingDescription, kOsAndroid, - FEATURE_VALUE_TYPE(features::kAndroidDesktopZoomScaling)}, + FEATURE_WITH_PARAMS_VALUE_TYPE(features::kAndroidDesktopZoomScaling, + kAndroidDesktopZoomScalingVariations, + "AndroidDesktopZoomScaling")}, #endif #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) @@ -13625,6 +13588,74 @@ const FeatureEntry kFeatureEntries[] = { FEATURE_VALUE_TYPE(features::kReadAnythingWithReadability)}, #endif +#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ + BUILDFLAG(IS_CHROMEOS) + {"read-anything-omnibox-chip", + flag_descriptions::kReadAnythingOmniboxChipName, + flag_descriptions::kReadAnythingOmniboxChipDescription, kOsDesktop, + FEATURE_VALUE_TYPE(features::kReadAnythingOmniboxChip)}, +#endif + +#if BUILDFLAG(IS_MAC) + {"unexportable-key-deletion", + flag_descriptions::kUnexportableKeyDeletionName, + flag_descriptions::kUnexportableKeyDeletionDescription, kOsMac, + FEATURE_VALUE_TYPE(unexportable_keys::kUnexportableKeyDeletion)}, +#endif + +#if !BUILDFLAG(IS_ANDROID) + {flag_descriptions::kAppBrowserUseNewLayoutId, + flag_descriptions::kAppBrowserUseNewLayoutName, + flag_descriptions::kAppBrowserUseNewLayoutDescription, kOsDesktop, + FEATURE_VALUE_TYPE(features::kAppBrowserUseNewLayout)}, + {flag_descriptions::kPopupBrowserUseNewLayoutId, + flag_descriptions::kPopupBrowserUseNewLayoutName, + flag_descriptions::kPopupBrowserUseNewLayoutDescription, kOsDesktop, + FEATURE_VALUE_TYPE(features::kPopupBrowserUseNewLayout)}, + {flag_descriptions::kTabbedBrowserUseNewLayoutId, + flag_descriptions::kTabbedBrowserUseNewLayoutName, + flag_descriptions::kTabbedBrowserUseNewLayoutDescription, kOsDesktop, + FEATURE_VALUE_TYPE(features::kTabbedBrowserUseNewLayout)}, +#endif + +#if BUILDFLAG(IS_ANDROID) + {"enable-audio-monitoring-on-android", + flag_descriptions::kEnableAudioMonitoringOnAndroidName, + flag_descriptions::kEnableAudioMonitoringOnAndroidDescription, kOsAndroid, + FEATURE_VALUE_TYPE(media::kEnableAudioMonitoringOnAndroid)}, +#endif + + {"autofill-disable-bnpl-country-check-for-testing", + flag_descriptions::kAutofillDisableBnplCountryCheckForTestingName, + flag_descriptions::kAutofillDisableBnplCountryCheckForTestingDescription, + kOsDesktop | kOsAndroid, + FEATURE_VALUE_TYPE( + autofill::features::kAutofillDisableBnplCountryCheckForTesting)}, + + {"infobar-refresh", flag_descriptions::kInfobarRefreshName, + flag_descriptions::kInfobarRefreshDescription, kOsDesktop, + FEATURE_VALUE_TYPE(features::kInfobarRefresh)}, + +#if BUILDFLAG(IS_ANDROID) + {"recently-closed-tabs-and-windows", + flag_descriptions::kRecentlyClosedTabsAndWindowsName, + flag_descriptions::kRecentlyClosedTabsAndWindowsDescription, kOsAndroid, + FEATURE_VALUE_TYPE(chrome::android::kRecentlyClosedTabsAndWindows)}, +#endif + +#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ + BUILDFLAG(IS_CHROMEOS) + {"read-anything-immersive-reading-mode", + flag_descriptions::kReadAnythingImmersiveReadingModeName, + flag_descriptions::kReadAnythingImmersiveReadingModeDescription, + kOsDesktop, FEATURE_VALUE_TYPE(features::kImmersiveReadAnything)}, +#endif +#if BUILDFLAG(IS_ANDROID) + {"xplat-synced-setup", flag_descriptions::kXplatSyncedSetupName, + flag_descriptions::kXplatSyncedSetupDescription, kOsAndroid, + FEATURE_VALUE_TYPE(chrome::android::kXplatSyncedSetup)}, +#endif + #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ BUILDFLAG(IS_CHROMEOS) {"lens-overlay-non-blocking-privacy-notice", @@ -13633,6 +13664,101 @@ const FeatureEntry kFeatureEntries[] = { kOsDesktop, FEATURE_VALUE_TYPE(lens::features::kLensOverlayNonBlockingPrivacyNotice)}, #endif + +#if BUILDFLAG(IS_ANDROID) + {"android-pb-disable-pulse-animation", + flag_descriptions::kAndroidPbDisablePulseAnimationName, + flag_descriptions::kAndroidPbDisablePulseAnimationDescription, kOsAndroid, + FEATURE_VALUE_TYPE(chrome::android::kAndroidPbDisablePulseAnimation)}, + + {"android-pb-disable-smooth-animation", + flag_descriptions::kAndroidPbDisableSmoothAnimationName, + flag_descriptions::kAndroidPbDisableSmoothAnimationDescription, kOsAndroid, + FEATURE_VALUE_TYPE(chrome::android::kAndroidPbDisableSmoothAnimation)}, +#endif + + {"migrate-syncing-user-to-signed-in", + flag_descriptions::kMigrateSyncingUserToSignedInName, + flag_descriptions::kMigrateSyncingUserToSignedInDescription, + kOsMac | kOsWin | kOsLinux, + FEATURE_VALUE_TYPE(switches::kMigrateSyncingUserToSignedIn)}, + + {"undo-migration-of-syncing-user-to-signed-in", + flag_descriptions::kUndoMigrationOfSyncingUserToSignedInName, + flag_descriptions::kUndoMigrationOfSyncingUserToSignedInDescription, + kOsMac | kOsWin | kOsLinux, + FEATURE_VALUE_TYPE(switches::kUndoMigrationOfSyncingUserToSignedIn)}, + +#if BUILDFLAG(IS_ANDROID) + {"enable-auto-minted-twa", flag_descriptions::kAndroidAutoMintedTWAName, + flag_descriptions::kAndroidAutoMintedTWADescription, kOsAndroid, + FEATURE_VALUE_TYPE(webapps::features::kAndroidAutoMintedTWA)}, + + {"autofill-enable-new-fop-display-android", + flag_descriptions::kAutofillEnableNewFopDisplayAndroidName, + flag_descriptions::kAutofillEnableNewFopDisplayAndroidDescription, + kOsAndroid, + FEATURE_VALUE_TYPE( + autofill::features::kAutofillEnableNewFopDisplayAndroid)}, +#endif + + {"idb-sqlite-backing-store", flag_descriptions::kIdbSqliteBackingStoreName, + flag_descriptions::kIdbSqliteBackingStoreDescription, kOsAll, + FEATURE_VALUE_TYPE(features::kIdbSqliteBackingStore)}, + +#if BUILDFLAG(IS_ANDROID) + {"android-caret-browsing", flag_descriptions::kAndroidCaretBrowsingName, + flag_descriptions::kAndroidCaretBrowsingDescription, kOsAndroid, + FEATURE_VALUE_TYPE(features::kAndroidCaretBrowsing)}, +#endif + + // On other platforms, this requires --enable-features=ElasticOverscroll to + // have an effect. + {"overscroll-effect-on-non-root-scrollers", + flag_descriptions::kOverscrollEffectOnNonRootScrollersName, + flag_descriptions::kOverscrollEffectOnNonRootScrollersDescription, + kOsMac | kOsAndroid, + FEATURE_VALUE_TYPE(features::kOverscrollEffectOnNonRootScrollers)}, + +#if BUILDFLAG(IS_ANDROID) + {"autofill-enable-touch-to-fill-reshow-for-bnpl", + flag_descriptions::kAutofillEnableTouchToFillReshowForBnplName, + flag_descriptions::kAutofillEnableTouchToFillReshowForBnplDescription, + kOsAndroid, + FEATURE_VALUE_TYPE( + autofill::features::kAutofillEnableTouchToFillReshowForBnpl)}, +#endif // BUILDFLAG(IS_ANDROID) + +#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ + BUILDFLAG(IS_CHROMEOS) + {"enable-your-saved-info-settings-page", + flag_descriptions::kYourSavedInfoSettingsPageName, + flag_descriptions::kYourSavedInfoSettingsPageDescription, kOsDesktop, + FEATURE_VALUE_TYPE(autofill::features::kYourSavedInfoSettingsPage)}, +#endif + +#if BUILDFLAG(IS_ANDROID) + {"enable-android-omnibox-autofocus-on-incognito-ntp", + flag_descriptions::kOmniboxAutofocusOnIncognitoNtpName, + flag_descriptions::kOmniboxAutofocusOnIncognitoNtpDescription, kOsAndroid, + MULTI_VALUE_TYPE(kOmniboxAutofocusOnIncognitoNtpChoices)}, + + {"enable-android-reporting-omnibox-autofocus-header", + flag_descriptions::kReportOmniboxAutofocusHeaderName, + flag_descriptions::kReportOmniboxAutofocusHeaderDescription, kOsAndroid, + FEATURE_VALUE_TYPE(variations::kReportOmniboxAutofocusHeader)}, +#endif + + {"private-metrics-enable-puma", + flag_descriptions::kPrivateMetricsEnablePumaName, + flag_descriptions::kPrivateMetricsEnablePumaDescription, kOsAll, + FEATURE_VALUE_TYPE(metrics::private_metrics::kPrivateMetricsPuma)}, + + {"private-metrics-enable-puma-rc", + flag_descriptions::kPrivateMetricsEnablePumaRcName, + flag_descriptions::kPrivateMetricsEnablePumaRcDescription, kOsAll, + FEATURE_VALUE_TYPE(metrics::private_metrics::kPrivateMetricsPumaRc)}, + // Add new entries above this line. // NOTE: Adding a new flag requires adding a corresponding entry to enum // "LoginCustomFlags" in tools/metrics/histograms/enums.xml. See "Flag @@ -13737,11 +13863,14 @@ bool ShouldSkipConditionalFeatureEntry(const flags_ui::FlagsStorage* storage, const FeatureEntry& entry) { #if BUILDFLAG(IS_CHROMEOS) version_info::Channel channel = chrome::GetChannel(); - // enable-projector-server-side-speech-recognition is only available if - // the InternalServerSideSpeechRecognitionControl flag is enabled as well. + // enable-projector-server-side-speech-recognition is only available in Chrome + // branded builds. if (!strcmp(kProjectorServerSideSpeechRecognition, entry.internal_name)) { - return !ash::features:: - IsInternalServerSideSpeechRecognitionControlEnabled(); +#if BUILDFLAG(GOOGLE_CHROME_BRANDING) + return false; +#else + return true; +#endif // BUILDFLAG(GOOGLE_CHROME_BRANDING) } // enable-ui-devtools is only available on for non Stable channels. diff --git a/tools/under-control/src/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc b/tools/under-control/src/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc index e5695667..0b826a2e 100755 --- a/tools/under-control/src/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc +++ b/tools/under-control/src/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc @@ -60,6 +60,8 @@ #include "chrome/browser/optimization_guide/optimization_guide_keyed_service_factory.h" #include "chrome/browser/password_manager/account_password_store_factory.h" #include "chrome/browser/password_manager/profile_password_store_factory.h" +#include "chrome/browser/payments/browser_binding/browser_bound_key_deleter_service.h" +#include "chrome/browser/payments/browser_binding/browser_bound_key_deleter_service_factory.h" #include "chrome/browser/permissions/permission_actions_history_factory.h" #include "chrome/browser/permissions/permission_decision_auto_blocker_factory.h" #include "chrome/browser/preloading/prefetch/no_state_prefetch/no_state_prefetch_manager_factory.h" @@ -120,8 +122,6 @@ #include "components/password_manager/core/browser/password_manager_metrics_util.h" #include "components/password_manager/core/browser/password_store/password_store_interface.h" #include "components/password_manager/core/browser/password_store/smart_bubble_stats_store.h" -#include "components/payments/content/browser_binding/browser_bound_key_deleter.h" -#include "components/payments/content/browser_binding/browser_bound_key_deleter_factory.h" #include "components/payments/content/web_payments_web_data_service.h" #include "components/performance_manager/public/user_tuning/prefs.h" #include "components/permissions/features.h" @@ -132,6 +132,7 @@ #include "components/reading_list/core/reading_list_model.h" #include "components/safe_browsing/core/browser/verdict_cache_manager.h" #include "components/search_engines/search_engine_choice/search_engine_choice_service.h" +#include "components/search_engines/search_engine_choice/search_engine_choice_utils.h" #include "components/search_engines/template_url_service.h" #include "components/signin/public/base/consent_level.h" #include "components/signin/public/base/gaia_id_hash.h" @@ -733,10 +734,11 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData( } #endif // !BUILDFLAG(IS_ANDROID) - if (payments::BrowserBoundKeyDeleter* browser_bound_key_deleter = - payments::BrowserBoundKeyDeleterFactory::GetForBrowserContext( - profile_)) { - browser_bound_key_deleter->RemoveInvalidBBKs(); + if (payments:: + BrowserBoundKeyDeleterService* browser_bound_key_deleter_service = + payments::BrowserBoundKeyDeleterServiceFactory::GetForProfile( + profile_)) { + browser_bound_key_deleter_service->RemoveInvalidBBKs(); } #if BUILDFLAG(IS_CHROMEOS) @@ -1436,7 +1438,9 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData( ->registrar_unsafe(); for (const web_app::WebApp& web_app : web_app_registrar.GetAppsIncludingStubs()) { - if (!web_app_registrar.IsIsolated(web_app.app_id()) || + if (!web_app_registrar.AppMatches( + web_app.app_id(), + web_app::WebAppFilter::IsIsolatedWebAppIncludingUninstalling()) || !filter.Run(web_app.scope())) { continue; } @@ -1770,3 +1774,7 @@ void ChromeBrowsingDataRemoverDelegate::DisablePasswordsAutoSignin( TracingDataType::kDisableAutoSigninForAccountPasswords)); } } + +#if BUILDFLAG(IS_ANDROID) +DEFINE_JNI(PackageHash) +#endif 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 76769dc5..658a23ae 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 @@ -61,6 +61,7 @@ #include "mojo/public/cpp/bindings/binder_map.h" #include "mojo/public/cpp/bindings/pending_receiver.h" #include "mojo/public/cpp/bindings/self_owned_receiver.h" +#include "pdf/buildflags.h" #include "services/image_annotation/public/mojom/image_annotation.mojom.h" #include "third_party/blink/public/common/features.h" #include "third_party/blink/public/common/features_generated.h" @@ -140,6 +141,11 @@ #include "media/mojo/mojom/speech_recognition_service.mojom.h" #endif // BUILDFLAG(ENABLE_BROWSER_SPEECH_SERVICE) +#if BUILDFLAG(ENABLE_PDF) +#include "chrome/browser/pdf/pdf_help_bubble_handler_factory.h" +#include "ui/webui/resources/cr_components/help_bubble/help_bubble.mojom.h" +#endif + #if BUILDFLAG(ENABLE_PRINT_PREVIEW) #include "chrome/browser/printing/web_api/web_printing_service_binder.h" #include "third_party/blink/public/mojom/printing/web_printing.mojom.h" @@ -507,7 +513,8 @@ void PopulateChromeFrameBinders( if (base::FeatureList::IsEnabled(features::kWebPayments)) { map->Add(&payments::CreatePaymentRequest); } - if (base::FeatureList::IsEnabled(blink::features::kWebAppInstallation) && + if ((base::FeatureList::IsEnabled(blink::features::kWebAppInstallation) || + base::FeatureList::IsEnabled(blink::features::kInstallElement)) && !render_frame_host->GetParentOrOuterDocument()) { map->Add( &web_app::WebInstallServiceImpl::CreateIfAllowed); @@ -566,6 +573,11 @@ void PopulateChromeFrameBinders( &BindMediaFoundationPreferences); #endif +#if BUILDFLAG(ENABLE_PDF) + map->Add( + &pdf::PdfHelpBubbleHandlerFactory::Create); +#endif + #if BUILDFLAG(ENABLE_PRINT_PREVIEW) map->Add( &printing::CreateWebPrintingServiceForFrame); 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 87a95ef5..900df063 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 @@ -71,6 +71,7 @@ #include "chrome/browser/chrome_content_browser_client_navigation_throttles.h" #include "chrome/browser/chrome_content_browser_client_parts.h" #include "chrome/browser/content_settings/cookie_settings_factory.h" +#include "chrome/browser/content_settings/generated_javascript_optimizer_pref.h" #include "chrome/browser/content_settings/host_content_settings_map_factory.h" #include "chrome/browser/custom_handlers/protocol_handler_registry_factory.h" #include "chrome/browser/data_saver/data_saver.h" @@ -133,7 +134,6 @@ #include "chrome/browser/preloading/preloading_prefs.h" #include "chrome/browser/preloading/prerender/prerender_web_contents_delegate.h" #include "chrome/browser/preloading/search_preload/search_preload_features.h" -#include "chrome/browser/privacy_budget/identifiability_study_state.h" #include "chrome/browser/privacy_sandbox/privacy_sandbox_settings_factory.h" #include "chrome/browser/privacy_sandbox/tracking_protection_settings_factory.h" #include "chrome/browser/profiles/profile.h" @@ -152,6 +152,9 @@ #include "chrome/browser/signin/chrome_signin_proxying_url_loader_factory.h" #include "chrome/browser/signin/chrome_signin_url_loader_throttle.h" #include "chrome/browser/signin/header_modification_delegate_impl.h" +#include "chrome/browser/site_protection/site_familiarity_process_selection_deferring_condition.h" +#include "chrome/browser/site_protection/site_familiarity_process_selection_user_data.h" +#include "chrome/browser/site_protection/site_familiarity_utils.h" #include "chrome/browser/speech/chrome_speech_recognition_manager_delegate.h" #include "chrome/browser/speech/on_device_speech_recognition_util.h" #include "chrome/browser/ssl/chrome_security_blocking_page_factory.h" @@ -237,8 +240,6 @@ #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/fingerprinting_protection_filter/interventions/common/interventions_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" @@ -261,13 +262,14 @@ #include "components/no_state_prefetch/common/no_state_prefetch_url_loader_throttle.h" #include "components/page_load_metrics/browser/metrics_web_contents_observer.h" #include "components/password_manager/core/browser/features/password_features.h" +#include "components/password_manager/core/browser/password_manager_metrics_util.h" #include "components/payments/content/payment_request_display_manager.h" #include "components/payments/content/secure_payment_confirmation_service_factory.h" #include "components/pdf/common/pdf_util.h" #include "components/performance_manager/public/graph/frame_node.h" #include "components/performance_manager/public/performance_manager.h" #include "components/permissions/content_setting_permission_context_base.h" -#include "components/policy/content/policy_blocklist_service.h" +#include "components/policy/core/browser/url_list/policy_blocklist_service.h" #include "components/policy/core/common/management/management_service.h" #include "components/policy/core/common/policy_pref_names.h" #include "components/pref_registry/pref_registry_syncable.h" @@ -426,6 +428,8 @@ #include "sandbox/win/src/sandbox_policy.h" #elif BUILDFLAG(IS_MAC) #include "chrome/browser/browser_process_platform_part_mac.h" +#include "chrome/browser/enterprise/platform_auth/platform_auth_features.h" +#include "chrome/browser/enterprise/platform_auth/platform_auth_proxying_url_loader_factory.h" #include "chrome/common/chrome_version.h" #include "components/soda/constants.h" #include "sandbox/mac/sandbox_serializer.h" @@ -727,6 +731,7 @@ using content::ChildProcessSecurityPolicy; using content::RenderFrameHost; using content::SiteInstance; using content::WebContents; +using content_settings::JavascriptOptimizerSetting; #if BUILDFLAG(IS_POSIX) using content::PosixFileDescriptorInfo; @@ -1735,13 +1740,6 @@ void ChromeContentBrowserClient::RenderProcessWillLaunch( std::make_unique(host)); #endif - IdentifiabilityStudyState* identifiability_study_state = - g_browser_process->GetMetricsServicesManager() - ->GetIdentifiabilityStudyState(); - if (identifiability_study_state) { - identifiability_study_state->InitializeRenderer(host); - } - // The RendereUpdater might be null for some irregular profiles, e.g. the // System Profile. if (RendererUpdater* service = @@ -2568,8 +2566,8 @@ bool ChromeContentBrowserClient::ShouldUrlUseApplicationIsolationLevel( } #if !BUILDFLAG(IS_ANDROID) -bool ChromeContentBrowserClient::IsInitialWebUIScheme(const GURL& url) { - return IsForInitialWebUI(url); +bool ChromeContentBrowserClient::IsInitialWebUIURL(const GURL& url) { + return waap::IsForInitialWebUI(url); } #endif // !BUILDFLAG(IS_ANDROID) @@ -2830,17 +2828,6 @@ void ChromeContentBrowserClient::AppendExtraCommandLineSwitches( error_page::switches::kDisableDinosaurEasterEgg); } - auto* management_service_factory = - policy::ManagementServiceFactory::GetInstance(); - auto* browser_managment_service = - management_service_factory->GetForProfile(profile); - if ((browser_managment_service && - browser_managment_service->IsManaged()) || - management_service_factory->GetForPlatform()->IsManaged()) { - command_line->AppendSwitch( - error_page::switches::kEnableDinosaurEasterEggAltGameImages); - } - MaybeAppendSecureOriginsAllowlistSwitch(command_line); if (prefs->HasPrefPath(prefs::kScrollToTextFragmentEnabled) && @@ -4337,12 +4324,17 @@ bool ChromeContentBrowserClient::CanCreateWindow( contextual_tasks::ContextualTasksUiService* contextual_tasks_ui_service = contextual_tasks::ContextualTasksUiServiceFactory::GetForBrowserContext( profile); - if (base::FeatureList::IsEnabled(contextual_tasks::kContextualTasks) && - contextual_tasks_ui_service && - contextual_tasks_ui_service->HandleNavigation( - target_url, web_contents->GetLastCommittedURL(), web_contents, - /*is_to_new_tab=*/true)) { - return false; + if (base::FeatureList::IsEnabled(contextual_tasks::kContextualTasks)) { + content::OpenURLParams url_params( + target_url, referrer, disposition, + ui::PageTransition::PAGE_TRANSITION_AUTO_TOPLEVEL, true); + if (contextual_tasks_ui_service && + contextual_tasks_ui_service->HandleNavigation( + std::move(url_params), web_contents, + /*is_from_embedded_page=*/false, + /*is_to_new_tab=*/true)) { + return false; + } } #endif // !BUILDFLAG(IS_ANDROID) @@ -4554,6 +4546,8 @@ void ChromeContentBrowserClient::OverrideWebPreferences( prefs->GetBoolean(prefs::kAccessibilityForceEnableZoom); web_prefs->font_weight_adjustment = prefs->GetInteger(prefs::kAccessibilityFontWeightAdjustment); + web_prefs->enable_touchpad_overscroll_history_navigation = prefs->GetBoolean( + prefs::kAccessibilityTouchpadOverscrollHistoryNavigation); #endif web_prefs->force_dark_mode_enabled = prefs->GetBoolean(prefs::kWebKitForceDarkModeEnabled); @@ -4567,10 +4561,13 @@ void ChromeContentBrowserClient::OverrideWebPreferences( #endif #if BUILDFLAG(IS_ANDROID) - web_prefs->password_echo_enabled = - prefs->GetBoolean(prefs::kWebKitPasswordEchoEnabled); + web_prefs->password_echo_enabled_physical = + prefs->GetBoolean(prefs::kWebKitPasswordEchoEnabledPhysical); + web_prefs->password_echo_enabled_touch = + prefs->GetBoolean(prefs::kWebKitPasswordEchoEnabledTouch); #else - web_prefs->password_echo_enabled = false; + web_prefs->password_echo_enabled_physical = false; + web_prefs->password_echo_enabled_touch = false; #endif web_prefs->text_areas_are_resizable = @@ -4660,7 +4657,8 @@ void ChromeContentBrowserClient::OverrideWebPreferences( web_prefs->web_app_scope = registrar.GetAppScope(app_id); } - // IWA can close windows with window management permission. + // IWA with window management permission can close windows and + // focus windows without user gesture. if (browser->app_controller()->IsIsolatedWebApp() && profile->GetPermissionController() ->GetPermissionStatusForCurrentDocument( @@ -4670,6 +4668,7 @@ void ChromeContentBrowserClient::OverrideWebPreferences( web_contents->GetPrimaryMainFrame()) == blink::mojom::PermissionStatus::GRANTED) { web_prefs->allow_scripts_to_close_windows = true; + web_prefs->allow_window_focus_without_user_gesture = true; } #if BUILDFLAG(IS_CHROMEOS) auto* system_app = browser->app_controller()->system_app(); @@ -4782,12 +4781,6 @@ void ChromeContentBrowserClient::OverrideWebPreferences( base::FeatureList::IsEnabled(::features::kContextMenuEmptySpace); #endif - web_prefs->content_based_fingerprinting_protection_enabled = - fingerprinting_protection_filter::features:: - IsFingerprintingProtectionEnabledForIncognitoState( - Profile::FromBrowserContext(web_contents->GetBrowserContext()) - ->IsIncognitoProfile()); - if (base::FeatureList::IsEnabled(::features::kDevToolsAiPromptApi) && web_contents->GetVisibleURL().SchemeIs(content::kChromeDevToolsScheme)) { web_prefs->ai_prompt_api_enabled = true; @@ -5132,7 +5125,7 @@ std::wstring ChromeContentBrowserClient::GetAppContainerSidForSandboxType( case sandbox::mojom::Sandbox::kServiceWithJit: case sandbox::mojom::Sandbox::kIconReader: case sandbox::mojom::Sandbox::kMediaFoundationCdm: - case sandbox::mojom::Sandbox::kWindowsSystemProxyResolver: + case sandbox::mojom::Sandbox::kProxyResolver: // Should never reach here. NOTREACHED(); } @@ -5229,7 +5222,7 @@ bool ChromeContentBrowserClient::PreSpawnChild( case sandbox::mojom::Sandbox::kService: case sandbox::mojom::Sandbox::kIconReader: case sandbox::mojom::Sandbox::kMediaFoundationCdm: - case sandbox::mojom::Sandbox::kWindowsSystemProxyResolver: + case sandbox::mojom::Sandbox::kProxyResolver: break; } @@ -5416,6 +5409,24 @@ ChromeContentBrowserClient::CreateCommitDeferringConditionsForNavigation( return conditions; } +std::vector> +ChromeContentBrowserClient:: + CreateProcessSelectionDeferringConditionsForNavigation( + content::NavigationHandle& navigation_handle) { + std::vector> + conditions; + Profile* profile = Profile::FromBrowserContext( + navigation_handle.GetWebContents()->GetBrowserContext()); + if (site_protection::AreV8OptimizationsDisabledOnUnfamiliarSites(profile)) { + auto condition = std::unique_ptr< + content::ProcessSelectionDeferringCondition>( + new site_protection::SiteFamiliarityProcessSelectionDeferringCondition( + navigation_handle)); + conditions.push_back(std::move(condition)); + } + return conditions; +} + std::unique_ptr ChromeContentBrowserClient::GetNavigationUIData( content::NavigationHandle* navigation_handle) { @@ -6380,6 +6391,13 @@ void ChromeContentBrowserClient::WillCreateURLLoaderFactory( } #endif +#if BUILDFLAG(IS_MAC) + if (base::FeatureList::IsEnabled(enterprise_auth::kOktaSSO)) { + enterprise_auth::ProxyingURLLoaderFactory::MaybeProxyRequest( + request_initiator, factory_builder); + } +#endif + // WARNING: This must be the last interceptor in the chain as the proxying // URLLoaderFactory installed by this needs to be the one actually sending // packets over the network (to effectively target `bound_network`). @@ -6957,10 +6975,12 @@ bool ChromeContentBrowserClient::HandleWebUI( #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ BUILDFLAG(IS_CHROMEOS) - // Rewrite chrome://settings/autofill to chrome://settings/yourSavedInfo. + // Rewrite chrome://settings/autofill and chrome://settings/enhancedAutofill + // to chrome://settings/yourSavedInfo. if (url->SchemeIs(content::kChromeUIScheme) && url->GetHost() == chrome::kChromeUISettingsHost && - url->GetPath() == chrome::kChromeUIAutofillPath && + (url->GetPath() == chrome::kChromeUIAutofillPath || + url->GetPath() == chrome::kChromeUIAutofillAiPath) && base::FeatureList::IsEnabled( autofill::features::kYourSavedInfoSettingsPage)) { GURL::Replacements replacements; @@ -6968,6 +6988,16 @@ bool ChromeContentBrowserClient::HandleWebUI( *url = url->ReplaceComponents(replacements); } + // Rewrite chrome://settings/addresses to chrome://settings/contactInfo. + if (url->SchemeIs(content::kChromeUIScheme) && + url->GetHost() == chrome::kChromeUISettingsHost && + (url->GetPath() == chrome::kChromeUIAddressesPath) && + base::FeatureList::IsEnabled( + autofill::features::kYourSavedInfoSettingsPage)) { + GURL::Replacements replacements; + replacements.SetPathStr(chrome::kChromeUIContactInfoPath); + *url = url->ReplaceComponents(replacements); + } #endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || // BUILDFLAG(IS_CHROMEOS) @@ -7741,29 +7771,101 @@ bool ChromeContentBrowserClient::IsJitDisabledForSite( CONTENT_SETTING_BLOCK); } -bool ChromeContentBrowserClient::AreV8OptimizationsDisabledForSite( +bool ChromeContentBrowserClient::AreV8OptimizationsEnabledForSite( content::BrowserContext* browser_context, + const std::optional>& + process_selection_user_data, const GURL& site_url) { // Only disable optimizations for schemes that might actually load web - // content. + // content. This check enables v8-optimization for schemes such as chrome:// + // and chrome-untrusted://. auto* policy = ChildProcessSecurityPolicy::GetInstance(); if (!site_url.is_empty() && !policy->IsWebSafeScheme(site_url.GetScheme())) { - return false; + return true; } Profile* profile = Profile::FromBrowserContext(browser_context); auto* map = HostContentSettingsMapFactory::GetForProfile(profile); - // Special case to determine if any policy is set. - if (map && site_url.is_empty()) { + if (!map) { + return true; + } + + if (site_url.is_empty()) { + // An empty `site_url` is provided when creating unlocked + // processes without site isolation (example: Android). In that case, allow + // V8 optimizations according to the default content setting. Site + // familiarity or site-specific settings cannot be considered here, because + // the process will be shared among many sites. return map->GetDefaultContentSetting( - ContentSettingsType::JAVASCRIPT_OPTIMIZER, nullptr) == + ContentSettingsType::JAVASCRIPT_OPTIMIZER, nullptr) != CONTENT_SETTING_BLOCK; } - return (map && - map->GetContentSetting(site_url, site_url, - ContentSettingsType::JAVASCRIPT_OPTIMIZER) == - CONTENT_SETTING_BLOCK); + content_settings::SettingInfo content_setting_info; + ContentSetting site_content_setting = map->GetContentSetting( + site_url, site_url, ContentSettingsType::JAVASCRIPT_OPTIMIZER, + &content_setting_info); + + // `default_javascript_optimizer_setting` is determined based on the user's + // selection in chrome://settings, whether the site-familiarity-feature is + // enabled, and enterprise policy. `default_javascript_optimizer_setting` + // ignores content setting exceptions. "Disable v8 optimizers for unfamiliar + // sites" cannot be applied via content-setting exceptions or enterprise + // policy; it can only be enabled globally via + // `default_javascript_optimizer_setting`. + JavascriptOptimizerSetting default_javascript_optimizer_setting = + site_protection::ComputeDefaultJavascriptOptimizerSetting(profile); + // Invariant guaranteed by ComputeDefaultJavascriptOptimizerSetting(). + CHECK(default_javascript_optimizer_setting != + JavascriptOptimizerSetting::kBlockedForUnfamiliarSites || + content_setting_info.source == content_settings::SettingSource::kUser); + + if (default_javascript_optimizer_setting != + JavascriptOptimizerSetting::kBlockedForUnfamiliarSites) { + // If site familiarity is turned off, use content settings to set v8 + // optimization. Use `site_content_setting` to honor exceptions for specific + // sites over a default policy that applies to all sites. + return site_content_setting == CONTENT_SETTING_ALLOW; + } + + if (content_setting_info.primary_pattern != + ContentSettingsPattern::Wildcard() || + content_setting_info.secondary_pattern != + ContentSettingsPattern::Wildcard()) { + // There is a site-specific rule. The rule has precedence over + // kBlockedForUnfamiliarSites. + return site_content_setting == CONTENT_SETTING_ALLOW; + } + + // At this point, "block for unfamiliar sites" is turned on, and site-specific + // exceptions have been handled by the Wildcard() check above, so + // `site_content_setting` must reflect the default content setting. Enforce + // that "block for unfamiliar sites" can only be turned on when that default + // content setting is set to "Allow". If it was set to "Blocked", + // default_javascript_optimizer_setting would have also been "Blocked" rather + // than "Blocked for unfamiliar sites". + CHECK_EQ(site_content_setting, CONTENT_SETTING_ALLOW); + + const site_protection::SiteFamiliarityProcessSelectionUserData* + site_familiarity_user_data = nullptr; + if (process_selection_user_data) { + site_familiarity_user_data = + site_protection::SiteFamiliarityProcessSelectionUserData:: + FromProcessSelectionUserData(*process_selection_user_data); + } + + // Lookup site-familiarity previously computed for this navigation by + // SiteFamiliarityProcessSelectionDeferringCondition. + // For now, enable v8 optimizations if there is no site_familiarity_user_data. + // This might be called when creating a SiteInstance and process for a new + // speculative RenderFrameHost, when the navigation is just starting and site + // familiarity hasn't been computed yet. When the navigation receives a + // response, this will be called a second time to determine the final + // SiteInstance and process, and site familiarity should be available then. + // TODO(https://issues.chromium.org/452130797): Determine desired behavior + // for speculative RenderFrameHosts. + return !site_familiarity_user_data || + site_familiarity_user_data->is_site_familiar(); } bool ChromeContentBrowserClient::DisallowV8FeatureFlagOverridesForSite( @@ -8430,12 +8532,6 @@ void ChromeContentBrowserClient::PreferenceRankVideoDeviceInfos( media_prefs::PreferenceRankVideoDeviceInfos(*prefs, infos); } -network::mojom::IpProtectionProxyBypassPolicy -ChromeContentBrowserClient::GetIpProtectionProxyBypassPolicy() { - return network::mojom::IpProtectionProxyBypassPolicy:: - kFirstPartyToTopLevelFrame; -} - void ChromeContentBrowserClient::MaybePrewarmHttpDiskCache( content::BrowserContext& browser_context, const std::optional& initiator_origin, @@ -8767,25 +8863,6 @@ ChromeContentBrowserClient::GetClipboardTypesIfPolicyApplied( return std::nullopt; } -bool ChromeContentBrowserClient::ShouldEnableCanvasNoise( - content::BrowserContext* browser_context, - const GURL& url) { - Profile* profile = Profile::FromBrowserContext(browser_context); - bool feature_enable = fingerprinting_protection_interventions::features:: - IsCanvasInterventionsEnabledForIncognitoState( - profile->IsIncognitoProfile()); - // System profiles are considered incognito, but will not query from - // ProfileKeyedServices and will return nullptr. We should only check user - // bypass if the profile returns TrackingProtectionSettings. - privacy_sandbox::TrackingProtectionSettings* tracking_protections_settings = - TrackingProtectionSettingsFactory::GetForProfile(profile); - if (tracking_protections_settings) { - return feature_enable && - !tracking_protections_settings->HasTrackingProtectionException(url); - } - return feature_enable; -} - bool ChromeContentBrowserClient::UsePrefetchPrerenderIntegration() { return base::FeatureList::IsEnabled(features::kBookmarkTriggerForPrefetch) || base::FeatureList::IsEnabled(features::kNewTabPageTriggerForPrefetch); @@ -8835,3 +8912,50 @@ bool ChromeContentBrowserClient::ShouldSkipBeforeUnloadDialog( return false; #endif } + +void ChromeContentBrowserClient::RecordAssistedLogin( + content::ContentBrowserClient::AssistedLoginType login_type) { + using AssistedLoginType = content::ContentBrowserClient::AssistedLoginType; + using BrowserAssistedLoginType = + password_manager::metrics_util::BrowserAssistedLoginType; + BrowserAssistedLoginType pwm_login_type = BrowserAssistedLoginType::kUnknown; + switch (login_type) { + case AssistedLoginType::kFedCmPassive: + pwm_login_type = BrowserAssistedLoginType::kFedCmPassive; + break; + case AssistedLoginType::kFedCmActive: + pwm_login_type = BrowserAssistedLoginType::kFedCmActive; + break; + case AssistedLoginType::kPasskeyStoredInGPM: + pwm_login_type = BrowserAssistedLoginType::kPasskeyStoredInGPM; + break; + case AssistedLoginType::kPasskeyStoredInWindowsHello: + pwm_login_type = BrowserAssistedLoginType::kPasskeyStoredInWindowsHello; + break; + case AssistedLoginType::kPasskeyStoredInICloudKeychain: + pwm_login_type = BrowserAssistedLoginType::kPasskeyStoredInICloudKeychain; + break; + case AssistedLoginType::kPasskeyStoredInChromeProfile: + pwm_login_type = BrowserAssistedLoginType::kPasskeyStoredInChromeProfile; + break; + case AssistedLoginType::kPasskeyHybrid: + pwm_login_type = BrowserAssistedLoginType::kPasskeyHybrid; + break; + case AssistedLoginType::kPasskeySecurityKey: + pwm_login_type = BrowserAssistedLoginType::kPasskeySecurityKey; + break; + } + password_manager::metrics_util::RecordBrowserAssistedLogin(pwm_login_type); +} + +std::optional +ChromeContentBrowserClient::GetOverrideValueForStaticStorageQuota( + content::BrowserContext* browser_context) { + Profile* profile = Profile::FromBrowserContext(browser_context); + + if (profile->GetPrefs()->HasPrefPath(prefs::kStaticStorageQuotaEnabled)) { + return profile->GetPrefs()->GetBoolean(prefs::kStaticStorageQuotaEnabled); + } else { + 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 39d2c904..fb5155e5 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 @@ -40,8 +40,6 @@ #include "components/contextual_tasks/public/features.h" #include "components/dom_distiller/content/browser/distiller_page_web_contents.h" #include "components/error_page/content/browser/net_error_auto_reloader.h" -#include "components/fingerprinting_protection_filter/browser/throttle_manager.h" -#include "components/fingerprinting_protection_filter/common/fingerprinting_protection_filter_features.h" #include "components/guest_view/buildflags/buildflags.h" #include "components/history/content/browser/visited_link_navigation_throttle.h" #include "components/lens/lens_features.h" @@ -87,8 +85,8 @@ #include "chrome/browser/preloading/preview/preview_navigation_throttle.h" #include "chrome/browser/themes/theme_service_factory.h" #include "chrome/browser/ui/lens/lens_overlay_side_panel_navigation_throttle.h" +#include "chrome/browser/ui/read_anything/read_anything_side_panel_navigation_throttle.h" #include "chrome/browser/ui/search/new_tab_page_navigation_throttle.h" -#include "chrome/browser/ui/views/side_panel/read_anything/read_anything_side_panel_navigation_throttle.h" #include "chrome/browser/ui/web_applications/tabbed_web_app_navigation_throttle.h" #include "chrome/browser/ui/web_applications/webui_web_app_navigation_throttle.h" #include "chrome/browser/ui/webui/ntp_microsoft_auth/ntp_microsoft_auth_response_capture_navigation_throttle.h" @@ -373,15 +371,6 @@ void CreateAndAddChromeThrottlesForNavigation( throttle_manager->MaybeCreateAndAddNavigationThrottles(registry); } - if (fingerprinting_protection_filter::features:: - IsFingerprintingProtectionEnabledForIncognitoState( - profile ? profile->IsIncognitoProfile() : false)) { - if (auto* throttle_manager = fingerprinting_protection_filter:: - ThrottleManager::FromNavigationHandle(handle)) { - throttle_manager->MaybeCreateAndAddNavigationThrottles(registry); - } - } - LookalikeUrlNavigationThrottle::MaybeCreateAndAdd(registry); PDFIFrameNavigationThrottle::MaybeCreateAndAdd(registry); 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 3ff50943..e1f5080d 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 @@ -156,8 +156,8 @@ public abstract class ChromeFeatureList { // Feature names. // LINT.IfChange(FeaturesExposedToJava) // keep-sorted start group_prefixes=["public static final String"] - public static final String ACCESSIBILITY_MAGNIFICATION_FOLLOWS_INPUT_FOCUS = - "AccessibilityMagnificationFollowsInputFocus"; + public static final String ABORT_NAVIGATIONS_FROM_TAB_CLOSURES = + "AbortNavigationsFromTabClosures"; public static final String ACCOUNT_FOR_SUPPRESSED_KEYBOARD_INSETS = "AccountForSuppressedKeyboardInsets"; public static final String ADAPTIVE_BUTTON_IN_TOP_TOOLBAR_CUSTOMIZATION_V2 = @@ -174,6 +174,7 @@ public abstract class ChromeFeatureList { "AndroidAppIntegrationMultiDataSource"; public static final String ANDROID_AUTOFILL_SUPPORT_FOR_HTTP_AUTH = "AndroidAutofillSupportForHttpAuth"; + public static final String ANDROID_AUTO_MINTED_TWA = "AndroidAutoMintedTWA"; public static final String ANDROID_BOOKMARK_BAR = "AndroidBookmarkBar"; public static final String ANDROID_BOOKMARK_BAR_FAST_FOLLOW = "AndroidBookmarkBarFastFollow"; public static final String ANDROID_BOTTOM_TOOLBAR = "AndroidBottomToolbar"; @@ -188,12 +189,17 @@ public abstract class ChromeFeatureList { public static final String ANDROID_FIRST_RUN_LAUNCH_BOUNDS = "AndroidFirstRunLaunchBounds"; public static final String ANDROID_LOGO_VIEW_REFACTOR = "AndroidLogoViewRefactor"; public static final String ANDROID_MINIMAL_UI_LARGE_SCREEN = "AndroidMinimalUiLargeScreen"; + public static final String ANDROID_NEW_MEDIA_PICKER = "AndroidNewMediaPicker"; public static final String ANDROID_NO_VISIBLE_HINT_FOR_DIFFERENT_TLD = "AndroidNoVisibleHintForDifferentTLD"; public static final String ANDROID_OMNIBOX_FOCUSED_NEW_TAB_PAGE = "AndroidOmniboxFocusedNewTabPage"; public static final String ANDROID_OPEN_INCOGNITO_AS_WINDOW = "AndroidOpenIncognitoAsWindow"; public static final String ANDROID_OPEN_PDF_INLINE_BACKPORT = "AndroidOpenPdfInlineBackport"; + public static final String ANDROID_PB_DISABLE_PULSE_ANIMATION = + "AndroidPbDisablePulseAnimation"; + public static final String ANDROID_PB_DISABLE_SMOOTH_ANIMATION = + "AndroidPbDisableSmoothAnimation"; public static final String ANDROID_PDF_ASSIST_CONTENT = "AndroidPdfAssistContent"; public static final String ANDROID_PINNED_TABS = "AndroidPinnedTabs"; public static final String ANDROID_PINNED_TABS_TABLET_TAB_STRIP = @@ -208,9 +214,6 @@ public abstract class ChromeFeatureList { "AndroidTabDeclutterArchiveAllButActiveTab"; public static final String ANDROID_TAB_DECLUTTER_ARCHIVE_TAB_GROUPS = "AndroidTabDeclutterArchiveTabGroups"; - public static final String ANDROID_TAB_DECLUTTER_AUTO_DELETE = "AndroidTabDeclutterAutoDelete"; - public static final String ANDROID_TAB_DECLUTTER_AUTO_DELETE_KILL_SWITCH = - "AndroidTabDeclutterAutoDeleteKillSwitch"; public static final String ANDROID_TAB_DECLUTTER_DEDUPE_TAB_IDS_KILL_SWITCH = "AndroidTabDeclutterDedupeTabIdsKillSwitch"; public static final String ANDROID_TAB_DECLUTTER_PERFORMANCE_IMPROVEMENTS = @@ -225,19 +228,22 @@ public abstract class ChromeFeatureList { public static final String ANDROID_THEME_MODULE = "AndroidThemeModule"; public static final String ANDROID_THEME_RESOURCE_PROVIDER = "AndroidThemeResourceProvider"; public static final String ANDROID_TIPS_NOTIFICATIONS = "AndroidTipsNotifications"; + public static final String ANDROID_TWA_ORIGIN_DISPLAY = "AndroidTWAOriginDisplay"; public static final String ANDROID_USE_ADMINS_FOR_ENTERPRISE_INFO = "AndroidUseAdminsForEnterpriseInfo"; + public static final String ANDROID_WEB_APP_HEADER_FOR_STANDALONE_MODE = + "AndroidWebAppHeaderForStandaloneMode"; public static final String ANDROID_WEB_APP_LAUNCH_HANDLER = "AndroidWebAppLaunchHandler"; public static final String ANDROID_WEB_APP_MENU_BUTTON = "AndroidWebAppMenuButton"; public static final String ANDROID_WINDOW_CONTROLS_OVERLAY = "AndroidWindowControlsOverlay"; public static final String ANDROID_WINDOW_MANAGEMENT_WEB_API = "AndroidWindowManagementWebApi"; + public static final String ANDROID_WINDOW_POPUP_CUSTOM_TAB_UI = "AndroidWindowPopupCustomTabUi"; public static final String ANDROID_WINDOW_POPUP_LARGE_SCREEN = "AndroidWindowPopupLargeScreen"; public static final String ANDROID_WINDOW_POPUP_PREDICT_FINAL_BOUNDS = "AndroidWindowPopupPredictFinalBounds"; public static final String ANDROID_WINDOW_POPUP_RESIZE_AFTER_SPAWN = "AndroidWindowPopupResizeAfterSpawn"; public static final String ANDROID_XR_USES_SURFACE_CONTROL = "AndroidXRUsesSurfaceControl"; - public static final String ANDROID_ZOOM_INDICATOR = "AndroidZoomIndicator"; public static final String ANIMATED_GIF_REFACTOR = "AnimatedGifRefactor"; public static final String ANIMATED_IMAGE_DRAG_SHADOW = "AnimatedImageDragShadow"; public static final String ANNOTATED_PAGE_CONTENTS_VIRTUAL_STRUCTURE = @@ -253,6 +259,8 @@ public abstract class ChromeFeatureList { "AutofillAndroidDesktopKeyboardAccessoryRevamp"; public static final String AUTOFILL_ANDROID_DESKTOP_SUPPRESS_ACCESSORY_ON_EMPTY = "AutofillAndroidDesktopSuppressAccessoryOnEmpty"; + public static final String AUTOFILL_ANDROID_KEYBOARD_ACCESSORY_DYNAMIC_POSITIONING = + "AutofillAndroidKeyboardAccessoryDynamicPositioning"; public static final String AUTOFILL_DEEP_LINK_AUTOFILL_OPTIONS = "AutofillDeepLinkAutofillOptions"; public static final String AUTOFILL_ENABLE_BUY_NOW_PAY_LATER = "AutofillEnableBuyNowPayLater"; @@ -279,8 +287,6 @@ public abstract class ChromeFeatureList { public static final String AUTOFILL_ENABLE_SERVER_IBAN = "AutofillEnableServerIban"; public static final String AUTOFILL_ENABLE_SUPPORT_FOR_HOME_AND_WORK = "AutofillEnableSupportForHomeAndWork"; - public static final String AUTOFILL_ENABLE_SYNCING_OF_PIX_BANK_ACCOUNTS = - "AutofillEnableSyncingOfPixBankAccounts"; public static final String AUTOFILL_RETRY_IMAGE_FETCH_ON_FAILURE = "AutofillRetryImageFetchOnFailure"; public static final String AUTOFILL_SYNC_EWALLET_ACCOUNTS = "AutofillSyncEwalletAccounts"; @@ -297,7 +303,6 @@ public abstract class ChromeFeatureList { "BackgroundThreadPoolFieldTrial"; public static final String BACK_FORWARD_CACHE = "BackForwardCache"; public static final String BCIV_BOTTOM_CONTROLS = "AndroidBcivBottomControls"; - public static final String BIOMETRIC_AUTH_IDENTITY_CHECK = "BiometricAuthIdentityCheck"; public static final String BLOCK_INTENTS_WHILE_LOCKED = "BlockIntentsWhileLocked"; public static final String BOARDING_PASS_DETECTOR = "BoardingPassDetector"; public static final String BOOKMARK_PANE_ANDROID = "BookmarkPaneAndroid"; @@ -334,6 +339,7 @@ public abstract class ChromeFeatureList { public static final String CCT_INCOGNITO_AVAILABLE_TO_THIRD_PARTY = "CCTIncognitoAvailableToThirdParty"; public static final String CCT_MINIMIZED_ENABLED_BY_DEFAULT = "CCTMinimizedEnabledByDefault"; + public static final String CCT_MULTIPLE_PARALLEL_REQUESTS = "CCTMultipleParallelRequests"; public static final String CCT_NAVIGATIONAL_PREFETCH = "CCTNavigationalPrefetch"; public static final String CCT_NAVIGATION_METRICS = "CCTNavigationMetrics"; public static final String CCT_NESTED_SECURITY_ICON = "CCTNestedSecurityIcon"; @@ -358,13 +364,13 @@ public abstract class ChromeFeatureList { public static final String CLAMP_AUTOMOTIVE_SCALING = "ClampAutomotiveScaling"; public static final String CLANK_STARTUP_LATENCY_INJECTION = "ClankStartupLatencyInjection"; public static final String CLANK_WHATS_NEW = "ClankWhatsNew"; - public static final String CLEANUP_LEGACY_TABSTATE = "CleanupLegacyTabState"; - public static final String CLEAR_BROWSING_DATA_ANDROID_SURVEY = - "ClearBrowsingDataAndroidSurvey"; public static final String CLEAR_INSTANCE_INFO_WHEN_CLOSED_INTENTIONALLY = "ClearInstanceInfoWhenClosedIntentionally"; + public static final String CLEAR_INTENT_WHEN_RECREATED = "ClearIntentWhenRecreated"; public static final String COMMAND_LINE_ON_NON_ROOTED = "CommandLineOnNonRooted"; public static final String COMMERCE_MERCHANT_VIEWER = "CommerceMerchantViewer"; + public static final String CONTENT_CAPTURE_SEND_METADATA_FOR_DATA_SHARE = + "ContentCaptureSendMetadataForDataShare"; public static final String CONTEXTUAL_PAGE_ACTIONS = "ContextualPageActions"; public static final String CONTEXTUAL_PAGE_ACTION_READER_MODE = "ContextualPageActionReaderMode"; @@ -401,6 +407,7 @@ public abstract class ChromeFeatureList { public static final String DISPLAY_EDGE_TO_EDGE_FULLSCREEN = "DisplayEdgeToEdgeFullscreen"; public static final String DISPLAY_WILDCARD_CONTENT_SETTINGS = "DisplayWildcardInContentSettings"; + public static final String DOCUMENT_PICTURE_IN_PICTURE_API = "DocumentPictureInPictureAPI"; public static final String DRAW_CHROME_PAGES_EDGE_TO_EDGE = "DrawChromePagesEdgeToEdge"; public static final String DRAW_CUTOUT_EDGE_TO_EDGE = "DrawCutoutEdgeToEdge"; public static final String EDGE_TO_EDGE_BOTTOM_CHIN = "EdgeToEdgeBottomChin"; @@ -439,6 +446,7 @@ public abstract class ChromeFeatureList { public static final String FILLING_PASSWORDS_FROM_ANY_ORIGIN = "FillingPasswordsFromAnyOrigin"; public static final String FINGERPRINTING_PROTECTION_UX = "FingerprintingProtectionUx"; public static final String FLOATING_SNACKBAR = "FloatingSnackbar"; + public static final String FLUID_RESIZE = "FluidResize"; public static final String FORCE_LIST_TAB_SWITCHER = "ForceListTabSwitcher"; public static final String FORCE_TRANSLUCENT_NOTIFICATION_TRAMPOLINE = "ForceTranslucentNotificationTrampoline"; @@ -468,8 +476,8 @@ public abstract class ChromeFeatureList { public static final String INSTANCE_SWITCHER_V2 = "InstanceSwitcherV2"; public static final String IP_PROTECTION_UX = "IpProtectionUx"; public static final String KEYBOARD_ESC_BACK_NAVIGATION = "KeyboardEscBackNavigation"; - public static final String LEGACY_TAB_STATE_DEPRECATION = "LegacyTabStateDeprecation"; public static final String LENS_ON_QUICK_ACTION_SEARCH_WIDGET = "LensOnQuickActionSearchWidget"; + public static final String LINK_HOVER_STATUS_BAR = "LinkHoverStatusBar"; public static final String LOADING_PREDICTOR_LIMIT_PRECONNECT_SOCKET_COUNT = "LoadingPredictorLimitPreconnectSocketCount"; public static final String LOAD_ALL_TABS_AT_STARTUP = "LoadAllTabsAtStartup"; @@ -488,8 +496,6 @@ public abstract class ChromeFeatureList { "MayLaunchUrlUsesSeparateStoragePartition"; public static final String MEDIA_INDICATORS_ANDROID = "MediaIndicatorsAndroid"; public static final String MINI_ORIGIN_BAR = "MiniOriginBar"; - public static final String MITIGATE_LEGACY_SEARCH_ENGINE_PROMO_OVERLAP = - "MitigateLegacySearchEnginePromoOverlap"; public static final String MOST_VISITED_TILES_CUSTOMIZATION = "MostVisitedTilesCustomization"; public static final String MOST_VISITED_TILES_RESELECT = "MostVisitedTilesReselect"; public static final String MULTI_INSTANCE_APPLICATION_STATUS_CLEANUP = @@ -510,8 +516,6 @@ public abstract class ChromeFeatureList { "OmniboxAutofocusOnIncognitoNtp"; public static final String OMNIBOX_CACHE_SUGGESTION_RESOURCES = "OmniboxCacheSuggestionResources"; - public static final String OPTIMIZATION_GUIDE_PUSH_NOTIFICATIONS = - "OptimizationGuidePushNotifications"; public static final String PAGE_CONTENT_PROVIDER = "PageContentProvider"; public static final String PAGE_INFO_ABOUT_THIS_SITE_MORE_LANGS = "PageInfoAboutThisSiteMoreLangs"; @@ -554,7 +558,6 @@ public abstract class ChromeFeatureList { public static final String PWA_RESTORE_UI = "PwaRestoreUi"; public static final String PWA_RESTORE_UI_AT_STARTUP = "PwaRestoreUiAtStartup"; public static final String PWA_UPDATE_DIALOG_FOR_ICON = "PwaUpdateDialogForIcon"; - public static final String QUICK_DELETE_ANDROID_SURVEY = "QuickDeleteAndroidSurvey"; public static final String QUIET_NOTIFICATION_PROMPTS = "QuietNotificationPrompts"; public static final String READALOUD = "ReadAloud"; public static final String READALOUD_AUDIO_OVERVIEWS = "ReadAloudAudioOverviews"; @@ -569,6 +572,9 @@ public abstract class ChromeFeatureList { "ReadAloudIPHMenuButtonHighlightCCT"; public static final String READALOUD_PLAYBACK = "ReadAloudPlayback"; public static final String READALOUD_TAP_TO_SEEK = "ReadAloudTapToSeek"; + public static final String RECENTLY_CLOSED_TABS_AND_WINDOWS = "RecentlyClosedTabsAndWindows"; + public static final String RECORD_INCOGNITO_NTP_TIME_TO_FIRST_NAVIGATION_METRIC = + "RecordIncognitoNtpTimeToFirstNavigationMetric"; public static final String RECORD_SUPPRESSION_METRICS = "RecordSuppressionMetrics"; public static final String REENGAGEMENT_NOTIFICATION = "ReengagementNotification"; public static final String RELATED_SEARCHES_ALL_LANGUAGE = "RelatedSearchesAllLanguage"; @@ -588,13 +594,9 @@ public abstract class ChromeFeatureList { "RobustWindowManagementExperimental"; public static final String ROLL_BACK_MODE_B = "RollBackModeB"; public static final String SAFETY_HUB = "SafetyHub"; - public static final String SAFETY_HUB_ANDROID_ORGANIC_SURVEY = "SafetyHubAndroidOrganicSurvey"; - public static final String SAFETY_HUB_ANDROID_SURVEY = "SafetyHubAndroidSurvey"; - public static final String SAFETY_HUB_ANDROID_SURVEY_V2 = "SafetyHubAndroidSurveyV2"; public static final String SAFETY_HUB_DISRUPTIVE_NOTIFICATION_REVOCATION = "SafetyHubDisruptiveNotificationRevocation"; public static final String SAFETY_HUB_LOCAL_PASSWORDS_MODULE = "SafetyHubLocalPasswordsModule"; - public static final String SAFETY_HUB_MAGIC_STACK = "SafetyHubMagicStack"; public static final String SAFETY_HUB_UNIFIED_PASSWORDS_MODULE = "SafetyHubUnifiedPasswordsModule"; public static final String SAFETY_HUB_WEAK_AND_REUSED_PASSWORDS = @@ -665,7 +667,6 @@ public abstract class ChromeFeatureList { public static final String TAB_STRIP_DENSITY_CHANGE_ANDROID = "TabStripDensityChangeAndroid"; public static final String TAB_STRIP_GROUP_DRAG_DROP_ANDROID = "TabStripGroupDragDropAndroid"; public static final String TAB_STRIP_INCOGNITO_MIGRATION = "TabStripIncognitoMigration"; - public static final String TAB_STRIP_LAYOUT_OPTIMIZATION = "TabStripLayoutOptimization"; public static final String TAB_STRIP_MOUSE_CLOSE_RESIZE_DELAY = "TabStripMouseCloseResizeDelay"; public static final String TAB_SWITCHER_DRAG_DROP_ANDROID = "TabSwitcherDragDropAndroid"; public static final String TAB_SWITCHER_GROUP_SUGGESTIONS_ANDROID = @@ -716,6 +717,7 @@ public abstract class ChromeFeatureList { public static final String WEB_FEED_ONBOARDING = "WebFeedOnboarding"; public static final String WEB_FEED_SORT = "WebFeedSort"; public static final String WEB_OTP_CROSS_DEVICE_SIMPLE_STRING = "WebOtpCrossDeviceSimpleString"; + public static final String XPLAT_SYNCED_SETUP = "XplatSyncedSetup"; public static final String XSURFACE_METRICS_REPORTING = "XsurfaceMetricsReporting"; // keep-sorted end // LINT.ThenChange(//chrome/browser/flags/android/chrome_feature_list.cc:FeaturesExposedToJava) @@ -732,6 +734,8 @@ public abstract class ChromeFeatureList { newCachedFlag(ANDROID_APP_INTEGRATION_MODULE, true); public static final CachedFlag sAndroidAppIntegrationMultiDataSource = newCachedFlag(ANDROID_APP_INTEGRATION_MULTI_DATA_SOURCE, true); + public static final CachedFlag sAndroidAutoMintedTwa = + newCachedFlag(ANDROID_AUTO_MINTED_TWA, false); public static final CachedFlag sAndroidBottomToolbar = newCachedFlag(ANDROID_BOTTOM_TOOLBAR, true, true); public static final CachedFlag sAndroidBottomToolbarV2 = @@ -745,13 +749,15 @@ public abstract class ChromeFeatureList { public static final CachedFlag sAndroidDataImporterService = newCachedFlag(ANDROID_DATA_IMPORTER_SERVICE, true); public static final CachedFlag sAndroidDesktopDensity = - newCachedFlag(ANDROID_DESKTOP_DENSITY, false); + newCachedFlag(ANDROID_DESKTOP_DENSITY, true); public static final CachedFlag sAndroidElegantTextHeight = newCachedFlag(ANDROID_ELEGANT_TEXT_HEIGHT, true); public static final CachedFlag sAndroidLogoViewRefactor = newCachedFlag(ANDROID_LOGO_VIEW_REFACTOR, /* defaultValue= */ true); public static final CachedFlag sAndroidMinimalUiLargeScreen = newCachedFlag(ANDROID_MINIMAL_UI_LARGE_SCREEN, true); + public static final CachedFlag sAndroidNewMediaPicker = + newCachedFlag(ANDROID_NEW_MEDIA_PICKER, false); public static final CachedFlag sAndroidOpenIncognitoAsWindow = newCachedFlag(ANDROID_OPEN_INCOGNITO_AS_WINDOW, BuildConfig.IS_DESKTOP_ANDROID); public static final CachedFlag sAndroidProgressBarVisualUpdate = @@ -760,7 +766,10 @@ public abstract class ChromeFeatureList { /* defaultValue= */ false, /* defaultValueInTests= */ true); public static final CachedFlag sAndroidSettingsContainment = - newCachedFlag(ANDROID_SETTINGS_CONTAINMENT, false); + newCachedFlag( + ANDROID_SETTINGS_CONTAINMENT, + /* defaultValue= */ false, + /* defaultValueInTests= */ true); public static final CachedFlag sAndroidSurfaceColorUpdate = newCachedFlag( ANDROID_SURFACE_COLOR_UPDATE, @@ -775,19 +784,25 @@ public abstract class ChromeFeatureList { public static final CachedFlag sAndroidThemeModule = newCachedFlag(ANDROID_THEME_MODULE, true); public static final CachedFlag sAndroidThemeResourceProvider = newCachedFlag(ANDROID_THEME_RESOURCE_PROVIDER, false, /* defaultValueInTests= */ false); + public static final CachedFlag sAndroidTwaOriginDisplay = + newCachedFlag(ANDROID_TWA_ORIGIN_DISPLAY, false); public static final CachedFlag sAndroidUseAdminsForEnterpriseInfo = newCachedFlag(ANDROID_USE_ADMINS_FOR_ENTERPRISE_INFO, true); + public static final CachedFlag sAndroidWebAppHeaderForStandaloneMode = + newCachedFlag(ANDROID_WEB_APP_HEADER_FOR_STANDALONE_MODE, false); public static final CachedFlag sAndroidWebAppLaunchHandler = newCachedFlag(ANDROID_WEB_APP_LAUNCH_HANDLER, false, true); public static final CachedFlag sAndroidWebAppMenuButton = - newCachedFlag(ANDROID_WEB_APP_MENU_BUTTON, false); + newCachedFlag(ANDROID_WEB_APP_MENU_BUTTON, true); public static final CachedFlag sAndroidWindowControlsOverlay = - newCachedFlag(ANDROID_WINDOW_CONTROLS_OVERLAY, false); + newCachedFlag(ANDROID_WINDOW_CONTROLS_OVERLAY, true); public static final CachedFlag sAndroidWindowManagementWebApi = newCachedFlag( ANDROID_WINDOW_MANAGEMENT_WEB_API, /* defaultValue= */ false, /* defaultValueInTests= */ true); + public static final CachedFlag sAndroidWindowPopupCustomTabUi = + newCachedFlag(ANDROID_WINDOW_POPUP_CUSTOM_TAB_UI, false, true); public static final CachedFlag sAndroidWindowPopupLargeScreen = newCachedFlag(ANDROID_WINDOW_POPUP_LARGE_SCREEN, false, true); public static final CachedFlag sAndroidWindowPopupPredictFinalBounds = @@ -873,11 +888,8 @@ public abstract class ChromeFeatureList { newCachedFlag(CLAMP_AUTOMOTIVE_SCALING, true); public static final CachedFlag sClankStartupLatencyInjection = newCachedFlag(CLANK_STARTUP_LATENCY_INJECTION, false); - public static final CachedFlag sCleanupLegacyTabState = - newCachedFlag( - CLEANUP_LEGACY_TABSTATE, - /* defaultValue= */ false, - /* defaultValueInTests= */ true); + public static final CachedFlag sClearIntentWhenRecreated = + newCachedFlag(CLEAR_INTENT_WHEN_RECREATED, /* defaultValue= */ true); public static final CachedFlag sCommandLineOnNonRooted = newCachedFlag(COMMAND_LINE_ON_NON_ROOTED, false); public static final CachedFlag sContextMenuPictureInPictureAndroid = @@ -894,9 +906,11 @@ public abstract class ChromeFeatureList { newCachedFlag( DESKTOP_UA_ON_CONNECTED_DISPLAY, /* defaultValue= */ false, - /* defaultValueInTests= */ false); + /* defaultValueInTests= */ true); public static final CachedFlag sDisplayEdgeToEdgeFullscreen = newCachedFlag(DISPLAY_EDGE_TO_EDGE_FULLSCREEN, false, true); + public static final CachedFlag sDocumentPictureInPictureAPI = + newCachedFlag(DOCUMENT_PICTURE_IN_PICTURE_API, false, /* defaultValueInTests= */ false); public static final CachedFlag sDrawChromePagesEdgeToEdge = newCachedFlag(DRAW_CHROME_PAGES_EDGE_TO_EDGE, /* defaultValue= */ true); public static final CachedFlag sEdgeToEdgeBottomChin = @@ -910,16 +924,18 @@ public abstract class ChromeFeatureList { public static final CachedFlag sEdgeToEdgeUseBackupNavbarInsets = newCachedFlag(EDGE_TO_EDGE_USE_BACKUP_NAVBAR_INSETS, true); public static final CachedFlag sEducationalTipDefaultBrowserPromoCard = - newCachedFlag(EDUCATIONAL_TIP_DEFAULT_BROWSER_PROMO_CARD, false); + newCachedFlag(EDUCATIONAL_TIP_DEFAULT_BROWSER_PROMO_CARD, false, true); public static final CachedFlag sEducationalTipModule = newCachedFlag(EDUCATIONAL_TIP_MODULE, true); public static final CachedFlag sEnableExclusiveAccessManager = - newCachedFlag(ENABLE_EXCLUSIVE_ACCESS_MANAGER, false, false); + newCachedFlag(ENABLE_EXCLUSIVE_ACCESS_MANAGER, false, true); public static final CachedFlag sEnableFullscreenToAnyScreenAndroid = newCachedFlag(ENABLE_FULLSCREEN_TO_ANY_SCREEN_ANDROID, false, true); public static final CachedFlag sEnableXAxisActivityTransition = newCachedFlag(ENABLE_X_AXIS_ACTIVITY_TRANSITION, false); public static final CachedFlag sFloatingSnackbar = newCachedFlag(FLOATING_SNACKBAR, true); + public static final CachedFlag sFluidResize = + newCachedFlag(FLUID_RESIZE, /* defaultValue= */ false, /* defaultValueInTests= */ true); public static final CachedFlag sForceTranslucentNotificationTrampoline = newCachedFlag(FORCE_TRANSLUCENT_NOTIFICATION_TRAMPOLINE, false); public static final CachedFlag sFullscreenInsetsApiMigration = @@ -944,16 +960,11 @@ public abstract class ChromeFeatureList { newCachedFlag(INCOGNITO_THEME_OVERLAY_TESTING, false); public static final CachedFlag sKeyboardEscBackNavigation = newCachedFlag(KEYBOARD_ESC_BACK_NAVIGATION, true); - public static final CachedFlag sLegacyTabStateDeprecation = - newCachedFlag( - LEGACY_TAB_STATE_DEPRECATION, - /* defaultValue= */ true, - /* defaultValueInTests= */ true); public static final CachedFlag sLoadAllTabsAtStartup = newCachedFlag( LOAD_ALL_TABS_AT_STARTUP, /* defaultValue= */ false, - /* defaultValueInTests= */ false); + /* defaultValueInTests= */ true); public static final CachedFlag sLoadNativeEarly = newCachedFlag( LOAD_NATIVE_EARLY, /* defaultValue= */ false, /* defaultValueInTests= */ true); @@ -968,12 +979,10 @@ public abstract class ChromeFeatureList { /* defaultValue= */ false, /* defaultValueInTests= */ true); public static final CachedFlag sMiniOriginBar = newCachedFlag(MINI_ORIGIN_BAR, true, true); - public static final CachedFlag sMitigateLegacySearchEnginePromoOverlap = - newCachedFlag(MITIGATE_LEGACY_SEARCH_ENGINE_PROMO_OVERLAP, true, true); public static final CachedFlag sMostVisitedTilesCustomization = newCachedFlag( MOST_VISITED_TILES_CUSTOMIZATION, - /* defaultValue= */ false, + /* defaultValue= */ true, /* defaultValueInTests= */ true); public static final CachedFlag sMostVisitedTilesReselect = newCachedFlag(MOST_VISITED_TILES_RESELECT, false); @@ -989,15 +998,13 @@ public abstract class ChromeFeatureList { public static final CachedFlag sNewTabPageCustomization = newCachedFlag(NEW_TAB_PAGE_CUSTOMIZATION, true); public static final CachedFlag sNewTabPageCustomizationForMvt = - newCachedFlag(NEW_TAB_PAGE_CUSTOMIZATION_FOR_MVT, false, true); + newCachedFlag(NEW_TAB_PAGE_CUSTOMIZATION_FOR_MVT, true); 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 = - newCachedFlag(OPTIMIZATION_GUIDE_PUSH_NOTIFICATIONS, true); public static final CachedFlag sPCctMinimumHeight = newCachedFlag(PCCT_MINIMUM_HEIGHT, true); public static final CachedFlag sPaintPreviewDemo = newCachedFlag(PAINT_PREVIEW_DEMO, false); public static final CachedFlag sPostGetMyMemoryStateToBackground = @@ -1012,8 +1019,6 @@ public abstract class ChromeFeatureList { /* defaultValueInTests= */ true); public static final CachedFlag sRightEdgeGoesForwardGestureNav = newCachedFlag(RIGHT_EDGE_GOES_FORWARD_GESTURE_NAV, false); - public static final CachedFlag sSafetyHubMagicStack = - newCachedFlag(SAFETY_HUB_MAGIC_STACK, false); public static final CachedFlag sSafetyHubWeakAndReusedPasswords = newCachedFlag(SAFETY_HUB_WEAK_AND_REUSED_PASSWORDS, false); public static final CachedFlag sSearchInCCT = @@ -1030,7 +1035,7 @@ public abstract class ChromeFeatureList { newCachedFlag( SETTINGS_MULTI_COLUMN, /* defaultValue= */ false, - /* defaultValueInTests= */ false); + /* defaultValueInTests= */ true); public static final CachedFlag sSettingsSingleActivity = newCachedFlag( SETTINGS_SINGLE_ACTIVITY, @@ -1082,10 +1087,13 @@ public abstract class ChromeFeatureList { public static final CachedFlag sToolbarStaleCaptureBugFix = newCachedFlag( TOOLBAR_STALE_CAPTURE_BUG_FIX, - /* defaultValue= */ false, + /* defaultValue= */ true, /* defaultValueInTests= */ true); public static final CachedFlag sToolbarTabletResizeRefactor = - newCachedFlag(TOOLBAR_TABLET_RESIZE_REFACTOR, /* defaultValue= */ false); + newCachedFlag( + TOOLBAR_TABLET_RESIZE_REFACTOR, + /* defaultValue= */ false, + /* defaultValueInTests= */ true); public static final CachedFlag sTopControlsRefactor = newCachedFlag( TOP_CONTROLS_REFACTOR, @@ -1118,6 +1126,7 @@ public abstract class ChromeFeatureList { sAndroidAnimatedProgressBarInViz, sAndroidAppIntegrationModule, sAndroidAppIntegrationMultiDataSource, + sAndroidAutoMintedTwa, sAndroidBottomToolbar, sAndroidBottomToolbarV2, sAndroidComposeplate, @@ -1127,6 +1136,7 @@ public abstract class ChromeFeatureList { sAndroidElegantTextHeight, sAndroidLogoViewRefactor, sAndroidMinimalUiLargeScreen, + sAndroidNewMediaPicker, sAndroidOpenIncognitoAsWindow, sAndroidProgressBarVisualUpdate, sAndroidSettingsContainment, @@ -1136,11 +1146,14 @@ public abstract class ChromeFeatureList { sAndroidTabSkipSaveTabsKillswitch, sAndroidThemeModule, sAndroidThemeResourceProvider, + sAndroidTwaOriginDisplay, sAndroidUseAdminsForEnterpriseInfo, + sAndroidWebAppHeaderForStandaloneMode, sAndroidWebAppLaunchHandler, sAndroidWebAppMenuButton, sAndroidWindowControlsOverlay, sAndroidWindowManagementWebApi, + sAndroidWindowPopupCustomTabUi, sAndroidWindowPopupLargeScreen, sAndroidWindowPopupPredictFinalBounds, sAndroidWindowPopupResizeAfterSpawn, @@ -1179,7 +1192,7 @@ public abstract class ChromeFeatureList { sChromeNativeUrlOverriding, sClampAutomotiveScaling, sClankStartupLatencyInjection, - sCleanupLegacyTabState, + sClearIntentWhenRecreated, sCommandLineOnNonRooted, sContextMenuPictureInPictureAndroid, sCpaSpecUpdate, @@ -1187,6 +1200,7 @@ public abstract class ChromeFeatureList { sCrossDeviceTabPaneAndroid, sDesktopUAOnConnectedDisplay, sDisplayEdgeToEdgeFullscreen, + sDocumentPictureInPictureAPI, sDrawChromePagesEdgeToEdge, sEdgeToEdgeBottomChin, sEdgeToEdgeEverywhere, @@ -1199,6 +1213,7 @@ public abstract class ChromeFeatureList { sEnableFullscreenToAnyScreenAndroid, sEnableXAxisActivityTransition, sFloatingSnackbar, + sFluidResize, sForceTranslucentNotificationTrampoline, sFullscreenInsetsApiMigration, sFullscreenInsetsApiMigrationOnAutomotive, @@ -1208,7 +1223,6 @@ public abstract class ChromeFeatureList { sHomepageIsNewTabPagePolicyAndroid, sIncognitoThemeOverlayTesting, sKeyboardEscBackNavigation, - sLegacyTabStateDeprecation, sLoadAllTabsAtStartup, sLoadNativeEarly, sLockBackPressHandlerAtStart, @@ -1216,7 +1230,6 @@ public abstract class ChromeFeatureList { sMagicStackAndroid, sMaliciousApkDownloadCheck, sMiniOriginBar, - sMitigateLegacySearchEnginePromoOverlap, sMostVisitedTilesCustomization, sMostVisitedTilesReselect, sMultiInstanceApplicationStatusCleanup, @@ -1227,7 +1240,6 @@ public abstract class ChromeFeatureList { sNewTabPageCustomizationToolbarButton, sNewTabPageCustomizationV2, sNotificationTrampoline, - sOptimizationGuidePushNotifications, sPCctMinimumHeight, sPaintPreviewDemo, sPostGetMyMemoryStateToBackground, @@ -1235,7 +1247,6 @@ public abstract class ChromeFeatureList { sPriceChangeModule, sReportNotificationContentDetectionData, sRightEdgeGoesForwardGestureNav, - sSafetyHubMagicStack, sSafetyHubWeakAndReusedPasswords, sSearchInCCT, sSearchInCCTAlternateTapHandling, @@ -1308,10 +1319,6 @@ public abstract class ChromeFeatureList { newMutableFlagWithSafeDefault(ANDROID_TAB_DECLUTTER_ARCHIVE_ALL_BUT_ACTIVE, false); public static final MutableFlagWithSafeDefault sAndroidTabDeclutterArchiveTabGroups = newMutableFlagWithSafeDefault(ANDROID_TAB_DECLUTTER_ARCHIVE_TAB_GROUPS, true); - public static final MutableFlagWithSafeDefault sAndroidTabDeclutterAutoDelete = - newMutableFlagWithSafeDefault(ANDROID_TAB_DECLUTTER_AUTO_DELETE, true); - public static final MutableFlagWithSafeDefault sAndroidTabDeclutterAutoDeleteKillSwitch = - newMutableFlagWithSafeDefault(ANDROID_TAB_DECLUTTER_AUTO_DELETE_KILL_SWITCH, true); public static final MutableFlagWithSafeDefault sAndroidTabDeclutterPerformanceImprovements = newMutableFlagWithSafeDefault(ANDROID_TAB_DECLUTTER_PERFORMANCE_IMPROVEMENTS, true); public static final MutableFlagWithSafeDefault sAndroidTabDeclutterRescueKillSwitch = @@ -1320,8 +1327,6 @@ public abstract class ChromeFeatureList { newMutableFlagWithSafeDefault(ANDROID_TAB_HIGHLIGHTING, false); public static final MutableFlagWithSafeDefault sAndroidTipsNotifications = newMutableFlagWithSafeDefault(ANDROID_TIPS_NOTIFICATIONS, false); - public static final MutableFlagWithSafeDefault sAndroidZoomIndicator = - newMutableFlagWithSafeDefault(ANDROID_ZOOM_INDICATOR, false); public static final MutableFlagWithSafeDefault sBcivBottomControls = newMutableFlagWithSafeDefault(BCIV_BOTTOM_CONTROLS, true); public static final MutableFlagWithSafeDefault sBrowserControlsEarlyResize = @@ -1331,8 +1336,6 @@ public abstract class ChromeFeatureList { // Default to false. The logic behind the flag is not relevant when native is not initialized. public static final MutableFlagWithSafeDefault sBrowserControlsRenderDrivenShowConstraint = newMutableFlagWithSafeDefault(BROWSER_CONTROLS_RENDER_DRIVEN_SHOW_CONSTRAINT, false); - public static final MutableFlagWithSafeDefault sClearBrowsingDataAndroidSurvey = - newMutableFlagWithSafeDefault(CLEAR_BROWSING_DATA_ANDROID_SURVEY, false); public static final MutableFlagWithSafeDefault sControlsVisibilityFromNavigations = newMutableFlagWithSafeDefault(CONTROLS_VISIBILITY_FROM_NAVIGATIONS, true); public static final MutableFlagWithSafeDefault sDisableInstanceLimit = @@ -1357,18 +1360,15 @@ public abstract class ChromeFeatureList { newMutableFlagWithSafeDefault(ANDROID_NO_VISIBLE_HINT_FOR_DIFFERENT_TLD, true); public static final MutableFlagWithSafeDefault sOmniboxAutofocusOnIncognitoNtp = newMutableFlagWithSafeDefault(OMNIBOX_AUTOFOCUS_ON_INCOGNITO_NTP, false); - public static final MutableFlagWithSafeDefault sQuickDeleteAndroidSurvey = - newMutableFlagWithSafeDefault(QUICK_DELETE_ANDROID_SURVEY, false); public static final MutableFlagWithSafeDefault sReadAloudTapToSeek = newMutableFlagWithSafeDefault(READALOUD_TAP_TO_SEEK, false); + public static final MutableFlagWithSafeDefault sRecordIncognitoNtpTimeToFirstNavigationMetric = + newMutableFlagWithSafeDefault( + RECORD_INCOGNITO_NTP_TIME_TO_FIRST_NAVIGATION_METRIC, true); public static final MutableFlagWithSafeDefault sRecordSuppressionMetrics = newMutableFlagWithSafeDefault(RECORD_SUPPRESSION_METRICS, true); - public static final MutableFlagWithSafeDefault sSafetyHubAndroidOrganicSurvey = - newMutableFlagWithSafeDefault(SAFETY_HUB_ANDROID_ORGANIC_SURVEY, false); - public static final MutableFlagWithSafeDefault sSafetyHubAndroidSurvey = - newMutableFlagWithSafeDefault(SAFETY_HUB_ANDROID_SURVEY, false); - public static final MutableFlagWithSafeDefault sSafetyHubAndroidSurveyV2 = - newMutableFlagWithSafeDefault(SAFETY_HUB_ANDROID_SURVEY_V2, false); + public static final MutableFlagWithSafeDefault sRobustWindowManagement = + newMutableFlagWithSafeDefault(ROBUST_WINDOW_MANAGEMENT, false); public static final MutableFlagWithSafeDefault sShowNewTabAnimations = newMutableFlagWithSafeDefault(SHOW_NEW_TAB_ANIMATIONS, false); public static final MutableFlagWithSafeDefault sShowTabListAnimations = @@ -1383,8 +1383,6 @@ public abstract class ChromeFeatureList { newMutableFlagWithSafeDefault(TAB_GROUP_ENTRY_POINTS_ANDROID, true); public static final MutableFlagWithSafeDefault sTabGroupParityBottomSheetAndroid = newMutableFlagWithSafeDefault(TAB_GROUP_PARITY_BOTTOM_SHEET_ANDROID, true); - public static final MutableFlagWithSafeDefault sTabStripLayoutOptimization = - newMutableFlagWithSafeDefault(TAB_STRIP_LAYOUT_OPTIMIZATION, true); public static final MutableFlagWithSafeDefault sTabSwitcherGroupSuggestionsAndroid = newMutableFlagWithSafeDefault(TAB_SWITCHER_GROUP_SUGGESTIONS_ANDROID, false); public static final MutableFlagWithSafeDefault sTabSwitcherGroupSuggestionsTestModeAndroid = @@ -1395,6 +1393,8 @@ public abstract class ChromeFeatureList { // CachedFeatureParam instances. /* Alphabetical order by feature name, arbitrary order by param name: */ + public static final IntCachedFeatureParam sAndroidAnimatedProgressBarFpsCap = + newIntCachedFeatureParam(ANDROID_ANIMATED_PROGRESS_BAR_IN_BROWSER, "fps_cap", 0); public static final BooleanCachedFeatureParam sAndroidThemeModuleForceDependencies = newBooleanCachedFeatureParam( ANDROID_THEME_MODULE, "force_theme_module_dependencies", false); @@ -1562,18 +1562,6 @@ public abstract class ChromeFeatureList { newIntCachedFeatureParam( CLANK_STARTUP_LATENCY_INJECTION, "latency_injection_amount_millis", 0); - /** Batch size for number of legacy TabState files that should be deleted in a batch. */ - public static final IntCachedFeatureParam sCleanupLegacyTabStateBatchSize = - newIntCachedFeatureParam( - CLEANUP_LEGACY_TABSTATE, "cleanup_legacy_tab_state_batch_size", 5); - - /** Maximum number of legacy TabState files that can be deleted per session. */ - public static final IntCachedFeatureParam sMaxLegacyTabStateFilesCleanedUpPerSession = - newIntCachedFeatureParam( - CLEANUP_LEGACY_TABSTATE, - "max_legacy_tab_state_files_cleaned_up_per_session", - 100); - /** * Cached param whether we disable animations for color changes to the edge-to-edge bottom chin. */ @@ -1671,10 +1659,6 @@ public abstract class ChromeFeatureList { public static final IntCachedFeatureParam sOmahaMinSdkVersionMinSdkVersion = newIntCachedFeatureParam(OMAHA_MIN_SDK_VERSION_ANDROID, "min_sdk_version", -1); - /** The default cache size in Java for push notification. */ - public static final IntCachedFeatureParam sOptimizationGuidePushNotificationsMaxCacheSize = - newIntCachedFeatureParam(OPTIMIZATION_GUIDE_PUSH_NOTIFICATIONS, "max_cache_size", 100); - public static final DoubleCachedFeatureParam sPCctMinimumHeightRatio = newDoubleCachedFeatureParam(PCCT_MINIMUM_HEIGHT, "pcct_minimum_height_ratio", 0.3); @@ -1693,7 +1677,7 @@ public abstract class ChromeFeatureList { public static final IntCachedFeatureParam sReadAloudReadabilityDelayMsAfterPageLoad = newIntCachedFeatureParam( - READALOUD, "read_aloud_readability_delay_ms_after_page_load", 3000); + READALOUD, "read_aloud_readability_delay_ms_after_page_load", 1500); public static final BooleanCachedFeatureParam sShouldConsiderLanguageInOverviewReadability = newBooleanCachedFeatureParam( @@ -1716,25 +1700,6 @@ public abstract class ChromeFeatureList { newBooleanCachedFeatureParam( TAB_STORAGE_SQLITE_PROTOTYPE, "authoritative_read_source", false); - public static final StringCachedFeatureParam sTabStripLayoutOptimizationOemAllowlist = - newStringCachedFeatureParam( - TAB_STRIP_LAYOUT_OPTIMIZATION, "custom_headers_oem_allowlist", ""); - - public static final StringCachedFeatureParam sTabStripLayoutOptimizationOemDenylist = - newStringCachedFeatureParam( - TAB_STRIP_LAYOUT_OPTIMIZATION, "custom_headers_oem_denylist", ""); - - public static final BooleanCachedFeatureParam sTabStripLayoutOptimizationOnExternalDisplay = - newBooleanCachedFeatureParam( - TAB_STRIP_LAYOUT_OPTIMIZATION, "enable_on_external_display", true); - - public static final StringCachedFeatureParam - sTabStripLayoutOptimizationOnExternalDisplayOemDenylist = - newStringCachedFeatureParam( - TAB_STRIP_LAYOUT_OPTIMIZATION, - "external_display_oem_denylist", - "samsung"); - public static final IntCachedFeatureParam sTabWindowManagerReportIndicesMismatchTimeDiffThresholdMs = newIntCachedFeatureParam( @@ -1755,10 +1720,19 @@ public abstract class ChromeFeatureList { public static final BooleanCachedFeatureParam sTouchToSearchCalloutSnippetAsSubtitle = newBooleanCachedFeatureParam(TOUCH_TO_SEARCH_CALLOUT, "snippet_as_subtitle", false); + public static final BooleanCachedFeatureParam sAndroidTipsNotificationsAlwaysShowOptInPromo = + newBooleanCachedFeatureParam( + ANDROID_TIPS_NOTIFICATIONS, "always_show_opt_in_promo", false); + + public static final BooleanCachedFeatureParam sAndroidTipsNotificationsResetFeatureTipShown = + newBooleanCachedFeatureParam( + ANDROID_TIPS_NOTIFICATIONS, "reset_feature_tip_shown", false); + /** All {@link CachedFeatureParam}s of features in this FeatureList */ public static final List> sParamsCached = List.of( // keep-sorted start + sAndroidAnimatedProgressBarFpsCap, sAndroidAppIntegrationModuleForceCardShow, sAndroidAppIntegrationModuleShowThirdPartyCard, sAndroidAppIntegrationMultiDataSourceSkipDeviceCheck, @@ -1772,6 +1746,8 @@ public abstract class ChromeFeatureList { sAndroidComposeplateV2Enabled, sAndroidThemeModuleForceDependencies, sAndroidThemeResourceProviderForceLight, + sAndroidTipsNotificationsAlwaysShowOptInPromo, + sAndroidTipsNotificationsResetFeatureTipShown, sBackgroundThreadPoolFieldTrialConfig, sCctAdaptiveButtonContextualOnly, sCctAdaptiveButtonDefaultVariant, @@ -1791,7 +1767,6 @@ public abstract class ChromeFeatureList { sCctResizableForThirdPartiesDenylistEntries, sClampAutomotiveScalingMaxScalingPercentage, sClankStartupLatencyInjectionAmountMs, - sCleanupLegacyTabStateBatchSize, sDesktopUAAllowedOnExternalDisplayForOem, sEdgeToEdgeBottomChinOemList, sEdgeToEdgeBottomChinOemMinVersions, @@ -1805,7 +1780,6 @@ public abstract class ChromeFeatureList { sLowMemoryDeviceThresholdMb, sMagicStackAndroidShowAllModules, sMaliciousApkDownloadCheckTelemetryOnly, - sMaxLegacyTabStateFilesCleanedUpPerSession, sMostVisitedTilesReselectLaxPath, sMostVisitedTilesReselectLaxQuery, sMostVisitedTilesReselectLaxRef, @@ -1818,7 +1792,6 @@ public abstract class ChromeFeatureList { sNotificationTrampolineNormalJobDurationMs, sNotificationTrampolineTimeoutPriorNativeInitMs, sOmahaMinSdkVersionMinSdkVersion, - sOptimizationGuidePushNotificationsMaxCacheSize, sPCctMinimumHeightRatio, sPriceChangeModuleSkipShoppingPersistedTabDataDelayedInit, sReadAloudAudioOverviewsSpeedAdditionPercentage, @@ -1828,10 +1801,6 @@ public abstract class ChromeFeatureList { sStartSurfaceReturnTimeTabletSecs, sTabGroupListContainment, sTabStorageSqlitePrototypeAuthoritativeReadSource, - sTabStripLayoutOptimizationOemAllowlist, - sTabStripLayoutOptimizationOemDenylist, - sTabStripLayoutOptimizationOnExternalDisplay, - sTabStripLayoutOptimizationOnExternalDisplayOemDenylist, sTabWindowManagerReportIndicesMismatchTimeDiffThresholdMs, sTouchToSearchCalloutIph, sTouchToSearchCalloutSnippetAsSubtitle, @@ -1842,10 +1811,6 @@ public abstract class ChromeFeatureList { // Mutable*ParamWithSafeDefault instances. /* Alphabetical: */ - public static final MutableIntParamWithSafeDefault - sAndroidTabDeclutterAutoDeleteTimeDeltaHours = - sAndroidTabDeclutterAutoDelete.newIntParam( - "android_tab_declutter_auto_delete_time_delta_hours", 90 * 24); public static final MutableBooleanParamWithSafeDefault sAndroidPinnedTabsSearchBoxMovement = sAndroidPinnedTabs.newBooleanParam("search_box_movement", false); @@ -1872,9 +1837,9 @@ public abstract class ChromeFeatureList { sOmniboxAutofocusOnIncognitoNtpWithPrediction = sOmniboxAutofocusOnIncognitoNtp.newBooleanParam("with_prediction", false); - public static final MutableBooleanParamWithSafeDefault sAndroidTabDeclutterAutoDeletePromoTest = - sAndroidTabDeclutterAutoDelete.newBooleanParam( - "android_tab_declutter_auto_delete_promo_test", false); + public static final MutableBooleanParamWithSafeDefault + sOmniboxAutofocusOnIncognitoNtpNoZeroSuggest = + sOmniboxAutofocusOnIncognitoNtp.newBooleanParam("disable_zero_suggest", false); public static final MutableBooleanParamWithSafeDefault sShowNewTabAnimationsLogs = sShowNewTabAnimations.newBooleanParam("logs", false); @@ -1883,4 +1848,7 @@ public abstract class ChromeFeatureList { sAndroidTabHighlighting.newBooleanParam("force_ctrl_click", false); public static final MutableBooleanParamWithSafeDefault sAndroidTabHighlightingForceShiftClick = sAndroidTabHighlighting.newBooleanParam("force_shift_click", false); + + public static final MutableBooleanParamWithSafeDefault sRobustWindowManagementBulkClose = + sRobustWindowManagement.newBooleanParam("bulk_close", false); } diff --git a/tools/under-control/src/chrome/browser/prefs/browser_prefs.cc b/tools/under-control/src/chrome/browser/prefs/browser_prefs.cc index 799c53e2..2c7878ae 100755 --- a/tools/under-control/src/chrome/browser/prefs/browser_prefs.cc +++ b/tools/under-control/src/chrome/browser/prefs/browser_prefs.cc @@ -72,6 +72,7 @@ #include "chrome/browser/push_messaging/push_messaging_service_impl.h" #include "chrome/browser/push_messaging/push_messaging_unsubscribed_entry.h" #include "chrome/browser/rlz/chrome_rlz_tracker_delegate.h" +#include "chrome/browser/search/background/ntp_custom_background_service.h" #include "chrome/browser/search/search.h" #include "chrome/browser/serial/serial_policy_allowed_ports.h" #include "chrome/browser/sharing_hub/sharing_hub_features.h" @@ -110,6 +111,7 @@ #include "components/commerce/core/prefs.h" #include "components/content_settings/core/browser/host_content_settings_map.h" #include "components/content_settings/core/common/pref_names.h" +#include "components/contextual_search/contextual_search_service.h" #include "components/custom_handlers/protocol_handler_registry.h" #include "components/dom_distiller/core/distilled_page_prefs.h" #include "components/domain_reliability/domain_reliability_prefs.h" @@ -119,8 +121,6 @@ #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" #include "components/image_fetcher/core/cache/image_cache.h" #include "components/invalidation/impl/per_user_topic_subscription_manager.h" @@ -153,7 +153,7 @@ #include "components/permissions/pref_names.h" #include "components/plus_addresses/core/common/plus_address_prefs.h" #include "components/policy/core/browser/browser_policy_connector.h" -#include "components/policy/core/browser/url_blocklist_manager.h" +#include "components/policy/core/browser/url_list/url_blocklist_manager.h" #include "components/policy/core/common/local_test_policy_provider.h" #include "components/policy/core/common/management/management_service.h" #include "components/policy/core/common/policy_pref_names.h" @@ -201,6 +201,7 @@ #include "components/update_client/update_client.h" #include "components/variations/service/variations_service.h" #include "components/visited_url_ranking/internal/url_grouping/group_suggestions_service_impl.h" +#include "components/wallet/core/common/wallet_prefs.h" #include "components/webui/chrome_urls/pref_names.h" #include "components/webui/flags/pref_service_flags_storage.h" #include "content/public/browser/render_process_host.h" @@ -298,7 +299,6 @@ #include "chrome/browser/new_tab_page/promos/promo_service.h" #include "chrome/browser/promos/promos_utils.h" // nogncheck crbug.com/1125897 #include "chrome/browser/screen_ai/pref_names.h" -#include "chrome/browser/search/background/ntp_custom_background_service.h" #include "chrome/browser/search_engine_choice/search_engine_choice_dialog_service.h" #include "chrome/browser/signin/signin_promo.h" #include "chrome/browser/task_manager/task_manager_interface.h" @@ -455,6 +455,7 @@ #include "chromeos/ash/components/network/managed_cellular_pref_handler.h" #include "chromeos/ash/components/network/network_metadata_store.h" #include "chromeos/ash/components/network/proxy/proxy_config_handler.h" +#include "chromeos/ash/components/policy/local_auth_factors/local_auth_factors_prefs.h" #include "chromeos/ash/components/policy/restriction_schedule/device_restriction_schedule_controller.h" #include "chromeos/ash/components/policy/system_features_disable_list/system_features_disable_list_policy_utils.h" #include "chromeos/ash/components/quickoffice/quickoffice_prefs.h" @@ -492,6 +493,7 @@ #include "chrome/browser/media/cdm_pref_service_helper.h" #include "chrome/browser/media/media_foundation_service_monitor.h" #include "chrome/browser/os_crypt/app_bound_encryption_provider_win.h" +#include "chrome/browser/webnn/webnn_prefs.h" #endif // BUILDFLAG(IS_WIN) #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) @@ -557,166 +559,6 @@ namespace { // Please keep the list of deprecated prefs in chronological order. i.e. Add to // the bottom of the list, not here at the top. -// Deprecated 10/2024. -constexpr char kLiveCaptionBubblePinned[] = - "accessibility.captions.live_caption_bubble_pinned"; - -// Deprecated 10/2024. -#if BUILDFLAG(IS_CHROMEOS) -const char kMigrationStep[] = "ash.browser_data_migrator.migration_step"; -const char kMoveMigrationResumeStepPref[] = - "ash.browser_data_migrator.move_migration_resume_step"; -const char kMoveMigrationResumeCountPref[] = - "ash.browser_data_migrator.move_migration_resume_count"; -const char kLacrosSecondaryProfilesAllowed[] = - "lacros_secondary_profiles_allowed"; -constexpr char kDataVerPref[] = "lacros.data_version"; -constexpr char kMigrationAttemptCountPref[] = - "ash.browser_data_migrator.migration_attempt_count"; -constexpr char kProfileMigrationCompletedForUserPref[] = - "lacros.profile_migration_completed_for_user"; -constexpr char kProfileMoveMigrationCompletedForUserPref[] = - "lacros.profile_move_migration_completed_for_user"; -constexpr char kProfileMigrationCompletedForNewUserPref[] = - "lacros.profile_migration_completed_for_new_user"; -const char kProfileDataBackwardMigrationCompletedForUserPref[] = - "lacros.profile_data_backward_migration_completed_for_user"; -const char kGotoFilesPref[] = "lacros.goto_files"; -const char kProfileMigrationCompletionTimeForUserPref[] = - "lacros.profile_migration_completion_time_for_user"; -const char kLacrosDataBackwardMigrationMode[] = - "lacros_data_backward_migration_mode"; -#endif - -#if !BUILDFLAG(IS_ANDROID) -// Deprecated 10/2024 -// Pref name for the percent threshold to show HaTS on the What's New page. -inline constexpr char kWhatsNewHatsActivationThreshold[] = - "browser.whats_new_hats_activation_threshold"; -#endif - -// Deprecated 10/2024. -const char kModelExecutionMainToggleSettingState[] = - "optimization_guide.model_execution_main_toggle_setting_state"; - -#if BUILDFLAG(IS_CHROMEOS) -// Deprecated 10/2024 -// An integer pref which determines how much FaceGaze should smooth cursor -// movements. -inline constexpr char kAccessibilityFaceGazeCursorSmoothing[] = - "settings.a11y.face_gaze.cursor_smoothing"; -#endif // BUILDFLAG(IS_CHROMEOS) - -// Deprecated 10/2024. -const char kBeforeunloadEventCancelByPreventDefaultEnabled[] = - "policy.beforeunload_event_cancel_by_prevent_default_enabled"; - -// Deprecated 10/2024. -inline constexpr char kDocumentSuggestEnabled[] = "documentsuggest.enabled"; - -#if BUILDFLAG(IS_CHROMEOS) -// Deprecated 10/2024 -inline constexpr char kWallpaperSeaPenMigrationStatus[] = - "ash.wallpaper.sea_pen.migration_status"; -#endif - -// Deprecated 10/2024 -inline constexpr char kFirstTimeInterstitialBannerState[] = - "profile.managed.banner_state"; - -// Deprecated 10/2024 -inline constexpr char kSidePanelCompanionEntryPinnedToToolbar[] = - "side_panel.companion_pinned_to_toolbar"; -inline constexpr char kMsbbPromoDeclinedCountPref[] = - "Companion.Promo.MSBB.Declined.Count"; -inline constexpr char kSigninPromoDeclinedCountPref[] = - "Companion.Promo.Signin.Declined.Count"; -inline constexpr char kExpsPromoDeclinedCountPref[] = - "Companion.Promo.Exps.Declined.Count"; -inline constexpr char kExpsPromoShownCountPref[] = - "Companion.Promo.Exps.Shown.Count"; -inline constexpr char kPcoPromoShownCountPref[] = - "Companion.Promo.PCO.Shown.Count"; -inline constexpr char kPcoPromoDeclinedCountPref[] = - "Companion.Promo.PCO.Declined.Count"; -inline constexpr char kExpsOptInStatusGrantedPref[] = - "Companion.Exps.OptIn.Status.Granted"; -inline constexpr char kHasNavigatedToExpsSuccessPage[] = - "Companion.HasNavigatedToExpsSuccessPage"; - -// Deprecated 11/2024. -#if BUILDFLAG(IS_CHROMEOS) -constexpr char kNoteTakingAppEnabledOnLockScreen[] = - "settings.note_taking_app_enabled_on_lock_screen"; -constexpr char kNoteTakingAppsLockScreenAllowlist[] = - "settings.note_taking_apps_lock_screen_whitelist"; -constexpr char kNoteTakingAppsLockScreenToastShown[] = - "settings.note_taking_apps_lock_screen_toast_shown"; -constexpr char kRestoreLastLockScreenNote[] = - "settings.restore_last_lock_screen_note"; -constexpr char kLockScreenDataPrefKey[] = "lockScreenDataItems"; -inline constexpr char kSyncableVersionedWallpaperInfo[] = - "syncable_versioned_wallpaper_info"; -constexpr char kLacrosProxyControllingExtension[] = - "ash.lacros_proxy_controlling_extension"; -#endif - -// Deprecated 11/2024 -constexpr char kPrefixedVideoFullscreenApiAvailability[] = - "media.prefixed_fullscreen_video_api_availability"; - -// Deprecated 11/2024 -constexpr char kOnDeviceModelTimeoutCount[] = - "optimization_guide.on_device.timeout_count"; - -#if !BUILDFLAG(IS_ANDROID) -// Deprecated 11/2024 -inline constexpr char kCartModuleHidden[] = "cart_module_hidden"; -inline constexpr char kCartModuleWelcomeSurfaceShownTimes[] = - "cart_module_welcome_surface_shown_times"; -inline constexpr char kCartDiscountAcknowledged[] = - "cart_discount_acknowledged"; -inline constexpr char kCartDiscountEnabled[] = "cart_discount_enabled"; -inline constexpr char kCartUsedDiscounts[] = "cart_used_discounts"; -inline constexpr char kCartDiscountLastFetchedTime[] = - "cart_discount_last_fetched_time"; -inline constexpr char kCartDiscountConsentShown[] = - "cart_discount_consent_shown"; -inline constexpr char kDiscountConsentDecisionMadeIn[] = - "discount_consent_decision_made_in"; -inline constexpr char kDiscountConsentDismissedIn[] = - "discount_consent_dismissed_in"; -inline constexpr char kDiscountConsentLastDimissedTime[] = - "discount_consent_last_dimissed_time"; -inline constexpr char kDiscountConsentLastShownInVariation[] = - "discount_consent_last_shown_in"; -inline constexpr char kDiscountConsentPastDismissedCount[] = - "discount_consent_dismissed_count"; -inline constexpr char kDiscountConsentShowInterest[] = - "discount_consent_show_interest"; -inline constexpr char kDiscountConsentShowInterestIn[] = - "discount_consent_show_interest_in"; -#endif // !BUILDFLAG(IS_ANDROID) - -// Deprecated 11/2024 -constexpr char kQuietNotificationPermissionPromoWasShown[] = - "profile.content_settings.quiet_permission_ui_promo.was_shown." - "notifications"; -constexpr char kQuietNotificationPermissionShouldShowPromo[] = - "profile.content_settings.quiet_permission_ui_promo.should_show." - "notifications"; -inline constexpr char kQuietNotificationPermissionUiEnablingMethod[] = - "profile.content_settings.enable_quiet_permission_ui_enabling_method." - "notifications"; - -#if BUILDFLAG(IS_CHROMEOS) -// Deprecated 11/2024 -inline constexpr char kHatsPrivacyHubPostLaunchIsSelected[] = - "hats_privacy_hub_postlaunch_is_selected"; -inline constexpr char kHatsPrivacyHubPostLaunchCycleEndTs[] = - "hats_privacy_hub_postlaunch_end_timestamp"; -#endif - // Deprecated 12/2024. inline constexpr char kDeleteTimePeriodV2[] = "browser.clear_data.time_period_v2"; @@ -1074,43 +916,22 @@ constexpr char kSessionRestorePrefChanged[] = "session.restore_pref_changed"; constexpr char kLegacySyncSessionsGUID[] = "sync.session_sync_guid"; +const char kRefreshHeuristicBreakageException[] = + "fingerprinting_protection_filter.refresh_heuristic_breakage_exception_" + "sites"; + +const char kFpfRulesetContent[] = + "fingerprinting_protection_filter.ruleset_version.content"; + +const char kFpfRulesetFormat[] = + "fingerprinting_protection_filter.ruleset_version.format"; + +const char kFpfRulesetChecksum[] = + "fingerprinting_protection_filter.ruleset_version.checksum"; + // Register local state used only for migration (clearing or moving to a new // key). void RegisterLocalStatePrefsForMigration(PrefRegistrySimple* registry) { -#if BUILDFLAG(IS_CHROMEOS) - // Deprecated 10/2024. - registry->RegisterIntegerPref(kMigrationStep, 0); - registry->RegisterDictionaryPref(kMoveMigrationResumeStepPref); - registry->RegisterDictionaryPref(kMoveMigrationResumeCountPref); - registry->RegisterDictionaryPref(kDataVerPref); - registry->RegisterDictionaryPref(kMigrationAttemptCountPref); - registry->RegisterDictionaryPref(kProfileMigrationCompletedForUserPref); - registry->RegisterDictionaryPref(kProfileMoveMigrationCompletedForUserPref); - registry->RegisterDictionaryPref(kProfileMigrationCompletedForNewUserPref); - registry->RegisterDictionaryPref( - kProfileDataBackwardMigrationCompletedForUserPref); - registry->RegisterListPref(kGotoFilesPref); - registry->RegisterDictionaryPref(kProfileMigrationCompletionTimeForUserPref); - registry->RegisterStringPref(kLacrosDataBackwardMigrationMode, ""); -#endif - -#if !BUILDFLAG(IS_ANDROID) - // Deprecated 10/2024 - registry->RegisterIntegerPref(kWhatsNewHatsActivationThreshold, 100); -#endif - - // Deprecated 10/2024. - registry->RegisterBooleanPref(kBeforeunloadEventCancelByPreventDefaultEnabled, - true); - -#if BUILDFLAG(IS_CHROMEOS) - // Deprecated 11/2024. - registry->RegisterDictionaryPref(kLockScreenDataPrefKey); -#endif - - // Deprecated 11/2024. - registry->RegisterIntegerPref(kOnDeviceModelTimeoutCount, 0); - #if BUILDFLAG(IS_CHROMEOS) // Deprecated 12/2024. registry->RegisterIntegerPref(kLacrosLaunchSwitch, 0); @@ -1191,6 +1012,11 @@ void RegisterLocalStatePrefsForMigration(PrefRegistrySimple* registry) { // Deprecated 09/2025. registry->RegisterBooleanPref(kRendererCodeIntegrityEnabledNeedsDeletion, false); + + // Deprecated 11/2025. + registry->RegisterStringPref(kFpfRulesetContent, std::string()); + registry->RegisterIntegerPref(kFpfRulesetFormat, 0); + registry->RegisterUint64Pref(kFpfRulesetChecksum, 0); } // Register prefs used only for migration (clearing or moving to a new key). @@ -1198,86 +1024,6 @@ void RegisterProfilePrefsForMigration( user_prefs::PrefRegistrySyncable* registry) { chrome_browser_net::secure_dns::RegisterProbesSettingBackupPref(registry); - // Deprecated 10/2024. - registry->RegisterIntegerPref(kModelExecutionMainToggleSettingState, 0); - -// Deprecated 10/2024 -#if BUILDFLAG(IS_CHROMEOS) - registry->RegisterBooleanPref(kLacrosSecondaryProfilesAllowed, true); - registry->RegisterIntegerPref(kAccessibilityFaceGazeCursorSmoothing, 7); - registry->RegisterIntegerPref(kWallpaperSeaPenMigrationStatus, 0); -#endif - - // Deprecated 10/2024 - registry->RegisterBooleanPref(kLiveCaptionBubblePinned, false); - - // Deprecated 10/2024 - registry->RegisterBooleanPref(kDocumentSuggestEnabled, true); - - // Deprecated 10/2024 - registry->RegisterIntegerPref(kFirstTimeInterstitialBannerState, 0); - - // Deprecated 10/2024 - registry->RegisterBooleanPref(kSidePanelCompanionEntryPinnedToToolbar, false); - registry->RegisterIntegerPref(kMsbbPromoDeclinedCountPref, 0); - registry->RegisterIntegerPref(kSigninPromoDeclinedCountPref, 0); - registry->RegisterIntegerPref(kExpsPromoDeclinedCountPref, 0); - registry->RegisterIntegerPref(kExpsPromoShownCountPref, 0); - registry->RegisterIntegerPref(kPcoPromoShownCountPref, 0); - registry->RegisterIntegerPref(kPcoPromoDeclinedCountPref, 0); - registry->RegisterBooleanPref(kExpsOptInStatusGrantedPref, false); - registry->RegisterBooleanPref(kHasNavigatedToExpsSuccessPage, false); - -#if BUILDFLAG(IS_CHROMEOS) - // Deprecated 11/2024 - registry->RegisterBooleanPref(kNoteTakingAppEnabledOnLockScreen, false); - registry->RegisterListPref(kNoteTakingAppsLockScreenAllowlist, - base::Value::List()); - registry->RegisterDictionaryPref(kNoteTakingAppsLockScreenToastShown); - registry->RegisterBooleanPref(kRestoreLastLockScreenNote, false); - registry->RegisterDictionaryPref(kSyncableVersionedWallpaperInfo); - registry->RegisterDictionaryPref(kLacrosProxyControllingExtension); -#endif - - // Deprecated 11/2024 - registry->RegisterStringPref(kPrefixedVideoFullscreenApiAvailability, ""); - -#if !BUILDFLAG(IS_ANDROID) - // Deprecated 11/2024 - registry->RegisterBooleanPref(kCartModuleHidden, false); - registry->RegisterIntegerPref(kCartModuleWelcomeSurfaceShownTimes, 0); - registry->RegisterBooleanPref(kCartDiscountAcknowledged, false); - registry->RegisterBooleanPref(kCartDiscountEnabled, false); - registry->RegisterDictionaryPref(kCartUsedDiscounts); - registry->RegisterTimePref(kCartDiscountLastFetchedTime, base::Time()); - registry->RegisterBooleanPref(kCartDiscountConsentShown, false); - registry->RegisterTimePref(kDiscountConsentLastDimissedTime, base::Time()); - registry->RegisterIntegerPref(kDiscountConsentPastDismissedCount, 0); - registry->RegisterIntegerPref(kDiscountConsentDecisionMadeIn, 0); - registry->RegisterIntegerPref(kDiscountConsentDismissedIn, 0); - registry->RegisterIntegerPref(kDiscountConsentLastShownInVariation, 0); - registry->RegisterBooleanPref(kDiscountConsentShowInterest, false); - registry->RegisterIntegerPref(kDiscountConsentShowInterestIn, 0); -#endif // !BUILDFLAG(IS_ANDROID) - - // Deprecated 11/2024 - optimization_guide::model_execution::prefs:: - RegisterLegacyUsagePrefsForMigration(registry); - - // Deprecated 11/2024 - registry->RegisterBooleanPref(kQuietNotificationPermissionPromoWasShown, - true); - registry->RegisterBooleanPref(kQuietNotificationPermissionShouldShowPromo, - true); - registry->RegisterIntegerPref(kQuietNotificationPermissionUiEnablingMethod, - 0); - -#if BUILDFLAG(IS_CHROMEOS) - // Deprecated 11/2024 - registry->RegisterBooleanPref(kHatsPrivacyHubPostLaunchIsSelected, false); - registry->RegisterInt64Pref(kHatsPrivacyHubPostLaunchCycleEndTs, 0); -#endif - // Deprecated 12/2024. registry->RegisterIntegerPref(kDeleteTimePeriodV2, -1); registry->RegisterIntegerPref(kDeleteTimePeriodV2Basic, -1); @@ -1528,6 +1274,9 @@ void RegisterProfilePrefsForMigration( // Deprecated 10/2025. registry->RegisterStringPref(kLegacySyncSessionsGUID, std::string()); + + // Deprecated 11/2025. + registry->RegisterDictionaryPref(kRefreshHeuristicBreakageException); } } // namespace @@ -1609,10 +1358,6 @@ void RegisterLocalState(PrefRegistrySimple* registry) { SSLConfigServiceManager::RegisterPrefs(registry); subresource_filter::IndexedRulesetVersion::RegisterPrefs( registry, subresource_filter::kSafeBrowsingRulesetConfig.filter_tag); - subresource_filter::IndexedRulesetVersion::RegisterPrefs( - registry, - fingerprinting_protection_filter::kFingerprintingProtectionRulesetConfig - .filter_tag); SystemNetworkContextManager::RegisterPrefs(registry); tpcd::experiment::RegisterLocalStatePrefs(registry); tpcd::metadata::RegisterLocalStatePrefs(registry); @@ -1776,6 +1521,7 @@ void RegisterLocalState(PrefRegistrySimple* registry) { registry->RegisterBooleanPref(prefs::kRestrictCoreSharingOnRenderer, false); MediaFoundationServiceMonitor::RegisterPrefs(registry); os_crypt_async::AppBoundEncryptionProviderWin::RegisterLocalPrefs(registry); + webnn::RegisterLocalPrefs(registry); #endif // BUILDFLAG(IS_WIN) #if BUILDFLAG(ENABLE_DOWNGRADE_PROCESSING) @@ -1866,6 +1612,8 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, chrome_prefs::RegisterProfilePrefs(registry); collaboration::prefs::RegisterProfilePrefs(registry); commerce::RegisterProfilePrefs(registry); + contextual_search::ContextualSearchService::RegisterProfilePrefs(registry); + registry->RegisterIntegerPref(prefs::kContextualTasksNextPanelOpenCount, 0); cross_device::RegisterProfilePrefs(registry); enterprise::RegisterIdentifiersProfilePrefs(registry); enterprise_connectors::RegisterProfilePrefs(registry); @@ -1873,7 +1621,6 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, enterprise_reporting::RegisterProfilePrefs(registry); dom_distiller::DistilledPagePrefs::RegisterProfilePrefs(registry); DownloadPrefs::RegisterProfilePrefs(registry); - fingerprinting_protection_filter::prefs::RegisterProfilePrefs(registry); #if BUILDFLAG(ENABLE_GLIC) glic::prefs::RegisterProfilePrefs(registry); #endif @@ -1961,8 +1708,10 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, translate::TranslatePrefs::RegisterProfilePrefs(registry); visited_url_ranking::GroupSuggestionsServiceImpl::RegisterProfilePrefs( registry); + wallet::prefs::RegisterProfilePrefs(registry); omnibox::RegisterProfilePrefs(registry); ZeroSuggestProvider::RegisterProfilePrefs(registry); + NtpCustomBackgroundService::RegisterProfilePrefs(registry); #if BUILDFLAG(ENABLE_SESSION_SERVICE) RegisterSessionServiceLogProfilePrefs(registry); @@ -1994,6 +1743,9 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, registry->RegisterListPref(prefs::kPdfLocalFileAccessAllowedForDomains, base::Value::List()); registry->RegisterBooleanPref(prefs::kPdfUseSkiaRendererEnabled, true); +#if BUILDFLAG(IS_CHROMEOS) + registry->RegisterBooleanPref(prefs::kPdfXfaFormsEnabled, false); +#endif // BUILDFLAG(IS_CHROMEOS) #endif // BUILDFLAG(ENABLE_PDF) #if BUILDFLAG(ENABLE_PRINT_PREVIEW) @@ -2037,7 +1789,6 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, GoogleCalendarPageHandler::RegisterProfilePrefs(registry); HatsServiceDesktop::RegisterProfilePrefs(registry); lens::prefs::RegisterProfilePrefs(registry); - NtpCustomBackgroundService::RegisterProfilePrefs(registry); ManagementUI::RegisterProfilePrefs(registry); media_router::RegisterAccessCodeProfilePrefs(registry); media_router::RegisterProfilePrefs(registry); @@ -2165,6 +1916,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, plugin_vm::prefs::RegisterProfilePrefs(registry); policy::ArcAppInstallEventLogger::RegisterProfilePrefs(registry); policy::AppInstallEventLogManagerWrapper::RegisterProfilePrefs(registry); + policy::local_auth_factors::RegisterProfilePrefs(registry); policy::StatusCollector::RegisterProfilePrefs(registry); ash::SystemProxyManager::RegisterProfilePrefs(registry); ChromeShelfPrefs::RegisterProfilePrefs(registry); @@ -2307,6 +2059,17 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, true); registry->RegisterBooleanPref(ntp_tiles::prefs::kTipsHomeModuleEnabled, true); + +#if BUILDFLAG(IS_ANDROID) + registry->RegisterBooleanPref(prefs::kAndroidTipNotificationShownESB, false); + registry->RegisterBooleanPref(prefs::kAndroidTipNotificationShownQuickDelete, + false); + registry->RegisterBooleanPref(prefs::kAndroidTipNotificationShownLens, false); + registry->RegisterBooleanPref( + prefs::kAndroidTipNotificationShownBottomOmnibox, false); +#endif // BUILDFLAG(IS_ANDROID) + + registry->RegisterBooleanPref(prefs::kStaticStorageQuotaEnabled, false); } void RegisterUserProfilePrefs(user_prefs::PrefRegistrySyncable* registry) { @@ -2357,42 +2120,6 @@ void MigrateObsoleteLocalStatePrefs(PrefService* local_state) { // BEGIN_MIGRATE_OBSOLETE_LOCAL_STATE_PREFS // Please don't delete the preceding line. It is used by PRESUBMIT.py. -#if BUILDFLAG(IS_CHROMEOS) - // Added 10/2024. - local_state->ClearPref(kMigrationStep); - local_state->ClearPref(kMoveMigrationResumeStepPref); - local_state->ClearPref(kMoveMigrationResumeCountPref); - local_state->ClearPref(kDataVerPref); - local_state->ClearPref(kMigrationAttemptCountPref); - local_state->ClearPref(kProfileMigrationCompletedForUserPref); - local_state->ClearPref(kProfileMoveMigrationCompletedForUserPref); - local_state->ClearPref(kProfileMigrationCompletedForNewUserPref); - local_state->ClearPref(kProfileDataBackwardMigrationCompletedForUserPref); - local_state->ClearPref(kGotoFilesPref); - local_state->ClearPref(kProfileMigrationCompletionTimeForUserPref); - local_state->ClearPref(kLacrosDataBackwardMigrationMode); -#endif - -#if !BUILDFLAG(IS_ANDROID) - // Added 10/2024 - local_state->ClearPref(kWhatsNewHatsActivationThreshold); -#endif - - // Added 10/2024. - local_state->ClearPref(kBeforeunloadEventCancelByPreventDefaultEnabled); - - // Added 11/2024 -#if BUILDFLAG(IS_CHROMEOS) - local_state->ClearPref(kLockScreenDataPrefKey); -#endif - - // Added 11/2024 - local_state->ClearPref(kOnDeviceModelTimeoutCount); - - // Added 11/2024 - optimization_guide::model_execution::prefs::MigrateLegacyUsagePrefs( - local_state); - // Added 12/2024 #if BUILDFLAG(IS_CHROMEOS) local_state->ClearPref(kLacrosLaunchSwitch); @@ -2476,6 +2203,11 @@ void MigrateObsoleteLocalStatePrefs(PrefService* local_state) { local_state->ClearPref(prefs::kDefaultBrowserFirstShownTime); #endif + // Added 11/2025 + local_state->ClearPref(kFpfRulesetContent); + local_state->ClearPref(kFpfRulesetFormat); + local_state->ClearPref(kFpfRulesetChecksum); + // Please don't delete the following line. It is used by PRESUBMIT.py. // END_MIGRATE_OBSOLETE_LOCAL_STATE_PREFS @@ -2537,78 +2269,6 @@ void MigrateObsoleteProfilePrefs(PrefService* profile_prefs, MigrateDefaultBrowserLastDeclinedPref(profile_prefs); #endif - // Added 10/2024. - profile_prefs->ClearPref(kModelExecutionMainToggleSettingState); - -// Added 10/2024 -#if BUILDFLAG(IS_CHROMEOS) - profile_prefs->ClearPref(kLacrosSecondaryProfilesAllowed); - profile_prefs->ClearPref(kAccessibilityFaceGazeCursorSmoothing); - profile_prefs->ClearPref(kWallpaperSeaPenMigrationStatus); -#endif // BUILDFLAG(IS_CHROMEOS) - - // Added 10/2024 - profile_prefs->ClearPref(kLiveCaptionBubblePinned); - - // Added 10/2024 - profile_prefs->ClearPref(kDocumentSuggestEnabled); - - // Added 10/2024 - profile_prefs->ClearPref(kFirstTimeInterstitialBannerState); - - // Added 10/2024 - profile_prefs->ClearPref(kSidePanelCompanionEntryPinnedToToolbar); - profile_prefs->ClearPref(kMsbbPromoDeclinedCountPref); - profile_prefs->ClearPref(kSigninPromoDeclinedCountPref); - profile_prefs->ClearPref(kExpsPromoDeclinedCountPref); - profile_prefs->ClearPref(kExpsPromoShownCountPref); - profile_prefs->ClearPref(kPcoPromoShownCountPref); - profile_prefs->ClearPref(kPcoPromoDeclinedCountPref); - profile_prefs->ClearPref(kExpsOptInStatusGrantedPref); - profile_prefs->ClearPref(kHasNavigatedToExpsSuccessPage); - -#if BUILDFLAG(IS_CHROMEOS) - // Deprecated 11/2024 - profile_prefs->ClearPref(kNoteTakingAppEnabledOnLockScreen); - profile_prefs->ClearPref(kNoteTakingAppsLockScreenAllowlist); - profile_prefs->ClearPref(kNoteTakingAppsLockScreenToastShown); - profile_prefs->ClearPref(kRestoreLastLockScreenNote); - profile_prefs->ClearPref(kSyncableVersionedWallpaperInfo); - profile_prefs->ClearPref(kLacrosProxyControllingExtension); -#endif - - // Added 11/2024 - profile_prefs->ClearPref(kPrefixedVideoFullscreenApiAvailability); - -// Added 11/2024 -#if !BUILDFLAG(IS_ANDROID) - profile_prefs->ClearPref(kCartModuleHidden); - profile_prefs->ClearPref(kCartModuleWelcomeSurfaceShownTimes); - profile_prefs->ClearPref(kCartDiscountAcknowledged); - profile_prefs->ClearPref(kCartDiscountEnabled); - profile_prefs->ClearPref(kCartUsedDiscounts); - profile_prefs->ClearPref(kCartDiscountLastFetchedTime); - profile_prefs->ClearPref(kCartDiscountConsentShown); - profile_prefs->ClearPref(kDiscountConsentDecisionMadeIn); - profile_prefs->ClearPref(kDiscountConsentDismissedIn); - profile_prefs->ClearPref(kDiscountConsentLastDimissedTime); - profile_prefs->ClearPref(kDiscountConsentLastShownInVariation); - profile_prefs->ClearPref(kDiscountConsentPastDismissedCount); - profile_prefs->ClearPref(kDiscountConsentShowInterest); - profile_prefs->ClearPref(kDiscountConsentShowInterestIn); -#endif // !BUILDFLAG(IS_ANDROID) - - // Added 11/2024 - profile_prefs->ClearPref(kQuietNotificationPermissionPromoWasShown); - profile_prefs->ClearPref(kQuietNotificationPermissionShouldShowPromo); - profile_prefs->ClearPref(kQuietNotificationPermissionUiEnablingMethod); - -#if BUILDFLAG(IS_CHROMEOS) - // Added 11/2024 - profile_prefs->ClearPref(kHatsPrivacyHubPostLaunchIsSelected); - profile_prefs->ClearPref(kHatsPrivacyHubPostLaunchCycleEndTs); -#endif - // Added 12/2024. profile_prefs->ClearPref(kDeleteTimePeriodV2); profile_prefs->ClearPref(kDeleteTimePeriodV2Basic); @@ -2841,6 +2501,9 @@ void MigrateObsoleteProfilePrefs(PrefService* profile_prefs, // Added 10/2025. profile_prefs->ClearPref(kLegacySyncSessionsGUID); + // Added 11/2025. + profile_prefs->ClearPref(kRefreshHeuristicBreakageException); + // 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 0d3ad9fc..8801ea8a 100755 --- a/tools/under-control/src/chrome/browser/ui/tab_helpers.cc +++ b/tools/under-control/src/chrome/browser/ui/tab_helpers.cc @@ -40,6 +40,7 @@ #include "chrome/browser/media/media_engagement_service.h" #include "chrome/browser/metrics/desktop_session_duration/desktop_session_duration_observer.h" #include "chrome/browser/navigation_predictor/navigation_predictor_preconnect_client.h" +#include "chrome/browser/net/http_auth_cache_status.h" #include "chrome/browser/net/net_error_tab_helper.h" #include "chrome/browser/optimization_guide/optimization_guide_keyed_service.h" #include "chrome/browser/optimization_guide/optimization_guide_keyed_service_factory.h" @@ -78,7 +79,6 @@ #include "chrome/browser/tpcd/heuristics/opener_heuristic_service.h" #include "chrome/browser/tpcd/http_error_observer/http_error_tab_helper.h" #include "chrome/browser/tpcd/metadata/devtools_observer.h" -#include "chrome/browser/tpcd/support/validity_service.h" #include "chrome/browser/translate/chrome_translate_client.h" #include "chrome/browser/trusted_vault/trusted_vault_encryption_keys_tab_helper.h" #include "chrome/browser/ui/autofill/autofill_client_provider.h" @@ -156,7 +156,6 @@ #include "pdf/buildflags.h" #include "printing/buildflags/buildflags.h" #include "rlz/buildflags/buildflags.h" -#include "third_party/blink/public/common/features.h" #include "ui/accessibility/accessibility_features.h" #if BUILDFLAG(IS_ANDROID) @@ -164,24 +163,20 @@ #include "base/functional/bind.h" #include "base/memory/ptr_util.h" #include "chrome/browser/android/oom_intervention/oom_intervention_tab_helper.h" +#include "chrome/browser/android/persisted_tab_data/language_persisted_tab_data_android.h" #include "chrome/browser/android/persisted_tab_data/sensitivity_persisted_tab_data_android.h" #include "chrome/browser/android/policy/policy_auditor_bridge.h" #include "chrome/browser/banners/android/chrome_app_banner_manager_android.h" #include "chrome/browser/content_settings/request_desktop_site_web_contents_observer_android.h" #include "chrome/browser/facilitated_payments/ui/chrome_facilitated_payments_client.h" #include "chrome/browser/fast_checkout/fast_checkout_tab_helper.h" -#include "chrome/browser/fingerprinting_protection/chrome_fingerprinting_protection_web_contents_helper_factory.h" #include "chrome/browser/flags/android/chrome_feature_list.h" #include "chrome/browser/loader/from_gws_navigation_and_keep_alive_request_tab_helper.h" #include "chrome/browser/plugins/plugin_observer_android.h" -#include "chrome/browser/privacy_sandbox/tracking_protection_settings_factory.h" #include "chrome/browser/ui/android/context_menu_helper.h" #include "chrome/browser/ui/javascript_dialogs/javascript_tab_modal_dialog_manager_delegate_android.h" +#include "components/content_capture/common/content_capture_features.h" #include "components/facilitated_payments/core/features/features.h" -#include "components/fingerprinting_protection_filter/common/fingerprinting_protection_filter_features.h" -#include "components/fingerprinting_protection_filter/interventions/browser/canvas_interventions_web_contents_helper.h" -#include "components/fingerprinting_protection_filter/interventions/common/interventions_features.h" -#include "components/ip_protection/common/ip_protection_status.h" #include "components/page_load_metrics/browser/features.h" #include "components/sensitive_content/android/android_sensitive_content_client.h" #include "components/sensitive_content/features.h" @@ -194,6 +189,7 @@ #include "chrome/browser/ui/bookmarks/bookmark_tab_helper.h" #include "chrome/browser/ui/intent_picker_tab_helper.h" #include "chrome/browser/ui/javascript_dialogs/javascript_tab_modal_dialog_manager_delegate_desktop.h" +#include "chrome/browser/ui/read_anything/read_anything_side_panel_controller.h" #include "chrome/browser/ui/sad_tab_helper.h" #include "chrome/browser/ui/search/search_tab_helper.h" #include "chrome/browser/ui/search_engine_choice/search_engine_choice_tab_helper.h" @@ -201,7 +197,6 @@ #include "chrome/browser/ui/ui_features.h" #include "chrome/browser/ui/uma_browsing_activity_observer.h" #include "chrome/browser/ui/views/side_panel/history_clusters/history_clusters_tab_helper.h" -#include "chrome/browser/ui/views/side_panel/read_anything/read_anything_side_panel_controller.h" #include "components/image_fetcher/core/image_fetcher_service.h" #include "components/omnibox/browser/omnibox_field_trial.h" #include "components/web_modal/web_contents_modal_dialog_manager.h" @@ -349,16 +344,14 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) { autofill::AutofillClientProviderFactory::GetForProfile(profile); autofill_client_provider.CreateClientForWebContents(web_contents); - if (base::FeatureList::IsEnabled( - blink::features::kMediaSessionEnterPictureInPicture)) { #if BUILDFLAG(IS_ANDROID) - if (base::FeatureList::IsEnabled(media::kAutoPictureInPictureAndroid)) { - AutoPictureInPictureTabHelper::CreateForWebContents(web_contents); - } -#else + if (base::FeatureList::IsEnabled(media::kAutoPictureInPictureAndroid)) { AutoPictureInPictureTabHelper::CreateForWebContents(web_contents); -#endif } +#else + AutoPictureInPictureTabHelper::CreateForWebContents(web_contents); +#endif + #if BUILDFLAG(IS_ANDROID) // The sensitive content client has to be instantiated after the autofill // client, because the sensitive content client starts a flow which uses @@ -371,33 +364,9 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) { web_contents, "SensitiveContent.Chrome."); } - if (fingerprinting_protection_filter::features:: - IsFingerprintingProtectionEnabledForIncognitoState( - profile->IsIncognitoProfile())) { - CreateFingerprintingProtectionWebContentsHelper( - web_contents, profile->GetPrefs(), - HostContentSettingsMapFactory::GetForProfile(profile), - TrackingProtectionSettingsFactory::GetForProfile(profile), - profile->IsIncognitoProfile()); - } - - if (fingerprinting_protection_interventions::features:: - ShouldBlockCanvasReadbackForIncognitoState( - profile->IsIncognitoProfile()) || - fingerprinting_protection_interventions::features:: - IsCanvasInterventionsEnabledForIncognitoState( - profile->IsIncognitoProfile())) { - fingerprinting_protection_interventions:: - CanvasInterventionsWebContentsHelper::CreateForWebContents( - web_contents, - TrackingProtectionSettingsFactory::GetForProfile(profile), - profile->IsIncognitoProfile()); - } - - // Only create the IpProtectionStatus if the User Bypass feature is enabled. - if (net::features::kIpPrivacyEnableUserBypass.Get()) { - ip_protection::IpProtectionStatus::CreateForWebContents(web_contents); - } + // Create the HttpAuthCacheStatus to start observing resource load + // completions. + HttpAuthCacheStatus::HttpAuthCacheStatus::CreateForWebContents(web_contents); #endif // BUILDFLAG(IS_ANDROID) if (breadcrumbs::IsEnabled(g_browser_process->local_state())) { BreadcrumbManagerTabHelper::CreateForWebContents(web_contents); @@ -419,6 +388,37 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) { #endif ChromeSecurityStateTabHelper::CreateForWebContents(web_contents); ChromeTranslateClient::CreateForWebContents(web_contents); +#if BUILDFLAG(IS_ANDROID) + // Register LanguagePersistedTabDataAndroid for non-incognito tabs to + // persist language details. + if (!profile->IsOffTheRecord() && + content_capture::features::ShouldSendMetadataForDataShare()) { + if (auto* tab = TabAndroid::FromWebContents(web_contents); tab) { + LanguagePersistedTabDataAndroid::From( + tab, + base::BindOnce( + [](base::WeakPtr web_contents, + PersistedTabDataAndroid* persisted_tab_data) { + if (!web_contents) { + return; + } + ChromeTranslateClient* chrome_translate_client = + ChromeTranslateClient::FromWebContents(web_contents.get()); + + if (!chrome_translate_client) { + return; + } + + auto* language_persisted_tab_data_android = + static_cast( + persisted_tab_data); + language_persisted_tab_data_android->RegisterTranslateDriver( + chrome_translate_client->translate_driver()); + }, + web_contents->GetWeakPtr())); + } + } +#endif // BUILDFLAG(IS_ANDROID) client_hints::ClientHintsWebContentsObserver::CreateForWebContents( web_contents); commerce::CommerceTabHelper::CreateForWebContents( @@ -599,7 +599,6 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) { tasks::TaskTabHelper::CreateForWebContents(web_contents); tpcd::metadata::TpcdMetadataDevtoolsObserver::CreateForWebContents( web_contents); - tpcd::trial::ValidityService::MaybeCreateForWebContents(web_contents); #if !BUILDFLAG(IS_ANDROID) TabCaptureContentsBorderHelper::CreateForWebContents(web_contents); #endif // BUILDFLAG(IS_ANDROID) 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 854d058a..8be82055 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 @@ -472,6 +472,8 @@ namespace autofillPrivate { void(AttributeType[] attributeTypes); callback GetAutofillAiOptInStatusCallback = void(boolean optedIn); callback SetAutofillAiOptInStatusCallback = void(boolean success); + callback GetWalletablePassDetectionOptInStatusCallback = void(boolean optedIn); + callback SetWalletablePassDetectionOptInStatusCallback = void(); callback GetPayOverTimeIssuerListCallback = void(PayOverTimeIssuerEntry[] entries); interface Functions { @@ -624,6 +626,15 @@ namespace autofillPrivate { static void setAutofillAiOptInStatus( boolean optedIn, SetAutofillAiOptInStatusCallback callback); + + // Gets the walletable pass detection opt-in status for the current user. + static void getWalletablePassDetectionOptInStatus( + GetWalletablePassDetectionOptInStatusCallback callback); + + // Sets the walletable pass detection opt-in status for the current user. + static void setWalletablePassDetectionOptInStatus( + boolean optedIn, + SetWalletablePassDetectionOptInStatusCallback callback); }; interface Events { diff --git a/tools/under-control/src/chrome/common/extensions/api/downloads.idl b/tools/under-control/src/chrome/common/extensions/api/downloads.idl index 1e2adc5e..5b52c53e 100755 --- a/tools/under-control/src/chrome/common/extensions/api/downloads.idl +++ b/tools/under-control/src/chrome/common/extensions/api/downloads.idl @@ -101,35 +101,36 @@ namespace downloads { DOMString? body; }; - //
file
- //
The download's filename is suspicious.
- //
url
- //
The download's URL is known to be malicious.
- //
content
- //
The downloaded file is known to be malicious.
- //
uncommon
- //
The download's URL is not commonly downloaded and could be - // dangerous.
- //
host
- //
The download came from a host known to distribute malicious - // binaries and is likely dangerous.
- //
unwanted
- //
The download is potentially unwanted or unsafe. E.g. it could make - // changes to browser or computer settings.
- //
safe
- //
The download presents no known danger to the user's computer.
- //
accepted
- //
The user has accepted the dangerous download.
- //
enum DangerType { + // The download's filename is suspicious. file, + + // The download's URL is known to be malicious. url, + + // The downloaded file is known to be malicious. content, + + + // The download's URL is not commonly downloaded and could be dangerous. uncommon, + + // The download came from a host known to distribute malicious binaries and + // is likely dangerous. host, + + // The download is potentially unwanted or unsafe. E.g. it could make + // changes to browser or computer settings. unwanted, + + + // The download presents no known danger to the user's computer. safe, + + // The user has accepted the dangerous download. accepted, + + // Enterprise-related values. allowlistedByPolicy, asyncScanning, asyncLocalPasswordScanning, @@ -143,7 +144,12 @@ namespace downloads { promptForScanning, promptForLocalPasswordScanning, accountCompromise, - blockedScanFailed + blockedScanFailed, + + // For use by the Secure Enterprise Browser extension. When required, Chrome + // will block the download to disc and download the file directly to Google + // Drive. + forceSaveToGdrive }; //
in_progress
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 548f99c6..2aca36df 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 @@ -302,6 +302,7 @@ namespace enterprise.reportingPrivate { DOMString? maskType; DOMString? pattern; DetectorType? detectorType; + DOMString? maskText; }; // Information for a data leak prevention rule that was used to mask data. diff --git a/tools/under-control/src/chrome/common/extensions/api/login_state.idl b/tools/under-control/src/chrome/common/extensions/api/login_state.idl index 9999cd5f..9451766f 100755 --- a/tools/under-control/src/chrome/common/extensions/api/login_state.idl +++ b/tools/under-control/src/chrome/common/extensions/api/login_state.idl @@ -15,7 +15,7 @@ namespace loginState { USER_PROFILE, // Specifies that the extension is in the lock screen profile. - [nodoc] LOCK_PROFILE + LOCK_PROFILE }; enum SessionState { diff --git a/tools/under-control/src/chrome/common/extensions/api/side_panel.idl b/tools/under-control/src/chrome/common/extensions/api/side_panel.idl index 7d41beb7..00198796 100755 --- a/tools/under-control/src/chrome/common/extensions/api/side_panel.idl +++ b/tools/under-control/src/chrome/common/extensions/api/side_panel.idl @@ -183,6 +183,6 @@ namespace sidePanel { static void onOpened(PanelOpenedInfo info); // Fired when the extension's side panel is closed. - [nodoc] static void onClosed(PanelClosedInfo info); + static void onClosed(PanelClosedInfo info); }; }; 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 19e5e8d6..35dd0c2f 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 @@ -92,9 +92,6 @@ #include "components/error_page/common/error.h" #include "components/error_page/common/localized_error.h" #include "components/feed/feed_feature_list.h" -#include "components/fingerprinting_protection_filter/common/fingerprinting_protection_filter_features.h" -#include "components/fingerprinting_protection_filter/renderer/renderer_agent.h" -#include "components/fingerprinting_protection_filter/renderer/unverified_ruleset_dealer.h" #include "components/grit/components_scaled_resources.h" #include "components/guest_view/buildflags/buildflags.h" #include "components/heap_profiling/in_process/heap_profiler_controller.h" @@ -122,7 +119,6 @@ #include "components/subresource_filter/content/renderer/subresource_filter_agent.h" #include "components/subresource_filter/content/renderer/unverified_ruleset_dealer.h" #include "components/subresource_filter/core/common/common_features.h" -#include "components/subresource_filter/core/common/memory_mapped_ruleset.h" #include "components/variations/net/variations_http_headers.h" #include "components/variations/variations_switches.h" #include "components/version_info/version_info.h" @@ -441,13 +437,6 @@ void ChromeContentRendererClient::RenderThreadStarted() { subresource_filter_ruleset_dealer_ = std::make_unique(); - if (fingerprinting_protection_filter::features:: - IsFingerprintingProtectionFeatureEnabled()) { - fingerprinting_protection_ruleset_dealer_ = std::make_unique< - fingerprinting_protection_filter::UnverifiedRulesetDealer>(); - thread->AddObserver(fingerprinting_protection_ruleset_dealer_.get()); - } - #if BUILDFLAG(SAFE_BROWSING_AVAILABLE) phishing_model_setter_ = std::make_unique(); @@ -723,26 +712,6 @@ void ChromeContentRendererClient::RenderFrameCreated( subresource_filter_agent->Initialize(); } - if (!render_frame->IsInFencedFrameTree()) { - content_based_fingerprinting_protection_enabled_for_metrics_ = - render_frame->GetBlinkPreferences() - .content_based_fingerprinting_protection_enabled; - } - 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(render_frame); - fingerprinting_protection_renderer_agent->Initialize(); - } - #if !BUILDFLAG(IS_ANDROID) if (process_state::IsInstantProcess() && render_frame->IsMainFrame()) { new SearchBox(render_frame); @@ -947,16 +916,6 @@ bool ChromeContentRendererClient::OverrideCreatePlugin( return true; } -#if BUILDFLAG(ENABLE_PLUGINS) -WebPlugin* ChromeContentRendererClient::CreatePluginReplacement( - content::RenderFrame* render_frame, - const base::FilePath& plugin_path) { - auto* placeholder = NonLoadablePluginPlaceholder::CreateErrorPlugin( - render_frame, plugin_path); - return placeholder->plugin(); -} -#endif // BUILDFLAG(ENABLE_PLUGINS) - bool ChromeContentRendererClient::DeferMediaLoad( content::RenderFrame* render_frame, bool has_played_media_before, @@ -1483,8 +1442,12 @@ void ChromeContentRendererClient:: #endif if (base::FeatureList::IsEnabled( - autofill::features::kAutofillSharedAutofill)) { - blink::WebRuntimeFeatures::EnableSharedAutofill(true); + autofill::features::kAutofillPolicyControlledFeatureAutofill)) { + blink::WebRuntimeFeatures::EnableAutofill(true); + } + if (base::FeatureList::IsEnabled( + autofill::features::kAutofillPolicyControlledFeatureManualText)) { + blink::WebRuntimeFeatures::EnableManualText(true); } if (base::FeatureList::IsEnabled(subresource_filter::kAdTagging)) @@ -1678,27 +1641,6 @@ void ChromeContentRendererClient::AppendContentSecurityPolicy( #endif } -bool ChromeContentRendererClient:: - IsContentBasedFingerprintingProtectionEnabled() { - return content_based_fingerprinting_protection_enabled_; -} - -bool ChromeContentRendererClient:: - IsContentBasedFingerprintingProtectionEnabledForMetrics() { - return content_based_fingerprinting_protection_enabled_for_metrics_; -} - -scoped_refptr -ChromeContentRendererClient::GetFingerprintingProtectionRuleset() { - if (fingerprinting_protection_ruleset_dealer_) { - // Returns nullptr if no ruleset file is available. - fingerprinting_protection_ruleset_ = - fingerprinting_protection_ruleset_dealer_->GetRuleset(); - return fingerprinting_protection_ruleset_; - } - return nullptr; -} - 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 5ce43f00..939136c3 100755 --- a/tools/under-control/src/components/policy/resources/templates/policies.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policies.yaml @@ -1403,6 +1403,20 @@ policies: 1402: GeminiActOnWebSettings 1403: LocalAuthFactorsComplexity 1404: ProxyOverrideRules + 1405: LocalAuthFactors + 1406: EnableProxyOverrideRulesForAllUsers + 1407: DefaultIdleDetectionSetting + 1408: IdleDetectionAllowedForUrls + 1409: IdleDetectionBlockedForUrls + 1410: PreciseGeolocationAllowedForUrls + 1411: GeolocationBlockedForUrls + 1412: PdfXfaFormsEnabled + 1413: CameraSaveLocation + 1414: DeviceLoginScreenPreferSlowKexAlgorithms + 1415: DeviceLoginScreenPreferSlowCiphers + 1416: SearchContentSharingSettings + 1417: StaticStorageQuotaEnabled + atomic_groups: 1: Homepage 2: RemoteAccess @@ -1465,3 +1479,4 @@ atomic_groups: 59: DeviceAttributesSettings 60: ProtectedContent 61: LegacyCookieScopeSettings + 62: GeolocationSettings diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Attestation/DeviceWebBasedAttestationAllowedUrls.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Attestation/DeviceWebBasedAttestationAllowedUrls.yaml index c15a6e15..a3ae8c80 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Attestation/DeviceWebBasedAttestationAllowedUrls.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Attestation/DeviceWebBasedAttestationAllowedUrls.yaml @@ -9,7 +9,7 @@ desc: |- URLs must have HTTPS scheme, e.g. "https://example.com". - For detailed information on valid url patterns, please see https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. + For detailed information on valid url patterns, please see https://chromeenterprise.google/policies/url-patterns/. device_only: true example_value: - https://www.example.com/ diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/CloudReporting/UserSecurityAuthenticatedReporting.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/CloudReporting/UserSecurityAuthenticatedReporting.yaml index 164b8b23..d5c86fba 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/CloudReporting/UserSecurityAuthenticatedReporting.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/CloudReporting/UserSecurityAuthenticatedReporting.yaml @@ -15,9 +15,8 @@ features: per_profile: true cloud_only: true user_only: true -future_on: -- android supported_on: +- android:144- - chrome.*:137- owners: - seblalancette@chromium.org diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/CloudReporting/UserSecuritySignalsReporting.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/CloudReporting/UserSecuritySignalsReporting.yaml index e1cc74cf..ab43c1d9 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/CloudReporting/UserSecuritySignalsReporting.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/CloudReporting/UserSecuritySignalsReporting.yaml @@ -15,9 +15,8 @@ features: per_profile: true cloud_only: true user_only: true -future_on: -- android supported_on: +- android:144- - chrome.*:137- owners: - seblalancette@chromium.org diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/AutomaticFullscreenAllowedForUrls.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/AutomaticFullscreenAllowedForUrls.yaml index ed2c4062..624471a5 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/AutomaticFullscreenAllowedForUrls.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/AutomaticFullscreenAllowedForUrls.yaml @@ -11,7 +11,7 @@ desc: |- call the API without a prior user gesture. For detailed information on valid url patterns, please see - https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. + https://chromeenterprise.google/policies/url-patterns. Wildcards, *, are allowed. Origins matching both blocked and allowed policy patterns will be blocked. diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/AutomaticFullscreenBlockedForUrls.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/AutomaticFullscreenBlockedForUrls.yaml index d242ca22..d0ca728b 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/AutomaticFullscreenBlockedForUrls.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/AutomaticFullscreenBlockedForUrls.yaml @@ -11,7 +11,7 @@ desc: |- from calling the API without a prior user gesture. For detailed information on valid url patterns, please see - https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. + https://chromeenterprise.google/policies/url-patterns. Wildcards, *, are allowed. Origins matching both blocked and allowed policy patterns will be blocked. diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/ClipboardAllowedForUrls.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/ClipboardAllowedForUrls.yaml index 2d388ed9..ab8ad17b 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/ClipboardAllowedForUrls.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/ClipboardAllowedForUrls.yaml @@ -5,7 +5,7 @@ desc: |- Leaving the policy unset means DefaultClipboardSetting applies for all sites, if it's set. If not, the user's personal setting applies. - For detailed information on valid url patterns, please see https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. Wildcards, *, are allowed. + For detailed information on valid url patterns, please see https://chromeenterprise.google/policies/url-patterns. Wildcards, *, are allowed. example_value: - https://www.example.com - '[*.]example.edu' diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/ClipboardBlockedForUrls.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/ClipboardBlockedForUrls.yaml index b256473c..6ff9e5c2 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/ClipboardBlockedForUrls.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/ClipboardBlockedForUrls.yaml @@ -4,7 +4,7 @@ desc: |- Leaving the policy unset means DefaultClipboardSetting applies for all sites, if it's set. If not, the user's personal setting applies. - For detailed information on valid url patterns, please see https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. Wildcards, *, are allowed. + For detailed information on valid url patterns, please see https://chromeenterprise.google/policies/url-patterns. Wildcards, *, are allowed. example_value: - https://www.example.com - '[*.]example.edu' diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/ControlledFrameAllowedForUrls.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/ControlledFrameAllowedForUrls.yaml index 517fcea3..16b76500 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/ControlledFrameAllowedForUrls.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/ControlledFrameAllowedForUrls.yaml @@ -10,7 +10,7 @@ desc: |- URL patterns must not conflict with ControlledFrameBlockedForUrls. Neither policy takes precedence if a URL matches with both. - For detailed information on valid url patterns, please see https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. * is not an accepted value for this policy. + For detailed information on valid url patterns, please see https://chromeenterprise.google/policies/url-patterns. * is not an accepted value for this policy. example_value: - isolated-app://aerugqztij5biqquuk3mfwpsaibuegaqcitgfchwuosuofdjabzqaaic features: diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/ControlledFrameBlockedForUrls.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/ControlledFrameBlockedForUrls.yaml index 80244a05..e77ff653 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/ControlledFrameBlockedForUrls.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/ControlledFrameBlockedForUrls.yaml @@ -10,7 +10,7 @@ desc: |- URL patterns must not conflict with ControlledFrameAllowedForUrls. Neither policy takes precedence if a URL matches with both. - For detailed information on valid url patterns, please see https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. * is not an accepted value for this policy. + For detailed information on valid url patterns, please see https://chromeenterprise.google/policies/url-patterns. * is not an accepted value for this policy. example_value: - isolated-app://aerugqztij5biqquuk3mfwpsaibuegaqcitgfchwuosuofdjabzqaaic features: diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/CookiesAllowedForUrls.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/CookiesAllowedForUrls.yaml index 7f567d8e..b2032c0a 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/CookiesAllowedForUrls.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/CookiesAllowedForUrls.yaml @@ -12,7 +12,7 @@ desc: |- See also policies CookiesBlockedForUrls and CookiesSessionOnlyForUrls. Note that there must be no conflicting URL patterns between these three policies - it is unspecified which policy takes precedence. - For detailed information on valid url patterns, please see https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. * is not an accepted value for this policy. + For detailed information on valid url patterns, please see https://chromeenterprise.google/policies/url-patterns. * is not an accepted value for this policy. example_value: - https://www.example.com - '[*.]example.edu' diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/CookiesBlockedForUrls.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/CookiesBlockedForUrls.yaml index 0423464b..20e5a251 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/CookiesBlockedForUrls.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/CookiesBlockedForUrls.yaml @@ -6,7 +6,7 @@ desc: |- While no specific policy takes precedence, see CookiesAllowedForUrls and CookiesSessionOnlyForUrls. URL patterns among these 3 policies must not conflict. - For detailed information on valid url patterns, please see https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. * is not an accepted value for this policy. + For detailed information on valid url patterns, please see https://chromeenterprise.google/policies/url-patterns. * is not an accepted value for this policy. example_value: - https://www.example.com - '[*.]example.edu' diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/CookiesSessionOnlyForUrls.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/CookiesSessionOnlyForUrls.yaml index 3ccedd24..e6205fdd 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/CookiesSessionOnlyForUrls.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/CookiesSessionOnlyForUrls.yaml @@ -6,7 +6,7 @@ desc: |- While no specific policy takes precedence, see CookiesBlockedForUrls and CookiesAllowedForUrls. URL patterns among these 3 policies must not conflict. - For detailed information on valid url patterns, please see https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. * is not an accepted value for this policy. + For detailed information on valid url patterns, please see https://chromeenterprise.google/policies/url-patterns. * is not an accepted value for this policy. example_value: - https://www.example.com - '[*.]example.edu' diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/DefaultIdleDetectionSetting.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/DefaultIdleDetectionSetting.yaml new file mode 100755 index 00000000..b92bdc20 --- /dev/null +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/DefaultIdleDetectionSetting.yaml @@ -0,0 +1,40 @@ +caption: Default idle detection setting +desc: |- + Allows you to set whether websites are allowed to use the Idle Detection API. + + When this policy is set to 1 - AllowIdleDetection, websites can use the API without asking the user for permission. + + When this policy is set to 2 - BlockIdleDetection, websites can't use the API, regardless of the user's permission. + + When this policy is set to 3 - AskIdleDetection or not set, websites can't use the API without the user's permission. +example_value: 1 +features: + dynamic_refresh: true + per_profile: true +items: +- caption: Allow sites to detect idle state without asking the user + name: AllowIdleDetection + value: 1 +- caption: Do not allow any site to detect the user's idle state + name: BlockIdleDetection + value: 2 +- caption: Ask every time a site wants to detect the user's idle state + name: AskIdleDetection + value: 3 +label: Idle detection +owners: +- pastarmovj@chromium.org +- zmin@chromium.org +future_on: +- chrome.* +- chrome_os +- android +tags: +- website-sharing +type: int-enum +schema: + enum: + - 1 + - 2 + - 3 + type: integer diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/DeviceAttributesAllowedForOrigins.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/DeviceAttributesAllowedForOrigins.yaml index c56cd267..e7441602 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/DeviceAttributesAllowedForOrigins.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/DeviceAttributesAllowedForOrigins.yaml @@ -4,7 +4,7 @@ desc: |- Origins must correspond to web applications that are force-installed Isolated Web Apps (using IsolatedWebAppInstallForceList policy) (since version 125), set up as a kiosk app, or web applications that are force-installed (using WebAppInstallForceList) (before version 140). For Device Attributes API specification please see https://wicg.github.io/WebApiDevice/device_attributes. - For detailed information on valid url patterns (since version 127), please see https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. * is not an accepted value for this policy. + For detailed information on valid url patterns (since version 127), please see https://chromeenterprise.google/policies/url-patterns. * is not an accepted value for this policy. example_value: - https://www.google.com - '[*.]example.com' diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/DeviceAttributesBlockedForOrigins.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/DeviceAttributesBlockedForOrigins.yaml index 40fc0b61..458ff360 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/DeviceAttributesBlockedForOrigins.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/DeviceAttributesBlockedForOrigins.yaml @@ -4,7 +4,7 @@ desc: |- Origins must correspond to web applications that are force-installed Isolated Web Apps (using IsolatedWebAppInstallForceList policy) or set up as a kiosk app. For Device Attributes API specification please see https://wicg.github.io/WebApiDevice/device_attributes. - For detailed information on valid url patterns, please see https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. * is not an accepted value for this policy. + For detailed information on valid url patterns, please see https://chromeenterprise.google/policies/url-patterns. * is not an accepted value for this policy. example_value: - https://www.google.com - '[*.]example.com' diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/DirectSocketsAllowedForUrls.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/DirectSocketsAllowedForUrls.yaml index 1de2ed73..1b6cd6ca 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/DirectSocketsAllowedForUrls.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/DirectSocketsAllowedForUrls.yaml @@ -10,7 +10,7 @@ desc: |- URL patterns must not conflict with DirectSocketsBlockedForUrls. Neither policy takes precedence if a URL matches with both. - For detailed information on valid url patterns, please see https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. * is not an accepted value for this policy. + For detailed information on valid url patterns, please see https://chromeenterprise.google/policies/url-patterns. * is not an accepted value for this policy. example_value: - isolated-app://aerugqztij5biqquuk3mfwpsaibuegaqcitgfchwuosuofdjabzqaaic features: diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/DirectSocketsBlockedForUrls.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/DirectSocketsBlockedForUrls.yaml index 36359341..6099b1b1 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/DirectSocketsBlockedForUrls.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/DirectSocketsBlockedForUrls.yaml @@ -10,7 +10,7 @@ desc: |- URL patterns must not conflict with DirectSocketsAllowedForUrls. Neither policy takes precedence if a URL matches with both. - For detailed information on valid url patterns, please see https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. * is not an accepted value for this policy. + For detailed information on valid url patterns, please see https://chromeenterprise.google/policies/url-patterns. * is not an accepted value for this policy. example_value: - isolated-app://aerugqztij5biqquuk3mfwpsaibuegaqcitgfchwuosuofdjabzqaaic features: diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/DirectSocketsPrivateNetworkAccessAllowedForUrls.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/DirectSocketsPrivateNetworkAccessAllowedForUrls.yaml index 172176ef..e0949ba4 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/DirectSocketsPrivateNetworkAccessAllowedForUrls.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/DirectSocketsPrivateNetworkAccessAllowedForUrls.yaml @@ -12,7 +12,7 @@ desc: |- URL patterns must not conflict with DirectSocketsPrivateNetworkAccessBlockedForUrls. Neither policy takes precedence if a URL matches with both. - For detailed information on valid url patterns, please see https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. * is not an accepted value for this policy. + For detailed information on valid url patterns, please see https://chromeenterprise.google/policies/url-patterns. * is not an accepted value for this policy. Note that this policy only applies if the origin is allowed to use the Direct Sockets API. Please consult DefaultDirectSocketsSetting, DirectSocketsAllowedForUrls and DirectSocketsBlockedForUrls for more details. diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/DirectSocketsPrivateNetworkAccessBlockedForUrls.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/DirectSocketsPrivateNetworkAccessBlockedForUrls.yaml index 734748b6..3a189d61 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/DirectSocketsPrivateNetworkAccessBlockedForUrls.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/DirectSocketsPrivateNetworkAccessBlockedForUrls.yaml @@ -12,7 +12,7 @@ desc: |- URL patterns must not conflict with DirectSocketsPrivateNetworkAccessAllowedForUrls. Neither policy takes precedence if a URL matches with both. - For detailed information on valid url patterns, please see https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. * is not an accepted value for this policy. + For detailed information on valid url patterns, please see https://chromeenterprise.google/policies/url-patterns. * is not an accepted value for this policy. Note that this policy only applies if the origin is allowed to use the Direct Sockets API. Please consult DefaultDirectSocketsSetting, DirectSocketsAllowedForUrls and DirectSocketsBlockedForUrls for more details. diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/FileHandlingAllowedForUrls.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/FileHandlingAllowedForUrls.yaml index 37fb3d33..e2538b7c 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/FileHandlingAllowedForUrls.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/FileHandlingAllowedForUrls.yaml @@ -9,7 +9,7 @@ desc: |- URL patterns must not conflict with FileHandlingBlockedForUrls. Neither policy takes precedence if a URL matches with both. - For detailed information on valid url patterns, please see https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. * is not an accepted value for this policy. + For detailed information on valid url patterns, please see https://chromeenterprise.google/policies/url-patterns. * is not an accepted value for this policy. example_value: - https://www.example.com - '[*.]example.edu' diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/FileHandlingBlockedForUrls.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/FileHandlingBlockedForUrls.yaml index 13a36220..28208120 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/FileHandlingBlockedForUrls.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/FileHandlingBlockedForUrls.yaml @@ -9,7 +9,7 @@ desc: |- URL patterns must not conflict with FileHandlingAllowedForUrls. Neither policy takes precedence if a URL matches with both. - For detailed information on valid url patterns, please see https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. * is not an accepted value for this policy. + For detailed information on valid url patterns, please see https://chromeenterprise.google/policies/url-patterns. * is not an accepted value for this policy. example_value: - https://www.example.com - '[*.]example.edu' diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/FileSystemReadAskForUrls.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/FileSystemReadAskForUrls.yaml index 544d8c6e..21202dff 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/FileSystemReadAskForUrls.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/FileSystemReadAskForUrls.yaml @@ -6,7 +6,7 @@ desc: |- URL patterns must not conflict with FileSystemReadBlockedForUrls. Neither policy takes precedence if a URL matches with both. - For detailed information on valid url patterns, please see https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. * is not an accepted value for this policy. + For detailed information on valid url patterns, please see https://chromeenterprise.google/policies/url-patterns. * is not an accepted value for this policy. example_value: - https://www.example.com - '[*.]example.edu' diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/FileSystemReadBlockedForUrls.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/FileSystemReadBlockedForUrls.yaml index bda790af..bc1e2895 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/FileSystemReadBlockedForUrls.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/FileSystemReadBlockedForUrls.yaml @@ -6,7 +6,7 @@ desc: |- URL patterns can't conflict with FileSystemReadAskForUrls. Neither policy takes precedence if a URL matches with both. - For detailed information on valid url patterns, please see https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. * is not an accepted value for this policy. + For detailed information on valid url patterns, please see https://chromeenterprise.google/policies/url-patterns. * is not an accepted value for this policy. example_value: - https://www.example.com - '[*.]example.edu' diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/FileSystemWriteAskForUrls.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/FileSystemWriteAskForUrls.yaml index 3dd13746..a2c995f4 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/FileSystemWriteAskForUrls.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/FileSystemWriteAskForUrls.yaml @@ -6,7 +6,7 @@ desc: |- URL patterns must not conflict with FileSystemWriteBlockedForUrls. Neither policy takes precedence if a URL matches with both. - For detailed information on valid url patterns, please see https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. * is not an accepted value for this policy. + For detailed information on valid url patterns, please see https://chromeenterprise.google/policies/url-patterns. * is not an accepted value for this policy. example_value: - https://www.example.com - '[*.]example.edu' diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/FileSystemWriteBlockedForUrls.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/FileSystemWriteBlockedForUrls.yaml index 5e0dc4c9..84e0124e 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/FileSystemWriteBlockedForUrls.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/FileSystemWriteBlockedForUrls.yaml @@ -6,7 +6,7 @@ desc: |- URL patterns can't conflict with FileSystemWriteAskForUrls. Neither policy takes precedence if a URL matches with both. - For detailed information on valid url patterns, please see https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. * is not an accepted value for this policy. + For detailed information on valid url patterns, please see https://chromeenterprise.google/policies/url-patterns. * is not an accepted value for this policy. example_value: - https://www.example.com - '[*.]example.edu' diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/GeolocationBlockedForUrls.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/GeolocationBlockedForUrls.yaml new file mode 100755 index 00000000..ed2be818 --- /dev/null +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/GeolocationBlockedForUrls.yaml @@ -0,0 +1,28 @@ +caption: Block geolocation on these sites +desc: |- + Setting the policy lets you set a list of URL patterns that specify sites that are not allowed to access the user's geolocation, and are also prevented from requesting user permission to do so. + + Leaving the policy unset means DefaultGeolocationSetting applies for all sites, if it's set. If not, the user's personal setting applies. + + For detailed information on valid url patterns, please see https://chromeenterprise.google/policies/url-patterns. Wildcards, *, are allowed. +example_value: +- https://www.example.com +- '[*.]example.edu' +features: + dynamic_refresh: true + per_profile: true +future_on: +- fuchsia +owners: +- engedy@chromium.org +- file://components/permissions/PERMISSIONS_OWNERS +schema: + items: + type: string + type: array +supported_on: +- chrome.*:144- +- chrome_os:144- +- android:144- +tags: [] +type: list diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/IdleDetectionAllowedForUrls.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/IdleDetectionAllowedForUrls.yaml new file mode 100755 index 00000000..8fec768d --- /dev/null +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/IdleDetectionAllowedForUrls.yaml @@ -0,0 +1,28 @@ +caption: Allow idle detection on these sites +desc: |- + Allows you to set a list of URL patterns that specify the sites that are allowed to use the Idle Detection API witout asking the user. Blocklist entries have higher priority than allowlist entries, which in turn have higher priority than the configured default value. + + For detailed information on valid site url patterns, please see https://chromeenterprise.google/policies/url-patterns. Wildcards, *, are allowed. This policy only matches based on origin, so any path in the URL pattern is ignored. + + If this policy is not set, the global default value will be used for all sites, which is configured by the DefaultIdleDetectionSetting (Default idle detection setting) policy, if set, or by the user's personal configuration otherwise. +example_value: +- https://www.example.com +- '[*.]example.edu' +features: + dynamic_refresh: true + per_profile: true +label: Allowed sites for idle detection +owners: +- pastarmovj@chromium.org +- zmin@chromium.org +schema: + type: array + items: + type: string +future_on: +- chrome.* +- chrome_os +- android +tags: +- website-sharing +type: list diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/IdleDetectionBlockedForUrls.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/IdleDetectionBlockedForUrls.yaml new file mode 100755 index 00000000..24d6e928 --- /dev/null +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/IdleDetectionBlockedForUrls.yaml @@ -0,0 +1,28 @@ +caption: Block idle detection on these sites +desc: |- + Allows you to set a list of URL patterns that specify the sites that are not allowed to use the Idle Detection API. + + For detailed information on valid site url patterns, please see https://chromeenterprise.google/policies/url-patterns. Wildcards, *, are allowed. This policy only matches based on origin, so any path in the URL pattern is ignored. + + If this policy is not set, the global default value will be used for all sites, which is configured by the DefaultIdleDetectionSetting (Default idle detection setting) policy, if set, or by the user's personal configuration otherwise. +example_value: +- https://www.example.com +- '[*.]example.edu' +features: + dynamic_refresh: true + per_profile: true +label: Blocked sites for idle detection +owners: +- pastarmovj@chromium.org +- anin@chromium.org +schema: + type: array + items: + type: string +future_on: +- chrome.* +- chrome_os +- android +tags: +- website-sharing +type: list diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/ImagesAllowedForUrls.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/ImagesAllowedForUrls.yaml index 5068bfe3..bc91ec1f 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/ImagesAllowedForUrls.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/ImagesAllowedForUrls.yaml @@ -4,7 +4,7 @@ desc: |- Leaving the policy unset means DefaultImagesSetting applies for all sites, if it's set. If not, the user's personal setting applies. - For detailed information on valid url patterns, please see https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. Wildcards, *, are allowed. + For detailed information on valid url patterns, please see https://chromeenterprise.google/policies/url-patterns. Wildcards, *, are allowed. Note that previously this policy was erroneously enabled on Android, but this functionality has never been fully supported on Android. example_value: diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/ImagesBlockedForUrls.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/ImagesBlockedForUrls.yaml index e81c0113..d79baa9a 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/ImagesBlockedForUrls.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/ImagesBlockedForUrls.yaml @@ -4,7 +4,7 @@ desc: |- Leaving the policy unset means DefaultImagesSetting applies for all sites, if it's set. If not, the user's personal setting applies. - For detailed information on valid url patterns, please see https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. Wildcards, *, are allowed. + For detailed information on valid url patterns, please see https://chromeenterprise.google/policies/url-patterns. Wildcards, *, are allowed. Note that previously this policy was erroneously enabled on Android, but this functionality has never been fully supported on Android. example_value: diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/InsecureContentAllowedForUrls.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/InsecureContentAllowedForUrls.yaml index 9dde8142..aecb29e6 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/InsecureContentAllowedForUrls.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/InsecureContentAllowedForUrls.yaml @@ -4,7 +4,7 @@ desc: |- If this policy is left not set blockable mixed content will be blocked and optionally blockable mixed content will be upgraded, and users will be allowed to set exceptions to allow it for specific sites. - For detailed information on valid url patterns, please see https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. Wildcards, *, are allowed. + For detailed information on valid url patterns, please see https://chromeenterprise.google/policies/url-patterns. Wildcards, *, are allowed. example_value: - https://www.example.com - '[*.]example.edu' diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/InsecureContentBlockedForUrls.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/InsecureContentBlockedForUrls.yaml index 7ba2b735..0bd129b1 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/InsecureContentBlockedForUrls.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/InsecureContentBlockedForUrls.yaml @@ -4,7 +4,7 @@ desc: |- If this policy is left not set blockable mixed content will be blocked and optionally blockable mixed content will be upgraded, but users will be allowed to set exceptions to allow it for specific sites. - For detailed information on valid url patterns, please see https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. Wildcards, *, are allowed. + For detailed information on valid url patterns, please see https://chromeenterprise.google/policies/url-patterns. Wildcards, *, are allowed. example_value: - https://www.example.com - '[*.]example.edu' diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/JavaScriptAllowedForUrls.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/JavaScriptAllowedForUrls.yaml index d6989325..3604071f 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/JavaScriptAllowedForUrls.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/JavaScriptAllowedForUrls.yaml @@ -4,7 +4,7 @@ desc: |- Leaving the policy unset means DefaultJavaScriptSetting applies for all sites, if it's set. If not, the user's personal setting applies. - For detailed information on valid url patterns, please see https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. Wildcards, *, are allowed. + For detailed information on valid url patterns, please see https://chromeenterprise.google/policies/url-patterns. Wildcards, *, are allowed. example_value: - https://www.example.com - '[*.]example.edu' diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/JavaScriptBlockedForUrls.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/JavaScriptBlockedForUrls.yaml index ef5e0c0d..f94bd643 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/JavaScriptBlockedForUrls.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/JavaScriptBlockedForUrls.yaml @@ -4,7 +4,7 @@ desc: |- Leaving the policy unset means DefaultJavaScriptSetting applies for all sites, if it's set. If not, the user's personal setting applies. - For detailed information on valid url patterns, please see https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. Wildcards, *, are allowed. + For detailed information on valid url patterns, please see https://chromeenterprise.google/policies/url-patterns. Wildcards, *, are allowed. Note that this policy blocks JavaScript based on whether the origin of the top-level document (usually the page URL that is also displayed in the address bar) matches any of the patterns. Therefore this policy is not appropriate for mitigating web supply-chain attacks. For example, supplying the pattern "https://[*.]foo.com/" will not prevent a page hosted on, say, https://example.com from running a script loaded from https://www.foo.com/example.js. Furthermore, supplying the pattern "https://example.com/" will not prevent a document from https://example.com from running scripts if it is not the top-level document, but embedded as a sub-frame into a page hosted on another origin, say, https://www.bar.com. example_value: diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/JavaScriptJitAllowedForSites.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/JavaScriptJitAllowedForSites.yaml index 725f0f0e..f5fda74e 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/JavaScriptJitAllowedForSites.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/JavaScriptJitAllowedForSites.yaml @@ -2,7 +2,7 @@ caption: Allow JavaScript to use JIT on these sites desc: |- Allows you to set a list of site url patterns that specify sites which are allowed to run JavaScript with JIT (Just In Time) compiler enabled. - For detailed information on valid site url patterns, please see https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. Wildcards, *, are allowed. + For detailed information on valid site url patterns, please see https://chromeenterprise.google/policies/url-patterns. Wildcards, *, are allowed. JavaScript JIT policy exceptions will only be enforced at a site granularity (eTLD+1). A policy set for only subdomain.site.com will not correctly apply to site.com or subdomain.site.com since they both resolve to the same eTLD+1 (site.com) for which there is no policy. In this case, policy must be set on site.com to apply correctly for both site.com and subdomain.site.com. diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/JavaScriptJitBlockedForSites.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/JavaScriptJitBlockedForSites.yaml index 870967e4..9d46f33d 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/JavaScriptJitBlockedForSites.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/JavaScriptJitBlockedForSites.yaml @@ -4,7 +4,7 @@ desc: |- Disabling the JavaScript JIT will mean that $1Google Chrome may render web content more slowly, and may also disable parts of JavaScript including WebAssembly. Disabling the JavaScript JIT may allow $1Google Chrome to render web content in a more secure configuration. - For detailed information on valid url patterns, please see https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. Wildcards, *, are allowed. + For detailed information on valid url patterns, please see https://chromeenterprise.google/policies/url-patterns. Wildcards, *, are allowed. JavaScript JIT policy exceptions will only be enforced at a site granularity (eTLD+1). A policy set for only subdomain.site.com will not correctly apply to site.com or subdomain.site.com since they both resolve to the same eTLD+1 (site.com) for which there is no policy. In this case, policy must be set on site.com to apply correctly for both site.com and subdomain.site.com. diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/JavaScriptOptimizerAllowedForSites.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/JavaScriptOptimizerAllowedForSites.yaml index 7a2db8ed..b912fab0 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/JavaScriptOptimizerAllowedForSites.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/JavaScriptOptimizerAllowedForSites.yaml @@ -4,7 +4,7 @@ desc: |- advanced JavaScript optimizations are enabled. For detailed information on valid site url patterns, please see - https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. + https://chromeenterprise.google/policies/url-patterns. Wildcards, *, are allowed. JavaScript optimization policy exceptions will only be enforced at a site diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/JavaScriptOptimizerBlockedForSites.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/JavaScriptOptimizerBlockedForSites.yaml index 89358a94..9c4f8e25 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/JavaScriptOptimizerBlockedForSites.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/JavaScriptOptimizerBlockedForSites.yaml @@ -7,7 +7,7 @@ desc: |- $1Google Chrome may render web content more slowly. For detailed information on valid url patterns, please see - https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. + https://chromeenterprise.google/policies/url-patterns. Wildcards, *, are allowed. JavaScript optimization policy exceptions will only be enforced at a site diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/KeygenAllowedForUrls.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/KeygenAllowedForUrls.yaml index 23d2900a..321fd0db 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/KeygenAllowedForUrls.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/KeygenAllowedForUrls.yaml @@ -5,7 +5,7 @@ desc: |- If this policy is left not set the global default value will be used for all sites either from the 'DefaultKeygenSetting' policy if it is set, or the user's personal configuration otherwise. - For detailed information on valid url patterns, please see https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. * is not an accepted value for this policy. + For detailed information on valid url patterns, please see https://chromeenterprise.google/policies/url-patterns. * is not an accepted value for this policy. example_value: - https://www.example.com - '[*.]example.edu' diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/KeygenBlockedForUrls.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/KeygenBlockedForUrls.yaml index 7db49ab6..dd5d8d99 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/KeygenBlockedForUrls.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/KeygenBlockedForUrls.yaml @@ -5,7 +5,7 @@ desc: |- If this policy is left not set the global default value will be used for all sites either from the 'DefaultKeygenSetting' policy if it is set, or the user's personal configuration otherwise. - For detailed information on valid url patterns, please see https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. * is not an accepted value for this policy. + For detailed information on valid url patterns, please see https://chromeenterprise.google/policies/url-patterns. * is not an accepted value for this policy. example_value: - https://www.example.com - '[*.]example.edu' diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/LegacySameSiteCookieBehaviorEnabledForDomainList.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/LegacySameSiteCookieBehaviorEnabledForDomainList.yaml index 5bdfd961..972d90d4 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/LegacySameSiteCookieBehaviorEnabledForDomainList.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/LegacySameSiteCookieBehaviorEnabledForDomainList.yaml @@ -5,7 +5,7 @@ desc: |- For cookies on domains not covered by the patterns specified here, or for all cookies if this policy is not set, the global default value will be the user's personal configuration. - For detailed information on valid patterns, please see https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. + For detailed information on valid patterns, please see https://chromeenterprise.google/policies/url-patterns. Note that patterns you list here are treated as domains, not URLs, so you should not specify a scheme or port. example_value: diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/LocalFontsAllowedForUrls.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/LocalFontsAllowedForUrls.yaml index 7b686fd3..1cf222d7 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/LocalFontsAllowedForUrls.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/LocalFontsAllowedForUrls.yaml @@ -2,7 +2,7 @@ caption: Allow Local Fonts permission on these sites desc: |- Sets a list of site url patterns that specify sites which will automatically grant the local fonts permission. This will extend the ability of sites to see information about local fonts. - For detailed information on valid site url patterns, please see https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. Wildcards, *, are allowed. This policy only matches based on origin, so any path in the URL pattern is ignored. + For detailed information on valid site url patterns, please see https://chromeenterprise.google/policies/url-patterns. Wildcards, *, are allowed. This policy only matches based on origin, so any path in the URL pattern is ignored. If this policy is not set for a site then the policy from DefaultLocalFontsSetting applies to the site, if set, otherwise the permission will follow the browser's defaults and allow users to choose this permission per site. example_value: diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/LocalFontsBlockedForUrls.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/LocalFontsBlockedForUrls.yaml index 2f099033..a6a0b342 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/LocalFontsBlockedForUrls.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/LocalFontsBlockedForUrls.yaml @@ -2,7 +2,7 @@ caption: Block Local Fonts permission on these sites desc: |- Sets a list of site url patterns that specify sites which will automatically deny the local fonts permission. This will limit the ability of sites to see information about local fonts. - For detailed information on valid site url patterns, please see https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. Wildcards, *, are allowed. This policy only matches based on origin, so any path in the URL pattern is ignored. + For detailed information on valid site url patterns, please see https://chromeenterprise.google/policies/url-patterns. Wildcards, *, are allowed. This policy only matches based on origin, so any path in the URL pattern is ignored. If this policy is not set for a site then the policy from DefaultLocalFontsSetting applies to the site, if set, otherwise the permission will follow the browser's defaults and allow users to choose this permission per site. example_value: diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/NotificationsAllowedForUrls.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/NotificationsAllowedForUrls.yaml index b1bbf9e7..3ba87f12 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/NotificationsAllowedForUrls.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/NotificationsAllowedForUrls.yaml @@ -4,7 +4,7 @@ desc: |- Leaving the policy unset means DefaultNotificationsSetting applies for all sites, if it's set. If not, the user's personal setting applies. - For detailed information on valid url patterns, please see https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. Wildcards, *, are allowed. + For detailed information on valid url patterns, please see https://chromeenterprise.google/policies/url-patterns. Wildcards, *, are allowed. example_value: - https://www.example.com - '[*.]example.edu' diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/NotificationsBlockedForUrls.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/NotificationsBlockedForUrls.yaml index ece6b3c3..edd7b83d 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/NotificationsBlockedForUrls.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/NotificationsBlockedForUrls.yaml @@ -4,7 +4,7 @@ desc: |- Leaving the policy unset means DefaultNotificationsSetting applies for all sites, if it's set. If not, the user's personal setting applies. - For detailed information on valid url patterns, please see https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. Wildcards, *, are allowed. + For detailed information on valid url patterns, please see https://chromeenterprise.google/policies/url-patterns. Wildcards, *, are allowed. example_value: - https://www.example.com - '[*.]example.edu' diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/PluginsAllowedForUrls.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/PluginsAllowedForUrls.yaml index 27f6fc7e..9dc8541b 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/PluginsAllowedForUrls.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/PluginsAllowedForUrls.yaml @@ -5,7 +5,7 @@ desc: |- Leaving the policy unset means DefaultPluginsSetting applies for all sites, if it's set. If not, the user's personal setting applies. - For detailed information on valid url patterns, please see https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. However, starting in M85, patterns with '*' and '[*.]' wildcards in the host are no longer supported for this policy. + For detailed information on valid url patterns, please see https://chromeenterprise.google/policies/url-patterns. However, starting in M85, patterns with '*' and '[*.]' wildcards in the host are no longer supported for this policy. example_value: - https://www.example.com - http://example.edu:8080 diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/PluginsBlockedForUrls.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/PluginsBlockedForUrls.yaml index ea84b372..e02effe6 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/PluginsBlockedForUrls.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/PluginsBlockedForUrls.yaml @@ -5,7 +5,7 @@ desc: |- Leaving the policy unset means DefaultPluginsSetting applies for all sites, if it's set. If not, the user's personal setting applies. - For detailed information on valid url patterns, please see https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. However, starting in M85, patterns with '*' and '[*.]' wildcards in the host are no longer supported for this policy. + For detailed information on valid url patterns, please see https://chromeenterprise.google/policies/url-patterns. However, starting in M85, patterns with '*' and '[*.]' wildcards in the host are no longer supported for this policy. example_value: - https://www.example.com - http://example.edu:8080 diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/PopupsAllowedForUrls.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/PopupsAllowedForUrls.yaml index 448031a6..eaf178e6 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/PopupsAllowedForUrls.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/PopupsAllowedForUrls.yaml @@ -4,7 +4,7 @@ desc: |- Leaving the policy unset means DefaultPopupsSetting applies for all sites, if it's set. If not, the user's personal setting applies. - For detailed information on valid url patterns, please see https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. Wildcards, *, are allowed. + For detailed information on valid url patterns, please see https://chromeenterprise.google/policies/url-patterns. Wildcards, *, are allowed. example_value: - https://www.example.com - '[*.]example.edu' diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/PopupsBlockedForUrls.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/PopupsBlockedForUrls.yaml index 86e20ff0..0b410276 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/PopupsBlockedForUrls.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/PopupsBlockedForUrls.yaml @@ -4,7 +4,7 @@ desc: |- Leaving the policy unset means DefaultPopupsSetting applies for all sites, if it's set. If not, the user's personal setting applies. - For detailed information on valid url patterns, please see https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. Wildcards, *, are allowed. + For detailed information on valid url patterns, please see https://chromeenterprise.google/policies/url-patterns. Wildcards, *, are allowed. example_value: - https://www.example.com - '[*.]example.edu' diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/PreciseGeolocationAllowedForUrls.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/PreciseGeolocationAllowedForUrls.yaml new file mode 100755 index 00000000..c7ba5184 --- /dev/null +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/PreciseGeolocationAllowedForUrls.yaml @@ -0,0 +1,28 @@ +caption: Allow precise geolocation on these sites +desc: |- + Setting the policy lets you set a list of URL patterns that specify sites that are allowed to access the user's high accuracy geolocation without first having to request the user's permission to do so. + + Leaving the policy unset means DefaultGeolocationSetting applies for all sites, if it's set. If not, the user's personal setting applies. + + For detailed information on valid url patterns, please see https://chromeenterprise.google/policies/url-patterns. Wildcards, *, are allowed. +example_value: +- https://www.example.com +- '[*.]example.edu' +features: + dynamic_refresh: true + per_profile: true +future_on: +- fuchsia +owners: +- engedy@chromium.org +- file://components/permissions/PERMISSIONS_OWNERS +schema: + items: + type: string + type: array +supported_on: +- chrome.*:144- +- chrome_os:144- +- android:144- +tags: [] +type: list diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/SensorsAllowedForUrls.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/SensorsAllowedForUrls.yaml index 26cf1c71..b3d213fe 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/SensorsAllowedForUrls.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/SensorsAllowedForUrls.yaml @@ -6,7 +6,7 @@ desc: |- If the same URL pattern exists in both this policy and the SensorsBlockedForUrls policy, the latter is prioritized and access to motion or light sensors will be blocked. - For detailed information on valid url patterns, please see https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. Wildcards, *, are allowed. + For detailed information on valid url patterns, please see https://chromeenterprise.google/policies/url-patterns. Wildcards, *, are allowed. example_value: - https://www.example.com - '[*.]example.edu' diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/SensorsBlockedForUrls.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/SensorsBlockedForUrls.yaml index aaa0eb9a..18c1b780 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/SensorsBlockedForUrls.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/SensorsBlockedForUrls.yaml @@ -6,7 +6,7 @@ desc: |- If the same URL pattern exists in both this policy and the SensorsAllowedForUrls policy, this policy is prioritized and access to motion or light sensors will be blocked. - For detailed information on valid url patterns, please see https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. Wildcards, *, are allowed. + For detailed information on valid url patterns, please see https://chromeenterprise.google/policies/url-patterns. Wildcards, *, are allowed. example_value: - https://www.example.com - '[*.]example.edu' diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/SerialAskForUrls.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/SerialAskForUrls.yaml index 447b6f22..d4c1cffd 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/SerialAskForUrls.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/SerialAskForUrls.yaml @@ -8,7 +8,7 @@ desc: |- If URL patterns conflict with SerialBlockedForUrls they will be ignored. - For detailed information on valid url patterns, please see https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. * is not an accepted value for this policy. + For detailed information on valid url patterns, please see https://chromeenterprise.google/policies/url-patterns. * is not an accepted value for this policy. example_value: - https://www.example.com - '[*.]example.edu' diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/SerialBlockedForUrls.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/SerialBlockedForUrls.yaml index 72e2fcdb..634fd4ce 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/SerialBlockedForUrls.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/SerialBlockedForUrls.yaml @@ -8,7 +8,7 @@ desc: |- If URL patterns conflict with SerialAskForUrls this policy will take precedence. - For detailed information on valid url patterns, please see https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. * is not an accepted value for this policy. + For detailed information on valid url patterns, please see https://chromeenterprise.google/policies/url-patterns. * is not an accepted value for this policy. example_value: - https://www.example.com - '[*.]example.edu' 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 4a875292..02b9811e 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 @@ -4,7 +4,7 @@ desc: |- If this policy is left unset or if a top-level origin doesn't match one of the URL patterns, DefaultThirdPartyStoragePartitioningSetting will apply. - 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 valid patterns, please see https://chromeenterprise.google/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. diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/WebHidAskForUrls.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/WebHidAskForUrls.yaml index 976942d0..5455ee64 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/WebHidAskForUrls.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/WebHidAskForUrls.yaml @@ -14,7 +14,7 @@ desc: |- URL patterns must not conflict with WebHidBlockedForUrls. Neither policy takes precedence if a URL matches with both. - For detailed information on valid url patterns, please see https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. * is not an accepted value for this policy. + For detailed information on valid url patterns, please see https://chromeenterprise.google/policies/url-patterns. * is not an accepted value for this policy. example_value: - https://google.com - https://chromium.org diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/WebHidBlockedForUrls.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/WebHidBlockedForUrls.yaml index 946d2f16..e018bf36 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/WebHidBlockedForUrls.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/WebHidBlockedForUrls.yaml @@ -14,7 +14,7 @@ desc: |- URL patterns can't conflict with WebHidAskForUrls. Neither policy takes precedence if a URL matches with both. - For detailed information on valid url patterns, please see https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. * is not an accepted value for this policy. + For detailed information on valid url patterns, please see https://chromeenterprise.google/policies/url-patterns. * is not an accepted value for this policy. example_value: - https://google.com - https://chromium.org diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/WebPrintingAllowedForUrls.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/WebPrintingAllowedForUrls.yaml index 48f5482e..d2c321b8 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/WebPrintingAllowedForUrls.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/WebPrintingAllowedForUrls.yaml @@ -7,7 +7,7 @@ desc: |- URL patterns must not conflict with WebPrintingBlockedForUrls. Neither policy takes precedence if a URL matches with both. - For detailed information on valid url patterns, please see https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. * is not an accepted value for this policy. + For detailed information on valid url patterns, please see https://chromeenterprise.google/policies/url-patterns. * is not an accepted value for this policy. example_value: - isolated-app://aerugqztij5biqquuk3mfwpsaibuegaqcitgfchwuosuofdjabzqaaic features: diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/WebPrintingBlockedForUrls.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/WebPrintingBlockedForUrls.yaml index 7157db43..99052f89 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/WebPrintingBlockedForUrls.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/WebPrintingBlockedForUrls.yaml @@ -7,7 +7,7 @@ desc: |- URL patterns must not conflict with WebPrintingAllowedForUrls. Neither policy takes precedence if a URL matches with both. - For detailed information on valid url patterns, please see https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. * is not an accepted value for this policy. + For detailed information on valid url patterns, please see https://chromeenterprise.google/policies/url-patterns. * is not an accepted value for this policy. example_value: - isolated-app://aerugqztij5biqquuk3mfwpsaibuegaqcitgfchwuosuofdjabzqaaic features: diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/WebUsbAskForUrls.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/WebUsbAskForUrls.yaml index 81a433c0..150a8bd3 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/WebUsbAskForUrls.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/WebUsbAskForUrls.yaml @@ -6,7 +6,7 @@ desc: |- URL patterns must not conflict with WebUsbAskForUrls. Neither policy takes precedence if a URL matches with both. - For detailed information on valid url patterns, please see https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. * is not an accepted value for this policy. + For detailed information on valid url patterns, please see https://chromeenterprise.google/policies/url-patterns. * is not an accepted value for this policy. example_value: - https://www.example.com - '[*.]example.edu' diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/WebUsbBlockedForUrls.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/WebUsbBlockedForUrls.yaml index 3bc75582..e0ef4eda 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/WebUsbBlockedForUrls.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/WebUsbBlockedForUrls.yaml @@ -6,7 +6,7 @@ desc: |- URL patterns can't conflict with WebUsbAskForUrls. Neither policy takes precedence if a URL matches with both. - For detailed information on valid url patterns, please see https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. * is not an accepted value for this policy. + For detailed information on valid url patterns, please see https://chromeenterprise.google/policies/url-patterns. * is not an accepted value for this policy. example_value: - https://www.example.com - '[*.]example.edu' diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/WindowManagementAllowedForUrls.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/WindowManagementAllowedForUrls.yaml index e269a8ac..3a6a855c 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/WindowManagementAllowedForUrls.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/WindowManagementAllowedForUrls.yaml @@ -2,7 +2,7 @@ caption: Allow Window Management permission on these sites desc: |- Allows you to set a list of site url patterns that specify sites which will automatically grant the window management permission. This will extend the ability of sites to see information about the device's screens and use that information to open and place windows or request fullscreen on specific screens. - For detailed information on valid site url patterns, please see https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. Wildcards, *, are allowed. This policy only matches based on origin, so any path in the URL pattern is ignored. + For detailed information on valid site url patterns, please see https://chromeenterprise.google/policies/url-patterns. Wildcards, *, are allowed. This policy only matches based on origin, so any path in the URL pattern is ignored. If this policy is not set for a site then the policy from DefaultWindowManagementSetting applies to the site, if set, otherwise the permission will follow the browser's defaults and allow users to choose this permission per site. diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/WindowManagementBlockedForUrls.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/WindowManagementBlockedForUrls.yaml index 78484c56..288fbe51 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/WindowManagementBlockedForUrls.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/WindowManagementBlockedForUrls.yaml @@ -2,7 +2,7 @@ caption: Block Window Management permission on these sites desc: |- Allows you to set a list of site url patterns that specify sites which will automatically deny the window management permission. This will limit the ability of sites to see information about the device's screens and use that information to open and place windows or request fullscreen on specific screens. - For detailed information on valid site url patterns, please see https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. Wildcards, *, are allowed. This policy only matches based on origin, so any path in the URL pattern is ignored. + For detailed information on valid site url patterns, please see https://chromeenterprise.google/policies/url-patterns. Wildcards, *, are allowed. This policy only matches based on origin, so any path in the URL pattern is ignored. If this policy is not set for a site then the policy from DefaultWindowManagementSetting applies to the site, if set, otherwise the permission will follow the browser's defaults and allow users to choose this permission per site. diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/WindowPlacementAllowedForUrls.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/WindowPlacementAllowedForUrls.yaml index 7408f32f..7ca69c3f 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/WindowPlacementAllowedForUrls.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/WindowPlacementAllowedForUrls.yaml @@ -2,7 +2,7 @@ caption: Allow Window Placement permission on these sites desc: |- Allows you to set a list of site url patterns that specify sites which will automatically grant the window placement permission. This will extend the ability of sites to see information about the device's screens and use that information to open and place windows or request fullscreen on specific screens. - For detailed information on valid site url patterns, please see https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. Wildcards, *, are allowed. This policy only matches based on origin, so any path in the URL pattern is ignored. + For detailed information on valid site url patterns, please see https://chromeenterprise.google/policies/url-patterns. Wildcards, *, are allowed. This policy only matches based on origin, so any path in the URL pattern is ignored. If this policy is not set for a site then the policy from DefaultWindowPlacementSetting applies to the site, if set, otherwise the permission will follow the browser's defaults and allow users to choose this permission per site. example_value: diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/WindowPlacementBlockedForUrls.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/WindowPlacementBlockedForUrls.yaml index 929ff244..eebc280e 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/WindowPlacementBlockedForUrls.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/WindowPlacementBlockedForUrls.yaml @@ -2,7 +2,7 @@ caption: Block Window Placement permission on these sites desc: |- Allows you to set a list of site url patterns that specify sites which will automatically deny the window placement permission. This will limit the ability of sites to see information about the device's screens and use that information to open and place windows or request fullscreen on specific screens. - For detailed information on valid site url patterns, please see https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. Wildcards, *, are allowed. This policy only matches based on origin, so any path in the URL pattern is ignored. + For detailed information on valid site url patterns, please see https://chromeenterprise.google/policies/url-patterns. Wildcards, *, are allowed. This policy only matches based on origin, so any path in the URL pattern is ignored. If this policy is not set for a site then the policy from DefaultWindowPlacementSetting applies to the site, if set, otherwise the permission will follow the browser's defaults and allow users to choose this permission per site. example_value: diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/policy_atomic_groups.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/policy_atomic_groups.yaml index ba6138f6..17483223 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/policy_atomic_groups.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ContentSettings/policy_atomic_groups.yaml @@ -119,3 +119,9 @@ DeviceAttributesSettings: - DefaultDeviceAttributesSetting - DeviceAttributesAllowedForOrigins - DeviceAttributesBlockedForOrigins +GeolocationSettings: + caption: Geolocation settings + policies: + - DefaultGeolocationSetting + - PreciseGeolocationAllowedForUrls + - GeolocationBlockedForUrls diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/CryptographyCompliance/DeviceLoginScreenPreferSlowCiphers.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/CryptographyCompliance/DeviceLoginScreenPreferSlowCiphers.yaml new file mode 100755 index 00000000..fa8b4a21 --- /dev/null +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/CryptographyCompliance/DeviceLoginScreenPreferSlowCiphers.yaml @@ -0,0 +1,45 @@ +caption: Prefer specific encryption cipher algorithms for TLS for device login screen +desc: |- + This policy configures $2Google ChromeOS to order its preferred encryption ciphers in TLS 1.3 to reflect a preference for algorithms that have been approved by a specific compliance regime, when making network requests from the login screen. + + Setting this policy does not guarantee that any specific algorithms will be negotiated. + + This policy exists to allow server operators who wish to support clients with and without compliance requirements to differentiate between those clients, and only use certain non-default algorithms with increased cryptographic strength for those explicitly configured to prefer them. + + Setting the policy to 'cnsa' configures $2Google ChromeOS to prefer ciphers required for compliance with the Commercial National Security Algorithm Suite versions 1.0 and 2.0 (CNSA 1.0 and 2.0). + + Not setting the policy, or setting it to 'default', configures $2Google ChromeOS to use its default ciphers. + + Setting this policy is not required for security. The default cryptography used by $2Google ChromeOS is strong enough to withstand a brute force attack using the entire power of the Sun. + + Setting this policy will cause $2Google ChromeOS to be slower when making network requests from the login screen. + + This policy only affects TLS 1.3 and QUIC; it does not affect earlier versions of TLS. + + This device policy is equivalent to the user policy PreferSlowCiphers, but applies to the sign-in profile on the login screen instead. + +example_value: cnsa +device_only: true +features: + dynamic_refresh: true + per_profile: false +items: +- caption: Prefer ciphers satisfying the requirements of CNSA 1.0 and 2.0 + name: CNSA + value: cnsa +- caption: Use $2Google ChromeOS's default cipher order + name: Default + value: default +owners: +- file://crypto/OWNERS +- trusty-transport@chromium.org +future_on: +- chrome_os +schema: + enum: + - cnsa + - default + type: string +tags: +- system-security +type: string-enum diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/CryptographyCompliance/DeviceLoginScreenPreferSlowKexAlgorithms.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/CryptographyCompliance/DeviceLoginScreenPreferSlowKexAlgorithms.yaml new file mode 100755 index 00000000..1cbb95b4 --- /dev/null +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/CryptographyCompliance/DeviceLoginScreenPreferSlowKexAlgorithms.yaml @@ -0,0 +1,47 @@ +caption: Prefer specific key exchange algorithms for TLS for device login screen +desc: |- + This policy configures $2Google ChromeOS to order its preferred key agreement algorithms (supported groups) in TLS 1.3 to reflect a preference for algorithms that have been approved by a specific compliance regime, when making network requests from the login screen. + + Setting this policy does not guarantee that any specific algorithms will be negotiated. + + This policy exists to allow server operators who wish to support clients with and without compliance requirements to differentiate between those clients, and only use certain non-default algorithms with increased cryptographic strength for those explicitly configured to prefer them. + + Setting the policy to 'cnsa2' configures $2Google ChromeOS to prefer key exchange methods required for compliance with the Commercial National Security Algorithm Suite 2.0 (CNSA 2.0). + + Not setting the policy, or setting it to 'default', configures $2Google ChromeOS to use its default key exchange methods. + + If this policy is set to a value that would configure $2Google ChromeOS to prefer a post-quantum key agreement algorithm but DevicePostQuantumKeyAgreementEnabled is Disabled, the setting of DevicePostQuantumKeyAgreementEnabled takes precedence. + + Setting this policy is not required for security. The default cryptography used by $2Google ChromeOS is strong enough to withstand a brute force attack using the entire power of the Sun. + + Setting this policy will cause $2Google ChromeOS to be slower when making network requests from the login screen. + + This policy only affects TLS 1.3 and QUIC; it does not affect earlier versions of TLS. + + This device policy is equivalent to the user policy PreferSlowKexAlgorithms, but applies to the sign-in profile on the login screen instead. + +example_value: cnsa2 +device_only: true +features: + dynamic_refresh: true + per_profile: false +items: +- caption: Prefer key exchange methods satisfying the requirements of CNSA 2.0 + name: CNSA2.0 + value: cnsa2 +- caption: Use $2Google ChromeOS's default supported groups + name: Default + value: default +owners: +- file://crypto/OWNERS +- trusty-transport@chromium.org +future_on: +- chrome_os +schema: + enum: + - cnsa2 + - default + type: string +tags: +- system-security +type: string-enum diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/GenerativeAI/GeminiActOnWebSettings.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/GenerativeAI/GeminiActOnWebSettings.yaml index 6a3d43df..b33ba4dd 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/GenerativeAI/GeminiActOnWebSettings.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/GenerativeAI/GeminiActOnWebSettings.yaml @@ -35,4 +35,5 @@ items: default: 0 supported_on: - chrome.*:143- -tags: [] \ No newline at end of file +- chrome_os:144- +tags: [] 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 4af9a8ed..751f8c24 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 @@ -17,7 +17,6 @@ example_value: 1 future_on: - android - chrome.linux -- chrome_os features: dynamic_refresh: true per_profile: true @@ -39,4 +38,5 @@ supported_on: - chrome.win:137- - chrome.mac:137- - ios:139- +- chrome_os:144- tags: [] diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/GenerativeAI/SearchContentSharingSettings.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/GenerativeAI/SearchContentSharingSettings.yaml new file mode 100755 index 00000000..d6ea8d5e --- /dev/null +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/GenerativeAI/SearchContentSharingSettings.yaml @@ -0,0 +1,45 @@ +caption: Enable content sharing with Google AI Mode integrations + +desc: |- + This policy controls sharing of page and file content with Google AI Mode through Google Chrome side panel or tabs. + + Note that this policy doesn't affect Google AI Mode on the web. It only controls how users can share information with it when using Google Chrome. + + 0/unset = users can share page or file content with Google AI Mode. + + 1 = users cannot share page or file content with Google AI Mode. The entry points for sharing context will be disabled or hidden. + + This policy will be ignored when Google Search is not users' default search engine as the feature is disabled. + + This policy is independent of the AIModeSettings policy. The AIModeSettings policy only controls entry points on omnibox or NTP search box, while this policy controls context sharing through side panel or tabs. + + This policy also doesn't control Google Gemini integration which can be disabled by GeminiSettings. + + For more information on data handling for generative AI features, please see https://support.google.com/chrome/a?p=generative_ai_settings. +default: 0 +example_value: 1 +features: + dynamic_refresh: true + per_profile: true +items: +- caption: Allow content sharing with Google AI Mode integrations. + name: Allowed + value: 0 +- caption: Do not allow content sharing with Google AI Mode integrations. + name: Disabled + value: 1 +owners: +- file://components/contextual_search/OWNERS +- file://components/contextual_tasks/OWNERS +schema: + enum: + - 0 + - 1 + type: integer +supported_on: +- android:144- +- ios:144- +- chrome.*:144- +- chrome_os:144- +tags: [] +type: int-enum 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 index ecdcccc6..5cd234a7 100755 --- 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 @@ -12,7 +12,7 @@ desc: |- 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. + For detailed information on valid URL patterns, please see https://chromeenterprise.google/policies/url-patterns/. See https://wicg.github.io/local-network-access/ for Local Network Access restrictions. 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 index 057e8904..96004980 100755 --- 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 @@ -14,7 +14,7 @@ desc: |- 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. + For detailed information on valid URL patterns, please see https://chromeenterprise.google/policies/url-patterns/. See https://wicg.github.io/local-network-access/ for Local Network Access restrictions. diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/LocalNetworkAccessSettings/LocalNetworkAccessRestrictionsEnabled.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/LocalNetworkAccessSettings/LocalNetworkAccessRestrictionsEnabled.yaml index ebc90914..8b45016e 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/LocalNetworkAccessSettings/LocalNetworkAccessRestrictionsEnabled.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/LocalNetworkAccessSettings/LocalNetworkAccessRestrictionsEnabled.yaml @@ -6,10 +6,12 @@ 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 Chrome DevTools due to Local Network Access checks failing, the + name="LOCAL_NETWORK_ACCESS">Local Network Access checks failing, the main request will be blocked instead. When this policy is set to Disabled or unset, Local Network Access restrictions. + + This policy is deprecated because Local Network Access + has launched by default. The policy will be removed in a future release. default: false supported_on: diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/AudioCaptureAllowedUrls.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/AudioCaptureAllowedUrls.yaml index 59d932c2..5bd7a961 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/AudioCaptureAllowedUrls.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/AudioCaptureAllowedUrls.yaml @@ -2,7 +2,7 @@ caption: URLs that will be granted access to audio capture devices without promp desc: |- Setting the policy means you specify the URL list whose patterns get matched to the security origin of the requesting URL. A match grants access to audio capture devices without prompt - For detailed information on valid url patterns, please see https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. Note, however, that the pattern "*", which matches any URL, is not supported by this policy. + For detailed information on valid url patterns, please see https://chromeenterprise.google/policies/url-patterns/. Note, however, that the pattern "*", which matches any URL, is not supported by this policy. example_value: - https://www.example.com/ - https://[*.]example.edu/ diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/AutoplayAllowlist.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/AutoplayAllowlist.yaml index 5d91877a..82734234 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/AutoplayAllowlist.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/AutoplayAllowlist.yaml @@ -2,7 +2,7 @@ caption: Allow media autoplay on a allowlist of URL patterns desc: |- Setting the policy lets videos play automatically (without user consent) with audio content in $1Google Chrome. If AutoplayAllowed policy is set to True, then this policy has no effect. If AutoplayAllowed is set to False, then any URL patterns set in this policy can still play. If this policy changes while $1Google Chrome is running, it only applies to newly opened tabs. - For detailed information on valid url patterns, please see https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. + For detailed information on valid url patterns, please see https://chromeenterprise.google/policies/url-patterns/. example_value: - https://www.example.com - '[*.]example.edu' diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/BookmarkBarEnabled.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/BookmarkBarEnabled.yaml index 323662a7..3f1dd346 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/BookmarkBarEnabled.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/BookmarkBarEnabled.yaml @@ -10,7 +10,6 @@ features: dynamic_refresh: true per_profile: true future_on: -- android - fuchsia items: - caption: Enable bookmark bar @@ -25,6 +24,7 @@ owners: schema: type: boolean supported_on: +- android:144- - chrome.*:12- - chrome_os:12- tags: [] diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/CameraSaveLocation.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/CameraSaveLocation.yaml new file mode 100755 index 00000000..22a2f08d --- /dev/null +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/CameraSaveLocation.yaml @@ -0,0 +1,28 @@ +caption: Set location to save Camera app photos. +desc: |- + Sets the directory where pictures and videos captured by the camera are being saved. + The user can't change it and the photos are always saved to the defined directory. + + The policy uses same format as DownloadDirectory policy. + The location could be set to either local filesystem or Google Drive (with '${google_drive}' prefix) or Microsoft OneDrive (with '${microsoft_onedrive}' prefix). + If the policy is set to empty string, it'll save the photos in the default "My files/Camera" directory. + See a list of variables you can use ( https://www.chromium.org/administrators/policy-list-3/user-data-directory-variables ). + + Leaving the policy unset means $2Google ChromeOS uses the default "My files/Camera" directory to save photos. +example_value: ${google_drive}/Camera +features: + can_be_recommended: false + dynamic_refresh: true + per_profile: false +owners: +- file://components/policy/OWNERS +- poromov@chromium.org +- aidazolic@google.com +- orko@igalia.com +schema: + type: string +future_on: +- chrome_os +tags: +- local-data-access +type: string diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/DataControlsRules.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/DataControlsRules.yaml index 6d5ef024..edec04f3 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/DataControlsRules.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/DataControlsRules.yaml @@ -189,11 +189,10 @@ schema: type: object type: object type: array -future_on: -- ios supported_on: - android:140- - chrome.*:128- - chrome_os:128- +- ios:144- tags: [] type: dict diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/DeviceUserInitiatedFlexSystemFirmwareUpdatesEnabled.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/DeviceUserInitiatedFlexSystemFirmwareUpdatesEnabled.yaml index a1c36eba..a97353b9 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/DeviceUserInitiatedFlexSystemFirmwareUpdatesEnabled.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/DeviceUserInitiatedFlexSystemFirmwareUpdatesEnabled.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 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:144- device_only: true features: dynamic_refresh: true diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/ExemptDomainFileTypePairsFromFileTypeDownloadWarnings.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/ExemptDomainFileTypePairsFromFileTypeDownloadWarnings.yaml index 254b1b55..a2a832b5 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/ExemptDomainFileTypePairsFromFileTypeDownloadWarnings.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/ExemptDomainFileTypePairsFromFileTypeDownloadWarnings.yaml @@ -9,7 +9,7 @@ desc: |- If you enable this policy: - * The URL pattern should be formatted according to https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. + * The URL pattern should be formatted according to https://chromeenterprise.google/policies/url-patterns/. * The file type extension entered must be in lower-cased ASCII. The leading separator should not be included when listing the file type extension, so list "jnlp" should be used instead of ".jnlp". diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/FileOrDirectoryPickerWithoutGestureAllowedForOrigins.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/FileOrDirectoryPickerWithoutGestureAllowedForOrigins.yaml index 3e92dfe5..9be3e45c 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/FileOrDirectoryPickerWithoutGestureAllowedForOrigins.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/FileOrDirectoryPickerWithoutGestureAllowedForOrigins.yaml @@ -11,7 +11,7 @@ desc: |- called without prior user gesture. For detailed information on valid url patterns, please see - https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. * is + https://chromeenterprise.google/policies/url-patterns/. * is not an accepted value for this policy. If this policy is unset, all origins will require a prior user gesture to call diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/KioskBrowserPermissionsAllowedForOrigins.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/KioskBrowserPermissionsAllowedForOrigins.yaml index 98ccd0b5..8df8dcb7 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/KioskBrowserPermissionsAllowedForOrigins.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/KioskBrowserPermissionsAllowedForOrigins.yaml @@ -2,7 +2,7 @@ caption: Allow origins to access browser permissions available to the web kiosk desc: |- Setting the policy allows listed additional origins to access browser permissions (e.g. geo location, camera, microphone) which are already available to the web kiosk applications install origin. - For detailed information on valid url patterns, please see https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. * is not an accepted value for this policy. + For detailed information on valid url patterns, please see https://chromeenterprise.google/policies/url-patterns/. * is not an accepted value for this policy. example_value: - https://www.google.com - '[*.]example.com' @@ -21,4 +21,4 @@ schema: supported_on: - chrome_os:129- tags: [] -type: list \ No newline at end of file +type: list diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/ParcelTrackingEnabled.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/ParcelTrackingEnabled.yaml index 9f63d55c..f2d3f444 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/ParcelTrackingEnabled.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/ParcelTrackingEnabled.yaml @@ -1,6 +1,6 @@ owners: - hiramahmood@google.com -- file://ios/chrome/browser/parcel_tracking/OWNERS +- bling-pandamonium@google.com caption: Allows users to track their packages on Chrome. deprecated: true desc: |- diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/PdfXfaFormsEnabled.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/PdfXfaFormsEnabled.yaml new file mode 100755 index 00000000..330b385a --- /dev/null +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/PdfXfaFormsEnabled.yaml @@ -0,0 +1,30 @@ +caption: "Enable support for XFA forms in PDF documents" +default: null +desc: |- + Controls whether the PDF viewer in $1Google Chrome supports XFA forms in PDF documents. + + If this policy is set to True, support for XFA forms is enabled. + If this policy is set to False, support for XFA forms is disabled. + If this policy is not set, the default Chrome behavior is used, which may also be influenced by the `#pdf-xfa-forms` flag. When this policy is set, it takes precedence over the `#pdf-xfa-forms` flag. + +example_value: false +features: + dynamic_refresh: true + per_profile: true +items: + - caption: PDF XFA Forms support disabled + value: false + - caption: PDF XFA Forms support enabled + value: true + - caption: Use the default Chrome browser behavior + value: null +owners: + - aidazolic@chromium.org + - thestig@chromium.org + - file://pdf/OWNERS +schema: + type: boolean +supported_on: + - chrome_os:144- +tags: [] +type: main diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/SSLErrorOverrideAllowedForOrigins.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/SSLErrorOverrideAllowedForOrigins.yaml index 19d66695..5aeddcba 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/SSLErrorOverrideAllowedForOrigins.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/SSLErrorOverrideAllowedForOrigins.yaml @@ -6,7 +6,7 @@ desc: |- Leaving the policy unset means SSLErrorOverrideAllowed applies for all sites. - For detailed information on valid input patterns, please see https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. * is not an accepted value for this policy. This policy only matches based on origin, so any path in the URL pattern is ignored. + For detailed information on valid input patterns, please see https://chromeenterprise.google/policies/url-patterns/. * is not an accepted value for this policy. This policy only matches based on origin, so any path in the URL pattern is ignored. example_value: - https://www.example.com - '[*.]example.edu' diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/ScreenCaptureWithoutGestureAllowedForOrigins.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/ScreenCaptureWithoutGestureAllowedForOrigins.yaml index 5136d0ed..7e2e7dde 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/ScreenCaptureWithoutGestureAllowedForOrigins.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/ScreenCaptureWithoutGestureAllowedForOrigins.yaml @@ -9,7 +9,7 @@ desc: |- called without prior user gesture. For detailed information on valid url patterns, please see - https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. * is + https://chromeenterprise.google/policies/url-patterns/. * is not an accepted value for this policy. If this policy is unset, all origins will require a prior user gesture to call diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/SilentPrintingEnabled.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/SilentPrintingEnabled.yaml index 9b9935ca..2c8d1739 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/SilentPrintingEnabled.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/SilentPrintingEnabled.yaml @@ -24,8 +24,8 @@ owners: - orko@igalia.com schema: type: boolean -future_on: -- chrome_os -- chrome.* +supported_on: +- chrome_os:144- +- chrome.*:144- tags: [] type: main diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/StaticStorageQuotaEnabled.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/StaticStorageQuotaEnabled.yaml new file mode 100755 index 00000000..82020f5c --- /dev/null +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/StaticStorageQuotaEnabled.yaml @@ -0,0 +1,29 @@ +caption: Control whether storage quota APIs will return static values +default: null +desc: |- + When enabled, the storage quota APIs will return a static value equal to usage + min(10 GiB, disk rounded up to the nearest 1 GiB). + When disabled, the storage quota APIs will generally return a dynamic value proportional to the total space available on the device, regardless of usage. + If unset, the predictable reported storage quota feature launch or flags will determine behavior. + Sites with unlimited storage permissions are unaffected by this setting. Enforced quota is also unaffected. +example_value: true +features: + dynamic_refresh: false + per_profile: true +items: +- caption: Storage quota APIs return static values. + value: true +- caption: Storage quota APIs return dynamic values. + value: false +- caption: Storage quota APIs return values based on feature launch process. + value: null +owners: +- bcl@google.com +- file://storage/OWNERS +schema: + type: boolean +supported_on: +- chrome_os:144- +- chrome.*:144- +- android:144- +tags: [] +type: main diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/SubAppsAPIsAllowedWithoutGestureAndAuthorizationForOrigins.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/SubAppsAPIsAllowedWithoutGestureAndAuthorizationForOrigins.yaml index d1303c49..93700f5a 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/SubAppsAPIsAllowedWithoutGestureAndAuthorizationForOrigins.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/SubAppsAPIsAllowedWithoutGestureAndAuthorizationForOrigins.yaml @@ -13,7 +13,7 @@ desc: |- called without prior user gesture, nor asking the user for confirmation. For detailed information on valid url patterns, please see - https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. * is + https://chromeenterprise.google/policies/url-patterns/. * is not an accepted value for this policy. If this policy is unset, all origins will require a prior user gesture to call diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/SyncTypesListDisabled.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/SyncTypesListDisabled.yaml index 41331df8..35832bbf 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/SyncTypesListDisabled.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/SyncTypesListDisabled.yaml @@ -2,7 +2,7 @@ caption: List of types that should be excluded from synchronization desc: |- If this policy is set all specified data types will be excluded from synchronization both for Chrome Sync as well as for roaming profile synchronization. This can be beneficial to reduce the size of the roaming profile or limit the type of data uploaded to the Chrome Sync Servers. - The current data types for this policy are: "apps", "autofill", "bookmarks", "extensions", "preferences", "passwords", "payments", "productComparison", "readingList", "savedTabGroups", "tabs", "themes", "typedUrls", "wifiConfigurations". Those names are case sensitive! + The current data types for this policy are: "apps", "autofill", "bookmarks", "extensions", "preferences", "passwords", "payments", "productComparison", "readingList", "tabs", "themes", "typedUrls", "wifiConfigurations". Those names are case sensitive! Notes: Dynamic Policy Refresh is supported only in $1Google Chrome version 123 and later. Disabling "autofill" also disables "payments". "typedUrls" refers to all browsing history. example_value: diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/TranslatorAPIAllowed.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/TranslatorAPIAllowed.yaml index ec87a17f..06486c7c 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/TranslatorAPIAllowed.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/TranslatorAPIAllowed.yaml @@ -21,5 +21,6 @@ supported_on: - chrome.win:132- - chrome.mac:132- - chrome.linux:132- +- chrome_os:144- tags: [] type: main diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/VideoCaptureAllowedUrls.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/VideoCaptureAllowedUrls.yaml index 4bcc58ca..c8588ba0 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/VideoCaptureAllowedUrls.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Miscellaneous/VideoCaptureAllowedUrls.yaml @@ -2,7 +2,7 @@ caption: URLs that will be granted access to video capture devices without promp desc: |- Setting the policy means you specify the URL list whose patterns get matched to the security origin of the requesting URL. A match grants access to video capture devices without prompt - For detailed information on valid url patterns, please see https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. Note, however, that the pattern "*", which matches any URL, is not supported by this policy. + For detailed information on valid url patterns, please see https://chromeenterprise.google/policies/url-patterns/. Note, however, that the pattern "*", which matches any URL, is not supported by this policy. example_value: - https://www.example.com/ - https://[*.]example.edu/ diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/PasswordManager/PasswordManagerBlocklist.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/PasswordManager/PasswordManagerBlocklist.yaml index 4ca01dac..886cc25d 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/PasswordManager/PasswordManagerBlocklist.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/PasswordManager/PasswordManagerBlocklist.yaml @@ -8,6 +8,8 @@ desc: |- If a domain is not present in the list, the Password Manager will be available for it. If the policy is unset, the Password Manager will be available for all domains. + + For detailed information on valid URL patterns, please see https://support.google.com/chrome/a?p=url_blocklist_filter_format. example_value: - example.com - login.example.com diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/PrivacySandbox/PrivacySandboxAdMeasurementEnabled.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/PrivacySandbox/PrivacySandboxAdMeasurementEnabled.yaml index 6ed00542..d5b7384b 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/PrivacySandbox/PrivacySandboxAdMeasurementEnabled.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/PrivacySandbox/PrivacySandboxAdMeasurementEnabled.yaml @@ -1,5 +1,6 @@ caption: Choose whether the Privacy Sandbox ad measurement setting can be disabled default: true +deprecated: true desc: |- A policy to control whether the Privacy Sandbox Ad measurement setting can be disabled for your users. @@ -7,6 +8,8 @@ desc: |- If you set this policy to Enabled or keep it unset, your users will be able to turn on or off the Privacy Sandbox Ad measurement setting on their device. Setting this policy requires setting the PrivacySandboxPromptEnabled policy to Disabled. + + This policy is deprecated as of $1Google Chrome version 144 with the deprecation of the Attribution Reporting API. example_value: false features: dynamic_refresh: true diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/PrivacySandbox/PrivacySandboxAdTopicsEnabled.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/PrivacySandbox/PrivacySandboxAdTopicsEnabled.yaml index af33b392..4fa45851 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/PrivacySandbox/PrivacySandboxAdTopicsEnabled.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/PrivacySandbox/PrivacySandboxAdTopicsEnabled.yaml @@ -1,5 +1,6 @@ caption: Choose whether the Privacy Sandbox Ad topics setting can be disabled default: true +deprecated: true desc: |- A policy to control whether the Privacy Sandbox Ad topics setting can be disabled for your users. @@ -7,6 +8,8 @@ desc: |- If you set this policy to Enabled or keep it unset, your users will be able to turn on or off the Privacy Sandbox Ad topics setting on their device. Setting this policy requires setting the PrivacySandboxPromptEnabled policy to Disabled. + + This policy is deprecated as of $1Google Chrome version 144 with the deprecation of Topics API. example_value: false features: dynamic_refresh: true diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/PrivacySandbox/PrivacySandboxSiteEnabledAdsEnabled.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/PrivacySandbox/PrivacySandboxSiteEnabledAdsEnabled.yaml index cabbc6f3..a1bd3f7c 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/PrivacySandbox/PrivacySandboxSiteEnabledAdsEnabled.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/PrivacySandbox/PrivacySandboxSiteEnabledAdsEnabled.yaml @@ -1,5 +1,6 @@ caption: Choose whether the Privacy Sandbox Site-suggested ads setting can be disabled default: true +deprecated: true desc: |- A policy to control whether the Privacy Sandbox Site-suggested ads setting can be disabled for your users. @@ -7,6 +8,8 @@ desc: |- If you set this policy to Enabled or keep it unset, your users will be able to turn on or off the Privacy Sandbox Site-suggested ads setting on their device. Setting this policy requires setting the PrivacySandboxPromptEnabled policy to Disabled. + + This policy is deprecated as of $1Google Chrome version 144 with the deprecation of the Protected Audience API. example_value: false features: dynamic_refresh: true diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/PrivateNetworkRequestSettings/InsecurePrivateNetworkRequestsAllowedForUrls.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/PrivateNetworkRequestSettings/InsecurePrivateNetworkRequestsAllowedForUrls.yaml index 791d18b3..2bc43f5b 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/PrivateNetworkRequestSettings/InsecurePrivateNetworkRequestsAllowedForUrls.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/PrivateNetworkRequestSettings/InsecurePrivateNetworkRequestsAllowedForUrls.yaml @@ -8,7 +8,7 @@ desc: |- For origins not covered by the patterns specified here, the global default value will be used either from the InsecurePrivateNetworkRequestsAllowed policy, if it is set, or the user's personal configuration otherwise. - For detailed information on valid URL patterns, please see https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. + For detailed information on valid URL patterns, please see https://chromeenterprise.google/policies/url-patterns/. example_value: - http://www.example.com:8080 - '[*.]example.edu' diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/PrivateNetworkRequestSettings/PrivateNetworkAccessRestrictionsEnabled.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/PrivateNetworkRequestSettings/PrivateNetworkAccessRestrictionsEnabled.yaml index 51846203..5c0af16d 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/PrivateNetworkRequestSettings/PrivateNetworkAccessRestrictionsEnabled.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/PrivateNetworkRequestSettings/PrivateNetworkAccessRestrictionsEnabled.yaml @@ -1,6 +1,6 @@ owners: - phao@chromium.org -- file://chrome/browser/private_network_access/OWNERS +- chrome-product-security@google.com caption: Specifies whether to apply restrictions to requests to more-private network endpoints diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Proxy/EnableProxyOverrideRulesForAllUsers.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Proxy/EnableProxyOverrideRulesForAllUsers.yaml new file mode 100755 index 00000000..12673a5c --- /dev/null +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Proxy/EnableProxyOverrideRulesForAllUsers.yaml @@ -0,0 +1,28 @@ +caption: Controls which managed users can set the ProxyOverrideRules policy. +desc: + When this policy is set to 0 or left unset, the ProxyOverrideRules policy will only be applied at the user scope for affiliated users. + + When this policy is set to 1, the ProxyOverrideRules policy will be applied at the user scope, even that user is unaffiliated. + + When this policy is set to 2, the ProxyOverrideRules policy will never be applied when its source is a user. + +example_value: 1 +default: 0 +features: + dynamic_refresh: true + per_profile: false +future_on: +- chrome.* +owners: +- seblalancette@chromium.org +- domfc@chromium.org +- cbe-eng@google.com +schema: + enum: + - 0 + - 1 + - 2 + type: integer +tags: +- system-security +type: int diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Proxy/ProxyOverrideRules.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Proxy/ProxyOverrideRules.yaml index 7255cfdd..885c16b6 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Proxy/ProxyOverrideRules.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Proxy/ProxyOverrideRules.yaml @@ -4,37 +4,58 @@ desc: |- Leaving the policy unset has no effect on other proxy policies or user settings. - When the browser needs to decide what proxy to use, entries of the ProxyOverrideRules policy are evaluated in sequence until an entry has a match for at least one of the URL hosts in DestinationMatchers and if all entries in Conditions are met. The value in ProxyChain will be used as a proxy for such a match. If no match is found, proxy settings will fall back to what is set in the ProxySettings policy. + When the browser needs to decide what proxy to use, entries of the ProxyOverrideRules policy are evaluated in sequence until an entry satisfies all the following points: + * At least one of the URL patterns in DestinationMatchers is matched. + * None of the URL patterns in ExcludeDestinationMatchers is matched. + * If Conditions is specified and is a non-empty list, all conditions represented by its entries are satisfied. + The value in ProxyList will be used as a proxy for such a match. If no match is found, proxy settings will fall back to what is set in the ProxySettings policy. - The ProxyChain field entries correspond to string values of PAC files such as: + The URL patterns supported by DestinationMatchers and ExcludeDestinationMatchers are documented at https://chromium.googlesource.com/chromium/src/+/HEAD/net/docs/proxy.md#proxy-config-url-patterns. + + The ProxyList field entries correspond to string values of PAC files such as: * DIRECT * PROXY host:port * HTTPS host:port - The first reachable entry will be used as a proxy. + * SOCKS4 host:port + * SOCKS5 host:port + Alternatively, URL-like proxy specifiers can be used directly to specify the proxy, for example: + * http://host:port + * https://host:port + * socks4://host:port + * socks5://host:port + The first reachable entry in the list will be used as a proxy. Invalid entries in the list are ignored. The Conditions field contains a list of conditions that must all be met for its override rule to be used to decide the proxy to use. If it is left unset, the entry will be used as long as at least one host in DestinationMatchers is matched. - The DnsProbe condition checks if the provided DNS Host is able to resolve to an IP address. If the value of Result is "resolves" then the condition is considered as met. If the value is instead set to not_found, then the condition is considered met if the resolution failed. + The DnsProbe condition checks if the provided DNS Host is able to resolve to an IP address. It must contain a host (e.g. example.com), and optionally a scheme or a port (e.g. https://example.com, example.com:123, https://example.com:123). If a secure scheme is used (e.g. https), DNS lookup may also request the HTTPS record (see RFC 9460 for more details). If the value of Result is "resolved" then the condition is considered as met. If the value is instead set to not_found, then the condition is considered met if the resolution failed. example_value: - DestinationMatchers: - 'https://some.app.com' - 'https://other.app.org' - ProxyChain: + ProxyList: - 'HTTPS proxy.app:443' - 'DIRECT' Conditions: - DnsProbe: Host: 'corp.ads' - Result: "resolves" + Result: "resolved" +- DestinationMatchers: + - 'https://google.com' + ExcludeDestinationMatchers: + - 'https://mail.google.com' + ProxyList: + - 'HTTPS proxy.app:443' + - 'DIRECT' features: cloud_only: true dynamic_refresh: true per_profile: true future_on: -- chrome.* -- chrome_os - android +supported_on: +- chrome.*:144- +- chrome_os:144- owners: - seblalancette@chromium.org - domfc@chromium.org @@ -48,7 +69,11 @@ schema: type: array items: type: string - ProxyChain: + ExcludeDestinationMatchers: + type: array + items: + type: string + ProxyList: type: array items: type: string @@ -65,7 +90,7 @@ schema: Result: type: string enum: - - resolves + - resolved - not_found type: dict tags: diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Proxy/policy_atomic_groups.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Proxy/policy_atomic_groups.yaml index a5e22bdd..9af94356 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Proxy/policy_atomic_groups.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Proxy/policy_atomic_groups.yaml @@ -7,3 +7,5 @@ Proxy: - ProxyPacUrl - ProxyBypassList - ProxySettings + - ProxyOverrideRules + - EnableProxyOverrideRulesForAllUsers diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/RelatedWebsiteSets/RelatedWebsiteSetsEnabled.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/RelatedWebsiteSets/RelatedWebsiteSetsEnabled.yaml index fbb47fa2..58bfcc6f 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/RelatedWebsiteSets/RelatedWebsiteSetsEnabled.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/RelatedWebsiteSets/RelatedWebsiteSetsEnabled.yaml @@ -1,5 +1,6 @@ caption: Enable Related Website Sets default: true +deprecated: true desc: |- This policy allows to control the Related Website Sets feature enablement. @@ -8,6 +9,8 @@ desc: |- When this policy is unset or set to True, the Related Website Sets feature is enabled. When this policy is set to False, the Related Website Sets feature is disabled. + + This policy is deprecated as of $1Google Chrome version 144 with the deprecation of Related Website Sets. example_value: false features: dynamic_refresh: true diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/RelatedWebsiteSets/RelatedWebsiteSetsOverrides.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/RelatedWebsiteSets/RelatedWebsiteSetsOverrides.yaml index 82bcfce5..c47d056f 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/RelatedWebsiteSets/RelatedWebsiteSetsOverrides.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/RelatedWebsiteSets/RelatedWebsiteSetsOverrides.yaml @@ -1,4 +1,5 @@ caption: Override Related Website Sets. +deprecated: true default: {} desc: |- This policy provides a way to override the list of sets the browser uses for Related Website Sets features. @@ -38,6 +39,8 @@ desc: |- 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. + + This policy is deprecated as of $1Google Chrome version 144 with the deprecation of Related Website Sets. example_value: additions: - associatedSites: diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ScreenCapture/SameOriginTabCaptureAllowedByOrigins.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ScreenCapture/SameOriginTabCaptureAllowedByOrigins.yaml index 66715692..6fc764f9 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ScreenCapture/SameOriginTabCaptureAllowedByOrigins.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ScreenCapture/SameOriginTabCaptureAllowedByOrigins.yaml @@ -8,7 +8,7 @@ desc: |- If a site matches a URL pattern in this policy, the following policies will not be considered: TabCaptureAllowedByOrigins, WindowCaptureAllowedByOrigins, ScreenCaptureAllowedByOrigins, ScreenCaptureAllowed. - For detailed information on valid url patterns, please see https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. This policy only matches based on origin, so any path in the URL pattern is ignored. + For detailed information on valid url patterns, please see https://chromeenterprise.google/policies/url-patterns/. This policy only matches based on origin, so any path in the URL pattern is ignored. example_value: - https://www.example.com - '[*.]example.edu' diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ScreenCapture/ScreenCaptureAllowedByOrigins.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ScreenCapture/ScreenCaptureAllowedByOrigins.yaml index 1d00c1ab..455cc6bb 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ScreenCapture/ScreenCaptureAllowedByOrigins.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ScreenCapture/ScreenCaptureAllowedByOrigins.yaml @@ -8,7 +8,7 @@ desc: |- If a site matches a URL pattern in this policy, the ScreenCaptureAllowed will not be considered. - For detailed information on valid url patterns, please see https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. This policy only matches based on origin, so any path in the URL pattern is ignored. + For detailed information on valid url patterns, please see https://chromeenterprise.google/policies/url-patterns/. This policy only matches based on origin, so any path in the URL pattern is ignored. example_value: - https://www.example.com - '[*.]example.edu' diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ScreenCapture/TabCaptureAllowedByOrigins.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ScreenCapture/TabCaptureAllowedByOrigins.yaml index 33106777..eb2a8ec7 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ScreenCapture/TabCaptureAllowedByOrigins.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ScreenCapture/TabCaptureAllowedByOrigins.yaml @@ -10,7 +10,7 @@ desc: |- If a site matches a URL pattern in this policy, the following policies will not be considered: WindowCaptureAllowedByOrigins, ScreenCaptureAllowedByOrigins, ScreenCaptureAllowed. - For detailed information on valid url patterns, please see https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. This policy only matches based on origin, so any path in the URL pattern is ignored. + For detailed information on valid url patterns, please see https://chromeenterprise.google/policies/url-patterns/. This policy only matches based on origin, so any path in the URL pattern is ignored. example_value: - https://www.example.com - '[*.]example.edu' diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ScreenCapture/WindowCaptureAllowedByOrigins.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ScreenCapture/WindowCaptureAllowedByOrigins.yaml index 9f1a4036..f11931aa 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/ScreenCapture/WindowCaptureAllowedByOrigins.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/ScreenCapture/WindowCaptureAllowedByOrigins.yaml @@ -8,7 +8,7 @@ desc: |- If a site matches a URL pattern in this policy, the following policies will not be considered: ScreenCaptureAllowedByOrigins, ScreenCaptureAllowed. - For detailed information on valid url patterns, please see https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. This policy only matches based on origin, so any path in the URL pattern is ignored. + For detailed information on valid url patterns, please see https://chromeenterprise.google/policies/url-patterns/. This policy only matches based on origin, so any path in the URL pattern is ignored. example_value: - https://www.example.com - '[*.]example.edu' diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Signin/DeviceLoginScreenAutoSelectCertificateForUrls.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Signin/DeviceLoginScreenAutoSelectCertificateForUrls.yaml index 1f5f6132..e5cd2461 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Signin/DeviceLoginScreenAutoSelectCertificateForUrls.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Signin/DeviceLoginScreenAutoSelectCertificateForUrls.yaml @@ -20,7 +20,7 @@ desc: |- If this policy is left not set, no auto-selection will be done for any site. - For detailed information on valid url patterns, please see https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. + For detailed information on valid url patterns, please see https://chromeenterprise.google/policies/url-patterns/. device_only: true example_value: - '{"pattern":"https://www.example.com","filter":{"ISSUER":{"CN":"certificate issuer diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Signin/LocalAuthFactors.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Signin/LocalAuthFactors.yaml new file mode 100755 index 00000000..671fd683 --- /dev/null +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Signin/LocalAuthFactors.yaml @@ -0,0 +1,48 @@ +caption: Configure allowed local auth factors +desc: |- + Setting the policy controls which local authentication factors can be used for both login and reauthentication on $2Google ChromeOS. + + To allow: + + * Every local authentication factor, use ["ALL"] (includes factors added in the future). + + * Only PIN, use ["PIN"]. + + * Only Local Passwords, use ["LOCAL_PASSWORD"]. + + If the policy is unset or set to an empty list, no local auth factors are available for managed users. +example_value: +- PIN +features: + dynamic_refresh: true + per_profile: false +items: +- caption: All + name: ALL + value: ALL +- caption: PIN + name: PIN + value: PIN +- caption: Local Password + name: LOCAL_PASSWORD + value: LOCAL_PASSWORD +owners: +- fahadmansoor@google.com +- ghostbusters@google.com +- cros-lurs@google.com +# LINT.IfChange(LocalAuthFactorsPolicySchema) +schema: + items: + enum: + - ALL + - PIN + - LOCAL_PASSWORD + type: string + type: array +# LINT.ThenChange(//chromeos/ash/components/osauth/public/auth_policy_utils.cc:LocalAuthFactorsPolicyMap) + +future_on: +- chrome_os + +tags: [] +type: string-enum-list \ No newline at end of file diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Signin/LocalAuthFactorsComplexity.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Signin/LocalAuthFactorsComplexity.yaml index 6cfae3e8..a205fe2a 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Signin/LocalAuthFactorsComplexity.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Signin/LocalAuthFactorsComplexity.yaml @@ -23,7 +23,7 @@ future_on: features: dynamic_refresh: true - per_profile: true + per_profile: false type: int-enum diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Signin/ProfileSeparationSettings.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Signin/ProfileSeparationSettings.yaml index 6e799c52..560f23aa 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Signin/ProfileSeparationSettings.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Signin/ProfileSeparationSettings.yaml @@ -26,6 +26,7 @@ features: cloud_only: true dynamic_refresh: true per_profile: true + user_only: true type: int-enum diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Startup/HomepageIsNewTabPage.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Startup/HomepageIsNewTabPage.yaml index d579f4c1..dc8f94f7 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Startup/HomepageIsNewTabPage.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Startup/HomepageIsNewTabPage.yaml @@ -14,7 +14,6 @@ features: dynamic_refresh: true per_profile: true future_on: -- android - fuchsia items: - caption: Use New Tab Page as homepage @@ -31,5 +30,6 @@ sensitive: true supported_on: - chrome.*:8- - chrome_os:11- +- android:144- tags: [] type: main diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Startup/ShowHomeButton.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Startup/ShowHomeButton.yaml index edeefdd3..ba59d6bf 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/Startup/ShowHomeButton.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/Startup/ShowHomeButton.yaml @@ -10,7 +10,6 @@ features: dynamic_refresh: true per_profile: true future_on: -- android - fuchsia items: - caption: Show the Home button on the toolbar @@ -27,5 +26,6 @@ schema: supported_on: - chrome.*:8- - chrome_os:11- +- android:144- tags: [] type: main diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/UserAndDeviceReporting/ReportWebsiteActivityAllowlist.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/UserAndDeviceReporting/ReportWebsiteActivityAllowlist.yaml index 25950ea6..e2b0cd8a 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/UserAndDeviceReporting/ReportWebsiteActivityAllowlist.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/UserAndDeviceReporting/ReportWebsiteActivityAllowlist.yaml @@ -5,7 +5,7 @@ desc: |- Setting the policy controls website URL opened and closed event reporting for allowlisted URLs. If unset, no website events will be reported. - For detailed information on valid URL patterns, see https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. Only HTTP and HTTPS URL schemes are allowed for this policy. + For detailed information on valid URL patterns, see https://chromeenterprise.google/policies/url-patterns/. Only HTTP and HTTPS URL schemes are allowed for this policy. example_value: - 'example.com' - 'https://ssl.server.com' diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/UserAndDeviceReporting/ReportWebsiteTelemetryAllowlist.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/UserAndDeviceReporting/ReportWebsiteTelemetryAllowlist.yaml index ca4522c1..0a0dcde8 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/UserAndDeviceReporting/ReportWebsiteTelemetryAllowlist.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/UserAndDeviceReporting/ReportWebsiteTelemetryAllowlist.yaml @@ -5,7 +5,7 @@ desc: |- Setting the policy controls website telemetry reporting for allowlisted URLs. If unset, no website telemetry will be reported. - For detailed information on valid URL patterns, see https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. Only HTTP and HTTPS URL schemes are allowed for this policy. + For detailed information on valid URL patterns, see https://chromeenterprise.google/policies/url-patterns/. Only HTTP and HTTPS URL schemes are allowed for this policy. example_value: - 'example.com' - 'https://ssl.server.com' diff --git a/tools/under-control/src/components/policy/resources/templates/policy_definitions/WebRtc/WebRtcIPHandlingUrl.yaml b/tools/under-control/src/components/policy/resources/templates/policy_definitions/WebRtc/WebRtcIPHandlingUrl.yaml index ba2b4d63..9aa58e54 100755 --- a/tools/under-control/src/components/policy/resources/templates/policy_definitions/WebRtc/WebRtcIPHandlingUrl.yaml +++ b/tools/under-control/src/components/policy/resources/templates/policy_definitions/WebRtc/WebRtcIPHandlingUrl.yaml @@ -4,7 +4,7 @@ desc: |- It accepts a list of URL patterns and handling type pairs. The URL patterns are checked in order and the first match will configure which handling is used by WebRTC for the domain. When the URL of the current document is not matched against any entry, it uses the configuration set by the policy WebRtcIPHandling. - For detailed information on valid input patterns, please see https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. Wildcards, *, are allowed. This policy only matches based on origin, so any path in the URL pattern is ignored. + For detailed information on valid input patterns, please see https://chromeenterprise.google/policies/url-patterns/. Wildcards, *, are allowed. This policy only matches based on origin, so any path in the URL pattern is ignored. Valid handling values: 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 4c901b77..dc9e636c 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 @@ -133,7 +133,6 @@ #include "content/browser/wake_lock/wake_lock_context_host.h" #include "content/browser/web_contents/file_chooser_impl.h" #include "content/browser/web_contents/java_script_dialog_commit_deferring_condition.h" -#include "content/browser/web_contents/partitioned_popins_controller.h" #include "content/browser/web_contents/slow_web_preference_cache.h" #include "content/browser/web_contents/web_contents_view.h" #include "content/browser/web_contents/web_contents_view_child_frame.h" @@ -150,6 +149,7 @@ #include "content/public/browser/context_menu_params.h" #include "content/public/browser/device_service.h" #include "content/public/browser/disallow_activation_reason.h" +#include "content/public/browser/document_picture_in_picture_window_controller.h" #include "content/public/browser/download_manager.h" #include "content/public/browser/file_select_listener.h" #include "content/public/browser/focused_node_details.h" @@ -161,6 +161,7 @@ #include "content/public/browser/navigation_details.h" #include "content/public/browser/navigation_throttle_registry.h" #include "content/public/browser/permission_descriptor_util.h" +#include "content/public/browser/picture_in_picture_window_controller.h" #include "content/public/browser/preload_pipeline_info.h" #include "content/public/browser/preview_cancel_reason.h" #include "content/public/browser/render_widget_host_iterator.h" @@ -241,10 +242,12 @@ #include "base/android/device_info.h" #include "base/android/scoped_service_binding_batch.h" #include "base/check.h" +#include "components/viz/common/gpu/raster_context_provider.h" #include "content/browser/android/java_interfaces_impl.h" #include "content/browser/android/nfc_host.h" #include "content/browser/android/selection/selection_popup_controller.h" #include "content/browser/navigation_transitions/back_forward_transition_animation_manager_android.h" +#include "content/browser/renderer_host/compositor_impl_android.h" #include "content/browser/web_contents/web_contents_android.h" #include "content/browser/web_contents/web_contents_view_android.h" #include "content/public/browser/android/child_process_importance.h" @@ -271,11 +274,6 @@ #include "ui/wm/core/window_util.h" #endif -#if !BUILDFLAG(IS_ANDROID) -#include "content/public/browser/document_picture_in_picture_window_controller.h" -#include "content/public/browser/picture_in_picture_window_controller.h" -#endif // !BUILDFLAG(IS_ANDROID) - #if BUILDFLAG(IS_IOS) && !BUILDFLAG(IS_IOS_TVOS) #include "content/browser/ios/nfc_host.h" #endif @@ -885,78 +883,6 @@ bool WebContentsImpl::IsPopup() const { return is_popup_; } -bool WebContentsImpl::IsPartitionedPopin() const { - // The feature must be enabled if a popin was opened. - CHECK(base::FeatureList::IsEnabled(blink::features::kPartitionedPopins) || - (!partitioned_popin_opener_ && !partitioned_popin_opener_properties_)); - - // We must check local data and not `partitioned_popin_opener_` as it could - // go away before this popin closes. - return !!partitioned_popin_opener_properties_; -} - -const PartitionedPopinOpenerProperties& -WebContentsImpl::GetPartitionedPopinOpenerProperties() const { - // This function is only usable if we are in a popin. - CHECK(IsPartitionedPopin()); - - return *partitioned_popin_opener_properties_; -} - -RenderFrameHostImpl* WebContentsImpl::GetPartitionedPopinOpener( - base::PassKey) const { - // A popin cannot open a popin so at most one could be set at a time. - CHECK(!partitioned_popin_opener_ || !opened_partitioned_popin_); - - // The feature must be enabled if the popin opener is set. - CHECK(base::FeatureList::IsEnabled(blink::features::kPartitionedPopins) || - !partitioned_popin_opener_); - - return partitioned_popin_opener_.get(); -} - -void WebContentsImpl::ClearPartitionedPopinOpenerForTesting() { - partitioned_popin_opener_.reset(); -} - -WebContents* WebContentsImpl::GetOpenedPartitionedPopin() const { - // A popin cannot open a popin so at most one could be set at a time. - CHECK(!IsPartitionedPopin() || !opened_partitioned_popin_); - - // The feature must be enabled if a popin was opened. - CHECK(base::FeatureList::IsEnabled(blink::features::kPartitionedPopins) || - !opened_partitioned_popin_); - - return opened_partitioned_popin_.get(); -} - -GURL WebContentsImpl::GetPartitionedPopinEmbedderOrigin( - base::PassKey) const { - return GetPartitionedPopinEmbedderOriginImpl(); -} - -GURL WebContentsImpl::GetPartitionedPopinEmbedderOriginForTesting() const { - return GetPartitionedPopinEmbedderOriginImpl(); -} - -GURL WebContentsImpl::GetPartitionedPopinEmbedderOriginImpl() const { - // This should only be checked for popins. - CHECK(IsPartitionedPopin()); - - // If the opener is still around and has not navigated then we want to use the - // embedder origin it would have used for its own iframe. - if (partitioned_popin_opener_ && - partitioned_popin_opener_->GetMainFrame()->GetLastCommittedOrigin() == - partitioned_popin_opener_properties_->top_frame_origin) { - return PermissionUtil::GetLastCommittedOriginAsURL( - partitioned_popin_opener_->GetMainFrame()); - } - // If we end up here there was a race condition between a permissions check - // and this popin being closed or navigated, so we should fallback to using - // the origin we partitioned by. - return partitioned_popin_opener_properties_->top_frame_origin.GetURL(); -} - WindowOpenDisposition WebContentsImpl::GetOriginalWindowOpenDisposition() const { return original_window_open_disposition_; @@ -2590,7 +2516,13 @@ SiteInstanceImpl* WebContentsImpl::GetSiteInstance() { } bool WebContentsImpl::IsLoading() { - return primary_frame_tree_.IsLoadingIncludingInnerFrameTrees(); + return primary_frame_tree_.IsLoadingIncludingInnerFrameTrees( + /*exclude_ad_subframes=*/false); +} + +bool WebContentsImpl::IsLoadingExcludingAdSubframes() const { + return primary_frame_tree_.IsLoadingIncludingInnerFrameTrees( + /*exclude_ad_subframes=*/true); } double WebContentsImpl::GetLoadProgress() { @@ -3988,6 +3920,19 @@ void WebContentsImpl::OnWebPreferencesChanged() { } } } + + const bool enable_touchpad_overscroll_history_navigation_changed = + (enable_touchpad_overscroll_history_navigation_ != + web_preferences_->enable_touchpad_overscroll_history_navigation); + enable_touchpad_overscroll_history_navigation_ = + web_preferences_->enable_touchpad_overscroll_history_navigation; + if (enable_touchpad_overscroll_history_navigation_changed) { + if (auto* rwhv = GetRenderWidgetHostView()) { + static_cast(rwhv) + ->SetTouchpadOverscrollHistoryNavigation( + enable_touchpad_overscroll_history_navigation_); + } + } #endif // Update inner WebContents. @@ -4822,6 +4767,7 @@ void WebContentsImpl::FullscreenStateChanged( } } +#if !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_IOS) bool WebContentsImpl::CanUseWindowingControls( RenderFrameHostImpl* requesting_frame) { return GetDelegate() && @@ -4848,6 +4794,7 @@ void WebContentsImpl::Restore() { } GetDelegate()->RestoreFromWebAPI(); } +#endif // !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_IOS) // TODO(laurila, crbug.com/1466855): Map into new `ui::DisplayState` enum // instead of `ui::mojom::WindowShowState`. @@ -4939,6 +4886,13 @@ void WebContentsImpl::UpdateVisibilityAndNotifyPageAndView( const bool hide_or_reveal = (visibility_ == Visibility::HIDDEN) != (new_visibility == Visibility::HIDDEN); + if (new_visibility != visibility_ || + (new_visibility == Visibility::VISIBLE && !did_first_set_visible_)) { + SCOPED_UMA_HISTOGRAM_TIMER("WebContentsObserver.OnVisibilityWillChange"); + observers_.NotifyObservers(&WebContentsObserver::OnVisibilityWillChange, + new_visibility); + } + // Send ax modes to renderers before they start painting if they are being // revealed. if (!is_never_composited_ && hide_or_reveal && @@ -5003,25 +4957,19 @@ void WebContentsImpl::UpdateVisibilityAndNotifyPageAndView( SetVisibilityForChildViews(view_is_visible); - // Make sure to call SetVisibilityAndNotifyObservers(VISIBLE) before notifying - // the CrossProcessFrameConnector. - if (new_visibility == Visibility::VISIBLE) { - if (is_activity) { - last_active_time_ticks_ = base::TimeTicks::Now(); - last_active_time_ = base::Time::Now(); - } - SetVisibilityAndNotifyObservers(new_visibility); - } - if (page_visibility == PageVisibilityState::kHidden) { // Similar to when showing the page, we only hide the page after // hiding the individual RenderWidgets. ForEachRenderViewHost(view_mask, update_frame_tree_visibility); } - if (new_visibility != Visibility::VISIBLE) { - SetVisibilityAndNotifyObservers(new_visibility); + // Make sure to call SetVisibilityAndNotifyObservers(VISIBLE) before notifying + // the CrossProcessFrameConnector. + if (is_activity && new_visibility == Visibility::VISIBLE) { + last_active_time_ticks_ = base::TimeTicks::Now(); + last_active_time_ = base::Time::Now(); } + SetVisibilityAndNotifyObservers(new_visibility); if (base::FeatureList::IsEnabled(kUpdateInnerWebContentsVisibility)) { // Inner WebContents are skipped in ForEachRenderViewHost() above, which @@ -5326,8 +5274,6 @@ FrameTree* WebContentsImpl::CreateNewWindow( } web_contents_impl->is_popup_ = params.disposition == WindowOpenDisposition::NEW_POPUP; - SetPartitionedPopinOpenerOnNewWindowIfNeeded(web_contents_impl, params, - opener); return &web_contents_impl->GetPrimaryFrameTree(); } @@ -5428,8 +5374,6 @@ FrameTree* WebContentsImpl::CreateNewWindow( auto* new_contents_impl = new_contents.get(); new_contents_impl->is_popup_ = params.disposition == WindowOpenDisposition::NEW_POPUP; - SetPartitionedPopinOpenerOnNewWindowIfNeeded(new_contents_impl, params, - opener); // Sets the newly created WebContents WindowOpenDisposition. new_contents_impl->original_window_open_disposition_ = params.disposition; @@ -7644,6 +7588,36 @@ void WebContentsImpl::NotifyNavigationStateChangedFromController( NotifyNavigationStateChanged(changed_flags); } +#if BUILDFLAG(IS_ANDROID) + +scoped_refptr +WebContentsImpl::GetRasterContextProvider() { + auto window = GetTopLevelNativeWindow(); + if (!window) { + return nullptr; + } + + auto* compositor = static_cast(window->GetCompositor()); + if (!compositor) { + return nullptr; + } + return compositor->GetRasterContextProvider(); +} + +gfx::ColorSpace WebContentsImpl::GetOutputColorSpace( + gfx::ContentColorUsage color_usage, + bool needs_alpha) { + auto window = GetTopLevelNativeWindow(); + if (!window) { + return gfx::ColorSpace(); + } + return window->GetDisplayWithWindowColorSpace() + .GetColorSpaces() + .GetOutputColorSpace(color_usage, needs_alpha); +} + +#endif // BUILDFLAG(IS_ANDROID) + input::TouchEmulator* WebContentsImpl::GetTouchEmulator( bool create_if_necessary) { CHECK(rwh_input_event_router_); @@ -8211,6 +8185,10 @@ void WebContentsImpl::EnumerateDirectory( // Do not allow background tab to open file chooser. return; } + if (!delegate_->IsContentsActive(this)) { + // Do not allow inactive tabs to open file chooser. + return; + } if (active_file_chooser_) { // Only allow one active file chooser at one time. return; @@ -9783,6 +9761,17 @@ bool WebContentsImpl::MaybeCopyContentAreaAsBitmap( return GetDelegate()->MaybeCopyContentAreaAsBitmap(std::move(callback)); } +#if BUILDFLAG(IS_ANDROID) +bool WebContentsImpl::MaybeCopyContentAreaAsHardwareBuffer( + HardwareBufferResultCallback callback) { + if (!GetDelegate()) { + return false; + } + return GetDelegate()->MaybeCopyContentAreaAsHardwareBuffer( + std::move(callback)); +} +#endif // BUILDFLAG(IS_ANDROID) + bool WebContentsImpl::SupportsForwardTransitionAnimation() { #if BUILDFLAG(IS_ANDROID) return supports_forward_transition_animation_; @@ -10105,8 +10094,7 @@ void WebContentsImpl::SetFocusedFrame(FrameTreeNode* node, CloseListenerManager::DidChangeFocusedFrame(this); } -FrameTree* WebContentsImpl::GetOwnedPictureInPictureFrameTree() { -#if !BUILDFLAG(IS_ANDROID) +FrameTree* WebContentsImpl::GetOwnedDocumentPictureInPictureFrameTree() { if (has_picture_in_picture_document_) { WebContents* picture_in_picture_web_contents = PictureInPictureWindowController:: @@ -10117,22 +10105,23 @@ FrameTree* WebContentsImpl::GetOwnedPictureInPictureFrameTree() { ->GetPrimaryFrameTree()); } } -#endif // !BUILDFLAG(IS_ANDROID) return nullptr; } -FrameTree* WebContentsImpl::GetPictureInPictureOpenerFrameTree() { -#if !BUILDFLAG(IS_ANDROID) +FrameTree* WebContentsImpl::GetDocumentPictureInPictureOpenerFrameTree() { if (picture_in_picture_opener_) { return &(static_cast(picture_in_picture_opener_.get()) ->GetPrimaryFrameTree()); } -#endif // !BUILDFLAG(IS_ANDROID) return nullptr; } +WebContents* WebContentsImpl::GetDocumentPictureInPictureOpener() { + return picture_in_picture_opener_.get(); +} + void WebContentsImpl::DidCallFocus() { OPTIONAL_TRACE_EVENT0("content", "WebContentsImpl::DidCallFocus"); // Any explicit focusing of another window while this WebContents is in @@ -10180,8 +10169,7 @@ void WebContentsImpl::OnFocusedElementChangedInFrame( bounds_in_screen); FocusedNodeDetails details = {frame->has_focused_editable_element(), - bounds_in_screen, bounds_in_root_view, - focus_type}; + bounds_in_screen, focus_type}; BrowserAccessibilityStateImpl::GetInstance()->OnFocusChangedInPage(details); observers_.NotifyObservers(&WebContentsObserver::OnFocusChangedInPage, details); @@ -10767,35 +10755,17 @@ WebContentsImpl::GetFaviconURLs() { return GetPrimaryMainFrame()->FaviconURLs(); } -// The Mac and iOS implementations of the next two methods are in -// web_contents_impl_mac.mm and web_contents_impl_ios.mm. -#if !BUILDFLAG(IS_MAC) && !BUILDFLAG(IS_IOS) - void WebContentsImpl::Resize(const gfx::Rect& new_bounds) { OPTIONAL_TRACE_EVENT0("content", "WebContentsImpl::Resize"); -#if defined(USE_AURA) - aura::Window* window = GetNativeView(); - window->SetBounds(gfx::Rect(window->bounds().origin(), new_bounds.size())); -#elif BUILDFLAG(IS_ANDROID) - content::RenderWidgetHostView* view = GetRenderWidgetHostView(); - if (view) { - view->SetBounds(new_bounds); + if (view_) { + view_->Resize(new_bounds); } -#endif } gfx::Size WebContentsImpl::GetSize() { -#if defined(USE_AURA) - aura::Window* window = GetNativeView(); - return window->bounds().size(); -#elif BUILDFLAG(IS_ANDROID) - ui::ViewAndroid* view_android = GetNativeView(); - return view_android->GetSizeDIPs(); -#endif + return view_ ? view_->GetSize() : gfx::Size(); } -#endif // !BUILDFLAG(IS_MAC) && !BUILDFLAG(IS_IOS) - gfx::Rect WebContentsImpl::GetWindowsControlsOverlayRect() const { return window_controls_overlay_rect_; } @@ -12162,7 +12132,8 @@ std::unique_ptr WebContentsImpl::StartPrerendering( std::move(prerender_navigation_handle_callback), base::WrapRefCounted( static_cast(preload_pipeline_info.get())), - allow_reuse); + allow_reuse, + /*form_submission=*/false); #if BUILDFLAG(IS_ANDROID) attributes.additional_headers = std::move(additional_headers); #else @@ -12376,29 +12347,4 @@ void WebContentsImpl::WarmUpAndroidSpareRenderer() { } } -void WebContentsImpl::SetPartitionedPopinOpenerOnNewWindowIfNeeded( - WebContentsImpl* new_window, - const mojom::CreateNewWindowParams& params, - RenderFrameHostImpl* opener) { - // We should not take action if the feature is disabled. - if (!base::FeatureList::IsEnabled(blink::features::kPartitionedPopins)) { - return; - } - - // All popins should be counted as popups to ensure proper UX treatment. - if (!params.features->is_partitioned_popin || !new_window->is_popup_) { - return; - } - - PartitionedPopinsController::CreateForWebContents( - static_cast(opener->delegate())); - new_window->partitioned_popin_opener_ = opener->GetWeakPtr(); - new_window->partitioned_popin_opener_properties_ = - PartitionedPopinOpenerProperties( - opener->GetMainFrame()->GetLastCommittedOrigin(), - opener->ComputeSiteForCookies(), - opener->GetStorageKey().ancestor_chain_bit()); - opened_partitioned_popin_ = new_window->GetWeakPtr(); -} - } // namespace content diff --git a/tools/under-control/src/content/child/runtime_features.cc b/tools/under-control/src/content/child/runtime_features.cc index 49f75c34..ee190396 100755 --- a/tools/under-control/src/content/child/runtime_features.cc +++ b/tools/under-control/src/content/child/runtime_features.cc @@ -191,8 +191,6 @@ void SetRuntimeFeaturesFromChromiumFeatures() { raw_ref(features::kEnableAccessibilityAriaVirtualContent)}, {wf::EnableAccessibilityUseAXPositionForDocumentMarkers, raw_ref(features::kUseAXPositionForDocumentMarkers)}, - {wf::EnableAOMAriaRelationshipProperties, - raw_ref(features::kEnableAriaElementReflection)}, #if BUILDFLAG(IS_ANDROID) {wf::EnableAudioOutputDevices, raw_ref(features::kAAudioPerStreamDeviceSelection)}, @@ -361,6 +359,8 @@ void SetRuntimeFeaturesFromChromiumFeatures() { raw_ref(network::features::kCompressionDictionaryTransport)}, {"CookieDeprecationFacilitatedTesting", raw_ref(features::kCookieDeprecationFacilitatedTesting)}, + {"CookieStoreAPIMaxAge", + raw_ref(blink::features::kCookieStoreAPIMaxAge)}, {"DocumentPolicyIncludeJSCallStacksInCrashReports", raw_ref(blink::features:: kDocumentPolicyIncludeJSCallStacksInCrashReports), @@ -375,6 +375,8 @@ void SetRuntimeFeaturesFromChromiumFeatures() { {"FledgeBiddingAndAuctionServerAPI", raw_ref(blink::features::kFledgeBiddingAndAuctionServer), kDefault}, {"FontSrcLocalMatching", raw_ref(features::kFontSrcLocalMatching)}, + {"HstsTopLevelNavigationsOnly", + raw_ref(net::features::kHstsTopLevelNavigationsOnly)}, {"MachineLearningNeuralNetwork", raw_ref(webnn::mojom::features::kWebMachineLearningNeuralNetwork), kSetOnlyIfOverridden}, @@ -384,8 +386,6 @@ void SetRuntimeFeaturesFromChromiumFeatures() { {"RelatedWebsitePartitionAPI", raw_ref(net::features::kRelatedWebsitePartitionAPI)}, {"SerialPortConnected", raw_ref(features::kSerialPortConnected)}, - {"SignatureBasedIntegrity", - raw_ref(network::features::kSRIMessageSignatureEnforcement)}, #if BUILDFLAG(IS_MAC) {"SystemDefaultAccentColors", raw_ref(features::kUseSystemDefaultAccentColors)}, 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 ce566b12..a8ea6bdd 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 @@ -13,6 +13,7 @@ #include "base/feature_list.h" #include "base/files/file_path.h" #include "base/functional/callback_helpers.h" +#include "base/memory/safe_ref.h" #include "base/no_destructor.h" #include "base/notimplemented.h" #include "base/notreached.h" @@ -26,6 +27,7 @@ #include "components/language_detection/content/common/language_detection.mojom.h" #include "components/language_detection/core/browser/language_detection_model_provider.h" #include "content/browser/ai/echo_ai_manager_impl.h" +#include "content/browser/cpu_performance/cpu_performance.h" #include "content/browser/renderer_host/render_frame_host_impl.h" #include "content/browser/webauth/default_authenticator_request_client_delegate.h" #include "content/public/browser/anchor_element_preconnect_delegate.h" @@ -413,7 +415,7 @@ bool ContentBrowserClient::ShouldUrlUseApplicationIsolationLevel( } #if !BUILDFLAG(IS_ANDROID) -bool ContentBrowserClient::IsInitialWebUIScheme(const GURL& url) { +bool ContentBrowserClient::IsInitialWebUIURL(const GURL& url) { return false; } #endif // !BUILDFLAG(IS_ANDROID) @@ -1627,10 +1629,12 @@ bool ContentBrowserClient::IsJitDisabledForSite(BrowserContext* browser_context, return false; } -bool ContentBrowserClient::AreV8OptimizationsDisabledForSite( +bool ContentBrowserClient::AreV8OptimizationsEnabledForSite( BrowserContext* browser_context, + const std::optional>& + process_selection_user_data, const GURL& site_url) { - return false; + return true; } bool ContentBrowserClient::DisallowV8FeatureFlagOverridesForSite( @@ -1859,11 +1863,6 @@ void ContentBrowserClient::PreferenceRankVideoDeviceInfos( BrowserContext* browser_context, blink::WebMediaDeviceInfoArray& infos) {} -network::mojom::IpProtectionProxyBypassPolicy -ContentBrowserClient::GetIpProtectionProxyBypassPolicy() { - return network::mojom::IpProtectionProxyBypassPolicy::kNone; -} - void ContentBrowserClient::MaybePrewarmHttpDiskCache( BrowserContext& browser_context, const std::optional& initiator_origin, @@ -2009,12 +2008,6 @@ ContentBrowserClient::GetClipboardTypesIfPolicyApplied( return std::nullopt; } -bool ContentBrowserClient::ShouldEnableCanvasNoise( - BrowserContext* browser_context, - const GURL& origin) { - return false; -} - bool ContentBrowserClient::UsePrefetchPrerenderIntegration() { return false; } @@ -2038,4 +2031,15 @@ bool ContentBrowserClient::ShouldAnimateBackForwardTransitions() { #endif } +blink::mojom::PerformanceTier ContentBrowserClient::GetCpuPerformanceTier() { + return content::cpu_performance::GetTier(); +} + +void ContentBrowserClient::RecordAssistedLogin(AssistedLoginType login_type) {} + +std::optional ContentBrowserClient::GetOverrideValueForStaticStorageQuota( + BrowserContext* browser_context) { + return std::nullopt; +} + } // namespace content diff --git a/tools/under-control/src/extensions/common/api/app_runtime.idl b/tools/under-control/src/extensions/common/api/app_runtime.idl deleted file mode 100755 index cdec73e7..00000000 --- a/tools/under-control/src/extensions/common/api/app_runtime.idl +++ /dev/null @@ -1,129 +0,0 @@ -// Copyright 2014 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.app.runtime API to manage the app lifecycle. -// The app runtime manages app installation, controls the event page, and can -// shut down the app at anytime. -namespace app.runtime { - - dictionary LaunchItem { - // Entry for the item. - [instanceOf=Entry] object entry; - - // The MIME type of the file. - DOMString? type; - }; - - // Enumeration of app launch sources. - // This should be kept in sync with AppLaunchSource in - // components/services/app_service/public/mojom/types.mojom, and - // GetLaunchSourceEnum() in - // extensions/browser/api/app_runtime/app_runtime_api.cc. - // Note the enumeration is used in UMA histogram so entries - // should not be re-ordered or removed. - enum LaunchSource { - untracked, - app_launcher, - new_tab_page, - reload, - restart, - load_and_launch, - command_line, - file_handler, - url_handler, - system_tray, - about_page, - keyboard, - extensions_page, - management_api, - ephemeral_app, - background, - kiosk, - chrome_internal, - test, - installed_notification, - context_menu, - arc, - intent_url, - app_home_page, - focus_mode, - sparky - }; - - // Optional data for the launch. Either items, or - // the pair (url, referrerUrl) can be present for any given - // launch. - [inline_doc] dictionary LaunchData { - // The ID of the file or URL handler that the app is being invoked with. - // Handler IDs are the top-level keys in the file_handlers - // and/or url_handlers dictionaries in the manifest. - DOMString? id; - - // The file entries for the onLaunched event triggered by a - // matching file handler in the file_handlers manifest key. - LaunchItem[]? items; - - // The URL for the onLaunched event triggered by a matching - // URL handler in the url_handlers manifest key. - DOMString? url; - - // The referrer URL for the onLaunched event triggered by a - // matching URL handler in the url_handlers manifest key. - DOMString? referrerUrl; - - // Whether the app is launched in a Chrome OS Demo Mode session. Used for - // default-installed Demo Mode Chrome apps. - [nodoc] boolean? isDemoSession; - - // Whether the app is being launched in a Chrome OS - // kiosk session. - boolean? isKioskSession; - - // Whether the app is being launched in a Chrome OS - // public session. - boolean? isPublicSession; - - // Where the app is launched from. - LaunchSource? source; - }; - - // This object specifies details and operations to perform on the embedding - // request. The app to be embedded can make a decision on whether or not to - // allow the embedding and what to embed based on the embedder making the - // request. - dictionary EmbedRequest { - DOMString embedderId; - - // Optional developer specified data that the app to be embedded can use - // when making an embedding decision. - any? data; - - // Allows embedderId to embed this app in an <appview> - // element. The url specifies the content to embed. - [nocompile] static void allow(DOMString url); - - // Prevents embedderId from embedding this app in an - // <appview> element. - [nocompile] static void deny(); - }; - - interface Events { - // Fired when an embedding app requests to embed this app. This event is - // only available on dev channel with the flag --enable-app-view. - static void onEmbedRequested(EmbedRequest request); - - // Fired when an app is launched from the launcher. - static void onLaunched(optional LaunchData launchData); - - // Fired at Chrome startup to apps that were running when Chrome last shut - // down, or when apps have been requested to restart from their previous - // state for other reasons (e.g. when the user revokes access to an app's - // retained files the runtime will restart the app). In these situations if - // apps do not have an onRestarted handler they will be sent - // an onLaunched event instead. - static void onRestarted(); - }; -}; diff --git a/tools/under-control/src/extensions/common/api/automation.idl b/tools/under-control/src/extensions/common/api/automation.idl index ea918441..90331fcf 100755 --- a/tools/under-control/src/extensions/common/api/automation.idl +++ b/tools/under-control/src/extensions/common/api/automation.idl @@ -35,6 +35,7 @@ clicked, collapsed, controlsChanged, + defaultActionVerbChanged, detailsChanged, describedByChanged, descriptionChanged, @@ -408,6 +409,7 @@ loadInlineTextBoxes, longClick, replaceSelectedText, + requestLayoutBasedAction, resumeMedia, scrollBackward, scrollDown, @@ -544,6 +546,8 @@ check, click, clickAncestor, + clickInHitTest, + clickNotInHitTest, jump, open, press, diff --git a/tools/under-control/src/extensions/common/api/bluetooth_low_energy.idl b/tools/under-control/src/extensions/common/api/bluetooth_low_energy.idl deleted file mode 100755 index 9556cecf..00000000 --- a/tools/under-control/src/extensions/common/api/bluetooth_low_energy.idl +++ /dev/null @@ -1,603 +0,0 @@ -// Copyright 2014 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// The chrome.bluetoothLowEnergy API is used to communicate with -// Bluetooth Smart (Low Energy) devices using the -// -// Generic Attribute Profile (GATT). -namespace bluetoothLowEnergy { - // Values representing the possible properties of a characteristic. - // Characteristic permissions are inferred from these properties. - // Please see the Bluetooth 4.x spec to see the meaning of each individual - // property. - enum CharacteristicProperty { - broadcast, read, writeWithoutResponse, write, notify, indicate, - authenticatedSignedWrites, extendedProperties, reliableWrite, - writableAuxiliaries, encryptRead, encryptWrite, encryptAuthenticatedRead, - encryptAuthenticatedWrite - }; - - // Values representing possible permissions for a descriptor. - // Please see the Bluetooth 4.x spec to see the meaning of each individual - // permission. - enum DescriptorPermission { - read, write, encryptedRead, encryptedWrite, encryptedAuthenticatedRead, - encryptedAuthenticatedWrite - }; - - // Type of advertisement. If 'broadcast' is chosen, the sent advertisement - // type will be ADV_NONCONN_IND and the device will broadcast with a random - // MAC Address. If set to 'peripheral', the advertisement type will be - // ADV_IND or ADV_SCAN_IND and the device will broadcast with real Bluetooth - // Adapter's MAC Address. - enum AdvertisementType {broadcast, peripheral}; - - // Represents a bluetooth central device that is connected to the local GATT - // server. - dictionary Device { - // The address of the device, in the format 'XX:XX:XX:XX:XX:XX'. - DOMString address; - - // The human-readable name of the device. - DOMString? name; - - // The class of the device, a bit-field defined by - // http://www.bluetooth.org/en-us/specification/assigned-numbers/baseband. - long? deviceClass; - }; - - // Represents a peripheral's Bluetooth GATT Service, a collection of - // characteristics and relationships to other services that encapsulate - // the behavior of part of a device. - dictionary Service { - // The UUID of the service, e.g. 0000180d-0000-1000-8000-00805f9b34fb. - DOMString uuid; - - // Indicates whether the type of this service is primary or secondary. - boolean isPrimary; - - // Returns the identifier assigned to this service. Use the instance ID to - // distinguish between services from a peripheral with the same UUID and - // to make function calls that take in a service identifier. Present, if - // this instance represents a remote service. - DOMString? instanceId; - - // The device address of the remote peripheral that the GATT service belongs - // to. Present, if this instance represents a remote service. - DOMString? deviceAddress; - }; - - // Represents a GATT characteristic, which is a basic data element that - // provides further information about a peripheral's service. - dictionary Characteristic { - // The UUID of the characteristic, e.g. - // 00002a37-0000-1000-8000-00805f9b34fb. - DOMString uuid; - - // The GATT service this characteristic belongs to. - Service? service; - - // The properties of this characteristic. - CharacteristicProperty[] properties; - - // Returns the identifier assigned to this characteristic. Use the instance - // ID to distinguish between characteristics from a peripheral with the same - // UUID and to make function calls that take in a characteristic identifier. - // Present, if this instance represents a remote characteristic. - DOMString? instanceId; - - // The currently cached characteristic value. This value gets updated when - // the value of the characteristic is read or updated via a notification - // or indication. - ArrayBuffer? value; - }; - - // Represents a GATT characteristic descriptor, which provides further - // information about a characteristic's value. - dictionary Descriptor { - // The UUID of the characteristic descriptor, e.g. - // 00002902-0000-1000-8000-00805f9b34fb. - DOMString uuid; - - // The GATT characteristic this descriptor belongs to. - Characteristic? characteristic; - - // The permissions of this descriptor. - DescriptorPermission[] permissions; - - // Returns the identifier assigned to this descriptor. Use the instance ID - // to distinguish between descriptors from a peripheral with the same UUID - // and to make function calls that take in a descriptor identifier. Present, - // if this instance represents a remote characteristic. - DOMString? instanceId; - - // The currently cached descriptor value. This value gets updated when - // the value of the descriptor is read. - ArrayBuffer? value; - }; - - // The connection properties specified during a call to $(ref:connect). - dictionary ConnectProperties { - // Flag indicating whether a connection to the device is left open when the - // event page of the application is unloaded (see Manage App - // Lifecycle). The default value is false. - boolean persistent; - }; - - // Optional characteristic notification session properties specified during a - // call to $(ref:startCharacteristicNotifications). - dictionary NotificationProperties { - // Flag indicating whether the app should receive notifications when the - // event page of the application is unloaded (see Manage App - // Lifecycle). The default value is false. - boolean persistent; - }; - - // Represents an entry of the "Manufacturer Specific Data" field of Bluetooth - // LE advertisement data. - dictionary ManufacturerData { - long id; - long[] data; - }; - - // Represents an entry of the "Service Data" field of Bluetooth LE advertisement - // data. - dictionary ServiceData { - DOMString uuid; - long[] data; - }; - - // Represents a Bluetooth LE advertisement instance. - dictionary Advertisement { - // Type of advertisement. - AdvertisementType type; - - // List of UUIDs to include in the "Service UUIDs" field of the Advertising - // Data. These UUIDs can be of the 16bit, 32bit or 128 formats. - DOMString[]? serviceUuids; - - // List of manufacturer specific data to be included in "Manufacturer Specific - // Data" fields of the advertising data. - ManufacturerData[]? manufacturerData; - - // List of UUIDs to include in the "Solicit UUIDs" field of the Advertising - // Data. These UUIDs can be of the 16bit, 32bit or 128 formats. - DOMString[]? solicitUuids; - - // List of service data to be included in "Service Data" fields of the advertising - // data. - ServiceData[]? serviceData; - }; - - // Represents a an attribute read/write request. - dictionary Request { - // Unique ID for this request. Use this ID when responding to this request. - long requestId; - // Device that send this request. - Device device; - // Value to write (if this is a write request). - ArrayBuffer? value; - }; - - // Represents a response to an attribute read/write request. - dictionary Response { - // Id of the request this is a response to. - long requestId; - // If this is an error response, this should be true. - boolean isError; - // Response value. Write requests and error responses will ignore this - // parameter. - ArrayBuffer? value; - }; - - // Represents a notification to be sent to a remote device. - dictionary Notification { - // New value of the characteristic. - ArrayBuffer value; - // Optional flag for sending an indication instead of a notification. - boolean? shouldIndicate; - }; - - callback CharacteristicCallback = void(Characteristic result); - callback CreateCharacteristicCallback = void(DOMString characteristicId); - callback CharacteristicsCallback = void(Characteristic[] result); - callback DescriptorCallback = void(Descriptor result); - callback CreateDescriptorCallback = void(DOMString descriptorId); - callback DescriptorsCallback = void(Descriptor[] result); - callback ResultCallback = void(); - callback ServiceCallback = void(Service result); - callback CreateServiceCallback = void(DOMString serviceId); - callback ServicesCallback = void(Service[] result); - callback RegisterAdvertisementCallback = void (long advertisementId); - - // These functions all report failures via chrome.runtime.lastError. - interface Functions { - // Establishes a connection between the application and the device with the - // given address. A device may be already connected and its GATT services - // available without calling connect, however, an app that - // wants to access GATT services of a device should call this function to - // make sure that a connection to the device is maintained. If the device - // is not connected, all GATT services of the device will be discovered - // after a successful call to connect. - // |deviceAddress|: The Bluetooth address of the remote device to which a - // GATT connection should be opened. - // |properties|: Connection properties (optional). - // |callback|: Called when the connect request has completed. - static void connect( - DOMString deviceAddress, - optional ConnectProperties properties, - ResultCallback callback); - - // Closes the app's connection to the device with the given address. Note - // that this will not always destroy the physical link itself, since there - // may be other apps with open connections. - // |deviceAddress|: The Bluetooth address of the remote device. - // |callback|: Called when the disconnect request has completed. - static void disconnect( - DOMString deviceAddress, - optional ResultCallback callback); - - // Get the GATT service with the given instance ID. - // |serviceId|: The instance ID of the requested GATT service. - // |callback|: Called with the requested Service object. - static void getService( - DOMString serviceId, - ServiceCallback callback); - - // Create a locally hosted GATT service. This service can be registered - // to be available on a local GATT server. - // This function is only available if the app has both the - // bluetooth:low_energy and the bluetooth:peripheral permissions set to - // true. The peripheral permission may not be available to all apps. - // |service|: The service to create. - // |callback|: Called with the created services's unique ID. - static void createService( - Service service, - CreateServiceCallback callback); - - // Get all the GATT services that were discovered on the remote device with - // the given device address. - // - // Note: If service discovery is not yet complete on the device, - // this API will return a subset (possibly empty) of services. A work around - // is to add a time based delay and/or call repeatedly until the expected - // number of services is returned. - // - // |deviceAddress|: The Bluetooth address of the remote device whose GATT - // services should be returned. - // |callback|: Called with the list of requested Service objects. - static void getServices( - DOMString deviceAddress, - ServicesCallback callback); - - // Get the GATT characteristic with the given instance ID that belongs to - // the given GATT service, if the characteristic exists. - // |characteristicId|: The instance ID of the requested GATT - // characteristic. - // |callback|: Called with the requested Characteristic object. - static void getCharacteristic( - DOMString characteristicId, - CharacteristicCallback callback); - - // Create a locally hosted GATT characteristic. This characteristic must - // be hosted under a valid service. If the service ID is not valid, the - // lastError will be set. - // This function is only available if the app has both the - // bluetooth:low_energy and the bluetooth:peripheral permissions set to - // true. The peripheral permission may not be available to all apps. - // |characteristic|: The characteristic to create. - // |serviceId|: ID of the service to create this characteristic for. - // |callback|: Called with the created characteristic's unique ID. - static void createCharacteristic( - Characteristic characteristic, - DOMString serviceId, - CreateCharacteristicCallback callback); - - // Get a list of all discovered GATT characteristics that belong to the - // given service. - // |serviceId|: The instance ID of the GATT service whose characteristics - // should be returned. - // |callback|: Called with the list of characteristics that belong to the - // given service. - static void getCharacteristics( - DOMString serviceId, - CharacteristicsCallback callback); - - // Get a list of GATT services that are included by the given service. - // |serviceId|: The instance ID of the GATT service whose included - // services should be returned. - // |callback|: Called with the list of GATT services included from the - // given service. - static void getIncludedServices( - DOMString serviceId, - ServicesCallback callback); - - // Get the GATT characteristic descriptor with the given instance ID. - // |descriptorId|: The instance ID of the requested GATT characteristic - // descriptor. - // |callback|: Called with the requested Descriptor object. - static void getDescriptor( - DOMString descriptorId, - DescriptorCallback callback); - - // Create a locally hosted GATT descriptor. This descriptor must - // be hosted under a valid characteristic. If the characteristic ID is not - // valid, the lastError will be set. - // This function is only available if the app has both the - // bluetooth:low_energy and the bluetooth:peripheral permissions set to - // true. The peripheral permission may not be available to all apps. - // |descriptor|: The descriptor to create. - // |characteristicId|: ID of the characteristic to create this descriptor - // for. - // |callback|: Called with the created descriptor's unique ID. - static void createDescriptor( - Descriptor descriptor, - DOMString characteristicId, - CreateDescriptorCallback callback); - - // Get a list of GATT characteristic descriptors that belong to the given - // characteristic. - // |characteristicId|: The instance ID of the GATT characteristic whose - // descriptors should be returned. - // |callback|: Called with the list of descriptors that belong to the given - // characteristic. - static void getDescriptors( - DOMString characteristicId, - DescriptorsCallback callback); - - // Retrieve the value of a specified characteristic from a remote - // peripheral. - // |characteristicId|: The instance ID of the GATT characteristic whose - // value should be read from the remote device. - // |callback|: Called with the Characteristic object whose value was - // requested. The value field of the returned Characteristic - // object contains the result of the read request. - static void readCharacteristicValue( - DOMString characteristicId, - CharacteristicCallback callback); - - // Write the value of a specified characteristic from a remote peripheral. - // |characteristicId|: The instance ID of the GATT characteristic whose - // value should be written to. - // |value|: The value that should be sent to the remote characteristic as - // part of the write request. - // |callback|: Called when the write request has completed. - static void writeCharacteristicValue( - DOMString characteristicId, - ArrayBuffer value, - ResultCallback callback); - - // Enable value notifications/indications from the specified characteristic. - // Once enabled, an application can listen to notifications using the - // $(ref:onCharacteristicValueChanged) event. - // |characteristicId|: The instance ID of the GATT characteristic that - // notifications should be enabled on. - // |properties|: Notification session properties (optional). - // |callback|: Called when the request has completed. - static void startCharacteristicNotifications( - DOMString characteristicId, - optional NotificationProperties properties, - ResultCallback callback); - - // Disable value notifications/indications from the specified - // characteristic. After a successful call, the application will stop - // receiving notifications/indications from this characteristic. - // |characteristicId|: The instance ID of the GATT characteristic on which - // this app's notification session should be stopped. - // |callback|: Called when the request has completed (optional). - static void stopCharacteristicNotifications( - DOMString characteristicId, - optional ResultCallback callback); - - // Notify a remote device of a new value for a characteristic. If the - // shouldIndicate flag in the notification object is true, an indication - // will be sent instead of a notification. Note, the characteristic needs - // to correctly set the 'notify' or 'indicate' property during creation for - // this call to succeed. - // This function is only available if the app has both the - // bluetooth:low_energy and the bluetooth:peripheral permissions set to - // true. The peripheral permission may not be available to all apps. - // |characteristicId|: The characteristic to send the notication for. - // |notifcation|: The notification to send. - // |callback|: Callback called once the notification or indication has - // been sent successfully. - static void notifyCharacteristicValueChanged( - DOMString characteristicId, - Notification notification, - ResultCallback callback); - - // Retrieve the value of a specified characteristic descriptor from a remote - // peripheral. - // |descriptorId|: The instance ID of the GATT characteristic descriptor - // whose value should be read from the remote device. - // |callback|: Called with the Descriptor object whose value was requested. - // The value field of the returned Descriptor object contains - // the result of the read request. - static void readDescriptorValue( - DOMString descriptorId, - DescriptorCallback callback); - - // Write the value of a specified characteristic descriptor from a remote - // peripheral. - // |descriptorId|: The instance ID of the GATT characteristic descriptor - // whose value should be written to. - // |value|: The value that should be sent to the remote descriptor as part - // of the write request. - // |callback|: Called when the write request has completed. - static void writeDescriptorValue( - DOMString descriptorId, - ArrayBuffer value, - ResultCallback callback); - - // Register the given service with the local GATT server. If the service - // ID is invalid, the lastError will be set. - // This function is only available if the app has both the - // bluetooth:low_energy and the bluetooth:peripheral permissions set to - // true. The peripheral permission may not be available to all apps. - // |serviceId|: Unique ID of a created service. - // |callback|: Callback with the result of the register operation. - static void registerService( - DOMString serviceId, - ResultCallback callback); - - // Unregister the given service with the local GATT server. If the service - // ID is invalid, the lastError will be set. - // This function is only available if the app has both the - // bluetooth:low_energy and the bluetooth:peripheral permissions set to - // true. The peripheral permission may not be available to all apps. - // |serviceId|: Unique ID of a current registered service. - // |callback|: Callback with the result of the register operation. - static void unregisterService( - DOMString serviceId, - ResultCallback callback); - - // Remove the specified service, unregistering it if it was registered. - // If the service ID is invalid, the lastError will be set. - // This function is only available if the app has both the - // bluetooth:low_energy and the bluetooth:peripheral permissions set to - // true. The peripheral permission may not be available to all apps. - // |serviceId|: Unique ID of a current registered service. - // |callback|: Callback called once the service is removed. - static void removeService( - DOMString serviceId, - optional ResultCallback callback); - - // Create an advertisement and register it for advertising. To call this - // function, the app must have the bluetooth:low_energy and - // bluetooth:peripheral permissions set to true. Additionally this API - // is only available to auto launched apps in Kiosk Mode or by setting - // the '--enable-ble-advertising-in-apps' command-line switch. - // See https://developer.chrome.com/apps/manifest/bluetooth - // Note: On some hardware, central and peripheral modes at the same time is - // supported but on hardware that doesn't support this, making this call - // will switch the device to peripheral mode. In the case of hardware which - // does not support both central and peripheral mode, attempting to use the - // device in both modes will lead to undefined behavior or prevent other - // central-role applications from behaving correctly (including the - // discovery of Bluetooth Low Energy devices). - // |advertisement|: The advertisement to advertise. - // |callback|: Called once the registeration is done and we've started - // advertising. Returns the id of the created advertisement. - static void registerAdvertisement( - Advertisement advertisement, - RegisterAdvertisementCallback callback); - - // Unregisters an advertisement and stops its advertising. If the - // advertisement fails to unregister the only way to stop advertising - // might be to restart the device. - // |advertisementId|: Id of the advertisement to unregister. - // |callback|: Called once the advertisement is unregistered and is no - // longer being advertised. - static void unregisterAdvertisement( - long advertisementId, - ResultCallback callback); - - // Resets advertising on the current device. It will unregister and - // stop all existing advertisements. - // |callback|: Called once the advertisements are reset. - static void resetAdvertising(ResultCallback callback); - - // Set's the interval betweeen two consecutive advertisements. Note: - // This is a best effort. The actual interval may vary non-trivially - // from the requested intervals. On some hardware, there is a minimum - // interval of 100ms. The minimum and maximum values cannot exceed the - // the range allowed by the Bluetooth 4.2 specification. - // |minInterval|: Minimum interval between advertisments (in - // milliseconds). This cannot be lower than 20ms (as per the spec). - // |maxInterval|: Maximum interval between advertisments (in - // milliseconds). This cannot be more than 10240ms (as per the spec). - // |callback|: Called once the interval has been set. - static void setAdvertisingInterval( - long minInterval, - long maxInterval, - ResultCallback callback); - - // Sends a response for a characteristic or descriptor read/write - // request. - // This function is only available if the app has both the - // bluetooth:low_energy and the bluetooth:peripheral permissions set to - // true. The peripheral permission may not be available to all apps. - // |response|: The response to the request. - static void sendRequestResponse(Response response); - }; - - interface Events { - // Fired whan a new GATT service has been discovered on a remote device. - // |service|: The GATT service that was added. - static void onServiceAdded(Service service); - - // Fired when the state of a remote GATT service changes. This involves any - // characteristics and/or descriptors that get added or removed from the - // service, as well as "ServiceChanged" notifications from the remote - // device. - // |service|: The GATT service whose state has changed. - static void onServiceChanged(Service service); - - // Fired when a GATT service that was previously discovered on a remote - // device has been removed. - // |service|: The GATT service that was removed. - static void onServiceRemoved(Service service); - - // Fired when the value of a remote GATT characteristic changes, either as - // a result of a read request, or a value change notification/indication - // This event will only be sent if the app has enabled notifications by - // calling $(ref:startCharacteristicNotifications). - // |characteristic|: The GATT characteristic whose value has changed. - static void onCharacteristicValueChanged(Characteristic characteristic); - - // Fired when the value of a remote GATT characteristic descriptor changes, - // usually as a result of a read request. This event exists - // mostly for convenience and will always be sent after a successful - // call to $(ref:readDescriptorValue). - // |descriptor|: The GATT characteristic descriptor whose value has - // changed. - static void onDescriptorValueChanged(Descriptor descriptor); - - // Fired when a connected central device requests to read the value of a - // characteristic registered on the local GATT server. Not responding - // to this request for a long time may lead to a disconnection. - // This event is only available if the app has both the - // bluetooth:low_energy and the bluetooth:peripheral permissions set to - // true. The peripheral permission may not be available to all apps. - // |request|: Request data for this request. - // |characteristic|: The GATT characteristic whose value is requested. - static void onCharacteristicReadRequest( - Request request, DOMString characteristicId); - - // Fired when a connected central device requests to write the value of a - // characteristic registered on the local GATT server. Not responding - // to this request for a long time may lead to a disconnection. - // This event is only available if the app has both the - // bluetooth:low_energy and the bluetooth:peripheral permissions set to - // true. The peripheral permission may not be available to all apps. - // |request|: Request data for this request. - // |characteristic|: The GATT characteristic whose value is being written. - static void onCharacteristicWriteRequest( - Request request, DOMString characteristicId); - - // Fired when a connected central device requests to read the value of a - // descriptor registered on the local GATT server. Not responding to - // this request for a long time may lead to a disconnection. - // This event is only available if the app has both the - // bluetooth:low_energy and the bluetooth:peripheral permissions set to - // true. The peripheral permission may not be available to all apps. - // |request|: Request data for this request. - // |descriptor|: The GATT descriptor whose value is requested. - static void onDescriptorReadRequest( - Request request, DOMString descriptorId); - - // Fired when a connected central device requests to write the value of a - // descriptor registered on the local GATT server. Not responding to - // this request for a long time may lead to a disconnection. - // This event is only available if the app has both the - // bluetooth:low_energy and the bluetooth:peripheral permissions set to - // true. The peripheral permission may not be available to all apps. - // |request|: Request data for this request. - // |descriptor|: The GATT descriptor whose value is being written. - static void onDescriptorWriteRequest( - Request request, DOMString descriptorId); - }; -}; diff --git a/tools/under-control/src/extensions/common/api/bluetooth_socket.idl b/tools/under-control/src/extensions/common/api/bluetooth_socket.idl deleted file mode 100755 index e7e93aa0..00000000 --- a/tools/under-control/src/extensions/common/api/bluetooth_socket.idl +++ /dev/null @@ -1,326 +0,0 @@ -// Copyright 2014 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.bluetoothSocket API to send and receive data -// to Bluetooth devices using RFCOMM and L2CAP connections. -namespace bluetoothSocket { - // The socket properties specified in the $ref:create or $ref:update - // function. Each property is optional. If a property value is not specified, - // a default value is used when calling $ref:create, or the existing value is - // preserved when calling $ref:update. - dictionary SocketProperties { - // Flag indicating whether the socket is left open when the event page of - // the application is unloaded (see Manage App - // Lifecycle). The default value is false. When the - // application is loaded, any sockets previously opened with persistent=true - // can be fetched with $ref:getSockets. - boolean? persistent; - - // An application-defined string associated with the socket. - DOMString? name; - - // The size of the buffer used to receive data. The default value is 4096. - long? bufferSize; - }; - - // Result of create call. - dictionary CreateInfo { - // The ID of the newly created socket. Note that socket IDs created - // from this API are not compatible with socket IDs created from other APIs, - // such as the $(ref:sockets.tcp) API. - long socketId; - }; - - // Callback from the create method. - // |createInfo| : The result of the socket creation. - callback CreateCallback = void (CreateInfo createInfo); - - // Callback from the update method. - callback UpdateCallback = void (); - - // Callback from the setPaused method. - callback SetPausedCallback = void (); - - // Options that may be passed to the listenUsingRfcomm and - // listenUsingL2cap methods. Each property is optional with a - // default being used if not specified. - dictionary ListenOptions { - // The RFCOMM Channel used by listenUsingRfcomm. If specified, - // this channel must not be previously in use or the method call will fail. - // When not specified, an unused channel will be automatically allocated. - long? channel; - - // The L2CAP PSM used by listenUsingL2cap. If specified, this - // PSM must not be previously in use or the method call with fail. When - // not specified, an unused PSM will be automatically allocated. - long? psm; - - // Length of the socket's listen queue. The default value depends on the - // operating system's host subsystem. - long? backlog; - }; - - // Callback from the listenUsingRfcomm and - // listenUsingL2cap methods. - callback ListenCallback = void (); - - // Callback from the connect method. - callback ConnectCallback = void (); - - // Callback from the disconnect method. - callback DisconnectCallback = void (); - - // Callback from the close method. - callback CloseCallback = void (); - - // Callback from the send method. - // |bytesSent| : The number of bytes sent. - callback SendCallback = void (long bytesSent); - - // Result of the getInfo method. - dictionary SocketInfo { - // The socket identifier. - long socketId; - - // Flag indicating if the socket remains open when the event page of the - // application is unloaded (see SocketProperties.persistent). - // The default value is "false". - boolean persistent; - - // Application-defined string associated with the socket. - DOMString? name; - - // The size of the buffer used to receive data. If no buffer size has been - // specified explictly, the value is not provided. - long? bufferSize; - - // Flag indicating whether a connected socket blocks its peer from sending - // more data, or whether connection requests on a listening socket are - // dispatched through the onAccept event or queued up in the - // listen queue backlog. - // See setPaused. The default value is "false". - boolean paused; - - // Flag indicating whether the socket is connected to a remote peer. - boolean connected; - - // If the underlying socket is connected, contains the Bluetooth address of - // the device it is connected to. - DOMString? address; - - // If the underlying socket is connected, contains information about the - // service UUID it is connected to, otherwise if the underlying socket is - // listening, contains information about the service UUID it is listening - // on. - DOMString? uuid; - }; - - // Callback from the getInfo method. - // |socketInfo| : Object containing the socket information. - callback GetInfoCallback = void (SocketInfo socketInfo); - - // Callback from the getSockets method. - // |socketInfos| : Array of object containing socket information. - callback GetSocketsCallback = void (SocketInfo[] sockets); - - // Data from an onAccept event. - dictionary AcceptInfo { - // The server socket identifier. - long socketId; - - // The client socket identifier, i.e. the socket identifier of the newly - // established connection. This socket identifier should be used only with - // functions from the chrome.bluetoothSocket namespace. Note - // the client socket is initially paused and must be explictly un-paused by - // the application to start receiving data. - long clientSocketId; - }; - - enum AcceptError { - // A system error occurred and the connection may be unrecoverable. - system_error, - - // The socket is not listening. - not_listening - }; - - // Data from an onAcceptError event. - dictionary AcceptErrorInfo { - // The server socket identifier. - long socketId; - - // The error message. - DOMString errorMessage; - - // An error code indicating what went wrong. - AcceptError error; - }; - - // Data from an onReceive event. - dictionary ReceiveInfo { - // The socket identifier. - long socketId; - - // The data received, with a maxium size of bufferSize. - ArrayBuffer data; - }; - - enum ReceiveError { - // The connection was disconnected. - disconnected, - - // A system error occurred and the connection may be unrecoverable. - system_error, - - // The socket has not been connected. - not_connected - }; - - // Data from an onReceiveError event. - dictionary ReceiveErrorInfo { - // The socket identifier. - long socketId; - - // The error message. - DOMString errorMessage; - - // An error code indicating what went wrong. - ReceiveError error; - }; - - // These functions all report failures via chrome.runtime.lastError. - interface Functions { - // Creates a Bluetooth socket. - // |properties| : The socket properties (optional). - // |callback| : Called when the socket has been created. - static void create( - optional SocketProperties properties, - CreateCallback callback); - - // Updates the socket properties. - // |socketId| : The socket identifier. - // |properties| : The properties to update. - // |callback| : Called when the properties are updated. - static void update( - long socketId, - SocketProperties properties, - optional UpdateCallback callback); - - // Enables or disables a connected socket from receiving messages from its - // peer, or a listening socket from accepting new connections. The default - // value is "false". Pausing a connected socket is typically used by an - // application to throttle data sent by its peer. When a connected socket - // is paused, no onReceiveevent is raised. When a socket is - // connected and un-paused, onReceive events are raised again - // when messages are received. When a listening socket is paused, new - // connections are accepted until its backlog is full then additional - // connection requests are refused. onAccept events are raised - // only when the socket is un-paused. - static void setPaused( - long socketId, - boolean paused, - optional SetPausedCallback callback); - - // Listen for connections using the RFCOMM protocol. - // |socketId| : The socket identifier. - // |uuid| : Service UUID to listen on. - // |options| : Optional additional options for the service. - // |callback| : Called when listen operation completes. - static void listenUsingRfcomm( - long socketId, - DOMString uuid, - optional ListenOptions options, - ListenCallback callback); - - // Listen for connections using the L2CAP protocol. - // |socketId| : The socket identifier. - // |uuid| : Service UUID to listen on. - // |options| : Optional additional options for the service. - // |callback| : Called when listen operation completes. - static void listenUsingL2cap( - long socketId, - DOMString uuid, - optional ListenOptions options, - ListenCallback callback); - - // Connects the socket to a remote Bluetooth device. When the - // connect operation completes successfully, - // onReceive events are raised when data is received from the - // peer. If a network error occur while the runtime is receiving packets, - // a onReceiveError event is raised, at which point no more - // onReceive event will be raised for this socket until the - // setPaused(false) method is called. - // |socketId| : The socket identifier. - // |address| : The address of the Bluetooth device. - // |uuid| : The UUID of the service to connect to. - // |callback| : Called when the connect attempt is complete. - static void connect( - long socketId, - DOMString address, - DOMString uuid, - ConnectCallback callback); - - // Disconnects the socket. The socket identifier remains valid. - // |socketId| : The socket identifier. - // |callback| : Called when the disconnect attempt is complete. - static void disconnect( - long socketId, - optional DisconnectCallback callback); - - // Disconnects and destroys the socket. Each socket created should be - // closed after use. The socket id is no longer valid as soon at the - // function is called. However, the socket is guaranteed to be closed only - // when the callback is invoked. - // |socketId| : The socket identifier. - // |callback| : Called when the close operation completes. - static void close( - long socketId, - optional CloseCallback callback); - - // Sends data on the given Bluetooth socket. - // |socketId| : The socket identifier. - // |data| : The data to send. - // |callback| : Called with the number of bytes sent. - static void send( - long socketId, - ArrayBuffer data, - optional SendCallback callback); - - // Retrieves the state of the given socket. - // |socketId| : The socket identifier. - // |callback| : Called when the socket state is available. - static void getInfo( - long socketId, - GetInfoCallback callback); - - // Retrieves the list of currently opened sockets owned by the application. - // |callback| : Called when the list of sockets is available. - static void getSockets(GetSocketsCallback callback); - }; - - interface Events { - // Event raised when a connection has been established for a given socket. - // |info| : The event data. - static void onAccept(AcceptInfo info); - - // Event raised when a network error occurred while the runtime was waiting - // for new connections on the given socket. Once this event is raised, the - // socket is set to paused and no more onAccept - // events are raised for this socket. - // |info| : The event data. - static void onAcceptError(AcceptErrorInfo info); - - // Event raised when data has been received for a given socket. - // |info| : The event data. - static void onReceive(ReceiveInfo info); - - // Event raised when a network error occured while the runtime was waiting - // for data on the socket. Once this event is raised, the socket is set to - // paused and no more onReceive events are raised - // for this socket. - // |info| : The event data. - static void onReceiveError(ReceiveErrorInfo info); - }; -}; diff --git a/tools/under-control/src/gin/v8_initializer.cc b/tools/under-control/src/gin/v8_initializer.cc index 5bb090c9..0b14695a 100755 --- a/tools/under-control/src/gin/v8_initializer.cc +++ b/tools/under-control/src/gin/v8_initializer.cc @@ -413,9 +413,6 @@ void SetFeatureFlags() { SetV8FlagsFormatted("--high-end-android-physical-memory-threshold=%i", features::kV8HighEndAndroidMemoryThreshold.Get()); } - SetV8FlagsIfOverridden(features::kV8IncrementalMarkingStartUserVisible, - "--incremental-marking-start-user-visible", - "--no-incremental-marking-start-user-visible"); SetV8FlagsIfOverridden(features::kV8IdleGcOnContextDisposal, "--idle-gc-on-context-disposal", "--no-idle-gc-on-context-disposal"); diff --git a/tools/under-control/src/services/network/network_context.cc b/tools/under-control/src/services/network/network_context.cc index 71cef856..48d5d5c0 100755 --- a/tools/under-control/src/services/network/network_context.cc +++ b/tools/under-control/src/services/network/network_context.cc @@ -19,6 +19,7 @@ #include "base/check.h" #include "base/check_op.h" #include "base/command_line.h" +#include "base/containers/extend.h" #include "base/containers/flat_set.h" #include "base/containers/to_vector.h" #include "base/containers/unique_ptr_adapters.h" @@ -46,9 +47,6 @@ #include "build/chromecast_buildflags.h" #include "components/cookie_config/cookie_store_util.h" #include "components/domain_reliability/monitor.h" -#include "components/ip_protection/common/ip_protection_core_host_remote.h" -#include "components/ip_protection/common/ip_protection_core_impl_mojo.h" -#include "components/ip_protection/common/ip_protection_proxy_delegate.h" #include "components/network_session_configurator/browser/network_session_configurator.h" #include "components/network_session_configurator/common/network_switches.h" #include "components/os_crypt/async/common/encryptor.h" @@ -56,8 +54,10 @@ #include "components/prefs/pref_registry_simple.h" #include "components/prefs/pref_service.h" #include "components/prefs/pref_service_factory.h" +#include "components/unexportable_keys/mojom/unexportable_key_service_proxied.h" #include "components/url_matcher/url_matcher.h" #include "components/url_matcher/url_util.h" +#include "components/url_pattern/simple_url_pattern_matcher.h" #include "mojo/public/cpp/bindings/pending_receiver.h" #include "net/base/features.h" #include "net/base/isolation_info.h" @@ -77,6 +77,7 @@ #include "net/cookies/cookie_monster.h" #include "net/cookies/cookie_setting_override.h" #include "net/device_bound_sessions/session_service.h" +#include "net/disk_cache/disk_cache.h" #include "net/dns/host_cache.h" #include "net/dns/mapped_host_resolver.h" #include "net/extras/sqlite/cookie_crypto_delegate.h" @@ -97,6 +98,7 @@ #include "net/proxy_resolution/configured_proxy_resolution_service.h" #include "net/proxy_resolution/proxy_config.h" #include "net/shared_dictionary/shared_dictionary_isolation_key.h" +#include "net/ssl/ssl_config_service.h" #include "net/storage_access_api/status.h" #include "net/traffic_annotation/network_traffic_annotation.h" #include "net/url_request/static_http_user_agent_settings.h" @@ -110,6 +112,7 @@ #include "services/network/device_bound_session_manager.h" #include "services/network/devtools_durable_msg_collector.h" #include "services/network/disk_cache/mojo_backend_file_operations_factory.h" +#include "services/network/enterprise/encryption/encrypted_backend_file_operations_factory.h" #include "services/network/host_resolver.h" #include "services/network/http_auth_cache_proxy_copier.h" #include "services/network/http_server_properties_pref_delegate.h" @@ -1220,14 +1223,6 @@ void NetworkContext::SetBlockTrustTokens(bool block) { block_trust_tokens_ = block; } -void NetworkContext::SetTrackingProtectionContentSetting( - const ContentSettingsForOneType& settings) { - if (!ip_protection_core_) { - return; - } - ip_protection_core_->SetTrackingProtectionContentSetting(settings); -} - void NetworkContext::OnProxyLookupComplete( ProxyLookupRequest* proxy_lookup_request) { auto it = proxy_lookup_requests_.find(proxy_lookup_request); @@ -2337,10 +2332,13 @@ void NetworkContext::VerifyCertificateForTesting( void NetworkContext::GetTrustAnchorIDsForTesting( GetTrustAnchorIDsForTestingCallback callback) { - std::move(callback).Run( - base::ToVector(url_request_context_->ssl_config_service() - ->GetSSLContextConfig() - .trust_anchor_ids)); + const net::SSLContextConfig& ssl_context_config = + url_request_context_->ssl_config_service()->GetSSLContextConfig(); + std::vector> all_trust_anchor_ids = + ssl_context_config.mtc_trust_anchor_ids; + base::Extend(all_trust_anchor_ids, + base::ToVector(ssl_context_config.trust_anchor_ids)); + std::move(callback).Run(all_trust_anchor_ids); } void NetworkContext::PreconnectSockets( @@ -2707,41 +2705,8 @@ URLRequestContextOwner NetworkContext::MakeURLRequestContext( network_delegate_ = network_delegate.get(); builder.set_network_delegate(std::move(network_delegate)); - // Decide which ProxyDelegate to create. At most one of these will be the - // case for any given NetworkContext: either PrefetchProxy, handling its - // custom proxy configs, or IpProtection, using the proxy allowlist. - auto* mdl_manager = network_service_->masked_domain_list_manager(); - auto* prt_registry = network_service_->probabilistic_reveal_token_registry(); - bool requires_ipp_proxy_delegate = - (mdl_manager->IsEnabled() || - !net::features::kIpPrivacyUnconditionalProxyDomainList.Get().empty()) && - (params_->ip_protection_core_host || - net::features::kIpPrivacyAlwaysCreateCore.Get()); - if (requires_ipp_proxy_delegate) { - CHECK(!params_->initial_custom_proxy_config); - CHECK(!params_->custom_proxy_config_client_receiver); - scoped_refptr core_host_remote = - params_->ip_protection_core_host - ? base::MakeRefCounted( - std::move(params_->ip_protection_core_host)) - : nullptr; - auto ip_protection_core_impl = - std::make_unique( - std::move(params_->ip_protection_control), core_host_remote, - mdl_manager, prt_registry, params_->enable_ip_protection, - params_->ip_protection_incognito, - std::move(params_->initial_ip_protection_tokens), - params_->ip_protection_data_directory); - builder.set_proxy_delegate( - std::make_unique( - ip_protection_core_impl.get())); - // Set tracking protection content settings if there are any provided. - ip_protection_core_impl->SetTrackingProtectionContentSetting( - params_->tracking_protection_content_settings); - - ip_protection_core_ = std::move(ip_protection_core_impl); - } else if (params_->initial_custom_proxy_config || - params_->custom_proxy_config_client_receiver) { + if (params_->initial_custom_proxy_config || + params_->custom_proxy_config_client_receiver) { builder.set_proxy_delegate(std::make_unique( std::move(params_->initial_custom_proxy_config), std::move(params_->custom_proxy_config_client_receiver), @@ -2850,6 +2815,20 @@ URLRequestContextOwner NetworkContext::MakeURLRequestContext( base::MakeRefCounted( std::move(params_->http_cache_file_operations_factory)); } + + // For enterprise users, we wrap `BackendFileOperations` to intercept file + // I/O with encryption ops. + if (params_->enable_encrypted_http_cache) { + if (!cache_params.file_operations_factory) { + // Since it's the fallback later anyways, explicitly created here to + // wrap. + cache_params.file_operations_factory = + base::MakeRefCounted(); + } + cache_params.file_operations_factory = base::MakeRefCounted< + enterprise::EncryptedBackendFileOperationsFactory>( + std::move(cache_params.file_operations_factory)); + } } cache_params.reset_cache = params_->reset_http_cache_backend; @@ -3074,13 +3053,17 @@ URLRequestContextOwner NetworkContext::MakeURLRequestContext( builder.set_check_cleartext_permitted(params_->check_clear_text_permitted); #endif // BUILDFLAG(IS_ANDROID) - if (params_->cookie_deprecation_label.has_value()) { - builder.set_cookie_deprecation_label(*params_->cookie_deprecation_label); - } - if (params_->device_bound_sessions_enabled) { builder.set_has_device_bound_session_service(true); +#if BUILDFLAG(ENABLE_DEVICE_BOUND_SESSIONS) + if (params_->bound_sessions_unexportable_key_service.is_valid()) { + builder.set_unexportable_key_service( + std::make_unique( + std::move(params_->bound_sessions_unexportable_key_service))); + } +#endif + if (base::FeatureList::IsEnabled( net::features::kPersistDeviceBoundSessions)) { base::FilePath device_bound_sessions_file_path; @@ -3490,17 +3473,33 @@ void NetworkContext::FlushMatchingCachedClientCert( } } -void NetworkContext::SetCookieDeprecationLabel( - const std::optional& label) { - CHECK(url_request_context_); - url_request_context_->set_cookie_deprecation_label(label); -} - void NetworkContext::RevokeNetworkForNonces( - const std::vector& nonces, + std::vector nonces_to_patterns, RevokeNetworkForNoncesCallback callback) { - for (const auto& nonce : nonces) { - network_revocation_nonces_.insert(nonce); + for (auto& entry : nonces_to_patterns) { + const base::UnguessableToken& nonce = entry->nonce; + + // Accessing `network_revocation_nonces_[nonce]` here ensures that if it's + // not already present in the set, it's default-constructed. This is + // important, as an empty `entry->allowlisted_patterns` represents complete + // network revocation. + auto& revocation_set = network_revocation_nonces_[nonce]; + for (const std::string& pattern : entry->allowlisted_patterns) { + auto matcher = url_pattern::SimpleUrlPatternMatcher::Create( + pattern, /*base_url=*/nullptr); + if (!matcher.has_value()) { + // TODO(crbug.com/447954811): This case should result in an issue + // delivered to the devtools console (and ideally we'd avoid it + // entirely by parsing these strings as URL Patterns when initially + // parsing the header rather than here when enforcing it). + continue; + } + revocation_set.insert(std::move(matcher.value())); + } + + // CancelRequestsIfNonceMatchesAndUrlNotExempted is not needed for + // connection allowlist since there should not be any ongoing + // requests. const std::set& exemptions = network_revocation_exemptions_[nonce]; for (const auto& factory : url_loader_factories_) { factory->CancelRequestsIfNonceMatchesAndUrlNotExempted(nonce, exemptions); @@ -3604,37 +3603,6 @@ void NetworkContext::AddQuicHints( } } -void NetworkContext::GetIpProxyStatus(GetIpProxyStatusCallback callback) { - ip_protection::IpProxyStatus status = - ip_protection::IpProxyStatus::kUnavailable; - - if (!base::FeatureList::IsEnabled(net::features::kEnableIpProtectionProxy)) { - status = ip_protection::IpProxyStatus::kFeatureNotEnabled; - std::move(callback).Run(status); - return; - } - if (!base::FeatureList::IsEnabled(features::kMaskedDomainList)) { - status = ip_protection::IpProxyStatus::kMaskedDomainListNotEnabled; - std::move(callback).Run(status); - return; - } - if (ip_protection_core()) { - // ip_protection_core() should be null if either of the above features are - // disabled, so check beforehand - status = ip_protection_core()->GetIpProxyStatus(); - std::move(callback).Run(status); - return; - } - - std::move(callback).Run(status); -} - -void NetworkContext::SetBypassIpProtectionProxy(bool bypass_proxy) { - if (ip_protection_core()) { - ip_protection_core()->SetBypassProxy(bypass_proxy); - } -} - bool NetworkContext::IsNetworkForNonceAndUrlAllowed( const base::UnguessableToken& nonce, const GURL& url) const { @@ -3642,6 +3610,24 @@ bool NetworkContext::IsNetworkForNonceAndUrlAllowed( if (!network_revocation_nonces_.contains(nonce)) { return true; } + + // For connection allowlist feature, network_revocation_nonces_ map contains + // the allowed URL Patterns. + // Note that the network_revocation_exemptions_ check below which was added + // to enable fenced frames testing is orthogonal to this feature. + // If there are no allowlisted URLs then it is assumed that all network URLs + // are restricted (unless exempted for FF testing). + if (base::FeatureList::IsEnabled(network::features::kConnectionAllowlists)) { + const std::set>& + allowlisted_patterns = network_revocation_nonces_.find(nonce)->second; + for (const std::unique_ptr& pattern : + allowlisted_patterns) { + if (pattern->Match(url)) { + return true; + } + } + } + // If network has been revoked for the nonce, but the url is exempted, it's // allowed. if (network_revocation_exemptions_.contains(nonce) && 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 c135d4c5..d326724f 100755 --- a/tools/under-control/src/testing/variations/fieldtrial_testing_config.json +++ b/tools/under-control/src/testing/variations/fieldtrial_testing_config.json @@ -1,25 +1,4 @@ { - "AIMEligibilityService": [ - { - "platforms": [ - "android", - "chromeos", - "ios", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "AimServerEligibilityEnabled", - "AimServerEligibilityForPrimaryAccountEnabled" - ] - } - ] - } - ], "AIMHintText": [ { "platforms": [ @@ -152,21 +131,20 @@ ] } ], - "AbslFlatMapInVariantMap": [ + "AccessibilityCheckJavaNodeCacheFreshness": [ { "platforms": [ - "android", - "chromeos", - "linux", - "windows", - "mac" + "android" ], "experiments": [ { + "//1": "Experiment checks correctness of cache by bypassing it;", + "//2": "Not intended for wide release.", "name": "Enabled", "enable_features": [ - "AbslFlatMapInVariantMap" - ] + "AccessibilityCheckJavaNodeCacheFreshness" + ], + "disable_benchmarking": true } ] } @@ -229,16 +207,33 @@ ] } ], - "AccessibilityIncludeLongClickAction": [ + "AccessibilityImproveLiveRegionAnnounce": [ { "platforms": [ - "android" + "android", + "android_webview" ], "experiments": [ { "name": "Enabled", "enable_features": [ - "AccessibilityIncludeLongClickAction" + "AccessibilityImproveLiveRegionAnnounce" + ] + } + ] + } + ], + "AccessibilityMagnificationFollowsFocus": [ + { + "platforms": [ + "android", + "android_webview" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "AccessibilityMagnificationFollowsFocus" ] } ] @@ -364,17 +359,16 @@ ] } ], - "AccessibilityTextFormatting": [ + "AccessibilitySetSelectableOnAllNodesWithText": [ { "platforms": [ - "android", - "android_webview" + "android" ], "experiments": [ { "name": "Enabled", "enable_features": [ - "AccessibilityTextFormatting" + "AccessibilitySetSelectableOnAllNodesWithText" ] } ] @@ -410,21 +404,6 @@ ] } ], - "AddSuggestStrongPasswordFromAddPassword": [ - { - "platforms": [ - "ios" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "SuggestStrongPasswordInAddPassword" - ] - } - ] - } - ], "AddressInfobarDisplayLength": [ { "platforms": [ @@ -467,6 +446,24 @@ ] } ], + "AlignPdfDefaultPrintSettingsWithHTML": [ + { + "platforms": [ + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "AlignPdfDefaultPrintSettingsWithHTML" + ] + } + ] + } + ], "AlignWakeUps": [ { "platforms": [ @@ -587,9 +584,10 @@ ], "experiments": [ { - "name": "Enabled_20250903", + "name": "Enabled_WithVisualUpdate", "enable_features": [ - "AndroidAnimatedProgressBarInBrowser" + "AndroidAnimatedProgressBarInBrowser", + "AndroidProgressBarVisualUpdate" ] } ] @@ -626,21 +624,6 @@ ] } ], - "AndroidAutofillUpdateContextForWebContents": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "AndroidAutofillUpdateContextForWebContents" - ] - } - ] - } - ], "AndroidBookmarkBar": [ { "platforms": [ @@ -648,24 +631,40 @@ ], "experiments": [ { - "name": "Enabled_DefaultDevicePref_False", + "name": "Enabled", "params": { "show_bookmark_bar": "false" }, "enable_features": [ "AndroidAppearanceSettings", "AndroidBookmarkBar", + "IPH_BookmarksBar", "TopControlsRefactor" ] }, { - "name": "Enabled_DefaultDevicePref_True", + "name": "Enabled_DefaultVisible", "params": { "show_bookmark_bar": "true" }, "enable_features": [ "AndroidAppearanceSettings", "AndroidBookmarkBar", + "IPH_BookmarksBar", + "TopControlsRefactor" + ] + }, + { + "name": "Enabled_IPHTrackingOnly", + "params": { + "event_trigger": "name:bookmark_bar_iph_triggered_tracking_only;comparator:any;window:0;storage:360", + "show_bookmark_bar": "false", + "tracking_only": "true" + }, + "enable_features": [ + "AndroidAppearanceSettings", + "AndroidBookmarkBar", + "IPH_BookmarksBar", "TopControlsRefactor" ] } @@ -750,6 +749,25 @@ ] } ], + "AndroidDesktopZoomScaling": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "params": { + "desktop-zoom-scaling-factor": "100", + "monitor-zoom-scaling-factor": "100" + }, + "enable_features": [ + "AndroidDesktopZoomScaling" + ] + } + ] + } + ], "AndroidHatsNext": [ { "platforms": [ @@ -778,6 +796,7 @@ { "name": "Enabled", "params": { + "enable_hub_search_tab_group_strings": "true", "enable_hub_search_tab_groups_pane": "true" }, "enable_features": [ @@ -874,6 +893,21 @@ ] } ], + "AndroidPinnedTabs": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "AndroidPinnedTabs" + ] + } + ] + } + ], "AndroidPinnedTabsTabletTabStrip": [ { "platforms": [ @@ -889,21 +923,6 @@ ] } ], - "AndroidProgressBarVisualUpdate": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "AndroidProgressBarVisualUpdate" - ] - } - ] - } - ], "AndroidRaiseDisplayCriticalThreadPriority": [ { "platforms": [ @@ -912,29 +931,10 @@ ], "experiments": [ { - "name": "EnabledBoth_20250704", - "enable_features": [ - "InputScenarioPriorityBoost", - "RaiseDisplayCriticalThreadPriority" - ] - }, - { - "name": "EnabledRaiseDisplayCriticalThreadPriority_20250704", + "name": "Enabled_20251001", "enable_features": [ "RaiseDisplayCriticalThreadPriority" ] - }, - { - "name": "Enabled", - "enable_features": [ - "RaiseDisplayCriticalThreadPriority" - ] - }, - { - "name": "EnabledInputScenarioPriorityBoost_20250704", - "enable_features": [ - "InputScenarioPriorityBoost" - ] } ] } @@ -946,11 +946,14 @@ ], "experiments": [ { - "name": "EnabledBothReadabilityDistillerAndTriggering", + "name": "EnabledReadabilityDistillerWithNoTriggering", "params": { - "show_cpa": "false", + "heuristic_min_content_length": "160", + "heuristic_min_score": "50", + "min_content_length": "100", + "show_cpa": "true", "use_distiller": "true", - "use_heuristic": "false" + "use_heuristic": "true" }, "enable_features": [ "ReaderModeDistillInApp", @@ -998,6 +1001,21 @@ ] } ], + "AndroidSettingsContainment": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "AndroidSettingsContainment" + ] + } + ] + } + ], "AndroidSmsOtpFilling": [ { "platforms": [ @@ -1008,6 +1026,7 @@ "name": "Enabled", "enable_features": [ "AndroidSmsOtpFilling", + "FieldClassificationModelCaching", "PasswordFormClientsideClassifier" ] } @@ -1117,6 +1136,42 @@ ] } ], + "AndroidTipsNotifications": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled_TrustAndSafety", + "params": { + "trust_and_safety": "true" + }, + "enable_features": [ + "AndroidTipsNotifications" + ] + }, + { + "name": "Enabled_Essential", + "params": { + "essential": "true" + }, + "enable_features": [ + "AndroidTipsNotifications" + ] + }, + { + "name": "Enabled_NewFeatures", + "params": { + "new_features": "true" + }, + "enable_features": [ + "AndroidTipsNotifications" + ] + } + ] + } + ], "AndroidUseCorrectDisplayWorkArea": [ { "platforms": [ @@ -1209,23 +1264,6 @@ ] } ], - "AndroidWindowOcclusion": [ - { - "platforms": [ - "android", - "android_weblayer", - "android_webview" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "AndroidWindowOcclusion" - ] - } - ] - } - ], "AndroidWindowPopupLargeScreen": [ { "platforms": [ @@ -1235,6 +1273,7 @@ { "name": "Enabled", "enable_features": [ + "AndroidWindowPopupCustomTabUi", "AndroidWindowPopupLargeScreen", "AndroidWindowPopupPredictFinalBounds", "AndroidWindowPopupResizeAfterSpawn" @@ -1320,9 +1359,10 @@ ], "experiments": [ { - "name": "Enabled_20250929", + "name": "AnimationTriggerOn_LimitTriggerAttachmentUpdatesOn_20251111", "enable_features": [ - "AnimationTrigger" + "AnimationTrigger", + "LimitTriggerAttachmentUpdates" ] } ] @@ -1459,9 +1499,18 @@ ], "experiments": [ { - "name": "Enabled", + "name": "Enabled_horizontal_plain_v1", + "params": { + "probability": "1.0", + "prompt_arm": "1", + "prompt_disposition_reason_filter": "DefaultFallback", + "request_type_filter": "Geolocation", + "survey_display_time": "OnPromptResolved", + "trigger_id": "wLrmhfRxr0tK1KeaPYj0R4gRD5YC" + }, "enable_features": [ - "ApproximateGeolocationPermission" + "ApproximateGeolocationPermission", + "PermissionsPromptSurvey" ] } ] @@ -1599,16 +1648,25 @@ ] } ], - "ArcOnDemandV2_holdback": [ + "ArcOnDemandV2_4GBTuning": [ { "platforms": [ "chromeos" ], "experiments": [ { - "name": "Enabled", + "name": "enabled_1days_20251029", + "params": { + "inactive_interval": "1d" + }, "enable_features": [ "ArcOnDemandV2" + ], + "hardware_classes": [ + "dedede", + "grunt", + "hana", + "octopus" ] } ] @@ -1799,8 +1857,8 @@ ], "experiments": [ { - "name": "Disabled", - "disable_features": [ + "name": "Enabled", + "enable_features": [ "AskGeminiChip" ] } @@ -1989,6 +2047,26 @@ ] } ], + "AudioDecoderAudioFileReader": [ + { + "platforms": [ + "android", + "android_webview", + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "AudioDecoderAudioFileReader" + ] + } + ] + } + ], "AudioFocusEnforcementStudy": [ { "platforms": [ @@ -2272,7 +2350,7 @@ ] } ], - "AutofillAiI18n": [ + "AutofillAiM3PublicPasses": [ { "platforms": [ "chromeos", @@ -2283,38 +2361,16 @@ "experiments": [ { "name": "Enabled", - "params": { - "autofill_ai_geo_ip_blocklist": "IN" - }, "enable_features": [ - "AutofillAiIgnoreCapabilityCheck", - "AutofillAiIgnoreGeoIp", - "AutofillAiIgnoreLocale", - "AutofillAiIgnoreWhetherUserHasAddressOrPaymentsDataForIph", - "AutofillAiKnownTravelerNumber", - "AutofillAiNationalIdCard", - "AutofillAiRedressNumber" - ] - } - ] - } - ], - "AutofillAiVoteForFormatStringsForAffixes": [ - { - "platforms": [ - "android", - "chromeos", - "chromeos_lacros", - "ios", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "AutofillAiVoteForFormatStringsForAffixes" + "AutofillAiDedupeEntities", + "AutofillAiVoteForFormatStringsForFlightNumbers", + "AutofillAiWalletFlightReservation", + "AutofillAiWalletVehicleRegistration", + "IPH_AutofillAiValuables", + "SyncAccountSettings", + "SyncAutofillValuableMetadata", + "SyncWalletFlightReservations", + "SyncWalletVehicleRegistrations" ] } ] @@ -2340,28 +2396,7 @@ ] } ], - "AutofillAndPasswordsInSameSurface": [ - { - "platforms": [ - "android", - "chromeos", - "chromeos_lacros", - "ios", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "AutofillAndPasswordsInSameSurface" - ] - } - ] - } - ], - "AutofillAndroidDesktopKeyboardAccessoryRevamp": [ + "AutofillAndroidKeyboardAccessoryDynamicPositioning": [ { "platforms": [ "android" @@ -2370,22 +2405,9 @@ { "name": "Enabled", "enable_features": [ - "AutofillAndroidDesktopKeyboardAccessoryRevamp" - ] - } - ] - } - ], - "AutofillAndroidDesktopSuppressAccessoryOnEmpty": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "AutofillAndroidDesktopSuppressAccessoryOnEmpty" + "AutofillAndroidDesktopKeyboardAccessoryRevamp", + "AutofillAndroidDesktopSuppressAccessoryOnEmpty", + "AutofillAndroidKeyboardAccessoryDynamicPositioning" ] } ] @@ -2433,26 +2455,6 @@ ] } ], - "AutofillDeduplicateAccountAddresses": [ - { - "platforms": [ - "android", - "chromeos", - "ios", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "AutofillDeduplicateAccountAddresses" - ] - } - ] - } - ], "AutofillEnableBuyNowPayLaterDesktop": [ { "platforms": [ @@ -2530,16 +2532,19 @@ ] } ], - "AutofillEnableCardBenefitsForBmo": [ + "AutofillEnableCvcStorage": [ { "platforms": [ - "android" + "ios" ], "experiments": [ { "name": "Enabled", "enable_features": [ - "AutofillEnableCardBenefitsForBmo" + "AutofillEnableCvcStorageAndFilling", + "AutofillEnableCvcStorageAndFillingEnhancement", + "AutofillEnableCvcStorageAndFillingStandaloneFormEnhancement", + "SyncAutofillWalletCredentialData" ] } ] @@ -2588,21 +2593,6 @@ ] } ], - "AutofillEnableFlatRateCardBenefitsFromCurinos": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "AutofillEnableFlatRateCardBenefitsFromCurinos" - ] - } - ] - } - ], "AutofillEnableFpanRiskBasedAuthentication": [ { "platforms": [ @@ -2621,22 +2611,7 @@ ] } ], - "AutofillEnableKeyboardAccessoryChipRedesign": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "AutofillEnableKeyboardAccessoryChipRedesign" - ] - } - ] - } - ], - "AutofillEnableKeyboardAccessoryChipWidthAdjustment": [ + "AutofillEnableKeyboardAccessoryRedesign": [ { "platforms": [ "android" @@ -2645,6 +2620,7 @@ { "name": "Enabled", "enable_features": [ + "AutofillEnableKeyboardAccessoryChipRedesign", "AutofillEnableKeyboardAccessoryChipWidthAdjustment" ] } @@ -2672,41 +2648,19 @@ ] } ], - "AutofillEnableMultipleRequestInVirtualCardDownstreamEnrollment": [ + "AutofillEnableLoyaltyCardsFieldParsingiOS": [ { "platforms": [ - "android", - "ios", - "chromeos", - "chromeos_lacros", - "linux", - "mac", - "windows" + "ios" ], "experiments": [ { "name": "Enabled", "enable_features": [ - "AutofillEnableMultipleRequestInVirtualCardDownstreamEnrollment" - ] - } - ] - } - ], - "AutofillEnableNewFopDisplayDesktop": [ - { - "platforms": [ - "chromeos", - "chromeos_lacros", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "AutofillEnableNewFopDisplayDesktop" + "AutofillEnableEmailOrLoyaltyCardsFilling", + "AutofillEnableLoyaltyCardsFilling", + "IPH_AutofillEnableLoyaltyCards", + "SyncAutofillLoyaltyCard" ] } ] @@ -2814,6 +2768,47 @@ ] } ], + "AutofillExtendZipCodeValidation": [ + { + "platforms": [ + "android", + "android_webview", + "chromeos", + "ios", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "AutofillExtendZipCodeValidation" + ] + } + ] + } + ], + "AutofillFixFormEquality": [ + { + "platforms": [ + "android", + "chromeos", + "ios", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "AutofillFixFormEquality" + ] + } + ] + } + ], "AutofillFixRewriterRules": [ { "platforms": [ @@ -3099,28 +3094,6 @@ ] } ], - "AutofillRelaxAddressImport": [ - { - "platforms": [ - "android", - "android_webview", - "chromeos", - "ios", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "AutofillEnableImportWhenMultiplePhoneNumbers", - "AutofillRelaxAddressImport" - ] - } - ] - } - ], "AutofillServerExperimentalSignatures": [ { "platforms": [ @@ -3406,7 +3379,7 @@ ] } ], - "AutomatedPasswordChangeStudyV2": [ + "AutomatedPasswordChangeStudyV3": [ { "platforms": [ "chromeos", @@ -3417,17 +3390,31 @@ "experiments": [ { "name": "Enabled", - "params": { - "PasswordChangeCanceledSurveyTriggerId": "yMCuP6M4o0ugnJ3q1cK0PhQKJ1tX", - "PasswordChangeDelayedSurveyTriggerId": "h68mSmrgL0ugnJ3q1cK0R6FWDDMV", - "PasswordChangeErrorSurveyTriggerId": "QA4ECrqpN0ugnJ3q1cK0U1jrufAq", - "PasswordChangeSuccessSurveyTriggerId": "JkkpCGkZT0ugnJ3q1cK0W48wvGnr", - "probability": "1.0" - }, "enable_features": [ - "CheckLoginStateBeforePasswordChange", - "ImprovedPasswordChangeService", - "PasswordChangeSubmissionMqlsLogging" + "CheckVisibilityInChangePasswordFormWaiter", + "DisableFillingOnPageLoadForLeakedCredentials", + "StopLoginCheckOnFailedLogin" + ], + "disable_features": [ + "DownloadModelForPasswordChange" + ] + } + ] + } + ], + "AutomatedPasswordChangeStudyV4": [ + { + "platforms": [ + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "ReduceRequirementsForPasswordChange" ] } ] @@ -3746,7 +3733,7 @@ ] } ], - "BackForwardTransitionsCrossDocSharedImage": [ + "BackForwardTransitionsSharedImage": [ { "platforms": [ "android" @@ -3755,7 +3742,9 @@ { "name": "Enabled", "enable_features": [ - "BackForwardTransitionsCrossDocSharedImage" + "BackForwardTransitionsCrossDocSharedImage", + "BackForwardTransitionsNativePageSharedImage", + "BackForwardTransitionsSameDocSharedImage" ] } ] @@ -3787,22 +3776,6 @@ ] } ], - "BackgroundNotPerceptibleBinding": [ - { - "platforms": [ - "android", - "android_webview" - ], - "experiments": [ - { - "name": "Enabled_20250728", - "enable_features": [ - "BackgroundNotPerceptibleBinding" - ] - } - ] - } - ], "BackgroundResourceFetch": [ { "platforms": [ @@ -3824,6 +3797,33 @@ ] } ], + "BackgroundTabsInterventions": [ + { + "platforms": [ + "windows" + ], + "experiments": [ + { + "name": "SustainedPMUrgentDiscarding", + "enable_features": [ + "SustainedPMUrgentDiscarding" + ], + "disable_features": [ + "InfiniteTabsFreezing" + ] + }, + { + "name": "InfiniteTabsFreezing", + "enable_features": [ + "InfiniteTabsFreezing" + ], + "disable_features": [ + "SustainedPMUrgentDiscarding" + ] + } + ] + } + ], "BackgroundThreadPoolPISupported": [ { "platforms": [ @@ -4098,6 +4098,40 @@ ] } ], + "BocaReceiverCustomPolling": [ + { + "platforms": [ + "chromeos" + ], + "experiments": [ + { + "name": "Enabled", + "params": { + "BocaReceiverCustomPollingInterval": "10s", + "BocaReceiverCustomPollingMaxFailuresCountx": "3" + }, + "enable_features": [ + "BocaReceiverCustomPolling" + ] + } + ] + } + ], + "BocaRedirectStudentAudioToKiosk": [ + { + "platforms": [ + "chromeos" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "BocaRedirectStudentAudioToKiosk" + ] + } + ] + } + ], "BocaScreenSharingStudent": [ { "platforms": [ @@ -4394,6 +4428,24 @@ ] } ], + "BrowsingHistoryActorIntegrationM2": [ + { + "platforms": [ + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "BrowsingHistoryActorIntegrationM2" + ] + } + ] + } + ], "BubbleMetricsApi": [ { "platforms": [ @@ -4576,6 +4628,21 @@ ] } ], + "CacheIdentityListInChrome": [ + { + "platforms": [ + "ios" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "CacheIdentityListInChrome" + ] + } + ] + } + ], "CacheIsMultiInstanceApi31Enabled": [ { "platforms": [ @@ -4785,101 +4852,6 @@ ] } ], - "CatanCombinedHoldback23H2": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "DelayFirstPeriodicPAPurgeOrReclaim", - "DelayFirstWorkerWake", - "MainThreadCompositingPriority", - "QuickIntensiveWakeUpThrottlingAfterLoading", - "ReduceCookieIPCs", - "UseCompositorJob" - ], - "disable_features": [ - "RecordSequenceManagerCrashKeys", - "ThreadControllerSetsProfilerMetadata" - ] - } - ] - }, - { - "platforms": [ - "chromeos" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "DelayFirstPeriodicPAPurgeOrReclaim", - "DelayFirstWorkerWake", - "QuickIntensiveWakeUpThrottlingAfterLoading", - "ReduceCookieIPCs", - "RunTasksByBatches", - "UseCompositorJob" - ], - "disable_features": [ - "RecordSequenceManagerCrashKeys", - "ThreadControllerSetsProfilerMetadata" - ] - } - ] - }, - { - "platforms": [ - "mac" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "CacheMacSandboxProfiles", - "DelayFirstPeriodicPAPurgeOrReclaim", - "DelayFirstWorkerWake", - "MacSetDefaultTaskRole", - "MainThreadCompositingPriority", - "QuickIntensiveWakeUpThrottlingAfterLoading", - "ReduceCookieIPCs", - "RunTasksByBatches", - "UseCompositorJob" - ], - "disable_features": [ - "RecordSequenceManagerCrashKeys", - "ThreadControllerSetsProfilerMetadata" - ] - } - ] - }, - { - "platforms": [ - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "AboveNormalCompositingBrowserWin", - "DelayFirstPeriodicPAPurgeOrReclaim", - "DelayFirstWorkerWake", - "ExplicitHighResolutionTimerWin", - "MainThreadCompositingPriority", - "QuickIntensiveWakeUpThrottlingAfterLoading", - "ReduceCookieIPCs", - "UseCompositorJob" - ], - "disable_features": [ - "RecordSequenceManagerCrashKeys", - "ThreadControllerSetsProfilerMetadata" - ] - } - ] - } - ], "CctClientDataHeader": [ { "platforms": [ @@ -5993,7 +5965,7 @@ ] } ], - "ChromnientEduActionChip": [ + "ChromnientEduActionChipV2": [ { "platforms": [ "chromeos", @@ -6041,7 +6013,7 @@ ] } ], - "ChromnientReinvocationAffordance": [ + "ChromnientNonBlockingPrivacyNotice": [ { "platforms": [ "chromeos", @@ -6053,7 +6025,56 @@ { "name": "Enabled", "enable_features": [ + "LensOverlayNonBlockingPrivacyNotice" + ] + } + ] + } + ], + "ChromnientOptimizationFilter": [ + { + "platforms": [ + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "LensOverlayOptimizationFilter" + ] + } + ] + } + ], + "ChromnientReinvocationAffordance": [ + { + "platforms": [ + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "params": { + "clear-vsint-when-no-region-selection": "true", + "enable-typeahead-suggestions": "true", + "lens-aim-suggestions-type": "Multimodal", + "number-of-aim-suggestions": "8", + "send-image-signals-for-lens-suggest": "false", + "send-lens-visual-interaction-data-for-lens-suggest": "true" + }, + "enable_features": [ + "LensAimSuggestions", + "LensOverlaySuggestionsMigration", "LensSearchReinvocationAffordance" + ], + "disable_features": [ + "LensAimSuggestionsGradientBackground" ] } ] @@ -6204,6 +6225,9 @@ "experiments": [ { "name": "Enabled", + "params": { + "upload-chunk-retries": "2" + }, "enable_features": [ "LensOverlayUploadChunking" ] @@ -6361,40 +6385,6 @@ ] } ], - "CleanupLegacyTabState": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "CleanupLegacyTabState" - ] - } - ] - } - ], - "ClearBrowsingDataAndroidSurvey": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "Enabled", - "params": { - "en_site_id": "TmqhVJ5cH0tK1KeaPYj0StW6qFe8", - "probability": "0.0075" - }, - "enable_features": [ - "ClearBrowsingDataAndroidSurvey" - ] - } - ] - } - ], "ClearGrShaderDiskCacheOnInvalidPrefix": [ { "platforms": [ @@ -6429,8 +6419,9 @@ "name": "Enabled", "params": { "HCAcceptanceRate": "1.0", - "MaxLength": "100", - "MinLength": "30", + "MaxLength": "1000", + "MinLength": "50", + "ProcessPayload": "false", "SampleRate": "1.0" }, "enable_features": [ @@ -6996,24 +6987,6 @@ ] } ], - "CompositorLoadingAnimations": [ - { - "platforms": [ - "chromeos", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "CompositorLoadingAnimations" - ] - } - ] - } - ], "CompressionDictionaryPreload": [ { "platforms": [ @@ -7204,6 +7177,46 @@ ] } ], + "ContextualTasks": [ + { + "platforms": [ + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "params": { + "ContextualTasksEntryPoint": "toolbar-permanent" + }, + "enable_features": [ + "ContextualTasks", + "TabbedBrowserUseNewLayout" + ] + } + ] + } + ], + "ContextualTasksContext": [ + { + "platforms": [ + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "ContextualTasksContext" + ] + } + ] + } + ], "ControlsVisibilityFromNavigations": [ { "platforms": [ @@ -7631,21 +7644,6 @@ ] } ], - "CrOSLateBootResourcedMsrLogger": [ - { - "platforms": [ - "chromeos" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "CrOSLateBootResourcedMsrLogger" - ] - } - ] - } - ], "CrOSLateBootResourcedVariableTimeMemorySignal": [ { "platforms": [ @@ -8015,7 +8013,7 @@ "enable_features": [ "CrostiniContainerless" ], - "min_os_version": "16450.0.0" + "min_os_version": "16467.0.0" } ] } @@ -8214,25 +8212,6 @@ ] } ], - "DbdRevampDesktop": [ - { - "platforms": [ - "chromeos", - "chromeos_lacros", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "DbdRevampDesktop" - ] - } - ] - } - ], "DecommitPooledPages": [ { "platforms": [ @@ -8285,6 +8264,23 @@ ] } ], + "DefaultBrowserFramework": [ + { + "platforms": [ + "windows", + "mac", + "linux" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "DefaultBrowserFramework" + ] + } + ] + } + ], "DefaultBrowserPromoAndroid2": [ { "platforms": [ @@ -8294,7 +8290,8 @@ { "name": "Enabled", "enable_features": [ - "DefaultBrowserPromoAndroid2" + "DefaultBrowserPromoAndroid2", + "EducationalTipDefaultBrowserPromoCard" ] } ] @@ -8380,6 +8377,26 @@ ] } ], + "DelayRfhDestructionsOnUnloadAndDetach": [ + { + "platforms": [ + "android", + "android_webview", + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "DelayRfhDestructionsOnUnloadAndDetach" + ] + } + ] + } + ], "DelegatedCompositingOnWindows": [ { "platforms": [ @@ -8496,6 +8513,21 @@ ] } ], + "DesktopMediaPickerCheckAudioPermissions": [ + { + "platforms": [ + "mac" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "DesktopMediaPickerCheckAudioPermissions" + ] + } + ] + } + ], "DesktopNtpDriveCache": [ { "platforms": [ @@ -8517,24 +8549,6 @@ ] } ], - "DesktopNtpDriveHistorySyncRequirement": [ - { - "platforms": [ - "chromeos", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "NtpDriveModuleHistorySyncRequirement" - ] - } - ] - } - ], "DesktopNtpImageErrorDetection": [ { "platforms": [ @@ -8819,7 +8833,8 @@ "name": "Enabled", "enable_features": [ "SilentPolicyAndDefaultAppUpdating", - "WebAppPredictableAppUpdating" + "WebAppPredictableAppUpdating", + "WebAppUsePrimaryIcon" ] } ] @@ -8837,7 +8852,7 @@ "ext_display_desktop_ua_oem_allowlist": "samsung" }, "enable_features": [ - "DesktopUAOnConnectedDisplays" + "DesktopUAOnConnectedDisplay" ] } ] @@ -8876,6 +8891,24 @@ ] } ], + "DevToolsConsoleInsightsTeasers": [ + { + "platforms": [ + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "DevToolsAiPromptApi" + ] + } + ] + } + ], "DeviceBoundSessionCredentials2": [ { "platforms": [ @@ -8945,21 +8978,6 @@ ] } ], - "DirectCompositorThreadIpcWin": [ - { - "platforms": [ - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "DirectCompositorThreadIpc" - ] - } - ] - } - ], "DirtyWritebackMaxBytes": [ { "platforms": [ @@ -9052,25 +9070,6 @@ ] } ], - "DisableInstanceLimitWithV2Switcher": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "Enabled", - "params": { - "max_instance_limit": "20" - }, - "enable_features": [ - "DisableInstanceLimit", - "InstanceSwitcherV2" - ] - } - ] - } - ], "DisableMemoryReclaimerInBackground": [ { "platforms": [ @@ -9124,6 +9123,22 @@ ] } ], + "DisableProgressBarAndroidAnimations": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "AndroidPbDisablePulseAnimation", + "AndroidPbDisableSmoothAnimation" + ] + } + ] + } + ], "DisableSystemBlur": [ { "platforms": [ @@ -9229,29 +9244,6 @@ ] } ], - "DiscountConsentV2": [ - { - "platforms": [ - "fuchsia", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "enabled_ntp_native_dialog_with_approved_strings_M104_20220809", - "params": { - "discount-consent-ntp-variation": "4", - "step-one-static-content": "Let Google help you find discounts for your carts", - "step-one-use-static-content": "true" - }, - "enable_features": [ - "DiscountConsentV2" - ] - } - ] - } - ], "DiskCacheBackendExperiment": [ { "platforms": [ @@ -9266,10 +9258,14 @@ { "name": "Sql", "params": { + "SqlDiskCacheLoadIndexOnInit": "true", + "SqlDiskCacheShardCount": "3", + "SqlDiskCacheSynchronousOff": "true", "backend": "sql" }, "enable_features": [ - "DiskCacheBackendExperiment" + "DiskCacheBackendExperiment", + "HttpCacheInitializeDiskCacheBackendEarly" ] } ] @@ -9599,6 +9595,7 @@ "platforms": [ "android", "chromeos", + "ios", "linux", "mac", "windows" @@ -9607,7 +9604,9 @@ { "name": "Enabled", "enable_features": [ - "DynamicProfileCountry" + "DynamicProfileCountry", + "StrictAssociatedCountriesCheck", + "WaffleRestrictToAssociatedCountries" ] } ] @@ -9647,28 +9646,6 @@ ] } ], - "EmitPerScrollJankMetricsAtEndOfScroll": [ - { - "platforms": [ - "android", - "chromeos", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Experiment_V1EnabledV4Disabled", - "enable_features": [ - "EmitPerScrollJankV1MetricAtEndOfScroll" - ], - "disable_features": [ - "EmitPerScrollJankV4MetricAtEndOfScroll" - ] - } - ] - } - ], "En840AndFstDecoderParamsUpdate": [ { "platforms": [ @@ -9678,7 +9655,6 @@ { "name": "Enable_Model_And_Params_20230602", "enable_features": [ - "ImeFstDecoderParamsUpdate", "ImeUsEnglishModelUpdate" ] } @@ -9780,7 +9756,7 @@ "name": "Enabled", "enable_features": [ "EnableBestEffortTaskInhibitingPolicy", - "ScopedBestEffortExecutionFenceOnUIThread" + "ScopedBestEffortExecutionFenceForTaskQueue" ] } ] @@ -9831,6 +9807,21 @@ ] } ], + "EnableClipboardDataControlsIOS": [ + { + "platforms": [ + "ios" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "EnableClipboardDataControlsIOS" + ] + } + ] + } + ], "EnableCustomInputStreamBufferSize": [ { "platforms": [ @@ -9928,6 +9919,21 @@ ] } ], + "EnableExclusiveAccessManager": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "EnableExclusiveAccessManager" + ] + } + ] + } + ], "EnableFallbackFontsCrashReporting": [ { "platforms": [ @@ -10070,6 +10076,54 @@ ] } ], + "EnableNewUploadSizeLimit": [ + { + "platforms": [ + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled_200MB", + "params": { + "max_file_size_mb": "200" + }, + "enable_features": [ + "EnableNewUploadSizeLimit" + ] + }, + { + "name": "Enabled_500MB", + "params": { + "max_file_size_mb": "500" + }, + "enable_features": [ + "EnableNewUploadSizeLimit" + ] + }, + { + "name": "Enabled_1GB", + "params": { + "max_file_size_mb": "1024" + }, + "enable_features": [ + "EnableNewUploadSizeLimit" + ] + }, + { + "name": "Enabled_2GB", + "params": { + "max_file_size_mb": "2048" + }, + "enable_features": [ + "EnableNewUploadSizeLimit" + ] + } + ] + } + ], "EnablePDPMetricsUSDesktopIOS": [ { "platforms": [ @@ -10240,27 +10294,6 @@ ] } ], - "EnableVerdictCache": [ - { - "platforms": [ - "chromeos", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "params": { - "verdict_cache_max_size": "200" - }, - "enable_features": [ - "EnableVerdictCache" - ] - } - ] - } - ], "EnableWatermarkCustomization": [ { "platforms": [ @@ -10297,23 +10330,6 @@ ] } ], - "EncryptedPrefHashing": [ - { - "platforms": [ - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "EncryptedPrefHashing" - ] - } - ] - } - ], "EndOfLifeIncentive": [ { "platforms": [ @@ -10579,21 +10595,6 @@ ] } ], - "ExtendedReportingRemovePrefDependencyIos": [ - { - "platforms": [ - "ios" - ], - "experiments": [ - { - "name": "EnabledRemovePrefDependencyIos", - "enable_features": [ - "ExtendedReportingRemovePrefDependencyIos" - ] - } - ] - } - ], "ExtensionManifestV2Deprecation": [ { "platforms": [ @@ -10640,12 +10641,29 @@ ], "experiments": [ { - "name": "Variant1", + "name": "Chips_v1", "params": { - "x_iph-variant": "custom-action-iph" + "x_iph-variant": "custom-ui-chip-iph" + }, + "enable_features": [ + "IPH_ExtensionsZeroStatePromo" + ] + }, + { + "name": "Chips_v2", + "params": { + "x_iph-variant": "ustom-ui-chip-iph-v2" + }, + "enable_features": [ + "IPH_ExtensionsZeroStatePromo" + ] + }, + { + "name": "Chips_v3", + "params": { + "x_iph-variant": "custom-ui-chip-iph-v3" }, "enable_features": [ - "ExtensionsCollapseMainMenu", "IPH_ExtensionsZeroStatePromo" ] } @@ -10718,6 +10736,7 @@ "android", "android_webview", "chromeos", + "ios", "linux", "mac", "windows" @@ -11064,44 +11083,6 @@ ] } ], - "FledgeBiddingAndAuctionNonceSupport": [ - { - "platforms": [ - "chromeos", - "linux", - "mac", - "windows", - "android" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "FledgeBiddingAndAuctionNonceSupport" - ] - } - ] - } - ], - "FledgeModifyInterestGroupPolicyCheckOnOwner": [ - { - "platforms": [ - "chromeos", - "linux", - "mac", - "windows", - "android" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "FledgeModifyInterestGroupPolicyCheckOnOwner" - ] - } - ] - } - ], "Floss": [ { "platforms": [ @@ -11117,6 +11098,21 @@ ] } ], + "FluidResize": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "FluidResize" + ] + } + ] + } + ], "FlushPersistentSystemProfileOnWrite": [ { "platforms": [ @@ -11193,6 +11189,33 @@ ] } ], + "FontDataServiceLinux": [ + { + "platforms": [ + "linux" + ], + "experiments": [ + { + "name": "Fontations_Enabled", + "params": { + "typeface": "Fontations" + }, + "enable_features": [ + "FontDataServiceLinux" + ] + }, + { + "name": "Freetype_Enabled", + "params": { + "typeface": "Freetype" + }, + "enable_features": [ + "FontDataServiceLinux" + ] + } + ] + } + ], "ForceMigrateSyncingUserToSignedInAndroid": [ { "platforms": [ @@ -11328,6 +11351,21 @@ ] } ], + "FuturePoliciesOnDesktopAndroid": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "FuturePoliciesOnDesktopAndroid" + ] + } + ] + } + ], "GCMUseDedicatedNetworkThread": [ { "platforms": [ @@ -11520,6 +11558,44 @@ ] } ], + "GlicButtonAltLabel": [ + { + "platforms": [ + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "LabelA", + "params": { + "glic-button-alt-label-variant": "0" + }, + "enable_features": [ + "GlicButtonAltLabel" + ] + }, + { + "name": "LabelB", + "params": { + "glic-button-alt-label-variant": "1" + }, + "enable_features": [ + "GlicButtonAltLabel" + ] + }, + { + "name": "LabelC", + "params": { + "glic-button-alt-label-variant": "2" + }, + "enable_features": [ + "GlicButtonAltLabel" + ] + } + ] + } + ], "GlicClientResponsivenessCheckExtension": [ { "platforms": [ @@ -11577,7 +11653,8 @@ "platforms": [ "mac", "windows", - "linux" + "linux", + "chromeos" ], "experiments": [ { @@ -11589,6 +11666,22 @@ ] } ], + "GlicEnableMultiInstanceBasedOnTier": [ + { + "platforms": [ + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "GlicEnableMultiInstanceBasedOnTier" + ] + } + ] + } + ], "GlicEntrypointVariations": [ { "platforms": [ @@ -11597,6 +11690,12 @@ "windows" ], "experiments": [ + { + "name": "Control_MultiArm", + "disable_features": [ + "GlicEntrypointVariations" + ] + }, { "name": "Arm2_LabelOnly", "params": { @@ -11731,6 +11830,8 @@ { "name": "Enabled", "enable_features": [ + "GlicIntro", + "GlicLearnMore", "GlicRollout" ] } @@ -11807,6 +11908,41 @@ ] } ], + "GlicShareImage": [ + { + "platforms": [ + "mac", + "windows", + "linux" + ], + "experiments": [ + { + "name": "Enabled_20251023", + "enable_features": [ + "GlicShareImage", + "SvgFallBackToContainerSize" + ] + } + ] + } + ], + "GlicSidePanelChromeOS": [ + { + "platforms": [ + "chromeos" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "GlicMultiInstance", + "GlicMultiTab", + "GlicMultitabUnderlines" + ] + } + ] + } + ], "GlicTieredRollout": [ { "platforms": [ @@ -12153,6 +12289,28 @@ ] } ], + "HandleNonDamagingInputsInScrollJankV4Metric": [ + { + "platforms": [ + "android", + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Experiment_NewBehaviorCountAllFrames", + "params": { + "count_non_damaging_frames_towards_histogram_frame_count": "true" + }, + "enable_features": [ + "HandleNonDamagingInputsInScrollJankV4Metric" + ] + } + ] + } + ], "HangoutsExtensionV3": [ { "platforms": [ @@ -12677,6 +12835,51 @@ ] } ], + "HeliosFullChatHistory": [ + { + "platforms": [ + "ios" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "GeminiFullChatHistory" + ] + } + ] + } + ], + "HeliosImmediateOverlay": [ + { + "platforms": [ + "ios" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "GeminiImmediateOverlay" + ] + } + ] + } + ], + "HeliosLoadingRedesign": [ + { + "platforms": [ + "ios" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "GeminiLoadingStateRedesign" + ] + } + ] + } + ], "HelpAppLauncherSearch": [ { "platforms": [ @@ -12800,26 +13003,6 @@ ] } ], - "HstsTopLevelNavigationsOnly": [ - { - "platforms": [ - "android_webview", - "android", - "chromeos", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "HstsTopLevelNavigationsOnly" - ] - } - ] - } - ], "HttpCacheNoVarySearch": [ { "platforms": [ @@ -12875,15 +13058,14 @@ ], "experiments": [ { - "name": "Enabled_NVS_HttpCache_Only_WithNewAreEquivalent_DevCanary_1008_Desktop", + "name": "Enabled_NVS_HttpCache_And_Omnibox_Prefetch", "enable_features": [ "HttpCacheNoVarySearch", - "HttpNoVarySearchDataUseNewAreEquivalent" + "SearchPrefetchWithNoVarySearchDiskCache" ], "disable_features": [ "DsePreload2", - "PrefetchPrerenderIntegration", - "SearchPrefetchWithNoVarySearchDiskCache" + "PrefetchPrerenderIntegration" ] } ] @@ -12936,24 +13118,6 @@ ] } ], - "HttpsFirstDialogUi": [ - { - "platforms": [ - "chromeos", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "HttpsFirstDialogUi" - ] - } - ] - } - ], "HttpsFirstModeV2ForTypicallySecureUsers": [ { "platforms": [ @@ -12973,6 +13137,21 @@ ] } ], + "IOSAutoOpenRemoteTabGroupsSettings": [ + { + "platforms": [ + "ios" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "IOSAutoOpenRemoteTabGroupsSettings" + ] + } + ] + } + ], "IOSAutofillAcrossIframesV2": [ { "platforms": [ @@ -12991,21 +13170,6 @@ ] } ], - "IOSAutofillBadgeRemoval": [ - { - "platforms": [ - "ios" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "AutofillBadgeRemoval" - ] - } - ] - } - ], "IOSAutofillBottomSheetNewBlur": [ { "platforms": [ @@ -13021,6 +13185,21 @@ ] } ], + "IOSAutofillPaymentsSheetV3": [ + { + "platforms": [ + "ios" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "AutofillPaymentsSheetV3Ios" + ] + } + ] + } + ], "IOSAutofillRefillForForms": [ { "platforms": [ @@ -13084,6 +13263,41 @@ ] } ], + "IOSBottomMultilineOmnibox": [ + { + "platforms": [ + "ios" + ], + "experiments": [ + { + "name": "EnabledWithEditStateFollowSteadyState", + "params": { + "kBottomOmniboxEvolutionParam": "kBottomOmniboxEvolutionParamEditStateFollowSteadyState" + }, + "enable_features": [ + "BottomOmniboxEvolution", + "MultilineBrowserOmnibox" + ] + }, + { + "name": "EnabledWithForceBottomOmniboxEditState", + "params": { + "kBottomOmniboxEvolutionParam": "kBottomOmniboxEvolutionParamForceBottomOmniboxEditState" + }, + "enable_features": [ + "BottomOmniboxEvolution", + "MultilineBrowserOmnibox" + ] + }, + { + "name": "EnabledWithoutBottomOmniboxOnFocus", + "enable_features": [ + "MultilineBrowserOmnibox" + ] + } + ] + } + ], "IOSBrowserEditMenuMetrics": [ { "platforms": [ @@ -13130,21 +13344,6 @@ ] } ], - "IOSCriteriaExperimentEnabled": [ - { - "platforms": [ - "ios" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "DefaultBrowserTriggerCriteriaExperiment" - ] - } - ] - } - ], "IOSDefaultBrowserOffCyclePromo": [ { "platforms": [ @@ -13195,6 +13394,9 @@ "experiments": [ { "name": "Enabled", + "params": { + "cooldown-days": "14" + }, "enable_features": [ "DefaultBrowserPromoPropensityModel" ] @@ -13510,21 +13712,6 @@ ] } ], - "IOSIncognitoSoftLock": [ - { - "platforms": [ - "ios" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "IOSSoftLock" - ] - } - ] - } - ], "IOSKeepsRenderProcessAlive": [ { "platforms": [ @@ -13540,6 +13727,21 @@ ] } ], + "IOSKeyboardAccessoryTwoBubble": [ + { + "platforms": [ + "ios" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "IOSKeyboardAccessoryTwoBubble" + ] + } + ] + } + ], "IOSLensFetchSrp": [ { "platforms": [ @@ -13785,8 +13987,8 @@ ], "experiments": [ { - "name": "Enabled", - "enable_features": [ + "name": "Disabled", + "disable_features": [ "IOSPasskeyModalLoginWithShim" ] } @@ -13808,6 +14010,21 @@ ] } ], + "IOSPersistTabContext": [ + { + "platforms": [ + "ios" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "PersistTabContext" + ] + } + ] + } + ], "IOSProactivePasswordGenerationBottomSheet": [ { "platforms": [ @@ -13823,6 +14040,21 @@ ] } ], + "IOSProactiveSuggestionsFramework": [ + { + "platforms": [ + "ios" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "IOSProactiveSuggestionsFramework" + ] + } + ] + } + ], "IOSReaderMode": [ { "platforms": [ @@ -13832,19 +14064,35 @@ { "name": "Enabled", "enable_features": [ - "EnableReadabilityHeuristic", "EnableReaderMode", - "EnableReaderModeDefaultBrowserPromo", - "EnableReaderModeTranslation", + "EnableReaderModeOmniboxEntryPoint", "ReaderModeUseReadability" ], "disable_features": [ + "EnableReadabilityHeuristic", + "EnableReaderModeDefaultBrowserPromo", + "EnableReaderModeInUS", "EnableReaderModePageEligibilityForToolsMenu" ] } ] } ], + "IOSReaderModeWithTranslate": [ + { + "platforms": [ + "ios" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "EnableReaderModeTranslation" + ] + } + ] + } + ], "IOSSafariImportWorkflow": [ { "platforms": [ @@ -13920,7 +14168,7 @@ ] } ], - "IOSShareExtensionMIM": [ + "IOSShowTabGroupInGridOnStart": [ { "platforms": [ "ios" @@ -13929,7 +14177,7 @@ { "name": "Enabled", "enable_features": [ - "ShareExtensionForMultiprofile" + "ShowTabGroupInGridOnStart" ] } ] @@ -14034,6 +14282,25 @@ ] } ], + "IOSSyncedSetUp": [ + { + "platforms": [ + "ios" + ], + "experiments": [ + { + "name": "Enabled", + "params": { + "SyncedSetUpImpressionLimit": "1" + }, + "enable_features": [ + "EnableCrossDevicePrefTracker", + "IOSSyncedSetUp" + ] + } + ] + } + ], "IOSTFLiteLanguageDetection": [ { "platforms": [ @@ -14050,6 +14317,21 @@ ] } ], + "IOSTabGridDragAndDrop": [ + { + "platforms": [ + "ios" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "TabGridDragAndDrop" + ] + } + ] + } + ], "IOSTabResumptionShopCard": [ { "platforms": [ @@ -14259,21 +14541,6 @@ ] } ], - "IdentityInAuthError": [ - { - "platforms": [ - "ios" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "EnableIdentityInAuthError" - ] - } - ] - } - ], "IgnoreDiscardAttemptMarker": [ { "platforms": [ @@ -14409,13 +14676,15 @@ "AdditionalDelay": "100ms", "DelayMainJobWithAvailableSpdySession": "false", "QuicHandshakeTimeout": "15s", - "mtu": "1230" + "mtu": "1230", + "quic_options": "ORIG" }, "enable_features": [ "AdditionalDelayMainJob", "ConfigureQuicHints", "ExtendQuicHandshakeTimeout", - "LowerQuicMaxPacketSize" + "LowerQuicMaxPacketSize", + "TryQuicByDefault" ] } ] @@ -14444,6 +14713,42 @@ ] } ], + "InfobarPrioritization": [ + { + "platforms": [ + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "InfobarPrioritization" + ] + } + ] + } + ], + "InfobarRefresh": [ + { + "platforms": [ + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "InfobarRefresh" + ] + } + ] + } + ], "InhibitSQLPreload": [ { "platforms": [ @@ -14475,6 +14780,25 @@ ] } ], + "InhibitSQLReleaseCacheMemoryIfNeeded": [ + { + "platforms": [ + "android", + "chromeos", + "linux", + "windows", + "mac" + ], + "experiments": [ + { + "name": "InhibitSQLReleaseCacheMemoryIfNeeded", + "enable_features": [ + "InhibitSQLReleaseCacheMemoryIfNeeded" + ] + } + ] + } + ], "InlineFullscreenPerfExperiment": [ { "platforms": [ @@ -14504,28 +14828,6 @@ "enable_features": [ "InputOnViz" ] - }, - { - "name": "InputOnVizPredictionAtDeadlineEnabled", - "params": { - "mode": "UseScrollPredictorForDeadline" - }, - "enable_features": [ - "InputOnViz", - "WaitForLateScrollEvents" - ] - }, - { - "name": "InputOnVizDisabledPredictionAtDeadlineEnabled", - "params": { - "mode": "UseScrollPredictorForDeadline" - }, - "enable_features": [ - "WaitForLateScrollEvents" - ], - "disable_features": [ - "InputOnViz" - ] } ] } @@ -15154,17 +15456,15 @@ "length": "65536" }, "enable_features": [ - "LibraryPrefetcherMadvise" + "LibraryPrefetcherMadvise", + "WebViewPrefetchNativeLibrary" ] }, { - "name": "Enabled_1", - "params": { - "fallback": "true", - "length": "1" - }, - "enable_features": [ - "LibraryPrefetcherMadvise" + "name": "AblatePrefetch", + "disable_features": [ + "LibraryPrefetcherMadvise", + "WebViewPrefetchNativeLibrary" ] } ] @@ -15226,6 +15526,26 @@ ] } ], + "LoadAllTabsAtStartup": [ + { + "platforms": [ + "android", + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "LazyBrowserInterfaceBroker", + "LoadAllTabsAtStartup" + ] + } + ] + } + ], "LoadNativeEarly": [ { "platforms": [ @@ -15292,24 +15612,6 @@ ] } ], - "LocalIpAddressInEvents": [ - { - "platforms": [ - "chromeos", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "LocalIpAddressInEvents" - ] - } - ] - } - ], "LocalNetworkAccessChecks": [ { "platforms": [ @@ -15742,6 +16044,28 @@ ] } ], + "MediaIndicatorsAndroid": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "MediaIndicatorsAndroid" + ] + }, + { + "name": "EnabledWithEnhancedAudioResponsiveness", + "enable_features": [ + "EnableAudioMonitoringOnAndroid", + "MediaIndicatorsAndroid" + ] + } + ] + } + ], "MeetDevicesMojoServices": [ { "platforms": [ @@ -15768,194 +16092,18 @@ ] } ], - "MemoryCacheCombined": [ + "MemoryConsumerForNGShapeCache": [ { "platforms": [ - "chromeos", "linux", "mac", "windows" ], "experiments": [ { - "name": "IP_Enabled", + "name": "Enabled", "enable_features": [ - "MemoryCacheIntelligentPruning", - "MemoryCacheStrongReference", - "ReleaseResourceDecodedDataOnMemoryPressure", - "ReleaseResourceStrongReferencesOnMemoryPressure" - ], - "disable_features": [ - "MemoryCacheChangeStrongReferencePruneDelay", - "MemoryCacheStrongReferenceExtensions" - ] - }, - { - "name": "IP_Enabled_NoPressureRelease", - "enable_features": [ - "MemoryCacheIntelligentPruning", - "MemoryCacheStrongReference" - ], - "disable_features": [ - "MemoryCacheChangeStrongReferencePruneDelay", - "MemoryCacheStrongReferenceExtensions", - "ReleaseResourceDecodedDataOnMemoryPressure", - "ReleaseResourceStrongReferencesOnMemoryPressure" - ] - }, - { - "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" - ], - "disable_features": [ - "MemoryCacheIntelligentPruning", - "MemoryCacheStrongReferenceExtensions", - "ReleaseResourceDecodedDataOnMemoryPressure", - "ReleaseResourceStrongReferencesOnMemoryPressure" - ] - }, - { - "name": "MaxLimits1HourDelay_HM", - "params": { - "image": "true", - "manifest": "true", - "memory_cache_strong_ref_resource_size_threshold": "104857600", - "memory_cache_strong_ref_total_size_threshold": "209715200", - "raw": "true", - "strong_reference_prune_delay": "60m", - "svg_document": "true", - "xsl_stylesheet": "true" - }, - "enable_features": [ - "MemoryCacheChangeStrongReferencePruneDelay", - "MemoryCacheStrongReference", - "MemoryCacheStrongReferenceExtensions" - ], - "disable_features": [ - "MemoryCacheIntelligentPruning", - "ReleaseResourceDecodedDataOnMemoryPressure", - "ReleaseResourceStrongReferencesOnMemoryPressure" - ] - }, - { - "name": "Combination_HM_MaxLimits", - "params": { - "image": "true", - "manifest": "true", - "memory_cache_strong_ref_resource_size_threshold": "104857600", - "memory_cache_strong_ref_total_size_threshold": "209715200", - "raw": "true", - "strong_reference_prune_delay": "60m", - "svg_document": "true", - "xsl_stylesheet": "true" - }, - "enable_features": [ - "MemoryCacheChangeStrongReferencePruneDelay", - "MemoryCacheIntelligentPruning", - "MemoryCacheStrongReference", - "MemoryCacheStrongReferenceExtensions" - ], - "disable_features": [ - "ReleaseResourceDecodedDataOnMemoryPressure", - "ReleaseResourceStrongReferencesOnMemoryPressure" - ] - }, - { - "name": "Combination_Image_MaxLimits", - "params": { - "image": "true", - "memory_cache_strong_ref_resource_size_threshold": "104857600", - "memory_cache_strong_ref_total_size_threshold": "209715200", - "strong_reference_prune_delay": "60m" - }, - "enable_features": [ - "MemoryCacheChangeStrongReferencePruneDelay", - "MemoryCacheIntelligentPruning", - "MemoryCacheStrongReference", - "MemoryCacheStrongReferenceExtensions" - ], - "disable_features": [ - "ReleaseResourceDecodedDataOnMemoryPressure", - "ReleaseResourceStrongReferencesOnMemoryPressure" - ] - }, - { - "name": "Combination_HM_MaxLimits_Balanced", - "params": { - "cost_weight": "0.0005", - "freq_weight": "75.0", - "image": "true", - "manifest": "true", - "memory_cache_strong_ref_resource_size_threshold": "104857600", - "memory_cache_strong_ref_total_size_threshold": "209715200", - "raw": "true", - "strong_reference_prune_delay": "60m", - "svg_document": "true", - "type_weight": "75.0", - "xsl_stylesheet": "true" - }, - "enable_features": [ - "MemoryCacheChangeStrongReferencePruneDelay", - "MemoryCacheIntelligentPruning", - "MemoryCacheStrongReference", - "MemoryCacheStrongReferenceExtensions" - ], - "disable_features": [ - "ReleaseResourceDecodedDataOnMemoryPressure", - "ReleaseResourceStrongReferencesOnMemoryPressure" - ] - }, - { - "name": "Combination_HM_MaxLimits_SizeAware", - "params": { - "cost_weight": "0.005", - "freq_weight": "60.0", - "image": "true", - "manifest": "true", - "memory_cache_strong_ref_resource_size_threshold": "104857600", - "memory_cache_strong_ref_total_size_threshold": "209715200", - "raw": "true", - "strong_reference_prune_delay": "60m", - "svg_document": "true", - "type_weight": "80.0", - "xsl_stylesheet": "true" - }, - "enable_features": [ - "MemoryCacheChangeStrongReferencePruneDelay", - "MemoryCacheIntelligentPruning", - "MemoryCacheStrongReference", - "MemoryCacheStrongReferenceExtensions" - ], - "disable_features": [ - "ReleaseResourceDecodedDataOnMemoryPressure", - "ReleaseResourceStrongReferencesOnMemoryPressure" - ] - }, - { - "name": "IntelligentPruning_HM_DefaultLimits", - "params": { - "image": "true", - "manifest": "true", - "raw": "true", - "svg_document": "true", - "xsl_stylesheet": "true" - }, - "enable_features": [ - "MemoryCacheIntelligentPruning", - "MemoryCacheStrongReference", - "MemoryCacheStrongReferenceExtensions" - ], - "disable_features": [ - "MemoryCacheChangeStrongReferencePruneDelay", - "ReleaseResourceDecodedDataOnMemoryPressure", - "ReleaseResourceStrongReferencesOnMemoryPressure" + "MemoryConsumerForNGShapeCache" ] } ] @@ -16168,6 +16316,39 @@ ] } ], + "MobilePromoOnDesktop": [ + { + "platforms": [ + "ios", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "MobilePromoOnDesktop" + ] + } + ] + } + ], + "MobilePromoOnDesktopDataCollection": [ + { + "platforms": [ + "ios" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "MobilePromoOnDesktopRecordActiveDays" + ] + } + ] + } + ], "MojoChannelAssociatedSendUsesRunOrPostTask": [ { "platforms": [ @@ -16225,6 +16406,21 @@ ] } ], + "MovePasswordLeakDetectionToggleIos": [ + { + "platforms": [ + "ios" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "MovePasswordLeakDetectionToggleIos" + ] + } + ] + } + ], "MultiCalendarSupport": [ { "platforms": [ @@ -16291,6 +16487,22 @@ ] } ], + "NTPPopularSites": [ + { + "platforms": [ + "android", + "ios" + ], + "experiments": [ + { + "name": "Version7", + "params": { + "version": "7" + } + } + ] + } + ], "NavigationThrottleRegistryAttributeCache": [ { "platforms": [ @@ -16563,39 +16775,6 @@ ] } ], - "NewTabPageCustomizationForMvt": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "NewTabPageCustomizationForMvt" - ] - } - ] - } - ], - "NewTabsInGroups": [ - { - "platforms": [ - "chromeos", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "NewTabAddsToActiveGroup" - ] - } - ] - } - ], "NimbleCollisionAvoidanceV1": [ { "platforms": [ @@ -16629,6 +16808,21 @@ ] } ], + "NoPreReadMainDllStartup": [ + { + "platforms": [ + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "NoPreReadMainDllStartup" + ] + } + ] + } + ], "NoThrottlingVisibleAgent": [ { "platforms": [ @@ -16790,7 +16984,6 @@ "name": "Enabled", "params": { "ConfigParam": "CgIIAxI8CAEQARoXCAAQ4MZbGMAMIMAMKCgyB2ltYWdlLyoiGwiAhK9fEhQucGRmLGFwcGxpY2F0aW9uL3BkZigB", - "SendLnsSurfaceParam": "true", "ShowComposeboxZps": "true", "ShowContextMenu": "true" }, @@ -16802,6 +16995,23 @@ ] } ], + "NtpCustomizeChromeAutoOpen": [ + { + "platforms": [ + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Control", + "disable_features": [ + "NtpCustomizeChromeAutoOpen" + ] + } + ] + } + ], "NtpMicrosoftFilesCard": [ { "platforms": [ @@ -16874,6 +17084,22 @@ ] } ], + "OAuthMultiloginStandardCookiesBinding": [ + { + "platforms": [ + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "EnableOAuthMultiloginStandardCookiesBinding", + "UseUnexportableKeyServiceInBrowserProcess" + ] + } + ] + } + ], "OcclusionCullingQuadSplitLimit": [ { "platforms": [ @@ -17403,6 +17629,24 @@ ] } ], + "OnTaskStatusCheck": [ + { + "platforms": [ + "chromeos" + ], + "experiments": [ + { + "name": "Enabled", + "params": { + "OnTaskStatusCheckInterval": "60s" + }, + "enable_features": [ + "OnTaskStatusCheck" + ] + } + ] + } + ], "OneGroupPerRenderer": [ { "platforms": [ @@ -17703,25 +17947,6 @@ ] } ], - "PWANavigationCapturingAndroidFullscreenWindowing": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "EnabledFullscreenWindowingNavigations", - "params": { - "auxiliary_navigation_stays_in_browser": "all_wm" - }, - "enable_features": [ - "AuxiliaryNavigationStaysInBrowser", - "AuxiliaryNavigationStaysInPWA" - ] - } - ] - } - ], "PageActionsMigration": [ { "platforms": [ @@ -17741,9 +17966,11 @@ "cookie_controls": "true", "discounts": "true", "file_system_access": "true", + "filled_card_information": "true", "find": "true", "intent_picker": "true", "lens_overlay": "true", + "lens_overlay_homework": "true", "manage_passwords": "true", "mandatory_reauth": "true", "memory_saver": "true", @@ -17751,8 +17978,10 @@ "price_insights": "true", "price_tracking": "true", "pwa_install": "true", + "save_payments": "true", "sharing_hub": "true", "translate": "true", + "virtual_card": "true", "zoom": "true" }, "enable_features": [ @@ -17892,6 +18121,46 @@ ] } ], + "PartitionAllocFreeWithSize": [ + { + "platforms": [ + "android", + "android_webview", + "chromeos", + "ios", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "enabled_with_strict_check_20251212", + "params": { + "strict-free-size-check": "true" + }, + "enable_features": [ + "PartitionAllocFreeWithSize" + ] + } + ] + } + ], + "PartitionAllocLockTuneSpin": [ + { + "platforms": [ + "android", + "android_webview" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "PartitionAllocLockTuneSpin" + ] + } + ] + } + ], "PartitionAllocMemoryReclaimer": [ { "platforms": [ @@ -18186,6 +18455,28 @@ ] } ], + "PasskeyUnlockErrorUi": [ + { + "platforms": [ + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled_with_unlock_wording_20251209", + "params": { + "passkey_unlock_ui_experiment_arm": "text_with_unlock_wording" + }, + "enable_features": [ + "PasskeyUnlockErrorUi", + "PasskeyUnlockManager" + ] + } + ] + } + ], "PasswordFormGroupedAffiliations": [ { "platforms": [ @@ -18313,6 +18604,27 @@ ] } ], + "PdfInkSignaturesTextHighlighter": [ + { + "platforms": [ + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "enabled", + "params": { + "text-highlighting": "true" + }, + "enable_features": [ + "PdfInk2" + ] + } + ] + } + ], "PdfOutOfProcessIframe": [ { "platforms": [ @@ -18348,6 +18660,28 @@ ] } ], + "PdfSaveToDriveSurvey": [ + { + "platforms": [ + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "params": { + "consumer-trigger-id": "E6hRdJzmG0ugnJ3q1cK0WrDN8qfv", + "enterprise-trigger-id": "NYK9PbTYD0ugnJ3q1cK0Twvu4X5v", + "probability": "1.0" + }, + "enable_features": [ + "PdfSaveToDriveSurvey" + ] + } + ] + } + ], "PdfUseShowSaveFilePicker": [ { "platforms": [ @@ -18431,33 +18765,182 @@ { "platforms": [ "android", + "android_webview" + ], + "experiments": [ + { + "name": "EnabledConservative_20251114", + "params": { + "MacCriticalDiskSpacePressureThresholdMB": "250" + }, + "enable_features": [ + "AbslFlatMapInVariantMap", + "AsyncSetCookie", + "AvoidCloneArgsOnExtensionFunctionDispatch", + "AvoidUnnecessaryGetMinimizeButtonOffset", + "AvoidUnnecessaryShouldRenderRichAnimation", + "CompressParkableStrings", + "FastPathNoRaster", + "GCOnArrayBufferAllocationFailure", + "MacAllowBackgroundingRenderProcesses", + "MacCriticalDiskSpacePressure", + "MvcUpdateViewWhenModelChanged", + "NoPreReadMainDllIfSsd", + "PageAllocatorRetryOnCommitFailure", + "ReducePPMs", + "ReloadTabUiResourcesIfChanged", + "RemoveCancelledScriptedIdleTasks", + "ScreenWinDisplayLookupByHMONITOR", + "SlimDirectReceiverIpc", + "TerminationTargetPolicy", + "UpdateDirectManipulationHelperOnParentChange" + ], + "disable_features": [ + "MemoryCacheStrongReference", + "SuppressMemoryListeners", + "SuppressMemoryMonitor" + ] + } + ] + }, + { + "platforms": [ "chromeos", - "ios", - "linux", - "mac", + "linux" + ], + "experiments": [ + { + "name": "EnabledConservative_20251114", + "params": { + "MacCriticalDiskSpacePressureThresholdMB": "250" + }, + "enable_features": [ + "AbslFlatMapInVariantMap", + "AsyncSetCookie", + "AvoidCloneArgsOnExtensionFunctionDispatch", + "AvoidUnnecessaryGetMinimizeButtonOffset", + "AvoidUnnecessaryShouldRenderRichAnimation", + "CompressParkableStrings", + "FastPathNoRaster", + "GCOnArrayBufferAllocationFailure", + "MacAllowBackgroundingRenderProcesses", + "MacCriticalDiskSpacePressure", + "MvcUpdateViewWhenModelChanged", + "NoPreReadMainDllIfSsd", + "PageAllocatorRetryOnCommitFailure", + "ReducePPMs", + "ReloadTabUiResourcesIfChanged", + "RemoveCancelledScriptedIdleTasks", + "ScreenWinDisplayLookupByHMONITOR", + "SlimDirectReceiverIpc", + "TerminationTargetPolicy", + "UpdateDirectManipulationHelperOnParentChange" + ] + } + ] + }, + { + "platforms": [ + "mac" + ], + "experiments": [ + { + "name": "EnabledConservative_20251114", + "params": { + "MacCriticalDiskSpacePressureThresholdMB": "250", + "suppress_memory_listeners_mask": "0000200200220200020020000002020000000000000000020", + "suppress_memory_monitor_mask": "00020000020000" + }, + "enable_features": [ + "AbslFlatMapInVariantMap", + "AsyncSetCookie", + "AvoidCloneArgsOnExtensionFunctionDispatch", + "AvoidUnnecessaryGetMinimizeButtonOffset", + "AvoidUnnecessaryShouldRenderRichAnimation", + "CompressParkableStrings", + "FastPathNoRaster", + "GCOnArrayBufferAllocationFailure", + "MacAllowBackgroundingRenderProcesses", + "MacCriticalDiskSpacePressure", + "MemoryCacheStrongReference", + "MvcUpdateViewWhenModelChanged", + "NoPreReadMainDllIfSsd", + "PageAllocatorRetryOnCommitFailure", + "ReducePPMs", + "ReleaseResourceDecodedDataOnMemoryPressure", + "ReleaseResourceStrongReferencesOnMemoryPressure", + "ReloadTabUiResourcesIfChanged", + "RemoveCancelledScriptedIdleTasks", + "ScreenWinDisplayLookupByHMONITOR", + "SlimDirectReceiverIpc", + "SuppressMemoryListeners", + "SuppressMemoryMonitor", + "TerminationTargetPolicy", + "UpdateDirectManipulationHelperOnParentChange" + ], + "disable_features": [ + "MemoryCacheChangeStrongReferencePruneDelay" + ] + } + ] + }, + { + "platforms": [ + "windows" + ], + "experiments": [ + { + "name": "EnabledConservative_20251114", + "params": { + "MacCriticalDiskSpacePressureThresholdMB": "250", + "suppress_memory_listeners_mask": "0000200200220200020020000002020000000000000000020", + "suppress_memory_monitor_mask": "00020000020000" + }, + "enable_features": [ + "AbslFlatMapInVariantMap", + "AsyncSetCookie", + "AvoidCloneArgsOnExtensionFunctionDispatch", + "AvoidUnnecessaryGetMinimizeButtonOffset", + "AvoidUnnecessaryShouldRenderRichAnimation", + "CompressParkableStrings", + "DirectCompositorThreadIpc", + "FastPathNoRaster", + "GCOnArrayBufferAllocationFailure", + "MacAllowBackgroundingRenderProcesses", + "MacCriticalDiskSpacePressure", + "MemoryCacheStrongReference", + "MvcUpdateViewWhenModelChanged", + "NoPreReadMainDllIfSsd", + "PageAllocatorRetryOnCommitFailure", + "ReducePPMs", + "ReleaseResourceDecodedDataOnMemoryPressure", + "ReleaseResourceStrongReferencesOnMemoryPressure", + "ReloadTabUiResourcesIfChanged", + "RemoveCancelledScriptedIdleTasks", + "ScreenWinDisplayLookupByHMONITOR", + "SlimDirectReceiverIpc", + "SuppressMemoryListeners", + "SuppressMemoryMonitor", + "TerminationTargetPolicy", + "UpdateDirectManipulationHelperOnParentChange" + ], + "disable_features": [ + "MemoryCacheChangeStrongReferencePruneDelay" + ] + } + ] + } + ], + "PerformDefaultBrowserCheckValidations": [ + { + "platforms": [ "windows" ], "experiments": [ { "name": "Enabled", - "params": { - "MacCriticalDiskSpacePressureThresholdMB": "250" - }, "enable_features": [ - "AsyncSetCookie", - "AvoidCloneArgsOnExtensionFunctionDispatch", - "AvoidUnnecessaryGetMinimizeButtonOffset", - "AvoidUnnecessaryShouldRenderRichAnimation", - "GCOnArrayBufferAllocationFailure", - "MacAllowBackgroundingRenderProcesses", - "MacCriticalDiskSpacePressure", - "NoPreReadMainDllIfSsd", - "PageAllocatorRetryOnCommitFailure", - "ReducePPMs", - "RemoveCancelledScriptedIdleTasks", - "ScreenWinDisplayLookupByHMONITOR", - "TerminationTargetPolicy", - "UpdateDirectManipulationHelperOnParentChange" + "PerformDefaultBrowserCheckValidations" ] } ] @@ -19336,6 +19819,51 @@ ] } ], + "PreloadingEagerViewportHeuristics": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "50ms", + "params": { + "viewport_present_time": "50ms" + }, + "enable_features": [ + "PreloadingEagerViewportHeuristics" + ] + }, + { + "name": "200ms", + "params": { + "viewport_present_time": "200ms" + }, + "enable_features": [ + "PreloadingEagerViewportHeuristics" + ] + }, + { + "name": "400ms", + "params": { + "viewport_present_time": "400ms" + }, + "enable_features": [ + "PreloadingEagerViewportHeuristics" + ] + }, + { + "name": "1000ms", + "params": { + "viewport_present_time": "1000ms" + }, + "enable_features": [ + "PreloadingEagerViewportHeuristics" + ] + } + ] + } + ], "Prerender2EarlyDocumentLifecycleUpdateV2": [ { "platforms": [ @@ -19378,6 +19906,84 @@ ] } ], + "Prerender2WarmUpCompositorForBookmarkBar": [ + { + "platforms": [ + "android", + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "Prerender2WarmUpCompositorForBookmarkBar" + ] + } + ] + } + ], + "Prerender2WarmUpCompositorForNewTabPage": [ + { + "platforms": [ + "android", + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "Prerender2WarmUpCompositorForNewTabPage" + ] + } + ] + } + ], + "Prerender2WarmUpCompositorForSpeculationRules": [ + { + "platforms": [ + "android", + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "Prerender2WarmUpCompositorForImmediate", + "Prerender2WarmUpCompositorForNonImmediate" + ] + } + ] + } + ], + "PrerenderSiteInstanceProcessPerDSE": [ + { + "platforms": [ + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "ConsiderDSEWarmUpPageAsSRP", + "CreatePrerenderSiteInstanceWithURL" + ], + "disable_features": [] + } + ] + } + ], "PreserveDiscardableImageMapQuality": [ { "platforms": [ @@ -19565,26 +20171,6 @@ ] } ], - "PrivacySandboxAllowPromptForBlocked3PCookies": [ - { - "platforms": [ - "android", - "chromeos", - "chromeos_lacros", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "PrivacySandboxAllowPromptForBlocked3PCookies" - ] - } - ] - } - ], "PrivacySandboxDisableNotices": [ { "platforms": [ @@ -19604,25 +20190,6 @@ ] } ], - "PrivacySandboxGetPromptFromNoticeService": [ - { - "platforms": [ - "linux", - "windows", - "android", - "mac", - "chromeos" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "PrivacySandboxGetPromptFromNoticeService" - ] - } - ] - } - ], "PrivacySandboxInternalsDevUI": [ { "platforms": [ @@ -19642,26 +20209,6 @@ ] } ], - "PrivacySandboxMigratePrefsToSchemaV2": [ - { - "platforms": [ - "android", - "chromeos", - "chromeos_lacros", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "PrivacySandboxMigratePrefsToSchemaV2" - ] - } - ] - } - ], "PrivacySandboxNoticeQueue": [ { "platforms": [ @@ -19816,20 +20363,19 @@ ] } ], - "ProcessRankPolicyAndroid": [ + "ProcessRankPolicyAndroid2": [ { "platforms": [ "android" ], "experiments": [ { - "name": "EnabledAll_20250731", + "name": "EnabledAll_20251127", "enable_features": [ "ChangeUnfocusedPriority", "ProcessRankPolicyAndroid", "ProtectedTabsAndroid", - "SubframeImportance", - "SubframePriorityContribution" + "SubframeImportance" ] } ] @@ -19859,14 +20405,68 @@ ], "experiments": [ { - "name": "Enabled", - "enable_features": [ + "name": "Control", + "disable_features": [ "ProfileCreationDeclineSigninCTAExperiment" ] } ] } ], + "ProfileExperimentsM0": [ + { + "platforms": [ + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Control", + "disable_features": [ + "ProfilePickerTextVariations", + "ShowProfilePickerToAllUsersExperiment" + ] + } + ] + } + ], + "ProfileExperimentsM1FrictionReduction": [ + { + "platforms": [ + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Control", + "disable_features": [ + "ProfileCreationFrictionReductionExperimentPrefillNameRequirement", + "ProfileCreationFrictionReductionExperimentRemoveSigninStep", + "ProfileCreationFrictionReductionExperimentSkipCustomizeProfile" + ] + } + ] + } + ], + "ProfileExperimentsM1Usability": [ + { + "platforms": [ + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Control", + "disable_features": [ + "OpenAllProfilesFromProfilePickerExperiment" + ] + } + ] + } + ], "ProfileRemoteCommands": [ { "platforms": [ @@ -19920,35 +20520,6 @@ ] } ], - "ProgressiveAccessibility": [ - { - "platforms": [ - "android", - "android_webview", - "chromeos", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "ProgressiveAccessibility" - ] - }, - { - "name": "EnabledWithHide", - "params": { - "progressive_accessibility_mode": "disable_on_hide" - }, - "enable_features": [ - "ProgressiveAccessibility" - ] - } - ] - } - ], "PropagateWebViewNetworkingSignals": [ { "platforms": [ @@ -19981,312 +20552,6 @@ ] } ], - "ProtectedAudienceAuctionDownloaderStaleWhileRevalidate": [ - { - "platforms": [ - "android", - "chromeos", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "FledgeAuctionDownloaderStaleWhileRevalidate" - ] - } - ] - } - ], - "ProtectedAudienceAuctionTextConversionHelpers": [ - { - "platforms": [ - "android", - "chromeos", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "FledgeTextConversionHelpers" - ] - } - ] - } - ], - "ProtectedAudienceClickiness": [ - { - "platforms": [ - "android", - "chromeos", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "AdAuctionEventRegistration", - "FledgeClickiness" - ] - } - ] - } - ], - "ProtectedAudienceDealsSupport": [ - { - "platforms": [ - "android", - "chromeos", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "FledgeAuctionDealSupport" - ] - } - ] - } - ], - "ProtectedAudienceEagerJSCompilation": [ - { - "platforms": [ - "android", - "chromeos", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "FledgeEagerJSCompilation" - ] - } - ] - } - ], - "ProtectedAudienceEarlyProcessCreationStudy": [ - { - "platforms": [ - "android", - "chromeos", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "FledgeStartAnticipatoryProcesses" - ] - } - ] - } - ], - "ProtectedAudienceNoWasmLazyCompilationStudy": [ - { - "platforms": [ - "chromeos", - "chromeos_lacros", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "FledgeNoWasmLazyCompilation" - ] - } - ] - } - ], - "ProtectedAudiencePreconnectCacheStudy": [ - { - "platforms": [ - "android", - "chromeos", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "FledgeUsePreconnectCache" - ] - } - ] - } - ], - "ProtectedAudiencePrepareBidderContextsStudy": [ - { - "platforms": [ - "android", - "chromeos", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "FledgePrepareBidderContextsInAdvance" - ] - } - ] - } - ], - "ProtectedAudienceSendDebugReportCooldownsToBandA": [ - { - "platforms": [ - "android", - "chromeos", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "FledgeSendDebugReportCooldownsToBandA" - ] - } - ] - } - ], - "ProtectedAudienceTrustedSignalsKVv1CreativeScanning": [ - { - "platforms": [ - "android", - "chromeos", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "FledgeTrustedSignalsKVv1CreativeScanning" - ] - } - ] - } - ], - "ProtectedAudiencesEnableBandAKAnonEnforcement": [ - { - "platforms": [ - "android", - "chromeos", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "EnableBandAKAnonEnforcement" - ] - } - ] - } - ], - "ProtectedAudiencesEnableSampleDebugReportOnCookieSetting": [ - { - "platforms": [ - "android", - "chromeos", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "FledgeEnableSampleDebugReportOnCookieSetting" - ] - } - ] - } - ], - "ProtectedAudiencesHeaderDirectFromSellerSignalsStudy": [ - { - "platforms": [ - "android", - "chromeos", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "FledgeDirectFromSellerSignalsHeaderAdSlot" - ] - } - ] - } - ], - "ProtectedAudiencesKAnonymityEnforcementStudy": [ - { - "platforms": [ - "android", - "chromeos", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "FledgeConsiderKAnonymity", - "FledgeEnforceKAnonymity" - ] - } - ] - } - ], - "ProtectedAudiencesUpdateIfOlderThanMs": [ - { - "platforms": [ - "android", - "chromeos", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "InterestGroupUpdateIfOlderThan" - ] - } - ] - } - ], "ProtoBasedEnterpriseReporting": [ { "platforms": [ @@ -20490,25 +20755,6 @@ ] } ], - "QuickDeleteAndroidSurvey": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "Enabled", - "params": { - "probability": "0.015", - "trigger_id": "GtpVWQGxM0tK1KeaPYj0QBUXAQ9v" - }, - "enable_features": [ - "QuickDeleteAndroidSurvey" - ] - } - ] - } - ], "QuickShareV2": [ { "platforms": [ @@ -20589,24 +20835,6 @@ ] } ], - "ReadAloudReadabilityDelay": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "Enabled", - "params": { - "read_aloud_readability_delay_ms_after_page_load": "1500" - }, - "enable_features": [ - "ReadAloud" - ] - } - ] - } - ], "ReadAloudTapToSeek": [ { "platforms": [ @@ -20647,29 +20875,6 @@ ] } ], - "ReadAnythingReadAloudDesktop": [ - { - "platforms": [ - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "ReadAnythingReadAloud" - ] - }, - { - "name": "Disabled", - "disable_features": [ - "ReadAnythingReadAloud" - ] - } - ] - } - ], "ReadAnythingReadAloudPhraseHighlighting": [ { "platforms": [ @@ -20694,6 +20899,30 @@ ] } ], + "ReadAnythingReadAloudTsTextSegmentation": [ + { + "platforms": [ + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "ReadAnythingReadAloudTSTextSegmentation" + ] + }, + { + "name": "Disabled", + "disable_features": [ + "ReadAnythingReadAloudTSTextSegmentation" + ] + } + ] + } + ], "ReclaimOldPrepaintTiles": [ { "platforms": [ @@ -20778,37 +21007,6 @@ ] } ], - "ReduceAcceptLanguageCount": [ - { - "platforms": [ - "android", - "chromeos", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled_5", - "params": { - "MaxAcceptLanguage": "5" - }, - "enable_features": [ - "ReduceAcceptLanguageCount" - ] - }, - { - "name": "Enabled_10", - "params": { - "MaxAcceptLanguage": "10" - }, - "enable_features": [ - "ReduceAcceptLanguageCount" - ] - } - ] - } - ], "ReduceAcceptLanguageHTTP": [ { "platforms": [ @@ -20898,21 +21096,6 @@ ] } ], - "ReduceUserAgentDataLinuxPlatformVersion": [ - { - "platforms": [ - "linux" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "ReduceUserAgentDataLinuxPlatformVersion" - ] - } - ] - } - ], "RefreshTokenV3Feature": [ { "platforms": [ @@ -21477,6 +21660,7 @@ { "name": "Enabled", "enable_features": [ + "ReportStuckThrottle", "ResumeNavigationWithSpeculativeRFHProcessGone" ] } @@ -21600,26 +21784,6 @@ ] } ], - "SRIMessageSignatureEnforcement": [ - { - "platforms": [ - "android", - "android_webview", - "chromeos", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "SRIMessageSignatureEnforcement" - ] - } - ] - } - ], "SafeBrowsingDailyPhishingReportsLimit": [ { "platforms": [ @@ -21642,6 +21806,21 @@ ] } ], + "SafeBrowsingExtendedReportingRemovePrefDependencyIos": [ + { + "platforms": [ + "ios" + ], + "experiments": [ + { + "name": "EnabledRemovePrefDependencyIos", + "enable_features": [ + "ExtendedReportingRemovePrefDependencyIos" + ] + } + ] + } + ], "SafeBrowsingExtensionTelemetrySearchHijackingSignal": [ { "platforms": [ @@ -21706,11 +21885,7 @@ "experiments": [ { "name": "Enabled", - "params": { - "SafetyCheckMagicStackAutorunHoursThreshold": "720" - }, "enable_features": [ - "SafetyCheckMagicStack", "SegmentationPlatformIosModuleRankerSplitBySurface" ] } @@ -21832,6 +22007,25 @@ ] } ], + "SafetyHubUnusedPermissionRevocationForAllSurfaces": [ + { + "platforms": [ + "android", + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "SafetyHubUnusedPermissionRevocationForAllSurfaces" + ] + } + ] + } + ], "SavedTabGroupUrlRestriction": [ { "platforms": [ @@ -23404,7 +23598,7 @@ "respect_navigation_preload": "true", "use_allowlist": "false" }, - "enable_features": [ + "disable_features": [ "ServiceWorkerAutoPreload" ] } @@ -23518,7 +23712,7 @@ ] } ], - "SessionRestoreInfoBar": [ + "SessionRestoreInfobar": [ { "platforms": [ "linux", @@ -23532,7 +23726,7 @@ "continue_session": "true" }, "enable_features": [ - "SessionRestoreInfoBar" + "SessionRestoreInfobar" ] } ] @@ -23562,6 +23756,21 @@ ] } ], + "SettingsMultiColumn": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "SettingsMultiColumn" + ] + } + ] + } + ], "SettingsSingleActivity": [ { "platforms": [ @@ -23867,25 +24076,6 @@ ] } ], - "ShowManualNotificationRevocationsSafetyHub": [ - { - "platforms": [ - "android", - "windows", - "mac", - "linux", - "chromeos" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "ShowManualNotificationRevocationsSafetyHub" - ] - } - ] - } - ], "ShowNewTabAnimationsAndroid": [ { "platforms": [ @@ -23919,21 +24109,18 @@ "SideBySide": [ { "platforms": [ - "linux", - "mac", - "windows", "chromeos" ], "experiments": [ { - "name": "Enabled_WithMenu", + "name": "Enabled_WithClose", "params": { "drop_target_nudge_to_full_max_width": "360", "drop_target_nudge_to_full_min_width": "120", "drop_target_nudge_to_full_width_percentage": "15", "drop_target_show_delay": "1400ms", "drop_target_width_percentage": "15", - "mini_toolbar_active_config": "showmenu" + "mini_toolbar_active_config": "showclose" }, "enable_features": [ "CloseActiveTabInSplitViewViaHotkey", @@ -23942,7 +24129,6 @@ "ReloadSelectionModel", "SideBySide", "SideBySideDropTargetNudge", - "SideBySideKeyboardShortcut", "SideBySideLinkMenuNewBadge", "SideBySideSessionRestore" ] @@ -24031,6 +24217,23 @@ ] } ], + "SigninPromoLimitsExperiment": [ + { + "platforms": [ + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Control", + "disable_features": [ + "SigninPromoLimitsExperiment" + ] + } + ] + } + ], "SimpleCachePrioritizedCaching": [ { "platforms": [ @@ -24219,7 +24422,7 @@ ] } ], - "SkipIPCChanelPausingForNonGuests": [ + "SkipIPCChannelPausingForNonGuestsStudy": [ { "platforms": [ "android", @@ -24231,12 +24434,12 @@ ], "experiments": [ { - "name": "Enabled", + "name": "Enabled_20251030", "params": { "internal_webui_only": "false" }, "enable_features": [ - "SkipIPCChanelPausingForNonGuests" + "SkipIPCChannelPausingForNonGuests" ] } ] @@ -24307,32 +24510,6 @@ ] } ], - "SlimScheduler": [ - { - "platforms": [ - "android", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "params": { - "pending_frames": "1" - }, - "enable_features": [ - "DisplaySchedulerAsClient", - "NoCompositorFrameAcks", - "NoLateBeginFrames" - ], - "disable_features": [ - "AckOnSurfaceActivationWhenInteractive" - ] - } - ] - } - ], "SlopBucket": [ { "platforms": [ @@ -24563,6 +24740,9 @@ "experiments": [ { "name": "Enabled", + "params": { + "open_adjacently": "false" + }, "enable_features": [ "RobustWindowManagementExperimental" ] @@ -24759,25 +24939,6 @@ ] } ], - "SubframePriorityContribution": [ - { - "platforms": [ - "android_webview", - "chromeos", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "SubframePriorityContribution" - ] - } - ] - } - ], "SubframeProcessShutdownDelay": [ { "platforms": [ @@ -24827,10 +24988,25 @@ ] } ], - "SuppressMemoryListeners": [ + "SupervisedUserBlockInterstitialV3": [ { "platforms": [ "android", + "chromeos" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "SupervisedUserBlockInterstitialV3" + ] + } + ] + } + ], + "SupportOpeningDraggedLinksInSameTab": [ + { + "platforms": [ "chromeos", "linux", "mac", @@ -24838,15 +25014,9 @@ ], "experiments": [ { - "name": "Enabled_HangWatcher", - "params": { - "suppress_memory_listeners_mask": "0200000000000000000000000000000000000000000000000" - }, + "name": "Enabled", "enable_features": [ - "SuppressMemoryListeners" - ], - "disable_features": [ - "SuppressMemoryMonitor" + "SupportOpeningDraggedLinksInSameTab" ] } ] @@ -24878,16 +25048,18 @@ ] } ], - "SustainedMPUrgentDiscarding": [ + "SurfaceInputForAndroidVEA": [ { "platforms": [ - "windows" + "android", + "android_webview", + "android_weblayer" ], "experiments": [ { "name": "Enabled", "enable_features": [ - "SustainedMPUrgentDiscarding" + "SurfaceInputForAndroidVEA" ] } ] @@ -24896,19 +25068,13 @@ "SwiftShaderDeprecation": [ { "platforms": [ - "android", - "chromeos", - "ios", - "linux", - "mac", "windows" ], "experiments": [ { - "name": "SwiftShaderDisabled", + "name": "WarpDisabledForWindowsTests", "disable_features": [ - "AllowSoftwareGLFallbackDueToCrashes", - "AllowSwiftShaderFallback" + "AllowD3D11WarpFallback" ] } ] @@ -25009,8 +25175,7 @@ { "name": "Enabled", "enable_features": [ - "ImeManifestV3", - "SystemJapanesePhysicalTyping" + "ImeManifestV3" ] } ] @@ -25150,24 +25315,6 @@ ] } ], - "TabCaptureInfobarLinks": [ - { - "platforms": [ - "chromeos", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "TabCaptureInfobarLinks" - ] - } - ] - } - ], "TabFreezingUsesDiscard": [ { "platforms": [ @@ -25198,6 +25345,29 @@ ] } ], + "TabGroupInteractionsDesktop": [ + { + "platforms": [ + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "BookmarkTabGroupConversion", + "CreateNewTabGroupAppMenuTopLevel", + "NewTabAddsToActiveGroup", + "ShowTabGroupsMacSystemMenu", + "TabGroupMenuImprovements", + "TabGroupMenuMoreEntryPoints" + ] + } + ] + } + ], "TabGroupParityAndroidV2": [ { "platforms": [ @@ -25408,11 +25578,12 @@ ], "experiments": [ { - "name": "Enabled", + "name": "Enabled_WithCurrentDefault", "params": { "choice_screen_surface": "fre_only" }, "enable_features": [ + "CurrentDseHighlightOnChoiceScreenSupport", "Taiyaki" ] } @@ -25605,16 +25776,16 @@ ] } ], - "ToolbarStaleCaptureBugFix": [ + "ToolbarTabletResizeRefactor": [ { "platforms": [ "android" ], "experiments": [ { - "name": "Enabled_20251008", + "name": "Enabled", "enable_features": [ - "ToolbarStaleCaptureBugFix" + "ToolbarTabletResizeRefactor" ] } ] @@ -25720,6 +25891,37 @@ ] } ], + "TreesInViz": [ + { + "platforms": [ + "linux" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "TreesInViz" + ] + } + ] + }, + { + "platforms": [ + "android", + "chromeos", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Disabled", + "disable_features": [ + "TreesInViz" + ] + } + ] + } + ], "TriggerPasswordResyncWhenUndecryptablePasswordsDetected": [ { "platforms": [ @@ -26036,6 +26238,61 @@ ] } ], + "UnoPhase2FollowUpDesktop": [ + { + "platforms": [ + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "SpellcheckSeparateLocalAndAccountDictionaries", + "UnoPhase2FollowUp" + ] + } + ] + } + ], + "UpdateIsMainFrameOriginRecentlyAccessedStudy": [ + { + "platforms": [ + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "UpdateIsMainFrameOriginRecentlyAccessed" + ] + } + ] + } + ], + "UpdateScrollPredictorInputMapping": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "InputPredictorInputMappingEnabled_20251031", + "params": { + "mode": "UseScrollPredictorForEmptyQueue" + }, + "enable_features": [ + "UpdateScrollPredictorInputMapping", + "WaitForLateScrollEvents" + ] + } + ] + } + ], "UploadOfficeToCloud": [ { "platforms": [ @@ -26088,6 +26345,25 @@ ] } ], + "UseCecEnabledFlag": [ + { + "platforms": [ + "android", + "ios", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "UseCECFlagInPolicyData" + ] + } + ] + } + ], "UseCompositorClockVSyncInterval": [ { "platforms": [ @@ -26103,6 +26379,21 @@ ] } ], + "UseCursorEventHook": [ + { + "platforms": [ + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "UseCursorEventHook" + ] + } + ] + } + ], "UseDHCPCD10": [ { "platforms": [ @@ -26232,6 +26523,25 @@ ] } ], + "UseLastVisitedFallbackURLFavicon": [ + { + "platforms": [ + "android", + "linux", + "mac", + "windows", + "chromeos" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "UseLastVisitedFallbackURLFavicon" + ] + } + ] + } + ], "UsePersistentCacheForCodeCache": [ { "platforms": [ @@ -26251,22 +26561,6 @@ ] } ], - "UsePostBodyForUrlProvisionFetcher": [ - { - "platforms": [ - "android", - "fuchsia" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "UsePostBodyForUrlProvisionFetcher" - ] - } - ] - } - ], "UseSCContentSharingPicker": [ { "platforms": [ @@ -26322,6 +26616,21 @@ ] } ], + "UseTerminationStatusMemoryExhaustion": [ + { + "platforms": [ + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "UseTerminationStatusMemoryExhaustion" + ] + } + ] + } + ], "UserBypassUI": [ { "platforms": [ @@ -26410,17 +26719,33 @@ ], "experiments": [ { - "name": "Time180Sparkplug", + "name": "Time180", "params": { "bytecode_old_time": "180" }, "enable_features": [ - "V8Flag_flush_baseline_code", "V8Flag_flush_code_based_on_time", "V8Flag_ineffective_gcs_forces_last_resort" - ], + ] + } + ] + } + ], + "V8DisableScavengerUpdatesAllocationLimit": [ + { + "platforms": [ + "android", + "android_webview", + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", "disable_features": [ - "V8Flag_flush_code_based_on_tab_visibility" + "V8Flag_scavenger_updates_allocation_limit" ] } ] @@ -26469,46 +26794,6 @@ ] } ], - "V8IncrementalMarkingAlwaysUserVisible": [ - { - "platforms": [ - "android", - "android_webview", - "chromeos", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "V8Flag_incremental_marking_always_user_visible" - ] - } - ] - } - ], - "V8IncrementalMarkingStartUserVisible": [ - { - "platforms": [ - "android", - "android_webview", - "chromeos", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "V8IncrementalMarkingStartUserVisible" - ] - } - ] - } - ], "V8IneffectiveMarkCompact": [ { "platforms": [ @@ -26616,21 +26901,23 @@ ] } ], - "V8MemoryReducerFavorsMemoryAblation": [ + "V8NewOldGenerationHeapSize": [ { "platforms": [ "android", + "android_weblayer", "android_webview", "chromeos", + "fuchsia", "linux", "mac", "windows" ], "experiments": [ { - "name": "Disabled", - "disable_features": [ - "V8Flag_memory_reducer_favors_memory" + "name": "Enabled", + "enable_features": [ + "V8Flag_new_old_generation_heap_size" ] } ] @@ -26693,29 +26980,6 @@ ] } ], - "V8SetIsLoadingExperiments": [ - { - "platforms": [ - "android", - "chromeos", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Both", - "enable_features": [ - "ComputeCurrentRailModeFromPerformanceScenario", - "RAILInputAsLoading" - ], - "disable_features": [ - "SetIsLoadingAblation" - ] - } - ] - } - ], "V8SideStepTransitions": [ { "platforms": [ @@ -26998,24 +27262,6 @@ ] } ], - "VideoPictureInPictureControlsUpdate2024": [ - { - "platforms": [ - "chromeos", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "VideoPictureInPictureControlsUpdate2024" - ] - } - ] - } - ], "VisibilityAwareResourceScheduler": [ { "platforms": [ @@ -27139,29 +27385,6 @@ ] } ], - "WasmTtsComponentUpdaterV3Enabled": [ - { - "platforms": [ - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "WasmTtsComponentUpdaterV3Enabled" - ] - }, - { - "name": "Disabled", - "disable_features": [ - "WasmTtsComponentUpdaterV3Enabled" - ] - } - ] - } - ], "WebApkBackupAndRestore": [ { "platforms": [ @@ -27205,21 +27428,6 @@ ] } ], - "WebAuthenticationAndroidPasskeyCacheMigration": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "WebAuthenticationAndroidPasskeyCacheMigration" - ] - } - ] - } - ], "WebAuthenticationNewRefreshFlow": [ { "platforms": [ @@ -27248,10 +27456,31 @@ ], "experiments": [ { - "name": "Enabled", + "name": "EnabledIgnoreWorkers", + "params": { + "urgent_discard_ignore_workers": "true" + }, "enable_features": [ "WebContentsDiscard" ] + }, + { + "name": "Enabled", + "params": { + "urgent_discard_ignore_workers": "false" + }, + "enable_features": [ + "WebContentsDiscard" + ] + }, + { + "name": "Disabled", + "params": { + "urgent_discard_ignore_workers": "false" + }, + "disable_features": [ + "WebContentsDiscard" + ] } ] } @@ -27335,23 +27564,6 @@ ] } ], - "WebGPUUseVulkanMemoryModel": [ - { - "platforms": [ - "android", - "android_webview", - "chromeos" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "WebGPUUseVulkanMemoryModel" - ] - } - ] - } - ], "WebOtpBackendAuto": [ { "platforms": [ @@ -27368,6 +27580,25 @@ ] } ], + "WebProtectDlpScanPastedImages": [ + { + "platforms": [ + "chromeos", + "fuchsia", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "DlpScanPastedImages" + ] + } + ] + } + ], "WebRTC-Aec3BufferingMaxAllowedExcessRenderBlocksOverride": [ { "platforms": [ @@ -27420,6 +27651,21 @@ ] } ], + "WebRTC-Agc2SpeechLevelEstimatorExperimental": [ + { + "platforms": [ + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled" + } + ] + } + ], "WebRTC-Audio-GainController2": [ { "platforms": [ @@ -27688,24 +27934,6 @@ ] } ], - "WebRTC-TimestampExtrapolatorConfig": [ - { - "platforms": [ - "android", - "android_webview", - "chromeos", - "ios", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled,outlier_rejection_stddev:2,_v20250825_CANARY_DEV" - } - ] - } - ], "WebRTC-UseAbsCapTimeForG2gMetric": [ { "platforms": [ @@ -27917,6 +28145,26 @@ ] } ], + "WebRtcPqcForDtls": [ + { + "platforms": [ + "android", + "android_webview", + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "WebRtcPqcForDtls" + ] + } + ] + } + ], "WebUIBundledCodeCache": [ { "platforms": [ @@ -27999,22 +28247,34 @@ ] } ], - "WebUITabStrip": [ + "WebUIReloadButtonStudy": [ { "platforms": [ + "chromeos", "linux", + "mac", "windows" ], "experiments": [ { - "name": "Enabled", - "params": { - "availability": "any", - "event_trigger": "name:webui_tab_strip_iph_triggered;comparator:<3;window:1;storage:365", - "event_used": "name:webui_tab_strip_opened;comparator:==0;window:90;storage:365", - "session_rate": "any" - }, - "enable_features": [ + "name": "Control_20251030", + "disable_features": [ + "InitialWebUI", + "WebUIReloadButton" + ] + } + ] + } + ], + "WebUITabStripDeprecation": [ + { + "platforms": [ + "chromeos" + ], + "experiments": [ + { + "name": "Treatment", + "disable_features": [ "WebUITabStrip" ] } @@ -28043,6 +28303,21 @@ ] } ], + "WebViewBypassProvisionalCookieManager": [ + { + "platforms": [ + "android_webview" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "WebViewBypassProvisionalCookieManager" + ] + } + ] + } + ], "WebViewCacheBoundaryInterfaceMethods": [ { "platforms": [ @@ -28179,6 +28454,21 @@ ] } ], + "WebViewMoveWorkToProviderInit": [ + { + "platforms": [ + "android_webview" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "WebViewMoveWorkToProviderInit" + ] + } + ] + } + ], "WebViewOptInToGmsBindServiceOptimization": [ { "platforms": [ @@ -28194,6 +28484,21 @@ ] } ], + "WebViewPersistentMetricsInNoBackupDir": [ + { + "platforms": [ + "android_webview" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "WebViewPersistentMetricsInNoBackupDir" + ] + } + ] + } + ], "WebViewPrefetchHighestPrefetchPriority": [ { "platforms": [ @@ -28203,7 +28508,7 @@ { "name": "Enabled", "params": { - "WebViewPrefetchHighestPrefetchPriorityBurstLimit": "1" + "WebViewPrefetchHighestPrefetchPriorityBurstLimit": "10" }, "enable_features": [ "WebViewPrefetchHighestPrefetchPriority" @@ -28212,24 +28517,6 @@ ] } ], - "WebViewPrefetchNativeLibrary": [ - { - "platforms": [ - "android_webview" - ], - "experiments": [ - { - "name": "Enabled", - "params": { - "WebViewPrefetchFromRenderer": "true" - }, - "enable_features": [ - "WebViewPrefetchNativeLibrary" - ] - } - ] - } - ], "WebViewRecordAppCacheHistograms": [ { "platforms": [ @@ -28335,21 +28622,6 @@ ] } ], - "WebViewShortCircuitShouldInterceptRequest": [ - { - "platforms": [ - "android_webview" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "WebViewShortCircuitShouldInterceptRequest" - ] - } - ] - } - ], "WebViewSpareRendererProcessPriority": [ { "platforms": [ @@ -28486,21 +28758,6 @@ ] } ], - "WebViewUseRenderingHeuristic": [ - { - "platforms": [ - "android_webview" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "WebViewUseRenderingHeuristic" - ] - } - ] - } - ], "WebViewXRequestedWithHeaderControl": [ { "platforms": [ @@ -28531,7 +28788,7 @@ ] } ], - "WebrtcAcceleratedScaling": [ + "WebrtcEncodeReadbackOptimization": [ { "platforms": [ "chromeos", @@ -28543,10 +28800,34 @@ ], "experiments": [ { - "name": "Enabled", + "name": "Enabled_acc_scaling", "enable_features": [ "WebrtcAcceleratedScaling" ], + "disable_features": [ + "BreakoutBoxConversionWithoutSinkSignal", + "MediaFoundationD3DVideoProcessing", + "MediaFoundationSharedImageEncode" + ] + }, + { + "name": "Enabled_si_encoding", + "enable_features": [ + "MediaFoundationD3DVideoProcessing", + "MediaFoundationSharedImageEncode" + ], + "disable_features": [ + "BreakoutBoxConversionWithoutSinkSignal", + "WebrtcAcceleratedScaling" + ] + }, + { + "name": "Enabled_acc_scaling_and_si_encoding", + "enable_features": [ + "MediaFoundationD3DVideoProcessing", + "MediaFoundationSharedImageEncode", + "WebrtcAcceleratedScaling" + ], "disable_features": [ "BreakoutBoxConversionWithoutSinkSignal" ] @@ -28665,25 +28946,6 @@ ] } ], - "WinPlatformLocationProvider": [ - { - "platforms": [ - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "params": { - "LocationProviderManagerMode": "PlatformOnly" - }, - "enable_features": [ - "LocationProviderManager", - "WinSystemLocationPermission" - ] - } - ] - } - ], "WinSboxCsrssLockdown": [ { "platforms": [ @@ -28760,6 +29022,27 @@ ] } ], + "XSLTSpecialTrial": [ + { + "platforms": [ + "android", + "android_webview", + "chromeos", + "ios", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Disabled", + "disable_features": [ + "XSLTSpecialTrial" + ] + } + ] + } + ], "YieldWithInputHint": [ { "platforms": [ @@ -28796,6 +29079,25 @@ ] } ], + "YourSavedInfoSettingsPage": [ + { + "platforms": [ + "windows", + "mac", + "linux", + "chromeos" + ], + "experiments": [ + { + "name": "Enable", + "enable_features": [ + "AutofillAiIgnoresWhetherAddressPrefIsEnabled", + "YourSavedInfoSettingsPage" + ] + } + ] + } + ], "ZPSPrefetchDebouncingDesktop": [ { "platforms": [ diff --git a/tools/under-control/src/third_party/blink/public/mojom/use_counter/metrics/web_feature.mojom b/tools/under-control/src/third_party/blink/public/mojom/use_counter/metrics/web_feature.mojom index 1108bd8c..5d47e6bd 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 @@ -338,8 +338,8 @@ enum WebFeature { kNotificationShowEvent = 565, kSVGTransformListConsolidate = 569, kSVGAnimatedTransformListBaseVal = 570, - kQuotedAnimationName = 571, - kQuotedKeyframesRule = 572, + kOBSOLETE_QuotedAnimationName = 571, + kOBSOLETE_QuotedKeyframesRule = 572, kSrcsetDroppedCandidate = 573, kWindowPostMessage = 574, kRenderRuby = 576, @@ -947,8 +947,8 @@ enum WebFeature { kTextAreaMinLength = 1425, kTopNavigationFromSubFrame = 1426, kPrefixedElementRequestFullscreenInShadow = 1427, - kMediaSourceAbortRemove = 1428, - kMediaSourceDurationTruncatingBuffered = 1429, + kOBSOLETE_MediaSourceAbortRemove = 1428, + kOBSOLETE_MediaSourceDurationTruncatingBuffered = 1429, kAudioContextCrossOriginIframe = 1430, // The above items are available in M53 branch kOBSOLETE_PointerEventSetCapture = 1431, @@ -2472,7 +2472,7 @@ enum WebFeature { kThirdPartyCacheStorage = 3193, kThirdPartyLocalStorage = 3194, kThirdPartySessionStorage = 3195, - kDeclarativeShadowRoot = 3196, + kOBSOLETE_DeclarativeShadowRoot = 3196, kCrossOriginOpenerPolicySameOrigin = 3197, kCrossOriginOpenerPolicySameOriginAllowPopups = 3198, kCrossOriginEmbedderPolicyRequireCorp = 3199, @@ -3689,7 +3689,7 @@ enum WebFeature { kImageSet = 4413, kWindowCloseHistoryLengthOne = 4414, kOBSOLETE_CreateNSResolverWithNonElements = 4415, - kCSSValueAppearanceNonStandard = 4416, + kOBSOLETE_CSSValueAppearanceNonStandard = 4416, kOBSOLETE_CSSGetComputedAnimationDelayZero = 4417, kGetEffectTimingDelayZero = 4418, kScrollend = 4419, @@ -3807,9 +3807,9 @@ enum WebFeature { kOBSOLETE_AttributeValueContainsLtOrGt = 4527, kOBSOLETE_V8ImportAssertionDeprecatedSyntax = 4528, kImageCaptureBackgroundBlur = 4529, - kPrivateNetworkAccessPreflightError = 4530, - kPrivateNetworkAccessPreflightSuccess = 4531, - kPrivateNetworkAccessPreflightWarning = 4532, + kOBSOLETE_PrivateNetworkAccessPreflightError = 4530, + kOBSOLETE_PrivateNetworkAccessPreflightSuccess = 4531, + kOBSOLETE_PrivateNetworkAccessPreflightWarning = 4532, kCSSGetComputedAnimationDurationZero = 4533, kCSSGetComputedWebkitFontSmoothingAnimationDurationZero = 4534, kDocumentOpenAliasedOriginDocumentDomain = 4535, @@ -3852,7 +3852,7 @@ enum WebFeature { kV8FileSystemFileHandle_GetFile_Method = 4569, kV8FileSystemHandle_GetUniqueId_Method = 4570, kV8FileSystemHandle_Remove_Method = 4571, - kPerformanceNavigateSystemEntropy = 4572, + kOBSOLETE_PerformanceNavigateSystemEntropy = 4572, kV8InvalidatedNumberStringNotRegexpLikeProtector = 4573, kCriticalCHRestartNavigationTiming = 4574, kTopLevelDocumentWithEmbeddedCredentials = 4575, @@ -4331,7 +4331,7 @@ enum WebFeature { kButtonTypeAttrEmptyString = 5033, kProtectedAudienceDirectFromSellerSignals = 5034, kOBSOLETE_WebGPUSubgroupsFeatures = 5035, - kAudioContextOnError = 5036, + kOBSOLETE_AudioContextOnError = 5036, kNoVarySearchPrerender = 5037, // The items above roughly this point are available in the M128 branch. kOBSOLETE_V8AITextSession_Clone_Method = 5038, @@ -4371,8 +4371,8 @@ enum WebFeature { // The items above roughly this point are available in the M129 branch. kFencedFrameCanLoadOpaqueURL = 5072, kV8Performance_Memory_AttributeGetter_NotLockedToSite = 5073, - kPartitionedPopin_OpenAttempt = 5074, - kPartitionedPopin_Opened = 5075, + kOBSOLETE_PartitionedPopin_OpenAttempt = 5074, + kOBSOLETE_PartitionedPopin_Opened = 5075, kOBSOLETE_V8AISummarizer_SharedContext_AttributeGetter = 5076, kOBSOLETE_V8AISummarizer_Type_AttributeGetter = 5077, kOBSOLETE_V8AISummarizer_Format_AttributeGetter = 5078, @@ -4393,8 +4393,8 @@ enum WebFeature { kOBSOLETE_V8AIAssistant_Destroy_Method = 5093, kOBSOLETE_V8AIAssistant_Prompt_Method = 5094, kOBSOLETE_V8AIAssistant_PromptStreaming_Method = 5095, - kV8Window_PopinContextTypesSupported_Method = 5096, - kV8Window_PopinContextType_Method = 5097, + kOBSOLETE_V8Window_PopinContextTypesSupported_Method = 5096, + kOBSOLETE_V8Window_PopinContextType_Method = 5097, kWebAuthentication_AttestationFormats = 5098, kCssDisplayPropertyMultipleValues = 5099, kDocumentPolicyExpectNoLinkedResources = 5100, @@ -4766,7 +4766,7 @@ enum WebFeature { kSummarizer_OutputLanguage = 5456, kSummarizer_SharedContext = 5457, kSummarizer_Type = 5458, - kCrossOriginSameSiteCookieAccessViaStorageAccessAPI = 5459, + kOBSOLETE_CrossOriginSameSiteCookieAccessViaStorageAccessAPI = 5459, kOBSOLETE_V8GPUAdapter_IsFallbackAdapter_AttributeGetter = 5460, kLanguageDetector_ExpectedInputLanguages = 5461, kServiceWorkerPushEventListener = 5462, @@ -5031,6 +5031,21 @@ enum WebFeature { kAnimationCompositedTypes = 5715, kAnimationSvgNonCompositedTypes = 5716, kAnimationSvgCompositedTypes = 5717, + kAttributionReportingXhr = 5718, + kDidUseServerHttpAuthOnCrossPartitionRequest = 5719, + kLcpCandidateRemovedWhilePaintTimePending = 5720, + kGetBBoxForElementWithZeroWidthOrHeight = 5721, + kGetBBoxForNestedSVGElementWithZeroWidthOrHeight = 5722, + kXMLExternalResourceLoadEntitiesOnly = 5723, + kV8Origin_IsSameOrigin_Method = 5724, + kV8Origin_IsSameSite_Method = 5725, + kV8Origin_From_Method = 5726, + kV8Origin_FromURL_Method = 5727, + kV8Origin_Parse_Method = 5728, + kExtendedTextMetrics = 5729, + kUseCssSizingProperties = 5730, + kSharedStorageAPIAll = 5731, + kGamepadRawInputChangeEventListener = 5732, // 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 34779a40..7f44cff8 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 @@ -137,6 +137,7 @@ struct WebPreferences { bool shrinks_standalone_images_to_fit; bool text_areas_are_resizable; bool allow_scripts_to_close_windows; + bool allow_window_focus_without_user_gesture; bool remote_fonts_enabled; bool javascript_can_access_clipboard; // We don't use dns_prefetching_enabled to disable DNS prefetching. Instead, @@ -181,7 +182,8 @@ struct WebPreferences { // Disallow user opt-in for blockable mixed content. bool strictly_block_blockable_mixed_content; bool block_mixed_plugin_content; - bool password_echo_enabled; + bool password_echo_enabled_physical; + bool password_echo_enabled_touch; bool should_clear_document_background; bool enable_scroll_animator; bool prefers_reduced_motion; @@ -512,8 +514,6 @@ struct WebPreferences { // WebView and by `kWebPayments` feature flag everywhere. bool payment_request_enabled = false; - bool content_based_fingerprinting_protection_enabled = false; - bool ai_prompt_api_enabled = false; [EnableIf=is_android] 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 5f659f27..efc20247 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 @@ -24,4 +24,5 @@ enum AnimationTriggerBehavior { ] interface AnimationTrigger { [RaisesException] void addAnimation(Animation animation, AnimationTriggerBehavior activateBehavior, optional AnimationTriggerBehavior deactivateBehavior = "none"); void removeAnimation(Animation animation); + sequence getAnimations(); }; diff --git a/tools/under-control/src/third_party/blink/renderer/core/canvas_interventions/canvas_interventions_test.idl b/tools/under-control/src/third_party/blink/renderer/core/canvas_interventions/canvas_interventions_test.idl deleted file mode 100755 index 2071cd91..00000000 --- a/tools/under-control/src/third_party/blink/renderer/core/canvas_interventions/canvas_interventions_test.idl +++ /dev/null @@ -1,13 +0,0 @@ -// 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. - -// Interface to retrieve the canvas noise token associated with the -// ExecutionContext. It's not enabled outside of test environments. -[ - Exposed=(Window, Worker), - RuntimeEnabled=CanvasInterventionsTest -] -interface CanvasInterventionsTest { - [CallWith=ExecutionContext] static DOMString? getCanvasNoiseToken(); -}; 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 dea6f79c..8123250b 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 @@ -332,7 +332,7 @@ AtomicString MediaQueryParser::ConsumeRangeContextFeatureName( // // Where is a that does not allow // any of the delimiters accepted by or . -const MediaQueryExpNode* MediaQueryParser::ConsumeStyleFeatureRange( +const ConditionalExpNode* MediaQueryParser::ConsumeStyleFeatureRange( CSSParserTokenStream& stream) { CSSParserTokenStream::State start = stream.Save(); std::optional value1 = @@ -382,7 +382,7 @@ const MediaQueryExpNode* MediaQueryParser::ConsumeStyleFeatureRange( MediaQueryExp::Create(value2.value(), MediaQueryExpBounds(left, right))); } -const MediaQueryExpNode* MediaQueryParser::ConsumeFeature( +const ConditionalExpNode* MediaQueryParser::ConsumeFeature( CSSParserTokenStream& stream, const FeatureSet& feature_set) { // There are several possible grammars for media queries, and we don't @@ -556,96 +556,22 @@ const MediaQueryExpNode* MediaQueryParser::ConsumeFeature( MediaQueryExpComparison(*value2, op2)))); } -const MediaQueryExpNode* MediaQueryParser::ConsumeCondition( - CSSParserTokenStream& stream, - ConditionMode mode) { - // - if (ConsumeIfIdent(stream, "not")) { - return MediaQueryExpNode::Not(ConsumeInParens(stream)); - } - - // Otherwise: - // [ * | * ] - - const MediaQueryExpNode* result = ConsumeInParens(stream); - - if (AtIdent(stream.Peek(), "and")) { - while (result && ConsumeIfIdent(stream, "and")) { - result = MediaQueryExpNode::And(result, ConsumeInParens(stream)); - } - } else if (result && AtIdent(stream.Peek(), "or") && - mode == ConditionMode::kNormal) { - while (result && ConsumeIfIdent(stream, "or")) { - result = MediaQueryExpNode::Or(result, ConsumeInParens(stream)); - } - } - - return result; -} - -const MediaQueryExpNode* MediaQueryParser::ConsumeInParens( +const ConditionalExpNode* MediaQueryParser::ConsumeLeaf( CSSParserTokenStream& stream) { - if (stream.Peek().GetType() == kLeftParenthesisToken) { - { - CSSParserTokenStream::RestoringBlockGuard guard(stream); - stream.ConsumeWhitespace(); - - // ( ) - const MediaQueryExpNode* condition = ConsumeCondition(stream); - if (condition && guard.Release()) { - stream.ConsumeWhitespace(); - return MediaQueryExpNode::Nested(condition); - } - } - - { - CSSParserTokenStream::RestoringBlockGuard guard(stream); - stream.ConsumeWhitespace(); - // ( ) - const MediaQueryExpNode* feature = - ConsumeFeature(stream, MediaQueryParser::MediaQueryFeatureSet()); - if (feature && guard.Release()) { - stream.ConsumeWhitespace(); - return MediaQueryExpNode::Nested(feature); - } - } - } - - // - return ConsumeGeneralEnclosed(stream); -} - -const MediaQueryExpNode* MediaQueryParser::ConsumeGeneralEnclosed( - CSSParserTokenStream& stream) { - if (stream.Peek().GetType() != kLeftParenthesisToken && - stream.Peek().GetType() != kFunctionToken) { - return nullptr; - } - - wtf_size_t start_offset = stream.Offset(); - StringView general_enclosed; - { - CSSParserTokenStream::BlockGuard guard(stream); - - stream.ConsumeWhitespace(); - - // Note that is optional in , so having an - // empty block is fine. - ConsumeAnyValue(stream); - if (!stream.AtEnd()) { - return nullptr; - } - } - - wtf_size_t end_offset = stream.Offset(); - - // TODO(crbug.com/962417): This is not well specified. - general_enclosed = - stream.StringRangeAt(start_offset, end_offset - start_offset); - stream.ConsumeWhitespace(); - return MakeGarbageCollected( - general_enclosed.ToString()); + // ( ) + if (const ConditionalExpNode* feature = + ConsumeFeature(stream, MediaQueryParser::MediaQueryFeatureSet())) { + stream.ConsumeWhitespace(); + return feature; + } + + return nullptr; +} + +const ConditionalExpNode* MediaQueryParser::ConsumeFunction( + CSSParserTokenStream&) { + return nullptr; } MediaQuerySet* MediaQueryParser::ConsumeSingleCondition( @@ -654,7 +580,7 @@ MediaQuerySet* MediaQueryParser::ConsumeSingleCondition( DCHECK(!stream.AtEnd()); HeapVector> queries; - const MediaQueryExpNode* node = ConsumeCondition(stream); + const ConditionalExpNode* node = ConsumeCondition(stream); if (!node) { queries.push_back(MediaQuery::CreateNotAll()); } else { @@ -678,8 +604,8 @@ MediaQuery* MediaQueryParser::ConsumeQuery(CSSParserTokenStream& stream) { if (!ConsumeIfIdent(stream, "and")) { return MakeGarbageCollected(restrictor, type, nullptr); } - if (const MediaQueryExpNode* node = - ConsumeCondition(stream, ConditionMode::kWithoutOr)) { + if (const ConditionalExpNode* node = + ConsumeCondition(stream, ParseMode::kWithoutOr)) { return MakeGarbageCollected(restrictor, type, node); } return nullptr; @@ -687,7 +613,7 @@ MediaQuery* MediaQueryParser::ConsumeQuery(CSSParserTokenStream& stream) { stream.Restore(savepoint); // Otherwise, - if (const MediaQueryExpNode* node = ConsumeCondition(stream)) { + if (const ConditionalExpNode* node = ConsumeCondition(stream)) { return MakeGarbageCollected(MediaQuery::RestrictorType::kNone, media_type_names::kAll, node); } diff --git a/tools/under-control/src/third_party/blink/renderer/core/dom/document.idl b/tools/under-control/src/third_party/blink/renderer/core/dom/document.idl index 26b6e09a..733919dd 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/dom/document.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/dom/document.idl @@ -35,8 +35,7 @@ typedef (HTMLScriptElement or SVGScriptElement) HTMLOrSVGScriptElement; [CallWith=Document] constructor(); [SameObject] readonly attribute DOMImplementation implementation; [ImplementedAs=urlForBinding] readonly attribute USVString URL; - // FIXME: documentURI should not be nullable. - [ImplementedAs=urlForBinding] readonly attribute USVString? documentURI; + [ImplementedAs=urlForBinding] readonly attribute USVString documentURI; readonly attribute DOMString compatMode; readonly attribute DOMString characterSet; diff --git a/tools/under-control/src/third_party/blink/renderer/core/dom/dom_token_list.idl b/tools/under-control/src/third_party/blink/renderer/core/dom/dom_token_list.idl index e84c4263..9a0dc89b 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/dom/dom_token_list.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/dom/dom_token_list.idl @@ -36,7 +36,6 @@ [RaisesException, CEReactions] boolean toggle(DOMString token, optional boolean force); [RaisesException, CEReactions] boolean replace(DOMString token, DOMString newToken); [RaisesException] boolean supports(DOMString token); - [CEReactions] attribute DOMString value; - stringifier; + [CEReactions] stringifier attribute DOMString value; iterable; }; 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 2ba90fd0..f56d3be5 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 @@ -117,6 +117,9 @@ dictionary SetHTMLUnsafeOptions { [RuntimeEnabled=SanitizerAPI,RaisesException,MeasureAs=SetHTMLUnsafe,CEReactions] void setHTMLUnsafe((TrustedHTML or DOMString) html, SetHTMLUnsafeOptions options); [RuntimeEnabled=SanitizerAPI,RaisesException,MeasureAs=SetHTMLSafe,CEReactions] void setHTML(DOMString html, optional SetHTMLOptions options = {}); + // https://github.com/whatwg/html/issues/2142 + [RuntimeEnabled=DocumentPatching, CallWith=ScriptState, RaisesException] WritableStream streamAppendHTMLUnsafe(); + // Declarative Shadow DOM getHTML() function. [Affects=Nothing, MeasureAs=ElementGetHTML, RaisesException] DOMString getHTML(optional GetHTMLOptions options = {}); @@ -174,7 +177,6 @@ dictionary SetHTMLUnsafeOptions { [CEReactions, Reflect=elementtiming] attribute DOMString elementTiming; [RuntimeEnabled=ContainerTiming, CEReactions, Reflect=containertiming] attribute DOMString containerTiming; [RuntimeEnabled=ContainerTiming, CEReactions, Reflect=containertiming-ignore] attribute boolean containerTimingIgnore; - [RuntimeEnabled=ContainerTiming, CEReactions, Reflect=containertiming-nesting] attribute DOMString containerTimingNesting; // Heading Offset [CEReactions, RuntimeEnabled=HeadingOffset] attribute unsigned long headingOffset; diff --git a/tools/under-control/src/third_party/blink/renderer/core/dom/events/event.idl b/tools/under-control/src/third_party/blink/renderer/core/dom/events/event.idl index e4cf6dd5..9c958327 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/dom/events/event.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/dom/events/event.idl @@ -53,7 +53,7 @@ [Measure] undefined initEvent(DOMString type, optional boolean bubbles = false, optional boolean cancelable = false); - [MeasureAs=EventSrcElement] readonly attribute EventTarget srcElement; + [MeasureAs=EventSrcElement] readonly attribute EventTarget? srcElement; [MeasureAs=EventReturnValue, CallWith=ScriptState, ImplementedAs=legacyReturnValue] attribute boolean returnValue; [MeasureAs=EventCancelBubble, CallWith=ScriptState] attribute boolean cancelBubble; }; diff --git a/tools/under-control/src/third_party/blink/renderer/core/dom/form_control_range.idl b/tools/under-control/src/third_party/blink/renderer/core/dom/form_control_range.idl index 9a50f607..27bf3e85 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/dom/form_control_range.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/dom/form_control_range.idl @@ -12,5 +12,7 @@ unsigned long start, unsigned long end); + DOMRectList getClientRects(); + DOMRect getBoundingClientRect(); stringifier; }; 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 f99027b1..a1a05a93 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 @@ -58,6 +58,8 @@ interface ShadowRoot : DocumentFragment { [RuntimeEnabled=SanitizerAPI,RaisesException,MeasureAs=SetHTMLUnsafe,CEReactions] void setHTMLUnsafe((TrustedHTML or DOMString) html, SetHTMLUnsafeOptions options); [RuntimeEnabled=SanitizerAPI,RaisesException,MeasureAs=SetHTMLSafe,CEReactions] void setHTML(DOMString html, optional SetHTMLOptions options = {}); + // https://github.com/whatwg/html/issues/2142 + [RuntimeEnabled=DocumentPatching, CallWith=ScriptState, RaisesException] WritableStream streamAppendHTMLUnsafe(); }; ShadowRoot includes DocumentOrShadowRoot; diff --git a/tools/under-control/src/third_party/blink/renderer/core/events/event_type_names.json5 b/tools/under-control/src/third_party/blink/renderer/core/events/event_type_names.json5 index 0260c5f5..7f67d997 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 @@ -105,7 +105,6 @@ "deviceorientationabsolute", "dischargingtimechange", "disconnect", - "dismiss", "display", "dispose", "downloadprogress", @@ -143,6 +142,7 @@ "fullscreenerror", "gamepadconnected", "gamepaddisconnected", + "gamepadrawinputchanged", "gatheringstatechange", "gattserverdisconnected", "geofenceenter", @@ -273,7 +273,6 @@ "reset", "resetpose", "resize", - "resolve", "resourcetimingbufferfull", "result", "resume", @@ -378,6 +377,7 @@ "webkitspeechchange", "webkitvisibilitychange", "wheel", + "writablechange", "write", "writeend", "writestart", diff --git a/tools/under-control/src/third_party/blink/renderer/core/events/mouse_event.idl b/tools/under-control/src/third_party/blink/renderer/core/events/mouse_event.idl index ebd95577..f0cbbddb 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/events/mouse_event.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/events/mouse_event.idl @@ -23,8 +23,8 @@ Exposed=Window ] interface MouseEvent : UIEvent { [CallWith=ScriptState] constructor(DOMString type, optional MouseEventInit eventInitDict = {}); - [HighEntropy, MeasureAs=MouseEventScreenX] readonly attribute double screenX; - [HighEntropy, MeasureAs=MouseEventScreenY] readonly attribute double screenY; + [MeasureAs=MouseEventScreenX] readonly attribute double screenX; + [MeasureAs=MouseEventScreenY] readonly attribute double screenY; readonly attribute double clientX; readonly attribute double clientY; readonly attribute boolean ctrlKey; diff --git a/tools/under-control/src/third_party/blink/renderer/core/events/navigator_events.idl b/tools/under-control/src/third_party/blink/renderer/core/events/navigator_events.idl index 78c753fd..ff9ea1ab 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/events/navigator_events.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/events/navigator_events.idl @@ -33,5 +33,5 @@ [ ImplementedAs=NavigatorEvents ] partial interface Navigator { - [HighEntropy=Direct, MeasureAs=NavigatorMaxTouchPoints] readonly attribute long maxTouchPoints; + [MeasureAs=NavigatorMaxTouchPoints] readonly attribute long maxTouchPoints; }; diff --git a/tools/under-control/src/third_party/blink/renderer/core/events/wheel_event.idl b/tools/under-control/src/third_party/blink/renderer/core/events/wheel_event.idl index 19902695..1ec9be97 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/events/wheel_event.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/events/wheel_event.idl @@ -32,10 +32,10 @@ readonly attribute double deltaX; readonly attribute double deltaY; readonly attribute double deltaZ; - [HighEntropy=Direct, Measure] readonly attribute unsigned long deltaMode; + [Measure] readonly attribute unsigned long deltaMode; // Non-standard APIs - [HighEntropy=Direct, MeasureAs=WheelEventWheelDeltaX] readonly attribute long wheelDeltaX; - [HighEntropy=Direct, MeasureAs=WheelEventWheelDeltaY] readonly attribute long wheelDeltaY; - [HighEntropy=Direct, MeasureAs=WheelEventWheelDelta] readonly attribute long wheelDelta; + [MeasureAs=WheelEventWheelDeltaX] readonly attribute long wheelDeltaX; + [MeasureAs=WheelEventWheelDeltaY] readonly attribute long wheelDeltaY; + [MeasureAs=WheelEventWheelDelta] readonly attribute long wheelDelta; }; 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 385c4b6a..05de5050 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 @@ -64,7 +64,6 @@ #include "third_party/blink/public/mojom/page/draggable_region.mojom-blink.h" #include "third_party/blink/public/mojom/page/prerender_page_param.mojom.h" #include "third_party/blink/public/mojom/page/widget.mojom-blink.h" -#include "third_party/blink/public/mojom/partitioned_popins/partitioned_popin_params.mojom.h" #include "third_party/blink/public/mojom/window_features/window_features.mojom-blink.h" #include "third_party/blink/public/platform/interface_registry.h" #include "third_party/blink/public/platform/platform.h" @@ -502,10 +501,8 @@ WebView* WebView::Create( std::optional page_base_background_color, const base::UnguessableToken& browsing_context_group_token, const ColorProviderColorMaps* color_provider_colors, - blink::mojom::PartitionedPopinParamsPtr partitioned_popin_params, int32_t history_index, - int32_t history_length, - const std::optional& canvas_noise_token) { + int32_t history_length) { return WebViewImpl::Create( client, is_hidden ? mojom::blink::PageVisibilityState::kHidden @@ -514,8 +511,7 @@ WebView* WebView::Create( widgets_never_composited, To(opener), std::move(page_handle), agent_group_scheduler, session_storage_namespace_id, std::move(page_base_background_color), browsing_context_group_token, - color_provider_colors, std::move(partitioned_popin_params), history_index, - history_length, canvas_noise_token); + color_provider_colors, history_index, history_length); } WebViewImpl* WebViewImpl::Create( @@ -533,18 +529,15 @@ WebViewImpl* WebViewImpl::Create( std::optional page_base_background_color, const base::UnguessableToken& browsing_context_group_token, const ColorProviderColorMaps* color_provider_colors, - blink::mojom::PartitionedPopinParamsPtr partitioned_popin_params, int32_t history_index, - int32_t history_length, - const std::optional& canvas_noise_token) { + int32_t history_length) { return new WebViewImpl( client, visibility, std::move(prerender_param), fenced_frame_mode, compositing_enabled, widgets_never_composited, opener, std::move(page_handle), agent_group_scheduler, session_storage_namespace_id, std::move(page_base_background_color), - browsing_context_group_token, color_provider_colors, - std::move(partitioned_popin_params), history_index, history_length, - canvas_noise_token); + browsing_context_group_token, color_provider_colors, history_index, + history_length); } size_t WebView::GetWebViewCount() { @@ -562,9 +555,9 @@ void WebView::ResetVisitedLinkState(bool invalidate_visited_link_hashes) { void WebViewImpl::SetNoStatePrefetchClient( WebNoStatePrefetchClient* no_state_prefetch_client) { DCHECK(page_); - ProvideNoStatePrefetchClientTo(*page_, - MakeGarbageCollected( - *page_, no_state_prefetch_client)); + ProvideNoStatePrefetchClientTo( + *page_, + MakeGarbageCollected(no_state_prefetch_client)); } void WebViewImpl::CloseWindow() { @@ -609,10 +602,8 @@ WebViewImpl::WebViewImpl( std::optional page_base_background_color, const base::UnguessableToken& browsing_context_group_token, const ColorProviderColorMaps* color_provider_colors, - blink::mojom::PartitionedPopinParamsPtr partitioned_popin_params, int32_t history_index, - int32_t history_length, - const std::optional& canvas_noise_token) + int32_t history_length) : widgets_never_composited_(widgets_never_composited), web_view_client_(client), chrome_client_(MakeGarbageCollected(this)), @@ -645,8 +636,7 @@ WebViewImpl::WebViewImpl( page_ = Page::CreateOrdinary( *chrome_client_, opener ? opener->GetPage() : nullptr, agent_group_scheduler.GetAgentGroupScheduler(), - browsing_context_group_token, color_provider_colors, - std::move(partitioned_popin_params), canvas_noise_token); + browsing_context_group_token, color_provider_colors); CoreInitializer::GetInstance().ProvideModulesToPage( *page_, session_storage_namespace_id_); @@ -1627,6 +1617,8 @@ void WebView::ApplyWebPreferences(const web_pref::WebPreferences& prefs, settings->SetDOMPasteAllowed(prefs.dom_paste_enabled); settings->SetTextAreasAreResizable(prefs.text_areas_are_resizable); settings->SetAllowScriptsToCloseWindows(prefs.allow_scripts_to_close_windows); + settings->SetAllowWindowFocusWithoutUserGesture( + prefs.allow_window_focus_without_user_gesture); settings->SetDownloadableBinaryFontsEnabled(prefs.remote_fonts_enabled); settings->SetJavaScriptCanAccessClipboard( prefs.javascript_can_access_clipboard); @@ -1700,7 +1692,9 @@ void WebView::ApplyWebPreferences(const web_pref::WebPreferences& prefs, prefs.strict_powerful_feature_restrictions); settings->SetAllowGeolocationOnInsecureOrigins( prefs.allow_geolocation_on_insecure_origins); - settings->SetPasswordEchoEnabled(prefs.password_echo_enabled); + settings->SetPasswordEchoEnabledPhysical( + prefs.password_echo_enabled_physical); + settings->SetPasswordEchoEnabledTouch(prefs.password_echo_enabled_touch); settings->SetShouldPrintBackgrounds(prefs.should_print_backgrounds); settings->SetShouldClearDocumentBackground( prefs.should_clear_document_background); @@ -3140,8 +3134,6 @@ void WebViewImpl::Show(const LocalFrameToken& opener_frame_token, window_features->has_width = web_window_features.width_set; window_features->has_height = web_window_features.height_set; window_features->is_popup = web_window_features.is_popup; - window_features->is_partitioned_popin = - web_window_features.is_partitioned_popin; local_main_frame_host_remote_->ShowCreatedWindow( opener_frame_token, NavigationPolicyToDisposition(policy), std::move(window_features), opened_by_user_gesture, @@ -3164,6 +3156,7 @@ void WebViewImpl::DidAccessInitialMainDocument() { local_main_frame_host_remote_->DidAccessInitialMainDocument(); } +#if !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_IOS) void WebViewImpl::Minimize() { DCHECK(local_main_frame_host_remote_); local_main_frame_host_remote_->Minimize(); @@ -3183,6 +3176,7 @@ void WebViewImpl::SetResizable(bool resizable) { DCHECK(local_main_frame_host_remote_); local_main_frame_host_remote_->SetResizable(resizable); } +#endif // !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_IOS) void WebViewImpl::UpdateTargetURL(const WebURL& url, const WebURL& fallback_url) { @@ -3498,15 +3492,6 @@ void WebViewImpl::UpdateUseOverlayScrollbar(bool use_overlay_scrollbar) { } #endif -void WebViewImpl::UpdateCanvasNoiseToken( - std::optional canvas_noise_token) { - GetPage()->SetCanvasNoiseToken(canvas_noise_token); -} - -std::optional WebViewImpl::CanvasNoiseTokenForTesting() { - return GetPage()->CanvasNoiseToken(); -} - void WebViewImpl::ActivatePrerenderedPage( mojom::blink::PrerenderPageActivationParamsPtr prerender_page_activation_params, @@ -3625,6 +3610,11 @@ void WebViewImpl::UpdateRendererPreferences( renderer_preferences_.selection_clipboard_buffer_available); #endif // BUILDFLAG(IS_OZONE) +#if BUILDFLAG(IS_LINUX) + GetSettings()->SetMiddleClickPasteAllowed( + renderer_preferences_.middle_click_paste_allowed); +#endif // BUILDFLAG(IS_LINUX) + SetExplicitlyAllowedPorts( renderer_preferences_.explicitly_allowed_network_ports); @@ -4120,6 +4110,10 @@ void WebViewImpl::SetSupportsDraggableRegions(bool supports_draggable_regions) { if (supports_draggable_regions_) { local_frame->View()->UpdateDocumentDraggableRegions(); } else { + if (!local_frame->GetDocument()->HasDraggableRegions()) { + return; + } + local_frame->GetDocument()->SetDraggableRegions( Vector()); chrome_client_->DraggableRegionsChanged(); diff --git a/tools/under-control/src/third_party/blink/renderer/core/fetch/request.idl b/tools/under-control/src/third_party/blink/renderer/core/fetch/request.idl index bd6904c6..c4b3c945 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/fetch/request.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/fetch/request.idl @@ -23,9 +23,6 @@ enum RequestDestination { // https://wicg.github.io/shared-storage/#request-destination-monkey-patch "sharedstorageworklet", - // https://w3c-fedid.github.io/FedCM/ - "webidentity", - // https://github.com/whatwg/fetch/issues/1120 "webbundle", }; diff --git a/tools/under-control/src/third_party/blink/renderer/core/fetch/request_init.idl b/tools/under-control/src/third_party/blink/renderer/core/fetch/request_init.idl index 5f729278..7e282cc8 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/fetch/request_init.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/fetch/request_init.idl @@ -32,7 +32,7 @@ dictionary RequestInit { // available in secure contexts, this has to be enforced after the fact // because the SecureContext IDL attribute doesn't affect dictionary members. [RuntimeEnabled=PrivateStateTokens] PrivateToken privateToken; - [RuntimeEnabled=AttributionReporting] AttributionReportingRequestOptions attributionReporting; + [RuntimeEnabled=AttributionReporting, DeprecateAs=AttributionReportingAPIAll] AttributionReportingRequestOptions attributionReporting; [RuntimeEnabled=FetchRetry] RetryOptions retryOptions; // TODO(domfarolino): add support for RequestInit window member. //any window; // can only be set to null diff --git a/tools/under-control/src/third_party/blink/renderer/core/frame/history.idl b/tools/under-control/src/third_party/blink/renderer/core/frame/history.idl index bd2c8072..e7deeeac 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/frame/history.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/frame/history.idl @@ -30,7 +30,7 @@ enum ScrollRestoration {"auto", "manual"}; [ Exposed=Window ] interface History { - [HighEntropy=Direct, MeasureAs=HistoryLength, RaisesException] readonly attribute unsigned long length; + [MeasureAs=HistoryLength, RaisesException] readonly attribute unsigned long length; [Measure, RaisesException] attribute ScrollRestoration scrollRestoration; [CallWith=ScriptState, RaisesException] readonly attribute any state; [CallWith=ScriptState, RaisesException] void go(optional long delta = 0); diff --git a/tools/under-control/src/third_party/blink/renderer/core/frame/navigator.idl b/tools/under-control/src/third_party/blink/renderer/core/frame/navigator.idl index c66bc240..37601c64 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/frame/navigator.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/frame/navigator.idl @@ -25,13 +25,13 @@ // objects implementing this interface also implement the interfaces given below // TODO(foolip): vendorSub should be on NavigatorID. - [HighEntropy=Direct, MeasureAs=NavigatorVendorSub] readonly attribute DOMString vendorSub; + [MeasureAs=NavigatorVendorSub] readonly attribute DOMString vendorSub; // TODO(foolip): productSub and vendor are not yet in the spec: // https://www.w3.org/Bugs/Public/show_bug.cgi?id=27954 - [HighEntropy=Direct, MeasureAs=NavigatorProductSub] readonly attribute DOMString productSub; + [MeasureAs=NavigatorProductSub] readonly attribute DOMString productSub; // https://www.w3.org/Bugs/Public/show_bug.cgi?id=27786 - [HighEntropy=Direct, MeasureAs=NavigatorVendor] readonly attribute DOMString vendor; + [MeasureAs=NavigatorVendor] readonly attribute DOMString vendor; }; Navigator includes NavigatorConcurrentHardware; @@ -42,3 +42,4 @@ Navigator includes NavigatorLanguage; Navigator includes NavigatorOnLine; Navigator includes NavigatorAutomationInformation; Navigator includes NavigatorUA; +Navigator includes NavigatorPlugins; diff --git a/tools/under-control/src/third_party/blink/renderer/core/frame/navigator_automation_information.idl b/tools/under-control/src/third_party/blink/renderer/core/frame/navigator_automation_information.idl index 31bf37cb..909497fe 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/frame/navigator_automation_information.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/frame/navigator_automation_information.idl @@ -5,5 +5,5 @@ // https://w3c.github.io/webdriver/#interface interface mixin NavigatorAutomationInformation { - [HighEntropy] readonly attribute boolean webdriver; + readonly attribute boolean webdriver; }; diff --git a/tools/under-control/src/third_party/blink/renderer/core/frame/navigator_concurrent_hardware.idl b/tools/under-control/src/third_party/blink/renderer/core/frame/navigator_concurrent_hardware.idl index d85c0f7d..d675cc36 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/frame/navigator_concurrent_hardware.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/frame/navigator_concurrent_hardware.idl @@ -5,5 +5,5 @@ // https://html.spec.whatwg.org/C/#navigator.hardwareconcurrency interface mixin NavigatorConcurrentHardware { - [HighEntropy=Direct, MeasureAs=NavigatorHardwareConcurrency] readonly attribute unsigned long long hardwareConcurrency; + [MeasureAs=NavigatorHardwareConcurrency] readonly attribute unsigned long long hardwareConcurrency; }; diff --git a/tools/under-control/src/third_party/blink/renderer/core/frame/navigator_cookies.idl b/tools/under-control/src/third_party/blink/renderer/core/frame/navigator_cookies.idl index 3d39a565..76c3a2c2 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/frame/navigator_cookies.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/frame/navigator_cookies.idl @@ -5,6 +5,6 @@ // https://html.spec.whatwg.org/C/#cookies interface mixin NavigatorCookies { - [HighEntropy=Direct,MeasureAs=NavigatorCookieEnabled] + [MeasureAs=NavigatorCookieEnabled] readonly attribute boolean cookieEnabled; }; diff --git a/tools/under-control/src/third_party/blink/renderer/core/frame/navigator_cpu_performance.idl b/tools/under-control/src/third_party/blink/renderer/core/frame/navigator_cpu_performance.idl index 08742cd8..0d0d3ffa 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/frame/navigator_cpu_performance.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/frame/navigator_cpu_performance.idl @@ -9,6 +9,6 @@ SameObject, SecureContext ] partial interface Navigator { - [HighEntropy=Direct, MeasureAs=NavigatorCPUPerformance] + [MeasureAs=NavigatorCPUPerformance] readonly attribute unsigned short cpuPerformance; }; diff --git a/tools/under-control/src/third_party/blink/renderer/core/frame/navigator_device_memory.idl b/tools/under-control/src/third_party/blink/renderer/core/frame/navigator_device_memory.idl index e1399af3..6a57f550 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/frame/navigator_device_memory.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/frame/navigator_device_memory.idl @@ -5,6 +5,6 @@ // https://github.com/w3c/device-memory#the-web-exposed-api interface mixin NavigatorDeviceMemory { - [HighEntropy=Direct,MeasureAs=NavigatorDeviceMemory,SecureContext] + [MeasureAs=NavigatorDeviceMemory,SecureContext] readonly attribute float deviceMemory; }; diff --git a/tools/under-control/src/third_party/blink/renderer/core/frame/navigator_id.idl b/tools/under-control/src/third_party/blink/renderer/core/frame/navigator_id.idl index ed29e509..99da043b 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/frame/navigator_id.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/frame/navigator_id.idl @@ -33,10 +33,10 @@ interface mixin NavigatorID { readonly attribute DOMString appCodeName; // constant "Mozilla" readonly attribute DOMString appName; // constant "Netscape" - [HighEntropy=Direct, MeasureAs=NavigatorAppVersion] readonly attribute DOMString appVersion; - [HighEntropy=Direct, MeasureAs=NavigatorPlatform] readonly attribute DOMString platform; + [MeasureAs=NavigatorAppVersion] readonly attribute DOMString appVersion; + [MeasureAs=NavigatorPlatform] readonly attribute DOMString platform; readonly attribute DOMString product; // constant "Gecko" // https://www.w3.org/Bugs/Public/show_bug.cgi?id=22555 // boolean taintEnabled(); // constant false - [HighEntropy=Direct, MeasureAs=NavigatorUserAgent] readonly attribute DOMString userAgent; + [MeasureAs=NavigatorUserAgent] readonly attribute DOMString userAgent; }; diff --git a/tools/under-control/src/third_party/blink/renderer/core/frame/navigator_language.idl b/tools/under-control/src/third_party/blink/renderer/core/frame/navigator_language.idl index 2e4e5a52..5f116951 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/frame/navigator_language.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/frame/navigator_language.idl @@ -5,6 +5,6 @@ // https://html.spec.whatwg.org/C/#language-preferences interface mixin NavigatorLanguage { - [HighEntropy=Direct, MeasureAs=NavigatorLanguage] readonly attribute DOMString language; - [CachedAttribute=IsLanguagesDirty, HighEntropy=Direct, MeasureAs=NavigatorLanguages] readonly attribute FrozenArray languages; + [MeasureAs=NavigatorLanguage] readonly attribute DOMString language; + [CachedAttribute=IsLanguagesDirty, MeasureAs=NavigatorLanguages] readonly attribute FrozenArray languages; }; diff --git a/tools/under-control/src/third_party/blink/renderer/core/frame/navigator_ua_data.idl b/tools/under-control/src/third_party/blink/renderer/core/frame/navigator_ua_data.idl index 3ffb9192..5edd01e1 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/frame/navigator_ua_data.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/frame/navigator_ua_data.idl @@ -5,9 +5,9 @@ // https://github.com/WICG/ua-client-hints [Exposed=(Window,Worker)] interface NavigatorUAData { - [HighEntropy, MeasureAs=NavigatorUAData_Brands] readonly attribute FrozenArray brands; - [HighEntropy=Direct, MeasureAs=NavigatorUAData_Mobile] readonly attribute boolean mobile; - [HighEntropy=Direct, MeasureAs=NavigatorUAData_Platform] readonly attribute DOMString platform; - [HighEntropy, CallWith=ScriptState, MeasureAs=NavigatorUAData_GetHighEntropyValues] Promise getHighEntropyValues(sequence hints); - [HighEntropy, CallWith=ScriptState, MeasureAs=NavigatorUAData_toJSON] object toJSON(); + [MeasureAs=NavigatorUAData_Brands] readonly attribute FrozenArray brands; + [MeasureAs=NavigatorUAData_Mobile] readonly attribute boolean mobile; + [MeasureAs=NavigatorUAData_Platform] readonly attribute DOMString platform; + [CallWith=ScriptState, MeasureAs=NavigatorUAData_GetHighEntropyValues] Promise getHighEntropyValues(sequence hints); + [CallWith=ScriptState, MeasureAs=NavigatorUAData_toJSON] object toJSON(); }; diff --git a/tools/under-control/src/third_party/blink/renderer/core/frame/screen.idl b/tools/under-control/src/third_party/blink/renderer/core/frame/screen.idl index 4102bd43..c4c9ee39 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/frame/screen.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/frame/screen.idl @@ -31,23 +31,23 @@ [ Exposed=Window ] interface Screen : EventTarget { - [HighEntropy=Direct, Measure] readonly attribute long availWidth; - [HighEntropy=Direct, Measure] readonly attribute long availHeight; - [HighEntropy=Direct, Measure] readonly attribute long width; - [HighEntropy=Direct, Measure] readonly attribute long height; - [HighEntropy=Direct, Measure] readonly attribute unsigned long colorDepth; + [Measure] readonly attribute long availWidth; + [Measure] readonly attribute long availHeight; + [Measure] readonly attribute long width; + [Measure] readonly attribute long height; + [Measure] readonly attribute unsigned long colorDepth; // pixelDepth() is an alias for colorDepth(), no need to instrument it twice. - [HighEntropy, Measure] readonly attribute unsigned long pixelDepth; + [Measure] readonly attribute unsigned long pixelDepth; // Non-standard - [HighEntropy=Direct, Measure] readonly attribute long availLeft; - [HighEntropy=Direct, Measure] readonly attribute long availTop; + [Measure] readonly attribute long availLeft; + [Measure] readonly attribute long availTop; // Fired when the window’s screen or that screen's attributes change. // https://w3c.github.io/window-management/ - [SecureContext, HighEntropy, MeasureAs=WindowScreenChange] attribute EventHandler onchange; + [SecureContext, MeasureAs=WindowScreenChange] attribute EventHandler onchange; // Whether the device’s visual output extends over multiple screens. // https://w3c.github.io/window-management/ - [SecureContext, HighEntropy=Direct, MeasureAs=WindowScreenIsExtended] readonly attribute boolean isExtended; + [SecureContext, MeasureAs=WindowScreenIsExtended] readonly attribute boolean isExtended; }; diff --git a/tools/under-control/src/third_party/blink/renderer/core/frame/settings.json5 b/tools/under-control/src/third_party/blink/renderer/core/frame/settings.json5 index 9f68384d..3138dc41 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/frame/settings.json5 +++ b/tools/under-control/src/third_party/blink/renderer/core/frame/settings.json5 @@ -59,10 +59,17 @@ }, // Do not hide chars typed in password fields immediately, but let the last char stay - // visible for N seconds, configured by the passwordEchoDurationInSeconds setting - // FIXME: Enable automatically if passwordEchoDurationInSeconds is set to a positive value. + // visible for N seconds, configured by the passwordEchoDurationInSeconds setting. + + // Controls password echoing when input is received from physical devices (like a hardware keyboard). { - name: "passwordEchoEnabled", + name: "passwordEchoEnabledPhysical", + initial: false, + }, + + // Controls password echoing when input is received from touch-based sources (like an on-screen soft keyboard). + { + name: "passwordEchoEnabledTouch", initial: false, }, @@ -184,6 +191,10 @@ name: "allowScriptsToCloseWindows", initial: false, }, + { + name: "allowWindowFocusWithoutUserGesture", + initial: false, + }, // FIXME: This should really be disabled by default as it makes platforms that // don't support the feature download files they can't use by. @@ -1201,6 +1212,10 @@ name: "selectionClipboardBufferAvailable", initial: false, }, + { + name: "middleClickPasteAllowed", + initial: true + }, { name: "accessibilityIncludeSvgGElement", initial: false, diff --git a/tools/under-control/src/third_party/blink/renderer/core/frame/visual_viewport.idl b/tools/under-control/src/third_party/blink/renderer/core/frame/visual_viewport.idl index de6a952f..e4852cd0 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/frame/visual_viewport.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/frame/visual_viewport.idl @@ -30,16 +30,16 @@ Exposed=Window, ImplementedAs=DOMVisualViewport ] interface VisualViewport : EventTarget { - [HighEntropy=Direct, Measure] readonly attribute double offsetLeft; - [HighEntropy=Direct, Measure] readonly attribute double offsetTop; + [Measure] readonly attribute double offsetLeft; + [Measure] readonly attribute double offsetTop; - [HighEntropy=Direct, Measure] readonly attribute double pageLeft; - [HighEntropy=Direct, Measure] readonly attribute double pageTop; + [Measure] readonly attribute double pageLeft; + [Measure] readonly attribute double pageTop; - [HighEntropy=Direct, Measure] readonly attribute double width; - [HighEntropy=Direct, Measure] readonly attribute double height; + [Measure] readonly attribute double width; + [Measure] readonly attribute double height; - [HighEntropy=Direct, Measure] readonly attribute double scale; + [Measure] readonly attribute double scale; attribute EventHandler onresize; attribute EventHandler onscroll; 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 71027999..dd50e40e 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 @@ -117,7 +117,7 @@ // CSSOM View Module // https://drafts.csswg.org/cssom-view/#extensions-to-the-window-interface - [HighEntropy, Measure, NewObject] MediaQueryList matchMedia(DOMString query); + [Measure, NewObject] MediaQueryList matchMedia(DOMString query); [SameObject, Replaceable] readonly attribute Screen screen; // browsing context @@ -127,14 +127,14 @@ [MeasureAs=WindowResize, RaisesException] void resizeBy(long x, long y); // viewport - [HighEntropy=Direct, MeasureAs=WindowInnerWidth, Replaceable] readonly attribute long innerWidth; - [HighEntropy=Direct, MeasureAs=WindowInnerHeight, Replaceable] readonly attribute long innerHeight; + [MeasureAs=WindowInnerWidth, Replaceable] readonly attribute long innerWidth; + [MeasureAs=WindowInnerHeight, Replaceable] readonly attribute long innerHeight; // viewport scrolling - [HighEntropy=Direct, MeasureAs=WindowScrollX, Replaceable] readonly attribute double scrollX; - [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; + [MeasureAs=WindowScrollX, Replaceable] readonly attribute double scrollX; + [MeasureAs=WindowPageXOffset, Replaceable] readonly attribute double pageXOffset; + [MeasureAs=WindowScrollY, Replaceable] readonly attribute double scrollY; + [MeasureAs=WindowPageYOffset, Replaceable] readonly attribute double pageYOffset; [ImplementedAs=scrollTo, CallWith=ScriptState] Promise scroll(optional ScrollToOptions options = {}); [ImplementedAs=scrollTo, CallWith=ScriptState] Promise scroll(unrestricted double x, unrestricted double y); [CallWith=ScriptState] Promise scrollTo(optional ScrollToOptions options = {}); @@ -151,11 +151,11 @@ [Replaceable, SameObject, RuntimeEnabled=ViewportSegments] readonly attribute Viewport viewport; // client - [HighEntropy=Direct, MeasureAs=WindowScreenX, Replaceable] readonly attribute long screenX; - [HighEntropy=Direct, MeasureAs=WindowScreenY, Replaceable] readonly attribute long screenY; - [HighEntropy=Direct, MeasureAs=WindowOuterWidth, Replaceable] readonly attribute long outerWidth; - [HighEntropy=Direct, MeasureAs=WindowOuterHeight, Replaceable] readonly attribute long outerHeight; - [HighEntropy=Direct, MeasureAs=WindowDevicePixelRatio, Replaceable] readonly attribute double devicePixelRatio; + [MeasureAs=WindowScreenX, Replaceable] readonly attribute long screenX; + [MeasureAs=WindowScreenY, Replaceable] readonly attribute long screenY; + [MeasureAs=WindowOuterWidth, Replaceable] readonly attribute long outerWidth; + [MeasureAs=WindowOuterHeight, Replaceable] readonly attribute long outerHeight; + [MeasureAs=WindowDevicePixelRatio, Replaceable] readonly attribute double devicePixelRatio; // Selection API // https://w3c.github.io/selection-api/#extensions-to-window-interface @@ -173,7 +173,7 @@ // This is the interface orientation in degrees. Some examples are: // 0 is straight up; -90 is when the device is rotated 90 clockwise; // 90 is when rotated counter clockwise. - [HighEntropy=Direct, MeasureAs=WindowOrientation, RuntimeEnabled=OrientationEvent] readonly attribute long orientation; + [MeasureAs=WindowOrientation, RuntimeEnabled=OrientationEvent] readonly attribute long orientation; // Event handler attribute for the pageswap event. [RuntimeEnabled=PageSwapEvent] attribute EventHandler onpageswap; @@ -195,8 +195,8 @@ optional boolean searchInFrames = false, optional boolean showDialog = false); [MeasureAs=WindowOffscreenBuffering, Replaceable, NotEnumerable] readonly attribute boolean offscreenBuffering; - [HighEntropy=Direct, MeasureAs=WindowScreenLeft, Replaceable] readonly attribute long screenLeft; - [HighEntropy=Direct, MeasureAs=WindowScreenTop, Replaceable] readonly attribute long screenTop; + [MeasureAs=WindowScreenLeft, Replaceable] readonly attribute long screenLeft; + [MeasureAs=WindowScreenTop, Replaceable] readonly attribute long screenTop; [RuntimeEnabled=WindowDefaultStatus,MeasureAs=WindowDefaultStatus] attribute DOMString defaultStatus; [RuntimeEnabled=WindowDefaultStatus,MeasureAs=WindowDefaultstatus, ImplementedAs=defaultStatus] attribute DOMString defaultstatus; [MeasureAs=StyleMedia] readonly attribute StyleMedia styleMedia; diff --git a/tools/under-control/src/third_party/blink/renderer/core/frame/window_popin.idl b/tools/under-control/src/third_party/blink/renderer/core/frame/window_popin.idl deleted file mode 100755 index 247f4f2b..00000000 --- a/tools/under-control/src/third_party/blink/renderer/core/frame/window_popin.idl +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2024 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Popins are a type of pop-up for loading web content with a modal-like UI -// relative to its opener tab. The interface defined here helps developers to -// work with popins, e.g. to detect what popin types are available or tell -// if a window is a popin of a certain type. -// https://explainers-by-googlers.github.io/partitioned-popins/ - -enum PopinContextType { - // Popin with cookies/storage partitioned partitioned as though it were an - // iframe in the opener's context. - "partitioned", -}; - -[ - ImplementedAs=WindowPopin, - Exposed=Window, - RuntimeEnabled=PartitionedPopins -] partial interface Window { - // Returns an empty array if no popin context types are supported. - [Measure] sequence popinContextTypesSupported(); - - // Returns null if this isn't a popin context. - [Measure] PopinContextType? popinContextType(); -}; 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 c93d109e..dcd5c334 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,35 +24,24 @@ * 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 ] interface HTMLCanvasElement : HTMLElement { [HTMLConstructor] constructor(); - // Note: Due to dependecies on modules, getContext is defined in a partial + // Note: Due to dependencies on modules, getContext is defined in a partial // interface in html_canvas_element_module.idl [RaisesException=Setter, CEReactions] attribute unsigned long width; [RaisesException=Setter, CEReactions] attribute unsigned long height; [RuntimeEnabled=CanvasDrawElement] attribute boolean layoutSubtree; + [RuntimeEnabled=CanvasDrawElement, RaisesException] DOMMatrix getElementTransform(Element element, DOMMatrix draw_transform); - [HighEntropy, MeasureAs=CanvasToDataURL, RaisesException] DOMString toDataURL(optional DOMString type = "image/png", optional any quality); + [MeasureAs=CanvasToDataURL, RaisesException] DOMString toDataURL(optional DOMString type = "image/png", optional any quality); - [HighEntropy, MeasureAs=CanvasToBlob, RaisesException] void toBlob(BlobCallback _callback, optional DOMString type = "image/png", optional any quality); + [MeasureAs=CanvasToBlob, RaisesException] void toBlob(BlobCallback _callback, optional DOMString type = "image/png", optional any quality); [RuntimeEnabled=CanvasHDR, RaisesException] void configureHighDynamicRange(CanvasHighDynamicRangeOptions options); }; diff --git a/tools/under-control/src/third_party/blink/renderer/core/html/canvas/text_metrics.idl b/tools/under-control/src/third_party/blink/renderer/core/html/canvas/text_metrics.idl index bedf8924..92afe266 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/html/canvas/text_metrics.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/html/canvas/text_metrics.idl @@ -50,16 +50,16 @@ interface TextMetrics { [RuntimeEnabled=TextMetricsBaselines] readonly attribute double hangingBaseline; [RuntimeEnabled=TextMetricsBaselines] readonly attribute double alphabeticBaseline; [RuntimeEnabled=TextMetricsBaselines] readonly attribute double ideographicBaseline; - [RuntimeEnabled=ExtendedTextMetrics] readonly attribute double emHeightAscent; - [RuntimeEnabled=ExtendedTextMetrics] readonly attribute double emHeightDescent; + [RuntimeEnabled=ExtendedTextMetrics, MeasureAs=ExtendedTextMetrics] readonly attribute double emHeightAscent; + [RuntimeEnabled=ExtendedTextMetrics, MeasureAs=ExtendedTextMetrics] readonly attribute double emHeightDescent; // For editing, to get the text offset at a point - [RuntimeEnabled=ExtendedTextMetrics] unsigned long getIndexFromOffset(double x); + [RuntimeEnabled=ExtendedTextMetrics, MeasureAs=ExtendedTextMetrics] unsigned long getIndexFromOffset(double x); // For selection - [RuntimeEnabled=ExtendedTextMetrics, RaisesException] sequence getSelectionRects([EnforceRange] unsigned long start, [EnforceRange] unsigned long end); + [RuntimeEnabled=ExtendedTextMetrics, RaisesException, MeasureAs=ExtendedTextMetrics] sequence getSelectionRects([EnforceRange] unsigned long start, [EnforceRange] unsigned long end); // For bounding box - [RuntimeEnabled=ExtendedTextMetrics, RaisesException] DOMRectReadOnly getActualBoundingBox([EnforceRange] unsigned long start, [EnforceRange] unsigned long end); - [RuntimeEnabled=ExtendedTextMetrics, RaisesException] sequence getTextClusters([EnforceRange] unsigned long start, [EnforceRange] unsigned long end, optional TextClusterOptions options = {}); - [RuntimeEnabled=ExtendedTextMetrics] sequence getTextClusters(optional TextClusterOptions options = {}); + [RuntimeEnabled=ExtendedTextMetrics, RaisesException, MeasureAs=ExtendedTextMetrics] DOMRectReadOnly getActualBoundingBox([EnforceRange] unsigned long start, [EnforceRange] unsigned long end); + [RuntimeEnabled=ExtendedTextMetrics, RaisesException, MeasureAs=ExtendedTextMetrics] sequence getTextClusters([EnforceRange] unsigned long start, [EnforceRange] unsigned long end, optional TextClusterOptions options = {}); + [RuntimeEnabled=ExtendedTextMetrics, MeasureAs=ExtendedTextMetrics] sequence getTextClusters(optional TextClusterOptions options = {}); }; diff --git a/tools/under-control/src/third_party/blink/renderer/core/html/fenced_frame/fenced_frame_config.idl b/tools/under-control/src/third_party/blink/renderer/core/html/fenced_frame/fenced_frame_config.idl index 4f052219..7b5f69df 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/html/fenced_frame/fenced_frame_config.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/html/fenced_frame/fenced_frame_config.idl @@ -14,5 +14,5 @@ interface FencedFrameConfig { // For more information on why this is needed please see: // https://github.com/WICG/fenced-frame/issues/48#issuecomment-1245809738 [RuntimeEnabled=FencedFramesDefaultMode] constructor(USVString url); - void setSharedStorageContext(DOMString contextString); + [DeprecateAs=SharedStorageAPIAll] void setSharedStorageContext(DOMString contextString); }; diff --git a/tools/under-control/src/third_party/blink/renderer/core/html/html_attributionsrc_element_utils.idl b/tools/under-control/src/third_party/blink/renderer/core/html/html_attributionsrc_element_utils.idl index 8c975e54..9864f3c5 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/html/html_attributionsrc_element_utils.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/html/html_attributionsrc_element_utils.idl @@ -4,5 +4,5 @@ [RuntimeEnabled=AttributionReporting] interface mixin HTMLAttributionSrcElementUtils { - [CEReactions, Reflect, SecureContext] attribute USVString attributionSrc; + [CEReactions, Reflect, SecureContext, DeprecateAs=AttributionReportingAPIAll] attribute USVString attributionSrc; }; diff --git a/tools/under-control/src/third_party/blink/renderer/core/html/html_geolocation_element.idl b/tools/under-control/src/third_party/blink/renderer/core/html/html_geolocation_element.idl index 815ffd5a..0ba65fef 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/html/html_geolocation_element.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/html/html_geolocation_element.idl @@ -2,18 +2,36 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// https://github.com/WICG/PEPC/blob/main/geolocation_explainer.md +// TODO(https://crbug.com/461543463): Putting this here rather than in a +// distinct file, as it's possible that we'll rename it in the near future. +// +// https://wicg.github.io/PEPC/permission-elements.html#permission-mixin +interface mixin InPagePermissionMixin { + readonly attribute boolean isValid; + // TODO(https://crbug.com/461543463): This should be + // `InPagePermissionMixinBlockerReason`, but that will require changing + // `HTMLPermissionElement` too. + readonly attribute DOMString invalidReason; + readonly attribute PermissionState initialPermissionStatus; + readonly attribute PermissionState permissionStatus; + attribute EventHandler onpromptaction; + attribute EventHandler onpromptdismiss; + attribute EventHandler onvalidationstatuschange; +}; + +// https://wicg.github.io/PEPC/permission-elements.html#geolocation-element [RuntimeEnabled=GeolocationElement, Exposed=Window] -interface HTMLGeolocationElement : HTMLPermissionElement { +interface HTMLGeolocationElement : HTMLElement { [HTMLConstructor] constructor(); attribute EventHandler onlocation; - readonly attribute GeolocationPosition position; - readonly attribute GeolocationPositionError error; + readonly attribute GeolocationPosition? position; + readonly attribute GeolocationPositionError? error; [CEReactions, Reflect] attribute DOMString accuracymode; - [CEReactions] attribute boolean autolocate; - [CEReactions] attribute boolean watch; + [CEReactions, Reflect] attribute boolean autolocate; + [CEReactions, Reflect] attribute boolean watch; }; +HTMLGeolocationElement includes InPagePermissionMixin; diff --git a/tools/under-control/src/third_party/blink/renderer/core/html/html_install_element.idl b/tools/under-control/src/third_party/blink/renderer/core/html/html_install_element.idl new file mode 100755 index 00000000..8dffafb3 --- /dev/null +++ b/tools/under-control/src/third_party/blink/renderer/core/html/html_install_element.idl @@ -0,0 +1,13 @@ +// 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/mikewest/pepc-install/ + +[RuntimeEnabled=InstallElement, Exposed=Window] +interface HTMLInstallElement : HTMLPermissionElement { + [HTMLConstructor] constructor(); + + [CEReactions, Reflect, URL] attribute USVString manifest; +}; +// TODO(455783637): HTMLPermissionElement should shift to `InPagePermissionMixin`. diff --git a/tools/under-control/src/third_party/blink/renderer/core/html/html_permission_element.idl b/tools/under-control/src/third_party/blink/renderer/core/html/html_permission_element.idl index fd55ae47..4edc38fb 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/html/html_permission_element.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/html/html_permission_element.idl @@ -20,11 +20,6 @@ interface HTMLPermissionElement : HTMLElement { readonly attribute PermissionState initialPermissionStatus; readonly attribute PermissionState permissionStatus; - attribute EventHandler onresolve; - attribute EventHandler ondismiss; - - // New name for the events `onresolve` and `ondismiss`. We will keep both - // for backward compability and will remove the old events in M138. attribute EventHandler onpromptaction; attribute EventHandler onpromptdismiss; attribute EventHandler onvalidationstatuschange; diff --git a/tools/under-control/src/third_party/blink/renderer/core/html/html_user_media_element.idl b/tools/under-control/src/third_party/blink/renderer/core/html/html_user_media_element.idl new file mode 100755 index 00000000..8b455aa8 --- /dev/null +++ b/tools/under-control/src/third_party/blink/renderer/core/html/html_user_media_element.idl @@ -0,0 +1,12 @@ +// 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/PEPC/blob/main/usermedia_element.md +[RuntimeEnabled=UserMediaElement, Exposed=Window] +interface HTMLUserMediaElement : HTMLElement { + [HTMLConstructor] constructor(); + [CEReactions, Reflect] attribute DOMString type; +}; + +HTMLUserMediaElement includes InPagePermissionMixin; \ No newline at end of file diff --git a/tools/under-control/src/third_party/blink/renderer/core/html/media/html_media_element.idl b/tools/under-control/src/third_party/blink/renderer/core/html/media/html_media_element.idl index 4d1ac889..0b0a0757 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/html/media/html_media_element.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/html/media/html_media_element.idl @@ -48,7 +48,7 @@ enum CanPlayTypeResult { "" /* empty string */, "maybe", "probably" }; [CEReactions] attribute DOMString preload; readonly attribute TimeRanges buffered; void load(); - [HighEntropy, Measure] CanPlayTypeResult canPlayType(DOMString type); + CanPlayTypeResult canPlayType(DOMString type); // ready state const unsigned short HAVE_NOTHING = 0; diff --git a/tools/under-control/src/third_party/blink/renderer/core/html/media/html_video_element.idl b/tools/under-control/src/third_party/blink/renderer/core/html/media/html_video_element.idl index 8c3905bf..88838d13 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/html/media/html_video_element.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/html/media/html_video_element.idl @@ -38,11 +38,11 @@ // The number of frames that have been decoded and made available for // playback. - [HighEntropy=Direct, MeasureAs=PrefixedVideoDecodedFrameCount] readonly attribute unsigned long webkitDecodedFrameCount; + [MeasureAs=PrefixedVideoDecodedFrameCount] readonly attribute unsigned long webkitDecodedFrameCount; // The number of decoded frames that have been dropped by the player // for performance reasons during playback. - [HighEntropy=Direct, MeasureAs=PrefixedVideoDroppedFrameCount] readonly attribute unsigned long webkitDroppedFrameCount; + [MeasureAs=PrefixedVideoDroppedFrameCount] readonly attribute unsigned long webkitDroppedFrameCount; [CEReactions, Reflect] attribute boolean playsInline; }; diff --git a/tools/under-control/src/third_party/blink/renderer/core/input/input_device_capabilities.idl b/tools/under-control/src/third_party/blink/renderer/core/input/input_device_capabilities.idl index c4f56c69..8f614ed8 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/input/input_device_capabilities.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/input/input_device_capabilities.idl @@ -19,5 +19,5 @@ // Whether this device dispatches touch events for movement. This is used to detect // mouse events which represent only an action that has already been handled by // touch event handlers. - [HighEntropy=Direct, Measure] readonly attribute boolean firesTouchEvents; + [Measure] readonly attribute boolean firesTouchEvents; }; diff --git a/tools/under-control/src/third_party/blink/renderer/core/input/touch.idl b/tools/under-control/src/third_party/blink/renderer/core/input/touch.idl index 43a55641..410011d7 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/input/touch.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/input/touch.idl @@ -40,5 +40,5 @@ readonly attribute float radiusX; readonly attribute float radiusY; readonly attribute float rotationAngle; - [HighEntropy=Direct, Measure] readonly attribute float force; + [Measure] readonly attribute float force; }; diff --git a/tools/under-control/src/third_party/blink/renderer/core/offscreencanvas/offscreen_canvas.idl b/tools/under-control/src/third_party/blink/renderer/core/offscreencanvas/offscreen_canvas.idl index cfaac55a..86a8bf25 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/offscreencanvas/offscreen_canvas.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/offscreencanvas/offscreen_canvas.idl @@ -12,8 +12,8 @@ attribute [EnforceRange] unsigned long width; attribute [EnforceRange] unsigned long height; - [CallWith=ScriptState, HighEntropy, MeasureAs=OffscreenCanvasTransferToImageBitmap, RaisesException] ImageBitmap transferToImageBitmap(); - [CallWith=ScriptState, HighEntropy, MeasureAs=OffscreenCanvasConvertToBlob, RaisesException] Promise convertToBlob(optional ImageEncodeOptions options = {}); + [CallWith=ScriptState, MeasureAs=OffscreenCanvasTransferToImageBitmap, RaisesException] ImageBitmap transferToImageBitmap(); + [CallWith=ScriptState, MeasureAs=OffscreenCanvasConvertToBlob, RaisesException] Promise convertToBlob(optional ImageEncodeOptions options = {}); attribute EventHandler oncontextlost; attribute EventHandler oncontextrestored; diff --git a/tools/under-control/src/third_party/blink/renderer/core/permissions_policy/feature_policy.idl b/tools/under-control/src/third_party/blink/renderer/core/permissions_policy/feature_policy.idl index 7135186b..4f929b50 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/permissions_policy/feature_policy.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/permissions_policy/feature_policy.idl @@ -8,7 +8,7 @@ ImplementedAs=DOMFeaturePolicy ] interface FeaturePolicy { [MeasureAs=FeaturePolicyJSAPI, CallWith=ScriptState] boolean allowsFeature(DOMString feature, optional DOMString origin); - [HighEntropy=Direct, MeasureAs=FeaturePolicyJSAPI, CallWith=ScriptState] sequence features(); + [MeasureAs=FeaturePolicyJSAPI, CallWith=ScriptState] sequence features(); [MeasureAs=FeaturePolicyJSAPI, CallWith=ScriptState] sequence allowedFeatures(); [MeasureAs=FeaturePolicyJSAPI, CallWith=ScriptState] sequence getAllowlistForFeature(DOMString feature); }; diff --git a/tools/under-control/src/third_party/blink/renderer/core/sanitizer/sanitizer_api.idl b/tools/under-control/src/third_party/blink/renderer/core/sanitizer/sanitizer_api.idl index 54747e6b..e97fb4d1 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/sanitizer/sanitizer_api.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/sanitizer/sanitizer_api.idl @@ -17,11 +17,11 @@ interface Sanitizer { SanitizerConfig get(); // Modify a Sanitizer’s lists and fields: - undefined allowElement(SanitizerElementWithAttributes element); - undefined removeElement(SanitizerElement element); - undefined replaceElementWithChildren(SanitizerElement element); - undefined allowAttribute(SanitizerAttribute attribute); - undefined removeAttribute(SanitizerAttribute attribute); + boolean allowElement(SanitizerElementWithAttributes element); + boolean removeElement(SanitizerElement element); + boolean replaceElementWithChildren(SanitizerElement element); + boolean allowAttribute(SanitizerAttribute attribute); + boolean removeAttribute(SanitizerAttribute attribute); undefined setComments(boolean allow); undefined setDataAttributes(boolean allow); diff --git a/tools/under-control/src/third_party/blink/renderer/core/svg/svg_geometry_element.idl b/tools/under-control/src/third_party/blink/renderer/core/svg/svg_geometry_element.idl index 02e51a18..4ec690e5 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/svg/svg_geometry_element.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/svg/svg_geometry_element.idl @@ -34,8 +34,8 @@ interface SVGGeometryElement : SVGGraphicsElement { [SameObject] readonly attribute SVGAnimatedNumber pathLength; - [HighEntropy, Measure] boolean isPointInFill(optional DOMPointInit point = {}); - [HighEntropy, Measure] boolean isPointInStroke(optional DOMPointInit point = {}); - [HighEntropy, Measure, RaisesException] float getTotalLength(); - [HighEntropy, Measure, RaisesException] SVGPoint getPointAtLength(float distance); + [Measure] boolean isPointInFill(optional DOMPointInit point = {}); + [Measure] boolean isPointInStroke(optional DOMPointInit point = {}); + [Measure, RaisesException] float getTotalLength(); + [Measure, RaisesException] SVGPoint getPointAtLength(float distance); }; diff --git a/tools/under-control/src/third_party/blink/renderer/core/svg/svg_symbol_element.idl b/tools/under-control/src/third_party/blink/renderer/core/svg/svg_symbol_element.idl index 939eb94a..4f58b541 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/svg/svg_symbol_element.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/svg/svg_symbol_element.idl @@ -26,7 +26,7 @@ // https://svgwg.org/svg2-draft/struct.html#InterfaceSVGSymbolElement [Exposed=Window] -interface SVGSymbolElement : SVGElement { +interface SVGSymbolElement : SVGGraphicsElement { }; SVGSymbolElement includes SVGFitToViewBox; diff --git a/tools/under-control/src/third_party/blink/renderer/core/svg/svg_tests.idl b/tools/under-control/src/third_party/blink/renderer/core/svg/svg_tests.idl index 04f9be92..edd74508 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/svg/svg_tests.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/svg/svg_tests.idl @@ -27,6 +27,6 @@ // https://svgwg.org/svg2-draft/types.html#InterfaceSVGTests interface mixin SVGTests { - [HighEntropy=Direct, MeasureAs=SVG1DOMSVGTests] readonly attribute SVGStringList requiredExtensions; - [HighEntropy=Direct, MeasureAs=SVG1DOMSVGTests] readonly attribute SVGStringList systemLanguage; + [MeasureAs=SVG1DOMSVGTests] readonly attribute SVGStringList requiredExtensions; + [MeasureAs=SVG1DOMSVGTests] readonly attribute SVGStringList systemLanguage; }; diff --git a/tools/under-control/src/third_party/blink/renderer/core/svg/svg_text_content_element.idl b/tools/under-control/src/third_party/blink/renderer/core/svg/svg_text_content_element.idl index 535e7543..b7ea8ab3 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/svg/svg_text_content_element.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/svg/svg_text_content_element.idl @@ -36,11 +36,11 @@ interface SVGTextContentElement : SVGGraphicsElement { readonly attribute SVGAnimatedEnumeration lengthAdjust; long getNumberOfChars(); - [HighEntropy, Measure] float getComputedTextLength(); - [HighEntropy, Measure, RaisesException] float getSubStringLength(unsigned long charnum, unsigned long nchars); - [HighEntropy, Measure, RaisesException] SVGPoint getStartPositionOfChar(unsigned long charnum); - [HighEntropy, Measure, RaisesException] SVGPoint getEndPositionOfChar(unsigned long charnum); - [HighEntropy, Measure, RaisesException] SVGRect getExtentOfChar(unsigned long charnum); + [Measure] float getComputedTextLength(); + [Measure, RaisesException] float getSubStringLength(unsigned long charnum, unsigned long nchars); + [Measure, RaisesException] SVGPoint getStartPositionOfChar(unsigned long charnum); + [Measure, RaisesException] SVGPoint getEndPositionOfChar(unsigned long charnum); + [Measure, RaisesException] SVGRect getExtentOfChar(unsigned long charnum); [RaisesException] float getRotationOfChar(unsigned long charnum); long getCharNumAtPosition(optional DOMPointInit point = {}); [RaisesException] void selectSubString(unsigned long charnum, unsigned long nchars); 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 950ee808..040adb81 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 @@ -79,6 +79,7 @@ interface Internals { // Animation testing. [RaisesException] void pauseAnimations(double pauseTime); boolean isCompositedAnimation(Animation animation); + boolean isMainThreadAnimation(Animation animation); void disableCompositedAnimation(Animation animation); // Advances an animated image. For BitmapImage (e.g., animated gifs) this @@ -200,9 +201,6 @@ interface Internals { [RaisesException] DOMString layerTreeAsText(Document document, optional unsigned short flags); - [RaisesException] DOMString dumpContentNodeTree(Document document); - [RaisesException] DOMString dumpContentNode(Node node); - [RaisesException] DOMString mainThreadScrollingReasons(Document document); void evictAllResources(); diff --git a/tools/under-control/src/third_party/blink/renderer/core/timing/performance_container_timing.idl b/tools/under-control/src/third_party/blink/renderer/core/timing/performance_container_timing.idl index 4e710ce5..a3a2367d 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/timing/performance_container_timing.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/timing/performance_container_timing.idl @@ -8,6 +8,7 @@ ] interface PerformanceContainerTiming : PerformanceEntry { readonly attribute DOMRectReadOnly intersectionRect; readonly attribute double size; + readonly attribute Element? rootElement; readonly attribute DOMString identifier; readonly attribute Element? lastPaintedElement; readonly attribute DOMHighResTimeStamp firstRenderTime; diff --git a/tools/under-control/src/third_party/blink/renderer/core/timing/performance_navigation_timing.idl b/tools/under-control/src/third_party/blink/renderer/core/timing/performance_navigation_timing.idl index ca862370..8a1ef90e 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/timing/performance_navigation_timing.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/timing/performance_navigation_timing.idl @@ -11,12 +11,6 @@ enum NavigationTimingType { "prerender" }; -enum NavigationEntropy { - "high", - "normal", - "" -}; - [ Exposed=Window ] interface PerformanceNavigationTiming : PerformanceResourceTiming { @@ -31,7 +25,6 @@ enum NavigationEntropy { readonly attribute NavigationTimingType type; readonly attribute unsigned short redirectCount; [RuntimeEnabled=BackForwardCacheNotRestoredReasons, MeasureAs="WebDXFeature::kBfcacheBlockingReasons"] readonly attribute NotRestoredReasons? notRestoredReasons; - [RuntimeEnabled=PerformanceNavigateSystemEntropy] readonly attribute NavigationEntropy systemEntropy; [RuntimeEnabled=PerformanceNavigationTimingConfidence] readonly attribute PerformanceTimingConfidence confidence; [CallWith=ScriptState] readonly attribute DOMHighResTimeStamp criticalCHRestart; [CallWith=ScriptState, ImplementedAs=toJSONForBinding] object toJSON(); diff --git a/tools/under-control/src/third_party/blink/renderer/core/url/origin.idl b/tools/under-control/src/third_party/blink/renderer/core/url/origin.idl index fb7d3623..defa7abf 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/url/origin.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/url/origin.idl @@ -9,14 +9,11 @@ ImplementedAs=DOMOrigin ] interface Origin { constructor(); - [RaisesException] constructor(USVString serializedOrigin); - static Origin? parse(USVString serializedOrigin); - static Origin? fromURL(USVString serializedURL); - [CallWith=ScriptState, RaisesException] static Origin from(any value); + [CallWith=ScriptState, RaisesException, Measure] static Origin from(any value); readonly attribute boolean opaque; - boolean isSameOrigin(Origin other); - boolean isSameSite(Origin other); + [Measure] boolean isSameOrigin(Origin other); + [Measure] boolean isSameSite(Origin other); }; diff --git a/tools/under-control/src/third_party/blink/renderer/core/xml/xpath_result.idl b/tools/under-control/src/third_party/blink/renderer/core/xml/xpath_result.idl index cfc0998d..660027c1 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/xml/xpath_result.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/xml/xpath_result.idl @@ -41,7 +41,7 @@ [RaisesException=Getter] readonly attribute boolean booleanValue; - [RaisesException=Getter] readonly attribute Node singleNodeValue; + [RaisesException=Getter] readonly attribute Node? singleNodeValue; readonly attribute boolean invalidIteratorState; [RaisesException=Getter] readonly attribute unsigned long snapshotLength; diff --git a/tools/under-control/src/third_party/blink/renderer/core/xml/xslt_processor.idl b/tools/under-control/src/third_party/blink/renderer/core/xml/xslt_processor.idl index 4160ecde..5433e845 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/xml/xslt_processor.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/xml/xslt_processor.idl @@ -30,8 +30,8 @@ // their interface definition remains the closest thing to a spec: // https://hg.mozilla.org/mozilla-central/file/012853bd80b7/dom/webidl/XSLTProcessor.webidl -[ Exposed=Window, RuntimeEnabled=XSLT ] interface XSLTProcessor { - [CallWith=Document, MeasureAs=XSLTProcessor] constructor(); +[ Exposed=Window ] interface XSLTProcessor { + [RaisesException, CallWith=Document] constructor(); undefined importStylesheet(Node style); // TODO(foolip): In Gecko, the transformTo*() methods throw an exception in diff --git a/tools/under-control/src/third_party/blink/renderer/core/xmlhttprequest/xml_http_request.idl b/tools/under-control/src/third_party/blink/renderer/core/xmlhttprequest/xml_http_request.idl index a985dbe6..cebc43cd 100755 --- a/tools/under-control/src/third_party/blink/renderer/core/xmlhttprequest/xml_http_request.idl +++ b/tools/under-control/src/third_party/blink/renderer/core/xmlhttprequest/xml_http_request.idl @@ -61,7 +61,7 @@ typedef (Blob or BufferSource or FormData or URLSearchParams or USVString) XMLHt [RaisesException] void open(ByteString method, USVString url, boolean async, optional USVString? username = null, optional USVString? password = null); [RaisesException] void setRequestHeader(ByteString name, ByteString value); [RaisesException, RuntimeEnabled=PrivateStateTokens, SecureContext, MeasureAs=TrustTokenXhr] void setPrivateToken(PrivateToken privateToken); - [RaisesException, RuntimeEnabled=AttributionReporting, SecureContext] void setAttributionReporting(AttributionReportingRequestOptions attributionReporting); + [RaisesException, RuntimeEnabled=AttributionReporting, SecureContext, MeasureAs=AttributionReportingXhr, DeprecateAs=AttributionReportingAPIAll] void setAttributionReporting(AttributionReportingRequestOptions attributionReporting); [RaisesException=Setter] attribute unsigned long timeout; [RaisesException=Setter] attribute boolean withCredentials; readonly attribute XMLHttpRequestUpload upload; diff --git a/tools/under-control/src/third_party/blink/renderer/extensions/webview/media_integrity/media_integrity_token_provider.idl b/tools/under-control/src/third_party/blink/renderer/extensions/webview/media_integrity/media_integrity_token_provider.idl index 9f98faca..f35ef696 100755 --- a/tools/under-control/src/third_party/blink/renderer/extensions/webview/media_integrity/media_integrity_token_provider.idl +++ b/tools/under-control/src/third_party/blink/renderer/extensions/webview/media_integrity/media_integrity_token_provider.idl @@ -15,6 +15,6 @@ // device, which includes the pased-in contentBinding as a defense against // replay attacks. // Throws MediaIntegrityError. - [CallWith=ScriptState, HighEntropy, RaisesException, Measure] + [CallWith=ScriptState, RaisesException, Measure] Promise requestToken(optional DOMString? contentBinding = null); }; diff --git a/tools/under-control/src/third_party/blink/renderer/extensions/webview/web_view.idl b/tools/under-control/src/third_party/blink/renderer/extensions/webview/web_view.idl index 4a407375..c67245c2 100755 --- a/tools/under-control/src/third_party/blink/renderer/extensions/webview/web_view.idl +++ b/tools/under-control/src/third_party/blink/renderer/extensions/webview/web_view.idl @@ -23,7 +23,6 @@ dictionary GetMediaIntegrityTokenProviderParams { // The promise may reject as a MediaIntegrityError. [ NewObject, CallWith=ScriptState, - HighEntropy, RaisesException, RuntimeEnabled=BlinkExtensionWebViewMediaIntegrity, SecureContext, diff --git a/tools/under-control/src/third_party/blink/renderer/modules/ad_auction/navigator_auction.idl b/tools/under-control/src/third_party/blink/renderer/modules/ad_auction/navigator_auction.idl index ea7ae8e8..cd8239b8 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/ad_auction/navigator_auction.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/ad_auction/navigator_auction.idl @@ -16,34 +16,34 @@ typedef (USVString or FencedFrameConfig) UrnOrConfig; RuntimeEnabled=AdInterestGroupAPI, SecureContext ] partial interface Navigator { - [CallWith=ScriptState, Measure, RaisesException] + [CallWith=ScriptState, Measure, RaisesException, DeprecateAs=Fledge] Promise joinAdInterestGroup(AuctionAdInterestGroup group, optional double durationSeconds); - [CallWith=ScriptState, Measure, RaisesException] + [CallWith=ScriptState, Measure, RaisesException, DeprecateAs=Fledge] Promise leaveAdInterestGroup(optional AuctionAdInterestGroupKey group); - [CallWith=ScriptState, Measure, RaisesException] + [CallWith=ScriptState, Measure, RaisesException, DeprecateAs=Fledge] Promise clearOriginJoinedAdInterestGroups(USVString owner, optional sequence groupsToKeep); - [CallWith=ScriptState, Measure, RaisesException] + [CallWith=ScriptState, Measure, RaisesException, DeprecateAs=Fledge] void updateAdInterestGroups(); - [CallWith=ScriptState, Measure, RaisesException] + [CallWith=ScriptState, Measure, RaisesException, DeprecateAs=Fledge] Promise createAuctionNonce(); - [RuntimeEnabled=Fledge, CallWith=ScriptState, Measure, RaisesException] + [RuntimeEnabled=Fledge, CallWith=ScriptState, Measure, RaisesException, DeprecateAs=Fledge] Promise runAdAuction(AuctionAdConfig config); - [RuntimeEnabled=Fledge, CallWith=ScriptState, Measure, RaisesException] + [RuntimeEnabled=Fledge, CallWith=ScriptState, Measure, RaisesException, DeprecateAs=Fledge] sequence adAuctionComponents([Clamp] unsigned short numComponents); - [RuntimeEnabled=AllowURNsInIframes, CallWith=ScriptState, Measure, RaisesException] + [RuntimeEnabled=AllowURNsInIframes, CallWith=ScriptState, Measure, RaisesException, DeprecateAs=Fledge] Promise deprecatedURNToURL(UrnOrConfig urn_or_config, optional boolean send_reports = false); - [RuntimeEnabled=AllowURNsInIframes, CallWith=ScriptState, Measure, RaisesException] + [RuntimeEnabled=AllowURNsInIframes, CallWith=ScriptState, Measure, RaisesException, DeprecateAs=Fledge] Promise deprecatedReplaceInURN(UrnOrConfig urn_or_config, record replacements); - [RuntimeEnabled=FledgeBiddingAndAuctionServerAPI, CallWith=ScriptState, Measure, RaisesException] + [RuntimeEnabled=FledgeBiddingAndAuctionServerAPI, CallWith=ScriptState, Measure, RaisesException, DeprecateAs=Fledge] Promise getInterestGroupAdAuctionData(AdAuctionDataConfig config); [RuntimeEnabled=Parakeet, CallWith=ScriptState, Measure, RaisesException] @@ -53,11 +53,11 @@ typedef (USVString or FencedFrameConfig) UrnOrConfig; [RuntimeEnabled=Parakeet, CallWith=ScriptState, PromiseIDLTypeMismatch, Measure, RaisesException] Promise finalizeAd(Ads ads, AuctionAdConfig config); - [RuntimeEnabled=FencedFrames, CallWith=ScriptState] + [RuntimeEnabled=FencedFrames, CallWith=ScriptState, DeprecateAs=Fledge] boolean canLoadAdAuctionFencedFrame(); - [RuntimeEnabled=EnforceAnonymityExposure, CallWith=ScriptState] + [RuntimeEnabled=EnforceAnonymityExposure, CallWith=ScriptState, DeprecateAs=Fledge] readonly attribute boolean deprecatedRunAdAuctionEnforcesKAnonymity; - [SameObject, CallWith=ScriptState] readonly attribute ProtectedAudience protectedAudience; + [SameObject, CallWith=ScriptState, DeprecateAs=Fledge] readonly attribute ProtectedAudience protectedAudience; }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/ai/create_monitor.idl b/tools/under-control/src/third_party/blink/renderer/modules/ai/create_monitor.idl index 5f549f1d..5fc5f85d 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/ai/create_monitor.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/ai/create_monitor.idl @@ -8,8 +8,7 @@ [ Exposed=(Window,Worker), - SecureContext, - RuntimeEnabled=BuiltInAIAPI + SecureContext ] interface CreateMonitor : EventTarget { attribute EventHandler ondownloadprogress; 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 adda8048..73154e20 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 @@ -51,7 +51,10 @@ interface LanguageModel : EventTarget { CallWith=ScriptState, RaisesException ] - Promise prompt( + // When this object was created with LanguageModelToolDeclaration and + // expectedOutputs includes {type:"tool-call"}, this now yields a + // LanguageModelMessageContent sequence. + Promise prompt( LanguageModelPrompt input, optional LanguageModelPromptOptions options = {} ); @@ -60,6 +63,9 @@ interface LanguageModel : EventTarget { CallWith=ScriptState, RaisesException ] + // When this object was created with LanguageModelToolDeclaration and + // expectedOutputs includes {type:"tool-call"}, this now yields a + // LanguageModelMessageContent dictionary sequence in chunks. ReadableStream promptStreaming( LanguageModelPrompt input, optional LanguageModelPromptOptions options = {} 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 490fd509..a75e1c02 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 @@ -11,6 +11,9 @@ typedef ( or DOMString ) LanguageModelPrompt; +// The return type from prompt() or promptStreaming() method. +typedef (DOMString or sequence) LanguageModelPromptResult; + dictionary LanguageModelMessage { required LanguageModelMessageRole role; @@ -27,11 +30,11 @@ dictionary LanguageModelMessageContent { }; // LINT.IfChange -enum LanguageModelMessageRole { "system", "user", "assistant" }; +enum LanguageModelMessageRole { "system", "user", "assistant", "tool-call", "tool-response" }; // LINT.ThenChange(//third_party/blink/renderer/modules/ai/ai_metrics.h:LanguageModelInputRole) // LINT.IfChange -enum LanguageModelMessageType { "text", "image", "audio" }; +enum LanguageModelMessageType { "text", "image", "audio", "tool-call", "tool-response" }; // LINT.ThenChange(//third_party/blink/renderer/modules/ai/ai_metrics.h:LanguageModelInputType) typedef ( @@ -40,8 +43,62 @@ typedef ( or HTMLAudioElement or BufferSource or DOMString + or LanguageModelToolCall + or LanguageModelToolResponse ) LanguageModelMessageValue; +// Type enum for tool execution results. Used in LanguageModelToolSuccess.result +// sequence to indicate the content type of each result item. +// - "text": value should be a string +// - "image": value should be ImageBitmapSource or ArrayBuffer/ArrayBufferView +// - "audio": value should be AudioBuffer, HTMLAudioElement, or BufferSource +// - "object": value should be JSON-serializable (primitives, objects, arrays) +enum LanguageModelToolResultType { "text", "image", "audio", "object" }; + +// Individual result item returned from tool execution. Used in the +// LanguageModelToolSuccess.result sequence to represent text, images, audio, +// or structured JSON data returned by the tool. The type field indicates +// the expected content type, and validation is performed at runtime. +dictionary LanguageModelToolResultContent { + required LanguageModelToolResultType type; + required any value; +}; + +// Represents a tool call requested by the language model. +dictionary LanguageModelToolCall { + // Unique identifier for this tool call within the session. + required DOMString callID; + // The tool name to be invoked. + required DOMString name; + // Object fitting the JSON input schema of the tool's declaration. + object arguments; +}; + +// Successful tool execution result. +dictionary LanguageModelToolSuccess { + required DOMString callID; + required DOMString name; + required sequence result; +}; + +// Failed tool execution result. +dictionary LanguageModelToolError { + required DOMString callID; + required DOMString name; + required DOMString errorMessage; +}; + +// The response from executing a tool call - either success or error. +typedef (LanguageModelToolSuccess or LanguageModelToolError) LanguageModelToolResponse; + +// The declaration for a tool that a language model can invoke. +dictionary LanguageModelToolDeclaration { + required DOMString name; + required DOMString description; + // JSON schema for the input parameters. + required object inputSchema; +}; + dictionary LanguageModelCreateCoreOptions { // Note: these two have custom out-of-range handling behavior, not in the IDL layer. // They are unrestricted double so as to allow +Infinity without failing. @@ -51,6 +108,9 @@ dictionary LanguageModelCreateCoreOptions { // The expected types and languages for the session. sequence expectedInputs; sequence expectedOutputs; + + // Tools that the language model can use. + sequence tools; }; dictionary LanguageModelCreateOptions : LanguageModelCreateCoreOptions { diff --git a/tools/under-control/src/third_party/blink/renderer/modules/app_banner/before_install_prompt_event.idl b/tools/under-control/src/third_party/blink/renderer/modules/app_banner/before_install_prompt_event.idl index 8500ee86..0234655e 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/app_banner/before_install_prompt_event.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/app_banner/before_install_prompt_event.idl @@ -7,7 +7,7 @@ Exposed=Window ] interface BeforeInstallPromptEvent : Event { [CallWith=ExecutionContext] constructor(DOMString type, optional BeforeInstallPromptEventInit eventInitDict = {}); - [HighEntropy=Direct, Measure] readonly attribute FrozenArray platforms; + [Measure] readonly attribute FrozenArray platforms; [CallWith=ScriptState, RaisesException] readonly attribute Promise userChoice; [CallWith=ScriptState, RaisesException] Promise prompt(); }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/background_fetch/background_fetch_registration.idl b/tools/under-control/src/third_party/blink/renderer/modules/background_fetch/background_fetch_registration.idl index 66998905..3ad7372d 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/background_fetch/background_fetch_registration.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/background_fetch/background_fetch_registration.idl @@ -14,7 +14,7 @@ readonly attribute unsigned long long downloadTotal; readonly attribute unsigned long long downloaded; readonly attribute BackgroundFetchResult result; - [HighEntropy, Measure] readonly attribute BackgroundFetchFailureReason failureReason; + [Measure] readonly attribute BackgroundFetchFailureReason failureReason; readonly attribute boolean recordsAvailable; attribute EventHandler onprogress; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/battery/battery_manager.idl b/tools/under-control/src/third_party/blink/renderer/modules/battery/battery_manager.idl index 8b19e085..16b58816 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/battery/battery_manager.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/battery/battery_manager.idl @@ -8,10 +8,10 @@ SecureContext, Exposed=Window ] interface BatteryManager : EventTarget { - [HighEntropy=Direct, Measure] readonly attribute boolean charging; - [HighEntropy, Measure] readonly attribute unrestricted double chargingTime; - [HighEntropy, Measure] readonly attribute unrestricted double dischargingTime; - [HighEntropy, Measure] readonly attribute double level; + [Measure] readonly attribute boolean charging; + [Measure] readonly attribute unrestricted double chargingTime; + [Measure] readonly attribute unrestricted double dischargingTime; + [Measure] readonly attribute double level; attribute EventHandler onchargingchange; attribute EventHandler onchargingtimechange; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/bluetooth/bluetooth_advertising_event.idl b/tools/under-control/src/third_party/blink/renderer/modules/bluetooth/bluetooth_advertising_event.idl index 2621925a..67148736 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/bluetooth/bluetooth_advertising_event.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/bluetooth/bluetooth_advertising_event.idl @@ -12,9 +12,9 @@ readonly attribute BluetoothDevice device; readonly attribute FrozenArray uuids; - [HighEntropy=Direct, MeasureAs=BluetoothAdvertisingEventName] readonly attribute DOMString? name; - [HighEntropy=Direct, MeasureAs=BluetoothAdvertisingEventAppearance] readonly attribute unsigned short? appearance; - [HighEntropy=Direct, MeasureAs=BluetoothAdvertisingEventTxPower] readonly attribute byte? txPower; + [MeasureAs=BluetoothAdvertisingEventName] readonly attribute DOMString? name; + [MeasureAs=BluetoothAdvertisingEventAppearance] readonly attribute unsigned short? appearance; + [MeasureAs=BluetoothAdvertisingEventTxPower] readonly attribute byte? txPower; readonly attribute byte? rssi; readonly attribute BluetoothManufacturerDataMap manufacturerData; readonly attribute BluetoothServiceDataMap serviceData; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/bluetooth/bluetooth_device.idl b/tools/under-control/src/third_party/blink/renderer/modules/bluetooth/bluetooth_device.idl index ec5372f3..f601af8e 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/bluetooth/bluetooth_device.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/bluetooth/bluetooth_device.idl @@ -25,7 +25,7 @@ ] Promise forget(); readonly attribute DOMString id; - [HighEntropy=Direct, MeasureAs=BluetoothDeviceName] readonly attribute DOMString? name; + [MeasureAs=BluetoothDeviceName] readonly attribute DOMString? name; readonly attribute BluetoothRemoteGATTServer gatt; [RuntimeEnabled=WebBluetoothWatchAdvertisements] readonly attribute boolean watchingAdvertisements; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/browsing_topics/browsing_topics_document_supplement.idl b/tools/under-control/src/third_party/blink/renderer/modules/browsing_topics/browsing_topics_document_supplement.idl index b215a864..66807afa 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/browsing_topics/browsing_topics_document_supplement.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/browsing_topics/browsing_topics_document_supplement.idl @@ -13,7 +13,8 @@ CallWith=ScriptState, RaisesException, SecureContext, - MeasureAs=TopicsAPI_BrowsingTopics_Method + MeasureAs=TopicsAPI_BrowsingTopics_Method, + DeprecateAs=TopicsAPIAll ] Promise> browsingTopics(optional BrowsingTopicsOptions options); }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_context_2d.idl b/tools/under-control/src/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_context_2d.idl index 3e7bc3df..33e2e42a 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_context_2d.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_context_2d.idl @@ -13,26 +13,26 @@ interface mixin BaseRenderingContext2D { boolean isContextLost(); // text (see also the CanvasPathDrawingStyles and CanvasTextDrawingStyles interfaces) - [HighEntropy, MeasureAs=Canvas2DDrawText] void fillText(DOMString text, unrestricted double x, unrestricted double y, optional unrestricted double maxWidth); - [HighEntropy, MeasureAs=Canvas2DDrawText] void strokeText(DOMString text, unrestricted double x, unrestricted double y, optional unrestricted double maxWidth); - [HighEntropy, MeasureAs=Canvas2DMeasureText] TextMetrics measureText(DOMString text); - [RuntimeEnabled=ExtendedTextMetrics] void fillTextCluster(TextCluster textCluster, double x, double y); - [RuntimeEnabled=ExtendedTextMetrics] void fillTextCluster(TextCluster textCluster, double x, double y, TextClusterOptions options); - [RuntimeEnabled=ExtendedTextMetrics] void strokeTextCluster(TextCluster textCluster, double x, double y); - [RuntimeEnabled=ExtendedTextMetrics] void strokeTextCluster(TextCluster textCluster, double x, double y, TextClusterOptions options); + [MeasureAs=Canvas2DDrawText] void fillText(DOMString text, unrestricted double x, unrestricted double y, optional unrestricted double maxWidth); + [MeasureAs=Canvas2DDrawText] void strokeText(DOMString text, unrestricted double x, unrestricted double y, optional unrestricted double maxWidth); + [MeasureAs=Canvas2DMeasureText] TextMetrics measureText(DOMString text); + [RuntimeEnabled=ExtendedTextMetrics, MeasureAs=ExtendedTextMetrics] void fillTextCluster(TextCluster textCluster, double x, double y); + [RuntimeEnabled=ExtendedTextMetrics, MeasureAs=ExtendedTextMetrics] void fillTextCluster(TextCluster textCluster, double x, double y, TextClusterOptions options); + [RuntimeEnabled=ExtendedTextMetrics, MeasureAs=ExtendedTextMetrics] void strokeTextCluster(TextCluster textCluster, double x, double y); + [RuntimeEnabled=ExtendedTextMetrics, MeasureAs=ExtendedTextMetrics] void strokeTextCluster(TextCluster textCluster, double x, double y, TextClusterOptions options); // pixel manipulation [RaisesException] ImageData createImageData(ImageData imagedata); [RaisesException] ImageData createImageData([EnforceRange] long sw, [EnforceRange] long sh); [RaisesException] ImageData createImageData([EnforceRange] long sw, [EnforceRange] long sh, ImageDataSettings imageDataSettings); - [HighEntropy, MeasureAs=Canvas2DGetImageData, RaisesException] ImageData getImageData([EnforceRange] long sx, [EnforceRange] long sy, [EnforceRange] long sw, [EnforceRange] long sh); - [HighEntropy, MeasureAs=Canvas2DGetImageData, RaisesException] ImageData getImageData([EnforceRange] long sx, [EnforceRange] long sy, [EnforceRange] long sw, [EnforceRange] long sh, ImageDataSettings imageDataSettings); + [MeasureAs=Canvas2DGetImageData, RaisesException] ImageData getImageData([EnforceRange] long sx, [EnforceRange] long sy, [EnforceRange] long sw, [EnforceRange] long sh); + [MeasureAs=Canvas2DGetImageData, RaisesException] ImageData getImageData([EnforceRange] long sx, [EnforceRange] long sy, [EnforceRange] long sw, [EnforceRange] long sh, ImageDataSettings imageDataSettings); [NoAllocDirectCall, RaisesException] void putImageData(ImageData imagedata, [EnforceRange] long dx, [EnforceRange] long dy); [NoAllocDirectCall, RaisesException] void putImageData(ImageData imagedata, [EnforceRange] long dx, [EnforceRange] long dy, [EnforceRange] long dirtyX, [EnforceRange] long dirtyY, [EnforceRange] long dirtyWidth, [EnforceRange] long dirtyHeight); // text attribute DOMString lang; // (default: "inherit") - [HighEntropy] attribute DOMString font; // (default 10px sans-serif) + attribute DOMString font; // (default 10px sans-serif) attribute CanvasTextAlign textAlign; // "start", "end", "left", "right", "center" (default: "start") attribute CanvasTextBaseline textBaseline; // "top", "hanging", "middle", "alphabetic", "ideographic", "bottom" (default: "alphabetic") attribute CanvasDirection direction; // "inherit", "rtl", "ltr" (default: "inherit") diff --git a/tools/under-control/src/third_party/blink/renderer/modules/canvas/canvas2d/canvas_2d_recorder_context.idl b/tools/under-control/src/third_party/blink/renderer/modules/canvas/canvas2d/canvas_2d_recorder_context.idl index 640cc24b..599abe37 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/canvas/canvas2d/canvas_2d_recorder_context.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/canvas/canvas2d/canvas_2d_recorder_context.idl @@ -20,18 +20,18 @@ interface mixin Canvas2DRecorderContext { void reset(); // transformations (default transform is the identity matrix) - [HighEntropy, NoAllocDirectCall] void scale(unrestricted double x, unrestricted double y); - [HighEntropy, NoAllocDirectCall] void rotate(unrestricted double angle); - [HighEntropy, NoAllocDirectCall] void translate(unrestricted double x, unrestricted double y); - [HighEntropy, NoAllocDirectCall] void transform(unrestricted double a, unrestricted double b, unrestricted double c, unrestricted double d, unrestricted double e, unrestricted double f); + [NoAllocDirectCall] void scale(unrestricted double x, unrestricted double y); + [NoAllocDirectCall] void rotate(unrestricted double angle); + [NoAllocDirectCall] void translate(unrestricted double x, unrestricted double y); + [NoAllocDirectCall] void transform(unrestricted double a, unrestricted double b, unrestricted double c, unrestricted double d, unrestricted double e, unrestricted double f); DOMMatrix getTransform(); - [HighEntropy, NoAllocDirectCall] void setTransform(unrestricted double a, unrestricted double b, unrestricted double c, unrestricted double d, unrestricted double e, unrestricted double f); + [NoAllocDirectCall] void setTransform(unrestricted double a, unrestricted double b, unrestricted double c, unrestricted double d, unrestricted double e, unrestricted double f); [RaisesException] void setTransform(optional DOMMatrixInit transform = {}); [NoAllocDirectCall] void resetTransform(); // compositing [NoAllocDirectCall=Setter] attribute unrestricted double globalAlpha; // (default 1.0) - [HighEntropy] attribute DOMString globalCompositeOperation; // (default source-over) + attribute DOMString globalCompositeOperation; // (default source-over) [MeasureAs=Canvas2DFilter, SetterCallWith=ScriptState] attribute (DOMString or CanvasFilter)? filter; // (default 'none') [RuntimeEnabled=CanvasGlobalHDRHeadroom] attribute unrestricted double globalHDRHeadroom; // (default 0.0) @@ -40,37 +40,37 @@ interface mixin Canvas2DRecorderContext { [MeasureAs=Canvas2DImageSmoothingQuality2] attribute ImageSmoothingQuality imageSmoothingQuality; // (default "low") // colors and styles (see also the CanvasDrawingStyles interface) - [HighEntropy, SetterCallWith=Isolate, RaisesException=Setter, GetterCallWith=ScriptState] attribute any strokeStyle; // (default black) - [HighEntropy, SetterCallWith=Isolate, RaisesException=Setter, GetterCallWith=ScriptState] attribute any fillStyle; // (default black) + [SetterCallWith=Isolate, RaisesException=Setter, GetterCallWith=ScriptState] attribute any strokeStyle; // (default black) + [SetterCallWith=Isolate, RaisesException=Setter, GetterCallWith=ScriptState] attribute any fillStyle; // (default black) CanvasGradient createLinearGradient(double x0, double y0, double x1, double y1); [RaisesException] CanvasGradient createRadialGradient(double x0, double y0, double r0, double x1, double y1, double r1); [RaisesException] CanvasPattern? createPattern(CanvasImageSource image, [LegacyNullToEmptyString] DOMString repetitionType); CanvasGradient createConicGradient(double startAngle, double cx, double cy); // shadows - [HighEntropy, NoAllocDirectCall=Setter] attribute unrestricted double shadowOffsetX; - [HighEntropy, NoAllocDirectCall=Setter] attribute unrestricted double shadowOffsetY; - [HighEntropy, NoAllocDirectCall=Setter] attribute unrestricted double shadowBlur; - [HighEntropy] attribute DOMString shadowColor; + [NoAllocDirectCall=Setter] attribute unrestricted double shadowOffsetX; + [NoAllocDirectCall=Setter] attribute unrestricted double shadowOffsetY; + [NoAllocDirectCall=Setter] attribute unrestricted double shadowBlur; + attribute DOMString shadowColor; // rects - [HighEntropy, NoAllocDirectCall] void clearRect(unrestricted double x, unrestricted double y, unrestricted double width, unrestricted double height); - [HighEntropy, NoAllocDirectCall] void fillRect(unrestricted double x, unrestricted double y, unrestricted double width, unrestricted double height); - [HighEntropy, NoAllocDirectCall] void strokeRect(unrestricted double x, unrestricted double y, unrestricted double width, unrestricted double height); + [NoAllocDirectCall] void clearRect(unrestricted double x, unrestricted double y, unrestricted double width, unrestricted double height); + [NoAllocDirectCall] void fillRect(unrestricted double x, unrestricted double y, unrestricted double width, unrestricted double height); + [NoAllocDirectCall] void strokeRect(unrestricted double x, unrestricted double y, unrestricted double width, unrestricted double height); // path API (see also CanvasPath) - [HighEntropy, NoAllocDirectCall] void beginPath(); - [HighEntropy] void fill(optional CanvasFillRule winding); - [HighEntropy] void fill(Path2D path, optional CanvasFillRule winding); - [HighEntropy, NoAllocDirectCall] void stroke(); - [HighEntropy] void stroke(Path2D path); + [NoAllocDirectCall] void beginPath(); + void fill(optional CanvasFillRule winding); + void fill(Path2D path, optional CanvasFillRule winding); + [NoAllocDirectCall] void stroke(); + void stroke(Path2D path); - [HighEntropy] void clip(optional CanvasFillRule winding); - [HighEntropy] void clip(Path2D path, optional CanvasFillRule winding); - [HighEntropy, MeasureAs=Canvas2DIsPointInPath] boolean isPointInPath(unrestricted double x, unrestricted double y, optional CanvasFillRule winding); - [HighEntropy, MeasureAs=Canvas2DIsPointInPath] boolean isPointInPath(Path2D path, unrestricted double x, unrestricted double y, optional CanvasFillRule winding); - [HighEntropy, MeasureAs=Canvas2DIsPointInStroke] boolean isPointInStroke(unrestricted double x, unrestricted double y); - [HighEntropy, MeasureAs=Canvas2DIsPointInStroke] boolean isPointInStroke(Path2D path, unrestricted double x, unrestricted double y); + void clip(optional CanvasFillRule winding); + void clip(Path2D path, optional CanvasFillRule winding); + [MeasureAs=Canvas2DIsPointInPath] boolean isPointInPath(unrestricted double x, unrestricted double y, optional CanvasFillRule winding); + [MeasureAs=Canvas2DIsPointInPath] boolean isPointInPath(Path2D path, unrestricted double x, unrestricted double y, optional CanvasFillRule winding); + [MeasureAs=Canvas2DIsPointInStroke] boolean isPointInStroke(unrestricted double x, unrestricted double y); + [MeasureAs=Canvas2DIsPointInStroke] boolean isPointInStroke(Path2D path, unrestricted double x, unrestricted double y); // drawing images [RaisesException] void drawImage(CanvasImageSource image, unrestricted double x, unrestricted double y); @@ -81,7 +81,7 @@ interface mixin Canvas2DRecorderContext { [MeasureAs=Canvas2DMesh, RuntimeEnabled=Canvas2dMesh, RaisesException] Mesh2DVertexBuffer createMesh2DVertexBuffer(Float32Array buffer); [MeasureAs=Canvas2DMesh, RuntimeEnabled=Canvas2dMesh, RaisesException] Mesh2DUVBuffer createMesh2DUVBuffer(Float32Array buffer); [MeasureAs=Canvas2DMesh, RuntimeEnabled=Canvas2dMesh, RaisesException] Mesh2DIndexBuffer createMesh2DIndexBuffer(Uint16Array buffer); - [MeasureAs=Canvas2DMesh, RuntimeEnabled=Canvas2dMesh, HighEntropy, RaisesException] void drawMesh(Mesh2DVertexBuffer vertex_buffer, + [MeasureAs=Canvas2DMesh, RuntimeEnabled=Canvas2dMesh, RaisesException] void drawMesh(Mesh2DVertexBuffer vertex_buffer, Mesh2DUVBuffer uv_buffer, Mesh2DIndexBuffer index_buffer, CanvasImageSource image); diff --git a/tools/under-control/src/third_party/blink/renderer/modules/canvas/canvas2d/canvas_path.idl b/tools/under-control/src/third_party/blink/renderer/modules/canvas/canvas2d/canvas_path.idl index dc178c42..d56e9ca0 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/canvas/canvas2d/canvas_path.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/canvas/canvas2d/canvas_path.idl @@ -6,16 +6,16 @@ interface mixin CanvasPath { // shared path API methods - [HighEntropy, NoAllocDirectCall] void closePath(); - [HighEntropy, NoAllocDirectCall] void moveTo(unrestricted double x, unrestricted double y); - [HighEntropy, NoAllocDirectCall] void lineTo(unrestricted double x, unrestricted double y); + [NoAllocDirectCall] void closePath(); + [NoAllocDirectCall] void moveTo(unrestricted double x, unrestricted double y); + [NoAllocDirectCall] void lineTo(unrestricted double x, unrestricted double y); [NoAllocDirectCall] void quadraticCurveTo(unrestricted double cpx, unrestricted double cpy, unrestricted double x, unrestricted double y); [NoAllocDirectCall] void bezierCurveTo(unrestricted double cp1x, unrestricted double cp1y, unrestricted double cp2x, unrestricted double cp2y, unrestricted double x, unrestricted double y); [NoAllocDirectCall, RaisesException] void arcTo(unrestricted double x1, unrestricted double y1, unrestricted double x2, unrestricted double y2, unrestricted double radius); - [HighEntropy, NoAllocDirectCall] void rect(unrestricted double x, unrestricted double y, unrestricted double width, unrestricted double height); - [HighEntropy, RaisesException] void roundRect(unrestricted double x, unrestricted double y, unrestricted double w, unrestricted double h, sequence<(unrestricted double or DOMPointInit)> radii); - [HighEntropy, RaisesException] void roundRect(unrestricted double x, unrestricted double y, unrestricted double w, unrestricted double h, optional (unrestricted double or DOMPointInit) radii = 0); + [NoAllocDirectCall] void rect(unrestricted double x, unrestricted double y, unrestricted double width, unrestricted double height); + [RaisesException] void roundRect(unrestricted double x, unrestricted double y, unrestricted double w, unrestricted double h, sequence<(unrestricted double or DOMPointInit)> radii); + [RaisesException] void roundRect(unrestricted double x, unrestricted double y, unrestricted double w, unrestricted double h, optional (unrestricted double or DOMPointInit) radii = 0); - [HighEntropy, NoAllocDirectCall, RaisesException] void arc(unrestricted double x, unrestricted double y, unrestricted double radius, unrestricted double startAngle, unrestricted double endAngle, optional boolean anticlockwise = false); - [HighEntropy, NoAllocDirectCall, RaisesException] void ellipse(unrestricted double x, unrestricted double y, unrestricted double radiusX, unrestricted double radiusY, unrestricted double rotation, unrestricted double startAngle, unrestricted double endAngle, optional boolean anticlockwise = false); + [NoAllocDirectCall, RaisesException] void arc(unrestricted double x, unrestricted double y, unrestricted double radius, unrestricted double startAngle, unrestricted double endAngle, optional boolean anticlockwise = false); + [NoAllocDirectCall, RaisesException] void ellipse(unrestricted double x, unrestricted double y, unrestricted double radiusX, unrestricted double radiusY, unrestricted double rotation, unrestricted double startAngle, unrestricted double endAngle, optional boolean anticlockwise = false); }; 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 9e87dbd8..91d4ccac 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 @@ -55,25 +55,28 @@ interface CanvasRenderingContext2D { void drawFocusIfNeeded(Path2D path, Element element); [RuntimeEnabled=CanvasDrawElement, RaisesException] - void drawElement(Element element, - unrestricted double x, unrestricted double y); + DOMMatrix drawElement(Element element, + unrestricted double x, + unrestricted double y); [RuntimeEnabled=CanvasDrawElement, RaisesException] - void drawElement(Element element, - unrestricted double x, unrestricted double y, - unrestricted double dwidth, unrestricted double dheight); + DOMMatrix drawElement(Element element, + unrestricted double x, + unrestricted double y, + unrestricted double dwidth, + unrestricted double dheight); [RuntimeEnabled=CanvasDrawElement, RaisesException] - void drawElementImage(Element element, - unrestricted double x, unrestricted double y); + DOMMatrix drawElementImage(Element element, + unrestricted double x, + unrestricted double y); [RuntimeEnabled=CanvasDrawElement, RaisesException] - void drawElementImage(Element element, - unrestricted double x, unrestricted double y, - unrestricted double dwidth, unrestricted double dheight); - - [RuntimeEnabled=CanvasDrawElement, RaisesException] - void setHitTestRegions(sequence hitTestRegions); + DOMMatrix drawElementImage(Element element, + unrestricted double x, + unrestricted double y, + unrestricted double dwidth, + unrestricted double dheight); [MeasureAs=GetCanvas2DContextAttributes] CanvasRenderingContext2DSettings getContextAttributes(); }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/canvas/htmlcanvas/html_canvas_element_module.idl b/tools/under-control/src/third_party/blink/renderer/modules/canvas/htmlcanvas/html_canvas_element_module.idl index 1df9c745..05b71b33 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/canvas/htmlcanvas/html_canvas_element_module.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/canvas/htmlcanvas/html_canvas_element_module.idl @@ -16,7 +16,7 @@ typedef (CanvasRenderingContext2D or ImplementedAs=HTMLCanvasElementModule ] partial interface HTMLCanvasElement { - [CallWith=ScriptState, HighEntropy, MeasureAs=HTMLCanvasGetContext, RaisesException] RenderingContext? getContext(DOMString contextId, optional CanvasContextCreationAttributesModule attributes = {}); + [CallWith=ScriptState, MeasureAs=HTMLCanvasGetContext, RaisesException] RenderingContext? getContext(DOMString contextId, optional CanvasContextCreationAttributesModule attributes = {}); [CallWith=ScriptState, RaisesException, MeasureAs=OffscreenCanvas] OffscreenCanvas transferControlToOffscreen(); diff --git a/tools/under-control/src/third_party/blink/renderer/modules/content_extraction/testing/internals_content_extraction.idl b/tools/under-control/src/third_party/blink/renderer/modules/content_extraction/testing/internals_content_extraction.idl new file mode 100755 index 00000000..6438f31a --- /dev/null +++ b/tools/under-control/src/third_party/blink/renderer/modules/content_extraction/testing/internals_content_extraction.idl @@ -0,0 +1,10 @@ +// 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. + +[ + ImplementedAs=InternalsContentExtraction +] partial interface Internals { + [RaisesException] DOMString dumpContentNodeTree(Document document); + [RaisesException] DOMString dumpContentNode(Node node); +}; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/cookie_deprecation_label/cookie_deprecation_label.idl b/tools/under-control/src/third_party/blink/renderer/modules/cookie_deprecation_label/cookie_deprecation_label.idl deleted file mode 100755 index 5601f101..00000000 --- a/tools/under-control/src/third_party/blink/renderer/modules/cookie_deprecation_label/cookie_deprecation_label.idl +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2023 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -[ - Exposed=Window, - SecureContext, - RuntimeEnabled=CookieDeprecationFacilitatedTesting -] interface CookieDeprecationLabel { - [CallWith=ScriptState] Promise getValue(); -}; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/cookie_deprecation_label/navigator_cookie_deprecation_label.idl b/tools/under-control/src/third_party/blink/renderer/modules/cookie_deprecation_label/navigator_cookie_deprecation_label.idl deleted file mode 100755 index 175e7ecf..00000000 --- a/tools/under-control/src/third_party/blink/renderer/modules/cookie_deprecation_label/navigator_cookie_deprecation_label.idl +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2023 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -[ - Exposed=Window, - ImplementedAs=CookieDeprecationLabel -] partial interface Navigator { - [SecureContext, SameObject, RuntimeEnabled=CookieDeprecationFacilitatedTesting] readonly attribute CookieDeprecationLabel cookieDeprecationLabel; -}; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/cookie_store/cookie_init.idl b/tools/under-control/src/third_party/blink/renderer/modules/cookie_store/cookie_init.idl index 1fbee532..59725a39 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/cookie_store/cookie_init.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/cookie_store/cookie_init.idl @@ -18,4 +18,5 @@ dictionary CookieInit { DOMHighResTimeStamp? expires = null; CookieSameSite sameSite = "strict"; boolean partitioned = false; + [RuntimeEnabled=CookieStoreAPIMaxAge] long long? maxAge; }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/authenticator_attestation_response.idl b/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/authenticator_attestation_response.idl index 4afdaec2..10c29cac 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/authenticator_attestation_response.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/authenticator_attestation_response.idl @@ -10,7 +10,7 @@ Exposed=Window ] interface AuthenticatorAttestationResponse : AuthenticatorResponse { [SameObject] readonly attribute ArrayBuffer attestationObject; - [HighEntropy=Direct, Measure] sequence getTransports(); + [Measure] sequence getTransports(); ArrayBuffer getAuthenticatorData(); [Measure] ArrayBuffer? getPublicKey(); diff --git a/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/credential_request_options.idl b/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/credential_request_options.idl index fa46b59b..d36d4344 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/credential_request_options.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/credentialmanagement/credential_request_options.idl @@ -12,12 +12,18 @@ enum CredentialMediationRequirement { "immediate" }; +enum CredentialUiModeRequirement { + "active", + "immediate" +}; + dictionary CredentialRequestOptions { FederatedCredentialRequestOptions federated; IdentityCredentialRequestOptions identity; boolean password = false; CredentialMediationRequirement mediation = "optional"; + [RuntimeEnabled=WebAuthenticationUiMode] CredentialUiModeRequirement uiMode = "active"; [RuntimeEnabled=WebOTP] OTPCredentialRequestOptions otp; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/crypto/worker_global_scope_crypto.idl b/tools/under-control/src/third_party/blink/renderer/modules/crypto/window_or_worker_global_scope_crypto.idl similarity index 92% rename from tools/under-control/src/third_party/blink/renderer/modules/crypto/worker_global_scope_crypto.idl rename to tools/under-control/src/third_party/blink/renderer/modules/crypto/window_or_worker_global_scope_crypto.idl index c180ef35..6e11c239 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/crypto/worker_global_scope_crypto.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/crypto/window_or_worker_global_scope_crypto.idl @@ -31,7 +31,7 @@ // https://w3c.github.io/webcrypto/Overview.html#crypto-interface [ - ImplementedAs=WorkerGlobalScopeCrypto -] partial interface WorkerGlobalScope { - readonly attribute Crypto crypto; + ImplementedAs=GlobalCrypto +] partial interface mixin WindowOrWorkerGlobalScope { + [SameObject] readonly attribute Crypto crypto; }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/csspaint/paint_worklet_global_scope.idl b/tools/under-control/src/third_party/blink/renderer/modules/csspaint/paint_worklet_global_scope.idl index 4b0bf3cc..19cfbb72 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/csspaint/paint_worklet_global_scope.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/csspaint/paint_worklet_global_scope.idl @@ -8,7 +8,7 @@ Exposed=PaintWorklet, Global=(Worklet,PaintWorklet) ] interface PaintWorkletGlobalScope : WorkletGlobalScope { - [HighEntropy=Direct, Measure] readonly attribute unrestricted double devicePixelRatio; + [Measure] readonly attribute unrestricted double devicePixelRatio; [Measure, RaisesException, CallWith=ScriptState] void registerPaint(DOMString name, NoArgumentConstructor paintCtor); }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/donottrack/navigator_do_not_track.idl b/tools/under-control/src/third_party/blink/renderer/modules/donottrack/navigator_do_not_track.idl index cedba8e0..3397e75b 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/donottrack/navigator_do_not_track.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/donottrack/navigator_do_not_track.idl @@ -31,5 +31,5 @@ [ ImplementedAs=NavigatorDoNotTrack ] partial interface Navigator { - [HighEntropy=Direct, MeasureAs=NavigatorDoNotTrack] readonly attribute DOMString? doNotTrack; + [MeasureAs=NavigatorDoNotTrack] readonly attribute DOMString? doNotTrack; }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/gamepad/gamepad.idl b/tools/under-control/src/third_party/blink/renderer/modules/gamepad/gamepad.idl index b4fba42b..63d801d4 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/gamepad/gamepad.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/gamepad/gamepad.idl @@ -36,7 +36,7 @@ enum GamepadMappingType { [ Exposed=Window ] interface Gamepad { - [HighEntropy=Direct, MeasureAs=GamepadId] readonly attribute DOMString id; + [MeasureAs=GamepadId] readonly attribute DOMString id; readonly attribute long index; readonly attribute boolean connected; readonly attribute DOMHighResTimeStamp timestamp; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/gamepad/gamepad_raw_input_change_event.idl b/tools/under-control/src/third_party/blink/renderer/modules/gamepad/gamepad_raw_input_change_event.idl new file mode 100755 index 00000000..dad34661 --- /dev/null +++ b/tools/under-control/src/third_party/blink/renderer/modules/gamepad/gamepad_raw_input_change_event.idl @@ -0,0 +1,15 @@ +// 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. + +[ + Exposed=Window, + RuntimeEnabled=GamepadRawInputChangeEvent +] interface GamepadRawInputChangeEvent : GamepadEvent { + constructor(DOMString type, optional GamepadRawInputChangeEventInit eventInitDict = {}); + readonly attribute FrozenArray axesChanged; + readonly attribute FrozenArray buttonsValueChanged; + readonly attribute FrozenArray buttonsPressed; + readonly attribute FrozenArray buttonsReleased; + readonly attribute FrozenArray touchesChanged; +}; \ No newline at end of file diff --git a/tools/under-control/src/third_party/blink/renderer/modules/gamepad/gamepad_raw_input_change_event_init.idl b/tools/under-control/src/third_party/blink/renderer/modules/gamepad/gamepad_raw_input_change_event_init.idl new file mode 100755 index 00000000..9e572069 --- /dev/null +++ b/tools/under-control/src/third_party/blink/renderer/modules/gamepad/gamepad_raw_input_change_event_init.idl @@ -0,0 +1,11 @@ +// 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 GamepadRawInputChangeEventInit : GamepadEventInit { + FrozenArray axesChanged; + FrozenArray buttonsValueChanged; + FrozenArray buttonsPressed; + FrozenArray buttonsReleased; + FrozenArray touchesChanged; +}; \ No newline at end of file diff --git a/tools/under-control/src/third_party/blink/renderer/modules/gamepad/window_gamepad.idl b/tools/under-control/src/third_party/blink/renderer/modules/gamepad/window_gamepad.idl index 3b8190d8..a0be30a8 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/gamepad/window_gamepad.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/gamepad/window_gamepad.idl @@ -3,9 +3,9 @@ // found in the LICENSE file. [ - RuntimeEnabled=GamepadWindowEventHandlers, ImplementedAs=DOMWindowGamepad ] partial interface mixin WindowEventHandlers { - attribute EventHandler ongamepadconnected; - attribute EventHandler ongamepaddisconnected; + [RuntimeEnabled=GamepadWindowEventHandlers] attribute EventHandler ongamepadconnected; + [RuntimeEnabled=GamepadWindowEventHandlers] attribute EventHandler ongamepaddisconnected; + [RuntimeEnabled=GamepadRawInputChangeEvent] attribute EventHandler ongamepadrawinputchanged; }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/keyboard/keyboard.idl b/tools/under-control/src/third_party/blink/renderer/modules/keyboard/keyboard.idl index a85232ef..8084ba84 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/keyboard/keyboard.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/keyboard/keyboard.idl @@ -19,7 +19,6 @@ // Keyboard Map specification: https://wicg.github.io/keyboard-map/ [CallWith=ScriptState, RaisesException, - HighEntropy, MeasureAs=KeyboardApiGetLayoutMap ] Promise getLayoutMap(); }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/media_capabilities/media_capabilities.idl b/tools/under-control/src/third_party/blink/renderer/modules/media_capabilities/media_capabilities.idl index 88f5bf79..f0decc43 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/media_capabilities/media_capabilities.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/media_capabilities/media_capabilities.idl @@ -6,8 +6,8 @@ [Exposed=(Window,Worker)] interface MediaCapabilities { - [CallWith=ScriptState, RaisesException, HighEntropy, Measure] Promise decodingInfo( + [CallWith=ScriptState, RaisesException, Measure] Promise decodingInfo( MediaDecodingConfiguration configuration); - [CallWith=ScriptState, RaisesException, HighEntropy, Measure] Promise encodingInfo( + [CallWith=ScriptState, RaisesException, Measure] Promise encodingInfo( MediaEncodingConfiguration configuration); }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/mediacapturefromelement/html_canvas_element_capture.idl b/tools/under-control/src/third_party/blink/renderer/modules/mediacapturefromelement/html_canvas_element_capture.idl index cbf3fbed..e0f7c96b 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/mediacapturefromelement/html_canvas_element_capture.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/mediacapturefromelement/html_canvas_element_capture.idl @@ -6,5 +6,5 @@ [ ImplementedAs=HTMLCanvasElementCapture ] partial interface HTMLCanvasElement { - [HighEntropy, MeasureAs=CanvasCaptureStream, RaisesException, CallWith=ScriptState] MediaStream captureStream (optional double frameRate); + [MeasureAs=CanvasCaptureStream, RaisesException, CallWith=ScriptState] MediaStream captureStream (optional double frameRate); }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/mediarecorder/media_recorder.idl b/tools/under-control/src/third_party/blink/renderer/modules/mediarecorder/media_recorder.idl index 4a1d7aa1..8cd95411 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/mediarecorder/media_recorder.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/mediarecorder/media_recorder.idl @@ -12,7 +12,7 @@ enum RecordingState { "inactive", "recording", "paused" }; ] interface MediaRecorder : EventTarget { [CallWith=ExecutionContext, RaisesException] constructor(MediaStream stream, optional MediaRecorderOptions options = {}); readonly attribute MediaStream stream; - [HighEntropy=Direct, MeasureAs=MediaRecorder_MimeType] readonly attribute DOMString mimeType; + [MeasureAs=MediaRecorder_MimeType] readonly attribute DOMString mimeType; readonly attribute RecordingState state; attribute EventHandler onstart; @@ -21,8 +21,8 @@ enum RecordingState { "inactive", "recording", "paused" }; attribute EventHandler onpause; attribute EventHandler onresume; attribute EventHandler onerror; - [HighEntropy=Direct, MeasureAs=MediaRecorder_VideoBitsPerSecond] readonly attribute unsigned long videoBitsPerSecond; - [HighEntropy=Direct, MeasureAs=MediaRecorder_AudioBitsPerSecond] readonly attribute unsigned long audioBitsPerSecond; + [MeasureAs=MediaRecorder_VideoBitsPerSecond] readonly attribute unsigned long videoBitsPerSecond; + [MeasureAs=MediaRecorder_AudioBitsPerSecond] readonly attribute unsigned long audioBitsPerSecond; readonly attribute BitrateMode audioBitrateMode; [RaisesException, Measure] void start(optional long timeslice); diff --git a/tools/under-control/src/third_party/blink/renderer/modules/mediastream/media_devices.idl b/tools/under-control/src/third_party/blink/renderer/modules/mediastream/media_devices.idl index 319e0aa6..72474e30 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/mediastream/media_devices.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/mediastream/media_devices.idl @@ -13,12 +13,12 @@ ] interface MediaDevices : EventTarget { attribute EventHandler ondevicechange; [ - CallWith = ScriptState, RaisesException, HighEntropy, MeasureAs = MediaDevicesEnumerateDevices + CallWith = ScriptState, RaisesException, MeasureAs = MediaDevicesEnumerateDevices ] Promise> enumerateDevices(); MediaTrackSupportedConstraints getSupportedConstraints(); [ - CallWith = ScriptState, RaisesException, HighEntropy, MeasureAs = GetUserMediaPromise + CallWith = ScriptState, RaisesException, MeasureAs = GetUserMediaPromise ] Promise getUserMedia(optional UserMediaStreamConstraints constraints = {}); diff --git a/tools/under-control/src/third_party/blink/renderer/modules/mediastream/navigator_media_stream.idl b/tools/under-control/src/third_party/blink/renderer/modules/mediastream/navigator_media_stream.idl index 5f6f084d..79c37f1a 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/mediastream/navigator_media_stream.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/mediastream/navigator_media_stream.idl @@ -21,8 +21,7 @@ [ ImplementedAs=NavigatorMediaStream ] partial interface Navigator { - [HighEntropy, - RaisesException, + [RaisesException, SecureContext, MeasureAs=GetUserMediaLegacy ] void getUserMedia(MediaStreamConstraints constraints, @@ -30,8 +29,7 @@ NavigatorUserMediaErrorCallback errorCallback); // Non-standard - [HighEntropy, - RaisesException, + [RaisesException, SecureContext, ImplementedAs=getUserMedia, MeasureAs=GetUserMediaPrefixed diff --git a/tools/under-control/src/third_party/blink/renderer/modules/ml/ml.idl b/tools/under-control/src/third_party/blink/renderer/modules/ml/ml.idl index cf9ff065..c7cb8f40 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/ml/ml.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/ml/ml.idl @@ -14,9 +14,4 @@ Measure ] Promise createContext(optional MLContextOptions options = {}); - [ - CallWith=ScriptState, - RaisesException, - MeasureAs=MLCreateContextGPUDevice - ] Promise createContext(GPUDevice gpuDevice); }; 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 2eb13eb7..fa7d1210 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 @@ -311,6 +311,12 @@ typedef record MLNamedTensors; MLOperandDescriptor descriptor, AllowSharedBufferSource sourceData); + [ + RuntimeEnabled=MachineLearningNeuralNetwork, + CallWith=ScriptState, + RaisesException + ] Promise createExportableTensor(MLTensorDescriptor descriptor, GPUDevice device); + [ RuntimeEnabled=MachineLearningNeuralNetwork, CallWith=ScriptState, diff --git a/tools/under-control/src/third_party/blink/renderer/modules/ml/webnn/ml_tensor.idl b/tools/under-control/src/third_party/blink/renderer/modules/ml/webnn/ml_tensor.idl index 817b8e03..dba30072 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/ml/webnn/ml_tensor.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/ml/webnn/ml_tensor.idl @@ -10,7 +10,7 @@ ] interface MLTensor { readonly attribute MLOperandDataType dataType; readonly attribute FrozenArray shape; - readonly attribute boolean exportableToGPU; + readonly attribute GPUDevice? gpuDevice; readonly attribute boolean readable; readonly attribute boolean writable; readonly attribute boolean constant; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/ml/webnn/ml_tensor_descriptor.idl b/tools/under-control/src/third_party/blink/renderer/modules/ml/webnn/ml_tensor_descriptor.idl index 15105fef..1643049c 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/ml/webnn/ml_tensor_descriptor.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/ml/webnn/ml_tensor_descriptor.idl @@ -5,7 +5,6 @@ // https://www.w3.org/TR/webnn/#api-mltensor dictionary MLTensorDescriptor : MLOperandDescriptor { - boolean exportableToGPU = false; boolean readable = false; boolean writable = false; }; \ No newline at end of file diff --git a/tools/under-control/src/third_party/blink/renderer/modules/navigatorcontentutils/navigator_content_utils.idl b/tools/under-control/src/third_party/blink/renderer/modules/navigatorcontentutils/navigator_content_utils.idl index 6c9641c0..58cab56a 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/navigatorcontentutils/navigator_content_utils.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/navigatorcontentutils/navigator_content_utils.idl @@ -20,9 +20,8 @@ // https://html.spec.whatwg.org/C/#custom-handlers -[ - ImplementedAs=NavigatorContentUtils -] partial interface Navigator { - [RuntimeEnabled=NavigatorContentUtils, RaisesException, SecureContext] void registerProtocolHandler(DOMString scheme, USVString url); - [RuntimeEnabled=NavigatorContentUtils, RaisesException, SecureContext] void unregisterProtocolHandler(DOMString scheme, USVString url); +interface mixin NavigatorContentUtils { + [RuntimeEnabled=NavigatorContentUtils, RaisesException, SecureContext] undefined registerProtocolHandler(DOMString scheme, USVString url); + [RuntimeEnabled=NavigatorContentUtils, RaisesException, SecureContext] undefined unregisterProtocolHandler(DOMString scheme, USVString url); }; +Navigator includes NavigatorContentUtils; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/netinfo/network_information.idl b/tools/under-control/src/third_party/blink/renderer/modules/netinfo/network_information.idl index fbbaa07b..0fdaa508 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/netinfo/network_information.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/netinfo/network_information.idl @@ -29,12 +29,12 @@ typedef unsigned long long Milliseconds; ActiveScriptWrappable, Exposed=(Window,Worker) ] interface NetworkInformation : EventTarget { - [RuntimeEnabled=NetInfoDownlinkMax, HighEntropy=Direct, MeasureAs=NetInfoType] readonly attribute ConnectionType type; - [RuntimeEnabled=NetInfoDownlinkMax, HighEntropy=Direct, MeasureAs=NetInfoDownlinkMax] readonly attribute Megabit downlinkMax; + [RuntimeEnabled=NetInfoDownlinkMax, MeasureAs=NetInfoType] readonly attribute ConnectionType type; + [RuntimeEnabled=NetInfoDownlinkMax, MeasureAs=NetInfoDownlinkMax] readonly attribute Megabit downlinkMax; [MeasureAs=NetInfoOnChange] attribute EventHandler onchange; [RuntimeEnabled=NetInfoDownlinkMax, MeasureAs=NetInfoOnTypeChange] attribute EventHandler ontypechange; - [HighEntropy=Direct, MeasureAs=NetInfoEffectiveType] readonly attribute EffectiveConnectionType effectiveType; - [HighEntropy=Direct, MeasureAs=NetInfoRtt] readonly attribute Milliseconds rtt; - [HighEntropy=Direct, MeasureAs=NetInfoDownlink] readonly attribute Megabit downlink; - [HighEntropy=Direct, MeasureAs=NetInfoSaveData] readonly attribute boolean saveData; + [MeasureAs=NetInfoEffectiveType] readonly attribute EffectiveConnectionType effectiveType; + [MeasureAs=NetInfoRtt] readonly attribute Milliseconds rtt; + [MeasureAs=NetInfoDownlink] readonly attribute Megabit downlink; + [MeasureAs=NetInfoSaveData] readonly attribute boolean saveData; }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/payments/payment_request.idl b/tools/under-control/src/third_party/blink/renderer/modules/payments/payment_request.idl index 86d17e0c..292006ea 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/payments/payment_request.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/payments/payment_request.idl @@ -23,8 +23,8 @@ enum SecurePaymentConfirmationAvailability { [CallWith=ExecutionContext, RaisesException] constructor(sequence methodData, optional PaymentDetailsInit details = {}, optional PaymentOptions options = {}); [CallWith=ScriptState, RaisesException, NewObject] Promise show(optional Promise detailsPromise); [CallWith=ScriptState, RaisesException, NewObject] Promise abort(); - [CallWith=ScriptState, RaisesException, HighEntropy, Measure, NewObject] Promise canMakePayment(); - [CallWith=ScriptState, RaisesException, HighEntropy, Measure, NewObject] Promise hasEnrolledInstrument(); + [CallWith=ScriptState, RaisesException, Measure, NewObject] Promise canMakePayment(); + [CallWith=ScriptState, RaisesException, Measure, NewObject] Promise hasEnrolledInstrument(); readonly attribute DOMString id; [ImplementedAs=getShippingAddress] readonly attribute PaymentAddress? shippingAddress; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_ice_candidate.idl b/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_ice_candidate.idl index db2cb390..bc96f2bf 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_ice_candidate.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_ice_candidate.idl @@ -60,19 +60,19 @@ enum RTCIceTcpCandidateType { Exposed=Window ] interface RTCIceCandidate { [CallWith=ExecutionContext, RaisesException] constructor(optional RTCIceCandidateInit candidateInitDict = {}); - [HighEntropy=Direct, MeasureAs=RTCIceCandidateCandidate] readonly attribute DOMString candidate; + [MeasureAs=RTCIceCandidateCandidate] readonly attribute DOMString candidate; readonly attribute DOMString? sdpMid; readonly attribute unsigned short? sdpMLineIndex; readonly attribute DOMString? foundation; readonly attribute RTCIceComponent? component; readonly attribute unsigned long? priority; - [HighEntropy=Direct, MeasureAs=RTCIceCandidateAddress] readonly attribute DOMString? address; + [MeasureAs=RTCIceCandidateAddress] readonly attribute DOMString? address; readonly attribute RTCIceProtocol? protocol; - [HighEntropy=Direct, MeasureAs=RTCIceCandidatePort] readonly attribute unsigned short? port; + [MeasureAs=RTCIceCandidatePort] readonly attribute unsigned short? port; readonly attribute RTCIceCandidateType? type; readonly attribute RTCIceTcpCandidateType? tcpType; - [HighEntropy=Direct, MeasureAs=RTCIceCandidateRelatedAddress] readonly attribute DOMString? relatedAddress; - [HighEntropy=Direct, MeasureAs=RTCIceCandidateRelatedPort] readonly attribute unsigned short? relatedPort; + [MeasureAs=RTCIceCandidateRelatedAddress] readonly attribute DOMString? relatedAddress; + [MeasureAs=RTCIceCandidateRelatedPort] readonly attribute unsigned short? relatedPort; readonly attribute DOMString? usernameFragment; readonly attribute RTCIceServerTransportProtocol? relayProtocol; readonly attribute DOMString? url; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver.idl b/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver.idl index dde2f42e..3003e36c 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver.idl @@ -12,7 +12,7 @@ interface RTCRtpReceiver { [RaisesException=Setter, Measure] attribute double? playoutDelayHint; // https://w3c.github.io/webrtc-extensions/#dom-rtcrtpreceiver-jitterbuffertarget [RaisesException=Setter, Measure, RuntimeEnabled=RTCJitterBufferTarget] attribute double? jitterBufferTarget; - [CallWith=ScriptState, HighEntropy, Measure] static RTCRtpCapabilities? getCapabilities(DOMString kind); + [CallWith=ScriptState, Measure] static RTCRtpCapabilities? getCapabilities(DOMString kind); RTCRtpReceiveParameters getParameters(); [CallWith=ScriptState, RaisesException] sequence getSynchronizationSources(); [CallWith=ScriptState, RaisesException] sequence getContributingSources(); diff --git a/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_rtp_send_parameters.idl b/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_rtp_send_parameters.idl index 58d4ed44..5e18b474 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_rtp_send_parameters.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_rtp_send_parameters.idl @@ -6,7 +6,8 @@ enum RTCDegradationPreference { "maintain-framerate", "maintain-resolution", - "balanced" + "balanced", + "maintain-framerate-and-resolution" }; // https://w3c.github.io/webrtc-pc/#rtcsendrtpparameters diff --git a/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_rtp_sender.idl b/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_rtp_sender.idl index 58cf99c8..afb2ffed 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_rtp_sender.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_rtp_sender.idl @@ -8,7 +8,7 @@ interface RTCRtpSender { readonly attribute MediaStreamTrack? track; readonly attribute RTCDtlsTransport? transport; readonly attribute RTCDtlsTransport? rtcpTransport; - [CallWith=ScriptState, HighEntropy, Measure] static RTCRtpCapabilities? getCapabilities(DOMString kind); + [CallWith=ScriptState, Measure] static RTCRtpCapabilities? getCapabilities(DOMString kind); // options argument is defined by https://w3c.github.io/webrtc-extensions/#rtcrtpsender-setparameters-keyframe [CallWith=ScriptState, RaisesException] Promise setParameters(RTCRtpSendParameters parameters, optional RTCSetParameterOptions options = {}); RTCRtpSendParameters getParameters(); diff --git a/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_stats_report.idl b/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_stats_report.idl index a8eebda7..f1bb8a99 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_stats_report.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_stats_report.idl @@ -65,6 +65,8 @@ dictionary RTCReceivedRtpStreamStats : RTCRtpStreamStats { unsigned long long packetsReceived; unsigned long long packetsReceivedWithEct1; unsigned long long packetsReceivedWithCe; + unsigned long long packetsReportedAsLost; + unsigned long long packetsReportedAsLostButRecovered; long long packetsLost; double jitter; }; @@ -140,6 +142,7 @@ dictionary RTCRemoteInboundRtpStreamStats : RTCReceivedRtpStreamStats { double totalRoundTripTime; double fractionLost; unsigned long long roundTripTimeMeasurements; + unsigned long long packetsWithBleachedEct1Marking; }; // https://w3c.github.io/webrtc-stats/#sentrtpstats-dict* diff --git a/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_transport/rtc_transport.idl b/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_transport/rtc_transport.idl index 0a10498c..e643cd95 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_transport/rtc_transport.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/peerconnection/rtc_transport/rtc_transport.idl @@ -9,16 +9,16 @@ dictionary RtcTransportConfig { // ICE configuration. sequence iceServers; - boolean iceControlling; + required boolean iceControlling; RtcTransportWireProtocol wireProtocol = "dtls-srtp"; }; dictionary RtcTransportICECandidateInit { - DOMString address; - unsigned short port; - DOMString usernameFragment; - DOMString password; - RTCIceCandidateType type; + required DOMString address; + required unsigned short port; + required DOMString usernameFragment; + required DOMString password; + required RTCIceCandidateType type; }; dictionary RtcSendPacketParameters { @@ -27,7 +27,7 @@ dictionary RtcSendPacketParameters { long long id; // TODO(crbug.com/443019066): Change to support BYOB. - ArrayBuffer data; + required ArrayBuffer data; DOMHighResTimeStamp desiredSendTime; }; @@ -35,9 +35,9 @@ dictionary RtcSendPacketParameters { enum RtcTransportSslRole {"server", "client"}; dictionary RtcDtlsParameters { - RtcTransportSslRole sslRole; - DOMString fingerprintDigestAlgorithm; - ArrayBuffer fingerprint; + required RtcTransportSslRole sslRole; + required DOMString fingerprintDigestAlgorithm; + required ArrayBuffer fingerprint; }; [ @@ -58,5 +58,6 @@ dictionary RtcDtlsParameters { readonly attribute DOMString fingerprintDigestAlgorithm; readonly attribute ArrayBuffer fingerprint; + attribute EventHandler onwritablechange; [CallWith=ScriptState] Promise writable(); }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/plugins/navigator_plugins.idl b/tools/under-control/src/third_party/blink/renderer/modules/plugins/navigator_plugins.idl index 1b319dff..404b338f 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/plugins/navigator_plugins.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/plugins/navigator_plugins.idl @@ -5,9 +5,9 @@ // https://html.spec.whatwg.org/C/#navigatorplugins [ ImplementedAs=NavigatorPlugins -] partial interface Navigator { - [HighEntropy, MeasureAs=NavigatorPlugins] readonly attribute PluginArray plugins; - [HighEntropy, MeasureAs=NavigatorMimeTypes] readonly attribute MimeTypeArray mimeTypes; - [HighEntropy=Direct, Measure] boolean javaEnabled(); - [HighEntropy, MeasureAs=NavigatorPdfViewerEnabled] readonly attribute boolean pdfViewerEnabled; +] interface mixin NavigatorPlugins { + [MeasureAs=NavigatorPlugins, SameObject] readonly attribute PluginArray plugins; + [MeasureAs=NavigatorMimeTypes, SameObject] readonly attribute MimeTypeArray mimeTypes; + [Measure] boolean javaEnabled(); + [MeasureAs=NavigatorPdfViewerEnabled] readonly attribute boolean pdfViewerEnabled; }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/plugins/plugin.idl b/tools/under-control/src/third_party/blink/renderer/modules/plugins/plugin.idl index dbbbe314..60c0d023 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/plugins/plugin.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/plugins/plugin.idl @@ -25,9 +25,9 @@ ImplementedAs=DOMPlugin, LegacyUnenumerableNamedProperties ] interface Plugin { - [HighEntropy=Direct, MeasureAs=PluginName] readonly attribute DOMString name; - [HighEntropy=Direct, MeasureAs=PluginFilename] readonly attribute DOMString filename; - [HighEntropy=Direct, MeasureAs=PluginDescription] readonly attribute DOMString description; + [MeasureAs=PluginName] readonly attribute DOMString name; + [MeasureAs=PluginFilename] readonly attribute DOMString filename; + [MeasureAs=PluginDescription] readonly attribute DOMString description; readonly attribute unsigned long length; getter MimeType? item(unsigned long index); getter MimeType? namedItem(DOMString name); diff --git a/tools/under-control/src/third_party/blink/renderer/modules/push_messaging/push_manager.idl b/tools/under-control/src/third_party/blink/renderer/modules/push_messaging/push_manager.idl index a8de81e5..5bbf57d8 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/push_messaging/push_manager.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/push_messaging/push_manager.idl @@ -8,7 +8,7 @@ Exposed=(Window,Worker), RuntimeEnabled=PushMessaging ] interface PushManager { - [SameObject, SaveSameObject, HighEntropy=Direct, Measure] + [SameObject, SaveSameObject, Measure] static readonly attribute FrozenArray supportedContentEncodings; [CallWith=ScriptState, RaisesException] Promise subscribe(optional PushSubscriptionOptionsInit options = {}); diff --git a/tools/under-control/src/third_party/blink/renderer/modules/quota/worker_navigator_storage_quota.idl b/tools/under-control/src/third_party/blink/renderer/modules/quota/navigator_storage.idl similarity index 82% rename from tools/under-control/src/third_party/blink/renderer/modules/quota/worker_navigator_storage_quota.idl rename to tools/under-control/src/third_party/blink/renderer/modules/quota/navigator_storage.idl index 88881890..15c78f1d 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/quota/worker_navigator_storage_quota.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/quota/navigator_storage.idl @@ -18,8 +18,11 @@ */ [ + SecureContext, ImplementedAs=NavigatorStorageQuota -] partial interface WorkerNavigator { +] interface mixin NavigatorStorage { // https://storage.spec.whatwg.org/#api - [SecureContext] readonly attribute StorageManager storage; + [SameObject] readonly attribute StorageManager storage; }; +Navigator includes NavigatorStorage; +WorkerNavigator includes NavigatorStorage; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/quota/navigator_storage_quota.idl b/tools/under-control/src/third_party/blink/renderer/modules/quota/navigator_storage_quota.idl index ea74e64a..627aa404 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/quota/navigator_storage_quota.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/quota/navigator_storage_quota.idl @@ -27,7 +27,4 @@ // As of crbug.com/1233525, webkitPersistentStorage is an alias to webkitTemporaryStorage. [MeasureAs=PrefixedStorageQuota] readonly attribute DeprecatedStorageQuota webkitPersistentStorage; - - // https://storage.spec.whatwg.org/#api - [SecureContext] readonly attribute StorageManager storage; }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/screen_details/screen_detailed.idl b/tools/under-control/src/third_party/blink/renderer/modules/screen_details/screen_detailed.idl index 6375f25c..548c29ec 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/screen_details/screen_detailed.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/screen_details/screen_detailed.idl @@ -10,25 +10,25 @@ ] interface ScreenDetailed : Screen { // Distance from a multi-screen origin (e.g. primary screen top left) to the // left edge of the screen area. - [HighEntropy=Direct, Measure] readonly attribute long left; + [Measure] readonly attribute long left; // Distance from a multi-screen origin (e.g. primary screen top left) to the // top edge of the screen area. - [HighEntropy=Direct, Measure] readonly attribute long top; + [Measure] readonly attribute long top; // Whether this screen is designated as the 'primary' screen by the OS // (otherwise it is a 'secondary' screen). - [HighEntropy=Direct, Measure] readonly attribute boolean isPrimary; + [Measure] readonly attribute boolean isPrimary; // Whether this screen is an 'internal' panel built into the device, like a // laptop display (otherwise it is 'external', like a wired monitor). - [HighEntropy=Direct, Measure] readonly attribute boolean isInternal; + [Measure] readonly attribute boolean isInternal; // Specifies the ratio between physical and logical pixels. - [HighEntropy=Direct, Measure] readonly attribute float devicePixelRatio; + [Measure] readonly attribute float devicePixelRatio; // A user-friendly label for the screen, determined by the user agent and OS. - [HighEntropy=Direct, Measure] readonly attribute DOMString label; + [Measure] readonly attribute DOMString label; // The HDR headroom of the screen. This is the base 2 log of the ratio of peak // luminance to HDR reference white luminance. diff --git a/tools/under-control/src/third_party/blink/renderer/modules/screen_details/screen_details.idl b/tools/under-control/src/third_party/blink/renderer/modules/screen_details/screen_details.idl index cee6a2a4..3e598170 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/screen_details/screen_details.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/screen_details/screen_details.idl @@ -16,9 +16,9 @@ // Change event fired when the set of screens changes. // NOTE: Does not fire on changes to attributes of individual Screens. - [HighEntropy, Measure] attribute EventHandler onscreenschange; + [Measure] attribute EventHandler onscreenschange; // Change event fired when any attribute on the currentScreen changes, // including when the window is moved to another screen. - [HighEntropy, Measure] attribute EventHandler oncurrentscreenchange; + [Measure] attribute EventHandler oncurrentscreenchange; }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/screen_orientation/screen_orientation.idl b/tools/under-control/src/third_party/blink/renderer/modules/screen_orientation/screen_orientation.idl index f287271c..88e4c2b6 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/screen_orientation/screen_orientation.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/screen_orientation/screen_orientation.idl @@ -24,8 +24,8 @@ enum OrientationType { [Exposed=Window] interface ScreenOrientation : EventTarget { - [HighEntropy=Direct, MeasureAs=ScreenOrientationAngle] readonly attribute unsigned short angle; - [HighEntropy=Direct, MeasureAs=ScreenOrientationType] readonly attribute OrientationType type; + [MeasureAs=ScreenOrientationAngle] readonly attribute unsigned short angle; + [MeasureAs=ScreenOrientationType] readonly attribute OrientationType type; [CallWith=ScriptState, MeasureAs=ScreenOrientationLock, RaisesException] Promise lock(OrientationLockType orientation); [MeasureAs=ScreenOrientationUnlock] void unlock(); diff --git a/tools/under-control/src/third_party/blink/renderer/modules/shared_storage/shared_storage.idl b/tools/under-control/src/third_party/blink/renderer/modules/shared_storage/shared_storage.idl index 85e1e0ff..4e5b5308 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/shared_storage/shared_storage.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/shared_storage/shared_storage.idl @@ -10,38 +10,44 @@ [ CallWith=ScriptState, RaisesException, - MeasureAs=SharedStorageAPI_Set_Method + MeasureAs=SharedStorageAPI_Set_Method, + DeprecateAs=SharedStorageAPIAll ] Promise set(DOMString key, DOMString value, optional SharedStorageSetMethodOptions options); [ CallWith=ScriptState, RaisesException, - MeasureAs=SharedStorageAPI_Append_Method + MeasureAs=SharedStorageAPI_Append_Method, + DeprecateAs=SharedStorageAPIAll ] Promise append(DOMString key, DOMString value, optional SharedStorageModifierMethodOptions options); [ CallWith=ScriptState, ImplementedAs=Delete, RaisesException, - MeasureAs=SharedStorageAPI_Delete_Method + MeasureAs=SharedStorageAPI_Delete_Method, + DeprecateAs=SharedStorageAPIAll ] Promise delete(DOMString key, optional SharedStorageModifierMethodOptions options); [ CallWith=ScriptState, RaisesException, - MeasureAs=SharedStorageAPI_Clear_Method + MeasureAs=SharedStorageAPI_Clear_Method, + DeprecateAs=SharedStorageAPIAll ] Promise clear(optional SharedStorageModifierMethodOptions options); [ RuntimeEnabled=SharedStorageWebLocks, CallWith=ScriptState, RaisesException, - MeasureAs=SharedStorageAPI_BatchUpdate_Method + MeasureAs=SharedStorageAPI_BatchUpdate_Method, + DeprecateAs=SharedStorageAPIAll ] Promise batchUpdate(sequence methods, optional SharedStorageModifierMethodOptions options); [ CallWith=ScriptState, - RaisesException + RaisesException, + DeprecateAs=SharedStorageAPIAll ] Promise get(DOMString key); [ @@ -66,7 +72,8 @@ Exposed=Window, CallWith=ScriptState, RaisesException, - MeasureAs=SharedStorageAPI_SelectURL_Method + MeasureAs=SharedStorageAPI_SelectURL_Method, + DeprecateAs=SharedStorageAPIAll ] Promise selectURL(DOMString name, sequence urls, optional SharedStorageRunOperationMethodOptions options); @@ -75,14 +82,16 @@ Exposed=Window, CallWith=ScriptState, RaisesException, - MeasureAs=SharedStorageAPI_Run_Method + MeasureAs=SharedStorageAPI_Run_Method, + DeprecateAs=SharedStorageAPIAll ] Promise run(DOMString name, optional SharedStorageRunOperationMethodOptions options); [ Exposed=Window, CallWith=ScriptState, RaisesException, - MeasureAs=SharedStorageAPI_CreateWorklet_Method + MeasureAs=SharedStorageAPI_CreateWorklet_Method, + DeprecateAs=SharedStorageAPIAll ] Promise createWorklet(USVString moduleURL, optional SharedStorageWorkletOptions options = {}); diff --git a/tools/under-control/src/third_party/blink/renderer/modules/shared_storage/shared_storage_worklet.idl b/tools/under-control/src/third_party/blink/renderer/modules/shared_storage/shared_storage_worklet.idl index ff1cd163..eb731568 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/shared_storage/shared_storage_worklet.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/shared_storage/shared_storage_worklet.idl @@ -11,14 +11,16 @@ typedef (USVString or FencedFrameConfig) SharedStorageResponse; [ CallWith=ScriptState, RaisesException, - MeasureAs=SharedStorageAPI_AddModule_Method + MeasureAs=SharedStorageAPI_AddModule_Method, + DeprecateAs=SharedStorageAPIAll ] Promise addModule(USVString moduleURL, optional WorkletOptions options = {}); [ Exposed=Window, CallWith=ScriptState, RaisesException, - MeasureAs=SharedStorageAPI_SelectURL_Method + MeasureAs=SharedStorageAPI_SelectURL_Method, + DeprecateAs=SharedStorageAPIAll ] Promise selectURL(DOMString name, sequence urls, optional SharedStorageRunOperationMethodOptions options); @@ -27,6 +29,7 @@ typedef (USVString or FencedFrameConfig) SharedStorageResponse; Exposed=Window, CallWith=ScriptState, RaisesException, - MeasureAs=SharedStorageAPI_Run_Method + MeasureAs=SharedStorageAPI_Run_Method, + DeprecateAs=SharedStorageAPIAll ] Promise run(DOMString name, optional SharedStorageRunOperationMethodOptions options); }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/shared_storage/window_shared_storage.idl b/tools/under-control/src/third_party/blink/renderer/modules/shared_storage/window_shared_storage.idl index 66005575..9ce9b477 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/shared_storage/window_shared_storage.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/shared_storage/window_shared_storage.idl @@ -5,6 +5,6 @@ [ MeasureAs=SharedStorageAPI_SharedStorage_DOMReference, SecureContext, - RaisesException + RaisesException, DeprecateAs=SharedStorageAPIAll ] readonly attribute SharedStorage sharedStorage; }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/storage_access/document_storage_access.idl b/tools/under-control/src/third_party/blink/renderer/modules/storage_access/document_storage_access.idl index 8bca3eb3..edbe9336 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/storage_access/document_storage_access.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/storage_access/document_storage_access.idl @@ -27,6 +27,6 @@ partial interface Document { [ CallWith=ScriptState, NewObject, - MeasureAs=StorageAccessAPI_requestStorageAccessFor_Method + DeprecateAs=StorageAccessAPI_requestStorageAccessFor_Method ] Promise requestStorageAccessFor(USVString requestedOrigin); }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/webaudio/analyser_node.idl b/tools/under-control/src/third_party/blink/renderer/modules/webaudio/analyser_node.idl index d879f421..35e36b73 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/webaudio/analyser_node.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/webaudio/analyser_node.idl @@ -40,10 +40,10 @@ // Copies the current frequency data into the passed array. // If the array has fewer elements than the frequencyBinCount, the excess elements will be dropped. - [HighEntropy, Measure] void getFloatFrequencyData(Float32Array array); - [HighEntropy, Measure] void getByteFrequencyData(Uint8Array array); + [Measure] void getFloatFrequencyData(Float32Array array); + [Measure] void getByteFrequencyData(Uint8Array array); // Real-time waveform data - [HighEntropy, Measure] void getFloatTimeDomainData(Float32Array array); - [HighEntropy, Measure] void getByteTimeDomainData(Uint8Array array); + [Measure] void getFloatTimeDomainData(Float32Array array); + [Measure] void getByteTimeDomainData(Uint8Array array); }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/webaudio/audio_buffer.idl b/tools/under-control/src/third_party/blink/renderer/modules/webaudio/audio_buffer.idl index cab38eae..48bf56bf 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/webaudio/audio_buffer.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/webaudio/audio_buffer.idl @@ -37,9 +37,9 @@ // Channel access readonly attribute unsigned long numberOfChannels; - [HighEntropy=Direct, Measure, RaisesException] Float32Array getChannelData( + [Measure, RaisesException] Float32Array getChannelData( unsigned long channelIndex); - [HighEntropy, Measure, RaisesException] void copyFromChannel( + [Measure, RaisesException] void copyFromChannel( Float32Array destination, unsigned long channelNumber, optional unsigned long bufferOffset = 0); diff --git a/tools/under-control/src/third_party/blink/renderer/modules/webaudio/audio_context.idl b/tools/under-control/src/third_party/blink/renderer/modules/webaudio/audio_context.idl index 83c13665..bd27efb2 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/webaudio/audio_context.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/webaudio/audio_context.idl @@ -39,12 +39,12 @@ dictionary AudioSinkOptions { Exposed=Window, ActiveScriptWrappable ] interface AudioContext : BaseAudioContext { - [HighEntropy, CallWith=ExecutionContext, RaisesException, Measure] constructor(optional AudioContextOptions contextOptions = {}); - [HighEntropy=Direct, MeasureAs=AudioContextBaseLatency] readonly attribute double baseLatency; - [HighEntropy=Direct, MeasureAs=AudioContextOutputLatency] readonly attribute double outputLatency; + [CallWith=ExecutionContext, RaisesException, Measure] constructor(optional AudioContextOptions contextOptions = {}); + [MeasureAs=AudioContextBaseLatency] readonly attribute double baseLatency; + [MeasureAs=AudioContextOutputLatency] readonly attribute double outputLatency; [MeasureAs=AudioContextSinkId, SecureContext] readonly attribute (DOMString or AudioSinkInfo) sinkId; [SecureContext] attribute EventHandler onsinkchange; - [RuntimeEnabled=AudioContextOnError, MeasureAs=AudioContextOnError] attribute EventHandler onerror; + attribute EventHandler onerror; [MeasureAs=AudioContextGetOutputTimestamp, CallWith=ScriptState] AudioTimestamp getOutputTimestamp(); [MeasureAs=AudioContextResume, RaisesException, CallWith=ScriptState, ImplementedAs=resumeContext] Promise resume(); [MeasureAs=AudioContextSuspend, RaisesException, CallWith=ScriptState, ImplementedAs=suspendContext] Promise suspend(); diff --git a/tools/under-control/src/third_party/blink/renderer/modules/webaudio/audio_node.idl b/tools/under-control/src/third_party/blink/renderer/modules/webaudio/audio_node.idl index a58e1907..277884ec 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/webaudio/audio_node.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/webaudio/audio_node.idl @@ -38,8 +38,8 @@ enum ChannelInterpretation { [Exposed=Window] interface AudioNode : EventTarget { - [HighEntropy, RaisesException, MeasureAs=AudioNodeConnectToAudioNode] AudioNode connect(AudioNode destination, optional unsigned long output = 0, optional unsigned long input = 0); - [HighEntropy, RaisesException, MeasureAs=AudioNodeConnectToAudioParam] void connect(AudioParam destination, optional unsigned long output = 0); + [RaisesException, MeasureAs=AudioNodeConnectToAudioNode] AudioNode connect(AudioNode destination, optional unsigned long output = 0, optional unsigned long input = 0); + [RaisesException, MeasureAs=AudioNodeConnectToAudioParam] void connect(AudioParam destination, optional unsigned long output = 0); void disconnect(); [RaisesException, MeasureAs=AudioNodeDisconnectFromAudioNode] void disconnect(unsigned long output); [RaisesException, MeasureAs=AudioNodeDisconnectFromAudioNode] void disconnect(AudioNode destination); diff --git a/tools/under-control/src/third_party/blink/renderer/modules/webaudio/base_audio_context.idl b/tools/under-control/src/third_party/blink/renderer/modules/webaudio/base_audio_context.idl index 30af8567..56f00eec 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/webaudio/base_audio_context.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/webaudio/base_audio_context.idl @@ -18,7 +18,7 @@ callback DecodeSuccessCallback = void (AudioBuffer decodedData); ActiveScriptWrappable ] interface BaseAudioContext : EventTarget { readonly attribute AudioDestinationNode destination; - [HighEntropy=Direct, Measure] readonly attribute float sampleRate; + [Measure] readonly attribute float sampleRate; readonly attribute double currentTime; readonly attribute AudioListener listener; readonly attribute AudioContextState state; @@ -35,10 +35,10 @@ callback DecodeSuccessCallback = void (AudioBuffer decodedData); [RaisesException, MeasureAs=AudioContextCreateConstantSource] ConstantSourceNode createConstantSource(); [RaisesException, MeasureAs=AudioContextCreateConvolver] ConvolverNode createConvolver(); [RaisesException, MeasureAs=AudioContextCreateDelay] DelayNode createDelay(optional double maxDelayTime); - [HighEntropy, RaisesException, MeasureAs=AudioContextCreateDynamicsCompressor] DynamicsCompressorNode createDynamicsCompressor(); + [RaisesException, MeasureAs=AudioContextCreateDynamicsCompressor] DynamicsCompressorNode createDynamicsCompressor(); [RaisesException, MeasureAs=AudioContextCreateGain] GainNode createGain(); [RaisesException, MeasureAs=AudioContextCreateIIRFilter] IIRFilterNode createIIRFilter(sequence feedForward, sequence feedBack); - [HighEntropy, RaisesException, MeasureAs=AudioContextCreateOscillator] OscillatorNode createOscillator(); + [RaisesException, MeasureAs=AudioContextCreateOscillator] OscillatorNode createOscillator(); [RaisesException, MeasureAs=AudioContextCreatePannerAutomated] PannerNode createPanner(); [RaisesException, MeasureAs=AudioContextCreatePeriodicWave] PeriodicWave createPeriodicWave(sequence real, sequence imag, optional PeriodicWaveConstraints constraints = {}); [RaisesException, MeasureAs=AudioContextCreateScriptProcessor] ScriptProcessorNode createScriptProcessor(optional unsigned long bufferSize, optional unsigned long numberOfInputChannels, optional unsigned long numberOfOutputChannels); diff --git a/tools/under-control/src/third_party/blink/renderer/modules/webaudio/offline_audio_context.idl b/tools/under-control/src/third_party/blink/renderer/modules/webaudio/offline_audio_context.idl index e74aea3f..c489fa9d 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/webaudio/offline_audio_context.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/webaudio/offline_audio_context.idl @@ -27,12 +27,12 @@ [ Exposed=Window ] interface OfflineAudioContext : BaseAudioContext { - [HighEntropy, CallWith=ExecutionContext, RaisesException, Measure] constructor(unsigned long numberOfChannels, unsigned long numberOfFrames, float sampleRate); - [HighEntropy, CallWith=ExecutionContext, RaisesException, Measure] constructor(OfflineAudioContextOptions options); + [CallWith=ExecutionContext, RaisesException, Measure] constructor(unsigned long numberOfChannels, unsigned long numberOfFrames, float sampleRate); + [CallWith=ExecutionContext, RaisesException, Measure] constructor(OfflineAudioContextOptions options); // Offline rendering attribute EventHandler oncomplete; readonly attribute unsigned long length; - [HighEntropy, CallWith=ScriptState, RaisesException, ImplementedAs=startOfflineRendering, MeasureAs=OfflineAudioContextStartRendering] Promise startRendering(); + [CallWith=ScriptState, RaisesException, ImplementedAs=startOfflineRendering, MeasureAs=OfflineAudioContextStartRendering] Promise startRendering(); [RaisesException, CallWith=ScriptState, ImplementedAs=suspendContext, MeasureAs=OfflineAudioContextSuspend] Promise suspend(double suspendTime); [RaisesException, MeasureAs=OfflineAudioContextResume, CallWith=ScriptState, ImplementedAs=resumeContext] Promise resume(); }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/webgl/webgl2_rendering_context_base.idl b/tools/under-control/src/third_party/blink/renderer/modules/webgl/webgl2_rendering_context_base.idl index 1f1d4423..71669996 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/webgl/webgl2_rendering_context_base.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/webgl/webgl2_rendering_context_base.idl @@ -286,7 +286,7 @@ interface mixin WebGL2RenderingContextBase { /* Framebuffer objects */ void blitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); void framebufferTextureLayer(GLenum target, GLenum attachment, WebGLTexture? texture, GLint level, GLint layer); - [HighEntropy, MeasureAs=WebGL2RenderingContextGetInternalFormatParameter, CallWith=ScriptState] any getInternalformatParameter(GLenum target, GLenum internalformat, GLenum pname); + [MeasureAs=WebGL2RenderingContextGetInternalFormatParameter, CallWith=ScriptState] any getInternalformatParameter(GLenum target, GLenum internalformat, GLenum pname); void invalidateFramebuffer(GLenum target, sequence attachments); void invalidateSubFramebuffer(GLenum target, sequence attachments, GLint x, GLint y, GLsizei width, GLsizei height); void readBuffer(GLenum mode); diff --git a/tools/under-control/src/third_party/blink/renderer/modules/webgl/webgl_compressed_texture_astc.idl b/tools/under-control/src/third_party/blink/renderer/modules/webgl/webgl_compressed_texture_astc.idl index d8411007..def968ca 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/webgl/webgl_compressed_texture_astc.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/webgl/webgl_compressed_texture_astc.idl @@ -37,5 +37,5 @@ const unsigned long COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR = 0x93DC; const unsigned long COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR = 0x93DD; - [HighEntropy=Direct, Measure] sequence getSupportedProfiles(); + [Measure] sequence getSupportedProfiles(); }; 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 8b3b9465..9635e2c8 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 @@ -556,22 +556,22 @@ interface mixin WebGLRenderingContextBase { GLenum getError(); - [CallWith=ScriptState, HighEntropy, Measure] object? getExtension(DOMString name); + [CallWith=ScriptState, Measure] object? getExtension(DOMString name); [CallWith=ScriptState] any getFramebufferAttachmentParameter(GLenum target, GLenum attachment, GLenum pname); - [HighEntropy, MeasureAs=WebGLRenderingContextGetParameter, CallWith=ScriptState] any getParameter(GLenum pname); + [MeasureAs=WebGLRenderingContextGetParameter, CallWith=ScriptState] any getParameter(GLenum pname); [CallWith=ScriptState] any getProgramParameter(WebGLProgram program, GLenum pname); DOMString? getProgramInfoLog(WebGLProgram program); - [HighEntropy, MeasureAs=WebGLRenderingContextGetRenderbufferParameter, CallWith=ScriptState] any getRenderbufferParameter(GLenum target, GLenum pname); + [MeasureAs=WebGLRenderingContextGetRenderbufferParameter, CallWith=ScriptState] any getRenderbufferParameter(GLenum target, GLenum pname); [CallWith=ScriptState] any getShaderParameter(WebGLShader shader, GLenum pname); DOMString? getShaderInfoLog(WebGLShader shader); - [HighEntropy, MeasureAs=WebGLRenderingContextGetShaderPrecisionFormat] WebGLShaderPrecisionFormat getShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype); + [MeasureAs=WebGLRenderingContextGetShaderPrecisionFormat] WebGLShaderPrecisionFormat getShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype); DOMString? getShaderSource(WebGLShader shader); - [HighEntropy=Direct, Measure] sequence? getSupportedExtensions(); + [Measure] sequence? getSupportedExtensions(); [CallWith=ScriptState] any getTexParameter(GLenum target, GLenum pname); @@ -597,7 +597,7 @@ interface mixin WebGLRenderingContextBase { void pixelStorei(GLenum pname, GLint param); void polygonOffset(GLfloat factor, GLfloat units); - [HighEntropy] void readPixels( + void readPixels( GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, [AllowShared, BufferSourceTypeNoSizeLimit] ArrayBufferView? pixels); @@ -649,11 +649,16 @@ interface mixin WebGLRenderingContextBase { void texElementImage2D(GLenum target, GLint level, GLint internalformat, GLenum format, GLenum type, Element element); [RuntimeEnabled=CanvasDrawElement, RaisesException] + void texElementImage2D(GLenum target, GLint level, GLint internalformat, + GLsizei width, GLsizei height, GLenum format, + GLenum type, Element element); + [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 texElement2D(GLenum target, GLint level, GLint internalformat, + GLsizei width, GLsizei height, GLenum format, GLenum type, + Element element); void texSubImage2D( GLenum target, GLint level, GLint xoffset, GLint yoffset, @@ -721,5 +726,5 @@ interface mixin WebGLRenderingContextBase { [RuntimeEnabled=WebGLDrawingBufferStorage] void drawingBufferStorage(GLenum sizedformat, GLsizei width, GLsizei height); // WebXR Device API support - [RuntimeEnabled=WebXR, SecureContext, CallWith=ScriptState, RaisesException, HighEntropy, MeasureAs=WebGLRenderingContextMakeXRCompatible] Promise makeXRCompatible(); + [RuntimeEnabled=WebXR, SecureContext, CallWith=ScriptState, RaisesException, MeasureAs=WebGLRenderingContextMakeXRCompatible] Promise makeXRCompatible(); }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_adapter_info.idl b/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_adapter_info.idl index 63c7ac90..4ead13b5 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_adapter_info.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_adapter_info.idl @@ -8,10 +8,10 @@ Exposed=(Window, Worker), SecureContext ] interface GPUAdapterInfo { - [HighEntropy] readonly attribute DOMString vendor; - [HighEntropy] readonly attribute DOMString architecture; - [HighEntropy] readonly attribute DOMString device; - [HighEntropy] readonly attribute DOMString description; + readonly attribute DOMString vendor; + readonly attribute DOMString architecture; + readonly attribute DOMString device; + readonly attribute DOMString description; readonly attribute unsigned long subgroupMinSize; readonly attribute unsigned long subgroupMaxSize; readonly attribute boolean isFallbackAdapter; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_pipeline_layout_descriptor.idl b/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_pipeline_layout_descriptor.idl index 23901d32..c4b714c0 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_pipeline_layout_descriptor.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_pipeline_layout_descriptor.idl @@ -6,4 +6,5 @@ dictionary GPUPipelineLayoutDescriptor : GPUObjectDescriptorBase { required sequence bindGroupLayouts; + [RuntimeEnabled=WebGPUImmediatesFeature] GPUSize32 immediateSize = 0; }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_programmable_pass_encoder.idl b/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_programmable_pass_encoder.idl index 59d3b08e..98229c8f 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_programmable_pass_encoder.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_programmable_pass_encoder.idl @@ -17,4 +17,18 @@ interface mixin GPUProgrammablePassEncoder { void pushDebugGroup(USVString groupLabel); [NoAllocDirectCall] void popDebugGroup(); void insertDebugMarker(USVString markerLabel); + + [RuntimeEnabled=WebGPUImmediatesFeature, RaisesException] + void setImmediates( + GPUSize32 rangeOffset, + [AllowShared, BufferSourceTypeNoSizeLimit] ArrayBuffer data, + optional GPUSize64 dataOffset = 0, + optional GPUSize64 size); + + [RuntimeEnabled=WebGPUImmediatesFeature, RaisesException] + void setImmediates( + GPUSize32 rangeOffset, + [AllowShared, BufferSourceTypeNoSizeLimit] ArrayBufferView data, + optional GPUSize64 dataOffset = 0, + optional GPUSize64 size); }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_queue.idl b/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_queue.idl index 7120f782..8cbf5dab 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_queue.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_queue.idl @@ -44,5 +44,10 @@ [RuntimeEnabled=CanvasDrawElement, RaisesException] void copyElementImageToTexture( Element source, GPUImageCopyTextureTagged destination); + [RuntimeEnabled=CanvasDrawElement, RaisesException] void copyElementImageToTexture( + Element source, + GPUIntegerCoordinate width, + GPUIntegerCoordinate height, + GPUImageCopyTextureTagged destination); }; GPUQueue includes GPUObjectBase; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_supported_limits.idl b/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_supported_limits.idl index 99cfd07b..86bda2ca 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_supported_limits.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/webgpu/gpu_supported_limits.idl @@ -39,6 +39,7 @@ readonly attribute unsigned long maxComputeWorkgroupSizeY; readonly attribute unsigned long maxComputeWorkgroupSizeZ; readonly attribute unsigned long maxComputeWorkgroupsPerDimension; + [RuntimeEnabled=WebGPUImmediatesFeature] readonly attribute unsigned long maxImmediateSize; [RuntimeEnabled=WebGPUCompatibilityMode] readonly attribute unsigned long maxStorageBuffersInFragmentStage; [RuntimeEnabled=WebGPUCompatibilityMode] readonly attribute unsigned long maxStorageTexturesInFragmentStage; [RuntimeEnabled=WebGPUCompatibilityMode] readonly attribute unsigned long maxStorageBuffersInVertexStage; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/webgpu/navigator_gpu.idl b/tools/under-control/src/third_party/blink/renderer/modules/webgpu/navigator_gpu.idl index 6846d3dc..c4994446 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/webgpu/navigator_gpu.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/webgpu/navigator_gpu.idl @@ -2,11 +2,12 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// https://gpuweb.github.io/gpuweb/ +// https://gpuweb.github.io/gpuweb/#navigator-gpu [ - Exposed=Window, ImplementedAs=GPU -] partial interface Navigator { +] interface mixin NavigatorGPU { [SameObject, SecureContext] readonly attribute GPU gpu; }; +Navigator includes NavigatorGPU; +WorkerNavigator includes NavigatorGPU; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/webgpu/worker_navigator_gpu.idl b/tools/under-control/src/third_party/blink/renderer/modules/webgpu/worker_navigator_gpu.idl deleted file mode 100755 index 7d08f56b..00000000 --- a/tools/under-control/src/third_party/blink/renderer/modules/webgpu/worker_navigator_gpu.idl +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2019 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// https://gpuweb.github.io/gpuweb/ - -[ - Exposed=Worker, - ImplementedAs=GPU -] partial interface WorkerNavigator { - [SameObject, SecureContext] readonly attribute GPU gpu; -}; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/xr/document_xr.idl b/tools/under-control/src/third_party/blink/renderer/modules/xr/document_xr.idl deleted file mode 100755 index 6d5dd52a..00000000 --- a/tools/under-control/src/third_party/blink/renderer/modules/xr/document_xr.idl +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2020 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// https://immersive-web.github.io/dom-overlays/#onbeforexrselect - -[ - ImplementedAs=GlobalEventHandlersXR -] -partial interface Document { - attribute EventHandler onbeforexrselect; -}; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/xr/mathml_element_xr.idl b/tools/under-control/src/third_party/blink/renderer/modules/xr/global_event_handlers_onbeforexrselect.idl similarity index 86% rename from tools/under-control/src/third_party/blink/renderer/modules/xr/mathml_element_xr.idl rename to tools/under-control/src/third_party/blink/renderer/modules/xr/global_event_handlers_onbeforexrselect.idl index 137b08cc..2ccea2ad 100755 --- a/tools/under-control/src/third_party/blink/renderer/modules/xr/mathml_element_xr.idl +++ b/tools/under-control/src/third_party/blink/renderer/modules/xr/global_event_handlers_onbeforexrselect.idl @@ -7,6 +7,6 @@ [ ImplementedAs=GlobalEventHandlersXR ] -partial interface MathMLElement { +partial interface mixin GlobalEventHandlers { attribute EventHandler onbeforexrselect; }; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/xr/html_element_xr.idl b/tools/under-control/src/third_party/blink/renderer/modules/xr/html_element_xr.idl deleted file mode 100755 index 43e6183d..00000000 --- a/tools/under-control/src/third_party/blink/renderer/modules/xr/html_element_xr.idl +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2020 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// https://immersive-web.github.io/dom-overlays/#onbeforexrselect - -[ - ImplementedAs=GlobalEventHandlersXR -] -partial interface HTMLElement { - attribute EventHandler onbeforexrselect; -}; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/xr/svg_element_xr.idl b/tools/under-control/src/third_party/blink/renderer/modules/xr/svg_element_xr.idl deleted file mode 100755 index a0b03291..00000000 --- a/tools/under-control/src/third_party/blink/renderer/modules/xr/svg_element_xr.idl +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2020 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// https://immersive-web.github.io/dom-overlays/#onbeforexrselect - -[ - ImplementedAs=GlobalEventHandlersXR -] -partial interface SVGElement { - attribute EventHandler onbeforexrselect; -}; diff --git a/tools/under-control/src/third_party/blink/renderer/modules/xr/window_xr.idl b/tools/under-control/src/third_party/blink/renderer/modules/xr/window_xr.idl deleted file mode 100755 index e0c78d3d..00000000 --- a/tools/under-control/src/third_party/blink/renderer/modules/xr/window_xr.idl +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2020 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// https://immersive-web.github.io/dom-overlays/#onbeforexrselect - -[ - ImplementedAs=GlobalEventHandlersXR -] -partial interface Window { - attribute EventHandler onbeforexrselect; -}; 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 7ffbed48..f87e3e39 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 @@ -325,6 +325,16 @@ status: "test", base_feature: "none", }, + // Whether to automatically build an APC content_extraction tree on load. + // Only supported for DCHECK-enabled builds. + { + name: "AIPageContentBuildOnLoadForTesting", + }, + // Whether to enforce geometry invariants in AIPageContentAgent. + { + name: "AIPageContentCheckGeometry", + status: "test" + }, { name: "AIPageContentPaidContentAnnotation", status: "stable" @@ -389,6 +399,19 @@ name: "AIPromptAPIStructuredOutput", status: "stable", }, + { + // Gates access to the tool use (function calling) enhancement for + // "AIPromptAPI". This feature alone does not expose any "AIPromptAPI" + // feature access. + name: "AIPromptAPIToolUse", + status: { + "Win": "experimental", + "Mac": "experimental", + "Linux": "experimental", + "ChromeOS": "experimental", + "default": "", + }, + }, { name: "AIProofreadingAPI", status: { @@ -464,11 +487,6 @@ name: "AllowContentInitiatedDataUrlNavigations", base_feature: "none", }, - // Fix for https://crbug.com/41238177. - { - name: "AllowCopyingEmptyLastTableCell", - status: "stable", - }, { name: "AllowPreloadingWithCSPMetaTag", status: "experimental", @@ -596,12 +614,6 @@ name: "AriaRowColIndexText", status: "stable", }, - { - // Fix Asymmetric word navigation behavior on Windows when punctuation follows whitespace - // See https://crbug.com/40252703 - name: "AsymmetricWordBoundaryFix", - status: "stable", - }, { // When enabled, perform async IPCs from CookieJar::SetCookie to the // network service. @@ -614,10 +626,6 @@ base_feature: "none", public: true, }, - { - name: "AudioContextOnError", - status: "stable", - }, { // AudioContext.playoutStats interface. // https://chromestatus.com/feature/5172818344148992 @@ -650,6 +658,12 @@ base_feature: "none", origin_trial_feature_name: "AutoDarkMode", }, + { + name: "Autofill", + public: true, + status: "test", + base_feature: "none", + }, { name: "AutomationControlled", base_feature: "none", @@ -707,6 +721,10 @@ name: "BackForwardCacheUpdateNotRestoredReasonsName", status: "stable", }, + { + name: "BackgroundClipTextDecoration", + status: "stable", + }, { name: "BackgroundFetch", public: true, @@ -760,17 +778,7 @@ { // https://chromestatus.com/feature/4830298126417920 name: "BlobBytes", - status: "experimental", - }, - { - // No status because this blink runtime feature doesn't work by itself. - // It's controlled by the corresponding Chromium feature, - // fingerprinting_protection_interventions::features::kBlockCanvasReadback - // through modified_runtime_features and setting its status in the browser - // process. - name: "BlockCanvasReadback", - browser_process_read_write_access: true, - base_feature: "none", + status: "stable", }, { name: "BlockingFocusWithoutUserActivation", @@ -781,13 +789,13 @@ name: "BorderRadiusCorrectionCoverageFactor", status: "test", }, - // crbug.com/1147998: Mouse and Pointer boundary event dispatch (i.e. dispatch - // of enter, leave, over, out events) tracks DOM node removal to fix event - // pairing on ancestor nodes. + // https://crbug.com/415304289: Mouse and Pointer boundary event dispatch + // (i.e. dispatch of enter, leave, over, out events) tracks DOM node removal + // to fix event pairing on ancestor nodes. { name: "BoundaryEventDispatchTracksNodeRemoval", public: true, - status: "experimental", + status: "stable", }, { name: "BrowserInitiatedAutomaticPictureInPicture", @@ -808,26 +816,6 @@ name: "BufferedBytesConsumerLimitSize", status: "stable", }, - { - name: "BuiltInAIAPI", - status: "experimental", - base_feature_status: "enabled", - // 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: "AIPromptAPIMultimodalInput", - copied_from_base_feature_if: "overridden", - implied_by: [ - "AIPromptAPI", - "AIPromptAPIMultimodalInput", - "AIRewriterAPI", - "AISummarizationAPI", - "AIWriterAPI", - "LanguageDetectionAPI", - "TranslationAPI", - "AIProofreadingAPI", - ] - }, { // Bypasses the enforcement of the Page Embedded Permission Control // security checks. This flag is disabled by default and should only be @@ -835,6 +823,22 @@ // wait until the PEPC is validated and also to use JS-initiated clicks. name: "BypassPepcSecurityForTesting", }, + { + // Enables RFC 7234-compliant Cache-Control header parsing, removing RFC + // 2616 separators that are not valid in RFC 7234. + // https://crbug.com/42050325 + name: "CacheControlRFC7234Parsing", + status: "experimental", + }, + { + // Enables metrics collection comparing RFC 7234 vs RFC 2616 Cache-Control + // parsing. Performs double parsing on every Cache-Control header to + // measure behavioral differences. Can be disabled as a kill switch if + // performance issues arise. + // https://crbug.com/42050325 + name: "CacheControlRFC7234ParsingMetrics", + status: "experimental", + }, { name: "CacheStorageCodeCacheHint", origin_trial_feature_name: "CacheStorageCodeCacheHint", @@ -903,17 +907,6 @@ name: "CanvasHDR", status: "experimental", }, - // This flag exists only for testing and should not be changed to stable. - // Used for canvas noising tests. - { - name: "CanvasInterventionsTest", - is_protected_feature: "true", - }, - { - // crbug.com/389726691. - name: "CanvasTextCacheLimit", - status: "stable", - }, { // crbug.com/389726691. name: "CanvasTextMemoryPressure", @@ -989,6 +982,10 @@ name: "CCTNewRFMPushBehavior", base_feature_status: "enabled", }, + { + name: "CheckableInputTypeLayoutInline", + status: "stable", + }, { // If focus is not at canonical position then spellcheck should be deactivated. // crbug.com/396485529 @@ -1020,7 +1017,7 @@ // hints (from 3Ps, or itself) via the getHighEntropyValues API. // crbug.com/385161047 name: "ClientHintUAHighEntropyValuesPermissionPolicy", - status: "test", + status: "stable", }, { // Enables clipboardchange event API for listening for changes to the @@ -1028,7 +1025,7 @@ // https://chromestatus.com/feature/5085102657503232 name: "ClipboardChangeEvent", origin_trial_feature_name: "ClipboardChangeEvent", - status: "experimental", + status: "stable", }, // This ensures that clipboard event fires on a target node which is // focused in case no visible selection is present. @@ -1071,6 +1068,10 @@ name: "CollapseZeroWidthSpaceWhenReuseItem", status: "stable", }, + { + name: "CollectWidthAndHeightAsPresentationAttributesForUse", + status: "stable", + }, { name: "CollectWidthAndHeightAsStylesForNestedSvg", status: "stable", @@ -1079,7 +1080,7 @@ // https://chromestatus.com/feature/5162372125818880 { name: "ColorSpaceDisplayP3Linear", - status: "experimental", + status: "stable", }, // Enable the srgb-linear and display-p3-linear color spaces in // PredefinedColorSpace. @@ -1144,6 +1145,18 @@ "default": "", } }, + { + // When enabled, EventTriggers[1] will function via cc::EventTrigger + // objects that live on the compositor thread. + // [1] https://drafts.csswg.org/css-animations-2/#event-triggers + name: "CompositorEventTrigger" + }, + { + // When enabled, TimelineTriggers[1] will function via cc::TimelineTrigger + // objects that live on the compositor thread. + // [1] https://drafts.csswg.org/css-animations-2/#timeline-triggers + name: "CompositorTimelineTrigger", + }, { name: "CompressionDictionaryTransport", base_feature: "none", @@ -1191,10 +1204,6 @@ name: "ContainerTiming", status: "experimental", }, - { - name: "ContainerTypeNoLayoutContainment", - status: "stable", - }, { name: "ContentIndex", status: {"Android": "stable", "default": "experimental"}, @@ -1212,10 +1221,23 @@ public: true, status: "stable", }, + { + // Experimental support for requesting SecurityInfo + // in WebRequest API for controlled frames. + name: "ControlledFrameWebRequestSecurityInfo", + status: "test", + depends_on: ["ControlledFrame"], + }, { name: "CookieDeprecationFacilitatedTesting", base_feature: "none", }, + { + // Enables setting the `maxAge` option when creating a cookie in the + // Cookie Store API. + name: "CookieStoreAPIMaxAge", + status: "experimental", + }, { name: "CoopRestrictProperties", origin_trial_feature_name: "CoopRestrictProperties", @@ -1275,22 +1297,16 @@ name: "CSSAltCounter", status: "stable", }, - { - // An anchor-positioned element should stay within its containing block, - // and not "escape" beyond the fragmentation context root and use the - // bounding box of the fragmented anchor with fragmentation applied. - name: "CSSAnchorSimplifiedFragmentation", - status: "stable", - }, { // An update of anchor positioning (primarily how scrolling affects // layout, but includes other inter-connected changes). name: "CSSAnchorUpdate", + status: "stable", }, { // Let transforms affect anchor() and anchor-size() functions. name: "CSSAnchorWithTransforms", - status: "experimental", + status: "stable", }, { // Whether values are allowed as counter style @@ -1320,9 +1336,9 @@ status: "stable", }, { - // Need a feature entry + // https://chromestatus.com/feature/6106160780017664 name: "CSSCaretShape", - status: "experimental", + status: "stable", }, { // Support case-sensitive attribute selector modifier @@ -1352,7 +1368,7 @@ { // https://github.com/w3c/csswg-drafts/issues/12090#issuecomment-3204775586 name: "CSSContainerNameNotTreeScoped", - status: "experimental", + status: "stable", }, // https://drafts.csswg.org/css-values-5/#progress // container-progress() @@ -1367,14 +1383,19 @@ }, { // https://drafts.csswg.org/css-borders-4/#corner-shaping - name: "CSSCornerShape", - status: "stable", + name: "CSSCornerShapeInsetBoxShadowFollowsContour", + status: "test", }, { // https://drafts.csswg.org/css-borders-4/#corner-shaping name: "CSSCornersShorthand", status: "experimental", - depends_on: ["CSSCornerShape"], + }, + { + // https://drafts.csswg.org/css-lists-3/#counter-reset + // https://crbug.com/40760770 + name: "CSSCounterResetReversed", + status: "experimental", }, { // Unprefixed cross-fade() (in addition to the existing -webkit-cross-fade()). @@ -1489,6 +1510,14 @@ name: "CSSLineClampLineBreakingEllipsis", depends_on: ["CSSLineClamp"], }, + { + // Implements `counter-increment` and `counter-set` for the non-
  • + // elements and the reversed ordered lists. + // + // https://crbug.com/40682542 + name: "CSSListCounterAccounting", + status: "experimental", + }, { // Allows pseudo-element selectors within logical combination pseudo- // classes, e.g. :is(div::before). @@ -1521,6 +1550,8 @@ }, { // https://chromestatus.com/feature/5261280285949952 + // TODO(vmpstr): Rename this flag to OversrollGestures when the CSS + // implementation is removed. name: "CSSOverscrollGestures", status: "test", }, @@ -1534,12 +1565,12 @@ name: "CSSParserIgnoreCharsetForURLs", }, { - name: "CSSPositionStickyStaticScrollPosition", - status: "test", + name: "CSSPositionAnchorNone", + status: "stable", }, { - name: "CSSPreferredTextScale", - status: "stable", + name: "CSSPositionStickyStaticScrollPosition", + status: "test", }, // https://drafts.csswg.org/css-values-5/#progress // progress() @@ -1584,6 +1615,10 @@ status: "stable", depends_on: ["PseudoElementsFocusable"], }, + { + name: "CSSRandomFunction", + status: "test", + }, { // Non-standard 'auto' keyword for the CSS resize property. Used for // selectively enable resize corner for textarea via UA stylesheet, but @@ -1619,7 +1654,7 @@ { // https://drafts.csswg.org/css-conditional-5/#scrolled name: "CSSScrolledContainerQueries", - status: "experimental", + status: "stable", }, { // https://drafts.csswg.org/css-scroll-snap-2#scroll-initial-target @@ -1658,11 +1693,6 @@ status: "stable", implied_by: ["CSSScrollSnapChangeEvent", "CSSScrollSnapChangingEvent"], }, - { - // https://drafts.csswg.org/css-scroll-snap-2#scroll-start - name: "CSSScrollStart", - status: "test", - }, { // scroll-target-group property // https://drafts.csswg.org/css-overflow-5/#scroll-target-group @@ -1679,10 +1709,6 @@ status: "experimental", base_feature: "CssSelectorFragmentAnchor", }, - { - name: "CSSSignRelatedFunctions", - status: "stable", - }, { name: "CSSSupportsAtRuleFunction", status: "experimental", @@ -1706,11 +1732,6 @@ name: "CSSTextAlignMatchParent", status: "experimental", }, - { - // crbug.com/1463890: CSS `text-autospace` property - name: "CSSTextAutoSpace", - status: "stable", - }, { // crbug.com/40321528 name: "CssTextJustify", @@ -1719,7 +1740,6 @@ { // crbug.com/1463890, crbug.com/1463891: CSS `text-spacing` shorthand name: "CSSTextSpacing", - depends_on: ["CSSTextAutoSpace"], status: "test", }, { @@ -1777,7 +1797,7 @@ // https://crbug.com/448174611 { name: "DeclarativeCSSModules", - status: "test", + status: "experimental", }, { // https://crbug.com/393631108 @@ -1928,6 +1948,11 @@ origin_trial_allows_third_party: true, base_feature: "none", }, + { + // Disables removeFormat command on Plaintext-only content editable div + name: "DisableRemoveFormatForPlainTextOnlyEditableDiv", + status: "stable", + }, { // `kHidden` and `kHiddenButPainting` visibility states are treated as // hidden in the sense of `document.visibilityState`. However, they are @@ -1985,6 +2010,13 @@ origin_trial_os: ["win", "mac", "linux", "chromeos"], base_feature: "none", }, + { + // Fix iframe unload events not firing during document.open() + // https://crbug.com/40947017 + // Lands in M144; remove this flag in M146 after the milestone rolls. + name: "DocumentOpenIframeUnloadEvents", + status: "stable", + }, { name: "DocumentOpenOriginAliasRemoval", status: "experimental", @@ -2076,10 +2108,18 @@ { name: "DOMPartsAPIMinimal", }, + { + // Enable drag and drop delegation to child frames in HTMLPlugInElements + // (object/embed elements). Fixes drag and drop from text inputs/textareas + // to elements inside object frames. + name: "DragAndDropPluginElementSupport", + status: "stable", + }, { // See https://crbug.com/379170477 name: "EditContextHandleTextOrSelectionUpdateDuringComposition", status: "test", + settable_from_internals: true }, { name: "EditEmojiUnicode11", @@ -2104,10 +2144,24 @@ name: "ElementInternalsDotType", status: "experimental", }, + { + // crbug.com/447267214 + name: "EmojiJustification", + status: "stable", + }, + { + // crbug.com/420857717 + name: "EmojiMonochromeRendering", + status: "experimental" + }, { name: "EmphasisMarkShapeCache", status: "stable", }, + { + name: "EndpointInclusiveCommitStyles", + status: "stable", + }, { name: "EnforceAnonymityExposure", status: "stable", @@ -2123,6 +2177,11 @@ name: "EntropyIgnoredForFirstVideoFrameLCP", status: "experimental", }, + { + // See crbug.com/453919401 for more details. + name: "EquivalentEncompassRounding", + status: "stable", + }, { // `event.pseudoTarget` property to represent pseudo-elements in events. Returns `CSSPseudoElement` or null. name: "EventPseudoTargetProperty", @@ -2135,8 +2194,11 @@ "status": "stable", }, { + + // Kill-switch for https://chromestatus.com/feature/5153386492198912 + // Added in M144, can be removed in M146. name: "EventTimingInteractionCount", - status: "experimental", + status: "stable", }, { name: "EventTimingTargetSelector", @@ -2174,6 +2236,8 @@ }, { name: "ExtendedTextMetrics", + origin_trial_feature_name: "ExtendedTextMetrics", + origin_trial_allows_third_party: true, status: "experimental", }, { @@ -2440,6 +2504,12 @@ name: "FixNextPositionCalculationInInsertList", status: "stable", }, + { + // Fix for strikethrough toggle not working in empty + // contenteditable. See https://crbug.com/427915243 + name: "FixStrikethroughToggleInEmptyContentEditable", + status: "stable", + }, { name: "Fledge", status: "stable", @@ -2653,6 +2723,11 @@ status: "experimental", public: true, }, + { + name: "GamepadRawInputChangeEvent", + status: "experimental", + public: true, + }, { name: "GamepadWindowEventHandlers", status: "stable", @@ -2660,7 +2735,7 @@ { // Tracking bug for the implementation: https://crbug.com/430204832 name: "GeolocationElement", - status: "experimental", + status: "stable", public: true, }, { @@ -2762,9 +2837,8 @@ status: "stable", }, { - // Moved from status stable to test due to https://crbug.com/456164629. + // Removed status stable due to https://crbug.com/456164629. name: "HitTestBorderRadiusForStackingContext", - status: "test", }, { name: "HrefTranslate", @@ -2773,6 +2847,11 @@ status: "stable", base_feature: "none", }, + { + name: "HstsTopLevelNavigationsOnly", + status: "experimental", + base_feature: "none", + }, // The `anchor` attribute, supported by both anchor positioning and the // popover API. { @@ -2786,6 +2865,12 @@ name: "HTMLCommandActionsV2", status: "test", }, + // Adds support for scroll commands such as 'page-up' and 'page-block-end'. + // https://github.com/danielsakhapov/declarative-scroll-commands-for-html-explainer + { + name: "HTMLCommandForScrollCommands", + status: "experimental", + }, // Adds support for the 'request-close' command. // https://open-ui.org/components/invokers.explainer/ { @@ -2946,6 +3031,10 @@ status: "stable", base_feature: "none", }, + { + name: "InstallElement", + status: "experimental" + }, { name: "InstallOnDeviceSpeechRecognition", status: "stable", @@ -3033,6 +3122,14 @@ { name: "LayoutIgnoreMarginsForSticky", }, + { + name: "LayoutImageEmptyNaturalSizeBeforeSizeAvailable", + status: "stable", + }, + { + name: "LayoutTableCellAlignmentSafe", + status: "stable", + }, { // Allow triggering the word suggestion from left click. // From crbug.com/433209485 @@ -3050,10 +3147,8 @@ status: "experimental", }, { - name: "LimitThirdPartyCookies", - origin_trial_feature_name: "LimitThirdPartyCookies", - status: "experimental", - base_feature: "none", + // Speculative fix for renderer hangs in crbug.com/447174988 + name: "LimitTriggerAttachmentUpdates" }, { // Improves the logic for removing focus from a currently focused @@ -3158,6 +3253,12 @@ name: "ManagedConfiguration", status: "stable", }, + { + name: "ManualText", + public: true, + status: "test", + base_feature: "none", + }, { name: "MaskDeserializationTimeForCrossOriginMessages", status: "stable", @@ -3166,7 +3267,7 @@ // Enables mirroring for stretchy and large MathML operators when // the text direction is right to left. name: "MathMLOperatorRTLMirroring", - status: "experimental", + status: "stable", }, { // Enables MathML ancestor context preservation during copy-paste @@ -3176,6 +3277,12 @@ name: "MathMLSerializationOnCopy", status: "stable", }, + { + // Enables skipping wrapping during ancestor wrapping in + // serialization. When enabled duplicate wrapping are absent. + name: "MathMLSkipMtrTagInAncestorWrapping", + status: "stable", + }, { name:"MeasureMemory", status:"stable", @@ -3257,11 +3364,6 @@ name: "MediaSessionChapterInformation", status: "stable", }, - { - name: "MediaSessionEnterPictureInPicture", - public: true, - status: "stable", - }, { name: "MediaSourceExperimental", status: "experimental", @@ -3272,10 +3374,6 @@ base_feature: "none", origin_trial_feature_name: "MediaSourceExtensionsForWebCodecs", }, - { - name: "MediaSourceNewAbortAndDuration", - status: "stable", - }, { name: "MediaStreamTrackTransfer", status: "test", @@ -3290,6 +3388,12 @@ "default": "experimental", }, }, + { + // This feature helps to add memory consumer to NGShapeCache, so that + // the cached shape results would be cleared once exceeding the memory limit. + name: "MemoryConsumerForNGShapeCache", + status: "test", + }, { name: "MenuElements", status: "experimental", @@ -3347,10 +3451,10 @@ status: "stable", }, { - // Experimental support for Multicast in Direct Sockets API. - // https://github.com/explainers-by-googlers/multicast-in-direct-sockets + // Multicast in Direct Sockets API. + // https://github.com/WICG/direct-sockets/blob/main/docs/multicast-explainer.md name: "MulticastInDirectSockets", - status: "test", + status: "stable", depends_on: ["DirectSockets"] }, { @@ -3387,11 +3491,6 @@ // Android does not yet support NavigatorContentUtils. status: {"Android": "", "default": "stable"}, }, - { - // crbug.com/437612643 - name: "NestedRubyMinMaxFix", - status: "stable", - }, { name: "NestedViewTransition", status: "stable", @@ -3511,7 +3610,8 @@ // This is a spec change since anchor positioning was shipped in Blink. // https://issues.chromium.org/issues/408223892 name: "OriginatingElementIsImplicitAnchor", - status: "experimental", + depends_on: ["CSSPositionAnchorNone"], + status: "stable", }, { name: "OriginIsolationHeader", @@ -3637,6 +3737,10 @@ origin_trial_feature_name: "FrobulateThirdParty", origin_trial_allows_third_party: true, }, + { + name: "OutlineDrawAutoStyleZeroWidth", + status: "stable", + }, { name: "OverscrollCustomization", status: "experimental", @@ -3679,6 +3783,10 @@ name: "PaintTimingMixin", status: "experimental", }, + { + name: "PaintTimingRecordTimingForDetachedPaintedElements", + status: "stable", + }, { name: "PaintUnderInvalidationChecking", settable_from_internals: true, @@ -3692,10 +3800,6 @@ name: "PartialCompletionNotAllowedInMoveParagraphs", status: "stable", }, - { - name: "PartitionedPopins", - status: "experimental", - }, { name: "PartitionVisitedLinkDatabaseWithSelfLinks", status: {"iOS": "", "default": "stable"}, @@ -3737,9 +3841,6 @@ name: "PerformanceMarkFeatureUsage", status: "experimental" }, - { - name: "PerformanceNavigateSystemEntropy", - }, { name: "PerformanceNavigationTimingConfidence", origin_trial_feature_name: "PerformanceNavigationTimingConfidence", @@ -3766,17 +3867,7 @@ public: true, base_feature_status: "enabled", copied_from_base_feature_if: "overridden", - implied_by: ["GeolocationElement"], - }, - { - // Tracking bug for the implementation: crbug.com/352249547 - // This flag adds having the option to show an icon in the Permission - // element, if developers want to. - // The flag will enable us to land the feature over multiple CLs, and will - // be enabled after the feature has been fully implemented. - name: "PermissionElementIcon", - status: "stable", - depends_on: ["PermissionElement"], + implied_by: ["InstallElement"], }, { name: "Permissions", @@ -3889,10 +3980,18 @@ name: "Prerender2CrossOriginIframes", origin_trial_feature_name: "Prerender2CrossOriginIframes", }, + { + // Used to allow prerender activation by form submission. + // See https://crbug.com/346555939. + name: "PrerenderActivationByFormSubmission", + origin_trial_feature_name: "PrerenderActivationByFormSubmission", + status: "experimental", + }, { name: "PrerenderUntilScript", public: true, - status: "test", + origin_trial_feature_name: "PrerenderUntilScript", + status: "experimental", }, { name: "Presentation", @@ -4058,7 +4157,7 @@ // This feature is limited to Linux only. { name: "ReduceUserAgentDataLinuxPlatformVersion", - status: {"Linux": "experimental"}, + status: {"Linux": "stable"}, }, // If enabled, the minor version of the User-Agent string will be reduced. // This User-Agent Reduction feature has been enabled starting from M101, @@ -4210,9 +4309,13 @@ name: "ResourceTimingUseCORSForBodySizes", status: "test", }, + { + name: "RespectOverscrollBehaviorForScrollBubbling", + status: "stable", + }, { name: "ResponsiveIframes", - status: "test", + status: "experimental", }, { name: "RestrictGamepadAccess", @@ -4224,10 +4327,6 @@ name: "RestrictOwnAudio", status: "stable", }, - { - name: "RestrictTabFocusForHiddenSVGElements", - status: "stable", - }, { // Constrains text selections to stay within table cell boundaries // (e.g., triple-click paragraph selection) @@ -4340,14 +4439,18 @@ { // https://github.com/WICG/view-transitions/blob/main/scoped-transitions.md name: "ScopedViewTransitions", - depends_on: ["CSSAnchorWithTransforms", "OriginatingElementIsImplicitAnchor"], - status: "experimental", + status: "experimental" }, { // https://github.com/w3c/window-management/issues/149 name: "ScreenDetailedHdrHeadroom", status: "experimental", }, + { + // crbug.com/406917902 + name: "ScriptBasedOnUnicodeBlock", + status: "stable", + }, // WebSpeech API with both speech recognition and synthesis functionality // is not fully enabled on all platforms. { @@ -4407,7 +4510,7 @@ { // https://github.com/w3c/csswg-drafts/issues/9367#issuecomment-1854280461 name: "ScrollTimelineNamedRangeScroll", - status: "test", + status: "experimental", }, // Implements documentElement.scrollTop/Left and bodyElement.scrollTop/Left // as per the spec, matching other Web engines. @@ -4419,12 +4522,17 @@ name: "ScrollTopLeftInterop", status: "stable", }, + // Only consider unique case-insensitive scroll-to-text fragments. + { + name: "ScrollToTextFragmentUniqueFragments", + status: "stable", + }, // Allows CSS styling of browser search results. // https://issues.chromium.org/issues/339298411 // https://chromestatus.com/feature/5195073796177920 { name: "SearchTextHighlightPseudo", - status: "experimental", + status: "stable", }, // SecurePaymentConfirmation has shipped on some platforms, but its // availability is controlled by the browser process (via the @@ -4447,6 +4555,9 @@ name: "SecurePaymentConfirmationBrowserBoundKeys", status: { "Android": "stable", + "Mac": "experimental", + "Win": "experimental", + "iOS": "", "default": "test", }, }, @@ -4488,6 +4599,12 @@ name: "SelectChildrenRemovedFix", status: "stable", }, + { + // Prevents the