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

Side by Side Diff: printing/backend/print_backend_win.cc

Issue 6825055: Include base/win/scoped_comptr.h instead of base/scoped_comptr_win.h. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: revert bad indentation, rebase Created 9 years, 8 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 | « net/http/url_security_manager_win.cc ('k') | ui/base/dragdrop/os_exchange_data_provider_win.h » ('j') | 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) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/backend/print_backend.h" 5 #include "printing/backend/print_backend.h"
6 6
7 #include <objidl.h> 7 #include <objidl.h>
8 #include <winspool.h> 8 #include <winspool.h>
9 9
10 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/scoped_ptr.h"
11 #include "base/string_piece.h" 11 #include "base/string_piece.h"
12 #include "base/utf_string_conversions.h" 12 #include "base/utf_string_conversions.h"
13 #include "base/win/scoped_bstr.h" 13 #include "base/win/scoped_bstr.h"
14 #include "base/win/scoped_comptr.h" 14 #include "base/win/scoped_comptr.h"
15 #include "base/win/scoped_hglobal.h" 15 #include "base/win/scoped_hglobal.h"
16 #include "printing/backend/print_backend_consts.h" 16 #include "printing/backend/print_backend_consts.h"
17 #include "printing/backend/win_helper.h" 17 #include "printing/backend/win_helper.h"
18 18
19 using base::win::ScopedBstr;
20 using base::win::ScopedComPtr;
21
22 namespace { 19 namespace {
23 20
24 HRESULT StreamOnHGlobalToString(IStream* stream, std::string* out) { 21 HRESULT StreamOnHGlobalToString(IStream* stream, std::string* out) {
25 DCHECK(stream); 22 DCHECK(stream);
26 DCHECK(out); 23 DCHECK(out);
27 HGLOBAL hdata = NULL; 24 HGLOBAL hdata = NULL;
28 HRESULT hr = GetHGlobalFromStream(stream, &hdata); 25 HRESULT hr = GetHGlobalFromStream(stream, &hdata);
29 if (SUCCEEDED(hr)) { 26 if (SUCCEEDED(hr)) {
30 DCHECK(hdata); 27 DCHECK(hdata);
31 base::win::ScopedHGlobal<char> locked_data(hdata); 28 base::win::ScopedHGlobal<char> locked_data(hdata);
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
104 } 101 }
105 if (!IsValidPrinter(printer_name)) { 102 if (!IsValidPrinter(printer_name)) {
106 return false; 103 return false;
107 } 104 }
108 DCHECK(printer_info); 105 DCHECK(printer_info);
109 HPTPROVIDER provider = NULL; 106 HPTPROVIDER provider = NULL;
110 std::wstring printer_name_wide = UTF8ToWide(printer_name); 107 std::wstring printer_name_wide = UTF8ToWide(printer_name);
111 HRESULT hr = XPSModule::OpenProvider(printer_name_wide, 1, &provider); 108 HRESULT hr = XPSModule::OpenProvider(printer_name_wide, 1, &provider);
112 DCHECK(SUCCEEDED(hr)); 109 DCHECK(SUCCEEDED(hr));
113 if (provider) { 110 if (provider) {
114 ScopedComPtr<IStream> print_capabilities_stream; 111 base::win::ScopedComPtr<IStream> print_capabilities_stream;
115 hr = CreateStreamOnHGlobal(NULL, TRUE, 112 hr = CreateStreamOnHGlobal(NULL, TRUE,
116 print_capabilities_stream.Receive()); 113 print_capabilities_stream.Receive());
117 DCHECK(SUCCEEDED(hr)); 114 DCHECK(SUCCEEDED(hr));
118 if (print_capabilities_stream) { 115 if (print_capabilities_stream) {
119 ScopedBstr error; 116 base::win::ScopedBstr error;
120 hr = XPSModule::GetPrintCapabilities(provider, 117 hr = XPSModule::GetPrintCapabilities(provider,
121 NULL, 118 NULL,
122 print_capabilities_stream, 119 print_capabilities_stream,
123 error.Receive()); 120 error.Receive());
124 DCHECK(SUCCEEDED(hr)); 121 DCHECK(SUCCEEDED(hr));
125 if (FAILED(hr)) { 122 if (FAILED(hr)) {
126 return false; 123 return false;
127 } 124 }
128 hr = StreamOnHGlobalToString(print_capabilities_stream.get(), 125 hr = StreamOnHGlobalToString(print_capabilities_stream.get(),
129 &printer_info->printer_capabilities); 126 &printer_info->printer_capabilities);
130 DCHECK(SUCCEEDED(hr)); 127 DCHECK(SUCCEEDED(hr));
131 printer_info->caps_mime_type = "text/xml"; 128 printer_info->caps_mime_type = "text/xml";
132 } 129 }
133 // TODO(sanjeevr): Add ScopedPrinterHandle 130 // TODO(sanjeevr): Add ScopedPrinterHandle
134 HANDLE printer_handle = NULL; 131 HANDLE printer_handle = NULL;
135 OpenPrinter(const_cast<LPTSTR>(printer_name_wide.c_str()), &printer_handle, 132 OpenPrinter(const_cast<LPTSTR>(printer_name_wide.c_str()), &printer_handle,
136 NULL); 133 NULL);
137 DCHECK(printer_handle); 134 DCHECK(printer_handle);
138 if (printer_handle) { 135 if (printer_handle) {
139 DWORD devmode_size = DocumentProperties( 136 DWORD devmode_size = DocumentProperties(
140 NULL, printer_handle, const_cast<LPTSTR>(printer_name_wide.c_str()), 137 NULL, printer_handle, const_cast<LPTSTR>(printer_name_wide.c_str()),
141 NULL, NULL, 0); 138 NULL, NULL, 0);
142 DCHECK_NE(0U, devmode_size); 139 DCHECK_NE(0U, devmode_size);
143 scoped_ptr<BYTE> devmode_out_buffer(new BYTE[devmode_size]); 140 scoped_ptr<BYTE> devmode_out_buffer(new BYTE[devmode_size]);
144 DEVMODE* devmode_out = 141 DEVMODE* devmode_out =
145 reinterpret_cast<DEVMODE*>(devmode_out_buffer.get()); 142 reinterpret_cast<DEVMODE*>(devmode_out_buffer.get());
146 DocumentProperties( 143 DocumentProperties(
147 NULL, printer_handle, const_cast<LPTSTR>(printer_name_wide.c_str()), 144 NULL, printer_handle, const_cast<LPTSTR>(printer_name_wide.c_str()),
148 devmode_out, NULL, DM_OUT_BUFFER); 145 devmode_out, NULL, DM_OUT_BUFFER);
149 ScopedComPtr<IStream> printer_defaults_stream; 146 base::win::ScopedComPtr<IStream> printer_defaults_stream;
150 hr = CreateStreamOnHGlobal(NULL, TRUE, 147 hr = CreateStreamOnHGlobal(NULL, TRUE,
151 printer_defaults_stream.Receive()); 148 printer_defaults_stream.Receive());
152 DCHECK(SUCCEEDED(hr)); 149 DCHECK(SUCCEEDED(hr));
153 if (printer_defaults_stream) { 150 if (printer_defaults_stream) {
154 hr = XPSModule::ConvertDevModeToPrintTicket(provider, 151 hr = XPSModule::ConvertDevModeToPrintTicket(provider,
155 devmode_size, 152 devmode_size,
156 devmode_out, 153 devmode_out,
157 kPTJobScope, 154 kPTJobScope,
158 printer_defaults_stream); 155 printer_defaults_stream);
159 DCHECK(SUCCEEDED(hr)); 156 DCHECK(SUCCEEDED(hr));
(...skipping 23 matching lines...) Expand all
183 } 180 }
184 return ret; 181 return ret;
185 } 182 }
186 183
187 scoped_refptr<PrintBackend> PrintBackend::CreateInstance( 184 scoped_refptr<PrintBackend> PrintBackend::CreateInstance(
188 const DictionaryValue* print_backend_settings) { 185 const DictionaryValue* print_backend_settings) {
189 return new PrintBackendWin; 186 return new PrintBackendWin;
190 } 187 }
191 188
192 } // namespace printing 189 } // namespace printing
OLDNEW
« no previous file with comments | « net/http/url_security_manager_win.cc ('k') | ui/base/dragdrop/os_exchange_data_provider_win.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698