Implement Overscroll Effects on Non-root Scrollers [chromium/src : main]

0 views
Skip to first unread message

Free Debreuil (Gerrit)

unread,
Oct 28, 2025, 10:25:06 AMOct 28
to Robert Flack, Peter Beverloo, AyeAye, AI Code Reviewer, Chromium LUCI CQ, chromium...@chromium.org, alexmo...@chromium.org, permissio...@chromium.org, jmedle...@chromium.org, lizeb+watch...@chromium.org, ios-revie...@chromium.org, devtools...@chromium.org, navigation...@chromium.org, creis...@chromium.org, chrome-waff...@google.com, browser-comp...@chromium.org, ios-r...@chromium.org, network-ser...@chromium.org, marq+...@chromium.org, blink-...@chromium.org, cc-...@chromium.org, kinuko...@chromium.org
Attention needed from Robert Flack

Free Debreuil added 1 comment

Patchset-level comments
File-level comment, Patchset 31 (Latest):
Free Debreuil . resolved

PTAL :) I think some changes will be needed, but sending out a first pass for feedback.

Open in Gerrit

Related details

Attention is currently required from:
  • Robert Flack
Submit Requirements:
  • requirement satisfiedCode-Coverage
  • requirement is not satisfiedCode-Owners
  • requirement is not satisfiedCode-Review
  • requirement is not satisfiedNo-Unresolved-Comments
  • requirement is not satisfiedReview-Enforcement
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: chromium/src
Gerrit-Branch: main
Gerrit-Change-Id: I54e268e193ec4f023344888c5b2f13a2839dd6de
Gerrit-Change-Number: 7050219
Gerrit-PatchSet: 31
Gerrit-Owner: Free Debreuil <freede...@google.com>
Gerrit-Reviewer: Free Debreuil <freede...@google.com>
Gerrit-Reviewer: Robert Flack <fla...@chromium.org>
Gerrit-CC: AI Code Reviewer <peep-gen...@system.gserviceaccount.com>
Gerrit-CC: Peter Beverloo <pe...@chromium.org>
Gerrit-Attention: Robert Flack <fla...@chromium.org>
Gerrit-Comment-Date: Tue, 28 Oct 2025 14:24:58 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
satisfied_requirement
unsatisfied_requirement
open
diffy

Free Debreuil (Gerrit)

unread,
Oct 29, 2025, 4:39:31 PMOct 29
to Robert Flack, Peter Beverloo, AyeAye, AI Code Reviewer, Chromium LUCI CQ, chromium...@chromium.org, alexmo...@chromium.org, permissio...@chromium.org, jmedle...@chromium.org, lizeb+watch...@chromium.org, ios-revie...@chromium.org, devtools...@chromium.org, navigation...@chromium.org, creis...@chromium.org, chrome-waff...@google.com, browser-comp...@chromium.org, ios-r...@chromium.org, network-ser...@chromium.org, marq+...@chromium.org, blink-...@chromium.org, cc-...@chromium.org, kinuko...@chromium.org
Attention needed from Robert Flack

Free Debreuil added 2 comments

File third_party/blink/renderer/platform/widget/input/elastic_overscroll_controller.h
Line 64, Patchset 1: void ObserveScrollUpdate(cc::ElementId element_id,
AI Code Reviewer . resolved

Blink Style Guide: Naming - May leave obvious parameter names out of function declarations. The parameter name `element_id` can be omitted from the function declaration in the header file as its type `cc::ElementId` makes its purpose clear. Please consider applying this to other modified function declarations in this file where applicable.

_To keep this interaction as brief and non-intrusive as possible, please consider responding with one of following options:
**Done** | **Won't fix**: reason | **b/<bug_id>** | **Invalid:** reason

This comment was generated by [Experimental Blink C++ Code Review Agent](http://go/blink-c++-code-review-agent).AI reviews can sometimes be inaccurate; We appreciate your 🙏 feedback 🙏 to help us improve.[File a bug](http://go/blink-c++-code-review-agent-feedback) | [Provide feedback on chat](https://chat.google.com/room/AAQA0zhQHe0?cls=4) | [Opt-out](https://ganpati2.corp.google.com/group/peep-genai-blink-agent-optout.prod)_

Free Debreuil

Done

File third_party/blink/renderer/platform/widget/input/input_handler_proxy.h
Line 269, Patchset 1: // Returns the ElementId of the currently latched scroller, or invalid id.
AI Code Reviewer . resolved

nit: Blink Style Guide: Naming - Precede setters with the word “Set”; use bare words for getters. This getter could be named `LatchedScrollerElementId()`.

_To keep this interaction as brief and non-intrusive as possible, please consider responding with one of following options:
**Done** | **Won't fix**: reason | **b/<bug_id>** | **Invalid:** reason

This comment was generated by [Experimental Blink C++ Code Review Agent](http://go/blink-c++-code-review-agent).AI reviews can sometimes be inaccurate; We appreciate your 🙏 feedback 🙏 to help us improve.[File a bug](http://go/blink-c++-code-review-agent-feedback) | [Provide feedback on chat](https://chat.google.com/room/AAQA0zhQHe0?cls=4) | [Opt-out](https://ganpati2.corp.google.com/group/peep-genai-blink-agent-optout.prod)_

Free Debreuil

Done

Open in Gerrit

Related details

Attention is currently required from:
  • Robert Flack
Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement is not satisfiedCode-Owners
    • requirement is not satisfiedCode-Review
    • requirement is not satisfiedReview-Enforcement
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: comment
    Gerrit-Project: chromium/src
    Gerrit-Branch: main
    Gerrit-Change-Id: I54e268e193ec4f023344888c5b2f13a2839dd6de
    Gerrit-Change-Number: 7050219
    Gerrit-PatchSet: 34
    Gerrit-Owner: Free Debreuil <freede...@google.com>
    Gerrit-Reviewer: Free Debreuil <freede...@google.com>
    Gerrit-Reviewer: Robert Flack <fla...@chromium.org>
    Gerrit-CC: AI Code Reviewer <peep-gen...@system.gserviceaccount.com>
    Gerrit-CC: Peter Beverloo <pe...@chromium.org>
    Gerrit-Attention: Robert Flack <fla...@chromium.org>
    Gerrit-Comment-Date: Wed, 29 Oct 2025 20:39:25 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    Comment-In-Reply-To: AI Code Reviewer <peep-gen...@system.gserviceaccount.com>
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Robert Flack (Gerrit)

    unread,
    Oct 30, 2025, 1:39:43 PMOct 30
    to Free Debreuil, Peter Beverloo, AyeAye, AI Code Reviewer, Chromium LUCI CQ, chromium...@chromium.org, alexmo...@chromium.org, permissio...@chromium.org, jmedle...@chromium.org, lizeb+watch...@chromium.org, ios-revie...@chromium.org, devtools...@chromium.org, navigation...@chromium.org, creis...@chromium.org, chrome-waff...@google.com, browser-comp...@chromium.org, ios-r...@chromium.org, network-ser...@chromium.org, marq+...@chromium.org, blink-...@chromium.org, cc-...@chromium.org, kinuko...@chromium.org
    Attention needed from Free Debreuil

    Robert Flack added 8 comments

    File cc/input/scroll_elasticity_helper.cc
    Line 92, Patchset 37: if (!is_root && !scroll_node->is_composited) {
    Robert Flack . unresolved

    Add a comment here explaining why.

    Line 109, Patchset 37: auto& elastic_overscroll = host_impl_->active_tree()
    Robert Flack . unresolved

    Can you include the type here instead of using auto so that the reader doesn't have to check what type elastic_overscroll() returns to know what structure it is or what operations are valid on it?

    It's a bit of a fuzzy area when using auto is good or bad but general guidlines are at https://google.github.io/styleguide/cppguide.html#Type_deduction

    Line 144, Patchset 37: if (!is_root && !scroll_node->is_composited) {
    Robert Flack . unresolved

    If the goal is to never stretch a non-composited scroller, then i think you don't need to handle it on line 92, and could convert that to a CHECK. You also need to make sure to clear out any elastic overscrolls on scrollers which become non-composited during a commit in the ScrollTree::operator=.

    File cc/layers/layer_impl.cc
    Line 957, Patchset 37: layer_tree_impl()->OverscrollElasticityTransformNode()) {
    Robert Flack . unresolved

    I have a few concerns with simply trying to undo the local content scale. Is this a problem with root elastic overscroll today?

    If not, is this something we could do in a followup patch to make sure we get the details right?

    If it is, could we move this fix to an earlier patch to the rest of this change?

    There was a prior attempt to avoid rerastering in https://issues.chromium.org/40228454 . In particular, I think we rely on ignoring subtle changes to transform nodes where screen_space_transform_is_animating is true as we don't trigger updates to the raster scale unless we are significantly off.

    File cc/trees/draw_property_utils.cc
    Line 1505, Patchset 37: DirtyTransformForElasticOverscroll(id, layer_tree_impl, property_trees);
    Robert Flack . unresolved

    Rather than iterating over the maps at draw time, we should set the appropriate bits when the elastic overscroll is changed (e.g. when calling ScrollTree::SetElasticOverscroll). This should result in much less book keeping - e.g. we won't have to keep the previous values around.

    File third_party/blink/renderer/platform/widget/input/elastic_overscroll_controller.cc
    Line 125, Patchset 37: // Find an active entry that is actually overscrolled and finish that one.
    Robert Flack . unresolved

    This is concerning. How do we get into this state and can we do this earlier when we have the correct id?

    Line 180, Patchset 37: ObserveScrollUpdate(element_id, event_delta,
    Robert Flack . unresolved

    In this and many other cases we're doing repeated lookups in the entry map for the element. Could we make these methods take an entry instead of an element id?

    Line 388, Patchset 37: helper_->SetStretchAmount(element_id, new_stretch_amount);
    Robert Flack . unresolved

    I think it would be cleaner to set is_animating = true here rather than doing a second pass through the list after.

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Free Debreuil
    Submit Requirements:
      • requirement satisfiedCode-Coverage
      • requirement is not satisfiedCode-Owners
      • requirement is not satisfiedCode-Review
      • requirement is not satisfiedNo-Unresolved-Comments
      • requirement is not satisfiedReview-Enforcement
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: comment
      Gerrit-Project: chromium/src
      Gerrit-Branch: main
      Gerrit-Change-Id: I54e268e193ec4f023344888c5b2f13a2839dd6de
      Gerrit-Change-Number: 7050219
      Gerrit-PatchSet: 37
      Gerrit-Owner: Free Debreuil <freede...@google.com>
      Gerrit-Reviewer: Free Debreuil <freede...@google.com>
      Gerrit-Reviewer: Robert Flack <fla...@chromium.org>
      Gerrit-CC: AI Code Reviewer <peep-gen...@system.gserviceaccount.com>
      Gerrit-CC: Peter Beverloo <pe...@chromium.org>
      Gerrit-Attention: Free Debreuil <freede...@google.com>
      Gerrit-Comment-Date: Thu, 30 Oct 2025 17:39:32 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Free Debreuil (Gerrit)

      unread,
      Oct 30, 2025, 3:41:52 PMOct 30
      to Robert Flack, Peter Beverloo, AyeAye, AI Code Reviewer, Chromium LUCI CQ, chromium...@chromium.org, alexmo...@chromium.org, permissio...@chromium.org, jmedle...@chromium.org, lizeb+watch...@chromium.org, ios-revie...@chromium.org, devtools...@chromium.org, navigation...@chromium.org, creis...@chromium.org, chrome-waff...@google.com, browser-comp...@chromium.org, ios-r...@chromium.org, network-ser...@chromium.org, marq+...@chromium.org, blink-...@chromium.org, cc-...@chromium.org, kinuko...@chromium.org
      Attention needed from Robert Flack

      Free Debreuil added 1 comment

      File cc/trees/draw_property_utils.cc
      Line 1505, Patchset 37: DirtyTransformForElasticOverscroll(id, layer_tree_impl, property_trees);
      Robert Flack . unresolved

      Rather than iterating over the maps at draw time, we should set the appropriate bits when the elastic overscroll is changed (e.g. when calling ScrollTree::SetElasticOverscroll). This should result in much less book keeping - e.g. we won't have to keep the previous values around.

      Free Debreuil

      Nice, yes that significantly simplifies it. The most recent patch set has this change. We have to be careful to re-apply the overscroll values to the transform when promoting the pending tree to active. (I have added this)

      Please let me know if there are any other cases I am not considering.

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Robert Flack
      Submit Requirements:
      • requirement satisfiedCode-Coverage
      • requirement is not satisfiedCode-Owners
      • requirement is not satisfiedCode-Review
      • requirement is not satisfiedNo-Unresolved-Comments
      • requirement is not satisfiedReview-Enforcement
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: comment
      Gerrit-Project: chromium/src
      Gerrit-Branch: main
      Gerrit-Change-Id: I54e268e193ec4f023344888c5b2f13a2839dd6de
      Gerrit-Change-Number: 7050219
      Gerrit-PatchSet: 38
      Gerrit-Owner: Free Debreuil <freede...@google.com>
      Gerrit-Reviewer: Free Debreuil <freede...@google.com>
      Gerrit-Reviewer: Robert Flack <fla...@chromium.org>
      Gerrit-CC: AI Code Reviewer <peep-gen...@system.gserviceaccount.com>
      Gerrit-CC: Peter Beverloo <pe...@chromium.org>
      Gerrit-Attention: Robert Flack <fla...@chromium.org>
      Gerrit-Comment-Date: Thu, 30 Oct 2025 19:41:46 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      Comment-In-Reply-To: Robert Flack <fla...@chromium.org>
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Free Debreuil (Gerrit)

      unread,
      Oct 30, 2025, 4:58:28 PMOct 30
      to Robert Flack, Peter Beverloo, AyeAye, AI Code Reviewer, Chromium LUCI CQ, chromium...@chromium.org, alexmo...@chromium.org, permissio...@chromium.org, jmedle...@chromium.org, lizeb+watch...@chromium.org, ios-revie...@chromium.org, devtools...@chromium.org, navigation...@chromium.org, creis...@chromium.org, chrome-waff...@google.com, browser-comp...@chromium.org, ios-r...@chromium.org, network-ser...@chromium.org, marq+...@chromium.org, blink-...@chromium.org, cc-...@chromium.org, kinuko...@chromium.org
      Attention needed from Robert Flack

      Free Debreuil added 1 comment

      File cc/layers/layer_impl.cc
      Line 957, Patchset 37: layer_tree_impl()->OverscrollElasticityTransformNode()) {
      Robert Flack . unresolved

      I have a few concerns with simply trying to undo the local content scale. Is this a problem with root elastic overscroll today?

      If not, is this something we could do in a followup patch to make sure we get the details right?

      If it is, could we move this fix to an earlier patch to the rest of this change?

      There was a prior attempt to avoid rerastering in https://issues.chromium.org/40228454 . In particular, I think we rely on ignoring subtle changes to transform nodes where screen_space_transform_is_animating is true as we don't trigger updates to the raster scale unless we are significantly off.

      Free Debreuil

      Yes - I am looking into this now! On main within the `PictureLayerImpl` the tiles seem to be created once, then the `cc::Tile::raster_transform` limits the maximum scaling. Looking into that area - and will compare with my version to find root cause of difference. Thanks 😊

      Gerrit-Comment-Date: Thu, 30 Oct 2025 20:58:21 +0000
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Free Debreuil (Gerrit)

      unread,
      Nov 4, 2025, 10:21:34 AM (11 days ago) Nov 4
      to Robert Flack, Peter Beverloo, AyeAye, AI Code Reviewer, Chromium LUCI CQ, chromium...@chromium.org, alexmo...@chromium.org, permissio...@chromium.org, jmedle...@chromium.org, lizeb+watch...@chromium.org, ios-revie...@chromium.org, devtools...@chromium.org, navigation...@chromium.org, creis...@chromium.org, chrome-waff...@google.com, browser-comp...@chromium.org, ios-r...@chromium.org, network-ser...@chromium.org, marq+...@chromium.org, blink-...@chromium.org, cc-...@chromium.org, kinuko...@chromium.org
      Attention needed from Robert Flack

      Free Debreuil added 8 comments

      Free Debreuil . resolved

      PTAL :)

      File cc/input/scroll_elasticity_helper.cc
      Line 92, Patchset 37: if (!is_root && !scroll_node->is_composited) {
      Robert Flack . resolved

      Add a comment here explaining why.

      Free Debreuil

      added comment.

      Line 109, Patchset 37: auto& elastic_overscroll = host_impl_->active_tree()
      Robert Flack . resolved

      Can you include the type here instead of using auto so that the reader doesn't have to check what type elastic_overscroll() returns to know what structure it is or what operations are valid on it?

      It's a bit of a fuzzy area when using auto is good or bad but general guidlines are at https://google.github.io/styleguide/cppguide.html#Type_deduction

      Free Debreuil

      Updated with explicit type, thanks for the reference!

      Line 144, Patchset 37: if (!is_root && !scroll_node->is_composited) {
      Robert Flack . resolved

      If the goal is to never stretch a non-composited scroller, then i think you don't need to handle it on line 92, and could convert that to a CHECK. You also need to make sure to clear out any elastic overscrolls on scrollers which become non-composited during a commit in the ScrollTree::operator=.

      Free Debreuil

      updated.

      File cc/layers/layer_impl.cc
      Line 957, Patchset 37: layer_tree_impl()->OverscrollElasticityTransformNode()) {
      Robert Flack . resolved

      I have a few concerns with simply trying to undo the local content scale. Is this a problem with root elastic overscroll today?

      If not, is this something we could do in a followup patch to make sure we get the details right?

      If it is, could we move this fix to an earlier patch to the rest of this change?

      There was a prior attempt to avoid rerastering in https://issues.chromium.org/40228454 . In particular, I think we rely on ignoring subtle changes to transform nodes where screen_space_transform_is_animating is true as we don't trigger updates to the raster scale unless we are significantly off.

      Free Debreuil

      Yes - I am looking into this now! On main within the `PictureLayerImpl` the tiles seem to be created once, then the `cc::Tile::raster_transform` limits the maximum scaling. Looking into that area - and will compare with my version to find root cause of difference. Thanks 😊

      Free Debreuil

      Resolved by setting `transform_node->has_potential_animation` to true when the animation of the node with elastic overscroll starts.

      Possibly there is an edge case here. I added a TODO, but could also look into before submitting.
      ```
      // TODO (crbug.com/41102897): Look into potential edge case where clearing
      // this on a transform with an animation could result in this value being
      // cleared to false un-intentionally. This would only be an issue for
      // non-root scrollers.
      ```
      File cc/trees/draw_property_utils.cc
      Line 1505, Patchset 37: DirtyTransformForElasticOverscroll(id, layer_tree_impl, property_trees);
      Robert Flack . resolved

      Rather than iterating over the maps at draw time, we should set the appropriate bits when the elastic overscroll is changed (e.g. when calling ScrollTree::SetElasticOverscroll). This should result in much less book keeping - e.g. we won't have to keep the previous values around.

      Free Debreuil

      Nice, yes that significantly simplifies it. The most recent patch set has this change. We have to be careful to re-apply the overscroll values to the transform when promoting the pending tree to active. (I have added this)

      Please let me know if there are any other cases I am not considering.

      Free Debreuil

      Marked as resolved.

      File third_party/blink/renderer/platform/widget/input/elastic_overscroll_controller.cc
      Line 180, Patchset 37: ObserveScrollUpdate(element_id, event_delta,
      Robert Flack . unresolved

      In this and many other cases we're doing repeated lookups in the entry map for the element. Could we make these methods take an entry instead of an element id?

      Free Debreuil

      Looking through the methods in this class, most use cases require both the `ElementId` and `OverscrollEntry`. To cleanly pass in just the entry, I think we would need to store the `ElementId` on the `OverscrollEntry`.

      It might be straightforward to convert the storage of the `OverscrollEntries` from a `base::flat_map` to a `base::flat_set` and add a custom equality / comparator that allows lookup based on `ElementId` instead of `OverscrollEntry`?

      Line 388, Patchset 37: helper_->SetStretchAmount(element_id, new_stretch_amount);
      Robert Flack . resolved

      I think it would be cleaner to set is_animating = true here rather than doing a second pass through the list after.

      Free Debreuil

      Updated thanks!

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Robert Flack
      Submit Requirements:
      • requirement satisfiedCode-Coverage
      • requirement is not satisfiedCode-Owners
      • requirement is not satisfiedCode-Review
      • requirement is not satisfiedNo-Unresolved-Comments
      • requirement is not satisfiedReview-Enforcement
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: comment
      Gerrit-Project: chromium/src
      Gerrit-Branch: main
      Gerrit-Change-Id: I54e268e193ec4f023344888c5b2f13a2839dd6de
      Gerrit-Change-Number: 7050219
      Gerrit-PatchSet: 47
      Gerrit-Owner: Free Debreuil <freede...@google.com>
      Gerrit-Reviewer: Free Debreuil <freede...@google.com>
      Gerrit-Reviewer: Robert Flack <fla...@chromium.org>
      Gerrit-CC: AI Code Reviewer <peep-gen...@system.gserviceaccount.com>
      Gerrit-CC: Peter Beverloo <pe...@chromium.org>
      Gerrit-Attention: Robert Flack <fla...@chromium.org>
      Gerrit-Comment-Date: Tue, 04 Nov 2025 15:21:28 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      Comment-In-Reply-To: Free Debreuil <freede...@google.com>
      Comment-In-Reply-To: Robert Flack <fla...@chromium.org>
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Robert Flack (Gerrit)

      unread,
      Nov 4, 2025, 3:17:18 PM (10 days ago) Nov 4
      to Free Debreuil, Peter Beverloo, AyeAye, AI Code Reviewer, Chromium LUCI CQ, chromium...@chromium.org, alexmo...@chromium.org, permissio...@chromium.org, jmedle...@chromium.org, lizeb+watch...@chromium.org, ios-revie...@chromium.org, devtools...@chromium.org, navigation...@chromium.org, creis...@chromium.org, chrome-waff...@google.com, browser-comp...@chromium.org, ios-r...@chromium.org, network-ser...@chromium.org, marq+...@chromium.org, blink-...@chromium.org, cc-...@chromium.org, kinuko...@chromium.org
      Attention needed from Free Debreuil

      Robert Flack added 2 comments

      File third_party/blink/renderer/platform/widget/input/elastic_overscroll_controller.cc
      Line 125, Patchset 37: // Find an active entry that is actually overscrolled and finish that one.
      Robert Flack . unresolved

      This is concerning. How do we get into this state and can we do this earlier when we have the correct id?

      Robert Flack

      Any thoughts on this fallback code? Do you have a repro case? Can we detect when the element id goes away and do the cleanup then?

      Line 180, Patchset 37: ObserveScrollUpdate(element_id, event_delta,
      Robert Flack . unresolved

      In this and many other cases we're doing repeated lookups in the entry map for the element. Could we make these methods take an entry instead of an element id?

      Free Debreuil

      Looking through the methods in this class, most use cases require both the `ElementId` and `OverscrollEntry`. To cleanly pass in just the entry, I think we would need to store the `ElementId` on the `OverscrollEntry`.

      It might be straightforward to convert the storage of the `OverscrollEntries` from a `base::flat_map` to a `base::flat_set` and add a custom equality / comparator that allows lookup based on `ElementId` instead of `OverscrollEntry`?

      Robert Flack

      In the short term I wouldn't worry about having the ElementId as both the key and in the stored member. It's true this could just be a flat_set but we could always do this as a followup or alternately you could pass both the element id and the entry through.

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Free Debreuil
      Submit Requirements:
      • requirement satisfiedCode-Coverage
      • requirement is not satisfiedCode-Owners
      • requirement is not satisfiedCode-Review
      • requirement is not satisfiedNo-Unresolved-Comments
      • requirement is not satisfiedReview-Enforcement
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: comment
      Gerrit-Project: chromium/src
      Gerrit-Branch: main
      Gerrit-Change-Id: I54e268e193ec4f023344888c5b2f13a2839dd6de
      Gerrit-Change-Number: 7050219
      Gerrit-PatchSet: 47
      Gerrit-Owner: Free Debreuil <freede...@google.com>
      Gerrit-Reviewer: Free Debreuil <freede...@google.com>
      Gerrit-Reviewer: Robert Flack <fla...@chromium.org>
      Gerrit-CC: AI Code Reviewer <peep-gen...@system.gserviceaccount.com>
      Gerrit-CC: Peter Beverloo <pe...@chromium.org>
      Gerrit-Attention: Free Debreuil <freede...@google.com>
      Gerrit-Comment-Date: Tue, 04 Nov 2025 20:17:13 +0000
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Free Debreuil (Gerrit)

      unread,
      Nov 4, 2025, 3:25:25 PM (10 days ago) Nov 4
      to Robert Flack, Peter Beverloo, AyeAye, AI Code Reviewer, Chromium LUCI CQ, chromium...@chromium.org, alexmo...@chromium.org, permissio...@chromium.org, jmedle...@chromium.org, lizeb+watch...@chromium.org, ios-revie...@chromium.org, devtools...@chromium.org, navigation...@chromium.org, creis...@chromium.org, chrome-waff...@google.com, browser-comp...@chromium.org, ios-r...@chromium.org, network-ser...@chromium.org, marq+...@chromium.org, blink-...@chromium.org, cc-...@chromium.org, kinuko...@chromium.org
      Attention needed from Robert Flack

      Free Debreuil added 1 comment

      File third_party/blink/renderer/platform/widget/input/elastic_overscroll_controller.cc
      Line 125, Patchset 37: // Find an active entry that is actually overscrolled and finish that one.
      Robert Flack . unresolved

      This is concerning. How do we get into this state and can we do this earlier when we have the correct id?

      Robert Flack

      Any thoughts on this fallback code? Do you have a repro case? Can we detect when the element id goes away and do the cleanup then?

      Free Debreuil

      I am looking into this one currently - I can repro in Chrome by scrolling multiple times in different scrollers w/ overscroll - possibly it would be good to make a test that simulates this as well.

      From what I can tell so far, in `InputHandlerProxy` during the gesture lifecycle (`HandleGestureScrollBegin`, `Update`, etc..) the `CurrentlyScrollingNode` (from the `ScrollTree`) seems to be being cleared - which results in the issue. I'm looking into exactly what is clearing it now : )

      We could possibly detect during the `HandleGestureScrollUpdate` if the `CurrentlyScrollingNode` is cleared - and do something then if needed.

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Robert Flack
      Submit Requirements:
      • requirement satisfiedCode-Coverage
      • requirement is not satisfiedCode-Owners
      • requirement is not satisfiedCode-Review
      • requirement is not satisfiedNo-Unresolved-Comments
      • requirement is not satisfiedReview-Enforcement
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: comment
      Gerrit-Project: chromium/src
      Gerrit-Branch: main
      Gerrit-Change-Id: I54e268e193ec4f023344888c5b2f13a2839dd6de
      Gerrit-Change-Number: 7050219
      Gerrit-PatchSet: 47
      Gerrit-Owner: Free Debreuil <freede...@google.com>
      Gerrit-Reviewer: Free Debreuil <freede...@google.com>
      Gerrit-Reviewer: Robert Flack <fla...@chromium.org>
      Gerrit-CC: AI Code Reviewer <peep-gen...@system.gserviceaccount.com>
      Gerrit-CC: Peter Beverloo <pe...@chromium.org>
      Gerrit-Attention: Robert Flack <fla...@chromium.org>
      Gerrit-Comment-Date: Tue, 04 Nov 2025 20:25:20 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      Comment-In-Reply-To: Robert Flack <fla...@chromium.org>
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Robert Flack (Gerrit)

      unread,
      Nov 5, 2025, 4:04:36 PM (9 days ago) Nov 5
      to Free Debreuil, Peter Beverloo, AyeAye, AI Code Reviewer, Chromium LUCI CQ, chromium...@chromium.org, alexmo...@chromium.org, permissio...@chromium.org, jmedle...@chromium.org, lizeb+watch...@chromium.org, ios-revie...@chromium.org, devtools...@chromium.org, navigation...@chromium.org, creis...@chromium.org, chrome-waff...@google.com, browser-comp...@chromium.org, ios-r...@chromium.org, network-ser...@chromium.org, marq+...@chromium.org, blink-...@chromium.org, cc-...@chromium.org, kinuko...@chromium.org
      Attention needed from Free Debreuil

      Robert Flack added 1 comment

      File third_party/blink/renderer/platform/widget/input/elastic_overscroll_controller.cc
      Line 125, Patchset 37: // Find an active entry that is actually overscrolled and finish that one.
      Robert Flack . unresolved

      This is concerning. How do we get into this state and can we do this earlier when we have the correct id?

      Robert Flack

      Any thoughts on this fallback code? Do you have a repro case? Can we detect when the element id goes away and do the cleanup then?

      Free Debreuil

      I am looking into this one currently - I can repro in Chrome by scrolling multiple times in different scrollers w/ overscroll - possibly it would be good to make a test that simulates this as well.

      From what I can tell so far, in `InputHandlerProxy` during the gesture lifecycle (`HandleGestureScrollBegin`, `Update`, etc..) the `CurrentlyScrollingNode` (from the `ScrollTree`) seems to be being cleared - which results in the issue. I'm looking into exactly what is clearing it now : )

      We could possibly detect during the `HandleGestureScrollUpdate` if the `CurrentlyScrollingNode` is cleared - and do something then if needed.

      Robert Flack

      Yeah that would be what I would expect, that if we clear the currently scrolling node then we effectively "end" the user scrolling on that node.

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Free Debreuil
      Submit Requirements:
      • requirement satisfiedCode-Coverage
      • requirement is not satisfiedCode-Owners
      • requirement is not satisfiedCode-Review
      • requirement is not satisfiedNo-Unresolved-Comments
      • requirement is not satisfiedReview-Enforcement
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: comment
      Gerrit-Project: chromium/src
      Gerrit-Branch: main
      Gerrit-Change-Id: I54e268e193ec4f023344888c5b2f13a2839dd6de
      Gerrit-Change-Number: 7050219
      Gerrit-PatchSet: 47
      Gerrit-Owner: Free Debreuil <freede...@google.com>
      Gerrit-Reviewer: Free Debreuil <freede...@google.com>
      Gerrit-Reviewer: Robert Flack <fla...@chromium.org>
      Gerrit-CC: AI Code Reviewer <peep-gen...@system.gserviceaccount.com>
      Gerrit-CC: Peter Beverloo <pe...@chromium.org>
      Gerrit-Attention: Free Debreuil <freede...@google.com>
      Gerrit-Comment-Date: Wed, 05 Nov 2025 21:04:25 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Free Debreuil (Gerrit)

      unread,
      Nov 7, 2025, 11:08:21 AM (8 days ago) Nov 7
      to Robert Flack, Peter Beverloo, AyeAye, AI Code Reviewer, Chromium LUCI CQ, chromium...@chromium.org, alexmo...@chromium.org, permissio...@chromium.org, jmedle...@chromium.org, lizeb+watch...@chromium.org, ios-revie...@chromium.org, devtools...@chromium.org, navigation...@chromium.org, creis...@chromium.org, chrome-waff...@google.com, browser-comp...@chromium.org, ios-r...@chromium.org, network-ser...@chromium.org, marq+...@chromium.org, blink-...@chromium.org, cc-...@chromium.org, kinuko...@chromium.org
      Attention needed from Robert Flack

      Free Debreuil added 1 comment

      File third_party/blink/renderer/platform/widget/input/elastic_overscroll_controller.cc
      Line 125, Patchset 37: // Find an active entry that is actually overscrolled and finish that one.
      Robert Flack . resolved

      This is concerning. How do we get into this state and can we do this earlier when we have the correct id?

      Robert Flack

      Any thoughts on this fallback code? Do you have a repro case? Can we detect when the element id goes away and do the cleanup then?

      Free Debreuil

      I am looking into this one currently - I can repro in Chrome by scrolling multiple times in different scrollers w/ overscroll - possibly it would be good to make a test that simulates this as well.

      From what I can tell so far, in `InputHandlerProxy` during the gesture lifecycle (`HandleGestureScrollBegin`, `Update`, etc..) the `CurrentlyScrollingNode` (from the `ScrollTree`) seems to be being cleared - which results in the issue. I'm looking into exactly what is clearing it now : )

      We could possibly detect during the `HandleGestureScrollUpdate` if the `CurrentlyScrollingNode` is cleared - and do something then if needed.

      Robert Flack

      Yeah that would be what I would expect, that if we clear the currently scrolling node then we effectively "end" the user scrolling on that node.

      Free Debreuil

      Looking into this more, it was being caused by a call to `InputHandler::ElasticOverscrollAnimationFinished` from a scroller that already had finished it's GSB GSU GSE lifecycle. This was not an issue before, as only a single (root) scroller could animate at once.

      I just piped through the `ElementId` of the overscroll animation that is finishing, and filter calling `InputHandler::ScrollEnd` if that id matches the `CurrentlyScrollingNode()`.

      The "fallback" has been removed, it is just a straight `CHECK` now.

      Please let me know if there's any issues with this approach.

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Robert Flack
      Submit Requirements:
      • requirement satisfiedCode-Coverage
      • requirement is not satisfiedCode-Owners
      • requirement is not satisfiedCode-Review
      • requirement is not satisfiedNo-Unresolved-Comments
      • requirement is not satisfiedReview-Enforcement
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: comment
      Gerrit-Project: chromium/src
      Gerrit-Branch: main
      Gerrit-Change-Id: I54e268e193ec4f023344888c5b2f13a2839dd6de
      Gerrit-Change-Number: 7050219
      Gerrit-PatchSet: 50
      Gerrit-Owner: Free Debreuil <freede...@google.com>
      Gerrit-Reviewer: Free Debreuil <freede...@google.com>
      Gerrit-Reviewer: Robert Flack <fla...@chromium.org>
      Gerrit-CC: AI Code Reviewer <peep-gen...@system.gserviceaccount.com>
      Gerrit-CC: Peter Beverloo <pe...@chromium.org>
      Gerrit-Attention: Robert Flack <fla...@chromium.org>
      Gerrit-Comment-Date: Fri, 07 Nov 2025 16:05:28 +0000
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Free Debreuil (Gerrit)

      unread,
      Nov 7, 2025, 11:42:00 AM (7 days ago) Nov 7
      to Robert Flack, Peter Beverloo, AyeAye, AI Code Reviewer, Chromium LUCI CQ, chromium...@chromium.org, alexmo...@chromium.org, permissio...@chromium.org, jmedle...@chromium.org, lizeb+watch...@chromium.org, ios-revie...@chromium.org, devtools...@chromium.org, navigation...@chromium.org, creis...@chromium.org, chrome-waff...@google.com, browser-comp...@chromium.org, ios-r...@chromium.org, network-ser...@chromium.org, marq+...@chromium.org, blink-...@chromium.org, cc-...@chromium.org, kinuko...@chromium.org
      Attention needed from Robert Flack

      Free Debreuil voted and added 1 comment

      Votes added by Free Debreuil

      Commit-Queue+1

      1 comment

      File third_party/blink/renderer/platform/widget/input/elastic_overscroll_controller.cc
      Line 180, Patchset 37: ObserveScrollUpdate(element_id, event_delta,
      Robert Flack . resolved

      In this and many other cases we're doing repeated lookups in the entry map for the element. Could we make these methods take an entry instead of an element id?

      Free Debreuil

      Looking through the methods in this class, most use cases require both the `ElementId` and `OverscrollEntry`. To cleanly pass in just the entry, I think we would need to store the `ElementId` on the `OverscrollEntry`.

      It might be straightforward to convert the storage of the `OverscrollEntries` from a `base::flat_map` to a `base::flat_set` and add a custom equality / comparator that allows lookup based on `ElementId` instead of `OverscrollEntry`?

      Robert Flack

      In the short term I wouldn't worry about having the ElementId as both the key and in the stored member. It's true this could just be a flat_set but we could always do this as a followup or alternately you could pass both the element id and the entry through.

      Free Debreuil

      I have updated the `OverscrollEntry` to store the `ElementId` of the target scroller, then pass just that into the relevant methods. Yes, we could do the `flat_set` or related optimization in a follow up if needed.

      Please let me know if there are any additional issues. :)

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Robert Flack
      Submit Requirements:
        • requirement satisfiedCode-Coverage
        • requirement is not satisfiedCode-Owners
        • requirement is not satisfiedCode-Review
        • requirement is not satisfiedReview-Enforcement
        Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
        Gerrit-MessageType: comment
        Gerrit-Project: chromium/src
        Gerrit-Branch: main
        Gerrit-Change-Id: I54e268e193ec4f023344888c5b2f13a2839dd6de
        Gerrit-Change-Number: 7050219
        Gerrit-PatchSet: 53
        Gerrit-Owner: Free Debreuil <freede...@google.com>
        Gerrit-Reviewer: Free Debreuil <freede...@google.com>
        Gerrit-Reviewer: Robert Flack <fla...@chromium.org>
        Gerrit-CC: AI Code Reviewer <peep-gen...@system.gserviceaccount.com>
        Gerrit-CC: Peter Beverloo <pe...@chromium.org>
        Gerrit-Attention: Robert Flack <fla...@chromium.org>
        Gerrit-Comment-Date: Fri, 07 Nov 2025 16:41:53 +0000
        Gerrit-HasComments: Yes
        Gerrit-Has-Labels: Yes
        satisfied_requirement
        unsatisfied_requirement
        open
        diffy

        Free Debreuil (Gerrit)

        unread,
        Nov 10, 2025, 1:46:56 PM (4 days ago) Nov 10
        to Vladimir Levin, Robert Flack, Peter Beverloo, AyeAye, AI Code Reviewer, Chromium LUCI CQ, chromium...@chromium.org, alexmo...@chromium.org, permissio...@chromium.org, jmedle...@chromium.org, lizeb+watch...@chromium.org, ios-revie...@chromium.org, devtools...@chromium.org, navigation...@chromium.org, creis...@chromium.org, chrome-waff...@google.com, browser-comp...@chromium.org, ios-r...@chromium.org, network-ser...@chromium.org, marq+...@chromium.org, blink-...@chromium.org, cc-...@chromium.org, kinuko...@chromium.org
        Attention needed from Robert Flack and Vladimir Levin

        Free Debreuil added 1 comment

        Patchset-level comments
        File-level comment, Patchset 59 (Latest):
        Free Debreuil . resolved

        PTAL :) I have addressed feedback - please let me know if any additional changes are needed.

        Open in Gerrit

        Related details

        Attention is currently required from:
        • Robert Flack
        • Vladimir Levin
        Submit Requirements:
        • requirement satisfiedCode-Coverage
        • requirement is not satisfiedCode-Owners
        • requirement is not satisfiedCode-Review
        • requirement is not satisfiedReview-Enforcement
        Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
        Gerrit-MessageType: comment
        Gerrit-Project: chromium/src
        Gerrit-Branch: main
        Gerrit-Change-Id: I54e268e193ec4f023344888c5b2f13a2839dd6de
        Gerrit-Change-Number: 7050219
        Gerrit-PatchSet: 59
        Gerrit-Owner: Free Debreuil <freede...@google.com>
        Gerrit-Reviewer: Free Debreuil <freede...@google.com>
        Gerrit-Reviewer: Robert Flack <fla...@chromium.org>
        Gerrit-Reviewer: Vladimir Levin <vmp...@chromium.org>
        Gerrit-CC: AI Code Reviewer <peep-gen...@system.gserviceaccount.com>
        Gerrit-CC: Peter Beverloo <pe...@chromium.org>
        Gerrit-Attention: Robert Flack <fla...@chromium.org>
        Gerrit-Attention: Vladimir Levin <vmp...@chromium.org>
        Gerrit-Comment-Date: Mon, 10 Nov 2025 18:46:50 +0000
        Gerrit-HasComments: Yes
        Gerrit-Has-Labels: No
        satisfied_requirement
        unsatisfied_requirement
        open
        diffy

        Robert Flack (Gerrit)

        unread,
        Nov 10, 2025, 5:20:40 PM (4 days ago) Nov 10
        to Free Debreuil, Vladimir Levin, Peter Beverloo, AyeAye, AI Code Reviewer, Chromium LUCI CQ, chromium...@chromium.org, alexmo...@chromium.org, permissio...@chromium.org, jmedle...@chromium.org, lizeb+watch...@chromium.org, ios-revie...@chromium.org, devtools...@chromium.org, navigation...@chromium.org, creis...@chromium.org, chrome-waff...@google.com, browser-comp...@chromium.org, ios-r...@chromium.org, network-ser...@chromium.org, marq+...@chromium.org, blink-...@chromium.org, cc-...@chromium.org, kinuko...@chromium.org
        Attention needed from Free Debreuil and Vladimir Levin

        Robert Flack added 6 comments

        File cc/input/input_handler.cc
        Line 1380, Patchset 59 (Latest): if (const ScrollNode* current = CurrentlyScrollingNode()) {
        Robert Flack . unresolved

        nit: Switch this for an early return to reduce nesting here.

        Line 1393, Patchset 59 (Latest): if (execute_scroll_end && !IsAnimatingForSnap(current->element_id)) {
        Robert Flack . unresolved

        Does this mean that if you start scrolling another scroller before the elastic overscroll finishes we won't be executing scroll end for nested scrollers? Can this result in them not correctly snapping to a mandatory snap area? This seems like it will be a bug.

        File cc/input/scroll_elasticity_helper.cc
        Line 17, Patchset 59 (Latest):void ApplyStretchAmount(LayerTreeHostImpl& host_impl,
        Robert Flack . unresolved

        This method seems mis-named. It's not actually applying the stretch, just marking that the node needs an update.

        Line 30, Patchset 59 (Latest):#if BUILDFLAG(IS_ANDROID)
        Robert Flack . unresolved

        nit: It should be documented why we are doing this (i.e. that it prevents re-rastering based on the constantly updating transform), and why on Android only (i.e. because it is only on android where we have a stretch that affects the raster scale). That said, I think it should be perfectly safe to set this even when we aren't applying a scale given we are still animating the transform frame to frame.

        Line 31, Patchset 59 (Latest): transform_node->has_potential_animation = !stretch_amount.IsZero();
        Robert Flack . unresolved

        I also wouldn't be opposed

        Line 34, Patchset 59 (Latest): transform_node->SetTransformChanged(DamageReason::kUntracked);
        Robert Flack . unresolved

        This seems like it should be kCompositorScroll?

        Open in Gerrit

        Related details

        Attention is currently required from:
        • Free Debreuil
        • Vladimir Levin
        Submit Requirements:
          • requirement satisfiedCode-Coverage
          • requirement is not satisfiedCode-Owners
          • requirement is not satisfiedCode-Review
          • requirement is not satisfiedNo-Unresolved-Comments
          • requirement is not satisfiedReview-Enforcement
          Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
          Gerrit-MessageType: comment
          Gerrit-Project: chromium/src
          Gerrit-Branch: main
          Gerrit-Change-Id: I54e268e193ec4f023344888c5b2f13a2839dd6de
          Gerrit-Change-Number: 7050219
          Gerrit-PatchSet: 59
          Gerrit-Owner: Free Debreuil <freede...@google.com>
          Gerrit-Reviewer: Free Debreuil <freede...@google.com>
          Gerrit-Reviewer: Robert Flack <fla...@chromium.org>
          Gerrit-Reviewer: Vladimir Levin <vmp...@chromium.org>
          Gerrit-CC: AI Code Reviewer <peep-gen...@system.gserviceaccount.com>
          Gerrit-CC: Peter Beverloo <pe...@chromium.org>
          Gerrit-Attention: Free Debreuil <freede...@google.com>
          Gerrit-Attention: Vladimir Levin <vmp...@chromium.org>
          Gerrit-Comment-Date: Mon, 10 Nov 2025 22:20:31 +0000
          Gerrit-HasComments: Yes
          Gerrit-Has-Labels: No
          satisfied_requirement
          unsatisfied_requirement
          open
          diffy

          Robert Flack (Gerrit)

          unread,
          Nov 11, 2025, 5:09:27 PM (3 days ago) Nov 11
          to Free Debreuil, Vladimir Levin, Peter Beverloo, AyeAye, AI Code Reviewer, Chromium LUCI CQ, chromium...@chromium.org, alexmo...@chromium.org, permissio...@chromium.org, jmedle...@chromium.org, lizeb+watch...@chromium.org, ios-revie...@chromium.org, devtools...@chromium.org, navigation...@chromium.org, creis...@chromium.org, chrome-waff...@google.com, browser-comp...@chromium.org, ios-r...@chromium.org, network-ser...@chromium.org, marq+...@chromium.org, blink-...@chromium.org, cc-...@chromium.org, kinuko...@chromium.org
          Attention needed from Free Debreuil and Vladimir Levin

          Robert Flack added 1 comment

          File cc/input/scroll_elasticity_helper.cc
          Line 31, Patchset 59: transform_node->has_potential_animation = !stretch_amount.IsZero();
          Robert Flack . unresolved

          I also wouldn't be opposed

          Robert Flack

          Oops, what i meant to say here is i wouldn't be opposed to always setting this true. Though resetting it to false for zero stretch will ensure that we eventually raster at 1x in case the initial raster happened during a stretched moment somehow.

          Open in Gerrit

          Related details

          Attention is currently required from:
          • Free Debreuil
          • Vladimir Levin
          Submit Requirements:
          • requirement satisfiedCode-Coverage
          • requirement is not satisfiedCode-Owners
          • requirement is not satisfiedCode-Review
          • requirement is not satisfiedNo-Unresolved-Comments
          • requirement is not satisfiedReview-Enforcement
          Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
          Gerrit-MessageType: comment
          Gerrit-Project: chromium/src
          Gerrit-Branch: main
          Gerrit-Change-Id: I54e268e193ec4f023344888c5b2f13a2839dd6de
          Gerrit-Change-Number: 7050219
          Gerrit-PatchSet: 62
          Gerrit-Owner: Free Debreuil <freede...@google.com>
          Gerrit-Reviewer: Free Debreuil <freede...@google.com>
          Gerrit-Reviewer: Robert Flack <fla...@chromium.org>
          Gerrit-Reviewer: Vladimir Levin <vmp...@chromium.org>
          Gerrit-CC: AI Code Reviewer <peep-gen...@system.gserviceaccount.com>
          Gerrit-CC: Peter Beverloo <pe...@chromium.org>
          Gerrit-Attention: Free Debreuil <freede...@google.com>
          Gerrit-Attention: Vladimir Levin <vmp...@chromium.org>
          Gerrit-Comment-Date: Tue, 11 Nov 2025 22:09:17 +0000
          Gerrit-HasComments: Yes
          Gerrit-Has-Labels: No
          Comment-In-Reply-To: Robert Flack <fla...@chromium.org>
          satisfied_requirement
          unsatisfied_requirement
          open
          diffy

          Free Debreuil (Gerrit)

          unread,
          Nov 12, 2025, 12:52:36 PM (2 days ago) Nov 12
          to Vladimir Levin, Robert Flack, Peter Beverloo, AyeAye, AI Code Reviewer, Chromium LUCI CQ, chromium...@chromium.org, alexmo...@chromium.org, permissio...@chromium.org, jmedle...@chromium.org, lizeb+watch...@chromium.org, ios-revie...@chromium.org, devtools...@chromium.org, navigation...@chromium.org, creis...@chromium.org, chrome-waff...@google.com, browser-comp...@chromium.org, ios-r...@chromium.org, network-ser...@chromium.org, marq+...@chromium.org, blink-...@chromium.org, cc-...@chromium.org, kinuko...@chromium.org
          Attention needed from Robert Flack and Vladimir Levin

          Free Debreuil added 6 comments

          File cc/input/input_handler.cc
          Line 1380, Patchset 59: if (const ScrollNode* current = CurrentlyScrollingNode()) {
          Robert Flack . resolved

          nit: Switch this for an early return to reduce nesting here.

          Free Debreuil

          Marked as resolved.

          Line 1393, Patchset 59: if (execute_scroll_end && !IsAnimatingForSnap(current->element_id)) {
          Robert Flack . resolved

          Does this mean that if you start scrolling another scroller before the elastic overscroll finishes we won't be executing scroll end for nested scrollers? Can this result in them not correctly snapping to a mandatory snap area? This seems like it will be a bug.

          Free Debreuil

          Nice catch, yes this is an issue. I have added a test for this in `layer_tree_host_unittest_scroll.cc` called `LayerTreeHostScrollTestSnapAfterInterruptedOverscroll`. Have added a `flat_map` to track the deferred end values.

          File cc/input/scroll_elasticity_helper.cc
          Line 17, Patchset 59:void ApplyStretchAmount(LayerTreeHostImpl& host_impl,
          Robert Flack . resolved

          This method seems mis-named. It's not actually applying the stretch, just marking that the node needs an update.

          Free Debreuil

          Marked as resolved.

          Line 30, Patchset 59:#if BUILDFLAG(IS_ANDROID)
          Robert Flack . resolved

          nit: It should be documented why we are doing this (i.e. that it prevents re-rastering based on the constantly updating transform), and why on Android only (i.e. because it is only on android where we have a stretch that affects the raster scale). That said, I think it should be perfectly safe to set this even when we aren't applying a scale given we are still animating the transform frame to frame.

          Free Debreuil

          Resolved. I have kept it as an Android only path to minimize possible behaviour changes. No problem to update if needed.

          Line 31, Patchset 59: transform_node->has_potential_animation = !stretch_amount.IsZero();
          Robert Flack . resolved

          I also wouldn't be opposed

          Free Debreuil

          Nice, yes that should be relatively safe - likely better than having `has_potential_animation` turned off accidentally.

          I have set the root node case to set directly as a special case, as that is the current behaviour on main - and I think animations do not touch that directly?

          Thanks!

          Line 34, Patchset 59: transform_node->SetTransformChanged(DamageReason::kUntracked);
          Robert Flack . resolved

          This seems like it should be kCompositorScroll?

          Free Debreuil

          Have updated to use `kCompositorScroll`.

          For reference, in the original code path, it was setting to `DamageReason::kUntracked` on the non-Android path.
          https://source.chromium.org/chromium/chromium/src/+/main:cc/trees/draw_property_utils.cc;drc=747e8c8f36453eb7cf97a55f53a5937121365208;l=1531

          Open in Gerrit

          Related details

          Attention is currently required from:
          • Robert Flack
          • Vladimir Levin
          Submit Requirements:
            • requirement satisfiedCode-Coverage
            • requirement is not satisfiedCode-Owners
            • requirement is not satisfiedCode-Review
            • requirement is not satisfiedReview-Enforcement
            Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
            Gerrit-MessageType: comment
            Gerrit-Project: chromium/src
            Gerrit-Branch: main
            Gerrit-Change-Id: I54e268e193ec4f023344888c5b2f13a2839dd6de
            Gerrit-Change-Number: 7050219
            Gerrit-PatchSet: 62
            Gerrit-Owner: Free Debreuil <freede...@google.com>
            Gerrit-Reviewer: Free Debreuil <freede...@google.com>
            Gerrit-Reviewer: Robert Flack <fla...@chromium.org>
            Gerrit-Reviewer: Vladimir Levin <vmp...@chromium.org>
            Gerrit-CC: AI Code Reviewer <peep-gen...@system.gserviceaccount.com>
            Gerrit-CC: Peter Beverloo <pe...@chromium.org>
            Gerrit-Attention: Robert Flack <fla...@chromium.org>
            Gerrit-Attention: Vladimir Levin <vmp...@chromium.org>
            Gerrit-Comment-Date: Wed, 12 Nov 2025 17:52:28 +0000
            satisfied_requirement
            unsatisfied_requirement
            open
            diffy

            Free Debreuil (Gerrit)

            unread,
            Nov 13, 2025, 11:44:27 AM (yesterday) Nov 13
            to Vladimir Levin, Robert Flack, Peter Beverloo, AyeAye, AI Code Reviewer, Chromium LUCI CQ, chromium...@chromium.org, alexmo...@chromium.org, permissio...@chromium.org, jmedle...@chromium.org, lizeb+watch...@chromium.org, ios-revie...@chromium.org, devtools...@chromium.org, navigation...@chromium.org, creis...@chromium.org, chrome-waff...@google.com, browser-comp...@chromium.org, ios-r...@chromium.org, network-ser...@chromium.org, marq+...@chromium.org, blink-...@chromium.org, cc-...@chromium.org, kinuko...@chromium.org
            Attention needed from Robert Flack and Vladimir Levin

            Free Debreuil added 1 comment

            File cc/trees/layer_tree_host_unittest.cc
            Line 6178, Patchset 66 (Latest):class LayerTreeHostTestElasticOverscroll_ScaledAnimation
            Free Debreuil . resolved

            @vmp...@chromium.org I added a test that applies the overscroll effect to an animating scroller and ensures that re-tiling does not happen - which should ensure we do not get performance regressions for this case.

            Open in Gerrit

            Related details

            Attention is currently required from:
            • Robert Flack
            • Vladimir Levin
            Submit Requirements:
            • requirement satisfiedCode-Coverage
            • requirement is not satisfiedCode-Owners
            • requirement is not satisfiedCode-Review
            • requirement is not satisfiedReview-Enforcement
            Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
            Gerrit-MessageType: comment
            Gerrit-Project: chromium/src
            Gerrit-Branch: main
            Gerrit-Change-Id: I54e268e193ec4f023344888c5b2f13a2839dd6de
            Gerrit-Change-Number: 7050219
            Gerrit-PatchSet: 66
            Gerrit-Owner: Free Debreuil <freede...@google.com>
            Gerrit-Reviewer: Free Debreuil <freede...@google.com>
            Gerrit-Reviewer: Robert Flack <fla...@chromium.org>
            Gerrit-Reviewer: Vladimir Levin <vmp...@chromium.org>
            Gerrit-CC: AI Code Reviewer <peep-gen...@system.gserviceaccount.com>
            Gerrit-CC: Peter Beverloo <pe...@chromium.org>
            Gerrit-Attention: Robert Flack <fla...@chromium.org>
            Gerrit-Attention: Vladimir Levin <vmp...@chromium.org>
            Gerrit-Comment-Date: Thu, 13 Nov 2025 16:44:20 +0000
            Gerrit-HasComments: Yes
            Gerrit-Has-Labels: No
            satisfied_requirement
            unsatisfied_requirement
            open
            diffy

            Robert Flack (Gerrit)

            unread,
            Nov 13, 2025, 1:52:42 PM (yesterday) Nov 13
            to Free Debreuil, Vladimir Levin, Peter Beverloo, AyeAye, AI Code Reviewer, Chromium LUCI CQ, chromium...@chromium.org, alexmo...@chromium.org, permissio...@chromium.org, jmedle...@chromium.org, lizeb+watch...@chromium.org, ios-revie...@chromium.org, devtools...@chromium.org, navigation...@chromium.org, creis...@chromium.org, chrome-waff...@google.com, browser-comp...@chromium.org, ios-r...@chromium.org, network-ser...@chromium.org, marq+...@chromium.org, blink-...@chromium.org, cc-...@chromium.org, kinuko...@chromium.org
            Attention needed from Free Debreuil and Vladimir Levin

            Robert Flack added 2 comments

            File cc/input/scroll_elasticity_helper.cc
            Line 31, Patchset 59: transform_node->has_potential_animation = !stretch_amount.IsZero();
            Robert Flack . unresolved

            I also wouldn't be opposed

            Free Debreuil

            Nice, yes that should be relatively safe - likely better than having `has_potential_animation` turned off accidentally.

            I have set the root node case to set directly as a special case, as that is the current behaviour on main - and I think animations do not touch that directly?

            Thanks!

            Robert Flack

            Sorry to go back on this, I was just looking into the potential implications of this and it looks like this has non-local effects on descendants. E.g. if you look at screen_space_transform_is_animating, it will be true if any ancestor is animating transform. I think this means we should keep the conservative option of only setting it true when we have a non-zero stretch.

            Otherwise, we may keep non ideal raster scales in descendants where we didn't before.

            File third_party/blink/renderer/platform/widget/input/elastic_overscroll_controller.h
            Line 82, Patchset 67: struct OverscrollEntry {
            Robert Flack . unresolved

            nit: With this having virtual methods and overrides let's upgrade it to a class.

            Open in Gerrit

            Related details

            Attention is currently required from:
            • Free Debreuil
            • Vladimir Levin
            Submit Requirements:
              • requirement satisfiedCode-Coverage
              • requirement is not satisfiedCode-Owners
              • requirement is not satisfiedCode-Review
              • requirement is not satisfiedNo-Unresolved-Comments
              • requirement is not satisfiedReview-Enforcement
              Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
              Gerrit-MessageType: comment
              Gerrit-Project: chromium/src
              Gerrit-Branch: main
              Gerrit-Change-Id: I54e268e193ec4f023344888c5b2f13a2839dd6de
              Gerrit-Change-Number: 7050219
              Gerrit-PatchSet: 67
              Gerrit-Owner: Free Debreuil <freede...@google.com>
              Gerrit-Reviewer: Free Debreuil <freede...@google.com>
              Gerrit-Reviewer: Robert Flack <fla...@chromium.org>
              Gerrit-Reviewer: Vladimir Levin <vmp...@chromium.org>
              Gerrit-CC: AI Code Reviewer <peep-gen...@system.gserviceaccount.com>
              Gerrit-CC: Peter Beverloo <pe...@chromium.org>
              Gerrit-Attention: Free Debreuil <freede...@google.com>
              Gerrit-Attention: Vladimir Levin <vmp...@chromium.org>
              Gerrit-Comment-Date: Thu, 13 Nov 2025 18:52:33 +0000
              Gerrit-HasComments: Yes
              Gerrit-Has-Labels: No
              satisfied_requirement
              unsatisfied_requirement
              open
              diffy

              Free Debreuil (Gerrit)

              unread,
              Nov 13, 2025, 4:52:57 PM (yesterday) Nov 13
              to Vladimir Levin, Robert Flack, Peter Beverloo, AyeAye, AI Code Reviewer, Chromium LUCI CQ, chromium...@chromium.org, alexmo...@chromium.org, permissio...@chromium.org, jmedle...@chromium.org, lizeb+watch...@chromium.org, ios-revie...@chromium.org, devtools...@chromium.org, navigation...@chromium.org, creis...@chromium.org, chrome-waff...@google.com, browser-comp...@chromium.org, ios-r...@chromium.org, network-ser...@chromium.org, marq+...@chromium.org, blink-...@chromium.org, cc-...@chromium.org, kinuko...@chromium.org
              Attention needed from Robert Flack and Vladimir Levin

              Free Debreuil added 2 comments

              File cc/input/scroll_elasticity_helper.cc
              Line 31, Patchset 59: transform_node->has_potential_animation = !stretch_amount.IsZero();
              Robert Flack . resolved

              I also wouldn't be opposed

              Free Debreuil

              Nice, yes that should be relatively safe - likely better than having `has_potential_animation` turned off accidentally.

              I have set the root node case to set directly as a special case, as that is the current behaviour on main - and I think animations do not touch that directly?

              Thanks!

              Robert Flack

              Sorry to go back on this, I was just looking into the potential implications of this and it looks like this has non-local effects on descendants. E.g. if you look at screen_space_transform_is_animating, it will be true if any ancestor is animating transform. I think this means we should keep the conservative option of only setting it true when we have a non-zero stretch.

              Otherwise, we may keep non ideal raster scales in descendants where we didn't before.

              Free Debreuil

              Absolutely - updated! The original issue is tracked directly in a unit test with a TODO (`layer_tree_host_impl.cc`, `LayerTreeHostTestElasticOverscroll_ScaledAnimation`).

              File third_party/blink/renderer/platform/widget/input/elastic_overscroll_controller.h
              Line 82, Patchset 67: struct OverscrollEntry {
              Robert Flack . resolved

              nit: With this having virtual methods and overrides let's upgrade it to a class.

              Free Debreuil

              Updated - made fields public as there aren't invariants requiring protection. Happy to introduce getters/setters if preferred by the style guide.

              Open in Gerrit

              Related details

              Attention is currently required from:
              • Robert Flack
              • Vladimir Levin
              Submit Requirements:
                • requirement satisfiedCode-Coverage
                • requirement is not satisfiedCode-Owners
                • requirement is not satisfiedCode-Review
                • requirement is not satisfiedReview-Enforcement
                Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
                Gerrit-MessageType: comment
                Gerrit-Project: chromium/src
                Gerrit-Branch: main
                Gerrit-Change-Id: I54e268e193ec4f023344888c5b2f13a2839dd6de
                Gerrit-Change-Number: 7050219
                Gerrit-PatchSet: 71
                Gerrit-Owner: Free Debreuil <freede...@google.com>
                Gerrit-Reviewer: Free Debreuil <freede...@google.com>
                Gerrit-Reviewer: Robert Flack <fla...@chromium.org>
                Gerrit-Reviewer: Vladimir Levin <vmp...@chromium.org>
                Gerrit-CC: AI Code Reviewer <peep-gen...@system.gserviceaccount.com>
                Gerrit-CC: Peter Beverloo <pe...@chromium.org>
                Gerrit-Attention: Robert Flack <fla...@chromium.org>
                Gerrit-Attention: Vladimir Levin <vmp...@chromium.org>
                Gerrit-Comment-Date: Thu, 13 Nov 2025 21:52:50 +0000
                satisfied_requirement
                unsatisfied_requirement
                open
                diffy

                Vladimir Levin (Gerrit)

                unread,
                3:13 PM (8 hours ago) 3:13 PM
                to Free Debreuil, Robert Flack, Peter Beverloo, AyeAye, AI Code Reviewer, Chromium LUCI CQ, chromium...@chromium.org, alexmo...@chromium.org, permissio...@chromium.org, jmedle...@chromium.org, lizeb+watch...@chromium.org, ios-revie...@chromium.org, devtools...@chromium.org, navigation...@chromium.org, creis...@chromium.org, chrome-waff...@google.com, browser-comp...@chromium.org, ios-r...@chromium.org, network-ser...@chromium.org, marq+...@chromium.org, blink-...@chromium.org, cc-...@chromium.org, kinuko...@chromium.org
                Attention needed from Free Debreuil and Robert Flack

                Vladimir Levin voted

                Code-Review+1
                Commit-Queue+1
                Open in Gerrit

                Related details

                Attention is currently required from:
                • Free Debreuil
                • Robert Flack
                Submit Requirements:
                • requirement satisfiedCode-Coverage
                • requirement satisfiedCode-Owners
                • requirement is not satisfiedCode-Review
                • requirement satisfiedReview-Enforcement
                Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
                Gerrit-MessageType: comment
                Gerrit-Project: chromium/src
                Gerrit-Branch: main
                Gerrit-Change-Id: I54e268e193ec4f023344888c5b2f13a2839dd6de
                Gerrit-Change-Number: 7050219
                Gerrit-PatchSet: 73
                Gerrit-Owner: Free Debreuil <freede...@google.com>
                Gerrit-Reviewer: Free Debreuil <freede...@google.com>
                Gerrit-Reviewer: Robert Flack <fla...@chromium.org>
                Gerrit-Reviewer: Vladimir Levin <vmp...@chromium.org>
                Gerrit-CC: AI Code Reviewer <peep-gen...@system.gserviceaccount.com>
                Gerrit-CC: Peter Beverloo <pe...@chromium.org>
                Gerrit-Attention: Free Debreuil <freede...@google.com>
                Gerrit-Attention: Robert Flack <fla...@chromium.org>
                Gerrit-Comment-Date: Fri, 14 Nov 2025 20:12:51 +0000
                Gerrit-HasComments: No
                Gerrit-Has-Labels: Yes
                satisfied_requirement
                unsatisfied_requirement
                open
                diffy

                Robert Flack (Gerrit)

                unread,
                4:17 PM (7 hours ago) 4:17 PM
                to Free Debreuil, Vladimir Levin, Peter Beverloo, AyeAye, AI Code Reviewer, Chromium LUCI CQ, chromium...@chromium.org, alexmo...@chromium.org, permissio...@chromium.org, jmedle...@chromium.org, lizeb+watch...@chromium.org, ios-revie...@chromium.org, devtools...@chromium.org, navigation...@chromium.org, creis...@chromium.org, chrome-waff...@google.com, browser-comp...@chromium.org, ios-r...@chromium.org, network-ser...@chromium.org, marq+...@chromium.org, blink-...@chromium.org, cc-...@chromium.org, kinuko...@chromium.org
                Attention needed from Free Debreuil

                Robert Flack voted Code-Review+1

                Code-Review+1
                Open in Gerrit

                Related details

                Attention is currently required from:
                • Free Debreuil
                Submit Requirements:
                  • requirement satisfiedCode-Coverage
                  • requirement satisfiedCode-Owners
                  • requirement satisfiedCode-Review
                  • requirement satisfiedReview-Enforcement
                  Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
                  Gerrit-MessageType: comment
                  Gerrit-Project: chromium/src
                  Gerrit-Branch: main
                  Gerrit-Change-Id: I54e268e193ec4f023344888c5b2f13a2839dd6de
                  Gerrit-Change-Number: 7050219
                  Gerrit-PatchSet: 73
                  Gerrit-Owner: Free Debreuil <freede...@google.com>
                  Gerrit-Reviewer: Free Debreuil <freede...@google.com>
                  Gerrit-Reviewer: Robert Flack <fla...@chromium.org>
                  Gerrit-Reviewer: Vladimir Levin <vmp...@chromium.org>
                  Gerrit-CC: AI Code Reviewer <peep-gen...@system.gserviceaccount.com>
                  Gerrit-CC: Peter Beverloo <pe...@chromium.org>
                  Gerrit-Attention: Free Debreuil <freede...@google.com>
                  Gerrit-Comment-Date: Fri, 14 Nov 2025 21:17:10 +0000
                  Gerrit-HasComments: No
                  Gerrit-Has-Labels: Yes
                  satisfied_requirement
                  open
                  diffy

                  Free Debreuil (Gerrit)

                  unread,
                  4:17 PM (7 hours ago) 4:17 PM
                  to Robert Flack, Vladimir Levin, Peter Beverloo, AyeAye, AI Code Reviewer, Chromium LUCI CQ, chromium...@chromium.org, alexmo...@chromium.org, permissio...@chromium.org, jmedle...@chromium.org, lizeb+watch...@chromium.org, ios-revie...@chromium.org, devtools...@chromium.org, navigation...@chromium.org, creis...@chromium.org, chrome-waff...@google.com, browser-comp...@chromium.org, ios-r...@chromium.org, network-ser...@chromium.org, marq+...@chromium.org, blink-...@chromium.org, cc-...@chromium.org, kinuko...@chromium.org

                  Free Debreuil voted Commit-Queue+2

                  Commit-Queue+2
                  Open in Gerrit

                  Related details

                  Attention set is empty
                  Submit Requirements:
                  • requirement satisfiedCode-Coverage
                  • requirement satisfiedCode-Owners
                  • requirement satisfiedCode-Review
                  • requirement satisfiedReview-Enforcement
                  Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
                  Gerrit-MessageType: comment
                  Gerrit-Project: chromium/src
                  Gerrit-Branch: main
                  Gerrit-Change-Id: I54e268e193ec4f023344888c5b2f13a2839dd6de
                  Gerrit-Change-Number: 7050219
                  Gerrit-PatchSet: 73
                  Gerrit-Owner: Free Debreuil <freede...@google.com>
                  Gerrit-Reviewer: Free Debreuil <freede...@google.com>
                  Gerrit-Reviewer: Robert Flack <fla...@chromium.org>
                  Gerrit-Reviewer: Vladimir Levin <vmp...@chromium.org>
                  Gerrit-CC: AI Code Reviewer <peep-gen...@system.gserviceaccount.com>
                  Gerrit-CC: Peter Beverloo <pe...@chromium.org>
                  Gerrit-Comment-Date: Fri, 14 Nov 2025 21:17:45 +0000
                  Gerrit-HasComments: No
                  Gerrit-Has-Labels: Yes
                  satisfied_requirement
                  open
                  diffy

                  Chromium LUCI CQ (Gerrit)

                  unread,
                  4:21 PM (7 hours ago) 4:21 PM
                  to Free Debreuil, Robert Flack, Vladimir Levin, Peter Beverloo, AyeAye, AI Code Reviewer, chromium...@chromium.org, alexmo...@chromium.org, permissio...@chromium.org, jmedle...@chromium.org, lizeb+watch...@chromium.org, ios-revie...@chromium.org, devtools...@chromium.org, navigation...@chromium.org, creis...@chromium.org, chrome-waff...@google.com, browser-comp...@chromium.org, ios-r...@chromium.org, network-ser...@chromium.org, marq+...@chromium.org, blink-...@chromium.org, cc-...@chromium.org, kinuko...@chromium.org

                  Chromium LUCI CQ submitted the change

                  Change information

                  Commit message:
                  Implement Overscroll Effects on Non-root Scrollers

                  Extend `ElasticOverscrollController` and `ScrollElasticityHelper` to
                  support per-scroller overscroll effects, rather than just the root.
                  Overscroll state is now tracked per `ElementId`.

                  Application of overscroll effect moved to
                  `TransformTree::UpdateLocalTransform` instead of
                  `DrawPropertyUtils::UpdateElasticOverscroll`, to allow combining of
                  overscroll effect with scroller's content transform.

                  BYPASS_LARGE_CHANGE_WARNING: Code needs to be submitted together
                  to be testable.
                  Bug: 41102897
                  Change-Id: I54e268e193ec4f023344888c5b2f13a2839dd6de
                  Cq-Do-Not-Cancel-Tryjobs: true
                  Reviewed-by: Vladimir Levin <vmp...@chromium.org>
                  Reviewed-by: Robert Flack <fla...@chromium.org>
                  Commit-Queue: Free Debreuil <freede...@google.com>
                  Cr-Commit-Position: refs/heads/main@{#1545227}
                  Files:
                  • M cc/input/compositor_input_interfaces.h
                  • M cc/input/input_handler.cc
                  • M cc/input/input_handler.h
                  • M cc/input/scroll_elasticity_helper.cc
                  • M cc/input/scroll_elasticity_helper.h
                  • M cc/trees/draw_property_utils.cc
                  • M cc/trees/layer_tree_host_impl.cc
                  • M cc/trees/layer_tree_host_impl.h
                  • M cc/trees/layer_tree_host_unittest.cc
                  • M cc/trees/layer_tree_host_unittest_scroll.cc
                  • M cc/trees/layer_tree_impl.cc
                  • M cc/trees/layer_tree_impl.h
                  • M cc/trees/layer_tree_impl_unittest.cc
                  • M cc/trees/property_tree.cc
                  • M cc/trees/property_tree.h
                  • M cc/trees/property_tree_unittest.cc
                  • M third_party/blink/renderer/platform/widget/input/elastic_overscroll_controller.cc
                  • M third_party/blink/renderer/platform/widget/input/elastic_overscroll_controller.h
                  • M third_party/blink/renderer/platform/widget/input/elastic_overscroll_controller_bezier.cc
                  • M third_party/blink/renderer/platform/widget/input/elastic_overscroll_controller_bezier.h
                  • M third_party/blink/renderer/platform/widget/input/elastic_overscroll_controller_bezier_unittest.cc
                  • M third_party/blink/renderer/platform/widget/input/elastic_overscroll_controller_exponential.cc
                  • M third_party/blink/renderer/platform/widget/input/elastic_overscroll_controller_exponential.h
                  • M third_party/blink/renderer/platform/widget/input/elastic_overscroll_controller_exponential_unittest.cc
                  • M third_party/blink/renderer/platform/widget/input/input_handler_proxy.cc
                  • M third_party/blink/renderer/platform/widget/input/input_handler_proxy.h
                  • M third_party/blink/renderer/platform/widget/input/widget_input_handler_manager.cc
                  Change size: XL
                  Delta: 27 files changed, 1781 insertions(+), 706 deletions(-)
                  Branch: refs/heads/main
                  Submit Requirements:
                  • requirement satisfiedCode-Review: +1 by Robert Flack, +1 by Vladimir Levin
                  Open in Gerrit
                  Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
                  Gerrit-MessageType: merged
                  Gerrit-Project: chromium/src
                  Gerrit-Branch: main
                  Gerrit-Change-Id: I54e268e193ec4f023344888c5b2f13a2839dd6de
                  Gerrit-Change-Number: 7050219
                  Gerrit-PatchSet: 74
                  Gerrit-Owner: Free Debreuil <freede...@google.com>
                  Gerrit-Reviewer: Chromium LUCI CQ <chromiu...@luci-project-accounts.iam.gserviceaccount.com>
                  Gerrit-Reviewer: Free Debreuil <freede...@google.com>
                  Gerrit-Reviewer: Robert Flack <fla...@chromium.org>
                  Gerrit-Reviewer: Vladimir Levin <vmp...@chromium.org>
                  Gerrit-CC: AI Code Reviewer <peep-gen...@system.gserviceaccount.com>
                  open
                  diffy
                  satisfied_requirement
                  Reply all
                  Reply to author
                  Forward
                  0 new messages