Remove all dependence on code in layout/compositing. 1. Don't do the compositing update step in FrameView::updateLifecyclePhasesInternal. 2. Define a new "layer tree" format suitable for SPv2 that replaces the one in GraphicsLayer.
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/9ed93e1cc02c566bed3569ab29f1252d6c209727 commit 9ed93e1cc02c566bed3569ab29f1252d6c209727 Author: chrishtr <chrishtr@chromium.org> Date: Sat Sep 17 01:01:17 2016 Turn off the old compositing path for SPv2. Instead, put a PaintController on the root FrameView and paint into it with the "classic" non-composited path. BUG= 646188 CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 Review-Url: https://codereview.chromium.org/2322073006 Cr-Commit-Position: refs/heads/master@{#419354} [modify] https://crrev.com/9ed93e1cc02c566bed3569ab29f1252d6c209727/third_party/WebKit/LayoutTests/FlagExpectations/enable-slimming-paint-v2 [modify] https://crrev.com/9ed93e1cc02c566bed3569ab29f1252d6c209727/third_party/WebKit/Source/core/animation/DocumentAnimations.cpp [modify] https://crrev.com/9ed93e1cc02c566bed3569ab29f1252d6c209727/third_party/WebKit/Source/core/animation/DocumentAnimations.h [modify] https://crrev.com/9ed93e1cc02c566bed3569ab29f1252d6c209727/third_party/WebKit/Source/core/dom/DocumentLifecycle.cpp [modify] https://crrev.com/9ed93e1cc02c566bed3569ab29f1252d6c209727/third_party/WebKit/Source/core/frame/FrameView.cpp [modify] https://crrev.com/9ed93e1cc02c566bed3569ab29f1252d6c209727/third_party/WebKit/Source/core/frame/FrameView.h [modify] https://crrev.com/9ed93e1cc02c566bed3569ab29f1252d6c209727/third_party/WebKit/Source/core/layout/compositing/PaintLayerCompositor.cpp [modify] https://crrev.com/9ed93e1cc02c566bed3569ab29f1252d6c209727/third_party/WebKit/Source/core/page/scrolling/ScrollingCoordinator.cpp [modify] https://crrev.com/9ed93e1cc02c566bed3569ab29f1252d6c209727/third_party/WebKit/Source/core/paint/FramePainter.cpp [modify] https://crrev.com/9ed93e1cc02c566bed3569ab29f1252d6c209727/third_party/WebKit/Source/core/paint/PaintControllerPaintTest.cpp [modify] https://crrev.com/9ed93e1cc02c566bed3569ab29f1252d6c209727/third_party/WebKit/Source/core/paint/PaintControllerPaintTest.h [modify] https://crrev.com/9ed93e1cc02c566bed3569ab29f1252d6c209727/third_party/WebKit/Source/core/paint/PaintLayer.cpp [modify] https://crrev.com/9ed93e1cc02c566bed3569ab29f1252d6c209727/third_party/WebKit/Source/core/paint/PaintLayerPainterTest.cpp [modify] https://crrev.com/9ed93e1cc02c566bed3569ab29f1252d6c209727/third_party/WebKit/Source/core/paint/PaintPropertyTreePrinter.cpp [modify] https://crrev.com/9ed93e1cc02c566bed3569ab29f1252d6c209727/third_party/WebKit/Source/core/paint/PaintPropertyTreePrinter.h [modify] https://crrev.com/9ed93e1cc02c566bed3569ab29f1252d6c209727/third_party/WebKit/Source/platform/graphics/compositing/PaintArtifactCompositor.cpp
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/7e410b319bf81341e65a280be187996b8cab97c7 commit 7e410b319bf81341e65a280be187996b8cab97c7 Author: chrishtr <chrishtr@chromium.org> Date: Sat Sep 17 23:20:49 2016 Refactor the way PaintArtifactCompositor is attached and used. The new way is simpler and uses the same pattern as PaintLayerCompositor. BUG= 646188 CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 Review-Url: https://codereview.chromium.org/2342103002 Cr-Commit-Position: refs/heads/master@{#419389} [modify] https://crrev.com/7e410b319bf81341e65a280be187996b8cab97c7/third_party/WebKit/Source/core/frame/FrameView.cpp [modify] https://crrev.com/7e410b319bf81341e65a280be187996b8cab97c7/third_party/WebKit/Source/core/frame/FrameView.h [modify] https://crrev.com/7e410b319bf81341e65a280be187996b8cab97c7/third_party/WebKit/Source/core/frame/FrameViewTest.cpp [modify] https://crrev.com/7e410b319bf81341e65a280be187996b8cab97c7/third_party/WebKit/Source/core/loader/EmptyClients.h [modify] https://crrev.com/7e410b319bf81341e65a280be187996b8cab97c7/third_party/WebKit/Source/core/page/ChromeClient.h [modify] https://crrev.com/7e410b319bf81341e65a280be187996b8cab97c7/third_party/WebKit/Source/core/paint/StubChromeClientForSPv2.h [modify] https://crrev.com/7e410b319bf81341e65a280be187996b8cab97c7/third_party/WebKit/Source/platform/graphics/compositing/PaintArtifactCompositor.h [modify] https://crrev.com/7e410b319bf81341e65a280be187996b8cab97c7/third_party/WebKit/Source/platform/graphics/compositing/PaintArtifactCompositorTest.cpp [modify] https://crrev.com/7e410b319bf81341e65a280be187996b8cab97c7/third_party/WebKit/Source/web/BUILD.gn [modify] https://crrev.com/7e410b319bf81341e65a280be187996b8cab97c7/third_party/WebKit/Source/web/ChromeClientImpl.cpp [modify] https://crrev.com/7e410b319bf81341e65a280be187996b8cab97c7/third_party/WebKit/Source/web/ChromeClientImpl.h [modify] https://crrev.com/7e410b319bf81341e65a280be187996b8cab97c7/third_party/WebKit/Source/web/WebFrameWidgetBase.h [modify] https://crrev.com/7e410b319bf81341e65a280be187996b8cab97c7/third_party/WebKit/Source/web/WebFrameWidgetImpl.cpp [modify] https://crrev.com/7e410b319bf81341e65a280be187996b8cab97c7/third_party/WebKit/Source/web/WebFrameWidgetImpl.h [modify] https://crrev.com/7e410b319bf81341e65a280be187996b8cab97c7/third_party/WebKit/Source/web/WebViewFrameWidget.cpp [modify] https://crrev.com/7e410b319bf81341e65a280be187996b8cab97c7/third_party/WebKit/Source/web/WebViewFrameWidget.h [modify] https://crrev.com/7e410b319bf81341e65a280be187996b8cab97c7/third_party/WebKit/Source/web/WebViewImpl.cpp [modify] https://crrev.com/7e410b319bf81341e65a280be187996b8cab97c7/third_party/WebKit/Source/web/WebViewImpl.h [delete] https://crrev.com/5c1f36dce5382b5461570efea3917b54e9125a0a/third_party/WebKit/Source/web/WebViewImplPaintArtifactCompositorTest.cpp
https://docs.google.com/document/d/1mbqlHai7-hiNeSzK9B5LaRFTvSMDjKtSeqjnk8ws3Jg/edit
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/cce865745dd419cdbbdd9ba6c1e8e8669c91518b commit cce865745dd419cdbbdd9ba6c1e8e8669c91518b Author: chrishtr <chrishtr@chromium.org> Date: Wed Nov 30 17:21:34 2016 Fix descendant-dependent PaintLayer flags update to not early-out when dirty. Previously, the iteration over children would early-out if any of them had visible content or visible child content. This is incorrect, because other children might still have dirty bits that need to be cleared. Fixing this allows us to remove the force-recompute hammer added in https://codereview.chromium.org/455963002 and adjusted in https://codereview.chromium.org/1149303002 to add a dirty bit to avoid walking the entire PaintLayer tree on every frame. BUG= 646188 CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 Review-Url: https://codereview.chromium.org/2540043002 Cr-Commit-Position: refs/heads/master@{#435307} [modify] https://crrev.com/cce865745dd419cdbbdd9ba6c1e8e8669c91518b/third_party/WebKit/Source/core/layout/compositing/PaintLayerCompositor.cpp [modify] https://crrev.com/cce865745dd419cdbbdd9ba6c1e8e8669c91518b/third_party/WebKit/Source/core/layout/compositing/PaintLayerCompositor.h [modify] https://crrev.com/cce865745dd419cdbbdd9ba6c1e8e8669c91518b/third_party/WebKit/Source/core/paint/PaintLayer.cpp
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/6bbd055d68a54c04c41e87814d0d0be323a09ad0 commit 6bbd055d68a54c04c41e87814d0d0be323a09ad0 Author: chrishtr <chrishtr@chromium.org> Date: Fri Dec 02 22:12:17 2016 Generalize visible descendant dirty bits to prepare for more properties. This will allow for a subsequent patch to move other descendant-dependent properties into the same tree walk. Also remove several redundant calls to update descendant-dependent flags (it should happen in exactly one tree walk per lifecycle update) and avoid reading stale state in potentiallyDirtyVisibleContentStatus. BUG= 646188 CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 Review-Url: https://codereview.chromium.org/2543913002 Cr-Commit-Position: refs/heads/master@{#436045} [modify] https://crrev.com/6bbd055d68a54c04c41e87814d0d0be323a09ad0/third_party/WebKit/LayoutTests/FlagExpectations/enable-slimming-paint-v2 [modify] https://crrev.com/6bbd055d68a54c04c41e87814d0d0be323a09ad0/third_party/WebKit/LayoutTests/compositing/contents-opaque/hidden-with-visible-text-expected.txt [modify] https://crrev.com/6bbd055d68a54c04c41e87814d0d0be323a09ad0/third_party/WebKit/LayoutTests/compositing/contents-opaque/hidden-with-visible-text.html [modify] https://crrev.com/6bbd055d68a54c04c41e87814d0d0be323a09ad0/third_party/WebKit/Source/core/frame/FrameView.cpp [modify] https://crrev.com/6bbd055d68a54c04c41e87814d0d0be323a09ad0/third_party/WebKit/Source/core/layout/LayoutObject.cpp [modify] https://crrev.com/6bbd055d68a54c04c41e87814d0d0be323a09ad0/third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.cpp [modify] https://crrev.com/6bbd055d68a54c04c41e87814d0d0be323a09ad0/third_party/WebKit/Source/core/paint/PaintLayer.cpp [modify] https://crrev.com/6bbd055d68a54c04c41e87814d0d0be323a09ad0/third_party/WebKit/Source/core/paint/PaintLayer.h
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/7c6d99f9312312984af26dfb466c04bdf02afc68 commit 7c6d99f9312312984af26dfb466c04bdf02afc68 Author: chrishtr <chrishtr@chromium.org> Date: Fri Dec 02 22:42:12 2016 Move all descendant-dependent flags into the same tree walk. BUG= 646188 CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 Review-Url: https://codereview.chromium.org/2545683002 Cr-Commit-Position: refs/heads/master@{#436060} [modify] https://crrev.com/7c6d99f9312312984af26dfb466c04bdf02afc68/third_party/WebKit/Source/core/layout/compositing/CompositingInputsUpdater.cpp [modify] https://crrev.com/7c6d99f9312312984af26dfb466c04bdf02afc68/third_party/WebKit/Source/core/paint/PaintLayer.cpp [modify] https://crrev.com/7c6d99f9312312984af26dfb466c04bdf02afc68/third_party/WebKit/Source/core/paint/PaintLayer.h [modify] https://crrev.com/7c6d99f9312312984af26dfb466c04bdf02afc68/third_party/WebKit/Source/core/paint/PaintLayerTest.cpp
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/1cf98b57647fa75d2aa18a94ba2128f1dc770386 commit 1cf98b57647fa75d2aa18a94ba2128f1dc770386 Author: chrishtr <chrishtr@chromium.org> Date: Wed Dec 07 20:46:37 2016 Implement PaintLayer::scrollsWithViewport for SPv2. Also removes a call to ScrollingCoordinator::updateAfterCompositingChangeIfNeeded that is SPv2-incompatible, and add force lifecycle updates for two cases of querying scrolling state via web editingselection APIs. BUG= 646188 CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 Review-Url: https://codereview.chromium.org/2549353002 Cr-Commit-Position: refs/heads/master@{#437051} [modify] https://crrev.com/1cf98b57647fa75d2aa18a94ba2128f1dc770386/third_party/WebKit/LayoutTests/FlagExpectations/enable-slimming-paint-v2 [modify] https://crrev.com/1cf98b57647fa75d2aa18a94ba2128f1dc770386/third_party/WebKit/Source/core/frame/FrameView.cpp [modify] https://crrev.com/1cf98b57647fa75d2aa18a94ba2128f1dc770386/third_party/WebKit/Source/core/layout/LayoutBox.cpp [modify] https://crrev.com/1cf98b57647fa75d2aa18a94ba2128f1dc770386/third_party/WebKit/Source/core/layout/compositing/CompositingReasonFinder.cpp [modify] https://crrev.com/1cf98b57647fa75d2aa18a94ba2128f1dc770386/third_party/WebKit/Source/core/page/AutoscrollController.cpp [modify] https://crrev.com/1cf98b57647fa75d2aa18a94ba2128f1dc770386/third_party/WebKit/Source/core/page/scrolling/ScrollingCoordinator.cpp [modify] https://crrev.com/1cf98b57647fa75d2aa18a94ba2128f1dc770386/third_party/WebKit/Source/core/paint/ObjectPaintProperties.cpp [modify] https://crrev.com/1cf98b57647fa75d2aa18a94ba2128f1dc770386/third_party/WebKit/Source/core/paint/PaintLayer.cpp [modify] https://crrev.com/1cf98b57647fa75d2aa18a94ba2128f1dc770386/third_party/WebKit/Source/core/paint/PaintLayer.h [modify] https://crrev.com/1cf98b57647fa75d2aa18a94ba2128f1dc770386/third_party/WebKit/Source/core/paint/PaintLayerTest.cpp
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/d4485c145cfb09160c216e6792a995b133cbc3c3 commit d4485c145cfb09160c216e6792a995b133cbc3c3 Author: chrishtr <chrishtr@chromium.org> Date: Fri Dec 09 22:11:42 2016 Move sticky position constraints update to the pre-paint tree walk. As part of this, also moved computation of PaintLayer::ancestorScrollingLayer, because that is required for sticky position constraint updates. BUG= 646188 CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 Review-Url: https://codereview.chromium.org/2561693002 Cr-Commit-Position: refs/heads/master@{#437671} [modify] https://crrev.com/d4485c145cfb09160c216e6792a995b133cbc3c3/third_party/WebKit/LayoutTests/FlagExpectations/enable-slimming-paint-v2 [modify] https://crrev.com/d4485c145cfb09160c216e6792a995b133cbc3c3/third_party/WebKit/Source/core/frame/FrameView.cpp [modify] https://crrev.com/d4485c145cfb09160c216e6792a995b133cbc3c3/third_party/WebKit/Source/core/layout/compositing/CompositingInputsUpdater.cpp [modify] https://crrev.com/d4485c145cfb09160c216e6792a995b133cbc3c3/third_party/WebKit/Source/core/paint/PaintLayer.cpp [modify] https://crrev.com/d4485c145cfb09160c216e6792a995b133cbc3c3/third_party/WebKit/Source/core/paint/PrePaintTreeWalk.cpp
Comment 1 by bugdroid1@chromium.org
, Sep 17 2016