WebKit Bugzilla
Attachment 345781 Details for
Bug 188018
: REGRESSION(r227577) Text on TV & Movies page doesn't wrap properly in iTunes
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-188018-20180725135341.patch (text/plain), 95.82 KB, created by
zalan
on 2018-07-25 13:53:41 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
zalan
Created:
2018-07-25 13:53:41 PDT
Size:
95.82 KB
patch
obsolete
>Subversion Revision: 234195 >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index c3399d860bef2498cc113209d99a225f81a8fbce..5f193c8330a8688c933051671e6569917f67fa82 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,128 @@ >+2018-07-25 Zalan Bujtas <zalan@apple.com> >+ >+ REGRESSION(r227577) Text on TV & Movies page doesn't wrap properly in iTunes >+ https://bugs.webkit.org/show_bug.cgi?id=188018 >+ <rdar://problem/42517520> >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Manual rollout of r227577. >+ >+ Test: fast/overflow/line-clamp-with-text-shadow.html >+ >+ * Sources.txt: >+ * WebCore.xcodeproj/project.pbxproj: >+ * css/CSSComputedStyleDeclaration.cpp: >+ (WebCore::ComputedStyleExtractor::valueForPropertyinStyle): >+ * css/CSSProperties.json: >+ * css/StyleBuilderCustom.h: >+ (WebCore::StyleBuilderCustom::applyValueWebkitLinesClamp): Deleted. >+ * css/parser/CSSParserContext.cpp: >+ (WebCore::CSSParserContext::CSSParserContext): >+ * css/parser/CSSParserContext.h: >+ (WebCore::CSSParserContextHash::hash): >+ * css/parser/CSSPropertyParser.cpp: >+ (WebCore::CSSPropertyParser::parseSingleValue): >+ (WebCore::consumeLinesClamp): Deleted. >+ * page/Settings.yaml: >+ * rendering/RenderBlockFlow.cpp: >+ (WebCore::RenderBlockFlow::willCreateColumns const): >+ (WebCore::getHeightForLineCount): >+ (WebCore::RenderBlockFlow::heightForLineCount): >+ (WebCore::RenderBlockFlow::layoutExcludedChildren): >+ (WebCore::RenderBlockFlow::logicalHeightForLineCount): Deleted. >+ (WebCore::RenderBlockFlow::logicalHeightExcludingLineCount): Deleted. >+ * rendering/RenderBlockFlow.h: >+ * rendering/RenderDeprecatedFlexibleBox.cpp: >+ (WebCore::RenderDeprecatedFlexibleBox::applyLineClamp): >+ * rendering/RenderFragmentContainer.cpp: >+ (WebCore::RenderFragmentContainer::pageLogicalHeightForOffset const): Deleted. >+ * rendering/RenderFragmentContainer.h: >+ * rendering/RenderFragmentedFlow.cpp: >+ (WebCore::RenderFragmentedFlow::validateFragments): >+ (WebCore::RenderFragmentedFlow::pageLogicalHeightForOffset const): >+ (WebCore::RenderFragmentedFlow::pageRemainingLogicalHeightForOffset const): >+ * rendering/RenderFragmentedFlow.h: >+ * rendering/RenderLinesClampFlow.cpp: Removed. >+ * rendering/RenderLinesClampFlow.h: Removed. >+ * rendering/RenderLinesClampSet.cpp: Removed. >+ * rendering/RenderLinesClampSet.h: Removed. >+ * rendering/RenderMultiColumnFlow.cpp: >+ (WebCore::RenderMultiColumnFlow::isColumnSpanningDescendant const): Deleted. >+ (WebCore::RenderMultiColumnFlow::createMultiColumnSet): Deleted. >+ * rendering/RenderMultiColumnFlow.h: >+ (WebCore::RenderMultiColumnFlow::multiColumnBlockFlow const): Deleted. >+ (WebCore::RenderMultiColumnFlow::hasColumnSpanner const): Deleted. >+ (WebCore::RenderMultiColumnFlow::findColumnSpannerPlaceholder const): Deleted. >+ (WebCore::RenderMultiColumnFlow::columnCount const): Deleted. >+ (WebCore::RenderMultiColumnFlow::columnWidth const): Deleted. >+ (WebCore::RenderMultiColumnFlow::columnHeightAvailable const): Deleted. >+ (WebCore::RenderMultiColumnFlow::setColumnHeightAvailable): Deleted. >+ (WebCore::RenderMultiColumnFlow::inBalancingPass const): Deleted. >+ (WebCore::RenderMultiColumnFlow::setInBalancingPass): Deleted. >+ (WebCore::RenderMultiColumnFlow::needsHeightsRecalculation const): Deleted. >+ (WebCore::RenderMultiColumnFlow::setNeedsHeightsRecalculation): Deleted. >+ (WebCore::RenderMultiColumnFlow::shouldRelayoutForPagination const): Deleted. >+ (WebCore::RenderMultiColumnFlow::setColumnCountAndWidth): Deleted. >+ (WebCore::RenderMultiColumnFlow::progressionIsInline const): Deleted. >+ (WebCore::RenderMultiColumnFlow::setProgressionIsInline): Deleted. >+ (WebCore::RenderMultiColumnFlow::progressionIsReversed const): Deleted. >+ (WebCore::RenderMultiColumnFlow::setProgressionIsReversed): Deleted. >+ (WebCore::RenderMultiColumnFlow::spannerMap): Deleted. >+ * rendering/RenderMultiColumnSet.cpp: >+ (WebCore::RenderMultiColumnSet::collectLayerFragments): >+ (WebCore::RenderMultiColumnSet::columnTranslationForOffset const): >+ * rendering/RenderMultiColumnSet.h: >+ (WebCore::RenderMultiColumnSet::multiColumnBlockFlow const): Deleted. >+ (WebCore::RenderMultiColumnSet::multiColumnFlow const): Deleted. >+ (WebCore::RenderMultiColumnSet::logicalTopInFragmentedFlow const): Deleted. >+ (WebCore::RenderMultiColumnSet::logicalBottomInFragmentedFlow const): Deleted. >+ (WebCore::RenderMultiColumnSet::logicalHeightInFragmentedFlow const): Deleted. >+ (WebCore::RenderMultiColumnSet::computedColumnCount const): Deleted. >+ (WebCore::RenderMultiColumnSet::computedColumnWidth const): Deleted. >+ (WebCore::RenderMultiColumnSet::computedColumnHeight const): Deleted. >+ (WebCore::RenderMultiColumnSet::columnHeightComputed const): Deleted. >+ (WebCore::RenderMultiColumnSet::setComputedColumnWidthAndCount): Deleted. >+ (WebCore::RenderMultiColumnSet::updateMinimumColumnHeight): Deleted. >+ (WebCore::RenderMultiColumnSet::minimumColumnHeight const): Deleted. >+ (WebCore::RenderMultiColumnSet::forcedBreaksCount const): Deleted. >+ (WebCore::RenderMultiColumnSet::hasBeenFlowed const): Deleted. >+ (WebCore::RenderMultiColumnSet::skipLayerFragmentCollectionForColumn const): Deleted. >+ (WebCore::RenderMultiColumnSet::customBlockProgressionAdjustmentForColumn const): Deleted. >+ (WebCore::RenderMultiColumnSet::ContentRun::ContentRun): Deleted. >+ (WebCore::RenderMultiColumnSet::ContentRun::assumedImplicitBreaks const): Deleted. >+ (WebCore::RenderMultiColumnSet::ContentRun::assumeAnotherImplicitBreak): Deleted. >+ (WebCore::RenderMultiColumnSet::ContentRun::breakOffset const): Deleted. >+ (WebCore::RenderMultiColumnSet::ContentRun::columnLogicalHeight const): Deleted. >+ * rendering/RenderObject.h: >+ (WebCore::RenderObject::isRenderLinesClampFlow const): Deleted. >+ (WebCore::RenderObject::isRenderLinesClampSet const): Deleted. >+ * rendering/style/LineClampValue.h: >+ (WebCore::LinesClampValue::LinesClampValue): Deleted. >+ (WebCore::LinesClampValue::isNone const): Deleted. >+ (WebCore::LinesClampValue::operator== const): Deleted. >+ (WebCore::LinesClampValue::operator!= const): Deleted. >+ (WebCore::LinesClampValue::start const): Deleted. >+ (WebCore::LinesClampValue::end const): Deleted. >+ (WebCore::LinesClampValue::center const): Deleted. >+ * rendering/style/RenderStyle.h: >+ (WebCore::RenderStyle::lineClamp const): >+ (WebCore::RenderStyle::setLineClamp): >+ (WebCore::RenderStyle::initialLineClamp): >+ (WebCore::RenderStyle::hasInlineColumnAxis const): >+ (WebCore::RenderStyle::linesClamp const): Deleted. >+ (WebCore::RenderStyle::hasLinesClamp const): Deleted. >+ (WebCore::RenderStyle::setLinesClamp): Deleted. >+ (WebCore::RenderStyle::initialLinesClamp): Deleted. >+ * rendering/style/StyleRareNonInheritedData.cpp: >+ (WebCore::StyleRareNonInheritedData::StyleRareNonInheritedData): >+ (WebCore::StyleRareNonInheritedData::operator== const): >+ * rendering/style/StyleRareNonInheritedData.h: >+ * rendering/updating/RenderTreeBuilderMultiColumn.cpp: >+ (WebCore::isValidColumnSpanner): >+ (WebCore::RenderTreeBuilder::MultiColumn::createFragmentedFlow): >+ (WebCore::RenderTreeBuilder::MultiColumn::processPossibleSpannerDescendant): >+ > 2018-07-24 Chris Dumez <cdumez@apple.com> > > REGRESSION (r219757): Accessing response getter of XHR instance from IFRAME sets constructor to Object from the IFRAME >diff --git a/Source/WebKit/ChangeLog b/Source/WebKit/ChangeLog >index 74a18080113e3c3ee5e98052b168226535ce4c08..d8bc6e6f1ed1cd2317c7fa7b7ccf4ceaa3190774 100644 >--- a/Source/WebKit/ChangeLog >+++ b/Source/WebKit/ChangeLog >@@ -1,3 +1,14 @@ >+2018-07-25 Zalan Bujtas <zalan@apple.com> >+ >+ REGRESSION(r227577) Text on TV & Movies page doesn't wrap properly in iTunes >+ https://bugs.webkit.org/show_bug.cgi?id=188018 >+ <rdar://problem/42517520> >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * WebProcess/WebPage/WebPage.cpp: >+ (WebKit::m_credentialsMessenger): >+ > 2018-07-25 Brent Fulgham <bfulgham@apple.com> > > [macOS] PluginProcess needs TCC entitlements for media capture >diff --git a/Source/WebCore/Sources.txt b/Source/WebCore/Sources.txt >index 230a00c5e079b3b0589f50940698c32bfdcb0480..f996d273967a5685c50995be84f17381df04b577 100644 >--- a/Source/WebCore/Sources.txt >+++ b/Source/WebCore/Sources.txt >@@ -1888,8 +1888,6 @@ rendering/RenderLayerFilterInfo.cpp > rendering/RenderLayerModelObject.cpp > rendering/RenderLineBoxList.cpp > rendering/RenderLineBreak.cpp >-rendering/RenderLinesClampFlow.cpp >-rendering/RenderLinesClampSet.cpp > rendering/RenderListBox.cpp > rendering/RenderListItem.cpp > rendering/RenderListMarker.cpp >diff --git a/Source/WebCore/WebCore.xcodeproj/project.pbxproj b/Source/WebCore/WebCore.xcodeproj/project.pbxproj >index 22e1423b1ad1392fd3fcc9d0b0545b85705141e7..49206e40216931fcd1216a9193716a4bdb4280db 100644 >--- a/Source/WebCore/WebCore.xcodeproj/project.pbxproj >+++ b/Source/WebCore/WebCore.xcodeproj/project.pbxproj >@@ -2687,8 +2687,6 @@ > 949C77051D6E39EA00C0DE4F /* CSSPropertyParserHelpers.h in Headers */ = {isa = PBXBuildFile; fileRef = 949C77031D6E393500C0DE4F /* CSSPropertyParserHelpers.h */; }; > 949C77091D6E498700C0DE4F /* CSSParserObserverWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 949C77071D6E48ED00C0DE4F /* CSSParserObserverWrapper.h */; }; > 949C770B1D6E49ED00C0DE4F /* CSSParserObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = 949C770A1D6E49C300C0DE4F /* CSSParserObserver.h */; }; >- 94CFD60A1FE9867E002488AD /* RenderLinesClampFlow.h in Headers */ = {isa = PBXBuildFile; fileRef = 94CFD6081FE98669002488AD /* RenderLinesClampFlow.h */; }; >- 94CFD60D1FEACEFE002488AD /* RenderLinesClampSet.h in Headers */ = {isa = PBXBuildFile; fileRef = 94CFD60C1FEACEEC002488AD /* RenderLinesClampSet.h */; }; > 94DE5C821D7F3A1400164F2A /* CSSAtRuleID.h in Headers */ = {isa = PBXBuildFile; fileRef = 94DE5C801D7F39D000164F2A /* CSSAtRuleID.h */; }; > 94DE5C8E1D80802700164F2A /* CSSSelectorParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 94DE5C8C1D80801500164F2A /* CSSSelectorParser.h */; }; > 94DE5C921D83011D00164F2A /* CSSSupportsParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 94DE5C901D8300CB00164F2A /* CSSSupportsParser.h */; }; >@@ -10544,10 +10542,6 @@ > 949C77061D6E48ED00C0DE4F /* CSSParserObserverWrapper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CSSParserObserverWrapper.cpp; path = parser/CSSParserObserverWrapper.cpp; sourceTree = "<group>"; }; > 949C77071D6E48ED00C0DE4F /* CSSParserObserverWrapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CSSParserObserverWrapper.h; path = parser/CSSParserObserverWrapper.h; sourceTree = "<group>"; }; > 949C770A1D6E49C300C0DE4F /* CSSParserObserver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CSSParserObserver.h; path = parser/CSSParserObserver.h; sourceTree = "<group>"; }; >- 94CFD6071FE98669002488AD /* RenderLinesClampFlow.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderLinesClampFlow.cpp; sourceTree = "<group>"; }; >- 94CFD6081FE98669002488AD /* RenderLinesClampFlow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderLinesClampFlow.h; sourceTree = "<group>"; }; >- 94CFD60B1FEACEEC002488AD /* RenderLinesClampSet.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderLinesClampSet.cpp; sourceTree = "<group>"; }; >- 94CFD60C1FEACEEC002488AD /* RenderLinesClampSet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderLinesClampSet.h; sourceTree = "<group>"; }; > 94D4AC611DC24C810080F02D /* CSSCustomPropertyValue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CSSCustomPropertyValue.cpp; sourceTree = "<group>"; }; > 94DD79721E54E3A20058FB80 /* FlexibleBoxAlgorithm.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FlexibleBoxAlgorithm.cpp; sourceTree = "<group>"; }; > 94DD79731E54E3A20058FB80 /* FlexibleBoxAlgorithm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FlexibleBoxAlgorithm.h; sourceTree = "<group>"; }; >@@ -25969,10 +25963,6 @@ > 0BE030A10F3112FB003C1A46 /* RenderLineBoxList.h */, > BCEA4824097D93020094C9E4 /* RenderLineBreak.cpp */, > BCEA4825097D93020094C9E4 /* RenderLineBreak.h */, >- 94CFD6071FE98669002488AD /* RenderLinesClampFlow.cpp */, >- 94CFD6081FE98669002488AD /* RenderLinesClampFlow.h */, >- 94CFD60B1FEACEEC002488AD /* RenderLinesClampSet.cpp */, >- 94CFD60C1FEACEEC002488AD /* RenderLinesClampSet.h */, > ABB5419C0ACDDFE4002820EB /* RenderListBox.cpp */, > ABB5419D0ACDDFE4002820EB /* RenderListBox.h */, > A8EA7A480A191A5200A8EF5F /* RenderListItem.cpp */, >diff --git a/Source/WebCore/css/CSSComputedStyleDeclaration.cpp b/Source/WebCore/css/CSSComputedStyleDeclaration.cpp >index 74bcc8189e5ff0f87510986b557c3cb2fb919494..6e54eabb770f1eb8153d17993a7dd96130dbd744 100644 >--- a/Source/WebCore/css/CSSComputedStyleDeclaration.cpp >+++ b/Source/WebCore/css/CSSComputedStyleDeclaration.cpp >@@ -362,7 +362,6 @@ static const CSSPropertyID computedProperties[] = { > CSSPropertyWebkitLineBoxContain, > CSSPropertyLineBreak, > CSSPropertyWebkitLineClamp, >- CSSPropertyWebkitLinesClamp, > CSSPropertyWebkitLineGrid, > CSSPropertyWebkitLineSnap, > CSSPropertyWebkitLocale, >@@ -3170,15 +3169,6 @@ RefPtr<CSSValue> ComputedStyleExtractor::valueForPropertyinStyle(const RenderSty > if (style.lineClamp().isNone()) > return cssValuePool.createIdentifierValue(CSSValueNone); > return cssValuePool.createValue(style.lineClamp().value(), style.lineClamp().isPercentage() ? CSSPrimitiveValue::CSS_PERCENTAGE : CSSPrimitiveValue::CSS_NUMBER); >- case CSSPropertyWebkitLinesClamp: { >- if (style.linesClamp().isNone()) >- return cssValuePool.createIdentifierValue(CSSValueNone); >- auto list = CSSValueList::createSpaceSeparated(); >- list->append(cssValuePool.createValue(style.linesClamp().start().value(), style.linesClamp().start().isPercentage() ? CSSPrimitiveValue::CSS_PERCENTAGE : CSSPrimitiveValue::CSS_NUMBER)); >- list->append(cssValuePool.createValue(style.linesClamp().end().value(), style.linesClamp().end().isPercentage() ? CSSPrimitiveValue::CSS_PERCENTAGE : CSSPrimitiveValue::CSS_NUMBER)); >- list->append(cssValuePool.createValue(style.linesClamp().center(), CSSPrimitiveValue::CSS_STRING)); >- return WTFMove(list); >- } > case CSSPropertyLineHeight: > return lineHeightFromStyle(style); > case CSSPropertyListStyleImage: >diff --git a/Source/WebCore/css/CSSProperties.json b/Source/WebCore/css/CSSProperties.json >index 9741c0213154521358f964a7d34f97113af8f9e3..a51b2e6d322b49d3fe4bd3f8ad25f52bddd0cd5c 100644 >--- a/Source/WebCore/css/CSSProperties.json >+++ b/Source/WebCore/css/CSSProperties.json >@@ -5087,12 +5087,6 @@ > "-webkit-line-clamp": { > "status": "non-standard" > }, >- "-webkit-lines-clamp": { >- "status": "non-standard", >- "codegen-properties": { >- "custom": "Value" >- } >- }, > "-webkit-line-grid": { > "inherited": true, > "codegen-properties": { >diff --git a/Source/WebCore/css/StyleBuilderCustom.h b/Source/WebCore/css/StyleBuilderCustom.h >index 1ae34e962132eca338fd15049fcb0c1d0fcf4c51..7508b9f66f8ad474026d0031d760d483d0f471d1 100644 >--- a/Source/WebCore/css/StyleBuilderCustom.h >+++ b/Source/WebCore/css/StyleBuilderCustom.h >@@ -144,8 +144,6 @@ public: > > static void applyValueStrokeWidth(StyleResolver&, CSSValue&); > static void applyValueStrokeColor(StyleResolver&, CSSValue&); >- >- static void applyValueWebkitLinesClamp(StyleResolver&, CSSValue&); > > private: > static void resetEffectiveZoom(StyleResolver&); >@@ -1874,18 +1872,4 @@ inline void StyleBuilderCustom::applyValueStrokeColor(StyleResolver& styleResolv > styleResolver.style()->setHasExplicitlySetStrokeColor(true); > } > >-inline void StyleBuilderCustom::applyValueWebkitLinesClamp(StyleResolver& styleResolver, CSSValue& value) >-{ >- if (is<CSSValueList>(value)) { >- auto& list = downcast<CSSValueList>(value); >- if (list.length() != 3) >- return; >- LineClampValue start = downcast<CSSPrimitiveValue>(*list.itemWithoutBoundsCheck(0)); >- LineClampValue end = downcast<CSSPrimitiveValue>(*list.itemWithoutBoundsCheck(1)); >- AtomicString center = downcast<CSSPrimitiveValue>(*list.itemWithoutBoundsCheck(2)).stringValue(); >- styleResolver.style()->setLinesClamp(LinesClampValue(start, end, center)); >- } else >- styleResolver.style()->setLinesClamp(RenderStyle::initialLinesClamp()); >-} >- > } // namespace WebCore >diff --git a/Source/WebCore/css/parser/CSSParserContext.cpp b/Source/WebCore/css/parser/CSSParserContext.cpp >index 4e41c90ee3d87f1b7e014a2fbf8f2e2ece6e1dd0..2bb34a9c01a476eea3087a5a5c2e5fab3b830564 100644 >--- a/Source/WebCore/css/parser/CSSParserContext.cpp >+++ b/Source/WebCore/css/parser/CSSParserContext.cpp >@@ -67,7 +67,6 @@ CSSParserContext::CSSParserContext(Document& document, const URL& sheetBaseURL, > conicGradientsEnabled = document.settings().conicGradientsEnabled(); > colorFilterEnabled = document.settings().colorFilterEnabled(); > deferredCSSParserEnabled = document.settings().deferredCSSParserEnabled(); >- allowNewLinesClamp = document.settings().appleMailLinesClampEnabled(); > useSystemAppearance = document.page() ? document.page()->useSystemAppearance() : false; > > #if PLATFORM(IOS) >diff --git a/Source/WebCore/css/parser/CSSParserContext.h b/Source/WebCore/css/parser/CSSParserContext.h >index ac168ea19a7002950a5de22d8f078c8827a6d7de..e458c1da17cc7a3ea78699d273998654b984848e 100644 >--- a/Source/WebCore/css/parser/CSSParserContext.h >+++ b/Source/WebCore/css/parser/CSSParserContext.h >@@ -57,7 +57,6 @@ public: > bool conicGradientsEnabled { false }; > bool colorFilterEnabled { false }; > bool deferredCSSParserEnabled { false }; >- bool allowNewLinesClamp { false }; > > // This is only needed to support getMatchedCSSRules. > bool hasDocumentSecurityOrigin { false }; >@@ -97,10 +96,9 @@ struct CSSParserContextHash { > & key.conicGradientsEnabled << 7 > & key.colorFilterEnabled << 8 > & key.deferredCSSParserEnabled << 9 >- & key.allowNewLinesClamp << 10 >- & key.hasDocumentSecurityOrigin << 11 >- & key.useSystemAppearance << 12 >- & key.mode << 13; // Keep this last. >+ & key.hasDocumentSecurityOrigin << 10 >+ & key.useSystemAppearance << 11 >+ & key.mode << 12; // Keep this last. > hash ^= WTF::intHash(bits); > return hash; > } >diff --git a/Source/WebCore/css/parser/CSSPropertyParser.cpp b/Source/WebCore/css/parser/CSSPropertyParser.cpp >index bd27d63e76a24fc9f96ec60c6ac67da1ee52c58b..61773879128dba61339d0ad19da0d0cb4d66e23f 100644 >--- a/Source/WebCore/css/parser/CSSPropertyParser.cpp >+++ b/Source/WebCore/css/parser/CSSPropertyParser.cpp >@@ -1340,25 +1340,6 @@ static RefPtr<CSSPrimitiveValue> consumeLineClamp(CSSParserTokenRange& range) > return consumePositiveInteger(range); > } > >-static RefPtr<CSSValue> consumeLinesClamp(CSSParserTokenRange& range) >-{ >- if (range.peek().id() == CSSValueNone) >- return consumeIdent(range); >- >- RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated(); >- RefPtr<CSSPrimitiveValue> startClampValue = consumeLineClamp(range); >- RefPtr<CSSPrimitiveValue> endClampValue = consumeLineClamp(range); >- RefPtr<CSSPrimitiveValue> centerClampValue = consumeCustomIdent(range); >- if (!startClampValue) >- return nullptr; >- list->append(startClampValue.releaseNonNull()); >- if (endClampValue) >- list->append(endClampValue.releaseNonNull()); >- if (centerClampValue) >- list->append(centerClampValue.releaseNonNull()); >- return list; >-} >- > static RefPtr<CSSValue> consumeAutoOrString(CSSParserTokenRange& range) > { > if (range.peek().id() == CSSValueAuto) >@@ -4025,8 +4006,6 @@ RefPtr<CSSValue> CSSPropertyParser::parseSingleValue(CSSPropertyID property, CSS > return consumePosition(m_range, m_context.mode, UnitlessQuirk::Forbid); > case CSSPropertyWebkitLineClamp: > return consumeLineClamp(m_range); >- case CSSPropertyWebkitLinesClamp: >- return m_context.allowNewLinesClamp ? consumeLinesClamp(m_range) : nullptr; > case CSSPropertyWebkitFontSizeDelta: > return consumeLength(m_range, m_context.mode, ValueRangeAll, UnitlessQuirk::Allow); > case CSSPropertyWebkitHyphenateCharacter: >diff --git a/Source/WebCore/page/Settings.yaml b/Source/WebCore/page/Settings.yaml >index 910b336a2400143cfcf30b2aec1d77ef11e927bd..bdf8004c6c5f35c39e26da41aafbb5939832e0c9 100644 >--- a/Source/WebCore/page/Settings.yaml >+++ b/Source/WebCore/page/Settings.yaml >@@ -487,9 +487,6 @@ serviceControlsEnabled: > appleMailPaginationQuirkEnabled: > initial: false > >-appleMailLinesClampEnabled: >- initial: false >- > deferredCSSParserEnabled: > initial: false > >diff --git a/Source/WebCore/rendering/RenderBlockFlow.cpp b/Source/WebCore/rendering/RenderBlockFlow.cpp >index e81d0a2cf6170a776fc77bfa0cd549fad71bf432..132dc8fc311da312bbed73e007e2b29170736e2a 100644 >--- a/Source/WebCore/rendering/RenderBlockFlow.cpp >+++ b/Source/WebCore/rendering/RenderBlockFlow.cpp >@@ -424,11 +424,7 @@ bool RenderBlockFlow::willCreateColumns(std::optional<unsigned> desiredColumnCou > // If overflow-y is set to paged-x or paged-y on the body or html element, we'll handle the paginating in the RenderView instead. > if ((style().overflowY() == Overflow::PagedX || style().overflowY() == Overflow::PagedY) && !(isDocumentElementRenderer() || isBody())) > return true; >- >- // Lines clamping creates columns. >- if (style().hasLinesClamp()) >- return true; >- >+ > if (!style().specifiesColumns()) > return false; > >@@ -3212,54 +3208,37 @@ int RenderBlockFlow::lineCount(const RootInlineBox* stopRootInlineBox, bool* fou > return count; > } > >-static int getHeightForLineCount(const RenderBlockFlow& block, int lineCount, bool includeEdgeBorderPadding, bool forward, int& count) >+static int getHeightForLineCount(const RenderBlockFlow& block, int lineCount, bool includeBottom, int& count) > { > if (block.style().visibility() != Visibility::Visible) > return -1; > >- // FIXME: Orthogonal writing modes don't work here, but it's not even clear how they should behave anyway. > if (block.childrenInline()) { >- for (auto* box = forward ? block.firstRootBox() : block.lastRootBox(); box; box = forward ? box->nextRootBox() : box->prevRootBox()) { >- if (++count == lineCount) { >- // Matches the pagination rules in adjustLinePositionsForPagination. >- LayoutRect logicalVisualOverflow = box->logicalVisualOverflowRect(box->lineTop(), box->lineBottom()); >- LayoutUnit logicalTop = std::min(box->lineTopWithLeading(), logicalVisualOverflow.y()); >- LayoutUnit logicalBottom = std::max(box->lineBottomWithLeading(), logicalVisualOverflow.maxY()); >- if (forward) >- return logicalBottom + (includeEdgeBorderPadding ? (block.borderAndPaddingAfter()) : LayoutUnit()); >- return logicalTop + (includeEdgeBorderPadding ? (block.borderAndPaddingBefore()) : LayoutUnit()); >- } >+ for (auto* box = block.firstRootBox(); box; box = box->nextRootBox()) { >+ if (++count == lineCount) >+ return box->lineBottom() + (includeBottom ? (block.borderBottom() + block.paddingBottom()) : LayoutUnit()); > } > } else { > RenderBox* normalFlowChildWithoutLines = nullptr; >- for (auto* obj = forward ? block.firstChildBox() : block.lastChildBox(); obj; obj = forward ? obj->nextSiblingBox() : obj->previousSiblingBox()) { >+ for (auto* obj = block.firstChildBox(); obj; obj = obj->nextSiblingBox()) { > if (is<RenderBlockFlow>(*obj) && shouldCheckLines(downcast<RenderBlockFlow>(*obj))) { >- int result = getHeightForLineCount(downcast<RenderBlockFlow>(*obj), lineCount, false, forward, count); >- if (result != -1) { >- if (forward) >- return result + block.logicalTopForChild(*obj) + (includeEdgeBorderPadding ? (block.borderAndPaddingAfter()) : LayoutUnit()); >- return result + block.logicalTopForChild(*obj) + (includeEdgeBorderPadding ? (block.borderAndPaddingBefore()) : LayoutUnit()); >- } >+ int result = getHeightForLineCount(downcast<RenderBlockFlow>(*obj), lineCount, false, count); >+ if (result != -1) >+ return result + obj->y() + (includeBottom ? (block.borderBottom() + block.paddingBottom()) : LayoutUnit()); > } else if (!obj->isFloatingOrOutOfFlowPositioned()) > normalFlowChildWithoutLines = obj; > } > if (normalFlowChildWithoutLines && !lineCount) >- return block.logicalTopForChild(*normalFlowChildWithoutLines) + block.logicalHeightForChild(*normalFlowChildWithoutLines); >+ return normalFlowChildWithoutLines->y() + normalFlowChildWithoutLines->height(); > } > > return -1; > } > >-int RenderBlockFlow::logicalHeightForLineCount(int lineCount) >+int RenderBlockFlow::heightForLineCount(int lineCount) > { > int count = 0; >- return getHeightForLineCount(*this, lineCount, true, true, count); >-} >- >-int RenderBlockFlow::logicalHeightExcludingLineCount(int lineCount) >-{ >- int count = 0; >- return getHeightForLineCount(*this, lineCount, true, false, count); >+ return getHeightForLineCount(*this, lineCount, true, count); > } > > void RenderBlockFlow::clearTruncation() >@@ -3838,8 +3817,6 @@ void RenderBlockFlow::layoutExcludedChildren(bool relayoutChildren) > fragmentedFlow->setNeedsHeightsRecalculation(false); > } > determineLogicalLeftPositionForChild(*fragmentedFlow); >- >- fragmentedFlow->layoutFlowExcludedObjects(relayoutChildren); > } > > void RenderBlockFlow::checkForPaginationLogicalHeightChange(bool& relayoutChildren, LayoutUnit& pageLogicalHeight, bool& pageLogicalHeightChanged) >diff --git a/Source/WebCore/rendering/RenderBlockFlow.h b/Source/WebCore/rendering/RenderBlockFlow.h >index a5d24cffd44d690fd2b38fc7365255e520bd5be3..af68ba0513794a0162032a011d46a9fa994ba0ee 100644 >--- a/Source/WebCore/rendering/RenderBlockFlow.h >+++ b/Source/WebCore/rendering/RenderBlockFlow.h >@@ -347,9 +347,7 @@ public: > // Helper methods for computing line counts and heights for line counts. > RootInlineBox* lineAtIndex(int) const; > int lineCount(const RootInlineBox* = nullptr, bool* = nullptr) const; >- int logicalHeightForLineCount(int); >- int logicalHeightExcludingLineCount(int); >- >+ int heightForLineCount(int); > void clearTruncation(); > > void setHasMarkupTruncation(bool b) { setRenderBlockFlowHasMarkupTruncation(b); } >@@ -391,8 +389,6 @@ public: > // unbreakable content, between orphans and widows, etc.). This will be used as a hint to the > // column balancer to help set a good minimum column height. > void updateMinimumPageHeight(LayoutUnit offset, LayoutUnit minHeight); >- >- void determineLogicalLeftPositionForChild(RenderBox& child, ApplyLayoutDeltaMode = DoNotApplyLayoutDelta); > > void addFloatsToNewParent(RenderBlockFlow& toBlockFlow) const; > >@@ -458,7 +454,8 @@ protected: > virtual void computeColumnCountAndWidth(); > > virtual void cachePriorCharactersIfNeeded(const LazyLineBreakIterator&) {}; >- >+ >+protected: > // Called to lay out the legend for a fieldset or the ruby text of a ruby run. Also used by multi-column layout to handle > // the flow thread child. > void layoutExcludedChildren(bool relayoutChildren) override; >@@ -506,6 +503,8 @@ private: > bool hasOverhangingFloats() { return parent() && containsFloats() && lowestFloatLogicalBottom() > logicalHeight(); } > LayoutUnit getClearDelta(RenderBox& child, LayoutUnit yPos); > >+ void determineLogicalLeftPositionForChild(RenderBox& child, ApplyLayoutDeltaMode = DoNotApplyLayoutDelta); >+ > bool hitTestFloats(const HitTestRequest&, HitTestResult&, const HitTestLocation& locationInContainer, const LayoutPoint& accumulatedOffset) override; > bool hitTestInlineChildren(const HitTestRequest&, HitTestResult&, const HitTestLocation& locationInContainer, const LayoutPoint& accumulatedOffset, HitTestAction) override; > >diff --git a/Source/WebCore/rendering/RenderDeprecatedFlexibleBox.cpp b/Source/WebCore/rendering/RenderDeprecatedFlexibleBox.cpp >index 4e8fc928c00738da92ce34f284dc45081ae89348..875ff3bbc2cbc931a2a31e6a07c04189e408d037 100644 >--- a/Source/WebCore/rendering/RenderDeprecatedFlexibleBox.cpp >+++ b/Source/WebCore/rendering/RenderDeprecatedFlexibleBox.cpp >@@ -967,7 +967,7 @@ void RenderDeprecatedFlexibleBox::applyLineClamp(FlexBoxIterator& iterator, bool > if (lineCount <= numVisibleLines) > continue; > >- LayoutUnit newHeight = blockChild.logicalHeightForLineCount(numVisibleLines); >+ LayoutUnit newHeight = blockChild.heightForLineCount(numVisibleLines); > if (newHeight == child->height()) > continue; > >diff --git a/Source/WebCore/rendering/RenderFragmentContainer.cpp b/Source/WebCore/rendering/RenderFragmentContainer.cpp >index 4a82c7ea6f707d0953bbe24c1b622e9df308bf8e..0d446d4a49ba6dfae3414e613823ffd3eae179b6 100644 >--- a/Source/WebCore/rendering/RenderFragmentContainer.cpp >+++ b/Source/WebCore/rendering/RenderFragmentContainer.cpp >@@ -178,11 +178,6 @@ LayoutUnit RenderFragmentContainer::pageLogicalTopForOffset(LayoutUnit /* offset > return fragmentedFlow()->isHorizontalWritingMode() ? fragmentedFlowPortionRect().y() : fragmentedFlowPortionRect().x(); > } > >-LayoutUnit RenderFragmentContainer::pageLogicalHeightForOffset(LayoutUnit /* offset */) const >-{ >- return pageLogicalHeight(); >-} >- > bool RenderFragmentContainer::isFirstFragment() const > { > ASSERT(isValid()); >diff --git a/Source/WebCore/rendering/RenderFragmentContainer.h b/Source/WebCore/rendering/RenderFragmentContainer.h >index a072e10683f503aa53177874c56e1fd93d0b5fcd..b05bada000ef79ed5584fda834bfd5f0d4a180ed 100644 >--- a/Source/WebCore/rendering/RenderFragmentContainer.h >+++ b/Source/WebCore/rendering/RenderFragmentContainer.h >@@ -93,7 +93,6 @@ public: > // flow thread portion we contain. For sets, we have to figure out the top of the nearest column or > // page. > virtual LayoutUnit pageLogicalTopForOffset(LayoutUnit offset) const; >- virtual LayoutUnit pageLogicalHeightForOffset(LayoutUnit offset) const; > > // Whether or not this fragment is a set. > virtual bool isRenderFragmentContainerSet() const { return false; } >diff --git a/Source/WebCore/rendering/RenderFragmentedFlow.cpp b/Source/WebCore/rendering/RenderFragmentedFlow.cpp >index 7bb5bfc566f1b74c8ead27a24522cd74e7763af4..3db6be9c1d82df71f4245d39c2bf63931f67bb16 100644 >--- a/Source/WebCore/rendering/RenderFragmentedFlow.cpp >+++ b/Source/WebCore/rendering/RenderFragmentedFlow.cpp >@@ -108,7 +108,7 @@ void RenderFragmentedFlow::validateFragments() > if (m_fragmentsInvalidated) { > m_fragmentsInvalidated = false; > m_fragmentsHaveUniformLogicalWidth = true; >- m_fragmentsHaveUniformLogicalHeight = singleFragmentHasUniformLogicalHeight(); >+ m_fragmentsHaveUniformLogicalHeight = true; > > if (hasFragments()) { > LayoutUnit previousFragmentLogicalWidth = 0; >@@ -345,7 +345,7 @@ LayoutUnit RenderFragmentedFlow::pageLogicalHeightForOffset(LayoutUnit offset) c > if (!fragment) > return 0; > >- return fragment->pageLogicalHeightForOffset(offset); >+ return fragment->pageLogicalHeight(); > } > > LayoutUnit RenderFragmentedFlow::pageRemainingLogicalHeightForOffset(LayoutUnit offset, PageBoundaryRule pageBoundaryRule) const >@@ -355,7 +355,7 @@ LayoutUnit RenderFragmentedFlow::pageRemainingLogicalHeightForOffset(LayoutUnit > return 0; > > LayoutUnit pageLogicalTop = fragment->pageLogicalTopForOffset(offset); >- LayoutUnit pageLogicalHeight = fragment->pageLogicalHeightForOffset(offset); >+ LayoutUnit pageLogicalHeight = fragment->pageLogicalHeight(); > LayoutUnit pageLogicalBottom = pageLogicalTop + pageLogicalHeight; > LayoutUnit remainingHeight = pageLogicalBottom - offset; > if (pageBoundaryRule == IncludePageBoundary) { >diff --git a/Source/WebCore/rendering/RenderFragmentedFlow.h b/Source/WebCore/rendering/RenderFragmentedFlow.h >index f73ca0d83cd7d46d2fce9573c48adcc1430ec137..f14d0857c7268bde8b245df7212227c989092c8d 100644 >--- a/Source/WebCore/rendering/RenderFragmentedFlow.h >+++ b/Source/WebCore/rendering/RenderFragmentedFlow.h >@@ -83,14 +83,10 @@ public: > void validateFragments(); > void invalidateFragments(MarkingBehavior = MarkContainingBlockChain); > bool hasValidFragmentInfo() const { return !m_fragmentsInvalidated && !m_fragmentList.isEmpty(); } >- >- virtual bool singleFragmentHasUniformLogicalHeight() const { return true; } > > // Called when a descendant box's layout is finished and it has been positioned within its container. > virtual void fragmentedFlowDescendantBoxLaidOut(RenderBox*) { } > >- virtual void layoutFlowExcludedObjects(bool) { } >- > void styleDidChange(StyleDifference, const RenderStyle* oldStyle) override; > > void repaintRectangleInFragments(const LayoutRect&) const; >diff --git a/Source/WebCore/rendering/RenderLinesClampFlow.cpp b/Source/WebCore/rendering/RenderLinesClampFlow.cpp >deleted file mode 100644 >index 33ccd1efa650649f51b4adc742af7fb58ed7b363..0000000000000000000000000000000000000000 >--- a/Source/WebCore/rendering/RenderLinesClampFlow.cpp >+++ /dev/null >@@ -1,95 +0,0 @@ >-/* >- * Copyright (C) 2017,2018 Apple Inc. All rights reserved. >- * >- * Redistribution and use in source and binary forms, with or without >- * modification, are permitted provided that the following conditions >- * are met: >- * 1. Redistributions of source code must retain the above copyright >- * notice, this list of conditions and the following disclaimer. >- * 2. Redistributions in binary form must reproduce the above copyright >- * notice, this list of conditions and the following disclaimer in the >- * documentation and/or other materials provided with the distribution. >- * >- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY >- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE >- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR >- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR >- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, >- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, >- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR >- * PROFITS; OR BUSINESS IN..0TERRUPTION) HOWEVER CAUSED AND ON ANY THEORY >- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT >- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE >- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. >- */ >- >-#include "config.h" >-#include "RenderLinesClampFlow.h" >- >-#include "RenderChildIterator.h" >-#include "RenderLinesClampSet.h" >-#include <wtf/IsoMallocInlines.h> >- >-namespace WebCore { >- >-WTF_MAKE_ISO_ALLOCATED_IMPL(RenderLinesClampFlow); >- >-RenderLinesClampFlow::RenderLinesClampFlow(Document& document, RenderStyle&& style) >- : RenderMultiColumnFlow(document, WTFMove(style)) >-{ >-} >- >-RenderLinesClampFlow::~RenderLinesClampFlow() = default; >- >-const char* RenderLinesClampFlow::renderName() const >-{ >- return "RenderLinesClampFlow"; >-} >- >-RenderPtr<RenderMultiColumnSet> RenderLinesClampFlow::createMultiColumnSet(RenderStyle&& style) >-{ >- return createRenderer<RenderLinesClampSet>(*this, WTFMove(style)); >-} >- >-bool RenderLinesClampFlow::isChildAllowedInFragmentedFlow(const RenderBlockFlow& parent, const RenderElement& renderElement) const >-{ >- const auto& idAttr = renderElement.element() ? renderElement.element()->getIdAttribute() : nullAtom(); >- const auto& clampAttr = parent.style().linesClamp().center(); >- return clampAttr == nullAtom() || clampAttr != idAttr; >-} >- >-void RenderLinesClampFlow::layoutFlowExcludedObjects(bool relayoutChildren) >-{ >- auto* clampContainer = multiColumnBlockFlow(); >- if (!clampContainer) >- return; >- auto* clampSet = firstMultiColumnSet(); >- if (!clampSet || !is<RenderLinesClampSet>(clampSet)) >- return; >- auto& linesClampSet = downcast<RenderLinesClampSet>(*clampSet); >- >- for (auto& sibling : childrenOfType<RenderElement>(*clampContainer)) { >- if (isChildAllowedInFragmentedFlow(*clampContainer, sibling) || !is<RenderBox>(sibling)) >- continue; >- >- auto& siblingBox = downcast<RenderBox>(sibling); >- >- siblingBox.setIsExcludedFromNormalLayout(true); >- >- auto marginBefore = clampContainer->marginBeforeForChild(siblingBox); >- auto marginAfter = clampContainer->marginAfterForChild(siblingBox); >- >- setLogicalTopForChild(siblingBox, clampContainer->borderAndPaddingBefore() + linesClampSet.startPageHeight() + marginBefore); >- >- if (relayoutChildren) >- siblingBox.setChildNeedsLayout(MarkOnlyThis); >- >- if (siblingBox.needsLayout()) >- siblingBox.layout(); >- clampContainer->determineLogicalLeftPositionForChild(siblingBox); >- >- linesClampSet.setMiddleObjectHeight(marginBefore + marginAfter + clampContainer->logicalHeightForChild(siblingBox)); >- } >-} >- >-} >diff --git a/Source/WebCore/rendering/RenderLinesClampFlow.h b/Source/WebCore/rendering/RenderLinesClampFlow.h >deleted file mode 100644 >index e41b9b8ef94c0f0de6423cbdddf2420c5d472971..0000000000000000000000000000000000000000 >--- a/Source/WebCore/rendering/RenderLinesClampFlow.h >+++ /dev/null >@@ -1,60 +0,0 @@ >-/* >- * Copyright (C) 2017,2018 Apple Inc. All rights reserved. >- * >- * Redistribution and use in source and binary forms, with or without >- * modification, are permitted provided that the following conditions >- * are met: >- * 1. Redistributions of source code must retain the above copyright >- * notice, this list of conditions and the following disclaimer. >- * 2. Redistributions in binary form must reproduce the above copyright >- * notice, this list of conditions and the following disclaimer in the >- * documentation and/or other materials provided with the distribution. >- * >- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY >- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE >- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR >- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR >- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, >- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, >- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR >- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY >- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT >- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE >- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. >- */ >- >-#pragma once >- >-#include "RenderMultiColumnFlow.h" >-#include <wtf/HashMap.h> >- >-namespace WebCore { >- >-class RenderLinesClampFlow final : public RenderMultiColumnFlow { >- WTF_MAKE_ISO_ALLOCATED(RenderLinesClampFlow); >-public: >- RenderLinesClampFlow(Document&, RenderStyle&&); >- ~RenderLinesClampFlow(); >- >- bool isChildAllowedInFragmentedFlow(const RenderBlockFlow&, const RenderElement&) const; >- >- bool isRenderLinesClampFlow() const override { return true; } >- >- void layoutFlowExcludedObjects(bool relayoutChildren) override; >- >- bool singleFragmentHasUniformLogicalHeight() const override { return false; } >- >-private: >- RenderPtr<RenderMultiColumnSet> createMultiColumnSet(RenderStyle&&) override; >- >- // Disable spans and breaks. >- bool isColumnSpanningDescendant(const RenderBox&) const override { return false; } >- bool addForcedFragmentBreak(const RenderBlock*, LayoutUnit, RenderBox*, bool, LayoutUnit* = 0) override { return false; } >- >-private: >- const char* renderName() const override; >-}; >- >-} // namespace WebCore >- >-SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderLinesClampFlow, isRenderLinesClampFlow()) >diff --git a/Source/WebCore/rendering/RenderLinesClampSet.cpp b/Source/WebCore/rendering/RenderLinesClampSet.cpp >deleted file mode 100644 >index 4ad248a32cfec77d72c5fb64e04967e4e99d05bd..0000000000000000000000000000000000000000 >--- a/Source/WebCore/rendering/RenderLinesClampSet.cpp >+++ /dev/null >@@ -1,204 +0,0 @@ >-/* >- * Copyright (C) 2017,2018 Apple Inc. All rights reserved. >- * >- * Redistribution and use in source and binary forms, with or without >- * modification, are permitted provided that the following conditions >- * are met: >- * 1. Redistributions of source code must retain the above copyright >- * notice, this list of conditions and the following disclaimer. >- * 2. Redistributions in binary form must reproduce the above copyright >- * notice, this list of conditions and the following disclaimer in the >- * documentation and/or other materials provided with the distribution. >- * >- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY >- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE >- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR >- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR >- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, >- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, >- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR >- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY >- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT >- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE >- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. >- */ >- >-#include "config.h" >-#include "RenderLinesClampSet.h" >- >-#include "RenderBoxFragmentInfo.h" >-#include "RenderLinesClampFlow.h" >-#include <wtf/IsoMallocInlines.h> >- >-namespace WebCore { >- >-WTF_MAKE_ISO_ALLOCATED_IMPL(RenderLinesClampSet); >- >-RenderLinesClampSet::RenderLinesClampSet(RenderFragmentedFlow& fragmentedFlow, RenderStyle&& style) >- : RenderMultiColumnSet(fragmentedFlow, WTFMove(style)) >-{ >-} >- >-bool RenderLinesClampSet::recalculateColumnHeight(bool initial) >-{ >- if (!initial && m_endPageHeight) >- return false; >- >- auto* fragmentedFlow = multiColumnFlow(); >- if (!fragmentedFlow) >- return false; >- >- auto* blockFlow = multiColumnBlockFlow(); >- auto endClamp = blockFlow->style().linesClamp().end(); >- >- int maxLineCount = fragmentedFlow->lineCount(); >- auto startClamp = blockFlow->style().linesClamp().start(); >- int startLines = startClamp.isPercentage() ? std::max(1, maxLineCount * startClamp.value() / 100) : startClamp.value(); >- >- auto bottom = logicalBottomInFragmentedFlow(); >- >- if (initial) { >- if (startLines >= maxLineCount) >- m_startPageHeight = bottom; >- else >- m_startPageHeight = fragmentedFlow->logicalHeightForLineCount(startLines); >- m_endPageHeight = 0; >- m_middlePageHeight = bottom - m_startPageHeight; >- if (m_startPageHeight < bottom) { >- m_computedColumnHeight = m_startPageHeight; >- m_columnHeightComputed = true; >- updateLogicalWidth(); >- return true; >- } >- return false; >- } >- >- if (!m_endPageHeight) { >- int endLines = endClamp.isPercentage() ? std::max(1, maxLineCount * endClamp.value() / 100) : endClamp.value(); >- maxLineCount -= startLines; >- if (endClamp.isNone() || endLines >= maxLineCount) >- m_endPageHeight = bottom - m_startPageHeight; >- else >- m_endPageHeight = bottom - fragmentedFlow->logicalHeightExcludingLineCount(endLines); >- m_middlePageHeight = bottom - (m_endPageHeight + m_startPageHeight); >- if (m_endPageHeight > 0) { >- m_computedColumnHeight = m_startPageHeight; >- m_columnHeightComputed = true; >- updateLogicalWidth(); >- return true; >- } >- } >- >- return false; >-} >- >-RenderBox::LogicalExtentComputedValues RenderLinesClampSet::computeLogicalHeight(LayoutUnit, LayoutUnit logicalTop) const >-{ >- return { m_startPageHeight + m_middleObjectHeight + m_endPageHeight, logicalTop, ComputedMarginValues() }; >-} >- >-unsigned RenderLinesClampSet::columnCount() const >-{ >- if (m_endPageHeight) >- return 3; >- if (m_startPageHeight) >- return 2; >- return 1; >-} >- >-LayoutRect RenderLinesClampSet::columnRectAt(unsigned index) const >-{ >- LayoutUnit colLogicalWidth = computedColumnWidth(); >- if (!index) >- return LayoutRect(columnLogicalLeft(0), columnLogicalTop(0), colLogicalWidth, m_startPageHeight); >- if (index == 1) >- return LayoutRect(columnLogicalLeft(0), columnLogicalTop(0), colLogicalWidth, 0); >- return LayoutRect(columnLogicalLeft(0), columnLogicalTop(0) + m_startPageHeight + m_middleObjectHeight, colLogicalWidth, m_endPageHeight); >-} >- >-unsigned RenderLinesClampSet::columnIndexAtOffset(LayoutUnit offset, ColumnIndexCalculationMode) const >-{ >- if (offset < m_startPageHeight) >- return 0; >- if (offset < m_startPageHeight + m_middlePageHeight) >- return 1; >- return 2; >-} >- >-LayoutUnit RenderLinesClampSet::pageLogicalTopForOffset(LayoutUnit offset) const >-{ >- unsigned colIndex = columnIndexAtOffset(offset); >- if (!colIndex) >- return 0; >- if (colIndex == 1) >- return m_startPageHeight; >- return m_startPageHeight + m_middlePageHeight; >-} >- >-LayoutUnit RenderLinesClampSet::pageLogicalHeightForOffset(LayoutUnit offset) const >-{ >- unsigned colIndex = columnIndexAtOffset(offset); >- if (!colIndex) >- return m_startPageHeight; >- if (colIndex == 1) >- return m_middlePageHeight; >- return m_endPageHeight; >-} >- >-LayoutRect RenderLinesClampSet::fragmentedFlowPortionRectAt(unsigned index) const >-{ >- LayoutUnit logicalTop; >- LayoutUnit logicalHeight; >- if (!index) { >- logicalTop = 0; >- logicalHeight = m_startPageHeight; >- } else if (index == 1) { >- logicalTop = m_startPageHeight; >- logicalHeight = m_middlePageHeight; >- } else { >- logicalTop = m_startPageHeight + m_middlePageHeight; >- logicalHeight = m_endPageHeight; >- } >- >- LayoutRect portionRect = fragmentedFlowPortionRect(); >- if (isHorizontalWritingMode()) >- portionRect = LayoutRect(portionRect.x(), portionRect.y() + logicalTop, portionRect.width(), logicalHeight); >- else >- portionRect = LayoutRect(portionRect.x() + logicalTop, portionRect.y(), logicalHeight, portionRect.height()); >- return portionRect; >-} >- >-LayoutRect RenderLinesClampSet::fragmentedFlowPortionOverflowRect(const LayoutRect& portionRect, unsigned index, unsigned colCount, LayoutUnit /* colGap */) >-{ >- bool isFirstColumn = !index; >- bool isLastColumn = index == colCount - 1; >- >- LayoutRect overflowRect = overflowRectForFragmentedFlowPortion(portionRect, isFirstColumn, isLastColumn, VisualOverflow); >- >- if (isHorizontalWritingMode()) { >- if (!isFirstColumn) >- overflowRect.shiftYEdgeTo(portionRect.y()); >- if (!isLastColumn) >- overflowRect.shiftMaxYEdgeTo(portionRect.maxY()); >- } else { >- if (!isFirstColumn) >- overflowRect.shiftXEdgeTo(portionRect.x()); >- if (!isLastColumn) >- overflowRect.shiftMaxXEdgeTo(portionRect.maxX()); >- } >- return overflowRect; >-} >- >-LayoutUnit RenderLinesClampSet::customBlockProgressionAdjustmentForColumn(unsigned index) const >-{ >- if (index == 2) >- return m_middleObjectHeight - m_middlePageHeight; >- return 0; >-} >- >-const char* RenderLinesClampSet::renderName() const >-{ >- return "RenderLinesClampSet"; >-} >- >-} >diff --git a/Source/WebCore/rendering/RenderLinesClampSet.h b/Source/WebCore/rendering/RenderLinesClampSet.h >deleted file mode 100644 >index 56dda69e03ca9e3ec14910c99a1476dae018395d..0000000000000000000000000000000000000000 >--- a/Source/WebCore/rendering/RenderLinesClampSet.h >+++ /dev/null >@@ -1,87 +0,0 @@ >-/* >- * Copyright (C) 2017,2018 Apple Inc. All rights reserved. >- * >- * Redistribution and use in source and binary forms, with or without >- * modification, are permitted provided that the following conditions >- * are met: >- * 1. Redistributions of source code must retain the above copyright >- * notice, this list of conditions and the following disclaimer. >- * 2. Redistributions in binary form must reproduce the above copyright >- * notice, this list of conditions and the following disclaimer in the >- * documentation and/or other materials provided with the distribution. >- * >- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY >- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE >- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR >- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR >- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, >- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, >- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR >- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY >- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT >- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE >- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. >- */ >- >-#pragma once >- >-#include "LayerFragment.h" >-#include "RenderLinesClampFlow.h" >-#include "RenderMultiColumnSet.h" >- >-namespace WebCore { >- >-class RenderLinesClampSet final : public RenderMultiColumnSet { >- WTF_MAKE_ISO_ALLOCATED(RenderLinesClampSet); >-public: >- RenderLinesClampSet(RenderFragmentedFlow&, RenderStyle&&); >- >- bool requiresBalancing() const override { return true; } >- >- LayoutUnit startPageHeight() const { return m_startPageHeight; } >- LayoutUnit middlePageHeight() const { return m_middlePageHeight; } >- LayoutUnit endPageHeight() const { return m_endPageHeight; } >- >- LayoutUnit middleObjectHeight() const { return m_middleObjectHeight; } >- void setMiddleObjectHeight(LayoutUnit height) { m_middleObjectHeight = height; } >- >-private: >- bool isRenderLinesClampSet() const override { return true; } >- >- // Overridden to figure out how to break up the flow into the start/middle/end >- // areas. >- bool recalculateColumnHeight(bool initial) override; >- >- const char* renderName() const override; >- >- LogicalExtentComputedValues computeLogicalHeight(LayoutUnit logicalHeight, LayoutUnit logicalTop) const override; >- >- // Lines clamp doesn't support gaps or rules. >- LayoutUnit columnGap() const override { return 0; } >- void paintColumnRules(PaintInfo&, const LayoutPoint&) override { } >- >- LayoutRect columnRectAt(unsigned index) const override; >- unsigned columnCount() const override; >- unsigned columnIndexAtOffset(LayoutUnit, ColumnIndexCalculationMode = ClampToExistingColumns) const override; >- >- LayoutRect fragmentedFlowPortionRectAt(unsigned index) const override; >- LayoutRect fragmentedFlowPortionOverflowRect(const LayoutRect& fragmentedFlowPortion, unsigned index, unsigned colCount, LayoutUnit colGap) override; >- >- bool skipLayerFragmentCollectionForColumn(unsigned index) const override { return index == 1; } >- >- LayoutUnit customBlockProgressionAdjustmentForColumn(unsigned) const override; >- >- LayoutUnit pageLogicalTopForOffset(LayoutUnit) const override; >- LayoutUnit pageLogicalHeightForOffset(LayoutUnit) const override; >- >-private: >- LayoutUnit m_startPageHeight; // Where to clamp the first N lines inside the fragmented flow >- LayoutUnit m_middlePageHeight; // The middle portion of the fragmented flow (does not render). >- LayoutUnit m_endPageHeight; // Where to clamp the last N lines inside the fragmented flow >- >- LayoutUnit m_middleObjectHeight; // The middle object's height plus margins. >-}; >- >-} // namespace WebCore >- >-SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderLinesClampSet, isRenderLinesClampSet()) >diff --git a/Source/WebCore/rendering/RenderMultiColumnFlow.cpp b/Source/WebCore/rendering/RenderMultiColumnFlow.cpp >index 776d5087ba017d17dd46cb8e9bbf2fad035837bc..6afa0ddfa47b3c468989809332ff1ba4bbccc7bd 100644 >--- a/Source/WebCore/rendering/RenderMultiColumnFlow.cpp >+++ b/Source/WebCore/rendering/RenderMultiColumnFlow.cpp >@@ -133,11 +133,6 @@ void RenderMultiColumnFlow::layout() > m_lastSetWorkedOn = nullptr; > } > >-bool RenderMultiColumnFlow::isColumnSpanningDescendant(const RenderBox& descendantBox) const >-{ >- return descendantBox.style().columnSpan() == ColumnSpan::All; >-} >- > void RenderMultiColumnFlow::addFragmentToThread(RenderFragmentContainer* RenderFragmentContainer) > { > auto* columnSet = downcast<RenderMultiColumnSet>(RenderFragmentContainer); >@@ -160,11 +155,6 @@ void RenderMultiColumnFlow::willBeRemovedFromTree() > RenderFragmentedFlow::willBeRemovedFromTree(); > } > >-RenderPtr<RenderMultiColumnSet> RenderMultiColumnFlow::createMultiColumnSet(RenderStyle&& style) >-{ >- return createRenderer<RenderMultiColumnSet>(*this, WTFMove(style)); >-} >- > void RenderMultiColumnFlow::fragmentedFlowDescendantBoxLaidOut(RenderBox* descendant) > { > if (!is<RenderMultiColumnSpannerPlaceholder>(*descendant)) >diff --git a/Source/WebCore/rendering/RenderMultiColumnFlow.h b/Source/WebCore/rendering/RenderMultiColumnFlow.h >index a00b5596d599dfefd9292fd311feef52b280a066..a48a78971f0ed194f7c9feb6ff55f8560f24a368 100644 >--- a/Source/WebCore/rendering/RenderMultiColumnFlow.h >+++ b/Source/WebCore/rendering/RenderMultiColumnFlow.h >@@ -33,7 +33,7 @@ namespace WebCore { > class RenderMultiColumnSet; > class RenderMultiColumnSpannerPlaceholder; > >-class RenderMultiColumnFlow : public RenderFragmentedFlow { >+class RenderMultiColumnFlow final : public RenderFragmentedFlow { > WTF_MAKE_ISO_ALLOCATED(RenderMultiColumnFlow); > public: > RenderMultiColumnFlow(Document&, RenderStyle&&); >@@ -98,10 +98,6 @@ public: > typedef HashMap<RenderBox*, WeakPtr<RenderMultiColumnSpannerPlaceholder>> SpannerMap; > SpannerMap& spannerMap() { return *m_spannerMap; } > >- virtual bool isColumnSpanningDescendant(const RenderBox&) const; >- >- virtual RenderPtr<RenderMultiColumnSet> createMultiColumnSet(RenderStyle&&); >- > private: > bool isRenderMultiColumnFlow() const override { return true; } > const char* renderName() const override; >diff --git a/Source/WebCore/rendering/RenderMultiColumnSet.cpp b/Source/WebCore/rendering/RenderMultiColumnSet.cpp >index f0b881a3bb6fad5e4f58f3a09f2f20cb435e84ae..751e810615a0e4fd5992d477e64c2308a3159181 100644 >--- a/Source/WebCore/rendering/RenderMultiColumnSet.cpp >+++ b/Source/WebCore/rendering/RenderMultiColumnSet.cpp >@@ -770,9 +770,6 @@ void RenderMultiColumnSet::collectLayerFragments(LayerFragments& fragments, cons > LayoutUnit initialBlockOffset = initialBlockOffsetForPainting(); > > for (unsigned i = startColumn; i <= endColumn; i++) { >- if (skipLayerFragmentCollectionForColumn(i)) >- continue; >- > // Get the portion of the flow thread that corresponds to this column. > LayoutRect fragmentedFlowPortion = fragmentedFlowPortionRectAt(i); > >@@ -801,7 +798,7 @@ void RenderMultiColumnSet::collectLayerFragments(LayerFragments& fragments, cons > LayoutUnit blockOffset = initialBlockOffset + logicalTop() - fragmentedFlow()->logicalTop() + (isHorizontalWritingMode() ? -fragmentedFlowPortion.y() : -fragmentedFlowPortion.x()); > if (!progressionIsInline) { > if (!progressionReversed) >- blockOffset = i * colGap + customBlockProgressionAdjustmentForColumn(i); >+ blockOffset = i * colGap; > else > blockOffset -= i * (computedColumnHeight() + colGap); > } >@@ -853,7 +850,7 @@ LayoutPoint RenderMultiColumnSet::columnTranslationForOffset(const LayoutUnit& o > LayoutUnit blockOffset = initialBlockOffset - (isHorizontalWritingMode() ? fragmentedFlowPortion.y() : fragmentedFlowPortion.x()); > if (!progressionIsInline) { > if (!progressionReversed) >- blockOffset = startColumn * colGap + customBlockProgressionAdjustmentForColumn(startColumn); >+ blockOffset = startColumn * colGap; > else > blockOffset -= startColumn * (computedColumnHeight() + colGap); > } >diff --git a/Source/WebCore/rendering/RenderMultiColumnSet.h b/Source/WebCore/rendering/RenderMultiColumnSet.h >index f7ad47349b490b197fa1399db368099916c4648a..375081b3e6fac2f5fc3648e4b4d21f3f433b4a55 100644 >--- a/Source/WebCore/rendering/RenderMultiColumnSet.h >+++ b/Source/WebCore/rendering/RenderMultiColumnSet.h >@@ -42,7 +42,7 @@ namespace WebCore { > // > // Column spans result in the creation of new column sets as well, since a spanning fragment has to be placed in between the column sets that > // come before and after the span. >-class RenderMultiColumnSet : public RenderFragmentContainerSet { >+class RenderMultiColumnSet final : public RenderFragmentContainerSet { > WTF_MAKE_ISO_ALLOCATED(RenderMultiColumnSet); > public: > RenderMultiColumnSet(RenderFragmentedFlow&, RenderStyle&&); >@@ -92,7 +92,7 @@ public: > // multicol container's height is constrained. If |initial| is set, and we are to balance, guess > // an initial column height; otherwise, stretch the column height a tad. Return true if column > // height changed and another layout pass is required. >- virtual bool recalculateColumnHeight(bool initial); >+ bool recalculateColumnHeight(bool initial); > > // Record space shortage (the amount of space that would have been enough to prevent some > // element from being moved to the next column) at a column break. The smallest amount of space >@@ -112,7 +112,7 @@ public: > // Has this set been flowed in this layout pass? > bool hasBeenFlowed() const { return logicalBottomInFragmentedFlow() != RenderFragmentedFlow::maxLogicalHeight(); } > >- virtual bool requiresBalancing() const; >+ bool requiresBalancing() const; > > LayoutPoint columnTranslationForOffset(const LayoutUnit&) const; > >@@ -126,23 +126,24 @@ public: > > void updateHitTestResult(HitTestResult&, const LayoutPoint&) override; > >- virtual LayoutRect columnRectAt(unsigned index) const; >- virtual unsigned columnCount() const; >+ LayoutRect columnRectAt(unsigned index) const; >+ unsigned columnCount() const; > > protected: > void addOverflowFromChildren() override; >- LogicalExtentComputedValues computeLogicalHeight(LayoutUnit logicalHeight, LayoutUnit logicalTop) const override; >- >+ >+private: > bool isRenderMultiColumnSet() const override { return true; } > void layout() override; > >+ LogicalExtentComputedValues computeLogicalHeight(LayoutUnit logicalHeight, LayoutUnit logicalTop) const override; >+ > void paintObject(PaintInfo&, const LayoutPoint&) override { } > > LayoutUnit pageLogicalWidth() const override { return m_computedColumnWidth; } > LayoutUnit pageLogicalHeight() const override { return m_computedColumnHeight; } > > LayoutUnit pageLogicalTopForOffset(LayoutUnit offset) const override; >- LayoutUnit pageLogicalHeightForOffset(LayoutUnit) const override { return m_computedColumnHeight; } > > LayoutUnit logicalHeightOfAllFragmentedFlowContent() const override { return logicalHeightInFragmentedFlow(); } > >@@ -157,24 +158,21 @@ protected: > const char* renderName() const override; > > LayoutUnit calculateMaxColumnHeight() const; >- virtual LayoutUnit columnGap() const; >+ LayoutUnit columnGap() const; > > LayoutUnit columnLogicalLeft(unsigned) const; > LayoutUnit columnLogicalTop(unsigned) const; > >- virtual LayoutRect fragmentedFlowPortionRectAt(unsigned index) const; >- virtual LayoutRect fragmentedFlowPortionOverflowRect(const LayoutRect& fragmentedFlowPortion, unsigned index, unsigned colCount, LayoutUnit colGap); >+ LayoutRect fragmentedFlowPortionRectAt(unsigned index) const; >+ LayoutRect fragmentedFlowPortionOverflowRect(const LayoutRect& fragmentedFlowPortion, unsigned index, unsigned colCount, LayoutUnit colGap); > > LayoutUnit initialBlockOffsetForPainting() const; > >- virtual bool skipLayerFragmentCollectionForColumn(unsigned) const { return false; } >- virtual LayoutUnit customBlockProgressionAdjustmentForColumn(unsigned) const { return 0; } >- > enum ColumnIndexCalculationMode { > ClampToExistingColumns, // Stay within the range of already existing columns. > AssumeNewColumns // Allow column indices outside the range of already existing columns. > }; >- virtual unsigned columnIndexAtOffset(LayoutUnit, ColumnIndexCalculationMode = ClampToExistingColumns) const; >+ unsigned columnIndexAtOffset(LayoutUnit, ColumnIndexCalculationMode = ClampToExistingColumns) const; > > void setAndConstrainColumnHeight(LayoutUnit); > >diff --git a/Source/WebCore/rendering/RenderObject.h b/Source/WebCore/rendering/RenderObject.h >index bb3f35ea6ff146b2e9b56bc480f43360e63c555c..25162583d56d11c2eb86e6cf1a469d6e3b2f6d5e 100644 >--- a/Source/WebCore/rendering/RenderObject.h >+++ b/Source/WebCore/rendering/RenderObject.h >@@ -285,9 +285,6 @@ public: > virtual bool isRenderMultiColumnFlow() const { return false; } > virtual bool isRenderMultiColumnSpannerPlaceholder() const { return false; } > >- virtual bool isRenderLinesClampFlow() const { return false; } >- virtual bool isRenderLinesClampSet() const { return false; } >- > virtual bool isRenderScrollbarPart() const { return false; } > > bool isDocumentElementRenderer() const { return document().documentElement() == &m_node; } >diff --git a/Source/WebCore/rendering/style/LineClampValue.h b/Source/WebCore/rendering/style/LineClampValue.h >index e540d81295f453d418695d0e54e5a881fc96b9c1..25db4e325ea32ae2245f9ac7f4624ba0e45bc966 100644 >--- a/Source/WebCore/rendering/style/LineClampValue.h >+++ b/Source/WebCore/rendering/style/LineClampValue.h >@@ -25,7 +25,6 @@ > #pragma once > > #include "RenderStyleConstants.h" >-#include <wtf/text/AtomicString.h> > > namespace WebCore { > >@@ -63,38 +62,5 @@ private: > LineClamp m_type; > int m_value; > }; >- >-class LinesClampValue { >-public: >- LinesClampValue() >- { } >- >- LinesClampValue(const LineClampValue& start, const LineClampValue& end, const AtomicString& center) >- : m_start(start) >- , m_end(end) >- , m_center(center) >- { } >- >- bool isNone() const { return m_start.isNone(); } >- >- bool operator==(const LinesClampValue& o) const >- { >- return m_start == o.start() && m_end == o.end() && m_center == o.center(); >- } > >- bool operator!=(const LinesClampValue& o) const >- { >- return !(*this == o); >- } >- >- LineClampValue start() const { return m_start; } >- LineClampValue end() const { return m_end; } >- AtomicString center() const { return m_center; } >- >-private: >- LineClampValue m_start; >- LineClampValue m_end; >- AtomicString m_center; >-}; >- > } // namespace WebCore >diff --git a/Source/WebCore/rendering/style/RenderStyle.h b/Source/WebCore/rendering/style/RenderStyle.h >index 0ce33cdd28ebd46cf041c0ecb7fb70d967c72490..327dd2b3de1edff827e3828324cbb4d409ffc15e 100644 >--- a/Source/WebCore/rendering/style/RenderStyle.h >+++ b/Source/WebCore/rendering/style/RenderStyle.h >@@ -683,8 +683,6 @@ public: > > LineBoxContain lineBoxContain() const { return m_rareInheritedData->lineBoxContain; } > const LineClampValue& lineClamp() const { return m_rareNonInheritedData->lineClamp; } >- const LinesClampValue& linesClamp() const { return m_rareNonInheritedData->linesClamp; } >- bool hasLinesClamp() const { return !linesClamp().start().isNone(); } > const IntSize& initialLetter() const { return m_rareNonInheritedData->initialLetter; } > int initialLetterDrop() const { return initialLetter().width(); } > int initialLetterHeight() const { return initialLetter().height(); } >@@ -1201,7 +1199,6 @@ public: > > void setLineBoxContain(LineBoxContain c) { SET_VAR(m_rareInheritedData, lineBoxContain, c); } > void setLineClamp(LineClampValue c) { SET_VAR(m_rareNonInheritedData, lineClamp, c); } >- void setLinesClamp(const LinesClampValue& c) { SET_VAR(m_rareNonInheritedData, linesClamp, c); } > > void setInitialLetter(const IntSize& size) { SET_VAR(m_rareNonInheritedData, initialLetter, size); } > >@@ -1647,7 +1644,6 @@ public: > > static IntSize initialInitialLetter() { return IntSize(); } > static LineClampValue initialLineClamp() { return LineClampValue(); } >- static LinesClampValue initialLinesClamp() { return LinesClampValue(); } > static TextSecurity initialTextSecurity() { return TextSecurity::None; } > > #if PLATFORM(IOS) >@@ -2050,7 +2046,7 @@ inline bool RenderStyle::breakWords() const > inline bool RenderStyle::hasInlineColumnAxis() const > { > auto axis = columnAxis(); >- return (axis == ColumnAxis::Auto || isHorizontalWritingMode() == (axis == ColumnAxis::Horizontal)) && !hasLinesClamp(); >+ return axis == ColumnAxis::Auto || isHorizontalWritingMode() == (axis == ColumnAxis::Horizontal); > } > > inline ImageOrientationEnum RenderStyle::imageOrientation() const >diff --git a/Source/WebCore/rendering/style/StyleRareNonInheritedData.cpp b/Source/WebCore/rendering/style/StyleRareNonInheritedData.cpp >index aa37b66abbd9e4f9400341f32e524598d4d22f1e..d925fc6080f33a9291f86ec9bce7d8393d84c9a3 100644 >--- a/Source/WebCore/rendering/style/StyleRareNonInheritedData.cpp >+++ b/Source/WebCore/rendering/style/StyleRareNonInheritedData.cpp >@@ -44,7 +44,6 @@ StyleRareNonInheritedData::StyleRareNonInheritedData() > , perspectiveOriginX(RenderStyle::initialPerspectiveOriginX()) > , perspectiveOriginY(RenderStyle::initialPerspectiveOriginY()) > , lineClamp(RenderStyle::initialLineClamp()) >- , linesClamp(RenderStyle::initialLinesClamp()) > , initialLetter(RenderStyle::initialInitialLetter()) > , deprecatedFlexibleBox(StyleDeprecatedFlexibleBoxData::create()) > , flexibleBox(StyleFlexibleBoxData::create()) >@@ -121,7 +120,6 @@ inline StyleRareNonInheritedData::StyleRareNonInheritedData(const StyleRareNonIn > , perspectiveOriginX(o.perspectiveOriginX) > , perspectiveOriginY(o.perspectiveOriginY) > , lineClamp(o.lineClamp) >- , linesClamp(o.linesClamp) > , initialLetter(o.initialLetter) > , deprecatedFlexibleBox(o.deprecatedFlexibleBox) > , flexibleBox(o.flexibleBox) >@@ -220,7 +218,6 @@ bool StyleRareNonInheritedData::operator==(const StyleRareNonInheritedData& o) c > && perspectiveOriginX == o.perspectiveOriginX > && perspectiveOriginY == o.perspectiveOriginY > && lineClamp == o.lineClamp >- && linesClamp == o.linesClamp > && initialLetter == o.initialLetter > #if ENABLE(DASHBOARD_SUPPORT) > && dashboardRegions == o.dashboardRegions >diff --git a/Source/WebCore/rendering/style/StyleRareNonInheritedData.h b/Source/WebCore/rendering/style/StyleRareNonInheritedData.h >index 12363af3556668a162c5ed089bf0624b29a0c8ac..089ccfa438cdf5f4e5e0396752741042b80dc138 100644 >--- a/Source/WebCore/rendering/style/StyleRareNonInheritedData.h >+++ b/Source/WebCore/rendering/style/StyleRareNonInheritedData.h >@@ -102,7 +102,6 @@ public: > Length perspectiveOriginY; > > LineClampValue lineClamp; // An Apple extension. >- LinesClampValue linesClamp; // An Apple extension. > > IntSize initialLetter; > >diff --git a/Source/WebCore/rendering/updating/RenderTreeBuilderMultiColumn.cpp b/Source/WebCore/rendering/updating/RenderTreeBuilderMultiColumn.cpp >index 57216eb2c9ba1debe941a1fda4ab96443faa041c..c9d289a9e82af6abc3d85de737f6efe30e4057bb 100644 >--- a/Source/WebCore/rendering/updating/RenderTreeBuilderMultiColumn.cpp >+++ b/Source/WebCore/rendering/updating/RenderTreeBuilderMultiColumn.cpp >@@ -26,7 +26,6 @@ > > #include "RenderBlockFlow.h" > #include "RenderChildIterator.h" >-#include "RenderLinesClampFlow.h" > #include "RenderMultiColumnFlow.h" > #include "RenderMultiColumnSet.h" > #include "RenderMultiColumnSpannerPlaceholder.h" >@@ -81,7 +80,7 @@ static bool isValidColumnSpanner(const RenderMultiColumnFlow& fragmentedFlow, co > if (descendantBox.isFloatingOrOutOfFlowPositioned()) > return false; > >- if (!fragmentedFlow.isColumnSpanningDescendant(descendantBox)) >+ if (descendantBox.style().columnSpan() != ColumnSpan::All) > return false; > > auto* parent = descendantBox.parent(); >@@ -166,7 +165,7 @@ void RenderTreeBuilder::MultiColumn::createFragmentedFlow(RenderBlockFlow& flow) > } > } > >- auto newFragmentedFlow = !flow.style().hasLinesClamp() ? WebCore::createRenderer<RenderMultiColumnFlow>(flow.document(), RenderStyle::createAnonymousStyleWithDisplay(flow.style(), DisplayType::Block)) : WebCore::createRenderer<RenderLinesClampFlow>(flow.document(), RenderStyle::createAnonymousStyleWithDisplay(flow.style(), DisplayType::Block)); >+ auto newFragmentedFlow = WebCore::createRenderer<RenderMultiColumnFlow>(flow.document(), RenderStyle::createAnonymousStyleWithDisplay(flow.style(), DisplayType::Block)); > newFragmentedFlow->initializeStyle(); > auto& fragmentedFlow = *newFragmentedFlow; > m_builder.blockBuilder().attach(flow, WTFMove(newFragmentedFlow), nullptr); >@@ -181,14 +180,6 @@ void RenderTreeBuilder::MultiColumn::createFragmentedFlow(RenderBlockFlow& flow) > } > } > >- if (flow.style().hasLinesClamp()) { >- // Keep the middle block out of the flow thread. >- for (auto& element : childrenOfType<RenderElement>(fragmentedFlow)) { >- if (!downcast<RenderLinesClampFlow>(fragmentedFlow).isChildAllowedInFragmentedFlow(flow, element)) >- m_builder.move(fragmentedFlow, flow, element, RenderTreeBuilder::NormalizeAfterInsertion::Yes); >- } >- } >- > flow.setMultiColumnFlow(fragmentedFlow); > } > >@@ -352,7 +343,7 @@ RenderObject* RenderTreeBuilder::MultiColumn::processPossibleSpannerDescendant(R > // Need to create a new column set when there's no set already created. We also always insert > // another column set after a spanner. Even if it turns out that there are no renderers > // following the spanner, there may be bottom margins there, which take up space. >- auto newSet = flow.createMultiColumnSet(RenderStyle::createAnonymousStyleWithDisplay(multicolContainer->style(), DisplayType::Block)); >+ auto newSet = createRenderer<RenderMultiColumnSet>(flow, RenderStyle::createAnonymousStyleWithDisplay(multicolContainer->style(), DisplayType::Block)); > newSet->initializeStyle(); > auto& set = *newSet; > m_builder.blockBuilder().attach(*multicolContainer, WTFMove(newSet), insertBeforeMulticolChild); >diff --git a/Source/WebKit/WebProcess/WebPage/WebPage.cpp b/Source/WebKit/WebProcess/WebPage/WebPage.cpp >index 78749198da155d169c99dfb6f3e19dcaf3bc75cb..1036e189ca0f6d6e166e6057b095d79e5cef4383 100644 >--- a/Source/WebKit/WebProcess/WebPage/WebPage.cpp >+++ b/Source/WebKit/WebProcess/WebPage/WebPage.cpp >@@ -580,7 +580,6 @@ WebPage::WebPage(uint64_t pageID, WebPageCreationParameters&& parameters) > m_page->settings().setMediaKeysStorageDirectory(manager->mediaKeyStorageDirectory()); > #endif > m_page->settings().setAppleMailPaginationQuirkEnabled(parameters.appleMailPaginationQuirkEnabled); >- m_page->settings().setAppleMailLinesClampEnabled(parameters.appleMailLinesClampEnabled); > > if (parameters.viewScaleFactor != 1) > scaleView(parameters.viewScaleFactor); >diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog >index 7cfd5dc1aad14adf8bd8fafd70f03f7478ff9be2..e70a2ef5bdba0519b7f149563809b1695068d64e 100644 >--- a/LayoutTests/ChangeLog >+++ b/LayoutTests/ChangeLog >@@ -1,3 +1,25 @@ >+2018-07-25 Zalan Bujtas <zalan@apple.com> >+ >+ REGRESSION(r227577) Text on TV & Movies page doesn't wrap properly in iTunes >+ https://bugs.webkit.org/show_bug.cgi?id=188018 >+ <rdar://problem/42517520> >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * fast/block/lines-clamp-advanced-expected.html: Removed. >+ * fast/block/lines-clamp-advanced-rl-expected.html: Removed. >+ * fast/block/lines-clamp-advanced-rl.html: Removed. >+ * fast/block/lines-clamp-advanced.html: Removed. >+ * fast/block/lines-clamp-basic-expected.html: Removed. >+ * fast/block/lines-clamp-basic-rl-expected.html: Removed. >+ * fast/block/lines-clamp-basic-rl.html: Removed. >+ * fast/block/lines-clamp-basic.html: Removed. >+ * fast/css/lines-clamp-parsing-expected.txt: Removed. >+ * fast/css/lines-clamp-parsing.html: Removed. >+ * fast/overflow/line-clamp-with-text-shadow-expected.html: Added. >+ * fast/overflow/line-clamp-with-text-shadow.html: Added. >+ * platform/ios-simulator-wk2/fast/overflow/line-clamp-expected.txt: Removed. >+ > 2018-07-25 Ms2ger <Ms2ger@igalia.com> > > [GTK][WPE] Unreviewed test gardening >diff --git a/LayoutTests/fast/block/lines-clamp-advanced-expected.html b/LayoutTests/fast/block/lines-clamp-advanced-expected.html >deleted file mode 100644 >index 3eb064c6a3e3f1b4f51fc5f0a6ec4f9d8ae71fb4..0000000000000000000000000000000000000000 >--- a/LayoutTests/fast/block/lines-clamp-advanced-expected.html >+++ /dev/null >@@ -1,35 +0,0 @@ >-<script> >- if (window.internals) >- window.internals.settings.setAppleMailLinesClampEnabled(true) >- >-</script> >-<style> >- div.clamp { border:5px solid black; -webkit-lines-clamp: 4 7 foo; -webkit-column-gap:50px; -webkit-column-rule:5px solid blue; } >- #foo { height:50px; border:2px solid blue; -webkit-user-select:none; } >-</style> >-<body> >-<div class=clamp> >-<div> >- <div style="float:right;border:2px solid green;font-size:24px">Float Line 1<br>Float Line 2<br>Float Line 3<br>Float Line 4</div> >- Line One<br> >- Line Two<br> >- Line Three<br> >- Line Four<br> >- Line Six<br> >- >- >-</div> >- >-<div id="foo">The middle piece.</div> >- >-<div> >- Line Seven<br> >- Line Eight<br> >- Line Nine<br> >- Line Ten<br> >- Line Eleven<br> >- Line Twelve<br> >- >-</div> >-</div> >- >diff --git a/LayoutTests/fast/block/lines-clamp-advanced-rl-expected.html b/LayoutTests/fast/block/lines-clamp-advanced-rl-expected.html >deleted file mode 100644 >index 815cfcebfa189f3ed60d6483e7097fff1c87cdd8..0000000000000000000000000000000000000000 >--- a/LayoutTests/fast/block/lines-clamp-advanced-rl-expected.html >+++ /dev/null >@@ -1,36 +0,0 @@ >-<script> >- if (window.internals) >- window.internals.settings.setAppleMailLinesClampEnabled(true) >- >-</script> >-<style> >- html { writing-mode: vertical-rl; } >- div.clamp { border:5px solid black; -webkit-lines-clamp: 4 7 foo; -webkit-column-gap:50px; -webkit-column-rule:5px solid blue; } >- #foo { width:50px; border:2px solid blue; -webkit-user-select:none; } >-</style> >-<body> >-<div class=clamp> >-<div> >- <div style="float:right;border:2px solid green;font-size:24px">Float Line 1<br>Float Line 2<br>Float Line 3<br>Float Line 4</div> >- Line One<br> >- Line Two<br> >- Line Three<br> >- Line Four<br> >- Line Six<br> >- >- >-</div> >- >-<div id="foo">The middle piece.</div> >- >-<div> >- Line Seven<br> >- Line Eight<br> >- Line Nine<br> >- Line Ten<br> >- Line Eleven<br> >- Line Twelve<br> >- >-</div> >-</div> >- >diff --git a/LayoutTests/fast/block/lines-clamp-advanced-rl.html b/LayoutTests/fast/block/lines-clamp-advanced-rl.html >deleted file mode 100644 >index 1c3fca6f5249d3c6799617121123a83d9fa7f1ac..0000000000000000000000000000000000000000 >--- a/LayoutTests/fast/block/lines-clamp-advanced-rl.html >+++ /dev/null >@@ -1,37 +0,0 @@ >-<script> >- if (window.internals) >- window.internals.settings.setAppleMailLinesClampEnabled(true) >- >-</script> >-<style> >- html { writing-mode:vertical-rl; } >- div.clamp { border:5px solid black; -webkit-lines-clamp: 4 7 foo; -webkit-column-gap:50px; -webkit-column-rule:5px solid blue; } >- #foo { width:50px; border:2px solid blue; -webkit-user-select:none; } >-</style> >-<body> >-<div class=clamp> >-<div> >- <div style="float:right;border:2px solid green;font-size:24px">Float Line 1<br>Float Line 2<br>Float Line 3<br>Float Line 4</div> >- Line One<br> >- Line Two<br> >- Line Three<br> >- Line Four<br> >- Line Five<br> >- Line Six<br> >- >- >-</div> >- >-<div id="foo">The middle piece.</div> >- >-<div> >- Line Seven<br> >- Line Eight<br> >- Line Nine<br> >- Line Ten<br> >- Line Eleven<br> >- Line Twelve<br> >- >-</div> >-</div> >- >diff --git a/LayoutTests/fast/block/lines-clamp-advanced.html b/LayoutTests/fast/block/lines-clamp-advanced.html >deleted file mode 100644 >index 63e37d5d799015db8bec52f706763f38d693bc46..0000000000000000000000000000000000000000 >--- a/LayoutTests/fast/block/lines-clamp-advanced.html >+++ /dev/null >@@ -1,36 +0,0 @@ >-<script> >- if (window.internals) >- window.internals.settings.setAppleMailLinesClampEnabled(true) >- >-</script> >-<style> >- div.clamp { border:5px solid black; -webkit-lines-clamp: 4 7 foo; -webkit-column-gap:50px; -webkit-column-rule:5px solid blue; } >- #foo { height:50px; border:2px solid blue; -webkit-user-select:none; } >-</style> >-<body> >-<div class=clamp> >-<div> >- <div style="float:right;border:2px solid green;font-size:24px">Float Line 1<br>Float Line 2<br>Float Line 3<br>Float Line 4</div> >- Line One<br> >- Line Two<br> >- Line Three<br> >- Line Four<br> >- Line Five<br> >- Line Six<br> >- >- >-</div> >- >-<div id="foo">The middle piece.</div> >- >-<div> >- Line Seven<br> >- Line Eight<br> >- Line Nine<br> >- Line Ten<br> >- Line Eleven<br> >- Line Twelve<br> >- >-</div> >-</div> >- >diff --git a/LayoutTests/fast/block/lines-clamp-basic-expected.html b/LayoutTests/fast/block/lines-clamp-basic-expected.html >deleted file mode 100644 >index 09624b8150bcf854a0169e56f91642c54b311cec..0000000000000000000000000000000000000000 >--- a/LayoutTests/fast/block/lines-clamp-basic-expected.html >+++ /dev/null >@@ -1,29 +0,0 @@ >-<script> >- if (window.internals) >- window.internals.settings.setAppleMailLinesClampEnabled(true) >- >-</script> >-<style> >- div.clamp { border:5px solid black; -webkit-lines-clamp: 3 3 foo; -webkit-column-gap:50px; -webkit-column-rule:5px solid blue; } >- #foo { height:50px; border:2px solid blue; -webkit-user-select:none; } >-</style> >-<body> >-<div class=clamp> >-<div> >- Line One<br> >- Line Two<br> >- Line Three<br> >- >- >-</div> >- >-<div id="foo">The middle piece.</div> >- >-<div> >- Line Ten<br> >- Line Eleven<br> >- Line Twelve<br> >- >-</div> >-</div> >- >diff --git a/LayoutTests/fast/block/lines-clamp-basic-rl-expected.html b/LayoutTests/fast/block/lines-clamp-basic-rl-expected.html >deleted file mode 100644 >index a8ca9ef9402acd58f12906294a7856a900c9fb3a..0000000000000000000000000000000000000000 >--- a/LayoutTests/fast/block/lines-clamp-basic-rl-expected.html >+++ /dev/null >@@ -1,30 +0,0 @@ >-<script> >- if (window.internals) >- window.internals.settings.setAppleMailLinesClampEnabled(true) >- >-</script> >-<style> >- html { writing-mode: vertical-rl; } >- div.clamp { border:5px solid black; -webkit-lines-clamp: 3 3 foo; -webkit-column-gap:50px; -webkit-column-rule:5px solid blue; } >- #foo { width:50px; border:2px solid blue; -webkit-user-select:none; } >-</style> >-<body> >-<div class=clamp> >-<div> >- Line One<br> >- Line Two<br> >- Line Three<br> >- >- >-</div> >- >-<div id="foo">The middle piece.</div> >- >-<div> >- Line Ten<br> >- Line Eleven<br> >- Line Twelve<br> >- >-</div> >-</div> >- >diff --git a/LayoutTests/fast/block/lines-clamp-basic-rl.html b/LayoutTests/fast/block/lines-clamp-basic-rl.html >deleted file mode 100644 >index 96a2c20e70105a62082cd837d0a51b3567a55420..0000000000000000000000000000000000000000 >--- a/LayoutTests/fast/block/lines-clamp-basic-rl.html >+++ /dev/null >@@ -1,35 +0,0 @@ >-<script> >- if (window.internals) >- window.internals.settings.setAppleMailLinesClampEnabled(true) >- >-</script> >-<style> >- html { writing-mode:vertical-rl; } >- div.clamp { border:5px solid black; -webkit-lines-clamp: 3 3 foo; -webkit-column-gap:50px; -webkit-column-rule:5px solid blue; } >- #foo { width:50px; border:2px solid blue; -webkit-user-select:none; } >-</style> >-<body> >-<div class=clamp> >-<div> >- Line One<br> >- Line Two<br> >- Line Three<br> >- Line Four<br> >- Line Five<br> >- Line Six<br> >- >-</div> >- >-<div id="foo">The middle piece.</div> >- >-<div> >- Line Seven<br> >- Line Eight<br> >- Line Nine<br> >- Line Ten<br> >- Line Eleven<br> >- Line Twelve<br> >- >-</div> >-</div> >- >diff --git a/LayoutTests/fast/block/lines-clamp-basic.html b/LayoutTests/fast/block/lines-clamp-basic.html >deleted file mode 100644 >index 802bcf2793bd2cf6f1c45a4b2dfed866053384b6..0000000000000000000000000000000000000000 >--- a/LayoutTests/fast/block/lines-clamp-basic.html >+++ /dev/null >@@ -1,34 +0,0 @@ >-<script> >- if (window.internals) >- window.internals.settings.setAppleMailLinesClampEnabled(true) >- >-</script> >-<style> >- div.clamp { border:5px solid black; -webkit-lines-clamp: 3 3 foo; -webkit-column-gap:50px; -webkit-column-rule:5px solid blue; } >- #foo { height:50px; border:2px solid blue; -webkit-user-select:none; } >-</style> >-<body> >-<div class=clamp> >-<div> >- Line One<br> >- Line Two<br> >- Line Three<br> >- Line Four<br> >- Line Five<br> >- Line Six<br> >- >-</div> >- >-<div id="foo">The middle piece.</div> >- >-<div> >- Line Seven<br> >- Line Eight<br> >- Line Nine<br> >- Line Ten<br> >- Line Eleven<br> >- Line Twelve<br> >- >-</div> >-</div> >- >diff --git a/LayoutTests/fast/css/lines-clamp-parsing-expected.txt b/LayoutTests/fast/css/lines-clamp-parsing-expected.txt >deleted file mode 100644 >index 632d5261a6e514245d102c099d8d0a3a3902f819..0000000000000000000000000000000000000000 >--- a/LayoutTests/fast/css/lines-clamp-parsing-expected.txt >+++ /dev/null >@@ -1,24 +0,0 @@ >-Lines Clamp Parsing Test >- >-On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". >- >- >-PASS testParsing("linesClampTest", "2 1", "-webkit-lines-clamp") is "2 1" >-PASS testParsing("linesClampTest", "1 1", "-webkit-lines-clamp") is "1 1" >-PASS testParsing("linesClampTest", "20% 4", "-webkit-lines-clamp") is "20% 4" >-PASS testParsing("linesClampTest", "3 30%", "-webkit-lines-clamp") is "3 30%" >-PASS testParsing("linesClampTest", "50% 60%", "-webkit-lines-clamp") is "50% 60%" >-PASS testParsing("linesClampTest", "1 3 foo", "-webkit-lines-clamp") is "1 3 foo" >-PASS testParsing("linesClampTest", "inherit", "-webkit-lines-clamp") is "inherit" >-PASS testParsing("linesClampTest", "1 a", "-webkit-lines-clamp") is "1 a" >-PASS testParsing("linesClampTest", "none", "-webkit-lines-clamp") is "none" >-PASS testParsing("linesClampTest", "foo", "-webkit-lines-clamp") is "none" >-PASS testParsing("linesClampTest", "1 2 3", "-webkit-lines-clamp") is "none" >-PASS testParsing("linesClampTest", "a 1", "-webkit-lines-clamp") is "none" >-PASS testParsing("linesClampTest", "abc123", "-webkit-lines-clamp") is "none" >-PASS testParsing("linesClampTest", "-1", "-webkit-lines-clamp") is "none" >-PASS testParsing("linesClampTest", "50px", "-webkit-lines-clamp") is "none" >-PASS successfullyParsed is true >- >-TEST COMPLETE >- >diff --git a/LayoutTests/fast/css/lines-clamp-parsing.html b/LayoutTests/fast/css/lines-clamp-parsing.html >deleted file mode 100644 >index d2149f70b578c40fe13adc6b9e2feb4acbfe46d0..0000000000000000000000000000000000000000 >--- a/LayoutTests/fast/css/lines-clamp-parsing.html >+++ /dev/null >@@ -1,41 +0,0 @@ >-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> >-<html> >- <head> >- <script src="../../resources/js-test-pre.js"></script> >- </head> >- <body> >- <p id="description"></p> >- <div id="console"></div> >- <div id="linesClampTest"></div> >- <script> >- if (window.internals) >- window.internals.settings.setAppleMailLinesClampEnabled(true) >- description('Lines Clamp Parsing Test'); >- function testParsing(elementId, value, styleAttribute) >- { >- var div = document.getElementById(elementId); >- div.style[styleAttribute] = value; >- return div.style[styleAttribute]; >- } >- >- shouldBeEqualToString('testParsing("linesClampTest", "2 1", "-webkit-lines-clamp")', '2 1'); >- shouldBeEqualToString('testParsing("linesClampTest", "1 1", "-webkit-lines-clamp")', '1 1'); >- shouldBeEqualToString('testParsing("linesClampTest", "20% 4", "-webkit-lines-clamp")', '20% 4'); >- shouldBeEqualToString('testParsing("linesClampTest", "3 30%", "-webkit-lines-clamp")', '3 30%'); >- shouldBeEqualToString('testParsing("linesClampTest", "50% 60%", "-webkit-lines-clamp")', '50% 60%'); >- shouldBeEqualToString('testParsing("linesClampTest", "1 3 foo", "-webkit-lines-clamp")', '1 3 foo'); >- shouldBeEqualToString('testParsing("linesClampTest", "inherit", "-webkit-lines-clamp")', 'inherit'); >- shouldBeEqualToString('testParsing("linesClampTest", "1 a", "-webkit-lines-clamp")', '1 a'); >- shouldBeEqualToString('testParsing("linesClampTest", "none", "-webkit-lines-clamp")', 'none'); >- >- // The following are invalid and should get ignored. >- shouldBeEqualToString('testParsing("linesClampTest", "foo", "-webkit-lines-clamp")', 'none'); >- shouldBeEqualToString('testParsing("linesClampTest", "1 2 3", "-webkit-lines-clamp")', 'none'); >- shouldBeEqualToString('testParsing("linesClampTest", "a 1", "-webkit-lines-clamp")', 'none'); >- shouldBeEqualToString('testParsing("linesClampTest", "abc123", "-webkit-lines-clamp")', 'none'); >- shouldBeEqualToString('testParsing("linesClampTest", "-1", "-webkit-lines-clamp")', 'none'); >- shouldBeEqualToString('testParsing("linesClampTest", "50px", "-webkit-lines-clamp")', 'none'); >- </script> >- <script src="../../resources/js-test-post.js"></script> >- </body> >-</html> >diff --git a/LayoutTests/fast/overflow/line-clamp-with-text-shadow-expected.html b/LayoutTests/fast/overflow/line-clamp-with-text-shadow-expected.html >new file mode 100644 >index 0000000000000000000000000000000000000000..201c729c13a335619a94a398122f2cb9891893a4 >--- /dev/null >+++ b/LayoutTests/fast/overflow/line-clamp-with-text-shadow-expected.html >@@ -0,0 +1,22 @@ >+<!DOCTYPE html> >+<html> >+<head> >+<style> >+div { >+ display: -webkit-box; >+ overflow: hidden; >+ text-overflow: ellipsis; >+ white-space: nowrap; >+ >+ width: 360px; >+ font-size: 36px; >+ >+ -webkit-box-orient: vertical; >+ text-shadow: 0px 0px 7px red; >+} >+</style> >+</head> >+<body> >+<div>Text below should not SHOW</div> >+</body> >+</html> >diff --git a/LayoutTests/fast/overflow/line-clamp-with-text-shadow.html b/LayoutTests/fast/overflow/line-clamp-with-text-shadow.html >new file mode 100644 >index 0000000000000000000000000000000000000000..ed6853363e9c2e511405131deebf55aeb48b6d02 >--- /dev/null >+++ b/LayoutTests/fast/overflow/line-clamp-with-text-shadow.html >@@ -0,0 +1,21 @@ >+<!DOCTYPE html> >+<html> >+<head> >+<style> >+div { >+ display: -webkit-box; >+ overflow: hidden; >+ >+ width: 360px; >+ font-size: 36px; >+ >+ -webkit-line-clamp: 1; >+ -webkit-box-orient: vertical; >+ text-shadow: 0px 0px 7px red; >+} >+</style> >+</head> >+<body> >+<div>Text below should not SHOW</div> >+</body> >+</html> >diff --git a/LayoutTests/platform/ios-simulator-wk2/fast/overflow/line-clamp-expected.txt b/LayoutTests/platform/ios-simulator-wk2/fast/overflow/line-clamp-expected.txt >deleted file mode 100644 >index 6b38137c6550893840c6a34017a7038777dda57b..0000000000000000000000000000000000000000 >--- a/LayoutTests/platform/ios-simulator-wk2/fast/overflow/line-clamp-expected.txt >+++ /dev/null >@@ -1,156 +0,0 @@ >-layer at (0,0) size 800x600 >- RenderView at (0,0) size 800x600 >-layer at (0,0) size 800x600 >- RenderBlock {HTML} at (0,0) size 800x600 >- RenderBody {BODY} at (8,8) size 784x584 >- RenderText {#text} at (0,0) size 270x19 >- text run at (0,0) width 270: "This tests the -webkit-line-clamp property" >- RenderBR {BR} at (269,15) size 1x0 >- RenderBR {BR} at (0,20) size 0x19 >- RenderText {#text} at (102,121) size 4x19 >- text run at (102,121) width 4: " " >- RenderText {#text} at (208,121) size 4x19 >- text run at (208,121) width 4: " " >- RenderText {#text} at (314,121) size 4x19 >- text run at (314,121) width 4: " " >- RenderText {#text} at (420,121) size 4x19 >- text run at (420,121) width 4: " " >- RenderText {#text} at (526,121) size 4x19 >- text run at (526,121) width 4: " " >- RenderText {#text} at (632,121) size 4x19 >- text run at (632,121) width 4: " " >- RenderText {#text} at (0,0) size 0x0 >- RenderText {#text} at (102,263) size 4x19 >- text run at (102,263) width 4: " " >- RenderText {#text} at (208,263) size 4x19 >- text run at (208,263) width 4: " " >- RenderText {#text} at (0,0) size 0x0 >-layer at (8,62) size 102x82 clip at (9,63) size 100x80 scrollHeight 159 >- RenderDeprecatedFlexibleBox {DIV} at (0,54) size 102x82 [border: (1px solid #808080)] >- RenderBlock (anonymous) at (1,1) size 100x80 >- RenderText {#text} at (0,0) size 83x159 >- text run at (0,0) width 30: "50%" >- text run at (0,20) width 69: "truncation." >- text run at (0,40) width 63: "This is an" >- text run at (0,60) width 72: "example of" >- text run at (0,80) width 51: "ellipsis-" >- text run at (0,100) width 83: "truncation of" >- text run at (0,120) width 64: "multi-line" >- text run at (0,140) width 28: "text." >- RenderInline {A} at (0,0) size 36x19 [color=#0000EE] >- RenderText {#text} at (27,140) size 36x19 >- text run at (27,140) width 36: "More" >- RenderText {#text} at (0,0) size 0x0 >-layer at (114,122) size 102x22 clip at (115,123) size 100x20 scrollHeight 119 >- RenderDeprecatedFlexibleBox {DIV} at (106,114) size 102x22 [border: (1px solid #808080)] >- RenderBlock (anonymous) at (1,1) size 100x20 >- RenderText {#text} at (0,0) size 100x119 >- text run at (0,0) width 95: "0% truncation." >- text run at (0,20) width 86: "This does the" >- text run at (0,40) width 100: "most truncation" >- text run at (0,60) width 57: "possible," >- text run at (0,80) width 94: "truncating to 1" >- text run at (0,100) width 28: "line." >- RenderInline {A} at (0,0) size 36x19 [color=#0000EE] >- RenderText {#text} at (27,100) size 36x19 >- text run at (27,100) width 36: "More" >- RenderText {#text} at (0,0) size 0x0 >-layer at (220,102) size 102x42 clip at (221,103) size 100x40 scrollHeight 119 >- RenderDeprecatedFlexibleBox {DIV} at (212,94) size 102x42 [border: (1px solid #808080)] >- RenderBlock (anonymous) at (1,1) size 100x40 >- RenderText {#text} at (0,0) size 94x119 >- text run at (0,0) width 51: "2 lines. " >- text run at (50,0) width 44: "This is" >- text run at (0,20) width 91: "an example of" >- text run at (0,40) width 51: "ellipsis-" >- text run at (0,60) width 83: "truncation of" >- text run at (0,80) width 64: "multi-line" >- text run at (0,100) width 28: "text." >- RenderInline {A} at (0,0) size 36x19 [color=#0000EE] >- RenderText {#text} at (27,100) size 36x19 >- text run at (27,100) width 36: "More" >- RenderText {#text} at (0,0) size 0x0 >-layer at (326,82) size 102x62 clip at (327,83) size 100x60 scrollHeight 179 >- RenderDeprecatedFlexibleBox {DIV} at (318,74) size 102x62 [border: (1px solid #808080)] >- RenderBlock (anonymous) at (1,1) size 100x60 >- RenderText {#text} at (0,0) size 85x179 >- text run at (0,0) width 72: "Backwards" >- text run at (0,20) width 72: "compatible" >- text run at (0,40) width 73: "truncation. " >- text run at (72,40) width 9: "3" >- text run at (0,60) width 74: "lines on the" >- text run at (0,80) width 85: "latest version" >- text run at (0,100) width 75: "of WebKit. " >- text run at (74,100) width 9: "1" >- text run at (0,120) width 81: "line on older" >- text run at (0,140) width 71: "versions of" >- text run at (0,160) width 54: "WebKit." >- RenderInline {A} at (0,0) size 36x19 [color=#0000EE] >- RenderText {#text} at (53,160) size 36x19 >- text run at (53,160) width 36: "More" >- RenderText {#text} at (0,0) size 0x0 >-layer at (432,102) size 102x42 clip at (433,103) size 100x40 scrollHeight 159 >- RenderDeprecatedFlexibleBox {DIV} at (424,94) size 102x42 [border: (1px solid #808080)] >- RenderBlock (anonymous) at (1,1) size 100x40 >- RenderText {#text} at (0,0) size 96x159 >- text run at (0,0) width 30: "30%" >- text run at (0,20) width 73: "truncation. " >- text run at (72,20) width 21: "No" >- text run at (0,40) width 96: "link at the end." >- text run at (0,60) width 63: "This is an" >- text run at (0,80) width 72: "example of" >- text run at (0,100) width 51: "ellipsis-" >- text run at (0,120) width 83: "truncation of" >- text run at (0,140) width 96: "multi-line text." >-layer at (538,82) size 102x62 clip at (539,83) size 100x60 scrollHeight 119 >- RenderDeprecatedFlexibleBox {DIV} at (530,74) size 102x62 [border: (1px solid #808080)] >- RenderBlock (anonymous) at (1,1) size 100x60 >- RenderText {#text} at (0,0) size 99x119 >- text run at (0,0) width 51: "3 lines. " >- text run at (50,0) width 49: "No link" >- text run at (0,20) width 71: "at the end. " >- text run at (70,20) width 29: "This" >- text run at (0,40) width 88: "is an example" >- text run at (0,60) width 68: "of ellipsis-" >- text run at (0,80) width 83: "truncation of" >- text run at (0,100) width 96: "multi-line text." >-layer at (644,48) size 102x102 clip at (645,49) size 100x100 >- RenderDeprecatedFlexibleBox {DIV} at (636,40) size 102x102 [border: (1px solid #808080)] >- RenderBlock (anonymous) at (1,1) size 100x100 >- RenderText {#text} at (0,0) size 94x99 >- text run at (0,0) width 51: "0 lines. " >- text run at (50,0) width 44: "This is" >- text run at (0,20) width 64: "an invalid" >- text run at (0,40) width 67: "value for -" >- text run at (0,60) width 79: "webkit-line-" >- text run at (0,80) width 44: "clamp." >-layer at (8,190) size 102x102 clip at (9,191) size 100x100 >- RenderDeprecatedFlexibleBox {DIV} at (0,182) size 102x102 [border: (1px solid #808080)] >- RenderBlock (anonymous) at (1,1) size 100x100 >- RenderText {#text} at (0,0) size 99x99 >- text run at (0,0) width 56: "-1 lines. " >- text run at (55,0) width 44: "This is" >- text run at (0,20) width 64: "an invalid" >- text run at (0,40) width 67: "value for -" >- text run at (0,60) width 79: "webkit-line-" >- text run at (0,80) width 44: "clamp." >-layer at (114,210) size 102x82 clip at (115,211) size 100x80 >- RenderDeprecatedFlexibleBox {DIV} at (106,202) size 102x82 [border: (1px solid #808080)] >- RenderBlock (anonymous) at (1,1) size 100x80 >- RenderText {#text} at (0,0) size 97x79 >- text run at (0,0) width 35: "-1%. " >- text run at (34,0) width 63: "This is an" >- text run at (0,20) width 84: "invalid value" >- text run at (0,40) width 77: "for -webkit-" >- text run at (0,60) width 73: "line-clamp." >-layer at (220,150) size 102x142 clip at (221,151) size 100x140 >- RenderDeprecatedFlexibleBox {DIV} at (212,142) size 102x142 [border: (1px solid #808080)] >- RenderBlock (anonymous) at (1,1) size 100x140 >- RenderText {#text} at (0,0) size 99x139 >- text run at (0,0) width 38: "150%" >- text run at (0,20) width 69: "truncation." >- text run at (0,40) width 86: "This does the" >- text run at (0,60) width 99: "least truncation" >- text run at (0,80) width 57: "possible," >- text run at (0,100) width 65: "truncating" >- text run at (0,120) width 53: "nothing."
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 188018
: 345781