Index: chrome/renderer/extensions/event_unittest.cc |
diff --git a/chrome/renderer/extensions/event_unittest.cc b/chrome/renderer/extensions/event_unittest.cc |
deleted file mode 100644 |
index cd491acc50d062268b0000a6099c2569c9e2cbd8..0000000000000000000000000000000000000000 |
--- a/chrome/renderer/extensions/event_unittest.cc |
+++ /dev/null |
@@ -1,294 +0,0 @@ |
-// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "chrome/test/base/module_system_test.h" |
- |
-#include "extensions/common/extension_urls.h" |
-#include "grit/extensions_renderer_resources.h" |
- |
-namespace extensions { |
-namespace { |
- |
-class EventUnittest : public ModuleSystemTest { |
- virtual void SetUp() OVERRIDE { |
- ModuleSystemTest::SetUp(); |
- |
- env()->RegisterModule(kEventBindings, IDR_EVENT_BINDINGS_JS); |
- env()->RegisterModule("json_schema", IDR_JSON_SCHEMA_JS); |
- 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 |
- // any invariants maintained by the real event_bindings are broken. |
- env()->OverrideNativeHandler( |
- "event_natives", |
- "var assert = requireNative('assert');" |
- "var attachedListeners = exports.attachedListeners = {};" |
- "var attachedFilteredListeners = " |
- " exports.attachedFilteredListeners = {};" |
- "var nextId = 0;" |
- "var idToName = {};" |
- "exports.AttachEvent = function(eventName) {" |
- " assert.AssertFalse(!!attachedListeners[eventName]);" |
- " attachedListeners[eventName] = 1;" |
- "};" |
- "exports.DetachEvent = function(eventName) {" |
- " assert.AssertTrue(!!attachedListeners[eventName]);" |
- " delete attachedListeners[eventName];" |
- "};" |
- "exports.IsEventAttached = function(eventName) {" |
- " return !!attachedListeners[eventName];" |
- "};" |
- "exports.AttachFilteredEvent = function(name, filters) {" |
- " var id = nextId++;" |
- " idToName[id] = name;" |
- " attachedFilteredListeners[name] =" |
- " attachedFilteredListeners[name] || [];" |
- " attachedFilteredListeners[name][id] = filters;" |
- " return id;" |
- "};" |
- "exports.DetachFilteredEvent = function(id, manual) {" |
- " var i = attachedFilteredListeners[idToName[id]].indexOf(id);" |
- " attachedFilteredListeners[idToName[id]].splice(i, 1);" |
- "};" |
- "exports.HasFilteredListener = function(name) {" |
- " return attachedFilteredListeners[name].length;" |
- "};"); |
- env()->OverrideNativeHandler("sendRequest", |
- "exports.sendRequest = function() {};"); |
- env()->OverrideNativeHandler( |
- "apiDefinitions", |
- "exports.GetExtensionAPIDefinitionsForTest = function() {};"); |
- env()->OverrideNativeHandler("logging", "exports.DCHECK = function() {};"); |
- env()->OverrideNativeHandler("schema_registry", |
- "exports.GetSchema = function() {};"); |
- } |
-}; |
- |
-TEST_F(EventUnittest, TestNothing) { |
- ExpectNoAssertionsMade(); |
-} |
- |
-TEST_F(EventUnittest, AddRemoveTwoListeners) { |
- 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);" |
- "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"); |
-} |
- |
-TEST_F(EventUnittest, EventsThatSupportRulesMustHaveAName) { |
- ModuleSystem::NativesEnabledScope natives_enabled_scope( |
- env()->module_system()); |
- env()->RegisterModule( |
- "test", |
- "var Event = require('event_bindings').Event;" |
- "var eventOpts = {supportsRules: true};" |
- "var assert = requireNative('assert');" |
- "var caught = false;" |
- "try {" |
- " var myEvent = new Event(undefined, undefined, eventOpts);" |
- "} catch (e) {" |
- " caught = true;" |
- "}" |
- "assert.AssertTrue(caught);"); |
- env()->module_system()->Require("test"); |
-} |
- |
-TEST_F(EventUnittest, NamedEventDispatch) { |
- ModuleSystem::NativesEnabledScope natives_enabled_scope( |
- env()->module_system()); |
- env()->RegisterModule( |
- "test", |
- "var Event = require('event_bindings').Event;" |
- "var dispatchEvent = require('event_bindings').dispatchEvent;" |
- "var assert = requireNative('assert');" |
- "var e = new Event('myevent');" |
- "var called = false;" |
- "e.addListener(function() { called = true; });" |
- "dispatchEvent('myevent', []);" |
- "assert.AssertTrue(called);"); |
- env()->module_system()->Require("test"); |
-} |
- |
-TEST_F(EventUnittest, AddListenerWithFiltersThrowsErrorByDefault) { |
- ModuleSystem::NativesEnabledScope natives_enabled_scope( |
- env()->module_system()); |
- env()->RegisterModule("test", |
- "var Event = require('event_bindings').Event;" |
- "var assert = requireNative('assert');" |
- "var e = new Event('myevent');" |
- "var filter = [{" |
- " url: {hostSuffix: 'google.com'}," |
- "}];" |
- "var caught = false;" |
- "try {" |
- " e.addListener(function() {}, filter);" |
- "} catch (e) {" |
- " caught = true;" |
- "}" |
- "assert.AssertTrue(caught);"); |
- env()->module_system()->Require("test"); |
-} |
- |
-TEST_F(EventUnittest, FilteredEventsAttachment) { |
- ModuleSystem::NativesEnabledScope natives_enabled_scope( |
- env()->module_system()); |
- env()->RegisterModule( |
- "test", |
- "var Event = require('event_bindings').Event;" |
- "var assert = requireNative('assert');" |
- "var bindings = requireNative('event_natives');" |
- "var eventOpts = {supportsListeners: true, supportsFilters: true};" |
- "var e = new Event('myevent', undefined, eventOpts);" |
- "var cb = function() {};" |
- "var filters = {url: [{hostSuffix: 'google.com'}]};" |
- "e.addListener(cb, filters);" |
- "assert.AssertTrue(bindings.HasFilteredListener('myevent'));" |
- "e.removeListener(cb);" |
- "assert.AssertFalse(bindings.HasFilteredListener('myevent'));"); |
- env()->module_system()->Require("test"); |
-} |
- |
-TEST_F(EventUnittest, DetachFilteredEvent) { |
- ModuleSystem::NativesEnabledScope natives_enabled_scope( |
- env()->module_system()); |
- env()->RegisterModule( |
- "test", |
- "var Event = require('event_bindings').Event;" |
- "var assert = requireNative('assert');" |
- "var bindings = requireNative('event_natives');" |
- "var eventOpts = {supportsListeners: true, supportsFilters: true};" |
- "var e = new Event('myevent', undefined, eventOpts);" |
- "var cb1 = function() {};" |
- "var cb2 = function() {};" |
- "var filters = {url: [{hostSuffix: 'google.com'}]};" |
- "e.addListener(cb1, filters);" |
- "e.addListener(cb2, filters);" |
- "privates(e).impl.detach_();" |
- "assert.AssertFalse(bindings.HasFilteredListener('myevent'));"); |
- env()->module_system()->Require("test"); |
-} |
- |
-TEST_F(EventUnittest, AttachAndRemoveSameFilteredEventListener) { |
- ModuleSystem::NativesEnabledScope natives_enabled_scope( |
- env()->module_system()); |
- env()->RegisterModule( |
- "test", |
- "var Event = require('event_bindings').Event;" |
- "var assert = requireNative('assert');" |
- "var bindings = requireNative('event_natives');" |
- "var eventOpts = {supportsListeners: true, supportsFilters: true};" |
- "var e = new Event('myevent', undefined, eventOpts);" |
- "var cb = function() {};" |
- "var filters = {url: [{hostSuffix: 'google.com'}]};" |
- "e.addListener(cb, filters);" |
- "e.addListener(cb, filters);" |
- "assert.AssertTrue(bindings.HasFilteredListener('myevent'));" |
- "e.removeListener(cb);" |
- "assert.AssertTrue(bindings.HasFilteredListener('myevent'));" |
- "e.removeListener(cb);" |
- "assert.AssertFalse(bindings.HasFilteredListener('myevent'));"); |
- env()->module_system()->Require("test"); |
-} |
- |
-TEST_F(EventUnittest, AddingFilterWithUrlFieldNotAListThrowsException) { |
- ModuleSystem::NativesEnabledScope natives_enabled_scope( |
- env()->module_system()); |
- env()->RegisterModule( |
- "test", |
- "var Event = require('event_bindings').Event;" |
- "var assert = requireNative('assert');" |
- "var eventOpts = {supportsListeners: true, supportsFilters: true};" |
- "var e = new Event('myevent', undefined, eventOpts);" |
- "var cb = function() {};" |
- "var filters = {url: {hostSuffix: 'google.com'}};" |
- "var caught = false;" |
- "try {" |
- " e.addListener(cb, filters);" |
- "} catch (e) {" |
- " caught = true;" |
- "}" |
- "assert.AssertTrue(caught);"); |
- env()->module_system()->Require("test"); |
-} |
- |
-TEST_F(EventUnittest, MaxListeners) { |
- ModuleSystem::NativesEnabledScope natives_enabled_scope( |
- env()->module_system()); |
- env()->RegisterModule( |
- "test", |
- "var Event = require('event_bindings').Event;" |
- "var assert = requireNative('assert');" |
- "var eventOpts = {supportsListeners: true, maxListeners: 1};" |
- "var e = new Event('myevent', undefined, eventOpts);" |
- "var cb = function() {};" |
- "var caught = false;" |
- "try {" |
- " e.addListener(cb);" |
- "} catch (e) {" |
- " caught = true;" |
- "}" |
- "assert.AssertTrue(!caught);" |
- "try {" |
- " e.addListener(cb);" |
- "} catch (e) {" |
- " caught = true;" |
- "}" |
- "assert.AssertTrue(caught);"); |
- env()->module_system()->Require("test"); |
-} |
- |
-} // namespace |
-} // namespace extensions |