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

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

Issue 11571014: Lazy load chrome.* APIs (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: comments/TODOs Created 7 years, 11 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; };");
65 OverrideNativeHandler("sendRequest", 68 OverrideNativeHandler("sendRequest",
66 "exports.sendRequest = function() {};"); 69 "exports.sendRequest = function() {};");
67 OverrideNativeHandler("apiDefinitions", 70 OverrideNativeHandler("apiDefinitions",
68 "exports.GetExtensionAPIDefinition = function() {};"); 71 "exports.GetExtensionAPIDefinition = function() {};");
69 OverrideNativeHandler("logging", 72 OverrideNativeHandler("logging",
70 "exports.DCHECK = function() {};"); 73 "exports.DCHECK = function() {};");
71 } 74 }
72 }; 75 };
73 76
74 TEST_F(EventUnittest, TestNothing) { 77 TEST_F(EventUnittest, TestNothing) {
75 ExpectNoAssertionsMade(); 78 ExpectNoAssertionsMade();
76 } 79 }
77 80
78 TEST_F(EventUnittest, AddRemoveTwoListeners) { 81 TEST_F(EventUnittest, AddRemoveTwoListeners) {
79 ModuleSystem::NativesEnabledScope natives_enabled_scope(module_system_.get()); 82 ModuleSystem::NativesEnabledScope natives_enabled_scope(module_system_.get());
80 RegisterModule("test", 83 RegisterModule("test",
81 "var assert = requireNative('assert');" 84 "var assert = requireNative('assert');"
82 "var event = require('event');" 85 "var Event = require('event').bindings;"
83 "var eventBindings = requireNative('event_bindings');" 86 "var eventBindings = requireNative('event_bindings');"
84 "var myEvent = new event.Event('named-event');" 87 "var myEvent = new Event('named-event');"
85 "var cb1 = function() {};" 88 "var cb1 = function() {};"
86 "var cb2 = function() {};" 89 "var cb2 = function() {};"
87 "myEvent.addListener(cb1);" 90 "myEvent.addListener(cb1);"
88 "myEvent.addListener(cb2);" 91 "myEvent.addListener(cb2);"
89 "myEvent.removeListener(cb1);" 92 "myEvent.removeListener(cb1);"
90 "assert.AssertTrue(!!eventBindings.attachedListeners['named-event']);" 93 "assert.AssertTrue(!!eventBindings.attachedListeners['named-event']);"
91 "myEvent.removeListener(cb2);" 94 "myEvent.removeListener(cb2);"
92 "assert.AssertFalse(!!eventBindings.attachedListeners['named-event']);"); 95 "assert.AssertFalse(!!eventBindings.attachedListeners['named-event']);");
93 module_system_->Require("test"); 96 module_system_->Require("test");
94 } 97 }
95 98
96 TEST_F(EventUnittest, OnUnloadDetachesAllListeners) { 99 TEST_F(EventUnittest, OnUnloadDetachesAllListeners) {
97 ModuleSystem::NativesEnabledScope natives_enabled_scope(module_system_.get()); 100 ModuleSystem::NativesEnabledScope natives_enabled_scope(module_system_.get());
98 RegisterModule("test", 101 RegisterModule("test",
99 "var assert = requireNative('assert');" 102 "var assert = requireNative('assert');"
100 "var event = require('event');" 103 "var Event = require('event').bindings;"
101 "var eventBindings = requireNative('event_bindings');" 104 "var eventBindings = requireNative('event_bindings');"
102 "var chromeHidden = requireNative('chrome_hidden').GetChromeHidden();" 105 "var chromeHidden = requireNative('chrome_hidden').GetChromeHidden();"
103 "var myEvent = new event.Event('named-event');" 106 "var myEvent = new Event('named-event');"
104 "var cb1 = function() {};" 107 "var cb1 = function() {};"
105 "var cb2 = function() {};" 108 "var cb2 = function() {};"
106 "myEvent.addListener(cb1);" 109 "myEvent.addListener(cb1);"
107 "myEvent.addListener(cb2);" 110 "myEvent.addListener(cb2);"
108 "chromeHidden.dispatchOnUnload();" 111 "chromeHidden.dispatchOnUnload();"
109 "assert.AssertFalse(!!eventBindings.attachedListeners['named-event']);"); 112 "assert.AssertFalse(!!eventBindings.attachedListeners['named-event']);");
110 module_system_->Require("test"); 113 module_system_->Require("test");
111 } 114 }
112 115
113 TEST_F(EventUnittest, OnUnloadDetachesAllListenersEvenDupes) { 116 TEST_F(EventUnittest, OnUnloadDetachesAllListenersEvenDupes) {
114 ModuleSystem::NativesEnabledScope natives_enabled_scope(module_system_.get()); 117 ModuleSystem::NativesEnabledScope natives_enabled_scope(module_system_.get());
115 RegisterModule("test", 118 RegisterModule("test",
116 "var assert = requireNative('assert');" 119 "var assert = requireNative('assert');"
117 "var event = require('event');" 120 "var Event = require('event').bindings;"
118 "var eventBindings = requireNative('event_bindings');" 121 "var eventBindings = requireNative('event_bindings');"
119 "var chromeHidden = requireNative('chrome_hidden').GetChromeHidden();" 122 "var chromeHidden = requireNative('chrome_hidden').GetChromeHidden();"
120 "var myEvent = new event.Event('named-event');" 123 "var myEvent = new Event('named-event');"
121 "var cb1 = function() {};" 124 "var cb1 = function() {};"
122 "myEvent.addListener(cb1);" 125 "myEvent.addListener(cb1);"
123 "myEvent.addListener(cb1);" 126 "myEvent.addListener(cb1);"
124 "chromeHidden.dispatchOnUnload();" 127 "chromeHidden.dispatchOnUnload();"
125 "assert.AssertFalse(!!eventBindings.attachedListeners['named-event']);"); 128 "assert.AssertFalse(!!eventBindings.attachedListeners['named-event']);");
126 module_system_->Require("test"); 129 module_system_->Require("test");
127 } 130 }
128 131
129 TEST_F(EventUnittest, EventsThatSupportRulesMustHaveAName) { 132 TEST_F(EventUnittest, EventsThatSupportRulesMustHaveAName) {
130 ModuleSystem::NativesEnabledScope natives_enabled_scope(module_system_.get()); 133 ModuleSystem::NativesEnabledScope natives_enabled_scope(module_system_.get());
131 RegisterModule("test", 134 RegisterModule("test",
132 "var event = require('event');" 135 "var Event = require('event').bindings;"
133 "var eventOpts = {supportsRules: true};" 136 "var eventOpts = {supportsRules: true};"
134 "var assert = requireNative('assert');" 137 "var assert = requireNative('assert');"
135 "var caught = false;" 138 "var caught = false;"
136 "try {" 139 "try {"
137 " var myEvent = new event.Event(undefined, undefined, eventOpts);" 140 " var myEvent = new Event(undefined, undefined, eventOpts);"
138 "} catch (e) {" 141 "} catch (e) {"
139 " caught = true;" 142 " caught = true;"
140 "}" 143 "}"
141 "assert.AssertTrue(caught);"); 144 "assert.AssertTrue(caught);");
142 module_system_->Require("test"); 145 module_system_->Require("test");
143 } 146 }
144 147
145 TEST_F(EventUnittest, NamedEventDispatch) { 148 TEST_F(EventUnittest, NamedEventDispatch) {
146 ModuleSystem::NativesEnabledScope natives_enabled_scope(module_system_.get()); 149 ModuleSystem::NativesEnabledScope natives_enabled_scope(module_system_.get());
147 RegisterModule("test", 150 RegisterModule("test",
148 "var event = require('event');" 151 "var Event = require('event').bindings;"
149 "var chromeHidden = requireNative('chrome_hidden').GetChromeHidden();" 152 "var chromeHidden = requireNative('chrome_hidden').GetChromeHidden();"
150 "var assert = requireNative('assert');" 153 "var assert = requireNative('assert');"
151 "var e = new event.Event('myevent');" 154 "var e = new Event('myevent');"
152 "var called = false;" 155 "var called = false;"
153 "e.addListener(function() { called = true; });" 156 "e.addListener(function() { called = true; });"
154 "chromeHidden.Event.dispatchEvent('myevent', []);" 157 "chromeHidden.Event.dispatchEvent('myevent', []);"
155 "assert.AssertTrue(called);"); 158 "assert.AssertTrue(called);");
156 module_system_->Require("test"); 159 module_system_->Require("test");
157 } 160 }
158 161
159 TEST_F(EventUnittest, AddListenerWithFiltersThrowsErrorByDefault) { 162 TEST_F(EventUnittest, AddListenerWithFiltersThrowsErrorByDefault) {
160 ModuleSystem::NativesEnabledScope natives_enabled_scope(module_system_.get()); 163 ModuleSystem::NativesEnabledScope natives_enabled_scope(module_system_.get());
161 RegisterModule("test", 164 RegisterModule("test",
162 "var event = require('event');" 165 "var Event = require('event').bindings;"
163 "var assert = requireNative('assert');" 166 "var assert = requireNative('assert');"
164 "var e = new event.Event('myevent');" 167 "var e = new Event('myevent');"
165 "var filter = [{" 168 "var filter = [{"
166 " url: {hostSuffix: 'google.com'}," 169 " url: {hostSuffix: 'google.com'},"
167 "}];" 170 "}];"
168 "var caught = false;" 171 "var caught = false;"
169 "try {" 172 "try {"
170 " e.addListener(function() {}, filter);" 173 " e.addListener(function() {}, filter);"
171 "} catch (e) {" 174 "} catch (e) {"
172 " caught = true;" 175 " caught = true;"
173 "}" 176 "}"
174 "assert.AssertTrue(caught);"); 177 "assert.AssertTrue(caught);");
175 module_system_->Require("test"); 178 module_system_->Require("test");
176 } 179 }
177 180
178 TEST_F(EventUnittest, FilteredEventsAttachment) { 181 TEST_F(EventUnittest, FilteredEventsAttachment) {
179 ModuleSystem::NativesEnabledScope natives_enabled_scope(module_system_.get()); 182 ModuleSystem::NativesEnabledScope natives_enabled_scope(module_system_.get());
180 RegisterModule("test", 183 RegisterModule("test",
181 "var event = require('event');" 184 "var Event = require('event').bindings;"
182 "var assert = requireNative('assert');" 185 "var assert = requireNative('assert');"
183 "var bindings = requireNative('event_bindings');" 186 "var bindings = requireNative('event_bindings');"
184 "var eventOpts = {supportsListeners: true, supportsFilters: true};" 187 "var eventOpts = {supportsListeners: true, supportsFilters: true};"
185 "var e = new event.Event('myevent', undefined, eventOpts);" 188 "var e = new Event('myevent', undefined, eventOpts);"
186 "var cb = function() {};" 189 "var cb = function() {};"
187 "var filters = {url: [{hostSuffix: 'google.com'}]};" 190 "var filters = {url: [{hostSuffix: 'google.com'}]};"
188 "e.addListener(cb, filters);" 191 "e.addListener(cb, filters);"
189 "assert.AssertTrue(bindings.HasFilteredListener('myevent'));" 192 "assert.AssertTrue(bindings.HasFilteredListener('myevent'));"
190 "e.removeListener(cb);" 193 "e.removeListener(cb);"
191 "assert.AssertFalse(bindings.HasFilteredListener('myevent'));"); 194 "assert.AssertFalse(bindings.HasFilteredListener('myevent'));");
192 module_system_->Require("test"); 195 module_system_->Require("test");
193 } 196 }
194 197
195 TEST_F(EventUnittest, DetachFilteredEvent) { 198 TEST_F(EventUnittest, DetachFilteredEvent) {
196 ModuleSystem::NativesEnabledScope natives_enabled_scope(module_system_.get()); 199 ModuleSystem::NativesEnabledScope natives_enabled_scope(module_system_.get());
197 RegisterModule("test", 200 RegisterModule("test",
198 "var event = require('event');" 201 "var Event = require('event').bindings;"
199 "var assert = requireNative('assert');" 202 "var assert = requireNative('assert');"
200 "var bindings = requireNative('event_bindings');" 203 "var bindings = requireNative('event_bindings');"
201 "var eventOpts = {supportsListeners: true, supportsFilters: true};" 204 "var eventOpts = {supportsListeners: true, supportsFilters: true};"
202 "var e = new event.Event('myevent', undefined, eventOpts);" 205 "var e = new Event('myevent', undefined, eventOpts);"
203 "var cb1 = function() {};" 206 "var cb1 = function() {};"
204 "var cb2 = function() {};" 207 "var cb2 = function() {};"
205 "var filters = {url: [{hostSuffix: 'google.com'}]};" 208 "var filters = {url: [{hostSuffix: 'google.com'}]};"
206 "e.addListener(cb1, filters);" 209 "e.addListener(cb1, filters);"
207 "e.addListener(cb2, filters);" 210 "e.addListener(cb2, filters);"
208 "e.detach_();" 211 "e.detach_();"
209 "assert.AssertFalse(bindings.HasFilteredListener('myevent'));"); 212 "assert.AssertFalse(bindings.HasFilteredListener('myevent'));");
210 module_system_->Require("test"); 213 module_system_->Require("test");
211 } 214 }
212 215
213 TEST_F(EventUnittest, AttachAndRemoveSameFilteredEventListener) { 216 TEST_F(EventUnittest, AttachAndRemoveSameFilteredEventListener) {
214 ModuleSystem::NativesEnabledScope natives_enabled_scope(module_system_.get()); 217 ModuleSystem::NativesEnabledScope natives_enabled_scope(module_system_.get());
215 RegisterModule("test", 218 RegisterModule("test",
216 "var event = require('event');" 219 "var Event = require('event').bindings;"
217 "var assert = requireNative('assert');" 220 "var assert = requireNative('assert');"
218 "var bindings = requireNative('event_bindings');" 221 "var bindings = requireNative('event_bindings');"
219 "var eventOpts = {supportsListeners: true, supportsFilters: true};" 222 "var eventOpts = {supportsListeners: true, supportsFilters: true};"
220 "var e = new event.Event('myevent', undefined, eventOpts);" 223 "var e = new Event('myevent', undefined, eventOpts);"
221 "var cb = function() {};" 224 "var cb = function() {};"
222 "var filters = {url: [{hostSuffix: 'google.com'}]};" 225 "var filters = {url: [{hostSuffix: 'google.com'}]};"
223 "e.addListener(cb, filters);" 226 "e.addListener(cb, filters);"
224 "e.addListener(cb, filters);" 227 "e.addListener(cb, filters);"
225 "assert.AssertTrue(bindings.HasFilteredListener('myevent'));" 228 "assert.AssertTrue(bindings.HasFilteredListener('myevent'));"
226 "e.removeListener(cb);" 229 "e.removeListener(cb);"
227 "assert.AssertTrue(bindings.HasFilteredListener('myevent'));" 230 "assert.AssertTrue(bindings.HasFilteredListener('myevent'));"
228 "e.removeListener(cb);" 231 "e.removeListener(cb);"
229 "assert.AssertFalse(bindings.HasFilteredListener('myevent'));"); 232 "assert.AssertFalse(bindings.HasFilteredListener('myevent'));");
230 module_system_->Require("test"); 233 module_system_->Require("test");
231 } 234 }
232 235
233 TEST_F(EventUnittest, AddingFilterWithUrlFieldNotAListThrowsException) { 236 TEST_F(EventUnittest, AddingFilterWithUrlFieldNotAListThrowsException) {
234 ModuleSystem::NativesEnabledScope natives_enabled_scope(module_system_.get()); 237 ModuleSystem::NativesEnabledScope natives_enabled_scope(module_system_.get());
235 RegisterModule("test", 238 RegisterModule("test",
236 "var event = require('event');" 239 "var Event = require('event').bindings;"
237 "var assert = requireNative('assert');" 240 "var assert = requireNative('assert');"
238 "var eventOpts = {supportsListeners: true, supportsFilters: true};" 241 "var eventOpts = {supportsListeners: true, supportsFilters: true};"
239 "var e = new event.Event('myevent', undefined, eventOpts);" 242 "var e = new Event('myevent', undefined, eventOpts);"
240 "var cb = function() {};" 243 "var cb = function() {};"
241 "var filters = {url: {hostSuffix: 'google.com'}};" 244 "var filters = {url: {hostSuffix: 'google.com'}};"
242 "var caught = false;" 245 "var caught = false;"
243 "try {" 246 "try {"
244 " e.addListener(cb, filters);" 247 " e.addListener(cb, filters);"
245 "} catch (e) {" 248 "} catch (e) {"
246 " caught = true;" 249 " caught = true;"
247 "}" 250 "}"
248 "assert.AssertTrue(caught);"); 251 "assert.AssertTrue(caught);");
249 module_system_->Require("test"); 252 module_system_->Require("test");
250 } 253 }
251 254
252 TEST_F(EventUnittest, MaxListeners) { 255 TEST_F(EventUnittest, MaxListeners) {
253 ModuleSystem::NativesEnabledScope natives_enabled_scope(module_system_.get()); 256 ModuleSystem::NativesEnabledScope natives_enabled_scope(module_system_.get());
254 RegisterModule("test", 257 RegisterModule("test",
255 "var event = require('event');" 258 "var Event = require('event').bindings;"
256 "var assert = requireNative('assert');" 259 "var assert = requireNative('assert');"
257 "var eventOpts = {supportsListeners: true, maxListeners: 1};" 260 "var eventOpts = {supportsListeners: true, maxListeners: 1};"
258 "var e = new event.Event('myevent', undefined, eventOpts);" 261 "var e = new Event('myevent', undefined, eventOpts);"
259 "var cb = function() {};" 262 "var cb = function() {};"
260 "var caught = false;" 263 "var caught = false;"
261 "try {" 264 "try {"
262 " e.addListener(cb);" 265 " e.addListener(cb);"
263 "} catch (e) {" 266 "} catch (e) {"
264 " caught = true;" 267 " caught = true;"
265 "}" 268 "}"
266 "assert.AssertTrue(!caught);" 269 "assert.AssertTrue(!caught);"
267 "try {" 270 "try {"
268 " e.addListener(cb);" 271 " e.addListener(cb);"
269 "} catch (e) {" 272 "} catch (e) {"
270 " caught = true;" 273 " caught = true;"
271 "}" 274 "}"
272 "assert.AssertTrue(caught);"); 275 "assert.AssertTrue(caught);");
273 module_system_->Require("test"); 276 module_system_->Require("test");
274 } 277 }
275 278
276 } // namespace 279 } // namespace
277 } // namespace extensions 280 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698