summaryrefslogtreecommitdiffstats
path: root/chrome/service/cloud_print
diff options
context:
space:
mode:
authorvitalybuka@chromium.org <vitalybuka@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-02-18 00:36:06 +0000
committervitalybuka@chromium.org <vitalybuka@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-02-18 00:36:06 +0000
commit24c85faf5b8c0c7c38d63f0a4a8c5cd9336d3d3f (patch)
tree0ac9eb1801a06bbfed8f95b26ebc99f8f1f5ec97 /chrome/service/cloud_print
parentd268d01de092347ac2a4aab53b853c34d8411dcb (diff)
downloadchromium_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.cc16
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;