From c9ffb3ffa8c3f6826049a573d499ea2d3dd29909 Mon Sep 17 00:00:00 2001 From: Iulian Moraru Date: Mon, 1 May 2023 17:59:21 +0300 Subject: [PATCH] Backed out 3 changesets (bug 1809568) for causing build bustages on nsLineLayout.cpp. CLOSED TREE Backed out changeset 573dc0bd9554 (bug 1809568) Backed out changeset b8401947aea0 (bug 1809568) Backed out changeset 7ecabe895121 (bug 1809568) --- .../shared/css/generated/properties-db.js | 18 --- layout/base/Baseline.h | 6 - layout/base/nsLayoutUtils.cpp | 4 +- layout/forms/nsCheckboxRadioFrame.cpp | 3 +- layout/forms/nsCheckboxRadioFrame.h | 4 +- layout/forms/nsDateTimeControlFrame.cpp | 3 +- layout/forms/nsDateTimeControlFrame.h | 4 +- layout/forms/nsFieldSetFrame.cpp | 6 +- layout/forms/nsFieldSetFrame.h | 4 +- layout/forms/nsHTMLButtonControlFrame.cpp | 14 +-- layout/forms/nsHTMLButtonControlFrame.h | 4 +- layout/forms/nsListControlFrame.cpp | 3 +- layout/forms/nsListControlFrame.h | 4 +- layout/forms/nsTextControlFrame.h | 4 +- layout/generic/BRFrame.cpp | 6 +- layout/generic/ColumnSetWrapperFrame.cpp | 15 +-- layout/generic/ColumnSetWrapperFrame.h | 6 +- layout/generic/nsBlockFrame.cpp | 105 +++++++----------- layout/generic/nsBlockFrame.h | 10 +- layout/generic/nsColumnSetFrame.cpp | 6 +- layout/generic/nsColumnSetFrame.h | 4 +- layout/generic/nsFirstLetterFrame.cpp | 3 +- layout/generic/nsFirstLetterFrame.h | 4 +- layout/generic/nsFlexContainerFrame.cpp | 6 +- layout/generic/nsFlexContainerFrame.h | 4 +- layout/generic/nsGfxScrollFrame.cpp | 9 +- layout/generic/nsGfxScrollFrame.h | 4 +- layout/generic/nsGridContainerFrame.cpp | 4 +- layout/generic/nsGridContainerFrame.h | 4 +- layout/generic/nsIFrame.cpp | 8 +- layout/generic/nsIFrame.h | 24 +--- layout/generic/nsInlineFrame.cpp | 3 +- layout/generic/nsInlineFrame.h | 4 +- layout/generic/nsLineLayout.cpp | 41 +------ layout/generic/nsRubyBaseContainerFrame.cpp | 3 +- layout/generic/nsRubyBaseContainerFrame.h | 4 +- layout/generic/nsTextFrame.cpp | 3 +- layout/generic/nsTextFrame.h | 4 +- layout/style/ServoBindings.toml | 1 - layout/style/nsStyleStruct.cpp | 5 +- layout/style/nsStyleStruct.h | 1 - layout/style/test/property_database.js | 11 -- layout/tables/nsTableFrame.cpp | 3 +- layout/tables/nsTableFrame.h | 4 +- layout/tables/nsTableWrapperFrame.cpp | 6 +- layout/tables/nsTableWrapperFrame.h | 4 +- servo/components/style/properties/data.py | 1 - .../style/properties/longhands/box.mako.rs | 10 -- servo/components/style/values/computed/box.rs | 2 +- servo/components/style/values/computed/mod.rs | 2 +- .../components/style/values/specified/box.rs | 27 ----- .../components/style/values/specified/mod.rs | 2 +- servo/ports/geckolib/cbindgen.toml | 1 - .../baseline-source-computed.html.ini | 9 ++ .../baseline-source-first-001.html.ini | 21 ++++ .../baseline-source-first-002.html.ini | 26 ++++- .../baseline-source-first-003.html.ini | 21 ++++ .../baseline-source-invalid.html.ini | 3 + .../baseline-source-last-001.html.ini | 13 ++- .../baseline-source-last-002.html.ini | 18 ++- .../baseline-source-last-003.html.ini | 16 ++- .../baseline-source-no-interpolation.html.ini | 76 ++++++++++++- .../baseline-source-valid.html.ini | 9 ++ 63 files changed, 323 insertions(+), 334 deletions(-) create mode 100644 testing/web-platform/meta/css/css-inline/baseline-source/baseline-source-computed.html.ini create mode 100644 testing/web-platform/meta/css/css-inline/baseline-source/baseline-source-first-001.html.ini create mode 100644 testing/web-platform/meta/css/css-inline/baseline-source/baseline-source-first-003.html.ini create mode 100644 testing/web-platform/meta/css/css-inline/baseline-source/baseline-source-invalid.html.ini create mode 100644 testing/web-platform/meta/css/css-inline/baseline-source/baseline-source-valid.html.ini diff --git a/devtools/shared/css/generated/properties-db.js b/devtools/shared/css/generated/properties-db.js index 946f1a2cb9fc..292fcc07a1b2 100644 --- a/devtools/shared/css/generated/properties-db.js +++ b/devtools/shared/css/generated/properties-db.js @@ -3020,7 +3020,6 @@ exports.CSS_PROPERTIES = { "float", "clear", "vertical-align", - "baseline-source", "overflow-clip-box-inline", "overflow-clip-box-block", "overflow-x", @@ -4014,23 +4013,6 @@ exports.CSS_PROPERTIES = { "unset" ] }, - "baseline-source": { - "isInherited": false, - "subproperties": [ - "baseline-source" - ], - "supports": [], - "values": [ - "auto", - "first", - "inherit", - "initial", - "last", - "revert", - "revert-layer", - "unset" - ] - }, "block-size": { "isInherited": false, "subproperties": [ diff --git a/layout/base/Baseline.h b/layout/base/Baseline.h index fcb85d87b4db..8eae2e114062 100644 --- a/layout/base/Baseline.h +++ b/layout/base/Baseline.h @@ -19,12 +19,6 @@ enum class BaselineSharingGroup : uint8_t { Last = 1, }; -// Layout context under which the baseline is being exported to. -enum class BaselineExportContext : uint8_t { - LineLayout = 0, - Other = 1, -}; - class Baseline { public: /** diff --git a/layout/base/nsLayoutUtils.cpp b/layout/base/nsLayoutUtils.cpp index f4c9a78e29f8..a7ddf99fc5ce 100644 --- a/layout/base/nsLayoutUtils.cpp +++ b/layout/base/nsLayoutUtils.cpp @@ -5954,8 +5954,8 @@ bool nsLayoutUtils::GetLastLineBaseline(WritingMode aWM, const nsIFrame* aFrame, // `ColumnSetWrapperFrame` level, but this keeps it symmetric to // `GetFirstLinePosition`. if (aFrame->IsColumnSetFrame()) { - const auto baseline = aFrame->GetNaturalBaselineBOffset( - aWM, BaselineSharingGroup::Last, BaselineExportContext::Other); + const auto baseline = + aFrame->GetNaturalBaselineBOffset(aWM, BaselineSharingGroup::Last); if (!baseline) { return false; } diff --git a/layout/forms/nsCheckboxRadioFrame.cpp b/layout/forms/nsCheckboxRadioFrame.cpp index 902b900fdd93..90d30d2abfca 100644 --- a/layout/forms/nsCheckboxRadioFrame.cpp +++ b/layout/forms/nsCheckboxRadioFrame.cpp @@ -86,8 +86,7 @@ LogicalSize nsCheckboxRadioFrame::ComputeAutoSize( } Maybe nsCheckboxRadioFrame::GetNaturalBaselineBOffset( - WritingMode aWM, BaselineSharingGroup aBaselineGroup, - BaselineExportContext) const { + WritingMode aWM, BaselineSharingGroup aBaselineGroup) const { NS_ASSERTION(!IsSubtreeDirty(), "frame must not be dirty"); if (aBaselineGroup == BaselineSharingGroup::Last) { diff --git a/layout/forms/nsCheckboxRadioFrame.h b/layout/forms/nsCheckboxRadioFrame.h index 4fc165e29dd4..d0e5dc200cef 100644 --- a/layout/forms/nsCheckboxRadioFrame.h +++ b/layout/forms/nsCheckboxRadioFrame.h @@ -62,8 +62,8 @@ class nsCheckboxRadioFrame final : public nsAtomicContainerFrame, nsEventStatus* aEventStatus) override; Maybe GetNaturalBaselineBOffset( - mozilla::WritingMode aWM, BaselineSharingGroup aBaselineGroup, - BaselineExportContext) const override; + mozilla::WritingMode aWM, + BaselineSharingGroup aBaselineGroup) const override; /** * Respond to the request to resize and/or reflow diff --git a/layout/forms/nsDateTimeControlFrame.cpp b/layout/forms/nsDateTimeControlFrame.cpp index d80f4ea2cee3..252673b558bc 100644 --- a/layout/forms/nsDateTimeControlFrame.cpp +++ b/layout/forms/nsDateTimeControlFrame.cpp @@ -65,8 +65,7 @@ nscoord nsDateTimeControlFrame::GetPrefISize(gfxContext* aRenderingContext) { } Maybe nsDateTimeControlFrame::GetNaturalBaselineBOffset( - WritingMode aWM, BaselineSharingGroup aBaselineGroup, - BaselineExportContext) const { + WritingMode aWM, BaselineSharingGroup aBaselineGroup) const { return nsTextControlFrame::GetSingleLineTextControlBaseline( this, mFirstBaseline, aWM, aBaselineGroup); } diff --git a/layout/forms/nsDateTimeControlFrame.h b/layout/forms/nsDateTimeControlFrame.h index 755cdd0933e6..ae1ff4ad248f 100644 --- a/layout/forms/nsDateTimeControlFrame.h +++ b/layout/forms/nsDateTimeControlFrame.h @@ -62,8 +62,8 @@ class nsDateTimeControlFrame final : public nsContainerFrame { nsReflowStatus& aStatus) override; Maybe GetNaturalBaselineBOffset( - mozilla::WritingMode aWM, BaselineSharingGroup aBaselineGroup, - BaselineExportContext) const override; + mozilla::WritingMode aWM, + BaselineSharingGroup aBaselineGroup) const override; nscoord mFirstBaseline = NS_INTRINSIC_ISIZE_UNKNOWN; }; diff --git a/layout/forms/nsFieldSetFrame.cpp b/layout/forms/nsFieldSetFrame.cpp index 45108e4d9fcd..60e796aa3dcc 100644 --- a/layout/forms/nsFieldSetFrame.cpp +++ b/layout/forms/nsFieldSetFrame.cpp @@ -851,8 +851,7 @@ nscoord nsFieldSetFrame::SynthesizeFallbackBaseline( } Maybe nsFieldSetFrame::GetNaturalBaselineBOffset( - WritingMode aWM, BaselineSharingGroup aBaselineGroup, - BaselineExportContext aExportContext) const { + WritingMode aWM, BaselineSharingGroup aBaselineGroup) const { if (StyleDisplay()->IsContainLayout()) { // If we are layout-contained, our child 'inner' should not // affect how we calculate our baseline. @@ -863,8 +862,7 @@ Maybe nsFieldSetFrame::GetNaturalBaselineBOffset( return Nothing{}; } MOZ_ASSERT(!inner->GetWritingMode().IsOrthogonalTo(aWM)); - const auto result = - inner->GetNaturalBaselineBOffset(aWM, aBaselineGroup, aExportContext); + const auto result = inner->GetNaturalBaselineBOffset(aWM, aBaselineGroup); if (!result) { return Nothing{}; } diff --git a/layout/forms/nsFieldSetFrame.h b/layout/forms/nsFieldSetFrame.h index 04d63a8a3fcb..0d446a147fbd 100644 --- a/layout/forms/nsFieldSetFrame.h +++ b/layout/forms/nsFieldSetFrame.h @@ -41,8 +41,8 @@ class nsFieldSetFrame final : public nsContainerFrame { BaselineSharingGroup aBaselineGroup) const override; BaselineSharingGroup GetDefaultBaselineSharingGroup() const override; Maybe GetNaturalBaselineBOffset( - mozilla::WritingMode aWM, BaselineSharingGroup aBaselineGroup, - BaselineExportContext aExportContext) const override; + mozilla::WritingMode aWM, + BaselineSharingGroup aBaselineGroup) const override; virtual void BuildDisplayList(nsDisplayListBuilder* aBuilder, const nsDisplayListSet& aLists) override; diff --git a/layout/forms/nsHTMLButtonControlFrame.cpp b/layout/forms/nsHTMLButtonControlFrame.cpp index 7fc5f403917d..1df588f26be4 100644 --- a/layout/forms/nsHTMLButtonControlFrame.cpp +++ b/layout/forms/nsHTMLButtonControlFrame.cpp @@ -313,8 +313,7 @@ void nsHTMLButtonControlFrame::ReflowButtonContents( } Maybe nsHTMLButtonControlFrame::GetNaturalBaselineBOffset( - WritingMode aWM, BaselineSharingGroup aBaselineGroup, - BaselineExportContext aExportContext) const { + WritingMode aWM, BaselineSharingGroup aBaselineGroup) const { if (StyleDisplay()->IsContainLayout()) { return Nothing{}; } @@ -323,12 +322,11 @@ Maybe nsHTMLButtonControlFrame::GetNaturalBaselineBOffset( if (MOZ_UNLIKELY(inner->GetWritingMode().IsOrthogonalTo(aWM))) { return Nothing{}; } - auto result = - inner->GetNaturalBaselineBOffset(aWM, aBaselineGroup, aExportContext) - .valueOrFrom([inner, aWM, aBaselineGroup]() { - return Baseline::SynthesizeBOffsetFromBorderBox(inner, aWM, - aBaselineGroup); - }); + auto result = inner->GetNaturalBaselineBOffset(aWM, aBaselineGroup) + .valueOrFrom([inner, aWM, aBaselineGroup]() { + return Baseline::SynthesizeBOffsetFromBorderBox( + inner, aWM, aBaselineGroup); + }); nscoord innerBStart = inner->BStart(aWM, GetSize()); if (aBaselineGroup == BaselineSharingGroup::First) { diff --git a/layout/forms/nsHTMLButtonControlFrame.h b/layout/forms/nsHTMLButtonControlFrame.h index b0d016f35517..2acbb4f71c3d 100644 --- a/layout/forms/nsHTMLButtonControlFrame.h +++ b/layout/forms/nsHTMLButtonControlFrame.h @@ -39,8 +39,8 @@ class nsHTMLButtonControlFrame : public nsContainerFrame, nsReflowStatus& aStatus) override; Maybe GetNaturalBaselineBOffset( - mozilla::WritingMode aWM, BaselineSharingGroup aBaselineGroup, - BaselineExportContext aExportContext) const override; + mozilla::WritingMode aWM, + BaselineSharingGroup aBaselineGroup) const override; virtual nsresult HandleEvent(nsPresContext* aPresContext, mozilla::WidgetGUIEvent* aEvent, diff --git a/layout/forms/nsListControlFrame.cpp b/layout/forms/nsListControlFrame.cpp index 52dd85b004db..905919ac4018 100644 --- a/layout/forms/nsListControlFrame.cpp +++ b/layout/forms/nsListControlFrame.cpp @@ -71,8 +71,7 @@ nsListControlFrame::nsListControlFrame(ComputedStyle* aStyle, nsListControlFrame::~nsListControlFrame() = default; Maybe nsListControlFrame::GetNaturalBaselineBOffset( - WritingMode aWM, BaselineSharingGroup aBaselineGroup, - BaselineExportContext) const { + WritingMode aWM, BaselineSharingGroup aBaselineGroup) const { // Unlike scroll frames which we inherit from, we don't export a baseline. return Nothing{}; } diff --git a/layout/forms/nsListControlFrame.h b/layout/forms/nsListControlFrame.h index 04b1b8003f5a..0b2a59a11a83 100644 --- a/layout/forms/nsListControlFrame.h +++ b/layout/forms/nsListControlFrame.h @@ -56,8 +56,8 @@ class nsListControlFrame final : public nsHTMLScrollFrame, NS_DECL_FRAMEARENA_HELPERS(nsListControlFrame) Maybe GetNaturalBaselineBOffset( - mozilla::WritingMode aWM, BaselineSharingGroup aBaselineGroup, - BaselineExportContext) const override; + mozilla::WritingMode aWM, + BaselineSharingGroup aBaselineGroup) const override; // nsIFrame nsresult HandleEvent(nsPresContext* aPresContext, diff --git a/layout/forms/nsTextControlFrame.h b/layout/forms/nsTextControlFrame.h index fa779851cd37..5a76fd64e2a2 100644 --- a/layout/forms/nsTextControlFrame.h +++ b/layout/forms/nsTextControlFrame.h @@ -78,8 +78,8 @@ class nsTextControlFrame : public nsContainerFrame, nsReflowStatus& aStatus) override; Maybe GetNaturalBaselineBOffset( - mozilla::WritingMode aWM, BaselineSharingGroup aBaselineGroup, - BaselineExportContext) const override { + mozilla::WritingMode aWM, + BaselineSharingGroup aBaselineGroup) const override { if (!IsSingleLineTextControl()) { return Nothing{}; } diff --git a/layout/generic/BRFrame.cpp b/layout/generic/BRFrame.cpp index 5cb7c104d964..4062c438939a 100644 --- a/layout/generic/BRFrame.cpp +++ b/layout/generic/BRFrame.cpp @@ -60,8 +60,7 @@ class BRFrame final : public nsIFrame { nscoord GetPrefISize(gfxContext* aRenderingContext) override; Maybe GetNaturalBaselineBOffset( - WritingMode aWM, BaselineSharingGroup aBaselineGroup, - BaselineExportContext) const override; + WritingMode aWM, BaselineSharingGroup aBaselineGroup) const override; bool IsFrameOfType(uint32_t aFlags) const override { return nsIFrame::IsFrameOfType( @@ -204,8 +203,7 @@ nscoord BRFrame::GetPrefISize(gfxContext* aRenderingContext) { } Maybe BRFrame::GetNaturalBaselineBOffset( - WritingMode aWM, BaselineSharingGroup aBaselineGroup, - BaselineExportContext) const { + WritingMode aWM, BaselineSharingGroup aBaselineGroup) const { if (aBaselineGroup == BaselineSharingGroup::Last) { return Nothing{}; } diff --git a/layout/generic/ColumnSetWrapperFrame.cpp b/layout/generic/ColumnSetWrapperFrame.cpp index b694b3f4f1e9..de2bfcd9ddb2 100644 --- a/layout/generic/ColumnSetWrapperFrame.cpp +++ b/layout/generic/ColumnSetWrapperFrame.cpp @@ -235,8 +235,7 @@ nscoord ColumnSetWrapperFrame::GetPrefISize(gfxContext* aRenderingContext) { template Maybe ColumnSetWrapperFrame::GetBaselineBOffset( Iterator aStart, Iterator aEnd, WritingMode aWM, - BaselineSharingGroup aBaselineGroup, - BaselineExportContext aExportContext) const { + BaselineSharingGroup aBaselineGroup) const { // Either forward iterator + first baseline, or reverse iterator + last // baseline MOZ_ASSERT((*aStart == PrincipalChildList().FirstChild() && @@ -252,8 +251,7 @@ Maybe ColumnSetWrapperFrame::GetBaselineBOffset( // baseline. for (auto itr = aStart; itr != aEnd; ++itr) { const nsIFrame* kid = *itr; - auto kidBaseline = - kid->GetNaturalBaselineBOffset(aWM, aBaselineGroup, aExportContext); + auto kidBaseline = kid->GetNaturalBaselineBOffset(aWM, aBaselineGroup); if (!kidBaseline) { continue; } @@ -272,16 +270,13 @@ Maybe ColumnSetWrapperFrame::GetBaselineBOffset( } Maybe ColumnSetWrapperFrame::GetNaturalBaselineBOffset( - WritingMode aWM, BaselineSharingGroup aBaselineGroup, - BaselineExportContext aExportContext) const { + WritingMode aWM, BaselineSharingGroup aBaselineGroup) const { if (aBaselineGroup == BaselineSharingGroup::First) { return GetBaselineBOffset(PrincipalChildList().cbegin(), - PrincipalChildList().cend(), aWM, aBaselineGroup, - aExportContext); + PrincipalChildList().cend(), aWM, aBaselineGroup); } return GetBaselineBOffset(PrincipalChildList().crbegin(), - PrincipalChildList().crend(), aWM, aBaselineGroup, - aExportContext); + PrincipalChildList().crend(), aWM, aBaselineGroup); } #ifdef DEBUG diff --git a/layout/generic/ColumnSetWrapperFrame.h b/layout/generic/ColumnSetWrapperFrame.h index a71d72da6c05..0ee2b0b4eb1e 100644 --- a/layout/generic/ColumnSetWrapperFrame.h +++ b/layout/generic/ColumnSetWrapperFrame.h @@ -60,8 +60,7 @@ class ColumnSetWrapperFrame final : public nsBlockFrame { nscoord GetPrefISize(gfxContext* aRenderingContext) override; Maybe GetNaturalBaselineBOffset( - WritingMode aWM, BaselineSharingGroup aBaselineGroup, - BaselineExportContext aExportContext) const override; + WritingMode aWM, BaselineSharingGroup aBaselineGroup) const override; private: explicit ColumnSetWrapperFrame(ComputedStyle* aStyle, @@ -79,8 +78,7 @@ class ColumnSetWrapperFrame final : public nsBlockFrame { template Maybe GetBaselineBOffset(Iterator aStart, Iterator aEnd, WritingMode aWM, - BaselineSharingGroup aBaselineGroup, - BaselineExportContext aExportContext) const; + BaselineSharingGroup aBaselineGroup) const; }; } // namespace mozilla diff --git a/layout/generic/nsBlockFrame.cpp b/layout/generic/nsBlockFrame.cpp index e294defffcc7..38a6f3af0b40 100644 --- a/layout/generic/nsBlockFrame.cpp +++ b/layout/generic/nsBlockFrame.cpp @@ -603,76 +603,54 @@ nscoord nsBlockFrame::SynthesizeFallbackBaseline( return Baseline::SynthesizeBOffsetFromMarginBox(this, aWM, aBaselineGroup); } -template -Maybe nsBlockFrame::GetBaselineBOffset( - LineIterator aStart, LineIterator aEnd, WritingMode aWM, - BaselineSharingGroup aBaselineGroup, - BaselineExportContext aExportContext) const { - MOZ_ASSERT((std::is_same_v && - aBaselineGroup == BaselineSharingGroup::First) || - (std::is_same_v && - aBaselineGroup == BaselineSharingGroup::Last), - "Iterator direction must match baseline sharing group."); - for (auto line = aStart; line != aEnd; ++line) { - if (!line->IsBlock()) { - // XXX Is this the right test? We have some bogus empty lines - // floating around, but IsEmpty is perhaps too weak. - if (line->BSize() != 0 || !line->IsEmpty()) { - const auto ascent = line->BStart() + line->GetLogicalAscent(); - if (aBaselineGroup == BaselineSharingGroup::Last) { - return Some(BSize(aWM) - ascent); - } - return Some(ascent); - } - continue; - } - nsIFrame* kid = line->mFirstChild; - if (aWM.IsOrthogonalTo(kid->GetWritingMode())) { - continue; - } - if (aExportContext == BaselineExportContext::LineLayout && - kid->IsTableWrapperFrame()) { - // `` in inline-block context does not export any baseline. - continue; - } - const auto kidBaselineGroup = - aExportContext == BaselineExportContext::LineLayout - ? kid->GetDefaultBaselineSharingGroup() - : aBaselineGroup; - const auto kidBaseline = - kid->GetNaturalBaselineBOffset(aWM, kidBaselineGroup, aExportContext); - if (!kidBaseline) { - continue; - } - auto result = *kidBaseline; - if (kidBaselineGroup == BaselineSharingGroup::Last) { - result = kid->BSize(aWM) - result; - } - // Ignore relative positioning for baseline calculations. - const nsSize& sz = line->mContainerSize; - result += kid->GetLogicalNormalPosition(aWM, sz).B(aWM); - if (aBaselineGroup == BaselineSharingGroup::Last) { - return Some(BSize(aWM) - result); - } - return Some(result); - } - return Nothing{}; -} - Maybe nsBlockFrame::GetNaturalBaselineBOffset( - WritingMode aWM, BaselineSharingGroup aBaselineGroup, - BaselineExportContext aExportContext) const { + WritingMode aWM, BaselineSharingGroup aBaselineGroup) const { if (StyleDisplay()->IsContainLayout()) { return Nothing{}; } if (aBaselineGroup == BaselineSharingGroup::First) { - return GetBaselineBOffset(LinesBegin(), LinesEnd(), aWM, aBaselineGroup, - aExportContext); + nscoord result; + if (!nsLayoutUtils::GetFirstLineBaseline(aWM, this, &result)) { + return Nothing{}; + } + return Some(result); } - return GetBaselineBOffset(LinesRBegin(), LinesREnd(), aWM, aBaselineGroup, - aExportContext); + for (ConstReverseLineIterator line = LinesRBegin(), line_end = LinesREnd(); + line != line_end; ++line) { + if (line->IsBlock()) { + nsIFrame* kid = line->mFirstChild; + if (aWM.IsOrthogonalTo(kid->GetWritingMode())) { + continue; + } + if (kid->IsTableWrapperFrame()) { + // `
` in block display context does not export any baseline. + continue; + } + const auto kidBaselineGroup = kid->GetDefaultBaselineSharingGroup(); + const auto kidBaseline = + kid->GetNaturalBaselineBOffset(aWM, kidBaselineGroup); + if (!kidBaseline) { + continue; + } + auto result = *kidBaseline; + if (kidBaselineGroup == BaselineSharingGroup::Last) { + result = kid->BSize(aWM) - result; + } + // Ignore relative positioning for baseline calculations. + const nsSize& sz = line->mContainerSize; + result += kid->GetLogicalNormalPosition(aWM, sz).B(aWM); + return Some(BSize(aWM) - result); + } else { + // XXX Is this the right test? We have some bogus empty lines + // floating around, but IsEmpty is perhaps too weak. + if (line->BSize() != 0 || !line->IsEmpty()) { + return Some(BSize(aWM) - (line->BStart() + line->GetLogicalAscent())); + } + } + } + return Nothing{}; } nscoord nsBlockFrame::GetCaretBaseline() const { @@ -1592,8 +1570,7 @@ void nsBlockFrame::Reflow(nsPresContext* aPresContext, ReflowOutput& aMetrics, const auto baselineGroup = BaselineSharingGroup::First; Maybe result; if (MOZ_LIKELY(!wm.IsOrthogonalTo(marker->GetWritingMode()))) { - result = marker->GetNaturalBaselineBOffset( - wm, baselineGroup, BaselineExportContext::LineLayout); + result = marker->GetNaturalBaselineBOffset(wm, baselineGroup); } const auto markerBaseline = result.valueOrFrom([bbox, wm, marker]() { return bbox.BSize(wm) + marker->GetLogicalUsedMargin(wm).BEnd(wm); diff --git a/layout/generic/nsBlockFrame.h b/layout/generic/nsBlockFrame.h index 77ea1f1b359d..8dc18828d462 100644 --- a/layout/generic/nsBlockFrame.h +++ b/layout/generic/nsBlockFrame.h @@ -133,8 +133,8 @@ class nsBlockFrame : public nsContainerFrame { return BaselineSharingGroup::Last; } Maybe GetNaturalBaselineBOffset( - mozilla::WritingMode aWM, BaselineSharingGroup aBaselineGroup, - BaselineExportContext aExportContext) const override; + mozilla::WritingMode aWM, + BaselineSharingGroup aBaselineGroup) const override; nscoord GetCaretBaseline() const override; void DestroyFrom(nsIFrame* aDestructRoot, PostDestroyData& aPostDestroyData) override; @@ -276,12 +276,6 @@ class nsBlockFrame : public nsContainerFrame { private: void CheckIntrinsicCacheAgainstShrinkWrapState(); - template - Maybe GetBaselineBOffset(LineIterator aStart, LineIterator aEnd, - mozilla::WritingMode aWM, - BaselineSharingGroup aBaselineGroup, - BaselineExportContext aExportContext) const; - public: nscoord GetMinISize(gfxContext* aRenderingContext) override; nscoord GetPrefISize(gfxContext* aRenderingContext) override; diff --git a/layout/generic/nsColumnSetFrame.cpp b/layout/generic/nsColumnSetFrame.cpp index 8e38274b52eb..2e24500af32a 100644 --- a/layout/generic/nsColumnSetFrame.cpp +++ b/layout/generic/nsColumnSetFrame.cpp @@ -1297,12 +1297,10 @@ void nsColumnSetFrame::AppendDirectlyOwnedAnonBoxes( } Maybe nsColumnSetFrame::GetNaturalBaselineBOffset( - WritingMode aWM, BaselineSharingGroup aBaselineGroup, - BaselineExportContext aExportContext) const { + WritingMode aWM, BaselineSharingGroup aBaselineGroup) const { Maybe result; for (const auto* kid : mFrames) { - auto kidBaseline = - kid->GetNaturalBaselineBOffset(aWM, aBaselineGroup, aExportContext); + auto kidBaseline = kid->GetNaturalBaselineBOffset(aWM, aBaselineGroup); if (!kidBaseline) { continue; } diff --git a/layout/generic/nsColumnSetFrame.h b/layout/generic/nsColumnSetFrame.h index a06424e5f394..210d2401fa20 100644 --- a/layout/generic/nsColumnSetFrame.h +++ b/layout/generic/nsColumnSetFrame.h @@ -75,8 +75,8 @@ class nsColumnSetFrame final : public nsContainerFrame { const nsPoint& aPt); Maybe GetNaturalBaselineBOffset( - mozilla::WritingMode aWM, BaselineSharingGroup aBaselineGroup, - BaselineExportContext aExportContext) const override; + mozilla::WritingMode aWM, + BaselineSharingGroup aBaselineGroup) const override; protected: nscoord mLastBalanceBSize; diff --git a/layout/generic/nsFirstLetterFrame.cpp b/layout/generic/nsFirstLetterFrame.cpp index 1ce8aa9e3857..442cfcabe58e 100644 --- a/layout/generic/nsFirstLetterFrame.cpp +++ b/layout/generic/nsFirstLetterFrame.cpp @@ -426,8 +426,7 @@ void nsFirstLetterFrame::DrainOverflowFrames(nsPresContext* aPresContext) { } Maybe nsFirstLetterFrame::GetNaturalBaselineBOffset( - WritingMode aWM, BaselineSharingGroup aBaselineGroup, - BaselineExportContext) const { + WritingMode aWM, BaselineSharingGroup aBaselineGroup) const { if (aBaselineGroup == BaselineSharingGroup::Last) { return Nothing{}; } diff --git a/layout/generic/nsFirstLetterFrame.h b/layout/generic/nsFirstLetterFrame.h index 4a099ebf3f6a..f17d28f8e529 100644 --- a/layout/generic/nsFirstLetterFrame.h +++ b/layout/generic/nsFirstLetterFrame.h @@ -61,8 +61,8 @@ class nsFirstLetterFrame final : public nsContainerFrame { virtual bool CanContinueTextRun() const override; Maybe GetNaturalBaselineBOffset( - mozilla::WritingMode aWM, BaselineSharingGroup aBaselineGroup, - BaselineExportContext) const override; + mozilla::WritingMode aWM, + BaselineSharingGroup aBaselineGroup) const override; virtual LogicalSides GetLogicalSkipSides() const override; // override of nsFrame method diff --git a/layout/generic/nsFlexContainerFrame.cpp b/layout/generic/nsFlexContainerFrame.cpp index c2f562339f62..ed0dac152960 100644 --- a/layout/generic/nsFlexContainerFrame.cpp +++ b/layout/generic/nsFlexContainerFrame.cpp @@ -416,8 +416,7 @@ class nsFlexContainerFrame::FlexItem final { // If the nsLayoutUtils getter fails, then ask the frame directly: auto baselineGroup = aUseFirstBaseline ? BaselineSharingGroup::First : BaselineSharingGroup::Last; - if (auto baseline = mFrame->GetNaturalBaselineBOffset( - mWM, baselineGroup, BaselineExportContext::Other)) { + if (auto baseline = mFrame->GetNaturalBaselineBOffset(mWM, baselineGroup)) { // Offset for last baseline from `GetNaturalBaselineBOffset` originates // from the frame's block end, so convert it back. mAscent = baselineGroup == BaselineSharingGroup::First @@ -4637,8 +4636,7 @@ void nsFlexContainerFrame::Reflow(nsPresContext* aPresContext, } Maybe nsFlexContainerFrame::GetNaturalBaselineBOffset( - WritingMode aWM, BaselineSharingGroup aBaselineGroup, - BaselineExportContext) const { + WritingMode aWM, BaselineSharingGroup aBaselineGroup) const { if (StyleDisplay()->IsContainLayout() || HasAnyStateBits(NS_STATE_FLEX_SYNTHESIZE_BASELINE)) { return Nothing{}; diff --git a/layout/generic/nsFlexContainerFrame.h b/layout/generic/nsFlexContainerFrame.h index 42911016d068..1c097672d895 100644 --- a/layout/generic/nsFlexContainerFrame.h +++ b/layout/generic/nsFlexContainerFrame.h @@ -166,8 +166,8 @@ class nsFlexContainerFrame final : public nsContainerFrame, #endif Maybe GetNaturalBaselineBOffset( - mozilla::WritingMode aWM, BaselineSharingGroup aBaselineGroup, - BaselineExportContext) const override; + mozilla::WritingMode aWM, + BaselineSharingGroup aBaselineGroup) const override; // Unions the child overflow from our in-flow children. void UnionInFlowChildOverflow(mozilla::OverflowAreas&); diff --git a/layout/generic/nsGfxScrollFrame.cpp b/layout/generic/nsGfxScrollFrame.cpp index 5a5ec2dcab6f..893f4a9870e8 100644 --- a/layout/generic/nsGfxScrollFrame.cpp +++ b/layout/generic/nsGfxScrollFrame.cpp @@ -1421,8 +1421,7 @@ nscoord nsHTMLScrollFrame::SynthesizeFallbackBaseline( } Maybe nsHTMLScrollFrame::GetNaturalBaselineBOffset( - WritingMode aWM, BaselineSharingGroup aBaselineGroup, - BaselineExportContext aExportContext) const { + WritingMode aWM, BaselineSharingGroup aBaselineGroup) const { // Block containers that are scrollable always have a last baseline // that are synthesized from block-end margin edge. // Note(dshin): This behaviour is really only relevant to `inline-block` @@ -1430,8 +1429,7 @@ Maybe nsHTMLScrollFrame::GetNaturalBaselineBOffset( // baselines are calculated through `GetFirstLineBaseline`, which does // calculations of its own. // https://drafts.csswg.org/css-align/#baseline-export - if (aExportContext == BaselineExportContext::LineLayout && - aBaselineGroup == BaselineSharingGroup::Last && + if (aBaselineGroup == BaselineSharingGroup::Last && mScrolledFrame->IsBlockFrameOrSubclass()) { return Some(SynthesizeFallbackBaseline(aWM, aBaselineGroup)); } @@ -1441,8 +1439,7 @@ Maybe nsHTMLScrollFrame::GetNaturalBaselineBOffset( } // OK, here's where we defer to our scrolled frame. - return mScrolledFrame - ->GetNaturalBaselineBOffset(aWM, aBaselineGroup, aExportContext) + return mScrolledFrame->GetNaturalBaselineBOffset(aWM, aBaselineGroup) .map([this, aWM](nscoord aBaseline) { // We have to add our border BStart thickness to whatever it returns, to // produce an offset in our frame-rect's coordinate system. (We don't diff --git a/layout/generic/nsGfxScrollFrame.h b/layout/generic/nsGfxScrollFrame.h index ebedac17d5a1..53736caaf167 100644 --- a/layout/generic/nsGfxScrollFrame.h +++ b/layout/generic/nsGfxScrollFrame.h @@ -130,8 +130,8 @@ class nsHTMLScrollFrame : public nsContainerFrame, mozilla::WritingMode aWM, BaselineSharingGroup aBaselineGroup) const override; Maybe GetNaturalBaselineBOffset( - mozilla::WritingMode aWM, BaselineSharingGroup aBaselineGroup, - BaselineExportContext aExportContext) const override; + mozilla::WritingMode aWM, + BaselineSharingGroup aBaselineGroup) const override; // Recomputes the scrollable overflow area we store in the helper to take // children that are affected by perpsective set on the outer frame and scroll diff --git a/layout/generic/nsGridContainerFrame.cpp b/layout/generic/nsGridContainerFrame.cpp index d3aaa8ee8533..bac52907dfc4 100644 --- a/layout/generic/nsGridContainerFrame.cpp +++ b/layout/generic/nsGridContainerFrame.cpp @@ -9568,9 +9568,7 @@ nscoord nsGridContainerFrame::SynthesizeBaseline( baseline = isOrthogonal ? grid->GetIBaseline(aGroup) : grid->GetBBaseline(aGroup); } else if (!isOrthogonal && aGridOrderItem.mIsInEdgeTrack) { - baseline = child - ->GetNaturalBaselineBOffset(childWM, aGroup, - BaselineExportContext::Other) + baseline = child->GetNaturalBaselineBOffset(childWM, aGroup) .valueOrFrom([aGroup, child, childWM]() { return Baseline::SynthesizeBOffsetFromBorderBox( child, childWM, aGroup); diff --git a/layout/generic/nsGridContainerFrame.h b/layout/generic/nsGridContainerFrame.h index ab790c4e0e5d..568331ce9a43 100644 --- a/layout/generic/nsGridContainerFrame.h +++ b/layout/generic/nsGridContainerFrame.h @@ -131,8 +131,8 @@ class nsGridContainerFrame final : public nsContainerFrame, const nsDisplayListSet& aLists) override; Maybe GetNaturalBaselineBOffset( - mozilla::WritingMode aWM, BaselineSharingGroup aBaselineGroup, - BaselineExportContext) const override { + mozilla::WritingMode aWM, + BaselineSharingGroup aBaselineGroup) const override { if (StyleDisplay()->IsContainLayout() || HasAnyStateBits(NS_STATE_GRID_SYNTHESIZE_BASELINE)) { return Nothing{}; diff --git a/layout/generic/nsIFrame.cpp b/layout/generic/nsIFrame.cpp index 3d47a77ace89..3bb6f1c8a07d 100644 --- a/layout/generic/nsIFrame.cpp +++ b/layout/generic/nsIFrame.cpp @@ -2092,15 +2092,13 @@ nscoord nsIFrame::SynthesizeFallbackBaseline( } nscoord nsIFrame::GetLogicalBaseline(WritingMode aWM) const { - return GetLogicalBaseline(aWM, GetDefaultBaselineSharingGroup(), - BaselineExportContext::LineLayout); + return GetLogicalBaseline(aWM, GetDefaultBaselineSharingGroup()); } nscoord nsIFrame::GetLogicalBaseline( - WritingMode aWM, BaselineSharingGroup aBaselineGroup, - BaselineExportContext aExportContext) const { + WritingMode aWM, BaselineSharingGroup aBaselineGroup) const { const auto result = - GetNaturalBaselineBOffset(aWM, aBaselineGroup, aExportContext) + GetNaturalBaselineBOffset(aWM, aBaselineGroup) .valueOrFrom([this, aWM, aBaselineGroup]() { return SynthesizeFallbackBaseline(aWM, aBaselineGroup); }); diff --git a/layout/generic/nsIFrame.h b/layout/generic/nsIFrame.h index 0e99e57e6ab2..318c37e3f456 100644 --- a/layout/generic/nsIFrame.h +++ b/layout/generic/nsIFrame.h @@ -519,7 +519,6 @@ class nsIFrame : public nsQueryFrame { public: using AlignmentContext = mozilla::AlignmentContext; using BaselineSharingGroup = mozilla::BaselineSharingGroup; - using BaselineExportContext = mozilla::BaselineExportContext; template using Maybe = mozilla::Maybe; template @@ -1529,19 +1528,14 @@ class nsIFrame : public nsQueryFrame { /** * `GetNaturalBaselineBOffset`, but determines the baseline sharing group - * through `GetDefaultBaselineSharingGroup` (If not specified), assuming line - * layout context, and never fails, returning a synthesized baseline through + * through `GetDefaultBaselineSharingGroup` (If not specified), and never + * fails, returning a synthesized baseline through * `SynthesizeFallbackBaseline`. Unlike `GetNaturalBaselineBOffset`, Result is * always relative to the block start of the frame. */ nscoord GetLogicalBaseline(mozilla::WritingMode aWM) const; - /** - * Same as the above, but with baseline sharing group & export - * context specified. - */ nscoord GetLogicalBaseline(mozilla::WritingMode aWM, - BaselineSharingGroup aBaselineGroup, - BaselineExportContext aExportContext) const; + BaselineSharingGroup aBaselineGroup) const; /** * Return true if the frame has a first(last) inline-axis baseline per @@ -1549,21 +1543,14 @@ class nsIFrame : public nsQueryFrame { * the relevant block-axis border-box edge (Start for * BaselineSharingGroup::First, end for BaselineSharingGroup::Last), where * a positive value points towards the content-box. - * Some frames can export different baselines depending if it's in a line - * layout context or any other context (e.g. Flex, grid). * https://drafts.csswg.org/css-align-3/#baseline-export * @note The returned value is only valid when reflow is not needed. * @note You should only call this on frames with a WM that's parallel to aWM. - * @note We're approaching `nsLayoutUtils::Get(First|Last)LineBaseline` == - * `GetNaturalBaselineBOffset(aWM, (First|Last), Other)`. Grid relies on - * baseline synthesis behaviour in `nsLayoutUtils` implementations (bug - * 1609403), which blocks its removal. * @param aWM the writing-mode of the alignment context. * @return the baseline offset, if one exists */ virtual Maybe GetNaturalBaselineBOffset( - mozilla::WritingMode aWM, BaselineSharingGroup aBaselineGroup, - BaselineExportContext aExportContext) const { + mozilla::WritingMode aWM, BaselineSharingGroup aBaselineGroup) const { return Nothing{}; } @@ -1670,8 +1657,7 @@ class nsIFrame : public nsQueryFrame { public: /** - * Get the suitable baseline sharing group for this element, assuming line - * layout. + * Get the suitable baseline sharing group for this element. */ virtual BaselineSharingGroup GetDefaultBaselineSharingGroup() const { return BaselineSharingGroup::First; diff --git a/layout/generic/nsInlineFrame.cpp b/layout/generic/nsInlineFrame.cpp index 37122545299d..8d502b3a533a 100644 --- a/layout/generic/nsInlineFrame.cpp +++ b/layout/generic/nsInlineFrame.cpp @@ -841,8 +841,7 @@ LogicalSides nsInlineFrame::GetLogicalSkipSides() const { } Maybe nsInlineFrame::GetNaturalBaselineBOffset( - WritingMode aWM, BaselineSharingGroup aBaselineGroup, - BaselineExportContext) const { + WritingMode aWM, BaselineSharingGroup aBaselineGroup) const { if (aBaselineGroup == BaselineSharingGroup::Last) { return Nothing{}; } diff --git a/layout/generic/nsInlineFrame.h b/layout/generic/nsInlineFrame.h index 748bd546a84f..f7156ff4d3cd 100644 --- a/layout/generic/nsInlineFrame.h +++ b/layout/generic/nsInlineFrame.h @@ -97,8 +97,8 @@ class nsInlineFrame : public nsContainerFrame { virtual void PullOverflowsFromPrevInFlow() override; Maybe GetNaturalBaselineBOffset( - mozilla::WritingMode aWM, BaselineSharingGroup aBaselineGroup, - BaselineExportContext) const override; + mozilla::WritingMode aWM, + BaselineSharingGroup aBaselineGroup) const override; virtual bool DrainSelfOverflowList() override; /** diff --git a/layout/generic/nsLineLayout.cpp b/layout/generic/nsLineLayout.cpp index 55133f9d24e7..df25e991adab 100644 --- a/layout/generic/nsLineLayout.cpp +++ b/layout/generic/nsLineLayout.cpp @@ -1335,18 +1335,6 @@ bool nsLineLayout::CanPlaceFrame(PerFrameData* pfd, bool aNotSafeToBreak, return false; } -BaselineSharingGroup BaselineSourceToBaselineSharingGroup( - const nsIFrame& aFrame) { - switch (aFrame.StyleDisplay()->mBaselineSource) { - case StyleBaselineSource::First: - return BaselineSharingGroup::First; - case StyleBaselineSource::Last: - return BaselineSharingGroup::Last; - case StyleBaselineSource::Auto: - return aFrame.GetDefaultBaselineSharingGroup(); - } -} - /** * Place the frame. Update running counters. */ @@ -1361,32 +1349,10 @@ void nsLineLayout::PlaceFrame(PerFrameData* pfd, ReflowOutput& aMetrics) { ? lineWM.IsLineInverted() ? 0 : aMetrics.BSize(lineWM) : aMetrics.BSize(lineWM) / 2; } else { - if (pfd->mFrame->StyleDisplay()->mBaselineSource == - StyleBaselineSource::Auto) { - if (aMetrics.BlockStartAscent() == ReflowOutput::ASK_FOR_BASELINE) { - pfd->mAscent = pfd->mFrame->GetLogicalBaseline(lineWM); - } else { - pfd->mAscent = aMetrics.BlockStartAscent(); - } + if (aMetrics.BlockStartAscent() == ReflowOutput::ASK_FOR_BASELINE) { + pfd->mAscent = pfd->mFrame->GetLogicalBaseline(lineWM); } else { - const auto sourceGroup = [pfd]() { - switch (pfd->mFrame->StyleDisplay()->mBaselineSource) { - case StyleBaselineSource::First: - return BaselineSharingGroup::First; - case StyleBaselineSource::Last: - return BaselineSharingGroup::Last; - case StyleBaselineSource::Auto: - break; - } - MOZ_ASSERT_UNREACHABLE("Auto should be already handled?"); - }(); - // We ignore line-layout specific layout quirks by setting - // `BaselineExportContext::Other`. - // Note(dshin): For a lot of frames, the export context does not make a - // difference, and we may be wasting the value cached in - // `BlockStartAscent`. - pfd->mAscent = pfd->mFrame->GetLogicalBaseline( - lineWM, sourceGroup, BaselineExportContext::Other); + pfd->mAscent = aMetrics.BlockStartAscent(); } } @@ -1450,6 +1416,7 @@ void nsLineLayout::RemoveMarkerFrame(nsIFrame* aFrame) { psd->mFirstFrame = pfd->mNext; FreeFrame(pfd); } + #ifdef DEBUG void nsLineLayout::DumpPerSpanData(PerSpanData* psd, int32_t aIndent) { nsIFrame::IndentBy(stdout, aIndent); diff --git a/layout/generic/nsRubyBaseContainerFrame.cpp b/layout/generic/nsRubyBaseContainerFrame.cpp index 0241792a2324..f34379faf9fa 100644 --- a/layout/generic/nsRubyBaseContainerFrame.cpp +++ b/layout/generic/nsRubyBaseContainerFrame.cpp @@ -262,8 +262,7 @@ nsIFrame::SizeComputationResult nsRubyBaseContainerFrame::ComputeSize( } Maybe nsRubyBaseContainerFrame::GetNaturalBaselineBOffset( - WritingMode aWM, BaselineSharingGroup aBaselineGroup, - BaselineExportContext) const { + WritingMode aWM, BaselineSharingGroup aBaselineGroup) const { if (aBaselineGroup == BaselineSharingGroup::Last) { return Nothing{}; } diff --git a/layout/generic/nsRubyBaseContainerFrame.h b/layout/generic/nsRubyBaseContainerFrame.h index 79524f3abc1d..3cb2c7d14486 100644 --- a/layout/generic/nsRubyBaseContainerFrame.h +++ b/layout/generic/nsRubyBaseContainerFrame.h @@ -47,8 +47,8 @@ class nsRubyBaseContainerFrame final : public nsContainerFrame { nsReflowStatus& aStatus) override; Maybe GetNaturalBaselineBOffset( - mozilla::WritingMode aWM, BaselineSharingGroup aBaselineGroup, - BaselineExportContext) const override; + mozilla::WritingMode aWM, + BaselineSharingGroup aBaselineGroup) const override; #ifdef DEBUG_FRAME_DUMP virtual nsresult GetFrameName(nsAString& aResult) const override; diff --git a/layout/generic/nsTextFrame.cpp b/layout/generic/nsTextFrame.cpp index 70016accd59a..09fe2513cecc 100644 --- a/layout/generic/nsTextFrame.cpp +++ b/layout/generic/nsTextFrame.cpp @@ -10058,8 +10058,7 @@ bool nsTextFrame::IsAtEndOfLine() const { } Maybe nsTextFrame::GetNaturalBaselineBOffset( - WritingMode aWM, BaselineSharingGroup aBaselineGroup, - BaselineExportContext) const { + WritingMode aWM, BaselineSharingGroup aBaselineGroup) const { if (aBaselineGroup == BaselineSharingGroup::Last) { return Nothing{}; } diff --git a/layout/generic/nsTextFrame.h b/layout/generic/nsTextFrame.h index 51cc15c6e28c..d67819cf4a22 100644 --- a/layout/generic/nsTextFrame.h +++ b/layout/generic/nsTextFrame.h @@ -367,8 +367,8 @@ class nsTextFrame : public nsIFrame { bool IsEmpty() final; bool IsSelfEmpty() final { return IsEmpty(); } Maybe GetNaturalBaselineBOffset( - mozilla::WritingMode aWM, BaselineSharingGroup aBaselineGroup, - BaselineExportContext) const override; + mozilla::WritingMode aWM, + BaselineSharingGroup aBaselineGroup) const override; bool HasSignificantTerminalNewline() const final; diff --git a/layout/style/ServoBindings.toml b/layout/style/ServoBindings.toml index c0d3ba6a95f9..ae447d9ed501 100644 --- a/layout/style/ServoBindings.toml +++ b/layout/style/ServoBindings.toml @@ -646,7 +646,6 @@ cbindgen-types = [ { gecko = "StyleFontSynthesis", servo = "crate::values::computed::font::FontSynthesis" }, { gecko = "StyleBoolInteger", servo = "crate::values::computed::BoolInteger" }, { gecko = "StyleTime", servo = "crate::values::computed::Time" }, - { gecko = "StyleBaselineSource", servo = "crate::values::computed::BaselineSource" }, ] mapped-generic-types = [ diff --git a/layout/style/nsStyleStruct.cpp b/layout/style/nsStyleStruct.cpp index a01aa5e5f69c..14b8de248bb1 100644 --- a/layout/style/nsStyleStruct.cpp +++ b/layout/style/nsStyleStruct.cpp @@ -2224,7 +2224,6 @@ nsStyleDisplay::nsStyleDisplay(const Document& aDocument) mPerspectiveOrigin(Position::FromPercentage(0.5f)), mVerticalAlign( StyleVerticalAlign::Keyword(StyleVerticalAlignKeyword::Baseline)), - mBaselineSource(StyleBaselineSource::Auto), mWebkitLineClamp(0), mShapeMargin(LengthPercentage::Zero()), mShapeOutside(StyleShapeOutside::None()) { @@ -2280,7 +2279,6 @@ nsStyleDisplay::nsStyleDisplay(const nsStyleDisplay& aSource) mChildPerspective(aSource.mChildPerspective), mPerspectiveOrigin(aSource.mPerspectiveOrigin), mVerticalAlign(aSource.mVerticalAlign), - mBaselineSource(aSource.mBaselineSource), mWebkitLineClamp(aSource.mWebkitLineClamp), mShapeImageThreshold(aSource.mShapeImageThreshold), mShapeMargin(aSource.mShapeMargin), @@ -2517,8 +2515,7 @@ nsChangeHint nsStyleDisplay::CalcDifference( } if (mWebkitLineClamp != aNewData.mWebkitLineClamp || - mVerticalAlign != aNewData.mVerticalAlign || - mBaselineSource != aNewData.mBaselineSource) { + mVerticalAlign != aNewData.mVerticalAlign) { // XXX Can this just be AllReflowHints + RepaintFrame, and be included in // the block below? hint |= NS_STYLE_HINT_REFLOW; diff --git a/layout/style/nsStyleStruct.h b/layout/style/nsStyleStruct.h index 9506e4598aa3..672566125cd4 100644 --- a/layout/style/nsStyleStruct.h +++ b/layout/style/nsStyleStruct.h @@ -1381,7 +1381,6 @@ struct MOZ_NEEDS_MEMMOVABLE_MEMBERS nsStyleDisplay { mozilla::Position mPerspectiveOrigin; mozilla::StyleVerticalAlign mVerticalAlign; - mozilla::StyleBaselineSource mBaselineSource; mozilla::StyleLineClamp mWebkitLineClamp; diff --git a/layout/style/test/property_database.js b/layout/style/test/property_database.js index 6a35050ba010..1dce0ed21964 100644 --- a/layout/style/test/property_database.js +++ b/layout/style/test/property_database.js @@ -8418,17 +8418,6 @@ var gCSSProperties = { invalid_values: [], quirks_values: { "5": "5px" }, }, - "baseline-source": { - domProp: "baselineSource", - inherited: false, - type: CSS_TYPE_LONGHAND, - applies_to_first_letter: true, - applies_to_first_line: true, - applies_to_placeholder: true, - initial_values: ["auto"], - other_values: ["first", "last"], - invalid_values: [], - }, visibility: { domProp: "visibility", inherited: true, diff --git a/layout/tables/nsTableFrame.cpp b/layout/tables/nsTableFrame.cpp index ed0c507d8188..6c480fe15b4c 100644 --- a/layout/tables/nsTableFrame.cpp +++ b/layout/tables/nsTableFrame.cpp @@ -3542,8 +3542,7 @@ nscoord nsTableFrame::SynthesizeFallbackBaseline( /* virtual */ Maybe nsTableFrame::GetNaturalBaselineBOffset( - WritingMode aWM, BaselineSharingGroup aBaselineGroup, - BaselineExportContext) const { + WritingMode aWM, BaselineSharingGroup aBaselineGroup) const { if (StyleDisplay()->IsContainLayout()) { return Nothing{}; } diff --git a/layout/tables/nsTableFrame.h b/layout/tables/nsTableFrame.h index f5bb89c8e8cc..fe28abce6f4f 100644 --- a/layout/tables/nsTableFrame.h +++ b/layout/tables/nsTableFrame.h @@ -439,8 +439,8 @@ class nsTableFrame : public nsContainerFrame { mozilla::WritingMode aWM, BaselineSharingGroup aBaselineGroup) const override; Maybe GetNaturalBaselineBOffset( - mozilla::WritingMode aWM, BaselineSharingGroup aBaselineGroup, - BaselineExportContext) const override; + mozilla::WritingMode aWM, + BaselineSharingGroup aBaselineGroup) const override; /** return the row span of a cell, taking into account row span magic at the * bottom of a table. The row span equals the number of rows spanned by aCell diff --git a/layout/tables/nsTableWrapperFrame.cpp b/layout/tables/nsTableWrapperFrame.cpp index 85b4ce091851..37a4391b750f 100644 --- a/layout/tables/nsTableWrapperFrame.cpp +++ b/layout/tables/nsTableWrapperFrame.cpp @@ -41,8 +41,7 @@ nscoord nsTableWrapperFrame::SynthesizeFallbackBaseline( } Maybe nsTableWrapperFrame::GetNaturalBaselineBOffset( - WritingMode aWM, BaselineSharingGroup aBaselineGroup, - BaselineExportContext aExportContext) const { + WritingMode aWM, BaselineSharingGroup aBaselineGroup) const { // Baseline is determined by row // (https://drafts.csswg.org/css-align-3/#baseline-export). If the row // direction is going to be orthogonal to the parent's writing mode, the @@ -53,8 +52,7 @@ Maybe nsTableWrapperFrame::GetNaturalBaselineBOffset( return Nothing{}; } auto* innerTable = InnerTableFrame(); - return innerTable - ->GetNaturalBaselineBOffset(aWM, aBaselineGroup, aExportContext) + return innerTable->GetNaturalBaselineBOffset(aWM, aBaselineGroup) .map([this, aWM, aBaselineGroup, innerTable](nscoord aBaseline) { auto bStart = innerTable->BStart(aWM, mRect.Size()); if (aBaselineGroup == BaselineSharingGroup::First) { diff --git a/layout/tables/nsTableWrapperFrame.h b/layout/tables/nsTableWrapperFrame.h index 641ded6a5225..ef294dced74c 100644 --- a/layout/tables/nsTableWrapperFrame.h +++ b/layout/tables/nsTableWrapperFrame.h @@ -68,8 +68,8 @@ class nsTableWrapperFrame : public nsContainerFrame { mozilla::WritingMode aWM, BaselineSharingGroup aBaselineGroup) const override; Maybe GetNaturalBaselineBOffset( - mozilla::WritingMode aWM, BaselineSharingGroup aBaselineGroup, - BaselineExportContext aExportContext) const override; + mozilla::WritingMode aWM, + BaselineSharingGroup aBaselineGroup) const override; virtual nscoord GetMinISize(gfxContext* aRenderingContext) override; virtual nscoord GetPrefISize(gfxContext* aRenderingContext) override; diff --git a/servo/components/style/properties/data.py b/servo/components/style/properties/data.py index 509b831c05ab..5b5c6815b28e 100644 --- a/servo/components/style/properties/data.py +++ b/servo/components/style/properties/data.py @@ -447,7 +447,6 @@ class Longhand(Property): "AlignSelf", "Appearance", "AspectRatio", - "BaselineSource", "BreakBetween", "BreakWithin", "BackgroundRepeat", diff --git a/servo/components/style/properties/longhands/box.mako.rs b/servo/components/style/properties/longhands/box.mako.rs index e5e57ae48f79..a84a20c455de 100644 --- a/servo/components/style/properties/longhands/box.mako.rs +++ b/servo/components/style/properties/longhands/box.mako.rs @@ -94,16 +94,6 @@ ${helpers.predefined_type( servo_restyle_damage = "reflow", )} -${helpers.predefined_type( - "baseline-source", - "BaselineSource", - "computed::BaselineSource::Auto", - engines="gecko servo-2013", - animation_value_type="discrete", - spec="https://drafts.csswg.org/css-inline-3/#baseline-source", - servo_restyle_damage = "reflow", -)} - // CSS 2.1, Section 11 - Visual effects ${helpers.single_keyword( diff --git a/servo/components/style/values/computed/box.rs b/servo/components/style/values/computed/box.rs index 06b059fd6874..06f83aa70ad9 100644 --- a/servo/components/style/values/computed/box.rs +++ b/servo/components/style/values/computed/box.rs @@ -18,7 +18,7 @@ pub use crate::values::specified::box_::{ Float as SpecifiedFloat, Overflow, OverflowAnchor, OverflowClipBox, OverscrollBehavior, ScrollAxis, ScrollSnapAlign, ScrollSnapAxis, ScrollSnapStop, ScrollSnapStrictness, ScrollSnapType, ScrollTimelineName, ScrollbarGutter, TouchAction, TransitionProperty, - WillChange, BaselineSource, + WillChange, }; use std::fmt::{self, Write}; diff --git a/servo/components/style/values/computed/mod.rs b/servo/components/style/values/computed/mod.rs index 19261776f363..49048711643f 100644 --- a/servo/components/style/values/computed/mod.rs +++ b/servo/components/style/values/computed/mod.rs @@ -58,7 +58,7 @@ pub use self::box_::{Display, LineClamp, Overflow, OverflowAnchor, TransitionPro pub use self::box_::{OverflowClipBox, OverscrollBehavior, Perspective, Resize, ScrollbarGutter}; pub use self::box_::{ScrollAxis, ScrollSnapAlign, ScrollSnapAxis, ScrollSnapStop}; pub use self::box_::{ScrollSnapStrictness, ScrollSnapType, ScrollTimelineName}; -pub use self::box_::{TouchAction, VerticalAlign, WillChange, BaselineSource}; +pub use self::box_::{TouchAction, VerticalAlign, WillChange}; pub use self::color::{Color, ColorOrAuto, ColorPropertyValue, ColorScheme, PrintColorAdjust, ForcedColorAdjust}; pub use self::column::ColumnCount; pub use self::counters::{Content, ContentItem, CounterIncrement, CounterReset, CounterSet}; diff --git a/servo/components/style/values/specified/box.rs b/servo/components/style/values/specified/box.rs index 2080749592d8..e66dfd00b47a 100644 --- a/servo/components/style/values/specified/box.rs +++ b/servo/components/style/values/specified/box.rs @@ -637,33 +637,6 @@ impl Parse for VerticalAlign { } } -/// A specified value for the `baseline-source` property. -/// https://drafts.csswg.org/css-inline-3/#baseline-source -#[derive( - Clone, - Copy, - Debug, - Eq, - Hash, - MallocSizeOf, - Parse, - PartialEq, - SpecifiedValueInfo, - ToCss, - ToShmem, - ToComputedValue, - ToResolvedValue, -)] -#[repr(u8)] -pub enum BaselineSource { - /// `Last` for `inline-block`, `First` otherwise. - Auto, - /// Use first baseline for alignment. - First, - /// Use last baseline for alignment. - Last, -} - /// https://drafts.csswg.org/css-animations/#animation-iteration-count #[derive(Clone, Debug, MallocSizeOf, PartialEq, Parse, SpecifiedValueInfo, ToCss, ToShmem)] pub enum AnimationIterationCount { diff --git a/servo/components/style/values/specified/mod.rs b/servo/components/style/values/specified/mod.rs index 4b9006d50dd7..1acf622980cd 100644 --- a/servo/components/style/values/specified/mod.rs +++ b/servo/components/style/values/specified/mod.rs @@ -44,7 +44,7 @@ pub use self::box_::{ pub use self::box_::{OverflowClipBox, OverscrollBehavior, Perspective, Resize, ScrollbarGutter}; pub use self::box_::{ScrollAxis, ScrollSnapAlign, ScrollSnapAxis, ScrollSnapStop}; pub use self::box_::{ScrollSnapStrictness, ScrollSnapType, ScrollTimelineName}; -pub use self::box_::{TouchAction, TransitionProperty, VerticalAlign, WillChange, BaselineSource}; +pub use self::box_::{TouchAction, TransitionProperty, VerticalAlign, WillChange}; pub use self::color::{Color, ColorOrAuto, ColorPropertyValue, ColorScheme, PrintColorAdjust, ForcedColorAdjust}; pub use self::column::ColumnCount; pub use self::counters::{Content, ContentItem, CounterIncrement, CounterReset, CounterSet}; diff --git a/servo/ports/geckolib/cbindgen.toml b/servo/ports/geckolib/cbindgen.toml index 416f8ca05bce..97beef439419 100644 --- a/servo/ports/geckolib/cbindgen.toml +++ b/servo/ports/geckolib/cbindgen.toml @@ -147,7 +147,6 @@ include = [ "Position", "PositionOrAuto", "BackgroundSize", - "BaselineSource", "BorderImageSlice", "BorderSpacing", "BorderRadius", diff --git a/testing/web-platform/meta/css/css-inline/baseline-source/baseline-source-computed.html.ini b/testing/web-platform/meta/css/css-inline/baseline-source/baseline-source-computed.html.ini new file mode 100644 index 000000000000..6c85167ba576 --- /dev/null +++ b/testing/web-platform/meta/css/css-inline/baseline-source/baseline-source-computed.html.ini @@ -0,0 +1,9 @@ +[baseline-source-computed.html] + [Property baseline-source value 'auto'] + expected: FAIL + + [Property baseline-source value 'first'] + expected: FAIL + + [Property baseline-source value 'last'] + expected: FAIL diff --git a/testing/web-platform/meta/css/css-inline/baseline-source/baseline-source-first-001.html.ini b/testing/web-platform/meta/css/css-inline/baseline-source/baseline-source-first-001.html.ini new file mode 100644 index 000000000000..b935b3ea7fdd --- /dev/null +++ b/testing/web-platform/meta/css/css-inline/baseline-source/baseline-source-first-001.html.ini @@ -0,0 +1,21 @@ +[baseline-source-first-001.html] + [.target > * 1] + expected: FAIL + + [.target > * 3] + expected: FAIL + + [.target > * 5] + expected: FAIL + + [.target > * 7] + expected: FAIL + + [.target > * 9] + expected: FAIL + + [.target > * 15] + expected: FAIL + + [.target > * 21] + expected: FAIL diff --git a/testing/web-platform/meta/css/css-inline/baseline-source/baseline-source-first-002.html.ini b/testing/web-platform/meta/css/css-inline/baseline-source/baseline-source-first-002.html.ini index 0bded1e1387d..f840da45b564 100644 --- a/testing/web-platform/meta/css/css-inline/baseline-source/baseline-source-first-002.html.ini +++ b/testing/web-platform/meta/css/css-inline/baseline-source/baseline-source-first-002.html.ini @@ -1,8 +1,30 @@ [baseline-source-first-002.html] + [.target > * 1] + expected: FAIL + + [.target > * 3] + expected: FAIL + + [.target > * 4] + expected: FAIL + + [.target > * 5] + expected: FAIL + + [.target > * 7] + expected: FAIL + + [.target > * 9] + expected: FAIL + + [.target > * 10] + expected: FAIL + + [.target > * 15] + expected: FAIL + [.target > * 19] - bug: https://bugzilla.mozilla.org/show_bug.cgi?id=144517 expected: FAIL [.target > * 21] - bug: https://bugzilla.mozilla.org/show_bug.cgi?id=144517 expected: FAIL diff --git a/testing/web-platform/meta/css/css-inline/baseline-source/baseline-source-first-003.html.ini b/testing/web-platform/meta/css/css-inline/baseline-source/baseline-source-first-003.html.ini new file mode 100644 index 000000000000..f90c93729c11 --- /dev/null +++ b/testing/web-platform/meta/css/css-inline/baseline-source/baseline-source-first-003.html.ini @@ -0,0 +1,21 @@ +[baseline-source-first-003.html] + [.target > * 1] + expected: FAIL + + [.target > * 3] + expected: FAIL + + [.target > * 5] + expected: FAIL + + [.target > * 7] + expected: FAIL + + [.target > * 9] + expected: FAIL + + [.target > * 15] + expected: FAIL + + [.target > * 21] + expected: FAIL diff --git a/testing/web-platform/meta/css/css-inline/baseline-source/baseline-source-invalid.html.ini b/testing/web-platform/meta/css/css-inline/baseline-source/baseline-source-invalid.html.ini new file mode 100644 index 000000000000..95e856ca3dc2 --- /dev/null +++ b/testing/web-platform/meta/css/css-inline/baseline-source/baseline-source-invalid.html.ini @@ -0,0 +1,3 @@ +[baseline-source-invalid.html] + expected: + if (os == "android") and fission: [TIMEOUT, OK] diff --git a/testing/web-platform/meta/css/css-inline/baseline-source/baseline-source-last-001.html.ini b/testing/web-platform/meta/css/css-inline/baseline-source/baseline-source-last-001.html.ini index 8fab3f557a29..0d037d4fbeee 100644 --- a/testing/web-platform/meta/css/css-inline/baseline-source/baseline-source-last-001.html.ini +++ b/testing/web-platform/meta/css/css-inline/baseline-source/baseline-source-last-001.html.ini @@ -1,16 +1,21 @@ [baseline-source-last-001.html] + [.target > * 3] + expected: FAIL + [.target > * 9] - bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1827484 expected: FAIL [.target > * 11] - bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1827481 + expected: FAIL + + [.target > * 13] expected: FAIL [.target > * 17] - bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1827481 expected: FAIL [.target > * 19] - bug: https://bugzilla.mozilla.org/show_bug.cgi?id=144517 + expected: FAIL + + [.target > * 21] expected: FAIL diff --git a/testing/web-platform/meta/css/css-inline/baseline-source/baseline-source-last-002.html.ini b/testing/web-platform/meta/css/css-inline/baseline-source/baseline-source-last-002.html.ini index 649c6b6ff8e0..a316973bf81a 100644 --- a/testing/web-platform/meta/css/css-inline/baseline-source/baseline-source-last-002.html.ini +++ b/testing/web-platform/meta/css/css-inline/baseline-source/baseline-source-last-002.html.ini @@ -1,24 +1,30 @@ [baseline-source-last-002.html] + [.target > * 3] + expected: FAIL + + [.target > * 4] + expected: FAIL + + [.target > * 5] + expected: FAIL + [.target > * 9] - bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1827484 expected: FAIL [.target > * 10] - bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1827484 expected: FAIL [.target > * 11] - bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1827481 + expected: FAIL + + [.target > * 13] expected: FAIL [.target > * 17] - bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1827481 expected: FAIL [.target > * 19] - bug: https://bugzilla.mozilla.org/show_bug.cgi?id=144517 expected: FAIL [.target > * 21] - bug: https://bugzilla.mozilla.org/show_bug.cgi?id=144517 expected: FAIL diff --git a/testing/web-platform/meta/css/css-inline/baseline-source/baseline-source-last-003.html.ini b/testing/web-platform/meta/css/css-inline/baseline-source/baseline-source-last-003.html.ini index f296400dfda9..26b2da15ae67 100644 --- a/testing/web-platform/meta/css/css-inline/baseline-source/baseline-source-last-003.html.ini +++ b/testing/web-platform/meta/css/css-inline/baseline-source/baseline-source-last-003.html.ini @@ -1,16 +1,24 @@ [baseline-source-last-003.html] + [.target > * 3] + expected: FAIL + + [.target > * 5] + expected: FAIL + [.target > * 9] - bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1827484 expected: FAIL [.target > * 11] - bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1827481 + expected: FAIL + + [.target > * 13] expected: FAIL [.target > * 17] - bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1827481 expected: FAIL [.target > * 19] - bug: https://bugzilla.mozilla.org/show_bug.cgi?id=144517 + expected: FAIL + + [.target > * 21] expected: FAIL diff --git a/testing/web-platform/meta/css/css-inline/baseline-source/baseline-source-no-interpolation.html.ini b/testing/web-platform/meta/css/css-inline/baseline-source/baseline-source-no-interpolation.html.ini index 95ef0735c442..ca9715367a37 100644 --- a/testing/web-platform/meta/css/css-inline/baseline-source/baseline-source-no-interpolation.html.ini +++ b/testing/web-platform/meta/css/css-inline/baseline-source/baseline-source-no-interpolation.html.ini @@ -1,5 +1,79 @@ [baseline-source-no-interpolation.html] - bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1805727 + [CSS Transitions: property from [initial\] to [last\] at (0.5) should be [last\]] + expected: FAIL + + [CSS Transitions: property from [initial\] to [last\] at (0.6) should be [last\]] + expected: FAIL + + [CSS Transitions: property from [initial\] to [last\] at (1) should be [last\]] + expected: FAIL + + [CSS Transitions: property from [initial\] to [last\] at (1.5) should be [last\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [initial\] to [last\] at (-0.3) should be [last\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [initial\] to [last\] at (0) should be [last\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [initial\] to [last\] at (0.3) should be [last\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [initial\] to [last\] at (0.5) should be [last\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [initial\] to [last\] at (0.6) should be [last\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [initial\] to [last\] at (1) should be [last\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [initial\] to [last\] at (1.5) should be [last\]] + expected: FAIL + + [CSS Animations: property from [initial\] to [last\] at (-0.3) should be [initial\]] + expected: FAIL + + [CSS Animations: property from [initial\] to [last\] at (0) should be [initial\]] + expected: FAIL + + [CSS Animations: property from [initial\] to [last\] at (0.3) should be [initial\]] + expected: FAIL + + [CSS Animations: property from [initial\] to [last\] at (0.5) should be [last\]] + expected: FAIL + + [CSS Animations: property from [initial\] to [last\] at (0.6) should be [last\]] + expected: FAIL + + [CSS Animations: property from [initial\] to [last\] at (1) should be [last\]] + expected: FAIL + + [CSS Animations: property from [initial\] to [last\] at (1.5) should be [last\]] + expected: FAIL + + [Web Animations: property from [initial\] to [last\] at (-0.3) should be [initial\]] + expected: FAIL + + [Web Animations: property from [initial\] to [last\] at (0) should be [initial\]] + expected: FAIL + + [Web Animations: property from [initial\] to [last\] at (0.3) should be [initial\]] + expected: FAIL + + [Web Animations: property from [initial\] to [last\] at (0.5) should be [last\]] + expected: FAIL + + [Web Animations: property from [initial\] to [last\] at (0.6) should be [last\]] + expected: FAIL + + [Web Animations: property from [initial\] to [last\] at (1) should be [last\]] + expected: FAIL + + [Web Animations: property from [initial\] to [last\] at (1.5) should be [last\]] + expected: FAIL + [CSS Transitions: property from [initial\] to [last\] at (0) should be [initial\]] expected: FAIL diff --git a/testing/web-platform/meta/css/css-inline/baseline-source/baseline-source-valid.html.ini b/testing/web-platform/meta/css/css-inline/baseline-source/baseline-source-valid.html.ini new file mode 100644 index 000000000000..000b6d6c757b --- /dev/null +++ b/testing/web-platform/meta/css/css-inline/baseline-source/baseline-source-valid.html.ini @@ -0,0 +1,9 @@ +[baseline-source-valid.html] + [e.style['baseline-source'\] = "auto" should set the property value] + expected: FAIL + + [e.style['baseline-source'\] = "first" should set the property value] + expected: FAIL + + [e.style['baseline-source'\] = "last" should set the property value] + expected: FAIL