Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(73)

Side by Side Diff: chrome/renderer/extensions/event_unittest.cc

Issue 12313142: Revert 184837 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 7 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 "grit/renderer_resources.h" 7 #include "grit/renderer_resources.h"
8 8
9 namespace extensions { 9 namespace extensions {
10 namespace { 10 namespace {
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
55 " var i = attachedFilteredListeners[idToName[id]].indexOf(id);" 55 " var i = attachedFilteredListeners[idToName[id]].indexOf(id);"
56 " attachedFilteredListeners[idToName[id]].splice(i, 1);" 56 " attachedFilteredListeners[idToName[id]].splice(i, 1);"
57 "};" 57 "};"
58 58
59 "exports.HasFilteredListener = function(name) {" 59 "exports.HasFilteredListener = function(name) {"
60 " return attachedFilteredListeners[name].length;" 60 " return attachedFilteredListeners[name].length;"
61 "};"); 61 "};");
62 OverrideNativeHandler("chrome_hidden", 62 OverrideNativeHandler("chrome_hidden",
63 "var chromeHidden = {};" 63 "var chromeHidden = {};"
64 "exports.GetChromeHidden = function() { return chromeHidden; };"); 64 "exports.GetChromeHidden = function() { return chromeHidden; };");
65 OverrideNativeHandler("chrome",
66 "var chrome = {};"
67 "exports.GetChrome = function() { return chrome; };");
68 OverrideNativeHandler("sendRequest", 65 OverrideNativeHandler("sendRequest",
69 "exports.sendRequest = function() {};"); 66 "exports.sendRequest = function() {};");
70 OverrideNativeHandler("apiDefinitions", 67 OverrideNativeHandler("apiDefinitions",
71 "exports.GetExtensionAPIDefinition = function() {};"); 68 "exports.GetExtensionAPIDefinition = function() {};");
72 OverrideNativeHandler("logging", 69 OverrideNativeHandler("logging",
73 "exports.DCHECK = function() {};"); 70 "exports.DCHECK = function() {};");
74 } 71 }
75 }; 72 };
76 73
77 TEST_F(EventUnittest, TestNothing) { 74 TEST_F(EventUnittest, TestNothing) {
78 ExpectNoAssertionsMade(); 75 ExpectNoAssertionsMade();
79 } 76 }
80 77
81 TEST_F(EventUnittest, AddRemoveTwoListeners) { 78 TEST_F(EventUnittest, AddRemoveTwoListeners) {
82 ModuleSystem::NativesEnabledScope natives_enabled_scope(module_system_.get()); 79 ModuleSystem::NativesEnabledScope natives_enabled_scope(module_system_.get());
83 RegisterModule("test", 80 RegisterModule("test",
84 "var assert = requireNative('assert');" 81 "var assert = requireNative('assert');"
85 "require('event');" 82 "var event = require('event');"
86 "var Event = requireNative('chrome').GetChrome().Event;"
87 "var eventBindings = requireNative('event_bindings');" 83 "var eventBindings = requireNative('event_bindings');"
88 "var myEvent = new Event('named-event');" 84 "var myEvent = new event.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(!!eventBindings.attachedListeners['named-event']);" 90 "assert.AssertTrue(!!eventBindings.attachedListeners['named-event']);"
95 "myEvent.removeListener(cb2);" 91 "myEvent.removeListener(cb2);"
96 "assert.AssertFalse(!!eventBindings.attachedListeners['named-event']);"); 92 "assert.AssertFalse(!!eventBindings.attachedListeners['named-event']);");
97 module_system_->Require("test"); 93 module_system_->Require("test");
98 } 94 }
99 95
100 TEST_F(EventUnittest, OnUnloadDetachesAllListeners) { 96 TEST_F(EventUnittest, OnUnloadDetachesAllListeners) {
101 ModuleSystem::NativesEnabledScope natives_enabled_scope(module_system_.get()); 97 ModuleSystem::NativesEnabledScope natives_enabled_scope(module_system_.get());
102 RegisterModule("test", 98 RegisterModule("test",
103 "var assert = requireNative('assert');" 99 "var assert = requireNative('assert');"
104 "require('event');" 100 "var event = require('event');"
105 "var Event = requireNative('chrome').GetChrome().Event;"
106 "var eventBindings = requireNative('event_bindings');" 101 "var eventBindings = requireNative('event_bindings');"
107 "var chromeHidden = requireNative('chrome_hidden').GetChromeHidden();" 102 "var chromeHidden = requireNative('chrome_hidden').GetChromeHidden();"
108 "var myEvent = new Event('named-event');" 103 "var myEvent = new event.Event('named-event');"
109 "var cb1 = function() {};" 104 "var cb1 = function() {};"
110 "var cb2 = function() {};" 105 "var cb2 = function() {};"
111 "myEvent.addListener(cb1);" 106 "myEvent.addListener(cb1);"
112 "myEvent.addListener(cb2);" 107 "myEvent.addListener(cb2);"
113 "chromeHidden.dispatchOnUnload();" 108 "chromeHidden.dispatchOnUnload();"
114 "assert.AssertFalse(!!eventBindings.attachedListeners['named-event']);"); 109 "assert.AssertFalse(!!eventBindings.attachedListeners['named-event']);");
115 module_system_->Require("test"); 110 module_system_->Require("test");
116 } 111 }
117 112
118 TEST_F(EventUnittest, OnUnloadDetachesAllListenersEvenDupes) { 113 TEST_F(EventUnittest, OnUnloadDetachesAllListenersEvenDupes) {
119 ModuleSystem::NativesEnabledScope natives_enabled_scope(module_system_.get()); 114 ModuleSystem::NativesEnabledScope natives_enabled_scope(module_system_.get());
120 RegisterModule("test", 115 RegisterModule("test",
121 "var assert = requireNative('assert');" 116 "var assert = requireNative('assert');"
122 "require('event');" 117 "var event = require('event');"
123 "var Event = requireNative('chrome').GetChrome().Event;"
124 "var eventBindings = requireNative('event_bindings');" 118 "var eventBindings = requireNative('event_bindings');"
125 "var chromeHidden = requireNative('chrome_hidden').GetChromeHidden();" 119 "var chromeHidden = requireNative('chrome_hidden').GetChromeHidden();"
126 "var myEvent = new Event('named-event');" 120 "var myEvent = new event.Event('named-event');"
127 "var cb1 = function() {};" 121 "var cb1 = function() {};"
128 "myEvent.addListener(cb1);" 122 "myEvent.addListener(cb1);"
129 "myEvent.addListener(cb1);" 123 "myEvent.addListener(cb1);"
130 "chromeHidden.dispatchOnUnload();" 124 "chromeHidden.dispatchOnUnload();"
131 "assert.AssertFalse(!!eventBindings.attachedListeners['named-event']);"); 125 "assert.AssertFalse(!!eventBindings.attachedListeners['named-event']);");
132 module_system_->Require("test"); 126 module_system_->Require("test");
133 } 127 }
134 128
135 TEST_F(EventUnittest, EventsThatSupportRulesMustHaveAName) { 129 TEST_F(EventUnittest, EventsThatSupportRulesMustHaveAName) {
136 ModuleSystem::NativesEnabledScope natives_enabled_scope(module_system_.get()); 130 ModuleSystem::NativesEnabledScope natives_enabled_scope(module_system_.get());
137 RegisterModule("test", 131 RegisterModule("test",
138 "require('event');" 132 "var event = require('event');"
139 "var Event = requireNative('chrome').GetChrome().Event;"
140 "var eventOpts = {supportsRules: true};" 133 "var eventOpts = {supportsRules: true};"
141 "var assert = requireNative('assert');" 134 "var assert = requireNative('assert');"
142 "var caught = false;" 135 "var caught = false;"
143 "try {" 136 "try {"
144 " var myEvent = new Event(undefined, undefined, eventOpts);" 137 " var myEvent = new event.Event(undefined, undefined, eventOpts);"
145 "} catch (e) {" 138 "} catch (e) {"
146 " caught = true;" 139 " caught = true;"
147 "}" 140 "}"
148 "assert.AssertTrue(caught);"); 141 "assert.AssertTrue(caught);");
149 module_system_->Require("test"); 142 module_system_->Require("test");
150 } 143 }
151 144
152 TEST_F(EventUnittest, NamedEventDispatch) { 145 TEST_F(EventUnittest, NamedEventDispatch) {
153 ModuleSystem::NativesEnabledScope natives_enabled_scope(module_system_.get()); 146 ModuleSystem::NativesEnabledScope natives_enabled_scope(module_system_.get());
154 RegisterModule("test", 147 RegisterModule("test",
155 "require('event');" 148 "var event = require('event');"
156 "var Event = requireNative('chrome').GetChrome().Event;"
157 "var chromeHidden = requireNative('chrome_hidden').GetChromeHidden();" 149 "var chromeHidden = requireNative('chrome_hidden').GetChromeHidden();"
158 "var assert = requireNative('assert');" 150 "var assert = requireNative('assert');"
159 "var e = new Event('myevent');" 151 "var e = new event.Event('myevent');"
160 "var called = false;" 152 "var called = false;"
161 "e.addListener(function() { called = true; });" 153 "e.addListener(function() { called = true; });"
162 "chromeHidden.Event.dispatchEvent('myevent', []);" 154 "chromeHidden.Event.dispatchEvent('myevent', []);"
163 "assert.AssertTrue(called);"); 155 "assert.AssertTrue(called);");
164 module_system_->Require("test"); 156 module_system_->Require("test");
165 } 157 }
166 158
167 TEST_F(EventUnittest, AddListenerWithFiltersThrowsErrorByDefault) { 159 TEST_F(EventUnittest, AddListenerWithFiltersThrowsErrorByDefault) {
168 ModuleSystem::NativesEnabledScope natives_enabled_scope(module_system_.get()); 160 ModuleSystem::NativesEnabledScope natives_enabled_scope(module_system_.get());
169 RegisterModule("test", 161 RegisterModule("test",
170 "require('event');" 162 "var event = require('event');"
171 "var Event = requireNative('chrome').GetChrome().Event;"
172 "var assert = requireNative('assert');" 163 "var assert = requireNative('assert');"
173 "var e = new Event('myevent');" 164 "var e = new event.Event('myevent');"
174 "var filter = [{" 165 "var filter = [{"
175 " url: {hostSuffix: 'google.com'}," 166 " url: {hostSuffix: 'google.com'},"
176 "}];" 167 "}];"
177 "var caught = false;" 168 "var caught = false;"
178 "try {" 169 "try {"
179 " e.addListener(function() {}, filter);" 170 " e.addListener(function() {}, filter);"
180 "} catch (e) {" 171 "} catch (e) {"
181 " caught = true;" 172 " caught = true;"
182 "}" 173 "}"
183 "assert.AssertTrue(caught);"); 174 "assert.AssertTrue(caught);");
184 module_system_->Require("test"); 175 module_system_->Require("test");
185 } 176 }
186 177
187 TEST_F(EventUnittest, FilteredEventsAttachment) { 178 TEST_F(EventUnittest, FilteredEventsAttachment) {
188 ModuleSystem::NativesEnabledScope natives_enabled_scope(module_system_.get()); 179 ModuleSystem::NativesEnabledScope natives_enabled_scope(module_system_.get());
189 RegisterModule("test", 180 RegisterModule("test",
190 "require('event');" 181 "var event = require('event');"
191 "var Event = requireNative('chrome').GetChrome().Event;"
192 "var assert = requireNative('assert');" 182 "var assert = requireNative('assert');"
193 "var bindings = requireNative('event_bindings');" 183 "var bindings = requireNative('event_bindings');"
194 "var eventOpts = {supportsListeners: true, supportsFilters: true};" 184 "var eventOpts = {supportsListeners: true, supportsFilters: true};"
195 "var e = new Event('myevent', undefined, eventOpts);" 185 "var e = new event.Event('myevent', undefined, eventOpts);"
196 "var cb = function() {};" 186 "var cb = function() {};"
197 "var filters = {url: [{hostSuffix: 'google.com'}]};" 187 "var filters = {url: [{hostSuffix: 'google.com'}]};"
198 "e.addListener(cb, filters);" 188 "e.addListener(cb, filters);"
199 "assert.AssertTrue(bindings.HasFilteredListener('myevent'));" 189 "assert.AssertTrue(bindings.HasFilteredListener('myevent'));"
200 "e.removeListener(cb);" 190 "e.removeListener(cb);"
201 "assert.AssertFalse(bindings.HasFilteredListener('myevent'));"); 191 "assert.AssertFalse(bindings.HasFilteredListener('myevent'));");
202 module_system_->Require("test"); 192 module_system_->Require("test");
203 } 193 }
204 194
205 TEST_F(EventUnittest, DetachFilteredEvent) { 195 TEST_F(EventUnittest, DetachFilteredEvent) {
206 ModuleSystem::NativesEnabledScope natives_enabled_scope(module_system_.get()); 196 ModuleSystem::NativesEnabledScope natives_enabled_scope(module_system_.get());
207 RegisterModule("test", 197 RegisterModule("test",
208 "require('event');" 198 "var event = require('event');"
209 "var Event = requireNative('chrome').GetChrome().Event;"
210 "var assert = requireNative('assert');" 199 "var assert = requireNative('assert');"
211 "var bindings = requireNative('event_bindings');" 200 "var bindings = requireNative('event_bindings');"
212 "var eventOpts = {supportsListeners: true, supportsFilters: true};" 201 "var eventOpts = {supportsListeners: true, supportsFilters: true};"
213 "var e = new Event('myevent', undefined, eventOpts);" 202 "var e = new event.Event('myevent', undefined, eventOpts);"
214 "var cb1 = function() {};" 203 "var cb1 = function() {};"
215 "var cb2 = function() {};" 204 "var cb2 = function() {};"
216 "var filters = {url: [{hostSuffix: 'google.com'}]};" 205 "var filters = {url: [{hostSuffix: 'google.com'}]};"
217 "e.addListener(cb1, filters);" 206 "e.addListener(cb1, filters);"
218 "e.addListener(cb2, filters);" 207 "e.addListener(cb2, filters);"
219 "e.detach_();" 208 "e.detach_();"
220 "assert.AssertFalse(bindings.HasFilteredListener('myevent'));"); 209 "assert.AssertFalse(bindings.HasFilteredListener('myevent'));");
221 module_system_->Require("test"); 210 module_system_->Require("test");
222 } 211 }
223 212
224 TEST_F(EventUnittest, AttachAndRemoveSameFilteredEventListener) { 213 TEST_F(EventUnittest, AttachAndRemoveSameFilteredEventListener) {
225 ModuleSystem::NativesEnabledScope natives_enabled_scope(module_system_.get()); 214 ModuleSystem::NativesEnabledScope natives_enabled_scope(module_system_.get());
226 RegisterModule("test", 215 RegisterModule("test",
227 "require('event');" 216 "var event = require('event');"
228 "var Event = requireNative('chrome').GetChrome().Event;"
229 "var assert = requireNative('assert');" 217 "var assert = requireNative('assert');"
230 "var bindings = requireNative('event_bindings');" 218 "var bindings = requireNative('event_bindings');"
231 "var eventOpts = {supportsListeners: true, supportsFilters: true};" 219 "var eventOpts = {supportsListeners: true, supportsFilters: true};"
232 "var e = new Event('myevent', undefined, eventOpts);" 220 "var e = new event.Event('myevent', undefined, eventOpts);"
233 "var cb = function() {};" 221 "var cb = function() {};"
234 "var filters = {url: [{hostSuffix: 'google.com'}]};" 222 "var filters = {url: [{hostSuffix: 'google.com'}]};"
235 "e.addListener(cb, filters);" 223 "e.addListener(cb, filters);"
236 "e.addListener(cb, filters);" 224 "e.addListener(cb, filters);"
237 "assert.AssertTrue(bindings.HasFilteredListener('myevent'));" 225 "assert.AssertTrue(bindings.HasFilteredListener('myevent'));"
238 "e.removeListener(cb);" 226 "e.removeListener(cb);"
239 "assert.AssertTrue(bindings.HasFilteredListener('myevent'));" 227 "assert.AssertTrue(bindings.HasFilteredListener('myevent'));"
240 "e.removeListener(cb);" 228 "e.removeListener(cb);"
241 "assert.AssertFalse(bindings.HasFilteredListener('myevent'));"); 229 "assert.AssertFalse(bindings.HasFilteredListener('myevent'));");
242 module_system_->Require("test"); 230 module_system_->Require("test");
243 } 231 }
244 232
245 TEST_F(EventUnittest, AddingFilterWithUrlFieldNotAListThrowsException) { 233 TEST_F(EventUnittest, AddingFilterWithUrlFieldNotAListThrowsException) {
246 ModuleSystem::NativesEnabledScope natives_enabled_scope(module_system_.get()); 234 ModuleSystem::NativesEnabledScope natives_enabled_scope(module_system_.get());
247 RegisterModule("test", 235 RegisterModule("test",
248 "require('event');" 236 "var event = require('event');"
249 "var Event = requireNative('chrome').GetChrome().Event;"
250 "var assert = requireNative('assert');" 237 "var assert = requireNative('assert');"
251 "var eventOpts = {supportsListeners: true, supportsFilters: true};" 238 "var eventOpts = {supportsListeners: true, supportsFilters: true};"
252 "var e = new Event('myevent', undefined, eventOpts);" 239 "var e = new event.Event('myevent', undefined, eventOpts);"
253 "var cb = function() {};" 240 "var cb = function() {};"
254 "var filters = {url: {hostSuffix: 'google.com'}};" 241 "var filters = {url: {hostSuffix: 'google.com'}};"
255 "var caught = false;" 242 "var caught = false;"
256 "try {" 243 "try {"
257 " e.addListener(cb, filters);" 244 " e.addListener(cb, filters);"
258 "} catch (e) {" 245 "} catch (e) {"
259 " caught = true;" 246 " caught = true;"
260 "}" 247 "}"
261 "assert.AssertTrue(caught);"); 248 "assert.AssertTrue(caught);");
262 module_system_->Require("test"); 249 module_system_->Require("test");
263 } 250 }
264 251
265 TEST_F(EventUnittest, MaxListeners) { 252 TEST_F(EventUnittest, MaxListeners) {
266 ModuleSystem::NativesEnabledScope natives_enabled_scope(module_system_.get()); 253 ModuleSystem::NativesEnabledScope natives_enabled_scope(module_system_.get());
267 RegisterModule("test", 254 RegisterModule("test",
268 "require('event');" 255 "var event = require('event');"
269 "var Event = requireNative('chrome').GetChrome().Event;"
270 "var assert = requireNative('assert');" 256 "var assert = requireNative('assert');"
271 "var eventOpts = {supportsListeners: true, maxListeners: 1};" 257 "var eventOpts = {supportsListeners: true, maxListeners: 1};"
272 "var e = new Event('myevent', undefined, eventOpts);" 258 "var e = new event.Event('myevent', undefined, eventOpts);"
273 "var cb = function() {};" 259 "var cb = function() {};"
274 "var caught = false;" 260 "var caught = false;"
275 "try {" 261 "try {"
276 " e.addListener(cb);" 262 " e.addListener(cb);"
277 "} catch (e) {" 263 "} catch (e) {"
278 " caught = true;" 264 " caught = true;"
279 "}" 265 "}"
280 "assert.AssertTrue(!caught);" 266 "assert.AssertTrue(!caught);"
281 "try {" 267 "try {"
282 " e.addListener(cb);" 268 " e.addListener(cb);"
283 "} catch (e) {" 269 "} catch (e) {"
284 " caught = true;" 270 " caught = true;"
285 "}" 271 "}"
286 "assert.AssertTrue(caught);"); 272 "assert.AssertTrue(caught);");
287 module_system_->Require("test"); 273 module_system_->Require("test");
288 } 274 }
289 275
290 } // namespace 276 } // namespace
291 } // namespace extensions 277 } // namespace extensions
OLDNEW
« no previous file with comments | « chrome/renderer/extensions/event_bindings.cc ('k') | chrome/renderer/extensions/extension_custom_bindings.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698