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

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

Issue 1201063002: Set up the infrastructure for Extension event metrics. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 6 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
OLDNEW
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698