OLD | NEW |
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 var eventNatives = requireNative('event_natives'); | 5 var eventNatives = requireNative('event_natives'); |
6 var logging = requireNative('logging'); | 6 var logging = requireNative('logging'); |
7 var schemaRegistry = requireNative('schema_registry'); | 7 var schemaRegistry = requireNative('schema_registry'); |
8 var sendRequest = require('sendRequest').sendRequest; | 8 var sendRequest = require('sendRequest').sendRequest; |
9 var utils = require('utils'); | 9 var utils = require('utils'); |
10 var validate = require('schemaUtils').validate; | 10 var validate = require('schemaUtils').validate; |
(...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
221 // its listeners. | 221 // its listeners. |
222 function registerArgumentMassager(name, callback) { | 222 function registerArgumentMassager(name, callback) { |
223 if (eventArgumentMassagers[name]) | 223 if (eventArgumentMassagers[name]) |
224 throw new Error("Massager already registered for event: " + name); | 224 throw new Error("Massager already registered for event: " + name); |
225 eventArgumentMassagers[name] = callback; | 225 eventArgumentMassagers[name] = callback; |
226 } | 226 } |
227 | 227 |
228 // Dispatches a named event with the given argument array. The args array is | 228 // Dispatches a named event with the given argument array. The args array is |
229 // the list of arguments that will be sent to the event callback. | 229 // the list of arguments that will be sent to the event callback. |
230 function dispatchEvent(name, args, filteringInfo) { | 230 function dispatchEvent(name, args, filteringInfo) { |
231 var listenerIDs = []; | 231 var listenerIDs = null; |
232 | 232 |
233 if (filteringInfo) | 233 if (filteringInfo) |
234 listenerIDs = eventNatives.MatchAgainstEventFilter(name, filteringInfo); | 234 listenerIDs = eventNatives.MatchAgainstEventFilter(name, filteringInfo); |
235 | 235 |
236 var event = attachedNamedEvents[name]; | 236 var event = attachedNamedEvents[name]; |
237 if (!event) | 237 if (!event) |
238 return; | 238 return; |
239 | 239 |
240 var dispatchArgs = function(args) { | 240 var dispatchArgs = function(args) { |
241 var result = event.dispatch_(args, listenerIDs); | 241 var result = event.dispatch_(args, listenerIDs); |
(...skipping 13 matching lines...) Expand all Loading... |
255 if (!this.eventOptions_.supportsListeners) | 255 if (!this.eventOptions_.supportsListeners) |
256 throw new Error("This event does not support listeners."); | 256 throw new Error("This event does not support listeners."); |
257 if (this.eventOptions_.maxListeners && | 257 if (this.eventOptions_.maxListeners && |
258 this.getListenerCount() >= this.eventOptions_.maxListeners) { | 258 this.getListenerCount() >= this.eventOptions_.maxListeners) { |
259 throw new Error("Too many listeners for " + this.eventName_); | 259 throw new Error("Too many listeners for " + this.eventName_); |
260 } | 260 } |
261 if (filters) { | 261 if (filters) { |
262 if (!this.eventOptions_.supportsFilters) | 262 if (!this.eventOptions_.supportsFilters) |
263 throw new Error("This event does not support filters."); | 263 throw new Error("This event does not support filters."); |
264 if (filters.url && !(filters.url instanceof Array)) | 264 if (filters.url && !(filters.url instanceof Array)) |
265 throw new Error("filters.url should be an array."); | 265 throw new Error("filters.url should be an array"); |
266 if (filters.serviceType && | |
267 !(typeof filters.serviceType === 'string')) { | |
268 throw new Error("filters.serviceType should be a string.") | |
269 } | |
270 } | 266 } |
271 var listener = {callback: cb, filters: filters}; | 267 var listener = {callback: cb, filters: filters}; |
272 this.attach_(listener); | 268 this.attach_(listener); |
273 $Array.push(this.listeners_, listener); | 269 $Array.push(this.listeners_, listener); |
274 }; | 270 }; |
275 | 271 |
276 Event.prototype.attach_ = function(listener) { | 272 Event.prototype.attach_ = function(listener) { |
277 this.attachmentStrategy_.onAddedListener(listener); | 273 this.attachmentStrategy_.onAddedListener(listener); |
278 | 274 |
279 if (this.listeners_.length == 0) { | 275 if (this.listeners_.length == 0) { |
(...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
490 event.detach_(); | 486 event.detach_(); |
491 } | 487 } |
492 }); | 488 }); |
493 | 489 |
494 // NOTE: Event is (lazily) exposed as chrome.Event from dispatcher.cc. | 490 // NOTE: Event is (lazily) exposed as chrome.Event from dispatcher.cc. |
495 exports.Event = Event; | 491 exports.Event = Event; |
496 | 492 |
497 exports.dispatchEvent = dispatchEvent; | 493 exports.dispatchEvent = dispatchEvent; |
498 exports.parseEventOptions = parseEventOptions; | 494 exports.parseEventOptions = parseEventOptions; |
499 exports.registerArgumentMassager = registerArgumentMassager; | 495 exports.registerArgumentMassager = registerArgumentMassager; |
OLD | NEW |