diff options
author | mpcomplete@chromium.org <mpcomplete@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-02-15 00:25:34 +0000 |
---|---|---|
committer | mpcomplete@chromium.org <mpcomplete@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-02-15 00:25:34 +0000 |
commit | 00023ad3c7d803535165e3a23c914342a7137dc4 (patch) | |
tree | b1147352c60adf0f9c5f8c0735100737fdddfde2 /chrome/browser/extensions/extension_event_router.cc | |
parent | 5832ff87058de4a6eec25fd2abb183134e834124 (diff) | |
download | chromium_src-00023ad3c7d803535165e3a23c914342a7137dc4.zip chromium_src-00023ad3c7d803535165e3a23c914342a7137dc4.tar.gz chromium_src-00023ad3c7d803535165e3a23c914342a7137dc4.tar.bz2 |
Add plumbing to webRequest API to support event filtering.
This introduces a new kind of event (WebRequestEvent) to handle the extra parameters to addListener. Behind the scenes, adding a listener creates a unique sub-event associated with that set of filter+extraInfo parameters. When we dispatch the event, we dispatch only those sub-events that match the required filters.
BUG=60101
TEST=no
Review URL: http://codereview.chromium.org/6250152
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@74887 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/extensions/extension_event_router.cc')
-rw-r--r-- | chrome/browser/extensions/extension_event_router.cc | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/chrome/browser/extensions/extension_event_router.cc b/chrome/browser/extensions/extension_event_router.cc index 0b4f799..13532d7 100644 --- a/chrome/browser/extensions/extension_event_router.cc +++ b/chrome/browser/extensions/extension_event_router.cc @@ -9,8 +9,9 @@ #include "chrome/browser/extensions/extension_devtools_manager.h" #include "chrome/browser/extensions/extension_processes_api.h" #include "chrome/browser/extensions/extension_processes_api_constants.h" -#include "chrome/browser/extensions/extension_tabs_module.h" #include "chrome/browser/extensions/extension_service.h" +#include "chrome/browser/extensions/extension_tabs_module.h" +#include "chrome/browser/extensions/extension_webrequest_api.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/renderer_host/render_process_host.h" #include "chrome/common/extensions/extension.h" @@ -108,6 +109,8 @@ void ExtensionEventRouter::RemoveEventListener( " PID=" << process->id() << " extension=" << extension_id << " event=" << event_name; listeners_[event_name].erase(listener); + // Note: extension_id may point to data in the now-deleted listeners_ object. + // Do not use. if (extension_devtools_manager_.get()) extension_devtools_manager_->RemoveEventListener(event_name, process->id()); @@ -116,6 +119,9 @@ void ExtensionEventRouter::RemoveEventListener( // exits), then we let the TaskManager know that it has one fewer listener. if (event_name.compare(extension_processes_api_constants::kOnUpdated) == 0) ExtensionProcessesEventRouter::GetInstance()->ListenerRemoved(); + + ExtensionWebRequestEventRouter::RemoveEventListenerOnUIThread( + listener.extension_id, event_name); } bool ExtensionEventRouter::HasEventListener(const std::string& event_name) { |