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

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

Issue 6598002: Make the ChromeNetworkDelegate use the ExtensionEventRouterForwarder (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 10 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 #include "chrome/browser/extensions/extension_webrequest_api.h" 5 #include "chrome/browser/extensions/extension_webrequest_api.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/json/json_writer.h" 9 #include "base/json/json_writer.h"
10 #include "base/values.h" 10 #include "base/values.h"
11 #include "chrome/browser/browser_thread.h" 11 #include "chrome/browser/browser_thread.h"
12 #include "chrome/browser/extensions/extension_io_event_router.h" 12 #include "chrome/browser/extensions/extension_event_router_forwarder.h"
13 #include "chrome/browser/extensions/extension_webrequest_api_constants.h" 13 #include "chrome/browser/extensions/extension_webrequest_api_constants.h"
14 #include "chrome/common/extensions/extension.h" 14 #include "chrome/common/extensions/extension.h"
15 #include "chrome/common/extensions/extension_extent.h" 15 #include "chrome/common/extensions/extension_extent.h"
16 #include "chrome/common/extensions/url_pattern.h" 16 #include "chrome/common/extensions/url_pattern.h"
17 #include "googleurl/src/gurl.h" 17 #include "googleurl/src/gurl.h"
18 18
19 namespace keys = extension_webrequest_api_constants; 19 namespace keys = extension_webrequest_api_constants;
20 20
21 namespace { 21 namespace {
22 22
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after
202 void ExtensionWebRequestEventRouter::RemoveEventListenerOnUIThread( 202 void ExtensionWebRequestEventRouter::RemoveEventListenerOnUIThread(
203 const std::string& extension_id, const std::string& sub_event_name) { 203 const std::string& extension_id, const std::string& sub_event_name) {
204 BrowserThread::PostTask( 204 BrowserThread::PostTask(
205 BrowserThread::IO, FROM_HERE, 205 BrowserThread::IO, FROM_HERE,
206 NewRunnableFunction( 206 NewRunnableFunction(
207 &RemoveEventListenerOnIOThread, 207 &RemoveEventListenerOnIOThread,
208 extension_id, sub_event_name)); 208 extension_id, sub_event_name));
209 } 209 }
210 210
211 void ExtensionWebRequestEventRouter::OnBeforeRequest( 211 void ExtensionWebRequestEventRouter::OnBeforeRequest(
212 const ExtensionIOEventRouter* event_router, 212 ExtensionEventRouterForwarder* event_router,
213 Profile* profile,
213 const GURL& url, 214 const GURL& url,
214 const std::string& method) { 215 const std::string& method) {
216 // TODO(jochen): Figure out what to do with events from the system context.
217 if (!profile)
218 return;
215 std::vector<const EventListener*> listeners = 219 std::vector<const EventListener*> listeners =
216 GetMatchingListeners(keys::kOnBeforeRequest, url); 220 GetMatchingListeners(keys::kOnBeforeRequest, url);
217 if (listeners.empty()) 221 if (listeners.empty())
218 return; 222 return;
219 223
220 ListValue args; 224 ListValue args;
221 DictionaryValue* dict = new DictionaryValue(); 225 DictionaryValue* dict = new DictionaryValue();
222 dict->SetString(keys::kUrlKey, url.spec()); 226 dict->SetString(keys::kUrlKey, url.spec());
223 dict->SetString(keys::kMethodKey, method); 227 dict->SetString(keys::kMethodKey, method);
224 // TODO(mpcomplete): implement 228 // TODO(mpcomplete): implement
225 dict->SetInteger(keys::kTabIdKey, 0); 229 dict->SetInteger(keys::kTabIdKey, 0);
226 dict->SetInteger(keys::kRequestIdKey, 0); 230 dict->SetInteger(keys::kRequestIdKey, 0);
227 dict->SetString(keys::kTypeKey, "main_frame"); 231 dict->SetString(keys::kTypeKey, "main_frame");
228 dict->SetInteger(keys::kTimeStampKey, 1); 232 dict->SetInteger(keys::kTimeStampKey, 1);
229 args.Append(dict); 233 args.Append(dict);
230 234
231 std::string json_args; 235 std::string json_args;
232 base::JSONWriter::Write(&args, false, &json_args); 236 base::JSONWriter::Write(&args, false, &json_args);
233 237
234 for (std::vector<const EventListener*>::iterator it = listeners.begin(); 238 for (std::vector<const EventListener*>::iterator it = listeners.begin();
235 it != listeners.end(); ++it) { 239 it != listeners.end(); ++it) {
240
236 event_router->DispatchEventToExtension( 241 event_router->DispatchEventToExtension(
237 (*it)->extension_id, (*it)->sub_event_name, json_args); 242 (*it)->extension_id, (*it)->sub_event_name, json_args,
243 profile, true, GURL());
238 } 244 }
239 } 245 }
240 246
241 void ExtensionWebRequestEventRouter::AddEventListener( 247 void ExtensionWebRequestEventRouter::AddEventListener(
242 const std::string& extension_id, 248 const std::string& extension_id,
243 const std::string& event_name, 249 const std::string& event_name,
244 const std::string& sub_event_name, 250 const std::string& sub_event_name,
245 const RequestFilter& filter, 251 const RequestFilter& filter,
246 int extra_info_spec) { 252 int extra_info_spec) {
247 if (!IsWebRequestEvent(event_name)) 253 if (!IsWebRequestEvent(event_name))
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
315 EXTENSION_FUNCTION_VALIDATE(args_->GetString(4, &sub_event_name)); 321 EXTENSION_FUNCTION_VALIDATE(args_->GetString(4, &sub_event_name));
316 322
317 BrowserThread::PostTask( 323 BrowserThread::PostTask(
318 BrowserThread::IO, FROM_HERE, 324 BrowserThread::IO, FROM_HERE,
319 NewRunnableFunction( 325 NewRunnableFunction(
320 &AddEventListenerOnIOThread, 326 &AddEventListenerOnIOThread,
321 extension_id(), event_name, sub_event_name, filter, extra_info_spec)); 327 extension_id(), event_name, sub_event_name, filter, extra_info_spec));
322 328
323 return true; 329 return true;
324 } 330 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698