Move settings setup for PDF and cloud print into single location in PrintingContext.
Hard-code CloudPrint printable area until we start to receive this data from server.

BUG=305731
NOTRY=true

Review URL: https://codereview.chromium.org/46623002

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@232741 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/printing/printing_context.cc b/printing/printing_context.cc
index 9b3b8aeb..40342e9 100644
--- a/printing/printing_context.cc
+++ b/printing/printing_context.cc
@@ -9,9 +9,14 @@
 #include "printing/page_setup.h"
 #include "printing/page_size_margins.h"
 #include "printing/print_settings_initializer.h"
+#include "printing/units.h"
 
 namespace printing {
 
+namespace {
+const float kCloudPrintMarginInch = 0.25;
+}
+
 PrintingContext::PrintingContext(const std::string& app_locale)
     : dialog_box_dismissed_(false),
       in_print_job_(false),
@@ -66,9 +71,24 @@
   bool open_in_external_preview =
       job_settings.HasKey(kSettingOpenPDFInPreview);
 
-  return UpdatePrinterSettings(
-      print_to_pdf || is_cloud_dialog || print_to_cloud,
-      open_in_external_preview);
+  if (!open_in_external_preview &&
+      (print_to_pdf || print_to_cloud || is_cloud_dialog)) {
+    settings_.set_dpi(kDefaultPdfDpi);
+    // Cloud print should get size and rect from capabilities received from
+    // server.
+    gfx::Size paper_size(GetPdfPaperSizeDeviceUnits());
+    gfx::Rect paper_rect(0, 0, paper_size.width(), paper_size.height());
+    if (print_to_cloud) {
+      paper_rect.Inset(
+          kCloudPrintMarginInch * settings_.device_units_per_inch(),
+          kCloudPrintMarginInch * settings_.device_units_per_inch());
+    }
+    DCHECK_EQ(settings_.device_units_per_inch(), kDefaultPdfDpi);
+    settings_.SetPrinterPrintableArea(paper_size, paper_rect, true);
+    return OK;
+  }
+
+  return UpdatePrinterSettings(open_in_external_preview);
 }
 
 }  // namespace printing