Changeset 233055 in webkit
- Timestamp:
- Jun 21, 2018 1:34:14 PM (6 years ago)
- Location:
- trunk
- Files:
-
- 2 added
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r233053 r233055 1 2018-06-20 Zalan Bujtas <zalan@apple.com> 2 3 Do not reuse generated inline renderer for the first letter. 4 https://bugs.webkit.org/show_bug.cgi?id=186657 5 <rdar://problem/41157892> 6 7 Reviewed by Simon Fraser. 8 9 * fast/text/first-letter-with-display-contents-crash-expected.txt: Added. 10 * fast/text/first-letter-with-display-contents-crash.html: Added. 11 1 12 2018-06-21 Chris Dumez <cdumez@apple.com> 2 13 -
trunk/Source/WebCore/ChangeLog
r233053 r233055 1 2018-06-20 Zalan Bujtas <zalan@apple.com> 2 3 Do not reuse generated inline renderer for the first letter. 4 https://bugs.webkit.org/show_bug.cgi?id=186657 5 <rdar://problem/41157892> 6 7 Reviewed by Simon Fraser. 8 9 When the first letter pseudo element is present, we construct a dedicated subtree for its content like this: 10 11 <div><span>foobar</span></div> -> with ::first-letter on the <div> 12 DIV RenderBlock 13 SPAN RenderInline 14 RenderInline (generated wrapper for the first letter content) 15 RenderText (fist letter content) 16 RenderText (remaining text content) 17 18 "display: contents" on the <span> forces us not to construct a RenderInline for the <span> (or just come up with a wrapper at best). 19 FirstLetter::createRenderers logic needs to check for such cases and pick the correct parent for the first letter subtree accordingly. 20 21 Test: fast/text/first-letter-with-display-contents-crash.html 22 imported/w3c/web-platform-tests/css/css-display/display-contents-first-letter-002.html is not crashing anymore either. 23 24 * rendering/updating/RenderTreeBuilderFirstLetter.cpp: 25 (WebCore::RenderTreeBuilder::FirstLetter::createRenderers): 26 1 27 2018-06-21 Chris Dumez <cdumez@apple.com> 2 28 -
trunk/Source/WebCore/rendering/updating/RenderTreeBuilderFirstLetter.cpp
r232178 r233055 203 203 void RenderTreeBuilder::FirstLetter::createRenderers(RenderBlock& firstLetterBlock, RenderText& currentTextChild) 204 204 { 205 RenderElement* firstLetterContainer = currentTextChild.parent(); 205 RenderElement* textContentParent = currentTextChild.parent(); 206 RenderElement* firstLetterContainer = nullptr; 207 if (auto* wrapperInlineForDisplayContents = currentTextChild.inlineWrapperForDisplayContents()) 208 firstLetterContainer = wrapperInlineForDisplayContents->parent(); 209 else 210 firstLetterContainer = textContentParent; 206 211 auto pseudoStyle = styleForFirstLetter(firstLetterBlock, *firstLetterContainer); 207 212 RenderPtr<RenderBoxModelObject> newFirstLetter; … … 261 266 262 267 RenderTextFragment& remainingText = *newRemainingText; 263 m_builder.attach(* firstLetterContainer, WTFMove(newRemainingText), beforeChild);268 m_builder.attach(*textContentParent, WTFMove(newRemainingText), beforeChild); 264 269 remainingText.setFirstLetter(firstLetter); 265 270 firstLetter.setFirstLetterRemainingText(remainingText);
Note: See TracChangeset
for help on using the changeset viewer.