From 9d1c53a7e4ab3db926021ac6df6d50be3866f814 Mon Sep 17 00:00:00 2001 From: Shelley Vohr Date: Mon, 23 May 2022 10:11:06 +0200 Subject: [PATCH] fix: DCHECK on `webContents.print()` (#34299) * fix: DCHECK on webContents.print() * chore: update patches Co-authored-by: PatchUp <73610968+patchup[bot]@users.noreply.github.com> --- patches/chromium/printing.patch | 56 ++++++------- .../browser/api/electron_api_web_contents.cc | 80 +++++++++---------- shell/browser/api/electron_api_web_contents.h | 2 +- 3 files changed, 67 insertions(+), 71 deletions(-) diff --git a/patches/chromium/printing.patch b/patches/chromium/printing.patch index 8fe11dc30ac18..ea1357fce03b0 100644 --- a/patches/chromium/printing.patch +++ b/patches/chromium/printing.patch @@ -113,7 +113,7 @@ index dd27bbf387718d6abda5080e7d2c609cd0eaff17..8837cf2aeaa2f87d51be8d00aa356c8a void PrintJobWorkerOop::UnregisterServiceManagerClient() { diff --git a/chrome/browser/printing/print_view_manager_base.cc b/chrome/browser/printing/print_view_manager_base.cc -index fb69efbfa8e355f8389abf9490cf338e70f16c7b..3949a0c01e2d305d9560791a1dd9ed8cfda8d6b5 100644 +index fb69efbfa8e355f8389abf9490cf338e70f16c7b..52099b2312b042b0afdd5ee3d2df5c66ea25df8b 100644 --- a/chrome/browser/printing/print_view_manager_base.cc +++ b/chrome/browser/printing/print_view_manager_base.cc @@ -30,10 +30,10 @@ @@ -206,7 +206,7 @@ index fb69efbfa8e355f8389abf9490cf338e70f16c7b..3949a0c01e2d305d9560791a1dd9ed8c -bool PrintViewManagerBase::PrintNow(content::RenderFrameHost* rfh) { +bool PrintViewManagerBase::PrintNow(content::RenderFrameHost* rfh, + bool silent, -+ base::Value settings, ++ base::Value::Dict settings, + CompletionCallback callback) { // Remember the ID for `rfh`, to enable checking that the `RenderFrameHost` // is still valid after a possible inner message loop runs in @@ -402,12 +402,12 @@ index fb69efbfa8e355f8389abf9490cf338e70f16c7b..3949a0c01e2d305d9560791a1dd9ed8c void PrintViewManagerBase::CompletePrintNow(content::RenderFrameHost* rfh) { - GetPrintRenderFrame(rfh)->PrintRequestedPages(); -+ GetPrintRenderFrame(rfh)->PrintRequestedPages(true/*silent*/, base::Value{}/*job_settings*/); ++ GetPrintRenderFrame(rfh)->PrintRequestedPages(/*silent=*/true, /*job_settings=*/base::Value::Dict()); for (auto& observer : GetObservers()) observer.OnPrintNow(rfh); diff --git a/chrome/browser/printing/print_view_manager_base.h b/chrome/browser/printing/print_view_manager_base.h -index 48895e0f8a846aeb725e306c7f22ac159d5d96a7..7ae57ba04cedd9d4a428c140e48bd9a8ecb57c21 100644 +index 48895e0f8a846aeb725e306c7f22ac159d5d96a7..027794e38f86ab1905c5cdd95140b2cb1e5c5653 100644 --- a/chrome/browser/printing/print_view_manager_base.h +++ b/chrome/browser/printing/print_view_manager_base.h @@ -41,6 +41,8 @@ namespace printing { @@ -426,7 +426,7 @@ index 48895e0f8a846aeb725e306c7f22ac159d5d96a7..7ae57ba04cedd9d4a428c140e48bd9a8 - virtual bool PrintNow(content::RenderFrameHost* rfh); + virtual bool PrintNow(content::RenderFrameHost* rfh, + bool silent = true, -+ base::Value settings = {}, ++ base::Value::Dict settings = {}, + CompletionCallback callback = {}); #if BUILDFLAG(ENABLE_PRINT_PREVIEW) @@ -466,7 +466,7 @@ index 48895e0f8a846aeb725e306c7f22ac159d5d96a7..7ae57ba04cedd9d4a428c140e48bd9a8 // This means we are _blocking_ until all the necessary pages have been // rendered or the print settings are being loaded. diff --git a/chrome/browser/ui/webui/print_preview/fake_print_render_frame.cc b/chrome/browser/ui/webui/print_preview/fake_print_render_frame.cc -index 016e0d8fcc575bfa77323d8600d5daba152abbc6..3a9b68a88c71c6f9760ed305f8aefd9fa5e71650 100644 +index 016e0d8fcc575bfa77323d8600d5daba152abbc6..dfb856f57767e24c0ec495c94e515afbb83e19ea 100644 --- a/chrome/browser/ui/webui/print_preview/fake_print_render_frame.cc +++ b/chrome/browser/ui/webui/print_preview/fake_print_render_frame.cc @@ -20,7 +20,7 @@ FakePrintRenderFrame::FakePrintRenderFrame( @@ -474,12 +474,12 @@ index 016e0d8fcc575bfa77323d8600d5daba152abbc6..3a9b68a88c71c6f9760ed305f8aefd9f FakePrintRenderFrame::~FakePrintRenderFrame() = default; -void FakePrintRenderFrame::PrintRequestedPages() {} -+void FakePrintRenderFrame::PrintRequestedPages(bool /*silent*/, ::base::Value /*settings*/) {} ++void FakePrintRenderFrame::PrintRequestedPages(bool /*silent*/, ::base::Value::Dict /*settings*/) {} void FakePrintRenderFrame::PrintForSystemDialog() {} diff --git a/chrome/browser/ui/webui/print_preview/fake_print_render_frame.h b/chrome/browser/ui/webui/print_preview/fake_print_render_frame.h -index 3c95ee5c0d169f677947427a6ace55b4bfe80277..9e9d3f327b0033229cdd9b78159a1abdad5d3a80 100644 +index 3c95ee5c0d169f677947427a6ace55b4bfe80277..63ba8aca503968d0409b63b991a9276228d60d4a 100644 --- a/chrome/browser/ui/webui/print_preview/fake_print_render_frame.h +++ b/chrome/browser/ui/webui/print_preview/fake_print_render_frame.h @@ -25,7 +25,7 @@ class FakePrintRenderFrame : public mojom::PrintRenderFrame { @@ -487,7 +487,7 @@ index 3c95ee5c0d169f677947427a6ace55b4bfe80277..9e9d3f327b0033229cdd9b78159a1abd private: // printing::mojom::PrintRenderFrame: - void PrintRequestedPages() override; -+ void PrintRequestedPages(bool silent, ::base::Value settings) override; ++ void PrintRequestedPages(bool silent, ::base::Value::Dict settings) override; void PrintForSystemDialog() override; void SetPrintPreviewUI( mojo::PendingAssociatedRemote preview) override; @@ -541,7 +541,7 @@ index 3ba45e77f66531bc6b81717eb9c7d3faca1e9fa9..41271d3fe390dd16d1c2b9839ac32013 void PdfPrintManager::ShowInvalidPrinterSettingsError() { diff --git a/components/printing/common/print.mojom b/components/printing/common/print.mojom -index 156b987aa9cafb69c04bed483aa78f26baa9cd97..fd50e8ca937878d73f9ae4c22aec204e7851e95b 100644 +index 156b987aa9cafb69c04bed483aa78f26baa9cd97..3d3f2cb97b59a6e46bf0c16dd2355aa8e21ec5da 100644 --- a/components/printing/common/print.mojom +++ b/components/printing/common/print.mojom @@ -275,7 +275,7 @@ interface PrintPreviewUI { @@ -549,7 +549,7 @@ index 156b987aa9cafb69c04bed483aa78f26baa9cd97..fd50e8ca937878d73f9ae4c22aec204e // Tells the RenderFrame to switch the CSS to print media type, render every // requested page, and then switch back the CSS to display media type. - PrintRequestedPages(); -+ PrintRequestedPages(bool silent, mojo_base.mojom.DeprecatedDictionaryValue settings); ++ PrintRequestedPages(bool silent, mojo_base.mojom.DictionaryValue settings); // Tells the RenderFrame to switch the CSS to print media type, render every // requested page using the print preview document's frame/node, and then @@ -563,7 +563,7 @@ index 156b987aa9cafb69c04bed483aa78f26baa9cd97..fd50e8ca937878d73f9ae4c22aec204e // Tells the browser that there are invalid printer settings. ShowInvalidPrinterSettingsError(); diff --git a/components/printing/renderer/print_render_frame_helper.cc b/components/printing/renderer/print_render_frame_helper.cc -index e0ecf8f3f09dafe44a5220117281a08e38a61bef..01059e34e4c90c681dd347ad4876c0fb208b0d21 100644 +index e0ecf8f3f09dafe44a5220117281a08e38a61bef..edbaa28ec4ffd22b6afa332365c5dc51c33de31e 100644 --- a/components/printing/renderer/print_render_frame_helper.cc +++ b/components/printing/renderer/print_render_frame_helper.cc @@ -41,6 +41,7 @@ @@ -580,7 +580,7 @@ index e0ecf8f3f09dafe44a5220117281a08e38a61bef..01059e34e4c90c681dd347ad4876c0fb - Print(web_frame, blink::WebNode(), PrintRequestType::kScripted); + Print(web_frame, blink::WebNode(), PrintRequestType::kScripted, -+ false /* silent */, base::DictionaryValue() /* new_settings */); ++ false /* silent */, base::Value::Dict() /* new_settings */); if (!weak_this) return; @@ -589,7 +589,7 @@ index e0ecf8f3f09dafe44a5220117281a08e38a61bef..01059e34e4c90c681dd347ad4876c0fb } -void PrintRenderFrameHelper::PrintRequestedPages() { -+void PrintRenderFrameHelper::PrintRequestedPages(bool silent, base::Value settings) { ++void PrintRenderFrameHelper::PrintRequestedPages(bool silent, base::Value::Dict settings) { ScopedIPC scoped_ipc(weak_ptr_factory_.GetWeakPtr()); if (ipc_nesting_level_ > kAllowedIpcDepthForPrint) return; @@ -608,7 +608,7 @@ index e0ecf8f3f09dafe44a5220117281a08e38a61bef..01059e34e4c90c681dd347ad4876c0fb Print(frame, print_preview_context_.source_node(), - PrintRequestType::kRegular); + PrintRequestType::kRegular, false, -+ base::DictionaryValue()); ++ base::Value::Dict()); if (!render_frame_gone_) print_preview_context_.DispatchAfterPrintEvent(); // WARNING: |this| may be gone at this point. Do not do any more work here and @@ -627,7 +627,7 @@ index e0ecf8f3f09dafe44a5220117281a08e38a61bef..01059e34e4c90c681dd347ad4876c0fb Print(duplicate_node.GetDocument().GetFrame(), duplicate_node, - PrintRequestType::kRegular); + PrintRequestType::kRegular, false /* silent */, -+ base::DictionaryValue() /* new_settings */); ++ base::Value::Dict() /* new_settings */); // Check if |this| is still valid. if (!weak_this) return; @@ -638,7 +638,7 @@ index e0ecf8f3f09dafe44a5220117281a08e38a61bef..01059e34e4c90c681dd347ad4876c0fb - PrintRequestType print_request_type) { + PrintRequestType print_request_type, + bool silent, -+ base::Value settings) { ++ base::Value::Dict settings) { // If still not finished with earlier print request simply ignore. if (prep_frame_view_) return; @@ -647,7 +647,7 @@ index e0ecf8f3f09dafe44a5220117281a08e38a61bef..01059e34e4c90c681dd347ad4876c0fb uint32_t expected_page_count = 0; - if (!CalculateNumberOfPages(frame, node, &expected_page_count)) { -+ if (!CalculateNumberOfPages(frame, node, &expected_page_count, base::Value::AsDictionaryValue(settings))) { ++ if (!CalculateNumberOfPages(frame, node, &expected_page_count, std::move(settings))) { DidFinishPrinting(FAIL_PRINT_INIT); return; // Failed to init print page settings. } @@ -678,10 +678,10 @@ index e0ecf8f3f09dafe44a5220117281a08e38a61bef..01059e34e4c90c681dd347ad4876c0fb - GetPrintManagerHost()->GetDefaultPrintSettings(&settings.params); +bool PrintRenderFrameHelper::InitPrintSettings( + bool fit_to_paper_size, -+ const base::DictionaryValue& new_settings) { ++ base::Value::Dict new_settings) { + mojom::PrintPagesParamsPtr settings; + -+ if (new_settings.DictEmpty()) { ++ if (new_settings.empty()) { + settings = mojom::PrintPagesParams::New(); + settings->params = mojom::PrintParams::New(); + GetPrintManagerHost()->GetDefaultPrintSettings(&settings->params); @@ -690,7 +690,7 @@ index e0ecf8f3f09dafe44a5220117281a08e38a61bef..01059e34e4c90c681dd347ad4876c0fb + int cookie = + print_pages_params_ ? print_pages_params_->params->document_cookie : 0; + GetPrintManagerHost()->UpdatePrintSettings( -+ cookie, new_settings.GetDict().Clone(), &settings, &canceled); ++ cookie, std::move(new_settings), &settings, &canceled); + if (canceled) + return false; + } @@ -725,11 +725,11 @@ index e0ecf8f3f09dafe44a5220117281a08e38a61bef..01059e34e4c90c681dd347ad4876c0fb + blink::WebLocalFrame* frame, + const blink::WebNode& node, + uint32_t* number_of_pages, -+ const base::DictionaryValue& settings) { ++ base::Value::Dict settings) { DCHECK(frame); bool fit_to_paper_size = !IsPrintingPdfFrame(frame, node); - if (!InitPrintSettings(fit_to_paper_size)) { -+ if (!InitPrintSettings(fit_to_paper_size, settings)) { ++ if (!InitPrintSettings(fit_to_paper_size, std::move(settings))) { notify_browser_of_print_failure_ = false; GetPrintManagerHost()->ShowInvalidPrinterSettingsError(); return false; @@ -763,7 +763,7 @@ index e0ecf8f3f09dafe44a5220117281a08e38a61bef..01059e34e4c90c681dd347ad4876c0fb bool PrintRenderFrameHelper::PreviewPageRendered( diff --git a/components/printing/renderer/print_render_frame_helper.h b/components/printing/renderer/print_render_frame_helper.h -index 15c367bd66706c915fdb95faf483429a8b31eb4c..628e113b861b6ea5157ff2179ea29dbb063ad992 100644 +index 15c367bd66706c915fdb95faf483429a8b31eb4c..ba2d5decbad2195c63efa4a5e23c60df7de69441 100644 --- a/components/printing/renderer/print_render_frame_helper.h +++ b/components/printing/renderer/print_render_frame_helper.h @@ -254,7 +254,7 @@ class PrintRenderFrameHelper @@ -771,7 +771,7 @@ index 15c367bd66706c915fdb95faf483429a8b31eb4c..628e113b861b6ea5157ff2179ea29dbb // printing::mojom::PrintRenderFrame: - void PrintRequestedPages() override; -+ void PrintRequestedPages(bool silent, base::Value settings) override; ++ void PrintRequestedPages(bool silent, base::Value::Dict settings) override; #if BUILDFLAG(ENABLE_PRINT_PREVIEW) void PrintForSystemDialog() override; void SetPrintPreviewUI( @@ -782,7 +782,7 @@ index 15c367bd66706c915fdb95faf483429a8b31eb4c..628e113b861b6ea5157ff2179ea29dbb - PrintRequestType print_request_type); + PrintRequestType print_request_type, + bool silent, -+ base::Value settings); ++ base::Value::Dict settings); // Notification when printing is done - signal tear-down/free resources. void DidFinishPrinting(PrintingResult result); @@ -792,14 +792,14 @@ index 15c367bd66706c915fdb95faf483429a8b31eb4c..628e113b861b6ea5157ff2179ea29dbb // Used only for native printing workflow. - bool InitPrintSettings(bool fit_to_paper_size); + bool InitPrintSettings(bool fit_to_paper_size, -+ const base::DictionaryValue& settings); ++ base::Value::Dict new_settings); // Calculate number of pages in source document. bool CalculateNumberOfPages(blink::WebLocalFrame* frame, const blink::WebNode& node, - uint32_t* number_of_pages); + uint32_t* number_of_pages, -+ const base::DictionaryValue& settings); ++ base::Value::Dict settings); #if BUILDFLAG(ENABLE_PRINT_PREVIEW) // Set options for print preset from source PDF document. diff --git a/shell/browser/api/electron_api_web_contents.cc b/shell/browser/api/electron_api_web_contents.cc index 5db6744bd7ce1..c22dc39bd0d5b 100644 --- a/shell/browser/api/electron_api_web_contents.cc +++ b/shell/browser/api/electron_api_web_contents.cc @@ -2593,7 +2593,7 @@ bool WebContents::IsCurrentlyAudible() { #if BUILDFLAG(ENABLE_PRINTING) void WebContents::OnGetDefaultPrinter( - base::Value print_settings, + base::Value::Dict print_settings, printing::CompletionCallback print_callback, std::u16string device_name, bool silent, @@ -2623,7 +2623,7 @@ void WebContents::OnGetDefaultPrinter( return; } - print_settings.SetStringKey(printing::kSettingDeviceName, printer_name); + print_settings.Set(printing::kSettingDeviceName, printer_name); auto* print_view_manager = PrintViewManagerElectron::FromWebContents(web_contents()); @@ -2642,7 +2642,7 @@ void WebContents::OnGetDefaultPrinter( void WebContents::Print(gin::Arguments* args) { gin_helper::Dictionary options = gin::Dictionary::CreateEmpty(args->isolate()); - base::Value settings(base::Value::Type::DICTIONARY); + base::Value::Dict settings; if (args->Length() >= 1 && !args->GetNext(&options)) { gin_helper::ErrorThrower(args->isolate()) @@ -2663,8 +2663,7 @@ void WebContents::Print(gin::Arguments* args) { bool print_background = false; options.Get("printBackground", &print_background); - settings.SetBoolKey(printing::kSettingShouldPrintBackgrounds, - print_background); + settings.Set(printing::kSettingShouldPrintBackgrounds, print_background); // Set custom margin settings gin_helper::Dictionary margins = @@ -2673,28 +2672,26 @@ void WebContents::Print(gin::Arguments* args) { printing::mojom::MarginType margin_type = printing::mojom::MarginType::kDefaultMargins; margins.Get("marginType", &margin_type); - settings.SetIntKey(printing::kSettingMarginsType, - static_cast(margin_type)); + settings.Set(printing::kSettingMarginsType, static_cast(margin_type)); if (margin_type == printing::mojom::MarginType::kCustomMargins) { - base::Value custom_margins(base::Value::Type::DICTIONARY); + base::Value::Dict custom_margins; int top = 0; margins.Get("top", &top); - custom_margins.SetIntKey(printing::kSettingMarginTop, top); + custom_margins.Set(printing::kSettingMarginTop, top); int bottom = 0; margins.Get("bottom", &bottom); - custom_margins.SetIntKey(printing::kSettingMarginBottom, bottom); + custom_margins.Set(printing::kSettingMarginBottom, bottom); int left = 0; margins.Get("left", &left); - custom_margins.SetIntKey(printing::kSettingMarginLeft, left); + custom_margins.Set(printing::kSettingMarginLeft, left); int right = 0; margins.Get("right", &right); - custom_margins.SetIntKey(printing::kSettingMarginRight, right); - settings.SetPath(printing::kSettingMarginsCustom, - std::move(custom_margins)); + custom_margins.Set(printing::kSettingMarginRight, right); + settings.Set(printing::kSettingMarginsCustom, std::move(custom_margins)); } } else { - settings.SetIntKey( + settings.Set( printing::kSettingMarginsType, static_cast(printing::mojom::MarginType::kDefaultMargins)); } @@ -2704,12 +2701,12 @@ void WebContents::Print(gin::Arguments* args) { options.Get("color", &print_color); auto const color_model = print_color ? printing::mojom::ColorModel::kColor : printing::mojom::ColorModel::kGray; - settings.SetIntKey(printing::kSettingColor, static_cast(color_model)); + settings.Set(printing::kSettingColor, static_cast(color_model)); // Is the orientation landscape or portrait. bool landscape = false; options.Get("landscape", &landscape); - settings.SetBoolKey(printing::kSettingLandscape, landscape); + settings.Set(printing::kSettingLandscape, landscape); // We set the default to the system's default printer and only update // if at the Chromium level if the user overrides. @@ -2724,21 +2721,21 @@ void WebContents::Print(gin::Arguments* args) { int scale_factor = 100; options.Get("scaleFactor", &scale_factor); - settings.SetIntKey(printing::kSettingScaleFactor, scale_factor); + settings.Set(printing::kSettingScaleFactor, scale_factor); int pages_per_sheet = 1; options.Get("pagesPerSheet", &pages_per_sheet); - settings.SetIntKey(printing::kSettingPagesPerSheet, pages_per_sheet); + settings.Set(printing::kSettingPagesPerSheet, pages_per_sheet); // True if the user wants to print with collate. bool collate = true; options.Get("collate", &collate); - settings.SetBoolKey(printing::kSettingCollate, collate); + settings.Set(printing::kSettingCollate, collate); // The number of individual copies to print int copies = 1; options.Get("copies", &copies); - settings.SetIntKey(printing::kSettingCopies, copies); + settings.Set(printing::kSettingCopies, copies); // Strings to be printed as headers and footers if requested by the user. std::string header; @@ -2747,53 +2744,52 @@ void WebContents::Print(gin::Arguments* args) { options.Get("footer", &footer); if (!(header.empty() && footer.empty())) { - settings.SetBoolKey(printing::kSettingHeaderFooterEnabled, true); + settings.Set(printing::kSettingHeaderFooterEnabled, true); - settings.SetStringKey(printing::kSettingHeaderFooterTitle, header); - settings.SetStringKey(printing::kSettingHeaderFooterURL, footer); + settings.Set(printing::kSettingHeaderFooterTitle, header); + settings.Set(printing::kSettingHeaderFooterURL, footer); } else { - settings.SetBoolKey(printing::kSettingHeaderFooterEnabled, false); + settings.Set(printing::kSettingHeaderFooterEnabled, false); } // We don't want to allow the user to enable these settings // but we need to set them or a CHECK is hit. - settings.SetIntKey(printing::kSettingPrinterType, - static_cast(printing::mojom::PrinterType::kLocal)); - settings.SetBoolKey(printing::kSettingShouldPrintSelectionOnly, false); - settings.SetBoolKey(printing::kSettingRasterizePdf, false); + settings.Set(printing::kSettingPrinterType, + static_cast(printing::mojom::PrinterType::kLocal)); + settings.Set(printing::kSettingShouldPrintSelectionOnly, false); + settings.Set(printing::kSettingRasterizePdf, false); // Set custom page ranges to print std::vector page_ranges; if (options.Get("pageRanges", &page_ranges)) { - base::Value page_range_list(base::Value::Type::LIST); + base::Value::List page_range_list; for (auto& range : page_ranges) { int from, to; if (range.Get("from", &from) && range.Get("to", &to)) { - base::Value range(base::Value::Type::DICTIONARY); + base::Value::Dict range; // Chromium uses 1-based page ranges, so increment each by 1. - range.SetIntKey(printing::kSettingPageRangeFrom, from + 1); - range.SetIntKey(printing::kSettingPageRangeTo, to + 1); + range.Set(printing::kSettingPageRangeFrom, from + 1); + range.Set(printing::kSettingPageRangeTo, to + 1); page_range_list.Append(std::move(range)); } else { continue; } } - if (!page_range_list.GetListDeprecated().empty()) - settings.SetPath(printing::kSettingPageRange, std::move(page_range_list)); + if (!page_range_list.empty()) + settings.Set(printing::kSettingPageRange, std::move(page_range_list)); } // Duplex type user wants to use. printing::mojom::DuplexMode duplex_mode = printing::mojom::DuplexMode::kSimplex; options.Get("duplexMode", &duplex_mode); - settings.SetIntKey(printing::kSettingDuplexMode, - static_cast(duplex_mode)); + settings.Set(printing::kSettingDuplexMode, static_cast(duplex_mode)); // We've already done necessary parameter sanitization at the // JS level, so we can simply pass this through. base::Value media_size(base::Value::Type::DICTIONARY); if (options.Get("mediaSize", &media_size)) - settings.SetKey(printing::kSettingMediaSize, std::move(media_size)); + settings.Set(printing::kSettingMediaSize, std::move(media_size)); // Set custom dots per inch (dpi) gin_helper::Dictionary dpi_settings; @@ -2801,13 +2797,13 @@ void WebContents::Print(gin::Arguments* args) { if (options.Get("dpi", &dpi_settings)) { int horizontal = 72; dpi_settings.Get("horizontal", &horizontal); - settings.SetIntKey(printing::kSettingDpiHorizontal, horizontal); + settings.Set(printing::kSettingDpiHorizontal, horizontal); int vertical = 72; dpi_settings.Get("vertical", &vertical); - settings.SetIntKey(printing::kSettingDpiVertical, vertical); + settings.Set(printing::kSettingDpiVertical, vertical); } else { - settings.SetIntKey(printing::kSettingDpiHorizontal, dpi); - settings.SetIntKey(printing::kSettingDpiVertical, dpi); + settings.Set(printing::kSettingDpiHorizontal, dpi); + settings.Set(printing::kSettingDpiVertical, dpi); } print_task_runner_->PostTaskAndReplyWithResult( diff --git a/shell/browser/api/electron_api_web_contents.h b/shell/browser/api/electron_api_web_contents.h index 996c90cbbbc39..39e08a40aef00 100644 --- a/shell/browser/api/electron_api_web_contents.h +++ b/shell/browser/api/electron_api_web_contents.h @@ -222,7 +222,7 @@ class WebContents : public ExclusiveAccessContext, void HandleNewRenderFrame(content::RenderFrameHost* render_frame_host); #if BUILDFLAG(ENABLE_PRINTING) - void OnGetDefaultPrinter(base::Value print_settings, + void OnGetDefaultPrinter(base::Value::Dict print_settings, printing::CompletionCallback print_callback, std::u16string device_name, bool silent,