| Index: Source/devtools/front_end/frameworks_support/EventListeners.js
|
| diff --git a/Source/devtools/front_end/frameworks_support/EventListeners.js b/Source/devtools/front_end/frameworks_support/EventListeners.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..17a074e6f16b0efaef62f877e34442e16d2b62c2
|
| --- /dev/null
|
| +++ b/Source/devtools/front_end/frameworks_support/EventListeners.js
|
| @@ -0,0 +1,107 @@
|
| +/*
|
| + * Copyright 2015 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.
|
| + */
|
| +
|
| +WebInspector.FrameworksSupport = {}
|
| +
|
| +/**
|
| + * @return {string}
|
| + */
|
| +WebInspector.FrameworksSupport.eventListenersSetupFunction = function()
|
| +{
|
| + return ["(function(){",
|
| + WebInspector.FrameworksSupport.setupFrameworkUserEventListeners.toString(),
|
| + "setupFrameworkUserEventListeners();",
|
| + WebInspector.FrameworksSupport.setupFrameworkInternalEventHandlers.toString(),
|
| + "setupFrameworkInternalEventHandlers();",
|
| + "})();"].join("\n");
|
| +}
|
| +
|
| +WebInspector.FrameworksSupport.setupFrameworkUserEventListeners = function setupFrameworkUserEventListeners()
|
| +{
|
| + // We should call this function once per context.
|
| + self.devtoolsFrameworkUserEventListeners = self.devtoolsFrameworkUserEventListeners || [];
|
| + self.devtoolsFrameworkUserEventListeners.push(jQueryUserEventListeners);
|
| +
|
| + /**
|
| + * @param {!Object} node
|
| + * @return {!Array<!{type: string, listener: function(), useCapture: boolean}>}
|
| + */
|
| + function jQueryUserEventListeners(node)
|
| + {
|
| + if (!(node instanceof Node))
|
| + return [];
|
| + var hasJQuery = (typeof jQuery !== 'undefined') && jQuery.fn;
|
| + if (!hasJQuery)
|
| + return [];
|
| + var listeners = [];
|
| + var data = jQuery._data || jQuery.data;
|
| + if (typeof data === "function") {
|
| + var events = data(node, "events");
|
| + for (var type in events) {
|
| + for (var key in events[type]) {
|
| + var frameworkListener = events[type][key];
|
| + if (typeof frameworkListener === "object" || typeof frameworkListener === "function") {
|
| + var listener = {
|
| + handler: frameworkListener.handler || frameworkListener,
|
| + useCapture: true,
|
| + type: type
|
| + };
|
| + listeners.push(listener);
|
| + }
|
| + }
|
| + }
|
| + }
|
| + var entry = jQuery(node)[0];
|
| + if (entry) {
|
| + var entryEvents = entry["$events"];
|
| + for (var type in entryEvents) {
|
| + var events = entryEvents[type];
|
| + for (var key in events) {
|
| + if (typeof events[key] === "function") {
|
| + var listener = {
|
| + handler: events[key],
|
| + useCapture: true,
|
| + type: type
|
| + };
|
| + listeners.push(listener);
|
| + }
|
| + }
|
| + }
|
| + }
|
| + return listeners;
|
| + }
|
| +}
|
| +
|
| +WebInspector.FrameworksSupport.setupFrameworkInternalEventHandlers = function setupFrameworkInternalEventHandlers()
|
| +{
|
| + // We should call this function once per context.
|
| + self.devtoolsFrameworkInternalEventHandlers = self.devtoolsFrameworkInternalEventHandlers || [];
|
| + self.devtoolsFrameworkInternalEventHandlers.push(jQueryInternalEventHandlers);
|
| +
|
| + /**
|
| + * @param {!Object} node
|
| + * @return {!Array<function()>}
|
| + */
|
| + function jQueryInternalEventHandlers(node)
|
| + {
|
| + if (!(node instanceof Node))
|
| + return [];
|
| + var hasJQuery = (typeof jQuery !== 'undefined') && jQuery.fn;
|
| + if (!hasJQuery)
|
| + return [];
|
| + var handlers = [];
|
| + var data = jQuery._data || jQuery.data;
|
| + if (typeof data === "function") {
|
| + var nodeData = data(node);
|
| + if (typeof nodeData.handle === "function")
|
| + handlers.push(nodeData.handle);
|
| + }
|
| + var entry = jQuery(node)[0];
|
| + if (entry && entry["$handle"])
|
| + handlers.push(entry["$handle"]);
|
| + return handlers;
|
| + }
|
| +}
|
|
|