Chromium Code Reviews| Index: Source/core/inspector/InjectedScriptSource.js |
| diff --git a/Source/core/inspector/InjectedScriptSource.js b/Source/core/inspector/InjectedScriptSource.js |
| index fa2c21aa111638bd91281808842d108ed9e12acf..3e023e690092508048800281b90ba75cc5f8dc31 100644 |
| --- a/Source/core/inspector/InjectedScriptSource.js |
| +++ b/Source/core/inspector/InjectedScriptSource.js |
| @@ -1136,6 +1136,78 @@ InjectedScript.prototype = { |
| setCustomObjectFormatterEnabled: function(enabled) |
| { |
| this._customObjectFormatterEnabled = enabled; |
| + }, |
| + |
| + /** |
| + * @param {!Node} node |
| + * @return {!Array.<!{type: string, listener: function(), useCapture: boolean}>} |
| + */ |
| + frameworkEventListeners: function(node) |
|
yurys
2015/08/12 21:56:03
It'd be nice if we can have this code outside of I
|
| + { |
| + var hasJQuery = (typeof inspectedGlobalObject.jQuery !== 'undefined') && inspectedGlobalObject.jQuery.fn; |
| + if (!hasJQuery) |
| + return []; |
| + var listeners = []; |
| + var data = inspectedGlobalObject.jQuery._data || inspectedGlobalObject.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 |
| + } |
| + push(listeners, listener); |
| + } |
| + } |
| + } |
| + } |
| + var entry = inspectedGlobalObject.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 |
| + } |
| + push(listeners, listener); |
| + } |
| + } |
| + } |
| + } |
| + return listeners; |
| + }, |
| + |
| + /** |
| + * @param {!Node} node |
| + * @return {!Set<function()>} |
| + */ |
| + frameworkEventHandlers: function(node) |
| + { |
| + var hasJQuery = (typeof inspectedGlobalObject.jQuery !== 'undefined') && inspectedGlobalObject.jQuery.fn; |
| + if (!hasJQuery) |
| + return new Set(); |
| + var handlers = []; |
| + var data = inspectedGlobalObject.jQuery._data || inspectedGlobalObject.jQuery.data; |
| + if (typeof data === "function") { |
| + var nodeData = data(node); |
| + if (typeof nodeData.handle === "function") { |
| + push(handlers, nodeData.handle); |
| + } |
| + } |
| + var entry = inspectedGlobalObject.jQuery(node)[0]; |
| + if (entry) { |
| + var entryHandle = entry["$handle"]; |
| + push(handlers, entryHandle); |
| + } |
| + return new Set(handlers); |
| } |
| } |
| @@ -1849,6 +1921,12 @@ CommandLineAPIImpl.prototype = { |
| var result = nullifyObjectProto(InjectedScriptHost.getEventListeners(node)); |
| if (!result) |
| return result; |
| + |
| + var jQueryListeners = injectedScript.frameworkEventListeners(node); |
| + for (var i = 0; i < jQueryListeners.length; ++i) { |
| + result[jQueryListeners[i].type] = result[jQueryListeners[i].type] || []; |
| + result[jQueryListeners[i].type].push(jQueryListeners[i]); |
| + } |
| /** @this {{type: string, listener: function(), useCapture: boolean}} */ |
| var removeFunc = function() |
| { |