New issue
Advanced search Search tips

Issue 646188 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Dec 2016
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 2
Type: Bug

Blocking:
issue 471333



Sign in to add a comment

Clean up compositing parts of the SPv2 document lifecycle

Project Member Reported by chrishtr@chromium.org, Sep 12 2016

Issue description

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.
 
Project Member

Comment 1 by bugdroid1@chromium.org, Sep 17 2016

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

Project Member

Comment 2 by bugdroid1@chromium.org, Sep 17 2016

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

Project Member

Comment 4 by bugdroid1@chromium.org, Nov 30 2016

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

Project Member

Comment 5 by bugdroid1@chromium.org, Dec 2 2016

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

Project Member

Comment 7 by bugdroid1@chromium.org, Dec 7 2016

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

Status: Fixed (was: Assigned)
Project Member

Comment 9 by bugdroid1@chromium.org, Dec 9 2016

Sign in to add a comment