Chromium Code Reviews| Index: Source/devtools/front_end/elements/EventListenersWidget.js |
| diff --git a/Source/devtools/front_end/elements/EventListenersWidget.js b/Source/devtools/front_end/elements/EventListenersWidget.js |
| index d704e0e2f9ab7323ae4f4cfda5d8dc0c70f20eee..277426f5f7d2ae57b06eb9ef767944f66d148a1d 100644 |
| --- a/Source/devtools/front_end/elements/EventListenersWidget.js |
| +++ b/Source/devtools/front_end/elements/EventListenersWidget.js |
| @@ -38,8 +38,14 @@ WebInspector.EventListenersWidget = function() |
| this._showForAncestorsSetting = WebInspector.settings.createSetting("showEventListenersForAncestors", true); |
| this._showForAncestorsSetting.addChangeListener(this.update.bind(this)); |
| + |
| + this._showFrameworkListenersSetting = WebInspector.settings.createSetting("_showFrameworkListeners", true); |
| + this._showFrameworkListenersSetting.addChangeListener(this._showFrameworkUserListenersChanged.bind(this)); |
| + |
| this._eventListenersView = new WebInspector.EventListenersView(this.element); |
| WebInspector.context.addFlavorChangeListener(WebInspector.DOMNode, this.update, this); |
| + |
| + this._frameworkSupportInitializedSymbol = Symbol("frameworkSupportInitialized"); |
| } |
| /** |
| @@ -53,6 +59,7 @@ WebInspector.EventListenersWidget.createSidebarWrapper = function() |
| refreshButton.addEventListener("click", widget.update.bind(widget)); |
| result.toolbar().appendToolbarItem(refreshButton); |
| result.toolbar().appendToolbarItem(new WebInspector.ToolbarCheckbox(WebInspector.UIString("Ancestors"), WebInspector.UIString("Show listeners on the ancestors"), widget._showForAncestorsSetting)); |
| + result.toolbar().appendToolbarItem(new WebInspector.ToolbarCheckbox(WebInspector.UIString("Framework user's listeners"), WebInspector.UIString("Show framework user event listeners"), widget._showFrameworkListenersSetting)); |
|
paulirish
2015/08/14 21:03:15
Checkbox: Framework listeners
Tooltip: Resolve eve
|
| return result; |
| } |
| @@ -79,6 +86,7 @@ WebInspector.EventListenersWidget.prototype = { |
| } |
| this._lastRequestedNode = node; |
| var selectedNodeOnly = !this._showForAncestorsSetting.get(); |
| + var context = this._nodeExecutionContext(node); |
| var promises = []; |
| var listenersView = this._eventListenersView; |
| promises.push(node.resolveToObjectPromise(WebInspector.EventListenersWidget._objectGroupName)); |
| @@ -88,16 +96,58 @@ WebInspector.EventListenersWidget.prototype = { |
| promises.push(currentNode.resolveToObjectPromise(WebInspector.EventListenersWidget._objectGroupName)); |
| currentNode = currentNode.parentNode; |
| } |
| - promises.push(this._windowObjectInNodeContext(node)); |
| + promises.push(this._windowObjectInContext(context)); |
| + } |
| + WebInspector.EventListenersFrameworkSupport.initializeOnContext(context).then(addEventListeners.bind(this)); |
| + |
| + /** |
| + * @this {!WebInspector.EventListenersWidget} |
| + */ |
| + function addEventListeners() |
| + { |
| + Promise.all(promises).then(this._eventListenersView.addObjects.bind(this._eventListenersView)).then(showResolvedHandlers.bind(this)); |
| + } |
| + |
| + /** |
| + * @this {!WebInspector.EventListenersWidget} |
| + */ |
| + function showResolvedHandlers() |
| + { |
| + this._showFrameworkUserListenersChanged(); |
| + finishCallback(); |
| } |
| - Promise.all(promises).then(this._eventListenersView.addObjects.bind(this._eventListenersView)).then(finishCallback.bind(this, undefined)); |
| + }, |
| + |
| + _showFrameworkUserListenersChanged: function() |
| + { |
| + this._eventListenersView.showFrameworkUserEventListeners(this._showFrameworkListenersSetting.get()); |
| }, |
| /** |
| * @param {!WebInspector.DOMNode} node |
| + * @return {?WebInspector.ExecutionContext} |
| + */ |
| + _nodeExecutionContext: function(node) |
| + { |
| + var executionContexts = node.target().runtimeModel.executionContexts(); |
| + var context = null; |
| + if (node.frameId()) { |
| + for (var i = 0; i < executionContexts.length; ++i) { |
| + var executionContext = executionContexts[i]; |
| + if (executionContext.frameId === node.frameId() && executionContext.isMainWorldContext) |
| + context = executionContext; |
| + } |
| + } else { |
| + context = executionContexts[0]; |
| + } |
| + return context; |
| + }, |
| + |
| + /** |
| + * @param {?WebInspector.ExecutionContext} context |
| * @return {!Promise<!WebInspector.RemoteObject>} |
| */ |
| - _windowObjectInNodeContext: function(node) |
| + _windowObjectInContext: function(context) |
| { |
| return new Promise(windowObjectInNodeContext); |
| @@ -107,24 +157,12 @@ WebInspector.EventListenersWidget.prototype = { |
| */ |
| function windowObjectInNodeContext(fulfill, reject) |
| { |
| - var executionContexts = node.target().runtimeModel.executionContexts(); |
| - var context = null; |
| - if (node.frameId()) { |
| - for (var i = 0; i < executionContexts.length; ++i) { |
| - var executionContext = executionContexts[i]; |
| - if (executionContext.frameId === node.frameId() && executionContext.isMainWorldContext) |
| - context = executionContext; |
| - } |
| - } else { |
| - context = executionContexts[0]; |
| - } |
| - context.evaluate("self", WebInspector.EventListenersWidget._objectGroupName, false, true, false, false, fulfill); |
| + if (context) |
| + context.evaluate("self", WebInspector.EventListenersWidget._objectGroupName, false, true, false, false, fulfill); |
| + else |
| + reject("Empty context"); |
| } |
| }, |
| - _eventListenersArrivedForTest: function() |
| - { |
| - }, |
| - |
| __proto__: WebInspector.ThrottledWidget.prototype |
| } |