| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/test/base/module_system_test.h" | 5 #include "chrome/test/base/module_system_test.h" |
| 6 | 6 |
| 7 #include "extensions/common/extension_urls.h" | 7 #include "extensions/common/extension_urls.h" |
| 8 #include "grit/extensions_renderer_resources.h" | 8 #include "grit/extensions_renderer_resources.h" |
| 9 | 9 |
| 10 namespace extensions { | 10 namespace extensions { |
| 11 namespace { | 11 namespace { |
| 12 | 12 |
| 13 class EventUnittest : public ModuleSystemTest { | 13 class EventUnittest : public ModuleSystemTest { |
| 14 virtual void SetUp() OVERRIDE { | 14 virtual void SetUp() OVERRIDE { |
| 15 ModuleSystemTest::SetUp(); | 15 ModuleSystemTest::SetUp(); |
| 16 | 16 |
| 17 RegisterModule(kEventBindings, IDR_EVENT_BINDINGS_JS); | 17 env()->RegisterModule(kEventBindings, IDR_EVENT_BINDINGS_JS); |
| 18 RegisterModule("json_schema", IDR_JSON_SCHEMA_JS); | 18 env()->RegisterModule("json_schema", IDR_JSON_SCHEMA_JS); |
| 19 RegisterModule(kSchemaUtils, IDR_SCHEMA_UTILS_JS); | 19 env()->RegisterModule(kSchemaUtils, IDR_SCHEMA_UTILS_JS); |
| 20 RegisterModule("uncaught_exception_handler", | 20 env()->RegisterModule("uncaught_exception_handler", |
| 21 IDR_UNCAUGHT_EXCEPTION_HANDLER_JS); | 21 IDR_UNCAUGHT_EXCEPTION_HANDLER_JS); |
| 22 RegisterModule("unload_event", IDR_UNLOAD_EVENT_JS); | 22 env()->RegisterModule("unload_event", IDR_UNLOAD_EVENT_JS); |
| 23 RegisterModule("utils", IDR_UTILS_JS); | 23 env()->RegisterModule("utils", IDR_UTILS_JS); |
| 24 | 24 |
| 25 // Mock out the native handler for event_bindings. These mocks will fail if | 25 // Mock out the native handler for event_bindings. These mocks will fail if |
| 26 // any invariants maintained by the real event_bindings are broken. | 26 // any invariants maintained by the real event_bindings are broken. |
| 27 OverrideNativeHandler("event_natives", | 27 env()->OverrideNativeHandler( |
| 28 "event_natives", |
| 28 "var assert = requireNative('assert');" | 29 "var assert = requireNative('assert');" |
| 29 "var attachedListeners = exports.attachedListeners = {};" | 30 "var attachedListeners = exports.attachedListeners = {};" |
| 30 "var attachedFilteredListeners = " | 31 "var attachedFilteredListeners = " |
| 31 " exports.attachedFilteredListeners = {};" | 32 " exports.attachedFilteredListeners = {};" |
| 32 "var nextId = 0;" | 33 "var nextId = 0;" |
| 33 "var idToName = {};" | 34 "var idToName = {};" |
| 34 | |
| 35 "exports.AttachEvent = function(eventName) {" | 35 "exports.AttachEvent = function(eventName) {" |
| 36 " assert.AssertFalse(!!attachedListeners[eventName]);" | 36 " assert.AssertFalse(!!attachedListeners[eventName]);" |
| 37 " attachedListeners[eventName] = 1;" | 37 " attachedListeners[eventName] = 1;" |
| 38 "};" | 38 "};" |
| 39 | |
| 40 "exports.DetachEvent = function(eventName) {" | 39 "exports.DetachEvent = function(eventName) {" |
| 41 " assert.AssertTrue(!!attachedListeners[eventName]);" | 40 " assert.AssertTrue(!!attachedListeners[eventName]);" |
| 42 " delete attachedListeners[eventName];" | 41 " delete attachedListeners[eventName];" |
| 43 "};" | 42 "};" |
| 44 | |
| 45 "exports.IsEventAttached = function(eventName) {" | 43 "exports.IsEventAttached = function(eventName) {" |
| 46 " return !!attachedListeners[eventName];" | 44 " return !!attachedListeners[eventName];" |
| 47 "};" | 45 "};" |
| 48 | |
| 49 "exports.AttachFilteredEvent = function(name, filters) {" | 46 "exports.AttachFilteredEvent = function(name, filters) {" |
| 50 " var id = nextId++;" | 47 " var id = nextId++;" |
| 51 " idToName[id] = name;" | 48 " idToName[id] = name;" |
| 52 " attachedFilteredListeners[name] =" | 49 " attachedFilteredListeners[name] =" |
| 53 " attachedFilteredListeners[name] || [];" | 50 " attachedFilteredListeners[name] || [];" |
| 54 " attachedFilteredListeners[name][id] = filters;" | 51 " attachedFilteredListeners[name][id] = filters;" |
| 55 " return id;" | 52 " return id;" |
| 56 "};" | 53 "};" |
| 57 | |
| 58 "exports.DetachFilteredEvent = function(id, manual) {" | 54 "exports.DetachFilteredEvent = function(id, manual) {" |
| 59 " var i = attachedFilteredListeners[idToName[id]].indexOf(id);" | 55 " var i = attachedFilteredListeners[idToName[id]].indexOf(id);" |
| 60 " attachedFilteredListeners[idToName[id]].splice(i, 1);" | 56 " attachedFilteredListeners[idToName[id]].splice(i, 1);" |
| 61 "};" | 57 "};" |
| 62 | |
| 63 "exports.HasFilteredListener = function(name) {" | 58 "exports.HasFilteredListener = function(name) {" |
| 64 " return attachedFilteredListeners[name].length;" | 59 " return attachedFilteredListeners[name].length;" |
| 65 "};"); | 60 "};"); |
| 66 OverrideNativeHandler("sendRequest", | 61 env()->OverrideNativeHandler("sendRequest", |
| 67 "exports.sendRequest = function() {};"); | 62 "exports.sendRequest = function() {};"); |
| 68 OverrideNativeHandler("apiDefinitions", | 63 env()->OverrideNativeHandler( |
| 64 "apiDefinitions", |
| 69 "exports.GetExtensionAPIDefinitionsForTest = function() {};"); | 65 "exports.GetExtensionAPIDefinitionsForTest = function() {};"); |
| 70 OverrideNativeHandler("logging", | 66 env()->OverrideNativeHandler("logging", "exports.DCHECK = function() {};"); |
| 71 "exports.DCHECK = function() {};"); | 67 env()->OverrideNativeHandler("schema_registry", |
| 72 OverrideNativeHandler("schema_registry", | 68 "exports.GetSchema = function() {};"); |
| 73 "exports.GetSchema = function() {};"); | |
| 74 } | 69 } |
| 75 }; | 70 }; |
| 76 | 71 |
| 77 TEST_F(EventUnittest, TestNothing) { | 72 TEST_F(EventUnittest, TestNothing) { |
| 78 ExpectNoAssertionsMade(); | 73 ExpectNoAssertionsMade(); |
| 79 } | 74 } |
| 80 | 75 |
| 81 TEST_F(EventUnittest, AddRemoveTwoListeners) { | 76 TEST_F(EventUnittest, AddRemoveTwoListeners) { |
| 82 ModuleSystem::NativesEnabledScope natives_enabled_scope( | 77 ModuleSystem::NativesEnabledScope natives_enabled_scope( |
| 83 context_->module_system()); | 78 env()->module_system()); |
| 84 RegisterModule("test", | 79 env()->RegisterModule( |
| 80 "test", |
| 85 "var assert = requireNative('assert');" | 81 "var assert = requireNative('assert');" |
| 86 "var Event = require('event_bindings').Event;" | 82 "var Event = require('event_bindings').Event;" |
| 87 "var eventNatives = requireNative('event_natives');" | 83 "var eventNatives = requireNative('event_natives');" |
| 88 "var myEvent = new Event('named-event');" | 84 "var myEvent = new Event('named-event');" |
| 89 "var cb1 = function() {};" | 85 "var cb1 = function() {};" |
| 90 "var cb2 = function() {};" | 86 "var cb2 = function() {};" |
| 91 "myEvent.addListener(cb1);" | 87 "myEvent.addListener(cb1);" |
| 92 "myEvent.addListener(cb2);" | 88 "myEvent.addListener(cb2);" |
| 93 "myEvent.removeListener(cb1);" | 89 "myEvent.removeListener(cb1);" |
| 94 "assert.AssertTrue(!!eventNatives.attachedListeners['named-event']);" | 90 "assert.AssertTrue(!!eventNatives.attachedListeners['named-event']);" |
| 95 "myEvent.removeListener(cb2);" | 91 "myEvent.removeListener(cb2);" |
| 96 "assert.AssertFalse(!!eventNatives.attachedListeners['named-event']);"); | 92 "assert.AssertFalse(!!eventNatives.attachedListeners['named-event']);"); |
| 97 context_->module_system()->Require("test"); | 93 env()->module_system()->Require("test"); |
| 98 } | 94 } |
| 99 | 95 |
| 100 TEST_F(EventUnittest, OnUnloadDetachesAllListeners) { | 96 TEST_F(EventUnittest, OnUnloadDetachesAllListeners) { |
| 101 ModuleSystem::NativesEnabledScope natives_enabled_scope( | 97 ModuleSystem::NativesEnabledScope natives_enabled_scope( |
| 102 context_->module_system()); | 98 env()->module_system()); |
| 103 RegisterModule("test", | 99 env()->RegisterModule( |
| 100 "test", |
| 104 "var assert = requireNative('assert');" | 101 "var assert = requireNative('assert');" |
| 105 "var Event = require('event_bindings').Event;" | 102 "var Event = require('event_bindings').Event;" |
| 106 "var eventNatives = requireNative('event_natives');" | 103 "var eventNatives = requireNative('event_natives');" |
| 107 "var myEvent = new Event('named-event');" | 104 "var myEvent = new Event('named-event');" |
| 108 "var cb1 = function() {};" | 105 "var cb1 = function() {};" |
| 109 "var cb2 = function() {};" | 106 "var cb2 = function() {};" |
| 110 "myEvent.addListener(cb1);" | 107 "myEvent.addListener(cb1);" |
| 111 "myEvent.addListener(cb2);" | 108 "myEvent.addListener(cb2);" |
| 112 "require('unload_event').dispatch();" | 109 "require('unload_event').dispatch();" |
| 113 "assert.AssertFalse(!!eventNatives.attachedListeners['named-event']);"); | 110 "assert.AssertFalse(!!eventNatives.attachedListeners['named-event']);"); |
| 114 context_->module_system()->Require("test"); | 111 env()->module_system()->Require("test"); |
| 115 } | 112 } |
| 116 | 113 |
| 117 TEST_F(EventUnittest, OnUnloadDetachesAllListenersEvenDupes) { | 114 TEST_F(EventUnittest, OnUnloadDetachesAllListenersEvenDupes) { |
| 118 ModuleSystem::NativesEnabledScope natives_enabled_scope( | 115 ModuleSystem::NativesEnabledScope natives_enabled_scope( |
| 119 context_->module_system()); | 116 env()->module_system()); |
| 120 RegisterModule("test", | 117 env()->RegisterModule( |
| 118 "test", |
| 121 "var assert = requireNative('assert');" | 119 "var assert = requireNative('assert');" |
| 122 "var Event = require('event_bindings').Event;" | 120 "var Event = require('event_bindings').Event;" |
| 123 "var eventNatives = requireNative('event_natives');" | 121 "var eventNatives = requireNative('event_natives');" |
| 124 "var myEvent = new Event('named-event');" | 122 "var myEvent = new Event('named-event');" |
| 125 "var cb1 = function() {};" | 123 "var cb1 = function() {};" |
| 126 "myEvent.addListener(cb1);" | 124 "myEvent.addListener(cb1);" |
| 127 "myEvent.addListener(cb1);" | 125 "myEvent.addListener(cb1);" |
| 128 "require('unload_event').dispatch();" | 126 "require('unload_event').dispatch();" |
| 129 "assert.AssertFalse(!!eventNatives.attachedListeners['named-event']);"); | 127 "assert.AssertFalse(!!eventNatives.attachedListeners['named-event']);"); |
| 130 context_->module_system()->Require("test"); | 128 env()->module_system()->Require("test"); |
| 131 } | 129 } |
| 132 | 130 |
| 133 TEST_F(EventUnittest, EventsThatSupportRulesMustHaveAName) { | 131 TEST_F(EventUnittest, EventsThatSupportRulesMustHaveAName) { |
| 134 ModuleSystem::NativesEnabledScope natives_enabled_scope( | 132 ModuleSystem::NativesEnabledScope natives_enabled_scope( |
| 135 context_->module_system()); | 133 env()->module_system()); |
| 136 RegisterModule("test", | 134 env()->RegisterModule( |
| 135 "test", |
| 137 "var Event = require('event_bindings').Event;" | 136 "var Event = require('event_bindings').Event;" |
| 138 "var eventOpts = {supportsRules: true};" | 137 "var eventOpts = {supportsRules: true};" |
| 139 "var assert = requireNative('assert');" | 138 "var assert = requireNative('assert');" |
| 140 "var caught = false;" | 139 "var caught = false;" |
| 141 "try {" | 140 "try {" |
| 142 " var myEvent = new Event(undefined, undefined, eventOpts);" | 141 " var myEvent = new Event(undefined, undefined, eventOpts);" |
| 143 "} catch (e) {" | 142 "} catch (e) {" |
| 144 " caught = true;" | 143 " caught = true;" |
| 145 "}" | 144 "}" |
| 146 "assert.AssertTrue(caught);"); | 145 "assert.AssertTrue(caught);"); |
| 147 context_->module_system()->Require("test"); | 146 env()->module_system()->Require("test"); |
| 148 } | 147 } |
| 149 | 148 |
| 150 TEST_F(EventUnittest, NamedEventDispatch) { | 149 TEST_F(EventUnittest, NamedEventDispatch) { |
| 151 ModuleSystem::NativesEnabledScope natives_enabled_scope( | 150 ModuleSystem::NativesEnabledScope natives_enabled_scope( |
| 152 context_->module_system()); | 151 env()->module_system()); |
| 153 RegisterModule("test", | 152 env()->RegisterModule( |
| 153 "test", |
| 154 "var Event = require('event_bindings').Event;" | 154 "var Event = require('event_bindings').Event;" |
| 155 "var dispatchEvent = require('event_bindings').dispatchEvent;" | 155 "var dispatchEvent = require('event_bindings').dispatchEvent;" |
| 156 "var assert = requireNative('assert');" | 156 "var assert = requireNative('assert');" |
| 157 "var e = new Event('myevent');" | 157 "var e = new Event('myevent');" |
| 158 "var called = false;" | 158 "var called = false;" |
| 159 "e.addListener(function() { called = true; });" | 159 "e.addListener(function() { called = true; });" |
| 160 "dispatchEvent('myevent', []);" | 160 "dispatchEvent('myevent', []);" |
| 161 "assert.AssertTrue(called);"); | 161 "assert.AssertTrue(called);"); |
| 162 context_->module_system()->Require("test"); | 162 env()->module_system()->Require("test"); |
| 163 } | 163 } |
| 164 | 164 |
| 165 TEST_F(EventUnittest, AddListenerWithFiltersThrowsErrorByDefault) { | 165 TEST_F(EventUnittest, AddListenerWithFiltersThrowsErrorByDefault) { |
| 166 ModuleSystem::NativesEnabledScope natives_enabled_scope( | 166 ModuleSystem::NativesEnabledScope natives_enabled_scope( |
| 167 context_->module_system()); | 167 env()->module_system()); |
| 168 RegisterModule("test", | 168 env()->RegisterModule("test", |
| 169 "var Event = require('event_bindings').Event;" | 169 "var Event = require('event_bindings').Event;" |
| 170 "var assert = requireNative('assert');" | 170 "var assert = requireNative('assert');" |
| 171 "var e = new Event('myevent');" | 171 "var e = new Event('myevent');" |
| 172 "var filter = [{" | 172 "var filter = [{" |
| 173 " url: {hostSuffix: 'google.com'}," | 173 " url: {hostSuffix: 'google.com'}," |
| 174 "}];" | 174 "}];" |
| 175 "var caught = false;" | 175 "var caught = false;" |
| 176 "try {" | 176 "try {" |
| 177 " e.addListener(function() {}, filter);" | 177 " e.addListener(function() {}, filter);" |
| 178 "} catch (e) {" | 178 "} catch (e) {" |
| 179 " caught = true;" | 179 " caught = true;" |
| 180 "}" | 180 "}" |
| 181 "assert.AssertTrue(caught);"); | 181 "assert.AssertTrue(caught);"); |
| 182 context_->module_system()->Require("test"); | 182 env()->module_system()->Require("test"); |
| 183 } | 183 } |
| 184 | 184 |
| 185 TEST_F(EventUnittest, FilteredEventsAttachment) { | 185 TEST_F(EventUnittest, FilteredEventsAttachment) { |
| 186 ModuleSystem::NativesEnabledScope natives_enabled_scope( | 186 ModuleSystem::NativesEnabledScope natives_enabled_scope( |
| 187 context_->module_system()); | 187 env()->module_system()); |
| 188 RegisterModule("test", | 188 env()->RegisterModule( |
| 189 "test", |
| 189 "var Event = require('event_bindings').Event;" | 190 "var Event = require('event_bindings').Event;" |
| 190 "var assert = requireNative('assert');" | 191 "var assert = requireNative('assert');" |
| 191 "var bindings = requireNative('event_natives');" | 192 "var bindings = requireNative('event_natives');" |
| 192 "var eventOpts = {supportsListeners: true, supportsFilters: true};" | 193 "var eventOpts = {supportsListeners: true, supportsFilters: true};" |
| 193 "var e = new Event('myevent', undefined, eventOpts);" | 194 "var e = new Event('myevent', undefined, eventOpts);" |
| 194 "var cb = function() {};" | 195 "var cb = function() {};" |
| 195 "var filters = {url: [{hostSuffix: 'google.com'}]};" | 196 "var filters = {url: [{hostSuffix: 'google.com'}]};" |
| 196 "e.addListener(cb, filters);" | 197 "e.addListener(cb, filters);" |
| 197 "assert.AssertTrue(bindings.HasFilteredListener('myevent'));" | 198 "assert.AssertTrue(bindings.HasFilteredListener('myevent'));" |
| 198 "e.removeListener(cb);" | 199 "e.removeListener(cb);" |
| 199 "assert.AssertFalse(bindings.HasFilteredListener('myevent'));"); | 200 "assert.AssertFalse(bindings.HasFilteredListener('myevent'));"); |
| 200 context_->module_system()->Require("test"); | 201 env()->module_system()->Require("test"); |
| 201 } | 202 } |
| 202 | 203 |
| 203 TEST_F(EventUnittest, DetachFilteredEvent) { | 204 TEST_F(EventUnittest, DetachFilteredEvent) { |
| 204 ModuleSystem::NativesEnabledScope natives_enabled_scope( | 205 ModuleSystem::NativesEnabledScope natives_enabled_scope( |
| 205 context_->module_system()); | 206 env()->module_system()); |
| 206 RegisterModule("test", | 207 env()->RegisterModule( |
| 208 "test", |
| 207 "var Event = require('event_bindings').Event;" | 209 "var Event = require('event_bindings').Event;" |
| 208 "var assert = requireNative('assert');" | 210 "var assert = requireNative('assert');" |
| 209 "var bindings = requireNative('event_natives');" | 211 "var bindings = requireNative('event_natives');" |
| 210 "var eventOpts = {supportsListeners: true, supportsFilters: true};" | 212 "var eventOpts = {supportsListeners: true, supportsFilters: true};" |
| 211 "var e = new Event('myevent', undefined, eventOpts);" | 213 "var e = new Event('myevent', undefined, eventOpts);" |
| 212 "var cb1 = function() {};" | 214 "var cb1 = function() {};" |
| 213 "var cb2 = function() {};" | 215 "var cb2 = function() {};" |
| 214 "var filters = {url: [{hostSuffix: 'google.com'}]};" | 216 "var filters = {url: [{hostSuffix: 'google.com'}]};" |
| 215 "e.addListener(cb1, filters);" | 217 "e.addListener(cb1, filters);" |
| 216 "e.addListener(cb2, filters);" | 218 "e.addListener(cb2, filters);" |
| 217 "privates(e).impl.detach_();" | 219 "privates(e).impl.detach_();" |
| 218 "assert.AssertFalse(bindings.HasFilteredListener('myevent'));"); | 220 "assert.AssertFalse(bindings.HasFilteredListener('myevent'));"); |
| 219 context_->module_system()->Require("test"); | 221 env()->module_system()->Require("test"); |
| 220 } | 222 } |
| 221 | 223 |
| 222 TEST_F(EventUnittest, AttachAndRemoveSameFilteredEventListener) { | 224 TEST_F(EventUnittest, AttachAndRemoveSameFilteredEventListener) { |
| 223 ModuleSystem::NativesEnabledScope natives_enabled_scope( | 225 ModuleSystem::NativesEnabledScope natives_enabled_scope( |
| 224 context_->module_system()); | 226 env()->module_system()); |
| 225 RegisterModule("test", | 227 env()->RegisterModule( |
| 228 "test", |
| 226 "var Event = require('event_bindings').Event;" | 229 "var Event = require('event_bindings').Event;" |
| 227 "var assert = requireNative('assert');" | 230 "var assert = requireNative('assert');" |
| 228 "var bindings = requireNative('event_natives');" | 231 "var bindings = requireNative('event_natives');" |
| 229 "var eventOpts = {supportsListeners: true, supportsFilters: true};" | 232 "var eventOpts = {supportsListeners: true, supportsFilters: true};" |
| 230 "var e = new Event('myevent', undefined, eventOpts);" | 233 "var e = new Event('myevent', undefined, eventOpts);" |
| 231 "var cb = function() {};" | 234 "var cb = function() {};" |
| 232 "var filters = {url: [{hostSuffix: 'google.com'}]};" | 235 "var filters = {url: [{hostSuffix: 'google.com'}]};" |
| 233 "e.addListener(cb, filters);" | 236 "e.addListener(cb, filters);" |
| 234 "e.addListener(cb, filters);" | 237 "e.addListener(cb, filters);" |
| 235 "assert.AssertTrue(bindings.HasFilteredListener('myevent'));" | 238 "assert.AssertTrue(bindings.HasFilteredListener('myevent'));" |
| 236 "e.removeListener(cb);" | 239 "e.removeListener(cb);" |
| 237 "assert.AssertTrue(bindings.HasFilteredListener('myevent'));" | 240 "assert.AssertTrue(bindings.HasFilteredListener('myevent'));" |
| 238 "e.removeListener(cb);" | 241 "e.removeListener(cb);" |
| 239 "assert.AssertFalse(bindings.HasFilteredListener('myevent'));"); | 242 "assert.AssertFalse(bindings.HasFilteredListener('myevent'));"); |
| 240 context_->module_system()->Require("test"); | 243 env()->module_system()->Require("test"); |
| 241 } | 244 } |
| 242 | 245 |
| 243 TEST_F(EventUnittest, AddingFilterWithUrlFieldNotAListThrowsException) { | 246 TEST_F(EventUnittest, AddingFilterWithUrlFieldNotAListThrowsException) { |
| 244 ModuleSystem::NativesEnabledScope natives_enabled_scope( | 247 ModuleSystem::NativesEnabledScope natives_enabled_scope( |
| 245 context_->module_system()); | 248 env()->module_system()); |
| 246 RegisterModule("test", | 249 env()->RegisterModule( |
| 250 "test", |
| 247 "var Event = require('event_bindings').Event;" | 251 "var Event = require('event_bindings').Event;" |
| 248 "var assert = requireNative('assert');" | 252 "var assert = requireNative('assert');" |
| 249 "var eventOpts = {supportsListeners: true, supportsFilters: true};" | 253 "var eventOpts = {supportsListeners: true, supportsFilters: true};" |
| 250 "var e = new Event('myevent', undefined, eventOpts);" | 254 "var e = new Event('myevent', undefined, eventOpts);" |
| 251 "var cb = function() {};" | 255 "var cb = function() {};" |
| 252 "var filters = {url: {hostSuffix: 'google.com'}};" | 256 "var filters = {url: {hostSuffix: 'google.com'}};" |
| 253 "var caught = false;" | 257 "var caught = false;" |
| 254 "try {" | 258 "try {" |
| 255 " e.addListener(cb, filters);" | 259 " e.addListener(cb, filters);" |
| 256 "} catch (e) {" | 260 "} catch (e) {" |
| 257 " caught = true;" | 261 " caught = true;" |
| 258 "}" | 262 "}" |
| 259 "assert.AssertTrue(caught);"); | 263 "assert.AssertTrue(caught);"); |
| 260 context_->module_system()->Require("test"); | 264 env()->module_system()->Require("test"); |
| 261 } | 265 } |
| 262 | 266 |
| 263 TEST_F(EventUnittest, MaxListeners) { | 267 TEST_F(EventUnittest, MaxListeners) { |
| 264 ModuleSystem::NativesEnabledScope natives_enabled_scope( | 268 ModuleSystem::NativesEnabledScope natives_enabled_scope( |
| 265 context_->module_system()); | 269 env()->module_system()); |
| 266 RegisterModule("test", | 270 env()->RegisterModule( |
| 271 "test", |
| 267 "var Event = require('event_bindings').Event;" | 272 "var Event = require('event_bindings').Event;" |
| 268 "var assert = requireNative('assert');" | 273 "var assert = requireNative('assert');" |
| 269 "var eventOpts = {supportsListeners: true, maxListeners: 1};" | 274 "var eventOpts = {supportsListeners: true, maxListeners: 1};" |
| 270 "var e = new Event('myevent', undefined, eventOpts);" | 275 "var e = new Event('myevent', undefined, eventOpts);" |
| 271 "var cb = function() {};" | 276 "var cb = function() {};" |
| 272 "var caught = false;" | 277 "var caught = false;" |
| 273 "try {" | 278 "try {" |
| 274 " e.addListener(cb);" | 279 " e.addListener(cb);" |
| 275 "} catch (e) {" | 280 "} catch (e) {" |
| 276 " caught = true;" | 281 " caught = true;" |
| 277 "}" | 282 "}" |
| 278 "assert.AssertTrue(!caught);" | 283 "assert.AssertTrue(!caught);" |
| 279 "try {" | 284 "try {" |
| 280 " e.addListener(cb);" | 285 " e.addListener(cb);" |
| 281 "} catch (e) {" | 286 "} catch (e) {" |
| 282 " caught = true;" | 287 " caught = true;" |
| 283 "}" | 288 "}" |
| 284 "assert.AssertTrue(caught);"); | 289 "assert.AssertTrue(caught);"); |
| 285 context_->module_system()->Require("test"); | 290 env()->module_system()->Require("test"); |
| 286 } | 291 } |
| 287 | 292 |
| 288 } // namespace | 293 } // namespace |
| 289 } // namespace extensions | 294 } // namespace extensions |
| OLD | NEW |