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

Side by Side Diff: ceee/ie/plugin/bho/webrequest_notifier.cc

Issue 5581008: Add a new GetInstance() method for singleton classes, take 2. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 10 years 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
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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 // Web request notifier implementation. 5 // Web request notifier implementation.
6 #include "ceee/ie/plugin/bho/webrequest_notifier.h" 6 #include "ceee/ie/plugin/bho/webrequest_notifier.h"
7 7
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/scoped_ptr.h" 9 #include "base/scoped_ptr.h"
10 #include "chrome_frame/function_stub.h" 10 #include "chrome_frame/function_stub.h"
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after
155 DWORD error = patch_function->Patch(kUrlMonModuleName, kWinINetModuleName, 155 DWORD error = patch_function->Patch(kUrlMonModuleName, kWinINetModuleName,
156 name, handler); 156 name, handler);
157 // The patching operation is either successful, or failed cleanly. 157 // The patching operation is either successful, or failed cleanly.
158 DCHECK(error == NO_ERROR || !patch_function->is_patched()); 158 DCHECK(error == NO_ERROR || !patch_function->is_patched());
159 } 159 }
160 160
161 INTERNET_STATUS_CALLBACK STDAPICALLTYPE 161 INTERNET_STATUS_CALLBACK STDAPICALLTYPE
162 WebRequestNotifier::InternetSetStatusCallbackAPatch( 162 WebRequestNotifier::InternetSetStatusCallbackAPatch(
163 HINTERNET internet, 163 HINTERNET internet,
164 INTERNET_STATUS_CALLBACK callback) { 164 INTERNET_STATUS_CALLBACK callback) {
165 WebRequestNotifier* instance = ProductionWebRequestNotifier::get(); 165 WebRequestNotifier* instance = ProductionWebRequestNotifier::GetInstance();
166 INTERNET_STATUS_CALLBACK new_callback = 166 INTERNET_STATUS_CALLBACK new_callback =
167 instance->HandleBeforeInternetSetStatusCallback(internet, callback); 167 instance->HandleBeforeInternetSetStatusCallback(internet, callback);
168 return ::InternetSetStatusCallbackA(internet, new_callback); 168 return ::InternetSetStatusCallbackA(internet, new_callback);
169 } 169 }
170 170
171 INTERNET_STATUS_CALLBACK STDAPICALLTYPE 171 INTERNET_STATUS_CALLBACK STDAPICALLTYPE
172 WebRequestNotifier::InternetSetStatusCallbackWPatch( 172 WebRequestNotifier::InternetSetStatusCallbackWPatch(
173 HINTERNET internet, 173 HINTERNET internet,
174 INTERNET_STATUS_CALLBACK callback) { 174 INTERNET_STATUS_CALLBACK callback) {
175 WebRequestNotifier* instance = ProductionWebRequestNotifier::get(); 175 WebRequestNotifier* instance = ProductionWebRequestNotifier::GetInstance();
176 INTERNET_STATUS_CALLBACK new_callback = 176 INTERNET_STATUS_CALLBACK new_callback =
177 instance->HandleBeforeInternetSetStatusCallback(internet, callback); 177 instance->HandleBeforeInternetSetStatusCallback(internet, callback);
178 return ::InternetSetStatusCallbackW(internet, new_callback); 178 return ::InternetSetStatusCallbackW(internet, new_callback);
179 } 179 }
180 180
181 HINTERNET STDAPICALLTYPE WebRequestNotifier::InternetConnectAPatch( 181 HINTERNET STDAPICALLTYPE WebRequestNotifier::InternetConnectAPatch(
182 HINTERNET internet, 182 HINTERNET internet,
183 LPCSTR server_name, 183 LPCSTR server_name,
184 INTERNET_PORT server_port, 184 INTERNET_PORT server_port,
185 LPCSTR user_name, 185 LPCSTR user_name,
186 LPCSTR password, 186 LPCSTR password,
187 DWORD service, 187 DWORD service,
188 DWORD flags, 188 DWORD flags,
189 DWORD_PTR context) { 189 DWORD_PTR context) {
190 WebRequestNotifier* instance = ProductionWebRequestNotifier::get(); 190 WebRequestNotifier* instance = ProductionWebRequestNotifier::GetInstance();
191 instance->HandleBeforeInternetConnect(internet); 191 instance->HandleBeforeInternetConnect(internet);
192 192
193 HINTERNET server = ::InternetConnectA(internet, server_name, server_port, 193 HINTERNET server = ::InternetConnectA(internet, server_name, server_port,
194 user_name, password, service, flags, 194 user_name, password, service, flags,
195 context); 195 context);
196 196
197 instance->HandleAfterInternetConnect(server, CA2W(server_name), server_port, 197 instance->HandleAfterInternetConnect(server, CA2W(server_name), server_port,
198 service); 198 service);
199 return server; 199 return server;
200 } 200 }
201 201
202 HINTERNET STDAPICALLTYPE WebRequestNotifier::InternetConnectWPatch( 202 HINTERNET STDAPICALLTYPE WebRequestNotifier::InternetConnectWPatch(
203 HINTERNET internet, 203 HINTERNET internet,
204 LPCWSTR server_name, 204 LPCWSTR server_name,
205 INTERNET_PORT server_port, 205 INTERNET_PORT server_port,
206 LPCWSTR user_name, 206 LPCWSTR user_name,
207 LPCWSTR password, 207 LPCWSTR password,
208 DWORD service, 208 DWORD service,
209 DWORD flags, 209 DWORD flags,
210 DWORD_PTR context) { 210 DWORD_PTR context) {
211 WebRequestNotifier* instance = ProductionWebRequestNotifier::get(); 211 WebRequestNotifier* instance = ProductionWebRequestNotifier::GetInstance();
212 instance->HandleBeforeInternetConnect(internet); 212 instance->HandleBeforeInternetConnect(internet);
213 213
214 HINTERNET server = ::InternetConnectW(internet, server_name, server_port, 214 HINTERNET server = ::InternetConnectW(internet, server_name, server_port,
215 user_name, password, service, flags, 215 user_name, password, service, flags,
216 context); 216 context);
217 217
218 instance->HandleAfterInternetConnect(server, server_name, server_port, 218 instance->HandleAfterInternetConnect(server, server_name, server_port,
219 service); 219 service);
220 return server; 220 return server;
221 } 221 }
222 222
223 HINTERNET STDAPICALLTYPE WebRequestNotifier::HttpOpenRequestAPatch( 223 HINTERNET STDAPICALLTYPE WebRequestNotifier::HttpOpenRequestAPatch(
224 HINTERNET connect, 224 HINTERNET connect,
225 LPCSTR verb, 225 LPCSTR verb,
226 LPCSTR object_name, 226 LPCSTR object_name,
227 LPCSTR version, 227 LPCSTR version,
228 LPCSTR referrer, 228 LPCSTR referrer,
229 LPCSTR* accept_types, 229 LPCSTR* accept_types,
230 DWORD flags, 230 DWORD flags,
231 DWORD_PTR context) { 231 DWORD_PTR context) {
232 HINTERNET request = ::HttpOpenRequestA(connect, verb, object_name, version, 232 HINTERNET request = ::HttpOpenRequestA(connect, verb, object_name, version,
233 referrer, accept_types, flags, 233 referrer, accept_types, flags,
234 context); 234 context);
235 235
236 WebRequestNotifier* instance = ProductionWebRequestNotifier::get(); 236 WebRequestNotifier* instance = ProductionWebRequestNotifier::GetInstance();
237 instance->HandleAfterHttpOpenRequest(connect, request, verb, 237 instance->HandleAfterHttpOpenRequest(connect, request, verb,
238 CA2W(object_name), flags); 238 CA2W(object_name), flags);
239 return request; 239 return request;
240 } 240 }
241 241
242 HINTERNET STDAPICALLTYPE WebRequestNotifier::HttpOpenRequestWPatch( 242 HINTERNET STDAPICALLTYPE WebRequestNotifier::HttpOpenRequestWPatch(
243 HINTERNET connect, 243 HINTERNET connect,
244 LPCWSTR verb, 244 LPCWSTR verb,
245 LPCWSTR object_name, 245 LPCWSTR object_name,
246 LPCWSTR version, 246 LPCWSTR version,
247 LPCWSTR referrer, 247 LPCWSTR referrer,
248 LPCWSTR* accept_types, 248 LPCWSTR* accept_types,
249 DWORD flags, 249 DWORD flags,
250 DWORD_PTR context) { 250 DWORD_PTR context) {
251 HINTERNET request = ::HttpOpenRequestW(connect, verb, object_name, version, 251 HINTERNET request = ::HttpOpenRequestW(connect, verb, object_name, version,
252 referrer, accept_types, flags, 252 referrer, accept_types, flags,
253 context); 253 context);
254 254
255 WebRequestNotifier* instance = ProductionWebRequestNotifier::get(); 255 WebRequestNotifier* instance = ProductionWebRequestNotifier::GetInstance();
256 instance->HandleAfterHttpOpenRequest(connect, request, CW2A(verb), 256 instance->HandleAfterHttpOpenRequest(connect, request, CW2A(verb),
257 object_name, flags); 257 object_name, flags);
258 return request; 258 return request;
259 } 259 }
260 260
261 BOOL STDAPICALLTYPE WebRequestNotifier::HttpSendRequestAPatch( 261 BOOL STDAPICALLTYPE WebRequestNotifier::HttpSendRequestAPatch(
262 HINTERNET request, 262 HINTERNET request,
263 LPCSTR headers, 263 LPCSTR headers,
264 DWORD headers_length, 264 DWORD headers_length,
265 LPVOID optional, 265 LPVOID optional,
266 DWORD optional_length) { 266 DWORD optional_length) {
267 WebRequestNotifier* instance = ProductionWebRequestNotifier::get(); 267 WebRequestNotifier* instance = ProductionWebRequestNotifier::GetInstance();
268 instance->HandleBeforeHttpSendRequest(request); 268 instance->HandleBeforeHttpSendRequest(request);
269 return ::HttpSendRequestA(request, headers, headers_length, optional, 269 return ::HttpSendRequestA(request, headers, headers_length, optional,
270 optional_length); 270 optional_length);
271 } 271 }
272 272
273 BOOL STDAPICALLTYPE WebRequestNotifier::HttpSendRequestWPatch( 273 BOOL STDAPICALLTYPE WebRequestNotifier::HttpSendRequestWPatch(
274 HINTERNET request, 274 HINTERNET request,
275 LPCWSTR headers, 275 LPCWSTR headers,
276 DWORD headers_length, 276 DWORD headers_length,
277 LPVOID optional, 277 LPVOID optional,
278 DWORD optional_length) { 278 DWORD optional_length) {
279 WebRequestNotifier* instance = ProductionWebRequestNotifier::get(); 279 WebRequestNotifier* instance = ProductionWebRequestNotifier::GetInstance();
280 instance->HandleBeforeHttpSendRequest(request); 280 instance->HandleBeforeHttpSendRequest(request);
281 return ::HttpSendRequestW(request, headers, headers_length, optional, 281 return ::HttpSendRequestW(request, headers, headers_length, optional,
282 optional_length); 282 optional_length);
283 } 283 }
284 284
285 void CALLBACK WebRequestNotifier::InternetStatusCallbackPatch( 285 void CALLBACK WebRequestNotifier::InternetStatusCallbackPatch(
286 INTERNET_STATUS_CALLBACK original, 286 INTERNET_STATUS_CALLBACK original,
287 HINTERNET internet, 287 HINTERNET internet,
288 DWORD_PTR context, 288 DWORD_PTR context,
289 DWORD internet_status, 289 DWORD internet_status,
290 LPVOID status_information, 290 LPVOID status_information,
291 DWORD status_information_length) { 291 DWORD status_information_length) {
292 WebRequestNotifier* instance = ProductionWebRequestNotifier::get(); 292 WebRequestNotifier* instance = ProductionWebRequestNotifier::GetInstance();
293 instance->HandleBeforeInternetStatusCallback(original, internet, context, 293 instance->HandleBeforeInternetStatusCallback(original, internet, context,
294 internet_status, 294 internet_status,
295 status_information, 295 status_information,
296 status_information_length); 296 status_information_length);
297 original(internet, context, internet_status, status_information, 297 original(internet, context, internet_status, status_information,
298 status_information_length); 298 status_information_length);
299 } 299 }
300 300
301 BOOL STDAPICALLTYPE WebRequestNotifier::InternetReadFilePatch( 301 BOOL STDAPICALLTYPE WebRequestNotifier::InternetReadFilePatch(
302 HINTERNET file, 302 HINTERNET file,
303 LPVOID buffer, 303 LPVOID buffer,
304 DWORD number_of_bytes_to_read, 304 DWORD number_of_bytes_to_read,
305 LPDWORD number_of_bytes_read) { 305 LPDWORD number_of_bytes_read) {
306 BOOL result = ::InternetReadFile(file, buffer, number_of_bytes_to_read, 306 BOOL result = ::InternetReadFile(file, buffer, number_of_bytes_to_read,
307 number_of_bytes_read); 307 number_of_bytes_read);
308 WebRequestNotifier* instance = ProductionWebRequestNotifier::get(); 308 WebRequestNotifier* instance = ProductionWebRequestNotifier::GetInstance();
309 instance->HandleAfterInternetReadFile(file, result, number_of_bytes_read); 309 instance->HandleAfterInternetReadFile(file, result, number_of_bytes_read);
310 310
311 return result; 311 return result;
312 } 312 }
313 313
314 INTERNET_STATUS_CALLBACK 314 INTERNET_STATUS_CALLBACK
315 WebRequestNotifier::HandleBeforeInternetSetStatusCallback( 315 WebRequestNotifier::HandleBeforeInternetSetStatusCallback(
316 HINTERNET internet, 316 HINTERNET internet,
317 INTERNET_STATUS_CALLBACK internet_callback) { 317 INTERNET_STATUS_CALLBACK internet_callback) {
318 CComCritSecLock<CComAutoCriticalSection> lock(critical_section_); 318 CComCritSecLock<CComAutoCriticalSection> lock(critical_section_);
(...skipping 487 matching lines...) Expand 10 before | Expand all | Expand 10 after
806 NOTREACHED(); 806 NOTREACHED();
807 break; 807 break;
808 } 808 }
809 809
810 if (fire_on_error_occurred) { 810 if (fire_on_error_occurred) {
811 webrequest_events_funnel().OnErrorOccurred( 811 webrequest_events_funnel().OnErrorOccurred(
812 info->id, info->url.c_str(), L"", base::Time::Now()); 812 info->id, info->url.c_str(), L"", base::Time::Now());
813 } 813 }
814 info->state = next_state; 814 info->state = next_state;
815 } 815 }
816
817 // static
818 ProductionWebRequestNotifier* ProductionWebRequestNotifier::GetInstance() {
819 return Singleton<ProductionWebRequestNotifier>::get();
820 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698