Changeset 207985 in webkit
- Timestamp:
- Oct 27, 2016, 3:56:19 AM (10 years ago)
- Location:
- releases/WebKitGTK/webkit-2.14
- 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
-
releases/WebKitGTK/webkit-2.14/LayoutTests/ChangeLog
r207984 r207985 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-21 Zalan Bujtas <zalan@apple.com> 2 13 -
releases/WebKitGTK/webkit-2.14/Source/WebCore/ChangeLog
r207984 r207985 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-21 Zalan Bujtas <zalan@apple.com> 2 33 -
releases/WebKitGTK/webkit-2.14/Source/WebCore/rendering/RenderBlock.cpp
r207100 r207985 2759 2759 ASSERT(preferredLogicalWidthsDirty()); 2760 2760 2761 updateFirstLetter(); 2761 // FIXME: Do not even try to reshuffle first letter renderers when we are not in layout 2762 // until after webkit.org/b/163848 is fixed. 2763 updateFirstLetter(view().frameView().isInRenderTreeLayout() ? RenderTreeMutationIsAllowed::Yes : RenderTreeMutationIsAllowed::No); 2762 2764 2763 2765 m_minPreferredLogicalWidth = 0; … … 3309 3311 } 3310 3312 3311 void RenderBlock::updateFirstLetter( )3313 void RenderBlock::updateFirstLetter(RenderTreeMutationIsAllowed mutationAllowedOrNot) 3312 3314 { 3313 3315 RenderObject* firstLetterObj; … … 3330 3332 return; 3331 3333 3334 if (mutationAllowedOrNot != RenderTreeMutationIsAllowed::Yes) 3335 return; 3332 3336 // Our layout state is not valid for the repaints we are going to trigger by 3333 3337 // adding and removing children of firstLetterContainer. -
releases/WebKitGTK/webkit-2.14/Source/WebCore/rendering/RenderBlock.h
r205614 r207985 244 244 LayoutUnit collapsedMarginAfterForChild(const RenderBox& child) const; 245 245 246 virtual void updateFirstLetter(); 246 enum class RenderTreeMutationIsAllowed { Yes, No }; 247 virtual void updateFirstLetter(RenderTreeMutationIsAllowed = RenderTreeMutationIsAllowed::Yes); 247 248 void getFirstLetter(RenderObject*& firstLetter, RenderElement*& firstLetterContainer, RenderObject* skipObject = nullptr); 248 249 -
releases/WebKitGTK/webkit-2.14/Source/WebCore/rendering/RenderListItem.cpp
r207984 r207985 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()) -
releases/WebKitGTK/webkit-2.14/Source/WebCore/rendering/RenderRubyRun.cpp
r203660 r207985 102 102 } 103 103 104 void RenderRubyRun::updateFirstLetter( )104 void RenderRubyRun::updateFirstLetter(RenderTreeMutationIsAllowed) 105 105 { 106 106 } -
releases/WebKitGTK/webkit-2.14/Source/WebCore/rendering/RenderRubyRun.h
r203660 r207985 61 61 62 62 RenderBlock* firstLineBlock() const override; 63 void updateFirstLetter( ) override;63 void updateFirstLetter(RenderTreeMutationIsAllowed = RenderTreeMutationIsAllowed::Yes) override; 64 64 65 65 void getOverhang(bool firstLine, RenderObject* startRenderer, RenderObject* endRenderer, float& startOverhang, float& endOverhang) const; -
releases/WebKitGTK/webkit-2.14/Source/WebCore/rendering/RenderTable.cpp
r203708 r207985 1459 1459 } 1460 1460 1461 void RenderTable::updateFirstLetter( )1461 void RenderTable::updateFirstLetter(RenderTreeMutationIsAllowed) 1462 1462 { 1463 1463 } -
releases/WebKitGTK/webkit-2.14/Source/WebCore/rendering/RenderTable.h
r203708 r207985 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; -
releases/WebKitGTK/webkit-2.14/Source/WebCore/rendering/svg/RenderSVGText.cpp
r201635 r207985 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 } -
releases/WebKitGTK/webkit-2.14/Source/WebCore/rendering/svg/RenderSVGText.h
r201704 r207985 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.