| Index: Source/devtools/front_end/elements/EventListenersSidebarPane.js
|
| diff --git a/Source/devtools/front_end/elements/EventListenersSidebarPane.js b/Source/devtools/front_end/elements/EventListenersSidebarPane.js
|
| index d83367f582445fe62ef584e6dc265418c624b884..770e283c963483a269c1007ef34c4c5f5b31ae08 100644
|
| --- a/Source/devtools/front_end/elements/EventListenersSidebarPane.js
|
| +++ b/Source/devtools/front_end/elements/EventListenersSidebarPane.js
|
| @@ -59,7 +59,7 @@ WebInspector.EventListenersSidebarPane = function()
|
| this.settingsSelectElement.addEventListener("click", consumeEvent, false);
|
| this.settingsSelectElement.addEventListener("change", this._changeSetting.bind(this), false);
|
|
|
| - this._eventListenersView = new WebInspector.EventListenersView(this.bodyElement, WebInspector.EventListenersSidebarPane._objectGroupName);
|
| + this._eventListenersView = new WebInspector.EventListenersView(this.bodyElement);
|
| }
|
|
|
| WebInspector.EventListenersSidebarPane._objectGroupName = "event-listeners-panel";
|
| @@ -84,28 +84,69 @@ WebInspector.EventListenersSidebarPane.prototype = {
|
| return;
|
| }
|
|
|
| + this._lastRequestedNode = node;
|
| var selectedNodeOnly = "selected" === this._eventListenersFilterSetting.get();
|
| var promises = [];
|
| - promises.push(this._eventListenersView.addNodeEventListeners(node));
|
| + var listenersView = this._eventListenersView;
|
| + promises.push(node.resolveToObjectPromise(WebInspector.EventListenersSidebarPane._objectGroupName).then(listenersView.addObjectEventListeners.bind(listenersView)));
|
| if (!selectedNodeOnly) {
|
| var currentNode = node.parentNode;
|
| while (currentNode) {
|
| - promises.push(this._eventListenersView.addNodeEventListeners(currentNode));
|
| + promises.push(currentNode.resolveToObjectPromise(WebInspector.EventListenersSidebarPane._objectGroupName).then(listenersView.addObjectEventListeners.bind(listenersView)));
|
| currentNode = currentNode.parentNode;
|
| }
|
| + this._windowObjectInNodeContext(node).then(windowObjectCallback.bind(this));
|
| + } else {
|
| + Promise.all(promises).then(mycallback.bind(this));
|
| + }
|
| + /**
|
| + * @param {!WebInspector.RemoteObject} object
|
| + * @this {WebInspector.EventListenersSidebarPane}
|
| + */
|
| + function windowObjectCallback(object)
|
| + {
|
| + promises.push(this._eventListenersView.addObjectEventListeners(object));
|
| + Promise.all(promises).then(mycallback.bind(this));
|
| }
|
| - Promise.all(promises).then(mycallback.bind(this));
|
| /**
|
| * @this {WebInspector.EventListenersSidebarPane}
|
| */
|
| function mycallback()
|
| {
|
| - this._lastRequestedNode = node;
|
| this._eventListenersArivedForTest();
|
| finishCallback();
|
| }
|
| },
|
|
|
| + /**
|
| + * @param {!WebInspector.DOMNode} node
|
| + * @return {!Promise<!WebInspector.RemoteObject>} object
|
| + */
|
| + _windowObjectInNodeContext: function(node)
|
| + {
|
| + return new Promise(windowObjectInNodeContext);
|
| +
|
| + /**
|
| + * @param {function(?)} fulfill
|
| + * @param {function(*)} reject
|
| + */
|
| + 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.EventListenersSidebarPane._objectGroupName, false, true, false, false, fulfill);
|
| + }
|
| + },
|
| +
|
| _changeSetting: function()
|
| {
|
| var selectedOption = this.settingsSelectElement[this.settingsSelectElement.selectedIndex];
|
|
|