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

Side by Side Diff: chrome/browser/extensions/extension_webrequest_api.h

Issue 7346024: Get rid of the ProfileId. It was added for ceee. I reverted the original change, since it led to ... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 5 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
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 #ifndef CHROME_BROWSER_EXTENSIONS_EXTENSION_WEBREQUEST_API_H_ 5 #ifndef CHROME_BROWSER_EXTENSIONS_EXTENSION_WEBREQUEST_API_H_
6 #define CHROME_BROWSER_EXTENSIONS_EXTENSION_WEBREQUEST_API_H_ 6 #define CHROME_BROWSER_EXTENSIONS_EXTENSION_WEBREQUEST_API_H_
7 #pragma once 7 #pragma once
8 8
9 #include <map> 9 #include <map>
10 #include <set> 10 #include <set>
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
104 }; 104 };
105 105
106 // Used in testing to allow chrome-extension URLs to be intercepted. 106 // Used in testing to allow chrome-extension URLs to be intercepted.
107 static void SetAllowChromeExtensionScheme(); 107 static void SetAllowChromeExtensionScheme();
108 108
109 static ExtensionWebRequestEventRouter* GetInstance(); 109 static ExtensionWebRequestEventRouter* GetInstance();
110 110
111 // Dispatches the OnBeforeRequest event to any extensions whose filters match 111 // Dispatches the OnBeforeRequest event to any extensions whose filters match
112 // the given request. Returns net::ERR_IO_PENDING if an extension is 112 // the given request. Returns net::ERR_IO_PENDING if an extension is
113 // intercepting the request, OK otherwise. 113 // intercepting the request, OK otherwise.
114 int OnBeforeRequest(ProfileId profile_id, 114 int OnBeforeRequest(void* profile,
115 ExtensionInfoMap* extension_info_map, 115 ExtensionInfoMap* extension_info_map,
116 net::URLRequest* request, 116 net::URLRequest* request,
117 net::CompletionCallback* callback, 117 net::CompletionCallback* callback,
118 GURL* new_url); 118 GURL* new_url);
119 119
120 // Dispatches the onBeforeSendHeaders event. This is fired for HTTP(s) 120 // Dispatches the onBeforeSendHeaders event. This is fired for HTTP(s)
121 // requests only, and allows modification of the outgoing request headers. 121 // requests only, and allows modification of the outgoing request headers.
122 // Returns net::ERR_IO_PENDING if an extension is intercepting the request, OK 122 // Returns net::ERR_IO_PENDING if an extension is intercepting the request, OK
123 // otherwise. 123 // otherwise.
124 int OnBeforeSendHeaders(ProfileId profile_id, 124 int OnBeforeSendHeaders(void* profile,
125 ExtensionInfoMap* extension_info_map, 125 ExtensionInfoMap* extension_info_map,
126 net::URLRequest* request, 126 net::URLRequest* request,
127 net::CompletionCallback* callback, 127 net::CompletionCallback* callback,
128 net::HttpRequestHeaders* headers); 128 net::HttpRequestHeaders* headers);
129 129
130 // Dispatches the onRequestSent event. This is fired for HTTP(s) requests 130 // Dispatches the onRequestSent event. This is fired for HTTP(s) requests
131 // only. 131 // only.
132 void OnRequestSent(ProfileId profile_id, 132 void OnRequestSent(void* profile,
133 ExtensionInfoMap* extension_info_map, 133 ExtensionInfoMap* extension_info_map,
134 uint64 request_id, 134 uint64 request_id,
135 const net::HostPortPair& socket_address, 135 const net::HostPortPair& socket_address,
136 const net::HttpRequestHeaders& headers); 136 const net::HttpRequestHeaders& headers);
137 137
138 // Dispatches the onBeforeRedirect event. This is fired for HTTP(s) requests 138 // Dispatches the onBeforeRedirect event. This is fired for HTTP(s) requests
139 // only. 139 // only.
140 void OnBeforeRedirect(ProfileId profile_id, 140 void OnBeforeRedirect(void* profile,
141 ExtensionInfoMap* extension_info_map, 141 ExtensionInfoMap* extension_info_map,
142 net::URLRequest* request, 142 net::URLRequest* request,
143 const GURL& new_location); 143 const GURL& new_location);
144 144
145 // Dispatches the onResponseStarted event indicating that the first bytes of 145 // Dispatches the onResponseStarted event indicating that the first bytes of
146 // the response have arrived. 146 // the response have arrived.
147 void OnResponseStarted(ProfileId profile_id, 147 void OnResponseStarted(void* profile,
148 ExtensionInfoMap* extension_info_map, 148 ExtensionInfoMap* extension_info_map,
149 net::URLRequest* request); 149 net::URLRequest* request);
150 150
151 // Dispatches the onComplete event. 151 // Dispatches the onComplete event.
152 void OnCompleted(ProfileId profile_id, 152 void OnCompleted(void* profile,
153 ExtensionInfoMap* extension_info_map, 153 ExtensionInfoMap* extension_info_map,
154 net::URLRequest* request); 154 net::URLRequest* request);
155 155
156 // Dispatches an onErrorOccurred event. 156 // Dispatches an onErrorOccurred event.
157 void OnErrorOccurred(ProfileId profile_id, 157 void OnErrorOccurred(void* profile,
158 ExtensionInfoMap* extension_info_map, 158 ExtensionInfoMap* extension_info_map,
159 net::URLRequest* request); 159 net::URLRequest* request);
160 160
161 // Notifications when objects are going away. 161 // Notifications when objects are going away.
162 void OnURLRequestDestroyed(ProfileId profile_id, net::URLRequest* request); 162 void OnURLRequestDestroyed(void* profile, net::URLRequest* request);
163 void OnHttpTransactionDestroyed(ProfileId profile_id, uint64 request_id); 163 void OnHttpTransactionDestroyed(void* profile, uint64 request_id);
164 164
165 // Called when an event listener handles a blocking event and responds. 165 // Called when an event listener handles a blocking event and responds.
166 void OnEventHandled( 166 void OnEventHandled(
167 ProfileId profile_id, 167 void* profile,
168 const std::string& extension_id, 168 const std::string& extension_id,
169 const std::string& event_name, 169 const std::string& event_name,
170 const std::string& sub_event_name, 170 const std::string& sub_event_name,
171 uint64 request_id, 171 uint64 request_id,
172 EventResponse* response); 172 EventResponse* response);
173 173
174 // Adds a listener to the given event. |event_name| specifies the event being 174 // Adds a listener to the given event. |event_name| specifies the event being
175 // listened to. |sub_event_name| is an internal event uniquely generated in 175 // listened to. |sub_event_name| is an internal event uniquely generated in
176 // the extension process to correspond to the given filter and 176 // the extension process to correspond to the given filter and
177 // extra_info_spec. 177 // extra_info_spec.
178 void AddEventListener( 178 void AddEventListener(
179 ProfileId profile_id, 179 void* profile,
180 const std::string& extension_id, 180 const std::string& extension_id,
181 const std::string& event_name, 181 const std::string& event_name,
182 const std::string& sub_event_name, 182 const std::string& sub_event_name,
183 const RequestFilter& filter, 183 const RequestFilter& filter,
184 int extra_info_spec, 184 int extra_info_spec,
185 base::WeakPtr<IPC::Message::Sender> ipc_sender); 185 base::WeakPtr<IPC::Message::Sender> ipc_sender);
186 186
187 // Removes the listener for the given sub-event. 187 // Removes the listener for the given sub-event.
188 void RemoveEventListener( 188 void RemoveEventListener(
189 ProfileId profile_id, 189 void* profile,
190 const std::string& extension_id, 190 const std::string& extension_id,
191 const std::string& sub_event_name); 191 const std::string& sub_event_name);
192 192
193 // Called when an incognito profile is created or destroyed. 193 // Called when an incognito profile is created or destroyed.
194 void OnOTRProfileCreated(ProfileId original_profile_id, 194 void OnOTRProfileCreated(void* original_profile,
195 ProfileId otr_profile_id); 195 void* otr_profile);
196 void OnOTRProfileDestroyed(ProfileId original_profile_id, 196 void OnOTRProfileDestroyed(void* original_profile,
197 ProfileId otr_profile_id); 197 void* otr_profile);
198 198
199 private: 199 private:
200 friend struct DefaultSingletonTraits<ExtensionWebRequestEventRouter>; 200 friend struct DefaultSingletonTraits<ExtensionWebRequestEventRouter>;
201 struct EventListener; 201 struct EventListener;
202 struct BlockedRequest; 202 struct BlockedRequest;
203 typedef std::map<std::string, std::set<EventListener> > ListenerMapForProfile; 203 typedef std::map<std::string, std::set<EventListener> > ListenerMapForProfile;
204 typedef std::map<ProfileId, ListenerMapForProfile> ListenerMap; 204 typedef std::map<void*, ListenerMapForProfile> ListenerMap;
205 typedef std::map<uint64, BlockedRequest> BlockedRequestMap; 205 typedef std::map<uint64, BlockedRequest> BlockedRequestMap;
206 typedef std::map<uint64, net::URLRequest*> HttpRequestMap; 206 typedef std::map<uint64, net::URLRequest*> HttpRequestMap;
207 // Map of request_id -> bit vector of EventTypes already signaled 207 // Map of request_id -> bit vector of EventTypes already signaled
208 typedef std::map<uint64, int> SignaledRequestMap; 208 typedef std::map<uint64, int> SignaledRequestMap;
209 typedef std::map<ProfileId, ProfileId> CrossProfileMap; 209 typedef std::map<void*, void*> CrossProfileMap;
210 210
211 ExtensionWebRequestEventRouter(); 211 ExtensionWebRequestEventRouter();
212 ~ExtensionWebRequestEventRouter(); 212 ~ExtensionWebRequestEventRouter();
213 213
214 bool DispatchEvent( 214 bool DispatchEvent(
215 ProfileId profile_id, 215 void* profile,
216 net::URLRequest* request, 216 net::URLRequest* request,
217 const std::vector<const EventListener*>& listeners, 217 const std::vector<const EventListener*>& listeners,
218 const ListValue& args); 218 const ListValue& args);
219 219
220 // Returns a list of event listeners that care about the given event, based 220 // Returns a list of event listeners that care about the given event, based
221 // on their filter parameters. |extra_info_spec| will contain the combined 221 // on their filter parameters. |extra_info_spec| will contain the combined
222 // set of extra_info_spec flags that every matching listener asked for. 222 // set of extra_info_spec flags that every matching listener asked for.
223 std::vector<const EventListener*> GetMatchingListeners( 223 std::vector<const EventListener*> GetMatchingListeners(
224 ProfileId profile_id, 224 void* profile,
225 ExtensionInfoMap* extension_info_map, 225 ExtensionInfoMap* extension_info_map,
226 const std::string& event_name, 226 const std::string& event_name,
227 const GURL& url, 227 const GURL& url,
228 int tab_id, 228 int tab_id,
229 int window_id, 229 int window_id,
230 ResourceType::Type resource_type, 230 ResourceType::Type resource_type,
231 int* extra_info_spec); 231 int* extra_info_spec);
232 232
233 // Same as above, but retrieves the filter parameters from the request. 233 // Same as above, but retrieves the filter parameters from the request.
234 std::vector<const EventListener*> GetMatchingListeners( 234 std::vector<const EventListener*> GetMatchingListeners(
235 ProfileId profile_id, 235 void* profile,
236 ExtensionInfoMap* extension_info_map, 236 ExtensionInfoMap* extension_info_map,
237 const std::string& event_name, 237 const std::string& event_name,
238 net::URLRequest* request, 238 net::URLRequest* request,
239 int* extra_info_spec); 239 int* extra_info_spec);
240 240
241 // Helper for the above functions. This is called twice: once for the profile 241 // Helper for the above functions. This is called twice: once for the profile
242 // of the event, the next time for the "cross" profile (i.e. the incognito 242 // of the event, the next time for the "cross" profile (i.e. the incognito
243 // profile if the event is originally for the normal profile, or vice versa). 243 // profile if the event is originally for the normal profile, or vice versa).
244 void GetMatchingListenersImpl( 244 void GetMatchingListenersImpl(
245 ProfileId profile_id, 245 void* profile,
246 ExtensionInfoMap* extension_info_map, 246 ExtensionInfoMap* extension_info_map,
247 bool crosses_incognito, 247 bool crosses_incognito,
248 const std::string& event_name, 248 const std::string& event_name,
249 const GURL& url, 249 const GURL& url,
250 int tab_id, 250 int tab_id,
251 int window_id, 251 int window_id,
252 ResourceType::Type resource_type, 252 ResourceType::Type resource_type,
253 int* extra_info_spec, 253 int* extra_info_spec,
254 std::vector<const ExtensionWebRequestEventRouter::EventListener*>* 254 std::vector<const ExtensionWebRequestEventRouter::EventListener*>*
255 matching_listeners); 255 matching_listeners);
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
297 DECLARE_EXTENSION_FUNCTION_NAME("experimental.webRequest.addEventListener"); 297 DECLARE_EXTENSION_FUNCTION_NAME("experimental.webRequest.addEventListener");
298 }; 298 };
299 299
300 class WebRequestEventHandled : public SyncIOThreadExtensionFunction { 300 class WebRequestEventHandled : public SyncIOThreadExtensionFunction {
301 public: 301 public:
302 virtual bool RunImpl(); 302 virtual bool RunImpl();
303 DECLARE_EXTENSION_FUNCTION_NAME("experimental.webRequest.eventHandled"); 303 DECLARE_EXTENSION_FUNCTION_NAME("experimental.webRequest.eventHandled");
304 }; 304 };
305 305
306 #endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_WEBREQUEST_API_H_ 306 #endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_WEBREQUEST_API_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698