Update base::Value usage in components/translate/core/browser/.

In particular, use Value::List and Value::Dict to manipulate Lists and
Dicts, instead of deprecated APIs (Creating them from ListStorage,
GetListDeprecated(), Value::SetKey(), Value::FindKey(), etc).

Bug: 1187001, 1338341
Change-Id: I2a69c336b96f30c56468db12d9dd4551bc4c94ec
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3763047
Reviewed-by: Trevor Perrier <perrier@chromium.org>
Commit-Queue: Matt Menke <mmenke@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1025967}
diff --git a/components/translate/core/browser/translate_infobar_delegate_unittest.cc b/components/translate/core/browser/translate_infobar_delegate_unittest.cc
index f386fcc1..a73724e 100644
--- a/components/translate/core/browser/translate_infobar_delegate_unittest.cc
+++ b/components/translate/core/browser/translate_infobar_delegate_unittest.cc
@@ -222,15 +222,14 @@
 TEST_F(TranslateInfoBarDelegateTest, ShouldAutoAlwaysTranslate) {
   DictionaryPrefUpdate update_translate_accepted_count(
       pref_service_.get(), TranslatePrefs::kPrefTranslateAcceptedCount);
-  base::Value* update_translate_accepted_dict =
-      update_translate_accepted_count.Get();
-  update_translate_accepted_dict->SetIntKey(kSourceLanguage,
-                                            kAutoAlwaysThreshold + 1);
+  base::Value::Dict& update_translate_accepted_dict =
+      update_translate_accepted_count->GetDict();
+  update_translate_accepted_dict.Set(kSourceLanguage, kAutoAlwaysThreshold + 1);
 
-  const base::Value* dict = pref_service_->GetDictionary(
+  const base::Value::Dict* dict = &pref_service_->GetValueDict(
       TranslatePrefs::kPrefTranslateAutoAlwaysCount);
   absl::optional<int> translate_auto_always_count =
-      dict->FindIntKey(kSourceLanguage);
+      dict->FindInt(kSourceLanguage);
   EXPECT_FALSE(translate_auto_always_count.has_value());
 
   TranslateInfoBarDelegate::Create(
@@ -244,28 +243,28 @@
   EXPECT_TRUE(delegate->ShouldAutoAlwaysTranslate());
 
   absl::optional<int> count =
-      update_translate_accepted_dict->FindIntKey(kSourceLanguage);
+      update_translate_accepted_dict.FindInt(kSourceLanguage);
   EXPECT_EQ(absl::optional<int>(0), count);
   // Get the dictionary again in order to update it.
-  dict = pref_service_->GetDictionary(
+  dict = &pref_service_->GetValueDict(
       TranslatePrefs::kPrefTranslateAutoAlwaysCount);
-  translate_auto_always_count = dict->FindIntKey(kSourceLanguage);
+  translate_auto_always_count = dict->FindInt(kSourceLanguage);
   EXPECT_EQ(absl::optional<int>(1), translate_auto_always_count);
 }
 
 TEST_F(TranslateInfoBarDelegateTest, ShouldNotAutoAlwaysTranslateUnknown) {
   DictionaryPrefUpdate update_translate_accepted_count(
       pref_service_.get(), TranslatePrefs::kPrefTranslateAcceptedCount);
-  base::Value* update_translate_accepted_dict =
-      update_translate_accepted_count.Get();
+  base::Value::Dict& update_translate_accepted_dict =
+      update_translate_accepted_count->GetDict();
   // Should not trigger auto always translate for unknown source language.
-  update_translate_accepted_dict->SetIntKey(kUnknownLanguageCode,
-                                            kAutoAlwaysThreshold + 1);
+  update_translate_accepted_dict.Set(kUnknownLanguageCode,
+                                     kAutoAlwaysThreshold + 1);
 
-  const base::Value* dict = pref_service_->GetDictionary(
+  const base::Value::Dict* dict = &pref_service_->GetValueDict(
       TranslatePrefs::kPrefTranslateAutoAlwaysCount);
   absl::optional<int> translate_auto_always_count =
-      dict->FindIntKey(kUnknownLanguageCode);
+      dict->FindInt(kUnknownLanguageCode);
   EXPECT_FALSE(translate_auto_always_count.has_value());
 
   TranslateInfoBarDelegate::Create(
@@ -279,13 +278,13 @@
   EXPECT_FALSE(delegate->ShouldAutoAlwaysTranslate());
 
   absl::optional<int> count =
-      update_translate_accepted_dict->FindIntKey(kSourceLanguage);
+      update_translate_accepted_dict.FindInt(kSourceLanguage);
   // Always translate not triggered, so count should be unchanged.
   EXPECT_FALSE(count.has_value());
   // Get the dictionary again in order to update it.
-  dict = pref_service_->GetDictionary(
+  dict = &pref_service_->GetValueDict(
       TranslatePrefs::kPrefTranslateAutoAlwaysCount);
-  translate_auto_always_count = dict->FindIntKey(kUnknownLanguageCode);
+  translate_auto_always_count = dict->FindInt(kUnknownLanguageCode);
   EXPECT_FALSE(translate_auto_always_count.has_value());
 }
 
@@ -312,15 +311,15 @@
 
   DictionaryPrefUpdate update_translate_denied_count(
       pref_service_.get(), TranslatePrefs::kPrefTranslateDeniedCount);
-  base::Value* update_translate_denied_dict =
-      update_translate_denied_count.Get();
+  base::Value::Dict& update_translate_denied_dict =
+      update_translate_denied_count->GetDict();
   // 21 = kAutoNeverThreshold + 1
-  update_translate_denied_dict->SetIntKey(kSourceLanguage, 21);
+  update_translate_denied_dict.Set(kSourceLanguage, 21);
 
-  const base::Value* dict = pref_service_->GetDictionary(
+  const base::Value::Dict* dict = &pref_service_->GetValueDict(
       TranslatePrefs::kPrefTranslateAutoNeverCount);
   absl::optional<int> translate_auto_never_count =
-      dict->FindIntKey(kSourceLanguage);
+      dict->FindInt(kSourceLanguage);
   ASSERT_FALSE(translate_auto_never_count.has_value());
 
   TranslateInfoBarDelegate::Create(
@@ -334,12 +333,12 @@
   EXPECT_TRUE(delegate->ShouldAutoNeverTranslate());
 
   absl::optional<int> count =
-      update_translate_denied_dict->FindIntKey(kSourceLanguage);
+      update_translate_denied_dict.FindInt(kSourceLanguage);
   EXPECT_EQ(absl::optional<int>(0), count);
   // Get the dictionary again in order to update it.
-  dict = pref_service_->GetDictionary(
+  dict = &pref_service_->GetValueDict(
       TranslatePrefs::kPrefTranslateAutoNeverCount);
-  translate_auto_never_count = dict->FindIntKey(kSourceLanguage);
+  translate_auto_never_count = dict->FindInt(kSourceLanguage);
   ASSERT_EQ(absl::optional<int>(1), translate_auto_never_count);
 }
 
diff --git a/components/translate/core/browser/translate_prefs.cc b/components/translate/core/browser/translate_prefs.cc
index 3fa7ac4..048b9f94 100644
--- a/components/translate/core/browser/translate_prefs.cc
+++ b/components/translate/core/browser/translate_prefs.cc
@@ -86,25 +86,25 @@
 // pref. This function will avoid merging values from the old pref that seem to
 // conflict with values already present in the new pref.
 void MigrateObsoleteAlwaysTranslateLanguagesPref(PrefService* prefs) {
-  const base::Value* deprecated_dictionary = prefs->GetUserPrefValue(
-      TranslatePrefs::kPrefAlwaysTranslateListDeprecated);
+  const base::Value::Dict& deprecated_dictionary =
+      prefs->GetValueDict(TranslatePrefs::kPrefAlwaysTranslateListDeprecated);
   // Migration is performed only once per client, since the deprecated pref is
   // cleared after migration. This will make subsequent calls to migrate no-ops.
-  if (!deprecated_dictionary)
+  if (deprecated_dictionary.empty())
     return;
 
   DictionaryPrefUpdate always_translate_dictionary_update(
       prefs, prefs::kPrefAlwaysTranslateList);
-  base::Value* always_translate_dictionary =
-      always_translate_dictionary_update.Get();
+  base::Value::Dict& always_translate_dictionary =
+      always_translate_dictionary_update->GetDict();
 
-  for (const auto old_language_pair : deprecated_dictionary->DictItems()) {
+  for (const auto old_language_pair : deprecated_dictionary) {
     // If the old pref's language pair conflicts with any of the new pref's
     // language pairs, where either the new pref already specifies behavior
     // about always translating from or to the old source language, or always
     // translating from the old target language, then skip merging this pair
     // into the new pref.
-    const auto& new_language_pairs = always_translate_dictionary->DictItems();
+    const auto& new_language_pairs = always_translate_dictionary;
     if (std::any_of(new_language_pairs.begin(), new_language_pairs.end(),
                     [&old_language_pair](const auto& new_language_pair) {
                       return old_language_pair.first ==
@@ -121,7 +121,7 @@
     // languages, it probably means that this source language was set to never
     // be translated after the old pref was deprecated, so avoid this conflict.
     const auto& never_translate_languages =
-        prefs->GetList(prefs::kBlockedLanguages)->GetListDeprecated();
+        prefs->GetValueList(prefs::kBlockedLanguages);
     if (std::any_of(
             never_translate_languages.begin(), never_translate_languages.end(),
             [&old_language_pair](const base::Value& never_translate_language) {
@@ -131,8 +131,8 @@
       continue;
     }
 
-    always_translate_dictionary->SetStringKey(
-        old_language_pair.first, old_language_pair.second.GetString());
+    always_translate_dictionary.Set(old_language_pair.first,
+                                    old_language_pair.second.GetString());
   }
 
   prefs->ClearPref(TranslatePrefs::kPrefAlwaysTranslateListDeprecated);
@@ -254,13 +254,13 @@
 }
 
 // static
-base::Value TranslatePrefs::GetDefaultBlockedLanguages() {
-  typename base::Value::ListStorage languages;
+base::Value::List TranslatePrefs::GetDefaultBlockedLanguages() {
+  base::Value::List languages;
 #if BUILDFLAG(IS_CHROMEOS_ASH)
   // Preferred languages.
   std::string language = language::kFallbackInputMethodLocale;
   language::ToTranslateLanguageSynonym(&language);
-  languages.push_back(base::Value(std::move(language)));
+  languages.Append(std::move(language));
 #else
   // Accept languages.
 #pragma GCC diagnostic push
@@ -270,7 +270,7 @@
        base::SplitString(l10n_util::GetStringUTF8(IDS_ACCEPT_LANGUAGES), ",",
                          base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL)) {
     language::ToTranslateLanguageSynonym(&language);
-    languages.push_back(base::Value(std::move(language)));
+    languages.Append(std::move(language));
 
     // crbug.com/958348: The default value for Accept-Language *should* be the
     // same as the one for Blocked Languages. However, Accept-Language contains
@@ -291,16 +291,15 @@
   languages.erase(std::unique(languages.begin(), languages.end()),
                   languages.end());
 
-  return base::Value(std::move(languages));
+  return languages;
 }
 
 bool TranslatePrefs::IsBlockedLanguage(base::StringPiece input_language) const {
   std::string canonical_lang(input_language);
   language::ToTranslateLanguageSynonym(&canonical_lang);
-  const base::Value* blocked =
-      prefs_->GetList(translate::prefs::kBlockedLanguages);
-  return base::Contains(blocked->GetListDeprecated(),
-                        base::Value(std::move(canonical_lang)));
+  const base::Value::List& blocked =
+      prefs_->GetValueList(translate::prefs::kBlockedLanguages);
+  return base::Contains(blocked, base::Value(std::move(canonical_lang)));
 }
 
 void TranslatePrefs::BlockLanguage(base::StringPiece input_language) {
@@ -338,14 +337,11 @@
 }
 
 std::vector<std::string> TranslatePrefs::GetNeverTranslateLanguages() const {
-  const base::Value* fluent_languages_value =
-      prefs_->GetList(translate::prefs::kBlockedLanguages);
-  if (!fluent_languages_value) {
-    NOTREACHED() << "Fluent languages pref is unregistered";
-  }
+  const base::Value::List& fluent_languages_value =
+      prefs_->GetValueList(translate::prefs::kBlockedLanguages);
 
   std::vector<std::string> languages;
-  for (const auto& language : fluent_languages_value->GetListDeprecated()) {
+  for (const auto& language : fluent_languages_value) {
     std::string chrome_language(language.GetString());
     language::ToChromeLanguageSynonym(&chrome_language);
     languages.push_back(chrome_language);
@@ -615,29 +611,29 @@
 }
 
 bool TranslatePrefs::IsSiteOnNeverPromptList(base::StringPiece site) const {
-  return prefs_->GetDictionary(kPrefNeverPromptSitesWithTime)->FindKey(site);
+  return prefs_->GetValueDict(kPrefNeverPromptSitesWithTime).Find(site);
 }
 
 void TranslatePrefs::AddSiteToNeverPromptList(base::StringPiece site) {
   DCHECK(!site.empty());
   AddValueToNeverPromptList(kPrefNeverPromptSitesDeprecated, site);
   DictionaryPrefUpdate update(prefs_, kPrefNeverPromptSitesWithTime);
-  update.Get()->SetKey(site, base::TimeToValue(base::Time::Now()));
+  update->GetDict().Set(site, base::TimeToValue(base::Time::Now()));
 }
 
 void TranslatePrefs::RemoveSiteFromNeverPromptList(base::StringPiece site) {
   DCHECK(!site.empty());
   RemoveValueFromNeverPromptList(kPrefNeverPromptSitesDeprecated, site);
   DictionaryPrefUpdate update(prefs_, kPrefNeverPromptSitesWithTime);
-  update.Get()->RemoveKey(site);
+  update->GetDict().Remove(site);
 }
 
 std::vector<std::string> TranslatePrefs::GetNeverPromptSitesBetween(
     base::Time begin,
     base::Time end) const {
   std::vector<std::string> result;
-  auto* dict = prefs_->GetDictionary(kPrefNeverPromptSitesWithTime);
-  for (auto entry : dict->DictItems()) {
+  const auto& dict = prefs_->GetValueDict(kPrefNeverPromptSitesWithTime);
+  for (const auto entry : dict) {
     absl::optional<base::Time> time = base::ValueToTime(entry.second);
     if (!time) {
       // Badly formatted preferences may be synced from the server, see
@@ -683,8 +679,7 @@
   std::string translate_target_language(target_language);
   language::ToTranslateLanguageSynonym(&translate_target_language);
 
-  update.Get()->SetStringKey(translate_source_language,
-                             translate_target_language);
+  update->GetDict().Set(translate_source_language, translate_target_language);
   // Remove source language from block list if present.
   UnblockLanguage(translate_source_language);
 }
@@ -749,16 +744,16 @@
 void TranslatePrefs::IncrementTranslationDeniedCount(
     base::StringPiece language) {
   DictionaryPrefUpdate update(prefs_, kPrefTranslateDeniedCount);
-  base::Value* dict = update.Get();
+  base::Value::Dict& dict = update->GetDict();
 
-  int count = dict->FindIntKey(language).value_or(0);
+  int count = dict.FindInt(language).value_or(0);
   if (count < std::numeric_limits<int>::max())
-    dict->SetIntKey(language, count + 1);
+    dict.Set(language, count + 1);
 }
 
 void TranslatePrefs::ResetTranslationDeniedCount(base::StringPiece language) {
   DictionaryPrefUpdate update(prefs_, kPrefTranslateDeniedCount);
-  update.Get()->SetIntKey(language, 0);
+  update->GetDict().Set(language, 0);
 }
 
 int TranslatePrefs::GetTranslationIgnoredCount(
@@ -771,16 +766,16 @@
 void TranslatePrefs::IncrementTranslationIgnoredCount(
     base::StringPiece language) {
   DictionaryPrefUpdate update(prefs_, kPrefTranslateIgnoredCount);
-  base::Value* dict = update.Get();
+  base::Value::Dict& dict = update->GetDict();
 
-  int count = dict->FindIntKey(language).value_or(0);
+  int count = dict.FindInt(language).value_or(0);
   if (count < std::numeric_limits<int>::max())
-    dict->SetIntKey(language, count + 1);
+    dict.Set(language, count + 1);
 }
 
 void TranslatePrefs::ResetTranslationIgnoredCount(base::StringPiece language) {
   DictionaryPrefUpdate update(prefs_, kPrefTranslateIgnoredCount);
-  update.Get()->SetIntKey(language, 0);
+  update->GetDict().Set(language, 0);
 }
 
 int TranslatePrefs::GetTranslationAcceptedCount(
@@ -793,16 +788,16 @@
 void TranslatePrefs::IncrementTranslationAcceptedCount(
     base::StringPiece language) {
   DictionaryPrefUpdate update(prefs_, kPrefTranslateAcceptedCount);
-  base::Value* dict = update.Get();
+  base::Value::Dict& dict = update->GetDict();
 
-  int count = dict->FindIntKey(language).value_or(0);
+  int count = dict.FindInt(language).value_or(0);
   if (count < std::numeric_limits<int>::max())
-    dict->SetIntKey(language, count + 1);
+    dict.Set(language, count + 1);
 }
 
 void TranslatePrefs::ResetTranslationAcceptedCount(base::StringPiece language) {
   DictionaryPrefUpdate update(prefs_, kPrefTranslateAcceptedCount);
-  update.Get()->SetIntKey(language, 0);
+  update->GetDict().Set(language, 0);
 }
 
 #if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_IOS)
@@ -816,17 +811,17 @@
 void TranslatePrefs::IncrementTranslationAutoAlwaysCount(
     base::StringPiece language) {
   DictionaryPrefUpdate update(prefs_, kPrefTranslateAutoAlwaysCount);
-  base::Value* dict = update.Get();
+  base::Value::Dict& dict = update->GetDict();
 
-  int count = dict->FindIntKey(language).value_or(0);
+  int count = dict.FindInt(language).value_or(0);
   if (count < std::numeric_limits<int>::max())
-    dict->SetIntKey(language, count + 1);
+    dict.Set(language, count + 1);
 }
 
 void TranslatePrefs::ResetTranslationAutoAlwaysCount(
     base::StringPiece language) {
   DictionaryPrefUpdate update(prefs_, kPrefTranslateAutoAlwaysCount);
-  update.Get()->SetIntKey(language, 0);
+  update->GetDict().Set(language, 0);
 }
 
 int TranslatePrefs::GetTranslationAutoNeverCount(
@@ -839,17 +834,17 @@
 void TranslatePrefs::IncrementTranslationAutoNeverCount(
     base::StringPiece language) {
   DictionaryPrefUpdate update(prefs_, kPrefTranslateAutoNeverCount);
-  base::Value* dict = update.Get();
+  base::Value::Dict& dict = update->GetDict();
 
-  int count = dict->FindIntKey(language).value_or(0);
+  int count = dict.FindInt(language).value_or(0);
   if (count < std::numeric_limits<int>::max())
-    dict->SetIntKey(language, count + 1);
+    dict.Set(language, count + 1);
 }
 
 void TranslatePrefs::ResetTranslationAutoNeverCount(
     base::StringPiece language) {
   DictionaryPrefUpdate update(prefs_, kPrefTranslateAutoNeverCount);
-  update.Get()->SetIntKey(language, 0);
+  update->GetDict().Set(language, 0);
 }
 #endif  // BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_IOS)
 
@@ -997,21 +992,19 @@
   // make subsequent calls to migrate no-ops.
   DictionaryPrefUpdate never_prompt_list_update(prefs_,
                                                 kPrefNeverPromptSitesWithTime);
-  base::Value* never_prompt_list = never_prompt_list_update.Get();
-  if (never_prompt_list) {
-    ListPrefUpdate deprecated_prompt_list_update(
-        prefs_, kPrefNeverPromptSitesDeprecated);
-    base::Value* deprecated_list = deprecated_prompt_list_update.Get();
-    for (auto& site : deprecated_list->GetListDeprecated()) {
-      if (site.is_string() &&
-          (!never_prompt_list->FindKey(site.GetString()) ||
-           !base::ValueToTime(never_prompt_list->FindKey(site.GetString())))) {
-        never_prompt_list->SetKey(site.GetString(),
-                                  base::TimeToValue(base::Time::Now()));
-      }
+  base::Value::Dict& never_prompt_list = never_prompt_list_update->GetDict();
+  ListPrefUpdate deprecated_prompt_list_update(prefs_,
+                                               kPrefNeverPromptSitesDeprecated);
+  base::Value::List& deprecated_list = deprecated_prompt_list_update->GetList();
+  for (auto& site : deprecated_list) {
+    if (site.is_string() &&
+        (!never_prompt_list.Find(site.GetString()) ||
+         !base::ValueToTime(never_prompt_list.Find(site.GetString())))) {
+      never_prompt_list.Set(site.GetString(),
+                            base::TimeToValue(base::Time::Now()));
     }
-    deprecated_list->ClearList();
   }
+  deprecated_list.clear();
 }
 
 // static
@@ -1034,11 +1027,8 @@
 
 bool TranslatePrefs::IsValueOnNeverPromptList(const char* pref_id,
                                               base::StringPiece value) const {
-  const base::Value* never_prompt_list = prefs_->GetList(pref_id);
-  if (!never_prompt_list)
-    return false;
-  for (const base::Value& value_in_list :
-       never_prompt_list->GetListDeprecated()) {
+  const base::Value::List& never_prompt_list = prefs_->GetValueList(pref_id);
+  for (const base::Value& value_in_list : never_prompt_list) {
     if (value_in_list.is_string() && value_in_list.GetString() == value)
       return true;
   }
@@ -1063,25 +1053,20 @@
 void TranslatePrefs::RemoveValueFromNeverPromptList(const char* pref_id,
                                                     base::StringPiece value) {
   ListPrefUpdate update(prefs_, pref_id);
-  base::Value* never_prompt_list = update.Get();
-  if (!never_prompt_list) {
-    NOTREACHED() << "Unregistered never-translate pref";
-    return;
-  }
+  base::Value::List& never_prompt_list = update->GetList();
 
-  auto list_view = never_prompt_list->GetListDeprecated();
-  never_prompt_list->EraseListIter(std::find_if(
-      list_view.begin(), list_view.end(),
+  auto value_to_erase = std::find_if(
+      never_prompt_list.begin(), never_prompt_list.end(),
       [value](const base::Value& value_in_list) {
         return value_in_list.is_string() && value_in_list.GetString() == value;
-      }));
+      });
+  if (value_to_erase != never_prompt_list.end())
+    never_prompt_list.erase(value_to_erase);
 }
 
 size_t TranslatePrefs::GetListSize(const char* pref_id) const {
-  const base::Value* never_prompt_list = prefs_->GetList(pref_id);
-  return never_prompt_list == nullptr
-             ? 0
-             : never_prompt_list->GetListDeprecated().size();
+  const base::Value::List& never_prompt_list = prefs_->GetValueList(pref_id);
+  return never_prompt_list.size();
 }
 
 bool TranslatePrefs::IsDictionaryEmpty(const char* pref_id) const {
diff --git a/components/translate/core/browser/translate_prefs.h b/components/translate/core/browser/translate_prefs.h
index 86d8f16..c19a471 100644
--- a/components/translate/core/browser/translate_prefs.h
+++ b/components/translate/core/browser/translate_prefs.h
@@ -175,8 +175,8 @@
   void BlockLanguage(base::StringPiece source_language);
   void UnblockLanguage(base::StringPiece source_language);
   // Returns the languages that should be blocked by default as a
-  // base::(List)Value.
-  static base::Value GetDefaultBlockedLanguages();
+  // base::Value::List.
+  static base::Value::List GetDefaultBlockedLanguages();
   void ResetBlockedLanguagesToDefault();
   // Prevent empty blocked languages by resetting them to the default value.
   // (crbug.com/902354)
diff --git a/components/translate/core/browser/translate_prefs_unittest.cc b/components/translate/core/browser/translate_prefs_unittest.cc
index 9f69a8bcc..0eb6dcf 100644
--- a/components/translate/core/browser/translate_prefs_unittest.cc
+++ b/components/translate/core/browser/translate_prefs_unittest.cc
@@ -43,15 +43,13 @@
 using ::testing::UnorderedElementsAreArray;
 
 static void ExpectEqualLanguageLists(
-    const base::Value& language_values,
+    const base::Value::List& language_values,
     const std::vector<std::string>& languages) {
   const int input_size = languages.size();
-  base::Value::ConstListView language_values_view =
-      language_values.GetListDeprecated();
-  ASSERT_EQ(input_size, static_cast<int>(language_values_view.size()));
+  ASSERT_EQ(input_size, static_cast<int>(language_values.size()));
   for (int i = 0; i < input_size; ++i) {
-    ASSERT_TRUE(language_values_view[i].is_string());
-    EXPECT_EQ(languages[i], language_values_view[i].GetString());
+    ASSERT_TRUE(language_values[i].is_string());
+    EXPECT_EQ(languages[i], language_values[i].GetString());
   }
 }
 
@@ -81,9 +79,9 @@
 
   void ExpectBlockedLanguageListContent(
       const std::vector<std::string>& list) const {
-    const base::Value* const never_prompt_list =
-        prefs_.GetList(prefs::kBlockedLanguages);
-    ExpectEqualLanguageLists(*never_prompt_list, list);
+    const base::Value::List& never_prompt_list =
+        prefs_.GetValueList(prefs::kBlockedLanguages);
+    ExpectEqualLanguageLists(never_prompt_list, list);
   }
 
   // Returns a vector of language codes from the elements of the given
@@ -940,23 +938,21 @@
       TranslatePrefs::kPrefNeverPromptSitesDeprecated, "unmigrated.com");
   translate_prefs_->AddValueToNeverPromptList(
       TranslatePrefs::kPrefNeverPromptSitesDeprecated, "migratedWrong.com");
-  EXPECT_EQ(prefs_.Get(TranslatePrefs::kPrefNeverPromptSitesDeprecated)
-                ->GetListDeprecated()
+  EXPECT_EQ(prefs_.GetValueList(TranslatePrefs::kPrefNeverPromptSitesDeprecated)
                 .size(),
             2u);
   // Also put one of those sites on the new pref but migrated incorrectly.
   DictionaryPrefUpdate never_prompt_list_update(
       &prefs_, TranslatePrefs::kPrefNeverPromptSitesWithTime);
-  base::Value* never_prompt_list = never_prompt_list_update.Get();
-  never_prompt_list->SetKey("migratedWrong.com", base::Value(0));
+  base::Value::Dict& never_prompt_list = never_prompt_list_update->GetDict();
+  never_prompt_list.Set("migratedWrong.com", 0);
 
   // Now migrate and fix the prefs.
   translate_prefs_->MigrateNeverPromptSites();
   EXPECT_THAT(translate_prefs_->GetNeverPromptSitesBetween(
                   base::Time::Now() - base::Days(1), base::Time::Max()),
               ElementsAre("migratedWrong.com", "unmigrated.com"));
-  EXPECT_EQ(prefs_.Get(TranslatePrefs::kPrefNeverPromptSitesDeprecated)
-                ->GetListDeprecated()
+  EXPECT_EQ(prefs_.GetValueList(TranslatePrefs::kPrefNeverPromptSitesDeprecated)
                 .size(),
             0u);
 }
@@ -966,11 +962,11 @@
   // Add sites with invalid times.
   DictionaryPrefUpdate never_prompt_list_update(
       &prefs_, TranslatePrefs::kPrefNeverPromptSitesWithTime);
-  base::Value* never_prompt_list = never_prompt_list_update.Get();
-  never_prompt_list->SetKey("not-a-string.com", base::Value(0));
-  never_prompt_list->SetKey("not-a-valid-time.com", base::Value("foo"));
+  base::Value::Dict& never_prompt_list = never_prompt_list_update->GetDict();
+  never_prompt_list.Set("not-a-string.com", 0);
+  never_prompt_list.Set("not-a-valid-time.com", "foo");
   // Add the null time (valid time).
-  never_prompt_list->SetKey("null-time.com", base::Value("0"));
+  never_prompt_list.Set("null-time.com", "0");
 
   // This should not crash, and filter invalid times.
   EXPECT_THAT(translate_prefs_->GetNeverPromptSitesBetween(base::Time::Min(),
@@ -1215,28 +1211,29 @@
   scoped_feature_list.InitAndDisableFeature(
       kMigrateAlwaysTranslateLanguagesFix);
 
-  base::Value never_translate_list(base::Value::Type::LIST);
+  base::Value::List never_translate_list;
   never_translate_list.Append("en");
 
-  base::Value old_always_translate_map(base::Value::Type::DICTIONARY);
-  old_always_translate_map.SetStringKey("fr", "en");
+  base::Value::Dict old_always_translate_map;
+  old_always_translate_map.Set("fr", "en");
 
-  base::Value new_always_translate_map(base::Value::Type::DICTIONARY);
-  new_always_translate_map.SetStringKey("ru", "en");
+  base::Value::Dict new_always_translate_map;
+  new_always_translate_map.Set("ru", "en");
 
-  prefs_.Set(prefs::kBlockedLanguages, never_translate_list.Clone());
-  prefs_.Set(TranslatePrefs::kPrefAlwaysTranslateListDeprecated,
-             old_always_translate_map.Clone());
-  prefs_.Set(prefs::kPrefAlwaysTranslateList, new_always_translate_map.Clone());
+  prefs_.SetList(prefs::kBlockedLanguages, never_translate_list.Clone());
+  prefs_.SetDict(TranslatePrefs::kPrefAlwaysTranslateListDeprecated,
+                 old_always_translate_map.Clone());
+  prefs_.SetDict(prefs::kPrefAlwaysTranslateList,
+                 new_always_translate_map.Clone());
 
   // Since the kMigrateAlwaysTranslateLanguagesFix feature is disabled, no
   // migration should occur during construction.
   TranslatePrefs translate_prefs(&prefs_);
 
   EXPECT_EQ(
-      *prefs_.GetDictionary(TranslatePrefs::kPrefAlwaysTranslateListDeprecated),
+      prefs_.GetValueDict(TranslatePrefs::kPrefAlwaysTranslateListDeprecated),
       old_always_translate_map);
-  EXPECT_EQ(*prefs_.GetDictionary(prefs::kPrefAlwaysTranslateList),
+  EXPECT_EQ(prefs_.GetValueDict(prefs::kPrefAlwaysTranslateList),
             new_always_translate_map);
 }
 
@@ -1245,30 +1242,30 @@
   base::test::ScopedFeatureList scoped_feature_list(
       kMigrateAlwaysTranslateLanguagesFix);
 
-  base::Value never_translate_list(base::Value::Type::LIST);
+  base::Value::List never_translate_list;
   never_translate_list.Append("en");
   never_translate_list.Append("es");
-  prefs_.Set(prefs::kBlockedLanguages, std::move(never_translate_list));
+  prefs_.SetList(prefs::kBlockedLanguages, std::move(never_translate_list));
 
-  base::Value old_always_translate_map(base::Value::Type::DICTIONARY);
+  base::Value::Dict old_always_translate_map;
   // A non-conflicting language pair that should be merged.
-  old_always_translate_map.SetStringKey("fr", "en");
+  old_always_translate_map.Set("fr", "en");
   // Conflicts with a new language pair with the same source language.
-  old_always_translate_map.SetStringKey("ru", "de");
+  old_always_translate_map.Set("ru", "de");
   // Conflicts with a new language pair with this source language as the target.
-  old_always_translate_map.SetStringKey("jp", "de");
+  old_always_translate_map.Set("jp", "de");
   // Conflicts with a new language pair with this target language as the source.
-  old_always_translate_map.SetStringKey("pt", "hi");
+  old_always_translate_map.Set("pt", "hi");
 
-  prefs_.Set(TranslatePrefs::kPrefAlwaysTranslateListDeprecated,
-             std::move(old_always_translate_map));
+  prefs_.SetDict(TranslatePrefs::kPrefAlwaysTranslateListDeprecated,
+                 std::move(old_always_translate_map));
 
-  base::Value new_always_translate_map(base::Value::Type::DICTIONARY);
-  new_always_translate_map.SetStringKey("ru", "en");
-  new_always_translate_map.SetStringKey("id", "jp");
-  new_always_translate_map.SetStringKey("hi", "en");
-  prefs_.Set(prefs::kPrefAlwaysTranslateList,
-             std::move(new_always_translate_map));
+  base::Value::Dict new_always_translate_map;
+  new_always_translate_map.Set("ru", "en");
+  new_always_translate_map.Set("id", "jp");
+  new_always_translate_map.Set("hi", "en");
+  prefs_.SetDict(prefs::kPrefAlwaysTranslateList,
+                 std::move(new_always_translate_map));
 
   // The always-translate pref migration should be done during construction.
   TranslatePrefs translate_prefs(&prefs_);
@@ -1276,13 +1273,13 @@
   EXPECT_FALSE(prefs_.GetUserPrefValue(
       TranslatePrefs::kPrefAlwaysTranslateListDeprecated));
 
-  base::Value expected_always_translate_map(base::Value::Type::DICTIONARY);
-  expected_always_translate_map.SetStringKey("ru", "en");
-  expected_always_translate_map.SetStringKey("id", "jp");
-  expected_always_translate_map.SetStringKey("hi", "en");
-  expected_always_translate_map.SetStringKey("fr", "en");
+  base::Value::Dict expected_always_translate_map;
+  expected_always_translate_map.Set("ru", "en");
+  expected_always_translate_map.Set("id", "jp");
+  expected_always_translate_map.Set("hi", "en");
+  expected_always_translate_map.Set("fr", "en");
 
-  EXPECT_EQ(*prefs_.GetDictionary(prefs::kPrefAlwaysTranslateList),
+  EXPECT_EQ(prefs_.GetValueDict(prefs::kPrefAlwaysTranslateList),
             expected_always_translate_map);
 }