Index: printing/printing_context_mac.mm |
diff --git a/printing/printing_context_mac.mm b/printing/printing_context_mac.mm |
index bce03c8e479db4033fcbc983a9a12ae7945b30e6..9ed31dd4e51b1b16cfeaedefedfa6e42fe709469 100644 |
--- a/printing/printing_context_mac.mm |
+++ b/printing/printing_context_mac.mm |
@@ -15,6 +15,7 @@ |
#include "base/mac/scoped_nsautorelease_pool.h" |
#include "base/mac/scoped_nsexception_enabler.h" |
#include "base/strings/sys_string_conversions.h" |
+#include "base/strings/utf_string_conversions.h" |
#include "base/values.h" |
#include "printing/print_settings_initializer_mac.h" |
@@ -97,7 +98,8 @@ void PrintingContextMac::AskUserForSettings( |
NSInteger selection = [panel runModalWithPrintInfo:printInfo]; |
if (selection == NSOKButton) { |
print_info_.reset([[panel printInfo] retain]); |
- InitPrintSettingsFromPrintInfo(GetPageRangesFromPrintInfo()); |
+ settings_.set_ranges(GetPageRangesFromPrintInfo()); |
+ InitPrintSettingsFromPrintInfo(); |
callback.Run(OK); |
} else { |
callback.Run(CANCEL); |
@@ -108,74 +110,40 @@ PrintingContext::Result PrintingContextMac::UseDefaultSettings() { |
DCHECK(!in_print_job_); |
print_info_.reset([[NSPrintInfo sharedPrintInfo] copy]); |
- InitPrintSettingsFromPrintInfo(GetPageRangesFromPrintInfo()); |
+ settings_.set_ranges(GetPageRangesFromPrintInfo()); |
+ InitPrintSettingsFromPrintInfo(); |
return OK; |
} |
PrintingContext::Result PrintingContextMac::UpdatePrinterSettings( |
- const DictionaryValue& job_settings, const PageRanges& ranges) { |
+ bool target_is_pdf, |
+ bool external_preview) { |
DCHECK(!in_print_job_); |
// NOTE: Reset |print_info_| with a copy of |sharedPrintInfo| so as to start |
// with a clean slate. |
print_info_.reset([[NSPrintInfo sharedPrintInfo] copy]); |
- bool collate; |
- int color; |
- bool landscape; |
- bool print_to_pdf; |
- bool is_cloud_dialog; |
- int copies; |
- int duplex_mode; |
- std::string device_name; |
- |
- if (!job_settings.GetBoolean(kSettingLandscape, &landscape) || |
- !job_settings.GetBoolean(kSettingCollate, &collate) || |
- !job_settings.GetInteger(kSettingColor, &color) || |
- !job_settings.GetBoolean(kSettingPrintToPDF, &print_to_pdf) || |
- !job_settings.GetInteger(kSettingDuplexMode, &duplex_mode) || |
- !job_settings.GetInteger(kSettingCopies, &copies) || |
- !job_settings.GetString(kSettingDeviceName, &device_name) || |
- !job_settings.GetBoolean(kSettingCloudPrintDialog, &is_cloud_dialog)) { |
- return OnError(); |
- } |
- |
- bool print_to_cloud = job_settings.HasKey(kSettingCloudPrintId); |
- bool open_pdf_in_preview = job_settings.HasKey(kSettingOpenPDFInPreview); |
- |
- if (!print_to_pdf && !print_to_cloud && !is_cloud_dialog) { |
- if (!SetPrinter(device_name)) |
- return OnError(); |
- |
- if (!SetCopiesInPrintSettings(copies)) |
- return OnError(); |
- |
- if (!SetCollateInPrintSettings(collate)) |
- return OnError(); |
- |
- if (!SetDuplexModeInPrintSettings( |
- static_cast<DuplexMode>(duplex_mode))) { |
+ if (!target_is_pdf) { |
+ if (!SetPrinter(UTF16ToUTF8(settings_.device_name())) || |
+ !SetCopiesInPrintSettings(settings_.copies()) || |
+ !SetCollateInPrintSettings(settings_.collate()) || |
+ !SetDuplexModeInPrintSettings(settings_.duplex_mode()) || |
+ !SetOutputColor(settings_.color())) { |
return OnError(); |
} |
- |
- if (!SetOutputColor(color)) |
- return OnError(); |
- } |
- if (open_pdf_in_preview) { |
- if (!SetPrintPreviewJob()) |
- return OnError(); |
} |
- if (!UpdatePageFormatWithPaperInfo()) |
- return OnError(); |
- |
- if (!SetOrientationIsLandscape(landscape)) |
+ if ((external_preview && !SetPrintPreviewJob()) || |
+ !UpdatePageFormatWithPaperInfo() || |
+ !SetOrientationIsLandscape(settings_.landscape())) { |
return OnError(); |
+ } |
[print_info_.get() updateFromPMPrintSettings]; |
- InitPrintSettingsFromPrintInfo(ranges); |
+ InitPrintSettingsFromPrintInfo(); |
return OK; |
} |
@@ -189,16 +157,16 @@ bool PrintingContextMac::SetPrintPreviewJob() { |
NULL, NULL) == noErr; |
} |
-void PrintingContextMac::InitPrintSettingsFromPrintInfo( |
- const PageRanges& ranges) { |
+void PrintingContextMac::InitPrintSettingsFromPrintInfo() { |
PMPrintSession print_session = |
static_cast<PMPrintSession>([print_info_.get() PMPrintSession]); |
PMPageFormat page_format = |
static_cast<PMPageFormat>([print_info_.get() PMPageFormat]); |
PMPrinter printer; |
PMSessionGetCurrentPrinter(print_session, &printer); |
+ settings_.set_selection_only(false); |
PrintSettingsInitializerMac::InitPrintSettings( |
- printer, page_format, ranges, false, &settings_); |
+ printer, page_format, &settings_); |
} |
bool PrintingContextMac::SetPrinter(const std::string& device_name) { |