Index: printing/backend/print_backend_win.cc |
diff --git a/printing/backend/print_backend_win.cc b/printing/backend/print_backend_win.cc |
index bed2c67557138c3304c453b71ee43f17c24d2ade..88d1304894ff070bcf208549297e8a5872e439e8 100644 |
--- a/printing/backend/print_backend_win.cc |
+++ b/printing/backend/print_backend_win.cc |
@@ -4,12 +4,9 @@ |
#include "printing/backend/print_backend.h" |
-#include <algorithm> |
#include <objidl.h> |
#include <winspool.h> |
-#include "base/file_path.h" |
-#include "base/file_version_info.h" |
#include "base/memory/scoped_ptr.h" |
#include "base/string_piece.h" |
#include "base/utf_string_conversions.h" |
@@ -76,17 +73,13 @@ bool PrintBackendWin::EnumeratePrinters(PrinterList* printer_list) { |
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); |
+ ScopedPrinterHandle printer; |
+ OpenPrinter(printer_info->pPrinterName, printer.Receive(), NULL); |
+ scoped_array<BYTE> driver_info_buffer; |
+ InitBasicPrinterInfo(&printer_info[index], |
gene
2012/03/21 21:07:22
Can you make InitBasicPrinterInfo to take printer
Vitaly Buka (NO REVIEWS)
2012/03/21 21:23:01
need to talk about that
On 2012/03/21 21:07:22, g
|
+ GetDriverInfo6(printer, &driver_info_buffer), |
+ &info); |
info.is_default = (info.printer_name == default_printer); |
- 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; |
@@ -179,48 +172,14 @@ bool PrintBackendWin::GetPrinterCapsAndDefaults( |
// Gets the information about driver for a specific printer. |
std::string PrintBackendWin::GetPrinterDriverInfo( |
const std::string& printer_name) { |
- std::string driver_info; |
- ScopedPrinterHandle printer_handle; |
+ ScopedPrinterHandle printer; |
if (!::OpenPrinter(const_cast<LPTSTR>(UTF8ToWide(printer_name).c_str()), |
- printer_handle.Receive(), NULL)) { |
- return driver_info; |
- } |
- DCHECK(printer_handle.IsValid()); |
- DWORD bytes_needed = 0; |
- ::GetPrinterDriver(printer_handle, NULL, 6, NULL, 0, &bytes_needed); |
- scoped_array<BYTE> driver_info_buffer(new BYTE[bytes_needed]); |
- if (!bytes_needed || !driver_info_buffer.get()) |
- return driver_info; |
- if (!::GetPrinterDriver(printer_handle, NULL, 6, driver_info_buffer.get(), |
- bytes_needed, &bytes_needed)) { |
- return driver_info; |
- } |
- if (!bytes_needed) |
- return driver_info; |
- const DRIVER_INFO_6* driver_info_6 = |
- reinterpret_cast<DRIVER_INFO_6*>(driver_info_buffer.get()); |
- |
- std::string info[4]; |
- |
- if (driver_info_6->pName) |
- info[0] = WideToUTF8(driver_info_6->pName); |
- |
- if (driver_info_6->pDriverPath) { |
- scoped_ptr<FileVersionInfo> version_info( |
- FileVersionInfo::CreateFileVersionInfo( |
- FilePath(driver_info_6->pDriverPath))); |
- info[1] = WideToUTF8(version_info->file_version()); |
- info[2] = WideToUTF8(version_info->product_name()); |
- info[3] = WideToUTF8(version_info->product_version()); |
- } |
- |
- for (size_t i = 0; i < arraysize(info); ++i) { |
- std::replace(info[i].begin(), info[i].end(), ';', ','); |
- driver_info.append(info[i]); |
- driver_info.append(";"); |
+ printer.Receive(), NULL)) { |
+ return std::string(); |
} |
- |
- return driver_info; |
+ DCHECK(printer.IsValid()); |
+ scoped_array<BYTE> driver_info_buffer; |
+ return GetDriverInfo(GetDriverInfo6(printer, &driver_info_buffer)); |
gene
2012/03/21 21:07:22
Let's make GetDriverInfo to take printer name?
|
} |
bool PrintBackendWin::IsValidPrinter(const std::string& printer_name) { |