Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1881)

Side by Side Diff: Source/devtools/front_end/components/EventListenersView.js

Issue 1154703005: [DevTools] Added window listeners to EventListenersSidebar (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@extract-event-listeners-tree-outline
Patch Set: Test fixed Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 /** 5 /**
6 * @constructor 6 * @constructor
7 * @param {!Element} element 7 * @param {!Element} element
8 * @param {string} objectGroup
9 */ 8 */
10 WebInspector.EventListenersView = function(element, objectGroup) 9 WebInspector.EventListenersView = function(element)
11 { 10 {
12 this._element = element; 11 this._element = element;
13 this._objectGroup = objectGroup;
14 this._treeOutline = new TreeOutlineInShadow("event-listener-tree"); 12 this._treeOutline = new TreeOutlineInShadow("event-listener-tree");
15 this._treeOutline.registerRequiredCSS("components/objectValue.css"); 13 this._treeOutline.registerRequiredCSS("components/objectValue.css");
16 this._treeOutline.registerRequiredCSS("components/eventListenersView.css"); 14 this._treeOutline.registerRequiredCSS("components/eventListenersView.css");
17 this._treeOutline.setComparator(WebInspector.EventListenersTreeElement.compa rator); 15 this._treeOutline.setComparator(WebInspector.EventListenersTreeElement.compa rator);
18 this._treeOutline.element.classList.add("monospace"); 16 this._treeOutline.element.classList.add("monospace");
19 this._element.appendChild(this._treeOutline.element) 17 this._element.appendChild(this._treeOutline.element)
20 this._emptyHolder = createElementWithClass("div", "info"); 18 this._emptyHolder = createElementWithClass("div", "info");
21 this._emptyHolder.textContent = WebInspector.UIString("No Event Listeners"); 19 this._emptyHolder.textContent = WebInspector.UIString("No Event Listeners");
22 this._element.appendChild(this._emptyHolder); 20 this._element.appendChild(this._emptyHolder);
23 this._linkifier = new WebInspector.Linkifier(); 21 this._linkifier = new WebInspector.Linkifier();
24 /** @type {!Map<string, !WebInspector.EventListenersTreeElement>} */ 22 /** @type {!Map<string, !WebInspector.EventListenersTreeElement>} */
25 this._treeItemMap = new Map(); 23 this._treeItemMap = new Map();
26 } 24 }
27 25
28 WebInspector.EventListenersView.prototype = { 26 WebInspector.EventListenersView.prototype = {
29 /** 27 /**
30 * @param {!WebInspector.DOMNode} node 28 * @param {!WebInspector.RemoteObject} object
31 * @param {?Array<!WebInspector.EventListener>} eventListeners 29 * @param {?Array<!WebInspector.EventListener>} eventListeners
32 */ 30 */
33 _addNodeEventListeners: function(node, eventListeners) 31 _addObjectEventListeners: function(object, eventListeners)
34 { 32 {
35 if (!eventListeners) 33 if (!eventListeners)
36 return; 34 return;
37 for (var eventListener of eventListeners) { 35 for (var eventListener of eventListeners) {
38 var treeItem = this._getOrCreateTreeElementForType(eventListener.typ e()); 36 var treeItem = this._getOrCreateTreeElementForType(eventListener.typ e());
39 treeItem.addNodeEventListener(eventListener, node); 37 treeItem.addObjectEventListener(eventListener, object);
40 } 38 }
41 }, 39 },
42 40
43 /** 41 /**
44 * @param {string} type 42 * @param {string} type
45 * @return {!WebInspector.EventListenersTreeElement} 43 * @return {!WebInspector.EventListenersTreeElement}
46 */ 44 */
47 _getOrCreateTreeElementForType: function(type) 45 _getOrCreateTreeElementForType: function(type)
48 { 46 {
49 var treeItem = this._treeItemMap.get(type); 47 var treeItem = this._treeItemMap.get(type);
50 if (!treeItem) { 48 if (!treeItem) {
51 treeItem = new WebInspector.EventListenersTreeElement(type, this._li nkifier); 49 treeItem = new WebInspector.EventListenersTreeElement(type, this._li nkifier);
52 this._treeItemMap.set(type, treeItem); 50 this._treeItemMap.set(type, treeItem);
53 this._treeOutline.appendChild(treeItem); 51 this._treeOutline.appendChild(treeItem);
54 this._emptyHolder.remove(); 52 this._emptyHolder.remove();
55 } 53 }
56 return treeItem; 54 return treeItem;
57 }, 55 },
58 56
59 /** 57 /**
60 * @param {!WebInspector.DOMNode} node 58 * @param {!WebInspector.RemoteObject} object
61 * @return {!Promise} 59 * @return {!Promise<undefined>}
62 */ 60 */
63 addNodeEventListeners: function(node) 61 addObjectEventListeners: function(object)
64 { 62 {
65 return new Promise(addEventListeners.bind(this)); 63 return object.getEventListeners().then(this._addObjectEventListeners.bin d(this, object));
pfeldman 2015/05/25 16:25:16 eventListeners()
kozy 2015/05/25 18:03:30 Done.
66 /**
67 * @param {function(?)} fulfill
68 * @param {function(*)} reject
69 * @this {WebInspector.EventListenersView}
70 */
71 function addEventListeners(fulfill, reject)
72 {
73 node.resolveToObject(this._objectGroup, objectCallback.bind(this));
74 /**
75 * @param {?WebInspector.RemoteObject} object
76 * @this {WebInspector.EventListenersView}
77 */
78 function objectCallback(object)
79 {
80 if (object)
81 object.getEventListeners(listenersCallback.bind(this));
82 else
83 reject(undefined);
84 }
85 /**
86 * @param {?Array<!WebInspector.EventListener>} listeners
87 * @this {WebInspector.EventListenersView}
88 */
89 function listenersCallback(listeners)
90 {
91 this._addNodeEventListeners(node, listeners);
92 fulfill(undefined);
93 }
94 }
95 }, 64 },
96 65
97 reset: function() 66 reset: function()
98 { 67 {
99 this._treeItemMap = new Map(); 68 this._treeItemMap = new Map();
100 this._treeOutline.removeChildren(); 69 this._treeOutline.removeChildren();
101 this._element.appendChild(this._emptyHolder); 70 this._element.appendChild(this._emptyHolder);
102 this._linkifier.reset(); 71 this._linkifier.reset();
103 } 72 }
104 } 73 }
(...skipping 19 matching lines...) Expand all
124 */ 93 */
125 WebInspector.EventListenersTreeElement.comparator = function(element1, element2) { 94 WebInspector.EventListenersTreeElement.comparator = function(element1, element2) {
126 if (element1.title === element2.title) 95 if (element1.title === element2.title)
127 return 0; 96 return 0;
128 return element1.title > element2.title ? 1 : -1; 97 return element1.title > element2.title ? 1 : -1;
129 } 98 }
130 99
131 WebInspector.EventListenersTreeElement.prototype = { 100 WebInspector.EventListenersTreeElement.prototype = {
132 /** 101 /**
133 * @param {!WebInspector.EventListener} eventListener 102 * @param {!WebInspector.EventListener} eventListener
134 * @param {!WebInspector.DOMNode} node 103 * @param {!WebInspector.RemoteObject} object
135 */ 104 */
136 addNodeEventListener: function(eventListener, node) 105 addObjectEventListener: function(eventListener, object)
137 { 106 {
138 var treeElement = new WebInspector.NodeEventListenerBar(eventListener, n ode, this._linkifier); 107 var treeElement = new WebInspector.ObjectEventListenerBar(eventListener, object, this._linkifier);
139 this.appendChild(/** @type {!TreeElement} */ (treeElement)); 108 this.appendChild(/** @type {!TreeElement} */ (treeElement));
140 }, 109 },
141 110
142 __proto__: TreeElement.prototype 111 __proto__: TreeElement.prototype
143 } 112 }
144 113
145 /** 114 /**
146 * @constructor 115 * @constructor
147 * @extends {TreeElement} 116 * @extends {TreeElement}
148 * @param {!WebInspector.EventListener} eventListener 117 * @param {!WebInspector.EventListener} eventListener
118 * @param {!WebInspector.RemoteObject} object
149 * @param {!WebInspector.Linkifier} linkifier 119 * @param {!WebInspector.Linkifier} linkifier
150 */ 120 */
151 WebInspector.EventListenerBar = function(eventListener, linkifier) 121 WebInspector.ObjectEventListenerBar = function(eventListener, object, linkifier)
152 { 122 {
153 TreeElement.call(this, "", true); 123 TreeElement.call(this, "", true);
154 this._eventListener = eventListener; 124 this._eventListener = eventListener;
155 this.editable = false; 125 this.editable = false;
126 this._setTitle(object, linkifier);
156 } 127 }
157 128
158 WebInspector.EventListenerBar.prototype = { 129 WebInspector.ObjectEventListenerBar.prototype = {
159 onpopulate: function() 130 onpopulate: function()
160 { 131 {
161 var properties = []; 132 var properties = [];
162 var eventListener = this._eventListener; 133 var eventListener = this._eventListener;
163 var runtimeModel = eventListener.target().runtimeModel; 134 var runtimeModel = eventListener.target().runtimeModel;
164 properties.push(runtimeModel.createRemotePropertyFromPrimitiveValue("use Capture", eventListener.useCapture())); 135 properties.push(runtimeModel.createRemotePropertyFromPrimitiveValue("use Capture", eventListener.useCapture()));
165 if (typeof eventListener.handler() !== "undefined") 136 if (typeof eventListener.handler() !== "undefined")
166 properties.push(new WebInspector.RemoteObjectProperty("handler", eve ntListener.handler())); 137 properties.push(new WebInspector.RemoteObjectProperty("handler", eve ntListener.handler()));
167 WebInspector.ObjectPropertyTreeElement.populateWithProperties(this, prop erties, [], true, null); 138 WebInspector.ObjectPropertyTreeElement.populateWithProperties(this, prop erties, [], true, null);
168 }, 139 },
169 140
170 __proto__: TreeElement.prototype
171 }
172
173 /**
174 * @constructor
175 * @extends {WebInspector.EventListenerBar}
176 * @param {!WebInspector.EventListener} eventListener
177 * @param {!WebInspector.DOMNode} node
178 * @param {!WebInspector.Linkifier} linkifier
179 */
180 WebInspector.NodeEventListenerBar = function(eventListener, node, linkifier)
181 {
182 WebInspector.EventListenerBar.call(this, eventListener, linkifier);
183 this._setNodeTitle(node, linkifier);
184 }
185
186 WebInspector.NodeEventListenerBar.prototype = {
187 /** 141 /**
188 * @param {!WebInspector.DOMNode} node 142 * @param {!WebInspector.RemoteObject} object
189 * @param {!WebInspector.Linkifier} linkifier 143 * @param {!WebInspector.Linkifier} linkifier
190 */ 144 */
191 _setNodeTitle: function(node, linkifier) 145 _setTitle: function(object, linkifier)
192 { 146 {
193 var title = this.listItemElement.createChild("span"); 147 var title = this.listItemElement.createChild("span");
194 var subtitle = this.listItemElement.createChild("span", "event-listener- tree-subtitle"); 148 var subtitle = this.listItemElement.createChild("span", "event-listener- tree-subtitle");
195 subtitle.appendChild(linkifier.linkifyRawLocation(this._eventListener.lo cation(), this._eventListener.sourceName())); 149 subtitle.appendChild(linkifier.linkifyRawLocation(this._eventListener.lo cation(), this._eventListener.sourceName()));
196 if (node.nodeType() === Node.DOCUMENT_NODE) { 150 title.appendChild(WebInspector.ObjectPropertiesSection.createValueElemen t(object, false));
197 title.textContent = "document";
198 return;
199 }
200 if (this._eventListener.isSelected) {
201 title.textContent = WebInspector.DOMPresentationUtils.simpleSelector (node);
202 return;
203 }
204 title.appendChild(WebInspector.DOMPresentationUtils.linkifyNodeReference (node));
205 }, 151 },
206 152
207 __proto__: WebInspector.EventListenerBar.prototype 153 __proto__: TreeElement.prototype
208 } 154 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698