summaryrefslogtreecommitdiffstats
path: root/printing
diff options
context:
space:
mode:
authorvitalybuka@chromium.org <vitalybuka@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-11-30 04:06:10 +0000
committervitalybuka@chromium.org <vitalybuka@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-11-30 04:06:10 +0000
commit65555ac0547a9e3e0c9085d3c52bcb245ca3dc5a (patch)
tree7f7f974857024728d20026b568870c9f9becbfe7 /printing
parentb7d5527c3806dc64d49f4f9ee32783622e126071 (diff)
downloadchromium_src-65555ac0547a9e3e0c9085d3c52bcb245ca3dc5a.zip
chromium_src-65555ac0547a9e3e0c9085d3c52bcb245ca3dc5a.tar.gz
chromium_src-65555ac0547a9e3e0c9085d3c52bcb245ca3dc5a.tar.bz2
Speculative fix of attached bug.
Don't return false if PRINTER_INFO_9 is not available. More logging in GetPrinterSemanticCapsAndDefaults. BUG=161772 NOTRY=true Review URL: https://chromiumcodereview.appspot.com/11428058 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@170396 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'printing')
-rw-r--r--printing/backend/print_backend_win.cc27
1 files changed, 20 insertions, 7 deletions
diff --git a/printing/backend/print_backend_win.cc b/printing/backend/print_backend_win.cc
index f7f84bf..9189c52 100644
--- a/printing/backend/print_backend_win.cc
+++ b/printing/backend/print_backend_win.cc
@@ -26,8 +26,10 @@ class PrinterInfo {
bool GetPrinterInfo(HANDLE printer, int level) {
DWORD buf_size = 0;
GetPrinter(printer, level, NULL, 0, &buf_size);
- if (buf_size == 0)
+ if (buf_size == 0) {
+ LOG(WARNING) << "Failed to GetPrinter, error = " << GetLastError();
return false;
+ }
buffer_.reset(new uint8[buf_size]);
memset(buffer_.get(), 0, buf_size);
return !!GetPrinter(printer, level, buffer_.get(), buf_size, &buf_size);
@@ -126,12 +128,16 @@ bool PrintBackendWin::GetPrinterSemanticCapsAndDefaults(
OpenPrinter(const_cast<LPTSTR>(UTF8ToWide(printer_name).c_str()),
printer_handle.Receive(), NULL);
DCHECK(printer_handle);
- if (!printer_handle.IsValid())
+ if (!printer_handle.IsValid()) {
+ LOG(WARNING) << "Failed to open printer, error = " << GetLastError();
return false;
+ }
PrinterInfo<PRINTER_INFO_5> info_5;
- if (!info_5.GetPrinterInfo(printer_handle, 5))
+ if (!info_5.GetPrinterInfo(printer_handle, 5)) {
+ LOG(WARNING) << "Failed to get PRINTER_INFO_5, error = " << GetLastError();
return false;
+ }
// Get printer capabilities. For more info see here:
// http://msdn.microsoft.com/en-us/library/windows/desktop/dd183552(v=vs.85).aspx
@@ -147,18 +153,25 @@ bool PrintBackendWin::GetPrinterSemanticCapsAndDefaults(
NULL,
NULL) == 1);
+ DEVMODE* devmode = NULL;
// PRINTER_INFO_9 retrieves current user settings.
PrinterInfo<PRINTER_INFO_9> info_9;
- if (!info_9.GetPrinterInfo(printer_handle, 9))
- return false;
- DEVMODE* devmode = info_9.get()->pDevMode;
+ if (info_9.GetPrinterInfo(printer_handle, 9)) {
+ devmode = info_9.get()->pDevMode;
+ } else {
+ LOG(WARNING) << "Failed to get PRINTER_INFO_9, error = " << GetLastError();
+ }
// Sometimes user settings are not available (have not been setted up yet).
// Use printer default settings (PRINTER_INFO_8) in this case.
PrinterInfo<PRINTER_INFO_8> info_8;
if (!devmode) {
- if (info_8.GetPrinterInfo(printer_handle, 8))
+ if (info_8.GetPrinterInfo(printer_handle, 8)) {
devmode = info_8.get()->pDevMode;
+ } else {
+ LOG(WARNING) << "Failed to get PRINTER_INFO_8, error = " <<
+ GetLastError();
+ }
}
if (!devmode)
return false;