diff --git a/patches/chromium/printing.patch b/patches/chromium/printing.patch index 05095365b1196..72def593bc485 100644 --- a/patches/chromium/printing.patch +++ b/patches/chromium/printing.patch @@ -420,7 +420,7 @@ index 51ebcb4ae399018d3fd8566656596a7ef1f148af..5f2b807fc364131f4c3e6a1646ec522d // 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 diff --git a/components/printing/renderer/print_render_frame_helper.cc b/components/printing/renderer/print_render_frame_helper.cc -index ed3178671552bd673820f1d078374cf34e704797..4a5ccdadabfdd6eea89b9bb5e726938fbad4cf5f 100644 +index ed3178671552bd673820f1d078374cf34e704797..946b307d54962ec13d097e862f8cffb503c623b6 100644 --- a/components/printing/renderer/print_render_frame_helper.cc +++ b/components/printing/renderer/print_render_frame_helper.cc @@ -38,6 +38,7 @@ @@ -525,18 +525,52 @@ index ed3178671552bd673820f1d078374cf34e704797..4a5ccdadabfdd6eea89b9bb5e726938f // Check if |this| is still valid. if (!self) return; -@@ -2172,7 +2187,9 @@ void PrintRenderFrameHelper::IPCProcessed() { +@@ -2172,36 +2187,51 @@ void PrintRenderFrameHelper::IPCProcessed() { } } -bool PrintRenderFrameHelper::InitPrintSettings(bool fit_to_paper_size) { +- mojom::PrintPagesParams settings; +- settings.params = mojom::PrintParams::New(); +- GetPrintManagerHost()->GetDefaultPrintSettings(&settings.params); +bool PrintRenderFrameHelper::InitPrintSettings( + bool fit_to_paper_size, + const base::DictionaryValue& new_settings) { - mojom::PrintPagesParams settings; - settings.params = mojom::PrintParams::New(); - GetPrintManagerHost()->GetDefaultPrintSettings(&settings.params); -@@ -2196,12 +2213,14 @@ bool PrintRenderFrameHelper::InitPrintSettings(bool fit_to_paper_size) { ++ mojom::PrintPagesParamsPtr settings; ++ ++ if (new_settings.DictEmpty()) { ++ settings = mojom::PrintPagesParams::New(); ++ settings->params = mojom::PrintParams::New(); ++ GetPrintManagerHost()->GetDefaultPrintSettings(&settings->params); ++ } else { ++ bool canceled = false; ++ int cookie = ++ print_pages_params_ ? print_pages_params_->params->document_cookie : 0; ++ GetPrintManagerHost()->UpdatePrintSettings(cookie, new_settings.Clone(), &settings, &canceled); ++ if (canceled) ++ return false; ++ } + + // Check if the printer returned any settings, if the settings is empty, we + // can safely assume there are no printer drivers configured. So we safely + // terminate. + bool result = true; +- if (!PrintMsg_Print_Params_IsValid(*settings.params)) ++ if (!PrintMsg_Print_Params_IsValid(*settings->params)) + result = false; + + // Reset to default values. + ignore_css_margins_ = false; +- settings.pages.clear(); ++ settings->pages.clear(); + +- settings.params->print_scaling_option = ++ settings->params->print_scaling_option = + fit_to_paper_size ? mojom::PrintScalingOption::kFitToPrintableArea + : mojom::PrintScalingOption::kSourceSize; + +- SetPrintPagesParams(settings); ++ SetPrintPagesParams(*settings); return result; } @@ -555,7 +589,7 @@ index ed3178671552bd673820f1d078374cf34e704797..4a5ccdadabfdd6eea89b9bb5e726938f notify_browser_of_print_failure_ = false; GetPrintManagerHost()->ShowInvalidPrinterSettingsError(); return false; -@@ -2572,18 +2591,7 @@ void PrintRenderFrameHelper::RequestPrintPreview(PrintPreviewRequestType type) { +@@ -2572,18 +2602,7 @@ void PrintRenderFrameHelper::RequestPrintPreview(PrintPreviewRequestType type) { } bool PrintRenderFrameHelper::CheckForCancel() {