Index: chrome/renderer/resources/event_bindings.js |
diff --git a/chrome/renderer/resources/event_bindings.js b/chrome/renderer/resources/event_bindings.js |
deleted file mode 100644 |
index 6d7eea030def82f886b8b34d6930d31e93e34972..0000000000000000000000000000000000000000 |
--- a/chrome/renderer/resources/event_bindings.js |
+++ /dev/null |
@@ -1,253 +0,0 @@ |
-// Copyright (c) 2011 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-var chrome = chrome || {}; |
-(function () { |
- native function GetChromeHidden(); |
- native function AttachEvent(eventName); |
- native function DetachEvent(eventName); |
- native function GetExternalFileEntry(fileDefinition); |
- native function Print(); |
- |
- var chromeHidden = GetChromeHidden(); |
- |
- // Local implementation of JSON.parse & JSON.stringify that protect us |
- // from being clobbered by an extension. |
- chromeHidden.JSON = new (function() { |
- var $Object = Object; |
- var $Array = Array; |
- var $jsonStringify = JSON.stringify; |
- var $jsonParse = JSON.parse; |
- |
- this.stringify = function(thing) { |
- var customizedObjectToJSON = $Object.prototype.toJSON; |
- var customizedArrayToJSON = $Array.prototype.toJSON; |
- if (customizedObjectToJSON !== undefined) { |
- $Object.prototype.toJSON = null; |
- } |
- if (customizedArrayToJSON !== undefined) { |
- $Array.prototype.toJSON = null; |
- } |
- try { |
- return $jsonStringify(thing); |
- } finally { |
- if (customizedObjectToJSON !== undefined) { |
- $Object.prototype.toJSON = customizedObjectToJSON; |
- } |
- if (customizedArrayToJSON !== undefined) { |
- $Array.prototype.toJSON = customizedArrayToJSON; |
- } |
- } |
- }; |
- |
- this.parse = function(thing) { |
- return $jsonParse(thing); |
- }; |
- })(); |
- |
- // Event object. If opt_eventName is provided, this object represents |
- // the unique instance of that named event, and dispatching an event |
- // with that name will route through this object's listeners. |
- // |
- // Example: |
- // chrome.tabs.onChanged = new chrome.Event("tab-changed"); |
- // chrome.tabs.onChanged.addListener(function(data) { alert(data); }); |
- // chromeHidden.Event.dispatch("tab-changed", "hi"); |
- // will result in an alert dialog that says 'hi'. |
- chrome.Event = function(opt_eventName, opt_argSchemas) { |
- this.eventName_ = opt_eventName; |
- this.listeners_ = []; |
- |
- // Validate event parameters if we are in debug. |
- if (opt_argSchemas && |
- chromeHidden.validateCallbacks && |
- chromeHidden.validate) { |
- |
- this.validate_ = function(args) { |
- try { |
- chromeHidden.validate(args, opt_argSchemas); |
- } catch (exception) { |
- return "Event validation error during " + opt_eventName + " -- " + |
- exception; |
- } |
- }; |
- } |
- }; |
- |
- // A map of event names to the event object that is registered to that name. |
- var attachedNamedEvents = {}; |
- |
- // An array of all attached event objects, used for detaching on unload. |
- var allAttachedEvents = []; |
- |
- chromeHidden.Event = {}; |
- |
- // Dispatches a named event with the given JSON array, which is deserialized |
- // before dispatch. The JSON array is the list of arguments that will be |
- // sent with the event callback. |
- chromeHidden.Event.dispatchJSON = function(name, args) { |
- if (attachedNamedEvents[name]) { |
- if (args) { |
- args = chromeHidden.JSON.parse(args); |
- // TODO(zelidrag|aa): Remove this hack from here once we enable event |
- // JSON payload unpacking on C++ side. |
- if (name == "fileBrowserHandler.onExecute") { |
- if (args.length < 2) |
- return; |
- var fileList = args[1].entries; |
- if (!fileList) |
- return; |
- // The second parameter for this event's payload is file definition |
- // dictionary that we used to reconstruct File API's Entry instance |
- // here. |
- for (var i = 0; i < fileList.length; i++) |
- fileList[i] = GetExternalFileEntry(fileList[i]); |
- } |
- } |
- return attachedNamedEvents[name].dispatch.apply( |
- attachedNamedEvents[name], args); |
- } |
- }; |
- |
- // Dispatches a named event with the given arguments, supplied as an array. |
- chromeHidden.Event.dispatch = function(name, args) { |
- if (attachedNamedEvents[name]) { |
- attachedNamedEvents[name].dispatch.apply( |
- attachedNamedEvents[name], args); |
- } |
- }; |
- |
- // Test if a named event has any listeners. |
- chromeHidden.Event.hasListener = function(name) { |
- return (attachedNamedEvents[name] && |
- attachedNamedEvents[name].listeners_.length > 0); |
- }; |
- |
- // Registers a callback to be called when this event is dispatched. |
- chrome.Event.prototype.addListener = function(cb) { |
- if (this.listeners_.length == 0) { |
- this.attach_(); |
- } |
- this.listeners_.push(cb); |
- }; |
- |
- // Unregisters a callback. |
- chrome.Event.prototype.removeListener = function(cb) { |
- var idx = this.findListener_(cb); |
- if (idx == -1) { |
- return; |
- } |
- |
- this.listeners_.splice(idx, 1); |
- if (this.listeners_.length == 0) { |
- this.detach_(); |
- } |
- }; |
- |
- // Test if the given callback is registered for this event. |
- chrome.Event.prototype.hasListener = function(cb) { |
- return this.findListener_(cb) > -1; |
- }; |
- |
- // Test if any callbacks are registered for this event. |
- chrome.Event.prototype.hasListeners = function(cb) { |
- return this.listeners_.length > 0; |
- }; |
- |
- // Returns the index of the given callback if registered, or -1 if not |
- // found. |
- chrome.Event.prototype.findListener_ = function(cb) { |
- for (var i = 0; i < this.listeners_.length; i++) { |
- if (this.listeners_[i] == cb) { |
- return i; |
- } |
- } |
- |
- return -1; |
- }; |
- |
- // Dispatches this event object to all listeners, passing all supplied |
- // arguments to this function each listener. |
- chrome.Event.prototype.dispatch = function(varargs) { |
- var args = Array.prototype.slice.call(arguments); |
- if (this.validate_) { |
- var validationErrors = this.validate_(args); |
- if (validationErrors) { |
- return validationErrors; |
- } |
- } |
- for (var i = 0; i < this.listeners_.length; i++) { |
- try { |
- this.listeners_[i].apply(null, args); |
- } catch (e) { |
- console.error("Error in event handler for '" + this.eventName_ + |
- "': " + e.stack); |
- } |
- } |
- }; |
- |
- // Attaches this event object to its name. Only one object can have a given |
- // name. |
- chrome.Event.prototype.attach_ = function() { |
- AttachEvent(this.eventName_); |
- allAttachedEvents[allAttachedEvents.length] = this; |
- if (!this.eventName_) |
- return; |
- |
- if (attachedNamedEvents[this.eventName_]) { |
- throw new Error("chrome.Event '" + this.eventName_ + |
- "' is already attached."); |
- } |
- |
- attachedNamedEvents[this.eventName_] = this; |
- }; |
- |
- // Detaches this event object from its name. |
- chrome.Event.prototype.detach_ = function() { |
- var i = allAttachedEvents.indexOf(this); |
- if (i >= 0) |
- delete allAttachedEvents[i]; |
- DetachEvent(this.eventName_); |
- if (!this.eventName_) |
- return; |
- |
- if (!attachedNamedEvents[this.eventName_]) { |
- throw new Error("chrome.Event '" + this.eventName_ + |
- "' is not attached."); |
- } |
- |
- delete attachedNamedEvents[this.eventName_]; |
- }; |
- |
- chrome.Event.prototype.destroy_ = function() { |
- this.listeners_ = []; |
- this.validate_ = []; |
- this.detach_(); |
- }; |
- |
- // 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.dispatchOnLoad = function(extensionId, isExtensionProcess, |
- isIncognitoContext) { |
- chromeHidden.onLoad.dispatch(extensionId, isExtensionProcess, |
- isIncognitoContext); |
- }; |
- |
- chromeHidden.dispatchOnUnload = function() { |
- chromeHidden.onUnload.dispatch(); |
- for (var i = 0; i < allAttachedEvents.length; ++i) { |
- var event = allAttachedEvents[i]; |
- if (event) |
- event.detach_(); |
- } |
- }; |
- |
- chromeHidden.dispatchError = function(msg) { |
- console.error(msg); |
- }; |
-})(); |