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

Unified Diff: chrome/renderer/resources/extensions/event.js

Issue 11571014: Lazy load chrome.* APIs (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: addressed comments Created 7 years, 10 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 side-by-side diff with in-line comments
Download patch
Index: chrome/renderer/resources/extensions/event.js
diff --git a/chrome/renderer/resources/extensions/event.js b/chrome/renderer/resources/extensions/event.js
index 3c944590a74da4988c464be31a9b0b5019e997a4..c232709ba9ebef6eda7d8394b02b08c7434b3ed5 100644
--- a/chrome/renderer/resources/extensions/event.js
+++ b/chrome/renderer/resources/extensions/event.js
@@ -3,6 +3,7 @@
// found in the LICENSE file.
var DCHECK = requireNative('logging').DCHECK;
+ require('json_schema');
not at google - send to devlin 2013/02/15 22:26:17 TODO: json_schema shouldn't put things on chromeHi
cduvall 2013/02/19 23:58:49 Done.
var eventBindingsNatives = requireNative('event_bindings');
var AttachEvent = eventBindingsNatives.AttachEvent;
var DetachEvent = eventBindingsNatives.DetachEvent;
@@ -14,8 +15,8 @@
var validate = require('schemaUtils').validate;
var chromeHidden = requireNative('chrome_hidden').GetChromeHidden();
- var GetExtensionAPIDefinition =
- requireNative('apiDefinitions').GetExtensionAPIDefinition;
+ var chrome = requireNative('chrome').GetChrome();
+ var schemaRegistry = requireNative('schema_registry');
// Schemas for the rule-style functions on the events API that
// only need to be generated occasionally, so populate them lazily.
@@ -30,7 +31,7 @@
function ensureRuleSchemasLoaded() {
if (ruleFunctionSchemas.addRules)
return;
- var eventsSchema = GetExtensionAPIDefinition("events")[0];
+ var eventsSchema = schemaRegistry.GetSchema("events");
var eventType = utils.lookup(eventsSchema.types, 'id', 'events.Event');
ruleFunctionSchemas.addRules =
@@ -189,7 +190,7 @@
//
// If opt_eventOptions exists, it is a dictionary that contains the boolean
// entries "supportsListeners" and "supportsRules".
- chrome.Event = function(opt_eventName, opt_argSchemas, opt_eventOptions) {
+ var Event = function(opt_eventName, opt_argSchemas, opt_eventOptions) {
this.eventName_ = opt_eventName;
this.listeners_ = [];
this.eventOptions_ = chromeHidden.parseEventOptions(opt_eventOptions);
@@ -264,7 +265,7 @@
};
// Registers a callback to be called when this event is dispatched.
- chrome.Event.prototype.addListener = function(cb, filters) {
+ Event.prototype.addListener = function(cb, filters) {
if (!this.eventOptions_.supportsListeners)
throw new Error("This event does not support listeners.");
if (this.eventOptions_.maxListeners &&
@@ -281,7 +282,7 @@
this.listeners_.push(listener);
};
- chrome.Event.prototype.attach_ = function(listener) {
+ Event.prototype.attach_ = function(listener) {
this.attachmentStrategy_.onAddedListener(listener);
if (this.listeners_.length == 0) {
allAttachedEvents[allAttachedEvents.length] = this;
@@ -298,7 +299,7 @@
};
// Unregisters a callback.
- chrome.Event.prototype.removeListener = function(cb) {
+ Event.prototype.removeListener = function(cb) {
if (!this.eventOptions_.supportsListeners)
throw new Error("This event does not support listeners.");
var idx = this.findListener_(cb);
@@ -326,19 +327,19 @@
};
// Test if the given callback is registered for this event.
- chrome.Event.prototype.hasListener = function(cb) {
+ Event.prototype.hasListener = function(cb) {
if (!this.eventOptions_.supportsListeners)
throw new Error("This event does not support listeners.");
return this.findListener_(cb) > -1;
};
// Test if any callbacks are registered for this event.
- chrome.Event.prototype.hasListeners = function() {
+ Event.prototype.hasListeners = function() {
return this.getListenerCount() > 0;
};
// Return the number of listeners on this event.
- chrome.Event.prototype.getListenerCount = function() {
+ Event.prototype.getListenerCount = function() {
if (!this.eventOptions_.supportsListeners)
throw new Error("This event does not support listeners.");
return this.listeners_.length;
@@ -346,7 +347,7 @@
// Returns the index of the given callback if registered, or -1 if not
// found.
- chrome.Event.prototype.findListener_ = function(cb) {
+ Event.prototype.findListener_ = function(cb) {
for (var i = 0; i < this.listeners_.length; i++) {
if (this.listeners_[i].callback == cb) {
return i;
@@ -356,7 +357,7 @@
return -1;
};
- chrome.Event.prototype.dispatch_ = function(args, listenerIDs) {
+ Event.prototype.dispatch_ = function(args, listenerIDs) {
if (!this.eventOptions_.supportsListeners)
throw new Error("This event does not support listeners.");
var validationErrors = this.validateEventArgs_(args);
@@ -386,28 +387,28 @@
}
// Can be overridden to support custom dispatching.
- chrome.Event.prototype.dispatchToListener = function(callback, args) {
+ Event.prototype.dispatchToListener = function(callback, args) {
return callback.apply(null, args);
}
// Dispatches this event object to all listeners, passing all supplied
// arguments to this function each listener.
- chrome.Event.prototype.dispatch = function(varargs) {
+ Event.prototype.dispatch = function(varargs) {
return this.dispatch_(Array.prototype.slice.call(arguments), undefined);
};
// Detaches this event object from its name.
- chrome.Event.prototype.detach_ = function() {
+ Event.prototype.detach_ = function() {
this.attachmentStrategy_.detach(false);
};
- chrome.Event.prototype.destroy_ = function() {
+ Event.prototype.destroy_ = function() {
this.listeners_ = [];
this.validateEventArgs_ = [];
this.detach_(false);
};
- chrome.Event.prototype.addRules = function(rules, opt_cb) {
+ Event.prototype.addRules = function(rules, opt_cb) {
if (!this.eventOptions_.supportsRules)
throw new Error("This event does not support rules.");
@@ -457,7 +458,7 @@
ruleFunctionSchemas.addRules.parameters);
}
- chrome.Event.prototype.removeRules = function(ruleIdentifiers, opt_cb) {
+ Event.prototype.removeRules = function(ruleIdentifiers, opt_cb) {
if (!this.eventOptions_.supportsRules)
throw new Error("This event does not support rules.");
ensureRuleSchemasLoaded();
@@ -470,7 +471,7 @@
ruleFunctionSchemas.removeRules.parameters);
}
- chrome.Event.prototype.getRules = function(ruleIdentifiers, cb) {
+ Event.prototype.getRules = function(ruleIdentifiers, cb) {
if (!this.eventOptions_.supportsRules)
throw new Error("This event does not support rules.");
ensureRuleSchemasLoaded();
@@ -487,8 +488,8 @@
// Special load events: we don't use the DOM unload because that slows
// down tab shutdown. On the other hand, onUnload might not always fire,
// since Chrome will terminate renderers on shutdown (SuddenTermination).
- chromeHidden.onLoad = new chrome.Event();
- chromeHidden.onUnload = new chrome.Event();
+ chromeHidden.onLoad = new Event();
+ chromeHidden.onUnload = new Event();
chromeHidden.dispatchOnLoad =
chromeHidden.onLoad.dispatch.bind(chromeHidden.onLoad);
@@ -506,4 +507,4 @@
console.error(msg);
};
- exports.Event = chrome.Event;
+ chrome.Event = Event;

Powered by Google App Engine
This is Rietveld 408576698