New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 762098 link

Starred by 2 users

Issue metadata

Status: Fixed
Owner:
Last visit > 30 days ago
Closed: Sep 13
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 1
Type: Task

Blocking:
issue 471333
issue 836886
issue 836890



Sign in to add a comment

[Blink/BGPT] Implement sticky position in Blink transform tree

Project Member Reported by pdr@chromium.org, Sep 5 2017

Issue description

Slimming paint v2 does not currently understand position: sticky. This task involves:
1) Adding position:sticky information to the blink property tree builder.
2) Plumbing this data to cc's property trees.
3) Ensuring this works in the composited and non-composited codepaths.
 
Cc: chrishtr@google.com pdr@chromium.org
Labels: -Pri-2 Pri-1
Owner: trchen@chromium.org
Status: Started (was: Available)
Summary: [Blink/BGPT] Implement sticky position in Blink transform tree (was: Implement sticky position in slimming paint v2)
We will need this earlier to support composited sticky position layer in BGPT.
Blocking: 836890
Cc: smcgruer@chromium.org yigu@chromium.org
I'll start working on it right now unless someone already started. (cc'ing people who worked in this area)
The plan of record, as discussed today:

1. Compute the Blink equivalent of cc::StickyPositionNodeData in paint_property_tree_builder.cc.
2. Store it on the paint offset transform node for the composited layer of
the object with sticky constraints which ends up composited.
3. Copy the blink version to the cc version in PAC.
Cc: bokan@chromium.org
I found some sticky logic in Document::EnsurePaintLocationDataValidForNode. I think we may need to run the lifecycle past prepaint in more cases to ensure sticky is up-to-date.
I think we will be fine. The family of LayoutObject::MapToVisualRectInAncestorSpace() doesn't use property tree anyway.
My implementation strategy will leave StickyPositionScrollingConstraints computation to CompositingInputsUpdate, so the family of MapToVisualRectInAncestorSpace() can still refer to it as long as it is past CompositingInputsClean.

The other family that are based on GeometryMapper will need PrePaintClean, but that is already the case whether sticky is involved or not.
FYI: MapToVisualRectInAncestorSpace does use property trees if you specify
kGeometryMapper.
Blocking: 836886
Project Member

Comment 9 by bugdroid1@chromium.org, Sep 12

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/8661a7c51be77ca3e6a154e7fbade0b799eb6d9f

commit 8661a7c51be77ca3e6a154e7fbade0b799eb6d9f
Author: Tien-Ren Chen <trchen@chromium.org>
Date: Wed Sep 12 02:30:35 2018

[Blink/BGPT+SPv2] Implement sticky position as transform node

This CL extracts sticky offset from paint offset and apply it as a
transform node instead.

BUG= 762098 , 838018 , 877196 

Cq-Include-Trybots: luci.chromium.try:linux-blink-gen-property-trees;luci.chromium.try:linux_layout_tests_slimming_paint_v2;master.tryserver.blink:linux_trusty_blink_rel
Change-Id: I6706f09e26ca4549f58500e45153970edfcedc28
Reviewed-on: https://chromium-review.googlesource.com/1208449
Commit-Queue: Tien-Ren Chen <trchen@chromium.org>
Reviewed-by: Philip Rogers <pdr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#590578}
[modify] https://crrev.com/8661a7c51be77ca3e6a154e7fbade0b799eb6d9f/third_party/WebKit/LayoutTests/FlagExpectations/enable-blink-gen-property-trees
[modify] https://crrev.com/8661a7c51be77ca3e6a154e7fbade0b799eb6d9f/third_party/WebKit/LayoutTests/FlagExpectations/enable-slimming-paint-v2
[add] https://crrev.com/8661a7c51be77ca3e6a154e7fbade0b799eb6d9f/third_party/WebKit/LayoutTests/fast/css/sticky/sticky-normal-scroller-expected.html
[add] https://crrev.com/8661a7c51be77ca3e6a154e7fbade0b799eb6d9f/third_party/WebKit/LayoutTests/fast/css/sticky/sticky-normal-scroller.html
[add] https://crrev.com/8661a7c51be77ca3e6a154e7fbade0b799eb6d9f/third_party/WebKit/LayoutTests/fast/css/sticky/sticky-overflow-hidden-expected.html
[add] https://crrev.com/8661a7c51be77ca3e6a154e7fbade0b799eb6d9f/third_party/WebKit/LayoutTests/fast/css/sticky/sticky-overflow-hidden.html
[modify] https://crrev.com/8661a7c51be77ca3e6a154e7fbade0b799eb6d9f/third_party/blink/renderer/core/paint/compositing/composited_layer_mapping.cc
[modify] https://crrev.com/8661a7c51be77ca3e6a154e7fbade0b799eb6d9f/third_party/blink/renderer/core/paint/compositing/compositing_layer_property_updater.cc
[modify] https://crrev.com/8661a7c51be77ca3e6a154e7fbade0b799eb6d9f/third_party/blink/renderer/core/paint/object_paint_properties.h
[modify] https://crrev.com/8661a7c51be77ca3e6a154e7fbade0b799eb6d9f/third_party/blink/renderer/core/paint/paint_and_raster_invalidation_test.cc
[modify] https://crrev.com/8661a7c51be77ca3e6a154e7fbade0b799eb6d9f/third_party/blink/renderer/core/paint/paint_layer_scrollable_area.cc
[modify] https://crrev.com/8661a7c51be77ca3e6a154e7fbade0b799eb6d9f/third_party/blink/renderer/core/paint/paint_property_tree_builder.cc
[modify] https://crrev.com/8661a7c51be77ca3e6a154e7fbade0b799eb6d9f/third_party/blink/renderer/core/paint/paint_property_tree_builder_test.cc
[modify] https://crrev.com/8661a7c51be77ca3e6a154e7fbade0b799eb6d9f/third_party/blink/renderer/platform/graphics/compositing/property_tree_manager.cc
[modify] https://crrev.com/8661a7c51be77ca3e6a154e7fbade0b799eb6d9f/third_party/blink/renderer/platform/graphics/compositor_element_id.cc
[modify] https://crrev.com/8661a7c51be77ca3e6a154e7fbade0b799eb6d9f/third_party/blink/renderer/platform/graphics/compositor_element_id.h
[modify] https://crrev.com/8661a7c51be77ca3e6a154e7fbade0b799eb6d9f/third_party/blink/renderer/platform/graphics/paint/transform_paint_property_node.h

Status: Fixed (was: Started)

Sign in to add a comment