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

Unified Diff: extensions/renderer/event_emitter.h

Issue 2722463006: [Extensions Bindings] Notify of event unregistration on invalidation (Closed)
Patch Set: . Created 3 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 side-by-side diff with in-line comments
Download patch
Index: extensions/renderer/event_emitter.h
diff --git a/extensions/renderer/event_emitter.h b/extensions/renderer/event_emitter.h
index 6705cca8e01438b48c169e2bf43d5742edc62b5d..f160135f1377a57bdacdfaf03af8dd1cc6d9d89a 100644
--- a/extensions/renderer/event_emitter.h
+++ b/extensions/renderer/event_emitter.h
@@ -40,7 +40,11 @@ class EventEmitter final : public gin::Wrappable<EventEmitter> {
void Fire(v8::Local<v8::Context> context,
std::vector<v8::Local<v8::Value>>* args);
- Listeners* listeners() { return &listeners_; }
+ // Removes all listeners and marks this object as invalid so that no more
+ // are added.
+ void Invalidate();
+
+ const Listeners* listeners() const { return &listeners_; }
private:
// Bound methods for the Event JS object.
@@ -50,6 +54,10 @@ class EventEmitter final : public gin::Wrappable<EventEmitter> {
bool HasListeners();
void Dispatch(gin::Arguments* arguments);
+ // Whether or not this object is still valid; false upon context release.
+ // When invalid, no listeners can be added or removed.
+ bool valid_ = true;
+
Listeners listeners_;
binding::RunJSFunction run_js_;

Powered by Google App Engine
This is Rietveld 408576698