      notify_browser_of_print_failure_ = false;
      GetPrintManagerHost()->ShowInvalidPrinterSettingsError();
      return false;
-@@ -2573,18 +2592,7 @@ void PrintRenderFrameHelper::RequestPrintPreview(PrintPreviewRequestType type) {
+@@ -2573,18 +2603,7 @@ void PrintRenderFrameHelper::RequestPrintPreview(PrintPreviewRequestType type) {
  }
  
  bool PrintRenderFrameHelper::CheckForCancel() {

   // 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 2760a694a946eb2e4dba1ee228dc5fc13a2fc98e..769976022186037d8e75e244bdb0450c5670b5c0 100644
--- a/components/printing/renderer/print_render_frame_helper.cc
+++ b/components/printing/renderer/print_render_frame_helper.cc
@@ -38,6 +38,7 @@

     // Check if |this| is still valid.
     if (!self)
       return;
@@ -2173,36 +2188,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::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;
 }
 
