Title: [252610] branches/safari-608-branch
Revision
252610
Author
[email protected]
Date
2019-11-18 17:12:42 -0800 (Mon, 18 Nov 2019)

Log Message

Cherry-pick r251680. rdar://problem/57283563

    Hidden framesets should provide default edgeInfo value
    https://bugs.webkit.org/show_bug.cgi?id=203506
    <rdar://problem/56233726>

    Reviewed by Simon Fraser.

    Source/WebCore:

    The grid information (and certain associated structures e.g. edegeInfo) for a frameset is updated through the layout() call.
    When the used height/width computes to zero on a frameset child (frame or nested frameset), we don't run layout on the renderer thus
    hidden nested framesets can only provide the default edge info.
    This patch changes this behaviour and we now call layout on those hidden renderers the same way we do it on iOS.

    Test: fast/frames/hidden-frameset.html

    * rendering/RenderFrameSet.cpp:
    (WebCore::RenderFrameSet::edgeInfo const):

    LayoutTests:

    * fast/frames/hidden-frameset-expected.txt: Added.
    * fast/frames/hidden-frameset.html: Added.

    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@251680 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Modified Paths

Added Paths

Diff

Modified: branches/safari-608-branch/LayoutTests/ChangeLog (252609 => 252610)


--- branches/safari-608-branch/LayoutTests/ChangeLog	2019-11-19 01:12:00 UTC (rev 252609)
+++ branches/safari-608-branch/LayoutTests/ChangeLog	2019-11-19 01:12:42 UTC (rev 252610)
@@ -1,3 +1,44 @@
+2019-11-18  Alan Coon  <[email protected]>
+
+        Cherry-pick r251680. rdar://problem/57283563
+
+    Hidden framesets should provide default edgeInfo value
+    https://bugs.webkit.org/show_bug.cgi?id=203506
+    <rdar://problem/56233726>
+    
+    Reviewed by Simon Fraser.
+    
+    Source/WebCore:
+    
+    The grid information (and certain associated structures e.g. edegeInfo) for a frameset is updated through the layout() call.
+    When the used height/width computes to zero on a frameset child (frame or nested frameset), we don't run layout on the renderer thus
+    hidden nested framesets can only provide the default edge info.
+    This patch changes this behaviour and we now call layout on those hidden renderers the same way we do it on iOS.
+    
+    Test: fast/frames/hidden-frameset.html
+    
+    * rendering/RenderFrameSet.cpp:
+    (WebCore::RenderFrameSet::edgeInfo const):
+    
+    LayoutTests:
+    
+    * fast/frames/hidden-frameset-expected.txt: Added.
+    * fast/frames/hidden-frameset.html: Added.
+    
+    
+    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@251680 268f45cc-cd09-0410-ab3c-d52691b4dbfc
+
+    2019-10-28  Zalan Bujtas  <[email protected]>
+
+            Hidden framesets should provide default edgeInfo value
+            https://bugs.webkit.org/show_bug.cgi?id=203506
+            <rdar://problem/56233726>
+
+            Reviewed by Simon Fraser.
+
+            * fast/frames/hidden-frameset-expected.txt: Added.
+            * fast/frames/hidden-frameset.html: Added.
+
 2019-11-04  Alan Coon  <[email protected]>
 
         Cherry-pick r251957. rdar://problem/56887511

Added: branches/safari-608-branch/LayoutTests/fast/frames/hidden-frameset-expected.txt (0 => 252610)


--- branches/safari-608-branch/LayoutTests/fast/frames/hidden-frameset-expected.txt	                        (rev 0)
+++ branches/safari-608-branch/LayoutTests/fast/frames/hidden-frameset-expected.txt	2019-11-19 01:12:42 UTC (rev 252610)
@@ -0,0 +1 @@
+

Added: branches/safari-608-branch/LayoutTests/fast/frames/hidden-frameset.html (0 => 252610)


--- branches/safari-608-branch/LayoutTests/fast/frames/hidden-frameset.html	                        (rev 0)
+++ branches/safari-608-branch/LayoutTests/fast/frames/hidden-frameset.html	2019-11-19 01:12:42 UTC (rev 252610)
@@ -0,0 +1,18 @@
+<script>
+    if (window.testRunner)
+        testRunner.dumpAsText();
+    _onload_ = ()=> {
+        // Force layout first.
+        document.documentElement.offsetTop;
+
+        // Then expand the root frameset grid from 2x1 to 2x2.
+        document.getElementById("rootSet").setAttribute("rows", "*, 0");
+    }
+</script>
+<frameset id="rootSet" cols="0, *">
+    <frame id="firstChild"></frame>
+    <frame src="" PASS if no crash or assertion failure."></frame>
+    <frameset>
+         <frame src=""
+     </frameset>
+</frameset>

Modified: branches/safari-608-branch/Source/WebCore/ChangeLog (252609 => 252610)


--- branches/safari-608-branch/Source/WebCore/ChangeLog	2019-11-19 01:12:00 UTC (rev 252609)
+++ branches/safari-608-branch/Source/WebCore/ChangeLog	2019-11-19 01:12:42 UTC (rev 252610)
@@ -1,3 +1,51 @@
+2019-11-18  Alan Coon  <[email protected]>
+
+        Cherry-pick r251680. rdar://problem/57283563
+
+    Hidden framesets should provide default edgeInfo value
+    https://bugs.webkit.org/show_bug.cgi?id=203506
+    <rdar://problem/56233726>
+    
+    Reviewed by Simon Fraser.
+    
+    Source/WebCore:
+    
+    The grid information (and certain associated structures e.g. edegeInfo) for a frameset is updated through the layout() call.
+    When the used height/width computes to zero on a frameset child (frame or nested frameset), we don't run layout on the renderer thus
+    hidden nested framesets can only provide the default edge info.
+    This patch changes this behaviour and we now call layout on those hidden renderers the same way we do it on iOS.
+    
+    Test: fast/frames/hidden-frameset.html
+    
+    * rendering/RenderFrameSet.cpp:
+    (WebCore::RenderFrameSet::edgeInfo const):
+    
+    LayoutTests:
+    
+    * fast/frames/hidden-frameset-expected.txt: Added.
+    * fast/frames/hidden-frameset.html: Added.
+    
+    
+    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@251680 268f45cc-cd09-0410-ab3c-d52691b4dbfc
+
+    2019-10-28  Zalan Bujtas  <[email protected]>
+
+            Hidden framesets should provide default edgeInfo value
+            https://bugs.webkit.org/show_bug.cgi?id=203506
+            <rdar://problem/56233726>
+
+            Reviewed by Simon Fraser.
+
+            The grid information (and certain associated structures e.g. edegeInfo) for a frameset is updated through the layout() call.
+            When the used height/width computes to zero on a frameset child (frame or nested frameset), we don't run layout on the renderer thus
+            hidden nested framesets can only provide the default edge info.
+            This patch changes this behaviour and we now call layout on those hidden renderers the same way we do it on iOS.
+
+            Test: fast/frames/hidden-frameset.html
+
+            * rendering/RenderFrameSet.cpp:
+            (WebCore::RenderFrameSet::edgeInfo const):
+
 2019-11-15  Alan Coon  <[email protected]>
 
         Cherry-pick r252297. rdar://problem/57058406

Modified: branches/safari-608-branch/Source/WebCore/rendering/RenderFrameSet.cpp (252609 => 252610)


--- branches/safari-608-branch/Source/WebCore/rendering/RenderFrameSet.cpp	2019-11-19 01:12:00 UTC (rev 252609)
+++ branches/safari-608-branch/Source/WebCore/rendering/RenderFrameSet.cpp	2019-11-19 01:12:42 UTC (rev 252610)
@@ -525,17 +525,15 @@
             int width = m_cols.m_sizes[c];
 
             // has to be resized and itself resize its contents
-            if (width != child->width() || height != child->height()) {
-                child->setWidth(width);
-                child->setHeight(height);
+            child->setWidth(width);
+            child->setHeight(height);
 #if PLATFORM(IOS_FAMILY)
-                // FIXME: Is this iOS-specific?
-                child->setNeedsLayout(MarkOnlyThis);
+            // FIXME: Is this iOS-specific?
+            child->setNeedsLayout(MarkOnlyThis);
 #else
-                child->setNeedsLayout();
+            child->setNeedsLayout();
 #endif
-                child->layout();
-            }
+            child->layout();
 
             xPos += width + borderThickness;
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to