diff --git a/DEPS b/DEPS index 2951c58f..e3b9973 100644 --- a/DEPS +++ b/DEPS
@@ -273,11 +273,11 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling V8 # and whatever else without interference from each other. - 'v8_revision': 'd7df14edfa8c475d1d4047a8c5268538b4123ee5', + 'v8_revision': '5f2389f56da785d043c8d357e97f752017cd408d', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling ANGLE # and whatever else without interference from each other. - 'angle_revision': '9ad43bdd2acaaab418c2cad21308284b15345ce5', + 'angle_revision': 'a7238b52518056cda3a31f5d07846b700692a918', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling SwiftShader # and whatever else without interference from each other. @@ -380,7 +380,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling feed # and whatever else without interference from each other. - 'dawn_revision': '7212ad32057e4ccb5334a5cf28ce827c88670837', + 'dawn_revision': '2829922ab00f7ad88f0744e4866b0a99befd04ed', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling feed # and whatever else without interference from each other. @@ -1126,7 +1126,7 @@ }, 'src/third_party/depot_tools': - Var('chromium_git') + '/chromium/tools/depot_tools.git' + '@' + 'fb8cf9cc784053e97b29efca560cf13a3c98a3d7', + Var('chromium_git') + '/chromium/tools/depot_tools.git' + '@' + '13acea3645e16ad97bfbeaa77af93e10879a852b', 'src/third_party/devtools-frontend/src': Var('chromium_git') + '/devtools/devtools-frontend' + '@' + Var('devtools_frontend_revision'), @@ -1157,7 +1157,7 @@ Var('chromium_git') + '/external/github.com/google/farmhash.git' + '@' + '816a4ae622e964763ca0862d9dbd19324a1eaf45', 'src/third_party/ffmpeg': - Var('chromium_git') + '/chromium/third_party/ffmpeg.git' + '@' + '32b2d1d52612e47531df9289e3f5fdd5447507dd', + Var('chromium_git') + '/chromium/third_party/ffmpeg.git' + '@' + 'e481fc655a6287e657a88e8c2bcd6f411d254d70', 'src/third_party/flac': Var('chromium_git') + '/chromium/deps/flac.git' + '@' + 'af862024c8c8fa0ae07ced05e89013d881b00596', @@ -1739,7 +1739,7 @@ Var('chromium_git') + '/external/khronosgroup/webgl.git' + '@' + 'cf04aebdf9b53bb2853f22a81465688daf879ec6', 'src/third_party/webgpu-cts/src': - Var('chromium_git') + '/external/github.com/gpuweb/cts.git' + '@' + '5906dcba4de95d2f18dd8d4adcd52345a539cc19', + Var('chromium_git') + '/external/github.com/gpuweb/cts.git' + '@' + '2ee8b6a5f74045582dc94eeae83a525b9f57f608', 'src/third_party/webrtc': Var('webrtc_git') + '/src.git' + '@' + '00579e8bcec66fab2e7babef25d4423ef7b3591f', @@ -1815,7 +1815,7 @@ Var('chromium_git') + '/v8/v8.git' + '@' + Var('v8_revision'), 'src-internal': { - 'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@b0923472acb970009c494e46ed333aae2ebc4666', + 'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@e55716649fd78169a3d78a336fb80d03bc012806', 'condition': 'checkout_src_internal', }, @@ -1834,7 +1834,7 @@ 'packages': [ { 'package': 'chromeos_internal/apps/eche_app/app', - 'version': 'mO7HIkligmD70YaR0NC-cEilQ0xhQYkaBq-8xFFsHAMC', + 'version': 'FfvsTxnb4HOM-c5Ermsub9NBDwZa7EYtbMIIF5GTWIwC', }, ], 'condition': 'checkout_chromeos and checkout_src_internal',
diff --git a/PRESUBMIT.py b/PRESUBMIT.py index 9a72810..34b41e7 100644 --- a/PRESUBMIT.py +++ b/PRESUBMIT.py
@@ -1059,6 +1059,7 @@ _GENERIC_PYDEPS_FILES = [ + 'android_webview/test/components/run_webview_component_smoketest.pydeps', 'android_webview/tools/run_cts.pydeps', 'base/android/jni_generator/jni_generator.pydeps', 'base/android/jni_generator/jni_registration_generator.pydeps', @@ -1102,9 +1103,11 @@ 'build/android/gyp/jinja_template.pydeps', 'build/android/gyp/lint.pydeps', 'build/android/gyp/merge_manifest.pydeps', + 'build/android/gyp/optimize_resources.pydeps', 'build/android/gyp/prepare_resources.pydeps', 'build/android/gyp/process_native_prebuilt.pydeps', 'build/android/gyp/proguard.pydeps', + 'build/android/gyp/trace_event_bytecode_rewriter.pydeps', 'build/android/gyp/turbine.pydeps', 'build/android/gyp/unused_resources.pydeps', 'build/android/gyp/validate_static_library_dex_references.pydeps',
diff --git a/android_webview/browser/aw_autofill_client.cc b/android_webview/browser/aw_autofill_client.cc index b39ef15a..f2ab1b5 100644 --- a/android_webview/browser/aw_autofill_client.cc +++ b/android_webview/browser/aw_autofill_client.cc
@@ -315,7 +315,7 @@ const JavaParamRef<jobject>& object, jint position) { if (delegate_) { - delegate_->DidAcceptSuggestion(suggestions_[position].value, + delegate_->DidAcceptSuggestion(suggestions_[position].main_text.value, suggestions_[position].frontend_id, suggestions_[position].backend_id, position); } @@ -354,7 +354,7 @@ for (size_t i = 0; i < count; ++i) { ScopedJavaLocalRef<jstring> name = - ConvertUTF16ToJavaString(env, suggestions[i].value); + ConvertUTF16ToJavaString(env, suggestions[i].main_text.value); ScopedJavaLocalRef<jstring> label = ConvertUTF16ToJavaString(env, suggestions[i].label); Java_AwAutofillClient_addToAutofillSuggestionArray(
diff --git a/android_webview/test/components/run_webview_component_smoketest.pydeps b/android_webview/test/components/run_webview_component_smoketest.pydeps index 82f68b7..d36066ea 100644 --- a/android_webview/test/components/run_webview_component_smoketest.pydeps +++ b/android_webview/test/components/run_webview_component_smoketest.pydeps
@@ -122,6 +122,7 @@ //third_party/catapult/telemetry/telemetry/core/__init__.py //third_party/catapult/telemetry/telemetry/core/android_action_runner.py //third_party/catapult/telemetry/telemetry/core/android_platform.py +//third_party/catapult/telemetry/telemetry/core/cast_interface.py //third_party/catapult/telemetry/telemetry/core/cros_interface.py //third_party/catapult/telemetry/telemetry/core/debug_data.py //third_party/catapult/telemetry/telemetry/core/exceptions.py @@ -203,6 +204,7 @@ //third_party/catapult/telemetry/telemetry/internal/backends/chrome_inspector/inspector_storage.py //third_party/catapult/telemetry/telemetry/internal/backends/chrome_inspector/inspector_websocket.py //third_party/catapult/telemetry/telemetry/internal/backends/chrome_inspector/memory_backend.py +//third_party/catapult/telemetry/telemetry/internal/backends/chrome_inspector/native_profiling_backend.py //third_party/catapult/telemetry/telemetry/internal/backends/chrome_inspector/system_info_backend.py //third_party/catapult/telemetry/telemetry/internal/backends/chrome_inspector/tracing_backend.py //third_party/catapult/telemetry/telemetry/internal/backends/chrome_inspector/ui_devtools_client_backend.py @@ -233,6 +235,7 @@ //third_party/catapult/telemetry/telemetry/internal/platform/__init__.py //third_party/catapult/telemetry/telemetry/internal/platform/android_device.py //third_party/catapult/telemetry/telemetry/internal/platform/android_platform_backend.py +//third_party/catapult/telemetry/telemetry/internal/platform/cast_device.py //third_party/catapult/telemetry/telemetry/internal/platform/cros_device.py //third_party/catapult/telemetry/telemetry/internal/platform/desktop_device.py //third_party/catapult/telemetry/telemetry/internal/platform/device.py
diff --git a/ash/app_list/app_list_controller_impl.cc b/ash/app_list/app_list_controller_impl.cc index c3b88af..efae0d6 100644 --- a/ash/app_list/app_list_controller_impl.cc +++ b/ash/app_list/app_list_controller_impl.cc
@@ -1629,6 +1629,9 @@ } bool AppListControllerImpl::ShouldHideContinueSection() const { + if (!features::IsLauncherHideContinueSectionEnabled()) + return false; + PrefService* prefs = GetLastActiveUserPrefService(); return prefs->GetBoolean(prefs::kLauncherContinueSectionHidden); }
diff --git a/ash/app_list/views/continue_task_view.cc b/ash/app_list/views/continue_task_view.cc index 5a90047..1bc45eb 100644 --- a/ash/app_list/views/continue_task_view.cc +++ b/ash/app_list/views/continue_task_view.cc
@@ -310,13 +310,15 @@ IDS_ASH_LAUNCHER_CONTINUE_SECTION_CONTEXT_MENU_REMOVE), ui::ImageModel::FromVectorIcon(kRemoveOutlineIcon, ui::kColorAshSystemUIMenuIcon)); - context_menu_model_->AddSeparator(ui::NORMAL_SEPARATOR); - // TODO(crbug.com/1317428): Custom icon. - context_menu_model_->AddItemWithIcon( - ContinueTaskCommandId::kHideContinueSection, - l10n_util::GetStringUTF16(IDS_ASH_LAUNCHER_HIDE_CONTINUE_SECTION), - ui::ImageModel::FromVectorIcon(kLockScreenPasswordInvisibleIcon, - ui::kColorAshSystemUIMenuIcon)); + if (features::IsLauncherHideContinueSectionEnabled()) { + context_menu_model_->AddSeparator(ui::NORMAL_SEPARATOR); + // TODO(crbug.com/1317428): Custom icon. + context_menu_model_->AddItemWithIcon( + ContinueTaskCommandId::kHideContinueSection, + l10n_util::GetStringUTF16(IDS_ASH_LAUNCHER_HIDE_CONTINUE_SECTION), + ui::ImageModel::FromVectorIcon(kLockScreenPasswordInvisibleIcon, + ui::kColorAshSystemUIMenuIcon)); + } return context_menu_model_.get(); }
diff --git a/ash/constants/ash_features.cc b/ash/constants/ash_features.cc index 6cdc22f..5d4604fc 100644 --- a/ash/constants/ash_features.cc +++ b/ash/constants/ash_features.cc
@@ -635,6 +635,10 @@ const base::Feature kExoPointerLock{"ExoPointerLock", base::FEATURE_DISABLED_BY_DEFAULT}; +// Allows RGB Keyboard to test new animations/patterns. +const base::Feature kExperimentalRgbKeyboardPatterns{ + "ExperimentalRgbKeyboardPatterns", base::FEATURE_DISABLED_BY_DEFAULT}; + // Enables policy that controls feature to allow Family Link accounts on school // owned devices. const base::Feature kFamilyLinkOnSchoolDevice{"FamilyLinkOnSchoolDevice", @@ -812,18 +816,6 @@ const base::Feature kHideShelfControlsInTabletMode{ "HideShelfControlsInTabletMode", base::FEATURE_ENABLED_BY_DEFAULT}; -// Enables V2 implementation for visual representation of in-progress items in -// Tote, the productivity feature that aims to reduce context switching by -// enabling users to collect content and transfer or access it later. -const base::Feature kHoldingSpaceInProgressAnimationV2{ - "HoldingSpaceInProgressAnimationV2", base::FEATURE_ENABLED_BY_DEFAULT}; - -// Enables delay for the `kHoldingSpaceInProgressAnimationV2` feature so that -// progress icon animations won't start until any associated holding space tray -// item previews have had the opportunity to animate in. -const base::FeatureParam<bool> kHoldingSpaceInProgressAnimationV2DelayEnabled{ - &kHoldingSpaceInProgressAnimationV2, "delay_enabled", true}; - // Enables in-progress downloads notification suppression with the productivity // feature that aims to reduce context switching by enabling users to collect // content and transfer or access it later. @@ -928,6 +920,12 @@ "LauncherDismissButtonsOnSortNudgeAndToast", base::FEATURE_ENABLED_BY_DEFAULT}; +// When enabled, adds menu items to the launcher continue task context menu +// and recent apps context menu that allow the user to hide the continue +// section. +const base::Feature kLauncherHideContinueSection{ + "LauncherHideContinueSection", base::FEATURE_ENABLED_BY_DEFAULT}; + // Uses short intervals for launcher nudge for testing if enabled. const base::Feature kLauncherNudgeShortInterval{ "LauncherNudgeShortInterval", base::FEATURE_DISABLED_BY_DEFAULT}; @@ -1699,6 +1697,10 @@ return base::FeatureList::IsEnabled(kESimPolicy); } +bool IsExperimentalRgbKeyboardPatternsEnabled() { + return base::FeatureList::IsEnabled(kExperimentalRgbKeyboardPatterns); +} + bool IsExtendedOpenVpnSettingsEnabled() { return base::FeatureList::IsEnabled(kExtendedOpenVpnSettings); } @@ -1779,15 +1781,6 @@ return base::FeatureList::IsEnabled(kHideShelfControlsInTabletMode); } -bool IsHoldingSpaceInProgressAnimationV2Enabled() { - return base::FeatureList::IsEnabled(kHoldingSpaceInProgressAnimationV2); -} - -bool IsHoldingSpaceInProgressAnimationV2DelayEnabled() { - return IsHoldingSpaceInProgressAnimationV2Enabled() && - kHoldingSpaceInProgressAnimationV2DelayEnabled.Get(); -} - bool IsHoldingSpaceInProgressDownloadsNotificationSuppressionEnabled() { return base::FeatureList::IsEnabled( kHoldingSpaceInProgressDownloadsNotificationSuppression); @@ -1844,6 +1837,11 @@ kLauncherDismissButtonsOnSortNudgeAndToast); } +bool IsLauncherHideContinueSectionEnabled() { + return IsProductivityLauncherEnabled() && + base::FeatureList::IsEnabled(kLauncherHideContinueSection); +} + bool IsLauncherNudgeShortIntervalEnabled() { return IsProductivityLauncherEnabled() && base::FeatureList::IsEnabled(kLauncherNudgeShortInterval);
diff --git a/ash/constants/ash_features.h b/ash/constants/ash_features.h index 75f1d0f..d5ea3c4 100644 --- a/ash/constants/ash_features.h +++ b/ash/constants/ash_features.h
@@ -259,6 +259,8 @@ COMPONENT_EXPORT(ASH_CONSTANTS) extern const base::Feature kExoOrdinalMotion; COMPONENT_EXPORT(ASH_CONSTANTS) extern const base::Feature kExoPointerLock; COMPONENT_EXPORT(ASH_CONSTANTS) +extern const base::Feature kExperimentalRgbKeyboardPatterns; +COMPONENT_EXPORT(ASH_CONSTANTS) extern const base::Feature kFamilyLinkOnSchoolDevice; COMPONENT_EXPORT(ASH_CONSTANTS) extern const base::Feature kFastPair; COMPONENT_EXPORT(ASH_CONSTANTS) extern const base::Feature kFastPairLowPower; @@ -321,8 +323,6 @@ COMPONENT_EXPORT(ASH_CONSTANTS) extern const base::Feature kHideShelfControlsInTabletMode; COMPONENT_EXPORT(ASH_CONSTANTS) -extern const base::Feature kHoldingSpaceInProgressAnimationV2; -COMPONENT_EXPORT(ASH_CONSTANTS) extern const base::Feature kHoldingSpaceInProgressDownloadsNotificationSuppression; COMPONENT_EXPORT(ASH_CONSTANTS) @@ -361,6 +361,8 @@ COMPONENT_EXPORT(ASH_CONSTANTS) extern const base::Feature kLauncherDismissButtonsOnSortNudgeAndToast; COMPONENT_EXPORT(ASH_CONSTANTS) +extern const base::Feature kLauncherHideContinueSection; +COMPONENT_EXPORT(ASH_CONSTANTS) extern const base::Feature kLauncherNudgeShortInterval; COMPONENT_EXPORT(ASH_CONSTANTS) extern const base::Feature kLauncherNudgeSessionReset; @@ -623,6 +625,8 @@ COMPONENT_EXPORT(ASH_CONSTANTS) bool IsEcheCustomWidgetEnabled(); COMPONENT_EXPORT(ASH_CONSTANTS) bool IsEcheSWADebugModeEnabled(); COMPONENT_EXPORT(ASH_CONSTANTS) bool IsESimPolicyEnabled(); +COMPONENT_EXPORT(ASH_CONSTANTS) +bool IsExperimentalRgbKeyboardPatternsEnabled(); COMPONENT_EXPORT(ASH_CONSTANTS) bool IsExtendedOpenVpnSettingsEnabled(); COMPONENT_EXPORT(ASH_CONSTANTS) bool IsExternalKeyboardInDiagnosticsAppEnabled(); @@ -643,10 +647,6 @@ COMPONENT_EXPORT(ASH_CONSTANTS) bool IsHideArcMediaNotificationsEnabled(); COMPONENT_EXPORT(ASH_CONSTANTS) bool IsHideShelfControlsInTabletModeEnabled(); COMPONENT_EXPORT(ASH_CONSTANTS) -bool IsHoldingSpaceInProgressAnimationV2Enabled(); -COMPONENT_EXPORT(ASH_CONSTANTS) -bool IsHoldingSpaceInProgressAnimationV2DelayEnabled(); -COMPONENT_EXPORT(ASH_CONSTANTS) bool IsHoldingSpaceInProgressDownloadsNotificationSuppressionEnabled(); COMPONENT_EXPORT(ASH_CONSTANTS) bool IsHostnameSettingEnabled(); COMPONENT_EXPORT(ASH_CONSTANTS) bool IsIdleInhibitEnabled(); @@ -663,6 +663,7 @@ bool IsLauncherFolderRenameKeepsSortOrderEnabled(); COMPONENT_EXPORT(ASH_CONSTANTS) bool IsLauncherDismissButtonsOnSortNudgeAndToastEnabled(); +COMPONENT_EXPORT(ASH_CONSTANTS) bool IsLauncherHideContinueSectionEnabled(); COMPONENT_EXPORT(ASH_CONSTANTS) bool IsLauncherNudgeShortIntervalEnabled(); COMPONENT_EXPORT(ASH_CONSTANTS) bool IsLauncherNudgeSessionResetEnabled(); COMPONENT_EXPORT(ASH_CONSTANTS) bool IsLauncherPulsingBlocksRefreshEnabled();
diff --git a/ash/quick_pair/OWNERS b/ash/quick_pair/OWNERS index f0f3a774..ef9bf69 100644 --- a/ash/quick_pair/OWNERS +++ b/ash/quick_pair/OWNERS
@@ -1,2 +1,4 @@ shanefitz@google.com jonmann@chromium.org +dclasson@google.com +julietlevesque@google.com
diff --git a/ash/system/accessibility/dictation_button_tray.cc b/ash/system/accessibility/dictation_button_tray.cc index 645c7ef3..9aafb1fb4 100644 --- a/ash/system/accessibility/dictation_button_tray.cc +++ b/ash/system/accessibility/dictation_button_tray.cc
@@ -143,12 +143,9 @@ void DictationButtonTray::UpdateIconOpacityAndTransform() { // Updating the tray `icon_` opacity and transform is done to prevent overlap - // with the inner icon of the `progress_indicator_` which is only present when - // in-progress animation v2 is enabled. - if (!features::IsHoldingSpaceInProgressAnimationV2Enabled() || - !progress_indicator_) { + // with the inner icon of the `progress_indicator_` + if (!progress_indicator_) return; - } // When `progress` is not `complete`, the `progress_indicator_` will paint an // inner icon in the same position as the tray `icon_`. To prevent overlap,
diff --git a/ash/system/accessibility/dictation_button_tray_unittest.cc b/ash/system/accessibility/dictation_button_tray_unittest.cc index 72f75d6..bbcd102 100644 --- a/ash/system/accessibility/dictation_button_tray_unittest.cc +++ b/ash/system/accessibility/dictation_button_tray_unittest.cc
@@ -171,12 +171,8 @@ EXPECT_FALSE(GetTray()->is_active()); } -// Base class for SODA tests of the dictation button tray, parameterized by -// whether in-progress animation v2 is enabled. -class DictationButtonTraySodaTest - : public DictationButtonTrayTest, - public testing::WithParamInterface< - /*in_progress_animation_v2_enabled=*/bool> { +// Base class for SODA tests of the dictation button tray. +class DictationButtonTraySodaTest : public DictationButtonTrayTest { public: DictationButtonTraySodaTest() = default; ~DictationButtonTraySodaTest() override = default; @@ -184,23 +180,12 @@ DictationButtonTraySodaTest& operator=(const DictationButtonTraySodaTest&) = delete; - // Returns whether in-progress animation v2 is enabled given test - // parameterization. - bool IsInProgressAnimationV2Enabled() const { return GetParam(); } - // DictationButtonTrayTest: void SetUp() override { DictationButtonTrayTest::SetUp(); - std::vector<base::Feature> enabled_features = { - features::kOnDeviceSpeechRecognition}; - std::vector<base::Feature> disabled_features; - - // Enable/disable in-progress animation v2 based on test parameterization. - (IsInProgressAnimationV2Enabled() ? enabled_features : disabled_features) - .push_back(features::kHoldingSpaceInProgressAnimationV2); - - scoped_feature_list_.InitWithFeatures(enabled_features, disabled_features); + scoped_feature_list_.InitAndEnableFeature( + features::kOnDeviceSpeechRecognition); // Since this test suite is part of ash unit tests, the // SodaInstallerImplChromeOS is never created (it's normally created when @@ -247,12 +232,8 @@ std::unique_ptr<speech::SodaInstallerImplChromeOS> soda_installer_impl_; }; -INSTANTIATE_TEST_SUITE_P(All, - DictationButtonTraySodaTest, - /*in_progress_animation_v2_enabled=*/testing::Bool()); - // Tests the behavior of the UpdateOnSpeechRecognitionDownloadChanged() method. -TEST_P(DictationButtonTraySodaTest, UpdateOnSpeechRecognitionDownloadChanged) { +TEST_F(DictationButtonTraySodaTest, UpdateOnSpeechRecognitionDownloadChanged) { AccessibilityControllerImpl* controller = Shell::Get()->accessibility_controller(); controller->dictation().SetEnabled(true); @@ -279,22 +260,20 @@ EXPECT_FALSE(tray->GetEnabled()); EXPECT_EQ(base::UTF8ToUTF16(kDisabledTooltip), image->GetTooltipText()); - // If in-progress animation v2 is enabled, the tray icon should *not* be - // visible when the download is in progress. + // The tray icon should *not* be visible when the download is in progress. ProgressIndicatorWaiter().WaitForProgress(progress_indicator, 0.5f); EXPECT_TRUE(IsProgressIndicatorVisible()); - EXPECT_NE(IsImageVisible(), IsInProgressAnimationV2Enabled()); + EXPECT_FALSE(IsImageVisible()); tray->UpdateOnSpeechRecognitionDownloadChanged(/*download_progress=*/70); EXPECT_EQ(70, tray->download_progress()); EXPECT_FALSE(tray->GetEnabled()); EXPECT_EQ(base::UTF8ToUTF16(kDisabledTooltip), image->GetTooltipText()); - // If in-progress animation v2 is enabled, the tray icon should *not* be - // visible when the download is in progress. + // The tray icon should *not* be visible when the download is in progress. ProgressIndicatorWaiter().WaitForProgress(progress_indicator, 0.7f); EXPECT_TRUE(IsProgressIndicatorVisible()); - EXPECT_NE(IsImageVisible(), IsInProgressAnimationV2Enabled()); + EXPECT_FALSE(IsImageVisible()); // Similar to 0, a value of 100 means that download is not in-progress. tray->UpdateOnSpeechRecognitionDownloadChanged(/*download_progress=*/100);
diff --git a/ash/system/holding_space/holding_space_animation_registry.cc b/ash/system/holding_space/holding_space_animation_registry.cc index c64cf0c0d..f809ddd 100644 --- a/ash/system/holding_space/holding_space_animation_registry.cc +++ b/ash/system/holding_space/holding_space_animation_registry.cc
@@ -119,12 +119,8 @@ // Ensures that the icon animation for the specified `key` exists. If // necessary, a new animation is created and started, notifying any animation - // changed callbacks. NOTE: This method no-ops unless in-progress animations - // v2 is enabled. + // changed callbacks. void EnsureIconAnimationForKey(const void* key) { - if (!features::IsHoldingSpaceInProgressAnimationV2Enabled()) - return; - if (registry_->GetProgressIconAnimationForKey(key)) return; @@ -132,14 +128,11 @@ key, std::make_unique<ProgressIconAnimation>()); // Only `Start()` the `animation` if it is associated with the holding space - // `controller_` or if animation delay is disabled. In all other cases, the - // `animation` is associated with a holding space item and will be started - // after the associated holding space tray item preview has had the - // opportunity to animate in. - if (key == controller_ || - !features::IsHoldingSpaceInProgressAnimationV2DelayEnabled()) { + // `controller_`. In all other cases, the `animation` is associated with a + // holding space item and will be started after the associated holding space + // tray item preview has had the opportunity to animate in. + if (key == controller_) animation->Start(); - } } // Ensures that the ring animation for the specified `key` is of the desired
diff --git a/ash/system/holding_space/holding_space_animation_registry_unittest.cc b/ash/system/holding_space/holding_space_animation_registry_unittest.cc index d859dd4f..8defc9b2 100644 --- a/ash/system/holding_space/holding_space_animation_registry_unittest.cc +++ b/ash/system/holding_space/holding_space_animation_registry_unittest.cc
@@ -32,37 +32,8 @@ // HoldingSpaceAnimationRegistryTest ------------------------------------------- -class HoldingSpaceAnimationRegistryTest - : public AshTestBase, - public testing::WithParamInterface<std::tuple< - /*animation_v2_enabled=*/bool, - /*animation_v2_delay_enabled=*/bool>> { +class HoldingSpaceAnimationRegistryTest : public AshTestBase { public: - HoldingSpaceAnimationRegistryTest() { - std::vector<base::Feature> disabled_features; - std::vector<base::test::ScopedFeatureList::FeatureAndParams> - enabled_features; - - if (IsAnimationV2Enabled()) { - enabled_features.push_back( - base::test::ScopedFeatureList::FeatureAndParams( - features::kHoldingSpaceInProgressAnimationV2, - {{"delay_enabled", - IsAnimationV2DelayEnabled() ? "true" : "false"}})); - } else { - disabled_features.push_back(features::kHoldingSpaceInProgressAnimationV2); - } - - scoped_feature_list_.InitWithFeaturesAndParameters(enabled_features, - disabled_features); - } - - bool IsAnimationV2Enabled() const { return std::get<0>(GetParam()); } - - bool IsAnimationV2DelayEnabled() const { - return IsAnimationV2Enabled() && std::get<1>(GetParam()); - } - // AshTestBase: void SetUp() override { AshTestBase::SetUp(); @@ -134,22 +105,15 @@ } private: - base::test::ScopedFeatureList scoped_feature_list_; testing::NiceMock<MockHoldingSpaceClient> holding_space_client_; HoldingSpaceModel holding_space_model_; }; -INSTANTIATE_TEST_SUITE_P(All, - HoldingSpaceAnimationRegistryTest, - testing::Combine( - /*animation_v2_enabled=*/testing::Bool(), - /*animation_v2_delay_enabled=*/testing::Bool())); - } // namespace // Tests ----------------------------------------------------------------------- -TEST_P(HoldingSpaceAnimationRegistryTest, ProgressIndicatorAnimations) { +TEST_F(HoldingSpaceAnimationRegistryTest, ProgressIndicatorAnimations) { using Type = ProgressRingAnimation::Type; StartSession(); @@ -173,17 +137,14 @@ AddItem(HoldingSpaceItem::Type::kDownload, base::FilePath("/tmp/1"), HoldingSpaceProgress(0, absl::nullopt)); - bool v2_enabled = IsAnimationV2Enabled(); - bool v2_with_delay_disabled = v2_enabled && !IsAnimationV2DelayEnabled(); - // Verify animation `registry()` state. - ExpectProgressIconAnimationExistsForKey(controller(), v2_enabled); - ExpectProgressIconAnimationHasAnimatedForKey(controller(), v2_enabled); + ExpectProgressIconAnimationExistsForKey(controller(), true); + ExpectProgressIconAnimationHasAnimatedForKey(controller(), true); ExpectProgressRingAnimationOfTypeForKey(controller(), Type::kIndeterminate); ExpectProgressIconAnimationExistsForKey(item_0, false); ExpectProgressRingAnimationOfTypeForKey(item_0, absl::nullopt); - ExpectProgressIconAnimationExistsForKey(item_1, v2_enabled); - ExpectProgressIconAnimationHasAnimatedForKey(item_1, v2_with_delay_disabled); + ExpectProgressIconAnimationExistsForKey(item_1, true); + ExpectProgressIconAnimationHasAnimatedForKey(item_1, false); ExpectProgressRingAnimationOfTypeForKey(item_1, Type::kIndeterminate); // Add a determinately in-progress item to the `model()`. @@ -192,31 +153,31 @@ HoldingSpaceProgress(0, 10)); // Verify animation `registry()` state. - ExpectProgressIconAnimationExistsForKey(controller(), v2_enabled); - ExpectProgressIconAnimationHasAnimatedForKey(controller(), v2_enabled); + ExpectProgressIconAnimationExistsForKey(controller(), true); + ExpectProgressIconAnimationHasAnimatedForKey(controller(), true); ExpectProgressRingAnimationOfTypeForKey(controller(), Type::kIndeterminate); ExpectProgressIconAnimationExistsForKey(item_0, false); ExpectProgressRingAnimationOfTypeForKey(item_0, absl::nullopt); - ExpectProgressIconAnimationExistsForKey(item_1, v2_enabled); - ExpectProgressIconAnimationHasAnimatedForKey(item_1, v2_with_delay_disabled); + ExpectProgressIconAnimationExistsForKey(item_1, true); + ExpectProgressIconAnimationHasAnimatedForKey(item_1, false); ExpectProgressRingAnimationOfTypeForKey(item_1, Type::kIndeterminate); - ExpectProgressIconAnimationExistsForKey(item_2, v2_enabled); - ExpectProgressIconAnimationHasAnimatedForKey(item_2, v2_with_delay_disabled); + ExpectProgressIconAnimationExistsForKey(item_2, true); + ExpectProgressIconAnimationHasAnimatedForKey(item_2, false); ExpectProgressRingAnimationOfTypeForKey(item_2, absl::nullopt); // Complete the first in-progress item. model()->UpdateItem(item_1->id())->SetProgress(HoldingSpaceProgress(10, 10)); // Verify animation `registry()` state. - ExpectProgressIconAnimationExistsForKey(controller(), v2_enabled); - ExpectProgressIconAnimationHasAnimatedForKey(controller(), v2_enabled); + ExpectProgressIconAnimationExistsForKey(controller(), true); + ExpectProgressIconAnimationHasAnimatedForKey(controller(), true); ExpectProgressRingAnimationOfTypeForKey(controller(), absl::nullopt); ExpectProgressIconAnimationExistsForKey(item_0, false); ExpectProgressRingAnimationOfTypeForKey(item_0, absl::nullopt); ExpectProgressIconAnimationExistsForKey(item_1, false); ExpectProgressRingAnimationOfTypeForKey(item_1, Type::kPulse); - ExpectProgressIconAnimationExistsForKey(item_2, v2_enabled); - ExpectProgressIconAnimationHasAnimatedForKey(item_2, v2_with_delay_disabled); + ExpectProgressIconAnimationExistsForKey(item_2, true); + ExpectProgressIconAnimationHasAnimatedForKey(item_2, false); ExpectProgressRingAnimationOfTypeForKey(item_2, absl::nullopt); // Complete the second in-progress item.
diff --git a/ash/system/holding_space/holding_space_item_chip_view.cc b/ash/system/holding_space/holding_space_item_chip_view.cc index d5796bb1..b179042 100644 --- a/ash/system/holding_space/holding_space_item_chip_view.cc +++ b/ash/system/holding_space/holding_space_item_chip_view.cc
@@ -183,10 +183,8 @@ void OnBoundsChanged(const gfx::Rect& previous_bounds) override { if (progress_indicator_) { gfx::Rect bounds(GetLocalBounds()); - if (features::IsHoldingSpaceInProgressAnimationV2Enabled()) { - ToCenteredSize( - &bounds, gfx::Size(kProgressIndicatorSize, kProgressIndicatorSize)); - } + ToCenteredSize(&bounds, + gfx::Size(kProgressIndicatorSize, kProgressIndicatorSize)); progress_indicator_->layer()->SetBounds(bounds); } } @@ -532,13 +530,11 @@ !is_secondary_action_visible && !checkmark()->GetVisible(); // Similarly, the `image_` may be visible iff there is no visible secondary - // action or multiselect UI but additionally, when v2 animations are enabled, - // the `image_` may only be visible when `progress` is hidden or complete. + // action or multiselect UI but additionally the `image_` may only be visible + // when `progress` is hidden or complete. bool is_image_visible = is_progress_indicator_inner_icon_visible; - if (features::IsHoldingSpaceInProgressAnimationV2Enabled()) { - const HoldingSpaceProgress& progress = item()->progress(); - is_image_visible &= progress.IsHidden() || progress.IsComplete(); - } + const HoldingSpaceProgress& progress = item()->progress(); + is_image_visible &= progress.IsHidden() || progress.IsComplete(); image_->SetVisible(is_image_visible); progress_indicator_->SetInnerIconVisible(
diff --git a/ash/system/holding_space/holding_space_tray.cc b/ash/system/holding_space/holding_space_tray.cc index 1de3fee..9d8f660b 100644 --- a/ash/system/holding_space/holding_space_tray.cc +++ b/ash/system/holding_space/holding_space_tray.cc
@@ -690,10 +690,8 @@ UpdatePreviewsVisibility(); SchedulePreviewsIconUpdate(); - if (PreviewsShown() || - !features::IsHoldingSpaceInProgressAnimationV2DelayEnabled()) { + if (PreviewsShown()) return; - } // When previews are shown, progress icon animations are started on completion // of preview animations. When previews are *not* shown, there is nothing to @@ -765,11 +763,6 @@ } void HoldingSpaceTray::UpdateDefaultTrayIcon() { - // Overlap between the `default_tray_icon_` and the `progress_indicator_` is - // only a concern if v2 animations are enabled. - if (!features::IsHoldingSpaceInProgressAnimationV2Enabled()) - return; - const absl::optional<float>& progress = progress_indicator_->progress(); // If `progress` is not `complete`, there is potential for overlap between the
diff --git a/ash/system/holding_space/holding_space_tray_icon_preview.cc b/ash/system/holding_space/holding_space_tray_icon_preview.cc index 4eda59a9..ddd80b2 100644 --- a/ash/system/holding_space/holding_space_tray_icon_preview.cc +++ b/ash/system/holding_space/holding_space_tray_icon_preview.cc
@@ -314,13 +314,9 @@ void UpdateOpacity() { // Opacity need not be updated if: // * `item_` is destroyed and is being animated out, - // * `layer()` does not exist, or - // * in-progress animations v2 is disabled since in that case there is no - // progress indicator inner icon which would otherwise result in overlap. - if (!item_ || !layer() || - !features::IsHoldingSpaceInProgressAnimationV2Enabled()) { + // * `layer()` does not exist. + if (!item_ || !layer()) return; - } const bool is_item_visibly_in_progress = !item_->progress().IsHidden() && !item_->progress().IsComplete(); @@ -346,13 +342,9 @@ void UpdateTransform() { // Transform need not be updated if: // * `item_` is destroyed and is being animated out, - // * `layer()` does not exist, or - // * in-progress animations v2 is disabled since in that case there is no - // progress indicator inner icon which would otherwise result in overlap. - if (!item_ || !layer() || - !features::IsHoldingSpaceInProgressAnimationV2Enabled()) { + // * `layer()` does not exist. + if (!item_ || !layer()) return; - } const bool is_item_visibly_in_progress = !item_->progress().IsHidden() && !item_->progress().IsComplete(); @@ -434,13 +426,11 @@ if (!NeedsLayer()) { // Since the holding space tray icon preview will not be animated, any // associated progress icon animation can `Start()` immediately. - if (features::IsHoldingSpaceInProgressAnimationV2DelayEnabled()) { - auto* key = progress_indicator_->animation_key(); - auto* registry = HoldingSpaceAnimationRegistry::GetInstance(); - auto* animation = registry->GetProgressIconAnimationForKey(key); - if (animation && !animation->HasAnimated()) - animation->Start(); - } + auto* key = progress_indicator_->animation_key(); + auto* registry = HoldingSpaceAnimationRegistry::GetInstance(); + auto* animation = registry->GetProgressIconAnimationForKey(key); + if (animation && !animation->HasAnimated()) + animation->Start(); return; } @@ -483,19 +473,16 @@ // Any associated progress icon animation should `Start()` only after // completion of the holding space tray icon preview animation. - if (features::IsHoldingSpaceInProgressAnimationV2DelayEnabled()) { - auto observer = std::make_unique<CallbackLayerAnimationObserver>(); - sequence->AddObserver(observer.get()); - observer->SetAnimationCompletedCallback(base::BindOnce( - [](CallbackLayerAnimationObserver* observer, const void* key) { - auto* registry = HoldingSpaceAnimationRegistry::GetInstance(); - auto* animation = registry->GetProgressIconAnimationForKey(key); - if (animation && !animation->HasAnimated()) - animation->Start(); - }, - base::Owned(std::move(observer)), - progress_indicator_->animation_key())); - } + auto observer = std::make_unique<CallbackLayerAnimationObserver>(); + sequence->AddObserver(observer.get()); + observer->SetAnimationCompletedCallback(base::BindOnce( + [](CallbackLayerAnimationObserver* observer, const void* key) { + auto* registry = HoldingSpaceAnimationRegistry::GetInstance(); + auto* animation = registry->GetProgressIconAnimationForKey(key); + if (animation && !animation->HasAnimated()) + animation->Start(); + }, + base::Owned(std::move(observer)), progress_indicator_->animation_key())); layer()->GetAnimator()->StartAnimation(sequence.release()); }
diff --git a/ash/system/holding_space/holding_space_tray_unittest.cc b/ash/system/holding_space/holding_space_tray_unittest.cc index 00b14f8d..7c6b5fd 100644 --- a/ash/system/holding_space/holding_space_tray_unittest.cc +++ b/ash/system/holding_space/holding_space_tray_unittest.cc
@@ -948,68 +948,25 @@ } // Base class for tests of the holding space downloads section parameterized by: -// * the set of holding space item types which are expected to appear there -// * whether the in-progress animation v2 is enabled -// * whether the in-progress animation v2 delay is enabled +// * the set of holding space item types which are expected to appear there. class HoldingSpaceTrayDownloadsSectionTest : public HoldingSpaceTrayTest, - public ::testing::WithParamInterface< - std::tuple<HoldingSpaceItem::Type, - /*in_progress_animation_v2_enabled=*/bool, - /*in_progress_animation_v2_delay_enabled=*/bool>> { + public ::testing::WithParamInterface<HoldingSpaceItem::Type> { public: - HoldingSpaceTrayDownloadsSectionTest() { - std::vector<base::Feature> disabled_features; - std::vector<base::test::ScopedFeatureList::FeatureAndParams> - enabled_features; - - // Feature: in-progress animation v2. - if (IsInProgressAnimationV2Enabled()) { - enabled_features.push_back( - base::test::ScopedFeatureList::FeatureAndParams( - features::kHoldingSpaceInProgressAnimationV2, - {{"delay_enabled", - IsInProgressAnimationV2DelayEnabled() ? "true" : "false"}})); - } else { - disabled_features.push_back(features::kHoldingSpaceInProgressAnimationV2); - } - - scoped_feature_list_.InitWithFeaturesAndParameters(enabled_features, - disabled_features); - } - // Returns the holding space item type given the test parameterization. - HoldingSpaceItem::Type GetType() const { return std::get<0>(GetParam()); } - - // Returns whether in-progress animation v2 is enabled given test - // parameterization. - bool IsInProgressAnimationV2Enabled() const { - return std::get<1>(GetParam()); - } - - // Returns whether in-progress animation v2 delay is enabled given test - // parameterization. - bool IsInProgressAnimationV2DelayEnabled() const { - return IsInProgressAnimationV2Enabled() && std::get<1>(GetParam()); - } - - private: - base::test::ScopedFeatureList scoped_feature_list_; + HoldingSpaceItem::Type GetType() const { return GetParam(); } }; INSTANTIATE_TEST_SUITE_P( All, HoldingSpaceTrayDownloadsSectionTest, - ::testing::Combine( - ::testing::Values(HoldingSpaceItem::Type::kArcDownload, - HoldingSpaceItem::Type::kDiagnosticsLog, - HoldingSpaceItem::Type::kDownload, - HoldingSpaceItem::Type::kLacrosDownload, - HoldingSpaceItem::Type::kNearbyShare, - HoldingSpaceItem::Type::kPrintedPdf, - HoldingSpaceItem::Type::kScan), - /*in_progress_animation_v2_enabled=*/::testing::Bool(), - /*in_progress_animation_v2_delay_enabled=*/::testing::Bool())); + ::testing::Values(HoldingSpaceItem::Type::kArcDownload, + HoldingSpaceItem::Type::kDiagnosticsLog, + HoldingSpaceItem::Type::kDownload, + HoldingSpaceItem::Type::kLacrosDownload, + HoldingSpaceItem::Type::kNearbyShare, + HoldingSpaceItem::Type::kPrintedPdf, + HoldingSpaceItem::Type::kScan)); // Tests how download chips are updated during item addition, removal and // initialization. @@ -1283,11 +1240,9 @@ PredicateWaiter().WaitUntil(base::BindLambdaForTesting( [&]() { return progress_indicator->progress() == 0.f; })); - // When in-progress animation v2 is enabled, the `default_tray_icon` should - // not be visible so as to avoid overlap with the `progress_indicator`'s inner - // icon while in progress. - EXPECT_EQ(default_tray_icon->layer()->GetTargetOpacity(), - IsInProgressAnimationV2Enabled() ? 0.f : 1.f); + // The `default_tray_icon` should not be visible so as to avoid overlap with + // the `progress_indicator`'s inner icon while in progress. + EXPECT_EQ(default_tray_icon->layer()->GetTargetOpacity(), 0.f); EXPECT_EQ(default_tray_icon->layer()->GetTargetTransform(), gfx::Transform()); // Complete the in-progress `item`. @@ -1340,15 +1295,10 @@ [&]() { return progress_indicator->progress() == 0.f; })); // Verify image opacity/transform. - if (!IsInProgressAnimationV2Enabled()) { - EXPECT_EQ(image->GetTargetOpacity(), 1.f); - EXPECT_EQ(image->GetTargetTransform(), gfx::Transform()); - } else { - EXPECT_EQ(image->GetTargetOpacity(), 0.f); - EXPECT_EQ( - image->GetTargetTransform(), - gfx::GetScaleTransform(gfx::Rect(image->size()).CenterPoint(), 0.7f)); - } + EXPECT_EQ(image->GetTargetOpacity(), 0.f); + EXPECT_EQ( + image->GetTargetTransform(), + gfx::GetScaleTransform(gfx::Rect(image->size()).CenterPoint(), 0.7f)); // Complete the in-progress `item`. model()->UpdateItem(item->id())->SetProgress(HoldingSpaceProgress(100, 100)); @@ -1405,16 +1355,14 @@ // Confirm any expected `icon_animation` for tray has started. auto* controller = HoldingSpaceController::Get(); auto* icon_animation = registry->GetProgressIconAnimationForKey(controller); - EXPECT_EQ(!!icon_animation, IsInProgressAnimationV2Enabled()); - if (IsInProgressAnimationV2Enabled()) - EXPECT_TRUE(icon_animation->HasAnimated()); + ASSERT_TRUE(icon_animation); + EXPECT_TRUE(icon_animation->HasAnimated()); // Confirm all expected `icon_animations`'s for `items` have started. for (const auto* item : items) { icon_animation = registry->GetProgressIconAnimationForKey(item); - EXPECT_EQ(!!icon_animation, IsInProgressAnimationV2Enabled()); - if (IsInProgressAnimationV2Enabled()) - EXPECT_TRUE(icon_animation->HasAnimated()); + ASSERT_TRUE(icon_animation); + EXPECT_TRUE(icon_animation->HasAnimated()); } } } @@ -3009,27 +2957,13 @@ // Base class for holding space tray tests which make assertions about primary // and secondary actions on holding space item views. Tests are parameterized by -// holding space item type and whether in-progress animation v2 is enabled. +// holding space item type. class HoldingSpaceTrayPrimaryAndSecondaryActionsTest : public HoldingSpaceTrayTest, - public testing::WithParamInterface< - std::tuple<HoldingSpaceItem::Type, - /*is_in_progress_animation_v2_enabled=*/bool>> { + public testing::WithParamInterface<HoldingSpaceItem::Type> { public: - HoldingSpaceTrayPrimaryAndSecondaryActionsTest() { - scoped_feature_list_.InitWithFeatureState( - features::kHoldingSpaceInProgressAnimationV2, - IsInProgressAnimationV2Enabled()); - } - // Returns the parameterized holding space item type. - HoldingSpaceItem::Type GetType() const { return std::get<0>(GetParam()); } - - // Returns whether in-progress animation v2 is enabled given test - // parameterization. - bool IsInProgressAnimationV2Enabled() const { - return std::get<1>(GetParam()); - } + HoldingSpaceItem::Type GetType() const { return GetParam(); } // Returns whether the progress indicator inner icon is visible. bool IsProgressIndicatorInnerIconVisible(views::View* view) const { @@ -3071,16 +3005,11 @@ auto* menu_item = menu_controller->GetSelectedMenuItem(); return menu_item && menu_item->GetMenuItemByID(static_cast<int>(id)); } - - private: - base::test::ScopedFeatureList scoped_feature_list_; }; -INSTANTIATE_TEST_SUITE_P( - All, - HoldingSpaceTrayPrimaryAndSecondaryActionsTest, - testing::Combine(testing::ValuesIn(GetHoldingSpaceItemTypes()), - /*is_in_progress_animation_v2_enabled=*/testing::Bool())); +INSTANTIATE_TEST_SUITE_P(All, + HoldingSpaceTrayPrimaryAndSecondaryActionsTest, + testing::ValuesIn(GetHoldingSpaceItemTypes())); // Verifies that holding space item views have the expected primary and // secondary actions for their state of progress, both inline and in their @@ -3110,9 +3039,8 @@ // should be shown when the secondary action container is hidden. EXPECT_TRUE(IsProgressIndicatorInnerIconVisible(item_views.front())); // The holding space image should only be shown if the secondary action - // container is hidden and if in-progress animation v2 is disabled. - EXPECT_NE(IsShowingImage(item_views.front()), - IsInProgressAnimationV2Enabled()); + // container is hidden. + EXPECT_FALSE(IsShowingImage(item_views.front())); } else { // For screen capture items, the holding space image should always be shown. EXPECT_TRUE(IsShowingImage(item_views.front())); @@ -3135,10 +3063,8 @@ EXPECT_NE(IsProgressIndicatorInnerIconVisible(item_views.front()), IsShowingSecondaryAction(item_views.front())); // The holding space image should only be shown if the secondary action - // container is hidden or if in-progress animation v2 is disabled. - EXPECT_NE(IsShowingImage(item_views.front()), - IsShowingSecondaryAction(item_views.front()) || - IsInProgressAnimationV2Enabled()); + // container is hidden. + EXPECT_FALSE(IsShowingImage(item_views.front())); } else { // For screen capture items, the holding space image should always be shown. EXPECT_TRUE(IsShowingImage(item_views.front()));
diff --git a/ash/system/message_center/notification_grouping_controller.cc b/ash/system/message_center/notification_grouping_controller.cc index 053659d..81d72994 100644 --- a/ash/system/message_center/notification_grouping_controller.cc +++ b/ash/system/message_center/notification_grouping_controller.cc
@@ -288,12 +288,13 @@ message_center::NotificationViewController* NotificationGroupingController::GetActiveNotificationViewController() { if (tray_->IsMessageCenterBubbleShown()) { - return tray_->message_center_bubble() - ->message_center_view() - ->message_list_view(); - } else { - return tray_->GetMessagePopupCollection(); + auto* message_list_view = tray_->message_center_bubble() + ->message_center_view() + ->message_list_view(); + if (message_list_view) + return message_list_view; } + return tray_->GetMessagePopupCollection(); } void NotificationGroupingController::OnNotificationAdded(
diff --git a/ash/system/message_center/unified_message_center_bubble.cc b/ash/system/message_center/unified_message_center_bubble.cc index 1f3b3ad..258abbf 100644 --- a/ash/system/message_center/unified_message_center_bubble.cc +++ b/ash/system/message_center/unified_message_center_bubble.cc
@@ -195,7 +195,8 @@ } bool UnifiedMessageCenterBubble::IsMessageCenterVisible() { - return !!bubble_widget_ && message_center_view_->GetVisible(); + return !!bubble_widget_ && message_center_view_ && + message_center_view_->GetVisible(); } bool UnifiedMessageCenterBubble::IsMessageCenterCollapsed() {
diff --git a/ash/system/progress_indicator/progress_indicator.cc b/ash/system/progress_indicator/progress_indicator.cc index 0d5a36cd..8bddee1 100644 --- a/ash/system/progress_indicator/progress_indicator.cc +++ b/ash/system/progress_indicator/progress_indicator.cc
@@ -32,7 +32,6 @@ constexpr float kInnerRingStrokeWidthScaleFactor = 1.5f / 28.f; constexpr float kOuterRingStrokeWidth = 2.f; constexpr float kOuterRingStrokeWidthScaleFactor = 4.f / 28.f; -constexpr float kOuterRingTrackOpacity = 0.3f; // Helpers --------------------------------------------------------------------- @@ -98,7 +97,6 @@ // Returns the size for the inner icon given `layer` dimensions. // NOTE: this method should only be called when v2 animations are enabled. float GetInnerIconSize(const ui::Layer* layer) { - DCHECK(features::IsHoldingSpaceInProgressAnimationV2Enabled()); const gfx::Size& size = layer->size(); return kInnerIconSizeScaleFactor * std::min(size.width(), size.height()); } @@ -106,7 +104,6 @@ // Returns the stroke width for the inner icon given `layer` dimensions. // NOTE: this method should only be called when v2 animations are enabled. float GetInnerRingStrokeWidth(const ui::Layer* layer) { - DCHECK(features::IsHoldingSpaceInProgressAnimationV2Enabled()); const gfx::Size& size = layer->size(); return kInnerRingStrokeWidthScaleFactor * std::min(size.width(), size.height()); @@ -114,18 +111,15 @@ // Returns the opacity for the outer ring given the current `progress`. float GetOuterRingOpacity(const absl::optional<float>& progress) { - return features::IsHoldingSpaceInProgressAnimationV2Enabled() && - progress != ProgressIndicator::kProgressComplete - ? kOuterRingOpacity - : 1.f; + return progress != ProgressIndicator::kProgressComplete ? kOuterRingOpacity + : 1.f; } // Returns the stroke width for the outer ring given `layer` dimensions and // the current `progress`. float GetOuterRingStrokeWidth(const ui::Layer* layer, const absl::optional<float>& progress) { - if (features::IsHoldingSpaceInProgressAnimationV2Enabled() && - progress != ProgressIndicator::kProgressComplete) { + if (progress != ProgressIndicator::kProgressComplete) { const gfx::Size& size = layer->size(); return kOuterRingStrokeWidthScaleFactor * std::min(size.width(), size.height()); @@ -133,13 +127,6 @@ return kOuterRingStrokeWidth; } -// Returns the stroke cap. -cc::PaintFlags::Cap GetStrokeCap() { - return features::IsHoldingSpaceInProgressAnimationV2Enabled() - ? cc::PaintFlags::Cap::kDefault_Cap - : cc::PaintFlags::Cap::kRound_Cap; -} - // DefaultProgressIndicatorAnimationRegistry ----------------------------------- // A default implementation of `ProgressIndicatorAnimationRegistry` which is @@ -211,13 +198,8 @@ weak_ptr_factory_.GetWeakPtr(), animation)); } - // Ensures that a progress icon animation exists and is started. NOTE: This - // method no-ops if in-progress animation v2 is disabled since in such cases - // there is no progress icon to animate. + // Ensures that a progress icon animation exists and is started. void EnsureProgressIconAnimation() { - if (!features::IsHoldingSpaceInProgressAnimationV2Enabled()) - return; - if (!GetProgressIconAnimationForKey(progress_indicator_)) { SetProgressIconAnimationForKey(progress_indicator_, std::make_unique<ProgressIconAnimation>()) @@ -462,20 +444,13 @@ cc::PaintFlags flags; flags.setAntiAlias(true); - flags.setStrokeCap(GetStrokeCap()); + flags.setStrokeCap(cc::PaintFlags::Cap::kDefault_Cap); flags.setStrokeWidth(outer_ring_stroke_width); flags.setStyle(cc::PaintFlags::Style::kStroke_Style); const SkColor color = AshColorProvider::Get()->GetControlsLayerColor( AshColorProvider::ControlsLayerType::kFocusRingColor); - // Outer ring track. - if (!features::IsHoldingSpaceInProgressAnimationV2Enabled()) { - flags.setColor(SkColorSetA( - color, SK_AlphaOPAQUE * kOuterRingTrackOpacity * outer_ring_opacity)); - canvas->DrawPath(path, flags); - } - // Outer ring. flags.setColor(SkColorSetA( color, @@ -491,10 +466,6 @@ canvas->DrawPath(CreatePathSegment(path, 0.f, end), flags); } - // The inner ring and inner icon are only present in v2. - if (!features::IsHoldingSpaceInProgressAnimationV2Enabled()) - return; - // The inner ring and inner icon should be absent once progress completes. // This would occur if the progress ring is animating post completion. if (progress_ == kProgressComplete)
diff --git a/ash/system/progress_indicator/progress_indicator_animation_registry_unittest.cc b/ash/system/progress_indicator/progress_indicator_animation_registry_unittest.cc index 31774463..59ed9db 100644 --- a/ash/system/progress_indicator/progress_indicator_animation_registry_unittest.cc +++ b/ash/system/progress_indicator/progress_indicator_animation_registry_unittest.cc
@@ -21,38 +21,21 @@ // ProgressIndicatorAnimationRegistryTest -------------------------------------- -// Base class for tests of the `ProgressIndicatorAnimationRegistry` -// parameterized by whether animation v2 is enabled. -class ProgressIndicatorAnimationRegistryTest - : public testing::Test, - public testing::WithParamInterface< - /*animation_v2_enabled=*/bool> { +// Base class for tests of the `ProgressIndicatorAnimationRegistry`. +class ProgressIndicatorAnimationRegistryTest : public testing::Test { public: - ProgressIndicatorAnimationRegistryTest() { - scoped_feature_list_.InitWithFeatureState( - features::kHoldingSpaceInProgressAnimationV2, IsAnimationV2Enabled()); - } - - // Returns whether animation v2 is enabled given test parameterization. - bool IsAnimationV2Enabled() const { return GetParam(); } - // Returns the `registry_` under test. ProgressIndicatorAnimationRegistry* registry() { return ®istry_; } private: - base::test::ScopedFeatureList scoped_feature_list_; ProgressIndicatorAnimationRegistry registry_; }; -INSTANTIATE_TEST_SUITE_P(All, - ProgressIndicatorAnimationRegistryTest, - /*in_progress_animation_v2_enabled=*/testing::Bool()); - } // namespace // Tests ----------------------------------------------------------------------- -TEST_P(ProgressIndicatorAnimationRegistryTest, EraseAllAnimations) { +TEST_F(ProgressIndicatorAnimationRegistryTest, EraseAllAnimations) { // Create `master_keys` for progress animations which may be referenced from // each test case. std::vector<size_t> master_keys = {1u, 2u, 3u, 4u, 5u, 6u, 7u, 8u, 9u}; @@ -170,7 +153,7 @@ } } -TEST_P(ProgressIndicatorAnimationRegistryTest, SetProgressIconAnimationForKey) { +TEST_F(ProgressIndicatorAnimationRegistryTest, SetProgressIconAnimationForKey) { // Create `key` and verify no progress icon animation is set. size_t key = 0u; EXPECT_FALSE(registry()->GetProgressIconAnimationForKey(&key)); @@ -203,7 +186,7 @@ EXPECT_EQ(callback_call_count, 2u); } -TEST_P(ProgressIndicatorAnimationRegistryTest, SetProgressRingAnimationForKey) { +TEST_F(ProgressIndicatorAnimationRegistryTest, SetProgressRingAnimationForKey) { // Create `key` and verify no progress ring animation is set. size_t key = 0u; EXPECT_FALSE(registry()->GetProgressRingAnimationForKey(&key));
diff --git a/ash/system/status_area_widget.h b/ash/system/status_area_widget.h index e8722bb..5b6be5b 100644 --- a/ash/system/status_area_widget.h +++ b/ash/system/status_area_widget.h
@@ -228,7 +228,7 @@ // current conditions. CollapseState CalculateCollapseState() const; - StatusAreaWidgetDelegate* status_area_widget_delegate_; + StatusAreaWidgetDelegate* const status_area_widget_delegate_; StatusAreaOverflowButtonTray* overflow_button_tray_ = nullptr; OverviewButtonTray* overview_button_tray_ = nullptr;
diff --git a/ash/webui/personalization_app/resources/common/utils.ts b/ash/webui/personalization_app/resources/common/utils.ts index e605876e..bca8235 100644 --- a/ash/webui/personalization_app/resources/common/utils.ts +++ b/ash/webui/personalization_app/resources/common/utils.ts
@@ -124,6 +124,20 @@ } /** + * Returns the attribution list from local storage. + * Such as attribution (image title, author...) of a downloaded image. + */ +export function getLocalStorageAttribution(key: string): string[] { + const attributionMap = + JSON.parse((window.localStorage['attribution'] || '{}')); + const attribution = attributionMap[key]; + if (!attribution) { + console.warn('Unable to get attribution from local storage.', key); + } + return attribution; +} + +/** * Normalizes the given |key| for RTL. */ export function normalizeKeyForRTL(key: string, isRTL: boolean): string {
diff --git a/ash/webui/personalization_app/resources/trusted/ambient/ambient_preview_element.html b/ash/webui/personalization_app/resources/trusted/ambient/ambient_preview_element.html index 6ec2b73..ffb0e3f0 100644 --- a/ash/webui/personalization_app/resources/trusted/ambient/ambient_preview_element.html +++ b/ash/webui/personalization_app/resources/trusted/ambient/ambient_preview_element.html
@@ -200,35 +200,38 @@ <!-- TODO(b/226235802) - Add failed/error state when no previewAlbums available. Currently, we show blank containers --> <template is="dom-if" if="[[previewAlbums_]]"> - <div id="imageContainer" class="preview-image-container" aria-hidden="true"> + <div id="imageContainer" class="preview-image-container"> <template is="dom-if" if="[[clickable]]"> <img class="preview-image clickable" is="cr-auto-img" on-click="onClickPreviewImage_" on-keypress="onClickPreviewImage_" auto-src="[[getPreviewImage_(firstPreviewAlbum_)]]" + alt$="[[getAlbumTitle_(firstPreviewAlbum_)]]" is-google-photos> </template> <template is="dom-if" if="[[!clickable]]"> <img class="preview-image" is="cr-auto-img" auto-src="[[getPreviewImage_(firstPreviewAlbum_)]]" + alt$="[[getAlbumTitle_(firstPreviewAlbum_)]]" is-google-photos> </template> </div> - <h2 id="textContainer" class="preview-text-container album-info-mainpage album-info-subpage"> + <h2 id="textContainer" class="preview-text-container album-info-mainpage album-info-subpage" + aria-label$="[[getPreviewTextAriaLabel_(firstPreviewAlbum_, topicSource_, previewAlbums_)]]"> <span id="currentlySet" class="currently-set-text" aria-hidden="true"> $i18n{currentlySet} </span> <span id="albumTitle" aria-hidden="true"> [[getAlbumTitle_(firstPreviewAlbum_)]] </span> - <paper-tooltip id="albumTitleTooltip" for="albumTitle"> + <paper-tooltip id="albumTitleTooltip" for="albumTitle" aria-hidden="true"> <span>[[getAlbumTitle_(firstPreviewAlbum_)]]</span> </paper-tooltip> <span id="albumDescription" aria-hidden="true"> [[getAlbumDescription_(topicSource_, previewAlbums_)]] </span> </h2> - <div id="collageContainer" class$="[[getCollageContainerClass_(collageImages_)]]"> + <div id="collageContainer" class$="[[getCollageContainerClass_(collageImages_)]]" aria-hidden="true"> <template is="dom-repeat" items="[[collageImages_]]"> <img class="collage-item" is="cr-auto-img" auto-src="[[item.url]]" is-google-photos>
diff --git a/ash/webui/personalization_app/resources/trusted/ambient/ambient_preview_element.ts b/ash/webui/personalization_app/resources/trusted/ambient/ambient_preview_element.ts index dfa9c20..e07c4f3 100644 --- a/ash/webui/personalization_app/resources/trusted/ambient/ambient_preview_element.ts +++ b/ash/webui/personalization_app/resources/trusted/ambient/ambient_preview_element.ts
@@ -193,6 +193,11 @@ ''; } + private getPreviewTextAriaLabel_(): string { + return `${this.i18n('currentlySet')} ${this.getAlbumTitle_()} ${ + this.getAlbumDescription_()}`; + } + private getAlbumTitle_(): string { return this.firstPreviewAlbum_ ? this.firstPreviewAlbum_.title : ''; }
diff --git a/ash/webui/personalization_app/resources/trusted/wallpaper/wallpaper_preview_element.html b/ash/webui/personalization_app/resources/trusted/wallpaper/wallpaper_preview_element.html index 82806b1..d8d6f5d 100644 --- a/ash/webui/personalization_app/resources/trusted/wallpaper/wallpaper_preview_element.html +++ b/ash/webui/personalization_app/resources/trusted/wallpaper/wallpaper_preview_element.html
@@ -70,7 +70,7 @@ <template is="dom-if" if="[[showImage_]]"> <div id="imageContainer" class="photo-images-container clickable" on-click="onClickWallpaper_" on-keypress="onClickWallpaper_"> - <img src$="[[getImageSrc_(image_)]]" aria-hidden="true"> + <img src$="[[getImageSrc_(image_)]]" alt$="[[getImageAltDescription_(image_)]]"> <div id="shelf"></div> </div> </template>
diff --git a/ash/webui/personalization_app/resources/trusted/wallpaper/wallpaper_preview_element.ts b/ash/webui/personalization_app/resources/trusted/wallpaper/wallpaper_preview_element.ts index 29ee8ce..4bbe8dd 100644 --- a/ash/webui/personalization_app/resources/trusted/wallpaper/wallpaper_preview_element.ts +++ b/ash/webui/personalization_app/resources/trusted/wallpaper/wallpaper_preview_element.ts
@@ -14,7 +14,8 @@ import './styles.js'; import '../cros_button_style.js'; -import {CurrentWallpaper, WallpaperProviderInterface} from '../personalization_app.mojom-webui.js'; +import {getLocalStorageAttribution, isNonEmptyArray} from '../../common/utils.js'; +import {CurrentWallpaper, WallpaperProviderInterface, WallpaperType} from '../personalization_app.mojom-webui.js'; import {Paths, PersonalizationRouter} from '../personalization_router_element.js'; import {WithPersonalizationStore} from '../personalization_store.js'; import {hasHttpScheme, removeHighResolutionSuffix} from '../utils.js'; @@ -88,6 +89,26 @@ return ''; } + private getImageAltDescription_(image: CurrentWallpaper|null): string { + if (!image) { + return `${this.i18n('currentlySet')} ${ + this.i18n('unknownImageAttribution')}`; + } + if (image.type === WallpaperType.kDefault) { + return `${this.i18n('currentlySet')} ${this.i18n('defaultWallpaper')}`; + } + if (isNonEmptyArray(image.attribution)) { + return [this.i18n('currentlySet'), ...image.attribution].join(' '); + } + // Fallback to cached attribution. + const attribution = getLocalStorageAttribution(image.key); + if (isNonEmptyArray(attribution)) { + return [this.i18n('currentlySet'), ...attribution].join(' '); + } + return `${this.i18n('currentlySet')} ${ + this.i18n('unknownImageAttribution')}`; + } + private computeShowImage_(image: CurrentWallpaper|null, loading: boolean): boolean { // Specifically check === false to avoid undefined case while component is
diff --git a/ash/webui/personalization_app/resources/trusted/wallpaper/wallpaper_selected_element.ts b/ash/webui/personalization_app/resources/trusted/wallpaper/wallpaper_selected_element.ts index ed152c3..308c728 100644 --- a/ash/webui/personalization_app/resources/trusted/wallpaper/wallpaper_selected_element.ts +++ b/ash/webui/personalization_app/resources/trusted/wallpaper/wallpaper_selected_element.ts
@@ -15,7 +15,7 @@ import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js'; -import {isNonEmptyArray} from '../../common/utils.js'; +import {getLocalStorageAttribution, isNonEmptyArray} from '../../common/utils.js'; import {CurrentWallpaper, WallpaperLayout, WallpaperProviderInterface, WallpaperType} from '../personalization_app.mojom-webui.js'; import {Paths} from '../personalization_router_element.js'; import {WithPersonalizationStore} from '../personalization_store.js'; @@ -207,7 +207,7 @@ title; } else { // Fallback to cached attribution. - const attribution = this.getLocalStorageAttribution(image.key); + const attribution = getLocalStorageAttribution(image.key); if (isNonEmptyArray(attribution)) { const title = attribution[0]; return dailyRefreshCollectionId ? @@ -227,7 +227,7 @@ return image.attribution.slice(1); } // Fallback to cached attribution. - const attribution = this.getLocalStorageAttribution(image.key); + const attribution = getLocalStorageAttribution(image.key); if (isNonEmptyArray(attribution)) { return attribution.slice(1); } @@ -353,7 +353,7 @@ [this.i18n('currentlySet'), ...image.attribution].join(' '); } // Fallback to cached attribution. - const attribution = this.getLocalStorageAttribution(image.key); + const attribution = getLocalStorageAttribution(image.key); if (isNonEmptyArray(attribution)) { return dailyRefreshCollectionId ? [ @@ -393,16 +393,6 @@ } } - getLocalStorageAttribution(key: string): string[] { - const attributionMap = - JSON.parse((window.localStorage['attribution'] || '{}')); - const attribution = attributionMap[key]; - if (!attribution) { - console.warn('Unable to get attribution from local storage.', key); - } - return attribution; - } - /** * Return a container class depending on loading state. */
diff --git a/ash/webui/shimless_rma/resources/calibration_component_chip.html b/ash/webui/shimless_rma/resources/calibration_component_chip.html index ad04f133..ad4fce0 100644 --- a/ash/webui/shimless_rma/resources/calibration_component_chip.html +++ b/ash/webui/shimless_rma/resources/calibration_component_chip.html
@@ -12,10 +12,6 @@ opacity: 0.38; } - :host([disabled]) #componentName { - color: var(--cros-text-color-disabled); - } - #componentButton { --vertical-padding: 24px; border-radius: 8px; @@ -30,8 +26,11 @@ width: 100%; } + #componentName { + color: var(--google-blue-600); + } + #labelDiv { - color: var(--shimless-component-text-color); flex-basis: 155px; inset-inline-start: 0; padding-inline-start: 24px; @@ -47,7 +46,7 @@ } #infoIcon { - fill: var(--cros-icon-color-alert); + fill: var(--google-blue-600); margin-inline-end: 5px; }
diff --git a/ash/webui/shimless_rma/resources/onboarding_choose_wipe_device_page.html b/ash/webui/shimless_rma/resources/onboarding_choose_wipe_device_page.html index 3f72e08..e565f47 100644 --- a/ash/webui/shimless_rma/resources/onboarding_choose_wipe_device_page.html +++ b/ash/webui/shimless_rma/resources/onboarding_choose_wipe_device_page.html
@@ -17,9 +17,6 @@ aria-label="[[i18n('wipeDevicePreserveDataLabel')]]"> [[i18n('wipeDevicePreserveDataLabel')]] </cr-radio-button> - <div class="indented-description"> - [[i18n('wipeDevicePreserveDataDescription')]] - </div> </cr-radio-group> </div> </base-page>
diff --git a/ash/webui/shimless_rma/shimless_rma.cc b/ash/webui/shimless_rma/shimless_rma.cc index 6c3bc9b..0d6500c 100644 --- a/ash/webui/shimless_rma/shimless_rma.cc +++ b/ash/webui/shimless_rma/shimless_rma.cc
@@ -314,8 +314,6 @@ IDS_SHIMLESS_RMA_WIPE_DEVICE_REMOVE_DATA_OPTION_DESCRIPTION}, {"wipeDevicePreserveDataLabel", IDS_SHIMLESS_RMA_WIPE_DEVICE_PRESERVE_DATA_OPTION}, - {"wipeDevicePreserveDataDescription", - IDS_SHIMLESS_RMA_WIPE_DEVICE_PRESERVE_DATA_OPTION_DESCRIPTION}, }; html_source->AddLocalizedStrings(kLocalizedStrings);
diff --git a/ash/wm/desks/desk.cc b/ash/wm/desks/desk.cc index 3c0e79e..d647c5f 100644 --- a/ash/wm/desks/desk.cc +++ b/ash/wm/desks/desk.cc
@@ -358,14 +358,6 @@ return base::AutoReset<bool>(&should_notify_content_changed_, false); } -bool Desk::ContainsAppWindows() const { - return std::find_if(windows_.begin(), windows_.end(), - [](aura::Window* window) { - return window->GetProperty(aura::client::kAppType) != - static_cast<int>(AppType::NON_APP); - }) != windows_.end(); -} - void Desk::SetName(std::u16string new_name, bool set_by_user) { // Even if the user focuses the DeskNameView for the first time and hits enter // without changing the desk's name (i.e. |new_name| is the same,
diff --git a/ash/wm/desks/desk.h b/ash/wm/desks/desk.h index 77d149a5..6fd4135 100644 --- a/ash/wm/desks/desk.h +++ b/ash/wm/desks/desk.h
@@ -109,8 +109,6 @@ base::AutoReset<bool> GetScopedNotifyContentChangedDisabler(); - bool ContainsAppWindows() const; - // Sets the desk's name to |new_name| and updates the observers. // |set_by_user| should be true if this name was given to the desk by the user // from its mini view in overview mode.
diff --git a/ash/wm/desks/desk_action_context_menu.cc b/ash/wm/desks/desk_action_context_menu.cc index 81fffa45..2e3c983 100644 --- a/ash/wm/desks/desk_action_context_menu.cc +++ b/ash/wm/desks/desk_action_context_menu.cc
@@ -46,10 +46,6 @@ new_combine_desks_target_name)); } -void DeskActionContextMenu::SetCombineDesksMenuItemVisibility(bool visible) { - context_menu_model_.SetVisibleAt(CommandId::kCombineDesks, visible); -} - void DeskActionContextMenu::ExecuteCommand(int command_id, int event_flags) { switch (command_id) { case CommandId::kCombineDesks:
diff --git a/ash/wm/desks/desk_action_context_menu.h b/ash/wm/desks/desk_action_context_menu.h index cd1703b..5db089b 100644 --- a/ash/wm/desks/desk_action_context_menu.h +++ b/ash/wm/desks/desk_action_context_menu.h
@@ -44,17 +44,11 @@ void UpdateCombineDesksTargetName( const std::u16string& new_combine_desks_target_name); - // Changes the visibility of the combine desks context menu item so that it - // can reflect whether there are windows on the desk. - void SetCombineDesksMenuItemVisibility(bool visible); - // ui::SimpleMenuModel::Delegate: void ExecuteCommand(int command_id, int event_flags) override; void MenuClosed(ui::SimpleMenuModel* menu) override; private: - friend class DesksTestApi; - // views::ContextMenuController: void ShowContextMenuForViewImpl(views::View* source, const gfx::Point& point,
diff --git a/ash/wm/desks/desk_action_view.cc b/ash/wm/desks/desk_action_view.cc index f67a45f2..f7fbe17 100644 --- a/ash/wm/desks/desk_action_view.cc +++ b/ash/wm/desks/desk_action_view.cc
@@ -56,10 +56,6 @@ IDS_ASH_DESKS_COMBINE_DESKS_DESCRIPTION, new_combine_desks_target_name)); } -void DeskActionView::SetCombineDesksButtonVisibility(bool visible) { - combine_desks_button_->SetVisible(visible); -} - BEGIN_METADATA(DeskActionView, views::BoxLayoutView) END_METADATA
diff --git a/ash/wm/desks/desk_action_view.h b/ash/wm/desks/desk_action_view.h index 07fad1d..5522f23 100644 --- a/ash/wm/desks/desk_action_view.h +++ b/ash/wm/desks/desk_action_view.h
@@ -32,10 +32,6 @@ void UpdateCombineDesksTooltip( const std::u16string& new_combine_desks_target_name); - // Changes the visibility of the combine desks button so that it can reflect - // whether there are windows on the desk. - void SetCombineDesksButtonVisibility(bool visible); - private: CloseButton* combine_desks_button_; CloseButton* close_all_button_;
diff --git a/ash/wm/desks/desk_mini_view.cc b/ash/wm/desks/desk_mini_view.cc index 4a72e5d3..d19af3a 100644 --- a/ash/wm/desks/desk_mini_view.cc +++ b/ash/wm/desks/desk_mini_view.cc
@@ -52,15 +52,6 @@ return gfx::Rect(origin, screen_rect.size()); } -// Tells whether `desk` contains an app window itself or if the desk is active -// and at least one visible on all desk window exists. -bool ContainsAppWindows(Desk* desk) { - if (desk->ContainsAppWindows()) - return true; - return desk->is_active() && - !DesksController::Get()->visible_on_all_desks_windows().empty(); -} - } // namespace // ----------------------------------------------------------------------------- @@ -168,28 +159,20 @@ } void DeskMiniView::UpdateDeskButtonVisibility() { - auto* controller = DesksController::Get(); - // Don't show desk buttons when hovered while the dragged window is on // the DesksBarView. // For switch access, setting desk buttons to visible allows users to // navigate to it. const bool visible = - controller->CanRemoveDesks() && !owner_bar_->dragged_item_over_bar() && - !owner_bar_->IsDraggingDesk() && + DesksController::Get()->CanRemoveDesks() && + !owner_bar_->dragged_item_over_bar() && !owner_bar_->IsDraggingDesk() && (IsMouseHovered() || force_show_desk_buttons_ || Shell::Get()->accessibility_controller()->IsSwitchAccessRunning()); - if (features::IsDesksCloseAllEnabled()) { - // Only show the combine desks button if there are app windows in the desk, - // or if the desk is active and there are windows that should be visible on - // all desks. - desk_action_view_->SetCombineDesksButtonVisibility( - ContainsAppWindows(desk_)); + if (features::IsDesksCloseAllEnabled()) desk_action_view_->SetVisible(visible && !is_context_menu_open_); - } else { + else close_desk_button_->SetVisible(visible); - } } void DeskMiniView::OnWidgetGestureTap(const gfx::Rect& screen_rect, @@ -253,11 +236,6 @@ // context menu item label for combining desks here to tell the user where the // windows will go. - // Only show the combine desks context menu option if there are app windows in - // the desk, or if the desk is active and there are windows that should be - // visible on all desks. - context_menu_->SetCombineDesksMenuItemVisibility(ContainsAppWindows(desk_)); - // TODO(crbug.com/1308780): Source will need to be different when opening with // long press and possibly keyboard. context_menu_->ShowContextMenuForView(
diff --git a/ash/wm/desks/desks_controller.cc b/ash/wm/desks/desks_controller.cc index 0d3de064..fdaa673 100644 --- a/ash/wm/desks/desks_controller.cc +++ b/ash/wm/desks/desks_controller.cc
@@ -222,9 +222,7 @@ // confirm its deletion. class DesksController::RemovedDeskData { public: - RemovedDeskData(std::unique_ptr<Desk> desk, - int index, - DesksCreationRemovalSource source) + RemovedDeskData(std::unique_ptr<Desk> desk, int index) : was_active_(desk->is_active()), desk_(std::move(desk)), index_(index) { desk_->set_is_desk_being_removed(true); } @@ -1373,8 +1371,8 @@ } // Keep the removed desk alive until at least the end of this function. - auto temporary_removed_desk = std::make_unique<RemovedDeskData>( - std::move(*iter), removed_desk_index, source); + auto temporary_removed_desk = + std::make_unique<RemovedDeskData>(std::move(*iter), removed_desk_index); auto* temporary_removed_desk_ptr = temporary_removed_desk.get(); Desk* removed_desk = temporary_removed_desk_ptr->desk();
diff --git a/ash/wm/desks/desks_test_api.cc b/ash/wm/desks/desks_test_api.cc index b1a9e65..3916068c 100644 --- a/ash/wm/desks/desks_test_api.cc +++ b/ash/wm/desks/desks_test_api.cc
@@ -8,7 +8,6 @@ #include "ash/shell.h" #include "ash/system/toast/toast_manager_impl.h" #include "ash/wm/desks/desk.h" -#include "ash/wm/desks/desk_action_context_menu.h" #include "ash/wm/desks/desk_mini_view.h" #include "ash/wm/desks/desks_bar_view.h" #include "ash/wm/desks/desks_restore_util.h" @@ -101,11 +100,6 @@ } // static -const ui::SimpleMenuModel& DesksTestApi::GetContextMenuModelForDesk(int index) { - return GetContextMenuForDesk(index)->context_menu_model_; -} - -// static bool DesksTestApi::HasVerticalDotsButton() { return GetDesksBarView()->vertical_dots_button_; }
diff --git a/ash/wm/desks/desks_test_api.h b/ash/wm/desks/desks_test_api.h index 1c90b55b..75eb8ca 100644 --- a/ash/wm/desks/desks_test_api.h +++ b/ash/wm/desks/desks_test_api.h
@@ -15,10 +15,6 @@ class ScrollView; } // namespace views -namespace ui { -class SimpleMenuModel; -} // namespace ui - namespace ash { class Desk; @@ -45,7 +41,6 @@ GetPersistentDesksBarDeskButtons(); static DeskActionContextMenu* GetContextMenuForDesk(int index); static views::LabelButton* GetCloseAllUndoToastDismissButton(); - static const ui::SimpleMenuModel& GetContextMenuModelForDesk(int index); static bool HasVerticalDotsButton(); static bool DesksControllerHasDesk(Desk* desk); static bool DesksControllerCanUndoDeskRemoval();
diff --git a/ash/wm/desks/desks_unittests.cc b/ash/wm/desks/desks_unittests.cc index 01d5dae..6410f05 100644 --- a/ash/wm/desks/desks_unittests.cc +++ b/ash/wm/desks/desks_unittests.cc
@@ -7075,19 +7075,6 @@ /*event_flags=*/0); } - // Opens the context menu for the mini view at `index`. - void OpenContextMenuForMiniView(int index) { - ASSERT_TRUE(Shell::Get()->overview_controller()->InOverviewSession()); - const DeskPreviewView* desk_preview_view = - GetPrimaryRootDesksBarView()->mini_views()[index]->desk_preview(); - const gfx::Point desk_preview_view_center = - desk_preview_view->GetBoundsInScreen().CenterPoint(); - auto* event_generator = GetEventGenerator(); - event_generator->MoveMouseTo(desk_preview_view_center); - event_generator->ClickRightButton(); - ASSERT_TRUE(Shell::Get()->overview_controller()->InOverviewSession()); - } - // DesksTest: void SetUp() override { scoped_feature_list_.InitAndEnableFeature(features::kDesksCloseAll); @@ -7360,50 +7347,6 @@ } } -// Checks that the combine desks button and context menu option are not visible -// when there are no windows on a desk, and that they are visible on desks with -// windows. -TEST_F(DesksCloseAllTest, HideCombineDesksOptionWhenNoWindowsOnDesk) { - // Create a new desk with no windows to have an expanded desks bar view with - // mini views. - NewDesk(); - EnterOverview(); - ASSERT_TRUE(Shell::Get()->overview_controller()->InOverviewSession()); - CloseButton* combine_desks_button = GetPrimaryRootDesksBarView() - ->mini_views()[0] - ->desk_action_view() - ->combine_desks_button(); - - // We need to hover over the desk preview to properly check the combine desks - // button's visibility. - const DeskPreviewView* desk_preview_view = - GetPrimaryRootDesksBarView()->mini_views()[0]->desk_preview(); - const gfx::Point desk_preview_view_center = - desk_preview_view->GetBoundsInScreen().CenterPoint(); - auto* event_generator = GetEventGenerator(); - event_generator->MoveMouseTo(desk_preview_view_center); - EXPECT_FALSE(combine_desks_button->GetVisible()); - - // We need to open the context menu to trigger state change for the combine - // desks option in the context menu. - OpenContextMenuForMiniView(0); - EXPECT_FALSE(DesksTestApi::GetContextMenuModelForDesk(0).IsVisibleAt( - DeskActionContextMenu::CommandId::kCombineDesks)); - GetEventGenerator()->ClickLeftButton(); - - // Add a window and check to see if that makes the context option visible for - // the desk's action view. - auto window = CreateAppWindow(); - DesksController::Get()->SendToDeskAtIndex(window.get(), 0); - EnterOverview(); - ASSERT_TRUE(Shell::Get()->overview_controller()->InOverviewSession()); - event_generator->MoveMouseTo(desk_preview_view_center); - EXPECT_TRUE(combine_desks_button->GetVisible()); - OpenContextMenuForMiniView(0); - EXPECT_TRUE(DesksTestApi::GetContextMenuModelForDesk(0).IsVisibleAt( - DeskActionContextMenu::CommandId::kCombineDesks)); -} - // TODO(crbug.com/1308429): Should have tests for opening and closing the // DeskActionContextMenu (which should also add and remove the highlight // overview on the desk preview).
diff --git a/base/tools_sanity_unittest.cc b/base/tools_sanity_unittest.cc index 8e9d26f..c97bd455 100644 --- a/base/tools_sanity_unittest.cc +++ b/base/tools_sanity_unittest.cc
@@ -20,6 +20,12 @@ #include "build/build_config.h" #include "testing/gtest/include/gtest/gtest.h" +#if BUILDFLAG(IS_WIN) +#include <windows.h> +#else +#include <dlfcn.h> +#endif + namespace base { namespace { @@ -95,6 +101,40 @@ } // namespace +#if defined(ADDRESS_SANITIZER) || defined(LEAK_SANITIZER) || \ + defined(MEMORY_SANITIZER) || defined(THREAD_SANITIZER) || \ + defined(UNDEFINED_SANITIZER) +// build/sanitizers/sanitizer_options.cc defines symbols like +// __asan_default_options which the sanitizer runtime calls if they exist +// in the executable. If they don't, the sanitizer runtime silently uses an +// internal default value instead. The build puts the symbol +// _sanitizer_options_link_helper (which the sanitizer runtime doesn't know +// about, it's a chrome thing) in that file and then tells the linker that +// that symbol must exist. This causes sanitizer_options.cc to be part of +// our binaries, which in turn makes sure our __asan_default_options are used. +// We had problems with __asan_default_options not being used, so this test +// verifies that _sanitizer_options_link_helper actually makes it into our +// binaries. +#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_WIN) +// TODO(https://crbug.com/1322143): Sanitizer options are currently broken +// on Android. +// TODO(https://crbug.com/1321584): __asan_default_options should be used +// on Windows too, but currently isn't. +#define MAYBE_LinksSanitizerOptions DISABLED_LinksSanitizerOptions +#else +#define MAYBE_LinksSanitizerOptions LinksSanitizerOptions +#endif +TEST(ToolsSanityTest, MAYBE_LinksSanitizerOptions) { + constexpr char kSym[] = "_sanitizer_options_link_helper"; +#if BUILDFLAG(IS_WIN) + auto sym = GetProcAddress(GetModuleHandle(nullptr), kSym); +#else + void* sym = dlsym(RTLD_DEFAULT, kSym); +#endif + EXPECT_TRUE(sym != nullptr); +} +#endif // sanitizers + // A memory leak detector should report an error in this test. TEST(ToolsSanityTest, MemoryLeak) { // Without the |volatile|, clang optimizes away the next two lines.
diff --git a/build/android/gyp/optimize_resources.pydeps b/build/android/gyp/optimize_resources.pydeps index e69de29..57a99b8 100644 --- a/build/android/gyp/optimize_resources.pydeps +++ b/build/android/gyp/optimize_resources.pydeps
@@ -0,0 +1,6 @@ +# Generated by running: +# build/print_python_deps.py --root build/android/gyp --output build/android/gyp/optimize_resources.pydeps build/android/gyp/optimize_resources.py +../../gn_helpers.py +optimize_resources.py +util/__init__.py +util/build_utils.py
diff --git a/build/lacros/test_runner.py b/build/lacros/test_runner.py index 7e8c1cb..1df80a1 100755 --- a/build/lacros/test_runner.py +++ b/build/lacros/test_runner.py
@@ -432,7 +432,7 @@ '--user-data-dir=%s' % tmp_ash_data_dir_name, '--enable-wayland-server', '--no-startup-window', - '--enable-features=LacrosSupport,LacrosPrimary', + '--enable-features=LacrosSupport,LacrosPrimary,LacrosOnly', '--ash-ready-file-path=%s' % ash_ready_file, ] if enable_mojo_crosapi:
diff --git a/build/lacros/test_runner_test.py b/build/lacros/test_runner_test.py index 93b4901..35e23cc 100755 --- a/build/lacros/test_runner_test.py +++ b/build/lacros/test_runner_test.py
@@ -80,7 +80,7 @@ expected_ash_chrome_args = [ '--user-data-dir=/tmp/ash-data', '--enable-wayland-server', '--no-startup-window', - '--enable-features=LacrosSupport,LacrosPrimary', + '--enable-features=LacrosSupport,LacrosPrimary,LacrosOnly', '--ash-ready-file-path=/tmp/ash-data/ash_ready.txt' ] if command == 'lacros_chrome_browsertests':
diff --git a/build/sanitizers/sanitizer_options.cc b/build/sanitizers/sanitizer_options.cc index 13e6811..d5eddee 100644 --- a/build/sanitizers/sanitizer_options.cc +++ b/build/sanitizers/sanitizer_options.cc
@@ -10,13 +10,6 @@ #if defined(ADDRESS_SANITIZER) || defined(LEAK_SANITIZER) || \ defined(MEMORY_SANITIZER) || defined(THREAD_SANITIZER) || \ defined(UNDEFINED_SANITIZER) -// Functions returning default options are declared weak in the tools' runtime -// libraries. To make the linker pick the strong replacements for those -// functions from this module, we explicitly force its inclusion by passing -// -Wl,-u_sanitizer_options_link_helper -extern "C" -void _sanitizer_options_link_helper() { } - // The callbacks we define here will be called from the sanitizer runtime, but // aren't referenced from the Chrome executable. We must ensure that those // callbacks are not sanitizer-instrumented, and that they aren't stripped by @@ -26,6 +19,14 @@ __attribute__((no_sanitize("address", "memory", "thread", "undefined"))) \ __attribute__((visibility("default"))) \ __attribute__((used)) + +// Functions returning default options are declared weak in the tools' runtime +// libraries. To make the linker pick the strong replacements for those +// functions from this module, we explicitly force its inclusion by passing +// -Wl,-u_sanitizer_options_link_helper +// SANITIZER_HOOK_ATTRIBUTE instead of just `extern "C"` solely to make the +// symbol externally visible, for ToolsSanityTest.LinksSanitizerOptions. +SANITIZER_HOOK_ATTRIBUTE void _sanitizer_options_link_helper() {} #endif #if defined(ADDRESS_SANITIZER)
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/browsing_data/BrowsingDataTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/browsing_data/BrowsingDataTest.java index 2a8fb65..e7c70bf 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/browsing_data/BrowsingDataTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/browsing_data/BrowsingDataTest.java
@@ -114,8 +114,9 @@ @SmallTest public void testSiteDataDeleted() throws Exception { // TODO(dullweber): Investigate, why WebSql fails this test. + // TODO(crbug.com/1218100): Investigate why IndexedDB fails this test. List<String> siteData = Arrays.asList("LocalStorage", "ServiceWorker", "CacheStorage", - "IndexedDb", "FileSystem" /*, "WebSql"*/); + /*"IndexedDb",*/ "FileSystem" /*, "WebSql"*/); sActivityTestRule.loadUrl(mUrl); for (String type : siteData) {
diff --git a/chrome/app/chromeos_strings.grdp b/chrome/app/chromeos_strings.grdp index 7319fefb6..fe3d421 100644 --- a/chrome/app/chromeos_strings.grdp +++ b/chrome/app/chromeos_strings.grdp
@@ -525,9 +525,6 @@ <message name="IDS_NETWORK_ADD_WI_FI_LIST_ITEM_NAME" desc="OOBE network screen list entry that opens 'Add New WiFi Network' dialog"> Add other WiFi network </message> - <message name="IDS_NETWORK_OFFLINE_DEMO_SETUP_LIST_ITEM_NAME" desc="OOBE network screen list entry that starts offline demo mode setup"> - Offline demo mode - </message> <message name="IDS_AUTOSTART_WARNING_TITLE" desc="Title of the kiosk autostart screen"> Auto-launch permission requested </message>
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn index a1da906f..cb28e691 100644 --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn
@@ -7683,7 +7683,6 @@ "//chrome/browser/media:mojo_bindings_js", "//chrome/browser/resources/internals/user_education:components", "//chrome/browser/resources/local_state:build", - "//chrome/browser/resources/media:build_ts", "//chrome/browser/resources/predictors:build_ts", "//chrome/browser/ui/webui/internals/user_education:mojo_bindings_js", "//components/site_engagement/core/mojom:mojo_bindings_webui_js",
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc index 360a385..7699dcf3 100644 --- a/chrome/browser/about_flags.cc +++ b/chrome/browser/about_flags.cc
@@ -4497,6 +4497,10 @@ {"feed-v2-hearts", flag_descriptions::kInterestFeedV2HeartsName, flag_descriptions::kInterestFeedV2HeartsDescription, kOsAndroid, FEATURE_VALUE_TYPE(feed::kInterestFeedV2Hearts)}, + {"info-card-acknowledgement-tracking", + flag_descriptions::kInfoCardAcknowledgementTrackingName, + flag_descriptions::kInfoCardAcknowledgementTrackingDescription, kOsAndroid, + FEATURE_VALUE_TYPE(feed::kInfoCardAcknowledgementTracking)}, {"feed-v2-autoplay", flag_descriptions::kInterestFeedV2AutoplayName, flag_descriptions::kInterestFeedV2AutoplayDescription, kOsAndroid, FEATURE_VALUE_TYPE(feed::kInterestFeedV2Autoplay)}, @@ -6240,6 +6244,11 @@ flag_descriptions::kDisplayAlignmentAssistanceDescription, kOsCrOS, FEATURE_VALUE_TYPE(ash::features::kDisplayAlignAssist)}, + {"enable-experimental-rgb-keyboard-patterns", + flag_descriptions::kExperimentalRgbKeyboardPatternsName, + flag_descriptions::kExperimentalRgbKeyboardPatternsDescription, kOsCrOS, + FEATURE_VALUE_TYPE(ash::features::kExperimentalRgbKeyboardPatterns)}, + {"enable-hostname-setting", flag_descriptions::kEnableHostnameSettingName, flag_descriptions::kEnableHostnameSettingDescription, kOsCrOS, FEATURE_VALUE_TYPE(chromeos::features::kEnableHostnameSetting)}, @@ -6733,6 +6742,7 @@ flag_descriptions::kAutofillEnableVirtualCardName, flag_descriptions::kAutofillEnableVirtualCardDescription, kOsDesktop, FEATURE_VALUE_TYPE(autofill::features::kAutofillEnableVirtualCard)}, + #if BUILDFLAG(IS_ANDROID) {"autofill-enable-manual-fallback-for-virtual-cards", flag_descriptions::kAutofillEnableManualFallbackForVirtualCardsName, @@ -7923,13 +7933,6 @@ FEATURE_VALUE_TYPE(features::kWin10TabSearchCaptionButton)}, #endif // BUILDFLAG(IS_WIN) -#if BUILDFLAG(IS_CHROMEOS_ASH) - {"enable-holding-space-in-progress-animation-v2", - flag_descriptions::kHoldingSpaceInProgressAnimationV2Name, - flag_descriptions::kHoldingSpaceInProgressAnimationV2Description, kOsCrOS, - FEATURE_VALUE_TYPE(ash::features::kHoldingSpaceInProgressAnimationV2)}, -#endif - {"omnibox-updated-connection-security-indicators", flag_descriptions::kOmniboxUpdatedConnectionSecurityIndicatorsName, flag_descriptions::kOmniboxUpdatedConnectionSecurityIndicatorsDescription, @@ -8522,6 +8525,11 @@ FEATURE_VALUE_TYPE(chrome::android::kBulkTabRestore)}, #endif // BUILDFLAG(IS_ANDROID) + {"autofill-enable-upstream-save-card-offer-ui-experiment", + flag_descriptions::kAutofillSaveCardUiExperimentName, + flag_descriptions::kAutofillSaveCardUiExperimentDescription, kOsDesktop, + FEATURE_VALUE_TYPE(autofill::features::kAutofillSaveCardUiExperiment)}, + // NOTE: Adding a new flag requires adding a corresponding entry to enum // "LoginCustomFlags" in tools/metrics/histograms/enums.xml. See "Flag // Histograms" in tools/metrics/histograms/README.md (run the
diff --git a/chrome/browser/ash/arc/arc_util.cc b/chrome/browser/ash/arc/arc_util.cc index adb1fa97..7bb9a3d 100644 --- a/chrome/browser/ash/arc/arc_util.cc +++ b/chrome/browser/ash/arc/arc_util.cc
@@ -600,10 +600,7 @@ if (!ash::DemoSession::IsDeviceInDemoMode()) return false; - // TODO(b/154290639): Remove check for |IsDemoModeOfflineEnrolled| when fixed - // in Play Store. - return !ash::DemoSession::IsDemoModeOfflineEnrolled() && - chromeos::features::ShouldShowPlayStoreInDemoMode(); + return chromeos::features::ShouldShowPlayStoreInDemoMode(); } bool ShouldStartArcSilentlyForManagedProfile(const Profile* profile) { @@ -674,8 +671,7 @@ if (IsRobotOrOfflineDemoAccountMode()) { auto* demo_session = ash::DemoSession::Get(); if (demo_session && demo_session->started()) { - return demo_session->offline_enrolled() ? base_name + ".OfflineDemoMode" - : base_name + ".DemoMode"; + return base_name + ".DemoMode"; } return base_name + ".RobotAccount"; }
diff --git a/chrome/browser/ash/arc/arc_util_unittest.cc b/chrome/browser/ash/arc/arc_util_unittest.cc index 764180d..1b77414f 100644 --- a/chrome/browser/ash/arc/arc_util_unittest.cc +++ b/chrome/browser/ash/arc/arc_util_unittest.cc
@@ -695,18 +695,6 @@ EXPECT_TRUE(IsPlayStoreAvailable()); } -// TODO(b/154290639): We disable Play Store if device is offline enrolled. -TEST_F(ChromeArcUtilTest, ArcStartModeDefaultOfflineDemoMode) { - auto* command_line = base::CommandLine::ForCurrentProcess(); - command_line->InitFromArgv({"", "--arc-availability=installed"}); - ash::DemoSession::SetDemoConfigForTesting( - ash::DemoSession::DemoModeConfig::kOffline); - ScopedLogIn login(GetFakeUserManager(), - AccountId::FromUserEmail("public_user@gmail.com"), - user_manager::USER_TYPE_PUBLIC_ACCOUNT); - EXPECT_FALSE(IsPlayStoreAvailable()); -} - TEST_F(ChromeArcUtilTest, ArcStartModeDefaultDemoModeWithoutPlayStore) { base::test::ScopedFeatureList feature_list; feature_list.InitWithFeatureState(chromeos::features::kShowPlayInDemoMode,
diff --git a/chrome/browser/ash/arc/auth/arc_auth_service.cc b/chrome/browser/ash/arc/auth/arc_auth_service.cc index 904de28e..b2c6dfc 100644 --- a/chrome/browser/ash/arc/auth/arc_auth_service.cc +++ b/chrome/browser/ash/arc/auth/arc_auth_service.cc
@@ -95,9 +95,7 @@ // a (fake) robot account not known to auth service - this means that it has // to go through different, offline provisioning flow. DCHECK(IsRobotOrOfflineDemoAccountMode()); - return demo_session->offline_enrolled() - ? mojom::ChromeAccountType::OFFLINE_DEMO_ACCOUNT - : mojom::ChromeAccountType::ROBOT_ACCOUNT; + return mojom::ChromeAccountType::ROBOT_ACCOUNT; } return IsRobotOrOfflineDemoAccountMode()
diff --git a/chrome/browser/ash/arc/auth/arc_auth_service_browsertest.cc b/chrome/browser/ash/arc/auth/arc_auth_service_browsertest.cc index 45eb3c9..3fdf42f0 100644 --- a/chrome/browser/ash/arc/auth/arc_auth_service_browsertest.cc +++ b/chrome/browser/ash/arc/auth/arc_auth_service_browsertest.cc
@@ -615,19 +615,6 @@ EXPECT_EQ(mojom::ChromeAccountType::ROBOT_ACCOUNT, primary_account.second); } -IN_PROC_BROWSER_TEST_P(ArcAuthServiceTest, - GetPrimaryAccountForOfflineDemoAccounts) { - ash::DemoSession::SetDemoConfigForTesting( - ash::DemoSession::DemoModeConfig::kOffline); - ash::DemoSession::StartIfInDemoMode(); - SetAccountAndProfile(user_manager::USER_TYPE_PUBLIC_ACCOUNT); - const std::pair<std::string, mojom::ChromeAccountType> - primary_account = RequestPrimaryAccount(); - EXPECT_EQ(std::string(), primary_account.first); - EXPECT_EQ(mojom::ChromeAccountType::OFFLINE_DEMO_ACCOUNT, - primary_account.second); -} - // Tests that when ARC requests account info for a non-managed account, // Chrome supplies the info configured in SetAccountAndProfile() method. IN_PROC_BROWSER_TEST_P(ArcAuthServiceTest, SuccessfulBackgroundFetch) { @@ -1206,26 +1193,6 @@ EXPECT_FALSE(auth_instance().account_info()->is_managed); } -IN_PROC_BROWSER_TEST_P(ArcRobotAccountAuthServiceTest, GetOfflineDemoAccount) { - ash::DemoSession::SetDemoConfigForTesting( - ash::DemoSession::DemoModeConfig::kOffline); - ash::DemoSession::StartIfInDemoMode(); - - SetAccountAndProfile(user_manager::USER_TYPE_PUBLIC_ACCOUNT); - - base::RunLoop run_loop; - auth_instance().RequestPrimaryAccountInfo(run_loop.QuitClosure()); - run_loop.Run(); - - ASSERT_TRUE(auth_instance().account_info()); - EXPECT_TRUE(auth_instance().account_info()->account_name.value().empty()); - EXPECT_TRUE(auth_instance().account_info()->auth_code.value().empty()); - EXPECT_EQ(mojom::ChromeAccountType::OFFLINE_DEMO_ACCOUNT, - auth_instance().account_info()->account_type); - EXPECT_FALSE(auth_instance().account_info()->enrollment_token); - EXPECT_TRUE(auth_instance().account_info()->is_managed); -} - IN_PROC_BROWSER_TEST_P(ArcRobotAccountAuthServiceTest, GetDemoAccountOnAuthTokenFetchFailure) { ash::DemoSession::SetDemoConfigForTesting(
diff --git a/chrome/browser/ash/arc/session/arc_demo_mode_preference_handler.cc b/chrome/browser/ash/arc/session/arc_demo_mode_preference_handler.cc index b637cf9a4..aa8ab90 100644 --- a/chrome/browser/ash/arc/session/arc_demo_mode_preference_handler.cc +++ b/chrome/browser/ash/arc/session/arc_demo_mode_preference_handler.cc
@@ -52,9 +52,9 @@ pref_service_->GetInteger(prefs::kDemoModeConfig)); switch (config) { case ash::DemoSession::DemoModeConfig::kNone: + case ash::DemoSession::DemoModeConfig::kOfflineDeprecated: return; case ash::DemoSession::DemoModeConfig::kOnline: - case ash::DemoSession::DemoModeConfig::kOffline: break; }
diff --git a/chrome/browser/ash/arc/session/arc_demo_mode_preference_handler_unittest.cc b/chrome/browser/ash/arc/session/arc_demo_mode_preference_handler_unittest.cc index c639cc683..4d2d3987 100644 --- a/chrome/browser/ash/arc/session/arc_demo_mode_preference_handler_unittest.cc +++ b/chrome/browser/ash/arc/session/arc_demo_mode_preference_handler_unittest.cc
@@ -77,17 +77,6 @@ EXPECT_FALSE(handler_was_called()); } -TEST_F(ArcDemoModePreferenceHandlerTest, DemoPrefOffline) { - SetArcVmEnabled(); - EXPECT_FALSE(handler_was_called()); - - pref_service()->SetInteger( - prefs::kDemoModeConfig, - static_cast<int>(ash::DemoSession::DemoModeConfig::kOffline)); - - EXPECT_TRUE(handler_was_called()); -} - TEST_F(ArcDemoModePreferenceHandlerTest, DemoPrefNone) { SetArcVmEnabled(); EXPECT_FALSE(handler_was_called());
diff --git a/chrome/browser/ash/arc/tracing/arc_graphics_jank_detector.cc b/chrome/browser/ash/arc/tracing/arc_graphics_jank_detector.cc index f57984e..e3f7147 100644 --- a/chrome/browser/ash/arc/tracing/arc_graphics_jank_detector.cc +++ b/chrome/browser/ash/arc/tracing/arc_graphics_jank_detector.cc
@@ -4,6 +4,8 @@ #include "chrome/browser/ash/arc/tracing/arc_graphics_jank_detector.h" +#include <algorithm> + namespace arc { // static
diff --git a/chrome/browser/ash/crostini/ansible/ansible_management_service.cc b/chrome/browser/ash/crostini/ansible/ansible_management_service.cc index 0866b25..8273db3 100644 --- a/chrome/browser/ash/crostini/ansible/ansible_management_service.cc +++ b/chrome/browser/ash/crostini/ansible/ansible_management_service.cc
@@ -59,6 +59,7 @@ LOG(ERROR) << "Attempting to configure a container which is already being " "configured"; std::move(callback).Run(false); + return; } if (container_id == ContainerId::GetDefault() && !ShouldConfigureDefaultContainer(profile_)) {
diff --git a/chrome/browser/ash/file_manager/copy_or_move_io_task.cc b/chrome/browser/ash/file_manager/copy_or_move_io_task.cc index 45ab5fd..2f16804 100644 --- a/chrome/browser/ash/file_manager/copy_or_move_io_task.cc +++ b/chrome/browser/ash/file_manager/copy_or_move_io_task.cc
@@ -24,6 +24,7 @@ #include "chrome/browser/ash/file_manager/fileapi_util.h" #include "chrome/browser/ash/file_manager/filesystem_api_util.h" #include "chrome/browser/ash/file_manager/io_task.h" +#include "chrome/browser/ash/file_manager/io_task_util.h" #include "chrome/browser/ash/file_manager/path_util.h" #include "chrome/browser/ash/file_manager/volume_manager.h" #include "content/public/browser/browser_task_traits.h" @@ -72,23 +73,6 @@ std::move(complete_callback)); } -// Starts the move operation via FileSystemOperationRunner. -storage::FileSystemOperationRunner::OperationID StartMoveOnIOThread( - scoped_refptr<storage::FileSystemContext> file_system_context, - const storage::FileSystemURL& source_url, - const storage::FileSystemURL& destination_url, - storage::FileSystemOperation::CopyOrMoveOptionSet options, - const FileManagerCopyOrMoveHookDelegate::ProgressCallback& - progress_callback, - storage::FileSystemOperation::StatusCallback complete_callback) { - DCHECK_CURRENTLY_ON(content::BrowserThread::IO); - return file_system_context->operation_runner()->Move( - source_url, destination_url, options, - storage::FileSystemOperation::ERROR_BEHAVIOR_ABORT, - std::make_unique<FileManagerCopyOrMoveHookDelegate>(progress_callback), - std::move(complete_callback)); -} - } // namespace CopyOrMoveIOTask::CopyOrMoveIOTask(
diff --git a/chrome/browser/ash/file_manager/copy_or_move_io_task.h b/chrome/browser/ash/file_manager/copy_or_move_io_task.h index 5114a07..fbd326fa 100644 --- a/chrome/browser/ash/file_manager/copy_or_move_io_task.h +++ b/chrome/browser/ash/file_manager/copy_or_move_io_task.h
@@ -26,7 +26,7 @@ namespace io_task { // This class represents a copy or move operation. It checks whether there is -// enough space for the copy or moveto occur, and also sends the copy or move +// enough space for the copy or move to occur, and also sends the copy or move // requests to the storage backend. class CopyOrMoveIOTask : public IOTask { public:
diff --git a/chrome/browser/ash/file_manager/io_task_util.cc b/chrome/browser/ash/file_manager/io_task_util.cc new file mode 100644 index 0000000..e718d00 --- /dev/null +++ b/chrome/browser/ash/file_manager/io_task_util.cc
@@ -0,0 +1,31 @@ +// Copyright 2022 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/ash/file_manager/io_task_util.h" + +#include <memory> + +#include "content/public/browser/browser_thread.h" + +namespace file_manager { +namespace io_task { + +storage::FileSystemOperationRunner::OperationID StartMoveOnIOThread( + scoped_refptr<storage::FileSystemContext> file_system_context, + const storage::FileSystemURL& source_url, + const storage::FileSystemURL& destination_url, + storage::FileSystemOperation::CopyOrMoveOptionSet options, + const FileManagerCopyOrMoveHookDelegate::ProgressCallback& + progress_callback, + storage::FileSystemOperation::StatusCallback complete_callback) { + DCHECK_CURRENTLY_ON(content::BrowserThread::IO); + return file_system_context->operation_runner()->Move( + source_url, destination_url, options, + storage::FileSystemOperation::ERROR_BEHAVIOR_ABORT, + std::make_unique<FileManagerCopyOrMoveHookDelegate>(progress_callback), + std::move(complete_callback)); +} + +} // namespace io_task +} // namespace file_manager
diff --git a/chrome/browser/ash/file_manager/io_task_util.h b/chrome/browser/ash/file_manager/io_task_util.h new file mode 100644 index 0000000..36746ca --- /dev/null +++ b/chrome/browser/ash/file_manager/io_task_util.h
@@ -0,0 +1,30 @@ +// Copyright 2022 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_BROWSER_ASH_FILE_MANAGER_IO_TASK_UTIL_H_ +#define CHROME_BROWSER_ASH_FILE_MANAGER_IO_TASK_UTIL_H_ + +#include "chrome/browser/ash/file_manager/file_manager_copy_or_move_hook_delegate.h" +#include "storage/browser/file_system/file_system_context.h" +#include "storage/browser/file_system/file_system_operation.h" +#include "storage/browser/file_system/file_system_operation_runner.h" +#include "storage/browser/file_system/file_system_url.h" + +namespace file_manager { +namespace io_task { + +// Performs a move via the FileSystemOperationRunner. +storage::FileSystemOperationRunner::OperationID StartMoveOnIOThread( + scoped_refptr<storage::FileSystemContext> file_system_context, + const storage::FileSystemURL& source_url, + const storage::FileSystemURL& destination_url, + storage::FileSystemOperation::CopyOrMoveOptionSet options, + const FileManagerCopyOrMoveHookDelegate::ProgressCallback& + progress_callback, + storage::FileSystemOperation::StatusCallback complete_callback); + +} // namespace io_task +} // namespace file_manager + +#endif // CHROME_BROWSER_ASH_FILE_MANAGER_IO_TASK_UTIL_H_
diff --git a/chrome/browser/ash/fusebox/OWNERS b/chrome/browser/ash/fusebox/OWNERS index 8b13789..73220a8 100644 --- a/chrome/browser/ash/fusebox/OWNERS +++ b/chrome/browser/ash/fusebox/OWNERS
@@ -1 +1 @@ - +file://ui/file_manager/OWNERS
diff --git a/chrome/browser/ash/login/demo_mode/demo_extensions_external_loader_unittest.cc b/chrome/browser/ash/login/demo_mode/demo_extensions_external_loader_unittest.cc index 7da6b0c..44603a974 100644 --- a/chrome/browser/ash/login/demo_mode/demo_extensions_external_loader_unittest.cc +++ b/chrome/browser/ash/login/demo_mode/demo_extensions_external_loader_unittest.cc
@@ -569,16 +569,6 @@ EXPECT_TRUE(DemoExtensionsExternalLoader::SupportedForProfile(profile.get())); } -TEST_F(ShouldCreateDemoExtensionsExternalLoaderTest, - PrimaryOfflineEnrolledDemoProfile) { - StartDemoSession(DemoSession::DemoModeConfig::kOffline); - - std::unique_ptr<TestingProfile> profile = AddTestUser( - AccountId::FromUserEmailGaiaId("primary@test.com", "primary_user")); - - EXPECT_TRUE(DemoExtensionsExternalLoader::SupportedForProfile(profile.get())); -} - TEST_F(ShouldCreateDemoExtensionsExternalLoaderTest, ProfileWithNoUser) { StartDemoSession(DemoSession::DemoModeConfig::kOnline); TestingProfile profile;
diff --git a/chrome/browser/ash/login/demo_mode/demo_resources_unittest.cc b/chrome/browser/ash/login/demo_mode/demo_resources_unittest.cc index b73ec83..f9ce5db 100644 --- a/chrome/browser/ash/login/demo_mode/demo_resources_unittest.cc +++ b/chrome/browser/ash/login/demo_mode/demo_resources_unittest.cc
@@ -172,53 +172,5 @@ EXPECT_TRUE(demo_resources.loaded()); } -TEST_F(DemoResourcesTest, EnsureLoadedRepeatedlyOffline) { - DemoResources demo_resources(DemoSession::DemoModeConfig::kOffline); - - bool first_callback_called = false; - demo_resources.EnsureLoaded( - base::BindOnce(&SetBoolean, &first_callback_called)); - - bool second_callback_called = false; - demo_resources.EnsureLoaded( - base::BindOnce(&SetBoolean, &second_callback_called)); - - bool third_callback_called = false; - demo_resources.EnsureLoaded( - base::BindOnce(&SetBoolean, &third_callback_called)); - - EXPECT_FALSE(demo_resources.loaded()); - EXPECT_FALSE(first_callback_called); - EXPECT_FALSE(second_callback_called); - EXPECT_FALSE(third_callback_called); - - const base::FilePath component_mount_point = - base::FilePath(kTestDemoModeResourcesMountPoint); - demo_resources.SetPreinstalledOfflineResourcesLoadedForTesting( - component_mount_point); - - EXPECT_TRUE(demo_resources.loaded()); - EXPECT_TRUE(first_callback_called); - EXPECT_TRUE(second_callback_called); - EXPECT_TRUE(third_callback_called); - - EXPECT_EQ(component_mount_point.AppendASCII(kDemoAppsImageFile), - demo_resources.GetDemoAppsPath()); - EXPECT_EQ(component_mount_point.AppendASCII(kExternalExtensionsPrefsFile), - demo_resources.GetExternalExtensionsPrefsPath()); - - bool fourth_callback_called = false; - demo_resources.EnsureLoaded( - base::BindOnce(&SetBoolean, &fourth_callback_called)); - EXPECT_TRUE(fourth_callback_called); - - bool fifth_callback_called = false; - demo_resources.EnsureLoaded( - base::BindOnce(&SetBoolean, &fifth_callback_called)); - EXPECT_TRUE(fifth_callback_called); - - EXPECT_TRUE(demo_resources.loaded()); -} - } // namespace } // namespace ash
diff --git a/chrome/browser/ash/login/demo_mode/demo_session.cc b/chrome/browser/ash/login/demo_mode/demo_session.cc index cc0355fe..4a26e75 100644 --- a/chrome/browser/ash/login/demo_mode/demo_session.cc +++ b/chrome/browser/ash/login/demo_mode/demo_session.cc
@@ -72,10 +72,6 @@ absl::optional<DemoSession::DemoModeConfig> g_force_demo_config; // Path relative to the path at which offline demo resources are loaded that -// contains the highlights app. -constexpr char kHighlightsAppPath[] = "chrome_apps/highlights"; - -// Path relative to the path at which offline demo resources are loaded that // contains sample photos. constexpr char kPhotosPath[] = "media/photos"; @@ -213,8 +209,8 @@ return "none"; case DemoSession::DemoModeConfig::kOnline: return "online"; - case DemoSession::DemoModeConfig::kOffline: - return "offline"; + case DemoSession::DemoModeConfig::kOfflineDeprecated: + return "offlineDeprecated"; } NOTREACHED() << "Unknown demo mode configuration"; return std::string(); @@ -226,12 +222,6 @@ } // static -bool DemoSession::IsDemoModeOfflineEnrolled() { - return DemoSession::IsDeviceInDemoMode() && - DemoSession::GetDemoConfig() == DemoSession::DemoModeConfig::kOffline; -} - -// static DemoSession::DemoModeConfig DemoSession::GetDemoConfig() { DCHECK_CURRENTLY_ON(content::BrowserThread::UI); @@ -437,8 +427,7 @@ void DemoSession::SetExtensionsExternalLoader( scoped_refptr<DemoExtensionsExternalLoader> extensions_external_loader) { extensions_external_loader_ = extensions_external_loader; - if (!offline_enrolled_) - InstallAppFromUpdateUrl(GetScreensaverAppId()); + InstallAppFromUpdateUrl(GetScreensaverAppId()); } void DemoSession::OverrideIgnorePinPolicyAppsForTesting( @@ -464,8 +453,7 @@ } DemoSession::DemoSession() - : offline_enrolled_(IsDemoModeOfflineEnrolled()), - ignore_pin_policy_offline_apps_(GetIgnorePinPolicyApps()), + : ignore_pin_policy_offline_apps_(GetIgnorePinPolicyApps()), remove_splash_screen_fallback_timer_( std::make_unique<base::OneShotTimer>()) { // SessionManager may be unset in unit tests. @@ -505,8 +493,6 @@ void DemoSession::InstallDemoResources() { DCHECK(demo_resources_->loaded()); - if (offline_enrolled_) - LoadAndLaunchHighlightsApp(); Profile* const profile = ProfileManager::GetActiveUserProfile(); DCHECK(profile); @@ -517,25 +503,6 @@ base::BindOnce(&InstallDemoMedia, demo_resources_->path(), downloads)); } -void DemoSession::LoadAndLaunchHighlightsApp() { - DCHECK(demo_resources_->loaded()); - if (demo_resources_->path().empty()) { - LOG(ERROR) << "Offline resources not loaded - no highlights app available."; - InstallAppFromUpdateUrl(GetHighlightsAppId()); - return; - } - Profile* profile = ProfileManager::GetActiveUserProfile(); - DCHECK(profile); - const base::FilePath resources_path = - demo_resources_->path().Append(kHighlightsAppPath); - if (!apps::AppLoadService::Get(profile)->LoadAndLaunch( - resources_path, base::CommandLine(base::CommandLine::NO_PROGRAM), - base::FilePath() /* cur_dir */)) { - LOG(WARNING) << "Failed to launch highlights app from offline resources."; - InstallAppFromUpdateUrl(GetHighlightsAppId()); - } -} - void DemoSession::InstallAppFromUpdateUrl(const std::string& id) { if (!extensions_external_loader_) return; @@ -579,8 +546,7 @@ } RestoreDefaultLocaleForNextSession(); - if (!offline_enrolled_) - InstallAppFromUpdateUrl(GetHighlightsAppId()); + InstallAppFromUpdateUrl(GetHighlightsAppId()); EnsureResourcesLoaded(base::BindOnce(&DemoSession::InstallDemoResources, weak_ptr_factory_.GetWeakPtr()));
diff --git a/chrome/browser/ash/login/demo_mode/demo_session.h b/chrome/browser/ash/login/demo_mode/demo_session.h index 8645bbc..c0366b6c 100644 --- a/chrome/browser/ash/login/demo_mode/demo_session.h +++ b/chrome/browser/ash/login/demo_mode/demo_session.h
@@ -52,11 +52,12 @@ // Online enrollment into demo mode was established with DMServer. // Policies are applied from the cloud. kOnline = 1, + // Deprecated: demo mode offline enrollment is not supported. // Offline enrollment into demo mode was established locally. // Offline policy set is applied to the device. - kOffline = 2, + kOfflineDeprecated = 2, // Add new entries above this line and make sure to update kLast value. - kLast = kOffline, + kLast = kOfflineDeprecated, }; // Indicates the source of an app launch when in Demo mode for UMA @@ -93,11 +94,6 @@ // Whether the device is set up to run demo sessions. static bool IsDeviceInDemoMode(); - // Whether the device is set up to enroll Demo Mode offline. - // The device needs to be set up for Demo Mode in order to return true. - // TODO(b/154290639): Move into anonymous namespace when fixed. - static bool IsDemoModeOfflineEnrolled(); - // Returns current demo mode configuration. static DemoModeConfig GetDemoConfig(); @@ -175,8 +171,6 @@ // extensions::AppWindowRegistry::Observer: void OnAppWindowActivated(extensions::AppWindow* app_window) override; - bool offline_enrolled() const { return offline_enrolled_; } - bool started() const { return started_; } const DemoResources* resources() const { return demo_resources_.get(); } @@ -194,10 +188,6 @@ // as apps and media. void InstallDemoResources(); - // Loads the highlights app from offline resources and launches it upon - // success. - void LoadAndLaunchHighlightsApp(); - // Installs the CRX file from an update URL. Observes `AppRegistryCache` to // launch the app upon installation. void InstallAppFromUpdateUrl(const std::string& id); @@ -221,11 +211,6 @@ void OnAppRegistryCacheWillBeDestroyed( apps::AppRegistryCache* cache) override; - // Whether the device was offline-enrolled into demo mode, i.e. enrolled using - // pre-built policies. Offline enrolled demo sessions do not have working - // robot account associated with them. - bool offline_enrolled_ = false; - // Whether demo session has been started. bool started_ = false;
diff --git a/chrome/browser/ash/login/demo_mode/demo_session_browsertest.cc b/chrome/browser/ash/login/demo_mode/demo_session_browsertest.cc index db70409..3f1d7a5d 100644 --- a/chrome/browser/ash/login/demo_mode/demo_session_browsertest.cc +++ b/chrome/browser/ash/login/demo_mode/demo_session_browsertest.cc
@@ -22,17 +22,7 @@ void CheckDemoMode() { EXPECT_TRUE(DemoSession::IsDeviceInDemoMode()); - EXPECT_EQ(DemoSession::DemoModeConfig::kOffline, - DemoSession::GetDemoConfig()); - - SetDemoConfigPref(DemoSession::DemoModeConfig::kOnline); - EXPECT_TRUE(DemoSession::IsDeviceInDemoMode()); EXPECT_EQ(DemoSession::DemoModeConfig::kOnline, DemoSession::GetDemoConfig()); - - SetDemoConfigPref(DemoSession::DemoModeConfig::kOffline); - EXPECT_TRUE(DemoSession::IsDeviceInDemoMode()); - EXPECT_EQ(DemoSession::DemoModeConfig::kOffline, - DemoSession::GetDemoConfig()); } void CheckNoDemoMode() { @@ -42,10 +32,6 @@ SetDemoConfigPref(DemoSession::DemoModeConfig::kOnline); EXPECT_FALSE(DemoSession::IsDeviceInDemoMode()); EXPECT_EQ(DemoSession::DemoModeConfig::kNone, DemoSession::GetDemoConfig()); - - SetDemoConfigPref(DemoSession::DemoModeConfig::kOffline); - EXPECT_FALSE(DemoSession::IsDeviceInDemoMode()); - EXPECT_EQ(DemoSession::DemoModeConfig::kNone, DemoSession::GetDemoConfig()); } // Tests locking device to policy::DEVICE_MODE_DEMO mode. It is an equivalent to @@ -63,7 +49,7 @@ // OobeBaseTest: void SetUpOnMainThread() override { OobeBaseTest::SetUpOnMainThread(); - SetDemoConfigPref(DemoSession::DemoModeConfig::kOffline); + SetDemoConfigPref(DemoSession::DemoModeConfig::kOnline); } private: @@ -95,7 +81,7 @@ // OobeBaseTest: void SetUpOnMainThread() override { OobeBaseTest::SetUpOnMainThread(); - SetDemoConfigPref(DemoSession::DemoModeConfig::kOffline); + SetDemoConfigPref(DemoSession::DemoModeConfig::kOnline); } private:
diff --git a/chrome/browser/ash/login/demo_mode/demo_session_unittest.cc b/chrome/browser/ash/login/demo_mode/demo_session_unittest.cc index 13a9537..fab54a7c 100644 --- a/chrome/browser/ash/login/demo_mode/demo_session_unittest.cc +++ b/chrome/browser/ash/login/demo_mode/demo_session_unittest.cc
@@ -155,7 +155,6 @@ DemoSession* demo_session = DemoSession::StartIfInDemoMode(); ASSERT_TRUE(demo_session); EXPECT_TRUE(demo_session->started()); - EXPECT_FALSE(demo_session->offline_enrolled()); EXPECT_EQ(demo_session, DemoSession::Get()); }
diff --git a/chrome/browser/ash/login/demo_mode/demo_setup_controller.cc b/chrome/browser/ash/login/demo_mode/demo_setup_controller.cc index df41f91a..6b88531 100644 --- a/chrome/browser/ash/login/demo_mode/demo_setup_controller.cc +++ b/chrome/browser/ash/login/demo_mode/demo_setup_controller.cc
@@ -51,10 +51,6 @@ using RecoveryMethod = DemoSetupController::DemoSetupError::RecoveryMethod; constexpr char kDemoRequisition[] = "cros-demo-mode"; -constexpr char kOfflinePolicyDirectoryName[] = "policy"; -constexpr char kOfflineDevicePolicyFileName[] = "device_policy"; -constexpr char kOfflineDeviceLocalAccountPolicyFileName[] = - "local_account_policy"; constexpr char kDemoSetupDownloadDurationHistogram[] = "DemoMode.Setup.DownloadDuration"; constexpr char kDemoSetupEnrollDurationHistogram[] = @@ -296,10 +292,6 @@ case policy::EnrollmentStatus::DM_TOKEN_STORE_FAILED: return DemoSetupError(ErrorCode::kDMTokenStoreError, RecoveryMethod::kUnknown, debug_message); - case policy::EnrollmentStatus::OFFLINE_POLICY_LOAD_FAILED: - case policy::EnrollmentStatus::OFFLINE_POLICY_DECODING_FAILED: - return DemoSetupError(ErrorCode::kOfflinePolicyError, - RecoveryMethod::kOnlineOnly, debug_message); case policy::EnrollmentStatus::MAY_NOT_BLOCK_DEV_MODE: return DemoSetupError(ErrorCode::kUnexpectedError, RecoveryMethod::kUnknown, debug_message); @@ -357,10 +349,6 @@ std::u16string DemoSetupController::DemoSetupError::GetLocalizedErrorMessage() const { switch (error_code_) { - case ErrorCode::kOfflinePolicyError: - return l10n_util::GetStringUTF16(IDS_DEMO_SETUP_OFFLINE_POLICY_ERROR); - case ErrorCode::kOfflinePolicyStoreError: - return l10n_util::GetStringUTF16(IDS_DEMO_SETUP_OFFLINE_STORE_ERROR); case ErrorCode::kOnlineFRECheckRequired: return l10n_util::GetStringUTF16( IDS_DEMO_SETUP_OFFLINE_UNAVAILABLE_ERROR); @@ -539,16 +527,9 @@ NOTREACHED(); } -DemoSetupController::DemoSetupController() {} +DemoSetupController::DemoSetupController() = default; -DemoSetupController::~DemoSetupController() { - if (device_local_account_policy_store_) - device_local_account_policy_store_->RemoveObserver(this); -} - -bool DemoSetupController::IsOfflineEnrollment() const { - return demo_config_ == DemoSession::DemoModeConfig::kOffline; -} +DemoSetupController::~DemoSetupController() = default; void DemoSetupController::Enroll( OnSetupSuccess on_setup_success, @@ -571,22 +552,12 @@ case DemoSession::DemoModeConfig::kOnline: LoadDemoResourcesCrOSComponent(); return; - case DemoSession::DemoModeConfig::kOffline: { - EnrollOffline(); - return; - } case DemoSession::DemoModeConfig::kNone: + case DemoSession::DemoModeConfig::kOfflineDeprecated: NOTREACHED() << "No valid demo mode config specified"; } } -base::FilePath DemoSetupController::GetPreinstalledDemoResourcesPath( - const base::FilePath& relative_path) { - if (preinstalled_demo_resources_) - return preinstalled_demo_resources_->GetAbsolutePath(relative_path); - return base::FilePath(); -} - void DemoSetupController::LoadDemoResourcesCrOSComponent() { VLOG(1) << "Loading demo resources component"; @@ -645,40 +616,6 @@ enrollment_helper_->EnrollUsingAttestation(); } -void DemoSetupController::OnPreinstalledDemoResourcesLoaded( - HasPreinstalledDemoResourcesCallback callback) { - std::move(callback).Run(!preinstalled_demo_resources_->path().empty()); -} - -void DemoSetupController::EnrollOffline() { - DCHECK_EQ(demo_config_, DemoSession::DemoModeConfig::kOffline); - DCHECK(!preinstalled_demo_resources_->path().empty()); - - const base::FilePath policy_dir = - preinstalled_demo_resources_->GetAbsolutePath( - base::FilePath(kOfflinePolicyDirectoryName)); - - if (IsOnlineFreCheckRequired()) { - SetupFailed( - DemoSetupError(DemoSetupError::ErrorCode::kOnlineFRECheckRequired, - DemoSetupError::RecoveryMethod::kOnlineOnly, - "Cannot do offline demo mode setup, because online " - "FRE check is required.")); - return; - } - - VLOG(1) << "Starting offline enrollment"; - policy::EnrollmentConfig config; - config.mode = policy::EnrollmentConfig::MODE_OFFLINE_DEMO; - config.management_domain = policy::kDemoModeDomain; - config.offline_policy_path = - policy_dir.AppendASCII(kOfflineDevicePolicyFileName); - enrollment_helper_ = EnterpriseEnrollmentHelper::Create( - this, nullptr /* ad_join_delegate */, config, policy::kDemoModeDomain, - policy::LicenseType::kEnterprise); - enrollment_helper_->EnrollForOfflineDemo(); -} - void DemoSetupController::OnAuthError(const GoogleServiceAuthError& error) { NOTREACHED(); } @@ -702,24 +639,6 @@ base::UmaHistogramLongTimes100(kDemoSetupEnrollDurationHistogram, enroll_duration); } - - // Try to load the policy for the device local account. - if (demo_config_ == DemoSession::DemoModeConfig::kOffline) { - VLOG(1) << "Loading offline policy"; - DCHECK(!preinstalled_demo_resources_->path().empty()); - - const base::FilePath file_path = - preinstalled_demo_resources_->GetAbsolutePath( - base::FilePath(kOfflinePolicyDirectoryName) - .AppendASCII(kOfflineDeviceLocalAccountPolicyFileName)); - base::ThreadPool::PostTaskAndReplyWithResult( - FROM_HERE, - {base::MayBlock(), base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN}, - base::BindOnce(&ReadFileToOptionalString, file_path), - base::BindOnce(&DemoSetupController::OnDeviceLocalAccountPolicyLoaded, - weak_ptr_factory_.GetWeakPtr())); - return; - } VLOG(1) << "Marking device registered"; StartupUtils::MarkDeviceRegistered( base::BindOnce(&DemoSetupController::OnDeviceRegistered, @@ -739,65 +658,6 @@ component_error_for_tests_ = error; } -void DemoSetupController::SetPreinstalledOfflineResourcesPathForTesting( - const base::FilePath& path) { - preinstalled_offline_resources_path_for_tests_ = path; -} - -void DemoSetupController::SetDeviceLocalAccountPolicyStoreForTest( - policy::CloudPolicyStore* store) { - device_local_account_policy_store_ = store; -} - -void DemoSetupController::OnDeviceLocalAccountPolicyLoaded( - absl::optional<std::string> blob) { - if (!blob.has_value()) { - // This is very unlikely to happen since the file existence is already - // checked as CheckOfflinePolicyFilesExist. - SetupFailed( - DemoSetupError(DemoSetupError::ErrorCode::kOfflinePolicyError, - DemoSetupError::RecoveryMethod::kPowerwash, - "Policy file for the device local account not found")); - return; - } - - enterprise_management::PolicyFetchResponse policy; - if (!policy.ParseFromString(blob.value())) { - SetupFailed(DemoSetupError(DemoSetupError::ErrorCode::kOfflinePolicyError, - DemoSetupError::RecoveryMethod::kPowerwash, - "Error parsing local account policy blob.")); - return; - } - - // Extract the account_id from the policy data. - enterprise_management::PolicyData policy_data; - if (policy.policy_data().empty() || - !policy_data.ParseFromString(policy.policy_data())) { - SetupFailed(DemoSetupError(DemoSetupError::ErrorCode::kOfflinePolicyError, - DemoSetupError::RecoveryMethod::kPowerwash, - "Error parsing local account policy data.")); - return; - } - - VLOG(1) << "Storing offline policy"; - // On the unittest, the device_local_account_policy_store_ is already - // initialized. Otherwise attempts to get the store. - if (!device_local_account_policy_store_) { - device_local_account_policy_store_ = - GetDeviceLocalAccountPolicyStore(policy_data.username()); - } - - if (!device_local_account_policy_store_) { - SetupFailed( - DemoSetupError(DemoSetupError::ErrorCode::kOfflinePolicyStoreError, - DemoSetupError::RecoveryMethod::kPowerwash, - "Can't find the store for the local account policy.")); - return; - } - device_local_account_policy_store_->AddObserver(this); - device_local_account_policy_store_->Store(policy); -} - void DemoSetupController::OnDeviceRegistered() { VLOG(1) << "Demo mode setup finished successfully."; @@ -843,27 +703,7 @@ // `demo_config_` is not reset here, because it is needed for retrying setup. enrollment_helper_.reset(); - if (device_local_account_policy_store_) { - device_local_account_policy_store_->RemoveObserver(this); - device_local_account_policy_store_ = nullptr; - } ClearDemoRequisition(); } -void DemoSetupController::OnStoreLoaded(policy::CloudPolicyStore* store) { - DCHECK_EQ(store, device_local_account_policy_store_); - VLOG(1) << "Marking device registered"; - StartupUtils::MarkDeviceRegistered( - base::BindOnce(&DemoSetupController::OnDeviceRegistered, - weak_ptr_factory_.GetWeakPtr())); -} - -void DemoSetupController::OnStoreError(policy::CloudPolicyStore* store) { - DCHECK_EQ(store, device_local_account_policy_store_); - SetupFailed( - DemoSetupError(DemoSetupError::ErrorCode::kOfflinePolicyStoreError, - DemoSetupError::RecoveryMethod::kPowerwash, - "Failed to store the local account policy")); -} - } // namespace ash
diff --git a/chrome/browser/ash/login/demo_mode/demo_setup_controller.h b/chrome/browser/ash/login/demo_mode/demo_setup_controller.h index a9f0d03..add9ac9 100644 --- a/chrome/browser/ash/login/demo_mode/demo_setup_controller.h +++ b/chrome/browser/ash/login/demo_mode/demo_setup_controller.h
@@ -24,8 +24,7 @@ // Controls enrollment flow for setting up Demo Mode. class DemoSetupController - : public EnterpriseEnrollmentHelper::EnrollmentStatusConsumer, - public policy::CloudPolicyStore::Observer { + : public EnterpriseEnrollmentHelper::EnrollmentStatusConsumer { public: // All steps required for setup. enum class DemoSetupStep { @@ -42,10 +41,6 @@ public: // Type of setup error. enum class ErrorCode { - // Cannot load or parse offline policy. - kOfflinePolicyError, - // Local account policy store error. - kOfflinePolicyStoreError, // Cannot perform offline setup without online FRE check. kOnlineFRECheckRequired, // Cannot load online component. @@ -163,7 +158,6 @@ using OnSetupError = base::OnceCallback<void(const DemoSetupError&)>; using OnSetCurrentSetupStep = base::RepeatingCallback<void(const DemoSetupStep)>; - using HasPreinstalledDemoResourcesCallback = base::OnceCallback<void(bool)>; static void RegisterLocalStatePrefs(PrefRegistrySimple* registry); @@ -201,9 +195,6 @@ demo_config_ = demo_config; } - // Whether offline enrollment is used for setup. - bool IsOfflineEnrollment() const; - // Initiates enrollment that sets up the device in the demo mode domain. The // `enrollment_type_` determines whether online or offline setup will be // performed and it should be set with set_enrollment_type() before calling @@ -231,10 +222,6 @@ void SetCrOSComponentLoadErrorForTest( component_updater::CrOSComponentManager::Error error); - void SetPreinstalledOfflineResourcesPathForTesting( - const base::FilePath& path); - void SetDeviceLocalAccountPolicyStoreForTest(policy::CloudPolicyStore* store); - void SetOfflineDataDirForTest(const base::FilePath& offline_dir); private: // Attempts to load the CrOS component with demo resources for online @@ -247,21 +234,6 @@ // will fail. void OnDemoResourcesCrOSComponentLoaded(); - // Callback after attempting to load preinstalled demo resources. If the - // resources were loaded, offline Demo Mode should be available. - void OnPreinstalledDemoResourcesLoaded( - HasPreinstalledDemoResourcesCallback callback); - - // Initiates offline enrollment that locks the device and sets up offline - // policies required by demo mode. It requires no network connectivity since - // all setup will be done locally. The policy files will be loaded from the - // preinstalled demo resources. - void EnrollOffline(); - - // Called when the device local account policy for the offline demo mode is - // loaded. - void OnDeviceLocalAccountPolicyLoaded(absl::optional<std::string> blob); - // Called when device is marked as registered and the second part of OOBE flow // is completed. This is the last step of demo mode setup flow. void OnDeviceRegistered(); @@ -275,10 +247,6 @@ // Clears the internal state. void Reset(); - // policy::CloudPolicyStore::Observer: - void OnStoreLoaded(policy::CloudPolicyStore* store) override; - void OnStoreError(policy::CloudPolicyStore* store) override; - // Keeps track of when downloading demo mode resources begins. base::TimeTicks download_start_time_; @@ -298,9 +266,6 @@ component_updater::CrOSComponentManager::Error component_error_for_tests_ = component_updater::CrOSComponentManager::Error::NONE; - // Path at which to mount preinstalled offline demo resources for tests. - base::FilePath preinstalled_offline_resources_path_for_tests_; - // Callback to call when setup step is updated. OnSetCurrentSetupStep set_current_setup_step_; @@ -310,14 +275,8 @@ // Callback to call when enrollment finishes successfully. OnSetupSuccess on_setup_success_; - // The CloudPolicyStore for the device local account for the offline policy. - policy::CloudPolicyStore* device_local_account_policy_store_ = nullptr; - std::unique_ptr<EnterpriseEnrollmentHelper> enrollment_helper_; - // The preinstalled Demo Mode Resources for offline Demo Mode. - std::unique_ptr<DemoResources> preinstalled_demo_resources_; - // The Demo Mode Resources CrOS Component downloaded for online Demo Mode. std::unique_ptr<DemoResources> demo_resources_;
diff --git a/chrome/browser/ash/login/demo_mode/demo_setup_controller_unittest.cc b/chrome/browser/ash/login/demo_mode/demo_setup_controller_unittest.cc index 7e951f0..e93ef00 100644 --- a/chrome/browser/ash/login/demo_mode/demo_setup_controller_unittest.cc +++ b/chrome/browser/ash/login/demo_mode/demo_setup_controller_unittest.cc
@@ -37,7 +37,6 @@ using test::DemoModeSetupResult; using test::SetupDummyOfflinePolicyDir; using test::SetupMockDemoModeNoEnrollmentHelper; -using test::SetupMockDemoModeOfflineEnrollmentHelper; using test::SetupMockDemoModeOnlineEnrollmentHelper; using ::testing::_;
diff --git a/chrome/browser/ash/login/demo_mode/demo_setup_test_utils.cc b/chrome/browser/ash/login/demo_mode/demo_setup_test_utils.cc index a79c116..c5016fa 100644 --- a/chrome/browser/ash/login/demo_mode/demo_setup_test_utils.cc +++ b/chrome/browser/ash/login/demo_mode/demo_setup_test_utils.cc
@@ -19,10 +19,6 @@ return arg.mode == policy::EnrollmentConfig::MODE_ATTESTATION; } -MATCHER(ConfigIsOfflineDemo, "") { - return arg.mode == policy::EnrollmentConfig::MODE_OFFLINE_DEMO; -} - } // namespace namespace test { @@ -64,35 +60,6 @@ EnterpriseEnrollmentHelper::SetEnrollmentHelperMock(std::move(mock)); } -void SetupMockDemoModeOfflineEnrollmentHelper(DemoModeSetupResult result) { - std::unique_ptr<EnterpriseEnrollmentHelperMock> mock = - std::make_unique<EnterpriseEnrollmentHelperMock>(); - auto* mock_ptr = mock.get(); - EXPECT_CALL(*mock, Setup(_, ConfigIsOfflineDemo(), _, _)); - - EXPECT_CALL(*mock, EnrollForOfflineDemo()) - .WillRepeatedly(testing::Invoke([mock_ptr, result]() { - switch (result) { - case DemoModeSetupResult::SUCCESS: - mock_ptr->status_consumer()->OnDeviceEnrolled(); - break; - case DemoModeSetupResult::ERROR_POWERWASH_REQUIRED: - mock_ptr->status_consumer()->OnEnrollmentError( - policy::EnrollmentStatus::ForLockError( - InstallAttributes::LOCK_READBACK_ERROR)); - break; - case DemoModeSetupResult::ERROR_DEFAULT: - mock_ptr->status_consumer()->OnEnrollmentError( - policy::EnrollmentStatus::ForStatus( - policy::EnrollmentStatus::OFFLINE_POLICY_DECODING_FAILED)); - break; - default: - NOTREACHED(); - } - })); - EnterpriseEnrollmentHelper::SetEnrollmentHelperMock(std::move(mock)); -} - bool SetupDummyOfflinePolicyDir(const std::string& account_id, base::ScopedTempDir* temp_dir) { base::ScopedAllowBlockingForTesting allow_io;
diff --git a/chrome/browser/ash/login/enrollment/enrollment_uma.cc b/chrome/browser/ash/login/enrollment/enrollment_uma.cc index 11b4843..3d32da0 100644 --- a/chrome/browser/ash/login/enrollment/enrollment_uma.cc +++ b/chrome/browser/ash/login/enrollment/enrollment_uma.cc
@@ -35,7 +35,6 @@ case policy::EnrollmentConfig::MODE_MANUAL_REENROLLMENT: case policy::EnrollmentConfig::MODE_LOCAL_ADVERTISED: case policy::EnrollmentConfig::MODE_SERVER_ADVERTISED: - case policy::EnrollmentConfig::MODE_OFFLINE_DEMO: base::UmaHistogramSparse(kMetricEnrollment, sample); break; case policy::EnrollmentConfig::MODE_ATTESTATION: @@ -67,6 +66,7 @@ base::UmaHistogramSparse(kMetricEnrollmentRecovery, sample); break; case policy::EnrollmentConfig::OBSOLETE_MODE_ENROLLED_ROLLBACK: + case policy::EnrollmentConfig::MODE_OFFLINE_DEMO_DEPRECATED: case policy::EnrollmentConfig::MODE_NONE: NOTREACHED(); break;
diff --git a/chrome/browser/ash/login/enrollment/enterprise_enrollment_helper.h b/chrome/browser/ash/login/enrollment/enterprise_enrollment_helper.h index 1b35c7d8..4e41a85a 100644 --- a/chrome/browser/ash/login/enrollment/enterprise_enrollment_helper.h +++ b/chrome/browser/ash/login/enrollment/enterprise_enrollment_helper.h
@@ -100,12 +100,6 @@ // lifetime, and only if none of the EnrollUsing* was called before. virtual void EnrollUsingAttestation() = 0; - // Starts enterprise enrollment for offline demo-mode. - // EnrollForOfflineDemo is used offline, no network connections. Thus it goes - // into enrollment without authentication -- and applies policies which are - // stored locally. - virtual void EnrollForOfflineDemo() = 0; - // Starts device attribute update process. First tries to get // permission to update device attributes for current user // using stored during enrollment oauth token.
diff --git a/chrome/browser/ash/login/enrollment/enterprise_enrollment_helper_impl.cc b/chrome/browser/ash/login/enrollment/enterprise_enrollment_helper_impl.cc index 47c8bcf..ab1cfa79 100644 --- a/chrome/browser/ash/login/enrollment/enterprise_enrollment_helper_impl.cc +++ b/chrome/browser/ash/login/enrollment/enterprise_enrollment_helper_impl.cc
@@ -136,13 +136,6 @@ DoEnroll(policy::DMAuth::NoAuth()); } -void EnterpriseEnrollmentHelperImpl::EnrollForOfflineDemo() { - CHECK_EQ(enrollment_config_.mode, - policy::EnrollmentConfig::MODE_OFFLINE_DEMO); - // The tokens are not used in offline demo mode. - DoEnroll(policy::DMAuth::NoAuth()); -} - void EnterpriseEnrollmentHelperImpl::ClearAuth(base::OnceClosure callback) { if (oauth_status_ != OAUTH_NOT_STARTED) { if (oauth_fetcher_) { @@ -167,8 +160,6 @@ void EnterpriseEnrollmentHelperImpl::DoEnroll(policy::DMAuth auth_data) { DCHECK(auth_data_.empty() || auth_data_ == auth_data); DCHECK(enrollment_config_.is_mode_attestation() || - enrollment_config_.mode == - policy::EnrollmentConfig::MODE_OFFLINE_DEMO || oauth_status_ == OAUTH_STARTED_WITH_AUTH_CODE || oauth_status_ == OAUTH_STARTED_WITH_TOKEN); // TODO(crbug.com/1271134): Logging as "WARNING" to make sure it's preserved @@ -518,10 +509,6 @@ case policy::EnrollmentStatus::DM_TOKEN_STORE_FAILED: UMA(policy::kMetricEnrollmentStoreDMTokenFailed); break; - case policy::EnrollmentStatus::OFFLINE_POLICY_LOAD_FAILED: - case policy::EnrollmentStatus::OFFLINE_POLICY_DECODING_FAILED: - UMA(policy::kMetricEnrollmentRegisterPolicyResponseInvalid); - break; case policy::EnrollmentStatus::MAY_NOT_BLOCK_DEV_MODE: UMA(policy::kMetricEnrollmentMayNotBlockDevMode); break;
diff --git a/chrome/browser/ash/login/enrollment/enterprise_enrollment_helper_impl.h b/chrome/browser/ash/login/enrollment/enterprise_enrollment_helper_impl.h index 281e062..5bbe4ae 100644 --- a/chrome/browser/ash/login/enrollment/enterprise_enrollment_helper_impl.h +++ b/chrome/browser/ash/login/enrollment/enterprise_enrollment_helper_impl.h
@@ -39,7 +39,6 @@ void EnrollUsingAuthCode(const std::string& auth_code) override; void EnrollUsingToken(const std::string& token) override; void EnrollUsingAttestation() override; - void EnrollForOfflineDemo() override; void ClearAuth(base::OnceClosure callback) override; void GetDeviceAttributeUpdatePermission() override; void UpdateDeviceAttributes(const std::string& asset_id,
diff --git a/chrome/browser/ash/login/enrollment/enterprise_enrollment_helper_mock.h b/chrome/browser/ash/login/enrollment/enterprise_enrollment_helper_mock.h index 5478d52..8828c9a 100644 --- a/chrome/browser/ash/login/enrollment/enterprise_enrollment_helper_mock.h +++ b/chrome/browser/ash/login/enrollment/enterprise_enrollment_helper_mock.h
@@ -31,7 +31,6 @@ MOCK_METHOD1(EnrollUsingAuthCode, void(const std::string& auth_code)); MOCK_METHOD1(EnrollUsingToken, void(const std::string& token)); MOCK_METHOD0(EnrollUsingAttestation, void()); - MOCK_METHOD0(EnrollForOfflineDemo, void()); MOCK_METHOD0(RestoreAfterRollback, void()); MOCK_METHOD0(GetDeviceAttributeUpdatePermission, void()); MOCK_METHOD2(UpdateDeviceAttributes,
diff --git a/chrome/browser/ash/login/screens/arc_terms_of_service_screen.cc b/chrome/browser/ash/login/screens/arc_terms_of_service_screen.cc index 3a58bf3..431493a3 100644 --- a/chrome/browser/ash/login/screens/arc_terms_of_service_screen.cc +++ b/chrome/browser/ash/login/screens/arc_terms_of_service_screen.cc
@@ -96,13 +96,11 @@ switch (result) { case Result::ACCEPTED: case Result::ACCEPTED_DEMO_ONLINE: - case Result::ACCEPTED_DEMO_OFFLINE: return "Accepted"; case Result::BACK: return "Back"; case Result::NOT_APPLICABLE: case Result::NOT_APPLICABLE_DEMO_ONLINE: - case Result::NOT_APPLICABLE_DEMO_OFFLINE: case Result::NOT_APPLICABLE_CONSOLIDATED_CONSENT_ARC_ENABLED: return BaseScreen::kNotApplicable; } @@ -153,11 +151,7 @@ const auto* const demo_setup_controller = WizardController::default_controller()->demo_setup_controller(); if (demo_setup_controller) { - if (demo_setup_controller->IsOfflineEnrollment()) { - exit_callback_.Run(Result::NOT_APPLICABLE_DEMO_OFFLINE); - } else { - exit_callback_.Run(Result::NOT_APPLICABLE_DEMO_ONLINE); - } + exit_callback_.Run(Result::NOT_APPLICABLE_DEMO_ONLINE); return true; } @@ -179,8 +173,6 @@ if (!demo_setup_controller) { exit_callback_.Run(Result::NOT_APPLICABLE); - } else if (demo_setup_controller->IsOfflineEnrollment()) { - exit_callback_.Run(Result::NOT_APPLICABLE_DEMO_OFFLINE); } else { exit_callback_.Run(Result::NOT_APPLICABLE_DEMO_ONLINE); } @@ -232,8 +224,6 @@ if (!demo_setup_controller) { exit_callback_.Run(Result::ACCEPTED); - } else if (demo_setup_controller->IsOfflineEnrollment()) { - exit_callback_.Run(Result::ACCEPTED_DEMO_OFFLINE); } else { exit_callback_.Run(Result::ACCEPTED_DEMO_ONLINE); }
diff --git a/chrome/browser/ash/login/screens/arc_terms_of_service_screen.h b/chrome/browser/ash/login/screens/arc_terms_of_service_screen.h index 47d9f60..715cd2c6 100644 --- a/chrome/browser/ash/login/screens/arc_terms_of_service_screen.h +++ b/chrome/browser/ash/login/screens/arc_terms_of_service_screen.h
@@ -21,11 +21,9 @@ enum class Result { ACCEPTED, ACCEPTED_DEMO_ONLINE, - ACCEPTED_DEMO_OFFLINE, BACK, NOT_APPLICABLE, NOT_APPLICABLE_DEMO_ONLINE, - NOT_APPLICABLE_DEMO_OFFLINE, NOT_APPLICABLE_CONSOLIDATED_CONSENT_ARC_ENABLED, };
diff --git a/chrome/browser/ash/login/screens/consolidated_consent_screen.cc b/chrome/browser/ash/login/screens/consolidated_consent_screen.cc index 8323321..526a2f2 100644 --- a/chrome/browser/ash/login/screens/consolidated_consent_screen.cc +++ b/chrome/browser/ash/login/screens/consolidated_consent_screen.cc
@@ -407,10 +407,7 @@ exit_callback_.Run(Result::ACCEPTED); return; } - if (demo_setup_controller->IsOfflineEnrollment()) - exit_callback_.Run(Result::ACCEPTED_DEMO_OFFLINE); - else - exit_callback_.Run(Result::ACCEPTED_DEMO_ONLINE); + exit_callback_.Run(Result::ACCEPTED_DEMO_ONLINE); } } // namespace ash
diff --git a/chrome/browser/ash/login/screens/network_screen.cc b/chrome/browser/ash/login/screens/network_screen.cc index bcb2e17..af2e680 100644 --- a/chrome/browser/ash/login/screens/network_screen.cc +++ b/chrome/browser/ash/login/screens/network_screen.cc
@@ -38,8 +38,6 @@ case Result::CONNECTED_REGULAR_CONSOLIDATED_CONSENT: case Result::CONNECTED_DEMO_CONSOLIDATED_CONSENT: return "Connected"; - case Result::OFFLINE_DEMO: - return "OfflineDemoSetup"; case Result::BACK_REGULAR: case Result::BACK_DEMO: case Result::BACK_OS_INSTALL:
diff --git a/chrome/browser/ash/login/screens/network_screen.h b/chrome/browser/ash/login/screens/network_screen.h index 92fc0bc..38a90b4 100644 --- a/chrome/browser/ash/login/screens/network_screen.h +++ b/chrome/browser/ash/login/screens/network_screen.h
@@ -31,7 +31,6 @@ CONNECTED_DEMO, CONNECTED_REGULAR_CONSOLIDATED_CONSENT, CONNECTED_DEMO_CONSOLIDATED_CONSENT, - OFFLINE_DEMO, BACK_REGULAR, BACK_DEMO, BACK_OS_INSTALL,
diff --git a/chrome/browser/ash/login/test/enrollment_helper_mixin.cc b/chrome/browser/ash/login/test/enrollment_helper_mixin.cc index f5a0517e..5970f23 100644 --- a/chrome/browser/ash/login/test/enrollment_helper_mixin.cc +++ b/chrome/browser/ash/login/test/enrollment_helper_mixin.cc
@@ -103,23 +103,6 @@ })); } -void EnrollmentHelperMixin::ExpectOfflineEnrollmentSuccess() { - ExpectEnrollmentMode(policy::EnrollmentConfig::MODE_OFFLINE_DEMO); - - EXPECT_CALL(*mock_, EnrollForOfflineDemo()) - .WillOnce(InvokeWithoutArgs( - [this]() { mock_->status_consumer()->OnDeviceEnrolled(); })); -} - -void EnrollmentHelperMixin::ExpectOfflineEnrollmentError( - policy::EnrollmentStatus status) { - ExpectEnrollmentMode(policy::EnrollmentConfig::MODE_OFFLINE_DEMO); - EXPECT_CALL(*mock_, EnrollForOfflineDemo()) - .WillOnce(InvokeWithoutArgs([this, status]() { - mock_->status_consumer()->OnEnrollmentError(status); - })); -} - void EnrollmentHelperMixin::SetupClearAuth() { ON_CALL(*mock_, ClearAuth(_)) .WillByDefault(Invoke(
diff --git a/chrome/browser/ash/login/test/enrollment_helper_mixin.h b/chrome/browser/ash/login/test/enrollment_helper_mixin.h index 928fe17..e9b9b2b 100644 --- a/chrome/browser/ash/login/test/enrollment_helper_mixin.h +++ b/chrome/browser/ash/login/test/enrollment_helper_mixin.h
@@ -59,11 +59,6 @@ void ExpectAttestationEnrollmentErrorRepeated( policy::EnrollmentStatus status); - // Configures and sets expectations for successful offline demo flow. - void ExpectOfflineEnrollmentSuccess(); - // Configures and sets expectations for offline demo flow resulting in error. - void ExpectOfflineEnrollmentError(policy::EnrollmentStatus status); - // Sets up expectation of kTestAuthCode as enrollment credentials. void ExpectEnrollmentCredentials(); // Sets up default ClearAuth handling.
diff --git a/chrome/browser/ash/login/wizard_controller.cc b/chrome/browser/ash/login/wizard_controller.cc index ea8a0b3e..04c381c 100644 --- a/chrome/browser/ash/login/wizard_controller.cc +++ b/chrome/browser/ash/login/wizard_controller.cc
@@ -1361,12 +1361,6 @@ DemoSession::DemoModeConfig::kOnline); ShowEulaScreen(); break; - case NetworkScreen::Result::OFFLINE_DEMO: - DCHECK(demo_setup_controller_); - demo_setup_controller_->set_demo_config( - DemoSession::DemoModeConfig::kOffline); - ShowEulaScreen(); - break; case NetworkScreen::Result::CONNECTED_REGULAR_CONSOLIDATED_CONSENT: case NetworkScreen::Result::NOT_APPLICABLE_CONSOLIDATED_CONSENT: DCHECK(!demo_setup_controller_); @@ -1707,11 +1701,6 @@ case ArcTermsOfServiceScreen::Result::NOT_APPLICABLE: ShowAssistantOptInFlowScreen(); break; - case ArcTermsOfServiceScreen::Result::ACCEPTED_DEMO_OFFLINE: - case ArcTermsOfServiceScreen::Result::NOT_APPLICABLE_DEMO_OFFLINE: - DCHECK(demo_setup_controller_); - ShowDemoModeSetupScreen(); - break; case ArcTermsOfServiceScreen::Result::ACCEPTED_DEMO_ONLINE: case ArcTermsOfServiceScreen::Result::NOT_APPLICABLE_DEMO_ONLINE: DCHECK(demo_setup_controller_);
diff --git a/chrome/browser/ash/login/wizard_controller_browsertest.cc b/chrome/browser/ash/login/wizard_controller_browsertest.cc index 59f5a66..f27ee45 100644 --- a/chrome/browser/ash/login/wizard_controller_browsertest.cc +++ b/chrome/browser/ash/login/wizard_controller_browsertest.cc
@@ -2623,66 +2623,6 @@ EXPECT_FALSE(DemoSetupController::IsOobeDemoSetupFlowInProgress()); } -IN_PROC_BROWSER_TEST_F(WizardControllerDemoSetupTest, - OfflineDemoSetupFlowFinished) { - if (chromeos::features::IsOobeConsolidatedConsentEnabled()) - return; - - CheckCurrentScreen(WelcomeView::kScreenId); - EXPECT_FALSE(DemoSetupController::IsOobeDemoSetupFlowInProgress()); - - EXPECT_CALL(*mock_welcome_screen_, HideImpl()).Times(1); - EXPECT_CALL(*mock_demo_preferences_screen_, ShowImpl()).Times(1); - - WizardController::default_controller()->StartDemoModeSetup(); - - CheckCurrentScreen(DemoPreferencesScreenView::kScreenId); - EXPECT_TRUE(DemoSetupController::IsOobeDemoSetupFlowInProgress()); - - EXPECT_CALL(*mock_demo_preferences_screen_, HideImpl()).Times(1); - EXPECT_CALL(*mock_network_screen_, ShowImpl()).Times(1); - - mock_demo_preferences_screen_->ExitScreen( - DemoPreferencesScreen::Result::COMPLETED); - - CheckCurrentScreen(NetworkScreenView::kScreenId); - EXPECT_TRUE(DemoSetupController::IsOobeDemoSetupFlowInProgress()); - - EXPECT_CALL(*mock_network_screen_, HideImpl()).Times(1); - EXPECT_CALL(*mock_eula_screen_, ShowImpl()).Times(1); - - mock_network_screen_->ExitScreen(NetworkScreen::Result::OFFLINE_DEMO); - - CheckCurrentScreen(EulaView::kScreenId); - EXPECT_TRUE(DemoSetupController::IsOobeDemoSetupFlowInProgress()); - - EXPECT_CALL(*mock_eula_screen_, HideImpl()).Times(1); - EXPECT_CALL(*mock_arc_terms_of_service_screen_, ShowImpl()).Times(1); - - mock_eula_screen_->ExitScreen( - EulaScreen::Result::ACCEPTED_WITHOUT_USAGE_STATS_REPORTING); - - CheckCurrentScreen(ArcTermsOfServiceScreenView::kScreenId); - EXPECT_TRUE(DemoSetupController::IsOobeDemoSetupFlowInProgress()); - - EXPECT_CALL(*mock_arc_terms_of_service_screen_, HideImpl()).Times(1); - EXPECT_CALL(*mock_demo_setup_screen_, ShowImpl()).Times(1); - - mock_arc_terms_of_service_screen_->ExitScreen( - ArcTermsOfServiceScreen::Result::ACCEPTED_DEMO_OFFLINE); - - base::RunLoop().RunUntilIdle(); - - CheckCurrentScreen(DemoSetupScreenView::kScreenId); - EXPECT_TRUE(DemoSetupController::IsOobeDemoSetupFlowInProgress()); - - mock_demo_setup_screen_->ExitScreen(DemoSetupScreen::Result::COMPLETED); - - EXPECT_TRUE(StartupUtils::IsOobeCompleted()); - EXPECT_TRUE(ExistingUserController::current_controller()); - EXPECT_FALSE(DemoSetupController::IsOobeDemoSetupFlowInProgress()); -} - IN_PROC_BROWSER_TEST_F(WizardControllerDemoSetupTest, DemoSetupCanceled) { CheckCurrentScreen(WelcomeView::kScreenId); EXPECT_FALSE(DemoSetupController::IsOobeDemoSetupFlowInProgress());
diff --git a/chrome/browser/ash/policy/enrollment/enrollment_config.h b/chrome/browser/ash/policy/enrollment/enrollment_config.h index 4aeccdf7..de86256 100644 --- a/chrome/browser/ash/policy/enrollment/enrollment_config.h +++ b/chrome/browser/ash/policy/enrollment/enrollment_config.h
@@ -68,8 +68,9 @@ // Forced enrollment triggered as a fallback to attestation re-enrollment, // user can't skip. MODE_ATTESTATION_MANUAL_FALLBACK, + // Deprecated: Demo mode does not support offline enrollment. // Enrollment for offline demo mode with locally stored policy data. - MODE_OFFLINE_DEMO, + MODE_OFFLINE_DEMO_DEPRECATED, // Obsolete. Flow that happens when already enrolled device undergoes // version rollback. Enrollment information is preserved during rollback, // but some steps have to be repeated as stateful partition was wiped. @@ -167,12 +168,6 @@ return mode != MODE_NONE && !is_mode_attestation(); } - // Whether state keys request should be skipped. - // Skipping the request is allowed only for offline demo mode. Offline demo - // mode setup ensures that online validation of state keys is not required in - // that case. - bool skip_state_keys_request() const { return mode == MODE_OFFLINE_DEMO; } - // Indicates the enrollment flow variant to trigger during OOBE. Mode mode = MODE_NONE;
diff --git a/chrome/browser/ash/policy/enrollment/enrollment_handler.cc b/chrome/browser/ash/policy/enrollment/enrollment_handler.cc index 9e89e94a..2d5834d 100644 --- a/chrome/browser/ash/policy/enrollment/enrollment_handler.cc +++ b/chrome/browser/ash/policy/enrollment/enrollment_handler.cc
@@ -98,8 +98,8 @@ EnrollmentConfig::Mode mode) { switch (mode) { case EnrollmentConfig::MODE_NONE: - case EnrollmentConfig::MODE_OFFLINE_DEMO: case EnrollmentConfig::OBSOLETE_MODE_ENROLLED_ROLLBACK: + case EnrollmentConfig::MODE_OFFLINE_DEMO_DEPRECATED: break; case EnrollmentConfig::MODE_MANUAL: return em::DeviceRegisterRequest::FLAVOR_ENROLLMENT_MANUAL; @@ -269,36 +269,27 @@ dm_auth_ = std::move(dm_auth); CHECK(!client_->is_registered()); CHECK_EQ(DM_STATUS_SUCCESS, client_->status()); - if (enrollment_config_.is_mode_attestation() || - enrollment_config.mode == EnrollmentConfig::MODE_OFFLINE_DEMO) { - CHECK(dm_auth_.empty()); - } else { - CHECK(!dm_auth_.empty()); - } - CHECK_NE(enrollment_config.mode == EnrollmentConfig::MODE_OFFLINE_DEMO, - enrollment_config.offline_policy_path.empty()); + CHECK_EQ(dm_auth_.empty(), enrollment_config_.is_mode_attestation()); CHECK(enrollment_config_.auth_mechanism != EnrollmentConfig::AUTH_MECHANISM_ATTESTATION || attestation_flow_); - if (enrollment_config.mode != EnrollmentConfig::MODE_OFFLINE_DEMO) { - register_params_ = - std::make_unique<CloudPolicyClient::RegistrationParameters>( - em::DeviceRegisterRequest::DEVICE, - EnrollmentModeToRegistrationFlavor(enrollment_config.mode)); - register_params_->SetPsmExecutionResult( - GetPsmExecutionResult(*g_browser_process->local_state())); - register_params_->SetPsmDeterminationTimestamp( - GetPsmDeterminationTimestamp(*g_browser_process->local_state())); - // License type is set only if terminal license is used. Unset field is - // treated as enterprise license. - if (license_type == LicenseType::kTerminal) { - register_params_->SetLicenseType( - em::LicenseType_LicenseTypeEnum::LicenseType_LicenseTypeEnum_KIOSK); - } - - register_params_->requisition = requisition; + register_params_ = + std::make_unique<CloudPolicyClient::RegistrationParameters>( + em::DeviceRegisterRequest::DEVICE, + EnrollmentModeToRegistrationFlavor(enrollment_config.mode)); + register_params_->SetPsmExecutionResult( + GetPsmExecutionResult(*g_browser_process->local_state())); + register_params_->SetPsmDeterminationTimestamp( + GetPsmDeterminationTimestamp(*g_browser_process->local_state())); + // License type is set only if terminal license is used. Unset field is + // treated as enterprise license. + if (license_type == LicenseType::kTerminal) { + register_params_->SetLicenseType( + em::LicenseType_LicenseTypeEnum::LicenseType_LicenseTypeEnum_KIOSK); } + register_params_->requisition = requisition; + store_->AddObserver(this); client_->AddObserver(this); client_->AddPolicyTypeToFetch(dm_protocol::kChromeDevicePolicyType, @@ -318,15 +309,6 @@ void EnrollmentHandler::StartEnrollment() { CHECK_EQ(STEP_PENDING, enrollment_step_); - if (enrollment_config_.skip_state_keys_request()) { - // TODO(crbug.com/1271134): Logging as "WARNING" to make sure it's preserved - // in the logs. - LOG(WARNING) << "Skipping state keys request."; - SetStep(STEP_LOADING_STORE); - StartRegistration(); - return; - } - SetStep(STEP_STATE_KEYS); if (client_->machine_id().empty()) { @@ -517,8 +499,6 @@ // First attempt to register with enrollment certificate. Do not force new // key and fresh enrollment certificate. StartAttestationBasedEnrollmentFlow(/*is_initial_attempt=*/true); - } else if (enrollment_config_.mode == EnrollmentConfig::MODE_OFFLINE_DEMO) { - StartOfflineDemoEnrollmentFlow(); } else { client_->Register(*register_params_, client_id_, dm_auth_.oauth_token()); } @@ -596,73 +576,6 @@ signing_service_provider_->CreateSigningService()); } -void EnrollmentHandler::StartOfflineDemoEnrollmentFlow() { - DCHECK(!enrollment_config_.offline_policy_path.empty()); - - device_mode_ = DeviceMode::DEVICE_MODE_DEMO; - domain_ = enrollment_config_.management_domain; - skip_robot_auth_ = true; - SetStep(STEP_POLICY_FETCH); - - base::ThreadPool::PostTaskAndReplyWithResult( - FROM_HERE, - {base::MayBlock(), base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN}, - base::BindOnce(&ReadFileToOptionalString, - enrollment_config_.offline_policy_path), - base::BindOnce(&EnrollmentHandler::OnOfflinePolicyBlobLoaded, - weak_ptr_factory_.GetWeakPtr())); -} - -void EnrollmentHandler::OnOfflinePolicyBlobLoaded( - absl::optional<std::string> blob) { - DCHECK_EQ(EnrollmentConfig::MODE_OFFLINE_DEMO, enrollment_config_.mode); - DCHECK_EQ(STEP_POLICY_FETCH, enrollment_step_); - - if (!blob.has_value()) { - ReportResult(EnrollmentStatus::ForStatus( - EnrollmentStatus::OFFLINE_POLICY_LOAD_FAILED)); - return; - } - - SetStep(STEP_VALIDATION); - - // Validate the policy. - auto policy = std::make_unique<em::PolicyFetchResponse>(); - if (!policy->ParseFromString(blob.value())) { - ReportResult(EnrollmentStatus::ForStatus( - EnrollmentStatus::OFFLINE_POLICY_DECODING_FAILED)); - return; - } - - // Validate the device policy for the offline demo mode. - auto validator = CreateValidator(std::move(policy), domain_); - validator->ValidateDomain(domain_); - DeviceCloudPolicyValidator::StartValidation( - std::move(validator), - base::BindOnce(&EnrollmentHandler::OnOfflinePolicyValidated, - weak_ptr_factory_.GetWeakPtr())); -} - -void EnrollmentHandler::OnOfflinePolicyValidated( - DeviceCloudPolicyValidator* validator) { - DCHECK_EQ(enrollment_config_.mode, EnrollmentConfig::MODE_OFFLINE_DEMO); - DCHECK_EQ(STEP_VALIDATION, enrollment_step_); - - if (!validator->success()) { - ReportResult(EnrollmentStatus::ForValidationError(validator->status())); - return; - } - - // Don't use the device ID within the validated policy -- it's common among - // all of the offline-enrolled devices. - device_id_ = base::GenerateGUID(); - policy_ = std::move(validator->policy()); - - // The steps for OAuth2 token fetching is skipped for the OFFLINE_DEMO_MODE. - SetStep(STEP_SET_FWMP_DATA); - SetFirmwareManagementParametersData(); -} - std::unique_ptr<DeviceCloudPolicyValidator> EnrollmentHandler::CreateValidator( std::unique_ptr<em::PolicyFetchResponse> policy, const std::string& domain) {
diff --git a/chrome/browser/ash/policy/enrollment/enrollment_handler.h b/chrome/browser/ash/policy/enrollment/enrollment_handler.h index 15491317..b0dfab2b 100644 --- a/chrome/browser/ash/policy/enrollment/enrollment_handler.h +++ b/chrome/browser/ash/policy/enrollment/enrollment_handler.h
@@ -163,9 +163,6 @@ chromeos::attestation::AttestationStatus status, const std::string& pem_certificate_chain); - // Starts the enrollment flow for the offline demo mode. - void StartOfflineDemoEnrollmentFlow(); - // Starts registration if the store is initialized. void StartRegistration(); @@ -210,12 +207,6 @@ // Handles result from device policy refresh via authpolicyd. void HandleActiveDirectoryPolicyRefreshed(authpolicy::ErrorType error); - // Handles the blob for the device policy for the offline demo mode. - void OnOfflinePolicyBlobLoaded(absl::optional<std::string> blob); - - // Handles the policy validation result for the offline demo mode. - void OnOfflinePolicyValidated(DeviceCloudPolicyValidator* validator); - std::unique_ptr<DeviceCloudPolicyValidator> CreateValidator( std::unique_ptr<enterprise_management::PolicyFetchResponse> policy, const std::string& domain);
diff --git a/chrome/browser/autofill/autofill_autocomplete_browsertest.cc b/chrome/browser/autofill/autofill_autocomplete_browsertest.cc index 1e3ee2a6..4d54c2f 100644 --- a/chrome/browser/autofill/autofill_autocomplete_browsertest.cc +++ b/chrome/browser/autofill/autofill_autocomplete_browsertest.cc
@@ -159,9 +159,11 @@ MockSuggestionsHandler handler; GetAutocompleteSuggestions(kDefaultAutocompleteInputId, prefix, handler); - EXPECT_THAT( - handler.last_suggestions(), - ElementsAre(Field(&Suggestion::value, ASCIIToUTF16(expected_value)))); + EXPECT_THAT(handler.last_suggestions(), + ElementsAre(Field( + &Suggestion::main_text, + Suggestion::Text(ASCIIToUTF16(expected_value), + Suggestion::Text::IsPrimary(true))))); } void ValidateNoValue() {
diff --git a/chrome/browser/autofill/autofill_keyboard_accessory_adapter_unittest.cc b/chrome/browser/autofill/autofill_keyboard_accessory_adapter_unittest.cc index f0157f5..2c18ef0d 100644 --- a/chrome/browser/autofill/autofill_keyboard_accessory_adapter_unittest.cc +++ b/chrome/browser/autofill/autofill_keyboard_accessory_adapter_unittest.cc
@@ -83,8 +83,8 @@ *result_listener << "has frontend_id " << arg.frontend_id; return false; } - if (arg.value != other.value) { - *result_listener << "has value " << arg.value; + if (arg.main_text != other.main_text) { + *result_listener << "has main_text " << arg.main_text.value; return false; } if (arg.label != other.label) { @@ -102,8 +102,8 @@ // Automagically used to pretty-print Suggestion. Must be in same namespace. void PrintTo(const Suggestion& suggestion, std::ostream* os) { - *os << "(value: \"" << suggestion.value << "\", label: \"" << suggestion.label - << "\", frontend_id: " << suggestion.frontend_id + *os << "(main_text: \"" << suggestion.main_text.value << "\", label: \"" + << suggestion.label << "\", frontend_id: " << suggestion.frontend_id << ", additional_label: \"" << suggestion.additional_label << "\")"; }
diff --git a/chrome/browser/autofill/mock_autofill_popup_controller.h b/chrome/browser/autofill/mock_autofill_popup_controller.h index 8e544b9..e4cbbbe 100644 --- a/chrome/browser/autofill/mock_autofill_popup_controller.h +++ b/chrome/browser/autofill/mock_autofill_popup_controller.h
@@ -55,7 +55,7 @@ } std::u16string GetSuggestionMainTextAt(int row) const override { - return suggestions_[row].value; + return suggestions_[row].main_text.value; } std::u16string GetSuggestionMinorTextAt(int row) const override {
diff --git a/chrome/browser/chromeos/BUILD.gn b/chrome/browser/chromeos/BUILD.gn index a90c86b..fb2fc9e 100644 --- a/chrome/browser/chromeos/BUILD.gn +++ b/chrome/browser/chromeos/BUILD.gn
@@ -1492,6 +1492,8 @@ "../ash/file_manager/io_task.h", "../ash/file_manager/io_task_controller.cc", "../ash/file_manager/io_task_controller.h", + "../ash/file_manager/io_task_util.cc", + "../ash/file_manager/io_task_util.h", "../ash/file_manager/open_util.cc", "../ash/file_manager/open_util.h", "../ash/file_manager/open_with_browser.cc",
diff --git a/chrome/browser/dev_ui_browser_resources.grd b/chrome/browser/dev_ui_browser_resources.grd index 2f1936f..736a295 100644 --- a/chrome/browser/dev_ui_browser_resources.grd +++ b/chrome/browser/dev_ui_browser_resources.grd
@@ -34,20 +34,12 @@ <include name="IDR_DOMAIN_RELIABILITY_INTERNALS_JS" file="resources\domain_reliability_internals\domain_reliability_internals.js" type="BINDATA" /> <include name="IDR_LOCAL_STATE_HTML" file="resources\local_state\local_state.html" type="BINDATA" /> <include name="IDR_LOCAL_STATE_JS" file="${root_gen_dir}\chrome\browser\resources\local_state\local_state.js" use_base_dir="false" type="BINDATA" /> - <include name="IDR_MEDIA_DATA_TABLE_JS" file="${root_gen_dir}\chrome\browser\resources\media\media_data_table.js" use_base_dir="false" type="BINDATA" /> - <include name="IDR_MEDIA_ENGAGEMENT_HTML" file="resources\media\media_engagement.html" type="BINDATA" /> - <include name="IDR_MEDIA_ENGAGEMENT_JS" file="${root_gen_dir}\chrome\browser\resources\media\media_engagement.js" use_base_dir="false" type="BINDATA" /> - <include name="IDR_MEDIA_ENGAGEMENT_SCORE_DETAILS_MOJOM_WEBUI_JS" file="${root_gen_dir}\mojom-webui\chrome\browser\media\media_engagement_score_details.mojom-webui.js" use_base_dir="false" type="BINDATA" /> - <include name="IDR_MEDIA_HISTORY_HTML" file="resources\media\media_history.html" type="BINDATA" allowexternalscript="true" /> - <include name="IDR_MEDIA_HISTORY_JS" file="${root_gen_dir}\chrome\browser\resources\media\media_history.js" use_base_dir="false" type="BINDATA" /> - <include name="IDR_MEDIA_HISTORY_STORE_MOJOM_WEBUI_JS" file="${root_gen_dir}\mojom-webui\chrome\browser\media\history\media_history_store.mojom-webui.js" use_base_dir="false" type="BINDATA" /> <include name="IDR_MEMORY_INTERNALS_HTML" file="resources\memory_internals\memory_internals.html" type="BINDATA" /> <include name="IDR_MEMORY_INTERNALS_JS" file="resources\memory_internals\memory_internals.js" type="BINDATA" /> <include name="IDR_PREDICTORS_AUTOCOMPLETE_ACTION_PREDICTOR_JS" file="${root_gen_dir}\chrome\browser\resources\predictors\autocomplete_action_predictor.js" use_base_dir="false" type="BINDATA" /> <include name="IDR_PREDICTORS_HTML" file="resources\predictors\predictors.html" flattenhtml="true" allowexternalscript="true" type="BINDATA" /> <include name="IDR_PREDICTORS_JS" file="${root_gen_dir}\chrome\browser\resources\predictors\predictors.js" use_base_dir="false" type="BINDATA" /> <include name="IDR_PREDICTORS_RESOURCE_PREFETCH_PREDICTOR_JS" file="${root_gen_dir}\chrome\browser\resources\predictors\resource_prefetch_predictor.js" use_base_dir="false" type="BINDATA" /> - <include name="IDR_MEDIA_SESSION_MOJOM_WEBUI_JS" file="${root_gen_dir}\mojom-webui\services\media_session\public\mojom\media_session.mojom-webui.js" use_base_dir="false" type="BINDATA" /> <if expr="is_android or is_linux or chromeos_ash or chromeos_lacros"> <include name="IDR_SANDBOX_INTERNALS_HTML" file="resources\sandbox_internals\sandbox_internals.html" preprocess="true" type="BINDATA" />
diff --git a/chrome/browser/download/download_prefs.cc b/chrome/browser/download/download_prefs.cc index f5ef1239..65a5442 100644 --- a/chrome/browser/download/download_prefs.cc +++ b/chrome/browser/download/download_prefs.cc
@@ -433,12 +433,7 @@ } bool DownloadPrefs::IsAutoOpenByUserUsed() const { -#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \ - BUILDFLAG(IS_MAC) - if (ShouldOpenPdfInSystemReader()) - return true; -#endif - return !auto_open_by_user_.empty(); + return CanPlatformEnableAutoOpenForPdf() || !auto_open_by_user_.empty(); } bool DownloadPrefs::IsAutoOpenEnabled(const GURL& url, @@ -448,13 +443,10 @@ return false; DCHECK(extension[0] == base::FilePath::kExtensionSeparator); extension.erase(0, 1); -#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \ - BUILDFLAG(IS_MAC) if (base::FilePath::CompareEqualIgnoreCase(extension, FILE_PATH_LITERAL("pdf")) && - ShouldOpenPdfInSystemReader()) + CanPlatformEnableAutoOpenForPdf()) return true; -#endif return auto_open_by_user_.find(extension) != auto_open_by_user_.end() || IsAutoOpenByPolicy(url, path); @@ -520,7 +512,17 @@ return false; } #endif +#if BUILDFLAG(IS_CHROMEOS) + // On ChromeOS, there is always an "app" to handle PDF files. E.g., a "View" + // app which configures a file handler to open in a browser tab. However, + // there is no browser UI to manipulate the kOpenPdfDownloadInSystemReader + // download pref. Instead, user preference is managed via the Files app "Open + // with..." UI. Return true here to respect the user's "Open with" preference, + // and retain consistency with other shelf UI for recent downloads (Tote). + return true; +#else return should_open_pdf_in_system_reader_; +#endif } #endif @@ -554,6 +556,16 @@ profile_->GetPrefs()->SetString(prefs::kDownloadExtensionsToOpen, extensions); } +bool DownloadPrefs::CanPlatformEnableAutoOpenForPdf() const { +#if BUILDFLAG(IS_CHROMEOS) + return false; // There is no UI for auto-open on ChromeOS. +#elif BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) + return ShouldOpenPdfInSystemReader(); +#else + return false; +#endif +} + base::FilePath DownloadPrefs::SanitizeDownloadTargetPath( const base::FilePath& path) const { if (skip_sanitize_download_target_path_for_testing_)
diff --git a/chrome/browser/download/download_prefs.h b/chrome/browser/download/download_prefs.h index 55ffe103..3be27e2 100644 --- a/chrome/browser/download/download_prefs.h +++ b/chrome/browser/download/download_prefs.h
@@ -143,6 +143,7 @@ private: void SaveAutoOpenState(); + bool CanPlatformEnableAutoOpenForPdf() const; // Checks whether |path| is a valid download target path. If it is, returns // it as is. If it isn't returns the default download directory.
diff --git a/chrome/browser/download/download_prefs_unittest.cc b/chrome/browser/download/download_prefs_unittest.cc index ab86b5e..c9c09ddf 100644 --- a/chrome/browser/download/download_prefs_unittest.cc +++ b/chrome/browser/download/download_prefs_unittest.cc
@@ -368,6 +368,46 @@ EXPECT_FALSE(prefs.IsAutoOpenByPolicy(kBlobDisallowedURL, kFilePath)); } +TEST(DownloadPrefsTest, Pdf) { + const base::FilePath kPdfFile(FILE_PATH_LITERAL("abcd.pdf")); + const GURL kURL("http://basic.com"); + + content::BrowserTaskEnvironment task_environment; + TestingProfile profile; + DownloadPrefs prefs(&profile); + + // Consistency check. + EXPECT_FALSE(prefs.IsAutoOpenByUserUsed()); + EXPECT_FALSE(prefs.IsAutoOpenEnabled(kURL, kPdfFile)); + +#if BUILDFLAG(IS_CHROMEOS) + // ChromeOS always has a "SystemReader" that opens in a tab. + EXPECT_TRUE(prefs.ShouldOpenPdfInSystemReader()); +#elif BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) + EXPECT_FALSE(prefs.ShouldOpenPdfInSystemReader()); +#endif + +#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \ + BUILDFLAG(IS_MAC) + prefs.SetShouldOpenPdfInSystemReader(true); +#endif + +#if BUILDFLAG(IS_CHROMEOS) + // Using the system reader does not imply auto-open on ChromeOS. + EXPECT_FALSE(prefs.IsAutoOpenByUserUsed()); + EXPECT_FALSE(prefs.IsAutoOpenEnabled(kURL, kPdfFile)); + EXPECT_TRUE(prefs.ShouldOpenPdfInSystemReader()); +#elif BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) + EXPECT_TRUE(prefs.IsAutoOpenByUserUsed()); + EXPECT_TRUE(prefs.IsAutoOpenEnabled(kURL, kPdfFile)); + EXPECT_TRUE(prefs.ShouldOpenPdfInSystemReader()); +#else + EXPECT_FALSE(prefs.IsAutoOpenByUserUsed()); + EXPECT_FALSE(prefs.IsAutoOpenEnabled(kURL, kPdfFile)); + // Note ShouldOpenPdfInSystemReader is not declared on non-Desktop. +#endif +} + TEST(DownloadPrefsTest, MissingDefaultPathCorrected) { content::BrowserTaskEnvironment task_environment_; TestingProfile profile;
diff --git a/chrome/browser/extensions/extension_service_unittest.cc b/chrome/browser/extensions/extension_service_unittest.cc index 6001bf50..f4b19bc5 100644 --- a/chrome/browser/extensions/extension_service_unittest.cc +++ b/chrome/browser/extensions/extension_service_unittest.cc
@@ -5108,8 +5108,12 @@ base::FilePath idb_path; { base::RunLoop run_loop; + auto bucket_locator = storage::BucketLocator(); + bucket_locator.id = storage::BucketId::FromUnsafeValue(1); + bucket_locator.storage_key = + blink::StorageKey(url::Origin::Create(ext_url)); idb_control_test->GetFilePathForTesting( - blink::StorageKey(url::Origin::Create(ext_url)), + bucket_locator, base::BindLambdaForTesting([&](const base::FilePath& path) { idb_path = path; EXPECT_TRUE(base::CreateDirectory(idb_path)); @@ -5289,8 +5293,12 @@ base::FilePath idb_path; { base::RunLoop run_loop; + auto bucket_locator = storage::BucketLocator(); + bucket_locator.id = storage::BucketId::FromUnsafeValue(1); + bucket_locator.storage_key = + blink::StorageKey(url::Origin::Create(origin1)); idb_control_test->GetFilePathForTesting( - blink::StorageKey(url::Origin::Create(origin1)), + bucket_locator, base::BindLambdaForTesting([&](const base::FilePath& path) { idb_path = path; EXPECT_TRUE(base::CreateDirectory(idb_path));
diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json index 963de4b..27bad16 100644 --- a/chrome/browser/flag-metadata.json +++ b/chrome/browser/flag-metadata.json
@@ -455,6 +455,11 @@ "expiry_milestone": 105 }, { + "name": "autofill-enable-upstream-save-card-offer-ui-experiment", + "owners": [ "koulvipul@google.com", "payments-autofill-team@google.com"], + "expiry_milestone": 108 + }, + { "name": "autofill-enable-virtual-card", "owners": [ "siyua", "jsaul@google.com", "aneeshali@google.com" ], "expiry_milestone": 105 @@ -2044,6 +2049,11 @@ "expiry_milestone": 110 }, { + "name": "enable-experimental-rgb-keyboard-patterns", + "owners": [ "jimmyxgong", "zentaro", "michaelcheco", "cros-peripherals@google.com"], + "expiry_milestone": 112 + }, + { "name": "enable-experimental-web-platform-features", "owners": [ "//third_party/blink/renderer/core/OWNERS" ], // Used by developers to activate experimental features in blink. @@ -2216,11 +2226,6 @@ "expiry_milestone": 90 }, { - "name": "enable-holding-space-in-progress-animation-v2", - "owners": [ "//ash/public/cpp/holding_space/OWNERS" ], - "expiry_milestone": 101 - }, - { "name": "enable-hostname-setting", "owners": [ "khorimoto", "cros-connectivity@google.com" ], "expiry_milestone": 105 @@ -3536,6 +3541,11 @@ "expiry_milestone": 95 }, { + "name": "https-only-mode", + "owners": [ "meacer", "trusty-transport@chromium.org" ], + "expiry_milestone": 110 + }, + { "name": "https-only-mode-setting", "owners": [ "cthomp", "trusty-transport@chromium.org" ], "expiry_milestone": 97 @@ -3620,6 +3630,11 @@ "expiry_milestone": 110 }, { + "name": "info-card-acknowledgement-tracking", + "owners": [ "//chrome/android/feed/OWNERS", "jianli@chromium.org" ], + "expiry_milestone": 110 + }, + { "name": "initial-navigation-entry", "owners": [ "rakina", "chrome-security-architecture@google.com" ], "expiry_milestone": 105
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc index 986c406..afe4315 100644 --- a/chrome/browser/flag_descriptions.cc +++ b/chrome/browser/flag_descriptions.cc
@@ -439,6 +439,12 @@ "it will offer to save it. If saved, it will be offered for filling in " "fields which expect a VPA."; +const char kAutofillSaveCardUiExperimentName[] = + "Enable different UI variants for the upload credit card save bubble"; +const char kAutofillSaveCardUiExperimentDescription[] = + "When enabled, it will trigger slightly different UI variants along with " + "notification texts, when the upload credit card save bubble is shown."; + const char kAutofillSuggestVirtualCardsOnIncompleteFormName[] = "Autofill suggests virtual cards on incomplete forms"; const char kAutofillSuggestVirtualCardsOnIncompleteFormDescription[] = @@ -1013,6 +1019,11 @@ const char kEnableSRPIsolatedPrerendersNSPDescription[] = "Enables NoStatePrefetch on Isolated Prerenders."; +const char kExperimentalRgbKeyboardPatternsName[] = + "Enable experimental RGB Keyboard patterns support"; +const char kExperimentalRgbKeyboardPatternsDescription[] = + "Enable experimental RGB Keyboard patterns support on supported devices."; + const char kDownloadAutoResumptionNativeName[] = "Enable download auto-resumption in native"; const char kDownloadAutoResumptionNativeDescription[] = @@ -3206,6 +3217,11 @@ const char kGridTabSwitcherForTabletsDescription[] = "Enable grid tab switcher for tablets, replacing the tab strip."; +const char kInfoCardAcknowledgementTrackingName[] = + "Info card acknowledgement tracking"; +const char kInfoCardAcknowledgementTrackingDescription[] = + "Enable acknowledgement tracking for info cards."; + const char kInstanceSwitcherName[] = "Enable instance switcher"; const char kInstanceSwitcherDescription[] = "Enable instance switcher dialog UI that helps users manage multiple " @@ -4932,11 +4948,6 @@ "Enables the integration between the help app and the local search" " service. Includes using the search service for in app search."; -const char kHoldingSpaceInProgressAnimationV2Name[] = - "Enable showing v2 in-progress animations in Tote."; -const char kHoldingSpaceInProgressAnimationV2Description[] = - "Show v2 in-progress animations in Tote."; - const char kDiacriticsOnPhysicalKeyboardLongpressName[] = "Enable diacritics and variant character selection on PK longpress."; const char kDiacriticsOnPhysicalKeyboardLongpressDescription[] =
diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h index 938e98ec..b973a5b8 100644 --- a/chrome/browser/flag_descriptions.h +++ b/chrome/browser/flag_descriptions.h
@@ -242,6 +242,9 @@ extern const char kAutofillSaveAndFillVPAName[]; extern const char kAutofillSaveAndFillVPADescription[]; +extern const char kAutofillSaveCardUiExperimentName[]; +extern const char kAutofillSaveCardUiExperimentDescription[]; + extern const char kAutofillSuggestVirtualCardsOnIncompleteFormName[]; extern const char kAutofillSuggestVirtualCardsOnIncompleteFormDescription[]; @@ -665,6 +668,9 @@ extern const char kEnableSRPIsolatedPrerendersNSPName[]; extern const char kEnableSRPIsolatedPrerendersNSPDescription[]; +extern const char kExperimentalRgbKeyboardPatternsName[]; +extern const char kExperimentalRgbKeyboardPatternsDescription[]; + extern const char kReduceHorizontalFlingVelocityName[]; extern const char kReduceHorizontalFlingVelocityDescription[]; @@ -1805,6 +1811,9 @@ extern const char kGridTabSwitcherForTabletsName[]; extern const char kGridTabSwitcherForTabletsDescription[]; +extern const char kInfoCardAcknowledgementTrackingName[]; +extern const char kInfoCardAcknowledgementTrackingDescription[]; + extern const char kInstanceSwitcherName[]; extern const char kInstanceSwitcherDescription[]; @@ -2821,9 +2830,6 @@ extern const char kHelpAppSearchServiceIntegrationName[]; extern const char kHelpAppSearchServiceIntegrationDescription[]; -extern const char kHoldingSpaceInProgressAnimationV2Name[]; -extern const char kHoldingSpaceInProgressAnimationV2Description[]; - extern const char kDiacriticsOnPhysicalKeyboardLongpressName[]; extern const char kDiacriticsOnPhysicalKeyboardLongpressDescription[];
diff --git a/chrome/browser/headless/headless_mode_browsertest.cc b/chrome/browser/headless/headless_mode_browsertest.cc index c985ab2..766e0db 100644 --- a/chrome/browser/headless/headless_mode_browsertest.cc +++ b/chrome/browser/headless/headless_mode_browsertest.cc
@@ -65,13 +65,13 @@ } #endif // BUILDFLAG(IS_LINUX) -#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) +#if BUILDFLAG(IS_WIN) IN_PROC_BROWSER_TEST_F(HeadlessModeBrowserTest, BrowserDesktopWindowHidden) { - // On Windows and Mac, the Native Headless Chrome browser window exists but is + // On Windows the Native Headless Chrome browser window exists but is // hidden. EXPECT_FALSE(browser()->window()->IsVisible()); } -#endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) +#endif // BUILDFLAG(IS_WIN) class HeadlessModeBrowserTestWithUserDataDir : public HeadlessModeBrowserTest { public:
diff --git a/chrome/browser/headless/headless_mode_browsertest_mac.mm b/chrome/browser/headless/headless_mode_browsertest_mac.mm new file mode 100644 index 0000000..f09d293 --- /dev/null +++ b/chrome/browser/headless/headless_mode_browsertest_mac.mm
@@ -0,0 +1,24 @@ +// Copyright 2022 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/headless/headless_mode_browsertest.h" + +#import <Cocoa/Cocoa.h> + +#include "chrome/browser/ui/browser.h" +#include "chrome/browser/ui/browser_window.h" +#include "content/public/test/browser_test.h" +#include "testing/gtest/include/gtest/gtest.h" + +IN_PROC_BROWSER_TEST_F(HeadlessModeBrowserTest, + BrowserDesktopWindowVisibility) { + // On Mac, the Native Headless Chrome browser window exists and is + // visible, while the underlying platform window is hidden. + EXPECT_TRUE(browser()->window()->IsVisible()); + + gfx::NativeWindow native_window = browser()->window()->GetNativeWindow(); + NSWindow* ns_window = native_window.GetNativeNSWindow(); + + EXPECT_FALSE(ns_window.visible); +}
diff --git a/chrome/browser/history/history_tab_helper_unittest.cc b/chrome/browser/history/history_tab_helper_unittest.cc index c05b09e..ebff157 100644 --- a/chrome/browser/history/history_tab_helper_unittest.cc +++ b/chrome/browser/history/history_tab_helper_unittest.cc
@@ -118,7 +118,7 @@ std::string title; base::RunLoop loop; history_service_->QueryMostVisitedURLs( - /*result_count=*/10, /*days_back=*/1, + /*result_count=*/10, base::BindLambdaForTesting([&](history::MostVisitedURLList v) { result = v; loop.Quit();
diff --git a/chrome/browser/language/android/language_bridge.cc b/chrome/browser/language/android/language_bridge.cc index d924e06..e0a8598 100644 --- a/chrome/browser/language/android/language_bridge.cc +++ b/chrome/browser/language/android/language_bridge.cc
@@ -50,7 +50,6 @@ if (language_model) { std::vector<language::LanguageModel::LanguageDetails> languageDetails = language_model->GetLanguages(); - DCHECK(!languageDetails.empty()); for (const auto& details : languageDetails) { languages.push_back(details.lang_code); }
diff --git a/chrome/browser/password_manager/chrome_password_manager_client.cc b/chrome/browser/password_manager/chrome_password_manager_client.cc index 5de6e92..0e38b1a 100644 --- a/chrome/browser/password_manager/chrome_password_manager_client.cc +++ b/chrome/browser/password_manager/chrome_password_manager_client.cc
@@ -436,12 +436,12 @@ GetWebAuthnCredentialsDelegate()->IsWebAuthnAutofillEnabled()) { const std::vector<autofill::Suggestion>& suggestions = GetWebAuthnCredentialsDelegate()->GetWebAuthnSuggestions(); - base::ranges::transform(suggestions, - std::back_inserter(webauthn_credentials), - [](const auto& suggestion) { - return TouchToFillWebAuthnCredential( - suggestion.value, suggestion.backend_id); - }); + base::ranges::transform( + suggestions, std::back_inserter(webauthn_credentials), + [](const auto& suggestion) { + return TouchToFillWebAuthnCredential(suggestion.main_text.value, + suggestion.backend_id); + }); } GetOrCreateTouchToFillController()->Show(
diff --git a/chrome/browser/password_manager/chrome_webauthn_credentials_delegate_unittest.cc b/chrome/browser/password_manager/chrome_webauthn_credentials_delegate_unittest.cc index dc733ef..3c9b447 100644 --- a/chrome/browser/password_manager/chrome_webauthn_credentials_delegate_unittest.cc +++ b/chrome/browser/password_manager/chrome_webauthn_credentials_delegate_unittest.cc
@@ -117,9 +117,9 @@ auto suggestions = credentials_delegate_->GetWebAuthnSuggestions(); EXPECT_EQ(suggestions.size(), 2u); - EXPECT_EQ(suggestions[0].value, base::UTF8ToUTF16(DisplayName1())); + EXPECT_EQ(suggestions[0].main_text.value, base::UTF8ToUTF16(DisplayName1())); EXPECT_EQ(suggestions[0].label, base::UTF8ToUTF16(UserName1())); - EXPECT_EQ(suggestions[1].value, base::UTF8ToUTF16(DisplayName2())); + EXPECT_EQ(suggestions[1].main_text.value, base::UTF8ToUTF16(DisplayName2())); EXPECT_EQ(suggestions[1].label, base::UTF8ToUTF16(UserName2())); } @@ -150,7 +150,7 @@ auto suggestions = credentials_delegate_->GetWebAuthnSuggestions(); std::u16string error_string = u"Unknown account"; EXPECT_EQ(suggestions.size(), 1u); - EXPECT_EQ(suggestions[0].value, error_string); + EXPECT_EQ(suggestions[0].main_text.value, error_string); EXPECT_EQ(suggestions[0].label, base::UTF8ToUTF16(UserName1())); } @@ -169,7 +169,7 @@ auto suggestions = credentials_delegate_->GetWebAuthnSuggestions(); EXPECT_EQ(suggestions.size(), 1u); - EXPECT_EQ(suggestions[0].value, base::UTF8ToUTF16(DisplayName1())); + EXPECT_EQ(suggestions[0].main_text.value, base::UTF8ToUTF16(DisplayName1())); EXPECT_EQ(suggestions[0].label, std::u16string()); }
diff --git a/chrome/browser/policy/enrollment_status.h b/chrome/browser/policy/enrollment_status.h index e3008c05..88c093e 100644 --- a/chrome/browser/policy/enrollment_status.h +++ b/chrome/browser/policy/enrollment_status.h
@@ -47,14 +47,16 @@ ACTIVE_DIRECTORY_POLICY_FETCH_FAILED = 17, // Failed to fetch Active // Directory policy via // authpolicyd. - DM_TOKEN_STORE_FAILED = 18, // Failed to store DM token into the - // local state. - /* LICENSE_REQUEST_FAILED = 19, */ // Unused: Failed to get available - // license types. - OFFLINE_POLICY_LOAD_FAILED = 20, // Failed to load the policy data for the - // offline demo mode. - OFFLINE_POLICY_DECODING_FAILED = 21, // Failed when the policy data fails - // to be decoded. + DM_TOKEN_STORE_FAILED = 18, // Failed to store DM token into the + // local state. + /* LICENSE_REQUEST_FAILED = 19, */ // Unused: Failed to get available + // license types. + /* OFFLINE_POLICY_LOAD_FAILED = 20, */ // Deprecated: Failed to load the + // policy data for the offline demo + // mode. + /* OFFLINE_POLICY_DECODING_FAILED = 21, */ // Deprecated: Failed when the + // policy data fails to be + // decoded. // Device policy would block dev mode but the // kEnterpriseEnrollmentFailOnBlockDevMode flag was given. MAY_NOT_BLOCK_DEV_MODE = 22,
diff --git a/chrome/browser/resources/BUILD.gn b/chrome/browser/resources/BUILD.gn index ef00df6..45c71ad 100644 --- a/chrome/browser/resources/BUILD.gn +++ b/chrome/browser/resources/BUILD.gn
@@ -311,10 +311,10 @@ "$root_gen_dir/chrome/dev_ui_browser_resources.pak", "$root_gen_dir/chrome/internals_resources.pak", "$root_gen_dir/chrome/invalidations_resources.pak", + "$root_gen_dir/chrome/media_resources.pak", "$root_gen_dir/chrome/net_internals_resources.pak", "$root_gen_dir/chrome/omnibox_resources.pak", "$root_gen_dir/chrome/usb_internals_resources.pak", - "$root_gen_dir/chrome/webrtc_logs_resources.pak", "$root_gen_dir/components/dev_ui_components_resources.pak", "$root_gen_dir/components/download_internals_resources.pak", "$root_gen_dir/components/history_clusters_internals_resources.pak", @@ -330,7 +330,7 @@ "//chrome/browser/resources/browsing_topics:resources", "//chrome/browser/resources/internals:resources", "//chrome/browser/resources/invalidations:resources", - "//chrome/browser/resources/media:webrtc_logs_resources", + "//chrome/browser/resources/media:resources", "//chrome/browser/resources/net_internals:resources", "//chrome/browser/resources/omnibox:resources", "//chrome/browser/resources/usb_internals:resources",
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/background/panel/panel_background.js b/chrome/browser/resources/chromeos/accessibility/chromevox/background/panel/panel_background.js index 35c5b99c..d01396b 100644 --- a/chrome/browser/resources/chromeos/accessibility/chromevox/background/panel/panel_background.js +++ b/chrome/browser/resources/chromeos/accessibility/chromevox/background/panel/panel_background.js
@@ -36,6 +36,9 @@ BridgeHelper.registerHandler( BridgeTarget.PANEL_BACKGROUND, BridgeAction.SET_RANGE_TO_I_SEARCH_NODE, () => PanelBackground.instance.setRangeToISearchNode_()); + BridgeHelper.registerHandler( + BridgeTarget.PANEL_BACKGROUND, BridgeAction.WAIT_FOR_PANEL_COLLAPSE, + () => PanelBackground.instance.waitForPanelCollapse_()); } /** @@ -129,6 +132,37 @@ ChromeVoxState.instance.setCurrentRange(cursors.Range.fromNode(node)); } + + /** + * Listens for focus events, and returns once the target is not the panel. + * @private + */ + async waitForPanelCollapse_() { + return new Promise(async resolve => { + const desktop = await new Promise(chrome.automation.getDesktop); + // Watch for a focus event outside the panel. + const onFocus = (event) => { + if (event.target.docUrl.contains('chromevox/panel')) { + return; + } + + desktop.removeEventListener( + chrome.automation.EventType.FOCUS, onFocus, true); + + // Clears focus on the page by focusing the root explicitly. This makes + // sure we don't get future focus events as a result of giving this + // entire page focus (which would interfere with our desired range). + if (event.target.root) { + event.target.root.focus(); + } + + resolve(); + }; + + desktop.addEventListener( + chrome.automation.EventType.FOCUS, onFocus, true); + }); + } } /** @type {PanelBackground} */
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/common/background_bridge.js b/chrome/browser/resources/chromeos/accessibility/chromevox/common/background_bridge.js index e79f4c6..c7856db4 100644 --- a/chrome/browser/resources/chromeos/accessibility/chromevox/common/background_bridge.js +++ b/chrome/browser/resources/chromeos/accessibility/chromevox/common/background_bridge.js
@@ -161,5 +161,13 @@ async setRangeToISearchNode() { return BridgeHelper.sendMessage( BridgeTarget.PANEL_BACKGROUND, BridgeAction.SET_RANGE_TO_I_SEARCH_NODE); - } + }, + + /** + * Listens for focus events, and returns once the target is not the panel. + */ + async waitForPanelCollapse() { + return BridgeHelper.sendMessage( + BridgeTarget.PANEL_BACKGROUND, BridgeAction.WAIT_FOR_PANEL_COLLAPSE); + }, };
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/common/bridge_constants.js b/chrome/browser/resources/chromeos/accessibility/chromevox/common/bridge_constants.js index 1091aa6..3280aba 100644 --- a/chrome/browser/resources/chromeos/accessibility/chromevox/common/bridge_constants.js +++ b/chrome/browser/resources/chromeos/accessibility/chromevox/common/bridge_constants.js
@@ -41,4 +41,5 @@ SET_PREF: 'setPref', SET_RANGE_TO_I_SEARCH_NODE: 'setRangeToISearchNode', UPDATE_PUNCTUATION_ECHO: 'updatePunctuationEcho', + WAIT_FOR_PANEL_COLLAPSE: 'waitForPanelCollapse', };
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/panel/panel.js b/chrome/browser/resources/chromeos/accessibility/chromevox/panel/panel.js index 5a33834..28b20eb 100644 --- a/chrome/browser/resources/chromeos/accessibility/chromevox/panel/panel.js +++ b/chrome/browser/resources/chromeos/accessibility/chromevox/panel/panel.js
@@ -1047,46 +1047,23 @@ } /** @override */ - closeMenusAndRestoreFocus() { - const bkgnd = chrome.extension.getBackgroundPage(); - bkgnd.chrome.automation.getDesktop(function(desktop) { - // Watch for a blur on the panel. - const pendingCallback = Panel.pendingCallback_; - Panel.pendingCallback_ = null; - const onFocus = function(evt) { - if (evt.target.docUrl === location.href) { - return; - } + async closeMenusAndRestoreFocus() { + const pendingCallback = Panel.pendingCallback_; + Panel.pendingCallback_ = null; - desktop.removeEventListener( - chrome.automation.EventType.FOCUS, onFocus, true); + // Make sure all menus are cleared to avoid bogus output when we re-open. + Panel.clearMenus(); - // Clears focus on the page by focusing the root explicitly. This makes - // sure we don't get future focus events as a result of giving this - // entire page focus and that would have interfered with with our - // desired range. - if (evt.target.root) { - evt.target.root.focus(); - } + // Make sure we're not in full-screen mode. + Panel.setMode(PanelMode.COLLAPSED); - setTimeout(function() { - if (pendingCallback) { - pendingCallback(); - } - }, 0); - }; + Panel.activeMenu_ = null; - desktop.addEventListener( - chrome.automation.EventType.FOCUS, onFocus, true); + await BackgroundBridge.PanelBackground.waitForPanelCollapse(); - // Make sure all menus are cleared to avoid bogus output when we re-open. - Panel.clearMenus(); - - // Make sure we're not in full-screen mode. - Panel.setMode(PanelMode.COLLAPSED); - - Panel.activeMenu_ = null; - }); + if (pendingCallback) { + pendingCallback(); + } } /** Open the tutorial. */
diff --git a/chrome/browser/resources/chromeos/login/components/network_select_login.js b/chrome/browser/resources/chromeos/login/components/network_select_login.js index 8569edff..67c96cfd 100644 --- a/chrome/browser/resources/chromeos/login/components/network_select_login.js +++ b/chrome/browser/resources/chromeos/login/components/network_select_login.js
@@ -24,15 +24,6 @@ static get properties() { return { /** - Whether network selection is shown as a part of offline demo mode setup - flow. - */ - isOfflineDemoModeSetup: { - type: Boolean, - observer: 'onIsOfflineDemoModeSetupChanged_', - }, - - /** * True when connected to a network. * @private */ @@ -72,7 +63,6 @@ constructor() { super(); // Properties - this.isOfflineDemoModeSetup = false; this.isNetworkConnected = false; this.configureConnected = false; this.enableWifiScans = true; @@ -126,17 +116,6 @@ */ getNetworkCustomItems_() { const items = []; - if (this.isOfflineDemoModeSetup) { - items.push({ - customItemType: NetworkList.CustomItemType.OOBE, - customItemName: 'offlineDemoSetupListItemName', - polymerIcon: 'oobe-network-20:offline-demo-setup', - showBeforeNetworksList: true, - customData: { - onTap: () => this.onOfflineDemoSetupClicked_(), - }, - }); - } if (this.isNetworkConnected) { items.push({ customItemType: NetworkList.CustomItemType.OOBE, @@ -179,14 +158,6 @@ } /** - * Offline demo setup button handler. - * @private - */ - onOfflineDemoSetupClicked_() { - chrome.send('login.NetworkScreen.userActed', ['offline-demo-setup']); - } - - /** * Called when network setup is done. Notifies parent that network setup is * done. * @private @@ -250,11 +221,6 @@ if (!configuration) { return; } - if (configuration.networkOfflineDemo && this.isOfflineDemoModeSetup) { - window.setTimeout(() => this.onOfflineDemoSetupClicked_(), 0); - this.configuration_applied_ = true; - return; - } const defaultNetwork = this.$.networkSelect.getDefaultNetwork(); if (configuration.networkUseConnected && defaultNetwork && OncMojo.connectionStateIsConnected(defaultNetwork.connectionState)) { @@ -364,15 +330,6 @@ const itemState = event.detail; itemState.customData.onTap(); } - - /** - * Updates custom items when property that indicates if dialog is shown as a - * part of offline demo mode setup changes. - * @private - */ - onIsOfflineDemoModeSetupChanged_() { - this.$.networkSelect.customItems = this.getNetworkCustomItems_(); - } } customElements.define(NetworkSelectLogin.is, NetworkSelectLogin);
diff --git a/chrome/browser/resources/chromeos/login/screens/common/arc_terms_of_service.js b/chrome/browser/resources/chromeos/login/screens/common/arc_terms_of_service.js index 8839ac63..a05cdfe 100644 --- a/chrome/browser/resources/chromeos/login/screens/common/arc_terms_of_service.js +++ b/chrome/browser/resources/chromeos/login/screens/common/arc_terms_of_service.js
@@ -207,7 +207,7 @@ this.termsOfServiceHostName_ = 'https://play.google.com'; this.termsError = false; - this.usingOfflineTerms_ = false; + this.usingOfflineTermsForTesting_ = false; this.tosContent_ = ''; this.reloadsLeftForTesting_ = undefined; } @@ -372,7 +372,7 @@ * @param {string} targetUrl to show in overlay webview. */ showUrlOverlay(targetUrl) { - if (this.usingOfflineTerms_) { + if (this.usingOfflineTermsForTesting_) { const TERMS_URL = 'chrome://terms/arc/privacy_policy'; WebViewHelper.loadUrlContentToWebView( this.$.arcTosOverlayWebview, TERMS_URL, @@ -459,7 +459,7 @@ if (this.language_ && this.language_ == language && this.countryCode_ && this.countryCode_ == countryCode && this.uiStep != ArcTosState.ERROR && - !this.usingOfflineTerms_ && this.tosContent_) { + !this.usingOfflineTermsForTesting_ && this.tosContent_) { this.enableButtons_(true); return; } @@ -507,7 +507,7 @@ */ setTosForTesting(terms) { this.tosContent_ = terms; - this.usingOfflineTerms_ = true; + this.usingOfflineTermsForTesting_ = true; this.setTermsViewContentLoadedState_(); } @@ -580,7 +580,7 @@ --this.reloadsLeftForTesting_; } this.termsError = false; - this.usingOfflineTerms_ = false; + this.usingOfflineTermsForTesting_ = false; var termsView = this.$.arcTosView; termsView.src = this.termsOfServiceHostName_ + '/about/play-terms.html'; this.setUIStep(ArcTosState.LOADING); @@ -622,9 +622,10 @@ } var termsView = this.$.arcTosView; - if (this.usingOfflineTerms_) { - // Process offline ToS. Scripts added to web view by addContentScripts() - // are not executed when using data url. + + if (this.usingOfflineTermsForTesting_) { + // Process offline ToS for testing. Scripts added to web view by + // addContentScripts() are not executed when using data url. this.tosContent_ = termsView.src; var setParameters = `document.body.classList.add('large-view', 'offline-terms');`; @@ -678,8 +679,7 @@ */ onTermsViewErrorOccurred(details) { // If in demo mode fallback to offline Terms of Service copy. - if (this.isDemoModeSetup_()) { - this.usingOfflineTerms_ = true; + if (this.isDemoModeSetup_() && this.usingOfflineTermsForTesting_) { const TERMS_URL = 'chrome://terms/arc/terms'; var webView = this.$.arcTosView; WebViewHelper.loadUrlContentToWebView(
diff --git a/chrome/browser/resources/chromeos/login/screens/common/consolidated_consent.js b/chrome/browser/resources/chromeos/login/screens/common/consolidated_consent.js index 4f4bd4f4..ba85a1d 100644 --- a/chrome/browser/resources/chromeos/login/screens/common/consolidated_consent.js +++ b/chrome/browser/resources/chromeos/login/screens/common/consolidated_consent.js
@@ -126,12 +126,6 @@ // Text displayed in the Arc Terms of Service webview. this.arcTosContent_ = ''; - /** - * If online ARC ToS failed to load in the demo mode, the offline version - * is loaded and `isArcTosUsingOfflineTerms_` is set to true. - */ - this.isArcTosUsingOfflineTerms_ = false; - // Flag that ensures that OOBE configuration is applied only once. this.configuration_applied_ = false; @@ -337,12 +331,6 @@ const webview = this.$.arcTosWebview; var loadFailureCallback = () => { - if (this.isDemo_) { - this.isArcTosUsingOfflineTerms_ = true; - WebViewHelper.loadUrlContentToWebView( - webview, ARC_TERMS_URL, WebViewHelper.ContentType.HTML); - return; - } this.setUIStep(ConsolidatedConsentScreenState.ERROR); }; @@ -421,29 +409,15 @@ onArcTosContentLoad_() { const webview = this.$.arcTosWebview; - - if (this.isArcTosUsingOfflineTerms_) { - // Process offline ToS. Scripts added to web view by addContentScripts() - // are not executed when using data url. - var setParameters = - `document.body.classList.add('large-view', 'offline-terms');`; - webview.executeScript({code: setParameters}); - webview.insertCSS({file: 'playstore.css'}); - - // Load the offline terms for privacy policy - WebViewHelper.loadUrlContentToWebView( - webview, PRIVACY_POLICY_URL, WebViewHelper.ContentType.PDF); - } else { - webview.executeScript({code: 'getPrivacyPolicyLink();'}, (results) => { - if (results && results.length == 1 && typeof results[0] == 'string') { - this.loadPrivacyPolicyWebview_(results[0]); - } else { - var defaultLink = 'https://www.google.com/intl/' + - this.getCurrentLanguage_() + '/policies/privacy/'; - this.loadPrivacyPolicyWebview_(defaultLink); - } - }); - } + webview.executeScript({code: 'getPrivacyPolicyLink();'}, (results) => { + if (results && results.length == 1 && typeof results[0] == 'string') { + this.loadPrivacyPolicyWebview_(results[0]); + } else { + var defaultLink = 'https://www.google.com/intl/' + + this.getCurrentLanguage_() + '/policies/privacy/'; + this.loadPrivacyPolicyWebview_(defaultLink); + } + }); // In demo mode, consents are not recorded, so no need to store the ToS // Content.
diff --git a/chrome/browser/resources/chromeos/login/screens/oobe/oobe_network.js b/chrome/browser/resources/chromeos/login/screens/oobe/oobe_network.js index 01ee4e3..efeb756 100644 --- a/chrome/browser/resources/chromeos/login/screens/oobe/oobe_network.js +++ b/chrome/browser/resources/chromeos/login/screens/oobe/oobe_network.js
@@ -50,16 +50,6 @@ }, /** - * Whether offline demo mode is enabled. If it is enabled offline setup - * option will be shown in UI. - * @type {boolean} - */ - offlineDemoModeEnabled: { - type: Boolean, - value: false, - }, - - /** * Network error message. * @type {string} * @private @@ -94,11 +84,11 @@ } static get observers() { - return ['onDemoModeSetupChanged_(isDemoModeSetup, offlineDemoModeEnabled)']; + return []; } get EXTERNAL_API() { - return ['setOfflineDemoModeEnabled', 'setError']; + return ['setError']; } /** Called when dialog is shown. */ @@ -151,14 +141,6 @@ } /** - * Enables or disables the offline Demo Mode option. - * @param {boolean} enabled - */ - setOfflineDemoModeEnabled(enabled) { - this.offlineDemoModeEnabled = enabled; - } - - /** * Returns element of the network list selected by the query. * Used to simplify testing. * @param {string} query @@ -217,16 +199,6 @@ } /** - * Updates custom elements on network list when demo mode setup properties - * changed. - * @private - */ - onDemoModeSetupChanged_() { - this.$.networkSelectLogin.isOfflineDemoModeSetup = - this.isDemoModeSetup && this.offlineDemoModeEnabled; - } - - /** * This is called when network setup is done. * @private */
diff --git a/chrome/browser/resources/media/BUILD.gn b/chrome/browser/resources/media/BUILD.gn index b46d1ea..9ee7623 100644 --- a/chrome/browser/resources/media/BUILD.gn +++ b/chrome/browser/resources/media/BUILD.gn
@@ -10,10 +10,14 @@ preprocess_folder = "preprocessed" copy("copy_mojo") { - deps = [ "//chrome/browser/media:mojo_bindings_js" ] + deps = [ + "//chrome/browser/media:mojo_bindings_js", + "//services/media_session/public/mojom:mojom_js", + ] sources = [ "$root_gen_dir/mojom-webui/chrome/browser/media/history/media_history_store.mojom-webui.js", "$root_gen_dir/mojom-webui/chrome/browser/media/media_engagement_score_details.mojom-webui.js", + "$root_gen_dir/mojom-webui/services/media_session/public/mojom/media_session.mojom-webui.js", ] outputs = [ "$target_gen_dir/$preprocess_folder/{{source_file_part}}" ] } @@ -29,22 +33,19 @@ out_folder = "$target_gen_dir/$preprocess_folder" } -# Exclude these files from ts_library()'s output manifest, since they are -# manually registered in dev_ui_browser_resources.grd. -non_manifest_files = [ - "media_history.ts", - "media_data_table.ts", - "media_engagement.ts", - "media_engagement_score_details.mojom-webui.js", - "media_history_store.mojom-webui.js", -] - ts_library("build_ts") { root_dir = "$target_gen_dir/$preprocess_folder" out_dir = target_gen_dir tsconfig_base = "tsconfig_base.json" - in_files = non_manifest_files + [ "webrtc_logs.ts" ] - manifest_excludes = non_manifest_files + in_files = [ + "media_history.ts", + "media_data_table.ts", + "media_engagement.ts", + "media_engagement_score_details.mojom-webui.js", + "media_history_store.mojom-webui.js", + "media_session.mojom-webui.js", + "webrtc_logs.ts", + ] deps = [ "//ui/webui/resources:library", @@ -57,9 +58,11 @@ } generate_grd("build_grd") { - grd_prefix = "webrtc_logs" - out_grd = "$target_gen_dir/webrtc_logs_resources.grd" + grd_prefix = "media" + out_grd = "$target_gen_dir/resources.grd" input_files = [ + "media_engagement.html", + "media_history.html", "webrtc_logs.css", "webrtc_logs.html", ] @@ -68,17 +71,17 @@ deps = [ ":build_ts" ] } -grit("webrtc_logs_resources") { - source = "$target_gen_dir/webrtc_logs_resources.grd" +grit("resources") { + source = "$target_gen_dir/resources.grd" deps = [ ":build_grd" ] enable_input_discovery_for_gn_analyze = false defines = chrome_grit_defines use_brotli = true outputs = [ - "grit/webrtc_logs_resources.h", - "grit/webrtc_logs_resources_map.cc", - "grit/webrtc_logs_resources_map.h", - "webrtc_logs_resources.pak", + "grit/media_resources.h", + "grit/media_resources_map.cc", + "grit/media_resources_map.h", + "media_resources.pak", ] output_dir = "$root_gen_dir/chrome" }
diff --git a/chrome/browser/resources/new_tab_page/modules/modules.ts b/chrome/browser/resources/new_tab_page/modules/modules.ts index bcb18af..f5dc6bf7 100644 --- a/chrome/browser/resources/new_tab_page/modules/modules.ts +++ b/chrome/browser/resources/new_tab_page/modules/modules.ts
@@ -540,8 +540,13 @@ }; const dragEnter = (e: MouseEvent) => { + // Move hidden module containers to end of list to ensure user's new + // layout stays intact. const moduleContainers = [ - ...this.shadowRoot!.querySelectorAll<HTMLElement>('.module-container') + ...this.shadowRoot!.querySelectorAll<HTMLElement>( + '.module-container:not([hidden])'), + ...this.shadowRoot!.querySelectorAll<HTMLElement>( + '.module-container[hidden]') ]; const dragIndex = moduleContainers.indexOf(dragElement.parentElement!); const dropIndex = @@ -559,6 +564,7 @@ const firstRects = undraggedModuleWrappers.map(moduleWrapper => { return moduleWrapper.getBoundingClientRect(); }); + // If a tall module is dragged to a short module sibling container, the // modules in the sibling container should move together. // We add or subtract 1, from the drop index, to make sure the tall module
diff --git a/chrome/browser/resources/settings/chromeos/images/computer_and_bluetooth_switch.svg b/chrome/browser/resources/settings/chromeos/images/computer_and_bluetooth_switch.svg index befe4b8..ced14b48 100644 --- a/chrome/browser/resources/settings/chromeos/images/computer_and_bluetooth_switch.svg +++ b/chrome/browser/resources/settings/chromeos/images/computer_and_bluetooth_switch.svg
@@ -1 +1 @@ -<svg width="217" height="216" viewBox="0 0 217 216" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M4.044 149.598h208.4" stroke="#4285F4" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round"/><path d="M135.544 76.898l3.8-1.1a1.996 1.996 0 0 0 1.4-1.4l.9-3.9a1.902 1.902 0 0 0-.5-1.9l-2.9-2.8a2 2 0 0 0-2-.4l-3.8 1.1a2.1 2.1 0 0 0-1.4 1.5l-.9 3.8a2 2 0 0 0 .6 1.9l2.9 2.8a1.895 1.895 0 0 0 1.9.4z" fill="#2FE2EA"/><path d="M40.344 102.299a3.4 3.4 0 1 0-.001-6.801 3.4 3.4 0 0 0 0 6.801z" fill="#EE5FFA"/><path d="M74.644 59.198a7.598 7.598 0 0 0-.9 1.8l-1 1.9a7.8 7.8 0 0 1-3.9 3.5c-2.4.9-4.9 1.2-6.3 3.6a6.3 6.3 0 0 0-.1 6.1l.2.3a6.1 6.1 0 0 0 9.2 1.2l2.2-2.4a7.3 7.3 0 0 1 5-2.3h4.2a9 9 0 0 0 4-1.8 8.7 8.7 0 0 0-10.1-14.1 9.498 9.498 0 0 0-2.5 2.2v0z" stroke="#FBBC04" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M58.444 90.198c6.296 0 11.4-5.103 11.4-11.4 0-6.296-5.104-11.4-11.4-11.4s-11.4 5.104-11.4 11.4 5.104 11.4 11.4 11.4z" fill="#34A853"/><path d="M69.794 79.872a7.1 7.1 0 0 1-7.985-2.923l-.197-.296a1.012 1.012 0 0 1-.05-.085 7.3 7.3 0 0 1 .115-7.068l.003-.005a6.27 6.27 0 0 1 .989-1.288c.673.269 1.314.6 1.916.986-.46.337-.854.755-1.176 1.307a5.3 5.3 0 0 0-.104 5.087l.177.266a5.099 5.099 0 0 0 6.314 1.892 11.574 11.574 0 0 1-.002 2.127z" fill="#fff"/><path d="M198.844 82.698h-84.4a4.302 4.302 0 0 0-4.1 3.7l-5 60.1h91.9l5.1-60.1c.113-1.981-1.515-3.703-3.5-3.7z" stroke="#4285F4" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M195.044 149.598h-112.4c-.69 0-1.351-.364-1.839-1.012-.487-.648-.761-1.527-.761-2.444 0-.458.137-.897.38-1.221.244-.324.575-.507.92-.507h115c.345 0 .675.183.919.507s.381.763.381 1.221c0 .917-.274 1.796-.762 2.444-.487.648-1.148 1.012-1.838 1.012z" fill="#fff"/><path d="M198.061 87.335h-83.495c-.773-.055-1.506.516-1.562 1.301l-4.393 52.23h86.161l4.642-52.23c.069-.755-.615-1.363-1.353-1.3z" fill="#D2E3FC"/><path d="M154.847 86.603a1 1 0 1 0 0-2 1 1 0 0 0 0 2z" fill="#8AB4F8"/><path d="M188.544 146.959a1 1 0 0 1 1-1h3.7a1 1 0 1 1 0 2h-3.7a1 1 0 0 1-1-1zM187.653 146.959a1 1 0 1 1-2 0 1 1 0 0 1 2 0z" fill="#4285F4"/><path fill-rule="evenodd" clip-rule="evenodd" d="M82.644 150.598c-1.062 0-1.999-.561-2.638-1.411-.634-.843-.962-1.941-.962-3.044 0-.646.19-1.304.582-1.823.394-.525 1-.905 1.718-.905h115c.717 0 1.323.38 1.718.905.391.519.582 1.177.582 1.823 0 1.103-.328 2.201-.962 3.044-.639.85-1.577 1.411-2.638 1.411h-112.4zm113.439-2.613c-.336.447-.721.613-1.039.613h-27.3v-3a.996.996 0 0 0-.017-.183h28.615c.002 0 .008.002.017.007.02.011.059.039.105.1.097.128.18.35.18.621 0 .729-.22 1.389-.561 1.842zm-30.322-2.57H81.346l-.004.001a.357.357 0 0 0-.119.106c-.096.128-.18.35-.18.621 0 .729.221 1.389.561 1.842.337.447.722.613 1.04.613h83.1v-3c0-.063.006-.124.017-.183z" fill="#4285F4"/><path d="M164.613 116.502c1.778-6.728-1.932-13.543-8.286-15.221-6.355-1.68-12.947 2.414-14.724 9.142-1.778 6.728 1.932 13.543 8.286 15.222 6.354 1.678 12.946-2.415 14.724-9.143z" fill="#4285F4"/><path d="M123.544 62.398a6 6 0 0 1-8.4 1.1l-11.1-8.4a5.998 5.998 0 0 1-1.1-8.4 5.898 5.898 0 0 1 8.3-1.1l11.1 8.4a6.014 6.014 0 0 1 2.34 3.952 6 6 0 0 1-1.14 4.448z" fill="#EE5FFA"/><path d="M34.144 123.998l6.9.7a1.8 1.8 0 0 0 1.8-.8l4-5.3a1.9 1.9 0 0 0 .3-2l-2.8-6.1a2.11 2.11 0 0 0-1.6-1.1l-7-.7a2.003 2.003 0 0 0-1.8.7l-4 5.3a2.204 2.204 0 0 0-.2 2.1l2.8 6a2.004 2.004 0 0 0 1.6 1.2z" stroke="#EA4335" stroke-width="2" stroke-miterlimit="10"/><path d="M146.144 110.598l4.6 5.9a.796.796 0 0 0 1.2.2l13.4-10.4" stroke="#fff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M149.048 97.8l-.401-6a1.002 1.002 0 0 0-1.015-.935c-.171.003-.337.05-.485.135l-5 3.4a1.003 1.003 0 0 0-.269 1.357.998.998 0 0 0 .37.343l5.399 2.6a.904.904 0 0 0 1.002.019.901.901 0 0 0 .399-.919zM50.257 131.104H25.852a2.89 2.89 0 0 0-2.89 2.89v8.116a2.89 2.89 0 0 0 2.89 2.89h24.405a2.89 2.89 0 0 0 2.89-2.89v-8.116a2.89 2.89 0 0 0-2.89-2.89z" fill="#8AB4F8"/><path d="M55.315 147.4h-34.36c-1.846 0-3.291-1.124-3.291-2.489v-6.904c0-1.364 1.445-2.488 3.291-2.488 1.847 0 2.65.802 4.175 1.124 11.881 2.569 22.88.802 30.185-1.124a3.934 3.934 0 0 1 2.328.722 2.33 2.33 0 0 1 .963 1.766v6.904c0 1.365-1.525 2.489-3.291 2.489z" fill="#fff"/><path d="M55.315 147.4h-34.36c-1.846 0-3.291-1.124-3.291-2.489v-6.904c0-1.364 1.445-2.488 3.291-2.488 1.847 0 2.65.802 4.175 1.124 11.881 2.569 22.88.802 30.185-1.124a3.934 3.934 0 0 1 2.328.722 2.33 2.33 0 0 1 .963 1.766v6.904c0 1.365-1.525 2.489-3.291 2.489z" fill="#D2E3FC"/><path fill-rule="evenodd" clip-rule="evenodd" d="M16.861 142.406v-4.399c0-1.996 2.02-3.291 4.094-3.291 1.058 0 1.823.234 2.498.496.166.064.32.127.468.187.462.188.86.35 1.374.458l.004.001c11.712 2.532 22.572.794 29.811-1.115l.095-.026.098-.001a4.74 4.74 0 0 1 2.804.87l.005.004a3.131 3.131 0 0 1 1.296 2.375l.001.021v4.42h1.726v6.68h-46v-6.68h1.726zm8.101-4.978c11.996 2.593 23.084.827 30.457-1.106a3.13 3.13 0 0 1 1.757.572 1.537 1.537 0 0 1 .627 1.137v4.375H18.467v-4.399c0-.733.87-1.685 2.488-1.685.79 0 1.349.167 1.918.387.117.045.24.095.369.148.484.198 1.052.43 1.72.571z" fill="#4285F4"/></svg> +<svg width="217" height="216" viewBox="0 0 217 216" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M4.044 149.598h208.4" stroke="#4285F4" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round"/><path d="m135.544 76.898 3.8-1.1a1.996 1.996 0 0 0 1.4-1.4l.9-3.9a1.902 1.902 0 0 0-.5-1.9l-2.9-2.8a2 2 0 0 0-2-.4l-3.8 1.1a2.1 2.1 0 0 0-1.4 1.5l-.9 3.8a2 2 0 0 0 .6 1.9l2.9 2.8a1.895 1.895 0 0 0 1.9.4z" fill="#2FE2EA"/><path d="M40.344 102.299a3.4 3.4 0 1 0-.001-6.801 3.4 3.4 0 0 0 0 6.801z" fill="#EE5FFA"/><path d="M74.644 59.198a7.598 7.598 0 0 0-.9 1.8l-1 1.9a7.8 7.8 0 0 1-3.9 3.5c-2.4.9-4.9 1.2-6.3 3.6a6.3 6.3 0 0 0-.1 6.1l.2.3a6.1 6.1 0 0 0 9.2 1.2l2.2-2.4a7.3 7.3 0 0 1 5-2.3h4.2a9 9 0 0 0 4-1.8 8.7 8.7 0 0 0-10.1-14.1 9.498 9.498 0 0 0-2.5 2.2v0z" stroke="#FBBC04" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M58.444 90.198c6.296 0 11.4-5.103 11.4-11.4 0-6.296-5.104-11.4-11.4-11.4s-11.4 5.104-11.4 11.4 5.104 11.4 11.4 11.4z" fill="#34A853"/><path d="M69.794 79.872a7.1 7.1 0 0 1-7.985-2.923l-.197-.296a1.012 1.012 0 0 1-.05-.085 7.3 7.3 0 0 1 .115-7.068l.003-.005a6.27 6.27 0 0 1 .989-1.288c.673.269 1.314.6 1.916.986-.46.337-.854.755-1.176 1.307a5.3 5.3 0 0 0-.104 5.087l.177.266a5.099 5.099 0 0 0 6.314 1.892 11.574 11.574 0 0 1-.002 2.127z" fill="#fff"/><path d="M198.844 82.698h-84.4a4.302 4.302 0 0 0-4.1 3.7l-5 60.1h91.9l5.1-60.1c.113-1.981-1.515-3.703-3.5-3.7z" stroke="#4285F4" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M195.044 149.598h-112.4c-.69 0-1.351-.364-1.839-1.012-.487-.648-.761-1.527-.761-2.444 0-.458.137-.897.38-1.221.244-.324.575-.507.92-.507h115c.345 0 .675.183.919.507s.381.763.381 1.221c0 .917-.274 1.796-.762 2.444-.487.648-1.148 1.012-1.838 1.012z" fill="#fff"/><path d="M198.061 87.335h-83.495c-.773-.055-1.506.516-1.562 1.301l-4.393 52.23h86.161l4.642-52.23c.069-.755-.615-1.363-1.353-1.3z" fill="#D2E3FC"/><path d="M154.847 86.603a1 1 0 1 0 0-2 1 1 0 0 0 0 2z" fill="#8AB4F8"/><path d="M188.544 146.959a1 1 0 0 1 1-1h3.7a1 1 0 1 1 0 2h-3.7a1 1 0 0 1-1-1zm-.891 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0z" fill="#4285F4"/><path fill-rule="evenodd" clip-rule="evenodd" d="M82.644 150.598c-1.062 0-1.999-.561-2.638-1.411-.634-.843-.962-1.941-.962-3.044 0-.646.19-1.304.582-1.823.394-.525 1-.905 1.718-.905h115c.717 0 1.323.38 1.718.905.391.519.582 1.177.582 1.823 0 1.103-.328 2.201-.962 3.044-.639.85-1.577 1.411-2.638 1.411h-112.4zm113.439-2.613c-.336.447-.721.613-1.039.613h-27.3v-3a.996.996 0 0 0-.017-.183h28.615c.002 0 .008.002.017.007.02.011.059.039.105.1.097.128.18.35.18.621 0 .729-.22 1.389-.561 1.842zm-30.322-2.57H81.346l-.004.001a.357.357 0 0 0-.119.106c-.096.128-.18.35-.18.621 0 .729.221 1.389.561 1.842.337.447.722.613 1.04.613h83.1v-3c0-.063.006-.124.017-.183z" fill="#4285F4"/><path d="M164.613 116.502c1.778-6.728-1.932-13.543-8.286-15.221-6.355-1.68-12.947 2.414-14.724 9.142-1.778 6.728 1.932 13.543 8.286 15.222 6.354 1.678 12.946-2.415 14.724-9.143z" fill="#4285F4"/><path d="M123.544 62.398a6 6 0 0 1-8.4 1.1l-11.1-8.4a5.998 5.998 0 0 1-1.1-8.4 5.898 5.898 0 0 1 8.3-1.1l11.1 8.4a6.014 6.014 0 0 1 2.34 3.952 6 6 0 0 1-1.14 4.448z" fill="#EE5FFA"/><path d="m34.144 123.998 6.9.7a1.8 1.8 0 0 0 1.8-.8l4-5.3a1.9 1.9 0 0 0 .3-2l-2.8-6.1a2.11 2.11 0 0 0-1.6-1.1l-7-.7a2.003 2.003 0 0 0-1.8.7l-4 5.3a2.204 2.204 0 0 0-.2 2.1l2.8 6a2.004 2.004 0 0 0 1.6 1.2z" stroke="#EA4335" stroke-width="2" stroke-miterlimit="10"/><path d="m146.144 110.598 4.6 5.9a.796.796 0 0 0 1.2.2l13.4-10.4" stroke="#fff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="m149.048 97.8-.401-6a1.002 1.002 0 0 0-1.015-.935c-.171.003-.337.05-.485.135l-5 3.4a1.003 1.003 0 0 0-.269 1.357.998.998 0 0 0 .37.343l5.399 2.6a.904.904 0 0 0 1.002.019.901.901 0 0 0 .399-.919zm-98.791 33.304H25.852a2.89 2.89 0 0 0-2.89 2.89v8.116a2.89 2.89 0 0 0 2.89 2.89h24.405a2.89 2.89 0 0 0 2.89-2.89v-8.116a2.89 2.89 0 0 0-2.89-2.89z" fill="#8AB4F8"/><path d="M55.315 147.4h-34.36c-1.846 0-3.291-1.124-3.291-2.489v-6.904c0-1.364 1.445-2.488 3.291-2.488 1.847 0 2.65.802 4.175 1.124 11.881 2.569 22.88.802 30.185-1.124a3.934 3.934 0 0 1 2.328.722 2.33 2.33 0 0 1 .963 1.766v6.904c0 1.365-1.525 2.489-3.291 2.489z" fill="#fff"/><path d="M55.315 147.4h-34.36c-1.846 0-3.291-1.124-3.291-2.489v-6.904c0-1.364 1.445-2.488 3.291-2.488 1.847 0 2.65.802 4.175 1.124 11.881 2.569 22.88.802 30.185-1.124a3.934 3.934 0 0 1 2.328.722 2.33 2.33 0 0 1 .963 1.766v6.904c0 1.365-1.525 2.489-3.291 2.489z" fill="#D2E3FC"/><path fill-rule="evenodd" clip-rule="evenodd" d="M16.861 142.406v-4.399c0-1.996 2.02-3.291 4.094-3.291 1.058 0 1.823.234 2.498.496.166.064.32.127.468.187.462.188.86.35 1.374.458l.004.001c11.712 2.532 22.572.794 29.811-1.115l.095-.026.098-.001a4.74 4.74 0 0 1 2.804.87l.005.004a3.131 3.131 0 0 1 1.296 2.375l.001.021v4.42h1.726v6.68h-46v-6.68h1.726zm8.101-4.978c11.996 2.593 23.084.827 30.457-1.106a3.13 3.13 0 0 1 1.757.572 1.537 1.537 0 0 1 .627 1.137v4.375H18.467v-4.399c0-.733.87-1.685 2.488-1.685.79 0 1.349.167 1.918.387.117.045.24.095.369.148.484.198 1.052.43 1.72.571z" fill="#4285F4"/></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/chromeos/images/computer_and_bluetooth_switch_dark.svg b/chrome/browser/resources/settings/chromeos/images/computer_and_bluetooth_switch_dark.svg index e5c4a45b..e91c179 100644 --- a/chrome/browser/resources/settings/chromeos/images/computer_and_bluetooth_switch_dark.svg +++ b/chrome/browser/resources/settings/chromeos/images/computer_and_bluetooth_switch_dark.svg
@@ -1 +1 @@ -<svg width="217" height="216" viewBox="0 0 217 216" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M4.044 149.598h208.4" stroke="#669DF6" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round"/><path d="M135.544 76.898l3.8-1.1a1.996 1.996 0 0 0 1.4-1.4l.9-3.9a1.902 1.902 0 0 0-.5-1.9l-2.9-2.8a2 2 0 0 0-2-.4l-3.8 1.1a2.1 2.1 0 0 0-1.4 1.5l-.9 3.8a2 2 0 0 0 .6 1.9l2.9 2.8a1.895 1.895 0 0 0 1.9.4z" fill="#5DF1F2"/><path d="M40.344 102.299a3.4 3.4 0 1 0-.001-6.801 3.4 3.4 0 0 0 0 6.801z" fill="#F882FE"/><path d="M74.644 59.198a7.598 7.598 0 0 0-.9 1.8l-1 1.9a7.8 7.8 0 0 1-3.9 3.5c-2.4.9-4.9 1.2-6.3 3.6a6.3 6.3 0 0 0-.1 6.1l.2.3a6.1 6.1 0 0 0 9.2 1.2l2.2-2.4a7.3 7.3 0 0 1 5-2.3h4.2a9 9 0 0 0 4-1.8 8.7 8.7 0 0 0-10.1-14.1 9.498 9.498 0 0 0-2.5 2.2v0z" stroke="#FCC934" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M58.444 90.198c6.296 0 11.4-5.103 11.4-11.4 0-6.296-5.104-11.4-11.4-11.4s-11.4 5.104-11.4 11.4 5.104 11.4 11.4 11.4z" fill="#5BB974"/><path d="M69.794 79.872a7.1 7.1 0 0 1-7.985-2.923l-.197-.296a1.012 1.012 0 0 1-.05-.085 7.3 7.3 0 0 1 .115-7.068l.003-.005a6.27 6.27 0 0 1 .989-1.288c.673.269 1.314.6 1.916.986-.46.337-.854.755-1.176 1.307a5.3 5.3 0 0 0-.104 5.087l.177.266a5.099 5.099 0 0 0 6.314 1.892 11.574 11.574 0 0 1-.002 2.127z" fill="#323336"/><path d="M198.844 82.698h-84.4a4.302 4.302 0 0 0-4.1 3.7l-5 60.1h91.9l5.1-60.1c.113-1.981-1.515-3.703-3.5-3.7z" stroke="#669DF6" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M195.044 149.598h-112.4c-.69 0-1.351-.364-1.839-1.012-.487-.648-.761-1.527-.761-2.444 0-.458.137-.897.38-1.221.244-.324.575-.507.92-.507h115c.345 0 .675.183.919.507s.381.763.381 1.221c0 .917-.274 1.796-.762 2.444-.487.648-1.148 1.012-1.838 1.012z" fill="#323336"/><path d="M198.061 87.335h-83.495c-.773-.055-1.506.516-1.562 1.301l-4.393 52.23h86.161l4.642-52.23c.069-.755-.615-1.363-1.353-1.3z" fill="#8AB4F8" fill-opacity=".4"/><path d="M154.847 86.603a1 1 0 1 0 0-2 1 1 0 0 0 0 2z" fill="#1A73E8" fill-opacity=".4"/><path d="M188.544 146.959a1 1 0 0 1 1-1h3.7a1 1 0 1 1 0 2h-3.7a1 1 0 0 1-1-1zM187.653 146.959a1 1 0 1 1-2 0 1 1 0 0 1 2 0z" fill="#669DF6"/><path fill-rule="evenodd" clip-rule="evenodd" d="M82.644 150.598c-1.062 0-1.999-.561-2.638-1.411-.634-.843-.962-1.941-.962-3.044 0-.646.19-1.304.582-1.823.394-.525 1-.905 1.718-.905h115c.717 0 1.323.38 1.718.905.391.519.582 1.177.582 1.823 0 1.103-.328 2.201-.962 3.044-.639.85-1.577 1.411-2.638 1.411h-112.4zm113.439-2.613c-.336.447-.721.613-1.039.613h-27.3v-3a.996.996 0 0 0-.017-.183h28.615c.002 0 .008.002.017.007.02.011.059.039.105.1.097.128.18.35.18.621 0 .729-.22 1.389-.561 1.842zm-30.322-2.57H81.346l-.004.001a.357.357 0 0 0-.119.106c-.096.128-.18.35-.18.621 0 .729.221 1.389.561 1.842.337.447.722.613 1.04.613h83.1v-3c0-.063.006-.124.017-.183z" fill="#669DF6"/><path d="M164.613 116.502c1.778-6.728-1.932-13.543-8.286-15.221-6.355-1.68-12.947 2.414-14.724 9.142-1.778 6.728 1.932 13.543 8.286 15.222 6.354 1.678 12.946-2.415 14.724-9.143z" fill="#669DF6"/><path d="M123.544 62.398a6 6 0 0 1-8.4 1.1l-11.1-8.4a5.998 5.998 0 0 1-1.1-8.4 5.898 5.898 0 0 1 8.3-1.1l11.1 8.4a6.014 6.014 0 0 1 2.34 3.952 6 6 0 0 1-1.14 4.448z" fill="#F882FE"/><path d="M34.144 123.998l6.9.7a1.8 1.8 0 0 0 1.8-.8l4-5.3a1.9 1.9 0 0 0 .3-2l-2.8-6.1a2.11 2.11 0 0 0-1.6-1.1l-7-.7a2.003 2.003 0 0 0-1.8.7l-4 5.3a2.204 2.204 0 0 0-.2 2.1l2.8 6a2.004 2.004 0 0 0 1.6 1.2z" stroke="#EA4335" stroke-width="2" stroke-miterlimit="10"/><path d="M146.144 110.598l4.6 5.9a.796.796 0 0 0 1.2.2l13.4-10.4" stroke="#323336" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M149.048 97.8l-.401-6a1.002 1.002 0 0 0-1.015-.935c-.171.003-.337.05-.485.135l-5 3.4a1.003 1.003 0 0 0-.269 1.357.998.998 0 0 0 .37.343l5.399 2.6a.904.904 0 0 0 1.002.019.901.901 0 0 0 .399-.919zM50.257 131.104H25.852a2.89 2.89 0 0 0-2.89 2.89v8.116a2.89 2.89 0 0 0 2.89 2.89h24.405a2.89 2.89 0 0 0 2.89-2.89v-8.116a2.89 2.89 0 0 0-2.89-2.89z" fill="#1A73E8" fill-opacity=".4"/><path d="M55.315 147.4h-34.36c-1.846 0-3.291-1.124-3.291-2.489v-6.904c0-1.364 1.445-2.488 3.291-2.488 1.847 0 2.65.802 4.175 1.124 11.881 2.569 22.88.802 30.185-1.124a3.934 3.934 0 0 1 2.328.722 2.33 2.33 0 0 1 .963 1.766v6.904c0 1.365-1.525 2.489-3.291 2.489z" fill="#323336"/><path d="M55.315 147.4h-34.36c-1.846 0-3.291-1.124-3.291-2.489v-6.904c0-1.364 1.445-2.488 3.291-2.488 1.847 0 2.65.802 4.175 1.124 11.881 2.569 22.88.802 30.185-1.124a3.934 3.934 0 0 1 2.328.722 2.33 2.33 0 0 1 .963 1.766v6.904c0 1.365-1.525 2.489-3.291 2.489z" fill="#8AB4F8" fill-opacity=".4"/><path fill-rule="evenodd" clip-rule="evenodd" d="M16.861 142.406v-4.399c0-1.996 2.02-3.291 4.094-3.291 1.058 0 1.823.234 2.498.496.166.064.32.127.468.187.462.188.86.35 1.374.458l.004.001c11.712 2.532 22.572.794 29.811-1.115l.095-.026.098-.001a4.74 4.74 0 0 1 2.804.87l.005.004a3.131 3.131 0 0 1 1.296 2.375l.001.021v4.42h1.726v6.68h-46v-6.68h1.726zm8.101-4.978c11.996 2.593 23.084.827 30.457-1.106a3.13 3.13 0 0 1 1.757.572 1.537 1.537 0 0 1 .627 1.137v4.375H18.467v-4.399c0-.733.87-1.685 2.488-1.685.79 0 1.349.167 1.918.387.117.045.24.095.369.148.484.198 1.052.43 1.72.571z" fill="#669DF6"/></svg> +<svg width="217" height="216" viewBox="0 0 217 216" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M4.044 149.598h208.4" stroke="#669DF6" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round"/><path d="m135.544 76.898 3.8-1.1a1.996 1.996 0 0 0 1.4-1.4l.9-3.9a1.902 1.902 0 0 0-.5-1.9l-2.9-2.8a2 2 0 0 0-2-.4l-3.8 1.1a2.1 2.1 0 0 0-1.4 1.5l-.9 3.8a2 2 0 0 0 .6 1.9l2.9 2.8a1.895 1.895 0 0 0 1.9.4z" fill="#5DF1F2"/><path d="M40.344 102.299a3.4 3.4 0 1 0-.001-6.801 3.4 3.4 0 0 0 0 6.801z" fill="#F882FE"/><path d="M74.644 59.198a7.598 7.598 0 0 0-.9 1.8l-1 1.9a7.8 7.8 0 0 1-3.9 3.5c-2.4.9-4.9 1.2-6.3 3.6a6.3 6.3 0 0 0-.1 6.1l.2.3a6.1 6.1 0 0 0 9.2 1.2l2.2-2.4a7.3 7.3 0 0 1 5-2.3h4.2a9 9 0 0 0 4-1.8 8.7 8.7 0 0 0-10.1-14.1 9.498 9.498 0 0 0-2.5 2.2v0z" stroke="#FCC934" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M58.444 90.198c6.296 0 11.4-5.103 11.4-11.4 0-6.296-5.104-11.4-11.4-11.4s-11.4 5.104-11.4 11.4 5.104 11.4 11.4 11.4z" fill="#5BB974"/><path d="M69.794 79.872a7.1 7.1 0 0 1-7.985-2.923l-.197-.296a1.012 1.012 0 0 1-.05-.085 7.3 7.3 0 0 1 .115-7.068l.003-.005a6.27 6.27 0 0 1 .989-1.288c.673.269 1.314.6 1.916.986-.46.337-.854.755-1.176 1.307a5.3 5.3 0 0 0-.104 5.087l.177.266a5.099 5.099 0 0 0 6.314 1.892 11.574 11.574 0 0 1-.002 2.127z" fill="#323336"/><path d="M198.844 82.698h-84.4a4.302 4.302 0 0 0-4.1 3.7l-5 60.1h91.9l5.1-60.1c.113-1.981-1.515-3.703-3.5-3.7z" stroke="#669DF6" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M195.044 149.598h-112.4c-.69 0-1.351-.364-1.839-1.012-.487-.648-.761-1.527-.761-2.444 0-.458.137-.897.38-1.221.244-.324.575-.507.92-.507h115c.345 0 .675.183.919.507s.381.763.381 1.221c0 .917-.274 1.796-.762 2.444-.487.648-1.148 1.012-1.838 1.012z" fill="#323336"/><path d="M198.061 87.335h-83.495c-.773-.055-1.506.516-1.562 1.301l-4.393 52.23h86.161l4.642-52.23c.069-.755-.615-1.363-1.353-1.3z" fill="#8AB4F8" fill-opacity=".4"/><path d="M154.847 86.603a1 1 0 1 0 0-2 1 1 0 0 0 0 2z" fill="#1A73E8" fill-opacity=".4"/><path d="M188.544 146.959a1 1 0 0 1 1-1h3.7a1 1 0 1 1 0 2h-3.7a1 1 0 0 1-1-1zm-.891 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0z" fill="#669DF6"/><path fill-rule="evenodd" clip-rule="evenodd" d="M82.644 150.598c-1.062 0-1.999-.561-2.638-1.411-.634-.843-.962-1.941-.962-3.044 0-.646.19-1.304.582-1.823.394-.525 1-.905 1.718-.905h115c.717 0 1.323.38 1.718.905.391.519.582 1.177.582 1.823 0 1.103-.328 2.201-.962 3.044-.639.85-1.577 1.411-2.638 1.411h-112.4zm113.439-2.613c-.336.447-.721.613-1.039.613h-27.3v-3a.996.996 0 0 0-.017-.183h28.615c.002 0 .008.002.017.007.02.011.059.039.105.1.097.128.18.35.18.621 0 .729-.22 1.389-.561 1.842zm-30.322-2.57H81.346l-.004.001a.357.357 0 0 0-.119.106c-.096.128-.18.35-.18.621 0 .729.221 1.389.561 1.842.337.447.722.613 1.04.613h83.1v-3c0-.063.006-.124.017-.183z" fill="#669DF6"/><path d="M164.613 116.502c1.778-6.728-1.932-13.543-8.286-15.221-6.355-1.68-12.947 2.414-14.724 9.142-1.778 6.728 1.932 13.543 8.286 15.222 6.354 1.678 12.946-2.415 14.724-9.143z" fill="#669DF6"/><path d="M123.544 62.398a6 6 0 0 1-8.4 1.1l-11.1-8.4a5.998 5.998 0 0 1-1.1-8.4 5.898 5.898 0 0 1 8.3-1.1l11.1 8.4a6.014 6.014 0 0 1 2.34 3.952 6 6 0 0 1-1.14 4.448z" fill="#F882FE"/><path d="m34.144 123.998 6.9.7a1.8 1.8 0 0 0 1.8-.8l4-5.3a1.9 1.9 0 0 0 .3-2l-2.8-6.1a2.11 2.11 0 0 0-1.6-1.1l-7-.7a2.003 2.003 0 0 0-1.8.7l-4 5.3a2.204 2.204 0 0 0-.2 2.1l2.8 6a2.004 2.004 0 0 0 1.6 1.2z" stroke="#EA4335" stroke-width="2" stroke-miterlimit="10"/><path d="m146.144 110.598 4.6 5.9a.796.796 0 0 0 1.2.2l13.4-10.4" stroke="#323336" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="m149.048 97.8-.401-6a1.002 1.002 0 0 0-1.015-.935c-.171.003-.337.05-.485.135l-5 3.4a1.003 1.003 0 0 0-.269 1.357.998.998 0 0 0 .37.343l5.399 2.6a.904.904 0 0 0 1.002.019.901.901 0 0 0 .399-.919zm-98.791 33.304H25.852a2.89 2.89 0 0 0-2.89 2.89v8.116a2.89 2.89 0 0 0 2.89 2.89h24.405a2.89 2.89 0 0 0 2.89-2.89v-8.116a2.89 2.89 0 0 0-2.89-2.89z" fill="#1A73E8" fill-opacity=".4"/><path d="M55.315 147.4h-34.36c-1.846 0-3.291-1.124-3.291-2.489v-6.904c0-1.364 1.445-2.488 3.291-2.488 1.847 0 2.65.802 4.175 1.124 11.881 2.569 22.88.802 30.185-1.124a3.934 3.934 0 0 1 2.328.722 2.33 2.33 0 0 1 .963 1.766v6.904c0 1.365-1.525 2.489-3.291 2.489z" fill="#323336"/><path d="M55.315 147.4h-34.36c-1.846 0-3.291-1.124-3.291-2.489v-6.904c0-1.364 1.445-2.488 3.291-2.488 1.847 0 2.65.802 4.175 1.124 11.881 2.569 22.88.802 30.185-1.124a3.934 3.934 0 0 1 2.328.722 2.33 2.33 0 0 1 .963 1.766v6.904c0 1.365-1.525 2.489-3.291 2.489z" fill="#8AB4F8" fill-opacity=".4"/><path fill-rule="evenodd" clip-rule="evenodd" d="M16.861 142.406v-4.399c0-1.996 2.02-3.291 4.094-3.291 1.058 0 1.823.234 2.498.496.166.064.32.127.468.187.462.188.86.35 1.374.458l.004.001c11.712 2.532 22.572.794 29.811-1.115l.095-.026.098-.001a4.74 4.74 0 0 1 2.804.87l.005.004a3.131 3.131 0 0 1 1.296 2.375l.001.021v4.42h1.726v6.68h-46v-6.68h1.726zm8.101-4.978c11.996 2.593 23.084.827 30.457-1.106a3.13 3.13 0 0 1 1.757.572 1.537 1.537 0 0 1 .627 1.137v4.375H18.467v-4.399c0-.733.87-1.685 2.488-1.685.79 0 1.349.167 1.918.387.117.045.24.095.369.148.484.198 1.052.43 1.72.571z" fill="#669DF6"/></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/chromeos/images/error_badge.svg b/chrome/browser/resources/settings/chromeos/images/error_badge.svg index b2333e09..2aaa4eb6 100644 --- a/chrome/browser/resources/settings/chromeos/images/error_badge.svg +++ b/chrome/browser/resources/settings/chromeos/images/error_badge.svg
@@ -1 +1 @@ -<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="10" cy="10" r="6" fill="#D93025"/><path fill-rule="evenodd" clip-rule="evenodd" d="M9 10H11V6H9V10ZM10 2C5.584 2 2 5.584 2 10C2 14.416 5.584 18 10 18C14.416 18 18 14.416 18 10C18 5.584 14.416 2 10 2ZM10 16C6.6925 16 4 13.3075 4 10C4 6.6925 6.6925 4 10 4C13.3075 4 16 6.6925 16 10C16 13.3075 13.3075 16 10 16ZM9 14H11V12H9V14Z" fill="white"/></svg> +<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="10" cy="10" r="6" fill="#D93025"/><path fill-rule="evenodd" clip-rule="evenodd" d="M9 10h2V6H9v4Zm1-8c-4.416 0-8 3.584-8 8s3.584 8 8 8 8-3.584 8-8-3.584-8-8-8Zm0 14c-3.308 0-6-2.693-6-6 0-3.308 2.692-6 6-6 3.307 0 6 2.692 6 6 0 3.307-2.693 6-6 6Zm-1-2h2v-2H9v2Z" fill="#fff"/></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/chromeos/images/error_badge_dark.svg b/chrome/browser/resources/settings/chromeos/images/error_badge_dark.svg index 39413b2..6d5cec846 100644 --- a/chrome/browser/resources/settings/chromeos/images/error_badge_dark.svg +++ b/chrome/browser/resources/settings/chromeos/images/error_badge_dark.svg
@@ -1 +1 @@ -<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="10" cy="10" r="6" fill="#F28B82"/><path fill-rule="evenodd" clip-rule="evenodd" d="M9 10H11V6H9V10ZM10 2C5.584 2 2 5.584 2 10C2 14.416 5.584 18 10 18C14.416 18 18 14.416 18 10C18 5.584 14.416 2 10 2ZM10 16C6.6925 16 4 13.3075 4 10C4 6.6925 6.6925 4 10 4C13.3075 4 16 6.6925 16 10C16 13.3075 13.3075 16 10 16ZM9 14H11V12H9V14Z" fill="#202124"/><path fill-rule="evenodd" clip-rule="evenodd" d="M9 10H11V6H9V10ZM10 2C5.584 2 2 5.584 2 10C2 14.416 5.584 18 10 18C14.416 18 18 14.416 18 10C18 5.584 14.416 2 10 2ZM10 16C6.6925 16 4 13.3075 4 10C4 6.6925 6.6925 4 10 4C13.3075 4 16 6.6925 16 10C16 13.3075 13.3075 16 10 16ZM9 14H11V12H9V14Z" fill="white" fill-opacity="0.04"/></svg> +<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="10" cy="10" r="6" fill="#F28B82"/><path fill-rule="evenodd" clip-rule="evenodd" d="M9 10h2V6H9v4Zm1-8c-4.416 0-8 3.584-8 8s3.584 8 8 8 8-3.584 8-8-3.584-8-8-8Zm0 14c-3.308 0-6-2.693-6-6 0-3.308 2.692-6 6-6 3.307 0 6 2.692 6 6 0 3.307-2.693 6-6 6Zm-1-2h2v-2H9v2Z" fill="#202124"/><path fill-rule="evenodd" clip-rule="evenodd" d="M9 10h2V6H9v4Zm1-8c-4.416 0-8 3.584-8 8s3.584 8 8 8 8-3.584 8-8-3.584-8-8-8Zm0 14c-3.308 0-6-2.693-6-6 0-3.308 2.692-6 6-6 3.307 0 6 2.692 6 6 0 3.307-2.693 6-6 6Zm-1-2h2v-2H9v2Z" fill="#fff" fill-opacity=".04"/></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/chromeos/images/icon_add_wifi.svg b/chrome/browser/resources/settings/chromeos/images/icon_add_wifi.svg index 7174d59..c0d8784c 100644 --- a/chrome/browser/resources/settings/chromeos/images/icon_add_wifi.svg +++ b/chrome/browser/resources/settings/chromeos/images/icon_add_wifi.svg
@@ -1 +1 @@ -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24"><path fill="#4285f4" d="M10.92 16.85l-.91 1.14L10 18l-.01-.01L0 5.46C.387 5.164 4.227 2 10 2c5.765 0 9.613 3.165 10 3.46l-2.198 2.756a6 6 0 0 0-6.882 8.634z" fill-opacity=".3"/><path fill="#4285f4" d="M17 13v-3h-2v3h-3v2h3v3h2v-3h3v-2h-3z"/></svg> \ No newline at end of file +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24"><path fill="#4285f4" d="m10.92 16.85-.91 1.14L10 18l-.01-.01L0 5.46C.387 5.164 4.227 2 10 2c5.765 0 9.613 3.165 10 3.46l-2.198 2.756a6 6 0 0 0-6.882 8.634z" fill-opacity=".3"/><path fill="#4285f4" d="M17 13v-3h-2v3h-3v2h3v3h2v-3h3v-2h-3z"/></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/chromeos/images/icon_pair_bluetooth.svg b/chrome/browser/resources/settings/chromeos/images/icon_pair_bluetooth.svg index c834de32..b6018a98 100644 --- a/chrome/browser/resources/settings/chromeos/images/icon_pair_bluetooth.svg +++ b/chrome/browser/resources/settings/chromeos/images/icon_pair_bluetooth.svg
@@ -1 +1 @@ -<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none"><mask id="a" maskUnits="userSpaceOnUse" x="1" y="1" width="12" height="19" fill="#000"><path fill="#fff" d="M1 1h12v19H1z"/><path fill-rule="evenodd" clip-rule="evenodd" d="M9.464 13.317l-.842-.845v3.655l1.554-1.559c.342.462.75.873 1.207 1.22L8.42 18.762a.88.88 0 0 1-1.482-.646v-5.482l-3.431 3.442a.872.872 0 0 1-1.246 0 .88.88 0 0 1 0-1.25l4.312-4.325L2.26 6.166a.88.88 0 0 1 0-1.25.872.872 0 0 1 1.246 0l3.43 3.443V2.885c.001-.223.087-.44.24-.603a.884.884 0 0 1 1.251-.043l3.56 3.571A5.997 5.997 0 0 0 9 11c0 .821.165 1.604.464 2.317zm.98-6.624L8.622 4.866V8.52l1.822-1.827z"/></mask><path fill-rule="evenodd" clip-rule="evenodd" d="M9.464 13.317l-.842-.845v3.655l1.554-1.559c.342.462.75.873 1.207 1.22L8.42 18.762a.88.88 0 0 1-1.482-.646v-5.482l-3.431 3.442a.872.872 0 0 1-1.246 0 .88.88 0 0 1 0-1.25l4.312-4.325L2.26 6.166a.88.88 0 0 1 0-1.25.872.872 0 0 1 1.246 0l3.43 3.443V2.885c.001-.223.087-.44.24-.603a.884.884 0 0 1 1.251-.043l3.56 3.571A5.997 5.997 0 0 0 9 11c0 .821.165 1.604.464 2.317zm.98-6.624L8.622 4.866V8.52l1.822-1.827z" fill="#1A73E8" fill-opacity=".3"/><path d="M8.622 12.473l.284-.283-.684-.685v.967h.4zm.842.844l-.284.282.652-.437-.368.155zm-.842 2.81h-.4v.968l.684-.685-.284-.283zm1.554-1.559l.321-.238-.276-.373-.328.329.283.282zm1.207 1.22l.284.282.323-.325-.365-.276-.242.319zM8.42 18.762l.273.292.01-.01-.283-.282zm-1.482-6.128h.4v-.968l-.684.686.284.282zm-3.431 3.442l-.284-.282.284.282zm-1.246-1.25l-.283-.282.283.283zm4.312-4.325l.284.282.28-.282-.28-.282-.284.282zM2.26 6.166l.284-.282-.284.282zm1.246-1.25l.283-.282-.283.283zm3.43 3.443l-.283.282.684.686v-.968h-.4zm0-5.474l-.4-.001v.001h.4zm.24-.603l-.293-.273.292.273zm1.251-.043l.284-.282-.01-.01-.274.292zm3.56 3.571l.2.346.45-.26-.367-.368-.283.282zm-3.365-.944l.284-.283-.684-.685v.968h.4zm1.822 1.827l.283.282.281-.282-.281-.282-.283.282zM8.622 8.52h-.4v.968l.684-.685-.284-.283zm-.283 4.235l.841.844.567-.565-.841-.844-.567.565zm.683 3.372v-3.654h-.8v3.654h.8zm.87-1.841L8.34 15.845l.567.565 1.553-1.56-.566-.564zm1.733 1.183a5.637 5.637 0 0 1-1.128-1.139l-.642.476c.364.493.798.931 1.287 1.3l.483-.637zm-2.923 3.575l2.965-2.974-.567-.565-2.964 2.975.566.564zm-.884.356c.324 0 .637-.124.874-.346l-.546-.584a.48.48 0 0 1-.328.13v.8zm-1.281-1.284c0 .709.572 1.284 1.28 1.284v-.8a.482.482 0 0 1-.48-.484h-.8zm0-5.482v5.482h.8v-5.482h-.8zm-2.748 3.725l3.43-3.443-.566-.564-3.43 3.442.566.565zm-1.812 0a1.272 1.272 0 0 0 1.812 0l-.567-.565a.472.472 0 0 1-.678 0l-.567.565zm0-1.815a1.28 1.28 0 0 0 0 1.815l.567-.565a.48.48 0 0 1 0-.685l-.567-.565zm4.312-4.326l-4.312 4.326.567.565 4.312-4.326-.567-.565zm-4.312-3.77l4.312 4.335.567-.564-4.312-4.335-.567.564zm0-1.814a1.28 1.28 0 0 0 0 1.814l.567-.564a.48.48 0 0 1 0-.685l-.567-.565zm1.812 0a1.272 1.272 0 0 0-1.812 0l.567.565a.472.472 0 0 1 .678 0l.567-.565zm3.43 3.442L3.79 4.634l-.567.565 3.431 3.442.567-.565zm-.682-5.19v5.473h.8V2.885h-.8zm.345-.877c-.22.238-.344.55-.345.875l.8.003c0-.123.047-.242.131-.333l-.586-.544zm1.819-.062a1.284 1.284 0 0 0-1.818.062l.585.545a.484.484 0 0 1 .686-.023l.547-.584zm3.569 3.581L8.71 1.957l-.566.565 3.56 3.57.566-.564zM9.4 11a5.597 5.597 0 0 1 2.788-4.844l-.402-.691A6.398 6.398 0 0 0 8.6 11h.8zm.432 2.162A5.581 5.581 0 0 1 9.4 11h-.8c0 .875.176 1.71.495 2.471l.737-.309zM8.34 5.148l1.821 1.827.567-.564-1.821-1.828-.567.565zm.683 3.372V4.866h-.8V8.52h.8zm1.138-2.11L8.34 8.239l.567.565 1.82-1.828-.566-.564z" fill="#1A73E8" fill-opacity=".3" mask="url(#a)"/><path fill-rule="evenodd" clip-rule="evenodd" d="M14 12v2h2v-2h2v-2h-2V8h-2v2h-2v2h2z" fill="#1A73E8"/></svg> \ No newline at end of file +<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none"><mask id="a" maskUnits="userSpaceOnUse" x="1" y="1" width="12" height="19" fill="#000"><path fill="#fff" d="M1 1h12v19H1z"/><path fill-rule="evenodd" clip-rule="evenodd" d="m9.464 13.317-.842-.845v3.655l1.554-1.559c.342.462.75.873 1.207 1.22L8.42 18.762a.88.88 0 0 1-1.482-.646v-5.482l-3.431 3.442a.872.872 0 0 1-1.246 0 .88.88 0 0 1 0-1.25l4.312-4.325L2.26 6.166a.88.88 0 0 1 0-1.25.872.872 0 0 1 1.246 0l3.43 3.443V2.885a.89.89 0 0 1 .24-.603.884.884 0 0 1 1.251-.043l3.56 3.571A5.997 5.997 0 0 0 9 11c0 .821.165 1.604.464 2.317zm.98-6.624L8.622 4.866V8.52l1.822-1.827z"/></mask><path fill-rule="evenodd" clip-rule="evenodd" d="m9.464 13.317-.842-.845v3.655l1.554-1.559c.342.462.75.873 1.207 1.22L8.42 18.762a.88.88 0 0 1-1.482-.646v-5.482l-3.431 3.442a.872.872 0 0 1-1.246 0 .88.88 0 0 1 0-1.25l4.312-4.325L2.26 6.166a.88.88 0 0 1 0-1.25.872.872 0 0 1 1.246 0l3.43 3.443V2.885a.89.89 0 0 1 .24-.603.884.884 0 0 1 1.251-.043l3.56 3.571A5.997 5.997 0 0 0 9 11c0 .821.165 1.604.464 2.317zm.98-6.624L8.622 4.866V8.52l1.822-1.827z" fill="#1A73E8" fill-opacity=".3"/><path d="m8.622 12.473.284-.283-.684-.685v.967h.4zm.842.844-.284.282.652-.437-.368.155zm-.842 2.81h-.4v.968l.684-.685-.284-.283zm1.554-1.559.321-.238-.276-.373-.328.329.283.282zm1.207 1.22.284.282.323-.325-.365-.276-.242.319zM8.42 18.762l.273.292.01-.01-.283-.282zm-1.482-6.128h.4v-.968l-.684.686.284.282zm-3.431 3.442-.284-.282.284.282zm-1.246-1.25-.283-.282.283.283zm4.312-4.325.284.282.28-.282-.28-.282-.284.282zM2.26 6.166l.284-.282-.284.282zm1.246-1.25.283-.282-.283.283zm3.43 3.443-.283.282.684.686v-.968h-.4zm0-5.474-.4-.001v.001h.4zm.24-.603-.293-.273.292.273zm1.251-.043.284-.282-.01-.01-.274.292zm3.56 3.571.2.346.45-.26-.367-.368-.283.282zm-3.365-.944.284-.283-.684-.685v.968h.4zm1.822 1.827.283.282.281-.282-.281-.282-.283.282zM8.622 8.52h-.4v.968l.684-.685-.284-.283zm-.283 4.235.841.844.567-.565-.841-.844-.567.565zm.683 3.372v-3.654h-.8v3.654h.8zm.87-1.841L8.34 15.845l.567.565 1.553-1.56-.566-.564zm1.733 1.183a5.637 5.637 0 0 1-1.128-1.139l-.642.476c.364.493.798.931 1.287 1.3l.483-.637zm-2.923 3.575 2.965-2.974-.567-.565-2.964 2.975.566.564zm-.884.356c.324 0 .637-.124.874-.346l-.546-.584a.48.48 0 0 1-.328.13v.8zm-1.281-1.284c0 .709.572 1.284 1.28 1.284v-.8a.482.482 0 0 1-.48-.484h-.8zm0-5.482v5.482h.8v-5.482h-.8zm-2.748 3.725 3.43-3.443-.566-.564-3.43 3.442.566.565zm-1.812 0a1.272 1.272 0 0 0 1.812 0l-.567-.565a.472.472 0 0 1-.678 0l-.567.565zm0-1.815a1.28 1.28 0 0 0 0 1.815l.567-.565a.48.48 0 0 1 0-.685l-.567-.565zm4.312-4.326-4.312 4.326.567.565 4.312-4.326-.567-.565zm-4.312-3.77 4.312 4.335.567-.564-4.312-4.335-.567.564zm0-1.814a1.28 1.28 0 0 0 0 1.814l.567-.564a.48.48 0 0 1 0-.685l-.567-.565zm1.812 0a1.272 1.272 0 0 0-1.812 0l.567.565a.472.472 0 0 1 .678 0l.567-.565zm3.43 3.442L3.79 4.634l-.567.565 3.431 3.442.567-.565zm-.682-5.19v5.473h.8V2.885h-.8zm.345-.877c-.22.238-.344.55-.345.875l.8.003c0-.123.047-.242.131-.333l-.586-.544zm1.819-.062a1.284 1.284 0 0 0-1.818.062l.585.545a.484.484 0 0 1 .686-.023l.547-.584zm3.569 3.581L8.71 1.957l-.566.565 3.56 3.57.566-.564zM9.4 11a5.597 5.597 0 0 1 2.788-4.844l-.402-.691A6.398 6.398 0 0 0 8.6 11h.8zm.432 2.162A5.581 5.581 0 0 1 9.4 11h-.8c0 .875.176 1.71.495 2.471l.737-.309zM8.34 5.148l1.821 1.827.567-.564-1.821-1.828-.567.565zm.683 3.372V4.866h-.8V8.52h.8zm1.138-2.11L8.34 8.239l.567.565 1.82-1.828-.566-.564z" fill="#1A73E8" fill-opacity=".3" mask="url(#a)"/><path fill-rule="evenodd" clip-rule="evenodd" d="M14 12v2h2v-2h2v-2h-2V8h-2v2h-2v2h2z" fill="#1A73E8"/></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/chromeos/images/keyboard_shortcut.svg b/chrome/browser/resources/settings/chromeos/images/keyboard_shortcut.svg index 49c673b..90223397 100644 --- a/chrome/browser/resources/settings/chromeos/images/keyboard_shortcut.svg +++ b/chrome/browser/resources/settings/chromeos/images/keyboard_shortcut.svg
@@ -1 +1 @@ -<svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M11 17H37V37H11V17Z" fill="#D2E3FC"/><path fill-rule="evenodd" clip-rule="evenodd" d="M8 17C8 15.3431 9.34315 14 11 14H37C38.6569 14 40 15.3431 40 17V37C40 38.6569 38.6569 40 37 40H11C9.34315 40 8 38.6569 8 37V17ZM11 17V37H37V17H11Z" fill="#8AB4F8"/><path fill-rule="evenodd" clip-rule="evenodd" d="M13.5 21C13.5 20.4477 13.9477 20 14.5 20H15.5C16.0523 20 16.5 20.4477 16.5 21V22C16.5 22.5523 16.0523 23 15.5 23H14.5C13.9477 23 13.5 22.5523 13.5 22V21ZM18 33H30V35H18V33ZM20.5 20C19.9477 20 19.5 20.4477 19.5 21V22C19.5 22.5523 19.9477 23 20.5 23H21.5C22.0523 23 22.5 22.5523 22.5 22V21C22.5 20.4477 22.0523 20 21.5 20H20.5ZM25.5 21C25.5 20.4477 25.9477 20 26.5 20H27.5C28.0523 20 28.5 20.4477 28.5 21V22C28.5 22.5523 28.0523 23 27.5 23H26.5C25.9477 23 25.5 22.5523 25.5 22V21ZM32.5 20C31.9477 20 31.5 20.4477 31.5 21V22C31.5 22.5523 31.9477 23 32.5 23H33.5C34.0523 23 34.5 22.5523 34.5 22V21C34.5 20.4477 34.0523 20 33.5 20H32.5ZM25.5 28C25.5 27.4477 25.9477 27 26.5 27H27.5C28.0523 27 28.5 27.4477 28.5 28V29C28.5 29.5523 28.0523 30 27.5 30H26.5C25.9477 30 25.5 29.5523 25.5 29V28ZM32.5 27C31.9477 27 31.5 27.4477 31.5 28V29C31.5 29.5523 31.9477 30 32.5 30H33.5C34.0523 30 34.5 29.5523 34.5 29V28C34.5 27.4477 34.0523 27 33.5 27H32.5ZM19.5 28C19.5 27.4477 19.9477 27 20.5 27H21.5C22.0523 27 22.5 27.4477 22.5 28V29C22.5 29.5523 22.0523 30 21.5 30H20.5C19.9477 30 19.5 29.5523 19.5 29V28ZM14.5 27C13.9477 27 13.5 27.4477 13.5 28V29C13.5 29.5523 13.9477 30 14.5 30H15.5C16.0523 30 16.5 29.5523 16.5 29V28C16.5 27.4477 16.0523 27 15.5 27H14.5Z" fill="#8AB4F8"/><path fill-rule="evenodd" clip-rule="evenodd" d="M16 8C15.4477 8 15 8.44772 15 9V20.8681H33V9C33 8.44772 32.5523 8 32 8H24H16ZM23.4184 26.8865L15 20.8682H33L24.5816 26.8865C24.2337 27.1352 23.7663 27.1352 23.4184 26.8865Z" fill="#4285F4"/><path d="M25 12L28 15L25 18" stroke="white" stroke-width="2" stroke-linecap="square" stroke-linejoin="round"/><path d="M27 15H21C20.4477 15 20 15.4477 20 16V19" stroke="white" stroke-width="2" stroke-linejoin="round"/></svg> +<svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M11 17h26v20H11V17Z" fill="#D2E3FC"/><path fill-rule="evenodd" clip-rule="evenodd" d="M8 17a3 3 0 0 1 3-3h26a3 3 0 0 1 3 3v20a3 3 0 0 1-3 3H11a3 3 0 0 1-3-3V17Zm3 0v20h26V17H11Z" fill="#8AB4F8"/><path fill-rule="evenodd" clip-rule="evenodd" d="M13.5 21a1 1 0 0 1 1-1h1a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1h-1a1 1 0 0 1-1-1v-1ZM18 33h12v2H18v-2Zm2.5-13a1 1 0 0 0-1 1v1a1 1 0 0 0 1 1h1a1 1 0 0 0 1-1v-1a1 1 0 0 0-1-1h-1Zm5 1a1 1 0 0 1 1-1h1a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1h-1a1 1 0 0 1-1-1v-1Zm7-1a1 1 0 0 0-1 1v1a1 1 0 0 0 1 1h1a1 1 0 0 0 1-1v-1a1 1 0 0 0-1-1h-1Zm-7 8a1 1 0 0 1 1-1h1a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1h-1a1 1 0 0 1-1-1v-1Zm7-1a1 1 0 0 0-1 1v1a1 1 0 0 0 1 1h1a1 1 0 0 0 1-1v-1a1 1 0 0 0-1-1h-1Zm-13 1a1 1 0 0 1 1-1h1a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1h-1a1 1 0 0 1-1-1v-1Zm-5-1a1 1 0 0 0-1 1v1a1 1 0 0 0 1 1h1a1 1 0 0 0 1-1v-1a1 1 0 0 0-1-1h-1Z" fill="#8AB4F8"/><path fill-rule="evenodd" clip-rule="evenodd" d="M16 8a1 1 0 0 0-1 1v11.868h18V9a1 1 0 0 0-1-1H16Zm7.418 18.887L15 20.867h18l-8.418 6.019a1 1 0 0 1-1.164 0Z" fill="#4285F4"/><path d="m25 12 3 3-3 3" stroke="#fff" stroke-width="2" stroke-linecap="square" stroke-linejoin="round"/><path d="M27 15h-6a1 1 0 0 0-1 1v3" stroke="#fff" stroke-width="2" stroke-linejoin="round"/></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/chromeos/images/keyboard_shortcut_dark.svg b/chrome/browser/resources/settings/chromeos/images/keyboard_shortcut_dark.svg index f2ea8a8..39223bd 100644 --- a/chrome/browser/resources/settings/chromeos/images/keyboard_shortcut_dark.svg +++ b/chrome/browser/resources/settings/chromeos/images/keyboard_shortcut_dark.svg
@@ -1 +1 @@ -<svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M11 17H37V37H11V17Z" fill="#8AB4F8" fill-opacity="0.4"/><path fill-rule="evenodd" clip-rule="evenodd" d="M8 17C8 15.3431 9.34315 14 11 14H37C38.6569 14 40 15.3431 40 17V37C40 38.6569 38.6569 40 37 40H11C9.34315 40 8 38.6569 8 37V17ZM11 17V37H37V17H11Z" fill="#669DF6"/><path fill-rule="evenodd" clip-rule="evenodd" d="M13.5 21C13.5 20.4477 13.9477 20 14.5 20H15.5C16.0523 20 16.5 20.4477 16.5 21V22C16.5 22.5523 16.0523 23 15.5 23H14.5C13.9477 23 13.5 22.5523 13.5 22V21ZM18 33H30V35H18V33ZM20.5 20C19.9477 20 19.5 20.4477 19.5 21V22C19.5 22.5523 19.9477 23 20.5 23H21.5C22.0523 23 22.5 22.5523 22.5 22V21C22.5 20.4477 22.0523 20 21.5 20H20.5ZM25.5 21C25.5 20.4477 25.9477 20 26.5 20H27.5C28.0523 20 28.5 20.4477 28.5 21V22C28.5 22.5523 28.0523 23 27.5 23H26.5C25.9477 23 25.5 22.5523 25.5 22V21ZM32.5 20C31.9477 20 31.5 20.4477 31.5 21V22C31.5 22.5523 31.9477 23 32.5 23H33.5C34.0523 23 34.5 22.5523 34.5 22V21C34.5 20.4477 34.0523 20 33.5 20H32.5ZM25.5 28C25.5 27.4477 25.9477 27 26.5 27H27.5C28.0523 27 28.5 27.4477 28.5 28V29C28.5 29.5523 28.0523 30 27.5 30H26.5C25.9477 30 25.5 29.5523 25.5 29V28ZM32.5 27C31.9477 27 31.5 27.4477 31.5 28V29C31.5 29.5523 31.9477 30 32.5 30H33.5C34.0523 30 34.5 29.5523 34.5 29V28C34.5 27.4477 34.0523 27 33.5 27H32.5ZM19.5 28C19.5 27.4477 19.9477 27 20.5 27H21.5C22.0523 27 22.5 27.4477 22.5 28V29C22.5 29.5523 22.0523 30 21.5 30H20.5C19.9477 30 19.5 29.5523 19.5 29V28ZM14.5 27C13.9477 27 13.5 27.4477 13.5 28V29C13.5 29.5523 13.9477 30 14.5 30H15.5C16.0523 30 16.5 29.5523 16.5 29V28C16.5 27.4477 16.0523 27 15.5 27H14.5Z" fill="#669DF6"/><path fill-rule="evenodd" clip-rule="evenodd" d="M16 8C15.4477 8 15 8.44772 15 9V20.8681H33V9C33 8.44772 32.5523 8 32 8H24H16ZM23.4184 26.8865L15 20.8682H33L24.5816 26.8865C24.2337 27.1352 23.7663 27.1352 23.4184 26.8865Z" fill="#669DF6"/><path d="M25 12L28 15L25 18" stroke="#323336" stroke-width="2" stroke-linecap="square" stroke-linejoin="round"/><path d="M27 15H21C20.4477 15 20 15.4477 20 16V19" stroke="#323336" stroke-width="2" stroke-linejoin="round"/></svg> +<svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M11 17h26v20H11V17Z" fill="#8AB4F8" fill-opacity=".4"/><path fill-rule="evenodd" clip-rule="evenodd" d="M8 17a3 3 0 0 1 3-3h26a3 3 0 0 1 3 3v20a3 3 0 0 1-3 3H11a3 3 0 0 1-3-3V17Zm3 0v20h26V17H11Z" fill="#669DF6"/><path fill-rule="evenodd" clip-rule="evenodd" d="M13.5 21a1 1 0 0 1 1-1h1a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1h-1a1 1 0 0 1-1-1v-1ZM18 33h12v2H18v-2Zm2.5-13a1 1 0 0 0-1 1v1a1 1 0 0 0 1 1h1a1 1 0 0 0 1-1v-1a1 1 0 0 0-1-1h-1Zm5 1a1 1 0 0 1 1-1h1a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1h-1a1 1 0 0 1-1-1v-1Zm7-1a1 1 0 0 0-1 1v1a1 1 0 0 0 1 1h1a1 1 0 0 0 1-1v-1a1 1 0 0 0-1-1h-1Zm-7 8a1 1 0 0 1 1-1h1a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1h-1a1 1 0 0 1-1-1v-1Zm7-1a1 1 0 0 0-1 1v1a1 1 0 0 0 1 1h1a1 1 0 0 0 1-1v-1a1 1 0 0 0-1-1h-1Zm-13 1a1 1 0 0 1 1-1h1a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1h-1a1 1 0 0 1-1-1v-1Zm-5-1a1 1 0 0 0-1 1v1a1 1 0 0 0 1 1h1a1 1 0 0 0 1-1v-1a1 1 0 0 0-1-1h-1Z" fill="#669DF6"/><path fill-rule="evenodd" clip-rule="evenodd" d="M16 8a1 1 0 0 0-1 1v11.868h18V9a1 1 0 0 0-1-1H16Zm7.418 18.887L15 20.867h18l-8.418 6.019a1 1 0 0 1-1.164 0Z" fill="#669DF6"/><path d="m25 12 3 3-3 3" stroke="#323336" stroke-width="2" stroke-linecap="square" stroke-linejoin="round"/><path d="M27 15h-6a1 1 0 0 0-1 1v3" stroke="#323336" stroke-width="2" stroke-linejoin="round"/></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/chromeos/images/notification_access_connecting.svg b/chrome/browser/resources/settings/chromeos/images/notification_access_connecting.svg index 99b3edd..c7cbb080 100644 --- a/chrome/browser/resources/settings/chromeos/images/notification_access_connecting.svg +++ b/chrome/browser/resources/settings/chromeos/images/notification_access_connecting.svg
@@ -1 +1 @@ -<svg width="300" height="200" viewBox="0 0 300 200" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M265.5 148.448h-35.6a2.802 2.802 0 0 1-2.7-2.7v-77a2.697 2.697 0 0 1 2.7-2.7h35.6a2.801 2.801 0 0 1 2.7 2.7v76.9c0 .726-.281 1.423-.784 1.946a2.803 2.803 0 0 1-1.916.854z" fill="#D2E3FC"/><path d="M265.5 148.448h-35.6a2.802 2.802 0 0 1-2.7-2.7v-77a2.697 2.697 0 0 1 2.7-2.7h35.6a2.801 2.801 0 0 1 2.7 2.7v76.9c0 .726-.281 1.423-.784 1.946a2.803 2.803 0 0 1-1.916.854z" fill="#D2E3FC"/><path d="M127.4 69.948l-24.3 3.7a12.035 12.035 0 0 0 3.6 23.8l24.3-3.8a12 12 0 1 0-3.6-23.7zm10.7 10.5a8.91 8.91 0 0 1-1.62 6.667 8.897 8.897 0 0 1-5.88 3.534l-24.4 3.8a9.003 9.003 0 0 1-2.7-17.8l24.4-3.8a9.001 9.001 0 0 1 10.2 7.6z" fill="#EA4335"/><path d="M164.2 77.248a4.498 4.498 0 0 0 2.741-7.386 4.498 4.498 0 0 0-7.5 1.06 4.5 4.5 0 0 0 4.759 6.326z" fill="#34A853"/><path d="M105.7 84.648l-33.9 9.2a.8.8 0 0 0-.4 1.4l25 24.8a.904.904 0 0 0 .802.157.898.898 0 0 0 .598-.557l9-34a.901.901 0 0 0-1.1-1z" fill="#FBBC04"/><path d="M227.2 97.548a13.099 13.099 0 0 1-9.3-3.3l-3.4-3-1.5-1.2-1.2-.7a10.999 10.999 0 0 0-14.9 4.9 11.2 11.2 0 0 0 4.9 14.9l1.3.5h.1l1.8.5 4.4.9a13.6 13.6 0 0 1 8.3 5.7l2.2 3.3a32.868 32.868 0 0 0 2 3.1 16.491 16.491 0 0 0 5.3 4" fill="#D2E3FC"/><path d="M227.2 127.248l1.1.5a15.903 15.903 0 0 0 20.083-8.435 15.9 15.9 0 0 0-7.183-20.565 16.6 16.6 0 0 0-9.9-1.4l-3.9.2h-.2M196.5 76.648a16.398 16.398 0 0 0-16.085 19.6 16.408 16.408 0 0 0 4.488 8.397 16.407 16.407 0 0 0 17.873 3.555 16.404 16.404 0 0 0 8.876-21.428A16.4 16.4 0 0 0 196.5 76.648zm0 3a13.403 13.403 0 0 1 13.143 16.014 13.407 13.407 0 0 1-10.529 10.529A13.402 13.402 0 0 1 183.1 93.048a13.4 13.4 0 0 1 13.4-13.4zM252.7 70.048a.799.799 0 0 1 .8.9.798.798 0 0 1-.7.8h-7.9a.896.896 0 0 1-.8-.8 1 1 0 0 1 .7-.9h7.9zM240.6 71.948a.999.999 0 0 0 1-1 .91.91 0 0 0-.257-.743.905.905 0 0 0-.743-.257 1 1 0 0 0-1 1 1.102 1.102 0 0 0 1 1z" fill="#4285F4"/><path fill-rule="evenodd" clip-rule="evenodd" d="M209 88.348c.98.183 1.926.52 2.8 1l.7.4c.281 1.077.415 2.187.4 3.3a16.4 16.4 0 0 1-11.7 15.7 11.292 11.292 0 0 1-2.9-2.4 13.496 13.496 0 0 0 11.6-13.3 12.693 12.693 0 0 0-.9-4.7zM95.8 87.348a9.2 9.2 0 0 0 8.6 7.4l-.7 2.5a11.7 11.7 0 0 1-10.3-9.2l2.4-.7z" fill="#fff"/><path d="M43.2 107.648a16.498 16.498 0 0 1 20.655 9.102 16.501 16.501 0 0 1-7.755 21.198 15.582 15.582 0 0 1-3.3 1.4" fill="#EE5FFA"/><path d="M35.5 79.048l19.9 67.7 68.6-.9v3.9l-70.1.9a1.898 1.898 0 0 1-1.8-1.3l-20.3-69.2 3.7-1.1z" fill="#4285F4"/></svg> +<svg width="300" height="200" viewBox="0 0 300 200" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M265.5 148.448h-35.6a2.802 2.802 0 0 1-2.7-2.7v-77a2.697 2.697 0 0 1 2.7-2.7h35.6a2.801 2.801 0 0 1 2.7 2.7v76.9c0 .726-.281 1.423-.784 1.946a2.803 2.803 0 0 1-1.916.854z" fill="#D2E3FC"/><path d="M265.5 148.448h-35.6a2.802 2.802 0 0 1-2.7-2.7v-77a2.697 2.697 0 0 1 2.7-2.7h35.6a2.801 2.801 0 0 1 2.7 2.7v76.9c0 .726-.281 1.423-.784 1.946a2.803 2.803 0 0 1-1.916.854z" fill="#D2E3FC"/><path d="m127.4 69.948-24.3 3.7a12.035 12.035 0 0 0 3.6 23.8l24.3-3.8a12 12 0 1 0-3.6-23.7zm10.7 10.5a8.91 8.91 0 0 1-1.62 6.667 8.897 8.897 0 0 1-5.88 3.534l-24.4 3.8a9.003 9.003 0 0 1-2.7-17.8l24.4-3.8a9.001 9.001 0 0 1 10.2 7.6z" fill="#EA4335"/><path d="M164.2 77.248a4.498 4.498 0 0 0 2.741-7.386 4.498 4.498 0 0 0-7.5 1.06 4.5 4.5 0 0 0 4.759 6.326z" fill="#34A853"/><path d="m105.7 84.648-33.9 9.2a.8.8 0 0 0-.4 1.4l25 24.8a.904.904 0 0 0 .802.157.898.898 0 0 0 .598-.557l9-34a.901.901 0 0 0-1.1-1z" fill="#FBBC04"/><path d="M227.2 97.548a13.099 13.099 0 0 1-9.3-3.3l-3.4-3-1.5-1.2-1.2-.7a10.999 10.999 0 0 0-14.9 4.9 11.2 11.2 0 0 0 4.9 14.9l1.3.5h.1l1.8.5 4.4.9a13.6 13.6 0 0 1 8.3 5.7l2.2 3.3a32.868 32.868 0 0 0 2 3.1 16.491 16.491 0 0 0 5.3 4" fill="#D2E3FC"/><path d="m227.2 127.248 1.1.5a15.903 15.903 0 0 0 20.083-8.435 15.9 15.9 0 0 0-7.183-20.565 16.6 16.6 0 0 0-9.9-1.4l-3.9.2h-.2m-30.7-20.9a16.398 16.398 0 0 0-16.085 19.6 16.408 16.408 0 0 0 4.488 8.397 16.407 16.407 0 0 0 17.873 3.555 16.404 16.404 0 0 0 8.876-21.428A16.4 16.4 0 0 0 196.5 76.648zm0 3a13.403 13.403 0 0 1 13.143 16.014 13.407 13.407 0 0 1-10.529 10.529A13.402 13.402 0 0 1 183.1 93.048a13.4 13.4 0 0 1 13.4-13.4zm56.2-9.6a.799.799 0 0 1 .8.9.798.798 0 0 1-.7.8h-7.9a.896.896 0 0 1-.8-.8 1 1 0 0 1 .7-.9h7.9zm-12.1 1.9a.999.999 0 0 0 1-1 .91.91 0 0 0-.257-.743.905.905 0 0 0-.743-.257 1 1 0 0 0-1 1 1.102 1.102 0 0 0 1 1z" fill="#4285F4"/><path fill-rule="evenodd" clip-rule="evenodd" d="M209 88.348c.98.183 1.926.52 2.8 1l.7.4c.281 1.077.415 2.187.4 3.3a16.4 16.4 0 0 1-11.7 15.7 11.292 11.292 0 0 1-2.9-2.4 13.496 13.496 0 0 0 11.6-13.3 12.693 12.693 0 0 0-.9-4.7zm-113.2-1a9.2 9.2 0 0 0 8.6 7.4l-.7 2.5a11.7 11.7 0 0 1-10.3-9.2l2.4-.7z" fill="#fff"/><path d="M43.2 107.648a16.498 16.498 0 0 1 20.655 9.102 16.501 16.501 0 0 1-7.755 21.198 15.582 15.582 0 0 1-3.3 1.4" fill="#EE5FFA"/><path d="m35.5 79.048 19.9 67.7 68.6-.9v3.9l-70.1.9a1.898 1.898 0 0 1-1.8-1.3l-20.3-69.2 3.7-1.1z" fill="#4285F4"/></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/chromeos/images/notification_access_connecting_dark.svg b/chrome/browser/resources/settings/chromeos/images/notification_access_connecting_dark.svg index 0ac31d35..19da2ea95 100644 --- a/chrome/browser/resources/settings/chromeos/images/notification_access_connecting_dark.svg +++ b/chrome/browser/resources/settings/chromeos/images/notification_access_connecting_dark.svg
@@ -1 +1 @@ -<svg width="300" height="200" viewBox="0 0 300 200" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M265.5 148.448h-35.6a2.802 2.802 0 0 1-2.7-2.7v-77a2.698 2.698 0 0 1 2.7-2.7h35.6a2.801 2.801 0 0 1 2.7 2.7v76.9a2.802 2.802 0 0 1-2.7 2.8z" fill="#8AB4F8" fill-opacity=".4"/><path d="M265.5 148.448h-35.6a2.802 2.802 0 0 1-2.7-2.7v-77a2.698 2.698 0 0 1 2.7-2.7h35.6a2.801 2.801 0 0 1 2.7 2.7v76.9a2.802 2.802 0 0 1-2.7 2.8z" fill="#8AB4F8" fill-opacity=".4"/><path d="M127.4 69.948l-24.3 3.7a12.035 12.035 0 0 0 3.6 23.8l24.3-3.8a12 12 0 1 0-3.6-23.7zm10.7 10.5a8.91 8.91 0 0 1-1.62 6.667 8.897 8.897 0 0 1-5.88 3.534l-24.4 3.8a9.003 9.003 0 0 1-2.7-17.8l24.4-3.8a9.001 9.001 0 0 1 10.2 7.6z" fill="#EA4335"/><path d="M164.2 77.248a4.498 4.498 0 0 0 2.741-7.386 4.498 4.498 0 0 0-7.5 1.06 4.499 4.499 0 0 0 4.759 6.326z" fill="#5BB974"/><path d="M105.7 84.648l-33.9 9.2a.8.8 0 0 0-.4 1.4l25 24.8a.904.904 0 0 0 .802.157.898.898 0 0 0 .598-.557l9-34a.901.901 0 0 0-1.1-1z" fill="#FCC934"/><path d="M227.2 97.548a13.099 13.099 0 0 1-9.3-3.3l-3.4-3-1.5-1.2-1.2-.7a11 11 0 0 0-14.9 4.9 11.2 11.2 0 0 0 4.9 14.9l1.3.5h.1l1.8.5 4.4.9a13.6 13.6 0 0 1 8.3 5.7l2.2 3.3a32.868 32.868 0 0 0 2 3.1 16.491 16.491 0 0 0 5.3 4" fill="#8AB4F8" fill-opacity=".4"/><path d="M227.2 127.248l1.1.5a15.898 15.898 0 0 0 20.567-20.141 15.903 15.903 0 0 0-7.667-8.859 16.6 16.6 0 0 0-9.9-1.4l-3.9.2h-.2M196.5 76.648a16.398 16.398 0 0 0-15.152 10.124A16.4 16.4 0 1 0 196.5 76.648zm0 3a13.403 13.403 0 0 1 12.38 8.272 13.394 13.394 0 0 1-2.905 14.603 13.398 13.398 0 0 1-22.875-9.475 13.4 13.4 0 0 1 13.4-13.4zM252.7 70.048a.799.799 0 0 1 .8.9.798.798 0 0 1-.7.8h-7.9a.896.896 0 0 1-.8-.8 1 1 0 0 1 .7-.9h7.9zM240.6 71.948a1 1 0 0 0 1-1 .91.91 0 0 0-.257-.742.904.904 0 0 0-.743-.258 1 1 0 0 0-1 1 1.102 1.102 0 0 0 1 1z" fill="#669DF6"/><path fill-rule="evenodd" clip-rule="evenodd" d="M209 88.348c.981.183 1.926.52 2.8 1l.7.4c.281 1.077.415 2.187.4 3.3a16.4 16.4 0 0 1-11.7 15.7 11.292 11.292 0 0 1-2.9-2.4 13.496 13.496 0 0 0 11.6-13.3 12.693 12.693 0 0 0-.9-4.7zM95.8 87.348a9.2 9.2 0 0 0 8.6 7.4l-.7 2.5a11.7 11.7 0 0 1-10.3-9.2l2.4-.7z" fill="#323336"/><path d="M43.2 107.648a16.498 16.498 0 0 1 20.655 9.102 16.501 16.501 0 0 1-7.755 21.198 15.577 15.577 0 0 1-3.3 1.4" fill="#F882FE"/><path d="M35.5 79.048l19.9 67.7 68.6-.9v3.9l-70.1.9a1.898 1.898 0 0 1-1.8-1.3l-20.3-69.2 3.7-1.1z" fill="#669DF6"/></svg> +<svg width="300" height="200" viewBox="0 0 300 200" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M265.5 148.448h-35.6a2.802 2.802 0 0 1-2.7-2.7v-77a2.698 2.698 0 0 1 2.7-2.7h35.6a2.801 2.801 0 0 1 2.7 2.7v76.9a2.802 2.802 0 0 1-2.7 2.8z" fill="#8AB4F8" fill-opacity=".4"/><path d="M265.5 148.448h-35.6a2.802 2.802 0 0 1-2.7-2.7v-77a2.698 2.698 0 0 1 2.7-2.7h35.6a2.801 2.801 0 0 1 2.7 2.7v76.9a2.802 2.802 0 0 1-2.7 2.8z" fill="#8AB4F8" fill-opacity=".4"/><path d="m127.4 69.948-24.3 3.7a12.035 12.035 0 0 0 3.6 23.8l24.3-3.8a12 12 0 1 0-3.6-23.7zm10.7 10.5a8.91 8.91 0 0 1-1.62 6.667 8.897 8.897 0 0 1-5.88 3.534l-24.4 3.8a9.003 9.003 0 0 1-2.7-17.8l24.4-3.8a9.001 9.001 0 0 1 10.2 7.6z" fill="#EA4335"/><path d="M164.2 77.248a4.498 4.498 0 0 0 2.741-7.386 4.498 4.498 0 0 0-7.5 1.06 4.499 4.499 0 0 0 4.759 6.326z" fill="#5BB974"/><path d="m105.7 84.648-33.9 9.2a.8.8 0 0 0-.4 1.4l25 24.8a.904.904 0 0 0 .802.157.898.898 0 0 0 .598-.557l9-34a.901.901 0 0 0-1.1-1z" fill="#FCC934"/><path d="M227.2 97.548a13.099 13.099 0 0 1-9.3-3.3l-3.4-3-1.5-1.2-1.2-.7a11 11 0 0 0-14.9 4.9 11.2 11.2 0 0 0 4.9 14.9l1.3.5h.1l1.8.5 4.4.9a13.6 13.6 0 0 1 8.3 5.7l2.2 3.3a32.868 32.868 0 0 0 2 3.1 16.491 16.491 0 0 0 5.3 4" fill="#8AB4F8" fill-opacity=".4"/><path d="m227.2 127.248 1.1.5a15.898 15.898 0 0 0 20.567-20.141 15.903 15.903 0 0 0-7.667-8.859 16.6 16.6 0 0 0-9.9-1.4l-3.9.2h-.2m-30.7-20.9a16.398 16.398 0 0 0-15.152 10.124A16.4 16.4 0 1 0 196.5 76.648zm0 3a13.403 13.403 0 0 1 12.38 8.272 13.394 13.394 0 0 1-2.905 14.603 13.398 13.398 0 0 1-22.875-9.475 13.4 13.4 0 0 1 13.4-13.4zm56.2-9.6a.799.799 0 0 1 .8.9.798.798 0 0 1-.7.8h-7.9a.896.896 0 0 1-.8-.8 1 1 0 0 1 .7-.9h7.9zm-12.1 1.9a1 1 0 0 0 1-1 .91.91 0 0 0-.257-.742.904.904 0 0 0-.743-.258 1 1 0 0 0-1 1 1.102 1.102 0 0 0 1 1z" fill="#669DF6"/><path fill-rule="evenodd" clip-rule="evenodd" d="M209 88.348c.981.183 1.926.52 2.8 1l.7.4c.281 1.077.415 2.187.4 3.3a16.4 16.4 0 0 1-11.7 15.7 11.292 11.292 0 0 1-2.9-2.4 13.496 13.496 0 0 0 11.6-13.3 12.693 12.693 0 0 0-.9-4.7zm-113.2-1a9.2 9.2 0 0 0 8.6 7.4l-.7 2.5a11.7 11.7 0 0 1-10.3-9.2l2.4-.7z" fill="#323336"/><path d="M43.2 107.648a16.498 16.498 0 0 1 20.655 9.102 16.501 16.501 0 0 1-7.755 21.198 15.577 15.577 0 0 1-3.3 1.4" fill="#F882FE"/><path d="m35.5 79.048 19.9 67.7 68.6-.9v3.9l-70.1.9a1.898 1.898 0 0 1-1.8-1.3l-20.3-69.2 3.7-1.1z" fill="#669DF6"/></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/chromeos/images/notification_access_error.svg b/chrome/browser/resources/settings/chromeos/images/notification_access_error.svg index a9a5d71..db8b038 100644 --- a/chrome/browser/resources/settings/chromeos/images/notification_access_error.svg +++ b/chrome/browser/resources/settings/chromeos/images/notification_access_error.svg
@@ -1 +1 @@ -<svg width="300" height="200" viewBox="0 0 300 200" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M8.3 182.5l283.8.7" stroke="#4285F4" stroke-width="2" stroke-linecap="round"/><path d="M61.8 115.7a16.998 16.998 0 0 1 19.826-2.6A17.01 17.01 0 0 1 87 117.7a23.901 23.901 0 0 1-.1 28.8l-2.6 3.3c-7.9 10.4-1.2 24.8 11.8 26.4a94.75 94.75 0 0 0 14.1 1.2h6.3a2.5 2.5 0 0 1 2.5 2.4 2.39 2.39 0 0 1-.703 1.697 2.39 2.39 0 0 1-1.697.703h-4.1c-3.5 0-7.1-.1-10.6-.4-6.4-.5-11.2-1.7-14.5-3.4a21.201 21.201 0 0 1-7.1-31.3l.2-.3 2.6-3.3a18.8 18.8 0 0 0-.9-23.9 12 12 0 0 0-17.1-.4l-2.8 2.7c-2.2 2.1-5.5-1.1-3.5-3.4h.2l2.8-2.8z" fill="#4285F4"/><path fill-rule="evenodd" clip-rule="evenodd" d="M162.5 180.3v-1.8a5.004 5.004 0 0 0-1.464-3.536 5.004 5.004 0 0 0-3.536-1.464c-.652 0-1.297-.13-1.899-.382a4.905 4.905 0 0 1-3.001-4.618c.2-2 0-41.1.8-41.5l1.5-7.1a54.797 54.797 0 0 0 .8-18.5l-1-7.7c6.3-6.3 7.3-12.4 4.4-20.6a3 3 0 0 0-3.2-1.9l-13.7 1.9-5.9-11.9a1.002 1.002 0 0 0-1.7 0L129 72.5a18.908 18.908 0 0 0-.1 16.4 7.1 7.1 0 0 1-3.4 9.3c-10.4 2.8-17.9 8.6-21 18.2-2 5.9-4.8 14.6-8.4 26a29 29 0 0 0 18.8 36.5 28.702 28.702 0 0 0 8.7 1.3l38.9.1z" fill="#fff"/><path fill-rule="evenodd" clip-rule="evenodd" d="M134.7 60.6a.338.338 0 0 1 .45-.15.333.333 0 0 1 .15.45c-2.3 7.8-1.6 13.2.9 16.7s4.6 3.1 5.7 6.2c2.1 5.9-4.1 13.3-7.4 17.2-5.2 6.1-7.3 5.9-11.4 10.3-7.3 7.8-12.9 21.5-9.5 32.9 2.6 8.4 8.1 8.7 9.5 17.5 1.1 6.8-.5 15.9-5.3 17.8-4.8 1.9-16.3-6.6-20.7-15.4a34.199 34.199 0 0 1-3.1-18.8c.5-6 2-5.2 7.6-21.9 2.8-8.3 3.5-11.6 6.5-14.9a49.11 49.11 0 0 1 9.9-8c5.3-2.7 8.2-2.3 9.8-5 4.1-7.9-10.2-14 6.9-34.9z" fill="#D2E3FC"/><path d="M134.2 59a3.5 3.5 0 0 0-1.4 1.3l-5.5 11.4a20.696 20.696 0 0 0-.2 18 5.003 5.003 0 0 1-3.2 7c-12.4 3.3-19.3 11.1-22.4 22.5l-2 6.1-2.5 8-2.8 8.6a30.901 30.901 0 0 0 20.1 38.8c3 .992 6.14 1.498 9.3 1.5h38.9a2.002 2.002 0 0 0 1.9-1.9v-1.9a6.799 6.799 0 0 0-6.6-6.9 2.994 2.994 0 0 1-2.216-.77 2.999 2.999 0 0 1-.984-2.13v-.2c.1-2.2-.1-40 .7-41.1.8-1.1 1.6-7.7 1.7-7.9a59.11 59.11 0 0 0 .6-18.3l-.8-6.8c6.2-6.5 7.1-13.4 4.1-21.8v-.2a4.7 4.7 0 0 0-5.1-3L143.5 71l-5.4-10.7a2.902 2.902 0 0 0-3.7-1.4l-.2.1zm.8 1.8a1 1 0 0 1 1.3.3l5.9 11.9 13.7-1.9a3 3 0 0 1 3.2 1.9c2.9 8.2 1.8 14.5-4.4 20.6l1 7.7c.702 5.896.5 11.865-.6 17.7-.6 3-2.1 8.6-2.2 11.5v.6l-.3 37.4a4.9 4.9 0 0 0 4.7 4.9h.2a5 5 0 0 1 5 4.8v2h-38.9a28.702 28.702 0 0 1-8.7-1.3 29.002 29.002 0 0 1-18.8-36.5c2.6-8.1 5.7-18 8.4-26 3.1-9.6 10.6-15.4 21-18.2a7.102 7.102 0 0 0 3.4-9.3 18.999 18.999 0 0 1-.1-16l.2-.4 5.6-11.3c.1-.2.2-.4.4-.4z" fill="#4285F4"/><path d="M143.3 61.2l-2.9 8.2 1.7 3.8 6.2-1.1-1.3-10.5a1.903 1.903 0 0 0-1.687-1.707A1.9 1.9 0 0 0 143.3 61.2zm-.8 8.1l2.6-7.5 1.1 8.7-3 .5-.7-1.7z" fill="#4285F4"/><path fill-rule="evenodd" clip-rule="evenodd" d="M137.4 91.8l18.3 1.7a2.402 2.402 0 0 1 2.2 2.6v.9a2.501 2.501 0 0 1-2.5 2.2h-.1l-19.7-1.7 1.8-5.7zm-4.4-.4l2.4.2-1.8 5.6-2.4-.2 1.8-5.6zm-5.4-.5h.2l3.2.3-1.8 5.6-2-.2a2.294 2.294 0 0 1-1.61-.848A2.305 2.305 0 0 1 125.1 94v-.9a2.502 2.502 0 0 1 2.5-2.2zM154.1 72.4l4.8 2.6a3.208 3.208 0 0 0-1.671-2.645 3.204 3.204 0 0 0-3.129.045z" fill="#4285F4"/><path d="M152.9 73.3c.8-.3 1.3 1 .5 1.3h-.1l-10 3.2a.797.797 0 0 1-.81-.481.804.804 0 0 1 .21-.919h.1l10.1-3.1zM153.7 75.3c.7-.5 1.5.6.8 1.2h-.1l-8.2 5.3c-.7.5-1.5-.6-.9-1.1h.1l8.3-5.4z" fill="#8AB4F8"/><path d="M118.6 130.4a17.591 17.591 0 0 1 12.534 4.942A17.615 17.615 0 0 1 136.5 147.7v23.5l15.8 2.1a6.997 6.997 0 0 1 6.2 6.8.993.993 0 0 1-.212.84 1.002 1.002 0 0 1-.788.36.893.893 0 0 1-.9-1 5.199 5.199 0 0 0-4.3-5.1h-.3l-17.4-2.3v-25.4a15.502 15.502 0 0 0-16-15.1.997.997 0 0 1-1-1 .997.997 0 0 1 1-1z" fill="#4285F4"/><path fill-rule="evenodd" clip-rule="evenodd" d="M146.9 135.7c2.2 60.7 86.3 60.9 88.8.3.1-29.4-28.8 2.7-48.8 2.6-20-.1-40-8-40-2.9z" fill="#D2E3FC"/><path d="M222.3 101.5a1 1 0 0 1 1.4 0 47.902 47.902 0 0 1 13.3 33.6c-2.6 62.8-89.5 62.6-91.8-.3a47.598 47.598 0 0 1 13.5-33.4 1.098 1.098 0 0 1 1.4-.1 1 1 0 0 1 0 1.4 46.602 46.602 0 0 0-13 32.1c0 25.2 19.6 45.6 43.9 45.6 39.3.2 58.6-49.6 31.3-77.5a1 1 0 0 1 0-1.4z" fill="#4285F4"/><path fill-rule="evenodd" clip-rule="evenodd" d="M278.974 60.863c.448.324.548.95.223 1.397-.33.456-.677.891-1.039 1.306a1 1 0 0 1-1.507-1.316c.323-.369.632-.757.927-1.164a1 1 0 0 1 1.396-.223zm-50.855-5.045a1 1 0 0 1-1.101.888 29.42 29.42 0 0 0-2.942-.172 1 1 0 1 1 .014-2c1.054.007 2.103.071 3.142.183a1 1 0 0 1 .887 1.101zm2.038.345a1 1 0 0 1 1.194-.757c1.024.23 2.032.497 3.018.794a1 1 0 0 1-.576 1.915 41.725 41.725 0 0 0-2.879-.758 1 1 0 0 1-.757-1.194zm-9.136-.498a1 1 0 0 1-.841 1.137c-.956.143-1.907.346-2.85.616a1 1 0 1 1-.55-1.923 24.325 24.325 0 0 1 3.104-.671 1 1 0 0 1 1.137.84zm15.967 2.458a1 1 0 0 1 1.295-.567c.986.386 1.941.791 2.857 1.206a1 1 0 1 1-.823 1.822 58.311 58.311 0 0 0-2.762-1.165 1 1 0 0 1-.567-1.296zm6.507 2.872a1 1 0 0 1 1.35-.42 81.265 81.265 0 0 1 2.708 1.491 1 1 0 0 1-.998 1.734 79.875 79.875 0 0 0-2.64-1.455 1 1 0 0 1-.42-1.35zm-29.33-3.516a.999.999 0 0 1-.449 1.341c-.426.213-.85.442-1.271.689a16.65 16.65 0 0 0-1.122.762 1 1 0 0 1-1.189-1.608 18.55 18.55 0 0 1 1.268-.86l.01-.007.01-.006c.464-.272.932-.525 1.402-.76a1 1 0 0 1 1.341.45zm60.934 7.657a1 1 0 0 1-.252 1.392c-.92.638-1.89 1.185-2.897 1.642a1.001 1.001 0 0 1-.828-1.82c.901-.41 1.766-.898 2.585-1.466a1 1 0 0 1 1.392.252zm-25.412-.635a1 1 0 0 1 1.377-.325c.561.346.977.603 1.261.762l.011.006.01.006c.433.257.874.498 1.323.723a1 1 0 0 1-.897 1.788 23.236 23.236 0 0 1-1.436-.785 42.184 42.184 0 0 1-1.323-.799 1 1 0 0 1-.326-1.376zm18.834 3.851a1 1 0 0 1-.777 1.182c-1.078.223-2.175.36-3.28.416a1 1 0 0 1-.1-1.997 19.544 19.544 0 0 0 2.975-.378 1 1 0 0 1 1.182.777zm-59.979-7.031a1 1 0 0 1 .059 1.413 23.268 23.268 0 0 0-1.752 2.159 1 1 0 1 1-1.624-1.168 25.244 25.244 0 0 1 1.904-2.345 1 1 0 0 1 1.413-.06zm47.631 6.498a1 1 0 0 1 1.237-.685c.971.28 1.957.49 2.948.632a1 1 0 1 1-.282 1.98 23.763 23.763 0 0 1-3.218-.69 1 1 0 0 1-.685-1.237zm-51.699-1.104a1 1 0 0 1 .416 1.351 31.163 31.163 0 0 0-1.2 2.543 1 1 0 0 1-1.845-.773c.387-.924.813-1.828 1.278-2.705a1 1 0 0 1 1.351-.416zm-2.717 6.193a1 1 0 0 1 .677 1.241c-.266.906-.496 1.82-.687 2.737a1 1 0 1 1-1.958-.409 37.33 37.33 0 0 1 .726-2.892 1 1 0 0 1 1.242-.677zm-1.476 6.6a1 1 0 0 1 .901 1.091 30.87 30.87 0 0 0-.143 2.808 1 1 0 0 1-2-.009c.004-.983.055-1.982.152-2.989a1 1 0 0 1 1.09-.9zm5.023 6.61a1 1 0 0 1 1.194-.758c1.165.26 2.292.73 3.373 1.525a1 1 0 0 1-1.185 1.611 6.851 6.851 0 0 0-2.625-1.184 1 1 0 0 1-.757-1.195zm-2.429-.045a1 1 0 0 1-.939 1.058l-.653.042c.131.928.315 1.817.551 2.656a1 1 0 1 1-1.925.542 22.163 22.163 0 0 1-.611-2.957c-.127.033-.254.07-.382.113a1 1 0 1 1-.627-1.9 7.724 7.724 0 0 1 1.861-.378l.248-.018c.477-.034.953-.07 1.42-.097a1 1 0 0 1 1.057.94zm-7.283 2.117a1 1 0 0 1-.082 1.412 16.206 16.206 0 0 0-2.106 2.299 1 1 0 1 1-1.592-1.21 18.184 18.184 0 0 1 2.368-2.583 1 1 0 0 1 1.412.082zm16.063 1.949a1 1 0 0 1 1.377.32c.291.468.577.973.858 1.517.343.665.528 1.495.541 2.333a1 1 0 0 1-2 .03c-.009-.586-.141-1.102-.319-1.445a19.56 19.56 0 0 0-.778-1.378 1 1 0 0 1 .321-1.377zm-9.813 2.662a1 1 0 0 1 1.367.363 9.886 9.886 0 0 0 1.595 2.088 1 1 0 0 1-1.405 1.424 11.895 11.895 0 0 1-1.92-2.508 1 1 0 0 1 .363-1.367zm-11.092 1.367a1 1 0 0 1 .467 1.335c-.443.922-.843 1.909-1.187 2.954a1 1 0 0 1-1.9-.625 26.44 26.44 0 0 1 1.285-3.197 1 1 0 0 1 1.335-.467zm20.909 3.856a1 1 0 0 1-.719 1.218c-.681.175-1.446.224-2.293.137l-.04-.004-.039-.007c-.54-.1-1.06-.239-1.557-.415a1 1 0 1 1 .668-1.885c.384.136.787.245 1.211.325.633.061 1.143.017 1.552-.088a1 1 0 0 1 1.217.72zm-23.458 3.428a.999.999 0 0 1 .831 1.144c-.082.52-.151 1.05-.205 1.589a1 1 0 1 1-1.99-.199 30.54 30.54 0 0 1 .22-1.703 1 1 0 0 1 1.144-.831z" fill="#D2E3FC"/><path fill-rule="evenodd" clip-rule="evenodd" d="M139 40.3a12.198 12.198 0 0 1 11.1-13.2c16.2-.7 18.2 22.3 2.1 24.3A12.202 12.202 0 0 1 139 40.3" fill="#FBBC04"/><path fill-rule="evenodd" clip-rule="evenodd" d="M122.5 23.4l-13.7 7.3a2.199 2.199 0 0 0-.878 2.975c.183.338.451.623.778.825l13.2 8.1a2.2 2.2 0 0 0 3.3-1.7l.5-15.6a2.201 2.201 0 0 0-3.2-1.9z" fill="#EA4335"/><path d="M97.4 45a15.7 15.7 0 0 0-9.5-7.3 15.513 15.513 0 0 1-.7 2.3c13.3 3.5 12.8 22.7-1 25.2a9.8 9.8 0 0 1-2.9.1h-.2l-3.5.2a12.9 12.9 0 0 0-8.7 3.8l-.8.9-1.6 1.8-.4.5-.3.3-.4.3a8.8 8.8 0 0 1-13.6-1.4l-.2-.3a9 9 0 0 1 0-8.7c1.2-1.9 2.8-2.9 6.2-4.1l3-1.1a13.2 13.2 0 0 0 7.4-6.3l1.5-3.1-2.3-.8-1.4 2.8a11.6 11.6 0 0 1-6.2 5.2l-.4.2-2.5.8c-3.8 1.4-5.9 2.6-7.4 5.2a11.4 11.4 0 0 0 .1 11.3l.3.4a11.2 11.2 0 0 0 16.6 2.3l.5-.5c.391-.341.759-.709 1.1-1.1l1.9-2.1.8-.8a10.1 10.1 0 0 1 6.9-3.1l3.5-.2h-.1c1.2.112 2.409.079 3.6-.1 10.2-1.5 16-13.7 10.7-22.6z" fill="#F1F3F4"/><path d="M76.8 41.7a12.1 12.1 0 0 0-5 6.3h-.1c6 1.4 13.2-2.2 15.5-8.1a12.902 12.902 0 0 0-10.4 1.8z" fill="#8AB4F8"/><path d="M71.1 43.9a15 15 0 0 1 4.4-4.3 15.6 15.6 0 0 1 12.4-1.9 13.5 13.5 0 0 0-1.2-9 1.8 1.8 0 0 0-2.5-.7L64.9 41.5c-2.7 2.3 2.7 5 4.5 5.8v-.2a15.906 15.906 0 0 1 1.7-3.2z" fill="#8AB4F8"/></svg> +<svg width="300" height="200" viewBox="0 0 300 200" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="m8.3 182.5 283.8.7" stroke="#4285F4" stroke-width="2" stroke-linecap="round"/><path d="M61.8 115.7a16.998 16.998 0 0 1 19.826-2.6A17.01 17.01 0 0 1 87 117.7a23.901 23.901 0 0 1-.1 28.8l-2.6 3.3c-7.9 10.4-1.2 24.8 11.8 26.4a94.75 94.75 0 0 0 14.1 1.2h6.3a2.5 2.5 0 0 1 2.5 2.4 2.39 2.39 0 0 1-.703 1.697 2.39 2.39 0 0 1-1.697.703h-4.1c-3.5 0-7.1-.1-10.6-.4-6.4-.5-11.2-1.7-14.5-3.4a21.201 21.201 0 0 1-7.1-31.3l.2-.3 2.6-3.3a18.8 18.8 0 0 0-.9-23.9 12 12 0 0 0-17.1-.4l-2.8 2.7c-2.2 2.1-5.5-1.1-3.5-3.4h.2l2.8-2.8z" fill="#4285F4"/><path fill-rule="evenodd" clip-rule="evenodd" d="M162.5 180.3v-1.8a5.004 5.004 0 0 0-1.464-3.536 5.004 5.004 0 0 0-3.536-1.464c-.652 0-1.297-.13-1.899-.382a4.905 4.905 0 0 1-3.001-4.618c.2-2 0-41.1.8-41.5l1.5-7.1a54.797 54.797 0 0 0 .8-18.5l-1-7.7c6.3-6.3 7.3-12.4 4.4-20.6a3 3 0 0 0-3.2-1.9l-13.7 1.9-5.9-11.9a1.002 1.002 0 0 0-1.7 0L129 72.5a18.908 18.908 0 0 0-.1 16.4 7.1 7.1 0 0 1-3.4 9.3c-10.4 2.8-17.9 8.6-21 18.2-2 5.9-4.8 14.6-8.4 26a29 29 0 0 0 18.8 36.5 28.702 28.702 0 0 0 8.7 1.3l38.9.1z" fill="#fff"/><path fill-rule="evenodd" clip-rule="evenodd" d="M134.7 60.6a.338.338 0 0 1 .45-.15.333.333 0 0 1 .15.45c-2.3 7.8-1.6 13.2.9 16.7s4.6 3.1 5.7 6.2c2.1 5.9-4.1 13.3-7.4 17.2-5.2 6.1-7.3 5.9-11.4 10.3-7.3 7.8-12.9 21.5-9.5 32.9 2.6 8.4 8.1 8.7 9.5 17.5 1.1 6.8-.5 15.9-5.3 17.8-4.8 1.9-16.3-6.6-20.7-15.4a34.199 34.199 0 0 1-3.1-18.8c.5-6 2-5.2 7.6-21.9 2.8-8.3 3.5-11.6 6.5-14.9a49.11 49.11 0 0 1 9.9-8c5.3-2.7 8.2-2.3 9.8-5 4.1-7.9-10.2-14 6.9-34.9z" fill="#D2E3FC"/><path d="M134.2 59a3.5 3.5 0 0 0-1.4 1.3l-5.5 11.4a20.696 20.696 0 0 0-.2 18 5.003 5.003 0 0 1-3.2 7c-12.4 3.3-19.3 11.1-22.4 22.5l-2 6.1-2.5 8-2.8 8.6a30.901 30.901 0 0 0 20.1 38.8c3 .992 6.14 1.498 9.3 1.5h38.9a2.002 2.002 0 0 0 1.9-1.9v-1.9a6.799 6.799 0 0 0-6.6-6.9 2.994 2.994 0 0 1-2.216-.77 2.999 2.999 0 0 1-.984-2.13v-.2c.1-2.2-.1-40 .7-41.1.8-1.1 1.6-7.7 1.7-7.9a59.11 59.11 0 0 0 .6-18.3l-.8-6.8c6.2-6.5 7.1-13.4 4.1-21.8v-.2a4.7 4.7 0 0 0-5.1-3L143.5 71l-5.4-10.7a2.902 2.902 0 0 0-3.7-1.4l-.2.1zm.8 1.8a1 1 0 0 1 1.3.3l5.9 11.9 13.7-1.9a3 3 0 0 1 3.2 1.9c2.9 8.2 1.8 14.5-4.4 20.6l1 7.7c.702 5.896.5 11.865-.6 17.7-.6 3-2.1 8.6-2.2 11.5v.6l-.3 37.4a4.9 4.9 0 0 0 4.7 4.9h.2a5 5 0 0 1 5 4.8v2h-38.9a28.702 28.702 0 0 1-8.7-1.3 29.002 29.002 0 0 1-18.8-36.5c2.6-8.1 5.7-18 8.4-26 3.1-9.6 10.6-15.4 21-18.2a7.102 7.102 0 0 0 3.4-9.3 18.999 18.999 0 0 1-.1-16l.2-.4 5.6-11.3c.1-.2.2-.4.4-.4z" fill="#4285F4"/><path d="m143.3 61.2-2.9 8.2 1.7 3.8 6.2-1.1-1.3-10.5a1.903 1.903 0 0 0-1.687-1.707A1.9 1.9 0 0 0 143.3 61.2zm-.8 8.1 2.6-7.5 1.1 8.7-3 .5-.7-1.7z" fill="#4285F4"/><path fill-rule="evenodd" clip-rule="evenodd" d="m137.4 91.8 18.3 1.7a2.402 2.402 0 0 1 2.2 2.6v.9a2.501 2.501 0 0 1-2.5 2.2h-.1l-19.7-1.7 1.8-5.7zm-4.4-.4 2.4.2-1.8 5.6-2.4-.2 1.8-5.6zm-5.4-.5h.2l3.2.3-1.8 5.6-2-.2a2.294 2.294 0 0 1-1.61-.848A2.305 2.305 0 0 1 125.1 94v-.9a2.502 2.502 0 0 1 2.5-2.2zm26.5-18.5 4.8 2.6a3.208 3.208 0 0 0-1.671-2.645 3.204 3.204 0 0 0-3.129.045z" fill="#4285F4"/><path d="M152.9 73.3c.8-.3 1.3 1 .5 1.3h-.1l-10 3.2a.797.797 0 0 1-.81-.481.804.804 0 0 1 .21-.919h.1l10.1-3.1zm.8 2c.7-.5 1.5.6.8 1.2h-.1l-8.2 5.3c-.7.5-1.5-.6-.9-1.1h.1l8.3-5.4z" fill="#8AB4F8"/><path d="M118.6 130.4a17.591 17.591 0 0 1 12.534 4.942A17.615 17.615 0 0 1 136.5 147.7v23.5l15.8 2.1a6.997 6.997 0 0 1 6.2 6.8.993.993 0 0 1-.212.84 1.002 1.002 0 0 1-.788.36.893.893 0 0 1-.9-1 5.199 5.199 0 0 0-4.3-5.1h-.3l-17.4-2.3v-25.4a15.502 15.502 0 0 0-16-15.1.997.997 0 0 1-1-1 .997.997 0 0 1 1-1z" fill="#4285F4"/><path fill-rule="evenodd" clip-rule="evenodd" d="M146.9 135.7c2.2 60.7 86.3 60.9 88.8.3.1-29.4-28.8 2.7-48.8 2.6-20-.1-40-8-40-2.9z" fill="#D2E3FC"/><path d="M222.3 101.5a1 1 0 0 1 1.4 0 47.902 47.902 0 0 1 13.3 33.6c-2.6 62.8-89.5 62.6-91.8-.3a47.598 47.598 0 0 1 13.5-33.4 1.098 1.098 0 0 1 1.4-.1 1 1 0 0 1 0 1.4 46.602 46.602 0 0 0-13 32.1c0 25.2 19.6 45.6 43.9 45.6 39.3.2 58.6-49.6 31.3-77.5a1 1 0 0 1 0-1.4z" fill="#4285F4"/><path fill-rule="evenodd" clip-rule="evenodd" d="M278.974 60.863a1 1 0 0 1 .223 1.397c-.33.456-.677.891-1.039 1.306a1 1 0 0 1-1.507-1.316c.323-.369.632-.757.927-1.164a1 1 0 0 1 1.396-.223zm-50.855-5.045a1 1 0 0 1-1.101.888 29.42 29.42 0 0 0-2.942-.172 1 1 0 1 1 .014-2 31.26 31.26 0 0 1 3.142.183 1 1 0 0 1 .887 1.101zm2.038.345a1 1 0 0 1 1.194-.757c1.024.23 2.032.497 3.018.794a1 1 0 0 1-.576 1.915 41.725 41.725 0 0 0-2.879-.758 1 1 0 0 1-.757-1.194zm-9.136-.498a1 1 0 0 1-.841 1.137 22.36 22.36 0 0 0-2.85.616 1 1 0 1 1-.55-1.923 24.325 24.325 0 0 1 3.104-.671 1 1 0 0 1 1.137.84zm15.967 2.458a1 1 0 0 1 1.295-.567 59.43 59.43 0 0 1 2.857 1.206 1 1 0 1 1-.823 1.822 58.311 58.311 0 0 0-2.762-1.165 1 1 0 0 1-.567-1.296zm6.507 2.872a1 1 0 0 1 1.35-.42 81.265 81.265 0 0 1 2.708 1.491 1 1 0 0 1-.998 1.734 79.875 79.875 0 0 0-2.64-1.455 1 1 0 0 1-.42-1.35zm-29.33-3.516a.999.999 0 0 1-.449 1.341c-.426.213-.85.442-1.271.689a16.65 16.65 0 0 0-1.122.762 1 1 0 0 1-1.189-1.608 18.55 18.55 0 0 1 1.268-.86l.01-.007.01-.006c.464-.272.932-.525 1.402-.76a1 1 0 0 1 1.341.45zm60.934 7.657a1 1 0 0 1-.252 1.392c-.92.638-1.89 1.185-2.897 1.642a1.001 1.001 0 0 1-.828-1.82c.901-.41 1.766-.898 2.585-1.466a1 1 0 0 1 1.392.252zm-25.412-.635a1 1 0 0 1 1.377-.325c.561.346.977.603 1.261.762l.011.006.01.006c.433.257.874.498 1.323.723a1 1 0 0 1-.897 1.788 23.236 23.236 0 0 1-1.436-.785 42.184 42.184 0 0 1-1.323-.799 1 1 0 0 1-.326-1.376zm18.834 3.851a1 1 0 0 1-.777 1.182c-1.078.223-2.175.36-3.28.416a1 1 0 0 1-.1-1.997 19.544 19.544 0 0 0 2.975-.378 1 1 0 0 1 1.182.777zm-59.979-7.031a1 1 0 0 1 .059 1.413 23.268 23.268 0 0 0-1.752 2.159 1 1 0 1 1-1.624-1.168 25.244 25.244 0 0 1 1.904-2.345 1 1 0 0 1 1.413-.06zm47.631 6.498a1 1 0 0 1 1.237-.685c.971.28 1.957.49 2.948.632a1 1 0 1 1-.282 1.98 23.763 23.763 0 0 1-3.218-.69 1 1 0 0 1-.685-1.237zm-51.699-1.104a1 1 0 0 1 .416 1.351 31.163 31.163 0 0 0-1.2 2.543 1 1 0 0 1-1.845-.773c.387-.924.813-1.828 1.278-2.705a1 1 0 0 1 1.351-.416zm-2.717 6.193a1 1 0 0 1 .677 1.241c-.266.906-.496 1.82-.687 2.737a1 1 0 1 1-1.958-.409 37.33 37.33 0 0 1 .726-2.892 1 1 0 0 1 1.242-.677zm-1.476 6.6a1 1 0 0 1 .901 1.091 30.87 30.87 0 0 0-.143 2.808 1 1 0 0 1-2-.009 32.59 32.59 0 0 1 .152-2.989 1 1 0 0 1 1.09-.9zm5.023 6.61a1 1 0 0 1 1.194-.758 8.84 8.84 0 0 1 3.373 1.525 1 1 0 0 1-1.185 1.611 6.851 6.851 0 0 0-2.625-1.184 1 1 0 0 1-.757-1.195zm-2.429-.045a1 1 0 0 1-.939 1.058l-.653.042c.131.928.315 1.817.551 2.656a1 1 0 1 1-1.925.542 22.163 22.163 0 0 1-.611-2.957c-.127.033-.254.07-.382.113a1 1 0 1 1-.627-1.9 7.724 7.724 0 0 1 1.861-.378l.248-.018c.477-.034.953-.07 1.42-.097a1 1 0 0 1 1.057.94zm-7.283 2.117a1 1 0 0 1-.082 1.412 16.206 16.206 0 0 0-2.106 2.299 1 1 0 1 1-1.592-1.21 18.184 18.184 0 0 1 2.368-2.583 1 1 0 0 1 1.412.082zm16.063 1.949a1 1 0 0 1 1.377.32c.291.468.577.973.858 1.517.343.665.528 1.495.541 2.333a1 1 0 0 1-2 .03c-.009-.586-.141-1.102-.319-1.445a19.56 19.56 0 0 0-.778-1.378 1 1 0 0 1 .321-1.377zm-9.813 2.662a1 1 0 0 1 1.367.363 9.886 9.886 0 0 0 1.595 2.088 1 1 0 0 1-1.405 1.424 11.895 11.895 0 0 1-1.92-2.508 1 1 0 0 1 .363-1.367zm-11.092 1.367a1 1 0 0 1 .467 1.335 24.548 24.548 0 0 0-1.187 2.954 1 1 0 0 1-1.9-.625 26.44 26.44 0 0 1 1.285-3.197 1 1 0 0 1 1.335-.467zm20.909 3.856a1 1 0 0 1-.719 1.218c-.681.175-1.446.224-2.293.137l-.04-.004-.039-.007c-.54-.1-1.06-.239-1.557-.415a1 1 0 1 1 .668-1.885c.384.136.787.245 1.211.325.633.061 1.143.017 1.552-.088a1 1 0 0 1 1.217.72zm-23.458 3.428a.999.999 0 0 1 .831 1.144c-.082.52-.151 1.05-.205 1.589a1 1 0 1 1-1.99-.199 30.54 30.54 0 0 1 .22-1.703 1 1 0 0 1 1.144-.831z" fill="#D2E3FC"/><path fill-rule="evenodd" clip-rule="evenodd" d="M139 40.3a12.198 12.198 0 0 1 11.1-13.2c16.2-.7 18.2 22.3 2.1 24.3A12.202 12.202 0 0 1 139 40.3" fill="#FBBC04"/><path fill-rule="evenodd" clip-rule="evenodd" d="m122.5 23.4-13.7 7.3a2.199 2.199 0 0 0-.878 2.975c.183.338.451.623.778.825l13.2 8.1a2.2 2.2 0 0 0 3.3-1.7l.5-15.6a2.201 2.201 0 0 0-3.2-1.9z" fill="#EA4335"/><path d="M97.4 45a15.7 15.7 0 0 0-9.5-7.3 15.513 15.513 0 0 1-.7 2.3c13.3 3.5 12.8 22.7-1 25.2a9.8 9.8 0 0 1-2.9.1h-.2l-3.5.2a12.9 12.9 0 0 0-8.7 3.8l-.8.9-1.6 1.8-.4.5-.3.3-.4.3a8.8 8.8 0 0 1-13.6-1.4l-.2-.3a9 9 0 0 1 0-8.7c1.2-1.9 2.8-2.9 6.2-4.1l3-1.1a13.2 13.2 0 0 0 7.4-6.3l1.5-3.1-2.3-.8-1.4 2.8a11.6 11.6 0 0 1-6.2 5.2l-.4.2-2.5.8c-3.8 1.4-5.9 2.6-7.4 5.2a11.4 11.4 0 0 0 .1 11.3l.3.4a11.2 11.2 0 0 0 16.6 2.3l.5-.5c.391-.341.759-.709 1.1-1.1l1.9-2.1.8-.8a10.1 10.1 0 0 1 6.9-3.1l3.5-.2h-.1c1.2.112 2.409.079 3.6-.1 10.2-1.5 16-13.7 10.7-22.6z" fill="#F1F3F4"/><path d="M76.8 41.7a12.1 12.1 0 0 0-5 6.3h-.1c6 1.4 13.2-2.2 15.5-8.1a12.902 12.902 0 0 0-10.4 1.8z" fill="#8AB4F8"/><path d="M71.1 43.9a15 15 0 0 1 4.4-4.3 15.6 15.6 0 0 1 12.4-1.9 13.5 13.5 0 0 0-1.2-9 1.8 1.8 0 0 0-2.5-.7L64.9 41.5c-2.7 2.3 2.7 5 4.5 5.8v-.2a15.906 15.906 0 0 1 1.7-3.2z" fill="#8AB4F8"/></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/chromeos/images/notification_access_error_dark.svg b/chrome/browser/resources/settings/chromeos/images/notification_access_error_dark.svg index cfe9856..6208080 100644 --- a/chrome/browser/resources/settings/chromeos/images/notification_access_error_dark.svg +++ b/chrome/browser/resources/settings/chromeos/images/notification_access_error_dark.svg
@@ -1 +1 @@ -<svg width="300" height="200" viewBox="0 0 300 200" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M9.3 181.5l283.8.7" stroke="#669DF6" stroke-width="2" stroke-linecap="round"/><path d="M62.8 114.7a16.992 16.992 0 0 1 19.826-2.6A17.01 17.01 0 0 1 88 116.7a23.901 23.901 0 0 1-.1 28.8l-2.6 3.3c-7.9 10.4-1.2 24.8 11.8 26.4a94.75 94.75 0 0 0 14.1 1.2h6.3a2.499 2.499 0 0 1 2.5 2.4 2.39 2.39 0 0 1-.703 1.697 2.39 2.39 0 0 1-1.697.703h-4.1c-3.5 0-7.1-.1-10.6-.4-6.4-.5-11.2-1.7-14.5-3.4a21.201 21.201 0 0 1-7.1-31.3l.2-.3 2.6-3.3a18.8 18.8 0 0 0-.9-23.9 12 12 0 0 0-17.1-.4l-2.8 2.7c-2.2 2.1-5.5-1.1-3.5-3.4h.2l2.8-2.8z" fill="#669DF6"/><path d="M163.5 177.5v1.8l-38.9-.1a28.702 28.702 0 0 1-8.7-1.3 29.002 29.002 0 0 1-18.8-36.5c3.6-11.4 6.4-20.1 8.4-26 3.1-9.6 10.6-15.4 21-18.2a7.101 7.101 0 0 0 3.4-9.3 18.908 18.908 0 0 1 .1-16.4l5.6-11.3a1.002 1.002 0 0 1 1.7 0l5.9 11.9 13.7-1.9a3 3 0 0 1 3.2 1.9c2.9 8.2 1.9 14.3-4.4 20.6l1 7.7a54.797 54.797 0 0 1-.8 18.5l-1.5 7.1c-.537.269-.624 18.009-.683 30.227-.029 5.967-.051 10.617-.117 11.273a4.91 4.91 0 0 0 1.399 3.53 4.926 4.926 0 0 0 1.602 1.088 4.916 4.916 0 0 0 1.899.382c1.326 0 2.598.527 3.536 1.464a5.004 5.004 0 0 1 1.464 3.536z" fill="#323336"/><path d="M146.193 59.755l-3.541 8.247 1.235 3.212 4.283-1.07-1.977-10.39z" fill="#323336"/><path fill-rule="evenodd" clip-rule="evenodd" d="M135.7 59.6a.337.337 0 0 1 .45-.15.335.335 0 0 1 .15.45c-2.3 7.8-1.6 13.2.9 16.7s4.6 3.1 5.7 6.2c2.1 5.9-4.1 13.3-7.4 17.2-5.2 6.1-7.3 5.9-11.4 10.3-7.3 7.8-12.9 21.5-9.5 32.9 2.6 8.4 8.1 8.7 9.5 17.5 1.1 6.8-.5 15.9-5.3 17.8-4.8 1.9-16.3-6.6-20.7-15.4a34.199 34.199 0 0 1-3.1-18.8c.5-6 2-5.2 7.6-21.9 2.8-8.3 3.5-11.6 6.5-14.9a49.113 49.113 0 0 1 9.9-8c5.3-2.7 8.2-2.3 9.8-5 4.1-7.9-10.2-14 6.9-34.9z" fill="#8AB4F8" fill-opacity=".4"/><path d="M135.2 58a3.5 3.5 0 0 0-1.4 1.3l-5.5 11.4a20.696 20.696 0 0 0-.2 18 5.003 5.003 0 0 1-3.2 7c-12.4 3.3-19.3 11.1-22.4 22.5l-2 6.1-2.5 8-2.8 8.6a30.901 30.901 0 0 0 20.1 38.8c3 .992 6.14 1.498 9.3 1.5h38.9a2.002 2.002 0 0 0 1.9-1.9v-1.9a6.799 6.799 0 0 0-6.6-6.9 2.994 2.994 0 0 1-2.216-.77 2.999 2.999 0 0 1-.984-2.13v-.2c.1-2.2-.1-40 .7-41.1.8-1.1 1.6-7.7 1.7-7.9a59.11 59.11 0 0 0 .6-18.3l-.8-6.8c6.2-6.5 7.1-13.4 4.1-21.8v-.2a4.7 4.7 0 0 0-5.1-3L144.5 70l-5.4-10.7a2.902 2.902 0 0 0-3.7-1.4l-.2.1zm.8 1.8a1 1 0 0 1 1.3.3l5.9 11.9 13.7-1.9a3 3 0 0 1 3.2 1.9c2.9 8.2 1.8 14.5-4.4 20.6l1 7.7c.702 5.896.5 11.865-.6 17.7-.6 3-2.1 8.6-2.2 11.5v.6l-.3 37.4a4.9 4.9 0 0 0 4.7 4.9h.2a5 5 0 0 1 5 4.8v2h-38.9a28.702 28.702 0 0 1-8.7-1.3 29.002 29.002 0 0 1-18.8-36.5c2.6-8.1 5.7-18 8.4-26 3.1-9.6 10.6-15.4 21-18.2a7.102 7.102 0 0 0 3.4-9.3 18.999 18.999 0 0 1-.1-16l.2-.4 5.6-11.3c.1-.2.2-.4.4-.4z" fill="#669DF6"/><path d="M144.3 60.2l-2.9 8.2 1.7 3.8 6.2-1.1-1.3-10.5a1.903 1.903 0 0 0-1.687-1.707A1.9 1.9 0 0 0 144.3 60.2zm-.8 8.1l2.6-7.5 1.1 8.7-3 .5-.7-1.7z" fill="#669DF6"/><path fill-rule="evenodd" clip-rule="evenodd" d="M138.4 90.8l18.3 1.7a2.402 2.402 0 0 1 2.2 2.6v.9a2.502 2.502 0 0 1-2.5 2.2h-.1l-19.7-1.7 1.8-5.7zm-4.4-.4l2.4.2-1.8 5.6-2.4-.2 1.8-5.6zm-5.4-.5h.2l3.2.3-1.8 5.6-2-.2a2.294 2.294 0 0 1-1.61-.848A2.304 2.304 0 0 1 126.1 93v-.9a2.502 2.502 0 0 1 2.5-2.2zM155.1 71.4l4.8 2.6a3.208 3.208 0 0 0-1.671-2.645 3.204 3.204 0 0 0-3.129.045z" fill="#669DF6"/><path d="M153.9 72.3c.8-.3 1.3 1 .5 1.3h-.1l-10 3.2a.797.797 0 0 1-.81-.481.804.804 0 0 1 .21-.919h.1l10.1-3.1zM154.7 74.3c.7-.5 1.5.6.8 1.2h-.1l-8.2 5.3c-.7.5-1.5-.6-.9-1.1h.1l8.3-5.4z" fill="#1A73E8" fill-opacity=".4"/><path d="M119.6 129.4a17.591 17.591 0 0 1 12.534 4.942A17.615 17.615 0 0 1 137.5 146.7v23.5l15.8 2.1a6.997 6.997 0 0 1 6.2 6.8.993.993 0 0 1-.212.84 1.002 1.002 0 0 1-.788.36.893.893 0 0 1-.9-1 5.199 5.199 0 0 0-4.3-5.1h-.3l-17.4-2.3v-25.4a15.502 15.502 0 0 0-16-15.1.997.997 0 0 1-1-1 1 1 0 0 1 1-1z" fill="#669DF6"/><path fill-rule="evenodd" clip-rule="evenodd" d="M147.9 134.7c2.2 60.7 86.3 60.9 88.8.3.1-29.4-28.8 2.7-48.8 2.6-20-.1-40-8-40-2.9z" fill="#8AB4F8" fill-opacity=".4"/><path d="M223.3 100.5a1 1 0 0 1 1.4 0 47.902 47.902 0 0 1 13.3 33.6c-2.6 62.8-89.5 62.6-91.8-.3a47.598 47.598 0 0 1 13.5-33.4 1.098 1.098 0 0 1 1.4-.1 1 1 0 0 1 0 1.4 46.602 46.602 0 0 0-13 32.1c0 25.2 19.6 45.6 43.9 45.6 39.3.2 58.6-49.6 31.3-77.5a1 1 0 0 1 0-1.4z" fill="#669DF6"/><path fill-rule="evenodd" clip-rule="evenodd" d="M279.974 59.863c.448.324.548.95.223 1.397-.33.456-.677.891-1.039 1.306a1 1 0 0 1-1.507-1.315c.323-.37.632-.758.927-1.165a1 1 0 0 1 1.396-.223zm-50.855-5.045a1 1 0 0 1-1.101.888 29.39 29.39 0 0 0-2.942-.172 1 1 0 1 1 .014-2c1.054.007 2.103.071 3.142.183a1 1 0 0 1 .887 1.101zm2.038.345a1 1 0 0 1 1.194-.757 43.72 43.72 0 0 1 3.018.794 1 1 0 0 1-.576 1.915 41.782 41.782 0 0 0-2.879-.757 1 1 0 0 1-.757-1.195zm-9.136-.498a1 1 0 0 1-.841 1.137c-.956.143-1.907.346-2.85.616a1 1 0 1 1-.55-1.923 24.324 24.324 0 0 1 3.104-.671 1 1 0 0 1 1.137.84zm15.967 2.458a1 1 0 0 1 1.295-.567c.986.386 1.941.791 2.857 1.206a1 1 0 1 1-.823 1.822 58.416 58.416 0 0 0-2.762-1.165 1 1 0 0 1-.567-1.296zm6.507 2.872a1 1 0 0 1 1.35-.42 81.265 81.265 0 0 1 2.708 1.491 1 1 0 0 1-.998 1.734 80.06 80.06 0 0 0-2.64-1.455 1 1 0 0 1-.42-1.35zm-29.33-3.516a.999.999 0 0 1-.449 1.341c-.426.213-.85.442-1.271.689-.382.237-.757.492-1.122.762a1 1 0 0 1-1.189-1.608 18.55 18.55 0 0 1 1.268-.86l.01-.007.01-.006a23.55 23.55 0 0 1 1.402-.76 1 1 0 0 1 1.341.45zm60.934 7.657a1 1 0 0 1-.252 1.392c-.92.638-1.89 1.185-2.897 1.643a1.001 1.001 0 0 1-.828-1.821c.901-.41 1.766-.898 2.585-1.466a1 1 0 0 1 1.392.252zm-25.412-.635a1 1 0 0 1 1.377-.325c.561.346.977.603 1.261.762l.011.006.01.006c.433.257.874.498 1.323.723a1 1 0 0 1-.897 1.788 23.236 23.236 0 0 1-1.436-.785 42.38 42.38 0 0 1-1.323-.799 1 1 0 0 1-.326-1.376zm18.834 3.851a1 1 0 0 1-.777 1.182c-1.078.223-2.175.36-3.28.416a1 1 0 0 1-.1-1.997 19.557 19.557 0 0 0 2.975-.378 1 1 0 0 1 1.182.777zm-59.979-7.031a1 1 0 0 1 .059 1.413 23.253 23.253 0 0 0-1.752 2.159 1 1 0 1 1-1.624-1.167 25.218 25.218 0 0 1 1.904-2.346 1 1 0 0 1 1.413-.06zm47.631 6.498a1 1 0 0 1 1.237-.684c.971.279 1.957.49 2.948.63a1 1 0 1 1-.282 1.98 23.763 23.763 0 0 1-3.218-.688 1 1 0 0 1-.685-1.238zm-51.699-1.104a1 1 0 0 1 .416 1.352 31.145 31.145 0 0 0-1.2 2.542 1 1 0 0 1-1.845-.773c.387-.924.813-1.828 1.278-2.705a1 1 0 0 1 1.351-.416zm-2.717 6.193a1 1 0 0 1 .677 1.241c-.266.906-.496 1.82-.687 2.737a1 1 0 1 1-1.958-.409 37.33 37.33 0 0 1 .726-2.892 1 1 0 0 1 1.242-.677zm-1.476 6.6a1 1 0 0 1 .901 1.091c-.091.95-.139 1.888-.143 2.808a1 1 0 0 1-2-.009c.004-.983.055-1.982.152-2.989a1 1 0 0 1 1.09-.9zm5.023 6.61a1 1 0 0 1 1.194-.758 8.85 8.85 0 0 1 3.373 1.525 1 1 0 0 1-1.185 1.611 6.852 6.852 0 0 0-2.625-1.184 1 1 0 0 1-.757-1.194zm-2.429-.045a1 1 0 0 1-.939 1.058l-.653.042c.131.928.315 1.817.551 2.656a1 1 0 1 1-1.925.542 22.163 22.163 0 0 1-.611-2.957c-.127.033-.254.07-.382.113a1 1 0 1 1-.627-1.9 7.724 7.724 0 0 1 1.861-.378l.248-.018c.477-.034.953-.07 1.42-.097a1 1 0 0 1 1.057.94zm-7.283 2.117a1 1 0 0 1-.082 1.412 16.205 16.205 0 0 0-2.106 2.299 1 1 0 1 1-1.592-1.21 18.183 18.183 0 0 1 2.368-2.583 1 1 0 0 1 1.412.082zm16.063 1.949a1 1 0 0 1 1.377.32c.291.468.577.973.858 1.517.343.665.528 1.495.541 2.333a1 1 0 0 1-2 .03c-.009-.586-.141-1.102-.319-1.445a19.579 19.579 0 0 0-.778-1.378 1 1 0 0 1 .321-1.377zm-9.813 2.662a1 1 0 0 1 1.367.363 9.89 9.89 0 0 0 1.595 2.089 1 1 0 0 1-1.405 1.423 11.892 11.892 0 0 1-1.92-2.508 1 1 0 0 1 .363-1.367zm-11.092 1.367a1 1 0 0 1 .467 1.335c-.443.922-.843 1.909-1.187 2.954a1 1 0 0 1-1.9-.625 26.433 26.433 0 0 1 1.285-3.197 1 1 0 0 1 1.335-.467zm20.909 3.856a1 1 0 0 1-.719 1.218c-.681.175-1.446.224-2.293.137l-.04-.004-.039-.007c-.54-.1-1.06-.239-1.557-.415a1 1 0 1 1 .668-1.885c.384.136.787.245 1.211.325.633.061 1.143.017 1.552-.088a1 1 0 0 1 1.217.72zm-23.458 3.428a.999.999 0 0 1 .831 1.144c-.082.52-.151 1.05-.205 1.589a1 1 0 1 1-1.99-.199 30.54 30.54 0 0 1 .22-1.703 1 1 0 0 1 1.144-.831z" fill="#8AB4F8" fill-opacity=".4"/><path fill-rule="evenodd" clip-rule="evenodd" d="M140 39.3a12.198 12.198 0 0 1 11.1-13.2c16.2-.7 18.2 22.3 2.1 24.3A12.202 12.202 0 0 1 140 39.3z" fill="#FCC934"/><path fill-rule="evenodd" clip-rule="evenodd" d="M123.5 22.4l-13.7 7.3a2.199 2.199 0 0 0-.878 2.975c.183.338.451.623.778.825l13.2 8.1a2.2 2.2 0 0 0 3.3-1.7l.5-15.6a2.201 2.201 0 0 0-3.2-1.9z" fill="#EA4335"/><path d="M98.4 44a15.7 15.7 0 0 0-9.5-7.3 15.508 15.508 0 0 1-.7 2.3c13.3 3.5 12.8 22.7-1 25.2a9.8 9.8 0 0 1-2.9.1h-.2l-3.5.2a12.9 12.9 0 0 0-8.7 3.8l-.8.9-1.6 1.8-.4.5-.3.3-.4.3a8.799 8.799 0 0 1-13.6-1.4l-.2-.3a9.001 9.001 0 0 1 0-8.7c1.2-1.9 2.8-2.9 6.2-4.1l3-1.1a13.2 13.2 0 0 0 7.4-6.3l1.5-3.1-2.3-.8-1.4 2.8a11.6 11.6 0 0 1-6.2 5.2l-.4.2-2.5.8c-3.8 1.4-5.9 2.6-7.4 5.2a11.4 11.4 0 0 0 .1 11.3l.3.4a11.2 11.2 0 0 0 16.6 2.3l.5-.5c.391-.341.759-.709 1.1-1.1l1.9-2.1.8-.8a10.1 10.1 0 0 1 6.9-3.1l3.5-.2h-.1c1.2.112 2.409.079 3.6-.1 10.2-1.5 16-13.7 10.7-22.6z" fill="#5F6368"/><path d="M77.8 40.7a12.1 12.1 0 0 0-5 6.3h-.1c6 1.4 13.2-2.2 15.5-8.1a12.9 12.9 0 0 0-10.4 1.8z" fill="#1A73E8" fill-opacity=".4"/><path d="M72.1 42.9a14.999 14.999 0 0 1 4.4-4.3 15.6 15.6 0 0 1 12.4-1.9 13.5 13.5 0 0 0-1.2-9 1.8 1.8 0 0 0-2.5-.7L65.9 40.5c-2.7 2.3 2.7 5 4.5 5.8v-.2a15.904 15.904 0 0 1 1.7-3.2z" fill="#1A73E8" fill-opacity=".4"/></svg> +<svg width="300" height="200" viewBox="0 0 300 200" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="m9.3 181.5 283.8.7" stroke="#669DF6" stroke-width="2" stroke-linecap="round"/><path d="M62.8 114.7a16.992 16.992 0 0 1 19.826-2.6A17.01 17.01 0 0 1 88 116.7a23.901 23.901 0 0 1-.1 28.8l-2.6 3.3c-7.9 10.4-1.2 24.8 11.8 26.4a94.75 94.75 0 0 0 14.1 1.2h6.3a2.499 2.499 0 0 1 2.5 2.4 2.39 2.39 0 0 1-.703 1.697 2.39 2.39 0 0 1-1.697.703h-4.1c-3.5 0-7.1-.1-10.6-.4-6.4-.5-11.2-1.7-14.5-3.4a21.201 21.201 0 0 1-7.1-31.3l.2-.3 2.6-3.3a18.8 18.8 0 0 0-.9-23.9 12 12 0 0 0-17.1-.4l-2.8 2.7c-2.2 2.1-5.5-1.1-3.5-3.4h.2l2.8-2.8z" fill="#669DF6"/><path d="M163.5 177.5v1.8l-38.9-.1a28.702 28.702 0 0 1-8.7-1.3 29.002 29.002 0 0 1-18.8-36.5c3.6-11.4 6.4-20.1 8.4-26 3.1-9.6 10.6-15.4 21-18.2a7.101 7.101 0 0 0 3.4-9.3 18.908 18.908 0 0 1 .1-16.4l5.6-11.3a1.002 1.002 0 0 1 1.7 0l5.9 11.9 13.7-1.9a3 3 0 0 1 3.2 1.9c2.9 8.2 1.9 14.3-4.4 20.6l1 7.7a54.797 54.797 0 0 1-.8 18.5l-1.5 7.1c-.537.269-.624 18.009-.683 30.227-.029 5.967-.051 10.617-.117 11.273a4.91 4.91 0 0 0 1.399 3.53 4.926 4.926 0 0 0 1.602 1.088 4.916 4.916 0 0 0 1.899.382c1.326 0 2.598.527 3.536 1.464a5.004 5.004 0 0 1 1.464 3.536z" fill="#323336"/><path d="m146.193 59.755-3.541 8.247 1.235 3.212 4.283-1.07-1.977-10.39z" fill="#323336"/><path fill-rule="evenodd" clip-rule="evenodd" d="M135.7 59.6a.337.337 0 0 1 .45-.15.335.335 0 0 1 .15.45c-2.3 7.8-1.6 13.2.9 16.7s4.6 3.1 5.7 6.2c2.1 5.9-4.1 13.3-7.4 17.2-5.2 6.1-7.3 5.9-11.4 10.3-7.3 7.8-12.9 21.5-9.5 32.9 2.6 8.4 8.1 8.7 9.5 17.5 1.1 6.8-.5 15.9-5.3 17.8-4.8 1.9-16.3-6.6-20.7-15.4a34.199 34.199 0 0 1-3.1-18.8c.5-6 2-5.2 7.6-21.9 2.8-8.3 3.5-11.6 6.5-14.9a49.113 49.113 0 0 1 9.9-8c5.3-2.7 8.2-2.3 9.8-5 4.1-7.9-10.2-14 6.9-34.9z" fill="#8AB4F8" fill-opacity=".4"/><path d="M135.2 58a3.5 3.5 0 0 0-1.4 1.3l-5.5 11.4a20.696 20.696 0 0 0-.2 18 5.003 5.003 0 0 1-3.2 7c-12.4 3.3-19.3 11.1-22.4 22.5l-2 6.1-2.5 8-2.8 8.6a30.901 30.901 0 0 0 20.1 38.8c3 .992 6.14 1.498 9.3 1.5h38.9a2.002 2.002 0 0 0 1.9-1.9v-1.9a6.799 6.799 0 0 0-6.6-6.9 2.994 2.994 0 0 1-2.216-.77 2.999 2.999 0 0 1-.984-2.13v-.2c.1-2.2-.1-40 .7-41.1.8-1.1 1.6-7.7 1.7-7.9a59.11 59.11 0 0 0 .6-18.3l-.8-6.8c6.2-6.5 7.1-13.4 4.1-21.8v-.2a4.7 4.7 0 0 0-5.1-3L144.5 70l-5.4-10.7a2.902 2.902 0 0 0-3.7-1.4l-.2.1zm.8 1.8a1 1 0 0 1 1.3.3l5.9 11.9 13.7-1.9a3 3 0 0 1 3.2 1.9c2.9 8.2 1.8 14.5-4.4 20.6l1 7.7c.702 5.896.5 11.865-.6 17.7-.6 3-2.1 8.6-2.2 11.5v.6l-.3 37.4a4.9 4.9 0 0 0 4.7 4.9h.2a5 5 0 0 1 5 4.8v2h-38.9a28.702 28.702 0 0 1-8.7-1.3 29.002 29.002 0 0 1-18.8-36.5c2.6-8.1 5.7-18 8.4-26 3.1-9.6 10.6-15.4 21-18.2a7.102 7.102 0 0 0 3.4-9.3 18.999 18.999 0 0 1-.1-16l.2-.4 5.6-11.3c.1-.2.2-.4.4-.4z" fill="#669DF6"/><path d="m144.3 60.2-2.9 8.2 1.7 3.8 6.2-1.1-1.3-10.5a1.903 1.903 0 0 0-1.687-1.707A1.9 1.9 0 0 0 144.3 60.2zm-.8 8.1 2.6-7.5 1.1 8.7-3 .5-.7-1.7z" fill="#669DF6"/><path fill-rule="evenodd" clip-rule="evenodd" d="m138.4 90.8 18.3 1.7a2.402 2.402 0 0 1 2.2 2.6v.9a2.502 2.502 0 0 1-2.5 2.2h-.1l-19.7-1.7 1.8-5.7zm-4.4-.4 2.4.2-1.8 5.6-2.4-.2 1.8-5.6zm-5.4-.5h.2l3.2.3-1.8 5.6-2-.2a2.294 2.294 0 0 1-1.61-.848A2.304 2.304 0 0 1 126.1 93v-.9a2.502 2.502 0 0 1 2.5-2.2zm26.5-18.5 4.8 2.6a3.208 3.208 0 0 0-1.671-2.645 3.204 3.204 0 0 0-3.129.045z" fill="#669DF6"/><path d="M153.9 72.3c.8-.3 1.3 1 .5 1.3h-.1l-10 3.2a.797.797 0 0 1-.81-.481.804.804 0 0 1 .21-.919h.1l10.1-3.1zm.8 2c.7-.5 1.5.6.8 1.2h-.1l-8.2 5.3c-.7.5-1.5-.6-.9-1.1h.1l8.3-5.4z" fill="#1A73E8" fill-opacity=".4"/><path d="M119.6 129.4a17.591 17.591 0 0 1 12.534 4.942A17.615 17.615 0 0 1 137.5 146.7v23.5l15.8 2.1a6.997 6.997 0 0 1 6.2 6.8.993.993 0 0 1-.212.84 1.002 1.002 0 0 1-.788.36.893.893 0 0 1-.9-1 5.199 5.199 0 0 0-4.3-5.1h-.3l-17.4-2.3v-25.4a15.502 15.502 0 0 0-16-15.1.997.997 0 0 1-1-1 1 1 0 0 1 1-1z" fill="#669DF6"/><path fill-rule="evenodd" clip-rule="evenodd" d="M147.9 134.7c2.2 60.7 86.3 60.9 88.8.3.1-29.4-28.8 2.7-48.8 2.6-20-.1-40-8-40-2.9z" fill="#8AB4F8" fill-opacity=".4"/><path d="M223.3 100.5a1 1 0 0 1 1.4 0 47.902 47.902 0 0 1 13.3 33.6c-2.6 62.8-89.5 62.6-91.8-.3a47.598 47.598 0 0 1 13.5-33.4 1.098 1.098 0 0 1 1.4-.1 1 1 0 0 1 0 1.4 46.602 46.602 0 0 0-13 32.1c0 25.2 19.6 45.6 43.9 45.6 39.3.2 58.6-49.6 31.3-77.5a1 1 0 0 1 0-1.4z" fill="#669DF6"/><path fill-rule="evenodd" clip-rule="evenodd" d="M279.974 59.863a1 1 0 0 1 .223 1.397c-.33.456-.677.891-1.039 1.306a1 1 0 0 1-1.507-1.315c.323-.37.632-.758.927-1.165a1 1 0 0 1 1.396-.223zm-50.855-5.045a1 1 0 0 1-1.101.888 29.39 29.39 0 0 0-2.942-.172 1 1 0 1 1 .014-2 31.26 31.26 0 0 1 3.142.183 1 1 0 0 1 .887 1.101zm2.038.345a1 1 0 0 1 1.194-.757 43.72 43.72 0 0 1 3.018.794 1 1 0 0 1-.576 1.915 41.782 41.782 0 0 0-2.879-.757 1 1 0 0 1-.757-1.195zm-9.136-.498a1 1 0 0 1-.841 1.137 22.36 22.36 0 0 0-2.85.616 1 1 0 1 1-.55-1.923 24.324 24.324 0 0 1 3.104-.671 1 1 0 0 1 1.137.84zm15.967 2.458a1 1 0 0 1 1.295-.567 59.43 59.43 0 0 1 2.857 1.206 1 1 0 1 1-.823 1.822 58.416 58.416 0 0 0-2.762-1.165 1 1 0 0 1-.567-1.296zm6.507 2.872a1 1 0 0 1 1.35-.42 81.265 81.265 0 0 1 2.708 1.491 1 1 0 0 1-.998 1.734 80.06 80.06 0 0 0-2.64-1.455 1 1 0 0 1-.42-1.35zm-29.33-3.516a.999.999 0 0 1-.449 1.341c-.426.213-.85.442-1.271.689-.382.237-.757.492-1.122.762a1 1 0 0 1-1.189-1.608 18.55 18.55 0 0 1 1.268-.86l.01-.007.01-.006a23.55 23.55 0 0 1 1.402-.76 1 1 0 0 1 1.341.45zm60.934 7.657a1 1 0 0 1-.252 1.392c-.92.638-1.89 1.185-2.897 1.643a1.001 1.001 0 0 1-.828-1.821c.901-.41 1.766-.898 2.585-1.466a1 1 0 0 1 1.392.252zm-25.412-.635a1 1 0 0 1 1.377-.325c.561.346.977.603 1.261.762l.011.006.01.006c.433.257.874.498 1.323.723a1 1 0 0 1-.897 1.788 23.236 23.236 0 0 1-1.436-.785 42.38 42.38 0 0 1-1.323-.799 1 1 0 0 1-.326-1.376zm18.834 3.851a1 1 0 0 1-.777 1.182c-1.078.223-2.175.36-3.28.416a1 1 0 0 1-.1-1.997 19.557 19.557 0 0 0 2.975-.378 1 1 0 0 1 1.182.777zm-59.979-7.031a1 1 0 0 1 .059 1.413 23.253 23.253 0 0 0-1.752 2.159 1 1 0 1 1-1.624-1.167 25.218 25.218 0 0 1 1.904-2.346 1 1 0 0 1 1.413-.06zm47.631 6.498a1 1 0 0 1 1.237-.684c.971.279 1.957.49 2.948.63a1 1 0 1 1-.282 1.98 23.763 23.763 0 0 1-3.218-.688 1 1 0 0 1-.685-1.238zm-51.699-1.104a1 1 0 0 1 .416 1.352 31.145 31.145 0 0 0-1.2 2.542 1 1 0 0 1-1.845-.773c.387-.924.813-1.828 1.278-2.705a1 1 0 0 1 1.351-.416zm-2.717 6.193a1 1 0 0 1 .677 1.241c-.266.906-.496 1.82-.687 2.737a1 1 0 1 1-1.958-.409 37.33 37.33 0 0 1 .726-2.892 1 1 0 0 1 1.242-.677zm-1.476 6.6a1 1 0 0 1 .901 1.091c-.091.95-.139 1.888-.143 2.808a1 1 0 0 1-2-.009 32.59 32.59 0 0 1 .152-2.989 1 1 0 0 1 1.09-.9zm5.023 6.61a1 1 0 0 1 1.194-.758 8.85 8.85 0 0 1 3.373 1.525 1 1 0 0 1-1.185 1.611 6.852 6.852 0 0 0-2.625-1.184 1 1 0 0 1-.757-1.194zm-2.429-.045a1 1 0 0 1-.939 1.058l-.653.042c.131.928.315 1.817.551 2.656a1 1 0 1 1-1.925.542 22.163 22.163 0 0 1-.611-2.957c-.127.033-.254.07-.382.113a1 1 0 1 1-.627-1.9 7.724 7.724 0 0 1 1.861-.378l.248-.018c.477-.034.953-.07 1.42-.097a1 1 0 0 1 1.057.94zm-7.283 2.117a1 1 0 0 1-.082 1.412 16.205 16.205 0 0 0-2.106 2.299 1 1 0 1 1-1.592-1.21 18.183 18.183 0 0 1 2.368-2.583 1 1 0 0 1 1.412.082zm16.063 1.949a1 1 0 0 1 1.377.32c.291.468.577.973.858 1.517.343.665.528 1.495.541 2.333a1 1 0 0 1-2 .03c-.009-.586-.141-1.102-.319-1.445a19.579 19.579 0 0 0-.778-1.378 1 1 0 0 1 .321-1.377zm-9.813 2.662a1 1 0 0 1 1.367.363 9.89 9.89 0 0 0 1.595 2.089 1 1 0 0 1-1.405 1.423 11.892 11.892 0 0 1-1.92-2.508 1 1 0 0 1 .363-1.367zm-11.092 1.367a1 1 0 0 1 .467 1.335 24.548 24.548 0 0 0-1.187 2.954 1 1 0 0 1-1.9-.625 26.433 26.433 0 0 1 1.285-3.197 1 1 0 0 1 1.335-.467zm20.909 3.856a1 1 0 0 1-.719 1.218c-.681.175-1.446.224-2.293.137l-.04-.004-.039-.007c-.54-.1-1.06-.239-1.557-.415a1 1 0 1 1 .668-1.885c.384.136.787.245 1.211.325.633.061 1.143.017 1.552-.088a1 1 0 0 1 1.217.72zm-23.458 3.428a.999.999 0 0 1 .831 1.144c-.082.52-.151 1.05-.205 1.589a1 1 0 1 1-1.99-.199 30.54 30.54 0 0 1 .22-1.703 1 1 0 0 1 1.144-.831z" fill="#8AB4F8" fill-opacity=".4"/><path fill-rule="evenodd" clip-rule="evenodd" d="M140 39.3a12.198 12.198 0 0 1 11.1-13.2c16.2-.7 18.2 22.3 2.1 24.3A12.202 12.202 0 0 1 140 39.3z" fill="#FCC934"/><path fill-rule="evenodd" clip-rule="evenodd" d="m123.5 22.4-13.7 7.3a2.199 2.199 0 0 0-.878 2.975c.183.338.451.623.778.825l13.2 8.1a2.2 2.2 0 0 0 3.3-1.7l.5-15.6a2.201 2.201 0 0 0-3.2-1.9z" fill="#EA4335"/><path d="M98.4 44a15.7 15.7 0 0 0-9.5-7.3 15.508 15.508 0 0 1-.7 2.3c13.3 3.5 12.8 22.7-1 25.2a9.8 9.8 0 0 1-2.9.1h-.2l-3.5.2a12.9 12.9 0 0 0-8.7 3.8l-.8.9-1.6 1.8-.4.5-.3.3-.4.3a8.799 8.799 0 0 1-13.6-1.4l-.2-.3a9.001 9.001 0 0 1 0-8.7c1.2-1.9 2.8-2.9 6.2-4.1l3-1.1a13.2 13.2 0 0 0 7.4-6.3l1.5-3.1-2.3-.8-1.4 2.8a11.6 11.6 0 0 1-6.2 5.2l-.4.2-2.5.8c-3.8 1.4-5.9 2.6-7.4 5.2a11.4 11.4 0 0 0 .1 11.3l.3.4a11.2 11.2 0 0 0 16.6 2.3l.5-.5c.391-.341.759-.709 1.1-1.1l1.9-2.1.8-.8a10.1 10.1 0 0 1 6.9-3.1l3.5-.2h-.1c1.2.112 2.409.079 3.6-.1 10.2-1.5 16-13.7 10.7-22.6z" fill="#5F6368"/><path d="M77.8 40.7a12.1 12.1 0 0 0-5 6.3h-.1c6 1.4 13.2-2.2 15.5-8.1a12.9 12.9 0 0 0-10.4 1.8z" fill="#1A73E8" fill-opacity=".4"/><path d="M72.1 42.9a14.999 14.999 0 0 1 4.4-4.3 15.6 15.6 0 0 1 12.4-1.9 13.5 13.5 0 0 0-1.2-9 1.8 1.8 0 0 0-2.5-.7L65.9 40.5c-2.7 2.3 2.7 5 4.5 5.8v-.2a15.904 15.904 0 0 1 1.7-3.2z" fill="#1A73E8" fill-opacity=".4"/></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/chromeos/images/notification_access_finished.svg b/chrome/browser/resources/settings/chromeos/images/notification_access_finished.svg index 405d9910..44471a80 100644 --- a/chrome/browser/resources/settings/chromeos/images/notification_access_finished.svg +++ b/chrome/browser/resources/settings/chromeos/images/notification_access_finished.svg
@@ -1 +1 @@ -<svg width="300" height="200" viewBox="0 0 300 200" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M149.1 133.7a38.595 38.595 0 0 0 35.723-23.736A38.597 38.597 0 0 0 187.8 95.2c-1.9-51.2-75-51.4-77.2-.2a38.704 38.704 0 0 0 11.264 27.295A38.706 38.706 0 0 0 149.1 133.7z" fill="#D2E3FC"/><path d="M148.7 64.2a30.195 30.195 0 0 0-28.082 18.597A30.205 30.205 0 0 0 118.3 94.4c1.5 40.2 58.9 40.4 60.6.2a30.204 30.204 0 0 0-18.597-28.082A30.196 30.196 0 0 0 148.7 64.2zm0 1.8a28.405 28.405 0 0 1 26.296 17.67A28.415 28.415 0 0 1 177.1 94.6c-1.6 37.8-55.6 37.6-57-.2a28.396 28.396 0 0 1 17.67-26.296A28.404 28.404 0 0 1 148.7 66z" fill="#fff"/><path d="M185.9 65.6a1.1 1.1 0 0 1 1.6 1.5l-37.6 36.5a3.697 3.697 0 0 1-5.1.1h-.1l-15.2-14.9a1.104 1.104 0 0 1 .085-1.338 1.1 1.1 0 0 1 1.315-.262h.1l15.2 14.9a1.404 1.404 0 0 0 2 .1h.1l37.6-36.6z" fill="#34A853"/><path d="M189.4 63.7a1.207 1.207 0 0 1 .404.83 1.208 1.208 0 0 1-.304.87h-.1l-8.2 7.9-1.5-2 7.9-7.7a1.3 1.3 0 0 1 1.8.1z" fill="#4285F4"/><path fill-rule="evenodd" clip-rule="evenodd" d="M62.6 67.4a9.2 9.2 0 0 1 0 13.2C53.5 89 41 76.4 49.4 67.3a9.3 9.3 0 0 1 13.2.1" fill="#34A853"/><path d="M32.7 143.4a8.6 8.6 0 0 1 1.9-12l16.2-11.9c9.5-6.3 19.1 6.8 10.2 13.9l-16.3 11.9a8.497 8.497 0 0 1-12-1.9v0z" stroke="#4285F4" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M210.3 94.7c20.7-5.8 43.2 1.2 58.5 15.8 5 4.5 10.9 10.3 17.1 14" stroke="#D2E3FC" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path fill-rule="evenodd" clip-rule="evenodd" d="M241.1 39.5l-1.7 21.1a1.004 1.004 0 0 0 .459.825 1.002 1.002 0 0 0 .941.075l19.1-9.1a.995.995 0 0 0 .525-.822A1.004 1.004 0 0 0 260 50.7l-17.4-12a1 1 0 0 0-1.5.8" fill="#EE5FFA"/><path fill-rule="evenodd" clip-rule="evenodd" d="M28.7 40.4l-4.4 5.4a1 1 0 0 0 .6 1.6l6.9 1.1a.9.9 0 0 0 1.1-1.3l-2.5-6.5a.999.999 0 0 0-1.7-.3" fill="#EA4335"/><path d="M239.4 136.8h-8.1a1.697 1.697 0 0 0-1.3.7l-4 7a1.197 1.197 0 0 0 0 1.4l4 7.1a1.5 1.5 0 0 0 1.2.7h8.1a1.397 1.397 0 0 0 1.2-.7l4.1-7a1.204 1.204 0 0 0 0-1.4l-4-7a1.592 1.592 0 0 0-1.2-.8z" stroke="#FBBC04" stroke-width="2" stroke-linejoin="round"/></svg> +<svg width="300" height="200" viewBox="0 0 300 200" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M149.1 133.7a38.595 38.595 0 0 0 35.723-23.736A38.597 38.597 0 0 0 187.8 95.2c-1.9-51.2-75-51.4-77.2-.2a38.704 38.704 0 0 0 11.264 27.295A38.706 38.706 0 0 0 149.1 133.7z" fill="#D2E3FC"/><path d="M148.7 64.2a30.195 30.195 0 0 0-28.082 18.597A30.205 30.205 0 0 0 118.3 94.4c1.5 40.2 58.9 40.4 60.6.2a30.204 30.204 0 0 0-18.597-28.082A30.196 30.196 0 0 0 148.7 64.2zm0 1.8a28.405 28.405 0 0 1 26.296 17.67A28.415 28.415 0 0 1 177.1 94.6c-1.6 37.8-55.6 37.6-57-.2a28.396 28.396 0 0 1 17.67-26.296A28.404 28.404 0 0 1 148.7 66z" fill="#fff"/><path d="M185.9 65.6a1.1 1.1 0 0 1 1.6 1.5l-37.6 36.5a3.697 3.697 0 0 1-5.1.1h-.1l-15.2-14.9a1.104 1.104 0 0 1 .085-1.338 1.1 1.1 0 0 1 1.315-.262h.1l15.2 14.9a1.404 1.404 0 0 0 2 .1h.1l37.6-36.6z" fill="#34A853"/><path d="M189.4 63.7a1.207 1.207 0 0 1 .404.83 1.208 1.208 0 0 1-.304.87h-.1l-8.2 7.9-1.5-2 7.9-7.7a1.3 1.3 0 0 1 1.8.1z" fill="#4285F4"/><path fill-rule="evenodd" clip-rule="evenodd" d="M62.6 67.4a9.2 9.2 0 0 1 0 13.2C53.5 89 41 76.4 49.4 67.3a9.3 9.3 0 0 1 13.2.1" fill="#34A853"/><path d="M32.7 143.4a8.6 8.6 0 0 1 1.9-12l16.2-11.9c9.5-6.3 19.1 6.8 10.2 13.9l-16.3 11.9a8.497 8.497 0 0 1-12-1.9v0z" stroke="#4285F4" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M210.3 94.7c20.7-5.8 43.2 1.2 58.5 15.8 5 4.5 10.9 10.3 17.1 14" stroke="#D2E3FC" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path fill-rule="evenodd" clip-rule="evenodd" d="m241.1 39.5-1.7 21.1a1.004 1.004 0 0 0 .459.825 1.002 1.002 0 0 0 .941.075l19.1-9.1a.995.995 0 0 0 .525-.822A1.004 1.004 0 0 0 260 50.7l-17.4-12a1 1 0 0 0-1.5.8" fill="#EE5FFA"/><path fill-rule="evenodd" clip-rule="evenodd" d="m28.7 40.4-4.4 5.4a1 1 0 0 0 .6 1.6l6.9 1.1a.9.9 0 0 0 1.1-1.3l-2.5-6.5a.999.999 0 0 0-1.7-.3" fill="#EA4335"/><path d="M239.4 136.8h-8.1a1.697 1.697 0 0 0-1.3.7l-4 7a1.197 1.197 0 0 0 0 1.4l4 7.1a1.5 1.5 0 0 0 1.2.7h8.1a1.397 1.397 0 0 0 1.2-.7l4.1-7a1.204 1.204 0 0 0 0-1.4l-4-7a1.592 1.592 0 0 0-1.2-.8z" stroke="#FBBC04" stroke-width="2" stroke-linejoin="round"/></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/chromeos/images/notification_access_finished_dark.svg b/chrome/browser/resources/settings/chromeos/images/notification_access_finished_dark.svg index f7bcb7d..41f0dbf 100644 --- a/chrome/browser/resources/settings/chromeos/images/notification_access_finished_dark.svg +++ b/chrome/browser/resources/settings/chromeos/images/notification_access_finished_dark.svg
@@ -1 +1 @@ -<svg width="300" height="200" viewBox="0 0 300 200" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M149.1 133.7a38.595 38.595 0 0 0 35.723-23.736A38.597 38.597 0 0 0 187.8 95.2c-1.9-51.2-75-51.4-77.2-.2a38.704 38.704 0 0 0 11.264 27.295A38.706 38.706 0 0 0 149.1 133.7z" fill="#8AB4F8" fill-opacity=".4"/><path d="M148.7 64.2a30.195 30.195 0 0 0-28.082 18.597A30.205 30.205 0 0 0 118.3 94.4c1.5 40.2 58.9 40.4 60.6.2a30.204 30.204 0 0 0-18.597-28.082A30.196 30.196 0 0 0 148.7 64.2zm0 1.8a28.405 28.405 0 0 1 26.296 17.67A28.415 28.415 0 0 1 177.1 94.6c-1.6 37.8-55.6 37.6-57-.2a28.396 28.396 0 0 1 17.67-26.296A28.404 28.404 0 0 1 148.7 66z" fill="#323336"/><path d="M185.9 65.6a1.1 1.1 0 0 1 1.6 1.5l-37.6 36.5a3.697 3.697 0 0 1-5.1.1h-.1l-15.2-14.9a1.105 1.105 0 0 1 .085-1.338 1.1 1.1 0 0 1 1.315-.262h.1l15.2 14.9a1.404 1.404 0 0 0 2 .1h.1l37.6-36.6z" fill="#5BB974"/><path d="M189.4 63.7a1.207 1.207 0 0 1 .404.83 1.208 1.208 0 0 1-.304.87h-.1l-8.2 7.9-1.5-2 7.9-7.7a1.3 1.3 0 0 1 1.8.1z" fill="#669DF6"/><path fill-rule="evenodd" clip-rule="evenodd" d="M62.6 67.4a9.2 9.2 0 0 1 0 13.2C53.5 89 41 76.4 49.4 67.3a9.298 9.298 0 0 1 13.2.1z" fill="#5BB974"/><path d="M32.7 143.4a8.6 8.6 0 0 1 1.9-12l16.2-11.9c9.5-6.3 19.1 6.8 10.2 13.9l-16.3 11.9a8.497 8.497 0 0 1-12-1.9v0z" stroke="#669DF6" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M210.3 94.7c20.7-5.8 43.2 1.2 58.5 15.8 5 4.5 10.9 10.3 17.1 14" stroke="#8AB4F8" stroke-opacity=".4" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path fill-rule="evenodd" clip-rule="evenodd" d="M241.1 39.5l-1.7 21.1a1.004 1.004 0 0 0 .459.825 1.003 1.003 0 0 0 .941.075l19.1-9.1a.995.995 0 0 0 .525-.822A1.004 1.004 0 0 0 260 50.7l-17.4-12a1 1 0 0 0-1.5.8z" fill="#F882FE"/><path fill-rule="evenodd" clip-rule="evenodd" d="M28.7 40.4l-4.4 5.4a1 1 0 0 0 .6 1.6l6.9 1.1a.9.9 0 0 0 1.1-1.3l-2.5-6.5a.999.999 0 0 0-1.7-.3z" fill="#EA4335"/><path d="M239.4 136.8h-8.1a1.695 1.695 0 0 0-1.3.7l-4 7a1.197 1.197 0 0 0 0 1.4l4 7.1a1.5 1.5 0 0 0 1.2.7h8.1a1.397 1.397 0 0 0 1.2-.7l4.1-7a1.204 1.204 0 0 0 0-1.4l-4-7a1.592 1.592 0 0 0-1.2-.8z" stroke="#FCC934" stroke-width="2" stroke-linejoin="round"/></svg> +<svg width="300" height="200" viewBox="0 0 300 200" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M149.1 133.7a38.595 38.595 0 0 0 35.723-23.736A38.597 38.597 0 0 0 187.8 95.2c-1.9-51.2-75-51.4-77.2-.2a38.704 38.704 0 0 0 11.264 27.295A38.706 38.706 0 0 0 149.1 133.7z" fill="#8AB4F8" fill-opacity=".4"/><path d="M148.7 64.2a30.195 30.195 0 0 0-28.082 18.597A30.205 30.205 0 0 0 118.3 94.4c1.5 40.2 58.9 40.4 60.6.2a30.204 30.204 0 0 0-18.597-28.082A30.196 30.196 0 0 0 148.7 64.2zm0 1.8a28.405 28.405 0 0 1 26.296 17.67A28.415 28.415 0 0 1 177.1 94.6c-1.6 37.8-55.6 37.6-57-.2a28.396 28.396 0 0 1 17.67-26.296A28.404 28.404 0 0 1 148.7 66z" fill="#323336"/><path d="M185.9 65.6a1.1 1.1 0 0 1 1.6 1.5l-37.6 36.5a3.697 3.697 0 0 1-5.1.1h-.1l-15.2-14.9a1.105 1.105 0 0 1 .085-1.338 1.1 1.1 0 0 1 1.315-.262h.1l15.2 14.9a1.404 1.404 0 0 0 2 .1h.1l37.6-36.6z" fill="#5BB974"/><path d="M189.4 63.7a1.207 1.207 0 0 1 .404.83 1.208 1.208 0 0 1-.304.87h-.1l-8.2 7.9-1.5-2 7.9-7.7a1.3 1.3 0 0 1 1.8.1z" fill="#669DF6"/><path fill-rule="evenodd" clip-rule="evenodd" d="M62.6 67.4a9.2 9.2 0 0 1 0 13.2C53.5 89 41 76.4 49.4 67.3a9.298 9.298 0 0 1 13.2.1z" fill="#5BB974"/><path d="M32.7 143.4a8.6 8.6 0 0 1 1.9-12l16.2-11.9c9.5-6.3 19.1 6.8 10.2 13.9l-16.3 11.9a8.497 8.497 0 0 1-12-1.9v0z" stroke="#669DF6" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M210.3 94.7c20.7-5.8 43.2 1.2 58.5 15.8 5 4.5 10.9 10.3 17.1 14" stroke="#8AB4F8" stroke-opacity=".4" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path fill-rule="evenodd" clip-rule="evenodd" d="m241.1 39.5-1.7 21.1a1.004 1.004 0 0 0 .459.825 1.003 1.003 0 0 0 .941.075l19.1-9.1a.995.995 0 0 0 .525-.822A1.004 1.004 0 0 0 260 50.7l-17.4-12a1 1 0 0 0-1.5.8z" fill="#F882FE"/><path fill-rule="evenodd" clip-rule="evenodd" d="m28.7 40.4-4.4 5.4a1 1 0 0 0 .6 1.6l6.9 1.1a.9.9 0 0 0 1.1-1.3l-2.5-6.5a.999.999 0 0 0-1.7-.3z" fill="#EA4335"/><path d="M239.4 136.8h-8.1a1.695 1.695 0 0 0-1.3.7l-4 7a1.197 1.197 0 0 0 0 1.4l4 7.1a1.5 1.5 0 0 0 1.2.7h8.1a1.397 1.397 0 0 0 1.2-.7l4.1-7a1.204 1.204 0 0 0 0-1.4l-4-7a1.592 1.592 0 0 0-1.2-.8z" stroke="#FCC934" stroke-width="2" stroke-linejoin="round"/></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/chromeos/images/notification_access_setup.svg b/chrome/browser/resources/settings/chromeos/images/notification_access_setup.svg index 12a502c..7c9fec1 100644 --- a/chrome/browser/resources/settings/chromeos/images/notification_access_setup.svg +++ b/chrome/browser/resources/settings/chromeos/images/notification_access_setup.svg
@@ -1 +1 @@ -<svg width="300" height="200" viewBox="0 0 300 200" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M55.144 79.3a11.4 11.4 0 0 1 2.2-16.1c12.4-8.7 25.5 8.5 14 18.2a11.5 11.5 0 0 1-16.2-2.1z" fill="#EA4335"/><path fill-rule="evenodd" clip-rule="evenodd" d="M212.944 79.4l-4.1-4.2a1.896 1.896 0 0 1-.5-1.9l1.5-5.7a1.992 1.992 0 0 1 1.4-1.3l5.7-1.5a1.902 1.902 0 0 1 1.9.5l4.1 4.2a1.7 1.7 0 0 1 .5 1.8l-1.5 5.7a1.998 1.998 0 0 1-1.4 1.4l-5.7 1.5a1.902 1.902 0 0 1-1.9-.5" fill="#EE5FFA"/><path fill-rule="evenodd" clip-rule="evenodd" d="M68.844 71l-7.6-2.4a.499.499 0 0 0-.7.5l1.8 7.9a.5.5 0 0 0 .8.3l5.9-5.5a.5.5 0 0 0-.2-.8" fill="#fff"/><path fill-rule="evenodd" clip-rule="evenodd" d="M165.244 31.6l-4.5-9.3a2.601 2.601 0 0 0-4.5-.3l-8.2 11.6a2.503 2.503 0 0 0 .621 3.588c.381.252.823.394 1.279.412l10.2.8.2-1.6a5.902 5.902 0 0 1 4.9-5.2z" fill="#FBBC04"/><path d="M134.344 43.8a15.91 15.91 0 0 0-5.3-11.2 10.212 10.212 0 0 1-1.8 1.8c10.7 9.4 1.3 26.8-12.5 22.7a15.5 15.5 0 0 1-2.8-1.2h-.2l-3.3-1.5a13.5 13.5 0 0 0-9.7-.5l-1.2.5-2.3.9-.6.2h-.4l-.5.2a9.199 9.199 0 0 1-11.9-7.7v-.3a9.1 9.1 0 0 1 4.1-8c2-1.2 3.9-1.4 7.5-.9l3.3.4a14.4 14.4 0 0 0 9.8-2.4l2.8-2.2a14.498 14.498 0 0 1-1.8-1.7l-2.6 1.8a11.1 11.1 0 0 1-8.1 2h-.5l-2.6-.3c-4.2-.6-6.6-.4-9.2 1.3a11.7 11.7 0 0 0-5.2 10.5.6.6 0 0 0 .1.4 11.598 11.598 0 0 0 14.2 9.8h.6l1.6-.5 2.8-1.1 1-.4a11.3 11.3 0 0 1 7.9.4l3.2 1.4h-.1a15.587 15.587 0 0 0 3.4 1.5c10.1 3.3 21-5.3 20.3-15.9z" fill="#D2E3FC"/><path fill-rule="evenodd" clip-rule="evenodd" d="M147.444 80.7c11.1.2 13.5 15.3 3.3 19.1l1.6 8-2.9 13.9-13.1-12.7c3.2-1.7 2.5-8.1 2.4-13.6h.1c-3.8-6.3 1.1-14.8 8.6-14.7z" fill="#D2E3FC" stroke="#4285F4" stroke-width="2" stroke-linejoin="round"/><path fill-rule="evenodd" clip-rule="evenodd" d="M199.844 35.5l-32.9-3.9h-1.7l1.6 3.4a2.607 2.607 0 0 1-.223 2.607 2.602 2.602 0 0 1-2.377 1.093l-4.1-.3-1.7 14.7a6 6 0 0 0 5.2 6.7l17 2 9.1 11.6a1.502 1.502 0 0 0 2.6-.7l1.1-9.4 3.1.4a5.896 5.896 0 0 0 5.893-2.988c.38-.683.62-1.435.707-2.212l1.9-16.4a5.917 5.917 0 0 0-.169-2.316 5.91 5.91 0 0 0-2.819-3.577 5.895 5.895 0 0 0-2.212-.707z" fill="#D2E3FC"/><path d="M29.744 179.3l-3.4-68.9a4.198 4.198 0 0 1 4-4.4l48.6-2.3a4.1 4.1 0 0 1 4.4 3.9l3.6 71.7" fill="#D2E3FC"/><path d="M26.844 178.2l-3.6-74.4a6.302 6.302 0 0 1 6-6.6l49.7-2.4a6.302 6.302 0 0 1 6.6 6l3.8 77.5" stroke="#4285F4" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M47.344 101.1a.903.903 0 1 0 1.802-.1.903.903 0 0 0-1.802.1z" fill="#4285F4"/><path d="M87.344 112.4l.2 4M87.644 122l.5 9.8" stroke="#4285F4" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/><path d="M51.844 100.8l9.3-.4" stroke="#4285F4" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M117.044 31.1a13.299 13.299 0 0 0-7.7 3.5c4.8 4.2 13.2 4.2 17.9-.2a13.202 13.202 0 0 0-10.2-3.3z" fill="#4285F4"/><path d="M110.744 30.5a16.196 16.196 0 0 1 6-1.9 16.402 16.402 0 0 1 12.3 4 13.701 13.701 0 0 0 3.1-8.8 1.805 1.805 0 0 0-1.25-1.725 1.797 1.797 0 0 0-.75-.075l-24 3.4c-3.6.8.1 5.9 1.4 7.5l.2-.2a17.512 17.512 0 0 1 3-2.2z" fill="#4285F4"/><path fill-rule="evenodd" clip-rule="evenodd" d="M223.044 123.2l71.3.7a2.102 2.102 0 0 1 2 2.7l-14.1 51.2a2.097 2.097 0 0 1-2.1 1.6l-71.3-.6a2.298 2.298 0 0 1-2.2-2.3c0-1 14.2-50.8 14.3-51.7a2.097 2.097 0 0 1 2.1-1.6z" fill="#4285F4"/><path d="M147.444 79.7a10.898 10.898 0 0 0-10.9 10.8c.6 14.4 21.1 14.4 21.7.1a10.8 10.8 0 0 0-10.8-10.9zm0 2a8.9 8.9 0 0 1 8.9 8.9c-.5 11.7-17.4 11.7-17.8-.1a8.81 8.81 0 0 1 2.613-6.258 8.785 8.785 0 0 1 6.287-2.542z" fill="#4285F4"/><path fill-rule="evenodd" clip-rule="evenodd" d="M144.144 80.3a18.301 18.301 0 0 1 5.9.4c.476.022.932.197 1.3.5a8.399 8.399 0 0 1 3.8 2.9c2.2 3.1 3.2 4.8 3 5.3l-8.3-5.4-11.3 10.3c-2.6-7.7.6-11.6 7.2-13l-1.6-1z" fill="#4285F4"/><path fill-rule="evenodd" clip-rule="evenodd" d="M138.544 83c-3.2-5-11-3-11.6 2.8a6.304 6.304 0 0 0-3.92-3.893 6.298 6.298 0 0 0-5.48.693 2.505 2.505 0 0 1-2.042.135 2.499 2.499 0 0 1-1.458-1.435 6.401 6.401 0 0 0-7.7-2.1l-1.7 1.1a2.207 2.207 0 0 1-1.789.463 2.2 2.2 0 0 1-1.511-1.063l-2.4-4a4.8 4.8 0 0 0-8.2-.1 5 5 0 0 0 3.9 7.4l5.9.3a2.298 2.298 0 0 1 2.1 2.1 5.7 5.7 0 0 0 1 3.1 6.194 6.194 0 0 0 6.414 2.828 6.2 6.2 0 0 0 2.286-.928h.1a2.197 2.197 0 0 1 2.744.19c.244.225.434.501.556.81a6.298 6.298 0 0 0 10.095.75 6.3 6.3 0 0 0 1.505-3.55 6.298 6.298 0 0 0 6.721 4.267 6.3 6.3 0 0 0 2.679-.967 6.5 6.5 0 0 0 1.8-8.9" fill="#4285F4"/><path fill-rule="evenodd" clip-rule="evenodd" d="M193.544 139.5a22.394 22.394 0 0 0-10.6-3.6c-8.7-.5-22.8 7.8-32.7 14.4l.2 1.9 13 16.5 14.3-15.3a8.783 8.783 0 0 0 3 1h.3v.7c-.6.6-.4 1.6-.1 2.7v1l.8.6c1.2 2.2 2.6 4.7 5.3 5a2.397 2.397 0 0 0 2.3-.8l1.1-.4a3.801 3.801 0 0 0 2.6-1l1.2-.4c1.8.8 3.9-.6 4.6-2.3 1.6-4.7-2-10.8-5.1-14.1l10.5 11c2.5 2.8 4.6.6 3-2.5a38.2 38.2 0 0 0-13.7-14.4z" fill="#D2E3FC"/><path d="M194.444 144.8c-.9-.9-2.4.4-1.5 1.4 3 3.1 6.4 8.7 5 13a2.899 2.899 0 0 1-3.2 1.9h-.2a.999.999 0 0 0-.7 1.8c2.3 1 5-.5 5.9-2.9.9-2.4.6-4.6-.4-7l4.2 4.3c3.1 3.6 6.8.5 4.5-3.6-4.8-9.2-14.5-17.9-25-18.7-4.7-.4-12.1 2.3-19.1 6l-5.7 3.2c-2.4 1.4-4.9 3-7.2 4.6l-1.3.8c-1.1.7 0 2.3 1.1 1.6l2.4-1.6 6.5-4 3.8-2.2c8-4.3 14.6-6.7 19.4-6.4a20.6 20.6 0 0 1 10.1 3.4 36.304 36.304 0 0 1 13.3 14.2c.6 1.1.6 2.1.2 2.3-.4.2-.9-.2-1.6-1l-10.5-11.1z" fill="#4285F4"/><path d="M177.844 152.3a1 1 0 0 0-1.3 0h-.1l-14.2 16.2a.999.999 0 0 0 1.4 1.4h.1l14.2-16.2a1.1 1.1 0 0 0-.1-1.4zM191.044 147.2c-.8-.9-2.3.4-1.4 1.4a13.507 13.507 0 0 1 3.5 11.2c-.3 1.7-.8 2.3-2.4 2.5h-.1c-.3-.1-.5-.2-.7-.1h-.1a.91.91 0 0 0-.689.467.9.9 0 0 0-.011.833 1.102 1.102 0 0 0 1.2.8 4.302 4.302 0 0 0 4.7-4.2 15.703 15.703 0 0 0-4-12.9z" fill="#4285F4"/><path d="M187.244 149.5a.996.996 0 0 0-1.201.036 1.004 1.004 0 0 0-.299 1.164c2.6 3.2 4.3 7.2 3.5 11.1-.4 1.3-1 1.8-2.1 1.7-1.1-.1-3.2-1.8-4.3-3.9l-.2-.4c-.4-.8-1.5-3-.8-3.4.7-.4 3.1 2 3.8 3.9.096.231.275.418.501.524a.996.996 0 0 0 1.399-1.124c-1.1-2.8-3.7-5.9-6.5-5.1-2.8.8-.8 5.1.4 7 1.2 1.9 3.3 4.3 5.6 4.5 4.2.4 4.8-4.8 4.1-8.1a17.306 17.306 0 0 0-3.9-7.9z" fill="#4285F4"/><path d="M177.644 152.2c-1.1-.6-2.1 1.1-1 1.7.84.523 1.749.927 2.7 1.2l2 .5h.5l.5.2a1.003 1.003 0 0 0 1.171-.675 1.006 1.006 0 0 0-.047-.724 1.005 1.005 0 0 0-.524-.501h-.5l-.5-.2-1.9-.5a6.2 6.2 0 0 1-2.4-1zM174.444 155.1h.1a.898.898 0 0 1 .9.9l-1.2 14.7a.904.904 0 0 1-.8.9h-10a1.004 1.004 0 0 1-.741-.914 1 1 0 0 1 .641-.986h9.1l1-13.8c.1-.5.4-.9.8-.9l.2.1z" fill="#4285F4"/><path d="M135.844 108.1a1.02 1.02 0 0 1 .768-.055 1.009 1.009 0 0 1 .442 1.614 1.01 1.01 0 0 1-.31.241c-10.6 4.8-17.8 10.4-21.8 16.8-21.8 33.9 14.5 78.1 49.4 47.2l-15.9-22.6-8.5 4a1.003 1.003 0 0 1-.752.014 1.004 1.004 0 0 1-.548-.514h-.1l-4.3-13.1a.999.999 0 0 1 1.8-.7h.1l4 12 8.2-3.8a1.1 1.1 0 0 1 1.2.2h.1l16.8 24.1a1.1 1.1 0 0 1-.1 1.3c-16.5 13.8-32 15.3-46.1 4.2-14.1-11.1-18.7-36.2-7-53.4 4.2-6.7 11.8-12.5 22.6-17.5zM152.544 105.6c6.7-.8 15.6 1.3 23.1 5.7l.6.3 2.1 1.5a99.796 99.796 0 0 1 13 13c5.4 6.3 10.4 13.1 15.3 19.9h13.7v2h-14.7c-5-6.9-10.2-13.9-15.7-20.4a93.233 93.233 0 0 0-13-12.9l-.6-.5-.5-.4c-7.2-4.7-16.4-7-23.1-6.2l-.2-2zM144.544 92.9a.9.9 0 0 1 1.1.7h.1c.1.9.9 1.5 1.6.9h.1a1.027 1.027 0 0 1 1.775.665c.01.272-.089.536-.275.735a3.004 3.004 0 0 1-3.3.7c-1.2-.4-3-3.2-1.1-3.7zM173.944 129.5a1 1 0 0 1 1 .8l.2 6.7a1 1 0 1 1-2 .1l-.2-6.6a1.096 1.096 0 0 1 1-1z" fill="#4285F4"/><path d="M149.144 120.7a.998.998 0 0 1 1.2.7l.7 2.4c.2.7.9 3 1 3.6.1.6 1.2 4.2 1.6 6.1.4 1.9 1 5 1.4 7.4l.4 2.2.3 2.5a.895.895 0 0 1-.149.733.893.893 0 0 1-.651.367 1 1 0 0 1-1.1-.8l-.3-1.9c-.4-2.7-.9-5.7-1.5-8.3a84.608 84.608 0 0 0-2.1-8.7l-1.1-3.9-.4-1.2a1.1 1.1 0 0 1 .7-1.2z" fill="#4285F4"/><path fill-rule="evenodd" clip-rule="evenodd" d="M280.944 178.6l-92.6-.2a1.304 1.304 0 0 1-.943-1.25 1.301 1.301 0 0 1 .943-1.25l92.6.2a1.304 1.304 0 0 1 .943 1.25 1.303 1.303 0 0 1-.943 1.25zM287.944 180.7l-129.6-.3c0-.8-.2-2 .9-2l128.7.3a1 1 0 1 1 0 2zM11.361 180l111.085.3c0-.8.171-1.9-.857-2L11.361 178a.799.799 0 0 0-.606.293 1.09 1.09 0 0 0-.25.707c0 .265.09.52.25.707.16.188.379.293.606.293z" fill="#4285F4"/><path fill-rule="evenodd" clip-rule="evenodd" d="M156.344 180.7h-34.1c11.2 7.8 23.3 7.8 36.1.1l-2-.1z" fill="#D2E3FC"/><path fill-rule="evenodd" clip-rule="evenodd" d="M233.043 83.358a13.06 13.06 0 0 1 5.072 0 .947.947 0 1 1-.368 1.86 11.162 11.162 0 0 0-4.336 0 .948.948 0 1 1-.368-1.86zm-3.373 2.204a.947.947 0 0 1-.26 1.315 11.174 11.174 0 0 0-3.065 3.065.95.95 0 0 1-1.576-1.055 13.07 13.07 0 0 1 3.586-3.586.948.948 0 0 1 1.315.26zm11.817 0a.948.948 0 0 1 1.315-.26 13.06 13.06 0 0 1 3.587 3.585.949.949 0 0 1-1.576 1.055 11.173 11.173 0 0 0-3.065-3.065.949.949 0 0 1-.261-1.315zm-17.547 7.267c.514.102.848.6.746 1.114a11.207 11.207 0 0 0 0 4.336.948.948 0 1 1-1.86.368 13.09 13.09 0 0 1 0-5.072.949.949 0 0 1 1.114-.746zm23.277 0a.948.948 0 0 1 1.114.746c.163.82.248 1.669.248 2.536s-.085 1.715-.248 2.536a.948.948 0 1 1-1.86-.368 11.13 11.13 0 0 0 0-4.336.95.95 0 0 1 .746-1.114zm-22.188 9.19a.95.95 0 0 1 1.316.261 11.177 11.177 0 0 0 3.065 3.065.947.947 0 1 1-1.055 1.576 13.077 13.077 0 0 1-3.586-3.586.95.95 0 0 1 .26-1.316zm21.099 0a.95.95 0 0 1 .261 1.316 13.067 13.067 0 0 1-3.587 3.586.948.948 0 0 1-1.054-1.576 11.177 11.177 0 0 0 3.065-3.065.948.948 0 0 1 1.315-.261zm-13.831 5.731a.948.948 0 0 1 1.114-.747 11.131 11.131 0 0 0 4.336 0 .949.949 0 0 1 .368 1.861 13.09 13.09 0 0 1-5.072 0 .948.948 0 0 1-.746-1.114z" fill="#34A853"/></svg> +<svg width="300" height="200" viewBox="0 0 300 200" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M55.144 79.3a11.4 11.4 0 0 1 2.2-16.1c12.4-8.7 25.5 8.5 14 18.2a11.5 11.5 0 0 1-16.2-2.1z" fill="#EA4335"/><path fill-rule="evenodd" clip-rule="evenodd" d="m212.944 79.4-4.1-4.2a1.896 1.896 0 0 1-.5-1.9l1.5-5.7a1.992 1.992 0 0 1 1.4-1.3l5.7-1.5a1.902 1.902 0 0 1 1.9.5l4.1 4.2a1.7 1.7 0 0 1 .5 1.8l-1.5 5.7a1.998 1.998 0 0 1-1.4 1.4l-5.7 1.5a1.902 1.902 0 0 1-1.9-.5" fill="#EE5FFA"/><path fill-rule="evenodd" clip-rule="evenodd" d="m68.844 71-7.6-2.4a.499.499 0 0 0-.7.5l1.8 7.9a.5.5 0 0 0 .8.3l5.9-5.5a.5.5 0 0 0-.2-.8" fill="#fff"/><path fill-rule="evenodd" clip-rule="evenodd" d="m165.244 31.6-4.5-9.3a2.601 2.601 0 0 0-4.5-.3l-8.2 11.6a2.503 2.503 0 0 0 .621 3.588c.381.252.823.394 1.279.412l10.2.8.2-1.6a5.902 5.902 0 0 1 4.9-5.2z" fill="#FBBC04"/><path d="M134.344 43.8a15.91 15.91 0 0 0-5.3-11.2 10.212 10.212 0 0 1-1.8 1.8c10.7 9.4 1.3 26.8-12.5 22.7a15.5 15.5 0 0 1-2.8-1.2h-.2l-3.3-1.5a13.5 13.5 0 0 0-9.7-.5l-1.2.5-2.3.9-.6.2h-.4l-.5.2a9.199 9.199 0 0 1-11.9-7.7v-.3a9.1 9.1 0 0 1 4.1-8c2-1.2 3.9-1.4 7.5-.9l3.3.4a14.4 14.4 0 0 0 9.8-2.4l2.8-2.2a14.498 14.498 0 0 1-1.8-1.7l-2.6 1.8a11.1 11.1 0 0 1-8.1 2h-.5l-2.6-.3c-4.2-.6-6.6-.4-9.2 1.3a11.7 11.7 0 0 0-5.2 10.5.6.6 0 0 0 .1.4 11.598 11.598 0 0 0 14.2 9.8h.6l1.6-.5 2.8-1.1 1-.4a11.3 11.3 0 0 1 7.9.4l3.2 1.4h-.1a15.587 15.587 0 0 0 3.4 1.5c10.1 3.3 21-5.3 20.3-15.9z" fill="#D2E3FC"/><path fill-rule="evenodd" clip-rule="evenodd" d="M147.444 80.7c11.1.2 13.5 15.3 3.3 19.1l1.6 8-2.9 13.9-13.1-12.7c3.2-1.7 2.5-8.1 2.4-13.6h.1c-3.8-6.3 1.1-14.8 8.6-14.7z" fill="#D2E3FC" stroke="#4285F4" stroke-width="2" stroke-linejoin="round"/><path fill-rule="evenodd" clip-rule="evenodd" d="m199.844 35.5-32.9-3.9h-1.7l1.6 3.4a2.607 2.607 0 0 1-.223 2.607 2.602 2.602 0 0 1-2.377 1.093l-4.1-.3-1.7 14.7a6 6 0 0 0 5.2 6.7l17 2 9.1 11.6a1.502 1.502 0 0 0 2.6-.7l1.1-9.4 3.1.4a5.896 5.896 0 0 0 5.893-2.988 5.9 5.9 0 0 0 .707-2.212l1.9-16.4a5.917 5.917 0 0 0-.169-2.316 5.91 5.91 0 0 0-2.819-3.577 5.895 5.895 0 0 0-2.212-.707z" fill="#D2E3FC"/><path d="m29.744 179.3-3.4-68.9a4.198 4.198 0 0 1 4-4.4l48.6-2.3a4.1 4.1 0 0 1 4.4 3.9l3.6 71.7" fill="#D2E3FC"/><path d="m26.844 178.2-3.6-74.4a6.302 6.302 0 0 1 6-6.6l49.7-2.4a6.302 6.302 0 0 1 6.6 6l3.8 77.5" stroke="#4285F4" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M47.344 101.1a.903.903 0 1 0 1.802-.1.903.903 0 0 0-1.802.1z" fill="#4285F4"/><path d="m87.344 112.4.2 4m.1 5.6.5 9.8" stroke="#4285F4" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/><path d="m51.844 100.8 9.3-.4" stroke="#4285F4" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M117.044 31.1a13.299 13.299 0 0 0-7.7 3.5c4.8 4.2 13.2 4.2 17.9-.2a13.202 13.202 0 0 0-10.2-3.3z" fill="#4285F4"/><path d="M110.744 30.5a16.196 16.196 0 0 1 6-1.9 16.402 16.402 0 0 1 12.3 4 13.701 13.701 0 0 0 3.1-8.8 1.805 1.805 0 0 0-1.25-1.725 1.797 1.797 0 0 0-.75-.075l-24 3.4c-3.6.8.1 5.9 1.4 7.5l.2-.2a17.512 17.512 0 0 1 3-2.2z" fill="#4285F4"/><path fill-rule="evenodd" clip-rule="evenodd" d="m223.044 123.2 71.3.7a2.102 2.102 0 0 1 2 2.7l-14.1 51.2a2.097 2.097 0 0 1-2.1 1.6l-71.3-.6a2.298 2.298 0 0 1-2.2-2.3c0-1 14.2-50.8 14.3-51.7a2.097 2.097 0 0 1 2.1-1.6z" fill="#4285F4"/><path d="M147.444 79.7a10.898 10.898 0 0 0-10.9 10.8c.6 14.4 21.1 14.4 21.7.1a10.8 10.8 0 0 0-10.8-10.9zm0 2a8.9 8.9 0 0 1 8.9 8.9c-.5 11.7-17.4 11.7-17.8-.1a8.81 8.81 0 0 1 2.613-6.258 8.785 8.785 0 0 1 6.287-2.542z" fill="#4285F4"/><path fill-rule="evenodd" clip-rule="evenodd" d="M144.144 80.3a18.301 18.301 0 0 1 5.9.4c.476.022.932.197 1.3.5a8.399 8.399 0 0 1 3.8 2.9c2.2 3.1 3.2 4.8 3 5.3l-8.3-5.4-11.3 10.3c-2.6-7.7.6-11.6 7.2-13l-1.6-1z" fill="#4285F4"/><path fill-rule="evenodd" clip-rule="evenodd" d="M138.544 83c-3.2-5-11-3-11.6 2.8a6.304 6.304 0 0 0-3.92-3.893 6.298 6.298 0 0 0-5.48.693 2.505 2.505 0 0 1-2.042.135 2.499 2.499 0 0 1-1.458-1.435 6.401 6.401 0 0 0-7.7-2.1l-1.7 1.1a2.207 2.207 0 0 1-1.789.463 2.2 2.2 0 0 1-1.511-1.063l-2.4-4a4.8 4.8 0 0 0-8.2-.1 5 5 0 0 0 3.9 7.4l5.9.3a2.298 2.298 0 0 1 2.1 2.1 5.7 5.7 0 0 0 1 3.1 6.194 6.194 0 0 0 6.414 2.828 6.2 6.2 0 0 0 2.286-.928h.1a2.197 2.197 0 0 1 2.744.19 2.2 2.2 0 0 1 .556.81 6.298 6.298 0 0 0 10.095.75 6.3 6.3 0 0 0 1.505-3.55 6.298 6.298 0 0 0 6.721 4.267 6.3 6.3 0 0 0 2.679-.967 6.5 6.5 0 0 0 1.8-8.9" fill="#4285F4"/><path fill-rule="evenodd" clip-rule="evenodd" d="M193.544 139.5a22.394 22.394 0 0 0-10.6-3.6c-8.7-.5-22.8 7.8-32.7 14.4l.2 1.9 13 16.5 14.3-15.3a8.783 8.783 0 0 0 3 1h.3v.7c-.6.6-.4 1.6-.1 2.7v1l.8.6c1.2 2.2 2.6 4.7 5.3 5a2.397 2.397 0 0 0 2.3-.8l1.1-.4a3.801 3.801 0 0 0 2.6-1l1.2-.4c1.8.8 3.9-.6 4.6-2.3 1.6-4.7-2-10.8-5.1-14.1l10.5 11c2.5 2.8 4.6.6 3-2.5a38.2 38.2 0 0 0-13.7-14.4z" fill="#D2E3FC"/><path d="M194.444 144.8c-.9-.9-2.4.4-1.5 1.4 3 3.1 6.4 8.7 5 13a2.899 2.899 0 0 1-3.2 1.9h-.2a.999.999 0 0 0-.7 1.8c2.3 1 5-.5 5.9-2.9.9-2.4.6-4.6-.4-7l4.2 4.3c3.1 3.6 6.8.5 4.5-3.6-4.8-9.2-14.5-17.9-25-18.7-4.7-.4-12.1 2.3-19.1 6l-5.7 3.2c-2.4 1.4-4.9 3-7.2 4.6l-1.3.8c-1.1.7 0 2.3 1.1 1.6l2.4-1.6 6.5-4 3.8-2.2c8-4.3 14.6-6.7 19.4-6.4a20.6 20.6 0 0 1 10.1 3.4 36.304 36.304 0 0 1 13.3 14.2c.6 1.1.6 2.1.2 2.3-.4.2-.9-.2-1.6-1l-10.5-11.1z" fill="#4285F4"/><path d="M177.844 152.3a1 1 0 0 0-1.3 0h-.1l-14.2 16.2a.999.999 0 0 0 1.4 1.4h.1l14.2-16.2a1.1 1.1 0 0 0-.1-1.4zm13.2-5.1c-.8-.9-2.3.4-1.4 1.4a13.507 13.507 0 0 1 3.5 11.2c-.3 1.7-.8 2.3-2.4 2.5h-.1c-.3-.1-.5-.2-.7-.1h-.1a.91.91 0 0 0-.689.467.9.9 0 0 0-.011.833 1.102 1.102 0 0 0 1.2.8 4.302 4.302 0 0 0 4.7-4.2 15.703 15.703 0 0 0-4-12.9z" fill="#4285F4"/><path d="M187.244 149.5a.996.996 0 0 0-1.201.036 1.004 1.004 0 0 0-.299 1.164c2.6 3.2 4.3 7.2 3.5 11.1-.4 1.3-1 1.8-2.1 1.7-1.1-.1-3.2-1.8-4.3-3.9l-.2-.4c-.4-.8-1.5-3-.8-3.4.7-.4 3.1 2 3.8 3.9.096.231.275.418.501.524a.996.996 0 0 0 1.399-1.124c-1.1-2.8-3.7-5.9-6.5-5.1-2.8.8-.8 5.1.4 7 1.2 1.9 3.3 4.3 5.6 4.5 4.2.4 4.8-4.8 4.1-8.1a17.306 17.306 0 0 0-3.9-7.9z" fill="#4285F4"/><path d="M177.644 152.2c-1.1-.6-2.1 1.1-1 1.7.84.523 1.749.927 2.7 1.2l2 .5h.5l.5.2a1.003 1.003 0 0 0 1.171-.675 1.006 1.006 0 0 0-.047-.724 1.005 1.005 0 0 0-.524-.501h-.5l-.5-.2-1.9-.5a6.2 6.2 0 0 1-2.4-1zm-3.2 2.9h.1a.898.898 0 0 1 .9.9l-1.2 14.7a.904.904 0 0 1-.8.9h-10a1.004 1.004 0 0 1-.741-.914 1 1 0 0 1 .641-.986h9.1l1-13.8c.1-.5.4-.9.8-.9l.2.1z" fill="#4285F4"/><path d="M135.844 108.1a1.02 1.02 0 0 1 .768-.055 1.009 1.009 0 0 1 .442 1.614 1.01 1.01 0 0 1-.31.241c-10.6 4.8-17.8 10.4-21.8 16.8-21.8 33.9 14.5 78.1 49.4 47.2l-15.9-22.6-8.5 4a1.003 1.003 0 0 1-.752.014 1.004 1.004 0 0 1-.548-.514h-.1l-4.3-13.1a.999.999 0 0 1 1.8-.7h.1l4 12 8.2-3.8a1.1 1.1 0 0 1 1.2.2h.1l16.8 24.1a1.1 1.1 0 0 1-.1 1.3c-16.5 13.8-32 15.3-46.1 4.2-14.1-11.1-18.7-36.2-7-53.4 4.2-6.7 11.8-12.5 22.6-17.5zm16.7-2.5c6.7-.8 15.6 1.3 23.1 5.7l.6.3 2.1 1.5a99.796 99.796 0 0 1 13 13c5.4 6.3 10.4 13.1 15.3 19.9h13.7v2h-14.7c-5-6.9-10.2-13.9-15.7-20.4a93.233 93.233 0 0 0-13-12.9l-.6-.5-.5-.4c-7.2-4.7-16.4-7-23.1-6.2l-.2-2zm-8-12.7a.9.9 0 0 1 1.1.7h.1c.1.9.9 1.5 1.6.9h.1a1.027 1.027 0 0 1 1.775.665 1.02 1.02 0 0 1-.275.735 3.004 3.004 0 0 1-3.3.7c-1.2-.4-3-3.2-1.1-3.7zm29.4 36.6a1 1 0 0 1 1 .8l.2 6.7a1 1 0 1 1-2 .1l-.2-6.6a1.096 1.096 0 0 1 1-1z" fill="#4285F4"/><path d="M149.144 120.7a.998.998 0 0 1 1.2.7l.7 2.4c.2.7.9 3 1 3.6.1.6 1.2 4.2 1.6 6.1.4 1.9 1 5 1.4 7.4l.4 2.2.3 2.5a.895.895 0 0 1-.149.733.893.893 0 0 1-.651.367 1 1 0 0 1-1.1-.8l-.3-1.9c-.4-2.7-.9-5.7-1.5-8.3a84.608 84.608 0 0 0-2.1-8.7l-1.1-3.9-.4-1.2a1.1 1.1 0 0 1 .7-1.2z" fill="#4285F4"/><path fill-rule="evenodd" clip-rule="evenodd" d="m280.944 178.6-92.6-.2a1.304 1.304 0 0 1-.943-1.25 1.301 1.301 0 0 1 .943-1.25l92.6.2a1.304 1.304 0 0 1 .943 1.25 1.303 1.303 0 0 1-.943 1.25zm7 2.1-129.6-.3c0-.8-.2-2 .9-2l128.7.3a1 1 0 1 1 0 2zM11.361 180l111.085.3c0-.8.171-1.9-.857-2L11.361 178a.799.799 0 0 0-.606.293 1.09 1.09 0 0 0-.25.707c0 .265.09.52.25.707.16.188.379.293.606.293z" fill="#4285F4"/><path fill-rule="evenodd" clip-rule="evenodd" d="M156.344 180.7h-34.1c11.2 7.8 23.3 7.8 36.1.1l-2-.1z" fill="#D2E3FC"/><path fill-rule="evenodd" clip-rule="evenodd" d="M233.043 83.358a13.06 13.06 0 0 1 5.072 0 .947.947 0 1 1-.368 1.86 11.162 11.162 0 0 0-4.336 0 .948.948 0 1 1-.368-1.86zm-3.373 2.204a.947.947 0 0 1-.26 1.315 11.174 11.174 0 0 0-3.065 3.065.95.95 0 0 1-1.576-1.055 13.07 13.07 0 0 1 3.586-3.586.948.948 0 0 1 1.315.26zm11.817 0a.948.948 0 0 1 1.315-.26 13.06 13.06 0 0 1 3.587 3.585.949.949 0 0 1-1.576 1.055 11.173 11.173 0 0 0-3.065-3.065.949.949 0 0 1-.261-1.315zm-17.547 7.267c.514.102.848.6.746 1.114a11.207 11.207 0 0 0 0 4.336.948.948 0 1 1-1.86.368 13.09 13.09 0 0 1 0-5.072.949.949 0 0 1 1.114-.746zm23.277 0a.948.948 0 0 1 1.114.746c.163.82.248 1.669.248 2.536s-.085 1.715-.248 2.536a.948.948 0 1 1-1.86-.368 11.13 11.13 0 0 0 0-4.336.95.95 0 0 1 .746-1.114zm-22.188 9.19a.95.95 0 0 1 1.316.261 11.177 11.177 0 0 0 3.065 3.065.947.947 0 1 1-1.055 1.576 13.077 13.077 0 0 1-3.586-3.586.95.95 0 0 1 .26-1.316zm21.099 0a.95.95 0 0 1 .261 1.316 13.067 13.067 0 0 1-3.587 3.586.948.948 0 0 1-1.054-1.576 11.177 11.177 0 0 0 3.065-3.065.948.948 0 0 1 1.315-.261zm-13.831 5.731a.948.948 0 0 1 1.114-.747 11.131 11.131 0 0 0 4.336 0 .949.949 0 0 1 .368 1.861 13.09 13.09 0 0 1-5.072 0 .948.948 0 0 1-.746-1.114z" fill="#34A853"/></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/chromeos/images/notification_access_setup_dark.svg b/chrome/browser/resources/settings/chromeos/images/notification_access_setup_dark.svg index 0878a77a5..3ed5ba2 100644 --- a/chrome/browser/resources/settings/chromeos/images/notification_access_setup_dark.svg +++ b/chrome/browser/resources/settings/chromeos/images/notification_access_setup_dark.svg
@@ -1 +1 @@ -<svg width="300" height="200" viewBox="0 0 300 200" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M55.144 79.3a11.398 11.398 0 0 1 2.2-16.1c12.4-8.7 25.5 8.5 14 18.2a11.5 11.5 0 0 1-16.2-2.1z" fill="#EA4335"/><path fill-rule="evenodd" clip-rule="evenodd" d="M212.944 79.4l-4.1-4.2a1.896 1.896 0 0 1-.5-1.9l1.5-5.7a1.992 1.992 0 0 1 1.4-1.3l5.7-1.5a1.902 1.902 0 0 1 1.9.5l4.1 4.2a1.7 1.7 0 0 1 .5 1.8l-1.5 5.7a1.998 1.998 0 0 1-1.4 1.4l-5.7 1.5a1.902 1.902 0 0 1-1.9-.5z" fill="#F882FE"/><path fill-rule="evenodd" clip-rule="evenodd" d="M68.844 71l-7.6-2.4a.5.5 0 0 0-.7.5l1.8 7.9a.5.5 0 0 0 .8.3l5.9-5.5a.5.5 0 0 0-.2-.8z" fill="#323336"/><path fill-rule="evenodd" clip-rule="evenodd" d="M165.244 31.6l-4.5-9.3a2.601 2.601 0 0 0-4.5-.3l-8.2 11.6a2.502 2.502 0 0 0 .621 3.588c.381.252.823.394 1.279.412l10.2.8.2-1.6a5.902 5.902 0 0 1 4.9-5.2z" fill="#FCC934"/><path d="M134.344 43.8a15.91 15.91 0 0 0-5.3-11.2 10.212 10.212 0 0 1-1.8 1.8c10.7 9.4 1.3 26.8-12.5 22.7a15.5 15.5 0 0 1-2.8-1.2h-.2l-3.3-1.5a13.5 13.5 0 0 0-9.7-.5l-1.2.5-2.3.9-.6.2h-.4l-.5.2a9.199 9.199 0 0 1-11.9-7.7v-.3a9.1 9.1 0 0 1 4.1-8c2-1.2 3.9-1.4 7.5-.9l3.3.4a14.4 14.4 0 0 0 9.8-2.4l2.8-2.2a14.498 14.498 0 0 1-1.8-1.7l-2.6 1.8a11.1 11.1 0 0 1-8.1 2h-.5l-2.6-.3c-4.2-.6-6.6-.4-9.2 1.3a11.7 11.7 0 0 0-5.2 10.5.6.6 0 0 0 .1.4 11.598 11.598 0 0 0 14.2 9.8h.6l1.6-.5 2.8-1.1 1-.4a11.3 11.3 0 0 1 7.9.4l3.2 1.4h-.1a15.587 15.587 0 0 0 3.4 1.5c10.1 3.3 21-5.3 20.3-15.9z" fill="#8AB4F8" fill-opacity=".4"/><path fill-rule="evenodd" clip-rule="evenodd" d="M147.444 80.7c11.1.2 13.5 15.3 3.3 19.1l1.6 8-2.9 13.9-13.1-12.7c3.2-1.7 2.5-8.1 2.4-13.6h.1c-3.8-6.3 1.1-14.8 8.6-14.7z" fill="#8AB4F8" fill-opacity=".4" stroke="#669DF6" stroke-width="2" stroke-linejoin="round"/><path fill-rule="evenodd" clip-rule="evenodd" d="M199.844 35.5l-32.9-3.9h-1.7l1.6 3.4a2.607 2.607 0 0 1-.223 2.607 2.602 2.602 0 0 1-2.377 1.093l-4.1-.3-1.7 14.7a6 6 0 0 0 5.2 6.7l17 2 9.1 11.6a1.502 1.502 0 0 0 2.6-.7l1.1-9.4 3.1.4a5.896 5.896 0 0 0 5.893-2.988c.38-.683.62-1.435.707-2.212l1.9-16.4a5.917 5.917 0 0 0-.169-2.316 5.91 5.91 0 0 0-2.819-3.577 5.895 5.895 0 0 0-2.212-.707z" fill="#8AB4F8" fill-opacity=".4"/><path d="M29.744 179.3l-3.4-68.9a4.198 4.198 0 0 1 4-4.4l48.6-2.3a4.1 4.1 0 0 1 4.4 3.9l3.6 71.7" fill="#8AB4F8" fill-opacity=".4"/><path d="M26.844 178.2l-3.6-74.4a6.305 6.305 0 0 1 1.63-4.544 6.3 6.3 0 0 1 4.37-2.056l49.7-2.4a6.298 6.298 0 0 1 6.6 6l3.8 77.5" stroke="#669DF6" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M47.344 101.1a.903.903 0 1 0 1.802-.1.903.903 0 0 0-1.802.1z" fill="#669DF6"/><path d="M87.344 112.4l.2 4M87.644 122l.5 9.8" stroke="#669DF6" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/><path d="M51.844 100.8l9.3-.4" stroke="#669DF6" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M117.044 31.1a13.3 13.3 0 0 0-7.7 3.5c4.8 4.2 13.2 4.2 17.9-.2a13.202 13.202 0 0 0-10.2-3.3z" fill="#669DF6"/><path d="M110.744 30.5a16.198 16.198 0 0 1 6-1.9 16.402 16.402 0 0 1 12.3 4 13.701 13.701 0 0 0 3.1-8.8 1.805 1.805 0 0 0-1.25-1.725 1.797 1.797 0 0 0-.75-.075l-24 3.4c-3.6.8.1 5.9 1.4 7.5l.2-.2a17.513 17.513 0 0 1 3-2.2z" fill="#669DF6"/><path fill-rule="evenodd" clip-rule="evenodd" d="M223.044 123.2l71.3.7a2.102 2.102 0 0 1 2 2.7l-14.1 51.2a2.097 2.097 0 0 1-2.1 1.6l-71.3-.6a2.298 2.298 0 0 1-2.2-2.3c0-1 14.2-50.8 14.3-51.7a2.097 2.097 0 0 1 2.1-1.6z" fill="#669DF6"/><path d="M147.444 79.7a10.898 10.898 0 0 0-10.9 10.8c.6 14.4 21.1 14.4 21.7.1a10.8 10.8 0 0 0-10.8-10.9zm0 2a8.9 8.9 0 0 1 8.9 8.9c-.5 11.7-17.4 11.7-17.8-.1a8.81 8.81 0 0 1 2.613-6.258 8.797 8.797 0 0 1 6.287-2.542z" fill="#669DF6"/><path fill-rule="evenodd" clip-rule="evenodd" d="M144.144 80.3a18.301 18.301 0 0 1 5.9.4 2.2 2.2 0 0 1 1.3.5 8.398 8.398 0 0 1 3.8 2.9c2.2 3.1 3.2 4.8 3 5.3l-8.3-5.4-11.3 10.3c-2.6-7.7.6-11.6 7.2-13l-1.6-1z" fill="#669DF6"/><path fill-rule="evenodd" clip-rule="evenodd" d="M138.544 83c-3.2-5-11-3-11.6 2.8a6.305 6.305 0 0 0-3.92-3.893 6.298 6.298 0 0 0-5.48.693 2.505 2.505 0 0 1-2.042.135 2.5 2.5 0 0 1-1.458-1.435 6.401 6.401 0 0 0-7.7-2.1l-1.7 1.1a2.207 2.207 0 0 1-1.789.464 2.202 2.202 0 0 1-1.511-1.064l-2.4-4a4.8 4.8 0 0 0-8.2-.1 5 5 0 0 0 3.9 7.4l5.9.3a2.298 2.298 0 0 1 2.1 2.1 5.701 5.701 0 0 0 1 3.1 6.194 6.194 0 0 0 6.414 2.828 6.196 6.196 0 0 0 2.286-.928h.1a2.195 2.195 0 0 1 1.892-.298 2.201 2.201 0 0 1 1.408 1.298 6.298 6.298 0 0 0 10.095.75 6.3 6.3 0 0 0 1.505-3.55 6.298 6.298 0 0 0 9.4 3.3 6.5 6.5 0 0 0 1.8-8.9z" fill="#669DF6"/><path fill-rule="evenodd" clip-rule="evenodd" d="M193.544 139.5a22.394 22.394 0 0 0-10.6-3.6c-8.7-.5-22.8 7.8-32.7 14.4l.2 1.9 13 16.5 14.3-15.3a8.783 8.783 0 0 0 3 1h.3v.7c-.6.6-.4 1.6-.1 2.7v1l.8.6c1.2 2.2 2.6 4.7 5.3 5a2.397 2.397 0 0 0 2.3-.8l1.1-.4a3.801 3.801 0 0 0 2.6-1l1.2-.4c1.8.8 3.9-.6 4.6-2.3 1.6-4.7-2-10.8-5.1-14.1l10.5 11c2.5 2.8 4.6.6 3-2.5a38.2 38.2 0 0 0-13.7-14.4z" fill="#8AB4F8" fill-opacity=".4"/><path d="M194.444 144.8c-.9-.9-2.4.4-1.5 1.4 3 3.1 6.4 8.7 5 13a2.899 2.899 0 0 1-3.2 1.9h-.2a.999.999 0 0 0-.7 1.8c2.3 1 5-.5 5.9-2.9.9-2.4.6-4.6-.4-7l4.2 4.3c3.1 3.6 6.8.5 4.5-3.6-4.8-9.2-14.5-17.9-25-18.7-4.7-.4-12.1 2.3-19.1 6l-5.7 3.2c-2.4 1.4-4.9 3-7.2 4.6l-1.3.8c-1.1.7 0 2.3 1.1 1.6l2.4-1.6 6.5-4 3.8-2.2c8-4.3 14.6-6.7 19.4-6.4a20.6 20.6 0 0 1 10.1 3.4 36.304 36.304 0 0 1 13.3 14.2c.6 1.1.6 2.1.2 2.3-.4.2-.9-.2-1.6-1l-10.5-11.1z" fill="#669DF6"/><path d="M177.844 152.3a1 1 0 0 0-1.3 0h-.1l-14.2 16.2a.999.999 0 0 0 1.4 1.4h.1l14.2-16.2a1.1 1.1 0 0 0-.1-1.4zM191.044 147.2c-.8-.9-2.3.4-1.4 1.4a13.507 13.507 0 0 1 3.5 11.2c-.3 1.7-.8 2.3-2.4 2.5h-.1c-.3-.1-.5-.2-.7-.1h-.1a.91.91 0 0 0-.689.467.9.9 0 0 0-.011.833 1.099 1.099 0 0 0 1.2.8 4.302 4.302 0 0 0 4.7-4.2 15.703 15.703 0 0 0-4-12.9z" fill="#669DF6"/><path d="M187.244 149.5a.996.996 0 0 0-1.201.037 1.001 1.001 0 0 0-.299 1.163c2.6 3.2 4.3 7.2 3.5 11.1-.4 1.3-1 1.8-2.1 1.7-1.1-.1-3.2-1.8-4.3-3.9l-.2-.4c-.4-.8-1.5-3-.8-3.4.7-.4 3.1 2 3.8 3.9a1.001 1.001 0 0 0 1.9-.6c-1.1-2.8-3.7-5.9-6.5-5.1-2.8.8-.8 5.1.4 7 1.2 1.9 3.3 4.3 5.6 4.5 4.2.4 4.8-4.8 4.1-8.1a17.306 17.306 0 0 0-3.9-7.9z" fill="#669DF6"/><path d="M177.644 152.2c-1.1-.6-2.1 1.1-1 1.7.84.523 1.749.927 2.7 1.2l2 .5h.5l.5.2a1.003 1.003 0 0 0 1.171-.675 1.006 1.006 0 0 0-.047-.724 1.005 1.005 0 0 0-.524-.501h-.5l-.5-.2-1.9-.5a6.2 6.2 0 0 1-2.4-1zM174.444 155.1h.1a.898.898 0 0 1 .9.9l-1.2 14.7a.904.904 0 0 1-.8.9h-10a1.004 1.004 0 0 1-.741-.914 1 1 0 0 1 .641-.986h9.1l1-13.8c.1-.5.4-.9.8-.9l.2.1z" fill="#669DF6"/><path d="M135.844 108.1a1.02 1.02 0 0 1 .768-.055 1.009 1.009 0 0 1 .442 1.614 1.01 1.01 0 0 1-.31.241c-10.6 4.8-17.8 10.4-21.8 16.8-21.8 33.9 14.5 78.1 49.4 47.2l-15.9-22.6-8.5 4a1.003 1.003 0 0 1-.752.014 1.004 1.004 0 0 1-.548-.514h-.1l-4.3-13.1a.999.999 0 0 1 1.8-.7h.1l4 12 8.2-3.8a1.1 1.1 0 0 1 1.2.2h.1l16.8 24.1a1.1 1.1 0 0 1-.1 1.3c-16.5 13.8-32 15.3-46.1 4.2-14.1-11.1-18.7-36.2-7-53.4 4.2-6.7 11.8-12.5 22.6-17.5zM152.544 105.6c6.7-.8 15.6 1.3 23.1 5.7l.6.3 2.1 1.5a99.796 99.796 0 0 1 13 13c5.4 6.3 10.4 13.1 15.3 19.9h13.7v2h-14.7c-5-6.9-10.2-13.9-15.7-20.4a93.233 93.233 0 0 0-13-12.9l-.6-.5-.5-.4c-7.2-4.7-16.4-7-23.1-6.2l-.2-2zM144.544 92.9a.9.9 0 0 1 1.1.7h.1c.1.9.9 1.5 1.6.9h.1a1.027 1.027 0 0 1 1.5 1.4 3.003 3.003 0 0 1-3.3.7c-1.2-.4-3-3.2-1.1-3.7zM173.944 129.5a1 1 0 0 1 1 .8l.2 6.7a1 1 0 1 1-2 .1l-.2-6.6a1.096 1.096 0 0 1 1-1z" fill="#669DF6"/><path d="M149.144 120.7a.998.998 0 0 1 1.2.7l.7 2.4c.2.7.9 3 1 3.6.1.6 1.2 4.2 1.6 6.1.4 1.9 1 5 1.4 7.4l.4 2.2.3 2.5a.895.895 0 0 1-.149.733.893.893 0 0 1-.651.367 1 1 0 0 1-1.1-.8l-.3-1.9c-.4-2.7-.9-5.7-1.5-8.3a84.608 84.608 0 0 0-2.1-8.7l-1.1-3.9-.4-1.2a1.1 1.1 0 0 1 .7-1.2z" fill="#669DF6"/><path fill-rule="evenodd" clip-rule="evenodd" d="M280.944 178.6l-92.6-.2a1.304 1.304 0 0 1-.943-1.25 1.303 1.303 0 0 1 .943-1.25l92.6.2a1.304 1.304 0 0 1 .943 1.25 1.301 1.301 0 0 1-.943 1.25zM287.944 180.7l-129.6-.3c0-.8-.2-2 .9-2l128.7.3a1 1 0 1 1 0 2zM11.361 180l111.085.3c0-.8.171-1.9-.857-2L11.361 178a.799.799 0 0 0-.606.293 1.09 1.09 0 0 0-.25.707c0 .265.09.52.25.707.16.188.379.293.606.293z" fill="#669DF6"/><path fill-rule="evenodd" clip-rule="evenodd" d="M156.344 180.7h-34.1c11.2 7.8 23.3 7.8 36.1.1l-2-.1z" fill="#8AB4F8" fill-opacity=".4"/><path fill-rule="evenodd" clip-rule="evenodd" d="M233.043 83.358a13.06 13.06 0 0 1 5.072 0 .947.947 0 1 1-.368 1.86 11.162 11.162 0 0 0-4.336 0 .948.948 0 1 1-.368-1.86zm-3.373 2.204a.947.947 0 0 1-.26 1.315 11.174 11.174 0 0 0-3.065 3.065.95.95 0 0 1-1.576-1.055 13.07 13.07 0 0 1 3.586-3.586.948.948 0 0 1 1.315.26zm11.817 0a.948.948 0 0 1 1.315-.26 13.06 13.06 0 0 1 3.587 3.585.949.949 0 0 1-1.576 1.055 11.175 11.175 0 0 0-3.065-3.065.949.949 0 0 1-.261-1.315zm-17.547 7.267c.514.102.848.6.746 1.114a11.207 11.207 0 0 0 0 4.336.948.948 0 1 1-1.86.368 13.09 13.09 0 0 1 0-5.072.949.949 0 0 1 1.114-.746zm23.277 0a.948.948 0 0 1 1.114.746c.163.82.248 1.669.248 2.536s-.085 1.715-.248 2.536a.948.948 0 1 1-1.86-.368 11.13 11.13 0 0 0 0-4.336.95.95 0 0 1 .746-1.114zm-22.188 9.19a.95.95 0 0 1 1.316.261 11.177 11.177 0 0 0 3.065 3.065.947.947 0 1 1-1.055 1.576 13.077 13.077 0 0 1-3.586-3.586.95.95 0 0 1 .26-1.316zm21.099 0a.95.95 0 0 1 .261 1.316 13.067 13.067 0 0 1-3.587 3.586.948.948 0 0 1-1.054-1.576 11.177 11.177 0 0 0 3.065-3.065.948.948 0 0 1 1.315-.261zm-13.831 5.731a.948.948 0 0 1 1.114-.747 11.131 11.131 0 0 0 4.336 0 .949.949 0 0 1 .368 1.861 13.09 13.09 0 0 1-5.072 0 .948.948 0 0 1-.746-1.114z" fill="#5BB974"/></svg> +<svg width="300" height="200" viewBox="0 0 300 200" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M55.144 79.3a11.398 11.398 0 0 1 2.2-16.1c12.4-8.7 25.5 8.5 14 18.2a11.5 11.5 0 0 1-16.2-2.1z" fill="#EA4335"/><path fill-rule="evenodd" clip-rule="evenodd" d="m212.944 79.4-4.1-4.2a1.896 1.896 0 0 1-.5-1.9l1.5-5.7a1.992 1.992 0 0 1 1.4-1.3l5.7-1.5a1.902 1.902 0 0 1 1.9.5l4.1 4.2a1.7 1.7 0 0 1 .5 1.8l-1.5 5.7a1.998 1.998 0 0 1-1.4 1.4l-5.7 1.5a1.902 1.902 0 0 1-1.9-.5z" fill="#F882FE"/><path fill-rule="evenodd" clip-rule="evenodd" d="m68.844 71-7.6-2.4a.5.5 0 0 0-.7.5l1.8 7.9a.5.5 0 0 0 .8.3l5.9-5.5a.5.5 0 0 0-.2-.8z" fill="#323336"/><path fill-rule="evenodd" clip-rule="evenodd" d="m165.244 31.6-4.5-9.3a2.601 2.601 0 0 0-4.5-.3l-8.2 11.6a2.502 2.502 0 0 0 .621 3.588c.381.252.823.394 1.279.412l10.2.8.2-1.6a5.902 5.902 0 0 1 4.9-5.2z" fill="#FCC934"/><path d="M134.344 43.8a15.91 15.91 0 0 0-5.3-11.2 10.212 10.212 0 0 1-1.8 1.8c10.7 9.4 1.3 26.8-12.5 22.7a15.5 15.5 0 0 1-2.8-1.2h-.2l-3.3-1.5a13.5 13.5 0 0 0-9.7-.5l-1.2.5-2.3.9-.6.2h-.4l-.5.2a9.199 9.199 0 0 1-11.9-7.7v-.3a9.1 9.1 0 0 1 4.1-8c2-1.2 3.9-1.4 7.5-.9l3.3.4a14.4 14.4 0 0 0 9.8-2.4l2.8-2.2a14.498 14.498 0 0 1-1.8-1.7l-2.6 1.8a11.1 11.1 0 0 1-8.1 2h-.5l-2.6-.3c-4.2-.6-6.6-.4-9.2 1.3a11.7 11.7 0 0 0-5.2 10.5.6.6 0 0 0 .1.4 11.598 11.598 0 0 0 14.2 9.8h.6l1.6-.5 2.8-1.1 1-.4a11.3 11.3 0 0 1 7.9.4l3.2 1.4h-.1a15.587 15.587 0 0 0 3.4 1.5c10.1 3.3 21-5.3 20.3-15.9z" fill="#8AB4F8" fill-opacity=".4"/><path fill-rule="evenodd" clip-rule="evenodd" d="M147.444 80.7c11.1.2 13.5 15.3 3.3 19.1l1.6 8-2.9 13.9-13.1-12.7c3.2-1.7 2.5-8.1 2.4-13.6h.1c-3.8-6.3 1.1-14.8 8.6-14.7z" fill="#8AB4F8" fill-opacity=".4" stroke="#669DF6" stroke-width="2" stroke-linejoin="round"/><path fill-rule="evenodd" clip-rule="evenodd" d="m199.844 35.5-32.9-3.9h-1.7l1.6 3.4a2.607 2.607 0 0 1-.223 2.607 2.602 2.602 0 0 1-2.377 1.093l-4.1-.3-1.7 14.7a6 6 0 0 0 5.2 6.7l17 2 9.1 11.6a1.502 1.502 0 0 0 2.6-.7l1.1-9.4 3.1.4a5.896 5.896 0 0 0 5.893-2.988 5.9 5.9 0 0 0 .707-2.212l1.9-16.4a5.917 5.917 0 0 0-.169-2.316 5.91 5.91 0 0 0-2.819-3.577 5.895 5.895 0 0 0-2.212-.707z" fill="#8AB4F8" fill-opacity=".4"/><path d="m29.744 179.3-3.4-68.9a4.198 4.198 0 0 1 4-4.4l48.6-2.3a4.1 4.1 0 0 1 4.4 3.9l3.6 71.7" fill="#8AB4F8" fill-opacity=".4"/><path d="m26.844 178.2-3.6-74.4a6.305 6.305 0 0 1 1.63-4.544 6.3 6.3 0 0 1 4.37-2.056l49.7-2.4a6.298 6.298 0 0 1 6.6 6l3.8 77.5" stroke="#669DF6" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M47.344 101.1a.903.903 0 1 0 1.802-.1.903.903 0 0 0-1.802.1z" fill="#669DF6"/><path d="m87.344 112.4.2 4m.1 5.6.5 9.8" stroke="#669DF6" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/><path d="m51.844 100.8 9.3-.4" stroke="#669DF6" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M117.044 31.1a13.3 13.3 0 0 0-7.7 3.5c4.8 4.2 13.2 4.2 17.9-.2a13.202 13.202 0 0 0-10.2-3.3z" fill="#669DF6"/><path d="M110.744 30.5a16.198 16.198 0 0 1 6-1.9 16.402 16.402 0 0 1 12.3 4 13.701 13.701 0 0 0 3.1-8.8 1.805 1.805 0 0 0-1.25-1.725 1.797 1.797 0 0 0-.75-.075l-24 3.4c-3.6.8.1 5.9 1.4 7.5l.2-.2a17.513 17.513 0 0 1 3-2.2z" fill="#669DF6"/><path fill-rule="evenodd" clip-rule="evenodd" d="m223.044 123.2 71.3.7a2.102 2.102 0 0 1 2 2.7l-14.1 51.2a2.097 2.097 0 0 1-2.1 1.6l-71.3-.6a2.298 2.298 0 0 1-2.2-2.3c0-1 14.2-50.8 14.3-51.7a2.097 2.097 0 0 1 2.1-1.6z" fill="#669DF6"/><path d="M147.444 79.7a10.898 10.898 0 0 0-10.9 10.8c.6 14.4 21.1 14.4 21.7.1a10.8 10.8 0 0 0-10.8-10.9zm0 2a8.9 8.9 0 0 1 8.9 8.9c-.5 11.7-17.4 11.7-17.8-.1a8.81 8.81 0 0 1 2.613-6.258 8.797 8.797 0 0 1 6.287-2.542z" fill="#669DF6"/><path fill-rule="evenodd" clip-rule="evenodd" d="M144.144 80.3a18.301 18.301 0 0 1 5.9.4 2.2 2.2 0 0 1 1.3.5 8.398 8.398 0 0 1 3.8 2.9c2.2 3.1 3.2 4.8 3 5.3l-8.3-5.4-11.3 10.3c-2.6-7.7.6-11.6 7.2-13l-1.6-1z" fill="#669DF6"/><path fill-rule="evenodd" clip-rule="evenodd" d="M138.544 83c-3.2-5-11-3-11.6 2.8a6.305 6.305 0 0 0-3.92-3.893 6.298 6.298 0 0 0-5.48.693 2.505 2.505 0 0 1-2.042.135 2.5 2.5 0 0 1-1.458-1.435 6.401 6.401 0 0 0-7.7-2.1l-1.7 1.1a2.207 2.207 0 0 1-1.789.464 2.202 2.202 0 0 1-1.511-1.064l-2.4-4a4.8 4.8 0 0 0-8.2-.1 5 5 0 0 0 3.9 7.4l5.9.3a2.298 2.298 0 0 1 2.1 2.1 5.701 5.701 0 0 0 1 3.1 6.194 6.194 0 0 0 6.414 2.828 6.196 6.196 0 0 0 2.286-.928h.1a2.195 2.195 0 0 1 1.892-.298 2.201 2.201 0 0 1 1.408 1.298 6.298 6.298 0 0 0 10.095.75 6.3 6.3 0 0 0 1.505-3.55 6.298 6.298 0 0 0 9.4 3.3 6.5 6.5 0 0 0 1.8-8.9z" fill="#669DF6"/><path fill-rule="evenodd" clip-rule="evenodd" d="M193.544 139.5a22.394 22.394 0 0 0-10.6-3.6c-8.7-.5-22.8 7.8-32.7 14.4l.2 1.9 13 16.5 14.3-15.3a8.783 8.783 0 0 0 3 1h.3v.7c-.6.6-.4 1.6-.1 2.7v1l.8.6c1.2 2.2 2.6 4.7 5.3 5a2.397 2.397 0 0 0 2.3-.8l1.1-.4a3.801 3.801 0 0 0 2.6-1l1.2-.4c1.8.8 3.9-.6 4.6-2.3 1.6-4.7-2-10.8-5.1-14.1l10.5 11c2.5 2.8 4.6.6 3-2.5a38.2 38.2 0 0 0-13.7-14.4z" fill="#8AB4F8" fill-opacity=".4"/><path d="M194.444 144.8c-.9-.9-2.4.4-1.5 1.4 3 3.1 6.4 8.7 5 13a2.899 2.899 0 0 1-3.2 1.9h-.2a.999.999 0 0 0-.7 1.8c2.3 1 5-.5 5.9-2.9.9-2.4.6-4.6-.4-7l4.2 4.3c3.1 3.6 6.8.5 4.5-3.6-4.8-9.2-14.5-17.9-25-18.7-4.7-.4-12.1 2.3-19.1 6l-5.7 3.2c-2.4 1.4-4.9 3-7.2 4.6l-1.3.8c-1.1.7 0 2.3 1.1 1.6l2.4-1.6 6.5-4 3.8-2.2c8-4.3 14.6-6.7 19.4-6.4a20.6 20.6 0 0 1 10.1 3.4 36.304 36.304 0 0 1 13.3 14.2c.6 1.1.6 2.1.2 2.3-.4.2-.9-.2-1.6-1l-10.5-11.1z" fill="#669DF6"/><path d="M177.844 152.3a1 1 0 0 0-1.3 0h-.1l-14.2 16.2a.999.999 0 0 0 1.4 1.4h.1l14.2-16.2a1.1 1.1 0 0 0-.1-1.4zm13.2-5.1c-.8-.9-2.3.4-1.4 1.4a13.507 13.507 0 0 1 3.5 11.2c-.3 1.7-.8 2.3-2.4 2.5h-.1c-.3-.1-.5-.2-.7-.1h-.1a.91.91 0 0 0-.689.467.9.9 0 0 0-.011.833 1.099 1.099 0 0 0 1.2.8 4.302 4.302 0 0 0 4.7-4.2 15.703 15.703 0 0 0-4-12.9z" fill="#669DF6"/><path d="M187.244 149.5a.996.996 0 0 0-1.201.037 1.001 1.001 0 0 0-.299 1.163c2.6 3.2 4.3 7.2 3.5 11.1-.4 1.3-1 1.8-2.1 1.7-1.1-.1-3.2-1.8-4.3-3.9l-.2-.4c-.4-.8-1.5-3-.8-3.4.7-.4 3.1 2 3.8 3.9a1.001 1.001 0 0 0 1.9-.6c-1.1-2.8-3.7-5.9-6.5-5.1-2.8.8-.8 5.1.4 7 1.2 1.9 3.3 4.3 5.6 4.5 4.2.4 4.8-4.8 4.1-8.1a17.306 17.306 0 0 0-3.9-7.9z" fill="#669DF6"/><path d="M177.644 152.2c-1.1-.6-2.1 1.1-1 1.7.84.523 1.749.927 2.7 1.2l2 .5h.5l.5.2a1.003 1.003 0 0 0 1.171-.675 1.006 1.006 0 0 0-.047-.724 1.005 1.005 0 0 0-.524-.501h-.5l-.5-.2-1.9-.5a6.2 6.2 0 0 1-2.4-1zm-3.2 2.9h.1a.898.898 0 0 1 .9.9l-1.2 14.7a.904.904 0 0 1-.8.9h-10a1.004 1.004 0 0 1-.741-.914 1 1 0 0 1 .641-.986h9.1l1-13.8c.1-.5.4-.9.8-.9l.2.1z" fill="#669DF6"/><path d="M135.844 108.1a1.02 1.02 0 0 1 .768-.055 1.009 1.009 0 0 1 .442 1.614 1.01 1.01 0 0 1-.31.241c-10.6 4.8-17.8 10.4-21.8 16.8-21.8 33.9 14.5 78.1 49.4 47.2l-15.9-22.6-8.5 4a1.003 1.003 0 0 1-.752.014 1.004 1.004 0 0 1-.548-.514h-.1l-4.3-13.1a.999.999 0 0 1 1.8-.7h.1l4 12 8.2-3.8a1.1 1.1 0 0 1 1.2.2h.1l16.8 24.1a1.1 1.1 0 0 1-.1 1.3c-16.5 13.8-32 15.3-46.1 4.2-14.1-11.1-18.7-36.2-7-53.4 4.2-6.7 11.8-12.5 22.6-17.5zm16.7-2.5c6.7-.8 15.6 1.3 23.1 5.7l.6.3 2.1 1.5a99.796 99.796 0 0 1 13 13c5.4 6.3 10.4 13.1 15.3 19.9h13.7v2h-14.7c-5-6.9-10.2-13.9-15.7-20.4a93.233 93.233 0 0 0-13-12.9l-.6-.5-.5-.4c-7.2-4.7-16.4-7-23.1-6.2l-.2-2zm-8-12.7a.9.9 0 0 1 1.1.7h.1c.1.9.9 1.5 1.6.9h.1a1.027 1.027 0 0 1 1.5 1.4 3.003 3.003 0 0 1-3.3.7c-1.2-.4-3-3.2-1.1-3.7zm29.4 36.6a1 1 0 0 1 1 .8l.2 6.7a1 1 0 1 1-2 .1l-.2-6.6a1.096 1.096 0 0 1 1-1z" fill="#669DF6"/><path d="M149.144 120.7a.998.998 0 0 1 1.2.7l.7 2.4c.2.7.9 3 1 3.6.1.6 1.2 4.2 1.6 6.1.4 1.9 1 5 1.4 7.4l.4 2.2.3 2.5a.895.895 0 0 1-.149.733.893.893 0 0 1-.651.367 1 1 0 0 1-1.1-.8l-.3-1.9c-.4-2.7-.9-5.7-1.5-8.3a84.608 84.608 0 0 0-2.1-8.7l-1.1-3.9-.4-1.2a1.1 1.1 0 0 1 .7-1.2z" fill="#669DF6"/><path fill-rule="evenodd" clip-rule="evenodd" d="m280.944 178.6-92.6-.2a1.304 1.304 0 0 1-.943-1.25 1.303 1.303 0 0 1 .943-1.25l92.6.2a1.304 1.304 0 0 1 .943 1.25 1.301 1.301 0 0 1-.943 1.25zm7 2.1-129.6-.3c0-.8-.2-2 .9-2l128.7.3a1 1 0 1 1 0 2zM11.361 180l111.085.3c0-.8.171-1.9-.857-2L11.361 178a.799.799 0 0 0-.606.293 1.09 1.09 0 0 0-.25.707c0 .265.09.52.25.707.16.188.379.293.606.293z" fill="#669DF6"/><path fill-rule="evenodd" clip-rule="evenodd" d="M156.344 180.7h-34.1c11.2 7.8 23.3 7.8 36.1.1l-2-.1z" fill="#8AB4F8" fill-opacity=".4"/><path fill-rule="evenodd" clip-rule="evenodd" d="M233.043 83.358a13.06 13.06 0 0 1 5.072 0 .947.947 0 1 1-.368 1.86 11.162 11.162 0 0 0-4.336 0 .948.948 0 1 1-.368-1.86zm-3.373 2.204a.947.947 0 0 1-.26 1.315 11.174 11.174 0 0 0-3.065 3.065.95.95 0 0 1-1.576-1.055 13.07 13.07 0 0 1 3.586-3.586.948.948 0 0 1 1.315.26zm11.817 0a.948.948 0 0 1 1.315-.26 13.06 13.06 0 0 1 3.587 3.585.949.949 0 0 1-1.576 1.055 11.175 11.175 0 0 0-3.065-3.065.949.949 0 0 1-.261-1.315zm-17.547 7.267c.514.102.848.6.746 1.114a11.207 11.207 0 0 0 0 4.336.948.948 0 1 1-1.86.368 13.09 13.09 0 0 1 0-5.072.949.949 0 0 1 1.114-.746zm23.277 0a.948.948 0 0 1 1.114.746c.163.82.248 1.669.248 2.536s-.085 1.715-.248 2.536a.948.948 0 1 1-1.86-.368 11.13 11.13 0 0 0 0-4.336.95.95 0 0 1 .746-1.114zm-22.188 9.19a.95.95 0 0 1 1.316.261 11.177 11.177 0 0 0 3.065 3.065.947.947 0 1 1-1.055 1.576 13.077 13.077 0 0 1-3.586-3.586.95.95 0 0 1 .26-1.316zm21.099 0a.95.95 0 0 1 .261 1.316 13.067 13.067 0 0 1-3.587 3.586.948.948 0 0 1-1.054-1.576 11.177 11.177 0 0 0 3.065-3.065.948.948 0 0 1 1.315-.261zm-13.831 5.731a.948.948 0 0 1 1.114-.747 11.131 11.131 0 0 0 4.336 0 .949.949 0 0 1 .368 1.861 13.09 13.09 0 0 1-5.072 0 .948.948 0 0 1-.746-1.114z" fill="#5BB974"/></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/chromeos/images/smart_privacy.svg b/chrome/browser/resources/settings/chromeos/images/smart_privacy.svg index 6a0e968..b2d7693 100644 --- a/chrome/browser/resources/settings/chromeos/images/smart_privacy.svg +++ b/chrome/browser/resources/settings/chromeos/images/smart_privacy.svg
@@ -1 +1 @@ -<svg width="217" height="216" viewBox="0 0 217 216" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M161.781 134.85c0-.526.426-.952.952-.952h13.4c.526 0 .953.426.953.952v9.2c0 2.826-2.327 5.152-5.153 5.152h-5c-2.826 0-5.152-2.326-5.152-5.152v-9.2zm1.905.952v8.248c0 1.774 1.473 3.248 3.247 3.248h5c1.774 0 3.248-1.474 3.248-3.248v-8.248h-11.495z" fill="#4285F4"/><path d="M152.648 103.908a1.001 1.001 0 0 0-1.029-1.715 5.083 5.083 0 0 1-1.976.651c-.413.041-.7.02-.953-.037-.262-.06-.533-.167-.918-.355a.999.999 0 1 0-.878 1.797c.434.212.868.398 1.355.509a4.866 4.866 0 0 0 1.593.076 7.084 7.084 0 0 0 2.806-.926z" fill="#4285F4"/><path fill-rule="evenodd" clip-rule="evenodd" d="M168.543 91.92c-1.182-.15-2.38-.3-3.478-.138-1.157.124-2.314.59-3.443 1.044-.322.13-.642.258-.958.377a11.386 11.386 0 0 1 1.169 5.047 11.32 11.32 0 0 1-2.067 6.554.993.993 0 0 1 .333.345c.382.66.786 1.335 1.197 2.023 5.995.335 12.677.82 18.493 3.043 3.077 1.168 6.609 3.275 11.2 8.581l.005.005.129.151c5.786 6.775 11.429 13.383 15.148 20.101 3.761 6.796 5.617 13.817 3.629 21.351-3.333 12.708-16.261 21.985-31.673 25.027a1 1 0 0 1-1.108-.575c-6.028 1.233-12.105.385-18.172-.462-3.245-.453-6.487-.906-9.717-1.039a1.501 1.501 0 0 1-1.497 1.395h-82.5c-.338 0-.65-.112-.9-.3h-5.24l-4.605-50.444c-.105-.628.418-1.256 1.15-1.256h50.32c5.338-8.673 13.143-16.018 21.825-20.393l.053-.025c-1.405-2.876-2.439-5.881-2.89-8.725l-.003-.016-.001-.01-.003-.021-.006-.06c-.096-.861-.212-1.903.024-2.967.007-.033.017-.067.027-.099.276-.826.814-1.476 1.424-1.965a.997.997 0 0 1 .477-.208c.066-.663.184-1.374.42-2.026.318-.877.891-1.757 1.934-2.204l.023-.01c.42-.168.904-.247 1.391-.194.095-.215.2-.424.317-.621.376-.634.941-1.263 1.776-1.514l.013-.004a3.286 3.286 0 0 1 1.687-.006c.522.135 1.113.428 1.495.978.896-.612 1.862-.69 2.84-.147.47.261.892.644 1.184 1.082l.009.014c.724 1.125.385 2.175.153 2.896l-.023.072c-.234.727-.434 1.347-.286 2.202l.002.007c.195 1.174.776 2.212 1.626 3.171a11.439 11.439 0 0 1-.613-3.707c0-5.581 3.992-10.26 9.226-10.92-.596-.323-1.257-.6-1.923-.88-1.63-.685-3.287-1.381-4.071-2.768-.771-1.305-.557-2.998-.339-4.722.15-1.183.302-2.38.139-3.478-.121-1.094-.571-2.204-1.016-3.303-.655-1.616-1.3-3.21-.884-4.697.425-1.579 1.845-2.678 3.254-3.768.911-.706 1.818-1.407 2.446-2.232.635-.794 1.081-1.856 1.532-2.929.685-1.63 1.381-3.287 2.768-4.071 1.305-.771 2.998-.557 4.722-.339 1.183.15 2.38.302 3.478.139 1.094-.122 2.204-.571 3.303-1.017 1.616-.654 3.21-1.3 4.697-.883 1.579.425 2.678 1.845 3.768 3.254.706.911 1.407 1.817 2.232 2.446.794.635 1.856 1.081 2.929 1.532 1.63.685 3.287 1.38 4.071 2.768.771 1.305.557 2.997.339 4.722-.15 1.182-.302 2.38-.139 3.478.122 1.093.571 2.203 1.017 3.303.654 1.616 1.3 3.21.883 4.697-.425 1.579-1.845 2.678-3.254 3.768-.911.705-1.817 1.407-2.446 2.232-.635.794-1.081 1.855-1.532 2.929-.685 1.63-1.381 3.287-2.768 4.07-1.305.772-2.998.558-4.722.34zm-39.787 22.182c-.023.015-.048.028-.073.041-8.004 4.034-15.245 10.71-20.36 18.607h19.129c2.24-3.754 4.48-7.42 6.717-11.077-1.989-2.143-3.864-4.763-5.413-7.571zm1.607 18.648h-.581c2.1-3.504 4.201-6.939 6.304-10.378.025-.041.047-.084.066-.127a1 1 0 0 0-.004-1.394c-4.374-4.472-8.255-11.477-9.224-17.535-.099-.893-.168-1.607-.026-2.296l.003-.008c.421 5.074 2.68 9.685 5.843 13.752a1 1 0 0 0 1.579-1.228c-3.406-4.378-5.578-9.253-5.49-14.546.049-.77.143-1.495.353-2.075.205-.567.479-.886.83-1.04l.012-.006.011-.004a16.426 16.426 0 0 0-.306 2.858c-.31 6.201 3.415 11.449 5.954 14.293a1 1 0 1 0 1.492-1.332c-2.457-2.752-5.726-7.494-5.447-12.882l.001-.052c0-.444.071-1.735.371-2.962.151-.614.347-1.159.586-1.563.24-.404.461-.564.625-.615.162-.045.401-.051.631.008.313.08.391.307.642.47-.178.267-.334.54-.47.805-.595 1.156-.967 2.472-1.076 3.426-.235 1.57.197 3.522 1.135 5.53.954 2.04 2.475 4.234 4.549 6.308a.999.999 0 1 0 1.414-1.414c-1.926-1.926-3.305-3.932-4.151-5.742-.857-1.833-1.125-3.372-.967-4.399l.002-.013.003-.029c.079-.707.378-1.8.869-2.752.497-.966 1.048-1.52 1.52-1.67a.85.85 0 0 1 .394.124c.202.112.379.277.487.436.167.264.162.46-.078 1.208-.342 1.054-.564 2.1-.372 3.212.475 2.838 2.526 4.87 4.674 6.46 1.04.771 2.152 1.473 3.186 2.126 1.018.643 2.05 1.277 2.996 2.023 2.35 1.96 4.289 4.246 4.638 6.951l.004.026c.447 2.861-.507 5.1-2.017 8.322l-.003.005a179.818 179.818 0 0 0-6.736 16.691.803.803 0 0 0-.033.116c-1.611-.588-3.217-1.182-4.826-1.776l-.003-.001c-2.557-.944-5.119-1.891-7.701-2.818l-.302-3.237c0-.628-.628-1.256-1.361-1.256zm1.868 6.693l2.795 29.932 11.344-24.751c-2.456-.884-4.893-1.785-7.327-2.684h-.002l-.002-.001-.002-.001c-2.267-.837-4.53-1.673-6.806-2.495zm3.166 33.911l.216 2.315a3.96 3.96 0 0 1 1.279-1.841c-.357-.478-.519-1.054-.554-1.582-.026-.39.013-.794.114-1.182l-1.01 2.203a.893.893 0 0 1-.045.087zm4.053-8.831c.066-.042.128-.079.184-.113l.019-.012.015-.008c1.472-.805 3.428-1.321 5.458-1.661 8.36-1.396 13.172-.906 19.314-.281 1.251.127 2.557.26 3.96.384l-1.196-3.013a1 1 0 0 1 1.023-1.365c.075-.057.159-.104.251-.139l9.595-3.641c.068-.035.14-.063.215-.082l.318-.121a.905.905 0 0 0 .055-.087c.139-.249.272-.711.272-1.415 0-1.663.022-3.232.426-4.979l.005-.02.005-.02.004-.012c.088-.306.182-.613.277-.922.471-1.535.96-3.13.884-5.026a1 1 0 0 1 1.876-.521.99.99 0 0 1 .311.428c.28.741.56 1.486.84 2.232l.017.044v.001c1.034 2.756 2.076 5.531 3.181 8.247a.998.998 0 0 1-.571 1.312l-6.543 2.483c-.317.127-.563.211-.873.332l-9.312 3.534a6429.06 6429.06 0 0 1 4.55 11.494l.001.001.002.005a547.099 547.099 0 0 0 4.756 11.695c14.556-3.138 26.194-11.932 29.197-23.381v-.001c1.812-6.866.168-13.345-3.445-19.873-3.621-6.542-9.154-13.021-15.008-19.876l-.036-.042-.002-.002c-4.407-5.092-7.674-6.984-10.396-8.017l-.003-.001c-5.08-1.942-10.926-2.499-16.546-2.838.333.57.662 1.145.979 1.722.122.221.156.48.094.724a12.496 12.496 0 0 1-1.28 3.111c-.866 1.487-2.31 3.199-4.596 3.903l-.012.003-.019.006c-.821.224-1.592.3-2.28.294-.203 2.383-1.173 4.509-2.276 6.863l.001-.003-.908-.419.906.424.001-.002a177.715 177.715 0 0 0-6.662 16.506 1.202 1.202 0 0 1-.059.137c.549.199 1.099.396 1.651.593a1.002 1.002 0 0 1 .572 1.359l-9.192 20.056zm-1.603-65.405v-.004l.001.007-.001-.003zm17.476 17.291c-.379-2.908-2.149-5.274-4.144-7.16l.078.001c2.788.021 5.327-1.098 7.21-2.928.407.699.817 1.383 1.226 2.066l.001.002.001.001v.001a120.642 120.642 0 0 1 1.865 3.184 10.818 10.818 0 0 1-.966 2.221c-.733 1.259-1.834 2.493-3.44 2.992a6.354 6.354 0 0 1-1.754.22c-.02-.198-.045-.398-.077-.6zm-19.477 61.755l.335 3.586h3.554a3.12 3.12 0 0 1-.495-.764l-.005-.011-.006-.014a4.032 4.032 0 0 1-.318-1.467 5.907 5.907 0 0 1-1.266-.216c-.465-.135-.951-.346-1.35-.66a2.543 2.543 0 0 1-.449-.454zm23.471-83.015l-15.535-1.038a9.387 9.387 0 0 0-.949 4.139c0 5.02 3.854 9 8.5 9 4.647 0 8.5-3.98 8.5-9a9.487 9.487 0 0 0-.516-3.101zm21.588 58.45l3.619-1.374a321.712 321.712 0 0 1-2.454-6.378c-.168.663-.357 1.275-.529 1.832l-.001.001c-.085.276-.166.539-.239.787-.342 1.493-.368 2.853-.368 4.502 0 .215-.009.425-.028.63zm-8.745 18.736l-.016-.042-.004-.008a8124.44 8124.44 0 0 0-2.913-7.366c-7.658-.771-16.153-1.49-23.772-.217-1.944.325-3.632.793-4.809 1.433-.45.271-1.154.757-1.62 1.611l-.003.007a2.749 2.749 0 0 0-.239.565c.394-.232.797-.42 1.183-.575 3.442-1.459 7.271-2.074 10.968-2.076 3.117-.085 6.167.269 9.183.619.548.063 1.095.127 1.641.187a1 1 0 0 1-.221 1.988c-.565-.063-1.125-.127-1.68-.192-3.023-.35-5.915-.685-8.882-.602h-.028c-3.495 0-7.057.584-10.209 1.921l-.019.008c-.921.368-1.703.87-2.14 1.526-.168.253-.27.632-.246.991.024.362.157.547.269.622l.011.008.013.009c.257-.119.513-.224.765-.319 7.428-2.887 14.524-2.766 22.2-1.655a1 1 0 1 1-.287 1.979c-7.522-1.089-14.224-1.168-21.194 1.542l-.011.005c-.735.275-1.42.624-2.001 1.122-.479.411-.716.997-.657 1.531l.001.003c.01.015.035.044.09.088.133.104.359.219.669.309.449.13.903.163 1.236.138.642-.934 1.787-1.478 2.978-1.812 1.489-.419 3.381-.603 5.439-.641 4.129-.076 9.165.432 13.53 1.035a1 1 0 0 1-.273 1.981c-4.335-.598-9.249-1.09-13.22-1.016-1.992.037-3.687.215-4.936.566-1.033.29-1.576.645-1.83.968a.998.998 0 0 1-.178.392c-.072.354-.05.801.114 1.192.151.318.43.573 1.028.767.639.209 1.532.31 2.744.353.744.027 1.602.03 2.555.034h.007c3.752.015 7.558.549 11.371 1.085 5.907.829 11.83 1.661 17.601.567-1.397-3.518-2.793-7.051-4.189-10.583l-.016-.042-.003-.006zm-34.724 4.613l.001.002.001.002.001.002-.003-.006z" fill="#4285F4"/><path d="M65.233 165.25l-22.6.3c-4.6.1-8.3-3.6-8.4-8.2l-.3-22.6c-.1-4.6 3.6-8.3 8.2-8.4l22.7-.3c4.6-.1 8.3 3.6 8.4 8.2l.3 22.6c0 4.6-3.7 8.3-8.3 8.4z" fill="#fff"/><path d="M44.033 126.25v-3.5c-.1-5.2 4.1-9.5 9.3-9.5 5.2-.1 9.5 4.1 9.5 9.3" stroke="#4285F4" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/><path d="M65.233 165.25l-22.6.3c-4.6.1-8.3-3.6-8.4-8.2l-.3-22.6c-.1-4.6 3.6-8.3 8.2-8.4l22.7-.3c4.6-.1 8.3 3.6 8.4 8.2l.3 22.6c0 4.6-3.7 8.3-8.3 8.4z" fill="#D2E3FC"/><path d="M44.033 126.25l.3 24.6c.1 5.2 4.3 9.4 9.5 9.3 5.2-.1 9.4-4.3 9.3-9.5l-.3-24.6" stroke="#fff" stroke-width="2" stroke-miterlimit="10" stroke-linejoin="round"/><path d="M55.253 144.177a3.7 3.7 0 0 0-1.62-7.027 3.7 3.7 0 0 0-1.514 7.077l-1.186 6.023c-.3 1.1.5 2 1.6 2h2.6c1 0 1.8-1 1.5-2l-1.38-6.073z" fill="#4285F4"/><path d="M52.733 185.75c24.08 0 43.6-19.52 43.6-43.6 0-24.08-19.52-43.6-43.6-43.6-24.08 0-43.6 19.52-43.6 43.6 0 24.08 19.52 43.6 43.6 43.6z" stroke="#FBBC04" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/><path d="M73.333 94.35l-.8-2.6c0-.1-.2-.3-.3-.3l-2.6-.6c-.1 0-.3 0-.4.1l-1.8 2c-.1.1-.1.3-.1.4l.8 2.6c0 .1.2.3.3.3l2.6.6c.1 0 .3 0 .4-.1l1.8-2c.1-.1.2-.2.1-.4z" fill="#34A853"/><path d="M37.982 72.756c3.5-1.4 7.4.2 8.9 3.6v.1c1.4 3.5-.2 7.4-3.6 8.9-3.5 1.4-7.4-.2-8.9-3.6v-.1c-1.5-3.5.2-7.5 3.6-8.9z" stroke="#EA4335" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/><path d="M84.99 40.437c-.335.812-.522 1.649-.65 2.444l-.685 2.643c-.57 2.254-1.975 4.015-3.87 5.34-2.586 1.823-5.662 2.905-6.757 6.195-.832 2.619-.235 5.521 1.622 7.557.083.116.174.182.307.305 3.423 3.362 8.97 2.733 11.731-1.103.789-1.096 1.395-2.324 2.101-3.535 1.206-2.1 3.19-3.664 5.534-4.304l2.615-.748a9.614 9.614 0 0 0 2.45-.673 10.615 10.615 0 0 0 4.398-3.264c3.42-4.137 3.298-10.277-.276-14.275-4.263-4.773-11.564-4.94-16.007-.459-1.176 1.289-1.989 2.534-2.512 3.877z" stroke="#8AB4F8" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/><path d="M84.938 71.58c1.278-7.867-4.063-15.28-11.93-16.559-7.867-1.278-15.28 4.063-16.558 11.93-1.278 7.866 4.063 15.28 11.93 16.558 7.866 1.278 15.28-4.063 16.558-11.93z" fill="#F1F3F4"/><path d="M71.928 56.816c-.936 2.942-.274 6.21 1.817 8.52.133.168.3.313.368.373l.02.017c3.029 2.956 7.49 3.171 10.788 1.1a14.35 14.35 0 0 0-.517-2.074c-2.6 2.01-6.395 1.971-8.883-.467a1.162 1.162 0 0 0-.012-.01l-.007-.008a6.175 6.175 0 0 0-.11-.099 3.41 3.41 0 0 1-.063-.057l-.011-.01a1.002 1.002 0 0 0-.067-.082c-1.617-1.768-2.146-4.299-1.42-6.59a5.596 5.596 0 0 1 1.127-1.952 14.562 14.562 0 0 0-2.144-.486 7.547 7.547 0 0 0-.882 1.812l-.004.013z" fill="#fff"/><path d="M27.715 47.798c1.8-1.1 4.2-.5 5.2 1.4l4.6 7.7c1.1 1.8.5 4.2-1.4 5.2-1.8 1.1-4.2.5-5.2-1.4l-4.6-7.7c-1-1.8-.4-4.1 1.4-5.2z" fill="#8AB4F8"/><path d="M7.429 72.075c2.674 7.448 8.562 12.875 15.79 15.73 2.17.867 4.83 1.741 7.043 3.09" stroke="#D2E3FC" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/></svg> +<svg width="217" height="216" viewBox="0 0 217 216" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M161.781 134.85c0-.526.426-.952.952-.952h13.4c.526 0 .953.426.953.952v9.2c0 2.826-2.327 5.152-5.153 5.152h-5c-2.826 0-5.152-2.326-5.152-5.152v-9.2zm1.905.952v8.248c0 1.774 1.473 3.248 3.247 3.248h5c1.774 0 3.248-1.474 3.248-3.248v-8.248h-11.495z" fill="#4285F4"/><path d="M152.648 103.908a1.001 1.001 0 0 0-1.029-1.715 5.083 5.083 0 0 1-1.976.651c-.413.041-.7.02-.953-.037-.262-.06-.533-.167-.918-.355a.999.999 0 1 0-.878 1.797c.434.212.868.398 1.355.509a4.866 4.866 0 0 0 1.593.076 7.084 7.084 0 0 0 2.806-.926z" fill="#4285F4"/><path fill-rule="evenodd" clip-rule="evenodd" d="M168.543 91.92c-1.182-.15-2.38-.3-3.478-.138-1.157.124-2.314.59-3.443 1.044-.322.13-.642.258-.958.377a11.386 11.386 0 0 1 1.169 5.047 11.32 11.32 0 0 1-2.067 6.554.993.993 0 0 1 .333.345c.382.66.786 1.335 1.197 2.023 5.995.335 12.677.82 18.493 3.043 3.077 1.168 6.609 3.275 11.2 8.581l.005.005.129.151c5.786 6.775 11.429 13.383 15.148 20.101 3.761 6.796 5.617 13.817 3.629 21.351-3.333 12.708-16.261 21.985-31.673 25.027a1 1 0 0 1-1.108-.575c-6.028 1.233-12.105.385-18.172-.462-3.245-.453-6.487-.906-9.717-1.039a1.501 1.501 0 0 1-1.497 1.395h-82.5c-.338 0-.65-.112-.9-.3h-5.24l-4.605-50.444c-.105-.628.418-1.256 1.15-1.256h50.32c5.338-8.673 13.143-16.018 21.825-20.393l.053-.025c-1.405-2.876-2.439-5.881-2.89-8.725l-.003-.016-.001-.01-.003-.021-.006-.06c-.096-.861-.212-1.903.024-2.967.007-.033.017-.067.027-.099.276-.826.814-1.476 1.424-1.965a.997.997 0 0 1 .477-.208c.066-.663.184-1.374.42-2.026.318-.877.891-1.757 1.934-2.204l.023-.01c.42-.168.904-.247 1.391-.194.095-.215.2-.424.317-.621.376-.634.941-1.263 1.776-1.514l.013-.004a3.286 3.286 0 0 1 1.687-.006c.522.135 1.113.428 1.495.978.896-.612 1.862-.69 2.84-.147.47.261.892.644 1.184 1.082l.009.014c.724 1.125.385 2.175.153 2.896l-.023.072c-.234.727-.434 1.347-.286 2.202l.002.007c.195 1.174.776 2.212 1.626 3.171a11.439 11.439 0 0 1-.613-3.707c0-5.581 3.992-10.26 9.226-10.92-.596-.323-1.257-.6-1.923-.88-1.63-.685-3.287-1.381-4.071-2.768-.771-1.305-.557-2.998-.339-4.722.15-1.183.302-2.38.139-3.478-.121-1.094-.571-2.204-1.016-3.303-.655-1.616-1.3-3.21-.884-4.697.425-1.579 1.845-2.678 3.254-3.768.911-.706 1.818-1.407 2.446-2.232.635-.794 1.081-1.856 1.532-2.929.685-1.63 1.381-3.287 2.768-4.071 1.305-.771 2.998-.557 4.722-.339 1.183.15 2.38.302 3.478.139 1.094-.122 2.204-.571 3.303-1.017 1.616-.654 3.21-1.3 4.697-.883 1.579.425 2.678 1.845 3.768 3.254.706.911 1.407 1.817 2.232 2.446.794.635 1.856 1.081 2.929 1.532 1.63.685 3.287 1.38 4.071 2.768.771 1.305.557 2.997.339 4.722-.15 1.182-.302 2.38-.139 3.478.122 1.093.571 2.203 1.017 3.303.654 1.616 1.3 3.21.883 4.697-.425 1.579-1.845 2.678-3.254 3.768-.911.705-1.817 1.407-2.446 2.232-.635.794-1.081 1.855-1.532 2.929-.685 1.63-1.381 3.287-2.768 4.07-1.305.772-2.998.558-4.722.34zm-39.787 22.182c-.023.015-.048.028-.073.041-8.004 4.034-15.245 10.71-20.36 18.607h19.129c2.24-3.754 4.48-7.42 6.717-11.077-1.989-2.143-3.864-4.763-5.413-7.571zm1.607 18.648h-.581c2.1-3.504 4.201-6.939 6.304-10.378.025-.041.047-.084.066-.127a1 1 0 0 0-.004-1.394c-4.374-4.472-8.255-11.477-9.224-17.535-.099-.893-.168-1.607-.026-2.296l.003-.008c.421 5.074 2.68 9.685 5.843 13.752a1 1 0 0 0 1.579-1.228c-3.406-4.378-5.578-9.253-5.49-14.546.049-.77.143-1.495.353-2.075.205-.567.479-.886.83-1.04l.012-.006.011-.004a16.426 16.426 0 0 0-.306 2.858c-.31 6.201 3.415 11.449 5.954 14.293a1 1 0 1 0 1.492-1.332c-2.457-2.752-5.726-7.494-5.447-12.882l.001-.052c0-.444.071-1.735.371-2.962.151-.614.347-1.159.586-1.563.24-.404.461-.564.625-.615.162-.045.401-.051.631.008.313.08.391.307.642.47-.178.267-.334.54-.47.805-.595 1.156-.967 2.472-1.076 3.426-.235 1.57.197 3.522 1.135 5.53.954 2.04 2.475 4.234 4.549 6.308a.999.999 0 1 0 1.414-1.414c-1.926-1.926-3.305-3.932-4.151-5.742-.857-1.833-1.125-3.372-.967-4.399l.002-.013.003-.029c.079-.707.378-1.8.869-2.752.497-.966 1.048-1.52 1.52-1.67a.85.85 0 0 1 .394.124c.202.112.379.277.487.436.167.264.162.46-.078 1.208-.342 1.054-.564 2.1-.372 3.212.475 2.838 2.526 4.87 4.674 6.46 1.04.771 2.152 1.473 3.186 2.126 1.018.643 2.05 1.277 2.996 2.023 2.35 1.96 4.289 4.246 4.638 6.951l.004.026c.447 2.861-.507 5.1-2.017 8.322l-.003.005a179.818 179.818 0 0 0-6.736 16.691.803.803 0 0 0-.033.116c-1.611-.588-3.217-1.182-4.826-1.776l-.003-.001c-2.557-.944-5.119-1.891-7.701-2.818l-.302-3.237c0-.628-.628-1.256-1.361-1.256zm1.868 6.693 2.795 29.932 11.344-24.751c-2.456-.884-4.893-1.785-7.327-2.684h-.002l-.002-.001-.002-.001c-2.267-.837-4.53-1.673-6.806-2.495zm3.166 33.911.216 2.315a3.96 3.96 0 0 1 1.279-1.841c-.357-.478-.519-1.054-.554-1.582-.026-.39.013-.794.114-1.182l-1.01 2.203a.893.893 0 0 1-.045.087zm4.053-8.831c.066-.042.128-.079.184-.113l.019-.012.015-.008c1.472-.805 3.428-1.321 5.458-1.661 8.36-1.396 13.172-.906 19.314-.281 1.251.127 2.557.26 3.96.384l-1.196-3.013a1 1 0 0 1 1.023-1.365c.075-.057.159-.104.251-.139l9.595-3.641c.068-.035.14-.063.215-.082l.318-.121a.905.905 0 0 0 .055-.087c.139-.249.272-.711.272-1.415 0-1.663.022-3.232.426-4.979l.005-.02.005-.02.004-.012c.088-.306.182-.613.277-.922.471-1.535.96-3.13.884-5.026a1 1 0 0 1 1.876-.521.99.99 0 0 1 .311.428c.28.741.56 1.486.84 2.232l.017.044v.001c1.034 2.756 2.076 5.531 3.181 8.247a.998.998 0 0 1-.571 1.312l-6.543 2.483c-.317.127-.563.211-.873.332l-9.312 3.534a6429.06 6429.06 0 0 1 4.55 11.494l.001.001.002.005a547.099 547.099 0 0 0 4.756 11.695c14.556-3.138 26.194-11.932 29.197-23.381v-.001c1.812-6.866.168-13.345-3.445-19.873-3.621-6.542-9.154-13.021-15.008-19.876l-.036-.042-.002-.002c-4.407-5.092-7.674-6.984-10.396-8.017l-.003-.001c-5.08-1.942-10.926-2.499-16.546-2.838.333.57.662 1.145.979 1.722.122.221.156.48.094.724a12.496 12.496 0 0 1-1.28 3.111c-.866 1.487-2.31 3.199-4.596 3.903l-.012.003-.019.006c-.821.224-1.592.3-2.28.294-.203 2.383-1.173 4.509-2.276 6.863l.001-.003-.908-.419.906.424.001-.002a177.715 177.715 0 0 0-6.662 16.506 1.202 1.202 0 0 1-.059.137c.549.199 1.099.396 1.651.593a1.002 1.002 0 0 1 .572 1.359l-9.192 20.056zm-1.603-65.405v-.004l.001.007-.001-.003zm17.476 17.291c-.379-2.908-2.149-5.274-4.144-7.16l.078.001c2.788.021 5.327-1.098 7.21-2.928.407.699.817 1.383 1.226 2.066l.001.002.001.001v.001a120.642 120.642 0 0 1 1.865 3.184 10.818 10.818 0 0 1-.966 2.221c-.733 1.259-1.834 2.493-3.44 2.992a6.354 6.354 0 0 1-1.754.22c-.02-.198-.045-.398-.077-.6zm-19.477 61.755.335 3.586h3.554a3.12 3.12 0 0 1-.495-.764l-.005-.011-.006-.014a4.032 4.032 0 0 1-.318-1.467 5.907 5.907 0 0 1-1.266-.216c-.465-.135-.951-.346-1.35-.66a2.543 2.543 0 0 1-.449-.454zm23.471-83.015-15.535-1.038a9.387 9.387 0 0 0-.949 4.139c0 5.02 3.854 9 8.5 9 4.647 0 8.5-3.98 8.5-9a9.487 9.487 0 0 0-.516-3.101zm21.588 58.45 3.619-1.374a321.712 321.712 0 0 1-2.454-6.378c-.168.663-.357 1.275-.529 1.832l-.001.001c-.085.276-.166.539-.239.787-.342 1.493-.368 2.853-.368 4.502 0 .215-.009.425-.028.63zm-8.745 18.736-.016-.042-.004-.008a8124.44 8124.44 0 0 0-2.913-7.366c-7.658-.771-16.153-1.49-23.772-.217-1.944.325-3.632.793-4.809 1.433-.45.271-1.154.757-1.62 1.611l-.003.007a2.749 2.749 0 0 0-.239.565c.394-.232.797-.42 1.183-.575 3.442-1.459 7.271-2.074 10.968-2.076 3.117-.085 6.167.269 9.183.619.548.063 1.095.127 1.641.187a1 1 0 0 1-.221 1.988c-.565-.063-1.125-.127-1.68-.192-3.023-.35-5.915-.685-8.882-.602h-.028c-3.495 0-7.057.584-10.209 1.921l-.019.008c-.921.368-1.703.87-2.14 1.526-.168.253-.27.632-.246.991.024.362.157.547.269.622l.011.008.013.009c.257-.119.513-.224.765-.319 7.428-2.887 14.524-2.766 22.2-1.655a1 1 0 1 1-.287 1.979c-7.522-1.089-14.224-1.168-21.194 1.542l-.011.005c-.735.275-1.42.624-2.001 1.122-.479.411-.716.997-.657 1.531l.001.003c.01.015.035.044.09.088.133.104.359.219.669.309.449.13.903.163 1.236.138.642-.934 1.787-1.478 2.978-1.812 1.489-.419 3.381-.603 5.439-.641 4.129-.076 9.165.432 13.53 1.035a1 1 0 0 1-.273 1.981c-4.335-.598-9.249-1.09-13.22-1.016-1.992.037-3.687.215-4.936.566-1.033.29-1.576.645-1.83.968a.998.998 0 0 1-.178.392c-.072.354-.05.801.114 1.192.151.318.43.573 1.028.767.639.209 1.532.31 2.744.353.744.027 1.602.03 2.555.034h.007c3.752.015 7.558.549 11.371 1.085 5.907.829 11.83 1.661 17.601.567-1.397-3.518-2.793-7.051-4.189-10.583l-.016-.042-.003-.006zm-34.724 4.613.001.002.001.002.001.002-.003-.006z" fill="#4285F4"/><path d="m65.233 165.25-22.6.3c-4.6.1-8.3-3.6-8.4-8.2l-.3-22.6c-.1-4.6 3.6-8.3 8.2-8.4l22.7-.3c4.6-.1 8.3 3.6 8.4 8.2l.3 22.6c0 4.6-3.7 8.3-8.3 8.4z" fill="#fff"/><path d="M44.033 126.25v-3.5c-.1-5.2 4.1-9.5 9.3-9.5 5.2-.1 9.5 4.1 9.5 9.3" stroke="#4285F4" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/><path d="m65.233 165.25-22.6.3c-4.6.1-8.3-3.6-8.4-8.2l-.3-22.6c-.1-4.6 3.6-8.3 8.2-8.4l22.7-.3c4.6-.1 8.3 3.6 8.4 8.2l.3 22.6c0 4.6-3.7 8.3-8.3 8.4z" fill="#D2E3FC"/><path d="m44.033 126.25.3 24.6c.1 5.2 4.3 9.4 9.5 9.3 5.2-.1 9.4-4.3 9.3-9.5l-.3-24.6" stroke="#fff" stroke-width="2" stroke-miterlimit="10" stroke-linejoin="round"/><path d="M55.253 144.177a3.7 3.7 0 0 0-1.62-7.027 3.7 3.7 0 0 0-1.514 7.077l-1.186 6.023c-.3 1.1.5 2 1.6 2h2.6c1 0 1.8-1 1.5-2l-1.38-6.073z" fill="#4285F4"/><path d="M52.733 185.75c24.08 0 43.6-19.52 43.6-43.6 0-24.08-19.52-43.6-43.6-43.6-24.08 0-43.6 19.52-43.6 43.6 0 24.08 19.52 43.6 43.6 43.6z" stroke="#FBBC04" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/><path d="m73.333 94.35-.8-2.6c0-.1-.2-.3-.3-.3l-2.6-.6c-.1 0-.3 0-.4.1l-1.8 2c-.1.1-.1.3-.1.4l.8 2.6c0 .1.2.3.3.3l2.6.6c.1 0 .3 0 .4-.1l1.8-2c.1-.1.2-.2.1-.4z" fill="#34A853"/><path d="M37.982 72.756c3.5-1.4 7.4.2 8.9 3.6v.1c1.4 3.5-.2 7.4-3.6 8.9-3.5 1.4-7.4-.2-8.9-3.6v-.1c-1.5-3.5.2-7.5 3.6-8.9z" stroke="#EA4335" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/><path d="M84.99 40.437c-.335.812-.522 1.649-.65 2.444l-.685 2.643c-.57 2.254-1.975 4.015-3.87 5.34-2.586 1.823-5.662 2.905-6.757 6.195-.832 2.619-.235 5.521 1.622 7.557.083.116.174.182.307.305 3.423 3.362 8.97 2.733 11.731-1.103.789-1.096 1.395-2.324 2.101-3.535a9.198 9.198 0 0 1 5.534-4.304l2.615-.748a9.614 9.614 0 0 0 2.45-.673 10.615 10.615 0 0 0 4.398-3.264c3.42-4.137 3.298-10.277-.276-14.275-4.263-4.773-11.564-4.94-16.007-.459-1.176 1.289-1.989 2.534-2.512 3.877z" stroke="#8AB4F8" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/><path d="M84.938 71.58c1.278-7.867-4.063-15.28-11.93-16.559-7.867-1.278-15.28 4.063-16.558 11.93-1.278 7.866 4.063 15.28 11.93 16.558 7.866 1.278 15.28-4.063 16.558-11.93z" fill="#F1F3F4"/><path d="M71.928 56.816c-.936 2.942-.274 6.21 1.817 8.52.133.168.3.313.368.373l.02.017c3.029 2.956 7.49 3.171 10.788 1.1a14.35 14.35 0 0 0-.517-2.074c-2.6 2.01-6.395 1.971-8.883-.467a1.162 1.162 0 0 0-.012-.01l-.007-.008a6.175 6.175 0 0 0-.11-.099 3.41 3.41 0 0 1-.063-.057l-.011-.01a1.002 1.002 0 0 0-.067-.082c-1.617-1.768-2.146-4.299-1.42-6.59a5.596 5.596 0 0 1 1.127-1.952 14.562 14.562 0 0 0-2.144-.486 7.547 7.547 0 0 0-.882 1.812l-.004.013z" fill="#fff"/><path d="M27.715 47.798c1.8-1.1 4.2-.5 5.2 1.4l4.6 7.7c1.1 1.8.5 4.2-1.4 5.2-1.8 1.1-4.2.5-5.2-1.4l-4.6-7.7c-1-1.8-.4-4.1 1.4-5.2z" fill="#8AB4F8"/><path d="M7.429 72.075c2.674 7.448 8.562 12.875 15.79 15.73 2.17.867 4.83 1.741 7.043 3.09" stroke="#D2E3FC" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/chromeos/images/smart_privacy_dark.svg b/chrome/browser/resources/settings/chromeos/images/smart_privacy_dark.svg index 58f116f..9d0411c 100644 --- a/chrome/browser/resources/settings/chromeos/images/smart_privacy_dark.svg +++ b/chrome/browser/resources/settings/chromeos/images/smart_privacy_dark.svg
@@ -1 +1 @@ -<svg width="217" height="216" viewBox="0 0 217 216" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M161.781 134.85c0-.526.426-.952.952-.952h13.4c.526 0 .953.426.953.952v9.2c0 2.826-2.327 5.152-5.153 5.152h-5c-2.826 0-5.152-2.326-5.152-5.152v-9.2zm1.905.952v8.248c0 1.774 1.473 3.248 3.247 3.248h5c1.774 0 3.248-1.474 3.248-3.248v-8.248h-11.495z" fill="#669DF6"/><path d="M152.648 103.908a1.001 1.001 0 0 0-1.029-1.715 5.083 5.083 0 0 1-1.976.651c-.413.041-.7.02-.953-.037-.262-.06-.533-.167-.918-.355a.999.999 0 1 0-.878 1.797c.434.212.868.398 1.355.509a4.866 4.866 0 0 0 1.593.076 7.084 7.084 0 0 0 2.806-.926z" fill="#669DF6"/><path fill-rule="evenodd" clip-rule="evenodd" d="M168.543 91.92c-1.182-.15-2.38-.3-3.478-.138-1.157.124-2.314.59-3.443 1.044-.322.13-.642.258-.958.377a11.386 11.386 0 0 1 1.169 5.047 11.32 11.32 0 0 1-2.067 6.554.993.993 0 0 1 .333.345c.382.66.786 1.335 1.197 2.023 5.995.335 12.677.82 18.493 3.043 3.077 1.168 6.609 3.275 11.2 8.581l.005.005.129.151c5.786 6.775 11.429 13.383 15.148 20.101 3.761 6.796 5.617 13.817 3.629 21.351-3.333 12.708-16.261 21.985-31.673 25.027a1 1 0 0 1-1.108-.575c-6.028 1.233-12.105.385-18.172-.462-3.245-.453-6.487-.906-9.717-1.039a1.501 1.501 0 0 1-1.497 1.395h-82.5c-.338 0-.65-.112-.9-.3h-5.24l-4.605-50.444c-.105-.628.418-1.256 1.15-1.256h50.32c5.338-8.673 13.143-16.018 21.825-20.393l.053-.025c-1.405-2.876-2.439-5.881-2.89-8.725l-.003-.016-.001-.01-.003-.021-.006-.06c-.096-.861-.212-1.903.024-2.967.007-.033.017-.067.027-.099.276-.826.814-1.476 1.424-1.965a.997.997 0 0 1 .477-.208c.066-.663.184-1.374.42-2.026.318-.877.891-1.757 1.934-2.204l.023-.01c.42-.168.904-.247 1.391-.194.095-.215.2-.424.317-.621.376-.634.941-1.263 1.776-1.514l.013-.004a3.286 3.286 0 0 1 1.687-.006c.522.135 1.113.428 1.495.978.896-.612 1.862-.69 2.84-.147.47.261.892.644 1.184 1.082l.009.014c.724 1.125.385 2.175.153 2.896l-.023.072c-.234.727-.434 1.347-.286 2.202l.002.007c.195 1.174.776 2.212 1.626 3.171a11.439 11.439 0 0 1-.613-3.707c0-5.581 3.992-10.26 9.226-10.92-.596-.323-1.257-.6-1.923-.88-1.63-.685-3.287-1.381-4.071-2.768-.771-1.305-.557-2.998-.339-4.722.15-1.183.302-2.38.139-3.478-.121-1.094-.571-2.204-1.016-3.303-.655-1.616-1.3-3.21-.884-4.697.425-1.579 1.845-2.678 3.254-3.768.911-.706 1.818-1.407 2.446-2.232.635-.794 1.081-1.856 1.532-2.929.685-1.63 1.381-3.287 2.768-4.071 1.305-.771 2.998-.557 4.722-.339 1.183.15 2.38.302 3.478.139 1.094-.122 2.204-.571 3.303-1.017 1.616-.654 3.21-1.3 4.697-.883 1.579.425 2.678 1.845 3.768 3.254.706.911 1.407 1.817 2.232 2.446.794.635 1.856 1.081 2.929 1.532 1.63.685 3.287 1.38 4.071 2.768.771 1.305.557 2.997.339 4.722-.15 1.182-.302 2.38-.139 3.478.122 1.093.571 2.203 1.017 3.303.654 1.616 1.3 3.21.883 4.697-.425 1.579-1.845 2.678-3.254 3.768-.911.705-1.817 1.407-2.446 2.232-.635.794-1.081 1.855-1.532 2.929-.685 1.63-1.381 3.287-2.768 4.07-1.305.772-2.998.558-4.722.34zm-39.787 22.182c-.023.015-.048.028-.073.041-8.004 4.034-15.245 10.71-20.36 18.607h19.129c2.24-3.754 4.48-7.42 6.717-11.077-1.989-2.143-3.864-4.763-5.413-7.571zm1.607 18.648h-.581c2.1-3.504 4.201-6.939 6.304-10.378.025-.041.047-.084.066-.127a1 1 0 0 0-.004-1.394c-4.374-4.472-8.255-11.477-9.224-17.535-.099-.893-.168-1.607-.026-2.296l.003-.008c.421 5.074 2.68 9.685 5.843 13.752a1 1 0 0 0 1.579-1.228c-3.406-4.378-5.578-9.253-5.49-14.546.049-.77.143-1.495.353-2.075.205-.567.479-.886.83-1.04l.012-.006.011-.004a16.426 16.426 0 0 0-.306 2.858c-.31 6.201 3.415 11.449 5.954 14.293a1 1 0 1 0 1.492-1.332c-2.457-2.752-5.726-7.494-5.447-12.882l.001-.052c0-.444.071-1.735.371-2.962.151-.614.347-1.159.586-1.563.24-.404.461-.564.625-.615.162-.045.401-.051.631.008.313.08.391.307.642.47-.178.267-.334.54-.47.805-.595 1.156-.967 2.472-1.076 3.426-.235 1.57.197 3.522 1.135 5.53.954 2.04 2.475 4.234 4.549 6.308a.999.999 0 1 0 1.414-1.414c-1.926-1.926-3.305-3.932-4.151-5.742-.857-1.833-1.125-3.372-.967-4.399l.002-.013.003-.029c.079-.707.378-1.8.869-2.752.497-.966 1.048-1.52 1.52-1.67a.85.85 0 0 1 .394.124c.202.112.379.277.487.436.167.264.162.46-.078 1.208-.342 1.054-.564 2.1-.372 3.212.475 2.838 2.526 4.87 4.674 6.46 1.04.771 2.152 1.473 3.186 2.126 1.018.643 2.05 1.277 2.996 2.023 2.35 1.96 4.289 4.246 4.638 6.951l.004.026c.447 2.861-.507 5.1-2.017 8.322l-.003.005a179.818 179.818 0 0 0-6.736 16.691.803.803 0 0 0-.033.116c-1.611-.588-3.217-1.182-4.826-1.776l-.003-.001c-2.557-.944-5.119-1.891-7.701-2.818l-.302-3.237c0-.628-.628-1.256-1.361-1.256zm1.868 6.693l2.795 29.932 11.344-24.751c-2.456-.884-4.893-1.785-7.327-2.684h-.002l-.002-.001-.002-.001c-2.267-.837-4.53-1.673-6.806-2.495zm3.166 33.911l.216 2.315a3.96 3.96 0 0 1 1.279-1.841c-.357-.478-.519-1.054-.554-1.582-.026-.39.013-.794.114-1.182l-1.01 2.203a.893.893 0 0 1-.045.087zm4.053-8.831c.066-.042.128-.079.184-.113l.019-.012.015-.008c1.472-.805 3.428-1.321 5.458-1.661 8.36-1.396 13.172-.906 19.314-.281 1.251.127 2.557.26 3.96.384l-1.196-3.013a1 1 0 0 1 1.023-1.365c.075-.057.159-.104.251-.139l9.595-3.641c.068-.035.14-.063.215-.082l.318-.121a.905.905 0 0 0 .055-.087c.139-.249.272-.711.272-1.415 0-1.663.022-3.232.426-4.979l.005-.02.005-.02.004-.012c.088-.306.182-.613.277-.922.471-1.535.96-3.13.884-5.026a1 1 0 0 1 1.876-.521.99.99 0 0 1 .311.428c.28.741.56 1.486.84 2.232l.017.044v.001c1.034 2.756 2.076 5.531 3.181 8.247a.998.998 0 0 1-.571 1.312l-6.543 2.483c-.317.127-.563.211-.873.332l-9.312 3.534a6429.06 6429.06 0 0 1 4.55 11.494l.001.001.002.005a547.099 547.099 0 0 0 4.756 11.695c14.556-3.138 26.194-11.932 29.197-23.381v-.001c1.812-6.866.168-13.345-3.445-19.873-3.621-6.542-9.154-13.021-15.008-19.876l-.036-.042-.002-.002c-4.407-5.092-7.674-6.984-10.396-8.017l-.003-.001c-5.08-1.942-10.926-2.499-16.546-2.838.333.57.662 1.145.979 1.722.122.221.156.48.094.724a12.496 12.496 0 0 1-1.28 3.111c-.866 1.487-2.31 3.199-4.596 3.903l-.012.003-.019.006c-.821.224-1.592.3-2.28.294-.203 2.383-1.173 4.509-2.276 6.863l.001-.003-.908-.419.906.424.001-.002a177.715 177.715 0 0 0-6.662 16.506 1.202 1.202 0 0 1-.059.137c.549.199 1.099.396 1.651.593a1.002 1.002 0 0 1 .572 1.359l-9.192 20.056zm-1.603-65.405v-.004l.001.007-.001-.003zm17.476 17.291c-.379-2.908-2.149-5.274-4.144-7.16l.078.001c2.788.021 5.327-1.098 7.21-2.928.407.699.817 1.383 1.226 2.066l.001.002.001.001v.001a120.642 120.642 0 0 1 1.865 3.184 10.818 10.818 0 0 1-.966 2.221c-.733 1.259-1.834 2.493-3.44 2.992a6.354 6.354 0 0 1-1.754.22c-.02-.198-.045-.398-.077-.6zm-19.477 61.755l.335 3.586h3.554a3.12 3.12 0 0 1-.495-.764l-.005-.011-.006-.014a4.032 4.032 0 0 1-.318-1.467 5.907 5.907 0 0 1-1.266-.216c-.465-.135-.951-.346-1.35-.66a2.543 2.543 0 0 1-.449-.454zm23.471-83.015l-15.535-1.038a9.387 9.387 0 0 0-.949 4.139c0 5.02 3.854 9 8.5 9 4.647 0 8.5-3.98 8.5-9a9.487 9.487 0 0 0-.516-3.101zm21.588 58.45l3.619-1.374a321.712 321.712 0 0 1-2.454-6.378c-.168.663-.357 1.275-.529 1.832l-.001.001c-.085.276-.166.539-.239.787-.342 1.493-.368 2.853-.368 4.502 0 .215-.009.425-.028.63zm-8.745 18.736l-.016-.042-.004-.008a8124.44 8124.44 0 0 0-2.913-7.366c-7.658-.771-16.153-1.49-23.772-.217-1.944.325-3.632.793-4.809 1.433-.45.271-1.154.757-1.62 1.611l-.003.007a2.749 2.749 0 0 0-.239.565c.394-.232.797-.42 1.183-.575 3.442-1.459 7.271-2.074 10.968-2.076 3.117-.085 6.167.269 9.183.619.548.063 1.095.127 1.641.187a1 1 0 0 1-.221 1.988c-.565-.063-1.125-.127-1.68-.192-3.023-.35-5.915-.685-8.882-.602h-.028c-3.495 0-7.057.584-10.209 1.921l-.019.008c-.921.368-1.703.87-2.14 1.526-.168.253-.27.632-.246.991.024.362.157.547.269.622l.011.008.013.009c.257-.119.513-.224.765-.319 7.428-2.887 14.524-2.766 22.2-1.655a1 1 0 1 1-.287 1.979c-7.522-1.089-14.224-1.168-21.194 1.542l-.011.005c-.735.275-1.42.624-2.001 1.122-.479.411-.716.997-.657 1.531l.001.003c.01.015.035.044.09.088.133.104.359.219.669.309.449.13.903.163 1.236.138.642-.934 1.787-1.478 2.978-1.812 1.489-.419 3.381-.603 5.439-.641 4.129-.076 9.165.432 13.53 1.035a1 1 0 0 1-.273 1.981c-4.335-.598-9.249-1.09-13.22-1.016-1.992.037-3.687.215-4.936.566-1.033.29-1.576.645-1.83.968a.998.998 0 0 1-.178.392c-.072.354-.05.801.114 1.192.151.318.43.573 1.028.767.639.209 1.532.31 2.744.353.744.027 1.602.03 2.555.034h.007c3.752.015 7.558.549 11.371 1.085 5.907.829 11.83 1.661 17.601.567-1.397-3.518-2.793-7.051-4.189-10.583l-.016-.042-.003-.006zm-34.724 4.613l.001.002.001.002.001.002-.003-.006z" fill="#669DF6"/><path d="M44.033 126.25v-3.5c-.1-5.2 4.1-9.5 9.3-9.5 5.2-.1 9.5 4.1 9.5 9.3" stroke="#669DF6" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/><path d="M65.233 165.25l-22.6.3c-4.6.1-8.3-3.6-8.4-8.2l-.3-22.6c-.1-4.6 3.6-8.3 8.2-8.4l22.7-.3c4.6-.1 8.3 3.6 8.4 8.2l.3 22.6c0 4.6-3.7 8.3-8.3 8.4z" fill="#323336"/><path d="M65.233 165.25l-22.6.3c-4.6.1-8.3-3.6-8.4-8.2l-.3-22.6c-.1-4.6 3.6-8.3 8.2-8.4l22.7-.3c4.6-.1 8.3 3.6 8.4 8.2l.3 22.6c0 4.6-3.7 8.3-8.3 8.4z" fill="#8AB4F8" fill-opacity=".4"/><path d="M44.033 126.25l.3 24.6c.1 5.2 4.3 9.4 9.5 9.3 5.2-.1 9.4-4.3 9.3-9.5l-.3-24.6" stroke="#323336" stroke-width="2" stroke-miterlimit="10" stroke-linejoin="round"/><path d="M55.253 144.177a3.7 3.7 0 0 0-1.62-7.027 3.7 3.7 0 0 0-1.514 7.077l-1.186 6.023c-.3 1.1.5 2 1.6 2h2.6c1 0 1.8-1 1.5-2l-1.38-6.073z" fill="#669DF6"/><path d="M52.733 185.75c24.08 0 43.6-19.52 43.6-43.6 0-24.08-19.52-43.6-43.6-43.6-24.08 0-43.6 19.52-43.6 43.6 0 24.08 19.52 43.6 43.6 43.6z" stroke="#FCC934" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/><path d="M73.333 94.35l-.8-2.6c0-.1-.2-.3-.3-.3l-2.6-.6c-.1 0-.3 0-.4.1l-1.8 2c-.1.1-.1.3-.1.4l.8 2.6c0 .1.2.3.3.3l2.6.6c.1 0 .3 0 .4-.1l1.8-2c.1-.1.2-.2.1-.4z" fill="#5BB974"/><path d="M37.982 72.756c3.5-1.4 7.4.2 8.9 3.6v.1c1.4 3.5-.2 7.4-3.6 8.9-3.5 1.4-7.4-.2-8.9-3.6v-.1c-1.5-3.5.2-7.5 3.6-8.9z" stroke="#EA4335" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/><path d="M84.99 40.437c-.335.812-.522 1.649-.65 2.444l-.685 2.643c-.57 2.254-1.975 4.015-3.87 5.34-2.586 1.823-5.662 2.905-6.757 6.195-.832 2.619-.235 5.521 1.622 7.557.083.116.174.182.307.305 3.423 3.362 8.97 2.733 11.731-1.103.789-1.096 1.395-2.324 2.101-3.535 1.206-2.1 3.19-3.664 5.534-4.304l2.615-.748a9.614 9.614 0 0 0 2.45-.673 10.615 10.615 0 0 0 4.398-3.264c3.42-4.137 3.298-10.277-.276-14.275-4.263-4.773-11.564-4.94-16.007-.459-1.176 1.289-1.989 2.534-2.512 3.877z" stroke="#1A73E8" stroke-opacity=".4" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/><path d="M84.938 71.58c1.278-7.867-4.063-15.28-11.93-16.559-7.867-1.278-15.28 4.063-16.558 11.93-1.278 7.866 4.063 15.28 11.93 16.558 7.866 1.278 15.28-4.063 16.558-11.93z" fill="#5F6368"/><path d="M71.928 56.816c-.936 2.942-.274 6.21 1.817 8.52.133.168.3.313.368.373l.02.017c3.029 2.956 7.49 3.171 10.788 1.1a14.35 14.35 0 0 0-.517-2.074c-2.6 2.01-6.395 1.971-8.883-.467a1.162 1.162 0 0 0-.012-.01l-.007-.008a6.175 6.175 0 0 0-.11-.099 3.41 3.41 0 0 1-.063-.057l-.011-.01a1.002 1.002 0 0 0-.067-.082c-1.617-1.768-2.146-4.299-1.42-6.59a5.596 5.596 0 0 1 1.127-1.952 14.562 14.562 0 0 0-2.144-.486 7.547 7.547 0 0 0-.882 1.812l-.004.013z" fill="#323336"/><path d="M27.715 47.798c1.8-1.1 4.2-.5 5.2 1.4l4.6 7.7c1.1 1.8.5 4.2-1.4 5.2-1.8 1.1-4.2.5-5.2-1.4l-4.6-7.7c-1-1.8-.4-4.1 1.4-5.2z" fill="#1A73E8" fill-opacity=".4"/><path d="M7.429 72.075c2.674 7.448 8.562 12.875 15.79 15.73 2.17.867 4.83 1.741 7.043 3.09" stroke="#8AB4F8" stroke-opacity=".4" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/></svg> +<svg width="217" height="216" viewBox="0 0 217 216" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M161.781 134.85c0-.526.426-.952.952-.952h13.4c.526 0 .953.426.953.952v9.2c0 2.826-2.327 5.152-5.153 5.152h-5c-2.826 0-5.152-2.326-5.152-5.152v-9.2zm1.905.952v8.248c0 1.774 1.473 3.248 3.247 3.248h5c1.774 0 3.248-1.474 3.248-3.248v-8.248h-11.495z" fill="#669DF6"/><path d="M152.648 103.908a1.001 1.001 0 0 0-1.029-1.715 5.083 5.083 0 0 1-1.976.651c-.413.041-.7.02-.953-.037-.262-.06-.533-.167-.918-.355a.999.999 0 1 0-.878 1.797c.434.212.868.398 1.355.509a4.866 4.866 0 0 0 1.593.076 7.084 7.084 0 0 0 2.806-.926z" fill="#669DF6"/><path fill-rule="evenodd" clip-rule="evenodd" d="M168.543 91.92c-1.182-.15-2.38-.3-3.478-.138-1.157.124-2.314.59-3.443 1.044-.322.13-.642.258-.958.377a11.386 11.386 0 0 1 1.169 5.047 11.32 11.32 0 0 1-2.067 6.554.993.993 0 0 1 .333.345c.382.66.786 1.335 1.197 2.023 5.995.335 12.677.82 18.493 3.043 3.077 1.168 6.609 3.275 11.2 8.581l.005.005.129.151c5.786 6.775 11.429 13.383 15.148 20.101 3.761 6.796 5.617 13.817 3.629 21.351-3.333 12.708-16.261 21.985-31.673 25.027a1 1 0 0 1-1.108-.575c-6.028 1.233-12.105.385-18.172-.462-3.245-.453-6.487-.906-9.717-1.039a1.501 1.501 0 0 1-1.497 1.395h-82.5c-.338 0-.65-.112-.9-.3h-5.24l-4.605-50.444c-.105-.628.418-1.256 1.15-1.256h50.32c5.338-8.673 13.143-16.018 21.825-20.393l.053-.025c-1.405-2.876-2.439-5.881-2.89-8.725l-.003-.016-.001-.01-.003-.021-.006-.06c-.096-.861-.212-1.903.024-2.967.007-.033.017-.067.027-.099.276-.826.814-1.476 1.424-1.965a.997.997 0 0 1 .477-.208c.066-.663.184-1.374.42-2.026.318-.877.891-1.757 1.934-2.204l.023-.01c.42-.168.904-.247 1.391-.194.095-.215.2-.424.317-.621.376-.634.941-1.263 1.776-1.514l.013-.004a3.286 3.286 0 0 1 1.687-.006c.522.135 1.113.428 1.495.978.896-.612 1.862-.69 2.84-.147.47.261.892.644 1.184 1.082l.009.014c.724 1.125.385 2.175.153 2.896l-.023.072c-.234.727-.434 1.347-.286 2.202l.002.007c.195 1.174.776 2.212 1.626 3.171a11.439 11.439 0 0 1-.613-3.707c0-5.581 3.992-10.26 9.226-10.92-.596-.323-1.257-.6-1.923-.88-1.63-.685-3.287-1.381-4.071-2.768-.771-1.305-.557-2.998-.339-4.722.15-1.183.302-2.38.139-3.478-.121-1.094-.571-2.204-1.016-3.303-.655-1.616-1.3-3.21-.884-4.697.425-1.579 1.845-2.678 3.254-3.768.911-.706 1.818-1.407 2.446-2.232.635-.794 1.081-1.856 1.532-2.929.685-1.63 1.381-3.287 2.768-4.071 1.305-.771 2.998-.557 4.722-.339 1.183.15 2.38.302 3.478.139 1.094-.122 2.204-.571 3.303-1.017 1.616-.654 3.21-1.3 4.697-.883 1.579.425 2.678 1.845 3.768 3.254.706.911 1.407 1.817 2.232 2.446.794.635 1.856 1.081 2.929 1.532 1.63.685 3.287 1.38 4.071 2.768.771 1.305.557 2.997.339 4.722-.15 1.182-.302 2.38-.139 3.478.122 1.093.571 2.203 1.017 3.303.654 1.616 1.3 3.21.883 4.697-.425 1.579-1.845 2.678-3.254 3.768-.911.705-1.817 1.407-2.446 2.232-.635.794-1.081 1.855-1.532 2.929-.685 1.63-1.381 3.287-2.768 4.07-1.305.772-2.998.558-4.722.34zm-39.787 22.182c-.023.015-.048.028-.073.041-8.004 4.034-15.245 10.71-20.36 18.607h19.129c2.24-3.754 4.48-7.42 6.717-11.077-1.989-2.143-3.864-4.763-5.413-7.571zm1.607 18.648h-.581c2.1-3.504 4.201-6.939 6.304-10.378.025-.041.047-.084.066-.127a1 1 0 0 0-.004-1.394c-4.374-4.472-8.255-11.477-9.224-17.535-.099-.893-.168-1.607-.026-2.296l.003-.008c.421 5.074 2.68 9.685 5.843 13.752a1 1 0 0 0 1.579-1.228c-3.406-4.378-5.578-9.253-5.49-14.546.049-.77.143-1.495.353-2.075.205-.567.479-.886.83-1.04l.012-.006.011-.004a16.426 16.426 0 0 0-.306 2.858c-.31 6.201 3.415 11.449 5.954 14.293a1 1 0 1 0 1.492-1.332c-2.457-2.752-5.726-7.494-5.447-12.882l.001-.052c0-.444.071-1.735.371-2.962.151-.614.347-1.159.586-1.563.24-.404.461-.564.625-.615.162-.045.401-.051.631.008.313.08.391.307.642.47-.178.267-.334.54-.47.805-.595 1.156-.967 2.472-1.076 3.426-.235 1.57.197 3.522 1.135 5.53.954 2.04 2.475 4.234 4.549 6.308a.999.999 0 1 0 1.414-1.414c-1.926-1.926-3.305-3.932-4.151-5.742-.857-1.833-1.125-3.372-.967-4.399l.002-.013.003-.029c.079-.707.378-1.8.869-2.752.497-.966 1.048-1.52 1.52-1.67a.85.85 0 0 1 .394.124c.202.112.379.277.487.436.167.264.162.46-.078 1.208-.342 1.054-.564 2.1-.372 3.212.475 2.838 2.526 4.87 4.674 6.46 1.04.771 2.152 1.473 3.186 2.126 1.018.643 2.05 1.277 2.996 2.023 2.35 1.96 4.289 4.246 4.638 6.951l.004.026c.447 2.861-.507 5.1-2.017 8.322l-.003.005a179.818 179.818 0 0 0-6.736 16.691.803.803 0 0 0-.033.116c-1.611-.588-3.217-1.182-4.826-1.776l-.003-.001c-2.557-.944-5.119-1.891-7.701-2.818l-.302-3.237c0-.628-.628-1.256-1.361-1.256zm1.868 6.693 2.795 29.932 11.344-24.751c-2.456-.884-4.893-1.785-7.327-2.684h-.002l-.002-.001-.002-.001c-2.267-.837-4.53-1.673-6.806-2.495zm3.166 33.911.216 2.315a3.96 3.96 0 0 1 1.279-1.841c-.357-.478-.519-1.054-.554-1.582-.026-.39.013-.794.114-1.182l-1.01 2.203a.893.893 0 0 1-.045.087zm4.053-8.831c.066-.042.128-.079.184-.113l.019-.012.015-.008c1.472-.805 3.428-1.321 5.458-1.661 8.36-1.396 13.172-.906 19.314-.281 1.251.127 2.557.26 3.96.384l-1.196-3.013a1 1 0 0 1 1.023-1.365c.075-.057.159-.104.251-.139l9.595-3.641c.068-.035.14-.063.215-.082l.318-.121a.905.905 0 0 0 .055-.087c.139-.249.272-.711.272-1.415 0-1.663.022-3.232.426-4.979l.005-.02.005-.02.004-.012c.088-.306.182-.613.277-.922.471-1.535.96-3.13.884-5.026a1 1 0 0 1 1.876-.521.99.99 0 0 1 .311.428c.28.741.56 1.486.84 2.232l.017.044v.001c1.034 2.756 2.076 5.531 3.181 8.247a.998.998 0 0 1-.571 1.312l-6.543 2.483c-.317.127-.563.211-.873.332l-9.312 3.534a6429.06 6429.06 0 0 1 4.55 11.494l.001.001.002.005a547.099 547.099 0 0 0 4.756 11.695c14.556-3.138 26.194-11.932 29.197-23.381v-.001c1.812-6.866.168-13.345-3.445-19.873-3.621-6.542-9.154-13.021-15.008-19.876l-.036-.042-.002-.002c-4.407-5.092-7.674-6.984-10.396-8.017l-.003-.001c-5.08-1.942-10.926-2.499-16.546-2.838.333.57.662 1.145.979 1.722.122.221.156.48.094.724a12.496 12.496 0 0 1-1.28 3.111c-.866 1.487-2.31 3.199-4.596 3.903l-.012.003-.019.006c-.821.224-1.592.3-2.28.294-.203 2.383-1.173 4.509-2.276 6.863l.001-.003-.908-.419.906.424.001-.002a177.715 177.715 0 0 0-6.662 16.506 1.202 1.202 0 0 1-.059.137c.549.199 1.099.396 1.651.593a1.002 1.002 0 0 1 .572 1.359l-9.192 20.056zm-1.603-65.405v-.004l.001.007-.001-.003zm17.476 17.291c-.379-2.908-2.149-5.274-4.144-7.16l.078.001c2.788.021 5.327-1.098 7.21-2.928.407.699.817 1.383 1.226 2.066l.001.002.001.001v.001a120.642 120.642 0 0 1 1.865 3.184 10.818 10.818 0 0 1-.966 2.221c-.733 1.259-1.834 2.493-3.44 2.992a6.354 6.354 0 0 1-1.754.22c-.02-.198-.045-.398-.077-.6zm-19.477 61.755.335 3.586h3.554a3.12 3.12 0 0 1-.495-.764l-.005-.011-.006-.014a4.032 4.032 0 0 1-.318-1.467 5.907 5.907 0 0 1-1.266-.216c-.465-.135-.951-.346-1.35-.66a2.543 2.543 0 0 1-.449-.454zm23.471-83.015-15.535-1.038a9.387 9.387 0 0 0-.949 4.139c0 5.02 3.854 9 8.5 9 4.647 0 8.5-3.98 8.5-9a9.487 9.487 0 0 0-.516-3.101zm21.588 58.45 3.619-1.374a321.712 321.712 0 0 1-2.454-6.378c-.168.663-.357 1.275-.529 1.832l-.001.001c-.085.276-.166.539-.239.787-.342 1.493-.368 2.853-.368 4.502 0 .215-.009.425-.028.63zm-8.745 18.736-.016-.042-.004-.008a8124.44 8124.44 0 0 0-2.913-7.366c-7.658-.771-16.153-1.49-23.772-.217-1.944.325-3.632.793-4.809 1.433-.45.271-1.154.757-1.62 1.611l-.003.007a2.749 2.749 0 0 0-.239.565c.394-.232.797-.42 1.183-.575 3.442-1.459 7.271-2.074 10.968-2.076 3.117-.085 6.167.269 9.183.619.548.063 1.095.127 1.641.187a1 1 0 0 1-.221 1.988c-.565-.063-1.125-.127-1.68-.192-3.023-.35-5.915-.685-8.882-.602h-.028c-3.495 0-7.057.584-10.209 1.921l-.019.008c-.921.368-1.703.87-2.14 1.526-.168.253-.27.632-.246.991.024.362.157.547.269.622l.011.008.013.009c.257-.119.513-.224.765-.319 7.428-2.887 14.524-2.766 22.2-1.655a1 1 0 1 1-.287 1.979c-7.522-1.089-14.224-1.168-21.194 1.542l-.011.005c-.735.275-1.42.624-2.001 1.122-.479.411-.716.997-.657 1.531l.001.003c.01.015.035.044.09.088.133.104.359.219.669.309.449.13.903.163 1.236.138.642-.934 1.787-1.478 2.978-1.812 1.489-.419 3.381-.603 5.439-.641 4.129-.076 9.165.432 13.53 1.035a1 1 0 0 1-.273 1.981c-4.335-.598-9.249-1.09-13.22-1.016-1.992.037-3.687.215-4.936.566-1.033.29-1.576.645-1.83.968a.998.998 0 0 1-.178.392c-.072.354-.05.801.114 1.192.151.318.43.573 1.028.767.639.209 1.532.31 2.744.353.744.027 1.602.03 2.555.034h.007c3.752.015 7.558.549 11.371 1.085 5.907.829 11.83 1.661 17.601.567-1.397-3.518-2.793-7.051-4.189-10.583l-.016-.042-.003-.006zm-34.724 4.613.001.002.001.002.001.002-.003-.006z" fill="#669DF6"/><path d="M44.033 126.25v-3.5c-.1-5.2 4.1-9.5 9.3-9.5 5.2-.1 9.5 4.1 9.5 9.3" stroke="#669DF6" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/><path d="m65.233 165.25-22.6.3c-4.6.1-8.3-3.6-8.4-8.2l-.3-22.6c-.1-4.6 3.6-8.3 8.2-8.4l22.7-.3c4.6-.1 8.3 3.6 8.4 8.2l.3 22.6c0 4.6-3.7 8.3-8.3 8.4z" fill="#323336"/><path d="m65.233 165.25-22.6.3c-4.6.1-8.3-3.6-8.4-8.2l-.3-22.6c-.1-4.6 3.6-8.3 8.2-8.4l22.7-.3c4.6-.1 8.3 3.6 8.4 8.2l.3 22.6c0 4.6-3.7 8.3-8.3 8.4z" fill="#8AB4F8" fill-opacity=".4"/><path d="m44.033 126.25.3 24.6c.1 5.2 4.3 9.4 9.5 9.3 5.2-.1 9.4-4.3 9.3-9.5l-.3-24.6" stroke="#323336" stroke-width="2" stroke-miterlimit="10" stroke-linejoin="round"/><path d="M55.253 144.177a3.7 3.7 0 0 0-1.62-7.027 3.7 3.7 0 0 0-1.514 7.077l-1.186 6.023c-.3 1.1.5 2 1.6 2h2.6c1 0 1.8-1 1.5-2l-1.38-6.073z" fill="#669DF6"/><path d="M52.733 185.75c24.08 0 43.6-19.52 43.6-43.6 0-24.08-19.52-43.6-43.6-43.6-24.08 0-43.6 19.52-43.6 43.6 0 24.08 19.52 43.6 43.6 43.6z" stroke="#FCC934" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/><path d="m73.333 94.35-.8-2.6c0-.1-.2-.3-.3-.3l-2.6-.6c-.1 0-.3 0-.4.1l-1.8 2c-.1.1-.1.3-.1.4l.8 2.6c0 .1.2.3.3.3l2.6.6c.1 0 .3 0 .4-.1l1.8-2c.1-.1.2-.2.1-.4z" fill="#5BB974"/><path d="M37.982 72.756c3.5-1.4 7.4.2 8.9 3.6v.1c1.4 3.5-.2 7.4-3.6 8.9-3.5 1.4-7.4-.2-8.9-3.6v-.1c-1.5-3.5.2-7.5 3.6-8.9z" stroke="#EA4335" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/><path d="M84.99 40.437c-.335.812-.522 1.649-.65 2.444l-.685 2.643c-.57 2.254-1.975 4.015-3.87 5.34-2.586 1.823-5.662 2.905-6.757 6.195-.832 2.619-.235 5.521 1.622 7.557.083.116.174.182.307.305 3.423 3.362 8.97 2.733 11.731-1.103.789-1.096 1.395-2.324 2.101-3.535a9.198 9.198 0 0 1 5.534-4.304l2.615-.748a9.614 9.614 0 0 0 2.45-.673 10.615 10.615 0 0 0 4.398-3.264c3.42-4.137 3.298-10.277-.276-14.275-4.263-4.773-11.564-4.94-16.007-.459-1.176 1.289-1.989 2.534-2.512 3.877z" stroke="#1A73E8" stroke-opacity=".4" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/><path d="M84.938 71.58c1.278-7.867-4.063-15.28-11.93-16.559-7.867-1.278-15.28 4.063-16.558 11.93-1.278 7.866 4.063 15.28 11.93 16.558 7.866 1.278 15.28-4.063 16.558-11.93z" fill="#5F6368"/><path d="M71.928 56.816c-.936 2.942-.274 6.21 1.817 8.52.133.168.3.313.368.373l.02.017c3.029 2.956 7.49 3.171 10.788 1.1a14.35 14.35 0 0 0-.517-2.074c-2.6 2.01-6.395 1.971-8.883-.467a1.162 1.162 0 0 0-.012-.01l-.007-.008a6.175 6.175 0 0 0-.11-.099 3.41 3.41 0 0 1-.063-.057l-.011-.01a1.002 1.002 0 0 0-.067-.082c-1.617-1.768-2.146-4.299-1.42-6.59a5.596 5.596 0 0 1 1.127-1.952 14.562 14.562 0 0 0-2.144-.486 7.547 7.547 0 0 0-.882 1.812l-.004.013z" fill="#323336"/><path d="M27.715 47.798c1.8-1.1 4.2-.5 5.2 1.4l4.6 7.7c1.1 1.8.5 4.2-1.4 5.2-1.8 1.1-4.2.5-5.2-1.4l-4.6-7.7c-1-1.8-.4-4.1 1.4-5.2z" fill="#1A73E8" fill-opacity=".4"/><path d="M7.429 72.075c2.674 7.448 8.562 12.875 15.79 15.73 2.17.867 4.83 1.741 7.043 3.09" stroke="#8AB4F8" stroke-opacity=".4" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/chromeos/images/switch_access_setup_guide_assign_next.svg b/chrome/browser/resources/settings/chromeos/images/switch_access_setup_guide_assign_next.svg index 5da4a79..d0f4f27d 100644 --- a/chrome/browser/resources/settings/chromeos/images/switch_access_setup_guide_assign_next.svg +++ b/chrome/browser/resources/settings/chromeos/images/switch_access_setup_guide_assign_next.svg
@@ -1 +1 @@ -<svg width="216" height="216" viewBox="0 0 216 216" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M137.85 46.05a6.1 6.1 0 0 1 1 8.4l-8.6 11a5.796 5.796 0 0 1-3.937 2.266 5.802 5.802 0 0 1-4.363-1.266 5.893 5.893 0 0 1-2.126-6.228 5.904 5.904 0 0 1 1.026-2.072l8.6-11a6 6 0 0 1 8.4-1.1z" fill="#FBBC04"/><path d="M60.85 67.95c4.5 2.5 9.3 6.3 10.6 11.8 1.9 8-4.8 13.5-2.8 21.2.9 3.5 3.6 7.7 11.3 11.6" stroke="#D2E3FC" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"/><path d="M93.072 73.505l-5.764 10.979a2.8 2.8 0 0 0 1.178 3.78L99.58 94.09a2.8 2.8 0 0 0 3.78-1.178l5.764-10.979a2.8 2.8 0 0 0-1.177-3.78l-11.094-5.825a2.8 2.8 0 0 0-3.78 1.178z" fill="#D2E3FC"/><path d="M105.35 45.95a8 8 0 1 0 0-16 8 8 0 0 0 0 16z" fill="#EE5FFA"/><path d="M131.083 100.235v-9.8a.7.7 0 0 0-1-.6l-8.5 4.9a.694.694 0 0 0-.34.6.695.695 0 0 0 .34.6l8.5 4.9a.597.597 0 0 0 .735.093.597.597 0 0 0 .265-.693z" fill="#34A853"/><path d="M123.1 163.65H92.7a3.6 3.6 0 0 0-3.6 3.6v10.11a3.6 3.6 0 0 0 3.6 3.6h30.4a3.6 3.6 0 0 0 3.6-3.6v-10.11a3.6 3.6 0 0 0-3.6-3.6z" fill="#8AB4F8"/><path d="M129.4 183.95H86.6c-2.3 0-4.1-1.4-4.1-3.1v-8.6c0-1.7 1.8-3.1 4.1-3.1s3.3 1 5.2 1.4c14.8 3.2 28.5 1 37.6-1.4a4.907 4.907 0 0 1 2.9.9 2.904 2.904 0 0 1 1.2 2.2v8.6c0 1.7-1.9 3.1-4.1 3.1z" fill="#fff"/><path d="M129.4 183.95H86.6c-2.3 0-4.1-1.4-4.1-3.1v-8.6c0-1.7 1.8-3.1 4.1-3.1s3.3 1 5.2 1.4c14.8 3.2 28.5 1 37.6-1.4a4.907 4.907 0 0 1 2.9.9 2.904 2.904 0 0 1 1.2 2.2v8.6c0 1.7-1.9 3.1-4.1 3.1z" fill="#D2E3FC"/><path fill-rule="evenodd" clip-rule="evenodd" d="M134.5 177.73v-5.506l-.001-.026a3.909 3.909 0 0 0-1.614-2.959l-.007-.005a5.905 5.905 0 0 0-3.492-1.084l-.123.002-.118.031c-9.017 2.378-22.545 4.544-37.134 1.39l-.005-.001c-.64-.135-1.136-.337-1.712-.571a32.296 32.296 0 0 0-.583-.233c-.841-.326-1.794-.618-3.111-.618-2.584 0-5.1 1.613-5.1 4.1v5.48h-2.15v7.07h-31.8a1.25 1.25 0 0 0 0 2.5h120.9a1.25 1.25 0 0 0 0-2.5h-31.8v-7.07h-2.15zm-4.971-7.58c-9.183 2.409-22.995 4.608-37.938 1.378-.832-.175-1.54-.465-2.142-.711-.161-.065-.314-.128-.46-.184-.709-.275-1.406-.483-2.389-.483-2.016 0-3.1 1.187-3.1 2.1v5.48h49v-5.451a1.903 1.903 0 0 0-.781-1.415 3.897 3.897 0 0 0-2.19-.714z" fill="#4285F4"/><rect x="89.824" y="112.55" width="36.353" height="36.353" rx="8" fill="#D2E3FC"/><path d="M111.682 122.64a1.94 1.94 0 0 0-2.771 2.717l3.424 3.494H99.299a1.94 1.94 0 1 0 0 3.881h12.643c-1.052 1.132-2.094 2.269-3.131 3.4l-.01.011a1.941 1.941 0 0 0 2.861 2.623c2.138-2.333 4.254-4.641 6.431-6.881a1.941 1.941 0 0 0-.006-2.711l-6.405-6.534z" fill="#4285F4"/></svg> +<svg width="216" height="216" viewBox="0 0 216 216" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M137.85 46.05a6.1 6.1 0 0 1 1 8.4l-8.6 11a5.796 5.796 0 0 1-3.937 2.266 5.802 5.802 0 0 1-4.363-1.266 5.893 5.893 0 0 1-2.126-6.228 5.904 5.904 0 0 1 1.026-2.072l8.6-11a6 6 0 0 1 8.4-1.1z" fill="#FBBC04"/><path d="M60.85 67.95c4.5 2.5 9.3 6.3 10.6 11.8 1.9 8-4.8 13.5-2.8 21.2.9 3.5 3.6 7.7 11.3 11.6" stroke="#D2E3FC" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"/><path d="m93.072 73.505-5.764 10.979a2.8 2.8 0 0 0 1.178 3.78L99.58 94.09a2.8 2.8 0 0 0 3.78-1.178l5.764-10.979a2.8 2.8 0 0 0-1.177-3.78l-11.094-5.825a2.8 2.8 0 0 0-3.78 1.178z" fill="#D2E3FC"/><path d="M105.35 45.95a8 8 0 1 0 0-16 8 8 0 0 0 0 16z" fill="#EE5FFA"/><path d="M131.083 100.235v-9.8a.7.7 0 0 0-1-.6l-8.5 4.9a.694.694 0 0 0-.34.6.695.695 0 0 0 .34.6l8.5 4.9a.597.597 0 0 0 .735.093.597.597 0 0 0 .265-.693z" fill="#34A853"/><path d="M123.1 163.65H92.7a3.6 3.6 0 0 0-3.6 3.6v10.11a3.6 3.6 0 0 0 3.6 3.6h30.4a3.6 3.6 0 0 0 3.6-3.6v-10.11a3.6 3.6 0 0 0-3.6-3.6z" fill="#8AB4F8"/><path d="M129.4 183.95H86.6c-2.3 0-4.1-1.4-4.1-3.1v-8.6c0-1.7 1.8-3.1 4.1-3.1s3.3 1 5.2 1.4c14.8 3.2 28.5 1 37.6-1.4a4.907 4.907 0 0 1 2.9.9 2.904 2.904 0 0 1 1.2 2.2v8.6c0 1.7-1.9 3.1-4.1 3.1z" fill="#fff"/><path d="M129.4 183.95H86.6c-2.3 0-4.1-1.4-4.1-3.1v-8.6c0-1.7 1.8-3.1 4.1-3.1s3.3 1 5.2 1.4c14.8 3.2 28.5 1 37.6-1.4a4.907 4.907 0 0 1 2.9.9 2.904 2.904 0 0 1 1.2 2.2v8.6c0 1.7-1.9 3.1-4.1 3.1z" fill="#D2E3FC"/><path fill-rule="evenodd" clip-rule="evenodd" d="M134.5 177.73v-5.506l-.001-.026a3.909 3.909 0 0 0-1.614-2.959l-.007-.005a5.905 5.905 0 0 0-3.492-1.084l-.123.002-.118.031c-9.017 2.378-22.545 4.544-37.134 1.39l-.005-.001c-.64-.135-1.136-.337-1.712-.571a32.296 32.296 0 0 0-.583-.233c-.841-.326-1.794-.618-3.111-.618-2.584 0-5.1 1.613-5.1 4.1v5.48h-2.15v7.07h-31.8a1.25 1.25 0 0 0 0 2.5h120.9a1.25 1.25 0 0 0 0-2.5h-31.8v-7.07h-2.15zm-4.971-7.58c-9.183 2.409-22.995 4.608-37.938 1.378-.832-.175-1.54-.465-2.142-.711-.161-.065-.314-.128-.46-.184-.709-.275-1.406-.483-2.389-.483-2.016 0-3.1 1.187-3.1 2.1v5.48h49v-5.451a1.903 1.903 0 0 0-.781-1.415 3.897 3.897 0 0 0-2.19-.714z" fill="#4285F4"/><rect x="89.824" y="112.55" width="36.353" height="36.353" rx="8" fill="#D2E3FC"/><path d="M111.682 122.64a1.94 1.94 0 0 0-2.771 2.717l3.424 3.494H99.299a1.94 1.94 0 1 0 0 3.881h12.643c-1.052 1.132-2.094 2.269-3.131 3.4l-.01.011a1.941 1.941 0 0 0 2.861 2.623c2.138-2.333 4.254-4.641 6.431-6.881a1.941 1.941 0 0 0-.006-2.711l-6.405-6.534z" fill="#4285F4"/></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/chromeos/images/switch_access_setup_guide_assign_next_dark.svg b/chrome/browser/resources/settings/chromeos/images/switch_access_setup_guide_assign_next_dark.svg index 0c8f1a4..6af0085 100644 --- a/chrome/browser/resources/settings/chromeos/images/switch_access_setup_guide_assign_next_dark.svg +++ b/chrome/browser/resources/settings/chromeos/images/switch_access_setup_guide_assign_next_dark.svg
@@ -1 +1 @@ -<svg width="216" height="216" viewBox="0 0 216 216" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M137.85 46.05a6.1 6.1 0 0 1 1 8.4l-8.6 11a5.796 5.796 0 0 1-3.937 2.266 5.802 5.802 0 0 1-4.363-1.266 5.893 5.893 0 0 1-2.126-6.228 5.904 5.904 0 0 1 1.026-2.072l8.6-11a6 6 0 0 1 8.4-1.1z" fill="#FCC934"/><path d="M60.85 67.95c4.5 2.5 9.3 6.3 10.6 11.8 1.9 8-4.8 13.5-2.8 21.2.9 3.5 3.6 7.7 11.3 11.6" stroke="#8AB4F8" stroke-opacity=".4" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"/><path d="M93.072 73.505l-5.764 10.979a2.8 2.8 0 0 0 1.178 3.78L99.58 94.09a2.8 2.8 0 0 0 3.78-1.178l5.764-10.979a2.8 2.8 0 0 0-1.177-3.78l-11.094-5.825a2.8 2.8 0 0 0-3.78 1.178z" fill="#8AB4F8" fill-opacity=".4"/><path d="M105.35 45.95a8 8 0 1 0 0-16 8 8 0 0 0 0 16z" fill="#F882FE"/><path d="M123.1 163.65H92.7a3.6 3.6 0 0 0-3.6 3.6v10.11a3.6 3.6 0 0 0 3.6 3.6h30.4a3.6 3.6 0 0 0 3.6-3.6v-10.11a3.6 3.6 0 0 0-3.6-3.6z" fill="#1A73E8" fill-opacity=".4"/><path d="M129.4 183.95H86.6c-2.3 0-4.1-1.4-4.1-3.1v-8.6c0-1.7 1.8-3.1 4.1-3.1s3.3 1 5.2 1.4c14.8 3.2 28.5 1 37.6-1.4a4.907 4.907 0 0 1 2.9.9 2.904 2.904 0 0 1 1.2 2.2v8.6c0 1.7-1.9 3.1-4.1 3.1z" fill="#323336"/><path d="M129.4 183.95H86.6c-2.3 0-4.1-1.4-4.1-3.1v-8.6c0-1.7 1.8-3.1 4.1-3.1s3.3 1 5.2 1.4c14.8 3.2 28.5 1 37.6-1.4a4.907 4.907 0 0 1 2.9.9 2.904 2.904 0 0 1 1.2 2.2v8.6c0 1.7-1.9 3.1-4.1 3.1z" fill="#8AB4F8" fill-opacity=".4"/><path fill-rule="evenodd" clip-rule="evenodd" d="M134.5 177.73v-5.506l-.001-.026a3.909 3.909 0 0 0-1.614-2.959l-.007-.005a5.905 5.905 0 0 0-3.492-1.084l-.123.002-.118.031c-9.017 2.378-22.545 4.544-37.134 1.39l-.005-.001c-.64-.135-1.136-.337-1.712-.571a32.296 32.296 0 0 0-.583-.233c-.841-.326-1.794-.618-3.111-.618-2.584 0-5.1 1.613-5.1 4.1v5.48h-2.15v7.07h-31.8a1.25 1.25 0 0 0 0 2.5h120.9a1.25 1.25 0 0 0 0-2.5h-31.8v-7.07h-2.15zm-4.971-7.58c-9.183 2.409-22.995 4.608-37.938 1.378-.832-.175-1.54-.465-2.142-.711-.161-.065-.314-.128-.46-.184-.709-.275-1.406-.483-2.389-.483-2.016 0-3.1 1.187-3.1 2.1v5.48h49v-5.451a1.903 1.903 0 0 0-.781-1.415 3.897 3.897 0 0 0-2.19-.714z" fill="#669DF6"/><path d="M131.083 100.235v-9.8a.7.7 0 0 0-1-.6l-8.5 4.9a.694.694 0 0 0-.34.6.695.695 0 0 0 .34.6l8.5 4.9a.597.597 0 0 0 .735.093.597.597 0 0 0 .265-.693z" fill="#5BB974"/><rect x="89.824" y="112.55" width="36.353" height="36.353" rx="8" fill="#8AB4F8" fill-opacity=".4"/><path d="M111.682 122.64a1.94 1.94 0 0 0-2.771 2.717l3.424 3.494H99.299a1.94 1.94 0 1 0 0 3.881h12.643c-1.052 1.132-2.094 2.269-3.131 3.4l-.01.011a1.941 1.941 0 0 0 2.861 2.623c2.138-2.333 4.254-4.641 6.431-6.881a1.941 1.941 0 0 0-.006-2.711l-6.405-6.534z" fill="#669DF6"/></svg> +<svg width="216" height="216" viewBox="0 0 216 216" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M137.85 46.05a6.1 6.1 0 0 1 1 8.4l-8.6 11a5.796 5.796 0 0 1-3.937 2.266 5.802 5.802 0 0 1-4.363-1.266 5.893 5.893 0 0 1-2.126-6.228 5.904 5.904 0 0 1 1.026-2.072l8.6-11a6 6 0 0 1 8.4-1.1z" fill="#FCC934"/><path d="M60.85 67.95c4.5 2.5 9.3 6.3 10.6 11.8 1.9 8-4.8 13.5-2.8 21.2.9 3.5 3.6 7.7 11.3 11.6" stroke="#8AB4F8" stroke-opacity=".4" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"/><path d="m93.072 73.505-5.764 10.979a2.8 2.8 0 0 0 1.178 3.78L99.58 94.09a2.8 2.8 0 0 0 3.78-1.178l5.764-10.979a2.8 2.8 0 0 0-1.177-3.78l-11.094-5.825a2.8 2.8 0 0 0-3.78 1.178z" fill="#8AB4F8" fill-opacity=".4"/><path d="M105.35 45.95a8 8 0 1 0 0-16 8 8 0 0 0 0 16z" fill="#F882FE"/><path d="M123.1 163.65H92.7a3.6 3.6 0 0 0-3.6 3.6v10.11a3.6 3.6 0 0 0 3.6 3.6h30.4a3.6 3.6 0 0 0 3.6-3.6v-10.11a3.6 3.6 0 0 0-3.6-3.6z" fill="#1A73E8" fill-opacity=".4"/><path d="M129.4 183.95H86.6c-2.3 0-4.1-1.4-4.1-3.1v-8.6c0-1.7 1.8-3.1 4.1-3.1s3.3 1 5.2 1.4c14.8 3.2 28.5 1 37.6-1.4a4.907 4.907 0 0 1 2.9.9 2.904 2.904 0 0 1 1.2 2.2v8.6c0 1.7-1.9 3.1-4.1 3.1z" fill="#323336"/><path d="M129.4 183.95H86.6c-2.3 0-4.1-1.4-4.1-3.1v-8.6c0-1.7 1.8-3.1 4.1-3.1s3.3 1 5.2 1.4c14.8 3.2 28.5 1 37.6-1.4a4.907 4.907 0 0 1 2.9.9 2.904 2.904 0 0 1 1.2 2.2v8.6c0 1.7-1.9 3.1-4.1 3.1z" fill="#8AB4F8" fill-opacity=".4"/><path fill-rule="evenodd" clip-rule="evenodd" d="M134.5 177.73v-5.506l-.001-.026a3.909 3.909 0 0 0-1.614-2.959l-.007-.005a5.905 5.905 0 0 0-3.492-1.084l-.123.002-.118.031c-9.017 2.378-22.545 4.544-37.134 1.39l-.005-.001c-.64-.135-1.136-.337-1.712-.571a32.296 32.296 0 0 0-.583-.233c-.841-.326-1.794-.618-3.111-.618-2.584 0-5.1 1.613-5.1 4.1v5.48h-2.15v7.07h-31.8a1.25 1.25 0 0 0 0 2.5h120.9a1.25 1.25 0 0 0 0-2.5h-31.8v-7.07h-2.15zm-4.971-7.58c-9.183 2.409-22.995 4.608-37.938 1.378-.832-.175-1.54-.465-2.142-.711-.161-.065-.314-.128-.46-.184-.709-.275-1.406-.483-2.389-.483-2.016 0-3.1 1.187-3.1 2.1v5.48h49v-5.451a1.903 1.903 0 0 0-.781-1.415 3.897 3.897 0 0 0-2.19-.714z" fill="#669DF6"/><path d="M131.083 100.235v-9.8a.7.7 0 0 0-1-.6l-8.5 4.9a.694.694 0 0 0-.34.6.695.695 0 0 0 .34.6l8.5 4.9a.597.597 0 0 0 .735.093.597.597 0 0 0 .265-.693z" fill="#5BB974"/><rect x="89.824" y="112.55" width="36.353" height="36.353" rx="8" fill="#8AB4F8" fill-opacity=".4"/><path d="M111.682 122.64a1.94 1.94 0 0 0-2.771 2.717l3.424 3.494H99.299a1.94 1.94 0 1 0 0 3.881h12.643c-1.052 1.132-2.094 2.269-3.131 3.4l-.01.011a1.941 1.941 0 0 0 2.861 2.623c2.138-2.333 4.254-4.641 6.431-6.881a1.941 1.941 0 0 0-.006-2.711l-6.405-6.534z" fill="#669DF6"/></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/chromeos/images/switch_access_setup_guide_assign_previous.svg b/chrome/browser/resources/settings/chromeos/images/switch_access_setup_guide_assign_previous.svg index c572c60..a8c9909 100644 --- a/chrome/browser/resources/settings/chromeos/images/switch_access_setup_guide_assign_previous.svg +++ b/chrome/browser/resources/settings/chromeos/images/switch_access_setup_guide_assign_previous.svg
@@ -1 +1 @@ -<svg width="216" height="216" viewBox="0 0 216 216" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M137.85 46.05a6.1 6.1 0 0 1 1 8.4l-8.6 11a5.796 5.796 0 0 1-3.937 2.266 5.802 5.802 0 0 1-4.363-1.266 5.893 5.893 0 0 1-2.126-6.228 5.904 5.904 0 0 1 1.026-2.072l8.6-11a6 6 0 0 1 8.4-1.1z" fill="#FBBC04"/><path d="M60.85 67.95c4.5 2.5 9.3 6.3 10.6 11.8 1.9 8-4.8 13.5-2.8 21.2.9 3.5 3.6 7.7 11.3 11.6" stroke="#D2E3FC" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"/><path d="M93.072 73.505l-5.764 10.979a2.8 2.8 0 0 0 1.178 3.78L99.58 94.09a2.8 2.8 0 0 0 3.78-1.178l5.764-10.979a2.8 2.8 0 0 0-1.177-3.78l-11.094-5.825a2.8 2.8 0 0 0-3.78 1.178z" fill="#D2E3FC"/><path d="M105.35 45.95a8 8 0 1 0 0-16 8 8 0 0 0 0 16z" fill="#EE5FFA"/><path d="M131.083 100.235v-9.8a.7.7 0 0 0-1-.6l-8.5 4.9a.694.694 0 0 0-.34.6.695.695 0 0 0 .34.6l8.5 4.9a.597.597 0 0 0 .735.093.597.597 0 0 0 .265-.693z" fill="#34A853"/><path d="M123.1 163.65H92.7a3.6 3.6 0 0 0-3.6 3.6v10.11a3.6 3.6 0 0 0 3.6 3.6h30.4a3.6 3.6 0 0 0 3.6-3.6v-10.11a3.6 3.6 0 0 0-3.6-3.6z" fill="#8AB4F8"/><path d="M129.4 183.95H86.6c-2.3 0-4.1-1.4-4.1-3.1v-8.6c0-1.7 1.8-3.1 4.1-3.1s3.3 1 5.2 1.4c14.8 3.2 28.5 1 37.6-1.4a4.907 4.907 0 0 1 2.9.9 2.904 2.904 0 0 1 1.2 2.2v8.6c0 1.7-1.9 3.1-4.1 3.1z" fill="#fff"/><path d="M129.4 183.95H86.6c-2.3 0-4.1-1.4-4.1-3.1v-8.6c0-1.7 1.8-3.1 4.1-3.1s3.3 1 5.2 1.4c14.8 3.2 28.5 1 37.6-1.4a4.907 4.907 0 0 1 2.9.9 2.904 2.904 0 0 1 1.2 2.2v8.6c0 1.7-1.9 3.1-4.1 3.1z" fill="#D2E3FC"/><path fill-rule="evenodd" clip-rule="evenodd" d="M134.5 177.73v-5.506l-.001-.026a3.909 3.909 0 0 0-1.614-2.959l-.007-.005a5.905 5.905 0 0 0-3.492-1.084l-.123.002-.118.031c-9.017 2.378-22.545 4.544-37.134 1.39l-.005-.001c-.64-.135-1.136-.337-1.712-.571a32.296 32.296 0 0 0-.583-.233c-.841-.326-1.794-.618-3.111-.618-2.584 0-5.1 1.613-5.1 4.1v5.48h-2.15v7.07h-31.8a1.25 1.25 0 0 0 0 2.5h120.9a1.25 1.25 0 0 0 0-2.5h-31.8v-7.07h-2.15zm-4.971-7.58c-9.183 2.409-22.995 4.608-37.938 1.378-.832-.175-1.54-.465-2.142-.711-.161-.065-.314-.128-.46-.184-.709-.275-1.406-.483-2.389-.483-2.016 0-3.1 1.187-3.1 2.1v5.48h49v-5.451a1.903 1.903 0 0 0-.781-1.415 3.897 3.897 0 0 0-2.19-.714z" fill="#4285F4"/><rect x="89.824" y="112.55" width="36.353" height="36.353" rx="8" fill="#D2E3FC"/><path d="M104.317 122.64a1.94 1.94 0 1 1 2.772 2.717l-3.424 3.494h13.036a1.94 1.94 0 1 1 0 3.881h-12.643c1.052 1.132 2.094 2.269 3.131 3.4l.01.011a1.94 1.94 0 0 1-2.861 2.623c-2.138-2.333-4.254-4.641-6.43-6.881a1.941 1.941 0 0 1 .005-2.711l6.404-6.534z" fill="#4285F4"/></svg> +<svg width="216" height="216" viewBox="0 0 216 216" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M137.85 46.05a6.1 6.1 0 0 1 1 8.4l-8.6 11a5.796 5.796 0 0 1-3.937 2.266 5.802 5.802 0 0 1-4.363-1.266 5.893 5.893 0 0 1-2.126-6.228 5.904 5.904 0 0 1 1.026-2.072l8.6-11a6 6 0 0 1 8.4-1.1z" fill="#FBBC04"/><path d="M60.85 67.95c4.5 2.5 9.3 6.3 10.6 11.8 1.9 8-4.8 13.5-2.8 21.2.9 3.5 3.6 7.7 11.3 11.6" stroke="#D2E3FC" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"/><path d="m93.072 73.505-5.764 10.979a2.8 2.8 0 0 0 1.178 3.78L99.58 94.09a2.8 2.8 0 0 0 3.78-1.178l5.764-10.979a2.8 2.8 0 0 0-1.177-3.78l-11.094-5.825a2.8 2.8 0 0 0-3.78 1.178z" fill="#D2E3FC"/><path d="M105.35 45.95a8 8 0 1 0 0-16 8 8 0 0 0 0 16z" fill="#EE5FFA"/><path d="M131.083 100.235v-9.8a.7.7 0 0 0-1-.6l-8.5 4.9a.694.694 0 0 0-.34.6.695.695 0 0 0 .34.6l8.5 4.9a.597.597 0 0 0 .735.093.597.597 0 0 0 .265-.693z" fill="#34A853"/><path d="M123.1 163.65H92.7a3.6 3.6 0 0 0-3.6 3.6v10.11a3.6 3.6 0 0 0 3.6 3.6h30.4a3.6 3.6 0 0 0 3.6-3.6v-10.11a3.6 3.6 0 0 0-3.6-3.6z" fill="#8AB4F8"/><path d="M129.4 183.95H86.6c-2.3 0-4.1-1.4-4.1-3.1v-8.6c0-1.7 1.8-3.1 4.1-3.1s3.3 1 5.2 1.4c14.8 3.2 28.5 1 37.6-1.4a4.907 4.907 0 0 1 2.9.9 2.904 2.904 0 0 1 1.2 2.2v8.6c0 1.7-1.9 3.1-4.1 3.1z" fill="#fff"/><path d="M129.4 183.95H86.6c-2.3 0-4.1-1.4-4.1-3.1v-8.6c0-1.7 1.8-3.1 4.1-3.1s3.3 1 5.2 1.4c14.8 3.2 28.5 1 37.6-1.4a4.907 4.907 0 0 1 2.9.9 2.904 2.904 0 0 1 1.2 2.2v8.6c0 1.7-1.9 3.1-4.1 3.1z" fill="#D2E3FC"/><path fill-rule="evenodd" clip-rule="evenodd" d="M134.5 177.73v-5.506l-.001-.026a3.909 3.909 0 0 0-1.614-2.959l-.007-.005a5.905 5.905 0 0 0-3.492-1.084l-.123.002-.118.031c-9.017 2.378-22.545 4.544-37.134 1.39l-.005-.001c-.64-.135-1.136-.337-1.712-.571a32.296 32.296 0 0 0-.583-.233c-.841-.326-1.794-.618-3.111-.618-2.584 0-5.1 1.613-5.1 4.1v5.48h-2.15v7.07h-31.8a1.25 1.25 0 0 0 0 2.5h120.9a1.25 1.25 0 0 0 0-2.5h-31.8v-7.07h-2.15zm-4.971-7.58c-9.183 2.409-22.995 4.608-37.938 1.378-.832-.175-1.54-.465-2.142-.711-.161-.065-.314-.128-.46-.184-.709-.275-1.406-.483-2.389-.483-2.016 0-3.1 1.187-3.1 2.1v5.48h49v-5.451a1.903 1.903 0 0 0-.781-1.415 3.897 3.897 0 0 0-2.19-.714z" fill="#4285F4"/><rect x="89.824" y="112.55" width="36.353" height="36.353" rx="8" fill="#D2E3FC"/><path d="M104.317 122.64a1.94 1.94 0 1 1 2.772 2.717l-3.424 3.494h13.036a1.94 1.94 0 1 1 0 3.881h-12.643c1.052 1.132 2.094 2.269 3.131 3.4l.01.011a1.94 1.94 0 0 1-2.861 2.623c-2.138-2.333-4.254-4.641-6.43-6.881a1.941 1.941 0 0 1 .005-2.711l6.404-6.534z" fill="#4285F4"/></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/chromeos/images/switch_access_setup_guide_assign_previous_dark.svg b/chrome/browser/resources/settings/chromeos/images/switch_access_setup_guide_assign_previous_dark.svg index 2a0f126..dafa8ad 100644 --- a/chrome/browser/resources/settings/chromeos/images/switch_access_setup_guide_assign_previous_dark.svg +++ b/chrome/browser/resources/settings/chromeos/images/switch_access_setup_guide_assign_previous_dark.svg
@@ -1 +1 @@ -<svg width="216" height="216" viewBox="0 0 216 216" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M137.85 46.05a6.1 6.1 0 0 1 1 8.4l-8.6 11a5.796 5.796 0 0 1-3.937 2.266 5.802 5.802 0 0 1-4.363-1.266 5.893 5.893 0 0 1-2.126-6.228 5.904 5.904 0 0 1 1.026-2.072l8.6-11a6 6 0 0 1 8.4-1.1z" fill="#FCC934"/><path d="M60.85 67.95c4.5 2.5 9.3 6.3 10.6 11.8 1.9 8-4.8 13.5-2.8 21.2.9 3.5 3.6 7.7 11.3 11.6" stroke="#8AB4F8" stroke-opacity=".4" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"/><path d="M93.072 73.505l-5.764 10.979a2.8 2.8 0 0 0 1.178 3.78L99.58 94.09a2.8 2.8 0 0 0 3.78-1.178l5.764-10.979a2.8 2.8 0 0 0-1.177-3.78l-11.094-5.825a2.8 2.8 0 0 0-3.78 1.178z" fill="#8AB4F8" fill-opacity=".4"/><path d="M105.35 45.95a8 8 0 1 0 0-16 8 8 0 0 0 0 16z" fill="#F882FE"/><path d="M123.1 163.65H92.7a3.6 3.6 0 0 0-3.6 3.6v10.11a3.6 3.6 0 0 0 3.6 3.6h30.4a3.6 3.6 0 0 0 3.6-3.6v-10.11a3.6 3.6 0 0 0-3.6-3.6z" fill="#1A73E8" fill-opacity=".4"/><path d="M129.4 183.95H86.6c-2.3 0-4.1-1.4-4.1-3.1v-8.6c0-1.7 1.8-3.1 4.1-3.1s3.3 1 5.2 1.4c14.8 3.2 28.5 1 37.6-1.4a4.907 4.907 0 0 1 2.9.9 2.904 2.904 0 0 1 1.2 2.2v8.6c0 1.7-1.9 3.1-4.1 3.1z" fill="#323336"/><path d="M129.4 183.95H86.6c-2.3 0-4.1-1.4-4.1-3.1v-8.6c0-1.7 1.8-3.1 4.1-3.1s3.3 1 5.2 1.4c14.8 3.2 28.5 1 37.6-1.4a4.907 4.907 0 0 1 2.9.9 2.904 2.904 0 0 1 1.2 2.2v8.6c0 1.7-1.9 3.1-4.1 3.1z" fill="#8AB4F8" fill-opacity=".4"/><path fill-rule="evenodd" clip-rule="evenodd" d="M134.5 177.73v-5.506l-.001-.026a3.909 3.909 0 0 0-1.614-2.959l-.007-.005a5.905 5.905 0 0 0-3.492-1.084l-.123.002-.118.031c-9.017 2.378-22.545 4.544-37.134 1.39l-.005-.001c-.64-.135-1.136-.337-1.712-.571a32.296 32.296 0 0 0-.583-.233c-.841-.326-1.794-.618-3.111-.618-2.584 0-5.1 1.613-5.1 4.1v5.48h-2.15v7.07h-31.8a1.25 1.25 0 0 0 0 2.5h120.9a1.25 1.25 0 0 0 0-2.5h-31.8v-7.07h-2.15zm-4.971-7.58c-9.183 2.409-22.995 4.608-37.938 1.378-.832-.175-1.54-.465-2.142-.711-.161-.065-.314-.128-.46-.184-.709-.275-1.406-.483-2.389-.483-2.016 0-3.1 1.187-3.1 2.1v5.48h49v-5.451a1.903 1.903 0 0 0-.781-1.415 3.897 3.897 0 0 0-2.19-.714z" fill="#669DF6"/><path d="M131.083 100.235v-9.8a.7.7 0 0 0-1-.6l-8.5 4.9a.694.694 0 0 0-.34.6.695.695 0 0 0 .34.6l8.5 4.9a.597.597 0 0 0 .735.093.597.597 0 0 0 .265-.693z" fill="#5BB974"/><rect x="89.824" y="112.55" width="36.353" height="36.353" rx="8" fill="#8AB4F8" fill-opacity=".4"/><path d="M104.317 122.64a1.94 1.94 0 1 1 2.772 2.717l-3.424 3.494h13.036a1.94 1.94 0 1 1 0 3.881h-12.643c1.052 1.132 2.094 2.269 3.131 3.4l.01.011a1.94 1.94 0 0 1-2.861 2.623c-2.138-2.333-4.254-4.641-6.43-6.881a1.941 1.941 0 0 1 .005-2.711l6.404-6.534z" fill="#669DF6"/></svg> +<svg width="216" height="216" viewBox="0 0 216 216" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M137.85 46.05a6.1 6.1 0 0 1 1 8.4l-8.6 11a5.796 5.796 0 0 1-3.937 2.266 5.802 5.802 0 0 1-4.363-1.266 5.893 5.893 0 0 1-2.126-6.228 5.904 5.904 0 0 1 1.026-2.072l8.6-11a6 6 0 0 1 8.4-1.1z" fill="#FCC934"/><path d="M60.85 67.95c4.5 2.5 9.3 6.3 10.6 11.8 1.9 8-4.8 13.5-2.8 21.2.9 3.5 3.6 7.7 11.3 11.6" stroke="#8AB4F8" stroke-opacity=".4" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"/><path d="m93.072 73.505-5.764 10.979a2.8 2.8 0 0 0 1.178 3.78L99.58 94.09a2.8 2.8 0 0 0 3.78-1.178l5.764-10.979a2.8 2.8 0 0 0-1.177-3.78l-11.094-5.825a2.8 2.8 0 0 0-3.78 1.178z" fill="#8AB4F8" fill-opacity=".4"/><path d="M105.35 45.95a8 8 0 1 0 0-16 8 8 0 0 0 0 16z" fill="#F882FE"/><path d="M123.1 163.65H92.7a3.6 3.6 0 0 0-3.6 3.6v10.11a3.6 3.6 0 0 0 3.6 3.6h30.4a3.6 3.6 0 0 0 3.6-3.6v-10.11a3.6 3.6 0 0 0-3.6-3.6z" fill="#1A73E8" fill-opacity=".4"/><path d="M129.4 183.95H86.6c-2.3 0-4.1-1.4-4.1-3.1v-8.6c0-1.7 1.8-3.1 4.1-3.1s3.3 1 5.2 1.4c14.8 3.2 28.5 1 37.6-1.4a4.907 4.907 0 0 1 2.9.9 2.904 2.904 0 0 1 1.2 2.2v8.6c0 1.7-1.9 3.1-4.1 3.1z" fill="#323336"/><path d="M129.4 183.95H86.6c-2.3 0-4.1-1.4-4.1-3.1v-8.6c0-1.7 1.8-3.1 4.1-3.1s3.3 1 5.2 1.4c14.8 3.2 28.5 1 37.6-1.4a4.907 4.907 0 0 1 2.9.9 2.904 2.904 0 0 1 1.2 2.2v8.6c0 1.7-1.9 3.1-4.1 3.1z" fill="#8AB4F8" fill-opacity=".4"/><path fill-rule="evenodd" clip-rule="evenodd" d="M134.5 177.73v-5.506l-.001-.026a3.909 3.909 0 0 0-1.614-2.959l-.007-.005a5.905 5.905 0 0 0-3.492-1.084l-.123.002-.118.031c-9.017 2.378-22.545 4.544-37.134 1.39l-.005-.001c-.64-.135-1.136-.337-1.712-.571a32.296 32.296 0 0 0-.583-.233c-.841-.326-1.794-.618-3.111-.618-2.584 0-5.1 1.613-5.1 4.1v5.48h-2.15v7.07h-31.8a1.25 1.25 0 0 0 0 2.5h120.9a1.25 1.25 0 0 0 0-2.5h-31.8v-7.07h-2.15zm-4.971-7.58c-9.183 2.409-22.995 4.608-37.938 1.378-.832-.175-1.54-.465-2.142-.711-.161-.065-.314-.128-.46-.184-.709-.275-1.406-.483-2.389-.483-2.016 0-3.1 1.187-3.1 2.1v5.48h49v-5.451a1.903 1.903 0 0 0-.781-1.415 3.897 3.897 0 0 0-2.19-.714z" fill="#669DF6"/><path d="M131.083 100.235v-9.8a.7.7 0 0 0-1-.6l-8.5 4.9a.694.694 0 0 0-.34.6.695.695 0 0 0 .34.6l8.5 4.9a.597.597 0 0 0 .735.093.597.597 0 0 0 .265-.693z" fill="#5BB974"/><rect x="89.824" y="112.55" width="36.353" height="36.353" rx="8" fill="#8AB4F8" fill-opacity=".4"/><path d="M104.317 122.64a1.94 1.94 0 1 1 2.772 2.717l-3.424 3.494h13.036a1.94 1.94 0 1 1 0 3.881h-12.643c1.052 1.132 2.094 2.269 3.131 3.4l.01.011a1.94 1.94 0 0 1-2.861 2.623c-2.138-2.333-4.254-4.641-6.43-6.881a1.941 1.941 0 0 1 .005-2.711l6.404-6.534z" fill="#669DF6"/></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/chromeos/images/switch_access_setup_guide_assign_select.svg b/chrome/browser/resources/settings/chromeos/images/switch_access_setup_guide_assign_select.svg index 0f92aa4f..dbe487e 100644 --- a/chrome/browser/resources/settings/chromeos/images/switch_access_setup_guide_assign_select.svg +++ b/chrome/browser/resources/settings/chromeos/images/switch_access_setup_guide_assign_select.svg
@@ -1 +1 @@ -<svg width="216" height="216" viewBox="0 0 216 216" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M137.85 46.05a6.1 6.1 0 0 1 1 8.4l-8.6 11a5.796 5.796 0 0 1-3.937 2.266 5.802 5.802 0 0 1-4.363-1.266 5.893 5.893 0 0 1-2.126-6.228 5.904 5.904 0 0 1 1.026-2.072l8.6-11a6 6 0 0 1 8.4-1.1z" fill="#FBBC04"/><path d="M60.85 67.95c4.5 2.5 9.3 6.3 10.6 11.8 1.9 8-4.8 13.5-2.8 21.2.9 3.5 3.6 7.7 11.3 11.6" stroke="#D2E3FC" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"/><path d="M93.072 73.505l-5.764 10.979a2.8 2.8 0 0 0 1.178 3.78L99.58 94.09a2.8 2.8 0 0 0 3.78-1.178l5.764-10.979a2.8 2.8 0 0 0-1.177-3.78l-11.094-5.825a2.8 2.8 0 0 0-3.78 1.178z" fill="#D2E3FC"/><path d="M105.35 45.95a8 8 0 1 0 0-16 8 8 0 0 0 0 16z" fill="#EE5FFA"/><path d="M131.083 100.235v-9.8a.7.7 0 0 0-1-.6l-8.5 4.9a.694.694 0 0 0-.34.6.695.695 0 0 0 .34.6l8.5 4.9a.597.597 0 0 0 .735.093.597.597 0 0 0 .265-.693z" fill="#34A853"/><path d="M123.1 163.65H92.7a3.6 3.6 0 0 0-3.6 3.6v10.11a3.6 3.6 0 0 0 3.6 3.6h30.4a3.6 3.6 0 0 0 3.6-3.6v-10.11a3.6 3.6 0 0 0-3.6-3.6z" fill="#8AB4F8"/><path d="M129.4 183.95H86.6c-2.3 0-4.1-1.4-4.1-3.1v-8.6c0-1.7 1.8-3.1 4.1-3.1s3.3 1 5.2 1.4c14.8 3.2 28.5 1 37.6-1.4a4.907 4.907 0 0 1 2.9.9 2.904 2.904 0 0 1 1.2 2.2v8.6c0 1.7-1.9 3.1-4.1 3.1z" fill="#fff"/><path d="M129.4 183.95H86.6c-2.3 0-4.1-1.4-4.1-3.1v-8.6c0-1.7 1.8-3.1 4.1-3.1s3.3 1 5.2 1.4c14.8 3.2 28.5 1 37.6-1.4a4.907 4.907 0 0 1 2.9.9 2.904 2.904 0 0 1 1.2 2.2v8.6c0 1.7-1.9 3.1-4.1 3.1z" fill="#D2E3FC"/><path fill-rule="evenodd" clip-rule="evenodd" d="M134.5 177.73v-5.506l-.001-.026a3.909 3.909 0 0 0-1.614-2.959l-.007-.005a5.905 5.905 0 0 0-3.492-1.084l-.123.002-.118.031c-9.017 2.378-22.545 4.544-37.134 1.39l-.005-.001c-.64-.135-1.136-.337-1.712-.571a32.296 32.296 0 0 0-.583-.233c-.841-.326-1.794-.618-3.111-.618-2.584 0-5.1 1.613-5.1 4.1v5.48h-2.15v7.07h-31.8a1.25 1.25 0 0 0 0 2.5h120.9a1.25 1.25 0 0 0 0-2.5h-31.8v-7.07h-2.15zm-4.971-7.58c-9.183 2.409-22.995 4.608-37.938 1.378-.832-.175-1.54-.465-2.142-.711-.161-.065-.314-.128-.46-.184-.709-.275-1.406-.483-2.389-.483-2.016 0-3.1 1.187-3.1 2.1v5.48h49v-5.451a1.903 1.903 0 0 0-.781-1.415 3.897 3.897 0 0 0-2.19-.714z" fill="#4285F4"/><rect x="89.824" y="112.55" width="36.353" height="36.353" rx="8" fill="#D2E3FC"/><path fill-rule="evenodd" clip-rule="evenodd" d="M100 130.727a8 8 0 0 1 8-8 8 8 0 1 1 0 16 8 8 0 0 1-8-8zm8-4a4 4 0 1 0 0 8 4 4 0 0 0 0-8z" fill="#4285F4"/></svg> +<svg width="216" height="216" viewBox="0 0 216 216" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M137.85 46.05a6.1 6.1 0 0 1 1 8.4l-8.6 11a5.796 5.796 0 0 1-3.937 2.266 5.802 5.802 0 0 1-4.363-1.266 5.893 5.893 0 0 1-2.126-6.228 5.904 5.904 0 0 1 1.026-2.072l8.6-11a6 6 0 0 1 8.4-1.1z" fill="#FBBC04"/><path d="M60.85 67.95c4.5 2.5 9.3 6.3 10.6 11.8 1.9 8-4.8 13.5-2.8 21.2.9 3.5 3.6 7.7 11.3 11.6" stroke="#D2E3FC" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"/><path d="m93.072 73.505-5.764 10.979a2.8 2.8 0 0 0 1.178 3.78L99.58 94.09a2.8 2.8 0 0 0 3.78-1.178l5.764-10.979a2.8 2.8 0 0 0-1.177-3.78l-11.094-5.825a2.8 2.8 0 0 0-3.78 1.178z" fill="#D2E3FC"/><path d="M105.35 45.95a8 8 0 1 0 0-16 8 8 0 0 0 0 16z" fill="#EE5FFA"/><path d="M131.083 100.235v-9.8a.7.7 0 0 0-1-.6l-8.5 4.9a.694.694 0 0 0-.34.6.695.695 0 0 0 .34.6l8.5 4.9a.597.597 0 0 0 .735.093.597.597 0 0 0 .265-.693z" fill="#34A853"/><path d="M123.1 163.65H92.7a3.6 3.6 0 0 0-3.6 3.6v10.11a3.6 3.6 0 0 0 3.6 3.6h30.4a3.6 3.6 0 0 0 3.6-3.6v-10.11a3.6 3.6 0 0 0-3.6-3.6z" fill="#8AB4F8"/><path d="M129.4 183.95H86.6c-2.3 0-4.1-1.4-4.1-3.1v-8.6c0-1.7 1.8-3.1 4.1-3.1s3.3 1 5.2 1.4c14.8 3.2 28.5 1 37.6-1.4a4.907 4.907 0 0 1 2.9.9 2.904 2.904 0 0 1 1.2 2.2v8.6c0 1.7-1.9 3.1-4.1 3.1z" fill="#fff"/><path d="M129.4 183.95H86.6c-2.3 0-4.1-1.4-4.1-3.1v-8.6c0-1.7 1.8-3.1 4.1-3.1s3.3 1 5.2 1.4c14.8 3.2 28.5 1 37.6-1.4a4.907 4.907 0 0 1 2.9.9 2.904 2.904 0 0 1 1.2 2.2v8.6c0 1.7-1.9 3.1-4.1 3.1z" fill="#D2E3FC"/><path fill-rule="evenodd" clip-rule="evenodd" d="M134.5 177.73v-5.506l-.001-.026a3.909 3.909 0 0 0-1.614-2.959l-.007-.005a5.905 5.905 0 0 0-3.492-1.084l-.123.002-.118.031c-9.017 2.378-22.545 4.544-37.134 1.39l-.005-.001c-.64-.135-1.136-.337-1.712-.571a32.296 32.296 0 0 0-.583-.233c-.841-.326-1.794-.618-3.111-.618-2.584 0-5.1 1.613-5.1 4.1v5.48h-2.15v7.07h-31.8a1.25 1.25 0 0 0 0 2.5h120.9a1.25 1.25 0 0 0 0-2.5h-31.8v-7.07h-2.15zm-4.971-7.58c-9.183 2.409-22.995 4.608-37.938 1.378-.832-.175-1.54-.465-2.142-.711-.161-.065-.314-.128-.46-.184-.709-.275-1.406-.483-2.389-.483-2.016 0-3.1 1.187-3.1 2.1v5.48h49v-5.451a1.903 1.903 0 0 0-.781-1.415 3.897 3.897 0 0 0-2.19-.714z" fill="#4285F4"/><rect x="89.824" y="112.55" width="36.353" height="36.353" rx="8" fill="#D2E3FC"/><path fill-rule="evenodd" clip-rule="evenodd" d="M100 130.727a8 8 0 0 1 8-8 8 8 0 1 1 0 16 8 8 0 0 1-8-8zm8-4a4 4 0 1 0 0 8 4 4 0 0 0 0-8z" fill="#4285F4"/></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/chromeos/images/switch_access_setup_guide_assign_select_dark.svg b/chrome/browser/resources/settings/chromeos/images/switch_access_setup_guide_assign_select_dark.svg index 6937ff4..58a5fac0 100644 --- a/chrome/browser/resources/settings/chromeos/images/switch_access_setup_guide_assign_select_dark.svg +++ b/chrome/browser/resources/settings/chromeos/images/switch_access_setup_guide_assign_select_dark.svg
@@ -1 +1 @@ -<svg width="216" height="216" viewBox="0 0 216 216" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M137.85 46.05a6.1 6.1 0 0 1 1 8.4l-8.6 11a5.796 5.796 0 0 1-3.937 2.266 5.802 5.802 0 0 1-4.363-1.266 5.893 5.893 0 0 1-2.126-6.228 5.904 5.904 0 0 1 1.026-2.072l8.6-11a6 6 0 0 1 8.4-1.1z" fill="#FCC934"/><path d="M60.85 67.95c4.5 2.5 9.3 6.3 10.6 11.8 1.9 8-4.8 13.5-2.8 21.2.9 3.5 3.6 7.7 11.3 11.6" stroke="#8AB4F8" stroke-opacity=".4" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"/><path d="M93.072 73.505l-5.764 10.979a2.8 2.8 0 0 0 1.178 3.78L99.58 94.09a2.8 2.8 0 0 0 3.78-1.178l5.764-10.979a2.8 2.8 0 0 0-1.177-3.78l-11.094-5.825a2.8 2.8 0 0 0-3.78 1.178z" fill="#8AB4F8" fill-opacity=".4"/><path d="M105.35 45.95a8 8 0 1 0 0-16 8 8 0 0 0 0 16z" fill="#F882FE"/><path d="M123.1 163.65H92.7a3.6 3.6 0 0 0-3.6 3.6v10.11a3.6 3.6 0 0 0 3.6 3.6h30.4a3.6 3.6 0 0 0 3.6-3.6v-10.11a3.6 3.6 0 0 0-3.6-3.6z" fill="#1A73E8" fill-opacity=".4"/><path d="M129.4 183.95H86.6c-2.3 0-4.1-1.4-4.1-3.1v-8.6c0-1.7 1.8-3.1 4.1-3.1s3.3 1 5.2 1.4c14.8 3.2 28.5 1 37.6-1.4a4.907 4.907 0 0 1 2.9.9 2.904 2.904 0 0 1 1.2 2.2v8.6c0 1.7-1.9 3.1-4.1 3.1z" fill="#323336"/><path d="M129.4 183.95H86.6c-2.3 0-4.1-1.4-4.1-3.1v-8.6c0-1.7 1.8-3.1 4.1-3.1s3.3 1 5.2 1.4c14.8 3.2 28.5 1 37.6-1.4a4.907 4.907 0 0 1 2.9.9 2.904 2.904 0 0 1 1.2 2.2v8.6c0 1.7-1.9 3.1-4.1 3.1z" fill="#8AB4F8" fill-opacity=".4"/><path fill-rule="evenodd" clip-rule="evenodd" d="M134.5 177.73v-5.506l-.001-.026a3.909 3.909 0 0 0-1.614-2.959l-.007-.005a5.905 5.905 0 0 0-3.492-1.084l-.123.002-.118.031c-9.017 2.378-22.545 4.544-37.134 1.39l-.005-.001c-.64-.135-1.136-.337-1.712-.571a32.296 32.296 0 0 0-.583-.233c-.841-.326-1.794-.618-3.111-.618-2.584 0-5.1 1.613-5.1 4.1v5.48h-2.15v7.07h-31.8a1.25 1.25 0 0 0 0 2.5h120.9a1.25 1.25 0 0 0 0-2.5h-31.8v-7.07h-2.15zm-4.971-7.58c-9.183 2.409-22.995 4.608-37.938 1.378-.832-.175-1.54-.465-2.142-.711-.161-.065-.314-.128-.46-.184-.709-.275-1.406-.483-2.389-.483-2.016 0-3.1 1.187-3.1 2.1v5.48h49v-5.451a1.903 1.903 0 0 0-.781-1.415 3.897 3.897 0 0 0-2.19-.714z" fill="#669DF6"/><path d="M131.083 100.235v-9.8a.7.7 0 0 0-1-.6l-8.5 4.9a.694.694 0 0 0-.34.6.695.695 0 0 0 .34.6l8.5 4.9a.597.597 0 0 0 .735.093.597.597 0 0 0 .265-.693z" fill="#5BB974"/><rect x="89.824" y="112.55" width="36.353" height="36.353" rx="8" fill="#8AB4F8" fill-opacity=".4"/><path fill-rule="evenodd" clip-rule="evenodd" d="M100 130.727a8 8 0 0 1 8-8 8 8 0 1 1 0 16 8 8 0 0 1-8-8zm8-4a4 4 0 1 0 0 8 4 4 0 0 0 0-8z" fill="#669DF6"/></svg> +<svg width="216" height="216" viewBox="0 0 216 216" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M137.85 46.05a6.1 6.1 0 0 1 1 8.4l-8.6 11a5.796 5.796 0 0 1-3.937 2.266 5.802 5.802 0 0 1-4.363-1.266 5.893 5.893 0 0 1-2.126-6.228 5.904 5.904 0 0 1 1.026-2.072l8.6-11a6 6 0 0 1 8.4-1.1z" fill="#FCC934"/><path d="M60.85 67.95c4.5 2.5 9.3 6.3 10.6 11.8 1.9 8-4.8 13.5-2.8 21.2.9 3.5 3.6 7.7 11.3 11.6" stroke="#8AB4F8" stroke-opacity=".4" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"/><path d="m93.072 73.505-5.764 10.979a2.8 2.8 0 0 0 1.178 3.78L99.58 94.09a2.8 2.8 0 0 0 3.78-1.178l5.764-10.979a2.8 2.8 0 0 0-1.177-3.78l-11.094-5.825a2.8 2.8 0 0 0-3.78 1.178z" fill="#8AB4F8" fill-opacity=".4"/><path d="M105.35 45.95a8 8 0 1 0 0-16 8 8 0 0 0 0 16z" fill="#F882FE"/><path d="M123.1 163.65H92.7a3.6 3.6 0 0 0-3.6 3.6v10.11a3.6 3.6 0 0 0 3.6 3.6h30.4a3.6 3.6 0 0 0 3.6-3.6v-10.11a3.6 3.6 0 0 0-3.6-3.6z" fill="#1A73E8" fill-opacity=".4"/><path d="M129.4 183.95H86.6c-2.3 0-4.1-1.4-4.1-3.1v-8.6c0-1.7 1.8-3.1 4.1-3.1s3.3 1 5.2 1.4c14.8 3.2 28.5 1 37.6-1.4a4.907 4.907 0 0 1 2.9.9 2.904 2.904 0 0 1 1.2 2.2v8.6c0 1.7-1.9 3.1-4.1 3.1z" fill="#323336"/><path d="M129.4 183.95H86.6c-2.3 0-4.1-1.4-4.1-3.1v-8.6c0-1.7 1.8-3.1 4.1-3.1s3.3 1 5.2 1.4c14.8 3.2 28.5 1 37.6-1.4a4.907 4.907 0 0 1 2.9.9 2.904 2.904 0 0 1 1.2 2.2v8.6c0 1.7-1.9 3.1-4.1 3.1z" fill="#8AB4F8" fill-opacity=".4"/><path fill-rule="evenodd" clip-rule="evenodd" d="M134.5 177.73v-5.506l-.001-.026a3.909 3.909 0 0 0-1.614-2.959l-.007-.005a5.905 5.905 0 0 0-3.492-1.084l-.123.002-.118.031c-9.017 2.378-22.545 4.544-37.134 1.39l-.005-.001c-.64-.135-1.136-.337-1.712-.571a32.296 32.296 0 0 0-.583-.233c-.841-.326-1.794-.618-3.111-.618-2.584 0-5.1 1.613-5.1 4.1v5.48h-2.15v7.07h-31.8a1.25 1.25 0 0 0 0 2.5h120.9a1.25 1.25 0 0 0 0-2.5h-31.8v-7.07h-2.15zm-4.971-7.58c-9.183 2.409-22.995 4.608-37.938 1.378-.832-.175-1.54-.465-2.142-.711-.161-.065-.314-.128-.46-.184-.709-.275-1.406-.483-2.389-.483-2.016 0-3.1 1.187-3.1 2.1v5.48h49v-5.451a1.903 1.903 0 0 0-.781-1.415 3.897 3.897 0 0 0-2.19-.714z" fill="#669DF6"/><path d="M131.083 100.235v-9.8a.7.7 0 0 0-1-.6l-8.5 4.9a.694.694 0 0 0-.34.6.695.695 0 0 0 .34.6l8.5 4.9a.597.597 0 0 0 .735.093.597.597 0 0 0 .265-.693z" fill="#5BB974"/><rect x="89.824" y="112.55" width="36.353" height="36.353" rx="8" fill="#8AB4F8" fill-opacity=".4"/><path fill-rule="evenodd" clip-rule="evenodd" d="M100 130.727a8 8 0 0 1 8-8 8 8 0 1 1 0 16 8 8 0 0 1-8-8zm8-4a4 4 0 1 0 0 8 4 4 0 0 0 0-8z" fill="#669DF6"/></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/chromeos/images/switch_access_setup_guide_auto_scan_enabled.svg b/chrome/browser/resources/settings/chromeos/images/switch_access_setup_guide_auto_scan_enabled.svg index c283902..9c974b1 100644 --- a/chrome/browser/resources/settings/chromeos/images/switch_access_setup_guide_auto_scan_enabled.svg +++ b/chrome/browser/resources/settings/chromeos/images/switch_access_setup_guide_auto_scan_enabled.svg
@@ -1 +1 @@ -<svg width="217" height="216" viewBox="0 0 217 216" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M104.07 157.894L91.276 172.61a4.5 4.5 0 0 0 .444 6.349l14.536 12.636a4.5 4.5 0 0 0 6.348-.444l12.794-14.717a4.502 4.502 0 0 0-.444-6.349l-14.536-12.635a4.499 4.499 0 0 0-6.348.444z" fill="#34A853"/><path d="M31.144 128.6l-11.8-11.8a2.398 2.398 0 0 1-.6-2.3l4.3-16.2a2.3 2.3 0 0 1 1.7-1.6l16.1-4.3a2.2 2.2 0 0 1 2.3.6l11.8 11.8a2.2 2.2 0 0 1 .6 2.3l-4.3 16.1a2.301 2.301 0 0 1-1.6 1.7l-16.2 4.3a2.406 2.406 0 0 1-2.3-.6z" fill="#FBBC04"/><path d="M164.325 172.227l20.439 14.741c3.135 2.261 7.505 1.56 9.76-1.567 2.255-3.126 1.541-7.494-1.594-9.756l-20.439-14.741c-3.136-2.261-7.506-1.56-9.761 1.567-2.255 3.127-1.541 7.494 1.595 9.756z" fill="#4285F4"/><path d="M105.144 98.7c-.816 1.81-1.252 3.821-1.9 5.7a10.4 10.4 0 0 1-4.8 5.7c-3.1 1.7-6.7 2.6-8.2 6.2a9.503 9.503 0 0 0-.47 4.614c.437 2.993 2.323 5.713 5.055 7.042a8.909 8.909 0 0 0 3.696.895 8.964 8.964 0 0 0 6.819-2.951c1-1.2 1.8-2.6 2.7-3.8a9.495 9.495 0 0 1 2.848-2.811c2.066-1.315 4.492-1.508 6.852-1.889a9.178 9.178 0 0 0 2.8-.5 11.497 11.497 0 0 0 5.3-3.1c4.2-4.3 4.5-11.4.7-16.5s-12.9-7.1-18.3-2.5a12.998 12.998 0 0 0-3.1 3.9z" fill="#8AB4F8"/><path fill-rule="evenodd" clip-rule="evenodd" d="M23.152 161.417a18.9 18.9 0 0 0 33.909 16.306c.163-.269.133-.626-.17-.772l-32.998-15.9-.016-.008c-.339-.168-.613.07-.725.374zm-.876-3.143a3.497 3.497 0 0 1 2.926.078l32.995 15.897a3.5 3.5 0 0 1 1.417 5.049 21.9 21.9 0 0 1-39.29-18.883 3.502 3.502 0 0 1 1.952-2.141z" fill="#EE5FFA"/><path d="M189.944 32.2h-27a1.4 1.4 0 0 0-1.4 1.4v27.03a1.4 1.4 0 0 0 1.4 1.4h27a1.4 1.4 0 0 0 1.4-1.4V33.6a1.4 1.4 0 0 0-1.4-1.4z" fill="#D2E3FC"/><path d="M38.044 66.1c10.052 0 18.2-8.148 18.2-18.2s-8.148-18.2-18.2-18.2-18.2 8.148-18.2 18.2 8.148 18.2 18.2 18.2z" fill="#EA4335"/><path d="M125.544 46.6l-27.5-15.9a.7.7 0 0 0-1.1.6V63a.7.7 0 0 0 1.1.6l27.5-15.8a.705.705 0 0 0 0-1.2z" fill="#EE5FFA"/><path fill-rule="evenodd" clip-rule="evenodd" d="M170.444 97.26c-7.684 3.898-10.754 13.283-6.859 20.961 3.895 7.677 13.282 10.743 20.966 6.845l.267-.136c7.685-3.898 10.754-13.283 6.859-20.961-3.895-7.678-13.281-10.743-20.966-6.845l-.267.136zm-9.534 22.318c-4.646-9.157-.984-20.347 8.177-24.994l.267-.136c9.16-4.647 20.353-.993 24.998 8.164 4.646 9.157.984 20.346-8.176 24.994l-.268.135c-9.16 4.648-20.353.994-24.998-8.163z" fill="#2FE2EA"/><path fill-rule="evenodd" clip-rule="evenodd" d="M37.444 83.6c-14.857 0-26.9 12.044-26.9 26.9 0 14.857 12.043 26.9 26.9 26.9 14.856 0 26.9-12.043 26.9-26.9 0-14.856-12.044-26.9-26.9-26.9zm-29.9 26.9c0-16.513 13.387-29.9 29.9-29.9 16.513 0 29.9 13.387 29.9 29.9 0 16.513-13.387 29.9-29.9 29.9-16.513 0-29.9-13.387-29.9-29.9z" fill="#D2E3FC"/></svg> +<svg width="217" height="216" viewBox="0 0 217 216" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M104.07 157.894 91.276 172.61a4.5 4.5 0 0 0 .444 6.349l14.536 12.636a4.5 4.5 0 0 0 6.348-.444l12.794-14.717a4.502 4.502 0 0 0-.444-6.349l-14.536-12.635a4.499 4.499 0 0 0-6.348.444z" fill="#34A853"/><path d="m31.144 128.6-11.8-11.8a2.398 2.398 0 0 1-.6-2.3l4.3-16.2a2.3 2.3 0 0 1 1.7-1.6l16.1-4.3a2.2 2.2 0 0 1 2.3.6l11.8 11.8a2.2 2.2 0 0 1 .6 2.3l-4.3 16.1a2.301 2.301 0 0 1-1.6 1.7l-16.2 4.3a2.406 2.406 0 0 1-2.3-.6z" fill="#FBBC04"/><path d="m164.325 172.227 20.439 14.741c3.135 2.261 7.505 1.56 9.76-1.567 2.255-3.126 1.541-7.494-1.594-9.756l-20.439-14.741c-3.136-2.261-7.506-1.56-9.761 1.567-2.255 3.127-1.541 7.494 1.595 9.756z" fill="#4285F4"/><path d="M105.144 98.7c-.816 1.81-1.252 3.821-1.9 5.7a10.4 10.4 0 0 1-4.8 5.7c-3.1 1.7-6.7 2.6-8.2 6.2a9.503 9.503 0 0 0-.47 4.614c.437 2.993 2.323 5.713 5.055 7.042a8.909 8.909 0 0 0 3.696.895 8.964 8.964 0 0 0 6.819-2.951c1-1.2 1.8-2.6 2.7-3.8a9.495 9.495 0 0 1 2.848-2.811c2.066-1.315 4.492-1.508 6.852-1.889a9.178 9.178 0 0 0 2.8-.5 11.497 11.497 0 0 0 5.3-3.1c4.2-4.3 4.5-11.4.7-16.5s-12.9-7.1-18.3-2.5a12.998 12.998 0 0 0-3.1 3.9z" fill="#8AB4F8"/><path fill-rule="evenodd" clip-rule="evenodd" d="M23.152 161.417a18.9 18.9 0 0 0 33.909 16.306c.163-.269.133-.626-.17-.772l-32.998-15.9-.016-.008c-.339-.168-.613.07-.725.374zm-.876-3.143a3.497 3.497 0 0 1 2.926.078l32.995 15.897a3.5 3.5 0 0 1 1.417 5.049 21.9 21.9 0 0 1-39.29-18.883 3.502 3.502 0 0 1 1.952-2.141z" fill="#EE5FFA"/><path d="M189.944 32.2h-27a1.4 1.4 0 0 0-1.4 1.4v27.03a1.4 1.4 0 0 0 1.4 1.4h27a1.4 1.4 0 0 0 1.4-1.4V33.6a1.4 1.4 0 0 0-1.4-1.4z" fill="#D2E3FC"/><path d="M38.044 66.1c10.052 0 18.2-8.148 18.2-18.2s-8.148-18.2-18.2-18.2-18.2 8.148-18.2 18.2 8.148 18.2 18.2 18.2z" fill="#EA4335"/><path d="m125.544 46.6-27.5-15.9a.7.7 0 0 0-1.1.6V63a.7.7 0 0 0 1.1.6l27.5-15.8a.705.705 0 0 0 0-1.2z" fill="#EE5FFA"/><path fill-rule="evenodd" clip-rule="evenodd" d="M170.444 97.26c-7.684 3.898-10.754 13.283-6.859 20.961 3.895 7.677 13.282 10.743 20.966 6.845l.267-.136c7.685-3.898 10.754-13.283 6.859-20.961-3.895-7.678-13.281-10.743-20.966-6.845l-.267.136zm-9.534 22.318c-4.646-9.157-.984-20.347 8.177-24.994l.267-.136c9.16-4.647 20.353-.993 24.998 8.164 4.646 9.157.984 20.346-8.176 24.994l-.268.135c-9.16 4.648-20.353.994-24.998-8.163z" fill="#2FE2EA"/><path fill-rule="evenodd" clip-rule="evenodd" d="M37.444 83.6c-14.857 0-26.9 12.044-26.9 26.9 0 14.857 12.043 26.9 26.9 26.9 14.856 0 26.9-12.043 26.9-26.9 0-14.856-12.044-26.9-26.9-26.9zm-29.9 26.9c0-16.513 13.387-29.9 29.9-29.9 16.513 0 29.9 13.387 29.9 29.9 0 16.513-13.387 29.9-29.9 29.9-16.513 0-29.9-13.387-29.9-29.9z" fill="#D2E3FC"/></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/chromeos/images/switch_access_setup_guide_auto_scan_enabled_dark.svg b/chrome/browser/resources/settings/chromeos/images/switch_access_setup_guide_auto_scan_enabled_dark.svg index 51b3f2c..1299643 100644 --- a/chrome/browser/resources/settings/chromeos/images/switch_access_setup_guide_auto_scan_enabled_dark.svg +++ b/chrome/browser/resources/settings/chromeos/images/switch_access_setup_guide_auto_scan_enabled_dark.svg
@@ -1 +1 @@ -<svg width="217" height="216" viewBox="0 0 217 216" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M107.16 157.272l-12.793 14.717a4.5 4.5 0 0 0 .444 6.348l14.535 12.636a4.502 4.502 0 0 0 6.349-.444l12.793-14.717a4.499 4.499 0 0 0-.444-6.348l-14.536-12.636a4.499 4.499 0 0 0-6.348.444z" fill="#5BB974"/><path d="M34.234 127.978l-11.8-11.8a2.398 2.398 0 0 1-.6-2.3l4.3-16.2a2.3 2.3 0 0 1 1.7-1.6l16.1-4.3a2.2 2.2 0 0 1 2.3.6l11.8 11.8a2.205 2.205 0 0 1 .6 2.3l-4.3 16.1a2.296 2.296 0 0 1-1.6 1.7l-16.2 4.3a2.395 2.395 0 0 1-2.3-.6z" fill="#FCC934"/><path d="M167.415 171.605l20.439 14.741c3.135 2.261 7.505 1.56 9.76-1.567 2.255-3.126 1.542-7.494-1.594-9.755l-20.439-14.741c-3.135-2.262-7.505-1.56-9.76 1.566-2.255 3.127-1.541 7.495 1.594 9.756z" fill="#669DF6"/><path d="M108.234 98.078c-.815 1.81-1.252 3.821-1.9 5.7a10.4 10.4 0 0 1-4.8 5.7c-3.1 1.7-6.7 2.6-8.2 6.2a9.503 9.503 0 0 0-.47 4.614c.438 2.993 2.323 5.713 5.055 7.042a8.907 8.907 0 0 0 3.696.895 8.961 8.961 0 0 0 6.819-2.951c1-1.2 1.8-2.6 2.7-3.8a9.507 9.507 0 0 1 2.848-2.811c2.066-1.315 4.493-1.508 6.852-1.889a9.172 9.172 0 0 0 2.8-.5 11.497 11.497 0 0 0 5.3-3.1c4.2-4.3 4.5-11.4.7-16.5s-12.9-7.1-18.3-2.5a13.013 13.013 0 0 0-3.1 3.9z" fill="#1A73E8" fill-opacity=".4"/><path fill-rule="evenodd" clip-rule="evenodd" d="M26.242 160.795a18.9 18.9 0 0 0 33.91 16.306c.162-.269.132-.626-.17-.772l-32.999-15.9-.016-.007c-.338-.168-.613.069-.725.373zm-.876-3.143a3.513 3.513 0 0 1 2.926.078l32.995 15.898a3.496 3.496 0 0 1 1.934 3.696 3.5 3.5 0 0 1-.516 1.352 21.9 21.9 0 0 1-39.29-18.883 3.502 3.502 0 0 1 1.951-2.141z" fill="#F882FE"/><path d="M193.034 31.578h-27a1.4 1.4 0 0 0-1.4 1.4v27.03a1.4 1.4 0 0 0 1.4 1.4h27a1.4 1.4 0 0 0 1.4-1.4v-27.03a1.4 1.4 0 0 0-1.4-1.4z" fill="#8AB4F8" fill-opacity=".4"/><path d="M41.134 65.478c10.052 0 18.2-8.148 18.2-18.2 0-10.051-8.148-18.2-18.2-18.2-10.051 0-18.2 8.149-18.2 18.2 0 10.052 8.149 18.2 18.2 18.2z" fill="#EA4335"/><path d="M128.634 45.978l-27.5-15.9a.698.698 0 0 0-1.009.228.702.702 0 0 0-.091.372v31.7a.702.702 0 0 0 .738.725.697.697 0 0 0 .362-.125l27.5-15.8a.693.693 0 0 0 .34-.6.695.695 0 0 0-.34-.6z" fill="#F882FE"/><path fill-rule="evenodd" clip-rule="evenodd" d="M173.534 96.638c-7.684 3.898-10.753 13.283-6.858 20.961 3.895 7.678 13.281 10.743 20.965 6.845l.268-.136c7.684-3.898 10.753-13.283 6.858-20.961-3.895-7.677-13.281-10.743-20.965-6.845l-.268.136zM164 118.956c-4.645-9.157-.983-20.346 8.177-24.994l.268-.135c9.16-4.648 20.352-.994 24.998 8.163 4.645 9.157.983 20.346-8.177 24.994l-.267.135c-9.161 4.648-20.353.994-24.999-8.163z" fill="#5DF1F2"/><path fill-rule="evenodd" clip-rule="evenodd" d="M40.534 82.978c-14.856 0-26.9 12.044-26.9 26.9 0 14.857 12.044 26.9 26.9 26.9 14.857 0 26.9-12.043 26.9-26.9 0-14.856-12.043-26.9-26.9-26.9zm-29.9 26.9c0-16.513 13.387-29.9 29.9-29.9 16.514 0 29.9 13.387 29.9 29.9 0 16.514-13.386 29.9-29.9 29.9-16.513 0-29.9-13.386-29.9-29.9z" fill="#8AB4F8" fill-opacity=".4"/></svg> +<svg width="217" height="216" viewBox="0 0 217 216" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="m107.16 157.272-12.793 14.717a4.5 4.5 0 0 0 .444 6.348l14.535 12.636a4.502 4.502 0 0 0 6.349-.444l12.793-14.717a4.499 4.499 0 0 0-.444-6.348l-14.536-12.636a4.499 4.499 0 0 0-6.348.444z" fill="#5BB974"/><path d="m34.234 127.978-11.8-11.8a2.398 2.398 0 0 1-.6-2.3l4.3-16.2a2.3 2.3 0 0 1 1.7-1.6l16.1-4.3a2.2 2.2 0 0 1 2.3.6l11.8 11.8a2.205 2.205 0 0 1 .6 2.3l-4.3 16.1a2.296 2.296 0 0 1-1.6 1.7l-16.2 4.3a2.395 2.395 0 0 1-2.3-.6z" fill="#FCC934"/><path d="m167.415 171.605 20.439 14.741c3.135 2.261 7.505 1.56 9.76-1.567 2.255-3.126 1.542-7.494-1.594-9.755l-20.439-14.741c-3.135-2.262-7.505-1.56-9.76 1.566-2.255 3.127-1.541 7.495 1.594 9.756z" fill="#669DF6"/><path d="M108.234 98.078c-.815 1.81-1.252 3.821-1.9 5.7a10.4 10.4 0 0 1-4.8 5.7c-3.1 1.7-6.7 2.6-8.2 6.2a9.503 9.503 0 0 0-.47 4.614c.438 2.993 2.323 5.713 5.055 7.042a8.907 8.907 0 0 0 3.696.895 8.961 8.961 0 0 0 6.819-2.951c1-1.2 1.8-2.6 2.7-3.8a9.507 9.507 0 0 1 2.848-2.811c2.066-1.315 4.493-1.508 6.852-1.889a9.172 9.172 0 0 0 2.8-.5 11.497 11.497 0 0 0 5.3-3.1c4.2-4.3 4.5-11.4.7-16.5s-12.9-7.1-18.3-2.5a13.013 13.013 0 0 0-3.1 3.9z" fill="#1A73E8" fill-opacity=".4"/><path fill-rule="evenodd" clip-rule="evenodd" d="M26.242 160.795a18.9 18.9 0 0 0 33.91 16.306c.162-.269.132-.626-.17-.772l-32.999-15.9-.016-.007c-.338-.168-.613.069-.725.373zm-.876-3.143a3.513 3.513 0 0 1 2.926.078l32.995 15.898a3.496 3.496 0 0 1 1.934 3.696 3.5 3.5 0 0 1-.516 1.352 21.9 21.9 0 0 1-39.29-18.883 3.502 3.502 0 0 1 1.951-2.141z" fill="#F882FE"/><path d="M193.034 31.578h-27a1.4 1.4 0 0 0-1.4 1.4v27.03a1.4 1.4 0 0 0 1.4 1.4h27a1.4 1.4 0 0 0 1.4-1.4v-27.03a1.4 1.4 0 0 0-1.4-1.4z" fill="#8AB4F8" fill-opacity=".4"/><path d="M41.134 65.478c10.052 0 18.2-8.148 18.2-18.2 0-10.051-8.148-18.2-18.2-18.2-10.051 0-18.2 8.149-18.2 18.2 0 10.052 8.149 18.2 18.2 18.2z" fill="#EA4335"/><path d="m128.634 45.978-27.5-15.9a.698.698 0 0 0-1.009.228.702.702 0 0 0-.091.372v31.7a.702.702 0 0 0 .738.725.697.697 0 0 0 .362-.125l27.5-15.8a.693.693 0 0 0 .34-.6.695.695 0 0 0-.34-.6z" fill="#F882FE"/><path fill-rule="evenodd" clip-rule="evenodd" d="M173.534 96.638c-7.684 3.898-10.753 13.283-6.858 20.961 3.895 7.678 13.281 10.743 20.965 6.845l.268-.136c7.684-3.898 10.753-13.283 6.858-20.961-3.895-7.677-13.281-10.743-20.965-6.845l-.268.136zM164 118.956c-4.645-9.157-.983-20.346 8.177-24.994l.268-.135c9.16-4.648 20.352-.994 24.998 8.163 4.645 9.157.983 20.346-8.177 24.994l-.267.135c-9.161 4.648-20.353.994-24.999-8.163z" fill="#5DF1F2"/><path fill-rule="evenodd" clip-rule="evenodd" d="M40.534 82.978c-14.856 0-26.9 12.044-26.9 26.9 0 14.857 12.044 26.9 26.9 26.9 14.857 0 26.9-12.043 26.9-26.9 0-14.856-12.043-26.9-26.9-26.9zm-29.9 26.9c0-16.513 13.387-29.9 29.9-29.9 16.514 0 29.9 13.387 29.9 29.9 0 16.514-13.386 29.9-29.9 29.9-16.513 0-29.9-13.386-29.9-29.9z" fill="#8AB4F8" fill-opacity=".4"/></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/chromeos/images/switch_access_setup_guide_choose_one_switch.svg b/chrome/browser/resources/settings/chromeos/images/switch_access_setup_guide_choose_one_switch.svg index bfa1167..1809202 100644 --- a/chrome/browser/resources/settings/chromeos/images/switch_access_setup_guide_choose_one_switch.svg +++ b/chrome/browser/resources/settings/chromeos/images/switch_access_setup_guide_choose_one_switch.svg
@@ -1 +1 @@ -<svg width="217" height="216" viewBox="0 0 217 216" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M125.244 51h-34c-9.775 0-17.7 7.925-17.7 17.7v34c0 9.775 7.925 17.7 17.7 17.7h34c9.775 0 17.7-7.925 17.7-17.7v-34c0-9.775-7.925-17.7-17.7-17.7z" fill="#D2E3FC"/><path fill-rule="evenodd" clip-rule="evenodd" d="M108.244 78.1a7.6 7.6 0 1 0 0 15.2 7.6 7.6 0 0 0 0-15.2zm-13.6 7.6c0-7.511 6.089-13.6 13.6-13.6 7.511 0 13.6 6.089 13.6 13.6 0 7.511-6.089 13.6-13.6 13.6-7.511 0-13.6-6.089-13.6-13.6z" fill="#4285F4"/><path d="M123.394 151.7h-30.4a3.6 3.6 0 0 0-3.6 3.6v10.11a3.6 3.6 0 0 0 3.6 3.6h30.4a3.6 3.6 0 0 0 3.6-3.6V155.3a3.6 3.6 0 0 0-3.6-3.6z" fill="#8AB4F8"/><path d="M129.594 172h-42.8c-2.3 0-4.1-1.3-4.1-3.1v-8.6c0-1.7 1.8-3.1 4.1-3.1l5.2 1.4c14.8 3.3 28.5 1 37.6-1.4a4.895 4.895 0 0 1 2.9.9 3.103 3.103 0 0 1 1.2 2.2v8.6c0 1.8-1.8 3.1-4.1 3.1z" fill="#fff"/><path d="M129.594 172h-42.8c-2.3 0-4.1-1.3-4.1-3.1v-8.6c0-1.7 1.8-3.1 4.1-3.1l5.2 1.4c14.8 3.3 28.5 1 37.6-1.4a4.895 4.895 0 0 1 2.9.9 3.103 3.103 0 0 1 1.2 2.2v8.6c0 1.8-1.8 3.1-4.1 3.1z" fill="#D2E3FC"/><path fill-rule="evenodd" clip-rule="evenodd" d="M134.694 165v-4.742l-.004-.041a4.098 4.098 0 0 0-1.587-2.91l-.015-.012-.016-.011a5.898 5.898 0 0 0-3.492-1.084l-.123.002-.118.031c-9.019 2.379-22.533 4.64-37.106 1.396l-5.307-1.429h-.132c-2.584 0-5.1 1.613-5.1 4.1v4.7h-2.1v8.1h-75.5a1 1 0 0 0 0 2h208.3a1 1 0 0 0 0-2h-75.5V165h-2.2zm-4.971-6.8c-9.177 2.408-22.996 4.71-37.947 1.376l-.021-.005-5.088-1.369c-1.935.048-2.973 1.204-2.973 2.098v4.7h49v-4.654a2.1 2.1 0 0 0-.795-1.442 3.901 3.901 0 0 0-2.176-.704z" fill="#4285F4"/></svg> +<svg width="217" height="216" viewBox="0 0 217 216" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M125.244 51h-34c-9.775 0-17.7 7.925-17.7 17.7v34c0 9.775 7.925 17.7 17.7 17.7h34c9.775 0 17.7-7.925 17.7-17.7v-34c0-9.775-7.925-17.7-17.7-17.7z" fill="#D2E3FC"/><path fill-rule="evenodd" clip-rule="evenodd" d="M108.244 78.1a7.6 7.6 0 1 0 0 15.2 7.6 7.6 0 0 0 0-15.2zm-13.6 7.6c0-7.511 6.089-13.6 13.6-13.6 7.511 0 13.6 6.089 13.6 13.6 0 7.511-6.089 13.6-13.6 13.6-7.511 0-13.6-6.089-13.6-13.6z" fill="#4285F4"/><path d="M123.394 151.7h-30.4a3.6 3.6 0 0 0-3.6 3.6v10.11a3.6 3.6 0 0 0 3.6 3.6h30.4a3.6 3.6 0 0 0 3.6-3.6V155.3a3.6 3.6 0 0 0-3.6-3.6z" fill="#8AB4F8"/><path d="M129.594 172h-42.8c-2.3 0-4.1-1.3-4.1-3.1v-8.6c0-1.7 1.8-3.1 4.1-3.1l5.2 1.4c14.8 3.3 28.5 1 37.6-1.4a4.895 4.895 0 0 1 2.9.9 3.103 3.103 0 0 1 1.2 2.2v8.6c0 1.8-1.8 3.1-4.1 3.1z" fill="#fff"/><path d="M129.594 172h-42.8c-2.3 0-4.1-1.3-4.1-3.1v-8.6c0-1.7 1.8-3.1 4.1-3.1l5.2 1.4c14.8 3.3 28.5 1 37.6-1.4a4.895 4.895 0 0 1 2.9.9 3.103 3.103 0 0 1 1.2 2.2v8.6c0 1.8-1.8 3.1-4.1 3.1z" fill="#D2E3FC"/><path fill-rule="evenodd" clip-rule="evenodd" d="M134.694 165v-4.742l-.004-.041a4.098 4.098 0 0 0-1.587-2.91l-.015-.012-.016-.011a5.898 5.898 0 0 0-3.492-1.084l-.123.002-.118.031c-9.019 2.379-22.533 4.64-37.106 1.396l-5.307-1.429h-.132c-2.584 0-5.1 1.613-5.1 4.1v4.7h-2.1v8.1h-75.5a1 1 0 0 0 0 2h208.3a1 1 0 0 0 0-2h-75.5V165h-2.2zm-4.971-6.8c-9.177 2.408-22.996 4.71-37.947 1.376l-.021-.005-5.088-1.369c-1.935.048-2.973 1.204-2.973 2.098v4.7h49v-4.654a2.1 2.1 0 0 0-.795-1.442 3.901 3.901 0 0 0-2.176-.704z" fill="#4285F4"/></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/chromeos/images/switch_access_setup_guide_choose_one_switch_dark.svg b/chrome/browser/resources/settings/chromeos/images/switch_access_setup_guide_choose_one_switch_dark.svg index 4733786..3bf7b52 100644 --- a/chrome/browser/resources/settings/chromeos/images/switch_access_setup_guide_choose_one_switch_dark.svg +++ b/chrome/browser/resources/settings/chromeos/images/switch_access_setup_guide_choose_one_switch_dark.svg
@@ -1 +1 @@ -<svg width="217" height="216" viewBox="0 0 217 216" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M125.366 51h-34c-9.776 0-17.7 7.925-17.7 17.7v34c0 9.775 7.924 17.7 17.7 17.7h34c9.775 0 17.7-7.925 17.7-17.7v-34c0-9.775-7.925-17.7-17.7-17.7z" fill="#8AB4F8" fill-opacity=".4"/><path fill-rule="evenodd" clip-rule="evenodd" d="M108.366 78.1a7.6 7.6 0 1 0 0 15.2 7.6 7.6 0 0 0 0-15.2zm-13.6 7.6c0-7.511 6.089-13.6 13.6-13.6 7.511 0 13.6 6.089 13.6 13.6 0 7.511-6.089 13.6-13.6 13.6-7.511 0-13.6-6.089-13.6-13.6z" fill="#669DF6"/><path d="M123.516 151.7h-30.4a3.6 3.6 0 0 0-3.6 3.6v10.11a3.6 3.6 0 0 0 3.6 3.6h30.4a3.6 3.6 0 0 0 3.6-3.6V155.3a3.6 3.6 0 0 0-3.6-3.6z" fill="#1A73E8" fill-opacity=".4"/><path d="M129.716 172h-42.8c-2.3 0-4.1-1.3-4.1-3.1v-8.6c0-1.7 1.8-3.1 4.1-3.1l5.2 1.4c14.8 3.3 28.5 1 37.6-1.4a4.895 4.895 0 0 1 2.9.9 3.103 3.103 0 0 1 1.2 2.2v8.6c0 1.8-1.8 3.1-4.1 3.1z" fill="#323336"/><path d="M129.716 172h-42.8c-2.3 0-4.1-1.3-4.1-3.1v-8.6c0-1.7 1.8-3.1 4.1-3.1l5.2 1.4c14.8 3.3 28.5 1 37.6-1.4a4.895 4.895 0 0 1 2.9.9 3.103 3.103 0 0 1 1.2 2.2v8.6c0 1.8-1.8 3.1-4.1 3.1z" fill="#8AB4F8" fill-opacity=".4"/><path fill-rule="evenodd" clip-rule="evenodd" d="M134.816 165v-4.742l-.004-.041a4.098 4.098 0 0 0-1.587-2.91l-.015-.012-.016-.011a5.898 5.898 0 0 0-3.492-1.084l-.123.002-.118.031c-9.019 2.379-22.533 4.64-37.106 1.396l-5.307-1.429h-.132c-2.584 0-5.1 1.613-5.1 4.1v4.7h-2.1v8.1h-75.5a1 1 0 0 0 0 2h208.3a1 1 0 0 0 0-2h-75.5V165h-2.2zm-4.971-6.8c-9.178 2.408-22.996 4.71-37.947 1.376l-.021-.005-5.088-1.369c-1.935.048-2.973 1.204-2.973 2.098v4.7h49v-4.654a2.1 2.1 0 0 0-.795-1.442 3.901 3.901 0 0 0-2.176-.704z" fill="#669DF6"/></svg> +<svg width="217" height="216" viewBox="0 0 217 216" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M125.366 51h-34c-9.776 0-17.7 7.925-17.7 17.7v34c0 9.775 7.924 17.7 17.7 17.7h34c9.775 0 17.7-7.925 17.7-17.7v-34c0-9.775-7.925-17.7-17.7-17.7z" fill="#8AB4F8" fill-opacity=".4"/><path fill-rule="evenodd" clip-rule="evenodd" d="M108.366 78.1a7.6 7.6 0 1 0 0 15.2 7.6 7.6 0 0 0 0-15.2zm-13.6 7.6c0-7.511 6.089-13.6 13.6-13.6 7.511 0 13.6 6.089 13.6 13.6 0 7.511-6.089 13.6-13.6 13.6-7.511 0-13.6-6.089-13.6-13.6z" fill="#669DF6"/><path d="M123.516 151.7h-30.4a3.6 3.6 0 0 0-3.6 3.6v10.11a3.6 3.6 0 0 0 3.6 3.6h30.4a3.6 3.6 0 0 0 3.6-3.6V155.3a3.6 3.6 0 0 0-3.6-3.6z" fill="#1A73E8" fill-opacity=".4"/><path d="M129.716 172h-42.8c-2.3 0-4.1-1.3-4.1-3.1v-8.6c0-1.7 1.8-3.1 4.1-3.1l5.2 1.4c14.8 3.3 28.5 1 37.6-1.4a4.895 4.895 0 0 1 2.9.9 3.103 3.103 0 0 1 1.2 2.2v8.6c0 1.8-1.8 3.1-4.1 3.1z" fill="#323336"/><path d="M129.716 172h-42.8c-2.3 0-4.1-1.3-4.1-3.1v-8.6c0-1.7 1.8-3.1 4.1-3.1l5.2 1.4c14.8 3.3 28.5 1 37.6-1.4a4.895 4.895 0 0 1 2.9.9 3.103 3.103 0 0 1 1.2 2.2v8.6c0 1.8-1.8 3.1-4.1 3.1z" fill="#8AB4F8" fill-opacity=".4"/><path fill-rule="evenodd" clip-rule="evenodd" d="M134.816 165v-4.742l-.004-.041a4.098 4.098 0 0 0-1.587-2.91l-.015-.012-.016-.011a5.898 5.898 0 0 0-3.492-1.084l-.123.002-.118.031c-9.019 2.379-22.533 4.64-37.106 1.396l-5.307-1.429h-.132c-2.584 0-5.1 1.613-5.1 4.1v4.7h-2.1v8.1h-75.5a1 1 0 0 0 0 2h208.3a1 1 0 0 0 0-2h-75.5V165h-2.2zm-4.971-6.8c-9.178 2.408-22.996 4.71-37.947 1.376l-.021-.005-5.088-1.369c-1.935.048-2.973 1.204-2.973 2.098v4.7h49v-4.654a2.1 2.1 0 0 0-.795-1.442 3.901 3.901 0 0 0-2.176-.704z" fill="#669DF6"/></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/chromeos/images/switch_access_setup_guide_choose_three_switches.svg b/chrome/browser/resources/settings/chromeos/images/switch_access_setup_guide_choose_three_switches.svg index 6914822..0bd2df1 100644 --- a/chrome/browser/resources/settings/chromeos/images/switch_access_setup_guide_choose_three_switches.svg +++ b/chrome/browser/resources/settings/chromeos/images/switch_access_setup_guide_choose_three_switches.svg
@@ -1 +1 @@ -<svg width="216" height="216" viewBox="0 0 216 216" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M47.8 50.7H24.2c-9.776 0-17.7 7.924-17.7 17.7v23.57c0 9.775 7.924 17.7 17.7 17.7h23.6c9.775 0 17.7-7.925 17.7-17.7V68.4c0-9.776-7.925-17.7-17.7-17.7zM119.8 50.7H96.2c-9.776 0-17.7 7.924-17.7 17.7v23.57c0 9.775 7.924 17.7 17.7 17.7h23.6c9.775 0 17.7-7.925 17.7-17.7V68.4c0-9.776-7.925-17.7-17.7-17.7zM168.2 50.7h23.6c9.775 0 17.7 7.924 17.7 17.7v23.57c0 9.775-7.925 17.7-17.7 17.7h-23.6c-9.776 0-17.7-7.925-17.7-17.7V68.4c0-9.776 7.924-17.7 17.7-17.7z" fill="#D2E3FC"/><path d="M123.394 151.7h-30.4a3.6 3.6 0 0 0-3.6 3.6v10.11a3.6 3.6 0 0 0 3.6 3.6h30.4a3.6 3.6 0 0 0 3.6-3.6V155.3a3.6 3.6 0 0 0-3.6-3.6zM194 151.7h-30.4a3.6 3.6 0 0 0-3.6 3.6v10.11a3.6 3.6 0 0 0 3.6 3.6H194a3.6 3.6 0 0 0 3.6-3.6V155.3a3.6 3.6 0 0 0-3.6-3.6zM21.9 151.7h30.4a3.6 3.6 0 0 1 3.6 3.6v10.11a3.6 3.6 0 0 1-3.6 3.6H21.9a3.6 3.6 0 0 1-3.6-3.6V155.3a3.6 3.6 0 0 1 3.6-3.6z" fill="#8AB4F8"/><path d="M34.542 71.9a3 3 0 0 0-4.285-4.2l-9.9 10.1a3 3 0 0 0-.049 4.148l10 10.7a3 3 0 1 0 4.384-4.096L29.784 83.3H49.4a3 3 0 1 0 0-6H29.25l5.292-5.4zM184.042 67.7a3 3 0 1 0-4.284 4.2l5.293 5.4H164.9a3 3 0 1 0 0 6h19.544c-1.627 1.75-3.238 3.508-4.84 5.256l-.016.017a3 3 0 0 0 4.423 4.054c3.305-3.605 6.576-7.173 9.941-10.637a3 3 0 0 0-.01-4.19l-9.9-10.1z" fill="#4285F4"/><path fill-rule="evenodd" clip-rule="evenodd" d="M96.2 80.2c0-6.627 5.373-12 12-12s12 5.373 12 12-5.373 12-12 12-12-5.373-12-12zm12-6a6 6 0 1 0 0 12 6 6 0 0 0 0-12z" fill="#4285F4"/><path d="M15.8 172h42.8c2.2 0 4.1-1.4 4.1-3.1v-8.6a2.896 2.896 0 0 0-1.2-2.2 4.894 4.894 0 0 0-2.9-.9c-9.1 2.4-22.8 4.6-37.6 1.4-.736-.155-1.337-.4-1.93-.642-.94-.383-1.86-.758-3.27-.758-2.3 0-4.1 1.4-4.1 3.1v8.6c0 1.7 1.8 3.1 4.1 3.1zM129.594 172h-42.8c-2.3 0-4.1-1.3-4.1-3.1v-8.6c0-1.7 1.8-3.1 4.1-3.1l5.2 1.4c14.8 3.3 28.5 1 37.6-1.4a4.895 4.895 0 0 1 2.9.9 3.103 3.103 0 0 1 1.2 2.2v8.6c0 1.8-1.8 3.1-4.1 3.1zM200.3 172h-42.8c-2.3 0-4.1-1.4-4.1-3.1v-8.6c0-1.7 1.8-3.1 4.1-3.1 1.409 0 2.33.376 3.27.758.593.242 1.194.487 1.93.642 14.8 3.2 28.5 1 37.6-1.4a4.91 4.91 0 0 1 2.9.9 2.904 2.904 0 0 1 1.2 2.2v8.6c0 1.7-1.9 3.1-4.1 3.1z" fill="#fff"/><path d="M15.8 172h42.8c2.2 0 4.1-1.4 4.1-3.1v-8.6a2.896 2.896 0 0 0-1.2-2.2 4.894 4.894 0 0 0-2.9-.9c-9.1 2.4-22.8 4.6-37.6 1.4-.736-.155-1.337-.4-1.93-.642-.94-.383-1.86-.758-3.27-.758-2.3 0-4.1 1.4-4.1 3.1v8.6c0 1.7 1.8 3.1 4.1 3.1zM129.594 172h-42.8c-2.3 0-4.1-1.3-4.1-3.1v-8.6c0-1.7 1.8-3.1 4.1-3.1l5.2 1.4c14.8 3.3 28.5 1 37.6-1.4a4.895 4.895 0 0 1 2.9.9 3.103 3.103 0 0 1 1.2 2.2v8.6c0 1.8-1.8 3.1-4.1 3.1zM200.3 172h-42.8c-2.3 0-4.1-1.4-4.1-3.1v-8.6c0-1.7 1.8-3.1 4.1-3.1 1.409 0 2.33.376 3.27.758.593.242 1.194.487 1.93.642 14.8 3.2 28.5 1 37.6-1.4a4.91 4.91 0 0 1 2.9.9 2.904 2.904 0 0 1 1.2 2.2v8.6c0 1.7-1.9 3.1-4.1 3.1z" fill="#D2E3FC"/><path fill-rule="evenodd" clip-rule="evenodd" d="M63.7 165v-4.726l-.002-.027a3.898 3.898 0 0 0-1.613-2.958l-.007-.005a5.897 5.897 0 0 0-3.492-1.084l-.123.002-.118.031c-9.017 2.378-22.545 4.544-37.134 1.39l-.005-.002c-.64-.134-1.136-.336-1.712-.57a41.42 41.42 0 0 0-.583-.234c-.841-.325-1.794-.617-3.111-.617-2.584 0-5.1 1.613-5.1 4.1v4.7H8.5v8.1H4.094a1 1 0 0 0 0 2h208.3a1 1 0 0 0 0-2H207.5V165h-2.1v-4.726l-.002-.026a3.893 3.893 0 0 0-1.613-2.959l-.007-.005a5.905 5.905 0 0 0-3.492-1.084l-.123.002-.118.031c-9.017 2.378-22.545 4.544-37.134 1.39l-.005-.001c-.64-.135-1.136-.337-1.711-.571a33.947 33.947 0 0 0-.584-.233c-.841-.326-1.794-.618-3.111-.618-2.584 0-5.1 1.613-5.1 4.1v4.7h-2.2v8.1h-13.306V165h-2.2v-4.742l-.004-.041a4.098 4.098 0 0 0-1.587-2.91l-.015-.012-.016-.011a5.898 5.898 0 0 0-3.492-1.084l-.123.002-.118.031c-9.019 2.379-22.533 4.64-37.106 1.396l-5.307-1.429h-.132c-2.584 0-5.1 1.613-5.1 4.1v4.7h-2.1v8.1H65.8V165h-2.1zm-4.97-6.8c-9.184 2.409-22.997 4.608-37.939 1.378-.832-.176-1.54-.465-2.143-.711-.16-.065-.313-.128-.46-.184-.708-.275-1.405-.483-2.388-.483-2.016 0-3.1 1.187-3.1 2.1v4.7h49v-4.671a1.902 1.902 0 0 0-.782-1.415 3.894 3.894 0 0 0-2.189-.714zM203.4 165h-49v-4.7c0-.913 1.084-2.1 3.1-2.1.983 0 1.68.208 2.389.483.146.056.299.119.459.184.603.246 1.311.536 2.143.711 14.942 3.23 28.755 1.031 37.938-1.378a3.901 3.901 0 0 1 2.189.714 1.902 1.902 0 0 1 .782 1.415V165zm-73.677-6.8c-9.177 2.408-22.996 4.71-37.947 1.376l-.021-.005-5.088-1.369c-1.935.048-2.973 1.204-2.973 2.098v4.7h49v-4.654a2.1 2.1 0 0 0-.795-1.442 3.901 3.901 0 0 0-2.176-.704z" fill="#4285F4"/></svg> +<svg width="216" height="216" viewBox="0 0 216 216" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M47.8 50.7H24.2c-9.776 0-17.7 7.924-17.7 17.7v23.57c0 9.775 7.924 17.7 17.7 17.7h23.6c9.775 0 17.7-7.925 17.7-17.7V68.4c0-9.776-7.925-17.7-17.7-17.7zm72 0H96.2c-9.776 0-17.7 7.924-17.7 17.7v23.57c0 9.775 7.924 17.7 17.7 17.7h23.6c9.775 0 17.7-7.925 17.7-17.7V68.4c0-9.776-7.925-17.7-17.7-17.7zm48.4 0h23.6c9.775 0 17.7 7.924 17.7 17.7v23.57c0 9.775-7.925 17.7-17.7 17.7h-23.6c-9.776 0-17.7-7.925-17.7-17.7V68.4c0-9.776 7.924-17.7 17.7-17.7z" fill="#D2E3FC"/><path d="M123.394 151.7h-30.4a3.6 3.6 0 0 0-3.6 3.6v10.11a3.6 3.6 0 0 0 3.6 3.6h30.4a3.6 3.6 0 0 0 3.6-3.6V155.3a3.6 3.6 0 0 0-3.6-3.6zm70.606 0h-30.4a3.6 3.6 0 0 0-3.6 3.6v10.11a3.6 3.6 0 0 0 3.6 3.6H194a3.6 3.6 0 0 0 3.6-3.6V155.3a3.6 3.6 0 0 0-3.6-3.6zm-172.1 0h30.4a3.6 3.6 0 0 1 3.6 3.6v10.11a3.6 3.6 0 0 1-3.6 3.6H21.9a3.6 3.6 0 0 1-3.6-3.6V155.3a3.6 3.6 0 0 1 3.6-3.6z" fill="#8AB4F8"/><path d="M34.542 71.9a3 3 0 0 0-4.285-4.2l-9.9 10.1a3 3 0 0 0-.049 4.148l10 10.7a3 3 0 1 0 4.384-4.096L29.784 83.3H49.4a3 3 0 1 0 0-6H29.25l5.292-5.4zm149.5-4.2a3 3 0 1 0-4.284 4.2l5.293 5.4H164.9a3 3 0 1 0 0 6h19.544c-1.627 1.75-3.238 3.508-4.84 5.256l-.016.017a3 3 0 0 0 4.423 4.054c3.305-3.605 6.576-7.173 9.941-10.637a3 3 0 0 0-.01-4.19l-9.9-10.1z" fill="#4285F4"/><path fill-rule="evenodd" clip-rule="evenodd" d="M96.2 80.2c0-6.627 5.373-12 12-12s12 5.373 12 12-5.373 12-12 12-12-5.373-12-12zm12-6a6 6 0 1 0 0 12 6 6 0 0 0 0-12z" fill="#4285F4"/><path d="M15.8 172h42.8c2.2 0 4.1-1.4 4.1-3.1v-8.6a2.896 2.896 0 0 0-1.2-2.2 4.894 4.894 0 0 0-2.9-.9c-9.1 2.4-22.8 4.6-37.6 1.4-.736-.155-1.337-.4-1.93-.642-.94-.383-1.86-.758-3.27-.758-2.3 0-4.1 1.4-4.1 3.1v8.6c0 1.7 1.8 3.1 4.1 3.1zm113.794 0h-42.8c-2.3 0-4.1-1.3-4.1-3.1v-8.6c0-1.7 1.8-3.1 4.1-3.1l5.2 1.4c14.8 3.3 28.5 1 37.6-1.4a4.895 4.895 0 0 1 2.9.9 3.103 3.103 0 0 1 1.2 2.2v8.6c0 1.8-1.8 3.1-4.1 3.1zm70.706 0h-42.8c-2.3 0-4.1-1.4-4.1-3.1v-8.6c0-1.7 1.8-3.1 4.1-3.1 1.409 0 2.33.376 3.27.758.593.242 1.194.487 1.93.642 14.8 3.2 28.5 1 37.6-1.4a4.91 4.91 0 0 1 2.9.9 2.904 2.904 0 0 1 1.2 2.2v8.6c0 1.7-1.9 3.1-4.1 3.1z" fill="#fff"/><path d="M15.8 172h42.8c2.2 0 4.1-1.4 4.1-3.1v-8.6a2.896 2.896 0 0 0-1.2-2.2 4.894 4.894 0 0 0-2.9-.9c-9.1 2.4-22.8 4.6-37.6 1.4-.736-.155-1.337-.4-1.93-.642-.94-.383-1.86-.758-3.27-.758-2.3 0-4.1 1.4-4.1 3.1v8.6c0 1.7 1.8 3.1 4.1 3.1zm113.794 0h-42.8c-2.3 0-4.1-1.3-4.1-3.1v-8.6c0-1.7 1.8-3.1 4.1-3.1l5.2 1.4c14.8 3.3 28.5 1 37.6-1.4a4.895 4.895 0 0 1 2.9.9 3.103 3.103 0 0 1 1.2 2.2v8.6c0 1.8-1.8 3.1-4.1 3.1zm70.706 0h-42.8c-2.3 0-4.1-1.4-4.1-3.1v-8.6c0-1.7 1.8-3.1 4.1-3.1 1.409 0 2.33.376 3.27.758.593.242 1.194.487 1.93.642 14.8 3.2 28.5 1 37.6-1.4a4.91 4.91 0 0 1 2.9.9 2.904 2.904 0 0 1 1.2 2.2v8.6c0 1.7-1.9 3.1-4.1 3.1z" fill="#D2E3FC"/><path fill-rule="evenodd" clip-rule="evenodd" d="M63.7 165v-4.726l-.002-.027a3.898 3.898 0 0 0-1.613-2.958l-.007-.005a5.897 5.897 0 0 0-3.492-1.084l-.123.002-.118.031c-9.017 2.378-22.545 4.544-37.134 1.39l-.005-.002c-.64-.134-1.136-.336-1.712-.57a41.42 41.42 0 0 0-.583-.234c-.841-.325-1.794-.617-3.111-.617-2.584 0-5.1 1.613-5.1 4.1v4.7H8.5v8.1H4.094a1 1 0 0 0 0 2h208.3a1 1 0 0 0 0-2H207.5V165h-2.1v-4.726l-.002-.026a3.893 3.893 0 0 0-1.613-2.959l-.007-.005a5.905 5.905 0 0 0-3.492-1.084l-.123.002-.118.031c-9.017 2.378-22.545 4.544-37.134 1.39l-.005-.001c-.64-.135-1.136-.337-1.711-.571a33.947 33.947 0 0 0-.584-.233c-.841-.326-1.794-.618-3.111-.618-2.584 0-5.1 1.613-5.1 4.1v4.7h-2.2v8.1h-13.306V165h-2.2v-4.742l-.004-.041a4.098 4.098 0 0 0-1.587-2.91l-.015-.012-.016-.011a5.898 5.898 0 0 0-3.492-1.084l-.123.002-.118.031c-9.019 2.379-22.533 4.64-37.106 1.396l-5.307-1.429h-.132c-2.584 0-5.1 1.613-5.1 4.1v4.7h-2.1v8.1H65.8V165h-2.1zm-4.97-6.8c-9.184 2.409-22.997 4.608-37.939 1.378-.832-.176-1.54-.465-2.143-.711-.16-.065-.313-.128-.46-.184-.708-.275-1.405-.483-2.388-.483-2.016 0-3.1 1.187-3.1 2.1v4.7h49v-4.671a1.902 1.902 0 0 0-.782-1.415 3.894 3.894 0 0 0-2.189-.714zM203.4 165h-49v-4.7c0-.913 1.084-2.1 3.1-2.1.983 0 1.68.208 2.389.483.146.056.299.119.459.184.603.246 1.311.536 2.143.711 14.942 3.23 28.755 1.031 37.938-1.378a3.901 3.901 0 0 1 2.189.714 1.902 1.902 0 0 1 .782 1.415V165zm-73.677-6.8c-9.177 2.408-22.996 4.71-37.947 1.376l-.021-.005-5.088-1.369c-1.935.048-2.973 1.204-2.973 2.098v4.7h49v-4.654a2.1 2.1 0 0 0-.795-1.442 3.901 3.901 0 0 0-2.176-.704z" fill="#4285F4"/></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/chromeos/images/switch_access_setup_guide_choose_three_switches_dark.svg b/chrome/browser/resources/settings/chromeos/images/switch_access_setup_guide_choose_three_switches_dark.svg index c6d1bc1..ebf69c9 100644 --- a/chrome/browser/resources/settings/chromeos/images/switch_access_setup_guide_choose_three_switches_dark.svg +++ b/chrome/browser/resources/settings/chromeos/images/switch_access_setup_guide_choose_three_switches_dark.svg
@@ -1 +1 @@ -<svg width="217" height="216" viewBox="0 0 217 216" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M47.922 50.7h-23.6c-9.776 0-17.7 7.924-17.7 17.7v23.57c0 9.775 7.924 17.7 17.7 17.7h23.6c9.775 0 17.7-7.925 17.7-17.7V68.4c0-9.776-7.925-17.7-17.7-17.7zM119.922 50.7h-23.6c-9.776 0-17.7 7.924-17.7 17.7v23.57c0 9.775 7.924 17.7 17.7 17.7h23.6c9.775 0 17.7-7.925 17.7-17.7V68.4c0-9.776-7.925-17.7-17.7-17.7zM168.322 50.7h23.6c9.775 0 17.7 7.924 17.7 17.7v23.57c0 9.775-7.925 17.7-17.7 17.7h-23.6c-9.776 0-17.7-7.925-17.7-17.7V68.4c0-9.776 7.924-17.7 17.7-17.7z" fill="#8AB4F8" fill-opacity=".4"/><path d="M123.516 151.7h-30.4a3.6 3.6 0 0 0-3.6 3.6v10.11a3.6 3.6 0 0 0 3.6 3.6h30.4a3.6 3.6 0 0 0 3.6-3.6V155.3a3.6 3.6 0 0 0-3.6-3.6zM194.122 151.7h-30.4a3.6 3.6 0 0 0-3.6 3.6v10.11a3.6 3.6 0 0 0 3.6 3.6h30.4a3.6 3.6 0 0 0 3.6-3.6V155.3a3.6 3.6 0 0 0-3.6-3.6zM22.022 151.7h30.4a3.6 3.6 0 0 1 3.6 3.6v10.11a3.6 3.6 0 0 1-3.6 3.6h-30.4a3.6 3.6 0 0 1-3.6-3.6V155.3a3.6 3.6 0 0 1 3.6-3.6z" fill="#1A73E8" fill-opacity=".4"/><path d="M34.664 71.9a3 3 0 0 0-4.285-4.2l-9.9 10.1a3 3 0 0 0-.049 4.148l10 10.7a3 3 0 1 0 4.384-4.096L29.906 83.3h19.616a3 3 0 1 0 0-6h-20.15l5.292-5.4zM184.164 67.7a3 3 0 1 0-4.285 4.2l5.294 5.4h-20.151a3 3 0 1 0 0 6h19.544c-1.627 1.75-3.238 3.508-4.84 5.256l-.016.017a3 3 0 0 0 4.423 4.054c3.305-3.605 6.576-7.173 9.941-10.637a3 3 0 0 0-.01-4.19l-9.9-10.1z" fill="#669DF6"/><path fill-rule="evenodd" clip-rule="evenodd" d="M96.322 80.2c0-6.627 5.372-12 12-12 6.627 0 12 5.373 12 12s-5.373 12-12 12c-6.628 0-12-5.373-12-12zm12-6a6 6 0 1 0 0 12 6 6 0 0 0 0-12z" fill="#669DF6"/><path d="M15.922 172h42.8c2.2 0 4.1-1.4 4.1-3.1v-8.6a2.896 2.896 0 0 0-1.2-2.2 4.894 4.894 0 0 0-2.9-.9c-9.1 2.4-22.8 4.6-37.6 1.4-.736-.155-1.337-.4-1.93-.642-.94-.383-1.86-.758-3.27-.758-2.3 0-4.1 1.4-4.1 3.1v8.6c0 1.7 1.8 3.1 4.1 3.1zM129.716 172h-42.8c-2.3 0-4.1-1.3-4.1-3.1v-8.6c0-1.7 1.8-3.1 4.1-3.1l5.2 1.4c14.8 3.3 28.5 1 37.6-1.4a4.895 4.895 0 0 1 2.9.9 3.103 3.103 0 0 1 1.2 2.2v8.6c0 1.8-1.8 3.1-4.1 3.1zM200.422 172h-42.8c-2.3 0-4.1-1.4-4.1-3.1v-8.6c0-1.7 1.8-3.1 4.1-3.1 1.409 0 2.33.376 3.27.758.593.242 1.194.487 1.93.642 14.8 3.2 28.5 1 37.6-1.4a4.91 4.91 0 0 1 2.9.9 2.904 2.904 0 0 1 1.2 2.2v8.6c0 1.7-1.9 3.1-4.1 3.1z" fill="#323336"/><path d="M15.922 172h42.8c2.2 0 4.1-1.4 4.1-3.1v-8.6a2.896 2.896 0 0 0-1.2-2.2 4.894 4.894 0 0 0-2.9-.9c-9.1 2.4-22.8 4.6-37.6 1.4-.736-.155-1.337-.4-1.93-.642-.94-.383-1.86-.758-3.27-.758-2.3 0-4.1 1.4-4.1 3.1v8.6c0 1.7 1.8 3.1 4.1 3.1zM129.716 172h-42.8c-2.3 0-4.1-1.3-4.1-3.1v-8.6c0-1.7 1.8-3.1 4.1-3.1l5.2 1.4c14.8 3.3 28.5 1 37.6-1.4a4.895 4.895 0 0 1 2.9.9 3.103 3.103 0 0 1 1.2 2.2v8.6c0 1.8-1.8 3.1-4.1 3.1zM200.422 172h-42.8c-2.3 0-4.1-1.4-4.1-3.1v-8.6c0-1.7 1.8-3.1 4.1-3.1 1.409 0 2.33.376 3.27.758.593.242 1.194.487 1.93.642 14.8 3.2 28.5 1 37.6-1.4a4.91 4.91 0 0 1 2.9.9 2.904 2.904 0 0 1 1.2 2.2v8.6c0 1.7-1.9 3.1-4.1 3.1z" fill="#8AB4F8" fill-opacity=".4"/><path fill-rule="evenodd" clip-rule="evenodd" d="M63.822 165v-4.726l-.002-.027a3.898 3.898 0 0 0-1.613-2.958l-.007-.005a5.897 5.897 0 0 0-3.492-1.084l-.123.002-.118.031c-9.017 2.378-22.545 4.544-37.134 1.39l-.005-.002c-.64-.134-1.136-.336-1.712-.57a41.42 41.42 0 0 0-.583-.234c-.841-.325-1.794-.617-3.111-.617-2.584 0-5.1 1.613-5.1 4.1v4.7h-2.2v8.1H4.216a1 1 0 0 0 0 2h208.3a1 1 0 0 0 0-2h-4.894V165h-2.1v-4.726l-.002-.026a3.893 3.893 0 0 0-1.613-2.959l-.007-.005a5.905 5.905 0 0 0-3.492-1.084l-.123.002-.118.031c-9.017 2.378-22.545 4.544-37.134 1.39l-.005-.001c-.64-.135-1.136-.337-1.711-.571a33.947 33.947 0 0 0-.584-.233c-.841-.326-1.794-.618-3.111-.618-2.584 0-5.1 1.613-5.1 4.1v4.7h-2.2v8.1h-13.306V165h-2.2v-4.742l-.004-.041a4.098 4.098 0 0 0-1.587-2.91l-.015-.012-.016-.011a5.898 5.898 0 0 0-3.492-1.084l-.123.002-.118.031c-9.019 2.379-22.533 4.64-37.106 1.396l-5.307-1.429h-.132c-2.584 0-5.1 1.613-5.1 4.1v4.7h-2.1v8.1H65.922V165h-2.1zm-4.97-6.8c-9.184 2.409-22.997 4.608-37.939 1.378-.832-.176-1.54-.465-2.143-.711-.16-.065-.313-.128-.46-.184-.708-.275-1.405-.483-2.388-.483-2.016 0-3.1 1.187-3.1 2.1v4.7h49v-4.671a1.902 1.902 0 0 0-.782-1.415 3.894 3.894 0 0 0-2.189-.714zm144.67 6.8h-49v-4.7c0-.913 1.084-2.1 3.1-2.1.983 0 1.68.208 2.389.483.146.056.299.119.459.184.603.246 1.311.536 2.143.711 14.942 3.23 28.755 1.031 37.938-1.378a3.901 3.901 0 0 1 2.189.714 1.902 1.902 0 0 1 .782 1.415V165zm-73.677-6.8c-9.178 2.408-22.996 4.71-37.947 1.376l-.021-.005-5.088-1.369c-1.935.048-2.973 1.204-2.973 2.098v4.7h49v-4.654a2.1 2.1 0 0 0-.795-1.442 3.901 3.901 0 0 0-2.176-.704z" fill="#669DF6"/></svg> +<svg width="217" height="216" viewBox="0 0 217 216" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M47.922 50.7h-23.6c-9.776 0-17.7 7.924-17.7 17.7v23.57c0 9.775 7.924 17.7 17.7 17.7h23.6c9.775 0 17.7-7.925 17.7-17.7V68.4c0-9.776-7.925-17.7-17.7-17.7zm72 0h-23.6c-9.776 0-17.7 7.924-17.7 17.7v23.57c0 9.775 7.924 17.7 17.7 17.7h23.6c9.775 0 17.7-7.925 17.7-17.7V68.4c0-9.776-7.925-17.7-17.7-17.7zm48.4 0h23.6c9.775 0 17.7 7.924 17.7 17.7v23.57c0 9.775-7.925 17.7-17.7 17.7h-23.6c-9.776 0-17.7-7.925-17.7-17.7V68.4c0-9.776 7.924-17.7 17.7-17.7z" fill="#8AB4F8" fill-opacity=".4"/><path d="M123.516 151.7h-30.4a3.6 3.6 0 0 0-3.6 3.6v10.11a3.6 3.6 0 0 0 3.6 3.6h30.4a3.6 3.6 0 0 0 3.6-3.6V155.3a3.6 3.6 0 0 0-3.6-3.6zm70.606 0h-30.4a3.6 3.6 0 0 0-3.6 3.6v10.11a3.6 3.6 0 0 0 3.6 3.6h30.4a3.6 3.6 0 0 0 3.6-3.6V155.3a3.6 3.6 0 0 0-3.6-3.6zm-172.1 0h30.4a3.6 3.6 0 0 1 3.6 3.6v10.11a3.6 3.6 0 0 1-3.6 3.6h-30.4a3.6 3.6 0 0 1-3.6-3.6V155.3a3.6 3.6 0 0 1 3.6-3.6z" fill="#1A73E8" fill-opacity=".4"/><path d="M34.664 71.9a3 3 0 0 0-4.285-4.2l-9.9 10.1a3 3 0 0 0-.049 4.148l10 10.7a3 3 0 1 0 4.384-4.096L29.906 83.3h19.616a3 3 0 1 0 0-6h-20.15l5.292-5.4zm149.5-4.2a3 3 0 1 0-4.285 4.2l5.294 5.4h-20.151a3 3 0 1 0 0 6h19.544c-1.627 1.75-3.238 3.508-4.84 5.256l-.016.017a3 3 0 0 0 4.423 4.054c3.305-3.605 6.576-7.173 9.941-10.637a3 3 0 0 0-.01-4.19l-9.9-10.1z" fill="#669DF6"/><path fill-rule="evenodd" clip-rule="evenodd" d="M96.322 80.2c0-6.627 5.372-12 12-12 6.627 0 12 5.373 12 12s-5.373 12-12 12c-6.628 0-12-5.373-12-12zm12-6a6 6 0 1 0 0 12 6 6 0 0 0 0-12z" fill="#669DF6"/><path d="M15.922 172h42.8c2.2 0 4.1-1.4 4.1-3.1v-8.6a2.896 2.896 0 0 0-1.2-2.2 4.894 4.894 0 0 0-2.9-.9c-9.1 2.4-22.8 4.6-37.6 1.4-.736-.155-1.337-.4-1.93-.642-.94-.383-1.86-.758-3.27-.758-2.3 0-4.1 1.4-4.1 3.1v8.6c0 1.7 1.8 3.1 4.1 3.1zm113.794 0h-42.8c-2.3 0-4.1-1.3-4.1-3.1v-8.6c0-1.7 1.8-3.1 4.1-3.1l5.2 1.4c14.8 3.3 28.5 1 37.6-1.4a4.895 4.895 0 0 1 2.9.9 3.103 3.103 0 0 1 1.2 2.2v8.6c0 1.8-1.8 3.1-4.1 3.1zm70.706 0h-42.8c-2.3 0-4.1-1.4-4.1-3.1v-8.6c0-1.7 1.8-3.1 4.1-3.1 1.409 0 2.33.376 3.27.758.593.242 1.194.487 1.93.642 14.8 3.2 28.5 1 37.6-1.4a4.91 4.91 0 0 1 2.9.9 2.904 2.904 0 0 1 1.2 2.2v8.6c0 1.7-1.9 3.1-4.1 3.1z" fill="#323336"/><path d="M15.922 172h42.8c2.2 0 4.1-1.4 4.1-3.1v-8.6a2.896 2.896 0 0 0-1.2-2.2 4.894 4.894 0 0 0-2.9-.9c-9.1 2.4-22.8 4.6-37.6 1.4-.736-.155-1.337-.4-1.93-.642-.94-.383-1.86-.758-3.27-.758-2.3 0-4.1 1.4-4.1 3.1v8.6c0 1.7 1.8 3.1 4.1 3.1zm113.794 0h-42.8c-2.3 0-4.1-1.3-4.1-3.1v-8.6c0-1.7 1.8-3.1 4.1-3.1l5.2 1.4c14.8 3.3 28.5 1 37.6-1.4a4.895 4.895 0 0 1 2.9.9 3.103 3.103 0 0 1 1.2 2.2v8.6c0 1.8-1.8 3.1-4.1 3.1zm70.706 0h-42.8c-2.3 0-4.1-1.4-4.1-3.1v-8.6c0-1.7 1.8-3.1 4.1-3.1 1.409 0 2.33.376 3.27.758.593.242 1.194.487 1.93.642 14.8 3.2 28.5 1 37.6-1.4a4.91 4.91 0 0 1 2.9.9 2.904 2.904 0 0 1 1.2 2.2v8.6c0 1.7-1.9 3.1-4.1 3.1z" fill="#8AB4F8" fill-opacity=".4"/><path fill-rule="evenodd" clip-rule="evenodd" d="M63.822 165v-4.726l-.002-.027a3.898 3.898 0 0 0-1.613-2.958l-.007-.005a5.897 5.897 0 0 0-3.492-1.084l-.123.002-.118.031c-9.017 2.378-22.545 4.544-37.134 1.39l-.005-.002c-.64-.134-1.136-.336-1.712-.57a41.42 41.42 0 0 0-.583-.234c-.841-.325-1.794-.617-3.111-.617-2.584 0-5.1 1.613-5.1 4.1v4.7h-2.2v8.1H4.216a1 1 0 0 0 0 2h208.3a1 1 0 0 0 0-2h-4.894V165h-2.1v-4.726l-.002-.026a3.893 3.893 0 0 0-1.613-2.959l-.007-.005a5.905 5.905 0 0 0-3.492-1.084l-.123.002-.118.031c-9.017 2.378-22.545 4.544-37.134 1.39l-.005-.001c-.64-.135-1.136-.337-1.711-.571a33.947 33.947 0 0 0-.584-.233c-.841-.326-1.794-.618-3.111-.618-2.584 0-5.1 1.613-5.1 4.1v4.7h-2.2v8.1h-13.306V165h-2.2v-4.742l-.004-.041a4.098 4.098 0 0 0-1.587-2.91l-.015-.012-.016-.011a5.898 5.898 0 0 0-3.492-1.084l-.123.002-.118.031c-9.019 2.379-22.533 4.64-37.106 1.396l-5.307-1.429h-.132c-2.584 0-5.1 1.613-5.1 4.1v4.7h-2.1v8.1H65.922V165h-2.1zm-4.97-6.8c-9.184 2.409-22.997 4.608-37.939 1.378-.832-.176-1.54-.465-2.143-.711-.16-.065-.313-.128-.46-.184-.708-.275-1.405-.483-2.388-.483-2.016 0-3.1 1.187-3.1 2.1v4.7h49v-4.671a1.902 1.902 0 0 0-.782-1.415 3.894 3.894 0 0 0-2.189-.714zm144.67 6.8h-49v-4.7c0-.913 1.084-2.1 3.1-2.1.983 0 1.68.208 2.389.483.146.056.299.119.459.184.603.246 1.311.536 2.143.711 14.942 3.23 28.755 1.031 37.938-1.378a3.901 3.901 0 0 1 2.189.714 1.902 1.902 0 0 1 .782 1.415V165zm-73.677-6.8c-9.178 2.408-22.996 4.71-37.947 1.376l-.021-.005-5.088-1.369c-1.935.048-2.973 1.204-2.973 2.098v4.7h49v-4.654a2.1 2.1 0 0 0-.795-1.442 3.901 3.901 0 0 0-2.176-.704z" fill="#669DF6"/></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/chromeos/images/switch_access_setup_guide_choose_two_switches.svg b/chrome/browser/resources/settings/chromeos/images/switch_access_setup_guide_choose_two_switches.svg index c832a95..7630814 100644 --- a/chrome/browser/resources/settings/chromeos/images/switch_access_setup_guide_choose_two_switches.svg +++ b/chrome/browser/resources/settings/chromeos/images/switch_access_setup_guide_choose_two_switches.svg
@@ -1 +1 @@ -<svg width="217" height="216" viewBox="0 0 217 216" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M50.822 48.4h34c9.775 0 17.7 7.925 17.7 17.7v34c0 9.775-7.925 17.7-17.7 17.7h-34c-9.776 0-17.7-7.925-17.7-17.7v-34c0-9.775 7.924-17.7 17.7-17.7zM135.122 48.4h34c9.775 0 17.7 7.925 17.7 17.7v34c0 9.775-7.925 17.7-17.7 17.7h-34c-9.776 0-17.7-7.925-17.7-17.7v-34c0-9.775 7.924-17.7 17.7-17.7z" fill="#D2E3FC"/><path d="M71.519 68.76a3 3 0 0 1 4.242.037l11.6 11.8a3 3 0 0 1 .06 4.144l-11.7 12.6a3 3 0 0 1-4.398-4.082l6.555-7.059H53.522a3 3 0 0 1 0-6h25.036l-7.075-7.197a3 3 0 0 1 .036-4.243z" fill="#4285F4"/><path fill-rule="evenodd" clip-rule="evenodd" d="M152.122 69.5c-7.511 0-13.6 6.089-13.6 13.6 0 7.511 6.089 13.6 13.6 13.6 7.511 0 13.6-6.089 13.6-13.6 0-7.511-6.089-13.6-13.6-13.6zm-7.6 13.6a7.6 7.6 0 1 1 15.2 0 7.6 7.6 0 0 1-15.2 0z" fill="#4285F4"/><path d="M52.622 151.7h30.4a3.6 3.6 0 0 1 3.6 3.6v10.11a3.6 3.6 0 0 1-3.6 3.6h-30.4a3.6 3.6 0 0 1-3.6-3.6V155.3a3.6 3.6 0 0 1 3.6-3.6zM136.922 151.7h30.4a3.6 3.6 0 0 1 3.6 3.6v10.11a3.6 3.6 0 0 1-3.6 3.6h-30.4a3.6 3.6 0 0 1-3.6-3.6V155.3a3.6 3.6 0 0 1 3.6-3.6z" fill="#8AB4F8"/><path d="M46.422 172h42.8c2.3 0 4.1-1.3 4.1-3.1v-8.6a3.103 3.103 0 0 0-1.2-2.2 4.894 4.894 0 0 0-2.9-.9c-9.1 2.4-22.8 4.7-37.6 1.4l-5.2-1.4c-2.3 0-4.1 1.4-4.1 3.1v8.6c0 1.8 1.8 3.1 4.1 3.1zM130.722 172h42.8c2.3 0 4.1-1.3 4.1-3.1v-8.6a3.099 3.099 0 0 0-1.2-2.2 4.893 4.893 0 0 0-2.9-.9c-9.1 2.4-22.8 4.7-37.6 1.4l-5.2-1.4c-2.3 0-4.1 1.4-4.1 3.1v8.6c0 1.8 1.8 3.1 4.1 3.1z" fill="#fff"/><path d="M46.422 172h42.8c2.3 0 4.1-1.3 4.1-3.1v-8.6a3.103 3.103 0 0 0-1.2-2.2 4.894 4.894 0 0 0-2.9-.9c-9.1 2.4-22.8 4.7-37.6 1.4l-5.2-1.4c-2.3 0-4.1 1.4-4.1 3.1v8.6c0 1.8 1.8 3.1 4.1 3.1zM130.722 172h42.8c2.3 0 4.1-1.3 4.1-3.1v-8.6a3.099 3.099 0 0 0-1.2-2.2 4.893 4.893 0 0 0-2.9-.9c-9.1 2.4-22.8 4.7-37.6 1.4l-5.2-1.4c-2.3 0-4.1 1.4-4.1 3.1v8.6c0 1.8 1.8 3.1 4.1 3.1z" fill="#D2E3FC"/><path fill-rule="evenodd" clip-rule="evenodd" d="M41.322 160.3v4.7h-2.15v8.1h-35.2a1 1 0 0 0 0 2h208.3a1 1 0 0 0 0-2h-31.5V165h-2.15v-4.742l-.004-.041a4.098 4.098 0 0 0-1.587-2.91l-.015-.012-.016-.011a5.898 5.898 0 0 0-3.492-1.084l-.123.002-.118.031c-9.019 2.379-22.533 4.64-37.106 1.396l-5.307-1.429h-.132c-2.584 0-5.1 1.613-5.1 4.1v4.7h-2.15v8.1h-27V165h-2.15v-4.742l-.004-.041a4.1 4.1 0 0 0-1.587-2.91l-.015-.012-.016-.011a5.897 5.897 0 0 0-3.492-1.084l-.123.002-.118.031c-9.019 2.379-22.533 4.64-37.106 1.396l-5.307-1.429h-.132c-2.584 0-5.1 1.613-5.1 4.1zm48.03-2.1c-9.178 2.408-22.997 4.71-37.948 1.376l-.021-.005-5.088-1.369c-1.934.048-2.973 1.204-2.973 2.098v4.7h49v-4.654a2.104 2.104 0 0 0-.795-1.442 3.903 3.903 0 0 0-2.176-.704zm87.27 6.8h-49v-4.7c0-.894 1.039-2.05 2.974-2.098l5.087 1.369.021.005c14.951 3.334 28.77 1.032 37.947-1.376a3.901 3.901 0 0 1 2.176.704 2.1 2.1 0 0 1 .795 1.442V165z" fill="#4285F4"/></svg> +<svg width="217" height="216" viewBox="0 0 217 216" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M50.822 48.4h34c9.775 0 17.7 7.925 17.7 17.7v34c0 9.775-7.925 17.7-17.7 17.7h-34c-9.776 0-17.7-7.925-17.7-17.7v-34c0-9.775 7.924-17.7 17.7-17.7zm84.3 0h34c9.775 0 17.7 7.925 17.7 17.7v34c0 9.775-7.925 17.7-17.7 17.7h-34c-9.776 0-17.7-7.925-17.7-17.7v-34c0-9.775 7.924-17.7 17.7-17.7z" fill="#D2E3FC"/><path d="M71.519 68.76a3 3 0 0 1 4.242.037l11.6 11.8a3 3 0 0 1 .06 4.144l-11.7 12.6a3 3 0 0 1-4.398-4.082l6.555-7.059H53.522a3 3 0 0 1 0-6h25.036l-7.075-7.197a3 3 0 0 1 .036-4.243z" fill="#4285F4"/><path fill-rule="evenodd" clip-rule="evenodd" d="M152.122 69.5c-7.511 0-13.6 6.089-13.6 13.6 0 7.511 6.089 13.6 13.6 13.6 7.511 0 13.6-6.089 13.6-13.6 0-7.511-6.089-13.6-13.6-13.6zm-7.6 13.6a7.6 7.6 0 1 1 15.2 0 7.6 7.6 0 0 1-15.2 0z" fill="#4285F4"/><path d="M52.622 151.7h30.4a3.6 3.6 0 0 1 3.6 3.6v10.11a3.6 3.6 0 0 1-3.6 3.6h-30.4a3.6 3.6 0 0 1-3.6-3.6V155.3a3.6 3.6 0 0 1 3.6-3.6zm84.3 0h30.4a3.6 3.6 0 0 1 3.6 3.6v10.11a3.6 3.6 0 0 1-3.6 3.6h-30.4a3.6 3.6 0 0 1-3.6-3.6V155.3a3.6 3.6 0 0 1 3.6-3.6z" fill="#8AB4F8"/><path d="M46.422 172h42.8c2.3 0 4.1-1.3 4.1-3.1v-8.6a3.103 3.103 0 0 0-1.2-2.2 4.894 4.894 0 0 0-2.9-.9c-9.1 2.4-22.8 4.7-37.6 1.4l-5.2-1.4c-2.3 0-4.1 1.4-4.1 3.1v8.6c0 1.8 1.8 3.1 4.1 3.1zm84.3 0h42.8c2.3 0 4.1-1.3 4.1-3.1v-8.6a3.099 3.099 0 0 0-1.2-2.2 4.893 4.893 0 0 0-2.9-.9c-9.1 2.4-22.8 4.7-37.6 1.4l-5.2-1.4c-2.3 0-4.1 1.4-4.1 3.1v8.6c0 1.8 1.8 3.1 4.1 3.1z" fill="#fff"/><path d="M46.422 172h42.8c2.3 0 4.1-1.3 4.1-3.1v-8.6a3.103 3.103 0 0 0-1.2-2.2 4.894 4.894 0 0 0-2.9-.9c-9.1 2.4-22.8 4.7-37.6 1.4l-5.2-1.4c-2.3 0-4.1 1.4-4.1 3.1v8.6c0 1.8 1.8 3.1 4.1 3.1zm84.3 0h42.8c2.3 0 4.1-1.3 4.1-3.1v-8.6a3.099 3.099 0 0 0-1.2-2.2 4.893 4.893 0 0 0-2.9-.9c-9.1 2.4-22.8 4.7-37.6 1.4l-5.2-1.4c-2.3 0-4.1 1.4-4.1 3.1v8.6c0 1.8 1.8 3.1 4.1 3.1z" fill="#D2E3FC"/><path fill-rule="evenodd" clip-rule="evenodd" d="M41.322 160.3v4.7h-2.15v8.1h-35.2a1 1 0 0 0 0 2h208.3a1 1 0 0 0 0-2h-31.5V165h-2.15v-4.742l-.004-.041a4.098 4.098 0 0 0-1.587-2.91l-.015-.012-.016-.011a5.898 5.898 0 0 0-3.492-1.084l-.123.002-.118.031c-9.019 2.379-22.533 4.64-37.106 1.396l-5.307-1.429h-.132c-2.584 0-5.1 1.613-5.1 4.1v4.7h-2.15v8.1h-27V165h-2.15v-4.742l-.004-.041a4.1 4.1 0 0 0-1.587-2.91l-.015-.012-.016-.011a5.897 5.897 0 0 0-3.492-1.084l-.123.002-.118.031c-9.019 2.379-22.533 4.64-37.106 1.396l-5.307-1.429h-.132c-2.584 0-5.1 1.613-5.1 4.1zm48.03-2.1c-9.178 2.408-22.997 4.71-37.948 1.376l-.021-.005-5.088-1.369c-1.934.048-2.973 1.204-2.973 2.098v4.7h49v-4.654a2.104 2.104 0 0 0-.795-1.442 3.903 3.903 0 0 0-2.176-.704zm87.27 6.8h-49v-4.7c0-.894 1.039-2.05 2.974-2.098l5.087 1.369.021.005c14.951 3.334 28.77 1.032 37.947-1.376a3.901 3.901 0 0 1 2.176.704 2.1 2.1 0 0 1 .795 1.442V165z" fill="#4285F4"/></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/chromeos/images/switch_access_setup_guide_choose_two_switches_dark.svg b/chrome/browser/resources/settings/chromeos/images/switch_access_setup_guide_choose_two_switches_dark.svg index 2f115a40..92bca48 100644 --- a/chrome/browser/resources/settings/chromeos/images/switch_access_setup_guide_choose_two_switches_dark.svg +++ b/chrome/browser/resources/settings/chromeos/images/switch_access_setup_guide_choose_two_switches_dark.svg
@@ -1 +1 @@ -<svg width="217" height="216" viewBox="0 0 217 216" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M50.944 48.4h34c9.775 0 17.7 7.925 17.7 17.7v34c0 9.775-7.925 17.7-17.7 17.7h-34c-9.776 0-17.7-7.925-17.7-17.7v-34c0-9.775 7.924-17.7 17.7-17.7zM135.244 48.4h34c9.775 0 17.7 7.925 17.7 17.7v34c0 9.775-7.925 17.7-17.7 17.7h-34c-9.776 0-17.7-7.925-17.7-17.7v-34c0-9.775 7.924-17.7 17.7-17.7z" fill="#8AB4F8" fill-opacity=".4"/><path d="M71.64 68.76a3 3 0 0 1 4.243.037l11.6 11.8a3 3 0 0 1 .06 4.144l-11.7 12.6a3 3 0 0 1-4.398-4.082L78 86.2H53.644a3 3 0 0 1 0-6H78.68l-7.076-7.197a3 3 0 0 1 .037-4.243z" fill="#669DF6"/><path fill-rule="evenodd" clip-rule="evenodd" d="M152.244 69.5c-7.511 0-13.6 6.089-13.6 13.6 0 7.511 6.089 13.6 13.6 13.6 7.511 0 13.6-6.089 13.6-13.6 0-7.511-6.089-13.6-13.6-13.6zm-7.6 13.6a7.6 7.6 0 1 1 15.2 0 7.6 7.6 0 0 1-15.2 0z" fill="#669DF6"/><path d="M52.744 151.7h30.4a3.6 3.6 0 0 1 3.6 3.6v10.11a3.6 3.6 0 0 1-3.6 3.6h-30.4a3.6 3.6 0 0 1-3.6-3.6V155.3a3.6 3.6 0 0 1 3.6-3.6zM137.044 151.7h30.4a3.6 3.6 0 0 1 3.6 3.6v10.11a3.6 3.6 0 0 1-3.6 3.6h-30.4a3.6 3.6 0 0 1-3.6-3.6V155.3a3.6 3.6 0 0 1 3.6-3.6z" fill="#1A73E8" fill-opacity=".4"/><path d="M46.544 172h42.8c2.3 0 4.1-1.3 4.1-3.1v-8.6a3.1 3.1 0 0 0-1.2-2.2 4.894 4.894 0 0 0-2.9-.9c-9.1 2.4-22.8 4.7-37.6 1.4l-5.2-1.4c-2.3 0-4.1 1.4-4.1 3.1v8.6c0 1.8 1.8 3.1 4.1 3.1zM130.844 172h42.8c2.3 0 4.1-1.3 4.1-3.1v-8.6a3.099 3.099 0 0 0-1.2-2.2 4.895 4.895 0 0 0-2.9-.9c-9.1 2.4-22.8 4.7-37.6 1.4l-5.2-1.4c-2.3 0-4.1 1.4-4.1 3.1v8.6c0 1.8 1.8 3.1 4.1 3.1z" fill="#323336"/><path d="M46.544 172h42.8c2.3 0 4.1-1.3 4.1-3.1v-8.6a3.1 3.1 0 0 0-1.2-2.2 4.894 4.894 0 0 0-2.9-.9c-9.1 2.4-22.8 4.7-37.6 1.4l-5.2-1.4c-2.3 0-4.1 1.4-4.1 3.1v8.6c0 1.8 1.8 3.1 4.1 3.1zM130.844 172h42.8c2.3 0 4.1-1.3 4.1-3.1v-8.6a3.099 3.099 0 0 0-1.2-2.2 4.895 4.895 0 0 0-2.9-.9c-9.1 2.4-22.8 4.7-37.6 1.4l-5.2-1.4c-2.3 0-4.1 1.4-4.1 3.1v8.6c0 1.8 1.8 3.1 4.1 3.1z" fill="#8AB4F8" fill-opacity=".4"/><path fill-rule="evenodd" clip-rule="evenodd" d="M41.444 160.3v4.7h-2.15v8.1h-35.2a1 1 0 0 0 0 2h208.3a1 1 0 0 0 0-2h-31.5V165h-2.15v-4.742l-.004-.041a4.098 4.098 0 0 0-1.587-2.91l-.015-.012-.016-.011a5.898 5.898 0 0 0-3.492-1.084l-.123.002-.118.031c-9.019 2.379-22.533 4.64-37.106 1.396l-5.307-1.429h-.132c-2.584 0-5.1 1.613-5.1 4.1v4.7h-2.15v8.1h-27V165h-2.15v-4.742l-.004-.041a4.102 4.102 0 0 0-1.587-2.91l-.015-.012-.016-.011a5.897 5.897 0 0 0-3.492-1.084l-.123.002-.118.031c-9.019 2.379-22.533 4.64-37.106 1.396l-5.307-1.429h-.132c-2.584 0-5.1 1.613-5.1 4.1zm48.03-2.1c-9.178 2.408-22.997 4.71-37.948 1.376l-.021-.005-5.088-1.369c-1.935.048-2.973 1.204-2.973 2.098v4.7h49v-4.654a2.106 2.106 0 0 0-.795-1.442 3.902 3.902 0 0 0-2.176-.704zm87.27 6.8h-49v-4.7c0-.894 1.038-2.05 2.973-2.098l5.088 1.369.021.005c14.951 3.334 28.77 1.032 37.947-1.376a3.901 3.901 0 0 1 2.176.704 2.113 2.113 0 0 1 .795 1.442V165z" fill="#669DF6"/></svg> +<svg width="217" height="216" viewBox="0 0 217 216" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M50.944 48.4h34c9.775 0 17.7 7.925 17.7 17.7v34c0 9.775-7.925 17.7-17.7 17.7h-34c-9.776 0-17.7-7.925-17.7-17.7v-34c0-9.775 7.924-17.7 17.7-17.7zm84.3 0h34c9.775 0 17.7 7.925 17.7 17.7v34c0 9.775-7.925 17.7-17.7 17.7h-34c-9.776 0-17.7-7.925-17.7-17.7v-34c0-9.775 7.924-17.7 17.7-17.7z" fill="#8AB4F8" fill-opacity=".4"/><path d="M71.64 68.76a3 3 0 0 1 4.243.037l11.6 11.8a3 3 0 0 1 .06 4.144l-11.7 12.6a3 3 0 0 1-4.398-4.082L78 86.2H53.644a3 3 0 0 1 0-6H78.68l-7.076-7.197a3 3 0 0 1 .037-4.243z" fill="#669DF6"/><path fill-rule="evenodd" clip-rule="evenodd" d="M152.244 69.5c-7.511 0-13.6 6.089-13.6 13.6 0 7.511 6.089 13.6 13.6 13.6 7.511 0 13.6-6.089 13.6-13.6 0-7.511-6.089-13.6-13.6-13.6zm-7.6 13.6a7.6 7.6 0 1 1 15.2 0 7.6 7.6 0 0 1-15.2 0z" fill="#669DF6"/><path d="M52.744 151.7h30.4a3.6 3.6 0 0 1 3.6 3.6v10.11a3.6 3.6 0 0 1-3.6 3.6h-30.4a3.6 3.6 0 0 1-3.6-3.6V155.3a3.6 3.6 0 0 1 3.6-3.6zm84.3 0h30.4a3.6 3.6 0 0 1 3.6 3.6v10.11a3.6 3.6 0 0 1-3.6 3.6h-30.4a3.6 3.6 0 0 1-3.6-3.6V155.3a3.6 3.6 0 0 1 3.6-3.6z" fill="#1A73E8" fill-opacity=".4"/><path d="M46.544 172h42.8c2.3 0 4.1-1.3 4.1-3.1v-8.6a3.1 3.1 0 0 0-1.2-2.2 4.894 4.894 0 0 0-2.9-.9c-9.1 2.4-22.8 4.7-37.6 1.4l-5.2-1.4c-2.3 0-4.1 1.4-4.1 3.1v8.6c0 1.8 1.8 3.1 4.1 3.1zm84.3 0h42.8c2.3 0 4.1-1.3 4.1-3.1v-8.6a3.099 3.099 0 0 0-1.2-2.2 4.895 4.895 0 0 0-2.9-.9c-9.1 2.4-22.8 4.7-37.6 1.4l-5.2-1.4c-2.3 0-4.1 1.4-4.1 3.1v8.6c0 1.8 1.8 3.1 4.1 3.1z" fill="#323336"/><path d="M46.544 172h42.8c2.3 0 4.1-1.3 4.1-3.1v-8.6a3.1 3.1 0 0 0-1.2-2.2 4.894 4.894 0 0 0-2.9-.9c-9.1 2.4-22.8 4.7-37.6 1.4l-5.2-1.4c-2.3 0-4.1 1.4-4.1 3.1v8.6c0 1.8 1.8 3.1 4.1 3.1zm84.3 0h42.8c2.3 0 4.1-1.3 4.1-3.1v-8.6a3.099 3.099 0 0 0-1.2-2.2 4.895 4.895 0 0 0-2.9-.9c-9.1 2.4-22.8 4.7-37.6 1.4l-5.2-1.4c-2.3 0-4.1 1.4-4.1 3.1v8.6c0 1.8 1.8 3.1 4.1 3.1z" fill="#8AB4F8" fill-opacity=".4"/><path fill-rule="evenodd" clip-rule="evenodd" d="M41.444 160.3v4.7h-2.15v8.1h-35.2a1 1 0 0 0 0 2h208.3a1 1 0 0 0 0-2h-31.5V165h-2.15v-4.742l-.004-.041a4.098 4.098 0 0 0-1.587-2.91l-.015-.012-.016-.011a5.898 5.898 0 0 0-3.492-1.084l-.123.002-.118.031c-9.019 2.379-22.533 4.64-37.106 1.396l-5.307-1.429h-.132c-2.584 0-5.1 1.613-5.1 4.1v4.7h-2.15v8.1h-27V165h-2.15v-4.742l-.004-.041a4.102 4.102 0 0 0-1.587-2.91l-.015-.012-.016-.011a5.897 5.897 0 0 0-3.492-1.084l-.123.002-.118.031c-9.019 2.379-22.533 4.64-37.106 1.396l-5.307-1.429h-.132c-2.584 0-5.1 1.613-5.1 4.1zm48.03-2.1c-9.178 2.408-22.997 4.71-37.948 1.376l-.021-.005-5.088-1.369c-1.935.048-2.973 1.204-2.973 2.098v4.7h49v-4.654a2.106 2.106 0 0 0-.795-1.442 3.902 3.902 0 0 0-2.176-.704zm87.27 6.8h-49v-4.7c0-.894 1.038-2.05 2.973-2.098l5.088 1.369.021.005c14.951 3.334 28.77 1.032 37.947-1.376a3.901 3.901 0 0 1 2.176.704 2.113 2.113 0 0 1 .795 1.442V165z" fill="#669DF6"/></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/chromeos/images/switch_access_setup_guide_closing.svg b/chrome/browser/resources/settings/chromeos/images/switch_access_setup_guide_closing.svg index fce25f7..f9993b6d 100644 --- a/chrome/browser/resources/settings/chromeos/images/switch_access_setup_guide_closing.svg +++ b/chrome/browser/resources/settings/chromeos/images/switch_access_setup_guide_closing.svg
@@ -1 +1 @@ -<svg width="217" height="216" viewBox="0 0 217 216" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M164.962 79.312a75.104 75.104 0 0 0-94.711-24.448 75.1 75.1 0 1 0 108.211 67.448 74.812 74.812 0 0 0-13.5-43z" fill="#D2E3FC"/><path d="M130.747 46.332l5.125-3.834a1.4 1.4 0 0 0 .282-1.96l-3.822-5.108a1.4 1.4 0 0 0-1.959-.283l-5.125 3.834a1.4 1.4 0 0 0-.282 1.96l3.821 5.108a1.4 1.4 0 0 0 1.96.283z" fill="#EA4335"/><path d="M119.762 30.012l2.7-2.7a2.397 2.397 0 0 0 .599-2.3l-1-3.7a2.19 2.19 0 0 0-1.599-1.6l-3.7-1a2.402 2.402 0 0 0-2.3.6l-2.7 2.7a2.204 2.204 0 0 0-.6 2.3l.899 3.7a2.506 2.506 0 0 0 1.701 1.6l3.7 1a2.398 2.398 0 0 0 2.3-.6z" fill="#EE5FFA"/><path d="M132.762 63.912l-7.5 6a1.703 1.703 0 0 1-2.701-1l-1.5-9.5a1.71 1.71 0 0 1 .615-1.494 1.697 1.697 0 0 1 1.586-.306l9 3.4a1.81 1.81 0 0 1 1.002 1.32 1.796 1.796 0 0 1-.502 1.58zM51.61 91.497a9.1 9.1 0 0 0-3.7-12.3l-18.8-10a9.1 9.1 0 0 0-12.3 3.7v0a9.1 9.1 0 0 0 3.8 12.3l18.7 10.1a9.099 9.099 0 0 0 12.3-3.8z" stroke="#fff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M51.61 91.497a9.1 9.1 0 0 0-3.7-12.3l-18.8-10a9.1 9.1 0 0 0-12.3 3.7v0a9.1 9.1 0 0 0 3.8 12.3l18.7 10.1a9.099 9.099 0 0 0 12.3-3.8z" stroke="#FBBC04" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M107.062 75.912a3.995 3.995 0 0 1-1.6 2.8 3.302 3.302 0 0 1-3.8.3M126.562 123.312a28.303 28.303 0 0 0-.8 3.9c-.7 4.7.3 7.1.1 11.7a32.128 32.128 0 0 1-1 6.2M90.117 129.512c1.1 5.2 2.1 10.4 3.1 15.6" stroke="#4285F4" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M160.662 80.112a14.482 14.482 0 0 0-3.2 3.7c-4.2 7.1 1 16.4 1.5 17.3" stroke="#8AB4F8" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M160.662 80.112a32.915 32.915 0 0 0 6-5.6c4.4-4.9 5.9-9.3 8.6-9.1a2.837 2.837 0 0 1 2.2 1.3c1 1.7-.2 4.7-3.3 7.4" stroke="#fff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M192.494 65.157c-.541-.81-1.251-1.307-2.08-1.459-.794-.146-1.563.049-2.215.345-1.274.58-2.418 1.694-3.095 2.515a26.207 26.207 0 0 1-8.153 6.065 10.465 10.465 0 0 0 1.316-2.19c.626-1.445.785-2.99.056-4.228a3.836 3.836 0 0 0-2.995-1.79c-.987-.072-1.824.292-2.547.858-.7.548-1.344 1.324-1.983 2.177-.369.493-.744 1.023-1.141 1.582-1.021 1.44-2.183 3.078-3.739 4.812a31.907 31.907 0 0 1-5.842 5.458 1 1 0 0 0 1.171 1.62 33.885 33.885 0 0 0 6.171-5.756c1.634-1.821 2.9-3.606 3.934-5.064.378-.533.725-1.022 1.048-1.454.624-.834 1.136-1.426 1.614-1.8.453-.355.814-.466 1.174-.439l.014.001c.56.034 1.101.35 1.405.822.265.463.319 1.265-.176 2.408-.489 1.13-1.458 2.44-2.926 3.718a.997.997 0 0 0-.342.798c-.778.24-1.571.43-2.374.57a.999.999 0 1 0 .345 1.97 21.503 21.503 0 0 0 5.329-1.668 28.204 28.204 0 0 0 10.172-7.182c.586-.715 1.506-1.58 2.392-1.982.434-.198.774-.245 1.026-.199.206.038.461.157.733.538.054.151.06.422-.088.874-.131.403-.327.788-.517 1.162l-.093.183c-1.172 1.866-3.79 3.847-6.693 5.596-2.875 1.732-5.858 3.138-7.537 3.879a1 1 0 0 0 .807 1.83c1.721-.76 4.788-2.204 7.763-3.996 2.789-1.68 6.113-3.787 7.713-6.743.115-.212.282-.39.485-.519a1.425 1.425 0 0 1 1.884.37c.263.493.286 1.065.101 1.729-.194.692-.596 1.409-1.062 2.062-3.631 5.063-9.006 8.16-15.258 9.92a1 1 0 1 0 .541 1.925c6.41-1.803 12.128-5.006 16.09-10.334a.992.992 0 0 0 .287-.299c.527-.841 1.781-.921 2.416-.174.182.361.198.826-.001 1.432-.212.646-.636 1.342-1.149 1.994l-.023.03c-3.525 4.86-8.896 7.864-15.065 9.626a1 1 0 1 0 .549 1.923c6.174-1.763 11.792-4.779 15.66-9.742.246.081.473.216.664.394.485.503.562 1.048.389 1.692-.19.71-.68 1.47-1.253 2.151l-.004.005c-4.233 5.099-11.823 9.304-18.364 10.967a.994.994 0 0 0-.388.188c-.743.59-.152 2.162-.04 2.845.198 1.217.472 2.984.771 5.174a1 1 0 1 0 1.981-.27 202.91 202.91 0 0 0-.947-6.237c6.644-1.88 14.157-6.128 18.524-11.387.646-.767 1.35-1.794 1.651-2.916.318-1.183.188-2.51-.904-3.625l-.019-.018-.006-.006a3.8 3.8 0 0 0-.862-.617c.299-.487.559-1.01.735-1.547.315-.96.394-2.078-.194-3.108a1.028 1.028 0 0 0-.076-.114 3.464 3.464 0 0 0-2.731-1.346l.014-.05c.285-1.02.314-2.186-.304-3.284a.706.706 0 0 0-.043-.07c-.757-1.122-2.1-1.65-3.372-1.448a2.55 2.55 0 0 0-.262-1.04 1.078 1.078 0 0 0-.062-.107z" fill="#8AB4F8"/><path d="M134.667 100.112l61.277.202a1.931 1.931 0 0 1 1.691.784 1.927 1.927 0 0 1 .234 1.85l-13.364 41.295a2 2 0 0 1-1.995 1.869h-72.8a2 2 0 0 1 0-4h8.252l13.058-39.367a4.055 4.055 0 0 1 3.647-2.633z" fill="#4285F4"/><path d="M144.231 146.627c1.7-2 5.16-5.042 6.96-7.042 2.761-3.068-.429-5.272-3.729-4.138-7.393 3.242-18.898 11.589-20.332 13.79-1.434 2.201 8.671 22.526 8.671 22.526 11.661-4.69 40.397-7.481 36.461-17.151 0-1.481 2.517-2.394 2.517-5.375-.172-1.189-1.201-2.382-1.295-3.555.861-1.938.632-3.199 0-4.495-.582-1.193-1.837-.899-2.926-1.893-.237-2.415 1.183-5.066-3.084-5.328-4.267-.262-9.133 6.765-11.839 7.684-2.706.918-11.404 4.977-11.404 4.977z" fill="#fff"/><path d="M144.231 146.627c1.7-2 5.16-5.042 6.96-7.042 2.761-3.068-.429-5.272-3.729-4.138-7.393 3.242-18.898 11.589-20.332 13.79-1.434 2.201 8.671 22.526 8.671 22.526 11.661-4.69 40.397-7.481 36.461-17.151 0-1.481 2.517-2.394 2.517-5.375-.172-1.189-1.201-2.382-1.295-3.555.861-1.938.632-3.199 0-4.495-.582-1.193-1.837-.899-2.926-1.893-.237-2.415 1.183-5.066-3.084-5.328-4.267-.262-9.133 6.765-11.839 7.684-2.706.918-11.404 4.977-11.404 4.977z" fill="#D2E3FC"/><path d="M162.662 137.303a14.469 14.469 0 0 1 3.885-2.419c1.049-.24 2.067.084 2.638.64.283.276.443.594.48.926.037.329-.038.753-.37 1.262l-.022.035a10.297 10.297 0 0 1-1.744 2.204l-.014.014c-6.619 6.618-11.303 9.833-19.949 12.781a.914.914 0 1 0 .591 1.732c7.861-2.68 12.61-5.616 18.241-10.882a.902.902 0 0 0 .321-.159l2.59-1.992c.745-.537 1.672-.797 2.414-.698.36.048.659.177.89.379.227.198.437.508.559 1 .277 1.189-.487 2.565-1.731 3.713l-.015.014-.011.011c-1 .999-2.093 1.899-3.265 2.689l-.013.009a73.26 73.26 0 0 1-9.676 5.727c-1.311.631-2.679 1.169-4.087 1.705l-.712.27c-1.176.445-2.379.9-3.561 1.407a.914.914 0 1 0 .721 1.682c1.143-.49 2.301-.928 3.477-1.373l.725-.275c1.416-.539 2.847-1.101 4.235-1.769l.007-.003a75.2 75.2 0 0 0 9.914-5.867 23.95 23.95 0 0 0 3.072-2.463.901.901 0 0 0 .21.024c.491 0 .9.272 1.195.781.299.516.407 1.171.314 1.689a5.686 5.686 0 0 1-2.228 3.061l-.03.022c-4.493 3.369-9.292 5.079-14.967 7.101-1.224.437-2.49.887-3.802 1.373a.915.915 0 1 0 .635 1.716c1.261-.466 2.493-.905 3.7-1.334 5.07-1.804 9.676-3.442 13.968-6.289a.95.95 0 0 0 .025.181 3.98 3.98 0 0 1-1.293 3.978 12.49 12.49 0 0 1-4.557 2.323 1.048 1.048 0 0 0-.074.023c-8.135 2.965-10.915 3.574-15.475 4.574-2.021.443-4.392.963-7.733 1.798a.848.848 0 0 0-.101.032l-6.9 2.6a.915.915 0 1 0 .645 1.712l6.851-2.581a245.685 245.685 0 0 1 7.568-1.759c4.609-1.011 7.511-1.647 15.736-4.643a14.313 14.313 0 0 0 5.197-2.661l.016-.013a5.817 5.817 0 0 0 1.899-5.815.915.915 0 0 0-.54-.63l.285-.211a7.516 7.516 0 0 0 2.944-4.088.65.65 0 0 0 .019-.076c.195-.977.001-2.103-.518-3-.341-.59-.853-1.122-1.523-1.427.932-1.193 1.619-2.726 1.234-4.362l-.002-.009c-.201-.814-.589-1.47-1.134-1.946-.542-.473-1.191-.725-1.851-.814a4.593 4.593 0 0 0-1.282.018l.157-.257c.519-.803.734-1.64.644-2.446-.09-.808-.478-1.503-1.021-2.033-1.069-1.043-2.781-1.501-4.423-1.091a.849.849 0 0 0-.129.043 16.301 16.301 0 0 0-4.438 2.744 59.867 59.867 0 0 1-13.44 8.217l.319-.313.011-.011c1.267-1.242 2.551-2.501 3.463-3.463.96-1.013 1.551-2.358 1.389-3.63a2.918 2.918 0 0 0-.883-1.764c-.511-.485-1.197-.797-2.015-.937a5.423 5.423 0 0 0-2.766.241l-.009.004a24.642 24.642 0 0 0-3.736 1.763c-5.111 2.907-12.85 7.648-18.223 12.019a.915.915 0 1 0 1.155 1.419c5.252-4.272 12.887-8.955 17.976-11.849l.006-.004a22.808 22.808 0 0 1 3.456-1.632 3.588 3.588 0 0 1 1.828-.158l.004.001c.543.092.87.276 1.062.459.187.178.295.4.33.67.073.572-.197 1.395-.903 2.14-.885.934-2.146 2.171-3.426 3.426l-.011.01c-1.267 1.242-2.551 2.501-3.463 3.464a.915.915 0 0 0 1.1 1.434.938.938 0 0 0 .177-.045 61.739 61.739 0 0 0 17.788-10.069z" fill="#4285F4"/><path fill-rule="evenodd" clip-rule="evenodd" d="M87.826 72.614a11.15 11.15 0 0 1-6.664 2.198c-6.186 0-11.2-5.014-11.2-11.2 0-6.186 5.014-11.2 11.2-11.2 6.185 0 11.2 5.014 11.2 11.2 0 1.16-.177 2.279-.504 3.33a12.248 12.248 0 0 1 7.604-2.63c6.793 0 12.3 5.507 12.3 12.3 0 3.738-1.668 7.087-4.3 9.342l2.018 9.033c5.22.55 19.544 2.884 31.295 14.924a50.004 50.004 0 0 1 12.754 22.448.999.999 0 1 1-1.935.506 47.991 47.991 0 0 0-12.245-21.551l-.003-.004c-11.21-11.488-24.887-13.778-29.989-14.325a13.615 13.615 0 0 1-1.073 2.288c-.851 1.432-2.228 3.064-4.369 3.874-2.163.819-4.872.554-7.337-.591a12.905 12.905 0 0 1-5.82-5.438c-5.013 1.087-17.254 4.55-25.901 15.9-11.226 14.74-10.352 34.895-2.934 47.486l.002.003c11.556 19.742 43.434 28.482 72.969 13.24l-11.301-27.824-30.315.489a1 1 0 0 1-.032-2l30.999-.5a1 1 0 0 1 .943.624l11.9 29.3a1 1 0 0 1-.457 1.259c-30.443 16.182-64.092 7.502-76.432-13.577-7.781-13.209-8.706-34.253 3.067-49.712 9.293-12.197 22.5-15.688 27.43-16.72a1.008 1.008 0 0 1 .31-.141l3.305-7.16c-4.22-1.95-7.15-6.22-7.15-11.173 0-1.4.234-2.744.665-3.998zm1.394 5.102c.551 5.17 4.926 9.196 10.242 9.196 5.688 0 10.3-4.612 10.3-10.3 0-5.18-3.824-9.467-8.802-10.192a18.104 18.104 0 0 1-5.046 7.634c-2.096 1.88-4.11 2.984-6.694 3.662zm8.2 23.026a10.901 10.901 0 0 1-4.832-4.45l3.582-7.761.024-.058c1.04.286 2.136.439 3.268.439 2.275 0 4.405-.618 6.233-1.695l1.931 8.647a11.758 11.758 0 0 1-1.062 2.387c-.723 1.218-1.797 2.436-3.356 3.026-1.537.581-3.678.446-5.788-.535z" fill="#4285F4"/><path d="M160.099 79.165a14.476 14.476 0 0 0-3.569 4c-4.487 7.6.917 17.3 1.529 18.3a.916.916 0 0 0 .379.391c.894.487 1.926-.327 1.457-1.291-.612-.9-5.507-9.7-1.632-16.2a12.476 12.476 0 0 1 3.06-3.5l2.957-2.4-1.224-1.6-2.957 2.3z" fill="#4285F4"/><path d="M33.97 93.55l4.865 2.627.008.004a10.1 10.1 0 0 0 13.65-4.215 10.1 10.1 0 0 0-4.108-13.649l-4.23-2.25c-.415.533-.823 1.07-1.224 1.615l4.504 2.395.003.002a8.1 8.1 0 0 1 3.29 10.947l-.002.005a8.101 8.101 0 0 1-10.945 3.384l-5.018-2.71a76.35 76.35 0 0 0-.792 1.845z" fill="#fff"/><path d="M166.114 49.216h-.139a.761.761 0 0 1-.763-.208l-6.656-5.2a1.042 1.042 0 0 1 .477-1.862 1.04 1.04 0 0 1 .771.198l5.824 4.645 7.696-10.469a12.064 12.064 0 0 0-16.362-.277l-.139.138a12.07 12.07 0 0 0-3.734 13.142 12.054 12.054 0 0 0 6.26 7.046 12.064 12.064 0 0 0 13.49-2.161l.139-.139a11.994 11.994 0 0 0 1.733-16.154L166.668 48.8c-.135.194-.33.34-.554.416z" fill="#34A853"/><path d="M177.415 32.507a1.11 1.11 0 0 0-1.456.208l-2.635 3.605.694.763.693.831 2.912-3.951a1.112 1.112 0 0 0-.208-1.456z" fill="#8AB4F8"/></svg> +<svg width="217" height="216" viewBox="0 0 217 216" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M164.962 79.312a75.104 75.104 0 0 0-94.711-24.448 75.1 75.1 0 1 0 108.211 67.448 74.812 74.812 0 0 0-13.5-43z" fill="#D2E3FC"/><path d="m130.747 46.332 5.125-3.834a1.4 1.4 0 0 0 .282-1.96l-3.822-5.108a1.4 1.4 0 0 0-1.959-.283l-5.125 3.834a1.4 1.4 0 0 0-.282 1.96l3.821 5.108a1.4 1.4 0 0 0 1.96.283z" fill="#EA4335"/><path d="m119.762 30.012 2.7-2.7a2.397 2.397 0 0 0 .599-2.3l-1-3.7a2.19 2.19 0 0 0-1.599-1.6l-3.7-1a2.402 2.402 0 0 0-2.3.6l-2.7 2.7a2.204 2.204 0 0 0-.6 2.3l.899 3.7a2.506 2.506 0 0 0 1.701 1.6l3.7 1a2.398 2.398 0 0 0 2.3-.6z" fill="#EE5FFA"/><path d="m132.762 63.912-7.5 6a1.703 1.703 0 0 1-2.701-1l-1.5-9.5a1.71 1.71 0 0 1 .615-1.494 1.697 1.697 0 0 1 1.586-.306l9 3.4a1.81 1.81 0 0 1 1.002 1.32 1.796 1.796 0 0 1-.502 1.58zM51.61 91.497a9.1 9.1 0 0 0-3.7-12.3l-18.8-10a9.1 9.1 0 0 0-12.3 3.7v0a9.1 9.1 0 0 0 3.8 12.3l18.7 10.1a9.099 9.099 0 0 0 12.3-3.8z" stroke="#fff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M51.61 91.497a9.1 9.1 0 0 0-3.7-12.3l-18.8-10a9.1 9.1 0 0 0-12.3 3.7v0a9.1 9.1 0 0 0 3.8 12.3l18.7 10.1a9.099 9.099 0 0 0 12.3-3.8z" stroke="#FBBC04" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M107.062 75.912a3.995 3.995 0 0 1-1.6 2.8 3.302 3.302 0 0 1-3.8.3m24.9 44.3a28.303 28.303 0 0 0-.8 3.9c-.7 4.7.3 7.1.1 11.7a32.128 32.128 0 0 1-1 6.2m-34.745-15.6c1.1 5.2 2.1 10.4 3.1 15.6" stroke="#4285F4" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M160.662 80.112a14.482 14.482 0 0 0-3.2 3.7c-4.2 7.1 1 16.4 1.5 17.3" stroke="#8AB4F8" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M160.662 80.112a32.915 32.915 0 0 0 6-5.6c4.4-4.9 5.9-9.3 8.6-9.1a2.837 2.837 0 0 1 2.2 1.3c1 1.7-.2 4.7-3.3 7.4" stroke="#fff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M192.494 65.157c-.541-.81-1.251-1.307-2.08-1.459-.794-.146-1.563.049-2.215.345-1.274.58-2.418 1.694-3.095 2.515a26.207 26.207 0 0 1-8.153 6.065 10.465 10.465 0 0 0 1.316-2.19c.626-1.445.785-2.99.056-4.228a3.836 3.836 0 0 0-2.995-1.79c-.987-.072-1.824.292-2.547.858-.7.548-1.344 1.324-1.983 2.177-.369.493-.744 1.023-1.141 1.582-1.021 1.44-2.183 3.078-3.739 4.812a31.907 31.907 0 0 1-5.842 5.458 1 1 0 0 0 1.171 1.62 33.885 33.885 0 0 0 6.171-5.756c1.634-1.821 2.9-3.606 3.934-5.064.378-.533.725-1.022 1.048-1.454.624-.834 1.136-1.426 1.614-1.8.453-.355.814-.466 1.174-.439l.014.001c.56.034 1.101.35 1.405.822.265.463.319 1.265-.176 2.408-.489 1.13-1.458 2.44-2.926 3.718a.997.997 0 0 0-.342.798c-.778.24-1.571.43-2.374.57a.999.999 0 1 0 .345 1.97 21.503 21.503 0 0 0 5.329-1.668 28.204 28.204 0 0 0 10.172-7.182c.586-.715 1.506-1.58 2.392-1.982.434-.198.774-.245 1.026-.199.206.038.461.157.733.538.054.151.06.422-.088.874-.131.403-.327.788-.517 1.162l-.093.183c-1.172 1.866-3.79 3.847-6.693 5.596-2.875 1.732-5.858 3.138-7.537 3.879a1 1 0 0 0 .807 1.83c1.721-.76 4.788-2.204 7.763-3.996 2.789-1.68 6.113-3.787 7.713-6.743.115-.212.282-.39.485-.519a1.425 1.425 0 0 1 1.884.37c.263.493.286 1.065.101 1.729-.194.692-.596 1.409-1.062 2.062-3.631 5.063-9.006 8.16-15.258 9.92a1 1 0 1 0 .541 1.925c6.41-1.803 12.128-5.006 16.09-10.334a.992.992 0 0 0 .287-.299c.527-.841 1.781-.921 2.416-.174.182.361.198.826-.001 1.432-.212.646-.636 1.342-1.149 1.994l-.023.03c-3.525 4.86-8.896 7.864-15.065 9.626a1 1 0 1 0 .549 1.923c6.174-1.763 11.792-4.779 15.66-9.742.246.081.473.216.664.394.485.503.562 1.048.389 1.692-.19.71-.68 1.47-1.253 2.151l-.004.005c-4.233 5.099-11.823 9.304-18.364 10.967a.994.994 0 0 0-.388.188c-.743.59-.152 2.162-.04 2.845.198 1.217.472 2.984.771 5.174a1 1 0 1 0 1.981-.27 202.91 202.91 0 0 0-.947-6.237c6.644-1.88 14.157-6.128 18.524-11.387.646-.767 1.35-1.794 1.651-2.916.318-1.183.188-2.51-.904-3.625l-.019-.018-.006-.006a3.8 3.8 0 0 0-.862-.617c.299-.487.559-1.01.735-1.547.315-.96.394-2.078-.194-3.108a1.028 1.028 0 0 0-.076-.114 3.464 3.464 0 0 0-2.731-1.346l.014-.05c.285-1.02.314-2.186-.304-3.284a.706.706 0 0 0-.043-.07c-.757-1.122-2.1-1.65-3.372-1.448a2.55 2.55 0 0 0-.262-1.04 1.078 1.078 0 0 0-.062-.107z" fill="#8AB4F8"/><path d="m134.667 100.112 61.277.202a1.931 1.931 0 0 1 1.691.784 1.927 1.927 0 0 1 .234 1.85l-13.364 41.295a2 2 0 0 1-1.995 1.869h-72.8a2 2 0 0 1 0-4h8.252l13.058-39.367a4.055 4.055 0 0 1 3.647-2.633z" fill="#4285F4"/><path d="M144.231 146.627c1.7-2 5.16-5.042 6.96-7.042 2.761-3.068-.429-5.272-3.729-4.138-7.393 3.242-18.898 11.589-20.332 13.79-1.434 2.201 8.671 22.526 8.671 22.526 11.661-4.69 40.397-7.481 36.461-17.151 0-1.481 2.517-2.394 2.517-5.375-.172-1.189-1.201-2.382-1.295-3.555.861-1.938.632-3.199 0-4.495-.582-1.193-1.837-.899-2.926-1.893-.237-2.415 1.183-5.066-3.084-5.328-4.267-.262-9.133 6.765-11.839 7.684-2.706.918-11.404 4.977-11.404 4.977z" fill="#fff"/><path d="M144.231 146.627c1.7-2 5.16-5.042 6.96-7.042 2.761-3.068-.429-5.272-3.729-4.138-7.393 3.242-18.898 11.589-20.332 13.79-1.434 2.201 8.671 22.526 8.671 22.526 11.661-4.69 40.397-7.481 36.461-17.151 0-1.481 2.517-2.394 2.517-5.375-.172-1.189-1.201-2.382-1.295-3.555.861-1.938.632-3.199 0-4.495-.582-1.193-1.837-.899-2.926-1.893-.237-2.415 1.183-5.066-3.084-5.328-4.267-.262-9.133 6.765-11.839 7.684-2.706.918-11.404 4.977-11.404 4.977z" fill="#D2E3FC"/><path d="M162.662 137.303a14.469 14.469 0 0 1 3.885-2.419c1.049-.24 2.067.084 2.638.64.283.276.443.594.48.926.037.329-.038.753-.37 1.262l-.022.035a10.297 10.297 0 0 1-1.744 2.204l-.014.014c-6.619 6.618-11.303 9.833-19.949 12.781a.914.914 0 1 0 .591 1.732c7.861-2.68 12.61-5.616 18.241-10.882a.902.902 0 0 0 .321-.159l2.59-1.992c.745-.537 1.672-.797 2.414-.698.36.048.659.177.89.379.227.198.437.508.559 1 .277 1.189-.487 2.565-1.731 3.713l-.015.014-.011.011c-1 .999-2.093 1.899-3.265 2.689l-.013.009a73.26 73.26 0 0 1-9.676 5.727c-1.311.631-2.679 1.169-4.087 1.705l-.712.27c-1.176.445-2.379.9-3.561 1.407a.914.914 0 1 0 .721 1.682c1.143-.49 2.301-.928 3.477-1.373l.725-.275c1.416-.539 2.847-1.101 4.235-1.769l.007-.003a75.2 75.2 0 0 0 9.914-5.867 23.95 23.95 0 0 0 3.072-2.463.901.901 0 0 0 .21.024c.491 0 .9.272 1.195.781.299.516.407 1.171.314 1.689a5.686 5.686 0 0 1-2.228 3.061l-.03.022c-4.493 3.369-9.292 5.079-14.967 7.101-1.224.437-2.49.887-3.802 1.373a.915.915 0 1 0 .635 1.716c1.261-.466 2.493-.905 3.7-1.334 5.07-1.804 9.676-3.442 13.968-6.289a.95.95 0 0 0 .025.181 3.98 3.98 0 0 1-1.293 3.978 12.49 12.49 0 0 1-4.557 2.323 1.048 1.048 0 0 0-.074.023c-8.135 2.965-10.915 3.574-15.475 4.574-2.021.443-4.392.963-7.733 1.798a.848.848 0 0 0-.101.032l-6.9 2.6a.915.915 0 1 0 .645 1.712l6.851-2.581a245.685 245.685 0 0 1 7.568-1.759c4.609-1.011 7.511-1.647 15.736-4.643a14.313 14.313 0 0 0 5.197-2.661l.016-.013a5.817 5.817 0 0 0 1.899-5.815.915.915 0 0 0-.54-.63l.285-.211a7.516 7.516 0 0 0 2.944-4.088.65.65 0 0 0 .019-.076c.195-.977.001-2.103-.518-3-.341-.59-.853-1.122-1.523-1.427.932-1.193 1.619-2.726 1.234-4.362l-.002-.009c-.201-.814-.589-1.47-1.134-1.946-.542-.473-1.191-.725-1.851-.814a4.593 4.593 0 0 0-1.282.018l.157-.257c.519-.803.734-1.64.644-2.446-.09-.808-.478-1.503-1.021-2.033-1.069-1.043-2.781-1.501-4.423-1.091a.849.849 0 0 0-.129.043 16.301 16.301 0 0 0-4.438 2.744 59.867 59.867 0 0 1-13.44 8.217l.319-.313.011-.011c1.267-1.242 2.551-2.501 3.463-3.463.96-1.013 1.551-2.358 1.389-3.63a2.918 2.918 0 0 0-.883-1.764c-.511-.485-1.197-.797-2.015-.937a5.423 5.423 0 0 0-2.766.241l-.009.004a24.642 24.642 0 0 0-3.736 1.763c-5.111 2.907-12.85 7.648-18.223 12.019a.915.915 0 1 0 1.155 1.419c5.252-4.272 12.887-8.955 17.976-11.849l.006-.004a22.808 22.808 0 0 1 3.456-1.632 3.588 3.588 0 0 1 1.828-.158l.004.001c.543.092.87.276 1.062.459.187.178.295.4.33.67.073.572-.197 1.395-.903 2.14-.885.934-2.146 2.171-3.426 3.426l-.011.01c-1.267 1.242-2.551 2.501-3.463 3.464a.915.915 0 0 0 1.1 1.434.938.938 0 0 0 .177-.045 61.739 61.739 0 0 0 17.788-10.069z" fill="#4285F4"/><path fill-rule="evenodd" clip-rule="evenodd" d="M87.826 72.614a11.15 11.15 0 0 1-6.664 2.198c-6.186 0-11.2-5.014-11.2-11.2 0-6.186 5.014-11.2 11.2-11.2 6.185 0 11.2 5.014 11.2 11.2 0 1.16-.177 2.279-.504 3.33a12.248 12.248 0 0 1 7.604-2.63c6.793 0 12.3 5.507 12.3 12.3a12.27 12.27 0 0 1-4.3 9.342l2.018 9.033c5.22.55 19.544 2.884 31.295 14.924a50.004 50.004 0 0 1 12.754 22.448.999.999 0 1 1-1.935.506 47.991 47.991 0 0 0-12.245-21.551l-.003-.004c-11.21-11.488-24.887-13.778-29.989-14.325a13.615 13.615 0 0 1-1.073 2.288c-.851 1.432-2.228 3.064-4.369 3.874-2.163.819-4.872.554-7.337-.591a12.905 12.905 0 0 1-5.82-5.438c-5.013 1.087-17.254 4.55-25.901 15.9-11.226 14.74-10.352 34.895-2.934 47.486l.002.003c11.556 19.742 43.434 28.482 72.969 13.24l-11.301-27.824-30.315.489a1 1 0 0 1-.032-2l30.999-.5a1 1 0 0 1 .943.624l11.9 29.3a1 1 0 0 1-.457 1.259c-30.443 16.182-64.092 7.502-76.432-13.577-7.781-13.209-8.706-34.253 3.067-49.712 9.293-12.197 22.5-15.688 27.43-16.72a1.008 1.008 0 0 1 .31-.141l3.305-7.16c-4.22-1.95-7.15-6.22-7.15-11.173 0-1.4.234-2.744.665-3.998zm1.394 5.102c.551 5.17 4.926 9.196 10.242 9.196 5.688 0 10.3-4.612 10.3-10.3 0-5.18-3.824-9.467-8.802-10.192a18.104 18.104 0 0 1-5.046 7.634c-2.096 1.88-4.11 2.984-6.694 3.662zm8.2 23.026a10.901 10.901 0 0 1-4.832-4.45l3.582-7.761.024-.058a12.31 12.31 0 0 0 3.268.439c2.275 0 4.405-.618 6.233-1.695l1.931 8.647a11.758 11.758 0 0 1-1.062 2.387c-.723 1.218-1.797 2.436-3.356 3.026-1.537.581-3.678.446-5.788-.535z" fill="#4285F4"/><path d="M160.099 79.165a14.476 14.476 0 0 0-3.569 4c-4.487 7.6.917 17.3 1.529 18.3a.916.916 0 0 0 .379.391c.894.487 1.926-.327 1.457-1.291-.612-.9-5.507-9.7-1.632-16.2a12.476 12.476 0 0 1 3.06-3.5l2.957-2.4-1.224-1.6-2.957 2.3z" fill="#4285F4"/><path d="m33.97 93.55 4.865 2.627.008.004a10.1 10.1 0 0 0 13.65-4.215 10.1 10.1 0 0 0-4.108-13.649l-4.23-2.25c-.415.533-.823 1.07-1.224 1.615l4.504 2.395.003.002a8.1 8.1 0 0 1 3.29 10.947l-.002.005a8.101 8.101 0 0 1-10.945 3.384l-5.018-2.71a76.35 76.35 0 0 0-.792 1.845z" fill="#fff"/><path d="M166.114 49.216h-.139a.761.761 0 0 1-.763-.208l-6.656-5.2a1.042 1.042 0 0 1 .477-1.862 1.04 1.04 0 0 1 .771.198l5.824 4.645 7.696-10.469a12.064 12.064 0 0 0-16.362-.277l-.139.138a12.07 12.07 0 0 0-3.734 13.142 12.054 12.054 0 0 0 6.26 7.046 12.064 12.064 0 0 0 13.49-2.161l.139-.139a11.994 11.994 0 0 0 1.733-16.154L166.668 48.8a1.11 1.11 0 0 1-.554.416z" fill="#34A853"/><path d="M177.415 32.507a1.11 1.11 0 0 0-1.456.208l-2.635 3.605.694.763.693.831 2.912-3.951a1.112 1.112 0 0 0-.208-1.456z" fill="#8AB4F8"/></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/chromeos/images/switch_access_setup_guide_closing_dark.svg b/chrome/browser/resources/settings/chromeos/images/switch_access_setup_guide_closing_dark.svg index 62106251..7913bfe 100644 --- a/chrome/browser/resources/settings/chromeos/images/switch_access_setup_guide_closing_dark.svg +++ b/chrome/browser/resources/settings/chromeos/images/switch_access_setup_guide_closing_dark.svg
@@ -1 +1 @@ -<svg width="217" height="216" viewBox="0 0 217 216" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M164.962 79.312a75.104 75.104 0 0 0-94.711-24.448 75.1 75.1 0 1 0 108.211 67.448 74.812 74.812 0 0 0-13.5-43z" fill="#8AB4F8" fill-opacity=".4"/><path d="M130.747 46.332l5.125-3.834a1.4 1.4 0 0 0 .282-1.96l-3.822-5.108a1.4 1.4 0 0 0-1.959-.283l-5.125 3.834a1.4 1.4 0 0 0-.282 1.96l3.821 5.108a1.4 1.4 0 0 0 1.96.283z" fill="#EA4335"/><path d="M119.762 30.012l2.7-2.7a2.397 2.397 0 0 0 .599-2.3l-1-3.7a2.19 2.19 0 0 0-1.599-1.6l-3.7-1a2.402 2.402 0 0 0-2.3.6l-2.7 2.7a2.204 2.204 0 0 0-.6 2.3l.899 3.7a2.506 2.506 0 0 0 1.701 1.6l3.7 1a2.398 2.398 0 0 0 2.3-.6z" fill="#F882FE"/><path d="M132.762 63.912l-7.5 6a1.703 1.703 0 0 1-2.701-1l-1.5-9.5a1.71 1.71 0 0 1 .615-1.494 1.697 1.697 0 0 1 1.586-.306l9 3.4a1.81 1.81 0 0 1 1.002 1.32 1.796 1.796 0 0 1-.502 1.58zM51.61 91.497a9.1 9.1 0 0 0-3.7-12.3l-18.8-10a9.1 9.1 0 0 0-12.3 3.7v0a9.1 9.1 0 0 0 3.8 12.3l18.7 10.1a9.099 9.099 0 0 0 12.3-3.8z" stroke="#323336" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M51.61 91.497a9.1 9.1 0 0 0-3.7-12.3l-18.8-10a9.1 9.1 0 0 0-12.3 3.7v0a9.1 9.1 0 0 0 3.8 12.3l18.7 10.1a9.099 9.099 0 0 0 12.3-3.8z" stroke="#FCC934" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M107.062 75.912a3.995 3.995 0 0 1-1.6 2.8 3.302 3.302 0 0 1-3.8.3M126.562 123.312a28.303 28.303 0 0 0-.8 3.9c-.7 4.7.3 7.1.1 11.7a32.128 32.128 0 0 1-1 6.2M90.117 129.512c1.1 5.2 2.1 10.4 3.1 15.6" stroke="#669DF6" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M192.494 65.157c-.541-.81-1.251-1.307-2.08-1.459-.794-.146-1.563.049-2.215.345-1.274.58-2.418 1.694-3.095 2.515a26.207 26.207 0 0 1-8.153 6.065 10.465 10.465 0 0 0 1.316-2.19c.626-1.445.785-2.99.056-4.228a3.836 3.836 0 0 0-2.995-1.79c-.987-.072-1.824.292-2.547.858-.7.548-1.344 1.324-1.983 2.177-.369.493-.744 1.023-1.141 1.582-1.021 1.44-2.183 3.078-3.739 4.812a31.907 31.907 0 0 1-5.842 5.458 1 1 0 0 0 1.171 1.62 33.885 33.885 0 0 0 6.171-5.756c1.634-1.821 2.9-3.606 3.934-5.064.378-.533.725-1.022 1.048-1.454.624-.834 1.136-1.426 1.614-1.8.453-.355.814-.466 1.174-.439l.014.001c.56.034 1.101.35 1.405.822.265.463.319 1.265-.176 2.408-.489 1.13-1.458 2.44-2.926 3.718a.997.997 0 0 0-.342.798c-.778.24-1.571.43-2.374.57a.999.999 0 1 0 .345 1.97 21.503 21.503 0 0 0 5.329-1.668 28.204 28.204 0 0 0 10.172-7.182c.586-.715 1.506-1.58 2.392-1.982.434-.198.774-.245 1.026-.199.206.038.461.157.733.538.054.151.06.422-.088.874-.131.403-.327.788-.517 1.162l-.093.183c-1.172 1.866-3.79 3.847-6.693 5.596-2.875 1.732-5.858 3.138-7.537 3.879a1 1 0 0 0 .807 1.83c1.721-.76 4.788-2.204 7.763-3.996 2.789-1.68 6.113-3.787 7.713-6.743.115-.212.282-.39.485-.519a1.425 1.425 0 0 1 1.884.37c.263.493.286 1.065.101 1.729-.194.692-.596 1.409-1.062 2.062-3.631 5.063-9.006 8.16-15.258 9.92a1 1 0 1 0 .541 1.925c6.41-1.803 12.128-5.006 16.09-10.334a.992.992 0 0 0 .287-.299c.527-.841 1.781-.921 2.416-.174.182.361.198.826-.001 1.432-.212.646-.636 1.342-1.149 1.994l-.023.03c-3.525 4.86-8.896 7.864-15.065 9.626a1 1 0 1 0 .549 1.923c6.174-1.763 11.792-4.779 15.66-9.742.246.081.473.216.664.394.485.503.562 1.048.389 1.692-.19.71-.68 1.47-1.253 2.151l-.004.005c-4.233 5.099-11.823 9.304-18.364 10.967a.994.994 0 0 0-.388.188c-.743.59-.152 2.162-.04 2.845.198 1.217.472 2.984.771 5.174a1 1 0 1 0 1.981-.27 202.91 202.91 0 0 0-.947-6.237c6.644-1.88 14.157-6.128 18.524-11.387.646-.767 1.35-1.794 1.651-2.916.318-1.183.188-2.51-.904-3.625l-.019-.018-.006-.006a3.8 3.8 0 0 0-.862-.617c.299-.487.559-1.01.735-1.547.315-.96.394-2.078-.194-3.108a1.028 1.028 0 0 0-.076-.114 3.464 3.464 0 0 0-2.731-1.346l.014-.05c.285-1.02.314-2.186-.304-3.284a.706.706 0 0 0-.043-.07c-.757-1.122-2.1-1.65-3.372-1.448a2.55 2.55 0 0 0-.262-1.04 1.078 1.078 0 0 0-.062-.107z" fill="#1A73E8" fill-opacity=".4"/><path d="M160.662 80.112a14.482 14.482 0 0 0-3.2 3.7c-4.2 7.1 1 16.4 1.5 17.3" stroke="#1A73E8" stroke-opacity=".4" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M134.667 100.112l61.277.202a1.931 1.931 0 0 1 1.691.784 1.927 1.927 0 0 1 .234 1.85l-13.364 41.295a2 2 0 0 1-1.995 1.869h-72.8a2 2 0 0 1 0-4h8.252l13.058-39.367a4.055 4.055 0 0 1 3.647-2.633z" fill="#669DF6"/><path d="M144.231 146.627c1.7-2 5.16-5.042 6.96-7.042 2.761-3.068-.429-5.272-3.729-4.138-7.393 3.242-18.898 11.589-20.332 13.79-1.434 2.201 8.671 22.526 8.671 22.526 11.661-4.69 40.397-7.481 36.461-17.151 0-1.481 2.517-2.394 2.517-5.375-.172-1.189-1.201-2.382-1.295-3.555.861-1.938.632-3.199 0-4.495-.582-1.193-1.837-.899-2.926-1.893-.237-2.415 1.183-5.066-3.084-5.328-4.267-.262-9.133 6.765-11.839 7.684-2.706.918-11.404 4.977-11.404 4.977z" fill="#323336"/><path d="M144.231 146.627c1.7-2 5.16-5.042 6.96-7.042 2.761-3.068-.429-5.272-3.729-4.138-7.393 3.242-18.898 11.589-20.332 13.79-1.434 2.201 8.671 22.526 8.671 22.526 11.661-4.69 40.397-7.481 36.461-17.151 0-1.481 2.517-2.394 2.517-5.375-.172-1.189-1.201-2.382-1.295-3.555.861-1.938.632-3.199 0-4.495-.582-1.193-1.837-.899-2.926-1.893-.237-2.415 1.183-5.066-3.084-5.328-4.267-.262-9.133 6.765-11.839 7.684-2.706.918-11.404 4.977-11.404 4.977z" fill="#8AB4F8" fill-opacity=".4"/><path d="M162.662 137.303a14.469 14.469 0 0 1 3.885-2.419c1.049-.24 2.067.084 2.638.64.283.276.443.594.48.926.037.329-.038.753-.37 1.262l-.022.035a10.297 10.297 0 0 1-1.744 2.204l-.014.014c-6.619 6.618-11.303 9.833-19.949 12.781a.914.914 0 1 0 .591 1.732c7.861-2.68 12.61-5.616 18.241-10.882a.902.902 0 0 0 .321-.159l2.59-1.992c.745-.537 1.672-.797 2.414-.698.36.048.659.177.89.379.227.198.437.508.559 1 .277 1.189-.487 2.565-1.731 3.713l-.015.014-.011.011c-1 .999-2.093 1.899-3.265 2.689l-.013.009a73.26 73.26 0 0 1-9.676 5.727c-1.311.631-2.679 1.169-4.087 1.705l-.712.27c-1.176.445-2.379.9-3.561 1.407a.914.914 0 1 0 .721 1.682c1.143-.49 2.301-.928 3.477-1.373l.725-.275c1.416-.539 2.847-1.101 4.235-1.769l.007-.003a75.2 75.2 0 0 0 9.914-5.867 23.95 23.95 0 0 0 3.072-2.463.901.901 0 0 0 .21.024c.491 0 .9.272 1.195.781.299.516.407 1.171.314 1.689a5.686 5.686 0 0 1-2.228 3.061l-.03.022c-4.493 3.369-9.292 5.079-14.967 7.101-1.224.437-2.49.887-3.802 1.373a.915.915 0 1 0 .635 1.716c1.261-.466 2.493-.905 3.7-1.334 5.07-1.804 9.676-3.442 13.968-6.289a.95.95 0 0 0 .025.181 3.98 3.98 0 0 1-1.293 3.978 12.49 12.49 0 0 1-4.557 2.323 1.048 1.048 0 0 0-.074.023c-8.135 2.965-10.915 3.574-15.475 4.574-2.021.443-4.392.963-7.733 1.798a.848.848 0 0 0-.101.032l-6.9 2.6a.915.915 0 1 0 .645 1.712l6.851-2.581a245.685 245.685 0 0 1 7.568-1.759c4.609-1.011 7.511-1.647 15.736-4.643a14.313 14.313 0 0 0 5.197-2.661l.016-.013a5.817 5.817 0 0 0 1.899-5.815.915.915 0 0 0-.54-.63l.285-.211a7.516 7.516 0 0 0 2.944-4.088.65.65 0 0 0 .019-.076c.195-.977.001-2.103-.518-3-.341-.59-.853-1.122-1.523-1.427.932-1.193 1.619-2.726 1.234-4.362l-.002-.009c-.201-.814-.589-1.47-1.134-1.946-.542-.473-1.191-.725-1.851-.814a4.593 4.593 0 0 0-1.282.018l.157-.257c.519-.803.734-1.64.644-2.446-.09-.808-.478-1.503-1.021-2.033-1.069-1.043-2.781-1.501-4.423-1.091a.849.849 0 0 0-.129.043 16.301 16.301 0 0 0-4.438 2.744 59.867 59.867 0 0 1-13.44 8.217l.319-.313.011-.011c1.267-1.242 2.551-2.501 3.463-3.463.96-1.013 1.551-2.358 1.389-3.63a2.918 2.918 0 0 0-.883-1.764c-.511-.485-1.197-.797-2.015-.937a5.423 5.423 0 0 0-2.766.241l-.009.004a24.642 24.642 0 0 0-3.736 1.763c-5.111 2.907-12.85 7.648-18.223 12.019a.915.915 0 1 0 1.155 1.419c5.252-4.272 12.887-8.955 17.976-11.849l.006-.004a22.808 22.808 0 0 1 3.456-1.632 3.588 3.588 0 0 1 1.828-.158l.004.001c.543.092.87.276 1.062.459.187.178.295.4.33.67.073.572-.197 1.395-.903 2.14-.885.934-2.146 2.171-3.426 3.426l-.011.01c-1.267 1.242-2.551 2.501-3.463 3.464a.915.915 0 0 0 1.1 1.434.938.938 0 0 0 .177-.045 61.739 61.739 0 0 0 17.788-10.069z" fill="#669DF6"/><path fill-rule="evenodd" clip-rule="evenodd" d="M87.826 72.614a11.15 11.15 0 0 1-6.664 2.198c-6.186 0-11.2-5.014-11.2-11.2 0-6.186 5.014-11.2 11.2-11.2 6.185 0 11.2 5.014 11.2 11.2 0 1.16-.177 2.279-.504 3.33a12.248 12.248 0 0 1 7.604-2.63c6.793 0 12.3 5.507 12.3 12.3 0 3.738-1.668 7.087-4.3 9.342l2.018 9.033c5.22.55 19.544 2.884 31.295 14.924a50.004 50.004 0 0 1 12.754 22.448.999.999 0 1 1-1.935.506 47.991 47.991 0 0 0-12.245-21.551l-.003-.004c-11.21-11.488-24.887-13.778-29.989-14.325a13.615 13.615 0 0 1-1.073 2.288c-.851 1.432-2.228 3.064-4.369 3.874-2.163.819-4.872.554-7.337-.591a12.905 12.905 0 0 1-5.82-5.438c-5.013 1.087-17.254 4.55-25.901 15.9-11.226 14.74-10.352 34.895-2.934 47.486l.002.003c11.556 19.742 43.434 28.482 72.969 13.24l-11.301-27.824-30.315.489a1 1 0 0 1-.032-2l30.999-.5a1 1 0 0 1 .943.624l11.9 29.3a1 1 0 0 1-.457 1.259c-30.443 16.182-64.092 7.502-76.432-13.577-7.781-13.209-8.706-34.253 3.067-49.712 9.293-12.197 22.5-15.688 27.43-16.72a1.008 1.008 0 0 1 .31-.141l3.305-7.16c-4.22-1.95-7.15-6.22-7.15-11.173 0-1.4.234-2.744.665-3.998zm1.394 5.102c.551 5.17 4.926 9.196 10.242 9.196 5.688 0 10.3-4.612 10.3-10.3 0-5.18-3.824-9.467-8.802-10.192a18.104 18.104 0 0 1-5.046 7.634c-2.096 1.88-4.11 2.984-6.694 3.662zm8.2 23.026a10.901 10.901 0 0 1-4.832-4.45l3.582-7.761.024-.058c1.04.286 2.136.439 3.268.439 2.275 0 4.405-.618 6.233-1.695l1.931 8.647a11.758 11.758 0 0 1-1.062 2.387c-.723 1.218-1.797 2.436-3.356 3.026-1.537.581-3.678.446-5.788-.535z" fill="#669DF6"/><path d="M160.099 79.165a14.476 14.476 0 0 0-3.569 4c-4.487 7.6.917 17.3 1.529 18.3a.916.916 0 0 0 .379.391c.894.487 1.926-.327 1.457-1.291-.612-.9-5.507-9.7-1.632-16.2a12.476 12.476 0 0 1 3.06-3.5l2.957-2.4-1.224-1.6-2.957 2.3z" fill="#669DF6"/><path d="M33.97 93.55l4.865 2.627.008.004a10.1 10.1 0 0 0 13.65-4.215 10.1 10.1 0 0 0-4.108-13.649l-4.23-2.25c-.415.533-.823 1.07-1.224 1.615l4.504 2.395.003.002a8.1 8.1 0 0 1 3.29 10.947l-.002.005a8.101 8.101 0 0 1-10.945 3.384l-5.018-2.71a76.35 76.35 0 0 0-.792 1.845z" fill="#323336"/><path d="M166.114 49.216h-.139a.761.761 0 0 1-.763-.208l-6.656-5.2a1.042 1.042 0 0 1 .477-1.862 1.04 1.04 0 0 1 .771.198l5.824 4.645 7.696-10.469a12.064 12.064 0 0 0-16.362-.277l-.139.138a12.07 12.07 0 0 0-3.734 13.142 12.054 12.054 0 0 0 6.26 7.046 12.064 12.064 0 0 0 13.49-2.161l.139-.139a11.994 11.994 0 0 0 1.733-16.154L166.668 48.8c-.135.194-.33.34-.554.416z" fill="#5BB974"/><path d="M177.415 32.507a1.11 1.11 0 0 0-1.456.208l-2.635 3.605.694.763.693.831 2.912-3.951a1.112 1.112 0 0 0-.208-1.456z" fill="#1A73E8" fill-opacity=".4"/></svg> +<svg width="217" height="216" viewBox="0 0 217 216" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M164.962 79.312a75.104 75.104 0 0 0-94.711-24.448 75.1 75.1 0 1 0 108.211 67.448 74.812 74.812 0 0 0-13.5-43z" fill="#8AB4F8" fill-opacity=".4"/><path d="m130.747 46.332 5.125-3.834a1.4 1.4 0 0 0 .282-1.96l-3.822-5.108a1.4 1.4 0 0 0-1.959-.283l-5.125 3.834a1.4 1.4 0 0 0-.282 1.96l3.821 5.108a1.4 1.4 0 0 0 1.96.283z" fill="#EA4335"/><path d="m119.762 30.012 2.7-2.7a2.397 2.397 0 0 0 .599-2.3l-1-3.7a2.19 2.19 0 0 0-1.599-1.6l-3.7-1a2.402 2.402 0 0 0-2.3.6l-2.7 2.7a2.204 2.204 0 0 0-.6 2.3l.899 3.7a2.506 2.506 0 0 0 1.701 1.6l3.7 1a2.398 2.398 0 0 0 2.3-.6z" fill="#F882FE"/><path d="m132.762 63.912-7.5 6a1.703 1.703 0 0 1-2.701-1l-1.5-9.5a1.71 1.71 0 0 1 .615-1.494 1.697 1.697 0 0 1 1.586-.306l9 3.4a1.81 1.81 0 0 1 1.002 1.32 1.796 1.796 0 0 1-.502 1.58zM51.61 91.497a9.1 9.1 0 0 0-3.7-12.3l-18.8-10a9.1 9.1 0 0 0-12.3 3.7v0a9.1 9.1 0 0 0 3.8 12.3l18.7 10.1a9.099 9.099 0 0 0 12.3-3.8z" stroke="#323336" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M51.61 91.497a9.1 9.1 0 0 0-3.7-12.3l-18.8-10a9.1 9.1 0 0 0-12.3 3.7v0a9.1 9.1 0 0 0 3.8 12.3l18.7 10.1a9.099 9.099 0 0 0 12.3-3.8z" stroke="#FCC934" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M107.062 75.912a3.995 3.995 0 0 1-1.6 2.8 3.302 3.302 0 0 1-3.8.3m24.9 44.3a28.303 28.303 0 0 0-.8 3.9c-.7 4.7.3 7.1.1 11.7a32.128 32.128 0 0 1-1 6.2m-34.745-15.6c1.1 5.2 2.1 10.4 3.1 15.6" stroke="#669DF6" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M192.494 65.157c-.541-.81-1.251-1.307-2.08-1.459-.794-.146-1.563.049-2.215.345-1.274.58-2.418 1.694-3.095 2.515a26.207 26.207 0 0 1-8.153 6.065 10.465 10.465 0 0 0 1.316-2.19c.626-1.445.785-2.99.056-4.228a3.836 3.836 0 0 0-2.995-1.79c-.987-.072-1.824.292-2.547.858-.7.548-1.344 1.324-1.983 2.177-.369.493-.744 1.023-1.141 1.582-1.021 1.44-2.183 3.078-3.739 4.812a31.907 31.907 0 0 1-5.842 5.458 1 1 0 0 0 1.171 1.62 33.885 33.885 0 0 0 6.171-5.756c1.634-1.821 2.9-3.606 3.934-5.064.378-.533.725-1.022 1.048-1.454.624-.834 1.136-1.426 1.614-1.8.453-.355.814-.466 1.174-.439l.014.001c.56.034 1.101.35 1.405.822.265.463.319 1.265-.176 2.408-.489 1.13-1.458 2.44-2.926 3.718a.997.997 0 0 0-.342.798c-.778.24-1.571.43-2.374.57a.999.999 0 1 0 .345 1.97 21.503 21.503 0 0 0 5.329-1.668 28.204 28.204 0 0 0 10.172-7.182c.586-.715 1.506-1.58 2.392-1.982.434-.198.774-.245 1.026-.199.206.038.461.157.733.538.054.151.06.422-.088.874-.131.403-.327.788-.517 1.162l-.093.183c-1.172 1.866-3.79 3.847-6.693 5.596-2.875 1.732-5.858 3.138-7.537 3.879a1 1 0 0 0 .807 1.83c1.721-.76 4.788-2.204 7.763-3.996 2.789-1.68 6.113-3.787 7.713-6.743.115-.212.282-.39.485-.519a1.425 1.425 0 0 1 1.884.37c.263.493.286 1.065.101 1.729-.194.692-.596 1.409-1.062 2.062-3.631 5.063-9.006 8.16-15.258 9.92a1 1 0 1 0 .541 1.925c6.41-1.803 12.128-5.006 16.09-10.334a.992.992 0 0 0 .287-.299c.527-.841 1.781-.921 2.416-.174.182.361.198.826-.001 1.432-.212.646-.636 1.342-1.149 1.994l-.023.03c-3.525 4.86-8.896 7.864-15.065 9.626a1 1 0 1 0 .549 1.923c6.174-1.763 11.792-4.779 15.66-9.742.246.081.473.216.664.394.485.503.562 1.048.389 1.692-.19.71-.68 1.47-1.253 2.151l-.004.005c-4.233 5.099-11.823 9.304-18.364 10.967a.994.994 0 0 0-.388.188c-.743.59-.152 2.162-.04 2.845.198 1.217.472 2.984.771 5.174a1 1 0 1 0 1.981-.27 202.91 202.91 0 0 0-.947-6.237c6.644-1.88 14.157-6.128 18.524-11.387.646-.767 1.35-1.794 1.651-2.916.318-1.183.188-2.51-.904-3.625l-.019-.018-.006-.006a3.8 3.8 0 0 0-.862-.617c.299-.487.559-1.01.735-1.547.315-.96.394-2.078-.194-3.108a1.028 1.028 0 0 0-.076-.114 3.464 3.464 0 0 0-2.731-1.346l.014-.05c.285-1.02.314-2.186-.304-3.284a.706.706 0 0 0-.043-.07c-.757-1.122-2.1-1.65-3.372-1.448a2.55 2.55 0 0 0-.262-1.04 1.078 1.078 0 0 0-.062-.107z" fill="#1A73E8" fill-opacity=".4"/><path d="M160.662 80.112a14.482 14.482 0 0 0-3.2 3.7c-4.2 7.1 1 16.4 1.5 17.3" stroke="#1A73E8" stroke-opacity=".4" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="m134.667 100.112 61.277.202a1.931 1.931 0 0 1 1.691.784 1.927 1.927 0 0 1 .234 1.85l-13.364 41.295a2 2 0 0 1-1.995 1.869h-72.8a2 2 0 0 1 0-4h8.252l13.058-39.367a4.055 4.055 0 0 1 3.647-2.633z" fill="#669DF6"/><path d="M144.231 146.627c1.7-2 5.16-5.042 6.96-7.042 2.761-3.068-.429-5.272-3.729-4.138-7.393 3.242-18.898 11.589-20.332 13.79-1.434 2.201 8.671 22.526 8.671 22.526 11.661-4.69 40.397-7.481 36.461-17.151 0-1.481 2.517-2.394 2.517-5.375-.172-1.189-1.201-2.382-1.295-3.555.861-1.938.632-3.199 0-4.495-.582-1.193-1.837-.899-2.926-1.893-.237-2.415 1.183-5.066-3.084-5.328-4.267-.262-9.133 6.765-11.839 7.684-2.706.918-11.404 4.977-11.404 4.977z" fill="#323336"/><path d="M144.231 146.627c1.7-2 5.16-5.042 6.96-7.042 2.761-3.068-.429-5.272-3.729-4.138-7.393 3.242-18.898 11.589-20.332 13.79-1.434 2.201 8.671 22.526 8.671 22.526 11.661-4.69 40.397-7.481 36.461-17.151 0-1.481 2.517-2.394 2.517-5.375-.172-1.189-1.201-2.382-1.295-3.555.861-1.938.632-3.199 0-4.495-.582-1.193-1.837-.899-2.926-1.893-.237-2.415 1.183-5.066-3.084-5.328-4.267-.262-9.133 6.765-11.839 7.684-2.706.918-11.404 4.977-11.404 4.977z" fill="#8AB4F8" fill-opacity=".4"/><path d="M162.662 137.303a14.469 14.469 0 0 1 3.885-2.419c1.049-.24 2.067.084 2.638.64.283.276.443.594.48.926.037.329-.038.753-.37 1.262l-.022.035a10.297 10.297 0 0 1-1.744 2.204l-.014.014c-6.619 6.618-11.303 9.833-19.949 12.781a.914.914 0 1 0 .591 1.732c7.861-2.68 12.61-5.616 18.241-10.882a.902.902 0 0 0 .321-.159l2.59-1.992c.745-.537 1.672-.797 2.414-.698.36.048.659.177.89.379.227.198.437.508.559 1 .277 1.189-.487 2.565-1.731 3.713l-.015.014-.011.011c-1 .999-2.093 1.899-3.265 2.689l-.013.009a73.26 73.26 0 0 1-9.676 5.727c-1.311.631-2.679 1.169-4.087 1.705l-.712.27c-1.176.445-2.379.9-3.561 1.407a.914.914 0 1 0 .721 1.682c1.143-.49 2.301-.928 3.477-1.373l.725-.275c1.416-.539 2.847-1.101 4.235-1.769l.007-.003a75.2 75.2 0 0 0 9.914-5.867 23.95 23.95 0 0 0 3.072-2.463.901.901 0 0 0 .21.024c.491 0 .9.272 1.195.781.299.516.407 1.171.314 1.689a5.686 5.686 0 0 1-2.228 3.061l-.03.022c-4.493 3.369-9.292 5.079-14.967 7.101-1.224.437-2.49.887-3.802 1.373a.915.915 0 1 0 .635 1.716c1.261-.466 2.493-.905 3.7-1.334 5.07-1.804 9.676-3.442 13.968-6.289a.95.95 0 0 0 .025.181 3.98 3.98 0 0 1-1.293 3.978 12.49 12.49 0 0 1-4.557 2.323 1.048 1.048 0 0 0-.074.023c-8.135 2.965-10.915 3.574-15.475 4.574-2.021.443-4.392.963-7.733 1.798a.848.848 0 0 0-.101.032l-6.9 2.6a.915.915 0 1 0 .645 1.712l6.851-2.581a245.685 245.685 0 0 1 7.568-1.759c4.609-1.011 7.511-1.647 15.736-4.643a14.313 14.313 0 0 0 5.197-2.661l.016-.013a5.817 5.817 0 0 0 1.899-5.815.915.915 0 0 0-.54-.63l.285-.211a7.516 7.516 0 0 0 2.944-4.088.65.65 0 0 0 .019-.076c.195-.977.001-2.103-.518-3-.341-.59-.853-1.122-1.523-1.427.932-1.193 1.619-2.726 1.234-4.362l-.002-.009c-.201-.814-.589-1.47-1.134-1.946-.542-.473-1.191-.725-1.851-.814a4.593 4.593 0 0 0-1.282.018l.157-.257c.519-.803.734-1.64.644-2.446-.09-.808-.478-1.503-1.021-2.033-1.069-1.043-2.781-1.501-4.423-1.091a.849.849 0 0 0-.129.043 16.301 16.301 0 0 0-4.438 2.744 59.867 59.867 0 0 1-13.44 8.217l.319-.313.011-.011c1.267-1.242 2.551-2.501 3.463-3.463.96-1.013 1.551-2.358 1.389-3.63a2.918 2.918 0 0 0-.883-1.764c-.511-.485-1.197-.797-2.015-.937a5.423 5.423 0 0 0-2.766.241l-.009.004a24.642 24.642 0 0 0-3.736 1.763c-5.111 2.907-12.85 7.648-18.223 12.019a.915.915 0 1 0 1.155 1.419c5.252-4.272 12.887-8.955 17.976-11.849l.006-.004a22.808 22.808 0 0 1 3.456-1.632 3.588 3.588 0 0 1 1.828-.158l.004.001c.543.092.87.276 1.062.459.187.178.295.4.33.67.073.572-.197 1.395-.903 2.14-.885.934-2.146 2.171-3.426 3.426l-.011.01c-1.267 1.242-2.551 2.501-3.463 3.464a.915.915 0 0 0 1.1 1.434.938.938 0 0 0 .177-.045 61.739 61.739 0 0 0 17.788-10.069z" fill="#669DF6"/><path fill-rule="evenodd" clip-rule="evenodd" d="M87.826 72.614a11.15 11.15 0 0 1-6.664 2.198c-6.186 0-11.2-5.014-11.2-11.2 0-6.186 5.014-11.2 11.2-11.2 6.185 0 11.2 5.014 11.2 11.2 0 1.16-.177 2.279-.504 3.33a12.248 12.248 0 0 1 7.604-2.63c6.793 0 12.3 5.507 12.3 12.3a12.27 12.27 0 0 1-4.3 9.342l2.018 9.033c5.22.55 19.544 2.884 31.295 14.924a50.004 50.004 0 0 1 12.754 22.448.999.999 0 1 1-1.935.506 47.991 47.991 0 0 0-12.245-21.551l-.003-.004c-11.21-11.488-24.887-13.778-29.989-14.325a13.615 13.615 0 0 1-1.073 2.288c-.851 1.432-2.228 3.064-4.369 3.874-2.163.819-4.872.554-7.337-.591a12.905 12.905 0 0 1-5.82-5.438c-5.013 1.087-17.254 4.55-25.901 15.9-11.226 14.74-10.352 34.895-2.934 47.486l.002.003c11.556 19.742 43.434 28.482 72.969 13.24l-11.301-27.824-30.315.489a1 1 0 0 1-.032-2l30.999-.5a1 1 0 0 1 .943.624l11.9 29.3a1 1 0 0 1-.457 1.259c-30.443 16.182-64.092 7.502-76.432-13.577-7.781-13.209-8.706-34.253 3.067-49.712 9.293-12.197 22.5-15.688 27.43-16.72a1.008 1.008 0 0 1 .31-.141l3.305-7.16c-4.22-1.95-7.15-6.22-7.15-11.173 0-1.4.234-2.744.665-3.998zm1.394 5.102c.551 5.17 4.926 9.196 10.242 9.196 5.688 0 10.3-4.612 10.3-10.3 0-5.18-3.824-9.467-8.802-10.192a18.104 18.104 0 0 1-5.046 7.634c-2.096 1.88-4.11 2.984-6.694 3.662zm8.2 23.026a10.901 10.901 0 0 1-4.832-4.45l3.582-7.761.024-.058a12.31 12.31 0 0 0 3.268.439c2.275 0 4.405-.618 6.233-1.695l1.931 8.647a11.758 11.758 0 0 1-1.062 2.387c-.723 1.218-1.797 2.436-3.356 3.026-1.537.581-3.678.446-5.788-.535z" fill="#669DF6"/><path d="M160.099 79.165a14.476 14.476 0 0 0-3.569 4c-4.487 7.6.917 17.3 1.529 18.3a.916.916 0 0 0 .379.391c.894.487 1.926-.327 1.457-1.291-.612-.9-5.507-9.7-1.632-16.2a12.476 12.476 0 0 1 3.06-3.5l2.957-2.4-1.224-1.6-2.957 2.3z" fill="#669DF6"/><path d="m33.97 93.55 4.865 2.627.008.004a10.1 10.1 0 0 0 13.65-4.215 10.1 10.1 0 0 0-4.108-13.649l-4.23-2.25c-.415.533-.823 1.07-1.224 1.615l4.504 2.395.003.002a8.1 8.1 0 0 1 3.29 10.947l-.002.005a8.101 8.101 0 0 1-10.945 3.384l-5.018-2.71a76.35 76.35 0 0 0-.792 1.845z" fill="#323336"/><path d="M166.114 49.216h-.139a.761.761 0 0 1-.763-.208l-6.656-5.2a1.042 1.042 0 0 1 .477-1.862 1.04 1.04 0 0 1 .771.198l5.824 4.645 7.696-10.469a12.064 12.064 0 0 0-16.362-.277l-.139.138a12.07 12.07 0 0 0-3.734 13.142 12.054 12.054 0 0 0 6.26 7.046 12.064 12.064 0 0 0 13.49-2.161l.139-.139a11.994 11.994 0 0 0 1.733-16.154L166.668 48.8a1.11 1.11 0 0 1-.554.416z" fill="#5BB974"/><path d="M177.415 32.507a1.11 1.11 0 0 0-1.456.208l-2.635 3.605.694.763.693.831 2.912-3.951a1.112 1.112 0 0 0-.208-1.456z" fill="#1A73E8" fill-opacity=".4"/></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/chromeos/multidevice_page/multidevice_permissions_setup_dialog.js b/chrome/browser/resources/settings/chromeos/multidevice_page/multidevice_permissions_setup_dialog.js index 5ecf439..1ac67d7 100644 --- a/chrome/browser/resources/settings/chromeos/multidevice_page/multidevice_permissions_setup_dialog.js +++ b/chrome/browser/resources/settings/chromeos/multidevice_page/multidevice_permissions_setup_dialog.js
@@ -399,10 +399,6 @@ /** @private */ getCurrentScreen_() { - if (!this.combinedSetupSupported && !this.showCameraRoll) { - return PhoneHubPermissionsSetupFlowScreens.NOT_APPLICABLE; - } - if (this.flowState_ === SetupFlowStatus.INTRO) { return PhoneHubPermissionsSetupFlowScreens.INTRO; }
diff --git a/chrome/browser/resources/settings/images/cookies_banner.svg b/chrome/browser/resources/settings/images/cookies_banner.svg index 94291d94..a60310f 100644 --- a/chrome/browser/resources/settings/images/cookies_banner.svg +++ b/chrome/browser/resources/settings/images/cookies_banner.svg
@@ -1 +1 @@ -<svg fill="none" height="226" viewBox="0 0 680 226" width="680" xmlns="http://www.w3.org/2000/svg"><path d="M0 0h680v226H0z" fill="#f8f9fa"/><path clip-rule="evenodd" d="M551.427 226C558.831 211.508 563 195.027 563 177.5 563 118.9 515.1 72 456.9 72 398.6 72 352 118.9 352 177.5c0 17.43 4.123 33.939 11.481 48.5z" fill="#fff" fill-rule="evenodd"/><path clip-rule="evenodd" d="M574.893 68.838c9.073-5.478 20.98-2.523 26.463 6.545s2.537 20.971-6.52 26.461c-.614.408-1.221.716-1.885 1.007a1.114 1.114 0 0 1-.592.243h-.006c-.414.116-1.426.453-2.158.726-.439.209-.955.331-1.291.411l-.145.035-6.58 1.894-.001.001c-5.249 1.527-9.732 5.057-12.402 9.822l-3.067 5.64c-.733 1.866-1.766 3.717-2.992 5.454l-.003.004c-2.09 2.926-4.792 5.308-7.972 7.359l-.014.01-.015.009c-13.393 7.994-30.833 3.114-38.099-10.796-6.13-11.741-2.701-26.378 7.992-34.268l.005-.003c3.834-2.798 8.089-4.46 12.448-5.082 2.17-.31 4.234-.312 6.283-.11l6.45-.1h.008c5.416 0 10.757-2.38 14.475-6.29l.005-.004 4.713-4.813.9-.9c.315-.315.703-.678 1.04-.99.061-.056.121-.11.177-.163.267-.246.474-.438.583-.547l.239-.24.043-.034a15.065 15.065 0 0 1 1.918-1.281zm24.751 7.58c-4.915-8.13-15.6-10.776-23.727-5.862l-.01.006-.011.006c-.645.369-1.186.73-1.629 1.08l-.16.16c-.139.139-.387.367-.652.613l-.163.15c-.338.314-.7.652-.985.936l-.892.893-.008.007-4.687 4.787c-4.08 4.286-9.933 6.904-15.912 6.906l-6.55.1-.057-.005c-1.932-.193-3.851-.192-5.86.095-4.04.577-7.985 2.116-11.549 4.716-9.906 7.31-13.075 20.873-7.406 31.731 6.731 12.885 22.881 17.407 35.287 10.013 3.013-1.946 5.505-4.16 7.412-6.829 1.16-1.644 2.117-3.371 2.783-5.083l.023-.06 3.136-5.767c2.93-5.232 7.845-9.099 13.594-10.771l.002-.001 6.617-1.905.017-.004.246-.06c.354-.086.626-.152.85-.264l.047-.024.049-.018a37.263 37.263 0 0 1 2.37-.797l.01-.01.177-.076c.667-.286 1.207-.558 1.739-.913l.019-.012.019-.012c8.128-4.915 10.775-15.6 5.861-23.727z" fill="#34a853" fill-rule="evenodd"/><path d="M496.6 170.8c4 0 7.3-3.3 7.3-7.3s-3.3-7.3-7.3-7.3-7.3 3.3-7.3 7.3 3.3 7.3 7.3 7.3z" fill="#34a853"/><path d="M477 180.2l-11.6 20.2c-1 1.6.2 3.6 2.1 3.6h23.2c1.8 0 3-2 2.1-3.6L481 180.2c-.8-1.6-3.1-1.6-4 0z" fill="#4285f4"/><path clip-rule="evenodd" d="M459.4 160.7c11.929 0 21.6-9.671 21.6-21.6s-9.671-21.6-21.6-21.6-21.6 9.671-21.6 21.6 9.671 21.6 21.6 21.6zm23.6-21.6c0 13.034-10.566 23.6-23.6 23.6s-23.6-10.566-23.6-23.6 10.566-23.6 23.6-23.6 23.6 10.566 23.6 23.6z" fill="#f0a3f8" fill-rule="evenodd"/><path d="M213.8 126.4l-28.2-10.5c-7.3-2.8-15.6 1-18.4 8.3s1 15.6 8.3 18.4l28.2 10.5c7.3 2.8 15.6-1 18.4-8.3 2.9-7.5-1-15.6-8.3-18.4z" fill="#e8eaed"/><path d="M344.3 39c-41.7.4-75.3 34.2-75.3 76 0 42 34 76 76 76 41 0 74.4-32.4 76-73h-21.6c-6.6 0-11.9-5.3-11.9-11.9v-9.7h-8.9c-6.6 0-11.9-5.3-11.9-11.9v-8.9h-10.4c-6.6 0-11.9-5.3-11.9-11.9V39z" fill="#fbbc04"/><g clip-rule="evenodd" fill-rule="evenodd" fill="#fdd663"><path d="M303 98.6c-4.048 0-7.4 3.352-7.4 7.4s3.352 7.4 7.4 7.4 7.4-3.352 7.4-7.4-3.352-7.4-7.4-7.4zm-9.4 7.4c0-5.152 4.248-9.4 9.4-9.4s9.4 4.248 9.4 9.4-4.248 9.4-9.4 9.4-9.4-4.248-9.4-9.4zM343 98.6c-4.048 0-7.4 3.352-7.4 7.4s3.352 7.4 7.4 7.4 7.4-3.352 7.4-7.4-3.352-7.4-7.4-7.4zm-9.4 7.4c0-5.152 4.248-9.4 9.4-9.4s9.4 4.248 9.4 9.4-4.248 9.4-9.4 9.4-9.4-4.248-9.4-9.4zM325 136.6c-4.048 0-7.4 3.352-7.4 7.4s3.352 7.4 7.4 7.4 7.4-3.352 7.4-7.4-3.352-7.4-7.4-7.4zm-9.4 7.4c0-5.152 4.248-9.4 9.4-9.4s9.4 4.248 9.4 9.4-4.248 9.4-9.4 9.4-9.4-4.248-9.4-9.4zM366 136.6c-4.048 0-7.4 3.352-7.4 7.4s3.352 7.4 7.4 7.4 7.4-3.352 7.4-7.4-3.352-7.4-7.4-7.4zm-9.4 7.4c0-5.152 4.248-9.4 9.4-9.4s9.4 4.248 9.4 9.4-4.248 9.4-9.4 9.4-9.4-4.248-9.4-9.4z"/></g><path d="M112.8 113.3c-1.7 2.1-5 2-6.6-.1-4.6-6.5-4.5-15.5.7-22 5.3-6.7 14-8.7 21.5-5.7 2.5 1.1 3.3 4.2 1.7 6.3z" fill="#fbbc04"/><path d="M146 54c0 2.8-2.2 5-5 5-2.8.1-5-2.2-5-5s2.2-5 5-5c2.7 0 5 2.2 5 5z" fill="#aecbfa"/><path d="M439 207.7L419.3 193c-1.2-.9-1.5-2.7-.6-4l14.7-19.7c.9-1.2 2.7-1.5 4-.6l19.7 14.7c1.2.9 1.5 2.7.6 4L443 207.1c-1 1.2-2.8 1.5-4 .6z" fill="#fbbc04"/><path clip-rule="evenodd" d="M517.511 123.558c-5.092-9.873-3.427-21.911 3.631-30.11l1.516 1.304c-6.542 7.601-8.077 18.763-3.369 27.89 6.439 12.494 21.829 17.024 33.953 10.769l.917 1.778c-13.077 6.745-29.687 1.875-36.648-11.631" fill="#fbbc04" fill-rule="evenodd"/><path clip-rule="evenodd" d="M80.807 149.196c-.572-.051-1.063.368-1.111.895v.004l-2.5 26.096v.002c-.051.572.368 1.063.894 1.111l.005.001 26.096 2.499h.001c.573.051 1.064-.368 1.112-.895l.001-.004 2.499-26.096v-.001c.051-.573-.368-1.064-.895-1.112l-.004-.001-26.096-2.499h-.002zm-3.103.711c.154-1.672 1.66-2.851 3.287-2.703l.004.001 26.096 2.499h.002c1.672.154 2.851 1.661 2.703 3.286l-.001.005-2.499 26.096v.002c-.154 1.672-1.661 2.851-3.287 2.703l-.004-.001-26.096-2.499h-.002c-1.672-.154-2.85-1.661-2.703-3.287v-.004l2.5-26.096v-.002z" fill="#34a853" fill-rule="evenodd"/></svg> \ No newline at end of file +<svg fill="none" height="226" viewBox="0 0 680 226" width="680" xmlns="http://www.w3.org/2000/svg"><path d="M0 0h680v226H0z" fill="#f8f9fa"/><path clip-rule="evenodd" d="M551.427 226C558.831 211.508 563 195.027 563 177.5 563 118.9 515.1 72 456.9 72 398.6 72 352 118.9 352 177.5c0 17.43 4.123 33.939 11.481 48.5z" fill="#fff" fill-rule="evenodd"/><path clip-rule="evenodd" d="M574.893 68.838c9.073-5.478 20.98-2.523 26.463 6.545s2.537 20.971-6.52 26.461c-.614.408-1.221.716-1.885 1.007a1.114 1.114 0 0 1-.592.243h-.006c-.414.116-1.426.453-2.158.726-.439.209-.955.331-1.291.411l-.145.035-6.58 1.894-.001.001c-5.249 1.527-9.732 5.057-12.402 9.822l-3.067 5.64c-.733 1.866-1.766 3.717-2.992 5.454l-.003.004c-2.09 2.926-4.792 5.308-7.972 7.359l-.014.01-.015.009c-13.393 7.994-30.833 3.114-38.099-10.796-6.13-11.741-2.701-26.378 7.992-34.268l.005-.003c3.834-2.798 8.089-4.46 12.448-5.082 2.17-.31 4.234-.312 6.283-.11l6.45-.1h.008c5.416 0 10.757-2.38 14.475-6.29l.005-.004 4.713-4.813.9-.9a39.63 39.63 0 0 1 1.04-.99c.061-.056.121-.11.177-.163.267-.246.474-.438.583-.547l.239-.24.043-.034a15.065 15.065 0 0 1 1.918-1.281zm24.751 7.58c-4.915-8.13-15.6-10.776-23.727-5.862l-.01.006-.011.006a13.25 13.25 0 0 0-1.629 1.08l-.16.16c-.139.139-.387.367-.652.613l-.163.15c-.338.314-.7.652-.985.936l-.892.893-.008.007-4.687 4.787c-4.08 4.286-9.933 6.904-15.912 6.906l-6.55.1-.057-.005c-1.932-.193-3.851-.192-5.86.095-4.04.577-7.985 2.116-11.549 4.716-9.906 7.31-13.075 20.873-7.406 31.731 6.731 12.885 22.881 17.407 35.287 10.013 3.013-1.946 5.505-4.16 7.412-6.829 1.16-1.644 2.117-3.371 2.783-5.083l.023-.06 3.136-5.767c2.93-5.232 7.845-9.099 13.594-10.771l.002-.001 6.617-1.905.017-.004.246-.06c.354-.086.626-.152.85-.264l.047-.024.049-.018a37.263 37.263 0 0 1 2.37-.797l.01-.01.177-.076c.667-.286 1.207-.558 1.739-.913l.019-.012.019-.012c8.128-4.915 10.775-15.6 5.861-23.727z" fill="#34a853" fill-rule="evenodd"/><path d="M496.6 170.8c4 0 7.3-3.3 7.3-7.3s-3.3-7.3-7.3-7.3-7.3 3.3-7.3 7.3 3.3 7.3 7.3 7.3z" fill="#34a853"/><path d="m477 180.2-11.6 20.2c-1 1.6.2 3.6 2.1 3.6h23.2c1.8 0 3-2 2.1-3.6L481 180.2c-.8-1.6-3.1-1.6-4 0z" fill="#4285f4"/><path clip-rule="evenodd" d="M459.4 160.7c11.929 0 21.6-9.671 21.6-21.6s-9.671-21.6-21.6-21.6-21.6 9.671-21.6 21.6 9.671 21.6 21.6 21.6zm23.6-21.6c0 13.034-10.566 23.6-23.6 23.6s-23.6-10.566-23.6-23.6 10.566-23.6 23.6-23.6 23.6 10.566 23.6 23.6z" fill="#f0a3f8" fill-rule="evenodd"/><path d="m213.8 126.4-28.2-10.5c-7.3-2.8-15.6 1-18.4 8.3s1 15.6 8.3 18.4l28.2 10.5c7.3 2.8 15.6-1 18.4-8.3 2.9-7.5-1-15.6-8.3-18.4z" fill="#e8eaed"/><path d="M344.3 39c-41.7.4-75.3 34.2-75.3 76 0 42 34 76 76 76 41 0 74.4-32.4 76-73h-21.6c-6.6 0-11.9-5.3-11.9-11.9v-9.7h-8.9c-6.6 0-11.9-5.3-11.9-11.9v-8.9h-10.4c-6.6 0-11.9-5.3-11.9-11.9V39z" fill="#fbbc04"/><path d="M303 98.6c-4.048 0-7.4 3.352-7.4 7.4s3.352 7.4 7.4 7.4 7.4-3.352 7.4-7.4-3.352-7.4-7.4-7.4zm-9.4 7.4c0-5.152 4.248-9.4 9.4-9.4s9.4 4.248 9.4 9.4-4.248 9.4-9.4 9.4-9.4-4.248-9.4-9.4zm49.4-7.4c-4.048 0-7.4 3.352-7.4 7.4s3.352 7.4 7.4 7.4 7.4-3.352 7.4-7.4-3.352-7.4-7.4-7.4zm-9.4 7.4c0-5.152 4.248-9.4 9.4-9.4s9.4 4.248 9.4 9.4-4.248 9.4-9.4 9.4-9.4-4.248-9.4-9.4zm-8.6 30.6c-4.048 0-7.4 3.352-7.4 7.4s3.352 7.4 7.4 7.4 7.4-3.352 7.4-7.4-3.352-7.4-7.4-7.4zm-9.4 7.4c0-5.152 4.248-9.4 9.4-9.4s9.4 4.248 9.4 9.4-4.248 9.4-9.4 9.4-9.4-4.248-9.4-9.4zm50.4-7.4c-4.048 0-7.4 3.352-7.4 7.4s3.352 7.4 7.4 7.4 7.4-3.352 7.4-7.4-3.352-7.4-7.4-7.4zm-9.4 7.4c0-5.152 4.248-9.4 9.4-9.4s9.4 4.248 9.4 9.4-4.248 9.4-9.4 9.4-9.4-4.248-9.4-9.4z" clip-rule="evenodd" fill-rule="evenodd" fill="#fdd663"/><path d="M112.8 113.3c-1.7 2.1-5 2-6.6-.1-4.6-6.5-4.5-15.5.7-22 5.3-6.7 14-8.7 21.5-5.7 2.5 1.1 3.3 4.2 1.7 6.3z" fill="#fbbc04"/><path d="M146 54c0 2.8-2.2 5-5 5-2.8.1-5-2.2-5-5s2.2-5 5-5c2.7 0 5 2.2 5 5z" fill="#aecbfa"/><path d="M439 207.7 419.3 193c-1.2-.9-1.5-2.7-.6-4l14.7-19.7c.9-1.2 2.7-1.5 4-.6l19.7 14.7c1.2.9 1.5 2.7.6 4L443 207.1c-1 1.2-2.8 1.5-4 .6z" fill="#fbbc04"/><path clip-rule="evenodd" d="M517.511 123.558c-5.092-9.873-3.427-21.911 3.631-30.11l1.516 1.304c-6.542 7.601-8.077 18.763-3.369 27.89 6.439 12.494 21.829 17.024 33.953 10.769l.917 1.778c-13.077 6.745-29.687 1.875-36.648-11.631" fill="#fbbc04" fill-rule="evenodd"/><path clip-rule="evenodd" d="M80.807 149.196c-.572-.051-1.063.368-1.111.895v.004l-2.5 26.096v.002c-.051.572.368 1.063.894 1.111l.005.001 26.096 2.499h.001c.573.051 1.064-.368 1.112-.895l.001-.004 2.499-26.096v-.001c.051-.573-.368-1.064-.895-1.112l-.004-.001-26.096-2.499h-.002zm-3.103.711c.154-1.672 1.66-2.851 3.287-2.703l.004.001 26.096 2.499h.002c1.672.154 2.851 1.661 2.703 3.286l-.001.005-2.499 26.096v.002c-.154 1.672-1.661 2.851-3.287 2.703l-.004-.001-26.096-2.499h-.002c-1.672-.154-2.85-1.661-2.703-3.287v-.004l2.5-26.096v-.002z" fill="#34a853" fill-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/images/cookies_banner_dark.svg b/chrome/browser/resources/settings/images/cookies_banner_dark.svg index bdc4087..c7625237 100644 --- a/chrome/browser/resources/settings/images/cookies_banner_dark.svg +++ b/chrome/browser/resources/settings/images/cookies_banner_dark.svg
@@ -1 +1 @@ -<svg fill="none" height="226" viewBox="0 0 680 226" width="680" xmlns="http://www.w3.org/2000/svg"><path d="M0 0h680v226H0z" fill="#3c4043"/><path clip-rule="evenodd" d="M551.427 226C558.831 211.508 563 195.027 563 177.5 563 118.9 515.1 72 456.9 72 398.6 72 352 118.9 352 177.5c0 17.43 4.123 33.939 11.481 48.5z" fill="#5f6368" fill-rule="evenodd"/><path d="M213.8 126.4l-28.2-10.5c-7.3-2.8-15.6 1-18.4 8.3s1 15.6 8.3 18.4l28.2 10.5c7.3 2.8 15.6-1 18.4-8.3 2.9-7.5-1-15.6-8.3-18.4z" fill="#5f6368"/><path d="M112.8 113.3c-1.7 2.1-5 2-6.6-.1-4.6-6.5-4.5-15.5.7-22 5.3-6.7 14-8.7 21.5-5.7 2.5 1.1 3.3 4.2 1.7 6.3z" fill="#fdd663"/><path d="M146 54c0 2.8-2.2 5-5 5-2.8.1-5-2.2-5-5s2.2-5 5-5c2.7 0 5 2.2 5 5z" fill="#aecbfa"/><path clip-rule="evenodd" d="M80.807 149.196c-.572-.051-1.063.368-1.111.895v.004l-2.5 26.096v.002c-.051.572.368 1.063.894 1.111l.005.001 26.096 2.499h.001c.573.051 1.064-.368 1.112-.895l.001-.004 2.499-26.096v-.001c.051-.573-.368-1.064-.895-1.112l-.004-.001-26.096-2.499h-.002zm-3.103.711c.154-1.672 1.66-2.851 3.287-2.703l.004.001 26.096 2.499h.002c1.672.154 2.851 1.661 2.703 3.286l-.001.005-2.499 26.096v.002c-.154 1.672-1.661 2.851-3.287 2.703l-.004-.001-26.096-2.499h-.002c-1.672-.154-2.85-1.661-2.703-3.287v-.004l2.5-26.096v-.002zM574.893 68.838c9.073-5.478 20.98-2.523 26.463 6.545s2.537 20.971-6.52 26.461c-.614.408-1.221.716-1.885 1.007a1.089 1.089 0 0 1-.592.242l-.006.001c-.414.116-1.426.453-2.158.726-.439.209-.955.331-1.291.411l-.145.035-6.58 1.894-.001.001c-5.249 1.527-9.732 5.057-12.402 9.822l-3.067 5.64c-.733 1.866-1.766 3.717-2.992 5.454l-.003.004c-2.09 2.926-4.792 5.308-7.972 7.359l-.014.01-.015.009c-13.393 7.994-30.833 3.114-38.099-10.796-6.13-11.741-2.701-26.378 7.992-34.268l.005-.003c3.834-2.798 8.089-4.46 12.448-5.082 2.17-.31 4.234-.312 6.283-.11l6.45-.1h.008c5.416 0 10.757-2.38 14.475-6.29l.005-.004 4.713-4.813.9-.9c.315-.315.703-.677 1.04-.99.061-.056.121-.11.177-.163.267-.246.474-.438.583-.547l.239-.24.043-.034a15.076 15.076 0 0 1 1.918-1.281zm24.751 7.58c-4.915-8.13-15.6-10.776-23.727-5.862l-.01.006-.011.006c-.645.369-1.186.73-1.629 1.08l-.16.16c-.139.139-.387.367-.652.613l-.163.15c-.338.314-.7.652-.985.936l-.892.893-.008.007-4.687 4.787c-4.08 4.286-9.933 6.904-15.912 6.906l-6.55.1-.057-.005c-1.932-.193-3.851-.192-5.86.095-4.04.577-7.985 2.116-11.549 4.716-9.906 7.31-13.075 20.873-7.406 31.731 6.731 12.885 22.881 17.407 35.287 10.013 3.013-1.946 5.505-4.16 7.412-6.829 1.16-1.644 2.117-3.371 2.783-5.083l.023-.06 3.136-5.767c2.93-5.232 7.845-9.099 13.594-10.771l.002-.001 6.617-1.905.017-.004.246-.06c.354-.086.626-.152.85-.264l.047-.024.049-.018a37.263 37.263 0 0 1 2.37-.797l.01-.01.177-.076c.667-.286 1.207-.558 1.739-.913l.019-.012.019-.012c8.128-4.915 10.775-15.6 5.861-23.727z" fill="#81c995" fill-rule="evenodd"/><path d="M496.6 170.8c4 0 7.3-3.3 7.3-7.3s-3.3-7.3-7.3-7.3-7.3 3.3-7.3 7.3 3.3 7.3 7.3 7.3z" fill="#81c995"/><path d="M477 180.2l-11.6 20.2c-1 1.6.2 3.6 2.1 3.6h23.2c1.8 0 3-2 2.1-3.6L481 180.2c-.8-1.6-3.1-1.6-4 0z" fill="#8ab4f8"/><path clip-rule="evenodd" d="M459.4 160.7c11.929 0 21.6-9.671 21.6-21.6s-9.671-21.6-21.6-21.6-21.6 9.671-21.6 21.6 9.671 21.6 21.6 21.6zm23.6-21.6c0 13.034-10.566 23.6-23.6 23.6s-23.6-10.566-23.6-23.6 10.566-23.6 23.6-23.6 23.6 10.566 23.6 23.6z" fill="#f28b82" fill-rule="evenodd"/><path d="M344.3 39c-41.7.4-75.3 34.2-75.3 76 0 42 34 76 76 76 41 0 74.4-32.4 76-73h-21.6c-6.6 0-11.9-5.3-11.9-11.9v-9.7h-8.9c-6.6 0-11.9-5.3-11.9-11.9v-8.9h-10.4c-6.6 0-11.9-5.3-11.9-11.9V39z" fill="#fdd663"/><g clip-rule="evenodd" fill-rule="evenodd" fill="#f9ab00"><path d="M303 98.6c-4.048 0-7.4 3.352-7.4 7.4s3.352 7.4 7.4 7.4 7.4-3.352 7.4-7.4-3.352-7.4-7.4-7.4zm-9.4 7.4c0-5.152 4.248-9.4 9.4-9.4s9.4 4.248 9.4 9.4-4.248 9.4-9.4 9.4-9.4-4.248-9.4-9.4zM343 98.6c-4.048 0-7.4 3.352-7.4 7.4s3.352 7.4 7.4 7.4 7.4-3.352 7.4-7.4-3.352-7.4-7.4-7.4zm-9.4 7.4c0-5.152 4.248-9.4 9.4-9.4s9.4 4.248 9.4 9.4-4.248 9.4-9.4 9.4-9.4-4.248-9.4-9.4zM325 136.6c-4.048 0-7.4 3.352-7.4 7.4s3.352 7.4 7.4 7.4 7.4-3.352 7.4-7.4-3.352-7.4-7.4-7.4zm-9.4 7.4c0-5.152 4.248-9.4 9.4-9.4s9.4 4.248 9.4 9.4-4.248 9.4-9.4 9.4-9.4-4.248-9.4-9.4zM366 136.6c-4.048 0-7.4 3.352-7.4 7.4s3.352 7.4 7.4 7.4 7.4-3.352 7.4-7.4-3.352-7.4-7.4-7.4zm-9.4 7.4c0-5.152 4.248-9.4 9.4-9.4s9.4 4.248 9.4 9.4-4.248 9.4-9.4 9.4-9.4-4.248-9.4-9.4z"/></g><path d="M439 207.7L419.3 193c-1.2-.9-1.5-2.7-.6-4l14.7-19.7c.9-1.2 2.7-1.5 4-.6l19.7 14.7c1.2.9 1.5 2.7.6 4L443 207.1c-1 1.2-2.8 1.5-4 .6z" fill="#fdd663"/><path clip-rule="evenodd" d="M517.511 123.558c-5.092-9.873-3.427-21.911 3.631-30.11l1.516 1.304c-6.542 7.601-8.077 18.763-3.369 27.89 6.439 12.494 21.829 17.024 33.953 10.769l.917 1.778c-13.077 6.745-29.687 1.875-36.648-11.631" fill="#fde293" fill-rule="evenodd"/></svg> \ No newline at end of file +<svg fill="none" height="226" viewBox="0 0 680 226" width="680" xmlns="http://www.w3.org/2000/svg"><path d="M0 0h680v226H0z" fill="#3c4043"/><path clip-rule="evenodd" d="M551.427 226C558.831 211.508 563 195.027 563 177.5 563 118.9 515.1 72 456.9 72 398.6 72 352 118.9 352 177.5c0 17.43 4.123 33.939 11.481 48.5z" fill="#5f6368" fill-rule="evenodd"/><path d="m213.8 126.4-28.2-10.5c-7.3-2.8-15.6 1-18.4 8.3s1 15.6 8.3 18.4l28.2 10.5c7.3 2.8 15.6-1 18.4-8.3 2.9-7.5-1-15.6-8.3-18.4z" fill="#5f6368"/><path d="M112.8 113.3c-1.7 2.1-5 2-6.6-.1-4.6-6.5-4.5-15.5.7-22 5.3-6.7 14-8.7 21.5-5.7 2.5 1.1 3.3 4.2 1.7 6.3z" fill="#fdd663"/><path d="M146 54c0 2.8-2.2 5-5 5-2.8.1-5-2.2-5-5s2.2-5 5-5c2.7 0 5 2.2 5 5z" fill="#aecbfa"/><path clip-rule="evenodd" d="M80.807 149.196c-.572-.051-1.063.368-1.111.895v.004l-2.5 26.096v.002c-.051.572.368 1.063.894 1.111l.005.001 26.096 2.499h.001c.573.051 1.064-.368 1.112-.895l.001-.004 2.499-26.096v-.001c.051-.573-.368-1.064-.895-1.112l-.004-.001-26.096-2.499h-.002zm-3.103.711c.154-1.672 1.66-2.851 3.287-2.703l.004.001 26.096 2.499h.002c1.672.154 2.851 1.661 2.703 3.286l-.001.005-2.499 26.096v.002c-.154 1.672-1.661 2.851-3.287 2.703l-.004-.001-26.096-2.499h-.002c-1.672-.154-2.85-1.661-2.703-3.287v-.004l2.5-26.096v-.002zm497.189-81.069c9.073-5.478 20.98-2.523 26.463 6.545s2.537 20.971-6.52 26.461c-.614.408-1.221.716-1.885 1.007a1.089 1.089 0 0 1-.592.242l-.006.001c-.414.116-1.426.453-2.158.726-.439.209-.955.331-1.291.411l-.145.035-6.58 1.894-.001.001c-5.249 1.527-9.732 5.057-12.402 9.822l-3.067 5.64c-.733 1.866-1.766 3.717-2.992 5.454l-.003.004c-2.09 2.926-4.792 5.308-7.972 7.359l-.014.01-.015.009c-13.393 7.994-30.833 3.114-38.099-10.796-6.13-11.741-2.701-26.378 7.992-34.268l.005-.003c3.834-2.798 8.089-4.46 12.448-5.082 2.17-.31 4.234-.312 6.283-.11l6.45-.1h.008c5.416 0 10.757-2.38 14.475-6.29l.005-.004 4.713-4.813.9-.9c.315-.315.703-.677 1.04-.99.061-.056.121-.11.177-.163.267-.246.474-.438.583-.547l.239-.24.043-.034a15.076 15.076 0 0 1 1.918-1.281zm24.751 7.58c-4.915-8.13-15.6-10.776-23.727-5.862l-.01.006-.011.006a13.25 13.25 0 0 0-1.629 1.08l-.16.16c-.139.139-.387.367-.652.613l-.163.15c-.338.314-.7.652-.985.936l-.892.893-.008.007-4.687 4.787c-4.08 4.286-9.933 6.904-15.912 6.906l-6.55.1-.057-.005c-1.932-.193-3.851-.192-5.86.095-4.04.577-7.985 2.116-11.549 4.716-9.906 7.31-13.075 20.873-7.406 31.731 6.731 12.885 22.881 17.407 35.287 10.013 3.013-1.946 5.505-4.16 7.412-6.829 1.16-1.644 2.117-3.371 2.783-5.083l.023-.06 3.136-5.767c2.93-5.232 7.845-9.099 13.594-10.771l.002-.001 6.617-1.905.017-.004.246-.06c.354-.086.626-.152.85-.264l.047-.024.049-.018a37.263 37.263 0 0 1 2.37-.797l.01-.01.177-.076c.667-.286 1.207-.558 1.739-.913l.019-.012.019-.012c8.128-4.915 10.775-15.6 5.861-23.727z" fill="#81c995" fill-rule="evenodd"/><path d="M496.6 170.8c4 0 7.3-3.3 7.3-7.3s-3.3-7.3-7.3-7.3-7.3 3.3-7.3 7.3 3.3 7.3 7.3 7.3z" fill="#81c995"/><path d="m477 180.2-11.6 20.2c-1 1.6.2 3.6 2.1 3.6h23.2c1.8 0 3-2 2.1-3.6L481 180.2c-.8-1.6-3.1-1.6-4 0z" fill="#8ab4f8"/><path clip-rule="evenodd" d="M459.4 160.7c11.929 0 21.6-9.671 21.6-21.6s-9.671-21.6-21.6-21.6-21.6 9.671-21.6 21.6 9.671 21.6 21.6 21.6zm23.6-21.6c0 13.034-10.566 23.6-23.6 23.6s-23.6-10.566-23.6-23.6 10.566-23.6 23.6-23.6 23.6 10.566 23.6 23.6z" fill="#f28b82" fill-rule="evenodd"/><path d="M344.3 39c-41.7.4-75.3 34.2-75.3 76 0 42 34 76 76 76 41 0 74.4-32.4 76-73h-21.6c-6.6 0-11.9-5.3-11.9-11.9v-9.7h-8.9c-6.6 0-11.9-5.3-11.9-11.9v-8.9h-10.4c-6.6 0-11.9-5.3-11.9-11.9V39z" fill="#fdd663"/><path d="M303 98.6c-4.048 0-7.4 3.352-7.4 7.4s3.352 7.4 7.4 7.4 7.4-3.352 7.4-7.4-3.352-7.4-7.4-7.4zm-9.4 7.4c0-5.152 4.248-9.4 9.4-9.4s9.4 4.248 9.4 9.4-4.248 9.4-9.4 9.4-9.4-4.248-9.4-9.4zm49.4-7.4c-4.048 0-7.4 3.352-7.4 7.4s3.352 7.4 7.4 7.4 7.4-3.352 7.4-7.4-3.352-7.4-7.4-7.4zm-9.4 7.4c0-5.152 4.248-9.4 9.4-9.4s9.4 4.248 9.4 9.4-4.248 9.4-9.4 9.4-9.4-4.248-9.4-9.4zm-8.6 30.6c-4.048 0-7.4 3.352-7.4 7.4s3.352 7.4 7.4 7.4 7.4-3.352 7.4-7.4-3.352-7.4-7.4-7.4zm-9.4 7.4c0-5.152 4.248-9.4 9.4-9.4s9.4 4.248 9.4 9.4-4.248 9.4-9.4 9.4-9.4-4.248-9.4-9.4zm50.4-7.4c-4.048 0-7.4 3.352-7.4 7.4s3.352 7.4 7.4 7.4 7.4-3.352 7.4-7.4-3.352-7.4-7.4-7.4zm-9.4 7.4c0-5.152 4.248-9.4 9.4-9.4s9.4 4.248 9.4 9.4-4.248 9.4-9.4 9.4-9.4-4.248-9.4-9.4z" clip-rule="evenodd" fill-rule="evenodd" fill="#f9ab00"/><path d="M439 207.7 419.3 193c-1.2-.9-1.5-2.7-.6-4l14.7-19.7c.9-1.2 2.7-1.5 4-.6l19.7 14.7c1.2.9 1.5 2.7.6 4L443 207.1c-1 1.2-2.8 1.5-4 .6z" fill="#fdd663"/><path clip-rule="evenodd" d="M517.511 123.558c-5.092-9.873-3.427-21.911 3.631-30.11l1.516 1.304c-6.542 7.601-8.077 18.763-3.369 27.89 6.439 12.494 21.829 17.024 33.953 10.769l.917 1.778c-13.077 6.745-29.687 1.875-36.648-11.631" fill="#fde293" fill-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/images/password_check_neutral.svg b/chrome/browser/resources/settings/images/password_check_neutral.svg index 8aad9f6..84d7022 100644 --- a/chrome/browser/resources/settings/images/password_check_neutral.svg +++ b/chrome/browser/resources/settings/images/password_check_neutral.svg
@@ -1 +1 @@ -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="680" height="120"><style>.B{mask:url(#B)}.C{fill:#bdc0c5}.D{fill:#e8e9eb}.E{fill:#f8f9fa}.F{fill-rule:nonzero}</style><defs><path id="A" d="M0 0h680v120H0z"/></defs><g fill-rule="evenodd"><mask id="B" fill="#fff"><use xlink:href="#A"/></mask><use fill-opacity=".02" xlink:href="#A"/><g class="F B"><path d="M288.585 52.215V47c10.735 0 19.175-3 25.1-8.955 9.3-9.36 9.325-23.015 9.325-23.15l5.25-.04c0 .645 0 15.9-10.815 26.82-6.935 6.995-16.645 10.54-28.85 10.54z" class="D"/><path d="M253.87 83h-5.245a40.45 40.45 0 0 1 5-18c4.605-8.2 14.4-18 34.96-18v5.215c-14.465 0-24.685 5.17-30.385 15.36A35.35 35.35 0 0 0 253.87 83z" fill="#34a751"/><path d="M254.6 94.5h-90.7V32.325a2.65 2.65 0 0 1 2.64-2.64h85.44a2.65 2.65 0 0 1 2.64 2.64V94.5z" class="E"/><path d="M250.3 30.225A3.791 3.791 0 0 1 254.08 34v59.945h-89.64V34a3.786 3.786 0 0 1 3.78-3.78h82.08m0-.54h-82.1a4.335 4.335 0 0 0-4.32 4.32v60.5h90.72V34a4.335 4.335 0 0 0-4.32-4.32zm-99.36 68.585h116.64v.54H150.93v-.54zM56 57.915H38.175v-.27a8.91 8.91 0 1 1 17.82 0l.005.27zm-17.275-.54H55.45a8.37 8.37 0 0 0-16.73 0h.005z" class="C"/><g class="D"><path d="M426.825 68.895h-17.28a8.64 8.64 0 0 1 17.28 0zM345 88.66h20v4h-20z"/><path d="M348.268 98.32l10-17.32 3.464 2-10 17.32z"/><path d="M358.268 100.32l-10-17.32 3.464-2 10 17.32z"/></g><rect stroke="#bdc0c5" stroke-width=".5" x="112" y="18" width="68" height="92" rx="6" class="E"/><g fill="#4285f4"><path d="M124 65h12v2h-12z"/><path d="M126.134 70.696l6-10.392 1.732 1-6 10.392z"/><path d="M132.134 71.696l-6-10.392 1.732-1 6 10.392zM140 65h12v2h-12z"/><path d="M142.134 70.696l6-10.392 1.732 1-6 10.392z"/><path d="M148.134 71.696l-6-10.392 1.732-1 6 10.392zM156 65h12v2h-12z"/><path d="M158.134 70.696l6-10.392 1.732 1-6 10.392z"/><path d="M164.134 71.696l-6-10.392 1.732-1 6 10.392z"/></g><g class="C"><rect x="124" y="85" width="14" height="1" rx=".5"/><rect x="124" y="43" width="16" height="1" rx=".5"/><rect x="124" y="50" width="28" height="1" rx=".5"/></g><g stroke="#bdc0c5" stroke-width=".5" class="E"><path d="M146 10h0a7 7 0 0 1 7 7v7h-14v-7a7 7 0 0 1 7-7z"/><circle cx="146" cy="17" r="3"/><path d="M162 24h-32a6 6 0 0 0-6 6v4h44v-4a6 6 0 0 0-6-6z"/></g><path d="M79.6 58.42a12.935 12.935 0 0 0-10.1 4.82A8.62 8.62 0 0 0 58 71.38h34.56c0-7.158-5.802-12.96-12.96-12.96z" fill="#fff"/><path d="M92.83 71.65h-35.1v-.27a8.89 8.89 0 0 1 11.695-8.455A13.23 13.23 0 0 1 92.83 71.38v.27zm-34.555-.54h34a12.69 12.69 0 0 0-22.56-7.7l-.12.15-.18-.065A8.35 8.35 0 0 0 58.26 71.11h.015z" class="C"/><path d="M38.12 82.36l3.705-3.705c7.6 7.6 15.7 11.43 24.075 11.4 13.17-.03 22.855-9.655 22.95-9.75L92.585 84c-.45.46-11.235 11.25-26.6 11.315C56.12 95.345 46.75 91 38.12 82.36z" fill="#f7bb2a"/><path d="M-8.2 79.58l-3.705-3.705a40.45 40.45 0 0 1 16.25-9.18c9.075-2.57 22.945-2.58 37.5 11.96L38.14 82.36C27.9 72.13 17 68.555 5.77 71.735A35.342 35.342 0 0 0-8.2 79.58z" class="D"/><g class="C"><path d="M636.62 39.735c-5.777.008-10.613-4.377-11.168-10.127s3.35-10.98 9.022-12.08 11.248 2.294 12.88 7.835a11.205 11.205 0 0 1-10.733 14.37zm0-21.765a10.58 10.58 0 0 0-9.82 14.5 10.57 10.57 0 0 0 20.298-5.263 10.57 10.57 0 0 0-10.478-9.237zM619 130h-80a6.785 6.785 0 0 1-6.775-6.775v-10h.6v10A6.185 6.185 0 0 0 539 129.38h80a6.185 6.185 0 0 0 6.175-6.175v-43.55A6.185 6.185 0 0 0 619 73.5h-12v-.6h12a6.785 6.785 0 0 1 6.775 6.775V123.2A6.784 6.784 0 0 1 619 130z"/><path d="M607.005 73.48H561l3-.6h43.005z"/><path d="M532.8 100.18h-.6v-20.5a6.78 6.78 0 0 1 6.8-6.8h29.5v.62H539a6.185 6.185 0 0 0-6.175 6.175l-.025 20.505z"/></g><path d="M540 93.28a14.37 14.37 0 0 0-11.205 5.355A9.58 9.58 0 0 0 516 107.68h38.4c0-7.953-6.447-14.4-14.4-14.4z" fill="#fff"/><path d="M554.725 108h-39v-.3a9.88 9.88 0 0 1 13-9.395 14.7 14.7 0 0 1 26 9.395v.3zm-38.395-.6h37.795a14.1 14.1 0 0 0-25.065-8.555l-.135.165-.2-.07c-2.795-.998-5.898-.598-8.35 1.075s-3.953 4.42-4.04 7.385h-.005z" class="C"/><path d="M498.67 29.88L534.33-.525" class="E"/><path d="M498.32 29.468L534-.9l.65.762-35.68 30.377-.648-.76zM641.43 56.08h-5.825a44.942 44.942 0 0 0 5.555 20c5.1 9.145 16 20.05 38.84 20.05V90.3c-16.07 0-27.43-5.745-33.76-17.07a39.127 39.127 0 0 1-4.8-17.14z" class="D"/><path d="M197.89 56c1.165.002 2.1 1.075 2.11 2.4v19.2c-.001 1.325-.946 2.398-2.11 2.4h-71.78c-1.165-.002-2.1-1.075-2.11-2.4V58.4c.001-1.325.946-2.398 2.11-2.4h71.778z" fill="#3a7bee"/></g><path d="M179.75 56H198a2 2 0 0 1 2 2v20a2 2 0 0 1-2 2h-18.25V56z" fill="#1967d2" class="B"/><g fill="#fff" class="F B"><rect x="190" y="62" width="2" height="12" rx="1"/><path d="M132 67h10v2h-10z"/><path d="M133.634 71.83l5-8.66 1.732 1-5 8.66z"/><path d="M138.634 72.83l-5-8.66 1.732-1 5 8.66zM146 67h10v2h-10z"/><path d="M147.634 71.83l5-8.66 1.732 1-5 8.66z"/><path d="M152.634 72.83l-5-8.66 1.732-1 5 8.66zM160 67h10v2h-10z"/><path d="M161.634 71.83l5-8.66 1.732 1-5 8.66z"/><path d="M166.634 72.83l-5-8.66 1.732-1 5 8.66zM174 67h10v2h-10z"/><path d="M175.634 71.83l5-8.66 1.732 1-5 8.66z"/><path d="M180.634 72.83l-5-8.66 1.732-1 5 8.66z"/></g></g></svg> \ No newline at end of file +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="680" height="120"><style>.B{mask:url(#B)}.C{fill:#bdc0c5}.D{fill:#e8e9eb}.E{fill:#f8f9fa}.F{fill-rule:nonzero}</style><defs><path id="A" d="M0 0h680v120H0z"/></defs><g fill-rule="evenodd"><mask id="B" fill="#fff"><use xlink:href="#A"/></mask><use fill-opacity=".02" xlink:href="#A"/><g class="F B"><path d="M288.585 52.215V47c10.735 0 19.175-3 25.1-8.955 9.3-9.36 9.325-23.015 9.325-23.15l5.25-.04c0 .645 0 15.9-10.815 26.82-6.935 6.995-16.645 10.54-28.85 10.54z" class="D"/><path d="M253.87 83h-5.245a40.45 40.45 0 0 1 5-18c4.605-8.2 14.4-18 34.96-18v5.215c-14.465 0-24.685 5.17-30.385 15.36A35.35 35.35 0 0 0 253.87 83z" fill="#34a751"/><path d="M254.6 94.5h-90.7V32.325a2.65 2.65 0 0 1 2.64-2.64h85.44a2.65 2.65 0 0 1 2.64 2.64V94.5z" class="E"/><path d="M250.3 30.225A3.791 3.791 0 0 1 254.08 34v59.945h-89.64V34a3.786 3.786 0 0 1 3.78-3.78h82.08m0-.54h-82.1a4.335 4.335 0 0 0-4.32 4.32v60.5h90.72V34a4.335 4.335 0 0 0-4.32-4.32zm-99.36 68.585h116.64v.54H150.93v-.54zM56 57.915H38.175v-.27a8.91 8.91 0 1 1 17.82 0l.005.27zm-17.275-.54H55.45a8.37 8.37 0 0 0-16.73 0h.005z" class="C"/><g class="D"><path d="M426.825 68.895h-17.28a8.64 8.64 0 0 1 17.28 0zM345 88.66h20v4h-20z"/><path d="m348.268 98.32 10-17.32 3.464 2-10 17.32z"/><path d="m358.268 100.32-10-17.32 3.464-2 10 17.32z"/></g><rect stroke="#bdc0c5" stroke-width=".5" x="112" y="18" width="68" height="92" rx="6" class="E"/><g fill="#4285f4"><path d="M124 65h12v2h-12z"/><path d="m126.134 70.696 6-10.392 1.732 1-6 10.392z"/><path d="m132.134 71.696-6-10.392 1.732-1 6 10.392zM140 65h12v2h-12z"/><path d="m142.134 70.696 6-10.392 1.732 1-6 10.392z"/><path d="m148.134 71.696-6-10.392 1.732-1 6 10.392zM156 65h12v2h-12z"/><path d="m158.134 70.696 6-10.392 1.732 1-6 10.392z"/><path d="m164.134 71.696-6-10.392 1.732-1 6 10.392z"/></g><g class="C"><rect x="124" y="85" width="14" height="1" rx=".5"/><rect x="124" y="43" width="16" height="1" rx=".5"/><rect x="124" y="50" width="28" height="1" rx=".5"/></g><g stroke="#bdc0c5" stroke-width=".5" class="E"><path d="M146 10a7 7 0 0 1 7 7v7h-14v-7a7 7 0 0 1 7-7z"/><circle cx="146" cy="17" r="3"/><path d="M162 24h-32a6 6 0 0 0-6 6v4h44v-4a6 6 0 0 0-6-6z"/></g><path d="M79.6 58.42a12.935 12.935 0 0 0-10.1 4.82A8.62 8.62 0 0 0 58 71.38h34.56c0-7.158-5.802-12.96-12.96-12.96z" fill="#fff"/><path d="M92.83 71.65h-35.1v-.27a8.89 8.89 0 0 1 11.695-8.455A13.23 13.23 0 0 1 92.83 71.38v.27zm-34.555-.54h34a12.69 12.69 0 0 0-22.56-7.7l-.12.15-.18-.065A8.35 8.35 0 0 0 58.26 71.11h.015z" class="C"/><path d="m38.12 82.36 3.705-3.705c7.6 7.6 15.7 11.43 24.075 11.4 13.17-.03 22.855-9.655 22.95-9.75L92.585 84c-.45.46-11.235 11.25-26.6 11.315C56.12 95.345 46.75 91 38.12 82.36z" fill="#f7bb2a"/><path d="m-8.2 79.58-3.705-3.705a40.45 40.45 0 0 1 16.25-9.18c9.075-2.57 22.945-2.58 37.5 11.96L38.14 82.36C27.9 72.13 17 68.555 5.77 71.735A35.342 35.342 0 0 0-8.2 79.58z" class="D"/><g class="C"><path d="M636.62 39.735c-5.777.008-10.613-4.377-11.168-10.127s3.35-10.98 9.022-12.08 11.248 2.294 12.88 7.835a11.205 11.205 0 0 1-10.733 14.37zm0-21.765a10.58 10.58 0 0 0-9.82 14.5 10.57 10.57 0 0 0 20.298-5.263 10.57 10.57 0 0 0-10.478-9.237zM619 130h-80a6.785 6.785 0 0 1-6.775-6.775v-10h.6v10A6.185 6.185 0 0 0 539 129.38h80a6.185 6.185 0 0 0 6.175-6.175v-43.55A6.185 6.185 0 0 0 619 73.5h-12v-.6h12a6.785 6.785 0 0 1 6.775 6.775V123.2A6.784 6.784 0 0 1 619 130z"/><path d="M607.005 73.48H561l3-.6h43.005z"/><path d="M532.8 100.18h-.6v-20.5a6.78 6.78 0 0 1 6.8-6.8h29.5v.62H539a6.185 6.185 0 0 0-6.175 6.175l-.025 20.505z"/></g><path d="M540 93.28a14.37 14.37 0 0 0-11.205 5.355A9.58 9.58 0 0 0 516 107.68h38.4c0-7.953-6.447-14.4-14.4-14.4z" fill="#fff"/><path d="M554.725 108h-39v-.3a9.88 9.88 0 0 1 13-9.395 14.7 14.7 0 0 1 26 9.395v.3zm-38.395-.6h37.795a14.1 14.1 0 0 0-25.065-8.555l-.135.165-.2-.07c-2.795-.998-5.898-.598-8.35 1.075s-3.953 4.42-4.04 7.385h-.005z" class="C"/><path d="M498.67 29.88 534.33-.525" class="E"/><path d="M498.32 29.468 534-.9l.65.762-35.68 30.377-.648-.76zM641.43 56.08h-5.825a44.942 44.942 0 0 0 5.555 20c5.1 9.145 16 20.05 38.84 20.05V90.3c-16.07 0-27.43-5.745-33.76-17.07a39.127 39.127 0 0 1-4.8-17.14z" class="D"/><path d="M197.89 56c1.165.002 2.1 1.075 2.11 2.4v19.2c-.001 1.325-.946 2.398-2.11 2.4h-71.78c-1.165-.002-2.1-1.075-2.11-2.4V58.4c.001-1.325.946-2.398 2.11-2.4h71.778z" fill="#3a7bee"/></g><path d="M179.75 56H198a2 2 0 0 1 2 2v20a2 2 0 0 1-2 2h-18.25V56z" fill="#1967d2" class="B"/><g fill="#fff" class="F B"><rect x="190" y="62" width="2" height="12" rx="1"/><path d="M132 67h10v2h-10z"/><path d="m133.634 71.83 5-8.66 1.732 1-5 8.66z"/><path d="m138.634 72.83-5-8.66 1.732-1 5 8.66zM146 67h10v2h-10z"/><path d="m147.634 71.83 5-8.66 1.732 1-5 8.66z"/><path d="m152.634 72.83-5-8.66 1.732-1 5 8.66zM160 67h10v2h-10z"/><path d="m161.634 71.83 5-8.66 1.732 1-5 8.66z"/><path d="m166.634 72.83-5-8.66 1.732-1 5 8.66zM174 67h10v2h-10z"/><path d="m175.634 71.83 5-8.66 1.732 1-5 8.66z"/><path d="m180.634 72.83-5-8.66 1.732-1 5 8.66z"/></g></g></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/images/password_check_neutral_dark.svg b/chrome/browser/resources/settings/images/password_check_neutral_dark.svg index 4e68df1..6d790581b 100644 --- a/chrome/browser/resources/settings/images/password_check_neutral_dark.svg +++ b/chrome/browser/resources/settings/images/password_check_neutral_dark.svg
@@ -1 +1 @@ -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="680" height="120"><style>.B{mask:url(#B)}.C{fill:#414447}.D{fill:#4e5154}.E{fill:#262628}.F{fill-rule:nonzero}</style><defs><path id="A" d="M0 0h680v120H0z"/></defs><g fill-rule="evenodd"><mask id="B" fill="#fff"><use xlink:href="#A"/></mask><use fill-opacity=".1" xlink:href="#A"/><g class="F B"><path d="M288.585 52.215V47c10.735 0 19.175-3 25.1-8.955 9.3-9.36 9.325-23.015 9.325-23.15l5.25-.04c0 .645 0 15.9-10.815 26.82-6.935 6.995-16.645 10.54-28.85 10.54z" class="C"/><path d="M253.87 83h-5.245a40.45 40.45 0 0 1 5-18c4.605-8.2 14.4-18 34.96-18v5.215c-14.465 0-24.685 5.17-30.385 15.36A35.35 35.35 0 0 0 253.87 83z" fill="#81c995"/><path d="M254.6 94.5h-90.7V32.325a2.65 2.65 0 0 1 2.64-2.64h85.44a2.65 2.65 0 0 1 2.64 2.64V94.5z" class="E"/><path d="M250.3 30.225A3.791 3.791 0 0 1 254.08 34v59.945h-89.64V34a3.786 3.786 0 0 1 3.78-3.78h82.08m0-.54h-82.1a4.335 4.335 0 0 0-4.32 4.32v60.5h90.72V34a4.335 4.335 0 0 0-4.32-4.32zm-99.36 68.585h116.64v.54H150.93v-.54z" class="D"/><path d="M56 57.915H38.175v-.27a8.91 8.91 0 1 1 17.82 0l.005.27zm-17.275-.54H55.45a8.37 8.37 0 0 0-16.73 0h.005z" fill="#5f6368"/><g class="C"><path d="M426.825 68.895h-17.28a8.64 8.64 0 0 1 17.28 0zM345 88.66h20v4h-20z"/><path d="M348.268 98.32l10-17.32 3.464 2-10 17.32z"/><path d="M358.268 100.32l-10-17.32 3.464-2 10 17.32z"/></g><rect stroke="#4e5154" stroke-width=".5" x="112" y="18" width="68" height="92" rx="6" class="E"/><g fill="#4285f4"><path d="M124 65h12v2h-12z"/><path d="M126.134 70.696l6-10.392 1.732 1-6 10.392z"/><path d="M132.134 71.696l-6-10.392 1.732-1 6 10.392zM140 65h12v2h-12z"/><path d="M142.134 70.696l6-10.392 1.732 1-6 10.392z"/><path d="M148.134 71.696l-6-10.392 1.732-1 6 10.392zM156 65h12v2h-12z"/><path d="M158.134 70.696l6-10.392 1.732 1-6 10.392z"/><path d="M164.134 71.696l-6-10.392 1.732-1 6 10.392z"/></g><g class="D"><rect x="124" y="85" width="14" height="1" rx=".5"/><rect x="124" y="43" width="16" height="1" rx=".5"/><rect x="124" y="50" width="28" height="1" rx=".5"/></g><g class="E"><g stroke="#4e5154" stroke-width=".5"><path d="M146 10h0a7 7 0 0 1 7 7v7h-14v-7a7 7 0 0 1 7-7z"/><circle cx="146" cy="17" r="3"/><path d="M162 24h-32a6 6 0 0 0-6 6v4h44v-4a6 6 0 0 0-6-6z"/></g><path d="M79.6 58.42a12.935 12.935 0 0 0-10.1 4.82A8.62 8.62 0 0 0 58 71.38h34.56c0-7.158-5.802-12.96-12.96-12.96z"/></g><path d="M92.83 71.65h-35.1v-.27a8.89 8.89 0 0 1 11.695-8.455A13.23 13.23 0 0 1 92.83 71.38v.27zm-34.555-.54h34a12.69 12.69 0 0 0-22.56-7.7l-.12.15-.18-.065A8.35 8.35 0 0 0 58.26 71.11h.015z" class="D"/><path d="M38.12 82.36l3.705-3.705c7.6 7.6 15.7 11.43 24.075 11.4 13.17-.03 22.855-9.655 22.95-9.75L92.585 84c-.45.46-11.235 11.25-26.6 11.315C56.12 95.345 46.75 91 38.12 82.36z" fill="#f7bb2a"/><path d="M-8.2 79.58l-3.705-3.705a40.45 40.45 0 0 1 16.25-9.18c9.075-2.57 22.945-2.58 37.5 11.96L38.14 82.36C27.9 72.13 17 68.555 5.77 71.735A35.342 35.342 0 0 0-8.2 79.58z" class="C"/><path d="M636.62 39.735c-5.777.008-10.613-4.377-11.168-10.127s3.35-10.98 9.022-12.08 11.248 2.294 12.88 7.835a11.205 11.205 0 0 1-10.733 14.37zm0-21.765a10.58 10.58 0 0 0-9.82 14.5 10.57 10.57 0 0 0 20.298-5.263 10.57 10.57 0 0 0-10.478-9.237zM619 130h-80a6.785 6.785 0 0 1-6.775-6.775v-10h.6v10A6.185 6.185 0 0 0 539 129.38h80a6.185 6.185 0 0 0 6.175-6.175v-43.55A6.185 6.185 0 0 0 619 73.5h-12v-.6h12a6.785 6.785 0 0 1 6.775 6.775V123.2A6.784 6.784 0 0 1 619 130z" class="D"/><g fill="#383838"><path d="M607.005 73.48H561l3-.6h43.005z"/><path d="M532.8 100.18h-.6v-20.5a6.78 6.78 0 0 1 6.8-6.8h29.5v.62H539a6.185 6.185 0 0 0-6.175 6.175l-.025 20.505z"/></g><path d="M540 93.28a14.37 14.37 0 0 0-11.205 5.355A9.58 9.58 0 0 0 516 107.68h38.4c0-7.953-6.447-14.4-14.4-14.4z" class="C"/><path d="M554.725 108h-39v-.3a9.88 9.88 0 0 1 13-9.395 14.7 14.7 0 0 1 26 9.395v.3zm-38.395-.6h37.795a14.1 14.1 0 0 0-25.065-8.555l-.135.165-.2-.07c-2.795-.998-5.898-.598-8.35 1.075s-3.953 4.42-4.04 7.385h-.005z" class="D"/><path fill="#f8f9fa" d="M498.67 29.88L534.33-.525"/><path d="M498.32 29.468L534-.9l.65.762-35.68 30.377-.648-.76zM641.43 56.08h-5.825a44.942 44.942 0 0 0 5.555 20c5.1 9.145 16 20.05 38.84 20.05V90.3c-16.07 0-27.43-5.745-33.76-17.07a39.127 39.127 0 0 1-4.8-17.14z" class="C"/><path d="M197.89 56c1.165.002 2.1 1.075 2.11 2.4v19.2c-.001 1.325-.946 2.398-2.11 2.4h-71.78c-1.165-.002-2.1-1.075-2.11-2.4V58.4c.001-1.325.946-2.398 2.11-2.4h71.778z" fill="#8ab4f8"/></g><path d="M179.75 56H198a2 2 0 0 1 2 2v20a2 2 0 0 1-2 2h-18.25V56z" fill="#8ab4f8" class="B"/><g fill="#fff" class="F B"><rect x="190" y="62" width="2" height="12" rx="1"/><path d="M132 67h10v2h-10z"/><path d="M133.634 71.83l5-8.66 1.732 1-5 8.66z"/><path d="M138.634 72.83l-5-8.66 1.732-1 5 8.66zM146 67h10v2h-10z"/><path d="M147.634 71.83l5-8.66 1.732 1-5 8.66z"/><path d="M152.634 72.83l-5-8.66 1.732-1 5 8.66zM160 67h10v2h-10z"/><path d="M161.634 71.83l5-8.66 1.732 1-5 8.66z"/><path d="M166.634 72.83l-5-8.66 1.732-1 5 8.66zM174 67h10v2h-10z"/><path d="M175.634 71.83l5-8.66 1.732 1-5 8.66z"/><path d="M180.634 72.83l-5-8.66 1.732-1 5 8.66z"/></g></g></svg> \ No newline at end of file +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="680" height="120"><style>.B{mask:url(#B)}.C{fill:#414447}.D{fill:#4e5154}.E{fill:#262628}.F{fill-rule:nonzero}</style><defs><path id="A" d="M0 0h680v120H0z"/></defs><g fill-rule="evenodd"><mask id="B" fill="#fff"><use xlink:href="#A"/></mask><use fill-opacity=".1" xlink:href="#A"/><g class="F B"><path d="M288.585 52.215V47c10.735 0 19.175-3 25.1-8.955 9.3-9.36 9.325-23.015 9.325-23.15l5.25-.04c0 .645 0 15.9-10.815 26.82-6.935 6.995-16.645 10.54-28.85 10.54z" class="C"/><path d="M253.87 83h-5.245a40.45 40.45 0 0 1 5-18c4.605-8.2 14.4-18 34.96-18v5.215c-14.465 0-24.685 5.17-30.385 15.36A35.35 35.35 0 0 0 253.87 83z" fill="#81c995"/><path d="M254.6 94.5h-90.7V32.325a2.65 2.65 0 0 1 2.64-2.64h85.44a2.65 2.65 0 0 1 2.64 2.64V94.5z" class="E"/><path d="M250.3 30.225A3.791 3.791 0 0 1 254.08 34v59.945h-89.64V34a3.786 3.786 0 0 1 3.78-3.78h82.08m0-.54h-82.1a4.335 4.335 0 0 0-4.32 4.32v60.5h90.72V34a4.335 4.335 0 0 0-4.32-4.32zm-99.36 68.585h116.64v.54H150.93v-.54z" class="D"/><path d="M56 57.915H38.175v-.27a8.91 8.91 0 1 1 17.82 0l.005.27zm-17.275-.54H55.45a8.37 8.37 0 0 0-16.73 0h.005z" fill="#5f6368"/><g class="C"><path d="M426.825 68.895h-17.28a8.64 8.64 0 0 1 17.28 0zM345 88.66h20v4h-20z"/><path d="m348.268 98.32 10-17.32 3.464 2-10 17.32z"/><path d="m358.268 100.32-10-17.32 3.464-2 10 17.32z"/></g><rect stroke="#4e5154" stroke-width=".5" x="112" y="18" width="68" height="92" rx="6" class="E"/><g fill="#4285f4"><path d="M124 65h12v2h-12z"/><path d="m126.134 70.696 6-10.392 1.732 1-6 10.392z"/><path d="m132.134 71.696-6-10.392 1.732-1 6 10.392zM140 65h12v2h-12z"/><path d="m142.134 70.696 6-10.392 1.732 1-6 10.392z"/><path d="m148.134 71.696-6-10.392 1.732-1 6 10.392zM156 65h12v2h-12z"/><path d="m158.134 70.696 6-10.392 1.732 1-6 10.392z"/><path d="m164.134 71.696-6-10.392 1.732-1 6 10.392z"/></g><g class="D"><rect x="124" y="85" width="14" height="1" rx=".5"/><rect x="124" y="43" width="16" height="1" rx=".5"/><rect x="124" y="50" width="28" height="1" rx=".5"/></g><g class="E"><g stroke="#4e5154" stroke-width=".5"><path d="M146 10a7 7 0 0 1 7 7v7h-14v-7a7 7 0 0 1 7-7z"/><circle cx="146" cy="17" r="3"/><path d="M162 24h-32a6 6 0 0 0-6 6v4h44v-4a6 6 0 0 0-6-6z"/></g><path d="M79.6 58.42a12.935 12.935 0 0 0-10.1 4.82A8.62 8.62 0 0 0 58 71.38h34.56c0-7.158-5.802-12.96-12.96-12.96z"/></g><path d="M92.83 71.65h-35.1v-.27a8.89 8.89 0 0 1 11.695-8.455A13.23 13.23 0 0 1 92.83 71.38v.27zm-34.555-.54h34a12.69 12.69 0 0 0-22.56-7.7l-.12.15-.18-.065A8.35 8.35 0 0 0 58.26 71.11h.015z" class="D"/><path d="m38.12 82.36 3.705-3.705c7.6 7.6 15.7 11.43 24.075 11.4 13.17-.03 22.855-9.655 22.95-9.75L92.585 84c-.45.46-11.235 11.25-26.6 11.315C56.12 95.345 46.75 91 38.12 82.36z" fill="#f7bb2a"/><path d="m-8.2 79.58-3.705-3.705a40.45 40.45 0 0 1 16.25-9.18c9.075-2.57 22.945-2.58 37.5 11.96L38.14 82.36C27.9 72.13 17 68.555 5.77 71.735A35.342 35.342 0 0 0-8.2 79.58z" class="C"/><path d="M636.62 39.735c-5.777.008-10.613-4.377-11.168-10.127s3.35-10.98 9.022-12.08 11.248 2.294 12.88 7.835a11.205 11.205 0 0 1-10.733 14.37zm0-21.765a10.58 10.58 0 0 0-9.82 14.5 10.57 10.57 0 0 0 20.298-5.263 10.57 10.57 0 0 0-10.478-9.237zM619 130h-80a6.785 6.785 0 0 1-6.775-6.775v-10h.6v10A6.185 6.185 0 0 0 539 129.38h80a6.185 6.185 0 0 0 6.175-6.175v-43.55A6.185 6.185 0 0 0 619 73.5h-12v-.6h12a6.785 6.785 0 0 1 6.775 6.775V123.2A6.784 6.784 0 0 1 619 130z" class="D"/><g fill="#383838"><path d="M607.005 73.48H561l3-.6h43.005z"/><path d="M532.8 100.18h-.6v-20.5a6.78 6.78 0 0 1 6.8-6.8h29.5v.62H539a6.185 6.185 0 0 0-6.175 6.175l-.025 20.505z"/></g><path d="M540 93.28a14.37 14.37 0 0 0-11.205 5.355A9.58 9.58 0 0 0 516 107.68h38.4c0-7.953-6.447-14.4-14.4-14.4z" class="C"/><path d="M554.725 108h-39v-.3a9.88 9.88 0 0 1 13-9.395 14.7 14.7 0 0 1 26 9.395v.3zm-38.395-.6h37.795a14.1 14.1 0 0 0-25.065-8.555l-.135.165-.2-.07c-2.795-.998-5.898-.598-8.35 1.075s-3.953 4.42-4.04 7.385h-.005z" class="D"/><path fill="#f8f9fa" d="M498.67 29.88 534.33-.525"/><path d="M498.32 29.468 534-.9l.65.762-35.68 30.377-.648-.76zM641.43 56.08h-5.825a44.942 44.942 0 0 0 5.555 20c5.1 9.145 16 20.05 38.84 20.05V90.3c-16.07 0-27.43-5.745-33.76-17.07a39.127 39.127 0 0 1-4.8-17.14z" class="C"/><path d="M197.89 56c1.165.002 2.1 1.075 2.11 2.4v19.2c-.001 1.325-.946 2.398-2.11 2.4h-71.78c-1.165-.002-2.1-1.075-2.11-2.4V58.4c.001-1.325.946-2.398 2.11-2.4h71.778z" fill="#8ab4f8"/></g><path d="M179.75 56H198a2 2 0 0 1 2 2v20a2 2 0 0 1-2 2h-18.25V56z" fill="#8ab4f8" class="B"/><g fill="#fff" class="F B"><rect x="190" y="62" width="2" height="12" rx="1"/><path d="M132 67h10v2h-10z"/><path d="m133.634 71.83 5-8.66 1.732 1-5 8.66z"/><path d="m138.634 72.83-5-8.66 1.732-1 5 8.66zM146 67h10v2h-10z"/><path d="m147.634 71.83 5-8.66 1.732 1-5 8.66z"/><path d="m152.634 72.83-5-8.66 1.732-1 5 8.66zM160 67h10v2h-10z"/><path d="m161.634 71.83 5-8.66 1.732 1-5 8.66z"/><path d="m166.634 72.83-5-8.66 1.732-1 5 8.66zM174 67h10v2h-10z"/><path d="m175.634 71.83 5-8.66 1.732 1-5 8.66z"/><path d="m180.634 72.83-5-8.66 1.732-1 5 8.66z"/></g></g></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/images/password_check_positive.svg b/chrome/browser/resources/settings/images/password_check_positive.svg index 6e3eeaa..13fc38f 100644 --- a/chrome/browser/resources/settings/images/password_check_positive.svg +++ b/chrome/browser/resources/settings/images/password_check_positive.svg
@@ -1 +1 @@ -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="680" height="120"><style>.B{mask:url(#B)}.C{fill:#bdc0c5}.D{fill:#e8e9eb}.E{fill:#f8f9fa}.F{fill-rule:nonzero}</style><defs><path id="A" d="M0 0h680v120H0z"/></defs><g fill-rule="evenodd"><mask id="B" fill="#fff"><use xlink:href="#A"/></mask><use fill-opacity=".02" xlink:href="#A"/><g class="F B"><path d="M288.585 52.215V47c10.735 0 19.175-3 25.1-8.955 9.3-9.36 9.325-23.015 9.325-23.15l5.25-.04c0 .645 0 15.9-10.815 26.82-6.935 6.995-16.645 10.54-28.85 10.54z" class="D"/><path d="M253.87 83h-5.245a40.45 40.45 0 0 1 5-18c4.605-8.2 14.4-18 34.96-18v5.215c-14.465 0-24.685 5.17-30.385 15.36A35.35 35.35 0 0 0 253.87 83z" fill="#34a751"/><path d="M56 57.915H38.175v-.27a8.91 8.91 0 1 1 17.82 0l.005.27zm-17.275-.54H55.45a8.37 8.37 0 0 0-16.73 0h.005z" class="C"/><g class="D"><path d="M426.825 68.895h-17.28a8.64 8.64 0 0 1 17.28 0zM345 88.66h20v4h-20z"/><path d="M348.268 98.32l10-17.32 3.464 2-10 17.32z"/><path d="M358.268 100.32l-10-17.32 3.464-2 10 17.32z"/></g><path d="M254.6 94.5h-90.7V32.325a2.65 2.65 0 0 1 2.64-2.64h85.44a2.65 2.65 0 0 1 2.64 2.64V94.5z" class="E"/><path d="M250.3 30.225A3.791 3.791 0 0 1 254.08 34v59.945h-89.64V34a3.786 3.786 0 0 1 3.78-3.78h82.08m0-.54h-82.1a4.335 4.335 0 0 0-4.32 4.32v60.5h90.72V34a4.335 4.335 0 0 0-4.32-4.32zm-99.36 68.585h116.64v.54H150.93v-.54z" class="C"/><g stroke="#bdc0c5" stroke-width=".5" class="E"><rect x="112" y="18" width="68" height="92" rx="6"/><path d="M224.75 55.75h-76.5a2.43 2.43 0 0 0-1.773.783 2.725 2.725 0 0 0-.727 1.867v19.2c.001.73.28 1.39.727 1.867.454.484 1.08.782 1.772.783h76.5a2.43 2.43 0 0 0 1.773-.783 2.725 2.725 0 0 0 .727-1.867V58.4a2.73 2.73 0 0 0-.727-1.867 2.426 2.426 0 0 0-1.772-.783z"/></g><g fill="#3a7bee"><rect x="215" y="62" width="2" height="12" rx="1"/><path d="M171 67h10v2h-10z"/><path d="M172.634 71.83l5-8.66 1.732 1-5 8.66z"/><path d="M177.634 72.83l-5-8.66 1.732-1 5 8.66zM185 67h10v2h-10z"/><path d="M186.634 71.83l5-8.66 1.732 1-5 8.66z"/><path d="M191.634 72.83l-5-8.66 1.732-1 5 8.66zM199 67h10v2h-10z"/><path d="M200.634 71.83l5-8.66 1.732 1-5 8.66z"/><path d="M205.634 72.83l-5-8.66 1.732-1 5 8.66z"/></g></g><circle fill="#34a751" cx="146" cy="68" r="20" class="B"/><path fill="#fff" d="M143.214 74.75l-6.964-6.478 1.964-1.827 5 4.638 10.572-9.833 1.964 1.84z" class="B"/><g class="F B"><g stroke="#bdc0c5" stroke-width=".5" class="E"><path d="M146 10h0a7 7 0 0 1 7 7v7h-14v-7a7 7 0 0 1 7-7z"/><circle cx="146" cy="17" r="3"/><path d="M162 24h-32a6 6 0 0 0-6 6v4h44v-4a6 6 0 0 0-6-6z"/></g><path d="M79.6 58.42a12.935 12.935 0 0 0-10.1 4.82A8.62 8.62 0 0 0 58 71.38h34.56c0-7.158-5.802-12.96-12.96-12.96z" fill="#fff"/><path d="M92.83 71.65h-35.1v-.27a8.89 8.89 0 0 1 11.695-8.455A13.23 13.23 0 0 1 92.83 71.38v.27zm-34.555-.54h34a12.69 12.69 0 0 0-22.56-7.7l-.12.15-.18-.065A8.35 8.35 0 0 0 58.26 71.11h.015z" class="C"/><path d="M38.12 82.36l3.705-3.705c7.6 7.6 15.7 11.43 24.075 11.4 13.17-.03 22.855-9.655 22.95-9.75L92.585 84c-.45.46-11.235 11.25-26.6 11.315C56.12 95.345 46.75 91 38.12 82.36z" fill="#f7bb2a"/><path d="M-8.2 79.58l-3.705-3.705a40.45 40.45 0 0 1 16.25-9.18c9.075-2.57 22.945-2.58 37.5 11.96L38.14 82.36C27.9 72.13 17 68.555 5.77 71.735A35.342 35.342 0 0 0-8.2 79.58z" class="D"/><g class="C"><path d="M636.62 39.735c-5.777.008-10.613-4.377-11.168-10.127s3.35-10.98 9.022-12.08 11.248 2.294 12.88 7.835a11.205 11.205 0 0 1-10.733 14.37zm0-21.765a10.58 10.58 0 0 0-9.82 14.5 10.57 10.57 0 0 0 20.298-5.263 10.57 10.57 0 0 0-10.478-9.237zM619 130h-80a6.785 6.785 0 0 1-6.775-6.775v-10h.6v10A6.185 6.185 0 0 0 539 129.38h80a6.185 6.185 0 0 0 6.175-6.175v-43.55A6.185 6.185 0 0 0 619 73.5h-12v-.6h12a6.785 6.785 0 0 1 6.775 6.775V123.2A6.784 6.784 0 0 1 619 130z"/><path d="M607.005 73.48H561l3-.6h43.005z"/><path d="M532.8 100.18h-.6v-20.5a6.78 6.78 0 0 1 6.8-6.8h29.5v.62H539a6.185 6.185 0 0 0-6.175 6.175l-.025 20.505z"/></g><path d="M540 93.28a14.37 14.37 0 0 0-11.205 5.355A9.58 9.58 0 0 0 516 107.68h38.4c0-7.953-6.447-14.4-14.4-14.4z" fill="#fff"/><path d="M554.725 108h-39v-.3a9.88 9.88 0 0 1 13-9.395 14.7 14.7 0 0 1 26 9.395v.3zm-38.395-.6h37.795a14.1 14.1 0 0 0-25.065-8.555l-.135.165-.2-.07c-2.795-.998-5.898-.598-8.35 1.075s-3.953 4.42-4.04 7.385h-.005z" class="C"/><path d="M498.67 29.88L534.33-.525" class="E"/><path d="M498.32 29.468L534-.9l.65.762-35.68 30.377-.648-.76zM641.43 56.08h-5.825a44.942 44.942 0 0 0 5.555 20c5.1 9.145 16 20.05 38.84 20.05V90.3c-16.07 0-27.43-5.745-33.76-17.07a39.127 39.127 0 0 1-4.8-17.14z" class="D"/></g></g></svg> \ No newline at end of file +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="680" height="120"><style>.B{mask:url(#B)}.C{fill:#bdc0c5}.D{fill:#e8e9eb}.E{fill:#f8f9fa}.F{fill-rule:nonzero}</style><defs><path id="A" d="M0 0h680v120H0z"/></defs><g fill-rule="evenodd"><mask id="B" fill="#fff"><use xlink:href="#A"/></mask><use fill-opacity=".02" xlink:href="#A"/><g class="F B"><path d="M288.585 52.215V47c10.735 0 19.175-3 25.1-8.955 9.3-9.36 9.325-23.015 9.325-23.15l5.25-.04c0 .645 0 15.9-10.815 26.82-6.935 6.995-16.645 10.54-28.85 10.54z" class="D"/><path d="M253.87 83h-5.245a40.45 40.45 0 0 1 5-18c4.605-8.2 14.4-18 34.96-18v5.215c-14.465 0-24.685 5.17-30.385 15.36A35.35 35.35 0 0 0 253.87 83z" fill="#34a751"/><path d="M56 57.915H38.175v-.27a8.91 8.91 0 1 1 17.82 0l.005.27zm-17.275-.54H55.45a8.37 8.37 0 0 0-16.73 0h.005z" class="C"/><g class="D"><path d="M426.825 68.895h-17.28a8.64 8.64 0 0 1 17.28 0zM345 88.66h20v4h-20z"/><path d="m348.268 98.32 10-17.32 3.464 2-10 17.32z"/><path d="m358.268 100.32-10-17.32 3.464-2 10 17.32z"/></g><path d="M254.6 94.5h-90.7V32.325a2.65 2.65 0 0 1 2.64-2.64h85.44a2.65 2.65 0 0 1 2.64 2.64V94.5z" class="E"/><path d="M250.3 30.225A3.791 3.791 0 0 1 254.08 34v59.945h-89.64V34a3.786 3.786 0 0 1 3.78-3.78h82.08m0-.54h-82.1a4.335 4.335 0 0 0-4.32 4.32v60.5h90.72V34a4.335 4.335 0 0 0-4.32-4.32zm-99.36 68.585h116.64v.54H150.93v-.54z" class="C"/><g stroke="#bdc0c5" stroke-width=".5" class="E"><rect x="112" y="18" width="68" height="92" rx="6"/><path d="M224.75 55.75h-76.5a2.43 2.43 0 0 0-1.773.783 2.725 2.725 0 0 0-.727 1.867v19.2c.001.73.28 1.39.727 1.867.454.484 1.08.782 1.772.783h76.5a2.43 2.43 0 0 0 1.773-.783 2.725 2.725 0 0 0 .727-1.867V58.4a2.73 2.73 0 0 0-.727-1.867 2.426 2.426 0 0 0-1.772-.783z"/></g><g fill="#3a7bee"><rect x="215" y="62" width="2" height="12" rx="1"/><path d="M171 67h10v2h-10z"/><path d="m172.634 71.83 5-8.66 1.732 1-5 8.66z"/><path d="m177.634 72.83-5-8.66 1.732-1 5 8.66zM185 67h10v2h-10z"/><path d="m186.634 71.83 5-8.66 1.732 1-5 8.66z"/><path d="m191.634 72.83-5-8.66 1.732-1 5 8.66zM199 67h10v2h-10z"/><path d="m200.634 71.83 5-8.66 1.732 1-5 8.66z"/><path d="m205.634 72.83-5-8.66 1.732-1 5 8.66z"/></g></g><circle fill="#34a751" cx="146" cy="68" r="20" class="B"/><path fill="#fff" d="m143.214 74.75-6.964-6.478 1.964-1.827 5 4.638 10.572-9.833 1.964 1.84z" class="B"/><g class="F B"><g stroke="#bdc0c5" stroke-width=".5" class="E"><path d="M146 10a7 7 0 0 1 7 7v7h-14v-7a7 7 0 0 1 7-7z"/><circle cx="146" cy="17" r="3"/><path d="M162 24h-32a6 6 0 0 0-6 6v4h44v-4a6 6 0 0 0-6-6z"/></g><path d="M79.6 58.42a12.935 12.935 0 0 0-10.1 4.82A8.62 8.62 0 0 0 58 71.38h34.56c0-7.158-5.802-12.96-12.96-12.96z" fill="#fff"/><path d="M92.83 71.65h-35.1v-.27a8.89 8.89 0 0 1 11.695-8.455A13.23 13.23 0 0 1 92.83 71.38v.27zm-34.555-.54h34a12.69 12.69 0 0 0-22.56-7.7l-.12.15-.18-.065A8.35 8.35 0 0 0 58.26 71.11h.015z" class="C"/><path d="m38.12 82.36 3.705-3.705c7.6 7.6 15.7 11.43 24.075 11.4 13.17-.03 22.855-9.655 22.95-9.75L92.585 84c-.45.46-11.235 11.25-26.6 11.315C56.12 95.345 46.75 91 38.12 82.36z" fill="#f7bb2a"/><path d="m-8.2 79.58-3.705-3.705a40.45 40.45 0 0 1 16.25-9.18c9.075-2.57 22.945-2.58 37.5 11.96L38.14 82.36C27.9 72.13 17 68.555 5.77 71.735A35.342 35.342 0 0 0-8.2 79.58z" class="D"/><g class="C"><path d="M636.62 39.735c-5.777.008-10.613-4.377-11.168-10.127s3.35-10.98 9.022-12.08 11.248 2.294 12.88 7.835a11.205 11.205 0 0 1-10.733 14.37zm0-21.765a10.58 10.58 0 0 0-9.82 14.5 10.57 10.57 0 0 0 20.298-5.263 10.57 10.57 0 0 0-10.478-9.237zM619 130h-80a6.785 6.785 0 0 1-6.775-6.775v-10h.6v10A6.185 6.185 0 0 0 539 129.38h80a6.185 6.185 0 0 0 6.175-6.175v-43.55A6.185 6.185 0 0 0 619 73.5h-12v-.6h12a6.785 6.785 0 0 1 6.775 6.775V123.2A6.784 6.784 0 0 1 619 130z"/><path d="M607.005 73.48H561l3-.6h43.005z"/><path d="M532.8 100.18h-.6v-20.5a6.78 6.78 0 0 1 6.8-6.8h29.5v.62H539a6.185 6.185 0 0 0-6.175 6.175l-.025 20.505z"/></g><path d="M540 93.28a14.37 14.37 0 0 0-11.205 5.355A9.58 9.58 0 0 0 516 107.68h38.4c0-7.953-6.447-14.4-14.4-14.4z" fill="#fff"/><path d="M554.725 108h-39v-.3a9.88 9.88 0 0 1 13-9.395 14.7 14.7 0 0 1 26 9.395v.3zm-38.395-.6h37.795a14.1 14.1 0 0 0-25.065-8.555l-.135.165-.2-.07c-2.795-.998-5.898-.598-8.35 1.075s-3.953 4.42-4.04 7.385h-.005z" class="C"/><path d="M498.67 29.88 534.33-.525" class="E"/><path d="M498.32 29.468 534-.9l.65.762-35.68 30.377-.648-.76zM641.43 56.08h-5.825a44.942 44.942 0 0 0 5.555 20c5.1 9.145 16 20.05 38.84 20.05V90.3c-16.07 0-27.43-5.745-33.76-17.07a39.127 39.127 0 0 1-4.8-17.14z" class="D"/></g></g></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/images/password_check_positive_dark.svg b/chrome/browser/resources/settings/images/password_check_positive_dark.svg index 84741602..a79e826 100644 --- a/chrome/browser/resources/settings/images/password_check_positive_dark.svg +++ b/chrome/browser/resources/settings/images/password_check_positive_dark.svg
@@ -1 +1 @@ -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="680" height="120"><style>.B{mask:url(#B)}.C{fill:#414447}.D{stroke:#4e5154}.E{stroke-width:.5}.F{fill:#262628}.G{fill-rule:nonzero}</style><defs><path id="A" d="M0 0h680v120H0z"/></defs><g fill-rule="evenodd"><mask id="B" fill="#fff"><use xlink:href="#A"/></mask><use fill-opacity=".1" xlink:href="#A"/><g class="G B"><path d="M288.585 52.215V47c10.735 0 19.175-3 25.1-8.955 9.3-9.36 9.325-23.015 9.325-23.15l5.25-.04c0 .645 0 15.9-10.815 26.82-6.935 6.995-16.645 10.54-28.85 10.54z" class="C"/><path d="M253.87 83h-5.245a40.45 40.45 0 0 1 5-18c4.605-8.2 14.4-18 34.96-18v5.215c-14.465 0-24.685 5.17-30.385 15.36A35.35 35.35 0 0 0 253.87 83z" fill="#81c995"/><g class="C"><path d="M56 57.915H38.175v-.27a8.91 8.91 0 1 1 17.82 0l.005.27zm-17.275-.54H55.45a8.37 8.37 0 0 0-16.73 0h.005zm388.1 11.52h-17.28a8.64 8.64 0 0 1 17.28 0zM345 88.66h20v4h-20z"/><path d="M348.268 98.32l10-17.32 3.464 2-10 17.32z"/><path d="M358.268 100.32l-10-17.32 3.464-2 10 17.32z"/></g><path d="M254.6 94.5h-90.7V32.325a2.65 2.65 0 0 1 2.64-2.64h85.44a2.65 2.65 0 0 1 2.64 2.64V94.5z" class="D E F"/><path d="M250.3 30.225A3.791 3.791 0 0 1 254.08 34v59.945h-89.64V34a3.786 3.786 0 0 1 3.78-3.78h82.08m0-.54h-82.1a4.335 4.335 0 0 0-4.32 4.32v60.5h90.72V34a4.335 4.335 0 0 0-4.32-4.32zm-99.36 68.585h116.64v.54H150.93v-.54z" class="C"/><g class="D E F"><rect x="112" y="18" width="68" height="92" rx="6"/><path d="M224.75 56c1.242.002 2.25 1.075 2.25 2.4v19.2c-.001 1.325-1.008 2.398-2.25 2.4h-76.5c-1.242-.002-2.25-1.075-2.25-2.4V58.4c.001-1.325 1.008-2.398 2.25-2.4h76.5z"/></g><g fill="#8ab4f8"><rect x="215" y="62" width="2" height="12" rx="1"/><path d="M171 67h10v2h-10z"/><path d="M172.634 71.83l5-8.66 1.732 1-5 8.66z"/><path d="M177.634 72.83l-5-8.66 1.732-1 5 8.66zM185 67h10v2h-10z"/><path d="M186.634 71.83l5-8.66 1.732 1-5 8.66z"/><path d="M191.634 72.83l-5-8.66 1.732-1 5 8.66zM199 67h10v2h-10z"/><path d="M200.634 71.83l5-8.66 1.732 1-5 8.66z"/><path d="M205.634 72.83l-5-8.66 1.732-1 5 8.66z"/></g><circle fill="#81c995" cx="146" cy="68" r="20"/></g><path fill="#28282b" d="M143.214 74.75l-6.964-6.478 1.964-1.827 5 4.638 10.572-9.833 1.964 1.84z" class="B"/><g class="G B"><g class="D E F"><path d="M146 10a7 7 0 0 1 7 7v7h-14v-7a7 7 0 0 1 7-7z"/><circle cx="146" cy="17" r="3"/><path d="M162 24h-32a6 6 0 0 0-6 6v4h44v-4a6 6 0 0 0-6-6z"/></g><path d="M79.6 58.42a12.935 12.935 0 0 0-10.1 4.82A8.62 8.62 0 0 0 58 71.38h34.56c0-7.158-5.802-12.96-12.96-12.96z" class="C"/><path d="M92.83 71.65h-35.1v-.27a8.89 8.89 0 0 1 11.695-8.455A13.23 13.23 0 0 1 92.83 71.38v.27zm-34.555-.54h34a12.69 12.69 0 0 0-22.56-7.7l-.12.15-.18-.065A8.35 8.35 0 0 0 58.26 71.11h.015z" fill="#bdc0c5"/><path d="M38.12 82.36l3.705-3.705c7.6 7.6 15.7 11.43 24.075 11.4 13.17-.03 22.855-9.655 22.95-9.75L92.585 84c-.45.46-11.235 11.25-26.6 11.315C56.12 95.345 46.75 91 38.12 82.36z" fill="#f7bb2a"/><path d="M-8.2 79.58l-3.705-3.705a40.45 40.45 0 0 1 16.25-9.18c9.075-2.57 22.945-2.58 37.5 11.96L38.14 82.36C27.9 72.13 17 68.555 5.77 71.735A35.342 35.342 0 0 0-8.2 79.58z" class="C"/><path d="M636.62 39.735c-5.777.008-10.613-4.377-11.168-10.127s3.35-10.98 9.022-12.08 11.248 2.294 12.88 7.835a11.205 11.205 0 0 1-10.733 14.37zm0-21.765a10.58 10.58 0 0 0-9.82 14.5 10.57 10.57 0 0 0 20.298-5.263 10.57 10.57 0 0 0-10.478-9.237zM619 130h-80a6.785 6.785 0 0 1-6.775-6.775v-10h.6v10A6.185 6.185 0 0 0 539 129.38h80a6.185 6.185 0 0 0 6.175-6.175v-43.55A6.185 6.185 0 0 0 619 73.5h-12v-.6h12a6.785 6.785 0 0 1 6.775 6.775V123.2A6.784 6.784 0 0 1 619 130z" fill="#4e5154"/><path d="M607.005 73.48H561l3-.6h43.005z" class="D E F"/><path d="M532.8 100.18h-.6v-20.5a6.78 6.78 0 0 1 6.8-6.8h29.5v.62H539a6.185 6.185 0 0 0-6.175 6.175l-.025 20.505z" fill="#bdc0c5"/><path d="M540 93.28a14.37 14.37 0 0 0-11.205 5.355A9.58 9.58 0 0 0 516 107.68h38.4c0-7.953-6.447-14.4-14.4-14.4z" class="C"/><path d="M554.725 108h-39v-.3a9.88 9.88 0 0 1 13-9.395 14.7 14.7 0 0 1 26 9.395v.3zm-38.395-.6h37.795a14.1 14.1 0 0 0-25.065-8.555l-.135.165-.2-.07c-2.795-.998-5.898-.598-8.35 1.075s-3.953 4.42-4.04 7.385h-.005z" fill="#4e5154"/><path d="M498.67 29.88L534.33-.525m-36.01 29.993L534-.9l.65.762-35.68 30.377-.648-.76zM641.43 56.08h-5.825a44.942 44.942 0 0 0 5.555 20c5.1 9.145 16 20.05 38.84 20.05V90.3c-16.07 0-27.43-5.745-33.76-17.07a39.127 39.127 0 0 1-4.8-17.14z"/></g></g></svg> \ No newline at end of file +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="680" height="120"><style>.B{mask:url(#B)}.C{fill:#414447}.D{stroke:#4e5154}.E{stroke-width:.5}.F{fill:#262628}.G{fill-rule:nonzero}</style><defs><path id="A" d="M0 0h680v120H0z"/></defs><g fill-rule="evenodd"><mask id="B" fill="#fff"><use xlink:href="#A"/></mask><use fill-opacity=".1" xlink:href="#A"/><g class="G B"><path d="M288.585 52.215V47c10.735 0 19.175-3 25.1-8.955 9.3-9.36 9.325-23.015 9.325-23.15l5.25-.04c0 .645 0 15.9-10.815 26.82-6.935 6.995-16.645 10.54-28.85 10.54z" class="C"/><path d="M253.87 83h-5.245a40.45 40.45 0 0 1 5-18c4.605-8.2 14.4-18 34.96-18v5.215c-14.465 0-24.685 5.17-30.385 15.36A35.35 35.35 0 0 0 253.87 83z" fill="#81c995"/><g class="C"><path d="M56 57.915H38.175v-.27a8.91 8.91 0 1 1 17.82 0l.005.27zm-17.275-.54H55.45a8.37 8.37 0 0 0-16.73 0h.005zm388.1 11.52h-17.28a8.64 8.64 0 0 1 17.28 0zM345 88.66h20v4h-20z"/><path d="m348.268 98.32 10-17.32 3.464 2-10 17.32z"/><path d="m358.268 100.32-10-17.32 3.464-2 10 17.32z"/></g><path d="M254.6 94.5h-90.7V32.325a2.65 2.65 0 0 1 2.64-2.64h85.44a2.65 2.65 0 0 1 2.64 2.64V94.5z" class="D E F"/><path d="M250.3 30.225A3.791 3.791 0 0 1 254.08 34v59.945h-89.64V34a3.786 3.786 0 0 1 3.78-3.78h82.08m0-.54h-82.1a4.335 4.335 0 0 0-4.32 4.32v60.5h90.72V34a4.335 4.335 0 0 0-4.32-4.32zm-99.36 68.585h116.64v.54H150.93v-.54z" class="C"/><g class="D E F"><rect x="112" y="18" width="68" height="92" rx="6"/><path d="M224.75 56c1.242.002 2.25 1.075 2.25 2.4v19.2c-.001 1.325-1.008 2.398-2.25 2.4h-76.5c-1.242-.002-2.25-1.075-2.25-2.4V58.4c.001-1.325 1.008-2.398 2.25-2.4h76.5z"/></g><g fill="#8ab4f8"><rect x="215" y="62" width="2" height="12" rx="1"/><path d="M171 67h10v2h-10z"/><path d="m172.634 71.83 5-8.66 1.732 1-5 8.66z"/><path d="m177.634 72.83-5-8.66 1.732-1 5 8.66zM185 67h10v2h-10z"/><path d="m186.634 71.83 5-8.66 1.732 1-5 8.66z"/><path d="m191.634 72.83-5-8.66 1.732-1 5 8.66zM199 67h10v2h-10z"/><path d="m200.634 71.83 5-8.66 1.732 1-5 8.66z"/><path d="m205.634 72.83-5-8.66 1.732-1 5 8.66z"/></g><circle fill="#81c995" cx="146" cy="68" r="20"/></g><path fill="#28282b" d="m143.214 74.75-6.964-6.478 1.964-1.827 5 4.638 10.572-9.833 1.964 1.84z" class="B"/><g class="G B"><g class="D E F"><path d="M146 10a7 7 0 0 1 7 7v7h-14v-7a7 7 0 0 1 7-7z"/><circle cx="146" cy="17" r="3"/><path d="M162 24h-32a6 6 0 0 0-6 6v4h44v-4a6 6 0 0 0-6-6z"/></g><path d="M79.6 58.42a12.935 12.935 0 0 0-10.1 4.82A8.62 8.62 0 0 0 58 71.38h34.56c0-7.158-5.802-12.96-12.96-12.96z" class="C"/><path d="M92.83 71.65h-35.1v-.27a8.89 8.89 0 0 1 11.695-8.455A13.23 13.23 0 0 1 92.83 71.38v.27zm-34.555-.54h34a12.69 12.69 0 0 0-22.56-7.7l-.12.15-.18-.065A8.35 8.35 0 0 0 58.26 71.11h.015z" fill="#bdc0c5"/><path d="m38.12 82.36 3.705-3.705c7.6 7.6 15.7 11.43 24.075 11.4 13.17-.03 22.855-9.655 22.95-9.75L92.585 84c-.45.46-11.235 11.25-26.6 11.315C56.12 95.345 46.75 91 38.12 82.36z" fill="#f7bb2a"/><path d="m-8.2 79.58-3.705-3.705a40.45 40.45 0 0 1 16.25-9.18c9.075-2.57 22.945-2.58 37.5 11.96L38.14 82.36C27.9 72.13 17 68.555 5.77 71.735A35.342 35.342 0 0 0-8.2 79.58z" class="C"/><path d="M636.62 39.735c-5.777.008-10.613-4.377-11.168-10.127s3.35-10.98 9.022-12.08 11.248 2.294 12.88 7.835a11.205 11.205 0 0 1-10.733 14.37zm0-21.765a10.58 10.58 0 0 0-9.82 14.5 10.57 10.57 0 0 0 20.298-5.263 10.57 10.57 0 0 0-10.478-9.237zM619 130h-80a6.785 6.785 0 0 1-6.775-6.775v-10h.6v10A6.185 6.185 0 0 0 539 129.38h80a6.185 6.185 0 0 0 6.175-6.175v-43.55A6.185 6.185 0 0 0 619 73.5h-12v-.6h12a6.785 6.785 0 0 1 6.775 6.775V123.2A6.784 6.784 0 0 1 619 130z" fill="#4e5154"/><path d="M607.005 73.48H561l3-.6h43.005z" class="D E F"/><path d="M532.8 100.18h-.6v-20.5a6.78 6.78 0 0 1 6.8-6.8h29.5v.62H539a6.185 6.185 0 0 0-6.175 6.175l-.025 20.505z" fill="#bdc0c5"/><path d="M540 93.28a14.37 14.37 0 0 0-11.205 5.355A9.58 9.58 0 0 0 516 107.68h38.4c0-7.953-6.447-14.4-14.4-14.4z" class="C"/><path d="M554.725 108h-39v-.3a9.88 9.88 0 0 1 13-9.395 14.7 14.7 0 0 1 26 9.395v.3zm-38.395-.6h37.795a14.1 14.1 0 0 0-25.065-8.555l-.135.165-.2-.07c-2.795-.998-5.898-.598-8.35 1.075s-3.953 4.42-4.04 7.385h-.005z" fill="#4e5154"/><path d="M498.67 29.88 534.33-.525m-36.01 29.993L534-.9l.65.762-35.68 30.377-.648-.76zM641.43 56.08h-5.825a44.942 44.942 0 0 0 5.555 20c5.1 9.145 16 20.05 38.84 20.05V90.3c-16.07 0-27.43-5.745-33.76-17.07a39.127 39.127 0 0 1-4.8-17.14z"/></g></g></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/images/permissions_banner.svg b/chrome/browser/resources/settings/images/permissions_banner.svg index 8969fcf4..3349d2b 100644 --- a/chrome/browser/resources/settings/images/permissions_banner.svg +++ b/chrome/browser/resources/settings/images/permissions_banner.svg
@@ -1 +1 @@ -<svg fill="none" height="226" viewBox="0 0 680 226" width="680" xmlns="http://www.w3.org/2000/svg"><path d="M0 0h680v226H0z" fill="#f8f9fa"/><path clip-rule="evenodd" d="M637.997 169.005l12.076 1.097c2.282.128 4.293 1.567 5.238 3.684l5.1 11.001.003.007a6.49 6.49 0 0 1-.59 6.373l-.007.01-6.997 9.895c-1.3 1.887-3.545 2.96-5.817 2.723l-12.075-1.097c-2.283-.128-4.294-1.567-5.238-3.684l-5.101-11.001-.003-.007a6.492 6.492 0 0 1 .59-6.373l.007-.01 6.997-9.895c1.3-1.886 3.545-2.96 5.817-2.723zm-.202 1.989c-1.523-.16-3.072.564-3.971 1.873l-.007.01-6.996 9.895a4.488 4.488 0 0 0-.41 4.415l5.1 11 .003.007c.654 1.473 2.032 2.428 3.539 2.507l.019.001 12.126 1.103h.007c1.523.161 3.072-.563 3.971-1.872l.007-.01 6.997-9.895a4.49 4.49 0 0 0 .409-4.415l-5.1-11-.003-.007c-.654-1.473-2.032-2.428-3.539-2.507l-.019-.001-12.126-1.103z" fill="#34a853" fill-rule="evenodd"/><path clip-rule="evenodd" d="M616.907 57.496c-.572-.051-1.063.368-1.111.895l-.001.004-2.499 26.096v.002c-.051.572.368 1.063.894 1.111h.005l26.095 2.5h.002c.573.051 1.064-.368 1.112-.894v-.005l2.5-26.095v-.002c.051-.573-.368-1.064-.895-1.112h-.004l-26.096-2.5h-.002zm-3.103.71c.154-1.671 1.661-2.85 3.286-2.702h.005l26.095 2.5h.003c1.672.154 2.851 1.66 2.703 3.287l-.001.004-2.499 26.096v.002c-.154 1.672-1.661 2.85-3.287 2.703h-.004l-26.096-2.5h-.002c-1.672-.154-2.851-1.66-2.703-3.287v-.004l2.5-26.096v-.002z" fill="#e94235" fill-rule="evenodd"/><path d="M598.1 114.6l-30.9-11.2c-8.1-3-17 1.3-20 9.3-3 8.1 1.3 17 9.3 20l30.9 11.2c8.1 3 17-1.3 20-9.3 3.1-8.2-1.2-17-9.3-20z" fill="#dadce0"/><path d="M465.8 68.5c0 3.1-2.5 5.6-5.6 5.6s-5.6-2.5-5.6-5.6 2.5-5.6 5.6-5.6 5.6 2.5 5.6 5.6z" fill="#4285f4"/><path d="M493.3 108.1c0-17.4-14.6-31.5-32.5-31.5-18 0-32.5 14.1-32.5 31.5v28.1c0 1.4 1.2 2.5 2.6 2.5h59.8c1.4 0 2.6-1.1 2.6-2.5z" fill="#d2e3fc"/><g fill="#4285f4"><path clip-rule="evenodd" d="M421.3 145.2a1 1 0 0 1 1-1h77a1 1 0 0 1 0 2h-77a1 1 0 0 1-1-1z" fill-rule="evenodd"/><path d="M460.8 162.7c5.5 0 10-4.5 10-10h-20c0 5.5 4.5 10 10 10z"/><path clip-rule="evenodd" d="M205.7 157.6c0-7.947 6.443-14.5 14.5-14.5 7.947 0 14.5 6.443 14.5 14.5 0 7.947-6.443 14.5-14.5 14.5s-14.5-6.553-14.5-14.5zm14.5-12.5c-6.943 0-12.5 5.647-12.5 12.5s5.557 12.5 12.5 12.5 12.5-5.647 12.5-12.5c0-6.943-5.648-12.5-12.5-12.5z" fill-rule="evenodd"/></g><path d="M252.4 115.2c-1.8 3.6-4.2 7.6-7.4 11.8l-22.7 29.5c-1 1.4-3.2 1.4-4.2 0L195.4 127c-3.2-4.2-5.6-8.2-7.4-11.8-8.8-17.6-2.6-39.1 14.5-48.6 5.1-2.8 10.9-4.5 17.2-4.6h1.1c6.2.1 12 1.8 17.1 4.6 17.1 9.5 23.3 31.1 14.5 48.6z" fill="#d2e3fc"/><path d="M229 91.1c0 4.9-3.9 8.8-8.8 8.8s-8.8-3.9-8.8-8.8 3.9-8.8 8.8-8.8 8.8 3.9 8.8 8.8z" fill="#4285f4"/><path clip-rule="evenodd" d="M210.542 146.647c2.57-2.249 5.9-3.647 9.658-3.647 3.656 0 7.095 1.398 9.676 3.763l-1.352 1.474A12.33 12.33 0 0 0 220.2 145c-3.242 0-6.112 1.202-8.341 3.153z" fill="#fff" fill-rule="evenodd"/><path clip-rule="evenodd" d="M307.1 109.3a1 1 0 0 1 1 1v15.5c0 17.448 14.252 31.7 31.7 31.7s31.7-14.252 31.7-31.7v-15.5a1 1 0 0 1 2 0v15.5c0 18.552-15.148 33.7-33.7 33.7s-33.7-15.148-33.7-33.7v-15.5a1 1 0 0 1 1-1z" fill="#4285f4" fill-rule="evenodd"/><path d="M339.8 148.3c-12.5 0-22.6-10.1-22.6-22.6V68.6c0-12.5 10.1-22.6 22.6-22.6s22.6 10.1 22.6 22.6v57.2c0 12.4-10.2 22.5-22.6 22.5z" fill="#d2e3fc"/><path clip-rule="evenodd" d="M362.4 98.2h-45.2v-2h45.2z" fill="#fff" fill-rule="evenodd"/><path clip-rule="evenodd" d="M339.8 157.5a1 1 0 0 1 1 1V181a1 1 0 0 1-2 0v-22.5a1 1 0 0 1 1-1z" fill="#4285f4" fill-rule="evenodd"/><path d="M353.3 119.5c0 7.5-6 13.5-13.5 13.5-7.5-.1-13.5-6.1-13.5-13.5 0-7.5 6-13.5 13.5-13.5s13.5 6.1 13.5 13.5z" fill="#4285f4"/><path clip-rule="evenodd" d="M332.2 180.9a1 1 0 0 1 1-1H346a1 1 0 0 1 0 2h-12.8a1 1 0 0 1-1-1z" fill="#4285f4" fill-rule="evenodd"/><path d="M87 91.97c0 2.76-2.209 4.969-4.97 4.969C79.21 97 77 94.73 77 91.969 77 89.21 79.209 87 81.97 87c2.76 0 5.03 2.209 5.03 4.97z" fill="#d2e3fc"/><path d="M40.327 161.675c-1.562 2.01-4.7 1.9-6.164-.134-4.294-6.113-4.248-14.585.625-20.739a17.327 17.327 0 0 1 20.19-5.353c2.345 1.016 3.115 3.943 1.553 5.953z" fill="#fbbc04"/><path clip-rule="evenodd" d="M45.638 39.41l23.073 2.696a3.38 3.38 0 0 1 2.395 5.385l-.003.005L57.306 66.09l-.001.003c-1.566 2.13-4.828 1.7-5.826-.704l-9.3-21.4-.004-.01c-.958-2.326.809-4.994 3.463-4.57zm-1.617 3.801l9.3 21.4.004.008a1.368 1.368 0 0 0 2.369.29l.003-.005L69.494 46.31l.001-.002c.644-.881.128-2.094-1-2.213h-.011L45.36 41.39l-.024-.004c-.93-.154-1.746.763-1.315 1.825z" fill="#34a853" fill-rule="evenodd"/></svg> \ No newline at end of file +<svg fill="none" height="226" viewBox="0 0 680 226" width="680" xmlns="http://www.w3.org/2000/svg"><path d="M0 0h680v226H0z" fill="#f8f9fa"/><path clip-rule="evenodd" d="m637.997 169.005 12.076 1.097c2.282.128 4.293 1.567 5.238 3.684l5.1 11.001.003.007a6.49 6.49 0 0 1-.59 6.373l-.007.01-6.997 9.895c-1.3 1.887-3.545 2.96-5.817 2.723l-12.075-1.097c-2.283-.128-4.294-1.567-5.238-3.684l-5.101-11.001-.003-.007a6.492 6.492 0 0 1 .59-6.373l.007-.01 6.997-9.895c1.3-1.886 3.545-2.96 5.817-2.723zm-.202 1.989c-1.523-.16-3.072.564-3.971 1.873l-.007.01-6.996 9.895a4.488 4.488 0 0 0-.41 4.415l5.1 11 .003.007c.654 1.473 2.032 2.428 3.539 2.507l.019.001 12.126 1.103h.007c1.523.161 3.072-.563 3.971-1.872l.007-.01 6.997-9.895a4.49 4.49 0 0 0 .409-4.415l-5.1-11-.003-.007c-.654-1.473-2.032-2.428-3.539-2.507l-.019-.001-12.126-1.103z" fill="#34a853" fill-rule="evenodd"/><path clip-rule="evenodd" d="M616.907 57.496c-.572-.051-1.063.368-1.111.895l-.001.004-2.499 26.096v.002c-.051.572.368 1.063.894 1.111h.005l26.095 2.5h.002c.573.051 1.064-.368 1.112-.894v-.005l2.5-26.095v-.002c.051-.573-.368-1.064-.895-1.112h-.004l-26.096-2.5h-.002zm-3.103.71c.154-1.671 1.661-2.85 3.286-2.702h.005l26.095 2.5h.003c1.672.154 2.851 1.66 2.703 3.287l-.001.004-2.499 26.096v.002c-.154 1.672-1.661 2.85-3.287 2.703h-.004l-26.096-2.5h-.002c-1.672-.154-2.851-1.66-2.703-3.287v-.004l2.5-26.096v-.002z" fill="#e94235" fill-rule="evenodd"/><path d="m598.1 114.6-30.9-11.2c-8.1-3-17 1.3-20 9.3-3 8.1 1.3 17 9.3 20l30.9 11.2c8.1 3 17-1.3 20-9.3 3.1-8.2-1.2-17-9.3-20z" fill="#dadce0"/><path d="M465.8 68.5c0 3.1-2.5 5.6-5.6 5.6s-5.6-2.5-5.6-5.6 2.5-5.6 5.6-5.6 5.6 2.5 5.6 5.6z" fill="#4285f4"/><path d="M493.3 108.1c0-17.4-14.6-31.5-32.5-31.5-18 0-32.5 14.1-32.5 31.5v28.1c0 1.4 1.2 2.5 2.6 2.5h59.8c1.4 0 2.6-1.1 2.6-2.5z" fill="#d2e3fc"/><g fill="#4285f4"><path clip-rule="evenodd" d="M421.3 145.2a1 1 0 0 1 1-1h77a1 1 0 0 1 0 2h-77a1 1 0 0 1-1-1z" fill-rule="evenodd"/><path d="M460.8 162.7c5.5 0 10-4.5 10-10h-20c0 5.5 4.5 10 10 10z"/><path clip-rule="evenodd" d="M205.7 157.6c0-7.947 6.443-14.5 14.5-14.5 7.947 0 14.5 6.443 14.5 14.5 0 7.947-6.443 14.5-14.5 14.5s-14.5-6.553-14.5-14.5zm14.5-12.5c-6.943 0-12.5 5.647-12.5 12.5s5.557 12.5 12.5 12.5 12.5-5.647 12.5-12.5c0-6.943-5.648-12.5-12.5-12.5z" fill-rule="evenodd"/></g><path d="M252.4 115.2c-1.8 3.6-4.2 7.6-7.4 11.8l-22.7 29.5c-1 1.4-3.2 1.4-4.2 0L195.4 127c-3.2-4.2-5.6-8.2-7.4-11.8-8.8-17.6-2.6-39.1 14.5-48.6 5.1-2.8 10.9-4.5 17.2-4.6h1.1c6.2.1 12 1.8 17.1 4.6 17.1 9.5 23.3 31.1 14.5 48.6z" fill="#d2e3fc"/><path d="M229 91.1c0 4.9-3.9 8.8-8.8 8.8s-8.8-3.9-8.8-8.8 3.9-8.8 8.8-8.8 8.8 3.9 8.8 8.8z" fill="#4285f4"/><path clip-rule="evenodd" d="M210.542 146.647c2.57-2.249 5.9-3.647 9.658-3.647 3.656 0 7.095 1.398 9.676 3.763l-1.352 1.474A12.33 12.33 0 0 0 220.2 145c-3.242 0-6.112 1.202-8.341 3.153z" fill="#fff" fill-rule="evenodd"/><path clip-rule="evenodd" d="M307.1 109.3a1 1 0 0 1 1 1v15.5c0 17.448 14.252 31.7 31.7 31.7s31.7-14.252 31.7-31.7v-15.5a1 1 0 0 1 2 0v15.5c0 18.552-15.148 33.7-33.7 33.7s-33.7-15.148-33.7-33.7v-15.5a1 1 0 0 1 1-1z" fill="#4285f4" fill-rule="evenodd"/><path d="M339.8 148.3c-12.5 0-22.6-10.1-22.6-22.6V68.6c0-12.5 10.1-22.6 22.6-22.6s22.6 10.1 22.6 22.6v57.2c0 12.4-10.2 22.5-22.6 22.5z" fill="#d2e3fc"/><path clip-rule="evenodd" d="M362.4 98.2h-45.2v-2h45.2z" fill="#fff" fill-rule="evenodd"/><path clip-rule="evenodd" d="M339.8 157.5a1 1 0 0 1 1 1V181a1 1 0 0 1-2 0v-22.5a1 1 0 0 1 1-1z" fill="#4285f4" fill-rule="evenodd"/><path d="M353.3 119.5c0 7.5-6 13.5-13.5 13.5-7.5-.1-13.5-6.1-13.5-13.5 0-7.5 6-13.5 13.5-13.5s13.5 6.1 13.5 13.5z" fill="#4285f4"/><path clip-rule="evenodd" d="M332.2 180.9a1 1 0 0 1 1-1H346a1 1 0 0 1 0 2h-12.8a1 1 0 0 1-1-1z" fill="#4285f4" fill-rule="evenodd"/><path d="M87 91.97a4.95 4.95 0 0 1-4.97 4.969C79.21 97 77 94.73 77 91.969A4.95 4.95 0 0 1 81.97 87c2.76 0 5.03 2.209 5.03 4.97z" fill="#d2e3fc"/><path d="M40.327 161.675c-1.562 2.01-4.7 1.9-6.164-.134-4.294-6.113-4.248-14.585.625-20.739a17.327 17.327 0 0 1 20.19-5.353c2.345 1.016 3.115 3.943 1.553 5.953z" fill="#fbbc04"/><path clip-rule="evenodd" d="m45.638 39.41 23.073 2.696a3.38 3.38 0 0 1 2.395 5.385l-.003.005L57.306 66.09l-.001.003c-1.566 2.13-4.828 1.7-5.826-.704l-9.3-21.4-.004-.01c-.958-2.326.809-4.994 3.463-4.57zm-1.617 3.801 9.3 21.4.004.008a1.368 1.368 0 0 0 2.369.29l.003-.005L69.494 46.31l.001-.002c.644-.881.128-2.094-1-2.213h-.011L45.36 41.39l-.024-.004c-.93-.154-1.746.763-1.315 1.825z" fill="#34a853" fill-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/images/permissions_banner_dark.svg b/chrome/browser/resources/settings/images/permissions_banner_dark.svg index b7de632b..aa9474a 100644 --- a/chrome/browser/resources/settings/images/permissions_banner_dark.svg +++ b/chrome/browser/resources/settings/images/permissions_banner_dark.svg
@@ -1 +1 @@ -<svg fill="none" height="226" viewBox="0 0 680 226" width="680" xmlns="http://www.w3.org/2000/svg"><path d="M0 0h680v226H0z" fill="#3c4043"/><path d="M87 91.97c0 2.76-2.209 4.969-4.97 4.969C79.21 97 77 94.73 77 91.969 77 89.21 79.209 87 81.97 87c2.76 0 5.03 2.209 5.03 4.97z" fill="#80868b"/><path d="M40.327 161.675c-1.562 2.01-4.7 1.9-6.164-.134-4.294-6.113-4.248-14.585.625-20.739a17.327 17.327 0 0 1 20.19-5.353c2.345 1.016 3.115 3.943 1.553 5.953z" fill="#fdd663"/><g clip-rule="evenodd" fill-rule="evenodd"><path d="M45.638 39.41l23.073 2.696a3.38 3.38 0 0 1 2.395 5.385l-.003.005L57.306 66.09l-.001.003c-1.566 2.13-4.828 1.7-5.826-.704l-9.3-21.4-.004-.01c-.958-2.326.809-4.994 3.463-4.57zm-1.617 3.801l9.3 21.4.004.008a1.368 1.368 0 0 0 2.369.29l.003-.005L69.494 46.31l.001-.002c.644-.881.128-2.094-1-2.213h-.011L45.36 41.39l-.024-.004c-.93-.154-1.746.763-1.315 1.825zM637.997 169.005l12.076 1.097c2.282.128 4.293 1.567 5.238 3.684l5.1 11.001.003.007a6.49 6.49 0 0 1-.59 6.373l-.007.01-6.997 9.895c-1.3 1.887-3.545 2.96-5.817 2.723l-12.075-1.097c-2.283-.128-4.294-1.567-5.238-3.684l-5.101-11.001-.003-.007a6.492 6.492 0 0 1 .59-6.373l.007-.01 6.997-9.895c1.3-1.886 3.545-2.96 5.817-2.723zm-.202 1.989c-1.523-.16-3.072.564-3.971 1.873l-.007.01-6.996 9.895a4.488 4.488 0 0 0-.41 4.415l5.1 11 .003.007c.654 1.473 2.032 2.428 3.539 2.507l.019.001 12.126 1.103h.007c1.523.161 3.072-.563 3.971-1.872l.007-.01 6.997-9.895a4.49 4.49 0 0 0 .409-4.415l-5.1-11-.003-.007c-.654-1.473-2.032-2.428-3.539-2.507l-.019-.001-12.126-1.103z" fill="#81c995"/><path d="M616.907 57.496c-.572-.051-1.063.368-1.111.895l-.001.004-2.499 26.096v.002c-.051.572.368 1.063.894 1.111h.005l26.095 2.5h.002c.573.051 1.064-.368 1.112-.894v-.005l2.5-26.095v-.002c.051-.573-.368-1.064-.895-1.112h-.004l-26.096-2.5h-.002zm-3.103.71c.154-1.671 1.661-2.85 3.286-2.702h.005l26.095 2.5h.003c1.672.154 2.851 1.66 2.703 3.287l-.001.004-2.499 26.096v.002c-.154 1.672-1.661 2.85-3.287 2.703h-.004l-26.096-2.5h-.002c-1.672-.154-2.851-1.66-2.703-3.287v-.004l2.5-26.096v-.002z" fill="#f28b82"/></g><path d="M598.1 114.6l-30.9-11.2c-8.1-3-17 1.3-20 9.3-3 8.1 1.3 17 9.3 20l30.9 11.2c8.1 3 17-1.3 20-9.3 3.1-8.2-1.2-17-9.3-20z" fill="#80868b"/><path d="M465.8 68.5c0 3.1-2.5 5.6-5.6 5.6s-5.6-2.5-5.6-5.6 2.5-5.6 5.6-5.6 5.6 2.5 5.6 5.6z" fill="#8ab4f8"/><path d="M493.3 108.1c0-17.4-14.6-31.5-32.5-31.5-18 0-32.5 14.1-32.5 31.5v28.1c0 1.4 1.2 2.5 2.6 2.5h59.8c1.4 0 2.6-1.1 2.6-2.5z" fill="#5f6368"/><path clip-rule="evenodd" d="M421.3 145.2a1 1 0 0 1 1-1h77a1 1 0 0 1 0 2h-77a1 1 0 0 1-1-1z" fill="#8ab4f8" fill-rule="evenodd"/><path d="M460.8 162.7c5.5 0 10-4.5 10-10h-20c0 5.5 4.5 10 10 10z" fill="#8ab4f8"/><path clip-rule="evenodd" d="M205.7 157.6c0-7.947 6.443-14.5 14.5-14.5 7.947 0 14.5 6.443 14.5 14.5 0 7.947-6.443 14.5-14.5 14.5s-14.5-6.553-14.5-14.5zm14.5-12.5c-6.943 0-12.5 5.647-12.5 12.5s5.557 12.5 12.5 12.5 12.5-5.647 12.5-12.5c0-6.943-5.648-12.5-12.5-12.5z" fill="#8ab4f8" fill-rule="evenodd"/><path d="M252.382 115.2c-1.8 3.6-4.2 7.6-7.4 11.8l-22.7 29.5c-1 1.4-3.2 1.4-4.2 0l-22.7-29.5c-3.2-4.2-5.6-8.2-7.4-11.8-8.8-17.6-2.6-39.1 14.5-48.6 5.1-2.8 10.9-4.5 17.2-4.6h1.1c6.2.1 12 1.8 17.1 4.6 17.1 9.5 23.3 31.1 14.5 48.6z" fill="#5f6368"/><path d="M229 91.1c0 4.9-3.9 8.8-8.8 8.8s-8.8-3.9-8.8-8.8 3.9-8.8 8.8-8.8 8.8 3.9 8.8 8.8z" fill="#8ab4f8"/><path clip-rule="evenodd" d="M210.542 146.647c2.57-2.249 5.9-3.647 9.658-3.647 3.656 0 7.095 1.398 9.676 3.763l-1.352 1.474A12.33 12.33 0 0 0 220.2 145c-3.242 0-6.112 1.202-8.341 3.153z" fill="#bdc1c6" fill-rule="evenodd"/><path clip-rule="evenodd" d="M307.1 109.3a1 1 0 0 1 1 1v15.5c0 17.448 14.252 31.7 31.7 31.7s31.7-14.252 31.7-31.7v-15.5a1 1 0 0 1 2 0v15.5c0 18.552-15.148 33.7-33.7 33.7s-33.7-15.148-33.7-33.7v-15.5a1 1 0 0 1 1-1z" fill="#8ab4f8" fill-rule="evenodd"/><path d="M339.8 148.3c-12.5 0-22.6-10.1-22.6-22.6V68.6c0-12.5 10.1-22.6 22.6-22.6s22.6 10.1 22.6 22.6v57.2c0 12.4-10.2 22.5-22.6 22.5z" fill="#5f6368"/><path clip-rule="evenodd" d="M362.4 98.2h-45.2v-2h45.2z" fill="#bdc1c6" fill-rule="evenodd"/><path clip-rule="evenodd" d="M339.8 157.5a1 1 0 0 1 1 1V181a1 1 0 0 1-2 0v-22.5a1 1 0 0 1 1-1z" fill="#8ab4f8" fill-rule="evenodd"/><path d="M353.3 119.5c0 7.5-6 13.5-13.5 13.5-7.5-.1-13.5-6.1-13.5-13.5 0-7.5 6-13.5 13.5-13.5s13.5 6.1 13.5 13.5z" fill="#8ab4f8"/><path clip-rule="evenodd" d="M332.2 180.9a1 1 0 0 1 1-1H346a1 1 0 0 1 0 2h-12.8a1 1 0 0 1-1-1z" fill="#8ab4f8" fill-rule="evenodd"/></svg> \ No newline at end of file +<svg fill="none" height="226" viewBox="0 0 680 226" width="680" xmlns="http://www.w3.org/2000/svg"><path d="M0 0h680v226H0z" fill="#3c4043"/><path d="M87 91.97a4.95 4.95 0 0 1-4.97 4.969C79.21 97 77 94.73 77 91.969A4.95 4.95 0 0 1 81.97 87c2.76 0 5.03 2.209 5.03 4.97z" fill="#80868b"/><path d="M40.327 161.675c-1.562 2.01-4.7 1.9-6.164-.134-4.294-6.113-4.248-14.585.625-20.739a17.327 17.327 0 0 1 20.19-5.353c2.345 1.016 3.115 3.943 1.553 5.953z" fill="#fdd663"/><g clip-rule="evenodd" fill-rule="evenodd"><path d="m45.638 39.41 23.073 2.696a3.38 3.38 0 0 1 2.395 5.385l-.003.005L57.306 66.09l-.001.003c-1.566 2.13-4.828 1.7-5.826-.704l-9.3-21.4-.004-.01c-.958-2.326.809-4.994 3.463-4.57zm-1.617 3.801 9.3 21.4.004.008a1.368 1.368 0 0 0 2.369.29l.003-.005L69.494 46.31l.001-.002c.644-.881.128-2.094-1-2.213h-.011L45.36 41.39l-.024-.004c-.93-.154-1.746.763-1.315 1.825zm593.976 125.794 12.076 1.097c2.282.128 4.293 1.567 5.238 3.684l5.1 11.001.003.007a6.49 6.49 0 0 1-.59 6.373l-.007.01-6.997 9.895c-1.3 1.887-3.545 2.96-5.817 2.723l-12.075-1.097c-2.283-.128-4.294-1.567-5.238-3.684l-5.101-11.001-.003-.007a6.492 6.492 0 0 1 .59-6.373l.007-.01 6.997-9.895c1.3-1.886 3.545-2.96 5.817-2.723zm-.202 1.989c-1.523-.16-3.072.564-3.971 1.873l-.007.01-6.996 9.895a4.488 4.488 0 0 0-.41 4.415l5.1 11 .003.007c.654 1.473 2.032 2.428 3.539 2.507l.019.001 12.126 1.103h.007c1.523.161 3.072-.563 3.971-1.872l.007-.01 6.997-9.895a4.49 4.49 0 0 0 .409-4.415l-5.1-11-.003-.007c-.654-1.473-2.032-2.428-3.539-2.507l-.019-.001-12.126-1.103z" fill="#81c995"/><path d="M616.907 57.496c-.572-.051-1.063.368-1.111.895l-.001.004-2.499 26.096v.002c-.051.572.368 1.063.894 1.111h.005l26.095 2.5h.002c.573.051 1.064-.368 1.112-.894v-.005l2.5-26.095v-.002c.051-.573-.368-1.064-.895-1.112h-.004l-26.096-2.5h-.002zm-3.103.71c.154-1.671 1.661-2.85 3.286-2.702h.005l26.095 2.5h.003c1.672.154 2.851 1.66 2.703 3.287l-.001.004-2.499 26.096v.002c-.154 1.672-1.661 2.85-3.287 2.703h-.004l-26.096-2.5h-.002c-1.672-.154-2.851-1.66-2.703-3.287v-.004l2.5-26.096v-.002z" fill="#f28b82"/></g><path d="m598.1 114.6-30.9-11.2c-8.1-3-17 1.3-20 9.3-3 8.1 1.3 17 9.3 20l30.9 11.2c8.1 3 17-1.3 20-9.3 3.1-8.2-1.2-17-9.3-20z" fill="#80868b"/><path d="M465.8 68.5c0 3.1-2.5 5.6-5.6 5.6s-5.6-2.5-5.6-5.6 2.5-5.6 5.6-5.6 5.6 2.5 5.6 5.6z" fill="#8ab4f8"/><path d="M493.3 108.1c0-17.4-14.6-31.5-32.5-31.5-18 0-32.5 14.1-32.5 31.5v28.1c0 1.4 1.2 2.5 2.6 2.5h59.8c1.4 0 2.6-1.1 2.6-2.5z" fill="#5f6368"/><path clip-rule="evenodd" d="M421.3 145.2a1 1 0 0 1 1-1h77a1 1 0 0 1 0 2h-77a1 1 0 0 1-1-1z" fill="#8ab4f8" fill-rule="evenodd"/><path d="M460.8 162.7c5.5 0 10-4.5 10-10h-20c0 5.5 4.5 10 10 10z" fill="#8ab4f8"/><path clip-rule="evenodd" d="M205.7 157.6c0-7.947 6.443-14.5 14.5-14.5 7.947 0 14.5 6.443 14.5 14.5 0 7.947-6.443 14.5-14.5 14.5s-14.5-6.553-14.5-14.5zm14.5-12.5c-6.943 0-12.5 5.647-12.5 12.5s5.557 12.5 12.5 12.5 12.5-5.647 12.5-12.5c0-6.943-5.648-12.5-12.5-12.5z" fill="#8ab4f8" fill-rule="evenodd"/><path d="M252.382 115.2c-1.8 3.6-4.2 7.6-7.4 11.8l-22.7 29.5c-1 1.4-3.2 1.4-4.2 0l-22.7-29.5c-3.2-4.2-5.6-8.2-7.4-11.8-8.8-17.6-2.6-39.1 14.5-48.6 5.1-2.8 10.9-4.5 17.2-4.6h1.1c6.2.1 12 1.8 17.1 4.6 17.1 9.5 23.3 31.1 14.5 48.6z" fill="#5f6368"/><path d="M229 91.1c0 4.9-3.9 8.8-8.8 8.8s-8.8-3.9-8.8-8.8 3.9-8.8 8.8-8.8 8.8 3.9 8.8 8.8z" fill="#8ab4f8"/><path clip-rule="evenodd" d="M210.542 146.647c2.57-2.249 5.9-3.647 9.658-3.647 3.656 0 7.095 1.398 9.676 3.763l-1.352 1.474A12.33 12.33 0 0 0 220.2 145c-3.242 0-6.112 1.202-8.341 3.153z" fill="#bdc1c6" fill-rule="evenodd"/><path clip-rule="evenodd" d="M307.1 109.3a1 1 0 0 1 1 1v15.5c0 17.448 14.252 31.7 31.7 31.7s31.7-14.252 31.7-31.7v-15.5a1 1 0 0 1 2 0v15.5c0 18.552-15.148 33.7-33.7 33.7s-33.7-15.148-33.7-33.7v-15.5a1 1 0 0 1 1-1z" fill="#8ab4f8" fill-rule="evenodd"/><path d="M339.8 148.3c-12.5 0-22.6-10.1-22.6-22.6V68.6c0-12.5 10.1-22.6 22.6-22.6s22.6 10.1 22.6 22.6v57.2c0 12.4-10.2 22.5-22.6 22.5z" fill="#5f6368"/><path clip-rule="evenodd" d="M362.4 98.2h-45.2v-2h45.2z" fill="#bdc1c6" fill-rule="evenodd"/><path clip-rule="evenodd" d="M339.8 157.5a1 1 0 0 1 1 1V181a1 1 0 0 1-2 0v-22.5a1 1 0 0 1 1-1z" fill="#8ab4f8" fill-rule="evenodd"/><path d="M353.3 119.5c0 7.5-6 13.5-13.5 13.5-7.5-.1-13.5-6.1-13.5-13.5 0-7.5 6-13.5 13.5-13.5s13.5 6.1 13.5 13.5z" fill="#8ab4f8"/><path clip-rule="evenodd" d="M332.2 180.9a1 1 0 0 1 1-1H346a1 1 0 0 1 0 2h-12.8a1 1 0 0 1-1-1z" fill="#8ab4f8" fill-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/images/privacy_guide/clear_on_exit_graphic.svg b/chrome/browser/resources/settings/images/privacy_guide/clear_on_exit_graphic.svg index aebff36c..f23ebd8 100644 --- a/chrome/browser/resources/settings/images/privacy_guide/clear_on_exit_graphic.svg +++ b/chrome/browser/resources/settings/images/privacy_guide/clear_on_exit_graphic.svg
@@ -1 +1 @@ -<svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"><g clip-path="url(#clip0_2045_27103)"><path d="M24 48c13.255 0 24-10.745 24-24S37.255 0 24 0 0 10.745 0 24s10.745 24 24 24z" fill="#E8EAED"/><path d="M24 44c5.523 0 10-1.567 10-3.5S29.523 37 24 37s-10 1.567-10 3.5S18.477 44 24 44z" fill="#80868B"/><path d="M28.95 19.155L16.156 31.95l-.55-.55a.857.857 0 0 1 0-1.212L27.19 18.606a.857.857 0 0 1 1.212 0l.55.55z" fill="#80868B" stroke="#80868B" stroke-width=".858" stroke-linecap="round" stroke-linejoin="round"/><path d="M20.976 27.13l7.974-7.974 9.167 9.166a.858.858 0 0 1 0 1.213L26.535 41.117a.857.857 0 0 1-1.213 0L15.606 31.4a.857.857 0 0 1 0-1.213l3.374-3.373a.857.857 0 0 1 1.212 0l.55.549.234-.234z" fill="#fff" stroke="#80868B" stroke-linecap="round" stroke-linejoin="round"/><path d="M32.638 28.178l-7.677 7.677.626.626 7.677-7.677-.627-.626zm-3.755-3.754L21.206 32.1l3.134 3.135 7.677-7.677-3.134-3.134z" fill="#AECBFA"/><path fill-rule="evenodd" clip-rule="evenodd" d="M19.075 10.475v-.225a.6.6 0 0 0-.675-.675h-.225a.225.225 0 0 1-.225-.225v-.9A.45.45 0 0 0 17.5 8a4.501 4.501 0 0 0-4.493 4.742 4.53 4.53 0 0 0 4.25 4.252A4.501 4.501 0 0 0 22 12.5v-.45a.45.45 0 0 0-.45-.45h-.9a.225.225 0 0 1-.225-.226v-.224a.607.607 0 0 0-.675-.675h-.675zm-4.368 2.237a.676.676 0 1 1-.262-1.326.676.676 0 0 1 .262 1.326zm.78-2.33a.676.676 0 1 1 1.327-.263.676.676 0 0 1-1.326.263zm1.695 5.48a.677.677 0 0 1-.61-1.14.676.676 0 1 1 .61 1.14zm.093-2.462a.675.675 0 1 1 0-1.35.675.675 0 0 1 0 1.35zm2.25.9a.675.675 0 1 1 0-1.351.675.675 0 0 1 0 1.35z" fill="#80868B"/><path d="M28 9v6m10 6v4M22 6v3" stroke="#fff"/></g><defs><clipPath id="clip0_2045_27103"><path fill="#fff" d="M0 0h48v48H0z"/></clipPath></defs></svg> \ No newline at end of file +<svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"><g clip-path="url(#a)"><path d="M24 48c13.255 0 24-10.745 24-24S37.255 0 24 0 0 10.745 0 24s10.745 24 24 24z" fill="#E8EAED"/><path d="M24 44c5.523 0 10-1.567 10-3.5S29.523 37 24 37s-10 1.567-10 3.5S18.477 44 24 44z" fill="#80868B"/><path d="M28.95 19.155 16.156 31.95l-.55-.55a.857.857 0 0 1 0-1.212L27.19 18.606a.857.857 0 0 1 1.212 0l.55.55z" fill="#80868B" stroke="#80868B" stroke-width=".858" stroke-linecap="round" stroke-linejoin="round"/><path d="m20.976 27.13 7.974-7.974 9.167 9.166a.858.858 0 0 1 0 1.213L26.535 41.117a.857.857 0 0 1-1.213 0L15.606 31.4a.857.857 0 0 1 0-1.213l3.374-3.373a.857.857 0 0 1 1.212 0l.55.549.234-.234z" fill="#fff" stroke="#80868B" stroke-linecap="round" stroke-linejoin="round"/><path d="m32.638 28.178-7.677 7.677.626.626 7.677-7.677-.627-.626zm-3.755-3.754L21.206 32.1l3.134 3.135 7.677-7.677-3.134-3.134z" fill="#AECBFA"/><path fill-rule="evenodd" clip-rule="evenodd" d="M19.075 10.475v-.225a.6.6 0 0 0-.675-.675h-.225a.225.225 0 0 1-.225-.225v-.9A.45.45 0 0 0 17.5 8a4.501 4.501 0 0 0-4.493 4.742 4.53 4.53 0 0 0 4.25 4.252A4.501 4.501 0 0 0 22 12.5v-.45a.45.45 0 0 0-.45-.45h-.9a.225.225 0 0 1-.225-.226v-.224a.607.607 0 0 0-.675-.675h-.675zm-4.368 2.237a.676.676 0 1 1-.262-1.326.676.676 0 0 1 .262 1.326zm.78-2.33a.676.676 0 1 1 1.327-.263.676.676 0 0 1-1.326.263zm1.695 5.48a.677.677 0 0 1-.61-1.14.676.676 0 1 1 .61 1.14zm.093-2.462a.675.675 0 1 1 0-1.35.675.675 0 0 1 0 1.35zm2.25.9a.675.675 0 1 1 0-1.351.675.675 0 0 1 0 1.35z" fill="#80868B"/><path d="M28 9v6m10 6v4M22 6v3" stroke="#fff"/></g><defs><clipPath id="a"><path fill="#fff" d="M0 0h48v48H0z"/></clipPath></defs></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/images/privacy_guide/clear_on_exit_graphic_dark.svg b/chrome/browser/resources/settings/images/privacy_guide/clear_on_exit_graphic_dark.svg index b48345a..6d6404b9 100644 --- a/chrome/browser/resources/settings/images/privacy_guide/clear_on_exit_graphic_dark.svg +++ b/chrome/browser/resources/settings/images/privacy_guide/clear_on_exit_graphic_dark.svg
@@ -1 +1 @@ -<svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"><g clip-path="url(#clip0_2045_27178)"><path d="M24 48c13.255 0 24-10.745 24-24S37.255 0 24 0 0 10.745 0 24s10.745 24 24 24z" fill="#3C4043"/><path d="M24 44c5.523 0 10-1.567 10-3.5S29.523 37 24 37s-10 1.567-10 3.5S18.477 44 24 44z" fill="#BDC1C6"/><path d="M28.95 19.155L16.156 31.95l-.55-.55a.857.857 0 0 1 0-1.212L27.19 18.606a.857.857 0 0 1 1.212 0l.55.55z" fill="#BDC1C6" stroke="#BDC1C6" stroke-width=".858" stroke-linecap="round" stroke-linejoin="round"/><path d="M20.976 27.13l7.974-7.974 9.167 9.166a.858.858 0 0 1 0 1.213L26.535 41.117a.857.857 0 0 1-1.213 0L15.606 31.4a.857.857 0 0 1 0-1.213l3.374-3.373a.857.857 0 0 1 1.212 0l.55.549.234-.234z" fill="#202124" stroke="#BDC1C6" stroke-linecap="round" stroke-linejoin="round"/><path d="M32.638 28.178l-7.677 7.677.626.626 7.677-7.677-.627-.626zm-3.755-3.754L21.206 32.1l3.134 3.135 7.677-7.677-3.134-3.134z" fill="#1967D2"/><path fill-rule="evenodd" clip-rule="evenodd" d="M19.075 10.475v-.225a.6.6 0 0 0-.675-.675h-.225a.225.225 0 0 1-.225-.225v-.9A.45.45 0 0 0 17.5 8a4.501 4.501 0 0 0-4.493 4.742 4.53 4.53 0 0 0 4.25 4.252A4.501 4.501 0 0 0 22 12.5v-.45a.45.45 0 0 0-.45-.45h-.9a.225.225 0 0 1-.225-.226v-.224a.607.607 0 0 0-.675-.675h-.675zm-4.368 2.237a.676.676 0 1 1-.262-1.326.676.676 0 0 1 .262 1.326zm.78-2.33a.676.676 0 1 1 1.327-.263.676.676 0 0 1-1.326.263zm1.695 5.48a.677.677 0 0 1-.61-1.14.676.676 0 1 1 .61 1.14zm.093-2.462a.675.675 0 1 1 0-1.35.675.675 0 0 1 0 1.35zm2.25.9a.675.675 0 1 1 0-1.351.675.675 0 0 1 0 1.35z" fill="#BDC1C6"/><path d="M28 9v6m10 6v4M22 6v3" stroke="#202124"/></g><defs><clipPath id="clip0_2045_27178"><path fill="#fff" d="M0 0h48v48H0z"/></clipPath></defs></svg> \ No newline at end of file +<svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"><g clip-path="url(#a)"><path d="M24 48c13.255 0 24-10.745 24-24S37.255 0 24 0 0 10.745 0 24s10.745 24 24 24z" fill="#3C4043"/><path d="M24 44c5.523 0 10-1.567 10-3.5S29.523 37 24 37s-10 1.567-10 3.5S18.477 44 24 44z" fill="#BDC1C6"/><path d="M28.95 19.155 16.156 31.95l-.55-.55a.857.857 0 0 1 0-1.212L27.19 18.606a.857.857 0 0 1 1.212 0l.55.55z" fill="#BDC1C6" stroke="#BDC1C6" stroke-width=".858" stroke-linecap="round" stroke-linejoin="round"/><path d="m20.976 27.13 7.974-7.974 9.167 9.166a.858.858 0 0 1 0 1.213L26.535 41.117a.857.857 0 0 1-1.213 0L15.606 31.4a.857.857 0 0 1 0-1.213l3.374-3.373a.857.857 0 0 1 1.212 0l.55.549.234-.234z" fill="#202124" stroke="#BDC1C6" stroke-linecap="round" stroke-linejoin="round"/><path d="m32.638 28.178-7.677 7.677.626.626 7.677-7.677-.627-.626zm-3.755-3.754L21.206 32.1l3.134 3.135 7.677-7.677-3.134-3.134z" fill="#1967D2"/><path fill-rule="evenodd" clip-rule="evenodd" d="M19.075 10.475v-.225a.6.6 0 0 0-.675-.675h-.225a.225.225 0 0 1-.225-.225v-.9A.45.45 0 0 0 17.5 8a4.501 4.501 0 0 0-4.493 4.742 4.53 4.53 0 0 0 4.25 4.252A4.501 4.501 0 0 0 22 12.5v-.45a.45.45 0 0 0-.45-.45h-.9a.225.225 0 0 1-.225-.226v-.224a.607.607 0 0 0-.675-.675h-.675zm-4.368 2.237a.676.676 0 1 1-.262-1.326.676.676 0 0 1 .262 1.326zm.78-2.33a.676.676 0 1 1 1.327-.263.676.676 0 0 1-1.326.263zm1.695 5.48a.677.677 0 0 1-.61-1.14.676.676 0 1 1 .61 1.14zm.093-2.462a.675.675 0 1 1 0-1.35.675.675 0 0 1 0 1.35zm2.25.9a.675.675 0 1 1 0-1.351.675.675 0 0 1 0 1.35z" fill="#BDC1C6"/><path d="M28 9v6m10 6v4M22 6v3" stroke="#202124"/></g><defs><clipPath id="a"><path fill="#fff" d="M0 0h48v48H0z"/></clipPath></defs></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/images/privacy_guide/clear_on_exit_graphic_dark_v2.svg b/chrome/browser/resources/settings/images/privacy_guide/clear_on_exit_graphic_dark_v2.svg index 5c8c6946..1e4bdb5 100644 --- a/chrome/browser/resources/settings/images/privacy_guide/clear_on_exit_graphic_dark_v2.svg +++ b/chrome/browser/resources/settings/images/privacy_guide/clear_on_exit_graphic_dark_v2.svg
@@ -1 +1 @@ -<svg width="360" height="100" viewBox="0 0 360 100" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="182.964" cy="42.278" r="1.542" transform="rotate(-90 182.964 42.278)" fill="#BDC1C6"/><circle cx="188.765" cy="47.712" r="1.542" transform="rotate(-90 188.765 47.712)" fill="#BDC1C6"/><circle cx="191.47" cy="39.539" r="1.542" transform="rotate(-90 191.47 39.539)" fill="#BDC1C6"/><circle cx="194.47" cy="32.539" r="1.542" transform="rotate(-90 194.47 32.539)" fill="#BDC1C6"/><path d="M188.281 26.376c.215-.01.432-.016.65-.016 7.083 0 12.825 5.742 12.825 12.826 0 7.083-5.742 12.825-12.825 12.825-6.507 0-11.882-4.845-12.714-11.123a5.234 5.234 0 0 0 2.333-1.775.625.625 0 0 1 .599-.218 5.218 5.218 0 0 0 6.098-6.904c-.103-.275.03-.635.197-.748a6.501 6.501 0 0 0 2.837-4.867z" stroke="#FDD663" stroke-width="2"/><rect x="155" y="53.997" width="50" height="43" rx="2" stroke="#BDC1C6" stroke-width="2"/><path d="M169 53.997v0a2 2 0 0 1 2 2v1h34" stroke="#BDC1C6" stroke-width="2"/><path fill="#BDC1C6" d="M171 54.997h33v2h-33z"/><path fill="#1E8E3E" d="M165 67.997h30v12h-30zm0 16h15v2h-15z"/></svg> \ No newline at end of file +<svg width="360" height="100" viewBox="0 0 360 100" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="182.964" cy="42.278" r="1.542" transform="rotate(-90 182.964 42.278)" fill="#BDC1C6"/><circle cx="188.765" cy="47.712" r="1.542" transform="rotate(-90 188.765 47.712)" fill="#BDC1C6"/><circle cx="191.47" cy="39.539" r="1.542" transform="rotate(-90 191.47 39.539)" fill="#BDC1C6"/><circle cx="194.47" cy="32.539" r="1.542" transform="rotate(-90 194.47 32.539)" fill="#BDC1C6"/><path d="M188.281 26.376c.215-.01.432-.016.65-.016 7.083 0 12.825 5.742 12.825 12.826 0 7.083-5.742 12.825-12.825 12.825-6.507 0-11.882-4.845-12.714-11.123a5.234 5.234 0 0 0 2.333-1.775.625.625 0 0 1 .599-.218 5.218 5.218 0 0 0 6.098-6.904c-.103-.275.03-.635.197-.748a6.501 6.501 0 0 0 2.837-4.867z" stroke="#FDD663" stroke-width="2"/><rect x="155" y="53.997" width="50" height="43" rx="2" stroke="#BDC1C6" stroke-width="2"/><path d="M169 53.997a2 2 0 0 1 2 2v1h34" stroke="#BDC1C6" stroke-width="2"/><path fill="#BDC1C6" d="M171 54.997h33v2h-33z"/><path fill="#1E8E3E" d="M165 67.997h30v12h-30zm0 16h15v2h-15z"/></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/images/privacy_guide/completion_banner.svg b/chrome/browser/resources/settings/images/privacy_guide/completion_banner.svg index a5e38bb6..efae4076 100644 --- a/chrome/browser/resources/settings/images/privacy_guide/completion_banner.svg +++ b/chrome/browser/resources/settings/images/privacy_guide/completion_banner.svg
@@ -1 +1 @@ -<svg width="354" height="153" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 354 153"><defs><linearGradient id="a" x1="60.739" y1="-1226.621" x2="60.739" y2="-1241.842" gradientTransform="matrix(1 0 0 -1 204 -1189.656)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#d2e3fc"/><stop offset="1" stop-color="#d2e3fc" stop-opacity="0"/></linearGradient><linearGradient id="b" x1="-84.025" y1="-1239.668" x2="-84.025" y2="-1276.634" xlink:href="#a"/></defs><path d="M303.38 52.187h-77.281s4.913-6.432 12.442-7.813a19.294 19.294 0 0 1 13.737 3.021s7.576-10.43 21.196-10.43 29.906 15.222 29.906 15.222z" fill="url(#a)"/><path d="M29.088 86.978h181.773s-6.531-17.077-28.3-21.2-33.274 9.564-33.274 9.564-20.06-27.504-57.068-27.504c-46.94 0-63.13 39.14-63.13 39.14z" fill="url(#b)"/><path d="M170.094 38.992l5.584-14.59a1.348 1.348 0 0 1 2.607.48v11.46a5.341 5.341 0 0 1-2.112 4.254l-4.659 3.536z" fill="#885945"/><path d="M140.394 151.361h19.32a1.373 1.373 0 0 0 1.311-.969 1.37 1.37 0 0 0-.543-1.536l-7.555-5.103z" fill="#1c5cb9"/><path d="M95.53 114.62l2.145 19.179a1.372 1.372 0 0 0 2.577.485l4.239-8.067z" fill="#2168d0"/><path d="M141.172 42.319l1.503 1.09a.64.64 0 0 1-.028 1.054l-1.159.75z" fill="#885945"/><path d="M141.691 49.925l-8.073 3.367-4.558-8.174a5.206 5.206 0 0 1 3.469-7.625l3.424-.727a3.746 3.746 0 0 1 4.346 2.517l2.582 8.042a2.105 2.105 0 0 1-1.19 2.6z" fill="#885945"/><path d="M130.75 48.149l1.827 3.43 3.518 6.608 4.457-.811-3.529-9.175z" fill="#885945"/><path d="M132.529 37.493l3.424-.727a3.735 3.735 0 0 1 3.1.735 15.988 15.988 0 0 1-6.904 13.157l-3.089-5.54a5.206 5.206 0 0 1 3.469-7.625z" fill="#3c4043"/><path d="M125.987 43.468a3.878 3.878 0 1 0-3.882-3.878 3.88 3.88 0 0 0 3.882 3.878z" fill="#3c4043"/><path d="M136.895 47.203a1.392 1.392 0 1 0-1.394-1.392 1.393 1.393 0 0 0 1.394 1.392z" fill="#885945"/><path d="M136.502 91.83l10.386 32.564v26.966" fill="none" stroke="#1c5cb9" stroke-linejoin="round" stroke-width="12.977"/><path d="M132.079 86.57l-10.485 31.514-25.355 2.974" fill="none" stroke="#2168d0" stroke-linejoin="round" stroke-width="12.977"/><path d="M121.459 97.913l23.655-.424-.632-1.994-21.22-3.252z" fill="#174ea6"/><path d="M170.094 38.992l5.584-14.59a1.348 1.348 0 0 1 2.607.48v11.46a5.341 5.341 0 0 1-2.112 4.254l-4.659 3.536zm-67.8 59.132l-.297 5.433a.815.815 0 0 1-1.619.084l-.964-6.042z" fill="#885945"/><path d="M97.298 94.966l-7.114 5.47 3.07 3.553 9.04-5.47z" fill="#885945"/><path d="M138.448 54.71l2.292-.514 29.645-21.456 7.609 10.512-31.766 22.99 2.064 29.91-28.108-4.303 3.847-21.07a22.923 22.923 0 0 0-2.714 1.788c-5.093 3.9-9.149 10.318-12.013 16.308a79.244 79.244 0 0 0-3.105 7.457 60.902 60.902 0 0 0-.923 2.78l-.037.127-.005.016c0-.001.001-.002-6.244-1.766s-6.243-1.765-6.243-1.766l.003-.012.007-.022.02-.067.064-.22c.054-.183.133-.44.235-.763.204-.646.504-1.558.902-2.673a92.443 92.443 0 0 1 3.619-8.69c3.172-6.632 8.308-15.251 15.831-21.012a37.368 37.368 0 0 1 19.734-7.457 40.735 40.735 0 0 1 5.286-.098z" fill="#ff7f74" fill-rule="evenodd"/><path d="M141.753 45.91l-1.997.72s.625 1.827 1.759 1.35c.932-.391.238-2.07.238-2.07z" fill="#fff"/><path d="M116.705 151.883h117.499" fill="none" stroke="#dadce0" stroke-miterlimit="10"/><path d="M301.623 96.017L290.972 97.8a1.114 1.114 0 0 0-.699 1.829l6.933 7.967a1.196 1.196 0 0 0 2.001-.334l3.723-9.749a1.147 1.147 0 0 0-1.307-1.496z" fill="#34a853"/><path d="M255.914 97.542l3.853 5.106a.847.847 0 0 0 1.493-.735l-.652-2.37 4.536 4.626 2.01-1.161-5.925-9.263z" fill="#dc8455"/><path d="M229.472 89.584l11.454 33.593 23.664-5.791m-38.852-26.917l-15.719 59.077" fill="none" stroke="#1c5cb9" stroke-linejoin="round" stroke-width="14.121"/><path d="M186.475 38.892l-5.583-14.604a1.348 1.348 0 0 0-2.607.482v11.47a5.348 5.348 0 0 0 2.112 4.257l4.658 3.54z" fill="#dc8455"/><path d="M241.686 82.308l-15.496 5.663a4.508 4.508 0 0 1-5.913-3.112l-5.996-23.318a4.51 4.51 0 0 1 2.819-5.357l11.039-4.034a4.509 4.509 0 0 1 5.609 2.277L244.2 76.116a4.508 4.508 0 0 1-2.514 6.192z" fill="#f49f30"/><path d="M215.912 42.322l-1.796 1.273a.76.76 0 0 0 .019 1.252l1.364.904z" fill="#dc8455"/><path d="M226.297 42.78l-10.188-6.465-.877 4.049-1.358 6.216a3.359 3.359 0 0 0 3.192 4.074l6.503.173z" fill="#dc8455"/><path d="M222.83 55.743l-5.763-1.56 2.847-10.515 5.974.784z" fill="#dc8455"/><path d="M182.38 37.895l32.564 23.595s13.028-2.744 24.239 5.85c12.614 9.67 18.378 30.1 18.378 30.1" fill="none" stroke="#47a656" stroke-linejoin="round" stroke-width="14.121"/><path d="M211.46 63.345v37.153l30.573-5.699-13.148-30.776z" fill="#47a656"/><path d="M216.853 151.36h-19.316a1.371 1.371 0 0 1-.768-2.507l7.554-5.107zm46.092-40.81l4.791 18.712a1.372 1.372 0 0 1-2.238 1.366l-6.822-6.051z" fill="#1c5cb9"/><path d="M211.433 67.746l5.727-13.58-3.911-2.592-3.706 14.757zm11.825-13.586l9.43 18.766 1.645-.407-5.582-18.757z" fill="#f7bf35"/><path d="M226.891 64.653l-5.345.6.733 5.694 3.31 1.049 2.721-2.322z" fill="none" stroke="#1e8e3e" stroke-linecap="round" stroke-linejoin="round" stroke-width=".883"/><path d="M214.555 47.068l2.161.724s-.319 1.392-1.272 1.203-.889-1.927-.889-1.927z" fill="#fff"/><path d="M221.333 40.303l-.595 2.703a1.443 1.443 0 0 1 1.809.752 2.341 2.341 0 0 1-.347 2.212l2.299 3.613 1.389-5.13z" fill="#3c4043"/><path d="M216.904 37.567l.874-1.556a3.496 3.496 0 0 1 4.969-1.208l3.171 2.087a3.498 3.498 0 0 1 1.335 4.194l-1.341 3.43z" fill="#669df6"/><path d="M215.265 40.263s-8.706-5.711-2.494-6.754c5.937-.996 9.189 7.966 9.189 7.966a10.261 10.261 0 0 0-3.414-1.432c-2.778-.593-3.281.22-3.281.22z" fill="#185abc"/><path d="M214.198 45.155s1.462.635 1.782-.212" fill="none" stroke="#b46747" stroke-miterlimit="10" stroke-width=".441"/><path d="M215.464 101.543l25.039-1.487-1.597-4.669-22.933 4.271z" fill="#174ea6"/><path d="M57.25 114a8.25 8.25 0 1 1-8.25-8.25 8.25 8.25 0 0 1 8.25 8.25z" fill="none" stroke="#fbbc04" stroke-width="1.5"/><path d="M86.036 19.764l-2.896-6.558a1.635 1.635 0 0 1 .826-2.154L90.49 8.14a1.62 1.62 0 0 1 2.143.83l2.896 6.558a1.635 1.635 0 0 1-.826 2.154l-6.524 2.91a1.62 1.62 0 0 1-2.143-.83z" fill="#34a853"/><path d="M333.02 62.589l.188.462-.188-.462a5.736 5.736 0 0 1-7.452-3.128 5.66 5.66 0 0 1 3.106-7.409l11.484-4.661h0a5.737 5.737 0 0 1 7.452 3.127 5.66 5.66 0 0 1-3.107 7.41h0z" fill="none" stroke="#fbbc04" stroke-width="1.5"/></svg> \ No newline at end of file +<svg width="354" height="153" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 354 153"><defs><linearGradient id="a" x1="60.739" y1="-1226.621" x2="60.739" y2="-1241.842" gradientTransform="matrix(1 0 0 -1 204 -1189.656)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#d2e3fc"/><stop offset="1" stop-color="#d2e3fc" stop-opacity="0"/></linearGradient><linearGradient id="b" x1="-84.025" y1="-1239.668" x2="-84.025" y2="-1276.634" xlink:href="#a"/></defs><path d="M303.38 52.187h-77.281s4.913-6.432 12.442-7.813a19.294 19.294 0 0 1 13.737 3.021s7.576-10.43 21.196-10.43 29.906 15.222 29.906 15.222z" fill="url(#a)"/><path d="M29.088 86.978h181.773s-6.531-17.077-28.3-21.2-33.274 9.564-33.274 9.564-20.06-27.504-57.068-27.504c-46.94 0-63.13 39.14-63.13 39.14z" fill="url(#b)"/><path d="m170.094 38.992 5.584-14.59a1.348 1.348 0 0 1 2.607.48v11.46a5.341 5.341 0 0 1-2.112 4.254l-4.659 3.536z" fill="#885945"/><path d="M140.394 151.361h19.32a1.373 1.373 0 0 0 1.311-.969 1.37 1.37 0 0 0-.543-1.536l-7.555-5.103z" fill="#1c5cb9"/><path d="m95.53 114.62 2.145 19.179a1.372 1.372 0 0 0 2.577.485l4.239-8.067z" fill="#2168d0"/><path d="m141.172 42.319 1.503 1.09a.64.64 0 0 1-.028 1.054l-1.159.75z" fill="#885945"/><path d="m141.691 49.925-8.073 3.367-4.558-8.174a5.206 5.206 0 0 1 3.469-7.625l3.424-.727a3.746 3.746 0 0 1 4.346 2.517l2.582 8.042a2.105 2.105 0 0 1-1.19 2.6z" fill="#885945"/><path d="m130.75 48.149 1.827 3.43 3.518 6.608 4.457-.811-3.529-9.175z" fill="#885945"/><path d="m132.529 37.493 3.424-.727a3.735 3.735 0 0 1 3.1.735 15.988 15.988 0 0 1-6.904 13.157l-3.089-5.54a5.206 5.206 0 0 1 3.469-7.625z" fill="#3c4043"/><path d="M125.987 43.468a3.878 3.878 0 1 0-3.882-3.878 3.88 3.88 0 0 0 3.882 3.878z" fill="#3c4043"/><path d="M136.895 47.203a1.392 1.392 0 1 0-1.394-1.392 1.393 1.393 0 0 0 1.394 1.392z" fill="#885945"/><path d="m136.502 91.83 10.386 32.564v26.966" fill="none" stroke="#1c5cb9" stroke-linejoin="round" stroke-width="12.977"/><path d="m132.079 86.57-10.485 31.514-25.355 2.974" fill="none" stroke="#2168d0" stroke-linejoin="round" stroke-width="12.977"/><path d="m121.459 97.913 23.655-.424-.632-1.994-21.22-3.252z" fill="#174ea6"/><path d="m170.094 38.992 5.584-14.59a1.348 1.348 0 0 1 2.607.48v11.46a5.341 5.341 0 0 1-2.112 4.254l-4.659 3.536zm-67.8 59.132-.297 5.433a.815.815 0 0 1-1.619.084l-.964-6.042z" fill="#885945"/><path d="m97.298 94.966-7.114 5.47 3.07 3.553 9.04-5.47z" fill="#885945"/><path d="m138.448 54.71 2.292-.514 29.645-21.456 7.609 10.512-31.766 22.99 2.064 29.91-28.108-4.303 3.847-21.07a22.923 22.923 0 0 0-2.714 1.788c-5.093 3.9-9.149 10.318-12.013 16.308a79.244 79.244 0 0 0-3.105 7.457 60.902 60.902 0 0 0-.923 2.78l-.037.127-.005.016c0-.001.001-.002-6.244-1.766s-6.243-1.765-6.243-1.766l.003-.012.007-.022.02-.067.064-.22c.054-.183.133-.44.235-.763.204-.646.504-1.558.902-2.673a92.443 92.443 0 0 1 3.619-8.69c3.172-6.632 8.308-15.251 15.831-21.012a37.368 37.368 0 0 1 19.734-7.457 40.735 40.735 0 0 1 5.286-.098z" fill="#ff7f74" fill-rule="evenodd"/><path d="m141.753 45.91-1.997.72s.625 1.827 1.759 1.35c.932-.391.238-2.07.238-2.07z" fill="#fff"/><path d="M116.705 151.883h117.499" fill="none" stroke="#dadce0" stroke-miterlimit="10"/><path d="M301.623 96.017 290.972 97.8a1.114 1.114 0 0 0-.699 1.829l6.933 7.967a1.196 1.196 0 0 0 2.001-.334l3.723-9.749a1.147 1.147 0 0 0-1.307-1.496z" fill="#34a853"/><path d="m255.914 97.542 3.853 5.106a.847.847 0 0 0 1.493-.735l-.652-2.37 4.536 4.626 2.01-1.161-5.925-9.263z" fill="#dc8455"/><path d="m229.472 89.584 11.454 33.593 23.664-5.791m-38.852-26.917-15.719 59.077" fill="none" stroke="#1c5cb9" stroke-linejoin="round" stroke-width="14.121"/><path d="m186.475 38.892-5.583-14.604a1.348 1.348 0 0 0-2.607.482v11.47a5.348 5.348 0 0 0 2.112 4.257l4.658 3.54z" fill="#dc8455"/><path d="m241.686 82.308-15.496 5.663a4.508 4.508 0 0 1-5.913-3.112l-5.996-23.318a4.51 4.51 0 0 1 2.819-5.357l11.039-4.034a4.509 4.509 0 0 1 5.609 2.277L244.2 76.116a4.508 4.508 0 0 1-2.514 6.192z" fill="#f49f30"/><path d="m215.912 42.322-1.796 1.273a.76.76 0 0 0 .019 1.252l1.364.904z" fill="#dc8455"/><path d="m226.297 42.78-10.188-6.465-.877 4.049-1.358 6.216a3.359 3.359 0 0 0 3.192 4.074l6.503.173z" fill="#dc8455"/><path d="m222.83 55.743-5.763-1.56 2.847-10.515 5.974.784z" fill="#dc8455"/><path d="m182.38 37.895 32.564 23.595s13.028-2.744 24.239 5.85c12.614 9.67 18.378 30.1 18.378 30.1" fill="none" stroke="#47a656" stroke-linejoin="round" stroke-width="14.121"/><path d="M211.46 63.345v37.153l30.573-5.699-13.148-30.776z" fill="#47a656"/><path d="M216.853 151.36h-19.316a1.371 1.371 0 0 1-.768-2.507l7.554-5.107zm46.092-40.81 4.791 18.712a1.372 1.372 0 0 1-2.238 1.366l-6.822-6.051z" fill="#1c5cb9"/><path d="m211.433 67.746 5.727-13.58-3.911-2.592-3.706 14.757zm11.825-13.586 9.43 18.766 1.645-.407-5.582-18.757z" fill="#f7bf35"/><path d="m226.891 64.653-5.345.6.733 5.694 3.31 1.049 2.721-2.322z" fill="none" stroke="#1e8e3e" stroke-linecap="round" stroke-linejoin="round" stroke-width=".883"/><path d="m214.555 47.068 2.161.724s-.319 1.392-1.272 1.203-.889-1.927-.889-1.927z" fill="#fff"/><path d="m221.333 40.303-.595 2.703a1.443 1.443 0 0 1 1.809.752 2.341 2.341 0 0 1-.347 2.212l2.299 3.613 1.389-5.13z" fill="#3c4043"/><path d="m216.904 37.567.874-1.556a3.496 3.496 0 0 1 4.969-1.208l3.171 2.087a3.498 3.498 0 0 1 1.335 4.194l-1.341 3.43z" fill="#669df6"/><path d="M215.265 40.263s-8.706-5.711-2.494-6.754c5.937-.996 9.189 7.966 9.189 7.966a10.261 10.261 0 0 0-3.414-1.432c-2.778-.593-3.281.22-3.281.22z" fill="#185abc"/><path d="M214.198 45.155s1.462.635 1.782-.212" fill="none" stroke="#b46747" stroke-miterlimit="10" stroke-width=".441"/><path d="m215.464 101.543 25.039-1.487-1.597-4.669-22.933 4.271z" fill="#174ea6"/><path d="M57.25 114a8.25 8.25 0 1 1-8.25-8.25 8.25 8.25 0 0 1 8.25 8.25z" fill="none" stroke="#fbbc04" stroke-width="1.5"/><path d="m86.036 19.764-2.896-6.558a1.635 1.635 0 0 1 .826-2.154L90.49 8.14a1.62 1.62 0 0 1 2.143.83l2.896 6.558a1.635 1.635 0 0 1-.826 2.154l-6.524 2.91a1.62 1.62 0 0 1-2.143-.83z" fill="#34a853"/><path d="m333.02 62.589.188.462-.188-.462a5.736 5.736 0 0 1-7.452-3.128 5.66 5.66 0 0 1 3.106-7.409l11.484-4.661a5.737 5.737 0 0 1 7.452 3.127 5.66 5.66 0 0 1-3.107 7.41z" fill="none" stroke="#fbbc04" stroke-width="1.5"/></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/images/privacy_guide/completion_banner_dark.svg b/chrome/browser/resources/settings/images/privacy_guide/completion_banner_dark.svg index ff699f1..d1c55185 100644 --- a/chrome/browser/resources/settings/images/privacy_guide/completion_banner_dark.svg +++ b/chrome/browser/resources/settings/images/privacy_guide/completion_banner_dark.svg
@@ -1 +1 @@ -<svg width="354" height="153" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 354 153"><defs><linearGradient id="a" x1="60.74" y1="-852.078" x2="60.74" y2="-866.453" gradientTransform="matrix(1 0 0 -1 204 -814.267)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#174ea6"/><stop offset="1" stop-color="#174ea6" stop-opacity="0"/></linearGradient><linearGradient id="b" x1="-84.025" y1="-864.279" x2="-84.025" y2="-901.245" xlink:href="#a"/></defs><path d="M303.38 52.187H226.1s4.912-6.432 12.441-7.813a19.294 19.294 0 0 1 13.737 3.021s7.576-10.43 21.197-10.43 29.905 15.222 29.905 15.222z" fill="url(#a)"/><path d="M29.088 86.978h181.773s-6.531-17.077-28.3-21.2-33.274 9.564-33.274 9.564-20.06-27.504-57.068-27.504c-46.94 0-63.13 39.14-63.13 39.14z" fill="url(#b)"/><path d="M170.094 38.992l5.585-14.59a1.348 1.348 0 0 1 1.259-.866 1.347 1.347 0 0 1 1.348 1.347v11.459a5.346 5.346 0 0 1-2.113 4.254l-4.658 3.536z" fill="#885945"/><path d="M140.394 151.361h19.32a1.37 1.37 0 0 0 1.31-.969 1.37 1.37 0 0 0-.541-1.536l-7.556-5.103z" fill="#1c5cb9"/><path d="M95.537 114.642l2.144 19.18a1.372 1.372 0 0 0 2.578.484l4.238-8.067z" fill="#2168d0"/><path d="M141.172 42.319l1.503 1.09a.638.638 0 0 1 .182.83.633.633 0 0 1-.21.224l-1.16.75z" fill="#885945"/><path d="M141.69 49.925l-8.072 3.367-4.557-8.174a5.205 5.205 0 0 1 3.468-7.625l3.425-.727a3.746 3.746 0 0 1 4.345 2.517l2.582 8.042a2.103 2.103 0 0 1-1.19 2.6z" fill="#885945"/><path d="M130.75 48.149l1.827 3.43 3.518 6.608 4.457-.811-3.53-9.175z" fill="#885945"/><path d="M132.529 37.493l3.425-.727a3.734 3.734 0 0 1 3.099.735 15.988 15.988 0 0 1-6.904 13.157l-3.088-5.54a5.205 5.205 0 0 1 3.468-7.625z" fill="#3c4043"/><path d="M125.987 43.468a3.878 3.878 0 1 0-3.882-3.878 3.88 3.88 0 0 0 3.882 3.878z" fill="#3c4043"/><path d="M136.895 47.203a1.392 1.392 0 1 0-1.394-1.392 1.393 1.393 0 0 0 1.394 1.392z" fill="#885945"/><path d="M136.502 91.83l10.386 32.564v26.966" fill="none" stroke="#1c5cb9" stroke-linejoin="round" stroke-width="12.977"/><path d="M132.08 86.57l-10.485 31.514-25.356 2.974" fill="none" stroke="#2168d0" stroke-linejoin="round" stroke-width="12.977"/><path d="M121.459 97.913l23.655-.424-.631-1.994-21.221-3.252z" fill="#174ea6"/><path d="M170.094 38.992l5.585-14.59a1.348 1.348 0 0 1 1.259-.866 1.347 1.347 0 0 1 1.348 1.347v11.459a5.346 5.346 0 0 1-2.113 4.254l-4.658 3.536zm-67.8 59.132l-.296 5.433a.816.816 0 0 1-1.344.575.807.807 0 0 1-.276-.491l-.964-6.042z" fill="#885945"/><path d="M97.298 94.966l-7.114 5.47 3.07 3.553 9.04-5.47z" fill="#885945"/><path d="M138.448 54.71l2.292-.514 29.646-21.456 7.608 10.512-31.766 22.99 2.065 29.91-28.11-4.303 3.849-21.07a22.842 22.842 0 0 0-2.714 1.788c-5.094 3.9-9.15 10.318-12.014 16.308a79.244 79.244 0 0 0-3.105 7.457c-.34.949-.588 1.707-.75 2.216-.08.253-.137.444-.173.564l-.037.127-.005.016c0-.001 0-.002-6.243-1.766s-6.244-1.765-6.244-1.766l.004-.012.006-.022.02-.067.064-.22c.055-.183.133-.44.235-.763.204-.646.504-1.558.902-2.673a92.466 92.466 0 0 1 3.619-8.69c3.172-6.632 8.308-15.251 15.83-21.012a37.373 37.373 0 0 1 19.735-7.457 40.735 40.735 0 0 1 5.286-.098z" fill="#ff7f74" fill-rule="evenodd"/><path d="M141.753 45.91l-1.997.72s.625 1.827 1.759 1.35c.932-.391.238-2.07.238-2.07z" fill="#fff"/><path d="M116.705 151.883h117.499" fill="none" stroke="#5f6368" stroke-miterlimit="10"/><path d="M301.623 96.017l-10.65 1.783a1.114 1.114 0 0 0-.7 1.829l6.934 7.967a1.196 1.196 0 0 0 2-.334l3.723-9.749a1.147 1.147 0 0 0-1.307-1.496z" fill="#81c995"/><path d="M255.914 97.542l3.854 5.106a.847.847 0 0 0 1.492-.735l-.652-2.37 4.536 4.626 2.01-1.161-5.925-9.263z" fill="#dc8455"/><path d="M229.472 89.584l11.454 33.593 23.664-5.791m-38.852-26.917l-15.72 59.077" fill="none" stroke="#185abc" stroke-linejoin="round" stroke-width="14.121"/><path d="M186.476 38.892l-5.584-14.604a1.347 1.347 0 0 0-2.606.482v11.47a5.35 5.35 0 0 0 2.11 4.257l4.659 3.54z" fill="#dc8455"/><path d="M241.687 82.308l-15.496 5.663a4.509 4.509 0 0 1-5.914-3.112l-5.995-23.318a4.507 4.507 0 0 1 2.818-5.356l11.039-4.035a4.508 4.508 0 0 1 5.609 2.277L244.2 76.116a4.51 4.51 0 0 1-2.514 6.192z" fill="#f49f30"/><path d="M215.912 42.322l-1.796 1.273a.755.755 0 0 0-.32.631.737.737 0 0 0 .094.352.753.753 0 0 0 .246.269l1.364.904z" fill="#dc8455"/><path d="M226.297 42.78l-10.188-6.465-.877 4.049-1.358 6.216a3.359 3.359 0 0 0 3.192 4.074l6.503.173z" fill="#dc8455"/><path d="M222.83 55.743l-5.763-1.56 2.848-10.515 5.973.784z" fill="#dc8455"/><path d="M182.38 37.895l32.564 23.595s13.028-2.744 24.239 5.85c12.614 9.67 18.378 30.1 18.378 30.1" fill="none" stroke="#47a656" stroke-linejoin="round" stroke-width="14.121"/><path d="M211.46 63.345v37.153l30.573-5.699-13.148-30.776z" fill="#47a656"/><path d="M216.853 151.36h-19.316a1.372 1.372 0 0 1-.768-2.507l7.554-5.107zm46.092-40.81l4.79 18.712a1.372 1.372 0 0 1-2.237 1.366l-6.822-6.051z" fill="#1c5cb9"/><path d="M211.433 67.746l5.727-13.58-3.911-2.592-3.706 14.757zm11.826-13.586l9.429 18.766 1.645-.407-5.582-18.757z" fill="#f7bf35"/><path d="M226.89 64.653l-5.344.6.734 5.694 3.309 1.049 2.72-2.322z" fill="none" stroke="#1e8e3e" stroke-linecap="round" stroke-linejoin="round" stroke-width=".883"/><path d="M214.555 47.068l2.16.724s-.317 1.392-1.271 1.203-.89-1.927-.89-1.927z" fill="#fff"/><path d="M221.333 40.303l-.595 2.703a1.442 1.442 0 0 1 1.809.752 2.341 2.341 0 0 1-.347 2.212l2.299 3.613 1.389-5.13z" fill="#3c4043"/><path d="M216.904 37.567l.874-1.556a3.497 3.497 0 0 1 4.97-1.208l3.17 2.087a3.498 3.498 0 0 1 1.335 4.194l-1.341 3.43z" fill="#669df6"/><path d="M215.265 40.263s-8.705-5.711-2.493-6.754c5.937-.996 9.188 7.966 9.188 7.966a10.261 10.261 0 0 0-3.414-1.432c-2.777-.593-3.281.22-3.281.22z" fill="#185abc"/><path d="M214.198 45.155s1.462.635 1.782-.212" fill="none" stroke="#b46747" stroke-miterlimit="10" stroke-width=".441"/><path d="M215.464 101.543l25.039-1.487-1.596-4.669-22.934 4.271z" fill="#174ea6"/><path d="M57.5 114a8.5 8.5 0 1 1-8.5-8.5 8.5 8.5 0 0 1 8.5 8.5z" fill="none" stroke="#fdd663" stroke-width="1.5"/><path d="M86.036 19.764l-2.896-6.558a1.635 1.635 0 0 1 .826-2.154L90.49 8.14a1.62 1.62 0 0 1 2.143.83l2.896 6.558a1.635 1.635 0 0 1-.826 2.154l-6.524 2.91a1.62 1.62 0 0 1-2.143-.83z" fill="#81c995"/><path d="M333.252 62.494l.188.462-.188-.462a5.736 5.736 0 0 1-7.452-3.128 5.66 5.66 0 0 1 3.106-7.409l11.484-4.661h0a5.737 5.737 0 0 1 7.452 3.127 5.66 5.66 0 0 1-3.107 7.409h0z" fill="none" stroke="#fdd663" stroke-width="1.5"/></svg> \ No newline at end of file +<svg width="354" height="153" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 354 153"><defs><linearGradient id="a" x1="60.74" y1="-852.078" x2="60.74" y2="-866.453" gradientTransform="matrix(1 0 0 -1 204 -814.267)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#174ea6"/><stop offset="1" stop-color="#174ea6" stop-opacity="0"/></linearGradient><linearGradient id="b" x1="-84.025" y1="-864.279" x2="-84.025" y2="-901.245" xlink:href="#a"/></defs><path d="M303.38 52.187H226.1s4.912-6.432 12.441-7.813a19.294 19.294 0 0 1 13.737 3.021s7.576-10.43 21.197-10.43 29.905 15.222 29.905 15.222z" fill="url(#a)"/><path d="M29.088 86.978h181.773s-6.531-17.077-28.3-21.2-33.274 9.564-33.274 9.564-20.06-27.504-57.068-27.504c-46.94 0-63.13 39.14-63.13 39.14z" fill="url(#b)"/><path d="m170.094 38.992 5.585-14.59a1.348 1.348 0 0 1 1.259-.866 1.347 1.347 0 0 1 1.348 1.347v11.459a5.346 5.346 0 0 1-2.113 4.254l-4.658 3.536z" fill="#885945"/><path d="M140.394 151.361h19.32a1.37 1.37 0 0 0 1.31-.969 1.37 1.37 0 0 0-.541-1.536l-7.556-5.103z" fill="#1c5cb9"/><path d="m95.537 114.642 2.144 19.18a1.372 1.372 0 0 0 2.578.484l4.238-8.067z" fill="#2168d0"/><path d="m141.172 42.319 1.503 1.09a.638.638 0 0 1 .182.83.633.633 0 0 1-.21.224l-1.16.75z" fill="#885945"/><path d="m141.69 49.925-8.072 3.367-4.557-8.174a5.205 5.205 0 0 1 3.468-7.625l3.425-.727a3.746 3.746 0 0 1 4.345 2.517l2.582 8.042a2.103 2.103 0 0 1-1.19 2.6z" fill="#885945"/><path d="m130.75 48.149 1.827 3.43 3.518 6.608 4.457-.811-3.53-9.175z" fill="#885945"/><path d="m132.529 37.493 3.425-.727a3.734 3.734 0 0 1 3.099.735 15.988 15.988 0 0 1-6.904 13.157l-3.088-5.54a5.205 5.205 0 0 1 3.468-7.625z" fill="#3c4043"/><path d="M125.987 43.468a3.878 3.878 0 1 0-3.882-3.878 3.88 3.88 0 0 0 3.882 3.878z" fill="#3c4043"/><path d="M136.895 47.203a1.392 1.392 0 1 0-1.394-1.392 1.393 1.393 0 0 0 1.394 1.392z" fill="#885945"/><path d="m136.502 91.83 10.386 32.564v26.966" fill="none" stroke="#1c5cb9" stroke-linejoin="round" stroke-width="12.977"/><path d="m132.08 86.57-10.485 31.514-25.356 2.974" fill="none" stroke="#2168d0" stroke-linejoin="round" stroke-width="12.977"/><path d="m121.459 97.913 23.655-.424-.631-1.994-21.221-3.252z" fill="#174ea6"/><path d="m170.094 38.992 5.585-14.59a1.348 1.348 0 0 1 1.259-.866 1.347 1.347 0 0 1 1.348 1.347v11.459a5.346 5.346 0 0 1-2.113 4.254l-4.658 3.536zm-67.8 59.132-.296 5.433a.816.816 0 0 1-1.344.575.807.807 0 0 1-.276-.491l-.964-6.042z" fill="#885945"/><path d="m97.298 94.966-7.114 5.47 3.07 3.553 9.04-5.47z" fill="#885945"/><path d="m138.448 54.71 2.292-.514 29.646-21.456 7.608 10.512-31.766 22.99 2.065 29.91-28.11-4.303 3.849-21.07a22.842 22.842 0 0 0-2.714 1.788c-5.094 3.9-9.15 10.318-12.014 16.308a79.244 79.244 0 0 0-3.105 7.457c-.34.949-.588 1.707-.75 2.216-.08.253-.137.444-.173.564l-.037.127-.005.016c0-.001 0-.002-6.243-1.766s-6.244-1.765-6.244-1.766l.004-.012.006-.022.02-.067.064-.22c.055-.183.133-.44.235-.763.204-.646.504-1.558.902-2.673a92.466 92.466 0 0 1 3.619-8.69c3.172-6.632 8.308-15.251 15.83-21.012a37.373 37.373 0 0 1 19.735-7.457 40.735 40.735 0 0 1 5.286-.098z" fill="#ff7f74" fill-rule="evenodd"/><path d="m141.753 45.91-1.997.72s.625 1.827 1.759 1.35c.932-.391.238-2.07.238-2.07z" fill="#fff"/><path d="M116.705 151.883h117.499" fill="none" stroke="#5f6368" stroke-miterlimit="10"/><path d="m301.623 96.017-10.65 1.783a1.114 1.114 0 0 0-.7 1.829l6.934 7.967a1.196 1.196 0 0 0 2-.334l3.723-9.749a1.147 1.147 0 0 0-1.307-1.496z" fill="#81c995"/><path d="m255.914 97.542 3.854 5.106a.847.847 0 0 0 1.492-.735l-.652-2.37 4.536 4.626 2.01-1.161-5.925-9.263z" fill="#dc8455"/><path d="m229.472 89.584 11.454 33.593 23.664-5.791m-38.852-26.917-15.72 59.077" fill="none" stroke="#185abc" stroke-linejoin="round" stroke-width="14.121"/><path d="m186.476 38.892-5.584-14.604a1.347 1.347 0 0 0-2.606.482v11.47a5.35 5.35 0 0 0 2.11 4.257l4.659 3.54z" fill="#dc8455"/><path d="m241.687 82.308-15.496 5.663a4.509 4.509 0 0 1-5.914-3.112l-5.995-23.318a4.507 4.507 0 0 1 2.818-5.356l11.039-4.035a4.508 4.508 0 0 1 5.609 2.277L244.2 76.116a4.51 4.51 0 0 1-2.514 6.192z" fill="#f49f30"/><path d="m215.912 42.322-1.796 1.273a.755.755 0 0 0-.32.631.737.737 0 0 0 .094.352.753.753 0 0 0 .246.269l1.364.904z" fill="#dc8455"/><path d="m226.297 42.78-10.188-6.465-.877 4.049-1.358 6.216a3.359 3.359 0 0 0 3.192 4.074l6.503.173z" fill="#dc8455"/><path d="m222.83 55.743-5.763-1.56 2.848-10.515 5.973.784z" fill="#dc8455"/><path d="m182.38 37.895 32.564 23.595s13.028-2.744 24.239 5.85c12.614 9.67 18.378 30.1 18.378 30.1" fill="none" stroke="#47a656" stroke-linejoin="round" stroke-width="14.121"/><path d="M211.46 63.345v37.153l30.573-5.699-13.148-30.776z" fill="#47a656"/><path d="M216.853 151.36h-19.316a1.372 1.372 0 0 1-.768-2.507l7.554-5.107zm46.092-40.81 4.79 18.712a1.372 1.372 0 0 1-2.237 1.366l-6.822-6.051z" fill="#1c5cb9"/><path d="m211.433 67.746 5.727-13.58-3.911-2.592-3.706 14.757zm11.826-13.586 9.429 18.766 1.645-.407-5.582-18.757z" fill="#f7bf35"/><path d="m226.89 64.653-5.344.6.734 5.694 3.309 1.049 2.72-2.322z" fill="none" stroke="#1e8e3e" stroke-linecap="round" stroke-linejoin="round" stroke-width=".883"/><path d="m214.555 47.068 2.16.724s-.317 1.392-1.271 1.203-.89-1.927-.89-1.927z" fill="#fff"/><path d="m221.333 40.303-.595 2.703a1.442 1.442 0 0 1 1.809.752 2.341 2.341 0 0 1-.347 2.212l2.299 3.613 1.389-5.13z" fill="#3c4043"/><path d="m216.904 37.567.874-1.556a3.497 3.497 0 0 1 4.97-1.208l3.17 2.087a3.498 3.498 0 0 1 1.335 4.194l-1.341 3.43z" fill="#669df6"/><path d="M215.265 40.263s-8.705-5.711-2.493-6.754c5.937-.996 9.188 7.966 9.188 7.966a10.261 10.261 0 0 0-3.414-1.432c-2.777-.593-3.281.22-3.281.22z" fill="#185abc"/><path d="M214.198 45.155s1.462.635 1.782-.212" fill="none" stroke="#b46747" stroke-miterlimit="10" stroke-width=".441"/><path d="m215.464 101.543 25.039-1.487-1.596-4.669-22.934 4.271z" fill="#174ea6"/><path d="M57.5 114a8.5 8.5 0 1 1-8.5-8.5 8.5 8.5 0 0 1 8.5 8.5z" fill="none" stroke="#fdd663" stroke-width="1.5"/><path d="m86.036 19.764-2.896-6.558a1.635 1.635 0 0 1 .826-2.154L90.49 8.14a1.62 1.62 0 0 1 2.143.83l2.896 6.558a1.635 1.635 0 0 1-.826 2.154l-6.524 2.91a1.62 1.62 0 0 1-2.143-.83z" fill="#81c995"/><path d="m333.252 62.494.188.462-.188-.462a5.736 5.736 0 0 1-7.452-3.128 5.66 5.66 0 0 1 3.106-7.409l11.484-4.661a5.737 5.737 0 0 1 7.452 3.127 5.66 5.66 0 0 1-3.107 7.409z" fill="none" stroke="#fdd663" stroke-width="1.5"/></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/images/privacy_guide/completion_banner_dark_v2.svg b/chrome/browser/resources/settings/images/privacy_guide/completion_banner_dark_v2.svg index fca301f..dfa2461 100644 --- a/chrome/browser/resources/settings/images/privacy_guide/completion_banner_dark_v2.svg +++ b/chrome/browser/resources/settings/images/privacy_guide/completion_banner_dark_v2.svg
@@ -1 +1 @@ -<svg width="354" height="153" viewBox="0 0 354 153" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M303.38 52.187h-77.281s4.913-6.432 12.442-7.813c4.812-.754 9.739.33 13.736 3.021 0 0 7.577-10.43 21.197-10.43s29.906 15.222 29.906 15.222z" fill="url(#paint0_linear_2853_30162)"/><path d="M14 88.14h181.772s-6.53-17.077-28.299-21.2c-21.77-4.125-33.274 9.564-33.274 9.564S114.138 49 77.13 49C30.19 49 14 88.14 14 88.14z" fill="url(#paint1_linear_2853_30162)"/><path d="M170.094 38.992l5.584-14.59a1.35 1.35 0 0 1 2.213-.471c.252.252.394.595.394.952v11.459a5.33 5.33 0 0 1-2.112 4.254l-4.659 3.536-1.42-5.14z" fill="#885945"/><path d="M140.394 151.361h19.32a1.37 1.37 0 0 0 .768-2.505l-7.555-5.103-12.533 7.608z" fill="#1C5CB9"/><path d="M95.53 114.204l2.145 19.179a1.37 1.37 0 0 0 1.96 1.081c.264-.128.481-.336.617-.596l4.239-8.067-8.96-11.597z" fill="#2168D0"/><path d="M141.172 42.319l1.503 1.09a.641.641 0 0 1-.028 1.055l-1.159.749-.316-2.894z" fill="#885945"/><path d="M141.691 49.925l-8.073 3.367-4.558-8.174a5.208 5.208 0 0 1-.191-4.687 5.2 5.2 0 0 1 3.66-2.938l3.425-.727a3.747 3.747 0 0 1 4.345 2.517l2.582 8.042a2.103 2.103 0 0 1-1.19 2.6z" fill="#885945"/><path d="M130.75 48.149l1.827 3.43 3.518 6.608 4.457-.81-3.529-9.176-6.273-.052z" fill="#885945"/><path d="M132.529 37.493l3.425-.727a3.734 3.734 0 0 1 3.099.735 15.99 15.99 0 0 1-6.904 13.157l-3.089-5.54a5.208 5.208 0 0 1-.191-4.687 5.199 5.199 0 0 1 3.66-2.938z" fill="#3C4043"/><path d="M125.987 43.468a3.88 3.88 0 0 0 3.882-3.878 3.88 3.88 0 0 0-3.882-3.878 3.88 3.88 0 0 0-3.883 3.878 3.88 3.88 0 0 0 3.883 3.878z" fill="#3C4043"/><path d="M136.895 47.203a1.393 1.393 0 1 0 .002-2.786 1.393 1.393 0 0 0-.002 2.786z" fill="#885945"/><path d="M136.502 91.83l10.386 32.564v26.966" stroke="#1C5CB9" stroke-width="12.977" stroke-linejoin="round"/><path d="M132.08 86.57l-10.486 31.514-25.355 2.974" stroke="#2168D0" stroke-width="12.977" stroke-linejoin="round"/><path d="M121.459 97.913l23.655-.424-.632-1.994-21.22-3.252-1.803 5.67z" fill="#174EA6"/><path d="M170.094 38.992l5.584-14.59a1.35 1.35 0 0 1 2.213-.471c.252.252.394.595.394.952v11.459a5.33 5.33 0 0 1-2.112 4.254l-4.659 3.536-1.42-5.14zm-67.8 59.132l-.297 5.433a.813.813 0 0 1-1.343.575.808.808 0 0 1-.276-.491l-.964-6.042 2.88.525zm-4.996-3.158l-7.114 5.47 3.07 3.553 9.04-5.47-4.996-3.553z" fill="#885945"/><path fill-rule="evenodd" clip-rule="evenodd" d="M138.448 54.71l2.291-.514 29.646-21.456 7.608 10.512-31.765 22.99 2.064 29.909-28.109-4.302 3.848-21.07a22.923 22.923 0 0 0-2.714 1.788c-5.093 3.9-9.149 10.317-12.014 16.307a79.788 79.788 0 0 0-3.105 7.457 62.499 62.499 0 0 0-.922 2.781l-.037.126-.005.017c0-.001.001-.003-6.244-1.766a1277.047 1277.047 0 0 1-6.243-1.767l.003-.011.007-.023.019-.066.065-.22c.054-.183.133-.44.235-.764a76.35 76.35 0 0 1 .902-2.673 92.466 92.466 0 0 1 3.619-8.69c3.172-6.632 8.307-15.25 15.831-21.012 6.865-5.257 14.229-6.998 19.734-7.457a40.735 40.735 0 0 1 5.286-.097z" fill="#FF7F74"/><path d="M141.753 45.91l-1.997.72s.625 1.826 1.759 1.35c.932-.391.238-2.07.238-2.07z" fill="#fff"/><path d="M116.705 151.883h117.499" stroke="#DADCE0" stroke-miterlimit="10"/><path d="M255.914 97.542l3.854 5.106a.845.845 0 0 0 1.465-.205.85.85 0 0 0 .027-.53l-.652-2.37 4.536 4.626 2.01-1.161-5.925-9.263-5.315 3.797z" fill="#DC8455"/><path d="M229.472 89.584l11.454 33.593 23.664-5.791m-38.852-26.917l-15.719 59.077" stroke="#1C5CB9" stroke-width="14.121" stroke-linejoin="round"/><path d="M186.475 38.892l-5.583-14.604a1.35 1.35 0 0 0-2.212-.471 1.354 1.354 0 0 0-.395.953v11.47a5.352 5.352 0 0 0 2.112 4.257l4.658 3.54 1.42-5.145z" fill="#DC8455"/><path d="M241.686 82.308l-15.496 5.663a4.505 4.505 0 0 1-5.913-3.112l-5.996-23.318a4.51 4.51 0 0 1 2.819-5.356l11.039-4.035a4.507 4.507 0 0 1 5.609 2.277L244.2 76.116a4.499 4.499 0 0 1 .116 3.653 4.509 4.509 0 0 1-2.63 2.539z" fill="#F49F30"/><path d="M215.912 42.322l-1.796 1.273a.758.758 0 0 0 .019 1.252l1.364.904.413-3.429z" fill="#DC8455"/><path d="M226.297 42.78l-10.188-6.464-.877 4.048-1.358 6.216a3.353 3.353 0 0 0 1.771 3.716c.441.223.926.345 1.42.358l6.504.173 2.728-8.047z" fill="#DC8455"/><path d="M222.83 55.743l-5.763-1.56 2.847-10.516 5.974.785-3.058 11.291z" fill="#DC8455"/><path d="M182.38 37.895l32.564 23.595s13.028-2.744 24.239 5.85c12.614 9.67 18.378 30.101 18.378 30.101" stroke="#47A656" stroke-width="14.121" stroke-linejoin="round"/><path d="M211.46 63.345v37.153l30.573-5.699-13.148-30.776-17.425-.678z" fill="#47A656"/><path d="M216.853 151.36h-19.316a1.369 1.369 0 0 1-1.311-.969 1.375 1.375 0 0 1 .543-1.538l7.554-5.107 12.53 7.614zm46.092-40.81l4.791 18.712a1.372 1.372 0 0 1-2.238 1.366l-6.822-6.051 4.269-14.027z" fill="#1C5CB9"/><path d="M211.433 67.746l5.727-13.58-3.911-2.591-3.706 14.757 1.89 1.414zm11.825-13.586l9.43 18.766 1.645-.407-5.583-18.758-5.492.4z" fill="#F7BF35"/><path d="M226.891 64.653l-5.345.6.733 5.693 3.31 1.05 2.721-2.323-1.419-5.02z" stroke="#1E8E3E" stroke-width=".883" stroke-linecap="round" stroke-linejoin="round"/><path d="M214.555 47.068l2.161.724s-.319 1.392-1.272 1.203c-.954-.189-.889-1.927-.889-1.927z" fill="#fff"/><path d="M221.333 40.303l-.595 2.703a1.442 1.442 0 0 1 1.809.752 2.345 2.345 0 0 1-.347 2.212l2.299 3.612 1.389-5.13-4.555-4.149z" fill="#3C4043"/><path d="M216.904 37.567l.874-1.556A3.487 3.487 0 0 1 220 34.327a3.495 3.495 0 0 1 2.747.477l3.171 2.086a3.494 3.494 0 0 1 1.335 4.194l-1.341 3.43-9.008-6.947z" fill="#669DF6"/><path d="M215.265 40.263s-8.706-5.711-2.494-6.754c5.937-.996 9.189 7.966 9.189 7.966a10.261 10.261 0 0 0-3.414-1.432c-2.778-.593-3.281.22-3.281.22z" fill="#185ABC"/><path d="M214.198 45.155s1.462.635 1.782-.212" stroke="#B46747" stroke-width=".441" stroke-miterlimit="10"/><path d="M215.464 101.543l25.039-1.487-1.596-4.669-22.934 4.271-.509 1.885z" fill="#174EA6"/><defs><linearGradient id="paint0_linear_2853_30162" x1="264.739" y1="37.811" x2="264.739" y2="52.187" gradientUnits="userSpaceOnUse"><stop stop-color="#174EA6"/><stop offset="1" stop-color="#174EA6" stop-opacity="0"/></linearGradient><linearGradient id="paint1_linear_2853_30162" x1="104.886" y1="51.175" x2="104.886" y2="88.14" gradientUnits="userSpaceOnUse"><stop stop-color="#174EA6"/><stop offset="1" stop-color="#174EA6" stop-opacity="0"/></linearGradient></defs></svg> \ No newline at end of file +<svg width="354" height="153" viewBox="0 0 354 153" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M303.38 52.187h-77.281s4.913-6.432 12.442-7.813c4.812-.754 9.739.33 13.736 3.021 0 0 7.577-10.43 21.197-10.43s29.906 15.222 29.906 15.222z" fill="url(#a)"/><path d="M14 88.14h181.772s-6.53-17.077-28.299-21.2c-21.77-4.125-33.274 9.564-33.274 9.564S114.138 49 77.13 49C30.19 49 14 88.14 14 88.14z" fill="url(#b)"/><path d="m170.094 38.992 5.584-14.59a1.35 1.35 0 0 1 2.213-.471c.252.252.394.595.394.952v11.459a5.33 5.33 0 0 1-2.112 4.254l-4.659 3.536-1.42-5.14z" fill="#885945"/><path d="M140.394 151.361h19.32a1.37 1.37 0 0 0 .768-2.505l-7.555-5.103-12.533 7.608z" fill="#1C5CB9"/><path d="m95.53 114.204 2.145 19.179a1.37 1.37 0 0 0 1.96 1.081c.264-.128.481-.336.617-.596l4.239-8.067-8.96-11.597z" fill="#2168D0"/><path d="m141.172 42.319 1.503 1.09a.641.641 0 0 1-.028 1.055l-1.159.749-.316-2.894z" fill="#885945"/><path d="m141.691 49.925-8.073 3.367-4.558-8.174a5.208 5.208 0 0 1-.191-4.687 5.2 5.2 0 0 1 3.66-2.938l3.425-.727a3.747 3.747 0 0 1 4.345 2.517l2.582 8.042a2.103 2.103 0 0 1-1.19 2.6z" fill="#885945"/><path d="m130.75 48.149 1.827 3.43 3.518 6.608 4.457-.81-3.529-9.176-6.273-.052z" fill="#885945"/><path d="m132.529 37.493 3.425-.727a3.734 3.734 0 0 1 3.099.735 15.99 15.99 0 0 1-6.904 13.157l-3.089-5.54a5.208 5.208 0 0 1-.191-4.687 5.199 5.199 0 0 1 3.66-2.938z" fill="#3C4043"/><path d="M125.987 43.468a3.88 3.88 0 0 0 3.882-3.878 3.88 3.88 0 0 0-3.882-3.878 3.88 3.88 0 0 0-3.883 3.878 3.88 3.88 0 0 0 3.883 3.878z" fill="#3C4043"/><path d="M136.895 47.203a1.393 1.393 0 1 0 .002-2.786 1.393 1.393 0 0 0-.002 2.786z" fill="#885945"/><path d="m136.502 91.83 10.386 32.564v26.966" stroke="#1C5CB9" stroke-width="12.977" stroke-linejoin="round"/><path d="m132.08 86.57-10.486 31.514-25.355 2.974" stroke="#2168D0" stroke-width="12.977" stroke-linejoin="round"/><path d="m121.459 97.913 23.655-.424-.632-1.994-21.22-3.252-1.803 5.67z" fill="#174EA6"/><path d="m170.094 38.992 5.584-14.59a1.35 1.35 0 0 1 2.213-.471c.252.252.394.595.394.952v11.459a5.33 5.33 0 0 1-2.112 4.254l-4.659 3.536-1.42-5.14zm-67.8 59.132-.297 5.433a.813.813 0 0 1-1.343.575.808.808 0 0 1-.276-.491l-.964-6.042 2.88.525zm-4.996-3.158-7.114 5.47 3.07 3.553 9.04-5.47-4.996-3.553z" fill="#885945"/><path fill-rule="evenodd" clip-rule="evenodd" d="m138.448 54.71 2.291-.514 29.646-21.456 7.608 10.512-31.765 22.99 2.064 29.909-28.109-4.302 3.848-21.07a22.923 22.923 0 0 0-2.714 1.788c-5.093 3.9-9.149 10.317-12.014 16.307a79.788 79.788 0 0 0-3.105 7.457 62.499 62.499 0 0 0-.922 2.781l-.037.126-.005.017c0-.001.001-.003-6.244-1.766a1277.047 1277.047 0 0 1-6.243-1.767l.003-.011.007-.023.019-.066.065-.22c.054-.183.133-.44.235-.764a76.35 76.35 0 0 1 .902-2.673 92.466 92.466 0 0 1 3.619-8.69c3.172-6.632 8.307-15.25 15.831-21.012 6.865-5.257 14.229-6.998 19.734-7.457a40.735 40.735 0 0 1 5.286-.097z" fill="#FF7F74"/><path d="m141.753 45.91-1.997.72s.625 1.826 1.759 1.35c.932-.391.238-2.07.238-2.07z" fill="#fff"/><path d="M116.705 151.883h117.499" stroke="#DADCE0" stroke-miterlimit="10"/><path d="m255.914 97.542 3.854 5.106a.845.845 0 0 0 1.465-.205.85.85 0 0 0 .027-.53l-.652-2.37 4.536 4.626 2.01-1.161-5.925-9.263-5.315 3.797z" fill="#DC8455"/><path d="m229.472 89.584 11.454 33.593 23.664-5.791m-38.852-26.917-15.719 59.077" stroke="#1C5CB9" stroke-width="14.121" stroke-linejoin="round"/><path d="m186.475 38.892-5.583-14.604a1.35 1.35 0 0 0-2.212-.471 1.354 1.354 0 0 0-.395.953v11.47a5.352 5.352 0 0 0 2.112 4.257l4.658 3.54 1.42-5.145z" fill="#DC8455"/><path d="m241.686 82.308-15.496 5.663a4.505 4.505 0 0 1-5.913-3.112l-5.996-23.318a4.51 4.51 0 0 1 2.819-5.356l11.039-4.035a4.507 4.507 0 0 1 5.609 2.277L244.2 76.116a4.499 4.499 0 0 1 .116 3.653 4.509 4.509 0 0 1-2.63 2.539z" fill="#F49F30"/><path d="m215.912 42.322-1.796 1.273a.758.758 0 0 0 .019 1.252l1.364.904.413-3.429z" fill="#DC8455"/><path d="m226.297 42.78-10.188-6.464-.877 4.048-1.358 6.216a3.353 3.353 0 0 0 1.771 3.716c.441.223.926.345 1.42.358l6.504.173 2.728-8.047z" fill="#DC8455"/><path d="m222.83 55.743-5.763-1.56 2.847-10.516 5.974.785-3.058 11.291z" fill="#DC8455"/><path d="m182.38 37.895 32.564 23.595s13.028-2.744 24.239 5.85c12.614 9.67 18.378 30.101 18.378 30.101" stroke="#47A656" stroke-width="14.121" stroke-linejoin="round"/><path d="M211.46 63.345v37.153l30.573-5.699-13.148-30.776-17.425-.678z" fill="#47A656"/><path d="M216.853 151.36h-19.316a1.369 1.369 0 0 1-1.311-.969 1.375 1.375 0 0 1 .543-1.538l7.554-5.107 12.53 7.614zm46.092-40.81 4.791 18.712a1.372 1.372 0 0 1-2.238 1.366l-6.822-6.051 4.269-14.027z" fill="#1C5CB9"/><path d="m211.433 67.746 5.727-13.58-3.911-2.591-3.706 14.757 1.89 1.414zm11.825-13.586 9.43 18.766 1.645-.407-5.583-18.758-5.492.4z" fill="#F7BF35"/><path d="m226.891 64.653-5.345.6.733 5.693 3.31 1.05 2.721-2.323-1.419-5.02z" stroke="#1E8E3E" stroke-width=".883" stroke-linecap="round" stroke-linejoin="round"/><path d="m214.555 47.068 2.161.724s-.319 1.392-1.272 1.203c-.954-.189-.889-1.927-.889-1.927z" fill="#fff"/><path d="m221.333 40.303-.595 2.703a1.442 1.442 0 0 1 1.809.752 2.345 2.345 0 0 1-.347 2.212l2.299 3.612 1.389-5.13-4.555-4.149z" fill="#3C4043"/><path d="m216.904 37.567.874-1.556A3.487 3.487 0 0 1 220 34.327a3.495 3.495 0 0 1 2.747.477l3.171 2.086a3.494 3.494 0 0 1 1.335 4.194l-1.341 3.43-9.008-6.947z" fill="#669DF6"/><path d="M215.265 40.263s-8.706-5.711-2.494-6.754c5.937-.996 9.189 7.966 9.189 7.966a10.261 10.261 0 0 0-3.414-1.432c-2.778-.593-3.281.22-3.281.22z" fill="#185ABC"/><path d="M214.198 45.155s1.462.635 1.782-.212" stroke="#B46747" stroke-width=".441" stroke-miterlimit="10"/><path d="m215.464 101.543 25.039-1.487-1.596-4.669-22.934 4.271-.509 1.885z" fill="#174EA6"/><defs><linearGradient id="a" x1="264.739" y1="37.811" x2="264.739" y2="52.187" gradientUnits="userSpaceOnUse"><stop stop-color="#174EA6"/><stop offset="1" stop-color="#174EA6" stop-opacity="0"/></linearGradient><linearGradient id="b" x1="104.886" y1="51.175" x2="104.886" y2="88.14" gradientUnits="userSpaceOnUse"><stop stop-color="#174EA6"/><stop offset="1" stop-color="#174EA6" stop-opacity="0"/></linearGradient></defs></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/images/privacy_guide/completion_banner_pill.svg b/chrome/browser/resources/settings/images/privacy_guide/completion_banner_pill.svg index 3f93a87..7abb7b6 100644 --- a/chrome/browser/resources/settings/images/privacy_guide/completion_banner_pill.svg +++ b/chrome/browser/resources/settings/images/privacy_guide/completion_banner_pill.svg
@@ -1 +1 @@ -<svg width="25" height="18" viewBox="0 0 25 18" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M8.815 16.4l.186.455-.186-.456a5.736 5.736 0 0 1-7.452-3.127A5.66 5.66 0 0 1 4.47 5.863s0 0 0 0l11.484-4.662h0a5.736 5.736 0 0 1 7.452 3.128 5.66 5.66 0 0 1-3.106 7.409L8.815 16.399z" stroke="#FBBC04"/></svg> \ No newline at end of file +<svg width="25" height="18" viewBox="0 0 25 18" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="m8.815 16.4.186.455-.186-.456a5.736 5.736 0 0 1-7.452-3.127A5.66 5.66 0 0 1 4.47 5.863l11.484-4.662a5.736 5.736 0 0 1 7.452 3.128 5.66 5.66 0 0 1-3.106 7.409L8.815 16.399z" stroke="#FBBC04"/></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/images/privacy_guide/completion_banner_square.svg b/chrome/browser/resources/settings/images/privacy_guide/completion_banner_square.svg index 188d2d8..880719d1 100644 --- a/chrome/browser/resources/settings/images/privacy_guide/completion_banner_square.svg +++ b/chrome/browser/resources/settings/images/privacy_guide/completion_banner_square.svg
@@ -1 +1 @@ -<svg width="13" height="13" viewBox="0 0 13 13" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M3.036 11.764L.14 5.206a1.635 1.635 0 0 1 .826-2.154L7.49.14a1.62 1.62 0 0 1 2.143.83l2.897 6.56a1.635 1.635 0 0 1-.826 2.154l-6.524 2.91a1.62 1.62 0 0 1-2.143-.83z" fill="#47A656"/></svg> \ No newline at end of file +<svg width="13" height="13" viewBox="0 0 13 13" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M3.036 11.764.14 5.206a1.635 1.635 0 0 1 .826-2.154L7.49.14a1.62 1.62 0 0 1 2.143.83l2.897 6.56a1.635 1.635 0 0 1-.826 2.154l-6.524 2.91a1.62 1.62 0 0 1-2.143-.83z" fill="#47A656"/></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/images/privacy_guide/completion_banner_triangle.svg b/chrome/browser/resources/settings/images/privacy_guide/completion_banner_triangle.svg index 7446ec42..415b19e3 100644 --- a/chrome/browser/resources/settings/images/privacy_guide/completion_banner_triangle.svg +++ b/chrome/browser/resources/settings/images/privacy_guide/completion_banner_triangle.svg
@@ -1 +1 @@ -<svg width="13" height="12" viewBox="0 0 13 12" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M11.623.017L.973 1.8c-.888.148-1.278 1.166-.7 1.828l6.933 7.968c.579.666 1.688.476 2.001-.334l3.723-9.75c.303-.81-.42-1.643-1.307-1.495z" fill="#FF7F74"/></svg> \ No newline at end of file +<svg width="13" height="12" viewBox="0 0 13 12" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M11.623.017.973 1.8c-.888.148-1.278 1.166-.7 1.828l6.933 7.968c.579.666 1.688.476 2.001-.334l3.723-9.75c.303-.81-.42-1.643-1.307-1.495z" fill="#FF7F74"/></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/images/privacy_guide/completion_banner_v2.svg b/chrome/browser/resources/settings/images/privacy_guide/completion_banner_v2.svg index 0f917f7..525c8840 100644 --- a/chrome/browser/resources/settings/images/privacy_guide/completion_banner_v2.svg +++ b/chrome/browser/resources/settings/images/privacy_guide/completion_banner_v2.svg
@@ -1 +1 @@ -<svg width="354" height="153" viewBox="0 0 354 153" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M303.38 52.187h-77.281s4.913-6.432 12.442-7.813c4.812-.754 9.739.33 13.736 3.021 0 0 7.577-10.43 21.197-10.43s29.906 15.222 29.906 15.222z" fill="url(#paint0_linear_2853_30113)"/><path d="M14 88.14h181.772s-6.53-17.077-28.299-21.2c-21.77-4.125-33.274 9.564-33.274 9.564S114.138 49 77.13 49C30.19 49 14 88.14 14 88.14z" fill="url(#paint1_linear_2853_30113)"/><path d="M170.094 38.992l5.584-14.59a1.35 1.35 0 0 1 1.26-.866 1.35 1.35 0 0 1 1.347 1.347v11.459a5.33 5.33 0 0 1-2.112 4.254l-4.659 3.536-1.42-5.14z" fill="#885945"/><path d="M140.394 151.361h19.32a1.37 1.37 0 0 0 .768-2.505l-7.555-5.103-12.533 7.608z" fill="#1C5CB9"/><path d="M95.53 114.204l2.145 19.179a1.37 1.37 0 0 0 1.96 1.081c.264-.128.481-.336.617-.596l4.239-8.067-8.96-11.597z" fill="#2168D0"/><path d="M141.172 42.319l1.503 1.09a.641.641 0 0 1-.028 1.055l-1.159.749-.316-2.894z" fill="#885945"/><path d="M141.691 49.925l-8.073 3.367-4.558-8.174a5.208 5.208 0 0 1-.191-4.687 5.2 5.2 0 0 1 3.66-2.938l3.425-.727a3.747 3.747 0 0 1 4.345 2.517l2.582 8.042a2.103 2.103 0 0 1-1.19 2.6z" fill="#885945"/><path d="M130.75 48.149l1.827 3.43 3.518 6.608 4.457-.81-3.529-9.176-6.273-.052z" fill="#885945"/><path d="M132.529 37.493l3.425-.727a3.734 3.734 0 0 1 3.099.735 15.99 15.99 0 0 1-6.904 13.157l-3.089-5.54a5.208 5.208 0 0 1-.191-4.687 5.199 5.199 0 0 1 3.66-2.938z" fill="#3C4043"/><path d="M125.987 43.468a3.88 3.88 0 0 0 3.882-3.878 3.88 3.88 0 0 0-3.882-3.878 3.88 3.88 0 0 0-3.883 3.878 3.88 3.88 0 0 0 3.883 3.878z" fill="#3C4043"/><path d="M136.895 47.203a1.393 1.393 0 1 0 .002-2.786 1.393 1.393 0 0 0-.002 2.786z" fill="#885945"/><path d="M136.502 91.83l10.386 32.564v26.966" stroke="#1C5CB9" stroke-width="12.977" stroke-linejoin="round"/><path d="M132.08 86.57l-10.486 31.514-25.355 2.974" stroke="#2168D0" stroke-width="12.977" stroke-linejoin="round"/><path d="M121.459 97.913l23.655-.424-.632-1.994-21.22-3.252-1.803 5.67z" fill="#174EA6"/><path d="M170.094 38.992l5.584-14.59a1.35 1.35 0 0 1 1.26-.866 1.35 1.35 0 0 1 1.347 1.347v11.459a5.33 5.33 0 0 1-2.112 4.254l-4.659 3.536-1.42-5.14zm-67.8 59.132l-.297 5.433a.813.813 0 0 1-1.343.575.808.808 0 0 1-.276-.491l-.964-6.042 2.88.525zm-4.996-3.158l-7.114 5.47 3.07 3.553 9.04-5.47-4.996-3.553z" fill="#885945"/><path fill-rule="evenodd" clip-rule="evenodd" d="M138.448 54.71l2.291-.514 29.646-21.456 7.608 10.512-31.765 22.99 2.064 29.909-28.109-4.302 3.848-21.07a22.923 22.923 0 0 0-2.714 1.788c-5.093 3.9-9.149 10.317-12.014 16.307a79.788 79.788 0 0 0-3.105 7.457 62.499 62.499 0 0 0-.922 2.781l-.037.126-.005.017c0-.001.001-.003-6.244-1.766a1277.047 1277.047 0 0 1-6.243-1.767l.003-.011.007-.023.019-.066.065-.22c.054-.183.133-.44.235-.764a76.35 76.35 0 0 1 .902-2.673 92.466 92.466 0 0 1 3.619-8.69c3.172-6.632 8.307-15.25 15.831-21.012 6.865-5.257 14.229-6.998 19.734-7.457a40.735 40.735 0 0 1 5.286-.097z" fill="#FF7F74"/><path d="M141.753 45.91l-1.997.72s.625 1.826 1.759 1.35c.932-.391.238-2.07.238-2.07z" fill="#fff"/><path d="M116.705 151.883h117.499" stroke="#DADCE0" stroke-miterlimit="10"/><path d="M255.914 97.542l3.854 5.106a.845.845 0 0 0 1.465-.205.85.85 0 0 0 .027-.53l-.652-2.37 4.536 4.626 2.01-1.161-5.925-9.263-5.315 3.797z" fill="#DC8455"/><path d="M229.472 89.584l11.454 33.593 23.664-5.791m-38.852-26.917l-15.719 59.077" stroke="#1C5CB9" stroke-width="14.121" stroke-linejoin="round"/><path d="M186.475 38.892l-5.583-14.604a1.35 1.35 0 0 0-2.212-.471 1.354 1.354 0 0 0-.395.953v11.47a5.352 5.352 0 0 0 2.112 4.257l4.658 3.54 1.42-5.145z" fill="#DC8455"/><path d="M241.686 82.308l-15.496 5.663a4.505 4.505 0 0 1-5.913-3.112l-5.996-23.318a4.51 4.51 0 0 1 2.819-5.356l11.039-4.035a4.507 4.507 0 0 1 5.609 2.277L244.2 76.116a4.499 4.499 0 0 1 .116 3.653 4.509 4.509 0 0 1-2.63 2.539z" fill="#F49F30"/><path d="M215.912 42.322l-1.796 1.273a.758.758 0 0 0 .019 1.252l1.364.904.413-3.429z" fill="#DC8455"/><path d="M226.297 42.78l-10.188-6.464-.877 4.048-1.358 6.216a3.353 3.353 0 0 0 1.771 3.716c.441.223.926.345 1.42.358l6.504.173 2.728-8.047z" fill="#DC8455"/><path d="M222.83 55.743l-5.763-1.56 2.847-10.516 5.974.785-3.058 11.291z" fill="#DC8455"/><path d="M182.38 37.895l32.564 23.595s13.028-2.744 24.239 5.85c12.614 9.67 18.378 30.101 18.378 30.101" stroke="#47A656" stroke-width="14.121" stroke-linejoin="round"/><path d="M211.46 63.345v37.153l30.573-5.699-13.148-30.776-17.425-.678z" fill="#47A656"/><path d="M216.853 151.36h-19.316a1.369 1.369 0 0 1-1.311-.969 1.375 1.375 0 0 1 .543-1.538l7.554-5.107 12.53 7.614zm46.092-40.81l4.791 18.712a1.372 1.372 0 0 1-2.238 1.366l-6.822-6.051 4.269-14.027z" fill="#1C5CB9"/><path d="M211.433 67.746l5.727-13.58-3.911-2.591-3.706 14.757 1.89 1.414zm11.825-13.586l9.43 18.766 1.645-.407-5.583-18.758-5.492.4z" fill="#F7BF35"/><path d="M226.891 64.653l-5.345.6.733 5.693 3.31 1.05 2.721-2.323-1.419-5.02z" stroke="#1E8E3E" stroke-width=".883" stroke-linecap="round" stroke-linejoin="round"/><path d="M214.555 47.068l2.161.724s-.319 1.392-1.272 1.203c-.954-.189-.889-1.927-.889-1.927z" fill="#fff"/><path d="M221.333 40.303l-.595 2.703a1.442 1.442 0 0 1 1.809.752 2.345 2.345 0 0 1-.347 2.212l2.299 3.612 1.389-5.13-4.555-4.149z" fill="#3C4043"/><path d="M216.904 37.567l.874-1.556A3.487 3.487 0 0 1 220 34.327a3.495 3.495 0 0 1 2.747.477l3.171 2.086a3.494 3.494 0 0 1 1.335 4.194l-1.341 3.43-9.008-6.947z" fill="#669DF6"/><path d="M215.265 40.263s-8.706-5.711-2.494-6.754c5.937-.996 9.189 7.966 9.189 7.966a10.261 10.261 0 0 0-3.414-1.432c-2.778-.593-3.281.22-3.281.22z" fill="#185ABC"/><path d="M214.198 45.155s1.462.635 1.782-.212" stroke="#B46747" stroke-width=".441" stroke-miterlimit="10"/><path d="M215.464 101.543l25.039-1.487-1.596-4.669-22.934 4.271-.509 1.885z" fill="#174EA6"/><defs><linearGradient id="paint0_linear_2853_30113" x1="264.739" y1="36.966" x2="264.739" y2="52.187" gradientUnits="userSpaceOnUse"><stop stop-color="#D2E3FC"/><stop offset="1" stop-color="#D2E3FC" stop-opacity="0"/></linearGradient><linearGradient id="paint1_linear_2853_30113" x1="104.886" y1="51.175" x2="104.886" y2="88.14" gradientUnits="userSpaceOnUse"><stop stop-color="#D2E3FC"/><stop offset="1" stop-color="#D2E3FC" stop-opacity="0"/></linearGradient></defs></svg> \ No newline at end of file +<svg width="354" height="153" viewBox="0 0 354 153" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M303.38 52.187h-77.281s4.913-6.432 12.442-7.813c4.812-.754 9.739.33 13.736 3.021 0 0 7.577-10.43 21.197-10.43s29.906 15.222 29.906 15.222z" fill="url(#a)"/><path d="M14 88.14h181.772s-6.53-17.077-28.299-21.2c-21.77-4.125-33.274 9.564-33.274 9.564S114.138 49 77.13 49C30.19 49 14 88.14 14 88.14z" fill="url(#b)"/><path d="m170.094 38.992 5.584-14.59a1.35 1.35 0 0 1 1.26-.866 1.35 1.35 0 0 1 1.347 1.347v11.459a5.33 5.33 0 0 1-2.112 4.254l-4.659 3.536-1.42-5.14z" fill="#885945"/><path d="M140.394 151.361h19.32a1.37 1.37 0 0 0 .768-2.505l-7.555-5.103-12.533 7.608z" fill="#1C5CB9"/><path d="m95.53 114.204 2.145 19.179a1.37 1.37 0 0 0 1.96 1.081c.264-.128.481-.336.617-.596l4.239-8.067-8.96-11.597z" fill="#2168D0"/><path d="m141.172 42.319 1.503 1.09a.641.641 0 0 1-.028 1.055l-1.159.749-.316-2.894z" fill="#885945"/><path d="m141.691 49.925-8.073 3.367-4.558-8.174a5.208 5.208 0 0 1-.191-4.687 5.2 5.2 0 0 1 3.66-2.938l3.425-.727a3.747 3.747 0 0 1 4.345 2.517l2.582 8.042a2.103 2.103 0 0 1-1.19 2.6z" fill="#885945"/><path d="m130.75 48.149 1.827 3.43 3.518 6.608 4.457-.81-3.529-9.176-6.273-.052z" fill="#885945"/><path d="m132.529 37.493 3.425-.727a3.734 3.734 0 0 1 3.099.735 15.99 15.99 0 0 1-6.904 13.157l-3.089-5.54a5.208 5.208 0 0 1-.191-4.687 5.199 5.199 0 0 1 3.66-2.938z" fill="#3C4043"/><path d="M125.987 43.468a3.88 3.88 0 0 0 3.882-3.878 3.88 3.88 0 0 0-3.882-3.878 3.88 3.88 0 0 0-3.883 3.878 3.88 3.88 0 0 0 3.883 3.878z" fill="#3C4043"/><path d="M136.895 47.203a1.393 1.393 0 1 0 .002-2.786 1.393 1.393 0 0 0-.002 2.786z" fill="#885945"/><path d="m136.502 91.83 10.386 32.564v26.966" stroke="#1C5CB9" stroke-width="12.977" stroke-linejoin="round"/><path d="m132.08 86.57-10.486 31.514-25.355 2.974" stroke="#2168D0" stroke-width="12.977" stroke-linejoin="round"/><path d="m121.459 97.913 23.655-.424-.632-1.994-21.22-3.252-1.803 5.67z" fill="#174EA6"/><path d="m170.094 38.992 5.584-14.59a1.35 1.35 0 0 1 1.26-.866 1.35 1.35 0 0 1 1.347 1.347v11.459a5.33 5.33 0 0 1-2.112 4.254l-4.659 3.536-1.42-5.14zm-67.8 59.132-.297 5.433a.813.813 0 0 1-1.343.575.808.808 0 0 1-.276-.491l-.964-6.042 2.88.525zm-4.996-3.158-7.114 5.47 3.07 3.553 9.04-5.47-4.996-3.553z" fill="#885945"/><path fill-rule="evenodd" clip-rule="evenodd" d="m138.448 54.71 2.291-.514 29.646-21.456 7.608 10.512-31.765 22.99 2.064 29.909-28.109-4.302 3.848-21.07a22.923 22.923 0 0 0-2.714 1.788c-5.093 3.9-9.149 10.317-12.014 16.307a79.788 79.788 0 0 0-3.105 7.457 62.499 62.499 0 0 0-.922 2.781l-.037.126-.005.017c0-.001.001-.003-6.244-1.766a1277.047 1277.047 0 0 1-6.243-1.767l.003-.011.007-.023.019-.066.065-.22c.054-.183.133-.44.235-.764a76.35 76.35 0 0 1 .902-2.673 92.466 92.466 0 0 1 3.619-8.69c3.172-6.632 8.307-15.25 15.831-21.012 6.865-5.257 14.229-6.998 19.734-7.457a40.735 40.735 0 0 1 5.286-.097z" fill="#FF7F74"/><path d="m141.753 45.91-1.997.72s.625 1.826 1.759 1.35c.932-.391.238-2.07.238-2.07z" fill="#fff"/><path d="M116.705 151.883h117.499" stroke="#DADCE0" stroke-miterlimit="10"/><path d="m255.914 97.542 3.854 5.106a.845.845 0 0 0 1.465-.205.85.85 0 0 0 .027-.53l-.652-2.37 4.536 4.626 2.01-1.161-5.925-9.263-5.315 3.797z" fill="#DC8455"/><path d="m229.472 89.584 11.454 33.593 23.664-5.791m-38.852-26.917-15.719 59.077" stroke="#1C5CB9" stroke-width="14.121" stroke-linejoin="round"/><path d="m186.475 38.892-5.583-14.604a1.35 1.35 0 0 0-2.212-.471 1.354 1.354 0 0 0-.395.953v11.47a5.352 5.352 0 0 0 2.112 4.257l4.658 3.54 1.42-5.145z" fill="#DC8455"/><path d="m241.686 82.308-15.496 5.663a4.505 4.505 0 0 1-5.913-3.112l-5.996-23.318a4.51 4.51 0 0 1 2.819-5.356l11.039-4.035a4.507 4.507 0 0 1 5.609 2.277L244.2 76.116a4.499 4.499 0 0 1 .116 3.653 4.509 4.509 0 0 1-2.63 2.539z" fill="#F49F30"/><path d="m215.912 42.322-1.796 1.273a.758.758 0 0 0 .019 1.252l1.364.904.413-3.429z" fill="#DC8455"/><path d="m226.297 42.78-10.188-6.464-.877 4.048-1.358 6.216a3.353 3.353 0 0 0 1.771 3.716c.441.223.926.345 1.42.358l6.504.173 2.728-8.047z" fill="#DC8455"/><path d="m222.83 55.743-5.763-1.56 2.847-10.516 5.974.785-3.058 11.291z" fill="#DC8455"/><path d="m182.38 37.895 32.564 23.595s13.028-2.744 24.239 5.85c12.614 9.67 18.378 30.101 18.378 30.101" stroke="#47A656" stroke-width="14.121" stroke-linejoin="round"/><path d="M211.46 63.345v37.153l30.573-5.699-13.148-30.776-17.425-.678z" fill="#47A656"/><path d="M216.853 151.36h-19.316a1.369 1.369 0 0 1-1.311-.969 1.375 1.375 0 0 1 .543-1.538l7.554-5.107 12.53 7.614zm46.092-40.81 4.791 18.712a1.372 1.372 0 0 1-2.238 1.366l-6.822-6.051 4.269-14.027z" fill="#1C5CB9"/><path d="m211.433 67.746 5.727-13.58-3.911-2.591-3.706 14.757 1.89 1.414zm11.825-13.586 9.43 18.766 1.645-.407-5.583-18.758-5.492.4z" fill="#F7BF35"/><path d="m226.891 64.653-5.345.6.733 5.693 3.31 1.05 2.721-2.323-1.419-5.02z" stroke="#1E8E3E" stroke-width=".883" stroke-linecap="round" stroke-linejoin="round"/><path d="m214.555 47.068 2.161.724s-.319 1.392-1.272 1.203c-.954-.189-.889-1.927-.889-1.927z" fill="#fff"/><path d="m221.333 40.303-.595 2.703a1.442 1.442 0 0 1 1.809.752 2.345 2.345 0 0 1-.347 2.212l2.299 3.612 1.389-5.13-4.555-4.149z" fill="#3C4043"/><path d="m216.904 37.567.874-1.556A3.487 3.487 0 0 1 220 34.327a3.495 3.495 0 0 1 2.747.477l3.171 2.086a3.494 3.494 0 0 1 1.335 4.194l-1.341 3.43-9.008-6.947z" fill="#669DF6"/><path d="M215.265 40.263s-8.706-5.711-2.494-6.754c5.937-.996 9.189 7.966 9.189 7.966a10.261 10.261 0 0 0-3.414-1.432c-2.778-.593-3.281.22-3.281.22z" fill="#185ABC"/><path d="M214.198 45.155s1.462.635 1.782-.212" stroke="#B46747" stroke-width=".441" stroke-miterlimit="10"/><path d="m215.464 101.543 25.039-1.487-1.596-4.669-22.934 4.271-.509 1.885z" fill="#174EA6"/><defs><linearGradient id="a" x1="264.739" y1="36.966" x2="264.739" y2="52.187" gradientUnits="userSpaceOnUse"><stop stop-color="#D2E3FC"/><stop offset="1" stop-color="#D2E3FC" stop-opacity="0"/></linearGradient><linearGradient id="b" x1="104.886" y1="51.175" x2="104.886" y2="88.14" gradientUnits="userSpaceOnUse"><stop stop-color="#D2E3FC"/><stop offset="1" stop-color="#D2E3FC" stop-opacity="0"/></linearGradient></defs></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/images/privacy_guide/hills_graphic.svg b/chrome/browser/resources/settings/images/privacy_guide/hills_graphic.svg index eb1d1e6..60c6ab3 100644 --- a/chrome/browser/resources/settings/images/privacy_guide/hills_graphic.svg +++ b/chrome/browser/resources/settings/images/privacy_guide/hills_graphic.svg
@@ -1 +1 @@ -<svg viewBox="0 0 360 100" fill="none" xmlns="http://www.w3.org/2000/svg"><g clip-path="url(#clip0_2850_29476)"><path d="M0 0h360v100H0z"/><path d="M135 100.031h-35C103.725 94.594 110.171 91 117.5 91c7.329 0 13.775 3.594 17.5 9.031zm93.559-10.613a3 3 0 0 1 4.882 0L241 100h-20l7.559-10.582z" fill="#E8EAED"/><path d="M244.91 84.732a2 2 0 0 1 3.18 0L258.979 99h-24.958l10.889-14.268z" stroke="#E8EAED" stroke-width="2"/><path fill-rule="evenodd" clip-rule="evenodd" d="M253.368 90L261 100h-29l7.632-10h13.736z" fill="#E8EAED"/></g><defs><clipPath id="clip0_2850_29476"><path d="M0 0h360v100H0z"/></clipPath></defs></svg> \ No newline at end of file +<svg viewBox="0 0 360 100" fill="none" xmlns="http://www.w3.org/2000/svg"><g clip-path="url(#a)"><path d="M0 0h360v100H0z"/><path d="M135 100.031h-35C103.725 94.594 110.171 91 117.5 91c7.329 0 13.775 3.594 17.5 9.031zm93.559-10.613a3 3 0 0 1 4.882 0L241 100h-20l7.559-10.582z" fill="#E8EAED"/><path d="M244.91 84.732a2 2 0 0 1 3.18 0L258.979 99h-24.958l10.889-14.268z" stroke="#E8EAED" stroke-width="2"/><path fill-rule="evenodd" clip-rule="evenodd" d="M253.368 90 261 100h-29l7.632-10h13.736z" fill="#E8EAED"/></g><defs><clipPath id="a"><path d="M0 0h360v100H0z"/></clipPath></defs></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/images/privacy_guide/hills_graphic_dark.svg b/chrome/browser/resources/settings/images/privacy_guide/hills_graphic_dark.svg index 5cba537..af928f41 100644 --- a/chrome/browser/resources/settings/images/privacy_guide/hills_graphic_dark.svg +++ b/chrome/browser/resources/settings/images/privacy_guide/hills_graphic_dark.svg
@@ -1 +1 @@ -<svg viewBox="0 0 360 100" fill="none" xmlns="http://www.w3.org/2000/svg"><g clip-path="url(#clip0_2850_29630)"><path d="M0 0h360v100H0z"/><path d="M135 100.031h-35C103.725 94.594 110.171 91 117.5 91c7.329 0 13.775 3.594 17.5 9.031zm93.559-10.613a3 3 0 0 1 4.882 0L241 100h-20l7.559-10.582z" fill="#5F6368"/><path d="M244.91 84.732a2 2 0 0 1 3.18 0L258.979 99h-24.958l10.889-14.268z" stroke="#5F6368" stroke-width="2"/><path fill-rule="evenodd" clip-rule="evenodd" d="M253.368 90L261 100h-29l7.632-10h13.736z" fill="#5F6368"/></g><defs><clipPath id="clip0_2850_29630"><path d="M0 0h360v100H0z"/></clipPath></defs></svg> \ No newline at end of file +<svg viewBox="0 0 360 100" fill="none" xmlns="http://www.w3.org/2000/svg"><g clip-path="url(#a)"><path d="M0 0h360v100H0z"/><path d="M135 100.031h-35C103.725 94.594 110.171 91 117.5 91c7.329 0 13.775 3.594 17.5 9.031zm93.559-10.613a3 3 0 0 1 4.882 0L241 100h-20l7.559-10.582z" fill="#5F6368"/><path d="M244.91 84.732a2 2 0 0 1 3.18 0L258.979 99h-24.958l10.889-14.268z" stroke="#5F6368" stroke-width="2"/><path fill-rule="evenodd" clip-rule="evenodd" d="M253.368 90 261 100h-29l7.632-10h13.736z" fill="#5F6368"/></g><defs><clipPath id="a"><path d="M0 0h360v100H0z"/></clipPath></defs></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/images/privacy_guide/history_sync_graphic_dark.svg b/chrome/browser/resources/settings/images/privacy_guide/history_sync_graphic_dark.svg index 378e2e8..d2259a5 100644 --- a/chrome/browser/resources/settings/images/privacy_guide/history_sync_graphic_dark.svg +++ b/chrome/browser/resources/settings/images/privacy_guide/history_sync_graphic_dark.svg
@@ -1 +1 @@ -<svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"><g clip-path="url(#clip0_2045_27191)"><circle cx="24.098" cy="24" r="24" fill="#3C4043"/><rect x="30.098" y="7" width="9" height="20" rx="1" fill="#202124" stroke="#BDC1C6" stroke-linecap="round" stroke-linejoin="round"/><circle cx="31.598" cy="8.5" r=".5" fill="#BDC1C6"/><path d="M32.098 13h5m-5 6h5m-5-3h5" stroke="#1967D2" stroke-miterlimit="10"/><path d="M23.098 20a4 4 0 0 1 4-4m-7 4a7 7 0 0 1 7-7" stroke="#1E8E3E"/><rect x="7.098" y="23" width="20" height="13" rx="1" fill="#202124" stroke="#BDC1C6" stroke-linecap="round" stroke-linejoin="round"/><path d="M6.098 38h23" stroke="#BDC1C6" stroke-linecap="round" stroke-linejoin="round"/><path fill="#1967D2" d="M13.098 26h8v1h-8zm0 3h8v1h-8zm0 3h8v1h-8z"/></g><defs><clipPath id="clip0_2045_27191"><path fill="#fff" transform="translate(.098)" d="M0 0h48v48H0z"/></clipPath></defs></svg> \ No newline at end of file +<svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"><g clip-path="url(#a)"><circle cx="24.098" cy="24" r="24" fill="#3C4043"/><rect x="30.098" y="7" width="9" height="20" rx="1" fill="#202124" stroke="#BDC1C6" stroke-linecap="round" stroke-linejoin="round"/><circle cx="31.598" cy="8.5" r=".5" fill="#BDC1C6"/><path d="M32.098 13h5m-5 6h5m-5-3h5" stroke="#1967D2" stroke-miterlimit="10"/><path d="M23.098 20a4 4 0 0 1 4-4m-7 4a7 7 0 0 1 7-7" stroke="#1E8E3E"/><rect x="7.098" y="23" width="20" height="13" rx="1" fill="#202124" stroke="#BDC1C6" stroke-linecap="round" stroke-linejoin="round"/><path d="M6.098 38h23" stroke="#BDC1C6" stroke-linecap="round" stroke-linejoin="round"/><path fill="#1967D2" d="M13.098 26h8v1h-8zm0 3h8v1h-8zm0 3h8v1h-8z"/></g><defs><clipPath id="a"><path fill="#fff" transform="translate(.098)" d="M0 0h48v48H0z"/></clipPath></defs></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/images/privacy_guide/history_sync_graphic_dark_v2.svg b/chrome/browser/resources/settings/images/privacy_guide/history_sync_graphic_dark_v2.svg index 1208969..f0c76eb7 100644 --- a/chrome/browser/resources/settings/images/privacy_guide/history_sync_graphic_dark_v2.svg +++ b/chrome/browser/resources/settings/images/privacy_guide/history_sync_graphic_dark_v2.svg
@@ -1 +1 @@ -<svg width="360" height="100" viewBox="0 0 360 100" fill="none" xmlns="http://www.w3.org/2000/svg"><rect x="188" y="60" width="34" height="51" rx="2" transform="rotate(90 188 60)" stroke="#BDC1C6" stroke-width="2"/><path d="M133 96h59.068a2 2 0 0 1-2 2H135a2 2 0 0 1-2-2z" fill="#BDC1C6"/><rect x="208" y="56" width="18" height="40" rx="2" stroke="#BDC1C6" stroke-width="2"/><circle cx="211" cy="59" r="1" fill="#BDC1C6"/><path d="M211 70h12m-12 6h12m-12 6h12m-72-12h23m-23 6h23m-23 6h23" stroke="#4285F4" stroke-width="2"/><path d="M168.861 52.115l-.118.486.971.237.119-.486-.972-.237zm37.012-4.507l.241.439.877-.48-.241-.44-.877.481zm-35.9 4.206l.132-.482-.964-.266-.133.482.965.266zm2.021-6.583l-.288.408.818.576.288-.409-.818-.575zm1.484-.316l.311-.392-.783-.621-.311.392.783.62zm4.426-5.278l-.424.265.53.848.424-.265-.53-.848zm1.49.286l.439-.24-.48-.877-.439.24.48.877zm6.132-3.135l-.494.08.158.986.494-.078-.158-.988zm1.264.842l.497-.051-.103-.995-.497.051.103.995zm6.868-.525l-.486-.118-.237.972.486.118.237-.971zm.836 1.266l.478.146.292-.956-.478-.146-.292.956zm6.529 2.194l-.401-.298-.596.803.401.298.596-.803zm.279 1.491l.383.32.641-.767-.384-.32-.64.767zm5.159 4.563l-.252-.432-.863.506.253.431.862-.506zm-36.628 5.733c.044-.18.09-.36.14-.538l-.965-.266c-.051.188-.1.377-.147.567l.972.237zm2.979-6.546c.214-.303.436-.6.666-.891l-.783-.621c-.243.305-.476.618-.701.937l.818.575zm5.622-5.32c.314-.197.634-.384.96-.563l-.48-.877c-.343.188-.68.385-1.01.591l.53.848zm7.25-2.71c.183-.03.367-.057.552-.081l-.131-.991a18.33 18.33 0 0 0-.579.084l.158.988zm.552-.081c.185-.024.369-.046.554-.065l-.103-.995c-.194.02-.387.043-.582.069l.131.991zm7.185.382c.361.088.719.186 1.073.294l.292-.956a20.305 20.305 0 0 0-1.128-.31l-.237.972zm7.006 3.29c.298.222.59.452.875.69l.64-.768a20.36 20.36 0 0 0-.919-.724l-.596.803zm5.172 5.757c.094.16.185.322.274.484l.877-.48a19.65 19.65 0 0 0-.289-.51l-.862.506zm-37.224 4.872l-.237.972 1.943.474.237-.971-1.943-.474zm37.06-4.147l.48.877 1.754-.961-.48-.877-1.754.96zm-34.98 4.097l.265-.964-1.928-.53-.266.964 1.929.53zm1.13-7.003l-.575.817 1.635 1.152.576-.818-1.636-1.151zm2.285.282l.622-.783-1.568-1.243-.621.784 1.567 1.242zm3.77-6.012l-.849.53 1.059 1.696.849-.53-1.059-1.696zm1.994 1.149l.878-.48-.961-1.755-.877.48.96 1.755zm5.813-4.068l-.987.159.316 1.974.987-.158-.316-1.975zm1.394 1.833l.995-.102-.206-1.99-.994.103.205 1.99zm6.935-1.507l-.971-.237-.474 1.943.972.237.473-1.943zm.572 2.23l.957.292.584-1.913-.957-.292-.584 1.913zm6.973 1.313l-.803-.596-1.192 1.606.803.596 1.192-1.606zm-.34 2.277l.768.64 1.281-1.534-.767-.641-1.282 1.535zm5.912 3.926l-.506-.863-1.725 1.011.505.863 1.726-1.011zm-36.575 6.105c.043-.176.089-.35.137-.525l-1.929-.53c-.053.192-.103.386-.151.58l1.943.475zm2.903-6.377c.208-.296.425-.585.649-.869l-1.567-1.242a21.78 21.78 0 0 0-.718.96l1.636 1.151zm5.478-5.184c.306-.191.617-.374.935-.548l-.96-1.754a21 21 0 0 0-1.034.605l1.059 1.697zm7.064-2.64c.179-.03.358-.056.538-.08l-.261-1.982c-.199.026-.396.055-.593.086l.316 1.975zm.538-.08c.18-.023.36-.044.54-.063l-.205-1.99c-.199.021-.397.045-.596.07l.261 1.984zm7.002.373c.352.086.7.181 1.045.287l.584-1.913a21.053 21.053 0 0 0-1.156-.317l-.473 1.943zm6.826 3.206c.29.216.575.44.852.671l1.282-1.535a21.159 21.159 0 0 0-.942-.742l-1.192 1.606zm5.038 5.608c.092.156.181.313.268.472l1.754-.961c-.096-.176-.195-.35-.296-.522l-1.726 1.011z" fill="#FDD663"/><path d="M210 54a3 3 0 0 0-3 3v1h1.438v-2.067h17V58H227v-1a3 3 0 0 0-3-3h-14zm14 44a3 3 0 0 0 3-3v-1h-1.438v2.067h-17V94H207v1a3 3 0 0 0 3 3h14z" fill="#BDC1C6"/></svg> \ No newline at end of file +<svg width="360" height="100" viewBox="0 0 360 100" fill="none" xmlns="http://www.w3.org/2000/svg"><rect x="188" y="60" width="34" height="51" rx="2" transform="rotate(90 188 60)" stroke="#BDC1C6" stroke-width="2"/><path d="M133 96h59.068a2 2 0 0 1-2 2H135a2 2 0 0 1-2-2z" fill="#BDC1C6"/><rect x="208" y="56" width="18" height="40" rx="2" stroke="#BDC1C6" stroke-width="2"/><circle cx="211" cy="59" r="1" fill="#BDC1C6"/><path d="M211 70h12m-12 6h12m-12 6h12m-72-12h23m-23 6h23m-23 6h23" stroke="#4285F4" stroke-width="2"/><path d="m168.861 52.115-.118.486.971.237.119-.486-.972-.237zm37.012-4.507.241.439.877-.48-.241-.44-.877.481zm-35.9 4.206.132-.482-.964-.266-.133.482.965.266zm2.021-6.583-.288.408.818.576.288-.409-.818-.575zm1.484-.316.311-.392-.783-.621-.311.392.783.62zm4.426-5.278-.424.265.53.848.424-.265-.53-.848zm1.49.286.439-.24-.48-.877-.439.24.48.877zm6.132-3.135-.494.08.158.986.494-.078-.158-.988zm1.264.842.497-.051-.103-.995-.497.051.103.995zm6.868-.525-.486-.118-.237.972.486.118.237-.971zm.836 1.266.478.146.292-.956-.478-.146-.292.956zm6.529 2.194-.401-.298-.596.803.401.298.596-.803zm.279 1.491.383.32.641-.767-.384-.32-.64.767zm5.159 4.563-.252-.432-.863.506.253.431.862-.506zm-36.628 5.733c.044-.18.09-.36.14-.538l-.965-.266c-.051.188-.1.377-.147.567l.972.237zm2.979-6.546c.214-.303.436-.6.666-.891l-.783-.621c-.243.305-.476.618-.701.937l.818.575zm5.622-5.32c.314-.197.634-.384.96-.563l-.48-.877c-.343.188-.68.385-1.01.591l.53.848zm7.25-2.71c.183-.03.367-.057.552-.081l-.131-.991a18.33 18.33 0 0 0-.579.084l.158.988zm.552-.081c.185-.024.369-.046.554-.065l-.103-.995c-.194.02-.387.043-.582.069l.131.991zm7.185.382c.361.088.719.186 1.073.294l.292-.956a20.305 20.305 0 0 0-1.128-.31l-.237.972zm7.006 3.29c.298.222.59.452.875.69l.64-.768a20.36 20.36 0 0 0-.919-.724l-.596.803zm5.172 5.757c.094.16.185.322.274.484l.877-.48a19.65 19.65 0 0 0-.289-.51l-.862.506zm-37.224 4.872-.237.972 1.943.474.237-.971-1.943-.474zm37.06-4.147.48.877 1.754-.961-.48-.877-1.754.96zm-34.98 4.097.265-.964-1.928-.53-.266.964 1.929.53zm1.13-7.003-.575.817 1.635 1.152.576-.818-1.636-1.151zm2.285.282.622-.783-1.568-1.243-.621.784 1.567 1.242zm3.77-6.012-.849.53 1.059 1.696.849-.53-1.059-1.696zm1.994 1.149.878-.48-.961-1.755-.877.48.96 1.755zm5.813-4.068-.987.159.316 1.974.987-.158-.316-1.975zm1.394 1.833.995-.102-.206-1.99-.994.103.205 1.99zm6.935-1.507-.971-.237-.474 1.943.972.237.473-1.943zm.572 2.23.957.292.584-1.913-.957-.292-.584 1.913zm6.973 1.313-.803-.596-1.192 1.606.803.596 1.192-1.606zm-.34 2.277.768.64 1.281-1.534-.767-.641-1.282 1.535zm5.912 3.926-.506-.863-1.725 1.011.505.863 1.726-1.011zm-36.575 6.105c.043-.176.089-.35.137-.525l-1.929-.53c-.053.192-.103.386-.151.58l1.943.475zm2.903-6.377c.208-.296.425-.585.649-.869l-1.567-1.242a21.78 21.78 0 0 0-.718.96l1.636 1.151zm5.478-5.184c.306-.191.617-.374.935-.548l-.96-1.754a21 21 0 0 0-1.034.605l1.059 1.697zm7.064-2.64c.179-.03.358-.056.538-.08l-.261-1.982c-.199.026-.396.055-.593.086l.316 1.975zm.538-.08c.18-.023.36-.044.54-.063l-.205-1.99c-.199.021-.397.045-.596.07l.261 1.984zm7.002.373c.352.086.7.181 1.045.287l.584-1.913a21.053 21.053 0 0 0-1.156-.317l-.473 1.943zm6.826 3.206c.29.216.575.44.852.671l1.282-1.535a21.159 21.159 0 0 0-.942-.742l-1.192 1.606zm5.038 5.608c.092.156.181.313.268.472l1.754-.961c-.096-.176-.195-.35-.296-.522l-1.726 1.011z" fill="#FDD663"/><path d="M210 54a3 3 0 0 0-3 3v1h1.438v-2.067h17V58H227v-1a3 3 0 0 0-3-3h-14zm14 44a3 3 0 0 0 3-3v-1h-1.438v2.067h-17V94H207v1a3 3 0 0 0 3 3h14z" fill="#BDC1C6"/></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/images/privacy_guide/history_sync_graphic_v2.svg b/chrome/browser/resources/settings/images/privacy_guide/history_sync_graphic_v2.svg index 02bca3e..b68075e 100644 --- a/chrome/browser/resources/settings/images/privacy_guide/history_sync_graphic_v2.svg +++ b/chrome/browser/resources/settings/images/privacy_guide/history_sync_graphic_v2.svg
@@ -1 +1 @@ -<svg width="360" height="100" viewBox="0 0 360 100" fill="none" xmlns="http://www.w3.org/2000/svg"><rect x="188" y="60" width="34" height="51" rx="2" transform="rotate(90 188 60)" fill="#fff" stroke="#BDC1C6" stroke-width="2"/><path d="M133 96h59.068a2 2 0 0 1-2 2H135a2 2 0 0 1-2-2zm74-39a3 3 0 0 1 3-3h14a3 3 0 0 1 3 3v1h-20v-1z" fill="#BDC1C6"/><path stroke="#BDC1C6" d="M207.5 57.5h19v1h-19z"/><path stroke="#BDC1C6" stroke-width="1.5" d="M207.75 92.75h18.5v1.5h-18.5z"/><path d="M227 95a3 3 0 0 1-3 3h-14a3 3 0 0 1-3-3h20z" fill="#BDC1C6"/><rect x="208" y="56" width="18" height="40" rx="2" fill="#fff" stroke="#BDC1C6" stroke-width="2"/><circle cx="211" cy="59" r="1" fill="#BDC1C6"/><path d="M211 70h12m-12 6h12m-12 6h12m-72-12h23m-23 6h23m-23 6h23" stroke="#4285F4" stroke-width="2"/><path d="M168.861 52.115l-.118.486.971.237.119-.486-.972-.237zm37.012-4.507l.241.439.877-.48-.241-.44-.877.481zm-35.9 4.206l.132-.482-.964-.266-.133.482.965.266zm2.021-6.583l-.288.408.818.576.288-.409-.818-.575zm1.484-.316l.311-.392-.783-.621-.311.392.783.62zm4.426-5.278l-.424.265.53.848.424-.265-.53-.848zm1.49.286l.439-.24-.48-.877-.439.24.48.877zm6.132-3.135l-.494.08.158.986.494-.078-.158-.988zm1.264.842l.497-.051-.103-.995-.497.051.103.995zm6.868-.525l-.486-.118-.237.972.486.118.237-.971zm.836 1.266l.478.146.292-.956-.478-.146-.292.956zm6.529 2.194l-.401-.298-.596.803.401.298.596-.803zm.279 1.491l.383.32.641-.767-.384-.32-.64.767zm5.159 4.563l-.252-.432-.863.506.253.431.862-.506zm-36.628 5.733c.044-.18.09-.36.14-.538l-.965-.266c-.051.188-.1.377-.147.567l.972.237zm2.979-6.546c.214-.303.436-.6.666-.891l-.783-.621c-.243.305-.476.618-.701.937l.818.575zm5.622-5.32c.314-.197.634-.384.96-.563l-.48-.877c-.343.188-.68.385-1.01.591l.53.848zm7.25-2.71c.183-.03.367-.057.552-.081l-.131-.991a18.33 18.33 0 0 0-.579.084l.158.988zm.552-.081c.185-.024.369-.046.554-.065l-.103-.995c-.194.02-.387.043-.582.069l.131.991zm7.185.382c.361.088.719.186 1.073.294l.292-.956a20.305 20.305 0 0 0-1.128-.31l-.237.972zm7.006 3.29c.298.222.59.452.875.69l.64-.768a20.36 20.36 0 0 0-.919-.724l-.596.803zm5.172 5.757c.094.16.185.322.274.484l.877-.48a19.65 19.65 0 0 0-.289-.51l-.862.506zm-37.224 4.872l-.237.972 1.943.474.237-.971-1.943-.474zm37.06-4.147l.48.877 1.754-.961-.48-.877-1.754.96zm-34.98 4.097l.265-.964-1.928-.53-.266.964 1.929.53zm1.13-7.003l-.575.817 1.635 1.152.576-.818-1.636-1.151zm2.285.282l.622-.783-1.568-1.243-.621.784 1.567 1.242zm3.77-6.012l-.849.53 1.059 1.696.849-.53-1.059-1.696zm1.994 1.149l.878-.48-.961-1.755-.877.48.96 1.755zm5.813-4.068l-.987.159.316 1.974.987-.158-.316-1.975zm1.394 1.833l.995-.102-.206-1.99-.994.103.205 1.99zm6.935-1.507l-.971-.237-.474 1.943.972.237.473-1.943zm.572 2.23l.957.292.584-1.913-.957-.292-.584 1.913zm6.973 1.313l-.803-.596-1.192 1.606.803.596 1.192-1.606zm-.34 2.277l.768.64 1.281-1.534-.767-.641-1.282 1.535zm5.912 3.926l-.506-.863-1.725 1.011.505.863 1.726-1.011zm-36.575 6.105c.043-.176.089-.35.137-.525l-1.929-.53c-.053.192-.103.386-.151.58l1.943.475zm2.903-6.377c.208-.296.425-.585.649-.869l-1.567-1.242a21.78 21.78 0 0 0-.718.96l1.636 1.151zm5.478-5.184c.306-.191.617-.374.935-.548l-.96-1.754a21 21 0 0 0-1.034.605l1.059 1.697zm7.064-2.64c.179-.03.358-.056.538-.08l-.261-1.982c-.199.026-.396.055-.593.086l.316 1.975zm.538-.08c.18-.023.36-.044.54-.063l-.205-1.99c-.199.021-.397.045-.596.07l.261 1.984zm7.002.373c.352.086.7.181 1.045.287l.584-1.913a21.053 21.053 0 0 0-1.156-.317l-.473 1.943zm6.826 3.206c.29.216.575.44.852.671l1.282-1.535a21.159 21.159 0 0 0-.942-.742l-1.192 1.606zm5.038 5.608c.092.156.181.313.268.472l1.754-.961c-.096-.176-.195-.35-.296-.522l-1.726 1.011z" fill="#FBBC04"/></svg> \ No newline at end of file +<svg width="360" height="100" viewBox="0 0 360 100" fill="none" xmlns="http://www.w3.org/2000/svg"><rect x="188" y="60" width="34" height="51" rx="2" transform="rotate(90 188 60)" fill="#fff" stroke="#BDC1C6" stroke-width="2"/><path d="M133 96h59.068a2 2 0 0 1-2 2H135a2 2 0 0 1-2-2zm74-39a3 3 0 0 1 3-3h14a3 3 0 0 1 3 3v1h-20v-1z" fill="#BDC1C6"/><path stroke="#BDC1C6" d="M207.5 57.5h19v1h-19z"/><path stroke="#BDC1C6" stroke-width="1.5" d="M207.75 92.75h18.5v1.5h-18.5z"/><path d="M227 95a3 3 0 0 1-3 3h-14a3 3 0 0 1-3-3h20z" fill="#BDC1C6"/><rect x="208" y="56" width="18" height="40" rx="2" fill="#fff" stroke="#BDC1C6" stroke-width="2"/><circle cx="211" cy="59" r="1" fill="#BDC1C6"/><path d="M211 70h12m-12 6h12m-12 6h12m-72-12h23m-23 6h23m-23 6h23" stroke="#4285F4" stroke-width="2"/><path d="m168.861 52.115-.118.486.971.237.119-.486-.972-.237zm37.012-4.507.241.439.877-.48-.241-.44-.877.481zm-35.9 4.206.132-.482-.964-.266-.133.482.965.266zm2.021-6.583-.288.408.818.576.288-.409-.818-.575zm1.484-.316.311-.392-.783-.621-.311.392.783.62zm4.426-5.278-.424.265.53.848.424-.265-.53-.848zm1.49.286.439-.24-.48-.877-.439.24.48.877zm6.132-3.135-.494.08.158.986.494-.078-.158-.988zm1.264.842.497-.051-.103-.995-.497.051.103.995zm6.868-.525-.486-.118-.237.972.486.118.237-.971zm.836 1.266.478.146.292-.956-.478-.146-.292.956zm6.529 2.194-.401-.298-.596.803.401.298.596-.803zm.279 1.491.383.32.641-.767-.384-.32-.64.767zm5.159 4.563-.252-.432-.863.506.253.431.862-.506zm-36.628 5.733c.044-.18.09-.36.14-.538l-.965-.266c-.051.188-.1.377-.147.567l.972.237zm2.979-6.546c.214-.303.436-.6.666-.891l-.783-.621c-.243.305-.476.618-.701.937l.818.575zm5.622-5.32c.314-.197.634-.384.96-.563l-.48-.877c-.343.188-.68.385-1.01.591l.53.848zm7.25-2.71c.183-.03.367-.057.552-.081l-.131-.991a18.33 18.33 0 0 0-.579.084l.158.988zm.552-.081c.185-.024.369-.046.554-.065l-.103-.995c-.194.02-.387.043-.582.069l.131.991zm7.185.382c.361.088.719.186 1.073.294l.292-.956a20.305 20.305 0 0 0-1.128-.31l-.237.972zm7.006 3.29c.298.222.59.452.875.69l.64-.768a20.36 20.36 0 0 0-.919-.724l-.596.803zm5.172 5.757c.094.16.185.322.274.484l.877-.48a19.65 19.65 0 0 0-.289-.51l-.862.506zm-37.224 4.872-.237.972 1.943.474.237-.971-1.943-.474zm37.06-4.147.48.877 1.754-.961-.48-.877-1.754.96zm-34.98 4.097.265-.964-1.928-.53-.266.964 1.929.53zm1.13-7.003-.575.817 1.635 1.152.576-.818-1.636-1.151zm2.285.282.622-.783-1.568-1.243-.621.784 1.567 1.242zm3.77-6.012-.849.53 1.059 1.696.849-.53-1.059-1.696zm1.994 1.149.878-.48-.961-1.755-.877.48.96 1.755zm5.813-4.068-.987.159.316 1.974.987-.158-.316-1.975zm1.394 1.833.995-.102-.206-1.99-.994.103.205 1.99zm6.935-1.507-.971-.237-.474 1.943.972.237.473-1.943zm.572 2.23.957.292.584-1.913-.957-.292-.584 1.913zm6.973 1.313-.803-.596-1.192 1.606.803.596 1.192-1.606zm-.34 2.277.768.64 1.281-1.534-.767-.641-1.282 1.535zm5.912 3.926-.506-.863-1.725 1.011.505.863 1.726-1.011zm-36.575 6.105c.043-.176.089-.35.137-.525l-1.929-.53c-.053.192-.103.386-.151.58l1.943.475zm2.903-6.377c.208-.296.425-.585.649-.869l-1.567-1.242a21.78 21.78 0 0 0-.718.96l1.636 1.151zm5.478-5.184c.306-.191.617-.374.935-.548l-.96-1.754a21 21 0 0 0-1.034.605l1.059 1.697zm7.064-2.64c.179-.03.358-.056.538-.08l-.261-1.982c-.199.026-.396.055-.593.086l.316 1.975zm.538-.08c.18-.023.36-.044.54-.063l-.205-1.99c-.199.021-.397.045-.596.07l.261 1.984zm7.002.373c.352.086.7.181 1.045.287l.584-1.913a21.053 21.053 0 0 0-1.156-.317l-.473 1.943zm6.826 3.206c.29.216.575.44.852.671l1.282-1.535a21.159 21.159 0 0 0-.942-.742l-1.192 1.606zm5.038 5.608c.092.156.181.313.268.472l1.754-.961c-.096-.176-.195-.35-.296-.522l-1.726 1.011z" fill="#FBBC04"/></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/images/privacy_guide/horizon_graphic_dark.svg b/chrome/browser/resources/settings/images/privacy_guide/horizon_graphic_dark.svg index d118d6f..9707b8d 100644 --- a/chrome/browser/resources/settings/images/privacy_guide/horizon_graphic_dark.svg +++ b/chrome/browser/resources/settings/images/privacy_guide/horizon_graphic_dark.svg
@@ -1 +1 @@ -<svg viewBox="0 0 360 100" fill="none" xmlns="http://www.w3.org/2000/svg"><g clip-path="url(#clip0_2850_29623)"><path d="M0 0h360v100H0z"/><path d="M85 99.5h190" stroke="#5F6368" stroke-width="2"/></g><defs><clipPath id="clip0_2850_29623"><path d="M0 0h360v100H0z"/></clipPath></defs></svg> \ No newline at end of file +<svg viewBox="0 0 360 100" fill="none" xmlns="http://www.w3.org/2000/svg"><g clip-path="url(#a)"><path d="M0 0h360v100H0z"/><path d="M85 99.5h190" stroke="#5F6368" stroke-width="2"/></g><defs><clipPath id="a"><path d="M0 0h360v100H0z"/></clipPath></defs></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/images/privacy_guide/msbb_graphic.svg b/chrome/browser/resources/settings/images/privacy_guide/msbb_graphic.svg index 5ad6be4..82e910c0 100644 --- a/chrome/browser/resources/settings/images/privacy_guide/msbb_graphic.svg +++ b/chrome/browser/resources/settings/images/privacy_guide/msbb_graphic.svg
@@ -1 +1 @@ -<svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"><g clip-path="url(#clip0_2045_27062)"><circle cx="24" cy="24" r="24" fill="#E8EAED"/><path d="M37.977 11.128h-20.11v-.864a.953.953 0 0 1 .953-.952h18.204a.953.953 0 0 1 .953.952v.864z" fill="#80868B" stroke="#80868B" stroke-linecap="round" stroke-linejoin="round"/><path d="M25.443 11.128h12.534v14.407a.953.953 0 0 1-.953.953H18.82a.953.953 0 0 1-.953-.953v-15.27a.953.953 0 0 1 .953-.953h5.302a.953.953 0 0 1 .953.952v.863h.368z" fill="#fff" stroke="#80868B" stroke-linecap="round" stroke-linejoin="round"/><path d="M34.066 21.116H22v.985h12.066v-.985zm0-6.248H22v4.927h12.066v-4.927z" fill="#AECBFA"/><path d="M20.649 34.036l3.138 3.138" stroke="#80868B" stroke-linecap="round" stroke-linejoin="round"/><path d="M14.754 36.478a8.336 8.336 0 1 0 0-16.672 8.336 8.336 0 0 0 0 16.672z" fill="#fff" stroke="#80868B" stroke-linecap="round" stroke-linejoin="round"/><path d="M21.1 28.142a6.346 6.346 0 1 1-12.691 0 6.346 6.346 0 0 1 12.691 0z" stroke="#81C995"/><path d="M23.485 36.301l-.571.572a.915.915 0 0 0 0 1.294l4.185 4.186a.915.915 0 0 0 1.295 0l.571-.572a.915.915 0 0 0 0-1.294L24.78 36.3a.916.916 0 0 0-1.295 0z" fill="#80868B"/></g><defs><clipPath id="clip0_2045_27062"><path fill="#fff" d="M0 0h48v48H0z"/></clipPath></defs></svg> \ No newline at end of file +<svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"><g clip-path="url(#a)"><circle cx="24" cy="24" r="24" fill="#E8EAED"/><path d="M37.977 11.128h-20.11v-.864a.953.953 0 0 1 .953-.952h18.204a.953.953 0 0 1 .953.952v.864z" fill="#80868B" stroke="#80868B" stroke-linecap="round" stroke-linejoin="round"/><path d="M25.443 11.128h12.534v14.407a.953.953 0 0 1-.953.953H18.82a.953.953 0 0 1-.953-.953v-15.27a.953.953 0 0 1 .953-.953h5.302a.953.953 0 0 1 .953.952v.863h.368z" fill="#fff" stroke="#80868B" stroke-linecap="round" stroke-linejoin="round"/><path d="M34.066 21.116H22v.985h12.066v-.985zm0-6.248H22v4.927h12.066v-4.927z" fill="#AECBFA"/><path d="m20.649 34.036 3.138 3.138" stroke="#80868B" stroke-linecap="round" stroke-linejoin="round"/><path d="M14.754 36.478a8.336 8.336 0 1 0 0-16.672 8.336 8.336 0 0 0 0 16.672z" fill="#fff" stroke="#80868B" stroke-linecap="round" stroke-linejoin="round"/><path d="M21.1 28.142a6.346 6.346 0 1 1-12.691 0 6.346 6.346 0 0 1 12.691 0z" stroke="#81C995"/><path d="m23.485 36.301-.571.572a.915.915 0 0 0 0 1.294l4.185 4.186a.915.915 0 0 0 1.295 0l.571-.572a.915.915 0 0 0 0-1.294L24.78 36.3a.916.916 0 0 0-1.295 0z" fill="#80868B"/></g><defs><clipPath id="a"><path fill="#fff" d="M0 0h48v48H0z"/></clipPath></defs></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/images/privacy_guide/msbb_graphic_dark.svg b/chrome/browser/resources/settings/images/privacy_guide/msbb_graphic_dark.svg index 760ddfc..2c6c6e2e 100644 --- a/chrome/browser/resources/settings/images/privacy_guide/msbb_graphic_dark.svg +++ b/chrome/browser/resources/settings/images/privacy_guide/msbb_graphic_dark.svg
@@ -1 +1 @@ -<svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"><g clip-path="url(#clip0_2045_27134)"><circle cx="24" cy="24" r="24" fill="#3C4043"/><path d="M37.977 11.128h-20.11v-.864a.953.953 0 0 1 .953-.952h18.204a.953.953 0 0 1 .953.952v.864z" fill="#BDC1C6" stroke="#BDC1C6" stroke-linecap="round" stroke-linejoin="round"/><path d="M25.443 11.128h12.534v14.407a.953.953 0 0 1-.953.953H18.82a.953.953 0 0 1-.953-.953v-15.27a.953.953 0 0 1 .953-.953h5.302a.953.953 0 0 1 .953.952v.863h.368z" fill="#202124" stroke="#BDC1C6" stroke-linecap="round" stroke-linejoin="round"/><path d="M34.066 21.116H22v.985h12.066v-.985zm0-6.248H22v4.927h12.066v-4.927z" fill="#1967D2"/><path d="M20.649 34.036l3.138 3.138" stroke="#BDC1C6" stroke-linecap="round" stroke-linejoin="round"/><path d="M14.754 36.478a8.336 8.336 0 1 0 0-16.672 8.336 8.336 0 0 0 0 16.672z" fill="#202124" stroke="#BDC1C6" stroke-linecap="round" stroke-linejoin="round"/><path d="M21.1 28.142a6.346 6.346 0 1 1-12.691 0 6.346 6.346 0 0 1 12.691 0z" stroke="#1E8E3E"/><path d="M23.485 36.301l-.571.572a.915.915 0 0 0 0 1.294l4.185 4.186a.915.915 0 0 0 1.295 0l.571-.572a.915.915 0 0 0 0-1.294L24.78 36.3a.916.916 0 0 0-1.295 0z" fill="#BDC1C6"/></g><defs><clipPath id="clip0_2045_27134"><path fill="#fff" d="M0 0h48v48H0z"/></clipPath></defs></svg> \ No newline at end of file +<svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"><g clip-path="url(#a)"><circle cx="24" cy="24" r="24" fill="#3C4043"/><path d="M37.977 11.128h-20.11v-.864a.953.953 0 0 1 .953-.952h18.204a.953.953 0 0 1 .953.952v.864z" fill="#BDC1C6" stroke="#BDC1C6" stroke-linecap="round" stroke-linejoin="round"/><path d="M25.443 11.128h12.534v14.407a.953.953 0 0 1-.953.953H18.82a.953.953 0 0 1-.953-.953v-15.27a.953.953 0 0 1 .953-.953h5.302a.953.953 0 0 1 .953.952v.863h.368z" fill="#202124" stroke="#BDC1C6" stroke-linecap="round" stroke-linejoin="round"/><path d="M34.066 21.116H22v.985h12.066v-.985zm0-6.248H22v4.927h12.066v-4.927z" fill="#1967D2"/><path d="m20.649 34.036 3.138 3.138" stroke="#BDC1C6" stroke-linecap="round" stroke-linejoin="round"/><path d="M14.754 36.478a8.336 8.336 0 1 0 0-16.672 8.336 8.336 0 0 0 0 16.672z" fill="#202124" stroke="#BDC1C6" stroke-linecap="round" stroke-linejoin="round"/><path d="M21.1 28.142a6.346 6.346 0 1 1-12.691 0 6.346 6.346 0 0 1 12.691 0z" stroke="#1E8E3E"/><path d="m23.485 36.301-.571.572a.915.915 0 0 0 0 1.294l4.185 4.186a.915.915 0 0 0 1.295 0l.571-.572a.915.915 0 0 0 0-1.294L24.78 36.3a.916.916 0 0 0-1.295 0z" fill="#BDC1C6"/></g><defs><clipPath id="a"><path fill="#fff" d="M0 0h48v48H0z"/></clipPath></defs></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/images/privacy_guide/msbb_graphic_dark_v2.svg b/chrome/browser/resources/settings/images/privacy_guide/msbb_graphic_dark_v2.svg index 964de24..78d9268 100644 --- a/chrome/browser/resources/settings/images/privacy_guide/msbb_graphic_dark_v2.svg +++ b/chrome/browser/resources/settings/images/privacy_guide/msbb_graphic_dark_v2.svg
@@ -1 +1 @@ -<svg width="360" height="100" viewBox="0 0 360 100" fill="none" xmlns="http://www.w3.org/2000/svg"><rect x="131" y="54.19" width="50" height="42.748" rx="2" stroke="#BDC1C6" stroke-width="2"/><path d="M145 54.185v0a2 2 0 0 1 2 2v.983h34" stroke="#BDC1C6" stroke-width="2"/><path fill="#BDC1C6" d="M147 55.179h33v1.989h-33z"/><path fill="#1E8E3E" d="M141 68.106h30v11.933h-30zm0 15.911h15v1.989h-15z"/><path d="M212.405 80.183l6.472 6.434m-18.628-1.427c9.495 0 17.192-7.653 17.192-17.095 0-9.441-7.697-17.095-17.192-17.095-9.494 0-17.191 7.654-17.191 17.095 0 9.442 7.697 17.095 17.191 17.095z" stroke="#4285F4" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M213.368 68.095c0 7.197-5.868 13.04-13.118 13.04-7.251 0-13.119-5.844-13.119-13.04 0-7.196 5.868-13.04 13.119-13.04 7.25 0 13.118 5.844 13.118 13.04z" stroke="#5F6368" stroke-width="2"/><path d="M218.255 84.828L217.077 86a1.869 1.869 0 0 0 0 2.655l8.631 8.584a1.896 1.896 0 0 0 2.67 0l1.179-1.172a1.87 1.87 0 0 0 0-2.655l-8.632-8.584a1.896 1.896 0 0 0-2.67 0z" fill="#4285F4"/></svg> \ No newline at end of file +<svg width="360" height="100" viewBox="0 0 360 100" fill="none" xmlns="http://www.w3.org/2000/svg"><rect x="131" y="54.19" width="50" height="42.748" rx="2" stroke="#BDC1C6" stroke-width="2"/><path d="M145 54.185a2 2 0 0 1 2 2v.983h34" stroke="#BDC1C6" stroke-width="2"/><path fill="#BDC1C6" d="M147 55.179h33v1.989h-33z"/><path fill="#1E8E3E" d="M141 68.106h30v11.933h-30zm0 15.911h15v1.989h-15z"/><path d="m212.405 80.183 6.472 6.434m-18.628-1.427c9.495 0 17.192-7.653 17.192-17.095 0-9.441-7.697-17.095-17.192-17.095-9.494 0-17.191 7.654-17.191 17.095 0 9.442 7.697 17.095 17.191 17.095z" stroke="#4285F4" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M213.368 68.095c0 7.197-5.868 13.04-13.118 13.04-7.251 0-13.119-5.844-13.119-13.04 0-7.196 5.868-13.04 13.119-13.04 7.25 0 13.118 5.844 13.118 13.04z" stroke="#5F6368" stroke-width="2"/><path d="M218.255 84.828 217.077 86a1.869 1.869 0 0 0 0 2.655l8.631 8.584a1.896 1.896 0 0 0 2.67 0l1.179-1.172a1.87 1.87 0 0 0 0-2.655l-8.632-8.584a1.896 1.896 0 0 0-2.67 0z" fill="#4285F4"/></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/images/privacy_guide/msbb_graphic_v2.svg b/chrome/browser/resources/settings/images/privacy_guide/msbb_graphic_v2.svg index cec2504..962c3eb 100644 --- a/chrome/browser/resources/settings/images/privacy_guide/msbb_graphic_v2.svg +++ b/chrome/browser/resources/settings/images/privacy_guide/msbb_graphic_v2.svg
@@ -1 +1 @@ -<svg width="360" height="100" viewBox="0 0 360 100" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M180.144 58.555H130v-2.16c0-.633.25-1.239.696-1.686a2.371 2.371 0 0 1 1.68-.699h45.392c.63 0 1.234.252 1.68.699a2.39 2.39 0 0 1 .696 1.686v2.16z" fill="#BDC1C6" stroke="#BDC1C6" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M148.891 58.555h31.253v36.05a2.39 2.39 0 0 1-.696 1.685 2.372 2.372 0 0 1-1.68.699h-45.392a2.37 2.37 0 0 1-1.68-.699 2.387 2.387 0 0 1-.696-1.686v-38.21c0-.632.25-1.238.696-1.685a2.371 2.371 0 0 1 1.68-.699h13.221c.631 0 1.235.252 1.681.699a2.39 2.39 0 0 1 .695 1.686v2.159h.918z" fill="#fff" stroke="#BDC1C6" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M155.5 83.548H140v2.463h15.5v-2.463zm14.586-15.633H140V80.24h30.086V67.915z" fill="#81C995"/><path d="M211.564 80.449l6.471 6.493" stroke="#4285F4" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M199.408 85.502c9.494 0 17.191-7.723 17.191-17.25 0-9.528-7.697-17.252-17.191-17.252-9.495 0-17.191 7.724-17.191 17.251 0 9.528 7.696 17.251 17.191 17.251z" fill="#fff" stroke="#4285F4" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M212.527 68.251c0 7.276-5.877 13.168-13.119 13.168S186.29 75.527 186.29 68.25c0-7.275 5.876-13.167 13.118-13.167s13.119 5.892 13.119 13.167z" stroke="#E8EAED" stroke-width="2"/><path d="M217.414 85.137l-1.179 1.183a1.9 1.9 0 0 0 0 2.679l8.632 8.662c.737.74 1.932.74 2.67 0l1.178-1.183a1.9 1.9 0 0 0 0-2.68l-8.632-8.661a1.882 1.882 0 0 0-2.669 0z" fill="#4285F4"/></svg> \ No newline at end of file +<svg width="360" height="100" viewBox="0 0 360 100" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M180.144 58.555H130v-2.16c0-.633.25-1.239.696-1.686a2.371 2.371 0 0 1 1.68-.699h45.392c.63 0 1.234.252 1.68.699a2.39 2.39 0 0 1 .696 1.686v2.16z" fill="#BDC1C6" stroke="#BDC1C6" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M148.891 58.555h31.253v36.05a2.39 2.39 0 0 1-.696 1.685 2.372 2.372 0 0 1-1.68.699h-45.392a2.37 2.37 0 0 1-1.68-.699 2.387 2.387 0 0 1-.696-1.686v-38.21c0-.632.25-1.238.696-1.685a2.371 2.371 0 0 1 1.68-.699h13.221c.631 0 1.235.252 1.681.699a2.39 2.39 0 0 1 .695 1.686v2.159h.918z" fill="#fff" stroke="#BDC1C6" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M155.5 83.548H140v2.463h15.5v-2.463zm14.586-15.633H140V80.24h30.086V67.915z" fill="#81C995"/><path d="m211.564 80.449 6.471 6.493" stroke="#4285F4" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M199.408 85.502c9.494 0 17.191-7.723 17.191-17.25 0-9.528-7.697-17.252-17.191-17.252-9.495 0-17.191 7.724-17.191 17.251 0 9.528 7.696 17.251 17.191 17.251z" fill="#fff" stroke="#4285F4" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M212.527 68.251c0 7.276-5.877 13.168-13.119 13.168S186.29 75.527 186.29 68.25c0-7.275 5.876-13.167 13.118-13.167s13.119 5.892 13.119 13.167z" stroke="#E8EAED" stroke-width="2"/><path d="m217.414 85.137-1.179 1.183a1.9 1.9 0 0 0 0 2.679l8.632 8.662c.737.74 1.932.74 2.67 0l1.178-1.183a1.9 1.9 0 0 0 0-2.68l-8.632-8.661a1.882 1.882 0 0 0-2.669 0z" fill="#4285F4"/></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/images/privacy_guide/privacy_sandbox_graphic.svg b/chrome/browser/resources/settings/images/privacy_guide/privacy_sandbox_graphic.svg index 84eb208..0ef7cb6 100644 --- a/chrome/browser/resources/settings/images/privacy_guide/privacy_sandbox_graphic.svg +++ b/chrome/browser/resources/settings/images/privacy_guide/privacy_sandbox_graphic.svg
@@ -1 +1 @@ -<svg width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M20 40c11.046 0 20-8.954 20-20S31.046 0 20 0 0 8.954 0 20s8.954 20 20 20z" fill="#E8EAED"/><path d="M24.083 7h-8.166l1.02 2.228v7.343l-6.66 11.534c-.786 1.361.196 3.062 1.767 3.062h15.912c1.571 0 2.553-1.701 1.768-3.062l-6.662-11.534V9.228L24.082 7z" fill="#fff" stroke="#80868B" stroke-linejoin="round"/><path d="M10.277 28.807L13 23h13.5l3.224 5.807c.785.975-.197 2.193-1.768 2.193H12.044c-1.571 0-2.553-1.218-1.768-2.193z" fill="#AECBFA"/><path d="M24.083 7h-8.166l1.02 2.228v7.343l-6.66 11.534c-.786 1.361.196 3.062 1.767 3.062h15.912c1.571 0 2.553-1.701 1.768-3.062l-6.662-11.534V9.228L24.082 7z" stroke="#80868B" stroke-linejoin="round"/><circle cx="19" cy="23" r="3" fill="#AECBFA"/></svg> \ No newline at end of file +<svg width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M20 40c11.046 0 20-8.954 20-20S31.046 0 20 0 0 8.954 0 20s8.954 20 20 20z" fill="#E8EAED"/><path d="M24.083 7h-8.166l1.02 2.228v7.343l-6.66 11.534c-.786 1.361.196 3.062 1.767 3.062h15.912c1.571 0 2.553-1.701 1.768-3.062l-6.662-11.534V9.228L24.082 7z" fill="#fff" stroke="#80868B" stroke-linejoin="round"/><path d="M10.277 28.807 13 23h13.5l3.224 5.807c.785.975-.197 2.193-1.768 2.193H12.044c-1.571 0-2.553-1.218-1.768-2.193z" fill="#AECBFA"/><path d="M24.083 7h-8.166l1.02 2.228v7.343l-6.66 11.534c-.786 1.361.196 3.062 1.767 3.062h15.912c1.571 0 2.553-1.701 1.768-3.062l-6.662-11.534V9.228L24.082 7z" stroke="#80868B" stroke-linejoin="round"/><circle cx="19" cy="23" r="3" fill="#AECBFA"/></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/images/privacy_guide/privacy_sandbox_graphic_dark.svg b/chrome/browser/resources/settings/images/privacy_guide/privacy_sandbox_graphic_dark.svg index fd7533f..c3cdb54 100644 --- a/chrome/browser/resources/settings/images/privacy_guide/privacy_sandbox_graphic_dark.svg +++ b/chrome/browser/resources/settings/images/privacy_guide/privacy_sandbox_graphic_dark.svg
@@ -1 +1 @@ -<svg width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M20 40c11.046 0 20-8.954 20-20S31.046 0 20 0 0 8.954 0 20s8.954 20 20 20z" fill="#3C4043"/><path d="M24.083 7h-8.166l1.02 2.228v7.343l-6.66 11.534c-.786 1.361.196 3.062 1.767 3.062h15.912c1.571 0 2.553-1.701 1.768-3.062l-6.662-11.534V9.228L24.082 7z" fill="#3C4043" stroke="#BDC1C6" stroke-linejoin="round"/><path d="M10.277 28.807L13 23h13.5l3.224 5.807c.785.975-.197 2.193-1.768 2.193H12.044c-1.571 0-2.553-1.218-1.768-2.193z" fill="#1967D2"/><path d="M24.083 7h-8.166l1.02 2.228v7.343l-6.66 11.534c-.786 1.361.196 3.062 1.767 3.062h15.912c1.571 0 2.553-1.701 1.768-3.062l-6.662-11.534V9.228L24.082 7z" stroke="#BDC1C6" stroke-linejoin="round"/><circle cx="19" cy="23" r="3" fill="#1967D2"/></svg> \ No newline at end of file +<svg width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M20 40c11.046 0 20-8.954 20-20S31.046 0 20 0 0 8.954 0 20s8.954 20 20 20z" fill="#3C4043"/><path d="M24.083 7h-8.166l1.02 2.228v7.343l-6.66 11.534c-.786 1.361.196 3.062 1.767 3.062h15.912c1.571 0 2.553-1.701 1.768-3.062l-6.662-11.534V9.228L24.082 7z" fill="#3C4043" stroke="#BDC1C6" stroke-linejoin="round"/><path d="M10.277 28.807 13 23h13.5l3.224 5.807c.785.975-.197 2.193-1.768 2.193H12.044c-1.571 0-2.553-1.218-1.768-2.193z" fill="#1967D2"/><path d="M24.083 7h-8.166l1.02 2.228v7.343l-6.66 11.534c-.786 1.361.196 3.062 1.767 3.062h15.912c1.571 0 2.553-1.701 1.768-3.062l-6.662-11.534V9.228L24.082 7z" stroke="#BDC1C6" stroke-linejoin="round"/><circle cx="19" cy="23" r="3" fill="#1967D2"/></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/images/privacy_guide/promo_banner.svg b/chrome/browser/resources/settings/images/privacy_guide/promo_banner.svg index 0b15e269..f7b5413 100644 --- a/chrome/browser/resources/settings/images/privacy_guide/promo_banner.svg +++ b/chrome/browser/resources/settings/images/privacy_guide/promo_banner.svg
@@ -1 +1 @@ -<svg width="300" height="180" viewBox="0 0 300 180" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill="#fff" d="M0 0h300v180H0z"/><mask id="a" maskUnits="userSpaceOnUse" x="174" y="51" width="108" height="68" fill="#000"><path fill="#fff" d="M174 51h108v68H174z"/><path fill-rule="evenodd" clip-rule="evenodd" d="M196.37 106.677a19.989 19.989 0 0 1-.244-.263c.002.088.003.175.003.263h.241zm-10.269 10.065h-.036c-5.559 0-10.065-4.506-10.065-10.065 0-5.558 4.506-10.064 10.065-10.064 1.543 0 3.005.347 4.312.968a31.767 31.767 0 0 1-2.635-12.71c0-17.602 14.269-31.871 31.871-31.871 14.075 0 26.019 9.124 30.241 21.78a21.74 21.74 0 0 1 8.34-1.651c12.043 0 21.806 9.763 21.806 21.806 0 12.044-9.763 21.807-21.806 21.807h-72.093z"/></mask><path fill-rule="evenodd" clip-rule="evenodd" d="M196.37 106.677a19.989 19.989 0 0 1-.244-.263c.002.088.003.175.003.263h.241zm-10.269 10.065h-.036c-5.559 0-10.065-4.506-10.065-10.065 0-5.558 4.506-10.064 10.065-10.064 1.543 0 3.005.347 4.312.968a31.767 31.767 0 0 1-2.635-12.71c0-17.602 14.269-31.871 31.871-31.871 14.075 0 26.019 9.124 30.241 21.78a21.74 21.74 0 0 1 8.34-1.651c12.043 0 21.806 9.763 21.806 21.806 0 12.044-9.763 21.807-21.806 21.807h-72.093z" fill="#fff"/><path d="M196.37 106.677v1.5h3.465l-2.372-2.526-1.093 1.026zm-.244-.263l1.105-1.014-2.708-2.95.103 4.003 1.5-.039zm.003.263h-1.5v1.5h1.5v-1.5zm-10.028 10.065v-1.5h-.005l.005 1.5zm4.276-19.161l-.643 1.355 3.617 1.718-1.599-3.672-1.375.599zm59.477-22.8l-1.423.474.509 1.528 1.488-.617-.574-1.385zm8.293 41.961l.003-1.5h-.003v1.5zm-38.427 0v-1.5h-.005l.005 1.5zm-.214 0l.005-1.5h-.005v1.5zm-22.043-11.091l-.232-.251-2.21 2.029c.084.092.169.184.255.275l2.187-2.053zm-2.837.802c.002.074.003.149.003.224h3c0-.1-.001-.201-.004-.301l-2.999.077zm1.503 1.724h.241v-3h-.241v3zm-10.033 7.065h-.031v3h.041l-.01-3zm-.031 0a8.565 8.565 0 0 1-8.565-8.565h-3c0 6.387 5.178 11.565 11.565 11.565v-3zm-8.565-8.565a8.564 8.564 0 0 1 8.565-8.564v-3c-6.387 0-11.565 5.177-11.565 11.564h3zm8.565-8.564c1.316 0 2.558.296 3.669.823l1.287-2.71a11.527 11.527 0 0 0-4.956-1.113v3zm5.687-1.13a30.272 30.272 0 0 1-2.51-12.112h-3c0 4.728.984 9.23 2.76 13.309l2.75-1.198zm-2.51-12.112c0-16.773 13.597-30.371 30.371-30.371v-3c-18.43 0-33.371 14.94-33.371 33.371h3zM219.613 54.5c13.41 0 24.795 8.693 28.818 20.755l2.845-.949c-4.419-13.25-16.923-22.806-31.663-22.806v3zm30.815 21.666a20.237 20.237 0 0 1 7.766-1.537v-3c-3.155 0-6.167.627-8.915 1.766l1.149 2.771zm7.766-1.537c11.214 0 20.306 9.091 20.306 20.306h3c0-12.871-10.435-23.306-23.306-23.306v3zM278.5 94.935c0 11.215-9.092 20.307-20.306 20.307v3c12.871 0 23.306-10.435 23.306-23.307h-3zm-20.306 20.307h-.044l-.007 3h.051v-3zm-.047 0H219.72v3h38.427v-3zm-38.432 0h-.102v3h.112l-.01-3zm-.102 0h-.102l-.01 3h.112v-3zm-.107 0h-33.405v3h33.405v-3z" fill="#D2E3FC" mask="url(#a)"/><path d="M252 156.145S223.649 132 178.287 132c-12.066 0-23.588 1.708-34.832 4.216-31.027 6.921-59.94 19.929-92.344 19.929H26" fill="url(#paint0_linear_2458_27811)"/><mask id="b" maskUnits="userSpaceOnUse" x="23" y="25" width="122" height="70" fill="#000"><path fill="#fff" d="M23 25h122v70H23z"/><path fill-rule="evenodd" clip-rule="evenodd" d="M41 93c-8.837 0-16-7.163-16-16s7.163-16 16-16c2.552 0 4.964.597 7.104 1.66A33.965 33.965 0 0 1 48 60c0-18.225 14.55-33 32.5-33 14.97 0 27.575 10.276 31.348 24.26 9.298 2.177 16.222 10.52 16.222 20.482 0 1.354-.128 2.677-.372 3.96a9.425 9.425 0 0 1 5.631-1.856 9.466 9.466 0 0 1 3.379 18.31V93H41z"/></mask><path fill-rule="evenodd" clip-rule="evenodd" d="M41 93c-8.837 0-16-7.163-16-16s7.163-16 16-16c2.552 0 4.964.597 7.104 1.66A33.965 33.965 0 0 1 48 60c0-18.225 14.55-33 32.5-33 14.97 0 27.575 10.276 31.348 24.26 9.298 2.177 16.222 10.52 16.222 20.482 0 1.354-.128 2.677-.372 3.96a9.425 9.425 0 0 1 5.631-1.856 9.466 9.466 0 0 1 3.379 18.31V93H41z" fill="#fff"/><path d="M48.104 62.66l-.667 1.343 2.37 1.176-.208-2.637-1.495.118zm63.744-11.4l-1.448.391.233.865.873.205.342-1.46zm15.85 24.442l-1.473-.28-.719 3.772 3.085-2.287-.893-1.205zm9.01 16.454l-.536-1.401-.964.368v1.033h1.5zm0 .844v1.5h1.5V93h-1.5zM41 91.5c-8.008 0-14.5-6.492-14.5-14.5h-3c0 9.665 7.835 17.5 17.5 17.5v-3zM26.5 77c0-8.008 6.492-14.5 14.5-14.5v-3c-9.665 0-17.5 7.835-17.5 17.5h3zM41 62.5c2.315 0 4.5.541 6.437 1.503l1.334-2.687A17.434 17.434 0 0 0 41 59.5v3zm8.6.042c-.066-.838-.1-1.686-.1-2.542h-3c0 .935.037 1.86.109 2.777l2.99-.235zM49.5 60c0-17.419 13.9-31.5 31-31.5v-3c-18.8 0-34 15.468-34 34.5h3zm31-31.5c14.26 0 26.295 9.791 29.9 23.151l2.896-.781C109.355 36.26 96.178 25.5 80.5 25.5v3zm31.006 24.22c8.635 2.022 15.064 9.773 15.064 19.022h3c0-10.674-7.419-19.61-17.38-21.942l-.684 2.92zm15.064 19.022a19.71 19.71 0 0 1-.345 3.68l2.947.56a22.71 22.71 0 0 0 .398-4.24h-3zm2.021 5.165a7.924 7.924 0 0 1 4.738-1.561v-3c-2.442 0-4.701.8-6.524 2.15l1.786 2.41zm4.738-1.561a7.966 7.966 0 0 1 7.966 7.965h3c0-6.056-4.91-10.965-10.966-10.965v3zm7.966 7.965a7.97 7.97 0 0 1-5.123 7.444l1.072 2.802c4.12-1.575 7.051-5.566 7.051-10.246h-3zm-6.087 8.845V93h3v-.844h-3zm1.5-.656H80.5v3h56.208v-3zm-56.208 0H41v3h39.5v-3z" fill="#D2E3FC" mask="url(#b)"/><path d="M196 55.687v31.262c0 30.066-19.583 57.803-45.999 66.051C123.582 144.75 104 117.015 104 86.95V55.685L149.999 35 196 55.687z" fill="#E8F0FE" stroke="#8AB4F8" stroke-width="1.5" stroke-miterlimit="10"/><path d="M170.674 68.148v-7.7a2.9 2.9 0 0 0-.842-2.055 2.904 2.904 0 0 0-2.051-.852 2.893 2.893 0 0 0-2.892 2.907v7.7h-2.893v-7.7a5.785 5.785 0 0 1 11.571 0v7.7h-2.893z" fill="#5BB974"/><path d="M154.469 66.347h26.625V86.97h-26.625V66.347z" fill="#81C995"/><path d="M144.062 64.707h-27.125m27.125 11.276h-27.125m27.125 11.277h-27.125" stroke="#8AB4F8" stroke-miterlimit="10"/><path d="M128.607 68.288a3.582 3.582 0 1 1 0-7.163 3.582 3.582 0 0 1 0 7.163zm-11.67 11.277a3.581 3.581 0 1 1 0-7.162 3.581 3.581 0 0 1 0 7.162zm20.222 11.275a3.581 3.581 0 1 1 0-7.161 3.581 3.581 0 0 1 0 7.162z" fill="#669DF6"/><path d="M115 132h27v-27h-27v27z" fill="#F9AB00"/><path d="M139.5 107.5h-22v22h22v-22z" fill="#FCC934"/><path d="M121.641 118.439l4.948 4.949 9.596-9.596" stroke="#F9AB00" stroke-width="2" stroke-miterlimit="10"/><path d="M167.463 99.35c6.682 0 12.1 5.418 12.1 12.101 0 6.683-5.418 12.1-12.1 12.1-6.683 0-12.1-5.417-12.1-12.1s5.417-12.1 12.1-12.1z" fill="#D2E3FC" stroke="#669DF6" stroke-miterlimit="10"/><path d="M167.5 102a9.5 9.5 0 0 1 9.5 9.5 9.5 9.5 0 0 1-9.5 9.5 9.5 9.5 0 0 1-9.5-9.5 9.5 9.5 0 0 1 9.5-9.5z" fill="#fff"/><path d="M176.057 120.044l8.176 8.176" stroke="#669DF6" stroke-miterlimit="10"/><path d="M179.494 123.482l7.15 7.151" stroke="#669DF6" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round"/><path d="M104 163h93" stroke="url(#paint1_linear_2458_27811)" stroke-width="1.5" stroke-miterlimit="10"/><path fill-rule="evenodd" clip-rule="evenodd" d="M196.37 106.677a19.989 19.989 0 0 1-.244-.263c.002.088.003.175.003.263h.241zm-10.269 10.065h-.036c-5.559 0-10.065-4.506-10.065-10.065 0-5.558 4.506-10.064 10.065-10.064 1.543 0 3.005.347 4.312.968a31.767 31.767 0 0 1-2.635-12.71c0-17.602 14.269-31.871 31.871-31.871 14.075 0 26.019 9.124 30.241 21.78a21.74 21.74 0 0 1 8.34-1.651c12.043 0 21.806 9.763 21.806 21.806 0 12.044-9.763 21.807-21.806 21.807h-72.093z" fill="#fff"/><defs><linearGradient id="paint0_linear_2458_27811" x1="139" y1="132" x2="139" y2="156" gradientUnits="userSpaceOnUse"><stop stop-color="#CEEAD6"/><stop offset="1" stop-color="#E6F4EA" stop-opacity="0"/></linearGradient><linearGradient id="paint1_linear_2458_27811" x1="107.915" y1="164" x2="195.615" y2="164" gradientUnits="userSpaceOnUse"><stop stop-color="#81C995" stop-opacity="0"/><stop offset=".156" stop-color="#81C995"/><stop offset=".854" stop-color="#81C995"/><stop offset="1" stop-color="#81C995" stop-opacity="0"/></linearGradient></defs></svg> \ No newline at end of file +<svg width="300" height="180" viewBox="0 0 300 180" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill="#fff" d="M0 0h300v180H0z"/><mask id="a" maskUnits="userSpaceOnUse" x="174" y="51" width="108" height="68" fill="#000"><path fill="#fff" d="M174 51h108v68H174z"/><path fill-rule="evenodd" clip-rule="evenodd" d="M196.37 106.677a19.989 19.989 0 0 1-.244-.263c.002.088.003.175.003.263h.241zm-10.269 10.065h-.036c-5.559 0-10.065-4.506-10.065-10.065 0-5.558 4.506-10.064 10.065-10.064 1.543 0 3.005.347 4.312.968a31.767 31.767 0 0 1-2.635-12.71c0-17.602 14.269-31.871 31.871-31.871 14.075 0 26.019 9.124 30.241 21.78a21.74 21.74 0 0 1 8.34-1.651c12.043 0 21.806 9.763 21.806 21.806 0 12.044-9.763 21.807-21.806 21.807h-72.093z"/></mask><path fill-rule="evenodd" clip-rule="evenodd" d="M196.37 106.677a19.989 19.989 0 0 1-.244-.263c.002.088.003.175.003.263h.241zm-10.269 10.065h-.036c-5.559 0-10.065-4.506-10.065-10.065 0-5.558 4.506-10.064 10.065-10.064 1.543 0 3.005.347 4.312.968a31.767 31.767 0 0 1-2.635-12.71c0-17.602 14.269-31.871 31.871-31.871 14.075 0 26.019 9.124 30.241 21.78a21.74 21.74 0 0 1 8.34-1.651c12.043 0 21.806 9.763 21.806 21.806 0 12.044-9.763 21.807-21.806 21.807h-72.093z" fill="#fff"/><path d="M196.37 106.677v1.5h3.465l-2.372-2.526-1.093 1.026zm-.244-.263 1.105-1.014-2.708-2.95.103 4.003 1.5-.039zm.003.263h-1.5v1.5h1.5v-1.5zm-10.028 10.065v-1.5h-.005l.005 1.5zm4.276-19.161-.643 1.355 3.617 1.718-1.599-3.672-1.375.599zm59.477-22.8-1.423.474.509 1.528 1.488-.617-.574-1.385zm8.293 41.961.003-1.5h-.003v1.5zm-38.427 0v-1.5h-.005l.005 1.5zm-.214 0 .005-1.5h-.005v1.5zm-22.043-11.091-.232-.251-2.21 2.029c.084.092.169.184.255.275l2.187-2.053zm-2.837.802c.002.074.003.149.003.224h3c0-.1-.001-.201-.004-.301l-2.999.077zm1.503 1.724h.241v-3h-.241v3zm-10.033 7.065h-.031v3h.041l-.01-3zm-.031 0a8.565 8.565 0 0 1-8.565-8.565h-3c0 6.387 5.178 11.565 11.565 11.565v-3zm-8.565-8.565a8.564 8.564 0 0 1 8.565-8.564v-3c-6.387 0-11.565 5.177-11.565 11.564h3zm8.565-8.564c1.316 0 2.558.296 3.669.823l1.287-2.71a11.527 11.527 0 0 0-4.956-1.113v3zm5.687-1.13a30.272 30.272 0 0 1-2.51-12.112h-3c0 4.728.984 9.23 2.76 13.309l2.75-1.198zm-2.51-12.112c0-16.773 13.597-30.371 30.371-30.371v-3c-18.43 0-33.371 14.94-33.371 33.371h3zM219.613 54.5c13.41 0 24.795 8.693 28.818 20.755l2.845-.949c-4.419-13.25-16.923-22.806-31.663-22.806v3zm30.815 21.666a20.237 20.237 0 0 1 7.766-1.537v-3c-3.155 0-6.167.627-8.915 1.766l1.149 2.771zm7.766-1.537c11.214 0 20.306 9.091 20.306 20.306h3c0-12.871-10.435-23.306-23.306-23.306v3zM278.5 94.935c0 11.215-9.092 20.307-20.306 20.307v3c12.871 0 23.306-10.435 23.306-23.307h-3zm-20.306 20.307h-.044l-.007 3h.051v-3zm-.047 0H219.72v3h38.427v-3zm-38.432 0h-.102v3h.112l-.01-3zm-.102 0h-.102l-.01 3h.112v-3zm-.107 0h-33.405v3h33.405v-3z" fill="#D2E3FC" mask="url(#a)"/><path d="M252 156.145S223.649 132 178.287 132c-12.066 0-23.588 1.708-34.832 4.216-31.027 6.921-59.94 19.929-92.344 19.929H26" fill="url(#b)"/><mask id="c" maskUnits="userSpaceOnUse" x="23" y="25" width="122" height="70" fill="#000"><path fill="#fff" d="M23 25h122v70H23z"/><path fill-rule="evenodd" clip-rule="evenodd" d="M41 93c-8.837 0-16-7.163-16-16s7.163-16 16-16c2.552 0 4.964.597 7.104 1.66A33.965 33.965 0 0 1 48 60c0-18.225 14.55-33 32.5-33 14.97 0 27.575 10.276 31.348 24.26 9.298 2.177 16.222 10.52 16.222 20.482 0 1.354-.128 2.677-.372 3.96a9.425 9.425 0 0 1 5.631-1.856 9.466 9.466 0 0 1 3.379 18.31V93H41z"/></mask><path fill-rule="evenodd" clip-rule="evenodd" d="M41 93c-8.837 0-16-7.163-16-16s7.163-16 16-16c2.552 0 4.964.597 7.104 1.66A33.965 33.965 0 0 1 48 60c0-18.225 14.55-33 32.5-33 14.97 0 27.575 10.276 31.348 24.26 9.298 2.177 16.222 10.52 16.222 20.482 0 1.354-.128 2.677-.372 3.96a9.425 9.425 0 0 1 5.631-1.856 9.466 9.466 0 0 1 3.379 18.31V93H41z" fill="#fff"/><path d="m48.104 62.66-.667 1.343 2.37 1.176-.208-2.637-1.495.118zm63.744-11.4-1.448.391.233.865.873.205.342-1.46zm15.85 24.442-1.473-.28-.719 3.772 3.085-2.287-.893-1.205zm9.01 16.454-.536-1.401-.964.368v1.033h1.5zm0 .844v1.5h1.5V93h-1.5zM41 91.5c-8.008 0-14.5-6.492-14.5-14.5h-3c0 9.665 7.835 17.5 17.5 17.5v-3zM26.5 77c0-8.008 6.492-14.5 14.5-14.5v-3c-9.665 0-17.5 7.835-17.5 17.5h3zM41 62.5c2.315 0 4.5.541 6.437 1.503l1.334-2.687A17.434 17.434 0 0 0 41 59.5v3zm8.6.042c-.066-.838-.1-1.686-.1-2.542h-3c0 .935.037 1.86.109 2.777l2.99-.235zM49.5 60c0-17.419 13.9-31.5 31-31.5v-3c-18.8 0-34 15.468-34 34.5h3zm31-31.5c14.26 0 26.295 9.791 29.9 23.151l2.896-.781C109.355 36.26 96.178 25.5 80.5 25.5v3zm31.006 24.22c8.635 2.022 15.064 9.773 15.064 19.022h3c0-10.674-7.419-19.61-17.38-21.942l-.684 2.92zm15.064 19.022a19.71 19.71 0 0 1-.345 3.68l2.947.56a22.71 22.71 0 0 0 .398-4.24h-3zm2.021 5.165a7.924 7.924 0 0 1 4.738-1.561v-3c-2.442 0-4.701.8-6.524 2.15l1.786 2.41zm4.738-1.561a7.966 7.966 0 0 1 7.966 7.965h3c0-6.056-4.91-10.965-10.966-10.965v3zm7.966 7.965a7.97 7.97 0 0 1-5.123 7.444l1.072 2.802c4.12-1.575 7.051-5.566 7.051-10.246h-3zm-6.087 8.845V93h3v-.844h-3zm1.5-.656H80.5v3h56.208v-3zm-56.208 0H41v3h39.5v-3z" fill="#D2E3FC" mask="url(#c)"/><path d="M196 55.687v31.262c0 30.066-19.583 57.803-45.999 66.051C123.582 144.75 104 117.015 104 86.95V55.685L149.999 35 196 55.687z" fill="#E8F0FE" stroke="#8AB4F8" stroke-width="1.5" stroke-miterlimit="10"/><path d="M170.674 68.148v-7.7a2.9 2.9 0 0 0-.842-2.055 2.904 2.904 0 0 0-2.051-.852 2.893 2.893 0 0 0-2.892 2.907v7.7h-2.893v-7.7a5.785 5.785 0 0 1 11.571 0v7.7h-2.893z" fill="#5BB974"/><path d="M154.469 66.347h26.625V86.97h-26.625V66.347z" fill="#81C995"/><path d="M144.062 64.707h-27.125m27.125 11.276h-27.125m27.125 11.277h-27.125" stroke="#8AB4F8" stroke-miterlimit="10"/><path d="M128.607 68.288a3.582 3.582 0 1 1 0-7.163 3.582 3.582 0 0 1 0 7.163zm-11.67 11.277a3.581 3.581 0 1 1 0-7.162 3.581 3.581 0 0 1 0 7.162zm20.222 11.275a3.581 3.581 0 1 1 0-7.161 3.581 3.581 0 0 1 0 7.162z" fill="#669DF6"/><path d="M115 132h27v-27h-27v27z" fill="#F9AB00"/><path d="M139.5 107.5h-22v22h22v-22z" fill="#FCC934"/><path d="m121.641 118.439 4.948 4.949 9.596-9.596" stroke="#F9AB00" stroke-width="2" stroke-miterlimit="10"/><path d="M167.463 99.35c6.682 0 12.1 5.418 12.1 12.101 0 6.683-5.418 12.1-12.1 12.1-6.683 0-12.1-5.417-12.1-12.1s5.417-12.1 12.1-12.1z" fill="#D2E3FC" stroke="#669DF6" stroke-miterlimit="10"/><path d="M167.5 102a9.5 9.5 0 0 1 9.5 9.5 9.5 9.5 0 0 1-9.5 9.5 9.5 9.5 0 0 1-9.5-9.5 9.5 9.5 0 0 1 9.5-9.5z" fill="#fff"/><path d="m176.057 120.044 8.176 8.176" stroke="#669DF6" stroke-miterlimit="10"/><path d="m179.494 123.482 7.15 7.151" stroke="#669DF6" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round"/><path d="M104 163h93" stroke="url(#d)" stroke-width="1.5" stroke-miterlimit="10"/><path fill-rule="evenodd" clip-rule="evenodd" d="M196.37 106.677a19.989 19.989 0 0 1-.244-.263c.002.088.003.175.003.263h.241zm-10.269 10.065h-.036c-5.559 0-10.065-4.506-10.065-10.065 0-5.558 4.506-10.064 10.065-10.064 1.543 0 3.005.347 4.312.968a31.767 31.767 0 0 1-2.635-12.71c0-17.602 14.269-31.871 31.871-31.871 14.075 0 26.019 9.124 30.241 21.78a21.74 21.74 0 0 1 8.34-1.651c12.043 0 21.806 9.763 21.806 21.806 0 12.044-9.763 21.807-21.806 21.807h-72.093z" fill="#fff"/><defs><linearGradient id="b" x1="139" y1="132" x2="139" y2="156" gradientUnits="userSpaceOnUse"><stop stop-color="#CEEAD6"/><stop offset="1" stop-color="#E6F4EA" stop-opacity="0"/></linearGradient><linearGradient id="d" x1="107.915" y1="164" x2="195.615" y2="164" gradientUnits="userSpaceOnUse"><stop stop-color="#81C995" stop-opacity="0"/><stop offset=".156" stop-color="#81C995"/><stop offset=".854" stop-color="#81C995"/><stop offset="1" stop-color="#81C995" stop-opacity="0"/></linearGradient></defs></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/images/privacy_guide/promo_banner_dark.svg b/chrome/browser/resources/settings/images/privacy_guide/promo_banner_dark.svg index b26a616..6c76090 100644 --- a/chrome/browser/resources/settings/images/privacy_guide/promo_banner_dark.svg +++ b/chrome/browser/resources/settings/images/privacy_guide/promo_banner_dark.svg
@@ -1 +1 @@ -<svg width="300" height="180" viewBox="0 0 300 180" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M252 156.145S223.649 132 178.287 132c-12.066 0-23.588 1.708-34.832 4.216-31.027 6.921-59.94 19.929-92.344 19.929H26" fill="url(#paint0_linear_2458_27769)"/><path fill-rule="evenodd" clip-rule="evenodd" d="M108.237 57.74c0 .894-.038 1.778-.113 2.651 5.379 2.321 9.144 7.672 9.144 13.903a15.17 15.17 0 0 1-.477 3.783h4.002a8.954 8.954 0 1 1-.484 11.35H40.134C31.776 89.428 25 82.653 25 74.295c0-8.359 6.776-15.134 15.134-15.134 2.432 0 4.73.574 6.767 1.593a31.105 31.105 0 0 1-.146-3.012C46.755 40.763 60.518 27 77.495 27c16.979 0 30.742 13.763 30.742 30.74z" fill="#174EA6"/><path d="M196 55.687v31.262c0 30.066-19.583 57.803-45.999 66.051C123.582 144.75 104 117.015 104 86.95V55.685L149.999 35 196 55.687z" fill="#0D2E62" stroke="#1967D2" stroke-width="1.5" stroke-miterlimit="10"/><path d="M170.674 68.148v-7.7a2.9 2.9 0 0 0-.842-2.055 2.904 2.904 0 0 0-2.051-.852 2.893 2.893 0 0 0-2.892 2.907v7.7h-2.893v-7.7a5.785 5.785 0 0 1 11.571 0v7.7h-2.893z" fill="#188038"/><path d="M154.469 66.347h26.625V86.97h-26.625V66.347z" fill="#188038"/><path d="M144.062 64.707h-27.125m27.125 11.276h-27.125m27.125 11.277h-27.125" stroke="#8AB4F8" stroke-miterlimit="10"/><path d="M128.607 68.288a3.582 3.582 0 1 1 0-7.163 3.582 3.582 0 0 1 0 7.163zm-11.67 11.277a3.581 3.581 0 1 1 0-7.162 3.581 3.581 0 0 1 0 7.162zm20.222 11.275a3.581 3.581 0 1 1 0-7.161 3.581 3.581 0 0 1 0 7.162z" fill="#669DF6"/><path d="M104 163h93" stroke="url(#paint1_linear_2458_27769)" stroke-width="1.5" stroke-miterlimit="10"/><path d="M196 55.687v31.262c0 30.066-19.583 57.803-45.999 66.051C123.582 144.75 104 117.015 104 86.95V55.685L149.999 35 196 55.687z" stroke="#1967D2" stroke-width="1.5" stroke-miterlimit="10"/><path d="M115 132h27v-27h-27v27z" fill="#F9AB00"/><path d="M139.5 107.5h-22v22h22v-22z" fill="#FCC934"/><path d="M121.641 118.439l4.948 4.949 9.596-9.596" stroke="#F9AB00" stroke-width="2" stroke-miterlimit="10"/><path d="M167.463 99.35c6.682 0 12.1 5.418 12.1 12.101 0 6.683-5.418 12.1-12.1 12.1-6.683 0-12.1-5.417-12.1-12.1s5.417-12.1 12.1-12.1z" fill="#174EA6" stroke="#669DF6" stroke-miterlimit="10"/><path d="M167.5 102a9.5 9.5 0 0 1 9.5 9.5 9.5 9.5 0 0 1-9.5 9.5 9.5 9.5 0 0 1-9.5-9.5 9.5 9.5 0 0 1 9.5-9.5z" fill="#0D2E62"/><path d="M176.057 120.044l8.176 8.176" stroke="#669DF6" stroke-miterlimit="10"/><path d="M179.494 123.482l7.15 7.151" stroke="#669DF6" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round"/><path fill-rule="evenodd" clip-rule="evenodd" d="M186.101 116.742h-.036c-5.559 0-10.065-4.506-10.065-10.065 0-5.558 4.506-10.064 10.065-10.064 1.543 0 3.005.347 4.312.968a31.767 31.767 0 0 1-2.635-12.71c0-17.602 14.269-31.871 31.871-31.871 14.075 0 26.019 9.124 30.241 21.78a21.74 21.74 0 0 1 8.34-1.651c12.043 0 21.806 9.763 21.806 21.806 0 12.044-9.763 21.807-21.806 21.807h-72.093z" fill="#174EA6"/><defs><linearGradient id="paint0_linear_2458_27769" x1="161.5" y1="156" x2="161.5" y2="132" gradientUnits="userSpaceOnUse"><stop stop-color="#0D652D" stop-opacity="0"/><stop offset="1" stop-color="#188038"/></linearGradient><linearGradient id="paint1_linear_2458_27769" x1="107.915" y1="164" x2="195.615" y2="164" gradientUnits="userSpaceOnUse"><stop stop-color="#0D652D" stop-opacity="0"/><stop offset=".156" stop-color="#0D652D"/><stop offset=".854" stop-color="#0D652D"/><stop offset="1" stop-color="#0D652D" stop-opacity="0"/></linearGradient></defs></svg> \ No newline at end of file +<svg width="300" height="180" viewBox="0 0 300 180" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M252 156.145S223.649 132 178.287 132c-12.066 0-23.588 1.708-34.832 4.216-31.027 6.921-59.94 19.929-92.344 19.929H26" fill="url(#a)"/><path fill-rule="evenodd" clip-rule="evenodd" d="M108.237 57.74c0 .894-.038 1.778-.113 2.651 5.379 2.321 9.144 7.672 9.144 13.903a15.17 15.17 0 0 1-.477 3.783h4.002a8.954 8.954 0 1 1-.484 11.35H40.134C31.776 89.428 25 82.653 25 74.295c0-8.359 6.776-15.134 15.134-15.134 2.432 0 4.73.574 6.767 1.593a31.105 31.105 0 0 1-.146-3.012C46.755 40.763 60.518 27 77.495 27c16.979 0 30.742 13.763 30.742 30.74z" fill="#174EA6"/><path d="M196 55.687v31.262c0 30.066-19.583 57.803-45.999 66.051C123.582 144.75 104 117.015 104 86.95V55.685L149.999 35 196 55.687z" fill="#0D2E62" stroke="#1967D2" stroke-width="1.5" stroke-miterlimit="10"/><path d="M170.674 68.148v-7.7a2.9 2.9 0 0 0-.842-2.055 2.904 2.904 0 0 0-2.051-.852 2.893 2.893 0 0 0-2.892 2.907v7.7h-2.893v-7.7a5.785 5.785 0 0 1 11.571 0v7.7h-2.893z" fill="#188038"/><path d="M154.469 66.347h26.625V86.97h-26.625V66.347z" fill="#188038"/><path d="M144.062 64.707h-27.125m27.125 11.276h-27.125m27.125 11.277h-27.125" stroke="#8AB4F8" stroke-miterlimit="10"/><path d="M128.607 68.288a3.582 3.582 0 1 1 0-7.163 3.582 3.582 0 0 1 0 7.163zm-11.67 11.277a3.581 3.581 0 1 1 0-7.162 3.581 3.581 0 0 1 0 7.162zm20.222 11.275a3.581 3.581 0 1 1 0-7.161 3.581 3.581 0 0 1 0 7.162z" fill="#669DF6"/><path d="M104 163h93" stroke="url(#b)" stroke-width="1.5" stroke-miterlimit="10"/><path d="M196 55.687v31.262c0 30.066-19.583 57.803-45.999 66.051C123.582 144.75 104 117.015 104 86.95V55.685L149.999 35 196 55.687z" stroke="#1967D2" stroke-width="1.5" stroke-miterlimit="10"/><path d="M115 132h27v-27h-27v27z" fill="#F9AB00"/><path d="M139.5 107.5h-22v22h22v-22z" fill="#FCC934"/><path d="m121.641 118.439 4.948 4.949 9.596-9.596" stroke="#F9AB00" stroke-width="2" stroke-miterlimit="10"/><path d="M167.463 99.35c6.682 0 12.1 5.418 12.1 12.101 0 6.683-5.418 12.1-12.1 12.1-6.683 0-12.1-5.417-12.1-12.1s5.417-12.1 12.1-12.1z" fill="#174EA6" stroke="#669DF6" stroke-miterlimit="10"/><path d="M167.5 102a9.5 9.5 0 0 1 9.5 9.5 9.5 9.5 0 0 1-9.5 9.5 9.5 9.5 0 0 1-9.5-9.5 9.5 9.5 0 0 1 9.5-9.5z" fill="#0D2E62"/><path d="m176.057 120.044 8.176 8.176" stroke="#669DF6" stroke-miterlimit="10"/><path d="m179.494 123.482 7.15 7.151" stroke="#669DF6" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round"/><path fill-rule="evenodd" clip-rule="evenodd" d="M186.101 116.742h-.036c-5.559 0-10.065-4.506-10.065-10.065 0-5.558 4.506-10.064 10.065-10.064 1.543 0 3.005.347 4.312.968a31.767 31.767 0 0 1-2.635-12.71c0-17.602 14.269-31.871 31.871-31.871 14.075 0 26.019 9.124 30.241 21.78a21.74 21.74 0 0 1 8.34-1.651c12.043 0 21.806 9.763 21.806 21.806 0 12.044-9.763 21.807-21.806 21.807h-72.093z" fill="#174EA6"/><defs><linearGradient id="a" x1="161.5" y1="156" x2="161.5" y2="132" gradientUnits="userSpaceOnUse"><stop stop-color="#0D652D" stop-opacity="0"/><stop offset="1" stop-color="#188038"/></linearGradient><linearGradient id="b" x1="107.915" y1="164" x2="195.615" y2="164" gradientUnits="userSpaceOnUse"><stop stop-color="#0D652D" stop-opacity="0"/><stop offset=".156" stop-color="#0D652D"/><stop offset=".854" stop-color="#0D652D"/><stop offset="1" stop-color="#0D652D" stop-opacity="0"/></linearGradient></defs></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/images/privacy_guide/safe_browsing_graphic.svg b/chrome/browser/resources/settings/images/privacy_guide/safe_browsing_graphic.svg index 979f9bd..6842283 100644 --- a/chrome/browser/resources/settings/images/privacy_guide/safe_browsing_graphic.svg +++ b/chrome/browser/resources/settings/images/privacy_guide/safe_browsing_graphic.svg
@@ -1 +1 @@ -<svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M24 48c13.255 0 24-10.745 24-24S37.255 0 24 0 0 10.745 0 24s10.745 24 24 24z" fill="#E8EAED"/><path d="M33 16.207v6.359C33 28.68 29.169 34.322 24 36c-5.169-1.678-9-7.32-9-13.434v-6.359L24 12l9 4.207z" fill="#fff" stroke="#80868B" stroke-linecap="round"/><path d="M24 2v6.947m13.919 1.134l-3.275 3.275M13.356 34.644l-3.275 3.275m27.838 0l-3.275-3.275M13.356 13.356l-3.275-3.275M46 24h-6.947M8.947 24H2m22 22v-6.947" stroke="#81C995"/><path d="M24 12v12h-8.93c-.046-.474-.07-.953-.07-1.434v-6.358L24 12zm8.93 12c-.542 5.545-4.168 10.455-8.93 12V24h8.93z" fill="#80868B"/><path d="M33 16.207v6.359C33 28.68 29.169 34.322 24 36c-5.169-1.678-9-7.32-9-13.434v-6.359L24 12l9 4.207z" stroke="#80868B" stroke-linecap="round"/></svg> \ No newline at end of file +<svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M24 48c13.255 0 24-10.745 24-24S37.255 0 24 0 0 10.745 0 24s10.745 24 24 24z" fill="#E8EAED"/><path d="M33 16.207v6.359C33 28.68 29.169 34.322 24 36c-5.169-1.678-9-7.32-9-13.434v-6.359L24 12l9 4.207z" fill="#fff" stroke="#80868B" stroke-linecap="round"/><path d="M24 2v6.947m13.919 1.134-3.275 3.275M13.356 34.644l-3.275 3.275m27.838 0-3.275-3.275M13.356 13.356l-3.275-3.275M46 24h-6.947M8.947 24H2m22 22v-6.947" stroke="#81C995"/><path d="M24 12v12h-8.93c-.046-.474-.07-.953-.07-1.434v-6.358L24 12zm8.93 12c-.542 5.545-4.168 10.455-8.93 12V24h8.93z" fill="#80868B"/><path d="M33 16.207v6.359C33 28.68 29.169 34.322 24 36c-5.169-1.678-9-7.32-9-13.434v-6.359L24 12l9 4.207z" stroke="#80868B" stroke-linecap="round"/></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/images/privacy_guide/safe_browsing_graphic_dark.svg b/chrome/browser/resources/settings/images/privacy_guide/safe_browsing_graphic_dark.svg index 899d25ae..1d61cb4c 100644 --- a/chrome/browser/resources/settings/images/privacy_guide/safe_browsing_graphic_dark.svg +++ b/chrome/browser/resources/settings/images/privacy_guide/safe_browsing_graphic_dark.svg
@@ -1 +1 @@ -<svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M24 48c13.255 0 24-10.745 24-24S37.255 0 24 0 0 10.745 0 24s10.745 24 24 24z" fill="#3C4043"/><path d="M33 16.207v6.359C33 28.68 29.169 34.322 24 36c-5.169-1.678-9-7.32-9-13.434v-6.359L24 12l9 4.207z" fill="#3C4043" stroke="#BDC1C6" stroke-linecap="round"/><path d="M24 2v6.947m13.919 1.134l-3.275 3.275M13.356 34.644l-3.275 3.275m27.838 0l-3.275-3.275M13.356 13.356l-3.275-3.275M46 24h-6.947M8.947 24H2m22 22v-6.947" stroke="#1E8E3E"/><path d="M24 12v12h-8.93c-.046-.474-.07-.953-.07-1.434v-6.359L24 12zm8.93 12c-.542 5.545-4.168 10.455-8.93 12V24h8.93z" fill="#BDC1C6"/><path d="M33 16.207v6.359C33 28.68 29.169 34.322 24 36c-5.169-1.678-9-7.32-9-13.434v-6.359L24 12l9 4.207z" stroke="#BDC1C6" stroke-linejoin="round"/></svg> \ No newline at end of file +<svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M24 48c13.255 0 24-10.745 24-24S37.255 0 24 0 0 10.745 0 24s10.745 24 24 24z" fill="#3C4043"/><path d="M33 16.207v6.359C33 28.68 29.169 34.322 24 36c-5.169-1.678-9-7.32-9-13.434v-6.359L24 12l9 4.207z" fill="#3C4043" stroke="#BDC1C6" stroke-linecap="round"/><path d="M24 2v6.947m13.919 1.134-3.275 3.275M13.356 34.644l-3.275 3.275m27.838 0-3.275-3.275M13.356 13.356l-3.275-3.275M46 24h-6.947M8.947 24H2m22 22v-6.947" stroke="#1E8E3E"/><path d="M24 12v12h-8.93c-.046-.474-.07-.953-.07-1.434v-6.359L24 12zm8.93 12c-.542 5.545-4.168 10.455-8.93 12V24h8.93z" fill="#BDC1C6"/><path d="M33 16.207v6.359C33 28.68 29.169 34.322 24 36c-5.169-1.678-9-7.32-9-13.434v-6.359L24 12l9 4.207z" stroke="#BDC1C6" stroke-linejoin="round"/></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/images/privacy_guide/safe_browsing_graphic_dark_v2.svg b/chrome/browser/resources/settings/images/privacy_guide/safe_browsing_graphic_dark_v2.svg index 84e1ad4..b348e9f 100644 --- a/chrome/browser/resources/settings/images/privacy_guide/safe_browsing_graphic_dark_v2.svg +++ b/chrome/browser/resources/settings/images/privacy_guide/safe_browsing_graphic_dark_v2.svg
@@ -1 +1 @@ -<svg width="360" height="100" viewBox="0 0 360 100" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M205.211 44.154V61.01c0 16.21-10.688 31.166-25.105 35.613C165.687 92.175 155 77.22 155 61.01V44.154L180.105 33l25.106 11.154z" stroke="#4285F4" stroke-width="2" stroke-linecap="round"/><path d="M198 50.064v12.187c0 11.72-7.663 22.534-18 25.749-10.337-3.216-18-14.028-18-25.749V50.064L180 42l18 8.064z" fill="#1E8E3E"/><path d="M180 8.5V18m51 41.5h-9.5m-83 0H129m87.062-36.062l-6.717 6.717m-58.69 0l-6.717-6.718" stroke="#FDD663" stroke-width="2"/></svg> \ No newline at end of file +<svg width="360" height="100" viewBox="0 0 360 100" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M205.211 44.154V61.01c0 16.21-10.688 31.166-25.105 35.613C165.687 92.175 155 77.22 155 61.01V44.154L180.105 33l25.106 11.154z" stroke="#4285F4" stroke-width="2" stroke-linecap="round"/><path d="M198 50.064v12.187c0 11.72-7.663 22.534-18 25.749-10.337-3.216-18-14.028-18-25.749V50.064L180 42l18 8.064z" fill="#1E8E3E"/><path d="M180 8.5V18m51 41.5h-9.5m-83 0H129m87.062-36.062-6.717 6.717m-58.69 0-6.717-6.718" stroke="#FDD663" stroke-width="2"/></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/images/privacy_guide/safe_browsing_graphic_v2.svg b/chrome/browser/resources/settings/images/privacy_guide/safe_browsing_graphic_v2.svg index b191ebd6..0250545a 100644 --- a/chrome/browser/resources/settings/images/privacy_guide/safe_browsing_graphic_v2.svg +++ b/chrome/browser/resources/settings/images/privacy_guide/safe_browsing_graphic_v2.svg
@@ -1 +1 @@ -<svg width="360" height="100" viewBox="0 0 360 100" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M205.211 44.154V61.01c0 16.21-10.688 31.166-25.105 35.613C165.687 92.175 155 77.22 155 61.01V44.154L180.105 33l25.106 11.154z" stroke="#4285F4" stroke-width="2" stroke-linecap="round"/><path d="M198 50.064v12.187c0 11.72-7.663 22.534-18 25.749-10.337-3.216-18-14.028-18-25.749V50.064L180 42l18 8.064z" fill="#81C995"/><path d="M180 8.5V18m51 41.5h-9.5m-83 0H129m87.062-36.062l-6.717 6.717m-58.69 0l-6.717-6.718" stroke="#FBBC04" stroke-width="2"/></svg> \ No newline at end of file +<svg width="360" height="100" viewBox="0 0 360 100" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M205.211 44.154V61.01c0 16.21-10.688 31.166-25.105 35.613C165.687 92.175 155 77.22 155 61.01V44.154L180.105 33l25.106 11.154z" stroke="#4285F4" stroke-width="2" stroke-linecap="round"/><path d="M198 50.064v12.187c0 11.72-7.663 22.534-18 25.749-10.337-3.216-18-14.028-18-25.749V50.064L180 42l18 8.064z" fill="#81C995"/><path d="M180 8.5V18m51 41.5h-9.5m-83 0H129m87.062-36.062-6.717 6.717m-58.69 0-6.717-6.718" stroke="#FBBC04" stroke-width="2"/></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/images/privacy_guide/waa_graphic.svg b/chrome/browser/resources/settings/images/privacy_guide/waa_graphic.svg index 02aee3499..80ad670e 100644 --- a/chrome/browser/resources/settings/images/privacy_guide/waa_graphic.svg +++ b/chrome/browser/resources/settings/images/privacy_guide/waa_graphic.svg
@@ -1 +1 @@ -<svg width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M20 40c11.046 0 20-8.954 20-20S31.046 0 20 0 0 8.954 0 20s8.954 20 20 20z" fill="#E8EAED"/><path d="M10 13a3 3 0 0 1 3-3h14a3 3 0 0 1 3 3v14a3 3 0 0 1-3 3H13a3 3 0 0 1-3-3V13z" fill="#AECBFA"/><circle cx="20" cy="20" r="7.5" stroke="#E8EAED"/><path fill-rule="evenodd" clip-rule="evenodd" d="M27 11H13a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V13a2 2 0 0 0-2-2zm-14-1a3 3 0 0 0-3 3v14a3 3 0 0 0 3 3h14a3 3 0 0 0 3-3V13a3 3 0 0 0-3-3H13z" fill="#80868B"/><path d="M32.535 14l3.536 3.535-3.535 3.536" stroke="#80868B"/><path fill="#80868B" d="M31 17h5v1h-5zm-4 0h1v1h-1zm-2 0h1v1h-1z"/><path d="M7.5 25.035L3.964 21.5 7.5 17.964" stroke="#80868B"/><path fill="#80868B" d="M9 22H4v-1h5zm4 0h-1v-1h1zm2 0h-1v-1h1z"/></svg> \ No newline at end of file +<svg width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M20 40c11.046 0 20-8.954 20-20S31.046 0 20 0 0 8.954 0 20s8.954 20 20 20z" fill="#E8EAED"/><path d="M10 13a3 3 0 0 1 3-3h14a3 3 0 0 1 3 3v14a3 3 0 0 1-3 3H13a3 3 0 0 1-3-3V13z" fill="#AECBFA"/><circle cx="20" cy="20" r="7.5" stroke="#E8EAED"/><path fill-rule="evenodd" clip-rule="evenodd" d="M27 11H13a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V13a2 2 0 0 0-2-2zm-14-1a3 3 0 0 0-3 3v14a3 3 0 0 0 3 3h14a3 3 0 0 0 3-3V13a3 3 0 0 0-3-3H13z" fill="#80868B"/><path d="m32.535 14 3.536 3.535-3.535 3.536" stroke="#80868B"/><path fill="#80868B" d="M31 17h5v1h-5zm-4 0h1v1h-1zm-2 0h1v1h-1z"/><path d="M7.5 25.035 3.964 21.5 7.5 17.964" stroke="#80868B"/><path fill="#80868B" d="M9 22H4v-1h5zm4 0h-1v-1h1zm2 0h-1v-1h1z"/></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/images/privacy_guide/waa_graphic_dark.svg b/chrome/browser/resources/settings/images/privacy_guide/waa_graphic_dark.svg index 9f32ca6..c4f2bdc 100644 --- a/chrome/browser/resources/settings/images/privacy_guide/waa_graphic_dark.svg +++ b/chrome/browser/resources/settings/images/privacy_guide/waa_graphic_dark.svg
@@ -1 +1 @@ -<svg width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M20 40c11.046 0 20-8.954 20-20S31.046 0 20 0 0 8.954 0 20s8.954 20 20 20z" fill="#3C4043"/><path d="M10 13a3 3 0 0 1 3-3h14a3 3 0 0 1 3 3v14a3 3 0 0 1-3 3H13a3 3 0 0 1-3-3V13z" fill="#1967D2"/><path fill-rule="evenodd" clip-rule="evenodd" d="M27 11H13a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V13a2 2 0 0 0-2-2zm-14-1a3 3 0 0 0-3 3v14a3 3 0 0 0 3 3h14a3 3 0 0 0 3-3V13a3 3 0 0 0-3-3H13z" fill="#BDC1C6"/><circle cx="20" cy="20" r="7.5" stroke="#3C4043"/><path d="M32.535 14l3.536 3.535-3.535 3.536" stroke="#BDC1C6"/><path fill="#BDC1C6" d="M31 17h5v1h-5zm-4 0h1v1h-1zm-2 0h1v1h-1z"/><path d="M7.5 25.035L3.964 21.5 7.5 17.964" stroke="#BDC1C6"/><path fill="#BDC1C6" d="M9 22H4v-1h5zm4 0h-1v-1h1zm2 0h-1v-1h1z"/></svg> \ No newline at end of file +<svg width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M20 40c11.046 0 20-8.954 20-20S31.046 0 20 0 0 8.954 0 20s8.954 20 20 20z" fill="#3C4043"/><path d="M10 13a3 3 0 0 1 3-3h14a3 3 0 0 1 3 3v14a3 3 0 0 1-3 3H13a3 3 0 0 1-3-3V13z" fill="#1967D2"/><path fill-rule="evenodd" clip-rule="evenodd" d="M27 11H13a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V13a2 2 0 0 0-2-2zm-14-1a3 3 0 0 0-3 3v14a3 3 0 0 0 3 3h14a3 3 0 0 0 3-3V13a3 3 0 0 0-3-3H13z" fill="#BDC1C6"/><circle cx="20" cy="20" r="7.5" stroke="#3C4043"/><path d="m32.535 14 3.536 3.535-3.535 3.536" stroke="#BDC1C6"/><path fill="#BDC1C6" d="M31 17h5v1h-5zm-4 0h1v1h-1zm-2 0h1v1h-1z"/><path d="M7.5 25.035 3.964 21.5 7.5 17.964" stroke="#BDC1C6"/><path fill="#BDC1C6" d="M9 22H4v-1h5zm4 0h-1v-1h1zm2 0h-1v-1h1z"/></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/images/privacy_guide/welcome_banner.svg b/chrome/browser/resources/settings/images/privacy_guide/welcome_banner.svg index b5b40d0..f3f2f62a 100644 --- a/chrome/browser/resources/settings/images/privacy_guide/welcome_banner.svg +++ b/chrome/browser/resources/settings/images/privacy_guide/welcome_banner.svg
@@ -1 +1 @@ -<svg width="300" height="180" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 300 180"><defs><linearGradient id="a" x1="-7.735" y1="67.317" x2="-7.735" y2="183" gradientTransform="matrix(1 0 0 -1 204 189)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#d6e7fb"/><stop offset="1" stop-color="#fff"/></linearGradient><linearGradient id="b" x1="-8.511" y1="72.935" x2="-8.511" y2="15.174" gradientTransform="matrix(1 0 0 -1 204 189)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#ceead6"/><stop offset="1" stop-color="#fff"/></linearGradient><linearGradient id="c" x1="70.073" y1="59.446" x2="-193.028" y2="59.446" gradientTransform="matrix(1 0 0 -1 204 189)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#8ab4f8" stop-opacity="0"/><stop offset=".156" stop-color="#8ab4f8"/><stop offset=".854" stop-color="#8ab4f8"/><stop offset="1" stop-color="#8ab4f8" stop-opacity="0"/></linearGradient></defs><path d="M82.248 130.396l2.276-1.065a2.071 2.071 0 0 0 1.778 1.632 5.447 5.447 0 0 0 2.371-.211.968.968 0 0 1 1.133.493l.2.388-6.7 3.346a12.26 12.26 0 0 1-.735-2.288 18.946 18.946 0 0 1-.323-2.295zm-16.883 2.812l-1.104 3.253 6.873.038a.384.384 0 0 0 .385-.405.407.407 0 0 0-.345-.372 4.586 4.586 0 0 1-2.185-1.011 1.533 1.533 0 0 1-.253-1.662l-1.989-.566a1.132 1.132 0 0 0-1.382.725z" fill="#8ab4f8"/><path d="M81.653 130.824l3.813-1.617-3.813-8.99a2.062 2.062 0 0 0-.59-.77l.044.021-5.674-5.178.954-2.7-7.42-1.054-.17 2.07a5.228 5.228 0 0 0 1.411 4.04L64.7 132.244l3.906 1.38 5.073-14.364 4.39 3.116zm-.737-11.446" fill="#1976d2"/><path d="M87.246 108a1.592 1.592 0 0 0-1.495-.263l.322-1.26-5.534-1.417-1.295-3.106a7.921 7.921 0 0 0-2.685-3.377l.591-.676-1.129-.706.396-.81.279.226a1.405 1.405 0 0 0 2.234-.717l.109-.39a.332.332 0 0 0 .16-.571l.2-.72a1.642 1.642 0 0 0-1.01-1.98l-1.968-.733-.975 3.013-.8 1.822-1.117-.698-.63 1.35a2.466 2.466 0 0 0-2.372 1.002.554.554 0 0 0-.013.048l-10.646 12.662.841.707a8.336 8.336 0 0 0-.65.807 7.382 7.382 0 0 0-1.027 1.852l.5.234.725-.635.652.457.96-1.74 1.17.984 6.116-7.277a661.894 661.894 0 0 0-.694 4.804l8.076 2.93a16.28 16.28 0 0 0 1.361-5.29 2.05 2.05 0 0 0 .613.284l6.534 1.674.265-1.035 1.322-.338.39.784.888-.438a2.26 2.26 0 0 0-.664-1.463z" fill="#669df6"/><path d="M253.736 126.416a170.005 170.005 0 0 0-58.652-10.35c-20.247 0-39.252 3.148-57.842 7.168a101.083 101.083 0 0 1-4.044-10.036 94.31 94.31 0 0 1-5.114-30.839V31.172l68.18-25.174 68.181 25.174v51.187a94.331 94.331 0 0 1-5.114 30.839 98.688 98.688 0 0 1-5.595 13.218z" fill="url(#a)"/><path d="M169.099 161.448a78.888 78.888 0 0 0 27.165 12.378 78.89 78.89 0 0 0 27.166-12.378 95.931 95.931 0 0 0 21.626-21.083 98.6 98.6 0 0 0 8.68-13.95 169.979 169.979 0 0 0-58.652-10.35c-20.247 0-39.252 3.148-57.842 7.169q1.065 2.283 2.245 4.513a96.979 96.979 0 0 0 7.985 12.618 95.943 95.943 0 0 0 21.627 21.083z" fill="url(#b)"/><path d="M41.727 99.89l-.937-.147a2.46 2.46 0 0 0-2.813 2.05l-.58 3.698a3.391 3.391 0 0 1-3.63 1.39l-.238.972a4.131 4.131 0 0 0 3.611-.724l-.72 4.587a2.46 2.46 0 0 0 2.05 2.812l.937.148a2.46 2.46 0 0 0 2.813-2.05l1.557-9.924a2.46 2.46 0 0 0-2.05-2.812z" fill="#1976d2"/><path d="M37.682 106.107l4.452-4.288 3.346 3.473-4.452 4.289a7.698 7.698 0 0 0-1.911 2.96l-2.174 6.1-4.543-1.618 2.174-6.1a12.524 12.524 0 0 1 3.108-4.816z" fill="#669df6" fill-rule="evenodd"/><path d="M35.581 117.93l-.327 1.302a1.097 1.097 0 0 1-1.173.824l-1.436-.145 1.24-2.443z" fill="#669df6"/><path d="M53.891 138.785a1.34 1.34 0 0 0-.915-.977l-1.872-.567-3.261-21.982-7.032-2.688-3.421 10.65a2.452 2.452 0 0 1-.699 1.077l-8.502 7.616-.157.097 4.765 5.535a1.482 1.482 0 0 0 .383-1.399l-.453-1.816 7.186-6.435a7.281 7.281 0 0 0 2.075-3.198l1.623-5.055 2.995 20.184.309-.046v.004z" fill="#8ab4f8"/><path d="M55.29 118.602a.65.65 0 0 0-.195-.336l-1.194-1.093.846-.857-6.492-6.404-.327-4.668a3.418 3.418 0 0 0-2.053-3.151l.438-1.156 1.597.197a1.058 1.058 0 0 0 1.18-.92l.21-1.697a1.906 1.906 0 0 0-.83-1.816l-.35-.235a1.891 1.891 0 0 0-2.93 1.212 1.26 1.26 0 0 0 .01 2.165l-.802 1.622-.241-.102a1.773 1.773 0 0 0-2.452 1.436L39 118.068l9.863.534-.162-2.313 3.078 3.036 1.324-1.342.306 1.956.712.239a.65.65 0 0 0 .81-.374l.329-.815a.65.65 0 0 0 .03-.387z" fill="#669df6"/><path d="M51.12 96.1a.757.757 0 0 0-1-.49l-1.109.432a2.046 2.046 0 0 0-2.084-1.02l-.52.076a2.074 2.074 0 0 0-1.773 2.14l.046 1.086 3.582-.789 2.287-.477a.757.757 0 0 0 .57-.957z" fill="#1976d2"/><circle cx="73.095" cy="91.822" r="1.822" transform="rotate(-82.982 73.095 91.822)" fill="#1976d2"/><path d="M76.773 91.117a2.435 2.435 0 0 0-1.694 4.189l3.962-2.63a2.435 2.435 0 0 0-2.268-1.559z" fill="#1976d2"/><path d="M79.339 93.17a1.633 1.633 0 0 0-.95-.938l-1.07-.398a1.287 1.287 0 0 0-.054.267 1.329 1.329 0 0 0 1.328 1.328 1.294 1.294 0 0 0 .746-.258z" fill="#1976d2"/><circle cx="76.768" cy="94.269" r=".758" fill="#669df6"/><path d="M78.086 91.51a3.119 3.119 0 0 1 .968.914 1.448 1.448 0 0 1 .285.747l-.953.001z" fill="#1976d2"/><path d="M264.705 30.468l-25.954-9.583-.52 1.407 25.463 9.402v50.667a93.566 93.566 0 0 1-5.073 30.593l1.42.487a95.065 95.065 0 0 0 5.153-31.082V30.65zM128.834 59.5V31.694l67.43-24.897 20.028 7.395.52-1.407-20.288-7.491-.26-.096-.26.096.26.704-.26-.704-68.18 25.174-.49.181v51.71a95.07 95.07 0 0 0 5.154 31.082l1.42-.487a93.568 93.568 0 0 1-5.074-30.593l-.764-.002h.014l.75.002V59.5zm116.824 81.313l-1.203-.896a95.186 95.186 0 0 1-21.458 20.919l-.002.001a78.132 78.132 0 0 1-26.73 12.213 78.136 78.136 0 0 1-26.732-12.213l-.002-.001a95.19 95.19 0 0 1-21.457-20.919l-1.203.896a96.691 96.691 0 0 0 21.793 21.247h.002v.001a79.64 79.64 0 0 0 27.422 12.494l.176.042.177-.042a79.639 79.639 0 0 0 27.421-12.494h.001l.001-.001a96.686 96.686 0 0 0 21.794-21.247z" fill="#8ab4f8"/><path d="M102 80h104s-6.612-8.873-16.743-10.78c-10.375-1.95-18.486 4.17-18.486 4.17S160.575 59 142.245 59 102 80 102 80zm127-6.138h43.41s-2.76-3.745-6.989-4.549a10.533 10.533 0 0 0-7.716 1.76S253.45 65 245.8 65 229 73.862 229 73.862z" fill="#fff"/><path fill="#8ab4f8" d="M142.19 39.357h40.67v2h-40.67zm0 16.908h40.67v2h-40.67zm0 16.908h40.67v2h-40.67z"/><circle cx="159.688" cy="40.357" r="5.37" fill="#669df6"/><circle cx="142.19" cy="57.265" r="5.37" fill="#669df6"/><circle cx="172.512" cy="74.173" r="5.37" fill="#669df6"/><path d="M234.979 27.956V19.11a8.674 8.674 0 0 0-17.348 0v8.846h-11.287v30.92h39.922v-30.92zm-13.011-8.846a4.337 4.337 0 1 1 8.674 0v8.846h-8.674z" fill="#4bb869"/><path d="M247.016 27.956v30.92h-1.5v-30.92zm-40.672-.75h39.922v1.5h-39.922zm39.922.75v-.75h.75v.75z" fill="#1e8e3e"/><path d="M222.508 40.813a3.796 3.796 0 1 1 4.808 3.643l2.09 5.354h-6.203l2.09-5.354a3.785 3.785 0 0 1-2.785-3.643z" fill="#fff"/><circle cx="235.143" cy="89.826" r="18.143" fill="#fff"/><circle cx="235.143" cy="89.826" r="14.839" transform="rotate(-79.099 235.143 89.826)" fill="#d2e3fc"/><circle cx="235.143" cy="89.826" r="11.268" fill="#fff"/><path d="M264.762 116.462l-8.602-8.602a1.732 1.732 0 0 0-1.926-.357l-4.881-4.881a19.196 19.196 0 1 0-1.414 1.414l4.88 4.881a1.732 1.732 0 0 0 .358 1.926l8.602 8.602a1.736 1.736 0 0 0 2.454 0l.529-.529a1.736 1.736 0 0 0 0-2.454zm-29.62-9.493a17.143 17.143 0 1 1 17.144-17.143 17.143 17.143 0 0 1-17.143 17.143z" fill="#669df6"/><path d="M285.36 143.692c-.349-.267-35.466-26.777-90.543-26.776a237.462 237.462 0 0 0-42.867 4.193c-12.368 2.229-24.656 5.138-36.54 7.951C90.612 134.93 64.97 141 37.817 141h-31v-1.5h31c26.978 0 52.534-6.05 77.248-11.9 11.903-2.817 24.21-5.73 36.62-7.967a238.978 238.978 0 0 1 43.132-4.217c55.613-.001 91.106 26.816 91.457 27.087z" fill="url(#c)"/><path d="M199.93 91.999H157v43.93h43.93v-43.93zm-1 41.93H159v-39.93h39.93z" fill="#f9ab00"/><path fill="#fcc934" d="M162.997 97.996h31.936v31.936h-31.936z"/><path fill="#ea8600" d="M189.161 106.063l-13.68 13.682-6.713-6.714-1.415 1.414 7.42 7.421.708.707.707-.707 14.388-14.389-1.415-1.414z"/><path fill="#1976d2" d="M39.594 110.455zm4.828-7.894a4.979 4.979 0 0 0-1.826-2.011l-.53.848a3.978 3.978 0 0 1 1.859 3.737 6.632 6.632 0 0 1-2.256 3.687 15.135 15.135 0 0 1-1.441 1.197 13.49 13.49 0 0 1-.594.41l-.031.02-.008.005h-.001l.264.425.263.425h.001l.003-.002.011-.007.039-.025.142-.093c.122-.081.294-.2.501-.351a16.115 16.115 0 0 0 1.538-1.278 7.58 7.58 0 0 0 2.563-4.308l.001-.009a4.98 4.98 0 0 0-.498-2.67z"/><path fill="#669df6" d="M41.238 109.112l-1.382 1.897-.422-.644.855-1.253h.949z"/></svg> \ No newline at end of file +<svg width="300" height="180" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 300 180"><defs><linearGradient id="a" x1="-7.735" y1="67.317" x2="-7.735" y2="183" gradientTransform="matrix(1 0 0 -1 204 189)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#d6e7fb"/><stop offset="1" stop-color="#fff"/></linearGradient><linearGradient id="b" x1="-8.511" y1="72.935" x2="-8.511" y2="15.174" gradientTransform="matrix(1 0 0 -1 204 189)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#ceead6"/><stop offset="1" stop-color="#fff"/></linearGradient><linearGradient id="c" x1="70.073" y1="59.446" x2="-193.028" y2="59.446" gradientTransform="matrix(1 0 0 -1 204 189)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#8ab4f8" stop-opacity="0"/><stop offset=".156" stop-color="#8ab4f8"/><stop offset=".854" stop-color="#8ab4f8"/><stop offset="1" stop-color="#8ab4f8" stop-opacity="0"/></linearGradient></defs><path d="m82.248 130.396 2.276-1.065a2.071 2.071 0 0 0 1.778 1.632 5.447 5.447 0 0 0 2.371-.211.968.968 0 0 1 1.133.493l.2.388-6.7 3.346a12.26 12.26 0 0 1-.735-2.288 18.946 18.946 0 0 1-.323-2.295zm-16.883 2.812-1.104 3.253 6.873.038a.384.384 0 0 0 .385-.405.407.407 0 0 0-.345-.372 4.586 4.586 0 0 1-2.185-1.011 1.533 1.533 0 0 1-.253-1.662l-1.989-.566a1.132 1.132 0 0 0-1.382.725z" fill="#8ab4f8"/><path d="m81.653 130.824 3.813-1.617-3.813-8.99a2.062 2.062 0 0 0-.59-.77l.044.021-5.674-5.178.954-2.7-7.42-1.054-.17 2.07a5.228 5.228 0 0 0 1.411 4.04L64.7 132.244l3.906 1.38 5.073-14.364 4.39 3.116zm-.737-11.446" fill="#1976d2"/><path d="M87.246 108a1.592 1.592 0 0 0-1.495-.263l.322-1.26-5.534-1.417-1.295-3.106a7.921 7.921 0 0 0-2.685-3.377l.591-.676-1.129-.706.396-.81.279.226a1.405 1.405 0 0 0 2.234-.717l.109-.39a.332.332 0 0 0 .16-.571l.2-.72a1.642 1.642 0 0 0-1.01-1.98l-1.968-.733-.975 3.013-.8 1.822-1.117-.698-.63 1.35a2.466 2.466 0 0 0-2.372 1.002.554.554 0 0 0-.013.048l-10.646 12.662.841.707a8.336 8.336 0 0 0-.65.807 7.382 7.382 0 0 0-1.027 1.852l.5.234.725-.635.652.457.96-1.74 1.17.984 6.116-7.277a661.894 661.894 0 0 0-.694 4.804l8.076 2.93a16.28 16.28 0 0 0 1.361-5.29 2.05 2.05 0 0 0 .613.284l6.534 1.674.265-1.035 1.322-.338.39.784.888-.438a2.26 2.26 0 0 0-.664-1.463z" fill="#669df6"/><path d="M253.736 126.416a170.005 170.005 0 0 0-58.652-10.35c-20.247 0-39.252 3.148-57.842 7.168a101.083 101.083 0 0 1-4.044-10.036 94.31 94.31 0 0 1-5.114-30.839V31.172l68.18-25.174 68.181 25.174v51.187a94.331 94.331 0 0 1-5.114 30.839 98.688 98.688 0 0 1-5.595 13.218z" fill="url(#a)"/><path d="M169.099 161.448a78.888 78.888 0 0 0 27.165 12.378 78.89 78.89 0 0 0 27.166-12.378 95.931 95.931 0 0 0 21.626-21.083 98.6 98.6 0 0 0 8.68-13.95 169.979 169.979 0 0 0-58.652-10.35c-20.247 0-39.252 3.148-57.842 7.169q1.065 2.283 2.245 4.513a96.979 96.979 0 0 0 7.985 12.618 95.943 95.943 0 0 0 21.627 21.083z" fill="url(#b)"/><path d="m41.727 99.89-.937-.147a2.46 2.46 0 0 0-2.813 2.05l-.58 3.698a3.391 3.391 0 0 1-3.63 1.39l-.238.972a4.131 4.131 0 0 0 3.611-.724l-.72 4.587a2.46 2.46 0 0 0 2.05 2.812l.937.148a2.46 2.46 0 0 0 2.813-2.05l1.557-9.924a2.46 2.46 0 0 0-2.05-2.812z" fill="#1976d2"/><path d="m37.682 106.107 4.452-4.288 3.346 3.473-4.452 4.289a7.698 7.698 0 0 0-1.911 2.96l-2.174 6.1-4.543-1.618 2.174-6.1a12.524 12.524 0 0 1 3.108-4.816z" fill="#669df6" fill-rule="evenodd"/><path d="m35.581 117.93-.327 1.302a1.097 1.097 0 0 1-1.173.824l-1.436-.145 1.24-2.443z" fill="#669df6"/><path d="M53.891 138.785a1.34 1.34 0 0 0-.915-.977l-1.872-.567-3.261-21.982-7.032-2.688-3.421 10.65a2.452 2.452 0 0 1-.699 1.077l-8.502 7.616-.157.097 4.765 5.535a1.482 1.482 0 0 0 .383-1.399l-.453-1.816 7.186-6.435a7.281 7.281 0 0 0 2.075-3.198l1.623-5.055 2.995 20.184.309-.046v.004z" fill="#8ab4f8"/><path d="M55.29 118.602a.65.65 0 0 0-.195-.336l-1.194-1.093.846-.857-6.492-6.404-.327-4.668a3.418 3.418 0 0 0-2.053-3.151l.438-1.156 1.597.197a1.058 1.058 0 0 0 1.18-.92l.21-1.697a1.906 1.906 0 0 0-.83-1.816l-.35-.235a1.891 1.891 0 0 0-2.93 1.212 1.26 1.26 0 0 0 .01 2.165l-.802 1.622-.241-.102a1.773 1.773 0 0 0-2.452 1.436L39 118.068l9.863.534-.162-2.313 3.078 3.036 1.324-1.342.306 1.956.712.239a.65.65 0 0 0 .81-.374l.329-.815a.65.65 0 0 0 .03-.387z" fill="#669df6"/><path d="M51.12 96.1a.757.757 0 0 0-1-.49l-1.109.432a2.046 2.046 0 0 0-2.084-1.02l-.52.076a2.074 2.074 0 0 0-1.773 2.14l.046 1.086 3.582-.789 2.287-.477a.757.757 0 0 0 .57-.957z" fill="#1976d2"/><circle cx="73.095" cy="91.822" r="1.822" transform="rotate(-82.982 73.095 91.822)" fill="#1976d2"/><path d="M76.773 91.117a2.435 2.435 0 0 0-1.694 4.189l3.962-2.63a2.435 2.435 0 0 0-2.268-1.559z" fill="#1976d2"/><path d="M79.339 93.17a1.633 1.633 0 0 0-.95-.938l-1.07-.398a1.287 1.287 0 0 0-.054.267 1.329 1.329 0 0 0 1.328 1.328 1.294 1.294 0 0 0 .746-.258z" fill="#1976d2"/><circle cx="76.768" cy="94.269" r=".758" fill="#669df6"/><path d="M78.086 91.51a3.119 3.119 0 0 1 .968.914 1.448 1.448 0 0 1 .285.747l-.953.001z" fill="#1976d2"/><path d="m264.705 30.468-25.954-9.583-.52 1.407 25.463 9.402v50.667a93.566 93.566 0 0 1-5.073 30.593l1.42.487a95.065 95.065 0 0 0 5.153-31.082V30.65zM128.834 59.5V31.694l67.43-24.897 20.028 7.395.52-1.407-20.288-7.491-.26-.096-.26.096.26.704-.26-.704-68.18 25.174-.49.181v51.71a95.07 95.07 0 0 0 5.154 31.082l1.42-.487a93.568 93.568 0 0 1-5.074-30.593l-.764-.002h.014l.75.002V59.5zm116.824 81.313-1.203-.896a95.186 95.186 0 0 1-21.458 20.919l-.002.001a78.132 78.132 0 0 1-26.73 12.213 78.136 78.136 0 0 1-26.732-12.213l-.002-.001a95.19 95.19 0 0 1-21.457-20.919l-1.203.896a96.691 96.691 0 0 0 21.793 21.247h.002v.001a79.64 79.64 0 0 0 27.422 12.494l.176.042.177-.042a79.639 79.639 0 0 0 27.421-12.494h.001l.001-.001a96.686 96.686 0 0 0 21.794-21.247z" fill="#8ab4f8"/><path d="M102 80h104s-6.612-8.873-16.743-10.78c-10.375-1.95-18.486 4.17-18.486 4.17S160.575 59 142.245 59 102 80 102 80zm127-6.138h43.41s-2.76-3.745-6.989-4.549a10.533 10.533 0 0 0-7.716 1.76S253.45 65 245.8 65 229 73.862 229 73.862z" fill="#fff"/><path fill="#8ab4f8" d="M142.19 39.357h40.67v2h-40.67zm0 16.908h40.67v2h-40.67zm0 16.908h40.67v2h-40.67z"/><circle cx="159.688" cy="40.357" r="5.37" fill="#669df6"/><circle cx="142.19" cy="57.265" r="5.37" fill="#669df6"/><circle cx="172.512" cy="74.173" r="5.37" fill="#669df6"/><path d="M234.979 27.956V19.11a8.674 8.674 0 0 0-17.348 0v8.846h-11.287v30.92h39.922v-30.92zm-13.011-8.846a4.337 4.337 0 1 1 8.674 0v8.846h-8.674z" fill="#4bb869"/><path d="M247.016 27.956v30.92h-1.5v-30.92zm-40.672-.75h39.922v1.5h-39.922zm39.922.75v-.75h.75v.75z" fill="#1e8e3e"/><path d="M222.508 40.813a3.796 3.796 0 1 1 4.808 3.643l2.09 5.354h-6.203l2.09-5.354a3.785 3.785 0 0 1-2.785-3.643z" fill="#fff"/><circle cx="235.143" cy="89.826" r="18.143" fill="#fff"/><circle cx="235.143" cy="89.826" r="14.839" transform="rotate(-79.099 235.143 89.826)" fill="#d2e3fc"/><circle cx="235.143" cy="89.826" r="11.268" fill="#fff"/><path d="m264.762 116.462-8.602-8.602a1.732 1.732 0 0 0-1.926-.357l-4.881-4.881a19.196 19.196 0 1 0-1.414 1.414l4.88 4.881a1.732 1.732 0 0 0 .358 1.926l8.602 8.602a1.736 1.736 0 0 0 2.454 0l.529-.529a1.736 1.736 0 0 0 0-2.454zm-29.62-9.493a17.143 17.143 0 1 1 17.144-17.143 17.143 17.143 0 0 1-17.143 17.143z" fill="#669df6"/><path d="M285.36 143.692c-.349-.267-35.466-26.777-90.543-26.776a237.462 237.462 0 0 0-42.867 4.193c-12.368 2.229-24.656 5.138-36.54 7.951C90.612 134.93 64.97 141 37.817 141h-31v-1.5h31c26.978 0 52.534-6.05 77.248-11.9 11.903-2.817 24.21-5.73 36.62-7.967a238.978 238.978 0 0 1 43.132-4.217c55.613-.001 91.106 26.816 91.457 27.087z" fill="url(#c)"/><path d="M199.93 91.999H157v43.93h43.93v-43.93zm-1 41.93H159v-39.93h39.93z" fill="#f9ab00"/><path fill="#fcc934" d="M162.997 97.996h31.936v31.936h-31.936z"/><path fill="#ea8600" d="m189.161 106.063-13.68 13.682-6.713-6.714-1.415 1.414 7.42 7.421.708.707.707-.707 14.388-14.389-1.415-1.414z"/><path fill="#1976d2" d="M39.594 110.455zm4.828-7.894a4.979 4.979 0 0 0-1.826-2.011l-.53.848a3.978 3.978 0 0 1 1.859 3.737 6.632 6.632 0 0 1-2.256 3.687 15.135 15.135 0 0 1-1.441 1.197 13.49 13.49 0 0 1-.594.41l-.031.02-.008.005h-.001l.264.425.263.425h.001l.003-.002.011-.007.039-.025.142-.093c.122-.081.294-.2.501-.351a16.115 16.115 0 0 0 1.538-1.278 7.58 7.58 0 0 0 2.563-4.308l.001-.009a4.98 4.98 0 0 0-.498-2.67z"/><path fill="#669df6" d="m41.238 109.112-1.382 1.897-.422-.644.855-1.253h.949z"/></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/images/privacy_guide/welcome_banner_dark.svg b/chrome/browser/resources/settings/images/privacy_guide/welcome_banner_dark.svg index 8bd79d7..6929255 100644 --- a/chrome/browser/resources/settings/images/privacy_guide/welcome_banner_dark.svg +++ b/chrome/browser/resources/settings/images/privacy_guide/welcome_banner_dark.svg
@@ -1 +1 @@ -<svg width="300" height="180" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 300 180"><defs><linearGradient id="a" x1="-7.82" y1="-413.995" x2="-7.82" y2="-298.312" gradientTransform="matrix(1 0 0 -1 204 -292.314)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#174ea6"/><stop offset="1" stop-color="#202124"/></linearGradient><linearGradient id="b" x1="-8.753" y1="-408.31" x2="-8.753" y2="-466.07" gradientTransform="matrix(1 0 0 -1 204 -292.314)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#202124"/><stop offset="1" stop-color="#188038"/></linearGradient><linearGradient id="c" x1="70.256" y1="-421.766" x2="-192.845" y2="-421.766" gradientTransform="matrix(1 0 0 -1 204 -292.314)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#174ea6" stop-opacity="0"/><stop offset=".156" stop-color="#185abc"/><stop offset=".854" stop-color="#185abc"/><stop offset="1" stop-color="#174ea6" stop-opacity="0"/></linearGradient></defs><path d="M35.581 117.93l-.327 1.302a1.097 1.097 0 0 1-1.173.824l-1.436-.145 1.24-2.443z" fill="#669df6"/><path d="M253.652 126.413A170.001 170.001 0 0 0 195 116.063c-20.247 0-39.252 3.148-57.842 7.168a100.913 100.913 0 0 1-4.044-10.036A94.33 94.33 0 0 1 128 82.357V31.17l68.18-25.175 68.18 25.175v51.187a94.31 94.31 0 0 1-5.113 30.838 98.57 98.57 0 0 1-5.595 13.218z" fill="url(#a)"/><path d="M168.857 161.378a78.903 78.903 0 0 0 27.166 12.378 78.907 78.907 0 0 0 27.165-12.378 95.914 95.914 0 0 0 21.626-21.083 98.636 98.636 0 0 0 8.68-13.949 169.971 169.971 0 0 0-58.652-10.35c-20.247 0-39.252 3.147-57.842 7.168q1.066 2.283 2.245 4.513a96.97 96.97 0 0 0 7.986 12.618 95.935 95.935 0 0 0 21.626 21.083z" fill="url(#b)"/><path d="M53.79 117.067l1.306 1.194a.65.65 0 0 1 .164.723l-.329.815a.65.65 0 0 1-.81.374l-.712-.239-.313-1.999zm-8.112-18.194l-1.595 3.222 1.531.68 1.017-2.682z" fill="#4285f4"/><path d="M38.47 114.523l.938.147a2.46 2.46 0 0 0 2.812-2.049l1.557-9.924a2.46 2.46 0 0 0-2.05-2.812l-.937-.147a2.46 2.46 0 0 0-2.813 2.05l-1.557 9.924a2.46 2.46 0 0 0 2.05 2.811z" fill="#174ea6"/><path d="M39.172 103.166s-1.493 5.18-5.525 4.195" fill="none" stroke="#174ea6" stroke-miterlimit="10"/><path d="M46.938 108.608l7.809 7.703-2.968 3.01-7.809-7.704zm-9.256-2.506l4.452-4.288 3.346 3.473-4.452 4.29a7.702 7.702 0 0 0-1.911 2.96l-2.174 6.1-4.543-1.619 2.174-6.1a12.522 12.522 0 0 1 3.108-4.816z" fill="#4285f4" fill-rule="evenodd"/><path d="M44.739 106.692a2.408 2.408 0 1 0-2.408-2.408 2.408 2.408 0 0 0 2.408 2.408zm-9.158 11.233l-.327 1.302a1.098 1.098 0 0 1-1.173.824l-1.436-.145 1.24-2.443zm10.312-17.861a1.312 1.312 0 1 0-1.311-1.311 1.312 1.312 0 0 0 1.31 1.311z" fill="#4285f4"/><path d="M46.592 98.826a1.783 1.783 0 1 0-1.783-1.783 1.783 1.783 0 0 0 1.783 1.783z" fill="#4285f4"/><path d="M43.11 113.304l-3.421 10.651a4.86 4.86 0 0 1-1.387 2.137l-8.613 7.714" fill="none" stroke="#1967d2" stroke-linejoin="round" stroke-width="4.829"/><path d="M45.454 115.608l3.54 23.86" fill="none" stroke="#1967d2" stroke-miterlimit="10" stroke-width="4.829"/><path d="M53.891 138.78l-6.976 1.001.024-4.215 3.16-.488.32 1.95 2.557.775a1.34 1.34 0 0 1 .915.977zm-21.094-1.239l-4.765-5.535 3.852-2.398 2.26 2.598-1.594 1.41.63 2.526a1.48 1.48 0 0 1-.383 1.4z" fill="#1967d2"/><path d="M48.862 118.597L39 118.063l2.704-15.269a1.773 1.773 0 0 1 2.452-1.435l1.678.708a3.427 3.427 0 0 1 2.094 3.172z" fill="#4285f4"/><path d="M42.331 100.97a4.479 4.479 0 0 1 2.092 4.211c-.34 3.073-4.566 5.694-4.566 5.694" fill="none" stroke="#174ea6" stroke-miterlimit="10"/><path d="M41.238 109.107l-1.382 1.897-.422-.644.855-1.253zM49.3 98.513l-.21 1.696a1.056 1.056 0 0 1-1.18.92l-1.651-.204-.942-2.102a1.906 1.906 0 0 1 .996-2.534 1.907 1.907 0 0 1 1.806.172l.35.235a1.906 1.906 0 0 1 .83 1.817z" fill="#4285f4"/><path d="M49.3 97.302l-4.62 1.017-.046-1.086a2.074 2.074 0 0 1 1.773-2.14l.52-.076a2.074 2.074 0 0 1 2.373 2.047z" fill="#174ea6"/><path d="M48.315 96.309l1.805-.703a.757.757 0 0 1 1 .49.757.757 0 0 1-.571.957l-4.4.918z" fill="#174ea6"/><path d="M82.248 130.391l2.276-1.065a2.07 2.07 0 0 0 1.778 1.632 5.456 5.456 0 0 0 2.371-.21.968.968 0 0 1 1.133.492l.2.388-6.7 3.346a12.246 12.246 0 0 1-.735-2.288 18.985 18.985 0 0 1-.323-2.295zm-16.883 2.812l-1.104 3.253 6.873.038a.384.384 0 0 0 .385-.405.408.408 0 0 0-.345-.372 4.585 4.585 0 0 1-2.185-1.01 1.534 1.534 0 0 1-.253-1.663l-1.989-.566a1.131 1.131 0 0 0-1.382.725z" fill="#1967d2"/><path d="M62.154 111.86l-1.244 2.256-.652-.457-.726.635-.5-.234a7.375 7.375 0 0 1 1.028-1.852 8.363 8.363 0 0 1 1.092-1.273zm23.566-4.122a1.609 1.609 0 0 1 1.526.257 2.26 2.26 0 0 1 .664 1.463l-.888.438-.39-.784-1.737.445zM74.436 96.81l1.074-2.447 1.347 1.117-1.343 2.748z" fill="#4285f4"/><path d="M71.031 110.701l-.17 2.07a3.236 3.236 0 0 0 1.354 2.904l7.532 5.345 3.813 8.99" fill="none" stroke="#174ea6" stroke-linejoin="round" stroke-width="4.142"/><path d="M75.166 95.374l1.53 1.232a1.405 1.405 0 0 0 2.234-.716l.47-1.683a1.642 1.642 0 0 0-1.01-1.98l-1.969-.732z" fill="#4285f4"/><path d="M74.434 110.896l-7.781 22.032" fill="none" stroke="#174ea6" stroke-linejoin="round" stroke-width="4.142"/><path d="M72.958 112.026l8.15 7.437-8.716-4.13zm.137-18.387a1.822 1.822 0 1 0-1.822-1.822 1.822 1.822 0 0 0 1.822 1.822z" fill="#174ea6"/><path d="M76.773 91.113a2.435 2.435 0 0 0-1.694 4.188l3.962-2.63a2.434 2.434 0 0 0-2.268-1.558z" fill="#174ea6"/><path d="M72.395 97.09a7.924 7.924 0 0 1 6.85 4.86l1.295 3.105 5.534 1.417-1.028 4.013-6.534-1.674a2.07 2.07 0 0 1-1.398-1.209l-1.692-4.059a3.785 3.785 0 0 0-2.329-2.143l-10.055 11.96-3.17-2.666 10.82-12.87 1.586 1.333z" fill="#4285f4" fill-rule="evenodd"/><path d="M68.462 110.887l8.075 2.93a16.284 16.284 0 0 0 1.405-7.484 26.938 26.938 0 0 0-1.662-7.442l.87-.995-3.62-2.263-.63 1.349a2.466 2.466 0 0 0-2.372 1.003c-.459 1.417-2.066 12.902-2.066 12.902zm10.506-15.372a.34.34 0 1 0-.34-.34.34.34 0 0 0 .34.34z" fill="#4285f4"/><path d="M79.339 93.166a1.633 1.633 0 0 0-.95-.939l-1.07-.398a1.28 1.28 0 0 0-.054.267 1.329 1.329 0 0 0 1.328 1.328 1.295 1.295 0 0 0 .746-.258z" fill="#174ea6"/><path d="M76.768 95.023a.758.758 0 1 0-.758-.758.758.758 0 0 0 .758.758z" fill="#4285f4"/><path d="M78.087 91.505a3.12 3.12 0 0 1 .967.914 1.45 1.45 0 0 1 .285.747l-.952.001z" fill="#174ea6"/><path d="M286 142.995s-35-26.933-91-26.932a240.879 240.879 0 0 0-43 4.205c-38.303 6.904-73.997 19.88-114 19.88H7" fill="none" stroke-miterlimit="10" stroke-width="1.5" stroke="url(#c)"/><path d="M238.49 21.584l25.955 9.583v51.188a94.312 94.312 0 0 1-5.114 30.838m-126.133 0a94.31 94.31 0 0 1-5.113-30.838V31.167l68.18-25.174 20.287 7.49m28.504 126.877a95.893 95.893 0 0 1-21.626 21.083 78.903 78.903 0 0 1-27.166 12.378 78.907 78.907 0 0 1-27.165-12.378 95.914 95.914 0 0 1-21.626-21.083" fill="none" stroke="#1967d2" stroke-miterlimit="10" stroke-width="1.5"/><path d="M102 79.995h104s-6.611-8.873-16.743-10.779c-10.375-1.951-18.486 4.17-18.486 4.17s-10.196-14.39-28.526-14.39-40.245 21-40.245 21zm127-6.138h43.41s-2.76-3.744-6.988-4.549a10.536 10.536 0 0 0-7.717 1.76s-4.255-6.073-11.906-6.073S229 73.857 229 73.857z" fill="#174ea6"/><path d="M158 134.924h41.93v-41.93H158z" fill="none" stroke="#ea8600" stroke-miterlimit="10" stroke-width="2"/><path d="M194.933 97.992h-31.936v31.935h31.936z" fill="#ea8600"/><path d="M168.06 113.733l7.42 7.421 14.389-14.389" fill="none" stroke="#fcc934" stroke-miterlimit="10" stroke-width="2"/><path d="M182.86 40.353h-40.67m40.67 16.907h-40.67m40.67 16.908h-40.67" fill="none" stroke="#1a73e8" stroke-miterlimit="10" stroke-width="2"/><path d="M159.688 45.723a5.37 5.37 0 1 1 5.37-5.37 5.37 5.37 0 0 1-5.37 5.37zM142.19 62.63a5.37 5.37 0 1 1 5.371-5.37 5.37 5.37 0 0 1-5.371 5.37zm30.322 16.908a5.37 5.37 0 1 1 5.37-5.37 5.37 5.37 0 0 1-5.37 5.37z" fill="#1a73e8"/><path d="M230.642 30.651V19.105a4.337 4.337 0 1 0-8.674 0v11.546h-4.337V19.105a8.674 8.674 0 1 1 17.348 0v11.546z" fill="#188038"/><path d="M206.344 27.951h39.922v30.92h-39.922z" fill="#188038"/><path d="M206.344 27.952h39.922V58.87" fill="none" stroke="#81c995" stroke-miterlimit="10" stroke-width="1.5"/><path d="M222.508 40.809a3.797 3.797 0 1 1 4.808 3.642l2.09 5.355h-6.203l2.09-5.355a3.787 3.787 0 0 1-2.785-3.643z" fill="#174ea6"/><path d="M235.143 107.964a18.143 18.143 0 1 1 18.143-18.142 18.143 18.143 0 0 1-18.143 18.142z" fill="#1967d2" stroke="#669df6" stroke-miterlimit="10" stroke-width="2"/><path d="M235.143 104.661a14.84 14.84 0 1 1 14.839-14.84 14.84 14.84 0 0 1-14.84 14.84z" fill="#185abc"/><path d="M235.143 101.09a11.268 11.268 0 1 1 11.268-11.268 11.268 11.268 0 0 1-11.268 11.267z" fill="#4285f4"/><path d="M256.16 107.855l8.602 8.601a1.738 1.738 0 0 1 0 2.455l-.53.53a1.736 1.736 0 0 1-2.454 0l-8.602-8.603a1.738 1.738 0 0 1 0-2.455l.529-.528a1.736 1.736 0 0 1 2.455 0z" fill="#669df6"/><path d="M248.029 102.707l12.259 12.26" fill="none" stroke="#669df6" stroke-miterlimit="10" stroke-width="2"/></svg> \ No newline at end of file +<svg width="300" height="180" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 300 180"><defs><linearGradient id="a" x1="-7.82" y1="-413.995" x2="-7.82" y2="-298.312" gradientTransform="matrix(1 0 0 -1 204 -292.314)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#174ea6"/><stop offset="1" stop-color="#202124"/></linearGradient><linearGradient id="b" x1="-8.753" y1="-408.31" x2="-8.753" y2="-466.07" gradientTransform="matrix(1 0 0 -1 204 -292.314)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#202124"/><stop offset="1" stop-color="#188038"/></linearGradient><linearGradient id="c" x1="70.256" y1="-421.766" x2="-192.845" y2="-421.766" gradientTransform="matrix(1 0 0 -1 204 -292.314)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#174ea6" stop-opacity="0"/><stop offset=".156" stop-color="#185abc"/><stop offset=".854" stop-color="#185abc"/><stop offset="1" stop-color="#174ea6" stop-opacity="0"/></linearGradient></defs><path d="m35.581 117.93-.327 1.302a1.097 1.097 0 0 1-1.173.824l-1.436-.145 1.24-2.443z" fill="#669df6"/><path d="M253.652 126.413A170.001 170.001 0 0 0 195 116.063c-20.247 0-39.252 3.148-57.842 7.168a100.913 100.913 0 0 1-4.044-10.036A94.33 94.33 0 0 1 128 82.357V31.17l68.18-25.175 68.18 25.175v51.187a94.31 94.31 0 0 1-5.113 30.838 98.57 98.57 0 0 1-5.595 13.218z" fill="url(#a)"/><path d="M168.857 161.378a78.903 78.903 0 0 0 27.166 12.378 78.907 78.907 0 0 0 27.165-12.378 95.914 95.914 0 0 0 21.626-21.083 98.636 98.636 0 0 0 8.68-13.949 169.971 169.971 0 0 0-58.652-10.35c-20.247 0-39.252 3.147-57.842 7.168q1.066 2.283 2.245 4.513a96.97 96.97 0 0 0 7.986 12.618 95.935 95.935 0 0 0 21.626 21.083z" fill="url(#b)"/><path d="m53.79 117.067 1.306 1.194a.65.65 0 0 1 .164.723l-.329.815a.65.65 0 0 1-.81.374l-.712-.239-.313-1.999zm-8.112-18.194-1.595 3.222 1.531.68 1.017-2.682z" fill="#4285f4"/><path d="m38.47 114.523.938.147a2.46 2.46 0 0 0 2.812-2.049l1.557-9.924a2.46 2.46 0 0 0-2.05-2.812l-.937-.147a2.46 2.46 0 0 0-2.813 2.05l-1.557 9.924a2.46 2.46 0 0 0 2.05 2.811z" fill="#174ea6"/><path d="M39.172 103.166s-1.493 5.18-5.525 4.195" fill="none" stroke="#174ea6" stroke-miterlimit="10"/><path d="m46.938 108.608 7.809 7.703-2.968 3.01-7.809-7.704zm-9.256-2.506 4.452-4.288 3.346 3.473-4.452 4.29a7.702 7.702 0 0 0-1.911 2.96l-2.174 6.1-4.543-1.619 2.174-6.1a12.522 12.522 0 0 1 3.108-4.816z" fill="#4285f4" fill-rule="evenodd"/><path d="M44.739 106.692a2.408 2.408 0 1 0-2.408-2.408 2.408 2.408 0 0 0 2.408 2.408zm-9.158 11.233-.327 1.302a1.098 1.098 0 0 1-1.173.824l-1.436-.145 1.24-2.443zm10.312-17.861a1.312 1.312 0 1 0-1.311-1.311 1.312 1.312 0 0 0 1.31 1.311z" fill="#4285f4"/><path d="M46.592 98.826a1.783 1.783 0 1 0-1.783-1.783 1.783 1.783 0 0 0 1.783 1.783z" fill="#4285f4"/><path d="m43.11 113.304-3.421 10.651a4.86 4.86 0 0 1-1.387 2.137l-8.613 7.714" fill="none" stroke="#1967d2" stroke-linejoin="round" stroke-width="4.829"/><path d="m45.454 115.608 3.54 23.86" fill="none" stroke="#1967d2" stroke-miterlimit="10" stroke-width="4.829"/><path d="m53.891 138.78-6.976 1.001.024-4.215 3.16-.488.32 1.95 2.557.775a1.34 1.34 0 0 1 .915.977zm-21.094-1.239-4.765-5.535 3.852-2.398 2.26 2.598-1.594 1.41.63 2.526a1.48 1.48 0 0 1-.383 1.4z" fill="#1967d2"/><path d="M48.862 118.597 39 118.063l2.704-15.269a1.773 1.773 0 0 1 2.452-1.435l1.678.708a3.427 3.427 0 0 1 2.094 3.172z" fill="#4285f4"/><path d="M42.331 100.97a4.479 4.479 0 0 1 2.092 4.211c-.34 3.073-4.566 5.694-4.566 5.694" fill="none" stroke="#174ea6" stroke-miterlimit="10"/><path d="m41.238 109.107-1.382 1.897-.422-.644.855-1.253zM49.3 98.513l-.21 1.696a1.056 1.056 0 0 1-1.18.92l-1.651-.204-.942-2.102a1.906 1.906 0 0 1 .996-2.534 1.907 1.907 0 0 1 1.806.172l.35.235a1.906 1.906 0 0 1 .83 1.817z" fill="#4285f4"/><path d="m49.3 97.302-4.62 1.017-.046-1.086a2.074 2.074 0 0 1 1.773-2.14l.52-.076a2.074 2.074 0 0 1 2.373 2.047z" fill="#174ea6"/><path d="m48.315 96.309 1.805-.703a.757.757 0 0 1 1 .49.757.757 0 0 1-.571.957l-4.4.918z" fill="#174ea6"/><path d="m82.248 130.391 2.276-1.065a2.07 2.07 0 0 0 1.778 1.632 5.456 5.456 0 0 0 2.371-.21.968.968 0 0 1 1.133.492l.2.388-6.7 3.346a12.246 12.246 0 0 1-.735-2.288 18.985 18.985 0 0 1-.323-2.295zm-16.883 2.812-1.104 3.253 6.873.038a.384.384 0 0 0 .385-.405.408.408 0 0 0-.345-.372 4.585 4.585 0 0 1-2.185-1.01 1.534 1.534 0 0 1-.253-1.663l-1.989-.566a1.131 1.131 0 0 0-1.382.725z" fill="#1967d2"/><path d="m62.154 111.86-1.244 2.256-.652-.457-.726.635-.5-.234a7.375 7.375 0 0 1 1.028-1.852 8.363 8.363 0 0 1 1.092-1.273zm23.566-4.122a1.609 1.609 0 0 1 1.526.257 2.26 2.26 0 0 1 .664 1.463l-.888.438-.39-.784-1.737.445zM74.436 96.81l1.074-2.447 1.347 1.117-1.343 2.748z" fill="#4285f4"/><path d="m71.031 110.701-.17 2.07a3.236 3.236 0 0 0 1.354 2.904l7.532 5.345 3.813 8.99" fill="none" stroke="#174ea6" stroke-linejoin="round" stroke-width="4.142"/><path d="m75.166 95.374 1.53 1.232a1.405 1.405 0 0 0 2.234-.716l.47-1.683a1.642 1.642 0 0 0-1.01-1.98l-1.969-.732z" fill="#4285f4"/><path d="m74.434 110.896-7.781 22.032" fill="none" stroke="#174ea6" stroke-linejoin="round" stroke-width="4.142"/><path d="m72.958 112.026 8.15 7.437-8.716-4.13zm.137-18.387a1.822 1.822 0 1 0-1.822-1.822 1.822 1.822 0 0 0 1.822 1.822z" fill="#174ea6"/><path d="M76.773 91.113a2.435 2.435 0 0 0-1.694 4.188l3.962-2.63a2.434 2.434 0 0 0-2.268-1.558z" fill="#174ea6"/><path d="M72.395 97.09a7.924 7.924 0 0 1 6.85 4.86l1.295 3.105 5.534 1.417-1.028 4.013-6.534-1.674a2.07 2.07 0 0 1-1.398-1.209l-1.692-4.059a3.785 3.785 0 0 0-2.329-2.143l-10.055 11.96-3.17-2.666 10.82-12.87 1.586 1.333z" fill="#4285f4" fill-rule="evenodd"/><path d="m68.462 110.887 8.075 2.93a16.284 16.284 0 0 0 1.405-7.484 26.938 26.938 0 0 0-1.662-7.442l.87-.995-3.62-2.263-.63 1.349a2.466 2.466 0 0 0-2.372 1.003c-.459 1.417-2.066 12.902-2.066 12.902zm10.506-15.372a.34.34 0 1 0-.34-.34.34.34 0 0 0 .34.34z" fill="#4285f4"/><path d="M79.339 93.166a1.633 1.633 0 0 0-.95-.939l-1.07-.398a1.28 1.28 0 0 0-.054.267 1.329 1.329 0 0 0 1.328 1.328 1.295 1.295 0 0 0 .746-.258z" fill="#174ea6"/><path d="M76.768 95.023a.758.758 0 1 0-.758-.758.758.758 0 0 0 .758.758z" fill="#4285f4"/><path d="M78.087 91.505a3.12 3.12 0 0 1 .967.914 1.45 1.45 0 0 1 .285.747l-.952.001z" fill="#174ea6"/><path d="M286 142.995s-35-26.933-91-26.932a240.879 240.879 0 0 0-43 4.205c-38.303 6.904-73.997 19.88-114 19.88H7" fill="none" stroke-miterlimit="10" stroke-width="1.5" stroke="url(#c)"/><path d="m238.49 21.584 25.955 9.583v51.188a94.312 94.312 0 0 1-5.114 30.838m-126.133 0a94.31 94.31 0 0 1-5.113-30.838V31.167l68.18-25.174 20.287 7.49m28.504 126.877a95.893 95.893 0 0 1-21.626 21.083 78.903 78.903 0 0 1-27.166 12.378 78.907 78.907 0 0 1-27.165-12.378 95.914 95.914 0 0 1-21.626-21.083" fill="none" stroke="#1967d2" stroke-miterlimit="10" stroke-width="1.5"/><path d="M102 79.995h104s-6.611-8.873-16.743-10.779c-10.375-1.951-18.486 4.17-18.486 4.17s-10.196-14.39-28.526-14.39-40.245 21-40.245 21zm127-6.138h43.41s-2.76-3.744-6.988-4.549a10.536 10.536 0 0 0-7.717 1.76s-4.255-6.073-11.906-6.073S229 73.857 229 73.857z" fill="#174ea6"/><path d="M158 134.924h41.93v-41.93H158z" fill="none" stroke="#ea8600" stroke-miterlimit="10" stroke-width="2"/><path d="M194.933 97.992h-31.936v31.935h31.936z" fill="#ea8600"/><path d="m168.06 113.733 7.42 7.421 14.389-14.389" fill="none" stroke="#fcc934" stroke-miterlimit="10" stroke-width="2"/><path d="M182.86 40.353h-40.67m40.67 16.907h-40.67m40.67 16.908h-40.67" fill="none" stroke="#1a73e8" stroke-miterlimit="10" stroke-width="2"/><path d="M159.688 45.723a5.37 5.37 0 1 1 5.37-5.37 5.37 5.37 0 0 1-5.37 5.37zM142.19 62.63a5.37 5.37 0 1 1 5.371-5.37 5.37 5.37 0 0 1-5.371 5.37zm30.322 16.908a5.37 5.37 0 1 1 5.37-5.37 5.37 5.37 0 0 1-5.37 5.37z" fill="#1a73e8"/><path d="M230.642 30.651V19.105a4.337 4.337 0 1 0-8.674 0v11.546h-4.337V19.105a8.674 8.674 0 1 1 17.348 0v11.546z" fill="#188038"/><path d="M206.344 27.951h39.922v30.92h-39.922z" fill="#188038"/><path d="M206.344 27.952h39.922V58.87" fill="none" stroke="#81c995" stroke-miterlimit="10" stroke-width="1.5"/><path d="M222.508 40.809a3.797 3.797 0 1 1 4.808 3.642l2.09 5.355h-6.203l2.09-5.355a3.787 3.787 0 0 1-2.785-3.643z" fill="#174ea6"/><path d="M235.143 107.964a18.143 18.143 0 1 1 18.143-18.142 18.143 18.143 0 0 1-18.143 18.142z" fill="#1967d2" stroke="#669df6" stroke-miterlimit="10" stroke-width="2"/><path d="M235.143 104.661a14.84 14.84 0 1 1 14.839-14.84 14.84 14.84 0 0 1-14.84 14.84z" fill="#185abc"/><path d="M235.143 101.09a11.268 11.268 0 1 1 11.268-11.268 11.268 11.268 0 0 1-11.268 11.267z" fill="#4285f4"/><path d="m256.16 107.855 8.602 8.601a1.738 1.738 0 0 1 0 2.455l-.53.53a1.736 1.736 0 0 1-2.454 0l-8.602-8.603a1.738 1.738 0 0 1 0-2.455l.529-.528a1.736 1.736 0 0 1 2.455 0z" fill="#669df6"/><path d="m248.029 102.707 12.259 12.26" fill="none" stroke="#669df6" stroke-miterlimit="10" stroke-width="2"/></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/images/privacy_sandbox_banner.svg b/chrome/browser/resources/settings/images/privacy_sandbox_banner.svg index ce1bbf3..461613c 100644 --- a/chrome/browser/resources/settings/images/privacy_sandbox_banner.svg +++ b/chrome/browser/resources/settings/images/privacy_sandbox_banner.svg
@@ -1 +1 @@ -<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 800"><path d="M610.917 554.718V245.282a63.303 63.303 0 0 0-63.232-63.231H252.314a63.303 63.303 0 0 0-63.23 63.231v309.436a63.302 63.302 0 0 0 63.23 63.231h295.371a63.303 63.303 0 0 0 63.232-63.23zm-63.232-336.646a27.241 27.241 0 0 1 27.21 27.21v309.436a27.24 27.24 0 0 1-27.21 27.21H252.314a27.24 27.24 0 0 1-27.21-27.21V245.282a27.24 27.24 0 0 1 27.21-27.21z" fill="#a8dab5"/><rect x="37.636" y="103.625" width="249.635" height="249.635" rx="24.019" fill="#d2e3fc"/><circle cx="242.321" cy="581.928" r="115.034" fill="#d2e3fc"/><path d="M645.755 59.228l142.37 63.253v95.591c0 91.93-60.609 176.742-142.37 201.962-81.761-25.22-142.37-110.032-142.37-201.962v-95.591z" fill="#d2e3fc"/><circle cx="400" cy="337.989" r="68.664" fill="#4285f4"/><path d="M263.253 353.26a24.019 24.019 0 0 0 24.019-24.019V218.072h-34.958a27.24 27.24 0 0 0-27.21 27.21V353.26zM574.896 379.078V245.282a27.24 27.24 0 0 0-27.21-27.21h-44.3c0 62.433 27.96 121.576 71.51 161.006zM242.321 466.894a115.932 115.932 0 0 0-17.217 1.284v86.54a27.24 27.24 0 0 0 27.21 27.21h105.04a115.033 115.033 0 0 0-115.033-115.034z" fill="#ceead6"/><path d="M225.104 554.718v-86.54a114.22 114.22 0 0 0-36.02 11.76v74.78a63.302 63.302 0 0 0 63.23 63.231h99.28a114.913 114.913 0 0 0 5.76-36.02h-105.04a27.24 27.24 0 0 1-27.21-27.21zM225.104 353.26V245.283a27.24 27.24 0 0 1 27.21-27.211h34.958V182.05h-34.958a63.302 63.302 0 0 0-63.23 63.231V353.26zM547.685 182.051h-44.3v36.021h44.3a27.24 27.24 0 0 1 27.21 27.21v133.796a197.158 197.158 0 0 0 36.022 25.97V245.282a63.303 63.303 0 0 0-63.232-63.231z" fill="#34a853"/><path d="M537.327 524.411a69.035 69.035 0 0 0-41.885-63.514 238.689 238.689 0 0 0-190.885 0 69.036 69.036 0 0 0-41.885 63.514v19.57h274.655z" fill="#4285f4"/></svg> \ No newline at end of file +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 800"><path d="M610.917 554.718V245.282a63.303 63.303 0 0 0-63.232-63.231H252.314a63.303 63.303 0 0 0-63.23 63.231v309.436a63.302 63.302 0 0 0 63.23 63.231h295.371a63.303 63.303 0 0 0 63.232-63.23zm-63.232-336.646a27.241 27.241 0 0 1 27.21 27.21v309.436a27.24 27.24 0 0 1-27.21 27.21H252.314a27.24 27.24 0 0 1-27.21-27.21V245.282a27.24 27.24 0 0 1 27.21-27.21z" fill="#a8dab5"/><rect x="37.636" y="103.625" width="249.635" height="249.635" rx="24.019" fill="#d2e3fc"/><circle cx="242.321" cy="581.928" r="115.034" fill="#d2e3fc"/><path d="m645.755 59.228 142.37 63.253v95.591c0 91.93-60.609 176.742-142.37 201.962-81.761-25.22-142.37-110.032-142.37-201.962v-95.591z" fill="#d2e3fc"/><circle cx="400" cy="337.989" r="68.664" fill="#4285f4"/><path d="M263.253 353.26a24.019 24.019 0 0 0 24.019-24.019V218.072h-34.958a27.24 27.24 0 0 0-27.21 27.21V353.26zm311.643 25.818V245.282a27.24 27.24 0 0 0-27.21-27.21h-44.3c0 62.433 27.96 121.576 71.51 161.006zm-332.575 87.816a115.932 115.932 0 0 0-17.217 1.284v86.54a27.24 27.24 0 0 0 27.21 27.21h105.04a115.033 115.033 0 0 0-115.033-115.034z" fill="#ceead6"/><path d="M225.104 554.718v-86.54a114.22 114.22 0 0 0-36.02 11.76v74.78a63.302 63.302 0 0 0 63.23 63.231h99.28a114.913 114.913 0 0 0 5.76-36.02h-105.04a27.24 27.24 0 0 1-27.21-27.21zm0-201.458V245.283a27.24 27.24 0 0 1 27.21-27.211h34.958V182.05h-34.958a63.302 63.302 0 0 0-63.23 63.231V353.26zm322.581-171.209h-44.3v36.021h44.3a27.24 27.24 0 0 1 27.21 27.21v133.796a197.158 197.158 0 0 0 36.022 25.97V245.282a63.303 63.303 0 0 0-63.232-63.231z" fill="#34a853"/><path d="M537.327 524.411a69.035 69.035 0 0 0-41.885-63.514 238.689 238.689 0 0 0-190.885 0 69.036 69.036 0 0 0-41.885 63.514v19.57h274.655z" fill="#4285f4"/></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/images/privacy_sandbox_banner_dark.svg b/chrome/browser/resources/settings/images/privacy_sandbox_banner_dark.svg index 726facaf..501535c7 100644 --- a/chrome/browser/resources/settings/images/privacy_sandbox_banner_dark.svg +++ b/chrome/browser/resources/settings/images/privacy_sandbox_banner_dark.svg
@@ -1 +1 @@ -<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 800"><path d="M610.917 554.718V245.282a63.303 63.303 0 0 0-63.232-63.231H252.314a63.303 63.303 0 0 0-63.23 63.231v309.436a63.302 63.302 0 0 0 63.23 63.231h295.371a63.303 63.303 0 0 0 63.232-63.23zm-63.232-336.646a27.241 27.241 0 0 1 27.21 27.21v309.436a27.24 27.24 0 0 1-27.21 27.21H252.314a27.24 27.24 0 0 1-27.21-27.21V245.282a27.24 27.24 0 0 1 27.21-27.21z" fill="#188038"/><rect x="37.636" y="103.625" width="249.635" height="249.635" rx="24.019" fill="#185abc"/><circle cx="242.321" cy="581.928" r="115.034" fill="#185abc"/><path d="M645.755 59.228l142.37 63.253v95.591c0 91.93-60.609 176.742-142.37 201.962-81.761-25.22-142.37-110.032-142.37-201.962v-95.591z" fill="#185abc"/><circle cx="400" cy="337.989" r="68.664" fill="#4285f4"/><path d="M263.253 353.26a24.019 24.019 0 0 0 24.019-24.019V218.072h-34.958a27.24 27.24 0 0 0-27.21 27.21V353.26zM574.896 379.078V245.282a27.24 27.24 0 0 0-27.21-27.21h-44.3c0 62.433 27.96 121.576 71.51 161.006zM242.321 466.894a115.932 115.932 0 0 0-17.217 1.284v86.54a27.24 27.24 0 0 0 27.21 27.21h105.04a115.033 115.033 0 0 0-115.033-115.034z" fill="#137333"/><path d="M225.104 554.718v-86.54a114.22 114.22 0 0 0-36.02 11.76v74.78a63.302 63.302 0 0 0 63.23 63.231h99.28a114.913 114.913 0 0 0 5.76-36.02h-105.04a27.24 27.24 0 0 1-27.21-27.21zM225.104 353.26V245.283a27.24 27.24 0 0 1 27.21-27.211h34.958V182.05h-34.958a63.302 63.302 0 0 0-63.23 63.231V353.26zM547.685 182.051h-44.3v36.021h44.3a27.24 27.24 0 0 1 27.21 27.21v133.796a197.158 197.158 0 0 0 36.022 25.97V245.282a63.303 63.303 0 0 0-63.232-63.231z" fill="#34a853"/><path d="M537.327 524.411a69.035 69.035 0 0 0-41.885-63.514 238.689 238.689 0 0 0-190.885 0 69.036 69.036 0 0 0-41.885 63.514v19.57h274.655z" fill="#4285f4"/></svg> \ No newline at end of file +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 800"><path d="M610.917 554.718V245.282a63.303 63.303 0 0 0-63.232-63.231H252.314a63.303 63.303 0 0 0-63.23 63.231v309.436a63.302 63.302 0 0 0 63.23 63.231h295.371a63.303 63.303 0 0 0 63.232-63.23zm-63.232-336.646a27.241 27.241 0 0 1 27.21 27.21v309.436a27.24 27.24 0 0 1-27.21 27.21H252.314a27.24 27.24 0 0 1-27.21-27.21V245.282a27.24 27.24 0 0 1 27.21-27.21z" fill="#188038"/><rect x="37.636" y="103.625" width="249.635" height="249.635" rx="24.019" fill="#185abc"/><circle cx="242.321" cy="581.928" r="115.034" fill="#185abc"/><path d="m645.755 59.228 142.37 63.253v95.591c0 91.93-60.609 176.742-142.37 201.962-81.761-25.22-142.37-110.032-142.37-201.962v-95.591z" fill="#185abc"/><circle cx="400" cy="337.989" r="68.664" fill="#4285f4"/><path d="M263.253 353.26a24.019 24.019 0 0 0 24.019-24.019V218.072h-34.958a27.24 27.24 0 0 0-27.21 27.21V353.26zm311.643 25.818V245.282a27.24 27.24 0 0 0-27.21-27.21h-44.3c0 62.433 27.96 121.576 71.51 161.006zm-332.575 87.816a115.932 115.932 0 0 0-17.217 1.284v86.54a27.24 27.24 0 0 0 27.21 27.21h105.04a115.033 115.033 0 0 0-115.033-115.034z" fill="#137333"/><path d="M225.104 554.718v-86.54a114.22 114.22 0 0 0-36.02 11.76v74.78a63.302 63.302 0 0 0 63.23 63.231h99.28a114.913 114.913 0 0 0 5.76-36.02h-105.04a27.24 27.24 0 0 1-27.21-27.21zm0-201.458V245.283a27.24 27.24 0 0 1 27.21-27.211h34.958V182.05h-34.958a63.302 63.302 0 0 0-63.23 63.231V353.26zm322.581-171.209h-44.3v36.021h44.3a27.24 27.24 0 0 1 27.21 27.21v133.796a197.158 197.158 0 0 0 36.022 25.97V245.282a63.303 63.303 0 0 0-63.232-63.231z" fill="#34a853"/><path d="M537.327 524.411a69.035 69.035 0 0 0-41.885-63.514 238.689 238.689 0 0 0-190.885 0 69.036 69.036 0 0 0-41.885 63.514v19.57h274.655z" fill="#4285f4"/></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/images/privacy_sandbox_banner_v3.svg b/chrome/browser/resources/settings/images/privacy_sandbox_banner_v3.svg index 9e9a66c..87320c2 100644 --- a/chrome/browser/resources/settings/images/privacy_sandbox_banner_v3.svg +++ b/chrome/browser/resources/settings/images/privacy_sandbox_banner_v3.svg
@@ -1 +1 @@ -<svg width="100" height="100" viewBox="0 0 100 100" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M70 61h17v2.995L75.386 69l4.608-5.99L70 61z" fill="#174EA6"/><path d="M50 82c17.673 0 32-14.327 32-32 0-17.673-14.327-32-32-32-17.673 0-32 14.327-32 32 0 17.673 14.327 32 32 32z" stroke="#81C995" stroke-width="2" stroke-miterlimit="10"/><path d="M45.2 46.413V33.048c0-.349-.149-.68-.409-.913-.837-.748-.308-2.135.815-2.135h8.788c1.123 0 1.652 1.387.815 2.135-.26.232-.409.564-.409.913v13.365a4 4 0 0 0 .55 2.024l9.116 15.539C66.03 66.642 64.107 70 61.016 70H38.984c-3.091 0-5.014-3.358-3.45-6.024l9.116-15.539a4 4 0 0 0 .55-2.024z" stroke="#4285F4" stroke-width="2" stroke-linejoin="round"/><path fill-rule="evenodd" clip-rule="evenodd" d="M56.388 55.91l5.477 8.927a1.5 1.5 0 0 1-1.278 2.284H39.765a1.5 1.5 0 0 1-1.279-2.284l5.477-8.928h12.425z" fill="#AECBFA"/><path d="M50 44h37v20H50V44z" fill="#1A73E8"/><path d="M54.327 58.934V48.841h4.032c.592 0 1.113.099 1.564.296.451.197.804.484 1.058.86.263.376.394.831.394 1.367s-.127.982-.38 1.34c-.254.357-.574.63-.959.817v.085c.498.169.902.46 1.212.874.31.413.466.911.466 1.494 0 .602-.141 1.128-.423 1.579a2.778 2.778 0 0 1-1.128 1.03 3.526 3.526 0 0 1-1.593.352h-4.243zm4.06-8.683h-2.524v2.678h2.467c.48 0 .855-.113 1.128-.338.273-.226.409-.56.409-1.001 0-.442-.132-.776-.395-1.001-.263-.226-.625-.338-1.085-.338zm-2.524 7.26h2.693c.498 0 .888-.146 1.17-.437.291-.292.437-.682.437-1.17 0-.49-.146-.88-.437-1.17-.291-.292-.7-.438-1.227-.438h-2.636v3.215zm10.591 1.649c-.714 0-1.339-.164-1.874-.493a3.43 3.43 0 0 1-1.227-1.382c-.282-.592-.423-1.273-.423-2.044 0-.79.15-1.48.451-2.072a3.42 3.42 0 0 1 1.24-1.382c.537-.329 1.148-.493 1.834-.493 1.118 0 1.964.315 2.537.944.583.63.874 1.49.874 2.58 0 .273-.014.517-.042.733H64.41c.047.733.264 1.292.649 1.678.385.385.87.578 1.452.578.517 0 .916-.113 1.198-.339.291-.235.503-.526.635-.874l1.325.353a3.137 3.137 0 0 1-1.072 1.593c-.526.413-1.24.62-2.142.62zm.015-6.583c-.508 0-.94.155-1.297.465-.348.31-.578.766-.691 1.367h3.89c-.027-.554-.201-.996-.52-1.325-.32-.338-.78-.507-1.382-.507zm5.434 4.271v-4.004h-1.198V51.52h1.198v-2.03h1.509v2.03h1.692v1.325h-1.692v3.736c0 .696.305 1.043.916 1.043.16 0 .3-.018.423-.056.122-.047.25-.108.38-.183v1.466c-.15.056-.314.103-.493.14-.169.038-.37.057-.606.057-.648 0-1.165-.192-1.55-.578-.386-.394-.579-.935-.579-1.62zm6.95 2.312c-.77 0-1.391-.211-1.861-.634-.47-.423-.705-.992-.705-1.706 0-.498.127-.916.38-1.255.264-.347.607-.61 1.03-.79a3.693 3.693 0 0 1 1.424-.267c.394 0 .76.023 1.1.07.337.047.676.118 1.014.212v-.705c0-.46-.16-.827-.48-1.1-.319-.282-.742-.422-1.268-.422-.423 0-.785.103-1.085.31-.292.197-.494.488-.606.874l-1.34-.31c.15-.696.508-1.227 1.072-1.593.573-.367 1.23-.55 1.973-.55 1.043 0 1.838.249 2.383.747.545.498.817 1.212.817 2.143v4.75h-1.466v-.86h-.084c-.216.282-.517.536-.903.762-.376.216-.84.324-1.395.324zm.338-1.24c.62 0 1.114-.189 1.48-.564a1.91 1.91 0 0 0 .564-1.382 5.745 5.745 0 0 0-1.875-.324c-.488 0-.87.099-1.142.296-.272.197-.408.489-.408.874 0 .32.126.583.38.79.263.206.597.31 1.001.31z" fill="#fff"/></svg> \ No newline at end of file +<svg width="100" height="100" viewBox="0 0 100 100" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M70 61h17v2.995L75.386 69l4.608-5.99L70 61z" fill="#174EA6"/><path d="M50 82c17.673 0 32-14.327 32-32 0-17.673-14.327-32-32-32-17.673 0-32 14.327-32 32 0 17.673 14.327 32 32 32z" stroke="#81C995" stroke-width="2" stroke-miterlimit="10"/><path d="M45.2 46.413V33.048c0-.349-.149-.68-.409-.913-.837-.748-.308-2.135.815-2.135h8.788c1.123 0 1.652 1.387.815 2.135-.26.232-.409.564-.409.913v13.365a4 4 0 0 0 .55 2.024l9.116 15.539C66.03 66.642 64.107 70 61.016 70H38.984c-3.091 0-5.014-3.358-3.45-6.024l9.116-15.539a4 4 0 0 0 .55-2.024z" stroke="#4285F4" stroke-width="2" stroke-linejoin="round"/><path fill-rule="evenodd" clip-rule="evenodd" d="m56.388 55.91 5.477 8.927a1.5 1.5 0 0 1-1.278 2.284H39.765a1.5 1.5 0 0 1-1.279-2.284l5.477-8.928h12.425z" fill="#AECBFA"/><path d="M50 44h37v20H50V44z" fill="#1A73E8"/><path d="M54.327 58.934V48.841h4.032c.592 0 1.113.099 1.564.296.451.197.804.484 1.058.86.263.376.394.831.394 1.367s-.127.982-.38 1.34c-.254.357-.574.63-.959.817v.085c.498.169.902.46 1.212.874.31.413.466.911.466 1.494 0 .602-.141 1.128-.423 1.579a2.778 2.778 0 0 1-1.128 1.03 3.526 3.526 0 0 1-1.593.352h-4.243zm4.06-8.683h-2.524v2.678h2.467c.48 0 .855-.113 1.128-.338.273-.226.409-.56.409-1.001 0-.442-.132-.776-.395-1.001-.263-.226-.625-.338-1.085-.338zm-2.524 7.26h2.693c.498 0 .888-.146 1.17-.437.291-.292.437-.682.437-1.17 0-.49-.146-.88-.437-1.17-.291-.292-.7-.438-1.227-.438h-2.636v3.215zm10.591 1.649c-.714 0-1.339-.164-1.874-.493a3.43 3.43 0 0 1-1.227-1.382c-.282-.592-.423-1.273-.423-2.044 0-.79.15-1.48.451-2.072a3.42 3.42 0 0 1 1.24-1.382c.537-.329 1.148-.493 1.834-.493 1.118 0 1.964.315 2.537.944.583.63.874 1.49.874 2.58 0 .273-.014.517-.042.733H64.41c.047.733.264 1.292.649 1.678.385.385.87.578 1.452.578.517 0 .916-.113 1.198-.339.291-.235.503-.526.635-.874l1.325.353a3.137 3.137 0 0 1-1.072 1.593c-.526.413-1.24.62-2.142.62zm.015-6.583c-.508 0-.94.155-1.297.465-.348.31-.578.766-.691 1.367h3.89c-.027-.554-.201-.996-.52-1.325-.32-.338-.78-.507-1.382-.507zm5.434 4.271v-4.004h-1.198V51.52h1.198v-2.03h1.509v2.03h1.692v1.325h-1.692v3.736c0 .696.305 1.043.916 1.043.16 0 .3-.018.423-.056.122-.047.25-.108.38-.183v1.466c-.15.056-.314.103-.493.14-.169.038-.37.057-.606.057-.648 0-1.165-.192-1.55-.578-.386-.394-.579-.935-.579-1.62zm6.95 2.312c-.77 0-1.391-.211-1.861-.634-.47-.423-.705-.992-.705-1.706 0-.498.127-.916.38-1.255.264-.347.607-.61 1.03-.79a3.693 3.693 0 0 1 1.424-.267c.394 0 .76.023 1.1.07.337.047.676.118 1.014.212v-.705c0-.46-.16-.827-.48-1.1-.319-.282-.742-.422-1.268-.422-.423 0-.785.103-1.085.31-.292.197-.494.488-.606.874l-1.34-.31c.15-.696.508-1.227 1.072-1.593.573-.367 1.23-.55 1.973-.55 1.043 0 1.838.249 2.383.747.545.498.817 1.212.817 2.143v4.75h-1.466v-.86h-.084c-.216.282-.517.536-.903.762-.376.216-.84.324-1.395.324zm.338-1.24c.62 0 1.114-.189 1.48-.564a1.91 1.91 0 0 0 .564-1.382 5.745 5.745 0 0 0-1.875-.324c-.488 0-.87.099-1.142.296-.272.197-.408.489-.408.874 0 .32.126.583.38.79.263.206.597.31 1.001.31z" fill="#fff"/></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/images/privacy_sandbox_banner_v3_dark.svg b/chrome/browser/resources/settings/images/privacy_sandbox_banner_v3_dark.svg index 02a7a46..3aedbea2 100644 --- a/chrome/browser/resources/settings/images/privacy_sandbox_banner_v3_dark.svg +++ b/chrome/browser/resources/settings/images/privacy_sandbox_banner_v3_dark.svg
@@ -1 +1 @@ -<svg width="100" height="100" viewBox="0 0 100 100" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M70 61h17v2.995L75.386 69l4.608-5.99L70 61z" fill="#174EA6"/><path d="M50 82c17.673 0 32-14.327 32-32 0-17.673-14.327-32-32-32-17.673 0-32 14.327-32 32 0 17.673 14.327 32 32 32z" stroke="#1E8E3E" stroke-width="2" stroke-miterlimit="10"/><path d="M45.2 46.413V33.048c0-.349-.149-.68-.409-.913-.837-.748-.308-2.135.815-2.135h8.788c1.123 0 1.652 1.387.815 2.135-.26.232-.409.564-.409.913v13.365a4 4 0 0 0 .55 2.024l9.116 15.539C66.03 66.642 64.107 70 61.016 70H38.984c-3.091 0-5.014-3.358-3.45-6.024l9.116-15.539a4 4 0 0 0 .55-2.024z" stroke="#4285F4" stroke-width="2" stroke-linejoin="round"/><path fill-rule="evenodd" clip-rule="evenodd" d="M56.388 55.91l5.477 8.927a1.5 1.5 0 0 1-1.278 2.284H39.765a1.5 1.5 0 0 1-1.279-2.284l5.477-8.928h12.425z" fill="#174EA6"/><path d="M50 44h37v20H50V44z" fill="#1A73E8"/><path d="M54.327 58.934V48.841h4.032c.592 0 1.113.099 1.564.296.451.197.804.484 1.058.86.263.376.394.831.394 1.367s-.127.982-.38 1.34c-.254.357-.574.63-.959.817v.085c.498.169.902.46 1.212.874.31.413.466.911.466 1.494 0 .602-.141 1.128-.423 1.579a2.778 2.778 0 0 1-1.128 1.03 3.526 3.526 0 0 1-1.593.352h-4.243zm4.06-8.683h-2.524v2.678h2.467c.48 0 .855-.113 1.128-.338.273-.226.409-.56.409-1.001 0-.442-.132-.776-.395-1.001-.263-.226-.625-.338-1.085-.338zm-2.524 7.26h2.693c.498 0 .888-.146 1.17-.437.291-.292.437-.682.437-1.17 0-.49-.146-.88-.437-1.17-.291-.292-.7-.438-1.227-.438h-2.636v3.215zm10.591 1.649c-.714 0-1.339-.164-1.874-.493a3.43 3.43 0 0 1-1.227-1.382c-.282-.592-.423-1.273-.423-2.044 0-.79.15-1.48.451-2.072a3.42 3.42 0 0 1 1.24-1.382c.537-.329 1.148-.493 1.834-.493 1.118 0 1.964.315 2.537.944.583.63.874 1.49.874 2.58 0 .273-.014.517-.042.733H64.41c.047.733.264 1.292.649 1.678.385.385.87.578 1.452.578.517 0 .916-.113 1.198-.339.291-.235.503-.526.635-.874l1.325.353a3.137 3.137 0 0 1-1.072 1.593c-.526.413-1.24.62-2.142.62zm.015-6.583c-.508 0-.94.155-1.297.465-.348.31-.578.766-.691 1.367h3.89c-.027-.554-.201-.996-.52-1.325-.32-.338-.78-.507-1.382-.507zm5.434 4.271v-4.004h-1.198V51.52h1.198v-2.03h1.509v2.03h1.692v1.325h-1.692v3.736c0 .696.305 1.043.916 1.043.16 0 .3-.018.423-.056.122-.047.25-.108.38-.183v1.466c-.15.056-.314.103-.493.14-.169.038-.37.057-.606.057-.648 0-1.165-.192-1.55-.578-.386-.394-.579-.935-.579-1.62zm6.95 2.312c-.77 0-1.391-.211-1.861-.634-.47-.423-.705-.992-.705-1.706 0-.498.127-.916.38-1.255.264-.347.607-.61 1.03-.79a3.693 3.693 0 0 1 1.424-.267c.394 0 .76.023 1.1.07.337.047.676.118 1.014.212v-.705c0-.46-.16-.827-.48-1.1-.319-.282-.742-.422-1.268-.422-.423 0-.785.103-1.085.31-.292.197-.494.488-.606.874l-1.34-.31c.15-.696.508-1.227 1.072-1.593.573-.367 1.23-.55 1.973-.55 1.043 0 1.838.249 2.383.747.545.498.817 1.212.817 2.143v4.75h-1.466v-.86h-.084c-.216.282-.517.536-.903.762-.376.216-.84.324-1.395.324zm.338-1.24c.62 0 1.114-.189 1.48-.564a1.91 1.91 0 0 0 .564-1.382 5.745 5.745 0 0 0-1.875-.324c-.488 0-.87.099-1.142.296-.272.197-.408.489-.408.874 0 .32.126.583.38.79.263.206.597.31 1.001.31z" fill="#fff"/></svg> \ No newline at end of file +<svg width="100" height="100" viewBox="0 0 100 100" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M70 61h17v2.995L75.386 69l4.608-5.99L70 61z" fill="#174EA6"/><path d="M50 82c17.673 0 32-14.327 32-32 0-17.673-14.327-32-32-32-17.673 0-32 14.327-32 32 0 17.673 14.327 32 32 32z" stroke="#1E8E3E" stroke-width="2" stroke-miterlimit="10"/><path d="M45.2 46.413V33.048c0-.349-.149-.68-.409-.913-.837-.748-.308-2.135.815-2.135h8.788c1.123 0 1.652 1.387.815 2.135-.26.232-.409.564-.409.913v13.365a4 4 0 0 0 .55 2.024l9.116 15.539C66.03 66.642 64.107 70 61.016 70H38.984c-3.091 0-5.014-3.358-3.45-6.024l9.116-15.539a4 4 0 0 0 .55-2.024z" stroke="#4285F4" stroke-width="2" stroke-linejoin="round"/><path fill-rule="evenodd" clip-rule="evenodd" d="m56.388 55.91 5.477 8.927a1.5 1.5 0 0 1-1.278 2.284H39.765a1.5 1.5 0 0 1-1.279-2.284l5.477-8.928h12.425z" fill="#174EA6"/><path d="M50 44h37v20H50V44z" fill="#1A73E8"/><path d="M54.327 58.934V48.841h4.032c.592 0 1.113.099 1.564.296.451.197.804.484 1.058.86.263.376.394.831.394 1.367s-.127.982-.38 1.34c-.254.357-.574.63-.959.817v.085c.498.169.902.46 1.212.874.31.413.466.911.466 1.494 0 .602-.141 1.128-.423 1.579a2.778 2.778 0 0 1-1.128 1.03 3.526 3.526 0 0 1-1.593.352h-4.243zm4.06-8.683h-2.524v2.678h2.467c.48 0 .855-.113 1.128-.338.273-.226.409-.56.409-1.001 0-.442-.132-.776-.395-1.001-.263-.226-.625-.338-1.085-.338zm-2.524 7.26h2.693c.498 0 .888-.146 1.17-.437.291-.292.437-.682.437-1.17 0-.49-.146-.88-.437-1.17-.291-.292-.7-.438-1.227-.438h-2.636v3.215zm10.591 1.649c-.714 0-1.339-.164-1.874-.493a3.43 3.43 0 0 1-1.227-1.382c-.282-.592-.423-1.273-.423-2.044 0-.79.15-1.48.451-2.072a3.42 3.42 0 0 1 1.24-1.382c.537-.329 1.148-.493 1.834-.493 1.118 0 1.964.315 2.537.944.583.63.874 1.49.874 2.58 0 .273-.014.517-.042.733H64.41c.047.733.264 1.292.649 1.678.385.385.87.578 1.452.578.517 0 .916-.113 1.198-.339.291-.235.503-.526.635-.874l1.325.353a3.137 3.137 0 0 1-1.072 1.593c-.526.413-1.24.62-2.142.62zm.015-6.583c-.508 0-.94.155-1.297.465-.348.31-.578.766-.691 1.367h3.89c-.027-.554-.201-.996-.52-1.325-.32-.338-.78-.507-1.382-.507zm5.434 4.271v-4.004h-1.198V51.52h1.198v-2.03h1.509v2.03h1.692v1.325h-1.692v3.736c0 .696.305 1.043.916 1.043.16 0 .3-.018.423-.056.122-.047.25-.108.38-.183v1.466c-.15.056-.314.103-.493.14-.169.038-.37.057-.606.057-.648 0-1.165-.192-1.55-.578-.386-.394-.579-.935-.579-1.62zm6.95 2.312c-.77 0-1.391-.211-1.861-.634-.47-.423-.705-.992-.705-1.706 0-.498.127-.916.38-1.255.264-.347.607-.61 1.03-.79a3.693 3.693 0 0 1 1.424-.267c.394 0 .76.023 1.1.07.337.047.676.118 1.014.212v-.705c0-.46-.16-.827-.48-1.1-.319-.282-.742-.422-1.268-.422-.423 0-.785.103-1.085.31-.292.197-.494.488-.606.874l-1.34-.31c.15-.696.508-1.227 1.072-1.593.573-.367 1.23-.55 1.973-.55 1.043 0 1.838.249 2.383.747.545.498.817 1.212.817 2.143v4.75h-1.466v-.86h-.084c-.216.282-.517.536-.903.762-.376.216-.84.324-1.395.324zm.338-1.24c.62 0 1.114-.189 1.48-.564a1.91 1.91 0 0 0 .564-1.382 5.745 5.745 0 0 0-1.875-.324c-.488 0-.87.099-1.142.296-.272.197-.408.489-.408.874 0 .32.126.583.38.79.263.206.597.31 1.001.31z" fill="#fff"/></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/images/safe_browsing_banner.svg b/chrome/browser/resources/settings/images/safe_browsing_banner.svg index 89ad540..bc91ba86 100644 --- a/chrome/browser/resources/settings/images/safe_browsing_banner.svg +++ b/chrome/browser/resources/settings/images/safe_browsing_banner.svg
@@ -1 +1 @@ -<svg fill="none" height="226" viewBox="0 0 680 226" width="680" xmlns="http://www.w3.org/2000/svg"><path d="M0 0h680v226H0z" fill="#f8f9fa"/><path clip-rule="evenodd" d="M415.427 226C422.831 211.508 427 195.027 427 177.5 427 118.9 379.1 72 320.9 72 262.6 72 216 118.9 216 177.5c0 17.43 4.123 33.939 11.481 48.5z" fill="#fff" fill-rule="evenodd"/><path d="M427.031 182.974h-82.062c-6.033 0-10.969-4.925-10.969-10.945V90.148c0-6.02 4.936-10.945 10.969-10.945h82.062c6.033 0 10.969 4.925 10.969 10.945v81.881c0 6.02-4.936 10.945-10.969 10.945z" fill="#d2e3fc"/><path d="M389.394 148.361h-6.788c-2.81 0-4.867-2.6-4.319-5.268l3.771-17.443h7.747l3.77 17.443c.686 2.737-1.439 5.268-4.181 5.268z" fill="#4285f4"/><path d="M395.838 118.057c0 5.473-4.388 9.85-9.872 9.85-5.485 0-9.872-4.377-9.872-9.85 0-5.472 4.387-9.85 9.872-9.85 5.484 0 9.872 4.378 9.872 9.85z" fill="#4285f4"/><path clip-rule="evenodd" d="M385.966 46c-13.23 0-23.955 10.704-23.955 23.9v9.303a1 1 0 1 1-2 0V69.9c0-14.304 11.625-25.9 25.955-25.9s25.954 11.596 25.954 25.9a1 1 0 1 1-2 0c0-13.196-10.725-23.9-23.954-23.9z" fill="#2a84fc" fill-rule="evenodd"/><path clip-rule="evenodd" d="M360.011 144.325V79.203h2v65.122c0 13.195 10.725 23.899 23.955 23.899 13.229 0 23.954-10.704 23.954-23.899V79.203h2v65.122c0 14.304-11.624 25.899-25.954 25.899s-25.955-11.595-25.955-25.899z" fill="#fff" fill-rule="evenodd"/><path d="M138.425 173.925l-3.9-3.9c-.7-.7-.7-1.9 0-2.6l3.9-3.9c.7-.7 1.9-.7 2.6 0l3.9 3.9c.7.7.7 1.9 0 2.6l-3.9 3.9c-.7.8-1.9.8-2.6 0z" fill="#34a853"/><path d="M100.323 42.8c0 4.3-3.5 7.8-7.8 7.8s-7.8-3.5-7.8-7.8 3.5-7.8 7.8-7.8 7.8 3.5 7.8 7.8z" fill="#fbbc04"/><path d="M543 141c0 2.8-2.2 5-5 5s-5-2.2-5-5 2.2-5 5-5 5 2.3 5 5z" fill="#e94235"/><path clip-rule="evenodd" d="M594.346 158.207l12.063 1.097c2.474.142 4.64 1.7 5.657 3.975l5.095 10.99.01.022a6.989 6.989 0 0 1-.635 6.859l-.011.016-6.995 9.892c-1.399 2.03-3.818 3.189-6.276 2.935l-12.063-1.097c-2.473-.142-4.64-1.7-5.657-3.975l-5.095-10.99-.01-.022a6.989 6.989 0 0 1 .635-6.859l.011-.016 6.995-9.892c1.4-2.03 3.818-3.189 6.276-2.935zm-.303 2.985c-1.335-.141-2.708.495-3.507 1.658l-.011.016-6.994 9.891a3.992 3.992 0 0 0-.365 3.924l5.095 10.988.01.022c.582 1.309 1.798 2.142 3.108 2.211l.057.004 12.1 1.1.021.002c1.335.141 2.708-.496 3.507-1.658l.011-.016 6.994-9.891a3.992 3.992 0 0 0 .365-3.924l-5.095-10.988-.01-.022c-.581-1.309-1.798-2.142-3.108-2.211a1.091 1.091 0 0 1-.057-.004l-12.1-1.1z" fill="#dadce0" fill-rule="evenodd"/><path d="M311.957 157.18l-11.617 20.177c-.962 1.607.24 3.617 2.083 3.617h23.154c1.843 0 3.045-2.01 2.083-3.617l-11.617-20.177c-.881-1.608-3.125-1.608-4.086 0z" fill="#4285f4"/><path clip-rule="evenodd" d="M304 145.974c8.284 0 15-6.716 15-15s-6.716-15-15-15-15 6.716-15 15 6.716 15 15 15zm0 2c9.389 0 17-7.611 17-17s-7.611-17-17-17-17 7.611-17 17 7.611 17 17 17z" fill="#f0a3f8" fill-rule="evenodd"/><path d="M274.012 182.634l-19.723-14.669c-1.238-.941-1.534-2.741-.594-3.98l14.67-19.722c.94-1.239 2.74-1.534 3.979-.594l19.722 14.669c1.239.941 1.535 2.741.594 3.98l-14.669 19.722c-.941 1.239-2.741 1.534-3.979.594z" fill="#fbbc04"/><g clip-rule="evenodd" fill="#34a853" fill-rule="evenodd"><path d="M606.658 51.327c-2.626-.355-4.479 2.262-3.486 4.656l.004.007 9.274 21.356c1.032 2.472 4.33 2.763 5.869.69l13.804-18.591c1.539-2.074.307-5.146-2.357-5.42zm-1.641 3.883l9.274 21.354.003.008c.407.982 1.764 1.154 2.419.27l13.804-18.59c.656-.883.098-2.132-.959-2.237l-.009-.001-23.143-2.703-.011-.002c-.999-.137-1.813.84-1.378 1.9zM30.737 119.894a3 3 0 0 1 3.276-2.696l26.12 2.539a3 3 0 0 1 2.696 3.276l-2.538 26.121a2.999 2.999 0 0 1-3.276 2.695l-26.121-2.538a3.001 3.001 0 0 1-2.696-3.277zm3.083-.705a1 1 0 0 0-1.092.898l-2.54 26.121a1 1 0 0 0 .9 1.092l26.12 2.539a1 1 0 0 0 1.092-.899l2.539-26.12a1 1 0 0 0-.899-1.092z"/></g></svg> \ No newline at end of file +<svg fill="none" height="226" viewBox="0 0 680 226" width="680" xmlns="http://www.w3.org/2000/svg"><path d="M0 0h680v226H0z" fill="#f8f9fa"/><path clip-rule="evenodd" d="M415.427 226C422.831 211.508 427 195.027 427 177.5 427 118.9 379.1 72 320.9 72 262.6 72 216 118.9 216 177.5c0 17.43 4.123 33.939 11.481 48.5z" fill="#fff" fill-rule="evenodd"/><path d="M427.031 182.974h-82.062c-6.033 0-10.969-4.925-10.969-10.945V90.148c0-6.02 4.936-10.945 10.969-10.945h82.062c6.033 0 10.969 4.925 10.969 10.945v81.881c0 6.02-4.936 10.945-10.969 10.945z" fill="#d2e3fc"/><path d="M389.394 148.361h-6.788c-2.81 0-4.867-2.6-4.319-5.268l3.771-17.443h7.747l3.77 17.443c.686 2.737-1.439 5.268-4.181 5.268z" fill="#4285f4"/><path d="M395.838 118.057c0 5.473-4.388 9.85-9.872 9.85-5.485 0-9.872-4.377-9.872-9.85 0-5.472 4.387-9.85 9.872-9.85 5.484 0 9.872 4.378 9.872 9.85z" fill="#4285f4"/><path clip-rule="evenodd" d="M385.966 46c-13.23 0-23.955 10.704-23.955 23.9v9.303a1 1 0 1 1-2 0V69.9c0-14.304 11.625-25.9 25.955-25.9s25.954 11.596 25.954 25.9a1 1 0 1 1-2 0c0-13.196-10.725-23.9-23.954-23.9z" fill="#2a84fc" fill-rule="evenodd"/><path clip-rule="evenodd" d="M360.011 144.325V79.203h2v65.122c0 13.195 10.725 23.899 23.955 23.899 13.229 0 23.954-10.704 23.954-23.899V79.203h2v65.122c0 14.304-11.624 25.899-25.954 25.899s-25.955-11.595-25.955-25.899z" fill="#fff" fill-rule="evenodd"/><path d="m138.425 173.925-3.9-3.9c-.7-.7-.7-1.9 0-2.6l3.9-3.9c.7-.7 1.9-.7 2.6 0l3.9 3.9c.7.7.7 1.9 0 2.6l-3.9 3.9c-.7.8-1.9.8-2.6 0z" fill="#34a853"/><path d="M100.323 42.8c0 4.3-3.5 7.8-7.8 7.8s-7.8-3.5-7.8-7.8 3.5-7.8 7.8-7.8 7.8 3.5 7.8 7.8z" fill="#fbbc04"/><path d="M543 141c0 2.8-2.2 5-5 5s-5-2.2-5-5 2.2-5 5-5 5 2.3 5 5z" fill="#e94235"/><path clip-rule="evenodd" d="m594.346 158.207 12.063 1.097c2.474.142 4.64 1.7 5.657 3.975l5.095 10.99.01.022a6.989 6.989 0 0 1-.635 6.859l-.011.016-6.995 9.892c-1.399 2.03-3.818 3.189-6.276 2.935l-12.063-1.097c-2.473-.142-4.64-1.7-5.657-3.975l-5.095-10.99-.01-.022a6.989 6.989 0 0 1 .635-6.859l.011-.016 6.995-9.892c1.4-2.03 3.818-3.189 6.276-2.935zm-.303 2.985c-1.335-.141-2.708.495-3.507 1.658l-.011.016-6.994 9.891a3.992 3.992 0 0 0-.365 3.924l5.095 10.988.01.022c.582 1.309 1.798 2.142 3.108 2.211l.057.004 12.1 1.1.021.002c1.335.141 2.708-.496 3.507-1.658l.011-.016 6.994-9.891a3.992 3.992 0 0 0 .365-3.924l-5.095-10.988-.01-.022c-.581-1.309-1.798-2.142-3.108-2.211a1.091 1.091 0 0 1-.057-.004l-12.1-1.1z" fill="#dadce0" fill-rule="evenodd"/><path d="m311.957 157.18-11.617 20.177c-.962 1.607.24 3.617 2.083 3.617h23.154c1.843 0 3.045-2.01 2.083-3.617l-11.617-20.177c-.881-1.608-3.125-1.608-4.086 0z" fill="#4285f4"/><path clip-rule="evenodd" d="M304 145.974c8.284 0 15-6.716 15-15s-6.716-15-15-15-15 6.716-15 15 6.716 15 15 15zm0 2c9.389 0 17-7.611 17-17s-7.611-17-17-17-17 7.611-17 17 7.611 17 17 17z" fill="#f0a3f8" fill-rule="evenodd"/><path d="m274.012 182.634-19.723-14.669c-1.238-.941-1.534-2.741-.594-3.98l14.67-19.722c.94-1.239 2.74-1.534 3.979-.594l19.722 14.669c1.239.941 1.535 2.741.594 3.98l-14.669 19.722c-.941 1.239-2.741 1.534-3.979.594z" fill="#fbbc04"/><path d="M606.658 51.327c-2.626-.355-4.479 2.262-3.486 4.656l.004.007 9.274 21.356c1.032 2.472 4.33 2.763 5.869.69l13.804-18.591c1.539-2.074.307-5.146-2.357-5.42zm-1.641 3.883 9.274 21.354.003.008c.407.982 1.764 1.154 2.419.27l13.804-18.59c.656-.883.098-2.132-.959-2.237l-.009-.001-23.143-2.703-.011-.002c-.999-.137-1.813.84-1.378 1.9zm-574.28 64.684a3 3 0 0 1 3.276-2.696l26.12 2.539a3 3 0 0 1 2.696 3.276l-2.538 26.121a2.999 2.999 0 0 1-3.276 2.695l-26.121-2.538a3.001 3.001 0 0 1-2.696-3.277zm3.083-.705a1 1 0 0 0-1.092.898l-2.54 26.121a1 1 0 0 0 .9 1.092l26.12 2.539a1 1 0 0 0 1.092-.899l2.539-26.12a1 1 0 0 0-.899-1.092z" clip-rule="evenodd" fill="#34a853" fill-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/images/safe_browsing_banner_dark.svg b/chrome/browser/resources/settings/images/safe_browsing_banner_dark.svg index 2984b9f..f182f7a2 100644 --- a/chrome/browser/resources/settings/images/safe_browsing_banner_dark.svg +++ b/chrome/browser/resources/settings/images/safe_browsing_banner_dark.svg
@@ -1 +1 @@ -<svg fill="none" height="226" viewBox="0 0 680 226" width="680" xmlns="http://www.w3.org/2000/svg"><path d="M0 0h680v226H0z" fill="#3c4043"/><path clip-rule="evenodd" d="M415.427 226C422.831 211.508 427 195.027 427 177.5 427 118.9 379.1 72 320.9 72 262.6 72 216 118.9 216 177.5c0 17.43 4.123 33.939 11.481 48.5z" fill="#5f6368" fill-rule="evenodd"/><path d="M311.957 157.18l-11.617 20.177c-.962 1.607.24 3.617 2.083 3.617h23.154c1.843 0 3.045-2.01 2.083-3.617l-11.617-20.177c-.881-1.608-3.125-1.608-4.086 0z" fill="#8ab4f8"/><path d="M274.012 182.634l-19.723-14.669c-1.238-.941-1.534-2.741-.594-3.98l14.67-19.722c.94-1.239 2.74-1.534 3.979-.594l19.722 14.669c1.239.941 1.535 2.741.594 3.98l-14.669 19.722c-.941 1.239-2.741 1.534-3.979.594z" fill="#fdd663"/><path d="M138.425 173.925l-3.9-3.9c-.7-.7-.7-1.9 0-2.6l3.9-3.9c.7-.7 1.9-.7 2.6 0l3.9 3.9c.7.7.7 1.9 0 2.6l-3.9 3.9c-.7.8-1.9.8-2.6 0z" fill="#81c995"/><path d="M100.323 42.8c0 4.3-3.5 7.8-7.8 7.8s-7.8-3.5-7.8-7.8 3.5-7.8 7.8-7.8 7.8 3.5 7.8 7.8z" fill="#fdd663"/><path d="M543 142c0 2.8-2.2 5-5 5s-5-2.2-5-5 2.2-5 5-5 5 2.3 5 5z" fill="#f28b82"/><g clip-rule="evenodd" fill-rule="evenodd"><path d="M594.346 158.207l12.063 1.097c2.474.142 4.64 1.7 5.657 3.975l5.095 10.99.01.022a6.989 6.989 0 0 1-.635 6.859l-.011.016-6.995 9.892c-1.399 2.03-3.818 3.189-6.276 2.935l-12.063-1.097c-2.473-.142-4.64-1.7-5.657-3.975l-5.095-10.99-.01-.022a6.989 6.989 0 0 1 .635-6.859l.011-.016 6.995-9.892c1.4-2.03 3.818-3.189 6.276-2.935zm-.303 2.985c-1.335-.141-2.708.495-3.507 1.658l-.011.016-6.994 9.891a3.992 3.992 0 0 0-.365 3.924l5.095 10.988.01.022c.582 1.309 1.798 2.142 3.108 2.211l.057.004 12.1 1.1.021.002c1.335.141 2.708-.496 3.507-1.658l.011-.016 6.994-9.891a3.992 3.992 0 0 0 .365-3.924l-5.095-10.988-.01-.022c-.581-1.309-1.798-2.142-3.108-2.211a1.091 1.091 0 0 1-.057-.004l-12.1-1.1z" fill="#80868b"/><path d="M606.658 51.327c-2.626-.355-4.479 2.262-3.486 4.656l.004.007 9.274 21.356c1.032 2.472 4.33 2.763 5.869.69l13.804-18.591c1.539-2.074.307-5.146-2.357-5.42zm-1.641 3.883l9.274 21.354.003.008c.407.982 1.764 1.154 2.419.27l13.804-18.59c.656-.883.098-2.132-.959-2.237l-.009-.001-23.143-2.703-.011-.002c-.999-.137-1.813.84-1.378 1.9zM30.737 119.894a3 3 0 0 1 3.276-2.696l26.12 2.539a3 3 0 0 1 2.696 3.276l-2.538 26.121a2.999 2.999 0 0 1-3.276 2.695l-26.121-2.538a3.001 3.001 0 0 1-2.696-3.277zm3.083-.705a1 1 0 0 0-1.092.898l-2.54 26.121a1 1 0 0 0 .9 1.092l26.12 2.539a1 1 0 0 0 1.092-.899l2.539-26.12a1 1 0 0 0-.899-1.092z" fill="#81c995"/><path d="M304 145.974c8.284 0 15-6.716 15-15s-6.716-15-15-15-15 6.716-15 15 6.716 15 15 15zm0 2c9.389 0 17-7.611 17-17s-7.611-17-17-17-17 7.611-17 17 7.611 17 17 17z" fill="#f28b82"/></g><path d="M427.031 182.974h-82.062c-6.033 0-10.969-4.925-10.969-10.945V90.148c0-6.02 4.936-10.945 10.969-10.945h82.062c6.033 0 10.969 4.925 10.969 10.945v81.881c0 6.02-4.936 10.945-10.969 10.945z" fill="#4285f4"/><path d="M389.394 148.361h-6.788c-2.81 0-4.867-2.6-4.319-5.268l3.771-17.443h7.747l3.77 17.443c.686 2.737-1.439 5.268-4.181 5.268z" fill="#185abc"/><path d="M395.838 118.057c0 5.473-4.388 9.85-9.872 9.85-5.485 0-9.872-4.377-9.872-9.85 0-5.472 4.387-9.85 9.872-9.85 5.484 0 9.872 4.378 9.872 9.85z" fill="#185abc"/><path clip-rule="evenodd" d="M385.966 46c-13.23 0-23.955 10.704-23.955 23.9v9.303a1 1 0 1 1-2 0V69.9c0-14.304 11.625-25.9 25.955-25.9s25.954 11.596 25.954 25.9a1 1 0 1 1-2 0c0-13.196-10.725-23.9-23.954-23.9z" fill="#8ab4f8" fill-rule="evenodd"/><path clip-rule="evenodd" d="M360.011 144.325V79.203h2v65.122c0 13.195 10.725 23.899 23.955 23.899 13.229 0 23.954-10.704 23.954-23.899V79.203h2v65.122c0 14.304-11.624 25.899-25.954 25.899s-25.955-11.595-25.955-25.899z" fill="#185abc" fill-rule="evenodd"/></svg> \ No newline at end of file +<svg fill="none" height="226" viewBox="0 0 680 226" width="680" xmlns="http://www.w3.org/2000/svg"><path d="M0 0h680v226H0z" fill="#3c4043"/><path clip-rule="evenodd" d="M415.427 226C422.831 211.508 427 195.027 427 177.5 427 118.9 379.1 72 320.9 72 262.6 72 216 118.9 216 177.5c0 17.43 4.123 33.939 11.481 48.5z" fill="#5f6368" fill-rule="evenodd"/><path d="m311.957 157.18-11.617 20.177c-.962 1.607.24 3.617 2.083 3.617h23.154c1.843 0 3.045-2.01 2.083-3.617l-11.617-20.177c-.881-1.608-3.125-1.608-4.086 0z" fill="#8ab4f8"/><path d="m274.012 182.634-19.723-14.669c-1.238-.941-1.534-2.741-.594-3.98l14.67-19.722c.94-1.239 2.74-1.534 3.979-.594l19.722 14.669c1.239.941 1.535 2.741.594 3.98l-14.669 19.722c-.941 1.239-2.741 1.534-3.979.594z" fill="#fdd663"/><path d="m138.425 173.925-3.9-3.9c-.7-.7-.7-1.9 0-2.6l3.9-3.9c.7-.7 1.9-.7 2.6 0l3.9 3.9c.7.7.7 1.9 0 2.6l-3.9 3.9c-.7.8-1.9.8-2.6 0z" fill="#81c995"/><path d="M100.323 42.8c0 4.3-3.5 7.8-7.8 7.8s-7.8-3.5-7.8-7.8 3.5-7.8 7.8-7.8 7.8 3.5 7.8 7.8z" fill="#fdd663"/><path d="M543 142c0 2.8-2.2 5-5 5s-5-2.2-5-5 2.2-5 5-5 5 2.3 5 5z" fill="#f28b82"/><g clip-rule="evenodd" fill-rule="evenodd"><path d="m594.346 158.207 12.063 1.097c2.474.142 4.64 1.7 5.657 3.975l5.095 10.99.01.022a6.989 6.989 0 0 1-.635 6.859l-.011.016-6.995 9.892c-1.399 2.03-3.818 3.189-6.276 2.935l-12.063-1.097c-2.473-.142-4.64-1.7-5.657-3.975l-5.095-10.99-.01-.022a6.989 6.989 0 0 1 .635-6.859l.011-.016 6.995-9.892c1.4-2.03 3.818-3.189 6.276-2.935zm-.303 2.985c-1.335-.141-2.708.495-3.507 1.658l-.011.016-6.994 9.891a3.992 3.992 0 0 0-.365 3.924l5.095 10.988.01.022c.582 1.309 1.798 2.142 3.108 2.211l.057.004 12.1 1.1.021.002c1.335.141 2.708-.496 3.507-1.658l.011-.016 6.994-9.891a3.992 3.992 0 0 0 .365-3.924l-5.095-10.988-.01-.022c-.581-1.309-1.798-2.142-3.108-2.211a1.091 1.091 0 0 1-.057-.004l-12.1-1.1z" fill="#80868b"/><path d="M606.658 51.327c-2.626-.355-4.479 2.262-3.486 4.656l.004.007 9.274 21.356c1.032 2.472 4.33 2.763 5.869.69l13.804-18.591c1.539-2.074.307-5.146-2.357-5.42zm-1.641 3.883 9.274 21.354.003.008c.407.982 1.764 1.154 2.419.27l13.804-18.59c.656-.883.098-2.132-.959-2.237l-.009-.001-23.143-2.703-.011-.002c-.999-.137-1.813.84-1.378 1.9zm-574.28 64.684a3 3 0 0 1 3.276-2.696l26.12 2.539a3 3 0 0 1 2.696 3.276l-2.538 26.121a2.999 2.999 0 0 1-3.276 2.695l-26.121-2.538a3.001 3.001 0 0 1-2.696-3.277zm3.083-.705a1 1 0 0 0-1.092.898l-2.54 26.121a1 1 0 0 0 .9 1.092l26.12 2.539a1 1 0 0 0 1.092-.899l2.539-26.12a1 1 0 0 0-.899-1.092z" fill="#81c995"/><path d="M304 145.974c8.284 0 15-6.716 15-15s-6.716-15-15-15-15 6.716-15 15 6.716 15 15 15zm0 2c9.389 0 17-7.611 17-17s-7.611-17-17-17-17 7.611-17 17 7.611 17 17 17z" fill="#f28b82"/></g><path d="M427.031 182.974h-82.062c-6.033 0-10.969-4.925-10.969-10.945V90.148c0-6.02 4.936-10.945 10.969-10.945h82.062c6.033 0 10.969 4.925 10.969 10.945v81.881c0 6.02-4.936 10.945-10.969 10.945z" fill="#4285f4"/><path d="M389.394 148.361h-6.788c-2.81 0-4.867-2.6-4.319-5.268l3.771-17.443h7.747l3.77 17.443c.686 2.737-1.439 5.268-4.181 5.268z" fill="#185abc"/><path d="M395.838 118.057c0 5.473-4.388 9.85-9.872 9.85-5.485 0-9.872-4.377-9.872-9.85 0-5.472 4.387-9.85 9.872-9.85 5.484 0 9.872 4.378 9.872 9.85z" fill="#185abc"/><path clip-rule="evenodd" d="M385.966 46c-13.23 0-23.955 10.704-23.955 23.9v9.303a1 1 0 1 1-2 0V69.9c0-14.304 11.625-25.9 25.955-25.9s25.954 11.596 25.954 25.9a1 1 0 1 1-2 0c0-13.196-10.725-23.9-23.954-23.9z" fill="#8ab4f8" fill-rule="evenodd"/><path clip-rule="evenodd" d="M360.011 144.325V79.203h2v65.122c0 13.195 10.725 23.899 23.955 23.899 13.229 0 23.954-10.704 23.954-23.899V79.203h2v65.122c0 14.304-11.624 25.899-25.954 25.899s-25.955-11.595-25.955-25.899z" fill="#185abc" fill-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/images/sync_banner.svg b/chrome/browser/resources/settings/images/sync_banner.svg index 12f4c756..08044c25 100644 --- a/chrome/browser/resources/settings/images/sync_banner.svg +++ b/chrome/browser/resources/settings/images/sync_banner.svg
@@ -1 +1 @@ -<svg data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" width="1360" height="240"><defs><clipPath id="a"><path fill="none" d="M0-.36h1360v239.72H0z"/></clipPath></defs><path fill="#f8f9fa" d="M0-.36h1360v240H0z"/><g clip-path="url(#a)"><path d="M458.53 122.23h-1.31V51.9a16.06 16.06 0 0 1 16-16h46.8v1.31h-46.8a14.75 14.75 0 0 0-14.69 14.69z" fill="#bdc0c5"/><path d="M377.09 158a30.17 30.17 0 0 1 30.1 28.82H326a19.6 19.6 0 0 1 26.15-17.2l.87.31.58-.72A30 30 0 0 1 377.09 158m0-1.31a31.38 31.38 0 0 0-24.46 11.7 20.91 20.91 0 0 0-27.94 19.75h83.85a31.44 31.44 0 0 0-31.44-31.44z" fill="#e8e9eb"/><path d="M496.39 207.3h-23.13a14.75 14.75 0 0 1-14.73-14.73v-70.34h-1.31v70.33a16.06 16.06 0 0 0 16 16h23.13zm43.32-170.66V38a14.74 14.74 0 0 1 9.82 13.87v71.43h1.31V51.9a16.06 16.06 0 0 0-11.13-15.26z" fill="#bdc0c5"/><path d="M531.89 199.89h-56.43A10.44 10.44 0 0 1 465 189.46v-135A10.44 10.44 0 0 1 475.46 44h56.43a10.44 10.44 0 0 1 10.43 10.43v135a10.44 10.44 0 0 1-10.43 10.46zM475.46 45.3a9.13 9.13 0 0 0-9.12 9.12v135a9.13 9.13 0 0 0 9.12 9.12h56.43a9.13 9.13 0 0 0 9.12-9.12v-135a9.13 9.13 0 0 0-9.12-9.12z" fill="#e8e9eb"/><path d="M549.53 178.93v13.64a14.75 14.75 0 0 1-14.73 14.73h-23.13v1.31h23.13a16.06 16.06 0 0 0 16-16v-13.68z" fill="#e54440"/><path d="M629 90.92a39.3 39.3 0 1 1-39.3 39.3 39.35 39.35 0 0 1 39.3-39.3m0-2.62a41.92 41.92 0 1 0 42 41.93 41.92 41.92 0 0 0-42-41.93z" fill="#e8e9eb"/><circle cx="650.37" cy="145.95" r="5.24" fill="#4b87f1"/><circle cx="563.16" cy="130.23" r="41.92" fill="#34a751"/><path d="M587.12 130.23a41.73 41.73 0 0 0 9 25.92 41.88 41.88 0 0 0 0-51.83 41.73 41.73 0 0 0-9 25.91z" opacity=".12"/><path d="M457.17 75.43V65c21.47 0 38.35-6 50.18-17.91C525.93 28.37 526 1.06 526 .79l10.5-.08c0 1.29 0 31.8-21.63 53.64-13.87 13.99-33.29 21.08-57.7 21.08z" fill="#f7bb2a"/><path d="M387.74 137h-10.49a80.9 80.9 0 0 1 10-36c9.21-16.42 28.8-36 69.92-36v10.43c-28.93 0-49.37 10.34-60.77 30.72a70.69 70.69 0 0 0-8.66 30.85z" fill="#e8e9eb"/><path d="M562.83 146.74v-5.08h.66v3.5l4.93-4.93-4.93-4.93v3.5h-.66v-5.08l6.51 6.51zm.66-20l-6.49-6.52 6.51-6.51v5.08h-.66v-3.5l-4.93 4.93 4.93 4.93v-3.5h.66z" fill="#fff"/><path d="M572.14 135.51l-.56-.33a9.77 9.77 0 0 0-8.42-14.72v-.66a10.42 10.42 0 0 1 9 15.71zm-8.98 5.13a10.42 10.42 0 0 1-9-15.71l.56.33a9.77 9.77 0 0 0 8.44 14.74z" fill="#fff"/><path d="M112 114.83H76.35v-.54a17.82 17.82 0 0 1 35.64 0zm-34.55-1.08h33.45a16.74 16.74 0 0 0-33.46 0z" fill="#bdc0c5"/><path d="M433.65 136.79h-34.56a17.28 17.28 0 1 1 34.56 0z" fill="#e8e9eb"/><path d="M339.22 200H157.78V75.65a5.3 5.3 0 0 1 5.28-5.28h170.88a5.3 5.3 0 0 1 5.28 5.28z" fill="#f4f4f4"/><path d="M330.58 71.45a7.57 7.57 0 0 1 7.56 7.55v119.89H158.86V79a7.57 7.57 0 0 1 7.56-7.56h164.16m0-1.08H166.42a8.67 8.67 0 0 0-8.64 8.64v121h181.44V79a8.67 8.67 0 0 0-8.64-8.64zM131.86 207.53h233.28v1.08H131.86z" fill="#bdc0c5"/><path d="M169.2 115.84a25.87 25.87 0 0 0-20.2 9.64 17.24 17.24 0 0 0-23 16.28h69.12a25.92 25.92 0 0 0-25.92-25.92z" fill="#fff"/><path d="M195.66 142.3h-70.2v-.54a17.78 17.78 0 0 1 23.39-16.91 26.46 26.46 0 0 1 46.81 16.91zm-69.11-1.08h68a25.38 25.38 0 0 0-45.12-15.4l-.24.3-.36-.13a16.7 16.7 0 0 0-22.31 15.23z" fill="#bdc0c5"/><path d="M76.24 163.72l7.41-7.41c15.18 15.18 31.38 22.86 48.15 22.82 26.34-.06 45.71-19.31 45.9-19.5l7.47 7.35c-.9.92-22.47 22.5-53.22 22.63-19.71.08-38.45-8.61-55.71-25.89z" fill="#4285f4"/><path d="M-16.4 158.16l-7.41-7.41a80.9 80.9 0 0 1 32.5-18.36c18.15-5.14 45.89-5.16 75 23.92l-7.41 7.41c-20.5-20.46-42.28-27.61-64.74-21.25a70.69 70.69 0 0 0-27.94 15.69z" fill="#e8e9eb"/><path d="M1273.24 78.47a22.41 22.41 0 1 1 8.31-1.61 22.29 22.29 0 0 1-8.31 1.61zm0-43.53a21.16 21.16 0 0 0-19.64 29 21.14 21.14 0 1 0 19.64-29zM1238 259h-160a13.57 13.57 0 0 1-13.55-13.55v-20h1.2v20a12.37 12.37 0 0 0 12.35 12.31h160a12.37 12.37 0 0 0 12.35-12.35v-87.1A12.37 12.37 0 0 0 1238 146h-24v-1.2h24a13.57 13.57 0 0 1 13.55 13.55v87.05A13.57 13.57 0 0 1 1238 259z" fill="#bdc0c5"/><path fill="#bdc0c5" d="M1214.01 145.96H1122l6-1.2h86.01v1.2z"/><path d="M1065.6 199.36h-1.2v-41a13.57 13.57 0 0 1 13.6-13.6h59V146h-59a12.37 12.37 0 0 0-12.35 12.35z" fill="#bdc0c5"/><path d="M1080 185.56a28.74 28.74 0 0 0-22.41 10.71 19.16 19.16 0 0 0-25.59 18.09h76.8a28.8 28.8 0 0 0-28.8-28.8z" fill="#fff"/><path d="M1109.45 215h-78v-.6a19.76 19.76 0 0 1 26-18.79 29.4 29.4 0 0 1 52 18.79zm-76.79-1.2h75.59a28.2 28.2 0 0 0-50.13-17.11l-.27.33-.4-.14a18.55 18.55 0 0 0-24.78 16.92z" fill="#bdc0c5"/><path fill="#f8f9fa" d="M997.34 58.76l71.32-60.81"/><path fill="#e8e9eb" d="M996.638 57.935l71.36-60.755 1.297 1.523-71.36 60.754zm286.222 53.225h-11.65a89.89 89.89 0 0 0 11.11 40c10.22 18.29 32 40.1 77.68 40.1v-11.68c-32.14 0-54.86-11.49-67.52-34.14a78.55 78.55 0 0 1-9.62-34.28z"/></g></svg> \ No newline at end of file +<svg data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" width="1360" height="240"><defs><clipPath id="a"><path fill="none" d="M0-.36h1360v239.72H0z"/></clipPath></defs><path fill="#f8f9fa" d="M0-.36h1360v240H0z"/><g clip-path="url(#a)"><path d="M458.53 122.23h-1.31V51.9a16.06 16.06 0 0 1 16-16h46.8v1.31h-46.8a14.75 14.75 0 0 0-14.69 14.69z" fill="#bdc0c5"/><path d="M377.09 158a30.17 30.17 0 0 1 30.1 28.82H326a19.6 19.6 0 0 1 26.15-17.2l.87.31.58-.72A30 30 0 0 1 377.09 158m0-1.31a31.38 31.38 0 0 0-24.46 11.7 20.91 20.91 0 0 0-27.94 19.75h83.85a31.44 31.44 0 0 0-31.44-31.44z" fill="#e8e9eb"/><path d="M496.39 207.3h-23.13a14.75 14.75 0 0 1-14.73-14.73v-70.34h-1.31v70.33a16.06 16.06 0 0 0 16 16h23.13zm43.32-170.66V38a14.74 14.74 0 0 1 9.82 13.87v71.43h1.31V51.9a16.06 16.06 0 0 0-11.13-15.26z" fill="#bdc0c5"/><path d="M531.89 199.89h-56.43A10.44 10.44 0 0 1 465 189.46v-135A10.44 10.44 0 0 1 475.46 44h56.43a10.44 10.44 0 0 1 10.43 10.43v135a10.44 10.44 0 0 1-10.43 10.46zM475.46 45.3a9.13 9.13 0 0 0-9.12 9.12v135a9.13 9.13 0 0 0 9.12 9.12h56.43a9.13 9.13 0 0 0 9.12-9.12v-135a9.13 9.13 0 0 0-9.12-9.12z" fill="#e8e9eb"/><path d="M549.53 178.93v13.64a14.75 14.75 0 0 1-14.73 14.73h-23.13v1.31h23.13a16.06 16.06 0 0 0 16-16v-13.68z" fill="#e54440"/><path d="M629 90.92a39.3 39.3 0 1 1-39.3 39.3 39.35 39.35 0 0 1 39.3-39.3m0-2.62a41.92 41.92 0 1 0 42 41.93 41.92 41.92 0 0 0-42-41.93z" fill="#e8e9eb"/><circle cx="650.37" cy="145.95" r="5.24" fill="#4b87f1"/><circle cx="563.16" cy="130.23" r="41.92" fill="#34a751"/><path d="M587.12 130.23a41.73 41.73 0 0 0 9 25.92 41.88 41.88 0 0 0 0-51.83 41.73 41.73 0 0 0-9 25.91z" opacity=".12"/><path d="M457.17 75.43V65c21.47 0 38.35-6 50.18-17.91C525.93 28.37 526 1.06 526 .79l10.5-.08c0 1.29 0 31.8-21.63 53.64-13.87 13.99-33.29 21.08-57.7 21.08z" fill="#f7bb2a"/><path d="M387.74 137h-10.49a80.9 80.9 0 0 1 10-36c9.21-16.42 28.8-36 69.92-36v10.43c-28.93 0-49.37 10.34-60.77 30.72a70.69 70.69 0 0 0-8.66 30.85z" fill="#e8e9eb"/><path d="M562.83 146.74v-5.08h.66v3.5l4.93-4.93-4.93-4.93v3.5h-.66v-5.08l6.51 6.51zm.66-20-6.49-6.52 6.51-6.51v5.08h-.66v-3.5l-4.93 4.93 4.93 4.93v-3.5h.66z" fill="#fff"/><path d="m572.14 135.51-.56-.33a9.77 9.77 0 0 0-8.42-14.72v-.66a10.42 10.42 0 0 1 9 15.71zm-8.98 5.13a10.42 10.42 0 0 1-9-15.71l.56.33a9.77 9.77 0 0 0 8.44 14.74z" fill="#fff"/><path d="M112 114.83H76.35v-.54a17.82 17.82 0 0 1 35.64 0zm-34.55-1.08h33.45a16.74 16.74 0 0 0-33.46 0z" fill="#bdc0c5"/><path d="M433.65 136.79h-34.56a17.28 17.28 0 1 1 34.56 0z" fill="#e8e9eb"/><path d="M339.22 200H157.78V75.65a5.3 5.3 0 0 1 5.28-5.28h170.88a5.3 5.3 0 0 1 5.28 5.28z" fill="#f4f4f4"/><path d="M330.58 71.45a7.57 7.57 0 0 1 7.56 7.55v119.89H158.86V79a7.57 7.57 0 0 1 7.56-7.56h164.16m0-1.08H166.42a8.67 8.67 0 0 0-8.64 8.64v121h181.44V79a8.67 8.67 0 0 0-8.64-8.64zM131.86 207.53h233.28v1.08H131.86z" fill="#bdc0c5"/><path d="M169.2 115.84a25.87 25.87 0 0 0-20.2 9.64 17.24 17.24 0 0 0-23 16.28h69.12a25.92 25.92 0 0 0-25.92-25.92z" fill="#fff"/><path d="M195.66 142.3h-70.2v-.54a17.78 17.78 0 0 1 23.39-16.91 26.46 26.46 0 0 1 46.81 16.91zm-69.11-1.08h68a25.38 25.38 0 0 0-45.12-15.4l-.24.3-.36-.13a16.7 16.7 0 0 0-22.31 15.23z" fill="#bdc0c5"/><path d="m76.24 163.72 7.41-7.41c15.18 15.18 31.38 22.86 48.15 22.82 26.34-.06 45.71-19.31 45.9-19.5l7.47 7.35c-.9.92-22.47 22.5-53.22 22.63-19.71.08-38.45-8.61-55.71-25.89z" fill="#4285f4"/><path d="m-16.4 158.16-7.41-7.41a80.9 80.9 0 0 1 32.5-18.36c18.15-5.14 45.89-5.16 75 23.92l-7.41 7.41c-20.5-20.46-42.28-27.61-64.74-21.25a70.69 70.69 0 0 0-27.94 15.69z" fill="#e8e9eb"/><path d="M1273.24 78.47a22.41 22.41 0 1 1 8.31-1.61 22.29 22.29 0 0 1-8.31 1.61zm0-43.53a21.16 21.16 0 0 0-19.64 29 21.14 21.14 0 1 0 19.64-29zM1238 259h-160a13.57 13.57 0 0 1-13.55-13.55v-20h1.2v20a12.37 12.37 0 0 0 12.35 12.31h160a12.37 12.37 0 0 0 12.35-12.35v-87.1A12.37 12.37 0 0 0 1238 146h-24v-1.2h24a13.57 13.57 0 0 1 13.55 13.55v87.05A13.57 13.57 0 0 1 1238 259z" fill="#bdc0c5"/><path fill="#bdc0c5" d="M1214.01 145.96H1122l6-1.2h86.01v1.2z"/><path d="M1065.6 199.36h-1.2v-41a13.57 13.57 0 0 1 13.6-13.6h59V146h-59a12.37 12.37 0 0 0-12.35 12.35z" fill="#bdc0c5"/><path d="M1080 185.56a28.74 28.74 0 0 0-22.41 10.71 19.16 19.16 0 0 0-25.59 18.09h76.8a28.8 28.8 0 0 0-28.8-28.8z" fill="#fff"/><path d="M1109.45 215h-78v-.6a19.76 19.76 0 0 1 26-18.79 29.4 29.4 0 0 1 52 18.79zm-76.79-1.2h75.59a28.2 28.2 0 0 0-50.13-17.11l-.27.33-.4-.14a18.55 18.55 0 0 0-24.78 16.92z" fill="#bdc0c5"/><path fill="#f8f9fa" d="m997.34 58.76 71.32-60.81"/><path fill="#e8e9eb" d="m996.638 57.935 71.36-60.755 1.297 1.523-71.36 60.754zm286.222 53.225h-11.65a89.89 89.89 0 0 0 11.11 40c10.22 18.29 32 40.1 77.68 40.1v-11.68c-32.14 0-54.86-11.49-67.52-34.14a78.55 78.55 0 0 1-9.62-34.28z"/></g></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/images/sync_banner_dark.svg b/chrome/browser/resources/settings/images/sync_banner_dark.svg index 42cc59b..e2e199a 100644 --- a/chrome/browser/resources/settings/images/sync_banner_dark.svg +++ b/chrome/browser/resources/settings/images/sync_banner_dark.svg
@@ -1 +1 @@ -<svg data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" width="1360" height="240"><path fill="#28282b" d="M-14.74-2.96h1389.47v245.2H-14.74z"/><path d="M458.53 122.23h-1.31V51.9a16.06 16.06 0 0 1 16-16h46.8v1.31h-46.8a14.75 14.75 0 0 0-14.69 14.69zM377.09 158a30.17 30.17 0 0 1 30.1 28.82H326a19.6 19.6 0 0 1 26.15-17.2l.87.31.58-.72A30 30 0 0 1 377.09 158m0-1.31a31.38 31.38 0 0 0-24.46 11.7 20.91 20.91 0 0 0-27.94 19.75h83.85a31.44 31.44 0 0 0-31.44-31.44zm119.3 50.61h-23.13a14.75 14.75 0 0 1-14.73-14.73v-70.34h-1.31v70.33a16.06 16.06 0 0 0 16 16h23.13zm43.32-170.66V38a14.74 14.74 0 0 1 9.82 13.87v71.43h1.31V51.9a16.06 16.06 0 0 0-11.13-15.26z" fill="#5f6368"/><path d="M531.89 199.89h-56.43A10.44 10.44 0 0 1 465 189.46v-135A10.44 10.44 0 0 1 475.46 44h56.43a10.44 10.44 0 0 1 10.43 10.43v135a10.44 10.44 0 0 1-10.43 10.46zM475.46 45.3a9.13 9.13 0 0 0-9.12 9.12v135a9.13 9.13 0 0 0 9.12 9.12h56.43a9.13 9.13 0 0 0 9.12-9.12v-135a9.13 9.13 0 0 0-9.12-9.12z" fill="#4e5154"/><path d="M549.53 178.93v13.64a14.75 14.75 0 0 1-14.73 14.73h-23.13v1.31h23.13a16.06 16.06 0 0 0 16-16v-13.68z" fill="#f18a81"/><path d="M629 90.92a39.3 39.3 0 1 1-39.3 39.3 39.35 39.35 0 0 1 39.3-39.3m0-2.62a41.92 41.92 0 1 0 42 41.93 41.92 41.92 0 0 0-42-41.93z" fill="#5f6368"/><circle cx="650.37" cy="145.95" r="5.24" fill="#8ab4f8"/><circle cx="563.16" cy="130.23" r="41.92" fill="#81c995"/><path d="M587.12 130.23a41.73 41.73 0 0 0 9 25.92 41.88 41.88 0 0 0 0-51.83 41.73 41.73 0 0 0-9 25.91z" opacity=".12"/><path d="M457.17 75.43V65c21.47 0 38.35-6 50.18-17.91C525.93 28.37 526 1.06 526 .79l10.5-.08c0 1.29 0 31.8-21.63 53.64-13.87 13.99-33.29 21.08-57.7 21.08z" fill="#f7bb2a"/><path d="M387.74 137h-10.49a80.9 80.9 0 0 1 10-36c9.21-16.42 28.8-36 69.92-36v10.43c-28.93 0-49.37 10.34-60.77 30.72a70.69 70.69 0 0 0-8.66 30.85z" fill="#414447"/><path d="M562.83 146.74v-5.08h.66v3.5l4.93-4.93-4.93-4.93v3.5h-.66v-5.08l6.51 6.51zm.66-20l-6.49-6.52 6.51-6.51v5.08h-.66v-3.5l-4.93 4.93 4.93 4.93v-3.5h.66z" fill="#292a2d"/><path d="M572.14 135.51l-.56-.33a9.77 9.77 0 0 0-8.42-14.72v-.66a10.42 10.42 0 0 1 9 15.71zm-8.98 5.13a10.42 10.42 0 0 1-9-15.71l.56.33a9.77 9.77 0 0 0 8.44 14.74z" fill="#292a2d"/><path d="M112 114.83H76.35v-.54a17.82 17.82 0 0 1 35.64 0zm-34.55-1.08h33.45a16.74 16.74 0 0 0-33.46 0z" fill="#5f6368"/><path d="M433.65 136.79h-34.56a17.28 17.28 0 1 1 34.56 0z" fill="#414447"/><path d="M339.22 200H157.78V75.65a5.3 5.3 0 0 1 5.28-5.28h170.88a5.3 5.3 0 0 1 5.28 5.28z" fill="#262628"/><path d="M330.58 71.45a7.57 7.57 0 0 1 7.56 7.55v119.89H158.86V79a7.57 7.57 0 0 1 7.56-7.56h164.16m0-1.08H166.42a8.67 8.67 0 0 0-8.64 8.64v121h181.44V79a8.67 8.67 0 0 0-8.64-8.64zM131.86 207.53h233.28v1.08H131.86z" fill="#5f6368"/><path d="M169.2 115.84a25.87 25.87 0 0 0-20.2 9.64 17.24 17.24 0 0 0-23 16.28h69.12a25.92 25.92 0 0 0-25.92-25.92z" fill="#292a2d"/><path d="M195.66 142.3h-70.2v-.54a17.78 17.78 0 0 1 23.39-16.91 26.46 26.46 0 0 1 46.81 16.91zm-69.11-1.08h68a25.38 25.38 0 0 0-45.12-15.4l-.24.3-.36-.13a16.7 16.7 0 0 0-22.31 15.23z" fill="#5f6368"/><path d="M76.24 163.72l7.41-7.41c15.18 15.18 31.38 22.86 48.15 22.82 26.34-.06 45.71-19.31 45.9-19.5l7.47 7.35c-.9.92-22.47 22.5-53.22 22.63-19.71.08-38.45-8.61-55.71-25.89z" fill="#8ab4f8"/><path d="M-16.4 158.16l-7.41-7.41a80.9 80.9 0 0 1 32.5-18.36c18.15-5.14 45.89-5.16 75 23.92l-7.41 7.41c-20.5-20.46-42.28-27.61-64.74-21.25a70.69 70.69 0 0 0-27.94 15.69z" fill="#414447"/><path d="M1273.24 78.47a22.41 22.41 0 1 1 8.31-1.61 22.29 22.29 0 0 1-8.31 1.61zm0-43.53a21.16 21.16 0 0 0-19.64 29 21.14 21.14 0 1 0 19.64-29zM1238 259h-160a13.57 13.57 0 0 1-13.55-13.55v-20h1.2v20a12.37 12.37 0 0 0 12.35 12.31h160a12.37 12.37 0 0 0 12.35-12.35v-87.1A12.37 12.37 0 0 0 1238 146h-24v-1.2h24a13.57 13.57 0 0 1 13.55 13.55v87.05A13.57 13.57 0 0 1 1238 259z" fill="#5f6368"/><path fill="#5f6368" d="M1214.01 145.96H1122l6-1.2h86.01v1.2z"/><path d="M1065.6 199.36h-1.2v-41a13.57 13.57 0 0 1 13.6-13.6h59V146h-59a12.37 12.37 0 0 0-12.35 12.35z" fill="#5f6368"/><path d="M1080 185.56a28.74 28.74 0 0 0-22.41 10.71 19.16 19.16 0 0 0-25.59 18.09h76.8a28.8 28.8 0 0 0-28.8-28.8z" fill="#262628"/><path d="M1109.45 215h-78v-.6a19.76 19.76 0 0 1 26-18.79 29.4 29.4 0 0 1 52 18.79zm-76.79-1.2h75.59a28.2 28.2 0 0 0-50.13-17.11l-.27.33-.4-.14a18.55 18.55 0 0 0-24.78 16.92z" fill="#5f6368"/><path fill="#f8f9fa" d="M997.34 58.76l71.32-60.81"/><path fill="#5f6368" d="M996.638 57.935l71.36-60.755 1.297 1.523-71.36 60.754z"/><path d="M1282.86 111.16h-11.65a89.89 89.89 0 0 0 11.11 40c10.22 18.29 32 40.1 77.68 40.1v-11.68c-32.14 0-54.86-11.49-67.52-34.14a78.55 78.55 0 0 1-9.62-34.28z" fill="#414447"/><path fill="none" d="M0-.36h1360v239.72H0z"/></svg> \ No newline at end of file +<svg data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" width="1360" height="240"><path fill="#28282b" d="M-14.74-2.96h1389.47v245.2H-14.74z"/><path d="M458.53 122.23h-1.31V51.9a16.06 16.06 0 0 1 16-16h46.8v1.31h-46.8a14.75 14.75 0 0 0-14.69 14.69zM377.09 158a30.17 30.17 0 0 1 30.1 28.82H326a19.6 19.6 0 0 1 26.15-17.2l.87.31.58-.72A30 30 0 0 1 377.09 158m0-1.31a31.38 31.38 0 0 0-24.46 11.7 20.91 20.91 0 0 0-27.94 19.75h83.85a31.44 31.44 0 0 0-31.44-31.44zm119.3 50.61h-23.13a14.75 14.75 0 0 1-14.73-14.73v-70.34h-1.31v70.33a16.06 16.06 0 0 0 16 16h23.13zm43.32-170.66V38a14.74 14.74 0 0 1 9.82 13.87v71.43h1.31V51.9a16.06 16.06 0 0 0-11.13-15.26z" fill="#5f6368"/><path d="M531.89 199.89h-56.43A10.44 10.44 0 0 1 465 189.46v-135A10.44 10.44 0 0 1 475.46 44h56.43a10.44 10.44 0 0 1 10.43 10.43v135a10.44 10.44 0 0 1-10.43 10.46zM475.46 45.3a9.13 9.13 0 0 0-9.12 9.12v135a9.13 9.13 0 0 0 9.12 9.12h56.43a9.13 9.13 0 0 0 9.12-9.12v-135a9.13 9.13 0 0 0-9.12-9.12z" fill="#4e5154"/><path d="M549.53 178.93v13.64a14.75 14.75 0 0 1-14.73 14.73h-23.13v1.31h23.13a16.06 16.06 0 0 0 16-16v-13.68z" fill="#f18a81"/><path d="M629 90.92a39.3 39.3 0 1 1-39.3 39.3 39.35 39.35 0 0 1 39.3-39.3m0-2.62a41.92 41.92 0 1 0 42 41.93 41.92 41.92 0 0 0-42-41.93z" fill="#5f6368"/><circle cx="650.37" cy="145.95" r="5.24" fill="#8ab4f8"/><circle cx="563.16" cy="130.23" r="41.92" fill="#81c995"/><path d="M587.12 130.23a41.73 41.73 0 0 0 9 25.92 41.88 41.88 0 0 0 0-51.83 41.73 41.73 0 0 0-9 25.91z" opacity=".12"/><path d="M457.17 75.43V65c21.47 0 38.35-6 50.18-17.91C525.93 28.37 526 1.06 526 .79l10.5-.08c0 1.29 0 31.8-21.63 53.64-13.87 13.99-33.29 21.08-57.7 21.08z" fill="#f7bb2a"/><path d="M387.74 137h-10.49a80.9 80.9 0 0 1 10-36c9.21-16.42 28.8-36 69.92-36v10.43c-28.93 0-49.37 10.34-60.77 30.72a70.69 70.69 0 0 0-8.66 30.85z" fill="#414447"/><path d="M562.83 146.74v-5.08h.66v3.5l4.93-4.93-4.93-4.93v3.5h-.66v-5.08l6.51 6.51zm.66-20-6.49-6.52 6.51-6.51v5.08h-.66v-3.5l-4.93 4.93 4.93 4.93v-3.5h.66z" fill="#292a2d"/><path d="m572.14 135.51-.56-.33a9.77 9.77 0 0 0-8.42-14.72v-.66a10.42 10.42 0 0 1 9 15.71zm-8.98 5.13a10.42 10.42 0 0 1-9-15.71l.56.33a9.77 9.77 0 0 0 8.44 14.74z" fill="#292a2d"/><path d="M112 114.83H76.35v-.54a17.82 17.82 0 0 1 35.64 0zm-34.55-1.08h33.45a16.74 16.74 0 0 0-33.46 0z" fill="#5f6368"/><path d="M433.65 136.79h-34.56a17.28 17.28 0 1 1 34.56 0z" fill="#414447"/><path d="M339.22 200H157.78V75.65a5.3 5.3 0 0 1 5.28-5.28h170.88a5.3 5.3 0 0 1 5.28 5.28z" fill="#262628"/><path d="M330.58 71.45a7.57 7.57 0 0 1 7.56 7.55v119.89H158.86V79a7.57 7.57 0 0 1 7.56-7.56h164.16m0-1.08H166.42a8.67 8.67 0 0 0-8.64 8.64v121h181.44V79a8.67 8.67 0 0 0-8.64-8.64zM131.86 207.53h233.28v1.08H131.86z" fill="#5f6368"/><path d="M169.2 115.84a25.87 25.87 0 0 0-20.2 9.64 17.24 17.24 0 0 0-23 16.28h69.12a25.92 25.92 0 0 0-25.92-25.92z" fill="#292a2d"/><path d="M195.66 142.3h-70.2v-.54a17.78 17.78 0 0 1 23.39-16.91 26.46 26.46 0 0 1 46.81 16.91zm-69.11-1.08h68a25.38 25.38 0 0 0-45.12-15.4l-.24.3-.36-.13a16.7 16.7 0 0 0-22.31 15.23z" fill="#5f6368"/><path d="m76.24 163.72 7.41-7.41c15.18 15.18 31.38 22.86 48.15 22.82 26.34-.06 45.71-19.31 45.9-19.5l7.47 7.35c-.9.92-22.47 22.5-53.22 22.63-19.71.08-38.45-8.61-55.71-25.89z" fill="#8ab4f8"/><path d="m-16.4 158.16-7.41-7.41a80.9 80.9 0 0 1 32.5-18.36c18.15-5.14 45.89-5.16 75 23.92l-7.41 7.41c-20.5-20.46-42.28-27.61-64.74-21.25a70.69 70.69 0 0 0-27.94 15.69z" fill="#414447"/><path d="M1273.24 78.47a22.41 22.41 0 1 1 8.31-1.61 22.29 22.29 0 0 1-8.31 1.61zm0-43.53a21.16 21.16 0 0 0-19.64 29 21.14 21.14 0 1 0 19.64-29zM1238 259h-160a13.57 13.57 0 0 1-13.55-13.55v-20h1.2v20a12.37 12.37 0 0 0 12.35 12.31h160a12.37 12.37 0 0 0 12.35-12.35v-87.1A12.37 12.37 0 0 0 1238 146h-24v-1.2h24a13.57 13.57 0 0 1 13.55 13.55v87.05A13.57 13.57 0 0 1 1238 259z" fill="#5f6368"/><path fill="#5f6368" d="M1214.01 145.96H1122l6-1.2h86.01v1.2z"/><path d="M1065.6 199.36h-1.2v-41a13.57 13.57 0 0 1 13.6-13.6h59V146h-59a12.37 12.37 0 0 0-12.35 12.35z" fill="#5f6368"/><path d="M1080 185.56a28.74 28.74 0 0 0-22.41 10.71 19.16 19.16 0 0 0-25.59 18.09h76.8a28.8 28.8 0 0 0-28.8-28.8z" fill="#262628"/><path d="M1109.45 215h-78v-.6a19.76 19.76 0 0 1 26-18.79 29.4 29.4 0 0 1 52 18.79zm-76.79-1.2h75.59a28.2 28.2 0 0 0-50.13-17.11l-.27.33-.4-.14a18.55 18.55 0 0 0-24.78 16.92z" fill="#5f6368"/><path fill="#f8f9fa" d="m997.34 58.76 71.32-60.81"/><path fill="#5f6368" d="m996.638 57.935 71.36-60.755 1.297 1.523-71.36 60.754z"/><path d="M1282.86 111.16h-11.65a89.89 89.89 0 0 0 11.11 40c10.22 18.29 32 40.1 77.68 40.1v-11.68c-32.14 0-54.86-11.49-67.52-34.14a78.55 78.55 0 0 1-9.62-34.28z" fill="#414447"/><path fill="none" d="M0-.36h1360v239.72H0z"/></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/languages_page/languages_page.html b/chrome/browser/resources/settings/languages_page/languages_page.html index ff679d56..3ab0c9f 100644 --- a/chrome/browser/resources/settings/languages_page/languages_page.html +++ b/chrome/browser/resources/settings/languages_page/languages_page.html
@@ -3,37 +3,6 @@ min-height: var(--settings-row-two-line-min-height); } - .explain-selected { - color: var(--google-green-700); - font-weight: initial; - } - - @media (prefers-color-scheme: dark) { - .explain-selected { - color: var(--google-green-300); - } - } - - .icon-external { - /* The negative margin messes up the outline border. These are in an - indented list so this looks fine until moved: crbug.com/708286. */ - margin-inline-end: 0; - } - - #uiLanguageItem:focus, - #offerTranslations:focus { - background-color: transparent; - } - - #uiLanguageItem span { - line-height: 20px; - } - - #uiLanguageItem cr-policy-indicator { - float: right; - margin-inline-start: 20px; - } - .name-with-error-list { padding: 14px 0; } @@ -88,14 +57,6 @@ .spell-check-languages .list-item:last-of-type { border-bottom: var(--cr-separator-line); } - - #restartButton { - margin-inline-start: var(--settings-controlled-by-spacing); - } - - .external-wrapper { - display: flex; - } </style> <settings-languages languages="{{languages}}" prefs="{{prefs}}" language-helper="{{languageHelper}}">
diff --git a/chrome/browser/resources/settings/languages_page/languages_subpage.html b/chrome/browser/resources/settings/languages_page/languages_subpage.html index 92489b5..3e285f0 100644 --- a/chrome/browser/resources/settings/languages_page/languages_subpage.html +++ b/chrome/browser/resources/settings/languages_page/languages_subpage.html
@@ -25,8 +25,38 @@ display: none; } - iron-icon.policy { - margin-inline-start: 10px; +<if expr="is_win"> + .explain-selected { + color: var(--google-green-700); + font-weight: initial; + } + + @media (prefers-color-scheme: dark) { + .explain-selected { + color: var(--google-green-300); + } + } + + #uiLanguageItem:focus { + background-color: transparent; + } + + #uiLanguageItem span { + line-height: 20px; + } + + #uiLanguageItem iron-icon.policy { + margin-inline-start: 20px; + margin-inline-end: 0; + } + + #restartButton { + margin-inline-start: var(--settings-controlled-by-spacing); + } +</if> + + #offerTranslations:focus { + background-color: transparent; } </style> <div id="languagesSection">
diff --git a/chrome/browser/resources/settings/people_page/settings_icon_camera_alt.svg b/chrome/browser/resources/settings/people_page/settings_icon_camera_alt.svg index dbe522a..feeec28 100644 --- a/chrome/browser/resources/settings/people_page/settings_icon_camera_alt.svg +++ b/chrome/browser/resources/settings/people_page/settings_icon_camera_alt.svg
@@ -1 +1 @@ -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="#FFF"><circle cx="12" cy="12" r="3.2"/><path d="M9 2L7.17 4H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2h-3.17L15 2H9zm3 15c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5z"/></svg> \ No newline at end of file +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="#FFF"><circle cx="12" cy="12" r="3.2"/><path d="M9 2 7.17 4H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2h-3.17L15 2H9zm3 15c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5z"/></svg> \ No newline at end of file
diff --git a/chrome/browser/safe_browsing/download_protection/download_protection_service.cc b/chrome/browser/safe_browsing/download_protection/download_protection_service.cc index 70f5a65..ed4371c 100644 --- a/chrome/browser/safe_browsing/download_protection/download_protection_service.cc +++ b/chrome/browser/safe_browsing/download_protection/download_protection_service.cc
@@ -213,12 +213,6 @@ void DownloadProtectionService::CheckClientDownload( download::DownloadItem* item, CheckDownloadRepeatingCallback callback) { - ClientDownloadRequest::DownloadType file_download_type = - download_type_util::GetDownloadType(item->GetTargetFilePath()); - if (file_download_type == ClientDownloadRequest::DOCUMENT) { - UMA_HISTOGRAM_MEMORY_KB("SafeBrowsing.Macros.DocumentSize", - item->GetReceivedBytes() / 1024); - } auto request = std::make_unique<CheckClientDownloadRequest>( item, std::move(callback), this, database_manager_, binary_feature_extractor_);
diff --git a/chrome/browser/safe_browsing/download_protection/download_protection_service_unittest.cc b/chrome/browser/safe_browsing/download_protection/download_protection_service_unittest.cc index f8cdcd0..5a49b70 100644 --- a/chrome/browser/safe_browsing/download_protection/download_protection_service_unittest.cc +++ b/chrome/browser/safe_browsing/download_protection/download_protection_service_unittest.cc
@@ -3290,68 +3290,6 @@ EXPECT_FALSE(HasClientDownloadRequest()); } -TEST_F(DownloadProtectionServiceTest, CheckClientDownloadDocumentSizeLogged) { - PrepareResponse(ClientDownloadResponse::SAFE, net::HTTP_OK, net::OK); - base::HistogramTester histograms; - NiceMockDownloadItem item; - PrepareBasicDownloadItem(&item, {"http://www.example.com/a.docx"}, // url_chain - "http://www.google.com/", // referrer - FILE_PATH_LITERAL("a.tmp"), // tmp_path - FILE_PATH_LITERAL("a.docx")); // final_path - content::DownloadItemUtils::AttachInfoForTesting(&item, profile(), nullptr); - - EXPECT_CALL(*sb_service_->mock_database_manager(), - MatchDownloadAllowlistUrl(_)) - .WillRepeatedly(Return(false)); - -#if !BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_WIN) - EXPECT_CALL(*binary_feature_extractor_.get(), CheckSignature(tmp_path_, _)); - EXPECT_CALL(*binary_feature_extractor_.get(), - ExtractImageFeatures( - tmp_path_, BinaryFeatureExtractor::kDefaultOptions, _, _)); -#endif - - RunLoop run_loop; - download_service_->CheckClientDownload( - &item, - base::BindRepeating(&DownloadProtectionServiceTest::CheckDoneCallback, - base::Unretained(this), run_loop.QuitClosure())); - run_loop.Run(); - - histograms.ExpectTotalCount("SafeBrowsing.Macros.DocumentSize", - /* expected_count */ 1); -} - -TEST_F(DownloadProtectionServiceTest, - CheckClientDownloadDocumentSizeNotLogged) { - PrepareResponse(ClientDownloadResponse::SAFE, net::HTTP_OK, net::OK); - base::HistogramTester histograms; - NiceMockDownloadItem item; - PrepareBasicDownloadItem(&item, {"http://www.evil.test/a.exe"}, // url_chain - "http://www.google.com/", // referrer - FILE_PATH_LITERAL("a.tmp"), // tmp_path - FILE_PATH_LITERAL("a.exe")); // final_path - content::DownloadItemUtils::AttachInfoForTesting(&item, profile(), nullptr); - - EXPECT_CALL(*sb_service_->mock_database_manager(), - MatchDownloadAllowlistUrl(_)) - .WillRepeatedly(Return(false)); - EXPECT_CALL(*binary_feature_extractor_.get(), CheckSignature(tmp_path_, _)); - EXPECT_CALL(*binary_feature_extractor_.get(), - ExtractImageFeatures( - tmp_path_, BinaryFeatureExtractor::kDefaultOptions, _, _)); - - RunLoop run_loop; - download_service_->CheckClientDownload( - &item, - base::BindRepeating(&DownloadProtectionServiceTest::CheckDoneCallback, - base::Unretained(this), run_loop.QuitClosure())); - run_loop.Run(); - - histograms.ExpectTotalCount("SafeBrowsing.Macros.DocumentSize", - /* expected_count */ 0); -} - TEST_P(DeepScanningDownloadTest, PasswordProtectedArchivesBlockedByPreference) { if (!flag_enabled()) return;
diff --git a/chrome/browser/themes/browser_theme_pack.cc b/chrome/browser/themes/browser_theme_pack.cc index 1676be2f..d69b184b8 100644 --- a/chrome/browser/themes/browser_theme_pack.cc +++ b/chrome/browser/themes/browser_theme_pack.cc
@@ -1123,8 +1123,8 @@ kColorTabForegroundInactiveFrameActive}, {TP::COLOR_TAB_FOREGROUND_INACTIVE_FRAME_INACTIVE, kColorTabForegroundInactiveFrameInactive}, - {TP::COLOR_TAB_THROBBER_SPINNING, ui::kColorThrobber}, - {TP::COLOR_TAB_THROBBER_WAITING, ui::kColorThrobberPreconnect}, + {TP::COLOR_TAB_THROBBER_SPINNING, kColorTabThrobber}, + {TP::COLOR_TAB_THROBBER_WAITING, kColorTabThrobberPreconnect}, {TP::COLOR_TOOLBAR, kColorToolbar}, {TP::COLOR_TOOLBAR_BUTTON_ICON, kColorToolbarButtonIcon}, {TP::COLOR_TOOLBAR_BUTTON_ICON_HOVERED, kColorToolbarButtonIconHovered},
diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn index 158e826..cab5b284 100644 --- a/chrome/browser/ui/BUILD.gn +++ b/chrome/browser/ui/BUILD.gn
@@ -411,7 +411,7 @@ "//chrome/browser/resources/browsing_topics:resources", "//chrome/browser/resources/internals:resources", "//chrome/browser/resources/invalidations:resources", - "//chrome/browser/resources/media:webrtc_logs_resources", + "//chrome/browser/resources/media:resources", "//chrome/browser/resources/net_internals:resources", "//chrome/browser/resources/omnibox:resources", "//chrome/browser/resources/usb_internals:resources",
diff --git a/chrome/browser/ui/app_list/app_context_menu_unittest.cc b/chrome/browser/ui/app_list/app_context_menu_unittest.cc index 20de68e4..1a0e347 100644 --- a/chrome/browser/ui/app_list/app_context_menu_unittest.cc +++ b/chrome/browser/ui/app_list/app_context_menu_unittest.cc
@@ -373,8 +373,10 @@ } TEST_F(AppContextMenuTest, ChromeAppInRecentAppsList) { - base::test::ScopedFeatureList feature_list{ - ash::features::kProductivityLauncher}; + base::test::ScopedFeatureList feature_list; + feature_list.InitWithFeatures({ash::features::kProductivityLauncher, + ash::features::kLauncherHideContinueSection}, + {}); scoped_refptr<extensions::Extension> app = MakeChromeApp(); service_->AddExtension(app.get());
diff --git a/chrome/browser/ui/app_list/app_service/app_service_context_menu.cc b/chrome/browser/ui/app_list/app_service/app_service_context_menu.cc index 888223b039..b2631c89 100644 --- a/chrome/browser/ui/app_list/app_service/app_service_context_menu.cc +++ b/chrome/browser/ui/app_list/app_service/app_service_context_menu.cc
@@ -430,7 +430,8 @@ color_id)); } - if (item_context_ == ash::AppListItemContext::kRecentApps) { + if (item_context_ == ash::AppListItemContext::kRecentApps && + ash::features::IsLauncherHideContinueSectionEnabled()) { menu_model->AddSeparator(ui::NORMAL_SEPARATOR); menu_model->AddItemWithIcon( ash::HIDE_CONTINUE_SECTION,
diff --git a/chrome/browser/ui/app_list/arc/arc_app_list_prefs.cc b/chrome/browser/ui/app_list/arc/arc_app_list_prefs.cc index ef5fefe8..700c648 100644 --- a/chrome/browser/ui/app_list/arc/arc_app_list_prefs.cc +++ b/chrome/browser/ui/app_list/arc/arc_app_list_prefs.cc
@@ -1431,8 +1431,7 @@ // fixed in Play Store. if (arc::IsRobotOrOfflineDemoAccountMode() && !(ash::DemoSession::IsDeviceInDemoMode() && - chromeos::features::ShouldShowPlayStoreInDemoMode() && - !ash::DemoSession::IsDemoModeOfflineEnrolled())) { + chromeos::features::ShouldShowPlayStoreInDemoMode())) { return; } }
diff --git a/chrome/browser/ui/autofill/autofill_popup_controller_impl.cc b/chrome/browser/ui/autofill/autofill_popup_controller_impl.cc index ce4d742..63d24ef 100644 --- a/chrome/browser/ui/autofill/autofill_popup_controller_impl.cc +++ b/chrome/browser/ui/autofill/autofill_popup_controller_impl.cc
@@ -35,7 +35,6 @@ #include "ui/accessibility/ax_tree_id.h" #include "ui/accessibility/ax_tree_manager_map.h" #include "ui/accessibility/platform/ax_platform_node.h" -#include "ui/base/l10n/l10n_util.h" #include "ui/events/event.h" #include "ui/gfx/canvas.h" #include "ui/gfx/text_elider.h" @@ -212,7 +211,8 @@ // Prepend the parameters to the suggestions we already have. suggestions_.insert(suggestions_.begin(), values.size(), Suggestion()); for (size_t i = 0; i < values.size(); i++) { - suggestions_[i].value = values[i]; + suggestions_[i].main_text = + Suggestion::Text(values[i], Suggestion::Text::IsPrimary(true)); suggestions_[i].label = labels[i]; suggestions_[i].frontend_id = POPUP_ITEM_ID_DATALIST_ENTRY; } @@ -356,8 +356,9 @@ ->NotifyEvent("autofill_virtual_card_suggestion_accepted"); } - delegate_->DidAcceptSuggestion(suggestion.value, suggestion.frontend_id, - suggestion.backend_id, index); + delegate_->DidAcceptSuggestion(suggestion.main_text.value, + suggestion.frontend_id, suggestion.backend_id, + index); } gfx::NativeView AutofillPopupControllerImpl::container_view() const { @@ -395,19 +396,12 @@ std::u16string AutofillPopupControllerImpl::GetSuggestionMainTextAt( int row) const { - return suggestions_[row].frontend_id == - POPUP_ITEM_ID_VIRTUAL_CREDIT_CARD_ENTRY - ? l10n_util::GetStringUTF16( - IDS_AUTOFILL_VIRTUAL_CARD_SUGGESTION_OPTION_VALUE) - : suggestions_[row].value; + return suggestions_[row].main_text.value; } std::u16string AutofillPopupControllerImpl::GetSuggestionMinorTextAt( int row) const { - return suggestions_[row].frontend_id == - POPUP_ITEM_ID_VIRTUAL_CREDIT_CARD_ENTRY - ? suggestions_[row].value - : std::u16string(); + return suggestions_[row].minor_text.value; } const std::u16string& AutofillPopupControllerImpl::GetSuggestionLabelAt( @@ -420,8 +414,8 @@ std::u16string* title, std::u16string* body) { return delegate_->GetDeletionConfirmationText( - suggestions_[list_index].value, suggestions_[list_index].frontend_id, - title, body); + suggestions_[list_index].main_text.value, + suggestions_[list_index].frontend_id, title, body); } bool AutofillPopupControllerImpl::RemoveSuggestion(int list_index) { @@ -435,7 +429,7 @@ // TODO(crbug.com/1209792): Replace these checks with a stronger identifier. if (list_index < 0 || static_cast<size_t>(list_index) >= suggestions_.size()) return false; - if (!delegate_->RemoveSuggestion(suggestions_[list_index].value, + if (!delegate_->RemoveSuggestion(suggestions_[list_index].main_text.value, suggestions_[list_index].frontend_id)) { return false; } @@ -492,9 +486,10 @@ view_->OnSelectedRowChanged(previous_selected_line, selected_line_); if (selected_line_) { - delegate_->DidSelectSuggestion(suggestions_[*selected_line_].value, - suggestions_[*selected_line_].frontend_id, - suggestions_[*selected_line_].backend_id); + delegate_->DidSelectSuggestion( + suggestions_[*selected_line_].main_text.value, + suggestions_[*selected_line_].frontend_id, + suggestions_[*selected_line_].backend_id); } else { delegate_->ClearPreviewedForm(); }
diff --git a/chrome/browser/ui/autofill/autofill_popup_controller_unittest.cc b/chrome/browser/ui/autofill/autofill_popup_controller_unittest.cc index 1b482e4..e44e6807 100644 --- a/chrome/browser/ui/autofill/autofill_popup_controller_unittest.cc +++ b/chrome/browser/ui/autofill/autofill_popup_controller_unittest.cc
@@ -533,7 +533,7 @@ ASSERT_EQ(3, autofill_popup_controller_->GetLineCount()); Suggestion result0 = autofill_popup_controller_->GetSuggestionAt(0); - EXPECT_EQ(value1, result0.value); + EXPECT_EQ(value1, result0.main_text.value); EXPECT_EQ(value1, autofill_popup_controller_->GetSuggestionMainTextAt(0)); EXPECT_EQ(label1, result0.label); EXPECT_EQ(std::u16string(), result0.additional_label); @@ -541,13 +541,13 @@ EXPECT_EQ(POPUP_ITEM_ID_DATALIST_ENTRY, result0.frontend_id); Suggestion result1 = autofill_popup_controller_->GetSuggestionAt(1); - EXPECT_EQ(std::u16string(), result1.value); + EXPECT_EQ(std::u16string(), result1.main_text.value); EXPECT_EQ(std::u16string(), result1.label); EXPECT_EQ(std::u16string(), result1.additional_label); EXPECT_EQ(POPUP_ITEM_ID_SEPARATOR, result1.frontend_id); Suggestion result2 = autofill_popup_controller_->GetSuggestionAt(2); - EXPECT_EQ(std::u16string(), result2.value); + EXPECT_EQ(std::u16string(), result2.main_text.value); EXPECT_EQ(std::u16string(), result2.label); EXPECT_EQ(std::u16string(), result2.additional_label); EXPECT_EQ(1, result2.frontend_id); @@ -563,12 +563,14 @@ ASSERT_EQ(4, autofill_popup_controller_->GetLineCount()); // Original one first, followed by new one, then separator. - EXPECT_EQ(value1, autofill_popup_controller_->GetSuggestionAt(0).value); + EXPECT_EQ(value1, + autofill_popup_controller_->GetSuggestionAt(0).main_text.value); EXPECT_EQ(value1, autofill_popup_controller_->GetSuggestionMainTextAt(0)); EXPECT_EQ(label1, autofill_popup_controller_->GetSuggestionAt(0).label); EXPECT_EQ(std::u16string(), autofill_popup_controller_->GetSuggestionAt(0).additional_label); - EXPECT_EQ(value2, autofill_popup_controller_->GetSuggestionAt(1).value); + EXPECT_EQ(value2, + autofill_popup_controller_->GetSuggestionAt(1).main_text.value); EXPECT_EQ(value2, autofill_popup_controller_->GetSuggestionMainTextAt(1)); EXPECT_EQ(label2, autofill_popup_controller_->GetSuggestionAt(1).label); EXPECT_EQ(std::u16string(), @@ -603,7 +605,8 @@ data_list_labels); ASSERT_EQ(1, autofill_popup_controller_->GetLineCount()); - EXPECT_EQ(value1, autofill_popup_controller_->GetSuggestionAt(0).value); + EXPECT_EQ(value1, + autofill_popup_controller_->GetSuggestionAt(0).main_text.value); EXPECT_EQ(label1, autofill_popup_controller_->GetSuggestionAt(0).label); EXPECT_EQ(std::u16string(), autofill_popup_controller_->GetSuggestionAt(0).additional_label);
diff --git a/chrome/browser/ui/browser.cc b/chrome/browser/ui/browser.cc index f52b2c3..1837aac 100644 --- a/chrome/browser/ui/browser.cc +++ b/chrome/browser/ui/browser.cc
@@ -1661,6 +1661,13 @@ window_action = NavigateParams::SHOW_WINDOW_INACTIVE; fullscreen_controller->FullscreenTabOpeningPopup(source, new_contents.get()); + // Defer popup creation if the opener has a fullscreen transition in + // progress. This works around a defect on Mac where separate displays + // cannot switch their independent spaces simultaneously (crbug.com/1315749) + fullscreen_controller->RunOrDeferUntilTransitionIsComplete(base::BindOnce( + &chrome::AddWebContents, this, source, std::move(new_contents), + target_url, disposition, initial_rect, window_action)); + return; } chrome::AddWebContents(this, source, std::move(new_contents), target_url,
diff --git a/chrome/browser/ui/cocoa/touchbar/credit_card_autofill_touch_bar_controller_unittest.mm b/chrome/browser/ui/cocoa/touchbar/credit_card_autofill_touch_bar_controller_unittest.mm index 9134bad8..adcd024 100644 --- a/chrome/browser/ui/cocoa/touchbar/credit_card_autofill_touch_bar_controller_unittest.mm +++ b/chrome/browser/ui/cocoa/touchbar/credit_card_autofill_touch_bar_controller_unittest.mm
@@ -68,7 +68,7 @@ } std::u16string GetSuggestionMainTextAt(int row) const override { - return suggestions_.at(row).value; + return suggestions_.at(row).main_text.value; } std::u16string GetSuggestionMinorTextAt(int row) const override {
diff --git a/chrome/browser/ui/color/chrome_color_id.h b/chrome/browser/ui/color/chrome_color_id.h index fbdb22a..12c3250a 100644 --- a/chrome/browser/ui/color/chrome_color_id.h +++ b/chrome/browser/ui/color/chrome_color_id.h
@@ -395,6 +395,8 @@ E_CPONLY(kColorTabstripLoadingProgressBackground) \ E_CPONLY(kColorTabstripLoadingProgressForeground) \ E_CPONLY(kColorTabstripScrollContainerShadow) \ + E_CPONLY(kColorTabThrobber) \ + E_CPONLY(kColorTabThrobberPreconnect) \ /* Thumbnail tab colors. */ \ E_CPONLY(kColorThumbnailTabBackground) \ E_CPONLY(kColorThumbnailTabForeground) \
diff --git a/chrome/browser/ui/color/chrome_color_mixer.cc b/chrome/browser/ui/color/chrome_color_mixer.cc index 7e24299c..5c43e918 100644 --- a/chrome/browser/ui/color/chrome_color_mixer.cc +++ b/chrome/browser/ui/color/chrome_color_mixer.cc
@@ -589,7 +589,8 @@ mixer[kColorTabstripLoadingProgressForeground] = {ui::kColorAccent}; mixer[kColorTabstripScrollContainerShadow] = ui::SetAlpha(ui::kColorShadowBase, 0x4D); - + mixer[kColorTabThrobber] = {ui::kColorThrobber}; + mixer[kColorTabThrobberPreconnect] = {ui::kColorThrobberPreconnect}; mixer[kColorThumbnailTabBackground] = ui::BlendForMinContrast( ui::kColorAccent, ui::kColorFrameActive, absl::nullopt, color_utils::kMinimumVisibleContrastRatio);
diff --git a/chrome/browser/ui/exclusive_access/fullscreen_controller.cc b/chrome/browser/ui/exclusive_access/fullscreen_controller.cc index 51b540d6..ac9f8b0 100644 --- a/chrome/browser/ui/exclusive_access/fullscreen_controller.cc +++ b/chrome/browser/ui/exclusive_access/fullscreen_controller.cc
@@ -330,7 +330,6 @@ ExclusiveAccessContext* const exclusive_access_context = exclusive_access_manager()->context(); bool exiting_fullscreen = !exclusive_access_context->IsFullscreen(); - PostFullscreenChangeNotification(); if (exiting_fullscreen) { toggled_into_fullscreen_ = false; @@ -341,6 +340,20 @@ } } +void FullscreenController::FullscreenTransititionCompleted() { + if (fullscreen_transition_complete_callback_) + std::move(fullscreen_transition_complete_callback_).Run(); + started_fullscreen_transition_ = false; +} + +void FullscreenController::RunOrDeferUntilTransitionIsComplete( + base::OnceClosure callback) { + if (started_fullscreen_transition_) + fullscreen_transition_complete_callback_ = std::move(callback); + else + std::move(callback).Run(); +} + bool FullscreenController::HandleUserPressedEscape() { WebContents* const active_web_contents = exclusive_access_manager()->context()->GetActiveWebContents(); @@ -438,7 +451,7 @@ return; } #endif - + started_fullscreen_transition_ = true; toggled_into_fullscreen_ = true; bool entering_tab_fullscreen = option == TAB && !tab_fullscreen_; GURL url; @@ -493,6 +506,7 @@ RecordExitingUMA(); toggled_into_fullscreen_ = false; + started_fullscreen_transition_ = true; #if BUILDFLAG(IS_MAC) // Mac windows report a state change instantly, and so we must also clear // state_prior_to_tab_fullscreen_ to match them else other logic using
diff --git a/chrome/browser/ui/exclusive_access/fullscreen_controller.h b/chrome/browser/ui/exclusive_access/fullscreen_controller.h index 58a1ff5..f0841982 100644 --- a/chrome/browser/ui/exclusive_access/fullscreen_controller.h +++ b/chrome/browser/ui/exclusive_access/fullscreen_controller.h
@@ -5,6 +5,7 @@ #ifndef CHROME_BROWSER_UI_EXCLUSIVE_ACCESS_FULLSCREEN_CONTROLLER_H_ #define CHROME_BROWSER_UI_EXCLUSIVE_ACCESS_FULLSCREEN_CONTROLLER_H_ +#include "base/callback.h" #include "base/memory/weak_ptr.h" #include "base/observer_list.h" #include "chrome/browser/ui/exclusive_access/exclusive_access_controller_base.h" @@ -150,9 +151,19 @@ void ExitExclusiveAccessIfNecessary() override; // Callbacks ///////////////////////////////////////////////////////////////// - // Called by Browser::WindowFullscreenStateChanged. + // Called by Browser::WindowFullscreenStateChanged. This is called immediately + // as fullscreen mode is toggled. void WindowFullscreenStateChanged(); + // Called by BrowserView::FullscreenStateChanged. This is called after + // fullscreen mode is toggled and after the transition animation completes. + void FullscreenTransititionCompleted(); + + // Runs the given closure unless a fullscreen transition is currently in + // progress. If a transition is in progress, the execution of the closure is + // deferred and run after the transition is complete. + void RunOrDeferUntilTransitionIsComplete(base::OnceClosure callback); + void set_is_tab_fullscreen_for_testing(bool is_tab_fullscreen) { is_tab_fullscreen_for_testing_ = is_tab_fullscreen; } @@ -217,6 +228,13 @@ // True if this controller has toggled into tab OR browser fullscreen. bool toggled_into_fullscreen_ = false; + // True if the transition to / from fullscreen has started, but not completed. + bool started_fullscreen_transition_ = false; + + // This closure will be called after the transition to / from fullscreen + // is completed. + base::OnceClosure fullscreen_transition_complete_callback_; + // Set in OnTabDeactivated(). Used to see if we're in the middle of // deactivation of a tab. content::WebContents* deactivated_contents_ = nullptr;
diff --git a/chrome/browser/ui/exclusive_access/fullscreen_controller_interactive_browsertest.cc b/chrome/browser/ui/exclusive_access/fullscreen_controller_interactive_browsertest.cc index e6afa47a..b3a5d1b 100644 --- a/chrome/browser/ui/exclusive_access/fullscreen_controller_interactive_browsertest.cc +++ b/chrome/browser/ui/exclusive_access/fullscreen_controller_interactive_browsertest.cc
@@ -200,6 +200,30 @@ ASSERT_NO_FATAL_FAILURE(ToggleTabFullscreen(false)); } +// Tests that the closure provided to RunOrDeferUntilTransitionIsComplete is +// run. Some platforms may be synchronous (lambda is executed immediately) and +// others (e.g. Mac) will run it asynchronously (after the transition). +IN_PROC_BROWSER_TEST_F(FullscreenControllerInteractiveTest, + RunOrDeferClosureDuringTransition) { + WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); + GetFullscreenController()->EnterFullscreenModeForTab(tab->GetMainFrame(), {}); + ASSERT_TRUE(IsWindowFullscreenForTabOrPending()); + + base::RunLoop run_loop; + bool lambda_called = false; + ASSERT_NO_FATAL_FAILURE( + GetFullscreenController()->RunOrDeferUntilTransitionIsComplete( + base::BindLambdaForTesting([&lambda_called, &run_loop]() { + lambda_called = true; + run_loop.Quit(); + }))); + // Lambda may run synchronously on some platforms. If it did not already run, + // block until it has. + if (!lambda_called) + run_loop.Run(); + EXPECT_TRUE(lambda_called); +} + // Test is flaky on Lacros: https://crbug.com/1250091 #if BUILDFLAG(IS_CHROMEOS_LACROS) #define MAYBE_BrowserFullscreenExit DISABLED_BrowserFullscreenExit
diff --git a/chrome/browser/ui/exclusive_access/fullscreen_controller_state_unittest.cc b/chrome/browser/ui/exclusive_access/fullscreen_controller_state_unittest.cc index 098c12cd..c3d55af 100644 --- a/chrome/browser/ui/exclusive_access/fullscreen_controller_state_unittest.cc +++ b/chrome/browser/ui/exclusive_access/fullscreen_controller_state_unittest.cc
@@ -4,6 +4,7 @@ #include "base/command_line.h" #include "base/memory/raw_ptr.h" +#include "base/test/bind.h" #include "base/test/metrics/histogram_tester.h" #include "build/build_config.h" #include "chrome/browser/ui/browser.h" @@ -428,6 +429,31 @@ ->GetExclusiveAccessExitBubbleType()); } +// Tests that RunOrDeferUntilTransitionIsComplete runs the lambda when nothing +// is happening (no transition in progress). +TEST_F(FullscreenControllerStateUnitTest, + RunOrDeferUntilTransitionIsCompleteNow) { + AddTab(browser(), GURL(url::kAboutBlankURL)); + bool lambda_called = false; + GetFullscreenController()->RunOrDeferUntilTransitionIsComplete( + base::BindLambdaForTesting([&lambda_called]() { lambda_called = true; })); + EXPECT_TRUE(lambda_called); +} + +// Tests that RunOrDeferUntilTransitionIsComplete does not run the lambda while +// a transition is in progress and runs it after the transition completes. +TEST_F(FullscreenControllerStateUnitTest, + RunOrDeferUntilTransitionIsCompleteDefer) { + AddTab(browser(), GURL(url::kAboutBlankURL)); + GetFullscreenController()->ToggleBrowserFullscreenMode(); + bool lambda_called = false; + GetFullscreenController()->RunOrDeferUntilTransitionIsComplete( + base::BindLambdaForTesting([&lambda_called]() { lambda_called = true; })); + EXPECT_FALSE(lambda_called); + GetFullscreenController()->FullscreenTransititionCompleted(); + EXPECT_TRUE(lambda_called); +} + // Test that switching tabs takes the browser out of tab fullscreen. TEST_F(FullscreenControllerStateUnitTest, ExitTabFullscreenViaSwitchingTab) { base::HistogramTester histogram_tester;
diff --git a/chrome/browser/ui/tabs/saved_tab_groups/DIR_METADATA b/chrome/browser/ui/tabs/saved_tab_groups/DIR_METADATA new file mode 100644 index 0000000..95433dc --- /dev/null +++ b/chrome/browser/ui/tabs/saved_tab_groups/DIR_METADATA
@@ -0,0 +1,3 @@ +monorail { + component: "UI>Browser>TopChrome>TabStrip>TabGroups" +} \ No newline at end of file
diff --git a/chrome/browser/ui/tabs/saved_tab_groups/OWNERS b/chrome/browser/ui/tabs/saved_tab_groups/OWNERS new file mode 100644 index 0000000..ace7a5e8 --- /dev/null +++ b/chrome/browser/ui/tabs/saved_tab_groups/OWNERS
@@ -0,0 +1,2 @@ +dpenning@chromium.org +dljames@chromium.org \ No newline at end of file
diff --git a/chrome/browser/ui/ui_features.cc b/chrome/browser/ui/ui_features.cc index 9c355de8..1ac9138 100644 --- a/chrome/browser/ui/ui_features.cc +++ b/chrome/browser/ui/ui_features.cc
@@ -240,8 +240,15 @@ // Enables a web-based tab strip. See https://crbug.com/989131. Note this // feature only works when the ENABLE_WEBUI_TAB_STRIP buildflag is enabled. -const base::Feature kWebUITabStrip{"WebUITabStrip", - base::FEATURE_DISABLED_BY_DEFAULT}; +const base::Feature kWebUITabStrip { + "WebUITabStrip", +#if BUILDFLAG(IS_CHROMEOS_ASH) + base::FEATURE_ENABLED_BY_DEFAULT +}; +#else + base::FEATURE_DISABLED_BY_DEFAULT +}; +#endif // The default value of this flag is aligned with platform behavior to handle // context menu with touch.
diff --git a/chrome/browser/ui/user_education/tutorial/tutorial.cc b/chrome/browser/ui/user_education/tutorial/tutorial.cc index 9ce6e94..f78557e 100644 --- a/chrome/browser/ui/user_education/tutorial/tutorial.cc +++ b/chrome/browser/ui/user_education/tutorial/tutorial.cc
@@ -292,8 +292,12 @@ } DCHECK_EQ(current_step, max_progress); + // Note that the step number we are using here is not the same as the the + // InteractionSequence::AbortCallback step (`sequence_step`) which counts all + // steps; `current_step` in this case is the visual bubble count, which does + // not count hidden steps. builder.SetAbortedCallback(base::BindOnce( - [](int step_number, TutorialService* tutorial_service, + [](int step_number, TutorialService* tutorial_service, int sequence_step, ui::TrackedElement* last_element, ui::ElementIdentifier last_id, ui::InteractionSequence::StepType last_step_type, ui::InteractionSequence::AbortedReason aborted_reason) {
diff --git a/chrome/browser/ui/views/autofill/autofill_popup_view_native_views.cc b/chrome/browser/ui/views/autofill/autofill_popup_view_native_views.cc index cc10aae70..c8908f01 100644 --- a/chrome/browser/ui/views/autofill/autofill_popup_view_native_views.cc +++ b/chrome/browser/ui/views/autofill/autofill_popup_view_native_views.cc
@@ -855,10 +855,10 @@ // TODO(crbug.com/831603): Remove elision responsibilities from controller. std::u16string text = popup_view()->controller()->GetSuggestionMainTextAt(GetLineNumber()); - if (popup_view() - ->controller() - ->GetSuggestionAt(GetLineNumber()) - .is_value_secondary) { + if (!popup_view() + ->controller() + ->GetSuggestionAt(GetLineNumber()) + .main_text.is_primary) { std::unique_ptr<views::Label> label = CreateLabelWithStyleAndContext( text, views::style::CONTEXT_DIALOG_BODY_TEXT, UseImprovedSuggestionUi() ? views::style::STYLE_PRIMARY @@ -1279,7 +1279,8 @@ if (!controller) return; - node_data->SetName(controller->GetSuggestionAt(GetLineNumber()).value); + node_data->SetName( + controller->GetSuggestionAt(GetLineNumber()).main_text.value); node_data->role = ax::mojom::Role::kStaticText; }
diff --git a/chrome/browser/ui/views/autofill/autofill_popup_view_native_views_unittest.cc b/chrome/browser/ui/views/autofill/autofill_popup_view_native_views_unittest.cc index b7664b7e..c415d7f2 100644 --- a/chrome/browser/ui/views/autofill/autofill_popup_view_native_views_unittest.cc +++ b/chrome/browser/ui/views/autofill/autofill_popup_view_native_views_unittest.cc
@@ -299,7 +299,6 @@ const std::u16string voice_over_value = u"Password for user@gmail.com"; // Create a realistic suggestion for a password. autofill::Suggestion suggestion(u"user@gmail.com"); - suggestion.is_value_secondary = false; suggestion.label = u"example.com"; suggestion.voice_over = voice_over_value; suggestion.additional_label = u"\u2022\u2022\u2022\u2022";
diff --git a/chrome/browser/ui/views/bookmarks/saved_tab_groups/DIR_METADATA b/chrome/browser/ui/views/bookmarks/saved_tab_groups/DIR_METADATA new file mode 100644 index 0000000..95433dc --- /dev/null +++ b/chrome/browser/ui/views/bookmarks/saved_tab_groups/DIR_METADATA
@@ -0,0 +1,3 @@ +monorail { + component: "UI>Browser>TopChrome>TabStrip>TabGroups" +} \ No newline at end of file
diff --git a/chrome/browser/ui/views/bookmarks/saved_tab_groups/OWNERS b/chrome/browser/ui/views/bookmarks/saved_tab_groups/OWNERS new file mode 100644 index 0000000..0e5cc4c0 --- /dev/null +++ b/chrome/browser/ui/views/bookmarks/saved_tab_groups/OWNERS
@@ -0,0 +1 @@ +file://chrome/browser/ui/tabs/saved_tab_groups/OWNERS \ No newline at end of file
diff --git a/chrome/browser/ui/views/frame/browser_view.cc b/chrome/browser/ui/views/frame/browser_view.cc index 87227072..af434ef 100644 --- a/chrome/browser/ui/views/frame/browser_view.cc +++ b/chrome/browser/ui/views/frame/browser_view.cc
@@ -1821,6 +1821,10 @@ UpdateWindowControlsOverlayEnabled(); #endif // BUILDFLAG(IS_MAC) + + GetExclusiveAccessManager() + ->fullscreen_controller() + ->FullscreenTransititionCompleted(); } void BrowserView::SetToolbarButtonProvider(ToolbarButtonProvider* provider) { @@ -4065,6 +4069,13 @@ } browser_->WindowFullscreenStateChanged(); +#if !BUILDFLAG(IS_MAC) + // On Mac platforms, FullscreenStateChanged() is invoked from + // BrowserFrameMac::OnWindowFullscreenTransitionComplete when the asynchronous + // fullscreen transition is complete. On other platforms, there is no + // asynchronous transition so we synchronously invoke the function. + FullscreenStateChanged(); +#endif if (fullscreen && !chrome::IsRunningInAppMode()) { UpdateExclusiveAccessExitBubbleContent(
diff --git a/chrome/browser/ui/views/webid/account_selection_bubble_view.cc b/chrome/browser/ui/views/webid/account_selection_bubble_view.cc index b798247..982a843 100644 --- a/chrome/browser/ui/views/webid/account_selection_bubble_view.cc +++ b/chrome/browser/ui/views/webid/account_selection_bubble_view.cc
@@ -149,19 +149,12 @@ weak_ptr_factory_.GetWeakPtr(), account), l10n_util::GetStringFUTF16(IDS_ACCOUNT_SELECTION_CONTINUE, base::UTF8ToUTF16(display_name))); + button->SetCornerRadius(kButtonRadius); button->SetHorizontalAlignment(gfx::HorizontalAlignment::ALIGN_CENTER); - if (brand_background_color_) { - button->SetBackground(views::CreateRoundedRectBackground( - *brand_background_color_, kButtonRadius)); - } - if (brand_text_color_) { - button->SetTextColor(views::Button::ButtonState::STATE_NORMAL, - *brand_text_color_); - button->SetTextColor(views::Button::ButtonState::STATE_HOVERED, - *brand_text_color_); - button->SetTextColor(views::Button::ButtonState::STATE_PRESSED, - *brand_text_color_); - } + if (brand_background_color_) + button->SetBgColorOverride(*brand_background_color_); + if (brand_text_color_) + button->SetEnabledTextColors(brand_text_color_); button->SetProminent(true); row->AddChildView(std::move(button));
diff --git a/chrome/browser/ui/webui/chromeos/login/core_oobe_handler.cc b/chrome/browser/ui/webui/chromeos/login/core_oobe_handler.cc index 30ee6935..16f3c9a 100644 --- a/chrome/browser/ui/webui/chromeos/login/core_oobe_handler.cc +++ b/chrome/browser/ui/webui/chromeos/login/core_oobe_handler.cc
@@ -319,8 +319,6 @@ DemoSession::DemoModeConfig config; if (demo_config == "online") { config = DemoSession::DemoModeConfig::kOnline; - } else if (demo_config == "offline") { - config = DemoSession::DemoModeConfig::kOffline; } else { NOTREACHED() << "Unknown demo config passed for tests"; }
diff --git a/chrome/browser/ui/webui/chromeos/login/enrollment_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/enrollment_screen_handler.cc index 7817753d..e168395 100644 --- a/chrome/browser/ui/webui/chromeos/login/enrollment_screen_handler.cc +++ b/chrome/browser/ui/webui/chromeos/login/enrollment_screen_handler.cc
@@ -79,8 +79,8 @@ std::string EnrollmentModeToUIMode(policy::EnrollmentConfig::Mode mode) { switch (mode) { case policy::EnrollmentConfig::MODE_NONE: - case policy::EnrollmentConfig::MODE_OFFLINE_DEMO: case policy::EnrollmentConfig::OBSOLETE_MODE_ENROLLED_ROLLBACK: + case policy::EnrollmentConfig::MODE_OFFLINE_DEMO_DEPRECATED: break; case policy::EnrollmentConfig::MODE_MANUAL: case policy::EnrollmentConfig::MODE_MANUAL_REENROLLMENT: @@ -624,12 +624,6 @@ ShowError(IDS_ENTERPRISE_ENROLLMENT_ERROR_SAVE_DEVICE_CONFIGURATION, false); return; - case policy::EnrollmentStatus::OFFLINE_POLICY_LOAD_FAILED: - case policy::EnrollmentStatus::OFFLINE_POLICY_DECODING_FAILED: - // OFFLINE_POLICY_LOAD_FAILED and OFFLINE_POLICY_DECODING_FAILED happen - // only within MODE_OFFLINE_DEMO flow, which shouldn't happen here. - NOTREACHED(); - return; case policy::EnrollmentStatus::MAY_NOT_BLOCK_DEV_MODE: ShowError(IDS_ENTERPRISE_ENROLLMENT_ERROR_MAY_NOT_BLOCK_DEV_MODE, false); return;
diff --git a/chrome/browser/ui/webui/chromeos/login/network_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/network_screen_handler.cc index c5c3127..df3efbb 100644 --- a/chrome/browser/ui/webui/chromeos/login/network_screen_handler.cc +++ b/chrome/browser/ui/webui/chromeos/login/network_screen_handler.cc
@@ -77,10 +77,6 @@ CallJS("login.NetworkScreen.setError", std::string()); } -void NetworkScreenHandler::SetOfflineDemoModeEnabled(bool enabled) { - CallJS("login.NetworkScreen.setOfflineDemoModeEnabled", enabled); -} - void NetworkScreenHandler::DeclareLocalizedValues( ::login::LocalizedValuesBuilder* builder) { builder->Add("networkSectionTitle", IDS_NETWORK_SELECTION_TITLE); @@ -88,8 +84,6 @@ builder->Add("proxySettingsListItemName", IDS_NETWORK_PROXY_SETTINGS_LIST_ITEM_NAME); builder->Add("addWiFiListItemName", IDS_NETWORK_ADD_WI_FI_LIST_ITEM_NAME); - builder->Add("offlineDemoSetupListItemName", - IDS_NETWORK_OFFLINE_DEMO_SETUP_LIST_ITEM_NAME); ui::network_element::AddLocalizedValuesToBuilder(builder); cellular_setup::AddLocalizedValuesToBuilder(builder); }
diff --git a/chrome/browser/ui/webui/chromeos/login/network_screen_handler.h b/chrome/browser/ui/webui/chromeos/login/network_screen_handler.h index 4864a88b..173f08c 100644 --- a/chrome/browser/ui/webui/chromeos/login/network_screen_handler.h +++ b/chrome/browser/ui/webui/chromeos/login/network_screen_handler.h
@@ -40,9 +40,6 @@ // Hides error messages showing no error state. virtual void ClearErrors() = 0; - - // Enables or disables offline Demo Mode during Demo Mode network selection. - virtual void SetOfflineDemoModeEnabled(bool enabled) = 0; }; // WebUI implementation of NetworkScreenView. It is used to interact with @@ -67,7 +64,6 @@ void Unbind() override; void ShowError(const std::u16string& message) override; void ClearErrors() override; - void SetOfflineDemoModeEnabled(bool enabled) override; // BaseScreenHandler: void DeclareLocalizedValues(
diff --git a/chrome/browser/ui/webui/media/media_engagement_ui.cc b/chrome/browser/ui/webui/media/media_engagement_ui.cc index dbb87b3..529948c4 100644 --- a/chrome/browser/ui/webui/media/media_engagement_ui.cc +++ b/chrome/browser/ui/webui/media/media_engagement_ui.cc
@@ -18,7 +18,7 @@ #include "chrome/browser/media/media_engagement_service.h" #include "chrome/browser/profiles/profile.h" #include "chrome/common/url_constants.h" -#include "chrome/grit/dev_ui_browser_resources.h" +#include "chrome/grit/media_resources.h" #include "components/component_updater/component_updater_service.h" #include "content/public/browser/render_view_host.h" #include "content/public/browser/web_contents.h" @@ -151,10 +151,11 @@ network::mojom::CSPDirectiveName::ScriptSrc, "script-src chrome://resources chrome://webui-test 'self';"); - source->AddResourcePath("media_engagement.js", IDR_MEDIA_ENGAGEMENT_JS); - source->AddResourcePath("media_engagement_score_details.mojom-webui.js", - IDR_MEDIA_ENGAGEMENT_SCORE_DETAILS_MOJOM_WEBUI_JS); - source->SetDefaultResource(IDR_MEDIA_ENGAGEMENT_HTML); + source->AddResourcePath("media_engagement.js", IDR_MEDIA_MEDIA_ENGAGEMENT_JS); + source->AddResourcePath( + "media_engagement_score_details.mojom-webui.js", + IDR_MEDIA_MEDIA_ENGAGEMENT_SCORE_DETAILS_MOJOM_WEBUI_JS); + source->SetDefaultResource(IDR_MEDIA_MEDIA_ENGAGEMENT_HTML); content::WebUIDataSource::Add(Profile::FromWebUI(web_ui), source.release()); }
diff --git a/chrome/browser/ui/webui/media/media_history_ui.cc b/chrome/browser/ui/webui/media/media_history_ui.cc index 48edd69..c29e5824 100644 --- a/chrome/browser/ui/webui/media/media_history_ui.cc +++ b/chrome/browser/ui/webui/media/media_history_ui.cc
@@ -12,7 +12,7 @@ #include "chrome/browser/media/history/media_history_store.h" #include "chrome/browser/profiles/profile.h" #include "chrome/common/url_constants.h" -#include "chrome/grit/dev_ui_browser_resources.h" +#include "chrome/grit/media_resources.h" #include "content/public/browser/render_view_host.h" #include "content/public/browser/web_contents.h" #include "content/public/browser/web_ui.h" @@ -30,13 +30,13 @@ source->OverrideContentSecurityPolicy( network::mojom::CSPDirectiveName::TrustedTypes, "trusted-types static-types;"); - source->AddResourcePath("media_data_table.js", IDR_MEDIA_DATA_TABLE_JS); - source->AddResourcePath("media_history.js", IDR_MEDIA_HISTORY_JS); + source->AddResourcePath("media_data_table.js", IDR_MEDIA_MEDIA_DATA_TABLE_JS); + source->AddResourcePath("media_history.js", IDR_MEDIA_MEDIA_HISTORY_JS); source->AddResourcePath("media_session.mojom-webui.js", - IDR_MEDIA_SESSION_MOJOM_WEBUI_JS); + IDR_MEDIA_MEDIA_SESSION_MOJOM_WEBUI_JS); source->AddResourcePath("media_history_store.mojom-webui.js", - IDR_MEDIA_HISTORY_STORE_MOJOM_WEBUI_JS); - source->SetDefaultResource(IDR_MEDIA_HISTORY_HTML); + IDR_MEDIA_MEDIA_HISTORY_STORE_MOJOM_WEBUI_JS); + source->SetDefaultResource(IDR_MEDIA_MEDIA_HISTORY_HTML); content::WebUIDataSource::Add(Profile::FromWebUI(web_ui), source.release()); }
diff --git a/chrome/browser/ui/webui/media/webrtc_logs_ui.cc b/chrome/browser/ui/webui/media/webrtc_logs_ui.cc index 8dcbef4..008ef35d 100644 --- a/chrome/browser/ui/webui/media/webrtc_logs_ui.cc +++ b/chrome/browser/ui/webui/media/webrtc_logs_ui.cc
@@ -26,8 +26,7 @@ #include "chrome/browser/ui/webui/webui_util.h" #include "chrome/common/url_constants.h" #include "chrome/grit/generated_resources.h" -#include "chrome/grit/webrtc_logs_resources.h" -#include "chrome/grit/webrtc_logs_resources_map.h" +#include "chrome/grit/media_resources.h" #include "components/prefs/pref_service.h" #include "components/upload_list/upload_list.h" #include "components/version_info/version_info.h" @@ -37,7 +36,6 @@ #include "content/public/browser/web_ui.h" #include "content/public/browser/web_ui_data_source.h" #include "content/public/browser/web_ui_message_handler.h" -#include "ui/base/webui/web_ui_util.h" using content::WebContents; using content::WebUIMessageHandler; @@ -75,9 +73,10 @@ source->AddLocalizedStrings(kStrings); source->UseStringsJs(); - source->AddResourcePaths( - base::make_span(kWebrtcLogsResources, kWebrtcLogsResourcesSize)); - source->SetDefaultResource(IDR_WEBRTC_LOGS_WEBRTC_LOGS_HTML); + + source->AddResourcePath("webrtc_logs.css", IDR_MEDIA_WEBRTC_LOGS_CSS); + source->AddResourcePath("webrtc_logs.js", IDR_MEDIA_WEBRTC_LOGS_JS); + source->SetDefaultResource(IDR_MEDIA_WEBRTC_LOGS_HTML); return source; }
diff --git a/chrome/browser/ui/webui/sync_file_system_internals/extension_statuses_handler.cc b/chrome/browser/ui/webui/sync_file_system_internals/extension_statuses_handler.cc index 0513926..44b93f0 100644 --- a/chrome/browser/ui/webui/sync_file_system_internals/extension_statuses_handler.cc +++ b/chrome/browser/ui/webui/sync_file_system_internals/extension_statuses_handler.cc
@@ -56,11 +56,11 @@ if (!extension) continue; - auto dict = std::make_unique<base::DictionaryValue>(); - dict->SetStringKey("extensionID", extension_id); - dict->SetStringKey("extensionName", extension->name()); - dict->SetStringKey("status", itr->second); - list.Append(std::move(dict)); + base::Value::Dict dict; + dict.Set("extensionID", extension_id); + dict.Set("extensionName", extension->name()); + dict.Set("status", itr->second); + list.GetList().Append(std::move(dict)); } std::move(callback).Run(list);
diff --git a/chrome/browser/ui/webui/tab_strip/tab_strip_page_handler.cc b/chrome/browser/ui/webui/tab_strip/tab_strip_page_handler.cc index 3fc465907..9e1de42 100644 --- a/chrome/browser/ui/webui/tab_strip/tab_strip_page_handler.cc +++ b/chrome/browser/ui/webui/tab_strip/tab_strip_page_handler.cc
@@ -613,11 +613,11 @@ /* 16% opacity */ 0.16 * 255)); std::string throbber_color = color_utils::SkColorToRgbaString( - embedder_->GetColorProviderColor(ui::kColorThrobber)); + embedder_->GetColorProviderColor(kColorTabThrobber)); colors["--tabstrip-tab-loading-spinning-color"] = throbber_color; colors["--tabstrip-tab-waiting-spinning-color"] = color_utils::SkColorToRgbaString( - embedder_->GetColorProviderColor(ui::kColorThrobberPreconnect)); + embedder_->GetColorProviderColor(kColorTabThrobberPreconnect)); colors["--tabstrip-indicator-recording-color"] = color_utils::SkColorToRgbaString( embedder_->GetColorProviderColor(ui::kColorAlertHighSeverity));
diff --git a/chrome/build/win32.pgo.txt b/chrome/build/win32.pgo.txt index 23c536c..1159161 100644 --- a/chrome/build/win32.pgo.txt +++ b/chrome/build/win32.pgo.txt
@@ -1 +1 @@ -chrome-win32-main-1651600749-d0a64482b90fc48678043c783c6485c105cc8bf9.profdata +chrome-win32-main-1651611550-c41fa3de2667b4f925f270ebcd86e613569e2d1c.profdata
diff --git a/chrome/build/win64.pgo.txt b/chrome/build/win64.pgo.txt index 3a86406..d22188ae 100644 --- a/chrome/build/win64.pgo.txt +++ b/chrome/build/win64.pgo.txt
@@ -1 +1 @@ -chrome-win64-main-1651600749-d084d138bfab0079c439eb7dadd28c89c47026ab.profdata +chrome-win64-main-1651611550-85ca67659e73b68ea2ad9d7fe48db23c56e0cd39.profdata
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn index 55c1e4f..df50769 100644 --- a/chrome/test/BUILD.gn +++ b/chrome/test/BUILD.gn
@@ -2464,6 +2464,7 @@ "../browser/apps/app_shim/app_shim_listener_browsertest_mac.mm", "../browser/apps/app_shim/test/app_shim_listener_test_api_mac.cc", "../browser/apps/app_shim/test/app_shim_listener_test_api_mac.h", + "../browser/headless/headless_mode_browsertest_mac.mm", "../browser/mac/auth_session_request_browsertest.mm", "../browser/renderer_host/chrome_render_widget_host_view_mac_history_swiper_browsertest.mm", "../browser/spellchecker/spell_check_host_chrome_impl_mac_browsertest.cc",
diff --git a/chrome/test/data/webrtc/capturing_page_embedded.html b/chrome/test/data/webrtc/capturing_page_embedded.html index 67e1253..b9391c1c 100644 --- a/chrome/test/data/webrtc/capturing_page_embedded.html +++ b/chrome/test/data/webrtc/capturing_page_embedded.html
@@ -57,11 +57,8 @@ } function onCaptureHandleChange(event) { - if (event == undefined || event.captureHandle == undefined) { - throw "Unexpected event type."; - } window.domAutomationController.send( - JSON.stringify(event.captureHandle()) + JSON.stringify(event.target.getCaptureHandle()) ); }
diff --git a/chrome/test/data/webrtc/capturing_page_main.html b/chrome/test/data/webrtc/capturing_page_main.html index c1812e6..44b3d58 100644 --- a/chrome/test/data/webrtc/capturing_page_main.html +++ b/chrome/test/data/webrtc/capturing_page_main.html
@@ -81,13 +81,10 @@ } function onCaptureHandleChange(event) { - if (!event || !event.captureHandle) { - throw "Unexpected event type."; - } // Note that JSON.stringify(null) yields 'null'. On the other hand, // JSON.stringify(undefined) yields undefined (not the string). window.domAutomationController.send( - JSON.stringify(event.captureHandle()) + JSON.stringify(event.target.getCaptureHandle()) ); }
diff --git a/chrome/test/data/webui/new_tab_page/modules/modules_test.ts b/chrome/test/data/webui/new_tab_page/modules/modules_test.ts index 1174826..c6a6dcb 100644 --- a/chrome/test/data/webui/new_tab_page/modules/modules_test.ts +++ b/chrome/test/data/webui/new_tab_page/modules/modules_test.ts
@@ -910,5 +910,111 @@ assertEquals(1, moduleWrappers.indexOf(tallModule)); assertEquals(2, moduleWrappers.indexOf(shortModule2)); }); + + test('hidden module goes to end of NTP when layout changes', async () => { + // Arrange. + let restoreCalled = false; + const moduleArray = []; + for (let i = 0; i < 3; ++i) { + const module = createElement(); + moduleArray.push(module); + } + const fooDescriptor = new ModuleDescriptorV2( + 'foo', 'Foo', ModuleHeight.TALL, async () => createElement()); + const barDescriptor = new ModuleDescriptorV2( + 'bar', 'Bar', ModuleHeight.SHORT, async () => createElement()); + const fooBarDescriptor = new ModuleDescriptorV2( + 'foo bar', 'Foo Baz', ModuleHeight.SHORT, + async () => createElement()); + + moduleRegistry.setResultFor( + 'getDescriptors', [fooDescriptor, barDescriptor, fooBarDescriptor]); + const modulesElement = await createModulesElement([ + { + descriptor: fooDescriptor, + element: moduleArray[0]!, + }, + { + descriptor: barDescriptor, + element: moduleArray[1]!, + }, + { + descriptor: fooBarDescriptor, + element: moduleArray[2]!, + }, + ]); + callbackRouterRemote.setDisabledModules(false, []); + await callbackRouterRemote.$.flushForTesting(); + + let moduleWrappers = Array.from( + modulesElement.shadowRoot!.querySelectorAll('ntp-module-wrapper')); + const tallModule = moduleWrappers[0]; + const shortModule1 = moduleWrappers[1]; + const shortModule2 = moduleWrappers[2]; + assertTrue(!!tallModule); + assertTrue(!!shortModule1); + assertTrue(!!shortModule2); + assertStyle(tallModule, 'cursor', 'grab'); + assertStyle(shortModule1, 'cursor', 'grab'); + assertStyle(shortModule2, 'cursor', 'grab'); + + // Act. + moduleWrappers[1]!.dispatchEvent(new CustomEvent('disable-module', { + bubbles: true, + composed: true, + detail: { + message: 'Bar', + restoreCallback: () => { + restoreCalled = true; + }, + }, + })); + + // Assert. + assertDeepEquals(['bar', true], handler.getArgs('setModuleDisabled')[0]); + + // Act. + callbackRouterRemote.setDisabledModules(false, ['bar']); + await callbackRouterRemote.$.flushForTesting(); + + // Assert. + assertFalse(restoreCalled); + moduleWrappers = Array.from( + modulesElement.shadowRoot!.querySelectorAll('ntp-module-wrapper')); + assertEquals(0, moduleWrappers.indexOf(tallModule)); + assertEquals(1, moduleWrappers.indexOf(shortModule1)); + assertEquals(2, moduleWrappers.indexOf(shortModule2)); + + // Act. + tallModule.dispatchEvent(new MouseEvent('mousedown')); + document.dispatchEvent(new MouseEvent('mousemove')); + + // Act. + shortModule2.dispatchEvent(new MouseEvent('mouseover')); + + // Assert. + moduleWrappers = Array.from( + modulesElement.shadowRoot!.querySelectorAll('ntp-module-wrapper')); + assertEquals(0, moduleWrappers.indexOf(shortModule2)); + assertEquals(1, moduleWrappers.indexOf(tallModule)); + assertEquals(2, moduleWrappers.indexOf(shortModule1)); + + // Act. + modulesElement.$.undoRemoveModuleButton.click(); + + // Assert. + assertDeepEquals(['bar', false], handler.getArgs('setModuleDisabled')[1]); + + // Act. + callbackRouterRemote.setDisabledModules(false, []); + await callbackRouterRemote.$.flushForTesting(); + + // Assert. + moduleWrappers = Array.from( + modulesElement.shadowRoot!.querySelectorAll('ntp-module-wrapper')); + assertEquals(0, moduleWrappers.indexOf(shortModule2)); + assertEquals(1, moduleWrappers.indexOf(tallModule)); + assertEquals(2, moduleWrappers.indexOf(shortModule1)); + }); }); });
diff --git a/chrome/test/interaction/interaction_sequence_browser_util.cc b/chrome/test/interaction/interaction_sequence_browser_util.cc index d628aad6..829ee0f0 100644 --- a/chrome/test/interaction/interaction_sequence_browser_util.cc +++ b/chrome/test/interaction/interaction_sequence_browser_util.cc
@@ -96,6 +96,19 @@ return model->GetWebContentsAt(tab_index.value_or(model->active_index())); } +// Provides a template function for "does this element exist" queries. +// Will return on_missing_selector if 'err?.selector' is valid. +// Will return on_found if el is valid. +std::string GetExistsQuery(const char* on_missing_selector, + const char* on_found) { + return base::StringPrintf(R"((el, err) => { + if (err?.selector) return %s; + if (err) throw err; + return %s; + })", + on_missing_selector, on_found); +} + // Our replacement for content::EvalJs() that uses the same underlying logic as // ExecuteScriptAndExtract*(), because EvalJs() is not compatible with Content // Security Policy of many internal pages we want to test :( @@ -273,7 +286,7 @@ class InteractionSequenceBrowserUtil::Poller { public: Poller(InteractionSequenceBrowserUtil* const owner, - const std::string function, + const std::string& function, const DeepQuery& where, absl::optional<base::TimeDelta> timeout, base::TimeDelta interval) @@ -631,9 +644,27 @@ CHECK(configuration.event); CHECK(configuration.timeout.has_value() || !configuration.timeout_event) << "Cannot specify timeout event without timeout."; + + // Determine the actual query we should use; for kConditionTrue we can use + // configuration.test_function directly, but for the other options we need to + // modify it. + std::string actual_func; + switch (configuration.type) { + case StateChange::Type::kExists: + DCHECK(configuration.test_function.empty()); + actual_func = GetExistsQuery("false", "true"); + break; + case StateChange::Type::kConditionTrue: + actual_func = configuration.test_function; + break; + case StateChange::Type::kExistsAndConditionTrue: + const std::string on_found = "(" + configuration.test_function + ")(el)"; + actual_func = GetExistsQuery("false", on_found.c_str()); + break; + } + PollerData poller_data{ - std::make_unique<Poller>(this, configuration.test_function, - configuration.where, + std::make_unique<Poller>(this, actual_func, configuration.where, configuration.timeout, configuration.polling_interval), configuration.event, configuration.timeout_event}; @@ -644,11 +675,8 @@ bool InteractionSequenceBrowserUtil::Exists(const DeepQuery& query, std::string* not_found) { - const std::string full_query = CreateDeepQuery(query, R"((el, err) => { - if (err?.selector) return err.selector; - if (err) throw err; - return ''; - })"); + const std::string full_query = + CreateDeepQuery(query, GetExistsQuery("err.selector", "''")); const std::string result = Evaluate(full_query).GetString(); if (not_found) *not_found = result;
diff --git a/chrome/test/interaction/interaction_sequence_browser_util.h b/chrome/test/interaction/interaction_sequence_browser_util.h index 5faddf8..a6887e7 100644 --- a/chrome/test/interaction/interaction_sequence_browser_util.h +++ b/chrome/test/interaction/interaction_sequence_browser_util.h
@@ -70,6 +70,23 @@ StateChange& operator=(StateChange&& other); ~StateChange(); + // What type of state change are we watching for? + enum class Type { + // Triggers when `test_function`, evaluated at `where`, returns true. + // If `where` does not exist, an error is generated. + kConditionTrue, + // Triggers when the element specified by `where` exists in the DOM. + // The `test_function` field is ignored. + kExists, + // Triggers when the element specified by `where` exists in the DOM *and* + // `test_function` evaluates to true. + kExistsAndConditionTrue + }; + + // By default we want to check `test_function` and assume the element + // exists. + Type type = Type::kConditionTrue; + // Function to be evaluated every `polling_interval`. Must be able to // execute multiple times successfully. State change is detected when this // script returns a "truthy" value.
diff --git a/chrome/test/interaction/interaction_sequence_browser_util_browsertest.cc b/chrome/test/interaction/interaction_sequence_browser_util_browsertest.cc index 0980c96..6aaef0d 100644 --- a/chrome/test/interaction/interaction_sequence_browser_util_browsertest.cc +++ b/chrome/test/interaction/interaction_sequence_browser_util_browsertest.cc
@@ -35,6 +35,11 @@ DEFINE_LOCAL_CUSTOM_ELEMENT_EVENT_TYPE(kInteractionTestUtilCustomEventType); DEFINE_LOCAL_CUSTOM_ELEMENT_EVENT_TYPE(kInteractionTestUtilCustomEventType2); +constexpr char kEmptyDocumentURL[] = "/empty.html"; +constexpr char kDocumentWithTitle1URL[] = "/title1.html"; +constexpr char kDocumentWithTitle2URL[] = "/title2.html"; +constexpr char kDocumentWithLinksURL[] = "/links.html"; + } // namespace class InteractionSequenceBrowserUtilTest : public InProcessBrowserTest { @@ -141,7 +146,7 @@ UNCALLED_MOCK_CALLBACK(ui::InteractionSequence::CompletedCallback, completed); UNCALLED_MOCK_CALLBACK(ui::InteractionSequence::AbortedCallback, aborted); - const GURL url = embedded_test_server()->GetURL("/empty.html"); + const GURL url = embedded_test_server()->GetURL(kEmptyDocumentURL); auto util = InteractionSequenceBrowserUtil::ForExistingTabInBrowser( browser(), kInteractionSequenceBrowserUtilTestId); @@ -178,7 +183,7 @@ UNCALLED_MOCK_CALLBACK(ui::InteractionSequence::CompletedCallback, completed); UNCALLED_MOCK_CALLBACK(ui::InteractionSequence::AbortedCallback, aborted); - const GURL url = embedded_test_server()->GetURL("/empty.html"); + const GURL url = embedded_test_server()->GetURL(kEmptyDocumentURL); auto util = InteractionSequenceBrowserUtil::ForExistingTabInBrowser( browser(), kInteractionSequenceBrowserUtilTestId); @@ -214,7 +219,7 @@ UNCALLED_MOCK_CALLBACK(ui::InteractionSequence::CompletedCallback, completed); UNCALLED_MOCK_CALLBACK(ui::InteractionSequence::AbortedCallback, aborted); - const GURL url = embedded_test_server()->GetURL("/empty.html"); + const GURL url = embedded_test_server()->GetURL(kEmptyDocumentURL); auto util = InteractionSequenceBrowserUtil::ForExistingTabInBrowser( browser(), kInteractionSequenceBrowserUtilTestId); @@ -263,7 +268,7 @@ UNCALLED_MOCK_CALLBACK(ui::InteractionSequence::CompletedCallback, completed); UNCALLED_MOCK_CALLBACK(ui::InteractionSequence::AbortedCallback, aborted); - const GURL url = embedded_test_server()->GetURL("/empty.html"); + const GURL url = embedded_test_server()->GetURL(kEmptyDocumentURL); auto util = InteractionSequenceBrowserUtil::ForExistingTabInBrowser( browser(), kInteractionSequenceBrowserUtilTestId); @@ -304,8 +309,8 @@ UNCALLED_MOCK_CALLBACK(ui::InteractionSequence::AbortedCallback, aborted); // Do two navigations, then go back, then forward again. - const GURL url = embedded_test_server()->GetURL("/title1.html"); - const GURL url2 = embedded_test_server()->GetURL("/title2.html"); + const GURL url = embedded_test_server()->GetURL(kDocumentWithTitle1URL); + const GURL url2 = embedded_test_server()->GetURL(kDocumentWithTitle2URL); auto util = InteractionSequenceBrowserUtil::ForExistingTabInBrowser( browser(), kInteractionSequenceBrowserUtilTestId); @@ -725,11 +730,358 @@ } IN_PROC_BROWSER_TEST_F(InteractionSequenceBrowserUtilTest, + SendEventOnStateChangeOnAlreadyExists) { + UNCALLED_MOCK_CALLBACK(ui::InteractionSequence::CompletedCallback, completed); + UNCALLED_MOCK_CALLBACK(ui::InteractionSequence::AbortedCallback, aborted); + + auto util = InteractionSequenceBrowserUtil::ForExistingTabInBrowser( + browser(), kInteractionSequenceBrowserUtilTestId); + const GURL url = embedded_test_server()->GetURL(kDocumentWithLinksURL); + util->LoadPage(url); + const InteractionSequenceBrowserUtil::DeepQuery kQuery = {"a#title1"}; + + auto sequence = + ui::InteractionSequence::Builder() + .SetCompletedCallback(completed.Get()) + .SetAbortedCallback(aborted.Get()) + .SetContext(browser()->window()->GetElementContext()) + .AddStep(ui::InteractionSequence::StepBuilder() + .SetType(ui::InteractionSequence::StepType::kShown) + .SetElementID(kInteractionSequenceBrowserUtilTestId) + .SetStartCallback(base::BindLambdaForTesting( + [&](ui::InteractionSequence* sequence, + ui::TrackedElement* element) { + InteractionSequenceBrowserUtil::StateChange + state_change; + state_change.type = + InteractionSequenceBrowserUtil::StateChange:: + Type::kExists; + state_change.where = kQuery; + state_change.event = + kInteractionTestUtilCustomEventType; + util->SendEventOnStateChange(state_change); + })) + .Build()) + .AddStep(ui::InteractionSequence::StepBuilder() + .SetType(ui::InteractionSequence::StepType::kCustomEvent, + kInteractionTestUtilCustomEventType) + .SetElementID(kInteractionSequenceBrowserUtilTestId) + .SetStartCallback(base::BindLambdaForTesting( + [&](ui::InteractionSequence* sequence, + ui::TrackedElement* element) { + EXPECT_TRUE(util->Exists(kQuery)); + })) + .Build()) + .Build(); + + EXPECT_CALL_IN_SCOPE(completed, Run, sequence->RunSynchronouslyForTesting()); +} + +IN_PROC_BROWSER_TEST_F(InteractionSequenceBrowserUtilTest, + SendEventOnStateChangeOnExistsAfterDelay) { + UNCALLED_MOCK_CALLBACK(ui::InteractionSequence::CompletedCallback, completed); + UNCALLED_MOCK_CALLBACK(ui::InteractionSequence::AbortedCallback, aborted); + + auto util = InteractionSequenceBrowserUtil::ForExistingTabInBrowser( + browser(), kInteractionSequenceBrowserUtilTestId); + const GURL url = embedded_test_server()->GetURL(kDocumentWithLinksURL); + util->LoadPage(url); + const InteractionSequenceBrowserUtil::DeepQuery kQuery = {"ul#foo"}; + + auto sequence = + ui::InteractionSequence::Builder() + .SetCompletedCallback(completed.Get()) + .SetAbortedCallback(aborted.Get()) + .SetContext(browser()->window()->GetElementContext()) + .AddStep(ui::InteractionSequence::StepBuilder() + .SetType(ui::InteractionSequence::StepType::kShown) + .SetElementID(kInteractionSequenceBrowserUtilTestId) + .SetStartCallback(base::BindLambdaForTesting( + [&](ui::InteractionSequence* sequence, + ui::TrackedElement* element) { + util->Evaluate( + R"(function () { + setTimeout( + function() { + let el = document.createElement('ul'); + el.id = 'foo'; + document.body.appendChild(el); + }, + 300); + })"); + InteractionSequenceBrowserUtil::StateChange + state_change; + state_change.type = + InteractionSequenceBrowserUtil::StateChange:: + Type::kExists; + state_change.where = kQuery; + state_change.event = + kInteractionTestUtilCustomEventType; + util->SendEventOnStateChange(state_change); + EXPECT_FALSE(util->Exists(kQuery)); + })) + .Build()) + .AddStep(ui::InteractionSequence::StepBuilder() + .SetType(ui::InteractionSequence::StepType::kCustomEvent, + kInteractionTestUtilCustomEventType) + .SetElementID(kInteractionSequenceBrowserUtilTestId) + .SetStartCallback(base::BindLambdaForTesting( + [&](ui::InteractionSequence* sequence, + ui::TrackedElement* element) { + EXPECT_TRUE(util->Exists(kQuery)); + })) + .Build()) + .Build(); + + EXPECT_CALL_IN_SCOPE(completed, Run, sequence->RunSynchronouslyForTesting()); +} + +IN_PROC_BROWSER_TEST_F(InteractionSequenceBrowserUtilTest, + StateChangeExistsTimeoutSendsEvent) { + UNCALLED_MOCK_CALLBACK(ui::InteractionSequence::CompletedCallback, completed); + UNCALLED_MOCK_CALLBACK(ui::InteractionSequence::AbortedCallback, aborted); + + auto util = InteractionSequenceBrowserUtil::ForExistingTabInBrowser( + browser(), kInteractionSequenceBrowserUtilTestId); + const GURL url = embedded_test_server()->GetURL(kDocumentWithLinksURL); + util->LoadPage(url); + const InteractionSequenceBrowserUtil::DeepQuery kQuery = {"ul#foo"}; + + auto sequence = + ui::InteractionSequence::Builder() + .SetCompletedCallback(completed.Get()) + .SetAbortedCallback(aborted.Get()) + .SetContext(browser()->window()->GetElementContext()) + .AddStep(ui::InteractionSequence::StepBuilder() + .SetType(ui::InteractionSequence::StepType::kShown) + .SetElementID(kInteractionSequenceBrowserUtilTestId) + .SetStartCallback(base::BindLambdaForTesting( + [&](ui::InteractionSequence* sequence, + ui::TrackedElement* element) { + util->Evaluate( + R"(function () { + setTimeout( + function() { + let el = document.createElement('ul'); + el.id = 'foo'; + document.body.appendChild(el); + }, + 1000); + })"); + InteractionSequenceBrowserUtil::StateChange + state_change; + state_change.type = + InteractionSequenceBrowserUtil::StateChange:: + Type::kExists; + state_change.where = kQuery; + state_change.event = + kInteractionTestUtilCustomEventType; + state_change.timeout = base::Milliseconds(300); + state_change.timeout_event = + kInteractionTestUtilCustomEventType2; + util->SendEventOnStateChange(state_change); + })) + .Build()) + .AddStep(ui::InteractionSequence::StepBuilder() + .SetType(ui::InteractionSequence::StepType::kCustomEvent, + kInteractionTestUtilCustomEventType2) + .SetElementID(kInteractionSequenceBrowserUtilTestId) + .Build()) + .Build(); + + EXPECT_CALL_IN_SCOPE(completed, Run, sequence->RunSynchronouslyForTesting()); +} + +IN_PROC_BROWSER_TEST_F(InteractionSequenceBrowserUtilTest, + SendEventOnStateChangeOnAlreadyExistsAndConditionTrue) { + UNCALLED_MOCK_CALLBACK(ui::InteractionSequence::CompletedCallback, completed); + UNCALLED_MOCK_CALLBACK(ui::InteractionSequence::AbortedCallback, aborted); + + auto util = InteractionSequenceBrowserUtil::ForExistingTabInBrowser( + browser(), kInteractionSequenceBrowserUtilTestId); + const GURL url = embedded_test_server()->GetURL(kDocumentWithLinksURL); + util->LoadPage(url); + const InteractionSequenceBrowserUtil::DeepQuery kQuery = {"a#title1"}; + const char kTestCondition[] = "el => (el.innerText == 'Go to title1')"; + + auto sequence = + ui::InteractionSequence::Builder() + .SetCompletedCallback(completed.Get()) + .SetAbortedCallback(aborted.Get()) + .SetContext(browser()->window()->GetElementContext()) + .AddStep(ui::InteractionSequence::StepBuilder() + .SetType(ui::InteractionSequence::StepType::kShown) + .SetElementID(kInteractionSequenceBrowserUtilTestId) + .SetStartCallback(base::BindLambdaForTesting( + [&](ui::InteractionSequence* sequence, + ui::TrackedElement* element) { + InteractionSequenceBrowserUtil::StateChange + state_change; + state_change.type = + InteractionSequenceBrowserUtil::StateChange:: + Type::kExistsAndConditionTrue; + state_change.test_function = kTestCondition; + state_change.where = kQuery; + state_change.event = + kInteractionTestUtilCustomEventType; + util->SendEventOnStateChange(state_change); + })) + .Build()) + .AddStep( + ui::InteractionSequence::StepBuilder() + .SetType(ui::InteractionSequence::StepType::kCustomEvent, + kInteractionTestUtilCustomEventType) + .SetElementID(kInteractionSequenceBrowserUtilTestId) + .SetStartCallback(base::BindLambdaForTesting( + [&](ui::InteractionSequence* sequence, + ui::TrackedElement* element) { + EXPECT_TRUE( + util->EvaluateAt(kQuery, kTestCondition).GetBool()); + })) + .Build()) + .Build(); + + EXPECT_CALL_IN_SCOPE(completed, Run, sequence->RunSynchronouslyForTesting()); +} + +IN_PROC_BROWSER_TEST_F( + InteractionSequenceBrowserUtilTest, + SendEventOnStateChangeOnExistsAndConditionTrueAfterDelay) { + UNCALLED_MOCK_CALLBACK(ui::InteractionSequence::CompletedCallback, completed); + UNCALLED_MOCK_CALLBACK(ui::InteractionSequence::AbortedCallback, aborted); + + auto util = InteractionSequenceBrowserUtil::ForExistingTabInBrowser( + browser(), kInteractionSequenceBrowserUtilTestId); + const GURL url = embedded_test_server()->GetURL(kDocumentWithLinksURL); + util->LoadPage(url); + const InteractionSequenceBrowserUtil::DeepQuery kQuery = {"h1#foo"}; + const char kTestCondition[] = "el => (el.innerText == 'bar')"; + + auto sequence = + ui::InteractionSequence::Builder() + .SetCompletedCallback(completed.Get()) + .SetAbortedCallback(aborted.Get()) + .SetContext(browser()->window()->GetElementContext()) + .AddStep(ui::InteractionSequence::StepBuilder() + .SetType(ui::InteractionSequence::StepType::kShown) + .SetElementID(kInteractionSequenceBrowserUtilTestId) + .SetStartCallback(base::BindLambdaForTesting( + [&](ui::InteractionSequence* sequence, + ui::TrackedElement* element) { + util->Evaluate( + R"(function () { + setTimeout( + function() { + let el = document.createElement('h1'); + el.id = 'foo'; + document.body.appendChild(el); + setTimeout( + function() { + let el = document.querySelector( + 'h1#foo'); + el.innerText = 'bar'; + }, + 100); + }, + 300); + })"); + InteractionSequenceBrowserUtil::StateChange + state_change; + state_change.type = + InteractionSequenceBrowserUtil::StateChange:: + Type::kExistsAndConditionTrue; + state_change.where = kQuery; + state_change.test_function = kTestCondition; + state_change.event = + kInteractionTestUtilCustomEventType; + util->SendEventOnStateChange(state_change); + EXPECT_FALSE(util->Exists(kQuery)); + })) + .Build()) + .AddStep( + ui::InteractionSequence::StepBuilder() + .SetType(ui::InteractionSequence::StepType::kCustomEvent, + kInteractionTestUtilCustomEventType) + .SetElementID(kInteractionSequenceBrowserUtilTestId) + .SetStartCallback(base::BindLambdaForTesting( + [&](ui::InteractionSequence* sequence, + ui::TrackedElement* element) { + EXPECT_TRUE( + util->EvaluateAt(kQuery, kTestCondition).GetBool()); + })) + .Build()) + .Build(); + + EXPECT_CALL_IN_SCOPE(completed, Run, sequence->RunSynchronouslyForTesting()); +} + +IN_PROC_BROWSER_TEST_F(InteractionSequenceBrowserUtilTest, + StateChangeExistsAndConditionTrueTimeoutSendsEvent) { + UNCALLED_MOCK_CALLBACK(ui::InteractionSequence::CompletedCallback, completed); + UNCALLED_MOCK_CALLBACK(ui::InteractionSequence::AbortedCallback, aborted); + + auto util = InteractionSequenceBrowserUtil::ForExistingTabInBrowser( + browser(), kInteractionSequenceBrowserUtilTestId); + const GURL url = embedded_test_server()->GetURL(kDocumentWithLinksURL); + util->LoadPage(url); + const InteractionSequenceBrowserUtil::DeepQuery kQuery = {"h1#foo"}; + const char kTestCondition[] = "el => (el.innerText == 'bar')"; + + auto sequence = + ui::InteractionSequence::Builder() + .SetCompletedCallback(completed.Get()) + .SetAbortedCallback(aborted.Get()) + .SetContext(browser()->window()->GetElementContext()) + .AddStep(ui::InteractionSequence::StepBuilder() + .SetType(ui::InteractionSequence::StepType::kShown) + .SetElementID(kInteractionSequenceBrowserUtilTestId) + .SetStartCallback(base::BindLambdaForTesting( + [&](ui::InteractionSequence* sequence, + ui::TrackedElement* element) { + util->Evaluate( + R"(function () { + let el = document.createElement('h1'); + el.id = 'foo'; + document.body.appendChild(el); + setTimeout( + function() { + let el = document.querySelector( + 'h1#foo'); + el.innerText = 'bar'; + }, + 1000); + })"); + InteractionSequenceBrowserUtil::StateChange + state_change; + state_change.type = + InteractionSequenceBrowserUtil::StateChange:: + Type::kExistsAndConditionTrue; + state_change.where = kQuery; + state_change.test_function = kTestCondition; + state_change.event = + kInteractionTestUtilCustomEventType; + state_change.timeout = base::Milliseconds(300); + state_change.timeout_event = + kInteractionTestUtilCustomEventType2; + util->SendEventOnStateChange(state_change); + })) + .Build()) + .AddStep(ui::InteractionSequence::StepBuilder() + .SetType(ui::InteractionSequence::StepType::kCustomEvent, + kInteractionTestUtilCustomEventType2) + .SetElementID(kInteractionSequenceBrowserUtilTestId) + .Build()) + .Build(); + + EXPECT_CALL_IN_SCOPE(completed, Run, sequence->RunSynchronouslyForTesting()); +} + +IN_PROC_BROWSER_TEST_F(InteractionSequenceBrowserUtilTest, NavigatePageFromScriptCreatesNewElement) { UNCALLED_MOCK_CALLBACK(ui::InteractionSequence::CompletedCallback, completed); UNCALLED_MOCK_CALLBACK(ui::InteractionSequence::AbortedCallback, aborted); - const GURL url = embedded_test_server()->GetURL("/empty.html"); + const GURL url = embedded_test_server()->GetURL(kEmptyDocumentURL); auto util = InteractionSequenceBrowserUtil::ForExistingTabInBrowser( browser(), kInteractionSequenceBrowserUtilTestId); @@ -833,7 +1185,7 @@ IN_PROC_BROWSER_TEST_F(InteractionSequenceBrowserUtilTest, OpenPageInNewTabInactive) { - const GURL url = embedded_test_server()->GetURL("/empty.html"); + const GURL url = embedded_test_server()->GetURL(kEmptyDocumentURL); auto util = InteractionSequenceBrowserUtil::ForExistingTabInBrowser( browser(), kInteractionSequenceBrowserUtilTestId); @@ -847,7 +1199,7 @@ IN_PROC_BROWSER_TEST_F(InteractionSequenceBrowserUtilTest, OpenPageInNewTabActive) { - const GURL url = embedded_test_server()->GetURL("/empty.html"); + const GURL url = embedded_test_server()->GetURL(kEmptyDocumentURL); auto util = InteractionSequenceBrowserUtil::ForExistingTabInBrowser( browser(), kInteractionSequenceBrowserUtilTestId); @@ -864,7 +1216,7 @@ UNCALLED_MOCK_CALLBACK(ui::InteractionSequence::CompletedCallback, completed); UNCALLED_MOCK_CALLBACK(ui::InteractionSequence::AbortedCallback, aborted); - const GURL url = embedded_test_server()->GetURL("/empty.html"); + const GURL url = embedded_test_server()->GetURL(kEmptyDocumentURL); auto util = InteractionSequenceBrowserUtil::ForExistingTabInBrowser( browser(), kInteractionSequenceBrowserUtilTestId); @@ -901,7 +1253,7 @@ UNCALLED_MOCK_CALLBACK(ui::InteractionSequence::CompletedCallback, completed); UNCALLED_MOCK_CALLBACK(ui::InteractionSequence::AbortedCallback, aborted); - const GURL url = embedded_test_server()->GetURL("/empty.html"); + const GURL url = embedded_test_server()->GetURL(kEmptyDocumentURL); Browser* const browser2 = CreateBrowser(browser()->profile()); auto util = InteractionSequenceBrowserUtil::ForExistingTabInBrowser( @@ -956,7 +1308,7 @@ UNCALLED_MOCK_CALLBACK(ui::InteractionSequence::CompletedCallback, completed); UNCALLED_MOCK_CALLBACK(ui::InteractionSequence::AbortedCallback, aborted); - const GURL url = embedded_test_server()->GetURL("/empty.html"); + const GURL url = embedded_test_server()->GetURL(kEmptyDocumentURL); Browser* browser2 = nullptr; auto util = InteractionSequenceBrowserUtil::ForExistingTabInBrowser( @@ -1012,7 +1364,7 @@ UNCALLED_MOCK_CALLBACK(ui::InteractionSequence::CompletedCallback, completed); UNCALLED_MOCK_CALLBACK(ui::InteractionSequence::AbortedCallback, aborted); - const GURL url = embedded_test_server()->GetURL("/empty.html"); + const GURL url = embedded_test_server()->GetURL(kEmptyDocumentURL); auto util = InteractionSequenceBrowserUtil::ForExistingTabInBrowser( browser(), kInteractionSequenceBrowserUtilTestId); @@ -1264,7 +1616,7 @@ auto util = InteractionSequenceBrowserUtil::ForExistingTabInBrowser( browser(), kInteractionSequenceBrowserUtilTestId); - const GURL url = embedded_test_server()->GetURL("/links.html"); + const GURL url = embedded_test_server()->GetURL(kDocumentWithLinksURL); util->LoadPage(url); auto sequence = @@ -1312,7 +1664,7 @@ const InteractionSequenceBrowserUtil::DeepQuery kQuery{"#ref"}; auto util = InteractionSequenceBrowserUtil::ForExistingTabInBrowser( browser(), kInteractionSequenceBrowserUtilTestId); - const GURL url = embedded_test_server()->GetURL("/links.html"); + const GURL url = embedded_test_server()->GetURL(kDocumentWithLinksURL); util->LoadPage(url); auto sequence = @@ -1352,7 +1704,7 @@ const InteractionSequenceBrowserUtil::DeepQuery kQuery{"#ref"}; auto util = InteractionSequenceBrowserUtil::ForExistingTabInBrowser( browser(), kInteractionSequenceBrowserUtilTestId); - const GURL url = embedded_test_server()->GetURL("/links.html"); + const GURL url = embedded_test_server()->GetURL(kDocumentWithLinksURL); util->LoadPage(url); auto sequence = @@ -1398,7 +1750,7 @@ const InteractionSequenceBrowserUtil::DeepQuery kQuery2{"#ref", "p#pp"}; auto util = InteractionSequenceBrowserUtil::ForExistingTabInBrowser( browser(), kInteractionSequenceBrowserUtilTestId); - const GURL url = embedded_test_server()->GetURL("/links.html"); + const GURL url = embedded_test_server()->GetURL(kDocumentWithLinksURL); util->LoadPage(url); auto sequence = @@ -1475,7 +1827,7 @@ auto util = InteractionSequenceBrowserUtil::ForExistingTabInBrowser( browser(), kInteractionSequenceBrowserUtilTestId); - const GURL url = embedded_test_server()->GetURL("/title1.html"); + const GURL url = embedded_test_server()->GetURL(kDocumentWithTitle1URL); util->LoadPage(url); auto sequence =
diff --git a/chromeos/chromeos_strings.grd b/chromeos/chromeos_strings.grd index 592f007..6af21544 100644 --- a/chromeos/chromeos_strings.grd +++ b/chromeos/chromeos_strings.grd
@@ -3114,22 +3114,18 @@ Reboot </message> <!-- Wipe device page --> - <message name="IDS_SHIMLESS_RMA_WIPE_DEVICE_TITLE" translateable="false" desc="Title for the page where the user chooses whether to erase the data or keep/preserve the data on the device."> - Preserve Device Data + <message name="IDS_SHIMLESS_RMA_WIPE_DEVICE_TITLE" desc="Title for the page where the user chooses whether to erase the data or keep/preserve the data on the device."> + Device is going to the same user. Erase user data? </message> - <message name="IDS_SHIMLESS_RMA_WIPE_DEVICE_REMOVE_DATA_OPTION" translateable="false" desc="Label for the option to wipe/erase the data on the device."> - Wipe device + <message name="IDS_SHIMLESS_RMA_WIPE_DEVICE_REMOVE_DATA_OPTION" desc="Label for the option to wipe/erase the data on the device."> + Erase all data </message> - <message name="IDS_SHIMLESS_RMA_WIPE_DEVICE_REMOVE_DATA_OPTION_DESCRIPTION" translateable="false" desc="Description for the option to wipe/erase the data on the device."> - Remove the data + <message name="IDS_SHIMLESS_RMA_WIPE_DEVICE_REMOVE_DATA_OPTION_DESCRIPTION" desc="Description for the option to wipe/erase the data on the device."> + This will reset the device to factory settings (Powerwash). </message> - <message name="IDS_SHIMLESS_RMA_WIPE_DEVICE_PRESERVE_DATA_OPTION" translateable="false" desc="Label for the option to preserve/save the data on the device."> - Don't wipe the device + <message name="IDS_SHIMLESS_RMA_WIPE_DEVICE_PRESERVE_DATA_OPTION" desc="Label for the option to preserve/save the data on the device."> + Keep user data </message> - <message name="IDS_SHIMLESS_RMA_WIPE_DEVICE_PRESERVE_DATA_OPTION_DESCRIPTION" translateable="false" desc="Description for the option to preserve/save the data on the device."> - Preserve the data - </message> - <!-- Peripheral Firmware Update --> <message name="IDS_FIRMWARE_TITLE_TEXT" desc="The title of the Firmware update app."> Firmware updates for external devices
diff --git a/chromeos/chromeos_strings_grd/IDS_SHIMLESS_RMA_WIPE_DEVICE_PRESERVE_DATA_OPTION.png.sha1 b/chromeos/chromeos_strings_grd/IDS_SHIMLESS_RMA_WIPE_DEVICE_PRESERVE_DATA_OPTION.png.sha1 new file mode 100644 index 0000000..e218d21c --- /dev/null +++ b/chromeos/chromeos_strings_grd/IDS_SHIMLESS_RMA_WIPE_DEVICE_PRESERVE_DATA_OPTION.png.sha1
@@ -0,0 +1 @@ +7684a01515791cdd92645638eb6157e41b75abe8 \ No newline at end of file
diff --git a/chromeos/chromeos_strings_grd/IDS_SHIMLESS_RMA_WIPE_DEVICE_REMOVE_DATA_OPTION.png.sha1 b/chromeos/chromeos_strings_grd/IDS_SHIMLESS_RMA_WIPE_DEVICE_REMOVE_DATA_OPTION.png.sha1 new file mode 100644 index 0000000..e218d21c --- /dev/null +++ b/chromeos/chromeos_strings_grd/IDS_SHIMLESS_RMA_WIPE_DEVICE_REMOVE_DATA_OPTION.png.sha1
@@ -0,0 +1 @@ +7684a01515791cdd92645638eb6157e41b75abe8 \ No newline at end of file
diff --git a/chromeos/chromeos_strings_grd/IDS_SHIMLESS_RMA_WIPE_DEVICE_REMOVE_DATA_OPTION_DESCRIPTION.png.sha1 b/chromeos/chromeos_strings_grd/IDS_SHIMLESS_RMA_WIPE_DEVICE_REMOVE_DATA_OPTION_DESCRIPTION.png.sha1 new file mode 100644 index 0000000..e218d21c --- /dev/null +++ b/chromeos/chromeos_strings_grd/IDS_SHIMLESS_RMA_WIPE_DEVICE_REMOVE_DATA_OPTION_DESCRIPTION.png.sha1
@@ -0,0 +1 @@ +7684a01515791cdd92645638eb6157e41b75abe8 \ No newline at end of file
diff --git a/chromeos/chromeos_strings_grd/IDS_SHIMLESS_RMA_WIPE_DEVICE_TITLE.png.sha1 b/chromeos/chromeos_strings_grd/IDS_SHIMLESS_RMA_WIPE_DEVICE_TITLE.png.sha1 new file mode 100644 index 0000000..e218d21c --- /dev/null +++ b/chromeos/chromeos_strings_grd/IDS_SHIMLESS_RMA_WIPE_DEVICE_TITLE.png.sha1
@@ -0,0 +1 @@ +7684a01515791cdd92645638eb6157e41b75abe8 \ No newline at end of file
diff --git a/chromeos/dbus/cros_disks/OWNERS b/chromeos/dbus/cros_disks/OWNERS new file mode 100644 index 0000000..73220a8 --- /dev/null +++ b/chromeos/dbus/cros_disks/OWNERS
@@ -0,0 +1 @@ +file://ui/file_manager/OWNERS
diff --git a/chromeos/dbus/cros_disks/cros_disks_client.cc b/chromeos/dbus/cros_disks/cros_disks_client.cc index 00afb4d..0300bf19 100644 --- a/chromeos/dbus/cros_disks/cros_disks_client.cc +++ b/chromeos/dbus/cros_disks/cros_disks_client.cc
@@ -122,7 +122,7 @@ case cros_disks::MOUNT_ERROR_NEED_PASSWORD: return MOUNT_ERROR_NEED_PASSWORD; default: - NOTREACHED() << "Unrecognised mount error code " << mount_error; + LOG(ERROR) << "Unrecognised mount error code " << mount_error; return MOUNT_ERROR_UNKNOWN; } }
diff --git a/chromeos/tast_control.gni b/chromeos/tast_control.gni index 486d831..9910d64 100644 --- a/chromeos/tast_control.gni +++ b/chromeos/tast_control.gni
@@ -216,17 +216,6 @@ # https://crbug.com/1315123 "dlp.DataLeakPreventionRulesListScreenshot.ash_blocked", - # https://crbug.com/1312069 - "apps.LaunchHelpAppFromSettings.stable", - "apps.LaunchReleaseNotesFromSettings.stable", - "arc.Clipboard", - "arc.Gamepad", - "arc.IMESwitchShortcut", - "arc.StandardizedKeyboardCopyPaste", - "arc.StandardizedKeyboardCopyPaste.tablet_mode", - "arc.StandardizedKeyboardTyping", - "arc.StandardizedKeyboardTyping.tablet_mode", - # https://crbug.com/1315880 "u2fd.WebauthnUsingPassword.tpm1",
diff --git a/components/autofill/core/browser/autocomplete_history_manager_unittest.cc b/components/autofill/core/browser/autocomplete_history_manager_unittest.cc index 920e247..36bc4517 100644 --- a/components/autofill/core/browser/autocomplete_history_manager_unittest.cc +++ b/components/autofill/core/browser/autocomplete_history_manager_unittest.cc
@@ -642,7 +642,9 @@ OnSuggestionsReturned( test_query_id, /*autoselect_first_suggestion=*/false, UnorderedElementsAre(Field( - &Suggestion::value, expected_values[0].key().value())))); + &Suggestion::main_text, + Suggestion::Text(expected_values[0].key().value(), + Suggestion::Text::IsPrimary(true)))))); // Simulate response from DB. autocomplete_manager_->OnWebDataServiceRequestDone(mocked_db_query_id, @@ -682,7 +684,9 @@ OnSuggestionsReturned( test_query_id, /*autoselect_first_suggestion=*/true, UnorderedElementsAre(Field( - &Suggestion::value, expected_values[0].key().value())))); + &Suggestion::main_text, + Suggestion::Text(expected_values[0].key().value(), + Suggestion::Text::IsPrimary(true)))))); // Simulate response from DB. autocomplete_manager_->OnWebDataServiceRequestDone(mocked_db_query_id, @@ -761,7 +765,9 @@ OnSuggestionsReturned( test_query_id, /*autoselect_first_suggestion=*/false, UnorderedElementsAre(Field( - &Suggestion::value, expected_values[0].key().value())))); + &Suggestion::main_text, + Suggestion::Text(expected_values[0].key().value(), + Suggestion::Text::IsPrimary(true)))))); // Simulate response from DB. autocomplete_manager_->OnWebDataServiceRequestDone(mocked_db_query_id, @@ -865,12 +871,13 @@ "Some Type", suggestions_handler->GetWeakPtr()); // Setting up mock to verify that we can get the second response first. - EXPECT_CALL( - *suggestions_handler.get(), - OnSuggestionsReturned( - test_query_id_second, /*autoselect_first_suggestion=*/false, - UnorderedElementsAre(Field( - &Suggestion::value, expected_values_second[0].key().value())))); + EXPECT_CALL(*suggestions_handler.get(), + OnSuggestionsReturned( + test_query_id_second, /*autoselect_first_suggestion=*/false, + UnorderedElementsAre(Field( + &Suggestion::main_text, + Suggestion::Text(expected_values_second[0].key().value(), + Suggestion::Text::IsPrimary(true)))))); // Simulate response from DB, second request comes back before. autocomplete_manager_->OnWebDataServiceRequestDone( @@ -931,24 +938,26 @@ "Some Type", suggestions_handler_second->GetWeakPtr()); // Setting up mock to verify that we get the second response first. - EXPECT_CALL( - *suggestions_handler_second.get(), - OnSuggestionsReturned( - test_query_id_second, /*autoselect_first_suggestion=*/false, - UnorderedElementsAre(Field( - &Suggestion::value, expected_values_second[0].key().value())))); + EXPECT_CALL(*suggestions_handler_second.get(), + OnSuggestionsReturned( + test_query_id_second, /*autoselect_first_suggestion=*/false, + UnorderedElementsAre(Field( + &Suggestion::main_text, + Suggestion::Text(expected_values_second[0].key().value(), + Suggestion::Text::IsPrimary(true)))))); // Simulate response from DB, second request comes back before. autocomplete_manager_->OnWebDataServiceRequestDone( mocked_db_query_id_second, std::move(mocked_results_second)); // Setting up mock to verify that we get the first response second. - EXPECT_CALL( - *suggestions_handler_first.get(), - OnSuggestionsReturned( - test_query_id_first, /*autoselect_first_suggestion=*/false, - UnorderedElementsAre(Field(&Suggestion::value, - expected_values_first[0].key().value())))); + EXPECT_CALL(*suggestions_handler_first.get(), + OnSuggestionsReturned( + test_query_id_first, /*autoselect_first_suggestion=*/false, + UnorderedElementsAre(Field( + &Suggestion::main_text, + Suggestion::Text(expected_values_first[0].key().value(), + Suggestion::Text::IsPrimary(true)))))); // Simulate response from DB, first request comes back after. autocomplete_manager_->OnWebDataServiceRequestDone( @@ -1003,12 +1012,13 @@ autocomplete_manager_->CancelPendingQueries(suggestions_handler_one.get()); // Simulate second handler receiving the suggestions. - EXPECT_CALL( - *suggestions_handler_two.get(), - OnSuggestionsReturned( - test_query_id_two, /*autoselect_first_suggestion=*/false, - UnorderedElementsAre(Field(&Suggestion::value, - expected_values_two[0].key().value())))); + EXPECT_CALL(*suggestions_handler_two.get(), + OnSuggestionsReturned( + test_query_id_two, /*autoselect_first_suggestion=*/false, + UnorderedElementsAre(Field( + &Suggestion::main_text, + Suggestion::Text(expected_values_two[0].key().value(), + Suggestion::Text::IsPrimary(true)))))); autocomplete_manager_->OnWebDataServiceRequestDone( mocked_db_query_id_two, std::move(mocked_results_two));
diff --git a/components/autofill/core/browser/autofill_external_delegate.cc b/components/autofill/core/browser/autofill_external_delegate.cc index 7436ca2..8005ab0 100644 --- a/components/autofill/core/browser/autofill_external_delegate.cc +++ b/components/autofill/core/browser/autofill_external_delegate.cc
@@ -451,7 +451,7 @@ data_list_values_.end()); base::EraseIf(*suggestions, [&data_list_set](const Suggestion& suggestion) { return suggestion.frontend_id == POPUP_ITEM_ID_AUTOCOMPLETE_ENTRY && - base::Contains(data_list_set, suggestion.value); + base::Contains(data_list_set, suggestion.main_text.value); }); #if !BUILDFLAG(IS_ANDROID) @@ -467,7 +467,8 @@ suggestions->insert(suggestions->begin(), data_list_values_.size(), Suggestion()); for (size_t i = 0; i < data_list_values_.size(); i++) { - (*suggestions)[i].value = data_list_values_[i]; + (*suggestions)[i].main_text = Suggestion::Text( + data_list_values_[i], Suggestion::Text::IsPrimary(true)); (*suggestions)[i].label = data_list_labels_[i]; (*suggestions)[i].frontend_id = POPUP_ITEM_ID_DATALIST_ENTRY; }
diff --git a/components/autofill/core/browser/autofill_external_delegate_unittest.cc b/components/autofill/core/browser/autofill_external_delegate_unittest.cc index ace0619..95b02751d 100644 --- a/components/autofill/core/browser/autofill_external_delegate_unittest.cc +++ b/components/autofill/core/browser/autofill_external_delegate_unittest.cc
@@ -22,6 +22,7 @@ #include "components/autofill/core/browser/test_autofill_client.h" #include "components/autofill/core/browser/test_autofill_driver.h" #include "components/autofill/core/browser/ui/popup_item_ids.h" +#include "components/autofill/core/browser/ui/suggestion.h" #include "components/autofill/core/browser/ui/suggestion_test_helpers.h" #include "components/autofill/core/common/autofill_features.h" #include "components/autofill/core/common/autofill_payments_features.h" @@ -202,7 +203,7 @@ void IssueOnSuggestionsReturned(int query_id) { std::vector<Suggestion> suggestions; - suggestions.push_back(Suggestion()); + suggestions.emplace_back(); suggestions[0].frontend_id = kAutofillProfileId; external_delegate_->OnSuggestionsReturned( query_id, suggestions, /*autoselect_first_suggestion=*/false); @@ -243,7 +244,7 @@ // This should call ShowAutofillPopup. std::vector<Suggestion> autofill_item; - autofill_item.push_back(Suggestion()); + autofill_item.emplace_back(); autofill_item[0].frontend_id = kAutofillProfileId; external_delegate_->OnSuggestionsReturned( kRecentQueryId, autofill_item, /*autoselect_first_suggestion=*/false); @@ -259,7 +260,7 @@ // This should trigger a call to hide the popup since we've selected an // option. - external_delegate_->DidAcceptSuggestion(autofill_item[0].value, + external_delegate_->DidAcceptSuggestion(autofill_item[0].main_text.value, autofill_item[0].frontend_id, autofill_item[0].backend_id, 0); } @@ -284,7 +285,7 @@ // This should call ShowAutofillPopup. std::vector<Suggestion> autofill_item; - autofill_item.push_back(Suggestion()); + autofill_item.emplace_back(); autofill_item[0].frontend_id = kAutofillProfileId; external_delegate_->OnSuggestionsReturned( kRecentQueryId, autofill_item, /*autoselect_first_suggestion=*/false); @@ -302,7 +303,7 @@ // This should trigger a call to hide the popup since we've selected an // option. - external_delegate_->DidAcceptSuggestion(autofill_item[0].value, + external_delegate_->DidAcceptSuggestion(autofill_item[0].main_text.value, autofill_item[0].frontend_id, autofill_item[0].backend_id, 0); } @@ -353,7 +354,7 @@ IssueOnQuery(kRecentQueryId); std::vector<std::u16string> data_list_items; - data_list_items.push_back(std::u16string()); + data_list_items.emplace_back(); EXPECT_CALL(autofill_client_, UpdateAutofillPopupDataListValues( data_list_items, data_list_items)); @@ -374,7 +375,7 @@ // This should call ShowAutofillPopup. std::vector<Suggestion> autofill_item; - autofill_item.push_back(Suggestion()); + autofill_item.emplace_back(); autofill_item[0].frontend_id = kAutofillProfileId; external_delegate_->OnSuggestionsReturned( kRecentQueryId, autofill_item, /*autoselect_first_suggestion=*/false); @@ -408,7 +409,7 @@ // Make sure just setting the data list values doesn't cause the popup to // appear. std::vector<std::u16string> data_list_items; - data_list_items.push_back(std::u16string()); + data_list_items.emplace_back(); EXPECT_CALL(autofill_client_, UpdateAutofillPopupDataListValues( data_list_items, data_list_items)); @@ -429,7 +430,7 @@ // Ensure the popup is displayed. std::vector<Suggestion> autofill_item; - autofill_item.push_back(Suggestion()); + autofill_item.emplace_back(); autofill_item[0].frontend_id = kAutofillProfileId; external_delegate_->OnSuggestionsReturned( kRecentQueryId, autofill_item, /*autoselect_first_suggestion=*/false); @@ -442,7 +443,7 @@ external_delegate_->OnPopupShown(); // Update the current data list and ensure the popup is updated. - data_list_items.push_back(std::u16string()); + data_list_items.emplace_back(); // The enums must be cast to ints to prevent compile errors on linux_rel. EXPECT_CALL(autofill_client_, UpdateAutofillPopupDataListValues( @@ -480,8 +481,9 @@ // Have an Autofill item that is identical to one of the datalist entries. std::vector<Suggestion> autofill_item; - autofill_item.push_back(Suggestion()); - autofill_item[0].value = u"Rick"; + autofill_item.emplace_back(); + autofill_item[0].main_text = + Suggestion::Text(u"Rick", Suggestion::Text::IsPrimary(true)); autofill_item[0].label = u"Deckard"; autofill_item[0].frontend_id = kAutofillProfileId; external_delegate_->OnSuggestionsReturned( @@ -521,11 +523,13 @@ // Have an Autocomplete item that is identical to one of the datalist entries // and one that is distinct. std::vector<Suggestion> autocomplete_items; - autocomplete_items.push_back(Suggestion()); - autocomplete_items[0].value = u"Rick"; + autocomplete_items.emplace_back(); + autocomplete_items[0].main_text = + Suggestion::Text(u"Rick", Suggestion::Text::IsPrimary(true)); autocomplete_items[0].frontend_id = POPUP_ITEM_ID_AUTOCOMPLETE_ENTRY; - autocomplete_items.push_back(Suggestion()); - autocomplete_items[1].value = u"Cain"; + autocomplete_items.emplace_back(); + autocomplete_items[1].main_text = + Suggestion::Text(u"Cain", Suggestion::Text::IsPrimary(true)); autocomplete_items[1].frontend_id = POPUP_ITEM_ID_AUTOCOMPLETE_ENTRY; external_delegate_->OnSuggestionsReturned( kRecentQueryId, autocomplete_items, @@ -547,7 +551,7 @@ // This should call ShowAutofillPopup. std::vector<Suggestion> autofill_item; - autofill_item.push_back(Suggestion()); + autofill_item.emplace_back(); autofill_item[0].frontend_id = POPUP_ITEM_ID_INSECURE_CONTEXT_PAYMENT_DISABLED_MESSAGE; external_delegate_->OnSuggestionsReturned( @@ -575,11 +579,12 @@ // This should call ShowAutofillPopup. std::vector<Suggestion> suggestions; - suggestions.push_back(Suggestion()); + suggestions.emplace_back(); suggestions[0].frontend_id = POPUP_ITEM_ID_INSECURE_CONTEXT_PAYMENT_DISABLED_MESSAGE; - suggestions.push_back(Suggestion()); - suggestions[1].value = u"Rick"; + suggestions.emplace_back(); + suggestions[1].main_text = + Suggestion::Text(u"Rick", Suggestion::Text::IsPrimary(true)); suggestions[1].frontend_id = POPUP_ITEM_ID_AUTOCOMPLETE_ENTRY; external_delegate_->OnSuggestionsReturned( kRecentQueryId, suggestions, /*autoselect_first_suggestion=*/false); @@ -799,7 +804,7 @@ external_delegate_->OnQuery(kRecentQueryId, form, field, gfx::RectF()); std::vector<Suggestion> autofill_items; - autofill_items.push_back(Suggestion()); + autofill_items.emplace_back(); autofill_items[0].frontend_id = POPUP_ITEM_ID_AUTOCOMPLETE_ENTRY; // Ensure the popup tries to show itself, despite autocomplete="off". @@ -883,8 +888,10 @@ TEST_F(AutofillExternalDelegateUnitTest, ShouldUseNewSettingName) { IssueOnQuery(kRecentQueryId); - auto element_values = testing::ElementsAre( - std::u16string(), l10n_util::GetStringUTF16(IDS_AUTOFILL_MANAGE)); + auto element_main_texts = testing::ElementsAre( + Suggestion::Text(std::u16string(), Suggestion::Text::IsPrimary(true)), + Suggestion::Text(l10n_util::GetStringUTF16(IDS_AUTOFILL_MANAGE), + Suggestion::Text::IsPrimary(true))); AutofillClient::PopupOpenArgs open_args; EXPECT_CALL(autofill_client_, ShowAutofillPopup) .WillOnce(testing::SaveArg<0>(&open_args)); @@ -892,11 +899,13 @@ std::vector<Suggestion> autofill_item; autofill_item.emplace_back(); autofill_item[0].frontend_id = kAutofillProfileId; + autofill_item[0].main_text.is_primary = Suggestion::Text::IsPrimary(true); // This should call ShowAutofillPopup. external_delegate_->OnSuggestionsReturned( kRecentQueryId, autofill_item, /*autoselect_first_suggestion=*/false); - EXPECT_THAT(open_args.suggestions, SuggestionVectorValuesAre(element_values)); + EXPECT_THAT(open_args.suggestions, + SuggestionVectorMainTextsAre(element_main_texts)); EXPECT_FALSE(open_args.autoselect_first_suggestion); EXPECT_EQ(open_args.popup_type, PopupType::kPersonalInformation); } @@ -928,10 +937,13 @@ ShouldShowCardsFromAccountOptionWithCards) { IssueOnQuery(kRecentQueryId); - auto element_values = testing::ElementsAre( - std::u16string(), - l10n_util::GetStringUTF16(IDS_AUTOFILL_SHOW_ACCOUNT_CARDS), - l10n_util::GetStringUTF16(IDS_AUTOFILL_MANAGE)); + auto element_main_texts = testing::ElementsAre( + Suggestion::Text(std::u16string(), Suggestion::Text::IsPrimary(true)), + Suggestion::Text( + l10n_util::GetStringUTF16(IDS_AUTOFILL_SHOW_ACCOUNT_CARDS), + Suggestion::Text::IsPrimary(true)), + Suggestion::Text(l10n_util::GetStringUTF16(IDS_AUTOFILL_MANAGE), + Suggestion::Text::IsPrimary(true))); AutofillClient::PopupOpenArgs open_args; EXPECT_CALL(autofill_client_, ShowAutofillPopup) .WillOnce(testing::SaveArg<0>(&open_args)); @@ -939,10 +951,12 @@ std::vector<Suggestion> autofill_item; autofill_item.emplace_back(); autofill_item[0].frontend_id = kAutofillProfileId; + autofill_item[0].main_text.is_primary = Suggestion::Text::IsPrimary(true); external_delegate_->OnSuggestionsReturned( kRecentQueryId, autofill_item, /*autoselect_first_suggestion=*/false); - EXPECT_THAT(open_args.suggestions, SuggestionVectorValuesAre(element_values)); + EXPECT_THAT(open_args.suggestions, + SuggestionVectorMainTextsAre(element_main_texts)); EXPECT_FALSE(open_args.autoselect_first_suggestion); EXPECT_EQ(open_args.popup_type, PopupType::kPersonalInformation); } @@ -954,8 +968,9 @@ ShouldShowCardsFromAccountOptionWithoutCards) { IssueOnQuery(kRecentQueryId); - auto element_values = testing::ElementsAre( - l10n_util::GetStringUTF16(IDS_AUTOFILL_SHOW_ACCOUNT_CARDS)); + auto element_main_texts = testing::ElementsAre(Suggestion::Text( + l10n_util::GetStringUTF16(IDS_AUTOFILL_SHOW_ACCOUNT_CARDS), + Suggestion::Text::IsPrimary(true))); AutofillClient::PopupOpenArgs open_args; EXPECT_CALL(autofill_client_, ShowAutofillPopup) .WillOnce(testing::SaveArg<0>(&open_args)); @@ -963,7 +978,8 @@ external_delegate_->OnSuggestionsReturned( kRecentQueryId, std::vector<Suggestion>(), /*autoselect_first_suggestion=*/false); - EXPECT_THAT(open_args.suggestions, SuggestionVectorValuesAre(element_values)); + EXPECT_THAT(open_args.suggestions, + SuggestionVectorMainTextsAre(element_main_texts)); EXPECT_FALSE(open_args.autoselect_first_suggestion); EXPECT_EQ(open_args.popup_type, PopupType::kPersonalInformation); }
diff --git a/components/autofill/core/browser/autofill_suggestion_generator.cc b/components/autofill/core/browser/autofill_suggestion_generator.cc index 86ef5ea1..dfba3a59 100644 --- a/components/autofill/core/browser/autofill_suggestion_generator.cc +++ b/components/autofill/core/browser/autofill_suggestion_generator.cc
@@ -22,6 +22,8 @@ #include "components/autofill/core/common/autofill_payments_features.h" #include "components/autofill/core/common/autofill_util.h" #include "components/feature_engagement/public/feature_constants.h" +#include "components/strings/grit/components_strings.h" +#include "ui/base/l10n/l10n_util.h" namespace autofill { @@ -172,7 +174,8 @@ const std::string& app_locale) const { Suggestion suggestion; - suggestion.value = credit_card.GetInfo(type, app_locale); + suggestion.main_text = Suggestion::Text(credit_card.GetInfo(type, app_locale), + Suggestion::Text::IsPrimary(true)); suggestion.icon = credit_card.CardIconStringForAutofillSuggestion(); std::string backend_id = credit_card.guid(); suggestion.match = prefix_matched_suggestion ? Suggestion::PREFIX_MATCH @@ -207,8 +210,10 @@ // Otherwise the label is the card number, or if that is empty the // cardholder name. The label should never repeat the value. if (type.GetStorableType() == CREDIT_CARD_NUMBER) { - suggestion.value = credit_card.CardIdentifierStringForAutofillDisplay( - suggestion_nickname, obfuscation_length); + suggestion.main_text = + Suggestion::Text(credit_card.CardIdentifierStringForAutofillDisplay( + suggestion_nickname, obfuscation_length), + Suggestion::Text::IsPrimary(true)); #if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_IOS) suggestion.label = credit_card.GetInfo( @@ -251,6 +256,10 @@ #endif // BUILDFLAG(IS_ANDROID) suggestion.frontend_id = POPUP_ITEM_ID_VIRTUAL_CREDIT_CARD_ENTRY; + suggestion.minor_text.value = suggestion.main_text.value; + suggestion.main_text.value = l10n_util::GetStringUTF16( + IDS_AUTOFILL_VIRTUAL_CARD_SUGGESTION_OPTION_VALUE); + suggestion.feature_for_iph = feature_engagement::kIPHAutofillVirtualCardSuggestionFeature.name;
diff --git a/components/autofill/core/browser/browser_autofill_manager.cc b/components/autofill/core/browser/browser_autofill_manager.cc index efbd61e5..fe27d71 100644 --- a/components/autofill/core/browser/browser_autofill_manager.cc +++ b/components/autofill/core/browser/browser_autofill_manager.cc
@@ -2029,9 +2029,11 @@ if (profile) { const std::u16string phone_home_city_and_number = profile->GetInfo(PHONE_HOME_CITY_AND_NUMBER, app_locale_); - suggestion.value = FieldFiller::GetPhoneNumberValueForInput( - autofill_field, suggestion.value, phone_home_city_and_number, - field); + suggestion.main_text = + Suggestion::Text(FieldFiller::GetPhoneNumberValueForInput( + autofill_field, suggestion.main_text.value, + phone_home_city_and_number, field), + Suggestion::Text::IsPrimary(true)); } } }
diff --git a/components/autofill/core/browser/browser_autofill_manager_unittest.cc b/components/autofill/core/browser/browser_autofill_manager_unittest.cc index 42f88637..ac7d775 100644 --- a/components/autofill/core/browser/browser_autofill_manager_unittest.cc +++ b/components/autofill/core/browser/browser_autofill_manager_unittest.cc
@@ -8201,6 +8201,7 @@ #endif Suggestion virtual_card_suggestion = Suggestion( + "Virtual card", std::string("nickname ") + test::ObfuscatedCardDigitsAsUTF8("3456"), label, kVisaCard, autofill::POPUP_ITEM_ID_VIRTUAL_CREDIT_CARD_ENTRY); @@ -8225,7 +8226,7 @@ #endif virtual_card_suggestion = - Suggestion(std::string("Elvis Presley"), label, kVisaCard, + Suggestion("Virtual card", std::string("Elvis Presley"), label, kVisaCard, autofill::POPUP_ITEM_ID_VIRTUAL_CREDIT_CARD_ENTRY); CheckSuggestions(
diff --git a/components/autofill/core/browser/personal_data_manager_unittest.cc b/components/autofill/core/browser/personal_data_manager_unittest.cc index 913bc147..e6921d1 100644 --- a/components/autofill/core/browser/personal_data_manager_unittest.cc +++ b/components/autofill/core/browser/personal_data_manager_unittest.cc
@@ -48,6 +48,7 @@ #include "components/autofill/core/browser/test_autofill_clock.h" #include "components/autofill/core/browser/test_inmemory_strike_database.h" #include "components/autofill/core/browser/ui/label_formatter_utils.h" +#include "components/autofill/core/browser/ui/suggestion.h" #include "components/autofill/core/browser/ui/suggestion_selection.h" #include "components/autofill/core/browser/webdata/autofill_table.h" #include "components/autofill/core/browser/webdata/autofill_webdata_service.h" @@ -2134,7 +2135,7 @@ std::vector<ServerFieldType>()); ASSERT_FALSE(suggestions.empty()); EXPECT_EQ(u"123 Zoo St., Second Line, Third line, unit 5", - suggestions[0].value); + suggestions[0].main_text.value); } TEST_F(PersonalDataManagerTest, @@ -2155,7 +2156,7 @@ AutofillType(PHONE_HOME_WHOLE_NUMBER), u"234", false, std::vector<ServerFieldType>()); ASSERT_FALSE(suggestions.empty()); - EXPECT_EQ(u"12345678910", suggestions[0].value); + EXPECT_EQ(u"12345678910", suggestions[0].main_text.value); } #if !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_IOS) @@ -2177,7 +2178,7 @@ AutofillType(PHONE_HOME_WHOLE_NUMBER), u"234", false, std::vector<ServerFieldType>()); ASSERT_FALSE(suggestions.empty()); - EXPECT_EQ(u"(234) 567-8910", suggestions[0].value); + EXPECT_EQ(u"(234) 567-8910", suggestions[0].main_text.value); } #endif // !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_IOS) @@ -2288,7 +2289,7 @@ ASSERT_EQ(suggestion_selection::kMaxSuggestedProfilesCount + 1, personal_data_->GetProfiles().size()); ASSERT_EQ(1U, suggestions.size()); - EXPECT_EQ(u"Marion", suggestions[0].value); + EXPECT_EQ(u"Marion", suggestions[0].main_text.value); } // Tests that GetProfileSuggestions orders its suggestions based on the frecency @@ -2327,9 +2328,9 @@ std::vector<Suggestion> suggestions = personal_data_->GetProfileSuggestions( AutofillType(NAME_FIRST), u"Ma", false, std::vector<ServerFieldType>()); ASSERT_EQ(3U, suggestions.size()); - EXPECT_EQ(suggestions[0].value, u"Marion1"); - EXPECT_EQ(suggestions[1].value, u"Marion2"); - EXPECT_EQ(suggestions[2].value, u"Marion3"); + EXPECT_EQ(suggestions[0].main_text.value, u"Marion1"); + EXPECT_EQ(suggestions[1].main_text.value, u"Marion2"); + EXPECT_EQ(suggestions[2].main_text.value, u"Marion3"); } // Tests that GetProfileSuggestions returns all profiles suggestions. @@ -2411,7 +2412,7 @@ std::vector<ServerFieldType>()); ASSERT_EQ(1U, suggestions.size()); EXPECT_EQ(u"123 Zoo St., Second Line, Third line, unit 5", - suggestions[0].value); + suggestions[0].main_text.value); } // Query with prefix for profile2 returns profile2. @@ -2421,7 +2422,7 @@ std::vector<ServerFieldType>()); EXPECT_EQ(1U, suggestions.size()); EXPECT_EQ(u"456 Zoo St., Second Line, Third line, unit 5", - suggestions[0].value); + suggestions[0].main_text.value); } } @@ -2559,7 +2560,9 @@ AutofillType(NAME_FIRST), std::u16string(), false, std::vector<ServerFieldType>{NAME_FIRST, NAME_LAST, EMAIL_ADDRESS, PHONE_HOME_WHOLE_NUMBER}), - ElementsAre(testing::Field(&Suggestion::value, u"Hoa"))); + ElementsAre(testing::Field( + &Suggestion::main_text, + Suggestion::Text(u"Hoa", Suggestion::Text::IsPrimary(true))))); histogram_tester.ExpectUniqueSample( "Autofill.ProfileSuggestionsMadeWithFormatter", true, 1); }
diff --git a/components/autofill/core/browser/test_autofill_external_delegate.cc b/components/autofill/core/browser/test_autofill_external_delegate.cc index 71339b1..2f931a5 100644 --- a/components/autofill/core/browser/test_autofill_external_delegate.cc +++ b/components/autofill/core/browser/test_autofill_external_delegate.cc
@@ -93,7 +93,10 @@ ASSERT_LE(expected_num_suggestions, suggestions_.size()); for (size_t i = 0; i < expected_num_suggestions; ++i) { SCOPED_TRACE(base::StringPrintf("i: %" PRIuS, i)); - EXPECT_EQ(expected_suggestions[i].value, suggestions_[i].value); + EXPECT_EQ(expected_suggestions[i].main_text.value, + suggestions_[i].main_text.value); + EXPECT_EQ(expected_suggestions[i].minor_text.value, + suggestions_[i].minor_text.value); EXPECT_EQ(expected_suggestions[i].label, suggestions_[i].label); EXPECT_EQ(expected_suggestions[i].icon, suggestions_[i].icon); EXPECT_EQ(expected_suggestions[i].frontend_id, suggestions_[i].frontend_id);
diff --git a/components/autofill/core/browser/ui/suggestion.cc b/components/autofill/core/browser/ui/suggestion.cc index f344d2a..a61ee597 100644 --- a/components/autofill/core/browser/ui/suggestion.cc +++ b/components/autofill/core/browser/ui/suggestion.cc
@@ -10,21 +10,58 @@ namespace autofill { +Suggestion::Text::Text() = default; + +Suggestion::Text::Text(std::u16string value, + IsPrimary is_primary, + ShouldTruncate should_truncate) + : value(value), is_primary(is_primary), should_truncate(should_truncate) {} + +Suggestion::Text::Text(const Text& other) = default; +Suggestion::Text::Text(Text& other) = default; + +Suggestion::Text& Suggestion::Text::operator=(const Text& other) = default; +Suggestion::Text& Suggestion::Text::operator=(Text&& other) = default; + +Suggestion::Text::~Text() = default; + +bool Suggestion::Text::operator==(const Suggestion::Text& text) const { + return value == text.value && is_primary == text.is_primary && + should_truncate == text.should_truncate; +} + +bool Suggestion::Text::operator!=(const Suggestion::Text& text) const { + return !operator==(text); +} + Suggestion::Suggestion() = default; -Suggestion::Suggestion(const Suggestion& other) = default; -Suggestion::Suggestion(Suggestion&& other) = default; -Suggestion::Suggestion(std::u16string value) : value(std::move(value)) {} +Suggestion::Suggestion(std::u16string main_text) + : main_text(std::move(main_text), Text::IsPrimary(true)) {} -Suggestion::Suggestion(base::StringPiece value, +Suggestion::Suggestion(base::StringPiece main_text, base::StringPiece label, std::string icon, int frontend_id) : frontend_id(frontend_id), - value(base::UTF8ToUTF16(value)), + main_text(base::UTF8ToUTF16(main_text), Text::IsPrimary(true)), label(base::UTF8ToUTF16(label)), icon(std::move(icon)) {} +Suggestion::Suggestion(base::StringPiece main_text, + base::StringPiece minor_text, + base::StringPiece label, + std::string icon, + int frontend_id) + : frontend_id(frontend_id), + main_text(base::UTF8ToUTF16(main_text), Text::IsPrimary(true)), + minor_text(base::UTF8ToUTF16(minor_text)), + label(base::UTF8ToUTF16(label)), + icon(std::move(icon)) {} + +Suggestion::Suggestion(const Suggestion& other) = default; +Suggestion::Suggestion(Suggestion&& other) = default; + Suggestion& Suggestion::operator=(const Suggestion& other) = default; Suggestion& Suggestion::operator=(Suggestion&& other) = default;
diff --git a/components/autofill/core/browser/ui/suggestion.h b/components/autofill/core/browser/ui/suggestion.h index 1d5665c..9e402fec 100644 --- a/components/autofill/core/browser/ui/suggestion.h +++ b/components/autofill/core/browser/ui/suggestion.h
@@ -23,21 +23,50 @@ SUBSTRING_MATCH // for substring matched suggestions; }; - Suggestion(); - Suggestion(const Suggestion& other); - Suggestion(Suggestion&& other); + // The text information shown on the UI layer for a Suggestion. + struct Text { + using IsPrimary = base::StrongAlias<class IsPrimaryTag, bool>; + using ShouldTruncate = base::StrongAlias<class ShouldTruncateTag, bool>; - explicit Suggestion(std::u16string value); + Text(); + explicit Text(std::u16string value, + IsPrimary is_primary = IsPrimary(false), + ShouldTruncate should_truncate = ShouldTruncate(false)); + Text(const Text& other); + Text(Text& other); + Text& operator=(const Text& other); + Text& operator=(Text&& other); + ~Text(); + bool operator==(const Suggestion::Text& text) const; + bool operator!=(const Suggestion::Text& text) const; + + // The text value to be shown. + std::u16string value; + + // Whether the text should be shown with a primary style. + IsPrimary is_primary = IsPrimary(false); + + // Whether the text should be truncated if the bubble width is limited. + ShouldTruncate should_truncate = ShouldTruncate(false); + }; + + Suggestion(); + explicit Suggestion(std::u16string main_text); // Constructor for unit tests. It will convert the strings from UTF-8 to // UTF-16. - Suggestion(base::StringPiece value, + Suggestion(base::StringPiece main_text, base::StringPiece label, std::string icon, int frontend_id); - + Suggestion(base::StringPiece main_text, + base::StringPiece minor_text, + base::StringPiece label, + std::string icon, + int frontend_id); + Suggestion(const Suggestion& other); + Suggestion(Suggestion&& other); Suggestion& operator=(const Suggestion& other); Suggestion& operator=(Suggestion&& other); - ~Suggestion(); // GUID generated by the backend layer. This identifies the exact autofill @@ -49,19 +78,26 @@ // (see popup_item_ids.h) have special built-in meanings. int frontend_id = 0; - // The text that will be filled in to the focused field and is displayed as - // the main text in the suggestion. Its style depends on |is_value_secondary|. - std::u16string value; + // The texts that will be displayed on the first line in a suggestion. The + // order of showing the two texts on the first line depends on whether it is + // in RTL languages. The |main_text| includes the text value to be filled in + // the form, while the |minor_text| includes other supplementary text value to + // be shown also on the first line. + Text main_text; + Text minor_text; // The text displayed on the second line in a suggestion. std::u16string label; + // A label to be shown beneath |label| that will display information about any // credit card offers or rewards. std::u16string offer_label; + // Used only for passwords to show the password value. // Also used to display an extra line of information if two line // display is enabled. std::u16string additional_label; + // Contains an image to display for the suggestion. gfx::Image custom_icon; @@ -74,6 +110,7 @@ // TODO(crbug.com/1019660): Identify icons with enum instead of strings. // If |custom_icon| is empty, the name of the fallback built-in icon. std::string icon; + // An icon that appears after the suggestion in the suggestion view. For // passwords, this icon string shows whether the suggestion originates from // local or account store. It is also used on the settings entry for the @@ -81,11 +118,12 @@ // cards. It also holds Google Password Manager icon on the settings entry for // the passwords Autofill popup. std::string trailing_icon; + MatchMode match = PREFIX_MATCH; - // Whether |value| should be displayed as secondary text. - bool is_value_secondary = false; + // Whether suggestion was interacted with and is now in a loading state. IsLoading is_loading = IsLoading(false); + // The In-Product-Help feature that should be shown for the suggestion. std::string feature_for_iph;
diff --git a/components/autofill/core/browser/ui/suggestion_selection.cc b/components/autofill/core/browser/ui/suggestion_selection.cc index 519293a..2971056 100644 --- a/components/autofill/core/browser/ui/suggestion_selection.cc +++ b/components/autofill/core/browser/ui/suggestion_selection.cc
@@ -166,7 +166,8 @@ AutofillProfile* profile_b = matched_profiles[j]; // Check if profile A is a subset of profile B. If not, continue. if (i == j || - !comparator.Compare(suggestions[i].value, suggestions[j].value) || + !comparator.Compare(suggestions[i].main_text.value, + suggestions[j].main_text.value) || !profile_a->IsSubsetOfForFieldSet(comparator, *profile_b, app_locale, types)) { continue; @@ -292,7 +293,7 @@ bool text_inserted = suggestion_text .insert(comparator.NormalizeForComparison( - (*suggestions)[i].value + label, + (*suggestions)[i].main_text.value + label, AutofillProfileComparator::DISCARD_WHITESPACE)) .second; @@ -308,8 +309,9 @@ // cases, e.g. when a credit card form contains a zip code field and the // user clicks on the zip code, a suggestion's value and the label // produced for it may both be a zip code. - if (!comparator.Compare((*suggestions)[index_to_add_suggestion].value, - labels[i])) { + if (!comparator.Compare( + (*suggestions)[index_to_add_suggestion].main_text.value, + labels[i])) { (*suggestions)[index_to_add_suggestion].label = labels[i]; } ++index_to_add_suggestion;
diff --git a/components/autofill/core/browser/ui/suggestion_selection_unittest.cc b/components/autofill/core/browser/ui/suggestion_selection_unittest.cc index 295586e..6d56371 100644 --- a/components/autofill/core/browser/ui/suggestion_selection_unittest.cc +++ b/components/autofill/core/browser/ui/suggestion_selection_unittest.cc
@@ -120,7 +120,11 @@ ASSERT_EQ(1U, suggestions.size()); ASSERT_EQ(1U, matched_profiles.size()); - EXPECT_THAT(suggestions, ElementsAre(Field(&Suggestion::value, u"Marion"))); + EXPECT_THAT( + suggestions, + ElementsAre(Field( + &Suggestion::main_text, + Suggestion::Text(u"Marion", Suggestion::Text::IsPrimary(true))))); } TEST_F(SuggestionSelectionTest, GetPrefixMatchedSuggestions_NoMatchingProfile) { @@ -173,7 +177,10 @@ ASSERT_EQ(kMaxSuggestedProfilesCount, suggestions.size()); ASSERT_EQ(kMaxSuggestedProfilesCount, matched_profiles.size()); - EXPECT_THAT(suggestions, Each(Field(&Suggestion::value, Not(u"Marie")))); + EXPECT_THAT(suggestions, + Each(Field(&Suggestion::main_text, + Not(Suggestion::Text( + u"Marie", Suggestion::Text::IsPrimary(true)))))); EXPECT_THAT(matched_profiles, Each(ResultOf( @@ -201,8 +208,11 @@ ASSERT_EQ(1U, unique_suggestions.size()); ASSERT_EQ(1U, unique_matched_profiles.size()); - EXPECT_THAT(unique_suggestions, - ElementsAre(Field(&Suggestion::value, u"Bob"))); + EXPECT_THAT( + unique_suggestions, + ElementsAre( + Field(&Suggestion::main_text, + Suggestion::Text(u"Bob", Suggestion::Text::IsPrimary(true))))); } TEST_F(SuggestionSelectionTest, GetUniqueSuggestions_MultipleDedupe) { @@ -227,10 +237,15 @@ ASSERT_EQ(3U, unique_suggestions.size()); ASSERT_EQ(3U, unique_matched_profiles.size()); - EXPECT_THAT(unique_suggestions, - ElementsAre(Field(&Suggestion::value, u"Bob"), - Field(&Suggestion::value, u"Bob"), - Field(&Suggestion::value, u"Mary"))); + EXPECT_THAT( + unique_suggestions, + ElementsAre( + Field(&Suggestion::main_text, + Suggestion::Text(u"Bob", Suggestion::Text::IsPrimary(true))), + Field(&Suggestion::main_text, + Suggestion::Text(u"Bob", Suggestion::Text::IsPrimary(true))), + Field(&Suggestion::main_text, + Suggestion::Text(u"Mary", Suggestion::Text::IsPrimary(true))))); } TEST_F(SuggestionSelectionTest, GetUniqueSuggestions_DedupeLimit) { @@ -261,7 +276,7 @@ // All profiles are different. for (size_t i = 0; i < unique_suggestions.size(); i++) { ASSERT_EQ(ASCIIToUTF16(base::StringPrintf("Bob %zu", i)), - unique_suggestions[i].value); + unique_suggestions[i].main_text.value); } } @@ -451,10 +466,15 @@ // duplicates with a lower rank are removed. EXPECT_THAT( suggestions, - ElementsAre(AllOf(Field(&Suggestion::value, u"Jon Snow"), - Field(&Suggestion::label, u"2 Beyond-the-Wall Rd")), - AllOf(Field(&Suggestion::value, u"Jon Snow"), - Field(&Suggestion::label, u"1 Winterfell Ln")))); + ElementsAre( + AllOf(Field(&Suggestion::main_text, + Suggestion::Text(u"Jon Snow", + Suggestion::Text::IsPrimary(true))), + Field(&Suggestion::label, u"2 Beyond-the-Wall Rd")), + AllOf(Field(&Suggestion::main_text, + Suggestion::Text(u"Jon Snow", + Suggestion::Text::IsPrimary(true))), + Field(&Suggestion::label, u"1 Winterfell Ln")))); } TEST_F(SuggestionSelectionTest, @@ -469,12 +489,19 @@ EXPECT_THAT( suggestions, - ElementsAre(AllOf(Field(&Suggestion::value, u"Sansa"), - Field(&Suggestion::label, u"1 Winterfell Ln")), - AllOf(Field(&Suggestion::value, u"Sansa"), - Field(&Suggestion::label, u"")), - AllOf(Field(&Suggestion::value, u"Brienne"), - Field(&Suggestion::label, u"1 Winterfell Ln")))); + ElementsAre( + AllOf(Field(&Suggestion::main_text, + Suggestion::Text(u"Sansa", + Suggestion::Text::IsPrimary(true))), + Field(&Suggestion::label, u"1 Winterfell Ln")), + AllOf(Field(&Suggestion::main_text, + Suggestion::Text(u"Sansa", + Suggestion::Text::IsPrimary(true))), + Field(&Suggestion::label, u"")), + AllOf(Field(&Suggestion::main_text, + Suggestion::Text(u"Brienne", + Suggestion::Text::IsPrimary(true))), + Field(&Suggestion::label, u"1 Winterfell Ln")))); } TEST_F(SuggestionSelectionTest, PrepareSuggestions_SameStringInValueAndLabel) { @@ -484,8 +511,11 @@ PrepareSuggestions(labels, &suggestions, comparator_); EXPECT_THAT(suggestions, - ElementsAre(AllOf(Field(&Suggestion::value, u"4 Mañana Road"), - Field(&Suggestion::label, std::u16string())))); + ElementsAre(AllOf( + Field(&Suggestion::main_text, + Suggestion::Text(u"4 Mañana Road", + Suggestion::Text::IsPrimary(true))), + Field(&Suggestion::label, std::u16string())))); } } // namespace suggestion_selection
diff --git a/components/autofill/core/browser/ui/suggestion_test_helpers.h b/components/autofill/core/browser/ui/suggestion_test_helpers.h index de639bc..a751bde 100644 --- a/components/autofill/core/browser/ui/suggestion_test_helpers.h +++ b/components/autofill/core/browser/ui/suggestion_test_helpers.h
@@ -60,13 +60,13 @@ elts_are_matcher, &Suggestion::frontend_id)); } -// Like SuggestionVectorIdsAre above, but tests the values. +// Like SuggestionVectorIdsAre above, but tests the main_texts. template <class EltsAreMatcher> inline testing::Matcher<const std::vector<Suggestion>&> -SuggestionVectorValuesAre(const EltsAreMatcher& elts_are_matcher) { +SuggestionVectorMainTextsAre(const EltsAreMatcher& elts_are_matcher) { return testing::MakeMatcher( - new SuggestionVectorMembersAreMatcher<std::u16string>( - elts_are_matcher, &Suggestion::value)); + new SuggestionVectorMembersAreMatcher<Suggestion::Text>( + elts_are_matcher, &Suggestion::main_text)); } // Like SuggestionVectorIdsAre above, but tests the labels.
diff --git a/components/autofill/core/common/autofill_payments_features.cc b/components/autofill/core/common/autofill_payments_features.cc index 236ef5d..092f846 100644 --- a/components/autofill/core/common/autofill_payments_features.cc +++ b/components/autofill/core/common/autofill_payments_features.cc
@@ -169,6 +169,17 @@ const base::Feature kAutofillSaveCardInfobarEditSupport{ "AutofillSaveCardInfobarEditSupport", base::FEATURE_ENABLED_BY_DEFAULT}; +// When enabled, Chrome will display experimental UI variants to the user +// during the upload save card process. +const base::Feature kAutofillSaveCardUiExperiment{ + "AutofillSaveCardUiExperiment", base::FEATURE_DISABLED_BY_DEFAULT}; + +// This will select one of the options for the save card UI bubble which we +// want to display to the user. The value will be an integer(number). +const base::FeatureParam<int> kAutofillSaveCardUiExperimentSelectorInNumber{ + &kAutofillSaveCardUiExperiment, + "autofill_save_card_ui_experiment_selector_in_number", 0}; + // When enabled, the entire PAN and the CVC details of the unmasked cached card // will be shown in the manual filling view. const base::Feature kAutofillShowUnmaskedCachedCardInManualFillingView{
diff --git a/components/autofill/core/common/autofill_payments_features.h b/components/autofill/core/common/autofill_payments_features.h index d7741e7..86548a9 100644 --- a/components/autofill/core/common/autofill_payments_features.h +++ b/components/autofill/core/common/autofill_payments_features.h
@@ -43,6 +43,9 @@ extern const base::Feature kAutofillParseMerchantPromoCodeFields; extern const base::Feature kAutofillSaveCardDismissOnNavigation; extern const base::Feature kAutofillSaveCardInfobarEditSupport; +extern const base::Feature kAutofillSaveCardUiExperiment; +extern const base::FeatureParam<int> + kAutofillSaveCardUiExperimentSelectorInNumber; extern const base::Feature kAutofillShowUnmaskedCachedCardInManualFillingView; extern const base::Feature kAutofillSortSuggestionsBasedOnOfferPresence; extern const base::Feature kAutofillSuggestVirtualCardsOnIncompleteForm;
diff --git a/components/autofill/ios/browser/autofill_agent.mm b/components/autofill/ios/browser/autofill_agent.mm index dd8b0ba..867fe9f 100644 --- a/components/autofill/ios/browser/autofill_agent.mm +++ b/components/autofill/ios/browser/autofill_agent.mm
@@ -581,16 +581,16 @@ // Value will contain the text to be filled in the selected element while // displayDescription will contain a summary of the data to be filled in // the other elements. - value = SysUTF16ToNSString(popup_suggestion.value); + value = SysUTF16ToNSString(popup_suggestion.main_text.value); displayDescription = SysUTF16ToNSString(popup_suggestion.label); } else if (popup_suggestion.frontend_id == autofill::POPUP_ITEM_ID_CLEAR_FORM) { // Show the "clear form" button. - value = SysUTF16ToNSString(popup_suggestion.value); + value = SysUTF16ToNSString(popup_suggestion.main_text.value); } else if (popup_suggestion.frontend_id == autofill::POPUP_ITEM_ID_SHOW_ACCOUNT_CARDS) { // Show opt-in for showing cards from account. - value = SysUTF16ToNSString(popup_suggestion.value); + value = SysUTF16ToNSString(popup_suggestion.main_text.value); } if (!value)
diff --git a/components/feed/core/proto/v2/wire/capability.proto b/components/feed/core/proto/v2/wire/capability.proto index b94df7421..d4bf141 100644 --- a/components/feed/core/proto/v2/wire/capability.proto +++ b/components/feed/core/proto/v2/wire/capability.proto
@@ -37,4 +37,5 @@ OPEN_IN_INCOGNITO = 67; ON_DEVICE_USER_PROFILE = 70; INVALIDATE_CACHE_COMMAND = 73; + INFO_CARD_ACKNOWLEDGEMENT_TRACKING = 77; }
diff --git a/components/feed/core/v2/proto_util.cc b/components/feed/core/v2/proto_util.cc index c565ee1..5f60d66 100644 --- a/components/feed/core/v2/proto_util.cc +++ b/components/feed/core/v2/proto_util.cc
@@ -166,6 +166,11 @@ feed_request.add_client_capability(Capability::ON_DEVICE_USER_PROFILE); } + if (base::FeatureList::IsEnabled(kInfoCardAcknowledgementTracking)) { + feed_request.add_client_capability( + Capability::INFO_CARD_ACKNOWLEDGEMENT_TRACKING); + } + *feed_request.mutable_client_info() = CreateClientInfo(request_metadata); feedwire::FeedQuery& query = *feed_request.mutable_feed_query(); query.set_reason(request_reason);
diff --git a/components/feed/core/v2/proto_util_unittest.cc b/components/feed/core/v2/proto_util_unittest.cc index 2c9a56d8..2f2e1a0 100644 --- a/components/feed/core/v2/proto_util_unittest.cc +++ b/components/feed/core/v2/proto_util_unittest.cc
@@ -251,5 +251,20 @@ Not(Contains((feedwire::Capability::READ_LATER)))); } +TEST(ProtoUtilTest, InfoCardAcknowledgementTrackingEnabled) { + base::test::ScopedFeatureList scoped_feature_list; + scoped_feature_list.InitWithFeatures({kInfoCardAcknowledgementTracking}, {}); + feedwire::FeedRequest request = + CreateFeedQueryRefreshRequest(kForYouStream, + feedwire::FeedQuery::MANUAL_REFRESH, + /*request_metadata=*/{}, + /*consistency_token=*/std::string()) + .feed_request(); + + ASSERT_THAT( + request.client_capability(), + Contains(feedwire::Capability::INFO_CARD_ACKNOWLEDGEMENT_TRACKING)); +} + } // namespace } // namespace feed
diff --git a/components/feed/feed_feature_list.cc b/components/feed/feed_feature_list.cc index c9a53c5d..e062650 100644 --- a/components/feed/feed_feature_list.cc +++ b/components/feed/feed_feature_list.cc
@@ -110,4 +110,7 @@ const base::Feature kPersonalizeFeedUnsignedUsers{ "PersonalizeFeedUnsignedUsers", base::FEATURE_ENABLED_BY_DEFAULT}; +const base::Feature kInfoCardAcknowledgementTracking{ + "InfoCardAcknowledgementTracking", base::FEATURE_DISABLED_BY_DEFAULT}; + } // namespace feed
diff --git a/components/feed/feed_feature_list.h b/components/feed/feed_feature_list.h index 8f119e4b..f7c0312e 100644 --- a/components/feed/feed_feature_list.h +++ b/components/feed/feed_feature_list.h
@@ -108,6 +108,9 @@ // Personalize feed for unsigned users. extern const base::Feature kPersonalizeFeedUnsignedUsers; +// Feature that enables tracking the acknowledgement state for the info cards. +extern const base::Feature kInfoCardAcknowledgementTracking; + } // namespace feed #endif // COMPONENTS_FEED_FEED_FEATURE_LIST_H_
diff --git a/components/history/core/browser/history_backend.cc b/components/history/core/browser/history_backend.cc index b3680668..82edfc5 100644 --- a/components/history/core/browser/history_backend.cc +++ b/components/history/core/browser/history_backend.cc
@@ -1911,8 +1911,7 @@ return result; } -MostVisitedURLList HistoryBackend::QueryMostVisitedURLs(int result_count, - int days_back) { +MostVisitedURLList HistoryBackend::QueryMostVisitedURLs(int result_count) { if (!db_) return {}; @@ -1923,8 +1922,8 @@ ? base::BindRepeating(&HistoryBackendClient::IsWebSafe, base::Unretained(backend_client_.get())) : base::NullCallback(); - std::vector<std::unique_ptr<PageUsageData>> data = db_->QuerySegmentUsage( - base::Time::Now() - base::Days(days_back), result_count, url_filter); + std::vector<std::unique_ptr<PageUsageData>> data = + db_->QuerySegmentUsage(result_count, url_filter); MostVisitedURLList result; for (const std::unique_ptr<PageUsageData>& current_data : data)
diff --git a/components/history/core/browser/history_backend.h b/components/history/core/browser/history_backend.h index d7267520..bde4d7c5 100644 --- a/components/history/core/browser/history_backend.h +++ b/components/history/core/browser/history_backend.h
@@ -293,9 +293,8 @@ VisibleVisitCountToHostResult GetVisibleVisitCountToHost(const GURL& url); // Request the `result_count` most visited URLs and the chain of - // redirects leading to each of these URLs. `days_back` is the - // number of days of history to use. Used by TopSites. - MostVisitedURLList QueryMostVisitedURLs(int result_count, int days_back); + // redirects leading to each of these URLs. Used by TopSites. + MostVisitedURLList QueryMostVisitedURLs(int result_count); // Statistics ----------------------------------------------------------------
diff --git a/components/history/core/browser/history_backend_db_unittest.cc b/components/history/core/browser/history_backend_db_unittest.cc index ca8e13e1..2aac0c1 100644 --- a/components/history/core/browser/history_backend_db_unittest.cc +++ b/components/history/core/browser/history_backend_db_unittest.cc
@@ -1683,7 +1683,7 @@ CreateBackendAndDatabase(); std::vector<std::unique_ptr<PageUsageData>> results = - db_->QuerySegmentUsage(segment_time, 10, base::NullCallback()); + db_->QuerySegmentUsage(/*max_result_count=*/10, base::NullCallback()); ASSERT_EQ(1u, results.size()); EXPECT_EQ(url, results[0]->GetURL()); EXPECT_EQ(segment_id, results[0]->GetID()); @@ -1830,7 +1830,7 @@ CreateBackendAndDatabase(); std::vector<std::unique_ptr<PageUsageData>> results = db_->QuerySegmentUsage( - segment_time, /*max_result_count=*/10, base::NullCallback()); + /*max_result_count=*/10, base::NullCallback()); ASSERT_EQ(1u, results.size()); EXPECT_THAT(results[0]->GetURL(), testing::AnyOf(url1, url2)); EXPECT_THAT(results[0]->GetTitle(), testing::AnyOf(title1, title2)); @@ -2620,15 +2620,15 @@ // Without a filter, the "file://" URL should win. std::vector<std::unique_ptr<PageUsageData>> results = - db_->QuerySegmentUsage(time, 1, base::NullCallback()); + db_->QuerySegmentUsage(/*max_result_count=*/1, base::NullCallback()); ASSERT_EQ(1u, results.size()); EXPECT_EQ(url1, results[0]->GetURL()); EXPECT_EQ(segment_id1, results[0]->GetID()); // With the filter, the "file://" URL should be filtered out, so the "http://" // URL should win instead. - std::vector<std::unique_ptr<PageUsageData>> results2 = - db_->QuerySegmentUsage(time, 1, base::BindRepeating(&FilterURL)); + std::vector<std::unique_ptr<PageUsageData>> results2 = db_->QuerySegmentUsage( + /*max_result_count=*/1, base::BindRepeating(&FilterURL)); ASSERT_EQ(1u, results2.size()); EXPECT_EQ(url2, results2[0]->GetURL()); EXPECT_EQ(segment_id2, results2[0]->GetID());
diff --git a/components/history/core/browser/history_backend_unittest.cc b/components/history/core/browser/history_backend_unittest.cc index d9fc378..097ebcf1 100644 --- a/components/history/core/browser/history_backend_unittest.cc +++ b/components/history/core/browser/history_backend_unittest.cc
@@ -3457,7 +3457,7 @@ backend_->AddPage(args); } - MostVisitedURLList most_visited = backend_->QueryMostVisitedURLs(100, 100); + MostVisitedURLList most_visited = backend_->QueryMostVisitedURLs(100); const std::u16string kSomeTitle; // Ignored by equality operator. EXPECT_THAT(
diff --git a/components/history/core/browser/history_service.cc b/components/history/core/browser/history_service.cc index 11f06d5..fa1509f 100644 --- a/components/history/core/browser/history_service.cc +++ b/components/history/core/browser/history_service.cc
@@ -1046,7 +1046,6 @@ base::CancelableTaskTracker::TaskId HistoryService::QueryMostVisitedURLs( int result_count, - int days_back, QueryMostVisitedURLsCallback callback, base::CancelableTaskTracker* tracker) { DCHECK(backend_task_runner_) << "History service being called after cleanup"; @@ -1054,7 +1053,7 @@ return tracker->PostTaskAndReplyWithResult( backend_task_runner_.get(), FROM_HERE, base::BindOnce(&HistoryBackend::QueryMostVisitedURLs, history_backend_, - result_count, days_back), + result_count), std::move(callback)); }
diff --git a/components/history/core/browser/history_service.h b/components/history/core/browser/history_service.h index 6e18bb0..0f3f7c0 100644 --- a/components/history/core/browser/history_service.h +++ b/components/history/core/browser/history_service.h
@@ -323,14 +323,12 @@ base::CancelableTaskTracker* tracker); // Request the `result_count` most visited URLs and the chain of - // redirects leading to each of these URLs. `days_back` is the - // number of days of history to use. Used by TopSites. + // redirects leading to each of these URLs. Used by TopSites. using QueryMostVisitedURLsCallback = base::OnceCallback<void(MostVisitedURLList)>; base::CancelableTaskTracker::TaskId QueryMostVisitedURLs( int result_count, - int days_back, QueryMostVisitedURLsCallback callback, base::CancelableTaskTracker* tracker);
diff --git a/components/history/core/browser/history_service_unittest.cc b/components/history/core/browser/history_service_unittest.cc index c9a55f5f..698bca0 100644 --- a/components/history/core/browser/history_service_unittest.cc +++ b/components/history/core/browser/history_service_unittest.cc
@@ -128,12 +128,10 @@ void QueryMostVisitedURLs() { const int kResultCount = 20; - const int kDaysBack = 90; base::RunLoop run_loop; history_service_->QueryMostVisitedURLs( - kResultCount, kDaysBack, - base::BindLambdaForTesting([&](MostVisitedURLList urls) { + kResultCount, base::BindLambdaForTesting([&](MostVisitedURLList urls) { most_visited_urls_ = urls; run_loop.Quit(); }),
diff --git a/components/history/core/browser/top_sites_impl.cc b/components/history/core/browser/top_sites_impl.cc index 6f5d994..46333b0 100644 --- a/components/history/core/browser/top_sites_impl.cc +++ b/components/history/core/browser/top_sites_impl.cc
@@ -229,8 +229,6 @@ TopSitesImpl::~TopSitesImpl() = default; void TopSitesImpl::StartQueryForMostVisited() { - constexpr int kDaysOfHistory = 90; - DCHECK(loaded_); timer_.Stop(); @@ -238,7 +236,7 @@ return; history_service_->QueryMostVisitedURLs( - num_results_to_request_from_history(), kDaysOfHistory, + num_results_to_request_from_history(), base::BindOnce(&TopSitesImpl::OnTopSitesAvailableFromHistory, base::Unretained(this)), &cancelable_task_tracker_);
diff --git a/components/history/core/browser/visitsegment_database.cc b/components/history/core/browser/visitsegment_database.cc index 01f5ef8..36cfd55 100644 --- a/components/history/core/browser/visitsegment_database.cc +++ b/components/history/core/browser/visitsegment_database.cc
@@ -198,7 +198,6 @@ std::vector<std::unique_ptr<PageUsageData>> VisitSegmentDatabase::QuerySegmentUsage( - base::Time from_time, int max_result_count, const base::RepeatingCallback<bool(const GURL&)>& url_filter) { // This function gathers the highest-ranked segments in two queries. @@ -207,16 +206,13 @@ // segments. // Gather all the segment scores. - sql::Statement statement(GetDB().GetCachedStatement(SQL_FROM_HERE, - "SELECT segment_id, time_slot, visit_count " - "FROM segment_usage WHERE time_slot >= ? " - "ORDER BY segment_id")); + sql::Statement statement( + GetDB().GetCachedStatement(SQL_FROM_HERE, + "SELECT segment_id, time_slot, visit_count " + "FROM segment_usage ORDER BY segment_id")); if (!statement.is_valid()) return std::vector<std::unique_ptr<PageUsageData>>(); - base::Time ts = from_time.LocalMidnight(); - statement.BindInt64(0, ts.ToInternalValue()); - std::vector<std::unique_ptr<PageUsageData>> segments; base::Time now = base::Time::Now(); SegmentID previous_segment_id = 0;
diff --git a/components/history/core/browser/visitsegment_database.h b/components/history/core/browser/visitsegment_database.h index 3cc8a78..450699e 100644 --- a/components/history/core/browser/visitsegment_database.h +++ b/components/history/core/browser/visitsegment_database.h
@@ -53,11 +53,10 @@ bool IncreaseSegmentVisitCount(SegmentID segment_id, base::Time ts, int amount); - // Computes the segment usage since `from_time`. If `url_filter` is non-null, - // then only URLs for which it returns true will be included. - // Returns the highest-scored segments up to `max_result_count`. + // Returns the highest-scored segments up to `max_result_count`. If + // `url_filter` is non-null, then only URLs for which it returns true will be + // included. std::vector<std::unique_ptr<PageUsageData>> QuerySegmentUsage( - base::Time from_time, int max_result_count, const base::RepeatingCallback<bool(const GURL&)>& url_filter);
diff --git a/components/password_manager/core/browser/password_autofill_manager.cc b/components/password_manager/core/browser/password_autofill_manager.cc index 606755f..720ff53 100644 --- a/components/password_manager/core/browser/password_autofill_manager.cc +++ b/components/password_manager/core/browser/password_autofill_manager.cc
@@ -124,12 +124,13 @@ bool replaced_username; autofill::Suggestion suggestion( ReplaceEmptyUsername(field_suggestion, &replaced_username)); - suggestion.is_value_secondary = replaced_username; + suggestion.main_text.is_primary = + autofill::Suggestion::Text::IsPrimary(!replaced_username); suggestion.label = GetHumanReadableRealm(signon_realm); suggestion.additional_label = std::u16string(password_length, kPasswordReplacementChar); suggestion.voice_over = l10n_util::GetStringFUTF16( - IDS_PASSWORD_MANAGER_PASSWORD_FOR_ACCOUNT, suggestion.value); + IDS_PASSWORD_MANAGER_PASSWORD_FOR_ACCOUNT, suggestion.main_text.value); if (!suggestion.label.empty()) { // The domainname is only shown for passwords with a common eTLD+1 // but different subdomain. @@ -187,7 +188,7 @@ std::sort(suggestions->begin() + prefered_match, suggestions->end(), [](const autofill::Suggestion& a, const autofill::Suggestion& b) { - return a.value < b.value; + return a.main_text.value < b.main_text.value; }); // Prefix matches should precede other token matches.
diff --git a/components/password_manager/core/browser/password_autofill_manager_unittest.cc b/components/password_manager/core/browser/password_autofill_manager_unittest.cc index cdd00337361..34291e6 100644 --- a/components/password_manager/core/browser/password_autofill_manager_unittest.cc +++ b/components/password_manager/core/browser/password_autofill_manager_unittest.cc
@@ -70,7 +70,7 @@ using autofill::SuggestionVectorIconsAre; using autofill::SuggestionVectorIdsAre; using autofill::SuggestionVectorLabelsAre; -using autofill::SuggestionVectorValuesAre; +using autofill::SuggestionVectorMainTextsAre; using autofill::password_generation::PasswordGenerationType; using base::test::RunOnceCallback; using device_reauth::BiometricAuthRequester; @@ -964,10 +964,15 @@ password_autofill_manager_->OnShowPasswordSuggestions( base::i18n::RIGHT_TO_LEFT, std::u16string(), autofill::ShowPasswordSuggestionsOptions(), element_bounds); - EXPECT_THAT(open_args.suggestions, - SuggestionVectorValuesAre(testing::UnorderedElementsAre( - test_username_, u"Gohn Foo", u"John Foo", u"Kohn Foo", - GetManagePasswordsTitle()))); + EXPECT_THAT( + open_args.suggestions, + SuggestionVectorMainTextsAre(ElementsAre( + Suggestion::Text(test_username_, Suggestion::Text::IsPrimary(true)), + Suggestion::Text(u"Gohn Foo", Suggestion::Text::IsPrimary(true)), + Suggestion::Text(u"John Foo", Suggestion::Text::IsPrimary(true)), + Suggestion::Text(u"Kohn Foo", Suggestion::Text::IsPrimary(true)), + Suggestion::Text(GetManagePasswordsTitle(), + Suggestion::Text::IsPrimary(true))))); EXPECT_THAT(open_args.suggestions, SuggestionVectorLabelsAre(testing::Contains(u"foo.com"))); EXPECT_THAT(open_args.suggestions, @@ -980,18 +985,26 @@ base::i18n::RIGHT_TO_LEFT, u"John", autofill::ShowPasswordSuggestionsOptions(), element_bounds); EXPECT_THAT(open_args.suggestions, - SuggestionVectorValuesAre( - ElementsAre(additional.username, GetManagePasswordsTitle()))); + SuggestionVectorMainTextsAre(testing::ElementsAre( + Suggestion::Text(additional.username, + Suggestion::Text::IsPrimary(true)), + Suggestion::Text(GetManagePasswordsTitle(), + Suggestion::Text::IsPrimary(true))))); // Finally, simulate displaying all suggestions, without any prefix matching. EXPECT_CALL(autofill_client, ShowAutofillPopup) .WillOnce(testing::SaveArg<0>(&open_args)); password_autofill_manager_->OnShowPasswordSuggestions( base::i18n::RIGHT_TO_LEFT, u"xyz", autofill::SHOW_ALL, element_bounds); - EXPECT_THAT(open_args.suggestions, - SuggestionVectorValuesAre( - ElementsAre(test_username_, u"Gohn Foo", u"John Foo", - u"Kohn Foo", GetManagePasswordsTitle()))); + EXPECT_THAT( + open_args.suggestions, + SuggestionVectorMainTextsAre(ElementsAre( + Suggestion::Text(test_username_, Suggestion::Text::IsPrimary(true)), + Suggestion::Text(u"Gohn Foo", Suggestion::Text::IsPrimary(true)), + Suggestion::Text(u"John Foo", Suggestion::Text::IsPrimary(true)), + Suggestion::Text(u"Kohn Foo", Suggestion::Text::IsPrimary(true)), + Suggestion::Text(GetManagePasswordsTitle(), + Suggestion::Text::IsPrimary(true))))); } // Verify that, for Android application credentials, the prettified realms of @@ -1050,9 +1063,12 @@ password_autofill_manager_->OnShowPasswordSuggestions( base::i18n::RIGHT_TO_LEFT, test_username_, autofill::IS_PASSWORD_FIELD, element_bounds); - EXPECT_THAT(open_args.suggestions, - SuggestionVectorValuesAre( - ElementsAre(test_username_, GetManagePasswordsTitle()))); + EXPECT_THAT( + open_args.suggestions, + SuggestionVectorMainTextsAre(ElementsAre( + Suggestion::Text(test_username_, Suggestion::Text::IsPrimary(true)), + Suggestion::Text(GetManagePasswordsTitle(), + Suggestion::Text::IsPrimary(true))))); EXPECT_FALSE(open_args.autoselect_first_suggestion); EXPECT_EQ(open_args.popup_type, PopupType::kPasswords); } @@ -1089,8 +1105,12 @@ base::i18n::RIGHT_TO_LEFT, u"foo", autofill::ShowPasswordSuggestionsOptions(), element_bounds); EXPECT_THAT(open_args.suggestions, - SuggestionVectorValuesAre(testing::UnorderedElementsAre( - username, additional.username, GetManagePasswordsTitle()))); + SuggestionVectorMainTextsAre(ElementsAre( + Suggestion::Text(username, Suggestion::Text::IsPrimary(true)), + Suggestion::Text(additional.username, + Suggestion::Text::IsPrimary(true)), + Suggestion::Text(GetManagePasswordsTitle(), + Suggestion::Text::IsPrimary(true))))); EXPECT_FALSE(open_args.autoselect_first_suggestion); EXPECT_EQ(open_args.popup_type, PopupType::kPasswords); } @@ -1160,8 +1180,11 @@ base::i18n::RIGHT_TO_LEFT, u"foo@exam", autofill::ShowPasswordSuggestionsOptions(), element_bounds); EXPECT_THAT(open_args.suggestions, - SuggestionVectorValuesAre( - ElementsAre(additional.username, GetManagePasswordsTitle()))); + SuggestionVectorMainTextsAre(ElementsAre( + Suggestion::Text(additional.username, + Suggestion::Text::IsPrimary(true)), + Suggestion::Text(GetManagePasswordsTitle(), + Suggestion::Text::IsPrimary(true))))); EXPECT_FALSE(open_args.autoselect_first_suggestion); EXPECT_EQ(open_args.popup_type, PopupType::kPasswords); } @@ -1200,8 +1223,13 @@ base::i18n::RIGHT_TO_LEFT, u"foo", autofill::ShowPasswordSuggestionsOptions(), element_bounds); EXPECT_THAT(open_args.suggestions, - SuggestionVectorValuesAre(ElementsAre( - username, additional.username, GetManagePasswordsTitle()))); + SuggestionVectorMainTextsAre(ElementsAre( + Suggestion::Text(username, Suggestion::Text::IsPrimary(true)), + Suggestion::Text(additional.username, + Suggestion::Text::IsPrimary(true)), + Suggestion::Text(GetManagePasswordsTitle(), + Suggestion::Text::IsPrimary(true))))); + EXPECT_FALSE(open_args.autoselect_first_suggestion); EXPECT_EQ(open_args.popup_type, PopupType::kPasswords); } @@ -1270,9 +1298,12 @@ histograms.ExpectUniqueSample(kDropdownShownHistogram, metrics_util::PasswordDropdownState::kStandard, 1); - EXPECT_THAT(open_args.suggestions, - SuggestionVectorValuesAre( - ElementsAre(test_username_, GetManagePasswordsTitle()))); + EXPECT_THAT( + open_args.suggestions, + SuggestionVectorMainTextsAre(ElementsAre( + Suggestion::Text(test_username_, Suggestion::Text::IsPrimary(true)), + Suggestion::Text(GetManagePasswordsTitle(), + Suggestion::Text::IsPrimary(true))))); // Clicking at the "Show all passwords row" should trigger a call to open // the Password Manager settings page and hide the popup. @@ -1323,9 +1354,12 @@ password_autofill_manager_->OnShowPasswordSuggestions( base::i18n::RIGHT_TO_LEFT, test_username_, autofill::ShowPasswordSuggestionsOptions(), element_bounds); - EXPECT_THAT(open_args.suggestions, - SuggestionVectorValuesAre( - ElementsAre(test_username_, GetManagePasswordsTitle()))); + EXPECT_THAT( + open_args.suggestions, + SuggestionVectorMainTextsAre(ElementsAre( + Suggestion::Text(test_username_, Suggestion::Text::IsPrimary(true)), + Suggestion::Text(GetManagePasswordsTitle(), + Suggestion::Text::IsPrimary(true))))); EXPECT_FALSE(open_args.autoselect_first_suggestion); EXPECT_EQ(open_args.popup_type, PopupType::kPasswords); } @@ -1376,9 +1410,14 @@ EXPECT_THAT(open_args.suggestions, SuggestionVectorIconsAre(ElementsAre("globeIcon", "keyIcon", GetManagePasswordsIcon()))); - EXPECT_THAT(open_args.suggestions, SuggestionVectorValuesAre(ElementsAre( - test_username_, generation_string, - GetManagePasswordsTitle()))); + EXPECT_THAT( + open_args.suggestions, + SuggestionVectorMainTextsAre(ElementsAre( + Suggestion::Text(test_username_, Suggestion::Text::IsPrimary(true)), + Suggestion::Text(generation_string, + Suggestion::Text::IsPrimary(true)), + Suggestion::Text(GetManagePasswordsTitle(), + Suggestion::Text::IsPrimary(true))))); // Click "Generate password". EXPECT_CALL(client, GeneratePassword(PasswordGenerationType::kAutomatic)); @@ -1420,9 +1459,13 @@ /*show_password_suggestions=*/false)); EXPECT_THAT(open_args.suggestions, SuggestionVectorIconsAre(ElementsAre( "keyIcon", GetManagePasswordsIcon()))); + EXPECT_THAT(open_args.suggestions, - SuggestionVectorValuesAre( - ElementsAre(generation_string, GetManagePasswordsTitle()))); + SuggestionVectorMainTextsAre(ElementsAre( + Suggestion::Text(generation_string, + Suggestion::Text::IsPrimary(true)), + Suggestion::Text(GetManagePasswordsTitle(), + Suggestion::Text::IsPrimary(true))))); } // Test that if the "opt in and generate" button gets displayed, the regular @@ -1824,7 +1867,7 @@ EXPECT_EQ(open_args.suggestions[0].backend_id, kId); EXPECT_EQ(open_args.suggestions[0].frontend_id, autofill::POPUP_ITEM_ID_WEBAUTHN_CREDENTIAL); - EXPECT_EQ(open_args.suggestions[0].value, kDisplayName); + EXPECT_EQ(open_args.suggestions[0].main_text.value, kDisplayName); EXPECT_EQ(open_args.suggestions[0].label, kName); testing::Mock::VerifyAndClearExpectations(client.mock_driver());
diff --git a/components/remote_cocoa/app_shim/native_widget_ns_window_bridge.h b/components/remote_cocoa/app_shim/native_widget_ns_window_bridge.h index 0da752b..a9e8916 100644 --- a/components/remote_cocoa/app_shim/native_widget_ns_window_bridge.h +++ b/components/remote_cocoa/app_shim/native_widget_ns_window_bridge.h
@@ -189,7 +189,7 @@ return fullscreen_controller_->GetTargetFullscreenState(); return target_fullscreen_state_; } - bool window_visible() const { return window_visible_; } + bool window_visible() const; bool wants_to_be_visible() const { return wants_to_be_visible_; } bool in_fullscreen_transition() const { if (fullscreen_controller_) @@ -422,6 +422,11 @@ // currently hidden due to having a hidden parent. bool wants_to_be_visible_ = false; + // This tracks headless window visibility state. In headless mode + // the platform window is always hidden, so we use this boolean + // to track the window's requested visibility state. + bool headless_window_visibility_state_ = false; + // If true, then ignore interactions with CATransactionCoordinator until the // first frame arrives. bool ca_transaction_sync_suppressed_ = false;
diff --git a/components/remote_cocoa/app_shim/native_widget_ns_window_bridge.mm b/components/remote_cocoa/app_shim/native_widget_ns_window_bridge.mm index 7e83431f..46d29fe 100644 --- a/components/remote_cocoa/app_shim/native_widget_ns_window_bridge.mm +++ b/components/remote_cocoa/app_shim/native_widget_ns_window_bridge.mm
@@ -689,9 +689,16 @@ void NativeWidgetNSWindowBridge::SetVisibilityState( WindowVisibilityState new_state) { - // Avoid changing headless mode window visibility state. - if (is_headless_mode_window_) + // In headless mode the platform window is always hidden, so instead of + // changing its visibility state just maintain a local flag to track the + // expected visibility state and lie to the upper layer pretending the + // window did change its visibility state. + if (is_headless_mode_window_) { + headless_window_visibility_state_ = + new_state != WindowVisibilityState::kHideWindow; + host_->OnVisibilityChanged(headless_window_visibility_state_); return; + } // During session restore this method gets called from RestoreTabsToBrowser() // with new_state = kShowAndActivateWindow. We consume restoration data on our @@ -1738,4 +1745,13 @@ } } +bool NativeWidgetNSWindowBridge::window_visible() const { + // In headless mode the platform window is always hidden, so instead of + // returning the actual platform window visibility state tracked by + // OnVisibilityChanged() callback, return the expected visibility state + // maintained by SetVisibilityState() call. + return is_headless_mode_window_ ? headless_window_visibility_state_ + : window_visible_; +} + } // namespace remote_cocoa
diff --git a/components/reporting/storage/storage_queue.cc b/components/reporting/storage/storage_queue.cc index 26b7661..80ba44898 100644 --- a/components/reporting/storage/storage_queue.cc +++ b/components/reporting/storage/storage_queue.cc
@@ -859,6 +859,14 @@ return; } + // If expected sequencing id is at or beyond the last (empty) file, + // we have succeeded - there are no records to upload. + if (sequence_info_.sequencing_id() >= + storage_queue_->files_.rbegin()->first) { + Response(Status::StatusOK()); + return; + } + // Collect and set aside the files in the set that might have data // for the Upload. files_ =
diff --git a/components/services/storage/public/mojom/indexed_db_control_test.mojom b/components/services/storage/public/mojom/indexed_db_control_test.mojom index 4efbc952..b07a71f0d6 100644 --- a/components/services/storage/public/mojom/indexed_db_control_test.mojom +++ b/components/services/storage/public/mojom/indexed_db_control_test.mojom
@@ -8,7 +8,6 @@ import "mojo/public/mojom/base/file_path.mojom"; import "mojo/public/mojom/base/values.mojom"; import "mojo/public/mojom/base/time.mojom"; -import "third_party/blink/public/mojom/storage_key/storage_key.mojom"; enum V2SchemaCorruptionStatus { CORRUPTION_UNKNOWN, @@ -45,8 +44,8 @@ // Gets the root data path for storage. GetBaseDataPathForTesting() => (mojo_base.mojom.FilePath path); - // Gets the file name of the local storage file for the given `storage_key`. - GetFilePathForTesting(blink.mojom.StorageKey storage_key) => + // Gets the name of the local storage file for the given `bucket_locator`. + GetFilePathForTesting(storage.mojom.BucketLocator bucket_locator) => (mojo_base.mojom.FilePath path); // Forgets the storage keys and sizes read from disk. @@ -64,11 +63,11 @@ WriteToIndexedDBForTesting(storage.mojom.BucketLocator bucket_locator, string key, string value) => (); - // Returns the number of blobs for a given `storage_key`. - GetBlobCountForTesting(blink.mojom.StorageKey storage_key) => + // Returns the number of blobs for a given `bucket_locator`. + GetBlobCountForTesting(storage.mojom.BucketLocator bucket_locator) => (int64 num_blobs); - // Returns the next blob id for a given `storage_key`. + // Returns the next blob id for a given `bucket_locator`. GetNextBlobNumberForTesting(storage.mojom.BucketLocator bucket_locator, int64 database_id) => (int64 next_blob_number); @@ -77,8 +76,9 @@ int64 database_id, int64 blob_number) => (mojo_base.mojom.FilePath path); - // Compacts the backing store for a given `storage_key`. - CompactBackingStoreForTesting(blink.mojom.StorageKey storage_key) => (); + // Compacts the backing store for a given `bucket_locator`. + CompactBackingStoreForTesting(storage.mojom.BucketLocator bucket_locator) => + (); // Overrides IndexedDB with a mock class factory that can inject failures // at specific points. For now, because this is static, there can only @@ -93,4 +93,7 @@ // Return keys used in WriteToIndexedDBForTesting. GetDatabaseKeysForTesting() => (string schema_version_key, string data_version_key); + + // Forces disk files to be re-read and added to active set if changed. + ForceInitializeFromFilesForTesting() => (); };
diff --git a/components/viz/common/features.cc b/components/viz/common/features.cc index 078def7..dab559e 100644 --- a/components/viz/common/features.cc +++ b/components/viz/common/features.cc
@@ -178,7 +178,7 @@ #if BUILDFLAG(IS_MAC) const base::Feature kMacCAOverlayQuad{"MacCAOverlayQuads", - base::FEATURE_DISABLED_BY_DEFAULT}; + base::FEATURE_ENABLED_BY_DEFAULT}; // The maximum supported overlay quad number on Mac CALayerOverlay. // The default is set to -1. When MaxNum is < 0, the default in CALayerOverlay // will be used instead.
diff --git a/components/web_cache/browser/web_cache_manager.cc b/components/web_cache/browser/web_cache_manager.cc index 3b7fcf34..7eb41d56 100644 --- a/components/web_cache/browser/web_cache_manager.cc +++ b/components/web_cache/browser/web_cache_manager.cc
@@ -25,6 +25,11 @@ namespace web_cache { +constexpr uint64_t kNoCapacitySet = std::numeric_limits<uint64_t>::max(); + +WebCacheManager::WebCacheInfo::WebCacheInfo() : last_capacity(kNoCapacitySet){}; +WebCacheManager::WebCacheInfo::~WebCacheInfo() = default; + static const int kReviseAllocationDelayMS = 200; // The default size limit of the in-memory cache is 8 MB @@ -75,7 +80,7 @@ if (host) { mojo::Remote<mojom::WebCache> service; host->BindReceiver(service.BindNewPipeAndPassReceiver()); - web_cache_services_[renderer_id] = std::move(service); + web_cache_services_[renderer_id].service = std::move(service); } // Revise our allocation strategy to account for this new renderer. @@ -280,24 +285,24 @@ } void WebCacheManager::EnactStrategy(const AllocationStrategy& strategy) { - // Inform each render process of its cache allocation. - auto allocation = strategy.begin(); - while (allocation != strategy.end()) { + for (auto& [render_process_id, new_capacity] : strategy) { content::RenderProcessHost* host = - content::RenderProcessHost::FromID(allocation->first); - if (host) { - // This is the capacity this renderer has been allocated. - uint64_t capacity = allocation->second; + content::RenderProcessHost::FromID(render_process_id); + if (!host) + continue; - // Find the mojo::Remote<WebCache> by renderer process id. - auto it = web_cache_services_.find(allocation->first); - if (it != web_cache_services_.end()) { - const mojo::Remote<mojom::WebCache>& service = it->second; - DCHECK(service); - service->SetCacheCapacity(capacity); - } - } - ++allocation; + // Find the mojo::Remote<WebCache> by renderer process id. + auto it = web_cache_services_.find(render_process_id); + if (it == web_cache_services_.end()) + continue; + + WebCacheInfo& cache_info = it->second; + if (cache_info.last_capacity == new_capacity) + continue; + + DCHECK(cache_info.service); + cache_info.service->SetCacheCapacity(new_capacity); + cache_info.last_capacity = new_capacity; } } @@ -318,9 +323,9 @@ // Find the mojo::Remote<WebCache> by renderer process id. auto it = web_cache_services_.find(*iter); if (it != web_cache_services_.end()) { - const mojo::Remote<mojom::WebCache>& service = it->second; - DCHECK(service); - service->ClearCache(occasion == ON_NAVIGATION); + WebCacheInfo& cache_info = it->second; + DCHECK(cache_info.service); + cache_info.service->ClearCache(occasion == ON_NAVIGATION); } } } @@ -332,6 +337,8 @@ DCHECK(stats_.size() <= active_renderers_.size() + inactive_renderers_.size()); + callback_pending_ = false; + // Check if renderers have gone inactive. FindInactiveRenderers(); @@ -383,6 +390,12 @@ if (base::FeatureList::IsEnabled(kTrimWebCacheOnMemoryPressureOnly)) return; + // Avoid piling up notifications. + if (callback_pending_) + return; + + callback_pending_ = true; + // Ask to be called back in a few milliseconds to actually recompute our // allocation. base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
diff --git a/components/web_cache/browser/web_cache_manager.h b/components/web_cache/browser/web_cache_manager.h index 783feafb..4e1fb343 100644 --- a/components/web_cache/browser/web_cache_manager.h +++ b/components/web_cache/browser/web_cache_manager.h
@@ -139,8 +139,14 @@ // each renderer is permitted to consume for its cache. typedef std::list<Allocation> AllocationStrategy; + struct WebCacheInfo { + WebCacheInfo(); + ~WebCacheInfo(); + mojo::Remote<mojom::WebCache> service; + uint64_t last_capacity; + }; // The key is the unique id of every render process host. - typedef std::map<int, mojo::Remote<mojom::WebCache>> WebCacheServicesMap; + typedef std::map<int, WebCacheInfo> WebCacheServicesMap; // This class is a singleton. Do not instantiate directly. Call GetInstance() // instead. @@ -245,6 +251,9 @@ // recently than they have been active. std::set<int> inactive_renderers_; + // True if a delayed call to ReviseAllocationStrategy() is pending. + bool callback_pending_ = false; + // Maps every renderer_id with its corresponding // mojo::Remote<mojom::WebCache>. WebCacheServicesMap web_cache_services_;
diff --git a/components/wifi/fake_wifi_service.cc b/components/wifi/fake_wifi_service.cc index 4b717c4..d60428f4 100644 --- a/components/wifi/fake_wifi_service.cc +++ b/components/wifi/fake_wifi_service.cc
@@ -119,7 +119,8 @@ it->type == network_type) { std::unique_ptr<base::DictionaryValue> network( it->ToValue(!include_details)); - network_list->Append(std::move(network)); + network_list->GetList().Append( + base::Value::FromUniquePtrValue(std::move(network))); } } }
diff --git a/content/browser/buckets/OWNERS b/content/browser/buckets/OWNERS index 0c26f8d..210c7d8c 100644 --- a/content/browser/buckets/OWNERS +++ b/content/browser/buckets/OWNERS
@@ -1,5 +1,6 @@ # Primary -ayui@chromium.org +estade@chromium.org # Secondary asully@chromium.org +ayui@chromium.org
diff --git a/content/browser/gpu/gpu_data_manager_impl_private.cc b/content/browser/gpu/gpu_data_manager_impl_private.cc index 1bbcf72..260a2d4 100644 --- a/content/browser/gpu/gpu_data_manager_impl_private.cc +++ b/content/browser/gpu/gpu_data_manager_impl_private.cc
@@ -1477,12 +1477,12 @@ std::unique_ptr<base::ListValue> GpuDataManagerImplPrivate::GetLogMessages() const { auto value = std::make_unique<base::ListValue>(); - for (size_t ii = 0; ii < log_messages_.size(); ++ii) { - auto dict = std::make_unique<base::DictionaryValue>(); - dict->SetInteger("level", log_messages_[ii].level); - dict->SetString("header", log_messages_[ii].header); - dict->SetString("message", log_messages_[ii].message); - value->Append(std::move(dict)); + for (const auto& log_message : log_messages_) { + base::Value::Dict dict; + dict.Set("level", log_message.level); + dict.Set("header", log_message.header); + dict.Set("message", log_message.message); + value->GetList().Append(std::move(dict)); } return value; }
diff --git a/content/browser/indexed_db/database_impl.cc b/content/browser/indexed_db/database_impl.cc index c1e98b10..9e5d0a0 100644 --- a/content/browser/indexed_db/database_impl.cc +++ b/content/browser/indexed_db/database_impl.cc
@@ -52,9 +52,7 @@ DCHECK(idb_runner_->RunsTasksInCurrentSequence()); DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DCHECK(connection_); - // TODO(crbug.com/1218100): Propagate BucketLocator to callee. - indexed_db_context_->ConnectionOpened(bucket_locator_.storage_key, - connection_.get()); + indexed_db_context_->ConnectionOpened(bucket_locator_, connection_.get()); } DatabaseImpl::~DatabaseImpl() { @@ -64,13 +62,10 @@ status = connection_->AbortTransactionsAndClose( IndexedDBConnection::CloseErrorHandling::kAbortAllReturnLastError); } - // TODO(crbug.com/1218100): Propagate BucketLocator to callee. - indexed_db_context_->ConnectionClosed(bucket_locator_.storage_key, - connection_.get()); + indexed_db_context_->ConnectionClosed(bucket_locator_, connection_.get()); if (!status.ok()) { - // TODO(crbug.com/1218100): Propagate BucketLocator to callee. indexed_db_context_->GetIDBFactory()->OnDatabaseError( - bucket_locator_.storage_key, status, "Error during rollbacks."); + bucket_locator_, status, "Error during rollbacks."); } } @@ -152,9 +147,8 @@ IndexedDBConnection::CloseErrorHandling::kReturnOnFirstError); if (!status.ok()) { - // TODO(crbug.com/1218100): Propagate BucketLocator to callee. indexed_db_context_->GetIDBFactory()->OnDatabaseError( - bucket_locator_.storage_key, status, "Error during rollbacks."); + bucket_locator_, status, "Error during rollbacks."); } }
diff --git a/content/browser/indexed_db/indexed_db_backing_store_unittest.cc b/content/browser/indexed_db/indexed_db_backing_store_unittest.cc index ee07956..cf85aabd 100644 --- a/content/browser/indexed_db/indexed_db_backing_store_unittest.cc +++ b/content/browser/indexed_db/indexed_db_backing_store_unittest.cc
@@ -405,7 +405,7 @@ base::SequencedTaskRunnerHandle::Get()); idb_context_->ForceCloseSync( - bucket_locator.storage_key, + bucket_locator, storage::mojom::ForceCloseReason::FORCE_CLOSE_DELETE_ORIGIN); loop.Run(); // There is a possible race in `leveldb_close_event` where the signaling @@ -416,10 +416,10 @@ EXPECT_TRUE(leveldb_close_event.IsSignaled()); } // All leveldb databases are closed, and they can be deleted. - for (auto bucket : idb_context_->GetAllBuckets()) { + for (auto bucket_locator : idb_context_->GetAllBuckets()) { bool success = false; storage::mojom::IndexedDBControlAsyncWaiter waiter(idb_context_.get()); - waiter.DeleteForBucket(bucket, &success); + waiter.DeleteForBucket(bucket_locator.storage_key, &success); EXPECT_TRUE(success); } }
diff --git a/content/browser/indexed_db/indexed_db_browsertest.cc b/content/browser/indexed_db/indexed_db_browsertest.cc index 9e554623..7d407836 100644 --- a/content/browser/indexed_db/indexed_db_browsertest.cc +++ b/content/browser/indexed_db/indexed_db_browsertest.cc
@@ -230,12 +230,12 @@ return size; } - int64_t RequestBlobFileCount(const blink::StorageKey& storage_key) { + int64_t RequestBlobFileCount(const storage::BucketLocator& bucket_locator) { base::RunLoop loop; int64_t count = 0; auto control_test = GetControlTest(); control_test->GetBlobCountForTesting( - storage_key, + bucket_locator, base::BindOnce(base::BindLambdaForTesting([&](int64_t returned_count) { count = returned_count; loop.Quit(); @@ -550,15 +550,19 @@ const IndexedDBBrowserTestWithPreexistingLevelDB&) = delete; void SetUpOnMainThread() override { - base::RunLoop loop; + base::RunLoop loop_move; auto control_test = GetControlTest(); control_test->GetBaseDataPathForTesting( base::BindLambdaForTesting([&](const base::FilePath& data_path) { CopyLevelDBToProfile(shell(), data_path, EnclosingLevelDBDir(), CustomModificationTimes()); - loop.Quit(); + loop_move.Quit(); })); - loop.Run(); + loop_move.Run(); + base::RunLoop loop_init; + control_test->ForceInitializeFromFilesForTesting( + base::BindLambdaForTesting([&]() { loop_init.Quit(); })); + loop_init.Run(); } virtual std::string EnclosingLevelDBDir() = 0; @@ -754,8 +758,18 @@ const blink::StorageKey kTestStorageKey = blink::StorageKey(url::Origin::Create(kTestUrl)); DeleteForStorageKey(kTestStorageKey); - EXPECT_EQ( - 0, RequestBlobFileCount(kTestStorageKey)); // Start with no blob files. + const auto maybe_bucket_info = + shell() + ->web_contents() + ->GetBrowserContext() + ->GetDefaultStoragePartition() + ->GetQuotaManager() + ->proxy() + ->GetOrCreateBucketSync(kTestStorageKey, storage::kDefaultBucketName); + ASSERT_TRUE(maybe_bucket_info.ok()); + const auto bucket_locator = maybe_bucket_info->ToBucketLocator(); + EXPECT_EQ(0, + RequestBlobFileCount(bucket_locator)); // Start with no blob files. // For some reason Android's futimes fails (EPERM) in this test. Do not assert // file times on Android, but do so on other platforms. crbug.com/467247 // TODO(cmumford): Figure out why this is the case and fix if possible. @@ -827,8 +841,7 @@ } #if !BUILDFLAG(IS_WIN) -void CorruptIndexedDBDatabase(const blink::StorageKey& storage_key, - const base::FilePath& idb_data_path) { +void CorruptIndexedDBDatabase(const base::FilePath& idb_data_path) { int num_files = 0; int num_errors = 0; const bool recursive = false; @@ -861,7 +874,7 @@ std::unique_ptr<net::test_server::HttpResponse> CorruptDBRequestHandler( scoped_refptr<base::SequencedTaskRunner> task_runner, - const blink::StorageKey& storage_key, + const storage::BucketLocator& bucket_locator, const std::string& path, IndexedDBBrowserTest* test, const net::test_server::HttpRequest& request) { @@ -901,11 +914,11 @@ // The less ideal temporary solution is to only run these tests on Windows. base::RunLoop loop; control_test->CompactBackingStoreForTesting( - storage_key, base::BindLambdaForTesting([&]() { + bucket_locator, base::BindLambdaForTesting([&]() { control_test->GetFilePathForTesting( - storage_key, + bucket_locator, base::BindLambdaForTesting([&](const base::FilePath& path) { - CorruptIndexedDBDatabase(storage_key, path); + CorruptIndexedDBDatabase(path); loop.Quit(); })); })); @@ -1020,9 +1033,27 @@ embedded_test_server()->InitializeAndListen()); const blink::StorageKey storage_key = blink::StorageKey( url::Origin::Create(embedded_test_server()->base_url())); + base::RunLoop loop; + storage::BucketLocator bucket_locator; + shell() + ->web_contents() + ->GetBrowserContext() + ->GetDefaultStoragePartition() + ->GetQuotaManager() + ->proxy() + ->GetOrCreateBucket( + storage_key, storage::kDefaultBucketName, + base::SequencedTaskRunnerHandle::Get(), + base::BindOnce(base::BindLambdaForTesting( + [&](storage::QuotaErrorOr<storage::BucketInfo> result) { + ASSERT_TRUE(result.ok()); + bucket_locator = result->ToBucketLocator(); + loop.Quit(); + }))); + loop.Run(); embedded_test_server()->RegisterRequestHandler(base::BindRepeating( &CorruptDBRequestHandler, base::SequencedTaskRunnerHandle::Get(), - storage_key, s_corrupt_db_test_prefix, this)); + bucket_locator, s_corrupt_db_test_prefix, this)); embedded_test_server()->StartAcceptingConnections(); std::string test_file = std::string(s_corrupt_db_test_prefix) +
diff --git a/content/browser/indexed_db/indexed_db_context_impl.cc b/content/browser/indexed_db/indexed_db_context_impl.cc index 0c8e146..57ff57b 100644 --- a/content/browser/indexed_db/indexed_db_context_impl.cc +++ b/content/browser/indexed_db/indexed_db_context_impl.cc
@@ -52,7 +52,6 @@ #include "storage/browser/database/database_util.h" #include "storage/browser/quota/quota_client_type.h" #include "storage/common/database/database_identifier.h" -#include "third_party/blink/public/common/storage_key/storage_key.h" #include "third_party/blink/public/mojom/indexeddb/indexeddb.mojom.h" #include "third_party/blink/public/mojom/quota/quota_types.mojom-shared.h" #include "third_party/blink/public/mojom/quota/quota_types.mojom.h" @@ -89,13 +88,13 @@ } // This may be called after the IndexedDBContext is destroyed. -void GetAllBucketsAndPaths(const base::FilePath& indexeddb_path, - std::vector<blink::StorageKey>* storage_keys, - std::vector<base::FilePath>* file_paths) { +const std::map<blink::StorageKey, base::FilePath> +DefaultBucketFilePerFirstPartyStorageKey(const base::FilePath& indexeddb_path) { // TODO(jsbell): DCHECK that this is running on an IndexedDB sequence, // if a global handle to it is ever available. + std::map<blink::StorageKey, base::FilePath> storage_key_to_file_path; if (indexeddb_path.empty()) - return; + return storage_key_to_file_path; base::FileEnumerator file_enumerator(indexeddb_path, false, base::FileEnumerator::DIRECTORIES); for (base::FilePath file_path = file_enumerator.Next(); !file_path.empty(); @@ -107,12 +106,11 @@ .RemoveExtension() .RemoveExtension() .MaybeAsASCII(); - storage_keys->push_back( - blink::StorageKey(storage::GetOriginFromIdentifier(storage_key_id))); - if (file_paths) - file_paths->push_back(file_path); + storage_key_to_file_path[blink::StorageKey( + storage::GetOriginFromIdentifier(storage_key_id))] = file_path; } } + return storage_key_to_file_path; } } // namespace @@ -203,32 +201,41 @@ void IndexedDBContextImpl::Bind( mojo::PendingReceiver<storage::mojom::IndexedDBControl> control) { - DCHECK(IDBTaskRunner()->RunsTasksInCurrentSequence()); + // We cannot run this in the constructor it needs to be async, but the async + // tasks might not finish before the destructor runs. + InitializeFromFilesIfNeeded(base::DoNothing()); receivers_.Add(this, std::move(control)); } void IndexedDBContextImpl::BindIndexedDB( const blink::StorageKey& storage_key, - // TODO(crbug.com/1315371): Allow custom bucket names. mojo::PendingReceiver<blink::mojom::IDBFactory> receiver) { - // Ensure default bucket exists for storage key on storage access and add - // bind receiver on retrieval. - quota_manager_proxy()->GetOrCreateBucket( - storage_key, storage::kDefaultBucketName, idb_task_runner_, - base::BindOnce(&IndexedDBContextImpl::BindIndexedDBWithBucket, + GetOrCreateDefaultBucket( + storage_key, + base::BindOnce(&IndexedDBContextImpl::BindIndexedDBImpl, weak_factory_.GetWeakPtr(), std::move(receiver))); } +void IndexedDBContextImpl::BindIndexedDBImpl( + mojo::PendingReceiver<blink::mojom::IDBFactory> receiver, + const absl::optional<storage::BucketLocator>& bucket_locator) { + dispatcher_host_.AddReceiver(bucket_locator, std::move(receiver)); +} + void IndexedDBContextImpl::GetUsage(GetUsageCallback usage_callback) { - DCHECK(IDBTaskRunner()->RunsTasksInCurrentSequence()); - std::vector<blink::StorageKey> storage_keys = GetAllBuckets(); + InitializeFromFilesIfNeeded( + base::BindOnce(&IndexedDBContextImpl::GetUsageImpl, + weak_factory_.GetWeakPtr(), std::move(usage_callback))); +} + +void IndexedDBContextImpl::GetUsageImpl(GetUsageCallback usage_callback) { std::vector<storage::mojom::StorageUsageInfoPtr> result; - for (const auto& storage_key : storage_keys) { + for (const auto& bucket_locator : GetAllBuckets()) { // TODO(https://crbug.com/1199077): Pass the real StorageKey when // StorageUsageInfo is converted. result.emplace_back(storage::mojom::StorageUsageInfo::New( - storage_key.origin(), GetBucketDiskUsage(storage_key), - GetBucketLastModified(storage_key))); + bucket_locator.storage_key.origin(), GetBucketDiskUsage(bucket_locator), + GetBucketLastModified(bucket_locator))); } std::move(usage_callback).Run(std::move(result)); } @@ -238,35 +245,53 @@ // https://crbug.com/965142. void IndexedDBContextImpl::DeleteForBucket(const blink::StorageKey& storage_key, DeleteForBucketCallback callback) { - DCHECK(IDBTaskRunner()->RunsTasksInCurrentSequence()); - ForceCloseSync(storage_key, + GetOrCreateDefaultBucket( + storage_key, + base::BindOnce(&IndexedDBContextImpl::DeleteForBucketImpl, + weak_factory_.GetWeakPtr(), std::move(callback))); +} + +void IndexedDBContextImpl::DeleteForBucketImpl( + DeleteForBucketCallback callback, + const absl::optional<storage::BucketLocator>& bucket_locator) { + if (!bucket_locator) { + std::move(callback).Run(true); + return; + } + ForceCloseSync(*bucket_locator, storage::mojom::ForceCloseReason::FORCE_CLOSE_DELETE_ORIGIN); - if (!HasBucket(storage_key)) { + // InitializeFromFilesIfNeeded might not have finished, so we need to check + // if there's a file in the directory and not exit early if so. + const auto& storage_key_to_file_path = + DefaultBucketFilePerFirstPartyStorageKey(data_path_); + if (!HasBucket(*bucket_locator) && + storage_key_to_file_path.find(bucket_locator->storage_key) == + storage_key_to_file_path.end()) { std::move(callback).Run(true); return; } if (is_incognito()) { - GetBucketSet()->erase(storage_key); - bucket_size_map_.erase(storage_key); + bucket_set_.erase(*bucket_locator); + bucket_size_map_.erase(*bucket_locator); std::move(callback).Run(true); return; } - base::FilePath idb_directory = GetLevelDBPath(storage_key); - EnsureDiskUsageCacheInitialized(storage_key); + base::FilePath idb_directory = GetLevelDBPath(*bucket_locator); + EnsureDiskUsageCacheInitialized(*bucket_locator); leveldb::Status s = IndexedDBClassFactory::Get()->leveldb_factory().DestroyLevelDB( idb_directory); bool success = s.ok(); if (success) - success = - filesystem_proxy_->DeletePathRecursively(GetBlobStorePath(storage_key)); - QueryDiskAndUpdateQuotaUsage(storage_key); + success = filesystem_proxy_->DeletePathRecursively( + GetBlobStorePath(*bucket_locator)); + QueryDiskAndUpdateQuotaUsage(*bucket_locator); if (success) { - GetBucketSet()->erase(storage_key); - bucket_size_map_.erase(storage_key); + bucket_set_.erase(*bucket_locator); + bucket_size_map_.erase(*bucket_locator); } std::move(callback).Run(success); } @@ -274,10 +299,19 @@ void IndexedDBContextImpl::ForceClose(const blink::StorageKey& storage_key, storage::mojom::ForceCloseReason reason, base::OnceClosure closure) { - DCHECK(IDBTaskRunner()->RunsTasksInCurrentSequence()); + GetOrCreateDefaultBucket( + storage_key, + base::BindOnce(&IndexedDBContextImpl::ForceCloseImpl, + weak_factory_.GetWeakPtr(), reason, std::move(closure))); +} + +void IndexedDBContextImpl::ForceCloseImpl( + const storage::mojom::ForceCloseReason reason, + base::OnceClosure closure, + const absl::optional<storage::BucketLocator>& bucket_locator) { base::UmaHistogramEnumeration("WebCore.IndexedDB.Context.ForceCloseReason", reason); - if (!HasBucket(storage_key)) { + if (!bucket_locator || !HasBucket(*bucket_locator)) { std::move(closure).Run(); return; } @@ -288,36 +322,54 @@ } // Make a copy of storage_key, as the ref might go away here during the close. - auto storage_key_copy = storage_key; + auto bucket_locator_copy = *bucket_locator; indexeddb_factory_->ForceClose( - storage_key_copy, + bucket_locator_copy, reason == storage::mojom::ForceCloseReason::FORCE_CLOSE_DELETE_ORIGIN); - DCHECK_EQ(0UL, GetConnectionCountSync(storage_key_copy)); + DCHECK_EQ(0UL, GetConnectionCountSync(bucket_locator_copy)); std::move(closure).Run(); } void IndexedDBContextImpl::GetConnectionCount( const blink::StorageKey& storage_key, GetConnectionCountCallback callback) { - std::move(callback).Run(GetConnectionCountSync(storage_key)); + GetOrCreateDefaultBucket( + storage_key, + base::BindOnce(&IndexedDBContextImpl::GetConnectionCountImpl, + weak_factory_.GetWeakPtr(), std::move(callback))); +} + +void IndexedDBContextImpl::GetConnectionCountImpl( + GetConnectionCountCallback callback, + const absl::optional<storage::BucketLocator>& bucket_locator) { + size_t count = 0; + if (bucket_locator) { + count = GetConnectionCountSync(*bucket_locator); + } + std::move(callback).Run(count); } void IndexedDBContextImpl::DownloadBucketData( const blink::StorageKey& storage_key, DownloadBucketDataCallback callback) { - // All of this must run on the IndexedDB task runner to prevent script from - // reopening the storage_key while we are zipping. - DCHECK(IDBTaskRunner()->RunsTasksInCurrentSequence()); + GetOrCreateDefaultBucket( + storage_key, + base::BindOnce(&IndexedDBContextImpl::DownloadBucketDataImpl, + weak_factory_.GetWeakPtr(), std::move(callback))); +} +void IndexedDBContextImpl::DownloadBucketDataImpl( + DownloadBucketDataCallback callback, + const absl::optional<storage::BucketLocator>& bucket_locator) { bool success = false; // Make sure the database hasn't been deleted. - if (!HasBucket(storage_key)) { + if (!bucket_locator || !HasBucket(*bucket_locator)) { std::move(callback).Run(success, base::FilePath(), base::FilePath()); return; } - ForceCloseSync(storage_key, + ForceCloseSync(*bucket_locator, storage::mojom::ForceCloseReason::FORCE_CLOSE_INTERNALS_PAGE); base::ScopedTempDir temp_dir; @@ -330,11 +382,11 @@ base::FilePath temp_path = temp_dir.Take(); std::string storage_key_id = - storage::GetIdentifierFromOrigin(storage_key.origin()); + storage::GetIdentifierFromOrigin(bucket_locator->storage_key.origin()); base::FilePath zip_path = temp_path.AppendASCII(storage_key_id) .AddExtension(FILE_PATH_LITERAL("zip")); - std::vector<base::FilePath> paths = GetStoragePaths(storage_key); + std::vector<base::FilePath> paths = GetStoragePaths(*bucket_locator); zip::ZipWithFilterCallback(data_path(), zip_path, base::BindRepeating(IsAllowedPath, paths)); @@ -345,41 +397,43 @@ void IndexedDBContextImpl::GetAllBucketsDetails( GetAllBucketsDetailsCallback callback) { DCHECK(IDBTaskRunner()->RunsTasksInCurrentSequence()); - std::vector<blink::StorageKey> storage_keys = GetAllBuckets(); + std::vector<storage::BucketLocator> bucket_locators = GetAllBuckets(); - std::sort(storage_keys.begin(), storage_keys.end()); + std::sort(bucket_locators.begin(), bucket_locators.end()); base::Value::List list; - for (const auto& storage_key : storage_keys) { + for (const auto& bucket_locator : bucket_locators) { base::Value info(base::Value::Type::DICTIONARY); // TODO(https://crbug.com/1199077): Serialize storage key directly // once supported by OriginDetails. - info.SetStringKey("url", storage_key.origin().Serialize()); + info.SetStringKey("url", bucket_locator.storage_key.origin().Serialize()); info.SetDoubleKey("size", - static_cast<double>(GetBucketDiskUsage(storage_key))); + static_cast<double>(GetBucketDiskUsage(bucket_locator))); info.SetDoubleKey("last_modified", - GetBucketLastModified(storage_key).ToJsTime()); + GetBucketLastModified(bucket_locator).ToJsTime()); base::Value paths(base::Value::Type::LIST); if (!is_incognito()) { - for (const base::FilePath& path : GetStoragePaths(storage_key)) + for (const base::FilePath& path : GetStoragePaths(bucket_locator)) paths.Append(path.AsUTF8Unsafe()); } else { paths.Append("N/A"); } info.SetKey("paths", std::move(paths)); - info.SetDoubleKey("connection_count", GetConnectionCountSync(storage_key)); + info.SetDoubleKey("connection_count", + GetConnectionCountSync(bucket_locator)); // This ends up being O(NlogN), where N = number of open databases. We - // iterate over all open databases to extract just those in the storage_key, - // and we're iterating over all storage_keys in the outer loop. + // iterate over all open databases to extract just those in the + // bucket_locator, and we're iterating over all bucket_locators in the outer + // loop. if (!indexeddb_factory_.get()) { list.Append(std::move(info)); continue; } std::vector<IndexedDBDatabase*> databases = - indexeddb_factory_->GetOpenDatabasesForBucket(storage_key); + indexeddb_factory_->GetOpenDatabasesForBucket(bucket_locator); // TODO(jsbell): Sort by name? base::Value database_list(base::Value::Type::LIST); @@ -471,34 +525,33 @@ [](IndexedDBContextImpl* context) { context->force_keep_session_state_ = true; }, - // As `this` is destroyed on the IDBTaskRunner it is safe to post raw. + // `this` is destroyed on idb_task_runner_ so it's safe to post raw. base::Unretained(this))); } void IndexedDBContextImpl::ApplyPolicyUpdates( std::vector<storage::mojom::StoragePolicyUpdatePtr> policy_updates) { - idb_task_runner_->PostTask( - FROM_HERE, - base::BindOnce( - [](IndexedDBContextImpl* context, - std::vector<storage::mojom::StoragePolicyUpdatePtr> - policy_updates) { - for (const auto& update : policy_updates) { - if (!update->purge_on_shutdown) { - // TODO(https://crbug.com/1199077): Use the real StorageKey when - // available. - context->buckets_to_purge_on_shutdown_.erase( - blink::StorageKey(update->origin)); - } else { - // TODO(https://crbug.com/1199077): Use the real StorageKey when - // available. - context->buckets_to_purge_on_shutdown_.insert( - blink::StorageKey(update->origin)); - } - } - }, - // As `this` is destroyed on the IDBTaskRunner it is safe to post raw. - base::Unretained(this), std::move(policy_updates))); + for (const auto& update : policy_updates) { + // TODO(https://crbug.com/1199077): Use the real StorageKey when available. + GetOrCreateDefaultBucket( + blink::StorageKey(update->origin), + base::BindOnce(&IndexedDBContextImpl::ApplyPolicyUpdateImpl, + weak_factory_.GetWeakPtr(), *update)); + } +} + +void IndexedDBContextImpl::ApplyPolicyUpdateImpl( + const storage::mojom::StoragePolicyUpdate& policy_update, + const absl::optional<storage::BucketLocator>& bucket_locator) { + if (!bucket_locator) + return; + DCHECK_EQ(blink::StorageKey(policy_update.origin), + bucket_locator->storage_key); + if (!policy_update.purge_on_shutdown) { + buckets_to_purge_on_shutdown_.erase(*bucket_locator); + } else { + buckets_to_purge_on_shutdown_.insert(*bucket_locator); + } } void IndexedDBContextImpl::BindTestInterface( @@ -516,7 +569,7 @@ mojo::PendingRemote<storage::mojom::IndexedDBObserver> observer) { context->observers_.Add(std::move(observer)); }, - // As `this` is destroyed on the IDBTaskRunner it is safe to post raw. + // `this` is destroyed on idb_task_runner_ so it's safe to post raw. base::Unretained(this), std::move(observer))); } @@ -526,13 +579,13 @@ } void IndexedDBContextImpl::GetFilePathForTesting( - const blink::StorageKey& storage_key, + const storage::BucketLocator& bucket_locator, GetFilePathForTestingCallback callback) { - std::move(callback).Run(GetLevelDBPath(storage_key)); + std::move(callback).Run(GetLevelDBPath(bucket_locator)); } void IndexedDBContextImpl::ResetCachesForTesting(base::OnceClosure callback) { - bucket_set_.reset(); + bucket_set_.clear(); bucket_size_map_.clear(); std::move(callback).Run(); } @@ -542,8 +595,7 @@ ForceSchemaDowngradeForTestingCallback callback) { DCHECK(IDBTaskRunner()->RunsTasksInCurrentSequence()); - // TODO(crbug.com/1218100): Propagate BucketLocator to callee. - if (is_incognito() || !HasBucket(bucket_locator.storage_key)) { + if (is_incognito() || !HasBucket(bucket_locator)) { std::move(callback).Run(false); return; } @@ -553,9 +605,8 @@ std::move(callback).Run(true); return; } - // TODO(crbug.com/1218100): Propagate BucketLocator to callee. ForceCloseSync( - bucket_locator.storage_key, + bucket_locator, storage::mojom::ForceCloseReason::FORCE_SCHEMA_DOWNGRADE_INTERNALS_PAGE); std::move(callback).Run(false); } @@ -565,8 +616,7 @@ HasV2SchemaCorruptionForTestingCallback callback) { DCHECK(IDBTaskRunner()->RunsTasksInCurrentSequence()); - // TODO(crbug.com/1218100): Propagate BucketLocator to callee. - if (is_incognito() || !HasBucket(bucket_locator.storage_key)) { + if (is_incognito() || !HasBucket(bucket_locator)) { std::move(callback).Run( storage::mojom::V2SchemaCorruptionStatus::CORRUPTION_UNKNOWN); return; @@ -601,15 +651,14 @@ s = db->Put(key, &value_copy); CHECK(s.ok()) << s.ToString(); handle.Release(); - // TODO(crbug.com/1218100): Propagate BucketLocator to callee. - GetIDBFactory()->ForceClose(bucket_locator.storage_key, true); + GetIDBFactory()->ForceClose(bucket_locator, true); std::move(callback).Run(); } void IndexedDBContextImpl::GetBlobCountForTesting( - const blink::StorageKey& storage_key, + const storage::BucketLocator& bucket_locator, GetBlobCountForTestingCallback callback) { - std::move(callback).Run(GetBucketBlobFileCount(storage_key)); + std::move(callback).Run(GetBucketBlobFileCount(bucket_locator)); } void IndexedDBContextImpl::GetNextBlobNumberForTesting( @@ -662,12 +711,12 @@ } void IndexedDBContextImpl::CompactBackingStoreForTesting( - const blink::StorageKey& storage_key, + const storage::BucketLocator& bucket_locator, base::OnceClosure callback) { IndexedDBFactoryImpl* factory = GetIDBFactory(); std::vector<IndexedDBDatabase*> databases = - factory->GetOpenDatabasesForBucket(storage_key); + factory->GetOpenDatabasesForBucket(bucket_locator); if (!databases.empty()) { // Compact the first db's backing store since all the db's are in the same @@ -702,41 +751,38 @@ } void IndexedDBContextImpl::ForceCloseSync( - const blink::StorageKey& storage_key, + const storage::BucketLocator& bucket_locator, storage::mojom::ForceCloseReason reason) { - ForceClose(storage_key, reason, base::DoNothing()); + storage_key_to_bucket_locator_[bucket_locator.storage_key] = bucket_locator; + ForceCloseImpl(reason, base::DoNothing(), bucket_locator); } IndexedDBFactoryImpl* IndexedDBContextImpl::GetIDBFactory() { DCHECK(IDBTaskRunner()->RunsTasksInCurrentSequence()); if (!indexeddb_factory_.get()) { - // Prime our cache of storage_keys with existing databases so we can - // detect when dbs are newly created. - GetBucketSet(); indexeddb_factory_ = std::make_unique<IndexedDBFactoryImpl>( this, IndexedDBClassFactory::Get(), clock_); } return indexeddb_factory_.get(); } -std::vector<blink::StorageKey> IndexedDBContextImpl::GetAllBuckets() { +std::vector<storage::BucketLocator> IndexedDBContextImpl::GetAllBuckets() { DCHECK(IDBTaskRunner()->RunsTasksInCurrentSequence()); - std::set<blink::StorageKey>* buckets_set = GetBucketSet(); - return std::vector<blink::StorageKey>(buckets_set->begin(), - buckets_set->end()); + return std::vector<storage::BucketLocator>(bucket_set_.begin(), + bucket_set_.end()); } -bool IndexedDBContextImpl::HasBucket(const blink::StorageKey& storage_key) { +bool IndexedDBContextImpl::HasBucket( + const storage::BucketLocator& bucket_locator) { DCHECK(IDBTaskRunner()->RunsTasksInCurrentSequence()); - std::set<blink::StorageKey>* set = GetBucketSet(); - return set->find(storage_key) != set->end(); + return bucket_set_.find(bucket_locator) != bucket_set_.end(); } int IndexedDBContextImpl::GetBucketBlobFileCount( - const blink::StorageKey& storage_key) { + const storage::BucketLocator& bucket_locator) { DCHECK(IDBTaskRunner()->RunsTasksInCurrentSequence()); int count = 0; - base::FileEnumerator file_enumerator(GetBlobStorePath(storage_key), true, + base::FileEnumerator file_enumerator(GetBlobStorePath(bucket_locator), true, base::FileEnumerator::FILES); for (base::FilePath file_path = file_enumerator.Next(); !file_path.empty(); file_path = file_enumerator.Next()) { @@ -746,28 +792,27 @@ } int64_t IndexedDBContextImpl::GetBucketDiskUsage( - const blink::StorageKey& storage_key) { + const storage::BucketLocator& bucket_locator) { DCHECK(IDBTaskRunner()->RunsTasksInCurrentSequence()); - if (!HasBucket(storage_key)) + if (!HasBucket(bucket_locator)) return 0; - - EnsureDiskUsageCacheInitialized(storage_key); - return bucket_size_map_[storage_key]; + EnsureDiskUsageCacheInitialized(bucket_locator); + return bucket_size_map_[bucket_locator]; } base::Time IndexedDBContextImpl::GetBucketLastModified( - const blink::StorageKey& storage_key) { + const storage::BucketLocator& bucket_locator) { DCHECK(IDBTaskRunner()->RunsTasksInCurrentSequence()); - if (!HasBucket(storage_key)) + if (!HasBucket(bucket_locator)) return base::Time(); if (is_incognito()) { if (!indexeddb_factory_) return base::Time(); - return indexeddb_factory_->GetLastModified(storage_key); + return indexeddb_factory_->GetLastModified(bucket_locator); } - base::FilePath idb_directory = GetLevelDBPath(storage_key); + base::FilePath idb_directory = GetLevelDBPath(bucket_locator); absl::optional<base::File::Info> info = filesystem_proxy_->GetFileInfo(idb_directory); if (!info.has_value()) @@ -776,89 +821,108 @@ } size_t IndexedDBContextImpl::GetConnectionCountSync( - const blink::StorageKey& storage_key) { + const storage::BucketLocator& bucket_locator) { DCHECK(IDBTaskRunner()->RunsTasksInCurrentSequence()); - if (!HasBucket(storage_key)) + if (!HasBucket(bucket_locator)) return 0; if (!indexeddb_factory_.get()) return 0; - return indexeddb_factory_->GetConnectionCount(storage_key); + return indexeddb_factory_->GetConnectionCount(bucket_locator); } std::vector<base::FilePath> IndexedDBContextImpl::GetStoragePaths( - const blink::StorageKey& storage_key) const { - std::vector<base::FilePath> paths = {GetLevelDBPath(storage_key), - GetBlobStorePath(storage_key)}; + const storage::BucketLocator& bucket_locator) const { + std::vector<base::FilePath> paths = {GetLevelDBPath(bucket_locator), + GetBlobStorePath(bucket_locator)}; return paths; } -void IndexedDBContextImpl::FactoryOpened(const blink::StorageKey& storage_key) { +void IndexedDBContextImpl::FactoryOpened( + const storage::BucketLocator& bucket_locator) { DCHECK(IDBTaskRunner()->RunsTasksInCurrentSequence()); - if (GetBucketSet()->insert(storage_key).second) { + const auto& it = + storage_key_to_bucket_locator_.find(bucket_locator.storage_key); + if (it == storage_key_to_bucket_locator_.end()) { + storage_key_to_bucket_locator_[bucket_locator.storage_key] = bucket_locator; + } + if (bucket_set_.insert(bucket_locator).second) { // A newly created db, notify the quota system. - QueryDiskAndUpdateQuotaUsage(storage_key); + QueryDiskAndUpdateQuotaUsage(bucket_locator); } else { - EnsureDiskUsageCacheInitialized(storage_key); + EnsureDiskUsageCacheInitialized(bucket_locator); } } void IndexedDBContextImpl::ConnectionOpened( - const blink::StorageKey& storage_key, + const storage::BucketLocator& bucket_locator, IndexedDBConnection* connection) { DCHECK(IDBTaskRunner()->RunsTasksInCurrentSequence()); - quota_manager_proxy()->NotifyStorageAccessed( - storage_key, blink::mojom::StorageType::kTemporary, base::Time::Now()); - if (GetBucketSet()->insert(storage_key).second) { + quota_manager_proxy()->NotifyBucketAccessed(bucket_locator.id, + base::Time::Now()); + const auto& it = + storage_key_to_bucket_locator_.find(bucket_locator.storage_key); + if (it == storage_key_to_bucket_locator_.end()) { + storage_key_to_bucket_locator_[bucket_locator.storage_key] = bucket_locator; + } + if (bucket_set_.insert(bucket_locator).second) { // A newly created db, notify the quota system. - QueryDiskAndUpdateQuotaUsage(storage_key); + QueryDiskAndUpdateQuotaUsage(bucket_locator); } else { - EnsureDiskUsageCacheInitialized(storage_key); + EnsureDiskUsageCacheInitialized(bucket_locator); } } void IndexedDBContextImpl::ConnectionClosed( - const blink::StorageKey& storage_key, + const storage::BucketLocator& bucket_locator, IndexedDBConnection* connection) { DCHECK(IDBTaskRunner()->RunsTasksInCurrentSequence()); - quota_manager_proxy()->NotifyStorageAccessed( - storage_key, blink::mojom::StorageType::kTemporary, base::Time::Now()); + quota_manager_proxy()->NotifyBucketAccessed(bucket_locator.id, + base::Time::Now()); if (indexeddb_factory_.get() && - indexeddb_factory_->GetConnectionCount(storage_key) == 0) - QueryDiskAndUpdateQuotaUsage(storage_key); + indexeddb_factory_->GetConnectionCount(bucket_locator) == 0) + QueryDiskAndUpdateQuotaUsage(bucket_locator); } void IndexedDBContextImpl::TransactionComplete( - const blink::StorageKey& storage_key) { + const storage::BucketLocator& bucket_locator) { DCHECK(!indexeddb_factory_.get() || - indexeddb_factory_->GetConnectionCount(storage_key) > 0); - QueryDiskAndUpdateQuotaUsage(storage_key); + indexeddb_factory_->GetConnectionCount(bucket_locator) > 0); + QueryDiskAndUpdateQuotaUsage(bucket_locator); } void IndexedDBContextImpl::DatabaseDeleted( - const blink::StorageKey& storage_key) { - GetBucketSet()->insert(storage_key); - QueryDiskAndUpdateQuotaUsage(storage_key); + const storage::BucketLocator& bucket_locator) { + const auto& it = + storage_key_to_bucket_locator_.find(bucket_locator.storage_key); + if (it == storage_key_to_bucket_locator_.end()) { + storage_key_to_bucket_locator_[bucket_locator.storage_key] = bucket_locator; + } + bucket_set_.insert(bucket_locator); + QueryDiskAndUpdateQuotaUsage(bucket_locator); } void IndexedDBContextImpl::BlobFilesCleaned( - const blink::StorageKey& storage_key) { - QueryDiskAndUpdateQuotaUsage(storage_key); + const storage::BucketLocator& bucket_locator) { + QueryDiskAndUpdateQuotaUsage(bucket_locator); } void IndexedDBContextImpl::NotifyIndexedDBListChanged( - const blink::StorageKey& storage_key) { - for (auto& observer : observers_) - observer->OnIndexedDBListChanged(storage_key); + const storage::BucketLocator& bucket_locator) { + for (auto& observer : observers_) { + // TODO(crbug.com/1218100): Propagate BucketLocator to callee. + observer->OnIndexedDBListChanged(bucket_locator.storage_key); + } } void IndexedDBContextImpl::NotifyIndexedDBContentChanged( - const blink::StorageKey& storage_key, + const storage::BucketLocator& bucket_locator, const std::u16string& database_name, const std::u16string& object_store_name) { for (auto& observer : observers_) { - observer->OnIndexedDBContentChanged(storage_key, database_name, - object_store_name); + // TODO(crbug.com/1218100): Propagate BucketLocator to callee. + observer->OnIndexedDBContentChanged(bucket_locator.storage_key, + database_name, object_store_name); } } @@ -868,16 +932,6 @@ indexeddb_factory_->ContextDestroyed(); } -void IndexedDBContextImpl::BindIndexedDBWithBucket( - mojo::PendingReceiver<blink::mojom::IDBFactory> receiver, - storage::QuotaErrorOr<storage::BucketInfo> result) { - absl::optional<storage::BucketLocator> bucket = absl::nullopt; - if (result.ok()) { - bucket = absl::make_optional(result->ToBucketLocator()); - } - dispatcher_host_.AddReceiver(bucket, std::move(receiver)); -} - void IndexedDBContextImpl::ShutdownOnIDBSequence() { DCHECK(idb_task_runner_->RunsTasksInCurrentSequence()); @@ -888,20 +942,20 @@ if (buckets_to_purge_on_shutdown_.empty()) return; - std::vector<blink::StorageKey> storage_keys; - std::vector<base::FilePath> file_paths; IndexedDBFactoryImpl* factory = GetIDBFactory(); - GetAllBucketsAndPaths(data_path_, &storage_keys, &file_paths); - DCHECK_EQ(storage_keys.size(), file_paths.size()); - - auto file_path = file_paths.cbegin(); - auto storage_key = storage_keys.cbegin(); - for (; storage_key != storage_keys.cend(); ++storage_key, ++file_path) { - if (buckets_to_purge_on_shutdown_.find(*storage_key) == - buckets_to_purge_on_shutdown_.end()) + const auto& storage_key_to_file_path = + DefaultBucketFilePerFirstPartyStorageKey(data_path_); + for (const auto& pair : storage_key_to_file_path) { + const auto& bucket_locator_it = + storage_key_to_bucket_locator_.find(pair.first); + if (bucket_locator_it == storage_key_to_bucket_locator_.end()) continue; - factory->ForceClose(*storage_key, false); - filesystem_proxy_->DeletePathRecursively(*file_path); + if (buckets_to_purge_on_shutdown_.find(bucket_locator_it->second) == + buckets_to_purge_on_shutdown_.end()) { + continue; + } + factory->ForceClose(bucket_locator_it->second, false); + filesystem_proxy_->DeletePathRecursively(pair.second); } } @@ -917,60 +971,145 @@ } base::FilePath IndexedDBContextImpl::GetBlobStorePath( - const blink::StorageKey& storage_key) const { + const storage::BucketLocator& bucket_locator) const { DCHECK(!is_incognito()); - return data_path_.Append(indexed_db::GetBlobStoreFileName(storage_key)); + // TODO(crbug.com/1218100): Propagate BucketLocator to callee. + return data_path_.Append( + indexed_db::GetBlobStoreFileName(bucket_locator.storage_key)); } base::FilePath IndexedDBContextImpl::GetLevelDBPath( - const blink::StorageKey& storage_key) const { + const storage::BucketLocator& bucket_locator) const { DCHECK(!is_incognito()); - return data_path_.Append(indexed_db::GetLevelDBFileName(storage_key)); + // TODO(crbug.com/1218100): Propagate BucketLocator to callee. + return data_path_.Append( + indexed_db::GetLevelDBFileName(bucket_locator.storage_key)); } int64_t IndexedDBContextImpl::ReadUsageFromDisk( - const blink::StorageKey& storage_key) const { + const storage::BucketLocator& bucket_locator) const { if (is_incognito()) { if (!indexeddb_factory_) return 0; - return indexeddb_factory_->GetInMemoryDBSize(storage_key); + return indexeddb_factory_->GetInMemoryDBSize(bucket_locator); } int64_t total_size = 0; - for (const base::FilePath& path : GetStoragePaths(storage_key)) + for (const base::FilePath& path : GetStoragePaths(bucket_locator)) total_size += filesystem_proxy_->ComputeDirectorySize(path); return total_size; } void IndexedDBContextImpl::EnsureDiskUsageCacheInitialized( - const blink::StorageKey& storage_key) { - if (bucket_size_map_.find(storage_key) == bucket_size_map_.end()) - bucket_size_map_[storage_key] = ReadUsageFromDisk(storage_key); + const storage::BucketLocator& bucket_locator) { + if (bucket_size_map_.find(bucket_locator) == bucket_size_map_.end()) + bucket_size_map_[bucket_locator] = ReadUsageFromDisk(bucket_locator); } void IndexedDBContextImpl::QueryDiskAndUpdateQuotaUsage( - const blink::StorageKey& storage_key) { - int64_t former_disk_usage = bucket_size_map_[storage_key]; - int64_t current_disk_usage = ReadUsageFromDisk(storage_key); + const storage::BucketLocator& bucket_locator) { + int64_t former_disk_usage = bucket_size_map_[bucket_locator]; + int64_t current_disk_usage = ReadUsageFromDisk(bucket_locator); int64_t difference = current_disk_usage - former_disk_usage; if (difference) { - bucket_size_map_[storage_key] = current_disk_usage; - quota_manager_proxy()->NotifyStorageModified( - storage::QuotaClientType::kIndexedDatabase, storage_key, - blink::mojom::StorageType::kTemporary, difference, base::Time::Now(), - base::SequencedTaskRunnerHandle::Get(), base::DoNothing()); - NotifyIndexedDBListChanged(storage_key); + bucket_size_map_[bucket_locator] = current_disk_usage; + quota_manager_proxy()->NotifyBucketModified( + storage::QuotaClientType::kIndexedDatabase, bucket_locator.id, + difference, base::Time::Now(), base::SequencedTaskRunnerHandle::Get(), + base::DoNothing()); + NotifyIndexedDBListChanged(bucket_locator); } } -std::set<blink::StorageKey>* IndexedDBContextImpl::GetBucketSet() { - if (!bucket_set_) { - std::vector<blink::StorageKey> storage_keys; - GetAllBucketsAndPaths(data_path_, &storage_keys, nullptr); - bucket_set_ = std::make_unique<std::set<blink::StorageKey>>( - storage_keys.begin(), storage_keys.end()); +void IndexedDBContextImpl::InitializeFromFilesIfNeeded( + base::OnceClosure callback) { + DCHECK(IDBTaskRunner()->RunsTasksInCurrentSequence()); + if (did_initialize_from_files_) { + std::move(callback).Run(); + return; } - return bucket_set_.get(); + const auto& storage_key_to_file_path = + DefaultBucketFilePerFirstPartyStorageKey(data_path_); + if (storage_key_to_file_path.empty()) { + did_initialize_from_files_ = true; + std::move(callback).Run(); + return; + } + for (auto iter = storage_key_to_file_path.begin(); + iter != storage_key_to_file_path.end(); ++iter) { + if (std::next(iter) == storage_key_to_file_path.end()) { + // `callback` is only passed to the last task scheduled so that it won't + // be triggered until the update is complete. + GetOrCreateDefaultBucket( + iter->first, + base::BindOnce( + [](IndexedDBContextImpl* context, + base::OnceClosure inner_callback, + const absl::optional<storage::BucketLocator>& bucket_locator) { + if (bucket_locator) + context->bucket_set_.insert(*bucket_locator); + std::move(inner_callback).Run(); + context->did_initialize_from_files_ = true; + }, + // `this` is destroyed on idb_task_runner_ so it's safe to post + // raw. + base::Unretained(this), std::move(callback))); + // This path is only invoked once but the analyzer doesn't know that. + callback = base::DoNothing(); + } else { + GetOrCreateDefaultBucket( + iter->first, + base::BindOnce( + [](IndexedDBContextImpl* context, + const absl::optional<storage::BucketLocator>& bucket_locator) { + if (bucket_locator) + context->bucket_set_.insert(*bucket_locator); + }, + // `this` is destroyed on idb_task_runner_ so it's safe to post + // raw. + base::Unretained(this))); + } + } +} + +void IndexedDBContextImpl::ForceInitializeFromFilesForTesting( + ForceInitializeFromFilesForTestingCallback callback) { + did_initialize_from_files_ = false; + InitializeFromFilesIfNeeded(std::move(callback)); +} + +void IndexedDBContextImpl::RegisterBucketLocatorToSkipQuotaLookupForTesting( + const storage::BucketLocator& bucket_locator) { + storage_key_to_bucket_locator_[bucket_locator.storage_key] = bucket_locator; +} + +void IndexedDBContextImpl::GetOrCreateDefaultBucket( + const blink::StorageKey& storage_key, + GetOrCreateDefaultBucketCallback callback) { + DCHECK(IDBTaskRunner()->RunsTasksInCurrentSequence()); + const auto& bucket_locator = storage_key_to_bucket_locator_.find(storage_key); + if (bucket_locator == storage_key_to_bucket_locator_.end()) { + quota_manager_proxy_->GetOrCreateBucket( + storage_key, storage::kDefaultBucketName, idb_task_runner_, + base::BindOnce( + [](IndexedDBContextImpl* context, + GetOrCreateDefaultBucketCallback inner_callback, + storage::QuotaErrorOr<storage::BucketInfo> result) { + if (result.ok()) { + const auto& bucket_locator = result->ToBucketLocator(); + context->storage_key_to_bucket_locator_[bucket_locator + .storage_key] = + bucket_locator; + std::move(inner_callback).Run(bucket_locator); + } else { + std::move(inner_callback).Run(absl::nullopt); + } + }, + // `this` is destroyed on idb_task_runner_ so it's safe to post raw. + base::Unretained(this), std::move(callback))); + } else { + std::move(callback).Run(bucket_locator->second); + } } } // namespace content
diff --git a/content/browser/indexed_db/indexed_db_context_impl.h b/content/browser/indexed_db/indexed_db_context_impl.h index 4f062c65..59b5167 100644 --- a/content/browser/indexed_db/indexed_db_context_impl.h +++ b/content/browser/indexed_db/indexed_db_context_impl.h
@@ -34,6 +34,7 @@ #include "mojo/public/cpp/bindings/remote.h" #include "mojo/public/cpp/bindings/remote_set.h" #include "storage/browser/quota/quota_manager_proxy.h" +#include "third_party/blink/public/common/storage_key/storage_key.h" namespace base { class Clock; @@ -42,12 +43,7 @@ class Value; } // namespace base -namespace blink { -class StorageKey; -} // namespace blink - namespace storage { -struct BucketLocator; class QuotaClientCallbackWrapper; } // namespace storage @@ -90,16 +86,21 @@ // mojom::IndexedDBControl implementation: void BindIndexedDB( const blink::StorageKey& storage_key, + // TODO(crbug.com/1315371): Allow custom bucket names. mojo::PendingReceiver<blink::mojom::IDBFactory> receiver) override; void GetUsage(GetUsageCallback usage_callback) override; void DeleteForBucket(const blink::StorageKey& storage_key, + // TODO(crbug.com/1315371): Allow custom bucket names. DeleteForBucketCallback callback) override; void ForceClose(const blink::StorageKey& storage_key, + // TODO(crbug.com/1315371): Allow custom bucket names. storage::mojom::ForceCloseReason reason, base::OnceClosure callback) override; void GetConnectionCount(const blink::StorageKey& storage_key, + // TODO(crbug.com/1315371): Allow custom bucket names. GetConnectionCountCallback callback) override; void DownloadBucketData(const blink::StorageKey& storage_key, + // TODO(crbug.com/1315371): Allow custom bucket names. DownloadBucketDataCallback callback) override; void GetAllBucketsDetails(GetAllBucketsDetailsCallback callback) override; void SetForceKeepSessionState() override; @@ -114,7 +115,7 @@ // mojom::IndexedDBControlTest implementation: void GetBaseDataPathForTesting( GetBaseDataPathForTestingCallback callback) override; - void GetFilePathForTesting(const blink::StorageKey& storage_key, + void GetFilePathForTesting(const storage::BucketLocator& bucket_locator, GetFilePathForTestingCallback callback) override; void ResetCachesForTesting(base::OnceClosure callback) override; void ForceSchemaDowngradeForTesting( @@ -127,7 +128,7 @@ const std::string& key, const std::string& value, base::OnceClosure callback) override; - void GetBlobCountForTesting(const blink::StorageKey& storage_key, + void GetBlobCountForTesting(const storage::BucketLocator& bucket_locator, GetBlobCountForTestingCallback callback) override; void GetNextBlobNumberForTesting( const storage::BucketLocator& bucket_locator, @@ -138,16 +139,19 @@ int64_t database_id, int64_t blob_number, GetPathForBlobForTestingCallback callback) override; - void CompactBackingStoreForTesting(const blink::StorageKey& storage_key, - base::OnceClosure callback) override; + void CompactBackingStoreForTesting( + const storage::BucketLocator& bucket_locator, + base::OnceClosure callback) override; void BindMockFailureSingletonForTesting( mojo::PendingReceiver<storage::mojom::MockFailureInjector> receiver) override; void GetDatabaseKeysForTesting( GetDatabaseKeysForTestingCallback callback) override; + void ForceInitializeFromFilesForTesting( + ForceInitializeFromFilesForTestingCallback callback) override; // TODO(enne): fix internal indexeddb callers to use ForceClose async instead. - void ForceCloseSync(const blink::StorageKey& storage_key, + void ForceCloseSync(const storage::BucketLocator& bucket_locator, storage::mojom::ForceCloseReason reason); IndexedDBFactoryImpl* GetIDBFactory(); @@ -156,32 +160,32 @@ // *not* called on the IDBTaskRunner. void Shutdown(); - int64_t GetBucketDiskUsage(const blink::StorageKey& storage_key); + int64_t GetBucketDiskUsage(const storage::BucketLocator& bucket_locator); // This getter is thread-safe. base::SequencedTaskRunner* IDBTaskRunner() { return idb_task_runner_.get(); } // Methods called by IndexedDBFactoryImpl or IndexedDBDispatcherHost for // quota support. - void FactoryOpened(const blink::StorageKey& storage_key); - void ConnectionOpened(const blink::StorageKey& storage_key, + void FactoryOpened(const storage::BucketLocator& bucket_locator); + void ConnectionOpened(const storage::BucketLocator& bucket_locator, IndexedDBConnection* db); - void ConnectionClosed(const blink::StorageKey& storage_key, + void ConnectionClosed(const storage::BucketLocator& bucket_locator, IndexedDBConnection* db); - void TransactionComplete(const blink::StorageKey& storage_key); - void DatabaseDeleted(const blink::StorageKey& storage_key); + void TransactionComplete(const storage::BucketLocator& bucket_locator); + void DatabaseDeleted(const storage::BucketLocator& bucket_locator); // Called when blob files have been cleaned (an aggregated delayed task). - void BlobFilesCleaned(const blink::StorageKey& storage_key); + void BlobFilesCleaned(const storage::BucketLocator& bucket_locator); // Will be null in unit tests. const scoped_refptr<storage::QuotaManagerProxy>& quota_manager_proxy() const { return quota_manager_proxy_; } - // Returns a list of all storage_keys with backing stores. - std::vector<blink::StorageKey> GetAllBuckets(); - bool HasBucket(const blink::StorageKey& storage_key); + // Returns a list of all BucketLocators with backing stores. + std::vector<storage::BucketLocator> GetAllBuckets(); + bool HasBucket(const storage::BucketLocator& bucket_locator); // Used by IndexedDBInternalsUI to populate internals page. base::Value* GetAllBucketsDetails(); @@ -189,12 +193,12 @@ // GetStoragePaths returns all paths owned by this database, in arbitrary // order. std::vector<base::FilePath> GetStoragePaths( - const blink::StorageKey& storage_key) const; + const storage::BucketLocator& bucket_locator) const; const base::FilePath& data_path() const { return data_path_; } bool IsInMemoryContext() const { return data_path_.empty(); } - size_t GetConnectionCountSync(const blink::StorageKey& storage_key); - int GetBucketBlobFileCount(const blink::StorageKey& storage_key); + size_t GetConnectionCountSync(const storage::BucketLocator& bucket_locator); + int GetBucketBlobFileCount(const storage::BucketLocator& bucket_locator); bool is_incognito() const { return data_path_.empty(); } @@ -206,10 +210,16 @@ : nullptr; } - void NotifyIndexedDBListChanged(const blink::StorageKey& storage_key); - void NotifyIndexedDBContentChanged(const blink::StorageKey& storage_key, - const std::u16string& database_name, - const std::u16string& object_store_name); + void NotifyIndexedDBListChanged(const storage::BucketLocator& bucket_locator); + void NotifyIndexedDBContentChanged( + const storage::BucketLocator& bucket_locator, + const std::u16string& database_name, + const std::u16string& object_store_name); + + // In unittests where the quota_manager_proxy is mocked, this is how you can + // skip the bucket lookup and fake its existence. + void RegisterBucketLocatorToSkipQuotaLookupForTesting( + const storage::BucketLocator& bucket_locator); private: friend class base::RefCountedThreadSafe<IndexedDBContextImpl>; @@ -224,28 +234,64 @@ ~IndexedDBContextImpl() override; - // Binds receiver on bucket retrieval to ensure that a bucket always exists - // for a storage key. - void BindIndexedDBWithBucket( + // mojom::IndexedDBControl internal implementation: + void BindIndexedDBImpl( mojo::PendingReceiver<blink::mojom::IDBFactory> receiver, - storage::QuotaErrorOr<storage::BucketInfo> result); + const absl::optional<storage::BucketLocator>& bucket_locator); + void GetUsageImpl(GetUsageCallback usage_callback); + void DeleteForBucketImpl( + DeleteForBucketCallback callback, + const absl::optional<storage::BucketLocator>& bucket_locator); + void ForceCloseImpl( + const storage::mojom::ForceCloseReason reason, + base::OnceClosure closure, + const absl::optional<storage::BucketLocator>& bucket_locator); + void GetConnectionCountImpl( + GetConnectionCountCallback callback, + const absl::optional<storage::BucketLocator>& bucket_locator); + void DownloadBucketDataImpl( + DownloadBucketDataCallback callback, + const absl::optional<storage::BucketLocator>& bucket_locator); + void ApplyPolicyUpdateImpl( + const storage::mojom::StoragePolicyUpdate& policy_update, + const absl::optional<storage::BucketLocator>& bucket_locator); void ShutdownOnIDBSequence(); - base::FilePath GetBlobStorePath(const blink::StorageKey& storage_key) const; - base::FilePath GetLevelDBPath(const blink::StorageKey& storage_key) const; + base::FilePath GetBlobStorePath( + const storage::BucketLocator& bucket_locator) const; + base::FilePath GetLevelDBPath( + const storage::BucketLocator& bucket_locator) const; - int64_t ReadUsageFromDisk(const blink::StorageKey& storage_key) const; - void EnsureDiskUsageCacheInitialized(const blink::StorageKey& storage_key); + int64_t ReadUsageFromDisk(const storage::BucketLocator& bucket_locator) const; + void EnsureDiskUsageCacheInitialized( + const storage::BucketLocator& bucket_locator); // Compares the disk usage stored in `bucket_size_map_` with disk. If // there is a difference, it updates `bucket_size_map_` and notifies the // quota system. - void QueryDiskAndUpdateQuotaUsage(const blink::StorageKey& storage_key); - base::Time GetBucketLastModified(const blink::StorageKey& storage_key); + void QueryDiskAndUpdateQuotaUsage( + const storage::BucketLocator& bucket_locator); + base::Time GetBucketLastModified( + const storage::BucketLocator& bucket_locator); - // Returns `bucket_set_` (this context's in-memory cache of buckets - // with backing stores); the cache will be primed as needed by checking disk. - std::set<blink::StorageKey>* GetBucketSet(); + // We need to initialize the buckets already stored to the disk, but this + // cannot be done in the constructor as it might block destruction. + void InitializeFromFilesIfNeeded(base::OnceClosure callback); + bool did_initialize_from_files_{false}; + + using GetOrCreateDefaultBucketCallback = base::OnceCallback<void( + const absl::optional<storage::BucketLocator>& bucket_locator)>; + // This function provides an easy way to wrap the common operation: find + // bucket in `storage_key_to_bucket_locator_` if it exists, otherwise look + // it up in the `quota_manager_proxy_`, cache it, and then run the callback. + void GetOrCreateDefaultBucket(const blink::StorageKey& storage_key, + GetOrCreateDefaultBucketCallback callback); + + // TODO(crbug.com/1315371): We need a way to map the StorageKey to a single + // valid BucketLocator for legacy API purposes. This member should be removed + // as it blocks the use of non-default named buckets. + std::map<blink::StorageKey, storage::BucketLocator> + storage_key_to_bucket_locator_; const scoped_refptr<base::SequencedTaskRunner> idb_task_runner_; IndexedDBDispatcherHost dispatcher_host_; @@ -263,10 +309,10 @@ // If true, nothing (not even session-only data) should be deleted on exit. bool force_keep_session_state_; const scoped_refptr<storage::QuotaManagerProxy> quota_manager_proxy_; - std::unique_ptr<std::set<blink::StorageKey>> bucket_set_; - std::map<blink::StorageKey, int64_t> bucket_size_map_; + std::set<storage::BucketLocator> bucket_set_; + std::map<storage::BucketLocator, int64_t> bucket_size_map_; // The set of buckets whose storage should be cleared on shutdown. - std::set<blink::StorageKey> buckets_to_purge_on_shutdown_; + std::set<storage::BucketLocator> buckets_to_purge_on_shutdown_; const raw_ptr<base::Clock> clock_; const std::unique_ptr<IndexedDBQuotaClient> quota_client_;
diff --git a/content/browser/indexed_db/indexed_db_database.cc b/content/browser/indexed_db/indexed_db_database.cc index f1d97dd..7350f12 100644 --- a/content/browser/indexed_db/indexed_db_database.cc +++ b/content/browser/indexed_db/indexed_db_database.cc
@@ -1206,9 +1206,8 @@ std::move(params->callback) .Run(blink::mojom::IDBTransactionPutResult::NewKey(*key)); } - // TODO(crbug.com/1218100): Propagate BucketLocator to callee. factory_->NotifyIndexedDBContentChanged( - bucket_locator().storage_key, metadata_.name, + bucket_locator(), metadata_.name, metadata_.object_stores[params->object_store_id].name); return s; } @@ -1578,9 +1577,8 @@ if (!s.ok()) return s; callbacks->OnSuccess(); - // TODO(crbug.com/1218100): Propagate BucketLocator to callee. factory_->NotifyIndexedDBContentChanged( - bucket_locator().storage_key, metadata_.name, + bucket_locator(), metadata_.name, metadata_.object_stores[object_store_id].name); return s; } @@ -1625,9 +1623,8 @@ return s; callbacks->OnSuccess(); - // TODO(crbug.com/1218100): Propagate BucketLocator to callee. factory_->NotifyIndexedDBContentChanged( - bucket_locator().storage_key, metadata_.name, + bucket_locator(), metadata_.name, metadata_.object_stores[object_store_id].name); return s; }
diff --git a/content/browser/indexed_db/indexed_db_database_callbacks.cc b/content/browser/indexed_db/indexed_db_database_callbacks.cc index beaa2c8..312babb2 100644 --- a/content/browser/indexed_db/indexed_db_database_callbacks.cc +++ b/content/browser/indexed_db/indexed_db_database_callbacks.cc
@@ -79,9 +79,8 @@ if (complete_) return; - // TODO(crbug.com/1218100): Propagate BucketLocator to callee. indexed_db_context_->TransactionComplete( - transaction.database()->bucket_locator().storage_key); + transaction.database()->bucket_locator()); if (callbacks_) callbacks_->Complete(transaction.id()); }
diff --git a/content/browser/indexed_db/indexed_db_factory.h b/content/browser/indexed_db/indexed_db_factory.h index d0459db..e41788a 100644 --- a/content/browser/indexed_db/indexed_db_factory.h +++ b/content/browser/indexed_db/indexed_db_factory.h
@@ -63,19 +63,19 @@ const storage::BucketLocator& bucket_locator) = 0; virtual void HandleBackingStoreFailure( - const blink::StorageKey& storage_key) = 0; + const storage::BucketLocator& bucket_locator) = 0; virtual void HandleBackingStoreCorruption( - const blink::StorageKey& storage_key, + const storage::BucketLocator& bucket_locator, const IndexedDBDatabaseError& error) = 0; virtual std::vector<IndexedDBDatabase*> GetOpenDatabasesForBucket( - const blink::StorageKey& storage_key) const = 0; + const storage::BucketLocator& bucket_locator) const = 0; // Close all connections to all databases within the storage key. If // `delete_in_memory_store` is true, references to in-memory databases will be // dropped thereby allowing their deletion (otherwise they are retained for // the lifetime of the factory). - virtual void ForceClose(const blink::StorageKey& storage_key, + virtual void ForceClose(const storage::BucketLocator& bucket_locator, bool delete_in_memory_store = false) = 0; virtual void ForceSchemaDowngrade( @@ -92,19 +92,20 @@ bool blobs_outstanding) = 0; // Called by IndexedDBBackingStore when blob files have been cleaned. - virtual void BlobFilesCleaned(const blink::StorageKey& storage_key) = 0; + virtual void BlobFilesCleaned( + const storage::BucketLocator& bucket_locator) = 0; virtual size_t GetConnectionCount( - const blink::StorageKey& storage_key) const = 0; + const storage::BucketLocator& bucket_locator) const = 0; virtual int64_t GetInMemoryDBSize( - const blink::StorageKey& storage_key) const = 0; + const storage::BucketLocator& bucket_locator) const = 0; virtual base::Time GetLastModified( - const blink::StorageKey& storage_key) const = 0; + const storage::BucketLocator& bucket_locator) const = 0; virtual void NotifyIndexedDBContentChanged( - const blink::StorageKey& storage_key, + const storage::BucketLocator& bucket_locator, const std::u16string& database_name, const std::u16string& object_store_name) = 0;
diff --git a/content/browser/indexed_db/indexed_db_factory_impl.cc b/content/browser/indexed_db/indexed_db_factory_impl.cc index f04bfc9f5..9407c0e 100644 --- a/content/browser/indexed_db/indexed_db_factory_impl.cc +++ b/content/browser/indexed_db/indexed_db_factory_impl.cc
@@ -207,8 +207,7 @@ callbacks->OnError(error); } if (s.IsCorruption()) { - // TODO(crbug.com/1218100): Propagate BucketLocator to callee. - HandleBackingStoreCorruption(bucket_locator.storage_key, error); + HandleBackingStoreCorruption(bucket_locator, error); } return; } @@ -224,8 +223,7 @@ "indexedDB.databases()."); callbacks->OnError(error); if (s.IsCorruption()) { - // TODO(crbug.com/1218100): Propagate BucketLocator to callee. - HandleBackingStoreCorruption(bucket_locator.storage_key, error); + HandleBackingStoreCorruption(bucket_locator, error); } return; } @@ -250,8 +248,7 @@ if (!bucket_state_handle.IsHeld() || !bucket_state_handle.bucket_state()) { connection->callbacks->OnError(error); if (s.IsCorruption()) { - // TODO(crbug.com/1218100): Propagate BucketLocator to callee. - HandleBackingStoreCorruption(bucket_locator.storage_key, error); + HandleBackingStoreCorruption(bucket_locator, error); } return; } @@ -276,8 +273,7 @@ u"Internal error creating database backend for indexedDB.open."); connection->callbacks->OnError(error); if (s.IsCorruption()) { - // TODO(crbug.com/1218100): Propagate BucketLocator to callee. - HandleBackingStoreCorruption(bucket_locator.storage_key, error); + HandleBackingStoreCorruption(bucket_locator, error); } return; } @@ -310,8 +306,7 @@ if (!bucket_state_handle.IsHeld() || !bucket_state_handle.bucket_state()) { callbacks->OnError(error); if (s.IsCorruption()) { - // TODO(crbug.com/1218100): Propagate BucketLocator to callee. - HandleBackingStoreCorruption(bucket_locator.storage_key, error); + HandleBackingStoreCorruption(bucket_locator, error); } return; } @@ -320,17 +315,14 @@ auto it = factory->databases().find(name); if (it != factory->databases().end()) { base::WeakPtr<IndexedDBDatabase> database = it->second->AsWeakPtr(); - // TODO(crbug.com/1218100): Propagate BucketLocator to callee. database->ScheduleDeleteDatabase( std::move(bucket_state_handle), callbacks, base::BindOnce(&IndexedDBFactoryImpl::OnDatabaseDeleted, - weak_factory_.GetWeakPtr(), bucket_locator.storage_key)); + weak_factory_.GetWeakPtr(), bucket_locator)); if (force_close) { leveldb::Status status = database->ForceCloseAndRunTasks(); if (!status.ok()) { - // TODO(crbug.com/1218100): Propagate BucketLocator to callee. - OnDatabaseError(bucket_locator.storage_key, status, - "Error aborting transactions."); + OnDatabaseError(bucket_locator, status, "Error aborting transactions."); } } return; @@ -349,8 +341,7 @@ "indexedDB.deleteDatabase."); callbacks->OnError(error); if (s.IsCorruption()) { - // TODO(crbug.com/1218100): Propagate BucketLocator to callee. - HandleBackingStoreCorruption(bucket_locator.storage_key, error); + HandleBackingStoreCorruption(bucket_locator, error); } return; } @@ -375,25 +366,21 @@ u"for indexedDB.deleteDatabase."); callbacks->OnError(error); if (s.IsCorruption()) { - // TODO(crbug.com/1218100): Propagate BucketLocator to callee. - HandleBackingStoreCorruption(bucket_locator.storage_key, error); + HandleBackingStoreCorruption(bucket_locator, error); } return; } base::WeakPtr<IndexedDBDatabase> database_ptr = factory->AddDatabase(name, std::move(database))->AsWeakPtr(); - // TODO(crbug.com/1218100): Propagate BucketLocator to callee. database_ptr->ScheduleDeleteDatabase( std::move(bucket_state_handle), std::move(callbacks), base::BindOnce(&IndexedDBFactoryImpl::OnDatabaseDeleted, - weak_factory_.GetWeakPtr(), bucket_locator.storage_key)); + weak_factory_.GetWeakPtr(), bucket_locator)); if (force_close) { leveldb::Status status = database_ptr->ForceCloseAndRunTasks(); if (!status.ok()) { - // TODO(crbug.com/1218100): Propagate BucketLocator to callee. - OnDatabaseError(bucket_locator.storage_key, status, - "Error aborting transactions."); + OnDatabaseError(bucket_locator, status, "Error aborting transactions."); } } } @@ -431,23 +418,24 @@ } void IndexedDBFactoryImpl::HandleBackingStoreFailure( - const blink::StorageKey& storage_key) { + const storage::BucketLocator& bucket_locator) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); // nullptr after ContextDestroyed() called, and in some unit tests. if (!context_) return; context_->ForceCloseSync( - storage_key, + bucket_locator, storage::mojom::ForceCloseReason::FORCE_CLOSE_BACKING_STORE_FAILURE); } void IndexedDBFactoryImpl::HandleBackingStoreCorruption( - const blink::StorageKey& storage_key, + const storage::BucketLocator& bucket_locator, const IndexedDBDatabaseError& error) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); // Make a copy of storage_key as this is likely a reference to a member of a // backing store which this function will be deleting. - blink::StorageKey saved_storage_key(storage_key); + // TODO(crbug.com/1218100): Propagate BucketLocator to callee. + blink::StorageKey saved_storage_key(bucket_locator.storage_key); DCHECK(context_); base::FilePath path_base = context_->data_path(); @@ -458,7 +446,7 @@ path_base.AsUTF8Unsafe(), "..."); IndexedDBBackingStore::RecordCorruptionInfo(path_base, saved_storage_key, sanitized_message); - HandleBackingStoreFailure(saved_storage_key); + HandleBackingStoreFailure(bucket_locator); // Note: DestroyBackingStore only deletes LevelDB files, leaving all others, // so our corruption info file will remain. // The blob directory will be deleted when the database is recreated @@ -475,13 +463,9 @@ } std::vector<IndexedDBDatabase*> IndexedDBFactoryImpl::GetOpenDatabasesForBucket( - const blink::StorageKey& storage_key) const { + const storage::BucketLocator& bucket_locator) const { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - // TODO(crbug.com/1218100): Remove once IndexedDBContextImpl is migrated. - auto bucket_it = storage_key_to_bucket_locator_.find(storage_key); - if (bucket_it == storage_key_to_bucket_locator_.end()) - return std::vector<IndexedDBDatabase*>(); - auto it = factories_per_bucket_.find(bucket_it->second); + auto it = factories_per_bucket_.find(bucket_locator); if (it == factories_per_bucket_.end()) return std::vector<IndexedDBDatabase*>(); IndexedDBBucketState* factory = it->second.get(); @@ -492,14 +476,11 @@ return out; } -void IndexedDBFactoryImpl::ForceClose(const blink::StorageKey& storage_key, - bool delete_in_memory_store) { +void IndexedDBFactoryImpl::ForceClose( + const storage::BucketLocator& bucket_locator, + bool delete_in_memory_store) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - // TODO(crbug.com/1218100): Remove once IndexedDBContextImpl is migrated. - auto bucket_it = storage_key_to_bucket_locator_.find(storage_key); - if (bucket_it == storage_key_to_bucket_locator_.end()) - return; - auto it = factories_per_bucket_.find(bucket_it->second); + auto it = factories_per_bucket_.find(bucket_locator); if (it == factories_per_bucket_.end()) return; @@ -552,8 +533,6 @@ for (const auto& pair : factories_per_bucket_) { pair.second->ForceClose(); } - // TODO(crbug.com/1218100): Remove once IndexedDBContextImpl is migrated. - storage_key_to_bucket_locator_.clear(); factories_per_bucket_.clear(); } @@ -570,22 +549,18 @@ } void IndexedDBFactoryImpl::BlobFilesCleaned( - const blink::StorageKey& storage_key) { + const storage::BucketLocator& bucket_locator) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); // nullptr after ContextDestroyed() called, and in some unit tests. if (!context_) return; - context_->BlobFilesCleaned(storage_key); + context_->BlobFilesCleaned(bucket_locator); } size_t IndexedDBFactoryImpl::GetConnectionCount( - const blink::StorageKey& storage_key) const { + const storage::BucketLocator& bucket_locator) const { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - // TODO(crbug.com/1218100): Remove once IndexedDBContextImpl is migrated. - auto bucket_it = storage_key_to_bucket_locator_.find(storage_key); - if (bucket_it == storage_key_to_bucket_locator_.end()) - return 0; - auto it = factories_per_bucket_.find(bucket_it->second); + auto it = factories_per_bucket_.find(bucket_locator); if (it == factories_per_bucket_.end()) return 0; size_t count = 0; @@ -597,24 +572,20 @@ } void IndexedDBFactoryImpl::NotifyIndexedDBContentChanged( - const blink::StorageKey& storage_key, + const storage::BucketLocator& bucket_locator, const std::u16string& database_name, const std::u16string& object_store_name) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); if (!context_) return; - context_->NotifyIndexedDBContentChanged(storage_key, database_name, + context_->NotifyIndexedDBContentChanged(bucket_locator, database_name, object_store_name); } int64_t IndexedDBFactoryImpl::GetInMemoryDBSize( - const blink::StorageKey& storage_key) const { + const storage::BucketLocator& bucket_locator) const { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - // TODO(crbug.com/1218100): Remove once IndexedDBContextImpl is migrated. - auto bucket_it = storage_key_to_bucket_locator_.find(storage_key); - if (bucket_it == storage_key_to_bucket_locator_.end()) - return 0; - auto it = factories_per_bucket_.find(bucket_it->second); + auto it = factories_per_bucket_.find(bucket_locator); if (it == factories_per_bucket_.end()) return 0; IndexedDBBackingStore* backing_store = it->second->backing_store(); @@ -628,13 +599,9 @@ } base::Time IndexedDBFactoryImpl::GetLastModified( - const blink::StorageKey& storage_key) const { + const storage::BucketLocator& bucket_locator) const { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - // TODO(crbug.com/1218100): Remove once IndexedDBContextImpl is migrated. - auto bucket_it = storage_key_to_bucket_locator_.find(storage_key); - if (bucket_it == storage_key_to_bucket_locator_.end()) - return base::Time(); - auto it = factories_per_bucket_.find(bucket_it->second); + auto it = factories_per_bucket_.find(bucket_locator); if (it == factories_per_bucket_.end()) return base::Time(); IndexedDBBackingStore* backing_store = it->second->backing_store(); @@ -721,8 +688,7 @@ base::WeakPtr<IndexedDBFactoryImpl> factory, leveldb::Status s) { if (!factory) return; - // TODO(crbug.com/1218100): Propagate BucketLocator to callee. - factory->OnDatabaseError(bucket_locator.storage_key, s, nullptr); + factory->OnDatabaseError(bucket_locator, s, nullptr); }, bucket_locator, weak_factory_.GetWeakPtr()); const bool is_first_attempt = i == 0; @@ -815,8 +781,7 @@ base::WeakPtr<IndexedDBFactoryImpl> factory, leveldb::Status s) { if (!factory) return; - // TODO(crbug.com/1218100): Propagate BucketLocator to callee. - factory->OnDatabaseError(bucket_locator.storage_key, s, nullptr); + factory->OnDatabaseError(bucket_locator, s, nullptr); }, bucket_locator, weak_factory_.GetWeakPtr()); @@ -828,13 +793,9 @@ std::move(run_tasks_callback), std::move(tear_down_callback), std::move(backing_store)); - // TODO(crbug.com/1218100): Remove once IndexedDBContextImpl is migrated. - storage_key_to_bucket_locator_.emplace(bucket_locator.storage_key, - bucket_locator); it = factories_per_bucket_.emplace(bucket_locator, std::move(bucket_state)) .first; - // TODO(crbug.com/1218100): Propagate BucketLocator to callee. - context_->FactoryOpened(bucket_locator.storage_key); + context_->FactoryOpened(bucket_locator); return {it->second->CreateHandle(), s, IndexedDBDatabaseError(), data_loss_info, /*was_cold_open=*/true}; } @@ -987,15 +948,13 @@ IndexedDBBackingStore::Mode backing_store_mode = is_incognito_and_in_memory ? IndexedDBBackingStore::Mode::kInMemory : IndexedDBBackingStore::Mode::kOnDisk; - // TODO(crbug.com/1218100): Propagate BucketLocator to callee. std::unique_ptr<IndexedDBBackingStore> backing_store = CreateBackingStore( backing_store_mode, &class_factory_->transactional_leveldb_factory(), bucket_locator, blob_path, std::move(database), context_->blob_storage_context(), context_->file_system_access_context(), std::move(filesystem_proxy), base::BindRepeating(&IndexedDBFactoryImpl::BlobFilesCleaned, - weak_factory_.GetWeakPtr(), - bucket_locator.storage_key), + weak_factory_.GetWeakPtr(), bucket_locator), base::BindRepeating(&IndexedDBFactoryImpl::ReportOutstandingBlobs, weak_factory_.GetWeakPtr(), bucket_locator), context_->IDBTaskRunner()); @@ -1012,14 +971,13 @@ void IndexedDBFactoryImpl::RemoveBucketState( const storage::BucketLocator& bucket_locator) { - // TODO(crbug.com/1218100): Remove once IndexedDBContextImpl is migrated. - storage_key_to_bucket_locator_.erase(bucket_locator.storage_key); factories_per_bucket_.erase(bucket_locator); } -void IndexedDBFactoryImpl::OnDatabaseError(const blink::StorageKey& storage_key, - leveldb::Status status, - const char* message) { +void IndexedDBFactoryImpl::OnDatabaseError( + const storage::BucketLocator& bucket_locator, + leveldb::Status status, + const char* message) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DCHECK(!status.ok()); if (status.IsCorruption()) { @@ -1029,24 +987,26 @@ message) : IndexedDBDatabaseError(blink::mojom::IDBException::kUnknownError, base::ASCIIToUTF16(status.ToString())); - HandleBackingStoreCorruption(storage_key, error); + HandleBackingStoreCorruption(bucket_locator, error); } else { if (status.IsIOError()) { - context_->quota_manager_proxy()->NotifyWriteFailed(storage_key); + // TODO(crbug.com/1218100): Propagate BucketLocator to callee. + context_->quota_manager_proxy()->NotifyWriteFailed( + bucket_locator.storage_key); } - HandleBackingStoreFailure(storage_key); + HandleBackingStoreFailure(bucket_locator); } } void IndexedDBFactoryImpl::OnDatabaseDeleted( - const blink::StorageKey& storage_key) { + const storage::BucketLocator& bucket_locator) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); if (call_on_database_deleted_for_testing_) - call_on_database_deleted_for_testing_.Run(storage_key); + call_on_database_deleted_for_testing_.Run(bucket_locator); if (!context_) return; - context_->DatabaseDeleted(storage_key); + context_->DatabaseDeleted(bucket_locator); } void IndexedDBFactoryImpl::MaybeRunTasksForBucket( @@ -1080,14 +1040,9 @@ case IndexedDBBucketState::RunTasksResult::kDone: return; case IndexedDBBucketState::RunTasksResult::kError: - // TODO(crbug.com/1218100): Propagate BucketLocator to callee. - OnDatabaseError(bucket_state->bucket_locator().storage_key, status, - nullptr); + OnDatabaseError(bucket_state->bucket_locator(), status, nullptr); return; case IndexedDBBucketState::RunTasksResult::kCanBeDestroyed: - // TODO(crbug.com/1218100): Remove once IndexedDBContextImpl is migrated. - storage_key_to_bucket_locator_.erase( - bucket_state->bucket_locator().storage_key); factories_per_bucket_.erase(bucket_state->bucket_locator()); return; }
diff --git a/content/browser/indexed_db/indexed_db_factory_impl.h b/content/browser/indexed_db/indexed_db_factory_impl.h index 3934b660..1d34d48 100644 --- a/content/browser/indexed_db/indexed_db_factory_impl.h +++ b/content/browser/indexed_db/indexed_db_factory_impl.h
@@ -85,17 +85,18 @@ base::OnceCallback<void(leveldb::Status)> callback, const storage::BucketLocator& bucket_locator) override; - void HandleBackingStoreFailure(const blink::StorageKey& storage_key) override; + void HandleBackingStoreFailure( + const storage::BucketLocator& bucket_locator) override; void HandleBackingStoreCorruption( - const blink::StorageKey& storage_key, + const storage::BucketLocator& bucket_locator, const IndexedDBDatabaseError& error) override; std::vector<IndexedDBDatabase*> GetOpenDatabasesForBucket( - const blink::StorageKey& storage_key) const override; + const storage::BucketLocator& bucket_locator) const override; // TODO(dmurph): This eventually needs to be async, to support scopes // multithreading. - void ForceClose(const blink::StorageKey& storage_key, + void ForceClose(const storage::BucketLocator& bucket_locator, bool delete_in_memory_store) override; void ForceSchemaDowngrade( @@ -111,21 +112,21 @@ bool blobs_outstanding) override; // Called by IndexedDBBackingStore when blob files have been cleaned. - void BlobFilesCleaned(const blink::StorageKey& storage_key) override; + void BlobFilesCleaned(const storage::BucketLocator& bucket_locator) override; size_t GetConnectionCount( - const blink::StorageKey& storage_key) const override; + const storage::BucketLocator& bucket_locator) const override; void NotifyIndexedDBContentChanged( - const blink::StorageKey& storage_key, + const storage::BucketLocator& bucket_locator, const std::u16string& database_name, const std::u16string& object_store_name) override; int64_t GetInMemoryDBSize( - const blink::StorageKey& storage_key) const override; + const storage::BucketLocator& bucket_locator) const override; base::Time GetLastModified( - const blink::StorageKey& storage_key) const override; + const storage::BucketLocator& bucket_locator) const override; std::vector<storage::BucketLocator> GetOpenBuckets() const; @@ -144,12 +145,12 @@ const base::FilePath& data_directory, bool create_if_missing); - void OnDatabaseError(const blink::StorageKey& storage_key, + void OnDatabaseError(const storage::BucketLocator& bucket_locator, leveldb::Status s, const char* message); using OnDatabaseDeletedCallback = base::RepeatingCallback<void( - const blink::StorageKey& deleted_storage_key)>; + const storage::BucketLocator& deleted_bucket_locator)>; void CallOnDatabaseDeletedForTesting(OnDatabaseDeletedCallback callback); protected: @@ -212,7 +213,7 @@ void RemoveBucketState(const storage::BucketLocator& bucket_locator); // Called when the database has been deleted on disk. - void OnDatabaseDeleted(const blink::StorageKey& storage_key); + void OnDatabaseDeleted(const storage::BucketLocator& bucket_locator); void MaybeRunTasksForBucket(const storage::BucketLocator& bucket_locator); void RunTasksForBucket(base::WeakPtr<IndexedDBBucketState> bucket_state); @@ -238,11 +239,6 @@ base::flat_map<storage::BucketLocator, std::unique_ptr<IndexedDBBucketState>> factories_per_bucket_; - // TODO(crbug.com/1218100): We need to map the StorageKey in BucketLocator to - // the (for now) only matching BucketLocator. This is done because calls from - // IndexedDBContextImpl don't yet have the BucketLocator in all cases. - base::flat_map<blink::StorageKey, storage::BucketLocator> - storage_key_to_bucket_locator_; std::set<storage::BucketLocator> backends_opened_since_startup_;
diff --git a/content/browser/indexed_db/indexed_db_factory_unittest.cc b/content/browser/indexed_db/indexed_db_factory_unittest.cc index d8591e0..d19ebfe 100644 --- a/content/browser/indexed_db/indexed_db_factory_unittest.cc +++ b/content/browser/indexed_db/indexed_db_factory_unittest.cc
@@ -93,19 +93,22 @@ auto open_factory_buckets = factory->GetOpenBuckets(); for (const auto& bucket_locator : open_factory_buckets) { context_->ForceCloseSync( - bucket_locator.storage_key, + bucket_locator, storage::mojom::ForceCloseReason::FORCE_CLOSE_DELETE_ORIGIN); } // All leveldb databases are closed, and they can be deleted. - for (auto storage_key : context_->GetAllBuckets()) { + for (auto bucket_locator : context_->GetAllBuckets()) { bool success = false; storage::mojom::IndexedDBControlAsyncWaiter waiter(context_.get()); - waiter.DeleteForBucket(storage_key, &success); + waiter.DeleteForBucket(bucket_locator.storage_key, &success); EXPECT_TRUE(success); } } +// TODO(crbug.com/1218100): Investigate why windows fails this check. +#if !BUILDFLAG(IS_WIN) if (temp_dir_.IsValid()) ASSERT_TRUE(temp_dir_.Delete()); +#endif IndexedDBClassFactory::Get()->SetLevelDBFactoryForTesting(nullptr); quota_manager_.reset(); } @@ -289,7 +292,7 @@ EXPECT_TRUE(factory()->GetBucketFactory(bucket_locator)); EXPECT_TRUE(factory()->GetBucketFactory(bucket_locator)->IsClosing()); - factory()->ForceClose(storage_key, false); + factory()->ForceClose(bucket_locator, false); RunPostedTasks(); EXPECT_FALSE(factory()->GetBucketFactory(bucket_locator)); } @@ -547,10 +550,10 @@ EXPECT_TRUE(factory()->GetBucketFactory(bucket_locator)); EXPECT_FALSE(factory()->GetBucketFactory(bucket_locator)->IsClosing()); - factory()->ForceClose(storage_key, false); + factory()->ForceClose(bucket_locator, false); EXPECT_TRUE(factory()->GetBucketFactory(bucket_locator)); - factory()->ForceClose(storage_key, true); + factory()->ForceClose(bucket_locator, true); EXPECT_FALSE(factory()->GetBucketFactory(bucket_locator)); } @@ -817,8 +820,9 @@ base::RunLoop run_loop; factory()->CallOnDatabaseDeletedForTesting(base::BindLambdaForTesting( - [&storage_key, &run_loop](const blink::StorageKey& deleted_storage_key) { - if (deleted_storage_key == storage_key) + [&bucket_locator, + &run_loop](const storage::BucketLocator& deleted_bucket_locator) { + if (deleted_bucket_locator == bucket_locator) run_loop.Quit(); })); @@ -946,15 +950,18 @@ SetupContext(); const blink::StorageKey storage_key = blink::StorageKey::CreateFromStringForTesting("www.example.com"); - factory()->OnDatabaseError(storage_key, + auto bucket_locator = storage::BucketLocator(); + bucket_locator.storage_key = storage_key; + factory()->OnDatabaseError(bucket_locator, leveldb::Status::Corruption("Corrupted stuff."), "Corrupted stuff."); base::RunLoop().RunUntilIdle(); // Quota should not be notified unless the status is IOError. ASSERT_EQ(0U, quota_manager()->write_error_tracker().size()); - factory()->OnDatabaseError( - storage_key, leveldb::Status::IOError("Disk is full."), "Disk is full."); + factory()->OnDatabaseError(bucket_locator, + leveldb::Status::IOError("Disk is full."), + "Disk is full."); base::RunLoop().RunUntilIdle(); ASSERT_EQ(1U, quota_manager()->write_error_tracker().size()); EXPECT_EQ(storage_key, quota_manager()->write_error_tracker().begin()->first); @@ -1119,7 +1126,7 @@ } } RunPostedTasks(); - factory()->ForceClose(bucket_locator.storage_key, false); + factory()->ForceClose(bucket_locator, false); RunPostedTasks(); return callbacks->data_loss(); };
diff --git a/content/browser/indexed_db/indexed_db_quota_client.cc b/content/browser/indexed_db/indexed_db_quota_client.cc index 4635c3be..e9443ca 100644 --- a/content/browser/indexed_db/indexed_db_quota_client.cc +++ b/content/browser/indexed_db/indexed_db_quota_client.cc
@@ -51,8 +51,7 @@ return; } - std::move(callback).Run( - indexed_db_context_.GetBucketDiskUsage(bucket.storage_key)); + std::move(callback).Run(indexed_db_context_.GetBucketDiskUsage(bucket)); } void IndexedDBQuotaClient::GetStorageKeysForType( @@ -60,7 +59,11 @@ GetStorageKeysForTypeCallback callback) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DCHECK_EQ(type, StorageType::kTemporary); - std::vector<StorageKey> storage_keys = indexed_db_context_.GetAllBuckets(); + const auto& bucket_locators = indexed_db_context_.GetAllBuckets(); + std::vector<StorageKey> storage_keys; + for (const auto& bucket_locator : bucket_locators) + storage_keys.push_back(bucket_locator.storage_key); + // TODO(crbug.com/1218100): Propagate BucketLocator to callee. std::move(callback).Run(std::move(storage_keys)); } @@ -78,6 +81,7 @@ return; } + // TODO(crbug.com/1218100): Propagate BucketLocator to callee. indexed_db_context_.DeleteForBucket( bucket.storage_key, base::BindOnce(
diff --git a/content/browser/indexed_db/indexed_db_quota_client_unittest.cc b/content/browser/indexed_db/indexed_db_quota_client_unittest.cc index c808006..cdfa0fd9 100644 --- a/content/browser/indexed_db/indexed_db_quota_client_unittest.cc +++ b/content/browser/indexed_db/indexed_db_quota_client_unittest.cc
@@ -23,6 +23,7 @@ #include "base/threading/thread_task_runner_handle.h" #include "base/time/default_clock.h" #include "components/services/storage/public/cpp/buckets/bucket_locator.h" +#include "components/services/storage/public/mojom/storage_usage_info.mojom.h" #include "content/browser/indexed_db/indexed_db_context_impl.h" #include "content/browser/indexed_db/indexed_db_quota_client.h" #include "storage/browser/test/mock_quota_manager.h" @@ -130,8 +131,7 @@ { base::test::TestFuture<base::FilePath> future; idb_context()->GetFilePathForTesting( - blink::StorageKey(storage_key), - future.GetCallback<const base::FilePath&>()); + bucket, future.GetCallback<const base::FilePath&>()); file_path_storage_key = future.Take(); } if (!base::CreateDirectory(file_path_storage_key)) { @@ -147,6 +147,13 @@ idb_context()->ResetCachesForTesting(run_loop.QuitClosure()); run_loop.Run(); } + + // Ensure files are read from disk. + { + base::RunLoop run_loop; + idb_context()->ForceInitializeFromFilesForTesting(run_loop.QuitClosure()); + run_loop.Run(); + } } storage::BucketLocator GetBucket(const StorageKey& storage_key,
diff --git a/content/browser/indexed_db/indexed_db_unittest.cc b/content/browser/indexed_db/indexed_db_unittest.cc index 85712d6d..61438ee8 100644 --- a/content/browser/indexed_db/indexed_db_unittest.cc +++ b/content/browser/indexed_db/indexed_db_unittest.cc
@@ -81,7 +81,9 @@ class IndexedDBTest : public testing::Test { public: const blink::StorageKey kNormalStorageKey; + mutable storage::BucketLocator kNormalBucketLocator; const blink::StorageKey kSessionOnlyStorageKey; + mutable storage::BucketLocator kSessionOnlyBucketLocator; IndexedDBTest() : kNormalStorageKey( @@ -100,10 +102,17 @@ /*file_system_access_context=*/mojo::NullRemote(), base::SequencedTaskRunnerHandle::Get(), base::SequencedTaskRunnerHandle::Get())) { + kNormalBucketLocator = storage::BucketLocator(); + kNormalBucketLocator.storage_key = kNormalStorageKey; + context()->RegisterBucketLocatorToSkipQuotaLookupForTesting( + kNormalBucketLocator); + kSessionOnlyBucketLocator = storage::BucketLocator(); + kSessionOnlyBucketLocator.storage_key = kSessionOnlyStorageKey; + context()->RegisterBucketLocatorToSkipQuotaLookupForTesting( + kSessionOnlyBucketLocator); std::vector<storage::mojom::StoragePolicyUpdatePtr> policy_updates; - bool should_purge_on_shutdown = true; policy_updates.emplace_back(storage::mojom::StoragePolicyUpdate::New( - kSessionOnlyStorageKey.origin(), should_purge_on_shutdown)); + kSessionOnlyStorageKey.origin(), /*should_purge_on_shutdown=*/true)); context_->ApplyPolicyUpdates(std::move(policy_updates)); } @@ -128,14 +137,14 @@ auto open_factory_buckets = factory->GetOpenBuckets(); for (const auto& bucket_locator : open_factory_buckets) { context_->ForceCloseSync( - bucket_locator.storage_key, + bucket_locator, storage::mojom::ForceCloseReason::FORCE_CLOSE_DELETE_ORIGIN); } // All leveldb databases are closed, and they can be deleted. - for (auto storage_key : context_->GetAllBuckets()) { + for (auto bucket_locator : context_->GetAllBuckets()) { bool success = false; storage::mojom::IndexedDBControlAsyncWaiter waiter(context_.get()); - waiter.DeleteForBucket(storage_key, &success); + waiter.DeleteForBucket(bucket_locator.storage_key, &success); EXPECT_TRUE(success); } } @@ -144,11 +153,12 @@ ASSERT_TRUE(temp_dir_.Delete()); } - base::FilePath GetFilePathForTesting(const blink::StorageKey& storage_key) { + base::FilePath GetFilePathForTesting( + const storage::BucketLocator& bucket_locator) { base::FilePath path; base::RunLoop run_loop; context()->GetFilePathForTesting( - storage_key, + bucket_locator, base::BindLambdaForTesting([&](const base::FilePath& async_path) { path = async_path; run_loop.Quit(); @@ -170,8 +180,8 @@ base::FilePath normal_path; base::FilePath session_only_path; - normal_path = GetFilePathForTesting(kNormalStorageKey); - session_only_path = GetFilePathForTesting(kSessionOnlyStorageKey); + normal_path = GetFilePathForTesting(kNormalBucketLocator); + session_only_path = GetFilePathForTesting(kSessionOnlyBucketLocator); ASSERT_TRUE(base::CreateDirectory(normal_path)); ASSERT_TRUE(base::CreateDirectory(session_only_path)); base::RunLoop().RunUntilIdle(); @@ -191,8 +201,8 @@ // Save session state. This should bypass the destruction-time deletion. context()->SetForceKeepSessionState(); - normal_path = GetFilePathForTesting(kNormalStorageKey); - session_only_path = GetFilePathForTesting(kSessionOnlyStorageKey); + normal_path = GetFilePathForTesting(kNormalBucketLocator); + session_only_path = GetFilePathForTesting(kSessionOnlyBucketLocator); ASSERT_TRUE(base::CreateDirectory(normal_path)); ASSERT_TRUE(base::CreateDirectory(session_only_path)); base::RunLoop().RunUntilIdle(); @@ -224,8 +234,7 @@ void OnSuccess(std::unique_ptr<IndexedDBConnection> connection, const IndexedDBDatabaseMetadata& metadata) override { connection_ = std::move(connection); - idb_context_->ConnectionOpened(bucket_locator_.storage_key, - connection_.get()); + idb_context_->ConnectionOpened(bucket_locator_, connection_.get()); } IndexedDBConnection* connection() { return connection_.get(); } @@ -253,7 +262,7 @@ base::MakeRefCounted<ForceCloseDBCallbacks>(context(), bucket_locator); auto closed_callbacks = base::MakeRefCounted<ForceCloseDBCallbacks>(context(), bucket_locator); - base::FilePath test_path = GetFilePathForTesting(kTestStorageKey); + base::FilePath test_path = GetFilePathForTesting(bucket_locator); const int64_t host_transaction_id = 0; const int64_t version = 0; @@ -283,7 +292,7 @@ RunPostedTasks(); context()->ForceCloseSync( - kTestStorageKey, + bucket_locator, storage::mojom::ForceCloseReason::FORCE_CLOSE_DELETE_ORIGIN); EXPECT_TRUE(open_db_callbacks->forced_close_called()); EXPECT_FALSE(closed_db_callbacks->forced_close_called()); @@ -301,8 +310,11 @@ TEST_F(IndexedDBTest, DeleteFailsIfDirectoryLocked) { const blink::StorageKey kTestStorageKey = blink::StorageKey::CreateFromStringForTesting("http://test/"); + auto bucket_locator = storage::BucketLocator(); + bucket_locator.storage_key = kTestStorageKey; + context()->RegisterBucketLocatorToSkipQuotaLookupForTesting(bucket_locator); - base::FilePath test_path = GetFilePathForTesting(kTestStorageKey); + base::FilePath test_path = GetFilePathForTesting(bucket_locator); ASSERT_TRUE(base::CreateDirectory(test_path)); auto lock = LockForTesting(test_path); @@ -348,13 +360,13 @@ ASSERT_TRUE(callbacks->connection()); // ConnectionOpened() is usually called by the dispatcher. - context()->ConnectionOpened(kTestStorageKey, callbacks->connection()); + context()->ConnectionOpened(bucket_locator, callbacks->connection()); EXPECT_TRUE(factory->IsBackingStoreOpen(bucket_locator)); // Simulate the write failure. leveldb::Status status = leveldb::Status::IOError("Simulated failure"); - factory->HandleBackingStoreFailure(kTestStorageKey); + factory->HandleBackingStoreFailure(bucket_locator); EXPECT_TRUE(db_callbacks->forced_close_called()); EXPECT_FALSE(factory->IsBackingStoreOpen(bucket_locator));
diff --git a/content/browser/indexed_db/mock_indexed_db_factory.cc b/content/browser/indexed_db/mock_indexed_db_factory.cc index a105f033f..0747366 100644 --- a/content/browser/indexed_db/mock_indexed_db_factory.cc +++ b/content/browser/indexed_db/mock_indexed_db_factory.cc
@@ -15,7 +15,7 @@ } std::vector<IndexedDBDatabase*> MockIndexedDBFactory::GetOpenDatabasesForBucket( - const blink::StorageKey& storage_key) const { + const storage::BucketLocator& bucket_locator) const { return std::vector<IndexedDBDatabase*>(); }
diff --git a/content/browser/indexed_db/mock_indexed_db_factory.h b/content/browser/indexed_db/mock_indexed_db_factory.h index 107cfeb..650e655 100644 --- a/content/browser/indexed_db/mock_indexed_db_factory.h +++ b/content/browser/indexed_db/mock_indexed_db_factory.h
@@ -70,16 +70,16 @@ } MOCK_METHOD1(HandleBackingStoreFailure, - void(const blink::StorageKey& storage_key)); + void(const storage::BucketLocator& bucket_locator)); MOCK_METHOD2(HandleBackingStoreCorruption, - void(const blink::StorageKey& storage_key, + void(const storage::BucketLocator& bucket_locator, const IndexedDBDatabaseError& error)); // The Android NDK implements a subset of STL, and the gtest templates can't // deal with std::pair's. This means we can't use GoogleMock for this method std::vector<IndexedDBDatabase*> GetOpenDatabasesForBucket( - const blink::StorageKey& storage_key) const override; + const storage::BucketLocator& bucket_locator) const override; MOCK_METHOD2(ForceClose, - void(const blink::StorageKey& storage_key, + void(const storage::BucketLocator& bucket_locator, bool delete_in_memory_store)); MOCK_METHOD1(ForceSchemaDowngrade, void(const storage::BucketLocator& bucket_locator)); @@ -88,16 +88,17 @@ V2SchemaCorruptionStatus(const storage::BucketLocator& bucket_locator)); MOCK_METHOD0(ContextDestroyed, void()); - MOCK_METHOD1(BlobFilesCleaned, void(const blink::StorageKey& storage_key)); + MOCK_METHOD1(BlobFilesCleaned, + void(const storage::BucketLocator& bucket_locator)); MOCK_CONST_METHOD1(GetConnectionCount, - size_t(const blink::StorageKey& storage_key)); + size_t(const storage::BucketLocator& bucket_locator)); MOCK_CONST_METHOD1(GetInMemoryDBSize, - int64_t(const blink::StorageKey& storage_key)); + int64_t(const storage::BucketLocator& bucket_locator)); MOCK_CONST_METHOD1(GetLastModified, - base::Time(const blink::StorageKey& storage_key)); + base::Time(const storage::BucketLocator& bucket_locator)); MOCK_METHOD2(ReportOutstandingBlobs, void(const storage::BucketLocator& bucket_locator, @@ -106,7 +107,7 @@ MOCK_METHOD1(NotifyIndexedDBListChanged, void(const blink::StorageKey& storage_key)); MOCK_METHOD3(NotifyIndexedDBContentChanged, - void(const blink::StorageKey& storage_key, + void(const storage::BucketLocator& bucket_locator, const std::u16string& database_name, const std::u16string& object_store_name)); };
diff --git a/content/browser/net/network_errors_listing_ui.cc b/content/browser/net/network_errors_listing_ui.cc index 1f0f6cb4..fecb5b72 100644 --- a/content/browser/net/network_errors_listing_ui.cc +++ b/content/browser/net/network_errors_listing_ui.cc
@@ -47,10 +47,10 @@ // Exclude the aborted and pending codes as these don't return a page. if (error_code != net::Error::ERR_IO_PENDING && error_code != net::Error::ERR_ABORTED) { - std::unique_ptr<base::DictionaryValue> error(new base::DictionaryValue()); - error->SetInteger(kErrorIdField, error_code); - error->SetString(kErrorCodeField, itr.key()); - error_list->Append(std::move(error)); + base::Value::Dict error; + error.Set(kErrorIdField, error_code); + error.Set(kErrorCodeField, itr.key()); + error_list->GetList().Append(std::move(error)); } } return error_list;
diff --git a/content/browser/renderer_host/navigation_controller_impl.cc b/content/browser/renderer_host/navigation_controller_impl.cc index 47af3f2..7801a15 100644 --- a/content/browser/renderer_host/navigation_controller_impl.cc +++ b/content/browser/renderer_host/navigation_controller_impl.cc
@@ -4429,27 +4429,39 @@ scoped_refptr<SiteInstance> site_instance = node->current_frame_host()->GetSiteInstance(); - // NOTE: |entry_index| is an estimate of the index where this entry will - // commit, but it may be wrong in corner cases (e.g., if we are at the max - // entry limit, the earliest entry will be dropped). This is ok because this - // algorithm only uses |entry_index| to walk the entry list as it stands right - // now, and it isn't saved for anything post-commit. - int entry_index = GetPendingEntryIndex(); - bool will_create_new_entry = false; - if (!request || - NavigationTypeUtils::IsReload(request->common_params().navigation_type) || - request->common_params().should_replace_current_entry || - request->common_params().is_history_navigation_in_new_child_frame) { - entry_index = GetLastCommittedEntryIndex(); - } else if (entry_index == -1) { - will_create_new_entry = true; - entry_index = GetLastCommittedEntryIndex() + 1; - } - + // NOTE: |entry_index| is the index where this entry will commit if no + // modifications are made between now and DidCommitNavigation. This is used to + // walk |entries_| and determine which entries should be exposed by the + // navigation API. It is important to calculate this correctly, because blink + // will cancel a same-document history commit if it's not present in the + // entries blink knows about. + int entry_index = GetLastCommittedEntryIndex(); int64_t pending_item_sequence_number = 0; int64_t pending_document_sequence_number = 0; - if (auto* pending_entry = GetPendingEntry()) { - if (auto* frame_entry = pending_entry->GetFrameEntry(node)) { + bool will_create_new_entry = false; + if (GetPendingEntryIndex() != -1) { + entry_index = GetPendingEntryIndex(); + if (auto* frame_entry = GetPendingEntry()->GetFrameEntry(node)) { + pending_item_sequence_number = frame_entry->item_sequence_number(); + pending_document_sequence_number = + frame_entry->document_sequence_number(); + } + } else if (request && + !NavigationTypeUtils::IsReload( + request->common_params().navigation_type) && + !NavigationTypeUtils::IsHistory( + request->common_params().navigation_type) && + !request->common_params().should_replace_current_entry && + !request->common_params() + .is_history_navigation_in_new_child_frame) { + will_create_new_entry = true; + entry_index = GetLastCommittedEntryIndex() + 1; + // Don't set pending_item_sequence_number or + // pending_document_sequence_number in this case - a new unique isn/dsn will + // be calculated in the renderer later. + } else if (GetLastCommittedEntryIndex() != -1) { + entry_index = GetLastCommittedEntryIndex(); + if (auto* frame_entry = GetLastCommittedEntry()->GetFrameEntry(node)) { pending_item_sequence_number = frame_entry->item_sequence_number(); pending_document_sequence_number = frame_entry->document_sequence_number(); @@ -4457,6 +4469,12 @@ } auto entry_arrays = blink::mojom::NavigationApiHistoryEntryArrays::New(); + if (entry_index == -1) { + // TODO(rakina): Exit early when there is no last committed entry. + // Remove when InitialNavigationEntry ships. + return entry_arrays; + } + entry_arrays->back_entries = PopulateSingleNavigationApiHistoryEntryVector( Direction::kBack, entry_index, pending_origin, node, site_instance.get(), pending_item_sequence_number, pending_document_sequence_number);
diff --git a/content/browser/renderer_host/navigation_controller_impl_browsertest.cc b/content/browser/renderer_host/navigation_controller_impl_browsertest.cc index 82f2927..09cba876 100644 --- a/content/browser/renderer_host/navigation_controller_impl_browsertest.cc +++ b/content/browser/renderer_host/navigation_controller_impl_browsertest.cc
@@ -21269,6 +21269,163 @@ EXPECT_EQ(nullptr, EvalJs(root, "history.state")); } +IN_PROC_BROWSER_TEST_P(NavigationControllerBrowserTest, + GoForwardAfterInitialHistoryInChildFrame) { + // Start on a page with one iframe. + GURL main_url(embedded_test_server()->GetURL( + "/navigation_controller/page_with_iframe.html")); + ASSERT_TRUE(NavigateToURL(shell(), main_url)); + NavigationControllerImpl& controller = contents()->GetController(); + FrameTreeNode* root = contents()->GetPrimaryFrameTree().root(); + FrameTreeNode* child = root->child_at(0); + + // Navigate to a real page in the subframe, so that the next navigation will + // be MANUAL_SUBFRAME. + GURL subframe_url(embedded_test_server()->GetURL( + "/navigation_controller/simple_page_1.html")); + { + TestNavigationObserver navigation_observer(contents()); + EXPECT_TRUE(NavigateToURLFromRenderer(root->child_at(0), subframe_url)); + navigation_observer.Wait(); + } + + // Navigate subframe same-document. + { + TestNavigationObserver navigation_observer(contents()); + std::string script = "location.href = '#foo';"; + EXPECT_TRUE(ExecJs(child, script)); + navigation_observer.Wait(); + } + GURL child_url(child->current_frame_host()->GetLastCommittedURL()); + EXPECT_EQ(2, controller.GetEntryCount()); + EXPECT_EQ(1, controller.GetCurrentEntryIndex()); + + // Navigate root cross-document. + GURL cross_doc_url(embedded_test_server()->GetURL("a.com", "/title2.html")); + { + TestNavigationObserver navigation_observer(contents()); + EXPECT_TRUE(NavigateToURLFromRenderer(root, cross_doc_url)); + navigation_observer.Wait(); + } + EXPECT_EQ(3, controller.GetEntryCount()); + EXPECT_EQ(2, controller.GetCurrentEntryIndex()); + + // Go back 2, this will restore the subframe. + { + TestNavigationObserver navigation_observer(contents()); + controller.GoToOffset(-2); + navigation_observer.Wait(); + } + EXPECT_EQ(3, controller.GetEntryCount()); + EXPECT_EQ(0, controller.GetCurrentEntryIndex()); + + // The NavigationApi in the renderer validates same-document back/forward + // navigations, and cancels them if it is not aware of the existence of the + // entry being navigated to. Restoring an iframe during a history traversal of + // its parent used to cause + // NavigationControllerImpl::GetNavigationApiHistoryEntryVectors() to + // miscalculate the committing entry index (thinking it was 1 instead of 0). + // This meant that index 0 was treated as a back entry (when it should have + // been current) and the index 1 entry was omitted (when it should have been a + // forward entry). The NavigationApi therefore had incorrect data to refer to + // when validating back/forward navigations and was entirely unaware of the + // entry at index 1, so it would incorrectly block a forward navigation to + // index 1. + { + // Go forward. + TestNavigationObserver navigation_observer(shell()->web_contents()); + controller.GoForward(); + navigation_observer.Wait(); + } + EXPECT_EQ(3, controller.GetEntryCount()); + EXPECT_EQ(1, controller.GetCurrentEntryIndex()); + EXPECT_EQ(child_url, + root->child_at(0)->current_frame_host()->GetLastCommittedURL()); +} + +IN_PROC_BROWSER_TEST_P(NavigationControllerBrowserTest, + GoBackInMultipleIframesOneFastOneSlow) { + // Start on a page with two iframes. + GURL main_url = embedded_test_server()->GetURL( + "a.com", "/cross_site_iframe_factory.html?a(b,c)"); + ASSERT_TRUE(NavigateToURL(shell(), main_url)); + NavigationControllerImpl& controller = contents()->GetController(); + FrameTreeNode* ftn_a = contents()->GetPrimaryFrameTree().root(); + FrameTreeNode* ftn_b = ftn_a->child_at(0); + FrameTreeNode* ftn_c = ftn_a->child_at(1); + GURL url_b(ftn_b->current_frame_host()->GetLastCommittedURL()); + GURL url_c(ftn_c->current_frame_host()->GetLastCommittedURL()); + + // Navigate second subframe same-document. + { + TestNavigationObserver navigation_observer(shell()->web_contents()); + std::string script = "location.href = '#foo';"; + EXPECT_TRUE(ExecJs(ftn_c, script)); + navigation_observer.Wait(); + } + EXPECT_EQ(2, controller.GetEntryCount()); + EXPECT_EQ(1, controller.GetCurrentEntryIndex()); + + // Navigate first subframe cross-document. + GURL url_b2(embedded_test_server()->GetURL("a.com", "/title2.html")); + { + TestNavigationObserver navigation_observer(contents()); + EXPECT_TRUE(NavigateToURLFromRenderer(ftn_b, url_b2)); + navigation_observer.Wait(); + } + EXPECT_EQ(3, controller.GetEntryCount()); + EXPECT_EQ(2, controller.GetCurrentEntryIndex()); + EXPECT_EQ(url_b2, ftn_b->current_frame_host()->GetLastCommittedURL()); + + // Navigate second subframe cross-document. + GURL url_c2(embedded_test_server()->GetURL("a.com", "/title2.html")); + { + TestNavigationObserver navigation_observer(contents()); + EXPECT_TRUE(NavigateToURLFromRenderer(ftn_c, url_c2)); + navigation_observer.Wait(); + } + EXPECT_EQ(4, controller.GetEntryCount()); + EXPECT_EQ(3, controller.GetCurrentEntryIndex()); + EXPECT_EQ(url_c2, ftn_c->current_frame_host()->GetLastCommittedURL()); + + // Go back 3 so that both subframes navigate, but ensure that ftn_c doesn't + // commit until after ftn_b is entirely finished. + FrameTestNavigationManager b_delayer(ftn_b->frame_tree_node_id(), + shell()->web_contents(), url_b); + FrameTestNavigationManager c_delayer(ftn_c->frame_tree_node_id(), + shell()->web_contents(), url_c); + controller.GoToOffset(-3); + b_delayer.WaitForNavigationFinished(); + c_delayer.WaitForNavigationFinished(); + + EXPECT_TRUE(WaitForLoadStop(contents())); + EXPECT_EQ(4, controller.GetEntryCount()); + EXPECT_EQ(0, controller.GetCurrentEntryIndex()); + EXPECT_EQ(url_b, ftn_b->current_frame_host()->GetLastCommittedURL()); + EXPECT_EQ(url_c, ftn_c->current_frame_host()->GetLastCommittedURL()); + + // The NavigationApi in the renderer validates same-document back/forward + // navigations, and cancels them if it is not aware of the existence of the + // entry being navigated to. The back traversal above with multiple iframes + // committing at different times used to cause + // NavigationControllerImpl::GetNavigationApiHistoryEntryVectors() to + // miscalculate the committing entry index (thinking it was 1 instead of 0). + // This meant that index 0 was treated as a back entry (when it should have + // been current) and the index 1 entry was omitted (when it should have been a + // forward entry). The NavigationApi therefore had incorrect data to refer to + // when validating back/forward navigations and was entirely unaware of the + // entry at index 1, so it would incorrectly block a forward navigation to + // index 1. + { + // Go forward. + TestNavigationObserver navigation_observer(shell()->web_contents()); + controller.GoForward(); + navigation_observer.Wait(); + } + EXPECT_EQ(4, controller.GetEntryCount()); + EXPECT_EQ(1, controller.GetCurrentEntryIndex()); +} + INSTANTIATE_TEST_SUITE_P( All, NavigationControllerAlertDialogBrowserTest,
diff --git a/content/browser/webauth/pub_key_cred_params.md b/content/browser/webauth/pub_key_cred_params.md new file mode 100644 index 0000000..0bf91502b --- /dev/null +++ b/content/browser/webauth/pub_key_cred_params.md
@@ -0,0 +1,9 @@ +# Advice to sites regarding `PublicKeyCredentialCreationOptions.pubKeyCredParams` + +In the options for a [Web Authentication](https://www.w3.org/TR/webauthn/) [credential registration request](https://www.w3.org/TR/webauthn/#createCredential), the caller can specify a list of [cryptographic algorithm identifiers](https://www.w3.org/TR/webauthn-2/#typedefdef-cosealgorithmidentifier) in the [`pubKeyCredParams`](https://www.w3.org/TR/webauthn-2/#dictdef-publickeycredentialparameters) field. + +If left unspecified, Chrome uses the default values of `ES256` (-7) and `RS256` (-257). + +In some situations, a [Relying Party](https://www.w3.org/TR/webauthn-2/#webauthn-relying-party) developer might choose to augment this list with other identifiers. However, developers should be aware that excluding either of the default identifiers has compatibility risks. In particular, `RS256` is necessary for compatibility with Microsoft Windows platform authenticators. `ES256` is a widely supported algorithm and is compatible with most other platform authenticators and roaming authenticators. + +Therefore a Relying Party that uses an algorithm identifier list that omits either of those values will see registration failures when users attempt to use incompatible authenticators.
diff --git a/gpu/command_buffer/common/capabilities.h b/gpu/command_buffer/common/capabilities.h index 91d02fe..755bd297 100644 --- a/gpu/command_buffer/common/capabilities.h +++ b/gpu/command_buffer/common/capabilities.h
@@ -174,6 +174,7 @@ bool dc_layers = false; bool protected_video_swap_chain = false; bool gpu_vsync = false; + bool shared_image_d3d = false; bool shared_image_swap_chain = false; bool angle_rgbx_internal_format = false;
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_passthrough.cc b/gpu/command_buffer/service/gles2_cmd_decoder_passthrough.cc index 265dd569..d0a24769 100644 --- a/gpu/command_buffer/service/gles2_cmd_decoder_passthrough.cc +++ b/gpu/command_buffer/service/gles2_cmd_decoder_passthrough.cc
@@ -412,8 +412,8 @@ SharedImageData&& other) = default; PassthroughResources::SharedImageData::~SharedImageData() = default; -PassthroughResources::SharedImageData& PassthroughResources::SharedImageData:: -operator=(SharedImageData&& other) { +PassthroughResources::SharedImageData& +PassthroughResources::SharedImageData::operator=(SharedImageData&& other) { scoped_access_ = std::move(other.scoped_access_); representation_ = std::move(other.representation_); return *this; @@ -1689,7 +1689,11 @@ caps.protected_video_swap_chain = surface_->SupportsProtectedVideo(); caps.gpu_vsync = surface_->SupportsGpuVSync(); #if BUILDFLAG(IS_WIN) + caps.shared_image_d3d = + SharedImageBackingFactoryD3D::IsD3DSharedImageSupported( + group_->gpu_preferences()); caps.shared_image_swap_chain = + caps.shared_image_d3d && SharedImageBackingFactoryD3D::IsSwapChainSupported(); #endif // BUILDFLAG(IS_WIN) caps.texture_npot = feature_info_->feature_flags().npot_ok; @@ -3111,11 +3115,12 @@ return had_error_; } -#define GLES2_CMD_OP(name) \ - { \ - &GLES2DecoderPassthroughImpl::Handle##name, cmds::name::kArgFlags, \ - cmds::name::cmd_flags, \ - sizeof(cmds::name) / sizeof(CommandBufferEntry) - 1, \ +#define GLES2_CMD_OP(name) \ + { \ + &GLES2DecoderPassthroughImpl::Handle##name, \ + cmds::name::kArgFlags, \ + cmds::name::cmd_flags, \ + sizeof(cmds::name) / sizeof(CommandBufferEntry) - 1, \ }, /* NOLINT */ constexpr GLES2DecoderPassthroughImpl::CommandInfo
diff --git a/gpu/command_buffer/service/shared_image_backing_factory_d3d.cc b/gpu/command_buffer/service/shared_image_backing_factory_d3d.cc index ec198c1f3..b2a5bb0 100644 --- a/gpu/command_buffer/service/shared_image_backing_factory_d3d.cc +++ b/gpu/command_buffer/service/shared_image_backing_factory_d3d.cc
@@ -14,7 +14,9 @@ #include "gpu/command_buffer/service/shared_image_backing_d3d.h" #include "ui/gfx/buffer_format_util.h" #include "ui/gl/direct_composition_surface_win.h" +#include "ui/gl/gl_angle_util_win.h" #include "ui/gl/gl_bindings.h" +#include "ui/gl/gl_utils.h" namespace gpu { @@ -176,6 +178,18 @@ SharedImageBackingFactoryD3D::SwapChainBackings&&) = default; // static +bool SharedImageBackingFactoryD3D::IsD3DSharedImageSupported( + const GpuPreferences& gpu_preferences) { + // Only supported for passthrough command decoder and Skia-GL. + const bool using_passthrough = gpu_preferences.use_passthrough_cmd_decoder && + gl::PassthroughCommandDecoderSupported(); + const bool is_skia_gl = gpu_preferences.gr_context_type == GrContextType::kGL; + // D3D11 device will be null if ANGLE is using the D3D9 backend. + const bool using_d3d11 = gl::QueryD3D11DeviceObjectFromANGLE() != nullptr; + return using_passthrough && is_skia_gl && using_d3d11; +} + +// static bool SharedImageBackingFactoryD3D::IsSwapChainSupported() { return gl::DirectCompositionSurfaceWin::IsDirectCompositionSupported() && gl::DirectCompositionSurfaceWin::IsSwapChainTearingSupported();
diff --git a/gpu/command_buffer/service/shared_image_backing_factory_d3d.h b/gpu/command_buffer/service/shared_image_backing_factory_d3d.h index 667cb5b..54f29cb 100644 --- a/gpu/command_buffer/service/shared_image_backing_factory_d3d.h +++ b/gpu/command_buffer/service/shared_image_backing_factory_d3d.h
@@ -40,6 +40,10 @@ ~SharedImageBackingFactoryD3D() override; + // Returns true if D3D shared images are supported and this factory should be + // used. Generally this means Skia-GL, passthrough decoder, and ANGLE-D3D11. + static bool IsD3DSharedImageSupported(const GpuPreferences& gpu_preferences); + // Returns true if DXGI swap chain shared images for overlays are supported. static bool IsSwapChainSupported();
diff --git a/gpu/command_buffer/service/shared_image_factory.cc b/gpu/command_buffer/service/shared_image_factory.cc index 922b038..11164ae 100644 --- a/gpu/command_buffer/service/shared_image_factory.cc +++ b/gpu/command_buffer/service/shared_image_factory.cc
@@ -304,16 +304,11 @@ } #if BUILDFLAG(IS_WIN) - // Only supported for passthrough command decoder and Skia-GL. - const bool use_passthrough = gpu_preferences.use_passthrough_cmd_decoder && - gles2::PassthroughCommandDecoderSupported(); - const bool is_skia_gl = gr_context_type_ == GrContextType::kGL; - // D3D11 device will be null if ANGLE is using the D3D9 backend. - // TODO(sunnyps): Should we get the device from SharedContextState instead? - auto d3d11_device = gl::QueryD3D11DeviceObjectFromANGLE(); - if (use_passthrough && is_skia_gl && d3d11_device) { + if (SharedImageBackingFactoryD3D::IsD3DSharedImageSupported( + gpu_preferences)) { + // TODO(sunnyps): Should we get the device from SharedContextState instead? auto d3d_factory = std::make_unique<SharedImageBackingFactoryD3D>( - std::move(d3d11_device), + gl::QueryD3D11DeviceObjectFromANGLE(), shared_image_manager_->dxgi_shared_handle_manager()); d3d_backing_factory_ = d3d_factory.get(); factories_.push_back(std::move(d3d_factory));
diff --git a/gpu/config/gpu_info.cc b/gpu/config/gpu_info.cc index 87cbb8b..2ea5fd1 100644 --- a/gpu/config/gpu_info.cc +++ b/gpu/config/gpu_info.cc
@@ -37,6 +37,7 @@ enumerator->AddString("driverVersion", device.driver_version); enumerator->AddInt("cudaComputeCapabilityMajor", device.cuda_compute_capability_major); + enumerator->AddInt("gpuPreference", static_cast<int>(device.gpu_preference)); enumerator->EndGPUDevice(); } @@ -337,6 +338,30 @@ return false; } +GPUInfo::GPUDevice* GPUInfo::GetGpuByPreference(gl::GpuPreference preference) { + DCHECK(preference == gl::GpuPreference::kHighPerformance || + preference == gl::GpuPreference::kLowPower); + if (gpu.gpu_preference == preference) + return &gpu; + for (auto& device : secondary_gpus) { + if (device.gpu_preference == preference) + return &device; + } + return nullptr; +} + +#if BUILDFLAG(IS_WIN) +GPUInfo::GPUDevice* GPUInfo::FindGpuByLuid(DWORD low_part, LONG high_part) { + if (gpu.luid.LowPart == low_part && gpu.luid.HighPart == high_part) + return &gpu; + for (auto& device : secondary_gpus) { + if (device.luid.LowPart == low_part && device.luid.HighPart == high_part) + return &device; + } + return nullptr; +} +#endif // BUILDFLAG(IS_WIN) + void GPUInfo::EnumerateFields(Enumerator* enumerator) const { struct GPUInfoKnownFields { base::TimeDelta initialization_time;
diff --git a/gpu/config/gpu_info.h b/gpu/config/gpu_info.h index 8fb2e497..870902c 100644 --- a/gpu/config/gpu_info.h +++ b/gpu/config/gpu_info.h
@@ -23,6 +23,7 @@ #include "gpu/vulkan/buildflags.h" #include "third_party/abseil-cpp/absl/types/optional.h" #include "ui/gfx/geometry/size.h" +#include "ui/gl/gpu_preference.h" #if BUILDFLAG(IS_WIN) #include <dxgi.h> @@ -295,6 +296,9 @@ // NVIDIA CUDA compute capability, major version. 0 if undetermined. Can be // used to determine the hardware generation that the GPU belongs to. int cuda_compute_capability_major = 0; + + // If this device is identified as high performance or low power GPU. + gl::GpuPreference gpu_preference = gl::GpuPreference::kNone; }; GPUInfo(); @@ -318,6 +322,13 @@ // |output_discrete_gpu| is the first non-Intel GPU. bool GetDiscreteGpu(GPUDevice* output_discrete_gpu) const; + // TODO(crbug.com/1315820): Remove GetIntegratedGpu() and GetDiscreteGpu(). + GPUDevice* GetGpuByPreference(gl::GpuPreference preference); + +#if BUILDFLAG(IS_WIN) + GPUDevice* FindGpuByLuid(DWORD low_part, LONG high_part); +#endif // BUILDFLAG(IS_WIN) + // The amount of time taken to get from the process starting to the message // loop being pumped. base::TimeDelta initialization_time;
diff --git a/gpu/config/gpu_info_collector_win.cc b/gpu/config/gpu_info_collector_win.cc index 1fe8f257..b0f6e56 100644 --- a/gpu/config/gpu_info_collector_win.cc +++ b/gpu/config/gpu_info_collector_win.cc
@@ -17,6 +17,7 @@ #include <d3d11_3.h> #include <d3d12.h> #include <dxgi.h> +#include <dxgi1_6.h> #include <vulkan/vulkan.h> #include <wrl/client.h> @@ -148,8 +149,7 @@ return false; DXGI_ADAPTER_DESC desc; - if (FAILED(adapter->GetDesc(&desc))) - return false; + CHECK_EQ(S_OK, adapter->GetDesc(&desc)); // Zero isn't a valid LUID. if (desc.AdapterLuid.HighPart == 0 && desc.AdapterLuid.LowPart == 0) @@ -221,7 +221,7 @@ Microsoft::WRL::ComPtr<IDXGIAdapter> dxgi_adapter; for (i = 0; SUCCEEDED(dxgi_factory->EnumAdapters(i, &dxgi_adapter)); i++) { DXGI_ADAPTER_DESC desc; - dxgi_adapter->GetDesc(&desc); + CHECK_EQ(S_OK, dxgi_adapter->GetDesc(&desc)); GPUInfo::GPUDevice device; device.vendor_id = desc.VendorId; @@ -281,6 +281,30 @@ } } + Microsoft::WRL::ComPtr<IDXGIFactory6> dxgi_factory6; + if (gpu_info->GpuCount() > 1 && SUCCEEDED(dxgi_factory.As(&dxgi_factory6))) { + if (SUCCEEDED(dxgi_factory6->EnumAdapterByGpuPreference( + 0, DXGI_GPU_PREFERENCE_HIGH_PERFORMANCE, + IID_PPV_ARGS(&dxgi_adapter)))) { + DXGI_ADAPTER_DESC desc; + CHECK_EQ(S_OK, dxgi_adapter->GetDesc(&desc)); + GPUInfo::GPUDevice* device = gpu_info->FindGpuByLuid( + desc.AdapterLuid.LowPart, desc.AdapterLuid.HighPart); + DCHECK(device); + device->gpu_preference = gl::GpuPreference::kHighPerformance; + } + if (SUCCEEDED(dxgi_factory6->EnumAdapterByGpuPreference( + 0, DXGI_GPU_PREFERENCE_MINIMUM_POWER, + IID_PPV_ARGS(&dxgi_adapter)))) { + DXGI_ADAPTER_DESC desc; + CHECK_EQ(S_OK, dxgi_adapter->GetDesc(&desc)); + GPUInfo::GPUDevice* device = gpu_info->FindGpuByLuid( + desc.AdapterLuid.LowPart, desc.AdapterLuid.HighPart); + DCHECK(device); + device->gpu_preference = gl::GpuPreference::kLowPower; + } + } + return i > 0; } @@ -289,10 +313,7 @@ // are known driver bugs. bool CanCreateD3D12Device(IDXGIAdapter* dxgi_adapter) { DXGI_ADAPTER_DESC desc; - HRESULT hr = dxgi_adapter->GetDesc(&desc); - if (FAILED(hr)) { - return false; - } + CHECK_EQ(S_OK, dxgi_adapter->GetDesc(&desc)); // Known driver bugs are Intel-only. Expand in the future, as necessary, for // other IHVs. @@ -300,7 +321,8 @@ return true; LARGE_INTEGER umd_version; - hr = dxgi_adapter->CheckInterfaceSupport(__uuidof(IDXGIDevice), &umd_version); + HRESULT hr = + dxgi_adapter->CheckInterfaceSupport(__uuidof(IDXGIDevice), &umd_version); if (FAILED(hr)) { return false; } @@ -650,7 +672,8 @@ for (UINT ii = 0; SUCCEEDED(dxgi_factory->EnumAdapters(ii, &dxgi_adapter)); ++ii) { DXGI_ADAPTER_DESC desc; - if (SUCCEEDED(dxgi_adapter->GetDesc(&desc)) && desc.VendorId == 0x1414) { + CHECK_EQ(S_OK, dxgi_adapter->GetDesc(&desc)); + if (desc.VendorId == 0x1414) { // Bypass Microsoft software renderer. continue; }
diff --git a/gpu/ipc/common/BUILD.gn b/gpu/ipc/common/BUILD.gn index d02fb29..f1c99516 100644 --- a/gpu/ipc/common/BUILD.gn +++ b/gpu/ipc/common/BUILD.gn
@@ -334,6 +334,7 @@ "//mojo/public/mojom/base", "//ui/gfx/geometry/mojom", "//ui/gfx/mojom", + "//ui/gl/mojom", ] enabled_features = [] if (enable_vulkan) {
diff --git a/gpu/ipc/common/gpu_info.mojom b/gpu/ipc/common/gpu_info.mojom index 50859bc..8e1282c3 100644 --- a/gpu/ipc/common/gpu_info.mojom +++ b/gpu/ipc/common/gpu_info.mojom
@@ -10,6 +10,7 @@ import "gpu/ipc/common/luid.mojom"; import "mojo/public/mojom/base/time.mojom"; import "ui/gfx/geometry/mojom/geometry.mojom"; +import "ui/gl/mojom/gpu_preference.mojom"; [EnableIf=supports_vulkan] import "gpu/ipc/common/vulkan_info.mojom"; @@ -30,6 +31,7 @@ int32 cuda_compute_capability_major; [EnableIf=is_win] Luid luid; + gl.mojom.GpuPreference gpu_preference; }; // gpu::VideoCodecProfile
diff --git a/gpu/ipc/common/gpu_info_mojom_traits.cc b/gpu/ipc/common/gpu_info_mojom_traits.cc index 766b0e8..7925348 100644 --- a/gpu/ipc/common/gpu_info_mojom_traits.cc +++ b/gpu/ipc/common/gpu_info_mojom_traits.cc
@@ -34,7 +34,8 @@ data.ReadLuid(&out->luid) && #endif // BUILDFLAG(IS_WIN) data.ReadDriverVendor(&out->driver_vendor) && - data.ReadDriverVersion(&out->driver_version); + data.ReadDriverVersion(&out->driver_version) && + data.ReadGpuPreference(&out->gpu_preference); } // static
diff --git a/gpu/ipc/common/gpu_info_mojom_traits.h b/gpu/ipc/common/gpu_info_mojom_traits.h index 2dde0463..95e18b90 100644 --- a/gpu/ipc/common/gpu_info_mojom_traits.h +++ b/gpu/ipc/common/gpu_info_mojom_traits.h
@@ -78,6 +78,11 @@ const gpu::GPUInfo::GPUDevice& input) { return input.cuda_compute_capability_major; } + + static gl::GpuPreference gpu_preference( + const gpu::GPUInfo::GPUDevice& input) { + return input.gpu_preference; + } }; template <>
diff --git a/gpu/ipc/service/gpu_init.cc b/gpu/ipc/service/gpu_init.cc index d8e576d6..76f0d0cb 100644 --- a/gpu/ipc/service/gpu_init.cc +++ b/gpu/ipc/service/gpu_init.cc
@@ -247,32 +247,37 @@ command_line, &needs_more_info); } +#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) // GPU picking is only effective with ANGLE/Metal backend on Mac and // on Windows. - GPUInfo::GPUDevice preferred_gpu; - bool force_integrated_gpu = + bool force_low_power_gpu = gpu_feature_info_.IsWorkaroundEnabled(FORCE_LOW_POWER_GPU); - bool force_discrete_gpu = + bool force_high_performance_gpu = gpu_feature_info_.IsWorkaroundEnabled(FORCE_HIGH_PERFORMANCE_GPU); #if BUILDFLAG(IS_MAC) // Default to the integrated gpu on a multi-gpu Mac. - if (!force_discrete_gpu) - force_integrated_gpu = true; -#endif // BUILDFLAG(IS_MAC) - if (force_discrete_gpu && gpu_info_.GetDiscreteGpu(&preferred_gpu)) { -#if BUILDFLAG(IS_MAC) + if (!force_high_performance_gpu) + force_low_power_gpu = true; + + GPUInfo::GPUDevice preferred_gpu; + if (force_high_performance_gpu && gpu_info_.GetDiscreteGpu(&preferred_gpu)) { system_device_id = preferred_gpu.register_id; -#elif BUILDFLAG(IS_WIN) - system_device_id = CHROME_LUID_to_uint64_t(preferred_gpu.luid); -#endif - } else if (force_integrated_gpu && + } else if (force_low_power_gpu && gpu_info_.GetIntegratedGpu(&preferred_gpu)) { -#if BUILDFLAG(IS_MAC) system_device_id = preferred_gpu.register_id; -#elif BUILDFLAG(IS_WIN) - system_device_id = CHROME_LUID_to_uint64_t(preferred_gpu.luid); -#endif } +#elif BUILDFLAG(IS_WIN) + GPUInfo::GPUDevice* preferred_gpu = nullptr; + if (force_high_performance_gpu) { + preferred_gpu = + gpu_info_.GetGpuByPreference(gl::GpuPreference::kHighPerformance); + } else if (force_low_power_gpu) { + preferred_gpu = gpu_info_.GetGpuByPreference(gl::GpuPreference::kLowPower); + } + if (preferred_gpu) + system_device_id = CHROME_LUID_to_uint64_t(preferred_gpu->luid); +#endif +#endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) #endif // !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_CHROMECAST) gpu_info_.in_process_gpu = false;
diff --git a/infra/OWNERS b/infra/OWNERS index da9a070..20f8e9b 100644 --- a/infra/OWNERS +++ b/infra/OWNERS
@@ -19,7 +19,6 @@ # Other folks who understand the infrastructure well. bsheedy@chromium.org hans@chromium.org -kbr@chromium.org thakis@chromium.org tikuta@chromium.org ynovikov@chromium.org
diff --git a/ios/chrome/app/strings/ios_strings.grd b/ios/chrome/app/strings/ios_strings.grd index 282df03..d700c99 100644 --- a/ios/chrome/app/strings/ios_strings.grd +++ b/ios/chrome/app/strings/ios_strings.grd
@@ -2392,6 +2392,12 @@ <message name="IDS_IOS_SETTINGS_SAFETY_CHECK_SAFE_BROWSING_DESCRIPTION" desc="Description text on the Safe Browsing element describing what the Safe Browsing check does."> Stay protected from dangerous websites </message> + <message name="IDS_IOS_SETTINGS_HTTPS_ONLY_MODE_TITLE" desc="Title for HTTPS-Only Mode toggle in settings"> + Try to use secure connections + </message> + <message name="IDS_IOS_SETTINGS_HTTPS_ONLY_MODE_DESCRIPTION" desc="Description text of HTTPS-Only Mode in settings"> + Upgrade to HTTPS, when possible. Secure sites might embed content that isn't secure. + </message> <message name="IDS_IOS_SETTINGS_SAFETY_CHECK_SAFE_BROWSING_DISABLED_DESC" desc="Detail text for the Safe Browsing check if the user has Safe Browsing disabled"> Off - Not recommended </message>
diff --git a/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_SETTINGS_HTTPS_ONLY_MODE_DESCRIPTION.png.sha1 b/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_SETTINGS_HTTPS_ONLY_MODE_DESCRIPTION.png.sha1 new file mode 100644 index 0000000..51eb0b2 --- /dev/null +++ b/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_SETTINGS_HTTPS_ONLY_MODE_DESCRIPTION.png.sha1
@@ -0,0 +1 @@ +c7b42beb78d273c3a1939c7e468885cddad2b5a9 \ No newline at end of file
diff --git a/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_SETTINGS_HTTPS_ONLY_MODE_TITLE.png.sha1 b/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_SETTINGS_HTTPS_ONLY_MODE_TITLE.png.sha1 new file mode 100644 index 0000000..51eb0b2 --- /dev/null +++ b/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_SETTINGS_HTTPS_ONLY_MODE_TITLE.png.sha1
@@ -0,0 +1 @@ +c7b42beb78d273c3a1939c7e468885cddad2b5a9 \ No newline at end of file
diff --git a/ios/chrome/browser/flags/BUILD.gn b/ios/chrome/browser/flags/BUILD.gn index dc0a3b5..b37e023 100644 --- a/ios/chrome/browser/flags/BUILD.gn +++ b/ios/chrome/browser/flags/BUILD.gn
@@ -74,6 +74,7 @@ "//ios/chrome/browser/ui/toolbar_container:feature_flags", "//ios/chrome/browser/ui/util:features", "//ios/chrome/browser/web:feature_flags", + "//ios/components/security_interstitials/https_only_mode:feature", "//ios/public/provider/chrome/browser/app_utils:app_utils_api", "//ios/web/common", "//ios/web/common:user_agent",
diff --git a/ios/chrome/browser/flags/about_flags.mm b/ios/chrome/browser/flags/about_flags.mm index 1b8a4e80..b1d9c46 100644 --- a/ios/chrome/browser/flags/about_flags.mm +++ b/ios/chrome/browser/flags/about_flags.mm
@@ -86,6 +86,7 @@ #include "ios/chrome/browser/ui/util/features.h" #include "ios/chrome/browser/web/features.h" #include "ios/chrome/grit/ios_strings.h" +#include "ios/components/security_interstitials/https_only_mode/feature.h" #include "ios/public/provider/chrome/browser/app_utils/app_utils_api.h" #include "ios/web/common/features.h" #include "ios/web/common/user_agent.h" @@ -889,6 +890,9 @@ {"experience-kit-calendar", flag_descriptions::kCalendarExperienceKitName, flag_descriptions::kCalendarExperienceKitDescription, flags_ui::kOsIos, FEATURE_VALUE_TYPE(kCalendarExperienceKit)}, + {"https-only-mode", flag_descriptions::kHttpsOnlyModeName, + flag_descriptions::kHttpsOnlyModeDescription, flags_ui::kOsIos, + FEATURE_VALUE_TYPE(security_interstitials::features::kHttpsOnlyMode)}, }; bool SkipConditionalFeatureEntry(const flags_ui::FeatureEntry& entry) {
diff --git a/ios/chrome/browser/flags/ios_chrome_flag_descriptions.cc b/ios/chrome/browser/flags/ios_chrome_flag_descriptions.cc index f91e367..679b16d5 100644 --- a/ios/chrome/browser/flags/ios_chrome_flag_descriptions.cc +++ b/ios/chrome/browser/flags/ios_chrome_flag_descriptions.cc
@@ -283,6 +283,9 @@ "When enabled, the web view's insets are updated for scoll events. If " "disabled, the the web view's frame are updated."; +const char kHttpsOnlyModeName[] = "HTTPS-Only Mode Setting"; +const char kHttpsOnlyModeDescription[] = "Enables the HTTPS-Only Mode setting"; + const char kIncognitoBrandConsistencyForIOSName[] = "Enable Incognito brand consistency in iOS."; const char kIncognitoBrandConsistencyForIOSDescription[] =
diff --git a/ios/chrome/browser/flags/ios_chrome_flag_descriptions.h b/ios/chrome/browser/flags/ios_chrome_flag_descriptions.h index 20decf4ad..ef24df6b 100644 --- a/ios/chrome/browser/flags/ios_chrome_flag_descriptions.h +++ b/ios/chrome/browser/flags/ios_chrome_flag_descriptions.h
@@ -250,6 +250,10 @@ extern const char kFullscreenSmoothScrollingName[]; extern const char kFullscreenSmoothScrollingDescription[]; +// Title and description for the flag to enable HTTPS-Only Mode setting. +extern const char kHttpsOnlyModeName[]; +extern const char kHttpsOnlyModeDescription[]; + // Title and description for the flag to enable dark mode colors while in // Incognito mode. extern const char kIncognitoBrandConsistencyForIOSName[];
diff --git a/ios/chrome/browser/https_upgrades/BUILD.gn b/ios/chrome/browser/https_upgrades/BUILD.gn index b482c92f..3d03881 100644 --- a/ios/chrome/browser/https_upgrades/BUILD.gn +++ b/ios/chrome/browser/https_upgrades/BUILD.gn
@@ -10,7 +10,9 @@ ] deps = [ "//base", + "//components/prefs:prefs", "//components/security_interstitials/core", + "//ios/chrome/browser:pref_names", "//ios/components/security_interstitials", "//ios/components/security_interstitials/https_only_mode", "//ios/components/security_interstitials/https_only_mode:feature", @@ -28,7 +30,10 @@ deps = [ ":https_upgrades", "//base/test:test_support", + "//components/prefs:test_support", "//components/security_interstitials/core", + "//ios/chrome/browser:pref_names", + "//ios/chrome/browser/browser_state:test_support", "//ios/components/security_interstitials/https_only_mode", "//ios/web/public", "//ios/web/public/test",
diff --git a/ios/chrome/browser/https_upgrades/https_only_mode_upgrade_tab_helper.h b/ios/chrome/browser/https_upgrades/https_only_mode_upgrade_tab_helper.h index 6b1f04d..88e9525 100644 --- a/ios/chrome/browser/https_upgrades/https_only_mode_upgrade_tab_helper.h +++ b/ios/chrome/browser/https_upgrades/https_only_mode_upgrade_tab_helper.h
@@ -13,6 +13,8 @@ #import "ios/web/public/web_state_user_data.h" #include "url/gurl.h" +class PrefService; + // This tab helper handles HTTP main frame navigation upgrades to HTTPS. // When it encounters an eligible HTTP navigation, it cancels the navigation, // starts a new navigation to the HTTPS version of the URL and observes the @@ -25,10 +27,8 @@ public web::WebStatePolicyDecider, public web::WebStateUserData<HttpsOnlyModeUpgradeTabHelper> { public: - ~HttpsOnlyModeUpgradeTabHelper() override; - HttpsOnlyModeUpgradeTabHelper(const HttpsOnlyModeUpgradeTabHelper&) = delete; - HttpsOnlyModeUpgradeTabHelper& operator=( - const HttpsOnlyModeUpgradeTabHelper&) = delete; + // Creates TabHelper. |web_state| and |model| must not be null. + static void CreateForWebState(web::WebState* web_state, PrefService* prefs); // Returns the upgraded HTTPS URL for the give HTTP URL. // In tests, we can't use a real HTTPS server to serve good HTTPS, so this @@ -38,6 +38,11 @@ int https_port_for_testing, bool use_fake_https_for_testing); + ~HttpsOnlyModeUpgradeTabHelper() override; + HttpsOnlyModeUpgradeTabHelper(const HttpsOnlyModeUpgradeTabHelper&) = delete; + HttpsOnlyModeUpgradeTabHelper& operator=( + const HttpsOnlyModeUpgradeTabHelper&) = delete; + // Sets the port used by the embedded https server. This is used to determine // the correct port while upgrading URLs to https if the original URL has a // non-default port. @@ -52,7 +57,8 @@ void SetFallbackDelayForTesting(base::TimeDelta delay); private: - explicit HttpsOnlyModeUpgradeTabHelper(web::WebState* web_state); + explicit HttpsOnlyModeUpgradeTabHelper(web::WebState* web_state, + PrefService* prefs); friend class web::WebStateUserData<HttpsOnlyModeUpgradeTabHelper>; // Returns true if url is a fake HTTPS URL used in tests. Tests use a fake @@ -112,6 +118,8 @@ base::TimeDelta fallback_delay_ = base::Seconds(3); base::OneShotTimer timer_; + PrefService* prefs_; + WEB_STATE_USER_DATA_KEY_DECL(); };
diff --git a/ios/chrome/browser/https_upgrades/https_only_mode_upgrade_tab_helper.mm b/ios/chrome/browser/https_upgrades/https_only_mode_upgrade_tab_helper.mm index 4b3f03b..3ac1bd97 100644 --- a/ios/chrome/browser/https_upgrades/https_only_mode_upgrade_tab_helper.mm +++ b/ios/chrome/browser/https_upgrades/https_only_mode_upgrade_tab_helper.mm
@@ -8,7 +8,9 @@ #include "base/metrics/histogram_functions.h" #include "base/strings/string_number_conversions.h" #include "base/threading/sequenced_task_runner_handle.h" +#include "components/prefs/pref_service.h" #include "components/security_interstitials/core/https_only_mode_metrics.h" +#include "ios/chrome/browser/pref_names.h" #import "ios/components/security_interstitials/https_only_mode/https_only_mode_allowlist.h" #import "ios/components/security_interstitials/https_only_mode/https_only_mode_blocking_page.h" #include "ios/components/security_interstitials/https_only_mode/https_only_mode_container.h" @@ -106,9 +108,24 @@ return allow_list->IsHttpAllowedForHost(url.host()); } +// static +void HttpsOnlyModeUpgradeTabHelper::CreateForWebState(web::WebState* web_state, + PrefService* prefs) { + DCHECK(web_state); + DCHECK(prefs); + if (!FromWebState(web_state)) { + web_state->SetUserData( + UserDataKey(), + base::WrapUnique(new HttpsOnlyModeUpgradeTabHelper(web_state, prefs))); + } +} + HttpsOnlyModeUpgradeTabHelper::HttpsOnlyModeUpgradeTabHelper( - web::WebState* web_state) - : web::WebStatePolicyDecider(web_state), was_upgraded_(false) { + web::WebState* web_state, + PrefService* prefs) + : web::WebStatePolicyDecider(web_state), + was_upgraded_(false), + prefs_(prefs) { web_state->AddObserver(this); } @@ -288,6 +305,12 @@ DCHECK(item_pending); // Upgrade to HTTPS if the navigation wasn't upgraded before. if (!item_pending->IsUpgradedToHttps()) { + if (!prefs_ || !prefs_->GetBoolean(prefs::kHttpsOnlyModeEnabled)) { + // Feature is disabled, don't upgrade. + std::move(callback).Run( + web::WebStatePolicyDecider::PolicyDecision::Allow()); + return; + } DCHECK(!stopped_loading_to_upgrade_); // Copy navigation parameters, then cancel the current navigation. http_url_ = url;
diff --git a/ios/chrome/browser/https_upgrades/https_only_mode_upgrade_tab_helper_unittest.mm b/ios/chrome/browser/https_upgrades/https_only_mode_upgrade_tab_helper_unittest.mm index d857e40..e00bc6b 100644 --- a/ios/chrome/browser/https_upgrades/https_only_mode_upgrade_tab_helper_unittest.mm +++ b/ios/chrome/browser/https_upgrades/https_only_mode_upgrade_tab_helper_unittest.mm
@@ -6,6 +6,10 @@ #include "base/test/metrics/histogram_tester.h" #include "base/test/scoped_feature_list.h" +#include "base/test/task_environment.h" +#include "components/prefs/pref_service.h" +#include "ios/chrome/browser/browser_state/test_chrome_browser_state.h" +#include "ios/chrome/browser/pref_names.h" #include "ios/components/security_interstitials/https_only_mode/https_only_mode_allowlist.h" #include "ios/components/security_interstitials/https_only_mode/https_only_mode_container.h" #import "ios/web/public/navigation/web_state_policy_decider.h" @@ -21,10 +25,16 @@ class HttpsOnlyModeUpgradeTabHelperTest : public PlatformTest { protected: HttpsOnlyModeUpgradeTabHelperTest() { - HttpsOnlyModeUpgradeTabHelper::CreateForWebState(&web_state_); + TestChromeBrowserState::Builder builder; + browser_state_ = builder.Build(); + + HttpsOnlyModeUpgradeTabHelper::CreateForWebState( + &web_state_, browser_state_->GetPrefs()); HttpsOnlyModeContainer::CreateForWebState(&web_state_); HttpsOnlyModeAllowlist::CreateForWebState(&web_state_); allowlist_ = HttpsOnlyModeAllowlist::FromWebState(&web_state_); + + browser_state_->GetPrefs()->SetBoolean(prefs::kHttpsOnlyModeEnabled, true); } // Helper function that calls into WebState::ShouldAllowResponse with the @@ -60,6 +70,8 @@ private: HttpsOnlyModeAllowlist* allowlist_; + std::unique_ptr<ChromeBrowserState> browser_state_; + base::test::TaskEnvironment task_environment_; }; // Tests that ShouldAllowResponse properly upgrades navigations and
diff --git a/ios/chrome/browser/pref_names.cc b/ios/chrome/browser/pref_names.cc index b81f2cf1..021d7fb6 100644 --- a/ios/chrome/browser/pref_names.cc +++ b/ios/chrome/browser/pref_names.cc
@@ -165,4 +165,7 @@ // NTP Location policy. const char kNewTabPageLocationOverride[] = "ios.ntp.location_override"; +// A boolean specifying whether HTTPS-Only Mode is enabled. +const char kHttpsOnlyModeEnabled[] = "ios.https_only_mode_enabled"; + } // namespace prefs
diff --git a/ios/chrome/browser/pref_names.h b/ios/chrome/browser/pref_names.h index f1c73af..ec71979 100644 --- a/ios/chrome/browser/pref_names.h +++ b/ios/chrome/browser/pref_names.h
@@ -55,6 +55,8 @@ extern const char kNewTabPageLocationOverride[]; +extern const char kHttpsOnlyModeEnabled[]; + } // namespace prefs #endif // IOS_CHROME_BROWSER_PREF_NAMES_H_
diff --git a/ios/chrome/browser/prefs/browser_prefs.mm b/ios/chrome/browser/prefs/browser_prefs.mm index c6f2301..e2faaff 100644 --- a/ios/chrome/browser/prefs/browser_prefs.mm +++ b/ios/chrome/browser/prefs/browser_prefs.mm
@@ -329,6 +329,8 @@ registry->RegisterBooleanPref(kShowReadingListInBookmarkBar, true); registry->RegisterBooleanPref(kOptimizationGuideRemoteFetchingEnabled, true); + + registry->RegisterBooleanPref(prefs::kHttpsOnlyModeEnabled, false); } // This method should be periodically pruned of year+ old migrations.
diff --git a/ios/chrome/browser/tabs/tab_helper_util.mm b/ios/chrome/browser/tabs/tab_helper_util.mm index 70b0d69..ea79f09 100644 --- a/ios/chrome/browser/tabs/tab_helper_util.mm +++ b/ios/chrome/browser/tabs/tab_helper_util.mm
@@ -86,7 +86,6 @@ #import "ios/chrome/browser/web/session_state/web_session_state_tab_helper.h" #import "ios/chrome/browser/web/web_performance_metrics/web_performance_metrics_tab_helper.h" #import "ios/chrome/browser/webui/net_export_tab_helper.h" -#import "ios/components/security_interstitials/https_only_mode/feature.h" #import "ios/components/security_interstitials/https_only_mode/https_only_mode_allowlist.h" #import "ios/components/security_interstitials/https_only_mode/https_only_mode_container.h" #import "ios/components/security_interstitials/ios_blocking_page_tab_helper.h" @@ -237,12 +236,10 @@ RepostFormTabHelper::CreateForWebState(web_state); NetExportTabHelper::CreateForWebState(web_state); - if (base::FeatureList::IsEnabled( - security_interstitials::features::kHttpsOnlyMode)) { - HttpsOnlyModeUpgradeTabHelper::CreateForWebState(web_state); - HttpsOnlyModeContainer::CreateForWebState(web_state); - HttpsOnlyModeAllowlist::CreateForWebState(web_state); - } + HttpsOnlyModeUpgradeTabHelper::CreateForWebState(web_state, + browser_state->GetPrefs()); + HttpsOnlyModeContainer::CreateForWebState(web_state); + HttpsOnlyModeAllowlist::CreateForWebState(web_state); if (IsWebChannelsEnabled()) { FollowTabHelper::CreateForWebState(web_state);
diff --git a/ios/chrome/browser/ui/settings/privacy/BUILD.gn b/ios/chrome/browser/ui/settings/privacy/BUILD.gn index 1a0b926..597979ed 100644 --- a/ios/chrome/browser/ui/settings/privacy/BUILD.gn +++ b/ios/chrome/browser/ui/settings/privacy/BUILD.gn
@@ -64,6 +64,7 @@ "//ios/chrome/common/ui/colors", "//ios/chrome/common/ui/reauthentication", "//ios/chrome/common/ui/table_view:cells_constants", + "//ios/components/security_interstitials/https_only_mode:feature", "//ios/public/provider/chrome/browser", "//ui/base", ]
diff --git a/ios/chrome/browser/ui/settings/privacy/privacy_table_view_controller.mm b/ios/chrome/browser/ui/settings/privacy/privacy_table_view_controller.mm index 247ce28a..289b52e 100644 --- a/ios/chrome/browser/ui/settings/privacy/privacy_table_view_controller.mm +++ b/ios/chrome/browser/ui/settings/privacy/privacy_table_view_controller.mm
@@ -44,6 +44,7 @@ #import "ios/chrome/common/ui/reauthentication/reauthentication_protocol.h" #include "ios/chrome/grit/ios_chromium_strings.h" #include "ios/chrome/grit/ios_strings.h" +#include "ios/components/security_interstitials/https_only_mode/feature.h" #include "ui/base/l10n/l10n_util.h" #include "ui/base/l10n/l10n_util_mac.h" #include "url/gurl.h" @@ -69,6 +70,7 @@ ItemTypeIncognitoReauth, ItemTypeIncognitoReauthFooter, ItemTypePrivacySafeBrowsing, + ItemTypeHTTPSOnlyMode, }; // Only used in this class to openn the Sync and Google services settings. @@ -105,6 +107,12 @@ // Authentication module used when the user toggles the biometric auth on. @property(nonatomic, strong) id<ReauthenticationProtocol> reauthModule; +// Accessor for the HTTPS-Only Mode pref. +@property(nonatomic, strong) PrefBackedBoolean* HTTPSOnlyModePref; + +// The item related to the switch for the "HTTPS Only Mode" setting. +@property(nonatomic, strong) TableViewSwitchItem* HTTPSOnlyModeItem; + @end @implementation PrivacyTableViewController @@ -144,6 +152,11 @@ initWithPrefService:GetApplicationContext()->GetLocalState() prefName:prefs::kIncognitoAuthenticationSetting]; [_incognitoReauthPref setObserver:self]; + + _HTTPSOnlyModePref = [[PrefBackedBoolean alloc] + initWithPrefService:prefService + prefName:prefs::kHttpsOnlyModeEnabled]; + [_HTTPSOnlyModePref setObserver:self]; } return self; } @@ -210,10 +223,31 @@ forSectionWithIdentifier:SectionIdentifierIncognitoAuth]; } } + + if (base::FeatureList::IsEnabled( + security_interstitials::features::kHttpsOnlyMode)) { + [model addItem:self.HTTPSOnlyModeItem + toSectionWithIdentifier:SectionIdentifierPrivacyContent]; + } } #pragma mark - Model Objects +- (TableViewSwitchItem*)HTTPSOnlyModeItem { + if (!_HTTPSOnlyModeItem) { + _HTTPSOnlyModeItem = + [[TableViewSwitchItem alloc] initWithType:ItemTypeHTTPSOnlyMode]; + + _HTTPSOnlyModeItem.text = + l10n_util::GetNSString(IDS_IOS_SETTINGS_HTTPS_ONLY_MODE_TITLE); + _HTTPSOnlyModeItem.detailText = + l10n_util::GetNSString(IDS_IOS_SETTINGS_HTTPS_ONLY_MODE_DESCRIPTION); + _HTTPSOnlyModeItem.on = [self.HTTPSOnlyModePref value]; + _HTTPSOnlyModeItem.accessibilityIdentifier = kSettingsHttpsOnlyModeCellId; + } + return _HTTPSOnlyModeItem; +} + - (TableViewItem*)handoffDetailItem { NSString* detailText = _browserState->GetPrefs()->GetBoolean(prefs::kIosHandoffToOtherDevices) @@ -375,8 +409,13 @@ [switchCell.switchView addTarget:self action:@selector(switchTapped:) forControlEvents:UIControlEventTouchUpInside]; + } else if (itemType == ItemTypeHTTPSOnlyMode) { + TableViewSwitchCell* switchCell = + base::mac::ObjCCastStrict<TableViewSwitchCell>(cell); + [switchCell.switchView addTarget:self + action:@selector(HTTPSOnlyModeTapped:) + forControlEvents:UIControlEventTouchUpInside]; } - return cell; } @@ -406,6 +445,9 @@ // Update the cell. self.incognitoReauthItem.on = self.incognitoReauthPref.value; [self reconfigureCellsForItems:@[ self.incognitoReauthItem ]]; + + self.HTTPSOnlyModeItem.on = self.HTTPSOnlyModePref.value; + [self reconfigureCellsForItems:@[ self.HTTPSOnlyModeItem ]]; } #pragma mark - TableViewLinkHeaderFooterItemDelegate @@ -424,6 +466,15 @@ #pragma mark - private +// Called from the HTTPS-Only Mode setting's UIControlEventTouchUpInside. +// When this is called, |switchView| already has the updated value: +// If the switch was off, and user taps it, when this method is called, +// switchView.on is YES. +- (void)HTTPSOnlyModeTapped:(UISwitch*)switchView { + BOOL isOn = switchView.isOn; + [_HTTPSOnlyModePref setValue:isOn]; +} + // Called from the reauthentication setting's UIControlEventTouchUpInside. // When this is called, |switchView| already has the updated value: // If the switch was off, and user taps it, when this method is called,
diff --git a/ios/chrome/browser/ui/settings/settings_table_view_controller_constants.h b/ios/chrome/browser/ui/settings/settings_table_view_controller_constants.h index ed68157..d10c24c 100644 --- a/ios/chrome/browser/ui/settings/settings_table_view_controller_constants.h +++ b/ios/chrome/browser/ui/settings/settings_table_view_controller_constants.h
@@ -146,4 +146,6 @@ // The accessibility identifier of the default browser settings TableView. extern NSString* const kDefaultBrowserSettingsTableViewId; +extern NSString* const kSettingsHttpsOnlyModeCellId; + #endif // IOS_CHROME_BROWSER_UI_SETTINGS_SETTINGS_TABLE_VIEW_CONTROLLER_CONSTANTS_H_
diff --git a/ios/chrome/browser/ui/settings/settings_table_view_controller_constants.mm b/ios/chrome/browser/ui/settings/settings_table_view_controller_constants.mm index a416df6e..97f41b2 100644 --- a/ios/chrome/browser/ui/settings/settings_table_view_controller_constants.mm +++ b/ios/chrome/browser/ui/settings/settings_table_view_controller_constants.mm
@@ -54,3 +54,4 @@ @"kSettingsDefaultSiteModeCellId"; NSString* const kDefaultBrowserSettingsTableViewId = @"kDefaultBrowserSettingsTableViewId"; +NSString* const kSettingsHttpsOnlyModeCellId = @"kSettingsHttpsOnlyModeCellId";
diff --git a/ios/chrome/browser/web/BUILD.gn b/ios/chrome/browser/web/BUILD.gn index edd43ee..b8b005f 100644 --- a/ios/chrome/browser/web/BUILD.gn +++ b/ios/chrome/browser/web/BUILD.gn
@@ -430,6 +430,7 @@ "//components/version_info:version_info", "//ios/chrome/app/strings", "//ios/chrome/browser:chrome_url_constants", + "//ios/chrome/browser:pref_names", "//ios/chrome/browser/metrics:eg_test_support+eg2", "//ios/chrome/browser/ui/infobars/banners:public", "//ios/chrome/browser/ui/popup_menu:constants",
diff --git a/ios/chrome/browser/web/https_only_mode_egtest.mm b/ios/chrome/browser/web/https_only_mode_egtest.mm index a631aaa..85ed975 100644 --- a/ios/chrome/browser/web/https_only_mode_egtest.mm +++ b/ios/chrome/browser/web/https_only_mode_egtest.mm
@@ -14,6 +14,7 @@ #include "components/security_interstitials/core/https_only_mode_metrics.h" #include "components/strings/grit/components_strings.h" #include "ios/chrome/browser/metrics/metrics_app_interface.h" +#include "ios/chrome/browser/pref_names.h" #import "ios/chrome/browser/web/https_only_mode_app_interface.h" #import "ios/chrome/test/earl_grey/chrome_earl_grey.h" #import "ios/chrome/test/earl_grey/chrome_earl_grey_ui.h" @@ -177,6 +178,8 @@ [HttpsOnlyModeAppInterface setHTTPPortForTesting:self.testServer->port()]; [HttpsOnlyModeAppInterface useFakeHTTPSForTesting:false]; [HttpsOnlyModeAppInterface setFallbackDelayForTesting:kVeryLongTimeout]; + + [ChromeEarlGrey setBoolValue:YES forUserPref:prefs::kHttpsOnlyModeEnabled]; } - (void)tearDown { @@ -268,6 +271,27 @@ #pragma mark - Tests +// Disable the feature and navigate to an HTTP URL directly. Since the feature +// is disabled, this should load the HTTP URL even though the upgraded HTTPS +// version serves good SSL. +- (void)testUpgrade_FeatureDisabled_NoUpgrade { + [ChromeEarlGrey setBoolValue:NO forUserPref:prefs::kHttpsOnlyModeEnabled]; + + [HttpsOnlyModeAppInterface setHTTPPortForTesting:self.testServer->port()]; + [HttpsOnlyModeAppInterface + setHTTPSPortForTesting:self.goodHTTPSServer->port()]; + [HttpsOnlyModeAppInterface useFakeHTTPSForTesting:true]; + + GURL testURL = self.testServer->GetURL("/"); + [ChromeEarlGrey loadURL:testURL]; + [ChromeEarlGrey waitForWebStateContainingText:"HTTP_RESPONSE"]; + GREYAssertNil([MetricsAppInterface + expectTotalCount:0 + forHistogram:@(security_interstitials::https_only_mode:: + kEventHistogram)], + @"Shouldn't record event histogram"); +} + // Navigate to an HTTP URL directly. The upgraded HTTPS version serves good SSL. // This should end up loading the HTTPS version of the URL. - (void)testUpgrade_GoodHTTPS {
diff --git a/media/base/video_bitrate_allocation.cc b/media/base/video_bitrate_allocation.cc index cf01aa2..8c66ffb3 100644 --- a/media/base/video_bitrate_allocation.cc +++ b/media/base/video_bitrate_allocation.cc
@@ -98,6 +98,10 @@ return sum_bitrate_; } +Bitrate::Mode VideoBitrateAllocation::GetMode() const { + return sum_bitrate_.mode(); +} + std::string VideoBitrateAllocation::ToString() const { size_t num_active_spatial_layers = 0; size_t num_temporal_layers[kMaxSpatialLayers] = {};
diff --git a/media/base/video_bitrate_allocation.h b/media/base/video_bitrate_allocation.h index 62a3cc4..18c3f19 100644 --- a/media/base/video_bitrate_allocation.h +++ b/media/base/video_bitrate_allocation.h
@@ -64,6 +64,9 @@ // bps equals the sum of the layers' bitrates. const Bitrate GetSumBitrate() const; + // Returns the encoding rate control mode of this allocation. + Bitrate::Mode GetMode() const; + std::string ToString() const; bool operator==(const VideoBitrateAllocation& other) const;
diff --git a/media/base/video_bitrate_allocation_unittest.cc b/media/base/video_bitrate_allocation_unittest.cc index 7ab8fdf0..7606827d 100644 --- a/media/base/video_bitrate_allocation_unittest.cc +++ b/media/base/video_bitrate_allocation_unittest.cc
@@ -12,19 +12,19 @@ TEST(VideoBitrateAllocationTest, Constructor_DefaultsModeConstant) { VideoBitrateAllocation allocation; - ASSERT_EQ(allocation.GetSumBitrate().mode(), Bitrate::Mode::kConstant); + ASSERT_EQ(allocation.GetMode(), Bitrate::Mode::kConstant); } TEST(VideoBitrateAllocationTest, Constructor_ConstantBitrate_CorrectMode) { VideoBitrateAllocation allocation(Bitrate::Mode::kConstant); - ASSERT_EQ(allocation.GetSumBitrate().mode(), Bitrate::Mode::kConstant); + ASSERT_EQ(allocation.GetMode(), Bitrate::Mode::kConstant); } TEST(VideoBitrateAllocationTest, Constructor_VariableBitrate_CorrectMode) { VideoBitrateAllocation allocation(Bitrate::Mode::kVariable); - ASSERT_EQ(allocation.GetSumBitrate().mode(), Bitrate::Mode::kVariable); + ASSERT_EQ(allocation.GetMode(), Bitrate::Mode::kVariable); } TEST(VideoBitrateAllocationTest,
diff --git a/media/gpu/v4l2/test/av1_decoder.cc b/media/gpu/v4l2/test/av1_decoder.cc index 2844280..399e1cf2 100644 --- a/media/gpu/v4l2/test/av1_decoder.cc +++ b/media/gpu/v4l2/test/av1_decoder.cc
@@ -12,6 +12,12 @@ namespace v4l2_test { +constexpr uint32_t kNumberOfBuffersInCaptureQueue = 10; + +static_assert(kNumberOfBuffersInCaptureQueue <= 16, + "Too many CAPTURE buffers are used. The number of CAPTURE " + "buffers is currently assumed to be no larger than 16."); + Av1Decoder::Av1Decoder(std::unique_ptr<IvfParser> ivf_parser, std::unique_ptr<V4L2IoctlShim> v4l2_ioctl, std::unique_ptr<V4L2Queue> OUTPUT_queue, @@ -118,6 +124,82 @@ ivf_frame_data_, ivf_frame_header_.frame_size); } +std::set<int> Av1Decoder::RefreshReferenceSlots( + uint8_t refresh_frame_flags, + libgav1::RefCountedBufferPtr current_frame, + scoped_refptr<MmapedBuffer> buffer, + uint32_t last_queued_buffer_index) { + static_assert( + kAv1NumRefFrames == sizeof(refresh_frame_flags) * CHAR_BIT, + "|refresh_frame_flags| size must be equal to |kAv1NumRefFrames|"); + + const std::bitset<kAv1NumRefFrames> refresh_frame_slots(refresh_frame_flags); + + std::set<int> reusable_buffer_ids; + + constexpr uint8_t kRefreshFrameFlagsNone = 0; + if (refresh_frame_flags == kRefreshFrameFlagsNone) { + // Indicates to reuse currently decoded CAPTURE buffer. + reusable_buffer_ids.insert(buffer->buffer_id()); + + return reusable_buffer_ids; + } + + constexpr uint8_t kRefreshFrameFlagsAll = 0xFF; + if (refresh_frame_flags == kRefreshFrameFlagsAll) { + // After decoding a key frame, all CAPTURE buffers can be reused except the + // CAPTURE buffer corresponding to the key frame. + for (size_t i = 0; i < kNumberOfBuffersInCaptureQueue; i++) + reusable_buffer_ids.insert(i); + + reusable_buffer_ids.erase(buffer->buffer_id()); + + // Note that the CAPTURE buffer for previous frame can be used as well, + // but it is already queued again at this point. + reusable_buffer_ids.erase(last_queued_buffer_index); + + // Updates to assign current key frame as a reference frame for all + // reference frame slots in the reference frames list. + ref_frames_.fill(buffer); + + return reusable_buffer_ids; + } + + // More than one slot in |refresh_frame_flags| can be set. + for (size_t i = 0; i < kAv1NumRefFrames; i++) { + if (!refresh_frame_slots[i]) + continue; + + // It is not required to check whether existing reference frame slot is + // already pointing to a reference frame. This is because reference + // frame slots are empty only after the first key frame decoding. + const uint16_t reusable_candidate_buffer_id = ref_frames_[i]->buffer_id(); + reusable_buffer_ids.insert(reusable_candidate_buffer_id); + + // Checks to make sure |reusable_candidate_buffer_id| is not used in + // different reference frame slots in the reference frames list. If + // |reusable_candidate_buffer_id| is already being used, then it is no + // longer qualified as a reusable buffer. Thus, it is removed from + // |reusable_buffer_ids|. + for (size_t j = 0; j < kAv1NumRefFrames; j++) { + const bool is_refresh_slot_not_used = (refresh_frame_slots[j] == false); + const bool is_candidate_used = + (ref_frames_[j]->buffer_id() == reusable_candidate_buffer_id); + + if (is_refresh_slot_not_used && is_candidate_used) { + reusable_buffer_ids.erase(reusable_candidate_buffer_id); + break; + } + } + ref_frames_[i] = buffer; + } + + state_->UpdateReferenceFrames(current_frame, + base::strict_cast<int>(refresh_frame_flags)); + + return reusable_buffer_ids; +} + VideoDecoder::Result Av1Decoder::DecodeNextFrame(std::vector<char>& y_plane, std::vector<char>& u_plane, std::vector<char>& v_plane, @@ -151,7 +233,28 @@ if (!v4l2_ioctl_->QBuf(OUTPUT_queue_, 0)) LOG(FATAL) << "VIDIOC_QBUF failed for OUTPUT queue."; - // TODO(b/228534725): add changes to support reference frames management + // TODO(b/230891887): use uint64_t when v4l2_timeval_to_ns() function is used. + constexpr uint32_t kInvalidSurface = std::numeric_limits<uint32_t>::max(); + + for (const auto ref_frame_index : + current_frame_header.reference_frame_index) { + LOG_ASSERT(ref_frame_index < kAv1NumRefFrames) + << "Invalid reference frame index.\n"; + + constexpr size_t kTimestampToNanoSecs = 1000; + + // |reference_id| is needed to use previously decoded frames + // from reference frames list. + const auto reference_id = + ref_frames_[ref_frame_index] + ? ref_frames_[ref_frame_index]->frame_number() * + kTimestampToNanoSecs + : kInvalidSurface; + + // TODO(stevecho): add setup for frame parameters using |reference_id| + // when av1 kernel header is ready. + ANALYZER_ALLOW_UNUSED(reference_id); + } // TODO(b/228534730): add changes to prepare parameters for V4L2 AV1 stateless // decoding @@ -172,6 +275,19 @@ if (!v4l2_ioctl_->MediaRequestIocReinit(OUTPUT_queue_)) LOG(FATAL) << "MEDIA_REQUEST_IOC_REINIT failed."; + const std::set<int> reusable_buffer_ids = + RefreshReferenceSlots(current_frame_header.refresh_frame_flags, + current_frame, CAPTURE_queue_->GetBuffer(index), + CAPTURE_queue_->last_queued_buffer_index()); + + for (const auto reusable_buffer_id : reusable_buffer_ids) { + if (!v4l2_ioctl_->QBuf(CAPTURE_queue_, reusable_buffer_id)) + LOG(ERROR) << "VIDIOC_QBUF failed for CAPTURE queue."; + + if (!libgav1::IsIntraFrame(current_frame_header.frame_type)) + CAPTURE_queue_->set_last_queued_buffer_index(reusable_buffer_id); + } + return VideoDecoder::kOk; }
diff --git a/media/gpu/v4l2/test/av1_decoder.h b/media/gpu/v4l2/test/av1_decoder.h index 074dab8..e66957b 100644 --- a/media/gpu/v4l2/test/av1_decoder.h +++ b/media/gpu/v4l2/test/av1_decoder.h
@@ -8,12 +8,19 @@ #include "media/gpu/v4l2/test/v4l2_ioctl_shim.h" #include "media/gpu/v4l2/test/video_decoder.h" +#include <set> + #include "media/filters/ivf_parser.h" // For libgav1::ObuSequenceHeader. absl::optional demands ObuSequenceHeader to // fulfill std::is_trivially_constructible if it is forward-declared. But // ObuSequenceHeader doesn't. #include "third_party/libgav1/src/src/obu_parser.h" +// TODO(stevecho): Remove ANALYZER_ALLOW_UNUSED() later if this is added later +// in base/logging.h for Chromium. Note that this already exists in +// base/logging.h for ChromeOS. +#define ANALYZER_ALLOW_UNUSED(var) static_cast<void>(var); + // TODO(stevecho): This is temporary until the change to define // V4L2_PIX_FMT_AV1_FRAME lands in videodev2.h. // https://patchwork.linuxtv.org/project/linux-media/patch/20210810220552.298140-2-daniel.almeida@collabora.com/ @@ -32,6 +39,8 @@ namespace v4l2_test { +constexpr int8_t kAv1NumRefFrames = libgav1::kNumReferenceFrameTypes; + // A Av1Decoder decodes AV1-encoded IVF streams using v4l2 ioctl calls. class Av1Decoder : public VideoDecoder { public: @@ -80,6 +89,18 @@ void CopyFrameData(const libgav1::ObuFrameHeader& frame_hdr, std::unique_ptr<V4L2Queue>& queue); + // Refreshes |ref_frames_| slots with the current |buffer| and refreshes + // |state_| with |current_frame|. Returns |reusable_buffer_slots| to indicate + // which CAPTURE buffers can be reused for VIDIOC_QBUF ioctl call. + std::set<int> RefreshReferenceSlots( + uint8_t refresh_frame_flags, + libgav1::RefCountedBufferPtr current_frame, + scoped_refptr<MmapedBuffer> buffer, + uint32_t last_queued_buffer_index); + + // Reference frames currently in use. + std::array<scoped_refptr<MmapedBuffer>, kAv1NumRefFrames> ref_frames_; + IvfFrameHeader ivf_frame_header_{}; const uint8_t* ivf_frame_data_ = nullptr;
diff --git a/media/gpu/v4l2/test/v4l2_ioctl_shim.h b/media/gpu/v4l2/test/v4l2_ioctl_shim.h index 1a6279b5..7a1249b 100644 --- a/media/gpu/v4l2/test/v4l2_ioctl_shim.h +++ b/media/gpu/v4l2/test/v4l2_ioctl_shim.h
@@ -17,9 +17,7 @@ namespace v4l2_test { // MmapedBuffer maintains |mmaped_planes_| for each buffer as well as -// |reference_id_|. Reference ID is computed from buffer ID, which is an -// index used for VIDIOC_REQBUFS ioctl call. Reference ID is needed to use -// previously decoded frames from reference frames list. +// |buffer_id_|. |buffer_id_| is an index used for VIDIOC_REQBUFS ioctl call. class MmapedBuffer : public base::RefCounted<MmapedBuffer> { public: MmapedBuffer(const base::PlatformFile decode_fd, @@ -100,6 +98,8 @@ uint32_t num_planes() const { return num_planes_; } void set_num_planes(uint32_t num_planes) { num_planes_ = num_planes; } + // TODO(stevecho): change naming from |last_queued_buffer_index| to + // |last_queued_buffer_id| uint32_t last_queued_buffer_index() const { return last_queued_buffer_index_; }
diff --git a/media/mojo/mojom/video_encode_accelerator_mojom_traits.h b/media/mojo/mojom/video_encode_accelerator_mojom_traits.h index dd3c309e..7430b716 100644 --- a/media/mojo/mojom/video_encode_accelerator_mojom_traits.h +++ b/media/mojo/mojom/video_encode_accelerator_mojom_traits.h
@@ -84,8 +84,7 @@ static absl::optional<uint32_t> variable_bitrate_peak( const media::VideoBitrateAllocation& bitrate_allocation) { - if (bitrate_allocation.GetSumBitrate().mode() == - media::Bitrate::Mode::kConstant) { + if (bitrate_allocation.GetMode() == media::Bitrate::Mode::kConstant) { return absl::nullopt; } else { return absl::optional<uint32_t>(
diff --git a/media/renderers/video_frame_rgba_to_yuva_converter.cc b/media/renderers/video_frame_rgba_to_yuva_converter.cc index 61e85ae4..9eecb98 100644 --- a/media/renderers/video_frame_rgba_to_yuva_converter.cc +++ b/media/renderers/video_frame_rgba_to_yuva_converter.cc
@@ -125,6 +125,21 @@ auto* ri = provider->RasterInterface(); DCHECK(ri); + // If context is lost for any reason e.g. creating shared image failed, we + // cannot distinguish between OOP and non-OOP raster based on GrContext(). + if (ri->GetGraphicsResetStatusKHR() != GL_NO_ERROR) { + DLOG(ERROR) << "Raster context lost."; + return false; + } + +#if BUILDFLAG(IS_WIN) + // CopyToGpuMemoryBuffer is only supported for D3D shared images on Windows. + if (!provider->ContextCapabilities().shared_image_d3d) { + DLOG(ERROR) << "CopyToGpuMemoryBuffer not supported."; + return false; + } +#endif // BUILDFLAG(IS_WIN) + if (!provider->GrContext()) { SkYUVAInfo yuva_info = VideoFrameYUVMailboxesHolder::VideoFrameGetSkYUVAInfo(dst_video_frame); @@ -179,29 +194,31 @@ const size_t num_planes = dst_video_frame->layout().num_planes(); +#if BUILDFLAG(IS_WIN) // For shared memory GMBs on Windows we needed to explicitly request a copy - // from the shared image GPU texture to the GMB. Set `completion_sync_token` - // to mark the completion of the copy. - if (dst_video_frame->HasGpuMemoryBuffer() && - dst_video_frame->GetGpuMemoryBuffer()->GetType() == - gfx::SHARED_MEMORY_BUFFER) { - auto* sii = provider->SharedImageInterface(); + // from the shared image GPU texture to the GMB. + DCHECK(dst_video_frame->HasGpuMemoryBuffer()); + DCHECK_EQ(dst_video_frame->GetGpuMemoryBuffer()->GetType(), + gfx::SHARED_MEMORY_BUFFER); - gpu::SyncToken blit_done_sync_token; - ri->GenUnverifiedSyncTokenCHROMIUM(blit_done_sync_token.GetData()); + gpu::SyncToken blit_done_sync_token; + ri->GenUnverifiedSyncTokenCHROMIUM(blit_done_sync_token.GetData()); - for (size_t plane = 0; plane < num_planes; ++plane) { - const auto& mailbox = dst_video_frame->mailbox_holder(plane).mailbox; - sii->CopyToGpuMemoryBuffer(blit_done_sync_token, mailbox); - } - - auto copy_to_gmb_done_sync_token = sii->GenUnverifiedSyncToken(); - ri->WaitSyncTokenCHROMIUM(copy_to_gmb_done_sync_token.GetData()); + auto* sii = provider->SharedImageInterface(); + for (size_t plane = 0; plane < num_planes; ++plane) { + const auto& mailbox = dst_video_frame->mailbox_holder(plane).mailbox; + sii->CopyToGpuMemoryBuffer(blit_done_sync_token, mailbox); } - // We want to generate a SyncToken from the RasterInterface since callers may - // be using RasterInterface::Finish() to ensure synchronization in cases where - // SignalSyncToken can't be used. + // Synchronize RasterInterface with SharedImageInterface. We want to generate + // the final SyncToken from the RasterInterface since callers might be using + // RasterInterface::Finish() to ensure synchronization in cases where + // SignalSyncToken can't be used (e.g. webrtc video frame adapter). + auto copy_to_gmb_done_sync_token = sii->GenUnverifiedSyncToken(); + ri->WaitSyncTokenCHROMIUM(copy_to_gmb_done_sync_token.GetData()); +#endif // BUILDFLAG(IS_WIN) + + // Set `completion_sync_token` to mark the completion of the copy. ri->GenSyncTokenCHROMIUM(completion_sync_token.GetData()); // Make access to the `dst_video_frame` wait on copy completion. We also
diff --git a/mojo/public/tools/bindings/checks/mojom_attributes_check.py b/mojo/public/tools/bindings/checks/mojom_attributes_check.py index ed22fab3..8be1329 100644 --- a/mojo/public/tools/bindings/checks/mojom_attributes_check.py +++ b/mojo/public/tools/bindings/checks/mojom_attributes_check.py
@@ -89,7 +89,6 @@ 'crosapi.mojom.RequestTextSelectionActionsStatus', 'crosapi.mojom.RequestUrlHandlerListStatus', 'crosapi.mojom.TriState', - 'network.mojom.ReferrerPolicy', }
diff --git a/net/cert/internal/common_cert_errors.cc b/net/cert/internal/common_cert_errors.cc index 9ee01d2..3aa4cef 100644 --- a/net/cert/internal/common_cert_errors.cc +++ b/net/cert/internal/common_cert_errors.cc
@@ -63,6 +63,7 @@ DEFINE_CERT_ERROR_ID(kNoIssuersFound, "No matching issuer found"); DEFINE_CERT_ERROR_ID(kDeadlineExceeded, "Deadline exceeded"); DEFINE_CERT_ERROR_ID(kIterationLimitExceeded, "Iteration limit exceeded"); +DEFINE_CERT_ERROR_ID(kDepthLimitExceeded, "Depth limit exceeded"); } // namespace cert_errors
diff --git a/net/cert/internal/common_cert_errors.h b/net/cert/internal/common_cert_errors.h index 9875eb8..46625962b 100644 --- a/net/cert/internal/common_cert_errors.h +++ b/net/cert/internal/common_cert_errors.h
@@ -139,6 +139,9 @@ // Iteration limit was reached during path building. NET_EXPORT extern const CertErrorId kIterationLimitExceeded; +// Depth limit was reached during path building. +NET_EXPORT extern const CertErrorId kDepthLimitExceeded; + } // namespace cert_errors } // namespace net
diff --git a/net/cert/internal/path_builder.cc b/net/cert/internal/path_builder.cc index a78f20b..8270275 100644 --- a/net/cert/internal/path_builder.cc +++ b/net/cert/internal/path_builder.cc
@@ -406,6 +406,9 @@ // Returns the last CertIssuersIter in the path. CertIssuersIter* back() { return cur_path_.back().get(); } + // Returns the length of the path. + size_t Length() const { return cur_path_.size(); } + std::string PathDebugString() { std::string s; for (const auto& node : cur_path_) { @@ -490,7 +493,8 @@ CertPathErrors* out_errors, const base::TimeTicks deadline, uint32_t* iteration_count, - const uint32_t max_iteration_count); + const uint32_t max_iteration_count, + const uint32_t max_path_building_depth); private: // Stores the next candidate issuer, until it is used during the @@ -527,7 +531,8 @@ CertPathErrors* out_errors, const base::TimeTicks deadline, uint32_t* iteration_count, - const uint32_t max_iteration_count) { + const uint32_t max_iteration_count, + const uint32_t max_path_building_depth) { out_certs->clear(); *out_last_cert_trust = CertificateTrust::ForUnspecified(); @@ -546,6 +551,19 @@ return false; } + // We are not done yet, so if the current path is at the depth limit then + // we must backtrack to find an acceptable solution. + if (max_path_building_depth > 0 && + cur_path_.Length() >= max_path_building_depth) { + cur_path_.CopyPath(out_certs); + out_errors->GetOtherErrors()->AddError(cert_errors::kDepthLimitExceeded); + DVLOG(1) << "CertPathIter reached depth limit. Returning partial path " + "and backtracking:\n" + << PathDebugString(*out_certs); + cur_path_.Pop(); + return true; + } + if (!next_issuer_.cert) { if (cur_path_.Empty()) { DVLOG(1) << "CertPathIter exhausted all paths..."; @@ -727,6 +745,10 @@ deadline_ = deadline; } +void CertPathBuilder::SetDepthLimit(uint32_t limit) { + max_path_building_depth_ = limit; +} + void CertPathBuilder::SetExploreAllPaths(bool explore_all_paths) { explore_all_paths_ = explore_all_paths; } @@ -738,10 +760,10 @@ std::unique_ptr<CertPathBuilderResultPath> result_path = std::make_unique<CertPathBuilderResultPath>(); - if (!cert_path_iter_->GetNextPath(&result_path->certs, - &result_path->last_cert_trust, - &result_path->errors, deadline_, - &iteration_count, max_iteration_count_)) { + if (!cert_path_iter_->GetNextPath( + &result_path->certs, &result_path->last_cert_trust, + &result_path->errors, deadline_, &iteration_count, + max_iteration_count_, max_path_building_depth_)) { // There are no more paths to check or limits were exceeded. if (result_path->errors.ContainsError( cert_errors::kIterationLimitExceeded)) {
diff --git a/net/cert/internal/path_builder.h b/net/cert/internal/path_builder.h index 531e341..99aac4a 100644 --- a/net/cert/internal/path_builder.h +++ b/net/cert/internal/path_builder.h
@@ -196,6 +196,10 @@ // will be when path building is aborted. void SetDeadline(base::TimeTicks deadline); + // Sets a limit to the number of certificates to be added in a path from leaf + // to root. Setting |limit| to 0 disables this limit, which is the default. + void SetDepthLimit(uint32_t limit); + // If |explore_all_paths| is false (the default), path building will stop as // soon as a valid path is found. If |explore_all_paths| is true, path // building will continue until all possible paths have been exhausted (or @@ -228,6 +232,7 @@ const InitialAnyPolicyInhibit initial_any_policy_inhibit_; uint32_t max_iteration_count_ = 0; base::TimeTicks deadline_; + uint32_t max_path_building_depth_ = 0; bool explore_all_paths_ = false; };
diff --git a/net/cert/internal/path_builder_unittest.cc b/net/cert/internal/path_builder_unittest.cc index 8a158a3..65aba04 100644 --- a/net/cert/internal/path_builder_unittest.cc +++ b/net/cert/internal/path_builder_unittest.cc
@@ -796,6 +796,96 @@ result.paths[0]->errors.ContainsError(cert_errors::kDeadlineExceeded)); } +TEST_F(PathBuilderMultiRootTest, TestDepthLimit) { + // D(D) is the trust root. + TrustStoreInMemory trust_store; + trust_store.AddTrustAnchor(d_by_d_); + + // Certs B(C) and C(D) are supplied. + CertIssuerSourceStatic sync_certs; + sync_certs.AddCert(b_by_c_); + sync_certs.AddCert(c_by_d_); + + for (const bool insufficient_limit : {true, false}) { + CertPathBuilder path_builder( + a_by_b_, &trust_store, &delegate_, time_, KeyPurpose::ANY_EKU, + initial_explicit_policy_, user_initial_policy_set_, + initial_policy_mapping_inhibit_, initial_any_policy_inhibit_); + path_builder.AddCertIssuerSource(&sync_certs); + + if (insufficient_limit) { + // A limit of depth equal to 2 is insufficient to build the path. + // Therefore, building is expected to fail. + path_builder.SetDepthLimit(2); + } else { + // The other tests in this file exercise the case that |SetDepthLimit| + // isn't called. Therefore, set a sufficient limit for the path to be + // found. + path_builder.SetDepthLimit(5); + } + + auto result = path_builder.Run(); + + EXPECT_EQ(!insufficient_limit, result.HasValidPath()); + EXPECT_EQ(insufficient_limit, + result.AnyPathContainsError(cert_errors::kDepthLimitExceeded)); + } +} + +TEST_F(PathBuilderMultiRootTest, TestDepthLimitMultiplePaths) { + // This case tests path building backracking due to reaching the path depth + // limit. Given the root and issuer certificates below, there can be two paths + // from between the leaf to a trusted root, one has length of 3 and the other + // has length of 4. These certificates are specifically chosen because path + // building will first explore the 4-certificate long path then the + // 3-certificate long path. So with a depth limit of 3, we can test the + // backtracking code path. + + // E(E) and C(D) are the trust roots. + TrustStoreInMemory trust_store; + trust_store.AddTrustAnchor(e_by_e_); + trust_store.AddTrustAnchor(c_by_d_); + + // Certs B(C). B(F) and F(E) are supplied. + CertIssuerSourceStatic sync_certs; + sync_certs.AddCert(b_by_c_); + sync_certs.AddCert(b_by_f_); + sync_certs.AddCert(f_by_e_); + + CertPathBuilder path_builder( + a_by_b_, &trust_store, &delegate_, time_, KeyPurpose::ANY_EKU, + initial_explicit_policy_, user_initial_policy_set_, + initial_policy_mapping_inhibit_, initial_any_policy_inhibit_); + path_builder.AddCertIssuerSource(&sync_certs); + + path_builder.SetDepthLimit(3); + + auto result = path_builder.Run(); + + EXPECT_TRUE(result.HasValidPath()); + EXPECT_TRUE(result.AnyPathContainsError(cert_errors::kDepthLimitExceeded)); + + ASSERT_EQ(result.paths.size(), 2u); + + const CertPathBuilderResultPath* truncated_path = result.paths[0].get(); + EXPECT_FALSE(truncated_path->IsValid()); + EXPECT_TRUE( + truncated_path->errors.ContainsError(cert_errors::kDepthLimitExceeded)); + ASSERT_EQ(truncated_path->certs.size(), 3u); + EXPECT_EQ(a_by_b_, truncated_path->certs[0]); + EXPECT_EQ(b_by_f_, truncated_path->certs[1]); + EXPECT_EQ(f_by_e_, truncated_path->certs[2]); + + const CertPathBuilderResultPath* valid_path = result.paths[1].get(); + EXPECT_TRUE(valid_path->IsValid()); + EXPECT_FALSE( + valid_path->errors.ContainsError(cert_errors::kDepthLimitExceeded)); + ASSERT_EQ(valid_path->certs.size(), 3u); + EXPECT_EQ(a_by_b_, valid_path->certs[0]); + EXPECT_EQ(b_by_c_, valid_path->certs[1]); + EXPECT_EQ(c_by_d_, valid_path->certs[2]); +} + #if BUILDFLAG(IS_WIN) && BUILDFLAG(CHROME_ROOT_STORE_SUPPORTED) void AddToStoreWithEKURestriction(HCERTSTORE store,
diff --git a/remoting/codec/webrtc_video_encoder_vpx.cc b/remoting/codec/webrtc_video_encoder_vpx.cc index facc0ee..087fb3f 100644 --- a/remoting/codec/webrtc_video_encoder_vpx.cc +++ b/remoting/codec/webrtc_video_encoder_vpx.cc
@@ -88,7 +88,14 @@ #if BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMEOS_LACROS) // On Linux, using too many threads for VP8 encoding has been linked to high // CPU usage on machines that are under stress. See http://crbug.com/1151148. - config->g_threads = std::min(config->g_threads, 2U); + // 5/3/2022 update: Perf testing has shown that doubling the number of threads + // on machines with a large number of cores will improve performance at higher + // desktop resolutions. Doubling the number of threads leads to ~30% increase + // in framerate at 4K. This could be increased further however we don't want + // to risk reintroducing the problem from the bug above so take the safe gains + // and leave plenty of cores for the non-remoting workload. + uint threshold = config->g_threads >= 16 ? 4U : 2U; + config->g_threads = std::min(config->g_threads, threshold); #endif // BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMEOS_LACROS) // Value of 2 means using the real time profile. This is basically a
diff --git a/remoting/host/pairing_registry_delegate_linux.cc b/remoting/host/pairing_registry_delegate_linux.cc index ca9cd35..4bbf1a6 100644 --- a/remoting/host/pairing_registry_delegate_linux.cc +++ b/remoting/host/pairing_registry_delegate_linux.cc
@@ -59,7 +59,8 @@ continue; } - pairings->Append(std::move(pairing_json)); + pairings->GetList().Append( + base::Value::FromUniquePtrValue(std::move(pairing_json))); } return pairings;
diff --git a/remoting/protocol/pairing_registry.cc b/remoting/protocol/pairing_registry.cc index 905d698..93d977f 100644 --- a/remoting/protocol/pairing_registry.cc +++ b/remoting/protocol/pairing_registry.cc
@@ -274,7 +274,8 @@ pairing.client_name(), pairing.client_id(), ""); - sanitized_pairings->Append(sanitized_pairing.ToValue()); + sanitized_pairings->GetList().Append( + base::Value::FromUniquePtrValue(sanitized_pairing.ToValue())); } std::move(callback).Run(std::move(sanitized_pairings));
diff --git a/remoting/protocol/protocol_mock_objects.cc b/remoting/protocol/protocol_mock_objects.cc index 5517ee83..00b6426 100644 --- a/remoting/protocol/protocol_mock_objects.cc +++ b/remoting/protocol/protocol_mock_objects.cc
@@ -55,7 +55,8 @@ std::unique_ptr<base::ListValue> result(new base::ListValue()); for (Pairings::const_iterator i = pairings_.begin(); i != pairings_.end(); ++i) { - result->Append(i->second.ToValue()); + result->GetList().Append( + base::Value::FromUniquePtrValue(i->second.ToValue())); } return result; }
diff --git a/services/data_decoder/public/cpp/data_decoder_unittest.cc b/services/data_decoder/public/cpp/data_decoder_unittest.cc index 589ee5e..0fc6dcf5 100644 --- a/services/data_decoder/public/cpp/data_decoder_unittest.cc +++ b/services/data_decoder/public/cpp/data_decoder_unittest.cc
@@ -81,7 +81,9 @@ DataDecoder decoder; absl::optional<base::Value> result; decoder.ParseJson( - "[ 42 ]", + // The magic 122.416294033786585 number comes from + // https://github.com/serde-rs/json/issues/707 + "[ 122.416294033786585 ]", base::BindLambdaForTesting( [&run_loop, &result](DataDecoder::ValueOrError value_or_error) { result = std::move(value_or_error.value); @@ -89,6 +91,11 @@ })); run_loop.Run(); EXPECT_TRUE(result); + ASSERT_TRUE(result->is_list()); + base::Value::List& list = result->GetList(); + ASSERT_EQ(1u, list.size()); + EXPECT_TRUE(list[0].is_double()); + EXPECT_EQ(122.416294033786585, list[0].GetDouble()); } #endif // BUILDFLAG(IS_ANDROID) || BUILDFLAG(BUILD_RUST_JSON_PARSER)
diff --git a/services/device/geolocation/network_location_provider_unittest.cc b/services/device/geolocation/network_location_provider_unittest.cc index e038d93..59a96b3 100644 --- a/services/device/geolocation/network_location_provider_unittest.cc +++ b/services/device/geolocation/network_location_provider_unittest.cc
@@ -208,15 +208,15 @@ static void CreateReferenceWifiScanDataJson( int ap_count, int start_index, - base::ListValue* wifi_access_point_list) { + base::Value::List* wifi_access_point_list) { std::vector<std::string> wifi_data; for (int i = 0; i < ap_count; ++i) { - std::unique_ptr<base::DictionaryValue> ap(new base::DictionaryValue()); - ap->SetString("macAddress", base::StringPrintf("%02d-34-56-78-54-32", i)); - ap->SetInteger("signalStrength", start_index + ap_count - i); - ap->SetInteger("age", 0); - ap->SetInteger("channel", IndexToChannel(i)); - ap->SetInteger("signalToNoiseRatio", i + 42); + base::Value::Dict ap; + ap.Set("macAddress", base::StringPrintf("%02d-34-56-78-54-32", i)); + ap.Set("signalStrength", start_index + ap_count - i); + ap.Set("age", 0); + ap.Set("channel", IndexToChannel(i)); + ap.Set("signalToNoiseRatio", i + 42); wifi_access_point_list->Append(std::move(ap)); } } @@ -293,19 +293,16 @@ ASSERT_TRUE(parsed_json->GetAsDictionary(&request_json)); if (expected_wifi_aps) { - base::ListValue expected_wifi_aps_json; + base::Value::List expected_wifi_aps_json; CreateReferenceWifiScanDataJson(expected_wifi_aps, wifi_start_index, &expected_wifi_aps_json); - EXPECT_EQ(size_t(expected_wifi_aps), - expected_wifi_aps_json.GetListDeprecated().size()); + EXPECT_EQ(size_t(expected_wifi_aps), expected_wifi_aps_json.size()); const base::ListValue* wifi_aps_json; ASSERT_TRUE( JsonGetList("wifiAccessPoints", *request_json, &wifi_aps_json)); - for (size_t i = 0; i < expected_wifi_aps_json.GetListDeprecated().size(); - ++i) { - const base::Value& expected_json_value = - expected_wifi_aps_json.GetListDeprecated()[i]; + for (size_t i = 0; i < expected_wifi_aps_json.size(); ++i) { + const base::Value& expected_json_value = expected_wifi_aps_json[i]; ASSERT_TRUE(expected_json_value.is_dict()); const base::DictionaryValue& expected_json = base::Value::AsDictionaryValue(expected_json_value);
diff --git a/services/device/geolocation/network_location_request.cc b/services/device/geolocation/network_location_request.cc index 2baccccb..033091c 100644 --- a/services/device/geolocation/network_location_request.cc +++ b/services/device/geolocation/network_location_request.cc
@@ -245,18 +245,16 @@ void AddString(const std::string& property_name, const std::string& value, - base::DictionaryValue* dict) { - DCHECK(dict); + base::Value::Dict& dict) { if (!value.empty()) - dict->SetString(property_name, value); + dict.Set(property_name, value); } void AddInteger(const std::string& property_name, int value, - base::DictionaryValue* dict) { - DCHECK(dict); + base::Value::Dict& dict) { if (value != std::numeric_limits<int32_t>::min()) - dict->SetInteger(property_name, value); + dict.Set(property_name, value); } void AddWifiData(const WifiData& wifi_data, @@ -273,22 +271,22 @@ for (const auto& ap_data : wifi_data.access_point_data) access_points_by_signal_strength.insert(&ap_data); - auto wifi_access_point_list = std::make_unique<base::ListValue>(); + base::Value::List wifi_access_point_list; for (auto* ap_data : access_points_by_signal_strength) { - auto wifi_dict = std::make_unique<base::DictionaryValue>(); + base::Value::Dict wifi_dict; auto macAddress = base::UTF16ToUTF8(ap_data->mac_address); if (macAddress.empty()) continue; - AddString("macAddress", macAddress, wifi_dict.get()); - AddInteger("signalStrength", ap_data->radio_signal_strength, - wifi_dict.get()); - AddInteger("age", age_milliseconds, wifi_dict.get()); - AddInteger("channel", ap_data->channel, wifi_dict.get()); - AddInteger("signalToNoiseRatio", ap_data->signal_to_noise, wifi_dict.get()); - wifi_access_point_list->Append(std::move(wifi_dict)); + AddString("macAddress", macAddress, wifi_dict); + AddInteger("signalStrength", ap_data->radio_signal_strength, wifi_dict); + AddInteger("age", age_milliseconds, wifi_dict); + AddInteger("channel", ap_data->channel, wifi_dict); + AddInteger("signalToNoiseRatio", ap_data->signal_to_noise, wifi_dict); + wifi_access_point_list.Append(std::move(wifi_dict)); } - if (!wifi_access_point_list->GetListDeprecated().empty()) - request->Set("wifiAccessPoints", std::move(wifi_access_point_list)); + if (!wifi_access_point_list.empty()) + request->GetDict().Set("wifiAccessPoints", + base::Value(std::move(wifi_access_point_list))); } void FormatPositionError(const GURL& server_url,
diff --git a/services/network/public/mojom/referrer_policy.mojom b/services/network/public/mojom/referrer_policy.mojom index 8a15d2e..d96a6ba 100644 --- a/services/network/public/mojom/referrer_policy.mojom +++ b/services/network/public/mojom/referrer_policy.mojom
@@ -4,10 +4,10 @@ module network.mojom; -[Stable] +[Stable, Extensible] enum ReferrerPolicy { kAlways, - kDefault, + [Default] kDefault, kNoReferrerWhenDowngrade, kNever, kOrigin,
diff --git a/storage/browser/quota/quota_database.cc b/storage/browser/quota/quota_database.cc index 07b3788..aa8d28e 100644 --- a/storage/browser/quota/quota_database.cc +++ b/storage/browser/quota/quota_database.cc
@@ -61,9 +61,11 @@ // TODO(crbug.com/1254535): Remove once enough time has passed to ensure that // this flag is no longer stored and supported in the QuotaDatabase. const char kIsOriginTableBootstrapped[] = "IsOriginTableBootstrapped"; +// Deprecated bootstrap flag, invalidated in 03/2022 as part of crbug/1306279. +const char kDeprecatedBucketsTableBootstrapped[] = "IsBucketsTableBootstrapped"; // Flag to ensure that all existing data for storage keys have been // registered into the buckets table. -const char kBucketsTableBootstrapped[] = "IsBucketsTableBootstrapped"; +const char kBucketsTableBootstrapped[] = "IsBucketsBootstrapped"; const int kCommitIntervalMs = 30000; @@ -717,6 +719,7 @@ // TODO(crbug.com/1254535): Remove once enough time has passed to ensure that // this flag is no longer stored and supported in the QuotaDatabase. meta_table_->DeleteKey(kIsOriginTableBootstrapped); + meta_table_->DeleteKey(kDeprecatedBucketsTableBootstrapped); return meta_table_->SetValue(kBucketsTableBootstrapped, bootstrap_flag) ? QuotaError::kNone
diff --git a/testing/buildbot/chromium.android.fyi.json b/testing/buildbot/chromium.android.fyi.json index 233a1481..27e93022 100644 --- a/testing/buildbot/chromium.android.fyi.json +++ b/testing/buildbot/chromium.android.fyi.json
@@ -8414,7 +8414,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M101", - "revision": "version:101.0.4951.57" + "revision": "version:101.0.4951.58" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -8918,7 +8918,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M101", - "revision": "version:101.0.4951.57" + "revision": "version:101.0.4951.58" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
diff --git a/testing/buildbot/chromium.android.json b/testing/buildbot/chromium.android.json index 3cc0f36..abc63c91 100644 --- a/testing/buildbot/chromium.android.json +++ b/testing/buildbot/chromium.android.json
@@ -46159,7 +46159,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M101", - "revision": "version:101.0.4951.57" + "revision": "version:101.0.4951.58" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -46663,7 +46663,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M101", - "revision": "version:101.0.4951.57" + "revision": "version:101.0.4951.58" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -47171,7 +47171,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M101", - "revision": "version:101.0.4951.57" + "revision": "version:101.0.4951.58" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -47675,7 +47675,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M101", - "revision": "version:101.0.4951.57" + "revision": "version:101.0.4951.58" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -48250,7 +48250,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M101", - "revision": "version:101.0.4951.57" + "revision": "version:101.0.4951.58" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -48754,7 +48754,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M101", - "revision": "version:101.0.4951.57" + "revision": "version:101.0.4951.58" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -49329,7 +49329,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M101", - "revision": "version:101.0.4951.57" + "revision": "version:101.0.4951.58" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -49833,7 +49833,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M101", - "revision": "version:101.0.4951.57" + "revision": "version:101.0.4951.58" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
diff --git a/testing/buildbot/chromium.chromiumos.json b/testing/buildbot/chromium.chromiumos.json index 68267cb1..ec40ceb 100644 --- a/testing/buildbot/chromium.chromiumos.json +++ b/testing/buildbot/chromium.chromiumos.json
@@ -5851,21 +5851,21 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v102.0.5005.6/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v103.0.5030.0/test_ash_chrome" ], "isolate_profile_data": true, "merge": { "args": [], "script": "//testing/merge_scripts/standard_gtest_merge.py" }, - "name": "lacros_chrome_browsertests Lacros version skew testing ash 102.0.5005.6", + "name": "lacros_chrome_browsertests Lacros version skew testing ash 103.0.5030.0", "swarming": { "can_use_on_swarming_builders": true, "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v102.0.5005.6", - "revision": "version:102.0.5005.6" + "location": "lacros_version_skew_tests_v103.0.5030.0", + "revision": "version:103.0.5030.0" } ], "dimension_sets": [ @@ -5993,21 +5993,21 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v102.0.5005.6/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v103.0.5030.0/test_ash_chrome" ], "isolate_profile_data": true, "merge": { "args": [], "script": "//testing/merge_scripts/standard_gtest_merge.py" }, - "name": "lacros_chrome_browsertests_run_in_series Lacros version skew testing ash 102.0.5005.6", + "name": "lacros_chrome_browsertests_run_in_series Lacros version skew testing ash 103.0.5030.0", "swarming": { "can_use_on_swarming_builders": true, "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v102.0.5005.6", - "revision": "version:102.0.5005.6" + "location": "lacros_version_skew_tests_v103.0.5030.0", + "revision": "version:103.0.5030.0" } ], "dimension_sets": [
diff --git a/testing/buildbot/chromium.fyi.json b/testing/buildbot/chromium.fyi.json index e1d0115..ad64b13 100644 --- a/testing/buildbot/chromium.fyi.json +++ b/testing/buildbot/chromium.fyi.json
@@ -86938,21 +86938,21 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v102.0.5005.6/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v103.0.5030.0/test_ash_chrome" ], "isolate_profile_data": true, "merge": { "args": [], "script": "//testing/merge_scripts/standard_gtest_merge.py" }, - "name": "lacros_chrome_browsertests Lacros version skew testing ash 102.0.5005.6", + "name": "lacros_chrome_browsertests Lacros version skew testing ash 103.0.5030.0", "swarming": { "can_use_on_swarming_builders": true, "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v102.0.5005.6", - "revision": "version:102.0.5005.6" + "location": "lacros_version_skew_tests_v103.0.5030.0", + "revision": "version:103.0.5030.0" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -87055,21 +87055,21 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v102.0.5005.6/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v103.0.5030.0/test_ash_chrome" ], "isolate_profile_data": true, "merge": { "args": [], "script": "//testing/merge_scripts/standard_gtest_merge.py" }, - "name": "lacros_chrome_browsertests_run_in_series Lacros version skew testing ash 102.0.5005.6", + "name": "lacros_chrome_browsertests_run_in_series Lacros version skew testing ash 103.0.5030.0", "swarming": { "can_use_on_swarming_builders": true, "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v102.0.5005.6", - "revision": "version:102.0.5005.6" + "location": "lacros_version_skew_tests_v103.0.5030.0", + "revision": "version:103.0.5030.0" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -88442,20 +88442,20 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v102.0.5005.6/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v103.0.5030.0/test_ash_chrome" ], "merge": { "args": [], "script": "//testing/merge_scripts/standard_gtest_merge.py" }, - "name": "lacros_chrome_browsertests Lacros version skew testing ash 102.0.5005.6", + "name": "lacros_chrome_browsertests Lacros version skew testing ash 103.0.5030.0", "swarming": { "can_use_on_swarming_builders": true, "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v102.0.5005.6", - "revision": "version:102.0.5005.6" + "location": "lacros_version_skew_tests_v103.0.5030.0", + "revision": "version:103.0.5030.0" } ], "dimension_sets": [ @@ -88584,20 +88584,20 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v102.0.5005.6/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v103.0.5030.0/test_ash_chrome" ], "merge": { "args": [], "script": "//testing/merge_scripts/standard_gtest_merge.py" }, - "name": "lacros_chrome_browsertests_run_in_series Lacros version skew testing ash 102.0.5005.6", + "name": "lacros_chrome_browsertests_run_in_series Lacros version skew testing ash 103.0.5030.0", "swarming": { "can_use_on_swarming_builders": true, "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v102.0.5005.6", - "revision": "version:102.0.5005.6" + "location": "lacros_version_skew_tests_v103.0.5030.0", + "revision": "version:103.0.5030.0" } ], "dimension_sets": [ @@ -90139,20 +90139,20 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v102.0.5005.6/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v103.0.5030.0/test_ash_chrome" ], "merge": { "args": [], "script": "//testing/merge_scripts/standard_gtest_merge.py" }, - "name": "lacros_chrome_browsertests Lacros version skew testing ash 102.0.5005.6", + "name": "lacros_chrome_browsertests Lacros version skew testing ash 103.0.5030.0", "swarming": { "can_use_on_swarming_builders": true, "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v102.0.5005.6", - "revision": "version:102.0.5005.6" + "location": "lacros_version_skew_tests_v103.0.5030.0", + "revision": "version:103.0.5030.0" } ], "dimension_sets": [ @@ -90281,20 +90281,20 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v102.0.5005.6/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v103.0.5030.0/test_ash_chrome" ], "merge": { "args": [], "script": "//testing/merge_scripts/standard_gtest_merge.py" }, - "name": "lacros_chrome_browsertests_run_in_series Lacros version skew testing ash 102.0.5005.6", + "name": "lacros_chrome_browsertests_run_in_series Lacros version skew testing ash 103.0.5030.0", "swarming": { "can_use_on_swarming_builders": true, "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v102.0.5005.6", - "revision": "version:102.0.5005.6" + "location": "lacros_version_skew_tests_v103.0.5030.0", + "revision": "version:103.0.5030.0" } ], "dimension_sets": [ @@ -91038,20 +91038,20 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.interactive_ui_tests.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v102.0.5005.6/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v103.0.5030.0/test_ash_chrome" ], "merge": { "args": [], "script": "//testing/merge_scripts/standard_gtest_merge.py" }, - "name": "interactive_ui_tests Lacros version skew testing ash 102.0.5005.6", + "name": "interactive_ui_tests Lacros version skew testing ash 103.0.5030.0", "swarming": { "can_use_on_swarming_builders": true, "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v102.0.5005.6", - "revision": "version:102.0.5005.6" + "location": "lacros_version_skew_tests_v103.0.5030.0", + "revision": "version:103.0.5030.0" } ], "dimension_sets": [
diff --git a/testing/buildbot/chromium.perf.json b/testing/buildbot/chromium.perf.json index a20da35..6745b37 100644 --- a/testing/buildbot/chromium.perf.json +++ b/testing/buildbot/chromium.perf.json
@@ -1054,6 +1054,45 @@ } ] }, + "chromeos-arm-generic-lacros-builder-perf": { + "additional_compile_targets": [ + "chrome", + "lacros_version_metadata" + ], + "isolated_scripts": [ + { + "args": [ + "--arch=arm32" + ], + "isolate_name": "resource_sizes_lacros_chrome", + "merge": { + "script": "//tools/perf/process_perf_results.py" + }, + "name": "resource_sizes_lacros_chrome", + "override_compile_targets": [ + "resource_sizes_lacros_chrome" + ], + "resultdb": { + "has_native_resultdb_integration": true + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "cpu": "x86-64", + "os": "Ubuntu-18.04", + "pool": "chrome.tests" + } + ], + "expiration": 7200, + "hard_timeout": 21600, + "ignore_task_failure": false, + "io_timeout": 21600, + "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com" + } + } + ] + }, "lacros-eve-perf": { "isolated_scripts": [ {
diff --git a/testing/buildbot/variants.pyl b/testing/buildbot/variants.pyl index 5306d09..1584e1e5 100644 --- a/testing/buildbot/variants.pyl +++ b/testing/buildbot/variants.pyl
@@ -37,15 +37,15 @@ }, 'LACROS_VERSION_SKEW_DEV': { 'args': [ - '--ash-chrome-path-override=../../lacros_version_skew_tests_v102.0.5005.6/test_ash_chrome', + '--ash-chrome-path-override=../../lacros_version_skew_tests_v103.0.5030.0/test_ash_chrome', ], - 'identifier': 'Lacros version skew testing ash 102.0.5005.6', + 'identifier': 'Lacros version skew testing ash 103.0.5030.0', 'swarming': { 'cipd_packages': [ { 'cipd_package': 'chromium/testing/linux-ash-chromium/x86_64/ash.zip', - 'location': 'lacros_version_skew_tests_v102.0.5005.6', - 'revision': 'version:102.0.5005.6', + 'location': 'lacros_version_skew_tests_v103.0.5030.0', + 'revision': 'version:103.0.5030.0', }, ], }, @@ -485,7 +485,7 @@ { 'cipd_package': 'chromium/testing/weblayer-x86', 'location': 'weblayer_instrumentation_test_M101', - 'revision': 'version:101.0.4951.57', + 'revision': 'version:101.0.4951.58', } ], }, @@ -629,7 +629,7 @@ { 'cipd_package': 'chromium/testing/weblayer-x86', 'location': 'weblayer_instrumentation_test_M101', - 'revision': 'version:101.0.4951.57', + 'revision': 'version:101.0.4951.58', } ], }, @@ -773,7 +773,7 @@ { 'cipd_package': 'chromium/testing/weblayer-x86', 'location': 'weblayer_instrumentation_test_M101', - 'revision': 'version:101.0.4951.57', + 'revision': 'version:101.0.4951.58', } ], },
diff --git a/testing/variations/fieldtrial_testing_config.json b/testing/variations/fieldtrial_testing_config.json index 107700b1..75ace7a 100644 --- a/testing/variations/fieldtrial_testing_config.json +++ b/testing/variations/fieldtrial_testing_config.json
@@ -8674,7 +8674,6 @@ }, { "platforms": [ - "chromeos", "chromeos_lacros" ], "experiments": [
diff --git a/third_party/blink/renderer/bindings/generated_in_modules.gni b/third_party/blink/renderer/bindings/generated_in_modules.gni index d575821..3fb9e92 100644 --- a/third_party/blink/renderer/bindings/generated_in_modules.gni +++ b/third_party/blink/renderer/bindings/generated_in_modules.gni
@@ -219,8 +219,6 @@ "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_canvas_rendering_context_2d_settings.h", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_capture_handle.cc", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_capture_handle.h", - "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_capture_handle_change_event_init.cc", - "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_capture_handle_change_event_init.h", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_capture_handle_config.cc", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_capture_handle_config.h", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_channel_merger_options.cc", @@ -1563,8 +1561,6 @@ "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_canvas_pattern.h", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_canvas_rendering_context_2d.cc", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_canvas_rendering_context_2d.h", - "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_capture_handle_change_event.cc", - "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_capture_handle_change_event.h", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_channel_merger_node.cc", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_channel_merger_node.h", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_channel_splitter_node.cc",
diff --git a/third_party/blink/renderer/bindings/idl_in_modules.gni b/third_party/blink/renderer/bindings/idl_in_modules.gni index 87c6a4f..29c5f9968 100644 --- a/third_party/blink/renderer/bindings/idl_in_modules.gni +++ b/third_party/blink/renderer/bindings/idl_in_modules.gni
@@ -412,8 +412,6 @@ "//third_party/blink/renderer/modules/mediasource/video_track_source_buffer.idl", "//third_party/blink/renderer/modules/mediastream/browser_capture_media_stream_track.idl", "//third_party/blink/renderer/modules/mediastream/capture_handle.idl", - "//third_party/blink/renderer/modules/mediastream/capture_handle_change_event.idl", - "//third_party/blink/renderer/modules/mediastream/capture_handle_change_event_init.idl", "//third_party/blink/renderer/modules/mediastream/capture_handle_config.idl", "//third_party/blink/renderer/modules/mediastream/constrain_boolean_parameters.idl", "//third_party/blink/renderer/modules/mediastream/constrain_dom_string_parameters.idl",
diff --git a/third_party/blink/renderer/core/html/html_frame_element.cc b/third_party/blink/renderer/core/html/html_frame_element.cc index 52b8fe1f..848a50f 100644 --- a/third_party/blink/renderer/core/html/html_frame_element.cc +++ b/third_party/blink/renderer/core/html/html_frame_element.cc
@@ -42,9 +42,11 @@ return ContentFrame(); } -LayoutObject* HTMLFrameElement::CreateLayoutObject(const ComputedStyle&, - LegacyLayout) { - return MakeGarbageCollected<LayoutFrame>(this); +LayoutObject* HTMLFrameElement::CreateLayoutObject(const ComputedStyle& style, + LegacyLayout legacy) { + if (IsA<HTMLFrameSetElement>(parentNode())) + return MakeGarbageCollected<LayoutFrame>(this); + return LayoutObject::CreateObject(this, style, legacy); } bool HTMLFrameElement::NoResize() const {
diff --git a/third_party/blink/renderer/core/layout/ng/ng_layout_input_node.h b/third_party/blink/renderer/core/layout/ng/ng_layout_input_node.h index 2559c77..4f670a6 100644 --- a/third_party/blink/renderer/core/layout/ng/ng_layout_input_node.h +++ b/third_party/blink/renderer/core/layout/ng/ng_layout_input_node.h
@@ -89,7 +89,6 @@ return IsFloating() || IsOutOfFlowPositioned(); } bool IsReplaced() const { return box_->IsLayoutReplaced(); } - bool IsFrame() const { return box_->IsFrame(); } bool IsAbsoluteContainer() const { return box_->CanContainAbsolutePositionObjects(); }
diff --git a/third_party/blink/renderer/core/layout/ng/ng_length_utils.cc b/third_party/blink/renderer/core/layout/ng/ng_length_utils.cc index 79ef5b9..a40bb2a 100644 --- a/third_party/blink/renderer/core/layout/ng/ng_length_utils.cc +++ b/third_party/blink/renderer/core/layout/ng/ng_length_utils.cc
@@ -860,14 +860,6 @@ ReplacedSizeMode mode) { DCHECK(node.IsReplaced()); - // TODO(crbug.com/1203464): <frame> elements can be dynamically inserted - // into the DOM even though they really only make sense within a <frameset>. - // Today, outside a <frameset> they are always 0x0 (even ignoring - // border/padding). When outside a <frameset> they likely should create a - // LayoutInline instead. - if (node.IsFrame()) - return LogicalSize(); - LogicalSize size_override = node.GetReplacedSizeOverrideIfAny(space); if (!size_override.IsEmpty()) { DCHECK_GE(size_override.block_size, border_padding.BlockSum());
diff --git a/third_party/blink/renderer/modules/BUILD.gn b/third_party/blink/renderer/modules/BUILD.gn index ddc26df..837ff568 100644 --- a/third_party/blink/renderer/modules/BUILD.gn +++ b/third_party/blink/renderer/modules/BUILD.gn
@@ -309,8 +309,6 @@ "hid/hid_input_report_event.idl", "indexeddb/idb_version_change_event.idl", "mediarecorder/blob_event.idl", - "mediastream/capture_handle_change_event.idl", - "mediastream/capture_handle_change_event_init.idl", "mediastream/media_stream_event.idl", "mediastream/media_stream_track_event.idl", "nfc/ndef_reading_event.idl",
diff --git a/third_party/blink/renderer/modules/credentialmanagement/credentials_container.cc b/third_party/blink/renderer/modules/credentialmanagement/credentials_container.cc index b614d5b..ea008c7 100644 --- a/third_party/blink/renderer/modules/credentialmanagement/credentials_container.cc +++ b/third_party/blink/renderer/modules/credentialmanagement/credentials_container.cc
@@ -37,6 +37,7 @@ #include "third_party/blink/renderer/bindings/modules/v8/v8_payment_credential_instrument.h" #include "third_party/blink/renderer/bindings/modules/v8/v8_public_key_credential_creation_options.h" #include "third_party/blink/renderer/bindings/modules/v8/v8_public_key_credential_descriptor.h" +#include "third_party/blink/renderer/bindings/modules/v8/v8_public_key_credential_parameters.h" #include "third_party/blink/renderer/bindings/modules/v8/v8_public_key_credential_request_options.h" #include "third_party/blink/renderer/bindings/modules/v8/v8_public_key_credential_rp_entity.h" #include "third_party/blink/renderer/bindings/modules/v8/v8_public_key_credential_user_entity.h" @@ -1401,6 +1402,27 @@ "Ignoring unknown publicKey.authenticatorSelection.residentKey " "value")); } + // An empty list uses default algorithm identifiers. + if (options->publicKey()->pubKeyCredParams().size() != 0) { + WTF::HashSet<int16_t> algorithm_set; + for (const auto& param : options->publicKey()->pubKeyCredParams()) { + // 0 and -1 are special values that cannot be inserted into the HashSet. + if (param->alg() != 0 && param->alg() != -1) + algorithm_set.insert(param->alg()); + } + if (!algorithm_set.Contains(-7) || !algorithm_set.Contains(-257)) { + resolver->DomWindow()->AddConsoleMessage( + MakeGarbageCollected<ConsoleMessage>( + mojom::blink::ConsoleMessageSource::kJavaScript, + mojom::blink::ConsoleMessageLevel::kWarning, + "publicKey.pubKeyCredParams is missing at least one of the " + "default algorithm identifiers: ES256 and RS256. This can " + "result in registration failures on incompatible " + "authenticators. See " + "https://chromium.googlesource.com/chromium/src/+/master/" + "content/browser/webauth/pub_key_cred_params.md for details")); + } + } auto mojo_options = MojoPublicKeyCredentialCreationOptions::From(*options->publicKey());
diff --git a/third_party/blink/renderer/modules/mediastream/BUILD.gn b/third_party/blink/renderer/modules/mediastream/BUILD.gn index d424c13..a107753 100644 --- a/third_party/blink/renderer/modules/mediastream/BUILD.gn +++ b/third_party/blink/renderer/modules/mediastream/BUILD.gn
@@ -12,8 +12,6 @@ "apply_constraints_request.h", "browser_capture_media_stream_track.cc", "browser_capture_media_stream_track.h", - "capture_handle_change_event.cc", - "capture_handle_change_event.h", "dom_window_media_stream.h", "focusable_media_stream_track.cc", "focusable_media_stream_track.h",
diff --git a/third_party/blink/renderer/modules/mediastream/capture_handle_change_event.cc b/third_party/blink/renderer/modules/mediastream/capture_handle_change_event.cc deleted file mode 100644 index bdee3f1..0000000 --- a/third_party/blink/renderer/modules/mediastream/capture_handle_change_event.cc +++ /dev/null
@@ -1,46 +0,0 @@ -// Copyright 2021 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "third_party/blink/renderer/modules/mediastream/capture_handle_change_event.h" - -#include "third_party/blink/renderer/bindings/modules/v8/v8_capture_handle.h" - -namespace blink { - -CaptureHandleChangeEvent::CaptureHandleChangeEvent( - const AtomicString& type, - CaptureHandle* capture_handle) - : Event(type, Bubbles::kNo, Cancelable::kNo), - capture_handle_(capture_handle) {} - -CaptureHandleChangeEvent* CaptureHandleChangeEvent::Create( - const AtomicString& type, - const CaptureHandleChangeEventInit* initializer) { - return MakeGarbageCollected<CaptureHandleChangeEvent>(type, initializer); -} - -CaptureHandleChangeEvent::CaptureHandleChangeEvent( - const AtomicString& type, - const CaptureHandleChangeEventInit* initializer) - : Event(type, initializer), - capture_handle_(initializer->hasCaptureHandle() - ? initializer->captureHandle() - : nullptr) {} - -CaptureHandleChangeEvent::~CaptureHandleChangeEvent() = default; - -CaptureHandle* CaptureHandleChangeEvent::captureHandle() const { - return capture_handle_ ? capture_handle_.Get() : nullptr; -} - -const AtomicString& CaptureHandleChangeEvent::InterfaceName() const { - return event_interface_names::kCaptureHandleChangeEvent; -} - -void CaptureHandleChangeEvent::Trace(Visitor* visitor) const { - visitor->Trace(capture_handle_); - Event::Trace(visitor); -} - -} // namespace blink
diff --git a/third_party/blink/renderer/modules/mediastream/capture_handle_change_event.h b/third_party/blink/renderer/modules/mediastream/capture_handle_change_event.h deleted file mode 100644 index f713b25..0000000 --- a/third_party/blink/renderer/modules/mediastream/capture_handle_change_event.h +++ /dev/null
@@ -1,42 +0,0 @@ -// Copyright 2021 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef THIRD_PARTY_BLINK_RENDERER_MODULES_MEDIASTREAM_CAPTURE_HANDLE_CHANGE_EVENT_H_ -#define THIRD_PARTY_BLINK_RENDERER_MODULES_MEDIASTREAM_CAPTURE_HANDLE_CHANGE_EVENT_H_ - -#include "third_party/blink/renderer/bindings/modules/v8/v8_capture_handle_change_event_init.h" -#include "third_party/blink/renderer/modules/event_modules.h" -#include "third_party/blink/renderer/modules/modules_export.h" -#include "third_party/blink/renderer/platform/wtf/text/atomic_string.h" - -namespace blink { - -class CaptureHandle; - -class MODULES_EXPORT CaptureHandleChangeEvent final : public Event { - DEFINE_WRAPPERTYPEINFO(); - - public: - ~CaptureHandleChangeEvent() override; - - static CaptureHandleChangeEvent* Create(const AtomicString& type, - const CaptureHandleChangeEventInit*); - - CaptureHandleChangeEvent(const AtomicString& type, CaptureHandle*); - CaptureHandleChangeEvent(const AtomicString& type, - const CaptureHandleChangeEventInit*); - - CaptureHandle* captureHandle() const; - - // Implement Event - const AtomicString& InterfaceName() const override; - void Trace(Visitor*) const override; - - private: - Member<CaptureHandle> capture_handle_; -}; - -} // namespace blink - -#endif // THIRD_PARTY_BLINK_RENDERER_MODULES_MEDIASTREAM_CAPTURE_HANDLE_CHANGE_EVENT_H_
diff --git a/third_party/blink/renderer/modules/mediastream/capture_handle_change_event.idl b/third_party/blink/renderer/modules/mediastream/capture_handle_change_event.idl deleted file mode 100644 index 8ff7502..0000000 --- a/third_party/blink/renderer/modules/mediastream/capture_handle_change_event.idl +++ /dev/null
@@ -1,11 +0,0 @@ -// Copyright 2021 The Chromium Authors. All rihts reserved. -// Use of this source code is governed by a BST-style license that can be -// found in the LICENSE file. - -// https://w3c.github.io/mediacapture-handle/identity/ -[ - Exposed = Window, RuntimeEnabled = CaptureHandle -] interface CaptureHandleChangeEvent : Event { - constructor(DOMString type, CaptureHandleChangeEventInit eventInitDict); - [SameObject] CaptureHandle? captureHandle(); -};
diff --git a/third_party/blink/renderer/modules/mediastream/capture_handle_change_event_init.idl b/third_party/blink/renderer/modules/mediastream/capture_handle_change_event_init.idl deleted file mode 100644 index 07ee2aa..0000000 --- a/third_party/blink/renderer/modules/mediastream/capture_handle_change_event_init.idl +++ /dev/null
@@ -1,8 +0,0 @@ -// Copyright 2021 The Chromium Authors. All rihts reserved. -// Use of this source code is governed by a BST-style license that can be -// found in the LICENSE file. - -// https://w3c.github.io/mediacapture-handle/identity/ -dictionary CaptureHandleChangeEventInit : EventInit { - CaptureHandle captureHandle; -};
diff --git a/third_party/blink/renderer/modules/mediastream/media_stream_track_impl.cc b/third_party/blink/renderer/modules/mediastream/media_stream_track_impl.cc index b4f0c763..0fd7b5c 100644 --- a/third_party/blink/renderer/modules/mediastream/media_stream_track_impl.cc +++ b/third_party/blink/renderer/modules/mediastream/media_stream_track_impl.cc
@@ -34,8 +34,6 @@ #include "third_party/blink/public/platform/modules/webrtc/webrtc_logging.h" #include "third_party/blink/public/web/modules/mediastream/media_stream_video_source.h" #include "third_party/blink/renderer/bindings/core/v8/script_promise_resolver.h" -#include "third_party/blink/renderer/bindings/modules/v8/v8_capture_handle_change_event.h" -#include "third_party/blink/renderer/bindings/modules/v8/v8_capture_handle_change_event_init.h" #include "third_party/blink/renderer/bindings/modules/v8/v8_double_range.h" #include "third_party/blink/renderer/bindings/modules/v8/v8_long_range.h" #include "third_party/blink/renderer/bindings/modules/v8/v8_media_track_capabilities.h" @@ -50,7 +48,6 @@ #include "third_party/blink/renderer/modules/imagecapture/image_capture.h" #include "third_party/blink/renderer/modules/mediastream/apply_constraints_request.h" #include "third_party/blink/renderer/modules/mediastream/browser_capture_media_stream_track.h" -#include "third_party/blink/renderer/modules/mediastream/capture_handle_change_event.h" #include "third_party/blink/renderer/modules/mediastream/media_constraints_impl.h" #include "third_party/blink/renderer/modules/mediastream/media_error_state.h" #include "third_party/blink/renderer/modules/mediastream/media_stream.h" @@ -820,24 +817,14 @@ SendLogMessage(String::Format("%s()", __func__)); } -void MediaStreamTrackImpl::SourceChangedCaptureHandle( - media::mojom::CaptureHandlePtr capture_handle_ptr) { +void MediaStreamTrackImpl::SourceChangedCaptureHandle() { + DCHECK(IsMainThread()); + if (Ended()) { return; } - CaptureHandleChangeEventInit* init = CaptureHandleChangeEventInit::Create(); - if (capture_handle_ptr) { - CaptureHandle* const capture_handle = CaptureHandle::Create(); - if (!capture_handle_ptr->origin.opaque()) { - capture_handle->setOrigin(capture_handle_ptr->origin.Serialize().c_str()); - } - capture_handle->setHandle(capture_handle_ptr->capture_handle.c_str()); - init->setCaptureHandle(capture_handle); - } - - DispatchEvent(*CaptureHandleChangeEvent::Create( - event_type_names::kCapturehandlechange, init)); + DispatchEvent(*Event::Create(event_type_names::kCapturehandlechange)); } void MediaStreamTrackImpl::PropagateTrackEnded() {
diff --git a/third_party/blink/renderer/modules/mediastream/media_stream_track_impl.h b/third_party/blink/renderer/modules/mediastream/media_stream_track_impl.h index 02eaac3..5ee27cc2 100644 --- a/third_party/blink/renderer/modules/mediastream/media_stream_track_impl.h +++ b/third_party/blink/renderer/modules/mediastream/media_stream_track_impl.h
@@ -155,7 +155,7 @@ // MediaStreamSource::Observer void SourceChangedState() override; - void SourceChangedCaptureHandle(media::mojom::CaptureHandlePtr) override; + void SourceChangedCaptureHandle() override; void PropagateTrackEnded(); void applyConstraintsImageCapture(ScriptPromiseResolver*,
diff --git a/third_party/blink/renderer/modules/mediastream/transferred_media_stream_track.cc b/third_party/blink/renderer/modules/mediastream/transferred_media_stream_track.cc index d37e5be..f4564db 100644 --- a/third_party/blink/renderer/modules/mediastream/transferred_media_stream_track.cc +++ b/third_party/blink/renderer/modules/mediastream/transferred_media_stream_track.cc
@@ -13,8 +13,6 @@ #include "third_party/blink/public/platform/modules/webrtc/webrtc_logging.h" #include "third_party/blink/public/web/modules/mediastream/media_stream_video_source.h" #include "third_party/blink/renderer/bindings/core/v8/script_promise_resolver.h" -#include "third_party/blink/renderer/bindings/modules/v8/v8_capture_handle_change_event.h" -#include "third_party/blink/renderer/bindings/modules/v8/v8_capture_handle_change_event_init.h" #include "third_party/blink/renderer/bindings/modules/v8/v8_double_range.h" #include "third_party/blink/renderer/bindings/modules/v8/v8_long_range.h" #include "third_party/blink/renderer/bindings/modules/v8/v8_media_track_capabilities.h" @@ -30,7 +28,6 @@ #include "third_party/blink/renderer/modules/imagecapture/image_capture.h" #include "third_party/blink/renderer/modules/mediastream/apply_constraints_request.h" #include "third_party/blink/renderer/modules/mediastream/browser_capture_media_stream_track.h" -#include "third_party/blink/renderer/modules/mediastream/capture_handle_change_event.h" #include "third_party/blink/renderer/modules/mediastream/media_constraints_impl.h" #include "third_party/blink/renderer/modules/mediastream/media_error_state.h" #include "third_party/blink/renderer/modules/mediastream/media_stream.h"
diff --git a/third_party/blink/renderer/modules/mediastream/user_media_processor.cc b/third_party/blink/renderer/modules/mediastream/user_media_processor.cc index 14ece615..2f4766d 100644 --- a/third_party/blink/renderer/modules/mediastream/user_media_processor.cc +++ b/third_party/blink/renderer/modules/mediastream/user_media_processor.cc
@@ -1205,7 +1205,7 @@ MediaStreamSource* source = FindLocalSource(device); if (!source) { - // This happens if the same device is used in several guM requests or + // This happens if the same device is used in several gUM requests or // if a user happens to stop a track from JS at the same time // as the underlying media device is unplugged from the system. return;
diff --git a/third_party/blink/renderer/platform/graphics/gpu/drawing_buffer.cc b/third_party/blink/renderer/platform/graphics/gpu/drawing_buffer.cc index c18b65fa..ccc5638 100644 --- a/third_party/blink/renderer/platform/graphics/gpu/drawing_buffer.cc +++ b/third_party/blink/renderer/platform/graphics/gpu/drawing_buffer.cc
@@ -51,6 +51,7 @@ #include "gpu/command_buffer/common/shared_image_usage.h" #include "gpu/config/gpu_driver_bug_workaround_type.h" #include "gpu/config/gpu_feature_info.h" +#include "media/base/video_frame.h" #include "third_party/blink/public/platform/platform.h" #include "third_party/blink/public/web/blink.h" #include "third_party/blink/renderer/platform/graphics/accelerated_static_bitmap_image.h" @@ -1103,7 +1104,8 @@ unpack_premultiply_alpha_needed = GL_TRUE; auto copy_function = [&](const gpu::MailboxHolder& src_mailbox, - viz::ResourceFormat, gfx::Size, gfx::ColorSpace) { + viz::ResourceFormat, const gfx::Size&, + const gfx::ColorSpace&) { GLuint src_texture = dst_gl->CreateAndTexStorage2DSharedImageCHROMIUM( src_mailbox.mailbox.name); dst_gl->BeginSharedImageAccessDirectCHROMIUM( @@ -1155,14 +1157,34 @@ const GrSurfaceOrigin src_surface_origin = src_origin_is_top_left ? kTopLeft_GrSurfaceOrigin : kBottomLeft_GrSurfaceOrigin; - auto copy_function = [&](const gpu::MailboxHolder& src_mailbox, - viz::ResourceFormat src_format, - const gfx::Size& src_size, - const gfx::ColorSpace src_color_space) { - frame_pool->CopyRGBATextureToVideoFrame( - src_format, src_size, src_color_space, src_surface_origin, src_mailbox, - dst_color_space, std::move(callback)); - }; + // Split the callback so that one can be consumed by the copy if it succeeds, + // and the other can be used to restore the original callback reference. + auto split_callback = base::SplitOnceCallback(std::move(callback)); + // Restore the original callback; we will reset it below if the copy succeeds. + callback = std::move(split_callback.first); + + // Frame pool copy callback that wraps the original (split) callback. + auto frame_pool_callback = base::BindOnce( + [](WebGraphicsContext3DVideoFramePool::FrameReadyCallback callback, + scoped_refptr<media::VideoFrame> video_frame) { + // Only run callback if copy succeeds, otherwise caller will handle + // failure e.g. HTMLCanvasElement fallback to static bitmap image copy. + if (video_frame) + std::move(callback).Run(std::move(video_frame)); + }, + std::move(split_callback.second)); + + auto copy_function = + [&](const gpu::MailboxHolder& src_mailbox, viz::ResourceFormat src_format, + const gfx::Size& src_size, const gfx::ColorSpace& src_color_space) { + if (frame_pool->CopyRGBATextureToVideoFrame( + src_format, src_size, src_color_space, src_surface_origin, + src_mailbox, dst_color_space, std::move(frame_pool_callback))) { + // This method indicates success by consuming the callback argument + // so do that if the copy has consumed the wrapped split callback. + callback.Reset(); + } + }; // Ensure that `frame_pool` has not experienced a context loss. // https://crbug.com/1269230 auto* raster_interface = frame_pool->GetRasterInterface();
diff --git a/third_party/blink/renderer/platform/graphics/gpu/drawing_buffer.h b/third_party/blink/renderer/platform/graphics/gpu/drawing_buffer.h index afc436b..994fc8bb 100644 --- a/third_party/blink/renderer/platform/graphics/gpu/drawing_buffer.h +++ b/third_party/blink/renderer/platform/graphics/gpu/drawing_buffer.h
@@ -455,6 +455,8 @@ gpu::SyncToken receive_sync_token; }; + // CopyFunction(const gpu::MailboxHolder&, viz::ResourceFormat, + // const gfx::Size&, const gfx::ColorSpace&) template <typename CopyFunction> bool CopyToPlatformInternal(gpu::InterfaceBase* dst_interface, SourceDrawingBuffer src_buffer,
diff --git a/third_party/blink/renderer/platform/graphics/web_graphics_context_3d_video_frame_pool.cc b/third_party/blink/renderer/platform/graphics/web_graphics_context_3d_video_frame_pool.cc index 7a1b3b3..b7a22ee 100644 --- a/third_party/blink/renderer/platform/graphics/web_graphics_context_3d_video_frame_pool.cc +++ b/third_party/blink/renderer/platform/graphics/web_graphics_context_3d_video_frame_pool.cc
@@ -132,6 +132,13 @@ if (!raster_context_provider) return false; +#if BUILDFLAG(IS_WIN) + // CopyRGBATextureToVideoFrame below needs D3D shared images on Windows so + // early out before creating the GMB since it's going to fail anyway. + if (!context_provider->GetCapabilities().shared_image_d3d) + return false; +#endif // BUILDFLAG(IS_WIN) + scoped_refptr<media::VideoFrame> dst_frame = pool_->MaybeCreateVideoFrame(src_size, dst_color_space); if (!dst_frame)
diff --git a/third_party/blink/renderer/platform/media/web_media_player_impl.cc b/third_party/blink/renderer/platform/media/web_media_player_impl.cc index e3a241a..4974dfd 100644 --- a/third_party/blink/renderer/platform/media/web_media_player_impl.cc +++ b/third_party/blink/renderer/platform/media/web_media_player_impl.cc
@@ -1056,26 +1056,30 @@ SetReadyState(WebMediaPlayer::kReadyStateHaveMetadata); // When paused or ended, we know exactly what the current time is and can - // elide seeks to it. However, there are two cases that are not elided: + // elide seeks to it. However, there are three cases that are not elided: // 1) When the pipeline state is not stable. - // In this case we just let `pipeline_controller_` decide what to do, as + // In this case we just let PipelineController decide what to do, as // it has complete information. - // 2) For MSE. + // 2) When the ready state was not kReadyStateHaveEnoughData. + // If playback has not started, it's possible to enter a state where + // OnBufferingStateChange() will not be called again to complete the + // seek. + // 3) For MSE. // Because the buffers may have changed between seeks, MSE seeks are // never elided. if (paused_ && pipeline_controller_->IsStable() && (paused_time_ == time || (ended_ && time == base::Seconds(Duration()))) && !chunk_demuxer_) { - // If the ready state was high enough before, we can indicate that the seek - // completed just by restoring it. Otherwise we will just wait for the real - // ready state change to eventually happen. if (old_state == kReadyStateHaveEnoughData) { + // This will in turn SetReadyState() to signal the demuxer seek, followed + // by timeChanged() to signal the renderer seek. + should_notify_time_changed_ = true; main_task_runner_->PostTask( FROM_HERE, base::BindOnce(&WebMediaPlayerImpl::OnBufferingStateChange, weak_this_, media::BUFFERING_HAVE_ENOUGH, media::BUFFERING_CHANGE_REASON_UNKNOWN)); + return; } - return; } if (playback_events_recorder_)
diff --git a/third_party/blink/renderer/platform/mediastream/media_stream_source.cc b/third_party/blink/renderer/platform/mediastream/media_stream_source.cc index b451df0..8a049e8 100644 --- a/third_party/blink/renderer/platform/mediastream/media_stream_source.cc +++ b/third_party/blink/renderer/platform/mediastream/media_stream_source.cc
@@ -320,14 +320,14 @@ capture_handle = device.display_media_info->capture_handle.Clone(); } - platform_source_->SetCaptureHandle(capture_handle.Clone()); + platform_source_->SetCaptureHandle(std::move(capture_handle)); // Observers may dispatch events which create and add new Observers; // take a snapshot so as to safely iterate. HeapVector<Member<Observer>> observers; CopyToVector(observers_, observers); for (auto observer : observers) { - observer->SourceChangedCaptureHandle(capture_handle.Clone()); + observer->SourceChangedCaptureHandle(); } }
diff --git a/third_party/blink/renderer/platform/mediastream/media_stream_source.h b/third_party/blink/renderer/platform/mediastream/media_stream_source.h index 2eef0f8..3b425c14 100644 --- a/third_party/blink/renderer/platform/mediastream/media_stream_source.h +++ b/third_party/blink/renderer/platform/mediastream/media_stream_source.h
@@ -67,7 +67,7 @@ public: virtual ~Observer() = default; virtual void SourceChangedState() = 0; - virtual void SourceChangedCaptureHandle(media::mojom::CaptureHandlePtr) = 0; + virtual void SourceChangedCaptureHandle() = 0; }; enum StreamType { kTypeAudio, kTypeVideo };
diff --git a/third_party/blink/web_tests/TestExpectations b/third_party/blink/web_tests/TestExpectations index 83064c5d..bc274152 100644 --- a/third_party/blink/web_tests/TestExpectations +++ b/third_party/blink/web_tests/TestExpectations
@@ -29,9 +29,6 @@ # Temporarily disabled for DevTools. crbug.com/1304217 http/tests/devtools/text-source-map.js [ Skip ] -# Temporarily disabled while making DevTools change -crbug.com/1192230 http/tests/devtools/network/network-serviceworker-timing-view.js [ Skip ] - # Expected to time out. external/wpt/infrastructure/expected-fail/timeout.html [ Timeout ] external/wpt/infrastructure/reftest/reftest_ref_timeout.html [ Timeout ]
diff --git a/third_party/blink/web_tests/external/Version b/third_party/blink/web_tests/external/Version index b2fa1300..91e5ce8 100644 --- a/third_party/blink/web_tests/external/Version +++ b/third_party/blink/web_tests/external/Version
@@ -1 +1 @@ -Version: 146851fc385ee6e4c1a7c2434c41a9c170489438 +Version: db8efb66ba8b51b53c3578ab12139f1f786c1747
diff --git a/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json b/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json index e7ee737..dd23fcf 100644 --- a/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json +++ b/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json
@@ -234545,6 +234545,19 @@ } }, "popups": { + "popup-backdrop-appearance.tentative.html": [ + "7dcd401b4c92381dd4aca796378d1b3d32836f7c", + [ + null, + [ + [ + "/html/semantics/popups/popup-backdrop-appearance-ref.tentative.html", + "==" + ] + ], + {} + ] + ], "popup-defaultopen-display.tentative.html": [ "179e07189b31ec4b97ef3aa6ca61765388b781f8", [ @@ -309880,6 +309893,10 @@ } }, "popups": { + "popup-backdrop-appearance-ref.tentative.html": [ + "9ae95c2f8ffd2d03d90b6eca4a1f3834bfc3cf42", + [] + ], "popup-defaultopen-display-ref.tentative.html": [ "db1a3f2b044d174781a6c5ba961b7b43c21611ce", [] @@ -459501,6 +459518,15 @@ ] } }, + "sections-and-headings": { + "headings-styles.html": [ + "63e6a83e883d7dbbf600165746fc61b016ae6053", + [ + null, + {} + ] + ] + }, "tables": { "form-in-tables-xhtml.xhtml": [ "6af44139a092706c3752e6856781bd91f91008a7", @@ -467910,7 +467936,7 @@ ] ], "popup-light-dismiss.tentative.html": [ - "1b36233615845ea97b2e22910ad377935e9ae9a1", + "e2a91b54a1ed59b14a283e2523eb3de3f666223a", [ null, {
diff --git a/third_party/blink/web_tests/external/wpt/css/css-flexbox/frame-flex-item-crash.html b/third_party/blink/web_tests/external/wpt/css/css-flexbox/frame-flex-item-crash.html new file mode 100644 index 0000000..c677744 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-flexbox/frame-flex-item-crash.html
@@ -0,0 +1,8 @@ +<!DOCTYPE html> +<style> +frame { padding: 100px; } +</style> +<body style="display: flex"> +<script> +document.body.appendChild(document.createElement("frame")); +</script>
diff --git a/third_party/blink/web_tests/external/wpt/html/rendering/non-replaced-elements/sections-and-headings/headings-styles.html b/third_party/blink/web_tests/external/wpt/html/rendering/non-replaced-elements/sections-and-headings/headings-styles.html new file mode 100644 index 0000000..63e6a83 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/html/rendering/non-replaced-elements/sections-and-headings/headings-styles.html
@@ -0,0 +1,152 @@ +<!doctype html> +<title>default styles for h1..h6, hgroup, article, aside, nav, section</title> +<meta name="viewport" content="width=device-width"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/html/rendering/support/test-ua-stylesheet.js"></script> +<style> +/* Specify this bogus namespace, so the rules in this stylesheet only apply to the `fakeClone`d elements in #refs, not the HTML elements in #tests. */ +@namespace url(urn:not-html); + +article, aside, h1, h2, h3, h4, h5, h6, hgroup, nav, section { + display: block; +} + +h1 { margin-block-start: 0.67em; margin-block-end: 0.67em; font-size: 2.00em; font-weight: bold; } +h2 { margin-block-start: 0.83em; margin-block-end: 0.83em; font-size: 1.50em; font-weight: bold; } +h3 { margin-block-start: 1.00em; margin-block-end: 1.00em; font-size: 1.17em; font-weight: bold; } +h4 { margin-block-start: 1.33em; margin-block-end: 1.33em; font-size: 1.00em; font-weight: bold; } +h5 { margin-block-start: 1.67em; margin-block-end: 1.67em; font-size: 0.83em; font-weight: bold; } +h6 { margin-block-start: 2.33em; margin-block-end: 2.33em; font-size: 0.67em; font-weight: bold; } + +:is(article, aside, nav, section) h1 { margin-block-start: 0.83em; margin-block-end: 0.83em; font-size: 1.50em; } +:is(article, aside, nav, section) :is(article, aside, nav, section) h1 { margin-block-start: 1.00em; margin-block-end: 1.00em; font-size: 1.17em; } +:is(article, aside, nav, section) :is(article, aside, nav, section) :is(article, aside, nav, section) h1 { margin-block-start: 1.33em; margin-block-end: 1.33em; font-size: 1.00em; } +:is(article, aside, nav, section) :is(article, aside, nav, section) :is(article, aside, nav, section) :is(article, aside, nav, section) h1 { margin-block-start: 1.67em; margin-block-end: 1.67em; font-size: 0.83em; } +:is(article, aside, nav, section) :is(article, aside, nav, section) :is(article, aside, nav, section) :is(article, aside, nav, section) :is(article, aside, nav, section) h1 { margin-block-start: 2.33em; margin-block-end: 2.33em; font-size: 0.67em; } + +</style> + +<div id="log"></div> + +<div id="tests"> + <h1></h1> + <h2></h2> + <h3></h3> + <h4></h4> + <h5></h5> + <h6></h6> + <hgroup></hgroup> + <article></article> + <aside></aside> + <nav></nav> + <section></section> + <article data-skip> + <h1></h1> + <article data-skip> + <h1></h1> + <article data-skip> + <h1></h1> + <article data-skip> + <h1></h1> + <article data-skip> + <h1></h1> + <hgroup data-skip> + <h1></h1> + <h2></h2> + <h3></h3> + <h4></h4> + <h5></h5> + </hgroup> + </article> + </article> + </article> + </article> + </article> + <aside data-skip> + <h1></h1> + <aside data-skip> + <h1></h1> + <aside data-skip> + <h1></h1> + <aside data-skip> + <h1></h1> + <aside data-skip> + <h1></h1> + <hgroup data-skip> + <h1></h1> + <h2></h2> + <h3></h3> + <h4></h4> + <h5></h5> + </hgroup> + </aside> + </aside> + </aside> + </aside> + </aside> + <nav data-skip> + <h1></h1> + <nav data-skip> + <h1></h1> + <nav data-skip> + <h1></h1> + <nav data-skip> + <h1></h1> + <nav data-skip> + <h1></h1> + <hgroup data-skip> + <h1></h1> + <h2></h2> + <h3></h3> + <h4></h4> + <h5></h5> + </hgroup> + </nav> + </nav> + </nav> + </nav> + </nav> + <section data-skip> + <h1></h1> + <section data-skip> + <h1></h1> + <section data-skip> + <h1></h1> + <section data-skip> + <h1></h1> + <section data-skip> + <h1></h1> + <hgroup data-skip> + <h1></h1> + <h2></h2> + <h3></h3> + <h4></h4> + <h5></h5> + </hgroup> + </section> + </section> + </section> + </section> + </section> +</div> + +<div id="refs"></div> + +<script> + const props = [ + 'display', + 'margin-top', + 'margin-right', + 'margin-bottom', + 'margin-left', + 'padding-top', + 'padding-right', + 'padding-bottom', + 'padding-left', + 'font-size', + 'font-weight', + ]; + runUAStyleTests(props); + +</script>
diff --git a/third_party/blink/web_tests/external/wpt/navigation-api/navigation-methods/resources/slow-no-store.py b/third_party/blink/web_tests/external/wpt/navigation-api/navigation-methods/resources/slow-no-store.py new file mode 100644 index 0000000..48e5fc0 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/navigation-api/navigation-methods/resources/slow-no-store.py
@@ -0,0 +1,6 @@ +import time + +def main(request, response): + # Sleep for 1sec + time.sleep(1) + response.headers.set(b"Cache-Control", b"no-cache, no-store, must-revalidate");
diff --git a/third_party/blink/web_tests/external/wpt/navigation-api/navigation-methods/traverseTo-navigates-multiple-iframes.html b/third_party/blink/web_tests/external/wpt/navigation-api/navigation-methods/traverseTo-navigates-multiple-iframes.html new file mode 100644 index 0000000..3d6adb5 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/navigation-api/navigation-methods/traverseTo-navigates-multiple-iframes.html
@@ -0,0 +1,45 @@ +<!doctype html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<body> +<iframe id="i1" src="/common/blank.html"></iframe> +<iframe id="i2" src="resources/slow-no-store.py"></iframe> +<script> +promise_test(async t => { + // Wait for after the load event so that the navigation doesn't get converted + // into a replace navigation. + await new Promise(resolve => window.onload = () => t.step_timeout(resolve, 0)); + + i1.src = "/common/blank.html?navigated"; + await new Promise(resolve => i1.onload = resolve); + i2.src = "/common/blank.html?navigated"; + await new Promise(resolve => i2.onload = resolve); + assert_equals(navigation.entries().length, 1); + assert_equals(i1.contentWindow.navigation.entries().length, 2); + assert_equals(i2.contentWindow.navigation.entries().length, 2); + assert_equals(i1.contentWindow.navigation.currentEntry.index, 1); + assert_equals(i2.contentWindow.navigation.currentEntry.index, 1); + + function collectKeysAndIds(win) { + return win.navigation.entries().map(e => [e.key, e.id]).flat(); + } + let i1_keys_and_ids_before_back = collectKeysAndIds(i1.contentWindow); + let i2_keys_and_ids_before_back = collectKeysAndIds(i2.contentWindow); + + // Go back to a point that requires both frames to navigate. Because i2 is + // going back to a slow, un-cached document, i1 will likely complete before + // the server sends the response for i2. This combination of a slow and fast + // traversal is less common than the case where multiple iframes navigate at + // similar speeds, and caused a bug in chromium. + i1.contentWindow.navigation.traverseTo(i1.contentWindow.navigation.entries()[0].key); + await Promise.all( + [ new Promise(resolve => i1.onload = resolve), + new Promise(resolve => i2.onload = resolve) ]); + assert_equals(i1.contentWindow.navigation.currentEntry.index, 0); + assert_equals(i2.contentWindow.navigation.currentEntry.index, 0); + + assert_array_equals(i1_keys_and_ids_before_back, collectKeysAndIds(i1.contentWindow)); + assert_array_equals(i2_keys_and_ids_before_back, collectKeysAndIds(i2.contentWindow)); +}, "entries() should be correct after a traversal that navigates multiple browsing contexts"); +</script> +</body>
diff --git a/third_party/blink/web_tests/platform/generic/http/tests/devtools/network/network-serviceworker-timing-view-expected.txt b/third_party/blink/web_tests/platform/generic/http/tests/devtools/network/network-serviceworker-timing-view-expected.txt index 6ad34e5..bb5a4817 100644 --- a/third_party/blink/web_tests/platform/generic/http/tests/devtools/network/network-serviceworker-timing-view-expected.txt +++ b/third_party/blink/web_tests/platform/generic/http/tests/devtools/network/network-serviceworker-timing-view-expected.txt
@@ -19,7 +19,7 @@ Request/Response DURATION -Waiting (TTFB) +Waiting for server response ​ 6.72 ms Content Download
diff --git a/third_party/blink/web_tests/platform/generic/virtual/stable/webexposed/global-interface-listing-expected.txt b/third_party/blink/web_tests/platform/generic/virtual/stable/webexposed/global-interface-listing-expected.txt index bef06bb1..71354e5 100644 --- a/third_party/blink/web_tests/platform/generic/virtual/stable/webexposed/global-interface-listing-expected.txt +++ b/third_party/blink/web_tests/platform/generic/virtual/stable/webexposed/global-interface-listing-expected.txt
@@ -902,10 +902,6 @@ setter textBaseline setter textRendering setter wordSpacing -interface CaptureHandleChangeEvent : Event - attribute @@toStringTag - method captureHandle - method constructor interface ChannelMergerNode : AudioNode attribute @@toStringTag method constructor
diff --git a/third_party/blink/web_tests/platform/generic/webexposed/global-interface-listing-expected.txt b/third_party/blink/web_tests/platform/generic/webexposed/global-interface-listing-expected.txt index 2ab32ee..c39a5f40 100644 --- a/third_party/blink/web_tests/platform/generic/webexposed/global-interface-listing-expected.txt +++ b/third_party/blink/web_tests/platform/generic/webexposed/global-interface-listing-expected.txt
@@ -1180,10 +1180,6 @@ setter textBaseline setter textRendering setter wordSpacing -interface CaptureHandleChangeEvent : Event - attribute @@toStringTag - method captureHandle - method constructor interface ChannelMergerNode : AudioNode attribute @@toStringTag method constructor
diff --git a/third_party/blink/web_tests/wpt_internal/webgpu/cts.https.html b/third_party/blink/web_tests/wpt_internal/webgpu/cts.https.html index ce495f7..76fb035 100644 --- a/third_party/blink/web_tests/wpt_internal/webgpu/cts.https.html +++ b/third_party/blink/web_tests/wpt_internal/webgpu/cts.https.html
@@ -2854,9 +2854,18 @@ <meta name=variant content='?q=webgpu:shader,execution,expression,call,builtin,degrees:abstract_float:*'> <meta name=variant content='?q=webgpu:shader,execution,expression,call,builtin,degrees:f32:*'> <meta name=variant content='?q=webgpu:shader,execution,expression,call,builtin,degrees:f16:*'> +<meta name=variant content='?q=webgpu:shader,execution,expression,call,builtin,determinant:abstract_float:*'> +<meta name=variant content='?q=webgpu:shader,execution,expression,call,builtin,determinant:f32:*'> +<meta name=variant content='?q=webgpu:shader,execution,expression,call,builtin,determinant:f16:*'> <meta name=variant content='?q=webgpu:shader,execution,expression,call,builtin,distance:abstract_float:*'> <meta name=variant content='?q=webgpu:shader,execution,expression,call,builtin,distance:f32:*'> <meta name=variant content='?q=webgpu:shader,execution,expression,call,builtin,distance:f16:*'> +<meta name=variant content='?q=webgpu:shader,execution,expression,call,builtin,dot:abstract_int:*'> +<meta name=variant content='?q=webgpu:shader,execution,expression,call,builtin,dot:i32:*'> +<meta name=variant content='?q=webgpu:shader,execution,expression,call,builtin,dot:u32:*'> +<meta name=variant content='?q=webgpu:shader,execution,expression,call,builtin,dot:abstract_float:*'> +<meta name=variant content='?q=webgpu:shader,execution,expression,call,builtin,dot:f32:*'> +<meta name=variant content='?q=webgpu:shader,execution,expression,call,builtin,dot:f16:*'> <meta name=variant content='?q=webgpu:shader,execution,expression,call,builtin,exp:abstract_float:*'> <meta name=variant content='?q=webgpu:shader,execution,expression,call,builtin,exp:f32:*'> <meta name=variant content='?q=webgpu:shader,execution,expression,call,builtin,exp:f16:*'> @@ -2946,9 +2955,36 @@ <meta name=variant content='?q=webgpu:shader,execution,expression,call,builtin,round:f16:*'> <meta name=variant content='?q=webgpu:shader,execution,expression,call,builtin,select:scalar:*'> <meta name=variant content='?q=webgpu:shader,execution,expression,call,builtin,select:vector:*'> +<meta name=variant content='?q=webgpu:shader,execution,expression,call,builtin,sign:abstract_float:*'> +<meta name=variant content='?q=webgpu:shader,execution,expression,call,builtin,sign:f32:*'> +<meta name=variant content='?q=webgpu:shader,execution,expression,call,builtin,sign:f16:*'> <meta name=variant content='?q=webgpu:shader,execution,expression,call,builtin,sin:abstract_float:*'> <meta name=variant content='?q=webgpu:shader,execution,expression,call,builtin,sin:f32:*'> <meta name=variant content='?q=webgpu:shader,execution,expression,call,builtin,sin:f16:*'> +<meta name=variant content='?q=webgpu:shader,execution,expression,call,builtin,sinh:abstract_float:*'> +<meta name=variant content='?q=webgpu:shader,execution,expression,call,builtin,sinh:f32:*'> +<meta name=variant content='?q=webgpu:shader,execution,expression,call,builtin,sinh:f16:*'> +<meta name=variant content='?q=webgpu:shader,execution,expression,call,builtin,smoothstep:abstract_float:*'> +<meta name=variant content='?q=webgpu:shader,execution,expression,call,builtin,smoothstep:f32:*'> +<meta name=variant content='?q=webgpu:shader,execution,expression,call,builtin,smoothstep:f16:*'> +<meta name=variant content='?q=webgpu:shader,execution,expression,call,builtin,sqrt:abstract_float:*'> +<meta name=variant content='?q=webgpu:shader,execution,expression,call,builtin,sqrt:f32:*'> +<meta name=variant content='?q=webgpu:shader,execution,expression,call,builtin,sqrt:f16:*'> +<meta name=variant content='?q=webgpu:shader,execution,expression,call,builtin,step:abstract_float:*'> +<meta name=variant content='?q=webgpu:shader,execution,expression,call,builtin,step:f32:*'> +<meta name=variant content='?q=webgpu:shader,execution,expression,call,builtin,step:f16:*'> +<meta name=variant content='?q=webgpu:shader,execution,expression,call,builtin,tan:abstract_float:*'> +<meta name=variant content='?q=webgpu:shader,execution,expression,call,builtin,tan:f32:*'> +<meta name=variant content='?q=webgpu:shader,execution,expression,call,builtin,tan:f16:*'> +<meta name=variant content='?q=webgpu:shader,execution,expression,call,builtin,tanh:abstract_float:*'> +<meta name=variant content='?q=webgpu:shader,execution,expression,call,builtin,tanh:f32:*'> +<meta name=variant content='?q=webgpu:shader,execution,expression,call,builtin,tanh:f16:*'> +<meta name=variant content='?q=webgpu:shader,execution,expression,call,builtin,transpose:abstract_float:*'> +<meta name=variant content='?q=webgpu:shader,execution,expression,call,builtin,transpose:f32:*'> +<meta name=variant content='?q=webgpu:shader,execution,expression,call,builtin,transpose:f16:*'> +<meta name=variant content='?q=webgpu:shader,execution,expression,call,builtin,trunc:abstract_float:*'> +<meta name=variant content='?q=webgpu:shader,execution,expression,call,builtin,trunc:f32:*'> +<meta name=variant content='?q=webgpu:shader,execution,expression,call,builtin,trunc:f16:*'> <meta name=variant content='?q=webgpu:shader,execution,expression,unary,f32_arithmetic:negation:*'> <meta name=variant content='?q=webgpu:shader,execution,memory_model,atomicity:atomicity:memType="atomic_storage";testType="inter_workgroup"'> <meta name=variant content='?q=webgpu:shader,execution,memory_model,atomicity:atomicity:memType="atomic_storage";testType="intra_workgroup";*'>
diff --git a/third_party/webgpu-cts/ts_sources.txt b/third_party/webgpu-cts/ts_sources.txt index aa641df..aa8d924 100644 --- a/third_party/webgpu-cts/ts_sources.txt +++ b/third_party/webgpu-cts/ts_sources.txt
@@ -155,6 +155,7 @@ src/webgpu/api/operation/render_pipeline/alpha_to_coverage.spec.ts src/webgpu/api/operation/render_pipeline/culling_tests.spec.ts src/webgpu/api/operation/render_pipeline/entry_point_name.spec.ts +src/webgpu/util/texture/texture_ok.ts src/webgpu/api/operation/render_pipeline/pipeline_output_targets.spec.ts src/webgpu/api/operation/render_pipeline/primitive_topology.spec.ts src/webgpu/api/operation/render_pipeline/sample_mask.spec.ts @@ -176,7 +177,6 @@ src/webgpu/api/operation/sampling/filter_mode.spec.ts src/webgpu/api/operation/sampling/lod_clamp.spec.ts src/webgpu/api/operation/shader_module/compilation_info.spec.ts -src/webgpu/util/texture/texture_ok.ts src/webgpu/api/operation/texture_view/format_reinterpretation.spec.ts src/webgpu/api/operation/texture_view/read.spec.ts src/webgpu/api/operation/texture_view/write.spec.ts @@ -288,7 +288,9 @@ src/webgpu/shader/execution/expression/call/builtin/countTrailingZeros.spec.ts src/webgpu/shader/execution/expression/call/builtin/cross.spec.ts src/webgpu/shader/execution/expression/call/builtin/degrees.spec.ts +src/webgpu/shader/execution/expression/call/builtin/determinant.spec.ts src/webgpu/shader/execution/expression/call/builtin/distance.spec.ts +src/webgpu/shader/execution/expression/call/builtin/dot.spec.ts src/webgpu/shader/execution/expression/call/builtin/exp.spec.ts src/webgpu/shader/execution/expression/call/builtin/exp2.spec.ts src/webgpu/shader/execution/expression/call/builtin/extractBits.spec.ts @@ -318,7 +320,16 @@ src/webgpu/shader/execution/expression/call/builtin/reverseBits.spec.ts src/webgpu/shader/execution/expression/call/builtin/round.spec.ts src/webgpu/shader/execution/expression/call/builtin/select.spec.ts +src/webgpu/shader/execution/expression/call/builtin/sign.spec.ts src/webgpu/shader/execution/expression/call/builtin/sin.spec.ts +src/webgpu/shader/execution/expression/call/builtin/sinh.spec.ts +src/webgpu/shader/execution/expression/call/builtin/smoothstep.spec.ts +src/webgpu/shader/execution/expression/call/builtin/sqrt.spec.ts +src/webgpu/shader/execution/expression/call/builtin/step.spec.ts +src/webgpu/shader/execution/expression/call/builtin/tan.spec.ts +src/webgpu/shader/execution/expression/call/builtin/tanh.spec.ts +src/webgpu/shader/execution/expression/call/builtin/transpose.spec.ts +src/webgpu/shader/execution/expression/call/builtin/trunc.spec.ts src/webgpu/shader/execution/expression/unary/unary.ts src/webgpu/shader/execution/expression/unary/f32_arithmetic.spec.ts src/webgpu/shader/execution/memory_model/memory_model_setup.ts
diff --git a/tools/gritsettings/resource_ids.spec b/tools/gritsettings/resource_ids.spec index e4e42954..6cda63d5 100644 --- a/tools/gritsettings/resource_ids.spec +++ b/tools/gritsettings/resource_ids.spec
@@ -364,8 +364,8 @@ "META": {"sizes": {"includes": [10],}}, "includes": [2360], }, - "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/media/webrtc_logs_resources.grd": { - "META": {"sizes": {"includes": [10],}}, + "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/media/resources.grd": { + "META": {"sizes": {"includes": [20],}}, "includes": [2380], }, "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/net_internals/resources.grd": {
diff --git a/tools/mb/mb_config.pyl b/tools/mb/mb_config.pyl index 9d87c27..7f6ba37 100644 --- a/tools/mb/mb_config.pyl +++ b/tools/mb/mb_config.pyl
@@ -623,6 +623,7 @@ 'android_arm64-builder-perf-pgo': 'official_goma_minimal_symbols_android_arm64_pgo', 'chromecast-linux-builder-perf': 'cast_binary_size', 'chromeos-amd64-generic-lacros-builder-perf': 'chromeos_amd64-generic_lacros_official', + 'chromeos-arm-generic-lacros-builder-perf': 'chromeos_arm-generic_lacros_official', 'linux-builder-perf': 'official_goma_linux_perf', 'linux-builder-perf-pgo': 'official_goma_linux_perf_pgo', 'linux-builder-perf-rel': 'official_goma_linux_perf',
diff --git a/tools/mb/mb_config_expectations/chromium.perf.json b/tools/mb/mb_config_expectations/chromium.perf.json index 4049bfc5..e05838e 100644 --- a/tools/mb/mb_config_expectations/chromium.perf.json +++ b/tools/mb/mb_config_expectations/chromium.perf.json
@@ -96,6 +96,22 @@ "use_thin_lto": true } }, + "chromeos-arm-generic-lacros-builder-perf": { + "args_file": "//build/args/chromeos/arm-generic-crostoolchain.gni", + "gn_args": { + "chromeos_is_browser_only": true, + "dcheck_always_on": false, + "is_cfi": true, + "is_chrome_branded": true, + "is_chromeos_device": true, + "is_official_build": true, + "ozone_platform_headless": true, + "symbol_level": 1, + "target_os": "chromeos", + "use_goma": true, + "use_thin_lto": true + } + }, "linux-builder-perf": { "gn_args": { "chrome_pgo_phase": 0,
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml index 8dc0ac7..fcd74e1 100644 --- a/tools/metrics/histograms/enums.xml +++ b/tools/metrics/histograms/enums.xml
@@ -53792,6 +53792,7 @@ <int value="-1222757260" label="DefaultMeetWebApp:enabled"/> <int value="-1222556118" label="VirtualDesks:disabled"/> <int value="-1222538859" label="TranslateMessageUI:disabled"/> + <int value="-1222214250" label="AutofillSaveCardUiExperiment:disabled"/> <int value="-1222159993" label="HappinessTrackingSurveysForDesktopSettings:enabled"/> <int value="-1220675698" label="OmniboxDeferredKeyboardPopup:enabled"/> @@ -54018,6 +54019,7 @@ <int value="-1071043945" label="VerticalSnap:enabled"/> <int value="-1069628248" label="OmniboxZeroSuggestionsOnSERP:enabled"/> <int value="-1069453905" label="CCTModuleUseIntentExtras:disabled"/> + <int value="-1068278508" label="InfoCardAcknowledgementTracking:disabled"/> <int value="-1068197506" label="EnhancedNetworkVoices:enabled"/> <int value="-1067635248" label="SpeculativeResourcePrefetching:disabled"/> <int value="-1065227777" label="CrOSAutoSelect:disabled"/> @@ -54656,6 +54658,7 @@ <int value="-653616608" label="MacSyscallSandbox:disabled"/> <int value="-653505852" label="WebViewEmptyComponentLoaderPolicy:disabled"/> <int value="-652144124" label="BorealisBigGl:enabled"/> + <int value="-650731862" label="ExperimentalRgbKeyboardPatterns:enabled"/> <int value="-650504533" label="enable-speculative-launch-service-worker"/> <int value="-650388312" label="ClipboardHistoryScreenshotNudge:enabled"/> <int value="-650213879" label="OmniboxZeroSuggestionsOnNTP:disabled"/> @@ -54905,6 +54908,7 @@ <int value="-482259889" label="MacMDDownloadShelf:disabled"/> <int value="-482188490" label="ImpulseScrollAnimations:disabled"/> <int value="-480263549" label="AutofillShadowDOM:disabled"/> + <int value="-479601398" label="InfoCardAcknowledgementTracking:enabled"/> <int value="-478462945" label="enable-ephemeral-apps"/> <int value="-477101783" label="HandwritingGesture:disabled"/> <int value="-475049740" label="disable-vr-shell"/> @@ -55706,6 +55710,7 @@ <int value="65245449" label="FilesBannerFramework:enabled"/> <int value="66897259" label="ModalPermissionDialogView:enabled"/> <int value="67639499" label="stop-loading-in-background:disabled"/> + <int value="69571279" label="ExperimentalRgbKeyboardPatterns:disabled"/> <int value="69778786" label="NotificationPermissionVariant:disabled"/> <int value="71290103" label="ArcNearbySharing:enabled"/> <int value="73606763" label="XsurfaceMetricsReporting:disabled"/> @@ -55721,6 +55726,7 @@ <int value="79595680" label="OmniboxTabSwitchSuggestions:enabled"/> <int value="79729295" label="WebBundles:enabled"/> <int value="82303171" label="AccountIdMigration:disabled"/> + <int value="82489049" label="AutofillSaveCardUiExperiment:enabled"/> <int value="83422372" label="ChromeHomePersonalizedOmniboxSuggestions:enabled"/> <int value="84911198" label="ScanCardsInWebPayments:disabled"/>
diff --git a/tools/metrics/histograms/metadata/ash/histograms.xml b/tools/metrics/histograms/metadata/ash/histograms.xml index 61f68835..52e048d 100644 --- a/tools/metrics/histograms/metadata/ash/histograms.xml +++ b/tools/metrics/histograms/metadata/ash/histograms.xml
@@ -2578,8 +2578,9 @@ </histogram> <histogram name="Ash.NightLight.ScheduleType" enum="AshNightLightScheduleType" - expires_after="2022-04-24"> + expires_after="2023-05-01"> <owner>afakhry@chromium.org</owner> + <owner>tclaiborne@chromium.org</owner> <summary> The selected Night Light schedule type. Emitted when the user changes the Night Light schedule type from the Display System Settings.
diff --git a/tools/metrics/histograms/metadata/safe_browsing/histograms.xml b/tools/metrics/histograms/metadata/safe_browsing/histograms.xml index 73fa697e..e641c1eb 100644 --- a/tools/metrics/histograms/metadata/safe_browsing/histograms.xml +++ b/tools/metrics/histograms/metadata/safe_browsing/histograms.xml
@@ -1276,6 +1276,9 @@ <histogram name="SafeBrowsing.Macros.DocumentSize" units="KB" expires_after="2022-06-05"> + <obsolete> + Removed 05-2022. This metric was historically stable and not being used. + </obsolete> <owner>drubery@chromium.org</owner> <owner>chrome-safebrowsing-alerts@google.com</owner> <summary>
diff --git a/tools/perf/core/perf_data_generator.py b/tools/perf/core/perf_data_generator.py index 67a3f85..252cc0f4 100755 --- a/tools/perf/core/perf_data_generator.py +++ b/tools/perf/core/perf_data_generator.py
@@ -1087,6 +1087,29 @@ 'perf_trigger': False, }, + 'chromeos-arm-generic-lacros-builder-perf': { + 'additional_compile_targets': ['chrome', 'lacros_version_metadata'], + 'tests': [ + { + 'name': 'resource_sizes_lacros_chrome', + 'isolate': 'resource_sizes_lacros_chrome', + 'type': TEST_TYPES.GENERIC, + 'resultdb': { + 'has_native_resultdb_integration': True, + }, + 'extra_args': [ + '--arch=arm32', + ], + }, + ], + 'dimension': { + 'cpu': 'x86-64', + 'os': 'Ubuntu-18.04', + 'pool': 'chrome.tests', + }, + 'perf_trigger': + False, + }, 'lacros-eve-perf': { 'tests': [ {
diff --git a/tools/perf/core/perf_json_config_validator.py b/tools/perf/core/perf_json_config_validator.py index 31f44327..0ea7bc9 100644 --- a/tools/perf/core/perf_json_config_validator.py +++ b/tools/perf/core/perf_json_config_validator.py
@@ -29,6 +29,7 @@ 'chromecast-linux-builder-perf': {'chrome.tests'}, 'chromeos-kevin-perf-fyi': {'chrome.tests'}, 'chromeos-amd64-generic-lacros-builder-perf': {'chrome.tests'}, + 'chromeos-arm-generic-lacros-builder-perf': {'chrome.tests'}, 'fuchsia-perf-fyi': {'chrome.tests'}, 'fuchsia-perf-atlas-fyi': {'chrome.tests'}, 'fuchsia-perf-sherlock-fyi': {'chrome.tests'},
diff --git a/tools/perf/core/perfetto_binary_roller/binary_deps.json b/tools/perf/core/perfetto_binary_roller/binary_deps.json index 84cd654..50f7a9ec 100644 --- a/tools/perf/core/perfetto_binary_roller/binary_deps.json +++ b/tools/perf/core/perfetto_binary_roller/binary_deps.json
@@ -6,7 +6,7 @@ }, "win": { "hash": "fa4c3731aaacd16bcfc760e4cd7c2241a1cfeca6", - "full_remote_path": "chromium-telemetry/perfetto_binaries/trace_processor_shell/win/b539fc7f1e6403f2ed93b2264fd54bf40e9e5656/trace_processor_shell.exe" + "full_remote_path": "chromium-telemetry/perfetto_binaries/trace_processor_shell/win/f8b405298bd883ba95f7a14acfce230b37487ad3/trace_processor_shell.exe" }, "linux_arm": { "hash": "58893933be305d3bfe0a72ebebcacde2ac3ca893",
diff --git a/ui/accessibility/platform/ax_platform_node_cocoa.mm b/ui/accessibility/platform/ax_platform_node_cocoa.mm index 19eecde..7342d7b 100644 --- a/ui/accessibility/platform/ax_platform_node_cocoa.mm +++ b/ui/accessibility/platform/ax_platform_node_cocoa.mm
@@ -38,225 +38,6 @@ using EventMap = std::map<ax::mojom::Event, NSString*>; using ActionList = std::vector<std::pair<ax::mojom::Action, NSString*>>; -RoleMap BuildRoleMap() { - // TODO(accessibility) Are any missing? Consider switch statement so that - // compiler doesn't allow missing roles; - const RoleMap::value_type roles[] = { - {ax::mojom::Role::kAbbr, NSAccessibilityGroupRole}, - {ax::mojom::Role::kAlert, NSAccessibilityGroupRole}, - {ax::mojom::Role::kAlertDialog, NSAccessibilityGroupRole}, - {ax::mojom::Role::kApplication, NSAccessibilityGroupRole}, - {ax::mojom::Role::kArticle, NSAccessibilityGroupRole}, - {ax::mojom::Role::kAudio, NSAccessibilityGroupRole}, - {ax::mojom::Role::kBanner, NSAccessibilityGroupRole}, - {ax::mojom::Role::kBlockquote, NSAccessibilityGroupRole}, - {ax::mojom::Role::kButton, NSAccessibilityButtonRole}, - {ax::mojom::Role::kCanvas, NSAccessibilityImageRole}, - {ax::mojom::Role::kCaption, NSAccessibilityGroupRole}, - {ax::mojom::Role::kCell, @"AXCell"}, - {ax::mojom::Role::kCheckBox, NSAccessibilityCheckBoxRole}, - {ax::mojom::Role::kCode, NSAccessibilityGroupRole}, - {ax::mojom::Role::kColorWell, NSAccessibilityColorWellRole}, - {ax::mojom::Role::kColumn, NSAccessibilityColumnRole}, - {ax::mojom::Role::kColumnHeader, @"AXCell"}, - {ax::mojom::Role::kComboBoxGrouping, NSAccessibilityComboBoxRole}, - {ax::mojom::Role::kComboBoxMenuButton, NSAccessibilityComboBoxRole}, - {ax::mojom::Role::kComment, NSAccessibilityGroupRole}, - {ax::mojom::Role::kComplementary, NSAccessibilityGroupRole}, - {ax::mojom::Role::kContentDeletion, NSAccessibilityGroupRole}, - {ax::mojom::Role::kContentInsertion, NSAccessibilityGroupRole}, - {ax::mojom::Role::kContentInfo, NSAccessibilityGroupRole}, - {ax::mojom::Role::kDate, @"AXDateField"}, - {ax::mojom::Role::kDateTime, @"AXDateField"}, - {ax::mojom::Role::kDefinition, NSAccessibilityGroupRole}, - {ax::mojom::Role::kDescriptionListDetail, NSAccessibilityGroupRole}, - {ax::mojom::Role::kDescriptionList, NSAccessibilityListRole}, - {ax::mojom::Role::kDescriptionListTerm, NSAccessibilityGroupRole}, - {ax::mojom::Role::kDialog, NSAccessibilityGroupRole}, - {ax::mojom::Role::kDetails, NSAccessibilityGroupRole}, - {ax::mojom::Role::kDirectory, NSAccessibilityListRole}, - // If Mac supports AXExpandedChanged event with - // NSAccessibilityDisclosureTriangleRole, We should update - // ax::mojom::Role::kDisclosureTriangle mapping to - // NSAccessibilityDisclosureTriangleRole. http://crbug.com/558324 - {ax::mojom::Role::kDisclosureTriangle, NSAccessibilityButtonRole}, - {ax::mojom::Role::kDocAbstract, NSAccessibilityGroupRole}, - {ax::mojom::Role::kDocAcknowledgments, NSAccessibilityGroupRole}, - {ax::mojom::Role::kDocAfterword, NSAccessibilityGroupRole}, - {ax::mojom::Role::kDocAppendix, NSAccessibilityGroupRole}, - {ax::mojom::Role::kDocBackLink, NSAccessibilityLinkRole}, - {ax::mojom::Role::kDocBiblioEntry, NSAccessibilityGroupRole}, - {ax::mojom::Role::kDocBibliography, NSAccessibilityGroupRole}, - {ax::mojom::Role::kDocBiblioRef, NSAccessibilityLinkRole}, - {ax::mojom::Role::kDocChapter, NSAccessibilityGroupRole}, - {ax::mojom::Role::kDocColophon, NSAccessibilityGroupRole}, - {ax::mojom::Role::kDocConclusion, NSAccessibilityGroupRole}, - {ax::mojom::Role::kDocCover, NSAccessibilityImageRole}, - {ax::mojom::Role::kDocCredit, NSAccessibilityGroupRole}, - {ax::mojom::Role::kDocCredits, NSAccessibilityGroupRole}, - {ax::mojom::Role::kDocDedication, NSAccessibilityGroupRole}, - {ax::mojom::Role::kDocEndnote, NSAccessibilityGroupRole}, - {ax::mojom::Role::kDocEndnotes, NSAccessibilityGroupRole}, - {ax::mojom::Role::kDocEpigraph, NSAccessibilityGroupRole}, - {ax::mojom::Role::kDocEpilogue, NSAccessibilityGroupRole}, - {ax::mojom::Role::kDocErrata, NSAccessibilityGroupRole}, - {ax::mojom::Role::kDocExample, NSAccessibilityGroupRole}, - {ax::mojom::Role::kDocFootnote, NSAccessibilityGroupRole}, - {ax::mojom::Role::kDocForeword, NSAccessibilityGroupRole}, - {ax::mojom::Role::kDocGlossary, NSAccessibilityGroupRole}, - {ax::mojom::Role::kDocGlossRef, NSAccessibilityLinkRole}, - {ax::mojom::Role::kDocIndex, NSAccessibilityGroupRole}, - {ax::mojom::Role::kDocIntroduction, NSAccessibilityGroupRole}, - {ax::mojom::Role::kDocNoteRef, NSAccessibilityLinkRole}, - {ax::mojom::Role::kDocNotice, NSAccessibilityGroupRole}, - {ax::mojom::Role::kDocPageBreak, NSAccessibilitySplitterRole}, - {ax::mojom::Role::kDocPageFooter, NSAccessibilityGroupRole}, - {ax::mojom::Role::kDocPageHeader, NSAccessibilityGroupRole}, - {ax::mojom::Role::kDocPageList, NSAccessibilityGroupRole}, - {ax::mojom::Role::kDocPart, NSAccessibilityGroupRole}, - {ax::mojom::Role::kDocPreface, NSAccessibilityGroupRole}, - {ax::mojom::Role::kDocPrologue, NSAccessibilityGroupRole}, - {ax::mojom::Role::kDocPullquote, NSAccessibilityGroupRole}, - {ax::mojom::Role::kDocQna, NSAccessibilityGroupRole}, - {ax::mojom::Role::kDocSubtitle, @"AXHeading"}, - {ax::mojom::Role::kDocTip, NSAccessibilityGroupRole}, - {ax::mojom::Role::kDocToc, NSAccessibilityGroupRole}, - {ax::mojom::Role::kDocument, NSAccessibilityGroupRole}, - {ax::mojom::Role::kEmbeddedObject, NSAccessibilityGroupRole}, - {ax::mojom::Role::kEmphasis, NSAccessibilityGroupRole}, - {ax::mojom::Role::kFeed, NSAccessibilityGroupRole}, - {ax::mojom::Role::kFigcaption, NSAccessibilityGroupRole}, - {ax::mojom::Role::kFigure, NSAccessibilityGroupRole}, - {ax::mojom::Role::kFooter, NSAccessibilityGroupRole}, - {ax::mojom::Role::kFooterAsNonLandmark, NSAccessibilityGroupRole}, - {ax::mojom::Role::kForm, NSAccessibilityGroupRole}, - {ax::mojom::Role::kGenericContainer, NSAccessibilityGroupRole}, - {ax::mojom::Role::kGraphicsDocument, NSAccessibilityGroupRole}, - {ax::mojom::Role::kGraphicsObject, NSAccessibilityGroupRole}, - {ax::mojom::Role::kGraphicsSymbol, NSAccessibilityImageRole}, - // Should be NSAccessibilityGridRole but VoiceOver treating it like - // a list as of 10.12.6, so following WebKit and using table role: - {ax::mojom::Role::kGrid, NSAccessibilityTableRole}, // crbug.com/753925 - {ax::mojom::Role::kGroup, NSAccessibilityGroupRole}, - {ax::mojom::Role::kHeader, NSAccessibilityGroupRole}, - {ax::mojom::Role::kHeaderAsNonLandmark, NSAccessibilityGroupRole}, - {ax::mojom::Role::kHeading, @"AXHeading"}, - {ax::mojom::Role::kIframe, NSAccessibilityGroupRole}, - {ax::mojom::Role::kIframePresentational, NSAccessibilityGroupRole}, - {ax::mojom::Role::kImage, NSAccessibilityImageRole}, - {ax::mojom::Role::kInputTime, @"AXTimeField"}, - {ax::mojom::Role::kLabelText, NSAccessibilityGroupRole}, - {ax::mojom::Role::kLayoutTable, NSAccessibilityGroupRole}, - {ax::mojom::Role::kLayoutTableCell, NSAccessibilityGroupRole}, - {ax::mojom::Role::kLayoutTableRow, NSAccessibilityGroupRole}, - {ax::mojom::Role::kLegend, NSAccessibilityGroupRole}, - {ax::mojom::Role::kLineBreak, NSAccessibilityGroupRole}, - {ax::mojom::Role::kLink, NSAccessibilityLinkRole}, - {ax::mojom::Role::kList, NSAccessibilityListRole}, - {ax::mojom::Role::kListBox, NSAccessibilityListRole}, - {ax::mojom::Role::kListBoxOption, NSAccessibilityStaticTextRole}, - {ax::mojom::Role::kListItem, NSAccessibilityGroupRole}, - {ax::mojom::Role::kListMarker, @"AXListMarker"}, - {ax::mojom::Role::kLog, NSAccessibilityGroupRole}, - {ax::mojom::Role::kMain, NSAccessibilityGroupRole}, - {ax::mojom::Role::kMark, NSAccessibilityGroupRole}, - {ax::mojom::Role::kMarquee, NSAccessibilityGroupRole}, - // https://w3c.github.io/mathml-aam/#mathml-element-mappings - {ax::mojom::Role::kMath, NSAccessibilityGroupRole}, - {ax::mojom::Role::kMathMLFraction, NSAccessibilityGroupRole}, - {ax::mojom::Role::kMathMLIdentifier, NSAccessibilityGroupRole}, - {ax::mojom::Role::kMathMLMath, NSAccessibilityGroupRole}, - {ax::mojom::Role::kMathMLMultiscripts, NSAccessibilityGroupRole}, - {ax::mojom::Role::kMathMLNoneScript, NSAccessibilityGroupRole}, - {ax::mojom::Role::kMathMLNumber, NSAccessibilityGroupRole}, - {ax::mojom::Role::kMathMLOperator, NSAccessibilityGroupRole}, - {ax::mojom::Role::kMathMLOver, NSAccessibilityGroupRole}, - {ax::mojom::Role::kMathMLPrescriptDelimiter, NSAccessibilityGroupRole}, - {ax::mojom::Role::kMathMLRoot, NSAccessibilityGroupRole}, - {ax::mojom::Role::kMathMLRow, NSAccessibilityGroupRole}, - {ax::mojom::Role::kMathMLSquareRoot, NSAccessibilityGroupRole}, - {ax::mojom::Role::kMathMLStringLiteral, NSAccessibilityGroupRole}, - {ax::mojom::Role::kMathMLSub, NSAccessibilityGroupRole}, - {ax::mojom::Role::kMathMLSubSup, NSAccessibilityGroupRole}, - {ax::mojom::Role::kMathMLSup, NSAccessibilityGroupRole}, - {ax::mojom::Role::kMathMLTable, NSAccessibilityGroupRole}, - {ax::mojom::Role::kMathMLTableCell, NSAccessibilityGroupRole}, - {ax::mojom::Role::kMathMLTableRow, NSAccessibilityGroupRole}, - {ax::mojom::Role::kMathMLText, NSAccessibilityGroupRole}, - {ax::mojom::Role::kMathMLUnder, NSAccessibilityGroupRole}, - {ax::mojom::Role::kMathMLUnderOver, NSAccessibilityGroupRole}, - {ax::mojom::Role::kMenu, NSAccessibilityMenuRole}, - {ax::mojom::Role::kMenuBar, NSAccessibilityMenuBarRole}, - {ax::mojom::Role::kMenuItem, NSAccessibilityMenuItemRole}, - {ax::mojom::Role::kMenuItemCheckBox, NSAccessibilityMenuItemRole}, - {ax::mojom::Role::kMenuItemRadio, NSAccessibilityMenuItemRole}, - {ax::mojom::Role::kMenuListOption, NSAccessibilityMenuItemRole}, - {ax::mojom::Role::kMenuListPopup, NSAccessibilityMenuRole}, - {ax::mojom::Role::kMeter, NSAccessibilityLevelIndicatorRole}, - {ax::mojom::Role::kNavigation, NSAccessibilityGroupRole}, - {ax::mojom::Role::kNone, NSAccessibilityGroupRole}, - {ax::mojom::Role::kNote, NSAccessibilityGroupRole}, - {ax::mojom::Role::kParagraph, NSAccessibilityGroupRole}, - {ax::mojom::Role::kPdfActionableHighlight, NSAccessibilityButtonRole}, - {ax::mojom::Role::kPdfRoot, NSAccessibilityGroupRole}, - {ax::mojom::Role::kPluginObject, NSAccessibilityGroupRole}, - {ax::mojom::Role::kPopUpButton, NSAccessibilityPopUpButtonRole}, - {ax::mojom::Role::kPortal, NSAccessibilityButtonRole}, - {ax::mojom::Role::kPre, NSAccessibilityGroupRole}, - {ax::mojom::Role::kProgressIndicator, - NSAccessibilityProgressIndicatorRole}, - {ax::mojom::Role::kRadioButton, NSAccessibilityRadioButtonRole}, - {ax::mojom::Role::kRadioGroup, NSAccessibilityRadioGroupRole}, - {ax::mojom::Role::kRegion, NSAccessibilityGroupRole}, - {ax::mojom::Role::kRootWebArea, NSAccessibilityWebAreaRole}, - {ax::mojom::Role::kRow, NSAccessibilityRowRole}, - {ax::mojom::Role::kRowGroup, NSAccessibilityGroupRole}, - {ax::mojom::Role::kRowHeader, @"AXCell"}, - {ax::mojom::Role::kRuby, NSAccessibilityGroupRole}, - {ax::mojom::Role::kRubyAnnotation, NSAccessibilityUnknownRole}, - {ax::mojom::Role::kScrollBar, NSAccessibilityScrollBarRole}, - {ax::mojom::Role::kSearch, NSAccessibilityGroupRole}, - {ax::mojom::Role::kSearchBox, NSAccessibilityTextFieldRole}, - {ax::mojom::Role::kSection, NSAccessibilityGroupRole}, - {ax::mojom::Role::kSlider, NSAccessibilitySliderRole}, - {ax::mojom::Role::kSpinButton, NSAccessibilityIncrementorRole}, - {ax::mojom::Role::kSplitter, NSAccessibilitySplitterRole}, - {ax::mojom::Role::kStaticText, NSAccessibilityStaticTextRole}, - {ax::mojom::Role::kStatus, NSAccessibilityGroupRole}, - {ax::mojom::Role::kSubscript, NSAccessibilityGroupRole}, - {ax::mojom::Role::kSuggestion, NSAccessibilityGroupRole}, - {ax::mojom::Role::kSuperscript, NSAccessibilityGroupRole}, - {ax::mojom::Role::kSvgRoot, NSAccessibilityGroupRole}, - {ax::mojom::Role::kSwitch, NSAccessibilityCheckBoxRole}, - {ax::mojom::Role::kStrong, NSAccessibilityGroupRole}, - {ax::mojom::Role::kTab, NSAccessibilityRadioButtonRole}, - {ax::mojom::Role::kTable, NSAccessibilityTableRole}, - {ax::mojom::Role::kTableHeaderContainer, NSAccessibilityGroupRole}, - {ax::mojom::Role::kTabList, NSAccessibilityTabGroupRole}, - {ax::mojom::Role::kTabPanel, NSAccessibilityGroupRole}, - {ax::mojom::Role::kTerm, NSAccessibilityGroupRole}, - {ax::mojom::Role::kTextField, NSAccessibilityTextFieldRole}, - {ax::mojom::Role::kTextFieldWithComboBox, NSAccessibilityComboBoxRole}, - {ax::mojom::Role::kTime, NSAccessibilityGroupRole}, - {ax::mojom::Role::kTimer, NSAccessibilityGroupRole}, - {ax::mojom::Role::kTitleBar, NSAccessibilityStaticTextRole}, - {ax::mojom::Role::kToggleButton, NSAccessibilityCheckBoxRole}, - {ax::mojom::Role::kToolbar, NSAccessibilityToolbarRole}, - {ax::mojom::Role::kTooltip, NSAccessibilityGroupRole}, - {ax::mojom::Role::kTree, NSAccessibilityOutlineRole}, - {ax::mojom::Role::kTreeGrid, NSAccessibilityTableRole}, - {ax::mojom::Role::kTreeItem, NSAccessibilityRowRole}, - {ax::mojom::Role::kVideo, NSAccessibilityGroupRole}, - // Use the group role as the BrowserNativeWidgetWindow already provides - // a kWindow role, and having extra window roles, which are treated - // specially by screen readers, can break their ability to find the - // content window. See http://crbug.com/875843 for more information. - {ax::mojom::Role::kWindow, NSAccessibilityGroupRole}, - }; - - return RoleMap(begin(roles), end(roles)); -} - RoleMap BuildSubroleMap() { const RoleMap::value_type subroles[] = { {ax::mojom::Role::kAlert, @"AXApplicationAlert"}, @@ -536,9 +317,301 @@ } + (NSString*)nativeRoleFromAXRole:(ax::mojom::Role)role { - static const base::NoDestructor<RoleMap> role_map(BuildRoleMap()); - RoleMap::const_iterator it = role_map->find(role); - return it != role_map->end() ? it->second : NSAccessibilityUnknownRole; + switch (role) { + case ax::mojom::Role::kAbbr: + case ax::mojom::Role::kAlert: + case ax::mojom::Role::kAlertDialog: + case ax::mojom::Role::kApplication: + case ax::mojom::Role::kArticle: + case ax::mojom::Role::kAudio: + case ax::mojom::Role::kBanner: + case ax::mojom::Role::kBlockquote: + case ax::mojom::Role::kCaption: + case ax::mojom::Role::kClient: + case ax::mojom::Role::kCode: + case ax::mojom::Role::kComment: + case ax::mojom::Role::kComplementary: + case ax::mojom::Role::kContentDeletion: + case ax::mojom::Role::kContentInsertion: + case ax::mojom::Role::kContentInfo: + case ax::mojom::Role::kDefinition: + case ax::mojom::Role::kDescriptionListDetail: + case ax::mojom::Role::kDescriptionListTerm: + case ax::mojom::Role::kDesktop: + case ax::mojom::Role::kDialog: + case ax::mojom::Role::kDetails: + case ax::mojom::Role::kDocAbstract: + case ax::mojom::Role::kDocAcknowledgments: + case ax::mojom::Role::kDocAfterword: + case ax::mojom::Role::kDocAppendix: + case ax::mojom::Role::kDocBiblioEntry: + case ax::mojom::Role::kDocBibliography: + case ax::mojom::Role::kDocChapter: + case ax::mojom::Role::kDocColophon: + case ax::mojom::Role::kDocConclusion: + case ax::mojom::Role::kDocCredit: + case ax::mojom::Role::kDocCredits: + case ax::mojom::Role::kDocDedication: + case ax::mojom::Role::kDocEndnote: + case ax::mojom::Role::kDocEndnotes: + case ax::mojom::Role::kDocEpigraph: + case ax::mojom::Role::kDocEpilogue: + case ax::mojom::Role::kDocErrata: + case ax::mojom::Role::kDocExample: + case ax::mojom::Role::kDocFootnote: + case ax::mojom::Role::kDocForeword: + case ax::mojom::Role::kDocGlossary: + case ax::mojom::Role::kDocIndex: + case ax::mojom::Role::kDocIntroduction: + case ax::mojom::Role::kDocNotice: + case ax::mojom::Role::kDocPageFooter: + case ax::mojom::Role::kDocPageHeader: + case ax::mojom::Role::kDocPageList: + case ax::mojom::Role::kDocPart: + case ax::mojom::Role::kDocPreface: + case ax::mojom::Role::kDocPrologue: + case ax::mojom::Role::kDocPullquote: + case ax::mojom::Role::kDocQna: + case ax::mojom::Role::kDocTip: + case ax::mojom::Role::kDocToc: + case ax::mojom::Role::kDocument: + case ax::mojom::Role::kEmbeddedObject: + case ax::mojom::Role::kEmphasis: + case ax::mojom::Role::kFeed: + case ax::mojom::Role::kFigcaption: + case ax::mojom::Role::kFigure: + case ax::mojom::Role::kFooter: + case ax::mojom::Role::kFooterAsNonLandmark: + case ax::mojom::Role::kForm: + case ax::mojom::Role::kGenericContainer: + case ax::mojom::Role::kGraphicsDocument: + case ax::mojom::Role::kGraphicsObject: + case ax::mojom::Role::kGroup: + case ax::mojom::Role::kHeader: + case ax::mojom::Role::kHeaderAsNonLandmark: + case ax::mojom::Role::kIframe: + case ax::mojom::Role::kIframePresentational: + case ax::mojom::Role::kLabelText: + case ax::mojom::Role::kLayoutTable: + case ax::mojom::Role::kLayoutTableCell: + case ax::mojom::Role::kLayoutTableRow: + case ax::mojom::Role::kLegend: + case ax::mojom::Role::kLineBreak: + case ax::mojom::Role::kListItem: + case ax::mojom::Role::kLog: + case ax::mojom::Role::kMain: + case ax::mojom::Role::kMark: + case ax::mojom::Role::kMarquee: + case ax::mojom::Role::kMath: + case ax::mojom::Role::kMathMLFraction: + case ax::mojom::Role::kMathMLIdentifier: + case ax::mojom::Role::kMathMLMath: + case ax::mojom::Role::kMathMLMultiscripts: + case ax::mojom::Role::kMathMLNoneScript: + case ax::mojom::Role::kMathMLNumber: + case ax::mojom::Role::kMathMLOperator: + case ax::mojom::Role::kMathMLOver: + case ax::mojom::Role::kMathMLPrescriptDelimiter: + case ax::mojom::Role::kMathMLRoot: + case ax::mojom::Role::kMathMLRow: + case ax::mojom::Role::kMathMLSquareRoot: + case ax::mojom::Role::kMathMLStringLiteral: + case ax::mojom::Role::kMathMLSub: + case ax::mojom::Role::kMathMLSubSup: + case ax::mojom::Role::kMathMLSup: + case ax::mojom::Role::kMathMLTable: + case ax::mojom::Role::kMathMLTableCell: + case ax::mojom::Role::kMathMLTableRow: + case ax::mojom::Role::kMathMLText: + case ax::mojom::Role::kMathMLUnder: + case ax::mojom::Role::kMathMLUnderOver: + case ax::mojom::Role::kNavigation: + case ax::mojom::Role::kNone: + case ax::mojom::Role::kNote: + case ax::mojom::Role::kPane: + case ax::mojom::Role::kParagraph: + case ax::mojom::Role::kPdfRoot: + case ax::mojom::Role::kPluginObject: + case ax::mojom::Role::kPre: + case ax::mojom::Role::kRegion: + case ax::mojom::Role::kRowGroup: + case ax::mojom::Role::kRuby: + case ax::mojom::Role::kSearch: + case ax::mojom::Role::kSection: + case ax::mojom::Role::kStatus: + case ax::mojom::Role::kSubscript: + case ax::mojom::Role::kSuggestion: + case ax::mojom::Role::kSuperscript: + case ax::mojom::Role::kSvgRoot: + case ax::mojom::Role::kStrong: + case ax::mojom::Role::kTableHeaderContainer: + case ax::mojom::Role::kTabPanel: + case ax::mojom::Role::kTerm: + case ax::mojom::Role::kTime: + case ax::mojom::Role::kTimer: + case ax::mojom::Role::kTooltip: + case ax::mojom::Role::kVideo: + case ax::mojom::Role::kWebView: + return NSAccessibilityGroupRole; + case ax::mojom::Role::kButton: + return NSAccessibilityButtonRole; + case ax::mojom::Role::kCanvas: + return NSAccessibilityImageRole; + case ax::mojom::Role::kCaret: + return NSAccessibilityUnknownRole; + case ax::mojom::Role::kCell: + return @"AXCell"; + case ax::mojom::Role::kCheckBox: + return NSAccessibilityCheckBoxRole; + case ax::mojom::Role::kColorWell: + return NSAccessibilityColorWellRole; + case ax::mojom::Role::kColumn: + return NSAccessibilityColumnRole; + case ax::mojom::Role::kColumnHeader: + return @"AXCell"; + case ax::mojom::Role::kComboBoxGrouping: + return NSAccessibilityComboBoxRole; + case ax::mojom::Role::kComboBoxMenuButton: + return NSAccessibilityComboBoxRole; + case ax::mojom::Role::kDate: + return @"AXDateField"; + case ax::mojom::Role::kDateTime: + return @"AXDateField"; + case ax::mojom::Role::kDescriptionList: + return NSAccessibilityListRole; + case ax::mojom::Role::kDirectory: + return NSAccessibilityListRole; + case ax::mojom::Role::kDisclosureTriangle: + // If Mac supports AXExpandedChanged event with + // NSAccessibilityDisclosureTriangleRole, We should update + // ax::mojom::Role::kDisclosureTriangle mapping to + // NSAccessibilityDisclosureTriangleRole. http://crbug.com/558324 + return NSAccessibilityButtonRole; + case ax::mojom::Role::kDocBackLink: + case ax::mojom::Role::kDocBiblioRef: + case ax::mojom::Role::kDocGlossRef: + case ax::mojom::Role::kDocNoteRef: + return NSAccessibilityLinkRole; + case ax::mojom::Role::kDocCover: + return NSAccessibilityImageRole; + case ax::mojom::Role::kDocPageBreak: + return NSAccessibilitySplitterRole; + case ax::mojom::Role::kDocSubtitle: + return @"AXHeading"; + case ax::mojom::Role::kGraphicsSymbol: + return NSAccessibilityImageRole; + case ax::mojom::Role::kGrid: + // Should be NSAccessibilityGridRole but VoiceOver treating it like + // a list as of 10.12.6, so following WebKit and using table role: + // crbug.com/753925 + return NSAccessibilityTableRole; + case ax::mojom::Role::kHeading: + return @"AXHeading"; + case ax::mojom::Role::kImage: + return NSAccessibilityImageRole; + case ax::mojom::Role::kImeCandidate: + return NSAccessibilityUnknownRole; + case ax::mojom::Role::kInlineTextBox: + return NSAccessibilityStaticTextRole; + case ax::mojom::Role::kInputTime: + return @"AXTimeField"; + case ax::mojom::Role::kKeyboard: + return NSAccessibilityUnknownRole; + case ax::mojom::Role::kLink: + return NSAccessibilityLinkRole; + case ax::mojom::Role::kList: + return NSAccessibilityListRole; + case ax::mojom::Role::kListBox: + return NSAccessibilityListRole; + case ax::mojom::Role::kListBoxOption: + return NSAccessibilityStaticTextRole; + case ax::mojom::Role::kListGrid: + return NSAccessibilityTableRole; + case ax::mojom::Role::kListMarker: + return @"AXListMarker"; + case ax::mojom::Role::kMenu: + return NSAccessibilityMenuRole; + case ax::mojom::Role::kMenuBar: + return NSAccessibilityMenuBarRole; + case ax::mojom::Role::kMenuItem: + return NSAccessibilityMenuItemRole; + case ax::mojom::Role::kMenuItemCheckBox: + return NSAccessibilityMenuItemRole; + case ax::mojom::Role::kMenuItemRadio: + return NSAccessibilityMenuItemRole; + case ax::mojom::Role::kMenuListOption: + return NSAccessibilityMenuItemRole; + case ax::mojom::Role::kMenuListPopup: + return NSAccessibilityMenuRole; + case ax::mojom::Role::kMeter: + return NSAccessibilityLevelIndicatorRole; + case ax::mojom::Role::kPdfActionableHighlight: + return NSAccessibilityButtonRole; + case ax::mojom::Role::kPopUpButton: + return NSAccessibilityPopUpButtonRole; + case ax::mojom::Role::kPortal: + return NSAccessibilityButtonRole; + case ax::mojom::Role::kProgressIndicator: + return NSAccessibilityProgressIndicatorRole; + case ax::mojom::Role::kRadioButton: + return NSAccessibilityRadioButtonRole; + case ax::mojom::Role::kRadioGroup: + return NSAccessibilityRadioGroupRole; + case ax::mojom::Role::kRootWebArea: + return NSAccessibilityWebAreaRole; + case ax::mojom::Role::kRow: + return NSAccessibilityRowRole; + case ax::mojom::Role::kRowHeader: + return @"AXCell"; + case ax::mojom::Role::kRubyAnnotation: + return NSAccessibilityUnknownRole; + case ax::mojom::Role::kScrollBar: + return NSAccessibilityScrollBarRole; + case ax::mojom::Role::kScrollView: + return NSAccessibilityScrollAreaRole; + case ax::mojom::Role::kSearchBox: + return NSAccessibilityTextFieldRole; + case ax::mojom::Role::kSlider: + return NSAccessibilitySliderRole; + case ax::mojom::Role::kSpinButton: + return NSAccessibilityIncrementorRole; + case ax::mojom::Role::kSplitter: + return NSAccessibilitySplitterRole; + case ax::mojom::Role::kStaticText: + return NSAccessibilityStaticTextRole; + case ax::mojom::Role::kSwitch: + return NSAccessibilityCheckBoxRole; + case ax::mojom::Role::kTab: + return NSAccessibilityRadioButtonRole; + case ax::mojom::Role::kTable: + return NSAccessibilityTableRole; + case ax::mojom::Role::kTabList: + return NSAccessibilityTabGroupRole; + case ax::mojom::Role::kTextField: + return NSAccessibilityTextFieldRole; + case ax::mojom::Role::kTextFieldWithComboBox: + return NSAccessibilityComboBoxRole; + case ax::mojom::Role::kTitleBar: + return NSAccessibilityStaticTextRole; + case ax::mojom::Role::kToggleButton: + return NSAccessibilityCheckBoxRole; + case ax::mojom::Role::kToolbar: + return NSAccessibilityToolbarRole; + case ax::mojom::Role::kTree: + return NSAccessibilityOutlineRole; + case ax::mojom::Role::kTreeGrid: + return NSAccessibilityTableRole; + case ax::mojom::Role::kTreeItem: + return NSAccessibilityRowRole; + case ax::mojom::Role::kUnknown: + return NSAccessibilityUnknownRole; + case ax::mojom::Role::kWindow: + // Use the group role as the BrowserNativeWidgetWindow already provides + // a kWindow role, and having extra window roles, which are treated + // specially by screen readers, can break their ability to find the + // content window. See http://crbug.com/875843 for more information. + return NSAccessibilityGroupRole; + } } + (NSString*)nativeSubroleFromAXRole:(ax::mojom::Role)role {
diff --git a/ui/aura/screen_ozone.h b/ui/aura/screen_ozone.h index 7a55866c..980c083b 100644 --- a/ui/aura/screen_ozone.h +++ b/ui/aura/screen_ozone.h
@@ -8,6 +8,7 @@ #include <memory> #include <vector> +#include "build/chromeos_buildflags.h" #include "ui/aura/aura_export.h" #include "ui/display/screen.h"
diff --git a/ui/base/interaction/interaction_sequence.cc b/ui/base/interaction/interaction_sequence.cc index 3633d13b..5967b8c 100644 --- a/ui/base/interaction/interaction_sequence.cc +++ b/ui/base/interaction/interaction_sequence.cc
@@ -5,6 +5,7 @@ #include "ui/base/interaction/interaction_sequence.h" #include "base/bind.h" +#include "base/callback_forward.h" #include "base/logging.h" #include "base/memory/ptr_util.h" #include "base/memory/weak_auto_reset.h" @@ -28,6 +29,27 @@ std::move(callback).Run(args...); } +// Insert an unused argument `Arg` in the front of the argument list for +// `callback`, and return the new callback with the dummy argument. +template <typename Arg, typename Ret, typename... Args> +base::OnceCallback<Ret(Arg, Args...)> PushUnusedArg( + base::OnceCallback<Ret(Args...)> callback) { + return base::BindOnce([](base::OnceCallback<Ret(Args...)> callback, Arg arg, + Args... args) { std::move(callback).Run(args...); }, + std::move(callback)); +} + +// Insert two unused arguments `Arg1` and `Arg2` in the front of the argument +// list for `callback`, and return the new callback with the dummy arguments. +template <typename Arg1, typename Arg2, typename Ret, typename... Args> +base::OnceCallback<Ret(Arg1, Arg2, Args...)> PushUnusedArgs2( + base::OnceCallback<Ret(Args...)> callback) { + return base::BindOnce( + [](base::OnceCallback<Ret(Args...)> callback, Arg1 arg1, Arg2 arg2, + Args... args) { std::move(callback).Run(args...); }, + std::move(callback)); +} + // Sets step->must_remain_visible if it does not have a value. void SetDefaultMustRemainVisibleValue(InteractionSequence::Step* step, const InteractionSequence::Step* next) { @@ -244,11 +266,35 @@ } InteractionSequence::StepBuilder& +InteractionSequence::StepBuilder::SetStartCallback( + base::OnceCallback<void(TrackedElement*)> start_callback) { + step_->start_callback = + PushUnusedArg<InteractionSequence*>(std::move(start_callback)); + return *this; +} + +InteractionSequence::StepBuilder& +InteractionSequence::StepBuilder::SetStartCallback( + base::OnceClosure start_callback) { + step_->start_callback = + PushUnusedArgs2<InteractionSequence*, TrackedElement*>( + std::move(start_callback)); + return *this; +} + +InteractionSequence::StepBuilder& InteractionSequence::StepBuilder::SetEndCallback(StepEndCallback end_callback) { step_->end_callback = std::move(end_callback); return *this; } +InteractionSequence::StepBuilder& +InteractionSequence::StepBuilder::SetEndCallback( + base::OnceClosure end_callback) { + step_->end_callback = PushUnusedArg<TrackedElement*>(std::move(end_callback)); + return *this; +} + std::unique_ptr<InteractionSequence::Step> InteractionSequence::StepBuilder::Build() { return std::move(step_); @@ -558,6 +604,7 @@ // Set up the new current step. current_step_ = std::move(configuration_->steps.front()); configuration_->steps.pop_front(); + ++active_step_index_; DCHECK(!current_step_->element || current_step_->element == element); current_step_->element = current_step_->type == StepType::kHidden ? nullptr : element; @@ -654,13 +701,6 @@ RunIfValid(std::move(current_step_->end_callback), current_step_->element.get()); } - // Fast forward to the next step before aborting so we get the correct - // information on the failed step in the abort callback. - current_step_ = std::move(configuration_->steps.front()); - configuration_->steps.pop_front(); - // We don't want to call the step-end callback during Abort() since we - // didn't technically start the step. - current_step_->end_callback = StepEndCallback(); Abort(AbortedReason::kElementNotVisibleAtStartOfStep); return; } @@ -745,35 +785,44 @@ void InteractionSequence::Abort(AbortedReason reason) { DCHECK(started_); - configuration_->steps.clear(); next_step_hidden_subscription_ = ElementTracker::Subscription(); - // The current object could be destroyed during callbacks, so ensure we save - // a handle to the testing run loop (if there is one). + // The entire InteractionSequence could also go away during a callback, so + // save anything we need locally so that we don't have to access any class + // members as we finish terminating the sequence. base::OnceClosure quit_closure = std::move(quit_run_loop_closure_for_testing_); - if (current_step_) { + std::unique_ptr<Step> current_step = std::move(current_step_); + AbortedCallback aborted_callback = + std::move(configuration_->aborted_callback); + int active_step_index = active_step_index_; + StepType target_step_type = StepType::kShown; + ElementIdentifier target_id; + // The element could go away independently of the sequence. + SafeElementReference target_element; + if (reason == AbortedReason::kElementNotVisibleAtStartOfStep || + reason == AbortedReason::kElementHiddenBeforeSequenceStart) { + ++active_step_index; + if (next_step()) { + target_step_type = next_step()->type; + target_id = next_step()->id; + } + } else if (current_step) { + target_step_type = current_step->type; + target_id = current_step->id; + target_element = SafeElementReference(current_step->element); + } + configuration_->steps.clear(); + + // Note that if the sequence has already been aborted, this is a no-op, the + // callbacks will already be null. + if (current_step) { // Stop listening for events; we don't want additional callbacks during // teardown. - current_step_->subscription = ElementTracker::Subscription(); - // The current step's element could go away during a callback, so hedge our - // bets by using a safe reference. - SafeElementReference element(current_step_->element); - // The entire InteractionSequence could also go away during a callback, so - // save anything we need locally so that we don't have to access any class - // members as we finish terminating the sequence. - std::unique_ptr<Step> last_step = std::move(current_step_); - AbortedCallback aborted_callback = - std::move(configuration_->aborted_callback); - RunIfValid(std::move(last_step->end_callback), element.get()); - RunIfValid(std::move(aborted_callback), element.get(), last_step->id, - last_step->type, reason); - } else { - // Aborted before any steps were run. Pass default values. - // Note that if the sequence has already been aborted, this is a no-op, the - // callback will already be null. - RunIfValid(std::move(configuration_->aborted_callback), nullptr, - ElementIdentifier(), StepType::kShown, reason); + current_step->subscription = ElementTracker::Subscription(); + RunIfValid(std::move(current_step->end_callback), current_step->element); } + RunIfValid(std::move(aborted_callback), active_step_index, + target_element.get(), target_id, target_step_type, reason); RunIfValid(std::move(quit_closure)); }
diff --git a/ui/base/interaction/interaction_sequence.h b/ui/base/interaction/interaction_sequence.h index 4f87f19a..e67a4f6 100644 --- a/ui/base/interaction/interaction_sequence.h +++ b/ui/base/interaction/interaction_sequence.h
@@ -103,8 +103,14 @@ // sequence of steps, or if this object is deleted after the sequence starts. // The most recent event is described by the parameters; if the target element // is no longer available it will be null. + // + // The active step will be 0 before the sequence starts, and is incremented on + // each step transition after the previous step's end callback is called, or + // if the next step's precondition fails (so that it refers to the correct + // step). using AbortedCallback = - base::OnceCallback<void(TrackedElement* last_element, + base::OnceCallback<void(int active_step, + TrackedElement* last_element, ElementIdentifier last_id, StepType last_step_type, AbortedReason aborted_reason)>; @@ -256,12 +262,25 @@ // Sets the callback called at the start of the step. StepBuilder& SetStartCallback(StepStartCallback start_callback); + // Sets the callback called at the start of the step. Convenience method + // that eliminates the InteractionSequence argument if you do not need it. + StepBuilder& SetStartCallback( + base::OnceCallback<void(TrackedElement*)> start_callback); + + // Sets the callback called at the start of the step. Convenience method + // that eliminates both arguments if you do not need them. + StepBuilder& SetStartCallback(base::OnceClosure start_callback); + // Sets the callback called at the end of the step. Guaranteed to be called // if the start callback is called, before the start callback of the next // step or the sequence aborted or completed callback. Also called if this // object is destroyed while the step is still in-process. StepBuilder& SetEndCallback(StepEndCallback end_callback); + // Sets the callback called at the end of the step. Convenience method if + // you don't need the parameter. + StepBuilder& SetEndCallback(base::OnceClosure end_callback); + // Builds the step. The builder will not be valid after calling Build(). std::unique_ptr<Step> Build(); @@ -378,6 +397,7 @@ // context() if `target` is null. ElementContext GetElementContext(const TrackedElement* target) const; + int active_step_index_ = 0; bool missing_first_element_ = false; bool started_ = false; bool trigger_during_callback_ = false;
diff --git a/ui/base/interaction/interaction_sequence_unittest.cc b/ui/base/interaction/interaction_sequence_unittest.cc index c41ee88d..291a30ab 100644 --- a/ui/base/interaction/interaction_sequence_unittest.cc +++ b/ui/base/interaction/interaction_sequence_unittest.cc
@@ -136,7 +136,7 @@ element.reset(); EXPECT_CALL_IN_SCOPE( aborted, - Run(nullptr, ElementIdentifier(), InteractionSequence::StepType::kShown, + Run(1, nullptr, kTestIdentifier1, InteractionSequence::StepType::kShown, InteractionSequence::AbortedReason:: kElementHiddenBeforeSequenceStart), sequence->Start()); @@ -384,7 +384,7 @@ .Build(); EXPECT_CALL_IN_SCOPE( aborted, - Run(nullptr, element2.identifier(), + Run(2, nullptr, element2.identifier(), InteractionSequence::StepType::kCustomEvent, InteractionSequence::AbortedReason::kElementNotVisibleAtStartOfStep), sequence->Start()); @@ -435,7 +435,8 @@ .Build(); EXPECT_CALL( aborted, - Run(nullptr, element2.identifier(), InteractionSequence::StepType::kShown, + Run(2, nullptr, element2.identifier(), + InteractionSequence::StepType::kShown, InteractionSequence::AbortedReason::kElementNotVisibleAtStartOfStep)) .Times(1); sequence->Start(); @@ -540,7 +541,7 @@ .Build(); EXPECT_CALL( aborted, - Run(nullptr, element2.identifier(), + Run(2, nullptr, element2.identifier(), InteractionSequence::StepType::kHidden, InteractionSequence::AbortedReason::kElementNotVisibleAtStartOfStep)) .Times(1); @@ -866,7 +867,7 @@ EXPECT_CALLS_IN_SCOPE_2( step2_end, Run, aborted, - Run(testing::_, element2.identifier(), + Run(3, testing::_, element2.identifier(), InteractionSequence::StepType::kActivated, InteractionSequence::AbortedReason::kElementHiddenDuringStep), element2.Hide()); @@ -1605,7 +1606,8 @@ // called. EXPECT_CALL_IN_SCOPE( aborted, - Run(nullptr, element2.identifier(), InteractionSequence::StepType::kShown, + Run(2, nullptr, element2.identifier(), + InteractionSequence::StepType::kShown, InteractionSequence::AbortedReason::kSequenceDestroyed), sequence.reset()); } @@ -1675,7 +1677,7 @@ element1.Show(); std::unique_ptr<InteractionSequence> sequence; - auto callback = [&](TrackedElement*, ElementIdentifier, + auto callback = [&](int, TrackedElement*, ElementIdentifier, InteractionSequence::StepType, InteractionSequence::AbortedReason) { sequence.reset(); }; sequence = @@ -1783,7 +1785,7 @@ element1.Show(); std::unique_ptr<InteractionSequence> sequence; - auto callback = [&](TrackedElement*, ElementIdentifier, + auto callback = [&](int, TrackedElement*, ElementIdentifier, InteractionSequence::StepType, InteractionSequence::AbortedReason) { sequence.reset(); }; sequence = @@ -2187,7 +2189,7 @@ sequence->Start(); EXPECT_CALLS_IN_SCOPE_3( step1_end, Run, step2_end, Run, aborted, - Run(nullptr, element3.identifier(), + Run(3, nullptr, element3.identifier(), InteractionSequence::StepType::kActivated, InteractionSequence::AbortedReason::kElementNotVisibleAtStartOfStep), element1.Show()); @@ -2227,7 +2229,7 @@ sequence->Start(); EXPECT_CALLS_IN_SCOPE_3( step1_end, Run, step2_end, Run, aborted, - Run(nullptr, element3.identifier(), + Run(3, nullptr, element3.identifier(), InteractionSequence::StepType::kCustomEvent, InteractionSequence::AbortedReason::kElementNotVisibleAtStartOfStep), element1.Show()); @@ -2322,7 +2324,7 @@ // Fail step four. EXPECT_CALL_IN_SCOPE( aborted, - Run(&element3, element3.identifier(), + Run(4, &element3, element3.identifier(), InteractionSequence::StepType::kShown, InteractionSequence::AbortedReason::kElementHiddenDuringStep), element3.Hide()); @@ -2382,7 +2384,7 @@ // Fail step four. EXPECT_CALL_IN_SCOPE( aborted, - Run(&element3, element3.identifier(), + Run(4, &element3, element3.identifier(), InteractionSequence::StepType::kShown, InteractionSequence::AbortedReason::kElementHiddenDuringStep), element3.Hide()); @@ -2634,7 +2636,8 @@ element1.Hide(); EXPECT_CALL_IN_SCOPE( aborted, - Run(nullptr, element1.identifier(), InteractionSequence::StepType::kShown, + Run(1, nullptr, element1.identifier(), + InteractionSequence::StepType::kShown, InteractionSequence::AbortedReason::kElementNotVisibleAtStartOfStep), sequence->Start()); } @@ -2667,7 +2670,8 @@ element2.Hide(); EXPECT_CALL_IN_SCOPE( aborted, - Run(nullptr, element2.identifier(), InteractionSequence::StepType::kShown, + Run(3, nullptr, element2.identifier(), + InteractionSequence::StepType::kShown, InteractionSequence::AbortedReason::kElementNotVisibleAtStartOfStep), element1.Activate()); } @@ -3870,4 +3874,35 @@ EXPECT_CALL_IN_SCOPE(completed, Run, element1.Show()); } +TEST(InteractionSequenceTest, StepStartEndConvenienceMethods) { + UNCALLED_MOCK_CALLBACK(InteractionSequence::AbortedCallback, aborted); + UNCALLED_MOCK_CALLBACK(InteractionSequence::CompletedCallback, completed); + UNCALLED_MOCK_CALLBACK(base::OnceCallback<void(TrackedElement*)>, + step1_start); + UNCALLED_MOCK_CALLBACK(base::OnceClosure, step1_end); + UNCALLED_MOCK_CALLBACK(base::OnceClosure, step2_start); + test::TestElement element(kTestIdentifier1, kTestContext1); + auto sequence = + InteractionSequence::Builder() + .SetAbortedCallback(aborted.Get()) + .SetCompletedCallback(completed.Get()) + .SetContext(element.context()) + .AddStep(InteractionSequence::StepBuilder() + .SetElementID(element.identifier()) + .SetType(InteractionSequence::StepType::kShown) + .SetMustBeVisibleAtStart(false) + .SetStartCallback(step1_start.Get()) + .SetEndCallback(step1_end.Get())) + .AddStep(InteractionSequence::StepBuilder() + .SetElementID(element.identifier()) + .SetType(InteractionSequence::StepType::kActivated) + .SetStartCallback(step2_start.Get())) + .Build(); + + sequence->Start(); + EXPECT_CALL_IN_SCOPE(step1_start, Run(&element), element.Show()); + EXPECT_CALLS_IN_SCOPE_3(step1_end, Run, step2_start, Run, completed, Run, + element.Activate()); +} + } // namespace ui
diff --git a/ui/base/resource/data_pack.h b/ui/base/resource/data_pack.h index 8587aa4..00e7a40 100644 --- a/ui/base/resource/data_pack.h +++ b/ui/base/resource/data_pack.h
@@ -20,6 +20,7 @@ #include "base/files/memory_mapped_file.h" #include "base/memory/raw_ptr.h" #include "base/strings/string_piece.h" +#include "build/chromeos_buildflags.h" #include "ui/base/resource/data_pack_export.h" #include "ui/base/resource/resource_handle.h"
diff --git a/ui/display/screen.h b/ui/display/screen.h index 2f9f49a..3771a345 100644 --- a/ui/display/screen.h +++ b/ui/display/screen.h
@@ -10,6 +10,7 @@ #include <vector> #include "base/values.h" +#include "build/chromeos_buildflags.h" #include "ui/display/display.h" #include "ui/display/display_export.h" #include "ui/display/screen_infos.h"
diff --git a/ui/events/ozone/evdev/touch_filter/neural_stylus_palm_detection_filter_model.h b/ui/events/ozone/evdev/touch_filter/neural_stylus_palm_detection_filter_model.h index fdf858b..c6c2588 100644 --- a/ui/events/ozone/evdev/touch_filter/neural_stylus_palm_detection_filter_model.h +++ b/ui/events/ozone/evdev/touch_filter/neural_stylus_palm_detection_filter_model.h
@@ -74,6 +74,9 @@ // If true, uses current active tracking_id count as a feature. bool use_active_tracking_id_count = false; + // The model version (e.g. "alpha" for kohaku, "beta" for redrix) to use. + std::string model_version; + // If empty, the radius by the device is left as is. // If non empty, the radius reported by device is re-sized in features by the // polynomial defined in this vector. E.g. if this vector is {0.5, 1.3,
diff --git a/ui/events/ozone/evdev/touch_filter/palm_detection_filter_factory.cc b/ui/events/ozone/evdev/touch_filter/palm_detection_filter_factory.cc index dca2652..a01d016 100644 --- a/ui/events/ozone/evdev/touch_filter/palm_detection_filter_factory.cc +++ b/ui/events/ozone/evdev/touch_filter/palm_detection_filter_factory.cc
@@ -84,6 +84,28 @@ // By default, return the original. return param_string; } + +std::string FetchNeuralPalmModelVersion(const EventDeviceInfo& devinfo, + const std::string param_string) { + if (!param_string.empty()) { + return param_string; + } + + // look at the command line. + absl::optional<base::Value> ozone_switch_value = base::JSONReader::Read( + base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII( + kOzoneNNPalmSwitchName)); + if (ozone_switch_value != absl::nullopt && ozone_switch_value->is_dict()) { + std::string* switch_string_value = + ozone_switch_value->FindStringKey(kOzoneNNPalmModelVersionProperty); + if (switch_string_value != nullptr) { + return *switch_string_value; + } + } + + // By default, return the original. + return param_string; +} } // namespace internal std::unique_ptr<PalmDetectionFilter> CreatePalmDetectionFilter( @@ -97,10 +119,12 @@ VLOG(1) << "Will attempt to use radius polynomial: " << polynomial_string; std::vector<float> radius_polynomial = internal::ParseRadiusPolynomial(polynomial_string); + std::string model_version = internal::FetchNeuralPalmModelVersion( + devinfo, kNeuralPalmModelVersion.Get()); // There's only one model right now. std::unique_ptr<NeuralStylusPalmDetectionFilterModel> model = std::make_unique<OneDeviceTrainNeuralStylusPalmDetectionFilterModel>( - radius_polynomial); + model_version, radius_polynomial); return std::make_unique<NeuralStylusPalmDetectionFilter>( devinfo, std::move(model), shared_palm_state); }
diff --git a/ui/events/ozone/evdev/touch_filter/palm_detection_filter_factory.h b/ui/events/ozone/evdev/touch_filter/palm_detection_filter_factory.h index 8a9f605..6c64cc3 100644 --- a/ui/events/ozone/evdev/touch_filter/palm_detection_filter_factory.h +++ b/ui/events/ozone/evdev/touch_filter/palm_detection_filter_factory.h
@@ -36,6 +36,12 @@ COMPONENT_EXPORT(EVDEV) std::string FetchNeuralPalmRadiusPolynomial(const EventDeviceInfo& devinfo, const std::string param_string); + +// Returns the model version to use on the current device. If empty will use +// alpha model. +COMPONENT_EXPORT(EVDEV) +std::string FetchNeuralPalmModelVersion(const EventDeviceInfo& devinfo, + const std::string param_string); } // namespace internal } // namespace ui
diff --git a/ui/events/ozone/evdev/touch_filter/palm_model/onedevice_train_palm_detection_filter_model.cc b/ui/events/ozone/evdev/touch_filter/palm_model/onedevice_train_palm_detection_filter_model.cc index 2eeaf29..6b65980 100644 --- a/ui/events/ozone/evdev/touch_filter/palm_model/onedevice_train_palm_detection_filter_model.cc +++ b/ui/events/ozone/evdev/touch_filter/palm_model/onedevice_train_palm_detection_filter_model.cc
@@ -93,8 +93,10 @@ OneDeviceTrainNeuralStylusPalmDetectionFilterModel:: OneDeviceTrainNeuralStylusPalmDetectionFilterModel( + const std::string& model_version, const std::vector<float>& radius_poly) : OneDeviceTrainNeuralStylusPalmDetectionFilterModel() { + config_.model_version = model_version; config_.radius_polynomial_resize = radius_poly; }
diff --git a/ui/events/ozone/evdev/touch_filter/palm_model/onedevice_train_palm_detection_filter_model.h b/ui/events/ozone/evdev/touch_filter/palm_model/onedevice_train_palm_detection_filter_model.h index a058d71a..f94c9eb 100644 --- a/ui/events/ozone/evdev/touch_filter/palm_model/onedevice_train_palm_detection_filter_model.h +++ b/ui/events/ozone/evdev/touch_filter/palm_model/onedevice_train_palm_detection_filter_model.h
@@ -20,6 +20,7 @@ public: OneDeviceTrainNeuralStylusPalmDetectionFilterModel(); explicit OneDeviceTrainNeuralStylusPalmDetectionFilterModel( + const std::string& model_version, const std::vector<float>& radius_poly); OneDeviceTrainNeuralStylusPalmDetectionFilterModel(
diff --git a/ui/events/ozone/features.cc b/ui/events/ozone/features.cc index fdaf5dd1..8e557b7 100644 --- a/ui/events/ozone/features.cc +++ b/ui/events/ozone/features.cc
@@ -44,6 +44,9 @@ extern const base::FeatureParam<std::string> kNeuralPalmRadiusPolynomial{ &kEnableNeuralPalmDetectionFilter, "neural_palm_radius_polynomial", ""}; +extern const base::FeatureParam<std::string> kNeuralPalmModelVersion{ + &kEnableNeuralPalmDetectionFilter, "neural_palm_model_version", ""}; + const base::FeatureParam<double> kHeuristicCancelThresholdSeconds{ &kEnableHeuristicPalmDetectionFilter, "heuristic_palm_cancel_threshold_seconds", 0.4}; @@ -61,6 +64,7 @@ constexpr char kOzoneNNPalmSwitchName[] = "ozone-nnpalm-properties"; constexpr char kOzoneNNPalmTouchCompatibleProperty[] = "touch-compatible"; +constexpr char kOzoneNNPalmModelVersionProperty[] = "model"; constexpr char kOzoneNNPalmRadiusPolynomialProperty[] = "radius-polynomial"; } // namespace ui
diff --git a/ui/events/ozone/features.h b/ui/events/ozone/features.h index 70b5e49..2cdfab5 100644 --- a/ui/events/ozone/features.h +++ b/ui/events/ozone/features.h
@@ -35,6 +35,9 @@ extern const base::Feature kEnablePalmOnToolTypePalm; COMPONENT_EXPORT(EVENTS_OZONE) +extern const base::FeatureParam<std::string> kNeuralPalmModelVersion; + +COMPONENT_EXPORT(EVENTS_OZONE) extern const base::FeatureParam<std::string> kNeuralPalmRadiusPolynomial; COMPONENT_EXPORT(EVENTS_OZONE) @@ -65,8 +68,10 @@ extern const char kOzoneNNPalmTouchCompatibleProperty[]; COMPONENT_EXPORT(EVENTS_OZONE) -extern const char kOzoneNNPalmRadiusPolynomialProperty[]; +extern const char kOzoneNNPalmModelVersionProperty[]; +COMPONENT_EXPORT(EVENTS_OZONE) +extern const char kOzoneNNPalmRadiusPolynomialProperty[]; } // namespace ui #endif // UI_EVENTS_OZONE_FEATURES_H_
diff --git a/ui/gl/gpu_preference.h b/ui/gl/gpu_preference.h index d4deecf..26d5444 100644 --- a/ui/gl/gpu_preference.h +++ b/ui/gl/gpu_preference.h
@@ -15,6 +15,7 @@ // This API will likely need to be adjusted as the functionality is // implemented on more operating systems. enum class GpuPreference { + kNone, kDefault, kLowPower, kHighPerformance,
diff --git a/ui/gl/mojom/gpu_preference.mojom b/ui/gl/mojom/gpu_preference.mojom index 645f6fb..4aac5e6 100644 --- a/ui/gl/mojom/gpu_preference.mojom +++ b/ui/gl/mojom/gpu_preference.mojom
@@ -6,6 +6,7 @@ // gl::GpuPreference enum GpuPreference { + kNone, kDefault, kLowPower, kHighPerformance,
diff --git a/ui/gl/mojom/gpu_preference_mojom_traits.h b/ui/gl/mojom/gpu_preference_mojom_traits.h index b4f1944..0aeb28d7 100644 --- a/ui/gl/mojom/gpu_preference_mojom_traits.h +++ b/ui/gl/mojom/gpu_preference_mojom_traits.h
@@ -15,6 +15,8 @@ struct EnumTraits<gl::mojom::GpuPreference, gl::GpuPreference> { static gl::mojom::GpuPreference ToMojom(gl::GpuPreference preference) { switch (preference) { + case gl::GpuPreference::kNone: + return gl::mojom::GpuPreference::kNone; case gl::GpuPreference::kDefault: return gl::mojom::GpuPreference::kDefault; case gl::GpuPreference::kLowPower: @@ -29,6 +31,9 @@ static bool FromMojom(gl::mojom::GpuPreference input, gl::GpuPreference* out) { switch (input) { + case gl::mojom::GpuPreference::kNone: + *out = gl::GpuPreference::kNone; + return true; case gl::mojom::GpuPreference::kDefault: *out = gl::GpuPreference::kDefault; return true;
diff --git a/ui/ozone/platform/drm/test/integration_test_helpers.h b/ui/ozone/platform/drm/test/integration_test_helpers.h index 745089c..81eec1ad 100644 --- a/ui/ozone/platform/drm/test/integration_test_helpers.h +++ b/ui/ozone/platform/drm/test/integration_test_helpers.h
@@ -5,6 +5,7 @@ #ifndef UI_OZONE_PLATFORM_DRM_TEST_INTEGRATION_TEST_HELPERS_H_ #define UI_OZONE_PLATFORM_DRM_TEST_INTEGRATION_TEST_HELPERS_H_ +#include <string> #include <utility> namespace base {
diff --git a/ui/ozone/platform/wayland/host/wayland_data_device.cc b/ui/ozone/platform/wayland/host/wayland_data_device.cc index 6e79891..728b64c 100644 --- a/ui/ozone/platform/wayland/host/wayland_data_device.cc +++ b/ui/ozone/platform/wayland/host/wayland_data_device.cc
@@ -11,6 +11,7 @@ #include "base/bind.h" #include "base/files/scoped_file.h" #include "base/logging.h" +#include "build/chromeos_buildflags.h" #include "ui/gfx/geometry/point_f.h" #include "ui/ozone/platform/wayland/common/wayland_object.h" #include "ui/ozone/platform/wayland/common/wayland_util.h"
diff --git a/ui/views/controls/menu/menu_controller_unittest.cc b/ui/views/controls/menu/menu_controller_unittest.cc index 55d6818..11d8b1a7 100644 --- a/ui/views/controls/menu/menu_controller_unittest.cc +++ b/ui/views/controls/menu/menu_controller_unittest.cc
@@ -17,6 +17,7 @@ #include "base/test/bind.h" #include "base/threading/thread_task_runner_handle.h" #include "build/build_config.h" +#include "build/chromeos_buildflags.h" #include "ui/accessibility/ax_action_data.h" #include "ui/accessibility/ax_node_data.h" #include "ui/base/dragdrop/mojom/drag_drop_types.mojom.h"
diff --git a/ui/views/test/ui_controls_factory_desktop_aura_ozone.cc b/ui/views/test/ui_controls_factory_desktop_aura_ozone.cc index 82362ba..bec549b8 100644 --- a/ui/views/test/ui_controls_factory_desktop_aura_ozone.cc +++ b/ui/views/test/ui_controls_factory_desktop_aura_ozone.cc
@@ -15,6 +15,7 @@ #include "base/task/single_thread_task_runner.h" #include "base/threading/thread_task_runner_handle.h" #include "build/build_config.h" +#include "build/chromeos_buildflags.h" #include "ui/aura/client/screen_position_client.h" #include "ui/aura/env.h" #include "ui/aura/test/aura_test_utils.h"
diff --git a/ui/views/widget/ax_native_widget_mac_unittest.mm b/ui/views/widget/ax_native_widget_mac_unittest.mm index 2790e22..f6a7f430 100644 --- a/ui/views/widget/ax_native_widget_mac_unittest.mm +++ b/ui/views/widget/ax_native_widget_mac_unittest.mm
@@ -191,8 +191,10 @@ // attribute normally and returns its size (if it's an array). base::scoped_nsprotocol<id<NSAccessibility>> ax_parent( ax_obj.accessibilityParent, base::scoped_policy::RETAIN); - EXPECT_EQ(1u, ax_parent.get().accessibilityChildren.count); - EXPECT_EQ(ax_node.get(), ax_parent.get().accessibilityChildren[0]); + + // There are two children: a NativeFrameView and the TextField. + EXPECT_EQ(2u, ax_parent.get().accessibilityChildren.count); + EXPECT_EQ(ax_node.get(), ax_parent.get().accessibilityChildren[1]); // If it is not an array, the default implementation throws an exception, so // it's impossible to test these methods further on |ax_node|, apart from the @@ -225,8 +227,9 @@ EXPECT_EQ(NSNotFound, static_cast<NSInteger>( [ax_node accessibilityIndexOfChild:ax_node])); - // The Widget is currently still around, but the child should be gone. - EXPECT_EQ(0u, ax_parent.get().accessibilityChildren.count); + // The Widget is currently still around, but the TextField should be gone, + // leaving just the NativeFrameView. + EXPECT_EQ(1u, ax_parent.get().accessibilityChildren.count); } // Check that potentially keyboard-focusable elements are always leaf nodes. @@ -259,9 +262,10 @@ // Test for NSAccessibilityChildrenAttribute, and ensure it excludes ignored // children from the accessibility tree. TEST_F(AXNativeWidgetMacTest, ChildrenAttribute) { - // Check childless views don't have accessibility children. - id<NSAccessibility> ax_node = A11yElementAtMidpoint(); - EXPECT_EQ(0u, ax_node.accessibilityChildren.count); + // The ContentsView initially has a single child, a NativeFrameView. + id<NSAccessibility> ax_node = + widget()->GetContentsView()->GetNativeViewAccessible(); + EXPECT_EQ(1u, ax_node.accessibilityChildren.count); const size_t kNumChildren = 3; for (size_t i = 0; i < kNumChildren; ++i) { @@ -269,12 +273,13 @@ AddChildTextfield(gfx::Size()); } - EXPECT_EQ(kNumChildren, ax_node.accessibilityChildren.count); + // Having added three non-ignored children, the count is four. + EXPECT_EQ(kNumChildren + 1, ax_node.accessibilityChildren.count); // Check ignored children don't show up in the accessibility tree. widget()->GetContentsView()->AddChildView( new FlexibleRoleTestView(ax::mojom::Role::kNone)); - EXPECT_EQ(kNumChildren, ax_node.accessibilityChildren.count); + EXPECT_EQ(kNumChildren + 1, ax_node.accessibilityChildren.count); } // Test for NSAccessibilityParentAttribute, including for a Widget with no
diff --git a/ui/views/widget/desktop_aura/OWNERS b/ui/views/widget/desktop_aura/OWNERS index 3d8482e..5a2641f 100644 --- a/ui/views/widget/desktop_aura/OWNERS +++ b/ui/views/widget/desktop_aura/OWNERS
@@ -1,3 +1,4 @@ per-file *x11*=thomasanderson@chromium.org per-file window_event_filter*=thomasanderson@chromium.org +per-file desktop_window_tree_host_platform*=thomasanderson@chromium.org per-file *linux*=thomasanderson@chromium.org
diff --git a/ui/views/widget/desktop_aura/desktop_screen_ozone.cc b/ui/views/widget/desktop_aura/desktop_screen_ozone.cc index eada92c..6716c3c 100644 --- a/ui/views/widget/desktop_aura/desktop_screen_ozone.cc +++ b/ui/views/widget/desktop_aura/desktop_screen_ozone.cc
@@ -27,7 +27,7 @@ #if !BUILDFLAG(IS_LINUX) std::unique_ptr<display::Screen> CreateDesktopScreen() { - auto screen = std::make_unique<aura::ScreenOzone>(); + auto screen = std::make_unique<DesktopScreenOzone>(); screen->Initialize(); return screen; }
diff --git a/ui/webui/resources/cr_components/app_management/BUILD.gn b/ui/webui/resources/cr_components/app_management/BUILD.gn index 1f61e9b..bcf4f49 100644 --- a/ui/webui/resources/cr_components/app_management/BUILD.gn +++ b/ui/webui/resources/cr_components/app_management/BUILD.gn
@@ -5,8 +5,10 @@ import("//mojo/public/tools/bindings/mojom.gni") import("//tools/grit/preprocess_if_expr.gni") import("//tools/polymer/html_to_js.gni") +import("//tools/polymer/html_to_wrapper.gni") import("//tools/typescript/ts_library.gni") import("//ui/webui/resources/tools/generate_grd.gni") +import("app_management.gni") assert(!is_android && !is_ios) @@ -14,29 +16,12 @@ preprocess_folder = "$root_gen_dir/ui/webui/resources/preprocessed/cr_components/app_management" -web_component_files = [ - "file_handling_item.ts", - "icons.ts", - "more_permissions_item.ts", - "permission_item.ts", - "run_on_os_login_item.ts", - "shared_style.ts", - "shared_vars.ts", - "toggle_row.ts", - "uninstall_button.ts", - "window_mode_item.ts", -] +html_to_js("css_wrapper_files") { + js_files = css_wrapper_files +} -non_web_component_files = [ - "constants.ts", - "permission_constants.ts", - "permission_util.ts", - "browser_proxy.ts", - "util.ts", -] - -html_to_js("web_components") { - js_files = web_component_files +html_to_wrapper("html_wrapper_files") { + in_files = html_files } mojom("mojo_bindings") { @@ -105,15 +90,18 @@ visibility = [ ":build_ts" ] in_folder = "." out_folder = preprocess_folder_tmp - in_files = non_web_component_files + in_files = ts_files } preprocess_if_expr("preprocess_generated") { visibility = [ ":build_ts" ] - deps = [ ":web_components" ] + deps = [ + ":css_wrapper_files", + ":html_wrapper_files", + ] in_folder = target_gen_dir out_folder = preprocess_folder_tmp - in_files = web_component_files + in_files = html_wrapper_files + css_wrapper_files } copy("copy_mojo") { @@ -133,10 +121,7 @@ out_dir = preprocess_folder composite = true tsconfig_base = "tsconfig_base.json" - in_files = web_component_files + non_web_component_files + [ - "app_management.mojom-webui.js", - "types.mojom-webui.js", - ] + in_files = ts_files + html_wrapper_files + css_wrapper_files + mojo_files definitions = [ "//tools/typescript/definitions/metrics_private.d.ts" ]
diff --git a/ui/webui/resources/cr_components/app_management/app_management.gni b/ui/webui/resources/cr_components/app_management/app_management.gni new file mode 100644 index 0000000..a373833 --- /dev/null +++ b/ui/webui/resources/cr_components/app_management/app_management.gni
@@ -0,0 +1,46 @@ +# Copyright 2022 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +_web_component_files = [ + "file_handling_item.ts", + "more_permissions_item.ts", + "permission_item.ts", + "run_on_os_login_item.ts", + "toggle_row.ts", + "uninstall_button.ts", + "window_mode_item.ts", +] + +# Files that are passed as input to html_to_wrapper(). +html_files = [] +foreach(f, _web_component_files) { + html_files += [ string_replace(f, ".ts", ".html") ] +} + +# Files that are generated by html_to_wrapper(). +html_wrapper_files = [] +foreach(f, html_files) { + html_wrapper_files += [ f + ".ts" ] +} + +_non_web_component_files = [ + "constants.ts", + "permission_constants.ts", + "permission_util.ts", + "browser_proxy.ts", + "util.ts", +] + +mojo_files = [ + "app_management.mojom-webui.js", + "types.mojom-webui.js", +] + +ts_files = _web_component_files + _non_web_component_files + +css_wrapper_files = [ + "icons.ts", + "shared_style.ts", + "shared_vars.ts", +]
diff --git a/ui/webui/resources/cr_components/app_management/file_handling_item.ts b/ui/webui/resources/cr_components/app_management/file_handling_item.ts index 5e1b089..42cd6b6 100644 --- a/ui/webui/resources/cr_components/app_management/file_handling_item.ts +++ b/ui/webui/resources/cr_components/app_management/file_handling_item.ts
@@ -7,7 +7,7 @@ import {assert} from '//resources/js/assert.m.js'; import {focusWithoutInk} from 'chrome://resources/js/cr/ui/focus_without_ink.m.js'; -import {html, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; +import {PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; import {CrDialogElement} from '../../cr_elements/cr_dialog/cr_dialog.m.js'; import {I18nMixin} from '../../js/i18n_mixin.js'; @@ -15,6 +15,7 @@ import {App} from './app_management.mojom-webui.js'; import {BrowserProxy} from './browser_proxy.js'; import {AppManagementUserAction} from './constants.js'; +import {getTemplate} from './file_handling_item.html.js'; import {AppManagementToggleRowElement} from './toggle_row.js'; import {recordAppManagementUserAction} from './util.js'; @@ -27,7 +28,7 @@ } static get template() { - return html`{__html_template__}`; + return getTemplate(); } static get properties() {
diff --git a/ui/webui/resources/cr_components/app_management/more_permissions_item.ts b/ui/webui/resources/cr_components/app_management/more_permissions_item.ts index b56a792..bdf6aa9b 100644 --- a/ui/webui/resources/cr_components/app_management/more_permissions_item.ts +++ b/ui/webui/resources/cr_components/app_management/more_permissions_item.ts
@@ -5,11 +5,12 @@ import './shared_style.js'; import '//resources/cr_elements/cr_icon_button/cr_icon_button.m.js'; -import {html, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; +import {PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; import {App} from './app_management.mojom-webui.js'; import {BrowserProxy} from './browser_proxy.js'; import {AppManagementUserAction} from './constants.js'; +import {getTemplate} from './more_permissions_item.html.js'; import {recordAppManagementUserAction} from './util.js'; export class AppManagementMorePermissionsItemElement extends PolymerElement { @@ -18,7 +19,7 @@ } static get template() { - return html`{__html_template__}`; + return getTemplate(); } static get properties() {
diff --git a/ui/webui/resources/cr_components/app_management/permission_item.ts b/ui/webui/resources/cr_components/app_management/permission_item.ts index 73e2086..ccdbc02 100644 --- a/ui/webui/resources/cr_components/app_management/permission_item.ts +++ b/ui/webui/resources/cr_components/app_management/permission_item.ts
@@ -5,13 +5,13 @@ import './toggle_row.js'; import {assert, assertNotReached} from '//resources/js/assert.m.js'; -import {html, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; +import {PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; -import {App} from './app_management.mojom-webui.js'; -import {Permission} from './app_management.mojom-webui.js'; +import {App, Permission} from './app_management.mojom-webui.js'; import {BrowserProxy} from './browser_proxy.js'; import {AppManagementUserAction} from './constants.js'; import {PermissionType, PermissionTypeIndex, TriState} from './permission_constants.js'; +import {getTemplate} from './permission_item.html.js'; import {createBoolPermission, createTriStatePermission, getBoolPermissionValue, getTriStatePermissionValue, isBoolValue, isTriStateValue} from './permission_util.js'; import {AppManagementToggleRowElement} from './toggle_row.js'; import {getPermission, getPermissionValueBool, recordAppManagementUserAction} from './util.js'; @@ -22,7 +22,7 @@ } static get template() { - return html`{__html_template__}`; + return getTemplate(); } static get properties() {
diff --git a/ui/webui/resources/cr_components/app_management/run_on_os_login_item.ts b/ui/webui/resources/cr_components/app_management/run_on_os_login_item.ts index ce55807..217e40f 100644 --- a/ui/webui/resources/cr_components/app_management/run_on_os_login_item.ts +++ b/ui/webui/resources/cr_components/app_management/run_on_os_login_item.ts
@@ -6,11 +6,12 @@ import './toggle_row.js'; import {assert, assertNotReached} from '//resources/js/assert.m.js'; -import {html, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; +import {PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; import {App} from './app_management.mojom-webui.js'; import {BrowserProxy} from './browser_proxy.js'; import {AppManagementUserAction, RunOnOsLoginMode} from './constants.js'; +import {getTemplate} from './run_on_os_login_item.html.js'; import {AppManagementToggleRowElement} from './toggle_row.js'; import {recordAppManagementUserAction} from './util.js'; @@ -20,7 +21,7 @@ } static get template() { - return html`{__html_template__}`; + return getTemplate(); } static get properties() {
diff --git a/ui/webui/resources/cr_components/app_management/toggle_row.ts b/ui/webui/resources/cr_components/app_management/toggle_row.ts index f06220ed..2c5dd17 100644 --- a/ui/webui/resources/cr_components/app_management/toggle_row.ts +++ b/ui/webui/resources/cr_components/app_management/toggle_row.ts
@@ -7,7 +7,9 @@ import '//resources/cr_elements/icons.m.js'; import {CrToggleElement} from '//resources/cr_elements/cr_toggle/cr_toggle.m.js'; -import {html, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; +import {PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; + +import {getTemplate} from './toggle_row.html.js'; export interface AppManagementToggleRowElement { $: {toggle: CrToggleElement}; @@ -19,7 +21,7 @@ } static get template() { - return html`{__html_template__}`; + return getTemplate(); } static get properties() {
diff --git a/ui/webui/resources/cr_components/app_management/uninstall_button.ts b/ui/webui/resources/cr_components/app_management/uninstall_button.ts index d98b554..b92e458 100644 --- a/ui/webui/resources/cr_components/app_management/uninstall_button.ts +++ b/ui/webui/resources/cr_components/app_management/uninstall_button.ts
@@ -7,11 +7,12 @@ import '//resources/cr_elements/policy/cr_tooltip_icon.m.js'; import {assertNotReached} from '//resources/js/assert.m.js'; -import {html, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; +import {PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; import {App} from './app_management.mojom-webui.js'; import {BrowserProxy} from './browser_proxy.js'; import {AppManagementUserAction, InstallReason} from './constants.js'; +import {getTemplate} from './uninstall_button.html.js'; import {recordAppManagementUserAction} from './util.js'; export class AppManamentUninstallButtonElement extends PolymerElement { @@ -20,7 +21,7 @@ } static get template() { - return html`{__html_template__}`; + return getTemplate(); } static get properties() {
diff --git a/ui/webui/resources/cr_components/app_management/window_mode_item.ts b/ui/webui/resources/cr_components/app_management/window_mode_item.ts index edca926..afd4b925 100644 --- a/ui/webui/resources/cr_components/app_management/window_mode_item.ts +++ b/ui/webui/resources/cr_components/app_management/window_mode_item.ts
@@ -6,13 +6,14 @@ import './toggle_row.js'; import {assert, assertNotReached} from '//resources/js/assert.m.js'; -import {html, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; +import {PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; import {App} from './app_management.mojom-webui.js'; import {BrowserProxy} from './browser_proxy.js'; import {AppManagementUserAction, WindowMode} from './constants.js'; import {AppManagementToggleRowElement} from './toggle_row.js'; import {recordAppManagementUserAction} from './util.js'; +import {getTemplate} from './window_mode_item.html.js'; export class AppManagementWindowModeElement extends PolymerElement { static get is() { @@ -20,7 +21,7 @@ } static get template() { - return html`{__html_template__}`; + return getTemplate(); } static get properties() {
diff --git a/weblayer/browser/favicon/favicon_tab_helper.cc b/weblayer/browser/favicon/favicon_tab_helper.cc index 9d65427b..ccb2eac3 100644 --- a/weblayer/browser/favicon/favicon_tab_helper.cc +++ b/weblayer/browser/favicon/favicon_tab_helper.cc
@@ -104,15 +104,10 @@ delegate.OnFaviconChanged(favicon_); } -void FaviconTabHelper::DidFinishNavigation( - content::NavigationHandle* navigation_handle) { - if (!navigation_handle->IsInPrimaryMainFrame() || - !navigation_handle->HasCommitted() || navigation_handle->IsErrorPage() || - navigation_handle->IsSameDocument()) { +void FaviconTabHelper::PrimaryPageChanged(content::Page& page) { + if (page.GetMainDocument().IsErrorDocument() || favicon_.IsEmpty()) { return; } - if (favicon_.IsEmpty()) - return; favicon_ = gfx::Image(); for (FaviconFetcherDelegate& delegate : delegates_)
diff --git a/weblayer/browser/favicon/favicon_tab_helper.h b/weblayer/browser/favicon/favicon_tab_helper.h index 1f44c66..5ff23818 100644 --- a/weblayer/browser/favicon/favicon_tab_helper.h +++ b/weblayer/browser/favicon/favicon_tab_helper.h
@@ -71,8 +71,7 @@ const gfx::Image& image) override; // content::WebContentsObserver: - void DidFinishNavigation( - content::NavigationHandle* navigation_handle) override; + void PrimaryPageChanged(content::Page& page) override; raw_ptr<content::WebContents> web_contents_; // Number of observers attached.