OLD | NEW |
---|---|
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 Loading... | |
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 } |
OLD | NEW |