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

Unified Diff: printing/backend/print_backend_win.cc

Issue 1979903002: Print Preview: Get printer info with capabilities. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@cups_14
Patch Set: nit Created 4 years, 7 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
« no previous file with comments | « printing/backend/print_backend_dummy.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: printing/backend/print_backend_win.cc
diff --git a/printing/backend/print_backend_win.cc b/printing/backend/print_backend_win.cc
index b2e7e2bf7370a0d5047bed5eaa6e2abd80778a9c..b248a8a20ff597affec436ba70776bd1c36d1943 100644
--- a/printing/backend/print_backend_win.cc
+++ b/printing/backend/print_backend_win.cc
@@ -162,6 +162,8 @@ class PrintBackendWin : public PrintBackend {
// PrintBackend implementation.
bool EnumeratePrinters(PrinterList* printer_list) override;
std::string GetDefaultPrinterName() override;
+ bool GetPrinterBasicInfo(const std::string& printer_name,
+ PrinterBasicInfo* printer_info) override;
bool GetPrinterSemanticCapsAndDefaults(
const std::string& printer_name,
PrinterSemanticCapsAndDefaults* printer_info) override;
@@ -181,17 +183,17 @@ bool PrintBackendWin::EnumeratePrinters(PrinterList* printer_list) {
DWORD bytes_needed = 0;
DWORD count_returned = 0;
const DWORD kLevel = 4;
- BOOL ret = EnumPrinters(PRINTER_ENUM_LOCAL|PRINTER_ENUM_CONNECTIONS, NULL,
- kLevel, NULL, 0, &bytes_needed, &count_returned);
+ EnumPrinters(PRINTER_ENUM_LOCAL | PRINTER_ENUM_CONNECTIONS, nullptr, kLevel,
+ nullptr, 0, &bytes_needed, &count_returned);
if (!bytes_needed)
return false;
std::unique_ptr<BYTE[]> printer_info_buffer(new BYTE[bytes_needed]);
- ret = EnumPrinters(PRINTER_ENUM_LOCAL|PRINTER_ENUM_CONNECTIONS, NULL, kLevel,
- printer_info_buffer.get(), bytes_needed, &bytes_needed,
- &count_returned);
- DCHECK(ret);
- if (!ret)
+ if (!EnumPrinters(PRINTER_ENUM_LOCAL | PRINTER_ENUM_CONNECTIONS, nullptr,
+ kLevel, printer_info_buffer.get(), bytes_needed,
+ &bytes_needed, &count_returned)) {
+ NOTREACHED();
return false;
+ }
std::string default_printer = GetDefaultPrinterName();
PRINTER_INFO_4* printer_info =
@@ -211,9 +213,24 @@ bool PrintBackendWin::EnumeratePrinters(PrinterList* printer_list) {
std::string PrintBackendWin::GetDefaultPrinterName() {
DWORD size = MAX_PATH;
TCHAR default_printer_name[MAX_PATH];
- if (!::GetDefaultPrinter(default_printer_name, &size))
- return std::string();
- return base::WideToUTF8(default_printer_name);
+ std::string ret;
+ if (::GetDefaultPrinter(default_printer_name, &size))
+ ret = base::WideToUTF8(default_printer_name);
+ return ret;
+}
+
+bool PrintBackendWin::GetPrinterBasicInfo(const std::string& printer_name,
+ PrinterBasicInfo* printer_info) {
+ ScopedPrinterHandle printer_handle;
+ if (!printer_handle.OpenPrinter(base::UTF8ToWide(printer_name).c_str()))
+ return false;
+
+ if (!InitBasicPrinterInfo(printer_handle.Get(), printer_info))
+ return false;
+
+ std::string default_printer = GetDefaultPrinterName();
+ printer_info->is_default = (printer_info->printer_name == default_printer);
+ return true;
}
bool PrintBackendWin::GetPrinterSemanticCapsAndDefaults(
« no previous file with comments | « printing/backend/print_backend_dummy.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698