From 000992e33ec733d9b4f1746f093787910d65d02d Mon Sep 17 00:00:00 2001 From: Ting-Yu Lin Date: Fri, 22 Feb 2019 01:14:45 +0000 Subject: [PATCH] Bug 1527725 - Exclude ColumnSetWrapperFrame from the first letter style consistency check in nsBlockFrame. r=dbaron If there's ::first-letter pseudo element on the multicol container, ColumnSetWrapperFrame will have the first letter style, but it won't get the NS_BLOCK_HAS_FIRST_LETTER_STYLE bit during frame construction. The actual first-letter frame construction happens under -moz-column-content anonymous block. This patch excludes ColumnSetWrapperFrame from the debug check to meet the expectation. Add a reftest to make sure ::first-letter and ::first-line still work after introducing ColumnSetWrapperFrame, and no assertion is fired. Differential Revision: https://phabricator.services.mozilla.com/D20757 --HG-- extra : moz-landing-system : lando --- layout/generic/nsBlockFrame.cpp | 1 + .../columns/first-line-first-letter-ref.html | 17 +++++++++++++++++ .../columns/first-line-first-letter.html | 18 ++++++++++++++++++ layout/reftests/columns/reftest.list | 1 + 4 files changed, 37 insertions(+) create mode 100644 layout/reftests/columns/first-line-first-letter-ref.html create mode 100644 layout/reftests/columns/first-line-first-letter.html diff --git a/layout/generic/nsBlockFrame.cpp b/layout/generic/nsBlockFrame.cpp index 269ce2a221a2..f2a711e1b504 100644 --- a/layout/generic/nsBlockFrame.cpp +++ b/layout/generic/nsBlockFrame.cpp @@ -6772,6 +6772,7 @@ void nsBlockFrame::SetInitialChildList(ChildListID aListID, !GetParent()->IsListControlFrame()) || pseudo == PseudoStyleType::mozSVGText) && !IsComboboxControlFrame() && !IsFrameOfType(eMathML) && + !IsColumnSetWrapperFrame() && RefPtr(GetFirstLetterStyle(PresContext())) != nullptr; NS_ASSERTION(haveFirstLetterStyle == ((mState & NS_BLOCK_HAS_FIRST_LETTER_STYLE) != 0), diff --git a/layout/reftests/columns/first-line-first-letter-ref.html b/layout/reftests/columns/first-line-first-letter-ref.html new file mode 100644 index 000000000000..bdf5189772b9 --- /dev/null +++ b/layout/reftests/columns/first-line-first-letter-ref.html @@ -0,0 +1,17 @@ + + + + + +
first line (blue)
second line
diff --git a/layout/reftests/columns/first-line-first-letter.html b/layout/reftests/columns/first-line-first-letter.html new file mode 100644 index 000000000000..1bbbc9aea6ce --- /dev/null +++ b/layout/reftests/columns/first-line-first-letter.html @@ -0,0 +1,18 @@ + + + + + +
first line (blue)
second line
diff --git a/layout/reftests/columns/reftest.list b/layout/reftests/columns/reftest.list index 4746eecf8cac..dc68413c6746 100644 --- a/layout/reftests/columns/reftest.list +++ b/layout/reftests/columns/reftest.list @@ -40,3 +40,4 @@ fuzzy-if(browserIsRemote&&winWidget,0-142,0-276) == fieldset-columns-001.html fi == dynamic-text-indent-2.html dynamic-text-indent-2-ref.html == break-avoid-line-position-1.html break-avoid-line-position-1-ref.html pref(layout.css.column-span.enabled,true) == column-span-bidi-1.html column-span-bidi-1-ref.html +pref(layout.css.column-span.enabled,true) == first-line-first-letter.html first-line-first-letter-ref.html