Migrate chrome/browser/media to new pref update classes.

ListPrefUpdate and DictPrefUpdate are now deprecated, in favor of
ScopedListPrefUpdate and ScopedDictPrefUpdate, which only expose
Value::List and Value::Dict, respectively, to discourage use of other
APIs to manipulate lists and dicts, which are all deprecated.

Bug: 1362719
Change-Id: I968bd5146cd2fae3a8d845665610fa9eebe83758
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3904932
Commit-Queue: Matt Menke <mmenke@chromium.org>
Reviewed-by: John Rummell <jrummell@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1049903}
diff --git a/chrome/browser/media/android/cdm/media_drm_origin_id_manager.cc b/chrome/browser/media/android/cdm/media_drm_origin_id_manager.cc
index 2acdce7..5bca6de 100644
--- a/chrome/browser/media/android/cdm/media_drm_origin_id_manager.cc
+++ b/chrome/browser/media/android/cdm/media_drm_origin_id_manager.cc
@@ -79,10 +79,9 @@
   if (media::MediaDrmBridge::IsPerApplicationProvisioningSupported())
     return;
 
-  DictionaryPrefUpdate update(pref_service, kMediaDrmOriginIds);
-  auto& origin_id_dict = update->GetDict();
-  origin_id_dict.Set(kExpirableToken,
-                     base::TimeToValue(base::Time::Now() + kExpirationDelta));
+  ScopedDictPrefUpdate update(pref_service, kMediaDrmOriginIds);
+  update->Set(kExpirableToken,
+              base::TimeToValue(base::Time::Now() + kExpirationDelta));
 }
 
 void RemoveExpirableToken(base::Value::Dict& origin_id_dict) {
@@ -140,10 +139,9 @@
 base::UnguessableToken TakeFirstOriginId(PrefService* const pref_service) {
   DVLOG(3) << __func__;
 
-  DictionaryPrefUpdate update(pref_service, kMediaDrmOriginIds);
-  base::Value::Dict& origin_id_dict = update->GetDict();
+  ScopedDictPrefUpdate update(pref_service, kMediaDrmOriginIds);
 
-  base::Value::List* origin_ids = origin_id_dict.FindList(kOriginIds);
+  base::Value::List* origin_ids = update->FindList(kOriginIds);
   if (!origin_ids)
     return base::UnguessableToken::Null();
 
@@ -365,8 +363,8 @@
 
   // On devices that need to, check that the user has recently requested
   // an origin ID. If not, then skip pre-provisioning on those devices.
-  DictionaryPrefUpdate update(pref_service_, kMediaDrmOriginIds);
-  if (!CanPreProvision(update->GetDict())) {
+  ScopedDictPrefUpdate update(pref_service_, kMediaDrmOriginIds);
+  if (!CanPreProvision(*update)) {
     // Disable any network monitoring, if it exists.
     network_observer_.reset();
     return;
@@ -374,8 +372,7 @@
 
   // No need to pre-provision if there are already enough existing
   // pre-provisioned origin IDs.
-  if (CountAvailableOriginIds(update->GetDict()) >=
-      kMaxPreProvisionedOriginIds) {
+  if (CountAvailableOriginIds(*update) >= kMaxPreProvisionedOriginIds) {
     // Disable any network monitoring, if it exists.
     network_observer_.reset();
     return;
@@ -494,15 +491,14 @@
              origin_id);
     pending_provisioned_origin_id_cbs_.pop();
   } else {
-    DictionaryPrefUpdate update(pref_service_, kMediaDrmOriginIds);
-    AddOriginId(update->GetDict(), origin_id.value());
+    ScopedDictPrefUpdate update(pref_service_, kMediaDrmOriginIds);
+    AddOriginId(*update, origin_id.value());
 
     // If we already have enough pre-provisioned origin IDs, we're done.
     // Stop watching for network change events.
-    if (CountAvailableOriginIds(update->GetDict()) >=
-        kMaxPreProvisionedOriginIds) {
+    if (CountAvailableOriginIds(*update) >= kMaxPreProvisionedOriginIds) {
       network_observer_.reset();
-      RemoveExpirableToken(update->GetDict());
+      RemoveExpirableToken(*update);
       is_provisioning_ = false;
       return;
     }
diff --git a/chrome/browser/media/cdm_document_service_impl_test.cc b/chrome/browser/media/cdm_document_service_impl_test.cc
index fa72a8d..bed4242 100644
--- a/chrome/browser/media/cdm_document_service_impl_test.cc
+++ b/chrome/browser/media/cdm_document_service_impl_test.cc
@@ -115,13 +115,13 @@
     entry.SetKey(kOriginId, base::UnguessableTokenToValue(
                                 base::UnguessableToken::Create()));
 
-    DictionaryPrefUpdate update(user_prefs, prefs::kMediaCdmOriginData);
-    base::Value* dict = update.Get();
+    ScopedDictPrefUpdate update(user_prefs, prefs::kMediaCdmOriginData);
+    base::Value::Dict& dict = update.Get();
     const std::string serialized_origin = web_contents()
                                               ->GetPrimaryMainFrame()
                                               ->GetLastCommittedOrigin()
                                               .Serialize();
-    dict->SetKey(serialized_origin, std::move(entry));
+    dict.Set(serialized_origin, std::move(entry));
   }
 
  protected:
diff --git a/chrome/browser/media/cdm_pref_service_helper.cc b/chrome/browser/media/cdm_pref_service_helper.cc
index f3a080a..a8bdaf3 100644
--- a/chrome/browser/media/cdm_pref_service_helper.cc
+++ b/chrome/browser/media/cdm_pref_service_helper.cc
@@ -174,10 +174,10 @@
     const base::RepeatingCallback<bool(const GURL&)>& filter) {
   DVLOG(1) << __func__ << " From [" << start << ", " << end << "]";
 
-  DictionaryPrefUpdate update(user_prefs, prefs::kMediaCdmOriginData);
+  ScopedDictPrefUpdate update(user_prefs, prefs::kMediaCdmOriginData);
 
   std::vector<std::string> origins_to_delete;
-  for (auto key_value : update->DictItems()) {
+  for (auto key_value : *update) {
     const std::string& origin = key_value.first;
 
     // Null filter indicates that we should delete everything.
@@ -211,7 +211,7 @@
 
   // Remove CDM preference data.
   for (const auto& origin_str : origins_to_delete)
-    update->RemoveKey(origin_str);
+    update->Remove(origin_str);
 
   DVLOG(1) << __func__ << "Done removing CDM preference data";
 }
@@ -244,12 +244,11 @@
   // Create an new entry or overwrite the existing one in case we weren't able
   // to get a valid origin ID from `FromDictValue()`.
   if (!cdm_pref_data) {
-    DictionaryPrefUpdate update(user_prefs, prefs::kMediaCdmOriginData);
-    base::Value* update_dict = update.Get();
+    ScopedDictPrefUpdate update(user_prefs, prefs::kMediaCdmOriginData);
 
     cdm_pref_data = std::make_unique<CdmPrefData>(
         base::UnguessableToken::Create(), base::Time::Now());
-    update_dict->SetKey(serialized_cdm_origin, ToDictValue(*cdm_pref_data));
+    update->Set(serialized_cdm_origin, ToDictValue(*cdm_pref_data));
   }
 
   return cdm_pref_data;
@@ -268,8 +267,8 @@
   const std::string serialized_cdm_origin = cdm_origin.Serialize();
   DCHECK(!serialized_cdm_origin.empty());
 
-  DictionaryPrefUpdate update(user_prefs, prefs::kMediaCdmOriginData);
-  base::Value::Dict& dict = update->GetDict();
+  ScopedDictPrefUpdate update(user_prefs, prefs::kMediaCdmOriginData);
+  base::Value::Dict& dict = update.Get();
 
   base::Value::Dict* dict_value = dict.FindDict(serialized_cdm_origin);
   if (!dict_value) {
diff --git a/chrome/browser/media/router/presentation/presentation_service_delegate_impl_unittest.cc b/chrome/browser/media/router/presentation/presentation_service_delegate_impl_unittest.cc
index c9763f7..84f48fda 100644
--- a/chrome/browser/media/router/presentation/presentation_service_delegate_impl_unittest.cc
+++ b/chrome/browser/media/router/presentation/presentation_service_delegate_impl_unittest.cc
@@ -67,9 +67,9 @@
 // Set the user preference for |origin| to prefer tab mirroring.
 void EnableTabMirroringForOrigin(PrefService* prefs,
                                  const std::string& origin) {
-  ListPrefUpdate update(prefs,
-                        media_router::prefs::kMediaRouterTabMirroringSources);
-  base::Value::List& list = update->GetList();
+  ScopedListPrefUpdate update(
+      prefs, media_router::prefs::kMediaRouterTabMirroringSources);
+  base::Value::List& list = update.Get();
   if (!base::Contains(list, base::Value(origin)))
     list.Append(origin);
 }
@@ -798,9 +798,9 @@
 
   // Remove the user preference for |origin|.
   {
-    ListPrefUpdate update(profile()->GetPrefs(),
-                          prefs::kMediaRouterTabMirroringSources);
-    update->GetList().EraseValue(base::Value(origin));
+    ScopedListPrefUpdate update(profile()->GetPrefs(),
+                                prefs::kMediaRouterTabMirroringSources);
+    update->EraseValue(base::Value(origin));
   }
 
   // Auto-join requests should now go through.
@@ -854,10 +854,10 @@
 
   // Remove the user preference for |origin| in OffTheRecord.
   {
-    ListPrefUpdate update(
+    ScopedListPrefUpdate update(
         profile()->GetPrimaryOTRProfile(/*create_if_needed=*/true)->GetPrefs(),
         prefs::kMediaRouterTabMirroringSources);
-    update->GetList().EraseValue(base::Value(origin));
+    update->EraseValue(base::Value(origin));
   }
 
   // Auto-join requests should now go through.