| Differences between
and this patch
- a/Source/WebCore/ChangeLog +57 lines
Lines 1-3 a/Source/WebCore/ChangeLog_sec1
1
2021-04-06  Rob Buis  <rbuis@igalia.com>
2
3
        Support contain: layout
4
        https://bugs.webkit.org/show_bug.cgi?id=223569
5
6
        Reviewed by NOBODY (OOPS!).
7
8
        This patch implements layout containment as specified[1].
9
        It adds shouldApplyLayoutContainment to check whether the
10
        element applies for layout containment. Is so, then:
11
        - an independent formatting context is established.
12
        - any overflow is treated as ink overflow.
13
        - an absolute positioning and fixed positioning
14
        containing block is established.
15
        - a stacking context is created.
16
        - for baseline handling, the box is treated as having no
17
        baseline. For grid/flexible box containers/items, this needs
18
        a baseline synthesized from the border edges [2], for buttons it
19
        requires a baseline synthesized from the margin edges [2, 3].
20
21
        [1] https://drafts.csswg.org/css-contain-2/#layout-containment
22
        [2] https://drafts.csswg.org/css-align-3/#synthesize-baseline
23
        [3] https://www.w3.org/TR/CSS2/visudet.html#propdef-vertical-align
24
25
        * rendering/RenderBlock.cpp:
26
        (WebCore::RenderBlock::firstLineBaseline const):
27
        (WebCore::RenderBlock::inlineBlockBaseline const):
28
        * rendering/RenderBlockFlow.cpp:
29
        (WebCore::RenderBlockFlow::firstLineBaseline const):
30
        (WebCore::RenderBlockFlow::inlineBlockBaseline const):
31
        * rendering/RenderBox.cpp:
32
        (WebCore::RenderBox::createsNewFormattingContext const):
33
        (WebCore::RenderBox::layoutOverflowRectForPropagation const):
34
        * rendering/RenderBox.h:
35
        * rendering/RenderButton.cpp:
36
        (WebCore::RenderButton::baselinePosition const):
37
        * rendering/RenderElement.h:
38
        (WebCore::RenderElement::canContainFixedPositionObjects const):
39
        (WebCore::RenderElement::canContainAbsolutelyPositionedObjects const):
40
        * rendering/RenderFlexibleBox.cpp:
41
        (WebCore::RenderFlexibleBox::firstLineBaseline const):
42
        * rendering/RenderGrid.cpp:
43
        (WebCore::RenderGrid::firstLineBaseline const):
44
        * rendering/RenderLayer.cpp:
45
        (WebCore::RenderLayer::shouldBeCSSStackingContext const):
46
        * rendering/RenderListBox.cpp:
47
        (WebCore::RenderListBox::baselinePosition const):
48
        * rendering/RenderObject.cpp:
49
        (WebCore::objectIsRelayoutBoundary):
50
        * rendering/RenderObject.h:
51
        (WebCore::RenderObject::isAtomicInlineLevelBox const):
52
        (WebCore::RenderObject::shouldApplyLayoutContainment const):
53
        * rendering/RenderTable.cpp:
54
        (WebCore::RenderTable::firstLineBaseline const):
55
        * rendering/style/RenderStyle.h:
56
        (WebCore::RenderStyle::containsLayout const):
57
1
2021-04-06  Frédéric Wang  <fwang@igalia.com>
58
2021-04-06  Frédéric Wang  <fwang@igalia.com>
2
59
3
        Nullptr crash in EventPath::eventTargetRespectingTargetRules
60
        Nullptr crash in EventPath::eventTargetRespectingTargetRules
- a/Source/WebCore/rendering/RenderBlock.cpp +6 lines
Lines 2553-2558 LayoutUnit RenderBlock::minLineHeightForReplacedRenderer(bool isFirstLine, Layou a/Source/WebCore/rendering/RenderBlock.cpp_sec1
2553
2553
2554
Optional<LayoutUnit> RenderBlock::firstLineBaseline() const
2554
Optional<LayoutUnit> RenderBlock::firstLineBaseline() const
2555
{
2555
{
2556
    if (shouldApplyLayoutContainment())
2557
        return Optional<LayoutUnit>();
2558
2556
    if (isWritingModeRoot() && !isRubyRun())
2559
    if (isWritingModeRoot() && !isRubyRun())
2557
        return Optional<LayoutUnit>();
2560
        return Optional<LayoutUnit>();
2558
2561
Lines 2568-2573 Optional<LayoutUnit> RenderBlock::firstLineBaseline() const a/Source/WebCore/rendering/RenderBlock.cpp_sec2
2568
2571
2569
Optional<LayoutUnit> RenderBlock::inlineBlockBaseline(LineDirectionMode lineDirection) const
2572
Optional<LayoutUnit> RenderBlock::inlineBlockBaseline(LineDirectionMode lineDirection) const
2570
{
2573
{
2574
    if (shouldApplyLayoutContainment())
2575
        return Optional<LayoutUnit>(synthesizedBaselineFromBorderBox(*this, lineDirection) + (lineDirection == HorizontalLine ? marginBottom(): marginLeft()));
2576
2571
    if (isWritingModeRoot() && !isRubyRun())
2577
    if (isWritingModeRoot() && !isRubyRun())
2572
        return Optional<LayoutUnit>();
2578
        return Optional<LayoutUnit>();
2573
2579
- a/Source/WebCore/rendering/RenderBlockFlow.cpp +6 lines
Lines 3111-3116 Optional<LayoutUnit> RenderBlockFlow::firstLineBaseline() const a/Source/WebCore/rendering/RenderBlockFlow.cpp_sec1
3111
    if (isWritingModeRoot() && !isRubyRun() && !isGridItem())
3111
    if (isWritingModeRoot() && !isRubyRun() && !isGridItem())
3112
        return WTF::nullopt;
3112
        return WTF::nullopt;
3113
3113
3114
    if (shouldApplyLayoutContainment())
3115
        return WTF::nullopt;
3116
3114
    if (!childrenInline())
3117
    if (!childrenInline())
3115
        return RenderBlock::firstLineBaseline();
3118
        return RenderBlock::firstLineBaseline();
3116
3119
Lines 3133-3138 Optional<LayoutUnit> RenderBlockFlow::inlineBlockBaseline(LineDirectionMode line a/Source/WebCore/rendering/RenderBlockFlow.cpp_sec2
3133
    if (isWritingModeRoot() && !isRubyRun())
3136
    if (isWritingModeRoot() && !isRubyRun())
3134
        return WTF::nullopt;
3137
        return WTF::nullopt;
3135
3138
3139
    if (shouldApplyLayoutContainment())
3140
        return RenderBlock::inlineBlockBaseline(lineDirection);
3141
3136
    if (style().display() == DisplayType::InlineBlock) {
3142
    if (style().display() == DisplayType::InlineBlock) {
3137
        // The baseline of an 'inline-block' is the baseline of its last line box in the normal flow, unless it has either no in-flow line boxes or if its 'overflow'
3143
        // The baseline of an 'inline-block' is the baseline of its last line box in the normal flow, unless it has either no in-flow line boxes or if its 'overflow'
3138
        // property has a computed value other than 'visible'. see https://www.w3.org/TR/CSS22/visudet.html
3144
        // property has a computed value other than 'visible'. see https://www.w3.org/TR/CSS22/visudet.html
- a/Source/WebCore/rendering/RenderBox.cpp -2 / +2 lines
Lines 4677-4683 bool RenderBox::createsNewFormattingContext() const a/Source/WebCore/rendering/RenderBox.cpp_sec1
4677
{
4677
{
4678
    return isInlineBlockOrInlineTable() || isFloatingOrOutOfFlowPositioned() || hasOverflowClip() || isFlexItemIncludingDeprecated()
4678
    return isInlineBlockOrInlineTable() || isFloatingOrOutOfFlowPositioned() || hasOverflowClip() || isFlexItemIncludingDeprecated()
4679
        || isTableCell() || isTableCaption() || isFieldset() || isWritingModeRoot() || isDocumentElementRenderer() || isRenderFragmentedFlow() || isRenderFragmentContainer()
4679
        || isTableCell() || isTableCaption() || isFieldset() || isWritingModeRoot() || isDocumentElementRenderer() || isRenderFragmentedFlow() || isRenderFragmentContainer()
4680
        || isGridItem() || style().specifiesColumns() || style().columnSpan() == ColumnSpan::All || style().display() == DisplayType::FlowRoot;
4680
        || style().containsLayout() || isGridItem() || style().specifiesColumns() || style().columnSpan() == ColumnSpan::All || style().display() == DisplayType::FlowRoot;
4681
}
4681
}
4682
4682
4683
bool RenderBox::avoidsFloats() const
4683
bool RenderBox::avoidsFloats() const
Lines 4924-4930 LayoutRect RenderBox::layoutOverflowRectForPropagation(const RenderStyle* parent a/Source/WebCore/rendering/RenderBox.cpp_sec2
4924
{
4924
{
4925
    // Only propagate interior layout overflow if we don't clip it.
4925
    // Only propagate interior layout overflow if we don't clip it.
4926
    LayoutRect rect = borderBoxRect();
4926
    LayoutRect rect = borderBoxRect();
4927
    if (!hasOverflowClip())
4927
    if (!shouldApplyLayoutContainment() && !hasOverflowClip())
4928
        rect.unite(layoutOverflowRect());
4928
        rect.unite(layoutOverflowRect());
4929
4929
4930
    bool hasTransform = this->hasTransform();
4930
    bool hasTransform = this->hasTransform();
- a/Source/WebCore/rendering/RenderBox.h -1 / +1 lines
Lines 54-60 public: a/Source/WebCore/rendering/RenderBox.h_sec1
54
    {
54
    {
55
        return isDocumentElementRenderer() || isPositioned() || createsGroup() || hasOverflowClip()
55
        return isDocumentElementRenderer() || isPositioned() || createsGroup() || hasOverflowClip()
56
            || hasTransformRelatedProperty() || hasHiddenBackface() || hasReflection() || style().specifiesColumns()
56
            || hasTransformRelatedProperty() || hasHiddenBackface() || hasReflection() || style().specifiesColumns()
57
            || !style().hasAutoUsedZIndex() || hasRunningAcceleratedAnimations();
57
            || style().containsLayout() || !style().hasAutoUsedZIndex() || hasRunningAcceleratedAnimations();
58
    }
58
    }
59
59
60
    bool requiresLayerWithScrollableArea() const;
60
    bool requiresLayerWithScrollableArea() const;
- a/Source/WebCore/rendering/RenderButton.cpp -1 / +3 lines
Lines 148-155 static int synthesizedBaselineFromContentBox(const RenderBox& box, LineDirection a/Source/WebCore/rendering/RenderButton.cpp_sec1
148
    return direction == HorizontalLine ? box.borderTop() + box.paddingTop() + box.contentHeight() : box.borderRight() + box.paddingRight() + box.contentWidth();
148
    return direction == HorizontalLine ? box.borderTop() + box.paddingTop() + box.contentHeight() : box.borderRight() + box.paddingRight() + box.contentWidth();
149
}
149
}
150
150
151
LayoutUnit RenderButton::baselinePosition(FontBaseline, bool, LineDirectionMode direction, LinePositionMode) const
151
LayoutUnit RenderButton::baselinePosition(FontBaseline fontBaseline, bool firstLine, LineDirectionMode direction, LinePositionMode mode) const
152
{
152
{
153
    if (shouldApplyLayoutContainment())
154
        return RenderFlexibleBox::baselinePosition(fontBaseline, firstLine, direction, mode);
153
    // We cannot rely on RenderFlexibleBox::baselinePosition() because of flexboxes have some special behavior
155
    // We cannot rely on RenderFlexibleBox::baselinePosition() because of flexboxes have some special behavior
154
    // regarding baselines that shouldn't apply to buttons.
156
    // regarding baselines that shouldn't apply to buttons.
155
    int baseline = firstLineBaseline().valueOr(synthesizedBaselineFromContentBox(*this, direction));
157
    int baseline = firstLineBaseline().valueOr(synthesizedBaselineFromContentBox(*this, direction));
- a/Source/WebCore/rendering/RenderElement.h +2 lines
Lines 429-434 inline bool RenderElement::canContainFixedPositionObjects() const a/Source/WebCore/rendering/RenderElement.h_sec1
429
    return isRenderView()
429
    return isRenderView()
430
        || (hasTransform() && isRenderBlock())
430
        || (hasTransform() && isRenderBlock())
431
        || isSVGForeignObject()
431
        || isSVGForeignObject()
432
        || shouldApplyLayoutContainment()
432
        || isOutOfFlowRenderFragmentedFlow();
433
        || isOutOfFlowRenderFragmentedFlow();
433
}
434
}
434
435
Lines 437-442 inline bool RenderElement::canContainAbsolutelyPositionedObjects() const a/Source/WebCore/rendering/RenderElement.h_sec2
437
    return style().position() != PositionType::Static
438
    return style().position() != PositionType::Static
438
        || (isRenderBlock() && hasTransformRelatedProperty())
439
        || (isRenderBlock() && hasTransformRelatedProperty())
439
        || isSVGForeignObject()
440
        || isSVGForeignObject()
441
        || shouldApplyLayoutContainment()
440
        || isRenderView();
442
        || isRenderView();
441
}
443
}
442
444
- a/Source/WebCore/rendering/RenderFlexibleBox.cpp -1 / +1 lines
Lines 155-161 LayoutUnit RenderFlexibleBox::baselinePosition(FontBaseline, bool, LineDirection a/Source/WebCore/rendering/RenderFlexibleBox.cpp_sec1
155
155
156
Optional<LayoutUnit> RenderFlexibleBox::firstLineBaseline() const
156
Optional<LayoutUnit> RenderFlexibleBox::firstLineBaseline() const
157
{
157
{
158
    if (isWritingModeRoot() || m_numberOfInFlowChildrenOnFirstLine <= 0)
158
    if (isWritingModeRoot() || m_numberOfInFlowChildrenOnFirstLine <= 0 || shouldApplyLayoutContainment())
159
        return Optional<LayoutUnit>();
159
        return Optional<LayoutUnit>();
160
    RenderBox* baselineChild = nullptr;
160
    RenderBox* baselineChild = nullptr;
161
    int childNumber = 0;
161
    int childNumber = 0;
- a/Source/WebCore/rendering/RenderGrid.cpp -1 / +1 lines
Lines 1259-1265 LayoutUnit RenderGrid::baselinePosition(FontBaseline, bool, LineDirectionMode di a/Source/WebCore/rendering/RenderGrid.cpp_sec1
1259
1259
1260
Optional<LayoutUnit> RenderGrid::firstLineBaseline() const
1260
Optional<LayoutUnit> RenderGrid::firstLineBaseline() const
1261
{
1261
{
1262
    if (isWritingModeRoot() || !m_grid.hasGridItems())
1262
    if (isWritingModeRoot() || !m_grid.hasGridItems() || shouldApplyLayoutContainment())
1263
        return WTF::nullopt;
1263
        return WTF::nullopt;
1264
1264
1265
    const RenderBox* baselineChild = nullptr;
1265
    const RenderBox* baselineChild = nullptr;
- a/Source/WebCore/rendering/RenderLayer.cpp -1 / +1 lines
Lines 581-587 bool RenderLayer::shouldBeNormalFlowOnly() const a/Source/WebCore/rendering/RenderLayer.cpp_sec1
581
581
582
bool RenderLayer::shouldBeCSSStackingContext() const
582
bool RenderLayer::shouldBeCSSStackingContext() const
583
{
583
{
584
    return !renderer().style().hasAutoUsedZIndex() || isRenderViewLayer();
584
    return renderer().shouldApplyLayoutContainment() || !renderer().style().hasAutoUsedZIndex() || isRenderViewLayer();
585
}
585
}
586
586
587
bool RenderLayer::setIsNormalFlowOnly(bool isNormalFlowOnly)
587
bool RenderLayer::setIsNormalFlowOnly(bool isNormalFlowOnly)
- a/Source/WebCore/rendering/RenderListBox.cpp -1 / +4 lines
Lines 275-281 RenderBox::LogicalExtentComputedValues RenderListBox::computeLogicalHeight(Layou a/Source/WebCore/rendering/RenderListBox.cpp_sec1
275
275
276
LayoutUnit RenderListBox::baselinePosition(FontBaseline baselineType, bool firstLine, LineDirectionMode lineDirection, LinePositionMode linePositionMode) const
276
LayoutUnit RenderListBox::baselinePosition(FontBaseline baselineType, bool firstLine, LineDirectionMode lineDirection, LinePositionMode linePositionMode) const
277
{
277
{
278
    return RenderBox::baselinePosition(baselineType, firstLine, lineDirection, linePositionMode) - baselineAdjustment;
278
    auto baseline = RenderBox::baselinePosition(baselineType, firstLine, lineDirection, linePositionMode);
279
    if (!shouldApplyLayoutContainment())
280
        baseline -= baselineAdjustment;
281
    return baseline;
279
}
282
}
280
283
281
LayoutRect RenderListBox::itemBoundingBoxRect(const LayoutPoint& additionalOffset, int index)
284
LayoutRect RenderListBox::itemBoundingBoxRect(const LayoutPoint& additionalOffset, int index)
- a/Source/WebCore/rendering/RenderObject.cpp +3 lines
Lines 502-507 static inline bool objectIsRelayoutBoundary(const RenderElement* object) a/Source/WebCore/rendering/RenderObject.cpp_sec1
502
    if (object->isTextControl())
502
    if (object->isTextControl())
503
        return true;
503
        return true;
504
504
505
    if (object->shouldApplyLayoutContainment())
506
        return true;
507
505
    if (object->isSVGRoot())
508
    if (object->isSVGRoot())
506
        return true;
509
        return true;
507
510
- a/Source/WebCore/rendering/RenderObject.h +10 lines
Lines 183-188 public: a/Source/WebCore/rendering/RenderObject.h_sec1
183
    virtual bool createsAnonymousWrapper() const { return false; }
183
    virtual bool createsAnonymousWrapper() const { return false; }
184
    //////////////////////////////////////////
184
    //////////////////////////////////////////
185
185
186
    bool isAtomicInlineLevelBox() const
187
    {
188
        return style().isDisplayInlineType() && !(style().display() == DisplayType::Inline && !isReplaced());
189
    }
190
191
    inline bool shouldApplyLayoutContainment() const
192
    {
193
        return style().containsLayout() && (!isInline() || isAtomicInlineLevelBox()) && !isRubyText() && (!isTablePart() || isRenderBlockFlow());
194
    }
195
186
#if ENABLE(TREE_DEBUGGING)
196
#if ENABLE(TREE_DEBUGGING)
187
    void showNodeTreeForThis() const;
197
    void showNodeTreeForThis() const;
188
    void showRenderTreeForThis() const;
198
    void showRenderTreeForThis() const;
- a/Source/WebCore/rendering/RenderTable.cpp -1 / +1 lines
Lines 1500-1506 Optional<LayoutUnit> RenderTable::firstLineBaseline() const a/Source/WebCore/rendering/RenderTable.cpp_sec1
1500
    // doesn't define the baseline of a 'table' only an 'inline-table').
1500
    // doesn't define the baseline of a 'table' only an 'inline-table').
1501
    // This is also needed to properly determine the baseline of a cell if it has a table child.
1501
    // This is also needed to properly determine the baseline of a cell if it has a table child.
1502
1502
1503
    if (isWritingModeRoot())
1503
    if (isWritingModeRoot() || shouldApplyLayoutContainment())
1504
        return Optional<LayoutUnit>();
1504
        return Optional<LayoutUnit>();
1505
1505
1506
    recalcSectionsIfNeeded();
1506
    recalcSectionsIfNeeded();
- a/Source/WebCore/rendering/style/RenderStyle.h +1 lines
Lines 522-527 public: a/Source/WebCore/rendering/style/RenderStyle.h_sec1
522
    }
522
    }
523
    bool hasAspectRatio() const { return aspectRatioType() == AspectRatioType::Ratio || aspectRatioType() == AspectRatioType::AutoAndRatio; }
523
    bool hasAspectRatio() const { return aspectRatioType() == AspectRatioType::Ratio || aspectRatioType() == AspectRatioType::AutoAndRatio; }
524
    OptionSet<Containment> contain() const { return m_rareNonInheritedData->contain; }
524
    OptionSet<Containment> contain() const { return m_rareNonInheritedData->contain; }
525
    bool containsLayout() const { return m_rareNonInheritedData->contain.contains(Containment::Layout); }
525
    BoxAlignment boxAlign() const { return static_cast<BoxAlignment>(m_rareNonInheritedData->deprecatedFlexibleBox->align); }
526
    BoxAlignment boxAlign() const { return static_cast<BoxAlignment>(m_rareNonInheritedData->deprecatedFlexibleBox->align); }
526
    BoxDirection boxDirection() const { return static_cast<BoxDirection>(m_inheritedFlags.boxDirection); }
527
    BoxDirection boxDirection() const { return static_cast<BoxDirection>(m_inheritedFlags.boxDirection); }
527
    float boxFlex() const { return m_rareNonInheritedData->deprecatedFlexibleBox->flex; }
528
    float boxFlex() const { return m_rareNonInheritedData->deprecatedFlexibleBox->flex; }
- a/LayoutTests/ChangeLog +11 lines
Lines 1-3 a/LayoutTests/ChangeLog_sec1
1
2021-04-06  Rob Buis  <rbuis@igalia.com>
2
3
        Support contain: layout
4
        https://bugs.webkit.org/show_bug.cgi?id=223569
5
6
        Reviewed by NOBODY (OOPS!).
7
8
        Unskip tests that pass now.
9
10
        * TestExpectations:
11
1
2021-04-06  Frédéric Wang  <fwang@igalia.com>
12
2021-04-06  Frédéric Wang  <fwang@igalia.com>
2
13
3
        Nullptr crash in EventPath::eventTargetRespectingTargetRules
14
        Nullptr crash in EventPath::eventTargetRespectingTargetRules
- a/LayoutTests/TestExpectations -39 / +2 lines
Lines 4691-4711 webkit.org/b/220928 imported/w3c/web-platform-tests/css/css-color/predefined-015 a/LayoutTests/TestExpectations_sec1
4691
4691
4692
# CSS containment tests that fail
4692
# CSS containment tests that fail
4693
imported/w3c/web-platform-tests/css/css-contain/contain-animation-001.html [ ImageOnlyFailure ]
4693
imported/w3c/web-platform-tests/css/css-contain/contain-animation-001.html [ ImageOnlyFailure ]
4694
imported/w3c/web-platform-tests/css/css-contain/contain-content-001.html [ ImageOnlyFailure ]
4694
# webkit-ruby-text
4695
imported/w3c/web-platform-tests/css/css-contain/contain-content-002.html [ ImageOnlyFailure ]
4695
imported/w3c/web-platform-tests/css/css-contain/contain-layout-017.html [ ImageOnlyFailure ]
4696
imported/w3c/web-platform-tests/css/css-contain/contain-content-003.html [ ImageOnlyFailure ]
4697
imported/w3c/web-platform-tests/css/css-contain/contain-content-004.html [ ImageOnlyFailure ]
4698
imported/w3c/web-platform-tests/css/css-contain/contain-content-011.html [ ImageOnlyFailure ]
4699
imported/w3c/web-platform-tests/css/css-contain/contain-layout-006.html [ ImageOnlyFailure ]
4700
imported/w3c/web-platform-tests/css/css-contain/contain-layout-007.html [ ImageOnlyFailure ]
4701
imported/w3c/web-platform-tests/css/css-contain/contain-layout-013.html [ ImageOnlyFailure ]
4702
imported/w3c/web-platform-tests/css/css-contain/contain-layout-014.html [ ImageOnlyFailure ]
4703
imported/w3c/web-platform-tests/css/css-contain/contain-layout-016.html [ ImageOnlyFailure ]
4704
imported/w3c/web-platform-tests/css/css-contain/contain-layout-baseline-001.html [ ImageOnlyFailure ]
4705
imported/w3c/web-platform-tests/css/css-contain/contain-layout-baseline-002.html [ ImageOnlyFailure ]
4706
imported/w3c/web-platform-tests/css/css-contain/contain-layout-baseline-003.html [ ImageOnlyFailure ]
4707
imported/w3c/web-platform-tests/css/css-contain/contain-layout-baseline-004.html [ ImageOnlyFailure ]
4708
imported/w3c/web-platform-tests/css/css-contain/contain-layout-baseline-005.html [ ImageOnlyFailure ]
4709
imported/w3c/web-platform-tests/css/css-contain/content-visibility/content-visibility-001.html [ ImageOnlyFailure ]
4696
imported/w3c/web-platform-tests/css/css-contain/content-visibility/content-visibility-001.html [ ImageOnlyFailure ]
4710
imported/w3c/web-platform-tests/css/css-contain/content-visibility/content-visibility-003.html [ ImageOnlyFailure ]
4697
imported/w3c/web-platform-tests/css/css-contain/content-visibility/content-visibility-003.html [ ImageOnlyFailure ]
4711
imported/w3c/web-platform-tests/css/css-contain/content-visibility/content-visibility-004.html [ ImageOnlyFailure ]
4698
imported/w3c/web-platform-tests/css/css-contain/content-visibility/content-visibility-004.html [ ImageOnlyFailure ]
Lines 4720-4750 imported/w3c/web-platform-tests/css/css-contain/content-visibility/content-visib a/LayoutTests/TestExpectations_sec2
4720
imported/w3c/web-platform-tests/css/css-contain/content-visibility/content-visibility-020.html [ ImageOnlyFailure ]
4707
imported/w3c/web-platform-tests/css/css-contain/content-visibility/content-visibility-020.html [ ImageOnlyFailure ]
4721
imported/w3c/web-platform-tests/css/css-contain/content-visibility/content-visibility-021.html [ ImageOnlyFailure ]
4708
imported/w3c/web-platform-tests/css/css-contain/content-visibility/content-visibility-021.html [ ImageOnlyFailure ]
4722
imported/w3c/web-platform-tests/css/css-contain/content-visibility/content-visibility-022.html [ ImageOnlyFailure ]
4709
imported/w3c/web-platform-tests/css/css-contain/content-visibility/content-visibility-022.html [ ImageOnlyFailure ]
4723
imported/w3c/web-platform-tests/css/css-contain/contain-layout-button-001.html [ ImageOnlyFailure ]
4724
imported/w3c/web-platform-tests/css/css-contain/contain-layout-cell-001.html [ ImageOnlyFailure ]
4725
imported/w3c/web-platform-tests/css/css-contain/contain-layout-cell-002.html [ ImageOnlyFailure ]
4726
imported/w3c/web-platform-tests/css/css-contain/contain-layout-containing-block-absolute-001.html [ ImageOnlyFailure ]
4727
imported/w3c/web-platform-tests/css/css-contain/contain-layout-containing-block-fixed-001.html [ ImageOnlyFailure ]
4728
imported/w3c/web-platform-tests/css/css-contain/contain-layout-flexbox-001.html [ ImageOnlyFailure ]
4729
imported/w3c/web-platform-tests/css/css-contain/contain-layout-formatting-context-float-001.html [ ImageOnlyFailure ]
4730
imported/w3c/web-platform-tests/css/css-contain/contain-layout-formatting-context-margin-001.html [ ImageOnlyFailure ]
4731
imported/w3c/web-platform-tests/css/css-contain/contain-layout-grid-001.html [ ImageOnlyFailure ]
4732
imported/w3c/web-platform-tests/css/css-contain/contain-layout-ifc-022.html [ ImageOnlyFailure ]
4733
imported/w3c/web-platform-tests/css/css-contain/contain-layout-independent-formatting-context-001.html [ ImageOnlyFailure ]
4734
imported/w3c/web-platform-tests/css/css-contain/contain-layout-ink-overflow-013.html [ ImageOnlyFailure ]
4735
imported/w3c/web-platform-tests/css/css-contain/contain-layout-ink-overflow-014.html [ ImageOnlyFailure ]
4736
imported/w3c/web-platform-tests/css/css-contain/contain-layout-ink-overflow-015.html [ ImageOnlyFailure ]
4737
imported/w3c/web-platform-tests/css/css-contain/contain-layout-ink-overflow-016.html [ ImageOnlyFailure ]
4738
imported/w3c/web-platform-tests/css/css-contain/contain-layout-ink-overflow-017.html [ ImageOnlyFailure ]
4739
imported/w3c/web-platform-tests/css/css-contain/contain-layout-ink-overflow-018.html [ ImageOnlyFailure ]
4740
imported/w3c/web-platform-tests/css/css-contain/contain-layout-ink-overflow-019.html [ ImageOnlyFailure ]
4741
imported/w3c/web-platform-tests/css/css-contain/contain-layout-ink-overflow-020.html [ ImageOnlyFailure ]
4742
imported/w3c/web-platform-tests/css/css-contain/contain-layout-overflow-001.html [ ImageOnlyFailure ]
4743
imported/w3c/web-platform-tests/css/css-contain/contain-layout-overflow-002.html [ ImageOnlyFailure ]
4744
imported/w3c/web-platform-tests/css/css-contain/contain-layout-size-003.html [ ImageOnlyFailure ]
4710
imported/w3c/web-platform-tests/css/css-contain/contain-layout-size-003.html [ ImageOnlyFailure ]
4745
imported/w3c/web-platform-tests/css/css-contain/contain-layout-stacking-context-001.html [ ImageOnlyFailure ]
4746
imported/w3c/web-platform-tests/css/css-contain/contain-layout-suppress-baseline-001.html [ ImageOnlyFailure ]
4747
imported/w3c/web-platform-tests/css/css-contain/contain-layout-suppress-baseline-002.html [ ImageOnlyFailure ]
4748
imported/w3c/web-platform-tests/css/css-contain/contain-paint-001.html [ ImageOnlyFailure ]
4711
imported/w3c/web-platform-tests/css/css-contain/contain-paint-001.html [ ImageOnlyFailure ]
4749
imported/w3c/web-platform-tests/css/css-contain/contain-paint-004.html [ ImageOnlyFailure ]
4712
imported/w3c/web-platform-tests/css/css-contain/contain-paint-004.html [ ImageOnlyFailure ]
4750
imported/w3c/web-platform-tests/css/css-contain/contain-paint-005.html [ ImageOnlyFailure ]
4713
imported/w3c/web-platform-tests/css/css-contain/contain-paint-005.html [ ImageOnlyFailure ]

Return to Bug 223569