| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "extensions/common/extension_urls.h" | 5 #include "extensions/common/extension_urls.h" |
| 6 #include "extensions/renderer/module_system_test.h" | 6 #include "extensions/renderer/module_system_test.h" |
| 7 #include "grit/extensions_renderer_resources.h" | 7 #include "grit/extensions_renderer_resources.h" |
| 8 | 8 |
| 9 namespace extensions { | 9 namespace extensions { |
| 10 namespace { | 10 namespace { |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 72 } | 72 } |
| 73 | 73 |
| 74 TEST_F(EventUnittest, AddRemoveTwoListeners) { | 74 TEST_F(EventUnittest, AddRemoveTwoListeners) { |
| 75 ModuleSystem::NativesEnabledScope natives_enabled_scope( | 75 ModuleSystem::NativesEnabledScope natives_enabled_scope( |
| 76 env()->module_system()); | 76 env()->module_system()); |
| 77 env()->RegisterModule( | 77 env()->RegisterModule( |
| 78 "test", | 78 "test", |
| 79 "var assert = requireNative('assert');" | 79 "var assert = requireNative('assert');" |
| 80 "var Event = require('event_bindings').Event;" | 80 "var Event = require('event_bindings').Event;" |
| 81 "var eventNatives = requireNative('event_natives');" | 81 "var eventNatives = requireNative('event_natives');" |
| 82 "var myEvent = new Event('named-event');" | 82 "var myEvent = new Event(events::UNKNOWN, 'named-event');" |
| 83 "var cb1 = function() {};" | 83 "var cb1 = function() {};" |
| 84 "var cb2 = function() {};" | 84 "var cb2 = function() {};" |
| 85 "myEvent.addListener(cb1);" | 85 "myEvent.addListener(cb1);" |
| 86 "myEvent.addListener(cb2);" | 86 "myEvent.addListener(cb2);" |
| 87 "myEvent.removeListener(cb1);" | 87 "myEvent.removeListener(cb1);" |
| 88 "assert.AssertTrue(!!eventNatives.attachedListeners['named-event']);" | 88 "assert.AssertTrue(!!eventNatives.attachedListeners['named-event']);" |
| 89 "myEvent.removeListener(cb2);" | 89 "myEvent.removeListener(cb2);" |
| 90 "assert.AssertFalse(!!eventNatives.attachedListeners['named-event']);"); | 90 "assert.AssertFalse(!!eventNatives.attachedListeners['named-event']);"); |
| 91 env()->module_system()->Require("test"); | 91 env()->module_system()->Require("test"); |
| 92 } | 92 } |
| 93 | 93 |
| 94 TEST_F(EventUnittest, EventsThatSupportRulesMustHaveAName) { | 94 TEST_F(EventUnittest, EventsThatSupportRulesMustHaveAName) { |
| 95 ModuleSystem::NativesEnabledScope natives_enabled_scope( | 95 ModuleSystem::NativesEnabledScope natives_enabled_scope( |
| 96 env()->module_system()); | 96 env()->module_system()); |
| 97 env()->RegisterModule( | 97 env()->RegisterModule("test", |
| 98 "test", | 98 "var Event = require('event_bindings').Event;" |
| 99 "var Event = require('event_bindings').Event;" | 99 "var eventOpts = {supportsRules: true};" |
| 100 "var eventOpts = {supportsRules: true};" | 100 "var assert = requireNative('assert');" |
| 101 "var assert = requireNative('assert');" | 101 "var caught = false;" |
| 102 "var caught = false;" | 102 "try {" |
| 103 "try {" | 103 " var myEvent = new Event(events::UNKNOWN, undefined, " |
| 104 " var myEvent = new Event(undefined, undefined, eventOpts);" | 104 "undefined, eventOpts);" |
| 105 "} catch (e) {" | 105 "} catch (e) {" |
| 106 " caught = true;" | 106 " caught = true;" |
| 107 "}" | 107 "}" |
| 108 "assert.AssertTrue(caught);"); | 108 "assert.AssertTrue(caught);"); |
| 109 env()->module_system()->Require("test"); | 109 env()->module_system()->Require("test"); |
| 110 } | 110 } |
| 111 | 111 |
| 112 TEST_F(EventUnittest, NamedEventDispatch) { | 112 TEST_F(EventUnittest, NamedEventDispatch) { |
| 113 ModuleSystem::NativesEnabledScope natives_enabled_scope( | 113 ModuleSystem::NativesEnabledScope natives_enabled_scope( |
| 114 env()->module_system()); | 114 env()->module_system()); |
| 115 env()->RegisterModule( | 115 env()->RegisterModule( |
| 116 "test", | 116 "test", |
| 117 "var Event = require('event_bindings').Event;" | 117 "var Event = require('event_bindings').Event;" |
| 118 "var dispatchEvent = require('event_bindings').dispatchEvent;" | 118 "var dispatchEvent = require('event_bindings').dispatchEvent;" |
| 119 "var assert = requireNative('assert');" | 119 "var assert = requireNative('assert');" |
| 120 "var e = new Event('myevent');" | 120 "var e = new Event(events::UNKNOWN, 'myevent');" |
| 121 "var called = false;" | 121 "var called = false;" |
| 122 "e.addListener(function() { called = true; });" | 122 "e.addListener(function() { called = true; });" |
| 123 "dispatchEvent('myevent', []);" | 123 "dispatchEvent('myevent', []);" |
| 124 "assert.AssertTrue(called);"); | 124 "assert.AssertTrue(called);"); |
| 125 env()->module_system()->Require("test"); | 125 env()->module_system()->Require("test"); |
| 126 } | 126 } |
| 127 | 127 |
| 128 TEST_F(EventUnittest, AddListenerWithFiltersThrowsErrorByDefault) { | 128 TEST_F(EventUnittest, AddListenerWithFiltersThrowsErrorByDefault) { |
| 129 ModuleSystem::NativesEnabledScope natives_enabled_scope( | 129 ModuleSystem::NativesEnabledScope natives_enabled_scope( |
| 130 env()->module_system()); | 130 env()->module_system()); |
| 131 env()->RegisterModule("test", | 131 env()->RegisterModule("test", |
| 132 "var Event = require('event_bindings').Event;" | 132 "var Event = require('event_bindings').Event;" |
| 133 "var assert = requireNative('assert');" | 133 "var assert = requireNative('assert');" |
| 134 "var e = new Event('myevent');" | 134 "var e = new Event(events::UNKNOWN, 'myevent');" |
| 135 "var filter = [{" | 135 "var filter = [{" |
| 136 " url: {hostSuffix: 'google.com'}," | 136 " url: {hostSuffix: 'google.com'}," |
| 137 "}];" | 137 "}];" |
| 138 "var caught = false;" | 138 "var caught = false;" |
| 139 "try {" | 139 "try {" |
| 140 " e.addListener(function() {}, filter);" | 140 " e.addListener(function() {}, filter);" |
| 141 "} catch (e) {" | 141 "} catch (e) {" |
| 142 " caught = true;" | 142 " caught = true;" |
| 143 "}" | 143 "}" |
| 144 "assert.AssertTrue(caught);"); | 144 "assert.AssertTrue(caught);"); |
| 145 env()->module_system()->Require("test"); | 145 env()->module_system()->Require("test"); |
| 146 } | 146 } |
| 147 | 147 |
| 148 TEST_F(EventUnittest, FilteredEventsAttachment) { | 148 TEST_F(EventUnittest, FilteredEventsAttachment) { |
| 149 ModuleSystem::NativesEnabledScope natives_enabled_scope( | 149 ModuleSystem::NativesEnabledScope natives_enabled_scope( |
| 150 env()->module_system()); | 150 env()->module_system()); |
| 151 env()->RegisterModule( | 151 env()->RegisterModule( |
| 152 "test", | 152 "test", |
| 153 "var Event = require('event_bindings').Event;" | 153 "var Event = require('event_bindings').Event;" |
| 154 "var assert = requireNative('assert');" | 154 "var assert = requireNative('assert');" |
| 155 "var bindings = requireNative('event_natives');" | 155 "var bindings = requireNative('event_natives');" |
| 156 "var eventOpts = {supportsListeners: true, supportsFilters: true};" | 156 "var eventOpts = {supportsListeners: true, supportsFilters: true};" |
| 157 "var e = new Event('myevent', undefined, eventOpts);" | 157 "var e = new Event(events::UNKNOWN, 'myevent', undefined, eventOpts);" |
| 158 "var cb = function() {};" | 158 "var cb = function() {};" |
| 159 "var filters = {url: [{hostSuffix: 'google.com'}]};" | 159 "var filters = {url: [{hostSuffix: 'google.com'}]};" |
| 160 "e.addListener(cb, filters);" | 160 "e.addListener(cb, filters);" |
| 161 "assert.AssertTrue(bindings.HasFilteredListener('myevent'));" | 161 "assert.AssertTrue(bindings.HasFilteredListener('myevent'));" |
| 162 "e.removeListener(cb);" | 162 "e.removeListener(cb);" |
| 163 "assert.AssertFalse(bindings.HasFilteredListener('myevent'));"); | 163 "assert.AssertFalse(bindings.HasFilteredListener('myevent'));"); |
| 164 env()->module_system()->Require("test"); | 164 env()->module_system()->Require("test"); |
| 165 } | 165 } |
| 166 | 166 |
| 167 TEST_F(EventUnittest, DetachFilteredEvent) { | 167 TEST_F(EventUnittest, DetachFilteredEvent) { |
| 168 ModuleSystem::NativesEnabledScope natives_enabled_scope( | 168 ModuleSystem::NativesEnabledScope natives_enabled_scope( |
| 169 env()->module_system()); | 169 env()->module_system()); |
| 170 env()->RegisterModule( | 170 env()->RegisterModule( |
| 171 "test", | 171 "test", |
| 172 "var Event = require('event_bindings').Event;" | 172 "var Event = require('event_bindings').Event;" |
| 173 "var assert = requireNative('assert');" | 173 "var assert = requireNative('assert');" |
| 174 "var bindings = requireNative('event_natives');" | 174 "var bindings = requireNative('event_natives');" |
| 175 "var eventOpts = {supportsListeners: true, supportsFilters: true};" | 175 "var eventOpts = {supportsListeners: true, supportsFilters: true};" |
| 176 "var e = new Event('myevent', undefined, eventOpts);" | 176 "var e = new Event(events::UNKNOWN, 'myevent', undefined, eventOpts);" |
| 177 "var cb1 = function() {};" | 177 "var cb1 = function() {};" |
| 178 "var cb2 = function() {};" | 178 "var cb2 = function() {};" |
| 179 "var filters = {url: [{hostSuffix: 'google.com'}]};" | 179 "var filters = {url: [{hostSuffix: 'google.com'}]};" |
| 180 "e.addListener(cb1, filters);" | 180 "e.addListener(cb1, filters);" |
| 181 "e.addListener(cb2, filters);" | 181 "e.addListener(cb2, filters);" |
| 182 "privates(e).impl.detach_();" | 182 "privates(e).impl.detach_();" |
| 183 "assert.AssertFalse(bindings.HasFilteredListener('myevent'));"); | 183 "assert.AssertFalse(bindings.HasFilteredListener('myevent'));"); |
| 184 env()->module_system()->Require("test"); | 184 env()->module_system()->Require("test"); |
| 185 } | 185 } |
| 186 | 186 |
| 187 TEST_F(EventUnittest, AttachAndRemoveSameFilteredEventListener) { | 187 TEST_F(EventUnittest, AttachAndRemoveSameFilteredEventListener) { |
| 188 ModuleSystem::NativesEnabledScope natives_enabled_scope( | 188 ModuleSystem::NativesEnabledScope natives_enabled_scope( |
| 189 env()->module_system()); | 189 env()->module_system()); |
| 190 env()->RegisterModule( | 190 env()->RegisterModule( |
| 191 "test", | 191 "test", |
| 192 "var Event = require('event_bindings').Event;" | 192 "var Event = require('event_bindings').Event;" |
| 193 "var assert = requireNative('assert');" | 193 "var assert = requireNative('assert');" |
| 194 "var bindings = requireNative('event_natives');" | 194 "var bindings = requireNative('event_natives');" |
| 195 "var eventOpts = {supportsListeners: true, supportsFilters: true};" | 195 "var eventOpts = {supportsListeners: true, supportsFilters: true};" |
| 196 "var e = new Event('myevent', undefined, eventOpts);" | 196 "var e = new Event(events::UNKNOWN, 'myevent', undefined, eventOpts);" |
| 197 "var cb = function() {};" | 197 "var cb = function() {};" |
| 198 "var filters = {url: [{hostSuffix: 'google.com'}]};" | 198 "var filters = {url: [{hostSuffix: 'google.com'}]};" |
| 199 "e.addListener(cb, filters);" | 199 "e.addListener(cb, filters);" |
| 200 "e.addListener(cb, filters);" | 200 "e.addListener(cb, filters);" |
| 201 "assert.AssertTrue(bindings.HasFilteredListener('myevent'));" | 201 "assert.AssertTrue(bindings.HasFilteredListener('myevent'));" |
| 202 "e.removeListener(cb);" | 202 "e.removeListener(cb);" |
| 203 "assert.AssertTrue(bindings.HasFilteredListener('myevent'));" | 203 "assert.AssertTrue(bindings.HasFilteredListener('myevent'));" |
| 204 "e.removeListener(cb);" | 204 "e.removeListener(cb);" |
| 205 "assert.AssertFalse(bindings.HasFilteredListener('myevent'));"); | 205 "assert.AssertFalse(bindings.HasFilteredListener('myevent'));"); |
| 206 env()->module_system()->Require("test"); | 206 env()->module_system()->Require("test"); |
| 207 } | 207 } |
| 208 | 208 |
| 209 TEST_F(EventUnittest, AddingFilterWithUrlFieldNotAListThrowsException) { | 209 TEST_F(EventUnittest, AddingFilterWithUrlFieldNotAListThrowsException) { |
| 210 ModuleSystem::NativesEnabledScope natives_enabled_scope( | 210 ModuleSystem::NativesEnabledScope natives_enabled_scope( |
| 211 env()->module_system()); | 211 env()->module_system()); |
| 212 env()->RegisterModule( | 212 env()->RegisterModule( |
| 213 "test", | 213 "test", |
| 214 "var Event = require('event_bindings').Event;" | 214 "var Event = require('event_bindings').Event;" |
| 215 "var assert = requireNative('assert');" | 215 "var assert = requireNative('assert');" |
| 216 "var eventOpts = {supportsListeners: true, supportsFilters: true};" | 216 "var eventOpts = {supportsListeners: true, supportsFilters: true};" |
| 217 "var e = new Event('myevent', undefined, eventOpts);" | 217 "var e = new Event(events::UNKNOWN, 'myevent', undefined, eventOpts);" |
| 218 "var cb = function() {};" | 218 "var cb = function() {};" |
| 219 "var filters = {url: {hostSuffix: 'google.com'}};" | 219 "var filters = {url: {hostSuffix: 'google.com'}};" |
| 220 "var caught = false;" | 220 "var caught = false;" |
| 221 "try {" | 221 "try {" |
| 222 " e.addListener(cb, filters);" | 222 " e.addListener(cb, filters);" |
| 223 "} catch (e) {" | 223 "} catch (e) {" |
| 224 " caught = true;" | 224 " caught = true;" |
| 225 "}" | 225 "}" |
| 226 "assert.AssertTrue(caught);"); | 226 "assert.AssertTrue(caught);"); |
| 227 env()->module_system()->Require("test"); | 227 env()->module_system()->Require("test"); |
| 228 } | 228 } |
| 229 | 229 |
| 230 TEST_F(EventUnittest, MaxListeners) { | 230 TEST_F(EventUnittest, MaxListeners) { |
| 231 ModuleSystem::NativesEnabledScope natives_enabled_scope( | 231 ModuleSystem::NativesEnabledScope natives_enabled_scope( |
| 232 env()->module_system()); | 232 env()->module_system()); |
| 233 env()->RegisterModule( | 233 env()->RegisterModule( |
| 234 "test", | 234 "test", |
| 235 "var Event = require('event_bindings').Event;" | 235 "var Event = require('event_bindings').Event;" |
| 236 "var assert = requireNative('assert');" | 236 "var assert = requireNative('assert');" |
| 237 "var eventOpts = {supportsListeners: true, maxListeners: 1};" | 237 "var eventOpts = {supportsListeners: true, maxListeners: 1};" |
| 238 "var e = new Event('myevent', undefined, eventOpts);" | 238 "var e = new Event(events::UNKNOWN, 'myevent', undefined, eventOpts);" |
| 239 "var cb = function() {};" | 239 "var cb = function() {};" |
| 240 "var caught = false;" | 240 "var caught = false;" |
| 241 "try {" | 241 "try {" |
| 242 " e.addListener(cb);" | 242 " e.addListener(cb);" |
| 243 "} catch (e) {" | 243 "} catch (e) {" |
| 244 " caught = true;" | 244 " caught = true;" |
| 245 "}" | 245 "}" |
| 246 "assert.AssertTrue(!caught);" | 246 "assert.AssertTrue(!caught);" |
| 247 "try {" | 247 "try {" |
| 248 " e.addListener(cb);" | 248 " e.addListener(cb);" |
| 249 "} catch (e) {" | 249 "} catch (e) {" |
| 250 " caught = true;" | 250 " caught = true;" |
| 251 "}" | 251 "}" |
| 252 "assert.AssertTrue(caught);"); | 252 "assert.AssertTrue(caught);"); |
| 253 env()->module_system()->Require("test"); | 253 env()->module_system()->Require("test"); |
| 254 } | 254 } |
| 255 | 255 |
| 256 } // namespace | 256 } // namespace |
| 257 } // namespace extensions | 257 } // namespace extensions |
| OLD | NEW |