Remove deprecated base::Value usage in print_settings_conversion code.

Switch to the latest base::Value::Dict and base::Value::List APIs.

Bug: 1303949
Change-Id: I1e1f1ea990ad01525317431f2438435674e5a498
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3574964
Reviewed-by: Alan Screen <[email protected]>
Commit-Queue: Lei Zhang <[email protected]>
Cr-Commit-Position: refs/heads/main@{#990254}
diff --git a/printing/print_settings_conversion.cc b/printing/print_settings_conversion.cc
index ed18b7a..9e381216 100644
--- a/printing/print_settings_conversion.cc
+++ b/printing/print_settings_conversion.cc
@@ -31,16 +31,16 @@
 
 // Note: If this code crashes, then the caller has passed in invalid `settings`.
 // Fix the caller, instead of trying to avoid the crash here.
-PageMargins GetCustomMarginsFromJobSettings(const base::Value& settings) {
+PageMargins GetCustomMarginsFromJobSettings(const base::Value::Dict& settings) {
   PageMargins margins_in_points;
-  const base::Value* custom_margins = settings.FindKey(kSettingMarginsCustom);
-  margins_in_points.top = custom_margins->FindIntKey(kSettingMarginTop).value();
+  const base::Value::Dict* custom_margins =
+      settings.FindDict(kSettingMarginsCustom);
+  margins_in_points.top = custom_margins->FindInt(kSettingMarginTop).value();
   margins_in_points.bottom =
-      custom_margins->FindIntKey(kSettingMarginBottom).value();
-  margins_in_points.left =
-      custom_margins->FindIntKey(kSettingMarginLeft).value();
+      custom_margins->FindInt(kSettingMarginBottom).value();
+  margins_in_points.left = custom_margins->FindInt(kSettingMarginLeft).value();
   margins_in_points.right =
-      custom_margins->FindIntKey(kSettingMarginRight).value();
+      custom_margins->FindInt(kSettingMarginRight).value();
   return margins_in_points;
 }
 
@@ -77,44 +77,44 @@
 
 }  // namespace
 
-PageRanges GetPageRangesFromJobSettings(const base::Value& job_settings) {
+PageRanges GetPageRangesFromJobSettings(const base::Value::Dict& job_settings) {
   PageRanges page_ranges;
-  const base::Value* page_range_array =
-      job_settings.FindListKey(kSettingPageRange);
-  if (page_range_array) {
-    for (const base::Value& page_range :
-         page_range_array->GetListDeprecated()) {
-      if (!page_range.is_dict())
-        continue;
+  const base::Value::List* page_range_array =
+      job_settings.FindList(kSettingPageRange);
+  if (!page_range_array)
+    return page_ranges;
 
-      absl::optional<int> from = page_range.FindIntKey(kSettingPageRangeFrom);
-      absl::optional<int> to = page_range.FindIntKey(kSettingPageRangeTo);
-      if (!from.has_value() || !to.has_value())
-        continue;
+  for (const base::Value& page_range : *page_range_array) {
+    if (!page_range.is_dict())
+      continue;
 
-      // Page numbers are 1-based in the dictionary.
-      // Page numbers are 0-based for the printing context.
-      page_ranges.push_back(PageRange{static_cast<uint32_t>(from.value() - 1),
-                                      static_cast<uint32_t>(to.value() - 1)});
-    }
+    const auto& dict = page_range.GetDict();
+    absl::optional<int> from = dict.FindInt(kSettingPageRangeFrom);
+    absl::optional<int> to = dict.FindInt(kSettingPageRangeTo);
+    if (!from.has_value() || !to.has_value())
+      continue;
+
+    // Page numbers are 1-based in the dictionary.
+    // Page numbers are 0-based for the printing context.
+    page_ranges.push_back(PageRange{static_cast<uint32_t>(from.value() - 1),
+                                    static_cast<uint32_t>(to.value() - 1)});
   }
   return page_ranges;
 }
 
 std::unique_ptr<PrintSettings> PrintSettingsFromJobSettings(
-    const base::Value& job_settings) {
+    const base::Value::Dict& job_settings) {
   auto settings = std::make_unique<PrintSettings>();
   absl::optional<bool> display_header_footer =
-      job_settings.FindBoolKey(kSettingHeaderFooterEnabled);
+      job_settings.FindBool(kSettingHeaderFooterEnabled);
   if (!display_header_footer.has_value())
     return nullptr;
 
   settings->set_display_header_footer(display_header_footer.value());
   if (settings->display_header_footer()) {
     const std::string* title =
-        job_settings.FindStringKey(kSettingHeaderFooterTitle);
-    const std::string* url =
-        job_settings.FindStringKey(kSettingHeaderFooterURL);
+        job_settings.FindString(kSettingHeaderFooterTitle);
+    const std::string* url = job_settings.FindString(kSettingHeaderFooterURL);
     if (!title || !url)
       return nullptr;
 
@@ -123,9 +123,9 @@
   }
 
   absl::optional<bool> backgrounds =
-      job_settings.FindBoolKey(kSettingShouldPrintBackgrounds);
+      job_settings.FindBool(kSettingShouldPrintBackgrounds);
   absl::optional<bool> selection_only =
-      job_settings.FindBoolKey(kSettingShouldPrintSelectionOnly);
+      job_settings.FindBool(kSettingShouldPrintSelectionOnly);
   if (!backgrounds.has_value() || !selection_only.has_value())
     return nullptr;
 
@@ -133,27 +133,27 @@
   settings->set_selection_only(selection_only.value());
 
   PrintSettings::RequestedMedia requested_media;
-  const base::Value* media_size_value = job_settings.FindKeyOfType(
-      kSettingMediaSize, base::Value::Type::DICTIONARY);
+  const base::Value::Dict* media_size_value =
+      job_settings.FindDict(kSettingMediaSize);
   if (media_size_value) {
     absl::optional<int> width_microns =
-        media_size_value->FindIntKey(kSettingMediaSizeWidthMicrons);
+        media_size_value->FindInt(kSettingMediaSizeWidthMicrons);
     absl::optional<int> height_microns =
-        media_size_value->FindIntKey(kSettingMediaSizeHeightMicrons);
+        media_size_value->FindInt(kSettingMediaSizeHeightMicrons);
     if (width_microns.has_value() && height_microns.has_value()) {
       requested_media.size_microns =
           gfx::Size(width_microns.value(), height_microns.value());
     }
 
     const std::string* vendor_id =
-        media_size_value->FindStringKey(kSettingMediaSizeVendorId);
+        media_size_value->FindString(kSettingMediaSizeVendorId);
     if (vendor_id && !vendor_id->empty())
       requested_media.vendor_id = *vendor_id;
   }
   settings->set_requested_media(requested_media);
 
   mojom::MarginType margin_type = static_cast<mojom::MarginType>(
-      job_settings.FindIntKey(kSettingMarginsType)
+      job_settings.FindInt(kSettingMarginsType)
           .value_or(static_cast<int>(mojom::MarginType::kDefaultMargins)));
   if (margin_type != mojom::MarginType::kDefaultMargins &&
       margin_type != mojom::MarginType::kNoMargins &&
@@ -168,17 +168,16 @@
 
   settings->set_ranges(GetPageRangesFromJobSettings(job_settings));
 
-  absl::optional<bool> collate = job_settings.FindBoolKey(kSettingCollate);
-  absl::optional<int> copies = job_settings.FindIntKey(kSettingCopies);
-  absl::optional<int> color = job_settings.FindIntKey(kSettingColor);
-  absl::optional<int> duplex_mode = job_settings.FindIntKey(kSettingDuplexMode);
-  absl::optional<bool> landscape = job_settings.FindBoolKey(kSettingLandscape);
-  absl::optional<int> scale_factor =
-      job_settings.FindIntKey(kSettingScaleFactor);
+  absl::optional<bool> collate = job_settings.FindBool(kSettingCollate);
+  absl::optional<int> copies = job_settings.FindInt(kSettingCopies);
+  absl::optional<int> color = job_settings.FindInt(kSettingColor);
+  absl::optional<int> duplex_mode = job_settings.FindInt(kSettingDuplexMode);
+  absl::optional<bool> landscape = job_settings.FindBool(kSettingLandscape);
+  absl::optional<int> scale_factor = job_settings.FindInt(kSettingScaleFactor);
   absl::optional<bool> rasterize_pdf =
-      job_settings.FindBoolKey(kSettingRasterizePdf);
+      job_settings.FindBool(kSettingRasterizePdf);
   absl::optional<int> pages_per_sheet =
-      job_settings.FindIntKey(kSettingPagesPerSheet);
+      job_settings.FindInt(kSettingPagesPerSheet);
 
   if (!collate.has_value() || !copies.has_value() || !color.has_value() ||
       !duplex_mode.has_value() || !landscape.has_value() ||
@@ -188,15 +187,14 @@
   }
 
   absl::optional<int> dpi_horizontal =
-      job_settings.FindIntKey(kSettingDpiHorizontal);
-  absl::optional<int> dpi_vertical =
-      job_settings.FindIntKey(kSettingDpiVertical);
+      job_settings.FindInt(kSettingDpiHorizontal);
+  absl::optional<int> dpi_vertical = job_settings.FindInt(kSettingDpiVertical);
   if (!dpi_horizontal.has_value() || !dpi_vertical.has_value())
     return nullptr;
   settings->set_dpi_xy(dpi_horizontal.value(), dpi_vertical.value());
 
   absl::optional<int> rasterize_pdf_dpi =
-      job_settings.FindIntKey(kSettingRasterizePdfDpi);
+      job_settings.FindInt(kSettingRasterizePdfDpi);
   if (rasterize_pdf_dpi.has_value())
     settings->set_rasterize_pdf_dpi(rasterize_pdf_dpi.value());
 
@@ -204,7 +202,7 @@
   settings->set_copies(copies.value());
   settings->SetOrientation(landscape.value());
   settings->set_device_name(
-      base::UTF8ToUTF16(*job_settings.FindStringKey(kSettingDeviceName)));
+      base::UTF8ToUTF16(*job_settings.FindString(kSettingDeviceName)));
   settings->set_duplex_mode(
       static_cast<mojom::DuplexMode>(duplex_mode.value()));
   settings->set_color(static_cast<mojom::ColorModel>(color.value()));
@@ -212,16 +210,16 @@
   settings->set_rasterize_pdf(rasterize_pdf.value());
   settings->set_pages_per_sheet(pages_per_sheet.value());
   absl::optional<bool> is_modifiable =
-      job_settings.FindBoolKey(kSettingPreviewModifiable);
+      job_settings.FindBool(kSettingPreviewModifiable);
   if (is_modifiable.has_value()) {
     settings->set_is_modifiable(is_modifiable.value());
   }
 
 #if BUILDFLAG(IS_CHROMEOS) || (BUILDFLAG(IS_LINUX) && defined(USE_CUPS))
-  const base::Value* advanced_settings =
-      job_settings.FindDictKey(kSettingAdvancedSettings);
+  const base::Value::Dict* advanced_settings =
+      job_settings.FindDict(kSettingAdvancedSettings);
   if (advanced_settings) {
-    for (const auto item : advanced_settings->DictItems()) {
+    for (const auto item : *advanced_settings) {
       static constexpr auto kNonJobAttributes =
           base::MakeFixedFlatSet<base::StringPiece>(
               {"printer-info", "printer-make-and-model", "system_driverinfo"});
@@ -233,15 +231,15 @@
 
 #if BUILDFLAG(IS_CHROMEOS)
   bool send_user_info =
-      job_settings.FindBoolKey(kSettingSendUserInfo).value_or(false);
+      job_settings.FindBool(kSettingSendUserInfo).value_or(false);
   settings->set_send_user_info(send_user_info);
   if (send_user_info) {
-    const std::string* username = job_settings.FindStringKey(kSettingUsername);
+    const std::string* username = job_settings.FindString(kSettingUsername);
     if (username)
       settings->set_username(*username);
   }
 
-  const std::string* pin_value = job_settings.FindStringKey(kSettingPinValue);
+  const std::string* pin_value = job_settings.FindString(kSettingPinValue);
   if (pin_value)
     settings->set_pin_value(*pin_value);
 #endif  // BUILDFLAG(IS_CHROMEOS)