Changeset 207804 in webkit
- Timestamp:
- Oct 24, 2016, 9:19:09 PM (10 years ago)
- Location:
- trunk
- Files:
-
- 2 added
- 11 edited
-
LayoutTests/ChangeLog (modified) (1 diff)
-
LayoutTests/fast/css-generated-content/dynamic-first-letter-selection-clear-crash-expected.txt (added)
-
LayoutTests/fast/css-generated-content/dynamic-first-letter-selection-clear-crash.html (added)
-
Source/WebCore/ChangeLog (modified) (1 diff)
-
Source/WebCore/rendering/RenderBlock.cpp (modified) (3 diffs)
-
Source/WebCore/rendering/RenderBlock.h (modified) (1 diff)
-
Source/WebCore/rendering/RenderListItem.cpp (modified) (1 diff)
-
Source/WebCore/rendering/RenderRubyRun.cpp (modified) (1 diff)
-
Source/WebCore/rendering/RenderRubyRun.h (modified) (1 diff)
-
Source/WebCore/rendering/RenderTable.cpp (modified) (1 diff)
-
Source/WebCore/rendering/RenderTable.h (modified) (1 diff)
-
Source/WebCore/rendering/svg/RenderSVGText.cpp (modified) (1 diff)
-
Source/WebCore/rendering/svg/RenderSVGText.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r207803 r207804 1 2016-10-24 Zalan Bujtas <zalan@apple.com> 2 3 Do not update selection rect on dirty lineboxes. 4 https://bugs.webkit.org/show_bug.cgi?id=163862 5 <rdar://problem/28813156> 6 7 Reviewed by Simon Fraser. 8 9 * fast/css-generated-content/dynamic-first-letter-selection-clear-crash-expected.txt: Added. 10 * fast/css-generated-content/dynamic-first-letter-selection-clear-crash.html: Added. 11 1 12 2016-10-24 Ryan Haddad <ryanhaddad@apple.com> 2 13 -
trunk/Source/WebCore/ChangeLog
r207803 r207804 1 2016-10-24 Zalan Bujtas <zalan@apple.com> 2 3 Do not update selection rect on dirty lineboxes. 4 https://bugs.webkit.org/show_bug.cgi?id=163862 5 <rdar://problem/28813156> 6 7 Reviewed by Simon Fraser. 8 9 In certain cases RenderBlock::updateFirstLetter() triggers 10 unwanted render tree mutation while the caller assumes intact renderers. 11 This patch ensures that no renderers gets destroyed while computing the preferred widths 12 when we are outside of layout context. 13 14 Test: fast/css-generated-content/dynamic-first-letter-selection-clear-crash.html 15 16 * rendering/RenderBlock.cpp: 17 (WebCore::RenderBlock::computePreferredLogicalWidths): 18 (WebCore::RenderBlock::updateFirstLetter): 19 * rendering/RenderBlock.h: 20 * rendering/RenderListItem.cpp: 21 (WebCore::RenderListItem::insertOrMoveMarkerRendererIfNeeded): 22 * rendering/RenderRubyRun.cpp: 23 (WebCore::RenderRubyRun::updateFirstLetter): 24 * rendering/RenderRubyRun.h: 25 * rendering/RenderTable.cpp: 26 (WebCore::RenderTable::updateFirstLetter): 27 * rendering/RenderTable.h: 28 * rendering/svg/RenderSVGText.cpp: 29 (WebCore::RenderSVGText::updateFirstLetter): 30 * rendering/svg/RenderSVGText.h: 31 1 32 2016-10-24 Ryan Haddad <ryanhaddad@apple.com> 2 33 -
trunk/Source/WebCore/rendering/RenderBlock.cpp
r207499 r207804 2756 2756 ASSERT(preferredLogicalWidthsDirty()); 2757 2757 2758 updateFirstLetter(); 2758 // FIXME: Do not even try to reshuffle first letter renderers when we are not in layout 2759 // until after webkit.org/b/163848 is fixed. 2760 updateFirstLetter(view().frameView().isInRenderTreeLayout() ? RenderTreeMutationIsAllowed::Yes : RenderTreeMutationIsAllowed::No); 2759 2761 2760 2762 m_minPreferredLogicalWidth = 0; … … 3306 3308 } 3307 3309 3308 void RenderBlock::updateFirstLetter( )3310 void RenderBlock::updateFirstLetter(RenderTreeMutationIsAllowed mutationAllowedOrNot) 3309 3311 { 3310 3312 RenderObject* firstLetterObj; … … 3327 3329 return; 3328 3330 3331 if (mutationAllowedOrNot != RenderTreeMutationIsAllowed::Yes) 3332 return; 3329 3333 // Our layout state is not valid for the repaints we are going to trigger by 3330 3334 // adding and removing children of firstLetterContainer. -
trunk/Source/WebCore/rendering/RenderBlock.h
r205787 r207804 246 246 LayoutUnit collapsedMarginAfterForChild(const RenderBox& child) const; 247 247 248 virtual void updateFirstLetter(); 248 enum class RenderTreeMutationIsAllowed { Yes, No }; 249 virtual void updateFirstLetter(RenderTreeMutationIsAllowed = RenderTreeMutationIsAllowed::Yes); 249 250 void getFirstLetter(RenderObject*& firstLetter, RenderElement*& firstLetterContainer, RenderObject* skipObject = nullptr); 250 251 -
trunk/Source/WebCore/rendering/RenderListItem.cpp
r207683 r207804 269 269 return; 270 270 271 // FIXME: Do not even try reposition the marker when we are not in layout271 // FIXME: Do not even try to reposition the marker when we are not in layout 272 272 // until after we fixed webkit.org/b/163789. 273 273 if (!view().frameView().isInRenderTreeLayout()) -
trunk/Source/WebCore/rendering/RenderRubyRun.cpp
r207275 r207804 102 102 } 103 103 104 void RenderRubyRun::updateFirstLetter( )104 void RenderRubyRun::updateFirstLetter(RenderTreeMutationIsAllowed) 105 105 { 106 106 } -
trunk/Source/WebCore/rendering/RenderRubyRun.h
r207275 r207804 62 62 63 63 RenderBlock* firstLineBlock() const override; 64 void updateFirstLetter( ) override;64 void updateFirstLetter(RenderTreeMutationIsAllowed = RenderTreeMutationIsAllowed::Yes) override; 65 65 66 66 void getOverhang(bool firstLine, RenderObject* startRenderer, RenderObject* endRenderer, float& startOverhang, float& endOverhang) const; -
trunk/Source/WebCore/rendering/RenderTable.cpp
r203708 r207804 1459 1459 } 1460 1460 1461 void RenderTable::updateFirstLetter( )1461 void RenderTable::updateFirstLetter(RenderTreeMutationIsAllowed) 1462 1462 { 1463 1463 } -
trunk/Source/WebCore/rendering/RenderTable.h
r203708 r207804 304 304 305 305 RenderBlock* firstLineBlock() const final; 306 void updateFirstLetter( ) final;306 void updateFirstLetter(RenderTreeMutationIsAllowed = RenderTreeMutationIsAllowed::Yes) final; 307 307 308 308 void updateLogicalWidth() final; -
trunk/Source/WebCore/rendering/svg/RenderSVGText.cpp
r201635 r207804 546 546 // Fix for <rdar://problem/8048875>. We should not render :first-letter CSS Style 547 547 // in a SVG text element context. 548 void RenderSVGText::updateFirstLetter( )549 { 550 } 551 552 } 548 void RenderSVGText::updateFirstLetter(RenderTreeMutationIsAllowed) 549 { 550 } 551 552 } -
trunk/Source/WebCore/rendering/svg/RenderSVGText.h
r201704 r207804 93 93 94 94 RenderBlock* firstLineBlock() const override; 95 void updateFirstLetter( ) override;95 void updateFirstLetter(RenderTreeMutationIsAllowed = RenderTreeMutationIsAllowed::Yes) override; 96 96 97 97 bool shouldHandleSubtreeMutations() const;
Note:
See TracChangeset
for help on using the changeset viewer.