| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2007 Apple Inc. All rights reserved. | 2 * Copyright (C) 2007 Apple Inc. All rights reserved. |
| 3 * Copyright (C) 2009 Joseph Pecoraro | 3 * Copyright (C) 2009 Joseph Pecoraro |
| 4 * | 4 * |
| 5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
| 6 * modification, are permitted provided that the following conditions | 6 * modification, are permitted provided that the following conditions |
| 7 * are met: | 7 * are met: |
| 8 * | 8 * |
| 9 * 1. Redistributions of source code must retain the above copyright | 9 * 1. Redistributions of source code must retain the above copyright |
| 10 * notice, this list of conditions and the following disclaimer. | 10 * notice, this list of conditions and the following disclaimer. |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 52 | 52 |
| 53 this._eventListenersFilterSetting = WebInspector.settings.createSetting("eve
ntListenersFilter", "all"); | 53 this._eventListenersFilterSetting = WebInspector.settings.createSetting("eve
ntListenersFilter", "all"); |
| 54 var filter = this._eventListenersFilterSetting.get(); | 54 var filter = this._eventListenersFilterSetting.get(); |
| 55 if (filter === "all") | 55 if (filter === "all") |
| 56 this.settingsSelectElement[0].selected = true; | 56 this.settingsSelectElement[0].selected = true; |
| 57 else if (filter === "selected") | 57 else if (filter === "selected") |
| 58 this.settingsSelectElement[1].selected = true; | 58 this.settingsSelectElement[1].selected = true; |
| 59 this.settingsSelectElement.addEventListener("click", consumeEvent, false); | 59 this.settingsSelectElement.addEventListener("click", consumeEvent, false); |
| 60 this.settingsSelectElement.addEventListener("change", this._changeSetting.bi
nd(this), false); | 60 this.settingsSelectElement.addEventListener("change", this._changeSetting.bi
nd(this), false); |
| 61 | 61 |
| 62 this._eventListenersView = new WebInspector.EventListenersView(this.bodyElem
ent, WebInspector.EventListenersSidebarPane._objectGroupName); | 62 this._eventListenersView = new WebInspector.EventListenersView(this.bodyElem
ent); |
| 63 } | 63 } |
| 64 | 64 |
| 65 WebInspector.EventListenersSidebarPane._objectGroupName = "event-listeners-panel
"; | 65 WebInspector.EventListenersSidebarPane._objectGroupName = "event-listeners-panel
"; |
| 66 | 66 |
| 67 WebInspector.EventListenersSidebarPane.prototype = { | 67 WebInspector.EventListenersSidebarPane.prototype = { |
| 68 /** | 68 /** |
| 69 * @override | 69 * @override |
| 70 * @param {!WebInspector.Throttler.FinishCallback} finishCallback | 70 * @param {!WebInspector.Throttler.FinishCallback} finishCallback |
| 71 * @protected | 71 * @protected |
| 72 */ | 72 */ |
| 73 doUpdate: function(finishCallback) | 73 doUpdate: function(finishCallback) |
| 74 { | 74 { |
| 75 if (this._lastRequestedNode) { | 75 if (this._lastRequestedNode) { |
| 76 this._lastRequestedNode.target().runtimeAgent().releaseObjectGroup(W
ebInspector.EventListenersSidebarPane._objectGroupName); | 76 this._lastRequestedNode.target().runtimeAgent().releaseObjectGroup(W
ebInspector.EventListenersSidebarPane._objectGroupName); |
| 77 delete this._lastRequestedNode; | 77 delete this._lastRequestedNode; |
| 78 } | 78 } |
| 79 this._eventListenersView.reset(); | 79 this._eventListenersView.reset(); |
| 80 var node = this.node(); | 80 var node = this.node(); |
| 81 if (!node) { | 81 if (!node) { |
| 82 this._eventListenersArivedForTest(); | 82 this._eventListenersArivedForTest(); |
| 83 finishCallback(); | 83 finishCallback(); |
| 84 return; | 84 return; |
| 85 } | 85 } |
| 86 | 86 |
| 87 this._lastRequestedNode = node; |
| 87 var selectedNodeOnly = "selected" === this._eventListenersFilterSetting.
get(); | 88 var selectedNodeOnly = "selected" === this._eventListenersFilterSetting.
get(); |
| 88 var promises = []; | 89 var promises = []; |
| 89 promises.push(this._eventListenersView.addNodeEventListeners(node)); | 90 var listenersView = this._eventListenersView; |
| 91 promises.push(node.resolveToObjectPromise(WebInspector.EventListenersSid
ebarPane._objectGroupName).then(listenersView.addObjectEventListeners.bind(liste
nersView))); |
| 90 if (!selectedNodeOnly) { | 92 if (!selectedNodeOnly) { |
| 91 var currentNode = node.parentNode; | 93 var currentNode = node.parentNode; |
| 92 while (currentNode) { | 94 while (currentNode) { |
| 93 promises.push(this._eventListenersView.addNodeEventListeners(cur
rentNode)); | 95 promises.push(currentNode.resolveToObjectPromise(WebInspector.Ev
entListenersSidebarPane._objectGroupName).then(listenersView.addObjectEventListe
ners.bind(listenersView))); |
| 94 currentNode = currentNode.parentNode; | 96 currentNode = currentNode.parentNode; |
| 95 } | 97 } |
| 98 this._windowObjectInNodeContext(node).then(windowObjectCallback.bind
(this)); |
| 99 } else { |
| 100 Promise.all(promises).then(mycallback.bind(this)); |
| 96 } | 101 } |
| 97 Promise.all(promises).then(mycallback.bind(this)); | 102 /** |
| 103 * @param {!WebInspector.RemoteObject} object |
| 104 * @this {WebInspector.EventListenersSidebarPane} |
| 105 */ |
| 106 function windowObjectCallback(object) |
| 107 { |
| 108 promises.push(this._eventListenersView.addObjectEventListeners(objec
t)); |
| 109 Promise.all(promises).then(mycallback.bind(this)); |
| 110 } |
| 98 /** | 111 /** |
| 99 * @this {WebInspector.EventListenersSidebarPane} | 112 * @this {WebInspector.EventListenersSidebarPane} |
| 100 */ | 113 */ |
| 101 function mycallback() | 114 function mycallback() |
| 102 { | 115 { |
| 103 this._lastRequestedNode = node; | |
| 104 this._eventListenersArivedForTest(); | 116 this._eventListenersArivedForTest(); |
| 105 finishCallback(); | 117 finishCallback(); |
| 106 } | 118 } |
| 107 }, | 119 }, |
| 108 | 120 |
| 121 /** |
| 122 * @param {!WebInspector.DOMNode} node |
| 123 * @return {!Promise<!WebInspector.RemoteObject>} object |
| 124 */ |
| 125 _windowObjectInNodeContext: function(node) |
| 126 { |
| 127 return new Promise(windowObjectInNodeContext); |
| 128 |
| 129 /** |
| 130 * @param {function(?)} fulfill |
| 131 * @param {function(*)} reject |
| 132 */ |
| 133 function windowObjectInNodeContext(fulfill, reject) |
| 134 { |
| 135 var executionContexts = node.target().runtimeModel.executionContexts
(); |
| 136 var context = null; |
| 137 if (node.frameId()) { |
| 138 for (var i = 0; i < executionContexts.length; ++i) { |
| 139 var executionContext = executionContexts[i]; |
| 140 if (executionContext.frameId === node.frameId() && execution
Context.isMainWorldContext) |
| 141 context = executionContext; |
| 142 } |
| 143 } else { |
| 144 context = executionContexts[0]; |
| 145 } |
| 146 context.evaluate("self", WebInspector.EventListenersSidebarPane._obj
ectGroupName, false, true, false, false, fulfill); |
| 147 } |
| 148 }, |
| 149 |
| 109 _changeSetting: function() | 150 _changeSetting: function() |
| 110 { | 151 { |
| 111 var selectedOption = this.settingsSelectElement[this.settingsSelectEleme
nt.selectedIndex]; | 152 var selectedOption = this.settingsSelectElement[this.settingsSelectEleme
nt.selectedIndex]; |
| 112 this._eventListenersFilterSetting.set(selectedOption.value); | 153 this._eventListenersFilterSetting.set(selectedOption.value); |
| 113 this.update(); | 154 this.update(); |
| 114 }, | 155 }, |
| 115 | 156 |
| 116 _eventListenersArivedForTest: function() | 157 _eventListenersArivedForTest: function() |
| 117 { | 158 { |
| 118 }, | 159 }, |
| 119 | 160 |
| 120 __proto__: WebInspector.ElementsSidebarPane.prototype | 161 __proto__: WebInspector.ElementsSidebarPane.prototype |
| 121 } | 162 } |
| OLD | NEW |