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

Unified Diff: printing/printing_context_win.cc

Issue 11530005: Wrapers for PRINTER_INFO_* and DRIVER_INFO_*. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years 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/printing_context_win.h ('k') | printing/printing_context_win_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: printing/printing_context_win.cc
diff --git a/printing/printing_context_win.cc b/printing/printing_context_win.cc
index 8e0f0e11893df996ba0dbcfe0777f89dbbbbc051..cf334576d51ff9c2d3683ce24f820df700723249 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,18 +609,16 @@ 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;
+
+ UserDefaultDevMode user_settings;
- 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 (!user_settings.Init(printer) ||
+ !AllocateContext(device_name, user_settings.get(), &context_)) {
+ ResetSettings();
+ return false;
}
Vitaly Buka (NO REVIEWS) 2012/12/11 19:35:48 done
- buffer.reset();
- ResetSettings();
- return false;
+ return InitializeSettings(*user_settings.get(), device_name, NULL, 0, false);
}
// static
@@ -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
« no previous file with comments | « printing/printing_context_win.h ('k') | printing/printing_context_win_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698