Title: [106638] trunk
Revision
106638
Author
[email protected]
Date
2012-02-03 01:28:00 -0800 (Fri, 03 Feb 2012)

Log Message

Web Inspector: preserve elements panel selection upon node drag'n'drop
https://bugs.webkit.org/show_bug.cgi?id=77722

Reviewed by Vsevolod Vlasov.

Source/WebCore:

Test: inspector/elements/move-node.html

* inspector/front-end/DOMAgent.js:
(WebInspector.DOMAgent.prototype._markRevision):
* inspector/front-end/ElementsTreeOutline.js:
(WebInspector.ElementsTreeOutline.prototype._ondrop):
(WebInspector.ElementsTreeOutline.prototype._doMove.callback):
(WebInspector.ElementsTreeOutline.prototype._doMove):

LayoutTests:

* inspector/elements/move-node-expected.txt: Added.
* inspector/elements/move-node.html: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (106637 => 106638)


--- trunk/LayoutTests/ChangeLog	2012-02-03 08:30:59 UTC (rev 106637)
+++ trunk/LayoutTests/ChangeLog	2012-02-03 09:28:00 UTC (rev 106638)
@@ -1,3 +1,13 @@
+2012-02-03  Pavel Feldman  <[email protected]>
+
+        Web Inspector: preserve elements panel selection upon node drag'n'drop
+        https://bugs.webkit.org/show_bug.cgi?id=77722
+
+        Reviewed by Vsevolod Vlasov.
+
+        * inspector/elements/move-node-expected.txt: Added.
+        * inspector/elements/move-node.html: Added.
+
 2012-02-03  Shinya Kawanaka  <[email protected]>
 
         Reimplement DETAILS and SUMMARY using selector query.

Modified: trunk/LayoutTests/inspector/elements/edit-dom-actions-expected.txt (106637 => 106638)


--- trunk/LayoutTests/inspector/elements/edit-dom-actions-expected.txt	2012-02-03 08:30:59 UTC (rev 106637)
+++ trunk/LayoutTests/inspector/elements/edit-dom-actions-expected.txt	2012-02-03 09:28:00 UTC (rev 106638)
@@ -23,7 +23,7 @@
   </div>
 ==== after ====
 - <div id="testSetNodeName">
-      <span id="node-to-set-name"></span>
+      <span id="node-to-set-name" ></span>
   </div>
 
 Running: testSetNodeNameInput
@@ -33,7 +33,7 @@
   </div>
 ==== after ====
 - <div id="testSetNodeNameInput">
-      <input id="node-to-set-name-input">
+      <input id="node-to-set-name-input" >
   </div>
 
 Running: testSetNodeValue

Added: trunk/LayoutTests/inspector/elements/move-node-expected.txt (0 => 106638)


--- trunk/LayoutTests/inspector/elements/move-node-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/inspector/elements/move-node-expected.txt	2012-02-03 09:28:00 UTC (rev 106638)
@@ -0,0 +1,22 @@
+Tests elements drag and drop operation internals, verifies post-move selection.
+
+
+Running: testDumpInitial
+========= Original ========
+- <div id="container">
+      <div id="child1"></div>
+      <div id="child2"></div>
+      <div id="child3"></div>
+      <div id="child4"></div>
+  </div>
+
+Running: testDragAndDrop
+===== Moved child2 =====
+- <div id="container">
+      <div id="child1"></div>
+      <div id="child3"></div>
+      <div id="child2"></div>
+      <div id="child4"></div>
+  </div>
+Selection: div#child2
+
Property changes on: trunk/LayoutTests/inspector/elements/move-node-expected.txt
___________________________________________________________________

Added: svn:eol-style

Added: trunk/LayoutTests/inspector/elements/move-node.html (0 => 106638)


--- trunk/LayoutTests/inspector/elements/move-node.html	                        (rev 0)
+++ trunk/LayoutTests/inspector/elements/move-node.html	2012-02-03 09:28:00 UTC (rev 106638)
@@ -0,0 +1,61 @@
+<html>
+<head>
+<script src=""
+<script src=""
+<script>
+
+function test()
+{
+    var containerNode;
+
+    InspectorTest.runTestSuite([
+        function testDumpInitial(next)
+        {
+            function callback(node)
+            {
+                containerNode = InspectorTest.expandedNodeWithId("container");
+
+                InspectorTest.addResult("========= Original ========");
+                InspectorTest.dumpElementsTree(containerNode);
+                next();
+            }
+            InspectorTest.expandElementsTree(callback);
+        },
+
+        function testDragAndDrop(next)
+        {
+            var treeOutline = WebInspector.panels.elements.treeOutline;
+            treeOutline.addEventListener(WebInspector.ElementsTreeOutline.Events.SelectedNodeChanged, selectionChanged);
+
+            function selectionChanged()
+            {
+                InspectorTest.addResult("===== Moved child2 =====");
+                InspectorTest.dumpElementsTree(containerNode);
+                InspectorTest.addResult("Selection: " + treeOutline.selectedDOMNode().appropriateSelectorFor());
+                next();
+            }
+
+            treeOutline._nodeBeingDragged = InspectorTest.expandedNodeWithId("child2");
+            var treeElementToDropOn = treeOutline.getCachedTreeElement(InspectorTest.expandedNodeWithId("child4"));
+            treeOutline._doMove(treeElementToDropOn);
+        }
+    ]);
+}
+
+</script>
+</head>
+
+<body _onload_="runTest()">
+<p>
+Tests elements drag and drop operation internals, verifies post-move selection.
+</p>
+
+<div id="container">
+    <div id="child1"></div>
+    <div id="child2"></div>
+    <div id="child3"></div>
+    <div id="child4"></div>
+</div>
+
+</body>
+</html>
Property changes on: trunk/LayoutTests/inspector/elements/move-node.html
___________________________________________________________________

Added: svn:eol-style

Modified: trunk/Source/WebCore/ChangeLog (106637 => 106638)


--- trunk/Source/WebCore/ChangeLog	2012-02-03 08:30:59 UTC (rev 106637)
+++ trunk/Source/WebCore/ChangeLog	2012-02-03 09:28:00 UTC (rev 106638)
@@ -1,3 +1,19 @@
+2012-02-03  Pavel Feldman  <[email protected]>
+
+        Web Inspector: preserve elements panel selection upon node drag'n'drop
+        https://bugs.webkit.org/show_bug.cgi?id=77722
+
+        Reviewed by Vsevolod Vlasov.
+
+        Test: inspector/elements/move-node.html
+
+        * inspector/front-end/DOMAgent.js:
+        (WebInspector.DOMAgent.prototype._markRevision):
+        * inspector/front-end/ElementsTreeOutline.js:
+        (WebInspector.ElementsTreeOutline.prototype._ondrop):
+        (WebInspector.ElementsTreeOutline.prototype._doMove.callback):
+        (WebInspector.ElementsTreeOutline.prototype._doMove):
+
 2012-02-03  Shinya Kawanaka  <[email protected]>
 
        Reimplement DETAILS and SUMMARY using selector query.

Modified: trunk/Source/WebCore/inspector/front-end/DOMAgent.js (106637 => 106638)


--- trunk/Source/WebCore/inspector/front-end/DOMAgent.js	2012-02-03 08:30:59 UTC (rev 106637)
+++ trunk/Source/WebCore/inspector/front-end/DOMAgent.js	2012-02-03 09:28:00 UTC (rev 106638)
@@ -978,7 +978,7 @@
         function wrapperFunction(error)
         {
             if (callback)
-                callback(error);
+                callback.apply(this, arguments);
             if (error || !WebInspector.experimentsSettings.freeFlowDOMEditing.isEnabled())
                 return;
             if (this._captureDOMTimer)

Modified: trunk/Source/WebCore/inspector/front-end/ElementsTreeOutline.js (106637 => 106638)


--- trunk/Source/WebCore/inspector/front-end/ElementsTreeOutline.js	2012-02-03 08:30:59 UTC (rev 106637)
+++ trunk/Source/WebCore/inspector/front-end/ElementsTreeOutline.js	2012-02-03 09:28:00 UTC (rev 106638)
@@ -386,32 +386,40 @@
     {
         event.preventDefault();
         var treeElement = this._treeElementFromEvent(event);
-        if (this._nodeBeingDragged && treeElement) {
-            var parentNode;
-            var anchorNode;
+        if (treeElement)
+            this._doMove(treeElement);
+    },
 
-            if (treeElement._elementCloseTag) {
-                // Drop onto closing tag -> insert as last child.
-                parentNode = treeElement.representedObject;
-            } else {
-                var dragTargetNode = treeElement.representedObject;
-                parentNode = dragTargetNode.parentNode;
-                anchorNode = dragTargetNode;
-            }
+    _doMove: function(treeElement)
+    {
+        if (!this._nodeBeingDragged)
+            return;
 
-            function callback(error, newNodeId)
-            {
-                if (error)
-                    return;
+        var parentNode;
+        var anchorNode;
 
-                this._updateModifiedNodes();
-                var newNode = WebInspector.domAgent.nodeForId(newNodeId);
-                if (newNode)
-                    this.selectDOMNode(newNode, true);
-            }
-            this._nodeBeingDragged.moveTo(parentNode, anchorNode, callback.bind(this));
+        if (treeElement._elementCloseTag) {
+            // Drop onto closing tag -> insert as last child.
+            parentNode = treeElement.representedObject;
+        } else {
+            var dragTargetNode = treeElement.representedObject;
+            parentNode = dragTargetNode.parentNode;
+            anchorNode = dragTargetNode;
         }
 
+        function callback(error, newNodeId)
+        {
+            if (error)
+                return;
+
+            this._updateModifiedNodes();
+            var newNode = WebInspector.domAgent.nodeForId(newNodeId);
+            if (newNode)
+                this.selectDOMNode(newNode, true);
+        }
+
+        this._nodeBeingDragged.moveTo(parentNode, anchorNode, callback.bind(this));
+
         delete this._nodeBeingDragged;
     },
 
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to