Index: chrome/browser/extensions/events_apitest.cc |
diff --git a/chrome/browser/extensions/events_apitest.cc b/chrome/browser/extensions/events_apitest.cc |
index 3420022dc8b3ba664a153583b7ed8d65c89ae699..d89971fa04904785088a9ab768a74188d6b71b20 100644 |
--- a/chrome/browser/extensions/events_apitest.cc |
+++ b/chrome/browser/extensions/events_apitest.cc |
@@ -4,6 +4,44 @@ |
#include "chrome/browser/extensions/extension_apitest.h" |
+#include "extensions/browser/event_router.h" |
+#include "extensions/browser/extension_registry.h" |
+ |
+namespace extensions { |
+ |
IN_PROC_BROWSER_TEST_F(ExtensionApiTest, Events) { |
ASSERT_TRUE(RunExtensionTest("events")) << message_; |
} |
+ |
+// Tests that events are unregistered when an extension page shuts down. |
+IN_PROC_BROWSER_TEST_F(ExtensionApiTest, EventsAreUnregistered) { |
+ // In this test, page1.html registers for a number of events, then navigates |
+ // to page2.html, which should unregister those events. page2.html notifies |
+ // pass, by which point the event should have been unregistered. |
+ EventRouter* event_router = EventRouter::Get(profile()); |
Devlin
2015/04/13 16:07:07
nit: Prefer to initialize these closer to their us
|
+ ExtensionRegistry* registry = ExtensionRegistry::Get(profile()); |
+ |
+ std::string test_extension_name = "events_are_unregistered"; |
+ ASSERT_TRUE(RunExtensionSubtest(test_extension_name, "page1.html")) |
+ << message_; |
+ |
+ // Find the extension we just installed by looking for the path. |
+ const Extension* extension = |
+ GetExtensionByPath(registry->enabled_extensions(), |
+ test_data_dir_.AppendASCII(test_extension_name)); |
+ ASSERT_TRUE(extension); |
+ std::string id = extension->id(); |
+ |
+ // The page has closed, so no matter what all events are no longer listened |
+ // to. |
+ EXPECT_FALSE( |
+ event_router->ExtensionHasEventListener(id, "browserAction.onClicked")); |
+ EXPECT_FALSE( |
+ event_router->ExtensionHasEventListener(id, "runtime.onStartup")); |
+ EXPECT_FALSE( |
+ event_router->ExtensionHasEventListener(id, "runtime.onSuspend")); |
+ EXPECT_FALSE( |
+ event_router->ExtensionHasEventListener(id, "runtime.onInstalled")); |
+} |
+ |
+} // namespace extensions |