inline-table wrapper should be generated for display: inline element only
authorjchaffraix@webkit.org <jchaffraix@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 24 Jul 2012 17:44:29 +0000 (17:44 +0000)
committerjchaffraix@webkit.org <jchaffraix@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 24 Jul 2012 17:44:29 +0000 (17:44 +0000)
https://bugs.webkit.org/show_bug.cgi?id=92054

Reviewed by Abhishek Arya.

Source/WebCore:

CSS 2.1 only takes into account the display when determining if we should generate
an inline-table. My misreading of the spec would make us generate an inline-table
wrapper for any inline formatting context.

Test: fast/table/inline-block-generates-table-wrapper.html

* rendering/RenderTable.cpp:
(WebCore::RenderTable::createAnonymousWithParentRenderer):
Changed to use display instead of isInline to properly match the spec.

LayoutTests:

For some reason, using dumpAsText didn't dump the 2 lines properly so the test
is a reftest to work-around that.

* fast/table/inline-block-generates-table-wrapper-expected.html: Added.
* fast/table/inline-block-generates-table-wrapper.html: Added.

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

LayoutTests/ChangeLog
LayoutTests/fast/table/inline-block-generates-table-wrapper-expected.html [new file with mode: 0644]
LayoutTests/fast/table/inline-block-generates-table-wrapper.html [new file with mode: 0644]
Source/WebCore/ChangeLog
Source/WebCore/rendering/RenderTable.cpp

index 673b33f..dc22bb3 100644 (file)
@@ -1,3 +1,16 @@
+2012-07-24  Julien Chaffraix  <jchaffraix@webkit.org>
+
+        inline-table wrapper should be generated for display: inline element only
+        https://bugs.webkit.org/show_bug.cgi?id=92054
+
+        Reviewed by Abhishek Arya.
+
+        For some reason, using dumpAsText didn't dump the 2 lines properly so the test
+        is a reftest to work-around that.
+
+        * fast/table/inline-block-generates-table-wrapper-expected.html: Added.
+        * fast/table/inline-block-generates-table-wrapper.html: Added.
+
 2012-07-24  Terry Anderson  <tdanderson@chromium.org>
 
         [chromium] Unskip tests in fast/hidpi
diff --git a/LayoutTests/fast/table/inline-block-generates-table-wrapper-expected.html b/LayoutTests/fast/table/inline-block-generates-table-wrapper-expected.html
new file mode 100644 (file)
index 0000000..0fbd648
--- /dev/null
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<html>
+<style>
+<head>
+.wrapper {
+    display: inline-block;
+}
+.table {
+    display: table;
+}
+.cell {
+    display: table-cell;
+}
+</style>
+</head>
+<body>
+<p>Bug 92054: inline-table wrapper should be generated for display: inline element only.</p>
+<p>This test checks that we don't generate an inline-table wrapper inside an inline-block.</p>
+<p>This test has PASSED if there is 2 lines below.</p>
+<div class="wrapper"><span>First line.</span><span class="table"><span class="cell">Second line.</span></span></div>
+</body>
+</html>
diff --git a/LayoutTests/fast/table/inline-block-generates-table-wrapper.html b/LayoutTests/fast/table/inline-block-generates-table-wrapper.html
new file mode 100644 (file)
index 0000000..90fc25a
--- /dev/null
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<html>
+<style>
+<head>
+.wrapper {
+    display: inline-block;
+}
+.cell {
+    display: table-cell;
+}
+</style>
+</head>
+<body>
+<p>Bug 92054: inline-table wrapper should be generated for display: inline element only.</p>
+<p>This test checks that we don't generate an inline-table wrapper inside an inline-block.</p>
+<p>This test has PASSED if there is 2 lines below.</p>
+<div class="wrapper"><span>First line.</span><span class="cell">Second line.</span></div>
+</body>
+</html>
index 458b169..b2bd40f 100644 (file)
@@ -1,3 +1,20 @@
+2012-07-24  Julien Chaffraix  <jchaffraix@webkit.org>
+
+        inline-table wrapper should be generated for display: inline element only
+        https://bugs.webkit.org/show_bug.cgi?id=92054
+
+        Reviewed by Abhishek Arya.
+
+        CSS 2.1 only takes into account the display when determining if we should generate
+        an inline-table. My misreading of the spec would make us generate an inline-table
+        wrapper for any inline formatting context.
+
+        Test: fast/table/inline-block-generates-table-wrapper.html
+
+        * rendering/RenderTable.cpp:
+        (WebCore::RenderTable::createAnonymousWithParentRenderer):
+        Changed to use display instead of isInline to properly match the spec.
+
 2012-07-24  Alec Flett  <alecflett@chromium.org>
 
         IndexedDB: Temporarily continue generating backend keys for empty key lists
index 9c115a0..9478625 100644 (file)
@@ -1297,7 +1297,7 @@ bool RenderTable::nodeAtPoint(const HitTestRequest& request, HitTestResult& resu
 RenderTable* RenderTable::createAnonymousWithParentRenderer(const RenderObject* parent)
 {
     // CSS 2.1, section 17.2.1: "If a proper table child's parent is an 'inline' box, then the generated anonymous table must be an 'inline-table' box".
-    EDisplay tableDisplay = parent->isInline() ? INLINE_TABLE : TABLE;
+    EDisplay tableDisplay = parent->style()->display() == INLINE ? INLINE_TABLE : TABLE;
     RefPtr<RenderStyle> newStyle = RenderStyle::createAnonymousStyleWithDisplay(parent->style(), tableDisplay);
     RenderTable* newTable = new (parent->renderArena()) RenderTable(parent->document() /* is anonymous */);
     newTable->setStyle(newStyle.release());