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..2be005e560af4385ec4c29cb80d864b4c11a8569 100644 |
| --- a/Source/core/inspector/InjectedScriptSource.js |
| +++ b/Source/core/inspector/InjectedScriptSource.js |
| @@ -1136,6 +1136,66 @@ InjectedScript.prototype = { |
| setCustomObjectFormatterEnabled: function(enabled) |
| { |
| this._customObjectFormatterEnabled = enabled; |
| + }, |
| + |
| + /** |
| + * @param {string} objectId |
| + * @return {!Array.<!{type: string, listener: function(), useCapture: boolean}>} |
| + */ |
| + librariesEventListenersByObjectId: function(objectId) |
|
yurys
2015/08/11 21:10:24
Can you move id -> object resolution to C++ ?
kozy
2015/08/12 18:02:22
Done.
|
| + { |
| + var parsedObjectId = this._parseObjectId(objectId); |
| + var object = this._objectForId(parsedObjectId); |
| + if (this._subtype(object) === "node") |
| + return this.librariesEventListeners(object); |
| + return []; |
| + }, |
| + |
| + /** |
| + * @param {!Node} node |
| + * @return {!Array.<!{type: string, listener: function(), useCapture: boolean}>} |
| + */ |
| + librariesEventListeners: function(node) |
|
yurys
2015/08/11 21:10:24
frameworkEventListeners?
kozy
2015/08/12 18:02:22
Done.
|
| + { |
| + var hasJQuery = (typeof jQuery !== 'undefined') && jQuery.fn; |
| + if (!hasJQuery) |
| + return []; |
| + var listeners = []; |
| + var data = jQuery._data || jQuery.data; |
| + if (data) { |
|
yurys
2015/08/11 21:10:24
&& typeof data === "function" ?
kozy
2015/08/12 18:02:22
Done.
|
| + var events = data(node, "events"); |
| + for (var type in events) { |
| + for (var key in events[type]) { |
| + var listener = events[type][key]; |
| + if (typeof listener === "object" || typeof listener === "function") { |
| + var listener = { |
| + handler: listener.handler || listener, |
| + useCapture: true, |
| + type: type |
| + } |
| + listeners.push(listener); |
|
yurys
2015/08/11 21:10:24
push(listeners, listener); to avoid calling push o
kozy
2015/08/12 18:02:22
Done.
|
| + } |
| + } |
| + } |
| + } |
| + 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") { |
|
yurys
2015/08/11 21:10:24
wrong alignment
kozy
2015/08/12 18:02:22
Done.
|
| + var listener = { |
| + handler: events[key], |
| + useCapture: true, |
| + type: type |
| + } |
| + listeners.push(listener); |
| + } |
| + } |
| + } |
| + } |
| + return listeners; |
| } |
| } |
| @@ -1849,6 +1909,12 @@ CommandLineAPIImpl.prototype = { |
| var result = nullifyObjectProto(InjectedScriptHost.getEventListeners(node)); |
| if (!result) |
| return result; |
| + |
| + var jQueryListeners = injectedScript.librariesEventListeners(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() |
| { |