Title: [112549] trunk
Revision
112549
Author
[email protected]
Date
2012-03-29 11:17:57 -0700 (Thu, 29 Mar 2012)

Log Message

Web Inspector: subtree disapears from <iframe> after loading
https://bugs.webkit.org/show_bug.cgi?id=76552

Reviewed by Yury Semikhatsky.

Source/WebCore:

The problem was that content document subtree was not unbound upon iframe re-push.
Upon owner element refresh content document was not sent to the frontend
since backend assumed that front-end has already had the up-to-date version.

Test: inspector/elements/iframe-load-event.html

* inspector/InspectorDOMAgent.cpp:
(WebCore::InspectorDOMAgent::loadEventFired):

LayoutTests:

* inspector/elements/iframe-load-event-expected.txt: Added.
* inspector/elements/iframe-load-event.html: Added.
* inspector/elements/resources/iframe-load-event-iframe-1.html: Added.
* inspector/elements/resources/iframe-load-event-iframe-2.html: Added.
* inspector/elements/resources/iframe-load-event-iframe.js: Added.
(loadSecondIFrame):
(test.step1.nodeInserted):
(test.step1):
(test.step2):
(test):

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (112548 => 112549)


--- trunk/LayoutTests/ChangeLog	2012-03-29 18:14:01 UTC (rev 112548)
+++ trunk/LayoutTests/ChangeLog	2012-03-29 18:17:57 UTC (rev 112549)
@@ -1,3 +1,21 @@
+2012-03-29  Pavel Feldman  <[email protected]>
+
+        Web Inspector: subtree disapears from <iframe> after loading
+        https://bugs.webkit.org/show_bug.cgi?id=76552
+
+        Reviewed by Yury Semikhatsky.
+
+        * inspector/elements/iframe-load-event-expected.txt: Added.
+        * inspector/elements/iframe-load-event.html: Added.
+        * inspector/elements/resources/iframe-load-event-iframe-1.html: Added.
+        * inspector/elements/resources/iframe-load-event-iframe-2.html: Added.
+        * inspector/elements/resources/iframe-load-event-iframe.js: Added.
+        (loadSecondIFrame):
+        (test.step1.nodeInserted):
+        (test.step1):
+        (test.step2):
+        (test):
+
 2012-03-29  Joseph Pecoraro  <[email protected]>
 
         <http://webkit.org/b/82558> Toggling <input type="range"> readonly or disabled state while active breaks all click events

Added: trunk/LayoutTests/inspector/elements/iframe-load-event-expected.txt (0 => 112549)


--- trunk/LayoutTests/inspector/elements/iframe-load-event-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/inspector/elements/iframe-load-event-expected.txt	2012-03-29 18:17:57 UTC (rev 112549)
@@ -0,0 +1,30 @@
+Tests that iframe content is available after iframe's load event fired. See bug 76552.
+
+
+
+
+After frame navigate
+- <html>
+    - <head>
+          <script src=""
+          <script src=""
+          <script src=""
+      </head>
+    - <body>
+        - <p>
+              "Tests that iframe content is available after iframe's load event fired. See "
+              <a href="" 76552</a>
+              "."
+          </p>
+        - <iframe id="myframe" src="" _onload_="runTest()">
+            - #document
+            - <html>
+                  <head></head>
+                - <body>
+                      <div id="iframe-2-element"></div>
+                  </body>
+              </html>
+          </iframe>
+      </body>
+  </html>
+
Property changes on: trunk/LayoutTests/inspector/elements/iframe-load-event-expected.txt
___________________________________________________________________

Added: svn:eol-style

Added: trunk/LayoutTests/inspector/elements/iframe-load-event.html (0 => 112549)


--- trunk/LayoutTests/inspector/elements/iframe-load-event.html	                        (rev 0)
+++ trunk/LayoutTests/inspector/elements/iframe-load-event.html	2012-03-29 18:17:57 UTC (rev 112549)
@@ -0,0 +1,13 @@
+<html>
+<head>
+<script src=""
+<script src=""
+<script src=""
+</head>
+<body>
+<p>
+Tests that iframe content is available after iframe's load event fired. See <a href="" 76552</a>.
+</p>
+<iframe id="myframe" src="" _onload_="runTest()"></iframe>
+</body>
+</html>
Property changes on: trunk/LayoutTests/inspector/elements/iframe-load-event.html
___________________________________________________________________

Added: svn:eol-style

Added: trunk/LayoutTests/inspector/elements/resources/iframe-load-event-iframe-1.html (0 => 112549)


--- trunk/LayoutTests/inspector/elements/resources/iframe-load-event-iframe-1.html	                        (rev 0)
+++ trunk/LayoutTests/inspector/elements/resources/iframe-load-event-iframe-1.html	2012-03-29 18:17:57 UTC (rev 112549)
@@ -0,0 +1,5 @@
+<html>
+<body>
+<div id="iframe-1-element"></div>
+</body>
+</html>
Property changes on: trunk/LayoutTests/inspector/elements/resources/iframe-load-event-iframe-1.html
___________________________________________________________________

Added: svn:eol-style

Added: trunk/LayoutTests/inspector/elements/resources/iframe-load-event-iframe-2.html (0 => 112549)


--- trunk/LayoutTests/inspector/elements/resources/iframe-load-event-iframe-2.html	                        (rev 0)
+++ trunk/LayoutTests/inspector/elements/resources/iframe-load-event-iframe-2.html	2012-03-29 18:17:57 UTC (rev 112549)
@@ -0,0 +1,5 @@
+<html>
+<body>
+<div id="iframe-2-element"></div>
+</body>
+</html>
Property changes on: trunk/LayoutTests/inspector/elements/resources/iframe-load-event-iframe-2.html
___________________________________________________________________

Added: svn:eol-style

Added: trunk/LayoutTests/inspector/elements/resources/iframe-load-event-iframe.js (0 => 112549)


--- trunk/LayoutTests/inspector/elements/resources/iframe-load-event-iframe.js	                        (rev 0)
+++ trunk/LayoutTests/inspector/elements/resources/iframe-load-event-iframe.js	2012-03-29 18:17:57 UTC (rev 112549)
@@ -0,0 +1,32 @@
+function loadSecondIFrame()
+{
+    document.getElementById("myframe")._onload_ = null;
+    document.getElementById("myframe").src = ""
+}
+
+function test()
+{
+    InspectorTest.expandElementsTree(step1);
+
+    function step1()
+    {
+        WebInspector.domAgent.addEventListener(WebInspector.DOMAgent.Events.NodeInserted, nodeInserted);
+        InspectorTest.evaluateInPage("loadSecondIFrame()");
+
+        function nodeInserted(event)
+        {
+            var node = event.data;
+            if (node.getAttribute("id") === "myframe") {
+                InspectorTest.expandElementsTree(step2);
+                WebInspector.domAgent.removeEventListener(WebInspector.DOMAgent.Events.NodeInserted, nodeInserted);
+            }
+        }
+    }
+
+    function step2()
+    {
+        InspectorTest.addResult("\n\nAfter frame navigate");
+        InspectorTest.dumpElementsTree();
+        InspectorTest.completeTest();
+    }
+}
Property changes on: trunk/LayoutTests/inspector/elements/resources/iframe-load-event-iframe.js
___________________________________________________________________

Added: svn:eol-style

Modified: trunk/Source/WebCore/ChangeLog (112548 => 112549)


--- trunk/Source/WebCore/ChangeLog	2012-03-29 18:14:01 UTC (rev 112548)
+++ trunk/Source/WebCore/ChangeLog	2012-03-29 18:17:57 UTC (rev 112549)
@@ -1,3 +1,19 @@
+2012-03-29  Pavel Feldman  <[email protected]>
+
+        Web Inspector: subtree disapears from <iframe> after loading
+        https://bugs.webkit.org/show_bug.cgi?id=76552
+
+        Reviewed by Yury Semikhatsky.
+
+        The problem was that content document subtree was not unbound upon iframe re-push.
+        Upon owner element refresh content document was not sent to the frontend
+        since backend assumed that front-end has already had the up-to-date version.
+
+        Test: inspector/elements/iframe-load-event.html
+
+        * inspector/InspectorDOMAgent.cpp:
+        (WebCore::InspectorDOMAgent::loadEventFired):
+
 2012-03-29  Dana Jansens  <[email protected]>
 
         [chromium] Remove unneeded code+fixmes from CCOcclusionTracker

Modified: trunk/Source/WebCore/inspector/InspectorDOMAgent.cpp (112548 => 112549)


--- trunk/Source/WebCore/inspector/InspectorDOMAgent.cpp	2012-03-29 18:14:01 UTC (rev 112548)
+++ trunk/Source/WebCore/inspector/InspectorDOMAgent.cpp	2012-03-29 18:17:57 UTC (rev 112549)
@@ -1371,20 +1371,15 @@
     if (!frameOwnerId)
         return;
 
-    if (!m_childrenRequested.contains(frameOwnerId)) {
-        // No children are mapped yet -> only notify on changes of hasChildren.
-        m_frontend->childNodeCountUpdated(frameOwnerId, innerChildNodeCount(frameOwner));
-    } else {
-        // Re-add frame owner element together with its new children.
-        int parentId = m_documentNodeToIdMap.get(innerParentNode(frameOwner));
-        m_frontend->childNodeRemoved(parentId, frameOwnerId);
-        RefPtr<TypeBuilder::DOM::Node> value = buildObjectForNode(frameOwner, 0, &m_documentNodeToIdMap);
-        Node* previousSibling = innerPreviousSibling(frameOwner);
-        int prevId = previousSibling ? m_documentNodeToIdMap.get(previousSibling) : 0;
-        m_frontend->childNodeInserted(parentId, prevId, value.release());
-        // Invalidate children requested flag for the element.
-        m_childrenRequested.remove(m_childrenRequested.find(frameOwnerId));
-    }
+    // Re-add frame owner element together with its new children.
+    int parentId = m_documentNodeToIdMap.get(innerParentNode(frameOwner));
+    m_frontend->childNodeRemoved(parentId, frameOwnerId);
+    unbind(frameOwner, &m_documentNodeToIdMap);
+
+    RefPtr<TypeBuilder::DOM::Node> value = buildObjectForNode(frameOwner, 0, &m_documentNodeToIdMap);
+    Node* previousSibling = innerPreviousSibling(frameOwner);
+    int prevId = previousSibling ? m_documentNodeToIdMap.get(previousSibling) : 0;
+    m_frontend->childNodeInserted(parentId, prevId, value.release());
 }
 
 void InspectorDOMAgent::didInsertDOMNode(Node* node)
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to