| Index: printing/printing_context.cc
|
| diff --git a/printing/printing_context.cc b/printing/printing_context.cc
|
| index 98ea11cba795b08231ed69111db57f640777de3b..07dfd83662329aae802a9d4c75c4f28c2563a752 100644
|
| --- a/printing/printing_context.cc
|
| +++ b/printing/printing_context.cc
|
| @@ -24,7 +24,7 @@ PrintingContext::~PrintingContext() {
|
|
|
| void PrintingContext::set_margin_type(MarginType type) {
|
| DCHECK(type != CUSTOM_MARGINS);
|
| - settings_.margin_type = type;
|
| + settings_.set_margin_type(type);
|
| }
|
|
|
| void PrintingContext::ResetSettings() {
|
| @@ -47,41 +47,29 @@ PrintingContext::Result PrintingContext::UpdatePrintSettings(
|
| const PageRanges& ranges) {
|
| ResetSettings();
|
|
|
| - job_settings.GetBoolean(kSettingHeaderFooterEnabled,
|
| - &settings_.display_header_footer);
|
| + if (settings_.dpi() == 0)
|
| + UseDefaultSettings();
|
|
|
| - int margin_type = DEFAULT_MARGINS;
|
| - if (!job_settings.GetInteger(kSettingMarginsType, &margin_type) ||
|
| - (margin_type != DEFAULT_MARGINS &&
|
| - margin_type != NO_MARGINS &&
|
| - margin_type != CUSTOM_MARGINS &&
|
| - margin_type != PRINTABLE_AREA_MARGINS)) {
|
| - margin_type = DEFAULT_MARGINS;
|
| + if (!PrintSettingsInitializer::InitSettings(job_settings, ranges,
|
| + &settings_)) {
|
| + return OnError();
|
| }
|
| - settings_.margin_type = static_cast<MarginType>(margin_type);
|
|
|
| - if (margin_type == CUSTOM_MARGINS) {
|
| - printing::PageSizeMargins page_size_margins;
|
| - GetCustomMarginsFromJobSettings(job_settings, &page_size_margins);
|
| + bool print_to_pdf = false;
|
| + bool is_cloud_dialog = false;
|
|
|
| - PageMargins margins_in_points;
|
| - margins_in_points.Clear();
|
| - margins_in_points.top = page_size_margins.margin_top;
|
| - margins_in_points.bottom = page_size_margins.margin_bottom;
|
| - margins_in_points.left = page_size_margins.margin_left;
|
| - margins_in_points.right = page_size_margins.margin_right;
|
| -
|
| - settings_.SetCustomMargins(margins_in_points);
|
| + if (!job_settings.GetBoolean(kSettingPrintToPDF, &print_to_pdf) ||
|
| + !job_settings.GetBoolean(kSettingCloudPrintDialog, &is_cloud_dialog)) {
|
| + return OnError();
|
| }
|
|
|
| - PrintingContext::Result result = UpdatePrinterSettings(job_settings, ranges);
|
| - PrintSettingsInitializer::InitHeaderFooterStrings(job_settings, &settings_);
|
| + bool print_to_cloud = job_settings.HasKey(kSettingCloudPrintId);
|
| + bool open_in_external_preview =
|
| + job_settings.HasKey(kSettingOpenPDFInPreview);
|
|
|
| - job_settings.GetBoolean(kSettingShouldPrintBackgrounds,
|
| - &settings_.should_print_backgrounds);
|
| - job_settings.GetBoolean(kSettingShouldPrintSelectionOnly,
|
| - &settings_.selection_only);
|
| - return result;
|
| + return
|
| + UpdatePrinterSettings(print_to_pdf || is_cloud_dialog || print_to_cloud,
|
| + open_in_external_preview);
|
| }
|
|
|
| } // namespace printing
|
|
|