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)