Title: [258455] trunk
Revision
258455
Author
za...@apple.com
Date
2020-03-13 18:43:38 -0700 (Fri, 13 Mar 2020)

Log Message

[Tree building] Block::attachIgnoringContinuation should allow inline tables as before child container
https://bugs.webkit.org/show_bug.cgi?id=209095
<rdar://problem/59837588>

Reviewed by Simon Fraser.

Source/WebCore:

It's perfectly valid to have an inline table as the anonymous container for the before child.
It'll get wrapped inside an anonymous block right before we insert the block box candidate, so
the final result will be something like:

new block level child (this is the child we are inserting)
anonymous block wrapper
  inline table (this is the before child's inline container)
    before child

Test: fast/table/before-child-is-inline-table.html

* rendering/updating/RenderTreeBuilderBlock.cpp:
(WebCore::RenderTreeBuilder::Block::attachIgnoringContinuation):

LayoutTests:

* fast/table/before-child-is-inline-table-expected.txt: Added.
* fast/table/before-child-is-inline-table.html: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (258454 => 258455)


--- trunk/LayoutTests/ChangeLog	2020-03-14 01:27:59 UTC (rev 258454)
+++ trunk/LayoutTests/ChangeLog	2020-03-14 01:43:38 UTC (rev 258455)
@@ -1,3 +1,14 @@
+2020-03-13  Zalan Bujtas  <za...@apple.com>
+
+        [Tree building] Block::attachIgnoringContinuation should allow inline tables as before child container
+        https://bugs.webkit.org/show_bug.cgi?id=209095
+        <rdar://problem/59837588>
+
+        Reviewed by Simon Fraser.
+
+        * fast/table/before-child-is-inline-table-expected.txt: Added.
+        * fast/table/before-child-is-inline-table.html: Added.
+
 2020-03-13  Jason Lawrence  <lawrenc...@apple.com>
 
         Unreviewed, reverting r258446.

Added: trunk/LayoutTests/fast/table/before-child-is-inline-table-expected.txt (0 => 258455)


--- trunk/LayoutTests/fast/table/before-child-is-inline-table-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/fast/table/before-child-is-inline-table-expected.txt	2020-03-14 01:43:38 UTC (rev 258455)
@@ -0,0 +1 @@
+Pass if no crash or assert.

Added: trunk/LayoutTests/fast/table/before-child-is-inline-table.html (0 => 258455)


--- trunk/LayoutTests/fast/table/before-child-is-inline-table.html	                        (rev 0)
+++ trunk/LayoutTests/fast/table/before-child-is-inline-table.html	2020-03-14 01:43:38 UTC (rev 258455)
@@ -0,0 +1,18 @@
+<style>
+.table-caption {
+    display: table-cell;
+}
+embed {
+    padding-top: 1vw;
+    display: block;
+}
+summary {
+    display: inline;
+}
+</style>
+<details><summary><embed type><div class=table-caption></div></summary></details>
+Pass if no crash or assert.
+<script>
+if (window.testRunner)
+    testRunner.dumpAsText();
+</script>

Modified: trunk/Source/WebCore/ChangeLog (258454 => 258455)


--- trunk/Source/WebCore/ChangeLog	2020-03-14 01:27:59 UTC (rev 258454)
+++ trunk/Source/WebCore/ChangeLog	2020-03-14 01:43:38 UTC (rev 258455)
@@ -1,3 +1,25 @@
+2020-03-13  Zalan Bujtas  <za...@apple.com>
+
+        [Tree building] Block::attachIgnoringContinuation should allow inline tables as before child container
+        https://bugs.webkit.org/show_bug.cgi?id=209095
+        <rdar://problem/59837588>
+
+        Reviewed by Simon Fraser.
+
+        It's perfectly valid to have an inline table as the anonymous container for the before child.
+        It'll get wrapped inside an anonymous block right before we insert the block box candidate, so
+        the final result will be something like:
+
+        new block level child (this is the child we are inserting)
+        anonymous block wrapper
+          inline table (this is the before child's inline container)
+            before child 
+
+        Test: fast/table/before-child-is-inline-table.html
+
+        * rendering/updating/RenderTreeBuilderBlock.cpp:
+        (WebCore::RenderTreeBuilder::Block::attachIgnoringContinuation):
+
 2020-03-13  Said Abou-Hallawa  <sabouhall...@apple.com>
 
         [GPU Process] GraphicsContextStateChange::apply() should process ShadowsIgnoreTransformsChange before processing ShadowChange

Modified: trunk/Source/WebCore/rendering/updating/RenderTreeBuilderBlock.cpp (258454 => 258455)


--- trunk/Source/WebCore/rendering/updating/RenderTreeBuilderBlock.cpp	2020-03-14 01:27:59 UTC (rev 258454)
+++ trunk/Source/WebCore/rendering/updating/RenderTreeBuilderBlock.cpp	2020-03-14 01:43:38 UTC (rev 258455)
@@ -173,7 +173,7 @@
                 m_builder.attach(parent, WTFMove(child), beforeChildContainer);
                 return;
             }
-            RELEASE_ASSERT_WITH_SECURITY_IMPLICATION(!beforeChildContainer->isInline());
+            RELEASE_ASSERT_WITH_SECURITY_IMPLICATION(!beforeChildContainer->isInline() || beforeChildContainer->isTable());
 
             // If the requested beforeChild is not one of our children, then this is because
             // there is an anonymous container within this object that contains the beforeChild.
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to