Chromium Code Reviews| 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 "chrome/service/cloud_print/print_system.h" | 5 #include "chrome/service/cloud_print/print_system.h" |
| 6 | 6 |
| 7 #include <objidl.h> | 7 #include <objidl.h> |
| 8 #include <winspool.h> | 8 #include <winspool.h> |
| 9 #include <xpsprint.h> | 9 #include <xpsprint.h> |
| 10 | 10 |
| (...skipping 389 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 400 HRESULT hr = PrintTicketToDevMode(printer_name, print_ticket, | 400 HRESULT hr = PrintTicketToDevMode(printer_name, print_ticket, |
| 401 &pt_dev_mode); | 401 &pt_dev_mode); |
| 402 if (FAILED(hr)) { | 402 if (FAILED(hr)) { |
| 403 NOTREACHED(); | 403 NOTREACHED(); |
| 404 return false; | 404 return false; |
| 405 } | 405 } |
| 406 | 406 |
| 407 HDC dc = CreateDC(L"WINSPOOL", UTF8ToWide(printer_name).c_str(), | 407 HDC dc = CreateDC(L"WINSPOOL", UTF8ToWide(printer_name).c_str(), |
| 408 NULL, pt_dev_mode.dm_); | 408 NULL, pt_dev_mode.dm_); |
| 409 if (!dc) { | 409 if (!dc) { |
| 410 NOTREACHED(); | 410 NOTREACHED(); |
|
Peter Kasting
2012/02/08 00:38:49
Is it possible for the CreateDC() call to fail leg
cpu_(ooo_6.6-7.5)
2012/02/10 19:41:55
Not an expert on printing but I can imagine that i
| |
| 411 return false; | 411 return false; |
| 412 } | 412 } |
| 413 printer_dc_.Set(dc); | |
| 414 | |
| 413 hr = E_FAIL; | 415 hr = E_FAIL; |
| 414 DOCINFO di = {0}; | 416 DOCINFO di = {0}; |
| 415 di.cbSize = sizeof(DOCINFO); | 417 di.cbSize = sizeof(DOCINFO); |
| 416 std::wstring doc_name = UTF8ToWide(job_title); | 418 std::wstring doc_name = UTF8ToWide(job_title); |
| 417 di.lpszDocName = doc_name.c_str(); | 419 di.lpszDocName = doc_name.c_str(); |
| 418 job_id_ = StartDoc(dc, &di); | 420 job_id_ = StartDoc(dc, &di); |
| 419 if (job_id_ <= 0) | 421 if (job_id_ <= 0) |
| 420 return false; | 422 return false; |
| 421 | 423 |
| 422 printer_dc_.Set(dc); | |
| 423 saved_dc_ = SaveDC(printer_dc_.Get()); | 424 saved_dc_ = SaveDC(printer_dc_.Get()); |
| 424 print_data_file_path_ = print_data_file_path; | 425 print_data_file_path_ = print_data_file_path; |
| 425 delegate_ = delegate; | 426 delegate_ = delegate; |
| 426 RenderNextPDFPages(); | 427 RenderNextPDFPages(); |
| 427 } else if (print_data_mime_type == "application/vnd.ms-xpsdocument") { | 428 } else if (print_data_mime_type == "application/vnd.ms-xpsdocument") { |
| 428 bool ret = PrintXPSDocument(printer_name, | 429 bool ret = PrintXPSDocument(printer_name, |
| 429 job_title, | 430 job_title, |
| 430 print_data_file_path, | 431 print_data_file_path, |
| 431 print_ticket); | 432 print_ticket); |
| 432 if (ret) | 433 if (ret) |
| (...skipping 447 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 880 RpcStringFree(reinterpret_cast<RPC_WSTR *>(&proxy_id_as_string)); | 881 RpcStringFree(reinterpret_cast<RPC_WSTR *>(&proxy_id_as_string)); |
| 881 return ret; | 882 return ret; |
| 882 } | 883 } |
| 883 | 884 |
| 884 scoped_refptr<PrintSystem> PrintSystem::CreateInstance( | 885 scoped_refptr<PrintSystem> PrintSystem::CreateInstance( |
| 885 const base::DictionaryValue* print_system_settings) { | 886 const base::DictionaryValue* print_system_settings) { |
| 886 return new PrintSystemWin; | 887 return new PrintSystemWin; |
| 887 } | 888 } |
| 888 | 889 |
| 889 } // namespace cloud_print | 890 } // namespace cloud_print |
| OLD | NEW |