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

Unified Diff: printing/backend/printing_info_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/backend/printing_info_win.h ('k') | printing/backend/win_helper.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: printing/backend/printing_info_win.cc
diff --git a/printing/backend/printing_info_win.cc b/printing/backend/printing_info_win.cc
new file mode 100644
index 0000000000000000000000000000000000000000..0ee0fcddd7b8506f29c835f4cda4c5e4dee2947a
--- /dev/null
+++ b/printing/backend/printing_info_win.cc
@@ -0,0 +1,66 @@
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "printing/backend/printing_info_win.h"
+
+#include "base/logging.h"
+
+namespace printing {
+
+namespace internal {
+
+uint8* GetDriverInfo(HANDLE printer, int level) {
+ DWORD size = 0;
+ ::GetPrinterDriver(printer, NULL, level, NULL, 0, &size);
+ if (size == 0) {
+ return NULL;
+ }
+ scoped_array<uint8> buffer(new uint8[size]);
+ memset(buffer.get(), 0, size);
+ if (!::GetPrinterDriver(printer, NULL, level, buffer.get(), size, &size)) {
+ return NULL;
+ }
+ return buffer.release();
+}
+
+uint8* GetPrinterInfo(HANDLE printer, int level) {
+ DWORD size = 0;
+ ::GetPrinter(printer, level, NULL, 0, &size);
+ if (size == 0) {
+ LOG(WARNING) << "Failed to get size of PRINTER_INFO_" << level <<
+ ", error = " << GetLastError();
+ return NULL;
+ }
+ scoped_array<uint8> buffer(new uint8[size]);
+ memset(buffer.get(), 0, size);
+ if (!::GetPrinter(printer, level, buffer.get(), size, &size)) {
+ LOG(WARNING) << "Failed to get PRINTER_INFO_" << level <<
+ ", error = " << GetLastError();
+ return NULL;
+ }
+ return buffer.release();
+}
+
+} // namespace internal
+
+UserDefaultDevMode::UserDefaultDevMode() : dev_mode_(NULL) {
+}
+
+bool UserDefaultDevMode::Init(HANDLE printer) {
+ if (info_9_.Init(printer))
+ dev_mode_ = info_9_.get()->pDevMode;
+
+ if (!dev_mode_ && info_8_.Init(printer))
+ dev_mode_ = info_8_.get()->pDevMode;
+
+ if (!dev_mode_ && info_2_.Init(printer))
+ dev_mode_ = info_2_.get()->pDevMode;
+
+ return dev_mode_ != NULL;
+}
+
+UserDefaultDevMode::~UserDefaultDevMode() {
+}
+
+} // namespace printing
« no previous file with comments | « printing/backend/printing_info_win.h ('k') | printing/backend/win_helper.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698