Index: extensions/renderer/event_unittest.cc |
diff --git a/extensions/renderer/event_unittest.cc b/extensions/renderer/event_unittest.cc |
index 9d3b68f0014980dffae42b48e934db200af85446..4144a01b0fa20aca037988e9f2c61ba49ffed656 100644 |
--- a/extensions/renderer/event_unittest.cc |
+++ b/extensions/renderer/event_unittest.cc |
@@ -18,6 +18,7 @@ |
env()->RegisterModule(kSchemaUtils, IDR_SCHEMA_UTILS_JS); |
env()->RegisterModule("uncaught_exception_handler", |
IDR_UNCAUGHT_EXCEPTION_HANDLER_JS); |
+ env()->RegisterModule("unload_event", IDR_UNLOAD_EVENT_JS); |
env()->RegisterModule("utils", IDR_UTILS_JS); |
// Mock out the native handler for event_bindings. These mocks will fail if |
@@ -87,6 +88,41 @@ |
"myEvent.removeListener(cb1);" |
"assert.AssertTrue(!!eventNatives.attachedListeners['named-event']);" |
"myEvent.removeListener(cb2);" |
+ "assert.AssertFalse(!!eventNatives.attachedListeners['named-event']);"); |
+ env()->module_system()->Require("test"); |
+} |
+ |
+TEST_F(EventUnittest, OnUnloadDetachesAllListeners) { |
+ ModuleSystem::NativesEnabledScope natives_enabled_scope( |
+ env()->module_system()); |
+ env()->RegisterModule( |
+ "test", |
+ "var assert = requireNative('assert');" |
+ "var Event = require('event_bindings').Event;" |
+ "var eventNatives = requireNative('event_natives');" |
+ "var myEvent = new Event('named-event');" |
+ "var cb1 = function() {};" |
+ "var cb2 = function() {};" |
+ "myEvent.addListener(cb1);" |
+ "myEvent.addListener(cb2);" |
+ "require('unload_event').dispatch();" |
+ "assert.AssertFalse(!!eventNatives.attachedListeners['named-event']);"); |
+ env()->module_system()->Require("test"); |
+} |
+ |
+TEST_F(EventUnittest, OnUnloadDetachesAllListenersEvenDupes) { |
+ ModuleSystem::NativesEnabledScope natives_enabled_scope( |
+ env()->module_system()); |
+ env()->RegisterModule( |
+ "test", |
+ "var assert = requireNative('assert');" |
+ "var Event = require('event_bindings').Event;" |
+ "var eventNatives = requireNative('event_natives');" |
+ "var myEvent = new Event('named-event');" |
+ "var cb1 = function() {};" |
+ "myEvent.addListener(cb1);" |
+ "myEvent.addListener(cb1);" |
+ "require('unload_event').dispatch();" |
"assert.AssertFalse(!!eventNatives.attachedListeners['named-event']);"); |
env()->module_system()->Require("test"); |
} |