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

Side by Side Diff: printing/printing_context_win.cc

Issue 191913002: scoped_ptr<DEVMODE[]> replaced with scoped_ptr<DEVMODE, base::FreeDeleter>. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 9 months 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « printing/backend/win_helper.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "printing/printing_context_win.h" 5 #include "printing/printing_context_win.h"
6 6
7 #include <winspool.h> 7 #include <winspool.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 10
(...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after
277 &count_returned); 277 &count_returned);
278 if (ret && count_returned) { // have printers 278 if (ret && count_returned) { // have printers
279 // Open the first successfully found printer. 279 // Open the first successfully found printer.
280 const PRINTER_INFO_2* info_2 = 280 const PRINTER_INFO_2* info_2 =
281 reinterpret_cast<PRINTER_INFO_2*>(printer_info_buffer.get()); 281 reinterpret_cast<PRINTER_INFO_2*>(printer_info_buffer.get());
282 const PRINTER_INFO_2* info_2_end = info_2 + count_returned; 282 const PRINTER_INFO_2* info_2_end = info_2 + count_returned;
283 for (; info_2 < info_2_end; ++info_2) { 283 for (; info_2 < info_2_end; ++info_2) {
284 ScopedPrinterHandle printer; 284 ScopedPrinterHandle printer;
285 if (!printer.OpenPrinter(info_2->pPrinterName)) 285 if (!printer.OpenPrinter(info_2->pPrinterName))
286 continue; 286 continue;
287 scoped_ptr<DEVMODE[]> dev_mode = CreateDevMode(printer, NULL); 287 scoped_ptr<DEVMODE, base::FreeDeleter> dev_mode =
288 CreateDevMode(printer, NULL);
288 if (!dev_mode || !AllocateContext(info_2->pPrinterName, dev_mode.get(), 289 if (!dev_mode || !AllocateContext(info_2->pPrinterName, dev_mode.get(),
289 &context_)) { 290 &context_)) {
290 continue; 291 continue;
291 } 292 }
292 if (InitializeSettings(*dev_mode.get(), info_2->pPrinterName, NULL, 0, 293 if (InitializeSettings(*dev_mode.get(), info_2->pPrinterName, NULL, 0,
293 false)) { 294 false)) {
294 return OK; 295 return OK;
295 } 296 }
296 ReleaseContext(); 297 ReleaseContext();
297 } 298 }
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
338 bool external_preview) { 339 bool external_preview) {
339 DCHECK(!in_print_job_); 340 DCHECK(!in_print_job_);
340 DCHECK(!external_preview) << "Not implemented"; 341 DCHECK(!external_preview) << "Not implemented";
341 342
342 ScopedPrinterHandle printer; 343 ScopedPrinterHandle printer;
343 if (!printer.OpenPrinter(settings_.device_name().c_str())) 344 if (!printer.OpenPrinter(settings_.device_name().c_str()))
344 return OnError(); 345 return OnError();
345 346
346 // Make printer changes local to Chrome. 347 // Make printer changes local to Chrome.
347 // See MSDN documentation regarding DocumentProperties. 348 // See MSDN documentation regarding DocumentProperties.
348 scoped_ptr<DEVMODE[]> scoped_dev_mode = 349 scoped_ptr<DEVMODE, base::FreeDeleter> scoped_dev_mode =
349 CreateDevModeWithColor(printer, settings_.device_name(), 350 CreateDevModeWithColor(printer, settings_.device_name(),
350 settings_.color() != GRAY); 351 settings_.color() != GRAY);
351 if (!scoped_dev_mode) 352 if (!scoped_dev_mode)
352 return OnError(); 353 return OnError();
353 354
354 { 355 {
355 DEVMODE* dev_mode = scoped_dev_mode.get(); 356 DEVMODE* dev_mode = scoped_dev_mode.get();
356 dev_mode->dmCopies = std::max(settings_.copies(), 1); 357 dev_mode->dmCopies = std::max(settings_.copies(), 1);
357 if (dev_mode->dmCopies > 1) { // do not change unless multiple copies 358 if (dev_mode->dmCopies > 1) { // do not change unless multiple copies
358 dev_mode->dmFields |= DM_COPIES; 359 dev_mode->dmFields |= DM_COPIES;
(...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after
583 PrintSettingsInitializerWin::InitPrintSettings(context_, dev_mode, 584 PrintSettingsInitializerWin::InitPrintSettings(context_, dev_mode,
584 &settings_); 585 &settings_);
585 586
586 return true; 587 return true;
587 } 588 }
588 589
589 bool PrintingContextWin::GetPrinterSettings(HANDLE printer, 590 bool PrintingContextWin::GetPrinterSettings(HANDLE printer,
590 const std::wstring& device_name) { 591 const std::wstring& device_name) {
591 DCHECK(!in_print_job_); 592 DCHECK(!in_print_job_);
592 593
593 scoped_ptr<DEVMODE[]> dev_mode = CreateDevMode(printer, NULL); 594 scoped_ptr<DEVMODE, base::FreeDeleter> dev_mode =
595 CreateDevMode(printer, NULL);
594 596
595 if (!dev_mode || !AllocateContext(device_name, dev_mode.get(), &context_)) { 597 if (!dev_mode || !AllocateContext(device_name, dev_mode.get(), &context_)) {
596 ResetSettings(); 598 ResetSettings();
597 return false; 599 return false;
598 } 600 }
599 601
600 return InitializeSettings(*dev_mode.get(), device_name, NULL, 0, false); 602 return InitializeSettings(*dev_mode.get(), device_name, NULL, 0, false);
601 } 603 }
602 604
603 // static 605 // static
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
730 732
731 if (dialog_options.hDevMode != NULL) 733 if (dialog_options.hDevMode != NULL)
732 GlobalFree(dialog_options.hDevMode); 734 GlobalFree(dialog_options.hDevMode);
733 if (dialog_options.hDevNames != NULL) 735 if (dialog_options.hDevNames != NULL)
734 GlobalFree(dialog_options.hDevNames); 736 GlobalFree(dialog_options.hDevNames);
735 737
736 return context_ ? OK : FAILED; 738 return context_ ? OK : FAILED;
737 } 739 }
738 740
739 } // namespace printing 741 } // namespace printing
OLDNEW
« no previous file with comments | « printing/backend/win_helper.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698