[animation-trigger] Propagate triggers up the fragment tree. [chromium/src : main]

0 views
Skip to first unread message

Ian Kilpatrick (Gerrit)

unread,
Jul 18, 2025, 1:30:38 PMJul 18
to David Awogbemila, AyeAye, Chromium LUCI CQ, Alexis Menard, chromium...@chromium.org, Olga Gerchikov, blink-re...@chromium.org, apavlo...@chromium.org, blink-rev...@chromium.org, blink-revie...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-...@chromium.org, zol...@webkit.org
Attention needed from David Awogbemila

Ian Kilpatrick added 12 comments

Patchset-level comments
File-level comment, Patchset 2 (Latest):
Ian Kilpatrick . unresolved

So I think you want to do something like:
`LocalFrameView::ExecutePendingSnapUpdates` or
`LocalFrameView::ExecutePendingStickyUpdates`

The animation-trigger map generated within the fragment-tree should be idempotent, e.g. a layout with the same style should produce the same result, and not have any side-effects.

Currently it relies on the previous map, which introduces hysterisis. E.g. within a layout we may visit the same layout-object multiple times, with different styles, currently all those old animation triggers would accumulate which i suspect isn't what we want.

The map produced should just rely on the current style, and the child fragments, then after layout we can do a step like snap/sticky to update the animations, and compare against the old map produced.

File third_party/blink/renderer/core/dom/node_rare_data.h
Line 103, Patchset 2 (Latest): Member<AnimationTrigger> trigger;
Ian Kilpatrick . unresolved

Can this be const?

Line 102, Patchset 2 (Latest): Type type;
Ian Kilpatrick . unresolved

Can this be const?

Line 90, Patchset 2 (Latest): struct AnimationTriggerAssociation
Ian Kilpatrick . unresolved

This likely is better in its own file.

File third_party/blink/renderer/core/layout/fragment_builder.cc
Line 1073, Patchset 2 (Latest): }
Ian Kilpatrick . unresolved

Remove - see below.

Line 1123, Patchset 2 (Latest): node_.GetDOMNode()->GetTriggerMap();
Ian Kilpatrick . unresolved

Accessing the existing_map here isn't great.

Can you do something similar to how sticky works? See LocalFrameView::ExecutePendingStickyUpdates

E.g. layout may get called multiple times for a node, and potentially with different styles, etc. You likely want to compare the start vs. end maps after layout has occurred, rather than have side effects like this within layout.

Line 1133, Patchset 2 (Latest): if (Document* document = DynamicTo<Document>(layout_object_->GetNode())) {
Ian Kilpatrick . unresolved

why this?

Line 1143, Patchset 2 (Latest): if (Member<const ScopedCSSName> name = trigger_names[i]) {
Ian Kilpatrick . unresolved
if (!name) {
continue;
}

(reduce nesting).

Line 1154, Patchset 2 (Latest): AnimationTrigger* trigger = CSSAnimations::ComputeTimelineTrigger(
Ian Kilpatrick . unresolved

can this be const?

Line 1174, Patchset 2 (Latest): for (const auto& entry : *existing_map) {
Ian Kilpatrick . unresolved

Accessing the previous state here introduces hysteresis which we should avoid.

Line 1190, Patchset 2 (Latest): entry.value->trigger->RemoveAnimations();
Ian Kilpatrick . unresolved

This is a side effect which we'd want to avoid if possible, this should be done after layout.

File third_party/blink/renderer/core/style/computed_style.cc
Line 1011, Patchset 2 (Latest): return true;
Ian Kilpatrick . unresolved

just add `invalidation: ["layout"]` instead.

Open in Gerrit

Related details

Attention is currently required from:
  • David Awogbemila
Submit Requirements:
  • requirement satisfiedCode-Coverage
  • requirement is not satisfiedCode-Owners
  • requirement is not satisfiedCode-Review
  • requirement is not satisfiedNo-Unresolved-Comments
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: I8e06a20f62aa5f7faa0ae887f348c3029c8d97a7
Gerrit-Change-Number: 6767352
Gerrit-PatchSet: 2
Gerrit-Owner: David Awogbemila <awogb...@chromium.org>
Gerrit-Reviewer: David Awogbemila <awogb...@chromium.org>
Gerrit-Reviewer: Ian Kilpatrick <ikilp...@chromium.org>
Gerrit-CC: Alexis Menard <alexis...@intel.com>
Gerrit-CC: Olga Gerchikov <gerc...@microsoft.com>
Gerrit-Attention: David Awogbemila <awogb...@chromium.org>
Gerrit-Comment-Date: Fri, 18 Jul 2025 17:30:27 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
satisfied_requirement
unsatisfied_requirement
open
diffy

Ian Kilpatrick (Gerrit)

unread,
Jul 18, 2025, 1:31:19 PMJul 18
to David Awogbemila, AyeAye, Chromium LUCI CQ, Alexis Menard, chromium...@chromium.org, Olga Gerchikov, blink-re...@chromium.org, apavlo...@chromium.org, blink-rev...@chromium.org, blink-revie...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-...@chromium.org, zol...@webkit.org
Attention needed from David Awogbemila

Ian Kilpatrick added 1 comment

Patchset-level comments
Ian Kilpatrick . unresolved

So I think you want to do something like:
`LocalFrameView::ExecutePendingSnapUpdates` or
`LocalFrameView::ExecutePendingStickyUpdates`

The animation-trigger map generated within the fragment-tree should be idempotent, e.g. a layout with the same style should produce the same result, and not have any side-effects.

Currently it relies on the previous map, which introduces hysterisis. E.g. within a layout we may visit the same layout-object multiple times, with different styles, currently all those old animation triggers would accumulate which i suspect isn't what we want.

The map produced should just rely on the current style, and the child fragments, then after layout we can do a step like snap/sticky to update the animations, and compare against the old map produced.

Ian Kilpatrick

Generally speaking as well, the map should be as "const" as possible, so that we guarantee that nobody is messing with it.

Gerrit-Comment-Date: Fri, 18 Jul 2025 17:31:10 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Comment-In-Reply-To: Ian Kilpatrick <ikilp...@chromium.org>
satisfied_requirement
unsatisfied_requirement
open
diffy

David Awogbemila (Gerrit)

unread,
Jul 21, 2025, 12:44:51 PMJul 21
to AyeAye, Ian Kilpatrick, Chromium LUCI CQ, Alexis Menard, chromium...@chromium.org, Olga Gerchikov, blink-re...@chromium.org, apavlo...@chromium.org, blink-rev...@chromium.org, blink-revie...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-...@chromium.org, zol...@webkit.org
Attention needed from Ian Kilpatrick

David Awogbemila added 11 comments

File third_party/blink/renderer/core/dom/node_rare_data.h
Line 103, Patchset 2: Member<AnimationTrigger> trigger;
Ian Kilpatrick . resolved

Can this be const?

David Awogbemila

Done

Line 102, Patchset 2: Type type;
Ian Kilpatrick . resolved

Can this be const?

David Awogbemila

Done

Line 90, Patchset 2: struct AnimationTriggerAssociation
Ian Kilpatrick . resolved

This likely is better in its own file.

David Awogbemila

Done

File third_party/blink/renderer/core/layout/fragment_builder.cc
Line 1073, Patchset 2: }
Ian Kilpatrick . resolved

Remove - see below.

David Awogbemila

Done

Line 1123, Patchset 2: node_.GetDOMNode()->GetTriggerMap();
Ian Kilpatrick . unresolved

Accessing the existing_map here isn't great.

Can you do something similar to how sticky works? See LocalFrameView::ExecutePendingStickyUpdates

E.g. layout may get called multiple times for a node, and potentially with different styles, etc. You likely want to compare the start vs. end maps after layout has occurred, rather than have side effects like this within layout.

David Awogbemila

Okay, I've switched to a different approach: propagate just the names (and the associated LayoutObjects) up the fragment tree and create & compare the triggers in LayoutBox::UpdateAfterLayout. I think that's about the same timing ExecutePendingStickyUpdates which comes at the end of layout.

Line 1133, Patchset 2: if (Document* document = DynamicTo<Document>(layout_object_->GetNode())) {
Ian Kilpatrick . resolved

why this?

David Awogbemila

I thought we needed some special handling for the document but I don't think there's a way to declare a trigger on the document so I've removed this.

Line 1143, Patchset 2: if (Member<const ScopedCSSName> name = trigger_names[i]) {
Ian Kilpatrick . resolved
if (!name) {
continue;
}

(reduce nesting).

David Awogbemila

Done

Line 1154, Patchset 2: AnimationTrigger* trigger = CSSAnimations::ComputeTimelineTrigger(
Ian Kilpatrick . resolved

can this be const?

David Awogbemila

Acknowledged. It's been removed.

Line 1174, Patchset 2: for (const auto& entry : *existing_map) {
Ian Kilpatrick . resolved

Accessing the previous state here introduces hysteresis which we should avoid.

David Awogbemila

Done. Checking the previous state is now done after layout in LayoutBox::UpdateAfterLayout.

Line 1190, Patchset 2: entry.value->trigger->RemoveAnimations();
Ian Kilpatrick . resolved

This is a side effect which we'd want to avoid if possible, this should be done after layout.

David Awogbemila

Done. Now done after layout in UpdateAfterLayout.

File third_party/blink/renderer/core/style/computed_style.cc
Line 1011, Patchset 2: return true;
Ian Kilpatrick . resolved

just add `invalidation: ["layout"]` instead.

David Awogbemila

Done

Open in Gerrit

Related details

Attention is currently required from:
  • Ian Kilpatrick
Submit Requirements:
  • requirement satisfiedCode-Coverage
  • requirement is not satisfiedCode-Owners
  • requirement is not satisfiedCode-Review
  • requirement is not satisfiedNo-Unresolved-Comments
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: I8e06a20f62aa5f7faa0ae887f348c3029c8d97a7
Gerrit-Change-Number: 6767352
Gerrit-PatchSet: 5
Gerrit-Owner: David Awogbemila <awogb...@chromium.org>
Gerrit-Reviewer: David Awogbemila <awogb...@chromium.org>
Gerrit-Reviewer: Ian Kilpatrick <ikilp...@chromium.org>
Gerrit-CC: Alexis Menard <alexis...@intel.com>
Gerrit-CC: Olga Gerchikov <gerc...@microsoft.com>
Gerrit-Attention: Ian Kilpatrick <ikilp...@chromium.org>
Gerrit-Comment-Date: Mon, 21 Jul 2025 16:44:46 +0000
satisfied_requirement
unsatisfied_requirement
open
diffy

Ian Kilpatrick (Gerrit)

unread,
Jul 21, 2025, 1:31:14 PMJul 21
to David Awogbemila, AyeAye, Chromium LUCI CQ, Alexis Menard, chromium...@chromium.org, Olga Gerchikov, blink-re...@chromium.org, apavlo...@chromium.org, blink-rev...@chromium.org, blink-revie...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-...@chromium.org, zol...@webkit.org
Attention needed from David Awogbemila

Ian Kilpatrick added 1 comment

File third_party/blink/renderer/core/layout/fragment_builder.cc
Line 1123, Patchset 2: node_.GetDOMNode()->GetTriggerMap();
Ian Kilpatrick . unresolved

Accessing the existing_map here isn't great.

Can you do something similar to how sticky works? See LocalFrameView::ExecutePendingStickyUpdates

E.g. layout may get called multiple times for a node, and potentially with different styles, etc. You likely want to compare the start vs. end maps after layout has occurred, rather than have side effects like this within layout.

David Awogbemila

Okay, I've switched to a different approach: propagate just the names (and the associated LayoutObjects) up the fragment tree and create & compare the triggers in LayoutBox::UpdateAfterLayout. I think that's about the same timing ExecutePendingStickyUpdates which comes at the end of layout.

Ian Kilpatrick

So LayoutBox::UpdateAfterLayout is likely incorrect.

E.g. a LayoutBox may get destroyed & recreated again in the middle of layout, where-as a Node will remain stable.

Likely you don't want to cancel animations in this case?

Open in Gerrit

Related details

Attention is currently required from:
  • David Awogbemila
Submit Requirements:
  • requirement satisfiedCode-Coverage
  • requirement is not satisfiedCode-Owners
  • requirement is not satisfiedCode-Review
  • requirement is not satisfiedNo-Unresolved-Comments
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: I8e06a20f62aa5f7faa0ae887f348c3029c8d97a7
Gerrit-Change-Number: 6767352
Gerrit-PatchSet: 6
Gerrit-Owner: David Awogbemila <awogb...@chromium.org>
Gerrit-Reviewer: David Awogbemila <awogb...@chromium.org>
Gerrit-Reviewer: Ian Kilpatrick <ikilp...@chromium.org>
Gerrit-CC: Alexis Menard <alexis...@intel.com>
Gerrit-CC: Olga Gerchikov <gerc...@microsoft.com>
Gerrit-Attention: David Awogbemila <awogb...@chromium.org>
Gerrit-Comment-Date: Mon, 21 Jul 2025 17:31:05 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Comment-In-Reply-To: Ian Kilpatrick <ikilp...@chromium.org>
Comment-In-Reply-To: David Awogbemila <awogb...@chromium.org>
satisfied_requirement
unsatisfied_requirement
open
diffy

David Awogbemila (Gerrit)

unread,
Jul 21, 2025, 3:49:00 PMJul 21
to AyeAye, Ian Kilpatrick, Chromium LUCI CQ, Alexis Menard, chromium...@chromium.org, Olga Gerchikov, blink-re...@chromium.org, apavlo...@chromium.org, blink-rev...@chromium.org, blink-revie...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-...@chromium.org, zol...@webkit.org
Attention needed from Ian Kilpatrick

David Awogbemila added 1 comment

File third_party/blink/renderer/core/animation/css/css_animations_test.cc
Line 1351, Patchset 5: if (Element* target =
GetDocument().getElementById(AtomicString("target"))) {
// TODO(crbug.com/429392773): We shouldn't need to force layout here.
target->GetLayoutBox()->SetNeedsLayout("");
}
David Awogbemila . unresolved

This seems to be needed despite setting `invalidates: ["layout"]` on all the longhands. @ikilp...@chromium.org, would you know how to address this?

Basically, the problem is that some of the tests change an element's style and expect to see the updated trigger which the layout phase should create in `LayoutBox::UpdateAfterLayout`, but sadly, layout seems to be skipped.

Open in Gerrit

Related details

Attention is currently required from:
  • Ian Kilpatrick
Submit Requirements:
  • requirement satisfiedCode-Coverage
  • requirement is not satisfiedCode-Owners
  • requirement is not satisfiedCode-Review
  • requirement is not satisfiedNo-Unresolved-Comments
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: I8e06a20f62aa5f7faa0ae887f348c3029c8d97a7
Gerrit-Change-Number: 6767352
Gerrit-PatchSet: 6
Gerrit-Owner: David Awogbemila <awogb...@chromium.org>
Gerrit-Reviewer: David Awogbemila <awogb...@chromium.org>
Gerrit-Reviewer: Ian Kilpatrick <ikilp...@chromium.org>
Gerrit-CC: Alexis Menard <alexis...@intel.com>
Gerrit-CC: Olga Gerchikov <gerc...@microsoft.com>
Gerrit-Attention: Ian Kilpatrick <ikilp...@chromium.org>
Gerrit-Comment-Date: Mon, 21 Jul 2025 19:48:55 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
satisfied_requirement
unsatisfied_requirement
open
diffy

David Awogbemila (Gerrit)

unread,
Jul 23, 2025, 4:28:18 PMJul 23
to David Bokan, AyeAye, Ian Kilpatrick, Chromium LUCI CQ, Alexis Menard, chromium...@chromium.org, Olga Gerchikov, blink-revi...@chromium.org, blink-re...@chromium.org, apavlo...@chromium.org, blink-rev...@chromium.org, blink-revie...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-...@chromium.org, zol...@webkit.org
Attention needed from Ian Kilpatrick

David Awogbemila added 3 comments

Patchset-level comments
File-level comment, Patchset 2:
Ian Kilpatrick . resolved

So I think you want to do something like:


`LocalFrameView::ExecutePendingSnapUpdates` or
`LocalFrameView::ExecutePendingStickyUpdates`

The animation-trigger map generated within the fragment-tree should be idempotent, e.g. a layout with the same style should produce the same result, and not have any side-effects.

Currently it relies on the previous map, which introduces hysterisis. E.g. within a layout we may visit the same layout-object multiple times, with different styles, currently all those old animation triggers would accumulate which i suspect isn't what we want.

The map produced should just rely on the current style, and the child fragments, then after layout we can do a step like snap/sticky to update the animations, and compare against the old map produced.

Ian Kilpatrick

Generally speaking as well, the map should be as "const" as possible, so that we guarantee that nobody is messing with it.

David Awogbemila

Acknowledged

File third_party/blink/renderer/core/animation/css/css_animations_test.cc
Line 1351, Patchset 5: if (Element* target =
GetDocument().getElementById(AtomicString("target"))) {
// TODO(crbug.com/429392773): We shouldn't need to force layout here.
target->GetLayoutBox()->SetNeedsLayout("");
}
David Awogbemila . resolved

This seems to be needed despite setting `invalidates: ["layout"]` on all the longhands. @ikilp...@chromium.org, would you know how to address this?

Basically, the problem is that some of the tests change an element's style and expect to see the updated trigger which the layout phase should create in `LayoutBox::UpdateAfterLayout`, but sadly, layout seems to be skipped.

David Awogbemila

Moved to crrev.com/c/6778863. Done.

File third_party/blink/renderer/core/layout/fragment_builder.cc
Line 1123, Patchset 2: node_.GetDOMNode()->GetTriggerMap();
Ian Kilpatrick . resolved

Accessing the existing_map here isn't great.

Can you do something similar to how sticky works? See LocalFrameView::ExecutePendingStickyUpdates

E.g. layout may get called multiple times for a node, and potentially with different styles, etc. You likely want to compare the start vs. end maps after layout has occurred, rather than have side effects like this within layout.

David Awogbemila

Okay, I've switched to a different approach: propagate just the names (and the associated LayoutObjects) up the fragment tree and create & compare the triggers in LayoutBox::UpdateAfterLayout. I think that's about the same timing ExecutePendingStickyUpdates which comes at the end of layout.

Ian Kilpatrick

So LayoutBox::UpdateAfterLayout is likely incorrect.

E.g. a LayoutBox may get destroyed & recreated again in the middle of layout, where-as a Node will remain stable.

Likely you don't want to cancel animations in this case?

David Awogbemila

As discussed offline, I've moved the trigger creatino stuff to crrev.com/c/6778863 and left just the name propagation here.

Open in Gerrit

Related details

Attention is currently required from:
  • Ian Kilpatrick
Submit Requirements:
  • requirement satisfiedCode-Coverage
  • requirement is not satisfiedCode-Owners
  • requirement is not satisfiedCode-Review
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: I8e06a20f62aa5f7faa0ae887f348c3029c8d97a7
Gerrit-Change-Number: 6767352
Gerrit-PatchSet: 10
Gerrit-Owner: David Awogbemila <awogb...@chromium.org>
Gerrit-Reviewer: David Awogbemila <awogb...@chromium.org>
Gerrit-Reviewer: Ian Kilpatrick <ikilp...@chromium.org>
Gerrit-CC: Alexis Menard <alexis...@intel.com>
Gerrit-CC: David Bokan <bo...@chromium.org>
Gerrit-CC: Olga Gerchikov <gerc...@microsoft.com>
Gerrit-Attention: Ian Kilpatrick <ikilp...@chromium.org>
Gerrit-Comment-Date: Wed, 23 Jul 2025 20:28:14 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
satisfied_requirement
unsatisfied_requirement
open
diffy

Ian Kilpatrick (Gerrit)

unread,
Jul 23, 2025, 4:38:39 PMJul 23
to David Awogbemila, David Bokan, AyeAye, Chromium LUCI CQ, Alexis Menard, chromium...@chromium.org, Olga Gerchikov, blink-revi...@chromium.org, blink-re...@chromium.org, apavlo...@chromium.org, blink-rev...@chromium.org, blink-revie...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-...@chromium.org, zol...@webkit.org
Attention needed from David Awogbemila

Ian Kilpatrick added 6 comments

File third_party/blink/renderer/core/dom/element.h
Line 276, Patchset 10 (Latest): GCedHeapHashMap<Member<const ScopedCSSName>, Member<const Element>>;
Ian Kilpatrick . unresolved

Can optionally move this definition into a header like:
third_party/blink/renderer/core/style/named_grid_lines_map.h

Line 275, Patchset 10 (Latest): using NameToElementMap =
Ian Kilpatrick . unresolved

TriggerNameToElementMap ? (NameToElementMap a bit too generic).

File third_party/blink/renderer/core/frame/local_frame_view.h
Line 1304, Patchset 8: Member<GCedHeapDeque<Member<LayoutBox>>>
Ian Kilpatrick . unresolved

Member<Element>

File third_party/blink/renderer/core/layout/fragment_builder.cc
Line 1109, Patchset 10 (Latest): EnsureTriggerNames().Set(entry.key, entry.value);
Ian Kilpatrick . unresolved

Something like:

<div id="a" style="trigger-name: a">
<div id="b" style="trigger-name: a"></div>
</div>

will return "b" is this desired?

(e.g. CreateTriggerNames should occur when finalized).

Line 1121, Patchset 10 (Latest): if (!node_ || !node_.GetDOMNode()) {
Ian Kilpatrick . unresolved

This check is redundant (DynamicTo will pass through nullptr)

Line 1125, Patchset 10 (Latest): Element* element = DynamicTo<Element>(node_.GetDOMNode());
Ian Kilpatrick . unresolved

.nit const

Open in Gerrit

Related details

Attention is currently required from:
  • David Awogbemila
Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement is not satisfiedCode-Owners
    • requirement is not satisfiedCode-Review
    • requirement is not satisfiedNo-Unresolved-Comments
    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: I8e06a20f62aa5f7faa0ae887f348c3029c8d97a7
    Gerrit-Change-Number: 6767352
    Gerrit-PatchSet: 10
    Gerrit-Owner: David Awogbemila <awogb...@chromium.org>
    Gerrit-Reviewer: David Awogbemila <awogb...@chromium.org>
    Gerrit-Reviewer: Ian Kilpatrick <ikilp...@chromium.org>
    Gerrit-CC: Alexis Menard <alexis...@intel.com>
    Gerrit-CC: David Bokan <bo...@chromium.org>
    Gerrit-CC: Olga Gerchikov <gerc...@microsoft.com>
    Gerrit-Attention: David Awogbemila <awogb...@chromium.org>
    Gerrit-Comment-Date: Wed, 23 Jul 2025 20:38:31 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Ian Kilpatrick (Gerrit)

    unread,
    Jul 23, 2025, 5:58:33 PMJul 23
    to David Awogbemila, David Bokan, AyeAye, Chromium LUCI CQ, Alexis Menard, chromium...@chromium.org, Olga Gerchikov, blink-revi...@chromium.org, blink-re...@chromium.org, apavlo...@chromium.org, blink-rev...@chromium.org, blink-revie...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-...@chromium.org, zol...@webkit.org
    Attention needed from David Awogbemila

    Ian Kilpatrick added 1 comment

    File third_party/blink/renderer/core/css/css_properties.json5
    Line 1079, Patchset 10 (Latest): invalidate: ["layout"],
    Ian Kilpatrick . unresolved

    only this should need to invalidate layout ?

    Gerrit-Comment-Date: Wed, 23 Jul 2025 21:58:25 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    AI Code Reviewer (Gerrit)

    unread,
    Jul 24, 2025, 9:20:32 AMJul 24
    to David Awogbemila, David Bokan, AyeAye, Ian Kilpatrick, Chromium LUCI CQ, Alexis Menard, chromium...@chromium.org, Olga Gerchikov, blink-revi...@chromium.org, blink-re...@chromium.org, apavlo...@chromium.org, blink-rev...@chromium.org, blink-revie...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-...@chromium.org, zol...@webkit.org
    Attention needed from David Awogbemila

    AI Code Reviewer added 2 comments

    File third_party/blink/renderer/core/layout/fragment_builder.h
    Line 538, Patchset 11 (Latest): TriggerNameToElementMap& EnsureTriggerNames();
    AI Code Reviewer . unresolved
    This comment was generated by Blink C++ Code Review Agent. See go/blink-c++-code-review-agent for more details.
    Blink Style Guide: Naming - Precede setters with the word “Set”; use bare words for getters. The `Ensure` prefix violates the 'bare words for getters' rule. Please rename to `TriggerNames()` to match the member variable `trigger_names_`.
    Please respond with one of these three options:
    'Done' OR 'b/<bug_id>' OR 'Won't fix: <reason>'

    If you have feedback or would like to get involved in this effort, please file a bug here: go/blink-c++-code-review-agent-feedback
    #code-review-agent-blink-c++

    File third_party/blink/renderer/core/layout/physical_fragment.h
    Line 736, Patchset 11 (Latest): const TriggerNameToElementMap* TriggerNames() const {
    AI Code Reviewer . unresolved
    This comment was generated by Blink C++ Code Review Agent. See go/blink-c++-code-review-agent for more details.
    Blink Style Guide: Naming - Precede setters with the word “Set”; use bare words for getters. This rule states getter names should match the variable being accessed. The getter `TriggerNames()` accesses the `trigger_names_map` member, so it should be renamed to `TriggerNamesMap()`.
    Please respond with one of these three options:
    'Done' OR 'b/<bug_id>' OR 'Won't fix: <reason>'

    If you have feedback or would like to get involved in this effort, please file a bug here: go/blink-c++-code-review-agent-feedback
    #code-review-agent-blink-c++

    Open in Gerrit

    Related details

    Attention is currently required from:
    • David Awogbemila
    Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement is not satisfiedCode-Owners
    • requirement is not satisfiedCode-Review
    • requirement is not satisfiedNo-Unresolved-Comments
    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: I8e06a20f62aa5f7faa0ae887f348c3029c8d97a7
    Gerrit-Change-Number: 6767352
    Gerrit-PatchSet: 11
    Gerrit-Owner: David Awogbemila <awogb...@chromium.org>
    Gerrit-Reviewer: David Awogbemila <awogb...@chromium.org>
    Gerrit-Reviewer: Ian Kilpatrick <ikilp...@chromium.org>
    Gerrit-CC: AI Code Reviewer <peep-gen...@system.gserviceaccount.com>
    Gerrit-CC: Alexis Menard <alexis...@intel.com>
    Gerrit-CC: David Bokan <bo...@chromium.org>
    Gerrit-CC: Olga Gerchikov <gerc...@microsoft.com>
    Gerrit-Attention: David Awogbemila <awogb...@chromium.org>
    Gerrit-Comment-Date: Thu, 24 Jul 2025 13:20:29 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    David Awogbemila (Gerrit)

    unread,
    Jul 25, 2025, 3:30:07 PMJul 25
    to AI Code Reviewer, David Bokan, AyeAye, Ian Kilpatrick, Chromium LUCI CQ, Alexis Menard, chromium...@chromium.org, Olga Gerchikov, blink-revi...@chromium.org, blink-re...@chromium.org, apavlo...@chromium.org, blink-rev...@chromium.org, blink-revie...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-...@chromium.org, zol...@webkit.org
    Attention needed from Ian Kilpatrick

    David Awogbemila added 9 comments

    File third_party/blink/renderer/core/css/css_properties.json5
    Line 1079, Patchset 10: invalidate: ["layout"],
    Ian Kilpatrick . resolved

    only this should need to invalidate layout ?

    David Awogbemila

    Acknowledged. Obsolete now.

    File third_party/blink/renderer/core/dom/element.h
    Line 276, Patchset 10: GCedHeapHashMap<Member<const ScopedCSSName>, Member<const Element>>;
    Ian Kilpatrick . resolved

    Can optionally move this definition into a header like:
    third_party/blink/renderer/core/style/named_grid_lines_map.h

    David Awogbemila

    Done. I created a file named named_animation_trigger_map.h which defines a NamedAnimationTriggerMap.

    Line 275, Patchset 10: using NameToElementMap =
    Ian Kilpatrick . resolved

    TriggerNameToElementMap ? (NameToElementMap a bit too generic).

    David Awogbemila

    Acknowledged. Obsolete now.

    File third_party/blink/renderer/core/frame/local_frame_view.h
    Line 1304, Patchset 8: Member<GCedHeapDeque<Member<LayoutBox>>>
    Ian Kilpatrick . resolved

    Member<Element>

    David Awogbemila

    Done

    File third_party/blink/renderer/core/layout/fragment_builder.h
    Line 538, Patchset 11: TriggerNameToElementMap& EnsureTriggerNames();
    AI Code Reviewer . resolved
    This comment was generated by Blink C++ Code Review Agent. See go/blink-c++-code-review-agent for more details.
    Blink Style Guide: Naming - Precede setters with the word “Set”; use bare words for getters. The `Ensure` prefix violates the 'bare words for getters' rule. Please rename to `TriggerNames()` to match the member variable `trigger_names_`.
    Please respond with one of these three options:
    'Done' OR 'b/<bug_id>' OR 'Won't fix: <reason>'

    If you have feedback or would like to get involved in this effort, please file a bug here: go/blink-c++-code-review-agent-feedback
    #code-review-agent-blink-c++

    David Awogbemila

    Won't fix: This isn't just a setter and follows the existing pattern.

    File third_party/blink/renderer/core/layout/fragment_builder.cc
    Line 1109, Patchset 10: EnsureTriggerNames().Set(entry.key, entry.value);
    Ian Kilpatrick . resolved

    Something like:

    <div id="a" style="trigger-name: a">
    <div id="b" style="trigger-name: a"></div>
    </div>

    will return "b" is this desired?

    (e.g. CreateTriggerNames should occur when finalized).

    David Awogbemila

    Good point, done.

    Line 1121, Patchset 10: if (!node_ || !node_.GetDOMNode()) {
    Ian Kilpatrick . resolved

    This check is redundant (DynamicTo will pass through nullptr)

    David Awogbemila

    Done, thanks!

    Line 1125, Patchset 10: Element* element = DynamicTo<Element>(node_.GetDOMNode());
    Ian Kilpatrick . resolved

    .nit const

    David Awogbemila

    Done

    File third_party/blink/renderer/core/layout/physical_fragment.h
    Line 736, Patchset 11: const TriggerNameToElementMap* TriggerNames() const {
    AI Code Reviewer . resolved
    This comment was generated by Blink C++ Code Review Agent. See go/blink-c++-code-review-agent for more details.
    Blink Style Guide: Naming - Precede setters with the word “Set”; use bare words for getters. This rule states getter names should match the variable being accessed. The getter `TriggerNames()` accesses the `trigger_names_map` member, so it should be renamed to `TriggerNamesMap()`.
    Please respond with one of these three options:
    'Done' OR 'b/<bug_id>' OR 'Won't fix: <reason>'

    If you have feedback or would like to get involved in this effort, please file a bug here: go/blink-c++-code-review-agent-feedback
    #code-review-agent-blink-c++

    David Awogbemila

    Done

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Ian Kilpatrick
    Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement is not satisfiedCode-Owners
    • requirement is not satisfiedCode-Review
    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: I8e06a20f62aa5f7faa0ae887f348c3029c8d97a7
    Gerrit-Change-Number: 6767352
    Gerrit-PatchSet: 15
    Gerrit-Owner: David Awogbemila <awogb...@chromium.org>
    Gerrit-Reviewer: David Awogbemila <awogb...@chromium.org>
    Gerrit-Reviewer: Ian Kilpatrick <ikilp...@chromium.org>
    Gerrit-CC: AI Code Reviewer <peep-gen...@system.gserviceaccount.com>
    Gerrit-CC: Alexis Menard <alexis...@intel.com>
    Gerrit-CC: David Bokan <bo...@chromium.org>
    Gerrit-CC: Olga Gerchikov <gerc...@microsoft.com>
    Gerrit-Attention: Ian Kilpatrick <ikilp...@chromium.org>
    Gerrit-Comment-Date: Fri, 25 Jul 2025 19:30:00 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    Comment-In-Reply-To: AI Code Reviewer <peep-gen...@system.gserviceaccount.com>
    Comment-In-Reply-To: Ian Kilpatrick <ikilp...@chromium.org>
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    David Awogbemila (Gerrit)

    unread,
    Aug 6, 2025, 11:31:47 AMAug 6
    to David Grogan, Code Review Nudger, AI Code Reviewer, David Bokan, AyeAye, Ian Kilpatrick, Chromium LUCI CQ, Alexis Menard, chromium...@chromium.org, Olga Gerchikov, blink-revi...@chromium.org, blink-re...@chromium.org, apavlo...@chromium.org, blink-rev...@chromium.org, blink-revie...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-...@chromium.org, zol...@webkit.org
    Attention needed from David Grogan and Ian Kilpatrick

    David Awogbemila added 1 comment

    Patchset-level comments
    File-level comment, Patchset 23 (Latest):
    David Awogbemila . resolved

    +dgrogan as it looks like Ian is OOO this week. Ptal David, thanks.

    Open in Gerrit

    Related details

    Attention is currently required from:
    • David Grogan
    • Ian Kilpatrick
    Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement is not satisfiedCode-Owners
    • requirement is not satisfiedCode-Review
    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: I8e06a20f62aa5f7faa0ae887f348c3029c8d97a7
    Gerrit-Change-Number: 6767352
    Gerrit-PatchSet: 23
    Gerrit-Owner: David Awogbemila <awogb...@chromium.org>
    Gerrit-Reviewer: David Awogbemila <awogb...@chromium.org>
    Gerrit-Reviewer: David Grogan <dgr...@chromium.org>
    Gerrit-Reviewer: Ian Kilpatrick <ikilp...@chromium.org>
    Gerrit-CC: AI Code Reviewer <peep-gen...@system.gserviceaccount.com>
    Gerrit-CC: Alexis Menard <alexis...@intel.com>
    Gerrit-CC: Code Review Nudger <android-build...@prod.google.com>
    Gerrit-CC: David Bokan <bo...@chromium.org>
    Gerrit-CC: Olga Gerchikov <gerc...@microsoft.com>
    Gerrit-Attention: David Grogan <dgr...@chromium.org>
    Gerrit-Attention: Ian Kilpatrick <ikilp...@chromium.org>
    Gerrit-Comment-Date: Wed, 06 Aug 2025 15:31:41 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    David Awogbemila (Gerrit)

    unread,
    Aug 6, 2025, 2:25:09 PMAug 6
    to Ian Kilpatrick, David Grogan, Code Review Nudger, AI Code Reviewer, David Bokan, AyeAye, Chromium LUCI CQ, Alexis Menard, chromium...@chromium.org, Olga Gerchikov, blink-revi...@chromium.org, blink-re...@chromium.org, apavlo...@chromium.org, blink-rev...@chromium.org, blink-revie...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-...@chromium.org, zol...@webkit.org
    Attention needed from David Grogan and Ian Kilpatrick

    David Awogbemila voted and added 1 comment

    Votes added by David Awogbemila

    Commit-Queue+1

    1 comment

    Patchset-level comments
    David Awogbemila . resolved

    Thinking about it a bit more, it might be better to wait for Ian to return as we've met to discuss this work and he already has a lot of the context.
    Sorry for the churn @dgr...@chromium.org!

    Open in Gerrit

    Related details

    Attention is currently required from:
    • David Grogan
    • Ian Kilpatrick
    Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement is not satisfiedCode-Owners
    • requirement is not satisfiedCode-Review
    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: I8e06a20f62aa5f7faa0ae887f348c3029c8d97a7
    Gerrit-Change-Number: 6767352
    Gerrit-PatchSet: 23
    Gerrit-Owner: David Awogbemila <awogb...@chromium.org>
    Gerrit-Reviewer: David Awogbemila <awogb...@chromium.org>
    Gerrit-Reviewer: Ian Kilpatrick <ikilp...@chromium.org>
    Gerrit-CC: AI Code Reviewer <peep-gen...@system.gserviceaccount.com>
    Gerrit-CC: Alexis Menard <alexis...@intel.com>
    Gerrit-CC: Code Review Nudger <android-build...@prod.google.com>
    Gerrit-CC: David Bokan <bo...@chromium.org>
    Gerrit-CC: David Grogan <dgr...@chromium.org>
    Gerrit-CC: Olga Gerchikov <gerc...@microsoft.com>
    Gerrit-Attention: David Grogan <dgr...@chromium.org>
    Gerrit-Attention: Ian Kilpatrick <ikilp...@chromium.org>
    Gerrit-Comment-Date: Wed, 06 Aug 2025 18:25:04 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: Yes
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    David Grogan (Gerrit)

    unread,
    Aug 6, 2025, 2:59:14 PMAug 6
    to David Awogbemila, Ian Kilpatrick, David Grogan, Code Review Nudger, AI Code Reviewer, David Bokan, AyeAye, Chromium LUCI CQ, Alexis Menard, chromium...@chromium.org, Olga Gerchikov, blink-revi...@chromium.org, blink-re...@chromium.org, apavlo...@chromium.org, blink-rev...@chromium.org, blink-revie...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-...@chromium.org, zol...@webkit.org
    Attention needed from David Awogbemila and Ian Kilpatrick

    David Grogan added 1 comment

    Patchset-level comments
    David Awogbemila . resolved

    Thinking about it a bit more, it might be better to wait for Ian to return as we've met to discuss this work and he already has a lot of the context.
    Sorry for the churn @dgr...@chromium.org!

    David Grogan

    NP, I was going to suggest that also, for the same reason 😊

    Open in Gerrit

    Related details

    Attention is currently required from:
    • David Awogbemila
    • Ian Kilpatrick
    Gerrit-Attention: Ian Kilpatrick <ikilp...@chromium.org>
    Gerrit-Attention: David Awogbemila <awogb...@chromium.org>
    Gerrit-Comment-Date: Wed, 06 Aug 2025 18:59:05 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    Comment-In-Reply-To: David Awogbemila <awogb...@chromium.org>
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    David Awogbemila (Gerrit)

    unread,
    Aug 11, 2025, 3:09:23 PMAug 11
    to awogb...@google.com, Ian Kilpatrick, David Grogan, Code Review Nudger, AI Code Reviewer, David Bokan, AyeAye, Chromium LUCI CQ, Alexis Menard, chromium...@chromium.org, Olga Gerchikov, blink-revi...@chromium.org, blink-re...@chromium.org, apavlo...@chromium.org, blink-rev...@chromium.org, blink-revie...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-...@chromium.org, zol...@webkit.org
    Attention needed from Ian Kilpatrick

    David Awogbemila removed awogb...@google.com from this change

    Deleted Reviewers:
    Open in Gerrit

    Related details

    Attention is currently required from:
    • Ian Kilpatrick
    Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement is not satisfiedCode-Owners
    • requirement is not satisfiedCode-Review
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: deleteReviewer
    Gerrit-Project: chromium/src
    Gerrit-Branch: main
    Gerrit-Change-Id: I8e06a20f62aa5f7faa0ae887f348c3029c8d97a7
    Gerrit-Change-Number: 6767352
    Gerrit-PatchSet: 24
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Ian Kilpatrick (Gerrit)

    unread,
    Aug 13, 2025, 6:43:55 PMAug 13
    to David Awogbemila, David Grogan, Code Review Nudger, AI Code Reviewer, David Bokan, AyeAye, Chromium LUCI CQ, Alexis Menard, chromium...@chromium.org, Olga Gerchikov, blink-revi...@chromium.org, blink-re...@chromium.org, apavlo...@chromium.org, blink-rev...@chromium.org, blink-revie...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-...@chromium.org, zol...@webkit.org
    Attention needed from David Awogbemila

    Ian Kilpatrick added 4 comments

    File third_party/blink/renderer/core/animation/css/css_animations.cc
    Line 1264, Patchset 24 (Latest): NamedAnimationTriggerMap new_trigger_map = NamedAnimationTriggerMap();
    Ian Kilpatrick . unresolved

    .nit no need to initialize.

    File third_party/blink/renderer/core/dom/element.cc
    Line 12492, Patchset 24 (Latest): }
    Ian Kilpatrick . unresolved

    this might be easier to read as:

    ```
    const bool enqueue = ([&]() {
    if (NamedTriggers()) {
    return true;
    }
    for (const auto& fragment : layout_box->PhysicalFragments()) {
    if (fragment.NamedTriggers()) {
    return true;
    }
    }
    }
    return false;
    });
    ```

    also comments for why enqueuing in each scenario would be good.

    File third_party/blink/renderer/core/layout/fragment_builder.h
    Line 598, Patchset 24 (Latest): NamedAnimationTriggerMap named_triggers_;
    Ian Kilpatrick . unresolved

    Make this a GCedHeapMap

    File third_party/blink/renderer/core/layout/physical_fragment.h
    Line 129, Patchset 24 (Latest): const NamedAnimationTriggerMap named_triggers;
    Ian Kilpatrick . unresolved

    Member<const GCedHeapMap<>>

    Open in Gerrit

    Related details

    Attention is currently required from:
    • David Awogbemila
    Submit Requirements:
      • requirement satisfiedCode-Coverage
      • requirement is not satisfiedCode-Owners
      • requirement is not satisfiedCode-Review
      • requirement is not satisfiedNo-Unresolved-Comments
      • requirement satisfiedRecitation-Check
      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: I8e06a20f62aa5f7faa0ae887f348c3029c8d97a7
      Gerrit-Change-Number: 6767352
      Gerrit-PatchSet: 24
      Gerrit-Owner: David Awogbemila <awogb...@chromium.org>
      Gerrit-Reviewer: David Awogbemila <awogb...@chromium.org>
      Gerrit-Reviewer: Ian Kilpatrick <ikilp...@chromium.org>
      Gerrit-CC: AI Code Reviewer <peep-gen...@system.gserviceaccount.com>
      Gerrit-CC: Alexis Menard <alexis...@intel.com>
      Gerrit-CC: Code Review Nudger <android-build...@prod.google.com>
      Gerrit-CC: David Bokan <bo...@chromium.org>
      Gerrit-CC: David Grogan <dgr...@chromium.org>
      Gerrit-CC: Olga Gerchikov <gerc...@microsoft.com>
      Gerrit-Attention: David Awogbemila <awogb...@chromium.org>
      Gerrit-Comment-Date: Wed, 13 Aug 2025 22:43:45 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      David Awogbemila (Gerrit)

      unread,
      Aug 14, 2025, 1:02:26 PMAug 14
      to awogb...@google.com, Ian Kilpatrick, David Grogan, Code Review Nudger, AI Code Reviewer, David Bokan, AyeAye, Chromium LUCI CQ, Alexis Menard, chromium...@chromium.org, Olga Gerchikov, blink-revi...@chromium.org, blink-re...@chromium.org, apavlo...@chromium.org, blink-rev...@chromium.org, blink-revie...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-...@chromium.org, zol...@webkit.org
      Attention needed from Ian Kilpatrick

      David Awogbemila removed awogb...@google.com from this change

      Deleted Reviewers:
      Open in Gerrit

      Related details

      Attention is currently required from:
      • Ian Kilpatrick
      Submit Requirements:
      • requirement satisfiedCode-Coverage
      • requirement is not satisfiedCode-Owners
      • requirement is not satisfiedCode-Review
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: deleteReviewer
      Gerrit-Project: chromium/src
      Gerrit-Branch: main
      Gerrit-Change-Id: I8e06a20f62aa5f7faa0ae887f348c3029c8d97a7
      Gerrit-Change-Number: 6767352
      Gerrit-PatchSet: 26
      Gerrit-Owner: David Awogbemila <awogb...@chromium.org>
      Gerrit-Reviewer: David Awogbemila <awogb...@chromium.org>
      Gerrit-Reviewer: Ian Kilpatrick <ikilp...@chromium.org>
      Gerrit-CC: AI Code Reviewer <peep-gen...@system.gserviceaccount.com>
      Gerrit-CC: Alexis Menard <alexis...@intel.com>
      Gerrit-CC: Code Review Nudger <android-build...@prod.google.com>
      Gerrit-CC: David Bokan <bo...@chromium.org>
      Gerrit-CC: David Grogan <dgr...@chromium.org>
      Gerrit-CC: Olga Gerchikov <gerc...@microsoft.com>
      Gerrit-Attention: Ian Kilpatrick <ikilp...@chromium.org>
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      David Awogbemila (Gerrit)

      unread,
      Aug 14, 2025, 1:02:36 PMAug 14
      to Ian Kilpatrick, David Grogan, Code Review Nudger, AI Code Reviewer, David Bokan, AyeAye, Chromium LUCI CQ, Alexis Menard, chromium...@chromium.org, Olga Gerchikov, awogb...@google.com, blink-revi...@chromium.org, blink-re...@chromium.org, apavlo...@chromium.org, blink-rev...@chromium.org, blink-revie...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-...@chromium.org, zol...@webkit.org
      Attention needed from Ian Kilpatrick

      David Awogbemila voted and added 4 comments

      Votes added by David Awogbemila

      Commit-Queue+1

      4 comments

      File third_party/blink/renderer/core/animation/css/css_animations.cc
      Line 1264, Patchset 24: NamedAnimationTriggerMap new_trigger_map = NamedAnimationTriggerMap();
      Ian Kilpatrick . resolved

      .nit no need to initialize.

      David Awogbemila

      Done

      File third_party/blink/renderer/core/dom/element.cc
      Line 12492, Patchset 24: }
      Ian Kilpatrick . resolved

      this might be easier to read as:

      ```
      const bool enqueue = ([&]() {
      if (NamedTriggers()) {
      return true;
      }
      for (const auto& fragment : layout_box->PhysicalFragments()) {
      if (fragment.NamedTriggers()) {
      return true;
      }
      }
      }
      return false;
      });
      ```

      also comments for why enqueuing in each scenario would be good.

      David Awogbemila

      Sounds good. Done.

      File third_party/blink/renderer/core/layout/fragment_builder.h
      Line 598, Patchset 24: NamedAnimationTriggerMap named_triggers_;
      Ian Kilpatrick . resolved

      Make this a GCedHeapMap

      David Awogbemila

      Sounds good. Done.

      File third_party/blink/renderer/core/layout/physical_fragment.h
      Line 129, Patchset 24: const NamedAnimationTriggerMap named_triggers;
      Ian Kilpatrick . resolved

      Member<const GCedHeapMap<>>

      David Awogbemila

      Sounds good. Done.

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Ian Kilpatrick
      Submit Requirements:
      • requirement satisfiedCode-Coverage
      • requirement is not satisfiedCode-Owners
      • requirement is not satisfiedCode-Review
      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: I8e06a20f62aa5f7faa0ae887f348c3029c8d97a7
      Gerrit-Change-Number: 6767352
      Gerrit-PatchSet: 26
      Gerrit-Owner: David Awogbemila <awogb...@chromium.org>
      Gerrit-Reviewer: David Awogbemila <awogb...@chromium.org>
      Gerrit-Reviewer: Ian Kilpatrick <ikilp...@chromium.org>
      Gerrit-CC: AI Code Reviewer <peep-gen...@system.gserviceaccount.com>
      Gerrit-CC: Alexis Menard <alexis...@intel.com>
      Gerrit-CC: Code Review Nudger <android-build...@prod.google.com>
      Gerrit-CC: David Bokan <bo...@chromium.org>
      Gerrit-CC: David Grogan <dgr...@chromium.org>
      Gerrit-CC: Olga Gerchikov <gerc...@microsoft.com>
      Gerrit-Attention: Ian Kilpatrick <ikilp...@chromium.org>
      Gerrit-Comment-Date: Thu, 14 Aug 2025 17:01:45 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: Yes
      Comment-In-Reply-To: Ian Kilpatrick <ikilp...@chromium.org>
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Ian Kilpatrick (Gerrit)

      unread,
      Aug 20, 2025, 6:24:51 PMAug 20
      to David Awogbemila, David Grogan, Code Review Nudger, AI Code Reviewer, David Bokan, AyeAye, Chromium LUCI CQ, Alexis Menard, chromium...@chromium.org, Olga Gerchikov, blink-revi...@chromium.org, blink-re...@chromium.org, apavlo...@chromium.org, blink-rev...@chromium.org, blink-revie...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-...@chromium.org, zol...@webkit.org
      Attention needed from David Awogbemila

      Ian Kilpatrick added 2 comments

      File third_party/blink/renderer/core/dom/element.cc
      Line 12499, Patchset 30 (Latest):void Element::EnqueueNamedTriggersUpdateIfNeeded() {
      Ian Kilpatrick . unresolved

      So because this isn't transforming the triggers now, we can remove this entirely, and just access the trigger map of the layout object.

      Previously we couldn't do this but now we can.

      File third_party/blink/renderer/core/layout/fragment_builder.cc
      Line 1113, Patchset 30 (Latest): EnsureNamedTriggers().Set(entry.key, entry.value);
      Ian Kilpatrick . unresolved

      .nit extract this to outside of loop:

      ```
      auto& named_triggers = EnsureNamedTriggers();
      for () {
      named_triggers.Set();
      }
      ```
      Open in Gerrit

      Related details

      Attention is currently required from:
      • David Awogbemila
      Submit Requirements:
        • requirement satisfiedCode-Coverage
        • requirement is not satisfiedCode-Owners
        • requirement is not satisfiedCode-Review
        • requirement is not satisfiedNo-Unresolved-Comments
        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: I8e06a20f62aa5f7faa0ae887f348c3029c8d97a7
        Gerrit-Change-Number: 6767352
        Gerrit-PatchSet: 30
        Gerrit-Owner: David Awogbemila <awogb...@chromium.org>
        Gerrit-Reviewer: David Awogbemila <awogb...@chromium.org>
        Gerrit-Reviewer: Ian Kilpatrick <ikilp...@chromium.org>
        Gerrit-CC: AI Code Reviewer <peep-gen...@system.gserviceaccount.com>
        Gerrit-CC: Alexis Menard <alexis...@intel.com>
        Gerrit-CC: Code Review Nudger <android-build...@prod.google.com>
        Gerrit-CC: David Bokan <bo...@chromium.org>
        Gerrit-CC: David Grogan <dgr...@chromium.org>
        Gerrit-CC: Olga Gerchikov <gerc...@microsoft.com>
        Gerrit-Attention: David Awogbemila <awogb...@chromium.org>
        Gerrit-Comment-Date: Wed, 20 Aug 2025 22:24:41 +0000
        Gerrit-HasComments: Yes
        Gerrit-Has-Labels: No
        satisfied_requirement
        unsatisfied_requirement
        open
        diffy

        Ian Kilpatrick (Gerrit)

        unread,
        Aug 20, 2025, 6:26:30 PMAug 20
        to David Awogbemila, David Grogan, Code Review Nudger, AI Code Reviewer, David Bokan, AyeAye, Chromium LUCI CQ, Alexis Menard, chromium...@chromium.org, Olga Gerchikov, blink-revi...@chromium.org, blink-re...@chromium.org, apavlo...@chromium.org, blink-rev...@chromium.org, blink-revie...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-...@chromium.org, zol...@webkit.org
        Attention needed from David Awogbemila

        Ian Kilpatrick added 1 comment

        File third_party/blink/renderer/core/layout/fragment_builder.cc
        Line 1070, Patchset 30 (Latest): CreateNamedTriggers();
        Ian Kilpatrick . unresolved

        Maybe something like `CreatedNamedTriggersForSelf`

        Gerrit-Comment-Date: Wed, 20 Aug 2025 22:26:20 +0000
        Gerrit-HasComments: Yes
        Gerrit-Has-Labels: No
        satisfied_requirement
        unsatisfied_requirement
        open
        diffy

        David Awogbemila (Gerrit)

        unread,
        Aug 22, 2025, 12:04:21 PMAug 22
        to Ian Kilpatrick, David Grogan, Code Review Nudger, AI Code Reviewer, David Bokan, AyeAye, Chromium LUCI CQ, Alexis Menard, chromium...@chromium.org, Olga Gerchikov, blink-revi...@chromium.org, blink-re...@chromium.org, apavlo...@chromium.org, blink-rev...@chromium.org, blink-revie...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-...@chromium.org, zol...@webkit.org
        Attention needed from Ian Kilpatrick

        David Awogbemila voted and added 4 comments

        Votes added by David Awogbemila

        Commit-Queue+1

        4 comments

        File third_party/blink/renderer/core/dom/element.cc
        Line 4429, Patchset 32 (Latest): style->HasAnimationTrigger()) {
        David Awogbemila . resolved

        I didn't find a problem with reading the triggers off the LayoutBox, but relying on LayoutBox exposed, through a failing test[1], a potential issue.

        In the test[1], script would start running (`Element.getAnimations()`), expecting to see a side effect of the triggers' having been attached to the animation, but because layout hadn't happened yet, there was no trigger in the LayoutBox and the expected side effect was absent.

        I addressed this by making `HasAnimationTrigger` one of the conditions that indicates style is affected by layout. Seems reasonable to me given that we need layout to happen to find the animation to attach to. Happy to work out any concerns though.

        [1] https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/web_tests/external/wpt/scroll-animations/animation-trigger/animation-trigger-getanimations.tentative.html;l=1

        Line 12499, Patchset 30:void Element::EnqueueNamedTriggersUpdateIfNeeded() {
        Ian Kilpatrick . resolved

        So because this isn't transforming the triggers now, we can remove this entirely, and just access the trigger map of the layout object.

        Previously we couldn't do this but now we can.

        David Awogbemila

        Sounds good. Done.

        File third_party/blink/renderer/core/layout/fragment_builder.cc
        Line 1070, Patchset 30: CreateNamedTriggers();
        Ian Kilpatrick . resolved

        Maybe something like `CreatedNamedTriggersForSelf`

        David Awogbemila

        Sounds good. Done.

        Line 1113, Patchset 30: EnsureNamedTriggers().Set(entry.key, entry.value);
        Ian Kilpatrick . resolved

        .nit extract this to outside of loop:

        ```
        auto& named_triggers = EnsureNamedTriggers();
        for () {
        named_triggers.Set();
        }
        ```
        David Awogbemila

        Sounds good. Done.

        Open in Gerrit

        Related details

        Attention is currently required from:
        • Ian Kilpatrick
        Submit Requirements:
        • requirement satisfiedCode-Coverage
        • requirement is not satisfiedCode-Owners
        • requirement is not satisfiedCode-Review
        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: I8e06a20f62aa5f7faa0ae887f348c3029c8d97a7
        Gerrit-Change-Number: 6767352
        Gerrit-PatchSet: 32
        Gerrit-Owner: David Awogbemila <awogb...@chromium.org>
        Gerrit-Reviewer: David Awogbemila <awogb...@chromium.org>
        Gerrit-Reviewer: Ian Kilpatrick <ikilp...@chromium.org>
        Gerrit-CC: AI Code Reviewer <peep-gen...@system.gserviceaccount.com>
        Gerrit-CC: Alexis Menard <alexis...@intel.com>
        Gerrit-CC: Code Review Nudger <android-build...@prod.google.com>
        Gerrit-CC: David Bokan <bo...@chromium.org>
        Gerrit-CC: David Grogan <dgr...@chromium.org>
        Gerrit-CC: Olga Gerchikov <gerc...@microsoft.com>
        Gerrit-Attention: Ian Kilpatrick <ikilp...@chromium.org>
        Gerrit-Comment-Date: Fri, 22 Aug 2025 16:04:13 +0000
        satisfied_requirement
        unsatisfied_requirement
        open
        diffy

        Ian Kilpatrick (Gerrit)

        unread,
        Aug 22, 2025, 1:04:45 PMAug 22
        to David Awogbemila, David Grogan, Code Review Nudger, AI Code Reviewer, David Bokan, AyeAye, Chromium LUCI CQ, Alexis Menard, chromium...@chromium.org, Olga Gerchikov, blink-revi...@chromium.org, blink-re...@chromium.org, apavlo...@chromium.org, blink-rev...@chromium.org, blink-revie...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-...@chromium.org, zol...@webkit.org
        Attention needed from David Awogbemila

        Ian Kilpatrick voted Code-Review+1

        Code-Review+1
        Open in Gerrit

        Related details

        Attention is currently required from:
        • David Awogbemila
        Submit Requirements:
        • requirement satisfiedCode-Coverage
        • requirement satisfiedCode-Owners
        • requirement satisfiedCode-Review
        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: I8e06a20f62aa5f7faa0ae887f348c3029c8d97a7
        Gerrit-Change-Number: 6767352
        Gerrit-PatchSet: 32
        Gerrit-Owner: David Awogbemila <awogb...@chromium.org>
        Gerrit-Reviewer: David Awogbemila <awogb...@chromium.org>
        Gerrit-Reviewer: Ian Kilpatrick <ikilp...@chromium.org>
        Gerrit-CC: AI Code Reviewer <peep-gen...@system.gserviceaccount.com>
        Gerrit-CC: Alexis Menard <alexis...@intel.com>
        Gerrit-CC: Code Review Nudger <android-build...@prod.google.com>
        Gerrit-CC: David Bokan <bo...@chromium.org>
        Gerrit-CC: David Grogan <dgr...@chromium.org>
        Gerrit-CC: Olga Gerchikov <gerc...@microsoft.com>
        Gerrit-Attention: David Awogbemila <awogb...@chromium.org>
        Gerrit-Comment-Date: Fri, 22 Aug 2025 17:04:34 +0000
        Gerrit-HasComments: No
        Gerrit-Has-Labels: Yes
        satisfied_requirement
        open
        diffy

        David Awogbemila (Gerrit)

        unread,
        Aug 22, 2025, 1:33:10 PMAug 22
        to Ian Kilpatrick, David Grogan, Code Review Nudger, AI Code Reviewer, David Bokan, AyeAye, Chromium LUCI CQ, Alexis Menard, chromium...@chromium.org, Olga Gerchikov, blink-revi...@chromium.org, blink-re...@chromium.org, apavlo...@chromium.org, blink-rev...@chromium.org, blink-revie...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-...@chromium.org, zol...@webkit.org

        David Awogbemila 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
        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: I8e06a20f62aa5f7faa0ae887f348c3029c8d97a7
        Gerrit-Change-Number: 6767352
        Gerrit-PatchSet: 32
        Gerrit-Owner: David Awogbemila <awogb...@chromium.org>
        Gerrit-Reviewer: David Awogbemila <awogb...@chromium.org>
        Gerrit-Reviewer: Ian Kilpatrick <ikilp...@chromium.org>
        Gerrit-CC: AI Code Reviewer <peep-gen...@system.gserviceaccount.com>
        Gerrit-CC: Alexis Menard <alexis...@intel.com>
        Gerrit-CC: Code Review Nudger <android-build...@prod.google.com>
        Gerrit-CC: David Bokan <bo...@chromium.org>
        Gerrit-CC: David Grogan <dgr...@chromium.org>
        Gerrit-CC: Olga Gerchikov <gerc...@microsoft.com>
        Gerrit-Comment-Date: Fri, 22 Aug 2025 17:33:05 +0000
        Gerrit-HasComments: No
        Gerrit-Has-Labels: Yes
        satisfied_requirement
        open
        diffy

        Chromium LUCI CQ (Gerrit)

        unread,
        Aug 22, 2025, 1:36:10 PMAug 22
        to David Awogbemila, Ian Kilpatrick, David Grogan, Code Review Nudger, AI Code Reviewer, David Bokan, AyeAye, Alexis Menard, chromium...@chromium.org, Olga Gerchikov, blink-revi...@chromium.org, blink-re...@chromium.org, apavlo...@chromium.org, blink-rev...@chromium.org, blink-revie...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-...@chromium.org, zol...@webkit.org

        Chromium LUCI CQ submitted the change

        Change information

        Commit message:
        [animation-trigger] Propagate triggers up the fragment tree.

        The new proposal[1] for animation-trigger is that it declares a name (a
        dashed ident) which is to be matched against the names declared by
        trigger-instantiating properties, i.e.timeline-trigger, event-trigger
        properties. The visibility of the names declared by
        trigger-instantiating properties follows a model similar to anchor-name
        - global by default, with the option of limiting the visibility with
        a (yet to be implemented) scope property.

        We are implementing this in 3 phases:

        1. Compute AnimationTriggers from timeline-trigger declarations
        (crrev.com/c/6813829 ).

        2. Propagate the AnimationTrigger declarations from step1 up through the
        fragment tree. (This patch)

        3. Attach the AnimationTrigger objects to the associated Animations
        after step 2 is done in layout (crrev.com/c/6775141 ).

        This patch achieves the visibility of CSS trigger names by following the
        Blink's anchor-name handling pattern - propagating the relevant
        information up the fragment tree.

        [1] https://github.com/w3c/csswg-drafts/issues/12336
        Bug: 429392773, 390314945
        Change-Id: I8e06a20f62aa5f7faa0ae887f348c3029c8d97a7
        Commit-Queue: David Awogbemila <awogb...@chromium.org>
        Reviewed-by: Ian Kilpatrick <ikilp...@chromium.org>
        Cr-Commit-Position: refs/heads/main@{#1505163}
        Files:
        • M third_party/blink/renderer/core/animation/css/css_animations.cc
        • M third_party/blink/renderer/core/animation/css/css_animations.h
        • M third_party/blink/renderer/core/animation/css/css_animations_test.cc
        • M third_party/blink/renderer/core/dom/element.cc
        • M third_party/blink/renderer/core/dom/named_animation_trigger_map.h
        • M third_party/blink/renderer/core/layout/fragment_builder.cc
        • M third_party/blink/renderer/core/layout/fragment_builder.h
        • M third_party/blink/renderer/core/layout/physical_fragment.cc
        • M third_party/blink/renderer/core/layout/physical_fragment.h
        • M third_party/blink/renderer/core/style/computed_style.cc
        • M third_party/blink/renderer/core/style/computed_style.h
        Change size: M
        Delta: 11 files changed, 155 insertions(+), 27 deletions(-)
        Branch: refs/heads/main
        Submit Requirements:
        • requirement satisfiedCode-Review: +1 by Ian Kilpatrick
        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: I8e06a20f62aa5f7faa0ae887f348c3029c8d97a7
        Gerrit-Change-Number: 6767352
        Gerrit-PatchSet: 33
        Gerrit-Owner: David Awogbemila <awogb...@chromium.org>
        Gerrit-Reviewer: Chromium LUCI CQ <chromiu...@luci-project-accounts.iam.gserviceaccount.com>
        Gerrit-Reviewer: David Awogbemila <awogb...@chromium.org>
        Gerrit-Reviewer: Ian Kilpatrick <ikilp...@chromium.org>
        Gerrit-CC: AI Code Reviewer <peep-gen...@system.gserviceaccount.com>
        Gerrit-CC: Alexis Menard <alexis...@intel.com>
        open
        diffy
        satisfied_requirement
        Reply all
        Reply to author
        Forward
        0 new messages