summaryrefslogtreecommitdiffstats
path: root/printing
diff options
context:
space:
mode:
authoralekseys@chromium.org <alekseys@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-05-14 23:52:55 +0000
committeralekseys@chromium.org <alekseys@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-05-14 23:52:55 +0000
commitae98e57f18d287b34a5d24fab5afd19aea56cc11 (patch)
tree6009458e2af0d01dc2348a77df4a4a66d29ffc58 /printing
parent46e0613315cfe4fea3ebd26960c0e025e49f1e0f (diff)
downloadchromium_src-ae98e57f18d287b34a5d24fab5afd19aea56cc11.zip
chromium_src-ae98e57f18d287b34a5d24fab5afd19aea56cc11.tar.gz
chromium_src-ae98e57f18d287b34a5d24fab5afd19aea56cc11.tar.bz2
Change print preview size to match to media size capability selection and reset margins to default when media size changes.
BUG=139170 NOTRY=true Review URL: https://codereview.chromium.org/285613002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@270515 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'printing')
-rw-r--r--printing/print_job_constants.cc9
-rw-r--r--printing/print_job_constants.h3
-rw-r--r--printing/printing_context.cc17
3 files changed, 27 insertions, 2 deletions
diff --git a/printing/print_job_constants.cc b/printing/print_job_constants.cc
index 6bc5941..832f700 100644
--- a/printing/print_job_constants.cc
+++ b/printing/print_job_constants.cc
@@ -77,6 +77,15 @@ const char kSettingHeaderFooterURL[] = "url";
// Page orientation: true for landscape, false for portrait.
const char kSettingLandscape[] = "landscape";
+// Key that specifies the requested media size.
+const char kSettingMediaSize[] = "mediaSize";
+
+// Key that specifies the requested media height in microns.
+const char kSettingMediaSizeHeightMicrons[] = "height_microns";
+
+// Key that specifies the requested media width in microns.
+const char kSettingMediaSizeWidthMicrons[] = "width_microns";
+
// Key that specifies the bottom margin of the page.
const char kSettingMarginBottom[] = "marginBottom";
diff --git a/printing/print_job_constants.h b/printing/print_job_constants.h
index 260c1615..2deca79 100644
--- a/printing/print_job_constants.h
+++ b/printing/print_job_constants.h
@@ -32,6 +32,9 @@ PRINTING_EXPORT extern const char kSettingHeaderFooterDate[];
PRINTING_EXPORT extern const char kSettingHeaderFooterTitle[];
PRINTING_EXPORT extern const char kSettingHeaderFooterURL[];
PRINTING_EXPORT extern const char kSettingLandscape[];
+PRINTING_EXPORT extern const char kSettingMediaSize[];
+PRINTING_EXPORT extern const char kSettingMediaSizeHeightMicrons[];
+PRINTING_EXPORT extern const char kSettingMediaSizeWidthMicrons[];
PRINTING_EXPORT extern const char kSettingMarginBottom[];
PRINTING_EXPORT extern const char kSettingMarginLeft[];
PRINTING_EXPORT extern const char kSettingMarginRight[];
diff --git a/printing/printing_context.cc b/printing/printing_context.cc
index 8451463..817d59c 100644
--- a/printing/printing_context.cc
+++ b/printing/printing_context.cc
@@ -8,6 +8,7 @@
#include "base/values.h"
#include "printing/page_setup.h"
#include "printing/page_size_margins.h"
+#include "printing/print_job_constants.h"
#include "printing/print_settings_initializer.h"
#include "printing/units.h"
@@ -76,9 +77,21 @@ PrintingContext::Result PrintingContext::UpdatePrintSettings(
if (!open_in_external_preview && (print_to_pdf || print_to_cloud ||
is_cloud_dialog || print_with_privet)) {
settings_.set_dpi(kDefaultPdfDpi);
- // Cloud print should get size and rect from capabilities received from
- // server.
gfx::Size paper_size(GetPdfPaperSizeDeviceUnits());
+ const base::DictionaryValue* media_size = NULL;
+ if (job_settings.GetDictionary(kSettingMediaSize, &media_size)) {
+ int width_microns = 0;
+ int height_microns = 0;
+ if (media_size->GetInteger(kSettingMediaSizeWidthMicrons,
+ &width_microns) &&
+ media_size->GetInteger(kSettingMediaSizeHeightMicrons,
+ &height_microns)) {
+ float deviceMicronsPerDeviceUnit =
+ (kHundrethsMMPerInch * 10.0f) / settings_.device_units_per_inch();
+ paper_size = gfx::Size(width_microns / deviceMicronsPerDeviceUnit,
+ height_microns / deviceMicronsPerDeviceUnit);
+ }
+ }
gfx::Rect paper_rect(0, 0, paper_size.width(), paper_size.height());
if (print_to_cloud || print_with_privet) {
paper_rect.Inset(