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

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