RESOLVED FIXED 183273
[RenderTreeBuilder] Move styleDidChange mutation logic to RenderTreeUpdater
https://bugs.webkit.org/show_bug.cgi?id=183273
Summary [RenderTreeBuilder] Move styleDidChange mutation logic to RenderTreeUpdater
alan
Reported 2018-03-01 21:19:50 PST
ssia.
Attachments
Patch (8.97 KB, patch)
2018-03-01 21:23 PST, alan
no flags
Archive of layout-test-results from ews114 for mac-sierra (3.01 MB, application/zip)
2018-03-01 22:54 PST, EWS Watchlist
no flags
Patch (10.97 KB, patch)
2018-03-02 10:30 PST, alan
no flags
Patch (10.91 KB, patch)
2018-03-02 10:38 PST, alan
no flags
Patch (13.04 KB, patch)
2018-03-03 07:32 PST, alan
no flags
Radar WebKit Bug Importer
Comment 1 2018-03-01 21:20:12 PST
alan
Comment 2 2018-03-01 21:23:34 PST
EWS Watchlist
Comment 3 2018-03-01 22:54:45 PST
Comment on attachment 334877 [details] Patch Attachment 334877 [details] did not pass mac-debug-ews (mac): Output: http://webkit-queues.webkit.org/results/6729312 New failing tests: fullscreen/full-screen-fixed-pos-parent.html
EWS Watchlist
Comment 4 2018-03-01 22:54:46 PST
Created attachment 334879 [details] Archive of layout-test-results from ews114 for mac-sierra The attached test failures were seen while running run-webkit-tests on the mac-debug-ews. Bot: ews114 Port: mac-sierra Platform: Mac OS X 10.12.6
alan
Comment 5 2018-03-02 10:30:16 PST
alan
Comment 6 2018-03-02 10:38:50 PST
Antti Koivisto
Comment 7 2018-03-03 02:46:39 PST
Comment on attachment 334907 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=334907&action=review > Source/WebCore/rendering/updating/RenderTreeUpdater.cpp:341 > + auto& parent = *renderer.parent(); > + bool isFloating = renderer.style().isFloating(); > + bool isOutOfFlowPositioned = renderer.style().hasOutOfFlowPosition(); > + bool startsAffectingParent = false; > + bool noLongerAffectsParent = false; > + > + if (is<RenderBlock>(parent)) > + noLongerAffectsParent = (!wasFloating && isFloating) || (!wasOufOfFlowPositioned && isOutOfFlowPositioned); > + > + if (is<RenderBlockFlow>(parent) || is<RenderInline>(parent)) { > + startsAffectingParent = (wasFloating || wasOufOfFlowPositioned) && !isFloating && !isOutOfFlowPositioned; > + ASSERT(!startsAffectingParent || !noLongerAffectsParent); > + } > + > + if (startsAffectingParent) { > + // We have gone from not affecting the inline status of the parent flow to suddenly > + // having an impact. See if there is a mismatch between the parent flow's > + // childrenInline() state and our state. > + renderer.setInline(renderer.style().isDisplayInlineType()); > + if (renderer.isInline() != renderer.parent()->childrenInline()) > + m_builder.childFlowStateChangesAndAffectsParentBlock(renderer); > + return; > + } > + > + if (noLongerAffectsParent) { > + m_builder.childFlowStateChangesAndNoLongerAffectsParentBlock(renderer); > + > + if (is<RenderBlockFlow>(renderer)) { > + // Fresh floats need to be reparented if they actually belong to the previous anonymous block. > + // It copies the logic of RenderBlock::addChildIgnoringContinuation > + if (isFloating && renderer.previousSibling() && renderer.previousSibling()->isAnonymousBlock()) > + m_builder.move(downcast<RenderBoxModelObject>(parent), downcast<RenderBoxModelObject>(*renderer.previousSibling()), renderer, RenderTreeBuilder::NormalizeAfterInsertion::No); > + } > + } > +} Maybe this stuff could go to the Builder as mutateTreeAfterStyleChange() or something?
alan
Comment 8 2018-03-03 07:32:51 PST
WebKit Commit Bot
Comment 9 2018-03-03 12:13:47 PST
Comment on attachment 334957 [details] Patch Clearing flags on attachment: 334957 Committed r229200: <https://trac.webkit.org/changeset/229200>
WebKit Commit Bot
Comment 10 2018-03-03 12:13:48 PST
All reviewed patches have been landed. Closing bug.
Note You need to log in before you can comment on or make changes to this bug.