| Index: printing/printing_context_win.cc
|
| diff --git a/printing/printing_context_win.cc b/printing/printing_context_win.cc
|
| index 8e0f0e11893df996ba0dbcfe0777f89dbbbbc051..9fded39fd74f1800cddf010e7f83d76b7a8b88ea 100644
|
| --- a/printing/printing_context_win.cc
|
| +++ b/printing/printing_context_win.cc
|
| @@ -18,6 +18,7 @@
|
| #include "base/win/metro.h"
|
| #include "printing/backend/print_backend.h"
|
| #include "printing/backend/win_helper.h"
|
| +#include "printing/backend/printing_info_win.h"
|
| #include "printing/print_job_constants.h"
|
| #include "printing/print_settings_initializer_win.h"
|
| #include "printing/printed_document.h"
|
| @@ -44,59 +45,6 @@ const int kPDFA4Height = 11.69 * kPDFDpi;
|
| const int kPDFA3Width = 11.69 * kPDFDpi;
|
| const int kPDFA3Height = 16.54 * kPDFDpi;
|
|
|
| -// Retrieves the printer's PRINTER_INFO_* structure.
|
| -// Output |level| can be 9 (user-default), 8 (admin-default), or 2
|
| -// (printer-default).
|
| -// |devmode| is a pointer points to the start of DEVMODE structure in
|
| -// |buffer|.
|
| -bool GetPrinterInfo(HANDLE printer,
|
| - const std::wstring &device_name,
|
| - int* level,
|
| - scoped_array<uint8>* buffer,
|
| - DEVMODE** dev_mode) {
|
| - DCHECK(buffer);
|
| -
|
| - // A PRINTER_INFO_9 structure specifying the per-user default printer
|
| - // settings.
|
| - printing::PrintingContextWin::GetPrinterHelper(printer, 9, buffer);
|
| - if (buffer->get()) {
|
| - PRINTER_INFO_9* info_9 = reinterpret_cast<PRINTER_INFO_9*>(buffer->get());
|
| - if (info_9->pDevMode != NULL) {
|
| - *level = 9;
|
| - *dev_mode = info_9->pDevMode;
|
| - return true;
|
| - }
|
| - buffer->reset();
|
| - }
|
| -
|
| - // A PRINTER_INFO_8 structure specifying the global default printer settings.
|
| - printing::PrintingContextWin::GetPrinterHelper(printer, 8, buffer);
|
| - if (buffer->get()) {
|
| - PRINTER_INFO_8* info_8 = reinterpret_cast<PRINTER_INFO_8*>(buffer->get());
|
| - if (info_8->pDevMode != NULL) {
|
| - *level = 8;
|
| - *dev_mode = info_8->pDevMode;
|
| - return true;
|
| - }
|
| - buffer->reset();
|
| - }
|
| -
|
| - // A PRINTER_INFO_2 structure specifying the driver's default printer
|
| - // settings.
|
| - printing::PrintingContextWin::GetPrinterHelper(printer, 2, buffer);
|
| - if (buffer->get()) {
|
| - PRINTER_INFO_2* info_2 = reinterpret_cast<PRINTER_INFO_2*>(buffer->get());
|
| - if (info_2->pDevMode != NULL) {
|
| - *level = 2;
|
| - *dev_mode = info_2->pDevMode;
|
| - return true;
|
| - }
|
| - buffer->reset();
|
| - }
|
| -
|
| - return false;
|
| -}
|
| -
|
| } // anonymous namespace
|
|
|
| namespace printing {
|
| @@ -661,16 +609,14 @@ bool PrintingContextWin::InitializeSettings(const DEVMODE& dev_mode,
|
| bool PrintingContextWin::GetPrinterSettings(HANDLE printer,
|
| const std::wstring& device_name) {
|
| DCHECK(!in_print_job_);
|
| - scoped_array<uint8> buffer;
|
| - int level = 0;
|
| - DEVMODE* dev_mode = NULL;
|
| +
|
| + DevMode dev_mode;
|
|
|
| - if (GetPrinterInfo(printer, device_name, &level, &buffer, &dev_mode) &&
|
| - AllocateContext(device_name, dev_mode, &context_)) {
|
| - return InitializeSettings(*dev_mode, device_name, NULL, 0, false);
|
| + if (dev_mode.Init(printer) &&
|
| + AllocateContext(device_name, dev_mode.get(), &context_)) {
|
| + return InitializeSettings(*dev_mode.get(), device_name, NULL, 0, false);
|
| }
|
|
|
| - buffer.reset();
|
| ResetSettings();
|
| return false;
|
| }
|
| @@ -813,18 +759,4 @@ PrintingContext::Result PrintingContextWin::ParseDialogResult(
|
| return context_ ? OK : FAILED;
|
| }
|
|
|
| -// static
|
| -void PrintingContextWin::GetPrinterHelper(HANDLE printer, int level,
|
| - scoped_array<uint8>* buffer) {
|
| - DWORD buf_size = 0;
|
| - GetPrinter(printer, level, NULL, 0, &buf_size);
|
| - if (buf_size) {
|
| - buffer->reset(new uint8[buf_size]);
|
| - memset(buffer->get(), 0, buf_size);
|
| - if (!GetPrinter(printer, level, buffer->get(), buf_size, &buf_size)) {
|
| - buffer->reset();
|
| - }
|
| - }
|
| -}
|
| -
|
| } // namespace printing
|
|
|