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

Side by Side Diff: chrome/browser/net/chrome_network_delegate.cc

Issue 7024056: Handle extension webrequest API on the IO thread. This speeds up blocking event (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: review Created 9 years, 6 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 | « chrome/browser/net/chrome_network_delegate.h ('k') | chrome/browser/profiles/profile.cc » ('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 "chrome/browser/net/chrome_network_delegate.h" 5 #include "chrome/browser/net/chrome_network_delegate.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "chrome/browser/custom_handlers/protocol_handler_registry.h" 8 #include "chrome/browser/custom_handlers/protocol_handler_registry.h"
9 #include "chrome/browser/extensions/extension_event_router_forwarder.h" 9 #include "chrome/browser/extensions/extension_event_router_forwarder.h"
10 #include "chrome/browser/extensions/extension_info_map.h"
10 #include "chrome/browser/extensions/extension_proxy_api.h" 11 #include "chrome/browser/extensions/extension_proxy_api.h"
11 #include "chrome/browser/extensions/extension_webrequest_api.h" 12 #include "chrome/browser/extensions/extension_webrequest_api.h"
12 #include "chrome/browser/prefs/pref_member.h" 13 #include "chrome/browser/prefs/pref_member.h"
13 #include "chrome/browser/task_manager/task_manager.h" 14 #include "chrome/browser/task_manager/task_manager.h"
14 #include "chrome/common/pref_names.h" 15 #include "chrome/common/pref_names.h"
15 #include "content/browser/browser_thread.h" 16 #include "content/browser/browser_thread.h"
16 #include "net/base/host_port_pair.h" 17 #include "net/base/host_port_pair.h"
17 #include "net/base/net_errors.h" 18 #include "net/base/net_errors.h"
18 #include "net/http/http_request_headers.h" 19 #include "net/http/http_request_headers.h"
19 #include "net/http/http_response_headers.h" 20 #include "net/http/http_response_headers.h"
(...skipping 14 matching lines...) Expand all
34 ExtensionProxyEventRouter::GetInstance()->OnProxyError( 35 ExtensionProxyEventRouter::GetInstance()->OnProxyError(
35 event_router, profile_id, request->status().os_error()); 36 event_router, profile_id, request->status().os_error());
36 } 37 }
37 } 38 }
38 } 39 }
39 40
40 } // namespace 41 } // namespace
41 42
42 ChromeNetworkDelegate::ChromeNetworkDelegate( 43 ChromeNetworkDelegate::ChromeNetworkDelegate(
43 ExtensionEventRouterForwarder* event_router, 44 ExtensionEventRouterForwarder* event_router,
45 ExtensionInfoMap* extension_info_map,
44 ProfileId profile_id, 46 ProfileId profile_id,
45 BooleanPrefMember* enable_referrers) 47 BooleanPrefMember* enable_referrers)
46 : event_router_(event_router), 48 : event_router_(event_router),
47 profile_id_(profile_id), 49 profile_id_(profile_id),
50 extension_info_map_(extension_info_map),
48 enable_referrers_(enable_referrers) { 51 enable_referrers_(enable_referrers) {
49 DCHECK(event_router); 52 DCHECK(event_router);
50 DCHECK(enable_referrers); 53 DCHECK(enable_referrers);
51 } 54 }
52 55
53 ChromeNetworkDelegate::~ChromeNetworkDelegate() {} 56 ChromeNetworkDelegate::~ChromeNetworkDelegate() {}
54 57
55 // static 58 // static
56 void ChromeNetworkDelegate::InitializeReferrersEnabled( 59 void ChromeNetworkDelegate::InitializeReferrersEnabled(
57 BooleanPrefMember* enable_referrers, 60 BooleanPrefMember* enable_referrers,
58 PrefService* pref_service) { 61 PrefService* pref_service) {
59 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 62 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
60 enable_referrers->Init(prefs::kEnableReferrers, pref_service, NULL); 63 enable_referrers->Init(prefs::kEnableReferrers, pref_service, NULL);
61 enable_referrers->MoveToThread(BrowserThread::IO); 64 enable_referrers->MoveToThread(BrowserThread::IO);
62 } 65 }
63 66
64 int ChromeNetworkDelegate::OnBeforeURLRequest( 67 int ChromeNetworkDelegate::OnBeforeURLRequest(
65 net::URLRequest* request, 68 net::URLRequest* request,
66 net::CompletionCallback* callback, 69 net::CompletionCallback* callback,
67 GURL* new_url) { 70 GURL* new_url) {
68 if (!enable_referrers_->GetValue()) 71 if (!enable_referrers_->GetValue())
69 request->set_referrer(std::string()); 72 request->set_referrer(std::string());
70 return ExtensionWebRequestEventRouter::GetInstance()->OnBeforeRequest( 73 return ExtensionWebRequestEventRouter::GetInstance()->OnBeforeRequest(
71 profile_id_, event_router_.get(), request, callback, new_url); 74 profile_id_, extension_info_map_.get(), request, callback, new_url);
72 } 75 }
73 76
74 int ChromeNetworkDelegate::OnBeforeSendHeaders( 77 int ChromeNetworkDelegate::OnBeforeSendHeaders(
75 uint64 request_id, 78 uint64 request_id,
76 net::CompletionCallback* callback, 79 net::CompletionCallback* callback,
77 net::HttpRequestHeaders* headers) { 80 net::HttpRequestHeaders* headers) {
78 return ExtensionWebRequestEventRouter::GetInstance()->OnBeforeSendHeaders( 81 return ExtensionWebRequestEventRouter::GetInstance()->OnBeforeSendHeaders(
79 profile_id_, event_router_.get(), request_id, callback, headers); 82 profile_id_, extension_info_map_.get(), request_id, callback, headers);
80 } 83 }
81 84
82 void ChromeNetworkDelegate::OnRequestSent( 85 void ChromeNetworkDelegate::OnRequestSent(
83 uint64 request_id, 86 uint64 request_id,
84 const net::HostPortPair& socket_address, 87 const net::HostPortPair& socket_address,
85 const net::HttpRequestHeaders& headers) { 88 const net::HttpRequestHeaders& headers) {
86 ExtensionWebRequestEventRouter::GetInstance()->OnRequestSent( 89 ExtensionWebRequestEventRouter::GetInstance()->OnRequestSent(
87 profile_id_, event_router_.get(), request_id, socket_address, headers); 90 profile_id_, extension_info_map_.get(), request_id,
91 socket_address, headers);
88 } 92 }
89 93
90 void ChromeNetworkDelegate::OnBeforeRedirect(net::URLRequest* request, 94 void ChromeNetworkDelegate::OnBeforeRedirect(net::URLRequest* request,
91 const GURL& new_location) { 95 const GURL& new_location) {
92 ExtensionWebRequestEventRouter::GetInstance()->OnBeforeRedirect( 96 ExtensionWebRequestEventRouter::GetInstance()->OnBeforeRedirect(
93 profile_id_, event_router_.get(), request, new_location); 97 profile_id_, extension_info_map_.get(), request, new_location);
94 } 98 }
95 99
96 100
97 void ChromeNetworkDelegate::OnResponseStarted(net::URLRequest* request) { 101 void ChromeNetworkDelegate::OnResponseStarted(net::URLRequest* request) {
98 ExtensionWebRequestEventRouter::GetInstance()->OnResponseStarted( 102 ExtensionWebRequestEventRouter::GetInstance()->OnResponseStarted(
99 profile_id_, event_router_.get(), request); 103 profile_id_, extension_info_map_.get(), request);
100 ForwardProxyErrors(request, event_router_.get(), profile_id_); 104 ForwardProxyErrors(request, event_router_.get(), profile_id_);
101 } 105 }
102 106
103 void ChromeNetworkDelegate::OnRawBytesRead(const net::URLRequest& request, 107 void ChromeNetworkDelegate::OnRawBytesRead(const net::URLRequest& request,
104 int bytes_read) { 108 int bytes_read) {
105 TaskManager::GetInstance()->model()->NotifyBytesRead(request, bytes_read); 109 TaskManager::GetInstance()->model()->NotifyBytesRead(request, bytes_read);
106 } 110 }
107 111
108 void ChromeNetworkDelegate::OnCompleted(net::URLRequest* request) { 112 void ChromeNetworkDelegate::OnCompleted(net::URLRequest* request) {
109 if (request->status().status() == net::URLRequestStatus::SUCCESS) { 113 if (request->status().status() == net::URLRequestStatus::SUCCESS) {
110 bool is_redirect = request->response_headers() && 114 bool is_redirect = request->response_headers() &&
111 net::HttpResponseHeaders::IsRedirectResponseCode( 115 net::HttpResponseHeaders::IsRedirectResponseCode(
112 request->response_headers()->response_code()); 116 request->response_headers()->response_code());
113 if (!is_redirect) { 117 if (!is_redirect) {
114 ExtensionWebRequestEventRouter::GetInstance()->OnCompleted( 118 ExtensionWebRequestEventRouter::GetInstance()->OnCompleted(
115 profile_id_, event_router_.get(), request); 119 profile_id_, extension_info_map_.get(), request);
116 } 120 }
117 } else if (request->status().status() == net::URLRequestStatus::FAILED) { 121 } else if (request->status().status() == net::URLRequestStatus::FAILED) {
118 ExtensionWebRequestEventRouter::GetInstance()->OnErrorOccurred( 122 ExtensionWebRequestEventRouter::GetInstance()->OnErrorOccurred(
119 profile_id_, event_router_.get(), request); 123 profile_id_, extension_info_map_.get(), request);
120 } 124 }
121 ForwardProxyErrors(request, event_router_.get(), profile_id_); 125 ForwardProxyErrors(request, event_router_.get(), profile_id_);
122 } 126 }
123 127
124 void ChromeNetworkDelegate::OnURLRequestDestroyed(net::URLRequest* request) { 128 void ChromeNetworkDelegate::OnURLRequestDestroyed(net::URLRequest* request) {
125 ExtensionWebRequestEventRouter::GetInstance()->OnURLRequestDestroyed( 129 ExtensionWebRequestEventRouter::GetInstance()->OnURLRequestDestroyed(
126 profile_id_, request); 130 profile_id_, request);
127 } 131 }
128 132
129 void ChromeNetworkDelegate::OnHttpTransactionDestroyed(uint64 request_id) { 133 void ChromeNetworkDelegate::OnHttpTransactionDestroyed(uint64 request_id) {
130 ExtensionWebRequestEventRouter::GetInstance()->OnHttpTransactionDestroyed( 134 ExtensionWebRequestEventRouter::GetInstance()->OnHttpTransactionDestroyed(
131 profile_id_, request_id); 135 profile_id_, request_id);
132 } 136 }
133 137
134 void ChromeNetworkDelegate::OnPACScriptError(int line_number, 138 void ChromeNetworkDelegate::OnPACScriptError(int line_number,
135 const string16& error) { 139 const string16& error) {
136 ExtensionProxyEventRouter::GetInstance()->OnPACScriptError( 140 ExtensionProxyEventRouter::GetInstance()->OnPACScriptError(
137 event_router_.get(), profile_id_, line_number, error); 141 event_router_.get(), profile_id_, line_number, error);
138 } 142 }
OLDNEW
« no previous file with comments | « chrome/browser/net/chrome_network_delegate.h ('k') | chrome/browser/profiles/profile.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698