 Chromium Code Reviews
 Chromium Code Reviews Issue 1268353005:
  [DevTools] Support JQuery event listeners  (Closed) 
  Base URL: https://chromium.googlesource.com/chromium/blink.git@master
    
  
    Issue 1268353005:
  [DevTools] Support JQuery event listeners  (Closed) 
  Base URL: https://chromium.googlesource.com/chromium/blink.git@master| 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..b6c0395362964c67c180b52d5871e4b5a39131fd | 
| --- /dev/null | 
| +++ b/Source/devtools/front_end/frameworks_support/EventListeners.js | 
| @@ -0,0 +1,112 @@ | 
| +/* | 
| + * 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() | 
| +{ | 
| 
yurys
2015/08/13 23:49:07
functionString = [...].join("\n");
 
kozy
2015/08/14 17:07:03
Done.
 | 
| + var functionString = "(function(){\n"; | 
| + functionString += WebInspector.FrameworksSupport.setupFrameworksEventListeners.toString() + "\nsetupFrameworksEventListeners();\n"; | 
| + functionString += WebInspector.FrameworksSupport.setupFrameworksEventHandlers.toString() + "\nsetupFrameworksEventHandlers();\n"; | 
| + functionString += "})();"; | 
| + return functionString; | 
| +} | 
| + | 
| +WebInspector.FrameworksSupport.setupFrameworksEventListeners = function setupFrameworksEventListeners() | 
| +{ | 
| + self.devtoolsFrameworksEventListeners = self.devtoolsFrameworksEventListeners || []; | 
| + if (self.devtoolsFrameworksEventListeners._hasDevtoolsWrapper) | 
| 
yurys
2015/08/13 23:49:07
Can we make front-end control that we evaluate thi
 
kozy
2015/08/14 17:07:03
Done.
 | 
| + return; | 
| + | 
| + self.devtoolsFrameworksEventListeners.push(jQueryEventListeners); | 
| + self.devtoolsFrameworksEventListeners._hasDevtoolsWrapper = true; | 
| + | 
| + /** | 
| + * @param {!Object} node | 
| + * @return {!Array<!{type: string, listener: function(), useCapture: boolean}>} | 
| + */ | 
| + function jQueryEventListeners(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.setupFrameworksEventHandlers = function setupFrameworksEventHandlers() | 
| +{ | 
| + self.devtoolsFrameworksEventHandlers = self.devtoolsFrameworksEventHandlers || []; | 
| + if (self.devtoolsFrameworksEventHandlers._hasDevtoolsWrapper) | 
| + return; | 
| + | 
| + self.devtoolsFrameworksEventHandlers.push(jQueryEventHandlers); | 
| + self.devtoolsFrameworksEventHandlers._hasDevtoolsWrapper = true; | 
| + | 
| + /** | 
| + * @param {!Object} node | 
| + * @return {!Array<function()>} | 
| + */ | 
| + function jQueryEventHandlers(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; | 
| + } | 
| +} |