summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--printing/printing_context.cc18
-rw-r--r--printing/printing_context.h7
-rw-r--r--printing/printing_context_cairo.cc5
-rw-r--r--printing/printing_context_mac.mm9
-rw-r--r--printing/printing_context_win.cc4
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,