summaryrefslogtreecommitdiffstats
path: root/chrome/browser/extensions/extension_event_router.cc
diff options
context:
space:
mode:
authormpcomplete@chromium.org <mpcomplete@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-02-15 00:25:34 +0000
committermpcomplete@chromium.org <mpcomplete@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-02-15 00:25:34 +0000
commit00023ad3c7d803535165e3a23c914342a7137dc4 (patch)
treeb1147352c60adf0f9c5f8c0735100737fdddfde2 /chrome/browser/extensions/extension_event_router.cc
parent5832ff87058de4a6eec25fd2abb183134e834124 (diff)
downloadchromium_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.cc8
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) {