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

Unified Diff: chrome/renderer/resources/event_bindings.js

Issue 7980055: Move bindings javascript into its own directory. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 3 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
« no previous file with comments | « chrome/renderer/renderer_resources.grd ('k') | chrome/renderer/resources/extension_apitest.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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);
- };
-})();
« no previous file with comments | « chrome/renderer/renderer_resources.grd ('k') | chrome/renderer/resources/extension_apitest.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698