Index: printing/printing_context_mac.mm |
diff --git a/printing/printing_context_mac.mm b/printing/printing_context_mac.mm |
index 5b11c1898fe3ae5c9db9f5c677673bc1aeb8dff7..9c56ace7df298d8cea6da546b4f4bc41e18a0b66 100644 |
--- a/printing/printing_context_mac.mm |
+++ b/printing/printing_context_mac.mm |
@@ -124,6 +124,7 @@ PrintingContext::Result PrintingContextMac::UpdatePrinterSettings( |
} |
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)) |
@@ -143,6 +144,11 @@ PrintingContext::Result PrintingContextMac::UpdatePrinterSettings( |
if (!SetOutputColor(color)) |
return OnError(); |
} |
+ if (open_pdf_in_preview) { |
+ if (!SetPrintPreviewJob()) |
+ return OnError(); |
+ } |
+ |
if (!UpdatePageFormatWithPaperInfo()) |
return OnError(); |
@@ -155,6 +161,16 @@ PrintingContext::Result PrintingContextMac::UpdatePrinterSettings( |
return OK; |
} |
+bool PrintingContextMac::SetPrintPreviewJob() { |
+ PMPrintSession print_session = |
+ static_cast<PMPrintSession>([print_info_.get() PMPrintSession]); |
+ PMPrintSettings print_settings = |
+ static_cast<PMPrintSettings>([print_info_.get() PMPrintSettings]); |
+ return PMSessionSetDestination( |
+ print_session, print_settings, kPMDestinationPreview, |
+ NULL, NULL) == noErr; |
+} |
+ |
void PrintingContextMac::InitPrintSettingsFromPrintInfo( |
const PageRanges& ranges) { |
PMPrintSession print_session = |