summaryrefslogtreecommitdiffstats
path: root/chromium/chrome/browser/ui/webui/settings
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2024-02-22 13:19:49 +0100
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2024-03-12 13:45:06 +0000
commit9c1f44f67466fea2fb20bb6f31fea388d8c65961 (patch)
tree03e7709aa7ed9a7cf2ec26ca410acd0b4c536666 /chromium/chrome/browser/ui/webui/settings
parentada9ddbf8c604585ac344b72f7bb63ac27c84726 (diff)
BASELINE: Update Chromium to 122.0.6261.72
Change-Id: I655fa6da670f5e82a4c0df33630e388663de2a8e Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/542310 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'chromium/chrome/browser/ui/webui/settings')
-rw-r--r--chromium/chrome/browser/ui/webui/settings/OWNERS4
-rw-r--r--chromium/chrome/browser/ui/webui/settings/about_handler.cc9
-rw-r--r--chromium/chrome/browser/ui/webui/settings/about_handler.h2
-rw-r--r--chromium/chrome/browser/ui/webui/settings/about_handler_unittest.cc2
-rw-r--r--chromium/chrome/browser/ui/webui/settings/accessibility_main_handler.cc66
-rw-r--r--chromium/chrome/browser/ui/webui/settings/accessibility_main_handler.h34
-rw-r--r--chromium/chrome/browser/ui/webui/settings/accessibility_main_handler_unittest.cc228
-rw-r--r--chromium/chrome/browser/ui/webui/settings/captions_handler.cc13
-rw-r--r--chromium/chrome/browser/ui/webui/settings/custom_home_pages_table_model.cc2
-rw-r--r--chromium/chrome/browser/ui/webui/settings/downloads_handler.cc7
-rw-r--r--chromium/chrome/browser/ui/webui/settings/downloads_handler.h2
-rw-r--r--chromium/chrome/browser/ui/webui/settings/hats_handler.cc112
-rw-r--r--chromium/chrome/browser/ui/webui/settings/hats_handler.h24
-rw-r--r--chromium/chrome/browser/ui/webui/settings/hats_handler_unittest.cc225
-rw-r--r--chromium/chrome/browser/ui/webui/settings/import_data_handler.cc5
-rw-r--r--chromium/chrome/browser/ui/webui/settings/import_data_handler.h2
-rw-r--r--chromium/chrome/browser/ui/webui/settings/incompatible_applications_handler_win.cc4
-rw-r--r--chromium/chrome/browser/ui/webui/settings/languages_handler.h2
-rw-r--r--chromium/chrome/browser/ui/webui/settings/people_handler.cc68
-rw-r--r--chromium/chrome/browser/ui/webui/settings/people_handler.h4
-rw-r--r--chromium/chrome/browser/ui/webui/settings/people_handler_unittest.cc212
-rw-r--r--chromium/chrome/browser/ui/webui/settings/performance_handler.cc8
-rw-r--r--chromium/chrome/browser/ui/webui/settings/performance_handler.h2
-rw-r--r--chromium/chrome/browser/ui/webui/settings/performance_settings_interactive_uitest.cc673
-rw-r--r--chromium/chrome/browser/ui/webui/settings/recent_site_settings_helper.cc12
-rw-r--r--chromium/chrome/browser/ui/webui/settings/reset_settings_handler.cc20
-rw-r--r--chromium/chrome/browser/ui/webui/settings/reset_settings_handler.h5
-rw-r--r--chromium/chrome/browser/ui/webui/settings/safety_check_extensions_handler.cc2
-rw-r--r--chromium/chrome/browser/ui/webui/settings/safety_check_extensions_handler_unittest.cc4
-rw-r--r--chromium/chrome/browser/ui/webui/settings/safety_check_handler.cc19
-rw-r--r--chromium/chrome/browser/ui/webui/settings/safety_check_handler_unittest.cc46
-rw-r--r--chromium/chrome/browser/ui/webui/settings/safety_hub_handler.cc20
-rw-r--r--chromium/chrome/browser/ui/webui/settings/safety_hub_handler.h3
-rw-r--r--chromium/chrome/browser/ui/webui/settings/safety_hub_handler_unittest.cc40
-rw-r--r--chromium/chrome/browser/ui/webui/settings/search_engines_handler.cc43
-rw-r--r--chromium/chrome/browser/ui/webui/settings/search_engines_handler_unittest.cc63
-rw-r--r--chromium/chrome/browser/ui/webui/settings/settings_clear_browsing_data_handler.cc18
-rw-r--r--chromium/chrome/browser/ui/webui/settings/settings_default_browser_handler.cc6
-rw-r--r--chromium/chrome/browser/ui/webui/settings/settings_default_browser_handler.h2
-rw-r--r--chromium/chrome/browser/ui/webui/settings/settings_default_browser_handler_unittest.cc14
-rw-r--r--chromium/chrome/browser/ui/webui/settings/settings_interactive_uitest.cc35
-rw-r--r--chromium/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc3571
-rw-r--r--chromium/chrome/browser/ui/webui/settings/settings_manage_profile_handler_unittest.cc4
-rw-r--r--chromium/chrome/browser/ui/webui/settings/settings_media_devices_selection_handler.cc114
-rw-r--r--chromium/chrome/browser/ui/webui/settings/settings_media_devices_selection_handler.h15
-rw-r--r--chromium/chrome/browser/ui/webui/settings/settings_media_devices_selection_handler_unittest.cc154
-rw-r--r--chromium/chrome/browser/ui/webui/settings/settings_secure_dns_handler.cc20
-rw-r--r--chromium/chrome/browser/ui/webui/settings/settings_secure_dns_handler_browsertest.cc14
-rw-r--r--chromium/chrome/browser/ui/webui/settings/settings_security_key_handler.cc29
-rw-r--r--chromium/chrome/browser/ui/webui/settings/settings_security_key_handler.h17
-rw-r--r--chromium/chrome/browser/ui/webui/settings/settings_security_key_handler_unittest.cc6
-rw-r--r--chromium/chrome/browser/ui/webui/settings/settings_ui.cc95
-rw-r--r--chromium/chrome/browser/ui/webui/settings/settings_ui_browsertest.cc2
-rw-r--r--chromium/chrome/browser/ui/webui/settings/settings_utils.cc6
-rw-r--r--chromium/chrome/browser/ui/webui/settings/settings_utils.h3
-rw-r--r--chromium/chrome/browser/ui/webui/settings/shared_settings_localized_strings_provider.cc89
-rw-r--r--chromium/chrome/browser/ui/webui/settings/shared_settings_localized_strings_provider.h5
-rw-r--r--chromium/chrome/browser/ui/webui/settings/site_settings_handler.cc320
-rw-r--r--chromium/chrome/browser/ui/webui/settings/site_settings_handler.h17
-rw-r--r--chromium/chrome/browser/ui/webui/settings/site_settings_handler_unittest.cc1368
-rw-r--r--chromium/chrome/browser/ui/webui/settings/site_settings_helper.cc67
-rw-r--r--chromium/chrome/browser/ui/webui/settings/site_settings_helper_unittest.cc135
62 files changed, 4515 insertions, 3598 deletions
diff --git a/chromium/chrome/browser/ui/webui/settings/OWNERS b/chromium/chrome/browser/ui/webui/settings/OWNERS
index 551452d4055..c494850f01f 100644
--- a/chromium/chrome/browser/ui/webui/settings/OWNERS
+++ b/chromium/chrome/browser/ui/webui/settings/OWNERS
@@ -1,5 +1,7 @@
file://chrome/browser/resources/settings/OWNERS
+per-file accessibility_main_handler*=file://ui/accessibility/OWNERS
+
per-file people_handler*=msalama@chromium.org
per-file people_handler*=treib@chromium.org
@@ -16,3 +18,5 @@ per-file safety_check_handler*=andzaytsev@google.com,rainhard@chromium.org,sidey
per-file settings_clear_browsing_data_handler*=sauski@google.com
per-file settings_localized_strings_provider*=sauski@google.com
per-file settings_security_key_handler*=file://device/fido/OWNERS
+
+per-file performance_*=file://chrome/browser/ui/performance_controls/OWNERS \ No newline at end of file
diff --git a/chromium/chrome/browser/ui/webui/settings/about_handler.cc b/chromium/chrome/browser/ui/webui/settings/about_handler.cc
index aea43c7f32e..4a40ec0eb0c 100644
--- a/chromium/chrome/browser/ui/webui/settings/about_handler.cc
+++ b/chromium/chrome/browser/ui/webui/settings/about_handler.cc
@@ -53,6 +53,8 @@
#include "v8/include/v8-version-string.h"
#if BUILDFLAG(IS_CHROMEOS_ASH)
+#include <optional>
+
#include "ash/constants/ash_features.h"
#include "ash/constants/ash_switches.h"
#include "ash/public/cpp/new_window_delegate.h"
@@ -77,7 +79,6 @@
#include "chromeos/dbus/power/power_manager_client.h"
#include "chromeos/version/version_loader.h"
#include "components/user_manager/user_manager.h"
-#include "third_party/abseil-cpp/absl/types/optional.h"
#include "third_party/icu/source/i18n/unicode/timezone.h"
#include "ui/chromeos/devicetype_utils.h"
#endif
@@ -171,7 +172,7 @@ base::FilePath GetRegulatoryLabelDirForRegion(base::StringPiece region) {
base::FilePath FindRegulatoryLabelDir() {
base::FilePath region_path;
// Use the VPD region code to find the label dir.
- const absl::optional<base::StringPiece> region =
+ const std::optional<base::StringPiece> region =
ash::system::StatisticsProvider::GetInstance()->GetMachineStatistic(
ash::system::kRegionKey);
if (region && !region->empty()) {
@@ -202,7 +203,7 @@ std::string ReadRegulatoryLabelText(const base::FilePath& label_dir_path) {
base::Value::Dict GetVersionInfo() {
base::Value::Dict version_info;
- absl::optional<std::string> version = chromeos::version_loader::GetVersion(
+ std::optional<std::string> version = chromeos::version_loader::GetVersion(
chromeos::version_loader::VERSION_FULL);
version_info.Set("osVersion", version.value_or("0.0.0.0"));
version_info.Set("arcVersion", chromeos::version_loader::GetArcVersion());
@@ -744,7 +745,7 @@ void AboutHandler::HandleIsConsumerAutoUpdateEnabled(
void AboutHandler::OnIsConsumerAutoUpdateEnabled(std::string callback_id,
std::string feature,
- absl::optional<bool> enabled) {
+ std::optional<bool> enabled) {
if (!enabled.has_value()) {
LOG(ERROR) << "Failed to get feature value for " << feature
<< " defaulting to enabled";
diff --git a/chromium/chrome/browser/ui/webui/settings/about_handler.h b/chromium/chrome/browser/ui/webui/settings/about_handler.h
index 3e9863ca20a..c8384152295 100644
--- a/chromium/chrome/browser/ui/webui/settings/about_handler.h
+++ b/chromium/chrome/browser/ui/webui/settings/about_handler.h
@@ -197,7 +197,7 @@ class AboutHandler : public settings::SettingsPageUIHandler,
// Callbacks for version_updater_->IsConsumerAutoUpdateEnabled calls.
void OnIsConsumerAutoUpdateEnabled(std::string callback_id,
std::string feature,
- absl::optional<bool> enabled);
+ std::optional<bool> enabled);
void HandleSetConsumerAutoUpdate(const base::Value::List& args);
void HandleOpenProductLicenseOther(const base::Value::List& args);
diff --git a/chromium/chrome/browser/ui/webui/settings/about_handler_unittest.cc b/chromium/chrome/browser/ui/webui/settings/about_handler_unittest.cc
index 7f74d757183..9cb2f5a9d4f 100644
--- a/chromium/chrome/browser/ui/webui/settings/about_handler_unittest.cc
+++ b/chromium/chrome/browser/ui/webui/settings/about_handler_unittest.cc
@@ -100,7 +100,7 @@ class AboutHandlerTest : public testing::Test {
TestingProfile profile_;
content::TestWebUI web_ui_;
std::unique_ptr<TestAboutHandler> handler_;
- raw_ptr<ash::FakeUpdateEngineClient, DanglingUntriaged | ExperimentalAsh>
+ raw_ptr<ash::FakeUpdateEngineClient, DanglingUntriaged>
fake_update_engine_client_;
std::unique_ptr<base::SimpleTestClock> clock_;
};
diff --git a/chromium/chrome/browser/ui/webui/settings/accessibility_main_handler.cc b/chromium/chrome/browser/ui/webui/settings/accessibility_main_handler.cc
index 816c10bb03d..3271b9201f8 100644
--- a/chromium/chrome/browser/ui/webui/settings/accessibility_main_handler.cc
+++ b/chromium/chrome/browser/ui/webui/settings/accessibility_main_handler.cc
@@ -19,6 +19,10 @@
#include "content/public/browser/web_contents.h"
#include "content/public/browser/web_ui.h"
+#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC)
+#include "ui/accessibility/accessibility_features.h"
+#endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC)
+
namespace settings {
AccessibilityMainHandler::AccessibilityMainHandler() = default;
@@ -27,14 +31,21 @@ AccessibilityMainHandler::~AccessibilityMainHandler() = default;
void AccessibilityMainHandler::RegisterMessages() {
web_ui()->RegisterMessageCallback(
- "a11yPageReady",
- base::BindRepeating(&AccessibilityMainHandler::HandleA11yPageReady,
+ "getScreenReaderState",
+ base::BindRepeating(&AccessibilityMainHandler::HandleGetScreenReaderState,
base::Unretained(this)));
web_ui()->RegisterMessageCallback(
"confirmA11yImageLabels",
base::BindRepeating(
&AccessibilityMainHandler::HandleCheckAccessibilityImageLabels,
base::Unretained(this)));
+#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC)
+ web_ui()->RegisterMessageCallback(
+ "getScreenAiInstallState",
+ base::BindRepeating(
+ &AccessibilityMainHandler::HandleGetScreenAIInstallState,
+ base::Unretained(this)));
+#endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC)
}
void AccessibilityMainHandler::OnJavascriptAllowed() {
@@ -44,18 +55,65 @@ void AccessibilityMainHandler::OnJavascriptAllowed() {
&AccessibilityMainHandler::OnAccessibilityStatusChanged,
base::Unretained(this)));
#endif // BUILDFLAG(IS_CHROMEOS_ASH)
+
+#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC)
+ if (features::IsPdfOcrEnabled()) {
+ CHECK(!component_ready_observer_.IsObserving());
+ component_ready_observer_.Observe(
+ screen_ai::ScreenAIInstallState::GetInstance());
+ }
+#endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC)
}
void AccessibilityMainHandler::OnJavascriptDisallowed() {
#if BUILDFLAG(IS_CHROMEOS_ASH)
accessibility_subscription_ = {};
#endif // BUILDFLAG(IS_CHROMEOS_ASH)
+
+#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC)
+ if (features::IsPdfOcrEnabled()) {
+ component_ready_observer_.Reset();
+ }
+#endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC)
+}
+
+#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC)
+void AccessibilityMainHandler::DownloadProgressChanged(double progress) {
+ CHECK_GE(progress, 0.0);
+ CHECK_LE(progress, 1.0);
+ const int progress_num = progress * 100;
+ FireWebUIListener("pdf-ocr-downloading-progress-changed",
+ base::Value(progress_num));
+}
+
+void AccessibilityMainHandler::StateChanged(
+ screen_ai::ScreenAIInstallState::State state) {
+ base::Value state_value = base::Value(static_cast<int>(state));
+ FireWebUIListener("pdf-ocr-state-changed", state_value);
+}
+
+void AccessibilityMainHandler::HandleGetScreenAIInstallState(
+ const base::Value::List& args) {
+ CHECK_EQ(1U, args.size());
+ const base::Value& callback_id = args[0];
+ AllowJavascript();
+ // Get the current install state and send it back to a UI callback.
+ screen_ai::ScreenAIInstallState::State current_install_state =
+ screen_ai::ScreenAIInstallState::GetInstance()->get_state();
+ ResolveJavascriptCallback(
+ callback_id, base::Value(static_cast<int>(current_install_state)));
}
+#endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC)
-void AccessibilityMainHandler::HandleA11yPageReady(
+void AccessibilityMainHandler::HandleGetScreenReaderState(
const base::Value::List& args) {
+ CHECK_EQ(1U, args.size());
+ const base::Value& callback_id = args[0];
AllowJavascript();
- SendScreenReaderStateChanged();
+ // Get the current install state and send it back to a UI callback.
+ base::Value is_screen_reader_enabled(
+ accessibility_state_utils::IsScreenReaderEnabled());
+ ResolveJavascriptCallback(callback_id, is_screen_reader_enabled);
}
void AccessibilityMainHandler::HandleCheckAccessibilityImageLabels(
diff --git a/chromium/chrome/browser/ui/webui/settings/accessibility_main_handler.h b/chromium/chrome/browser/ui/webui/settings/accessibility_main_handler.h
index 913d3e70344..e8f6cf20bf3 100644
--- a/chromium/chrome/browser/ui/webui/settings/accessibility_main_handler.h
+++ b/chromium/chrome/browser/ui/webui/settings/accessibility_main_handler.h
@@ -5,6 +5,7 @@
#ifndef CHROME_BROWSER_UI_WEBUI_SETTINGS_ACCESSIBILITY_MAIN_HANDLER_H_
#define CHROME_BROWSER_UI_WEBUI_SETTINGS_ACCESSIBILITY_MAIN_HANDLER_H_
+#include "build/build_config.h"
#include "build/chromeos_buildflags.h"
#include "chrome/browser/ui/webui/settings/settings_page_ui_handler.h"
@@ -12,11 +13,22 @@
#include "chrome/browser/ash/accessibility/accessibility_manager.h"
#endif // BUILDFLAG(IS_CHROMEOS_ASH)
+#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC)
+#include "base/scoped_observation.h"
+#include "chrome/browser/screen_ai/screen_ai_install_state.h"
+#endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC)
+
namespace settings {
// Settings handler for the main accessibility settings page,
// chrome://settings/accessibility.
-class AccessibilityMainHandler : public ::settings::SettingsPageUIHandler {
+class AccessibilityMainHandler
+ : public ::settings::SettingsPageUIHandler
+#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC)
+ ,
+ public screen_ai::ScreenAIInstallState::Observer
+#endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC)
+{
public:
AccessibilityMainHandler();
~AccessibilityMainHandler() override;
@@ -28,10 +40,20 @@ class AccessibilityMainHandler : public ::settings::SettingsPageUIHandler {
void OnJavascriptAllowed() override;
void OnJavascriptDisallowed() override;
- void HandleA11yPageReady(const base::Value::List& args);
- void HandleCheckAccessibilityImageLabels(const base::Value::List& args);
+#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC)
+ // screen_ai::ScreenAIInstallState::Observer:
+ void DownloadProgressChanged(double progress) override;
+ void StateChanged(screen_ai::ScreenAIInstallState::State state) override;
+#endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC)
private:
+ void HandleGetScreenReaderState(const base::Value::List& args);
+ void HandleCheckAccessibilityImageLabels(const base::Value::List& args);
+
+#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC)
+ void HandleGetScreenAIInstallState(const base::Value::List& args);
+#endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC)
+
void SendScreenReaderStateChanged();
#if BUILDFLAG(IS_CHROMEOS_ASH)
@@ -40,6 +62,12 @@ class AccessibilityMainHandler : public ::settings::SettingsPageUIHandler {
base::CallbackListSubscription accessibility_subscription_;
#endif // BUILDFLAG(IS_CHROMEOS_ASH)
+
+#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC)
+ base::ScopedObservation<screen_ai::ScreenAIInstallState,
+ screen_ai::ScreenAIInstallState::Observer>
+ component_ready_observer_{this};
+#endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC)
};
} // namespace settings
diff --git a/chromium/chrome/browser/ui/webui/settings/accessibility_main_handler_unittest.cc b/chromium/chrome/browser/ui/webui/settings/accessibility_main_handler_unittest.cc
new file mode 100644
index 00000000000..b13f44c5228
--- /dev/null
+++ b/chromium/chrome/browser/ui/webui/settings/accessibility_main_handler_unittest.cc
@@ -0,0 +1,228 @@
+// Copyright 2023 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/ui/webui/settings/accessibility_main_handler.h"
+
+#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC)
+#include <memory>
+
+#include "base/memory/raw_ptr.h"
+#include "base/test/scoped_feature_list.h"
+#include "chrome/browser/screen_ai/screen_ai_install_state.h"
+#include "chrome/test/base/testing_profile.h"
+#include "content/public/browser/web_contents.h"
+#include "content/public/test/browser_task_environment.h"
+#include "content/public/test/test_web_ui.h"
+#include "testing/gtest/include/gtest/gtest.h"
+#include "ui/accessibility/accessibility_features.h"
+#endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC)
+
+namespace settings {
+
+namespace {
+
+#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC)
+const char kWebUIListenerCall[] = "cr.webUIListenerCallback";
+const char kPdfOcrDownloadingProgressChangedEventName[] =
+ "pdf-ocr-downloading-progress-changed";
+const char kPdfOcrStateChangedEventName[] = "pdf-ocr-state-changed";
+
+class TestScreenAIInstallState : public screen_ai::ScreenAIInstallState {
+ public:
+ TestScreenAIInstallState() = default;
+
+ TestScreenAIInstallState(const TestScreenAIInstallState&) = delete;
+ TestScreenAIInstallState& operator=(const TestScreenAIInstallState&) = delete;
+
+ ~TestScreenAIInstallState() override = default;
+
+ // screen_ai::ScreenAIInstallState:
+ void SetLastUsageTime() override {}
+ void DownloadComponentInternal() override {}
+};
+
+class TestAccessibilityMainHandler : public AccessibilityMainHandler {
+ public:
+ explicit TestAccessibilityMainHandler(
+ TestScreenAIInstallState* screen_ai_install_state)
+ : test_screen_ai_install_state_(screen_ai_install_state) {}
+
+ ~TestAccessibilityMainHandler() override = default;
+
+ // Make public for testing.
+ using AccessibilityMainHandler::AllowJavascript;
+ using AccessibilityMainHandler::set_web_ui;
+
+ private:
+ raw_ptr<TestScreenAIInstallState> test_screen_ai_install_state_ = nullptr;
+ base::ScopedObservation<screen_ai::ScreenAIInstallState,
+ screen_ai::ScreenAIInstallState::Observer>
+ component_ready_observer_{this};
+};
+#endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC)
+
+} // namespace
+
+#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC)
+class AccessibilityMainHandlerPdfOcrTest : public testing::Test {
+ public:
+ AccessibilityMainHandlerPdfOcrTest() : features_({features::kPdfOcr}) {}
+
+ AccessibilityMainHandlerPdfOcrTest(
+ const AccessibilityMainHandlerPdfOcrTest&) = delete;
+ AccessibilityMainHandlerPdfOcrTest& operator=(
+ const AccessibilityMainHandlerPdfOcrTest&) = delete;
+
+ ~AccessibilityMainHandlerPdfOcrTest() override = default;
+
+ // testing::Test:
+ void SetUp() override {
+ TestingProfile::Builder builder;
+ profile_ = builder.Build();
+ web_contents_ = content::WebContents::Create(
+ content::WebContents::CreateParams(profile_.get()));
+
+ test_web_ui_ = std::make_unique<content::TestWebUI>();
+ test_web_ui_->set_web_contents(web_contents_.get());
+
+ test_screen_ai_install_state_ =
+ std::make_unique<TestScreenAIInstallState>();
+
+ handler_ = std::make_unique<TestAccessibilityMainHandler>(
+ test_screen_ai_install_state_.get());
+ handler_->set_web_ui(test_web_ui_.get());
+ handler_->RegisterMessages();
+ handler_->AllowJavascript();
+ ASSERT_TRUE(handler_->IsJavascriptAllowed());
+
+ // Run until idle so the handler picks up initial screen ai install state,
+ // which is screen_ai::ScreenAIInstallState::State::kNotDownloaded.
+ browser_task_environment_.RunUntilIdle();
+ }
+
+ void TearDown() override { handler_.reset(); }
+
+ void ExpectCallToWebUI(const std::string& type,
+ const std::string& func_name,
+ const int expected_arg,
+ size_t call_count) {
+ EXPECT_EQ(test_web_ui()->call_data().size(), call_count);
+ // Get the last call data based on the given call_count value.
+ const content::TestWebUI::CallData& call_data =
+ *test_web_ui()->call_data()[call_count - 1];
+ EXPECT_EQ(call_data.function_name(), type);
+ EXPECT_EQ(call_data.arg1()->GetString(), func_name);
+ EXPECT_EQ(call_data.arg2()->GetInt(), expected_arg);
+ }
+
+ void SimulateSetDownloadProgress(double progress) {
+ test_screen_ai_install_state_->SetDownloadProgress(progress);
+ }
+
+ void SimulateSetState(screen_ai::ScreenAIInstallState::State state) {
+ test_screen_ai_install_state_->SetStateForTesting(state);
+ }
+
+ content::TestWebUI* test_web_ui() const { return test_web_ui_.get(); }
+ TestAccessibilityMainHandler* handler() const { return handler_.get(); }
+
+ protected:
+ base::test::ScopedFeatureList features_;
+ content::BrowserTaskEnvironment browser_task_environment_;
+
+ std::unique_ptr<TestAccessibilityMainHandler> handler_;
+ std::unique_ptr<TestingProfile> profile_;
+ std::unique_ptr<TestScreenAIInstallState> test_screen_ai_install_state_;
+ std::unique_ptr<content::TestWebUI> test_web_ui_;
+ std::unique_ptr<content::WebContents> web_contents_;
+};
+
+TEST_F(AccessibilityMainHandlerPdfOcrTest, MessageForScreenAIDownloadingState) {
+ size_t call_data_count_before_call = test_web_ui()->call_data().size();
+
+ screen_ai::ScreenAIInstallState::State state =
+ screen_ai::ScreenAIInstallState::State::kDownloading;
+ SimulateSetState(state);
+ ExpectCallToWebUI(kWebUIListenerCall, kPdfOcrStateChangedEventName,
+ /*expected_arg=*/static_cast<int>(state),
+ /*call_count=*/call_data_count_before_call + 1u);
+}
+
+TEST_F(AccessibilityMainHandlerPdfOcrTest,
+ MessageForScreenAIDownloadingProgress) {
+ // State needs to be `kDownloading` before updating the download progress.
+ size_t call_data_count_before_call = test_web_ui()->call_data().size();
+
+ screen_ai::ScreenAIInstallState::State state =
+ screen_ai::ScreenAIInstallState::State::kDownloading;
+ SimulateSetState(state);
+ ExpectCallToWebUI(kWebUIListenerCall, kPdfOcrStateChangedEventName,
+ /*expected_arg=*/static_cast<int>(state),
+ /*call_count=*/++call_data_count_before_call);
+
+ const double progress = 0.3;
+ SimulateSetDownloadProgress(progress);
+ // `progress` is expected to be converted into percentage in a message.
+ const int expected_progress_in_percentage = progress * 100;
+ ExpectCallToWebUI(kWebUIListenerCall,
+ kPdfOcrDownloadingProgressChangedEventName,
+ /*expected_arg=*/expected_progress_in_percentage,
+ /*call_count=*/call_data_count_before_call + 1u);
+}
+
+TEST_F(AccessibilityMainHandlerPdfOcrTest, MessageForScreenAIDownloadedState) {
+ size_t call_data_count_before_call = test_web_ui()->call_data().size();
+
+ screen_ai::ScreenAIInstallState::State state =
+ screen_ai::ScreenAIInstallState::State::kDownloaded;
+ SimulateSetState(state);
+ ExpectCallToWebUI(kWebUIListenerCall, kPdfOcrStateChangedEventName,
+ /*expected_arg=*/static_cast<int>(state),
+ /*call_count=*/call_data_count_before_call + 1u);
+}
+
+TEST_F(AccessibilityMainHandlerPdfOcrTest,
+ MessageForScreenAIDownloadFailedState) {
+ size_t call_data_count_before_call = test_web_ui()->call_data().size();
+
+ screen_ai::ScreenAIInstallState::State state =
+ screen_ai::ScreenAIInstallState::State::kFailed;
+ SimulateSetState(state);
+ ExpectCallToWebUI(kWebUIListenerCall, kPdfOcrStateChangedEventName,
+ /*expected_arg=*/static_cast<int>(state),
+ /*call_count=*/call_data_count_before_call + 1u);
+}
+
+TEST_F(AccessibilityMainHandlerPdfOcrTest, MessageForScreenAIReadyState) {
+ size_t call_data_count_before_call = test_web_ui()->call_data().size();
+
+ screen_ai::ScreenAIInstallState::State state =
+ screen_ai::ScreenAIInstallState::State::kReady;
+ SimulateSetState(state);
+ ExpectCallToWebUI(kWebUIListenerCall, kPdfOcrStateChangedEventName,
+ /*expected_arg=*/static_cast<int>(state),
+ /*call_count=*/call_data_count_before_call + 1u);
+}
+
+TEST_F(AccessibilityMainHandlerPdfOcrTest,
+ MessageForScreenAINotDownloadedState) {
+ size_t call_data_count_before_call = test_web_ui()->call_data().size();
+
+ // Either `kReady` or `kFailed` needs to be set for testing `kNotDownloaded`.
+ screen_ai::ScreenAIInstallState::State state =
+ screen_ai::ScreenAIInstallState::State::kReady;
+ SimulateSetState(state);
+ ExpectCallToWebUI(kWebUIListenerCall, kPdfOcrStateChangedEventName,
+ /*expected_arg=*/static_cast<int>(state),
+ /*call_count=*/++call_data_count_before_call);
+
+ state = screen_ai::ScreenAIInstallState::State::kNotDownloaded;
+ SimulateSetState(state);
+ ExpectCallToWebUI(kWebUIListenerCall, kPdfOcrStateChangedEventName,
+ /*expected_arg=*/static_cast<int>(state),
+ /*call_count=*/call_data_count_before_call + 1u);
+}
+#endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC)
+
+} // namespace settings
diff --git a/chromium/chrome/browser/ui/webui/settings/captions_handler.cc b/chromium/chrome/browser/ui/webui/settings/captions_handler.cc
index 0ac89f33672..4bd32f5100d 100644
--- a/chromium/chrome/browser/ui/webui/settings/captions_handler.cc
+++ b/chromium/chrome/browser/ui/webui/settings/captions_handler.cc
@@ -6,7 +6,6 @@
#include "base/containers/contains.h"
#include "base/functional/bind.h"
-#include "base/strings/string_split.h"
#include "base/values.h"
#include "build/build_config.h"
#include "build/chromeos_buildflags.h"
@@ -36,14 +35,6 @@ constexpr char kCodeKey[] = "code";
constexpr char kDisplayNameKey[] = "displayName";
constexpr char kNativeDisplayNameKey[] = "nativeDisplayName";
-// Gets a list of locales enabled by the Finch flag.
-std::vector<std::string> GetEnabledLanguages() {
- return base::SplitString(
- base::GetFieldTrialParamValueByFeature(media::kLiveCaptionMultiLanguage,
- "available_languages"),
- ",", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL);
-}
-
base::Value::List SortByDisplayName(
std::vector<base::Value::Dict> language_packs) {
std::sort(language_packs.begin(), language_packs.end(),
@@ -165,7 +156,7 @@ void CaptionsHandler::HandleInstallLanguagePacks(
}
base::Value::List CaptionsHandler::GetAvailableLanguagePacks() {
- auto enabled_languages = GetEnabledLanguages();
+ auto enabled_languages = speech::GetEnabledLanguages();
std::vector<base::Value::Dict> available_language_packs;
for (const auto& config : speech::kLanguageComponentConfigs) {
if (config.language_code != speech::LanguageCode::kNone &&
@@ -192,7 +183,7 @@ base::Value::List CaptionsHandler::GetInstalledLanguagePacks() {
for (const auto& language : g_browser_process->local_state()->GetList(
prefs::kSodaRegisteredLanguagePacks)) {
base::Value::Dict installed_language_pack;
- const absl::optional<speech::SodaLanguagePackComponentConfig> config =
+ const std::optional<speech::SodaLanguagePackComponentConfig> config =
speech::GetLanguageComponentConfig(language.GetString());
if (config && config->language_code != speech::LanguageCode::kNone) {
installed_language_pack.Set(kCodeKey, language.GetString());
diff --git a/chromium/chrome/browser/ui/webui/settings/custom_home_pages_table_model.cc b/chromium/chrome/browser/ui/webui/settings/custom_home_pages_table_model.cc
index 6c3e46fa87a..b03fba90323 100644
--- a/chromium/chrome/browser/ui/webui/settings/custom_home_pages_table_model.cc
+++ b/chromium/chrome/browser/ui/webui/settings/custom_home_pages_table_model.cc
@@ -161,7 +161,7 @@ void CustomHomePagesTableModel::SetToCurrentlyOpenPages(
// Add tabs from appropriate browser windows.
size_t add_index = 0;
- for (auto* browser : *BrowserList::GetInstance()) {
+ for (Browser* browser : *BrowserList::GetInstance()) {
if (!ShouldIncludeBrowser(browser))
continue;
diff --git a/chromium/chrome/browser/ui/webui/settings/downloads_handler.cc b/chromium/chrome/browser/ui/webui/settings/downloads_handler.cc
index 437c8cd337e..e95a52a8148 100644
--- a/chromium/chrome/browser/ui/webui/settings/downloads_handler.cc
+++ b/chromium/chrome/browser/ui/webui/settings/downloads_handler.cc
@@ -19,6 +19,7 @@
#include "content/public/browser/web_contents.h"
#include "content/public/browser/web_ui.h"
#include "ui/base/l10n/l10n_util.h"
+#include "ui/shell_dialogs/selected_file_info.h"
#if BUILDFLAG(IS_CHROMEOS_ASH)
#include "chrome/browser/ash/file_manager/path_util.h"
@@ -110,15 +111,15 @@ void DownloadsHandler::HandleSelectDownloadLocation(
web_ui()->GetWebContents()->GetTopLevelNativeWindow(), nullptr);
}
-void DownloadsHandler::FileSelected(const base::FilePath& path,
+void DownloadsHandler::FileSelected(const ui::SelectedFileInfo& file,
int index,
void* params) {
select_folder_dialog_ = nullptr;
base::RecordAction(UserMetricsAction("Options_SetDownloadDirectory"));
PrefService* pref_service = profile_->GetPrefs();
- pref_service->SetFilePath(prefs::kDownloadDefaultDirectory, path);
- pref_service->SetFilePath(prefs::kSaveFileDefaultDirectory, path);
+ pref_service->SetFilePath(prefs::kDownloadDefaultDirectory, file.path());
+ pref_service->SetFilePath(prefs::kSaveFileDefaultDirectory, file.path());
}
void DownloadsHandler::FileSelectionCanceled(void* params) {
diff --git a/chromium/chrome/browser/ui/webui/settings/downloads_handler.h b/chromium/chrome/browser/ui/webui/settings/downloads_handler.h
index 795319577c9..fd19956b174 100644
--- a/chromium/chrome/browser/ui/webui/settings/downloads_handler.h
+++ b/chromium/chrome/browser/ui/webui/settings/downloads_handler.h
@@ -50,7 +50,7 @@ class DownloadsHandler : public SettingsPageUIHandler,
void HandleSelectDownloadLocation(const base::Value::List& args);
// SelectFileDialog::Listener implementation.
- void FileSelected(const base::FilePath& path,
+ void FileSelected(const ui::SelectedFileInfo& file,
int index,
void* params) override;
void FileSelectionCanceled(void* params) override;
diff --git a/chromium/chrome/browser/ui/webui/settings/hats_handler.cc b/chromium/chrome/browser/ui/webui/settings/hats_handler.cc
index 05ad16ca957..f18b7c37b1b 100644
--- a/chromium/chrome/browser/ui/webui/settings/hats_handler.cc
+++ b/chromium/chrome/browser/ui/webui/settings/hats_handler.cc
@@ -5,6 +5,7 @@
#include "chrome/browser/ui/webui/settings/hats_handler.h"
#include "base/functional/bind.h"
+#include "base/metrics/histogram_functions.h"
#include "chrome/browser/privacy_sandbox/privacy_sandbox_settings_factory.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/hats/hats_service.h"
@@ -32,12 +33,8 @@ SurveyBitsData GetPrivacySettingsProductSpecificBitsData(Profile* profile) {
static_cast<content_settings::CookieControlsMode>(
profile->GetPrefs()->GetInteger(prefs::kCookieControlsMode)) ==
content_settings::CookieControlsMode::kBlockThirdParty;
- const bool privacy_sandbox_enabled =
- PrivacySandboxSettingsFactory::GetForProfile(profile)
- ->IsPrivacySandboxEnabled();
- return {{"3P cookies blocked", third_party_cookies_blocked},
- {"Privacy Sandbox enabled", privacy_sandbox_enabled}};
+ return {{"3P cookies blocked", third_party_cookies_blocked}};
}
// Generate the Product Specific bits data which accompanies M1 Ad Privacy
@@ -73,8 +70,8 @@ void HatsHandler::RegisterMessages() {
base::BindRepeating(&HatsHandler::HandleTrustSafetyInteractionOccurred,
base::Unretained(this)));
web_ui()->RegisterMessageCallback(
- "securityPageInteractionOccurred",
- base::BindRepeating(&HatsHandler::HandleSecurityPageInteractionOccurred,
+ "securityPageHatsRequest",
+ base::BindRepeating(&HatsHandler::HandleSecurityPageHatsRequest,
base::Unretained(this)));
}
@@ -82,14 +79,15 @@ void HatsHandler::RegisterMessages() {
* First arg in the list indicates the SecurityPageInteraction.
* Second arg in the list indicates the SafeBrowsingSetting.
*/
-void HatsHandler::HandleSecurityPageInteractionOccurred(
- const base::Value::List& args) {
+void HatsHandler::HandleSecurityPageHatsRequest(const base::Value::List& args) {
AllowJavascript();
- // There are 2 argument in the input list.
+ // There are 3 argument in the input list.
// The first one is the SecurityPageInteraction that triggered the survey.
// The second one is the safe browsing setting the user was on.
- CHECK_EQ(2U, args.size());
+ // The third one is the total amount of time a user spent on the security page
+ // in focus.
+ CHECK_EQ(3U, args.size());
Profile* profile = Profile::FromWebUI(web_ui());
@@ -109,23 +107,42 @@ void HatsHandler::HandleSecurityPageInteractionOccurred(
return;
}
+ // Do not send the survey if the user didn't stay on the page long enough.
+ if (args[2].GetDouble() <
+ features::kHappinessTrackingSurveysForSecurityPageTime.Get()
+ .InMilliseconds()) {
+ return;
+ }
+
+ auto interaction = static_cast<SecurityPageInteraction>(args[0].GetInt());
+ if (features::kHappinessTrackingSurveysForSecurityPageRequireInteraction
+ .Get() &&
+ interaction == SecurityPageInteraction::NO_INTERACTION) {
+ return;
+ }
+
// Generate the Product Specific bits data from |profile| and |args|.
SurveyStringData product_specific_string_data =
GetSecurityPageProductSpecificStringData(profile, args);
- hats_service->LaunchDelayedSurveyForWebContents(
- kHatsSurveyTriggerSettingsSecurity, web_ui()->GetWebContents(),
- features::kHappinessTrackingSurveysForSecurityPageTime.Get()
- .InMilliseconds(),
+ hats_service->LaunchSurvey(
+ kHatsSurveyTriggerSettingsSecurity,
+ /*success_callback*/ base::DoNothing(),
+ /*failure_callback*/ base::DoNothing(),
/*product_specific_bits_data=*/{},
- /*product_specific_string_data=*/product_specific_string_data,
- /*require_same_origin=*/true);
+ /*product_specific_string_data=*/product_specific_string_data);
+
+ // Log histogram that indicates that a survey is requested from the security
+ // page.
+ base::UmaHistogramBoolean("Feedback.SecurityPage.SurveyRequested", true);
}
/**
* Generate the Product Specific string data from |profile| and |args|.
* - First arg in the list indicates the SecurityPageInteraction.
* - Second arg in the list indicates the SafeBrowsingSetting.
+ * - Third arg in the list indicates the amount of time user spent on the
+ * security page in focus.
*/
SurveyStringData HatsHandler::GetSecurityPageProductSpecificStringData(
Profile* profile,
@@ -155,12 +172,16 @@ SurveyStringData HatsHandler::GetSecurityPageProductSpecificStringData(
}
case SecurityPageInteraction::EXPAND_BUTTON_ENHANCED_CLICK: {
security_page_interaction_type =
- "enhanced_protection_expand_button_clicked.";
+ "enhanced_protection_expand_button_clicked";
break;
}
case SecurityPageInteraction::EXPAND_BUTTON_STANDARD_CLICK: {
security_page_interaction_type =
- "standard_protection_expand_button_clicked.";
+ "standard_protection_expand_button_clicked";
+ break;
+ }
+ case SecurityPageInteraction::NO_INTERACTION: {
+ security_page_interaction_type = "no_interaction";
break;
}
}
@@ -200,7 +221,7 @@ SurveyStringData HatsHandler::GetSecurityPageProductSpecificStringData(
{"Safe Browsing Setting Before Trigger", safe_browsing_setting_before},
{"Safe Browsing Setting After Trigger", safe_browsing_setting_current},
{"Client Channel", client_channel},
- };
+ {"Time On Page", std::to_string(args[2].GetDouble())}};
}
void HatsHandler::HandleTrustSafetyInteractionOccurred(
@@ -232,19 +253,9 @@ void HatsHandler::RequestHatsSurvey(TrustSafetyInteraction interaction) {
std::string trigger = "";
int timeout_ms = 0;
SurveyBitsData product_specific_bits_data = {};
- bool require_same_origin = false;
+ auto navigation_behaviour = HatsService::NavigationBehaviour::ALLOW_ANY;
switch (interaction) {
- case TrustSafetyInteraction::OPENED_PRIVACY_SANDBOX: {
- trigger = kHatsSurveyTriggerPrivacySandbox;
- timeout_ms =
- features::kHappinessTrackingSurveysForDesktopPrivacySandboxTime.Get()
- .InMilliseconds();
- product_specific_bits_data =
- GetPrivacySettingsProductSpecificBitsData(profile);
- require_same_origin = true;
- break;
- }
case TrustSafetyInteraction::RAN_SAFETY_CHECK:
[[fallthrough]];
case TrustSafetyInteraction::USED_PRIVACY_CARD: {
@@ -257,22 +268,14 @@ void HatsHandler::RequestHatsSurvey(TrustSafetyInteraction interaction) {
prefs::kPrivacyGuideViewed)) {
return;
}
- // If the privacy settings survey is explicitly targeting users who have
- // not viewed the Privacy Sandbox page, and this user has viewed the page,
- // do not attempt to show the privacy settings survey.
- if (features::kHappinessTrackingSurveysForDesktopSettingsPrivacyNoSandbox
- .Get() &&
- Profile::FromWebUI(web_ui())->GetPrefs()->GetBoolean(
- prefs::kPrivacySandboxPageViewed)) {
- return;
- }
trigger = kHatsSurveyTriggerSettingsPrivacy;
timeout_ms =
features::kHappinessTrackingSurveysForDesktopSettingsPrivacyTime.Get()
.InMilliseconds();
product_specific_bits_data =
GetPrivacySettingsProductSpecificBitsData(profile);
- require_same_origin = true;
+ navigation_behaviour =
+ HatsService::NavigationBehaviour::REQUIRE_SAME_ORIGIN;
break;
}
case TrustSafetyInteraction::COMPLETED_PRIVACY_GUIDE: {
@@ -280,7 +283,8 @@ void HatsHandler::RequestHatsSurvey(TrustSafetyInteraction interaction) {
timeout_ms =
features::kHappinessTrackingSurveysForDesktopPrivacyGuideTime.Get()
.InMilliseconds();
- require_same_origin = true;
+ navigation_behaviour =
+ HatsService::NavigationBehaviour::REQUIRE_SAME_ORIGIN;
break;
}
case TrustSafetyInteraction::OPENED_AD_PRIVACY: {
@@ -288,7 +292,8 @@ void HatsHandler::RequestHatsSurvey(TrustSafetyInteraction interaction) {
timeout_ms =
features::kHappinessTrackingSurveysForDesktopM1AdPrivacyPageTime.Get()
.InMilliseconds();
- require_same_origin = true;
+ navigation_behaviour =
+ HatsService::NavigationBehaviour::REQUIRE_SAME_ORIGIN;
product_specific_bits_data = GetAdPrivacyProductSpecificBitsData(profile);
break;
}
@@ -297,7 +302,8 @@ void HatsHandler::RequestHatsSurvey(TrustSafetyInteraction interaction) {
timeout_ms =
features::kHappinessTrackingSurveysForDesktopM1TopicsSubpageTime.Get()
.InMilliseconds();
- require_same_origin = true;
+ navigation_behaviour =
+ HatsService::NavigationBehaviour::REQUIRE_SAME_ORIGIN;
product_specific_bits_data = GetAdPrivacyProductSpecificBitsData(profile);
break;
}
@@ -306,7 +312,8 @@ void HatsHandler::RequestHatsSurvey(TrustSafetyInteraction interaction) {
timeout_ms =
features::kHappinessTrackingSurveysForDesktopM1FledgeSubpageTime.Get()
.InMilliseconds();
- require_same_origin = true;
+ navigation_behaviour =
+ HatsService::NavigationBehaviour::REQUIRE_SAME_ORIGIN;
product_specific_bits_data = GetAdPrivacyProductSpecificBitsData(profile);
break;
}
@@ -317,10 +324,21 @@ void HatsHandler::RequestHatsSurvey(TrustSafetyInteraction interaction) {
kHappinessTrackingSurveysForDesktopM1AdMeasurementSubpageTime
.Get()
.InMilliseconds();
- require_same_origin = true;
+ navigation_behaviour =
+ HatsService::NavigationBehaviour::REQUIRE_SAME_ORIGIN;
product_specific_bits_data = GetAdPrivacyProductSpecificBitsData(profile);
break;
}
+#if BUILDFLAG(GOOGLE_CHROME_BRANDING)
+ case TrustSafetyInteraction::OPENED_GET_MOST_CHROME: {
+ trigger = kHatsSurveyTriggerGetMostChrome;
+ timeout_ms = features::kHappinessTrackingSurveysGetMostChromeTime.Get()
+ .InMilliseconds();
+ navigation_behaviour =
+ HatsService::NavigationBehaviour::REQUIRE_SAME_DOCUMENT;
+ break;
+ }
+#endif
case TrustSafetyInteraction::OPENED_PASSWORD_MANAGER:
[[fallthrough]];
case TrustSafetyInteraction::RAN_PASSWORD_CHECK: {
@@ -334,7 +352,7 @@ void HatsHandler::RequestHatsSurvey(TrustSafetyInteraction interaction) {
hats_service->LaunchDelayedSurveyForWebContents(
trigger, web_ui()->GetWebContents(), timeout_ms,
product_specific_bits_data,
- /*product_specific_string_data=*/{}, require_same_origin);
+ /*product_specific_string_data=*/{}, navigation_behaviour);
}
void HatsHandler::InformSentimentService(TrustSafetyInteraction interaction) {
diff --git a/chromium/chrome/browser/ui/webui/settings/hats_handler.h b/chromium/chrome/browser/ui/webui/settings/hats_handler.h
index 20b7f0f05f3..019cb79adcd 100644
--- a/chromium/chrome/browser/ui/webui/settings/hats_handler.h
+++ b/chromium/chrome/browser/ui/webui/settings/hats_handler.h
@@ -6,6 +6,7 @@
#define CHROME_BROWSER_UI_WEBUI_SETTINGS_HATS_HANDLER_H_
#include "base/gtest_prod_util.h"
+#include "build/branding_buildflags.h"
#include "chrome/browser/ui/hats/hats_service.h"
#include "chrome/browser/ui/webui/settings/settings_page_ui_handler.h"
@@ -27,7 +28,7 @@ class HatsHandler : public SettingsPageUIHandler {
void HandleTrustSafetyInteractionOccurred(const base::Value::List& args);
- void HandleSecurityPageInteractionOccurred(const base::Value::List& args);
+ void HandleSecurityPageHatsRequest(const base::Value::List& args);
private:
friend class HatsHandlerTest;
@@ -35,12 +36,23 @@ class HatsHandler : public SettingsPageUIHandler {
FRIEND_TEST_ALL_PREFIXES(HatsHandlerTest, PrivacySettingsHats);
FRIEND_TEST_ALL_PREFIXES(HatsHandlerTest, PrivacyGuideHats);
FRIEND_TEST_ALL_PREFIXES(HatsHandlerTest, PrivacySandboxHats);
- FRIEND_TEST_ALL_PREFIXES(HatsHandlerTest, SecurityPageInteractions);
+ FRIEND_TEST_ALL_PREFIXES(
+ HatsHandlerTest,
+ HandleSecurityPageHatsRequestPassesArgumentsToHatsService);
+ FRIEND_TEST_ALL_PREFIXES(
+ HatsHandlerTest,
+ HandleSecurityPageHatsRequestPassesArgumentsToHatsServiceNotLaunchSurveyNotEnoughTime);
+ FRIEND_TEST_ALL_PREFIXES(
+ HatsHandlerTest,
+ HandleSecurityPageHatsRequestPassesArgumentsToHatsServiceNotLaunchSurveyNoInteraction);
FRIEND_TEST_ALL_PREFIXES(HatsHandlerTest, TrustSafetySentimentInteractions);
FRIEND_TEST_ALL_PREFIXES(HatsHandlerNoSandboxTest, PrivacySettings);
FRIEND_TEST_ALL_PREFIXES(HatsHandlerNoSandboxTest,
TrustSafetySentimentInteractions);
FRIEND_TEST_ALL_PREFIXES(HatsHandlerParamTest, AdPrivacyHats);
+#if BUILDFLAG(GOOGLE_CHROME_BRANDING)
+ FRIEND_TEST_ALL_PREFIXES(HatsHandlerTest, GetMostChromeHats);
+#endif
// All Trust & Safety based interactions which may result in a HaTS survey.
// Must be kept in sync with the enum of the same name in
@@ -48,7 +60,7 @@ class HatsHandler : public SettingsPageUIHandler {
enum class TrustSafetyInteraction {
RAN_SAFETY_CHECK = 0,
USED_PRIVACY_CARD = 1,
- OPENED_PRIVACY_SANDBOX = 2,
+ // OPENED_PRIVACY_SANDBOX = 2, // DEPRECATED
OPENED_PASSWORD_MANAGER = 3,
COMPLETED_PRIVACY_GUIDE = 4,
RAN_PASSWORD_CHECK = 5,
@@ -56,6 +68,9 @@ class HatsHandler : public SettingsPageUIHandler {
OPENED_TOPICS_SUBPAGE = 7,
OPENED_FLEDGE_SUBPAGE = 8,
OPENED_AD_MEASUREMENT_SUBPAGE = 9,
+#if BUILDFLAG(GOOGLE_CHROME_BRANDING)
+ OPENED_GET_MOST_CHROME = 10,
+#endif
};
/**
@@ -68,7 +83,8 @@ class HatsHandler : public SettingsPageUIHandler {
RADIO_BUTTON_STANDARD_CLICK = 1,
RADIO_BUTTON_DISABLE_CLICK = 2,
EXPAND_BUTTON_ENHANCED_CLICK = 3,
- EXPAND_BUTTON_STANDARD_CLICK = 4
+ EXPAND_BUTTON_STANDARD_CLICK = 4,
+ NO_INTERACTION = 5,
};
/**
diff --git a/chromium/chrome/browser/ui/webui/settings/hats_handler_unittest.cc b/chromium/chrome/browser/ui/webui/settings/hats_handler_unittest.cc
index 345c70f0482..ff3c6262e4c 100644
--- a/chromium/chrome/browser/ui/webui/settings/hats_handler_unittest.cc
+++ b/chromium/chrome/browser/ui/webui/settings/hats_handler_unittest.cc
@@ -2,6 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+#include "build/build_config.h"
#include "chrome/browser/ui/webui/settings/hats_handler.h"
#include <memory>
@@ -9,6 +10,7 @@
#include "base/memory/raw_ptr.h"
#include "base/values.h"
+#include "build/branding_buildflags.h"
#include "chrome/browser/privacy_sandbox/privacy_sandbox_settings_factory.h"
#include "chrome/browser/ui/hats/hats_service.h"
#include "chrome/browser/ui/hats/hats_service_factory.h"
@@ -37,14 +39,14 @@ class HatsHandlerTest : public ChromeRenderViewHostTestHarness {
base::test::FeatureRefAndParams settings_privacy{
features::kHappinessTrackingSurveysForDesktopSettingsPrivacy,
{{"settings-time", "15s"}}};
- base::test::FeatureRefAndParams privacy_sandbox{
- features::kHappinessTrackingSurveysForDesktopPrivacySandbox,
- {{"settings-time", "10s"}}};
base::test::FeatureRefAndParams privacy_guide{
features::kHappinessTrackingSurveysForDesktopPrivacyGuide,
{{"settings-time", "15s"}}};
+ base::test::FeatureRefAndParams security_page{
+ features::kHappinessTrackingSurveysForSecurityPage,
+ {{"security-page-time", "15s"}}};
scoped_feature_list_.InitWithFeaturesAndParameters(
- {settings_privacy, privacy_sandbox, privacy_guide}, {});
+ {settings_privacy, privacy_guide, security_page}, {});
}
void SetUp() override {
@@ -95,20 +97,20 @@ class HatsHandlerTest : public ChromeRenderViewHostTestHarness {
};
TEST_F(HatsHandlerTest, PrivacySettingsHats) {
- PrivacySandboxSettingsFactory::GetForProfile(profile())
- ->SetPrivacySandboxEnabled(false);
profile()->GetPrefs()->SetInteger(
prefs::kCookieControlsMode,
static_cast<int>(content_settings::CookieControlsMode::kBlockThirdParty));
SurveyBitsData expected_product_specific_data = {
- {"3P cookies blocked", true}, {"Privacy Sandbox enabled", false}};
+ {"3P cookies blocked", true}};
// Check that both interacting with the privacy card, and running Safety Check
// result in a survey request with the appropriate product specific data.
- EXPECT_CALL(*mock_hats_service_,
- LaunchDelayedSurveyForWebContents(
- kHatsSurveyTriggerSettingsPrivacy, web_contents(), 15000,
- expected_product_specific_data, _, true))
+ EXPECT_CALL(
+ *mock_hats_service_,
+ LaunchDelayedSurveyForWebContents(
+ kHatsSurveyTriggerSettingsPrivacy, web_contents(), 15000,
+ expected_product_specific_data, _,
+ HatsService::NavigationBehaviour::REQUIRE_SAME_ORIGIN, _, _, _, _))
.Times(2);
base::Value::List args;
args.Append(
@@ -124,9 +126,11 @@ TEST_F(HatsHandlerTest, PrivacySettingsHats) {
TEST_F(HatsHandlerTest, PrivacyGuideHats) {
// Check that completing a privacy guide triggers a privacy guide hats.
- EXPECT_CALL(*mock_hats_service_, LaunchDelayedSurveyForWebContents(
- kHatsSurveyTriggerPrivacyGuide,
- web_contents(), 15000, _, _, true))
+ EXPECT_CALL(
+ *mock_hats_service_,
+ LaunchDelayedSurveyForWebContents(
+ kHatsSurveyTriggerPrivacyGuide, web_contents(), 15000, _, _,
+ HatsService::NavigationBehaviour::REQUIRE_SAME_ORIGIN, _, _, _, _))
.Times(1);
base::Value::List args;
args.Append(static_cast<int>(
@@ -135,86 +139,157 @@ TEST_F(HatsHandlerTest, PrivacyGuideHats) {
task_environment()->RunUntilIdle();
}
-TEST_F(HatsHandlerTest, SecurityPageInteractions) {
+#if BUILDFLAG(GOOGLE_CHROME_BRANDING)
+TEST_F(HatsHandlerTest, GetMostChromeHats) {
+ // Check that visiting the "Get the most out of Chrome" page triggers the
+ // corresponding hats.
+ EXPECT_CALL(
+ *mock_hats_service_,
+ LaunchDelayedSurveyForWebContents(
+ kHatsSurveyTriggerGetMostChrome, web_contents(), _, _, _,
+ HatsService::NavigationBehaviour::REQUIRE_SAME_DOCUMENT, _, _, _, _))
+ .Times(1);
+ base::Value::List args;
+ args.Append(static_cast<int>(
+ HatsHandler::TrustSafetyInteraction::OPENED_GET_MOST_CHROME));
+ handler()->HandleTrustSafetyInteractionOccurred(args);
+ task_environment()->RunUntilIdle();
+}
+#endif // BUILDFLAG(GOOGLE_CHROME_BRANDING)
+
+#if BUILDFLAG(IS_CHROMEOS)
+#define MAYBE_HandleSecurityPageHatsRequestPassesArgumentsToHatsService \
+ DISABLED_HandleSecurityPageHatsRequestPassesArgumentsToHatsService
+#else
+#define MAYBE_HandleSecurityPageHatsRequestPassesArgumentsToHatsService \
+ HandleSecurityPageHatsRequestPassesArgumentsToHatsService
+#endif
+TEST_F(HatsHandlerTest,
+ MAYBE_HandleSecurityPageHatsRequestPassesArgumentsToHatsService) {
SurveyStringData expected_product_specific_data = {
{"Security Page User Action", "enhanced_protection_radio_button_clicked"},
{"Safe Browsing Setting Before Trigger", "standard_protection"},
{"Safe Browsing Setting After Trigger", "standard_protection"},
+#if BUILDFLAG(GOOGLE_CHROME_BRANDING)
+ {"Client Channel", "stable"},
+#else
{"Client Channel", "unknown"},
+#endif // BUILDFLAG(GOOGLE_CHROME_BRANDING)
+ {"Time On Page", "20000.000000"},
};
// Check that triggering the security page handler function will trigger HaTS
// correctly.
EXPECT_CALL(*mock_hats_service_,
- LaunchDelayedSurveyForWebContents(
- kHatsSurveyTriggerSettingsSecurity, web_contents(), 15000, _,
- expected_product_specific_data, true))
+ LaunchSurvey(kHatsSurveyTriggerSettingsSecurity, _, _, _,
+ expected_product_specific_data))
.Times(1);
base::Value::List args;
args.Append(static_cast<int>(
HatsHandler::SecurityPageInteraction::RADIO_BUTTON_ENHANCED_CLICK));
args.Append(static_cast<int>(HatsHandler::SafeBrowsingSetting::STANDARD));
+ // Set the time spent on the page to 20,000 milliseconds, which is longer than
+ // the configured value from Finch, 15,000 milliseconds.
+ args.Append(20000);
profile()->GetPrefs()->SetBoolean(prefs::kSafeBrowsingEnabled, true);
profile()->GetPrefs()->SetBoolean(prefs::kSafeBrowsingSurveysEnabled, true);
- handler()->HandleSecurityPageInteractionOccurred(args);
+ handler()->HandleSecurityPageHatsRequest(args);
task_environment()->RunUntilIdle();
}
-class HatsHandlerNoSandboxTest : public HatsHandlerTest {
- public:
- HatsHandlerNoSandboxTest() {
- scoped_feature_list_.Reset();
- base::test::FeatureRefAndParams settings_privacy{
- features::kHappinessTrackingSurveysForDesktopSettingsPrivacy,
- {{"no-sandbox", "true"}}};
- scoped_feature_list_.InitWithFeaturesAndParameters({settings_privacy}, {});
- }
-};
+#if BUILDFLAG(IS_CHROMEOS)
+#define MAYBE_HandleSecurityPageHatsRequestPassesArgumentsToHatsServiceNotLaunchSurveyNotEnoughTime \
+ DISABLED_HandleSecurityPageHatsRequestPassesArgumentsToHatsServiceNotLaunchSurveyNotEnoughTime
+#else
+#define MAYBE_HandleSecurityPageHatsRequestPassesArgumentsToHatsServiceNotLaunchSurveyNotEnoughTime \
+ HandleSecurityPageHatsRequestPassesArgumentsToHatsServiceNotLaunchSurveyNotEnoughTime
+#endif
+TEST_F(
+ HatsHandlerTest,
+ MAYBE_HandleSecurityPageHatsRequestPassesArgumentsToHatsServiceNotLaunchSurveyNotEnoughTime) {
+ SurveyStringData expected_product_specific_data = {
+ {"Security Page User Action", "enhanced_protection_radio_button_clicked"},
+ {"Safe Browsing Setting Before Trigger", "standard_protection"},
+ {"Safe Browsing Setting After Trigger", "standard_protection"},
+#if BUILDFLAG(GOOGLE_CHROME_BRANDING)
+ {"Client Channel", "stable"},
+#else
+ {"Client Channel", "unknown"},
+#endif // BUILDFLAG(GOOGLE_CHROME_BRANDING)
+ {"Time On Page", "10000"},
+ };
-TEST_F(HatsHandlerNoSandboxTest, PrivacySettings) {
- PrivacySandboxSettingsFactory::GetForProfile(profile())
- ->SetPrivacySandboxEnabled(false);
- profile()->GetPrefs()->SetInteger(
- prefs::kCookieControlsMode,
- static_cast<int>(content_settings::CookieControlsMode::kBlockThirdParty));
- SurveyBitsData expected_product_specific_data = {
- {"3P cookies blocked", true}, {"Privacy Sandbox enabled", false}};
- // Enable targeting for users who have not seen the Privacy Sandbox page and
- // ensure the handler does not attempt to launch the survey.
+ // Check that staying on the security page less than 15,000 ms will not
+ // trigger the survey.
EXPECT_CALL(*mock_hats_service_,
- LaunchDelayedSurveyForWebContents(_, _, _, _, _, _))
+ LaunchSurvey(kHatsSurveyTriggerSettingsSecurity, _, _, _,
+ expected_product_specific_data))
.Times(0);
- profile()->GetPrefs()->SetBoolean(prefs::kPrivacySandboxPageViewed, true);
-
base::Value::List args;
- args.Append(
- static_cast<int>(HatsHandler::TrustSafetyInteraction::USED_PRIVACY_CARD));
- handler()->HandleTrustSafetyInteractionOccurred(args);
+ args.Append(static_cast<int>(
+ HatsHandler::SecurityPageInteraction::RADIO_BUTTON_ENHANCED_CLICK));
+ args.Append(static_cast<int>(HatsHandler::SafeBrowsingSetting::STANDARD));
+ args.Append(10000);
+
+ profile()->GetPrefs()->SetBoolean(prefs::kSafeBrowsingEnabled, true);
+ profile()->GetPrefs()->SetBoolean(prefs::kSafeBrowsingSurveysEnabled, true);
+
+ handler()->HandleSecurityPageHatsRequest(args);
task_environment()->RunUntilIdle();
}
-TEST_F(HatsHandlerTest, PrivacySandboxHats) {
- // Check that the handler correctly forwards the survey request to the
- // HaTS service and also includes the appropriate product specific data.
- PrivacySandboxSettingsFactory::GetForProfile(profile())
- ->SetPrivacySandboxEnabled(false);
- profile()->GetPrefs()->SetInteger(
- prefs::kCookieControlsMode,
- static_cast<int>(content_settings::CookieControlsMode::kBlockThirdParty));
- SurveyBitsData expected_product_specific_data = {
- {"3P cookies blocked", true}, {"Privacy Sandbox enabled", false}};
+#if BUILDFLAG(IS_CHROMEOS)
+#define MAYBE_HandleSecurityPageHatsRequestPassesArgumentsToHatsServiceNotLaunchSurveyNoInteraction \
+ DISABLED_HandleSecurityPageHatsRequestPassesArgumentsToHatsServiceNotLaunchSurveyNoInteraction
+#else
+#define MAYBE_HandleSecurityPageHatsRequestPassesArgumentsToHatsServiceNotLaunchSurveyNoInteraction \
+ HandleSecurityPageHatsRequestPassesArgumentsToHatsServiceNotLaunchSurveyNoInteraction
+#endif
+TEST_F(
+ HatsHandlerTest,
+ MAYBE_HandleSecurityPageHatsRequestPassesArgumentsToHatsServiceNotLaunchSurveyNoInteraction) {
+ SurveyStringData expected_product_specific_data = {
+ {"Security Page User Action", "no_interaction"},
+ {"Safe Browsing Setting Before Trigger", "standard_protection"},
+ {"Safe Browsing Setting After Trigger", "standard_protection"},
+#if BUILDFLAG(GOOGLE_CHROME_BRANDING)
+ {"Client Channel", "stable"},
+#else
+ {"Client Channel", "unknown"},
+#endif // BUILDFLAG(GOOGLE_CHROME_BRANDING)
+ {"Time On Page", "20000.000000"},
+ };
+
+ // Reconfigure the feature parameter to require interaction to launch the
+ // survey.
+ base::test::FeatureRefAndParams security_page{
+ features::kHappinessTrackingSurveysForSecurityPage,
+ {{"security-page-time", "15s"},
+ {"security-page-require-interaction", "true"}}};
+ scoped_feature_list_.Reset();
+ scoped_feature_list_.InitWithFeaturesAndParameters({security_page}, {});
+
+ // Verify that if there are no interactions on the security page but user
+ // interactions are required through finch, the survey will not be shown.
EXPECT_CALL(*mock_hats_service_,
- LaunchDelayedSurveyForWebContents(
- kHatsSurveyTriggerPrivacySandbox, web_contents(), 10000,
- expected_product_specific_data, _, true));
+ LaunchSurvey(kHatsSurveyTriggerSettingsSecurity, _, _, _,
+ expected_product_specific_data))
+ .Times(0);
+
base::Value::List args;
- args.Append(static_cast<int>(
- HatsHandler::TrustSafetyInteraction::OPENED_PRIVACY_SANDBOX));
- handler()->HandleTrustSafetyInteractionOccurred(args);
+ args.Append(
+ static_cast<int>(HatsHandler::SecurityPageInteraction::NO_INTERACTION));
+ args.Append(static_cast<int>(HatsHandler::SafeBrowsingSetting::STANDARD));
+ args.Append(20000);
+
+ profile()->GetPrefs()->SetBoolean(prefs::kSafeBrowsingEnabled, true);
+ profile()->GetPrefs()->SetBoolean(prefs::kSafeBrowsingSurveysEnabled, true);
+
+ handler()->HandleSecurityPageHatsRequest(args);
task_environment()->RunUntilIdle();
}
@@ -235,25 +310,6 @@ TEST_F(HatsHandlerTest, TrustSafetySentimentInteractions) {
handler()->HandleTrustSafetyInteractionOccurred(args);
}
-TEST_F(HatsHandlerNoSandboxTest, TrustSafetySentimentInteractions) {
- // A profile & feature state that would exclude the user from receiving the
- // Privacy Settings HaTS survey should not stop the sentiment service being
- // informed that the interaction occurred.
- // Check that interactions relevant to the T&S sentiment service are
- // correctly reported.
- EXPECT_CALL(*mock_sentiment_service_, RanSafetyCheck()).Times(1);
- base::Value::List args;
- args.Append(
- static_cast<int>(HatsHandler::TrustSafetyInteraction::RAN_SAFETY_CHECK));
- profile()->GetPrefs()->SetBoolean(prefs::kPrivacySandboxPageViewed, true);
- handler()->HandleTrustSafetyInteractionOccurred(args);
-
- EXPECT_CALL(*mock_sentiment_service_, OpenedPasswordManager(web_contents()));
- args[0] = base::Value(static_cast<int>(
- HatsHandler::TrustSafetyInteraction::OPENED_PASSWORD_MANAGER));
- handler()->HandleTrustSafetyInteractionOccurred(args);
-}
-
class HatsHandlerParamTest : public HatsHandlerTest,
public testing::WithParamInterface<bool> {};
@@ -288,10 +344,11 @@ TEST_P(HatsHandlerParamTest, AdPrivacyHats) {
};
for (const auto& [interaction, survey] : interaction_to_survey) {
- EXPECT_CALL(*mock_hats_service_,
- LaunchDelayedSurveyForWebContents(
- survey, web_contents(), 20000,
- expected_product_specific_data, _, true));
+ EXPECT_CALL(
+ *mock_hats_service_,
+ LaunchDelayedSurveyForWebContents(
+ survey, web_contents(), 20000, expected_product_specific_data, _,
+ HatsService::NavigationBehaviour::REQUIRE_SAME_ORIGIN, _, _, _, _));
base::Value::List args;
args.Append(static_cast<int>(interaction));
handler()->HandleTrustSafetyInteractionOccurred(args);
diff --git a/chromium/chrome/browser/ui/webui/settings/import_data_handler.cc b/chromium/chrome/browser/ui/webui/settings/import_data_handler.cc
index 93d4228dedf..18f9ac15b9f 100644
--- a/chromium/chrome/browser/ui/webui/settings/import_data_handler.cc
+++ b/chromium/chrome/browser/ui/webui/settings/import_data_handler.cc
@@ -27,6 +27,7 @@
#include "chrome/common/pref_names.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/web_ui.h"
+#include "ui/shell_dialogs/selected_file_info.h"
using content::BrowserThread;
@@ -252,7 +253,7 @@ void ImportDataHandler::ImportEnded() {
: kImportStatusFailed));
}
-void ImportDataHandler::FileSelected(const base::FilePath& path,
+void ImportDataHandler::FileSelected(const ui::SelectedFileInfo& file,
int /*index*/,
void* /*params*/) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
@@ -261,7 +262,7 @@ void ImportDataHandler::FileSelected(const base::FilePath& path,
importer::SourceProfile source_profile;
source_profile.importer_type = importer::TYPE_BOOKMARKS_FILE;
- source_profile.source_path = path;
+ source_profile.source_path = file.path();
StartImport(source_profile, importer::FAVORITES);
}
diff --git a/chromium/chrome/browser/ui/webui/settings/import_data_handler.h b/chromium/chrome/browser/ui/webui/settings/import_data_handler.h
index 26544ebffe1..3283dc96949 100644
--- a/chromium/chrome/browser/ui/webui/settings/import_data_handler.h
+++ b/chromium/chrome/browser/ui/webui/settings/import_data_handler.h
@@ -62,7 +62,7 @@ class ImportDataHandler : public SettingsPageUIHandler,
void ImportEnded() override;
// ui::SelectFileDialog::Listener:
- void FileSelected(const base::FilePath& path,
+ void FileSelected(const ui::SelectedFileInfo& file,
int index,
void* params) override;
void FileSelectionCanceled(void* params) override;
diff --git a/chromium/chrome/browser/ui/webui/settings/incompatible_applications_handler_win.cc b/chromium/chrome/browser/ui/webui/settings/incompatible_applications_handler_win.cc
index 668bcc23291..c84d9cb5270 100644
--- a/chromium/chrome/browser/ui/webui/settings/incompatible_applications_handler_win.cc
+++ b/chromium/chrome/browser/ui/webui/settings/incompatible_applications_handler_win.cc
@@ -10,7 +10,6 @@
#include "base/check_op.h"
#include "base/functional/bind.h"
-#include "base/metrics/histogram_macros.h"
#include "base/metrics/user_metrics.h"
#include "base/strings/utf_string_conversions.h"
#include "base/values.h"
@@ -106,9 +105,6 @@ void IncompatibleApplicationsHandler::HandleRequestIncompatibleApplicationsList(
application_list.Append(std::move(dict));
}
- UMA_HISTOGRAM_COUNTS_100("IncompatibleApplicationsPage.NumApplications",
- incompatible_applications.size());
-
const base::Value& callback_id = args.front();
ResolveJavascriptCallback(callback_id, application_list);
}
diff --git a/chromium/chrome/browser/ui/webui/settings/languages_handler.h b/chromium/chrome/browser/ui/webui/settings/languages_handler.h
index 57909cd7523..367c7e125c7 100644
--- a/chromium/chrome/browser/ui/webui/settings/languages_handler.h
+++ b/chromium/chrome/browser/ui/webui/settings/languages_handler.h
@@ -45,7 +45,7 @@ class LanguagesHandler : public SettingsPageUIHandler {
void HandleSetProspectiveUILanguage(const base::Value::List& args);
#if BUILDFLAG(IS_CHROMEOS_ASH)
- raw_ptr<Profile, ExperimentalAsh> profile_; // Weak pointer.
+ raw_ptr<Profile> profile_; // Weak pointer.
#endif
};
diff --git a/chromium/chrome/browser/ui/webui/settings/people_handler.cc b/chromium/chrome/browser/ui/webui/settings/people_handler.cc
index 6888f70788a..59aef1cbf40 100644
--- a/chromium/chrome/browser/ui/webui/settings/people_handler.cc
+++ b/chromium/chrome/browser/ui/webui/settings/people_handler.cc
@@ -4,6 +4,8 @@
#include "chrome/browser/ui/webui/settings/people_handler.h"
+#include <memory>
+#include <optional>
#include <string>
#include "base/check_op.h"
@@ -41,11 +43,13 @@
#include "chrome/common/url_constants.h"
#include "chrome/common/webui_url_constants.h"
#include "chrome/grit/generated_resources.h"
+#include "components/prefs/pref_change_registrar.h"
#include "components/prefs/pref_service.h"
#include "components/signin/core/browser/signin_error_controller.h"
#include "components/signin/public/base/consent_level.h"
#include "components/signin/public/base/signin_metrics.h"
#include "components/signin/public/base/signin_pref_names.h"
+#include "components/signin/public/base/signin_switches.h"
#include "components/signin/public/identity_manager/account_info.h"
#include "components/signin/public/identity_manager/accounts_mutator.h"
#include "components/signin/public/identity_manager/identity_manager.h"
@@ -60,7 +64,6 @@
#include "content/public/browser/web_contents.h"
#include "content/public/browser/web_contents_delegate.h"
#include "google_apis/gaia/gaia_auth_util.h"
-#include "third_party/abseil-cpp/absl/types/optional.h"
#include "third_party/skia/include/core/SkBitmap.h"
#include "ui/base/l10n/l10n_util.h"
#include "ui/base/webui/web_ui_util.h"
@@ -114,14 +117,14 @@ SyncConfigInfo::SyncConfigInfo() : sync_everything(false) {}
SyncConfigInfo::~SyncConfigInfo() {}
bool GetConfiguration(const std::string& json, SyncConfigInfo* config) {
- absl::optional<base::Value> parsed_value = base::JSONReader::Read(json);
+ std::optional<base::Value> parsed_value = base::JSONReader::Read(json);
if (!parsed_value.has_value() || !parsed_value->is_dict()) {
DLOG(ERROR) << "GetConfiguration() not passed a Dictionary";
return false;
}
const base::Value::Dict& root = parsed_value->GetDict();
- absl::optional<bool> sync_everything = root.FindBool("syncAllDataTypes");
+ std::optional<bool> sync_everything = root.FindBool("syncAllDataTypes");
if (!sync_everything.has_value()) {
DLOG(ERROR) << "GetConfiguration() not passed a syncAllDataTypes value";
return false;
@@ -131,7 +134,7 @@ bool GetConfiguration(const std::string& json, SyncConfigInfo* config) {
for (syncer::UserSelectableType type : syncer::UserSelectableTypeSet::All()) {
std::string key_name =
syncer::GetUserSelectableTypeName(type) + std::string("Synced");
- absl::optional<bool> type_synced = root.FindBool(key_name);
+ std::optional<bool> type_synced = root.FindBool(key_name);
if (!type_synced.has_value()) {
DLOG(ERROR) << "GetConfiguration() not passed a value for " << key_name;
return false;
@@ -177,12 +180,19 @@ std::string GetSyncErrorAction(SyncStatusActionType action_type) {
// Returns the base::Value associated with the account, to use in the stored
// accounts list.
-base::Value::Dict GetAccountValue(const AccountInfo& account) {
+base::Value::Dict GetAccountValue(signin::IdentityManager* identity_manager,
+ const AccountInfo& account) {
DCHECK(!account.IsEmpty());
- auto dict = base::Value::Dict()
- .Set("email", account.email)
- .Set("fullName", account.full_name)
- .Set("givenName", account.given_name);
+ auto dict =
+ base::Value::Dict()
+ .Set("email", account.email)
+ .Set("fullName", account.full_name)
+ .Set("givenName", account.given_name)
+ .Set("isPrimaryAccount",
+ account.account_id ==
+ identity_manager
+ ->GetPrimaryAccountInfo(signin::ConsentLevel::kSignin)
+ .account_id);
if (!account.account_image.IsEmpty()) {
dict.Set("avatarImage",
webui::GetBitmapDataUrl(account.account_image.AsBitmap()));
@@ -315,8 +325,9 @@ void PeopleHandler::RegisterMessages() {
void PeopleHandler::OnJavascriptAllowed() {
PrefService* prefs = profile_->GetPrefs();
- profile_pref_registrar_.Init(prefs);
- profile_pref_registrar_.Add(
+ profile_pref_registrar_ = std::make_unique<PrefChangeRegistrar>();
+ profile_pref_registrar_->Init(prefs);
+ profile_pref_registrar_->Add(
prefs::kSigninAllowed,
base::BindRepeating(&PeopleHandler::UpdateSyncStatus,
base::Unretained(this)));
@@ -335,7 +346,7 @@ void PeopleHandler::OnJavascriptAllowed() {
}
void PeopleHandler::OnJavascriptDisallowed() {
- profile_pref_registrar_.RemoveAll();
+ profile_pref_registrar_.reset();
identity_manager_observation_.Reset();
sync_service_observation_.Reset();
}
@@ -458,7 +469,7 @@ base::Value::List PeopleHandler::GetStoredAccountsList() {
for (const auto& account : signin_ui_util::GetOrderedAccountsForDisplay(
identity_manager,
/*restrict_to_accounts_eligible_for_sync=*/true)) {
- accounts.Append(GetAccountValue(account));
+ accounts.Append(GetAccountValue(identity_manager, account));
}
return accounts;
}
@@ -473,7 +484,7 @@ base::Value::List PeopleHandler::GetStoredAccountsList() {
AccountInfo primary_account_info = identity_manager->FindExtendedAccountInfo(
identity_manager->GetPrimaryAccountInfo(ConsentLevel::kSignin));
if (!primary_account_info.IsEmpty())
- accounts.Append(GetAccountValue(primary_account_info));
+ accounts.Append(GetAccountValue(identity_manager, primary_account_info));
return accounts;
}
@@ -658,7 +669,8 @@ void PeopleHandler::HandleSignout(const base::Value::List& args) {
bool is_clear_primary_account_allowed =
signin_client->IsClearPrimaryAccountAllowed(is_syncing);
- if (!is_syncing && !is_clear_primary_account_allowed) {
+ if (!is_syncing && !is_clear_primary_account_allowed &&
+ !base::FeatureList::IsEnabled(switches::kUnoDesktop)) {
// 'Signout' should not be offered in the UI if clear primary account is not
// allowed.
NOTREACHED()
@@ -771,6 +783,12 @@ void PeopleHandler::CloseSyncSetup() {
LoginUIService* service = GetLoginUIService();
if (service) {
auto self_weak_ptr = weak_factory_.GetWeakPtr();
+
+ // ChromeOS Ash doesn't support signing out and hence the code below
+ // cannot build (RevokeSyncConsent() doesn't exist). However, the code is
+ // unreachable on Ash because IsInitialSyncFeatureSetupComplete() in the
+ // condition below always returns true.
+#if !BUILDFLAG(IS_CHROMEOS_ASH)
syncer::SyncService* sync_service = GetSyncService();
// Don't log a cancel event if the sync setup dialog is being
@@ -779,18 +797,7 @@ void PeopleHandler::CloseSyncSetup() {
configuring_sync_ &&
!sync_service->GetUserSettings()->IsInitialSyncFeatureSetupComplete() &&
sync_service->GetAuthError().state() == GoogleServiceAuthError::NONE) {
-#if BUILDFLAG(IS_CHROMEOS_ASH)
- // ChromeOS Ash doesn't support signing out and hence the code below
- // cannot build (RevokeSyncConsent() doesn't exist). However, this code is
- // unreachable on Ash because IsInitialSyncFeatureSetupComplete() always
- // returns true.
- NOTREACHED_NORETURN();
-#else // BUILDFLAG(IS_CHROMEOS_ASH)
- // If the user clicked "Cancel" while setting up sync, disable sync
- // because we don't want the sync engine to remain in the
- // first-setup-incomplete state.
DVLOG(1) << "Sync setup aborted by user action";
- sync_service->StopAndClear();
// Revoke sync consent on desktop Chrome if they click cancel during
// initial setup or close sync setup without confirming sync.
@@ -798,8 +805,8 @@ void PeopleHandler::CloseSyncSetup() {
->GetPrimaryAccountMutator()
->RevokeSyncConsent(signin_metrics::ProfileSignout::kAbortSignin,
signin_metrics::SignoutDelete::kIgnoreMetric);
-#endif // BUILDFLAG(IS_CHROMEOS_ASH)
}
+#endif // !BUILDFLAG(IS_CHROMEOS_ASH)
service->LoginUIClosed(this);
@@ -1012,7 +1019,12 @@ void PeopleHandler::PushSyncPrefs() {
// We call IsPassphraseRequired() here, instead of calling
// IsPassphraseRequiredForPreferredDataTypes(), because we want to show the
// passphrase UI even if no encrypted data types are enabled.
- args.Set("passphraseRequired", sync_user_settings->IsPassphraseRequired());
+ // IsInitialSyncFeatureSetupComplete()==false is special-cased to avoid that
+ // the user enters the custom passphrase before confirming they want to
+ // complete the sync setup flow.
+ args.Set("passphraseRequired",
+ sync_user_settings->IsPassphraseRequired() &&
+ sync_user_settings->IsInitialSyncFeatureSetupComplete());
// Same as above, we call IsTrustedVaultKeyRequired() here instead of.
// IsTrustedVaultKeyRequiredForPreferredDataTypes().
diff --git a/chromium/chrome/browser/ui/webui/settings/people_handler.h b/chromium/chrome/browser/ui/webui/settings/people_handler.h
index 5c6ec3870af..a598ab20ab6 100644
--- a/chromium/chrome/browser/ui/webui/settings/people_handler.h
+++ b/chromium/chrome/browser/ui/webui/settings/people_handler.h
@@ -79,6 +79,8 @@ class PeopleHandler : public SettingsPageUIHandler,
FRIEND_TEST_ALL_PREFIXES(PeopleHandlerTest,
ShowSetupCustomPassphraseRequired);
FRIEND_TEST_ALL_PREFIXES(PeopleHandlerTest,
+ OngoingSetupCustomPassphraseRequired);
+ FRIEND_TEST_ALL_PREFIXES(PeopleHandlerTest,
ShowSetupTrustedVaultKeysRequired);
FRIEND_TEST_ALL_PREFIXES(PeopleHandlerTest, ShowSetupEncryptAll);
FRIEND_TEST_ALL_PREFIXES(PeopleHandlerTest, ShowSetupEncryptAllDisallowed);
@@ -248,7 +250,7 @@ class PeopleHandler : public SettingsPageUIHandler,
std::unique_ptr<base::OneShotTimer> engine_start_timer_;
// Used to listen for pref changes to allow or disallow signin.
- PrefChangeRegistrar profile_pref_registrar_;
+ std::unique_ptr<PrefChangeRegistrar> profile_pref_registrar_;
// Manages observer lifetimes.
base::ScopedObservation<signin::IdentityManager,
diff --git a/chromium/chrome/browser/ui/webui/settings/people_handler_unittest.cc b/chromium/chrome/browser/ui/webui/settings/people_handler_unittest.cc
index 3a49373a5a2..f9d912bc7f2 100644
--- a/chromium/chrome/browser/ui/webui/settings/people_handler_unittest.cc
+++ b/chromium/chrome/browser/ui/webui/settings/people_handler_unittest.cc
@@ -224,12 +224,27 @@ class PeopleHandlerTest : public ChromeRenderViewHostTestHarness {
SyncServiceFactory::GetInstance()->SetTestingFactoryAndUse(
profile(), base::BindRepeating(&BuildMockSyncService)));
- ON_CALL(*mock_sync_service_, HasSyncConsent()).WillByDefault(Return(true));
-
+ // TODO(crbug.com/1505763): Consider adopting TestSyncService instead of
+ // adding fake-like behavior to MockSyncService.
+ ON_CALL(*mock_sync_service_, GetTransportState())
+ .WillByDefault(Return(syncer::SyncService::TransportState::DISABLED));
ON_CALL(*GetMockUserSettings(), GetPassphraseType())
.WillByDefault(Return(syncer::PassphraseType::kImplicitPassphrase));
ON_CALL(*GetMockUserSettings(), GetExplicitPassphraseTime())
.WillByDefault(Return(base::Time()));
+ ON_CALL(*mock_sync_service_, GetDisableReasons())
+ .WillByDefault(Return(syncer::SyncService::DisableReasonSet(
+ {syncer::SyncService::DISABLE_REASON_NOT_SIGNED_IN})));
+ ON_CALL(*GetMockUserSettings(), GetRegisteredSelectableTypes())
+ .WillByDefault(Return(GetAllTypes()));
+ ON_CALL(*GetMockUserSettings(), IsSyncEverythingEnabled())
+ .WillByDefault(Return(true));
+ ON_CALL(*GetMockUserSettings(), GetSelectedTypes())
+ .WillByDefault(Return(GetAllTypes()));
+ ON_CALL(*GetMockUserSettings(), IsCustomPassphraseAllowed())
+ .WillByDefault(Return(true));
+ ON_CALL(*GetMockUserSettings(), IsEncryptEverythingEnabled())
+ .WillByDefault(Return(false));
ON_CALL(*mock_sync_service_, GetSetupInProgressHandle())
.WillByDefault(
Return(ByMove(std::make_unique<syncer::SyncSetupInProgressHandle>(
@@ -249,6 +264,14 @@ class PeopleHandlerTest : public ChromeRenderViewHostTestHarness {
}
void SigninUser() {
+ // TODO(crbug.com/1505763): Consider adopting TestSyncService instead of
+ // adding fake-like behavior to MockSyncService.
+ ON_CALL(*mock_sync_service_, HasSyncConsent()).WillByDefault(Return(true));
+ ON_CALL(*mock_sync_service_, GetTransportState())
+ .WillByDefault(Return(syncer::SyncService::TransportState::ACTIVE));
+ ON_CALL(*mock_sync_service_, GetDisableReasons())
+ .WillByDefault(Return(syncer::SyncService::DisableReasonSet()));
+
identity_test_env()->SetPrimaryAccount(kTestUser,
signin::ConsentLevel::kSync);
}
@@ -259,29 +282,6 @@ class PeopleHandlerTest : public ChromeRenderViewHostTestHarness {
web_ui_.set_web_contents(web_contents());
}
- // Setup the expectations for calls made when displaying the config page.
- void SetDefaultExpectationsForConfigPage() {
- ON_CALL(*mock_sync_service_, GetDisableReasons())
- .WillByDefault(Return(syncer::SyncService::DisableReasonSet()));
- ON_CALL(*GetMockUserSettings(), GetRegisteredSelectableTypes())
- .WillByDefault(Return(GetAllTypes()));
- ON_CALL(*GetMockUserSettings(), IsSyncEverythingEnabled())
- .WillByDefault(Return(true));
- ON_CALL(*GetMockUserSettings(), GetSelectedTypes())
- .WillByDefault(Return(GetAllTypes()));
- ON_CALL(*GetMockUserSettings(), IsCustomPassphraseAllowed())
- .WillByDefault(Return(true));
- ON_CALL(*GetMockUserSettings(), IsEncryptEverythingEnabled())
- .WillByDefault(Return(false));
- }
-
- void SetupInitializedSyncService() {
- // An initialized SyncService will have already completed sync setup and
- // will have an initialized sync engine.
- ON_CALL(*mock_sync_service_, GetTransportState())
- .WillByDefault(Return(syncer::SyncService::TransportState::ACTIVE));
- }
-
void ExpectPageStatusResponse(const std::string& expected_status) {
auto& data = *web_ui_.call_data().back();
EXPECT_EQ("cr.webUIResponse", data.function_name());
@@ -375,18 +375,11 @@ class PeopleHandlerTest : public ChromeRenderViewHostTestHarness {
#if !BUILDFLAG(IS_CHROMEOS_ASH)
TEST_F(PeopleHandlerTest, DisplayBasicLogin) {
ASSERT_FALSE(identity_test_env()->identity_manager()->HasPrimaryAccount(
- ConsentLevel::kSync));
+ ConsentLevel::kSignin));
CreatePeopleHandler();
// Test that the HandleStartSignin call enables JavaScript.
handler_->DisallowJavascript();
- ON_CALL(*mock_sync_service_, GetDisableReasons())
- .WillByDefault(Return(syncer::SyncService::DisableReasonSet(
- {syncer::SyncService::DISABLE_REASON_NOT_SIGNED_IN})));
- ON_CALL(*GetMockUserSettings(), IsInitialSyncFeatureSetupComplete())
- .WillByDefault(Return(false));
- // Ensure that the user is not signed in before calling |HandleStartSignin()|.
- identity_test_env()->ClearPrimaryAccount();
handler_->HandleStartSignin(base::Value::List());
// Sync setup hands off control to the gaia login tab.
@@ -407,8 +400,6 @@ TEST_F(PeopleHandlerTest, DisplayBasicLogin) {
TEST_F(PeopleHandlerTest, DisplayConfigureWithEngineDisabledAndCancel) {
SigninUser();
CreatePeopleHandler();
- ON_CALL(*mock_sync_service_, GetDisableReasons())
- .WillByDefault(Return(syncer::SyncService::DisableReasonSet()));
ON_CALL(*GetMockUserSettings(), IsInitialSyncFeatureSetupComplete())
.WillByDefault(Return(false));
ON_CALL(*mock_sync_service_, GetTransportState())
@@ -442,14 +433,11 @@ TEST_F(PeopleHandlerTest,
CreatePeopleHandler();
ON_CALL(*GetMockUserSettings(), IsInitialSyncFeatureSetupComplete())
.WillByDefault(Return(false));
- ON_CALL(*mock_sync_service_, GetDisableReasons())
- .WillByDefault(Return(syncer::SyncService::DisableReasonSet()));
// Sync engine is stopped initially, and will start up.
ON_CALL(*mock_sync_service_, GetTransportState())
.WillByDefault(
Return(syncer::SyncService::TransportState::START_DEFERRED));
EXPECT_CALL(*mock_sync_service_, SetSyncFeatureRequested());
- SetDefaultExpectationsForConfigPage();
handler_->HandleShowSyncSetupUI(base::Value::List());
@@ -458,7 +446,6 @@ TEST_F(PeopleHandlerTest,
Mock::VerifyAndClearExpectations(mock_sync_service_);
// Now, act as if the SyncService has started up.
- SetDefaultExpectationsForConfigPage();
ON_CALL(*mock_sync_service_, GetTransportState())
.WillByDefault(Return(syncer::SyncService::TransportState::ACTIVE));
NotifySyncStateChanged();
@@ -482,24 +469,17 @@ TEST_F(PeopleHandlerTest,
DisplayConfigureWithEngineDisabledAndCancelAfterSigninSuccess) {
SigninUser();
CreatePeopleHandler();
- ON_CALL(*mock_sync_service_, GetDisableReasons())
- .WillByDefault(Return(syncer::SyncService::DisableReasonSet()));
ON_CALL(*GetMockUserSettings(), IsInitialSyncFeatureSetupComplete())
.WillByDefault(Return(false));
EXPECT_CALL(*mock_sync_service_, GetTransportState())
.WillOnce(Return(syncer::SyncService::TransportState::INITIALIZING))
.WillRepeatedly(Return(syncer::SyncService::TransportState::ACTIVE));
EXPECT_CALL(*mock_sync_service_, SetSyncFeatureRequested());
- SetDefaultExpectationsForConfigPage();
handler_->HandleShowSyncSetupUI(base::Value::List());
// Sync engine becomes active, so |handler_| is notified.
NotifySyncStateChanged();
- // It's important to tell sync the user cancelled the setup flow before we
- // tell it we're through with the setup progress.
- testing::InSequence seq;
- EXPECT_CALL(*mock_sync_service_, StopAndClear());
EXPECT_CALL(mock_on_setup_in_progress_handle_destroyed_, Run());
handler_->CloseSyncSetup();
@@ -524,8 +504,6 @@ TEST_F(PeopleHandlerTest, RestartSyncAfterDashboardClear) {
.WillOnce([&]() {
// SetSyncFeatureRequested() clears IsSyncFeatureDisabledViaDashboard()
// and immediately starts initializing the engine.
- ON_CALL(*mock_sync_service_, GetDisableReasons())
- .WillByDefault(Return(syncer::SyncService::DisableReasonSet()));
#if BUILDFLAG(IS_CHROMEOS_ASH)
ON_CALL(*GetMockUserSettings(), IsSyncFeatureDisabledViaDashboard())
.WillByDefault(Return(false));
@@ -616,6 +594,9 @@ TEST_F(PeopleHandlerTest, UnrecoverableErrorInitializingSync) {
{syncer::SyncService::DISABLE_REASON_UNRECOVERABLE_ERROR})));
ON_CALL(*GetMockUserSettings(), IsInitialSyncFeatureSetupComplete())
.WillByDefault(Return(false));
+ ON_CALL(*mock_sync_service_, GetTransportState())
+ .WillByDefault(Return(syncer::SyncService::TransportState::DISABLED));
+
// Open the web UI.
handler_->HandleShowSyncSetupUI(base::Value::List());
@@ -630,6 +611,9 @@ TEST_F(PeopleHandlerTest, GaiaErrorInitializingSync) {
{syncer::SyncService::DISABLE_REASON_NOT_SIGNED_IN})));
ON_CALL(*GetMockUserSettings(), IsInitialSyncFeatureSetupComplete())
.WillByDefault(Return(false));
+ ON_CALL(*mock_sync_service_, GetTransportState())
+ .WillByDefault(Return(syncer::SyncService::TransportState::DISABLED));
+
// Open the web UI.
handler_->HandleShowSyncSetupUI(base::Value::List());
@@ -643,11 +627,6 @@ TEST_F(PeopleHandlerTest, TestSyncEverything) {
base::Value::List list_args;
list_args.Append(kTestCallbackId);
list_args.Append(args);
- ON_CALL(*GetMockUserSettings(), IsPassphraseRequiredForPreferredDataTypes())
- .WillByDefault(Return(false));
- ON_CALL(*GetMockUserSettings(), IsPassphraseRequired())
- .WillByDefault(Return(false));
- SetupInitializedSyncService();
EXPECT_CALL(*mock_sync_service_->GetMockUserSettings(),
SetSelectedTypes(true, _));
handler_->HandleSetDatatypes(list_args);
@@ -658,16 +637,11 @@ TEST_F(PeopleHandlerTest, TestSyncEverything) {
TEST_F(PeopleHandlerTest, EnterCorrectExistingPassphrase) {
SigninUser();
CreatePeopleHandler();
- SetupInitializedSyncService();
ON_CALL(*GetMockUserSettings(), IsPassphraseRequired())
.WillByDefault(Return(true));
- ON_CALL(*GetMockUserSettings(), IsTrustedVaultKeyRequired())
- .WillByDefault(Return(false));
ON_CALL(*GetMockUserSettings(), IsUsingExplicitPassphrase())
.WillByDefault(Return(true));
- ON_CALL(*GetMockUserSettings(), IsCustomPassphraseAllowed())
- .WillByDefault(Return(true));
EXPECT_CALL(*mock_sync_service_->GetMockUserSettings(),
SetDecryptionPassphrase("correct_passphrase"))
@@ -684,16 +658,11 @@ TEST_F(PeopleHandlerTest, EnterCorrectExistingPassphrase) {
TEST_F(PeopleHandlerTest, SuccessfullyCreateCustomPassphrase) {
SigninUser();
CreatePeopleHandler();
- SetupInitializedSyncService();
ON_CALL(*GetMockUserSettings(), IsPassphraseRequired())
.WillByDefault(Return(false));
- ON_CALL(*GetMockUserSettings(), IsTrustedVaultKeyRequired())
- .WillByDefault(Return(false));
ON_CALL(*GetMockUserSettings(), IsUsingExplicitPassphrase())
.WillByDefault(Return(false));
- ON_CALL(*GetMockUserSettings(), IsCustomPassphraseAllowed())
- .WillByDefault(Return(true));
EXPECT_CALL(*mock_sync_service_->GetMockUserSettings(),
SetEncryptionPassphrase("custom_passphrase"));
@@ -709,16 +678,11 @@ TEST_F(PeopleHandlerTest, SuccessfullyCreateCustomPassphrase) {
TEST_F(PeopleHandlerTest, EnterWrongExistingPassphrase) {
SigninUser();
CreatePeopleHandler();
- SetupInitializedSyncService();
ON_CALL(*GetMockUserSettings(), IsPassphraseRequired())
.WillByDefault(Return(true));
- ON_CALL(*GetMockUserSettings(), IsTrustedVaultKeyRequired())
- .WillByDefault(Return(false));
ON_CALL(*GetMockUserSettings(), IsUsingExplicitPassphrase())
.WillByDefault(Return(true));
- ON_CALL(*GetMockUserSettings(), IsCustomPassphraseAllowed())
- .WillByDefault(Return(true));
EXPECT_CALL(*mock_sync_service_->GetMockUserSettings(),
SetDecryptionPassphrase("invalid_passphrase"))
@@ -735,16 +699,6 @@ TEST_F(PeopleHandlerTest, EnterWrongExistingPassphrase) {
TEST_F(PeopleHandlerTest, CannotCreateBlankPassphrase) {
SigninUser();
CreatePeopleHandler();
- SetupInitializedSyncService();
-
- ON_CALL(*GetMockUserSettings(), IsPassphraseRequired())
- .WillByDefault(Return(false));
- ON_CALL(*GetMockUserSettings(), IsTrustedVaultKeyRequired())
- .WillByDefault(Return(false));
- ON_CALL(*GetMockUserSettings(), IsUsingExplicitPassphrase())
- .WillByDefault(Return(false));
- ON_CALL(*GetMockUserSettings(), IsCustomPassphraseAllowed())
- .WillByDefault(Return(true));
EXPECT_CALL(*mock_sync_service_->GetMockUserSettings(),
SetEncryptionPassphrase)
@@ -763,7 +717,6 @@ TEST_F(PeopleHandlerTest, CannotCreateBlankPassphrase) {
TEST_F(PeopleHandlerTest, TestSyncIndividualTypes) {
SigninUser();
CreatePeopleHandler();
- SetDefaultExpectationsForConfigPage();
for (syncer::UserSelectableType type : GetAllTypes()) {
syncer::UserSelectableTypeSet type_to_set;
type_to_set.Put(type);
@@ -771,11 +724,6 @@ TEST_F(PeopleHandlerTest, TestSyncIndividualTypes) {
base::Value::List list_args;
list_args.Append(kTestCallbackId);
list_args.Append(args);
- ON_CALL(*GetMockUserSettings(), IsPassphraseRequiredForPreferredDataTypes())
- .WillByDefault(Return(false));
- ON_CALL(*GetMockUserSettings(), IsPassphraseRequired())
- .WillByDefault(Return(false));
- SetupInitializedSyncService();
EXPECT_CALL(*mock_sync_service_->GetMockUserSettings(),
SetSelectedTypes(false, type_to_set));
@@ -788,16 +736,10 @@ TEST_F(PeopleHandlerTest, TestSyncIndividualTypes) {
TEST_F(PeopleHandlerTest, TestSyncAllManually) {
SigninUser();
CreatePeopleHandler();
- SetDefaultExpectationsForConfigPage();
std::string args = GetConfiguration(CHOOSE_WHAT_TO_SYNC, GetAllTypes());
base::Value::List list_args;
list_args.Append(kTestCallbackId);
list_args.Append(args);
- ON_CALL(*GetMockUserSettings(), IsPassphraseRequiredForPreferredDataTypes())
- .WillByDefault(Return(false));
- ON_CALL(*GetMockUserSettings(), IsPassphraseRequired())
- .WillByDefault(Return(false));
- SetupInitializedSyncService();
EXPECT_CALL(*mock_sync_service_->GetMockUserSettings(),
SetSelectedTypes(false, GetAllTypes()));
handler_->HandleSetDatatypes(list_args);
@@ -808,14 +750,12 @@ TEST_F(PeopleHandlerTest, TestSyncAllManually) {
TEST_F(PeopleHandlerTest, NonRegisteredType) {
SigninUser();
CreatePeopleHandler();
- SetDefaultExpectationsForConfigPage();
// Simulate apps not being registered.
syncer::UserSelectableTypeSet registered_types = GetAllTypes();
registered_types.Remove(syncer::UserSelectableType::kApps);
ON_CALL(*GetMockUserSettings(), GetRegisteredSelectableTypes())
.WillByDefault(Return(registered_types));
- SetupInitializedSyncService();
// Simulate "Sync everything" being turned off, but all individual
// toggles left on.
@@ -833,13 +773,7 @@ TEST_F(PeopleHandlerTest, NonRegisteredType) {
TEST_F(PeopleHandlerTest, ShowSyncSetup) {
SigninUser();
CreatePeopleHandler();
- ON_CALL(*GetMockUserSettings(), IsPassphraseRequired())
- .WillByDefault(Return(false));
- ON_CALL(*GetMockUserSettings(), IsUsingExplicitPassphrase())
- .WillByDefault(Return(false));
- SetupInitializedSyncService();
// This should display the sync setup dialog (not login).
- SetDefaultExpectationsForConfigPage();
handler_->HandleShowSyncSetupUI(base::Value::List());
ExpectSyncPrefsChanged();
@@ -852,8 +786,6 @@ TEST_F(PeopleHandlerTest, ShowSetupSyncEverything) {
.WillByDefault(Return(false));
ON_CALL(*GetMockUserSettings(), IsUsingExplicitPassphrase())
.WillByDefault(Return(false));
- SetupInitializedSyncService();
- SetDefaultExpectationsForConfigPage();
// This should display the sync setup dialog (not login).
handler_->HandleShowSyncSetupUI(base::Value::List());
@@ -878,12 +810,6 @@ TEST_F(PeopleHandlerTest, ShowSetupSyncEverything) {
TEST_F(PeopleHandlerTest, ShowSetupManuallySyncAll) {
SigninUser();
CreatePeopleHandler();
- ON_CALL(*GetMockUserSettings(), IsPassphraseRequired())
- .WillByDefault(Return(false));
- ON_CALL(*GetMockUserSettings(), IsUsingExplicitPassphrase())
- .WillByDefault(Return(false));
- SetupInitializedSyncService();
- SetDefaultExpectationsForConfigPage();
ON_CALL(*GetMockUserSettings(), IsSyncEverythingEnabled())
.WillByDefault(Return(false));
// This should display the sync setup dialog (not login).
@@ -896,15 +822,10 @@ TEST_F(PeopleHandlerTest, ShowSetupManuallySyncAll) {
TEST_F(PeopleHandlerTest, ShowSetupSyncForAllTypesIndividually) {
SigninUser();
CreatePeopleHandler();
+ ON_CALL(*GetMockUserSettings(), IsSyncEverythingEnabled())
+ .WillByDefault(Return(false));
+
for (syncer::UserSelectableType type : GetAllTypes()) {
- ON_CALL(*GetMockUserSettings(), IsPassphraseRequired())
- .WillByDefault(Return(false));
- ON_CALL(*GetMockUserSettings(), IsUsingExplicitPassphrase())
- .WillByDefault(Return(false));
- SetupInitializedSyncService();
- SetDefaultExpectationsForConfigPage();
- ON_CALL(*GetMockUserSettings(), IsSyncEverythingEnabled())
- .WillByDefault(Return(false));
const syncer::UserSelectableTypeSet types = {type};
ON_CALL(*GetMockUserSettings(), GetSelectedTypes())
.WillByDefault(Return(types));
@@ -927,14 +848,14 @@ TEST_F(PeopleHandlerTest, ShowSetupSyncForAllTypesIndividually) {
TEST_F(PeopleHandlerTest, ShowSetupOldGaiaPassphraseRequired) {
SigninUser();
CreatePeopleHandler();
- SetupInitializedSyncService();
- SetDefaultExpectationsForConfigPage();
const auto passphrase_time = base::Time::Now();
ON_CALL(*GetMockUserSettings(), GetExplicitPassphraseTime())
.WillByDefault(Return(passphrase_time));
ON_CALL(*GetMockUserSettings(), IsPassphraseRequired())
.WillByDefault(Return(true));
+ ON_CALL(*GetMockUserSettings(), IsInitialSyncFeatureSetupComplete())
+ .WillByDefault(Return(true));
ON_CALL(*GetMockUserSettings(), GetPassphraseType())
.WillByDefault(Return(syncer::PassphraseType::kFrozenImplicitPassphrase));
@@ -951,14 +872,14 @@ TEST_F(PeopleHandlerTest, ShowSetupOldGaiaPassphraseRequired) {
TEST_F(PeopleHandlerTest, ShowSetupCustomPassphraseRequired) {
SigninUser();
CreatePeopleHandler();
- SetupInitializedSyncService();
- SetDefaultExpectationsForConfigPage();
const auto passphrase_time = base::Time::Now();
ON_CALL(*GetMockUserSettings(), GetExplicitPassphraseTime())
.WillByDefault(Return(passphrase_time));
ON_CALL(*GetMockUserSettings(), IsPassphraseRequired())
.WillByDefault(Return(true));
+ ON_CALL(*GetMockUserSettings(), IsInitialSyncFeatureSetupComplete())
+ .WillByDefault(Return(true));
ON_CALL(*GetMockUserSettings(), GetPassphraseType())
.WillByDefault(Return(syncer::PassphraseType::kCustomPassphrase));
@@ -972,6 +893,31 @@ TEST_F(PeopleHandlerTest, ShowSetupCustomPassphraseRequired) {
*dictionary.FindString("explicitPassphraseTime"));
}
+// Verifies that the user is not prompted to enter the custom passphrase while
+// sync setup is ongoing. This isn't reachable on Ash because
+// IsInitialSyncFeatureSetupComplete() always returns true.
+#if !BUILDFLAG(IS_CHROMEOS_ASH)
+TEST_F(PeopleHandlerTest, OngoingSetupCustomPassphraseRequired) {
+ SigninUser();
+ CreatePeopleHandler();
+
+ const auto passphrase_time = base::Time::Now();
+ ON_CALL(*GetMockUserSettings(), GetExplicitPassphraseTime())
+ .WillByDefault(Return(passphrase_time));
+ ON_CALL(*GetMockUserSettings(), IsPassphraseRequired())
+ .WillByDefault(Return(true));
+ ON_CALL(*GetMockUserSettings(), IsInitialSyncFeatureSetupComplete())
+ .WillByDefault(Return(false));
+ ON_CALL(*GetMockUserSettings(), GetPassphraseType())
+ .WillByDefault(Return(syncer::PassphraseType::kCustomPassphrase));
+
+ handler_->HandleShowSyncSetupUI(base::Value::List());
+
+ base::Value::Dict dictionary = ExpectSyncPrefsChanged();
+ ExpectHasBoolKey(dictionary, "passphraseRequired", false);
+}
+#endif // !BUILDFLAG(IS_CHROMEOS_ASH)
+
TEST_F(PeopleHandlerTest, ShowSetupTrustedVaultKeysRequired) {
SigninUser();
CreatePeopleHandler();
@@ -979,8 +925,6 @@ TEST_F(PeopleHandlerTest, ShowSetupTrustedVaultKeysRequired) {
.WillByDefault(Return(true));
ON_CALL(*GetMockUserSettings(), GetPassphraseType())
.WillByDefault(Return(syncer::PassphraseType::kTrustedVaultPassphrase));
- SetupInitializedSyncService();
- SetDefaultExpectationsForConfigPage();
// This should display the sync setup dialog (not login).
handler_->HandleShowSyncSetupUI(base::Value::List());
@@ -994,12 +938,6 @@ TEST_F(PeopleHandlerTest, ShowSetupTrustedVaultKeysRequired) {
TEST_F(PeopleHandlerTest, ShowSetupEncryptAll) {
SigninUser();
CreatePeopleHandler();
- ON_CALL(*GetMockUserSettings(), IsPassphraseRequired())
- .WillByDefault(Return(false));
- ON_CALL(*GetMockUserSettings(), IsUsingExplicitPassphrase())
- .WillByDefault(Return(false));
- SetupInitializedSyncService();
- SetDefaultExpectationsForConfigPage();
ON_CALL(*GetMockUserSettings(), IsEncryptEverythingEnabled())
.WillByDefault(Return(true));
@@ -1013,12 +951,6 @@ TEST_F(PeopleHandlerTest, ShowSetupEncryptAll) {
TEST_F(PeopleHandlerTest, ShowSetupEncryptAllDisallowed) {
SigninUser();
CreatePeopleHandler();
- ON_CALL(*GetMockUserSettings(), IsPassphraseRequired())
- .WillByDefault(Return(false));
- ON_CALL(*GetMockUserSettings(), IsUsingExplicitPassphrase())
- .WillByDefault(Return(false));
- SetupInitializedSyncService();
- SetDefaultExpectationsForConfigPage();
ON_CALL(*GetMockUserSettings(), IsCustomPassphraseAllowed())
.WillByDefault(Return(false));
@@ -1033,14 +965,7 @@ TEST_F(PeopleHandlerTest, ShowSetupEncryptAllDisallowed) {
TEST_F(PeopleHandlerTest, CannotCreatePassphraseIfCustomPassphraseDisallowed) {
SigninUser();
CreatePeopleHandler();
- SetupInitializedSyncService();
- ON_CALL(*GetMockUserSettings(), IsPassphraseRequired())
- .WillByDefault(Return(false));
- ON_CALL(*GetMockUserSettings(), IsTrustedVaultKeyRequired())
- .WillByDefault(Return(false));
- ON_CALL(*GetMockUserSettings(), IsUsingExplicitPassphrase())
- .WillByDefault(Return(false));
ON_CALL(*GetMockUserSettings(), IsCustomPassphraseAllowed())
.WillByDefault(Return(false));
@@ -1059,12 +984,7 @@ TEST_F(PeopleHandlerTest, CannotCreatePassphraseIfCustomPassphraseDisallowed) {
TEST_F(PeopleHandlerTest, CannotOverwritePassphraseWithNewOne) {
SigninUser();
CreatePeopleHandler();
- SetupInitializedSyncService();
- ON_CALL(*GetMockUserSettings(), IsPassphraseRequired())
- .WillByDefault(Return(false));
- ON_CALL(*GetMockUserSettings(), IsTrustedVaultKeyRequired())
- .WillByDefault(Return(false));
ON_CALL(*GetMockUserSettings(), IsUsingExplicitPassphrase())
.WillByDefault(Return(true));
ON_CALL(*GetMockUserSettings(), IsCustomPassphraseAllowed())
@@ -1085,8 +1005,6 @@ TEST_F(PeopleHandlerTest, CannotOverwritePassphraseWithNewOne) {
TEST_F(PeopleHandlerTest, DashboardClearWhileSettingsOpen_ConfirmSoon) {
SigninUser();
CreatePeopleHandler();
- // Sync starts out fully enabled.
- SetDefaultExpectationsForConfigPage();
handler_->HandleShowSyncSetupUI(base::Value::List());
@@ -1128,8 +1046,6 @@ TEST_F(PeopleHandlerTest, DashboardClearWhileSettingsOpen_ConfirmSoon) {
TEST_F(PeopleHandlerTest, DashboardClearWhileSettingsOpen_ConfirmLater) {
SigninUser();
CreatePeopleHandler();
- // Sync starts out fully enabled.
- SetDefaultExpectationsForConfigPage();
handler_->HandleShowSyncSetupUI(base::Value::List());
diff --git a/chromium/chrome/browser/ui/webui/settings/performance_handler.cc b/chromium/chrome/browser/ui/webui/settings/performance_handler.cc
index 41c4e685d66..8d6885604e7 100644
--- a/chromium/chrome/browser/ui/webui/settings/performance_handler.cc
+++ b/chromium/chrome/browser/ui/webui/settings/performance_handler.cc
@@ -35,9 +35,9 @@ void PerformanceHandler::RegisterMessages() {
&PerformanceHandler::HandleOpenBatterySaverFeedbackDialog,
base::Unretained(this)));
web_ui()->RegisterMessageCallback(
- "openHighEfficiencyFeedbackDialog",
+ "openMemorySaverFeedbackDialog",
base::BindRepeating(
- &PerformanceHandler::HandleOpenHighEfficiencyFeedbackDialog,
+ &PerformanceHandler::HandleOpenMemorySaverFeedbackDialog,
base::Unretained(this)));
web_ui()->RegisterMessageCallback(
"openSpeedFeedbackDialog",
@@ -73,7 +73,7 @@ base::Value PerformanceHandler::GetCurrentOpenSites() {
std::set<std::pair<base::TimeTicks, std::string>, std::greater<>>
last_active_time_host_pairs;
const Profile* profile = Profile::FromWebUI(web_ui());
- for (auto* browser : *BrowserList::GetInstance()) {
+ for (Browser* browser : *BrowserList::GetInstance()) {
// Exclude browsers not signed into the current profile
if (browser->profile() != profile) {
continue;
@@ -127,7 +127,7 @@ void PerformanceHandler::HandleOpenBatterySaverFeedbackDialog(
HandleOpenFeedbackDialog("performance_battery");
}
-void PerformanceHandler::HandleOpenHighEfficiencyFeedbackDialog(
+void PerformanceHandler::HandleOpenMemorySaverFeedbackDialog(
const base::Value::List& args) {
HandleOpenFeedbackDialog("performance_tabs");
}
diff --git a/chromium/chrome/browser/ui/webui/settings/performance_handler.h b/chromium/chrome/browser/ui/webui/settings/performance_handler.h
index 1446a5713cc..d64af3ee4a6 100644
--- a/chromium/chrome/browser/ui/webui/settings/performance_handler.h
+++ b/chromium/chrome/browser/ui/webui/settings/performance_handler.h
@@ -51,7 +51,7 @@ class PerformanceHandler : public SettingsPageUIHandler,
*/
void HandleGetDeviceHasBattery(const base::Value::List& args);
void HandleOpenBatterySaverFeedbackDialog(const base::Value::List& args);
- void HandleOpenHighEfficiencyFeedbackDialog(const base::Value::List& args);
+ void HandleOpenMemorySaverFeedbackDialog(const base::Value::List& args);
void HandleOpenSpeedFeedbackDialog(const base::Value::List& args);
void HandleOpenFeedbackDialog(const std::string category_tag);
void HandleValidateTabDiscardExceptionRule(const base::Value::List& args);
diff --git a/chromium/chrome/browser/ui/webui/settings/performance_settings_interactive_uitest.cc b/chromium/chrome/browser/ui/webui/settings/performance_settings_interactive_uitest.cc
index be94f0e7cc9..82213349935 100644
--- a/chromium/chrome/browser/ui/webui/settings/performance_settings_interactive_uitest.cc
+++ b/chromium/chrome/browser/ui/webui/settings/performance_settings_interactive_uitest.cc
@@ -11,7 +11,14 @@
#include "build/branding_buildflags.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/performance_manager/public/user_tuning/battery_saver_mode_manager.h"
+#include "chrome/browser/profiles/profile.h"
+#include "chrome/browser/ui/browser_element_identifiers.h"
#include "chrome/browser/ui/browser_finder.h"
+#include "chrome/browser/ui/performance_controls/test_support/battery_saver_browser_test_mixin.h"
+#include "chrome/browser/ui/performance_controls/test_support/memory_saver_interactive_test_mixin.h"
+#include "chrome/browser/ui/performance_controls/test_support/webui_interactive_test_mixin.h"
+#include "chrome/browser/ui/tabs/tab_enums.h"
+#include "chrome/browser/ui/tabs/tab_strip_model.h"
#include "chrome/browser/ui/webui/feedback/feedback_dialog.h"
#include "chrome/common/url_constants.h"
#include "chrome/test/base/ui_test_utils.h"
@@ -19,7 +26,9 @@
#include "chrome/test/interaction/webcontents_interaction_test_util.h"
#include "components/performance_manager/public/features.h"
#include "components/performance_manager/public/user_tuning/prefs.h"
+#include "components/prefs/pref_service.h"
#include "content/public/test/browser_test.h"
+#include "net/dns/mock_host_resolver.h"
#include "url/gurl.h"
#if BUILDFLAG(IS_CHROMEOS_ASH)
@@ -28,19 +37,15 @@
#endif // BUILDFLAG(IS_CHROMEOS_ASH)
using performance_manager::user_tuning::prefs::BatterySaverModeState;
-using performance_manager::user_tuning::prefs::HighEfficiencyModeState;
+using performance_manager::user_tuning::prefs::MemorySaverModeState;
namespace {
DEFINE_LOCAL_ELEMENT_IDENTIFIER_VALUE(kPerformanceSettingsPage);
-DEFINE_LOCAL_CUSTOM_ELEMENT_EVENT_TYPE(kButtonWasClicked);
-DEFINE_LOCAL_CUSTOM_ELEMENT_EVENT_TYPE(kElementRenders);
-DEFINE_LOCAL_CUSTOM_ELEMENT_EVENT_TYPE(kIronCollapseContentShows);
+DEFINE_LOCAL_ELEMENT_IDENTIFIER_VALUE(kSecondTabContent);
+DEFINE_LOCAL_CUSTOM_ELEMENT_EVENT_TYPE(kElementHides);
+DEFINE_LOCAL_CUSTOM_ELEMENT_EVENT_TYPE(kExceptionDialogShows);
-constexpr char kCheckJsElementIsChecked[] = "(el) => { return el.checked; }";
-constexpr char kCheckJsElementIsNotChecked[] =
- "(el) => { return !el.checked; }";
-
-const WebContentsInteractionTestUtil::DeepQuery kHighEfficiencyToggleQuery = {
+const WebContentsInteractionTestUtil::DeepQuery kMemorySaverToggleQuery = {
"settings-ui",
"settings-main",
"settings-basic-page",
@@ -57,199 +62,184 @@ const WebContentsInteractionTestUtil::DeepQuery kDiscardOnTimerQuery = {
"settings-performance-page",
"controlled-radio-button#enabledOnTimerButton"};
-} // namespace
-
-class PerformanceSettingsInteractiveTest : public InteractiveBrowserTest {
- public:
- void SetUp() override {
- InteractiveBrowserTest::SetUp();
- }
+const WebContentsInteractionTestUtil::DeepQuery kExceptionDialogEntry = {
+ "settings-ui",
+ "settings-main",
+ "settings-basic-page",
+ "settings-performance-page",
+ "tab-discard-exception-list",
+ "tab-discard-exception-tabbed-add-dialog",
+ "tab-discard-exception-current-sites-list#list",
+ "settings-checkbox-list-entry"};
- void SetUpOnMainThread() override {
- InteractiveBrowserTest::SetUpOnMainThread();
- performance_manager::user_tuning::UserPerformanceTuningManager::
- GetInstance()
- ->SetHighEfficiencyModeEnabled(true);
- ASSERT_TRUE(embedded_test_server()->InitializeAndListen());
- embedded_test_server()->StartAcceptingConnections();
- }
+const WebContentsInteractionTestUtil::DeepQuery kExceptionDialogAddButton = {
+ "settings-ui",
+ "settings-main",
+ "settings-basic-page",
+ "settings-performance-page",
+ "tab-discard-exception-list",
+ "tab-discard-exception-tabbed-add-dialog",
+ "cr-button#actionButton"};
- void TearDownOnMainThread() override {
- EXPECT_TRUE(embedded_test_server()->ShutdownAndWaitUntilComplete());
- InteractiveBrowserTest::TearDownOnMainThread();
- }
+const WebContentsInteractionTestUtil::DeepQuery kMemorySaverFeedbackButton = {
+ "settings-ui", "settings-main", "settings-basic-page",
+ "settings-section#performanceSettingsSection", "cr-icon-button#feedback"};
- auto ClickElement(const ui::ElementIdentifier& contents_id,
- const DeepQuery& element) {
- return Steps(MoveMouseTo(contents_id, element), ClickMouse());
- }
+const WebContentsInteractionTestUtil::DeepQuery kBatterySaverFeedbackButton = {
+ "settings-ui", "settings-main", "settings-basic-page",
+ "settings-section#batterySettingsSection", "cr-icon-button#feedback"};
- auto CheckTabCount(int expected_tab_count) {
- auto get_tab_count = base::BindLambdaForTesting(
- [this]() { return browser()->tab_strip_model()->GetTabCount(); });
+} // namespace
- return CheckResult(get_tab_count, expected_tab_count);
+class MemorySettingsInteractiveTest
+ : public MemorySaverInteractiveTestMixin<
+ WebUiInteractiveTestMixin<InteractiveBrowserTest>> {
+ public:
+ void SetUpOnMainThread() override {
+ MemorySaverInteractiveTestMixin::SetUpOnMainThread();
+ SetMemorySaverModeEnabled(true);
}
- auto CheckHighEfficiencyModePrefState(HighEfficiencyModeState state) {
- return CheckResult(base::BindLambdaForTesting([]() {
- return performance_manager::user_tuning::prefs::
- GetCurrentHighEfficiencyModeState(
- g_browser_process->local_state());
- }),
- state);
+ auto CheckMemorySaverModePrefState(MemorySaverModeState state) {
+ return CheckResult(
+ base::BindLambdaForTesting([]() {
+ return performance_manager::user_tuning::prefs::
+ GetCurrentMemorySaverModeState(g_browser_process->local_state());
+ }),
+ state);
}
- auto CheckHighEfficiencyModeLogged(
- HighEfficiencyModeState state,
+ auto CheckMemorySaverModeLogged(
+ MemorySaverModeState state,
int expected_count,
const base::HistogramTester& histogram_tester) {
return Do(base::BindLambdaForTesting([=, &histogram_tester]() {
histogram_tester.ExpectBucketCount(
- "PerformanceControls.HighEfficiency.SettingsChangeMode2",
+ "PerformanceControls.MemorySaver.SettingsChangeMode",
static_cast<int>(state), expected_count);
}));
}
- auto WaitForButtonStateChange(const ui::ElementIdentifier& contents_id,
- DeepQuery element,
- bool is_checked) {
- StateChange toggle_selection_change;
- toggle_selection_change.event = kButtonWasClicked;
- toggle_selection_change.where = element;
- toggle_selection_change.type = StateChange::Type::kExistsAndConditionTrue;
- toggle_selection_change.test_function =
- is_checked ? kCheckJsElementIsChecked : kCheckJsElementIsNotChecked;
-
- return WaitForStateChange(contents_id, toggle_selection_change);
- }
-
- auto WaitForElementToRender(const ui::ElementIdentifier& contents_id,
- const DeepQuery& element) {
- StateChange element_renders;
- element_renders.event = kElementRenders;
- element_renders.where = element;
- element_renders.type = StateChange::Type::kExistsAndConditionTrue;
- element_renders.test_function =
- "(el) => { return el.clientWidth > 0 && el.clientHeight > 0; }";
-
- return WaitForStateChange(contents_id, element_renders);
- }
-
- auto WaitForIronListCollapseStateChange(ui::ElementIdentifier webcontents_id,
- DeepQuery query) {
- StateChange iron_collapse_finish_animating;
- iron_collapse_finish_animating.event = kIronCollapseContentShows;
- iron_collapse_finish_animating.where = query;
- iron_collapse_finish_animating.type =
- StateChange::Type::kExistsAndConditionTrue;
- iron_collapse_finish_animating.test_function =
- "(el) => { return !el.transitioning; }";
-
- return WaitForStateChange(webcontents_id, iron_collapse_finish_animating);
- }
-
private:
base::test::ScopedFeatureList scoped_feature_list_;
};
-IN_PROC_BROWSER_TEST_F(PerformanceSettingsInteractiveTest,
- HighEfficiencyPrefChanged) {
+IN_PROC_BROWSER_TEST_F(MemorySettingsInteractiveTest, MemorySaverPrefChanged) {
RunTestSequence(
InstrumentTab(kPerformanceSettingsPage),
NavigateWebContents(kPerformanceSettingsPage,
GURL(chrome::kChromeUIPerformanceSettingsURL)),
- WaitForElementToRender(kPerformanceSettingsPage,
- kHighEfficiencyToggleQuery),
- CheckJsResultAt(kPerformanceSettingsPage, kHighEfficiencyToggleQuery,
- kCheckJsElementIsChecked),
+ WaitForElementToRender(kPerformanceSettingsPage, kMemorySaverToggleQuery),
+ WaitForButtonStateChange(kPerformanceSettingsPage,
+ kMemorySaverToggleQuery, true),
- // Turn Off High Efficiency Mode
- ClickElement(kPerformanceSettingsPage, kHighEfficiencyToggleQuery),
+ // Turn Off Memory Saver Mode
+ ClickElement(kPerformanceSettingsPage, kMemorySaverToggleQuery),
WaitForButtonStateChange(kPerformanceSettingsPage,
- kHighEfficiencyToggleQuery, false),
- CheckHighEfficiencyModePrefState(HighEfficiencyModeState::kDisabled),
+ kMemorySaverToggleQuery, false),
+ CheckMemorySaverModePrefState(MemorySaverModeState::kDisabled),
- // Turn High Efficiency Mode back on
- ClickElement(kPerformanceSettingsPage, kHighEfficiencyToggleQuery),
+ // Turn Memory Saver Mode back on
+ ClickElement(kPerformanceSettingsPage, kMemorySaverToggleQuery),
WaitForButtonStateChange(kPerformanceSettingsPage,
- kHighEfficiencyToggleQuery, true),
- CheckHighEfficiencyModePrefState(
- HighEfficiencyModeState::kEnabledOnTimer));
+ kMemorySaverToggleQuery, true),
+ CheckMemorySaverModePrefState(MemorySaverModeState::kEnabledOnTimer));
}
-IN_PROC_BROWSER_TEST_F(PerformanceSettingsInteractiveTest,
- HighEfficiencyLearnMoreLinkNavigates) {
+IN_PROC_BROWSER_TEST_F(MemorySettingsInteractiveTest,
+ MemorySaverLearnMoreLinkNavigates) {
DEFINE_LOCAL_ELEMENT_IDENTIFIER_VALUE(kLearnMorePage);
- const DeepQuery high_efficiency_learn_more = {"settings-ui",
- "settings-main",
- "settings-basic-page",
- "settings-performance-page",
- "settings-toggle-button",
- "a#learn-more"};
+ const DeepQuery memory_saver_learn_more = {"settings-ui",
+ "settings-main",
+ "settings-basic-page",
+ "settings-performance-page",
+ "settings-toggle-button",
+ "a#learn-more"};
RunTestSequence(
InstrumentTab(kPerformanceSettingsPage),
NavigateWebContents(kPerformanceSettingsPage,
GURL(chrome::kChromeUIPerformanceSettingsURL)),
InstrumentNextTab(kLearnMorePage),
- ClickElement(kPerformanceSettingsPage, high_efficiency_learn_more),
- WaitForShow(kLearnMorePage), CheckTabCount(2),
+ ClickElement(kPerformanceSettingsPage, memory_saver_learn_more),
+ WaitForShow(kLearnMorePage),
+ CheckResult([&]() { return browser()->tab_strip_model()->count(); }, 2),
WaitForWebContentsReady(kLearnMorePage,
- GURL(chrome::kHighEfficiencyModeLearnMoreUrl)));
+ GURL(chrome::kMemorySaverModeLearnMoreUrl)));
}
-IN_PROC_BROWSER_TEST_F(PerformanceSettingsInteractiveTest,
- HighEfficiencyMetricsShouldLogOnToggle) {
+IN_PROC_BROWSER_TEST_F(MemorySettingsInteractiveTest,
+ MemorySaverMetricsShouldLogOnToggle) {
base::HistogramTester histogram_tester;
RunTestSequence(
InstrumentTab(kPerformanceSettingsPage),
NavigateWebContents(kPerformanceSettingsPage,
GURL(chrome::kChromeUIPerformanceSettingsURL)),
- WaitForElementToRender(kPerformanceSettingsPage,
- kHighEfficiencyToggleQuery),
- CheckJsResultAt(kPerformanceSettingsPage, kHighEfficiencyToggleQuery,
- kCheckJsElementIsChecked),
+ WaitForElementToRender(kPerformanceSettingsPage, kMemorySaverToggleQuery),
+ WaitForButtonStateChange(kPerformanceSettingsPage,
+ kMemorySaverToggleQuery, true),
- // Turn Off High Efficiency Mode
- ClickElement(kPerformanceSettingsPage, kHighEfficiencyToggleQuery),
+ // Turn Off Memory Saver Mode
+ ClickElement(kPerformanceSettingsPage, kMemorySaverToggleQuery),
WaitForButtonStateChange(kPerformanceSettingsPage,
- kHighEfficiencyToggleQuery, false),
- CheckHighEfficiencyModeLogged(HighEfficiencyModeState::kDisabled, 1,
- histogram_tester),
+ kMemorySaverToggleQuery, false),
+ CheckMemorySaverModeLogged(MemorySaverModeState::kDisabled, 1,
+ histogram_tester),
- // Turn High Efficiency Mode back on
- ClickElement(kPerformanceSettingsPage, kHighEfficiencyToggleQuery),
+ // Turn Memory Saver Mode back on
+ ClickElement(kPerformanceSettingsPage, kMemorySaverToggleQuery),
WaitForButtonStateChange(kPerformanceSettingsPage,
- kHighEfficiencyToggleQuery, true),
- CheckHighEfficiencyModeLogged(HighEfficiencyModeState::kEnabledOnTimer, 1,
- histogram_tester));
+ kMemorySaverToggleQuery, true),
+ CheckMemorySaverModeLogged(MemorySaverModeState::kEnabledOnTimer, 1,
+ histogram_tester));
}
#if BUILDFLAG(GOOGLE_CHROME_BRANDING)
-// TODO(http://b/281528238): reenable the test.
-IN_PROC_BROWSER_TEST_F(PerformanceSettingsInteractiveTest,
- DISABLED_HighEfficiencySendFeedbackDialogOpens) {
- const DeepQuery high_efficiency_feedback = {
- "settings-ui", "settings-main", "settings-basic-page",
- "settings-section#performanceSettingsSection", "cr-icon-button#feedback"};
-
+#if !BUILDFLAG(IS_CHROMEOS)
+IN_PROC_BROWSER_TEST_F(MemorySettingsInteractiveTest,
+ MemorySaverSendFeedbackDialogOpens) {
RunTestSequence(
InstrumentTab(kPerformanceSettingsPage),
NavigateWebContents(kPerformanceSettingsPage,
GURL(chrome::kChromeUIPerformanceSettingsURL)),
- ClickElement(kPerformanceSettingsPage, high_efficiency_feedback),
+ ClickElement(kPerformanceSettingsPage, kMemorySaverFeedbackButton),
InAnyContext(WaitForShow(FeedbackDialog::kFeedbackDialogForTesting)));
}
+
+#elif BUILDFLAG(IS_CHROMEOS_ASH)
+class MemorySettingsCrosInteractiveTest
+ : public WebUiInteractiveTestMixin<InteractiveAshTest> {};
+
+IN_PROC_BROWSER_TEST_F(MemorySettingsCrosInteractiveTest,
+ MemorySaverSendFeedbackDialogOpens) {
+ SetupContextWidget();
+ InstallSystemApps();
+
+ DEFINE_LOCAL_ELEMENT_IDENTIFIER_VALUE(kOsFeedbackDialogElementId);
+ CreateBrowserWindow(GURL(chrome::kChromeUIPerformanceSettingsURL));
+ Browser* const browser = chrome::FindLastActive();
+ ASSERT_NE(browser, nullptr);
+
+ RunTestSequence(
+ InContext(browser->window()->GetElementContext(),
+ InstrumentTab(kPerformanceSettingsPage)),
+ WaitForElementToRender(kPerformanceSettingsPage,
+ kMemorySaverFeedbackButton),
+ InstrumentNextTab(kOsFeedbackDialogElementId, AnyBrowser()),
+ ClickElement(kPerformanceSettingsPage, kMemorySaverFeedbackButton),
+ WaitForShow(kOsFeedbackDialogElementId));
+}
+
+#endif // BUILDFLAG(IS_CHROMEOS_ASH)
#endif // BUILDFLAG(GOOGLE_CHROME_BRANDING)
-class PerformanceSettingsMultiStateModeInteractiveTest
- : public PerformanceSettingsInteractiveTest {
+class MemorySaverSettingsMultiStateModeInteractiveTest
+ : public MemorySettingsInteractiveTest {
public:
void SetUp() override {
scoped_feature_list_.InitAndEnableFeature(
- performance_manager::features::kHighEfficiencyMultistateMode);
+ performance_manager::features::kMemorySaverMultistateMode);
InteractiveBrowserTest::SetUp();
}
@@ -260,7 +250,6 @@ class PerformanceSettingsMultiStateModeInteractiveTest
StateChange toggle_selection_change;
toggle_selection_change.event = kButtonWasClicked;
toggle_selection_change.where = element;
- toggle_selection_change.type = StateChange::Type::kExistsAndConditionTrue;
toggle_selection_change.test_function =
is_disabled ? "(el) => el.disabled === true"
: "(el) => el.disabled === false";
@@ -272,39 +261,37 @@ class PerformanceSettingsMultiStateModeInteractiveTest
base::test::ScopedFeatureList scoped_feature_list_;
};
-IN_PROC_BROWSER_TEST_F(PerformanceSettingsMultiStateModeInteractiveTest,
- HighEfficiencyPrefChanged) {
+IN_PROC_BROWSER_TEST_F(MemorySaverSettingsMultiStateModeInteractiveTest,
+ MemorySaverPrefChanged) {
RunTestSequence(
InstrumentTab(kPerformanceSettingsPage),
NavigateWebContents(kPerformanceSettingsPage,
GURL(chrome::kChromeUIPerformanceSettingsURL)),
- WaitForElementToRender(kPerformanceSettingsPage,
- kHighEfficiencyToggleQuery),
- CheckJsResultAt(kPerformanceSettingsPage, kHighEfficiencyToggleQuery,
- kCheckJsElementIsChecked),
+ WaitForElementToRender(kPerformanceSettingsPage, kMemorySaverToggleQuery),
+ WaitForButtonStateChange(kPerformanceSettingsPage,
+ kMemorySaverToggleQuery, true),
- // Enable high efficiency mode to discard tabs based on a timer
+ // Enable memory saver mode to discard tabs based on a timer
ClickElement(kPerformanceSettingsPage, kDiscardOnTimerQuery),
WaitForButtonStateChange(kPerformanceSettingsPage, kDiscardOnTimerQuery,
true),
- CheckHighEfficiencyModePrefState(
- HighEfficiencyModeState::kEnabledOnTimer),
+ CheckMemorySaverModePrefState(MemorySaverModeState::kEnabledOnTimer),
- // Turn off high efficiency mode
- ClickElement(kPerformanceSettingsPage, kHighEfficiencyToggleQuery),
+ // Turn off memory saver mode
+ ClickElement(kPerformanceSettingsPage, kMemorySaverToggleQuery),
WaitForButtonStateChange(kPerformanceSettingsPage,
- kHighEfficiencyToggleQuery, false),
- CheckHighEfficiencyModePrefState(HighEfficiencyModeState::kDisabled),
+ kMemorySaverToggleQuery, false),
+ CheckMemorySaverModePrefState(MemorySaverModeState::kDisabled),
- // Turn high efficiency mode back on
- ClickElement(kPerformanceSettingsPage, kHighEfficiencyToggleQuery),
+ // Turn memory saver mode back on
+ ClickElement(kPerformanceSettingsPage, kMemorySaverToggleQuery),
WaitForButtonStateChange(kPerformanceSettingsPage,
- kHighEfficiencyToggleQuery, true),
- CheckHighEfficiencyModePrefState(HighEfficiencyModeState::kEnabled));
+ kMemorySaverToggleQuery, true),
+ CheckMemorySaverModePrefState(MemorySaverModeState::kEnabled));
}
-IN_PROC_BROWSER_TEST_F(PerformanceSettingsMultiStateModeInteractiveTest,
- HighEfficiencyMetricsShouldLogOnToggle) {
+IN_PROC_BROWSER_TEST_F(MemorySaverSettingsMultiStateModeInteractiveTest,
+ MemorySaverMetricsShouldLogOnToggle) {
base::HistogramTester histogram_tester;
const DeepQuery iron_collapse = {
@@ -315,48 +302,47 @@ IN_PROC_BROWSER_TEST_F(PerformanceSettingsMultiStateModeInteractiveTest,
InstrumentTab(kPerformanceSettingsPage),
NavigateWebContents(kPerformanceSettingsPage,
GURL(chrome::kChromeUIPerformanceSettingsURL)),
- WaitForElementToRender(kPerformanceSettingsPage,
- kHighEfficiencyToggleQuery),
- CheckJsResultAt(kPerformanceSettingsPage, kHighEfficiencyToggleQuery,
- kCheckJsElementIsChecked),
+ WaitForElementToRender(kPerformanceSettingsPage, kMemorySaverToggleQuery),
+ WaitForButtonStateChange(kPerformanceSettingsPage,
+ kMemorySaverToggleQuery, true),
- // Turn Off High Efficiency Mode
- ClickElement(kPerformanceSettingsPage, kHighEfficiencyToggleQuery),
+ // Turn Off Memory Saver Mode
+ ClickElement(kPerformanceSettingsPage, kMemorySaverToggleQuery),
WaitForButtonStateChange(kPerformanceSettingsPage,
- kHighEfficiencyToggleQuery, false),
- CheckHighEfficiencyModeLogged(HighEfficiencyModeState::kDisabled, 1,
- histogram_tester),
+ kMemorySaverToggleQuery, false),
+ CheckMemorySaverModeLogged(MemorySaverModeState::kDisabled, 1,
+ histogram_tester),
- // Turn High Efficiency Mode back on
- ClickElement(kPerformanceSettingsPage, kHighEfficiencyToggleQuery),
+ // Turn Memory Saver Mode back on
+ ClickElement(kPerformanceSettingsPage, kMemorySaverToggleQuery),
WaitForButtonStateChange(kPerformanceSettingsPage,
- kHighEfficiencyToggleQuery, true),
- CheckHighEfficiencyModeLogged(HighEfficiencyModeState::kEnabled, 1,
- histogram_tester),
+ kMemorySaverToggleQuery, true),
+ CheckMemorySaverModeLogged(MemorySaverModeState::kEnabled, 1,
+ histogram_tester),
// Wait for the iron-collapse animation to finish so that the performance
// radio buttons will show on screen
WaitForIronListCollapseStateChange(kPerformanceSettingsPage,
iron_collapse),
- // Change high efficiency setting to discard tabs based on timer
+ // Change memory saver setting to discard tabs based on timer
ClickElement(kPerformanceSettingsPage, kDiscardOnTimerQuery),
WaitForButtonStateChange(kPerformanceSettingsPage, kDiscardOnTimerQuery,
true),
- CheckHighEfficiencyModeLogged(HighEfficiencyModeState::kEnabledOnTimer, 1,
- histogram_tester),
+ CheckMemorySaverModeLogged(MemorySaverModeState::kEnabledOnTimer, 1,
+ histogram_tester),
- // Change high efficiency setting to discard tabs based on usage
+ // Change memory saver setting to discard tabs based on usage
ClickElement(kPerformanceSettingsPage, kDiscardOnUsageQuery),
WaitForButtonStateChange(kPerformanceSettingsPage, kDiscardOnUsageQuery,
true),
- CheckHighEfficiencyModeLogged(HighEfficiencyModeState::kEnabled, 2,
- histogram_tester));
+ CheckMemorySaverModeLogged(MemorySaverModeState::kEnabled, 2,
+ histogram_tester));
}
// Checks that the selected discard timer value is preserved as the high
// efficiency mode gets toggled
-IN_PROC_BROWSER_TEST_F(PerformanceSettingsMultiStateModeInteractiveTest,
+IN_PROC_BROWSER_TEST_F(MemorySaverSettingsMultiStateModeInteractiveTest,
DiscardTimerStateIsPreserved) {
const DeepQuery discard_time_menu = {
"settings-ui", "settings-main", "settings-basic-page",
@@ -381,10 +367,9 @@ IN_PROC_BROWSER_TEST_F(PerformanceSettingsMultiStateModeInteractiveTest,
InstrumentTab(kPerformanceSettingsPage),
NavigateWebContents(kPerformanceSettingsPage,
GURL(chrome::kChromeUIPerformanceSettingsURL)),
- WaitForElementToRender(kPerformanceSettingsPage,
- kHighEfficiencyToggleQuery),
- CheckJsResultAt(kPerformanceSettingsPage, kHighEfficiencyToggleQuery,
- kCheckJsElementIsChecked),
+ WaitForElementToRender(kPerformanceSettingsPage, kMemorySaverToggleQuery),
+ WaitForButtonStateChange(kPerformanceSettingsPage,
+ kMemorySaverToggleQuery, true),
// Select discard on timer option
ClickElement(kPerformanceSettingsPage, kDiscardOnTimerQuery),
@@ -399,12 +384,12 @@ IN_PROC_BROWSER_TEST_F(PerformanceSettingsMultiStateModeInteractiveTest,
base::ReplaceStringPlaceholders("(el) => { el.value = $1}",
{discard_timer_value}, nullptr)),
- // Turn off high efficiency mode
- ClickElement(kPerformanceSettingsPage, kHighEfficiencyToggleQuery),
+ // Turn off memory saver mode
+ ClickElement(kPerformanceSettingsPage, kMemorySaverToggleQuery),
WaitForButtonStateChange(kPerformanceSettingsPage,
- kHighEfficiencyToggleQuery, false),
- // Turn high efficiency mode back on
- ClickElement(kPerformanceSettingsPage, kHighEfficiencyToggleQuery),
+ kMemorySaverToggleQuery, false),
+ // Turn memory saver mode back on
+ ClickElement(kPerformanceSettingsPage, kMemorySaverToggleQuery),
WaitForIronListCollapseStateChange(kPerformanceSettingsPage,
iron_collapse),
CheckJsResultAt(kPerformanceSettingsPage, discard_time_drop_down,
@@ -430,51 +415,13 @@ IN_PROC_BROWSER_TEST_F(PerformanceSettingsMultiStateModeInteractiveTest,
}
#if !BUILDFLAG(IS_CHROMEOS)
-class BatterySettingsInteractiveTest : public InteractiveBrowserTest {
+class BatterySettingsInteractiveTest
+ : public BatterySaverBrowserTestMixin<
+ WebUiInteractiveTestMixin<InteractiveBrowserTest>> {
public:
- void SetUp() override {
- SetUpFakeBatterySampler();
- InteractiveBrowserTest::SetUp();
- }
-
- void SetUpOnMainThread() override {
- InteractiveBrowserTest::SetUpOnMainThread();
- ASSERT_TRUE(embedded_test_server()->InitializeAndListen());
- embedded_test_server()->StartAcceptingConnections();
- }
-
- void TearDownOnMainThread() override {
- EXPECT_TRUE(embedded_test_server()->ShutdownAndWaitUntilComplete());
- InteractiveBrowserTest::TearDownOnMainThread();
- }
-
- void SetUpFakeBatterySampler() {
- auto test_sampling_event_source =
- std::make_unique<base::test::TestSamplingEventSource>();
- auto test_battery_level_provider =
- std::make_unique<base::test::TestBatteryLevelProvider>();
-
- sampling_source_ = test_sampling_event_source.get();
- battery_level_provider_ = test_battery_level_provider.get();
- test_battery_level_provider->SetBatteryState(
- base::test::TestBatteryLevelProvider::CreateBatteryState(1, true, 100));
-
- battery_state_sampler_ =
- base::BatteryStateSampler::CreateInstanceForTesting(
- std::move(test_sampling_event_source),
- std::move(test_battery_level_provider));
- }
-
- auto ClickElement(const ui::ElementIdentifier& contents_id,
- const DeepQuery& element) {
- return Steps(MoveMouseTo(contents_id, element), ClickMouse());
- }
-
- auto CheckTabCount(int expected_tab_count) {
- auto get_tab_count = base::BindLambdaForTesting(
- [this]() { return browser()->tab_strip_model()->GetTabCount(); });
-
- return CheckResult(get_tab_count, expected_tab_count);
+ base::BatteryLevelProvider::BatteryState GetFakeBatteryState() override {
+ return base::test::TestBatteryLevelProvider::CreateBatteryState(1, true,
+ 100);
}
auto CheckBatteryStateLogged(const base::HistogramTester& histogram_tester,
@@ -487,50 +434,7 @@ class BatterySettingsInteractiveTest : public InteractiveBrowserTest {
}));
}
- auto WaitForButtonStateChange(const ui::ElementIdentifier& contents_id,
- DeepQuery element,
- bool is_checked) {
- StateChange toggle_selection_change;
- toggle_selection_change.event = kButtonWasClicked;
- toggle_selection_change.where = element;
- toggle_selection_change.type = StateChange::Type::kExistsAndConditionTrue;
- toggle_selection_change.test_function =
- is_checked ? kCheckJsElementIsChecked : kCheckJsElementIsNotChecked;
-
- return WaitForStateChange(contents_id, toggle_selection_change);
- }
-
- auto WaitForElementToRender(const ui::ElementIdentifier& contents_id,
- const DeepQuery& element) {
- StateChange element_renders;
- element_renders.event = kElementRenders;
- element_renders.where = element;
- element_renders.type = StateChange::Type::kExistsAndConditionTrue;
- element_renders.test_function =
- "(el) => { return el.clientWidth > 0 && el.clientHeight > 0; }";
-
- return WaitForStateChange(contents_id, element_renders);
- }
-
- auto WaitForIronListCollapseStateChange(ui::ElementIdentifier webcontents_id,
- DeepQuery query) {
- StateChange iron_collapse_finish_animating;
- iron_collapse_finish_animating.event = kIronCollapseContentShows;
- iron_collapse_finish_animating.where = query;
- iron_collapse_finish_animating.type =
- StateChange::Type::kExistsAndConditionTrue;
- iron_collapse_finish_animating.test_function =
- "(el) => { return !el.transitioning; }";
-
- return WaitForStateChange(webcontents_id, iron_collapse_finish_animating);
- }
-
private:
- raw_ptr<base::test::TestSamplingEventSource, DanglingUntriaged>
- sampling_source_;
- raw_ptr<base::test::TestBatteryLevelProvider, DanglingUntriaged>
- battery_level_provider_;
- std::unique_ptr<base::BatteryStateSampler> battery_state_sampler_;
base::test::ScopedFeatureList scoped_feature_list_;
};
@@ -547,7 +451,8 @@ IN_PROC_BROWSER_TEST_F(BatterySettingsInteractiveTest,
GURL(chrome::kChromeUIPerformanceSettingsURL)),
InstrumentNextTab(kLearnMorePage),
ClickElement(kPerformanceSettingsPage, battery_saver_learn_more),
- WaitForShow(kLearnMorePage), CheckTabCount(2),
+ WaitForShow(kLearnMorePage),
+ CheckResult([&]() { return browser()->tab_strip_model()->count(); }, 2),
WaitForWebContentsReady(kLearnMorePage,
GURL(chrome::kBatterySaverModeLearnMoreUrl)));
}
@@ -577,8 +482,8 @@ IN_PROC_BROWSER_TEST_F(BatterySettingsInteractiveTest,
NavigateWebContents(kPerformanceSettingsPage,
GURL(chrome::kChromeUIPerformanceSettingsURL)),
WaitForElementToRender(kPerformanceSettingsPage, battery_saver_toggle),
- CheckJsResultAt(kPerformanceSettingsPage, battery_saver_toggle,
- kCheckJsElementIsChecked),
+ WaitForButtonStateChange(kPerformanceSettingsPage, battery_saver_toggle,
+ true),
// Turn off Battery Saver Mode
ClickElement(kPerformanceSettingsPage, battery_saver_toggle),
@@ -615,24 +520,20 @@ IN_PROC_BROWSER_TEST_F(BatterySettingsInteractiveTest,
}
#if BUILDFLAG(GOOGLE_CHROME_BRANDING)
-// TODO(http://b/281528238): reenable the test.
IN_PROC_BROWSER_TEST_F(BatterySettingsInteractiveTest,
- DISABLED_BatterySaverSendFeedbackDialogOpens) {
- const DeepQuery battery_saver_feedback = {
- "settings-ui", "settings-main", "settings-basic-page",
- "settings-section#batterySettingsSection", "cr-icon-button#feedback"};
-
+ BatterySaverSendFeedbackDialogOpens) {
RunTestSequence(
InstrumentTab(kPerformanceSettingsPage),
NavigateWebContents(kPerformanceSettingsPage,
GURL(chrome::kChromeUIPerformanceSettingsURL)),
- ClickElement(kPerformanceSettingsPage, battery_saver_feedback),
+ ClickElement(kPerformanceSettingsPage, kBatterySaverFeedbackButton),
InAnyContext(WaitForShow(FeedbackDialog::kFeedbackDialogForTesting)));
}
#endif // BUILDFLAG(GOOGLE_CHROME_BRANDING)
#elif BUILDFLAG(IS_CHROMEOS_ASH)
-class BatterySettingsInteractiveTest : public InteractiveAshTest {
+class BatterySettingsInteractiveTest
+ : public WebUiInteractiveTestMixin<InteractiveAshTest> {
public:
BatterySettingsInteractiveTest()
: scoped_feature_list_(ash::features::kBatterySaver) {}
@@ -643,25 +544,6 @@ class BatterySettingsInteractiveTest : public InteractiveAshTest {
kForceDeviceHasBatterySwitch);
}
- auto WaitForElementToRender(const ui::ElementIdentifier& contents_id,
- const DeepQuery& element) {
- StateChange element_renders;
- element_renders.event = kElementRenders;
- element_renders.where = element;
- element_renders.type = StateChange::Type::kExistsAndConditionTrue;
- element_renders.test_function =
- "(el) => { return el !== null && el.clientWidth > 0 && el.clientHeight "
- "> 0; }";
-
- return WaitForStateChange(contents_id, element_renders);
- }
-
- auto ClickElement(const ui::ElementIdentifier& contents_id,
- const DeepQuery& element) {
- return Steps(WaitForElementToRender(contents_id, element),
- MoveMouseTo(contents_id, element), ClickMouse());
- }
-
private:
base::test::ScopedFeatureList scoped_feature_list_;
};
@@ -691,4 +573,187 @@ IN_PROC_BROWSER_TEST_F(BatterySettingsInteractiveTest,
WaitForWebContentsReady(kOsSettingsElementId,
GURL("chrome://os-settings/power")));
}
+
+#if BUILDFLAG(GOOGLE_CHROME_BRANDING)
+IN_PROC_BROWSER_TEST_F(BatterySettingsInteractiveTest,
+ BatterySaverSendFeedbackDialogOpens) {
+ SetupContextWidget();
+ InstallSystemApps();
+
+ DEFINE_LOCAL_ELEMENT_IDENTIFIER_VALUE(kOsFeedbackDialogElementId);
+ CreateBrowserWindow(GURL(chrome::kChromeUIPerformanceSettingsURL));
+ Browser* const browser = chrome::FindLastActive();
+ ASSERT_NE(browser, nullptr);
+
+ RunTestSequence(
+ InContext(browser->window()->GetElementContext(),
+ InstrumentTab(kPerformanceSettingsPage)),
+ WaitForElementToRender(kPerformanceSettingsPage,
+ kBatterySaverFeedbackButton),
+ InstrumentNextTab(kOsFeedbackDialogElementId, AnyBrowser()),
+ ClickElement(kPerformanceSettingsPage, kBatterySaverFeedbackButton),
+ WaitForShow(kOsFeedbackDialogElementId));
+}
+#endif // BUILDFLAG(GOOGLE_CHROME_BRANDING)
#endif // BUILDFLAG(IS_CHROMEOS_ASH)
+
+class TabDiscardExceptionsSettingsInteractiveTest
+ : public MemorySaverInteractiveTestMixin<
+ WebUiInteractiveTestMixin<InteractiveBrowserTest>> {
+ public:
+ void SetUp() override {
+ scoped_feature_list_.InitAndEnableFeature(
+ performance_manager::features::kDiscardExceptionsImprovements);
+
+ MemorySaverInteractiveTestMixin::SetUp();
+ }
+
+ auto WaitForElementToHide(const ui::ElementIdentifier& contents_id,
+ const DeepQuery& element) {
+ StateChange element_renders;
+ element_renders.event = kElementHides;
+ element_renders.where = element;
+ element_renders.test_function =
+ "(el) => { let rect = el.getBoundingClientRect(); return rect.width "
+ "=== 0 && rect.height === 0; }";
+
+ return WaitForStateChange(contents_id, element_renders);
+ }
+
+ auto OpenAddExceptionDialog(const ui::ElementIdentifier& contents_id) {
+ const WebContentsInteractionTestUtil::DeepQuery add_exceptions_button = {
+ "settings-ui",
+ "settings-main",
+ "settings-basic-page",
+ "settings-performance-page",
+ "tab-discard-exception-list",
+ "cr-button#addButton"};
+
+ const WebContentsInteractionTestUtil::DeepQuery picker_dialog = {
+ "settings-ui",
+ "settings-main",
+ "settings-basic-page",
+ "settings-performance-page",
+ "tab-discard-exception-list",
+ "tab-discard-exception-tabbed-add-dialog"};
+
+ const WebContentsInteractionTestUtil::DeepQuery tab_picker_tab = {
+ "settings-ui",
+ "settings-main",
+ "settings-basic-page",
+ "settings-performance-page",
+ "tab-discard-exception-list",
+ "tab-discard-exception-tabbed-add-dialog",
+ "cr-tabs",
+ "div.tab"};
+
+ StateChange exceptions_dialog;
+ exceptions_dialog.event = kExceptionDialogShows;
+ exceptions_dialog.where = picker_dialog;
+ return Steps(ClickElement(contents_id, add_exceptions_button),
+ WaitForStateChange(contents_id, exceptions_dialog),
+ ClickElement(contents_id, tab_picker_tab));
+ }
+
+ auto WaitForDisabledStateChange(const ui::ElementIdentifier& contents_id,
+ const DeepQuery element,
+ bool is_disabled) {
+ StateChange toggle_selection_change;
+ toggle_selection_change.event = kButtonWasClicked;
+ toggle_selection_change.where = element;
+ toggle_selection_change.type = StateChange::Type::kExistsAndConditionTrue;
+ toggle_selection_change.test_function = base::StrCat(
+ {"(el) => el.disabled === ", is_disabled ? "true" : "false"});
+ return WaitForStateChange(contents_id, toggle_selection_change);
+ }
+
+ private:
+ base::test::ScopedFeatureList scoped_feature_list_;
+};
+
+IN_PROC_BROWSER_TEST_F(TabDiscardExceptionsSettingsInteractiveTest,
+ AddSiteToExceptionList) {
+ const WebContentsInteractionTestUtil::DeepQuery exception_entry = {
+ "settings-ui",
+ "settings-main",
+ "settings-basic-page",
+ "settings-performance-page",
+ "tab-discard-exception-list",
+ "tab-discard-exception-entry"};
+
+ RunTestSequence(
+ InstrumentTab(kPerformanceSettingsPage),
+ NavigateWebContents(kPerformanceSettingsPage,
+ GURL(chrome::kChromeUIPerformanceSettingsURL)),
+ WaitForWebContentsReady(kPerformanceSettingsPage,
+ GURL(chrome::kChromeUIPerformanceSettingsURL)),
+ AddInstrumentedTab(kSecondTabContent, GetURL("example.com")),
+ SelectTab(kTabStripElementId, 0), WaitForShow(kPerformanceSettingsPage),
+ OpenAddExceptionDialog(kPerformanceSettingsPage),
+ WaitForDisabledStateChange(kPerformanceSettingsPage,
+ kExceptionDialogAddButton, true),
+ ClickElement(kPerformanceSettingsPage, kExceptionDialogEntry),
+ WaitForDisabledStateChange(kPerformanceSettingsPage,
+ kExceptionDialogAddButton, false),
+ ClickElement(kPerformanceSettingsPage, kExceptionDialogAddButton),
+ WaitForElementToRender(kPerformanceSettingsPage, exception_entry));
+}
+
+// The high efficiency tab picker should live update when the user open or
+// closes a tab that can be added to the exceptions list
+IN_PROC_BROWSER_TEST_F(TabDiscardExceptionsSettingsInteractiveTest,
+ UpdatesEntryListLive) {
+ RunTestSequence(
+ InstrumentTab(kPerformanceSettingsPage),
+ NavigateWebContents(kPerformanceSettingsPage,
+ GURL(chrome::kChromeUIPerformanceSettingsURL)),
+ // Make sure there is no entry in the tab picker since there are no other
+ // tabs open
+ OpenAddExceptionDialog(kPerformanceSettingsPage),
+ EnsureNotPresent(kPerformanceSettingsPage, kExceptionDialogEntry),
+
+ // Dialog should show new entry when opening a new tab
+ AddInstrumentedTab(kSecondTabContent, GetURL("example.com")),
+ SelectTab(kTabStripElementId, 0), WaitForShow(kPerformanceSettingsPage),
+ WaitForElementToRender(kPerformanceSettingsPage, kExceptionDialogEntry),
+
+ // Dialog entry should hide when its corresponding tab is closed
+ Do(base::BindLambdaForTesting([=]() {
+ browser()->tab_strip_model()->CloseWebContentsAt(
+ 1, TabCloseTypes::CLOSE_NONE);
+ })),
+ WaitForElementToHide(kPerformanceSettingsPage, kExceptionDialogEntry));
+}
+
+// The high efficiency exceptions tab picker should only show sites that are
+// non-chrome sites and have not been added to the exceptions list yet
+IN_PROC_BROWSER_TEST_F(TabDiscardExceptionsSettingsInteractiveTest,
+ IgnoreIneligibleTabs) {
+ base::Value::List exclusion_list;
+ exclusion_list.Append("example.com");
+ browser()->profile()->GetPrefs()->SetList(
+ performance_manager::user_tuning::prefs::kTabDiscardingExceptions,
+ std::move(exclusion_list));
+
+ RunTestSequence(
+ InstrumentTab(kPerformanceSettingsPage),
+ NavigateWebContents(kPerformanceSettingsPage,
+ GURL(chrome::kChromeUIPerformanceSettingsURL)),
+ // Open a site that is already on the exclusion list
+ AddInstrumentedTab(kSecondTabContent, GetURL("example.com")),
+ SelectTab(kTabStripElementId, 0), WaitForShow(kPerformanceSettingsPage),
+
+ // Verify entry not shown since this is an excluded site
+ OpenAddExceptionDialog(kPerformanceSettingsPage),
+ EnsureNotPresent(kPerformanceSettingsPage, kExceptionDialogEntry),
+
+ // Verify entry shows when navigated to a non-excluded site
+ NavigateWebContents(kSecondTabContent, GetURL("a.com")),
+ WaitForElementToRender(kPerformanceSettingsPage, kExceptionDialogEntry),
+
+ // Verify that the entry hides since the tab has navigated to a chrome
+ // page
+ NavigateWebContents(kSecondTabContent,
+ GURL(chrome::kChromeUINewTabPageURL)),
+ WaitForElementToHide(kPerformanceSettingsPage, kExceptionDialogEntry));
+}
diff --git a/chromium/chrome/browser/ui/webui/settings/recent_site_settings_helper.cc b/chromium/chrome/browser/ui/webui/settings/recent_site_settings_helper.cc
index eb1d2bcdd39..a4f67eeaabb 100644
--- a/chromium/chrome/browser/ui/webui/settings/recent_site_settings_helper.cc
+++ b/chromium/chrome/browser/ui/webui/settings/recent_site_settings_helper.cc
@@ -4,6 +4,7 @@
#include "chrome/browser/ui/webui/settings/recent_site_settings_helper.h"
+#include "base/containers/cxx20_erase_vector.h"
#include "chrome/browser/content_settings/host_content_settings_map_factory.h"
#include "chrome/browser/permissions/permission_decision_auto_blocker_factory.h"
#include "chrome/browser/profiles/profile.h"
@@ -246,13 +247,10 @@ std::vector<RecentSitePermissions> GetRecentSitePermissions(
all_site_permissions.end());
for (auto& site_permissions : all_site_permissions) {
- site_permissions.settings.erase(
- std::remove_if(site_permissions.settings.begin(),
- site_permissions.settings.end(),
- [min_timestamp](const TimestampedSetting& x) {
- return x.timestamp < min_timestamp;
- }),
- site_permissions.settings.end());
+ base::EraseIf(site_permissions.settings,
+ [min_timestamp](const TimestampedSetting& x) {
+ return x.timestamp < min_timestamp;
+ });
}
return all_site_permissions;
}
diff --git a/chromium/chrome/browser/ui/webui/settings/reset_settings_handler.cc b/chromium/chrome/browser/ui/webui/settings/reset_settings_handler.cc
index 66ba22b5875..6fb74d2f857 100644
--- a/chromium/chrome/browser/ui/webui/settings/reset_settings_handler.cc
+++ b/chromium/chrome/browser/ui/webui/settings/reset_settings_handler.cc
@@ -33,7 +33,6 @@
#include "ui/base/l10n/l10n_util.h"
#if BUILDFLAG(IS_CHROMEOS_ASH)
-#include "chrome/browser/ash/reset/metrics.h"
#include "chrome/common/pref_names.h"
#endif // BUILDFLAG(IS_CHROMEOS_ASH)
@@ -117,12 +116,6 @@ void ResetSettingsHandler::RegisterMessages() {
base::BindRepeating(
&ResetSettingsHandler::HandleGetTriggeredResetToolName,
base::Unretained(this)));
-#if BUILDFLAG(IS_CHROMEOS_ASH)
- web_ui()->RegisterMessageCallback(
- "onPowerwashDialogShow",
- base::BindRepeating(&ResetSettingsHandler::OnShowPowerwashDialog,
- base::Unretained(this)));
-#endif // BUILDFLAG(IS_CHROMEOS_ASH)
}
void ResetSettingsHandler::HandleResetProfileSettings(
@@ -245,9 +238,6 @@ void ResetSettingsHandler::ResetProfile(
callback_weak_ptr_factory_.GetWeakPtr(), callback_id,
send_settings, request_origin));
base::RecordAction(base::UserMetricsAction("ResetProfile"));
- UMA_HISTOGRAM_ENUMERATION(
- "ProfileReset.ResetRequestOrigin", request_origin,
- reset_report::ChromeResetReport::ResetRequestOrigin_MAX + 1);
}
ProfileResetter* ResetSettingsHandler::GetResetter() {
@@ -288,14 +278,4 @@ void ResetSettingsHandler::HandleGetTriggeredResetToolName(
ResolveJavascriptCallback(callback_id, string_value);
}
-#if BUILDFLAG(IS_CHROMEOS_ASH)
-void ResetSettingsHandler::OnShowPowerwashDialog(
- const base::Value::List& args) {
- UMA_HISTOGRAM_ENUMERATION(
- "Reset.ChromeOS.PowerwashDialogShown",
- ash::reset::DialogViewType::kFromOptions,
- ash::reset::DialogViewType::kCount);
-}
-#endif // BUILDFLAG(IS_CHROMEOS_ASH)
-
} // namespace settings
diff --git a/chromium/chrome/browser/ui/webui/settings/reset_settings_handler.h b/chromium/chrome/browser/ui/webui/settings/reset_settings_handler.h
index 6adb5ab05ff..96a56aa0c5d 100644
--- a/chromium/chrome/browser/ui/webui/settings/reset_settings_handler.h
+++ b/chromium/chrome/browser/ui/webui/settings/reset_settings_handler.h
@@ -83,11 +83,6 @@ class ResetSettingsHandler : public SettingsPageUIHandler {
bool send_feedback,
reset_report::ChromeResetReport::ResetRequestOrigin request_origin);
-#if BUILDFLAG(IS_CHROMEOS_ASH)
- // Will be called when powerwash dialog is shown.
- void OnShowPowerwashDialog(const base::Value::List& args);
-#endif // BUILDFLAG(IS_CHROMEOS_ASH)
-
const raw_ptr<Profile> profile_;
std::unique_ptr<ProfileResetter> resetter_;
diff --git a/chromium/chrome/browser/ui/webui/settings/safety_check_extensions_handler.cc b/chromium/chrome/browser/ui/webui/settings/safety_check_extensions_handler.cc
index 19cc95df50b..6cc27e9b939 100644
--- a/chromium/chrome/browser/ui/webui/settings/safety_check_extensions_handler.cc
+++ b/chromium/chrome/browser/ui/webui/settings/safety_check_extensions_handler.cc
@@ -60,7 +60,7 @@ bool SafetyCheckExtensionsHandler::CheckExtensionForTrigger(
if (warning_acked || !is_extension) {
return false;
}
- absl::optional<extensions::CWSInfoService::CWSInfo> extension_info =
+ std::optional<extensions::CWSInfoService::CWSInfo> extension_info =
cws_info_service_->GetCWSInfo(extension);
if (extension_info.has_value() && extension_info->is_present) {
switch (extension_info->violation_type) {
diff --git a/chromium/chrome/browser/ui/webui/settings/safety_check_extensions_handler_unittest.cc b/chromium/chrome/browser/ui/webui/settings/safety_check_extensions_handler_unittest.cc
index 11df7d2c0eb..298f1f95a5a 100644
--- a/chromium/chrome/browser/ui/webui/settings/safety_check_extensions_handler_unittest.cc
+++ b/chromium/chrome/browser/ui/webui/settings/safety_check_extensions_handler_unittest.cc
@@ -81,11 +81,11 @@ static extensions::CWSInfoService::CWSInfo cws_info_no_data{
class MockCWSInfoService : public extensions::CWSInfoService {
public:
- MOCK_METHOD(absl::optional<bool>,
+ MOCK_METHOD(std::optional<bool>,
IsLiveInCWS,
(const extensions::Extension&),
(const, override));
- MOCK_METHOD(absl::optional<CWSInfoServiceInterface::CWSInfo>,
+ MOCK_METHOD(std::optional<CWSInfoServiceInterface::CWSInfo>,
GetCWSInfo,
(const extensions::Extension&),
(const, override));
diff --git a/chromium/chrome/browser/ui/webui/settings/safety_check_handler.cc b/chromium/chrome/browser/ui/webui/settings/safety_check_handler.cc
index 8ba2a58c4a3..7ba5b95d8bd 100644
--- a/chromium/chrome/browser/ui/webui/settings/safety_check_handler.cc
+++ b/chromium/chrome/browser/ui/webui/settings/safety_check_handler.cc
@@ -102,10 +102,10 @@ bool IsUnmutedCompromisedCredential(
return false;
return base::ranges::any_of(
entry.compromised_info->compromise_types, [](auto type) {
- return type ==
- extensions::api::passwords_private::COMPROMISE_TYPE_LEAKED ||
+ return type == extensions::api::passwords_private::CompromiseType::
+ kLeaked ||
type ==
- extensions::api::passwords_private::COMPROMISE_TYPE_PHISHED;
+ extensions::api::passwords_private::CompromiseType::kPhished;
});
}
@@ -114,7 +114,8 @@ bool IsCredentialWeak(
DCHECK(entry.compromised_info);
return base::ranges::any_of(
entry.compromised_info->compromise_types, [](auto type) {
- return type == extensions::api::passwords_private::COMPROMISE_TYPE_WEAK;
+ return type ==
+ extensions::api::passwords_private::CompromiseType::kWeak;
});
}
@@ -124,7 +125,7 @@ bool IsCredentialReused(
return base::ranges::any_of(
entry.compromised_info->compromise_types, [](auto type) {
return type ==
- extensions::api::passwords_private::COMPROMISE_TYPE_REUSED;
+ extensions::api::passwords_private::CompromiseType::kReused;
});
}
@@ -391,10 +392,6 @@ void SafetyCheckHandler::OnExtensionsCheckResult(
GetStringForExtensions(status, Blocklisted(blocklisted),
reenabled_user, reenabled_admin));
FireWebUIListener(kExtensionsEvent, event);
- if (status != ExtensionsStatus::kChecking) {
- base::UmaHistogramEnumeration("Settings.SafetyCheck.ExtensionsResult",
- status);
- }
extensions_status_ = status;
CompleteParentIfChildrenCompleted();
}
@@ -779,7 +776,7 @@ void SafetyCheckHandler::OnCredentialDone(
passwords_delegate_->GetPasswordCheckStatus();
// Send progress updates only if the check is still running.
if (status.state ==
- extensions::api::passwords_private::PASSWORD_CHECK_STATE_RUNNING &&
+ extensions::api::passwords_private::PasswordCheckState::kRunning &&
status.already_processed && status.remaining_in_queue) {
Done done = Done(*(status.already_processed));
Total total = Total(*(status.remaining_in_queue) + done.value());
@@ -793,7 +790,7 @@ void SafetyCheckHandler::OnInsecureCredentialsChanged() {
passwords_delegate_->GetPasswordCheckStatus();
// Ignore the event, unless the password check is idle with no errors.
if (status.state !=
- extensions::api::passwords_private::PASSWORD_CHECK_STATE_IDLE) {
+ extensions::api::passwords_private::PasswordCheckState::kIdle) {
return;
}
UpdatePasswordsResultOnCheckIdle();
diff --git a/chromium/chrome/browser/ui/webui/settings/safety_check_handler_unittest.cc b/chromium/chrome/browser/ui/webui/settings/safety_check_handler_unittest.cc
index a5974280a64..5a8a5d127f0 100644
--- a/chromium/chrome/browser/ui/webui/settings/safety_check_handler_unittest.cc
+++ b/chromium/chrome/browser/ui/webui/settings/safety_check_handler_unittest.cc
@@ -4,6 +4,7 @@
#include "chrome/browser/ui/webui/settings/safety_check_handler.h"
+#include <optional>
#include <string>
#include <unordered_map>
@@ -36,7 +37,7 @@
#include "components/password_manager/core/browser/leak_detection/bulk_leak_check.h"
#include "components/password_manager/core/browser/leak_detection/bulk_leak_check_service.h"
#include "components/password_manager/core/browser/password_form.h"
-#include "components/password_manager/core/browser/test_password_store.h"
+#include "components/password_manager/core/browser/password_store/test_password_store.h"
#include "components/prefs/pref_service.h"
#include "components/safe_browsing/core/common/safe_browsing_prefs.h"
#include "components/safety_check/test_update_check_helper.h"
@@ -52,7 +53,6 @@
#include "extensions/common/extension_builder.h"
#include "services/network/public/cpp/shared_url_loader_factory.h"
#include "testing/gtest/include/gtest/gtest.h"
-#include "third_party/abseil-cpp/absl/types/optional.h"
#if BUILDFLAG(IS_CHROMEOS_ASH)
#include "ui/chromeos/devicetype_utils.h"
@@ -201,7 +201,7 @@ class TestPasswordsDelegate : public extensions::TestPasswordsPrivateDelegate {
std::vector<extensions::api::passwords_private::PasswordUiEntry> insecure;
for (int i = 0; i < leaked_password_count_; ++i) {
insecure.push_back(CreateInsecureCredential(
- i, extensions::api::passwords_private::COMPROMISE_TYPE_LEAKED));
+ i, extensions::api::passwords_private::CompromiseType::kLeaked));
if (i < muted_leaked_password_count_) {
insecure[i].compromised_info->is_muted = true;
}
@@ -209,17 +209,17 @@ class TestPasswordsDelegate : public extensions::TestPasswordsPrivateDelegate {
for (int i = 0; i < phished_password_count_; ++i) {
insecure.push_back(CreateInsecureCredential(
insecure.size(),
- extensions::api::passwords_private::COMPROMISE_TYPE_PHISHED));
+ extensions::api::passwords_private::CompromiseType::kPhished));
}
for (int i = 0; i < weak_password_count_; ++i) {
insecure.push_back(CreateInsecureCredential(
insecure.size(),
- extensions::api::passwords_private::COMPROMISE_TYPE_WEAK));
+ extensions::api::passwords_private::CompromiseType::kWeak));
}
for (int i = 0; i < reused_password_count_; ++i) {
insecure.push_back(CreateInsecureCredential(
insecure.size(),
- extensions::api::passwords_private::COMPROMISE_TYPE_REUSED));
+ extensions::api::passwords_private::CompromiseType::kReused));
}
return insecure;
}
@@ -253,7 +253,7 @@ class TestPasswordsDelegate : public extensions::TestPasswordsPrivateDelegate {
int total_ = 0;
int test_credential_counter_ = 0;
extensions::api::passwords_private::PasswordCheckState state_ =
- extensions::api::passwords_private::PASSWORD_CHECK_STATE_IDLE;
+ extensions::api::passwords_private::PasswordCheckState::kIdle;
scoped_refptr<password_manager::TestPasswordStore> store_ =
base::MakeRefCounted<password_manager::TestPasswordStore>();
password_manager::FakeAffiliationService affiliation_service_;
@@ -398,7 +398,7 @@ SafetyCheckHandlerTest::GetSafetyCheckStatusChangedWithDataIfExists(
if (!dictionary) {
continue;
}
- absl::optional<int> cur_new_state = dictionary->FindInt("newState");
+ std::optional<int> cur_new_state = dictionary->FindInt("newState");
if (cur_new_state == new_state)
return dictionary;
}
@@ -890,7 +890,7 @@ TEST_F(SafetyCheckHandlerTest, CheckPasswords_StaleSafeThenCompromised) {
test_leak_service_->set_state_and_notify(
password_manager::BulkLeakCheckService::State::kRunning);
test_passwords_delegate_->SetPasswordCheckState(
- extensions::api::passwords_private::PASSWORD_CHECK_STATE_RUNNING);
+ extensions::api::passwords_private::PasswordCheckState::kRunning);
EXPECT_TRUE(GetSafetyCheckStatusChangedWithDataIfExists(
kPasswords,
static_cast<int>(SafetyCheckHandler::PasswordsStatus::kChecking)));
@@ -903,7 +903,7 @@ TEST_F(SafetyCheckHandlerTest, CheckPasswords_StaleSafeThenCompromised) {
test_leak_service_->set_state_and_notify(
password_manager::BulkLeakCheckService::State::kIdle);
test_passwords_delegate_->SetPasswordCheckState(
- extensions::api::passwords_private::PASSWORD_CHECK_STATE_IDLE);
+ extensions::api::passwords_private::PasswordCheckState::kIdle);
const base::Value::Dict* event = GetSafetyCheckStatusChangedWithDataIfExists(
kPasswords, static_cast<int>(SafetyCheckHandler::PasswordsStatus::kSafe));
EXPECT_TRUE(event);
@@ -926,7 +926,7 @@ TEST_F(SafetyCheckHandlerTest, CheckPasswords_SafeStateThenMoreEvents) {
test_leak_service_->set_state_and_notify(
password_manager::BulkLeakCheckService::State::kRunning);
test_passwords_delegate_->SetPasswordCheckState(
- extensions::api::passwords_private::PASSWORD_CHECK_STATE_RUNNING);
+ extensions::api::passwords_private::PasswordCheckState::kRunning);
EXPECT_TRUE(GetSafetyCheckStatusChangedWithDataIfExists(
kPasswords,
static_cast<int>(SafetyCheckHandler::PasswordsStatus::kChecking)));
@@ -942,7 +942,7 @@ TEST_F(SafetyCheckHandlerTest, CheckPasswords_SafeStateThenMoreEvents) {
// The check is completed with another safe state.
test_passwords_delegate_->SetPasswordCheckState(
- extensions::api::passwords_private::PASSWORD_CHECK_STATE_IDLE);
+ extensions::api::passwords_private::PasswordCheckState::kIdle);
test_leak_service_->set_state_and_notify(
password_manager::BulkLeakCheckService::State::kIdle);
// This time the safe state should be reflected.
@@ -1358,7 +1358,7 @@ TEST_F(SafetyCheckHandlerTest, CheckPasswords_Progress) {
auto is_leaked = password_manager::IsLeaked(false);
safety_check_->PerformSafetyCheck();
test_passwords_delegate_->SetPasswordCheckState(
- extensions::api::passwords_private::PASSWORD_CHECK_STATE_RUNNING);
+ extensions::api::passwords_private::PasswordCheckState::kRunning);
test_passwords_delegate_->SetProgress(1, 3);
static_cast<password_manager::BulkLeakCheckService::Observer*>(
safety_check_.get())
@@ -1382,7 +1382,7 @@ TEST_F(SafetyCheckHandlerTest, CheckPasswords_Progress) {
// Final update comes after status change, so no new progress message should
// be present.
test_passwords_delegate_->SetPasswordCheckState(
- extensions::api::passwords_private::PASSWORD_CHECK_STATE_IDLE);
+ extensions::api::passwords_private::PasswordCheckState::kIdle);
test_passwords_delegate_->SetProgress(3, 3);
static_cast<password_manager::BulkLeakCheckService::Observer*>(
safety_check_.get())
@@ -1401,9 +1401,6 @@ TEST_F(SafetyCheckHandlerTest, CheckExtensions_NoExtensions) {
kExtensions,
static_cast<int>(
SafetyCheckHandler::ExtensionsStatus::kNoneBlocklisted)));
- histogram_tester_.ExpectBucketCount(
- "Settings.SafetyCheck.ExtensionsResult",
- SafetyCheckHandler::ExtensionsStatus::kNoneBlocklisted, 1);
}
TEST_F(SafetyCheckHandlerTest, CheckExtensions_NoneBlocklisted) {
@@ -1423,9 +1420,6 @@ TEST_F(SafetyCheckHandlerTest, CheckExtensions_NoneBlocklisted) {
EXPECT_TRUE(event);
VerifyDisplayString(event,
"You're protected from potentially harmful extensions");
- histogram_tester_.ExpectBucketCount(
- "Settings.SafetyCheck.ExtensionsResult",
- SafetyCheckHandler::ExtensionsStatus::kNoneBlocklisted, 1);
}
TEST_F(SafetyCheckHandlerTest, CheckExtensions_BlocklistedAllDisabled) {
@@ -1448,9 +1442,6 @@ TEST_F(SafetyCheckHandlerTest, CheckExtensions_BlocklistedAllDisabled) {
EXPECT_TRUE(event);
VerifyDisplayString(
event, "1 potentially harmful extension is off. You can also remove it.");
- histogram_tester_.ExpectBucketCount(
- "Settings.SafetyCheck.ExtensionsResult",
- SafetyCheckHandler::ExtensionsStatus::kBlocklistedAllDisabled, 1);
}
TEST_F(SafetyCheckHandlerTest, CheckExtensions_BlocklistedReenabledAllByUser) {
@@ -1473,9 +1464,6 @@ TEST_F(SafetyCheckHandlerTest, CheckExtensions_BlocklistedReenabledAllByUser) {
EXPECT_TRUE(event);
VerifyDisplayString(event,
"You turned 1 potentially harmful extension back on");
- histogram_tester_.ExpectBucketCount(
- "Settings.SafetyCheck.ExtensionsResult",
- SafetyCheckHandler::ExtensionsStatus::kBlocklistedReenabledAllByUser, 1);
}
TEST_F(SafetyCheckHandlerTest, CheckExtensions_BlocklistedReenabledAllByAdmin) {
@@ -1498,9 +1486,6 @@ TEST_F(SafetyCheckHandlerTest, CheckExtensions_BlocklistedReenabledAllByAdmin) {
VerifyDisplayString(event,
"Your administrator turned 1 potentially harmful "
"extension back on");
- histogram_tester_.ExpectBucketCount(
- "Settings.SafetyCheck.ExtensionsResult",
- SafetyCheckHandler::ExtensionsStatus::kBlocklistedReenabledAllByAdmin, 1);
}
TEST_F(SafetyCheckHandlerTest, CheckExtensions_BlocklistedReenabledSomeByUser) {
@@ -1539,9 +1524,6 @@ TEST_F(SafetyCheckHandlerTest, CheckExtensions_BlocklistedReenabledSomeByUser) {
"You turned 1 potentially harmful extension back "
"on. Your administrator "
"turned 1 potentially harmful extension back on.");
- histogram_tester_.ExpectBucketCount(
- "Settings.SafetyCheck.ExtensionsResult",
- SafetyCheckHandler::ExtensionsStatus::kBlocklistedReenabledSomeByUser, 1);
}
TEST_F(SafetyCheckHandlerTest, CheckParentRanDisplayString) {
diff --git a/chromium/chrome/browser/ui/webui/settings/safety_hub_handler.cc b/chromium/chrome/browser/ui/webui/settings/safety_hub_handler.cc
index c3cc7b537e6..28bb2773556 100644
--- a/chromium/chrome/browser/ui/webui/settings/safety_hub_handler.cc
+++ b/chromium/chrome/browser/ui/webui/settings/safety_hub_handler.cc
@@ -3,6 +3,7 @@
// found in the LICENSE file.
#include "chrome/browser/ui/webui/settings/safety_hub_handler.h"
+
#include <memory>
#include "base/check.h"
@@ -136,7 +137,7 @@ base::Value::Dict CardDataToValue(int header_id,
// Returns true if the card dict indicates there is something actionable for the
// user.
bool CardHasRecommendations(base::Value::Dict card_data) {
- absl::optional<int> state = card_data.FindInt(safety_hub::kCardStateKey);
+ std::optional<int> state = card_data.FindInt(safety_hub::kCardStateKey);
CHECK(state.has_value());
SafetyHubCardState card_state =
static_cast<SafetyHubCardState>(state.value());
@@ -376,7 +377,15 @@ void SafetyHubHandler::HandleDismissActiveMenuNotification(
void SafetyHubHandler::HandleDismissPasswordMenuNotification(
const base::Value::List& args) {
SafetyHubMenuNotificationServiceFactory::GetForProfile(profile_)
- ->DismissPasswordNotification();
+ ->DismissActiveNotificationOfModule(
+ safety_hub::SafetyHubModuleType::PASSWORDS);
+}
+
+void SafetyHubHandler::HandleDismissExtensionsMenuNotification(
+ const base::Value::List& args) {
+ SafetyHubMenuNotificationServiceFactory::GetForProfile(profile_)
+ ->DismissActiveNotificationOfModule(
+ safety_hub::SafetyHubModuleType::EXTENSIONS);
}
void SafetyHubHandler::HandleBlockNotificationPermissionForOrigins(
@@ -697,6 +706,11 @@ void SafetyHubHandler::RegisterMessages() {
&SafetyHubHandler::HandleDismissPasswordMenuNotification,
base::Unretained(this)));
web_ui()->RegisterMessageCallback(
+ "dismissSafetyHubExtensionsMenuNotification",
+ base::BindRepeating(
+ &SafetyHubHandler::HandleDismissExtensionsMenuNotification,
+ base::Unretained(this)));
+ web_ui()->RegisterMessageCallback(
"blockNotificationPermissionForOrigins",
base::BindRepeating(
&SafetyHubHandler::HandleBlockNotificationPermissionForOrigins,
@@ -762,7 +776,7 @@ void SafetyHubHandler::SendNotificationPermissionReviewList() {
int SafetyHubHandler::GetNumberOfExtensionsThatNeedReview() {
extensions::CWSInfoService* cws_info_service =
extensions::CWSInfoServiceFactory::GetForProfile(profile_);
- absl::optional<std::unique_ptr<SafetyHubService::Result>> sh_result =
+ std::optional<std::unique_ptr<SafetyHubService::Result>> sh_result =
SafetyHubExtensionsResult::GetResult(cws_info_service, profile_, false);
if (!sh_result.has_value()) {
return 0;
diff --git a/chromium/chrome/browser/ui/webui/settings/safety_hub_handler.h b/chromium/chrome/browser/ui/webui/settings/safety_hub_handler.h
index c6bc20b3952..3c1555f49f8 100644
--- a/chromium/chrome/browser/ui/webui/settings/safety_hub_handler.h
+++ b/chromium/chrome/browser/ui/webui/settings/safety_hub_handler.h
@@ -154,6 +154,9 @@ class SafetyHubHandler : public settings::SettingsPageUIHandler {
// Handles dismissing the menu notifications for the password module.
void HandleDismissPasswordMenuNotification(const base::Value::List& args);
+ // Handles dismissing the menu notifications for the extensions module.
+ void HandleDismissExtensionsMenuNotification(const base::Value::List& args);
+
// Returns the data for Safe Browsing card.
void HandleGetSafeBrowsingCardData(const base::Value::List& args);
diff --git a/chromium/chrome/browser/ui/webui/settings/safety_hub_handler_unittest.cc b/chromium/chrome/browser/ui/webui/settings/safety_hub_handler_unittest.cc
index 5452e228226..977a3f5585b 100644
--- a/chromium/chrome/browser/ui/webui/settings/safety_hub_handler_unittest.cc
+++ b/chromium/chrome/browser/ui/webui/settings/safety_hub_handler_unittest.cc
@@ -5,6 +5,7 @@
#include <ctime>
#include <memory>
+#include "base/containers/fixed_flat_set.h"
#include "base/functional/bind.h"
#include "base/memory/scoped_refptr.h"
#include "base/strings/utf_string_conversions.h"
@@ -39,7 +40,7 @@
#include "components/content_settings/core/common/content_settings_pattern.h"
#include "components/content_settings/core/common/content_settings_types.h"
#include "components/content_settings/core/common/features.h"
-#include "components/password_manager/core/browser/test_password_store.h"
+#include "components/password_manager/core/browser/password_store/test_password_store.h"
#include "components/permissions/constants.h"
#include "components/safe_browsing/core/common/safe_browsing_prefs.h"
#include "components/sync_preferences/testing_pref_service_syncable.h"
@@ -275,10 +276,9 @@ class SafetyHubHandlerTest : public testing::Test {
base::Version({CHROME_VERSION_MAJOR, CHROME_VERSION_MINOR,
CHROME_VERSION_BUILD,
CHROME_VERSION_PATCH + 1}),
- absl::nullopt)
+ std::nullopt)
: g_browser_process->GetBuildState()->SetUpdate(
- BuildState::UpdateType::kNone, base::Version(),
- absl::nullopt);
+ BuildState::UpdateType::kNone, base::Version(), std::nullopt);
break;
case SafetyHubHandler::SafetyHubModule::kSafeBrowsing:
isModuleRecommended
@@ -291,6 +291,8 @@ class SafetyHubHandlerTest : public testing::Test {
: safety_hub_test_util::CleanAllMockExtensions(profile());
break;
case SafetyHubHandler::SafetyHubModule::kNotifications:
+ hcsm()->ClearSettingsForOneType(
+ ContentSettingsType::NOTIFICATION_PERMISSION_REVIEW);
isModuleRecommended
? AddNotificationPermissionsForReview()
: handler()->HandleIgnoreOriginsForNotificationPermissionReview(
@@ -693,14 +695,18 @@ TEST_F(SafetyHubHandlerTest, HandleGetSafeBrowsingCardData_DisabledByUser) {
TEST_F(SafetyHubHandlerTest, RevokeAllContentSettingTypes) {
// TODO(crbug.com/1459305): Remove this after adding names for those
// types.
- std::list<ContentSettingsType> no_name_types = {
- ContentSettingsType::DURABLE_STORAGE,
- ContentSettingsType::ACCESSIBILITY_EVENTS,
- ContentSettingsType::NFC,
- ContentSettingsType::FILE_SYSTEM_READ_GUARD,
- ContentSettingsType::CAMERA_PAN_TILT_ZOOM,
- ContentSettingsType::TOP_LEVEL_STORAGE_ACCESS,
- ContentSettingsType::FILE_SYSTEM_ACCESS_EXTENDED_PERMISSION};
+ static constexpr auto kNoNameTypes =
+ base::MakeFixedFlatSet<ContentSettingsType>({
+ // clang-format off
+ ContentSettingsType::DURABLE_STORAGE,
+ ContentSettingsType::ACCESSIBILITY_EVENTS,
+ ContentSettingsType::NFC,
+ ContentSettingsType::FILE_SYSTEM_READ_GUARD,
+ ContentSettingsType::CAMERA_PAN_TILT_ZOOM,
+ ContentSettingsType::TOP_LEVEL_STORAGE_ACCESS,
+ ContentSettingsType::FILE_SYSTEM_ACCESS_EXTENDED_PERMISSION,
+ // clang-format on
+ });
// Add all content settings in the content setting registry to revoked
// permissions list.
@@ -730,13 +736,10 @@ TEST_F(SafetyHubHandlerTest, RevokeAllContentSettingTypes) {
ContentSettingsType::REVOKED_UNUSED_SITE_PERMISSIONS,
base::Value(dict.Clone()));
- // Unless the permission in no_name_types, it should be shown on the UI.
+ // Unless the permission in kNoNameTypes, it should be shown on the UI.
const auto& revoked_permissions =
handler()->PopulateUnusedSitePermissionsData();
- bool is_no_name_type =
- (std::find(no_name_types.begin(), no_name_types.end(), type) !=
- no_name_types.end());
- if (is_no_name_type) {
+ if (base::Contains(kNoNameTypes, type)) {
EXPECT_EQ(revoked_permissions.size(), 0U);
} else {
EXPECT_EQ(revoked_permissions.size(), 1U);
@@ -767,7 +770,7 @@ TEST_F(SafetyHubHandlerTest, VersionCardOutOfDate) {
BuildState::UpdateType::kNormalUpdate,
base::Version({CHROME_VERSION_MAJOR, CHROME_VERSION_MINOR,
CHROME_VERSION_BUILD, CHROME_VERSION_PATCH + 1}),
- absl::nullopt);
+ std::nullopt);
base::Value::List args;
args.Append("getVersionCardData");
@@ -806,6 +809,7 @@ TEST_F(SafetyHubHandlerTest, HandleGetSafetyHubHasRecommendations) {
// has a recommendation or not.
for (int testCase = pow(2, (int)modules.size()) - 1; testCase >= 0;
testCase--) {
+ SCOPED_TRACE("testCase: " + std::bitset<8>(testCase).to_string());
std::set<SafetyHubHandler::SafetyHubModule> recommendedModules;
for (int i = 0; i < (int)modules.size(); i++) {
diff --git a/chromium/chrome/browser/ui/webui/settings/search_engines_handler.cc b/chromium/chrome/browser/ui/webui/settings/search_engines_handler.cc
index bd80b957888..e949b96e9cc 100644
--- a/chromium/chrome/browser/ui/webui/settings/search_engines_handler.cc
+++ b/chromium/chrome/browser/ui/webui/settings/search_engines_handler.cc
@@ -11,11 +11,13 @@
#include "base/functional/bind.h"
#include "base/metrics/field_trial.h"
#include "base/metrics/user_metrics.h"
+#include "base/strings/strcat.h"
#include "base/strings/string_number_conversions.h"
#include "base/strings/utf_string_conversions.h"
#include "base/values.h"
#include "chrome/browser/extensions/extension_util.h"
#include "chrome/browser/profiles/profile.h"
+#include "chrome/browser/search_engine_choice/search_engine_choice_service_factory.h"
#include "chrome/browser/search_engines/template_url_service_factory.h"
#include "chrome/browser/search_engines/ui_thread_search_terms_data.h"
#include "chrome/browser/ui/search_engines/template_url_table_model.h"
@@ -25,11 +27,11 @@
#include "chrome/common/webui_url_constants.h"
#include "chrome/grit/generated_resources.h"
#include "components/prefs/pref_service.h"
+#include "components/search_engines/search_engine_choice/search_engine_choice_service.h"
#include "components/search_engines/search_engine_choice_utils.h"
#include "components/search_engines/search_engines_pref_names.h"
#include "components/search_engines/template_url.h"
#include "components/search_engines/template_url_service.h"
-#include "components/signin/public/base/signin_switches.h"
#include "content/public/browser/web_ui.h"
#include "extensions/browser/extension_registry.h"
#include "extensions/browser/extension_system.h"
@@ -123,7 +125,7 @@ base::Value::Dict SearchEnginesHandler::GetSearchEnginesList() {
// Find the default engine.
const TemplateURL* default_engine =
list_controller_.GetDefaultSearchProvider();
- absl::optional<size_t> default_index =
+ std::optional<size_t> default_index =
list_controller_.table_model()->IndexOfTemplateURL(default_engine);
// Build the first list (default search engines).
@@ -228,14 +230,27 @@ base::Value::Dict SearchEnginesHandler::CreateDictionaryForEngine(
dict.Set("iconURL", icon_url.spec());
const bool is_search_engine_choice_settings_ui =
- base::FeatureList::IsEnabled(switches::kSearchEngineChoiceSettingsUi) &&
search_engines::IsChoiceScreenFlagEnabled(
search_engines::ChoicePromo::kAny);
- if (is_search_engine_choice_settings_ui &&
+
+ // The icons that are used for search engines in the EEA region are bundled
+ // with Chrome. We use the favicon service for countries outside the EEA
+ // region to guarantee having icons for all search engines.
+ search_engines::SearchEngineChoiceService* search_engine_choice_service =
+ search_engines::SearchEngineChoiceServiceFactory::GetForProfile(profile);
+ const bool is_eea_region = search_engines::IsEeaChoiceCountry(
+ search_engine_choice_service->GetCountryId());
+ if (is_search_engine_choice_settings_ui && is_eea_region &&
template_url->prepopulate_id() != 0) {
- const std::u16string icon_path = GetGeneratedIconPath(
- template_url->keyword(), /*parent_directory_path=*/u"images/");
- dict.Set("iconPath", icon_path);
+ std::string_view icon_path =
+ GetSearchEngineGeneratedIconPath(template_url->keyword());
+ if (!icon_path.empty()) {
+ // The search engine icon path are 24px, but displayed at 16px, or 32px on
+ // HiDPI screens. Use the 2x version (48px) for a large enough icon.
+ // Note that this icon path is used in `site-favicon` which does not
+ // support `image-set`.
+ dict.Set("iconPath", base::StrCat({icon_path, "@2x"}));
+ }
}
dict.Set("modelIndex", base::checked_cast<int>(index));
@@ -248,6 +263,7 @@ base::Value::Dict SearchEnginesHandler::CreateDictionaryForEngine(
dict.Set("canBeDeactivated", list_controller_.CanDeactivate(template_url));
dict.Set("shouldConfirmDeletion",
list_controller_.ShouldConfirmDeletion(template_url));
+ dict.Set("isManaged", list_controller_.IsManaged(template_url));
TemplateURL::Type type = template_url->type();
dict.Set("isOmniboxExtension", type == TemplateURL::OMNIBOX_API_EXTENSION);
if (type == TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION ||
@@ -286,24 +302,13 @@ void SearchEnginesHandler::HandleSetDefaultSearchEngine(
return;
}
- list_controller_.MakeDefaultTemplateURL(index);
-
-#if BUILDFLAG(ENABLE_SEARCH_ENGINE_CHOICE)
- Profile& profile = CHECK_DEREF(Profile::FromWebUI(web_ui()));
- TemplateURLService* template_url_service =
- TemplateURLServiceFactory::GetForProfile(&profile);
search_engines::ChoiceMadeLocation choice_made_location =
static_cast<search_engines::ChoiceMadeLocation>(args[1].GetInt());
-
CHECK(choice_made_location ==
search_engines::ChoiceMadeLocation::kSearchSettings ||
choice_made_location ==
search_engines::ChoiceMadeLocation::kSearchEngineSettings);
- // `RecordChoiceMade` should always be called after setting the default
- // search engine.
- search_engines::RecordChoiceMade(profile.GetPrefs(), choice_made_location,
- template_url_service);
-#endif
+ list_controller_.MakeDefaultTemplateURL(index, choice_made_location);
base::RecordAction(base::UserMetricsAction("Options_SearchEngineSetDefault"));
}
diff --git a/chromium/chrome/browser/ui/webui/settings/search_engines_handler_unittest.cc b/chromium/chrome/browser/ui/webui/settings/search_engines_handler_unittest.cc
index 2a074636bc2..51b1122a10b 100644
--- a/chromium/chrome/browser/ui/webui/settings/search_engines_handler_unittest.cc
+++ b/chromium/chrome/browser/ui/webui/settings/search_engines_handler_unittest.cc
@@ -3,8 +3,10 @@
// found in the LICENSE file.
#include "chrome/browser/ui/webui/settings/search_engines_handler.h"
+
#include "base/functional/bind.h"
#include "base/memory/raw_ptr.h"
+#include "base/strings/utf_string_conversions.h"
#include "base/test/metrics/histogram_tester.h"
#include "base/test/scoped_feature_list.h"
#include "base/time/time.h"
@@ -17,22 +19,27 @@
#include "components/search_engines/search_engine_choice_utils.h"
#include "components/search_engines/search_engine_type.h"
#include "components/search_engines/search_engines_pref_names.h"
+#include "components/search_engines/search_engines_switches.h"
#include "components/search_engines/template_url.h"
#include "components/search_engines/template_url_service.h"
#include "components/signin/public/base/signin_switches.h"
+#include "components/version_info/version_info.h"
#include "content/public/test/browser_task_environment.h"
#include "content/public/test/test_web_contents_factory.h"
#include "content/public/test/test_web_ui.h"
#include "testing/gtest/include/gtest/gtest.h"
+#include "ui/events/devices/device_data_manager.h"
namespace settings {
namespace {
TemplateURL* AddSearchEngine(TemplateURLService* template_url_service,
const std::string& name,
+ const std::u16string& keyword,
int prepopulated_id,
- absl::optional<std::string> url) {
+ std::optional<std::string> url) {
TemplateURLData default_search_engine;
default_search_engine.SetShortName(base::UTF8ToUTF16(name));
+ default_search_engine.SetKeyword(keyword);
default_search_engine.prepopulate_id = prepopulated_id;
if (url.has_value()) {
@@ -51,7 +58,9 @@ TemplateURL* AddSearchEngine(TemplateURLService* template_url_service,
class SearchEnginesHandlerTestBase : public testing::Test {
public:
SearchEnginesHandlerTestBase()
- : profile_manager_(TestingBrowserProcess::GetGlobal()) {}
+ : profile_manager_(TestingBrowserProcess::GetGlobal()) {
+ ui::DeviceDataManager::CreateInstance();
+ }
void SetUp() override {
testing::Test::SetUp();
@@ -63,10 +72,11 @@ class SearchEnginesHandlerTestBase : public testing::Test {
base::BindRepeating(&TemplateURLServiceFactory::BuildInstanceFor));
TemplateURLService* template_url_service =
TemplateURLServiceFactory::GetForProfile(profile());
- TemplateURL* default_engine =
- AddSearchEngine(template_url_service, "foo.com", /*prepopulated_id=*/0,
- /*url=*/absl::nullopt);
+ TemplateURL* default_engine = AddSearchEngine(
+ template_url_service, "foo.com", u"foo_com", /*prepopulated_id=*/0,
+ /*url=*/std::nullopt);
AddSearchEngine(template_url_service, "bing",
+ TemplateURLPrepopulateData::bing.keyword,
TemplateURLPrepopulateData::bing.id,
TemplateURLPrepopulateData::bing.search_url);
@@ -103,7 +113,11 @@ class SearchEnginesHandlerParametrizedTest
public:
SearchEnginesHandlerParametrizedTest() {
if (WithSearchEnginesChoiceEnabled()) {
- feature_list()->InitAndEnableFeature(switches::kSearchEngineChoice);
+ feature_list()->InitAndEnableFeature(
+ switches::kSearchEngineChoiceTrigger);
+ } else {
+ feature_list()->InitAndDisableFeature(
+ switches::kSearchEngineChoiceTrigger);
}
}
@@ -111,13 +125,13 @@ class SearchEnginesHandlerParametrizedTest
SearchEnginesHandlerTestBase::SetUp();
if (WithSearchEnginesChoiceEnabled()) {
- PrefService* pref_service = profile()->GetPrefs();
// The search engine choice feature is only enabled for countries in the
// EEA region.
const int kBelgiumCountryId =
country_codes::CountryCharsToCountryID('B', 'E');
- pref_service->SetInteger(country_codes::kCountryIDAtInstall,
- kBelgiumCountryId);
+ base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
+ switches::kSearchEngineChoiceCountry,
+ country_codes::CountryIDToCountryString(kBelgiumCountryId));
}
}
@@ -137,9 +151,9 @@ TEST_P(SearchEnginesHandlerParametrizedTest,
EXPECT_EQ(0U, web_ui()->call_data().size());
TemplateURLService* template_url_service =
TemplateURLServiceFactory::GetForProfile(profile());
- TemplateURL* template_url =
- AddSearchEngine(template_url_service, "bar.com", /*prepopulated_id=*/0,
- /*url=*/absl::nullopt);
+ TemplateURL* template_url = AddSearchEngine(template_url_service, "bar.com",
+ u"bar_com", /*prepopulated_id=*/0,
+ /*url=*/std::nullopt);
EXPECT_EQ(1U, web_ui()->call_data().size());
const content::TestWebUI::CallData& call_data = *web_ui()->call_data().back();
@@ -185,19 +199,19 @@ class SearchEnginesHandlerTestWithSearchEngineChoiceEnabled
: public SearchEnginesHandlerTestBase {
public:
SearchEnginesHandlerTestWithSearchEngineChoiceEnabled() {
- feature_list()->InitAndEnableFeature(switches::kSearchEngineChoice);
+ feature_list()->InitAndEnableFeature(switches::kSearchEngineChoiceTrigger);
}
void SetUp() override {
SearchEnginesHandlerTestBase::SetUp();
- PrefService* pref_service = profile()->GetPrefs();
// The search engine choice feature is only enabled for countries in the
// EEA region.
const int kBelgiumCountryId =
country_codes::CountryCharsToCountryID('B', 'E');
- pref_service->SetInteger(country_codes::kCountryIDAtInstall,
- kBelgiumCountryId);
+ base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
+ switches::kSearchEngineChoiceCountry,
+ country_codes::CountryIDToCountryString(kBelgiumCountryId));
}
};
@@ -208,11 +222,15 @@ TEST_F(SearchEnginesHandlerTestWithSearchEngineChoiceEnabled,
// region.
const int kBelgiumCountryId =
country_codes::CountryCharsToCountryID('B', 'E');
- pref_service->SetInteger(country_codes::kCountryIDAtInstall,
- kBelgiumCountryId);
+ base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
+ switches::kSearchEngineChoiceCountry,
+ country_codes::CountryIDToCountryString(kBelgiumCountryId));
EXPECT_FALSE(pref_service->HasPrefPath(
prefs::kDefaultSearchProviderChoiceScreenCompletionTimestamp));
+ EXPECT_FALSE(pref_service->HasPrefPath(
+ prefs::kDefaultSearchProviderChoiceScreenCompletionVersion));
+
base::Value::List args;
// Search engine model id.
args.Append(1);
@@ -224,19 +242,22 @@ TEST_F(SearchEnginesHandlerTestWithSearchEngineChoiceEnabled,
prefs::kDefaultSearchProviderChoiceScreenCompletionTimestamp),
base::Time::Now().ToDeltaSinceWindowsEpoch().InSeconds(),
/*abs_error=*/2);
+ EXPECT_EQ(pref_service->GetString(
+ prefs::kDefaultSearchProviderChoiceScreenCompletionVersion),
+ version_info::GetVersionNumber());
}
TEST_F(SearchEnginesHandlerTestWithSearchEngineChoiceEnabled,
RecordingSearchEngineShouldBeDoneAfterSettingDefault) {
- PrefService* pref_service = profile()->GetPrefs();
TemplateURLService* template_url_service =
TemplateURLServiceFactory::GetForProfile(profile());
// The search engine choice feature is only enabled for countries in the EEA
// region.
const int kBelgiumCountryId =
country_codes::CountryCharsToCountryID('B', 'E');
- pref_service->SetInteger(country_codes::kCountryIDAtInstall,
- kBelgiumCountryId);
+ base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
+ switches::kSearchEngineChoiceCountry,
+ country_codes::CountryIDToCountryString(kBelgiumCountryId));
const TemplateURL* default_search_engine =
template_url_service->GetDefaultSearchProvider();
diff --git a/chromium/chrome/browser/ui/webui/settings/settings_clear_browsing_data_handler.cc b/chromium/chrome/browser/ui/webui/settings/settings_clear_browsing_data_handler.cc
index 2f1cb813139..313b3d282c8 100644
--- a/chromium/chrome/browser/ui/webui/settings/settings_clear_browsing_data_handler.cc
+++ b/chromium/chrome/browser/ui/webui/settings/settings_clear_browsing_data_handler.cc
@@ -170,7 +170,7 @@ void ClearBrowsingDataHandler::HandleClearBrowsingData(
Profile::FromWebUI(web_ui()));
for (const base::Value& type : data_type_list) {
const std::string pref_name = type.GetString();
- absl::optional<BrowsingDataType> data_type =
+ std::optional<BrowsingDataType> data_type =
browsing_data::GetDataTypeFromDeletionPreference(pref_name);
CHECK(data_type);
data_type_vector.push_back(*data_type);
@@ -242,22 +242,6 @@ void ClearBrowsingDataHandler::HandleClearBrowsingData(
browsing_data::RecordDeleteBrowsingDataAction(
browsing_data::DeleteBrowsingDataAction::kClearBrowsingDataDialog);
- // Record the circumstances under which passwords are deleted.
- if (data_types.find(BrowsingDataType::PASSWORDS) != data_types.end()) {
- static const BrowsingDataType other_types[] = {
- BrowsingDataType::HISTORY, BrowsingDataType::DOWNLOADS,
- BrowsingDataType::CACHE, BrowsingDataType::COOKIES,
- BrowsingDataType::FORM_DATA, BrowsingDataType::HOSTED_APPS_DATA,
- };
- int checked_other_types = base::ranges::count_if(
- other_types, [&data_types](BrowsingDataType type) {
- return data_types.find(type) != data_types.end();
- });
- base::UmaHistogramSparse(
- "History.ClearBrowsingData.PasswordsDeletion.AdditionalDatatypesCount",
- checked_other_types);
- }
-
std::unique_ptr<AccountReconcilor::ScopedSyncedDataDeletion>
scoped_data_deletion;
diff --git a/chromium/chrome/browser/ui/webui/settings/settings_default_browser_handler.cc b/chromium/chrome/browser/ui/webui/settings/settings_default_browser_handler.cc
index 680ebe84f03..5d9744f814e 100644
--- a/chromium/chrome/browser/ui/webui/settings/settings_default_browser_handler.cc
+++ b/chromium/chrome/browser/ui/webui/settings/settings_default_browser_handler.cc
@@ -79,7 +79,7 @@ void DefaultBrowserHandler::SetAsDefaultBrowser(const base::Value::List& args) {
default_browser_worker_->StartSetAsDefault(
base::BindOnce(&DefaultBrowserHandler::OnDefaultBrowserWorkerFinished,
- weak_ptr_factory_.GetWeakPtr(), absl::nullopt));
+ weak_ptr_factory_.GetWeakPtr(), std::nullopt));
// If the user attempted to make Chrome the default browser, notify
// them when this changes.
@@ -89,7 +89,7 @@ void DefaultBrowserHandler::SetAsDefaultBrowser(const base::Value::List& args) {
void DefaultBrowserHandler::OnDefaultBrowserSettingChange() {
default_browser_worker_->StartCheckIsDefault(
base::BindOnce(&DefaultBrowserHandler::OnDefaultBrowserWorkerFinished,
- weak_ptr_factory_.GetWeakPtr(), absl::nullopt));
+ weak_ptr_factory_.GetWeakPtr(), std::nullopt));
}
void DefaultBrowserHandler::RecordSetAsDefaultUMA() {
@@ -98,7 +98,7 @@ void DefaultBrowserHandler::RecordSetAsDefaultUMA() {
}
void DefaultBrowserHandler::OnDefaultBrowserWorkerFinished(
- const absl::optional<std::string>& js_callback_id,
+ const std::optional<std::string>& js_callback_id,
shell_integration::DefaultWebClientState state) {
if (state == shell_integration::IS_DEFAULT) {
// Notify the user in the future if Chrome ceases to be the user's chosen
diff --git a/chromium/chrome/browser/ui/webui/settings/settings_default_browser_handler.h b/chromium/chrome/browser/ui/webui/settings/settings_default_browser_handler.h
index c08a7839538..1bee8cd91d0 100644
--- a/chromium/chrome/browser/ui/webui/settings/settings_default_browser_handler.h
+++ b/chromium/chrome/browser/ui/webui/settings/settings_default_browser_handler.h
@@ -53,7 +53,7 @@ class DefaultBrowserHandler : public SettingsPageUIHandler {
// done.
// |js_callback_id| is specified when the state was requested from WebUI.
void OnDefaultBrowserWorkerFinished(
- const absl::optional<std::string>& js_callback_id,
+ const std::optional<std::string>& js_callback_id,
shell_integration::DefaultWebClientState state);
// Reference to a background worker that handles default browser settings.
diff --git a/chromium/chrome/browser/ui/webui/settings/settings_default_browser_handler_unittest.cc b/chromium/chrome/browser/ui/webui/settings/settings_default_browser_handler_unittest.cc
index c2b5d30d415..bfc824d248b 100644
--- a/chromium/chrome/browser/ui/webui/settings/settings_default_browser_handler_unittest.cc
+++ b/chromium/chrome/browser/ui/webui/settings/settings_default_browser_handler_unittest.cc
@@ -1,11 +1,12 @@
// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include <memory>
-
#include "chrome/browser/ui/webui/settings/settings_default_browser_handler.h"
+#include <memory>
+
#include "base/memory/scoped_refptr.h"
+#include "base/test/run_until.h"
#include "base/test/test_timeouts.h"
#include "base/values.h"
#include "chrome/browser/shell_integration.h"
@@ -129,13 +130,8 @@ class DefaultBrowserHandlerTest : public testing::Test {
}
void WaitForSingleCallData() {
- while (test_web_ui()->call_data().empty()) {
- base::RunLoop run_loop;
- base::SingleThreadTaskRunner::GetCurrentDefault()->PostDelayedTask(
- FROM_HERE, run_loop.QuitClosure(), TestTimeouts::tiny_timeout());
- run_loop.Run();
- }
-
+ EXPECT_TRUE(base::test::RunUntil(
+ [&]() { return !test_web_ui()->call_data().empty(); }));
ASSERT_EQ(test_web_ui()->call_data().size(), 1u);
}
diff --git a/chromium/chrome/browser/ui/webui/settings/settings_interactive_uitest.cc b/chromium/chrome/browser/ui/webui/settings/settings_interactive_uitest.cc
index 9058e6fa08b..53902e5b297 100644
--- a/chromium/chrome/browser/ui/webui/settings/settings_interactive_uitest.cc
+++ b/chromium/chrome/browser/ui/webui/settings/settings_interactive_uitest.cc
@@ -2,6 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+#include "base/feature_list.h"
#include "base/test/bind.h"
#include "chrome/browser/themes/theme_service.h"
#include "chrome/browser/themes/theme_service_factory.h"
@@ -12,6 +13,7 @@
#include "chrome/test/base/in_process_browser_test.h"
#include "chrome/test/interaction/tracked_element_webcontents.h"
#include "chrome/test/interaction/webcontents_interaction_test_util.h"
+#include "components/content_settings/core/common/features.h"
#include "components/privacy_sandbox/privacy_sandbox_features.h"
#include "content/public/test/browser_test.h"
#include "net/dns/mock_host_resolver.h"
@@ -99,27 +101,16 @@ class SettingsInteractiveUiTest : public InProcessBrowserTest {
}
};
-class CookieSettingsInteractiveUiTest
- : public SettingsInteractiveUiTest,
- public testing::WithParamInterface<bool> {
- public:
- CookieSettingsInteractiveUiTest() {
- feature_list_.InitWithFeatureState(
- privacy_sandbox::kPrivacySandboxSettings4, GetParam());
- }
-
- private:
- base::test::ScopedFeatureList feature_list_;
-};
-
-IN_PROC_BROWSER_TEST_P(CookieSettingsInteractiveUiTest,
+IN_PROC_BROWSER_TEST_F(SettingsInteractiveUiTest,
CheckQuestionMarkIsPresentUnderCookiesAndSiteData) {
UNCALLED_MOCK_CALLBACK(ui::InteractionSequence::CompletedCallback, completed);
UNCALLED_MOCK_CALLBACK(ui::InteractionSequence::AbortedCallback, aborted);
+ bool is_3pcd = base::FeatureList::IsEnabled(
+ content_settings::features::kTrackingProtection3pcd);
const std::string cookie_row_selector =
- GetParam() ? "cr-link-row#thirdPartyCookiesLinkRow"
- : "cr-link-row#cookiesLinkRow";
+ is_3pcd ? "cr-link-row#trackingProtectionLinkRow"
+ : "cr-link-row#thirdPartyCookiesLinkRow";
const GURL cookie_setting_url("chrome://settings/privacy");
const WebContentsInteractionTestUtil::DeepQuery cookies_link_row = {
"settings-ui", "settings-main", "settings-basic-page",
@@ -161,8 +152,14 @@ IN_PROC_BROWSER_TEST_P(CookieSettingsInteractiveUiTest,
auto* util =
element->AsA<TrackedElementWebContents>()->owner();
auto* const contents = util->web_contents();
- EXPECT_EQ(chrome::kCookiesSettingsHelpCenterURL,
- contents->GetURL());
+ if (is_3pcd) {
+ EXPECT_EQ(
+ contents->GetURL(),
+ GURL(chrome::kTrackingProtectionHelpCenterURL));
+ } else {
+ EXPECT_EQ(contents->GetURL(),
+ chrome::kCookiesSettingsHelpCenterURL);
+ }
}))
.Build())
.Build();
@@ -170,8 +167,6 @@ IN_PROC_BROWSER_TEST_P(CookieSettingsInteractiveUiTest,
EXPECT_CALL_IN_SCOPE(completed, Run, sequence->RunSynchronouslyForTesting());
}
-INSTANTIATE_TEST_SUITE_P(All, CookieSettingsInteractiveUiTest, testing::Bool());
-
class ThemeSettingsInteractiveUiTest : public SettingsInteractiveUiTest {
public:
void SetUpCommandLine(base::CommandLine* command_line) override {
diff --git a/chromium/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc b/chromium/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc
index bf0b01306fe..5fd8f3e5b73 100644
--- a/chromium/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc
+++ b/chromium/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc
@@ -85,6 +85,7 @@
#include "components/safe_browsing/core/common/safe_browsing_prefs.h"
#include "components/services/screen_ai/buildflags/buildflags.h"
#include "components/signin/public/base/signin_buildflags.h"
+#include "components/signin/public/base/signin_switches.h"
#include "components/strings/grit/components_branded_strings.h"
#include "components/strings/grit/components_strings.h"
#include "components/subresource_filter/core/browser/subresource_filter_features.h"
@@ -183,64 +184,64 @@ std::string BuildOSSettingsUrl(const std::string& sub_page) {
void AddCommonStrings(content::WebUIDataSource* html_source, Profile* profile) {
static constexpr webui::LocalizedString kLocalizedStrings[] = {
- {"add", IDS_ADD},
- {"advancedPageTitle", IDS_SETTINGS_ADVANCED},
- {"back", IDS_ACCNAME_BACK},
- {"basicPageTitle", IDS_SETTINGS_BASIC},
- {"cancel", IDS_CANCEL},
- {"clear", IDS_SETTINGS_CLEAR},
- {"close", IDS_CLOSE},
- {"confirm", IDS_CONFIRM},
- {"continue", IDS_SETTINGS_CONTINUE},
- {"controlledByExtension", IDS_SETTINGS_CONTROLLED_BY_EXTENSION},
- {"custom", IDS_SETTINGS_CUSTOM},
- {"delete", IDS_SETTINGS_DELETE},
- {"disable", IDS_DISABLE},
- {"done", IDS_DONE},
- {"edit", IDS_SETTINGS_EDIT},
- {"extensionsLinkTooltip", IDS_SETTINGS_MENU_EXTENSIONS_LINK_TOOLTIP},
- {"fonts", IDS_SETTINGS_FONTS},
- {"learnMore", IDS_LEARN_MORE},
- {"manage", IDS_SETTINGS_MANAGE},
- {"menu", IDS_MENU},
- {"menuButtonLabel", IDS_SETTINGS_MENU_BUTTON_LABEL},
- {"moreActions", IDS_SETTINGS_MORE_ACTIONS},
- {"noThanks", IDS_NO_THANKS},
- {"ok", IDS_OK},
- {"opensInNewTab", IDS_SETTINGS_OPENS_IN_NEW_TAB},
- {"sendFeedbackButton", IDS_SETTINGS_SEND_FEEDBACK_ROLE_DESCRIPTION},
+ {"add", IDS_ADD},
+ {"advancedPageTitle", IDS_SETTINGS_ADVANCED},
+ {"back", IDS_ACCNAME_BACK},
+ {"basicPageTitle", IDS_SETTINGS_BASIC},
+ {"cancel", IDS_CANCEL},
+ {"clear", IDS_SETTINGS_CLEAR},
+ {"close", IDS_CLOSE},
+ {"confirm", IDS_CONFIRM},
+ {"continue", IDS_SETTINGS_CONTINUE},
+ {"controlledByExtension", IDS_SETTINGS_CONTROLLED_BY_EXTENSION},
+ {"custom", IDS_SETTINGS_CUSTOM},
+ {"delete", IDS_SETTINGS_DELETE},
+ {"disable", IDS_DISABLE},
+ {"done", IDS_DONE},
+ {"edit", IDS_SETTINGS_EDIT},
+ {"extensionsLinkTooltip", IDS_SETTINGS_MENU_EXTENSIONS_LINK_TOOLTIP},
+ {"fonts", IDS_SETTINGS_FONTS},
+ {"learnMore", IDS_LEARN_MORE},
+ {"manage", IDS_SETTINGS_MANAGE},
+ {"menu", IDS_MENU},
+ {"menuButtonLabel", IDS_SETTINGS_MENU_BUTTON_LABEL},
+ {"moreActions", IDS_SETTINGS_MORE_ACTIONS},
+ {"noThanks", IDS_NO_THANKS},
+ {"ok", IDS_OK},
+ {"opensInNewTab", IDS_SETTINGS_OPENS_IN_NEW_TAB},
+ {"sendFeedbackButton", IDS_SETTINGS_SEND_FEEDBACK_ROLE_DESCRIPTION},
#if !BUILDFLAG(IS_CHROMEOS_ASH)
- {"relaunchConfirmationDialogTitle", IDS_RELAUNCH_CONFIRMATION_DIALOG_TITLE},
-#endif
- {"remove", IDS_REMOVE},
- {"restart", IDS_SETTINGS_RESTART},
-#if !BUILDFLAG(IS_CHROMEOS_ASH)
- {"restartToApplyChanges", IDS_SETTINGS_RESTART_TO_APPLY_CHANGES},
-#endif
- {"retry", IDS_SETTINGS_RETRY},
- {"save", IDS_SAVE},
- {"searchResultBubbleText", IDS_SEARCH_RESULT_BUBBLE_TEXT},
- {"searchResultsBubbleText", IDS_SEARCH_RESULTS_BUBBLE_TEXT},
- {"sentenceEnd", IDS_SENTENCE_END},
- {"settings", IDS_SETTINGS_SETTINGS},
- {"settingsAltPageTitle", IDS_SETTINGS_ALT_PAGE_TITLE},
- {"subpageArrowRoleDescription", IDS_SETTINGS_SUBPAGE_BUTTON},
- {"subpageBackButtonAriaLabel", IDS_SETTINGS_SUBPAGE_BACK_BUTTON_ARIA_LABEL},
- {"subpageBackButtonAriaRoleDescription",
- IDS_SETTINGS_SUBPAGE_BACK_BUTTON_ARIA_ROLE_DESCRIPTION},
- {"subpageLearnMoreAriaLabel", IDS_SETTINGS_SUBPAGE_LEARN_MORE_ARIA_LABEL},
- {"notValid", IDS_SETTINGS_NOT_VALID},
- {"notValidWebAddress", IDS_SETTINGS_NOT_VALID_WEB_ADDRESS},
- {"notValidWebAddressForContentType",
- IDS_SETTINGS_NOT_VALID_WEB_ADDRESS_FOR_CONTENT_TYPE},
-
- // Common font related strings shown in a11y and appearance sections.
- {"quickBrownFox", IDS_SETTINGS_QUICK_BROWN_FOX},
- {"verySmall", IDS_SETTINGS_VERY_SMALL_FONT},
- {"small", IDS_SETTINGS_SMALL_FONT},
- {"medium", IDS_SETTINGS_MEDIUM_FONT},
- {"large", IDS_SETTINGS_LARGE_FONT},
- {"veryLarge", IDS_SETTINGS_VERY_LARGE_FONT},
+ {"relaunchConfirmationDialogTitle",
+ IDS_RELAUNCH_CONFIRMATION_DIALOG_TITLE},
+#endif
+ {"remove", IDS_REMOVE},
+ {"restart", IDS_SETTINGS_RESTART},
+ {"restartToApplyChanges", IDS_SETTINGS_RESTART_TO_APPLY_CHANGES},
+ {"retry", IDS_SETTINGS_RETRY},
+ {"save", IDS_SAVE},
+ {"searchResultBubbleText", IDS_SEARCH_RESULT_BUBBLE_TEXT},
+ {"searchResultsBubbleText", IDS_SEARCH_RESULTS_BUBBLE_TEXT},
+ {"sentenceEnd", IDS_SENTENCE_END},
+ {"settings", IDS_SETTINGS_SETTINGS},
+ {"settingsAltPageTitle", IDS_SETTINGS_ALT_PAGE_TITLE},
+ {"subpageArrowRoleDescription", IDS_SETTINGS_SUBPAGE_BUTTON},
+ {"subpageBackButtonAriaLabel",
+ IDS_SETTINGS_SUBPAGE_BACK_BUTTON_ARIA_LABEL},
+ {"subpageBackButtonAriaRoleDescription",
+ IDS_SETTINGS_SUBPAGE_BACK_BUTTON_ARIA_ROLE_DESCRIPTION},
+ {"subpageLearnMoreAriaLabel", IDS_SETTINGS_SUBPAGE_LEARN_MORE_ARIA_LABEL},
+ {"notValid", IDS_SETTINGS_NOT_VALID},
+ {"notValidWebAddress", IDS_SETTINGS_NOT_VALID_WEB_ADDRESS},
+ {"notValidWebAddressForContentType",
+ IDS_SETTINGS_NOT_VALID_WEB_ADDRESS_FOR_CONTENT_TYPE},
+
+ // Common font related strings shown in a11y and appearance sections.
+ {"quickBrownFox", IDS_SETTINGS_QUICK_BROWN_FOX},
+ {"verySmall", IDS_SETTINGS_VERY_SMALL_FONT},
+ {"small", IDS_SETTINGS_SMALL_FONT},
+ {"medium", IDS_SETTINGS_MEDIUM_FONT},
+ {"large", IDS_SETTINGS_LARGE_FONT},
+ {"veryLarge", IDS_SETTINGS_VERY_LARGE_FONT},
};
html_source->AddLocalizedStrings(kLocalizedStrings);
@@ -254,7 +255,7 @@ void AddCommonStrings(content::WebUIDataSource* html_source, Profile* profile) {
crosapi::mojom::SessionType::kPublicSession ||
profile->IsGuestSession());
#else
- profile->IsGuestSession());
+ profile->IsGuestSession());
#endif
html_source->AddBoolean("isChildAccount", profile->IsChild());
@@ -274,33 +275,38 @@ void AddCommonStrings(content::WebUIDataSource* html_source, Profile* profile) {
void AddA11yStrings(content::WebUIDataSource* html_source) {
static constexpr webui::LocalizedString kLocalizedStrings[] = {
- {"moreFeaturesLink", IDS_SETTINGS_MORE_FEATURES_LINK},
- {"a11yPageTitle", IDS_SETTINGS_ACCESSIBILITY},
- {"a11yWebStore", IDS_SETTINGS_ACCESSIBILITY_WEB_STORE},
- {"moreFeaturesLinkDescription",
- IDS_SETTINGS_MORE_FEATURES_LINK_DESCRIPTION},
- {"accessibleImageLabelsTitle", IDS_SETTINGS_ACCESSIBLE_IMAGE_LABELS_TITLE},
- {"accessibleImageLabelsSubtitle",
- IDS_SETTINGS_ACCESSIBLE_IMAGE_LABELS_SUBTITLE},
- {"pdfOcrTitle", IDS_SETTINGS_PDF_OCR_TITLE},
- {"pdfOcrSubtitle", IDS_SETTINGS_PDF_OCR_SUBTITLE},
- {"settingsSliderRoleDescription",
- IDS_SETTINGS_SLIDER_MIN_MAX_ARIA_ROLE_DESCRIPTION},
- {"caretBrowsingTitle", IDS_SETTINGS_ENABLE_CARET_BROWSING_TITLE},
- {"caretBrowsingSubtitle", IDS_SETTINGS_ENABLE_CARET_BROWSING_SUBTITLE},
+ {"moreFeaturesLink", IDS_SETTINGS_MORE_FEATURES_LINK},
+ {"a11yPageTitle", IDS_SETTINGS_ACCESSIBILITY},
+ {"a11yWebStore", IDS_SETTINGS_ACCESSIBILITY_WEB_STORE},
+ {"moreFeaturesLinkDescription",
+ IDS_SETTINGS_MORE_FEATURES_LINK_DESCRIPTION},
+ {"accessibleImageLabelsTitle",
+ IDS_SETTINGS_ACCESSIBLE_IMAGE_LABELS_TITLE},
+ {"accessibleImageLabelsSubtitle",
+ IDS_SETTINGS_ACCESSIBLE_IMAGE_LABELS_SUBTITLE},
+ {"settingsSliderRoleDescription",
+ IDS_SETTINGS_SLIDER_MIN_MAX_ARIA_ROLE_DESCRIPTION},
+ {"caretBrowsingTitle", IDS_SETTINGS_ENABLE_CARET_BROWSING_TITLE},
+ {"caretBrowsingSubtitle", IDS_SETTINGS_ENABLE_CARET_BROWSING_SUBTITLE},
#if BUILDFLAG(IS_CHROMEOS)
- {"manageAccessibilityFeatures",
- IDS_SETTINGS_ACCESSIBILITY_MANAGE_ACCESSIBILITY_FEATURES},
+ {"manageAccessibilityFeatures",
+ IDS_SETTINGS_ACCESSIBILITY_MANAGE_ACCESSIBILITY_FEATURES},
#else // !BUILDFLAG(IS_CHROMEOS)
- {"focusHighlightLabel",
- IDS_SETTINGS_ACCESSIBILITY_FOCUS_HIGHLIGHT_DESCRIPTION},
+ {"focusHighlightLabel",
+ IDS_SETTINGS_ACCESSIBILITY_FOCUS_HIGHLIGHT_DESCRIPTION},
#endif
#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC)
- {"overscrollHistoryNavigationTitle",
- IDS_SETTINGS_OVERSCROLL_HISTORY_NAVIGATION_TITLE},
- {"overscrollHistoryNavigationSubtitle",
- IDS_SETTINGS_OVERSCROLL_HISTORY_NAVIGATION_SUBTITLE},
-#endif
+ {"overscrollHistoryNavigationTitle",
+ IDS_SETTINGS_OVERSCROLL_HISTORY_NAVIGATION_TITLE},
+ {"overscrollHistoryNavigationSubtitle",
+ IDS_SETTINGS_OVERSCROLL_HISTORY_NAVIGATION_SUBTITLE},
+ {"pdfOcrDownloadCompleteLabel", IDS_SETTINGS_PDF_OCR_DOWNLOAD_COMPLETE},
+ {"pdfOcrDownloadErrorLabel", IDS_SETTINGS_PDF_OCR_DOWNLOAD_ERROR},
+ {"pdfOcrDownloadProgressLabel", IDS_SETTINGS_PDF_OCR_DOWNLOAD_PROGRESS},
+ {"pdfOcrDownloadingLabel", IDS_SETTINGS_PDF_OCR_DOWNLOADING},
+ {"pdfOcrTitle", IDS_SETTINGS_PDF_OCR_TITLE},
+ {"pdfOcrSubtitle", IDS_SETTINGS_PDF_OCR_SUBTITLE},
+#endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC)
};
html_source->AddLocalizedStrings(kLocalizedStrings);
@@ -327,25 +333,25 @@ void AddA11yStrings(content::WebUIDataSource* html_source) {
void AddAboutStrings(content::WebUIDataSource* html_source, Profile* profile) {
// Top level About Page strings.
static constexpr webui::LocalizedString kLocalizedStrings[] = {
- {"aboutProductLogoAlt", IDS_SHORT_PRODUCT_LOGO_ALT_TEXT},
+ {"aboutProductLogoAlt", IDS_SHORT_PRODUCT_LOGO_ALT_TEXT},
#if BUILDFLAG(GOOGLE_CHROME_BRANDING)
- {"aboutReportAnIssue", IDS_SETTINGS_ABOUT_PAGE_REPORT_AN_ISSUE},
- {"aboutPrivacyPolicy", IDS_SETTINGS_ABOUT_PAGE_PRIVACY_POLICY},
-#endif
- {"aboutRelaunch", IDS_SETTINGS_ABOUT_PAGE_RELAUNCH},
- {"aboutUpgradeCheckStarted", IDS_SETTINGS_ABOUT_UPGRADE_CHECK_STARTED},
- {"aboutUpgradeRelaunch", IDS_SETTINGS_UPGRADE_SUCCESSFUL_RELAUNCH},
- {"aboutUpgradeUpdating", IDS_SETTINGS_UPGRADE_UPDATING},
- {"aboutUpgradeUpdatingPercent", IDS_SETTINGS_UPGRADE_UPDATING_PERCENT},
- {"aboutGetHelpUsingChrome", IDS_SETTINGS_GET_HELP_USING_CHROME},
- {"aboutPageTitle", IDS_SETTINGS_ABOUT_PROGRAM},
- {"aboutProductTitle", IDS_PRODUCT_NAME},
- {"aboutLearnMoreUpdatingErrors",
- IDS_SETTINGS_ABOUT_PAGE_LEARN_MORE_UPDATE_ERRORS},
- {"aboutLearnMoreSystemRequirements",
- IDS_SETTINGS_ABOUT_PAGE_LEARN_MORE_SYSTEM_REQUIREMENTS},
+ {"aboutReportAnIssue", IDS_SETTINGS_ABOUT_PAGE_REPORT_AN_ISSUE},
+ {"aboutPrivacyPolicy", IDS_SETTINGS_ABOUT_PAGE_PRIVACY_POLICY},
+#endif
+ {"aboutRelaunch", IDS_SETTINGS_ABOUT_PAGE_RELAUNCH},
+ {"aboutUpgradeCheckStarted", IDS_SETTINGS_ABOUT_UPGRADE_CHECK_STARTED},
+ {"aboutUpgradeRelaunch", IDS_SETTINGS_UPGRADE_SUCCESSFUL_RELAUNCH},
+ {"aboutUpgradeUpdating", IDS_SETTINGS_UPGRADE_UPDATING},
+ {"aboutUpgradeUpdatingPercent", IDS_SETTINGS_UPGRADE_UPDATING_PERCENT},
+ {"aboutGetHelpUsingChrome", IDS_SETTINGS_GET_HELP_USING_CHROME},
+ {"aboutPageTitle", IDS_SETTINGS_ABOUT_PROGRAM},
+ {"aboutProductTitle", IDS_PRODUCT_NAME},
+ {"aboutLearnMoreUpdatingErrors",
+ IDS_SETTINGS_ABOUT_PAGE_LEARN_MORE_UPDATE_ERRORS},
+ {"aboutLearnMoreSystemRequirements",
+ IDS_SETTINGS_ABOUT_PAGE_LEARN_MORE_SYSTEM_REQUIREMENTS},
#if BUILDFLAG(IS_MAC)
- {"aboutLearnMoreUpdating", IDS_SETTINGS_ABOUT_PAGE_LEARN_MORE_UPDATING},
+ {"aboutLearnMoreUpdating", IDS_SETTINGS_ABOUT_PAGE_LEARN_MORE_UPDATING},
#endif
};
html_source->AddLocalizedStrings(kLocalizedStrings);
@@ -403,58 +409,58 @@ void AddAboutStrings(content::WebUIDataSource* html_source, Profile* profile) {
void AddAppearanceStrings(content::WebUIDataSource* html_source,
Profile* profile) {
static constexpr webui::LocalizedString kLocalizedStrings[] = {
- {"appearancePageTitle", IDS_SETTINGS_APPEARANCE},
- {"customWebAddress", IDS_SETTINGS_CUSTOM_WEB_ADDRESS},
- {"enterCustomWebAddress", IDS_SETTINGS_ENTER_CUSTOM_WEB_ADDRESS},
- {"homeButtonDisabled", IDS_SETTINGS_HOME_BUTTON_DISABLED},
- {"themes", IDS_SETTINGS_THEMES},
- {"chromeColors", IDS_SETTINGS_CHROME_COLORS},
- {"colorSchemeMode", IDS_SETTINGS_COLOR_SCHEME_MODE},
- {"lightMode", IDS_NTP_CUSTOMIZE_CHROME_COLOR_SCHEME_MODE_LIGHT_LABEL},
- {"darkMode", IDS_NTP_CUSTOMIZE_CHROME_COLOR_SCHEME_MODE_DARK_LABEL},
- {"systemMode", IDS_NTP_CUSTOMIZE_CHROME_COLOR_SCHEME_MODE_SYSTEM_LABEL},
- {"showHomeButton", IDS_SETTINGS_SHOW_HOME_BUTTON},
- {"showBookmarksBar", IDS_SETTINGS_SHOW_BOOKMARKS_BAR},
- {"showHoverCardImages", IDS_SETTINGS_SHOW_HOVER_CARD_IMAGES},
- {"sidePanel", IDS_SETTINGS_SIDE_PANEL},
- {"homePageNtp", IDS_SETTINGS_HOME_PAGE_NTP},
- {"changeHomePage", IDS_SETTINGS_CHANGE_HOME_PAGE},
- {"themesGalleryUrl", IDS_THEMES_GALLERY_URL},
- {"chooseFromWebStore", IDS_SETTINGS_WEB_STORE},
- {"pageZoom", IDS_SETTINGS_PAGE_ZOOM_LABEL},
- {"fontSize", IDS_SETTINGS_FONT_SIZE_LABEL},
- {"customizeFonts", IDS_SETTINGS_CUSTOMIZE_FONTS},
- {"standardFont", IDS_SETTINGS_STANDARD_FONT_LABEL},
- {"serifFont", IDS_SETTINGS_SERIF_FONT_LABEL},
- {"sansSerifFont", IDS_SETTINGS_SANS_SERIF_FONT_LABEL},
- {"fixedWidthFont", IDS_SETTINGS_FIXED_WIDTH_FONT_LABEL},
- {"mathFont", IDS_SETTINGS_MATH_FONT_LABEL},
- {"minimumFont", IDS_SETTINGS_MINIMUM_FONT_SIZE_LABEL},
- {"tiny", IDS_SETTINGS_TINY_FONT_SIZE},
- {"huge", IDS_SETTINGS_HUGE_FONT_SIZE},
- {"sidePanelAlignLeft", IDS_SETTINGS_SIDE_PANEL_ALIGN_LEFT},
- {"sidePanelAlignRight", IDS_SETTINGS_SIDE_PANEL_ALIGN_RIGHT},
+ {"appearancePageTitle", IDS_SETTINGS_APPEARANCE},
+ {"customWebAddress", IDS_SETTINGS_CUSTOM_WEB_ADDRESS},
+ {"enterCustomWebAddress", IDS_SETTINGS_ENTER_CUSTOM_WEB_ADDRESS},
+ {"homeButtonDisabled", IDS_SETTINGS_HOME_BUTTON_DISABLED},
+ {"themes", IDS_SETTINGS_THEMES},
+ {"chromeColors", IDS_SETTINGS_CHROME_COLORS},
+ {"colorSchemeMode", IDS_SETTINGS_COLOR_SCHEME_MODE},
+ {"lightMode", IDS_NTP_CUSTOMIZE_CHROME_COLOR_SCHEME_MODE_LIGHT_LABEL},
+ {"darkMode", IDS_NTP_CUSTOMIZE_CHROME_COLOR_SCHEME_MODE_DARK_LABEL},
+ {"systemMode", IDS_NTP_CUSTOMIZE_CHROME_COLOR_SCHEME_MODE_SYSTEM_LABEL},
+ {"showHomeButton", IDS_SETTINGS_SHOW_HOME_BUTTON},
+ {"showBookmarksBar", IDS_SETTINGS_SHOW_BOOKMARKS_BAR},
+ {"showHoverCardImages", IDS_SETTINGS_SHOW_HOVER_CARD_IMAGES},
+ {"sidePanel", IDS_SETTINGS_SIDE_PANEL},
+ {"homePageNtp", IDS_SETTINGS_HOME_PAGE_NTP},
+ {"changeHomePage", IDS_SETTINGS_CHANGE_HOME_PAGE},
+ {"themesGalleryUrl", IDS_THEMES_GALLERY_URL},
+ {"chooseFromWebStore", IDS_SETTINGS_WEB_STORE},
+ {"pageZoom", IDS_SETTINGS_PAGE_ZOOM_LABEL},
+ {"fontSize", IDS_SETTINGS_FONT_SIZE_LABEL},
+ {"customizeFonts", IDS_SETTINGS_CUSTOMIZE_FONTS},
+ {"standardFont", IDS_SETTINGS_STANDARD_FONT_LABEL},
+ {"serifFont", IDS_SETTINGS_SERIF_FONT_LABEL},
+ {"sansSerifFont", IDS_SETTINGS_SANS_SERIF_FONT_LABEL},
+ {"fixedWidthFont", IDS_SETTINGS_FIXED_WIDTH_FONT_LABEL},
+ {"mathFont", IDS_SETTINGS_MATH_FONT_LABEL},
+ {"minimumFont", IDS_SETTINGS_MINIMUM_FONT_SIZE_LABEL},
+ {"tiny", IDS_SETTINGS_TINY_FONT_SIZE},
+ {"huge", IDS_SETTINGS_HUGE_FONT_SIZE},
+ {"sidePanelAlignLeft", IDS_SETTINGS_SIDE_PANEL_ALIGN_LEFT},
+ {"sidePanelAlignRight", IDS_SETTINGS_SIDE_PANEL_ALIGN_RIGHT},
#if BUILDFLAG(IS_LINUX)
- {"gtkTheme", IDS_SETTINGS_GTK_THEME},
- {"useGtkTheme", IDS_SETTINGS_USE_GTK_THEME},
- {"qtTheme", IDS_SETTINGS_QT_THEME},
- {"useQtTheme", IDS_SETTINGS_USE_QT_THEME},
- {"classicTheme", IDS_SETTINGS_CLASSIC_THEME},
- {"useClassicTheme", IDS_SETTINGS_USE_CLASSIC_THEME},
+ {"gtkTheme", IDS_SETTINGS_GTK_THEME},
+ {"useGtkTheme", IDS_SETTINGS_USE_GTK_THEME},
+ {"qtTheme", IDS_SETTINGS_QT_THEME},
+ {"useQtTheme", IDS_SETTINGS_USE_QT_THEME},
+ {"classicTheme", IDS_SETTINGS_CLASSIC_THEME},
+ {"useClassicTheme", IDS_SETTINGS_USE_CLASSIC_THEME},
#else
- {"resetToDefaultTheme", IDS_SETTINGS_RESET_TO_DEFAULT_THEME},
+ {"resetToDefaultTheme", IDS_SETTINGS_RESET_TO_DEFAULT_THEME},
#endif
#if BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMEOS_LACROS)
- {"showWindowDecorations", IDS_SHOW_WINDOW_DECORATIONS},
+ {"showWindowDecorations", IDS_SHOW_WINDOW_DECORATIONS},
#endif
#if BUILDFLAG(IS_MAC)
- {"tabsToLinks", IDS_SETTINGS_TABS_TO_LINKS_PREF},
- {"warnBeforeQuitting", IDS_SETTINGS_WARN_BEFORE_QUITTING_PREF},
+ {"tabsToLinks", IDS_SETTINGS_TABS_TO_LINKS_PREF},
+ {"warnBeforeQuitting", IDS_SETTINGS_WARN_BEFORE_QUITTING_PREF},
#endif
- {"readerMode", IDS_SETTINGS_READER_MODE},
- {"readerModeDescription", IDS_SETTINGS_READER_MODE_DESCRIPTION},
- {"themeManagedDialogTitle", IDS_NTP_THEME_MANAGED_DIALOG_TITLE},
- {"themeManagedDialogBody", IDS_NTP_THEME_MANAGED_DIALOG_BODY},
+ {"readerMode", IDS_SETTINGS_READER_MODE},
+ {"readerModeDescription", IDS_SETTINGS_READER_MODE_DESCRIPTION},
+ {"themeManagedDialogTitle", IDS_NTP_THEME_MANAGED_DIALOG_TITLE},
+ {"themeManagedDialogBody", IDS_NTP_THEME_MANAGED_DIALOG_BODY},
};
html_source->AddLocalizedStrings(kLocalizedStrings);
@@ -480,49 +486,54 @@ void AddAppearanceStrings(content::WebUIDataSource* html_source,
void AddClearBrowsingDataStrings(content::WebUIDataSource* html_source,
Profile* profile) {
static constexpr webui::LocalizedString kLocalizedStrings[] = {
- {"clearTimeRange", IDS_SETTINGS_CLEAR_PERIOD_TITLE},
- {"clearBrowsingDataWithSync", IDS_SETTINGS_CLEAR_BROWSING_DATA_WITH_SYNC},
- {"clearBrowsingDataWithSyncError",
- IDS_SETTINGS_CLEAR_BROWSING_DATA_WITH_SYNC_ERROR},
- {"clearBrowsingDataWithSyncPassphraseError",
- IDS_SETTINGS_CLEAR_BROWSING_DATA_WITH_SYNC_PASSPHRASE_ERROR},
- {"clearBrowsingDataWithSyncPaused",
- IDS_SETTINGS_CLEAR_BROWSING_DATA_WITH_SYNC_PAUSED},
- {"clearBrowsingHistory", IDS_SETTINGS_CLEAR_BROWSING_HISTORY},
- {"clearBrowsingHistorySummary",
- IDS_SETTINGS_CLEAR_BROWSING_HISTORY_SUMMARY},
- {"clearBrowsingHistorySummarySignedInNoLink",
- IDS_SETTINGS_CLEAR_BROWSING_HISTORY_SUMMARY_SIGNED_IN_NO_LINK},
- {"clearDownloadHistory", IDS_SETTINGS_CLEAR_DOWNLOAD_HISTORY},
- {"clearCache", IDS_SETTINGS_CLEAR_CACHE},
- {"clearCookies", IDS_SETTINGS_CLEAR_COOKIES},
- {"clearCookiesSummary",
- IDS_SETTINGS_CLEAR_COOKIES_AND_SITE_DATA_SUMMARY_BASIC},
- {"clearCookiesSummarySignedIn",
- IDS_SETTINGS_CLEAR_COOKIES_AND_SITE_DATA_SUMMARY_BASIC_WITH_EXCEPTION},
+ {"clearTimeRange", IDS_SETTINGS_CLEAR_PERIOD_TITLE},
+ {"clearBrowsingDataSignedIn", IDS_SETTINGS_CLEAR_BROWSING_DATA_SIGNED_IN},
+ {"clearBrowsingDataWithSync", IDS_SETTINGS_CLEAR_BROWSING_DATA_WITH_SYNC},
+ {"clearBrowsingDataWithSyncError",
+ IDS_SETTINGS_CLEAR_BROWSING_DATA_WITH_SYNC_ERROR},
+ {"clearBrowsingDataWithSyncPassphraseError",
+ IDS_SETTINGS_CLEAR_BROWSING_DATA_WITH_SYNC_PASSPHRASE_ERROR},
+ {"clearBrowsingDataWithSyncPaused",
+ IDS_SETTINGS_CLEAR_BROWSING_DATA_WITH_SYNC_PAUSED},
+ {"clearBrowsingHistory", IDS_SETTINGS_CLEAR_BROWSING_HISTORY},
+ {"clearBrowsingHistorySummary",
+ IDS_SETTINGS_CLEAR_BROWSING_HISTORY_SUMMARY},
+ {"clearBrowsingHistorySummarySignedInNoLink",
+ IDS_SETTINGS_CLEAR_BROWSING_HISTORY_SUMMARY_SIGNED_IN_NO_LINK},
+ {"clearDownloadHistory", IDS_SETTINGS_CLEAR_DOWNLOAD_HISTORY},
+ {"clearCache", IDS_SETTINGS_CLEAR_CACHE},
+ {"clearCookies", IDS_SETTINGS_CLEAR_COOKIES},
+ {"clearCookiesSummary",
+ IDS_SETTINGS_CLEAR_COOKIES_AND_SITE_DATA_SUMMARY_BASIC},
+ {"clearCookiesSummarySignedIn",
+ IDS_SETTINGS_CLEAR_COOKIES_AND_SITE_DATA_SUMMARY_BASIC_SIGNED_IN_PROFILE},
+ {"clearCookiesSummarySyncing",
+ IDS_SETTINGS_CLEAR_COOKIES_AND_SITE_DATA_SUMMARY_BASIC_WITH_EXCEPTION},
#if BUILDFLAG(IS_CHROMEOS_LACROS)
- {"clearCookiesSummarySignedInMainProfile",
- IDS_SETTINGS_CLEAR_COOKIES_AND_SITE_DATA_SUMMARY_BASIC_MAIN_PROFILE},
-#endif
- {"clearCookiesSummarySignedInSupervisedProfile",
- IDS_SETTINGS_CLEAR_COOKIES_AND_SITE_DATA_SUMMARY_BASIC_SUPERVISED_PROFILE},
- {"clearCookiesCounter", IDS_DEL_COOKIES_COUNTER},
- {"clearPasswords", IDS_SETTINGS_CLEAR_PASSWORDS},
- {"clearFormData", IDS_SETTINGS_CLEAR_FORM_DATA},
- {"clearHostedAppData", IDS_SETTINGS_CLEAR_HOSTED_APP_DATA},
- {"clearPeriodHour", IDS_SETTINGS_CLEAR_PERIOD_HOUR},
- {"clearPeriod24Hours", IDS_SETTINGS_CLEAR_PERIOD_24_HOURS},
- {"clearPeriod7Days", IDS_SETTINGS_CLEAR_PERIOD_7_DAYS},
- {"clearPeriod4Weeks", IDS_SETTINGS_CLEAR_PERIOD_FOUR_WEEKS},
- {"clearPeriodEverything", IDS_SETTINGS_CLEAR_PERIOD_EVERYTHING},
- {"clearPeriod15Minutes", IDS_SETTINGS_CLEAR_PERIOD_15_MINUTES},
- {"historyDeletionDialogTitle",
- IDS_CLEAR_BROWSING_DATA_HISTORY_NOTICE_TITLE},
- {"historyDeletionDialogOK", IDS_CLEAR_BROWSING_DATA_HISTORY_NOTICE_OK},
- {"passwordsDeletionDialogTitle",
- IDS_CLEAR_BROWSING_DATA_PASSWORDS_NOTICE_TITLE},
- {"passwordsDeletionDialogOK", IDS_CLEAR_BROWSING_DATA_PASSWORDS_NOTICE_OK},
- {"notificationWarning", IDS_SETTINGS_NOTIFICATION_WARNING},
+ {"clearCookiesSummarySignedInMainProfile",
+ IDS_SETTINGS_CLEAR_COOKIES_AND_SITE_DATA_SUMMARY_BASIC_MAIN_PROFILE},
+#endif
+ {"clearCookiesSummarySignedInSupervisedProfile",
+ IDS_SETTINGS_CLEAR_COOKIES_AND_SITE_DATA_SUMMARY_BASIC_SUPERVISED_PROFILE},
+ {"clearCookiesCounter", IDS_DEL_COOKIES_COUNTER},
+ {"clearPasswords", IDS_SETTINGS_CLEAR_PASSWORDS},
+ {"clearFormData", IDS_SETTINGS_CLEAR_FORM_DATA},
+ {"clearHostedAppData", IDS_SETTINGS_CLEAR_HOSTED_APP_DATA},
+ {"clearPeriodHour", IDS_SETTINGS_CLEAR_PERIOD_HOUR},
+ {"clearPeriod24Hours", IDS_SETTINGS_CLEAR_PERIOD_24_HOURS},
+ {"clearPeriod7Days", IDS_SETTINGS_CLEAR_PERIOD_7_DAYS},
+ {"clearPeriod4Weeks", IDS_SETTINGS_CLEAR_PERIOD_FOUR_WEEKS},
+ {"clearPeriodEverything", IDS_SETTINGS_CLEAR_PERIOD_EVERYTHING},
+ {"clearPeriod15Minutes", IDS_SETTINGS_CLEAR_PERIOD_15_MINUTES},
+ {"clearPeriodNotSelected", IDS_SETTINGS_CLEAR_PERIOD_NOT_SELECTED},
+ {"historyDeletionDialogTitle",
+ IDS_CLEAR_BROWSING_DATA_HISTORY_NOTICE_TITLE},
+ {"historyDeletionDialogOK", IDS_CLEAR_BROWSING_DATA_HISTORY_NOTICE_OK},
+ {"passwordsDeletionDialogTitle",
+ IDS_CLEAR_BROWSING_DATA_PASSWORDS_NOTICE_TITLE},
+ {"passwordsDeletionDialogOK",
+ IDS_CLEAR_BROWSING_DATA_PASSWORDS_NOTICE_OK},
+ {"notificationWarning", IDS_SETTINGS_NOTIFICATION_WARNING},
};
html_source->AddString(
@@ -548,6 +559,9 @@ void AddClearBrowsingDataStrings(content::WebUIDataSource* html_source,
IDS_CLEAR_BROWSING_DATA_PASSWORDS_NOTICE,
l10n_util::GetStringUTF16(IDS_PASSWORDS_WEB_LINK)));
+ html_source->AddBoolean("unoDesktopEnabled",
+ base::FeatureList::IsEnabled(switches::kUnoDesktop));
+
html_source->AddLocalizedStrings(kLocalizedStrings);
}
@@ -701,20 +715,20 @@ void AddPerformanceStrings(content::WebUIDataSource* html_source) {
{"performancePageTitle", IDS_SETTINGS_PERFORMANCE_PAGE_TITLE},
{"memoryPageTitle", IDS_SETTINGS_MEMORY_PAGE_TITLE},
{"speedPageTitle", IDS_SETTINGS_SPEED_PAGE_TITLE},
- {"highEfficiencyModeLabel",
- IDS_SETTINGS_PERFORMANCE_HIGH_EFFICIENCY_MODE_SETTING},
- {"highEfficiencyModeDescription",
- IDS_SETTINGS_PERFORMANCE_HIGH_EFFICIENCY_MODE_SETTING_DESCRIPTION},
- {"highEfficiencyModeHeuristicsLabel",
- IDS_SETTINGS_PERFORMANCE_HIGH_EFFICIENCY_MODE_HEURISTICS_LABEL},
- {"highEfficiencyModeRecommendedBadge",
- IDS_SETTINGS_PERFORMANCE_HIGH_EFFICIENCY_MODE_RECOMMENDED_BADGE},
- {"highEfficiencyModeOnTimerLabel",
- IDS_SETTINGS_PERFORMANCE_HIGH_EFFICIENCY_MODE_ON_TIMER_LABEL},
- {"highEfficiencyModeRadioGroupAriaLabel",
- IDS_SETTINGS_PERFORMANCE_HIGH_EFFICIENCY_MODE_RADIO_GROUP_ARIA_LABEL},
- {"highEfficiencyChooseDiscardTimeAriaLabel",
- IDS_SETTINGS_PERFORMANCE_HIGH_EFFICIENCY_MODE_CHOOSE_DISCARD_TIME_ARIA_LABEL},
+ {"memorySaverModeLabel",
+ IDS_SETTINGS_PERFORMANCE_MEMORY_SAVER_MODE_SETTING},
+ {"memorySaverModeDescription",
+ IDS_SETTINGS_PERFORMANCE_MEMORY_SAVER_MODE_SETTING_DESCRIPTION},
+ {"memorySaverModeHeuristicsLabel",
+ IDS_SETTINGS_PERFORMANCE_MEMORY_SAVER_MODE_HEURISTICS_LABEL},
+ {"memorySaverModeRecommendedBadge",
+ IDS_SETTINGS_PERFORMANCE_MEMORY_SAVER_MODE_RECOMMENDED_BADGE},
+ {"memorySaverModeOnTimerLabel",
+ IDS_SETTINGS_PERFORMANCE_MEMORY_SAVER_MODE_ON_TIMER_LABEL},
+ {"memorySaverModeRadioGroupAriaLabel",
+ IDS_SETTINGS_PERFORMANCE_MEMORY_SAVER_MODE_RADIO_GROUP_ARIA_LABEL},
+ {"memorySaverChooseDiscardTimeAriaLabel",
+ IDS_SETTINGS_PERFORMANCE_MEMORY_SAVER_MODE_CHOOSE_DISCARD_TIME_ARIA_LABEL},
{"batteryPageTitle", IDS_SETTINGS_BATTERY_PAGE_TITLE},
{"batterySaverModeLabel",
IDS_SETTINGS_PERFORMANCE_BATTERY_SAVER_MODE_SETTING},
@@ -750,8 +764,8 @@ void AddPerformanceStrings(content::WebUIDataSource* html_source) {
html_source->AddLocalizedStrings(kLocalizedStrings);
html_source->AddBoolean(
- "highEfficiencyShowRecommendedBadge",
- performance_manager::features::kHighEfficiencyShowRecommendedBadge.Get());
+ "memorySaverShowRecommendedBadge",
+ performance_manager::features::kMemorySaverShowRecommendedBadge.Get());
html_source->AddString(
"tabDiscardTimerFiveMinutes",
@@ -801,10 +815,10 @@ void AddPerformanceStrings(content::WebUIDataSource* html_source) {
"tabDiscardingExceptionsAddDialogHelp",
l10n_util::GetStringFUTF16(
IDS_SETTINGS_PERFORMANCE_TAB_DISCARDING_EXCEPTIONS_ADD_DIALOG_HELP,
- chrome::kHighEfficiencyModeTabDiscardingHelpUrl));
+ chrome::kMemorySaverModeTabDiscardingHelpUrl));
- html_source->AddString("highEfficiencyLearnMoreUrl",
- chrome::kHighEfficiencyModeLearnMoreUrl);
+ html_source->AddString("memorySaverLearnMoreUrl",
+ chrome::kMemorySaverModeLearnMoreUrl);
html_source->AddString("batterySaverLearnMoreUrl",
chrome::kBatterySaverModeLearnMoreUrl);
html_source->AddString("preloadingLearnMoreUrl",
@@ -820,90 +834,97 @@ void AddPerformanceStrings(content::WebUIDataSource* html_source) {
void AddLanguagesStrings(content::WebUIDataSource* html_source,
Profile* profile) {
static constexpr webui::LocalizedString kLocalizedStrings[] = {
- {"languagesPageTitle", IDS_SETTINGS_LANGUAGES_PAGE_TITLE},
+ {"languagesPageTitle", IDS_SETTINGS_LANGUAGES_PAGE_TITLE},
#if !BUILDFLAG(IS_CHROMEOS_ASH)
- {"languagesCardTitle", IDS_SETTINGS_LANGUAGES_CARD_TITLE},
- {"searchLanguages", IDS_SETTINGS_LANGUAGE_SEARCH},
- {"languagesExpandA11yLabel",
- IDS_SETTINGS_LANGUAGES_EXPAND_ACCESSIBILITY_LABEL},
- {"preferredLanguagesDesc", IDS_SETTINGS_LANGUAGES_PREFERRED_LANGUAGES_DESC},
- {"moveToTop", IDS_SETTINGS_LANGUAGES_LANGUAGES_LIST_MOVE_TO_TOP},
- {"moveUp", IDS_SETTINGS_LANGUAGES_LANGUAGES_LIST_MOVE_UP},
- {"moveDown", IDS_SETTINGS_LANGUAGES_LANGUAGES_LIST_MOVE_DOWN},
- {"removeLanguage", IDS_SETTINGS_LANGUAGES_LANGUAGES_LIST_REMOVE},
- {"addLanguages", IDS_SETTINGS_LANGUAGES_LANGUAGES_ADD},
- {"addLanguagesDialogTitle", IDS_SETTINGS_LANGUAGES_MANAGE_LANGUAGES_TITLE},
+ {"languagesCardTitle", IDS_SETTINGS_LANGUAGES_CARD_TITLE},
+ {"searchLanguages", IDS_SETTINGS_LANGUAGE_SEARCH},
+ {"languagesExpandA11yLabel",
+ IDS_SETTINGS_LANGUAGES_EXPAND_ACCESSIBILITY_LABEL},
+ {"preferredLanguagesDesc",
+ IDS_SETTINGS_LANGUAGES_PREFERRED_LANGUAGES_DESC},
+ {"moveToTop", IDS_SETTINGS_LANGUAGES_LANGUAGES_LIST_MOVE_TO_TOP},
+ {"moveUp", IDS_SETTINGS_LANGUAGES_LANGUAGES_LIST_MOVE_UP},
+ {"moveDown", IDS_SETTINGS_LANGUAGES_LANGUAGES_LIST_MOVE_DOWN},
+ {"removeLanguage", IDS_SETTINGS_LANGUAGES_LANGUAGES_LIST_REMOVE},
+ {"addLanguages", IDS_SETTINGS_LANGUAGES_LANGUAGES_ADD},
+ {"addLanguagesDialogTitle",
+ IDS_SETTINGS_LANGUAGES_MANAGE_LANGUAGES_TITLE},
#if BUILDFLAG(IS_WIN)
- {"isDisplayedInThisLanguage",
- IDS_SETTINGS_LANGUAGES_IS_DISPLAYED_IN_THIS_LANGUAGE},
- {"displayInThisLanguage", IDS_SETTINGS_LANGUAGES_DISPLAY_IN_THIS_LANGUAGE},
-#endif
- {"offerToEnableTranslate",
- IDS_SETTINGS_LANGUAGES_OFFER_TO_ENABLE_TRANSLATE},
- {"offerToEnableTranslateSublabel",
- IDS_SETTINGS_LANGUAGES_OFFER_TO_ENABLE_TRANSLATE_SUBLABEL},
- {"noLanguagesAdded", IDS_SETTINGS_LANGUAGES_NO_LANGUAGES_ADDED},
- {"addLanguageAriaLabel", IDS_SETTINGS_LANGUAGES_ADD_ARIA_LABEL},
- {"removeAutomaticLanguageAriaLabel",
- IDS_SETTINGS_LANGUAGES_REMOVE_AUTOMATIC_ARIA_LABEL},
- {"removeNeverLanguageAriaLabel",
- IDS_SETTINGS_LANGUAGES_REMOVE_NEVER_ARIA_LABEL},
- {"translatePageTitle", IDS_SETTINGS_TRANSLATE_PAGE_TITLE},
- {"targetLanguageLabel", IDS_SETTINGS_TARGET_TRANSLATE_LABEL},
- {"automaticallyTranslateLanguages",
- IDS_SETTINGS_LANGUAGES_AUTOMATIC_TRANSLATE},
- {"addAutomaticallyTranslateLanguagesAriaLabel",
- IDS_SETTINGS_LANGUAGES_AUTOMATIC_TRANSLATE_ADD_ARIA_LABEL},
- {"neverTranslateLanguages", IDS_SETTINGS_LANGUAGES_NEVER_LANGUAGES},
- {"addNeverTranslateLanguagesAriaLabel",
- IDS_SETTINGS_LANGUAGES_NEVER_TRANSLATE_ADD_ARIA_LABEL},
- {"translateTargetLabel", IDS_SETTINGS_LANGUAGES_TRANSLATE_TARGET},
- {"spellCheckTitle", IDS_SETTINGS_LANGUAGES_SPELL_CHECK_TITLE},
- {"spellCheckBasicLabel", IDS_SETTINGS_LANGUAGES_SPELL_CHECK_BASIC_LABEL},
- {"spellCheckEnhancedLabel",
- IDS_SETTINGS_LANGUAGES_SPELL_CHECK_ENHANCED_LABEL},
- {"spellCheckEnhancedDescription",
- IDS_SETTINGS_LANGUAGES_SPELL_CHECK_ENHANCED_DESCRIPTION},
- {"offerToEnableSpellCheck",
- IDS_SETTINGS_LANGUAGES_OFFER_TO_ENABLE_SPELL_CHECK},
- // Managed dialog strings:
- {"languageManagedDialogTitle", IDS_SETTINGS_LANGUAGES_MANAGED_DIALOG_TITLE},
- {"languageManagedDialogBody", IDS_SETTINGS_LANGUAGES_MANAGED_DIALOG_BODY},
+ {"isDisplayedInThisLanguage",
+ IDS_SETTINGS_LANGUAGES_IS_DISPLAYED_IN_THIS_LANGUAGE},
+ {"displayInThisLanguage",
+ IDS_SETTINGS_LANGUAGES_DISPLAY_IN_THIS_LANGUAGE},
+#endif
+ {"offerToEnableTranslate",
+ IDS_SETTINGS_LANGUAGES_OFFER_TO_ENABLE_TRANSLATE},
+ {"offerToEnableTranslateSublabel",
+ IDS_SETTINGS_LANGUAGES_OFFER_TO_ENABLE_TRANSLATE_SUBLABEL},
+ {"noLanguagesAdded", IDS_SETTINGS_LANGUAGES_NO_LANGUAGES_ADDED},
+ {"addLanguageAriaLabel", IDS_SETTINGS_LANGUAGES_ADD_ARIA_LABEL},
+ {"removeAutomaticLanguageAriaLabel",
+ IDS_SETTINGS_LANGUAGES_REMOVE_AUTOMATIC_ARIA_LABEL},
+ {"removeNeverLanguageAriaLabel",
+ IDS_SETTINGS_LANGUAGES_REMOVE_NEVER_ARIA_LABEL},
+ {"translatePageTitle", IDS_SETTINGS_TRANSLATE_PAGE_TITLE},
+ {"targetLanguageLabel", IDS_SETTINGS_TARGET_TRANSLATE_LABEL},
+ {"automaticallyTranslateLanguages",
+ IDS_SETTINGS_LANGUAGES_AUTOMATIC_TRANSLATE},
+ {"addAutomaticallyTranslateLanguagesAriaLabel",
+ IDS_SETTINGS_LANGUAGES_AUTOMATIC_TRANSLATE_ADD_ARIA_LABEL},
+ {"neverTranslateLanguages", IDS_SETTINGS_LANGUAGES_NEVER_LANGUAGES},
+ {"addNeverTranslateLanguagesAriaLabel",
+ IDS_SETTINGS_LANGUAGES_NEVER_TRANSLATE_ADD_ARIA_LABEL},
+ {"translateTargetLabel", IDS_SETTINGS_LANGUAGES_TRANSLATE_TARGET},
+ {"spellCheckTitle", IDS_SETTINGS_LANGUAGES_SPELL_CHECK_TITLE},
+ {"spellCheckBasicLabel", IDS_SETTINGS_LANGUAGES_SPELL_CHECK_BASIC_LABEL},
+ {"spellCheckEnhancedLabel",
+ IDS_SETTINGS_LANGUAGES_SPELL_CHECK_ENHANCED_LABEL},
+ {"spellCheckEnhancedDescription",
+ IDS_SETTINGS_LANGUAGES_SPELL_CHECK_ENHANCED_DESCRIPTION},
+ {"offerToEnableSpellCheck",
+ IDS_SETTINGS_LANGUAGES_OFFER_TO_ENABLE_SPELL_CHECK},
+ // Managed dialog strings:
+ {"languageManagedDialogTitle",
+ IDS_SETTINGS_LANGUAGES_MANAGED_DIALOG_TITLE},
+ {"languageManagedDialogBody", IDS_SETTINGS_LANGUAGES_MANAGED_DIALOG_BODY},
#if !BUILDFLAG(IS_MAC)
- {"spellCheckDisabledReason",
- IDS_SETTING_LANGUAGES_SPELL_CHECK_DISABLED_REASON},
- {"spellCheckLanguagesListTitle",
- IDS_SETTINGS_LANGUAGES_SPELL_CHECK_LANGUAGES_LIST_TITLE},
- {"manageSpellCheck", IDS_SETTINGS_LANGUAGES_SPELL_CHECK_MANAGE},
- {"editDictionaryPageTitle", IDS_SETTINGS_LANGUAGES_EDIT_DICTIONARY_TITLE},
- {"addDictionaryWordLabel", IDS_SETTINGS_LANGUAGES_ADD_DICTIONARY_WORD},
- {"addDictionaryWordButton",
- IDS_SETTINGS_LANGUAGES_ADD_DICTIONARY_WORD_BUTTON},
- {"addDictionaryWordDuplicateError",
- IDS_SETTINGS_LANGUAGES_ADD_DICTIONARY_WORD_DUPLICATE_ERROR},
- {"addDictionaryWordLengthError",
- IDS_SETTINGS_LANGUAGES_ADD_DICTIONARY_WORD_LENGTH_ERROR},
- {"deleteDictionaryWordButton",
- IDS_SETTINGS_LANGUAGES_DELETE_DICTIONARY_WORD_BUTTON},
- {"customDictionaryWords", IDS_SETTINGS_LANGUAGES_DICTIONARY_WORDS},
- {"noCustomDictionaryWordsFound",
- IDS_SETTINGS_LANGUAGES_DICTIONARY_WORDS_NONE},
- {"languagesDictionaryDownloadError",
- IDS_SETTINGS_LANGUAGES_DICTIONARY_DOWNLOAD_FAILED},
- {"languagesDictionaryDownloadErrorHelp",
- IDS_SETTINGS_LANGUAGES_DICTIONARY_DOWNLOAD_FAILED_HELP},
+ {"spellCheckDisabledReason",
+ IDS_SETTING_LANGUAGES_SPELL_CHECK_DISABLED_REASON},
+ {"spellCheckLanguagesListTitle",
+ IDS_SETTINGS_LANGUAGES_SPELL_CHECK_LANGUAGES_LIST_TITLE},
+ {"manageSpellCheck", IDS_SETTINGS_LANGUAGES_SPELL_CHECK_MANAGE},
+ {"editDictionaryPageTitle", IDS_SETTINGS_LANGUAGES_EDIT_DICTIONARY_TITLE},
+ {"addDictionaryWordLabel", IDS_SETTINGS_LANGUAGES_ADD_DICTIONARY_WORD},
+ {"addDictionaryWordButton",
+ IDS_SETTINGS_LANGUAGES_ADD_DICTIONARY_WORD_BUTTON},
+ {"addDictionaryWordDuplicateError",
+ IDS_SETTINGS_LANGUAGES_ADD_DICTIONARY_WORD_DUPLICATE_ERROR},
+ {"addDictionaryWordLengthError",
+ IDS_SETTINGS_LANGUAGES_ADD_DICTIONARY_WORD_LENGTH_ERROR},
+ {"deleteDictionaryWordButton",
+ IDS_SETTINGS_LANGUAGES_DELETE_DICTIONARY_WORD_BUTTON},
+ {"customDictionaryWords", IDS_SETTINGS_LANGUAGES_DICTIONARY_WORDS},
+ {"noCustomDictionaryWordsFound",
+ IDS_SETTINGS_LANGUAGES_DICTIONARY_WORDS_NONE},
+ {"languagesDictionaryDownloadError",
+ IDS_SETTINGS_LANGUAGES_DICTIONARY_DOWNLOAD_FAILED},
+ {"languagesDictionaryDownloadErrorHelp",
+ IDS_SETTINGS_LANGUAGES_DICTIONARY_DOWNLOAD_FAILED_HELP},
#endif
#endif // !BUILDFLAG(IS_CHROMEOS_ASH)
#if BUILDFLAG(IS_CHROMEOS_ASH)
- {"openChromeOSLanguagesSettingsLabel",
- IDS_SETTINGS_LANGUAGES_OPEN_CHROME_OS_SETTINGS_LABEL},
+ {"openChromeOSLanguagesSettingsLabel",
+ IDS_SETTINGS_LANGUAGES_OPEN_CHROME_OS_SETTINGS_LABEL},
#endif
};
html_source->AddLocalizedStrings(kLocalizedStrings);
#if BUILDFLAG(IS_CHROMEOS_ASH)
html_source->AddString(
- "chromeOSLanguagesSettingsPath",
- chromeos::settings::mojom::kLanguagesAndInputSectionPath);
+ "osSettingsLanguagesPageUrl",
+ ash::features::IsOsSettingsRevampWayfindingEnabled()
+ ? BuildOSSettingsUrl(chromeos::settings::mojom::kLanguagesSubpagePath)
+ : BuildOSSettingsUrl(
+ chromeos::settings::mojom::kLanguagesAndInputSectionPath));
#endif // BUILDFLAG(IS_CHROMEOS_ASH)
}
@@ -936,13 +957,15 @@ bool IsFidoAuthenticationAvailable(autofill::PersonalDataManager* personal_data,
// If |autofill_manager| is not available, then don't show toggle switch.
autofill::ContentAutofillDriverFactory* autofill_driver_factory =
autofill::ContentAutofillDriverFactory::FromWebContents(web_contents);
- if (!autofill_driver_factory)
+ if (!autofill_driver_factory) {
return false;
+ }
autofill::ContentAutofillDriver* autofill_driver =
autofill_driver_factory->DriverForFrame(
web_contents->GetPrimaryMainFrame());
- if (!autofill_driver)
+ if (!autofill_driver) {
return false;
+ }
// Show the toggle switch only if FIDO authentication is available. Once
// returned, this decision may be overridden (from true to false) by the
@@ -971,171 +994,190 @@ void AddAutofillStrings(content::WebUIDataSource* html_source,
Profile* profile,
content::WebContents* web_contents) {
static constexpr webui::LocalizedString kLocalizedStrings[] = {
- {"autofillPageTitle", IDS_SETTINGS_AUTOFILL_AND_PASSWORDS},
- {"passwordsDescription", IDS_SETTINGS_PASSWORD_MANAGER_DESCRIPTION},
- {"genericCreditCard", IDS_AUTOFILL_CC_GENERIC},
- {"creditCards", IDS_AUTOFILL_PAYMENT_METHODS},
- {"paymentsMethodsTableAriaLabel",
- IDS_AUTOFILL_PAYMENT_METHODS_TABLE_ARIA_LABEL},
- {"noPaymentMethodsFound", IDS_SETTINGS_PAYMENT_METHODS_NONE},
- {"googlePayments", IDS_SETTINGS_GOOGLE_PAYMENTS},
- {"googlePaymentsCached", IDS_SETTINGS_GOOGLE_PAYMENTS_CACHED},
- {"enableProfilesLabel", IDS_AUTOFILL_ENABLE_PROFILES_TOGGLE_LABEL},
- {"enableProfilesSublabel", IDS_AUTOFILL_ENABLE_PROFILES_TOGGLE_SUBLABEL},
- {"enableCreditCardsLabel", IDS_AUTOFILL_ENABLE_CREDIT_CARDS_TOGGLE_LABEL},
- {"enableCreditCardsSublabel",
- IDS_AUTOFILL_ENABLE_CREDIT_CARDS_TOGGLE_SUBLABEL},
- {"enableCreditCardFIDOAuthLabel", IDS_ENABLE_CREDIT_CARD_FIDO_AUTH_LABEL},
- {"enableCreditCardFIDOAuthSublabel",
- IDS_ENABLE_CREDIT_CARD_FIDO_AUTH_SUBLABEL},
- {"enableCvcStorageLabel",
- IDS_AUTOFILL_SETTINGS_PAGE_ENABLE_CVC_STORAGE_LABEL},
- {"enableCvcStorageSublabel",
- IDS_AUTOFILL_SETTINGS_PAGE_ENABLE_CVC_STORAGE_SUBLABEL},
- {"enableCvcStorageDeleteDataSublabel",
- IDS_AUTOFILL_SETTINGS_PAGE_ENABLE_CVC_STORAGE_WITH_DELETE_LINK_SUBLABEL},
- {"enableMandatoryAuthToggleLabel",
- IDS_AUTOFILL_SETTINGS_PAGE_ENABLE_PAYMENT_METHOD_MANDATORY_REAUTH_LABEL},
- {"enableMandatoryAuthToggleSublabel",
- IDS_AUTOFILL_SETTINGS_PAGE_ENABLE_PAYMENT_METHOD_MANDATORY_REAUTH_SUBLABEL},
- {"bulkRemoveCvcConfirmationTitle",
- IDS_AUTOFILL_SETTINGS_PAGE_BULK_REMOVE_CVC_TITLE},
- {"bulkRemoveCvcConfirmationDescription",
- IDS_AUTOFILL_SETTINGS_PAGE_BULK_REMOVE_CVC_DESCRIPTION},
- {"addresses", IDS_AUTOFILL_ADDRESSES},
- {"addressesTableAriaLabel", IDS_AUTOFILL_ADDRESSES_TABLE_ARIA_LABEL},
- {"addressesTitle", IDS_AUTOFILL_ADDRESSES_SETTINGS_TITLE},
- {"addAddressTitle", IDS_SETTINGS_AUTOFILL_ADDRESSES_ADD_TITLE},
- {"editAddressTitle", IDS_SETTINGS_AUTOFILL_ADDRESSES_EDIT_TITLE},
- {"localAddressIconA11yLabel", IDS_AUTOFILL_LOCAL_ADDRESS_ICON_A11Y_LABEL},
- {"newAccountAddressSourceNotice",
- IDS_AUTOFILL_ADDRESS_WILL_BE_SAVED_IN_ACCOUNT_SOURCE_NOTICE},
- {"editAccountAddressSourceNotice",
- IDS_AUTOFILL_ADDRESS_ALREADY_SAVED_IN_ACCOUNT_SOURCE_NOTICE},
- {"deleteAccountAddressSourceNotice",
- IDS_AUTOFILL_DELETE_ACCOUNT_ADDRESS_SOURCE_NOTICE},
- {"addressCountry", IDS_SETTINGS_AUTOFILL_ADDRESSES_COUNTRY},
- {"addressPhone", IDS_SETTINGS_AUTOFILL_ADDRESSES_PHONE},
- {"addressEmail", IDS_SETTINGS_AUTOFILL_ADDRESSES_EMAIL},
- {"honorificLabel", IDS_SETTINGS_AUTOFILL_ADDRESS_HONORIFIC_LABEL},
- {"creditCardDescription", IDS_SETTINGS_AUTOFILL_CARD_DESCRIPTION},
- {"creditCardA11yLabeled", IDS_SETTINGS_AUTOFILL_CARD_A11Y_LABELED},
- {"creditCardExpDateA11yLabeled",
- IDS_SETTINGS_AUTOFILL_CARD_EXP_DATE_A11Y_LABELED},
- {"moreActionsForAddress", IDS_SETTINGS_AUTOFILL_MORE_ACTIONS_FOR_ADDRESS},
- {"moreActionsForCreditCard",
- IDS_SETTINGS_AUTOFILL_MORE_ACTIONS_FOR_CREDIT_CARD},
- {"removeAddress", IDS_SETTINGS_ADDRESS_REMOVE},
- {"removeAddressConfirmationTitle",
- IDS_SETTINGS_ADDRESS_REMOVE_CONFIRMATION_TITLE},
- {"removeSyncAddressConfirmationDescription",
- IDS_AUTOFILL_DELETE_SYNC_ADDRESS_SOURCE_NOTICE},
- {"removeLocalAddressConfirmationDescription",
- IDS_AUTOFILL_DELETE_LOCAL_ADDRESS_SOURCE_NOTICE},
- {"removeLocalCreditCardConfirmationTitle",
- IDS_SETTINGS_LOCAL_CARD_REMOVE_CONFIRMATION_TITLE},
- {"removeLocalPaymentMethodConfirmationDescription",
- IDS_SETTINGS_LOCAL_PAYMENT_METHOD_REMOVE_CONFIRMATION_DESCRIPTION},
- {"addressRemovedMessage", IDS_SETTINGS_ADDRESS_REMOVED_MESSAGE},
- {"editAddressRequiredFieldError",
- IDS_AUTOFILL_EDIT_ADDRESS_REQUIRED_FIELD_FORM_ERROR},
- {"editAddressRequiredFieldsError",
- IDS_AUTOFILL_EDIT_ADDRESS_REQUIRED_FIELDS_FORM_ERROR},
- {"clearCreditCard", IDS_SETTINGS_CREDIT_CARD_REMOVE},
- {"creditCardExpiration", IDS_SETTINGS_CREDIT_CARD_EXPIRATION_DATE},
- {"creditCardName", IDS_SETTINGS_NAME_ON_CREDIT_CARD},
- {"creditCardNickname", IDS_SETTINGS_CREDIT_CARD_NICKNAME},
- {"creditCardNicknameInvalid", IDS_SETTINGS_CREDIT_CARD_NICKNAME_INVALID},
- {"creditCardNumber", IDS_SETTINGS_CREDIT_CARD_NUMBER},
- {"creditCardExpirationMonth", IDS_SETTINGS_CREDIT_CARD_EXPIRATION_MONTH},
- {"creditCardExpirationYear", IDS_SETTINGS_CREDIT_CARD_EXPIRATION_YEAR},
- {"creditCardExpired", IDS_SETTINGS_CREDIT_CARD_EXPIRED},
- {"editCreditCardTitle", IDS_SETTINGS_EDIT_CREDIT_CARD_TITLE},
- {"addCreditCardTitle", IDS_SETTINGS_ADD_CREDIT_CARD_TITLE},
- {"addPaymentMethods", IDS_SETTINGS_ADD_PAYMENT_METHODS},
- {"addPaymentMethodCreditOrDebitCard",
- IDS_SETTINGS_ADD_PAYMENT_METHOD_CREDIT_OR_DEBIT_CARD},
- {"addPaymentMethodIban", IDS_SETTINGS_ADD_PAYMENT_METHOD_IBAN},
- {"ibanSavedToThisDeviceOnly", IDS_SETTINGS_IBAN_SAVED_TO_THIS_DEVICE_ONLY},
- {"addIbanTitle", IDS_SETTINGS_ADD_IBAN_TITLE},
- {"editIbanTitle", IDS_SETTINGS_EDIT_IBAN_TITLE},
- {"ibanNickname", IDS_IBAN_NICKNAME},
- {"moreActionsForIban", IDS_SETTINGS_AUTOFILL_MORE_ACTIONS_FOR_IBAN},
- {"moreActionsForIbanDescription",
- IDS_SETTINGS_AUTOFILL_MORE_ACTIONS_FOR_IBAN_DESCRIPTION},
- {"editIban", IDS_SETTINGS_IBAN_EDIT},
- {"removeLocalIbanConfirmationTitle",
- IDS_SETTINGS_LOCAL_IBAN_REMOVE_CONFIRMATION_TITLE},
- {"migrateCreditCardsLabel", IDS_SETTINGS_MIGRATABLE_CARDS_LABEL},
- {"migratableCardsInfoSingle", IDS_SETTINGS_SINGLE_MIGRATABLE_CARD_INFO},
- {"migratableCardsInfoMultiple",
- IDS_SETTINGS_MULTIPLE_MIGRATABLE_CARDS_INFO},
- {"remotePaymentMethodsLinkLabel",
- IDS_SETTINGS_REMOTE_PAYMENT_METHODS_LINK_LABEL},
- {"canMakePaymentToggleLabel", IDS_SETTINGS_CAN_MAKE_PAYMENT_TOGGLE_LABEL},
- {"autofillDetail", IDS_SETTINGS_AUTOFILL_DETAIL},
- {"passwords", IDS_SETTINGS_PASSWORD_MANAGER},
- {"passwordsLeakDetectionLabel",
- IDS_SETTINGS_PASSWORDS_LEAK_DETECTION_LABEL},
- {"passwordsLeakDetectionLabelUpdated",
- IDS_SETTINGS_PASSWORDS_LEAK_DETECTION_LABEL_UPDATED},
- {"passwordsLeakDetectionGeneralDescription",
- IDS_PASSWORD_MANAGER_LEAK_HELP_MESSAGE},
- {"passwordsLeakDetectionGeneralDescriptionUpdated",
- IDS_PASSWORD_MANAGER_LEAK_HELP_MESSAGE_UPDATED},
- {"passwordsLeakDetectionSignedOutEnabledDescription",
- IDS_SETTINGS_PASSWORDS_LEAK_DETECTION_SIGNED_OUT_ENABLED_DESC},
- {"editPasskeySiteLabel", IDS_SETTINGS_PASSKEYS_SITE_LABEL},
- {"editPasskeyUsernameLabel",
- IDS_SETTINGS_SECURITY_KEYS_CREDENTIAL_USERNAME_LABEL},
+ {"autofillPageTitle", IDS_SETTINGS_AUTOFILL_AND_PASSWORDS},
+ {"passwordsDescription", IDS_SETTINGS_PASSWORD_MANAGER_DESCRIPTION},
+ {"genericCreditCard", IDS_AUTOFILL_CC_GENERIC},
+ {"creditCards", IDS_AUTOFILL_PAYMENT_METHODS},
+ {"paymentsMethodsTableAriaLabel",
+ IDS_AUTOFILL_PAYMENT_METHODS_TABLE_ARIA_LABEL},
+ {"noPaymentMethodsFound", IDS_SETTINGS_PAYMENT_METHODS_NONE},
+ {"googlePayments", IDS_SETTINGS_GOOGLE_PAYMENTS},
+ {"googlePaymentsCached", IDS_SETTINGS_GOOGLE_PAYMENTS_CACHED},
+ {"enableProfilesLabel", IDS_AUTOFILL_ENABLE_PROFILES_TOGGLE_LABEL},
+ {"enableProfilesSublabel", IDS_AUTOFILL_ENABLE_PROFILES_TOGGLE_SUBLABEL},
+ {"enableCreditCardsLabel", IDS_AUTOFILL_ENABLE_CREDIT_CARDS_TOGGLE_LABEL},
+ {"enableCreditCardsSublabel",
+ IDS_AUTOFILL_ENABLE_CREDIT_CARDS_TOGGLE_SUBLABEL},
+ {"enableCreditCardFIDOAuthLabel", IDS_ENABLE_CREDIT_CARD_FIDO_AUTH_LABEL},
+ {"enableCreditCardFIDOAuthSublabel",
+ IDS_ENABLE_CREDIT_CARD_FIDO_AUTH_SUBLABEL},
+ {"enableCvcStorageLabel",
+ IDS_AUTOFILL_SETTINGS_PAGE_ENABLE_CVC_STORAGE_LABEL},
+ {"enableCvcStorageSublabel",
+ IDS_AUTOFILL_SETTINGS_PAGE_ENABLE_CVC_STORAGE_SUBLABEL},
+ {"enableCvcStorageDeleteDataSublabel",
+ IDS_AUTOFILL_SETTINGS_PAGE_ENABLE_CVC_STORAGE_WITH_DELETE_LINK_SUBLABEL},
+ {"enableMandatoryAuthToggleLabel",
+ IDS_AUTOFILL_SETTINGS_PAGE_ENABLE_PAYMENT_METHOD_MANDATORY_REAUTH_LABEL},
+ {"enableMandatoryAuthToggleSublabel",
+ IDS_AUTOFILL_SETTINGS_PAGE_ENABLE_PAYMENT_METHOD_MANDATORY_REAUTH_SUBLABEL},
+ {"bulkRemoveCvcConfirmationTitle",
+ IDS_AUTOFILL_SETTINGS_PAGE_BULK_REMOVE_CVC_TITLE},
+ {"bulkRemoveCvcConfirmationDescription",
+ IDS_AUTOFILL_SETTINGS_PAGE_BULK_REMOVE_CVC_DESCRIPTION},
+ {"addresses", IDS_AUTOFILL_ADDRESSES},
+ {"addressesTableAriaLabel", IDS_AUTOFILL_ADDRESSES_TABLE_ARIA_LABEL},
+ {"addressesTitle", IDS_AUTOFILL_ADDRESSES_SETTINGS_TITLE},
+ {"addAddressTitle", IDS_SETTINGS_AUTOFILL_ADDRESSES_ADD_TITLE},
+ {"editAddressTitle", IDS_SETTINGS_AUTOFILL_ADDRESSES_EDIT_TITLE},
+ {"localAddressIconA11yLabel", IDS_AUTOFILL_LOCAL_ADDRESS_ICON_A11Y_LABEL},
+ {"newAccountAddressSourceNotice",
+ IDS_AUTOFILL_ADDRESS_WILL_BE_SAVED_IN_ACCOUNT_SOURCE_NOTICE},
+ {"editAccountAddressSourceNotice",
+ IDS_AUTOFILL_ADDRESS_ALREADY_SAVED_IN_ACCOUNT_SOURCE_NOTICE},
+ {"deleteAccountAddressSourceNotice",
+ IDS_AUTOFILL_DELETE_ACCOUNT_ADDRESS_SOURCE_NOTICE},
+ {"addressCountry", IDS_SETTINGS_AUTOFILL_ADDRESSES_COUNTRY},
+ {"addressPhone", IDS_SETTINGS_AUTOFILL_ADDRESSES_PHONE},
+ {"addressEmail", IDS_SETTINGS_AUTOFILL_ADDRESSES_EMAIL},
+ {"creditCardDescription", IDS_SETTINGS_AUTOFILL_CARD_DESCRIPTION},
+ {"creditCardA11yLabeled", IDS_SETTINGS_AUTOFILL_CARD_A11Y_LABELED},
+ {"creditCardExpDateA11yLabeled",
+ IDS_SETTINGS_AUTOFILL_CARD_EXP_DATE_A11Y_LABELED},
+ {"moreActionsForAddress", IDS_SETTINGS_AUTOFILL_MORE_ACTIONS_FOR_ADDRESS},
+ {"moreActionsForCreditCard",
+ IDS_SETTINGS_AUTOFILL_MORE_ACTIONS_FOR_CREDIT_CARD},
+ {"removeAddress", IDS_SETTINGS_ADDRESS_REMOVE},
+ {"removeAddressConfirmationTitle",
+ IDS_SETTINGS_ADDRESS_REMOVE_CONFIRMATION_TITLE},
+ {"removeSyncAddressConfirmationDescription",
+ IDS_AUTOFILL_DELETE_SYNC_ADDRESS_SOURCE_NOTICE},
+ {"removeLocalAddressConfirmationDescription",
+ IDS_AUTOFILL_DELETE_LOCAL_ADDRESS_SOURCE_NOTICE},
+ {"removeLocalCreditCardConfirmationTitle",
+ IDS_SETTINGS_LOCAL_CARD_REMOVE_CONFIRMATION_TITLE},
+ {"removeLocalPaymentMethodConfirmationDescription",
+ IDS_SETTINGS_LOCAL_PAYMENT_METHOD_REMOVE_CONFIRMATION_DESCRIPTION},
+ {"addressRemovedMessage", IDS_SETTINGS_ADDRESS_REMOVED_MESSAGE},
+ {"editAddressRequiredFieldError",
+ IDS_AUTOFILL_EDIT_ADDRESS_REQUIRED_FIELD_FORM_ERROR},
+ {"editAddressRequiredFieldsError",
+ IDS_AUTOFILL_EDIT_ADDRESS_REQUIRED_FIELDS_FORM_ERROR},
+ {"clearCreditCard", IDS_SETTINGS_CREDIT_CARD_REMOVE},
+ {"creditCardExpiration", IDS_SETTINGS_CREDIT_CARD_EXPIRATION_DATE},
+ {"creditCardName", IDS_SETTINGS_NAME_ON_CREDIT_CARD},
+ {"creditCardNickname", IDS_SETTINGS_CREDIT_CARD_NICKNAME},
+ {"creditCardNicknameInvalid", IDS_SETTINGS_CREDIT_CARD_NICKNAME_INVALID},
+ {"creditCardCvcInputTitle", IDS_SETTINGS_CREDIT_CARD_CVC_TITLE},
+ {"creditCardCvcImageTitle", IDS_SETTINGS_CREDIT_CARD_CVC_IMAGE_TITLE},
+ {"creditCardCvcAmexImageTitle",
+ IDS_SETTINGS_CREDIT_CARD_CVC_IMAGE_TITLE_AMEX},
+ {"creditCardCvcInputPlaceholder",
+ IDS_SETTINGS_CREDIT_CARD_CVC_PLACEHOLDER},
+ {"creditCardNumber", IDS_SETTINGS_CREDIT_CARD_NUMBER},
+ {"creditCardExpirationMonth", IDS_SETTINGS_CREDIT_CARD_EXPIRATION_MONTH},
+ {"creditCardExpirationYear", IDS_SETTINGS_CREDIT_CARD_EXPIRATION_YEAR},
+ {"creditCardExpired", IDS_SETTINGS_CREDIT_CARD_EXPIRED},
+ {"editCreditCardTitle", IDS_SETTINGS_EDIT_CREDIT_CARD_TITLE},
+ {"addCreditCardTitle", IDS_SETTINGS_ADD_CREDIT_CARD_TITLE},
+ {"addPaymentMethods", IDS_SETTINGS_ADD_PAYMENT_METHODS},
+ {"addPaymentMethodCreditOrDebitCard",
+ IDS_SETTINGS_ADD_PAYMENT_METHOD_CREDIT_OR_DEBIT_CARD},
+ {"addPaymentMethodIban", IDS_SETTINGS_ADD_PAYMENT_METHOD_IBAN},
+ {"ibanSavedToThisDeviceOnly",
+ IDS_SETTINGS_IBAN_SAVED_TO_THIS_DEVICE_ONLY},
+ {"addIbanTitle", IDS_SETTINGS_ADD_IBAN_TITLE},
+ {"editIbanTitle", IDS_SETTINGS_EDIT_IBAN_TITLE},
+ {"ibanNickname", IDS_IBAN_NICKNAME},
+ {"moreActionsForIban", IDS_SETTINGS_AUTOFILL_MORE_ACTIONS_FOR_IBAN},
+ {"a11yIbanDescription", IDS_SETTINGS_AUTOFILL_A11Y_IBAN_DESCRIPTION},
+ {"editIban", IDS_SETTINGS_IBAN_EDIT},
+ {"removeLocalIbanConfirmationTitle",
+ IDS_SETTINGS_LOCAL_IBAN_REMOVE_CONFIRMATION_TITLE},
+ {"migrateCreditCardsLabel", IDS_SETTINGS_MIGRATABLE_CARDS_LABEL},
+ {"migratableCardsInfoSingle", IDS_SETTINGS_SINGLE_MIGRATABLE_CARD_INFO},
+ {"migratableCardsInfoMultiple",
+ IDS_SETTINGS_MULTIPLE_MIGRATABLE_CARDS_INFO},
+ {"remotePaymentMethodsLinkLabel",
+ IDS_SETTINGS_REMOTE_PAYMENT_METHODS_LINK_LABEL},
+ {"canMakePaymentToggleLabel", IDS_SETTINGS_CAN_MAKE_PAYMENT_TOGGLE_LABEL},
+ {"autofillDetail", IDS_SETTINGS_AUTOFILL_DETAIL},
+ {"passwords", IDS_SETTINGS_PASSWORD_MANAGER},
+ {"passwordsLeakDetectionLabel",
+ IDS_SETTINGS_PASSWORDS_LEAK_DETECTION_LABEL},
+ {"passwordsLeakDetectionLabelUpdated",
+ IDS_SETTINGS_PASSWORDS_LEAK_DETECTION_LABEL_UPDATED},
+ {"passwordsLeakDetectionGeneralDescription",
+ IDS_PASSWORD_MANAGER_LEAK_HELP_MESSAGE},
+ {"passwordsLeakDetectionGeneralDescriptionUpdated",
+ IDS_PASSWORD_MANAGER_LEAK_HELP_MESSAGE_UPDATED},
+ {"passwordsLeakDetectionSignedOutEnabledDescription",
+ IDS_SETTINGS_PASSWORDS_LEAK_DETECTION_SIGNED_OUT_ENABLED_DESC},
+ {"editPasskeySiteLabel", IDS_SETTINGS_PASSKEYS_SITE_LABEL},
+ {"editPasskeyUsernameLabel",
+ IDS_SETTINGS_SECURITY_KEYS_CREDENTIAL_USERNAME_LABEL},
#if BUILDFLAG(IS_MAC)
- {"passkeyLengthError", IDS_SETTINGS_PASSKEYS_LENGTH_ERROR},
- {"editPasskeyDialogTitle", IDS_SETTINGS_PASSKEYS_DIALOG_TITLE},
- {"passkeyEditDialogFootnote", IDS_SETTINGS_PASSKEYS_EDIT_DIALOG_FOOTNOTE},
-#endif
- {"noAddressesFound", IDS_SETTINGS_ADDRESS_NONE},
- {"noSearchResults", IDS_SEARCH_NO_RESULTS},
- {"searchResultsPlural", IDS_SEARCH_RESULTS_PLURAL},
- {"searchResultsSingular", IDS_SEARCH_RESULTS_SINGULAR},
- {"addVirtualCard", IDS_AUTOFILL_ADD_VIRTUAL_CARD},
- {"savedToThisDeviceOnly", IDS_SETTINGS_PAYMENTS_SAVED_TO_THIS_DEVICE_ONLY},
- {"localPasswordManager",
- IDS_PASSWORD_BUBBLES_PASSWORD_MANAGER_LINK_TEXT_SAVING_ON_DEVICE},
- {"removeVirtualCard", IDS_AUTOFILL_REMOVE_VIRTUAL_CARD},
- {"editServerCard", IDS_AUTOFILL_EDIT_SERVER_CREDIT_CARD},
- {"virtualCardTurnedOn", IDS_AUTOFILL_VIRTUAL_CARD_TURNED_ON_LABEL},
- {"unenrollVirtualCardDialogTitle",
- IDS_AUTOFILL_VIRTUAL_CARD_UNENROLL_DIALOG_TITLE},
- {"unenrollVirtualCardDialogConfirm",
- IDS_AUTOFILL_VIRTUAL_CARD_UNENROLL_DIALOG_CONFIRM_BUTTON_LABEL},
+ {"passkeyLengthError", IDS_SETTINGS_PASSKEYS_LENGTH_ERROR},
+ {"editPasskeyDialogTitle", IDS_SETTINGS_PASSKEYS_DIALOG_TITLE},
+ {"passkeyEditDialogFootnote", IDS_SETTINGS_PASSKEYS_EDIT_DIALOG_FOOTNOTE},
+#endif
+ {"noAddressesFound", IDS_SETTINGS_ADDRESS_NONE},
+ {"noSearchResults", IDS_SEARCH_NO_RESULTS},
+ {"searchResultsPlural", IDS_SEARCH_RESULTS_PLURAL},
+ {"searchResultsSingular", IDS_SEARCH_RESULTS_SINGULAR},
+ {"addVirtualCard", IDS_AUTOFILL_ADD_VIRTUAL_CARD},
+ {"savedToThisDeviceOnly",
+ IDS_SETTINGS_PAYMENTS_SAVED_TO_THIS_DEVICE_ONLY},
+ {"localPasswordManager",
+ IDS_PASSWORD_BUBBLES_PASSWORD_MANAGER_LINK_TEXT_SAVING_ON_DEVICE},
+ {"removeVirtualCard", IDS_AUTOFILL_REMOVE_VIRTUAL_CARD},
+ {"editServerCard", IDS_AUTOFILL_EDIT_SERVER_CREDIT_CARD},
+ {"virtualCardTurnedOn", IDS_AUTOFILL_VIRTUAL_CARD_TURNED_ON_LABEL},
+ {"unenrollVirtualCardDialogTitle",
+ IDS_AUTOFILL_VIRTUAL_CARD_UNENROLL_DIALOG_TITLE},
+ {"unenrollVirtualCardDialogConfirm",
+ IDS_AUTOFILL_VIRTUAL_CARD_UNENROLL_DIALOG_CONFIRM_BUTTON_LABEL},
#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC)
- {"managePasskeysLabel", IDS_AUTOFILL_MANAGE_PASSKEYS_LABEL},
- {"managePasskeysTitle", IDS_AUTOFILL_MANAGE_PASSKEYS_TITLE},
- {"managePasskeysSearch", IDS_AUTOFILL_MANAGE_PASSKEYS_SEARCH},
- {"managePasskeysNoSupport", IDS_AUTOFILL_MANAGE_PASSKEYS_NO_SUPPORT},
- {"managePasskeysCannotDeleteTitle",
- IDS_AUTOFILL_MANAGE_PASSKEYS_CANNOT_DELETE_TITLE},
- {"managePasskeysCannotDeleteBody",
- IDS_AUTOFILL_MANAGE_PASSKEYS_CANNOT_DELETE_BODY},
- {"managePasskeysDeleteConfirmationTitle",
- IDS_AUTOFILL_MANAGE_PASSKEYS_DELETE_CONFIRMATION_TITLE},
- {"managePasskeysDeleteConfirmationDescription",
- IDS_AUTOFILL_MANAGE_PASSKEYS_DELETE_CONFIRMATION_DESCRIPTION},
- {"managePasskeysMoreActionsLabel",
- IDS_AUTOFILL_MANAGE_PASSKEYS_MORE_ACTIONS_LABEL},
+ {"managePasskeysLabel", IDS_AUTOFILL_MANAGE_PASSKEYS_LABEL},
+ {"managePasskeysTitle", IDS_AUTOFILL_MANAGE_PASSKEYS_TITLE},
+ {"managePasskeysSearch", IDS_AUTOFILL_MANAGE_PASSKEYS_SEARCH},
+ {"managePasskeysNoSupport", IDS_AUTOFILL_MANAGE_PASSKEYS_NO_SUPPORT},
+ {"managePasskeysCannotDeleteTitle",
+ IDS_AUTOFILL_MANAGE_PASSKEYS_CANNOT_DELETE_TITLE},
+ {"managePasskeysCannotDeleteBody",
+ IDS_AUTOFILL_MANAGE_PASSKEYS_CANNOT_DELETE_BODY},
+ {"managePasskeysDeleteConfirmationTitle",
+ IDS_AUTOFILL_MANAGE_PASSKEYS_DELETE_CONFIRMATION_TITLE},
+ {"managePasskeysDeleteConfirmationDescription",
+ IDS_AUTOFILL_MANAGE_PASSKEYS_DELETE_CONFIRMATION_DESCRIPTION},
+ {"managePasskeysMoreActionsLabel",
+ IDS_AUTOFILL_MANAGE_PASSKEYS_MORE_ACTIONS_LABEL},
#endif
#if BUILDFLAG(IS_MAC)
- {"biometricAuthenticaionForFillingLabel",
- IDS_SETTINGS_PASSWORDS_BIOMETRIC_AUTHENTICATION_FOR_FILLING_TOGGLE_LABEL_MAC},
- {"managePasskeysSubTitle", IDS_AUTOFILL_MANAGE_PASSKEYS_SUB_TITLE_MAC},
+ {"biometricAuthenticaionForFillingLabel",
+ IDS_SETTINGS_PASSWORDS_BIOMETRIC_AUTHENTICATION_FOR_FILLING_TOGGLE_LABEL_MAC},
+ {"managePasskeysSubTitle", IDS_AUTOFILL_MANAGE_PASSKEYS_SUB_TITLE_MAC},
#elif BUILDFLAG(IS_WIN)
- {"biometricAuthenticaionForFillingLabel",
- IDS_SETTINGS_PASSWORDS_BIOMETRIC_AUTHENTICATION_FOR_FILLING_TOGGLE_LABEL_WIN},
- {"managePasskeysSubTitle", IDS_AUTOFILL_MANAGE_PASSKEYS_SUB_TITLE_WIN},
-#endif
- {"plusAddressSettings", IDS_PLUS_ADDRESS_SETTINGS_LABEL},
- {"cvcTagForCreditCardListEntry",
- IDS_AUTOFILL_SETTINGS_PAGE_CVC_TAG_FOR_CREDIT_CARD_LIST_ENTRY},
+ {"biometricAuthenticaionForFillingLabel",
+ IDS_SETTINGS_PASSWORDS_BIOMETRIC_AUTHENTICATION_FOR_FILLING_TOGGLE_LABEL_WIN},
+ {"managePasskeysSubTitle", IDS_AUTOFILL_MANAGE_PASSKEYS_SUB_TITLE_WIN},
+#endif
+ {"plusAddressSettings", IDS_PLUS_ADDRESS_SETTINGS_LABEL},
+ {"cvcTagForCreditCardListEntry",
+ IDS_AUTOFILL_SETTINGS_PAGE_CVC_TAG_FOR_CREDIT_CARD_LIST_ENTRY},
+ {"aiPageTitle", IDS_SETTINGS_AI_PAGE_TITLE},
+ {"aiPageMainLabel", IDS_SETTINGS_AI_PAGE_MAIN_LABEL},
+ {"aiPageMainSublabel", IDS_SETTINGS_AI_PAGE_MAIN_SUBLABEL},
+ {"aiComposeLabel", IDS_SETTINGS_AI_COMPOSE_LABEL},
+ {"aiComposeSublabel", IDS_SETTINGS_AI_COMPOSE_SUBLABEL},
+ {"experimentalAdvancedFeature2Label",
+ IDS_SETTINGS_EXPERIMENTAL_ADVANCED_FEATURE2_LABEL},
+ {"experimentalAdvancedFeature2Sublabel",
+ IDS_SETTINGS_EXPERIMENTAL_ADVANCED_FEATURE2_SUBLABEL},
+ {"experimentalAdvancedFeature3Label",
+ IDS_SETTINGS_EXPERIMENTAL_ADVANCED_FEATURE3_LABEL},
+ {"experimentalAdvancedFeature3Sublabel",
+ IDS_SETTINGS_EXPERIMENTAL_ADVANCED_FEATURE3_SUBLABEL},
};
GURL google_password_manager_url = GetGooglePasswordManagerURL(
@@ -1147,10 +1189,8 @@ void AddAutofillStrings(content::WebUIDataSource* html_source,
"manageCreditCardsLabel",
l10n_util::GetStringFUTF16(
IDS_SETTINGS_PAYMENTS_MANAGE_CREDIT_CARDS,
- base::FeatureList::IsEnabled(
- autofill::features::kAutofillUpdateChromeSettingsLinkToGPayWeb)
- ? chrome::kPaymentMethodsURLForGPayWeb
- : chrome::kPaymentMethodsURL));
+ base::UTF8ToUTF16(
+ autofill::payments::GetManageInstrumentsUrl().spec())));
html_source->AddString("managePaymentMethodsUrl",
autofill::payments::GetManageInstrumentsUrl().spec());
html_source->AddString("addressesAndPaymentMethodsLearnMoreURL",
@@ -1206,12 +1246,6 @@ void AddAutofillStrings(content::WebUIDataSource* html_source,
"undoDescription",
l10n_util::GetStringFUTF16(IDS_UNDO_DESCRIPTION,
undo_accelerator.GetShortcutText()));
-
- html_source->AddBoolean(
- "showHonorific",
- base::FeatureList::IsEnabled(
- autofill::features::kAutofillEnableSupportForHonorificPrefixes));
-
html_source->AddString(
"unenrollVirtualCardDialogLabel",
l10n_util::GetStringFUTF16(
@@ -1223,11 +1257,6 @@ void AddAutofillStrings(content::WebUIDataSource* html_source,
html_source->AddLocalizedStrings(kLocalizedStrings);
html_source->AddBoolean(
- "autofillAccountProfileStorage",
- base::FeatureList::IsEnabled(
- autofill::features::kAutofillAccountProfileStorage));
-
- html_source->AddBoolean(
"syncEnableContactInfoDataTypeInTransportMode",
base::FeatureList::IsEnabled(
syncer::kSyncEnableContactInfoDataTypeInTransportMode));
@@ -1309,19 +1338,21 @@ void AddSignOutDialogStrings(content::WebUIDataSource* html_source,
void AddSyncAccountControlStrings(content::WebUIDataSource* html_source) {
static constexpr webui::LocalizedString kLocalizedStrings[] = {
- {"syncingTo", IDS_SETTINGS_PEOPLE_SYNCING_TO_ACCOUNT},
- {"peopleSignIn", IDS_PROFILES_DICE_SIGNIN_BUTTON},
- {"syncPaused", IDS_SETTINGS_PEOPLE_SYNC_PAUSED},
- {"turnOffSync", IDS_SETTINGS_PEOPLE_SYNC_TURN_OFF},
- {"settingsCheckboxLabel", IDS_SETTINGS_SETTINGS_CHECKBOX_LABEL},
- {"syncNotWorking", IDS_SETTINGS_PEOPLE_SYNC_NOT_WORKING},
- {"syncDisabled", IDS_PROFILES_DICE_SYNC_DISABLED_TITLE},
- {"syncPasswordsNotWorking", IDS_SETTINGS_PEOPLE_SYNC_PASSWORDS_NOT_WORKING},
- {"peopleSignOut", IDS_SETTINGS_PEOPLE_SIGN_OUT},
- {"useAnotherAccount", IDS_SETTINGS_PEOPLE_SYNC_ANOTHER_ACCOUNT},
+ {"signedInTo", IDS_SETTINGS_PEOPLE_SIGNED_IN_TO_ACCOUNT},
+ {"syncingTo", IDS_SETTINGS_PEOPLE_SYNCING_TO_ACCOUNT},
+ {"peopleSignIn", IDS_PROFILES_DICE_SIGNIN_BUTTON},
+ {"syncPaused", IDS_SETTINGS_PEOPLE_SYNC_PAUSED},
+ {"turnOffSync", IDS_SETTINGS_PEOPLE_SYNC_TURN_OFF},
+ {"settingsCheckboxLabel", IDS_SETTINGS_SETTINGS_CHECKBOX_LABEL},
+ {"syncNotWorking", IDS_SETTINGS_PEOPLE_SYNC_NOT_WORKING},
+ {"syncDisabled", IDS_PROFILES_DICE_SYNC_DISABLED_TITLE},
+ {"syncPasswordsNotWorking",
+ IDS_SETTINGS_PEOPLE_SYNC_PASSWORDS_NOT_WORKING},
+ {"peopleSignOut", IDS_SETTINGS_PEOPLE_SIGN_OUT},
+ {"useAnotherAccount", IDS_SETTINGS_PEOPLE_SYNC_ANOTHER_ACCOUNT},
#if !BUILDFLAG(IS_CHROMEOS_LACROS)
- {"syncAdvancedPageTitle", IDS_SETTINGS_NEW_SYNC_ADVANCED_PAGE_TITLE},
+ {"syncAdvancedPageTitle", IDS_SETTINGS_NEW_SYNC_ADVANCED_PAGE_TITLE},
#endif
};
@@ -1339,62 +1370,64 @@ void AddSyncAccountControlStrings(content::WebUIDataSource* html_source) {
void AddPersonalizationOptionsStrings(content::WebUIDataSource* html_source) {
static constexpr webui::LocalizedString kLocalizedStrings[] = {
- {"urlKeyedAnonymizedDataCollection",
- IDS_SETTINGS_ENABLE_URL_KEYED_ANONYMIZED_DATA_COLLECTION},
- {"urlKeyedAnonymizedDataCollectionDesc",
- IDS_SETTINGS_ENABLE_URL_KEYED_ANONYMIZED_DATA_COLLECTION_DESC},
- {"spellingPref", IDS_SETTINGS_SPELLING_PREF},
+ {"urlKeyedAnonymizedDataCollection",
+ IDS_SETTINGS_ENABLE_URL_KEYED_ANONYMIZED_DATA_COLLECTION},
+ {"urlKeyedAnonymizedDataCollectionDesc",
+ IDS_SETTINGS_ENABLE_URL_KEYED_ANONYMIZED_DATA_COLLECTION_DESC},
+ {"spellingPref", IDS_SETTINGS_SPELLING_PREF},
#if !BUILDFLAG(IS_CHROMEOS)
- {"signinAllowedTitle", IDS_SETTINGS_SIGNIN_ALLOWED},
- {"signinAllowedDescription", IDS_SETTINGS_SIGNIN_ALLOWED_DESC},
-#endif
- {"enablePersonalizationLogging", IDS_SETTINGS_ENABLE_LOGGING_PREF},
- {"enablePersonalizationLoggingDesc", IDS_SETTINGS_ENABLE_LOGGING_PREF_DESC},
- {"spellingDescription", IDS_SETTINGS_SPELLING_PREF_DESC},
- {"searchSuggestPrefDesc", IDS_SETTINGS_SUGGEST_PREF_DESC},
- {"linkDoctorPref", IDS_SETTINGS_LINKDOCTOR_PREF},
- {"linkDoctorPrefDesc", IDS_SETTINGS_LINKDOCTOR_PREF_DESC},
- {"searchSuggestPref", IDS_SETTINGS_SUGGEST_PREF},
- {"driveSuggestPref", IDS_SETTINGS_DRIVE_SUGGEST_PREF},
- {"driveSuggestPrefDesc", IDS_SETTINGS_DRIVE_SUGGEST_PREF_DESC},
- {"priceEmailNotificationsPref", IDS_PRICE_TRACKING_SETTINGS_TITLE},
- {"priceEmailNotificationsPrefDesc",
- IDS_PRICE_TRACKING_SETTINGS_EMAIL_DESCRIPTION},
- {"pageContentLinkRowSublabelOn",
- IDS_SETTINGS_PAGE_CONTENT_LINK_ROW_SUBLABEL_ON},
- {"pageContentLinkRowSublabelOff",
- IDS_SETTINGS_PAGE_CONTENT_LINK_ROW_SUBLABEL_OFF},
- {"pageContentPageTitle", IDS_SETTINGS_PAGE_CONTENT_PAGE_TITLE},
- {"pageContentToggleLabel", IDS_SETTINGS_PAGE_CONTENT_TOGGLE_LABEL},
- {"pageContentToggleSublabel", IDS_SETTINGS_PAGE_CONTENT_TOGGLE_SUBLABEL},
- {"pageContentWhenOnBulletOne",
- IDS_SETTINGS_PAGE_CONTENT_WHEN_ON_BULLET_ONE},
- {"pageContentThingsToConsiderBulletOne",
- IDS_SETTINGS_PAGE_CONTENT_THINGS_TO_CONSIDER_BULLET_ONE},
- {"pageContentThingsToConsiderBulletTwo",
- IDS_SETTINGS_PAGE_CONTENT_THINGS_TO_CONSIDER_BULLET_TWO},
- {"pageContentThingsToConsiderBulletThree",
- IDS_SETTINGS_PAGE_CONTENT_THINGS_TO_CONSIDER_BULLET_THREE},
+ {"signinAllowedTitle", IDS_SETTINGS_SIGNIN_ALLOWED},
+ {"signinAllowedDescription", IDS_SETTINGS_SIGNIN_ALLOWED_DESC},
+#endif
+ {"enablePersonalizationLogging", IDS_SETTINGS_ENABLE_LOGGING_PREF},
+ {"enablePersonalizationLoggingDesc",
+ IDS_SETTINGS_ENABLE_LOGGING_PREF_DESC},
+ {"spellingDescription", IDS_SETTINGS_SPELLING_PREF_DESC},
+ {"searchSuggestPrefDesc", IDS_SETTINGS_SUGGEST_PREF_DESC},
+ {"linkDoctorPref", IDS_SETTINGS_LINKDOCTOR_PREF},
+ {"linkDoctorPrefDesc", IDS_SETTINGS_LINKDOCTOR_PREF_DESC},
+ {"searchSuggestPref", IDS_SETTINGS_SUGGEST_PREF},
+ {"driveSuggestPref", IDS_SETTINGS_DRIVE_SUGGEST_PREF},
+ {"driveSuggestPrefDesc", IDS_SETTINGS_DRIVE_SUGGEST_PREF_DESC},
+ {"priceEmailNotificationsPref", IDS_PRICE_TRACKING_SETTINGS_TITLE},
+ {"priceEmailNotificationsPrefDesc",
+ IDS_PRICE_TRACKING_SETTINGS_EMAIL_DESCRIPTION},
+ {"pageContentLinkRowSublabelOn",
+ IDS_SETTINGS_PAGE_CONTENT_LINK_ROW_SUBLABEL_ON},
+ {"pageContentLinkRowSublabelOff",
+ IDS_SETTINGS_PAGE_CONTENT_LINK_ROW_SUBLABEL_OFF},
+ {"pageContentPageTitle", IDS_SETTINGS_PAGE_CONTENT_PAGE_TITLE},
+ {"pageContentToggleLabel", IDS_SETTINGS_PAGE_CONTENT_TOGGLE_LABEL},
+ {"pageContentToggleSublabel", IDS_SETTINGS_PAGE_CONTENT_TOGGLE_SUBLABEL},
+ {"pageContentWhenOnBulletOne",
+ IDS_SETTINGS_PAGE_CONTENT_WHEN_ON_BULLET_ONE},
+ {"pageContentThingsToConsiderBulletOne",
+ IDS_SETTINGS_PAGE_CONTENT_THINGS_TO_CONSIDER_BULLET_ONE},
+ {"pageContentThingsToConsiderBulletTwo",
+ IDS_SETTINGS_PAGE_CONTENT_THINGS_TO_CONSIDER_BULLET_TWO},
+ {"pageContentThingsToConsiderBulletThree",
+ IDS_SETTINGS_PAGE_CONTENT_THINGS_TO_CONSIDER_BULLET_THREE},
};
html_source->AddLocalizedStrings(kLocalizedStrings);
}
void AddBrowserSyncPageStrings(content::WebUIDataSource* html_source) {
static constexpr webui::LocalizedString kLocalizedStrings[] = {
- {"peopleSignInSyncPagePromptSecondaryWithAccount",
- IDS_SETTINGS_PEOPLE_SIGN_IN_PROMPT_SECONDARY_WITH_ACCOUNT},
- {"peopleSignInSyncPagePromptSecondaryWithNoAccount",
- IDS_SETTINGS_PEOPLE_SIGN_IN_PROMPT_SECONDARY_WITH_ACCOUNT},
- {"bookmarksCheckboxLabel", IDS_SETTINGS_BOOKMARKS_CHECKBOX_LABEL},
- {"readingListCheckboxLabel", IDS_SETTINGS_READING_LIST_CHECKBOX_LABEL},
- {"cancelSync", IDS_SETTINGS_SYNC_SETTINGS_CANCEL_SYNC},
- {"syncSetupCancelDialogTitle", IDS_SETTINGS_SYNC_SETUP_CANCEL_DIALOG_TITLE},
- {"syncSetupCancelDialogBody", IDS_SETTINGS_SYNC_SETUP_CANCEL_DIALOG_BODY},
- {"personalizeGoogleServicesTitle",
- IDS_SETTINGS_PERSONALIZE_GOOGLE_SERVICES_TITLE},
- {"themeCheckboxLabel", IDS_SETTINGS_THEME_CHECKBOX_LABEL},
+ {"peopleSignInSyncPagePromptSecondaryWithAccount",
+ IDS_SETTINGS_PEOPLE_SIGN_IN_PROMPT_SECONDARY_WITH_ACCOUNT},
+ {"peopleSignInSyncPagePromptSecondaryWithNoAccount",
+ IDS_SETTINGS_PEOPLE_SIGN_IN_PROMPT_SECONDARY_WITH_ACCOUNT},
+ {"bookmarksCheckboxLabel", IDS_SETTINGS_BOOKMARKS_CHECKBOX_LABEL},
+ {"readingListCheckboxLabel", IDS_SETTINGS_READING_LIST_CHECKBOX_LABEL},
+ {"cancelSync", IDS_SETTINGS_SYNC_SETTINGS_CANCEL_SYNC},
+ {"syncSetupCancelDialogTitle",
+ IDS_SETTINGS_SYNC_SETUP_CANCEL_DIALOG_TITLE},
+ {"syncSetupCancelDialogBody", IDS_SETTINGS_SYNC_SETUP_CANCEL_DIALOG_BODY},
+ {"personalizeGoogleServicesTitle",
+ IDS_SETTINGS_PERSONALIZE_GOOGLE_SERVICES_TITLE},
+ {"themeCheckboxLabel", IDS_SETTINGS_THEME_CHECKBOX_LABEL},
#if BUILDFLAG(IS_CHROMEOS)
- {"browserSyncFeatureLabel", IDS_BROWSER_SETTINGS_SYNC_FEATURE_LABEL},
+ {"browserSyncFeatureLabel", IDS_BROWSER_SETTINGS_SYNC_FEATURE_LABEL},
#endif
};
html_source->AddLocalizedStrings(kLocalizedStrings);
@@ -1437,85 +1470,86 @@ void AddBrowserSyncPageStrings(content::WebUIDataSource* html_source) {
void AddSyncControlsStrings(content::WebUIDataSource* html_source) {
static constexpr webui::LocalizedString kLocalizedStrings[] = {
- {"autofillCheckboxLabel", IDS_SETTINGS_AUTOFILL_CHECKBOX_LABEL},
- {"historyCheckboxLabel", IDS_SETTINGS_HISTORY_CHECKBOX_LABEL},
- {"extensionsCheckboxLabel", IDS_SETTINGS_EXTENSIONS_CHECKBOX_LABEL},
- {"openTabsCheckboxLabel", IDS_SETTINGS_OPEN_TABS_CHECKBOX_LABEL},
- {"savedTabGroupsCheckboxLabel",
- IDS_SETTINGS_SAVED_TAB_GROUPS_CHECKBOX_LABEL},
- {"wifiConfigurationsCheckboxLabel",
- IDS_SETTINGS_WIFI_CONFIGURATIONS_CHECKBOX_LABEL},
- {"syncEverythingCheckboxLabel",
- IDS_SETTINGS_SYNC_EVERYTHING_CHECKBOX_LABEL},
- {"appCheckboxLabel", IDS_SETTINGS_APPS_CHECKBOX_LABEL},
+ {"autofillCheckboxLabel", IDS_SETTINGS_AUTOFILL_CHECKBOX_LABEL},
+ {"historyCheckboxLabel", IDS_SETTINGS_HISTORY_CHECKBOX_LABEL},
+ {"extensionsCheckboxLabel", IDS_SETTINGS_EXTENSIONS_CHECKBOX_LABEL},
+ {"openTabsCheckboxLabel", IDS_SETTINGS_OPEN_TABS_CHECKBOX_LABEL},
+ {"savedTabGroupsCheckboxLabel",
+ IDS_SETTINGS_SAVED_TAB_GROUPS_CHECKBOX_LABEL},
+ {"wifiConfigurationsCheckboxLabel",
+ IDS_SETTINGS_WIFI_CONFIGURATIONS_CHECKBOX_LABEL},
+ {"syncEverythingCheckboxLabel",
+ IDS_SETTINGS_SYNC_EVERYTHING_CHECKBOX_LABEL},
+ {"appCheckboxLabel", IDS_SETTINGS_APPS_CHECKBOX_LABEL},
#if BUILDFLAG(IS_CHROMEOS_LACROS)
- {"appCheckboxSublabel", IDS_SETTINGS_APPS_CHECKBOX_SUBLABEL},
+ {"appCheckboxSublabel", IDS_SETTINGS_APPS_CHECKBOX_SUBLABEL},
#endif
- {"paymentsCheckboxLabel", IDS_SYNC_DATATYPE_PAYMENTS},
- {"nonPersonalizedServicesSectionLabel",
- IDS_SETTINGS_NON_PERSONALIZED_SERVICES_SECTION_LABEL},
- {"customizeSyncLabel", IDS_SETTINGS_CUSTOMIZE_SYNC},
- {"syncData", IDS_SETTINGS_SYNC_DATA},
+ {"paymentsCheckboxLabel", IDS_SYNC_DATATYPE_PAYMENTS},
+ {"nonPersonalizedServicesSectionLabel",
+ IDS_SETTINGS_NON_PERSONALIZED_SERVICES_SECTION_LABEL},
+ {"customizeSyncLabel", IDS_SETTINGS_CUSTOMIZE_SYNC},
+ {"syncData", IDS_SETTINGS_SYNC_DATA},
};
html_source->AddLocalizedStrings(kLocalizedStrings);
}
void AddPeopleStrings(content::WebUIDataSource* html_source, Profile* profile) {
static constexpr webui::LocalizedString kLocalizedStrings[] = {
- // Top level people strings:
- {"peopleSignInPromptSecondaryWithAccount",
- IDS_SETTINGS_PEOPLE_SIGN_IN_PROMPT_SECONDARY_WITH_ACCOUNT},
- {"peopleSignInPromptSecondaryWithNoAccount",
- IDS_SETTINGS_PEOPLE_SIGN_IN_PROMPT_SECONDARY_WITH_ACCOUNT},
- {"peoplePageTitle", IDS_SETTINGS_PEOPLE},
- {"syncSettingsSavedToast", IDS_SETTINGS_SYNC_SETTINGS_SAVED_TOAST_LABEL},
- {"peopleSignInPrompt", IDS_SETTINGS_PEOPLE_SIGN_IN_PROMPT},
- {"manageGoogleAccount", IDS_SETTINGS_MANAGE_GOOGLE_ACCOUNT},
- {"syncAndNonPersonalizedServices",
- IDS_SETTINGS_SYNC_SYNC_AND_NON_PERSONALIZED_SERVICES},
+ // Top level people strings:
+ {"peopleSignInPromptSecondaryWithAccount",
+ IDS_SETTINGS_PEOPLE_SIGN_IN_PROMPT_SECONDARY_WITH_ACCOUNT},
+ {"peopleSignInPromptSecondaryWithNoAccount",
+ IDS_SETTINGS_PEOPLE_SIGN_IN_PROMPT_SECONDARY_WITH_ACCOUNT},
+ {"peoplePageTitle", IDS_SETTINGS_PEOPLE},
+ {"syncSettingsSavedToast", IDS_SETTINGS_SYNC_SETTINGS_SAVED_TOAST_LABEL},
+ {"peopleSignInPrompt", IDS_SETTINGS_PEOPLE_SIGN_IN_PROMPT},
+ {"manageGoogleAccount", IDS_SETTINGS_MANAGE_GOOGLE_ACCOUNT},
+ {"syncAndNonPersonalizedServices",
+ IDS_SETTINGS_SYNC_SYNC_AND_NON_PERSONALIZED_SERVICES},
#if BUILDFLAG(IS_CHROMEOS_ASH)
- {"accountManagerSubMenuLabel", IDS_SETTINGS_ACCOUNT_MANAGER_SUBMENU_LABEL},
+ {"accountManagerSubMenuLabel",
+ IDS_SETTINGS_ACCOUNT_MANAGER_SUBMENU_LABEL},
#else
- {"editPerson", IDS_SETTINGS_CUSTOMIZE_PROFILE},
- {"profileNameAndPicture", IDS_SETTINGS_CUSTOMIZE_YOUR_CHROME_PROFILE},
+ {"editPerson", IDS_SETTINGS_CUSTOMIZE_PROFILE},
+ {"profileNameAndPicture", IDS_SETTINGS_CUSTOMIZE_YOUR_CHROME_PROFILE},
#endif
// Manage profile strings:
#if !BUILDFLAG(IS_CHROMEOS_ASH)
- {"showShortcutLabel", IDS_SETTINGS_PROFILE_SHORTCUT_TOGGLE_LABEL},
- {"nameInputLabel", IDS_SETTINGS_PROFILE_NAME_INPUT_LABEL},
- {"nameYourProfile", IDS_SETTING_NAME_YOUR_PROFILE},
- {"pickThemeColor", IDS_SETTINGS_PICK_A_THEME_COLOR},
- {"pickAvatar", IDS_SETTINGS_PICK_AN_AVATAR},
- {"createShortcutTitle", IDS_SETTINGS_CREATE_SHORTCUT},
- {"createShortcutSubtitle", IDS_SETTINGS_CREATE_SHORTCUT_SUBTITLE},
-
- // Color picker strings:
- {"colorsContainerLabel", IDS_NTP_THEMES_CONTAINER_LABEL},
- {"colorPickerLabel", IDS_NTP_CUSTOMIZE_COLOR_PICKER_LABEL},
- {"defaultColorName", IDS_NTP_CUSTOMIZE_DEFAULT_LABEL},
- {"defaultThemeLabel", IDS_NTP_CUSTOMIZE_DEFAULT_LABEL},
- {"greyDefaultColorName", IDS_NTP_CUSTOMIZE_GREY_DEFAULT_LABEL},
- {"hueSliderTitle", IDS_NTP_CUSTOMIZE_COLOR_HUE_SLIDER_TITLE},
- {"mainColorName", IDS_NTP_CUSTOMIZE_MAIN_COLOR_LABEL},
- {"managedColorsBody", IDS_NTP_THEME_MANAGED_DIALOG_BODY},
- {"managedColorsTitle", IDS_NTP_THEME_MANAGED_DIALOG_TITLE},
- {"themesContainerLabel", IDS_SETTINGS_PICK_A_THEME_COLOR},
- {"thirdPartyThemeDescription", IDS_NTP_CUSTOMIZE_3PT_THEME_DESC},
- {"uninstallThirdPartyThemeButton", IDS_NTP_CUSTOMIZE_3PT_THEME_UNINSTALL},
-
- // Managed theme dialog strings:
- {"themeManagedDialogTitle", IDS_NTP_THEME_MANAGED_DIALOG_TITLE},
- {"themeManagedDialogBody", IDS_NTP_THEME_MANAGED_DIALOG_BODY},
-#endif
- {"deleteProfileWarningExpandA11yLabel",
- IDS_SETTINGS_SYNC_DISCONNECT_EXPAND_ACCESSIBILITY_LABEL},
- {"deleteProfileWarningWithCountsSingular",
- IDS_SETTINGS_SYNC_DISCONNECT_DELETE_PROFILE_WARNING_WITH_COUNTS_SINGULAR},
- {"deleteProfileWarningWithCountsPlural",
- IDS_SETTINGS_SYNC_DISCONNECT_DELETE_PROFILE_WARNING_WITH_COUNTS_PLURAL},
- {"deleteProfileWarningWithoutCounts",
- IDS_SETTINGS_SYNC_DISCONNECT_DELETE_PROFILE_WARNING_WITHOUT_COUNTS},
+ {"showShortcutLabel", IDS_SETTINGS_PROFILE_SHORTCUT_TOGGLE_LABEL},
+ {"nameInputLabel", IDS_SETTINGS_PROFILE_NAME_INPUT_LABEL},
+ {"nameYourProfile", IDS_SETTING_NAME_YOUR_PROFILE},
+ {"pickThemeColor", IDS_SETTINGS_PICK_A_THEME_COLOR},
+ {"pickAvatar", IDS_SETTINGS_PICK_AN_AVATAR},
+ {"createShortcutTitle", IDS_SETTINGS_CREATE_SHORTCUT},
+ {"createShortcutSubtitle", IDS_SETTINGS_CREATE_SHORTCUT_SUBTITLE},
+
+ // Color picker strings:
+ {"colorsContainerLabel", IDS_NTP_THEMES_CONTAINER_LABEL},
+ {"colorPickerLabel", IDS_NTP_CUSTOMIZE_COLOR_PICKER_LABEL},
+ {"defaultColorName", IDS_NTP_CUSTOMIZE_DEFAULT_LABEL},
+ {"defaultThemeLabel", IDS_NTP_CUSTOMIZE_DEFAULT_LABEL},
+ {"greyDefaultColorName", IDS_NTP_CUSTOMIZE_GREY_DEFAULT_LABEL},
+ {"hueSliderTitle", IDS_NTP_CUSTOMIZE_COLOR_HUE_SLIDER_TITLE},
+ {"mainColorName", IDS_NTP_CUSTOMIZE_MAIN_COLOR_LABEL},
+ {"managedColorsBody", IDS_NTP_THEME_MANAGED_DIALOG_BODY},
+ {"managedColorsTitle", IDS_NTP_THEME_MANAGED_DIALOG_TITLE},
+ {"themesContainerLabel", IDS_SETTINGS_PICK_A_THEME_COLOR},
+ {"thirdPartyThemeDescription", IDS_NTP_CUSTOMIZE_3PT_THEME_DESC},
+ {"uninstallThirdPartyThemeButton", IDS_NTP_CUSTOMIZE_3PT_THEME_UNINSTALL},
+
+ // Managed theme dialog strings:
+ {"themeManagedDialogTitle", IDS_NTP_THEME_MANAGED_DIALOG_TITLE},
+ {"themeManagedDialogBody", IDS_NTP_THEME_MANAGED_DIALOG_BODY},
+#endif
+ {"deleteProfileWarningExpandA11yLabel",
+ IDS_SETTINGS_SYNC_DISCONNECT_EXPAND_ACCESSIBILITY_LABEL},
+ {"deleteProfileWarningWithCountsSingular",
+ IDS_SETTINGS_SYNC_DISCONNECT_DELETE_PROFILE_WARNING_WITH_COUNTS_SINGULAR},
+ {"deleteProfileWarningWithCountsPlural",
+ IDS_SETTINGS_SYNC_DISCONNECT_DELETE_PROFILE_WARNING_WITH_COUNTS_PLURAL},
+ {"deleteProfileWarningWithoutCounts",
+ IDS_SETTINGS_SYNC_DISCONNECT_DELETE_PROFILE_WARNING_WITHOUT_COUNTS},
};
html_source->AddLocalizedStrings(kLocalizedStrings);
@@ -1545,6 +1579,12 @@ void AddPeopleStrings(content::WebUIDataSource* html_source, Profile* profile) {
// Toggles the Chrome OS Account Manager submenu in the People section.
html_source->AddBoolean("isAccountManagerEnabled",
ash::IsAccountManagerAvailable(profile));
+ html_source->AddString(
+ "osSettingsAccountsPageUrl",
+ ash::features::IsOsSettingsRevampWayfindingEnabled()
+ ? BuildOSSettingsUrl(chromeos::settings::mojom::kPeopleSectionPath)
+ : BuildOSSettingsUrl(
+ chromeos::settings::mojom::kMyAccountsSubpagePath));
#elif BUILDFLAG(IS_CHROMEOS_LACROS)
html_source->AddBoolean(
"isAccountManagerEnabled",
@@ -1576,174 +1616,191 @@ bool IsSecureDnsAvailable() {
void AddPrivacyStrings(content::WebUIDataSource* html_source,
Profile* profile) {
static constexpr webui::LocalizedString kLocalizedStrings[] = {
- {"privacyPageTitle", IDS_SETTINGS_PRIVACY},
- {"privacyPageMore", IDS_SETTINGS_PRIVACY_MORE},
- {"doNotTrack", IDS_SETTINGS_ENABLE_DO_NOT_TRACK},
- {"doNotTrackDialogTitle", IDS_SETTINGS_ENABLE_DO_NOT_TRACK_DIALOG_TITLE},
- // TODO(crbug.com/1062607): This string is no longer used. Remove.
- {"permissionsPageTitle", IDS_SETTINGS_PERMISSIONS},
- {"permissionsPageDescription", IDS_SETTINGS_PERMISSIONS_DESCRIPTION},
- {"securityPageTitle", IDS_SETTINGS_SECURITY},
- {"securityPageDescription", IDS_SETTINGS_SECURITY_DESCRIPTION},
- {"advancedProtectionProgramTitle",
- IDS_SETTINGS_ADVANCED_PROTECTION_PROGRAM},
- {"advancedProtectionProgramDesc",
- IDS_SETTINGS_ADVANCED_PROTECTION_PROGRAM_DESC},
- {"httpsOnlyModeTitle", IDS_SETTINGS_HTTPS_ONLY_MODE},
- {"httpsOnlyModeDescription", IDS_SETTINGS_HTTPS_ONLY_MODE_DESCRIPTION},
- {"httpsOnlyModeDescriptionAdvancedProtection",
- IDS_SETTINGS_HTTPS_ONLY_MODE_DESCRIPTION_ADVANCED_PROTECTION},
- {"manageCertificates", IDS_SETTINGS_MANAGE_CERTIFICATES},
- {"manageCertificatesDescription",
- IDS_SETTINGS_MANAGE_CERTIFICATES_DESCRIPTION},
- {"contentSettings", IDS_SETTINGS_CONTENT_SETTINGS},
- {"siteSettings", IDS_SETTINGS_SITE_SETTINGS},
- {"siteSettingsDescription", IDS_SETTINGS_SITE_SETTINGS_DESCRIPTION},
- {"clearData", IDS_SETTINGS_CLEAR_DATA},
- {"clearingData", IDS_SETTINGS_CLEARING_DATA},
- {"clearedData", IDS_SETTINGS_CLEARED_DATA},
- {"clearBrowsingData", IDS_SETTINGS_CLEAR_BROWSING_DATA},
- {"clearBrowsingDataDescription", IDS_SETTINGS_CLEAR_DATA_DESCRIPTION},
- {"titleAndCount", IDS_SETTINGS_TITLE_AND_COUNT},
- {"safeBrowsingEnableExtendedReportingDesc",
- IDS_SETTINGS_SAFEBROWSING_ENABLE_REPORTING_DESC},
- {"safeBrowsingEnhanced", IDS_SETTINGS_SAFEBROWSING_ENHANCED},
- {"safeBrowsingEnhancedDesc", IDS_SETTINGS_SAFEBROWSING_ENHANCED_DESC},
- {"safeBrowsingEnhancedDescUpdated",
- IDS_SETTINGS_SAFEBROWSING_ENHANCED_DESC_UPDATED},
- {"safeBrowsingEnhancedExpandA11yLabel",
- IDS_SETTINGS_SAFEBROWSING_ENHANCED_EXPAND_ACCESSIBILITY_LABEL},
- {"safeBrowsingEnhancedBulOne",
- IDS_SETTINGS_SAFEBROWSING_ENHANCED_BULLET_ONE},
- {"safeBrowsingEnhancedBulTwo",
- IDS_SETTINGS_SAFEBROWSING_ENHANCED_BULLET_TWO},
- {"safeBrowsingEnhancedBulThree",
- IDS_SETTINGS_SAFEBROWSING_ENHANCED_BULLET_THREE},
- {"safeBrowsingEnhancedBulFour",
- IDS_SETTINGS_SAFEBROWSING_ENHANCED_BULLET_FOUR},
- {"safeBrowsingEnhancedBulFive",
- IDS_SETTINGS_SAFEBROWSING_ENHANCED_BULLET_FIVE},
- {"safeBrowsingEnhancedWhenOnLabel",
- IDS_SETTINGS_SAFEBROWSING_ENHANCED_WHEN_ON_LABEL},
- {"safeBrowsingEnhancedWhenOnBulOne",
- IDS_SETTINGS_SAFEBROWSING_ENHANCED_WHEN_ON_BULLET_ONE},
- {"safeBrowsingEnhancedWhenOnBulTwo",
- IDS_SETTINGS_SAFEBROWSING_ENHANCED_WHEN_ON_BULLET_TWO},
- {"safeBrowsingEnhancedWhenOnBulThree",
- IDS_SETTINGS_SAFEBROWSING_ENHANCED_WHEN_ON_BULLET_THREE},
- {"safeBrowsingEnhancedWhenOnBulFour",
- IDS_SETTINGS_SAFEBROWSING_ENHANCED_WHEN_ON_BULLET_FOUR},
- {"safeBrowsingEnhancedWhenOnBulFive",
- IDS_SETTINGS_SAFEBROWSING_ENHANCED_WHEN_ON_BULLET_FIVE},
- {"safeBrowsingEnhancedThingsToConsiderLabel",
- IDS_SETTINGS_SAFEBROWSING_ENHANCED_THINGS_TO_CONSIDER_LABEL},
- {"safeBrowsingEnhancedThingsToConsiderBulOne",
- IDS_SETTINGS_SAFEBROWSING_ENHANCED_THINGS_TO_CONSIDER_BULLET_ONE},
- {"safeBrowsingEnhancedThingsToConsiderBulTwo",
- IDS_SETTINGS_SAFEBROWSING_ENHANCED_THINGS_TO_CONSIDER_BULLET_TWO},
- {"safeBrowsingEnhancedThingsToConsiderBulThree",
- IDS_SETTINGS_SAFEBROWSING_ENHANCED_THINGS_TO_CONSIDER_BULLET_THREE},
- {"safeBrowsingStandard", IDS_SETTINGS_SAFEBROWSING_STANDARD},
- {"safeBrowsingStandardDesc", IDS_SETTINGS_SAFEBROWSING_STANDARD_DESC},
- {"safeBrowsingStandardDescUpdated",
- IDS_SETTINGS_SAFEBROWSING_STANDARD_DESC_UPDATED},
+ {"privacyPageTitle", IDS_SETTINGS_PRIVACY},
+ {"privacyPageMore", IDS_SETTINGS_PRIVACY_MORE},
+ {"doNotTrack", IDS_SETTINGS_ENABLE_DO_NOT_TRACK},
+ {"doNotTrackDialogTitle", IDS_SETTINGS_ENABLE_DO_NOT_TRACK_DIALOG_TITLE},
+ {"doNotTrackDialogMessage", IDS_SETTINGS_ENABLE_DO_NOT_TRACK_DIALOG_TEXT},
+ {"doNotTrackDialogLearnMoreA11yLabel",
+ IDS_SETTINGS_ENABLE_DO_NOT_TRACK_DIALOG_LEARN_MORE_ACCESSIBILITY_LABEL},
+ // TODO(crbug.com/1062607): This string is no longer used. Remove.
+ {"permissionsPageTitle", IDS_SETTINGS_PERMISSIONS},
+ {"permissionsPageDescription", IDS_SETTINGS_PERMISSIONS_DESCRIPTION},
+ {"securityPageTitle", IDS_SETTINGS_SECURITY},
+ {"securityPageDescription", IDS_SETTINGS_SECURITY_DESCRIPTION},
+ {"advancedProtectionProgramTitle",
+ IDS_SETTINGS_ADVANCED_PROTECTION_PROGRAM},
+ {"advancedProtectionProgramDesc",
+ IDS_SETTINGS_ADVANCED_PROTECTION_PROGRAM_DESC},
+ {"httpsOnlyModeTitle", IDS_SETTINGS_HTTPS_ONLY_MODE},
+ {"httpsOnlyModeDescription", IDS_SETTINGS_HTTPS_ONLY_MODE_DESCRIPTION},
+ {"httpsOnlyModeDescriptionAdvancedProtection",
+ IDS_SETTINGS_HTTPS_ONLY_MODE_DESCRIPTION_ADVANCED_PROTECTION},
+ {"httpsFirstModeSectionLabel", IDS_SETTINGS_HTTPS_FIRST_MODE_TITLE},
+ {"httpsFirstModeSectionSubLabel", IDS_SETTINGS_HTTPS_FIRST_MODE_SUBTITLE},
+ {"httpsFirstModeEnabledFullLabel",
+ IDS_SETTINGS_HTTPS_FIRST_MODE_ENABLED_FULL_LABEL},
+ {"httpsFirstModeEnabledFullSubLabel",
+ IDS_SETTINGS_HTTPS_FIRST_MODE_ENABLED_FULL_SUBLABEL},
+ {"httpsFirstModeEnabledIncognitoLabel",
+ IDS_SETTINGS_HTTPS_FIRST_MODE_ENABLED_INCOGNITO_LABEL},
+ {"httpsFirstModeEnabledIncognitoSubLabel",
+ IDS_SETTINGS_HTTPS_FIRST_MODE_ENABLED_INCOGNITO_SUBLABEL},
+ {"httpsFirstModeDisabledLabel",
+ IDS_SETTINGS_HTTPS_FIRST_MODE_DISABLED_LABEL},
+ {"httpsFirstModeDisabledSubLabel",
+ IDS_SETTINGS_HTTPS_FIRST_MODE_DISABLED_SUBLABEL},
+ {"manageCertificates", IDS_SETTINGS_MANAGE_CERTIFICATES},
+ {"manageCertificatesDescription",
+ IDS_SETTINGS_MANAGE_CERTIFICATES_DESCRIPTION},
+ {"contentSettings", IDS_SETTINGS_CONTENT_SETTINGS},
+ {"siteSettings", IDS_SETTINGS_SITE_SETTINGS},
+ {"siteSettingsDescription", IDS_SETTINGS_SITE_SETTINGS_DESCRIPTION},
+ {"clearData", IDS_SETTINGS_CLEAR_DATA},
+ {"clearingData", IDS_SETTINGS_CLEARING_DATA},
+ {"clearedData", IDS_SETTINGS_CLEARED_DATA},
+ {"clearBrowsingData", IDS_SETTINGS_CLEAR_BROWSING_DATA},
+ {"clearBrowsingDataDescription", IDS_SETTINGS_CLEAR_DATA_DESCRIPTION},
+ {"titleAndCount", IDS_SETTINGS_TITLE_AND_COUNT},
+ {"safeBrowsingEnableExtendedReportingDesc",
+ IDS_SETTINGS_SAFEBROWSING_ENABLE_REPORTING_DESC},
+ {"safeBrowsingEnhanced", IDS_SETTINGS_SAFEBROWSING_ENHANCED},
+ {"safeBrowsingEnhancedDesc", IDS_SETTINGS_SAFEBROWSING_ENHANCED_DESC},
+ {"safeBrowsingEnhancedDescUpdated",
+ IDS_SETTINGS_SAFEBROWSING_ENHANCED_DESC_UPDATED},
+ {"safeBrowsingEnhancedExpandA11yLabel",
+ IDS_SETTINGS_SAFEBROWSING_ENHANCED_EXPAND_ACCESSIBILITY_LABEL},
+ {"safeBrowsingEnhancedBulOne",
+ IDS_SETTINGS_SAFEBROWSING_ENHANCED_BULLET_ONE},
+ {"safeBrowsingEnhancedBulTwo",
+ IDS_SETTINGS_SAFEBROWSING_ENHANCED_BULLET_TWO},
+ {"safeBrowsingEnhancedBulThree",
+ IDS_SETTINGS_SAFEBROWSING_ENHANCED_BULLET_THREE},
+ {"safeBrowsingEnhancedBulFour",
+ IDS_SETTINGS_SAFEBROWSING_ENHANCED_BULLET_FOUR},
+ {"safeBrowsingEnhancedBulFive",
+ IDS_SETTINGS_SAFEBROWSING_ENHANCED_BULLET_FIVE},
+ {"safeBrowsingEnhancedWhenOnLabel",
+ IDS_SETTINGS_SAFEBROWSING_ENHANCED_WHEN_ON_LABEL},
+ {"safeBrowsingEnhancedWhenOnBulOne",
+ IDS_SETTINGS_SAFEBROWSING_ENHANCED_WHEN_ON_BULLET_ONE},
+ {"safeBrowsingEnhancedWhenOnBulTwo",
+ IDS_SETTINGS_SAFEBROWSING_ENHANCED_WHEN_ON_BULLET_TWO},
+ {"safeBrowsingEnhancedWhenOnBulThree",
+ IDS_SETTINGS_SAFEBROWSING_ENHANCED_WHEN_ON_BULLET_THREE},
+ {"safeBrowsingEnhancedWhenOnBulFour",
+ IDS_SETTINGS_SAFEBROWSING_ENHANCED_WHEN_ON_BULLET_FOUR},
+ {"safeBrowsingEnhancedWhenOnBulFive",
+ IDS_SETTINGS_SAFEBROWSING_ENHANCED_WHEN_ON_BULLET_FIVE},
+ {"safeBrowsingEnhancedThingsToConsiderLabel",
+ IDS_SETTINGS_SAFEBROWSING_ENHANCED_THINGS_TO_CONSIDER_LABEL},
+ {"safeBrowsingEnhancedThingsToConsiderBulOne",
+ IDS_SETTINGS_SAFEBROWSING_ENHANCED_THINGS_TO_CONSIDER_BULLET_ONE},
+ {"safeBrowsingEnhancedThingsToConsiderBulTwo",
+ IDS_SETTINGS_SAFEBROWSING_ENHANCED_THINGS_TO_CONSIDER_BULLET_TWO},
+ {"safeBrowsingEnhancedThingsToConsiderBulThree",
+ IDS_SETTINGS_SAFEBROWSING_ENHANCED_THINGS_TO_CONSIDER_BULLET_THREE},
+ {"safeBrowsingStandard", IDS_SETTINGS_SAFEBROWSING_STANDARD},
+ {"safeBrowsingStandardDesc", IDS_SETTINGS_SAFEBROWSING_STANDARD_DESC},
+ {"safeBrowsingStandardDescUpdated",
+ IDS_SETTINGS_SAFEBROWSING_STANDARD_DESC_UPDATED},
#if BUILDFLAG(GOOGLE_CHROME_BRANDING)
- {"safeBrowsingStandardDescUpdatedProxy",
- IDS_SETTINGS_SAFEBROWSING_STANDARD_DESC_UPDATED_PROXY},
-#endif
- {"safeBrowsingStandardExpandA11yLabel",
- IDS_SETTINGS_SAFEBROWSING_STANDARD_EXPAND_ACCESSIBILITY_LABEL},
- {"safeBrowsingStandardBulOne",
- IDS_SETTINGS_SAFEBROWSING_STANDARD_BULLET_ONE},
- {"safeBrowsingStandardBulTwo",
- IDS_SETTINGS_SAFEBROWSING_STANDARD_BULLET_TWO},
+ {"safeBrowsingStandardDescUpdatedProxy",
+ IDS_SETTINGS_SAFEBROWSING_STANDARD_DESC_UPDATED_PROXY},
+#endif
+ {"safeBrowsingStandardExpandA11yLabel",
+ IDS_SETTINGS_SAFEBROWSING_STANDARD_EXPAND_ACCESSIBILITY_LABEL},
+ {"safeBrowsingStandardBulOne",
+ IDS_SETTINGS_SAFEBROWSING_STANDARD_BULLET_ONE},
+ {"safeBrowsingStandardBulTwo",
+ IDS_SETTINGS_SAFEBROWSING_STANDARD_BULLET_TWO},
#if BUILDFLAG(GOOGLE_CHROME_BRANDING)
- {"safeBrowsingStandardBulTwoProxy",
- IDS_SETTINGS_SAFEBROWSING_STANDARD_BULLET_TWO_PROXY},
-#endif
- {"safeBrowsingStandardReportingLabel",
- IDS_SETTINGS_SAFEBROWSING_STANDARD_HELP_IMPROVE},
- {"safeBrowsingNone", IDS_SETTINGS_SAFEBROWSING_NONE},
- {"safeBrowsingNoneDesc", IDS_SETTINGS_SAFEBROWSING_NONE_DESC},
- {"safeBrowsingNoneDescUpdated",
- IDS_SETTINGS_SAFEBROWSING_NONE_DESC_UPDATED},
- {"safeBrowsingDisableDialog",
- IDS_SETTINGS_SAFEBROWSING_DISABLE_DIALOG_TITLE},
- {"safeBrowsingDisableDialogDesc",
- IDS_SETTINGS_SAFEBROWSING_DISABLE_DIALOG_DESC},
- {"safeBrowsingDisableDialogConfirm",
- IDS_SETTINGS_SAFEBROWSING_DISABLE_DIALOG_CONFIRM},
- {"safeBrowsingEnableProtection",
- IDS_SETTINGS_SAFEBROWSING_ENABLEPROTECTION},
- {"safeBrowsingEnableProtectionDesc",
- IDS_SETTINGS_SAFEBROWSING_ENABLEPROTECTION_DESC},
- {"safeBrowsingSectionLabel", IDS_SETTINGS_SAFEBROWSING_SECTION_LABEL},
- {"syncAndGoogleServicesPrivacyDescription",
- IDS_SETTINGS_SYNC_AND_GOOGLE_SERVICES_PRIVACY_DESC_UNIFIED_CONSENT},
- {"urlKeyedAnonymizedDataCollection",
- IDS_SETTINGS_ENABLE_URL_KEYED_ANONYMIZED_DATA_COLLECTION},
- {"urlKeyedAnonymizedDataCollectionDesc",
- IDS_SETTINGS_ENABLE_URL_KEYED_ANONYMIZED_DATA_COLLECTION_DESC},
- {"noRecentPermissions", IDS_SETTINGS_RECENT_PERMISSIONS_NO_CHANGES},
- {"recentPermissionAllowedOneItem",
- IDS_SETTINGS_RECENT_PERMISSIONS_ALLOWED_ONE_ITEM},
- {"recentPermissionAllowedTwoItems",
- IDS_SETTINGS_RECENT_PERMISSIONS_ALLOWED_TWO_ITEMS},
- {"recentPermissionAllowedMoreThanTwoItems",
- IDS_SETTINGS_RECENT_PERMISSIONS_ALLOWED_MORE_THAN_TWO_ITEMS},
- {"recentPermissionAutoBlockedOneItem",
- IDS_SETTINGS_RECENT_PERMISSIONS_AUTOMATICALLY_BLOCKED_ONE_ITEM},
- {"recentPermissionAutoBlockedTwoItems",
- IDS_SETTINGS_RECENT_PERMISSIONS_AUTOMATICALLY_BLOCKED_TWO_ITEMS},
- {"recentPermissionAutoBlockedMoreThanTwoItems",
- IDS_SETTINGS_RECENT_PERMISSIONS_AUTOMATICALLY_BLOCKED_MORE_THAN_TWO_ITEMS},
- {"recentPermissionBlockedOneItem",
- IDS_SETTINGS_RECENT_PERMISSIONS_BLOCKED_ONE_ITEM},
- {"recentPermissionBlockedTwoItems",
- IDS_SETTINGS_RECENT_PERMISSIONS_BLOCKED_TWO_ITEMS},
- {"recentPermissionBlockedMoreThanTwoItems",
- IDS_SETTINGS_RECENT_PERMISSIONS_BLOCKED_MORE_THAN_TWO_ITEMS},
- {"networkPredictionEnabledDesc",
- IDS_SETTINGS_NETWORK_PREDICTION_ENABLED_DESC},
- {"networkPredictionEnabledDescCookiesPage",
- IDS_SETTINGS_NETWORK_PREDICTION_ENABLED_DESC_COOKIES_PAGE},
- {"preloadingPageTitle", IDS_SETTINGS_PRELOAD_PAGES_TITLE},
- {"preloadingPageSummary", IDS_SETTINGS_PRELOAD_PAGES_SUMMARY},
- {"preloadingPageNoPreloadingTitle",
- IDS_SETTINGS_PRELOAD_PAGES_NO_PRELOADING_TITLE},
- {"preloadingPageNoPreloadingSummary",
- IDS_SETTINGS_PRELOAD_PAGES_NO_PRELOADING_SUMMARY},
- {"preloadingPageStandardPreloadingTitle",
- IDS_SETTINGS_PRELOAD_PAGES_STANDARD_PRELOADING_TITLE},
- {"preloadingPageStandardPreloadingSummary",
- IDS_SETTINGS_PRELOAD_PAGES_STANDARD_PRELOADING_SUMMARY},
- {"preloadingPageStandardPreloadingWhenOnBulletOne",
- IDS_SETTINGS_PRELOAD_PAGES_STANDARD_PRELOADING_WHEN_ON_BULLET_ONE},
- {"preloadingPageStandardPreloadingWhenOnBulletTwo",
- IDS_SETTINGS_PRELOAD_PAGES_STANDARD_PRELOADING_WHEN_ON_BULLET_TWO},
- {"preloadingPageExtendedPreloadingTitle",
- IDS_SETTINGS_PRELOAD_PAGES_EXTENDED_PRELOADING_TITLE},
- {"preloadingPageExtendedPreloadingSummary",
- IDS_SETTINGS_PRELOAD_PAGES_EXTENDED_PRELOADING_SUMMARY},
- {"preloadingPageExtendedPreloadingWhenOnBulletOne",
- IDS_SETTINGS_PRELOAD_PAGES_EXTENDED_PRELOADING_WHEN_ON_BULLET_ONE},
- {"preloadingPageExtendedPreloadingWhenOnBulletTwo",
- IDS_SETTINGS_PRELOAD_PAGES_EXTENDED_PRELOADING_WHEN_ON_BULLET_TWO},
- {"preloadingPageExtendedPreloadingThingsToConsiderBulletTwo",
- IDS_SETTINGS_PRELOAD_PAGES_EXTENDED_PRELOADING_THINGS_TO_CONSIDER_BULLET_TWO},
- {"preloadingPageThingsToConsiderBulletOne",
- IDS_SETTINGS_PRELOAD_PAGES_THINGS_TO_CONSIDER_BULLET_ONE},
+ {"safeBrowsingStandardBulTwoProxy",
+ IDS_SETTINGS_SAFEBROWSING_STANDARD_BULLET_TWO_PROXY},
+#endif
+ {"safeBrowsingStandardReportingLabel",
+ IDS_SETTINGS_SAFEBROWSING_STANDARD_HELP_IMPROVE},
+ {"safeBrowsingNone", IDS_SETTINGS_SAFEBROWSING_NONE},
+ {"safeBrowsingNoneDesc", IDS_SETTINGS_SAFEBROWSING_NONE_DESC},
+ {"safeBrowsingNoneDescUpdated",
+ IDS_SETTINGS_SAFEBROWSING_NONE_DESC_UPDATED},
+ {"safeBrowsingDisableDialog",
+ IDS_SETTINGS_SAFEBROWSING_DISABLE_DIALOG_TITLE},
+ {"safeBrowsingDisableDialogDesc",
+ IDS_SETTINGS_SAFEBROWSING_DISABLE_DIALOG_DESC},
+ {"safeBrowsingDisableDialogConfirm",
+ IDS_SETTINGS_SAFEBROWSING_DISABLE_DIALOG_CONFIRM},
+ {"safeBrowsingEnableProtection",
+ IDS_SETTINGS_SAFEBROWSING_ENABLEPROTECTION},
+ {"safeBrowsingEnableProtectionDesc",
+ IDS_SETTINGS_SAFEBROWSING_ENABLEPROTECTION_DESC},
+ {"safeBrowsingSectionLabel", IDS_SETTINGS_SAFEBROWSING_SECTION_LABEL},
+ {"syncAndGoogleServicesPrivacyDescription",
+ IDS_SETTINGS_SYNC_AND_GOOGLE_SERVICES_PRIVACY_DESC_UNIFIED_CONSENT},
+ {"urlKeyedAnonymizedDataCollection",
+ IDS_SETTINGS_ENABLE_URL_KEYED_ANONYMIZED_DATA_COLLECTION},
+ {"urlKeyedAnonymizedDataCollectionDesc",
+ IDS_SETTINGS_ENABLE_URL_KEYED_ANONYMIZED_DATA_COLLECTION_DESC},
+ {"noRecentPermissions", IDS_SETTINGS_RECENT_PERMISSIONS_NO_CHANGES},
+ {"recentPermissionAllowedOneItem",
+ IDS_SETTINGS_RECENT_PERMISSIONS_ALLOWED_ONE_ITEM},
+ {"recentPermissionAllowedTwoItems",
+ IDS_SETTINGS_RECENT_PERMISSIONS_ALLOWED_TWO_ITEMS},
+ {"recentPermissionAllowedMoreThanTwoItems",
+ IDS_SETTINGS_RECENT_PERMISSIONS_ALLOWED_MORE_THAN_TWO_ITEMS},
+ {"recentPermissionAutoBlockedOneItem",
+ IDS_SETTINGS_RECENT_PERMISSIONS_AUTOMATICALLY_BLOCKED_ONE_ITEM},
+ {"recentPermissionAutoBlockedTwoItems",
+ IDS_SETTINGS_RECENT_PERMISSIONS_AUTOMATICALLY_BLOCKED_TWO_ITEMS},
+ {"recentPermissionAutoBlockedMoreThanTwoItems",
+ IDS_SETTINGS_RECENT_PERMISSIONS_AUTOMATICALLY_BLOCKED_MORE_THAN_TWO_ITEMS},
+ {"recentPermissionBlockedOneItem",
+ IDS_SETTINGS_RECENT_PERMISSIONS_BLOCKED_ONE_ITEM},
+ {"recentPermissionBlockedTwoItems",
+ IDS_SETTINGS_RECENT_PERMISSIONS_BLOCKED_TWO_ITEMS},
+ {"recentPermissionBlockedMoreThanTwoItems",
+ IDS_SETTINGS_RECENT_PERMISSIONS_BLOCKED_MORE_THAN_TWO_ITEMS},
+ {"networkPredictionEnabledDesc",
+ IDS_SETTINGS_NETWORK_PREDICTION_ENABLED_DESC},
+ {"preloadingPageTitle", IDS_SETTINGS_PRELOAD_PAGES_TITLE},
+ {"preloadingPageSummary", IDS_SETTINGS_PRELOAD_PAGES_SUMMARY},
+ {"preloadingPageNoPreloadingTitle",
+ IDS_SETTINGS_PRELOAD_PAGES_NO_PRELOADING_TITLE},
+ {"preloadingPageNoPreloadingSummary",
+ IDS_SETTINGS_PRELOAD_PAGES_NO_PRELOADING_SUMMARY},
+ {"preloadingPageStandardPreloadingTitle",
+ IDS_SETTINGS_PRELOAD_PAGES_STANDARD_PRELOADING_TITLE},
+ {"preloadingPageStandardPreloadingSummary",
+ IDS_SETTINGS_PRELOAD_PAGES_STANDARD_PRELOADING_SUMMARY},
+ {"preloadingPageStandardPreloadingWhenOnBulletOne",
+ IDS_SETTINGS_PRELOAD_PAGES_STANDARD_PRELOADING_WHEN_ON_BULLET_ONE},
+ {"preloadingPageStandardPreloadingWhenOnBulletTwo",
+ IDS_SETTINGS_PRELOAD_PAGES_STANDARD_PRELOADING_WHEN_ON_BULLET_TWO},
+ {"preloadingPageExtendedPreloadingTitle",
+ IDS_SETTINGS_PRELOAD_PAGES_EXTENDED_PRELOADING_TITLE},
+ {"preloadingPageExtendedPreloadingSummary",
+ IDS_SETTINGS_PRELOAD_PAGES_EXTENDED_PRELOADING_SUMMARY},
+ {"preloadingPageExtendedPreloadingWhenOnBulletOne",
+ IDS_SETTINGS_PRELOAD_PAGES_EXTENDED_PRELOADING_WHEN_ON_BULLET_ONE},
+ {"preloadingPageExtendedPreloadingWhenOnBulletTwo",
+ IDS_SETTINGS_PRELOAD_PAGES_EXTENDED_PRELOADING_WHEN_ON_BULLET_TWO},
+ {"preloadingPageExtendedPreloadingThingsToConsiderBulletTwo",
+ IDS_SETTINGS_PRELOAD_PAGES_EXTENDED_PRELOADING_THINGS_TO_CONSIDER_BULLET_TWO},
+ {"preloadingPageThingsToConsiderBulletOne",
+ IDS_SETTINGS_PRELOAD_PAGES_THINGS_TO_CONSIDER_BULLET_ONE},
+ {"securityV8LinkTitle", IDS_SETTINGS_SECURITY_V8_LINK_TITLE},
+ {"securityV8LinkDescription", IDS_SETTINGS_SECURITY_V8_LINK_DESCRIPTION},
#if BUILDFLAG(IS_CHROMEOS)
- {"openChromeOSSecureDnsSettingsLabel",
- IDS_SETTINGS_SECURE_DNS_OPEN_CHROME_OS_SETTINGS_LABEL},
+ {"openChromeOSSecureDnsSettingsLabel",
+ IDS_SETTINGS_SECURE_DNS_OPEN_CHROME_OS_SETTINGS_LABEL},
#endif
#if BUILDFLAG(CHROME_ROOT_STORE_SUPPORTED)
- {"manageDeviceCertificates", IDS_SETTINGS_MANAGE_DEVICE_CERTIFICATES},
- {"manageDeviceCertificatesDescription",
- IDS_SETTINGS_MANAGE_DEVICE_CERTIFICATES_DESCRIPTION},
- {"chromeCertificates", IDS_SETTINGS_CHROME_CERTIFICATES},
- {"chromeCertificatesDescription",
- IDS_SETTINGS_CHROME_CERTIFICATES_DESCRIPTION},
+ {"manageDeviceCertificates", IDS_SETTINGS_MANAGE_DEVICE_CERTIFICATES},
+ {"manageDeviceCertificatesDescription",
+ IDS_SETTINGS_MANAGE_DEVICE_CERTIFICATES_DESCRIPTION},
+ {"chromeCertificates", IDS_SETTINGS_CHROME_CERTIFICATES},
+ {"chromeCertificatesDescription",
+ IDS_SETTINGS_CHROME_CERTIFICATES_DESCRIPTION},
#endif
};
html_source->AddLocalizedStrings(kLocalizedStrings);
@@ -1779,10 +1836,8 @@ void AddPrivacyStrings(content::WebUIDataSource* html_source,
html_source->AddString("syncAndGoogleServicesLearnMoreURL",
chrome::kSyncAndGoogleServicesLearnMoreURL);
- html_source->AddString(
- "doNotTrackDialogMessage",
- l10n_util::GetStringFUTF16(IDS_SETTINGS_ENABLE_DO_NOT_TRACK_DIALOG_TEXT,
- chrome::kDoNotTrackLearnMoreURL));
+ html_source->AddString("doNotTrackLearnMoreURL",
+ chrome::kDoNotTrackLearnMoreURL);
html_source->AddString("exceptionsLearnMoreURL",
chrome::kContentSettingsExceptionsLearnMoreURL);
html_source->AddBoolean(
@@ -1843,47 +1898,10 @@ void AddPrivacySandboxStrings(content::WebUIDataSource* html_source,
// replace those before the corresponding flag value is checked, which is why
// they are included independently of the flag value.
static constexpr webui::LocalizedString kLocalizedStrings[] = {
- {"privacySandboxTitle", IDS_SETTINGS_PRIVACY_SANDBOX_TITLE},
- {"privacySandboxTrialsEnabled",
- IDS_SETTINGS_PRIVACY_SANDBOX_TRIALS_ENABLED},
- {"privacySandboxTrialsDisabled",
- IDS_SETTINGS_PRIVACY_SANDBOX_TRIALS_DISABLED},
{"privacySandboxCookiesDialog",
IDS_SETTINGS_PRIVACY_SANDBOX_COOKIES_DIALOG},
{"privacySandboxCookiesDialogMore",
IDS_SETTINGS_PRIVACY_SANDBOX_COOKIES_DIALOG_MORE},
- {"privacySandboxPageHeading", IDS_SETTINGS_PRIVACY_SANDBOX_PAGE_HEADING},
- {"privacySandboxPageDetails", IDS_SETTINGS_PRIVACY_SANDBOX_PAGE_DETAILS},
- // The following strings are used for PrivacySandboxSettings3.
- {"privacySandboxTrialsTitle", IDS_SETTINGS_PRIVACY_SANDBOX_TRIALS_TITLE},
- {"privacySandboxTrialsSummary",
- IDS_SETTINGS_PRIVACY_SANDBOX_TRIALS_SUMMARY},
- {"privacySandboxTrialsSummaryLearnMore",
- IDS_SETTINGS_PRIVACY_SANDBOX_TRIALS_SUMMARY_LEARN_MORE},
- {"privacySandboxAdPersonalizationTitle",
- IDS_SETTINGS_PRIVACY_SANDBOX_AD_PERSONALIZATION_TITLE},
- {"privacySandboxAdPersonalizationSummary",
- IDS_SETTINGS_PRIVACY_SANDBOX_AD_PERSONALIZATION_SUMMARY},
- {"privacySandboxAdMeasurementTitle",
- IDS_SETTINGS_PRIVACY_SANDBOX_AD_MEASUREMENT_TITLE},
- {"privacySandboxAdMeasurementSummary",
- IDS_SETTINGS_PRIVACY_SANDBOX_AD_MEASUREMENT_SUMMARY},
- {"privacySandboxSpamAndFraudTitle",
- IDS_SETTINGS_PRIVACY_SANDBOX_SPAM_AND_FRAUD_TITLE},
- {"privacySandboxSpamAndFraudSummary",
- IDS_SETTINGS_PRIVACY_SANDBOX_SPAM_AND_FRAUD_SUMMARY},
- {"privacySandboxLearnMoreDialogTitle",
- IDS_SETTINGS_PRIVACY_SANDBOX_LEARN_MORE_DIALOG_TITLE},
- {"privacySandboxLearnMoreDialogTopicsTitle",
- IDS_SETTINGS_PRIVACY_SANDBOX_LEARN_MORE_DIALOG_TOPICS_TITLE},
- {"privacySandboxLearnMoreDialogFledgeTitle",
- IDS_SETTINGS_PRIVACY_SANDBOX_LEARN_MORE_DIALOG_FLEDGE_TITLE},
- {"privacySandboxLearnMoreDialogDataTypes",
- IDS_SETTINGS_PRIVACY_SANDBOX_LEARN_MORE_DIALOG_DATA_TYPES},
- {"privacySandboxLearnMoreDialogDataUsage",
- IDS_SETTINGS_PRIVACY_SANDBOX_LEARN_MORE_DIALOG_DATA_USAGE},
- {"privacySandboxLearnMoreDialogDataManagement",
- IDS_SETTINGS_PRIVACY_SANDBOX_LEARN_MORE_DIALOG_DATA_MANAGEMENT},
{"privacySandboxLearnMoreDialogTopicsDataTypes",
IDS_SETTINGS_PRIVACY_SANDBOX_LEARN_MORE_DIALOG_TOPICS_DATA_TYPES},
{"privacySandboxLearnMoreDialogTopicsDataUsage",
@@ -1894,64 +1912,26 @@ void AddPrivacySandboxStrings(content::WebUIDataSource* html_source,
IDS_SETTINGS_PRIVACY_SANDBOX_LEARN_MORE_DIALOG_FLEDGE_DATA_TYPES},
{"privacySandboxLearnMoreDialogFledgeDataUsage",
IDS_SETTINGS_PRIVACY_SANDBOX_LEARN_MORE_DIALOG_FLEDGE_DATA_USAGE},
- {"privacySandboxLearnMoreDialogFledgeDataManagement",
- IDS_SETTINGS_PRIVACY_SANDBOX_LEARN_MORE_DIALOG_FLEDGE_DATA_MANAGEMENT},
- {"privacySandboxAdPersonalizationDialogTitle",
- IDS_SETTINGS_PRIVACY_SANDBOX_AD_PERSONALIZATION_DIALOG_TITLE},
{"privacySandboxAdPersonalizationDialogDescription",
IDS_SETTINGS_PRIVACY_SANDBOX_AD_PERSONALIZATION_DIALOG_DESCRIPTION},
{"privacySandboxAdPersonalizationDialogDescriptionTrialsOff",
IDS_SETTINGS_PRIVACY_SANDBOX_AD_PERSONALIZATION_DIALOG_DESCRIPTION_TRIALS_OFF},
{"privacySandboxAdPersonalizationDialogDescriptionListsEmpty",
IDS_SETTINGS_PRIVACY_SANDBOX_AD_PERSONALIZATION_DIALOG_DESCRIPTION_LISTS_EMPTY},
- {"privacySandboxAdPersonalizationRemovedDialogTitle",
- IDS_SETTINGS_PRIVACY_SANDBOX_AD_PERSONALIZATION_REMOVED_DIALOG_TITLE},
- {"privacySandboxAdPersonalizationRemovedDialogDescription",
- IDS_SETTINGS_PRIVACY_SANDBOX_AD_PERSONALIZATION_REMOVED_DIALOG_DESCRIPTION},
{"privacySandboxAdPersonalizationDialogTopicsTitle",
IDS_SETTINGS_PRIVACY_SANDBOX_AD_PERSONALIZATION_DIALOG_TOPICS_TITLE},
- {"privacySandboxAdPersonalizationDialogTopicsEmpty",
- IDS_SETTINGS_PRIVACY_SANDBOX_AD_PERSONALIZATION_DIALOG_TOPICS_EMPTY},
- {"privacySandboxAdPersonalizationDialogRemovedTopicsLabel",
- IDS_SETTINGS_PRIVACY_SANDBOX_AD_PERSONALIZATION_DIALOG_REMOVED_TOPICS_LABEL},
- {"privacySandboxAdPersonalizationDialogRemovedTopicsEmpty",
- IDS_SETTINGS_PRIVACY_SANDBOX_AD_PERSONALIZATION_DIALOG_REMOVED_TOPICS_EMPTY},
{"privacySandboxAdPersonalizationDialogTopicsLearnMore1",
IDS_SETTINGS_PRIVACY_SANDBOX_AD_PERSONALIZATION_DIALOG_TOPICS_LEARN_MORE_1},
{"privacySandboxAdPersonalizationDialogTopicsLearnMore2",
IDS_SETTINGS_PRIVACY_SANDBOX_AD_PERSONALIZATION_DIALOG_TOPICS_LEARN_MORE_2},
{"privacySandboxAdPersonalizationDialogTopicsLearnMore3",
IDS_SETTINGS_PRIVACY_SANDBOX_AD_PERSONALIZATION_DIALOG_TOPICS_LEARN_MORE_3},
- {"privacySandboxAdPersonalizationDialogFledgeTitle",
- IDS_SETTINGS_PRIVACY_SANDBOX_AD_PERSONALIZATION_DIALOG_FLEDGE_TITLE},
- {"privacySandboxAdPersonalizationDialogFledgeEmpty",
- IDS_SETTINGS_PRIVACY_SANDBOX_AD_PERSONALIZATION_DIALOG_FLEDGE_EMPTY},
- {"privacySandboxAdPersonalizationDialogRemovedFledgeLabel",
- IDS_SETTINGS_PRIVACY_SANDBOX_AD_PERSONALIZATION_DIALOG_REMOVED_FLEDGE_LABEL},
- {"privacySandboxAdPersonalizationDialogRemovedFledgeEmpty",
- IDS_SETTINGS_PRIVACY_SANDBOX_AD_PERSONALIZATION_DIALOG_REMOVED_FLEDGE_EMPTY},
{"privacySandboxAdPersonalizationDialogFledgeLearnMore1",
IDS_SETTINGS_PRIVACY_SANDBOX_AD_PERSONALIZATION_DIALOG_FLEDGE_LEARN_MORE_1},
- {"privacySandboxAdPersonalizationDialogFledgeLearnMore2",
- IDS_SETTINGS_PRIVACY_SANDBOX_AD_PERSONALIZATION_DIALOG_FLEDGE_LEARN_MORE_2},
- {"privacySandboxAdPersonalizationDialogFledgeLearnMore3",
- IDS_SETTINGS_PRIVACY_SANDBOX_AD_PERSONALIZATION_DIALOG_FLEDGE_LEARN_MORE_3},
- {"privacySandboxAdMeasurementDialogTitle",
- IDS_SETTINGS_PRIVACY_SANDBOX_AD_MEASUREMENT_DIALOG_TITLE},
{"privacySandboxAdMeasurementDialogDescription",
IDS_SETTINGS_PRIVACY_SANDBOX_AD_MEASUREMENT_DIALOG_DESCRIPTION},
{"privacySandboxAdMeasurementDialogDescriptionTrialsOff",
IDS_SETTINGS_PRIVACY_SANDBOX_AD_MEASUREMENT_DIALOG_DESCRIPTION_TRIALS_OFF},
- {"privacySandboxSpamAndFraudDialogTitle",
- IDS_SETTINGS_PRIVACY_SANDBOX_SPAM_AND_FRAUD_DIALOG_TITLE},
- {"privacySandboxSpamAndFraudDialogDescription1",
- IDS_SETTINGS_PRIVACY_SANDBOX_SPAM_AND_FRAUD_DIALOG_DESCRIPTION_1},
- {"privacySandboxSpamAndFraudDialogDescription1TrialsOff",
- IDS_SETTINGS_PRIVACY_SANDBOX_SPAM_AND_FRAUD_DIALOG_DESCRIPTION_1_TRIALS_OFF},
- {"privacySandboxSpamAndFraudDialogDescription2",
- IDS_SETTINGS_PRIVACY_SANDBOX_SPAM_AND_FRAUD_DIALOG_DESCRIPTION_2},
- {"privacySandboxSpamAndFraudDialogDescription3",
- IDS_SETTINGS_PRIVACY_SANDBOX_SPAM_AND_FRAUD_DIALOG_DESCRIPTION_3},
{"adPrivacyLinkRowLabel", IDS_SETTINGS_AD_PRIVACY_LINK_ROW_LABEL},
{"adPrivacyLinkRowSubLabel", IDS_SETTINGS_AD_PRIVACY_LINK_ROW_SUB_LABEL},
{"adPrivacyRestrictedLinkRowSubLabel",
@@ -1978,10 +1958,17 @@ void AddPrivacySandboxStrings(content::WebUIDataSource* html_source,
{"topicsPageTitle", IDS_SETTINGS_TOPICS_PAGE_TITLE},
{"topicsPageToggleLabel", IDS_SETTINGS_TOPICS_PAGE_TOGGLE_LABEL},
{"topicsPageToggleSubLabel", IDS_SETTINGS_TOPICS_PAGE_TOGGLE_SUB_LABEL},
+ {"topicsPageToggleSubLabelPTB",
+ IDS_SETTINGS_TOPICS_PAGE_TOGGLE_SUB_LABEL_PTB},
+ {"topicsPageDisclaimer", IDS_SETTINGS_TOPICS_PAGE_DISCLAIMER},
{"topicsPageCurrentTopicsHeading",
IDS_SETTINGS_TOPICS_PAGE_CURRENT_TOPICS_HEADING},
+ {"topicsPageCurrentTopicsHeadingPTB",
+ IDS_SETTINGS_TOPICS_PAGE_CURRENT_TOPICS_HEADING_PTB},
{"topicsPageCurrentTopicsDescription",
IDS_SETTINGS_TOPICS_PAGE_CURRENT_TOPICS_DESCRIPTION},
+ {"topicsPageCurrentTopicsDescriptionPTB",
+ IDS_SETTINGS_TOPICS_PAGE_CURRENT_TOPICS_DESCRIPTION_PTB},
{"topicsPageCurrentTopicsDescriptionLearnMoreLink",
IDS_SETTINGS_TOPICS_PAGE_CURRENT_TOPICS_DESCRIPTION_LEARN_MORE_LINK},
{"topicsPageCurrentTopicsRegionA11yDescription",
@@ -1996,15 +1983,21 @@ void AddPrivacySandboxStrings(content::WebUIDataSource* html_source,
IDS_SETTINGS_TOPICS_PAGE_CURRENT_TOPICS_DESCRIPTION_DISABLED},
{"topicsPageCurrentTopicsDescriptionEmpty",
IDS_SETTINGS_TOPICS_PAGE_CURRENT_TOPICS_DESCRIPTION_EMPTY},
+ {"topicsPageCurrentTopicsDescriptionEmptyPTB",
+ IDS_SETTINGS_TOPICS_PAGE_CURRENT_TOPICS_DESCRIPTION_EMPTY_PTB},
{"topicsPageBlockTopic", IDS_SETTINGS_TOPICS_PAGE_BLOCK_TOPIC},
{"topicsPageBlockTopicA11yLabel",
IDS_SETTINGS_TOPICS_PAGE_BLOCK_TOPIC_A11Y_LABEL},
{"topicsPageBlockedTopicsHeading",
IDS_SETTINGS_TOPICS_PAGE_BLOCKED_TOPICS_HEADING},
+ {"topicsPageBlockedTopicsHeadingPTB",
+ IDS_SETTINGS_TOPICS_PAGE_BLOCKED_TOPICS_HEADING_PTB},
{"topicsPageBlockedTopicsDescription",
IDS_SETTINGS_TOPICS_PAGE_BLOCKED_TOPICS_DESCRIPTION},
{"topicsPageBlockedTopicsDescriptionEmpty",
IDS_SETTINGS_TOPICS_PAGE_BLOCKED_TOPICS_DESCRIPTION_EMPTY},
+ {"topicsPageBlockedTopicsDescriptionPTB",
+ IDS_SETTINGS_TOPICS_PAGE_BLOCKED_TOPICS_DESCRIPTION_PTB},
{"topicsPageBlockedTopicsRegionA11yDescription",
IDS_SETTINGS_TOPICS_PAGE_BLOCKED_TOPICS_REGION_A11Y_DESCRIPTION},
{"topicsPageAllowTopic", IDS_SETTINGS_TOPICS_PAGE_ALLOW_TOPIC},
@@ -2070,8 +2063,11 @@ void AddPrivacySandboxStrings(content::WebUIDataSource* html_source,
IDS_SETTINGS_AD_MEASUREMENT_PAGE_CONSIDER_BULLET_1},
{"adMeasurementPageConsiderBullet2",
IDS_SETTINGS_AD_MEASUREMENT_PAGE_CONSIDER_BULLET_2},
- {"adMeasurementPageConsiderBullet3",
- IDS_SETTINGS_AD_MEASUREMENT_PAGE_CONSIDER_BULLET_3},
+ {"manageTopicsPageDescription",
+ IDS_SETTINGS_MANAGE_TOPICS_PAGE_DESCRIPTION},
+ {"manageTopicsHeading", IDS_SETTINGS_TOPICS_PAGE_MANAGE_TOPICS_HEADING},
+ {"manageTopicsDescription",
+ IDS_SETTINGS_TOPICS_PAGE_MANAGE_TOPICS_DESCRIPTION},
};
html_source->AddLocalizedStrings(kLocalizedStrings);
@@ -2081,11 +2077,6 @@ void AddPrivacySandboxStrings(content::WebUIDataSource* html_source,
GURL(chrome::kAdPrivacyLearnMoreURL),
g_browser_process->GetApplicationLocale())
.spec());
- html_source->AddString(
- "privacySandboxAdMeasurementDialogControlMeasurement",
- l10n_util::GetStringFUTF16(
- IDS_SETTINGS_PRIVACY_SANDBOX_AD_MEASUREMENT_DIALOG_CONTROL_MEASUREMENT,
- base::ASCIIToUTF16(chrome::kChromeUIHistoryURL)));
// Topics and fledge link to help center articles in their learn more dialog.
html_source->AddString(
@@ -2104,7 +2095,12 @@ void AddPrivacySandboxStrings(content::WebUIDataSource* html_source,
GURL(chrome::kAdPrivacyLearnMoreURL),
g_browser_process->GetApplicationLocale())
.spec())));
-
+ html_source->AddString(
+ "manageTopicsPageDescription",
+ l10n_util::GetStringFUTF16(
+ IDS_SETTINGS_MANAGE_TOPICS_PAGE_DESCRIPTION,
+ base::ASCIIToUTF16(
+ chrome::kChromeUIPrivacySandboxManageTopicsLearnMoreURL)));
// Topics and fledge both link to the cookies setting page and cross-link
// each other in the footers.
html_source->AddString(
@@ -2114,6 +2110,14 @@ void AddPrivacySandboxStrings(content::WebUIDataSource* html_source,
base::ASCIIToUTF16(chrome::kChromeUIPrivacySandboxFledgeURL),
base::ASCIIToUTF16(chrome::kChromeUICookieSettingsURL)));
html_source->AddString(
+ "topicsPageFooterPTB",
+ l10n_util::GetStringFUTF16(
+ IDS_SETTINGS_TOPICS_PAGE_FOOTER_PTB,
+ base::ASCIIToUTF16(chrome::kChromeUIPrivacySandboxFledgeURL),
+ base::ASCIIToUTF16(chrome::kChromeUICookieSettingsURL),
+ base::ASCIIToUTF16(
+ chrome::kChromeUIPrivacySandboxManageTopicsLearnMoreURL)));
+ html_source->AddString(
"fledgePageFooter",
l10n_util::GetStringFUTF16(
IDS_SETTINGS_FLEDGE_PAGE_FOOTER,
@@ -2151,121 +2155,117 @@ void AddPrivacySandboxStrings(content::WebUIDataSource* html_source,
void AddPrivacyGuideStrings(content::WebUIDataSource* html_source) {
static constexpr webui::LocalizedString kLocalizedStrings[] = {
- {"privacyGuideLabel", IDS_SETTINGS_PRIVACY_GUIDE_LABEL},
- {"privacyGuideSublabel", IDS_SETTINGS_PRIVACY_GUIDE_SUBLABEL},
- {"privacyGuidePromoHeader", IDS_SETTINGS_PRIVACY_GUIDE_PROMO_HEADER},
- {"privacyGuidePromoBody", IDS_SETTINGS_PRIVACY_GUIDE_PROMO_BODY},
- {"privacyGuidePromoStartButton",
- IDS_SETTINGS_PRIVACY_GUIDE_PROMO_START_BUTTON},
- {"privacyGuideBackToSettingsAriaLabel",
- IDS_SETTINGS_PRIVACY_GUIDE_BACK_TO_SETTINGS_ARIA_LABEL},
- {"privacyGuideBackToSettingsAriaRoleDescription",
- IDS_SETTINGS_PRIVACY_GUIDE_BACK_TO_SETTINGS_ARIA_ROLE_DESC},
- {"privacyGuideBackButton", IDS_SETTINGS_PRIVACY_GUIDE_BACK_BUTTON},
- {"privacyGuideSteps", IDS_SETTINGS_PRIVACY_GUIDE_STEPS},
- {"privacyGuideNextButton", IDS_SETTINGS_PRIVACY_GUIDE_NEXT_BUTTON},
- {"privacyGuideFeatureDescriptionHeader",
- IDS_SETTINGS_PRIVACY_GUIDE_FEATURE_DESCRIPTION_HEADER},
- {"privacyGuideThingsToConsider",
- IDS_SETTINGS_PRIVACY_GUIDE_THINGS_TO_CONSIDER},
- {"privacyGuideWelcomeCardHeader",
- IDS_SETTINGS_PRIVACY_GUIDE_WELCOME_CARD_HEADER},
- {"privacyGuideWelcomeCardSubHeader",
- IDS_SETTINGS_PRIVACY_GUIDE_WELCOME_CARD_SUB_HEADER},
- {"privacyGuideCompletionCardHeader",
- IDS_SETTINGS_PRIVACY_GUIDE_COMPLETION_CARD_HEADER},
- {"privacyGuideCompletionCardSubHeader",
- IDS_SETTINGS_PRIVACY_GUIDE_COMPLETION_CARD_SUB_HEADER},
- {"privacyGuideCompletionCardSubHeaderNoLinks",
- IDS_SETTINGS_PRIVACY_GUIDE_COMPLETION_CARD_SUB_HEADER_NO_LINKS},
- {"privacyGuideCompletionCardLeaveButton",
- IDS_SETTINGS_PRIVACY_GUIDE_COMPLETION_CARD_LEAVE_BUTTON},
- {"privacyGuideCompletionCardPrivacySandboxLabel",
- IDS_SETTINGS_PRIVACY_GUIDE_COMPLETION_CARD_PRIVACY_SANDBOX_LABEL},
- {"privacyGuideCompletionCardPrivacySandboxSubLabel",
- IDS_SETTINGS_PRIVACY_GUIDE_COMPLETION_CARD_PRIVACY_SANDBOX_SUB_LABEL},
- {"privacyGuideCompletionCardWaaLabel",
- IDS_SETTINGS_PRIVACY_GUIDE_COMPLETION_CARD_WAA_LABEL},
- {"privacyGuideCompletionCardWaaSubLabel",
- IDS_SETTINGS_PRIVACY_GUIDE_COMPLETION_CARD_WAA_SUB_LABEL},
- {"privacyGuideComposeAdditionalSettings",
- IDS_SETTINGS_PRIVACY_GUIDE_COMPOSE_HEADERIDS__ADDITIONAL_SETTINGS},
- {"privacyGuideComposeHeader", IDS_SETTINGS_PRIVACY_GUIDE_COMPOSE_HEADER},
- {"privacyGuideComposeDescription",
- IDS_SETTINGS_PRIVACY_GUIDE_COMPOSE_DESCRIPTION},
- {"privacyGuideMsbbCardHeader", IDS_SETTINGS_PRIVACY_GUIDE_MSBB_CARD_HEADER},
- {"privacyGuideMsbbFeatureDescription1",
- IDS_SETTINGS_PRIVACY_GUIDE_MSBB_FEATURE_DESCRIPTION1},
- {"privacyGuideMsbbFeatureDescription2",
- IDS_SETTINGS_PRIVACY_GUIDE_MSBB_FEATURE_DESCRIPTION2},
- {"privacyGuideMsbbFeatureDescription3",
- IDS_SETTINGS_PRIVACY_GUIDE_MSBB_FEATURE_DESCRIPTION3},
- {"privacyGuideMsbbPrivacyDescription1",
- IDS_SETTINGS_PRIVACY_GUIDE_MSBB_PRIVACY_DESCRIPTION1},
- {"privacyGuideMsbbPrivacyDescription2",
- IDS_SETTINGS_PRIVACY_GUIDE_MSBB_PRIVACY_DESCRIPTION2},
- {"privacyGuideHistorySyncCardHeader",
- IDS_SETTINGS_PRIVACY_GUIDE_HISTORY_SYNC_CARD_HEADER},
- {"privacyGuideHistorySyncSettingLabel",
- IDS_SETTINGS_PRIVACY_GUIDE_HISTORY_SYNC_SETTING_LABEL},
- {"privacyGuideHistorySyncFeatureDescription1",
- IDS_SETTINGS_PRIVACY_GUIDE_HISTORY_SYNC_FEATURE_DESCRIPTION1},
- {"privacyGuideHistorySyncFeatureDescription2",
- IDS_SETTINGS_PRIVACY_GUIDE_HISTORY_SYNC_FEATURE_DESCRIPTION2},
- {"privacyGuideHistorySyncPrivacyDescription1",
- IDS_SETTINGS_PRIVACY_GUIDE_HISTORY_SYNC_PRIVACY_DESCRIPTION1},
- {"privacyGuideCookiesCardHeader",
- IDS_SETTINGS_PRIVACY_GUIDE_COOKIES_CARD_HEADER},
- {"privacyGuideCookiesCardBlockTpcIncognitoSubheader",
- IDS_SETTINGS_PRIVACY_GUIDE_COOKIES_CARD_BLOCK_TPC_INCOGNITO_SUBHEADER},
- {"privacyGuideCookiesCardBlockTpcIncognitoFeatureDescription1",
- IDS_SETTINGS_PRIVACY_GUIDE_COOKIES_CARD_BLOCK_TPC_INCOGNITO_FEATURE_DESCRIPTION1},
- {"privacyGuideCookiesCardBlockTpcIncognitoFeatureDescription2",
- IDS_SETTINGS_PRIVACY_GUIDE_COOKIES_CARD_BLOCK_TPC_INCOGNITO_FEATURE_DESCRIPTION2},
- {"privacyGuideCookiesCardBlockTpcIncognitoPrivacyDescription1",
- IDS_SETTINGS_PRIVACY_GUIDE_COOKIES_CARD_BLOCK_TPC_INCOGNITO_PRIVACY_DESCRIPTION1},
- {"privacyGuideCookiesCardBlockTpcIncognitoPrivacyDescription2",
- IDS_SETTINGS_PRIVACY_GUIDE_COOKIES_CARD_BLOCK_TPC_INCOGNITO_PRIVACY_DESCRIPTION2},
- {"privacyGuideCookiesCardBlockTpcSubheader",
- IDS_SETTINGS_PRIVACY_GUIDE_COOKIES_CARD_BLOCK_TPC_SUBHEADER},
- {"privacyGuideCookiesCardBlockTpcFeatureDescription1",
- IDS_SETTINGS_PRIVACY_GUIDE_COOKIES_CARD_BLOCK_TPC_FEATURE_DESCRIPTION1},
- {"privacyGuideCookiesCardBlockTpcFeatureDescription2",
- IDS_SETTINGS_PRIVACY_GUIDE_COOKIES_CARD_BLOCK_TPC_FEATURE_DESCRIPTION2},
- {"privacyGuideCookiesCardBlockTpcPrivacyDescription1",
- IDS_SETTINGS_PRIVACY_GUIDE_COOKIES_CARD_BLOCK_TPC_PRIVACY_DESCRIPTION1},
- {"privacyGuideSafeBrowsingCardHeader",
- IDS_SETTINGS_PRIVACY_GUIDE_SAFE_BROWSING_CARD_HEADER},
- {"privacyGuideSafeBrowsingCardEnhancedProtectionPrivacyDescription1",
- IDS_SETTINGS_PRIVACY_GUIDE_SAFE_BROWSING_CARD_ENHANCED_PROTECTION_PRIVACY_DESCRIPTION1},
- {"privacyGuideSafeBrowsingCardEnhancedProtectionPrivacyDescription2",
- IDS_SETTINGS_PRIVACY_GUIDE_SAFE_BROWSING_CARD_ENHANCED_PROTECTION_PRIVACY_DESCRIPTION2},
- {"privacyGuideSafeBrowsingCardEnhancedProtectionPrivacyDescription3",
- IDS_SETTINGS_PRIVACY_GUIDE_SAFE_BROWSING_CARD_ENHANCED_PROTECTION_PRIVACY_DESCRIPTION3},
- {"privacyGuideSafeBrowsingCardStandardProtectionFeatureDescription1",
- IDS_SETTINGS_PRIVACY_GUIDE_SAFE_BROWSING_CARD_STANDARD_PROTECTION_FEATURE_DESCRIPTION1},
- {"privacyGuideSafeBrowsingCardStandardProtectionFeatureDescription2",
- IDS_SETTINGS_PRIVACY_GUIDE_SAFE_BROWSING_CARD_STANDARD_PROTECTION_FEATURE_DESCRIPTION2},
+ {"privacyGuideLabel", IDS_SETTINGS_PRIVACY_GUIDE_LABEL},
+ {"privacyGuideSublabel", IDS_SETTINGS_PRIVACY_GUIDE_SUBLABEL},
+ {"privacyGuidePromoHeader", IDS_SETTINGS_PRIVACY_GUIDE_PROMO_HEADER},
+ {"privacyGuidePromoBody", IDS_SETTINGS_PRIVACY_GUIDE_PROMO_BODY},
+ {"privacyGuidePromoStartButton",
+ IDS_SETTINGS_PRIVACY_GUIDE_PROMO_START_BUTTON},
+ {"privacyGuideBackToSettingsAriaLabel",
+ IDS_SETTINGS_PRIVACY_GUIDE_BACK_TO_SETTINGS_ARIA_LABEL},
+ {"privacyGuideBackToSettingsAriaRoleDescription",
+ IDS_SETTINGS_PRIVACY_GUIDE_BACK_TO_SETTINGS_ARIA_ROLE_DESC},
+ {"privacyGuideBackButton", IDS_SETTINGS_PRIVACY_GUIDE_BACK_BUTTON},
+ {"privacyGuideSteps", IDS_SETTINGS_PRIVACY_GUIDE_STEPS},
+ {"privacyGuideNextButton", IDS_SETTINGS_PRIVACY_GUIDE_NEXT_BUTTON},
+ {"privacyGuideFeatureDescriptionHeader",
+ IDS_SETTINGS_PRIVACY_GUIDE_FEATURE_DESCRIPTION_HEADER},
+ {"privacyGuideThingsToConsider",
+ IDS_SETTINGS_PRIVACY_GUIDE_THINGS_TO_CONSIDER},
+ {"privacyGuideWelcomeCardHeader",
+ IDS_SETTINGS_PRIVACY_GUIDE_WELCOME_CARD_HEADER},
+ {"privacyGuideWelcomeCardSubHeader",
+ IDS_SETTINGS_PRIVACY_GUIDE_WELCOME_CARD_SUB_HEADER},
+ {"privacyGuideCompletionCardHeader",
+ IDS_SETTINGS_PRIVACY_GUIDE_COMPLETION_CARD_HEADER},
+ {"privacyGuideCompletionCardSubHeader",
+ IDS_SETTINGS_PRIVACY_GUIDE_COMPLETION_CARD_SUB_HEADER},
+ {"privacyGuideCompletionCardSubHeaderNoLinks",
+ IDS_SETTINGS_PRIVACY_GUIDE_COMPLETION_CARD_SUB_HEADER_NO_LINKS},
+ {"privacyGuideCompletionCardLeaveButton",
+ IDS_SETTINGS_PRIVACY_GUIDE_COMPLETION_CARD_LEAVE_BUTTON},
+ {"privacyGuideCompletionCardPrivacySandboxLabel",
+ IDS_SETTINGS_PRIVACY_GUIDE_COMPLETION_CARD_PRIVACY_SANDBOX_LABEL},
+ {"privacyGuideCompletionCardPrivacySandboxSubLabel",
+ IDS_SETTINGS_PRIVACY_GUIDE_COMPLETION_CARD_PRIVACY_SANDBOX_SUB_LABEL},
+ {"privacyGuideCompletionCardWaaLabel",
+ IDS_SETTINGS_PRIVACY_GUIDE_COMPLETION_CARD_WAA_LABEL},
+ {"privacyGuideCompletionCardWaaSubLabel",
+ IDS_SETTINGS_PRIVACY_GUIDE_COMPLETION_CARD_WAA_SUB_LABEL},
+ {"privacyGuideMsbbCardHeader",
+ IDS_SETTINGS_PRIVACY_GUIDE_MSBB_CARD_HEADER},
+ {"privacyGuideMsbbFeatureDescription1",
+ IDS_SETTINGS_PRIVACY_GUIDE_MSBB_FEATURE_DESCRIPTION1},
+ {"privacyGuideMsbbFeatureDescription2",
+ IDS_SETTINGS_PRIVACY_GUIDE_MSBB_FEATURE_DESCRIPTION2},
+ {"privacyGuideMsbbFeatureDescription3",
+ IDS_SETTINGS_PRIVACY_GUIDE_MSBB_FEATURE_DESCRIPTION3},
+ {"privacyGuideMsbbPrivacyDescription1",
+ IDS_SETTINGS_PRIVACY_GUIDE_MSBB_PRIVACY_DESCRIPTION1},
+ {"privacyGuideMsbbPrivacyDescription2",
+ IDS_SETTINGS_PRIVACY_GUIDE_MSBB_PRIVACY_DESCRIPTION2},
+ {"privacyGuideHistorySyncCardHeader",
+ IDS_SETTINGS_PRIVACY_GUIDE_HISTORY_SYNC_CARD_HEADER},
+ {"privacyGuideHistorySyncSettingLabel",
+ IDS_SETTINGS_PRIVACY_GUIDE_HISTORY_SYNC_SETTING_LABEL},
+ {"privacyGuideHistorySyncFeatureDescription1",
+ IDS_SETTINGS_PRIVACY_GUIDE_HISTORY_SYNC_FEATURE_DESCRIPTION1},
+ {"privacyGuideHistorySyncFeatureDescription2",
+ IDS_SETTINGS_PRIVACY_GUIDE_HISTORY_SYNC_FEATURE_DESCRIPTION2},
+ {"privacyGuideHistorySyncPrivacyDescription1",
+ IDS_SETTINGS_PRIVACY_GUIDE_HISTORY_SYNC_PRIVACY_DESCRIPTION1},
+ {"privacyGuideCookiesCardHeader",
+ IDS_SETTINGS_PRIVACY_GUIDE_COOKIES_CARD_HEADER},
+ {"privacyGuideCookiesCardBlockTpcIncognitoSubheader",
+ IDS_SETTINGS_PRIVACY_GUIDE_COOKIES_CARD_BLOCK_TPC_INCOGNITO_SUBHEADER},
+ {"privacyGuideCookiesCardBlockTpcIncognitoFeatureDescription1",
+ IDS_SETTINGS_PRIVACY_GUIDE_COOKIES_CARD_BLOCK_TPC_INCOGNITO_FEATURE_DESCRIPTION1},
+ {"privacyGuideCookiesCardBlockTpcIncognitoFeatureDescription2",
+ IDS_SETTINGS_PRIVACY_GUIDE_COOKIES_CARD_BLOCK_TPC_INCOGNITO_FEATURE_DESCRIPTION2},
+ {"privacyGuideCookiesCardBlockTpcIncognitoPrivacyDescription1",
+ IDS_SETTINGS_PRIVACY_GUIDE_COOKIES_CARD_BLOCK_TPC_INCOGNITO_PRIVACY_DESCRIPTION1},
+ {"privacyGuideCookiesCardBlockTpcIncognitoPrivacyDescription2",
+ IDS_SETTINGS_PRIVACY_GUIDE_COOKIES_CARD_BLOCK_TPC_INCOGNITO_PRIVACY_DESCRIPTION2},
+ {"privacyGuideCookiesCardBlockTpcSubheader",
+ IDS_SETTINGS_PRIVACY_GUIDE_COOKIES_CARD_BLOCK_TPC_SUBHEADER},
+ {"privacyGuideCookiesCardBlockTpcFeatureDescription1",
+ IDS_SETTINGS_PRIVACY_GUIDE_COOKIES_CARD_BLOCK_TPC_FEATURE_DESCRIPTION1},
+ {"privacyGuideCookiesCardBlockTpcFeatureDescription2",
+ IDS_SETTINGS_PRIVACY_GUIDE_COOKIES_CARD_BLOCK_TPC_FEATURE_DESCRIPTION2},
+ {"privacyGuideCookiesCardBlockTpcPrivacyDescription1",
+ IDS_SETTINGS_PRIVACY_GUIDE_COOKIES_CARD_BLOCK_TPC_PRIVACY_DESCRIPTION1},
+ {"privacyGuideSafeBrowsingCardHeader",
+ IDS_SETTINGS_PRIVACY_GUIDE_SAFE_BROWSING_CARD_HEADER},
+ {"privacyGuideSafeBrowsingCardEnhancedProtectionPrivacyDescription1",
+ IDS_SETTINGS_PRIVACY_GUIDE_SAFE_BROWSING_CARD_ENHANCED_PROTECTION_PRIVACY_DESCRIPTION1},
+ {"privacyGuideSafeBrowsingCardEnhancedProtectionPrivacyDescription2",
+ IDS_SETTINGS_PRIVACY_GUIDE_SAFE_BROWSING_CARD_ENHANCED_PROTECTION_PRIVACY_DESCRIPTION2},
+ {"privacyGuideSafeBrowsingCardEnhancedProtectionPrivacyDescription3",
+ IDS_SETTINGS_PRIVACY_GUIDE_SAFE_BROWSING_CARD_ENHANCED_PROTECTION_PRIVACY_DESCRIPTION3},
+ {"privacyGuideSafeBrowsingCardStandardProtectionFeatureDescription1",
+ IDS_SETTINGS_PRIVACY_GUIDE_SAFE_BROWSING_CARD_STANDARD_PROTECTION_FEATURE_DESCRIPTION1},
+ {"privacyGuideSafeBrowsingCardStandardProtectionFeatureDescription2",
+ IDS_SETTINGS_PRIVACY_GUIDE_SAFE_BROWSING_CARD_STANDARD_PROTECTION_FEATURE_DESCRIPTION2},
#if BUILDFLAG(GOOGLE_CHROME_BRANDING)
- {"privacyGuideSafeBrowsingCardStandardProtectionFeatureDescription2Proxy",
- IDS_SETTINGS_PRIVACY_GUIDE_SAFE_BROWSING_CARD_STANDARD_PROTECTION_FEATURE_DESCRIPTION2_PROXY},
+ {"privacyGuideSafeBrowsingCardStandardProtectionFeatureDescription2Proxy",
+ IDS_SETTINGS_PRIVACY_GUIDE_SAFE_BROWSING_CARD_STANDARD_PROTECTION_FEATURE_DESCRIPTION2_PROXY},
#endif
- {"privacyGuideSafeBrowsingCardStandardProtectionPrivacyDescription1",
- IDS_SETTINGS_PRIVACY_GUIDE_SAFE_BROWSING_CARD_STANDARD_PROTECTION_PRIVACY_DESCRIPTION1},
+ {"privacyGuideSafeBrowsingCardStandardProtectionPrivacyDescription1",
+ IDS_SETTINGS_PRIVACY_GUIDE_SAFE_BROWSING_CARD_STANDARD_PROTECTION_PRIVACY_DESCRIPTION1},
#if BUILDFLAG(GOOGLE_CHROME_BRANDING)
- {"privacyGuideSafeBrowsingCardStandardProtectionPrivacyDescription1Proxy",
- IDS_SETTINGS_PRIVACY_GUIDE_SAFE_BROWSING_CARD_STANDARD_PROTECTION_PRIVACY_DESCRIPTION1_PROXY},
-#endif
- {"privacyGuideSearchSuggestionsCardHeader",
- IDS_SETTINGS_PRIVACY_GUIDE_SEARCH_SUGGESTIONS_CARD_HEADER},
- {"privacyGuideSearchSuggestionsFeatureDescription1",
- IDS_SETTINGS_PRIVACY_GUIDE_SEARCH_SUGGESTIONS_FEATURE_DESCRIPTION1},
- {"privacyGuideSearchSuggestionsPrivacyDescription1",
- IDS_SETTINGS_PRIVACY_GUIDE_SEARCH_SUGGESTIONS_PRIVACY_DESCRIPTION1},
- {"privacyGuideSearchSuggestionsPrivacyDescription2",
- IDS_SETTINGS_PRIVACY_GUIDE_SEARCH_SUGGESTIONS_PRIVACY_DESCRIPTION2},
- {"privacyGuideSearchSuggestionsPrivacyDescription3",
- IDS_SETTINGS_PRIVACY_GUIDE_SEARCH_SUGGESTIONS_PRIVACY_DESCRIPTION3},
+ {"privacyGuideSafeBrowsingCardStandardProtectionPrivacyDescription1Proxy",
+ IDS_SETTINGS_PRIVACY_GUIDE_SAFE_BROWSING_CARD_STANDARD_PROTECTION_PRIVACY_DESCRIPTION1_PROXY},
+#endif
+ {"privacyGuideSearchSuggestionsCardHeader",
+ IDS_SETTINGS_PRIVACY_GUIDE_SEARCH_SUGGESTIONS_CARD_HEADER},
+ {"privacyGuideSearchSuggestionsFeatureDescription1",
+ IDS_SETTINGS_PRIVACY_GUIDE_SEARCH_SUGGESTIONS_FEATURE_DESCRIPTION1},
+ {"privacyGuideSearchSuggestionsPrivacyDescription1",
+ IDS_SETTINGS_PRIVACY_GUIDE_SEARCH_SUGGESTIONS_PRIVACY_DESCRIPTION1},
+ {"privacyGuideSearchSuggestionsPrivacyDescription2",
+ IDS_SETTINGS_PRIVACY_GUIDE_SEARCH_SUGGESTIONS_PRIVACY_DESCRIPTION2},
+ {"privacyGuideSearchSuggestionsPrivacyDescription3",
+ IDS_SETTINGS_PRIVACY_GUIDE_SEARCH_SUGGESTIONS_PRIVACY_DESCRIPTION3},
};
html_source->AddLocalizedStrings(kLocalizedStrings);
}
@@ -2428,28 +2428,44 @@ void AddSearchInSettingsStrings(content::WebUIDataSource* html_source) {
html_source->AddString("searchNoResultsHelp", help_text);
}
-void AddSearchStrings(content::WebUIDataSource* html_source) {
+void AddSearchStrings(content::WebUIDataSource* html_source
+#if BUILDFLAG(IS_CHROMEOS)
+ ,
+ bool for_primary_profile
+#endif // BUILDFLAG(IS_CHROMEOS)
+) {
static constexpr webui::LocalizedString kLocalizedStrings[] = {
- {"searchEnginesManage", IDS_SETTINGS_SEARCH_MANAGE_SEARCH_ENGINES},
- {"searchEnginesManageSiteSearch",
- IDS_SETTINGS_SEARCH_MANAGE_SEARCH_ENGINES_AND_SITE_SEARCH},
- {"searchPageTitle", IDS_SETTINGS_SEARCH},
- {"searchExplanation", IDS_SETTINGS_SEARCH_EXPLANATION},
- {"searchExplanationLearnMoreA11yLabel",
- IDS_SETTINGS_SEARCH_EXPLANATION_ACCESSIBILITY_LABEL},
-#if BUILDFLAG(ENABLE_SEARCH_ENGINE_CHOICE)
- {"searchEngineChoiceEntryPointSubtitle",
- IDS_SEARCH_ENGINE_CHOICE_SETTINGS_ENTRY_POINT_SUBTITLE},
- {"searchEnginesChange",
- IDS_SEARCH_ENGINE_CHOICE_SETTINGS_CHANGE_DEFAULT_ENGINE},
- {"searchEnginesSettingsDialogSubtitle",
- IDS_SEARCH_ENGINE_CHOICE_SETTINGS_SUBTITLE},
- {"searchEnginesSetAsDefaultButton", IDS_SEARCH_ENGINE_CHOICE_BUTTON_TITLE},
- {"searchEnginesCancelButton", IDS_CANCEL},
-#endif
+ {"searchEnginesManage", IDS_SETTINGS_SEARCH_MANAGE_SEARCH_ENGINES},
+ {"searchEnginesManageSiteSearch",
+ IDS_SETTINGS_SEARCH_MANAGE_SEARCH_ENGINES_AND_SITE_SEARCH},
+ {"searchPageTitle", IDS_SETTINGS_SEARCH},
+ {"searchExplanationLearnMoreA11yLabel",
+ IDS_SETTINGS_SEARCH_EXPLANATION_ACCESSIBILITY_LABEL},
+ {"searchEngineChoiceEntryPointSubtitle",
+ IDS_SEARCH_ENGINE_CHOICE_SETTINGS_ENTRY_POINT_SUBTITLE},
+ {"searchEnginesChange",
+ IDS_SEARCH_ENGINE_CHOICE_SETTINGS_CHANGE_DEFAULT_ENGINE},
+ {"searchEnginesSettingsDialogSubtitle",
+ IDS_SEARCH_ENGINE_CHOICE_SETTINGS_SUBTITLE},
+ {"searchEnginesSetAsDefaultButton",
+ IDS_SEARCH_ENGINE_CHOICE_BUTTON_TITLE},
+ {"searchEnginesCancelButton", IDS_CANCEL},
};
html_source->AddLocalizedStrings(kLocalizedStrings);
+#if BUILDFLAG(IS_CHROMEOS)
+ if (for_primary_profile) {
+ html_source->AddLocalizedString(
+ "searchExplanation", IDS_SETTINGS_SEARCH_EXPLANATION_PRIMARY_PROFILE);
+ } else {
+ html_source->AddLocalizedString("searchExplanation",
+ IDS_SETTINGS_SEARCH_EXPLANATION);
+ }
+#else // !BUILDFLAG(IS_CHROMEOS)
+ html_source->AddLocalizedString("searchExplanation",
+ IDS_SETTINGS_SEARCH_EXPLANATION);
+#endif // BUILDFLAG(IS_CHROMEOS)
+
html_source->AddString("searchExplanationLearnMoreURL",
chrome::kOmniboxLearnMoreURL);
}
@@ -2462,6 +2478,8 @@ void AddSearchEnginesStrings(content::WebUIDataSource* html_source) {
IDS_SETTINGS_SEARCH_ENGINES_ADD_SEARCH_ENGINE},
{"searchEnginesEditSearchEngine",
IDS_SETTINGS_SEARCH_ENGINES_EDIT_SEARCH_ENGINE},
+ {"searchEnginesViewSearchEngine",
+ IDS_SETTINGS_SEARCH_ENGINES_VIEW_SEARCH_ENGINE},
{"searchEnginesDeleteConfirmationTitle",
IDS_SETTINGS_SEARCH_ENGINES_DELETE_CONFIRMATION_TITLE},
{"searchEnginesDeleteConfirmationDescription",
@@ -2492,6 +2510,7 @@ void AddSearchEnginesStrings(content::WebUIDataSource* html_source) {
{"searchEnginesMakeDefault", IDS_SETTINGS_SEARCH_ENGINES_MAKE_DEFAULT},
{"searchEnginesActivate", IDS_SETTINGS_SEARCH_ENGINES_ACTIVATE},
{"searchEnginesDeactivate", IDS_SETTINGS_SEARCH_ENGINES_DEACTIVATE},
+ {"searchEnginesViewDetails", IDS_SETTINGS_SEARCH_ENGINES_VIEW_DETAILS},
{"searchEnginesManageExtension",
IDS_SETTINGS_SEARCH_ENGINES_MANAGE_EXTENSION},
{"searchEnginesKeyboardShortcutsTitle",
@@ -2513,800 +2532,813 @@ void AddSearchEnginesStrings(content::WebUIDataSource* html_source) {
void AddSiteSettingsStrings(content::WebUIDataSource* html_source,
Profile* profile) {
static constexpr webui::LocalizedString kLocalizedStrings[] = {
- {"addSite", IDS_SETTINGS_ADD_SITE},
- {"addSiteTitle", IDS_SETTINGS_ADD_SITE_TITLE},
- {"addSitesTitle", IDS_SETTINGS_ADD_SITES_TITLE},
- {"embeddedOnAnyHost", IDS_SETTINGS_EXCEPTIONS_EMBEDDED_ON_ANY_HOST},
- {"embeddedOnHost", IDS_SETTINGS_EXCEPTIONS_EMBEDDED_ON_HOST},
- {"editSiteTitle", IDS_SETTINGS_EDIT_SITE_TITLE},
- {"noBluetoothDevicesFound", IDS_SETTINGS_NO_BLUETOOTH_DEVICES_FOUND},
- {"noHidDevicesFound", IDS_SETTINGS_NO_HID_DEVICES_FOUND},
- {"noSerialPortsFound", IDS_SETTINGS_NO_SERIAL_PORTS_FOUND},
- {"noUsbDevicesFound", IDS_SETTINGS_NO_USB_DEVICES_FOUND},
- {"resetBluetoothConfirmation", IDS_SETTINGS_RESET_BLUETOOTH_CONFIRMATION},
- {"resetHidConfirmation", IDS_SETTINGS_RESET_HID_CONFIRMATION},
- {"resetSerialPortsConfirmation",
- IDS_SETTINGS_RESET_SERIAL_PORTS_CONFIRMATION},
- {"resetUsbConfirmation", IDS_SETTINGS_RESET_USB_CONFIRMATION},
- {"siteSettingsRecentPermissionsSectionLabel",
- IDS_SETTINGS_SITE_SETTINGS_RECENT_ACTIVITY},
- {"siteSettingsCategoryCamera", IDS_SITE_SETTINGS_TYPE_CAMERA},
- {"siteSettingsCameraLabel", IDS_SITE_SETTINGS_TYPE_CAMERA},
- {"thirdPartyCookiesPageTitle", IDS_SETTINGS_THIRD_PARTY_COOKIES_PAGE_TITLE},
- {"thirdPartyCookiesLinkRowLabel",
- IDS_SETTINGS_THIRD_PARTY_COOKIES_LINK_ROW_LABEL},
- {"thirdPartyCookiesLinkRowSublabelEnabled",
- IDS_SETTINGS_THIRD_PARTY_COOKIES_LINK_ROW_SUB_LABEL_ENABLED},
- {"thirdPartyCookiesLinkRowSublabelDisabledIncognito",
- IDS_SETTINGS_THIRD_PARTY_COOKIES_LINK_ROW_SUB_LABEL_DISABLED_INCOGNITO},
- {"thirdPartyCookiesLinkRowSublabelDisabled",
- IDS_SETTINGS_THIRD_PARTY_COOKIES_LINK_ROW_SUB_LABEL_DISABLED},
- {"thirdPartyCookiesPageAllowRadioLabel",
- IDS_SETTINGS_THIRD_PARTY_COOKIES_PAGE_ALLOW_RADIO_LABEL},
- {"thirdPartyCookiesPageAllowExpandA11yLabel",
- IDS_SETTINGS_THIRD_PARTY_COOKIES_PAGE_ALLOW_EXPAND_A11Y_LABEL},
- {"thirdPartyCookiesPageAllowBulOne",
- IDS_SETTINGS_THIRD_PARTY_COOKIES_PAGE_ALLOW_BULLET_1},
- {"thirdPartyCookiesPageAllowBulTwo",
- IDS_SETTINGS_THIRD_PARTY_COOKIES_PAGE_ALLOW_BULLET_2},
- {"thirdPartyCookiesPageBlockIncognitoRadioLabel",
- IDS_SETTINGS_THIRD_PARTY_COOKIES_PAGE_BLOCK_INCOGNITO_RADIO_LABEL},
- {"thirdPartyCookiesPageBlockIncognitoExpandA11yLabel",
- IDS_SETTINGS_THIRD_PARTY_COOKIES_PAGE_BLOCK_INCOGNITO_EXPAND_A11Y_LABEL},
- {"thirdPartyCookiesPageBlockIncognitoBulOne",
- IDS_SETTINGS_THIRD_PARTY_COOKIES_PAGE_BLOCK_INCOGNITO_BULLET_1},
- {"thirdPartyCookiesPageBlockIncognitoBulTwo",
- IDS_SETTINGS_THIRD_PARTY_COOKIES_PAGE_BLOCK_INCOGNITO_BULLET_2},
- {"thirdPartyCookiesPageBlockRadioLabel",
- IDS_SETTINGS_THIRD_PARTY_COOKIES_PAGE_BLOCK_RADIO_LABEL},
- {"thirdPartyCookiesPageBlockExpandA11yLabel",
- IDS_SETTINGS_THIRD_PARTY_COOKIES_PAGE_BLOCK_EXPAND_A11Y_LABEL},
- {"thirdPartyCookiesPageBlockBulOne",
- IDS_SETTINGS_THIRD_PARTY_COOKIES_PAGE_BLOCK_BULLET_1},
- {"thirdPartyCookiesPageBlockBulTwo",
- IDS_SETTINGS_THIRD_PARTY_COOKIES_PAGE_BLOCK_BULLET_2},
- {"trackingProtectionLinkRowLabel",
- IDS_SETTINGS_TRACKING_PROTECTION_LINK_ROW_LABEL},
- {"trackingProtectionLinkRowSubLabel",
- IDS_SETTINGS_TRACKING_PROTECTION_LINK_ROW_SUB_LABEL},
-
- {"thirdPartyCookiesPageDescription",
- IDS_SETTINGS_THIRD_PARTY_COOKIES_PAGE_DESCRIPTION},
- {"thirdPartyCookiesPageDefaultBehaviorHeading",
- IDS_SETTINGS_THIRD_PARTY_COOKIES_PAGE_DEFAULT_BEHAVIOR_HEADING},
- {"thirdPartyCookiesPageDefaultBehaviorDescription",
- IDS_SETTINGS_THIRD_PARTY_COOKIES_PAGE_DEFAULT_BEHAVIOR_DESCRIPTION},
- {"thirdPartyCookiesPageCustomizedBehaviorHeading",
- IDS_SETTINGS_THIRD_PARTY_COOKIES_PAGE_CUSTOMIZED_BEHAVIOR_HEADING},
- {"thirdPartyCookiesPageCustomizedBehaviorDescription",
- IDS_SETTINGS_THIRD_PARTY_COOKIES_PAGE_CUSTOMIZED_BEHAVIOR_DESCRIPTION},
- {"thirdPartyCookiesPageAllowExceptionsSubHeading",
- IDS_SETTINGS_THIRD_PARTY_COOKIES_PAGE_ALLOW_EXCEPTIONS_SUB_HEADING},
- {"cookiePageTitle", IDS_SETTINGS_COOKIES_PAGE},
- {"cookiePageGeneralControls", IDS_SETTINGS_COOKIES_CONTROLS},
- {"cookiePageAllowAll", IDS_SETTINGS_COOKIES_ALLOW_ALL},
- {"cookiePageAllowAllExpandA11yLabel",
- IDS_SETTINGS_COOKIES_ALLOW_ALL_EXPAND_A11Y_LABEL},
- {"cookiePageAllowAllBulOne", IDS_SETTINGS_COOKIES_ALLOW_ALL_BULLET_ONE},
- {"cookiePageAllowAllBulTwo", IDS_SETTINGS_COOKIES_ALLOW_ALL_BULLET_TWO},
- {"cookiePageBlockThirdIncognito",
- IDS_SETTINGS_COOKIES_BLOCK_THIRD_PARTY_INCOGNITO},
- {"cookiePageBlockThirdIncognitoExpandA11yLabel",
- IDS_SETTINGS_COOKIES_BLOCK_THIRD_PARTY_INCOGNITO_EXPAND_A11Y_LABEL},
- {"cookiePageBlockThirdIncognitoBulOne",
- IDS_SETTINGS_COOKIES_BLOCK_THIRD_PARTY_INCOGNITO_BULLET_ONE},
- {"cookiePageBlockThirdIncognitoBulTwo",
- IDS_SETTINGS_COOKIES_BLOCK_THIRD_PARTY_INCOGNITO_BULLET_TWO},
- {"cookiePageBlockThirdIncognitoBulTwoFps",
- IDS_SETTINGS_COOKIES_BLOCK_THIRD_PARTY_INCOGNITO_BULLET_TWO_FPS},
- {"cookiePageBlockThird", IDS_SETTINGS_COOKIES_BLOCK_THIRD_PARTY},
- {"cookiePageBlockThirdExpandA11yLabel",
- IDS_SETTINGS_COOKIES_BLOCK_THIRD_PARTY_EXPAND_A11Y_LABEL},
- {"cookiePageBlockThirdBulOne",
- IDS_SETTINGS_COOKIES_BLOCK_THIRD_PARTY_BULLET_ONE},
- {"cookiePageBlockThirdBulTwo",
- IDS_SETTINGS_COOKIES_BLOCK_THIRD_PARTY_BULLET_TWO},
- {"cookiePageBlockAll", IDS_SETTINGS_COOKIES_BLOCK_ALL},
- {"cookiePageBlockAllExpandA11yLabel",
- IDS_SETTINGS_COOKIES_BLOCK_ALL_EXPAND_A11Y_LABEL},
- {"cookiePageBlockAllBulOne", IDS_SETTINGS_COOKIES_BLOCK_ALL_BULLET_ONE},
- {"cookiePageBlockAllBulTwo", IDS_SETTINGS_COOKIES_BLOCK_ALL_BULLET_TWO},
- {"cookiePageBlockAllBulThree", IDS_SETTINGS_COOKIES_BLOCK_ALL_BULLET_THREE},
- {"cookiePageFpsLabel", IDS_SETTINGS_COOKIES_FIRST_PARTY_SETS_TOGGLE_LABEL},
- {"cookiePageFpsSubLabel",
- IDS_SETTINGS_COOKIES_FIRST_PARTY_SETS_TOGGLE_SUB_LABEL},
- {"cookiePageClearOnExit", IDS_SETTINGS_COOKIES_CLEAR_ON_EXIT},
-#if !BUILDFLAG(IS_CHROMEOS_ASH)
- {"cookiePageClearOnExitDesc", IDS_SETTINGS_COOKIES_CLEAR_ON_EXIT_DESC},
-#endif
- {"cookiePageAllSitesLink", IDS_SETTINGS_COOKIES_ALL_SITES_LINK},
- {"cookiePageAllowExceptions", IDS_SETTINGS_COOKIES_ALLOW_EXCEPTIONS},
- {"cookiePageBlockExceptions", IDS_SETTINGS_COOKIES_BLOCK_EXCEPTIONS},
- {"cookiePageSessionOnlyExceptions",
- IDS_SETTINGS_COOKIES_SESSION_ONLY_EXCEPTIONS},
- {"trackingProtectionPageTitle",
- IDS_SETTINGS_TRACKING_PROTECTION_PAGE_TITLE},
- {"trackingProtectionPageDescription",
- IDS_SETTINGS_TRACKING_PROTECTION_PAGE_DESCRIPTION},
- {"trackingProtectionBulletOne",
- IDS_SETTINGS_TRACKING_PROTECTION_BULLET_ONE},
- {"trackingProtectionBulletOneDescription",
- IDS_SETTINGS_TRACKING_PROTECTION_BULLET_ONE_DESCRIPTION},
- {"trackingProtectionBulletTwo",
- IDS_SETTINGS_TRACKING_PROTECTION_BULLET_TWO},
- {"trackingProtectionAdvancedLabel",
- IDS_SETTINGS_TRACKING_PROTECTION_ADVANCED_LABEL},
- {"trackingProtectionThirdPartyCookiesToggleLabel",
- IDS_SETTINGS_TRACKING_PROTECTION_THIRD_PARTY_COOKIES_TOGGLE_LABEL},
- {"trackingProtectionThirdPartyCookiesToggleSubLabel",
- IDS_SETTINGS_TRACKING_PROTECTION_THIRD_PARTY_COOKIES_TOGGLE_SUB_LABEL},
- {"trackingProtectionThirdPartyCookiesLearnMoreAriaLabel",
- IDS_SETTINGS_TRACKING_PROTECTION_THIRD_PARTY_COOKIES_LEARN_MORE_ARIA_LABEL},
- {"trackingProtectionDoNotTrackToggleSubLabel",
- IDS_SETTINGS_TRACKING_PROTECTION_DO_NOT_TRACK_TOGGLE_SUB_LABEL},
- {"trackingProtectionSitesAllowedCookiesTitle",
- IDS_SETTINGS_TRACKING_PROTECTION_SITES_ALLOWED_COOKIES_TITLE},
- {"trackingProtectionSitesAllowedCookiesDescription",
- IDS_SETTINGS_TRACKING_PROTECTION_SITES_ALLOWED_COOKIES_DESCRIPTION},
- {"siteSettingsCategoryFederatedIdentityApi",
- IDS_SITE_SETTINGS_TYPE_FEDERATED_IDENTITY_API},
- {"siteSettingsCategoryHandlers", IDS_SITE_SETTINGS_TYPE_HANDLERS},
- {"siteSettingsCategoryImages", IDS_SITE_SETTINGS_TYPE_IMAGES},
- {"siteSettingsCategoryInsecureContent",
- IDS_SITE_SETTINGS_TYPE_INSECURE_CONTENT},
- {"siteSettingsCategoryLocation", IDS_SITE_SETTINGS_TYPE_LOCATION},
- {"siteSettingsCategoryJavascript", IDS_SITE_SETTINGS_TYPE_JAVASCRIPT},
- {"siteSettingsCategoryMicrophone", IDS_SITE_SETTINGS_TYPE_MIC},
- {"siteSettingsMicrophoneLabel", IDS_SITE_SETTINGS_TYPE_MIC},
- {"siteSettingsCategoryNotifications", IDS_SITE_SETTINGS_TYPE_NOTIFICATIONS},
- {"siteSettingsCategoryPopups", IDS_SITE_SETTINGS_TYPE_POPUPS_REDIRECTS},
- {"siteSettingsCategoryZoomLevels", IDS_SITE_SETTINGS_TYPE_ZOOM_LEVELS},
- {"siteSettingsAllSites", IDS_SETTINGS_SITE_SETTINGS_ALL_SITES},
- {"siteSettingsAllSitesDescription",
- IDS_SETTINGS_SITE_SETTINGS_ALL_SITES_DESCRIPTION},
- {"siteSettingsAllSitesSearch", IDS_SETTINGS_SITE_SETTINGS_ALL_SITES_SEARCH},
- {"siteSettingsAllSitesSort", IDS_SETTINGS_SITE_SETTINGS_ALL_SITES_SORT},
- {"siteSettingsAllSitesSortMethodMostVisited",
- IDS_SETTINGS_SITE_SETTINGS_ALL_SITES_SORT_METHOD_MOST_VISITED},
- {"siteSettingsAllSitesSortMethodStorage",
- IDS_SETTINGS_SITE_SETTINGS_ALL_SITES_SORT_METHOD_STORAGE},
- {"siteSettingsAllSitesSortMethodName",
- IDS_SETTINGS_SITE_SETTINGS_ALL_SITES_SORT_METHOD_NAME},
- {"siteSettingsFileSystemSiteListHeader",
- IDS_SETTINGS_SITE_SETTINGS_FILE_SYSTEM_SITE_LIST_HEADER},
- {"siteSettingsFileSystemSiteListEditHeader",
- IDS_SETTINGS_SITE_SETTINGS_FILE_SYSTEM_SITE_LIST_EDIT_HEADER},
- {"siteSettingsFileSystemSiteListRemoveGrantLabel",
- IDS_SETTINGS_SITE_SETTINGS_FILE_SYSTEM_SITE_LIST_REMOVE_GRANT_LABEL},
- {"siteSettingsFileSystemSiteListRemoveGrants",
- IDS_SETTINGS_SITE_SETTINGS_FILE_SYSTEM_SITE_LIST_REMOVE_GRANTS},
- {"siteSettingsFileSystemSiteListViewHeader",
- IDS_SETTINGS_SITE_SETTINGS_FILE_SYSTEM_SITE_LIST_VIEW_HEADER},
- {"siteSettingsFileSystemSiteListViewSiteDetails",
- IDS_SETTINGS_SITE_SETTINGS_FILE_SYSTEM_SITE_LIST_VIEW_SITE_DETAILS},
- {"siteSettingsSiteEntryPartitionedLabel",
- IDS_SETTINGS_SITE_SETTINGS_SITE_ENTRY_PARTITIONED_LABEL},
- {"siteSettingsSiteRepresentationSeparator",
- IDS_SETTINGS_SITE_SETTINGS_SITE_REPRESENTATION_SEPARATOR},
- {"siteSettingsAppProtocolHandlers",
- IDS_SETTINGS_SITE_SETTINGS_APP_PROTOCOL_HANDLERS},
- {"siteSettingsAppAllowedProtocolHandlersDescription",
- IDS_SETTINGS_SITE_SETTINGS_APP_ALLOWED_PROTOCOL_HANDLERS_DESCRIPTION},
- {"siteSettingsAppDisallowedProtocolHandlersDescription",
- IDS_SETTINGS_SITE_SETTINGS_APP_DISALLOWED_PROTOCOL_HANDLERS_DESCRIPTION},
- {"siteSettingsAutomaticDownloads",
- IDS_SITE_SETTINGS_TYPE_AUTOMATIC_DOWNLOADS},
- {"siteSettingsAutomaticDownloadsMidSentence",
- IDS_SITE_SETTINGS_TYPE_AUTOMATIC_DOWNLOADS_MID_SENTENCE},
- {"siteSettingsAutoPictureInPicture",
- IDS_SITE_SETTINGS_TYPE_AUTO_PICTURE_IN_PICTURE},
- {"siteSettingsAutoPictureInPictureMidSentence",
- IDS_SITE_SETTINGS_TYPE_AUTO_PICTURE_IN_PICTURE_MID_SENTENCE},
- {"siteSettingsBackgroundSync", IDS_SITE_SETTINGS_TYPE_BACKGROUND_SYNC},
- {"siteSettingsBackgroundSyncMidSentence",
- IDS_SITE_SETTINGS_TYPE_BACKGROUND_SYNC_MID_SENTENCE},
- {"siteSettingsCamera", IDS_SITE_SETTINGS_TYPE_CAMERA},
- {"siteSettingsCameraMidSentence",
- IDS_SITE_SETTINGS_TYPE_CAMERA_MID_SENTENCE},
- {"siteSettingsClipboard", IDS_SITE_SETTINGS_TYPE_CLIPBOARD},
- {"siteSettingsClipboardMidSentence",
- IDS_SITE_SETTINGS_TYPE_CLIPBOARD_MID_SENTENCE},
- {"siteSettingsCookies", IDS_SITE_SETTINGS_TYPE_COOKIES},
- {"siteSettingsCookiesMidSentence",
- IDS_SITE_SETTINGS_TYPE_COOKIES_MID_SENTENCE},
- {"siteSettingsHandlers", IDS_SITE_SETTINGS_TYPE_HANDLERS},
- {"siteSettingsHandlersMidSentence",
- IDS_SITE_SETTINGS_TYPE_HANDLERS_MID_SENTENCE},
- {"siteSettingsLocation", IDS_SITE_SETTINGS_TYPE_LOCATION},
- {"siteSettingsLocationMidSentence",
- IDS_SITE_SETTINGS_TYPE_LOCATION_MID_SENTENCE},
- {"siteSettingsMic", IDS_SITE_SETTINGS_TYPE_MIC},
- {"siteSettingsMicMidSentence", IDS_SITE_SETTINGS_TYPE_MIC_MID_SENTENCE},
- {"siteSettingsNotifications", IDS_SITE_SETTINGS_TYPE_NOTIFICATIONS},
- {"siteSettingsNotificationsMidSentence",
- IDS_SITE_SETTINGS_TYPE_NOTIFICATIONS_MID_SENTENCE},
- {"siteSettingsImages", IDS_SITE_SETTINGS_TYPE_IMAGES},
- {"siteSettingsImagesMidSentence",
- IDS_SITE_SETTINGS_TYPE_IMAGES_MID_SENTENCE},
- {"siteSettingsInsecureContent", IDS_SITE_SETTINGS_TYPE_INSECURE_CONTENT},
- {"siteSettingsInsecureContentMidSentence",
- IDS_SITE_SETTINGS_TYPE_INSECURE_CONTENT_MID_SENTENCE},
- {"siteSettingsInsecureContentBlock",
- IDS_SETTINGS_SITE_SETTINGS_INSECURE_CONTENT_BLOCK},
- {"siteSettingsJavascript", IDS_SITE_SETTINGS_TYPE_JAVASCRIPT},
- {"siteSettingsJavascriptMidSentence",
- IDS_SITE_SETTINGS_TYPE_JAVASCRIPT_MID_SENTENCE},
- {"siteSettingsSound", IDS_SITE_SETTINGS_TYPE_SOUND},
- {"siteSettingsSoundMidSentence", IDS_SITE_SETTINGS_TYPE_SOUND_MID_SENTENCE},
- {"siteSettingsPdfDocuments", IDS_SITE_SETTINGS_TYPE_PDF_DOCUMENTS},
- {"siteSettingsPdfDownloadPdfs",
- IDS_SETTINGS_SITE_SETTINGS_PDF_DOWNLOAD_PDFS},
- {"siteSettingsProtectedContent", IDS_SITE_SETTINGS_TYPE_PROTECTED_MEDIA_ID},
- {"siteSettingsProtectedContentMidSentence",
- IDS_SITE_SETTINGS_TYPE_PROTECTED_MEDIA_ID_MID_SENTENCE},
- {"siteSettingsProtectedContentIdentifiers",
- IDS_SITE_SETTINGS_TYPE_PROTECTED_MEDIA_ID},
- {"siteSettingsProtectedContentDescription",
- IDS_SETTINGS_SITE_SETTINGS_PROTECTED_CONTENT_DESCRIPTION},
- {"siteSettingsProtectedContentAllowed",
- IDS_SETTINGS_SITE_SETTINGS_PROTECTED_CONTENT_ALLOWED},
- {"siteSettingsProtectedContentBlocked",
- IDS_SETTINGS_SITE_SETTINGS_PROTECTED_CONTENT_BLOCKED},
- {"siteSettingsProtectedContentBlockedSubLabel",
- IDS_SETTINGS_SITE_SETTINGS_PROTECTED_CONTENT_BLOCKED_SUB_LABEL},
+ {"addSite", IDS_SETTINGS_ADD_SITE},
+ {"addSiteTitle", IDS_SETTINGS_ADD_SITE_TITLE},
+ {"addSitesTitle", IDS_SETTINGS_ADD_SITES_TITLE},
+ {"embeddedOnAnyHost", IDS_SETTINGS_EXCEPTIONS_EMBEDDED_ON_ANY_HOST},
+ {"embeddedOnHost", IDS_SETTINGS_EXCEPTIONS_EMBEDDED_ON_HOST},
+ {"editSiteTitle", IDS_SETTINGS_EDIT_SITE_TITLE},
+ {"noBluetoothDevicesFound", IDS_SETTINGS_NO_BLUETOOTH_DEVICES_FOUND},
+ {"noHidDevicesFound", IDS_SETTINGS_NO_HID_DEVICES_FOUND},
+ {"noSerialPortsFound", IDS_SETTINGS_NO_SERIAL_PORTS_FOUND},
+ {"noUsbDevicesFound", IDS_SETTINGS_NO_USB_DEVICES_FOUND},
+ {"resetBluetoothConfirmation", IDS_SETTINGS_RESET_BLUETOOTH_CONFIRMATION},
+ {"resetHidConfirmation", IDS_SETTINGS_RESET_HID_CONFIRMATION},
+ {"resetSerialPortsConfirmation",
+ IDS_SETTINGS_RESET_SERIAL_PORTS_CONFIRMATION},
+ {"resetUsbConfirmation", IDS_SETTINGS_RESET_USB_CONFIRMATION},
+ {"siteSettingsRecentPermissionsSectionLabel",
+ IDS_SETTINGS_SITE_SETTINGS_RECENT_ACTIVITY},
+ {"siteSettingsCategoryCamera", IDS_SITE_SETTINGS_TYPE_CAMERA},
+ {"siteSettingsCameraLabel", IDS_SITE_SETTINGS_TYPE_CAMERA},
+ {"thirdPartyCookiesPageTitle",
+ IDS_SETTINGS_THIRD_PARTY_COOKIES_PAGE_TITLE},
+ {"thirdPartyCookiesLinkRowLabel",
+ IDS_SETTINGS_THIRD_PARTY_COOKIES_LINK_ROW_LABEL},
+ {"thirdPartyCookiesLinkRowSublabelEnabled",
+ IDS_SETTINGS_THIRD_PARTY_COOKIES_LINK_ROW_SUB_LABEL_ENABLED},
+ {"thirdPartyCookiesLinkRowSublabelDisabledIncognito",
+ IDS_SETTINGS_THIRD_PARTY_COOKIES_LINK_ROW_SUB_LABEL_DISABLED_INCOGNITO},
+ {"thirdPartyCookiesLinkRowSublabelDisabled",
+ IDS_SETTINGS_THIRD_PARTY_COOKIES_LINK_ROW_SUB_LABEL_DISABLED},
+ {"thirdPartyCookiesPageAllowRadioLabel",
+ IDS_SETTINGS_THIRD_PARTY_COOKIES_PAGE_ALLOW_RADIO_LABEL},
+ {"thirdPartyCookiesPageAllowExpandA11yLabel",
+ IDS_SETTINGS_THIRD_PARTY_COOKIES_PAGE_ALLOW_EXPAND_A11Y_LABEL},
+ {"thirdPartyCookiesPageAllowBulOne",
+ IDS_SETTINGS_THIRD_PARTY_COOKIES_PAGE_ALLOW_BULLET_1},
+ {"thirdPartyCookiesPageAllowBulTwo",
+ IDS_SETTINGS_THIRD_PARTY_COOKIES_PAGE_ALLOW_BULLET_2},
+ {"thirdPartyCookiesPageBlockIncognitoRadioLabel",
+ IDS_SETTINGS_THIRD_PARTY_COOKIES_PAGE_BLOCK_INCOGNITO_RADIO_LABEL},
+ {"thirdPartyCookiesPageBlockIncognitoExpandA11yLabel",
+ IDS_SETTINGS_THIRD_PARTY_COOKIES_PAGE_BLOCK_INCOGNITO_EXPAND_A11Y_LABEL},
+ {"thirdPartyCookiesPageBlockIncognitoBulOne",
+ IDS_SETTINGS_THIRD_PARTY_COOKIES_PAGE_BLOCK_INCOGNITO_BULLET_1},
+ {"thirdPartyCookiesPageBlockIncognitoBulTwo",
+ IDS_SETTINGS_THIRD_PARTY_COOKIES_PAGE_BLOCK_INCOGNITO_BULLET_2},
+ {"thirdPartyCookiesPageBlockRadioLabel",
+ IDS_SETTINGS_THIRD_PARTY_COOKIES_PAGE_BLOCK_RADIO_LABEL},
+ {"thirdPartyCookiesPageBlockExpandA11yLabel",
+ IDS_SETTINGS_THIRD_PARTY_COOKIES_PAGE_BLOCK_EXPAND_A11Y_LABEL},
+ {"thirdPartyCookiesPageBlockBulOne",
+ IDS_SETTINGS_THIRD_PARTY_COOKIES_PAGE_BLOCK_BULLET_1},
+ {"thirdPartyCookiesPageBlockBulTwo",
+ IDS_SETTINGS_THIRD_PARTY_COOKIES_PAGE_BLOCK_BULLET_2},
+ {"trackingProtectionLinkRowLabel",
+ IDS_SETTINGS_TRACKING_PROTECTION_LINK_ROW_LABEL},
+ {"trackingProtectionLinkRowSubLabel",
+ IDS_SETTINGS_TRACKING_PROTECTION_LINK_ROW_SUB_LABEL},
+
+ {"thirdPartyCookiesPageDescription",
+ IDS_SETTINGS_THIRD_PARTY_COOKIES_PAGE_DESCRIPTION},
+ {"thirdPartyCookiesPageDefaultBehaviorHeading",
+ IDS_SETTINGS_THIRD_PARTY_COOKIES_PAGE_DEFAULT_BEHAVIOR_HEADING},
+ {"thirdPartyCookiesPageDefaultBehaviorDescription",
+ IDS_SETTINGS_THIRD_PARTY_COOKIES_PAGE_DEFAULT_BEHAVIOR_DESCRIPTION},
+ {"thirdPartyCookiesPageCustomizedBehaviorHeading",
+ IDS_SETTINGS_THIRD_PARTY_COOKIES_PAGE_CUSTOMIZED_BEHAVIOR_HEADING},
+ {"thirdPartyCookiesPageCustomizedBehaviorDescription",
+ IDS_SETTINGS_THIRD_PARTY_COOKIES_PAGE_CUSTOMIZED_BEHAVIOR_DESCRIPTION},
+ {"thirdPartyCookiesPageAllowExceptionsSubHeading",
+ IDS_SETTINGS_THIRD_PARTY_COOKIES_PAGE_ALLOW_EXCEPTIONS_SUB_HEADING},
+ {"cookiePageBlockThirdIncognitoBulTwoFps",
+ IDS_SETTINGS_COOKIES_BLOCK_THIRD_PARTY_INCOGNITO_BULLET_TWO_FPS},
+ {"cookiePageFpsLabel",
+ IDS_SETTINGS_COOKIES_FIRST_PARTY_SETS_TOGGLE_LABEL},
+ {"cookiePageFpsSubLabel",
+ IDS_SETTINGS_COOKIES_FIRST_PARTY_SETS_TOGGLE_SUB_LABEL},
+ {"cookiePageAllSitesLink", IDS_SETTINGS_COOKIES_ALL_SITES_LINK},
+ {"trackingProtectionPageTitle",
+ IDS_SETTINGS_TRACKING_PROTECTION_PAGE_TITLE},
+ {"trackingProtectionPageDescription",
+ IDS_SETTINGS_TRACKING_PROTECTION_PAGE_DESCRIPTION},
+ {"trackingProtectionBulletOne",
+ IDS_SETTINGS_TRACKING_PROTECTION_BULLET_ONE},
+ {"trackingProtectionBulletOneDescription",
+ IDS_SETTINGS_TRACKING_PROTECTION_BULLET_ONE_DESCRIPTION},
+ {"trackingProtectionBulletTwo",
+ IDS_SETTINGS_TRACKING_PROTECTION_BULLET_TWO},
+ {"trackingProtectionAdvancedLabel",
+ IDS_SETTINGS_TRACKING_PROTECTION_ADVANCED_LABEL},
+ {"trackingProtectionThirdPartyCookiesToggleLabel",
+ IDS_SETTINGS_TRACKING_PROTECTION_THIRD_PARTY_COOKIES_TOGGLE_LABEL},
+ {"trackingProtectionThirdPartyCookiesToggleSubLabel",
+ IDS_SETTINGS_TRACKING_PROTECTION_THIRD_PARTY_COOKIES_TOGGLE_SUB_LABEL},
+ {"trackingProtectionThirdPartyCookiesLearnMoreAriaLabel",
+ IDS_SETTINGS_TRACKING_PROTECTION_THIRD_PARTY_COOKIES_LEARN_MORE_ARIA_LABEL},
+ {"trackingProtectionDoNotTrackToggleSubLabel",
+ IDS_SETTINGS_TRACKING_PROTECTION_DO_NOT_TRACK_TOGGLE_SUB_LABEL},
+ {"trackingProtectionSitesAllowedCookiesTitle",
+ IDS_SETTINGS_TRACKING_PROTECTION_SITES_ALLOWED_COOKIES_TITLE},
+ {"trackingProtectionSitesAllowedCookiesDescription",
+ IDS_SETTINGS_TRACKING_PROTECTION_SITES_ALLOWED_COOKIES_DESCRIPTION},
+ {"siteSettingsCategoryFederatedIdentityApi",
+ IDS_SITE_SETTINGS_TYPE_FEDERATED_IDENTITY_API},
+ {"siteSettingsCategoryHandlers", IDS_SITE_SETTINGS_TYPE_HANDLERS},
+ {"siteSettingsCategoryImages", IDS_SITE_SETTINGS_TYPE_IMAGES},
+ {"siteSettingsCategoryInsecureContent",
+ IDS_SITE_SETTINGS_TYPE_INSECURE_CONTENT},
+ {"siteSettingsCategoryLocation", IDS_SITE_SETTINGS_TYPE_LOCATION},
+ {"siteSettingsCategoryJavascript", IDS_SITE_SETTINGS_TYPE_JAVASCRIPT},
+ {"siteSettingsCategoryJavascriptJit",
+ IDS_SITE_SETTINGS_TYPE_JAVASCRIPT_JIT},
+ {"siteSettingsCategoryMicrophone", IDS_SITE_SETTINGS_TYPE_MIC},
+ {"siteSettingsMicrophoneLabel", IDS_SITE_SETTINGS_TYPE_MIC},
+ {"siteSettingsCategoryNotifications",
+ IDS_SITE_SETTINGS_TYPE_NOTIFICATIONS},
+ {"siteSettingsCategoryPopups", IDS_SITE_SETTINGS_TYPE_POPUPS_REDIRECTS},
+ {"siteSettingsCategoryZoomLevels", IDS_SITE_SETTINGS_TYPE_ZOOM_LEVELS},
+ {"siteSettingsAllSites", IDS_SETTINGS_SITE_SETTINGS_ALL_SITES},
+ {"siteSettingsAllSitesDescription",
+ IDS_SETTINGS_SITE_SETTINGS_ALL_SITES_DESCRIPTION},
+ {"siteSettingsAllSitesSearch",
+ IDS_SETTINGS_SITE_SETTINGS_ALL_SITES_SEARCH},
+ {"siteSettingsAllSitesSort", IDS_SETTINGS_SITE_SETTINGS_ALL_SITES_SORT},
+ {"siteSettingsAllSitesSortMethodMostVisited",
+ IDS_SETTINGS_SITE_SETTINGS_ALL_SITES_SORT_METHOD_MOST_VISITED},
+ {"siteSettingsAllSitesSortMethodStorage",
+ IDS_SETTINGS_SITE_SETTINGS_ALL_SITES_SORT_METHOD_STORAGE},
+ {"siteSettingsAllSitesSortMethodName",
+ IDS_SETTINGS_SITE_SETTINGS_ALL_SITES_SORT_METHOD_NAME},
+ {"siteSettingsFileSystemSiteListHeader",
+ IDS_SETTINGS_SITE_SETTINGS_FILE_SYSTEM_SITE_LIST_HEADER},
+ {"siteSettingsFileSystemSiteListEditHeader",
+ IDS_SETTINGS_SITE_SETTINGS_FILE_SYSTEM_SITE_LIST_EDIT_HEADER},
+ {"siteSettingsFileSystemSiteListRemoveGrantLabel",
+ IDS_SETTINGS_SITE_SETTINGS_FILE_SYSTEM_SITE_LIST_REMOVE_GRANT_LABEL},
+ {"siteSettingsFileSystemSiteListRemoveGrants",
+ IDS_SETTINGS_SITE_SETTINGS_FILE_SYSTEM_SITE_LIST_REMOVE_GRANTS},
+ {"siteSettingsFileSystemSiteListViewHeader",
+ IDS_SETTINGS_SITE_SETTINGS_FILE_SYSTEM_SITE_LIST_VIEW_HEADER},
+ {"siteSettingsFileSystemSiteListViewSiteDetails",
+ IDS_SETTINGS_SITE_SETTINGS_FILE_SYSTEM_SITE_LIST_VIEW_SITE_DETAILS},
+ {"siteSettingsSiteEntryPartitionedLabel",
+ IDS_SETTINGS_SITE_SETTINGS_SITE_ENTRY_PARTITIONED_LABEL},
+ {"siteSettingsSiteRepresentationSeparator",
+ IDS_SETTINGS_SITE_SETTINGS_SITE_REPRESENTATION_SEPARATOR},
+ {"siteSettingsAppProtocolHandlers",
+ IDS_SETTINGS_SITE_SETTINGS_APP_PROTOCOL_HANDLERS},
+ {"siteSettingsAppAllowedProtocolHandlersDescription",
+ IDS_SETTINGS_SITE_SETTINGS_APP_ALLOWED_PROTOCOL_HANDLERS_DESCRIPTION},
+ {"siteSettingsAppDisallowedProtocolHandlersDescription",
+ IDS_SETTINGS_SITE_SETTINGS_APP_DISALLOWED_PROTOCOL_HANDLERS_DESCRIPTION},
+ {"siteSettingsAutomaticDownloads",
+ IDS_SITE_SETTINGS_TYPE_AUTOMATIC_DOWNLOADS},
+ {"siteSettingsAutomaticDownloadsMidSentence",
+ IDS_SITE_SETTINGS_TYPE_AUTOMATIC_DOWNLOADS_MID_SENTENCE},
+ {"siteSettingsAutoPictureInPicture",
+ IDS_SITE_SETTINGS_TYPE_AUTO_PICTURE_IN_PICTURE},
+ {"siteSettingsAutoPictureInPictureMidSentence",
+ IDS_SITE_SETTINGS_TYPE_AUTO_PICTURE_IN_PICTURE_MID_SENTENCE},
+ {"siteSettingsBackgroundSync", IDS_SITE_SETTINGS_TYPE_BACKGROUND_SYNC},
+ {"siteSettingsBackgroundSyncMidSentence",
+ IDS_SITE_SETTINGS_TYPE_BACKGROUND_SYNC_MID_SENTENCE},
+ {"siteSettingsCamera", IDS_SITE_SETTINGS_TYPE_CAMERA},
+ {"siteSettingsCameraMidSentence",
+ IDS_SITE_SETTINGS_TYPE_CAMERA_MID_SENTENCE},
+ {"siteSettingsClipboard", IDS_SITE_SETTINGS_TYPE_CLIPBOARD},
+ {"siteSettingsClipboardMidSentence",
+ IDS_SITE_SETTINGS_TYPE_CLIPBOARD_MID_SENTENCE},
+ {"siteSettingsCookies", IDS_SITE_SETTINGS_TYPE_COOKIES},
+ {"siteSettingsCookiesMidSentence",
+ IDS_SITE_SETTINGS_TYPE_COOKIES_MID_SENTENCE},
+ {"siteSettingsHandlers", IDS_SITE_SETTINGS_TYPE_HANDLERS},
+ {"siteSettingsHandlersMidSentence",
+ IDS_SITE_SETTINGS_TYPE_HANDLERS_MID_SENTENCE},
+ {"siteSettingsLocation", IDS_SITE_SETTINGS_TYPE_LOCATION},
+ {"siteSettingsLocationMidSentence",
+ IDS_SITE_SETTINGS_TYPE_LOCATION_MID_SENTENCE},
+ {"siteSettingsMic", IDS_SITE_SETTINGS_TYPE_MIC},
+ {"siteSettingsMicMidSentence", IDS_SITE_SETTINGS_TYPE_MIC_MID_SENTENCE},
+ {"siteSettingsNotifications", IDS_SITE_SETTINGS_TYPE_NOTIFICATIONS},
+ {"siteSettingsNotificationsMidSentence",
+ IDS_SITE_SETTINGS_TYPE_NOTIFICATIONS_MID_SENTENCE},
+ {"siteSettingsImages", IDS_SITE_SETTINGS_TYPE_IMAGES},
+ {"siteSettingsImagesMidSentence",
+ IDS_SITE_SETTINGS_TYPE_IMAGES_MID_SENTENCE},
+ {"siteSettingsInsecureContent", IDS_SITE_SETTINGS_TYPE_INSECURE_CONTENT},
+ {"siteSettingsInsecureContentMidSentence",
+ IDS_SITE_SETTINGS_TYPE_INSECURE_CONTENT_MID_SENTENCE},
+ {"siteSettingsInsecureContentBlock",
+ IDS_SETTINGS_SITE_SETTINGS_INSECURE_CONTENT_BLOCK},
+ {"siteSettingsJavascript", IDS_SITE_SETTINGS_TYPE_JAVASCRIPT},
+ {"siteSettingsJavascriptMidSentence",
+ IDS_SITE_SETTINGS_TYPE_JAVASCRIPT_MID_SENTENCE},
+ {"siteSettingsJavascriptJit", IDS_SITE_SETTINGS_TYPE_JAVASCRIPT_JIT},
+ {"siteSettingsJavascriptJitMidsentence",
+ IDS_SITE_SETTINGS_TYPE_JAVASCRIPT_JIT}, // Deliberately the same form.
+ {"siteSettingsSound", IDS_SITE_SETTINGS_TYPE_SOUND},
+ {"siteSettingsSoundMidSentence",
+ IDS_SITE_SETTINGS_TYPE_SOUND_MID_SENTENCE},
+ {"siteSettingsPdfDocuments", IDS_SITE_SETTINGS_TYPE_PDF_DOCUMENTS},
+ {"siteSettingsPdfDownloadPdfs",
+ IDS_SETTINGS_SITE_SETTINGS_PDF_DOWNLOAD_PDFS},
+ {"siteSettingsProtectedContent",
+ IDS_SITE_SETTINGS_TYPE_PROTECTED_MEDIA_ID},
+ {"siteSettingsProtectedContentMidSentence",
+ IDS_SITE_SETTINGS_TYPE_PROTECTED_MEDIA_ID_MID_SENTENCE},
+ {"siteSettingsProtectedContentIdentifiers",
+ IDS_SITE_SETTINGS_TYPE_PROTECTED_MEDIA_ID},
+ {"siteSettingsProtectedContentDescription",
+ IDS_SETTINGS_SITE_SETTINGS_PROTECTED_CONTENT_DESCRIPTION},
+ {"siteSettingsProtectedContentAllowed",
+ IDS_SETTINGS_SITE_SETTINGS_PROTECTED_CONTENT_ALLOWED},
+ {"siteSettingsProtectedContentBlocked",
+ IDS_SETTINGS_SITE_SETTINGS_PROTECTED_CONTENT_BLOCKED},
+ {"siteSettingsProtectedContentBlockedSubLabel",
+ IDS_SETTINGS_SITE_SETTINGS_PROTECTED_CONTENT_BLOCKED_SUB_LABEL},
#if BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_WIN)
- {"siteSettingsProtectedContentIdentifiersExplanation",
- IDS_SETTINGS_SITE_SETTINGS_PROTECTED_CONTENT_IDENTIFIERS_EXPLANATION},
- {"siteSettingsProtectedContentIdentifiersAllowed",
- IDS_SETTINGS_SITE_SETTINGS_PROTECTED_CONTENT_IDENTIFIERS_ALLOWED},
- {"siteSettingsProtectedContentIdentifiersBlocked",
- IDS_SETTINGS_SITE_SETTINGS_PROTECTED_CONTENT_IDENTIFIERS_BLOCKED},
- {"siteSettingsProtectedContentIdentifiersBlockedSubLabel",
- IDS_SETTINGS_SITE_SETTINGS_PROTECTED_CONTENT_IDENTIFIERS_BLOCKED_SUB_LABEL},
- {"siteSettingsProtectedContentIdentifiersAllowedExceptions",
- IDS_SETTINGS_SITE_SETTINGS_PROTECTED_CONTENT_IDENTIFIERS_ALLOWED_EXCEPTIONS},
- {"siteSettingsProtectedContentIdentifiersBlockedExceptions",
- IDS_SETTINGS_SITE_SETTINGS_PROTECTED_CONTENT_IDENTIFIERS_BLOCKED_EXCEPTIONS},
+ {"siteSettingsProtectedContentIdentifiersExplanation",
+ IDS_SETTINGS_SITE_SETTINGS_PROTECTED_CONTENT_IDENTIFIERS_EXPLANATION},
+ {"siteSettingsProtectedContentIdentifiersAllowed",
+ IDS_SETTINGS_SITE_SETTINGS_PROTECTED_CONTENT_IDENTIFIERS_ALLOWED},
+ {"siteSettingsProtectedContentIdentifiersBlocked",
+ IDS_SETTINGS_SITE_SETTINGS_PROTECTED_CONTENT_IDENTIFIERS_BLOCKED},
+ {"siteSettingsProtectedContentIdentifiersBlockedSubLabel",
+ IDS_SETTINGS_SITE_SETTINGS_PROTECTED_CONTENT_IDENTIFIERS_BLOCKED_SUB_LABEL},
+ {"siteSettingsProtectedContentIdentifiersAllowedExceptions",
+ IDS_SETTINGS_SITE_SETTINGS_PROTECTED_CONTENT_IDENTIFIERS_ALLOWED_EXCEPTIONS},
+ {"siteSettingsProtectedContentIdentifiersBlockedExceptions",
+ IDS_SETTINGS_SITE_SETTINGS_PROTECTED_CONTENT_IDENTIFIERS_BLOCKED_EXCEPTIONS},
#endif
#if BUILDFLAG(IS_WIN) && BUILDFLAG(GOOGLE_CHROME_BRANDING)
- {"siteSettingsProtectedContentIdentifiersAllowedSubLabel",
- IDS_SETTINGS_SITE_SETTINGS_PROTECTED_CONTENT_IDENTIFIERS_ALLOWED_SUB_LABEL},
-#endif
- {"siteSettingsPopups", IDS_SITE_SETTINGS_TYPE_POPUPS_REDIRECTS},
- {"siteSettingsPopupsMidSentence",
- IDS_SITE_SETTINGS_TYPE_POPUPS_REDIRECTS_MID_SENTENCE},
- {"siteSettingsHidDevices", IDS_SITE_SETTINGS_TYPE_HID_DEVICES},
- {"siteSettingsHidDevicesMidSentence",
- IDS_SITE_SETTINGS_TYPE_HID_DEVICES_MID_SENTENCE},
- {"siteSettingsHidDevicesAsk", IDS_SETTINGS_SITE_SETTINGS_HID_DEVICES_ASK},
- {"siteSettingsHidDevicesBlock",
- IDS_SETTINGS_SITE_SETTINGS_HID_DEVICES_BLOCK},
- {"siteSettingsMidiDevices", IDS_SITE_SETTINGS_TYPE_MIDI},
- {"siteSettingsMidiDevicesMidSentence",
- IDS_SITE_SETTINGS_TYPE_MIDI_MID_SENTENCE},
- {"siteSettingsSerialPorts", IDS_SITE_SETTINGS_TYPE_SERIAL_PORTS},
- {"siteSettingsSerialPortsMidSentence",
- IDS_SITE_SETTINGS_TYPE_SERIAL_PORTS_MID_SENTENCE},
- {"siteSettingsUsbDevices", IDS_SITE_SETTINGS_TYPE_USB_DEVICES},
- {"siteSettingsUsbDevicesMidSentence",
- IDS_SITE_SETTINGS_TYPE_USB_DEVICES_MID_SENTENCE},
- {"siteSettingsBluetoothDevices", IDS_SITE_SETTINGS_TYPE_BLUETOOTH_DEVICES},
- {"siteSettingsBluetoothDevicesMidSentence",
- IDS_SITE_SETTINGS_TYPE_BLUETOOTH_DEVICES_MID_SENTENCE},
- {"siteSettingsFileSystemWrite",
- IDS_SITE_SETTINGS_TYPE_FILE_SYSTEM_ACCESS_WRITE},
- {"siteSettingsFileSystemWriteMidSentence",
- IDS_SITE_SETTINGS_TYPE_FILE_SYSTEM_ACCESS_WRITE_MID_SENTENCE},
- {"siteSettingsRemoveZoomLevel",
- IDS_SETTINGS_SITE_SETTINGS_REMOVE_ZOOM_LEVEL},
- {"siteSettingsZoomLevels", IDS_SITE_SETTINGS_TYPE_ZOOM_LEVELS},
- {"siteSettingsZoomLevelsMidSentence",
- IDS_SITE_SETTINGS_TYPE_ZOOM_LEVELS_MID_SENTENCE},
- {"siteSettingsNoZoomedSites", IDS_SETTINGS_SITE_SETTINGS_NO_ZOOMED_SITES},
- {"siteSettingsAskBeforeSending",
- IDS_SETTINGS_SITE_SETTINGS_ASK_BEFORE_SENDING},
- {"siteSettingsHandlersAskRecommended",
- IDS_SETTINGS_SITE_SETTINGS_HANDLERS_ASK_RECOMMENDED},
- {"siteSettingsHandlersBlocked",
- IDS_SETTINGS_SITE_SETTINGS_HANDLERS_BLOCKED},
- {"siteSettingsCookiesAllowed",
- IDS_SETTINGS_SITE_SETTINGS_COOKIES_ALLOW_SITES},
- {"siteSettingsAllow", IDS_SETTINGS_SITE_SETTINGS_ALLOW},
- {"siteSettingsBlock", IDS_SETTINGS_SITE_SETTINGS_BLOCK},
- {"siteSettingsSessionOnly", IDS_SETTINGS_SITE_SETTINGS_SESSION_ONLY},
- {"siteSettingsBlocked", IDS_SETTINGS_SITE_SETTINGS_BLOCKED},
- {"siteSettingsActionAskDefault",
- IDS_SETTINGS_SITE_SETTINGS_ASK_DEFAULT_MENU},
- {"siteSettingsActionAllowDefault",
- IDS_SETTINGS_SITE_SETTINGS_ALLOW_DEFAULT_MENU},
- {"siteSettingsActionAutomaticDefault",
- IDS_SETTINGS_SITE_SETTINGS_AUTOMATIC_DEFAULT_MENU},
- {"siteSettingsActionBlockDefault",
- IDS_SETTINGS_SITE_SETTINGS_BLOCK_DEFAULT_MENU},
- {"siteSettingsActionMuteDefault",
- IDS_SETTINGS_SITE_SETTINGS_MUTE_DEFAULT_MENU},
- {"siteSettingsActionAllow", IDS_SETTINGS_SITE_SETTINGS_ALLOW_MENU},
- {"siteSettingsActionBlock", IDS_SETTINGS_SITE_SETTINGS_BLOCK_MENU},
- {"siteSettingsActionAsk", IDS_SETTINGS_SITE_SETTINGS_ASK_MENU},
- {"siteSettingsActionMute", IDS_SETTINGS_SITE_SETTINGS_MUTE_MENU},
- {"siteSettingsActionReset", IDS_SETTINGS_SITE_SETTINGS_RESET_MENU},
- {"siteSettingsActionSessionOnly",
- IDS_SETTINGS_SITE_SETTINGS_SESSION_ONLY_MENU},
- {"siteSettingsUsage", IDS_SETTINGS_SITE_SETTINGS_USAGE},
- {"siteSettingsUsageNone", IDS_SETTINGS_SITE_SETTINGS_USAGE_NONE},
- {"siteSettingsPermissions", IDS_SETTINGS_SITE_SETTINGS_PERMISSIONS},
- {"siteSettingsPermissionsMore",
- IDS_SETTINGS_SITE_SETTINGS_PERMISSIONS_MORE},
- {"siteSettingsContent", IDS_SETTINGS_SITE_SETTINGS_CONTENT},
- {"siteSettingsContentMore", IDS_SETTINGS_SITE_SETTINGS_CONTENT_MORE},
- {"siteSettingsSourceExtensionAllow",
- IDS_PAGE_INFO_PERMISSION_ALLOWED_BY_EXTENSION},
- {"siteSettingsSourceExtensionBlock",
- IDS_PAGE_INFO_PERMISSION_BLOCKED_BY_EXTENSION},
- {"siteSettingsSourceExtensionAsk",
- IDS_PAGE_INFO_PERMISSION_ASK_BY_EXTENSION},
- {"siteSettingsSourcePolicyAllow",
- IDS_PAGE_INFO_PERMISSION_ALLOWED_BY_POLICY},
- {"siteSettingsSourcePolicyBlock",
- IDS_PAGE_INFO_PERMISSION_BLOCKED_BY_POLICY},
- {"siteSettingsSourcePolicyAsk", IDS_PAGE_INFO_PERMISSION_ASK_BY_POLICY},
- {"siteSettingsAdsBlockNotBlocklistedSingular",
- IDS_SETTINGS_SITE_SETTINGS_ADS_BLOCK_NOT_BLOCKLISTED_SINGULAR},
- {"siteSettingsAllowlisted", IDS_SETTINGS_SITE_SETTINGS_ALLOWLISTED},
- {"siteSettingsAdsBlockBlocklistedSingular",
- IDS_SETTINGS_SITE_SETTINGS_ADS_BLOCK_BLOCKLISTED_SINGULAR},
- {"siteSettingsSourceEmbargo",
- IDS_PAGE_INFO_PERMISSION_AUTOMATICALLY_BLOCKED},
- {"siteSettingsSourceInsecureOrigin",
- IDS_SETTINGS_SITE_SETTINGS_SOURCE_INSECURE_ORIGIN},
- {"siteSettingsSourceKillSwitch",
- IDS_SETTINGS_SITE_SETTINGS_SOURCE_KILL_SWITCH},
- {"siteSettingsReset", IDS_SETTINGS_SITE_SETTINGS_RESET_BUTTON},
- {"siteSettingsCookiesThirdPartyExceptionLabel",
- IDS_SETTINGS_SITE_SETTINGS_THIRD_PARTY_COOKIES_EXCEPTION_LABEL},
- {"siteSettingsCookieRemoveSite",
- IDS_SETTINGS_SITE_SETTINGS_COOKIE_REMOVE_SITE},
- {"siteSettingsDelete", IDS_SETTINGS_SITE_SETTINGS_DELETE},
- {"siteSettingsDeleteAllStorageDialogTitle",
- IDS_SETTINGS_SITE_SETTINGS_DELETE_ALL_STORAGE_DIALOG_TITLE},
- {"siteSettingsDeleteDisplayedStorageDialogTitle",
- IDS_SETTINGS_SITE_SETTINGS_DELETE_DISPLAYED_STORAGE_DIALOG_TITLE},
- {"siteSettingsFirstPartySetsLearnMore",
- IDS_SETTINGS_SITE_SETTINGS_FIRST_PARTY_SETS_LEARN_MORE},
- {"siteSettingsFirstPartySetsLearnMoreAccessibility",
- IDS_SETTINGS_SITE_SETTINGS_FIRST_PARTY_SETS_LEARN_MORE_ACCESSIBILITY},
- {"siteSettingsClearAllStorageDescription",
- IDS_SETTINGS_SITE_SETTINGS_CLEAR_ALL_STORAGE_DESCRIPTION},
- {"siteSettingsClearDisplayedStorageDescription",
- IDS_SETTINGS_SITE_SETTINGS_CLEAR_DISPLAYED_STORAGE_DESCRIPTION},
- {"siteSettingsDeleteAllStorageLabel",
- IDS_SETTINGS_SITE_SETTINGS_DELETE_ALL_STORAGE_LABEL},
- {"siteSettingsDeleteDisplayedStorageLabel",
- IDS_SETTINGS_SITE_SETTINGS_DELETE_DISPLAYED_STORAGE_LABEL},
- {"siteSettingsDeleteAllStorageConfirmation",
- IDS_SETTINGS_SITE_SETTINGS_DELETE_ALL_STORAGE_CONFIRMATION},
- {"siteSettingsDeleteDisplayedStorageConfirmation",
- IDS_SETTINGS_SITE_SETTINGS_DELETE_DISPLAYED_STORAGE_CONFIRMATION},
- {"siteSettingsDeleteAllStorageConfirmationInstalled",
- IDS_SETTINGS_SITE_SETTINGS_DELETE_ALL_STORAGE_CONFIRMATION_INSTALLED},
- {"siteSettingsDeleteDisplayedStorageConfirmationInstalled",
- IDS_SETTINGS_SITE_SETTINGS_DELETE_DISPLAYED_STORAGE_CONFIRMATION_INSTALLED},
- {"siteSettingsClearAllStorageSignOut",
- IDS_SETTINGS_SITE_SETTINGS_CLEAR_ALL_STORAGE_SIGN_OUT},
- {"siteSettingsClearDisplayedStorageSignOut",
- IDS_SETTINGS_SITE_SETTINGS_CLEAR_DISPLAYED_STORAGE_SIGN_OUT},
- {"siteSettingsSiteDetailsSubpageAccessibilityLabel",
- IDS_SETTINGS_SITE_SETTINGS_SITE_DETAILS_SUBPAGE_ACCESSIBILITY_LABEL},
- {"firstPartySetsMoreActionsTitle",
- IDS_SETTINGS_SITE_SETTINGS_FIRST_PARTY_SETS_MORE_ACTIONS_TITLE},
- {"firstPartySetsShowRelatedSitesButton",
- IDS_SETTINGS_SITE_SETTINGS_FIRST_PARTY_SETS_SHOW_RELATED_SITES_BUTTON},
- {"firstPartySetsSiteDeleteStorageButton",
- IDS_SETTINGS_SITE_SETTINGS_FIRST_PARTY_SETS_SITE_DELETE_STORAGE_BUTTON},
- {"siteSettingsSiteClearStorage",
- IDS_SETTINGS_SITE_SETTINGS_SITE_CLEAR_STORAGE},
- {"siteSettingsSiteClearStorageConfirmation",
- IDS_SETTINGS_SITE_SETTINGS_SITE_CLEAR_STORAGE_CONFIRMATION},
- {"siteSettingsSiteClearStorageConfirmationNew",
- IDS_SETTINGS_SITE_SETTINGS_SITE_CLEAR_STORAGE_CONFIRMATION_NEW},
- {"siteSettingsSiteDeleteStorageDialogTitle",
- IDS_SETTINGS_SITE_SETTINGS_SITE_DELETE_STORAGE_DIALOG_TITLE},
- {"siteSettingsSiteClearStorageSignOut",
- IDS_SETTINGS_SITE_SETTINGS_SITE_CLEAR_STORAGE_SIGN_OUT},
- {"siteSettingsSiteDeleteStorageOfflineData",
- IDS_SETTINGS_SITE_SETTINGS_SITE_DELETE_STORAGE_OFFLINE_DATA},
- {"siteSettingsRemoveSiteAdPersonalization",
- IDS_SETTINGS_SITE_SETTINGS_REMOVE_SITE_AD_PERSONALIZATION},
- {"siteSettingsSiteGroupDeleteOfflineData",
- IDS_SETTINGS_SITE_SETTINGS_SITE_GROUP_DELETE_OFFLINE_DATA},
- {"siteSettingsSiteResetAll", IDS_SETTINGS_SITE_SETTINGS_SITE_RESET_ALL},
- {"siteSettingsSiteResetConfirmation",
- IDS_SETTINGS_SITE_SETTINGS_SITE_RESET_CONFIRMATION},
- {"siteSettingsRemoveSite", IDS_SETTINGS_SITE_SETTINGS_COOKIE_REMOVE_SITE},
- {"siteSettingsRemoveSiteOriginDialogTitle",
- IDS_SETTINGS_SITE_SETTINGS_REMOVE_SITE_ORIGIN_DIALOG_TITLE},
- {"siteSettingsRemoveSiteOriginAppDialogTitle",
- IDS_SETTINGS_SITE_SETTINGS_REMOVE_SITE_ORIGIN_APP_DIALOG_TITLE},
- {"siteSettingsRemoveSiteOriginPartitionedDialogTitle",
- IDS_SETTINGS_SITE_SETTINGS_REMOVE_SITE_ORIGIN_PARTITIONED_DIALOG_TITLE},
- {"siteSettingsRemoveSiteGroupDialogTitle",
- IDS_SETTINGS_SITE_SETTINGS_REMOVE_SITE_GROUP_DIALOG_TITLE},
- {"siteSettingsRemoveSiteGroupAppDialogTitle",
- IDS_SETTINGS_SITE_SETTINGS_REMOVE_SITE_GROUP_APP_DIALOG_TITLE},
- {"siteSettingsRemoveSiteGroupAppPluralDialogTitle",
- IDS_SETTINGS_SITE_SETTINGS_REMOVE_SITE_GROUP_APP_PLURAL_DIALOG_TITLE},
- {"siteSettingsRemoveSiteOriginLogout",
- IDS_SETTINGS_SITE_SETTINGS_REMOVE_SITE_ORIGIN_LOGOUT},
- {"siteSettingsRemoveSiteGroupLogout",
- IDS_SETTINGS_SITE_SETTINGS_REMOVE_SITE_GROUP_LOGOUT},
- {"siteSettingsRemoveSiteOfflineData",
- IDS_SETTINGS_SITE_SETTINGS_REMOVE_SITE_OFFLINE_DATA},
- {"siteSettingsRemoveSitePermissions",
- IDS_SETTINGS_SITE_SETTINGS_REMOVE_SITE_PERMISSIONS},
- {"siteSettingsRemoveSiteConfirm",
- IDS_SETTINGS_SITE_SETTINGS_REMOVE_SITE_CONFIRM},
- {"thirdPartyCookie", IDS_NEW_TAB_OTR_THIRD_PARTY_COOKIE},
- {"thirdPartyCookieSublabel", IDS_NEW_TAB_OTR_THIRD_PARTY_COOKIE_SUBLABEL},
- {"handlerIsDefault", IDS_SETTINGS_SITE_SETTINGS_HANDLER_IS_DEFAULT},
- {"handlerSetDefault", IDS_SETTINGS_SITE_SETTINGS_HANDLER_SET_DEFAULT},
- {"handlerRemove", IDS_SETTINGS_SITE_SETTINGS_REMOVE},
- {"incognitoSiteOnly", IDS_SETTINGS_SITE_SETTINGS_INCOGNITO_ONLY},
- {"incognitoSiteExceptionDesc",
- IDS_SETTINGS_SITE_SETTINGS_INCOGNITO_SITE_EXCEPTION_DESC},
- {"noSitesAdded", IDS_SETTINGS_SITE_NO_SITES_ADDED},
- {"siteSettingsDefaultBehavior",
- IDS_SETTINGS_SITE_SETTINGS_DEFAULT_BEHAVIOR},
- {"siteSettingsDefaultBehaviorDescription",
- IDS_SETTINGS_SITE_SETTINGS_DEFAULT_BEHAVIOR_DESCRIPTION},
- {"siteSettingsNotificationsDefaultBehaviorDescription",
- IDS_SETTINGS_SITE_SETTINGS_NOTIFICATIONS_DEFAULT_BEHAVIOR_DESC},
- {"siteSettingsCustomizedBehaviors",
- IDS_SETTINGS_SITE_SETTINGS_CUSTOMIZED_BEHAVIORS},
- {"siteSettingsCustomizedBehaviorsDescription",
- IDS_SETTINGS_SITE_SETTINGS_CUSTOMIZED_BEHAVIORS_DESCRIPTION},
- {"siteSettingsCustomizedBehaviorsDescriptionShort",
- IDS_SETTINGS_SITE_SETTINGS_CUSTOMIZED_BEHAVIORS_DESCRIPTION_SHORT},
- {"siteSettingsAdsDescription", IDS_SETTINGS_SITE_SETTINGS_ADS_DESCRIPTION},
- {"siteSettingsAdsAllowed", IDS_SETTINGS_SITE_SETTINGS_ADS_ALLOWED},
- {"siteSettingsAdsBlocked", IDS_SETTINGS_SITE_SETTINGS_ADS_BLOCKED},
- {"siteSettingsAdsAllowedExceptions",
- IDS_SETTINGS_SITE_SETTINGS_ADS_ALLOWED_EXCEPTIONS},
- {"siteSettingsAdsBlockedExceptions",
- IDS_SETTINGS_SITE_SETTINGS_ADS_BLOCKED_EXCEPTIONS},
- {"siteSettingsArDescription", IDS_SETTINGS_SITE_SETTINGS_AR_DESCRIPTION},
- {"siteSettingsArAllowed", IDS_SETTINGS_SITE_SETTINGS_AR_ALLOWED},
- {"siteSettingsArBlocked", IDS_SETTINGS_SITE_SETTINGS_AR_BLOCKED},
- {"siteSettingsArAllowedExceptions",
- IDS_SETTINGS_SITE_SETTINGS_AR_ALLOWED_EXCEPTIONS},
- {"siteSettingsArBlockedExceptions",
- IDS_SETTINGS_SITE_SETTINGS_AR_BLOCKED_EXCEPTIONS},
- {"siteSettingsAutomaticDownloadsDescription",
- IDS_SETTINGS_SITE_SETTINGS_AUTOMATIC_DOWNLOADS_DESCRIPTION},
- {"siteSettingsAutomaticDownloadsAllowed",
- IDS_SETTINGS_SITE_SETTINGS_AUTOMATIC_DOWNLOADS_ALLOWED},
- {"siteSettingsAutomaticDownloadsBlocked",
- IDS_SETTINGS_SITE_SETTINGS_AUTOMATIC_DOWNLOADS_BLOCKED},
- {"siteSettingsAutomaticDownloadsAllowedExceptions",
- IDS_SETTINGS_SITE_SETTINGS_AUTOMATIC_DOWNLOADS_ALLOWED_EXCEPTIONS},
- {"siteSettingsAutomaticDownloadsBlockedExceptions",
- IDS_SETTINGS_SITE_SETTINGS_AUTOMATIC_DOWNLOADS_BLOCKED_EXCEPTIONS},
- {"siteSettingsAutoPictureInPictureDescription",
- IDS_SETTINGS_SITE_SETTINGS_AUTO_PICTURE_IN_PICTURE_DESCRIPTION},
- {"siteSettingsAutoPictureInPictureAllowed",
- IDS_SETTINGS_SITE_SETTINGS_AUTO_PICTURE_IN_PICTURE_ALLOWED},
- {"siteSettingsAutoPictureInPictureBlocked",
- IDS_SETTINGS_SITE_SETTINGS_AUTO_PICTURE_IN_PICTURE_BLOCKED},
- {"siteSettingsAutoPictureInPictureAllowedExceptions",
- IDS_SETTINGS_SITE_SETTINGS_AUTO_PICTURE_IN_PICTURE_ALLOWED_EXCEPTIONS},
- {"siteSettingsAutoPictureInPictureBlockedExceptions",
- IDS_SETTINGS_SITE_SETTINGS_AUTO_PICTURE_IN_PICTURE_BLOCKED_EXCEPTIONS},
- {"siteSettingsBackgroundSyncDescription",
- IDS_SETTINGS_SITE_SETTINGS_BACKGROUND_SYNC_DESCRIPTION},
- {"siteSettingsBackgroundSyncAllowed",
- IDS_SETTINGS_SITE_SETTINGS_BACKGROUND_SYNC_ALLOWED},
- {"siteSettingsBackgroundSyncBlocked",
- IDS_SETTINGS_SITE_SETTINGS_BACKGROUND_SYNC_BLOCKED},
- {"siteSettingsBackgroundSyncBlockedSubLabel",
- IDS_SETTINGS_SITE_SETTINGS_BACKGROUND_SYNC_BLOCKED_SUB_LABEL},
- {"siteSettingsBackgroundSyncAllowedExceptions",
- IDS_SETTINGS_SITE_SETTINGS_BACKGROUND_SYNC_ALLOWED_EXCEPTIONS},
- {"siteSettingsBackgroundSyncBlockedExceptions",
- IDS_SETTINGS_SITE_SETTINGS_BACKGROUND_SYNC_BLOCKED_EXCEPTIONS},
- {"siteSettingsBluetoothDevicesDescription",
- IDS_SETTINGS_SITE_SETTINGS_BLUETOOTH_DEVICES_DESCRIPTION},
- {"siteSettingsBluetoothDevicesAllowed",
- IDS_SETTINGS_SITE_SETTINGS_BLUETOOTH_DEVICES_ALLOWED},
- {"siteSettingsBluetoothDevicesBlocked",
- IDS_SETTINGS_SITE_SETTINGS_BLUETOOTH_DEVICES_BLOCKED},
- {"siteSettingsCameraDescription",
- IDS_SETTINGS_SITE_SETTINGS_CAMERA_DESCRIPTION},
- {"siteSettingsCameraAllowed", IDS_SETTINGS_SITE_SETTINGS_CAMERA_ALLOWED},
- {"siteSettingsCameraBlocked", IDS_SETTINGS_SITE_SETTINGS_CAMERA_BLOCKED},
- {"siteSettingsCameraBlockedSubLabel",
- IDS_SETTINGS_SITE_SETTINGS_CAMERA_BLOCKED_SUB_LABEL},
- {"siteSettingsCameraAllowedExceptions",
- IDS_SETTINGS_SITE_SETTINGS_CAMERA_ALLOWED_EXCEPTIONS},
- {"siteSettingsCameraBlockedExceptions",
- IDS_SETTINGS_SITE_SETTINGS_CAMERA_BLOCKED_EXCEPTIONS},
- {"siteSettingsClipboardDescription",
- IDS_SETTINGS_SITE_SETTINGS_CLIPBOARD_DESCRIPTION},
- {"siteSettingsClipboardAllowed",
- IDS_SETTINGS_SITE_SETTINGS_CLIPBOARD_ALLOWED},
- {"siteSettingsClipboardBlocked",
- IDS_SETTINGS_SITE_SETTINGS_CLIPBOARD_BLOCKED},
- {"siteSettingsClipboardAllowedExceptions",
- IDS_SETTINGS_SITE_SETTINGS_CLIPBOARD_ALLOWED_EXCEPTIONS},
- {"siteSettingsClipboardBlockedExceptions",
- IDS_SETTINGS_SITE_SETTINGS_CLIPBOARD_BLOCKED_EXCEPTIONS},
- {"siteSettingsDeviceUseDescription",
- IDS_SETTINGS_SITE_SETTINGS_DEVICE_USE_DESCRIPTION},
- {"siteSettingsDeviceUseAllowed",
- IDS_SETTINGS_SITE_SETTINGS_DEVICE_USE_ALLOWED},
- {"siteSettingsDeviceUseBlocked",
- IDS_SETTINGS_SITE_SETTINGS_DEVICE_USE_BLOCKED},
- {"siteSettingsDeviceUseAllowedExceptions",
- IDS_SETTINGS_SITE_SETTINGS_DEVICE_USE_ALLOWED_EXCEPTIONS},
- {"siteSettingsDeviceUseBlockedExceptions",
- IDS_SETTINGS_SITE_SETTINGS_DEVICE_USE_BLOCKED_EXCEPTIONS},
- {"siteSettingsFederatedIdentityApi",
- IDS_SITE_SETTINGS_TYPE_FEDERATED_IDENTITY_API},
- {"siteSettingsFederatedIdentityApiAllowed",
- IDS_SETTINGS_SITE_SETTINGS_FEDERATED_IDENTITY_API_ALLOWED},
- {"siteSettingsFederatedIdentityApiBlocked",
- IDS_SETTINGS_SITE_SETTINGS_FEDERATED_IDENTITY_API_BLOCKED},
- {"siteSettingsFederatedIdentityApiAllowedExceptions",
- IDS_SETTINGS_SITE_SETTINGS_FEDERATED_IDENTITY_API_ALLOWED_EXCEPTIONS},
- {"siteSettingsFederatedIdentityApiBlockedExceptions",
- IDS_SETTINGS_SITE_SETTINGS_FEDERATED_IDENTITY_API_BLOCKED_EXCEPTIONS},
- {"siteSettingsFederatedIdentityApiDescription",
- IDS_SETTINGS_SITE_SETTINGS_FEDERATED_IDENTITY_API_DESCRIPTION},
- {"siteSettingsFederatedIdentityApiMidSentence",
- IDS_SITE_SETTINGS_TYPE_FEDERATED_IDENTITY_API_MID_SENTENCE},
- {"siteSettingsFileSystemWriteDescription",
- IDS_SETTINGS_SITE_SETTINGS_FILE_SYSTEM_WRITE_DESCRIPTION},
- {"siteSettingsFileSystemWriteAllowed",
- IDS_SETTINGS_SITE_SETTINGS_FILE_SYSTEM_WRITE_ALLOWED},
- {"siteSettingsFileSystemWriteBlocked",
- IDS_SETTINGS_SITE_SETTINGS_FILE_SYSTEM_WRITE_BLOCKED},
- {"siteSettingsFileSystemWriteBlockedExceptions",
- IDS_SETTINGS_SITE_SETTINGS_FILE_SYSTEM_WRITE_BLOCKED_EXCEPTIONS},
- {"siteSettingsFontsDescription",
- IDS_SETTINGS_SITE_SETTINGS_FONTS_DESCRIPTION},
- {"siteSettingsFontsAllowed", IDS_SETTINGS_SITE_SETTINGS_FONTS_ALLOWED},
- {"siteSettingsFontsBlocked", IDS_SETTINGS_SITE_SETTINGS_FONTS_BLOCKED},
- {"siteSettingsFontsAllowedExceptions",
- IDS_SETTINGS_SITE_SETTINGS_FONTS_ALLOWED_EXCEPTIONS},
- {"siteSettingsFontsBlockedExceptions",
- IDS_SETTINGS_SITE_SETTINGS_FONTS_BLOCKED_EXCEPTIONS},
- {"siteSettingsHidDevicesDescription",
- IDS_SETTINGS_SITE_SETTINGS_HID_DEVICES_DESCRIPTION},
- {"siteSettingsHidDevicesAllowed",
- IDS_SETTINGS_SITE_SETTINGS_HID_DEVICES_ALLOWED},
- {"siteSettingsHidDevicesBlocked",
- IDS_SETTINGS_SITE_SETTINGS_HID_DEVICES_BLOCKED},
- {"siteSettingsImagesDescription",
- IDS_SETTINGS_SITE_SETTINGS_IMAGES_DESCRIPTION},
- {"siteSettingsImagesAllowed", IDS_SETTINGS_SITE_SETTINGS_IMAGES_ALLOWED},
- {"siteSettingsImagesBlocked", IDS_SETTINGS_SITE_SETTINGS_IMAGES_BLOCKED},
- {"siteSettingsImagesBlockedSubLabel",
- IDS_SETTINGS_SITE_SETTINGS_IMAGES_BLOCKED_SUB_LABEL},
- {"siteSettingsImagesAllowedExceptions",
- IDS_SETTINGS_SITE_SETTINGS_IMAGES_ALLOWED_EXCEPTIONS},
- {"siteSettingsImagedBlockedExceptions",
- IDS_SETTINGS_SITE_SETTINGS_IMAGES_BLOCKED_EXCEPTIONS},
- {"siteSettingsInsecureContentDescription",
- IDS_SETTINGS_SITE_SETTINGS_INSECURE_CONTENT_DESCRIPTION},
- {"siteSettingsInsecureContentAllowedExceptions",
- IDS_SETTINGS_SITE_SETTINGS_INSECURE_CONTENT_ALLOWED_EXCEPTIONS},
- {"siteSettingsInsecureContentBlockedExceptions",
- IDS_SETTINGS_SITE_SETTINGS_INSECURE_CONTENT_BLOCKED_EXCEPTIONS},
- {"siteSettingsJavascriptDescription",
- IDS_SETTINGS_SITE_SETTINGS_JAVASCRIPT_DESCRIPTION},
- {"siteSettingsJavascriptAllowed",
- IDS_SETTINGS_SITE_SETTINGS_JAVASCRIPT_ALLOWED},
- {"siteSettingsJavascriptBlocked",
- IDS_SETTINGS_SITE_SETTINGS_JAVASCRIPT_BLOCKED},
- {"siteSettingsJavascriptAllowedExceptions",
- IDS_SETTINGS_SITE_SETTINGS_JAVASCRIPT_ALLOWED_EXCEPTIONS},
- {"siteSettingsJavascriptBlockedExceptions",
- IDS_SETTINGS_SITE_SETTINGS_JAVASCRIPT_BLOCKED_EXCEPTIONS},
- {"siteSettingsLocationDescription",
- IDS_SETTINGS_SITE_SETTINGS_LOCATION_DESCRIPTION},
- {"siteSettingsLocationAllowed",
- IDS_SETTINGS_SITE_SETTINGS_LOCATION_ALLOWED},
- {"siteSettingsLocationAskQuiet",
- IDS_SETTINGS_SITE_SETTINGS_PERMISSION_QUIET},
- {"siteSettingsLocationAskCPSS", IDS_SETTINGS_SITE_SETTINGS_PERMISSION_CPSS},
- {"siteSettingsLocationAskLoud", IDS_SETTINGS_SITE_SETTINGS_PERMISSION_LOUD},
- {"siteSettingsLocationBlocked",
- IDS_SETTINGS_SITE_SETTINGS_LOCATION_BLOCKED},
- {"siteSettingsLocationBlockedSubLabel",
- IDS_SETTINGS_SITE_SETTINGS_LOCATION_BLOCKED_SUB_LABEL},
- {"siteSettingsLocationAllowedExceptions",
- IDS_SETTINGS_SITE_SETTINGS_LOCATION_ALLOWED_EXCEPTIONS},
- {"siteSettingsLocationBlockedExceptions",
- IDS_SETTINGS_SITE_SETTINGS_LOCATION_BLOCKED_EXCEPTIONS},
- {"siteSettingsMicDescription", IDS_SETTINGS_SITE_SETTINGS_MIC_DESCRIPTION},
- {"siteSettingsMicAllowed", IDS_SETTINGS_SITE_SETTINGS_MIC_ALLOWED},
- {"siteSettingsMicBlocked", IDS_SETTINGS_SITE_SETTINGS_MIC_BLOCKED},
- {"siteSettingsMicBlockedSubLabel",
- IDS_SETTINGS_SITE_SETTINGS_MIC_BLOCKED_SUB_LABEL},
- {"siteSettingsMicAllowedExceptions",
- IDS_SETTINGS_SITE_SETTINGS_MIC_ALLOWED_EXCEPTIONS},
- {"siteSettingsMicBlockedExceptions",
- IDS_SETTINGS_SITE_SETTINGS_MIC_BLOCKED_EXCEPTIONS},
- {"siteSettingsMidiDescription",
- IDS_SETTINGS_SITE_SETTINGS_MIDI_DESCRIPTION},
- {"siteSettingsMidiAllowed", IDS_SETTINGS_SITE_SETTINGS_MIDI_ALLOWED},
- {"siteSettingsMidiBlocked", IDS_SETTINGS_SITE_SETTINGS_MIDI_BLOCKED},
- {"siteSettingsMidiAllowedExceptions",
- IDS_SETTINGS_SITE_SETTINGS_MIDI_ALLOWED_EXCEPTIONS},
- {"siteSettingsMidiBlockedExceptions",
- IDS_SETTINGS_SITE_SETTINGS_MIDI_BLOCKED_EXCEPTIONS},
- {"siteSettingsMotionSensorsDescription",
- IDS_SETTINGS_SITE_SETTINGS_MOTION_SENSORS_DESCRIPTION},
- {"siteSettingsMotionSensorsAllowed",
- IDS_SETTINGS_SITE_SETTINGS_MOTION_SENSORS_ALLOWED},
- {"siteSettingsMotionSensorsBlocked",
- IDS_SETTINGS_SITE_SETTINGS_MOTION_SENSORS_BLOCKED},
- {"siteSettingsMotionSensorsBlockedSubLabel",
- IDS_SETTINGS_SITE_SETTINGS_MOTION_SENSORS_BLOCKED_SUB_LABEL},
- {"siteSettingsMotionSensorsAllowedExceptions",
- IDS_SETTINGS_SITE_SETTINGS_MOTION_SENSORS_ALLOWED_EXCEPTIONS},
- {"siteSettingsMotionSensorsBlockedExceptions",
- IDS_SETTINGS_SITE_SETTINGS_MOTION_SENSORS_BLOCKED_EXCEPTIONS},
- {"siteSettingsNotificationsDescription",
- IDS_SETTINGS_SITE_SETTINGS_NOTIFICATIONS_DESCRIPTION},
- {"siteSettingsNotificationsAllowed",
- IDS_SETTINGS_SITE_SETTINGS_NOTIFICATIONS_ALLOWED},
- {"siteSettingsNotificationsPartial",
- IDS_SETTINGS_SITE_SETTINGS_NOTIFICATIONS_PARTIAL},
- {"siteSettingsNotificationsPartialSubLabel",
- IDS_SETTINGS_SITE_SETTINGS_NOTIFICATIONS_PARTIAL_SUB_LABEL},
- {"siteSettingsNotificationsAskState",
- IDS_SETTINGS_SITE_SETTINGS_NOTIFICATIONS_ASK_STATE},
- {"siteSettingsNotificationsAskQuiet",
- IDS_SETTINGS_SITE_SETTINGS_PERMISSION_QUIET},
- {"siteSettingsNotificationsAskCPSS",
- IDS_SETTINGS_SITE_SETTINGS_PERMISSION_CPSS},
- {"siteSettingsNotificationsAskLoud",
- IDS_SETTINGS_SITE_SETTINGS_PERMISSION_LOUD},
- {"siteSettingsNotificationsBlocked",
- IDS_SETTINGS_SITE_SETTINGS_NOTIFICATIONS_BLOCKED},
- {"siteSettingsNotificationsBlockedSubLabel",
- IDS_SETTINGS_SITE_SETTINGS_NOTIFICATIONS_BLOCKED_SUB_LABEL},
- {"siteSettingsNotificationsAllowedExceptions",
- IDS_SETTINGS_SITE_SETTINGS_NOTIFICATIONS_ALLOWED_EXCEPTIONS},
- {"siteSettingsNotificationsBlockedExceptions",
- IDS_SETTINGS_SITE_SETTINGS_NOTIFICATIONS_BLOCKED_EXCEPTIONS},
- {"siteSettingsPaymentHandlersDescription",
- IDS_SETTINGS_SITE_SETTINGS_PAYMENT_HANDLERS_DESCRIPTION},
- {"siteSettingsPaymentHandlersAllowed",
- IDS_SETTINGS_SITE_SETTINGS_PAYMENT_HANDLERS_ALLOWED},
- {"siteSettingsPaymentHandlersBlocked",
- IDS_SETTINGS_SITE_SETTINGS_PAYMENT_HANDLERS_BLOCKED},
- {"siteSettingsPaymentHandlersAllowedExceptions",
- IDS_SETTINGS_SITE_SETTINGS_PAYMENT_HANDLERS_ALLOWED_EXCEPTIONS},
- {"siteSettingsPaymentHandlersBlockedExceptions",
- IDS_SETTINGS_SITE_SETTINGS_PAYMENT_HANDLERS_BLOCKED_EXCEPTIONS},
- {"siteSettingsPdfsDescription",
- IDS_SETTINGS_SITE_SETTINGS_PDFS_DESCRIPTION},
- {"siteSettingsPdfsAllowed", IDS_SETTINGS_SITE_SETTINGS_PDFS_ALLOWED},
- {"siteSettingsPdfsBlocked", IDS_SETTINGS_SITE_SETTINGS_PDFS_BLOCKED},
- {"siteSettingsPopupsDescription",
- IDS_SETTINGS_SITE_SETTINGS_POPUPS_DESCRIPTION},
- {"siteSettingsPopupsAllowed", IDS_SETTINGS_SITE_SETTINGS_POPUPS_ALLOWED},
- {"siteSettingsPopupsBlocked", IDS_SETTINGS_SITE_SETTINGS_POPUPS_BLOCKED},
- {"siteSettingsPopupsAllowedExceptions",
- IDS_SETTINGS_SITE_SETTINGS_POPUPS_ALLOWED_EXCEPTIONS},
- {"siteSettingsPopupsBlockedExceptions",
- IDS_SETTINGS_SITE_SETTINGS_POPUPS_BLOCKED_EXCEPTIONS},
- {"siteSettingsProtocolHandlersDescription",
- IDS_SETTINGS_SITE_SETTINGS_PROTOCOL_HANDLERS_DESCRIPTION},
- {"siteSettingsProtocolHandlersAllowed",
- IDS_SETTINGS_SITE_SETTINGS_PROTOCOL_HANDLERS_ALLOWED},
- {"siteSettingsProtocolHandlersBlocked",
- IDS_SETTINGS_SITE_SETTINGS_PROTOCOL_HANDLERS_BLOCKED},
- {"siteSettingsProtocolHandlersBlockedExceptions",
- IDS_SETTINGS_SITE_SETTINGS_PROTOCOL_HANDLERS_BLOCKED_EXCEPTIONS},
- {"siteSettingsSerialPortsDescription",
- IDS_SETTINGS_SITE_SETTINGS_SERIAL_PORTS_DESCRIPTION},
- {"siteSettingsSerialPortsAllowed",
- IDS_SETTINGS_SITE_SETTINGS_SERIAL_PORTS_ALLOWED},
- {"siteSettingsSerialPortsBlocked",
- IDS_SETTINGS_SITE_SETTINGS_SERIAL_PORTS_BLOCKED},
- {"siteSettingsSoundDescription",
- IDS_SETTINGS_SITE_SETTINGS_SOUND_DESCRIPTION},
- {"siteSettingsSoundAllowed", IDS_SETTINGS_SITE_SETTINGS_SOUND_ALLOWED},
- {"siteSettingsSoundBlocked", IDS_SETTINGS_SITE_SETTINGS_SOUND_BLOCKED},
- {"siteSettingsSoundBlockedSubLabel",
- IDS_SETTINGS_SITE_SETTINGS_SOUND_BLOCKED_SUB_LABEL},
- {"siteSettingsSoundAllowedExceptions",
- IDS_SETTINGS_SITE_SETTINGS_SOUND_ALLOWED_EXCEPTIONS},
- {"siteSettingsSoundBlockedExceptions",
- IDS_SETTINGS_SITE_SETTINGS_SOUND_BLOCKED_EXCEPTIONS},
- {"siteSettingsUsbDescription", IDS_SETTINGS_SITE_SETTINGS_USB_DESCRIPTION},
- {"siteSettingsUsbAllowed", IDS_SETTINGS_SITE_SETTINGS_USB_ALLOWED},
- {"siteSettingsUsbBlocked", IDS_SETTINGS_SITE_SETTINGS_USB_BLOCKED},
- {"siteSettingsVrDescription", IDS_SETTINGS_SITE_SETTINGS_VR_DESCRIPTION},
- {"siteSettingsVrAllowed", IDS_SETTINGS_SITE_SETTINGS_VR_ALLOWED},
- {"siteSettingsVrBlocked", IDS_SETTINGS_SITE_SETTINGS_VR_BLOCKED},
- {"siteSettingsVrAllowedExceptions",
- IDS_SETTINGS_SITE_SETTINGS_VR_ALLOWED_EXCEPTIONS},
- {"siteSettingsVrBlockedExceptions",
- IDS_SETTINGS_SITE_SETTINGS_VR_BLOCKED_EXCEPTIONS},
- {"siteSettingsZoomLevelsDescription",
- IDS_SETTINGS_SITE_SETTINGS_ZOOM_LEVELS_DESCRIPTION},
- {"siteSettingsAds", IDS_SITE_SETTINGS_TYPE_ADS},
- {"siteSettingsAdsMidSentence", IDS_SITE_SETTINGS_TYPE_ADS_MID_SENTENCE},
- {"siteSettingsPaymentHandler", IDS_SITE_SETTINGS_TYPE_PAYMENT_HANDLER},
- {"siteSettingsPaymentHandlerMidSentence",
- IDS_SITE_SETTINGS_TYPE_PAYMENT_HANDLER_MID_SENTENCE},
- {"siteSettingsBlockAutoplaySetting",
- IDS_SETTINGS_SITE_SETTINGS_BLOCK_AUTOPLAY},
- {"emptyAllSitesPage", IDS_SETTINGS_SITE_SETTINGS_EMPTY_ALL_SITES_PAGE},
- {"noSitesFound", IDS_SETTINGS_SITE_SETTINGS_NO_SITES_FOUND},
- {"siteSettingsBluetoothScanning",
- IDS_SITE_SETTINGS_TYPE_BLUETOOTH_SCANNING},
- {"siteSettingsBluetoothScanningMidSentence",
- IDS_SITE_SETTINGS_TYPE_BLUETOOTH_SCANNING_MID_SENTENCE},
- {"siteSettingsBluetoothScanningDescription",
- IDS_SETTINGS_SITE_SETTINGS_BLUETOOTH_SCANNING_DESCRIPTION},
- {"siteSettingsBluetoothScanningAsk",
- IDS_SETTINGS_SITE_SETTINGS_BLUETOOTH_SCANNING_ASK},
- {"siteSettingsBluetoothScanningBlock",
- IDS_SETTINGS_SITE_SETTINGS_BLUETOOTH_SCANNING_BLOCK},
- {"siteSettingsBluetoothScanningAllowedExceptions",
- IDS_SETTINGS_SITE_SETTINGS_BLUETOOTH_SCANNING_ALLOWED_EXCEPTIONS},
- {"siteSettingsBluetoothScanningBlockedExceptions",
- IDS_SETTINGS_SITE_SETTINGS_BLUETOOTH_SCANNING_BLOCKED_EXCEPTIONS},
- {"siteSettingsAr", IDS_SITE_SETTINGS_TYPE_AR},
- {"siteSettingsArMidSentence", IDS_SITE_SETTINGS_TYPE_AR_MID_SENTENCE},
- {"siteSettingsArAsk", IDS_SETTINGS_SITE_SETTINGS_AR_ASK},
- {"siteSettingsArBlock", IDS_SETTINGS_SITE_SETTINGS_AR_BLOCK},
- {"siteSettingsVr", IDS_SITE_SETTINGS_TYPE_VR},
- {"siteSettingsVrMidSentence", IDS_SITE_SETTINGS_TYPE_VR_MID_SENTENCE},
- {"siteSettingsWindowManagement", IDS_SITE_SETTINGS_TYPE_WINDOW_MANAGEMENT},
- {"siteSettingsWindowManagementMidSentence",
- IDS_SITE_SETTINGS_TYPE_WINDOW_MANAGEMENT_MID_SENTENCE},
- {"siteSettingsWindowManagementDescription",
- IDS_SETTINGS_SITE_SETTINGS_WINDOW_MANAGEMENT_DESCRIPTION},
- {"siteSettingsWindowManagementAsk",
- IDS_SETTINGS_SITE_SETTINGS_WINDOW_MANAGEMENT_ASK},
- {"siteSettingsWindowManagementBlocked",
- IDS_SETTINGS_SITE_SETTINGS_WINDOW_MANAGEMENT_BLOCKED},
- {"siteSettingsWindowManagementAskExceptions",
- IDS_SETTINGS_SITE_SETTINGS_WINDOW_MANAGEMENT_ASK_EXCEPTIONS},
- {"siteSettingsWindowManagementBlockedExceptions",
- IDS_SETTINGS_SITE_SETTINGS_WINDOW_MANAGEMENT_BLOCKED_EXCEPTIONS},
- {"siteSettingsFontAccessMidSentence",
- IDS_SITE_SETTINGS_TYPE_FONT_ACCESS_MID_SENTENCE},
- {"siteSettingsIdleDetection", IDS_SITE_SETTINGS_TYPE_IDLE_DETECTION},
- {"siteSettingsIdleDetectionMidSentence",
- IDS_SITE_SETTINGS_TYPE_IDLE_DETECTION_MID_SENTENCE},
- {"siteSettingsExtensionIdDescription",
- IDS_SETTINGS_SITE_SETTINGS_EXTENSION_ID_DESCRIPTION},
- {"siteSettingsSiteDataAllowedSubLabel",
- IDS_SETTINGS_SITE_SETTINGS_PAGE_SITE_DATA_ALLOWED_SUB_LABEL},
- {"siteSettingsSiteDataBlockedSubLabel",
- IDS_SETTINGS_SITE_SETTINGS_PAGE_SITE_DATA_BLOCKED_SUB_LABEL},
- {"siteSettingsSiteDataDeleteOnExitSubLabel",
- IDS_SETTINGS_SITE_SETTINGS_PAGE_SITE_DATA_DELETE_ON_EXIT_SUB_LABEL},
- {"siteSettingsAntiAbuse", IDS_SITE_SETTINGS_TYPE_ANTI_ABUSE},
- {"siteSettingsAntiAbuseDescription", IDS_SETTINGS_ANTI_ABUSE_DESCRIPTION},
- {"siteSettingsAntiAbuseEnabledSubLabel",
- IDS_SETTINGS_ANTI_ABUSE_ENABLED_SUB_LABEL},
- {"siteSettingsAntiAbuseDisabledSubLabel",
- IDS_SETTINGS_ANTI_ABUSE_DISABLED_SUB_LABEL},
- {"antiAbuseWhenOnHeader", IDS_SETTINGS_ANTI_ABUSE_WHEN_ON_HEADER},
- {"antiAbuseWhenOnSectionOne", IDS_SETTINGS_ANTI_ABUSE_WHEN_ON_SECTION_ONE},
- {"antiAbuseWhenOnSectionTwo", IDS_SETTINGS_ANTI_ABUSE_WHEN_ON_SECTION_TWO},
- {"antiAbuseWhenOnSectionThree",
- IDS_SETTINGS_ANTI_ABUSE_WHEN_ON_SECTION_THREE},
- {"antiAbuseThingsToConsiderHeader",
- IDS_SETTINGS_ANTI_ABUSE_THINGS_TO_CONSIDER_HEADER},
- {"antiAbuseThingsToConsiderSectionOne",
- IDS_SETTINGS_ANTI_ABUSE_THINGS_TO_CONSIDER_SECTION_ONE},
+ {"siteSettingsProtectedContentIdentifiersAllowedSubLabel",
+ IDS_SETTINGS_SITE_SETTINGS_PROTECTED_CONTENT_IDENTIFIERS_ALLOWED_SUB_LABEL},
+#endif
+ {"siteSettingsPopups", IDS_SITE_SETTINGS_TYPE_POPUPS_REDIRECTS},
+ {"siteSettingsPopupsMidSentence",
+ IDS_SITE_SETTINGS_TYPE_POPUPS_REDIRECTS_MID_SENTENCE},
+ {"siteSettingsHidDevices", IDS_SITE_SETTINGS_TYPE_HID_DEVICES},
+ {"siteSettingsHidDevicesMidSentence",
+ IDS_SITE_SETTINGS_TYPE_HID_DEVICES_MID_SENTENCE},
+ {"siteSettingsHidDevicesAsk", IDS_SETTINGS_SITE_SETTINGS_HID_DEVICES_ASK},
+ {"siteSettingsHidDevicesBlock",
+ IDS_SETTINGS_SITE_SETTINGS_HID_DEVICES_BLOCK},
+ {"siteSettingsMidiDevices", IDS_SITE_SETTINGS_TYPE_MIDI},
+ {"siteSettingsMidiDevicesMidSentence",
+ IDS_SITE_SETTINGS_TYPE_MIDI_MID_SENTENCE},
+ {"siteSettingsSerialPorts", IDS_SITE_SETTINGS_TYPE_SERIAL_PORTS},
+ {"siteSettingsSerialPortsMidSentence",
+ IDS_SITE_SETTINGS_TYPE_SERIAL_PORTS_MID_SENTENCE},
+ {"siteSettingsUsbDevices", IDS_SITE_SETTINGS_TYPE_USB_DEVICES},
+ {"siteSettingsUsbDevicesMidSentence",
+ IDS_SITE_SETTINGS_TYPE_USB_DEVICES_MID_SENTENCE},
+ {"siteSettingsBluetoothDevices",
+ IDS_SITE_SETTINGS_TYPE_BLUETOOTH_DEVICES},
+ {"siteSettingsBluetoothDevicesMidSentence",
+ IDS_SITE_SETTINGS_TYPE_BLUETOOTH_DEVICES_MID_SENTENCE},
+ {"siteSettingsFileSystemWrite",
+ IDS_SITE_SETTINGS_TYPE_FILE_SYSTEM_ACCESS_WRITE},
+ {"siteSettingsFileSystemWriteMidSentence",
+ IDS_SITE_SETTINGS_TYPE_FILE_SYSTEM_ACCESS_WRITE_MID_SENTENCE},
+ {"siteSettingsRemoveZoomLevel",
+ IDS_SETTINGS_SITE_SETTINGS_REMOVE_ZOOM_LEVEL},
+ {"siteSettingsZoomLevels", IDS_SITE_SETTINGS_TYPE_ZOOM_LEVELS},
+ {"siteSettingsZoomLevelsMidSentence",
+ IDS_SITE_SETTINGS_TYPE_ZOOM_LEVELS_MID_SENTENCE},
+ {"siteSettingsNoZoomedSites", IDS_SETTINGS_SITE_SETTINGS_NO_ZOOMED_SITES},
+ {"siteSettingsAskBeforeSending",
+ IDS_SETTINGS_SITE_SETTINGS_ASK_BEFORE_SENDING},
+ {"siteSettingsHandlersAskRecommended",
+ IDS_SETTINGS_SITE_SETTINGS_HANDLERS_ASK_RECOMMENDED},
+ {"siteSettingsHandlersBlocked",
+ IDS_SETTINGS_SITE_SETTINGS_HANDLERS_BLOCKED},
+ {"siteSettingsCookiesAllowed",
+ IDS_SETTINGS_SITE_SETTINGS_COOKIES_ALLOW_SITES},
+ {"siteSettingsAllow", IDS_SETTINGS_SITE_SETTINGS_ALLOW},
+ {"siteSettingsBlock", IDS_SETTINGS_SITE_SETTINGS_BLOCK},
+ {"siteSettingsSessionOnly", IDS_SETTINGS_SITE_SETTINGS_SESSION_ONLY},
+ {"siteSettingsBlocked", IDS_SETTINGS_SITE_SETTINGS_BLOCKED},
+ {"siteSettingsActionAskDefault",
+ IDS_SETTINGS_SITE_SETTINGS_ASK_DEFAULT_MENU},
+ {"siteSettingsActionAllowDefault",
+ IDS_SETTINGS_SITE_SETTINGS_ALLOW_DEFAULT_MENU},
+ {"siteSettingsActionAutomaticDefault",
+ IDS_SETTINGS_SITE_SETTINGS_AUTOMATIC_DEFAULT_MENU},
+ {"siteSettingsActionBlockDefault",
+ IDS_SETTINGS_SITE_SETTINGS_BLOCK_DEFAULT_MENU},
+ {"siteSettingsActionMuteDefault",
+ IDS_SETTINGS_SITE_SETTINGS_MUTE_DEFAULT_MENU},
+ {"siteSettingsActionAllow", IDS_SETTINGS_SITE_SETTINGS_ALLOW_MENU},
+ {"siteSettingsActionBlock", IDS_SETTINGS_SITE_SETTINGS_BLOCK_MENU},
+ {"siteSettingsActionAsk", IDS_SETTINGS_SITE_SETTINGS_ASK_MENU},
+ {"siteSettingsActionMute", IDS_SETTINGS_SITE_SETTINGS_MUTE_MENU},
+ {"siteSettingsActionReset", IDS_SETTINGS_SITE_SETTINGS_RESET_MENU},
+ {"siteSettingsActionSessionOnly",
+ IDS_SETTINGS_SITE_SETTINGS_SESSION_ONLY_MENU},
+ {"siteSettingsUsage", IDS_SETTINGS_SITE_SETTINGS_USAGE},
+ {"siteSettingsUsageNone", IDS_SETTINGS_SITE_SETTINGS_USAGE_NONE},
+ {"siteSettingsPermissions", IDS_SETTINGS_SITE_SETTINGS_PERMISSIONS},
+ {"siteSettingsPermissionsMore",
+ IDS_SETTINGS_SITE_SETTINGS_PERMISSIONS_MORE},
+ {"siteSettingsContent", IDS_SETTINGS_SITE_SETTINGS_CONTENT},
+ {"siteSettingsContentMore", IDS_SETTINGS_SITE_SETTINGS_CONTENT_MORE},
+ {"siteSettingsSourceExtensionAllow",
+ IDS_PAGE_INFO_PERMISSION_ALLOWED_BY_EXTENSION},
+ {"siteSettingsSourceExtensionBlock",
+ IDS_PAGE_INFO_PERMISSION_BLOCKED_BY_EXTENSION},
+ {"siteSettingsSourceExtensionAsk",
+ IDS_PAGE_INFO_PERMISSION_ASK_BY_EXTENSION},
+ {"siteSettingsSourcePolicyAllow",
+ IDS_PAGE_INFO_PERMISSION_ALLOWED_BY_POLICY},
+ {"siteSettingsSourcePolicyBlock",
+ IDS_PAGE_INFO_PERMISSION_BLOCKED_BY_POLICY},
+ {"siteSettingsSourcePolicyAsk", IDS_PAGE_INFO_PERMISSION_ASK_BY_POLICY},
+ {"siteSettingsAdsBlockNotBlocklistedSingular",
+ IDS_SETTINGS_SITE_SETTINGS_ADS_BLOCK_NOT_BLOCKLISTED_SINGULAR},
+ {"siteSettingsAllowlisted", IDS_SETTINGS_SITE_SETTINGS_ALLOWLISTED},
+ {"siteSettingsAdsBlockBlocklistedSingular",
+ IDS_SETTINGS_SITE_SETTINGS_ADS_BLOCK_BLOCKLISTED_SINGULAR},
+ {"siteSettingsSourceEmbargo",
+ IDS_PAGE_INFO_PERMISSION_AUTOMATICALLY_BLOCKED},
+ {"siteSettingsSourceInsecureOrigin",
+ IDS_SETTINGS_SITE_SETTINGS_SOURCE_INSECURE_ORIGIN},
+ {"siteSettingsSourceKillSwitch",
+ IDS_SETTINGS_SITE_SETTINGS_SOURCE_KILL_SWITCH},
+ {"siteSettingsReset", IDS_SETTINGS_SITE_SETTINGS_RESET_BUTTON},
+ {"siteSettingsCookiesThirdPartyExceptionLabel",
+ IDS_SETTINGS_SITE_SETTINGS_THIRD_PARTY_COOKIES_EXCEPTION_LABEL},
+ {"siteSettingsCookieRemoveSite",
+ IDS_SETTINGS_SITE_SETTINGS_COOKIE_REMOVE_SITE},
+ {"siteSettingsDelete", IDS_SETTINGS_SITE_SETTINGS_DELETE},
+ {"siteSettingsDeleteAllStorageDialogTitle",
+ IDS_SETTINGS_SITE_SETTINGS_DELETE_ALL_STORAGE_DIALOG_TITLE},
+ {"siteSettingsDeleteDisplayedStorageDialogTitle",
+ IDS_SETTINGS_SITE_SETTINGS_DELETE_DISPLAYED_STORAGE_DIALOG_TITLE},
+ {"siteSettingsFirstPartySetsLearnMore",
+ IDS_SETTINGS_SITE_SETTINGS_FIRST_PARTY_SETS_LEARN_MORE},
+ {"siteSettingsFirstPartySetsLearnMoreAccessibility",
+ IDS_SETTINGS_SITE_SETTINGS_FIRST_PARTY_SETS_LEARN_MORE_ACCESSIBILITY},
+ {"siteSettingsClearAllStorageDescription",
+ IDS_SETTINGS_SITE_SETTINGS_CLEAR_ALL_STORAGE_DESCRIPTION},
+ {"siteSettingsClearDisplayedStorageDescription",
+ IDS_SETTINGS_SITE_SETTINGS_CLEAR_DISPLAYED_STORAGE_DESCRIPTION},
+ {"siteSettingsDeleteAllStorageLabel",
+ IDS_SETTINGS_SITE_SETTINGS_DELETE_ALL_STORAGE_LABEL},
+ {"siteSettingsDeleteDisplayedStorageLabel",
+ IDS_SETTINGS_SITE_SETTINGS_DELETE_DISPLAYED_STORAGE_LABEL},
+ {"siteSettingsDeleteAllStorageConfirmation",
+ IDS_SETTINGS_SITE_SETTINGS_DELETE_ALL_STORAGE_CONFIRMATION},
+ {"siteSettingsDeleteDisplayedStorageConfirmation",
+ IDS_SETTINGS_SITE_SETTINGS_DELETE_DISPLAYED_STORAGE_CONFIRMATION},
+ {"siteSettingsDeleteAllStorageConfirmationInstalled",
+ IDS_SETTINGS_SITE_SETTINGS_DELETE_ALL_STORAGE_CONFIRMATION_INSTALLED},
+ {"siteSettingsDeleteDisplayedStorageConfirmationInstalled",
+ IDS_SETTINGS_SITE_SETTINGS_DELETE_DISPLAYED_STORAGE_CONFIRMATION_INSTALLED},
+ {"siteSettingsClearAllStorageSignOut",
+ IDS_SETTINGS_SITE_SETTINGS_CLEAR_ALL_STORAGE_SIGN_OUT},
+ {"siteSettingsClearDisplayedStorageSignOut",
+ IDS_SETTINGS_SITE_SETTINGS_CLEAR_DISPLAYED_STORAGE_SIGN_OUT},
+ {"siteSettingsSiteDetailsSubpageAccessibilityLabel",
+ IDS_SETTINGS_SITE_SETTINGS_SITE_DETAILS_SUBPAGE_ACCESSIBILITY_LABEL},
+ {"firstPartySetsMoreActionsTitle",
+ IDS_SETTINGS_SITE_SETTINGS_FIRST_PARTY_SETS_MORE_ACTIONS_TITLE},
+ {"firstPartySetsShowRelatedSitesButton",
+ IDS_SETTINGS_SITE_SETTINGS_FIRST_PARTY_SETS_SHOW_RELATED_SITES_BUTTON},
+ {"firstPartySetsSiteDeleteStorageButton",
+ IDS_SETTINGS_SITE_SETTINGS_FIRST_PARTY_SETS_SITE_DELETE_STORAGE_BUTTON},
+ {"siteSettingsSiteClearStorage",
+ IDS_SETTINGS_SITE_SETTINGS_SITE_CLEAR_STORAGE},
+ {"siteSettingsSiteClearStorageConfirmation",
+ IDS_SETTINGS_SITE_SETTINGS_SITE_CLEAR_STORAGE_CONFIRMATION},
+ {"siteSettingsSiteClearStorageConfirmationNew",
+ IDS_SETTINGS_SITE_SETTINGS_SITE_CLEAR_STORAGE_CONFIRMATION_NEW},
+ {"siteSettingsSiteDeleteStorageDialogTitle",
+ IDS_SETTINGS_SITE_SETTINGS_SITE_DELETE_STORAGE_DIALOG_TITLE},
+ {"siteSettingsSiteClearStorageSignOut",
+ IDS_SETTINGS_SITE_SETTINGS_SITE_CLEAR_STORAGE_SIGN_OUT},
+ {"siteSettingsSiteDeleteStorageOfflineData",
+ IDS_SETTINGS_SITE_SETTINGS_SITE_DELETE_STORAGE_OFFLINE_DATA},
+ {"siteSettingsRemoveSiteAdPersonalization",
+ IDS_SETTINGS_SITE_SETTINGS_REMOVE_SITE_AD_PERSONALIZATION},
+ {"siteSettingsSiteGroupDeleteOfflineData",
+ IDS_SETTINGS_SITE_SETTINGS_SITE_GROUP_DELETE_OFFLINE_DATA},
+ {"siteSettingsSiteResetAll", IDS_SETTINGS_SITE_SETTINGS_SITE_RESET_ALL},
+ {"siteSettingsSiteResetConfirmation",
+ IDS_SETTINGS_SITE_SETTINGS_SITE_RESET_CONFIRMATION},
+ {"siteSettingsRemoveSiteOriginDialogTitle",
+ IDS_SETTINGS_SITE_SETTINGS_REMOVE_SITE_ORIGIN_DIALOG_TITLE},
+ {"siteSettingsRemoveSiteOriginAppDialogTitle",
+ IDS_SETTINGS_SITE_SETTINGS_REMOVE_SITE_ORIGIN_APP_DIALOG_TITLE},
+ {"siteSettingsRemoveSiteOriginPartitionedDialogTitle",
+ IDS_SETTINGS_SITE_SETTINGS_REMOVE_SITE_ORIGIN_PARTITIONED_DIALOG_TITLE},
+ {"siteSettingsRemoveSiteGroupDialogTitle",
+ IDS_SETTINGS_SITE_SETTINGS_REMOVE_SITE_GROUP_DIALOG_TITLE},
+ {"siteSettingsRemoveSiteGroupAppDialogTitle",
+ IDS_SETTINGS_SITE_SETTINGS_REMOVE_SITE_GROUP_APP_DIALOG_TITLE},
+ {"siteSettingsRemoveSiteGroupAppPluralDialogTitle",
+ IDS_SETTINGS_SITE_SETTINGS_REMOVE_SITE_GROUP_APP_PLURAL_DIALOG_TITLE},
+ {"siteSettingsRemoveSiteOriginLogout",
+ IDS_SETTINGS_SITE_SETTINGS_REMOVE_SITE_ORIGIN_LOGOUT},
+ {"siteSettingsRemoveSiteGroupLogout",
+ IDS_SETTINGS_SITE_SETTINGS_REMOVE_SITE_GROUP_LOGOUT},
+ {"siteSettingsRemoveSiteOfflineData",
+ IDS_SETTINGS_SITE_SETTINGS_REMOVE_SITE_OFFLINE_DATA},
+ {"siteSettingsRemoveSitePermissions",
+ IDS_SETTINGS_SITE_SETTINGS_REMOVE_SITE_PERMISSIONS},
+ {"siteSettingsRemoveSiteConfirm",
+ IDS_SETTINGS_SITE_SETTINGS_REMOVE_SITE_CONFIRM},
+ {"thirdPartyCookie", IDS_NEW_TAB_OTR_THIRD_PARTY_COOKIE},
+ {"thirdPartyCookieSublabel", IDS_NEW_TAB_OTR_THIRD_PARTY_COOKIE_SUBLABEL},
+ {"handlerIsDefault", IDS_SETTINGS_SITE_SETTINGS_HANDLER_IS_DEFAULT},
+ {"handlerSetDefault", IDS_SETTINGS_SITE_SETTINGS_HANDLER_SET_DEFAULT},
+ {"handlerRemove", IDS_SETTINGS_SITE_SETTINGS_REMOVE},
+ {"incognitoSiteOnly", IDS_SETTINGS_SITE_SETTINGS_INCOGNITO_ONLY},
+ {"incognitoSiteExceptionDesc",
+ IDS_SETTINGS_SITE_SETTINGS_INCOGNITO_SITE_EXCEPTION_DESC},
+ {"noSitesAdded", IDS_SETTINGS_SITE_NO_SITES_ADDED},
+ {"siteSettingsDefaultBehavior",
+ IDS_SETTINGS_SITE_SETTINGS_DEFAULT_BEHAVIOR},
+ {"siteSettingsDefaultBehaviorDescription",
+ IDS_SETTINGS_SITE_SETTINGS_DEFAULT_BEHAVIOR_DESCRIPTION},
+ {"siteSettingsNotificationsDefaultBehaviorDescription",
+ IDS_SETTINGS_SITE_SETTINGS_NOTIFICATIONS_DEFAULT_BEHAVIOR_DESC},
+ {"siteSettingsCustomizedBehaviors",
+ IDS_SETTINGS_SITE_SETTINGS_CUSTOMIZED_BEHAVIORS},
+ {"siteSettingsCustomizedBehaviorsDescription",
+ IDS_SETTINGS_SITE_SETTINGS_CUSTOMIZED_BEHAVIORS_DESCRIPTION},
+ {"siteSettingsCustomizedBehaviorsDescriptionShort",
+ IDS_SETTINGS_SITE_SETTINGS_CUSTOMIZED_BEHAVIORS_DESCRIPTION_SHORT},
+ {"siteSettingsAdsDescription",
+ IDS_SETTINGS_SITE_SETTINGS_ADS_DESCRIPTION},
+ {"siteSettingsAdsAllowed", IDS_SETTINGS_SITE_SETTINGS_ADS_ALLOWED},
+ {"siteSettingsAdsBlocked", IDS_SETTINGS_SITE_SETTINGS_ADS_BLOCKED},
+ {"siteSettingsAdsAllowedExceptions",
+ IDS_SETTINGS_SITE_SETTINGS_ADS_ALLOWED_EXCEPTIONS},
+ {"siteSettingsAdsBlockedExceptions",
+ IDS_SETTINGS_SITE_SETTINGS_ADS_BLOCKED_EXCEPTIONS},
+ {"siteSettingsArDescription", IDS_SETTINGS_SITE_SETTINGS_AR_DESCRIPTION},
+ {"siteSettingsArAllowed", IDS_SETTINGS_SITE_SETTINGS_AR_ALLOWED},
+ {"siteSettingsArBlocked", IDS_SETTINGS_SITE_SETTINGS_AR_BLOCKED},
+ {"siteSettingsArAllowedExceptions",
+ IDS_SETTINGS_SITE_SETTINGS_AR_ALLOWED_EXCEPTIONS},
+ {"siteSettingsArBlockedExceptions",
+ IDS_SETTINGS_SITE_SETTINGS_AR_BLOCKED_EXCEPTIONS},
+ {"siteSettingsAutomaticDownloadsDescription",
+ IDS_SETTINGS_SITE_SETTINGS_AUTOMATIC_DOWNLOADS_DESCRIPTION},
+ {"siteSettingsAutomaticDownloadsAllowed",
+ IDS_SETTINGS_SITE_SETTINGS_AUTOMATIC_DOWNLOADS_ALLOWED},
+ {"siteSettingsAutomaticDownloadsBlocked",
+ IDS_SETTINGS_SITE_SETTINGS_AUTOMATIC_DOWNLOADS_BLOCKED},
+ {"siteSettingsAutomaticDownloadsAllowedExceptions",
+ IDS_SETTINGS_SITE_SETTINGS_AUTOMATIC_DOWNLOADS_ALLOWED_EXCEPTIONS},
+ {"siteSettingsAutomaticDownloadsBlockedExceptions",
+ IDS_SETTINGS_SITE_SETTINGS_AUTOMATIC_DOWNLOADS_BLOCKED_EXCEPTIONS},
+ {"siteSettingsAutoPictureInPictureDescription",
+ IDS_SETTINGS_SITE_SETTINGS_AUTO_PICTURE_IN_PICTURE_DESCRIPTION},
+ {"siteSettingsAutoPictureInPictureAllowed",
+ IDS_SETTINGS_SITE_SETTINGS_AUTO_PICTURE_IN_PICTURE_ALLOWED},
+ {"siteSettingsAutoPictureInPictureBlocked",
+ IDS_SETTINGS_SITE_SETTINGS_AUTO_PICTURE_IN_PICTURE_BLOCKED},
+ {"siteSettingsAutoPictureInPictureAllowedExceptions",
+ IDS_SETTINGS_SITE_SETTINGS_AUTO_PICTURE_IN_PICTURE_ALLOWED_EXCEPTIONS},
+ {"siteSettingsAutoPictureInPictureBlockedExceptions",
+ IDS_SETTINGS_SITE_SETTINGS_AUTO_PICTURE_IN_PICTURE_BLOCKED_EXCEPTIONS},
+ {"siteSettingsBackgroundSyncDescription",
+ IDS_SETTINGS_SITE_SETTINGS_BACKGROUND_SYNC_DESCRIPTION},
+ {"siteSettingsBackgroundSyncAllowed",
+ IDS_SETTINGS_SITE_SETTINGS_BACKGROUND_SYNC_ALLOWED},
+ {"siteSettingsBackgroundSyncBlocked",
+ IDS_SETTINGS_SITE_SETTINGS_BACKGROUND_SYNC_BLOCKED},
+ {"siteSettingsBackgroundSyncBlockedSubLabel",
+ IDS_SETTINGS_SITE_SETTINGS_BACKGROUND_SYNC_BLOCKED_SUB_LABEL},
+ {"siteSettingsBackgroundSyncAllowedExceptions",
+ IDS_SETTINGS_SITE_SETTINGS_BACKGROUND_SYNC_ALLOWED_EXCEPTIONS},
+ {"siteSettingsBackgroundSyncBlockedExceptions",
+ IDS_SETTINGS_SITE_SETTINGS_BACKGROUND_SYNC_BLOCKED_EXCEPTIONS},
+ {"siteSettingsBluetoothDevicesDescription",
+ IDS_SETTINGS_SITE_SETTINGS_BLUETOOTH_DEVICES_DESCRIPTION},
+ {"siteSettingsBluetoothDevicesAllowed",
+ IDS_SETTINGS_SITE_SETTINGS_BLUETOOTH_DEVICES_ALLOWED},
+ {"siteSettingsBluetoothDevicesBlocked",
+ IDS_SETTINGS_SITE_SETTINGS_BLUETOOTH_DEVICES_BLOCKED},
+ {"siteSettingsCameraDescription",
+ IDS_SETTINGS_SITE_SETTINGS_CAMERA_DESCRIPTION},
+ {"siteSettingsCameraAllowed", IDS_SETTINGS_SITE_SETTINGS_CAMERA_ALLOWED},
+ {"siteSettingsCameraBlocked", IDS_SETTINGS_SITE_SETTINGS_CAMERA_BLOCKED},
+ {"siteSettingsCameraBlockedSubLabel",
+ IDS_SETTINGS_SITE_SETTINGS_CAMERA_BLOCKED_SUB_LABEL},
+ {"siteSettingsCameraAllowedExceptions",
+ IDS_SETTINGS_SITE_SETTINGS_CAMERA_ALLOWED_EXCEPTIONS},
+ {"siteSettingsCameraBlockedExceptions",
+ IDS_SETTINGS_SITE_SETTINGS_CAMERA_BLOCKED_EXCEPTIONS},
+ {"siteSettingsClipboardDescription",
+ IDS_SETTINGS_SITE_SETTINGS_CLIPBOARD_DESCRIPTION},
+ {"siteSettingsClipboardAllowed",
+ IDS_SETTINGS_SITE_SETTINGS_CLIPBOARD_ALLOWED},
+ {"siteSettingsClipboardBlocked",
+ IDS_SETTINGS_SITE_SETTINGS_CLIPBOARD_BLOCKED},
+ {"siteSettingsClipboardAllowedExceptions",
+ IDS_SETTINGS_SITE_SETTINGS_CLIPBOARD_ALLOWED_EXCEPTIONS},
+ {"siteSettingsClipboardBlockedExceptions",
+ IDS_SETTINGS_SITE_SETTINGS_CLIPBOARD_BLOCKED_EXCEPTIONS},
+ {"siteSettingsDeviceUseDescription",
+ IDS_SETTINGS_SITE_SETTINGS_DEVICE_USE_DESCRIPTION},
+ {"siteSettingsDeviceUseAllowed",
+ IDS_SETTINGS_SITE_SETTINGS_DEVICE_USE_ALLOWED},
+ {"siteSettingsDeviceUseBlocked",
+ IDS_SETTINGS_SITE_SETTINGS_DEVICE_USE_BLOCKED},
+ {"siteSettingsDeviceUseAllowedExceptions",
+ IDS_SETTINGS_SITE_SETTINGS_DEVICE_USE_ALLOWED_EXCEPTIONS},
+ {"siteSettingsDeviceUseBlockedExceptions",
+ IDS_SETTINGS_SITE_SETTINGS_DEVICE_USE_BLOCKED_EXCEPTIONS},
+ {"siteSettingsFederatedIdentityApi",
+ IDS_SITE_SETTINGS_TYPE_FEDERATED_IDENTITY_API},
+ {"siteSettingsFederatedIdentityApiAllowed",
+ IDS_SETTINGS_SITE_SETTINGS_FEDERATED_IDENTITY_API_ALLOWED},
+ {"siteSettingsFederatedIdentityApiBlocked",
+ IDS_SETTINGS_SITE_SETTINGS_FEDERATED_IDENTITY_API_BLOCKED},
+ {"siteSettingsFederatedIdentityApiAllowedExceptions",
+ IDS_SETTINGS_SITE_SETTINGS_FEDERATED_IDENTITY_API_ALLOWED_EXCEPTIONS},
+ {"siteSettingsFederatedIdentityApiBlockedExceptions",
+ IDS_SETTINGS_SITE_SETTINGS_FEDERATED_IDENTITY_API_BLOCKED_EXCEPTIONS},
+ {"siteSettingsFederatedIdentityApiDescription",
+ IDS_SETTINGS_SITE_SETTINGS_FEDERATED_IDENTITY_API_DESCRIPTION},
+ {"siteSettingsFederatedIdentityApiMidSentence",
+ IDS_SITE_SETTINGS_TYPE_FEDERATED_IDENTITY_API_MID_SENTENCE},
+ {"siteSettingsFileSystemWriteDescription",
+ IDS_SETTINGS_SITE_SETTINGS_FILE_SYSTEM_WRITE_DESCRIPTION},
+ {"siteSettingsFileSystemWriteAllowed",
+ IDS_SETTINGS_SITE_SETTINGS_FILE_SYSTEM_WRITE_ALLOWED},
+ {"siteSettingsFileSystemWriteBlocked",
+ IDS_SETTINGS_SITE_SETTINGS_FILE_SYSTEM_WRITE_BLOCKED},
+ {"siteSettingsFileSystemWriteBlockedExceptions",
+ IDS_SETTINGS_SITE_SETTINGS_FILE_SYSTEM_WRITE_BLOCKED_EXCEPTIONS},
+ {"siteSettingsFontsDescription",
+ IDS_SETTINGS_SITE_SETTINGS_FONTS_DESCRIPTION},
+ {"siteSettingsFontsAllowed", IDS_SETTINGS_SITE_SETTINGS_FONTS_ALLOWED},
+ {"siteSettingsFontsBlocked", IDS_SETTINGS_SITE_SETTINGS_FONTS_BLOCKED},
+ {"siteSettingsFontsAllowedExceptions",
+ IDS_SETTINGS_SITE_SETTINGS_FONTS_ALLOWED_EXCEPTIONS},
+ {"siteSettingsFontsBlockedExceptions",
+ IDS_SETTINGS_SITE_SETTINGS_FONTS_BLOCKED_EXCEPTIONS},
+ {"siteSettingsHidDevicesDescription",
+ IDS_SETTINGS_SITE_SETTINGS_HID_DEVICES_DESCRIPTION},
+ {"siteSettingsHidDevicesAllowed",
+ IDS_SETTINGS_SITE_SETTINGS_HID_DEVICES_ALLOWED},
+ {"siteSettingsHidDevicesBlocked",
+ IDS_SETTINGS_SITE_SETTINGS_HID_DEVICES_BLOCKED},
+ {"siteSettingsImagesDescription",
+ IDS_SETTINGS_SITE_SETTINGS_IMAGES_DESCRIPTION},
+ {"siteSettingsImagesAllowed", IDS_SETTINGS_SITE_SETTINGS_IMAGES_ALLOWED},
+ {"siteSettingsImagesBlocked", IDS_SETTINGS_SITE_SETTINGS_IMAGES_BLOCKED},
+ {"siteSettingsImagesBlockedSubLabel",
+ IDS_SETTINGS_SITE_SETTINGS_IMAGES_BLOCKED_SUB_LABEL},
+ {"siteSettingsImagesAllowedExceptions",
+ IDS_SETTINGS_SITE_SETTINGS_IMAGES_ALLOWED_EXCEPTIONS},
+ {"siteSettingsImagedBlockedExceptions",
+ IDS_SETTINGS_SITE_SETTINGS_IMAGES_BLOCKED_EXCEPTIONS},
+ {"siteSettingsInsecureContentDescription",
+ IDS_SETTINGS_SITE_SETTINGS_INSECURE_CONTENT_DESCRIPTION},
+ {"siteSettingsInsecureContentAllowedExceptions",
+ IDS_SETTINGS_SITE_SETTINGS_INSECURE_CONTENT_ALLOWED_EXCEPTIONS},
+ {"siteSettingsInsecureContentBlockedExceptions",
+ IDS_SETTINGS_SITE_SETTINGS_INSECURE_CONTENT_BLOCKED_EXCEPTIONS},
+ {"siteSettingsJavascriptDescription",
+ IDS_SETTINGS_SITE_SETTINGS_JAVASCRIPT_DESCRIPTION},
+ {"siteSettingsJavascriptAllowed",
+ IDS_SETTINGS_SITE_SETTINGS_JAVASCRIPT_ALLOWED},
+ {"siteSettingsJavascriptBlocked",
+ IDS_SETTINGS_SITE_SETTINGS_JAVASCRIPT_BLOCKED},
+ {"siteSettingsJavascriptAllowedExceptions",
+ IDS_SETTINGS_SITE_SETTINGS_JAVASCRIPT_ALLOWED_EXCEPTIONS},
+ {"siteSettingsJavascriptBlockedExceptions",
+ IDS_SETTINGS_SITE_SETTINGS_JAVASCRIPT_BLOCKED_EXCEPTIONS},
+ {"siteSettingsJavascriptJitDescription",
+ IDS_SETTINGS_SITE_SETTINGS_JAVASCRIPT_JIT_DESCRIPTION},
+ {"siteSettingsJavascriptJitAllowed",
+ IDS_SETTINGS_SITE_SETTINGS_JAVASCRIPT_JIT_ALLOWED},
+ {"siteSettingsJavascriptJitAllowedSubLabel",
+ IDS_SETTINGS_SITE_SETTINGS_JAVASCRIPT_JIT_ALLOWED_SUB_LABEL},
+ {"siteSettingsJavascriptJitBlocked",
+ IDS_SETTINGS_SITE_SETTINGS_JAVASCRIPT_JIT_BLOCKED},
+ {"siteSettingsJavascriptJitBlockedSubLabel",
+ IDS_SETTINGS_SITE_SETTINGS_JAVASCRIPT_JIT_BLOCKED_SUB_LABEL},
+ {"siteSettingsJavascriptJitAllowedExceptions",
+ IDS_SETTINGS_SITE_SETTINGS_JAVASCRIPT_JIT_ALLOWED_EXCEPTIONS},
+ {"siteSettingsJavascriptJitBlockedExceptions",
+ IDS_SETTINGS_SITE_SETTINGS_JAVASCRIPT_JIT_BLOCKED_EXCEPTIONS},
+ {"siteSettingsLocationDescription",
+ IDS_SETTINGS_SITE_SETTINGS_LOCATION_DESCRIPTION},
+ {"siteSettingsLocationAllowed",
+ IDS_SETTINGS_SITE_SETTINGS_LOCATION_ALLOWED},
+ {"siteSettingsLocationAskQuiet",
+ IDS_SETTINGS_SITE_SETTINGS_PERMISSION_QUIET},
+ {"siteSettingsLocationAskCPSS",
+ IDS_SETTINGS_SITE_SETTINGS_PERMISSION_CPSS},
+ {"siteSettingsLocationAskLoud",
+ IDS_SETTINGS_SITE_SETTINGS_PERMISSION_LOUD},
+ {"siteSettingsLocationBlocked",
+ IDS_SETTINGS_SITE_SETTINGS_LOCATION_BLOCKED},
+ {"siteSettingsLocationBlockedSubLabel",
+ IDS_SETTINGS_SITE_SETTINGS_LOCATION_BLOCKED_SUB_LABEL},
+ {"siteSettingsLocationAllowedExceptions",
+ IDS_SETTINGS_SITE_SETTINGS_LOCATION_ALLOWED_EXCEPTIONS},
+ {"siteSettingsLocationBlockedExceptions",
+ IDS_SETTINGS_SITE_SETTINGS_LOCATION_BLOCKED_EXCEPTIONS},
+ {"siteSettingsMicDescription",
+ IDS_SETTINGS_SITE_SETTINGS_MIC_DESCRIPTION},
+ {"siteSettingsMicAllowed", IDS_SETTINGS_SITE_SETTINGS_MIC_ALLOWED},
+ {"siteSettingsMicBlocked", IDS_SETTINGS_SITE_SETTINGS_MIC_BLOCKED},
+ {"siteSettingsMicBlockedSubLabel",
+ IDS_SETTINGS_SITE_SETTINGS_MIC_BLOCKED_SUB_LABEL},
+ {"siteSettingsMicAllowedExceptions",
+ IDS_SETTINGS_SITE_SETTINGS_MIC_ALLOWED_EXCEPTIONS},
+ {"siteSettingsMicBlockedExceptions",
+ IDS_SETTINGS_SITE_SETTINGS_MIC_BLOCKED_EXCEPTIONS},
+ {"siteSettingsMidiDescription",
+ IDS_SETTINGS_SITE_SETTINGS_MIDI_DESCRIPTION},
+ {"siteSettingsMidiAllowed", IDS_SETTINGS_SITE_SETTINGS_MIDI_ALLOWED},
+ {"siteSettingsMidiBlocked", IDS_SETTINGS_SITE_SETTINGS_MIDI_BLOCKED},
+ {"siteSettingsMidiAllowedExceptions",
+ IDS_SETTINGS_SITE_SETTINGS_MIDI_ALLOWED_EXCEPTIONS},
+ {"siteSettingsMidiBlockedExceptions",
+ IDS_SETTINGS_SITE_SETTINGS_MIDI_BLOCKED_EXCEPTIONS},
+ {"siteSettingsMotionSensorsDescription",
+ IDS_SETTINGS_SITE_SETTINGS_MOTION_SENSORS_DESCRIPTION},
+ {"siteSettingsMotionSensorsAllowed",
+ IDS_SETTINGS_SITE_SETTINGS_MOTION_SENSORS_ALLOWED},
+ {"siteSettingsMotionSensorsBlocked",
+ IDS_SETTINGS_SITE_SETTINGS_MOTION_SENSORS_BLOCKED},
+ {"siteSettingsMotionSensorsBlockedSubLabel",
+ IDS_SETTINGS_SITE_SETTINGS_MOTION_SENSORS_BLOCKED_SUB_LABEL},
+ {"siteSettingsMotionSensorsAllowedExceptions",
+ IDS_SETTINGS_SITE_SETTINGS_MOTION_SENSORS_ALLOWED_EXCEPTIONS},
+ {"siteSettingsMotionSensorsBlockedExceptions",
+ IDS_SETTINGS_SITE_SETTINGS_MOTION_SENSORS_BLOCKED_EXCEPTIONS},
+ {"siteSettingsNotificationsDescription",
+ IDS_SETTINGS_SITE_SETTINGS_NOTIFICATIONS_DESCRIPTION},
+ {"siteSettingsNotificationsAllowed",
+ IDS_SETTINGS_SITE_SETTINGS_NOTIFICATIONS_ALLOWED},
+ {"siteSettingsNotificationsPartial",
+ IDS_SETTINGS_SITE_SETTINGS_NOTIFICATIONS_PARTIAL},
+ {"siteSettingsNotificationsPartialSubLabel",
+ IDS_SETTINGS_SITE_SETTINGS_NOTIFICATIONS_PARTIAL_SUB_LABEL},
+ {"siteSettingsNotificationsAskState",
+ IDS_SETTINGS_SITE_SETTINGS_NOTIFICATIONS_ASK_STATE},
+ {"siteSettingsNotificationsAskQuiet",
+ IDS_SETTINGS_SITE_SETTINGS_PERMISSION_QUIET},
+ {"siteSettingsNotificationsAskCPSS",
+ IDS_SETTINGS_SITE_SETTINGS_PERMISSION_CPSS},
+ {"siteSettingsNotificationsAskLoud",
+ IDS_SETTINGS_SITE_SETTINGS_PERMISSION_LOUD},
+ {"siteSettingsNotificationsBlocked",
+ IDS_SETTINGS_SITE_SETTINGS_NOTIFICATIONS_BLOCKED},
+ {"siteSettingsNotificationsBlockedSubLabel",
+ IDS_SETTINGS_SITE_SETTINGS_NOTIFICATIONS_BLOCKED_SUB_LABEL},
+ {"siteSettingsNotificationsAllowedExceptions",
+ IDS_SETTINGS_SITE_SETTINGS_NOTIFICATIONS_ALLOWED_EXCEPTIONS},
+ {"siteSettingsNotificationsBlockedExceptions",
+ IDS_SETTINGS_SITE_SETTINGS_NOTIFICATIONS_BLOCKED_EXCEPTIONS},
+ {"siteSettingsPaymentHandlersDescription",
+ IDS_SETTINGS_SITE_SETTINGS_PAYMENT_HANDLERS_DESCRIPTION},
+ {"siteSettingsPaymentHandlersAllowed",
+ IDS_SETTINGS_SITE_SETTINGS_PAYMENT_HANDLERS_ALLOWED},
+ {"siteSettingsPaymentHandlersBlocked",
+ IDS_SETTINGS_SITE_SETTINGS_PAYMENT_HANDLERS_BLOCKED},
+ {"siteSettingsPaymentHandlersAllowedExceptions",
+ IDS_SETTINGS_SITE_SETTINGS_PAYMENT_HANDLERS_ALLOWED_EXCEPTIONS},
+ {"siteSettingsPaymentHandlersBlockedExceptions",
+ IDS_SETTINGS_SITE_SETTINGS_PAYMENT_HANDLERS_BLOCKED_EXCEPTIONS},
+ {"siteSettingsPdfsDescription",
+ IDS_SETTINGS_SITE_SETTINGS_PDFS_DESCRIPTION},
+ {"siteSettingsPdfsAllowed", IDS_SETTINGS_SITE_SETTINGS_PDFS_ALLOWED},
+ {"siteSettingsPdfsBlocked", IDS_SETTINGS_SITE_SETTINGS_PDFS_BLOCKED},
+ {"siteSettingsPopupsDescription",
+ IDS_SETTINGS_SITE_SETTINGS_POPUPS_DESCRIPTION},
+ {"siteSettingsPopupsAllowed", IDS_SETTINGS_SITE_SETTINGS_POPUPS_ALLOWED},
+ {"siteSettingsPopupsBlocked", IDS_SETTINGS_SITE_SETTINGS_POPUPS_BLOCKED},
+ {"siteSettingsPopupsAllowedExceptions",
+ IDS_SETTINGS_SITE_SETTINGS_POPUPS_ALLOWED_EXCEPTIONS},
+ {"siteSettingsPopupsBlockedExceptions",
+ IDS_SETTINGS_SITE_SETTINGS_POPUPS_BLOCKED_EXCEPTIONS},
+ {"siteSettingsProtocolHandlersDescription",
+ IDS_SETTINGS_SITE_SETTINGS_PROTOCOL_HANDLERS_DESCRIPTION},
+ {"siteSettingsProtocolHandlersAllowed",
+ IDS_SETTINGS_SITE_SETTINGS_PROTOCOL_HANDLERS_ALLOWED},
+ {"siteSettingsProtocolHandlersBlocked",
+ IDS_SETTINGS_SITE_SETTINGS_PROTOCOL_HANDLERS_BLOCKED},
+ {"siteSettingsProtocolHandlersBlockedExceptions",
+ IDS_SETTINGS_SITE_SETTINGS_PROTOCOL_HANDLERS_BLOCKED_EXCEPTIONS},
+ {"siteSettingsSerialPortsDescription",
+ IDS_SETTINGS_SITE_SETTINGS_SERIAL_PORTS_DESCRIPTION},
+ {"siteSettingsSerialPortsAllowed",
+ IDS_SETTINGS_SITE_SETTINGS_SERIAL_PORTS_ALLOWED},
+ {"siteSettingsSerialPortsBlocked",
+ IDS_SETTINGS_SITE_SETTINGS_SERIAL_PORTS_BLOCKED},
+ {"siteSettingsSoundDescription",
+ IDS_SETTINGS_SITE_SETTINGS_SOUND_DESCRIPTION},
+ {"siteSettingsSoundAllowed", IDS_SETTINGS_SITE_SETTINGS_SOUND_ALLOWED},
+ {"siteSettingsSoundBlocked", IDS_SETTINGS_SITE_SETTINGS_SOUND_BLOCKED},
+ {"siteSettingsSoundBlockedSubLabel",
+ IDS_SETTINGS_SITE_SETTINGS_SOUND_BLOCKED_SUB_LABEL},
+ {"siteSettingsSoundAllowedExceptions",
+ IDS_SETTINGS_SITE_SETTINGS_SOUND_ALLOWED_EXCEPTIONS},
+ {"siteSettingsSoundBlockedExceptions",
+ IDS_SETTINGS_SITE_SETTINGS_SOUND_BLOCKED_EXCEPTIONS},
+ {"siteSettingsUsbDescription",
+ IDS_SETTINGS_SITE_SETTINGS_USB_DESCRIPTION},
+ {"siteSettingsUsbAllowed", IDS_SETTINGS_SITE_SETTINGS_USB_ALLOWED},
+ {"siteSettingsUsbBlocked", IDS_SETTINGS_SITE_SETTINGS_USB_BLOCKED},
+ {"siteSettingsVrDescription", IDS_SETTINGS_SITE_SETTINGS_VR_DESCRIPTION},
+ {"siteSettingsVrAllowed", IDS_SETTINGS_SITE_SETTINGS_VR_ALLOWED},
+ {"siteSettingsVrBlocked", IDS_SETTINGS_SITE_SETTINGS_VR_BLOCKED},
+ {"siteSettingsVrAllowedExceptions",
+ IDS_SETTINGS_SITE_SETTINGS_VR_ALLOWED_EXCEPTIONS},
+ {"siteSettingsVrBlockedExceptions",
+ IDS_SETTINGS_SITE_SETTINGS_VR_BLOCKED_EXCEPTIONS},
+ {"siteSettingsZoomLevelsDescription",
+ IDS_SETTINGS_SITE_SETTINGS_ZOOM_LEVELS_DESCRIPTION},
+ {"siteSettingsAds", IDS_SITE_SETTINGS_TYPE_ADS},
+ {"siteSettingsAdsMidSentence", IDS_SITE_SETTINGS_TYPE_ADS_MID_SENTENCE},
+ {"siteSettingsPaymentHandler", IDS_SITE_SETTINGS_TYPE_PAYMENT_HANDLER},
+ {"siteSettingsPaymentHandlerMidSentence",
+ IDS_SITE_SETTINGS_TYPE_PAYMENT_HANDLER_MID_SENTENCE},
+ {"siteSettingsBlockAutoplaySetting",
+ IDS_SETTINGS_SITE_SETTINGS_BLOCK_AUTOPLAY},
+ {"emptyAllSitesPage", IDS_SETTINGS_SITE_SETTINGS_EMPTY_ALL_SITES_PAGE},
+ {"noSitesFound", IDS_SETTINGS_SITE_SETTINGS_NO_SITES_FOUND},
+ {"siteSettingsBluetoothScanning",
+ IDS_SITE_SETTINGS_TYPE_BLUETOOTH_SCANNING},
+ {"siteSettingsBluetoothScanningMidSentence",
+ IDS_SITE_SETTINGS_TYPE_BLUETOOTH_SCANNING_MID_SENTENCE},
+ {"siteSettingsBluetoothScanningDescription",
+ IDS_SETTINGS_SITE_SETTINGS_BLUETOOTH_SCANNING_DESCRIPTION},
+ {"siteSettingsBluetoothScanningAsk",
+ IDS_SETTINGS_SITE_SETTINGS_BLUETOOTH_SCANNING_ASK},
+ {"siteSettingsBluetoothScanningBlock",
+ IDS_SETTINGS_SITE_SETTINGS_BLUETOOTH_SCANNING_BLOCK},
+ {"siteSettingsBluetoothScanningAllowedExceptions",
+ IDS_SETTINGS_SITE_SETTINGS_BLUETOOTH_SCANNING_ALLOWED_EXCEPTIONS},
+ {"siteSettingsBluetoothScanningBlockedExceptions",
+ IDS_SETTINGS_SITE_SETTINGS_BLUETOOTH_SCANNING_BLOCKED_EXCEPTIONS},
+ {"siteSettingsAr", IDS_SITE_SETTINGS_TYPE_AR},
+ {"siteSettingsArMidSentence", IDS_SITE_SETTINGS_TYPE_AR_MID_SENTENCE},
+ {"siteSettingsArAsk", IDS_SETTINGS_SITE_SETTINGS_AR_ASK},
+ {"siteSettingsArBlock", IDS_SETTINGS_SITE_SETTINGS_AR_BLOCK},
+ {"siteSettingsVr", IDS_SITE_SETTINGS_TYPE_VR},
+ {"siteSettingsVrMidSentence", IDS_SITE_SETTINGS_TYPE_VR_MID_SENTENCE},
+ {"siteSettingsWebPrinting", IDS_SITE_SETTINGS_TYPE_WEB_PRINTING},
+ {"siteSettingsWebPrintingMidSentence",
+ IDS_SITE_SETTINGS_TYPE_WEB_PRINTING_MID_SENTENCE},
+ {"siteSettingsWebPrintingDescription",
+ IDS_SETTINGS_SITE_SETTINGS_WEB_PRINTING_DESCRIPTION},
+ {"siteSettingsWebPrintingAsk",
+ IDS_SETTINGS_SITE_SETTINGS_WEB_PRINTING_ASK},
+ {"siteSettingsWebPrintingBlock",
+ IDS_SETTINGS_SITE_SETTINGS_WEB_PRINTING_BLOCK},
+ {"siteSettingsWebPrintingAllowedExceptions",
+ IDS_SETTINGS_SITE_SETTINGS_WEB_PRINTING_ALLOWED_EXCEPTIONS},
+ {"siteSettingsWebPrintingBlockedExceptions",
+ IDS_SETTINGS_SITE_SETTINGS_WEB_PRINTING_BLOCKED_EXCEPTIONS},
+ {"siteSettingsWindowManagement",
+ IDS_SITE_SETTINGS_TYPE_WINDOW_MANAGEMENT},
+ {"siteSettingsWindowManagementMidSentence",
+ IDS_SITE_SETTINGS_TYPE_WINDOW_MANAGEMENT_MID_SENTENCE},
+ {"siteSettingsWindowManagementDescription",
+ IDS_SETTINGS_SITE_SETTINGS_WINDOW_MANAGEMENT_DESCRIPTION},
+ {"siteSettingsWindowManagementAsk",
+ IDS_SETTINGS_SITE_SETTINGS_WINDOW_MANAGEMENT_ASK},
+ {"siteSettingsWindowManagementBlocked",
+ IDS_SETTINGS_SITE_SETTINGS_WINDOW_MANAGEMENT_BLOCKED},
+ {"siteSettingsWindowManagementAskExceptions",
+ IDS_SETTINGS_SITE_SETTINGS_WINDOW_MANAGEMENT_ASK_EXCEPTIONS},
+ {"siteSettingsWindowManagementBlockedExceptions",
+ IDS_SETTINGS_SITE_SETTINGS_WINDOW_MANAGEMENT_BLOCKED_EXCEPTIONS},
+ {"siteSettingsFontAccessMidSentence",
+ IDS_SITE_SETTINGS_TYPE_FONT_ACCESS_MID_SENTENCE},
+ {"siteSettingsIdleDetection", IDS_SITE_SETTINGS_TYPE_IDLE_DETECTION},
+ {"siteSettingsIdleDetectionMidSentence",
+ IDS_SITE_SETTINGS_TYPE_IDLE_DETECTION_MID_SENTENCE},
+ {"siteSettingsExtensionIdDescription",
+ IDS_SETTINGS_SITE_SETTINGS_EXTENSION_ID_DESCRIPTION},
+ {"siteSettingsSiteDataAllowedSubLabel",
+ IDS_SETTINGS_SITE_SETTINGS_PAGE_SITE_DATA_ALLOWED_SUB_LABEL},
+ {"siteSettingsSiteDataBlockedSubLabel",
+ IDS_SETTINGS_SITE_SETTINGS_PAGE_SITE_DATA_BLOCKED_SUB_LABEL},
+ {"siteSettingsSiteDataDeleteOnExitSubLabel",
+ IDS_SETTINGS_SITE_SETTINGS_PAGE_SITE_DATA_DELETE_ON_EXIT_SUB_LABEL},
+ {"siteSettingsAntiAbuse", IDS_SITE_SETTINGS_TYPE_ANTI_ABUSE},
+ {"siteSettingsAntiAbuseDescription", IDS_SETTINGS_ANTI_ABUSE_DESCRIPTION},
+ {"siteSettingsAntiAbuseEnabledSubLabel",
+ IDS_SETTINGS_ANTI_ABUSE_ENABLED_SUB_LABEL},
+ {"siteSettingsAntiAbuseDisabledSubLabel",
+ IDS_SETTINGS_ANTI_ABUSE_DISABLED_SUB_LABEL},
+ {"antiAbuseWhenOnHeader", IDS_SETTINGS_ANTI_ABUSE_WHEN_ON_HEADER},
+ {"antiAbuseWhenOnSectionOne",
+ IDS_SETTINGS_ANTI_ABUSE_WHEN_ON_SECTION_ONE},
+ {"antiAbuseWhenOnSectionTwo",
+ IDS_SETTINGS_ANTI_ABUSE_WHEN_ON_SECTION_TWO},
+ {"antiAbuseWhenOnSectionThree",
+ IDS_SETTINGS_ANTI_ABUSE_WHEN_ON_SECTION_THREE},
+ {"antiAbuseThingsToConsiderHeader",
+ IDS_SETTINGS_ANTI_ABUSE_THINGS_TO_CONSIDER_HEADER},
+ {"antiAbuseThingsToConsiderSectionOne",
+ IDS_SETTINGS_ANTI_ABUSE_THINGS_TO_CONSIDER_SECTION_ONE},
+ {"siteSettingsPerformance", IDS_SITE_SETTINGS_TYPE_PERFORMANCE},
+ {"siteSettingsPerformanceSublabel",
+ IDS_SITE_SETTINGS_TYPE_PERFORMANCE_SUBLABEL},
};
html_source->AddLocalizedStrings(kLocalizedStrings);
@@ -3317,7 +3349,8 @@ void AddSiteSettingsStrings(content::WebUIDataSource* html_source,
IDS_SETTINGS_TRACKING_PROTECTION_BULLET_TWO_DESCRIPTION,
chrome::kUserBypassHelpCenterURL,
l10n_util::GetStringUTF16(
- IDS_SETTINGS_TRACKING_PROTECTION_BULLET_TWO_LEARN_MORE_ARIA_LABEL)));
+ IDS_SETTINGS_TRACKING_PROTECTION_BULLET_TWO_LEARN_MORE_ARIA_LABEL),
+ l10n_util::GetStringUTF16(IDS_SETTINGS_OPENS_IN_NEW_TAB)));
html_source->AddString(
"trackingProtectionRollbackNotice",
l10n_util::GetStringFUTF16(
@@ -3354,6 +3387,10 @@ void AddSiteSettingsStrings(content::WebUIDataSource* html_source,
"enablePaymentHandlerContentSetting",
base::FeatureList::IsEnabled(features::kServiceWorkerPaymentApps));
+ html_source->AddBoolean(
+ "enableWebPrintingContentSetting",
+ base::FeatureList::IsEnabled(blink::features::kWebPrinting));
+
html_source->AddBoolean("enableFederatedIdentityApiContentSetting",
base::FeatureList::IsEnabled(features::kFedCm));
@@ -3366,6 +3403,8 @@ void AddSiteSettingsStrings(content::WebUIDataSource* html_source,
base::FeatureList::IsEnabled(
features::kWebBluetoothNewPermissionsBackend));
+ // TODO(crbug.com/1467574): Remove `kFileSystemAccessPersistentPermissions`
+ // flag after FSA Persistent Permissions feature launch.
html_source->AddBoolean(
"showPersistentPermissions",
base::FeatureList::IsEnabled(
@@ -3378,7 +3417,7 @@ void AddSiteSettingsStrings(content::WebUIDataSource* html_source,
html_source->AddBoolean(
"blockMidiByDefault",
- base::FeatureList::IsEnabled(permissions::features::kBlockMidiByDefault));
+ base::FeatureList::IsEnabled(features::kBlockMidiByDefault));
// The exception placeholder should not be translated. See
// crbug.com/1095878.
@@ -3420,8 +3459,6 @@ void AddSiteDataPageStrings(content::WebUIDataSource* html_source,
IDS_SETTINGS_SITE_DATA_PAGE_ALLOW_RADIO_SUB_LABEL},
{"siteDataPageClearOnExitRadioLabel",
IDS_SETTINGS_SITE_DATA_PAGE_CLEAR_ON_EXIT_RADIO_LABEL},
- {"siteDataPageClearOnExitRadioSubLabel",
- IDS_SETTINGS_SITE_DATA_PAGE_CLEAR_ON_EXIT_RADIO_SUBLABEL},
{"siteDataPageBlockRadioLabel",
IDS_SETTINGS_SITE_DATA_PAGE_BLOCK_RADIO_LABEL},
{"siteDataPageBlockRadioSublabel",
@@ -3446,23 +3483,28 @@ void AddSiteDataPageStrings(content::WebUIDataSource* html_source,
IDS_SETTINGS_SITE_DATA_PAGE_BLOCK_CONFIRM_DIALOG_CANCEL_BUTTON},
};
html_source->AddLocalizedStrings(kLocalizedStrings);
+ html_source->AddLocalizedString(
+ "siteDataPageClearOnExitRadioSubLabel",
+ base::FeatureList::IsEnabled(switches::kUnoDesktop)
+ ? IDS_SETTINGS_SITE_DATA_PAGE_CLEAR_ON_EXIT_WITH_EXCEPTION_RADIO_SUBLABEL
+ : IDS_SETTINGS_SITE_DATA_PAGE_CLEAR_ON_EXIT_RADIO_SUBLABEL);
}
#if !BUILDFLAG(IS_CHROMEOS_ASH)
void AddSystemStrings(content::WebUIDataSource* html_source) {
static constexpr webui::LocalizedString kLocalizedStrings[] = {
- {"systemPageTitle", IDS_SETTINGS_SYSTEM},
+ {"systemPageTitle", IDS_SETTINGS_SYSTEM},
#if !BUILDFLAG(IS_MAC) && !BUILDFLAG(IS_CHROMEOS_LACROS)
- {"backgroundAppsLabel", IDS_SETTINGS_SYSTEM_BACKGROUND_APPS_LABEL},
+ {"backgroundAppsLabel", IDS_SETTINGS_SYSTEM_BACKGROUND_APPS_LABEL},
#endif
#if !BUILDFLAG(IS_CHROMEOS_LACROS)
- {"hardwareAccelerationLabel",
- IDS_SETTINGS_SYSTEM_HARDWARE_ACCELERATION_LABEL},
- {"proxySettingsLabel", IDS_SETTINGS_SYSTEM_PROXY_SETTINGS_LABEL},
+ {"hardwareAccelerationLabel",
+ IDS_SETTINGS_SYSTEM_HARDWARE_ACCELERATION_LABEL},
+ {"proxySettingsLabel", IDS_SETTINGS_SYSTEM_PROXY_SETTINGS_LABEL},
#endif
#if BUILDFLAG(IS_CHROMEOS_LACROS)
- {"useAshProxyLabel", IDS_SETTINGS_SYSTEM_USE_ASH_PROXY_LABEL},
- {"usesAshProxyLabel", IDS_SETTINGS_SYSTEM_USES_ASH_PROXY_LABEL},
+ {"useAshProxyLabel", IDS_SETTINGS_SYSTEM_USE_ASH_PROXY_LABEL},
+ {"usesAshProxyLabel", IDS_SETTINGS_SYSTEM_USES_ASH_PROXY_LABEL},
#endif
};
html_source->AddLocalizedStrings(kLocalizedStrings);
@@ -3656,7 +3698,16 @@ void AddLocalizedStrings(content::WebUIDataSource* html_source,
AddResetStrings(html_source, profile);
AddSearchEnginesStrings(html_source);
AddSearchInSettingsStrings(html_source);
+#if BUILDFLAG(IS_CHROMEOS)
+#if BUILDFLAG(IS_CHROMEOS_LACROS)
+ const bool for_primary_profile = profile->IsMainProfile();
+#else // !BUILDFLAG(IS_CHROMEOS_LACROS)
+ const bool for_primary_profile = true;
+#endif // BUILDFLAG(IS_CHROMEOS_LACROS)
+ AddSearchStrings(html_source, for_primary_profile);
+#else // !BUILDFLAG(IS_CHROMEOS)
AddSearchStrings(html_source);
+#endif // BUILDFLAG(IS_CHROMEOS)
AddSiteSettingsStrings(html_source, profile);
AddSiteDataPageStrings(html_source, profile);
AddStorageAccessStrings(html_source);
diff --git a/chromium/chrome/browser/ui/webui/settings/settings_manage_profile_handler_unittest.cc b/chromium/chrome/browser/ui/webui/settings/settings_manage_profile_handler_unittest.cc
index dc129a6908d..da1355890df 100644
--- a/chromium/chrome/browser/ui/webui/settings/settings_manage_profile_handler_unittest.cc
+++ b/chromium/chrome/browser/ui/webui/settings/settings_manage_profile_handler_unittest.cc
@@ -105,7 +105,7 @@ class ManageProfileHandlerTest : public testing::Test {
EXPECT_TRUE(profiles::IsDefaultAvatarIconUrl(*icon_url, &url_icon_index));
EXPECT_EQ(icon_index, url_icon_index);
EXPECT_TRUE(!icon_dict.FindString("label")->empty());
- absl::optional<bool> current_selected = icon_dict.FindBool("selected");
+ std::optional<bool> current_selected = icon_dict.FindBool("selected");
if (selected_index == icon_index) {
EXPECT_FALSE(selected_found);
EXPECT_TRUE(current_selected.value_or(false));
@@ -355,7 +355,7 @@ TEST_F(ManageProfileHandlerTest, ProfileThemeColorsChangedWebUIEvent) {
entry()->SetAvatarIconIndex(37);
web_ui()->ClearTrackedCalls();
- entry()->SetProfileThemeColors(absl::nullopt);
+ entry()->SetProfileThemeColors(std::nullopt);
EXPECT_EQ(1U, web_ui()->call_data().size());
const content::TestWebUI::CallData& data_1 = *web_ui()->call_data().back();
diff --git a/chromium/chrome/browser/ui/webui/settings/settings_media_devices_selection_handler.cc b/chromium/chrome/browser/ui/webui/settings/settings_media_devices_selection_handler.cc
index e57305f2131..fd22a9680d7 100644
--- a/chromium/chrome/browser/ui/webui/settings/settings_media_devices_selection_handler.cc
+++ b/chromium/chrome/browser/ui/webui/settings/settings_media_devices_selection_handler.cc
@@ -6,13 +6,13 @@
#include <stddef.h>
-#include <memory>
#include <utility>
#include "base/functional/bind.h"
+#include "chrome/browser/media/prefs/capture_device_ranking.h"
#include "chrome/browser/profiles/profile.h"
-#include "chrome/common/pref_names.h"
#include "components/prefs/pref_service.h"
+#include "extensions/buildflags/buildflags.h"
#if BUILDFLAG(ENABLE_EXTENSIONS)
#include "extensions/strings/grit/extensions_strings.h"
@@ -24,6 +24,16 @@ namespace {
const char kAudio[] = "mic";
const char kVideo[] = "camera";
+blink::MediaStreamDevices::const_iterator GetPreferredDeviceInfoIter(
+ const std::string& id,
+ const blink::MediaStreamDevices& infos) {
+ auto preferred_iter = std::find_if(
+ infos.begin(), infos.end(),
+ [id](const blink::MediaStreamDevice& info) { return info.id == id; });
+ CHECK(preferred_iter < infos.end());
+ return preferred_iter;
+}
+
} // namespace
namespace settings {
@@ -31,8 +41,7 @@ namespace settings {
MediaDevicesSelectionHandler::MediaDevicesSelectionHandler(Profile* profile)
: profile_(profile) {}
-MediaDevicesSelectionHandler::~MediaDevicesSelectionHandler() {
-}
+MediaDevicesSelectionHandler::~MediaDevicesSelectionHandler() = default;
void MediaDevicesSelectionHandler::OnJavascriptAllowed() {
// Register to the device observer list to get up-to-date device lists.
@@ -58,12 +67,22 @@ void MediaDevicesSelectionHandler::RegisterMessages() {
void MediaDevicesSelectionHandler::OnUpdateAudioDevices(
const blink::MediaStreamDevices& devices) {
- UpdateDevicesMenu(AUDIO, devices);
+ PrefService* prefs = profile_->GetPrefs();
+ audio_device_infos_ = devices;
+ media_prefs::PreferenceRankAudioDeviceInfos(*prefs, audio_device_infos_);
+ UpdateDevicesMenu(kAudio, audio_device_infos_);
}
void MediaDevicesSelectionHandler::OnUpdateVideoDevices(
const blink::MediaStreamDevices& devices) {
- UpdateDevicesMenu(VIDEO, devices);
+ PrefService* prefs = profile_->GetPrefs();
+ video_device_infos_ = devices;
+ media_prefs::PreferenceRankVideoDeviceInfos(*prefs, video_device_infos_);
+ UpdateDevicesMenu(kVideo, video_device_infos_);
+}
+
+void MediaDevicesSelectionHandler::SetWebUiForTest(content::WebUI* web_ui) {
+ set_web_ui(web_ui);
}
void MediaDevicesSelectionHandler::GetDefaultCaptureDevices(
@@ -76,73 +95,60 @@ void MediaDevicesSelectionHandler::GetDefaultCaptureDevices(
const std::string& type = args[0].GetString();
DCHECK(!type.empty());
- if (type == kAudio)
- UpdateDevicesMenuForType(AUDIO);
- else if (type == kVideo)
- UpdateDevicesMenuForType(VIDEO);
+ if (type == kAudio) {
+ OnUpdateAudioDevices(
+ MediaCaptureDevicesDispatcher::GetInstance()->GetAudioCaptureDevices());
+ } else if (type == kVideo) {
+ OnUpdateVideoDevices(
+ MediaCaptureDevicesDispatcher::GetInstance()->GetVideoCaptureDevices());
+ }
}
void MediaDevicesSelectionHandler::SetDefaultCaptureDevice(
const base::Value::List& args) {
- DCHECK_EQ(2U, args.size());
+ CHECK_EQ(2U, args.size());
if (!args[0].is_string() || !args[1].is_string()) {
NOTREACHED();
return;
}
const std::string& type = args[0].GetString();
- const std::string& device = args[1].GetString();
+ const std::string& device_id = args[1].GetString();
- DCHECK(!type.empty());
- DCHECK(!device.empty());
+ CHECK(!type.empty());
+ CHECK(!device_id.empty());
PrefService* prefs = profile_->GetPrefs();
- if (type == kAudio)
- prefs->SetString(prefs::kDefaultAudioCaptureDevice, device);
- else if (type == kVideo)
- prefs->SetString(prefs::kDefaultVideoCaptureDevice, device);
- else
+ if (type == kAudio) {
+ auto preferred_iter =
+ GetPreferredDeviceInfoIter(device_id, audio_device_infos_);
+ media_prefs::UpdateAudioDevicePreferenceRanking(*prefs, preferred_iter,
+ audio_device_infos_);
+ } else if (type == kVideo) {
+ auto preferred_iter =
+ GetPreferredDeviceInfoIter(device_id, video_device_infos_);
+ media_prefs::UpdateVideoDevicePreferenceRanking(*prefs, preferred_iter,
+ video_device_infos_);
+ } else {
NOTREACHED();
+ }
}
void MediaDevicesSelectionHandler::UpdateDevicesMenu(
- DeviceType type,
+ std::string type,
const blink::MediaStreamDevices& devices) {
AllowJavascript();
- // Get the default device unique id from prefs.
- PrefService* prefs = profile_->GetPrefs();
- std::string default_device;
- std::string device_type;
- switch (type) {
- case AUDIO:
- default_device = prefs->GetString(prefs::kDefaultAudioCaptureDevice);
- device_type = kAudio;
- break;
- case VIDEO:
- default_device = prefs->GetString(prefs::kDefaultVideoCaptureDevice);
- device_type = kVideo;
- break;
- }
-
// Build the list of devices to send to JS.
- std::string default_id;
base::Value::List device_list;
for (const auto& device : devices) {
base::Value::Dict entry;
entry.Set("name", GetDeviceDisplayName(device));
entry.Set("id", device.id);
device_list.Append(std::move(entry));
- if (device.id == default_device)
- default_id = default_device;
}
- // Use the first device as the default device if the preferred default device
- // does not exist in the OS.
- if (!devices.empty() && default_id.empty())
- default_id = devices[0].id;
-
- base::Value default_value(default_id);
- base::Value type_value(device_type);
+ base::Value default_value(devices.empty() ? "" : devices.front().id);
+ base::Value type_value(type);
FireWebUIListener("updateDevicesMenu", type_value, device_list,
default_value);
@@ -162,7 +168,7 @@ std::string MediaDevicesSelectionHandler::GetDeviceDisplayName(
break;
case media::VideoFacingMode::MEDIA_VIDEO_FACING_NONE:
break;
- case media::VideoFacingMode::NUM_MEDIA_VIDEO_FACING_MODES:
+ default:
NOTREACHED();
break;
}
@@ -173,20 +179,4 @@ std::string MediaDevicesSelectionHandler::GetDeviceDisplayName(
return device.name + " " + facing_info;
}
-void MediaDevicesSelectionHandler::UpdateDevicesMenuForType(DeviceType type) {
- blink::MediaStreamDevices devices;
- switch (type) {
- case AUDIO:
- devices = MediaCaptureDevicesDispatcher::GetInstance()->
- GetAudioCaptureDevices();
- break;
- case VIDEO:
- devices = MediaCaptureDevicesDispatcher::GetInstance()->
- GetVideoCaptureDevices();
- break;
- }
-
- UpdateDevicesMenu(type, devices);
-}
-
} // namespace settings
diff --git a/chromium/chrome/browser/ui/webui/settings/settings_media_devices_selection_handler.h b/chromium/chrome/browser/ui/webui/settings/settings_media_devices_selection_handler.h
index c9f1dd19f08..ef68a3dcfca 100644
--- a/chromium/chrome/browser/ui/webui/settings/settings_media_devices_selection_handler.h
+++ b/chromium/chrome/browser/ui/webui/settings/settings_media_devices_selection_handler.h
@@ -9,7 +9,7 @@
#include "base/scoped_observation.h"
#include "chrome/browser/media/webrtc/media_capture_devices_dispatcher.h"
#include "chrome/browser/ui/webui/settings/settings_page_ui_handler.h"
-#include "content/public/browser/web_contents.h"
+#include "third_party/blink/public/common/mediastream/media_devices.h"
namespace settings {
@@ -35,12 +35,9 @@ class MediaDevicesSelectionHandler
void OnUpdateAudioDevices(const blink::MediaStreamDevices& devices) override;
void OnUpdateVideoDevices(const blink::MediaStreamDevices& devices) override;
- private:
- enum DeviceType {
- AUDIO,
- VIDEO,
- };
+ void SetWebUiForTest(content::WebUI* web_ui);
+ private:
// Fetches the list of default capture devices.
void GetDefaultCaptureDevices(const base::Value::List& args);
@@ -50,8 +47,7 @@ class MediaDevicesSelectionHandler
void SetDefaultCaptureDevice(const base::Value::List& args);
// Helpers methods to update the device menus.
- void UpdateDevicesMenuForType(DeviceType type);
- void UpdateDevicesMenu(DeviceType type,
+ void UpdateDevicesMenu(std::string type,
const blink::MediaStreamDevices& devices);
// Gets the human readable name of the device.
@@ -63,6 +59,9 @@ class MediaDevicesSelectionHandler
base::ScopedObservation<MediaCaptureDevicesDispatcher,
MediaCaptureDevicesDispatcher::Observer>
observation_{this};
+
+ blink::MediaStreamDevices audio_device_infos_;
+ blink::MediaStreamDevices video_device_infos_;
};
} // namespace settings
diff --git a/chromium/chrome/browser/ui/webui/settings/settings_media_devices_selection_handler_unittest.cc b/chromium/chrome/browser/ui/webui/settings/settings_media_devices_selection_handler_unittest.cc
new file mode 100644
index 00000000000..61ed083c932
--- /dev/null
+++ b/chromium/chrome/browser/ui/webui/settings/settings_media_devices_selection_handler_unittest.cc
@@ -0,0 +1,154 @@
+// Copyright 2023 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/ui/webui/settings/settings_media_devices_selection_handler.h"
+#include "base/test/test_future.h"
+#include "chrome/test/base/testing_profile.h"
+#include "content/public/test/browser_task_environment.h"
+#include "content/public/test/test_web_ui.h"
+#include "testing/gmock/include/gmock/gmock.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace {
+MATCHER(DeviceEq, "") {
+ const auto& actual_device = std::get<0>(arg).GetDict();
+ const auto& expected_device = std::get<1>(arg);
+
+ return expected_device.id == *actual_device.FindString("id") &&
+ expected_device.name == *actual_device.FindString("name");
+}
+} // namespace
+
+namespace settings {
+
+class MediaDevicesSelectionHandlerTest
+ : public testing::Test,
+ public content::TestWebUI::JavascriptCallObserver {
+ public:
+ MediaDevicesSelectionHandlerTest() : handler_(&profile_) {}
+
+ void SetUp() override {
+ handler_.SetWebUiForTest(&test_web_ui_);
+ handler_.RegisterMessages();
+ EXPECT_TRUE(test_web_ui_.call_data().empty());
+ handler_.AllowJavascriptForTesting();
+ test_web_ui_.ClearTrackedCalls();
+ test_web_ui_.AddJavascriptCallObserver(this);
+ }
+
+ void VerifyUpdateDevicesMenu(
+ const blink::MediaStreamDevices& expected_devices,
+ const blink::MediaStreamDevice& expected_default_device,
+ const std::string& type) {
+ ASSERT_EQ(1u, test_web_ui_.call_data().size());
+ auto& last_call_data = *(test_web_ui_.call_data().back());
+ EXPECT_EQ("cr.webUIListenerCallback", last_call_data.function_name());
+ EXPECT_EQ("updateDevicesMenu", last_call_data.arg1()->GetString());
+ EXPECT_EQ(type, last_call_data.arg2()->GetString());
+ EXPECT_THAT(last_call_data.arg3()->GetList(),
+ testing::Pointwise(DeviceEq(), expected_devices));
+ EXPECT_EQ(expected_default_device.id, last_call_data.arg4()->GetString());
+ test_web_ui_.ClearTrackedCalls();
+ }
+
+ bool WaitForUpdateDevicesMenuCall() {
+ bool result = on_update_devices_menu_future_.Wait();
+ on_update_devices_menu_future_.Clear();
+ return result;
+ }
+
+ protected:
+ content::TestWebUI test_web_ui_;
+
+ private:
+ void OnJavascriptFunctionCalled(
+ const content::TestWebUI::CallData& call_data) override {
+ const std::string* function_name = call_data.arg1()->GetIfString();
+ if (function_name && *function_name == "updateDevicesMenu") {
+ on_update_devices_menu_future_.GetCallback().Run();
+ }
+ }
+
+ content::BrowserTaskEnvironment task_environment_;
+ TestingProfile profile_;
+
+ MediaDevicesSelectionHandler handler_;
+ base::test::TestFuture<void> on_update_devices_menu_future_;
+};
+
+TEST_F(MediaDevicesSelectionHandlerTest, SetDefaultAudioDevice) {
+ const blink::MediaStreamDevice kIntegratedDevice(
+ /*type=*/blink::mojom::MediaStreamType::DEVICE_AUDIO_CAPTURE,
+ /*id=*/"integrated_device",
+ /*name=*/"Integrated Device");
+ const blink::MediaStreamDevice kUsbDevice(
+ /*type=*/blink::mojom::MediaStreamType::DEVICE_AUDIO_CAPTURE,
+ /*id=*/"usb_device",
+ /*name=*/"USB Device");
+
+ blink::MediaStreamDevices devices{kIntegratedDevice, kUsbDevice};
+
+ auto* devices_dispatcher = MediaCaptureDevicesDispatcher::GetInstance();
+ devices_dispatcher->SetTestAudioCaptureDevices(devices);
+ devices_dispatcher->OnAudioCaptureDevicesChanged();
+
+ ASSERT_TRUE(WaitForUpdateDevicesMenuCall());
+
+ const std::string kMic = "mic";
+ // Verify that the list order is unmodified if pref is unset.
+ VerifyUpdateDevicesMenu(devices, kIntegratedDevice, kMic);
+
+ base::Value::List setDefaultArgs;
+ setDefaultArgs.Append(kMic);
+ setDefaultArgs.Append(kUsbDevice.id);
+ test_web_ui_.ProcessWebUIMessage(GURL(), "setDefaultCaptureDevice",
+ std::move(setDefaultArgs));
+
+ base::Value::List getDefaultArgs;
+ getDefaultArgs.Append(kMic);
+ test_web_ui_.ProcessWebUIMessage(GURL(), "getDefaultCaptureDevices",
+ std::move(getDefaultArgs));
+
+ ASSERT_TRUE(WaitForUpdateDevicesMenuCall());
+ VerifyUpdateDevicesMenu({kUsbDevice, kIntegratedDevice}, kUsbDevice, kMic);
+}
+
+TEST_F(MediaDevicesSelectionHandlerTest, SetDefaultVideoDevice) {
+ const blink::MediaStreamDevice kIntegratedDevice(
+ /*type=*/blink::mojom::MediaStreamType::DEVICE_AUDIO_CAPTURE,
+ /*id=*/"integrated_device",
+ /*name=*/"Integrated Device");
+ const blink::MediaStreamDevice kUsbDevice(
+ /*type=*/blink::mojom::MediaStreamType::DEVICE_AUDIO_CAPTURE,
+ /*id=*/"usb_device",
+ /*name=*/"USB Device");
+
+ blink::MediaStreamDevices devices{kIntegratedDevice, kUsbDevice};
+
+ auto* devices_dispatcher = MediaCaptureDevicesDispatcher::GetInstance();
+ devices_dispatcher->SetTestVideoCaptureDevices(devices);
+ devices_dispatcher->OnVideoCaptureDevicesChanged();
+
+ ASSERT_TRUE(WaitForUpdateDevicesMenuCall());
+
+ const std::string kCamera = "camera";
+ // Verify that the list order is unmodified if pref is unset.
+ VerifyUpdateDevicesMenu(devices, kIntegratedDevice, kCamera);
+
+ base::Value::List setDefaultArgs;
+ setDefaultArgs.Append(kCamera);
+ setDefaultArgs.Append(kUsbDevice.id);
+ test_web_ui_.ProcessWebUIMessage(GURL(), "setDefaultCaptureDevice",
+ std::move(setDefaultArgs));
+
+ base::Value::List getDefaultArgs;
+ getDefaultArgs.Append(kCamera);
+ test_web_ui_.ProcessWebUIMessage(GURL(), "getDefaultCaptureDevices",
+ std::move(getDefaultArgs));
+
+ ASSERT_TRUE(WaitForUpdateDevicesMenuCall());
+ VerifyUpdateDevicesMenu({kUsbDevice, kIntegratedDevice}, kUsbDevice, kCamera);
+}
+
+} // namespace settings
diff --git a/chromium/chrome/browser/ui/webui/settings/settings_secure_dns_handler.cc b/chromium/chrome/browser/ui/webui/settings/settings_secure_dns_handler.cc
index a9481790a10..d4b52c6a3ab 100644
--- a/chromium/chrome/browser/ui/webui/settings/settings_secure_dns_handler.cc
+++ b/chromium/chrome/browser/ui/webui/settings/settings_secure_dns_handler.cc
@@ -5,6 +5,7 @@
#include "chrome/browser/ui/webui/settings/settings_secure_dns_handler.h"
#include <memory>
+#include <optional>
#include <utility>
#include "base/check.h"
@@ -26,7 +27,6 @@
#include "net/dns/public/doh_provider_entry.h"
#include "net/dns/public/secure_dns_mode.h"
#include "net/dns/public/util.h"
-#include "third_party/abseil-cpp/absl/types/optional.h"
#include "ui/base/l10n/l10n_util.h"
namespace secure_dns = chrome_browser_net::secure_dns;
@@ -49,7 +49,7 @@ base::Value::Dict CreateSecureDnsSettingDict() {
dict.Set("mode", SecureDnsConfig::ModeToString(config.mode()));
dict.Set("config", config.doh_servers().ToString());
#if BUILDFLAG(IS_CHROMEOS_ASH)
- absl::optional<std::string> doh_with_identifiers_servers_for_display =
+ std::optional<std::string> doh_with_identifiers_servers_for_display =
SystemNetworkContextManager::GetStubResolverConfigReader()
->GetDohWithIdentifiersDisplayServers();
dict.Set("dohWithIdentifiersActive",
@@ -122,15 +122,7 @@ void SecureDnsHandler::OnJavascriptDisallowed() {
base::Value::List SecureDnsHandler::GetSecureDnsResolverList() {
base::Value::List resolvers;
-
- // Add a custom option to the front of the list
- base::Value::Dict custom;
- custom.Set("name", l10n_util::GetStringUTF8(IDS_SETTINGS_CUSTOM));
- custom.Set("value", std::string()); // Empty value means custom.
- custom.Set("policy", std::string());
- resolvers.Append(std::move(custom));
-
- for (const auto* entry : providers_) {
+ for (const net::DohProviderEntry* entry : providers_) {
net::DnsOverHttpsConfig doh_config({entry->doh_server_config});
base::Value::Dict dict;
dict.Set("name", entry->ui_name);
@@ -139,9 +131,7 @@ base::Value::List SecureDnsHandler::GetSecureDnsResolverList() {
resolvers.Append(std::move(dict));
}
- // Randomize the order of the resolvers, but keep custom in first place.
- base::RandomShuffle(std::next(resolvers.begin()), resolvers.end());
-
+ base::RandomShuffle(resolvers.begin(), resolvers.end());
return resolvers;
}
@@ -209,7 +199,7 @@ void SecureDnsHandler::HandleProbeConfig(const base::Value::List& args) {
probe_callback_id_ = args[0].GetString();
const std::string& doh_config = args[1].GetString();
DCHECK(!runner_);
- absl::optional<net::DnsOverHttpsConfig> parsed =
+ std::optional<net::DnsOverHttpsConfig> parsed =
net::DnsOverHttpsConfig::FromString(doh_config);
DCHECK(parsed.has_value()); // `doh_config` must be valid.
runner_ =
diff --git a/chromium/chrome/browser/ui/webui/settings/settings_secure_dns_handler_browsertest.cc b/chromium/chrome/browser/ui/webui/settings/settings_secure_dns_handler_browsertest.cc
index 27d0ba2a6ff..9038745bc67 100644
--- a/chromium/chrome/browser/ui/webui/settings/settings_secure_dns_handler_browsertest.cc
+++ b/chromium/chrome/browser/ui/webui/settings/settings_secure_dns_handler_browsertest.cc
@@ -186,7 +186,7 @@ class SecureDnsHandlerTest : public InProcessBrowserTest {
*out_doh_config = *doh_config;
// Get the forced management description.
- absl::optional<int> management_mode = dict->FindInt("managementMode");
+ std::optional<int> management_mode = dict->FindInt("managementMode");
if (!management_mode.has_value())
return false;
*out_management_mode = *management_mode;
@@ -213,7 +213,7 @@ class SecureDnsHandlerTest : public InProcessBrowserTest {
const base::Value::Dict* dict = data->arg2()->GetIfDict();
if (!dict)
return false;
- absl::optional<bool> doh_with_identifiers_active =
+ std::optional<bool> doh_with_identifiers_active =
dict->FindBool("dohWithIdentifiersActive");
if (!doh_with_identifiers_active)
return false;
@@ -357,10 +357,9 @@ IN_PROC_BROWSER_TEST_F(SecureDnsHandlerTest, DropdownList) {
EXPECT_EQ(kWebUiFunctionName, call_data.arg1()->GetString());
ASSERT_TRUE(call_data.arg2()->GetBool());
- // Check results.
+ // Check results (no providers set for testing).
const base::Value::List& resolver_list = call_data.arg3()->GetList();
- ASSERT_GE(resolver_list.size(), 1U);
- EXPECT_TRUE(resolver_list[0].GetDict().FindString("value")->empty());
+ ASSERT_GE(resolver_list.size(), 0U);
}
IN_PROC_BROWSER_TEST_F(SecureDnsHandlerTest, DropdownListContents) {
@@ -368,9 +367,8 @@ IN_PROC_BROWSER_TEST_F(SecureDnsHandlerTest, DropdownListContents) {
handler_->SetProvidersForTesting(entries);
const base::Value::List resolver_list = handler_->GetSecureDnsResolverList();
- EXPECT_EQ(entries.size() + 1, resolver_list.size());
- EXPECT_TRUE(resolver_list[0].GetDict().FindString("value")->empty());
- for (const auto* entry : entries) {
+ EXPECT_EQ(entries.size(), resolver_list.size());
+ for (const net::DohProviderEntry* entry : entries) {
EXPECT_TRUE(FindDropdownItem(resolver_list, entry->ui_name,
entry->doh_server_config.server_template(),
entry->privacy_policy));
diff --git a/chromium/chrome/browser/ui/webui/settings/settings_security_key_handler.cc b/chromium/chrome/browser/ui/webui/settings/settings_security_key_handler.cc
index 815c4f16666..a621cdbfd79 100644
--- a/chromium/chrome/browser/ui/webui/settings/settings_security_key_handler.cc
+++ b/chromium/chrome/browser/ui/webui/settings/settings_security_key_handler.cc
@@ -4,12 +4,14 @@
#include "chrome/browser/ui/webui/settings/settings_security_key_handler.h"
+#include <optional>
#include <string>
#include <utility>
#include <vector>
#include "base/base64.h"
#include "base/containers/contains.h"
+#include "base/containers/cxx20_erase_vector.h"
#include "base/functional/bind.h"
#include "base/functional/callback.h"
#include "base/ranges/algorithm.h"
@@ -35,7 +37,6 @@
#include "device/fido/public_key_credential_user_entity.h"
#include "device/fido/reset_request_handler.h"
#include "device/fido/set_pin_request_handler.h"
-#include "third_party/abseil-cpp/absl/types/optional.h"
#include "third_party/icu/source/common/unicode/locid.h"
#include "ui/base/l10n/l10n_util.h"
@@ -146,7 +147,7 @@ void SecurityKeysPINHandler::HandleStartSetPIN(const base::Value::List& args) {
void SecurityKeysPINHandler::OnGatherPIN(uint32_t current_min_pin_length,
uint32_t new_min_pin_length,
- absl::optional<int64_t> num_retries) {
+ std::optional<int64_t> num_retries) {
DCHECK_EQ(State::kStartSetPIN, state_);
DCHECK_CURRENTLY_ON(BrowserThread::UI);
@@ -491,9 +492,9 @@ void SecurityKeysCredentialHandler::OnCredentialManagementReady() {
void SecurityKeysCredentialHandler::OnHaveCredentials(
device::CtapDeviceResponseCode status,
- absl::optional<std::vector<device::AggregatedEnumerateCredentialsResponse>>
+ std::optional<std::vector<device::AggregatedEnumerateCredentialsResponse>>
responses,
- absl::optional<size_t> remaining_credentials) {
+ std::optional<size_t> remaining_credentials) {
DCHECK_EQ(State::kGettingCredentials, state_);
DCHECK_CURRENTLY_ON(BrowserThread::UI);
DCHECK(credential_management_);
@@ -839,7 +840,7 @@ void SecurityKeysBioEnrollmentHandler::HandleEnumerate(
void SecurityKeysBioEnrollmentHandler::OnHaveEnumeration(
device::CtapDeviceResponseCode code,
- absl::optional<std::map<std::vector<uint8_t>, std::string>> enrollments) {
+ std::optional<std::map<std::vector<uint8_t>, std::string>> enrollments) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
DCHECK(!callback_id_.empty());
DCHECK_EQ(state_, State::kEnumerating);
@@ -906,7 +907,7 @@ void SecurityKeysBioEnrollmentHandler::OnEnrollmentFinished(
void SecurityKeysBioEnrollmentHandler::OnHavePostEnrollmentEnumeration(
std::vector<uint8_t> enrolled_template_id,
device::CtapDeviceResponseCode code,
- absl::optional<std::map<std::vector<uint8_t>, std::string>> enrollments) {
+ std::optional<std::map<std::vector<uint8_t>, std::string>> enrollments) {
DCHECK_EQ(state_, State::kEnrolling);
DCHECK(!callback_id_.empty());
state_ = State::kReady;
@@ -1060,13 +1061,11 @@ void SecurityKeysPhonesHandler::HandleRename(const base::Value::List& args) {
Profile::FromBrowserContext(browser_ctx));
// Remove the device that is getting renamed from the set of linked devices.
- auto new_end = std::remove_if(
- known_devices->linked_devices.begin(),
- known_devices->linked_devices.end(),
- [&public_key](const std::unique_ptr<device::cablev2::Pairing>& device)
- -> bool { return device->peer_public_key_x962 == public_key; });
- known_devices->linked_devices.erase(new_end,
- known_devices->linked_devices.end());
+ base::EraseIf(
+ known_devices->linked_devices,
+ [&public_key](const std::unique_ptr<device::cablev2::Pairing>& device) {
+ return device->peer_public_key_x962 == public_key;
+ });
PrefService* const prefs =
Profile::FromBrowserContext(browser_ctx)->GetPrefs();
@@ -1084,7 +1083,7 @@ void SecurityKeysPhonesHandler::DoEnumerate(const base::Value& callback_id) {
base::Value::List synced;
base::Value::List linked;
- absl::optional<std::string> last_synced_device_name;
+ std::optional<std::string> last_synced_device_name;
for (const auto& pairing : pairings) {
base::Value::Dict dict;
dict.Set("name", pairing->name);
@@ -1208,7 +1207,7 @@ void PasskeysHandler::DoEnumerate(std::string callback_id) {
void PasskeysHandler::OnEnumerateComplete(
std::string callback_id,
- absl::optional<std::vector<device::DiscoverableCredentialMetadata>>
+ std::optional<std::vector<device::DiscoverableCredentialMetadata>>
credentials) {
base::Value result;
diff --git a/chromium/chrome/browser/ui/webui/settings/settings_security_key_handler.h b/chromium/chrome/browser/ui/webui/settings/settings_security_key_handler.h
index 2d7707d2149..401d66970b7 100644
--- a/chromium/chrome/browser/ui/webui/settings/settings_security_key_handler.h
+++ b/chromium/chrome/browser/ui/webui/settings/settings_security_key_handler.h
@@ -6,6 +6,7 @@
#define CHROME_BROWSER_UI_WEBUI_SETTINGS_SETTINGS_SECURITY_KEY_HANDLER_H_
#include <memory>
+#include <optional>
#include <string>
#include "base/memory/weak_ptr.h"
@@ -17,7 +18,6 @@
#include "device/fido/credential_management_handler.h"
#include "device/fido/fido_constants.h"
#include "device/fido/fido_discovery_factory.h"
-#include "third_party/abseil-cpp/absl/types/optional.h"
namespace device {
struct AggregatedEnumerateCredentialsResponse;
@@ -82,7 +82,7 @@ class SecurityKeysPINHandler : public SecurityKeysHandlerBase {
void HandleStartSetPIN(const base::Value::List& args);
void OnGatherPIN(uint32_t current_min_pin_length,
uint32_t new_min_pin_length,
- absl::optional<int64_t> num_retries);
+ std::optional<int64_t> num_retries);
void OnSetPINComplete(device::CtapDeviceResponseCode code);
void HandleSetPIN(const base::Value::List& args);
@@ -123,7 +123,7 @@ class SecurityKeysResetHandler : public SecurityKeysHandlerBase {
State state_ = State::kNone;
std::unique_ptr<device::ResetRequestHandler> reset_;
- absl::optional<device::CtapDeviceResponseCode> reset_result_;
+ std::optional<device::CtapDeviceResponseCode> reset_result_;
std::string callback_id_;
base::WeakPtrFactory<SecurityKeysResetHandler> weak_factory_{this};
@@ -165,10 +165,9 @@ class SecurityKeysCredentialHandler : public SecurityKeysHandlerBase {
void OnCredentialManagementReady();
void OnHaveCredentials(
device::CtapDeviceResponseCode status,
- absl::optional<
- std::vector<device::AggregatedEnumerateCredentialsResponse>>
+ std::optional<std::vector<device::AggregatedEnumerateCredentialsResponse>>
responses,
- absl::optional<size_t> remaining_credentials);
+ std::optional<size_t> remaining_credentials);
void OnGatherPIN(device::CredentialManagementHandler::AuthenticatorProperties
authenticator_properties,
base::OnceCallback<void(std::string)>);
@@ -226,7 +225,7 @@ class SecurityKeysBioEnrollmentHandler : public SecurityKeysHandlerBase {
void HandleEnumerate(const base::Value::List& args);
void OnHaveEnumeration(
device::CtapDeviceResponseCode,
- absl::optional<std::map<std::vector<uint8_t>, std::string>>);
+ std::optional<std::map<std::vector<uint8_t>, std::string>>);
void OnEnrollingResponse(device::BioEnrollmentSampleStatus, uint8_t);
void OnEnrollmentFinished(device::CtapDeviceResponseCode,
@@ -234,7 +233,7 @@ class SecurityKeysBioEnrollmentHandler : public SecurityKeysHandlerBase {
void OnHavePostEnrollmentEnumeration(
std::vector<uint8_t> enrolled_template_id,
device::CtapDeviceResponseCode code,
- absl::optional<std::map<std::vector<uint8_t>, std::string>> enrollments);
+ std::optional<std::map<std::vector<uint8_t>, std::string>> enrollments);
void HandleDelete(const base::Value::List& args);
void OnDelete(device::CtapDeviceResponseCode);
@@ -299,7 +298,7 @@ class PasskeysHandler : public SettingsPageUIHandler {
void DoEnumerate(std::string callback_id);
void OnEnumerateComplete(
std::string callback_id,
- absl::optional<std::vector<device::DiscoverableCredentialMetadata>>
+ std::optional<std::vector<device::DiscoverableCredentialMetadata>>
credentials);
std::unique_ptr<LocalCredentialManagement> local_cred_man_{nullptr};
diff --git a/chromium/chrome/browser/ui/webui/settings/settings_security_key_handler_unittest.cc b/chromium/chrome/browser/ui/webui/settings/settings_security_key_handler_unittest.cc
index 9bd166c708e..06d78dc5ac0 100644
--- a/chromium/chrome/browser/ui/webui/settings/settings_security_key_handler_unittest.cc
+++ b/chromium/chrome/browser/ui/webui/settings/settings_security_key_handler_unittest.cc
@@ -339,7 +339,7 @@ class MockLocalCredentialManagement : public LocalCredentialManagement {
void,
Enumerate,
(base::OnceCallback<void(
- absl::optional<std::vector<device::DiscoverableCredentialMetadata>>)>
+ std::optional<std::vector<device::DiscoverableCredentialMetadata>>)>
callback));
MOCK_METHOD(void,
Delete,
@@ -423,7 +423,7 @@ TEST_F(PasskeysHandlerTest, TestHandleEdit) {
});
EXPECT_CALL(*weak_local_cred_man_, Enumerate)
.WillOnce([](base::OnceCallback<
- void(absl::optional<
+ void(std::optional<
std::vector<device::DiscoverableCredentialMetadata>>)>
callback) {
std::vector<device::DiscoverableCredentialMetadata> credential_metadata{
@@ -462,7 +462,7 @@ TEST_F(PasskeysHandlerTest, TestRecordPasskeyDelete) {
EXPECT_CALL(*weak_local_cred_man_, Enumerate)
.WillOnce(
[](base::OnceCallback<void(
- absl::optional<std::vector<
+ std::optional<std::vector<
device::DiscoverableCredentialMetadata>>)> callback) {
std::move(callback).Run(/*credential_metadata=*/{});
base::RunLoop().RunUntilIdle();
diff --git a/chromium/chrome/browser/ui/webui/settings/settings_ui.cc b/chromium/chrome/browser/ui/webui/settings/settings_ui.cc
index 3bf10e1933d..f0a747d230c 100644
--- a/chromium/chrome/browser/ui/webui/settings/settings_ui.cc
+++ b/chromium/chrome/browser/ui/webui/settings/settings_ui.cc
@@ -19,6 +19,8 @@
#include "chrome/browser/commerce/shopping_service_factory.h"
#include "chrome/browser/companion/core/features.h"
#include "chrome/browser/download/bubble/download_bubble_prefs.h"
+#include "chrome/browser/optimization_guide/optimization_guide_keyed_service.h"
+#include "chrome/browser/optimization_guide/optimization_guide_keyed_service_factory.h"
#include "chrome/browser/performance_manager/public/user_tuning/user_performance_tuning_manager.h"
#include "chrome/browser/performance_manager/public/user_tuning/user_tuning_utils.h"
#include "chrome/browser/preloading/preloading_features.h"
@@ -27,6 +29,7 @@
#include "chrome/browser/privacy_sandbox/tracking_protection_onboarding_factory.h"
#include "chrome/browser/privacy_sandbox/tracking_protection_settings_factory.h"
#include "chrome/browser/profiles/profile.h"
+#include "chrome/browser/search_engine_choice/search_engine_choice_service_factory.h"
#include "chrome/browser/signin/identity_manager_factory.h"
#include "chrome/browser/signin/signin_features.h"
#include "chrome/browser/ui/browser_element_identifiers.h"
@@ -84,7 +87,6 @@
#include "components/commerce/core/commerce_feature_list.h"
#include "components/commerce/core/shopping_service.h"
#include "components/compose/buildflags.h"
-#include "components/compose/core/browser/compose_features.h"
#include "components/content_settings/core/common/features.h"
#include "components/favicon_base/favicon_url_parser.h"
#include "components/password_manager/core/common/password_manager_features.h"
@@ -96,9 +98,9 @@
#include "components/privacy_sandbox/tracking_protection_settings.h"
#include "components/safe_browsing/core/browser/hashprefix_realtime/hash_realtime_utils.h"
#include "components/safe_browsing/core/common/features.h"
+#include "components/search_engines/search_engine_choice/search_engine_choice_service.h"
#include "components/search_engines/search_engine_choice_utils.h"
#include "components/signin/public/base/signin_pref_names.h"
-#include "components/signin/public/base/signin_switches.h"
#include "components/sync/base/features.h"
#include "content/public/browser/url_data_source.h"
#include "content/public/browser/web_contents.h"
@@ -185,6 +187,10 @@
#include "chrome/browser/ui/webui/settings/mac_system_settings_handler.h"
#endif
+#if BUILDFLAG(ENABLE_COMPOSE)
+#include "chrome/browser/compose/compose_enabling.h"
+#endif
+
namespace settings {
// static
@@ -317,14 +323,18 @@ SettingsUI::SettingsUI(content::WebUI* web_ui)
}
const bool is_search_engine_choice_settings_ui =
- base::FeatureList::IsEnabled(switches::kSearchEngineChoiceSettingsUi) &&
search_engines::IsChoiceScreenFlagEnabled(
search_engines::ChoicePromo::kAny);
html_source->AddBoolean("searchEngineChoiceSettingsUi",
is_search_engine_choice_settings_ui);
- if (is_search_engine_choice_settings_ui) {
- AddGeneratedIconResources(html_source, /*directory=*/"images/");
- }
+
+ search_engines::SearchEngineChoiceService*
+ search_engine_choice_dialog_service =
+ search_engines::SearchEngineChoiceServiceFactory::GetForProfile(
+ profile);
+ const bool is_eea_country = search_engines::IsEeaChoiceCountry(
+ search_engine_choice_dialog_service->GetCountryId());
+ html_source->AddBoolean("useLargeSearchEngineIcons", is_eea_country);
#if BUILDFLAG(IS_CHROMEOS_ASH)
html_source->AddBoolean(
@@ -379,20 +389,18 @@ SettingsUI::SettingsUI(content::WebUI* web_ui)
IsHashRealTimeLookupEligibleInSession());
html_source->AddBoolean(
+ "enableHttpsFirstModeNewSettings",
+ base::FeatureList::IsEnabled(features::kHttpsFirstModeIncognito));
+
+ html_source->AddBoolean(
"enablePageContentSetting",
base::FeatureList::IsEnabled(features::kPageContentOptIn) ||
base::FeatureList::IsEnabled(
companion::features::kCompanionEnablePageContent));
-#if BUILDFLAG(ENABLE_COMPOSE)
- html_source->AddBoolean(
- "enableComposeSetting",
- base::FeatureList::IsEnabled(compose::features::kEnableCompose));
-#endif
-
html_source->AddBoolean(
"downloadBubblePartialViewControlledByPref",
- download::IsDownloadBubbleEnabled(profile) &&
+ download::IsDownloadBubbleEnabled() &&
download::IsDownloadBubblePartialViewControlledByPref());
#if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN)
@@ -477,20 +485,12 @@ SettingsUI::SettingsUI(content::WebUI* web_ui)
PrivacySandboxServiceFactory::GetForProfile(profile);
bool is_privacy_sandbox_restricted =
privacy_sandbox_service->IsPrivacySandboxRestricted();
- bool is_privacy_sandbox_settings_4 =
- base::FeatureList::IsEnabled(privacy_sandbox::kPrivacySandboxSettings4);
bool is_restricted_notice_enabled =
privacy_sandbox_service->IsRestrictedNoticeEnabled();
html_source->AddBoolean("isPrivacySandboxRestricted",
is_privacy_sandbox_restricted);
- html_source->AddBoolean("isPrivacySandboxSettings4",
- is_privacy_sandbox_settings_4);
html_source->AddBoolean("isPrivacySandboxRestrictedNoticeEnabled",
is_restricted_notice_enabled);
- if (!is_privacy_sandbox_restricted && !is_privacy_sandbox_settings_4) {
- html_source->AddResourcePath(
- "privacySandbox", IDR_SETTINGS_PRIVACY_SANDBOX_PRIVACY_SANDBOX_HTML);
- }
html_source->AddBoolean(
"privateStateTokensEnabled",
@@ -505,9 +505,11 @@ SettingsUI::SettingsUI(content::WebUI* web_ui)
base::FeatureList::IsEnabled(
content_settings::features::kSafetyCheckUnusedSitePermissions));
+#if BUILDFLAG(ENABLE_EXTENSIONS)
html_source->AddBoolean(
"safetyCheckExtensionsReviewEnabled",
base::FeatureList::IsEnabled(features::kSafetyCheckExtensions));
+#endif
html_source->AddBoolean("enableSafetyHub",
base::FeatureList::IsEnabled(features::kSafetyHub));
@@ -523,20 +525,21 @@ SettingsUI::SettingsUI(content::WebUI* web_ui)
onboarding_service && onboarding_service->IsOffboarded() &&
base::FeatureList::IsEnabled(
privacy_sandbox::kTrackingProtectionSettingsPageRollbackNotice));
+ html_source->AddBoolean(
+ "isProactiveTopicsBlockingEnabled",
+ base::FeatureList::IsEnabled(
+ privacy_sandbox::kPrivacySandboxProactiveTopicsBlocking));
// Performance
AddSettingsPageUIHandler(std::make_unique<PerformanceHandler>());
html_source->AddBoolean(
- "isHighEfficiencyMultistateModeEnabled",
+ "isMemorySaverMultistateModeEnabled",
base::FeatureList::IsEnabled(
- performance_manager::features::kHighEfficiencyMultistateMode));
+ performance_manager::features::kMemorySaverMultistateMode));
html_source->AddBoolean(
"isDiscardExceptionsImprovementsEnabled",
base::FeatureList::IsEnabled(
performance_manager::features::kDiscardExceptionsImprovements));
- html_source->AddBoolean("isPerformanceSettingsPreloadingSubpageEnabled",
- base::FeatureList::IsEnabled(
- features::kPerformanceSettingsPreloadingSubpage));
html_source->AddBoolean(
"isPerformanceSettingsPreloadingSubpageV2Enabled",
features::kPerformanceSettingsPreloadingSubpageV2.Get());
@@ -554,6 +557,41 @@ SettingsUI::SettingsUI(content::WebUI* web_ui)
base::FeatureList::IsEnabled(
blink::features::kMediaSessionEnterPictureInPicture));
+ // AI
+ optimization_guide::proto::ModelExecutionFeature
+ optimization_guide_features[3] = {
+ optimization_guide::proto::ModelExecutionFeature::
+ MODEL_EXECUTION_FEATURE_COMPOSE,
+ optimization_guide::proto::ModelExecutionFeature::
+ MODEL_EXECUTION_FEATURE_TAB_ORGANIZATION,
+ optimization_guide::proto::ModelExecutionFeature::
+ MODEL_EXECUTION_FEATURE_WALLPAPER_SEARCH,
+ };
+
+ auto* optimization_guide_service =
+ OptimizationGuideKeyedServiceFactory::GetForProfile(profile);
+ bool optimization_guide_feature_visible[4] = {false, false, false, false};
+
+ for (size_t i = 0; i < 3; i++) {
+ const bool visible = optimization_guide_service &&
+ optimization_guide_service->IsSettingVisible(
+ optimization_guide_features[i]);
+ optimization_guide_feature_visible[i + 1] = visible;
+
+ // The main toggle is visible only if at least one of the sub toggles is
+ // visible.
+ optimization_guide_feature_visible[0] |= visible;
+ }
+
+ html_source->AddBoolean("showAdvancedFeaturesMainControl",
+ optimization_guide_feature_visible[0]);
+ html_source->AddBoolean("showComposeControl",
+ optimization_guide_feature_visible[1]);
+ html_source->AddBoolean("showTabOrganizationControl",
+ optimization_guide_feature_visible[2]);
+ html_source->AddBoolean("showWallpaperSearchControl",
+ optimization_guide_feature_visible[3]);
+
TryShowHatsSurveyWithTimeout();
}
@@ -679,7 +717,10 @@ void SettingsUI::CreateHelpBubbleHandler(
mojo::PendingReceiver<help_bubble::mojom::HelpBubbleHandler> handler) {
help_bubble_handler_ = std::make_unique<user_education::HelpBubbleHandler>(
std::move(handler), std::move(client), this,
- std::vector<ui::ElementIdentifier>{kEnhancedProtectionSettingElementId});
+ std::vector<ui::ElementIdentifier>{
+ kEnhancedProtectionSettingElementId,
+ kAnonymizedUrlCollectionPersonalizationSettingId,
+ });
}
void SettingsUI::CreateCustomizeColorSchemeModeHandler(
diff --git a/chromium/chrome/browser/ui/webui/settings/settings_ui_browsertest.cc b/chromium/chrome/browser/ui/webui/settings/settings_ui_browsertest.cc
index 37a52507f12..24b7710a9e7 100644
--- a/chromium/chrome/browser/ui/webui/settings/settings_ui_browsertest.cc
+++ b/chromium/chrome/browser/ui/webui/settings/settings_ui_browsertest.cc
@@ -56,7 +56,7 @@ IN_PROC_BROWSER_TEST_F(SettingsUITest, TriggerHappinessTrackingSurveys) {
browser()->profile(), base::BindRepeating(&BuildMockHatsService)));
EXPECT_CALL(*mock_hats_service_,
LaunchDelayedSurveyForWebContents(kHatsSurveyTriggerSettings, _,
- _, _, _, _));
+ _, _, _, _, _, _, _, _));
ASSERT_TRUE(NavigateToURL(browser(), GURL(chrome::kChromeUISettingsURL)));
base::RunLoop().RunUntilIdle();
}
diff --git a/chromium/chrome/browser/ui/webui/settings/settings_utils.cc b/chromium/chrome/browser/ui/webui/settings/settings_utils.cc
index 21b970227f6..5b1e436866a 100644
--- a/chromium/chrome/browser/ui/webui/settings/settings_utils.cc
+++ b/chromium/chrome/browser/ui/webui/settings/settings_utils.cc
@@ -28,10 +28,4 @@ base::RefCountedMemory* GetFaviconResourceBytes(
IDR_SETTINGS_FAVICON, scale_factor);
}
-base::RefCountedMemory* GetPrivacySandboxFaviconResourceBytes(
- ui::ResourceScaleFactor scale_factor) {
- return ui::ResourceBundle::GetSharedInstance().LoadDataResourceBytesForScale(
- IDR_FLAGS_FAVICON, scale_factor);
-}
-
} // namespace settings_utils
diff --git a/chromium/chrome/browser/ui/webui/settings/settings_utils.h b/chromium/chrome/browser/ui/webui/settings/settings_utils.h
index a4cbb90206a..b89bd9c52bd 100644
--- a/chromium/chrome/browser/ui/webui/settings/settings_utils.h
+++ b/chromium/chrome/browser/ui/webui/settings/settings_utils.h
@@ -38,9 +38,6 @@ bool FixupAndValidateStartupPage(const std::string& url_string,
base::RefCountedMemory* GetFaviconResourceBytes(
ui::ResourceScaleFactor scale_factor);
-base::RefCountedMemory* GetPrivacySandboxFaviconResourceBytes(
- ui::ResourceScaleFactor scale_factor);
-
#if BUILDFLAG(IS_MAC)
void ValidateSavedFonts(PrefService* prefs);
#endif
diff --git a/chromium/chrome/browser/ui/webui/settings/shared_settings_localized_strings_provider.cc b/chromium/chrome/browser/ui/webui/settings/shared_settings_localized_strings_provider.cc
index ce91f4fbbd8..c3072e9b457 100644
--- a/chromium/chrome/browser/ui/webui/settings/shared_settings_localized_strings_provider.cc
+++ b/chromium/chrome/browser/ui/webui/settings/shared_settings_localized_strings_provider.cc
@@ -31,14 +31,11 @@
#include "content/public/browser/web_ui_data_source.h"
#include "content/public/common/content_features.h"
#include "media/base/media_switches.h"
-#include "services/network/public/mojom/content_security_policy.mojom.h"
#include "ui/base/l10n/l10n_util.h"
#include "ui/base/webui/web_ui_util.h"
#if BUILDFLAG(IS_CHROMEOS_ASH)
#include "ash/constants/ash_features.h"
-#include "chrome/browser/ash/crosapi/browser_util.h"
-#include "chrome/browser/nearby_sharing/common/nearby_share_features.h"
#endif // BUILDFLAG(IS_CHROMEOS_ASH)
#if BUILDFLAG(IS_CHROMEOS)
@@ -258,86 +255,6 @@ void AddSharedSyncPageStrings(content::WebUIDataSource* html_source) {
html_source->AddString("syncErrorsHelpUrl", chrome::kSyncErrorsHelpURL);
}
-#if BUILDFLAG(IS_CHROMEOS_ASH)
-void AddNearbyShareData(content::WebUIDataSource* html_source) {
- static constexpr webui::LocalizedString kLocalizedStrings[] = {
- {"nearbyShareTitle", IDS_SETTINGS_NEARBY_SHARE_TITLE},
- {"nearbyShareSetUpButtonTitle",
- IDS_SETTINGS_NEARBY_SHARE_SET_UP_BUTTON_TITLE},
- {"nearbyShareDeviceNameRowTitle",
- IDS_SETTINGS_NEARBY_SHARE_DEVICE_NAME_ROW_TITLE},
- {"nearbyShareDeviceNameDialogTitle",
- IDS_SETTINGS_NEARBY_SHARE_DEVICE_NAME_DIALOG_TITLE},
- {"nearbyShareDeviceNameFieldLabel",
- IDS_SETTINGS_NEARBY_SHARE_DEVICE_NAME_FIELD_LABEL},
- {"nearbyShareEditDeviceName", IDS_SETTINGS_NEARBY_SHARE_EDIT_DEVICE_NAME},
- {"fastInitiationNotificationToggleTitle",
- IDS_SETTINGS_NEARBY_SHARE_FAST_INITIATION_NOTIFICATION_TOGGLE_TITLE},
- {"fastInitiationNotificationToggleDescription",
- IDS_SETTINGS_NEARBY_SHARE_FAST_INITIATION_NOTIFICATION_TOGGLE_DESCRIPTION},
- {"fastInitiationNotificationToggleAriaLabel",
- IDS_SETTINGS_NEARBY_SHARE_FAST_INITIATION_NOTIFICATION_TOGGLE_ARIA_LABEL},
- {"nearbyShareDeviceNameAriaDescription",
- IDS_SETTINGS_NEARBY_SHARE_DEVICE_NAME_ARIA_DESCRIPTION},
- {"nearbyShareConfirmDeviceName",
- IDS_SETTINGS_NEARBY_SHARE_CONFIRM_DEVICE_NAME},
- {"nearbyShareManageContactsLabel",
- IDS_SETTINGS_NEARBY_SHARE_MANAGE_CONTACTS_LABEL},
- {"nearbyShareManageContactsRowTitle",
- IDS_SETTINGS_NEARBY_SHARE_MANAGE_CONTACTS_ROW_TITLE},
- {"nearbyShareEditDataUsage", IDS_SETTINGS_NEARBY_SHARE_EDIT_DATA_USAGE},
- {"nearbyShareUpdateDataUsage",
- IDS_SETTINGS_NEARBY_SHARE_UPDATE_DATA_USAGE},
- {"nearbyShareDataUsageDialogTitle",
- IDS_SETTINGS_NEARBY_SHARE_DATA_USAGE_DIALOG_TITLE},
- {"nearbyShareDataUsageWifiOnlyLabel",
- IDS_SETTINGS_NEARBY_SHARE_DATA_USAGE_WIFI_ONLY_LABEL},
- {"nearbyShareDataUsageWifiOnlyDescription",
- IDS_SETTINGS_NEARBY_SHARE_DATA_USAGE_WIFI_ONLY_DESCRIPTION},
- {"nearbyShareDataUsageDataLabel",
- IDS_SETTINGS_NEARBY_SHARE_DATA_USAGE_MOBILE_DATA_LABEL},
- {"nearbyShareDataUsageDataDescription",
- IDS_SETTINGS_NEARBY_SHARE_DATA_USAGE_MOBILE_DATA_DESCRIPTION},
- {"nearbyShareDataUsageDataTooltip",
- IDS_SETTINGS_NEARBY_SHARE_DATA_USAGE_MOBILE_DATA_TOOLTIP},
- {"nearbyShareDataUsageOfflineLabel",
- IDS_SETTINGS_NEARBY_SHARE_DATA_USAGE_OFFLINE_LABEL},
- {"nearbyShareDataUsageOfflineDescription",
- IDS_SETTINGS_NEARBY_SHARE_DATA_USAGE_OFFLINE_DESCRIPTION},
- {"nearbyShareDataUsageDataEditButtonDescription",
- IDS_SETTINGS_NEARBY_SHARE_DATA_USAGE_EDIT_BUTTON_DATA_DESCRIPTION},
- {"nearbyShareDataUsageWifiOnlyEditButtonDescription",
- IDS_SETTINGS_NEARBY_SHARE_DATA_USAGE_EDIT_BUTTON_WIFI_ONLY_DESCRIPTION},
- {"nearbyShareDataUsageOfflineEditButtonDescription",
- IDS_SETTINGS_NEARBY_SHARE_DATA_USAGE_EDIT_BUTTON_OFFLINE_DESCRIPTION},
- {"nearbyShareContactVisibilityRowTitle",
- IDS_SETTINGS_NEARBY_SHARE_CONTACT_VISIBILITY_ROW_TITLE},
- {"nearbyShareEditVisibility", IDS_SETTINGS_NEARBY_SHARE_EDIT_VISIBILITY},
- {"nearbyShareVisibilityDialogTitle",
- IDS_SETTINGS_NEARBY_SHARE_VISIBILITY_DIALOG_TITLE},
- {"nearbyShareDescription", IDS_SETTINGS_NEARBY_SHARE_DESCRIPTION},
- {"nearbyShareHighVisibilityTitle",
- IDS_SETTINGS_NEARBY_SHARE_HIGH_VISIBILITY_TITLE},
- {"nearbyShareHighVisibilityOn",
- IDS_SETTINGS_NEARBY_SHARE_HIGH_VISIBILITY_ON},
- {"nearbyShareHighVisibilityOff",
- IDS_SETTINGS_NEARBY_SHARE_HIGH_VISIBILITY_OFF},
- {"nearbyShareVisibilityDialogSave",
- IDS_SETTINGS_NEARBY_SHARE_VISIBILITY_DIALOG_SAVE}};
-
- html_source->AddLocalizedStrings(kLocalizedStrings);
-
- // To use lottie, the worker-src CSP needs to be updated for the web ui that
- // is using it. Since as of now there are only a couple of webuis using
- // lottie animations, this update has to be performed manually. As the usage
- // increases, set this as the default so manual override is no longer
- // required.
- html_source->OverrideContentSecurityPolicy(
- network::mojom::CSPDirectiveName::WorkerSrc,
- "worker-src blob: chrome://resources 'self';");
-}
-#endif // BUILDFLAG(IS_CHROMEOS_ASH)
-
void AddSecureDnsStrings(content::WebUIDataSource* html_source) {
#if BUILDFLAG(IS_CHROMEOS_ASH)
const bool kIsRevampEnabled =
@@ -368,10 +285,8 @@ void AddSecureDnsStrings(content::WebUIDataSource* html_source) {
IDS_SETTINGS_SECURE_DNS_DISABLED_FOR_PARENTAL_CONTROL},
{"secureDnsAutomaticModeDescription",
IDS_SETTINGS_AUTOMATIC_MODE_DESCRIPTION},
- {"secureDnsAutomaticModeDescriptionSecondary",
- IDS_SETTINGS_AUTOMATIC_MODE_DESCRIPTION_SECONDARY},
- {"secureDnsSecureModeA11yLabel",
- IDS_SETTINGS_SECURE_MODE_DESCRIPTION_ACCESSIBILITY_LABEL},
+ {"secureDnsCustomProviderDescription",
+ IDS_SETTINGS_SECURE_DNS_CUSTOM_DESCRIPTION},
{"secureDnsDropdownA11yLabel",
IDS_SETTINGS_SECURE_DNS_DROPDOWN_ACCESSIBILITY_LABEL},
{"secureDnsSecureDropdownModeDescription",
diff --git a/chromium/chrome/browser/ui/webui/settings/shared_settings_localized_strings_provider.h b/chromium/chrome/browser/ui/webui/settings/shared_settings_localized_strings_provider.h
index 302a8e22c3e..3d1f528cf87 100644
--- a/chromium/chrome/browser/ui/webui/settings/shared_settings_localized_strings_provider.h
+++ b/chromium/chrome/browser/ui/webui/settings/shared_settings_localized_strings_provider.h
@@ -29,11 +29,6 @@ void AddPasswordPromptDialogStrings(content::WebUIDataSource* html_source);
// elements.
void AddSharedSyncPageStrings(content::WebUIDataSource* html_source);
-#if BUILDFLAG(IS_CHROMEOS_ASH)
-// Adds load time data used by the <settings-nearby-share-subpage>.
-void AddNearbyShareData(content::WebUIDataSource* html_source);
-#endif // BUILDFLAG(IS_CHROMEOS_ASH)
-
// Adds strings used by the <settings-secure-dns> element.
void AddSecureDnsStrings(content::WebUIDataSource* html_source);
} // namespace settings
diff --git a/chromium/chrome/browser/ui/webui/settings/site_settings_handler.cc b/chromium/chrome/browser/ui/webui/settings/site_settings_handler.cc
index 10bdd4b7852..5ad75538d4f 100644
--- a/chromium/chrome/browser/ui/webui/settings/site_settings_handler.cc
+++ b/chromium/chrome/browser/ui/webui/settings/site_settings_handler.cc
@@ -65,6 +65,7 @@
#include "chrome/common/url_constants.h"
#include "chrome/grit/generated_resources.h"
#include "components/browsing_data/content/browsing_data_model.h"
+#include "components/browsing_data/core/features.h"
#include "components/browsing_topics/browsing_topics_service.h"
#include "components/content_settings/core/browser/cookie_settings.h"
#include "components/content_settings/core/browser/website_settings_registry.h"
@@ -99,6 +100,7 @@
#include "extensions/common/permissions/permissions_data.h"
#include "services/network/public/cpp/is_potentially_trustworthy.h"
#include "storage/common/file_system/file_system_util.h"
+#include "third_party/abseil-cpp/absl/types/variant.h"
#include "third_party/blink/public/common/page/page_zoom.h"
#include "ui/base/l10n/l10n_util.h"
#include "ui/base/text/bytes_formatting.h"
@@ -269,7 +271,7 @@ void InsertOriginIntoGroup(
SiteSettingsHandler::AllSitesMap* site_group_map,
const url::Origin& origin,
bool is_origin_with_cookies = false,
- absl::optional<GroupingKey> partition_grouping_key = absl::nullopt) {
+ std::optional<GroupingKey> partition_grouping_key = std::nullopt) {
const url::Origin& placeholder_origin = GetPlaceholderOrigin();
bool is_partitioned = partition_grouping_key.has_value();
GroupingKey grouping_key = partition_grouping_key.has_value()
@@ -306,7 +308,9 @@ void InsertOriginIntoGroup(
}
}
group->second.insert({origin, is_partitioned});
- auto placeholder = group->second.find({placeholder_origin, is_partitioned});
+ // Find the placeholder with unpartitioned state as it's no longer needed.
+ auto placeholder =
+ group->second.find({placeholder_origin, /*is_partitioned=*/false});
if (placeholder != group->second.end()) {
group->second.erase(placeholder);
}
@@ -379,7 +383,7 @@ void UpdateDataFromModel(
std::map<url::Origin, int64_t>* origin_size_map,
const url::Origin& origin,
int64_t size,
- absl::optional<GroupingKey> partition_grouping_key = absl::nullopt) {
+ std::optional<GroupingKey> partition_grouping_key = std::nullopt) {
UpdateDataForOrigin(origin, size, origin_size_map);
InsertOriginIntoGroup(all_sites_map, origin,
/*is_origin_with_cookies=*/false,
@@ -390,52 +394,6 @@ void LogAllSitesAction(AllSitesAction2 action) {
UMA_HISTOGRAM_ENUMERATION("WebsiteSettings.AllSitesAction2", action);
}
-int GetNumCookieExceptionsOfTypes(HostContentSettingsMap* map,
- const std::set<ContentSetting> types) {
- ContentSettingsForOneType output =
- map->GetSettingsForOneType(ContentSettingsType::COOKIES);
- return base::ranges::count_if(
- output, [types](const ContentSettingPatternSource setting) {
- return types.count(
- content_settings::ValueToContentSetting(setting.setting_value));
- });
-}
-
-std::string GetCookieSettingDescription(Profile* profile) {
- HostContentSettingsMap* map =
- HostContentSettingsMapFactory::GetForProfile(profile);
- auto content_setting =
- map->GetDefaultContentSetting(ContentSettingsType::COOKIES, nullptr);
-
- auto control_mode = static_cast<content_settings::CookieControlsMode>(
- profile->GetPrefs()->GetInteger(prefs::kCookieControlsMode));
-
- // Determine what the effective cookie setting is. These conditions are not
- // mutually exclusive and rely on ordering.
- if (content_setting == ContentSetting::CONTENT_SETTING_BLOCK) {
- return l10n_util::GetPluralStringFUTF8(
- IDS_SETTINGS_SITE_SETTINGS_COOKIES_BLOCK,
- GetNumCookieExceptionsOfTypes(
- map, {ContentSetting::CONTENT_SETTING_ALLOW,
- ContentSetting::CONTENT_SETTING_SESSION_ONLY}));
- }
- switch (control_mode) {
- case content_settings::CookieControlsMode::kBlockThirdParty:
- return l10n_util::GetStringUTF8(
- IDS_SETTINGS_SITE_SETTINGS_COOKIES_BLOCK_THIRD_PARTY);
- case content_settings::CookieControlsMode::kIncognitoOnly:
- return l10n_util::GetStringUTF8(
- IDS_SETTINGS_SITE_SETTINGS_COOKIES_BLOCK_THIRD_PARTY_INCOGNITO);
- case content_settings::CookieControlsMode::kOff:
- // We do not make a distinction between allow and clear on exit.
- return l10n_util::GetPluralStringFUTF8(
- IDS_SETTINGS_SITE_SETTINGS_COOKIES_ALLOW,
- GetNumCookieExceptionsOfTypes(
- map, {ContentSetting::CONTENT_SETTING_BLOCK}));
- }
- NOTREACHED();
-}
-
// Removes all nodes from |model| which match |origin| and/or belong to
// |grouping_key|. At least one of |origin| or |grouping_key| must be set. If
// only |origin| is set, then unpartitioned storage for that origin is removed.
@@ -444,11 +402,11 @@ std::string GetCookieSettingDescription(Profile* profile) {
// removed. If both |origin| and |grouping_key| are set, then only storage for
// |origin| partitioned by |grouping_key| is removed.
void RemoveMatchingNodes(CookiesTreeModel* model,
- absl::optional<url::Origin> origin,
- absl::optional<GroupingKey> grouping_key) {
+ std::optional<url::Origin> origin,
+ std::optional<GroupingKey> grouping_key) {
DCHECK(origin || grouping_key);
- absl::optional<std::string> group_etld_plus1 =
- grouping_key.has_value() ? grouping_key->GetEtldPlusOne() : absl::nullopt;
+ std::optional<std::string> group_etld_plus1 =
+ grouping_key.has_value() ? grouping_key->GetEtldPlusOne() : std::nullopt;
std::vector<CookieTreeNode*> nodes_to_delete;
for (const auto& host_node : model->GetRoot()->children()) {
@@ -515,12 +473,18 @@ void RemoveMatchingNodes(CookiesTreeModel* model,
model->DeleteCookieNode(node);
}
-// Returns the registable domain (eTLD+1) for the `origin`. If it doesn't exist,
+// Returns the registrable domain (eTLD+1) for the `host`. If it doesn't exist,
// returns the host.
-std::string GetEtldPlusOne(const url::Origin& origin) {
+std::string GetEtldPlusOneForHost(const std::string& host) {
auto eltd_plus_one = net::registry_controlled_domains::GetDomainAndRegistry(
- origin, net::registry_controlled_domains::INCLUDE_PRIVATE_REGISTRIES);
- return eltd_plus_one.empty() ? origin.host() : eltd_plus_one;
+ host, net::registry_controlled_domains::INCLUDE_PRIVATE_REGISTRIES);
+ return eltd_plus_one.empty() ? host : eltd_plus_one;
+}
+
+// Returns the registrable domain (eTLD+1) for the `origin`. If it doesn't
+// exist, returns the host.
+std::string GetEtldPlusOne(const url::Origin& origin) {
+ return GetEtldPlusOneForHost(origin.host());
}
// Converts |etld_plus1| into an HTTPS SchemefulSite.
@@ -530,18 +494,20 @@ net::SchemefulSite ConvertEtldToSchemefulSite(const std::string etld_plus1) {
"/"));
}
-// Iterates over host nodes in `tree_model` which contains all sites that have
-// storage set and uses them to retrieve first party set membership information.
-// Returns a map of site eTLD+1 matched with their FPS owner and count of first
-// party set members.
+// Iterates over host nodes in `cookies_tree_model` and data owners in
+// `browsing_data_model` which contains all sites that have storage set and uses
+// them to retrieve first party set membership information. Returns a map of
+// site eTLD+1 matched with their FPS owner and count of first party set
+// members.
std::map<std::string, std::pair<std::string, int>> GetFpsMap(
PrivacySandboxService* privacy_sandbox_service,
- CookiesTreeModel* tree_model) {
+ CookiesTreeModel* cookies_tree_model,
+ BrowsingDataModel* browsing_data_model) {
// Used to count unique eTLD+1 owned by a FPS owner.
std::map<std::string, std::set<std::string>> fps_owner_to_members;
// Count members by unique eTLD+1 for each first party set.
- for (const auto& host_node : tree_model->GetRoot()->children()) {
+ for (const auto& host_node : cookies_tree_model->GetRoot()->children()) {
std::string etld_plus1 =
GetEtldPlusOne(host_node->GetDetailedInfo().origin);
auto schemeful_site = ConvertEtldToSchemefulSite(etld_plus1);
@@ -552,6 +518,19 @@ std::map<std::string, std::pair<std::string, int>> GetFpsMap(
}
}
+ if (browsing_data_model) {
+ for (const auto& entry : *browsing_data_model) {
+ std::string etld_plus1 = GetEtldPlusOneForHost(
+ BrowsingDataModel::GetHost(entry.data_owner.get()));
+ auto schemeful_site = ConvertEtldToSchemefulSite(etld_plus1);
+ auto fps_owner = privacy_sandbox_service->GetFirstPartySetOwner(
+ schemeful_site.GetURL());
+ if (fps_owner.has_value()) {
+ fps_owner_to_members[fps_owner->GetURL().host()].insert(etld_plus1);
+ }
+ }
+ }
+
// site eTLD+1 : {owner site eTLD+1, # of sites in that first party set}
std::map<std::string, std::pair<std::string, int>> fps_map;
for (auto fps : fps_owner_to_members) {
@@ -584,11 +563,13 @@ void ConvertSiteGroupMapToList(
const std::set<url::Origin>& origin_permission_set,
base::Value::List* list_value,
Profile* profile,
- CookiesTreeModel* tree_model) {
+ CookiesTreeModel* tree_model,
+ BrowsingDataModel* browsing_data_model) {
DCHECK(profile);
auto* privacy_sandbox_service =
PrivacySandboxServiceFactory::GetForProfile(profile);
- auto fps_map = GetFpsMap(privacy_sandbox_service, tree_model);
+ auto fps_map =
+ GetFpsMap(privacy_sandbox_service, tree_model, browsing_data_model);
base::flat_set<url::Origin> installed_origins =
GetInstalledAppOrigins(profile);
site_engagement::SiteEngagementService* engagement_service =
@@ -599,8 +580,8 @@ void ConvertSiteGroupMapToList(
site_group.Set(kGroupingKey, grouping_key.Serialize());
// eTLD+1 is the effective top level domain + 1.
- absl::optional<std::string> etld_plus1 = grouping_key.GetEtldPlusOne();
- absl::optional<url::Origin> group_origin = grouping_key.GetOrigin();
+ std::optional<std::string> etld_plus1 = grouping_key.GetEtldPlusOne();
+ std::optional<url::Origin> group_origin = grouping_key.GetOrigin();
CHECK(etld_plus1 || group_origin);
site_group.Set(site_settings::kDisplayName,
etld_plus1.has_value()
@@ -715,18 +696,18 @@ std::string GroupingKey::Serialize() const {
value_);
}
-absl::optional<std::string> GroupingKey::GetEtldPlusOne() const {
+std::optional<std::string> GroupingKey::GetEtldPlusOne() const {
if (absl::holds_alternative<std::string>(value_)) {
return absl::get<std::string>(value_);
}
- return absl::nullopt;
+ return std::nullopt;
}
-absl::optional<url::Origin> GroupingKey::GetOrigin() const {
+std::optional<url::Origin> GroupingKey::GetOrigin() const {
if (absl::holds_alternative<url::Origin>(value_)) {
return absl::get<url::Origin>(value_);
}
- return absl::nullopt;
+ return std::nullopt;
}
url::Origin GroupingKey::ToOrigin() const {
@@ -790,11 +771,6 @@ void SiteSettingsHandler::RegisterMessages() {
base::BindRepeating(&SiteSettingsHandler::HandleGetCategoryList,
base::Unretained(this)));
web_ui()->RegisterMessageCallback(
- "getCookieSettingDescription",
- base::BindRepeating(
- &SiteSettingsHandler::HandleGetCookieSettingDescription,
- base::Unretained(this)));
- web_ui()->RegisterMessageCallback(
"getRecentSitePermissions",
base::BindRepeating(&SiteSettingsHandler::HandleGetRecentSitePermissions,
base::Unretained(this)));
@@ -928,12 +904,6 @@ void SiteSettingsHandler::OnJavascriptAllowed() {
prefs::kBlockAutoplayEnabled,
base::BindRepeating(&SiteSettingsHandler::SendBlockAutoplayStatus,
base::Unretained(this)));
-
- // Listen for prefs that impact the effective cookie setting
- pref_change_registrar_->Add(
- prefs::kCookieControlsMode,
- base::BindRepeating(&SiteSettingsHandler::SendCookieSettingDescription,
- base::Unretained(this)));
}
void SiteSettingsHandler::OnJavascriptDisallowed() {
@@ -941,7 +911,6 @@ void SiteSettingsHandler::OnJavascriptDisallowed() {
chooser_observations_.RemoveAllObservations();
host_zoom_map_subscriptions_.clear();
pref_change_registrar_->Remove(prefs::kBlockAutoplayEnabled);
- pref_change_registrar_->Remove(prefs::kCookieControlsMode);
observed_profiles_.RemoveAllObservations();
}
@@ -960,6 +929,7 @@ void SiteSettingsHandler::OnGetUsageInfo() {
// the browsing data (hostname is insufficient) in CookieTreeModel or the new
// BrowsingDataModel.
std::string usage_hostname = GURL(usage_origin_).host();
+ int num_cookies = 0;
for (const auto& site : root->children()) {
std::string title = base::UTF16ToUTF8(site->GetTitle());
if (title != usage_hostname) {
@@ -971,7 +941,6 @@ void SiteSettingsHandler::OnGetUsageInfo() {
// inspected.
// TODO (crbug.com/1271155): This is slow, the replacement for the
// CookiesTreeModel should improve this significantly.
- int num_cookies = 0;
for (const auto& site_child : site->children()) {
if (site_child->GetDetailedInfo().node_type !=
CookieTreeNode::DetailedInfo::TYPE_COOKIES) {
@@ -988,42 +957,47 @@ void SiteSettingsHandler::OnGetUsageInfo() {
return !detailed_info.cookie->IsPartitioned();
});
}
- if (num_cookies != 0) {
- cookie_string = base::UTF16ToUTF8(l10n_util::GetPluralStringFUTF16(
- IDS_SETTINGS_SITE_SETTINGS_NUM_COOKIES, num_cookies));
- }
-
- auto* privacy_sandbox_service =
- PrivacySandboxServiceFactory::GetForProfile(profile_);
- auto fps_map =
- GetFpsMap(privacy_sandbox_service, cookies_tree_model_.get());
- auto etld_plus1 = GetEtldPlusOne(site->GetDetailedInfo().origin);
- if (fps_map.count(etld_plus1)) {
- fps_string =
- base::UTF16ToUTF8(base::i18n::MessageFormatter::FormatWithNamedArgs(
- l10n_util::GetStringUTF16(
- IDS_SETTINGS_SITE_SETTINGS_FIRST_PARTY_SETS_MEMBERSHIP_LABEL),
- "MEMBERS", static_cast<int>(fps_map[etld_plus1].second),
- "FPS_OWNER", fps_map[etld_plus1].first));
- fpsPolicy = privacy_sandbox_service->IsPartOfManagedFirstPartySet(
- ConvertEtldToSchemefulSite(etld_plus1));
- }
break;
}
+ auto usage_origin = url::Origin::Create(GURL(usage_origin_));
for (const BrowsingDataModel::BrowsingDataEntryView& entry :
*browsing_data_model_) {
- auto usage_origin = url::Origin::Create(GURL(usage_origin_));
if (!entry.Matches(usage_origin)) {
continue;
}
size += entry.data_details->storage_size;
+ // Display only first party cookies.
+ if (!entry.GetThirdPartyPartitioningSite().has_value()) {
+ num_cookies += entry.data_details->cookie_count;
+ }
+ }
+
+ if (num_cookies > 0) {
+ cookie_string = base::UTF16ToUTF8(l10n_util::GetPluralStringFUTF16(
+ IDS_SETTINGS_SITE_SETTINGS_NUM_COOKIES, num_cookies));
}
if (size > 0) {
usage_string = base::UTF16ToUTF8(ui::FormatBytes(size));
}
+ auto* privacy_sandbox_service =
+ PrivacySandboxServiceFactory::GetForProfile(profile_);
+ auto fps_map = GetFpsMap(privacy_sandbox_service, cookies_tree_model_.get(),
+ browsing_data_model_.get());
+ auto etld_plus1 = GetEtldPlusOne(usage_origin);
+ if (fps_map.count(etld_plus1)) {
+ fps_string =
+ base::UTF16ToUTF8(base::i18n::MessageFormatter::FormatWithNamedArgs(
+ l10n_util::GetStringUTF16(
+ IDS_SETTINGS_SITE_SETTINGS_FIRST_PARTY_SETS_MEMBERSHIP_LABEL),
+ "MEMBERS", static_cast<int>(fps_map[etld_plus1].second),
+ "FPS_OWNER", fps_map[etld_plus1].first));
+ fpsPolicy = privacy_sandbox_service->IsPartOfManagedFirstPartySet(
+ ConvertEtldToSchemefulSite(etld_plus1));
+ }
+
FireWebUIListener("usage-total-changed", base::Value(usage_origin_),
base::Value(usage_string), base::Value(cookie_string),
base::Value(fps_string), base::Value(fpsPolicy));
@@ -1065,12 +1039,6 @@ void SiteSettingsHandler::OnContentSettingChanged(
content_type == ContentSettingsType::SOUND) {
SendBlockAutoplayStatus();
}
-
- // If the default cookie setting changed we should update the effective
- // setting description.
- if (content_type == ContentSettingsType::COOKIES) {
- SendCookieSettingDescription();
- }
}
void SiteSettingsHandler::OnOffTheRecordProfileCreated(
@@ -1086,7 +1054,7 @@ void SiteSettingsHandler::OnProfileWillBeDestroyed(Profile* profile) {
}
void SiteSettingsHandler::OnObjectPermissionChanged(
- absl::optional<ContentSettingsType> guard_content_settings_type,
+ std::optional<ContentSettingsType> guard_content_settings_type,
ContentSettingsType data_content_settings_type) {
if (!guard_content_settings_type ||
!site_settings::HasRegisteredGroupName(*guard_content_settings_type) ||
@@ -1140,8 +1108,11 @@ void SiteSettingsHandler::HandleClearUnpartitionedUsage(
if (origin.opaque())
return;
AllowJavascript();
- DCHECK(cookies_tree_model_);
- RemoveMatchingNodes(cookies_tree_model_.get(), origin, absl::nullopt);
+ if (!base::FeatureList::IsEnabled(
+ browsing_data::features::kDeprecateCookiesTreeModel)) {
+ DCHECK(cookies_tree_model_);
+ RemoveMatchingNodes(cookies_tree_model_.get(), origin, std::nullopt);
+ }
// TODO(crbug.com/1368048) - Permission info loading before storage info
// can result in an interleaving of actions that means this pointer is
@@ -1170,12 +1141,15 @@ void SiteSettingsHandler::HandleClearUnpartitionedUsage(
replacements.SetSchemeStr(url::kHttpsScheme);
https_url = https_url.ReplaceComponents(replacements);
auto https_origin = url::Origin::Create(https_url);
-
- // Also remove matching cookies node with HTTPS scheme if it exists to
- // avoid confusion when cookies already exist when refreshing clear site
- // data page. Notes: this also means HTTPS sites cookie will be cleared when
- // user clear HTTP scheme Cookie.
- RemoveMatchingNodes(cookies_tree_model_.get(), https_origin, absl::nullopt);
+ if (!base::FeatureList::IsEnabled(
+ browsing_data::features::kDeprecateCookiesTreeModel)) {
+ // Also remove matching cookies node with HTTPS scheme if it exists to
+ // avoid confusion when cookies already exist when refreshing clear site
+ // data page. Notes: this also means HTTPS sites cookie will be cleared
+ // when user clear HTTP scheme Cookie.
+ RemoveMatchingNodes(cookies_tree_model_.get(), https_origin,
+ std::nullopt);
+ }
affected_origins.emplace_back(https_origin);
}
@@ -1187,23 +1161,23 @@ void SiteSettingsHandler::HandleClearPartitionedUsage(
CHECK_EQ(2U, args.size());
auto origin = url::Origin::Create(GURL(args[0].GetString()));
auto grouping_key = GroupingKey::Deserialize(args[1].GetString());
-
- RemoveMatchingNodes(cookies_tree_model_.get(), origin, grouping_key);
- absl::optional<std::string> group_etld_plus1 = grouping_key.GetEtldPlusOne();
+ if (!base::FeatureList::IsEnabled(
+ browsing_data::features::kDeprecateCookiesTreeModel)) {
+ RemoveMatchingNodes(cookies_tree_model_.get(), origin, grouping_key);
+ }
// The group key should always be an eTLD+1 because there aren't any
// partitioned entries for IWAs (which have a non-eTLD+1 grouping key).
+ absl::optional<std::string> group_etld_plus1 = grouping_key.GetEtldPlusOne();
DCHECK(group_etld_plus1);
net::SchemefulSite https_top_level_site(
ConvertEtldToOrigin(*group_etld_plus1, true));
-
browsing_data_model_->RemovePartitionedBrowsingData(
origin.host(), https_top_level_site, base::DoNothing());
net::SchemefulSite http_top_level_site =
net::SchemefulSite(ConvertEtldToOrigin(*group_etld_plus1, false));
-
browsing_data_model_->RemovePartitionedBrowsingData(
origin.host(), http_top_level_site, base::DoNothing());
}
@@ -1347,7 +1321,8 @@ void SiteSettingsHandler::HandleGetAllSites(const base::Value::List& args) {
// Respond with currently available data.
ConvertSiteGroupMapToList(all_sites_map_, origin_permission_set_, &result,
- profile, cookies_tree_model_.get());
+ profile, cookies_tree_model_.get(),
+ browsing_data_model_.get());
LogAllSitesAction(AllSitesAction2::kLoadPage);
@@ -1369,15 +1344,6 @@ void SiteSettingsHandler::HandleGetCategoryList(const base::Value::List& args) {
ResolveJavascriptCallback(base::Value(callback_id), result);
}
-void SiteSettingsHandler::HandleGetCookieSettingDescription(
- const base::Value::List& args) {
- AllowJavascript();
- CHECK_EQ(1U, args.size());
- std::string callback_id = args[0].GetString();
- ResolveJavascriptCallback(base::Value(callback_id),
- base::Value(GetCookieSettingDescription(profile_)));
-}
-
void SiteSettingsHandler::HandleGetRecentSitePermissions(
const base::Value::List& args) {
AllowJavascript();
@@ -1427,14 +1393,15 @@ void SiteSettingsHandler::HandleGetRecentSitePermissions(
base::Value::List SiteSettingsHandler::PopulateCookiesAndUsageData(
Profile* profile) {
std::map<url::Origin, int64_t> origin_size_map;
- std::map<std::pair<std::string, absl::optional<std::string>>, int>
+ std::map<std::pair<std::string, std::optional<std::string>>, int>
host_cookie_map;
base::Value::List list_value;
GetOriginStorage(&all_sites_map_, &origin_size_map);
GetHostCookies(&all_sites_map_, &host_cookie_map);
ConvertSiteGroupMapToList(all_sites_map_, origin_permission_set_, &list_value,
- profile, cookies_tree_model_.get());
+ profile, cookies_tree_model_.get(),
+ browsing_data_model_.get());
// Merge the origin usage and cookies number into |list_value|.
for (base::Value& item : list_value) {
@@ -1444,10 +1411,10 @@ base::Value::List SiteSettingsHandler::PopulateCookiesAndUsageData(
auto grouping_key =
GroupingKey::Deserialize(*site_group.FindString(kGroupingKey));
// Add the number of eTLD+1 scoped cookies.
- absl::optional<std::string> etld_plus1 = grouping_key.GetEtldPlusOne();
+ std::optional<std::string> etld_plus1 = grouping_key.GetEtldPlusOne();
if (etld_plus1.has_value()) {
const auto& etld_plus1_cookie_num_it =
- std::as_const(host_cookie_map).find({*etld_plus1, absl::nullopt});
+ std::as_const(host_cookie_map).find({*etld_plus1, std::nullopt});
if (etld_plus1_cookie_num_it != host_cookie_map.end()) {
cookie_num += etld_plus1_cookie_num_it->second;
}
@@ -1467,7 +1434,7 @@ base::Value::List SiteSettingsHandler::PopulateCookiesAndUsageData(
}
const auto& host_cookie_num_it = host_cookie_map.find(
- {origin.host(), (is_partitioned ? etld_plus1 : absl::nullopt)});
+ {origin.host(), (is_partitioned ? etld_plus1 : std::nullopt)});
if (host_cookie_num_it != host_cookie_map.end()) {
origin_info.Set(kNumCookies, host_cookie_num_it->second);
// Add cookies numbers for origins that aren't an eTLD+1.
@@ -1653,8 +1620,8 @@ void SiteSettingsHandler::HandleGetFileSystemGrants(
void SiteSettingsHandler::HandleRevokeFileSystemGrant(
const base::Value::List& args) {
- // TODO(crbug.com/1373962): Remove feature flag check after persisted
- // permissions is fully launched.
+ // TODO(crbug.com/1467574): Remove `kFileSystemAccessPersistentPermissions`
+ // flag after FSA Persistent Permissions feature launch.
DCHECK(base::FeatureList::IsEnabled(
features::kFileSystemAccessPersistentPermissions));
CHECK_EQ(2U, args.size());
@@ -1675,8 +1642,8 @@ void SiteSettingsHandler::HandleRevokeFileSystemGrant(
void SiteSettingsHandler::HandleRevokeFileSystemGrants(
const base::Value::List& args) {
- // TODO(crbug.com/1373962): Remove feature flag check after persisted
- // permissions is fully launched.
+ // TODO(crbug.com/1467574): Remove `kFileSystemAccessPersistentPermissions`
+ // flag after FSA Persistent Permissions feature launch.
DCHECK(base::FeatureList::IsEnabled(
features::kFileSystemAccessPersistentPermissions));
@@ -1785,7 +1752,7 @@ void SiteSettingsHandler::HandleSetOriginPermissions(
// permissions have been updated.
// Info bar should only be shown on pages with the same origin and
// on the same profile
- for (auto* it : *BrowserList::GetInstance()) {
+ for (Browser* it : *BrowserList::GetInstance()) {
TabStripModel* tab_strip = it->tab_strip_model();
for (int i = 0; i < tab_strip->count(); ++i) {
content::WebContents* web_contents = tab_strip->GetWebContentsAt(i);
@@ -2257,6 +2224,8 @@ void SiteSettingsHandler::ObserveSourcesForProfile(Profile* profile) {
chooser_observations_.AddObservation(bluetooth_context);
}
+ // TODO(crbug.com/1467574): Remove `kFileSystemAccessPersistentPermissions`
+ // flag after FSA Persistent Permissions feature launch.
if (base::FeatureList::IsEnabled(
features::kFileSystemAccessPersistentPermissions)) {
auto* file_system_access_permission_context =
@@ -2295,6 +2264,8 @@ void SiteSettingsHandler::StopObservingSourcesForProfile(Profile* profile) {
chooser_observations_.RemoveObservation(bluetooth_context);
}
+ // TODO(crbug.com/1467574): Remove `kFileSystemAccessPersistentPermissions`
+ // flag after FSA Persistent Permissions feature launch.
if (base::FeatureList::IsEnabled(
features::kFileSystemAccessPersistentPermissions)) {
auto* file_system_access_permission_context =
@@ -2342,7 +2313,7 @@ void SiteSettingsHandler::GetOriginStorage(
// If the storage is partitioned on a third party we need to ensure the
// grouping key matches the top-site and doesn't default to the origin
// in the UI.
- absl::optional<GroupingKey> partition_grouping_key = absl::nullopt;
+ std::optional<GroupingKey> partition_grouping_key = std::nullopt;
auto third_party_partitioning_site = entry.GetThirdPartyPartitioningSite();
if (third_party_partitioning_site) {
partition_grouping_key = GroupingKey::Create(url::Origin::Create(
@@ -2356,8 +2327,36 @@ void SiteSettingsHandler::GetOriginStorage(
void SiteSettingsHandler::GetHostCookies(
AllSitesMap* all_sites_map,
- std::map<std::pair<std::string, absl::optional<std::string>>, int>*
+ std::map<std::pair<std::string, std::optional<std::string>>, int>*
host_cookie_map) {
+ if (base::FeatureList::IsEnabled(
+ browsing_data::features::kDeprecateCookiesTreeModel)) {
+ for (const auto& [owner, key, details] : *browsing_data_model_) {
+ const net::CanonicalCookie* cookie =
+ absl::get_if<net::CanonicalCookie>(&key.get());
+ // Skip data keys that don't have cookies.
+ if (!cookie) {
+ continue;
+ }
+ absl::optional<std::string> partition_etld_plus1 = absl::nullopt;
+ absl::optional<GroupingKey> partition_grouping_key = absl::nullopt;
+ if (cookie->IsPartitioned()) {
+ partition_etld_plus1 = cookie->PartitionKey()->site().GetURL().host();
+ partition_grouping_key =
+ GroupingKey::CreateFromEtldPlus1(*partition_etld_plus1);
+ }
+
+ const auto owner_host = BrowsingDataModel::GetHost(owner.get());
+ const auto origin = ConvertEtldToOrigin(
+ owner_host,
+ browsing_data::IsHttpsCookieSourceScheme(cookie->SourceScheme()));
+ InsertOriginIntoGroup(all_sites_map, origin,
+ /*is_origin_with_cookies=*/true,
+ partition_grouping_key);
+ (*host_cookie_map)[{owner_host, partition_etld_plus1}]++;
+ }
+ return;
+ }
CHECK(cookies_tree_model_.get());
// Get sites that don't have data but have cookies.
// TODO(crbug.com/1271155): Query the Browsing Data Model instead when cookie
@@ -2383,8 +2382,8 @@ void SiteSettingsHandler::GetHostCookies(
CookieTreeNode::DetailedInfo::TYPE_COOKIE);
DCHECK(detailed_info.cookie);
- absl::optional<std::string> partition_etld_plus1 = absl::nullopt;
- absl::optional<GroupingKey> partition_grouping_key = absl::nullopt;
+ std::optional<std::string> partition_etld_plus1 = std::nullopt;
+ std::optional<GroupingKey> partition_grouping_key = std::nullopt;
if (detailed_info.cookie->IsPartitioned()) {
partition_etld_plus1 =
detailed_info.cookie->PartitionKey()->site().GetURL().host();
@@ -2406,19 +2405,19 @@ void SiteSettingsHandler::HandleClearSiteGroupDataAndCookies(
auto grouping_key = GroupingKey::Deserialize(args[0].GetString());
net::SchemefulSite https_top_level_site;
net::SchemefulSite http_top_level_site;
- if (absl::optional<std::string> etld_plus_one =
+ if (std::optional<std::string> etld_plus_one =
grouping_key.GetEtldPlusOne()) {
https_top_level_site =
net::SchemefulSite(ConvertEtldToOrigin(*etld_plus_one, true));
http_top_level_site =
net::SchemefulSite(ConvertEtldToOrigin(*etld_plus_one, false));
- } else if (absl::optional<url::Origin> origin = grouping_key.GetOrigin()) {
+ } else if (std::optional<url::Origin> origin = grouping_key.GetOrigin()) {
https_top_level_site = net::SchemefulSite(*origin);
http_top_level_site = net::SchemefulSite(*origin);
}
AllowJavascript();
- RemoveMatchingNodes(cookies_tree_model_.get(), absl::nullopt, grouping_key);
+ RemoveMatchingNodes(cookies_tree_model_.get(), std::nullopt, grouping_key);
// Retrieve all of the origin entries grouped under this group.
std::vector<url::Origin> affected_origins;
@@ -2518,6 +2517,14 @@ void SiteSettingsHandler::RemoveNonModelData(
->SetWebsiteSettingDefaultScope(
origin.GetURL(), GURL(),
ContentSettingsType::REDUCED_ACCEPT_LANGUAGE, base::Value());
+ // Once user clears site setting data for `origins`, the Durable storage bit
+ // should also be reset.
+ // TODO(crbug.com/1499305): This should be replaced when integrated with
+ // the BrowserDataModel.
+ HostContentSettingsMapFactory::GetForProfile(profile_)
+ ->SetWebsiteSettingDefaultScope(origin.GetURL(), GURL(),
+ ContentSettingsType::DURABLE_STORAGE,
+ base::Value());
}
#if BUILDFLAG(IS_WIN)
@@ -2565,11 +2572,6 @@ BrowsingDataModel* SiteSettingsHandler::GetBrowsingDataModelForTesting() {
return browsing_data_model_.get();
}
-void SiteSettingsHandler::SendCookieSettingDescription() {
- FireWebUIListener("cookieSettingDescriptionChanged",
- base::Value(GetCookieSettingDescription(profile_)));
-}
-
// Dictionary keys for an individual `FileSystemPermissionGrant`.
// Schema (per grant):
// {
@@ -2598,8 +2600,8 @@ void SiteSettingsHandler::SendCookieSettingDescription() {
base::Value::List SiteSettingsHandler::PopulateFileSystemGrantData() {
base::Value::List grants;
- // TODO(crbug.com/1373962): Remove feature flag check after persisted
- // permissions is fully launched.
+ // TODO(crbug.com/1467574): Remove `kFileSystemAccessPersistentPermissions`
+ // flag after FSA Persistent Permissions feature launch.
if (!base::FeatureList::IsEnabled(
features::kFileSystemAccessPersistentPermissions)) {
return grants;
diff --git a/chromium/chrome/browser/ui/webui/settings/site_settings_handler.h b/chromium/chrome/browser/ui/webui/settings/site_settings_handler.h
index 68042895eb1..cd8a9d673ee 100644
--- a/chromium/chrome/browser/ui/webui/settings/site_settings_handler.h
+++ b/chromium/chrome/browser/ui/webui/settings/site_settings_handler.h
@@ -7,6 +7,7 @@
#include <map>
#include <memory>
+#include <optional>
#include <set>
#include <string>
#include <vector>
@@ -27,7 +28,6 @@
#include "components/prefs/pref_store.h"
#include "content/public/browser/host_zoom_map.h"
#include "ppapi/buildflags/buildflags.h"
-#include "third_party/abseil-cpp/absl/types/optional.h"
#include "third_party/abseil-cpp/absl/types/variant.h"
#include "url/origin.h"
@@ -61,11 +61,11 @@ class SiteSettingsHandler
// Returns the eTLD+1 that this GroupingKey represents, or nullopt if it
// doesn't represent an eTLD+1.
- absl::optional<std::string> GetEtldPlusOne() const;
+ std::optional<std::string> GetEtldPlusOne() const;
// Returns the origin that this GroupingKey represents, or nullopt if it
// doesn't represent an origin.
- absl::optional<url::Origin> GetOrigin() const;
+ std::optional<url::Origin> GetOrigin() const;
bool operator<(const GroupingKey& other) const;
@@ -115,7 +115,7 @@ class SiteSettingsHandler
// ObjectPermissionContextBase::PermissionObserver implementation:
void OnObjectPermissionChanged(
- absl::optional<ContentSettingsType> guard_content_settings_type,
+ std::optional<ContentSettingsType> guard_content_settings_type,
ContentSettingsType data_content_settings_type) override;
void OnZoomLevelChanged(const content::HostZoomMap::ZoomLevelChange& change);
@@ -144,9 +144,6 @@ class SiteSettingsHandler
// the front end when fetching finished.
void HandleGetAllSites(const base::Value::List& args);
- // Returns a string for display describing the current cookie settings.
- void HandleGetCookieSettingDescription(const base::Value::List& args);
-
// Returns a list containing the most recent permission changes for the
// content types that are visiblein settings, grouped by origin/profile
// (incognito, regular) combinations, limited to N origin/profile pairings.
@@ -255,7 +252,7 @@ class SiteSettingsHandler
// stores the information in the |all_sites_map| and |host_cookie_map|.
void GetHostCookies(
AllSitesMap* all_sites_map,
- std::map<std::pair<std::string, absl::optional<std::string>>, int>*
+ std::map<std::pair<std::string, std::optional<std::string>>, int>*
host_cookie_map);
// Returns a list of content settings types that are controlled via a standard
@@ -293,10 +290,6 @@ class SiteSettingsHandler
// CookiesTreeModel is deprecated.
void RemoveNonModelData(const std::vector<url::Origin>& origins);
- // Notifies the JS side the effective cookies setting has changed and
- // provides the updated description label for display.
- void SendCookieSettingDescription();
-
// Returns a dictionary containing the lists of the allowed permission
// grant objects granted via the File System Access API, per origin.
base::Value::List PopulateFileSystemGrantData();
diff --git a/chromium/chrome/browser/ui/webui/settings/site_settings_handler_unittest.cc b/chromium/chrome/browser/ui/webui/settings/site_settings_handler_unittest.cc
index 51b309fdd91..ca5ae214304 100644
--- a/chromium/chrome/browser/ui/webui/settings/site_settings_handler_unittest.cc
+++ b/chromium/chrome/browser/ui/webui/settings/site_settings_handler_unittest.cc
@@ -5,6 +5,7 @@
#include "chrome/browser/ui/webui/settings/site_settings_handler.h"
#include <memory>
+#include <optional>
#include <string>
#include <tuple>
#include <utility>
@@ -74,6 +75,7 @@
#include "components/browsing_data/content/fake_browsing_data_model.h"
#include "components/browsing_data/content/mock_cookie_helper.h"
#include "components/browsing_data/content/mock_local_storage_helper.h"
+#include "components/browsing_data/core/features.h"
#include "components/browsing_topics/browsing_topics_service.h"
#include "components/browsing_topics/test_util.h"
#include "components/client_hints/common/client_hints.h"
@@ -124,7 +126,6 @@
#include "services/device/public/mojom/serial.mojom.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
-#include "third_party/abseil-cpp/absl/types/optional.h"
#include "third_party/blink/public/common/storage_key/storage_key.h"
#include "third_party/blink/public/mojom/bluetooth/web_bluetooth.mojom.h"
#include "ui/base/l10n/l10n_util.h"
@@ -265,10 +266,32 @@ void RegisterWebApp(Profile* profile, apps::AppPtr app) {
/*should_notify_initialized=*/true);
}
+std::unique_ptr<net::CanonicalCookie> CreateCookieKey(
+ const GURL& url,
+ const std::string& cookie_line,
+ absl::optional<net::CookiePartitionKey> cookie_partition_key =
+ absl::nullopt) {
+ return net::CanonicalCookie::Create(url, cookie_line, base::Time::Now(),
+ absl::nullopt /* server_time */,
+ cookie_partition_key);
+}
+
+void RemoveModelEntries(
+ std::vector<browsing_data_model_test_util::BrowsingDataEntry>&
+ model_entries,
+ const std::vector<browsing_data_model_test_util::BrowsingDataEntry>&
+ entries_to_remove) {
+ for (const auto& entry : entries_to_remove) {
+ model_entries.erase(
+ std::remove(model_entries.begin(), model_entries.end(), entry),
+ model_entries.end());
+ }
+}
+
struct TestModels {
scoped_refptr<browsing_data::MockCookieHelper> cookie_helper;
scoped_refptr<browsing_data::MockLocalStorageHelper> local_storage_helper;
- const raw_ref<FakeBrowsingDataModel, ExperimentalAsh> browsing_data_model;
+ const raw_ref<FakeBrowsingDataModel> browsing_data_model;
};
} // namespace
@@ -404,14 +427,14 @@ class SiteSettingsHandlerBaseTest : public testing::Test {
const base::Value* event_data = data.arg2();
ASSERT_TRUE(event_data->is_dict());
- absl::optional<bool> enabled = event_data->GetDict().FindBool("enabled");
+ std::optional<bool> enabled = event_data->GetDict().FindBool("enabled");
ASSERT_TRUE(enabled.has_value());
EXPECT_EQ(expected_enabled, *enabled);
const base::Value::Dict* pref_data = event_data->GetDict().FindDict("pref");
ASSERT_TRUE(pref_data);
- absl::optional<bool> value = pref_data->FindBool("value");
+ std::optional<bool> value = pref_data->FindBool("value");
ASSERT_TRUE(value.has_value());
EXPECT_EQ(expected_value, *value);
}
@@ -566,7 +589,7 @@ class SiteSettingsHandlerBaseTest : public testing::Test {
// exceptions.
const auto* description = exception.FindString(site_settings::kDescription);
ASSERT_FALSE(description);
- absl::optional<bool> incognito =
+ std::optional<bool> incognito =
exception.FindBool(site_settings::kIncognito);
ASSERT_FALSE(incognito.has_value());
@@ -616,7 +639,7 @@ class SiteSettingsHandlerBaseTest : public testing::Test {
ASSERT_EQ(expected_embedding_exception.embedding_display_name,
*embedding_display_name);
- absl::optional<bool> incognito =
+ std::optional<bool> incognito =
embedding_exception.FindBool(site_settings::kIncognito);
ASSERT_TRUE(incognito.has_value());
EXPECT_EQ(expected_embedding_exception.incognito, *incognito);
@@ -681,7 +704,7 @@ class SiteSettingsHandlerBaseTest : public testing::Test {
ASSERT_EQ(content_settings::ContentSettingToString(expected_setting),
*setting);
- absl::optional<bool> incognito =
+ std::optional<bool> incognito =
exception.FindBool(site_settings::kIncognito);
ASSERT_TRUE(incognito.has_value());
EXPECT_EQ(expected_incognito, *incognito);
@@ -726,7 +749,7 @@ class SiteSettingsHandlerBaseTest : public testing::Test {
const base::Value* result = data.arg3();
ASSERT_TRUE(result->is_dict());
- absl::optional<bool> valid = result->GetDict().FindBool("isValid");
+ std::optional<bool> valid = result->GetDict().FindBool("isValid");
ASSERT_TRUE(valid.has_value());
EXPECT_EQ(expected_validity, *valid);
@@ -863,10 +886,9 @@ class SiteSettingsHandlerBaseTest : public testing::Test {
auto fake_browsing_data_model = std::make_unique<FakeBrowsingDataModel>(
ChromeBrowsingDataModelDelegate::CreateForProfile(profile()));
- std::move(setup).Run(
- {mock_browsing_data_cookie_helper,
- mock_browsing_data_local_storage_helper,
- ToRawRef<ExperimentalAsh>(*fake_browsing_data_model)});
+ std::move(setup).Run({mock_browsing_data_cookie_helper,
+ mock_browsing_data_local_storage_helper,
+ ToRawRef(*fake_browsing_data_model)});
mock_browsing_data_local_storage_helper->Notify();
mock_browsing_data_cookie_helper->Notify();
@@ -879,56 +901,79 @@ class SiteSettingsHandlerBaseTest : public testing::Test {
// storage nodes, will update all other nodes in the future.
void SetupModels() {
SetupModels(base::BindLambdaForTesting([this](const TestModels& models) {
- models.local_storage_helper->AddLocalStorageForStorageKey(
- blink::StorageKey::CreateFromStringForTesting(
- "https://www.example.com/"),
- 2);
-
- models.cookie_helper->AddCookieSamples(GURL("http://example.com"), "A=1");
- models.cookie_helper->AddCookieSamples(GURL("https://www.example.com/"),
- "B=1");
- models.cookie_helper->AddCookieSamples(GURL("http://abc.example.com"),
- "C=1");
- models.cookie_helper->AddCookieSamples(GURL("http://google.com"), "A=1");
- models.cookie_helper->AddCookieSamples(GURL("http://google.com"), "B=1");
- models.cookie_helper->AddCookieSamples(GURL("http://google.com.au"),
- "A=1");
-
- models.cookie_helper->AddCookieSamples(
- GURL("https://www.example.com"),
- "__Host-A=1; Path=/; Partitioned; Secure;",
- net::CookiePartitionKey::FromURLForTesting(
- GURL("https://google.com.au")));
- models.cookie_helper->AddCookieSamples(
- GURL("https://google.com.au"),
- "__Host-A=1; Path=/; Partitioned; Secure;",
- net::CookiePartitionKey::FromURLForTesting(
- GURL("https://google.com.au")));
- models.cookie_helper->AddCookieSamples(
- GURL("https://www.another-example.com"),
- "__Host-A=1; Path=/; Partitioned; Secure;",
- net::CookiePartitionKey::FromURLForTesting(
- GURL("https://google.com.au")));
- models.cookie_helper->AddCookieSamples(
- GURL("https://www.example.com"),
- "__Host-A=1; Path=/; Partitioned; Secure;",
- net::CookiePartitionKey::FromURLForTesting(
- GURL("https://google.com")));
-
- // Add an entry which will not be grouped with any other entries. This
- // will require a placeholder origin to be correctly added & removed.
- models.cookie_helper->AddCookieSamples(GURL("http://ungrouped.com"),
- "A=1");
-
- const auto browsing_data_model_entries = {
- kGoogleUnpartitionedEntry, kExampleUnpartitionedEntry,
- kGoogleOnExampleEntry, kExampleOnGoogleSecureEntry,
- kExampleOnGoogleInsecureEntry};
+ std::vector<browsing_data_model_test_util::BrowsingDataEntry>
+ browsing_data_model_entries = {
+ kGoogleUnpartitionedEntry, kExampleUnpartitionedEntry,
+ kGoogleOnExampleEntry, kExampleOnGoogleSecureEntry,
+ kExampleOnGoogleInsecureEntry};
+ if (base::FeatureList::IsEnabled(
+ browsing_data::features::kDeprecateCookiesTreeModel)) {
+ browsing_data_model_entries.insert(
+ browsing_data_model_entries.end(),
+ {
+ kExampleLocalStorage,
+ kHttpExampleCookie,
+ kHttpsWwwExampleCookie,
+ kPartitionedHttpsWwwExampleOnGoogleAuCookie,
+ kPartitionedHttpsWwwExampleOnGoogleCookie,
+ kHttpAbcExampleCookie,
+ kHttpGoogleCookieA,
+ kHttpGoogleCookieB,
+ kHttpGoogleAuCookie,
+ kPartitionedHttpsGoogleAu1PCookie,
+ kPartitionedHttpsWwwAnotherExampleOnGoogleAuCookie,
+ kUngroupedHttpCookie,
+ });
+ } else {
+ models.local_storage_helper->AddLocalStorageForStorageKey(
+ blink::StorageKey::CreateFromStringForTesting(
+ "https://www.example.com/"),
+ 2);
+
+ models.cookie_helper->AddCookieSamples(GURL("http://example.com"),
+ "A=1");
+ models.cookie_helper->AddCookieSamples(GURL("https://www.example.com/"),
+ "B=1");
+ models.cookie_helper->AddCookieSamples(GURL("http://abc.example.com"),
+ "C=1");
+ models.cookie_helper->AddCookieSamples(GURL("http://google.com"),
+ "A=1");
+ models.cookie_helper->AddCookieSamples(GURL("http://google.com"),
+ "B=1");
+ models.cookie_helper->AddCookieSamples(GURL("http://google.com.au"),
+ "A=1");
+
+ models.cookie_helper->AddCookieSamples(
+ GURL("https://www.example.com"),
+ "__Host-A=1; Path=/; Partitioned; Secure;",
+ net::CookiePartitionKey::FromURLForTesting(
+ GURL("https://google.com.au")));
+ models.cookie_helper->AddCookieSamples(
+ GURL("https://google.com.au"),
+ "__Host-A=1; Path=/; Partitioned; Secure;",
+ net::CookiePartitionKey::FromURLForTesting(
+ GURL("https://google.com.au")));
+ models.cookie_helper->AddCookieSamples(
+ GURL("https://www.another-example.com"),
+ "__Host-A=1; Path=/; Partitioned; Secure;",
+ net::CookiePartitionKey::FromURLForTesting(
+ GURL("https://google.com.au")));
+ models.cookie_helper->AddCookieSamples(
+ GURL("https://www.example.com"),
+ "__Host-A=1; Path=/; Partitioned; Secure;",
+ net::CookiePartitionKey::FromURLForTesting(
+ GURL("https://google.com")));
+
+ // Add an entry which will not be grouped with any other entries. This
+ // will require a placeholder origin to be correctly added & removed.
+ models.cookie_helper->AddCookieSamples(GURL("http://ungrouped.com"),
+ "A=1");
+ }
for (const auto& entry : browsing_data_model_entries) {
models.browsing_data_model->AddBrowsingData(
entry.data_key, *(entry.data_details.storage_types.begin()),
- entry.data_details.storage_size);
+ entry.data_details.storage_size, entry.data_details.cookie_count);
}
}));
}
@@ -971,13 +1016,13 @@ class SiteSettingsHandlerBaseTest : public testing::Test {
void SetupDefaultFirstPartySets(MockPrivacySandboxService* mock_service) {
EXPECT_CALL(*mock_service, GetFirstPartySetOwner(_))
.WillRepeatedly(
- [&](const GURL& url) -> absl::optional<net::SchemefulSite> {
+ [&](const GURL& url) -> std::optional<net::SchemefulSite> {
auto first_party_sets = GetTestFirstPartySets();
if (first_party_sets.count(net::SchemefulSite(url))) {
return first_party_sets[net::SchemefulSite(url)];
}
- return absl::nullopt;
+ return std::nullopt;
});
}
@@ -1047,9 +1092,13 @@ class SiteSettingsHandlerBaseTest : public testing::Test {
const ContentSettingsType kPermissionStorageAccess =
ContentSettingsType::STORAGE_ACCESS;
- // The number of listeners that are expected to fire when any content setting
- // is changed.
- const size_t kNumberContentSettingListeners = 2;
+ // The number of listeners that are expected to fire when notification content
+ // setting is changed.
+ const size_t kNumberNotificationsContentSettingListeners = 2;
+
+ // The number of listeners that are expected to fire when cookies content
+ // setting is changed.
+ const size_t kNumberCookiesContentSettingListeners = 1;
// Browsing data model constants. Here, instead of in the anon namespace, to
// avoid static GURL creation.
@@ -1093,6 +1142,106 @@ class SiteSettingsHandlerBaseTest : public testing::Test {
/*third_party_partitioning_allowed=*/true),
{{BrowsingDataModel::StorageType::kQuotaStorage}, 100, 0}};
+ const browsing_data_model_test_util::BrowsingDataEntry kHttpExampleCookie{
+ "example.com",
+ *(CreateCookieKey(GURL("http://example.com"), "A=1")),
+ {{BrowsingDataModel::StorageType::kCookie},
+ /*storage_size=*/0,
+ /*cookie_count=*/1}};
+
+ const browsing_data_model_test_util::BrowsingDataEntry kExampleLocalStorage{
+ "www.example.com",
+ blink::StorageKey::CreateFromStringForTesting("https://www.example.com/"),
+ {{BrowsingDataModel::StorageType::kLocalStorage},
+ /*storage_size=*/2,
+ /*cookie_count=*/0}};
+
+ const browsing_data_model_test_util::BrowsingDataEntry kHttpsWwwExampleCookie{
+ "www.example.com",
+ *(CreateCookieKey(GURL("https://www.example.com"), "B=1")),
+ {{BrowsingDataModel::StorageType::kCookie},
+ /*storage_size=*/0,
+ /*cookie_count=*/1}};
+
+ const browsing_data_model_test_util::BrowsingDataEntry
+ kPartitionedHttpsWwwExampleOnGoogleAuCookie{
+ "www.example.com",
+ *(CreateCookieKey(GURL("https://www.example.com"),
+ "__Host-A=1; Path=/; Partitioned; Secure;",
+ net::CookiePartitionKey::FromURLForTesting(
+ GURL("https://google.com.au")))),
+ {{BrowsingDataModel::StorageType::kCookie},
+ /*storage_size=*/0,
+ /*cookie_count=*/1}};
+
+ const browsing_data_model_test_util::BrowsingDataEntry
+ kPartitionedHttpsWwwExampleOnGoogleCookie{
+ "www.example.com",
+ *(CreateCookieKey(GURL("https://www.example.com"),
+ "__Host-A=1; Path=/; Partitioned; Secure;",
+ net::CookiePartitionKey::FromURLForTesting(
+ GURL("https://google.com")))),
+ {{BrowsingDataModel::StorageType::kCookie},
+ /*storage_size=*/0,
+ /*cookie_count=*/1}};
+
+ const browsing_data_model_test_util::BrowsingDataEntry kHttpAbcExampleCookie{
+ "abc.example.com",
+ *(CreateCookieKey(GURL("http://abc.example.com"), "C=1")),
+ {{BrowsingDataModel::StorageType::kCookie},
+ /*storage_size=*/0,
+ /*cookie_count=*/1}};
+
+ const browsing_data_model_test_util::BrowsingDataEntry kHttpGoogleCookieA{
+ "google.com",
+ *(CreateCookieKey(GURL("http://google.com"), "A=1")),
+ {{BrowsingDataModel::StorageType::kCookie},
+ /*storage_size=*/0,
+ /*cookie_count=*/1}};
+
+ const browsing_data_model_test_util::BrowsingDataEntry kHttpGoogleCookieB{
+ "google.com",
+ *(CreateCookieKey(GURL("http://google.com"), "B=1")),
+ {{BrowsingDataModel::StorageType::kCookie},
+ /*storage_size=*/0,
+ /*cookie_count=*/1}};
+
+ const browsing_data_model_test_util::BrowsingDataEntry kHttpGoogleAuCookie{
+ "google.com.au",
+ *(CreateCookieKey(GURL("http://google.com.au"), "A=1")),
+ {{BrowsingDataModel::StorageType::kCookie},
+ /*storage_size=*/0,
+ /*cookie_count=*/1}};
+
+ const browsing_data_model_test_util::BrowsingDataEntry
+ kPartitionedHttpsGoogleAu1PCookie{
+ "google.com.au",
+ *(CreateCookieKey(GURL("https://google.com.au"),
+ "__Host-A=1; Path=/; Partitioned; Secure;",
+ net::CookiePartitionKey::FromURLForTesting(
+ GURL("https://google.com.au")))),
+ {{BrowsingDataModel::StorageType::kCookie},
+ /*storage_size=*/0,
+ /*cookie_count=*/1}};
+
+ const browsing_data_model_test_util::BrowsingDataEntry
+ kPartitionedHttpsWwwAnotherExampleOnGoogleAuCookie{
+ "www.another-example.com",
+ *(CreateCookieKey(GURL("https://www.another-example.com"),
+ "__Host-A=1; Path=/; Partitioned; Secure;",
+ net::CookiePartitionKey::FromURLForTesting(
+ GURL("https://google.com.au")))),
+ {{BrowsingDataModel::StorageType::kCookie},
+ /*storage_size=*/0,
+ /*cookie_count=*/1}};
+
+ const browsing_data_model_test_util::BrowsingDataEntry kUngroupedHttpCookie{
+ "ungrouped.com",
+ *(CreateCookieKey(GURL("http://ungrouped.com"), "A=1")),
+ {{BrowsingDataModel::StorageType::kCookie},
+ /*storage_size=*/0,
+ /*cookie_count=*/1}};
+
private:
content::BrowserTaskEnvironment task_environment_{
base::test::TaskEnvironment::TimeSource::MOCK_TIME};
@@ -1109,15 +1258,212 @@ class SiteSettingsHandlerBaseTest : public testing::Test {
raw_ptr<MockPrivacySandboxService> mock_privacy_sandbox_service_;
};
+class SiteSettingsHandlerSchemeTest
+ : public SiteSettingsHandlerBaseTest,
+ public testing::WithParamInterface<std::tuple<bool, bool>> {
+ public:
+ SiteSettingsHandlerSchemeTest() {
+ if (IsDeprecateCookiesTreeModelEnabled()) {
+ feature_list_.InitAndEnableFeature(
+ browsing_data::features::kDeprecateCookiesTreeModel);
+ } else {
+ feature_list_.InitAndDisableFeature(
+ browsing_data::features::kDeprecateCookiesTreeModel);
+ }
+ }
+
+ protected:
+ bool IsHttps() { return std::get<0>(GetParam()); }
+ bool IsDeprecateCookiesTreeModelEnabled() { return std::get<1>(GetParam()); }
+
+ private:
+ base::test::ScopedFeatureList feature_list_;
+};
+
+// 1.True if testing for handle clear unpartitioned usage with
+// HTTPS scheme URL. When set to true, the tests use HTTPS scheme as origin.
+// When set to false, the tests use HTTP scheme as origin.
+// 2. Boolean to enable/disable the `kDeprecateCookiesTreeModel` feature.
+INSTANTIATE_TEST_SUITE_P(All,
+ SiteSettingsHandlerSchemeTest,
+ testing::Combine(testing::Bool(), testing::Bool()));
+
+TEST_P(SiteSettingsHandlerSchemeTest, StorageAccessExceptions_Description_All) {
+ const std::string kOrigin("google.com");
+ const std::string kEmbeddingOrigin("example.com");
+
+ const ContentSetting content_setting =
+ IsHttps() ? CONTENT_SETTING_ALLOW : CONTENT_SETTING_BLOCK;
+
+ SetContentSettingCustomScope(kOrigin, kEmbeddingOrigin,
+ kPermissionStorageAccess, content_setting);
+
+ base::Value::List get_exception_list_args;
+ get_exception_list_args.Append(kCallbackId);
+ get_exception_list_args.Append(
+ content_settings::ContentSettingToString(content_setting));
+ handler()->HandleGetStorageAccessExceptionList(get_exception_list_args);
+
+ // Verify that the grouped exception is correct.
+ ValidateStorageAccessList(/*expected_total_calls=*/2U,
+ /*expected_num_groups=*/1U);
+
+ ValidateStorageAccessException(
+ kOrigin, kOrigin, content_setting,
+ {{kEmbeddingOrigin, kEmbeddingOrigin, /*incognito=*/false}});
+}
+
+TEST_P(SiteSettingsHandlerSchemeTest, HandleClearUnpartitionedUsage) {
+ SetupModels();
+ std::vector<browsing_data_model_test_util::BrowsingDataEntry>
+ expected_browsing_data_model_entries;
+ if (IsDeprecateCookiesTreeModelEnabled()) {
+ expected_browsing_data_model_entries = {
+ kGoogleUnpartitionedEntry,
+ kExampleUnpartitionedEntry,
+ kGoogleOnExampleEntry,
+ kExampleOnGoogleSecureEntry,
+ kExampleOnGoogleInsecureEntry,
+ kExampleLocalStorage,
+ kHttpExampleCookie,
+ kHttpsWwwExampleCookie,
+ kPartitionedHttpsWwwExampleOnGoogleAuCookie,
+ kPartitionedHttpsWwwExampleOnGoogleCookie,
+ kHttpAbcExampleCookie,
+ kHttpGoogleCookieA,
+ kHttpGoogleCookieB,
+ kHttpGoogleAuCookie,
+ kPartitionedHttpsGoogleAu1PCookie,
+ kPartitionedHttpsWwwAnotherExampleOnGoogleAuCookie,
+ kUngroupedHttpCookie,
+ };
+ browsing_data_model_test_util::ValidateBrowsingDataEntries(
+ handler()->GetBrowsingDataModelForTesting(),
+ expected_browsing_data_model_entries);
+ } else {
+ EXPECT_EQ(28u, handler()
+ ->GetCookiesTreeModelForTesting()
+ ->GetRoot()
+ ->GetTotalNodeCount());
+ expected_browsing_data_model_entries = {
+ kGoogleUnpartitionedEntry, kExampleUnpartitionedEntry,
+ kGoogleOnExampleEntry, kExampleOnGoogleSecureEntry,
+ kExampleOnGoogleInsecureEntry,
+ };
+ browsing_data_model_test_util::ValidateBrowsingDataEntries(
+ handler()->GetBrowsingDataModelForTesting(),
+ expected_browsing_data_model_entries);
+ }
+
+ base::Value::List args;
+ args.Append(IsHttps() ? "https://www.example.com/"
+ : "http://www.example.com/");
+ handler()->HandleClearUnpartitionedUsage(args);
+
+ // Confirm that only the unpartitioned items for example.com have been
+ // cleared.
+ if (IsDeprecateCookiesTreeModelEnabled()) {
+ RemoveModelEntries(expected_browsing_data_model_entries,
+ {
+ kExampleUnpartitionedEntry,
+ kExampleLocalStorage,
+ kHttpsWwwExampleCookie,
+ });
+ browsing_data_model_test_util::ValidateBrowsingDataEntries(
+ handler()->GetBrowsingDataModelForTesting(),
+ expected_browsing_data_model_entries);
+ } else {
+ RemoveModelEntries(expected_browsing_data_model_entries,
+ {
+ kExampleUnpartitionedEntry,
+ });
+ browsing_data_model_test_util::ValidateBrowsingDataEntries(
+ handler()->GetBrowsingDataModelForTesting(),
+ expected_browsing_data_model_entries);
+
+ auto remaining_host_nodes = GetHostNodes(GURL("https://www.example.com"));
+
+ // There should only be partitioned cookie entries remaining for the site.
+ ASSERT_EQ(1u, remaining_host_nodes.size());
+ ASSERT_EQ(1u, remaining_host_nodes[0]->children().size());
+ const auto& storage_node = remaining_host_nodes[0]->children()[0];
+ ASSERT_EQ(CookieTreeNode::DetailedInfo::TYPE_COOKIES,
+ storage_node->GetDetailedInfo().node_type);
+ ASSERT_EQ(2u, storage_node->children().size());
+ for (const auto& cookie_node : storage_node->children()) {
+ const auto& cookie = cookie_node->GetDetailedInfo().cookie;
+ EXPECT_EQ("www.example.com", cookie->Domain());
+ EXPECT_TRUE(cookie->IsPartitioned());
+ }
+ }
+
+ args = base::Value::List();
+ args.Append("https://google.com.au/");
+ handler()->HandleClearUnpartitionedUsage(args);
+
+ if (IsDeprecateCookiesTreeModelEnabled()) {
+ // First-party partitioned storage should be cleared.
+ RemoveModelEntries(expected_browsing_data_model_entries,
+ {
+ kHttpGoogleAuCookie,
+ kPartitionedHttpsGoogleAu1PCookie,
+ });
+ browsing_data_model_test_util::ValidateBrowsingDataEntries(
+ handler()->GetBrowsingDataModelForTesting(),
+ expected_browsing_data_model_entries);
+ } else {
+ // Partitioned storage, even when keyed on the cookie domain site, should
+ // not be cleared.
+ auto remaining_host_nodes = GetHostNodes(GURL("https://google.com.au"));
+
+ // A single partitioned cookie should remain.
+ ASSERT_EQ(1u, remaining_host_nodes.size());
+ ASSERT_EQ(1u, remaining_host_nodes[0]->children().size());
+ const auto& cookies_node = remaining_host_nodes[0]->children()[0];
+ ASSERT_EQ(1u, cookies_node->children().size());
+ const auto& cookie_node = cookies_node->children()[0];
+ const auto& cookie = cookie_node->GetDetailedInfo().cookie;
+ EXPECT_TRUE(cookie->IsPartitioned());
+ }
+
+ args = base::Value::List();
+ args.Append("https://www.google.com/");
+ handler()->HandleClearUnpartitionedUsage(args);
+
+ // The unpartitioned Google and Example entries should be removed.
+ RemoveModelEntries(expected_browsing_data_model_entries,
+ {
+ kGoogleUnpartitionedEntry,
+ });
+ browsing_data_model_test_util::ValidateBrowsingDataEntries(
+ handler()->GetBrowsingDataModelForTesting(),
+ expected_browsing_data_model_entries);
+}
+
class SiteSettingsHandlerTest : public SiteSettingsHandlerBaseTest,
- public testing::WithParamInterface<bool> {};
+ public testing::WithParamInterface<bool> {
+ public:
+ SiteSettingsHandlerTest() {
+ if (IsDeprecateCookiesTreeModelEnabled()) {
+ feature_list_.InitAndEnableFeature(
+ browsing_data::features::kDeprecateCookiesTreeModel);
+ } else {
+ feature_list_.InitAndDisableFeature(
+ browsing_data::features::kDeprecateCookiesTreeModel);
+ }
+ }
+
+ protected:
+ bool IsDeprecateCookiesTreeModelEnabled() { return GetParam(); }
+
+ private:
+ base::test::ScopedFeatureList feature_list_;
+};
-// True if testing for handle clear unpartitioned usage with HTTPS scheme URL.
-// When set to true, the tests use HTTPS scheme as origin. When set to
-// false, the tests use HTTP scheme as origin.
+// Boolean to enable/disable the `kDeprecateCookiesTreeModel` feature.
INSTANTIATE_TEST_SUITE_P(All, SiteSettingsHandlerTest, testing::Bool());
-TEST_F(SiteSettingsHandlerTest, GetAndSetDefault) {
+TEST_P(SiteSettingsHandlerTest, GetAndSetDefault) {
// Test the JS -> C++ -> JS callback path for getting and setting defaults.
base::Value::List get_args;
get_args.Append(kCallbackId);
@@ -1142,7 +1488,7 @@ TEST_F(SiteSettingsHandlerTest, GetAndSetDefault) {
}
// Flaky on CrOS and Linux. https://crbug.com/930481
-TEST_F(SiteSettingsHandlerTest, GetAllSites) {
+TEST_P(SiteSettingsHandlerTest, GetAllSites) {
SetupModels();
base::Value::List get_all_sites_args;
@@ -1374,7 +1720,7 @@ TEST_F(SiteSettingsHandlerTest, GetAllSites) {
run_loop.RunUntilIdle();
}
-TEST_F(SiteSettingsHandlerTest, Cookies) {
+TEST_P(SiteSettingsHandlerTest, Cookies) {
base::Value::List get_all_sites_args;
get_all_sites_args.Append(kCallbackId);
@@ -1382,9 +1728,19 @@ TEST_F(SiteSettingsHandlerTest, Cookies) {
// AllSitesMap, returns the correct origin in GetAllSites.
// This corresponds to case 1 in InsertOriginIntoGroup.
{
- SetupModels(base::BindLambdaForTesting([](const TestModels& models) {
- models.cookie_helper->AddCookieSamples(GURL("http://c1.com"), "A=1");
- }));
+ if (IsDeprecateCookiesTreeModelEnabled()) {
+ SetupModels(base::BindLambdaForTesting([](const TestModels& models) {
+ models.browsing_data_model->AddBrowsingData(
+ *(CreateCookieKey(GURL("http://c1.com"), "A=1")),
+ BrowsingDataModel::StorageType::kCookie,
+ /*storage_size=*/0,
+ /*cookie_count=*/1);
+ }));
+ } else {
+ SetupModels(base::BindLambdaForTesting([](const TestModels& models) {
+ models.cookie_helper->AddCookieSamples(GURL("http://c1.com"), "A=1");
+ }));
+ }
base::Value::List site_groups = GetOnStorageFetchedSentList();
@@ -1406,10 +1762,25 @@ TEST_F(SiteSettingsHandlerTest, Cookies) {
// returned in GetAllSites.
// This corresponds to case 2 in InsertOriginIntoGroup.
{
- SetupModels(base::BindLambdaForTesting([](const TestModels& models) {
- models.cookie_helper->AddCookieSamples(GURL("https://c2.com"), "A=1");
- models.cookie_helper->AddCookieSamples(GURL("https://c2.com"), "B=1");
- }));
+ if (IsDeprecateCookiesTreeModelEnabled()) {
+ SetupModels(base::BindLambdaForTesting([](const TestModels& models) {
+ models.browsing_data_model->AddBrowsingData(
+ *(CreateCookieKey(GURL("https://c2.com"), "A=1")),
+ BrowsingDataModel::StorageType::kCookie,
+ /*storage_size=*/0,
+ /*cookie_count=*/1);
+ models.browsing_data_model->AddBrowsingData(
+ *(CreateCookieKey(GURL("https://c2.com"), "B=1")),
+ BrowsingDataModel::StorageType::kCookie,
+ /*storage_size=*/0,
+ /*cookie_count=*/1);
+ }));
+ } else {
+ SetupModels(base::BindLambdaForTesting([](const TestModels& models) {
+ models.cookie_helper->AddCookieSamples(GURL("https://c2.com"), "A=1");
+ models.cookie_helper->AddCookieSamples(GURL("https://c2.com"), "B=1");
+ }));
+ }
base::Value::List site_groups = GetOnStorageFetchedSentList();
@@ -1431,12 +1802,25 @@ TEST_F(SiteSettingsHandlerTest, Cookies) {
// one exists.
// This corresponds to case 3 in InsertOriginIntoGroup.
{
- SetupModels(base::BindLambdaForTesting([](const TestModels& models) {
- models.browsing_data_model->AddBrowsingData(
- url::Origin::Create(GURL("https://w.c3.com")),
- BrowsingDataModel::StorageType::kTrustTokens, 50);
- models.cookie_helper->AddCookieSamples(GURL("http://w.c3.com"), "A=1");
- }));
+ if (IsDeprecateCookiesTreeModelEnabled()) {
+ SetupModels(base::BindLambdaForTesting([](const TestModels& models) {
+ models.browsing_data_model->AddBrowsingData(
+ url::Origin::Create(GURL("https://w.c3.com")),
+ BrowsingDataModel::StorageType::kTrustTokens, 50);
+ models.browsing_data_model->AddBrowsingData(
+ *(CreateCookieKey(GURL("http://w.c3.com"), "A=1")),
+ BrowsingDataModel::StorageType::kCookie,
+ /*storage_size=*/0,
+ /*cookie_count=*/1);
+ }));
+ } else {
+ SetupModels(base::BindLambdaForTesting([](const TestModels& models) {
+ models.browsing_data_model->AddBrowsingData(
+ url::Origin::Create(GURL("https://w.c3.com")),
+ BrowsingDataModel::StorageType::kTrustTokens, 50);
+ models.cookie_helper->AddCookieSamples(GURL("http://w.c3.com"), "A=1");
+ }));
+ }
base::Value::List site_groups = GetOnStorageFetchedSentList();
@@ -1457,10 +1841,25 @@ TEST_F(SiteSettingsHandlerTest, Cookies) {
// Tests that placeholder cookie eTLD+1 origins get removed from AllSitesMap
// when a more specific origin is added later.
{
- SetupModels(base::BindLambdaForTesting([](const TestModels& models) {
- models.cookie_helper->AddCookieSamples(GURL("https://c4.com"), "B=1");
- models.cookie_helper->AddCookieSamples(GURL("https://w.c4.com"), "A=1");
- }));
+ if (IsDeprecateCookiesTreeModelEnabled()) {
+ SetupModels(base::BindLambdaForTesting([](const TestModels& models) {
+ models.browsing_data_model->AddBrowsingData(
+ *(CreateCookieKey(GURL("https://c4.com"), "B=1")),
+ BrowsingDataModel::StorageType::kCookie,
+ /*storage_size=*/0,
+ /*cookie_count=*/1);
+ models.browsing_data_model->AddBrowsingData(
+ *(CreateCookieKey(GURL("https://w.c4.com"), "A=1")),
+ BrowsingDataModel::StorageType::kCookie,
+ /*storage_size=*/0,
+ /*cookie_count=*/1);
+ }));
+ } else {
+ SetupModels(base::BindLambdaForTesting([](const TestModels& models) {
+ models.cookie_helper->AddCookieSamples(GURL("https://c4.com"), "B=1");
+ models.cookie_helper->AddCookieSamples(GURL("https://w.c4.com"), "A=1");
+ }));
+ }
base::Value::List site_groups = GetOnStorageFetchedSentList();
@@ -1479,7 +1878,7 @@ TEST_F(SiteSettingsHandlerTest, Cookies) {
}
}
-TEST_F(SiteSettingsHandlerTest, GetRecentSitePermissions) {
+TEST_P(SiteSettingsHandlerTest, GetRecentSitePermissions) {
// Constants used only in this test.
std::string kAllowed =
content_settings::ContentSettingToString(CONTENT_SETTING_ALLOW);
@@ -1587,7 +1986,7 @@ TEST_F(SiteSettingsHandlerTest, GetRecentSitePermissions) {
}
}
-TEST_F(SiteSettingsHandlerTest, OnStorageFetched) {
+TEST_P(SiteSettingsHandlerTest, OnStorageFetched) {
SetupModels();
handler()->ClearAllSitesMapForTesting();
@@ -1763,11 +2162,11 @@ TEST_F(SiteSettingsHandlerTest, OnStorageFetched) {
}
}
-TEST_F(SiteSettingsHandlerTest, InstalledApps) {
+TEST_P(SiteSettingsHandlerTest, InstalledApps) {
GURL start_url("http://abc.example.com/path");
RegisterWebApp(
profile(),
- MakeApp(web_app::GenerateAppId(/*manifest_id=*/absl::nullopt, start_url),
+ MakeApp(web_app::GenerateAppId(/*manifest_id=*/std::nullopt, start_url),
apps::AppType::kWeb, start_url.spec(), apps::Readiness::kReady,
apps::InstallReason::kSync));
@@ -1817,7 +2216,7 @@ TEST_F(SiteSettingsHandlerTest, InstalledApps) {
}
}
-TEST_F(SiteSettingsHandlerTest, IncognitoExceptions) {
+TEST_P(SiteSettingsHandlerTest, IncognitoExceptions) {
constexpr char kOriginToBlock[] = "https://www.blocked.com:443";
auto validate_exception = [&kOriginToBlock](const base::Value& exception) {
@@ -1874,7 +2273,7 @@ TEST_F(SiteSettingsHandlerTest, IncognitoExceptions) {
DestroyIncognitoProfile();
}
-TEST_F(SiteSettingsHandlerTest, ResetCategoryPermissionForEmbargoedOrigins) {
+TEST_P(SiteSettingsHandlerTest, ResetCategoryPermissionForEmbargoedOrigins) {
constexpr char kOriginToBlock[] = "https://www.blocked.com:443";
constexpr char kOriginToEmbargo[] = "https://embargoed.co.uk";
@@ -1958,7 +2357,7 @@ TEST_F(SiteSettingsHandlerTest, ResetCategoryPermissionForEmbargoedOrigins) {
}
}
-TEST_F(SiteSettingsHandlerTest, ResetCategoryPermissionForInvalidOrigins) {
+TEST_P(SiteSettingsHandlerTest, ResetCategoryPermissionForInvalidOrigins) {
constexpr char kInvalidOrigin[] = "example.com";
auto url = GURL(kInvalidOrigin);
EXPECT_FALSE(url.is_valid());
@@ -1989,7 +2388,7 @@ TEST_F(SiteSettingsHandlerTest, ResetCategoryPermissionForInvalidOrigins) {
handler()->HandleResetCategoryPermissionForPattern(reset_args);
}
-TEST_F(SiteSettingsHandlerTest, SetCategory_GetException_ResetCategory) {
+TEST_P(SiteSettingsHandlerTest, SetCategory_GetException_ResetCategory) {
const std::string google("https://www.google.com:443");
{
// Test the JS -> C++ -> JS callback path for configuring origins, by
@@ -2036,7 +2435,7 @@ TEST_F(SiteSettingsHandlerTest, SetCategory_GetException_ResetCategory) {
ValidateNoOrigin(6U);
}
-TEST_F(SiteSettingsHandlerTest, NotificationPermissionRevokeUkm) {
+TEST_P(SiteSettingsHandlerTest, NotificationPermissionRevokeUkm) {
const std::string google("https://www.google.com");
ukm::TestAutoSetUkmRecorder ukm_recorder;
auto* history_service = HistoryServiceFactory::GetForProfile(
@@ -2075,7 +2474,7 @@ TEST_F(SiteSettingsHandlerTest, NotificationPermissionRevokeUkm) {
auto entries = ukm_recorder.GetEntriesByName("Permission");
EXPECT_EQ(1u, entries.size());
- auto* entry = entries.front();
+ auto* entry = entries.front().get();
ukm_recorder.ExpectEntrySourceHasUrl(entry, GURL(google));
EXPECT_EQ(
@@ -2095,7 +2494,7 @@ TEST_F(SiteSettingsHandlerTest, NotificationPermissionRevokeUkm) {
#else
#define MAYBE_DefaultSettingSource DefaultSettingSource
#endif
-TEST_F(SiteSettingsHandlerTest, MAYBE_DefaultSettingSource) {
+TEST_P(SiteSettingsHandlerTest, MAYBE_DefaultSettingSource) {
// Use a non-default port to verify the display name does not strip this
// off.
const std::string google("https://www.google.com:183");
@@ -2171,7 +2570,7 @@ TEST_F(SiteSettingsHandlerTest, MAYBE_DefaultSettingSource) {
site_settings::SiteSettingSource::kPolicy, 10U);
}
-TEST_F(SiteSettingsHandlerTest, GetAndSetOriginPermissions) {
+TEST_P(SiteSettingsHandlerTest, GetAndSetOriginPermissions) {
const std::string origin_with_port("https://www.example.com:443");
// The display name won't show the port if it's default for that scheme.
const std::string origin("www.example.com");
@@ -2214,7 +2613,7 @@ TEST_F(SiteSettingsHandlerTest, GetAndSetOriginPermissions) {
site_settings::SiteSettingSource::kDefault, 4U);
}
-TEST_F(SiteSettingsHandlerTest, GetAndSetForInvalidURLs) {
+TEST_P(SiteSettingsHandlerTest, GetAndSetForInvalidURLs) {
const std::string origin("arbitrary string");
EXPECT_FALSE(GURL(origin).is_valid());
base::Value::List get_args;
@@ -2250,7 +2649,7 @@ TEST_F(SiteSettingsHandlerTest, GetAndSetForInvalidURLs) {
site_settings::SiteSettingSource::kInsecureOrigin, 2U);
}
-TEST_F(SiteSettingsHandlerTest, SetCategoryPermissionForPattern) {
+TEST_P(SiteSettingsHandlerTest, SetCategoryPermissionForPattern) {
const std::string kOrigin = "https://www.example.com:443";
base::Value::List set_args;
@@ -2262,7 +2661,8 @@ TEST_F(SiteSettingsHandlerTest, SetCategoryPermissionForPattern) {
set_args.Append(false); // Incognito.
handler()->HandleSetCategoryPermissionForPattern(set_args);
- EXPECT_EQ(kNumberContentSettingListeners, web_ui()->call_data().size());
+ EXPECT_EQ(kNumberNotificationsContentSettingListeners,
+ web_ui()->call_data().size());
HostContentSettingsMap* map =
HostContentSettingsMapFactory::GetForProfile(profile());
@@ -2272,7 +2672,7 @@ TEST_F(SiteSettingsHandlerTest, SetCategoryPermissionForPattern) {
kPermissionNotifications));
}
-TEST_F(SiteSettingsHandlerTest, SetCategoryPermissionForPattern_WildCard) {
+TEST_P(SiteSettingsHandlerTest, SetCategoryPermissionForPattern_WildCard) {
const std::string kWildcardOrigin = "[*.]example.com";
const std::string kRealOrigin = "https://www.example.com";
@@ -2285,7 +2685,8 @@ TEST_F(SiteSettingsHandlerTest, SetCategoryPermissionForPattern_WildCard) {
set_args.Append(false); // Incognito.
handler()->HandleSetCategoryPermissionForPattern(set_args);
- EXPECT_EQ(kNumberContentSettingListeners, web_ui()->call_data().size());
+ EXPECT_EQ(kNumberNotificationsContentSettingListeners,
+ web_ui()->call_data().size());
HostContentSettingsMap* map =
HostContentSettingsMapFactory::GetForProfile(profile());
@@ -2295,7 +2696,7 @@ TEST_F(SiteSettingsHandlerTest, SetCategoryPermissionForPattern_WildCard) {
kPermissionNotifications));
}
-TEST_F(SiteSettingsHandlerTest,
+TEST_P(SiteSettingsHandlerTest,
SetCategoryPermissionForPattern_SecondaryPattern) {
const std::string kOrigin = "https://www.example.com:443";
const std::string kSecondary = "https://www.secondary.com:443";
@@ -2320,7 +2721,7 @@ TEST_F(SiteSettingsHandlerTest,
kPermissionStorageAccess));
}
-TEST_F(SiteSettingsHandlerTest, SetCategoryPermissionForPattern_Incognito) {
+TEST_P(SiteSettingsHandlerTest, SetCategoryPermissionForPattern_Incognito) {
const std::string kOrigin = "https://www.example.com:443";
CreateIncognitoProfile();
@@ -2374,7 +2775,7 @@ TEST_F(SiteSettingsHandlerTest, SetCategoryPermissionForPattern_Incognito) {
DestroyIncognitoProfile();
}
-TEST_F(SiteSettingsHandlerTest,
+TEST_P(SiteSettingsHandlerTest,
SetCategoryPermissionForPattern_ExceptionHelpers) {
ContentSettingsPattern pattern =
ContentSettingsPattern::FromString("[*.]google.com");
@@ -2431,7 +2832,7 @@ TEST_F(SiteSettingsHandlerTest,
handler()->HandleSetCategoryPermissionForPattern(args);
}
-TEST_F(SiteSettingsHandlerTest, SetCategoryPermissionForPattern_SessionOnly) {
+TEST_P(SiteSettingsHandlerTest, SetCategoryPermissionForPattern_SessionOnly) {
const std::string kGoogleWithPort("https://www.google.com:443");
base::Value::List set_args;
set_args.Append(kGoogleWithPort); // Primary pattern.
@@ -2442,10 +2843,11 @@ TEST_F(SiteSettingsHandlerTest, SetCategoryPermissionForPattern_SessionOnly) {
set_args.Append(false); // Incognito.
handler()->HandleSetCategoryPermissionForPattern(set_args);
- EXPECT_EQ(kNumberContentSettingListeners, web_ui()->call_data().size());
+ EXPECT_EQ(kNumberCookiesContentSettingListeners,
+ web_ui()->call_data().size());
}
-TEST_F(SiteSettingsHandlerTest, ExtensionDisplayName) {
+TEST_P(SiteSettingsHandlerTest, ExtensionDisplayName) {
// When the extension is loaded, displayName is the extension's name and id.
auto extension = LoadExtension(kExtensionName);
auto extension_url = extension->url().spec();
@@ -2485,7 +2887,7 @@ TEST_F(SiteSettingsHandlerTest, ExtensionDisplayName) {
}
}
-TEST_F(SiteSettingsHandlerTest, PatternsAndContentType) {
+TEST_P(SiteSettingsHandlerTest, PatternsAndContentType) {
unsigned counter = 1;
for (const auto& test_case : kPatternsAndContentTypeTestCases) {
base::Value::List args;
@@ -2499,7 +2901,7 @@ TEST_F(SiteSettingsHandlerTest, PatternsAndContentType) {
}
}
-TEST_F(SiteSettingsHandlerTest, Incognito) {
+TEST_P(SiteSettingsHandlerTest, Incognito) {
base::Value::List args;
handler()->HandleUpdateIncognitoStatus(args);
ValidateIncognitoExists(false, 1U);
@@ -2511,7 +2913,7 @@ TEST_F(SiteSettingsHandlerTest, Incognito) {
ValidateIncognitoExists(false, 3U);
}
-TEST_F(SiteSettingsHandlerTest, ZoomLevels) {
+TEST_P(SiteSettingsHandlerTest, ZoomLevels) {
std::string http_host("www.google.com");
std::string error_host("chromewebdata");
std::string data_url("data:text/plain;base64,SGVsbG8sIFdvcmxkIQ==");
@@ -2547,7 +2949,7 @@ TEST_F(SiteSettingsHandlerTest, ZoomLevels) {
EXPECT_EQ(default_level, level);
}
-TEST_F(SiteSettingsHandlerTest, TemporaryCookieExceptions) {
+TEST_P(SiteSettingsHandlerTest, TemporaryCookieExceptions) {
// Set a temporary exception directly, instead of relying on any helpers that
// have duration configurable via feature parameters.
constexpr int kExpirationDurationInDays = 100;
@@ -2585,13 +2987,14 @@ TEST_F(SiteSettingsHandlerTest, TemporaryCookieExceptions) {
CHECK_DEREF(exception_list[0].GetDict().FindString("description")));
}
-class SiteSettingsHandlerIsolatedWebAppTest : public SiteSettingsHandlerTest {
+class SiteSettingsHandlerIsolatedWebAppTest
+ : public SiteSettingsHandlerBaseTest {
public:
void SetUp() override {
web_app::test::AwaitStartWebAppProviderAndSubsystems(profile());
InstallIsolatedWebApp(iwa_url(), "IWA Name");
- SiteSettingsHandlerTest::SetUp();
+ SiteSettingsHandlerBaseTest::SetUp();
}
protected:
@@ -2733,7 +3136,11 @@ class SiteSettingsHandlerInfobarTest : public BrowserWithTestWindowTest {
CreateBrowser(profile(), browser()->type(), false, window2_.get());
window3_ = CreateBrowserWindow();
- TestingProfile* profile2_ = CreateProfile2();
+ // Creates the second profile used by this test.
+ TestingProfile* profile2_ = profile_manager()->CreateTestingProfile(
+ "testing_profile2@test", nullptr, std::u16string(), 0,
+ GetTestingFactories());
+
browser3_ =
CreateBrowser(profile2_, browser()->type(), false, window3_.get());
@@ -2801,14 +3208,6 @@ class SiteSettingsHandlerInfobarTest : public BrowserWithTestWindowTest {
// browser2 and browser() which are from profile()
Browser* browser3() { return browser3_.get(); }
- // Creates the second profile used by this test. The caller doesn't own the
- // return value.
- TestingProfile* CreateProfile2() {
- return profile_manager()->CreateTestingProfile("testing_profile2@test",
- nullptr, std::u16string(), 0,
- GetTestingFactories());
- }
-
const std::string_view kNotifications =
site_settings::ContentSettingsTypeToGroupName(
ContentSettingsType::NOTIFICATIONS);
@@ -3019,7 +3418,7 @@ TEST_F(SiteSettingsHandlerInfobarTest,
EXPECT_TRUE(url::IsSameOriginWith(origin, tab_url));
}
-TEST_F(SiteSettingsHandlerTest, BlockAutoplay_SendOnRequest) {
+TEST_P(SiteSettingsHandlerTest, BlockAutoplay_SendOnRequest) {
base::Value::List args;
handler()->HandleFetchBlockAutoplayStatus(args);
@@ -3027,7 +3426,7 @@ TEST_F(SiteSettingsHandlerTest, BlockAutoplay_SendOnRequest) {
ValidateBlockAutoplay(true, true);
}
-TEST_F(SiteSettingsHandlerTest, BlockAutoplay_SoundSettingUpdate) {
+TEST_P(SiteSettingsHandlerTest, BlockAutoplay_SoundSettingUpdate) {
SetSoundContentSettingDefault(CONTENT_SETTING_BLOCK);
base::RunLoop().RunUntilIdle();
@@ -3041,7 +3440,7 @@ TEST_F(SiteSettingsHandlerTest, BlockAutoplay_SoundSettingUpdate) {
ValidateBlockAutoplay(true, true);
}
-TEST_F(SiteSettingsHandlerTest, BlockAutoplay_PrefUpdate) {
+TEST_P(SiteSettingsHandlerTest, BlockAutoplay_PrefUpdate) {
profile()->GetPrefs()->SetBoolean(prefs::kBlockAutoplayEnabled, false);
base::RunLoop().RunUntilIdle();
@@ -3055,7 +3454,7 @@ TEST_F(SiteSettingsHandlerTest, BlockAutoplay_PrefUpdate) {
ValidateBlockAutoplay(true, true);
}
-TEST_F(SiteSettingsHandlerTest, BlockAutoplay_Update) {
+TEST_P(SiteSettingsHandlerTest, BlockAutoplay_Update) {
EXPECT_TRUE(profile()->GetPrefs()->GetBoolean(prefs::kBlockAutoplayEnabled));
base::Value::List data;
@@ -3065,7 +3464,7 @@ TEST_F(SiteSettingsHandlerTest, BlockAutoplay_Update) {
EXPECT_FALSE(profile()->GetPrefs()->GetBoolean(prefs::kBlockAutoplayEnabled));
}
-TEST_F(SiteSettingsHandlerTest, ExcludeWebUISchemesInLists) {
+TEST_P(SiteSettingsHandlerTest, ExcludeWebUISchemesInLists) {
SetupModels();
const ContentSettingsType content_settings_type =
ContentSettingsType::NOTIFICATIONS;
@@ -3154,7 +3553,7 @@ TEST_F(SiteSettingsHandlerTest, ExcludeWebUISchemesInLists) {
// GetOriginPermissions() returns the allowlisted exception. We explicitly
// return this, so developers can easily test things (e.g. by navigating to
// chrome://settings/content/siteDetails?site=chrome://example).
-TEST_F(SiteSettingsHandlerTest, IncludeWebUISchemesInGetOriginPermissions) {
+TEST_P(SiteSettingsHandlerTest, IncludeWebUISchemesInGetOriginPermissions) {
const ContentSettingsType content_settings_type =
ContentSettingsType::NOTIFICATIONS;
@@ -3189,7 +3588,7 @@ TEST_F(SiteSettingsHandlerTest, IncludeWebUISchemesInGetOriginPermissions) {
}
}
-TEST_F(SiteSettingsHandlerTest, StorageAccessExceptions_DiffPatterns) {
+TEST_P(SiteSettingsHandlerTest, StorageAccessExceptions_DiffPatterns) {
const std::string kOrigin("https://[*.]google.com:443");
const std::string kDisplayName("google.com");
@@ -3231,7 +3630,7 @@ TEST_F(SiteSettingsHandlerTest, StorageAccessExceptions_DiffPatterns) {
/*index=*/1U);
}
-TEST_F(SiteSettingsHandlerTest, StorageAccessExceptions_SamePrimaryPattern) {
+TEST_P(SiteSettingsHandlerTest, StorageAccessExceptions_SamePrimaryPattern) {
const std::string kOrigin("https://[*.]google.com:443");
const std::string kDisplayName("google.com");
@@ -3264,7 +3663,7 @@ TEST_F(SiteSettingsHandlerTest, StorageAccessExceptions_SamePrimaryPattern) {
/*index=*/0U);
}
-TEST_F(SiteSettingsHandlerTest, StorageAccessExceptions_DiffType) {
+TEST_P(SiteSettingsHandlerTest, StorageAccessExceptions_DiffType) {
const std::string kOrigin("https://[*.]google.com:443");
const std::string kEmbeddingOrigin("https://[*.]example.com:443");
@@ -3281,7 +3680,7 @@ TEST_F(SiteSettingsHandlerTest, StorageAccessExceptions_DiffType) {
ValidateNoOrigin(2U);
}
-TEST_F(SiteSettingsHandlerTest, StorageAccessExceptions_AutoGranted) {
+TEST_P(SiteSettingsHandlerTest, StorageAccessExceptions_AutoGranted) {
const std::string kOrigin("https://[*.]google.com:443");
const std::string kEmbeddingOrigin("https://[*.]example.com:443");
@@ -3302,7 +3701,7 @@ TEST_F(SiteSettingsHandlerTest, StorageAccessExceptions_AutoGranted) {
ValidateNoOrigin(2U);
}
-TEST_F(SiteSettingsHandlerTest, StorageAccessExceptions_Incognito) {
+TEST_P(SiteSettingsHandlerTest, StorageAccessExceptions_Incognito) {
const std::string kOrigin("https://[*.]google.com:443");
const std::string kDisplayName("google.com");
@@ -3331,7 +3730,7 @@ TEST_F(SiteSettingsHandlerTest, StorageAccessExceptions_Incognito) {
{{kEmbeddingOrigin, kEmbeddingDisplayName, /*incognito=*/true}});
}
-TEST_F(SiteSettingsHandlerTest, StorageAccessExceptions_NormalAndIncognito) {
+TEST_P(SiteSettingsHandlerTest, StorageAccessExceptions_NormalAndIncognito) {
const std::string kOrigin("https://[*.]google.com:443");
const std::string kDisplayName("google.com");
@@ -3389,7 +3788,7 @@ TEST_F(SiteSettingsHandlerTest, StorageAccessExceptions_NormalAndIncognito) {
/*index=*/0U);
}
-TEST_F(SiteSettingsHandlerTest,
+TEST_P(SiteSettingsHandlerTest,
StorageAccessExceptions_NormalAndIncognito_SamePatterns) {
const std::string kOrigin("https://[*.]google.com:443");
const std::string kDisplayName("google.com");
@@ -3423,7 +3822,7 @@ TEST_F(SiteSettingsHandlerTest,
{kEmbeddingOrigin, kEmbeddingDisplayName, /*incognito=*/true}});
}
-TEST_F(SiteSettingsHandlerTest, StorageAccessExceptions_Extension) {
+TEST_P(SiteSettingsHandlerTest, StorageAccessExceptions_Extension) {
auto extension = LoadExtension(kExtensionName);
auto extension_url = extension->url().spec();
@@ -3461,32 +3860,7 @@ TEST_F(SiteSettingsHandlerTest, StorageAccessExceptions_Extension) {
{{kEmbeddingOrigin, kEmbeddingDisplayName, /*incognito=*/false}});
}
-TEST_P(SiteSettingsHandlerTest, StorageAccessExceptions_Description_All) {
- const std::string kOrigin("google.com");
- const std::string kEmbeddingOrigin("example.com");
-
- const ContentSetting content_setting =
- GetParam() ? CONTENT_SETTING_ALLOW : CONTENT_SETTING_BLOCK;
-
- SetContentSettingCustomScope(kOrigin, kEmbeddingOrigin,
- kPermissionStorageAccess, content_setting);
-
- base::Value::List get_exception_list_args;
- get_exception_list_args.Append(kCallbackId);
- get_exception_list_args.Append(
- content_settings::ContentSettingToString(content_setting));
- handler()->HandleGetStorageAccessExceptionList(get_exception_list_args);
-
- // Verify that the grouped exception is correct.
- ValidateStorageAccessList(/*expected_total_calls=*/2U,
- /*expected_num_groups=*/1U);
-
- ValidateStorageAccessException(
- kOrigin, kOrigin, content_setting,
- {{kEmbeddingOrigin, kEmbeddingOrigin, /*incognito=*/false}});
-}
-
-TEST_F(SiteSettingsHandlerTest, StorageAccessExceptions_Description_Embargoed) {
+TEST_P(SiteSettingsHandlerTest, StorageAccessExceptions_Description_Embargoed) {
const std::string kOrigin("https://google.com:443");
const std::string kDisplayName("google.com");
@@ -3519,7 +3893,7 @@ TEST_F(SiteSettingsHandlerTest, StorageAccessExceptions_Description_Embargoed) {
/*expected_incognito=*/false);
}
-TEST_F(SiteSettingsHandlerTest,
+TEST_P(SiteSettingsHandlerTest,
StorageAccessExceptions_Description_EmbargoedTwoProfiles) {
const std::string kOrigin("https://google.com:443");
const std::string kDisplayName("google.com");
@@ -3661,9 +4035,9 @@ TEST_P(StorageAccessSiteSettingsHandlerLifetimeTest,
}
class PersistentPermissionsSiteSettingsHandlerTest
- : public SiteSettingsHandlerTest {
+ : public SiteSettingsHandlerBaseTest {
void SetUp() override {
- SiteSettingsHandlerTest::SetUp();
+ SiteSettingsHandlerBaseTest::SetUp();
handler_ = std::make_unique<SiteSettingsHandler>(&profile_);
handler_->set_web_ui(web_ui());
handler_->AllowJavascript();
@@ -3678,6 +4052,8 @@ class PersistentPermissionsSiteSettingsHandlerTest
// when Persistent Permissions is launched.
// Enable Persisted Permissions.
+ // TODO(crbug.com/1467574): Remove `kFileSystemAccessPersistentPermissions`
+ // flag after FSA Persistent Permissions feature launch.
feature_list_.InitAndEnableFeature(
features::kFileSystemAccessPersistentPermissions);
}
@@ -4547,16 +4923,13 @@ class SiteSettingsHandlerChooserExceptionTest
// HandleSetOriginPermissions caused WebUIListenerCallbacks:
// * contentSettingsChooserPermissionChanged once
- // * contentSettingsSitePermissionChanged for each visible content type
+ // * contentSettingsSitePermissionChanged once
// * contentSettingsSitePermissionChanged again for `content_type()`
- const size_t kContentSettingsTypeCount =
- site_settings::GetVisiblePermissionCategories().size();
- EXPECT_EQ(kContentSettingsTypeCount + 3, web_ui()->call_data().size());
+ EXPECT_EQ(3u, web_ui()->call_data().size());
{
const base::Value::List& exceptions =
- GetChooserExceptionListFromWebUiCallData(
- group_name,
- /*expected_total_calls=*/kContentSettingsTypeCount + 4);
+ GetChooserExceptionListFromWebUiCallData(group_name,
+ /*expected_total_calls=*/4u);
switch (content_type()) {
case ContentSettingsType::BLUETOOTH_CHOOSER_DATA:
EXPECT_TRUE(exceptions.empty());
@@ -4627,16 +5000,11 @@ class SiteSettingsHandlerChooserExceptionTest
handler()->HandleSetOriginPermissions(args);
GetChooserContext(profile())->FlushScheduledSaveSettingsCalls();
- // HandleSetOriginPermissions caused WebUIListenerCallbacks:
- // * contentSettingsSitePermissionChanged for each visible content type
- const size_t kContentSettingsTypeCount =
- site_settings::GetVisiblePermissionCategories().size();
- EXPECT_EQ(kContentSettingsTypeCount + 1, web_ui()->call_data().size());
+ EXPECT_EQ(1u, web_ui()->call_data().size());
{
const base::Value::List& exceptions =
- GetChooserExceptionListFromWebUiCallData(
- group_name,
- /*expected_total_calls=*/kContentSettingsTypeCount + 2);
+ GetChooserExceptionListFromWebUiCallData(group_name,
+ /*expected_total_calls=*/2u);
switch (content_type()) {
case ContentSettingsType::BLUETOOTH_CHOOSER_DATA:
EXPECT_TRUE(exceptions.empty());
@@ -5562,22 +5930,47 @@ TEST_F(SiteSettingsHandlerUsbTest, HandleSetOriginPermissionsPolicyOnly) {
TestHandleSetOriginPermissionsPolicyOnly();
}
-TEST_F(SiteSettingsHandlerTest, HandleClearSiteGroupDataAndCookies) {
+TEST_P(SiteSettingsHandlerTest, HandleClearSiteGroupDataAndCookies) {
SetupModels();
-
- EXPECT_EQ(28u, handler()
- ->GetCookiesTreeModelForTesting()
- ->GetRoot()
- ->GetTotalNodeCount());
- browsing_data_model_test_util::ValidateBrowsingDataEntries(
- handler()->GetBrowsingDataModelForTesting(),
- {
- kGoogleUnpartitionedEntry,
- kExampleUnpartitionedEntry,
- kGoogleOnExampleEntry,
- kExampleOnGoogleSecureEntry,
- kExampleOnGoogleInsecureEntry,
- });
+ std::vector<browsing_data_model_test_util::BrowsingDataEntry>
+ expected_browsing_data_model_entries;
+ if (IsDeprecateCookiesTreeModelEnabled()) {
+ expected_browsing_data_model_entries = {
+ kGoogleUnpartitionedEntry,
+ kExampleUnpartitionedEntry,
+ kGoogleOnExampleEntry,
+ kExampleOnGoogleSecureEntry,
+ kExampleOnGoogleInsecureEntry,
+ kExampleLocalStorage,
+ kHttpExampleCookie,
+ kHttpsWwwExampleCookie,
+ kPartitionedHttpsWwwExampleOnGoogleAuCookie,
+ kPartitionedHttpsWwwExampleOnGoogleCookie,
+ kHttpAbcExampleCookie,
+ kHttpGoogleCookieA,
+ kHttpGoogleCookieB,
+ kHttpGoogleAuCookie,
+ kPartitionedHttpsGoogleAu1PCookie,
+ kPartitionedHttpsWwwAnotherExampleOnGoogleAuCookie,
+ kUngroupedHttpCookie,
+ };
+ browsing_data_model_test_util::ValidateBrowsingDataEntries(
+ handler()->GetBrowsingDataModelForTesting(),
+ expected_browsing_data_model_entries);
+ } else {
+ EXPECT_EQ(28u, handler()
+ ->GetCookiesTreeModelForTesting()
+ ->GetRoot()
+ ->GetTotalNodeCount());
+ expected_browsing_data_model_entries = {
+ kGoogleUnpartitionedEntry, kExampleUnpartitionedEntry,
+ kGoogleOnExampleEntry, kExampleOnGoogleSecureEntry,
+ kExampleOnGoogleInsecureEntry,
+ };
+ browsing_data_model_test_util::ValidateBrowsingDataEntries(
+ handler()->GetBrowsingDataModelForTesting(),
+ expected_browsing_data_model_entries);
+ }
auto verify_site_group = [](const base::Value& site_group,
std::string expected_etld_plus1) {
@@ -5599,41 +5992,57 @@ TEST_F(SiteSettingsHandlerTest, HandleClearSiteGroupDataAndCookies) {
// Items partitioned on example.com, as well as unpartitioned example.com
// storage should be removed.
- browsing_data_model_test_util::ValidateBrowsingDataEntries(
- handler()->GetBrowsingDataModelForTesting(),
- {
- kGoogleUnpartitionedEntry,
- kExampleOnGoogleSecureEntry,
- kExampleOnGoogleInsecureEntry,
- });
-
- // All host nodes for non-secure example.com, and abc.example.com, which do
- // not have any unpartitioned storage, should have been removed.
- ASSERT_EQ(0u, GetHostNodes(GURL("http://example.com")).size());
- ASSERT_EQ(0u, GetHostNodes(GURL("http://abc.example.com")).size());
-
- // Confirm that partitioned cookies for www.example.com have not been deleted,
- auto remaining_host_nodes = GetHostNodes(GURL("https://www.example.com"));
-
- // example.com storage partitioned on other sites should still remain.
- {
- ASSERT_EQ(1u, remaining_host_nodes.size());
- ASSERT_EQ(1u, remaining_host_nodes[0]->children().size());
- const auto& storage_node = remaining_host_nodes[0]->children()[0];
- ASSERT_EQ(CookieTreeNode::DetailedInfo::TYPE_COOKIES,
- storage_node->GetDetailedInfo().node_type);
- ASSERT_EQ(2u, storage_node->children().size());
- for (const auto& cookie_node : storage_node->children()) {
- const auto& cookie = cookie_node->GetDetailedInfo().cookie;
- EXPECT_EQ("www.example.com", cookie->Domain());
- EXPECT_TRUE(cookie->IsPartitioned());
+ if (IsDeprecateCookiesTreeModelEnabled()) {
+ RemoveModelEntries(expected_browsing_data_model_entries,
+ {
+ kExampleUnpartitionedEntry,
+ kExampleLocalStorage,
+ kHttpExampleCookie,
+ kHttpsWwwExampleCookie,
+ kHttpAbcExampleCookie,
+ kGoogleOnExampleEntry,
+ });
+ browsing_data_model_test_util::ValidateBrowsingDataEntries(
+ handler()->GetBrowsingDataModelForTesting(),
+ expected_browsing_data_model_entries);
+ } else {
+ RemoveModelEntries(expected_browsing_data_model_entries,
+ {
+ kExampleUnpartitionedEntry,
+ kGoogleOnExampleEntry,
+ });
+ browsing_data_model_test_util::ValidateBrowsingDataEntries(
+ handler()->GetBrowsingDataModelForTesting(),
+ expected_browsing_data_model_entries);
+ // All host nodes for non-secure example.com, and abc.example.com, which do
+ // not have any unpartitioned storage, should have been removed.
+ ASSERT_EQ(0u, GetHostNodes(GURL("http://example.com")).size());
+ ASSERT_EQ(0u, GetHostNodes(GURL("http://abc.example.com")).size());
+
+ // Confirm that partitioned cookies for www.example.com have not been
+ // deleted,
+ auto remaining_host_nodes = GetHostNodes(GURL("https://www.example.com"));
+
+ // example.com storage partitioned on other sites should still remain.
+ {
+ ASSERT_EQ(1u, remaining_host_nodes.size());
+ ASSERT_EQ(1u, remaining_host_nodes[0]->children().size());
+ const auto& storage_node = remaining_host_nodes[0]->children()[0];
+ ASSERT_EQ(CookieTreeNode::DetailedInfo::TYPE_COOKIES,
+ storage_node->GetDetailedInfo().node_type);
+ ASSERT_EQ(2u, storage_node->children().size());
+ for (const auto& cookie_node : storage_node->children()) {
+ const auto& cookie = cookie_node->GetDetailedInfo().cookie;
+ EXPECT_EQ("www.example.com", cookie->Domain());
+ EXPECT_TRUE(cookie->IsPartitioned());
+ }
}
- }
- EXPECT_EQ(19u, handler()
- ->GetCookiesTreeModelForTesting()
- ->GetRoot()
- ->GetTotalNodeCount());
+ EXPECT_EQ(19u, handler()
+ ->GetCookiesTreeModelForTesting()
+ ->GetRoot()
+ ->GetTotalNodeCount());
+ }
storage_and_cookie_list = GetOnStorageFetchedSentList();
EXPECT_EQ(3U, storage_and_cookie_list.size());
@@ -5645,14 +6054,29 @@ TEST_F(SiteSettingsHandlerTest, HandleClearSiteGroupDataAndCookies) {
args.Append(GroupingKey::CreateFromEtldPlus1("google.com").Serialize());
handler()->HandleClearSiteGroupDataAndCookies(args);
-
- EXPECT_EQ(14u, handler()
- ->GetCookiesTreeModelForTesting()
- ->GetRoot()
- ->GetTotalNodeCount());
- // Google's 1P storage, as well as example on Google should have been cleared.
- browsing_data_model_test_util::ValidateBrowsingDataEntries(
- handler()->GetBrowsingDataModelForTesting(), {});
+ if (IsDeprecateCookiesTreeModelEnabled()) {
+ RemoveModelEntries(expected_browsing_data_model_entries,
+ {
+ kGoogleUnpartitionedEntry,
+ kExampleOnGoogleSecureEntry,
+ kExampleOnGoogleInsecureEntry,
+ kHttpGoogleCookieA,
+ kHttpGoogleCookieB,
+ kPartitionedHttpsWwwExampleOnGoogleCookie,
+ });
+ browsing_data_model_test_util::ValidateBrowsingDataEntries(
+ handler()->GetBrowsingDataModelForTesting(),
+ expected_browsing_data_model_entries);
+ } else {
+ EXPECT_EQ(14u, handler()
+ ->GetCookiesTreeModelForTesting()
+ ->GetRoot()
+ ->GetTotalNodeCount());
+ // Google's 1P storage, as well as example on Google should have been
+ // cleared.
+ browsing_data_model_test_util::ValidateBrowsingDataEntries(
+ handler()->GetBrowsingDataModelForTesting(), {});
+ }
storage_and_cookie_list = GetOnStorageFetchedSentList();
EXPECT_EQ(2U, storage_and_cookie_list.size());
@@ -5665,18 +6089,31 @@ TEST_F(SiteSettingsHandlerTest, HandleClearSiteGroupDataAndCookies) {
handler()->HandleClearSiteGroupDataAndCookies(args);
// No nodes representing storage partitioned on google.com.au should be
// present.
- for (const auto& host_node :
- handler()->GetCookiesTreeModelForTesting()->GetRoot()->children()) {
- for (const auto& storage_node : host_node->children()) {
- if (storage_node->GetDetailedInfo().node_type !=
- CookieTreeNode::DetailedInfo::TYPE_COOKIES) {
- continue;
- }
- for (const auto& cookie_node : storage_node->children()) {
- const auto& cookie = cookie_node->GetDetailedInfo().cookie;
- if (cookie->IsPartitioned()) {
- EXPECT_NE("google.com.au",
- cookie->PartitionKey()->site().GetURL().host());
+ if (IsDeprecateCookiesTreeModelEnabled()) {
+ RemoveModelEntries(expected_browsing_data_model_entries,
+ {
+ kPartitionedHttpsWwwExampleOnGoogleAuCookie,
+ kHttpGoogleAuCookie,
+ kPartitionedHttpsGoogleAu1PCookie,
+ kPartitionedHttpsWwwAnotherExampleOnGoogleAuCookie,
+ });
+ browsing_data_model_test_util::ValidateBrowsingDataEntries(
+ handler()->GetBrowsingDataModelForTesting(),
+ expected_browsing_data_model_entries);
+ } else {
+ for (const auto& host_node :
+ handler()->GetCookiesTreeModelForTesting()->GetRoot()->children()) {
+ for (const auto& storage_node : host_node->children()) {
+ if (storage_node->GetDetailedInfo().node_type !=
+ CookieTreeNode::DetailedInfo::TYPE_COOKIES) {
+ continue;
+ }
+ for (const auto& cookie_node : storage_node->children()) {
+ const auto& cookie = cookie_node->GetDetailedInfo().cookie;
+ if (cookie->IsPartitioned()) {
+ EXPECT_NE("google.com.au",
+ cookie->PartitionKey()->site().GetURL().host());
+ }
}
}
}
@@ -5695,87 +6132,9 @@ TEST_F(SiteSettingsHandlerTest, HandleClearSiteGroupDataAndCookies) {
EXPECT_EQ(0U, storage_and_cookie_list.size());
}
-TEST_P(SiteSettingsHandlerTest, HandleClearUnpartitionedUsage) {
- SetupModels();
-
- EXPECT_EQ(28u, handler()
- ->GetCookiesTreeModelForTesting()
- ->GetRoot()
- ->GetTotalNodeCount());
-
- browsing_data_model_test_util::ValidateBrowsingDataEntries(
- handler()->GetBrowsingDataModelForTesting(),
- {
- kGoogleUnpartitionedEntry,
- kExampleUnpartitionedEntry,
- kGoogleOnExampleEntry,
- kExampleOnGoogleSecureEntry,
- kExampleOnGoogleInsecureEntry,
- });
-
- base::Value::List args;
- args.Append(GetParam() ? "https://www.example.com/"
- : "http://www.example.com/");
- handler()->HandleClearUnpartitionedUsage(args);
-
- // Confirm that only the unpartitioned items for example.com have been
- // cleared.
- browsing_data_model_test_util::ValidateBrowsingDataEntries(
- handler()->GetBrowsingDataModelForTesting(),
- {
- kGoogleUnpartitionedEntry,
- kGoogleOnExampleEntry,
- kExampleOnGoogleSecureEntry,
- kExampleOnGoogleInsecureEntry,
- });
-
- auto remaining_host_nodes = GetHostNodes(GURL("https://www.example.com"));
-
- // There should only be partitioned cookie entries remaining for the site.
- ASSERT_EQ(1u, remaining_host_nodes.size());
- ASSERT_EQ(1u, remaining_host_nodes[0]->children().size());
- const auto& storage_node = remaining_host_nodes[0]->children()[0];
- ASSERT_EQ(CookieTreeNode::DetailedInfo::TYPE_COOKIES,
- storage_node->GetDetailedInfo().node_type);
- ASSERT_EQ(2u, storage_node->children().size());
- for (const auto& cookie_node : storage_node->children()) {
- const auto& cookie = cookie_node->GetDetailedInfo().cookie;
- EXPECT_EQ("www.example.com", cookie->Domain());
- EXPECT_TRUE(cookie->IsPartitioned());
- }
-
- // Partitioned storage, even when keyed on the cookie domain site, should
- // not be cleared.
- args = base::Value::List();
- args.Append("https://google.com.au/");
- handler()->HandleClearUnpartitionedUsage(args);
-
- remaining_host_nodes = GetHostNodes(GURL("https://google.com.au"));
-
- // A single partitioned cookie should remain.
- ASSERT_EQ(1u, remaining_host_nodes.size());
- ASSERT_EQ(1u, remaining_host_nodes[0]->children().size());
- const auto& cookies_node = remaining_host_nodes[0]->children()[0];
- ASSERT_EQ(1u, cookies_node->children().size());
- const auto& cookie_node = cookies_node->children()[0];
- const auto& cookie = cookie_node->GetDetailedInfo().cookie;
- EXPECT_TRUE(cookie->IsPartitioned());
-
- args = base::Value::List();
- args.Append("https://www.google.com/");
- handler()->HandleClearUnpartitionedUsage(args);
-
- // The unpartitioned Google and Example entries should be removed.
- browsing_data_model_test_util::ValidateBrowsingDataEntries(
- handler()->GetBrowsingDataModelForTesting(),
- {
- kGoogleOnExampleEntry,
- kExampleOnGoogleSecureEntry,
- kExampleOnGoogleInsecureEntry,
- });
-
-// Clearing Site Specific Media Licenses Tests
#if BUILDFLAG(IS_WIN)
+TEST_P(SiteSettingsHandlerTest, ClearSiteSpecificMediaLicenses) {
+ SetupModels();
PrefService* user_prefs = profile()->GetPrefs();
// In the beginning, there should be nothing stored in the origin data.
@@ -5800,6 +6159,7 @@ TEST_P(SiteSettingsHandlerTest, HandleClearUnpartitionedUsage) {
// The code above adds origin data for both google and example.com
EXPECT_EQ(2u, user_prefs->GetDict(prefs::kMediaCdmOriginData).size());
+ base::Value::List args;
args = base::Value::List();
args.Append("https://www.google.com/");
handler()->HandleClearUnpartitionedUsage(args);
@@ -5809,11 +6169,10 @@ TEST_P(SiteSettingsHandlerTest, HandleClearUnpartitionedUsage) {
EXPECT_EQ(1u, user_prefs->GetDict(prefs::kMediaCdmOriginData).size());
EXPECT_TRUE(user_prefs->GetDict(prefs::kMediaCdmOriginData)
.contains("https://www.example.com/"));
-
-#endif // BUILDFLAG(IS_WIN)
}
+#endif // BUILDFLAG(IS_WIN)
-TEST_F(SiteSettingsHandlerTest, ClearClientHints) {
+TEST_P(SiteSettingsHandlerTest, ClearClientHints) {
// Confirm that when the user clears unpartitioned storage, or the eTLD+1
// group, client hints are also cleared.
SetupModels();
@@ -5896,7 +6255,7 @@ TEST_F(SiteSettingsHandlerTest, ClearClientHints) {
EXPECT_EQ(0U, client_hints_settings.size());
}
-TEST_F(SiteSettingsHandlerTest, ClearReducedAcceptLanguage) {
+TEST_P(SiteSettingsHandlerTest, ClearReducedAcceptLanguage) {
// Confirm that when the user clears unpartitioned storage, or the eTLD+1
// group, reduce accept language are also cleared.
SetupModels();
@@ -5974,161 +6333,190 @@ TEST_F(SiteSettingsHandlerTest, ClearReducedAcceptLanguage) {
EXPECT_EQ(0U, accept_language_settings.size());
}
-TEST_F(SiteSettingsHandlerTest, HandleClearPartitionedUsage) {
+TEST_P(SiteSettingsHandlerTest, ClearDurableStorage) {
+ // Confirm that when the user clears durable storage or the eTLD+1
+ // group, durable storage are also cleared.
+ SetupModels();
+ handler()->OnStorageFetched();
+
+ GURL hosts[] = {GURL("https://example.com/"), GURL("https://www.example.com"),
+ GURL("https://google.com/"), GURL("https://www.google.com/")};
+
+ HostContentSettingsMap* host_content_settings_map =
+ HostContentSettingsMapFactory::GetForProfile(profile());
+
+ // Add setting for the hosts.
+ for (const auto& host : hosts) {
+ host_content_settings_map->SetContentSettingDefaultScope(
+ host, GURL(), ContentSettingsType::DURABLE_STORAGE,
+ ContentSetting::CONTENT_SETTING_ALLOW);
+ }
+
+ // Clear at the eTLD+1 level and ensure affected origins are cleared.
+ base::Value::List args;
+ args.Append(GroupingKey::CreateFromEtldPlus1("example.com").Serialize());
+ handler()->HandleClearSiteGroupDataAndCookies(args);
+ ContentSettingsForOneType settings =
+ host_content_settings_map->GetSettingsForOneType(
+ ContentSettingsType::DURABLE_STORAGE);
+
+ // ContentSettingsType::DURABLE_STORAGE has a default settings type for the
+ // wildcard '*' set to BLOCK. Here, we expect 2 but we put 3.
+ EXPECT_EQ(3U, settings.size());
+
+ EXPECT_EQ(ContentSettingsPattern::FromURLNoWildcard(hosts[2]),
+ settings.at(0).primary_pattern);
+ EXPECT_EQ(ContentSettingsPattern::Wildcard(),
+ settings.at(0).secondary_pattern);
+ EXPECT_EQ(ContentSetting::CONTENT_SETTING_ALLOW,
+ settings.at(0).setting_value);
+
+ EXPECT_EQ(ContentSettingsPattern::FromURLNoWildcard(hosts[3]),
+ settings.at(1).primary_pattern);
+ EXPECT_EQ(ContentSettingsPattern::Wildcard(),
+ settings.at(1).secondary_pattern);
+ EXPECT_EQ(ContentSetting::CONTENT_SETTING_ALLOW,
+ settings.at(1).setting_value);
+
+ // Clear unpartitioned usage data, which should only affect the specific
+ // origin.
+ args.clear();
+ args.Append("https://google.com/");
+ handler()->HandleClearUnpartitionedUsage(args);
+
+ // Validate the reduce accept language has been cleared.
+ settings = host_content_settings_map->GetSettingsForOneType(
+ ContentSettingsType::DURABLE_STORAGE);
+
+ // ContentSettingsType::DURABLE_STORAGE has a default settings type for the
+ // wildcard '*' set to BLOCK. Here, we expect 1 but we put 2.
+ EXPECT_EQ(2U, settings.size());
+
+ // www.google.com should be the only remaining entry.
+ EXPECT_EQ(ContentSettingsPattern::FromURLNoWildcard(hosts[3]),
+ settings.at(0).primary_pattern);
+ EXPECT_EQ(ContentSettingsPattern::Wildcard(),
+ settings.at(0).secondary_pattern);
+ EXPECT_EQ(ContentSetting::CONTENT_SETTING_ALLOW,
+ settings.at(0).setting_value);
+
+ // Clear unpartitioned usage data through HTTPS scheme, make sure https site
+ // durable storage have been cleared when the specific origin HTTPS
+ // scheme exist.
+ args.clear();
+ args.Append("http://www.google.com/");
+ handler()->HandleClearUnpartitionedUsage(args);
+
+ // Validate the durable storage has been cleared.
+ settings = host_content_settings_map->GetSettingsForOneType(
+ ContentSettingsType::DURABLE_STORAGE);
+
+ // ContentSettingsType::DURABLE_STORAGE has a default settings type for the
+ // wildcard '*' set to BLOCK. Therefore, when there's only one rule, it means
+ // that there are none.
+ EXPECT_EQ(1U, settings.size());
+}
+
+TEST_P(SiteSettingsHandlerTest, HandleClearPartitionedUsage) {
// Confirm that removing unpartitioned storage correctly removes the
// appropriate nodes.
SetupModels();
-
- EXPECT_EQ(28u, handler()
- ->GetCookiesTreeModelForTesting()
- ->GetRoot()
- ->GetTotalNodeCount());
- browsing_data_model_test_util::ValidateBrowsingDataEntries(
- handler()->GetBrowsingDataModelForTesting(),
- {
- kGoogleUnpartitionedEntry,
- kExampleUnpartitionedEntry,
- kGoogleOnExampleEntry,
- kExampleOnGoogleSecureEntry,
- kExampleOnGoogleInsecureEntry,
- });
+ std::vector<browsing_data_model_test_util::BrowsingDataEntry>
+ expected_browsing_data_model_entries;
+ if (IsDeprecateCookiesTreeModelEnabled()) {
+ expected_browsing_data_model_entries = {
+ kGoogleUnpartitionedEntry,
+ kExampleUnpartitionedEntry,
+ kGoogleOnExampleEntry,
+ kExampleOnGoogleSecureEntry,
+ kExampleOnGoogleInsecureEntry,
+ kExampleLocalStorage,
+ kHttpExampleCookie,
+ kHttpsWwwExampleCookie,
+ kPartitionedHttpsWwwExampleOnGoogleAuCookie,
+ kPartitionedHttpsWwwExampleOnGoogleCookie,
+ kHttpAbcExampleCookie,
+ kHttpGoogleCookieA,
+ kHttpGoogleCookieB,
+ kHttpGoogleAuCookie,
+ kPartitionedHttpsGoogleAu1PCookie,
+ kPartitionedHttpsWwwAnotherExampleOnGoogleAuCookie,
+ kUngroupedHttpCookie,
+ };
+ browsing_data_model_test_util::ValidateBrowsingDataEntries(
+ handler()->GetBrowsingDataModelForTesting(),
+ expected_browsing_data_model_entries);
+ } else {
+ EXPECT_EQ(28u, handler()
+ ->GetCookiesTreeModelForTesting()
+ ->GetRoot()
+ ->GetTotalNodeCount());
+ expected_browsing_data_model_entries = {
+ kGoogleUnpartitionedEntry, kExampleUnpartitionedEntry,
+ kGoogleOnExampleEntry, kExampleOnGoogleSecureEntry,
+ kExampleOnGoogleInsecureEntry,
+ };
+ browsing_data_model_test_util::ValidateBrowsingDataEntries(
+ handler()->GetBrowsingDataModelForTesting(),
+ expected_browsing_data_model_entries);
+ }
base::Value::List args;
args.Append("https://www.example.com/");
args.Append(GroupingKey::CreateFromEtldPlus1("google.com").Serialize());
handler()->HandleClearPartitionedUsage(args);
+ if (IsDeprecateCookiesTreeModelEnabled()) {
+ RemoveModelEntries(expected_browsing_data_model_entries,
+ {
+ kExampleOnGoogleSecureEntry,
+ kExampleOnGoogleInsecureEntry,
+ kPartitionedHttpsWwwExampleOnGoogleCookie,
+ });
+
+ browsing_data_model_test_util::ValidateBrowsingDataEntries(
+ handler()->GetBrowsingDataModelForTesting(),
+ expected_browsing_data_model_entries);
+ } else {
+ // This should have only removed cookies for embedded.com partitioned on
+ // google.com, leaving other cookies and storage untouched.
+ auto remaining_host_nodes = GetHostNodes(GURL("https://www.example.com"));
+ ASSERT_EQ(1u, remaining_host_nodes.size());
- // This should have only removed cookies for embedded.com partitioned on
- // google.com, leaving other cookies and storage untouched.
- auto remaining_host_nodes = GetHostNodes(GURL("https://www.example.com"));
- ASSERT_EQ(1u, remaining_host_nodes.size());
-
- // Both cookies and local storage type nodes should remain.
- ASSERT_EQ(2u, remaining_host_nodes[0]->children().size());
+ // Both cookies and local storage type nodes should remain.
+ ASSERT_EQ(2u, remaining_host_nodes[0]->children().size());
- for (const auto& storage_node : remaining_host_nodes[0]->children()) {
- if (storage_node->GetDetailedInfo().node_type ==
- CookieTreeNode::DetailedInfo::TYPE_COOKIES) {
- // Two cookies should remain, one unpartitioned and one partitioned on
- // a different site.
- ASSERT_EQ(2u, storage_node->children().size());
- for (const auto& cookie_node : storage_node->children()) {
- const auto& cookie = cookie_node->GetDetailedInfo().cookie;
- if (cookie->IsPartitioned())
- ASSERT_EQ("google.com.au",
- cookie->PartitionKey()->site().GetURL().host());
+ for (const auto& storage_node : remaining_host_nodes[0]->children()) {
+ if (storage_node->GetDetailedInfo().node_type ==
+ CookieTreeNode::DetailedInfo::TYPE_COOKIES) {
+ // Two cookies should remain, one unpartitioned and one partitioned on
+ // a different site.
+ ASSERT_EQ(2u, storage_node->children().size());
+ for (const auto& cookie_node : storage_node->children()) {
+ const auto& cookie = cookie_node->GetDetailedInfo().cookie;
+ if (cookie->IsPartitioned()) {
+ ASSERT_EQ("google.com.au",
+ cookie->PartitionKey()->site().GetURL().host());
+ }
+ }
+ } else {
+ ASSERT_EQ(storage_node->GetDetailedInfo().node_type,
+ CookieTreeNode::DetailedInfo::TYPE_LOCAL_STORAGES);
}
- } else {
- ASSERT_EQ(storage_node->GetDetailedInfo().node_type,
- CookieTreeNode::DetailedInfo::TYPE_LOCAL_STORAGES);
}
- }
- // Both of the entries for Example on Google should have been removed.
- browsing_data_model_test_util::ValidateBrowsingDataEntries(
- handler()->GetBrowsingDataModelForTesting(),
- {
- kGoogleUnpartitionedEntry,
- kExampleUnpartitionedEntry,
- kGoogleOnExampleEntry,
- });
-}
-
-TEST_F(SiteSettingsHandlerTest, CookieSettingDescription) {
- const auto kBlocked = [](int num) {
- return l10n_util::GetPluralStringFUTF8(
- IDS_SETTINGS_SITE_SETTINGS_COOKIES_BLOCK, num);
- };
- const auto kAllowed = [](int num) {
- return l10n_util::GetPluralStringFUTF8(
- IDS_SETTINGS_SITE_SETTINGS_COOKIES_ALLOW, num);
- };
- const std::string kBlockThirdParty = l10n_util::GetStringUTF8(
- IDS_SETTINGS_SITE_SETTINGS_COOKIES_BLOCK_THIRD_PARTY);
- const std::string kBlockThirdPartyIncognito = l10n_util::GetStringUTF8(
- IDS_SETTINGS_SITE_SETTINGS_COOKIES_BLOCK_THIRD_PARTY_INCOGNITO);
-
- // Enforce expected default profile setting.
- profile()->GetPrefs()->SetInteger(
- prefs::kCookieControlsMode,
- static_cast<int>(content_settings::CookieControlsMode::kIncognitoOnly));
- auto* content_settings =
- HostContentSettingsMapFactory::GetForProfile(profile());
- content_settings->SetDefaultContentSetting(
- ContentSettingsType::COOKIES, ContentSetting::CONTENT_SETTING_ALLOW);
- web_ui()->ClearTrackedCalls();
-
- // Validate get method works.
- base::Value::List get_args;
- get_args.Append(kCallbackId);
- handler()->HandleGetCookieSettingDescription(get_args);
- const content::TestWebUI::CallData& data = *web_ui()->call_data().back();
-
- EXPECT_EQ("cr.webUIResponse", data.function_name());
- EXPECT_EQ(kCallbackId, data.arg1()->GetString());
- ASSERT_TRUE(data.arg2()->GetBool());
- EXPECT_EQ(kBlockThirdPartyIncognito, data.arg3()->GetString());
-
- // Multiple listeners will be called when prefs and content settings are
- // changed in this test. Increment our expected call_data index accordingly.
- int expected_call_index = 0;
- const int kPrefListenerIndex = 1;
- const int kContentSettingListenerIndex = 2;
-
- // Check updates are working,
- profile()->GetPrefs()->SetInteger(
- prefs::kCookieControlsMode,
- static_cast<int>(content_settings::CookieControlsMode::kBlockThirdParty));
- expected_call_index += kPrefListenerIndex;
- ValidateCookieSettingUpdate(kBlockThirdParty, expected_call_index);
-
- content_settings->SetDefaultContentSetting(
- ContentSettingsType::COOKIES, ContentSetting::CONTENT_SETTING_BLOCK);
- expected_call_index += kContentSettingListenerIndex;
- ValidateCookieSettingUpdate(kBlocked(0), expected_call_index);
-
- // Check changes which do not affect the effective cookie setting.
- profile()->GetPrefs()->SetInteger(
- prefs::kCookieControlsMode,
- static_cast<int>(content_settings::CookieControlsMode::kOff));
- expected_call_index += kPrefListenerIndex;
- ValidateCookieSettingUpdate(kBlocked(0), expected_call_index);
-
- // Set to allow and check previous changes are respected.
- content_settings->SetDefaultContentSetting(
- ContentSettingsType::COOKIES, ContentSetting::CONTENT_SETTING_ALLOW);
- expected_call_index += kContentSettingListenerIndex;
- ValidateCookieSettingUpdate(kAllowed(0), expected_call_index);
-
- // Confirm exceptions are counted correctly.
- GURL url1("https://example.com");
- GURL url2("http://example.com");
- GURL url3("http://another.example.com");
- content_settings->SetContentSettingDefaultScope(
- url1, url1, ContentSettingsType::COOKIES,
- ContentSetting::CONTENT_SETTING_BLOCK);
- expected_call_index += kContentSettingListenerIndex;
- ValidateCookieSettingUpdate(kAllowed(1), expected_call_index);
-
- content_settings->SetContentSettingDefaultScope(
- url2, url2, ContentSettingsType::COOKIES,
- ContentSetting::CONTENT_SETTING_ALLOW);
- expected_call_index += kContentSettingListenerIndex;
- ValidateCookieSettingUpdate(kAllowed(1), expected_call_index);
-
- content_settings->SetContentSettingDefaultScope(
- url3, url3, ContentSettingsType::COOKIES,
- ContentSetting::CONTENT_SETTING_SESSION_ONLY);
- expected_call_index += kContentSettingListenerIndex;
- ValidateCookieSettingUpdate(kAllowed(1), expected_call_index);
-
- content_settings->SetDefaultContentSetting(
- ContentSettingsType::COOKIES, ContentSetting::CONTENT_SETTING_BLOCK);
- expected_call_index += kContentSettingListenerIndex;
- ValidateCookieSettingUpdate(kBlocked(2), expected_call_index);
+ // Both of the entries for Example on Google should have been removed.
+ RemoveModelEntries(expected_browsing_data_model_entries,
+ {
+ kExampleOnGoogleSecureEntry,
+ kExampleOnGoogleInsecureEntry,
+ });
+ browsing_data_model_test_util::ValidateBrowsingDataEntries(
+ handler()->GetBrowsingDataModelForTesting(),
+ expected_browsing_data_model_entries);
+ }
}
-TEST_F(SiteSettingsHandlerTest, HandleGetFpsMembershipLabel) {
+TEST_P(SiteSettingsHandlerTest, HandleGetFpsMembershipLabel) {
base::Value::List args;
args.Append("getFpsMembershipLabel");
args.Append(5);
@@ -6142,7 +6530,7 @@ TEST_F(SiteSettingsHandlerTest, HandleGetFpsMembershipLabel) {
EXPECT_EQ("5 sites in google.com's group", data.arg3()->GetString());
}
-TEST_F(SiteSettingsHandlerTest, HandleGetFormattedBytes) {
+TEST_P(SiteSettingsHandlerTest, HandleGetFormattedBytes) {
const double size = 120000000000;
base::Value::List get_args;
get_args.Append(kCallbackId);
@@ -6158,7 +6546,7 @@ TEST_F(SiteSettingsHandlerTest, HandleGetFormattedBytes) {
data.arg3()->GetString());
}
-TEST_F(SiteSettingsHandlerTest, HandleGetUsageInfo) {
+TEST_P(SiteSettingsHandlerTest, HandleGetUsageInfo) {
SetupDefaultFirstPartySets(mock_privacy_sandbox_service());
EXPECT_CALL(*mock_privacy_sandbox_service(), IsPartOfManagedFirstPartySet(_))
@@ -6173,13 +6561,19 @@ TEST_F(SiteSettingsHandlerTest, HandleGetUsageInfo) {
// Confirm that usage info only returns unpartitioned storage.
SetupModels();
- EXPECT_EQ(28u, handler()
- ->GetCookiesTreeModelForTesting()
- ->GetRoot()
- ->GetTotalNodeCount());
- EXPECT_EQ(5,
- std::distance(handler()->GetBrowsingDataModelForTesting()->begin(),
+ if (IsDeprecateCookiesTreeModelEnabled()) {
+ EXPECT_EQ(
+ 17, std::distance(handler()->GetBrowsingDataModelForTesting()->begin(),
handler()->GetBrowsingDataModelForTesting()->end()));
+ } else {
+ EXPECT_EQ(28u, handler()
+ ->GetCookiesTreeModelForTesting()
+ ->GetRoot()
+ ->GetTotalNodeCount());
+ EXPECT_EQ(
+ 5, std::distance(handler()->GetBrowsingDataModelForTesting()->begin(),
+ handler()->GetBrowsingDataModelForTesting()->end()));
+ }
base::Value::List args;
args.Append("http://www.example.com");
@@ -6217,7 +6611,7 @@ TEST_F(SiteSettingsHandlerTest, HandleGetUsageInfo) {
ValidateUsageInfo("http://ungrouped.com//", "", "1 cookie", "", false);
}
-TEST_F(SiteSettingsHandlerTest, FirstPartySetsMembership) {
+TEST_P(SiteSettingsHandlerTest, FirstPartySetsMembership) {
SetupDefaultFirstPartySets(mock_privacy_sandbox_service());
EXPECT_CALL(*mock_privacy_sandbox_service(), IsPartOfManagedFirstPartySet(_))
@@ -6249,7 +6643,7 @@ TEST_F(SiteSettingsHandlerTest, FirstPartySetsMembership) {
ValidateSitesWithFps(storage_and_cookie_list, first_party_sets);
}
-TEST_F(SiteSettingsHandlerTest, IsolatedWebAppUsageInfo) {
+TEST_P(SiteSettingsHandlerTest, IsolatedWebAppUsageInfo) {
std::string iwa_url =
"isolated-app://"
"aerugqztij5biqquuk3mfwpsaibuegaqcitgfchwuosuofdjabzqaaic/";
@@ -6266,7 +6660,7 @@ TEST_F(SiteSettingsHandlerTest, IsolatedWebAppUsageInfo) {
/*expected_fps_member_count_string=*/"", /*expected_fps_policy=*/false);
}
-TEST_F(SiteSettingsHandlerTest, IsolatedWebAppClearSiteGroupDataAndCookies) {
+TEST_P(SiteSettingsHandlerTest, IsolatedWebAppClearSiteGroupDataAndCookies) {
GURL iwa_url1(
"isolated-app://"
"abcdefztij5biqquuk3mfwpsaibuegaqcitgfchwuosuofdjabzqaaic/");
@@ -6302,7 +6696,7 @@ TEST_F(SiteSettingsHandlerTest, IsolatedWebAppClearSiteGroupDataAndCookies) {
verify_site_group(all_sites_list[0], iwa_url2, 2000);
}
-TEST_F(SiteSettingsHandlerTest, IsolatedWebAppClearUnpartitionedUsage) {
+TEST_P(SiteSettingsHandlerTest, IsolatedWebAppClearUnpartitionedUsage) {
GURL iwa_url(
"isolated-app://"
"abcdefztij5biqquuk3mfwpsaibuegaqcitgfchwuosuofdjabzqaaic/");
diff --git a/chromium/chrome/browser/ui/webui/settings/site_settings_helper.cc b/chromium/chrome/browser/ui/webui/settings/site_settings_helper.cc
index c0cc4dbb11a..75160b23271 100644
--- a/chromium/chrome/browser/ui/webui/settings/site_settings_helper.cc
+++ b/chromium/chrome/browser/ui/webui/settings/site_settings_helper.cc
@@ -46,7 +46,6 @@
#include "components/content_settings/core/common/content_settings_pattern.h"
#include "components/content_settings/core/common/content_settings_utils.h"
#include "components/permissions/contexts/bluetooth_chooser_context.h"
-#include "components/permissions/features.h"
#include "components/permissions/object_permission_context_base.h"
#include "components/permissions/permission_decision_auto_blocker.h"
#include "components/permissions/permission_util.h"
@@ -96,6 +95,7 @@ const ContentSettingsTypeNameEntry kContentSettingsTypeGroupNames[] = {
{ContentSettingsType::COOKIES, "cookies"},
{ContentSettingsType::IMAGES, "images"},
{ContentSettingsType::JAVASCRIPT, "javascript"},
+ {ContentSettingsType::JAVASCRIPT_JIT, "javascript-jit"},
{ContentSettingsType::POPUPS, "popups"},
{ContentSettingsType::GEOLOCATION, "location"},
{ContentSettingsType::NOTIFICATIONS, "notifications"},
@@ -138,6 +138,8 @@ const ContentSettingsTypeNameEntry kContentSettingsTypeGroupNames[] = {
{ContentSettingsType::ANTI_ABUSE, "anti-abuse"},
{ContentSettingsType::STORAGE_ACCESS, "storage-access"},
{ContentSettingsType::AUTO_PICTURE_IN_PICTURE, "auto-picture-in-picture"},
+ {ContentSettingsType::CAPTURED_SURFACE_CONTROL, "captured-surface-control"},
+ {ContentSettingsType::WEB_PRINTING, "web-printing"},
// Add new content settings here if a corresponding Javascript string
// representation for it is not required, for example if the content setting
@@ -173,11 +175,11 @@ const ContentSettingsTypeNameEntry kContentSettingsTypeGroupNames[] = {
{ContentSettingsType::FILE_SYSTEM_LAST_PICKED_DIRECTORY, nullptr},
{ContentSettingsType::DISPLAY_CAPTURE, nullptr},
{ContentSettingsType::FEDERATED_IDENTITY_SHARING, nullptr},
- {ContentSettingsType::JAVASCRIPT_JIT, nullptr},
{ContentSettingsType::HTTP_ALLOWED, nullptr},
{ContentSettingsType::HTTPS_ENFORCED, nullptr},
{ContentSettingsType::FORMFILL_METADATA, nullptr},
- {ContentSettingsType::FEDERATED_IDENTITY_ACTIVE_SESSION, nullptr},
+ {ContentSettingsType::DEPRECATED_FEDERATED_IDENTITY_ACTIVE_SESSION,
+ nullptr},
{ContentSettingsType::AUTO_DARK_WEB_CONTENT, nullptr},
{ContentSettingsType::REQUEST_DESKTOP_SITE, nullptr},
{ContentSettingsType::NOTIFICATION_INTERACTIONS, nullptr},
@@ -198,12 +200,17 @@ const ContentSettingsTypeNameEntry kContentSettingsTypeGroupNames[] = {
{ContentSettingsType::THIRD_PARTY_STORAGE_PARTITIONING, nullptr},
{ContentSettingsType::ALL_SCREEN_CAPTURE, nullptr},
{ContentSettingsType::COOKIE_CONTROLS_METADATA, nullptr},
- {ContentSettingsType::TPCD_SUPPORT, nullptr},
+ {ContentSettingsType::TPCD_TRIAL, nullptr},
{ContentSettingsType::TPCD_METADATA_GRANTS, nullptr},
// TODO(crbug.com/1011533): Update the name once the design is finalized
// for the integration with Safety Hub.
{ContentSettingsType::FILE_SYSTEM_ACCESS_EXTENDED_PERMISSION, nullptr},
{ContentSettingsType::TPCD_HEURISTICS_GRANTS, nullptr},
+ {ContentSettingsType::FILE_SYSTEM_ACCESS_RESTORE_PERMISSION, nullptr},
+ // TODO(crbug.com/1464851): Update name once UI design is done.
+ {ContentSettingsType::SMART_CARD_GUARD, nullptr},
+ {ContentSettingsType::SMART_CARD_DATA, nullptr},
+ {ContentSettingsType::TOP_LEVEL_TPCD_TRIAL, nullptr},
};
static_assert(std::size(kContentSettingsTypeGroupNames) ==
@@ -310,13 +317,9 @@ SiteSettingSource CalculateSiteSettingSource(
return SiteSettingSource::kPreference;
}
-bool PatternAppliesToWebUISchemes(const ContentSettingPatternSource& pattern) {
- return pattern.primary_pattern.GetScheme() ==
- ContentSettingsPattern::SchemeType::SCHEME_CHROME ||
- pattern.primary_pattern.GetScheme() ==
- ContentSettingsPattern::SchemeType::SCHEME_CHROMEUNTRUSTED ||
- pattern.primary_pattern.GetScheme() ==
- ContentSettingsPattern::SchemeType::SCHEME_DEVTOOLS;
+bool IsFromWebUIAllowlistSource(const ContentSettingPatternSource& pattern) {
+ return HostContentSettingsMap::GetProviderTypeFromSource(pattern.source) ==
+ HostContentSettingsMap::WEBUI_ALLOWLIST_PROVIDER;
}
// If the given |pattern| represents an individual origin, Isolated Web App, or
@@ -522,6 +525,7 @@ const std::vector<ContentSettingsType>& GetVisiblePermissionCategories() {
ContentSettingsType::MEDIASTREAM_CAMERA,
ContentSettingsType::MEDIASTREAM_MIC,
ContentSettingsType::MIXEDSCRIPT,
+ ContentSettingsType::JAVASCRIPT_JIT,
ContentSettingsType::NOTIFICATIONS,
ContentSettingsType::POPUPS,
#if BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_WIN)
@@ -571,13 +575,16 @@ const std::vector<ContentSettingsType>& GetVisiblePermissionCategories() {
base_types->push_back(ContentSettingsType::AUTO_PICTURE_IN_PICTURE);
}
- if (base::FeatureList::IsEnabled(
- permissions::features::kBlockMidiByDefault)) {
+ if (base::FeatureList::IsEnabled(features::kBlockMidiByDefault)) {
base_types->push_back(ContentSettingsType::MIDI);
} else {
base_types->push_back(ContentSettingsType::MIDI_SYSEX);
}
+ if (base::FeatureList::IsEnabled(blink::features::kWebPrinting)) {
+ base_types->push_back(ContentSettingsType::WEB_PRINTING);
+ }
+
initialized = true;
}
@@ -848,8 +855,8 @@ void GetRawExceptionsForContentSettingsType(
continue;
}
- // Don't add WebUI settings.
- if (PatternAppliesToWebUISchemes(setting)) {
+ // Don't add allowlisted settings.
+ if (IsFromWebUIAllowlistSource(setting)) {
continue;
}
@@ -861,20 +868,15 @@ void GetRawExceptionsForContentSettingsType(
}
auto content_setting = setting.GetContentSetting();
-
+ // There is no user-facing concept of SESSION_ONLY cookie exceptions that
+ // use secondary patterns. These are instead presented as ALLOW.
+ // TODO(crbug.com/1404436): Perform a one time migration of the actual
+ // content settings when the extension API no-longer allows them to be
+ // created.
if (type == ContentSettingsType::COOKIES &&
- base::FeatureList::IsEnabled(
- privacy_sandbox::kPrivacySandboxSettings4)) {
- // With the changes to settings introduced in PrivacySandboxSettings4,
- // there is no user-facing concept of SESSION_ONLY cookie exceptions that
- // use secondary patterns. These are instead presented as ALLOW.
- // TODO(crbug.com/1404436): Perform a one time migration of the actual
- // content settings when the extension API no-longer allows them to be
- // created.
- if (content_setting == ContentSetting::CONTENT_SETTING_SESSION_ONLY &&
- setting.secondary_pattern != ContentSettingsPattern::Wildcard()) {
- content_setting = ContentSetting::CONTENT_SETTING_ALLOW;
- }
+ content_setting == ContentSetting::CONTENT_SETTING_SESSION_ONLY &&
+ setting.secondary_pattern != ContentSettingsPattern::Wildcard()) {
+ content_setting = ContentSetting::CONTENT_SETTING_ALLOW;
}
all_patterns_settings[{setting.primary_pattern, setting.source}][{
@@ -960,6 +962,8 @@ void GetExceptionsForContentType(ContentSettingsType type,
// Display the URLs with File System entries that are granted
// permissions via File System Access Persistent Permissions.
+ // TODO(crbug.com/1467574): Remove `kFileSystemAccessPersistentPermissions`
+ // flag after FSA Persistent Permissions feature launch.
if (base::FeatureList::IsEnabled(
features::kFileSystemAccessPersistentPermissions) &&
(type == ContentSettingsType::FILE_SYSTEM_READ_GUARD ||
@@ -1070,7 +1074,7 @@ ContentSetting GetContentSettingForOrigin(Profile* profile,
permissions::PermissionDecisionAutoBlocker* auto_blocker =
permissions::PermissionsClient::Get()
->GetPermissionDecisionAutoBlocker(profile);
- absl::optional<content::PermissionResult> embargo_result =
+ std::optional<content::PermissionResult> embargo_result =
auto_blocker->GetEmbargoResult(origin, content_type);
if (embargo_result) {
result = embargo_result.value();
@@ -1097,11 +1101,12 @@ std::vector<ContentSettingPatternSource>
GetSingleOriginExceptionsForContentType(HostContentSettingsMap* map,
ContentSettingsType content_type) {
ContentSettingsForOneType entries = map->GetSettingsForOneType(content_type);
- // Exclude any entries that don't represent a single webby top-frame origin.
+ // Exclude any entries that are allowlisted or don't represent a single
+ // top-frame origin.
base::EraseIf(entries, [](const ContentSettingPatternSource& e) {
return !content_settings::PatternAppliesToSingleOrigin(
e.primary_pattern, e.secondary_pattern) ||
- PatternAppliesToWebUISchemes(e);
+ IsFromWebUIAllowlistSource(e);
});
return entries;
}
diff --git a/chromium/chrome/browser/ui/webui/settings/site_settings_helper_unittest.cc b/chromium/chrome/browser/ui/webui/settings/site_settings_helper_unittest.cc
index 8434a85320f..a15e07160d5 100644
--- a/chromium/chrome/browser/ui/webui/settings/site_settings_helper_unittest.cc
+++ b/chromium/chrome/browser/ui/webui/settings/site_settings_helper_unittest.cc
@@ -49,6 +49,7 @@
#include "services/device/public/cpp/test/fake_usb_device_manager.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "ui/base/l10n/l10n_util.h"
+#include "ui/webui/webui_allowlist.h"
#include "url/gurl.h"
#if BUILDFLAG(ENABLE_EXTENSIONS)
@@ -142,7 +143,7 @@ TEST_F(SiteSettingsHelperTest, ExceptionListWithEmbargoedAndBlockedOrigins) {
ASSERT_EQ(2U, exceptions.size());
// Get last added origin.
- absl::optional<bool> is_embargoed =
+ std::optional<bool> is_embargoed =
exceptions[0].GetDict().FindBool(site_settings::kIsEmbargoed);
ASSERT_TRUE(is_embargoed.has_value());
// Last added origin is blocked, |embargo| key should be false.
@@ -363,7 +364,7 @@ TEST_F(SiteSettingsHelperTest, ExceptionListFedCmEmbargo) {
// |exceptions| should have an exception for the embargoed origin.
ASSERT_EQ(1U, exceptions.size());
- absl::optional<bool> is_embargoed =
+ std::optional<bool> is_embargoed =
exceptions[0].GetDict().FindBool(site_settings::kIsEmbargoed);
ASSERT_TRUE(is_embargoed.has_value());
EXPECT_TRUE(*is_embargoed);
@@ -373,6 +374,44 @@ TEST_F(SiteSettingsHelperTest, ExceptionListFedCmEmbargo) {
EXPECT_EQ(kOriginToEmbargo, *primary_pattern);
}
+TEST_F(SiteSettingsHelperTest, ExceptionListIgnoresWebUIAllowlist) {
+ TestingProfile profile;
+ auto* allowlist = WebUIAllowlist::GetOrCreate(&profile);
+
+ // Confirm that WebUI allowlist entries are excluded from the exception list.
+ allowlist->RegisterAutoGrantedPermission(
+ url::Origin::Create(GURL("chrome://example.com")),
+ ContentSettingsType::COOKIES);
+
+ // Secondary patterns should also be ignored.
+ allowlist->RegisterAutoGrantedThirdPartyCookies(
+ url::Origin::Create(GURL("chrome-untrusted://another-example.com")),
+ {
+ ContentSettingsPattern::FromURL(GURL("https://embedded-1.com")),
+ ContentSettingsPattern::FromURL(GURL("https://embedded-2.com")),
+ });
+
+ base::Value::List exceptions;
+ site_settings::GetExceptionsForContentType(ContentSettingsType::COOKIES,
+ &profile,
+ /*web_ui=*/nullptr,
+ /*incognito=*/false, &exceptions);
+ ASSERT_EQ(0U, exceptions.size());
+
+ // Exceptions from other sources that use a WebUI scheme should however be
+ // displayed.
+ auto* map = HostContentSettingsMapFactory::GetForProfile(&profile);
+ map->SetContentSettingDefaultScope(
+ GURL("chrome://example"), GURL("chrome-untrusted://another-example"),
+ ContentSettingsType::COOKIES, CONTENT_SETTING_BLOCK);
+
+ site_settings::GetExceptionsForContentType(ContentSettingsType::COOKIES,
+ &profile,
+ /*web_ui=*/nullptr,
+ /*incognito=*/false, &exceptions);
+ ASSERT_EQ(1U, exceptions.size());
+}
+
TEST_F(SiteSettingsHelperTest, CheckExceptionOrder) {
TestingProfile profile;
HostContentSettingsMap* map =
@@ -393,7 +432,8 @@ TEST_F(SiteSettingsHelperTest, CheckExceptionOrder) {
policy_provider->SetWebsiteSetting(
ContentSettingsPattern::FromString(star_google_com),
ContentSettingsPattern::Wildcard(), kContentType,
- base::Value(CONTENT_SETTING_BLOCK));
+ base::Value(CONTENT_SETTING_BLOCK), /*constraints=*/{},
+ content_settings::PartitionKey::GetDefaultForTesting());
policy_provider->set_read_only(true);
content_settings::TestUtils::OverrideProvider(
map, std::move(policy_provider), HostContentSettingsMap::POLICY_PROVIDER);
@@ -411,7 +451,8 @@ TEST_F(SiteSettingsHelperTest, CheckExceptionOrder) {
extension_provider->SetWebsiteSetting(
ContentSettingsPattern::FromString(drive_google_com),
ContentSettingsPattern::Wildcard(), kContentType,
- base::Value(CONTENT_SETTING_ASK));
+ base::Value(CONTENT_SETTING_ASK), /*constraints=*/{},
+ content_settings::PartitionKey::GetDefaultForTesting());
extension_provider->set_read_only(true);
content_settings::TestUtils::OverrideProvider(
map, std::move(extension_provider),
@@ -485,10 +526,11 @@ TEST_F(SiteSettingsHelperTest, ContentSettingSource) {
// Extension.
auto extension_provider = std::make_unique<content_settings::MockProvider>();
- extension_provider->SetWebsiteSetting(ContentSettingsPattern::FromURL(origin),
- ContentSettingsPattern::FromURL(origin),
- kContentType,
- base::Value(CONTENT_SETTING_BLOCK));
+ extension_provider->SetWebsiteSetting(
+ ContentSettingsPattern::FromURL(origin),
+ ContentSettingsPattern::FromURL(origin), kContentType,
+ base::Value(CONTENT_SETTING_BLOCK), /*constraints=*/{},
+ content_settings::PartitionKey::GetDefaultForTesting());
extension_provider->set_read_only(true);
content_settings::TestUtils::OverrideProvider(
map, std::move(extension_provider),
@@ -500,10 +542,11 @@ TEST_F(SiteSettingsHelperTest, ContentSettingSource) {
// Enterprise policy.
auto policy_provider = std::make_unique<content_settings::MockProvider>();
- policy_provider->SetWebsiteSetting(ContentSettingsPattern::FromURL(origin),
- ContentSettingsPattern::FromURL(origin),
- kContentType,
- base::Value(CONTENT_SETTING_ALLOW));
+ policy_provider->SetWebsiteSetting(
+ ContentSettingsPattern::FromURL(origin),
+ ContentSettingsPattern::FromURL(origin), kContentType,
+ base::Value(CONTENT_SETTING_ALLOW), /*constraints=*/{},
+ content_settings::PartitionKey::GetDefaultForTesting());
policy_provider->set_read_only(true);
content_settings::TestUtils::OverrideProvider(
map, std::move(policy_provider), HostContentSettingsMap::POLICY_PROVIDER);
@@ -559,45 +602,35 @@ TEST_F(SiteSettingsHelperTest, CookieExceptions) {
kContentTypeCookies, test_case.initial_setting);
}
- for (const auto feature_state : std::vector<bool>{true, false}) {
- base::test::ScopedFeatureList feature_list_;
- feature_list_.InitWithFeatureState(
- privacy_sandbox::kPrivacySandboxSettings4, feature_state);
-
- base::Value::List exceptions;
- site_settings::GetExceptionsForContentType(kContentTypeCookies, &profile,
- /*web_ui=*/nullptr,
- /*incognito=*/false,
- &exceptions);
+ base::Value::List exceptions;
+ site_settings::GetExceptionsForContentType(kContentTypeCookies, &profile,
+ /*web_ui=*/nullptr,
+ /*incognito=*/false, &exceptions);
- // Convert the test cases, and the returned dictionary, into tuples for
- // unordered comparison, as the order of exception is not relevant.
- std::vector<std::tuple<std::string, std::string, std::string>> expected =
- base::test::ToVector(test_cases, [&](const auto& test_case) {
- // make_tuple as we've some temporary rvalues.
- return std::make_tuple(
- test_case.primary_pattern,
- test_case.secondary_pattern ==
- ContentSettingsPattern::Wildcard().ToString()
- ? ""
- : test_case.secondary_pattern,
- content_settings::ContentSettingToString(
- feature_state ? test_case.updated_setting
- : test_case.initial_setting));
- });
-
- std::vector<std::tuple<std::string, std::string, std::string>> actual =
- base::test::ToVector(exceptions, [](const auto& exception) {
- const base::Value::Dict& dict = exception.GetDict();
- return std::make_tuple(*dict.FindString(kOrigin),
- *dict.FindString(kEmbeddingOrigin),
- *dict.FindString(kSetting));
- });
-
- EXPECT_THAT(actual, testing::UnorderedElementsAreArray(expected))
- << "Privacy Sandbox Settings 4 "
- << (feature_state ? "enabled" : "disabled");
- }
+ // Convert the test cases, and the returned dictionary, into tuples for
+ // unordered comparison, as the order of exception is not relevant.
+ std::vector<std::tuple<std::string, std::string, std::string>> expected =
+ base::test::ToVector(test_cases, [&](const auto& test_case) {
+ // make_tuple as we've some temporary rvalues.
+ return std::make_tuple(
+ test_case.primary_pattern,
+ test_case.secondary_pattern ==
+ ContentSettingsPattern::Wildcard().ToString()
+ ? ""
+ : test_case.secondary_pattern,
+ content_settings::ContentSettingToString(
+ test_case.updated_setting));
+ });
+
+ std::vector<std::tuple<std::string, std::string, std::string>> actual =
+ base::test::ToVector(exceptions, [](const auto& exception) {
+ const base::Value::Dict& dict = exception.GetDict();
+ return std::make_tuple(*dict.FindString(kOrigin),
+ *dict.FindString(kEmbeddingOrigin),
+ *dict.FindString(kSetting));
+ });
+
+ EXPECT_THAT(actual, testing::UnorderedElementsAreArray(expected));
}
TEST_F(SiteSettingsHelperTest, GetExpirationDescription) {
@@ -713,7 +746,7 @@ void ExpectValidSiteExceptionObject(const base::Value& actual_site_object,
ASSERT_TRUE(source_value);
EXPECT_EQ(*source_value, source);
- absl::optional<bool> incognito_value = actual_site_dict.FindBool(kIncognito);
+ std::optional<bool> incognito_value = actual_site_dict.FindBool(kIncognito);
ASSERT_TRUE(incognito_value.has_value());
EXPECT_EQ(*incognito_value, incognito);
}