summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkmadhusu@chromium.org <kmadhusu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-06-25 02:17:40 +0000
committerkmadhusu@chromium.org <kmadhusu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-06-25 02:17:40 +0000
commit33c141aefc29ca5523cb2d462835969b6b3a5bf3 (patch)
tree7c9e38fedfd8538d313b3f44a1e4fe05e7a25334
parent5c0e4507a7494db1efe56b6f2ecababddd3c2adf (diff)
downloadchromium_src-33c141aefc29ca5523cb2d462835969b6b3a5bf3.zip
chromium_src-33c141aefc29ca5523cb2d462835969b6b3a5bf3.tar.gz
chromium_src-33c141aefc29ca5523cb2d462835969b6b3a5bf3.tar.bz2
PrintPreview: Read the printer driver default duplex setting and update the UI accordingly.
BUG=86569 TEST=Please refer to bug report. Review URL: http://codereview.chromium.org/7198027 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@90475 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/browser/resources/print_preview/print_preview.js10
-rw-r--r--chrome/browser/ui/webui/print_preview_handler.cc22
2 files changed, 26 insertions, 6 deletions
diff --git a/chrome/browser/resources/print_preview/print_preview.js b/chrome/browser/resources/print_preview/print_preview.js
index d33f981..0b6c7a6 100644
--- a/chrome/browser/resources/print_preview/print_preview.js
+++ b/chrome/browser/resources/print_preview/print_preview.js
@@ -212,9 +212,11 @@ function updateControlsWithSelectedPrinterCapabilities() {
var selectedValue = printerList.options[selectedIndex].value;
if (selectedValue == PRINT_TO_PDF) {
- updateWithPrinterCapabilities({'disableColorOption': true,
- 'setColorAsDefault': true,
- 'disableCopiesOption': true});
+ updateWithPrinterCapabilities({
+ 'disableColorOption': true,
+ 'setColorAsDefault': true,
+ 'setDuplexAsDefault': false,
+ 'disableCopiesOption': true});
} else if (selectedValue == MANAGE_PRINTERS) {
printerList.selectedIndex = lastSelectedPrinterIndex;
chrome.send('managePrinters');
@@ -239,6 +241,7 @@ function updateWithPrinterCapabilities(settingInfo) {
var disableColorOption = settingInfo.disableColorOption;
var disableCopiesOption = settingInfo.disableCopiesOption;
var setColorAsDefault = settingInfo.setColorAsDefault;
+ var setDuplexAsDefault = settingInfo.setDuplexAsDefault;
var color = $('color');
var bw = $('bw');
var colorOptions = $('color-options');
@@ -259,6 +262,7 @@ function updateWithPrinterCapabilities(settingInfo) {
color.checked = setColorAsDefault;
bw.checked = !setColorAsDefault;
}
+ $('two-sided').checked = setDuplexAsDefault;
}
/**
diff --git a/chrome/browser/ui/webui/print_preview_handler.cc b/chrome/browser/ui/webui/print_preview_handler.cc
index aff52a5..8d4aff6 100644
--- a/chrome/browser/ui/webui/print_preview_handler.cc
+++ b/chrome/browser/ui/webui/print_preview_handler.cc
@@ -44,16 +44,17 @@
namespace {
-const bool kColorDefaultValue = false;
-const bool kLandscapeDefaultValue = false;
-
const char kDisableColorOption[] = "disableColorOption";
const char kSetColorAsDefault[] = "setColorAsDefault";
+const char kSetDuplexAsDefault[] = "setDuplexAsDefault";
#if defined(USE_CUPS)
const char kColorDevice[] = "ColorDevice";
+const char kDuplex[] = "Duplex";
+const char kDuplexNone[] = "None";
#elif defined(OS_WIN)
const char kPskColor[] = "psk:Color";
+const char kPskOneSided[] = "psk:OneSided";
#endif
enum UserActionBuckets {
@@ -247,6 +248,7 @@ class PrintSystemTaskProxy
VLOG(1) << "Get printer capabilities start for " << printer_name;
printing::PrinterCapsAndDefaults printer_info;
bool supports_color = true;
+ bool set_duplex_as_default = false;
if (!print_backend_->GetPrinterCapsAndDefaults(printer_name,
&printer_info)) {
return;
@@ -271,6 +273,17 @@ class PrintSystemTaskProxy
ppd_attr_t* attr = ppdFindAttr(ppd, kColorDevice, NULL);
if (attr && attr->value)
supports_color = ppd->color_device;
+
+ ppd_choice_t* ch = ppdFindMarkedChoice(ppd, kDuplex);
+ if (ch == NULL) {
+ ppd_option_t* option = ppdFindOption(ppd, kDuplex);
+ if (option != NULL)
+ ch = ppdFindChoice(option, option->defchoice);
+ }
+
+ if (ch != NULL && strcmp(ch->choice, kDuplexNone) != 0)
+ set_duplex_as_default = true;
+
ppdClose(ppd);
}
file_util::Delete(ppd_file_path, false);
@@ -281,6 +294,8 @@ class PrintSystemTaskProxy
// http://msdn.microsoft.com/en-us/windows/hardware/gg463431.
supports_color = (printer_info.printer_capabilities.find(kPskColor) !=
std::string::npos);
+ set_duplex_as_default =
+ (printer_info.printer_defaults.find(kPskOneSided) == std::string::npos);
#else
NOTIMPLEMENTED();
#endif
@@ -288,6 +303,7 @@ class PrintSystemTaskProxy
DictionaryValue settings_info;
settings_info.SetBoolean(kDisableColorOption, !supports_color);
settings_info.SetBoolean(kSetColorAsDefault, false);
+ settings_info.SetBoolean(kSetDuplexAsDefault, set_duplex_as_default);
BrowserThread::PostTask(
BrowserThread::UI, FROM_HERE,
NewRunnableMethod(this,