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() |
{ |