WebKit Bugzilla
New
Browse
Search+
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
[patch]
Patch
bug-218087-20210417150950.patch (text/plain), 64.74 KB, created by
alan
on 2021-04-17 15:09:50 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
alan
Created:
2021-04-17 15:09:50 PDT
Size:
64.74 KB
patch
obsolete
>Subversion Revision: 276207 >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index 1488fec853fa76e2ba9d81a3dd9d32406ffcfc7d..f27311755f21bb4ab0b299479cafbef2c214ca56 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,68 @@ >+2021-04-17 Tim Nguyen <ntim@apple.com> >+ >+ Add support for inline-{start/end} values to float & clear properties >+ https://bugs.webkit.org/show_bug.cgi?id=218087 >+ >+ Reviewed by Antti Koivisto & Zalan Bujtas. >+ >+ Imported reftests from: https://github.com/web-platform-tests/wpt/commit/47e7176242e2ca4ca68d6cfe032619ccf44d55a6 >+ Enabled: imported/w3c/web-platform-tests/css/css-logical/logical-values-float-clear.html >+ >+ Tests: imported/w3c/web-platform-tests/css/css-logical/logical-values-float-clear-1.html >+ imported/w3c/web-platform-tests/css/css-logical/logical-values-float-clear-2.html >+ imported/w3c/web-platform-tests/css/css-logical/logical-values-float-clear-3.html >+ imported/w3c/web-platform-tests/css/css-logical/logical-values-float-clear-4.html >+ >+ * css/CSSPrimitiveValueMappings.h: >+ (WebCore::CSSPrimitiveValue::CSSPrimitiveValue): >+ (WebCore::CSSPrimitiveValue::operator Clear const): >+ (WebCore::CSSPrimitiveValue::operator Float const): >+ * css/CSSValueKeywords.in: >+ * css/parser/CSSParserFastPaths.cpp: >+ (WebCore::CSSParserFastPaths::isValidKeywordPropertyAndValue): >+ * display/css/DisplayStyle.cpp: >+ (WebCore::Display::Style::Style): >+ * layout/integration/LayoutIntegrationBoxTree.cpp: >+ (WebCore::LayoutIntegration::BoxTree::buildTree): >+ * layout/layouttree/LayoutBox.cpp: >+ (WebCore::Layout::Box::isFloatingPositioned const): >+ * layout/layouttree/LayoutTreeBuilder.cpp: >+ (WebCore::Layout::TreeBuilder::createLayoutBox): >+ (WebCore::Layout::TreeBuilder::buildTableStructure): >+ * rendering/ComplexLineLayout.cpp: >+ (WebCore::ComplexLineLayout::layoutRunsAndFloats): >+ (WebCore::ComplexLineLayout::layoutRunsAndFloatsInRange): >+ * rendering/FloatingObjects.cpp: >+ (WebCore::FloatingObject::FloatingObject): >+ * rendering/RenderBlock.cpp: >+ (WebCore::RenderBlock::computeBlockPreferredLogicalWidths const): >+ * rendering/RenderBlockFlow.cpp: >+ (WebCore::RenderBlockFlow::marginOffsetForSelfCollapsingBlock): >+ (WebCore::RenderBlockFlow::marginBeforeEstimateForChild const): >+ (WebCore::RenderBlockFlow::computeLogicalLocationForFloat): >+ (WebCore::RenderBlockFlow::positionNewFloats): >+ (WebCore::RenderBlockFlow::clearFloats): >+ (WebCore::RenderBlockFlow::getClearDelta): >+ (WebCore::RenderBlockFlow::computeInlinePreferredLogicalWidths const): >+ * rendering/RenderBlockFlow.h: >+ * rendering/line/BreakingContext.h: >+ (WebCore::BreakingContext::handleBR): >+ * rendering/line/LineBreaker.cpp: >+ (WebCore::LineBreaker::reset): >+ * rendering/line/LineBreaker.h: >+ (WebCore::LineBreaker::usedClear): >+ * rendering/style/RenderStyle.cpp: >+ (WebCore::RenderStyle::usedClear): >+ (WebCore::RenderStyle::usedFloat): >+ * rendering/style/RenderStyle.h: >+ (WebCore::RenderStyle::isFloating const): >+ (WebCore::RenderStyle::initialFloating): >+ * rendering/style/RenderStyleConstants.cpp: >+ (WebCore::operator<<): >+ * rendering/style/RenderStyleConstants.h: >+ * style/StyleAdjuster.cpp: >+ (WebCore::Style::Adjuster::adjust const): >+ > 2021-04-17 Zalan Bujtas <zalan@apple.com> > > [Cleanup] Remove redundant BreakingContext::m_currentStyle >diff --git a/Source/WebCore/css/CSSPrimitiveValueMappings.h b/Source/WebCore/css/CSSPrimitiveValueMappings.h >index 5eba1ab3b54a4c0826297e2689d011e281f7a66d..8ad3dcc69eadc1712788c20e6ef15490ba1a03a1 100644 >--- a/Source/WebCore/css/CSSPrimitiveValueMappings.h >+++ b/Source/WebCore/css/CSSPrimitiveValueMappings.h >@@ -1128,6 +1128,12 @@ template<> inline CSSPrimitiveValue::CSSPrimitiveValue(Clear e) > case Clear::Right: > m_value.valueID = CSSValueRight; > break; >+ case Clear::InlineStart: >+ m_value.valueID = CSSValueInlineStart; >+ break; >+ case Clear::InlineEnd: >+ m_value.valueID = CSSValueInlineEnd; >+ break; > case Clear::Both: > m_value.valueID = CSSValueBoth; > break; >@@ -1145,6 +1151,10 @@ template<> inline CSSPrimitiveValue::operator Clear() const > return Clear::Left; > case CSSValueRight: > return Clear::Right; >+ case CSSValueInlineStart: >+ return Clear::InlineStart; >+ case CSSValueInlineEnd: >+ return Clear::InlineEnd; > case CSSValueBoth: > return Clear::Both; > default: >@@ -1580,7 +1590,7 @@ template<> inline CSSPrimitiveValue::CSSPrimitiveValue(Float e) > { > setPrimitiveUnitType(CSSUnitType::CSS_VALUE_ID); > switch (e) { >- case Float::No: >+ case Float::None: > m_value.valueID = CSSValueNone; > break; > case Float::Left: >@@ -1589,6 +1599,12 @@ template<> inline CSSPrimitiveValue::CSSPrimitiveValue(Float e) > case Float::Right: > m_value.valueID = CSSValueRight; > break; >+ case Float::InlineStart: >+ m_value.valueID = CSSValueInlineStart; >+ break; >+ case Float::InlineEnd: >+ m_value.valueID = CSSValueInlineEnd; >+ break; > } > } > >@@ -1601,15 +1617,19 @@ template<> inline CSSPrimitiveValue::operator Float() const > return Float::Left; > case CSSValueRight: > return Float::Right; >+ case CSSValueInlineStart: >+ return Float::InlineStart; >+ case CSSValueInlineEnd: >+ return Float::InlineEnd; > case CSSValueNone: > case CSSValueCenter: // Non-standard CSS value. >- return Float::No; >+ return Float::None; > default: > break; > } > > ASSERT_NOT_REACHED(); >- return Float::No; >+ return Float::None; > } > > template<> inline CSSPrimitiveValue::CSSPrimitiveValue(LineBreak e) >diff --git a/Source/WebCore/css/CSSValueKeywords.in b/Source/WebCore/css/CSSValueKeywords.in >index f9b8fcfe679989f46842c3c411a4400c86f2a675..fd4f856fcdd16f2b6429763f0e57c68a454262eb 100644 >--- a/Source/WebCore/css/CSSValueKeywords.in >+++ b/Source/WebCore/css/CSSValueKeywords.in >@@ -348,6 +348,14 @@ justify > inter-word > distribute > // >+// CSS_PROP_CLEAR: >+// CSS_PROP_FLOAT: >+// none >+// left >+// right >+inline-start >+inline-end >+// > // CSS_PROP_LIST_STYLE_POSITION: > // > outside >diff --git a/Source/WebCore/css/parser/CSSParserFastPaths.cpp b/Source/WebCore/css/parser/CSSParserFastPaths.cpp >index dafa60bbf49d8fe1ec664272ef2081ea5e83c02d..d282673060d9913fe3d7a6e5d845c19ec7a1a71f 100644 >--- a/Source/WebCore/css/parser/CSSParserFastPaths.cpp >+++ b/Source/WebCore/css/parser/CSSParserFastPaths.cpp >@@ -619,8 +619,8 @@ bool CSSParserFastPaths::isValidKeywordPropertyAndValue(CSSPropertyID propertyId > return valueID == CSSValueAuto || valueID == CSSValueDynamic || valueID == CSSValueStatic; > case CSSPropertyCaptionSide: // top | bottom | left | right > return valueID == CSSValueLeft || valueID == CSSValueRight || valueID == CSSValueTop || valueID == CSSValueBottom; >- case CSSPropertyClear: // none | left | right | both >- return valueID == CSSValueNone || valueID == CSSValueLeft || valueID == CSSValueRight || valueID == CSSValueBoth; >+ case CSSPropertyClear: // none | inline-start | inline-end | left | right | both >+ return valueID == CSSValueNone || valueID == CSSValueInlineStart || valueID == CSSValueInlineEnd || valueID == CSSValueLeft || valueID == CSSValueRight || valueID == CSSValueBoth; > case CSSPropertyClipRule: > case CSSPropertyFillRule: > return valueID == CSSValueNonzero || valueID == CSSValueEvenodd; >@@ -647,8 +647,8 @@ bool CSSParserFastPaths::isValidKeywordPropertyAndValue(CSSPropertyID propertyId > || (valueID >= CSSValueCentral && valueID <= CSSValueMathematical); > case CSSPropertyEmptyCells: // show | hide > return valueID == CSSValueShow || valueID == CSSValueHide; >- case CSSPropertyFloat: // left | right | none >- return valueID == CSSValueLeft || valueID == CSSValueRight || valueID == CSSValueNone; >+ case CSSPropertyFloat: // inline-start | inline-end | left | right | none >+ return valueID == CSSValueInlineStart || valueID == CSSValueInlineEnd || valueID == CSSValueLeft || valueID == CSSValueRight || valueID == CSSValueNone; > case CSSPropertyImageOrientation: // from-image | none > return valueID == CSSValueFromImage || valueID == CSSValueNone; > case CSSPropertyImageRendering: // auto | optimizeContrast | pixelated | optimizeSpeed | crispEdges | optimizeQuality | webkit-crispEdges >diff --git a/Source/WebCore/display/css/DisplayStyle.cpp b/Source/WebCore/display/css/DisplayStyle.cpp >index acfd595dfd62f470f31a49735d06ebe6123a217c..fe02c153cd0f4f19fe7d68d1dc582ca033c448ff 100644 >--- a/Source/WebCore/display/css/DisplayStyle.cpp >+++ b/Source/WebCore/display/css/DisplayStyle.cpp >@@ -105,7 +105,7 @@ Style::Style(const RenderStyle& style, const RenderStyle* styleForBackground) > m_zIndex = style.usedZIndex(); > > setIsPositioned(style.position() != PositionType::Static); >- setIsFloating(style.floating() != Float::No); >+ setIsFloating(style.floating() != Float::None); > setHasTransform(style.hasTransform()); > } > >diff --git a/Source/WebCore/layout/integration/LayoutIntegrationBoxTree.cpp b/Source/WebCore/layout/integration/LayoutIntegrationBoxTree.cpp >index 098c765027fa68373b347f21de635562febd0f66..81c38f935330dbb6f333b72a72c3ed62a36c4fcc 100644 >--- a/Source/WebCore/layout/integration/LayoutIntegrationBoxTree.cpp >+++ b/Source/WebCore/layout/integration/LayoutIntegrationBoxTree.cpp >@@ -72,7 +72,7 @@ void BoxTree::buildTree() > auto style = RenderStyle::clone(childRenderer.style()); > if (childRenderer.isLineBreak()) { > style.setDisplay(DisplayType::Inline); >- style.setFloating(Float::No); >+ style.setFloating(Float::None); > style.setPosition(PositionType::Static); > return makeUnique<Layout::LineBreakBox>(downcast<RenderLineBreak>(childRenderer).isWBR(), WTFMove(style)); > } >diff --git a/Source/WebCore/layout/layouttree/LayoutBox.cpp b/Source/WebCore/layout/layouttree/LayoutBox.cpp >index 3064d3cf15243629a2405de5215aba781629cfef..cf2715dc3441e352c2602f8ff31b9eff89cb07a9 100644 >--- a/Source/WebCore/layout/layouttree/LayoutBox.cpp >+++ b/Source/WebCore/layout/layouttree/LayoutBox.cpp >@@ -163,7 +163,7 @@ bool Box::isFloatingPositioned() const > // FIXME: Rendering code caches values like this. (style="position: absolute; float: left") > if (isOutOfFlowPositioned()) > return false; >- return m_style.floating() != Float::No; >+ return m_style.floating() != Float::None; > } > > bool Box::isLeftFloatingPositioned() const >diff --git a/Source/WebCore/layout/layouttree/LayoutTreeBuilder.cpp b/Source/WebCore/layout/layouttree/LayoutTreeBuilder.cpp >index 53a64597471d5a013a45d909f4de79dbca8a2975..0633b75623cbb9dab99e7a281906d9bd0b8067c6 100644 >--- a/Source/WebCore/layout/layouttree/LayoutTreeBuilder.cpp >+++ b/Source/WebCore/layout/layouttree/LayoutTreeBuilder.cpp >@@ -199,7 +199,7 @@ Box* TreeBuilder::createLayoutBox(const ContainerBox& parentContainer, const Ren > > if (is<RenderLineBreak>(renderer)) { > clonedStyle.setDisplay(DisplayType::Inline); >- clonedStyle.setFloating(Float::No); >+ clonedStyle.setFloating(Float::None); > clonedStyle.setPosition(PositionType::Static); > childLayoutBox = &createLineBreakBox(downcast<RenderLineBreak>(childRenderer).isWBR(), WTFMove(clonedStyle)); > } else if (is<RenderTable>(renderer)) { >@@ -304,7 +304,7 @@ void TreeBuilder::buildTableStructure(const RenderTable& tableRenderer, Containe > > auto tableBoxStyle = RenderStyle::clone(tableRenderer.style()); > tableBoxStyle.setPosition(PositionType::Static); >- tableBoxStyle.setFloating(Float::No); >+ tableBoxStyle.setFloating(Float::None); > tableBoxStyle.resetMargin(); > // FIXME: Figure out where the spec says table width is like box-sizing: border-box; > if (is<HTMLTableElement>(tableRenderer.element())) >diff --git a/Source/WebCore/rendering/ComplexLineLayout.cpp b/Source/WebCore/rendering/ComplexLineLayout.cpp >index d58280d1bccee0be15f8cd2a6307d9510620d295..8f0517c3e8787f963270fb8b97773392d0a9dab8 100644 >--- a/Source/WebCore/rendering/ComplexLineLayout.cpp >+++ b/Source/WebCore/rendering/ComplexLineLayout.cpp >@@ -1359,8 +1359,8 @@ void ComplexLineLayout::layoutRunsAndFloats(LineLayoutState& layoutState, bool h > if (!lastObject->isBR()) > lastObject = &lastRootBox()->firstLeafDescendant()->renderer(); > if (lastObject->isBR()) { >- Clear clear = lastObject->style().clear(); >- if (clear != Clear::None) >+ auto clear = RenderStyle::usedClear(*lastObject); >+ if (clear != UsedClear::None) > m_flow.clearFloats(clear); > } > } >@@ -1504,7 +1504,7 @@ void ComplexLineLayout::layoutRunsAndFloatsInRange(LineLayoutState& layoutState, > > if (!layoutState.lineInfo().isEmpty()) { > layoutState.lineInfo().setFirstLine(false); >- m_flow.clearFloats(lineBreaker.clear()); >+ m_flow.clearFloats(lineBreaker.usedClear()); > } > > if (m_flow.floatingObjects() && lastRootBox()) { >diff --git a/Source/WebCore/rendering/FloatingObjects.cpp b/Source/WebCore/rendering/FloatingObjects.cpp >index 3a2d42a8aa9e8dd9c15c0f501e6a3f102095e6d2..1bd5388aa2ba2176577b9f8e66d6bb53338fd49a 100644 >--- a/Source/WebCore/rendering/FloatingObjects.cpp >+++ b/Source/WebCore/rendering/FloatingObjects.cpp >@@ -57,11 +57,11 @@ FloatingObject::FloatingObject(RenderBox& renderer) > , m_isInPlacedTree(false) > #endif > { >- Float type = renderer.style().floating(); >- ASSERT(type != Float::No); >- if (type == Float::Left) >+ UsedFloat type = RenderStyle::usedFloat(renderer); >+ ASSERT(type != UsedFloat::None); >+ if (type == UsedFloat::Left) > m_type = FloatLeft; >- else if (type == Float::Right) >+ else if (type == UsedFloat::Right) > m_type = FloatRight; > } > >diff --git a/Source/WebCore/rendering/RenderBlock.cpp b/Source/WebCore/rendering/RenderBlock.cpp >index 2606d52e7618fd6951341006dbaeb8fe8449fcf1..673afa1de582cca01222cd4001351f37d27721c0 100644 >--- a/Source/WebCore/rendering/RenderBlock.cpp >+++ b/Source/WebCore/rendering/RenderBlock.cpp >@@ -2342,11 +2342,12 @@ void RenderBlock::computeBlockPreferredLogicalWidths(LayoutUnit& minLogicalWidth > const RenderStyle& childStyle = child->style(); > if (child->isFloating() || (is<RenderBox>(*child) && downcast<RenderBox>(*child).avoidsFloats())) { > LayoutUnit floatTotalWidth = floatLeftWidth + floatRightWidth; >- if (childStyle.clear() == Clear::Left || childStyle.clear() == Clear::Both) { >+ auto childUsedClear = RenderStyle::usedClear(*child); >+ if (childUsedClear == UsedClear::Left || childUsedClear == UsedClear::Both) { > maxLogicalWidth = std::max(floatTotalWidth, maxLogicalWidth); > floatLeftWidth = 0; > } >- if (childStyle.clear() == Clear::Right || childStyle.clear() == Clear::Both) { >+ if (childUsedClear == UsedClear::Right || childUsedClear == UsedClear::Both) { > maxLogicalWidth = std::max(floatTotalWidth, maxLogicalWidth); > floatRightWidth = 0; > } >@@ -2371,7 +2372,7 @@ void RenderBlock::computeBlockPreferredLogicalWidths(LayoutUnit& minLogicalWidth > > LayoutUnit w = childMinPreferredLogicalWidth + margin; > minLogicalWidth = std::max(w, minLogicalWidth); >- >+ > // IE ignores tables for calculation of nowrap. Makes some sense. > if (nowrap && !child->isTable()) > maxLogicalWidth = std::max(w, maxLogicalWidth); >@@ -2395,15 +2396,15 @@ void RenderBlock::computeBlockPreferredLogicalWidths(LayoutUnit& minLogicalWidth > maxLogicalWidth = std::max(floatLeftWidth + floatRightWidth, maxLogicalWidth); > floatLeftWidth = floatRightWidth = 0; > } >- >+ > if (child->isFloating()) { >- if (childStyle.floating() == Float::Left) >+ if (RenderStyle::usedFloat(*child) == UsedFloat::Left) > floatLeftWidth += w; > else > floatRightWidth += w; > } else > maxLogicalWidth = std::max(w, maxLogicalWidth); >- >+ > child = child->nextSibling(); > } > >diff --git a/Source/WebCore/rendering/RenderBlockFlow.cpp b/Source/WebCore/rendering/RenderBlockFlow.cpp >index 36c191d05a28832697e605b90e8f7c917e4f3dfd..77bcbc0e44e8cfbec61611b42482947e5e836fba 100644 >--- a/Source/WebCore/rendering/RenderBlockFlow.cpp >+++ b/Source/WebCore/rendering/RenderBlockFlow.cpp >@@ -875,7 +875,7 @@ LayoutUnit RenderBlockFlow::marginOffsetForSelfCollapsingBlock() > { > ASSERT(isSelfCollapsingBlock()); > RenderBlockFlow* parentBlock = downcast<RenderBlockFlow>(parent()); >- if (parentBlock && style().clear() != Clear::None && parentBlock->getClearDelta(*this, logicalHeight())) >+ if (parentBlock && RenderStyle::usedClear(*this) != UsedClear::None && parentBlock->getClearDelta(*this, logicalHeight())) > return marginValuesForChild(*this).positiveMarginBefore(); > return 0_lu; > } >@@ -1311,7 +1311,7 @@ void RenderBlockFlow::marginBeforeEstimateForChild(RenderBox& child, LayoutUnit& > } > > // Give up if there is clearance on the box, since it probably won't collapse into us. >- if (!grandchildBox || grandchildBox->style().clear() != Clear::None) >+ if (!grandchildBox || RenderStyle::usedClear(*grandchildBox) != UsedClear::None) > return; > > // Make sure to update the block margins now for the grandchild box so that we're looking at current values. >@@ -2441,8 +2441,8 @@ void RenderBlockFlow::computeLogicalLocationForFloat(FloatingObject& floatingObj > setLogicalHeight(logicalHeight() + letterClearance); > } > } >- >- if (childBox.style().floating() == Float::Left) { >+ >+ if (RenderStyle::usedFloat(childBox) == UsedFloat::Left) { > LayoutUnit heightRemainingLeft = 1_lu; > LayoutUnit heightRemainingRight = 1_lu; > floatLogicalLeft = logicalLeftOffsetForPositioningFloat(logicalTopOffset, logicalLeftOffset, false, &heightRemainingLeft); >@@ -2476,7 +2476,7 @@ void RenderBlockFlow::computeLogicalLocationForFloat(FloatingObject& floatingObj > // fast/block/float/clamped-right-float.html. > floatLogicalLeft -= logicalWidthForFloat(floatingObject); > } >- >+ > LayoutUnit childLogicalLeftMargin = style().isLeftToRightDirection() ? marginStartForChild(childBox) : marginEndForChild(childBox); > LayoutUnit childBeforeMargin = marginBeforeForChild(childBox); > >@@ -2566,10 +2566,10 @@ bool RenderBlockFlow::positionNewFloats() > continue; > > LayoutRect oldRect = childBox.frameRect(); >- >- if (childBox.style().clear() == Clear::Left || childBox.style().clear() == Clear::Both) >+ auto childBoxUsedClear = RenderStyle::usedClear(childBox); >+ if (childBoxUsedClear == UsedClear::Left || childBoxUsedClear == UsedClear::Both) > logicalTop = std::max(lowestFloatLogicalBottom(FloatingObject::FloatLeft), logicalTop); >- if (childBox.style().clear() == Clear::Right || childBox.style().clear() == Clear::Both) >+ if (childBoxUsedClear == UsedClear::Right || childBoxUsedClear == UsedClear::Both) > logicalTop = std::max(lowestFloatLogicalBottom(FloatingObject::FloatRight), logicalTop); > > computeLogicalLocationForFloat(floatingObject, logicalTop); >@@ -2624,22 +2624,22 @@ bool RenderBlockFlow::positionNewFloats() > return true; > } > >-void RenderBlockFlow::clearFloats(Clear clear) >+void RenderBlockFlow::clearFloats(UsedClear usedClear) > { > positionNewFloats(); > // set y position > LayoutUnit newY; >- switch (clear) { >- case Clear::Left: >+ switch (usedClear) { >+ case UsedClear::Left: > newY = lowestFloatLogicalBottom(FloatingObject::FloatLeft); > break; >- case Clear::Right: >+ case UsedClear::Right: > newY = lowestFloatLogicalBottom(FloatingObject::FloatRight); > break; >- case Clear::Both: >+ case UsedClear::Both: > newY = lowestFloatLogicalBottom(); > break; >- case Clear::None: >+ case UsedClear::None: > break; > } > // FIXME: The float search tree has floored float box position (see FloatingObjects::intervalForFloatingObject). >@@ -2892,18 +2892,19 @@ LayoutUnit RenderBlockFlow::getClearDelta(RenderBox& child, LayoutUnit logicalTo > return 0; > > // At least one float is present. We need to perform the clearance computation. >- bool clearSet = child.style().clear() != Clear::None; >+ UsedClear usedClear = RenderStyle::usedClear(child); >+ bool clearSet = usedClear != UsedClear::None; > LayoutUnit logicalBottom; >- switch (child.style().clear()) { >- case Clear::None: >+ switch (usedClear) { >+ case UsedClear::None: > break; >- case Clear::Left: >+ case UsedClear::Left: > logicalBottom = lowestFloatLogicalBottom(FloatingObject::FloatLeft); > break; >- case Clear::Right: >+ case UsedClear::Right: > logicalBottom = lowestFloatLogicalBottom(FloatingObject::FloatRight); > break; >- case Clear::Both: >+ case UsedClear::Both: > logicalBottom = lowestFloatLogicalBottom(); > break; > } >@@ -4229,7 +4230,7 @@ void RenderBlockFlow::computeInlinePreferredLogicalWidths(LayoutUnit& minLogical > // (that's exactly to what we try to contribute here) unless the computed value is fixed. > textIndent = minimumValueForLength(styleToUse.textIndent(), containingBlock->style().logicalWidth().value()); > } >- RenderObject* prevFloat = 0; >+ RenderObject* previousFloat = 0; > bool isPrevChildInlineFlow = false; > bool shouldBreakLineAfterText = false; > bool canHangPunctuationAtStart = styleToUse.hangingPunctuation().contains(HangingPunctuation::First); >@@ -4321,14 +4322,17 @@ void RenderBlockFlow::computeInlinePreferredLogicalWidths(LayoutUnit& minLogical > childMin += childMinPreferredLogicalWidth.ceilToFloat(); > childMax += childMaxPreferredLogicalWidth.ceilToFloat(); > >- bool clearPreviousFloat; >+ bool clearPreviousFloat = false; > if (child->isFloating()) { >- clearPreviousFloat = (prevFloat >- && ((prevFloat->style().floating() == Float::Left && (childStyle.clear() == Clear::Left || childStyle.clear() == Clear::Both)) >- || (prevFloat->style().floating() == Float::Right && (childStyle.clear() == Clear::Right || childStyle.clear() == Clear::Both)))); >- prevFloat = child; >- } else >- clearPreviousFloat = false; >+ auto childClearValue = RenderStyle::usedClear(*child); >+ if (previousFloat) { >+ auto previousFloatValue = RenderStyle::usedFloat(*previousFloat); >+ clearPreviousFloat = >+ (previousFloatValue == UsedFloat::Left && (childClearValue == UsedClear::Left || childClearValue == UsedClear::Both)) >+ || (previousFloatValue == UsedFloat::Right && (childClearValue == UsedClear::Right || childClearValue == UsedClear::Both)); >+ } >+ previousFloat = child; >+ } > > bool canBreakReplacedElement = !child->isImage() || allowImagesToBreak; > if (((canBreakReplacedElement && (autoWrap || oldAutoWrap) && (!isPrevChildInlineFlow || shouldBreakLineAfterText)) || clearPreviousFloat)) { >diff --git a/Source/WebCore/rendering/RenderBlockFlow.h b/Source/WebCore/rendering/RenderBlockFlow.h >index f6a7649e9262a81ddc43bcb0f0de4598aeb00180..449859d38860a03a52dfdebfe7086db5fdcd5100 100644 >--- a/Source/WebCore/rendering/RenderBlockFlow.h >+++ b/Source/WebCore/rendering/RenderBlockFlow.h >@@ -495,7 +495,7 @@ private: > // Called from lineWidth, to position the floats added in the last line. > // Returns true if and only if it has positioned any floats. > bool positionNewFloats(); >- void clearFloats(Clear); >+ void clearFloats(UsedClear); > FloatingObjects* floatingObjects() { return m_floatingObjects.get(); } > > LayoutUnit logicalRightFloatOffsetForLine(LayoutUnit logicalTop, LayoutUnit fixedOffset, LayoutUnit logicalHeight) const override; >diff --git a/Source/WebCore/rendering/line/BreakingContext.h b/Source/WebCore/rendering/line/BreakingContext.h >index 1188423aabba524b18427d76128730d42a405762..f339ef8920c043f224e04e696cd2d72d71e44311 100644 >--- a/Source/WebCore/rendering/line/BreakingContext.h >+++ b/Source/WebCore/rendering/line/BreakingContext.h >@@ -140,7 +140,7 @@ public: > > void increment(); > >- void handleBR(Clear&); >+ void handleBR(UsedClear&); > void handleOutOfFlowPositioned(Vector<RenderBox*>& positionedObjects); > void handleFloat(); > void handleEmptyInline(); >@@ -267,7 +267,7 @@ inline void BreakingContext::increment() > m_atStart = false; > } > >-inline void BreakingContext::handleBR(Clear& clear) >+inline void BreakingContext::handleBR(UsedClear& usedClear) > { > if (fitsOnLineOrHangsAtEnd()) { > auto& br = *m_current.renderer(); >@@ -287,7 +287,7 @@ inline void BreakingContext::handleBR(Clear& clear) > // A <br> with clearance always needs a linebox in case the lines below it get dirtied later and > // need to check for floats to clear - so if we're ignoring spaces, stop ignoring them and add a > // run for this object. >- if (m_ignoringSpaces && br.style().clear() != Clear::None) >+ if (m_ignoringSpaces && RenderStyle::usedClear(br) != UsedClear::None) > m_lineWhitespaceCollapsingState.ensureLineBoxInsideIgnoredSpaces(br); > // If we were preceded by collapsing space and are in a right-aligned container we need to ensure the space gets > // collapsed away so that it doesn't push the text out from the container's right-hand edge. >@@ -296,7 +296,7 @@ inline void BreakingContext::handleBR(Clear& clear) > m_lineWhitespaceCollapsingState.stopIgnoringSpaces(InlineIterator(0, m_current.renderer(), m_current.offset())); > > if (!m_lineInfo.isEmpty()) >- clear = br.style().clear(); >+ usedClear = RenderStyle::usedClear(br); > } > m_atEnd = true; > } >diff --git a/Source/WebCore/rendering/line/LineBreaker.cpp b/Source/WebCore/rendering/line/LineBreaker.cpp >index d116615a726c5a0a943d9b9f6e0940b95e690915..528e286fff831f02e26b34c5ca6fd9bc948fd258 100644 >--- a/Source/WebCore/rendering/line/LineBreaker.cpp >+++ b/Source/WebCore/rendering/line/LineBreaker.cpp >@@ -34,7 +34,7 @@ void LineBreaker::reset() > { > m_positionedObjects.clear(); > m_hyphenated = false; >- m_clear = Clear::None; >+ m_clear = UsedClear::None; > } > > // FIXME: The entire concept of the skipTrailingWhitespace function is flawed, since we really need to be building >diff --git a/Source/WebCore/rendering/line/LineBreaker.h b/Source/WebCore/rendering/line/LineBreaker.h >index 7db901450a9dbf5552a0afcfd34f1ba2509abc2e..d0059322d087ec32bc53b0ca68837849afedd526 100644 >--- a/Source/WebCore/rendering/line/LineBreaker.h >+++ b/Source/WebCore/rendering/line/LineBreaker.h >@@ -55,7 +55,7 @@ public: > > bool lineWasHyphenated() { return m_hyphenated; } > const Vector<RenderBox*>& positionedObjects() { return m_positionedObjects; } >- Clear clear() { return m_clear; } >+ UsedClear usedClear() { return m_clear; } > > private: > void reset(); >@@ -71,7 +71,7 @@ private: > > RenderBlockFlow& m_block; > bool m_hyphenated; >- Clear m_clear; >+ UsedClear m_clear; > Vector<RenderBox*> m_positionedObjects; > }; > >diff --git a/Source/WebCore/rendering/style/RenderStyle.cpp b/Source/WebCore/rendering/style/RenderStyle.cpp >index 09b83c8e3039d3cafe3771323a2b40555100c13e..0771259decd2a7ff8c12f7ded9bc8c546b8bb4c3 100644 >--- a/Source/WebCore/rendering/style/RenderStyle.cpp >+++ b/Source/WebCore/rendering/style/RenderStyle.cpp >@@ -36,6 +36,7 @@ > #include "InlineTextBoxStyle.h" > #include "Pagination.h" > #include "QuotesData.h" >+#include "RenderBlock.h" > #include "RenderObject.h" > #include "RenderTheme.h" > #include "ScaleTransformOperation.h" >@@ -2664,4 +2665,43 @@ Color RenderStyle::computedStrokeColor() const > return visitedDependentColor(effectiveStrokeColorProperty()); > } > >+UsedClear RenderStyle::usedClear(const RenderObject& renderer) >+{ >+ auto computedValue = renderer.style().clear(); >+ switch (computedValue) { >+ case Clear::None: >+ return UsedClear::None; >+ case Clear::Left: >+ return UsedClear::Left; >+ case Clear::Right: >+ return UsedClear::Right; >+ case Clear::Both: >+ return UsedClear::Both; >+ case Clear::InlineStart: >+ case Clear::InlineEnd: >+ auto containingBlockDirection = renderer.containingBlock()->style().direction(); >+ if (containingBlockDirection == TextDirection::RTL) >+ return computedValue == Clear::InlineStart ? UsedClear::Right : UsedClear::Left; >+ return computedValue == Clear::InlineStart ? UsedClear::Left : UsedClear::Right; >+ } >+} >+ >+UsedFloat RenderStyle::usedFloat(const RenderObject& renderer) >+{ >+ auto computedValue = renderer.style().floating(); >+ switch (computedValue) { >+ case Float::None: >+ return UsedFloat::None; >+ case Float::Left: >+ return UsedFloat::Left; >+ case Float::Right: >+ return UsedFloat::Right; >+ case Float::InlineStart: >+ case Float::InlineEnd: >+ auto containingBlockDirection = renderer.containingBlock()->style().direction(); >+ if (containingBlockDirection == TextDirection::RTL) >+ return computedValue == Float::InlineStart ? UsedFloat::Right : UsedFloat::Left; >+ return computedValue == Float::InlineStart ? UsedFloat::Left : UsedFloat::Right; >+ } >+} > } // namespace WebCore >diff --git a/Source/WebCore/rendering/style/RenderStyle.h b/Source/WebCore/rendering/style/RenderStyle.h >index 3ba0040f2d00960e5271ac79c1db55f97927a800..1cba65dbd5e618930012b30979b04fa18f8b88d2 100644 >--- a/Source/WebCore/rendering/style/RenderStyle.h >+++ b/Source/WebCore/rendering/style/RenderStyle.h >@@ -198,7 +198,7 @@ public: > > void setColumnStylesFromPaginationMode(const Pagination::Mode&); > >- bool isFloating() const { return static_cast<Float>(m_nonInheritedFlags.floating) != Float::No; } >+ bool isFloating() const { return static_cast<Float>(m_nonInheritedFlags.floating) != Float::None; } > bool hasMargin() const { return !m_surroundData->margin.isZero(); } > bool hasBorder() const { return m_surroundData->border.hasBorder(); } > bool hasBorderFill() const { return m_surroundData->border.hasFill(); } >@@ -260,6 +260,7 @@ public: > bool hasInFlowPosition() const { return position() == PositionType::Relative || position() == PositionType::Sticky; } > bool hasViewportConstrainedPosition() const { return position() == PositionType::Fixed || position() == PositionType::Sticky; } > Float floating() const { return static_cast<Float>(m_nonInheritedFlags.floating); } >+ static UsedFloat usedFloat(const RenderObject&); > > const Length& width() const { return m_boxData->width(); } > const Length& height() const { return m_boxData->height(); } >@@ -348,6 +349,7 @@ public: > EUnicodeBidi unicodeBidi() const { return static_cast<EUnicodeBidi>(m_nonInheritedFlags.unicodeBidi); } > > Clear clear() const { return static_cast<Clear>(m_nonInheritedFlags.clear); } >+ static UsedClear usedClear(const RenderObject&); > TableLayoutType tableLayout() const { return static_cast<TableLayoutType>(m_nonInheritedFlags.tableLayout); } > > WEBCORE_EXPORT const FontCascade& fontCascade() const; >@@ -1532,7 +1534,7 @@ public: > static EUnicodeBidi initialUnicodeBidi() { return UBNormal; } > static PositionType initialPosition() { return PositionType::Static; } > static VerticalAlign initialVerticalAlign() { return VerticalAlign::Baseline; } >- static Float initialFloating() { return Float::No; } >+ static Float initialFloating() { return Float::None; } > static BreakBetween initialBreakBetween() { return BreakBetween::Auto; } > static BreakInside initialBreakInside() { return BreakInside::Auto; } > static OptionSet<HangingPunctuation> initialHangingPunctuation() { return OptionSet<HangingPunctuation> { }; } >@@ -1869,10 +1871,10 @@ private: > unsigned overflowX : 3; // Overflow > unsigned overflowY : 3; // Overflow > unsigned verticalAlign : 4; // VerticalAlign >- unsigned clear : 2; // Clear >+ unsigned clear : 3; // Clear > unsigned position : 3; // PositionType > unsigned unicodeBidi : 3; // EUnicodeBidi >- unsigned floating : 2; // Float >+ unsigned floating : 3; // Float > unsigned tableLayout : 1; // TableLayoutType > > unsigned hasExplicitlySetBorderRadius : 1; >diff --git a/Source/WebCore/rendering/style/RenderStyleConstants.cpp b/Source/WebCore/rendering/style/RenderStyleConstants.cpp >index 51423fb8d142d9894711460b14f85d72ee18dc52..94e6871534eb4ac8e153e61d538afaac97d1a59f 100644 >--- a/Source/WebCore/rendering/style/RenderStyleConstants.cpp >+++ b/Source/WebCore/rendering/style/RenderStyleConstants.cpp >@@ -280,11 +280,24 @@ TextStream& operator<<(TextStream& ts, Clear clear) > case Clear::None: ts << "none"; break; > case Clear::Left: ts << "left"; break; > case Clear::Right: ts << "right"; break; >+ case Clear::InlineStart : ts << "inline-start"; break; >+ case Clear::InlineEnd : ts << "inline-end"; break; > case Clear::Both: ts << "both"; break; > } > return ts; > } > >+TextStream& operator<<(TextStream& ts, UsedClear clear) >+{ >+ switch (clear) { >+ case UsedClear::None: ts << "none"; break; >+ case UsedClear::Left: ts << "left"; break; >+ case UsedClear::Right: ts << "right"; break; >+ case UsedClear::Both: ts << "both"; break; >+ } >+ return ts; >+} >+ > #if ENABLE(DARK_MODE_CSS) > TextStream& operator<<(TextStream& ts, ColorScheme colorScheme) > { >@@ -546,9 +559,21 @@ TextStream& operator<<(TextStream& ts, FlexWrap flexWrap) > TextStream& operator<<(TextStream& ts, Float floating) > { > switch (floating) { >- case Float::No: ts << "none"; break; >+ case Float::None: ts << "none"; break; > case Float::Left: ts << "left"; break; > case Float::Right: ts << "right"; break; >+ case Float::InlineStart: ts << "inline-start"; break; >+ case Float::InlineEnd: ts << "inline-end"; break; >+ } >+ return ts; >+} >+ >+TextStream& operator<<(TextStream& ts, UsedFloat floating) >+{ >+ switch (floating) { >+ case UsedFloat::None: ts << "none"; break; >+ case UsedFloat::Left: ts << "left"; break; >+ case UsedFloat::Right: ts << "right"; break; > } > return ts; > } >diff --git a/Source/WebCore/rendering/style/RenderStyleConstants.h b/Source/WebCore/rendering/style/RenderStyleConstants.h >index a3a742cceba9d2496b0a5184bb6fd3dce44b9ffc..384279c135ba21d4a0e8a345b1485fc6822dada7 100644 >--- a/Source/WebCore/rendering/style/RenderStyleConstants.h >+++ b/Source/WebCore/rendering/style/RenderStyleConstants.h >@@ -237,9 +237,17 @@ enum class PositionType : uint8_t { > }; > > enum class Float : uint8_t { >- No, >+ None, > Left, >- Right >+ Right, >+ InlineStart, >+ InlineEnd, >+}; >+ >+enum class UsedFloat : uint8_t { >+ None, >+ Left, >+ Right, > }; > > enum class MarginCollapse : uint8_t { >@@ -287,10 +295,19 @@ enum class VerticalAlign : uint8_t { > }; > > enum class Clear : uint8_t { >- None = 0, >- Left = 1, >- Right = 2, >- Both = 3 >+ None, >+ Left, >+ Right, >+ InlineStart, >+ InlineEnd, >+ Both >+}; >+ >+enum class UsedClear : uint8_t { >+ None, >+ Left, >+ Right, >+ Both > }; > > enum class TableLayoutType : uint8_t { >@@ -1236,6 +1253,7 @@ WTF::TextStream& operator<<(WTF::TextStream&, BreakInside); > WTF::TextStream& operator<<(WTF::TextStream&, CSSBoxType); > WTF::TextStream& operator<<(WTF::TextStream&, CaptionSide); > WTF::TextStream& operator<<(WTF::TextStream&, Clear); >+WTF::TextStream& operator<<(WTF::TextStream&, UsedClear); > #if ENABLE(DARK_MODE_CSS) > WTF::TextStream& operator<<(WTF::TextStream&, ColorScheme); > #endif >@@ -1260,6 +1278,7 @@ WTF::TextStream& operator<<(WTF::TextStream&, FillSizeType); > WTF::TextStream& operator<<(WTF::TextStream&, FlexDirection); > WTF::TextStream& operator<<(WTF::TextStream&, FlexWrap); > WTF::TextStream& operator<<(WTF::TextStream&, Float); >+WTF::TextStream& operator<<(WTF::TextStream&, UsedFloat); > WTF::TextStream& operator<<(WTF::TextStream&, GridAutoFlow); > WTF::TextStream& operator<<(WTF::TextStream&, HangingPunctuation); > WTF::TextStream& operator<<(WTF::TextStream&, Hyphens); >diff --git a/Source/WebCore/style/StyleAdjuster.cpp b/Source/WebCore/style/StyleAdjuster.cpp >index e6aa1b5cd1bc89833401276e536faf400c2d6f88..f9be83f0cd59c98e18ddf8f14acdd7ca4ea41dad 100644 >--- a/Source/WebCore/style/StyleAdjuster.cpp >+++ b/Source/WebCore/style/StyleAdjuster.cpp >@@ -256,7 +256,7 @@ void Adjuster::adjust(RenderStyle& style, const RenderStyle* userAgentAppearance > if (m_document.inQuirksMode()) { > if (m_element->hasTagName(tdTag)) { > style.setEffectiveDisplay(DisplayType::TableCell); >- style.setFloating(Float::No); >+ style.setFloating(Float::None); > } else if (is<HTMLTableElement>(*m_element)) > style.setEffectiveDisplay(style.isDisplayInlineType() ? DisplayType::InlineTable : DisplayType::Table); > } >@@ -287,7 +287,7 @@ void Adjuster::adjust(RenderStyle& style, const RenderStyle* userAgentAppearance > // Ruby text does not support float or position. This might change with evolution of the specification. > if (m_element->hasTagName(rtTag)) { > style.setPosition(PositionType::Static); >- style.setFloating(Float::No); >+ style.setFloating(Float::None); > } > > // User agents are expected to have a rule in their user agent stylesheet that matches th elements that have a parent >@@ -334,7 +334,7 @@ void Adjuster::adjust(RenderStyle& style, const RenderStyle* userAgentAppearance > // https://www.w3.org/TR/css-display/#transformations > // "A parent with a grid or flex display value blockifies the boxâs display type." > if (m_parentBoxStyle.isDisplayFlexibleOrGridBox()) { >- style.setFloating(Float::No); >+ style.setFloating(Float::None); > style.setEffectiveDisplay(equivalentBlockDisplay(style, m_document)); > } > } >diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog >index 9a980f7f0f385238baa9f5c04b1453908a349452..4dcd4ab39be4a6e16ac13a1a7edfda1739141ef3 100644 >--- a/LayoutTests/ChangeLog >+++ b/LayoutTests/ChangeLog >@@ -1,3 +1,15 @@ >+2021-04-17 Tim Nguyen <ntim@apple.com> >+ >+ Add support for inline-{start/end} values to float & clear properties >+ https://bugs.webkit.org/show_bug.cgi?id=218087 >+ >+ Reviewed by Antti Koivisto & Zalan Bujtas. >+ >+ Imported reftests from: https://github.com/web-platform-tests/wpt/commit/47e7176242e2ca4ca68d6cfe032619ccf44d55a6 >+ Enabled: imported/w3c/web-platform-tests/css/css-logical/logical-values-float-clear.html >+ >+ * TestExpectations: >+ > 2021-04-17 Philippe Normand <pnormand@igalia.com> > > [GStreamer][MediaStream] fast/mediastream/play-newly-added-audio-track.html is failing since added in r260380 >diff --git a/LayoutTests/imported/w3c/ChangeLog b/LayoutTests/imported/w3c/ChangeLog >index 56c1fba8e7794994a09872d595e432a42c89bc9a..096a922b920f2fcc1aad9bd767e3f43c369126d8 100644 >--- a/LayoutTests/imported/w3c/ChangeLog >+++ b/LayoutTests/imported/w3c/ChangeLog >@@ -1,3 +1,28 @@ >+2021-04-17 Tim Nguyen <ntim@apple.com> >+ >+ Add support for inline-{start/end} values to float & clear properties >+ https://bugs.webkit.org/show_bug.cgi?id=218087 >+ >+ Reviewed by Antti Koivisto & Zalan Bujtas. >+ >+ Imported reftests from: https://github.com/web-platform-tests/wpt/commit/47e7176242e2ca4ca68d6cfe032619ccf44d55a6 >+ Enabled: imported/w3c/web-platform-tests/css/css-logical/logical-values-float-clear.html >+ >+ * web-platform-tests/css/css-box/parsing/clear-computed-expected.txt: >+ * web-platform-tests/css/css-box/parsing/clear-valid-expected.txt: >+ * web-platform-tests/css/css-box/parsing/float-computed-expected.txt: >+ * web-platform-tests/css/css-box/parsing/float-valid-expected.txt: >+ * web-platform-tests/css/css-logical/logical-values-float-clear-1-expected.html: Added. >+ * web-platform-tests/css/css-logical/logical-values-float-clear-1.html: Added. >+ * web-platform-tests/css/css-logical/logical-values-float-clear-2-expected.html: Added. >+ * web-platform-tests/css/css-logical/logical-values-float-clear-2.html: Added. >+ * web-platform-tests/css/css-logical/logical-values-float-clear-3-expected.html: Added. >+ * web-platform-tests/css/css-logical/logical-values-float-clear-3.html: Added. >+ * web-platform-tests/css/css-logical/logical-values-float-clear-4-expected.html: Added. >+ * web-platform-tests/css/css-logical/logical-values-float-clear-4.html: Added. >+ * web-platform-tests/css/css-logical/logical-values-float-clear-expected.txt: >+ * web-platform-tests/css/css-logical/w3c-import.log: >+ > 2021-04-17 Tim Nguyen <ntim@apple.com> > > Don't omit conic gradient starting angle when serializing when starting angle is under 0 >diff --git a/LayoutTests/TestExpectations b/LayoutTests/TestExpectations >index 6d622248b1f2ae93ce849bfff6e68dcc482afd64..e56fe2d278cf0e2568c2084d9860070108351128 100644 >--- a/LayoutTests/TestExpectations >+++ b/LayoutTests/TestExpectations >@@ -2936,6 +2936,8 @@ imported/w3c/web-platform-tests/css/selectors/selector-structural-pseudo-root.ht > imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-OAEP.https.any.html [ Pass Failure ] > imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-OAEP.https.any.worker.html [ Pass Failure ] > >+webkit.org/b/224104 imported/w3c/web-platform-tests/css/css-logical/logical-values-float-clear-reftest.html [ ImageOnlyFailure ] >+ > # wpt css-shapes > webkit.org/b/203539 imported/w3c/web-platform-tests/css/css-shapes/shape-outside/shape-image/gradients/shape-outside-linear-gradient-005.html [ ImageOnlyFailure ] > webkit.org/b/203539 imported/w3c/web-platform-tests/css/css-shapes/shape-outside/shape-image/gradients/shape-outside-linear-gradient-006.html [ ImageOnlyFailure ] >@@ -4577,7 +4579,6 @@ webkit.org/b/214465 imported/w3c/web-platform-tests/css/mediaqueries/mq-range-00 > > webkit.org/b/214466 imported/w3c/web-platform-tests/css/css-values/ex-unit-004.html [ ImageOnlyFailure ] > webkit.org/b/214466 imported/w3c/web-platform-tests/css/css-shapes/shape-outside/formatting-context/shape-outside-formatting-context.tentative.html [ ImageOnlyFailure ] >-webkit.org/b/214466 imported/w3c/web-platform-tests/css/css-logical/logical-values-float-clear-reftest.html [ ImageOnlyFailure ] > webkit.org/b/214466 imported/w3c/web-platform-tests/css/css-display/display-first-line-002.html [ ImageOnlyFailure ] > > webkit.org/b/214467 imported/w3c/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/image-orientation/drawImage-with-src-rect.tentative.html [ ImageOnlyFailure ] >diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-box/parsing/clear-computed-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-box/parsing/clear-computed-expected.txt >index f9f2c0ec9f72e3e78206d5511b9cc77a8351120b..ab7534222bbd292b14c201be5cf883d843a492ff 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-box/parsing/clear-computed-expected.txt >+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-box/parsing/clear-computed-expected.txt >@@ -3,6 +3,6 @@ PASS Property clear value 'none' > PASS Property clear value 'left' > PASS Property clear value 'right' > PASS Property clear value 'both' >-FAIL Property clear value 'inline-start' assert_true: 'inline-start' is a supported value for clear. expected true got false >-FAIL Property clear value 'inline-end' assert_true: 'inline-end' is a supported value for clear. expected true got false >+PASS Property clear value 'inline-start' >+PASS Property clear value 'inline-end' > >diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-box/parsing/clear-valid-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-box/parsing/clear-valid-expected.txt >index c20e90be34c43f123b787f421b872835b0975867..79e9a19a95b6761ce58b8c08301ff88d2f5c72cf 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-box/parsing/clear-valid-expected.txt >+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-box/parsing/clear-valid-expected.txt >@@ -3,6 +3,6 @@ PASS e.style['clear'] = "none" should set the property value > PASS e.style['clear'] = "left" should set the property value > PASS e.style['clear'] = "right" should set the property value > PASS e.style['clear'] = "both" should set the property value >-FAIL e.style['clear'] = "inline-start" should set the property value assert_not_equals: property should be set got disallowed value "" >-FAIL e.style['clear'] = "inline-end" should set the property value assert_not_equals: property should be set got disallowed value "" >+PASS e.style['clear'] = "inline-start" should set the property value >+PASS e.style['clear'] = "inline-end" should set the property value > >diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-box/parsing/float-computed-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-box/parsing/float-computed-expected.txt >index cff4a0d2e28b4d360b4c808470d504456993460a..e21d588a7a2b14c0f34f1a172aa7c2ec43ccd142 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-box/parsing/float-computed-expected.txt >+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-box/parsing/float-computed-expected.txt >@@ -2,6 +2,6 @@ > PASS Property float value 'none' > PASS Property float value 'left' > PASS Property float value 'right' >-FAIL Property float value 'inline-start' assert_true: 'inline-start' is a supported value for float. expected true got false >-FAIL Property float value 'inline-end' assert_true: 'inline-end' is a supported value for float. expected true got false >+PASS Property float value 'inline-start' >+PASS Property float value 'inline-end' > >diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-box/parsing/float-valid-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-box/parsing/float-valid-expected.txt >index f5f50400482d4594063132c98401b4e8fc875b74..2dd07be3d5cea10640c8a1b528c9e3cf41b3d042 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-box/parsing/float-valid-expected.txt >+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-box/parsing/float-valid-expected.txt >@@ -2,6 +2,6 @@ > PASS e.style['float'] = "left" should set the property value > PASS e.style['float'] = "right" should set the property value > PASS e.style['float'] = "none" should set the property value >-FAIL e.style['float'] = "inline-start" should set the property value assert_not_equals: property should be set got disallowed value "" >-FAIL e.style['float'] = "inline-end" should set the property value assert_not_equals: property should be set got disallowed value "" >+PASS e.style['float'] = "inline-start" should set the property value >+PASS e.style['float'] = "inline-end" should set the property value > >diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-values-float-clear-1-expected.html b/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-values-float-clear-1-expected.html >new file mode 100644 >index 0000000000000000000000000000000000000000..0dac4c29b18ec0323ac81b15016d8b0a9f99989b >--- /dev/null >+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-values-float-clear-1-expected.html >@@ -0,0 +1,36 @@ >+<!DOCTYPE html> >+<style> >+body > div { width: 20em; margin: 1em; padding: 2px; border: 1px solid silver; } >+div > div { margin: .5em; padding: .5em; background: yellow; } >+.left { float: left; } >+.right { float: right; } >+.ltr { direction: ltr; } >+.rtl { direction: rtl; } >+</style> >+ >+<body> >+<div class="ltr"> >+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. >+ Phasellus efficitur nisi at sollicitudin eleifend. >+ <div class="left">Inline-start</div> >+ Vestibulum ac condimentum diam. Vivamus viverra iaculis mollis. >+ Nam bibendum, dolor id porttitor egestas, metus sem pretium eros, >+ ut mollis mauris ligula eu risus. Aenean eget vestibulum nunc. >+ <div class="right">Inline-end</div> >+ Nam vitae eleifend tellus. Vestibulum ut accumsan lacus. >+ Vivamus vitae eros hendrerit, tincidunt augue non, laoreet justo. >+ Aliquam erat volutpat. >+</div> >+ >+<div class="rtl"> >+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. >+ Phasellus efficitur nisi at sollicitudin eleifend. >+ <div class="right">Inline-start</div> >+ Vestibulum ac condimentum diam. Vivamus viverra iaculis mollis. >+ Nam bibendum, dolor id porttitor egestas, metus sem pretium eros, >+ ut mollis mauris ligula eu risus. Aenean eget vestibulum nunc. >+ <div class="left">Inline-end</div> >+ Nam vitae eleifend tellus. Vestibulum ut accumsan lacus. >+ Vivamus vitae eros hendrerit, tincidunt augue non, laoreet justo. >+ Aliquam erat volutpat. >+</div> >diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-values-float-clear-1.html b/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-values-float-clear-1.html >new file mode 100644 >index 0000000000000000000000000000000000000000..d7f37fffddc918c89cdf3f1f87fd0c1305cf0533 >--- /dev/null >+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-values-float-clear-1.html >@@ -0,0 +1,39 @@ >+<!DOCTYPE html> >+<meta charset="utf-8" /> >+<link rel="help" href="https://drafts.csswg.org/css-logical/#float-clear"> >+<link rel="match" href="reference/logical-values-float-clear-1-ref.html"> >+<style> >+body > div { width: 20em; margin: 1em; padding: 2px; border: 1px solid silver; } >+div > div { margin: .5em; padding: .5em; background: yellow; } >+.is { float: inline-start; } >+.ie { float: inline-end; } >+.ltr { direction: ltr; } >+.rtl { direction: rtl; } >+</style> >+ >+<body> >+<div class="ltr"> >+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. >+ Phasellus efficitur nisi at sollicitudin eleifend. >+ <div class="is">Inline-start</div> >+ Vestibulum ac condimentum diam. Vivamus viverra iaculis mollis. >+ Nam bibendum, dolor id porttitor egestas, metus sem pretium eros, >+ ut mollis mauris ligula eu risus. Aenean eget vestibulum nunc. >+ <div class="ie">Inline-end</div> >+ Nam vitae eleifend tellus. Vestibulum ut accumsan lacus. >+ Vivamus vitae eros hendrerit, tincidunt augue non, laoreet justo. >+ Aliquam erat volutpat. >+</div> >+ >+<div class="rtl"> >+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. >+ Phasellus efficitur nisi at sollicitudin eleifend. >+ <div class="is">Inline-start</div> >+ Vestibulum ac condimentum diam. Vivamus viverra iaculis mollis. >+ Nam bibendum, dolor id porttitor egestas, metus sem pretium eros, >+ ut mollis mauris ligula eu risus. Aenean eget vestibulum nunc. >+ <div class="ie">Inline-end</div> >+ Nam vitae eleifend tellus. Vestibulum ut accumsan lacus. >+ Vivamus vitae eros hendrerit, tincidunt augue non, laoreet justo. >+ Aliquam erat volutpat. >+</div> >diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-values-float-clear-2-expected.html b/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-values-float-clear-2-expected.html >new file mode 100644 >index 0000000000000000000000000000000000000000..82bfcd2d36f567637d2cdac0feb74dfdaa680eb3 >--- /dev/null >+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-values-float-clear-2-expected.html >@@ -0,0 +1,37 @@ >+<!DOCTYPE html> >+<style> >+html { writing-mode: vertical-rl; } >+body > div { height: 20em; margin: 1em; padding: 2px; border: 1px solid silver; } >+div > div { margin: .5em; padding: .5em; background: yellow; } >+.left { float: left; } >+.right { float: right; } >+.ltr { direction: ltr; } >+.rtl { direction: rtl; } >+</style> >+ >+<body> >+<div class="ltr"> >+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. >+ Phasellus efficitur nisi at sollicitudin eleifend. >+ <div class="left">Inline-start</div> >+ Vestibulum ac condimentum diam. Vivamus viverra iaculis mollis. >+ Nam bibendum, dolor id porttitor egestas, metus sem pretium eros, >+ ut mollis mauris ligula eu risus. Aenean eget vestibulum nunc. >+ <div class="right">Inline-end</div> >+ Nam vitae eleifend tellus. Vestibulum ut accumsan lacus. >+ Vivamus vitae eros hendrerit, tincidunt augue non, laoreet justo. >+ Aliquam erat volutpat. >+</div> >+ >+<div class="rtl"> >+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. >+ Phasellus efficitur nisi at sollicitudin eleifend. >+ <div class="right">Inline-start</div> >+ Vestibulum ac condimentum diam. Vivamus viverra iaculis mollis. >+ Nam bibendum, dolor id porttitor egestas, metus sem pretium eros, >+ ut mollis mauris ligula eu risus. Aenean eget vestibulum nunc. >+ <div class="left">Inline-end</div> >+ Nam vitae eleifend tellus. Vestibulum ut accumsan lacus. >+ Vivamus vitae eros hendrerit, tincidunt augue non, laoreet justo. >+ Aliquam erat volutpat. >+</div> >diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-values-float-clear-2.html b/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-values-float-clear-2.html >new file mode 100644 >index 0000000000000000000000000000000000000000..f5af837595311efc9c5843f1021d1aa5ec049f20 >--- /dev/null >+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-values-float-clear-2.html >@@ -0,0 +1,40 @@ >+<!DOCTYPE html> >+<meta charset="utf-8" /> >+<link rel="help" href="https://drafts.csswg.org/css-logical/#float-clear"> >+<link rel="match" href="reference/logical-values-float-clear-2-ref.html"> >+<style> >+html { writing-mode: vertical-rl; } >+body > div { height: 20em; margin: 1em; padding: 2px; border: 1px solid silver; } >+div > div { margin: .5em; padding: .5em; background: yellow; } >+.is { float: inline-start; } >+.ie { float: inline-end; } >+.ltr { direction: ltr; } >+.rtl { direction: rtl; } >+</style> >+ >+<body> >+<div class="ltr"> >+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. >+ Phasellus efficitur nisi at sollicitudin eleifend. >+ <div class="is">Inline-start</div> >+ Vestibulum ac condimentum diam. Vivamus viverra iaculis mollis. >+ Nam bibendum, dolor id porttitor egestas, metus sem pretium eros, >+ ut mollis mauris ligula eu risus. Aenean eget vestibulum nunc. >+ <div class="ie">Inline-end</div> >+ Nam vitae eleifend tellus. Vestibulum ut accumsan lacus. >+ Vivamus vitae eros hendrerit, tincidunt augue non, laoreet justo. >+ Aliquam erat volutpat. >+</div> >+ >+<div class="rtl"> >+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. >+ Phasellus efficitur nisi at sollicitudin eleifend. >+ <div class="is">Inline-start</div> >+ Vestibulum ac condimentum diam. Vivamus viverra iaculis mollis. >+ Nam bibendum, dolor id porttitor egestas, metus sem pretium eros, >+ ut mollis mauris ligula eu risus. Aenean eget vestibulum nunc. >+ <div class="ie">Inline-end</div> >+ Nam vitae eleifend tellus. Vestibulum ut accumsan lacus. >+ Vivamus vitae eros hendrerit, tincidunt augue non, laoreet justo. >+ Aliquam erat volutpat. >+</div> >diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-values-float-clear-3-expected.html b/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-values-float-clear-3-expected.html >new file mode 100644 >index 0000000000000000000000000000000000000000..654afd856f677ebde9f1f41b604121e84a6e0320 >--- /dev/null >+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-values-float-clear-3-expected.html >@@ -0,0 +1,38 @@ >+<!DOCTYPE html> >+<style> >+body > div { width: 15em; height: 10em; margin: 1em; padding: 2px; border: 1px solid silver; } >+div > div { margin: .5em; padding: .5em; background: yellow; } >+.a { clear: left; } >+.b { clear: right; } >+.fl { float: left; height: 4em; } >+.fr { float: right; height: 2em; } >+.fl2 { float: left; height: 2em; } >+.fr4 { float: right; height: 4em; } >+.ltr { direction: ltr; } >+.rtl { direction: rtl; } >+</style> >+ >+<body> >+<div class="ltr"> >+ <div class="fl">Start</div> >+ <div class="fr">End</div> >+ <p class="a">a b c d e f g h i j k l m n o p q r s t u v w x y z LTR clear:inline-start</p> >+</div> >+ >+<div class="ltr"> >+ <div class="fl">Start</div> >+ <div class="fr">End</div> >+ <p class="b">a b c d e f g h i j k l m n o p q r s t u v w x y z LTR clear:inline-end</p> >+</div> >+ >+<div class="rtl"> >+ <div class="fl2">End</div> >+ <div class="fr4">Start</div> >+ <p class="b">a b c d e f g h i j k l m n o p q r s t u v w x y z RTL clear:inline-start</p> >+</div> >+ >+<div class="rtl"> >+ <div class="fl2">End</div> >+ <div class="fr4">Start</div> >+ <p class="a">a b c d e f g h i j k l m n o p q r s t u v w x y z RTL clear:inline-end</p> >+</div> >diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-values-float-clear-3.html b/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-values-float-clear-3.html >new file mode 100644 >index 0000000000000000000000000000000000000000..b49711b7b2b83f7bb518358b97432b3015e495cf >--- /dev/null >+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-values-float-clear-3.html >@@ -0,0 +1,39 @@ >+<!DOCTYPE html> >+<meta charset="utf-8" /> >+<link rel="help" href="https://drafts.csswg.org/css-logical/#float-clear"> >+<link rel="match" href="reference/logical-values-float-clear-3-ref.html"> >+<style> >+body > div { width: 15em; height: 10em; margin: 1em; padding: 2px; border: 1px solid silver; } >+div > div { margin: .5em; padding: .5em; background: yellow; } >+.a { clear: inline-start; } >+.b { clear: inline-end; } >+.is { float: inline-start; height: 4em; } >+.ie { float: inline-end; height: 2em; } >+.ltr { direction: ltr; } >+.rtl { direction: rtl; } >+</style> >+ >+<body> >+<div class="ltr"> >+ <div class="is">Start</div> >+ <div class="ie">End</div> >+ <p class="a">a b c d e f g h i j k l m n o p q r s t u v w x y z LTR clear:inline-start</p> >+</div> >+ >+<div class="ltr"> >+ <div class="is">Start</div> >+ <div class="ie">End</div> >+ <p class="b">a b c d e f g h i j k l m n o p q r s t u v w x y z LTR clear:inline-end</p> >+</div> >+ >+<div class="rtl"> >+ <div class="is">Start</div> >+ <div class="ie">End</div> >+ <p class="a">a b c d e f g h i j k l m n o p q r s t u v w x y z RTL clear:inline-start</p> >+</div> >+ >+<div class="rtl"> >+ <div class="is">Start</div> >+ <div class="ie">End</div> >+ <p class="b">a b c d e f g h i j k l m n o p q r s t u v w x y z RTL clear:inline-end</p> >+</div> >diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-values-float-clear-4-expected.html b/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-values-float-clear-4-expected.html >new file mode 100644 >index 0000000000000000000000000000000000000000..0c2065b3e9782034c936b2b961a3ecbbfea635b5 >--- /dev/null >+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-values-float-clear-4-expected.html >@@ -0,0 +1,39 @@ >+<!DOCTYPE html> >+<style> >+html { writing-mode: vertical-rl; } >+body > div { height: 15em; width: 10em; margin: 1em; padding: 2px; border: 1px solid silver; } >+div > div { margin: .5em; padding: .5em; background: yellow; } >+.a { clear: left; } >+.b { clear: right; } >+.fl { float: left; width: 4em; } >+.fr { float: right; width: 2em; } >+.fl2 { float: left; width: 2em; } >+.fr4 { float: right; width: 4em; } >+.ltr { direction: ltr; } >+.rtl { direction: rtl; } >+</style> >+ >+<body> >+<div class="ltr"> >+ <div class="fl">Start</div> >+ <div class="fr">End</div> >+ <p class="a">a b c d e f g h i j k l m n o p q r s t u v w x y z LTR clear:inline-start</p> >+</div> >+ >+<div class="ltr"> >+ <div class="fl">Start</div> >+ <div class="fr">End</div> >+ <p class="b">a b c d e f g h i j k l m n o p q r s t u v w x y z LTR clear:inline-end</p> >+</div> >+ >+<div class="rtl"> >+ <div class="fl2">End</div> >+ <div class="fr4">Start</div> >+ <p class="b">a b c d e f g h i j k l m n o p q r s t u v w x y z RTL clear:inline-start</p> >+</div> >+ >+<div class="rtl"> >+ <div class="fl2">End</div> >+ <div class="fr4">Start</div> >+ <p class="a">a b c d e f g h i j k l m n o p q r s t u v w x y z RTL clear:inline-end</p> >+</div> >diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-values-float-clear-4.html b/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-values-float-clear-4.html >new file mode 100644 >index 0000000000000000000000000000000000000000..d585d38bf3af71a78313f01ccaa8a87dce8bb9d0 >--- /dev/null >+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-values-float-clear-4.html >@@ -0,0 +1,40 @@ >+<!DOCTYPE html> >+<meta charset="utf-8" /> >+<link rel="help" href="https://drafts.csswg.org/css-logical/#float-clear"> >+<link rel="match" href="reference/logical-values-float-clear-4-ref.html"> >+<style> >+html { writing-mode: vertical-rl; } >+body > div { height: 15em; width: 10em; margin: 1em; padding: 2px; border: 1px solid silver; } >+div > div { margin: .5em; padding: .5em; background: yellow; } >+.a { clear: inline-start; } >+.b { clear: inline-end; } >+.is { float: inline-start; width: 4em; } >+.ie { float: inline-end; width: 2em; } >+.ltr { direction: ltr; } >+.rtl { direction: rtl; } >+</style> >+ >+<body> >+<div class="ltr"> >+ <div class="is">Start</div> >+ <div class="ie">End</div> >+ <p class="a">a b c d e f g h i j k l m n o p q r s t u v w x y z LTR clear:inline-start</p> >+</div> >+ >+<div class="ltr"> >+ <div class="is">Start</div> >+ <div class="ie">End</div> >+ <p class="b">a b c d e f g h i j k l m n o p q r s t u v w x y z LTR clear:inline-end</p> >+</div> >+ >+<div class="rtl"> >+ <div class="is">Start</div> >+ <div class="ie">End</div> >+ <p class="a">a b c d e f g h i j k l m n o p q r s t u v w x y z RTL clear:inline-start</p> >+</div> >+ >+<div class="rtl"> >+ <div class="is">Start</div> >+ <div class="ie">End</div> >+ <p class="b">a b c d e f g h i j k l m n o p q r s t u v w x y z RTL clear:inline-end</p> >+</div> >diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-values-float-clear-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-values-float-clear-expected.txt >index 4ca2d13a87ecf2945857f8e7bbb17ddc36ad5f2e..1332d57e6bdbe280e4ba379b3e3e84317ac6dee9 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-values-float-clear-expected.txt >+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-values-float-clear-expected.txt >@@ -1,6 +1,6 @@ > >-FAIL Test that 'clear: inline-start' is supported. assert_equals: logical values in inline style, clear expected "inline-start" but got "" >-FAIL Test that 'clear: inline-end' is supported. assert_equals: logical values in inline style, clear expected "inline-end" but got "" >-FAIL Test that 'float: inline-start' is supported. assert_equals: logical values in inline style, float expected "inline-start" but got "" >-FAIL Test that 'float: inline-end' is supported. assert_equals: logical values in inline style, float expected "inline-end" but got "" >+PASS Test that 'clear: inline-start' is supported. >+PASS Test that 'clear: inline-end' is supported. >+PASS Test that 'float: inline-start' is supported. >+PASS Test that 'float: inline-end' is supported. > >diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/w3c-import.log b/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/w3c-import.log >index 312fa0a7ea1be6ea15deeb57917427cd28036a92..01c3a853c8804da8cce759262c0b1f5da3e9c673 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/w3c-import.log >+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/w3c-import.log >@@ -32,6 +32,14 @@ List of files: > /LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-box-margin.html > /LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-box-padding.html > /LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-box-size.html >+/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-values-float-clear-1-expected.html >+/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-values-float-clear-1.html >+/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-values-float-clear-2-expected.html >+/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-values-float-clear-2.html >+/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-values-float-clear-3-expected.html >+/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-values-float-clear-3.html >+/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-values-float-clear-4-expected.html >+/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-values-float-clear-4.html > /LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-values-float-clear-reftest-expected.html > /LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-values-float-clear-reftest.html > /LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-values-float-clear.html
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 218087
:
425018
|
425028
|
426221
|
426235
|
426238
| 426350