[CSSRegions]Incorrect layout for multicol element transformed into region
authormihnea@adobe.com <mihnea@adobe.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 9 Sep 2014 08:56:38 +0000 (08:56 +0000)
committermihnea@adobe.com <mihnea@adobe.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 9 Sep 2014 08:56:38 +0000 (08:56 +0000)
https://bugs.webkit.org/show_bug.cgi?id=136459

Reviewed by David Hyatt.

Source/WebCore:

Until we will support the multicolumn region functionality, a multicolumn element
that also has flow-from style is not transformed into a region (https://bugs.webkit.org/show_bug.cgi?id=135153).

However, when a multicolumn element with flow-from style dynamically loses
its multicolumn style while keeping the flow-from style, we have to transform
the element into a region by detaching and attaching the associated DOM node,
in the same way we are proceeding when an element receives a different flow-from style.

Test: fast/regions/multicol/nested-multicol-into-region-dynamic.html

* style/StyleResolveTree.cpp:
(WebCore::Style::determineChange):

LayoutTests:

* fast/regions/multicol/nested-multicol-into-region-dynamic-expected.txt: Added.
* fast/regions/multicol/nested-multicol-into-region-dynamic.html: Added.

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

LayoutTests/ChangeLog
LayoutTests/fast/regions/multicol/nested-multicol-into-region-dynamic-expected.txt [new file with mode: 0644]
LayoutTests/fast/regions/multicol/nested-multicol-into-region-dynamic.html [new file with mode: 0644]
Source/WebCore/ChangeLog
Source/WebCore/style/StyleResolveTree.cpp

index cdd10a7..ccc5cce 100644 (file)
@@ -1,3 +1,13 @@
+2014-09-08  Mihnea Ovidenie  <mihnea@adobe.com>
+
+        [CSSRegions]Incorrect layout for multicol element transformed into region
+        https://bugs.webkit.org/show_bug.cgi?id=136459
+
+        Reviewed by David Hyatt.
+
+        * fast/regions/multicol/nested-multicol-into-region-dynamic-expected.txt: Added.
+        * fast/regions/multicol/nested-multicol-into-region-dynamic.html: Added.
+
 2014-09-08  Myles C. Maxfield  <mmaxfield@apple.com>
 
         REGRESSION (r172153): Text drawn with wrong color when second text shadow has zero offset and blur (breaks buttons at aws.amazon.com)
diff --git a/LayoutTests/fast/regions/multicol/nested-multicol-into-region-dynamic-expected.txt b/LayoutTests/fast/regions/multicol/nested-multicol-into-region-dynamic-expected.txt
new file mode 100644 (file)
index 0000000..8803f37
--- /dev/null
@@ -0,0 +1,6 @@
+Test that a multicolumn element with flow-from style, inside another multicolumn element, is correctly transformed into a region when its multicolumn style is dynamically removed.
+
+On success you should see PASS below.
+
+PASS
+
diff --git a/LayoutTests/fast/regions/multicol/nested-multicol-into-region-dynamic.html b/LayoutTests/fast/regions/multicol/nested-multicol-into-region-dynamic.html
new file mode 100644 (file)
index 0000000..f3cfa28
--- /dev/null
@@ -0,0 +1,25 @@
+<html>
+    <head>
+        <style id="style">
+            #outer, #inner { -webkit-column-count: 2; }
+        </style>
+    </head>
+    <body>
+        <p>Test that a multicolumn element with flow-from style, inside another multicolumn element, is correctly transformed into a region when its multicolumn style is dynamically removed.</p>
+        <p>On success you should see PASS below.</p>
+        <div id="article" style="-webkit-flow-into: article;">PASS</div>
+        <div id="outer">
+            <div id="inner"></div>
+        </div>
+        <script id="script">
+            if (window.testRunner)
+                window.testRunner.dumpAsText();
+
+            document.getElementById("inner").style.webkitFlowFrom = "article";
+            document.body.offsetTop;
+
+            var styleElement = document.getElementById("style");
+            styleElement.parentNode.removeChild(styleElement);
+        </script>
+    </body>
+</html>
index bed9438..96763a0 100644 (file)
@@ -1,3 +1,22 @@
+2014-09-08  Mihnea Ovidenie  <mihnea@adobe.com>
+
+        [CSSRegions]Incorrect layout for multicol element transformed into region
+        https://bugs.webkit.org/show_bug.cgi?id=136459
+
+        Reviewed by David Hyatt.
+
+        Until we will support the multicolumn region functionality, a multicolumn element
+        that also has flow-from style is not transformed into a region (https://bugs.webkit.org/show_bug.cgi?id=135153).
+        However, when a multicolumn element with flow-from style dynamically loses
+        its multicolumn style while keeping the flow-from style, we have to transform
+        the element into a region by detaching and attaching the associated DOM node,
+        in the same way we are proceeding when an element receives a different flow-from style.
+
+        Test: fast/regions/multicol/nested-multicol-into-region-dynamic.html
+
+        * style/StyleResolveTree.cpp:
+        (WebCore::Style::determineChange):
+
 2014-09-08  Antti Koivisto  <antti@apple.com>
 
         Pass certificate info as part of ResourceResponse
index 94a33d0..423b3cc 100644 (file)
@@ -118,6 +118,11 @@ Change determineChange(const RenderStyle* s1, const RenderStyle* s2)
     // When the region thread has changed, we need to prepare a separate render region object.
     if (s1->regionThread() != s2->regionThread())
         return Detach;
+    // FIXME: Multicolumn regions not yet supported (http://dev.w3.org/csswg/css-regions/#multi-column-regions)
+    // When the node has region style and changed its multicol style, we have to prepare
+    // a separate render region object.
+    if (s1->hasFlowFrom() && (s1->specifiesColumns() != s2->specifiesColumns()))
+        return Detach;
 
     if (*s1 != *s2) {
         if (s1->inheritedNotEqual(s2))