diff --git a/layout/generic/nsLineLayout.cpp b/layout/generic/nsLineLayout.cpp index b5aefd45266c..d0ff43423fc7 100644 --- a/layout/generic/nsLineLayout.cpp +++ b/layout/generic/nsLineLayout.cpp @@ -1349,16 +1349,19 @@ 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) { + // For inline reflow participants, baseline may get assigned as the frame is + // vertically aligned, which happens after this. + const auto baselineSource = pfd->mFrame->StyleDisplay()->mBaselineSource; + if (baselineSource == StyleBaselineSource::Auto || + pfd->mFrame->IsFrameOfType(nsIFrame::eLineParticipant)) { if (aMetrics.BlockStartAscent() == ReflowOutput::ASK_FOR_BASELINE) { pfd->mAscent = pfd->mFrame->GetLogicalBaseline(lineWM); } else { pfd->mAscent = aMetrics.BlockStartAscent(); } } else { - const auto sourceGroup = [pfd]() { - switch (pfd->mFrame->StyleDisplay()->mBaselineSource) { + const auto sourceGroup = [baselineSource]() { + switch (baselineSource) { case StyleBaselineSource::First: return BaselineSharingGroup::First; case StyleBaselineSource::Last: diff --git a/testing/web-platform/tests/css/css-inline/baseline-source/baseline-source-inline-box-ref.html b/testing/web-platform/tests/css/css-inline/baseline-source/baseline-source-inline-box-ref.html new file mode 100644 index 000000000000..ef3077970a29 --- /dev/null +++ b/testing/web-platform/tests/css/css-inline/baseline-source/baseline-source-inline-box-ref.html @@ -0,0 +1,11 @@ + + + +