Index: printing/printing_context.cc |
diff --git a/printing/printing_context.cc b/printing/printing_context.cc |
index 4e9d03a8469418ead6a83561434bfcb1a3e8db11..05e3e86a061adee508787664da4c3d0450d64db1 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 { |
@@ -37,6 +38,51 @@ PrintingContext::Result PrintingContext::OnError() { |
PrintingContext::Result PrintingContext::UpdatePrintSettings( |
const base::DictionaryValue& job_settings, |
const PageRanges& ranges) { |
+ ResetSettings(); |
Lei Zhang
2011/10/08 02:02:05
I see you removed a ResetSettings() call in printi
vandebo (ex-Chrome)
2011/10/15 00:42:50
The previous ResetSettings happened after I set th
|
+ if (!job_settings.GetBoolean(printing::kSettingHeaderFooterEnabled, |
Lei Zhang
2011/10/08 02:02:05
this block is not needed. It's already in PrintSet
vandebo (ex-Chrome)
2011/10/15 00:42:50
The value needs to be set for PrintSettings::SetPr
|
+ &settings_.display_header_footer)) { |
+ NOTREACHED(); |
+ } |
+ bool default_margins; |
+ if (!job_settings.GetBoolean(printing::kSettingDefaultMarginsSelected, |
+ &default_margins)) { |
+ NOTREACHED(); |
+ default_margins = true; |
+ } |
+ if (!default_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::kSettingMargins, |
+ &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; |
+ |
+ PageMargins empty; |
+ empty.Clear(); |
Lei Zhang
2011/10/08 02:02:05
Not needed. Better yet, let's add an is_empty meth
vandebo (ex-Chrome)
2011/10/15 00:42:50
Fixed otherwise.
|
+ if (margins_in_points.Equals(empty)) { |
+ settings_.margin_type = NO_MARGINS; |
+ } else { |
+ settings_.SetCustomMargins(margins_in_points); |
+ } |
+ } |
+ |
PrintingContext::Result result = UpdatePrinterSettings(job_settings, ranges); |
printing::PrintSettingsInitializer::InitHeaderFooterStrings(job_settings, |
&settings_); |