diff options
author | vitalybuka@chromium.org <vitalybuka@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-02-18 00:36:06 +0000 |
---|---|---|
committer | vitalybuka@chromium.org <vitalybuka@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-02-18 00:36:06 +0000 |
commit | 24c85faf5b8c0c7c38d63f0a4a8c5cd9336d3d3f (patch) | |
tree | 0ac9eb1801a06bbfed8f95b26ebc99f8f1f5ec97 /chrome/service/cloud_print | |
parent | d268d01de092347ac2a4aab53b853c34d8411dcb (diff) | |
download | chromium_src-24c85faf5b8c0c7c38d63f0a4a8c5cd9336d3d3f.zip chromium_src-24c85faf5b8c0c7c38d63f0a4a8c5cd9336d3d3f.tar.gz chromium_src-24c85faf5b8c0c7c38d63f0a4a8c5cd9336d3d3f.tar.bz2 |
Call PTOpenProvider to make sure that XPS works.
BUG=317027
TBR=noamsml
Review URL: https://codereview.chromium.org/169903003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@251707 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/service/cloud_print')
-rw-r--r-- | chrome/service/cloud_print/print_system_win.cc | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/chrome/service/cloud_print/print_system_win.cc b/chrome/service/cloud_print/print_system_win.cc index 82d1c72..8d585d3 100644 --- a/chrome/service/cloud_print/print_system_win.cc +++ b/chrome/service/cloud_print/print_system_win.cc @@ -664,6 +664,16 @@ PrintSystemWin::PrintSystemWin() : use_cdd_(false) { PrintSystem::PrintSystemResult PrintSystemWin::Init() { use_cdd_ = !printing::XPSModule::Init(); + + if (!use_cdd_) { + HPTPROVIDER provider = NULL; + HRESULT hr = printing::XPSModule::OpenProvider(L"", 1, &provider); + if (provider) + printing::XPSModule::CloseProvider(provider); + // Use cdd if error is different from expected. + use_cdd_ = (hr != HRESULT_FROM_WIN32(ERROR_INVALID_PRINTER_NAME)); + } + return PrintSystemResult(true, std::string()); } @@ -679,8 +689,7 @@ void PrintSystemWin::GetPrinterCapsAndDefaults( // Launch as child process to retrieve the capabilities and defaults because // this involves invoking a printer driver DLL and crashes have been known to // occur. - PrinterCapsHandler* handler = - new PrinterCapsHandler(printer_name, callback); + PrinterCapsHandler* handler = new PrinterCapsHandler(printer_name, callback); handler->AddRef(); if (use_cdd_) handler->StartGetPrinterSemanticCapsAndDefaults(); @@ -711,8 +720,7 @@ bool PrintSystemWin::ValidatePrintTicket( } bool ret = false; HPTPROVIDER provider = NULL; - printing::XPSModule::OpenProvider(base::UTF8ToWide(printer_name.c_str()), - 1, + printing::XPSModule::OpenProvider(base::UTF8ToWide(printer_name), 1, &provider); if (provider) { base::win::ScopedComPtr<IStream> print_ticket_stream; |