diff options
author | vandebo@chromium.org <vandebo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-10-15 22:30:48 +0000 |
---|---|---|
committer | vandebo@chromium.org <vandebo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-10-15 22:30:48 +0000 |
commit | 1c23b4e86cf43bf86c591840bba6be39ad49b0c9 (patch) | |
tree | 5e3c268f4544a27d74fc81d0820e0a3fd82949ae /printing/printing_context.cc | |
parent | 0374b165987b53354edca740082640315091fd95 (diff) | |
download | chromium_src-1c23b4e86cf43bf86c591840bba6be39ad49b0c9.zip chromium_src-1c23b4e86cf43bf86c591840bba6be39ad49b0c9.tar.gz chromium_src-1c23b4e86cf43bf86c591840bba6be39ad49b0c9.tar.bz2 |
Move margin processing code to the browser process.
It seems that this is where it is supposed to live and it was erroneously added to PrintWebViewHelper.
BUG=67091, 92045, 91880, 92000, 92218, 95905
TEST=NONE
Review URL: http://codereview.chromium.org/8201027
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@105688 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'printing/printing_context.cc')
-rw-r--r-- | printing/printing_context.cc | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/printing/printing_context.cc b/printing/printing_context.cc index 4e9d03a..46c0e6e 100644 --- a/printing/printing_context.cc +++ b/printing/printing_context.cc @@ -4,7 +4,9 @@ #include "printing/printing_context.h" +#include "base/logging.h" #include "base/values.h" +#include "printing/page_setup.h" #include "printing/print_settings_initializer.h" namespace printing { @@ -19,6 +21,11 @@ PrintingContext::PrintingContext(const std::string& app_locale) PrintingContext::~PrintingContext() { } +void PrintingContext::set_margin_type(MarginType type) { + DCHECK(type != CUSTOM_MARGINS); + settings_.margin_type = type; +} + void PrintingContext::ResetSettings() { ReleaseContext(); @@ -37,6 +44,51 @@ PrintingContext::Result PrintingContext::OnError() { PrintingContext::Result PrintingContext::UpdatePrintSettings( const base::DictionaryValue& job_settings, const PageRanges& ranges) { + ResetSettings(); + + if (!job_settings.GetBoolean(printing::kSettingHeaderFooterEnabled, + &settings_.display_header_footer)) { + NOTREACHED(); + } + + int margin_type = DEFAULT_MARGINS; + if (!job_settings.GetInteger(printing::kSettingMarginsType, &margin_type) || + (margin_type != DEFAULT_MARGINS && + margin_type != NO_MARGINS && + margin_type != CUSTOM_MARGINS && + margin_type != PRINTABLE_AREA_MARGINS)) { + NOTREACHED(); + } + settings_.margin_type = static_cast<MarginType>(margin_type); + + if (margin_type == CUSTOM_MARGINS) { + double top_margin_in_points = 0; + double bottom_margin_in_points = 0; + double left_margin_in_points = 0; + double right_margin_in_points = 0; + DictionaryValue* custom_margins; + if (!job_settings.GetDictionary(printing::kSettingMarginsCustom, + &custom_margins) || + !custom_margins->GetDouble(printing::kSettingMarginTop, + &top_margin_in_points) || + !custom_margins->GetDouble(printing::kSettingMarginBottom, + &bottom_margin_in_points) || + !custom_margins->GetDouble(printing::kSettingMarginLeft, + &left_margin_in_points) || + !custom_margins->GetDouble(printing::kSettingMarginRight, + &right_margin_in_points)) { + NOTREACHED(); + } + PageMargins margins_in_points; + margins_in_points.Clear(); + margins_in_points.top = top_margin_in_points; + margins_in_points.bottom = bottom_margin_in_points; + margins_in_points.left = left_margin_in_points; + margins_in_points.right = right_margin_in_points; + + settings_.SetCustomMargins(margins_in_points); + } + PrintingContext::Result result = UpdatePrinterSettings(job_settings, ranges); printing::PrintSettingsInitializer::InitHeaderFooterStrings(job_settings, &settings_); |