| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |