summaryrefslogtreecommitdiffstats
path: root/printing/printing_context.cc
diff options
context:
space:
mode:
authorvandebo@chromium.org <vandebo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-10-15 22:30:48 +0000
committervandebo@chromium.org <vandebo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-10-15 22:30:48 +0000
commit1c23b4e86cf43bf86c591840bba6be39ad49b0c9 (patch)
tree5e3c268f4544a27d74fc81d0820e0a3fd82949ae /printing/printing_context.cc
parent0374b165987b53354edca740082640315091fd95 (diff)
downloadchromium_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.cc52
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_);