diff options
author | vitalybuka@chromium.org <vitalybuka@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-11-30 04:06:10 +0000 |
---|---|---|
committer | vitalybuka@chromium.org <vitalybuka@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-11-30 04:06:10 +0000 |
commit | 65555ac0547a9e3e0c9085d3c52bcb245ca3dc5a (patch) | |
tree | 7f7f974857024728d20026b568870c9f9becbfe7 /printing | |
parent | b7d5527c3806dc64d49f4f9ee32783622e126071 (diff) | |
download | chromium_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.cc | 27 |
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; |