Index: printing/printing_context_win.cc |
diff --git a/printing/printing_context_win.cc b/printing/printing_context_win.cc |
index 46093e77b41f0019180cf87a7db8978dff2da4b2..ae38c683611c8501b205a55f0de5b371091ac561 100644 |
--- a/printing/printing_context_win.cc |
+++ b/printing/printing_context_win.cc |
@@ -14,6 +14,7 @@ |
#include "base/time.h" |
#include "base/utf_string_conversions.h" |
#include "base/values.h" |
+#include "printing/backend/win_helper.h" |
#include "printing/print_job_constants.h" |
#include "printing/print_settings_initializer_win.h" |
#include "printing/printed_document.h" |
@@ -381,9 +382,9 @@ PrintingContext::Result PrintingContextWin::UpdatePrinterSettings( |
return OK; |
} |
- HANDLE printer; |
+ ScopedPrinterHandle printer; |
LPWSTR device_name_wide = const_cast<wchar_t*>(device_name.c_str()); |
- if (!OpenPrinter(device_name_wide, &printer, NULL)) |
+ if (!OpenPrinter(device_name_wide, printer.Receive(), NULL)) |
return OnError(); |
// Make printer changes local to Chrome. |
@@ -403,7 +404,6 @@ PrintingContext::Result PrintingContextWin::UpdatePrinterSettings( |
} |
if (dev_mode == NULL) { |
buffer.reset(); |
- ClosePrinter(printer); |
return OnError(); |
} |
@@ -433,19 +433,16 @@ PrintingContext::Result PrintingContextWin::UpdatePrinterSettings( |
// Update data using DocumentProperties. |
if (DocumentProperties(NULL, printer, device_name_wide, dev_mode, dev_mode, |
DM_IN_BUFFER | DM_OUT_BUFFER) != IDOK) { |
- ClosePrinter(printer); |
return OnError(); |
} |
// Set printer then refresh printer settings. |
if (!AllocateContext(device_name, dev_mode, &context_)) { |
- ClosePrinter(printer); |
return OnError(); |
} |
PrintSettingsInitializerWin::InitPrintSettings(context_, *dev_mode, |
ranges, device_name, |
false, &settings_); |
- ClosePrinter(printer); |
return OK; |
} |
@@ -456,10 +453,9 @@ PrintingContext::Result PrintingContextWin::InitWithSettings( |
settings_ = settings; |
// TODO(maruel): settings_.ToDEVMODE() |
- HANDLE printer; |
+ ScopedPrinterHandle printer; |
if (!OpenPrinter(const_cast<wchar_t*>(settings_.device_name().c_str()), |
- &printer, |
- NULL)) |
+ printer.Receive(), NULL)) |
return FAILED; |
Result status = OK; |
@@ -467,9 +463,6 @@ PrintingContext::Result PrintingContextWin::InitWithSettings( |
if (!GetPrinterSettings(printer, settings_.device_name())) |
status = FAILED; |
- // Close the printer after retrieving the context. |
- ClosePrinter(printer); |
- |
if (status != OK) |
ResetSettings(); |
return status; |