Index: extensions/renderer/event_bindings.h |
diff --git a/extensions/renderer/event_bindings.h b/extensions/renderer/event_bindings.h |
index 0f69cd36edf4f6af562c102a3660d16b21e9a154..3575b649b1787536e5b885ff84a4bd73e629d2d6 100644 |
--- a/extensions/renderer/event_bindings.h |
+++ b/extensions/renderer/event_bindings.h |
@@ -5,6 +5,9 @@ |
#ifndef EXTENSIONS_RENDERER_EVENT_BINDINGS_H_ |
#define EXTENSIONS_RENDERER_EVENT_BINDINGS_H_ |
+#include <set> |
+ |
+#include "base/macros.h" |
#include "extensions/renderer/object_backed_native_handler.h" |
#include "v8/include/v8.h" |
@@ -14,7 +17,6 @@ class DictionaryValue; |
namespace extensions { |
class Dispatcher; |
-class EventFilter; |
class EventFilteringInfo; |
class EventMatcher; |
@@ -25,16 +27,25 @@ class EventBindings : public ObjectBackedNativeHandler { |
~EventBindings() override; |
private: |
+ // JavaScript handler which forwards to AttachEvent(). |
+ // args[0] forwards to |event_name|. |
+ void AttachEventHandler(const v8::FunctionCallbackInfo<v8::Value>& args); |
+ |
// Attach an event name to an object. |
// |event_name| The name of the event to attach. |
- void AttachEvent(const v8::FunctionCallbackInfo<v8::Value>& args); |
+ void AttachEvent(const std::string& event_name); |
+ |
+ // JavaScript handler which forwards to DetachEvent(). |
+ // args[0] forwards to |event_name|. |
+ // args[1] forwards to |is_manual|. |
+ void DetachEventHandler(const v8::FunctionCallbackInfo<v8::Value>& args); |
- // Detach an event name from an object. |
+ // Detaches an event name from an object. |
// |event_name| The name of the event to stop listening to. |
// |is_manual| True if this detach was done by the user via removeListener() |
// as opposed to automatically during shutdown, in which case we should inform |
// the browser we are no longer interested in that event. |
- void DetachEvent(const v8::FunctionCallbackInfo<v8::Value>& args); |
+ void DetachEvent(const std::string& event_name, bool is_manual); |
// MatcherID AttachFilteredEvent(string event_name, object filter) |
// |event_name| Name of the event to attach. |
@@ -51,9 +62,19 @@ class EventBindings : public ObjectBackedNativeHandler { |
void MatchAgainstEventFilter(const v8::FunctionCallbackInfo<v8::Value>& args); |
- Dispatcher* dispatcher_; |
scoped_ptr<EventMatcher> ParseEventMatcher( |
base::DictionaryValue* filter_dict); |
+ |
+ // Called when our context, and therefore us, is invalidated. Run any cleanup. |
+ void OnInvalidated(); |
+ |
+ // The set of attached events. Maintain this so that we can detch them on |
+ // unload. |
+ std::set<std::string> attached_event_names_; |
+ |
+ Dispatcher* dispatcher_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(EventBindings); |
}; |
} // namespace extensions |