Title: [241243] trunk
Revision
241243
Author
[email protected]
Date
2019-02-09 12:37:03 -0800 (Sat, 09 Feb 2019)

Log Message

[LFC][IFC] Add intrinsic width support for basic inline containers
https://bugs.webkit.org/show_bug.cgi?id=194473

Reviewed by Antti Koivisto.

Source/WebCore:

Preferred width computation logic is very similar to normal layout.
One of the main difference is that the preferred width codepath does not provide valid containing block width.
This patch implement basic inline container support by passing nullopt containing block width in UsedHorizontalValues.

* layout/inlineformatting/InlineFormattingContext.cpp:
(WebCore::Layout::InlineFormattingContext::layout const):
(WebCore::Layout::InlineFormattingContext::instrinsicWidthConstraints const):
(WebCore::Layout::InlineFormattingContext::computeBorderAndPadding const):
(WebCore::Layout::InlineFormattingContext::computeMarginBorderAndPadding const):
(WebCore::Layout::InlineFormattingContext::computeWidthAndMargin const):
(WebCore::Layout::InlineFormattingContext::layoutFormattingContextRoot const):
(WebCore::Layout::InlineFormattingContext::computeWidthAndHeightForReplacedInlineBox const):
* layout/inlineformatting/InlineFormattingContext.h:

Tools:

Expand tests coverage (11 new tests -> 798)

* LayoutReloaded/misc/LFC-passing-tests.txt: not sure why run-singly keeps producing different ordering.

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (241242 => 241243)


--- trunk/Source/WebCore/ChangeLog	2019-02-09 19:44:06 UTC (rev 241242)
+++ trunk/Source/WebCore/ChangeLog	2019-02-09 20:37:03 UTC (rev 241243)
@@ -1,3 +1,24 @@
+2019-02-09  Zalan Bujtas  <[email protected]>
+
+        [LFC][IFC] Add intrinsic width support for basic inline containers
+        https://bugs.webkit.org/show_bug.cgi?id=194473
+
+        Reviewed by Antti Koivisto.
+
+        Preferred width computation logic is very similar to normal layout.
+        One of the main difference is that the preferred width codepath does not provide valid containing block width.
+        This patch implement basic inline container support by passing nullopt containing block width in UsedHorizontalValues. 
+
+        * layout/inlineformatting/InlineFormattingContext.cpp:
+        (WebCore::Layout::InlineFormattingContext::layout const):
+        (WebCore::Layout::InlineFormattingContext::instrinsicWidthConstraints const):
+        (WebCore::Layout::InlineFormattingContext::computeBorderAndPadding const):
+        (WebCore::Layout::InlineFormattingContext::computeMarginBorderAndPadding const):
+        (WebCore::Layout::InlineFormattingContext::computeWidthAndMargin const):
+        (WebCore::Layout::InlineFormattingContext::layoutFormattingContextRoot const):
+        (WebCore::Layout::InlineFormattingContext::computeWidthAndHeightForReplacedInlineBox const):
+        * layout/inlineformatting/InlineFormattingContext.h:
+
 2019-02-08  Myles C. Maxfield  <[email protected]>
 
         [Cocoa] CTLineGetGlyphRuns() might return nullptr

Modified: trunk/Source/WebCore/layout/inlineformatting/InlineFormattingContext.cpp (241242 => 241243)


--- trunk/Source/WebCore/layout/inlineformatting/InlineFormattingContext.cpp	2019-02-09 19:44:06 UTC (rev 241242)
+++ trunk/Source/WebCore/layout/inlineformatting/InlineFormattingContext.cpp	2019-02-09 20:37:03 UTC (rev 241243)
@@ -71,15 +71,16 @@
 
     LOG_WITH_STREAM(FormattingContextLayout, stream << "[Start] -> inline formatting context -> formatting root(" << &root() << ")");
     auto& root = downcast<Container>(this->root());
+    auto usedValues = UsedHorizontalValues { layoutState().displayBoxForLayoutBox(root).contentBoxWidth(), { }, { } };
     auto* layoutBox = root.firstInFlowOrFloatingChild();
     // Compute width/height for non-text content and margin/border/padding for inline containers.
     while (layoutBox) {
         if (layoutBox->establishesFormattingContext())
-            layoutFormattingContextRoot(*layoutBox);
+            layoutFormattingContextRoot(*layoutBox, usedValues);
         else if (is<Container>(*layoutBox))
-            computeMarginBorderAndPadding(downcast<InlineContainer>(*layoutBox));
+            computeMarginBorderAndPadding(downcast<InlineContainer>(*layoutBox), usedValues);
         else if (layoutBox->isReplaced())
-            computeWidthAndHeightForReplacedInlineBox(*layoutBox);
+            computeWidthAndHeightForReplacedInlineBox(*layoutBox, usedValues);
         layoutBox = nextInPreOrder(*layoutBox, root);
     }
 
@@ -89,27 +90,70 @@
     LOG_WITH_STREAM(FormattingContextLayout, stream << "[End] -> inline formatting context -> formatting root(" << &root << ")");
 }
 
-void InlineFormattingContext::computeMarginBorderAndPadding(const InlineContainer& inlineContainer) const
+FormattingContext::InstrinsicWidthConstraints InlineFormattingContext::instrinsicWidthConstraints() const
 {
+    ASSERT(!layoutState().formattingStateForBox(root()).instrinsicWidthConstraints(root()));
+    ASSERT(is<Container>(root()));
+
+    auto& layoutState = this->layoutState();
+    auto& root = downcast<Container>(this->root());
+
+    auto usedValues = UsedHorizontalValues { { }, { }, { } };
+    auto* layoutBox = root.firstInFlowOrFloatingChild();
+    while (layoutBox) {
+        if (layoutBox->establishesFormattingContext() || layoutBox->isReplaced())
+            ASSERT_NOT_IMPLEMENTED_YET();
+        else if (is<Container>(*layoutBox))
+            computeMarginBorderAndPadding(downcast<InlineContainer>(*layoutBox), usedValues);
+        layoutBox = nextInPreOrder(*layoutBox, root);
+    }
+
+    InlineRunProvider inlineRunProvider;
+    collectInlineContent(inlineRunProvider);
+
+    auto maximumLineWidth = [&](auto availableWidth) {
+        LayoutUnit maxContentLogicalRight;
+        auto lineBreaker = InlineLineBreaker { layoutState, formattingState().inlineContent(), inlineRunProvider.runs() };
+        LayoutUnit lineLogicalRight;
+        while (auto run = lineBreaker.nextRun(lineLogicalRight, availableWidth, !lineLogicalRight)) {
+            if (run->position == InlineLineBreaker::Run::Position::LineBegin)
+                lineLogicalRight = 0;
+            lineLogicalRight += run->width;
+
+            maxContentLogicalRight = std::max(maxContentLogicalRight, lineLogicalRight);
+        }
+        return maxContentLogicalRight;
+    };
+
+    auto instrinsicWidthConstraints = FormattingContext::InstrinsicWidthConstraints { maximumLineWidth(0), maximumLineWidth(LayoutUnit::max()) };
+    layoutState.formattingStateForBox(root).setInstrinsicWidthConstraints(root, instrinsicWidthConstraints);
+    return instrinsicWidthConstraints;
+}
+
+void InlineFormattingContext::computeBorderAndPadding(const Box& layoutBox, UsedHorizontalValues usedValues) const
+{
+    auto& displayBox = layoutState().displayBoxForLayoutBox(layoutBox);
+    displayBox.setBorder(Geometry::computedBorder(layoutBox));
+    displayBox.setPadding(Geometry::computedPadding(layoutBox, usedValues));
+}
+
+void InlineFormattingContext::computeMarginBorderAndPadding(const InlineContainer& inlineContainer, UsedHorizontalValues usedValues) const
+{
     // Non-replaced, non-formatting root containers (<span></span>) don't have width property -> non width computation. 
     ASSERT(!inlineContainer.replaced());
     ASSERT(!inlineContainer.establishesFormattingContext());
 
-    computeBorderAndPadding(inlineContainer);
+    computeBorderAndPadding(inlineContainer, usedValues);
     auto& displayBox = layoutState().displayBoxForLayoutBox(inlineContainer);
-    auto containingBlockWidth = layoutState().displayBoxForLayoutBox(*inlineContainer.containingBlock()).contentBoxWidth();
-    auto computedHorizontalMargin = Geometry::computedHorizontalMargin(inlineContainer, UsedHorizontalValues { containingBlockWidth, { }, { } });
+    auto computedHorizontalMargin = Geometry::computedHorizontalMargin(inlineContainer, usedValues);
     displayBox.setHorizontalComputedMargin(computedHorizontalMargin);
     displayBox.setHorizontalMargin({ computedHorizontalMargin.start.valueOr(0), computedHorizontalMargin.end.valueOr(0) });
 }
 
-void InlineFormattingContext::computeWidthAndMargin(const Box& layoutBox) const
+void InlineFormattingContext::computeWidthAndMargin(const Box& layoutBox, UsedHorizontalValues usedValues) const
 {
     auto& layoutState = this->layoutState();
-    auto containingBlockWidth = layoutState.displayBoxForLayoutBox(*layoutBox.containingBlock()).contentBoxWidth();
-
     WidthAndMargin widthAndMargin;
-    auto usedValues = UsedHorizontalValues { containingBlockWidth, { }, { } };
     if (layoutBox.isFloatingPositioned())
         widthAndMargin = Geometry::floatingWidthAndMargin(layoutState, layoutBox, usedValues);
     else if (layoutBox.isInlineBlockBox())
@@ -144,12 +188,12 @@
     displayBox.setVerticalMargin({ heightAndMargin.nonCollapsedMargin, { } });
 }
 
-void InlineFormattingContext::layoutFormattingContextRoot(const Box& root) const
+void InlineFormattingContext::layoutFormattingContextRoot(const Box& root, UsedHorizontalValues usedValues) const
 {
     ASSERT(root.isFloatingPositioned() || root.isInlineBlockBox());
 
-    computeBorderAndPadding(root);
-    computeWidthAndMargin(root);
+    computeBorderAndPadding(root, usedValues);
+    computeWidthAndMargin(root, usedValues);
     // Swich over to the new formatting context (the one that the root creates).
     auto formattingContext = layoutState().createFormattingContext(root);
     formattingContext->layout();
@@ -159,14 +203,14 @@
     formattingContext->layoutOutOfFlowDescendants(root);
 }
 
-void InlineFormattingContext::computeWidthAndHeightForReplacedInlineBox(const Box& layoutBox) const
+void InlineFormattingContext::computeWidthAndHeightForReplacedInlineBox(const Box& layoutBox, UsedHorizontalValues usedValues) const
 {
     ASSERT(!layoutBox.isContainer());
     ASSERT(!layoutBox.establishesFormattingContext());
     ASSERT(layoutBox.replaced());
 
-    computeBorderAndPadding(layoutBox);
-    computeWidthAndMargin(layoutBox);
+    computeBorderAndPadding(layoutBox, usedValues);
+    computeWidthAndMargin(layoutBox, usedValues);
     computeHeightAndMargin(layoutBox);
 }
 
@@ -292,42 +336,7 @@
     }
 }
 
-FormattingContext::InstrinsicWidthConstraints InlineFormattingContext::instrinsicWidthConstraints() const
-{
-    auto& formattingStateForRoot = layoutState().formattingStateForBox(root());
-    if (auto instrinsicWidthConstraints = formattingStateForRoot.instrinsicWidthConstraints(root()))
-        return *instrinsicWidthConstraints;
-
-    auto& inlineFormattingState = formattingState();
-    InlineRunProvider inlineRunProvider;
-    collectInlineContent(inlineRunProvider);
-
-    // Compute width for non-text content.
-    for (auto& inlineRun : inlineRunProvider.runs()) {
-        if (inlineRun.isText())
-            continue;
-
-        computeWidthAndMargin(inlineRun.inlineItem().layoutBox());
-    }
-
-    auto maximumLineWidth = [&](auto availableWidth) {
-        LayoutUnit maxContentLogicalRight;
-        InlineLineBreaker lineBreaker(layoutState(), inlineFormattingState.inlineContent(), inlineRunProvider.runs());
-        LayoutUnit lineLogicalRight;
-        while (auto run = lineBreaker.nextRun(lineLogicalRight, availableWidth, !lineLogicalRight)) {
-            if (run->position == InlineLineBreaker::Run::Position::LineBegin)
-                lineLogicalRight = 0;
-            lineLogicalRight += run->width;
-
-            maxContentLogicalRight = std::max(maxContentLogicalRight, lineLogicalRight);
-        }
-        return maxContentLogicalRight;
-    };
-
-    return FormattingContext::InstrinsicWidthConstraints { maximumLineWidth(0), maximumLineWidth(LayoutUnit::max()) };
 }
-
 }
-}
 
 #endif

Modified: trunk/Source/WebCore/layout/inlineformatting/InlineFormattingContext.h (241242 => 241243)


--- trunk/Source/WebCore/layout/inlineformatting/InlineFormattingContext.h	2019-02-09 19:44:06 UTC (rev 241242)
+++ trunk/Source/WebCore/layout/inlineformatting/InlineFormattingContext.h	2019-02-09 20:37:03 UTC (rev 241243)
@@ -85,11 +85,12 @@
         static WidthAndMargin inlineBlockWidthAndMargin(LayoutState&, const Box&, UsedHorizontalValues);
     };
 
-    void layoutFormattingContextRoot(const Box&) const;
-    void computeWidthAndHeightForReplacedInlineBox(const Box&) const;
-    void computeMarginBorderAndPadding(const InlineContainer&) const;
+    void layoutFormattingContextRoot(const Box&, UsedHorizontalValues) const;
+    void computeWidthAndHeightForReplacedInlineBox(const Box&, UsedHorizontalValues) const;
+    void computeBorderAndPadding(const Box&, UsedHorizontalValues) const;
+    void computeMarginBorderAndPadding(const InlineContainer&, UsedHorizontalValues) const;
     void computeHeightAndMargin(const Box&) const;
-    void computeWidthAndMargin(const Box&) const;
+    void computeWidthAndMargin(const Box&, UsedHorizontalValues) const;
 
     void collectInlineContent(InlineRunProvider&) const;
     InstrinsicWidthConstraints instrinsicWidthConstraints() const override;

Modified: trunk/Tools/ChangeLog (241242 => 241243)


--- trunk/Tools/ChangeLog	2019-02-09 19:44:06 UTC (rev 241242)
+++ trunk/Tools/ChangeLog	2019-02-09 20:37:03 UTC (rev 241243)
@@ -1,3 +1,14 @@
+2019-02-09  Zalan Bujtas  <[email protected]>
+
+        [LFC][IFC] Add intrinsic width support for basic inline containers
+        https://bugs.webkit.org/show_bug.cgi?id=194473
+
+        Reviewed by Antti Koivisto.
+
+        Expand tests coverage (11 new tests -> 798)
+
+        * LayoutReloaded/misc/LFC-passing-tests.txt: not sure why run-singly keeps producing different ordering.
+
 2019-02-09  Benjamin Poulain  <[email protected]>
 
         Fix MiniBrowser's entitlements

Modified: trunk/Tools/LayoutReloaded/misc/LFC-passing-tests.txt (241242 => 241243)


--- trunk/Tools/LayoutReloaded/misc/LFC-passing-tests.txt	2019-02-09 19:44:06 UTC (rev 241242)
+++ trunk/Tools/LayoutReloaded/misc/LFC-passing-tests.txt	2019-02-09 20:37:03 UTC (rev 241243)
@@ -403,12 +403,12 @@
 css2.1/20110323/absolute-non-replaced-height-012.htm
 css2.1/20110323/absolute-non-replaced-max-height-001.htm
 css2.1/20110323/absolute-non-replaced-max-height-002.htm
-css2.1/t0402-c71-fwd-parsing-00-f.html
 css2.1/20110323/absolute-non-replaced-max-height-003.htm
 css2.1/20110323/absolute-non-replaced-max-height-004.htm
-css2.1/t0402-c71-fwd-parsing-01-f.html
 css2.1/20110323/absolute-non-replaced-max-height-005.htm
+css2.1/t0402-c71-fwd-parsing-00-f.html
 css2.1/20110323/absolute-non-replaced-max-height-006.htm
+css2.1/t0402-c71-fwd-parsing-01-f.html
 css2.1/20110323/absolute-non-replaced-max-height-007.htm
 css2.1/20110323/absolute-non-replaced-max-height-008.htm
 css2.1/20110323/absolute-non-replaced-max-height-009.htm
@@ -421,12 +421,12 @@
 css2.1/20110323/absolute-non-replaced-width-004.htm
 css2.1/20110323/absolute-non-replaced-width-005.htm
 css2.1/20110323/absolute-non-replaced-width-006.htm
-css2.1/t0402-c71-fwd-parsing-03-f.html
 css2.1/20110323/absolute-non-replaced-width-007.htm
 css2.1/20110323/absolute-non-replaced-width-008.htm
 css2.1/20110323/absolute-non-replaced-width-009.htm
 css2.1/20110323/absolute-non-replaced-width-010.htm
 css2.1/20110323/absolute-non-replaced-width-011.htm
+css2.1/t0402-c71-fwd-parsing-03-f.html
 css2.1/20110323/absolute-non-replaced-width-012.htm
 css2.1/20110323/absolute-non-replaced-width-013.htm
 css2.1/20110323/absolute-non-replaced-width-014.htm
@@ -474,7 +474,6 @@
 css2.1/20110323/absolute-replaced-height-026.htm
 css2.1/20110323/absolute-replaced-height-028.htm
 css2.1/20110323/absolute-replaced-height-029.htm
-css2.1/t0803-c5502-imrgn-r-00-b-ag.html
 css2.1/20110323/absolute-replaced-height-030.htm
 css2.1/20110323/absolute-replaced-height-031.htm
 css2.1/20110323/absolute-replaced-height-032.htm
@@ -481,6 +480,7 @@
 css2.1/20110323/absolute-replaced-height-033.htm
 css2.1/20110323/absolute-replaced-height-035.htm
 css2.1/20110323/absolute-replaced-height-036.htm
+css2.1/t0803-c5502-imrgn-r-00-b-ag.html
 css2.1/20110323/absolute-replaced-width-001.htm
 css2.1/20110323/absolute-replaced-width-006.htm
 css2.1/20110323/absolute-replaced-width-008.htm
@@ -496,11 +496,11 @@
 css2.1/20110323/absolute-replaced-width-055.htm
 css2.1/20110323/absolute-replaced-width-064.htm
 css2.1/20110323/absolute-replaced-width-069.htm
-css2.1/t0803-c5502-mrgn-r-02-c.html
-css2.1/t0803-c5502-mrgn-r-03-c.html
 css2.1/20110323/abspos-containing-block-initial-001.htm
 css2.1/20110323/abspos-containing-block-initial-004a.htm
+css2.1/t0803-c5502-mrgn-r-02-c.html
 css2.1/20110323/abspos-containing-block-initial-004b.htm
+css2.1/t0803-c5502-mrgn-r-03-c.html
 css2.1/t0803-c5504-imrgn-l-00-b-ag.html
 css2.1/20110323/abspos-containing-block-initial-005a.htm
 css2.1/20110323/abspos-containing-block-initial-005c.htm
@@ -510,9 +510,6 @@
 css2.1/20110323/abspos-containing-block-initial-009e.htm
 css2.1/20110323/abspos-containing-block-initial-009f.htm
 css2.1/t0803-c5504-mrgn-l-00-c-ag.html
-css2.1/t0803-c5504-mrgn-l-02-c.html
-css2.1/t0803-c5504-mrgn-l-03-c.html
-css2.1/t0803-c5505-mrgn-00-b-ag.html
 css2.1/20110323/at-import-001.htm
 css2.1/20110323/at-import-002.htm
 css2.1/20110323/at-import-003.htm
@@ -522,36 +519,37 @@
 css2.1/20110323/at-import-007.htm
 css2.1/20110323/at-import-009.htm
 css2.1/20110323/at-import-010.htm
+css2.1/t0803-c5504-mrgn-l-02-c.html
 css2.1/20110323/at-import-011.htm
+css2.1/t0803-c5504-mrgn-l-03-c.html
+css2.1/20110323/background-intrinsic-001.htm
+css2.1/20110323/background-intrinsic-002.htm
+css2.1/20110323/background-intrinsic-003.htm
+css2.1/20110323/background-intrinsic-004.htm
+css2.1/20110323/background-intrinsic-005.htm
+css2.1/t0803-c5505-mrgn-00-b-ag.html
+css2.1/20110323/background-intrinsic-007.htm
+css2.1/20110323/background-intrinsic-008.htm
+css2.1/20110323/background-intrinsic-009.htm
+css2.1/20110323/block-non-replaced-height-001.htm
+css2.1/20110323/block-non-replaced-height-003.htm
 css2.1/t0803-c5505-mrgn-03-c-ag.html
 css2.1/t0804-c5506-ipadn-t-00-b-a.html
 css2.1/t0804-c5506-ipadn-t-01-b-a.html
 css2.1/t0804-c5506-ipadn-t-02-b-a.html
 css2.1/t0804-c5507-ipadn-r-00-b-ag.html
-css2.1/20110323/background-intrinsic-003.htm
+css2.1/20110323/block-non-replaced-height-007.htm
+css2.1/20110323/block-non-replaced-height-009.htm
+css2.1/20110323/block-non-replaced-height-011.htm
 css2.1/t0804-c5507-padn-r-00-c-ag.html
-css2.1/20110323/background-intrinsic-008.htm
-css2.1/20110323/background-intrinsic-009.htm
-css2.1/20110323/block-non-replaced-height-001.htm
+css2.1/20110323/block-non-replaced-height-013.htm
 css2.1/t0804-c5507-padn-r-02-f.html
 css2.1/t0804-c5507-padn-r-03-f.html
 css2.1/t0804-c5508-ipadn-b-00-b-a.html
 css2.1/t0804-c5508-ipadn-b-01-f-a.html
 css2.1/t0804-c5508-ipadn-b-02-b-a.html
-css2.1/20110323/block-non-replaced-height-003.htm
+css2.1/20110323/block-non-replaced-height-015.htm
 css2.1/t0804-c5509-ipadn-l-00-b-ag.html
-css2.1/20110323/block-non-replaced-height-007.htm
-css2.1/20110323/block-non-replaced-height-009.htm
-css2.1/t0804-c5509-padn-l-00-b-ag.html
-css2.1/20110323/block-non-replaced-height-011.htm
-css2.1/t0804-c5509-padn-l-02-f.html
-css2.1/20110323/block-non-replaced-height-013.htm
-css2.1/20110323/block-non-replaced-height-015.htm
-css2.1/t0804-c5510-padn-00-b-ag.html
-css2.1/t0804-c5510-padn-02-f.html
-css2.1/t0805-c5511-brdr-tw-01-b-g.html
-css2.1/t0805-c5511-brdr-tw-02-b.html
-css2.1/t0805-c5511-brdr-tw-03-b.html
 css2.1/20110323/block-non-replaced-width-003.htm
 css2.1/20110323/block-non-replaced-width-004.htm
 css2.1/20110323/block-non-replaced-width-005.htm
@@ -559,10 +557,6 @@
 css2.1/20110323/block-non-replaced-width-007.htm
 css2.1/20110323/block-non-replaced-width-008.htm
 css2.1/20110323/block-replaced-height-001.htm
-css2.1/t0805-c5512-brdr-rw-00-b.html
-css2.1/t0805-c5512-brdr-rw-01-b-g.html
-css2.1/t0805-c5512-brdr-rw-02-b.html
-css2.1/t0805-c5512-brdr-rw-03-b.html
 css2.1/20110323/block-replaced-height-003.htm
 css2.1/20110323/block-replaced-height-004.htm
 css2.1/20110323/block-replaced-height-005.htm
@@ -569,6 +563,17 @@
 css2.1/20110323/block-replaced-height-007.htm
 css2.1/20110323/block-replaced-width-001.htm
 css2.1/20110323/block-replaced-width-006.htm
+css2.1/t0804-c5509-padn-l-00-b-ag.html
+css2.1/t0804-c5509-padn-l-02-f.html
+css2.1/t0804-c5510-padn-00-b-ag.html
+css2.1/t0804-c5510-padn-02-f.html
+css2.1/t0805-c5511-brdr-tw-01-b-g.html
+css2.1/t0805-c5511-brdr-tw-02-b.html
+css2.1/t0805-c5511-brdr-tw-03-b.html
+css2.1/t0805-c5512-brdr-rw-00-b.html
+css2.1/t0805-c5512-brdr-rw-01-b-g.html
+css2.1/t0805-c5512-brdr-rw-02-b.html
+css2.1/t0805-c5512-brdr-rw-03-b.html
 css2.1/t0805-c5513-brdr-bw-01-b-g.html
 css2.1/t0805-c5513-brdr-bw-02-b.html
 css2.1/t0805-c5513-brdr-bw-03-b.html
@@ -597,6 +602,8 @@
 css2.1/t1001-abs-pos-cb-02-b.html
 css2.1/t1001-abs-pos-cb-03-b.html
 css2.1/t1001-abs-pos-cb-04-b.html
+css2.1/t1001-abs-pos-cb-05-b.html
+css2.1/t1001-abs-pos-cb-06-b.html
 css2.1/t1001-abs-pos-cb-07-b.html
 css2.1/t1001-abs-pos-cb-08-b.html
 css2.1/t1001-abs-pos-cb-09-b.html
@@ -643,6 +650,7 @@
 css2.1/20110323/dynamic-top-change-001.htm
 css2.1/20110323/dynamic-top-change-004.htm
 css2.1/t1604-c542-letter-sp-00-b-a.html
+css2.1/20110323/empty-inline-001.htm
 css2.1/t1605-c545-txttrans-00-b-ag.html
 css2.1/t010403-shand-border-00-c.html
 css2.1/t010403-shand-font-00-b.html
@@ -661,13 +669,20 @@
 css2.1/t040103-escapes-05-c.html
 css2.1/t040103-escapes-06-b.html
 css2.1/t040103-escapes-07-b.html
+css2.1/20110323/eof-001.htm
 css2.1/t040103-escapes-08-b.html
+css2.1/20110323/eof-002.htm
 css2.1/t040103-ident-00-c.html
+css2.1/20110323/eof-003.htm
 css2.1/t040103-ident-01-c.html
+css2.1/20110323/eof-004.htm
 css2.1/t040103-ident-02-c.html
+css2.1/20110323/eof-005.htm
 css2.1/t040103-ident-03-c.html
 css2.1/t040103-ident-04-c.html
+css2.1/20110323/eof-006.htm
 css2.1/t040103-ident-05-c.html
+css2.1/20110323/eof-007.htm
 css2.1/t040103-ident-06-c.html
 css2.1/t040103-ident-07-c.html
 css2.1/t040103-ident-08-c.html
@@ -689,29 +704,18 @@
 css2.1/t040105-import-10-b.html
 css2.1/t040109-c17-comments-00-b.html
 css2.1/t040109-c17-comments-01-b.html
-css2.1/20110323/empty-inline-001.htm
 css2.1/t040302-c61-phys-len-00-b.html
 css2.1/t040302-c61-rel-len-00-b-ag.html
 css2.1/t040303-c62-percent-00-b-ag.html
 css2.1/t040304-c64-uri-00-a-g.html
-css2.1/20110323/eof-001.htm
 css2.1/t040306-syntax-01-f.html
-css2.1/20110323/eof-002.htm
 css2.1/t040307-syntax-01-b.html
-css2.1/20110323/eof-003.htm
 css2.1/t050201-c12-grouping-00-b.html
-css2.1/20110323/eof-004.htm
-css2.1/20110323/eof-005.htm
-css2.1/20110323/eof-006.htm
-css2.1/20110323/eof-007.htm
 css2.1/t051103-c21-activ-ln-00-e-i.html
 css2.1/t051103-c21-focus-ln-00-e-i.html
 css2.1/t051103-c21-hover-ln-00-e-i.html
 css2.1/t051103-dom-hover-01-c-io.html
 css2.1/t051103-dom-hover-02-c-io.html
-css2.1/t060402-c31-important-00-b.html
-css2.1/t060403-c21-pseu-cls-00-e-i.html
-css2.1/t060403-c21-pseu-id-00-e-i.html
 css2.1/20110323/float-non-replaced-height-001.htm
 css2.1/20110323/float-non-replaced-width-001.htm
 css2.1/20110323/float-non-replaced-width-002.htm
@@ -719,11 +723,13 @@
 css2.1/20110323/float-non-replaced-width-004.htm
 css2.1/20110323/float-non-replaced-width-005.htm
 css2.1/20110323/float-non-replaced-width-006.htm
-css2.1/t090501-c414-flt-00-d.html
-css2.1/t090501-c414-flt-02-d-g.html
+css2.1/t060402-c31-important-00-b.html
+css2.1/t060403-c21-pseu-cls-00-e-i.html
+css2.1/t060403-c21-pseu-id-00-e-i.html
 css2.1/20110323/float-non-replaced-width-010.htm
 css2.1/20110323/float-non-replaced-width-012.htm
 css2.1/20110323/float-replaced-height-001.htm
+css2.1/t090501-c414-flt-00-d.html
 css2.1/20110323/float-replaced-height-004.htm
 css2.1/20110323/float-replaced-height-005.htm
 css2.1/20110323/float-replaced-height-007.htm
@@ -734,6 +740,7 @@
 css2.1/20110323/float-replaced-width-005.htm
 css2.1/20110323/float-replaced-width-006.htm
 css2.1/20110323/float-replaced-width-011.htm
+css2.1/t090501-c414-flt-02-d-g.html
 css2.1/20110323/floats-001.html
 css2.1/t100303-c412-blockw-00-d-ag.html
 css2.1/t100801-c544-valgn-04-d-agi.html
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to