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..36e9364452a76f9b2a344ae269eee8322274588e 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._isFrameworkSupportSetup = Symbol("isFrameworkEventListenerSupportSetup"); |
|
yurys
2015/08/14 17:24:21
_frameworkSupportInitializedSymbol
kozy
2015/08/14 18:15:45
Done.
|
| } |
| /** |
| @@ -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("Show framework user's listeners"), WebInspector.UIString("Show framework user event listeners"), widget._showFrameworkListenersSetting)); |
|
yurys
2015/08/14 17:24:21
Framework user listeners
kozy
2015/08/14 18:15:45
Done.
|
| return result; |
| } |
| @@ -90,7 +97,49 @@ WebInspector.EventListenersWidget.prototype = { |
| } |
| promises.push(this._windowObjectInNodeContext(node)); |
| } |
| - Promise.all(promises).then(this._eventListenersView.addObjects.bind(this._eventListenersView)).then(finishCallback.bind(this, undefined)); |
| + this._setupFrameworkSupport(node).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(); |
| + } |
| + }, |
| + |
| + _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; |
| }, |
| /** |
| @@ -99,31 +148,51 @@ WebInspector.EventListenersWidget.prototype = { |
| */ |
| _windowObjectInNodeContext: function(node) |
| { |
| - return new Promise(windowObjectInNodeContext); |
| + return new Promise(windowObjectInNodeContext.bind(this)); |
| /** |
| * @param {function(?)} fulfill |
| * @param {function(*)} reject |
| + * @this {!WebInspector.EventListenersWidget} |
| */ |
| 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); |
| + var context = this._nodeExecutionContext(node); |
| + if (context) |
| + context.evaluate("self", WebInspector.EventListenersWidget._objectGroupName, false, true, false, false, fulfill); |
| + else |
| + reject("Empty context"); |
| } |
| }, |
| - _eventListenersArrivedForTest: function() |
| + /** |
| + * @param {!WebInspector.DOMNode} node |
| + * @return {!Promise<void>} |
| + */ |
| + _setupFrameworkSupport: function(node) |
| { |
| + return new Promise(setupFrameworksSupport.bind(this)); |
| + |
| + /** |
| + * @param {function(?)} fulfill |
| + * @param {function(*)} reject |
| + * @this {!WebInspector.EventListenersWidget} |
| + */ |
| + function setupFrameworksSupport(fulfill, reject) |
| + { |
| + var context = this._nodeExecutionContext(node); |
| + var setupFunction = WebInspector.FrameworksSupport.eventListenersSetupFunction(); |
| + if (!context) { |
| + reject("Empty context"); |
| + return; |
| + } |
| + if (this._isFrameworkSupportSetup in context) { |
| + fulfill(undefined); |
|
yurys
2015/08/14 17:24:21
fulfil()
kozy
2015/08/14 18:15:46
Acknowledged.
|
| + return; |
| + } |
| + context[this._isFrameworkSupportSetup] = true; |
| + context.evaluate(setupFunction, WebInspector.EventListenersWidget._objectGroupName, false, false, true, false, fulfill); |
| + } |
| }, |
| __proto__: WebInspector.ThrottledWidget.prototype |