Diff
Modified: trunk/LayoutTests/ChangeLog (111548 => 111549)
--- trunk/LayoutTests/ChangeLog 2012-03-21 15:48:46 UTC (rev 111548)
+++ trunk/LayoutTests/ChangeLog 2012-03-21 16:09:40 UTC (rev 111549)
@@ -1,3 +1,17 @@
+2012-03-21 Yury Semikhatsky <[email protected]>
+
+ Web Inspector: event listener section doesn't show all event listeners of the element ancestors
+ https://bugs.webkit.org/show_bug.cgi?id=81782
+
+ Reviewed by Pavel Feldman.
+
+ * http/tests/inspector/elements-test.js:
+ (initialize_ElementTest.InspectorTest.expandSelectedElementEventListenersEventBars):
+ (initialize_ElementTest.InspectorTest.dumpSelectedElementEventListeners):
+ * inspector/elements/event-listener-sidebar-expected.txt:
+ * inspector/elements/event-listener-sidebar.html:
+ * platform/chromium/inspector/elements/event-listener-sidebar-expected.txt:
+
2012-03-21 hermwong <[email protected]>
Convert some fast/regions pixel tests to reftests
Modified: trunk/LayoutTests/http/tests/inspector/elements-test.js (111548 => 111549)
--- trunk/LayoutTests/http/tests/inspector/elements-test.js 2012-03-21 15:48:46 UTC (rev 111548)
+++ trunk/LayoutTests/http/tests/inspector/elements-test.js 2012-03-21 16:09:40 UTC (rev 111549)
@@ -192,7 +192,7 @@
{
var eventListenerSections = WebInspector.panels.elements.sidebarPanes.eventListeners.sections;
for (var i = 0; i < eventListenerSections.length; ++i) {
- var eventBarChildren = eventListenerSections[i].eventBars.children;
+ var eventBarChildren = eventListenerSections[i]._eventBars.children;
for (var j = 0; j < eventBarChildren.length; ++j)
eventBarChildren[j]._section.expand();
}
@@ -214,7 +214,7 @@
var eventType = section._title;
InspectorTest.addResult("");
InspectorTest.addResult("======== " + eventType + " ========");
- var eventBarChildren = section.eventBars.children;
+ var eventBarChildren = section._eventBars.children;
for (var j = 0; j < eventBarChildren.length; ++j) {
var objectPropertiesSection = eventBarChildren[j]._section;
InspectorTest.dumpObjectPropertySection(objectPropertiesSection, {
Modified: trunk/LayoutTests/inspector/elements/event-listener-sidebar-expected.txt (111548 => 111549)
--- trunk/LayoutTests/inspector/elements/event-listener-sidebar-expected.txt 2012-03-21 15:48:46 UTC (rev 111548)
+++ trunk/LayoutTests/inspector/elements/event-listener-sidebar-expected.txt 2012-03-21 16:09:40 UTC (rev 111549)
@@ -52,6 +52,16 @@
type: click
useCapture: false
+======== custom event ========
+[expanded] body event-listener-sidebar.html:10
+ isAttribute: false
+ lineNumber: 10
+ listenerBody: function f() {}
+ node: HTMLBodyElement
+ sourceName: [clipped-for-test]/LayoutTests/inspector/elements/event-listener-sidebar.html
+ type: custom event
+ useCapture: true
+
======== hover ========
[expanded] button#node event-listener-sidebar.html:14
isAttribute: false
@@ -62,3 +72,32 @@
type: hover
useCapture: false
+======== click ========
+[expanded] document event-listener-sidebar.html:19
+ isAttribute: false
+ lineNumber: 19
+ listenerBody: function (event) { console.log("click - document - capturing"); }
+ node: HTMLDocument
+ sourceName: [clipped-for-test]/LayoutTests/inspector/elements/event-listener-sidebar.html
+ type: click
+ useCapture: true
+[expanded] document event-listener-sidebar.html:6
+ isAttribute: true
+ lineNumber: 6
+ listenerBody: function documentClickHandler(event) { console.log("click - document - attribute"); }
+ node: HTMLDocument
+ sourceName: [clipped-for-test]/LayoutTests/inspector/elements/event-listener-sidebar.html
+ type: click
+ useCapture: false
+
+======== custom event ========
+[expanded] body event-listener-sidebar.html:10
+ isAttribute: false
+ lineNumber: 10
+ listenerBody: function f() {}
+ node: HTMLBodyElement
+ sourceName: [clipped-for-test]/LayoutTests/inspector/elements/event-listener-sidebar.html
+ type: custom event
+ useCapture: true
+Listeners for selected node only(should be no listeners):
+
Modified: trunk/LayoutTests/inspector/elements/event-listener-sidebar.html (111548 => 111549)
--- trunk/LayoutTests/inspector/elements/event-listener-sidebar.html 2012-03-21 15:48:46 UTC (rev 111548)
+++ trunk/LayoutTests/inspector/elements/event-listener-sidebar.html 2012-03-21 16:09:40 UTC (rev 111549)
@@ -19,14 +19,37 @@
document.addEventListener("click", function(event) { console.log("click - document - capturing"); }, true);
document.addEventListener("mousedown", f, false);
document.removeEventListener("mousedown", f, false);
+
+ document.body.addEventListener("custom event", f, true);
}
function test()
{
- InspectorTest.selectNodeWithId("node", callback);
+ WebInspector.settings.eventListenersFilter.set("all");
+ InspectorTest.selectNodeWithId("node", step1);
- function callback()
+ function step1()
{
+ InspectorTest.expandAndDumpSelectedElementEventListeners(step2);
+ }
+ function step2()
+ {
+ InspectorTest.selectNodeWithId("node-without-listeners", step3);
+ }
+ function step3()
+ {
+ InspectorTest.expandAndDumpSelectedElementEventListeners(step4);
+ }
+ function step4()
+ {
+ var eventListenersPane = WebInspector.panels.elements.sidebarPanes.eventListeners;
+ eventListenersPane.settingsSelectElement.selectedIndex = 1;
+ eventListenersPane._changeSetting();
+ InspectorTest.addResult("Listeners for selected node only(should be no listeners):");
+ InspectorTest.expandAndDumpSelectedElementEventListeners(step5);
+ }
+ function step5()
+ {
InspectorTest.expandAndDumpSelectedElementEventListeners(InspectorTest.completeTest);
}
}
@@ -46,5 +69,7 @@
<button id="node">Inspect Me</button>
+<div id="node-without-listeners"></div>
+
</body>
</html>
Modified: trunk/LayoutTests/platform/chromium/inspector/elements/event-listener-sidebar-expected.txt (111548 => 111549)
--- trunk/LayoutTests/platform/chromium/inspector/elements/event-listener-sidebar-expected.txt 2012-03-21 15:48:46 UTC (rev 111548)
+++ trunk/LayoutTests/platform/chromium/inspector/elements/event-listener-sidebar-expected.txt 2012-03-21 16:09:40 UTC (rev 111549)
@@ -52,6 +52,16 @@
type: click
useCapture: false
+======== custom event ========
+[expanded] body event-listener-sidebar.html:10
+ isAttribute: false
+ lineNumber: 10
+ listenerBody: function f() {}
+ node: HTMLBodyElement
+ sourceName: [clipped-for-test]/LayoutTests/inspector/elements/event-listener-sidebar.html
+ type: custom event
+ useCapture: true
+
======== hover ========
[expanded] button#node event-listener-sidebar.html:14
isAttribute: false
@@ -62,3 +72,32 @@
type: hover
useCapture: false
+======== click ========
+[expanded] document event-listener-sidebar.html:19
+ isAttribute: false
+ lineNumber: 19
+ listenerBody: function (event) { console.log("click - document - capturing"); }
+ node: HTMLDocument
+ sourceName: [clipped-for-test]/LayoutTests/inspector/elements/event-listener-sidebar.html
+ type: click
+ useCapture: true
+[expanded] document event-listener-sidebar.html:6
+ isAttribute: true
+ lineNumber: 6
+ listenerBody: function documentClickHandler(event) { console.log("click - document - attribute"); }
+ node: HTMLDocument
+ sourceName: [clipped-for-test]/LayoutTests/inspector/elements/event-listener-sidebar.html
+ type: click
+ useCapture: false
+
+======== custom event ========
+[expanded] body event-listener-sidebar.html:10
+ isAttribute: false
+ lineNumber: 10
+ listenerBody: function f() {}
+ node: HTMLBodyElement
+ sourceName: [clipped-for-test]/LayoutTests/inspector/elements/event-listener-sidebar.html
+ type: custom event
+ useCapture: true
+Listeners for selected node only(should be no listeners):
+
Modified: trunk/Source/WebCore/ChangeLog (111548 => 111549)
--- trunk/Source/WebCore/ChangeLog 2012-03-21 15:48:46 UTC (rev 111548)
+++ trunk/Source/WebCore/ChangeLog 2012-03-21 16:09:40 UTC (rev 111549)
@@ -1,3 +1,20 @@
+2012-03-21 Yury Semikhatsky <[email protected]>
+
+ Web Inspector: event listener section doesn't show all event listeners of the element ancestors
+ https://bugs.webkit.org/show_bug.cgi?id=81782
+
+ Event listeners section now contains all event listeners for the selected
+ element ancestors chain (in case option "All Nodes" is selected).
+
+ Reviewed by Pavel Feldman.
+
+ * inspector/InspectorDOMAgent.cpp:
+ (WebCore::InspectorDOMAgent::getEventListenersForNode):
+ * inspector/front-end/EventListenersSidebarPane.js:
+ (WebInspector.EventListenersSidebarPane.prototype.update.callback):
+ (WebInspector.EventListenersSidebarPane.prototype.update):
+ (WebInspector.EventListenersSidebarPane.prototype):
+
2012-03-21 Ilya Tikhonovsky <[email protected]>
Web Inspector: HeapSnapshot: move all builders and calculation calls to HeapSnapshot._init function.
Modified: trunk/Source/WebCore/inspector/InspectorDOMAgent.cpp (111548 => 111549)
--- trunk/Source/WebCore/inspector/InspectorDOMAgent.cpp 2012-03-21 15:48:46 UTC (rev 111548)
+++ trunk/Source/WebCore/inspector/InspectorDOMAgent.cpp 2012-03-21 16:09:40 UTC (rev 111549)
@@ -725,15 +725,11 @@
void InspectorDOMAgent::getEventListenersForNode(ErrorString* errorString, int nodeId, RefPtr<InspectorArray>& listenersArray)
{
- Node* node = nodeForId(nodeId);
- if (!node) {
- *errorString = "No such node";
+ Node* node = assertNode(errorString, nodeId);
+ if (!node)
return;
- }
Vector<EventListenerInfo> eventInformation;
getEventListeners(node, eventInformation, true);
- if (eventInformation.isEmpty())
- return;
// Get Capturing Listeners (in this order)
size_t eventInformationLength = eventInformation.size();
@@ -761,42 +757,28 @@
void InspectorDOMAgent::getEventListeners(Node* node, Vector<EventListenerInfo>& eventInformation, bool includeAncestors)
{
- EventTargetData* d;
-
- // Quick break if no listeners at all
- if (!(d = node->eventTargetData()))
- return;
-
- // Get the list of event types this Node is concerned with
- Vector<AtomicString> eventTypes = d->eventListenerMap.eventTypes();
-
- // Quick break if no useful listeners
- size_t eventTypesLength = eventTypes.size();
- if (!eventTypesLength)
- return;
-
+ // The Node's Ancestors including self.
+ Vector<Node*> ancestors;
+ // Push this node as the firs element.
+ ancestors.append(node);
if (includeAncestors) {
- // The Node's Ancestors (not including self)
- Vector<ContainerNode*> ancestors;
for (ContainerNode* ancestor = node->parentOrHostNode(); ancestor; ancestor = ancestor->parentOrHostNode())
ancestors.append(ancestor);
+ }
- // Nodes and their Listeners for the concerned event types (order is top to bottom)
- for (size_t i = ancestors.size(); i; --i) {
- ContainerNode* ancestor = ancestors[i - 1];
- for (size_t j = 0; j < eventTypesLength; ++j) {
- AtomicString& type = eventTypes[j];
- if (ancestor->hasEventListeners(type))
- eventInformation.append(EventListenerInfo(ancestor, type, ancestor->getEventListeners(type)));
- }
+ // Nodes and their Listeners for the concerned event types (order is top to bottom)
+ for (size_t i = ancestors.size(); i; --i) {
+ Node* ancestor = ancestors[i - 1];
+ EventTargetData* d = ancestor->eventTargetData();
+ if (!d)
+ continue;
+ // Get the list of event types this Node is concerned with
+ Vector<AtomicString> eventTypes = d->eventListenerMap.eventTypes();
+ for (size_t j = 0; j < eventTypes.size(); ++j) {
+ AtomicString& type = eventTypes[j];
+ eventInformation.append(EventListenerInfo(ancestor, type, ancestor->getEventListeners(type)));
}
}
-
- // Insert the Current Node at the end of that list (last in capturing, first in bubbling)
- for (size_t i = 0; i < eventTypesLength; ++i) {
- const AtomicString& type = eventTypes[i];
- eventInformation.append(EventListenerInfo(node, type, node->getEventListeners(type)));
- }
}
void InspectorDOMAgent::performSearch(ErrorString*, const String& whitespaceTrimmedQuery, String* searchId, int* resultCount)
Modified: trunk/Source/WebCore/inspector/front-end/EventListenersSidebarPane.js (111548 => 111549)
--- trunk/Source/WebCore/inspector/front-end/EventListenersSidebarPane.js 2012-03-21 15:48:46 UTC (rev 111548)
+++ trunk/Source/WebCore/inspector/front-end/EventListenersSidebarPane.js 2012-03-21 16:09:40 UTC (rev 111549)
@@ -81,10 +81,13 @@
if (error)
return;
+ var selectedNodeOnly = "selected" === WebInspector.settings.eventListenersFilter.get();
var sectionNames = [];
var sectionMap = {};
for (var i = 0; i < eventListeners.length; ++i) {
var eventListener = eventListeners[i];
+ if (selectedNodeOnly && (node.id !== eventListener.nodeId))
+ continue;
eventListener.node = WebInspector.domAgent.nodeForId(eventListener.nodeId);
delete eventListener.nodeId; // no longer needed
if (/^function _inspectorCommandLineAPI_logEvent\(/.test(eventListener.handlerBody.toString()))
@@ -111,22 +114,25 @@
sectionNames.sort();
for (var i = 0; i < sectionNames.length; ++i) {
var section = sectionMap[sectionNames[i]];
- section.update();
body.appendChild(section.element);
}
}
if (node)
node.eventListeners(callback);
+ this._selectedNode = node;
},
- _changeSetting: function(event)
+ willHide: function()
{
+ delete this._selectedNode;
+ },
+
+ _changeSetting: function()
+ {
var selectedOption = this.settingsSelectElement[this.settingsSelectElement.selectedIndex];
WebInspector.settings.eventListenersFilter.set(selectedOption.value);
-
- for (var i = 0; i < this.sections.length; ++i)
- this.sections[i].update();
+ this.update(this._selectedNode);
}
}
@@ -148,37 +154,16 @@
delete this.propertiesElement;
delete this.propertiesTreeOutline;
- this.eventBars = document.createElement("div");
- this.eventBars.className = "event-bars";
- this.element.appendChild(this.eventBars);
+ this._eventBars = document.createElement("div");
+ this._eventBars.className = "event-bars";
+ this.element.appendChild(this._eventBars);
}
WebInspector.EventListenersSection.prototype = {
- update: function()
- {
- // A Filtered Array simplifies when to create connectors
- var filteredEventListeners = this.eventListeners;
- if (WebInspector.settings.eventListenersFilter.get() == "selected") {
- filteredEventListeners = [];
- for (var i = 0; i < this.eventListeners.length; ++i) {
- var eventListener = this.eventListeners[i];
- if (eventListener.node.id === this._nodeId)
- filteredEventListeners.push(eventListener);
- }
- }
-
- this.eventBars.removeChildren();
- var length = filteredEventListeners.length;
- for (var i = 0; i < length; ++i) {
- var eventListener = filteredEventListeners[i];
- var eventListenerBar = new WebInspector.EventListenerBar(eventListener, this._nodeId, this._linkifier);
- this.eventBars.appendChild(eventListenerBar.element);
- }
- },
-
addListener: function(eventListener)
{
- this.eventListeners.push(eventListener);
+ var eventListenerBar = new WebInspector.EventListenerBar(eventListener, this._nodeId, this._linkifier);
+ this._eventBars.appendChild(eventListenerBar.element);
}
}