Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(730)

Unified Diff: printing/backend/print_backend_win.cc

Issue 6356007: Added a diagnostic user message when enumerating printers fails. Also tweaked... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Fixed build errors Created 9 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: printing/backend/print_backend_win.cc
===================================================================
--- printing/backend/print_backend_win.cc (revision 72357)
+++ printing/backend/print_backend_win.cc (working copy)
@@ -43,7 +43,7 @@
PrintBackendWin() {}
virtual ~PrintBackendWin() {}
- virtual void EnumeratePrinters(PrinterList* printer_list);
+ virtual bool EnumeratePrinters(PrinterList* printer_list);
virtual bool GetPrinterCapsAndDefaults(const std::string& printer_name,
PrinterCapsAndDefaults* printer_info);
@@ -51,35 +51,39 @@
virtual bool IsValidPrinter(const std::string& printer_name);
};
-void PrintBackendWin::EnumeratePrinters(PrinterList* printer_list) {
+bool PrintBackendWin::EnumeratePrinters(PrinterList* printer_list) {
DCHECK(printer_list);
DWORD bytes_needed = 0;
DWORD count_returned = 0;
BOOL ret = EnumPrinters(PRINTER_ENUM_LOCAL|PRINTER_ENUM_CONNECTIONS, NULL, 2,
NULL, 0, &bytes_needed, &count_returned);
- if (0 != bytes_needed) {
- scoped_ptr<BYTE> printer_info_buffer(new BYTE[bytes_needed]);
- ret = EnumPrinters(PRINTER_ENUM_LOCAL|PRINTER_ENUM_CONNECTIONS, NULL, 2,
- printer_info_buffer.get(), bytes_needed, &bytes_needed,
- &count_returned);
- DCHECK(ret);
- PRINTER_INFO_2* printer_info =
- reinterpret_cast<PRINTER_INFO_2*>(printer_info_buffer.get());
- for (DWORD index = 0; index < count_returned; index++) {
- PrinterBasicInfo info;
- info.printer_name = WideToUTF8(printer_info[index].pPrinterName);
- if (printer_info[index].pComment)
- info.printer_description = WideToUTF8(printer_info[index].pComment);
- info.printer_status = printer_info[index].Status;
- if (printer_info[index].pLocation)
- info.options[kLocationTagName] =
- WideToUTF8(printer_info[index].pLocation);
- if (printer_info[index].pDriverName)
- info.options[kDriverNameTagName] =
- WideToUTF8(printer_info[index].pDriverName);
- printer_list->push_back(info);
- }
+ if (!bytes_needed)
Scott Byer 2011/01/24 20:02:07 Check the return value as well?
+ return false;
+ scoped_ptr<BYTE> printer_info_buffer(new BYTE[bytes_needed]);
+ ret = EnumPrinters(PRINTER_ENUM_LOCAL|PRINTER_ENUM_CONNECTIONS, NULL, 2,
+ printer_info_buffer.get(), bytes_needed, &bytes_needed,
+ &count_returned);
+ DCHECK(ret);
+ if (!ret)
+ return false;
+
+ PRINTER_INFO_2* printer_info =
+ reinterpret_cast<PRINTER_INFO_2*>(printer_info_buffer.get());
+ for (DWORD index = 0; index < count_returned; index++) {
+ PrinterBasicInfo info;
+ info.printer_name = WideToUTF8(printer_info[index].pPrinterName);
+ if (printer_info[index].pComment)
+ info.printer_description = WideToUTF8(printer_info[index].pComment);
+ info.printer_status = printer_info[index].Status;
+ if (printer_info[index].pLocation)
+ info.options[kLocationTagName] =
+ WideToUTF8(printer_info[index].pLocation);
+ if (printer_info[index].pDriverName)
+ info.options[kDriverNameTagName] =
+ WideToUTF8(printer_info[index].pDriverName);
+ printer_list->push_back(info);
}
+ return true;
}
bool PrintBackendWin::GetPrinterCapsAndDefaults(
« chrome/service/cloud_print/printer_job_handler.h ('K') | « printing/backend/print_backend_cups.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698