Chromium Code Reviews| Index: printing/printing_context_mac.mm |
| diff --git a/printing/printing_context_mac.mm b/printing/printing_context_mac.mm |
| index 9ed31dd4e51b1b16cfeaedefedfa6e42fe709469..d91ce6f09d0466ecb023f7e74809f27b2867abfa 100644 |
| --- a/printing/printing_context_mac.mm |
| +++ b/printing/printing_context_mac.mm |
| @@ -18,6 +18,7 @@ |
| #include "base/strings/utf_string_conversions.h" |
| #include "base/values.h" |
| #include "printing/print_settings_initializer_mac.h" |
| +#include "printing/units.h" |
| namespace printing { |
| @@ -106,6 +107,25 @@ void PrintingContextMac::AskUserForSettings( |
| } |
| } |
| +gfx::Size PrintingContextMac::GetPdfPaperSizeDeviceUnits() { |
| + // NOTE: Reset |print_info_| with a copy of |sharedPrintInfo| so as to start |
| + // with a clean slate. |
| + print_info_.reset([[NSPrintInfo sharedPrintInfo] copy]); |
| + UpdatePageFormatWithPaperInfo(); |
| + |
| + PMPageFormat page_format = |
| + static_cast<PMPageFormat>([print_info_.get() PMPageFormat]); |
| + PMRect paper_rect; |
| + PMGetAdjustedPaperRect(page_format, &paper_rect); |
| + |
| + // Device units are in points. Units per inch is 72. |
| + gfx::Size physical_size_device_units( |
| + (paper_rect.right - paper_rect.left), |
| + (paper_rect.bottom - paper_rect.top)); |
| + DCHECK(settings_.device_units_per_inch() == kPointsPerInch); |
|
Lei Zhang
2013/11/01 18:27:13
nit: DCHECK_EQ
Vitaly Buka (NO REVIEWS)
2013/11/01 19:46:29
Done.
|
| + return physical_size_device_units; |
| +} |
| + |
| PrintingContext::Result PrintingContextMac::UseDefaultSettings() { |
| DCHECK(!in_print_job_); |
| @@ -117,7 +137,6 @@ PrintingContext::Result PrintingContextMac::UseDefaultSettings() { |
| } |
| PrintingContext::Result PrintingContextMac::UpdatePrinterSettings( |
| - bool target_is_pdf, |
| bool external_preview) { |
| DCHECK(!in_print_job_); |
| @@ -125,7 +144,11 @@ PrintingContext::Result PrintingContextMac::UpdatePrinterSettings( |
| // with a clean slate. |
| print_info_.reset([[NSPrintInfo sharedPrintInfo] copy]); |
| - if (!target_is_pdf) { |
| + if (external_preview) { |
| + if (!SetPrintPreviewJob()) |
| + return OnError(); |
| + } else { |
| + // Don't need this for preview. |
| if (!SetPrinter(UTF16ToUTF8(settings_.device_name())) || |
| !SetCopiesInPrintSettings(settings_.copies()) || |
| !SetCollateInPrintSettings(settings_.collate()) || |
| @@ -135,8 +158,7 @@ PrintingContext::Result PrintingContextMac::UpdatePrinterSettings( |
| } |
| } |
| - if ((external_preview && !SetPrintPreviewJob()) || |
| - !UpdatePageFormatWithPaperInfo() || |
| + if (!UpdatePageFormatWithPaperInfo() || |
| !SetOrientationIsLandscape(settings_.landscape())) { |
| return OnError(); |
| } |