Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(434)

Unified Diff: printing/printing_context.cc

Issue 8201027: Move margin processing code to the browser process. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix issue that turned up on Windows Created 9 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: printing/printing_context.cc
diff --git a/printing/printing_context.cc b/printing/printing_context.cc
index 4e9d03a8469418ead6a83561434bfcb1a3e8db11..9f40f02e536f36c55c273bda24a7e085ebc5fc9c 100644
--- a/printing/printing_context.cc
+++ b/printing/printing_context.cc
@@ -5,6 +5,7 @@
#include "printing/printing_context.h"
#include "base/values.h"
+#include "printing/page_setup.h"
#include "printing/print_settings_initializer.h"
namespace printing {
@@ -19,6 +20,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 +43,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 &&
Lei Zhang 2011/10/15 03:42:19 Maybe in printing/print_job_constants.h make sure
+ 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_);

Powered by Google App Engine
This is Rietveld 408576698