diff options
author | alekseys@chromium.org <alekseys@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-05-14 23:52:55 +0000 |
---|---|---|
committer | alekseys@chromium.org <alekseys@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-05-14 23:52:55 +0000 |
commit | ae98e57f18d287b34a5d24fab5afd19aea56cc11 (patch) | |
tree | 6009458e2af0d01dc2348a77df4a4a66d29ffc58 /printing | |
parent | 46e0613315cfe4fea3ebd26960c0e025e49f1e0f (diff) | |
download | chromium_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.cc | 9 | ||||
-rw-r--r-- | printing/print_job_constants.h | 3 | ||||
-rw-r--r-- | printing/printing_context.cc | 17 |
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( |