diff options
-rw-r--r-- | printing/printing_context.cc | 18 | ||||
-rw-r--r-- | printing/printing_context.h | 7 | ||||
-rw-r--r-- | printing/printing_context_cairo.cc | 5 | ||||
-rw-r--r-- | printing/printing_context_mac.mm | 9 | ||||
-rw-r--r-- | printing/printing_context_win.cc | 4 |
5 files changed, 31 insertions, 12 deletions
diff --git a/printing/printing_context.cc b/printing/printing_context.cc index bc9ba21..390d8f0 100644 --- a/printing/printing_context.cc +++ b/printing/printing_context.cc @@ -1,9 +1,12 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "printing/printing_context.h" +#include "base/values.h" +#include "printing/print_job_constants.h" + namespace printing { PrintingContext::PrintingContext(const std::string& app_locale) @@ -26,6 +29,19 @@ void PrintingContext::ResetSettings() { abort_printing_ = false; } +bool PrintingContext::GetSettingsFromDict(const DictionaryValue& settings, + bool* landscape, + std::string* printerName) { + bool ret = true; + if (landscape) + ret &= settings.GetBoolean(kSettingLandscape, landscape); + + if (printerName) + ret &= settings.GetString(kSettingPrinterName, printerName); + + return ret; +} + PrintingContext::Result PrintingContext::OnError() { ResetSettings(); return abort_printing_ ? CANCEL : FAILED; diff --git a/printing/printing_context.h b/printing/printing_context.h index c4e2094..0a30cea 100644 --- a/printing/printing_context.h +++ b/printing/printing_context.h @@ -104,6 +104,13 @@ class PrintingContext { // Reinitializes the settings for object reuse. void ResetSettings(); + // Extracts print job settings from |settings|. Out parameters can be NULL. + // Returns true if all non-NULL out parameters are successfully extracted + // from |settings| else returns false. + bool GetSettingsFromDict(const DictionaryValue& settings, + bool* landscape, + std::string* printerName); + // Does bookkeeping when an error occurs. PrintingContext::Result OnError(); diff --git a/printing/printing_context_cairo.cc b/printing/printing_context_cairo.cc index c721e3d..17e7885 100644 --- a/printing/printing_context_cairo.cc +++ b/printing/printing_context_cairo.cc @@ -6,7 +6,6 @@ #include "base/logging.h" #include "base/values.h" -#include "printing/print_job_constants.h" #include "printing/print_settings_initializer_gtk.h" #include "printing/units.h" @@ -154,10 +153,10 @@ PrintingContext::Result PrintingContextCairo::UpdatePrintSettings( DCHECK(!in_print_job_); bool landscape; - if (!job_settings.GetBoolean(kSettingLandscape, &landscape)) + if (!GetSettingsFromDict(job_settings, &landscape, NULL)) return OnError(); - settings_.SetOrientation(landscape); + settings_.SetOrientation(landscape); settings_.ranges = ranges; // TODO(kmadhusu): Update other print settings such as number of copies, diff --git a/printing/printing_context_mac.mm b/printing/printing_context_mac.mm index cf6ea9f..9357e77 100644 --- a/printing/printing_context_mac.mm +++ b/printing/printing_context_mac.mm @@ -11,7 +11,6 @@ #include "base/mac/scoped_cftyperef.h" #include "base/sys_string_conversions.h" #include "base/values.h" -#include "printing/print_job_constants.h" #include "printing/print_settings_initializer_mac.h" namespace printing { @@ -93,14 +92,12 @@ PrintingContext::Result PrintingContextMac::UpdatePrintSettings( print_info_.reset([[NSPrintInfo sharedPrintInfo] copy]); bool landscape; - if (!job_settings.GetBoolean(kSettingLandscape, &landscape)) - return OnError(); - settings_.SetOrientation(landscape); - std::string printer_name; - if (!job_settings.GetString(kSettingPrinterName, &printer_name)) + if (!GetSettingsFromDict(job_settings, &landscape, &printer_name)) return OnError(); + settings_.SetOrientation(landscape); + if (!SetPrinter(printer_name)) return OnError(); diff --git a/printing/printing_context_win.cc b/printing/printing_context_win.cc index d410f31..b1b8ba9 100644 --- a/printing/printing_context_win.cc +++ b/printing/printing_context_win.cc @@ -12,7 +12,6 @@ #include "base/time.h" #include "base/utf_string_conversions.h" #include "base/values.h" -#include "printing/print_job_constants.h" #include "printing/print_settings_initializer_win.h" #include "printing/printed_document.h" #include "skia/ext/platform_device_win.h" @@ -215,8 +214,9 @@ PrintingContext::Result PrintingContextWin::UpdatePrintSettings( DCHECK(!in_print_job_); bool landscape; - if (!job_settings.GetBoolean(kSettingLandscape, &landscape)) + if (!GetSettingsFromDict(job_settings, &landscape, NULL)) return OnError(); + settings_.SetOrientation(landscape); // TODO(kmadhusu): Update other print settings such as number of copies, |