[a11y][carousel] Remove content from inactive column tabs from AX tree [chromium/src : main]

0 views
Skip to first unread message

Morten Stenshorne (Gerrit)

unread,
Dec 5, 2025, 9:39:58 AM (11 days ago) Dec 5
to Daniil Sakhapov, AyeAye, Lucas Radaelli, Robert Flack, Chromium LUCI CQ, chromium...@chromium.org, (Julie)Jeongeun Kim, Kevin Babbitt, blink-revi...@chromium.org, zol...@webkit.org, abigailbk...@google.com, blink-rev...@chromium.org, blink-re...@chromium.org, blink-...@chromium.org, dtseng...@chromium.org, francisjp...@google.com, josiah...@chromium.org, kyungjunle...@google.com, lucasrada...@google.com, nektar...@chromium.org, yuzo+...@chromium.org
Attention needed from Daniil Sakhapov and Robert Flack

Morten Stenshorne added 4 comments

File third_party/blink/renderer/core/dom/column_pseudo_element.cc
Line 143, Patchset 7 (Latest): // Only process the first fragment for each node to avoid duplicate work
// for fragmented elements.
if (is_first_for_node) {
Morten Stenshorne . unresolved

I don't get this. If a node is fragmented, it should be considered active as long as one fragment is in the active column, no?

File third_party/blink/renderer/core/dom/scroll_marker_group_data.cc
Line 72, Patchset 7 (Latest): return DynamicTo<ColumnPseudoElement>(scroll_marker_pseudo->parentElement());
Morten Stenshorne . unresolved

Can this ever be anything else than ColumnPseudoElement?
Maybe To<> instead of DynamicTo<>?

Line 385, Patchset 7 (Latest):
Morten Stenshorne . unresolved

This seems fine in itself (except for my remark below), but I just started wondering: how do we deal with relayouts? What used to be in the active column may no longer be, and vice versa, if things move around.

Maybe we actually need to update the LayoutObject bit during layout, if there's an active column. In addition to what's here. But we can follow up with a CL to handle that, and not worry about it here.

Line 400, Patchset 7 (Latest): if (!old_column) {
Morten Stenshorne . unresolved

This part needs to be done before `new_column->SetIsInsideInactiveColumnTabForDescendants(false)`, in case some element exists both in the old and the new column (then the element should be considered to be in an active column, right?).

So... above:

```
if (old_column) {
// Mark all content in the old active column as inactive.
old_column->SetIsInsideInactiveColumnTabForDescendants(true);
} else {
[this thing]
}

if (new_column) {
// Mark all content in the new active column as active.
new_column->SetIsInsideInactiveColumnTabForDescendants(false);
}
```
Open in Gerrit

Related details

Attention is currently required from:
  • Daniil Sakhapov
  • 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: Ice00b8022f394eb0f0e2667b1bf81ae6207483ff
Gerrit-Change-Number: 7197847
Gerrit-PatchSet: 7
Gerrit-Owner: Daniil Sakhapov <sakh...@chromium.org>
Gerrit-Reviewer: Daniil Sakhapov <sakh...@chromium.org>
Gerrit-Reviewer: Lucas Radaelli <lucasr...@google.com>
Gerrit-Reviewer: Morten Stenshorne <mste...@chromium.org>
Gerrit-Reviewer: Robert Flack <fla...@chromium.org>
Gerrit-CC: (Julie)Jeongeun Kim <je_jul...@chromium.org>
Gerrit-CC: Akihiro Ota <akihi...@chromium.org>
Gerrit-CC: Kevin Babbitt <kbab...@microsoft.com>
Gerrit-CC: Nektarios Paisios <nek...@chromium.org>
Gerrit-Attention: Daniil Sakhapov <sakh...@chromium.org>
Gerrit-Attention: Robert Flack <fla...@chromium.org>
Gerrit-Comment-Date: Fri, 05 Dec 2025 14:39:44 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
satisfied_requirement
unsatisfied_requirement
open
diffy

Robert Flack (Gerrit)

unread,
Dec 5, 2025, 2:18:33 PM (11 days ago) Dec 5
to Daniil Sakhapov, AyeAye, Lucas Radaelli, Morten Stenshorne, Chromium LUCI CQ, chromium...@chromium.org, (Julie)Jeongeun Kim, Kevin Babbitt, blink-revi...@chromium.org, zol...@webkit.org, abigailbk...@google.com, blink-rev...@chromium.org, blink-re...@chromium.org, blink-...@chromium.org, dtseng...@chromium.org, francisjp...@google.com, josiah...@chromium.org, kyungjunle...@google.com, lucasrada...@google.com, nektar...@chromium.org, yuzo+...@chromium.org
Attention needed from Daniil Sakhapov

Robert Flack added 2 comments

File third_party/blink/renderer/core/dom/column_pseudo_element.cc
Line 143, Patchset 7 (Latest): // Only process the first fragment for each node to avoid duplicate work
// for fragmented elements.
if (is_first_for_node) {
Morten Stenshorne . unresolved

I don't get this. If a node is fragmented, it should be considered active as long as one fragment is in the active column, no?

Robert Flack

Yes, this is correct, any fragment being in the active column should count.

File third_party/blink/renderer/core/dom/scroll_marker_group_data.cc
Line 72, Patchset 7 (Latest): return DynamicTo<ColumnPseudoElement>(scroll_marker_pseudo->parentElement());
Morten Stenshorne . unresolved

Can this ever be anything else than ColumnPseudoElement?
Maybe To<> instead of DynamicTo<>?

Related details

Attention is currently required from:
  • Daniil Sakhapov
Gerrit-Comment-Date: Fri, 05 Dec 2025 19:18:20 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Comment-In-Reply-To: Morten Stenshorne <mste...@chromium.org>
satisfied_requirement
unsatisfied_requirement
open
diffy

Morten Stenshorne (Gerrit)

unread,
Dec 8, 2025, 9:50:17 AM (8 days ago) Dec 8
to Daniil Sakhapov, AyeAye, Lucas Radaelli, Robert Flack, Chromium LUCI CQ, chromium...@chromium.org, (Julie)Jeongeun Kim, Kevin Babbitt, blink-revi...@chromium.org, zol...@webkit.org, abigailbk...@google.com, blink-rev...@chromium.org, blink-re...@chromium.org, blink-...@chromium.org, dtseng...@chromium.org, francisjp...@google.com, josiah...@chromium.org, kyungjunle...@google.com, lucasrada...@google.com, nektar...@chromium.org, yuzo+...@chromium.org
Attention needed from Daniil Sakhapov and Robert Flack

Morten Stenshorne added 1 comment

File third_party/blink/renderer/core/dom/scroll_marker_group_data.cc
Line 72, Patchset 7 (Latest): return DynamicTo<ColumnPseudoElement>(scroll_marker_pseudo->parentElement());
Morten Stenshorne . resolved

Can this ever be anything else than ColumnPseudoElement?
Maybe To<> instead of DynamicTo<>?

Robert Flack

Scroll markers can originate from elements (https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Selectors/::scroll-marker) or columns (https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Selectors/::column).

Morten Stenshorne

Yes, for some reason I assumed that we had to be in multicol here. But I guess not.

Open in Gerrit

Related details

Attention is currently required from:
  • Daniil Sakhapov
  • Robert Flack
Gerrit-Attention: Robert Flack <fla...@chromium.org>
Gerrit-Comment-Date: Mon, 08 Dec 2025 14:50:03 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Comment-In-Reply-To: Robert Flack <fla...@chromium.org>
Comment-In-Reply-To: Morten Stenshorne <mste...@chromium.org>
satisfied_requirement
unsatisfied_requirement
open
diffy

Daniil Sakhapov (Gerrit)

unread,
Dec 15, 2025, 10:26:37 AM (yesterday) Dec 15
to AyeAye, Lucas Radaelli, Robert Flack, Morten Stenshorne, Chromium LUCI CQ, chromium...@chromium.org, (Julie)Jeongeun Kim, Kevin Babbitt, blink-revi...@chromium.org, zol...@webkit.org, abigailbk...@google.com, blink-rev...@chromium.org, blink-re...@chromium.org, blink-...@chromium.org, dtseng...@chromium.org, francisjp...@google.com, josiah...@chromium.org, kyungjunle...@google.com, lucasrada...@google.com, nektar...@chromium.org, yuzo+...@chromium.org
Attention needed from Morten Stenshorne and Robert Flack

Daniil Sakhapov voted and added 4 comments

Votes added by Daniil Sakhapov

Commit-Queue+1

4 comments

Patchset-level comments
File-level comment, Patchset 3:
Robert Flack . resolved

Overall the expectation looks good. I think there may be better ways to optimize the performance - in theory we should only have to walk the column fragments once where it looks like right now it looks like this will walk the fragment descendents again for each non-excluded descendant until it finds that descendant.

Daniil Sakhapov

agree, fixed to compute ignore state only on "roots".

Robert Flack

For some reason i'm unable to `git cl patch` this in to my local tree to test. Does this work if there is an element between the column establishing element and the inner elements? E.g. this is a modified version of your test case:

```html
<!doctype html>

<style>
.carousel {
height: 200px;
width: 200px;
columns: 1;
overflow-x: auto;
overscroll-behavior-x: contain;
scroll-snap-type: x mandatory;
scroll-marker-group: after tabs;
  &::scroll-marker-group {
height: 1rem;
width: 100%;
text-align: center;
}
  &::column {
scroll-snap-align: center;
}
  &::column::scroll-marker {
display: inline-block;
content: '';
width: 1rem;
height: 1rem;
border: 1px solid black;
}
  &::column::scroll-marker:target-current {
background: blue;
}
  & div {
position: relative;
height: 100%;
}

& div div {
display: inline-flex;
width: 30%;
height: 100%;
}
}
</style>
<div id="scroller" class=carousel>
<div>
<div>One</div>
<div>Two</div>
<div>Three</div>
<div>Four</div>
<div>Five</div>
<div>Six</div>
</div>
</div>
```

My thinking was that we might need to set something on all of the visited nodes in a walk or save the visited node in a hashset in order to only require a single walk of the tree.

Robert Flack

That said, I'm not sure how common this kind of setup is.

Daniil Sakhapov

Hmm, it doesn't work indeed.
@mste...@chromium.org active_column->Contains() returns true for the wrapping div from the test, is my impl of Contains that's wrong or the wrapping div is indeed inside ::column?
also, I don't really understand how this setup is supposed to work?

Robert Flack

Right, I expect the wrapping div would be contained, but that not all of its children would be. This is why I'm thinking we may need to do a walk at least as deep as the first non-fragmented children.

Morten Stenshorne

The wrapping DIV is contained by every column. The inner DIVs are atomic inlines and each of them belong only in one of the columns. Nesting like this shouldn't be unusual at all. Sorry, what doesn't work?

The ColumnPseudoElement code looks good now. I don't / didn't know how the accessibility code works, but taking a look at it now, if AXObject::UpdateCachedAttributeValuesIfNeeded() is called for every node in the tree, it does seem problematic (O(n^2)) to do so much work for every node, i.e. locate the active column and check that the node isn't in there.

So maybe we'd be better off with a different approach. When changing the active column, we could mark everything inside the now-inactive column as inactive, and then mark everything inside the now-active column as active (by "marking", I probably mean a bit on LayoutObject or something like that).

Daniil Sakhapov

ptal

Daniil Sakhapov

Done

File third_party/blink/renderer/core/dom/column_pseudo_element.cc
Line 143, Patchset 7: // Only process the first fragment for each node to avoid duplicate work

// for fragmented elements.
if (is_first_for_node) {
Morten Stenshorne . resolved

I don't get this. If a node is fragmented, it should be considered active as long as one fragment is in the active column, no?

Robert Flack

Yes, this is correct, any fragment being in the active column should count.

Daniil Sakhapov

Done

File third_party/blink/renderer/core/dom/scroll_marker_group_data.cc
Line 385, Patchset 7:
Morten Stenshorne . resolved

This seems fine in itself (except for my remark below), but I just started wondering: how do we deal with relayouts? What used to be in the active column may no longer be, and vice versa, if things move around.

Maybe we actually need to update the LayoutObject bit during layout, if there's an active column. In addition to what's here. But we can follow up with a CL to handle that, and not worry about it here.

Daniil Sakhapov

Acknowledged

Line 400, Patchset 7: if (!old_column) {
Morten Stenshorne . resolved

This part needs to be done before `new_column->SetIsInsideInactiveColumnTabForDescendants(false)`, in case some element exists both in the old and the new column (then the element should be considered to be in an active column, right?).

So... above:

```
if (old_column) {
// Mark all content in the old active column as inactive.
old_column->SetIsInsideInactiveColumnTabForDescendants(true);
} else {
[this thing]
}

if (new_column) {
// Mark all content in the new active column as active.
new_column->SetIsInsideInactiveColumnTabForDescendants(false);
}
```
Daniil Sakhapov

Done

Open in Gerrit

Related details

Attention is currently required from:
  • Morten Stenshorne
  • 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: Ice00b8022f394eb0f0e2667b1bf81ae6207483ff
    Gerrit-Change-Number: 7197847
    Gerrit-PatchSet: 8
    Gerrit-Owner: Daniil Sakhapov <sakh...@chromium.org>
    Gerrit-Reviewer: Daniil Sakhapov <sakh...@chromium.org>
    Gerrit-Reviewer: Lucas Radaelli <lucasr...@google.com>
    Gerrit-Reviewer: Morten Stenshorne <mste...@chromium.org>
    Gerrit-Reviewer: Robert Flack <fla...@chromium.org>
    Gerrit-CC: (Julie)Jeongeun Kim <je_jul...@chromium.org>
    Gerrit-CC: Akihiro Ota <akihi...@chromium.org>
    Gerrit-CC: Kevin Babbitt <kbab...@microsoft.com>
    Gerrit-CC: Nektarios Paisios <nek...@chromium.org>
    Gerrit-Attention: Robert Flack <fla...@chromium.org>
    Gerrit-Attention: Morten Stenshorne <mste...@chromium.org>
    Gerrit-Comment-Date: Mon, 15 Dec 2025 15:26:23 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: Yes
    Comment-In-Reply-To: Daniil Sakhapov <sakh...@chromium.org>
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Morten Stenshorne (Gerrit)

    unread,
    Dec 15, 2025, 10:35:33 AM (yesterday) Dec 15
    to Daniil Sakhapov, AyeAye, Lucas Radaelli, Robert Flack, Chromium LUCI CQ, chromium...@chromium.org, (Julie)Jeongeun Kim, Kevin Babbitt, blink-revi...@chromium.org, zol...@webkit.org, abigailbk...@google.com, blink-rev...@chromium.org, blink-re...@chromium.org, blink-...@chromium.org, dtseng...@chromium.org, francisjp...@google.com, josiah...@chromium.org, kyungjunle...@google.com, lucasrada...@google.com, nektar...@chromium.org, yuzo+...@chromium.org
    Attention needed from Daniil Sakhapov and Robert Flack

    Morten Stenshorne added 2 comments

    File third_party/blink/renderer/core/dom/column_pseudo_element.cc
    Line 148, Patchset 8 (Latest): if (is_first_for_node || !is_inactive_) {
    Morten Stenshorne . unresolved

    What breaks if we remove this check?
    Being first or not should really not make a difference.

    File third_party/blink/renderer/core/dom/scroll_marker_group_data.cc
    Line 393, Patchset 8 (Latest): } else if (new_column) {
    Morten Stenshorne . unresolved

    Always true. Change to DCHECK.

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Daniil Sakhapov
    • 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: Ice00b8022f394eb0f0e2667b1bf81ae6207483ff
      Gerrit-Change-Number: 7197847
      Gerrit-PatchSet: 8
      Gerrit-Owner: Daniil Sakhapov <sakh...@chromium.org>
      Gerrit-Reviewer: Daniil Sakhapov <sakh...@chromium.org>
      Gerrit-Reviewer: Lucas Radaelli <lucasr...@google.com>
      Gerrit-Reviewer: Morten Stenshorne <mste...@chromium.org>
      Gerrit-Reviewer: Robert Flack <fla...@chromium.org>
      Gerrit-CC: (Julie)Jeongeun Kim <je_jul...@chromium.org>
      Gerrit-CC: Akihiro Ota <akihi...@chromium.org>
      Gerrit-CC: Kevin Babbitt <kbab...@microsoft.com>
      Gerrit-CC: Nektarios Paisios <nek...@chromium.org>
      Gerrit-Attention: Daniil Sakhapov <sakh...@chromium.org>
      Gerrit-Attention: Robert Flack <fla...@chromium.org>
      Gerrit-Comment-Date: Mon, 15 Dec 2025 15:35:21 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Daniil Sakhapov (Gerrit)

      unread,
      Dec 15, 2025, 10:52:22 AM (yesterday) Dec 15
      to AyeAye, Lucas Radaelli, Robert Flack, Morten Stenshorne, Chromium LUCI CQ, chromium...@chromium.org, (Julie)Jeongeun Kim, Kevin Babbitt, blink-revi...@chromium.org, zol...@webkit.org, abigailbk...@google.com, blink-rev...@chromium.org, blink-re...@chromium.org, blink-...@chromium.org, dtseng...@chromium.org, francisjp...@google.com, josiah...@chromium.org, kyungjunle...@google.com, lucasrada...@google.com, nektar...@chromium.org, yuzo+...@chromium.org
      Attention needed from Morten Stenshorne and Robert Flack

      Daniil Sakhapov added 1 comment

      File third_party/blink/renderer/core/dom/column_pseudo_element.cc
      Line 148, Patchset 8 (Latest): if (is_first_for_node || !is_inactive_) {
      Morten Stenshorne . unresolved

      What breaks if we remove this check?
      Being first or not should really not make a difference.

      Daniil Sakhapov

      just as a micro-optimization? xD

      better to remove?

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Morten Stenshorne
      • Robert Flack
      Gerrit-Attention: Robert Flack <fla...@chromium.org>
      Gerrit-Attention: Morten Stenshorne <mste...@chromium.org>
      Gerrit-Comment-Date: Mon, 15 Dec 2025 15:52:05 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      Comment-In-Reply-To: Morten Stenshorne <mste...@chromium.org>
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Morten Stenshorne (Gerrit)

      unread,
      Dec 15, 2025, 11:52:46 AM (23 hours ago) Dec 15
      to Daniil Sakhapov, AyeAye, Lucas Radaelli, Robert Flack, Chromium LUCI CQ, chromium...@chromium.org, (Julie)Jeongeun Kim, Kevin Babbitt, blink-revi...@chromium.org, zol...@webkit.org, abigailbk...@google.com, blink-rev...@chromium.org, blink-re...@chromium.org, blink-...@chromium.org, dtseng...@chromium.org, francisjp...@google.com, josiah...@chromium.org, kyungjunle...@google.com, lucasrada...@google.com, nektar...@chromium.org, yuzo+...@chromium.org
      Attention needed from Daniil Sakhapov and Robert Flack

      Morten Stenshorne added 1 comment

      File third_party/blink/renderer/core/dom/column_pseudo_element.cc
      Line 148, Patchset 8 (Latest): if (is_first_for_node || !is_inactive_) {
      Morten Stenshorne . unresolved

      What breaks if we remove this check?
      Being first or not should really not make a difference.

      Daniil Sakhapov

      just as a micro-optimization? xD

      better to remove?

      Morten Stenshorne

      Yes, it would probably cause bugs.

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Daniil Sakhapov
      • Robert Flack
      Gerrit-Attention: Daniil Sakhapov <sakh...@chromium.org>
      Gerrit-Attention: Robert Flack <fla...@chromium.org>
      Gerrit-Comment-Date: Mon, 15 Dec 2025 16:52:31 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      Comment-In-Reply-To: Daniil Sakhapov <sakh...@chromium.org>
      Comment-In-Reply-To: Morten Stenshorne <mste...@chromium.org>
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Daniil Sakhapov (Gerrit)

      unread,
      Dec 15, 2025, 12:00:07 PM (23 hours ago) Dec 15
      to AyeAye, Lucas Radaelli, Robert Flack, Morten Stenshorne, Chromium LUCI CQ, chromium...@chromium.org, (Julie)Jeongeun Kim, Kevin Babbitt, blink-revi...@chromium.org, zol...@webkit.org, abigailbk...@google.com, blink-rev...@chromium.org, blink-re...@chromium.org, blink-...@chromium.org, dtseng...@chromium.org, francisjp...@google.com, josiah...@chromium.org, kyungjunle...@google.com, lucasrada...@google.com, nektar...@chromium.org, yuzo+...@chromium.org
      Attention needed from Morten Stenshorne and Robert Flack

      Daniil Sakhapov voted and added 2 comments

      Votes added by Daniil Sakhapov

      Commit-Queue+1

      2 comments

      File third_party/blink/renderer/core/dom/column_pseudo_element.cc
      Line 148, Patchset 8: if (is_first_for_node || !is_inactive_) {
      Morten Stenshorne . resolved

      What breaks if we remove this check?
      Being first or not should really not make a difference.

      Daniil Sakhapov

      just as a micro-optimization? xD

      better to remove?

      Morten Stenshorne

      Yes, it would probably cause bugs.

      Daniil Sakhapov

      Done

      File third_party/blink/renderer/core/dom/scroll_marker_group_data.cc
      Line 393, Patchset 8: } else if (new_column) {
      Morten Stenshorne . resolved

      Always true. Change to DCHECK.

      Daniil Sakhapov

      Done

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Morten Stenshorne
      • 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: Ice00b8022f394eb0f0e2667b1bf81ae6207483ff
        Gerrit-Change-Number: 7197847
        Gerrit-PatchSet: 9
        Gerrit-Owner: Daniil Sakhapov <sakh...@chromium.org>
        Gerrit-Reviewer: Daniil Sakhapov <sakh...@chromium.org>
        Gerrit-Reviewer: Lucas Radaelli <lucasr...@google.com>
        Gerrit-Reviewer: Morten Stenshorne <mste...@chromium.org>
        Gerrit-Reviewer: Robert Flack <fla...@chromium.org>
        Gerrit-CC: (Julie)Jeongeun Kim <je_jul...@chromium.org>
        Gerrit-CC: Akihiro Ota <akihi...@chromium.org>
        Gerrit-CC: Kevin Babbitt <kbab...@microsoft.com>
        Gerrit-CC: Nektarios Paisios <nek...@chromium.org>
        Gerrit-Attention: Robert Flack <fla...@chromium.org>
        Gerrit-Attention: Morten Stenshorne <mste...@chromium.org>
        Gerrit-Comment-Date: Mon, 15 Dec 2025 16:59:54 +0000
        Gerrit-HasComments: Yes
        Gerrit-Has-Labels: Yes
        satisfied_requirement
        unsatisfied_requirement
        open
        diffy

        Morten Stenshorne (Gerrit)

        unread,
        Dec 15, 2025, 12:21:02 PM (23 hours ago) Dec 15
        to Daniil Sakhapov, AyeAye, Lucas Radaelli, Robert Flack, Chromium LUCI CQ, chromium...@chromium.org, (Julie)Jeongeun Kim, Kevin Babbitt, blink-revi...@chromium.org, zol...@webkit.org, abigailbk...@google.com, blink-rev...@chromium.org, blink-re...@chromium.org, blink-...@chromium.org, dtseng...@chromium.org, francisjp...@google.com, josiah...@chromium.org, kyungjunle...@google.com, lucasrada...@google.com, nektar...@chromium.org, yuzo+...@chromium.org
        Attention needed from Daniil Sakhapov and Robert Flack

        Morten Stenshorne added 2 comments

        Patchset-level comments
        File-level comment, Patchset 9 (Latest):
        Morten Stenshorne . resolved

        Is everything ready for review?

        File third_party/blink/renderer/modules/accessibility/ax_node_object.cc
        Line 1279, Patchset 9 (Latest): return true;
        Morten Stenshorne . unresolved

        Is this still needed, and what does it have to do with columns?

        Open in Gerrit

        Related details

        Attention is currently required from:
        • Daniil Sakhapov
        • 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: Ice00b8022f394eb0f0e2667b1bf81ae6207483ff
          Gerrit-Change-Number: 7197847
          Gerrit-PatchSet: 9
          Gerrit-Owner: Daniil Sakhapov <sakh...@chromium.org>
          Gerrit-Reviewer: Daniil Sakhapov <sakh...@chromium.org>
          Gerrit-Reviewer: Lucas Radaelli <lucasr...@google.com>
          Gerrit-Reviewer: Morten Stenshorne <mste...@chromium.org>
          Gerrit-Reviewer: Robert Flack <fla...@chromium.org>
          Gerrit-CC: (Julie)Jeongeun Kim <je_jul...@chromium.org>
          Gerrit-CC: Akihiro Ota <akihi...@chromium.org>
          Gerrit-CC: Kevin Babbitt <kbab...@microsoft.com>
          Gerrit-CC: Nektarios Paisios <nek...@chromium.org>
          Gerrit-Attention: Daniil Sakhapov <sakh...@chromium.org>
          Gerrit-Attention: Robert Flack <fla...@chromium.org>
          Gerrit-Comment-Date: Mon, 15 Dec 2025 17:20:49 +0000
          Gerrit-HasComments: Yes
          Gerrit-Has-Labels: No
          satisfied_requirement
          unsatisfied_requirement
          open
          diffy

          Daniil Sakhapov (Gerrit)

          unread,
          Dec 15, 2025, 12:26:36 PM (23 hours ago) Dec 15
          to AyeAye, Lucas Radaelli, Robert Flack, Morten Stenshorne, Chromium LUCI CQ, chromium...@chromium.org, (Julie)Jeongeun Kim, Kevin Babbitt, blink-revi...@chromium.org, zol...@webkit.org, abigailbk...@google.com, blink-rev...@chromium.org, blink-re...@chromium.org, blink-...@chromium.org, dtseng...@chromium.org, francisjp...@google.com, josiah...@chromium.org, kyungjunle...@google.com, lucasrada...@google.com, nektar...@chromium.org, yuzo+...@chromium.org
          Attention needed from Morten Stenshorne and Robert Flack

          Daniil Sakhapov added 2 comments

          Patchset-level comments
          Morten Stenshorne . resolved

          Is everything ready for review?

          Daniil Sakhapov

          👍

          File third_party/blink/renderer/modules/accessibility/ax_node_object.cc
          Morten Stenshorne . unresolved

          Is this still needed, and what does it have to do with columns?

          Daniil Sakhapov

          This function is to handle "am I inside an originating element for inactive ::scroll-marker " case. Nothing to do with columns.
          Hence, in this case I can just inherit that flag from the parent.

          Open in Gerrit

          Related details

          Attention is currently required from:
          • Morten Stenshorne
          • Robert Flack
          Gerrit-Attention: Robert Flack <fla...@chromium.org>
          Gerrit-Attention: Morten Stenshorne <mste...@chromium.org>
          Gerrit-Comment-Date: Mon, 15 Dec 2025 17:26:17 +0000
          Gerrit-HasComments: Yes
          Gerrit-Has-Labels: No
          Comment-In-Reply-To: Morten Stenshorne <mste...@chromium.org>
          satisfied_requirement
          unsatisfied_requirement
          open
          diffy

          Morten Stenshorne (Gerrit)

          unread,
          Dec 15, 2025, 12:29:11 PM (23 hours ago) Dec 15
          to Daniil Sakhapov, AyeAye, Lucas Radaelli, Robert Flack, Chromium LUCI CQ, chromium...@chromium.org, (Julie)Jeongeun Kim, Kevin Babbitt, blink-revi...@chromium.org, zol...@webkit.org, abigailbk...@google.com, blink-rev...@chromium.org, blink-re...@chromium.org, blink-...@chromium.org, dtseng...@chromium.org, francisjp...@google.com, josiah...@chromium.org, kyungjunle...@google.com, lucasrada...@google.com, nektar...@chromium.org, yuzo+...@chromium.org
          Attention needed from Daniil Sakhapov and Robert Flack

          Morten Stenshorne added 1 comment

          File third_party/blink/renderer/modules/accessibility/ax_node_object.cc
          Morten Stenshorne . unresolved

          Is this still needed, and what does it have to do with columns?

          Daniil Sakhapov

          This function is to handle "am I inside an originating element for inactive ::scroll-marker " case. Nothing to do with columns.
          Hence, in this case I can just inherit that flag from the parent.

          Morten Stenshorne

          Isn't this CL about something column-specific, though?
          Maybe do it in a different CL. I can't see any tests for it, either.

          Open in Gerrit

          Related details

          Attention is currently required from:
          • Daniil Sakhapov
          • Robert Flack
          Gerrit-Attention: Daniil Sakhapov <sakh...@chromium.org>
          Gerrit-Attention: Robert Flack <fla...@chromium.org>
          Gerrit-Comment-Date: Mon, 15 Dec 2025 17:28:55 +0000
          Gerrit-HasComments: Yes
          Gerrit-Has-Labels: No
          satisfied_requirement
          unsatisfied_requirement
          open
          diffy

          Daniil Sakhapov (Gerrit)

          unread,
          Dec 15, 2025, 1:06:24 PM (22 hours ago) Dec 15
          to AyeAye, Lucas Radaelli, Robert Flack, Morten Stenshorne, Chromium LUCI CQ, chromium...@chromium.org, (Julie)Jeongeun Kim, Kevin Babbitt, blink-revi...@chromium.org, zol...@webkit.org, abigailbk...@google.com, blink-rev...@chromium.org, blink-re...@chromium.org, blink-...@chromium.org, dtseng...@chromium.org, francisjp...@google.com, josiah...@chromium.org, kyungjunle...@google.com, lucasrada...@google.com, nektar...@chromium.org, yuzo+...@chromium.org
          Attention needed from Morten Stenshorne and Robert Flack

          Daniil Sakhapov added 1 comment

          File third_party/blink/renderer/modules/accessibility/ax_node_object.cc
          Morten Stenshorne . unresolved

          Is this still needed, and what does it have to do with columns?

          Daniil Sakhapov

          This function is to handle "am I inside an originating element for inactive ::scroll-marker " case. Nothing to do with columns.
          Hence, in this case I can just inherit that flag from the parent.

          Morten Stenshorne

          Isn't this CL about something column-specific, though?
          Maybe do it in a different CL. I can't see any tests for it, either.

          Daniil Sakhapov

          it's just a small fix that is covered by content/test/data/accessibility/css/carousel-with-column-tabs-expected-blink.txt
          I'd like to keep it, if that's OK?

          Open in Gerrit

          Related details

          Attention is currently required from:
          • Morten Stenshorne
          • Robert Flack
          Gerrit-Attention: Robert Flack <fla...@chromium.org>
          Gerrit-Attention: Morten Stenshorne <mste...@chromium.org>
          Gerrit-Comment-Date: Mon, 15 Dec 2025 18:06:06 +0000
          satisfied_requirement
          unsatisfied_requirement
          open
          diffy

          Morten Stenshorne (Gerrit)

          unread,
          Dec 15, 2025, 1:16:02 PM (22 hours ago) Dec 15
          to Daniil Sakhapov, AyeAye, Lucas Radaelli, Robert Flack, Chromium LUCI CQ, chromium...@chromium.org, (Julie)Jeongeun Kim, Kevin Babbitt, blink-revi...@chromium.org, zol...@webkit.org, abigailbk...@google.com, blink-rev...@chromium.org, blink-re...@chromium.org, blink-...@chromium.org, dtseng...@chromium.org, francisjp...@google.com, josiah...@chromium.org, kyungjunle...@google.com, lucasrada...@google.com, nektar...@chromium.org, yuzo+...@chromium.org
          Attention needed from Daniil Sakhapov and Robert Flack

          Morten Stenshorne added 1 comment

          File third_party/blink/renderer/modules/accessibility/ax_node_object.cc
          Morten Stenshorne . unresolved

          Is this still needed, and what does it have to do with columns?

          Daniil Sakhapov

          This function is to handle "am I inside an originating element for inactive ::scroll-marker " case. Nothing to do with columns.
          Hence, in this case I can just inherit that flag from the parent.

          Morten Stenshorne

          Isn't this CL about something column-specific, though?
          Maybe do it in a different CL. I can't see any tests for it, either.

          Daniil Sakhapov

          it's just a small fix that is covered by content/test/data/accessibility/css/carousel-with-column-tabs-expected-blink.txt
          I'd like to keep it, if that's OK?

          Morten Stenshorne

          Only if there are inter-dependencies between that and the rest.
          Small fix, small CL?

          Open in Gerrit

          Related details

          Attention is currently required from:
          • Daniil Sakhapov
          • Robert Flack
          Gerrit-Attention: Daniil Sakhapov <sakh...@chromium.org>
          Gerrit-Attention: Robert Flack <fla...@chromium.org>
          Gerrit-Comment-Date: Mon, 15 Dec 2025 18:15:43 +0000
          satisfied_requirement
          unsatisfied_requirement
          open
          diffy

          Daniil Sakhapov (Gerrit)

          unread,
          Dec 15, 2025, 1:18:32 PM (22 hours ago) Dec 15
          to AyeAye, Lucas Radaelli, Robert Flack, Morten Stenshorne, Chromium LUCI CQ, chromium...@chromium.org, (Julie)Jeongeun Kim, Kevin Babbitt, blink-revi...@chromium.org, zol...@webkit.org, abigailbk...@google.com, blink-rev...@chromium.org, blink-re...@chromium.org, blink-...@chromium.org, dtseng...@chromium.org, francisjp...@google.com, josiah...@chromium.org, kyungjunle...@google.com, lucasrada...@google.com, nektar...@chromium.org, yuzo+...@chromium.org
          Attention needed from Morten Stenshorne and Robert Flack

          Daniil Sakhapov added 1 comment

          File third_party/blink/renderer/modules/accessibility/ax_node_object.cc
          Morten Stenshorne . unresolved

          Is this still needed, and what does it have to do with columns?

          Daniil Sakhapov

          This function is to handle "am I inside an originating element for inactive ::scroll-marker " case. Nothing to do with columns.
          Hence, in this case I can just inherit that flag from the parent.

          Morten Stenshorne

          Isn't this CL about something column-specific, though?
          Maybe do it in a different CL. I can't see any tests for it, either.

          Daniil Sakhapov

          it's just a small fix that is covered by content/test/data/accessibility/css/carousel-with-column-tabs-expected-blink.txt
          I'd like to keep it, if that's OK?

          Morten Stenshorne

          Only if there are inter-dependencies between that and the rest.
          Small fix, small CL?

          Daniil Sakhapov

          I've introduced IsDescendantOfTabsModeScroller in this CL and changed a couple of names here and there.
          But I guess it can be split out, if much needed.

          Open in Gerrit

          Related details

          Attention is currently required from:
          • Morten Stenshorne
          • Robert Flack
          Gerrit-Attention: Robert Flack <fla...@chromium.org>
          Gerrit-Attention: Morten Stenshorne <mste...@chromium.org>
          Gerrit-Comment-Date: Mon, 15 Dec 2025 18:18:14 +0000
          satisfied_requirement
          unsatisfied_requirement
          open
          diffy

          Morten Stenshorne (Gerrit)

          unread,
          Dec 15, 2025, 2:49:02 PM (20 hours ago) Dec 15
          to Daniil Sakhapov, AyeAye, Lucas Radaelli, Robert Flack, Chromium LUCI CQ, chromium...@chromium.org, (Julie)Jeongeun Kim, Kevin Babbitt, blink-revi...@chromium.org, zol...@webkit.org, abigailbk...@google.com, blink-rev...@chromium.org, blink-re...@chromium.org, blink-...@chromium.org, dtseng...@chromium.org, francisjp...@google.com, josiah...@chromium.org, kyungjunle...@google.com, lucasrada...@google.com, nektar...@chromium.org, yuzo+...@chromium.org
          Attention needed from Daniil Sakhapov and Robert Flack

          Morten Stenshorne added 1 comment

          File third_party/blink/renderer/modules/accessibility/ax_node_object.cc
          Morten Stenshorne . unresolved

          Is this still needed, and what does it have to do with columns?

          Daniil Sakhapov

          This function is to handle "am I inside an originating element for inactive ::scroll-marker " case. Nothing to do with columns.
          Hence, in this case I can just inherit that flag from the parent.

          Morten Stenshorne

          Isn't this CL about something column-specific, though?
          Maybe do it in a different CL. I can't see any tests for it, either.

          Daniil Sakhapov

          it's just a small fix that is covered by content/test/data/accessibility/css/carousel-with-column-tabs-expected-blink.txt
          I'd like to keep it, if that's OK?

          Morten Stenshorne

          Only if there are inter-dependencies between that and the rest.
          Small fix, small CL?

          Daniil Sakhapov

          I've introduced IsDescendantOfTabsModeScroller in this CL and changed a couple of names here and there.
          But I guess it can be split out, if much needed.

          Morten Stenshorne

          Yes please. Let this CL be about "Remove content from inactive column tabs from AX tree". Much cleaner.

          Open in Gerrit

          Related details

          Attention is currently required from:
          • Daniil Sakhapov
          • Robert Flack
          Gerrit-Attention: Daniil Sakhapov <sakh...@chromium.org>
          Gerrit-Attention: Robert Flack <fla...@chromium.org>
          Gerrit-Comment-Date: Mon, 15 Dec 2025 19:48:43 +0000
          satisfied_requirement
          unsatisfied_requirement
          open
          diffy

          Daniil Sakhapov (Gerrit)

          unread,
          Dec 15, 2025, 3:31:08 PM (20 hours ago) Dec 15
          to AyeAye, Lucas Radaelli, Robert Flack, Morten Stenshorne, Chromium LUCI CQ, chromium...@chromium.org, (Julie)Jeongeun Kim, Kevin Babbitt, blink-revi...@chromium.org, zol...@webkit.org, abigailbk...@google.com, blink-rev...@chromium.org, blink-re...@chromium.org, blink-...@chromium.org, dtseng...@chromium.org, francisjp...@google.com, josiah...@chromium.org, kyungjunle...@google.com, lucasrada...@google.com, nektar...@chromium.org, yuzo+...@chromium.org
          Attention needed from Morten Stenshorne and Robert Flack

          Daniil Sakhapov voted and added 1 comment

          Votes added by Daniil Sakhapov

          Commit-Queue+1

          1 comment

          File third_party/blink/renderer/modules/accessibility/ax_node_object.cc
          Line 1279, Patchset 9: return true;
          Morten Stenshorne . resolved

          Is this still needed, and what does it have to do with columns?

          Daniil Sakhapov

          This function is to handle "am I inside an originating element for inactive ::scroll-marker " case. Nothing to do with columns.
          Hence, in this case I can just inherit that flag from the parent.

          Morten Stenshorne

          Isn't this CL about something column-specific, though?
          Maybe do it in a different CL. I can't see any tests for it, either.

          Daniil Sakhapov

          it's just a small fix that is covered by content/test/data/accessibility/css/carousel-with-column-tabs-expected-blink.txt
          I'd like to keep it, if that's OK?

          Morten Stenshorne

          Only if there are inter-dependencies between that and the rest.
          Small fix, small CL?

          Daniil Sakhapov

          I've introduced IsDescendantOfTabsModeScroller in this CL and changed a couple of names here and there.
          But I guess it can be split out, if much needed.

          Morten Stenshorne

          Yes please. Let this CL be about "Remove content from inactive column tabs from AX tree". Much cleaner.

          Daniil Sakhapov

          Done

          Open in Gerrit

          Related details

          Attention is currently required from:
          • Morten Stenshorne
          • 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: Ice00b8022f394eb0f0e2667b1bf81ae6207483ff
            Gerrit-Change-Number: 7197847
            Gerrit-PatchSet: 10
            Gerrit-Owner: Daniil Sakhapov <sakh...@chromium.org>
            Gerrit-Reviewer: Daniil Sakhapov <sakh...@chromium.org>
            Gerrit-Reviewer: Lucas Radaelli <lucasr...@google.com>
            Gerrit-Reviewer: Morten Stenshorne <mste...@chromium.org>
            Gerrit-Reviewer: Robert Flack <fla...@chromium.org>
            Gerrit-CC: (Julie)Jeongeun Kim <je_jul...@chromium.org>
            Gerrit-CC: Akihiro Ota <akihi...@chromium.org>
            Gerrit-CC: Kevin Babbitt <kbab...@microsoft.com>
            Gerrit-CC: Nektarios Paisios <nek...@chromium.org>
            Gerrit-Attention: Robert Flack <fla...@chromium.org>
            Gerrit-Attention: Morten Stenshorne <mste...@chromium.org>
            Gerrit-Comment-Date: Mon, 15 Dec 2025 20:30:54 +0000
            Gerrit-HasComments: Yes
            Gerrit-Has-Labels: Yes
            satisfied_requirement
            unsatisfied_requirement
            open
            diffy

            Morten Stenshorne (Gerrit)

            unread,
            Dec 15, 2025, 4:53:02 PM (18 hours ago) Dec 15
            to Daniil Sakhapov, AyeAye, Lucas Radaelli, Robert Flack, Chromium LUCI CQ, chromium...@chromium.org, (Julie)Jeongeun Kim, Kevin Babbitt, blink-revi...@chromium.org, zol...@webkit.org, abigailbk...@google.com, blink-rev...@chromium.org, blink-re...@chromium.org, blink-...@chromium.org, dtseng...@chromium.org, francisjp...@google.com, josiah...@chromium.org, kyungjunle...@google.com, lucasrada...@google.com, nektar...@chromium.org, yuzo+...@chromium.org
            Attention needed from Daniil Sakhapov and Robert Flack

            Morten Stenshorne voted and added 1 comment

            Votes added by Morten Stenshorne

            Code-Review+1

            1 comment

            File third_party/blink/renderer/modules/accessibility/ax_node_object.cc
            Line 1302, Patchset 10 (Latest): if (!layout_object->IsBox()) {
            return ParentObject() && ParentObject()->InsideInactiveColumnTab();
            }
            // The IsInsideInactiveColumnTab bit is set by ScrollMarkerGroupData when
            // the active column changes.
            return layout_object->InsideInactiveColumnTab();
            Morten Stenshorne . unresolved
            ```suggestion
            // The IsInsideInactiveColumnTab bit is set by ScrollMarkerGroupData when
            // the active column changes.
            return layout_object->EnclosingBox()->InsideInactiveColumnTab();
            ```

            Isn't this what we discussed?

            Open in Gerrit

            Related details

            Attention is currently required from:
            • Daniil Sakhapov
            • Robert Flack
            Submit Requirements:
              • requirement satisfiedCode-Coverage
              • requirement is not satisfiedCode-Owners
              • requirement satisfiedCode-Review
              • requirement is not satisfiedNo-Unresolved-Comments
              • 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: Ice00b8022f394eb0f0e2667b1bf81ae6207483ff
              Gerrit-Change-Number: 7197847
              Gerrit-PatchSet: 10
              Gerrit-Owner: Daniil Sakhapov <sakh...@chromium.org>
              Gerrit-Reviewer: Daniil Sakhapov <sakh...@chromium.org>
              Gerrit-Reviewer: Lucas Radaelli <lucasr...@google.com>
              Gerrit-Reviewer: Morten Stenshorne <mste...@chromium.org>
              Gerrit-Reviewer: Robert Flack <fla...@chromium.org>
              Gerrit-CC: (Julie)Jeongeun Kim <je_jul...@chromium.org>
              Gerrit-CC: Akihiro Ota <akihi...@chromium.org>
              Gerrit-CC: Kevin Babbitt <kbab...@microsoft.com>
              Gerrit-CC: Nektarios Paisios <nek...@chromium.org>
              Gerrit-Attention: Daniil Sakhapov <sakh...@chromium.org>
              Gerrit-Attention: Robert Flack <fla...@chromium.org>
              Gerrit-Comment-Date: Mon, 15 Dec 2025 21:52:42 +0000
              Gerrit-HasComments: Yes
              Gerrit-Has-Labels: Yes
              satisfied_requirement
              unsatisfied_requirement
              open
              diffy

              Robert Flack (Gerrit)

              unread,
              Dec 15, 2025, 6:47:31 PM (17 hours ago) Dec 15
              to Daniil Sakhapov, Morten Stenshorne, AyeAye, Lucas Radaelli, Chromium LUCI CQ, chromium...@chromium.org, (Julie)Jeongeun Kim, Kevin Babbitt, blink-revi...@chromium.org, zol...@webkit.org, abigailbk...@google.com, blink-rev...@chromium.org, blink-re...@chromium.org, blink-...@chromium.org, dtseng...@chromium.org, francisjp...@google.com, josiah...@chromium.org, kyungjunle...@google.com, lucasrada...@google.com, nektar...@chromium.org, yuzo+...@chromium.org
              Attention needed from Daniil Sakhapov

              Robert Flack added 3 comments

              File third_party/blink/renderer/core/dom/scroll_marker_group_data.cc
              Line 389, Patchset 10 (Latest): if (old_column != new_column) {
              Robert Flack . unresolved

              What if the layout of the content has changed even if we haven't changed active columns. E.g. if there are currently 3 items on the active column but the first one becomes wide and causes the other 2 to move off to the next column? Here's a demo where you can see it - click on Four to make it grow wide:

                & .wide {
              width: 100%;
              }
              }
              </style>
              <div id="scroller" class=carousel>
              <div>
              <div>One</div>
              <div>Two</div>
              <div>Three</div>
              <div>Four</div>
              <div>Five</div>
              <div>Six</div>
              </div>
              </div>
              <script>
              document.getElementById('scroller').addEventListener('click', (evt) => {
              const target = evt.target;
              if (target.parentElement.parentElement.id != 'scroller') return;
              target.classList.toggle('wide');
              });
              </script>
              ```

              In a similar manner, this could also happen if the browser size changes. I think to whatever extent this is cached it will need to be updated when layout changes.

              File third_party/blink/renderer/core/layout/layout_object.h
              Line 3964, Patchset 10 (Latest): ADD_BOOLEAN_BITFIELD(inside_inactive_column_tab_, InsideInactiveColumnTab);
              Robert Flack . unresolved

              I suspect that it may be cleaner to collect the visited objects from a walk of the active column into a HeapHashSet<WeakMember<LayoutObject>> rather than storing an extra bit on every layoutobject (and would only require walking the active column), however I defer to @mste...@chromium.org whether it's worth doing or just having a bit on the objects.

              File third_party/blink/renderer/modules/accessibility/ax_object.h
              Line 1731, Patchset 10 (Latest): bool cached_is_ignored_as_inside_inactive_column_tab_ : 1 = false;
              Robert Flack . unresolved

              It seems like the ax object is also caching this state, maybe we don't need a cache on the LayoutObject and could just directly set this on the ax objects?

              Open in Gerrit

              Related details

              Attention is currently required from:
              • Daniil Sakhapov
              Gerrit-Comment-Date: Mon, 15 Dec 2025 23:47:25 +0000
              Gerrit-HasComments: Yes
              Gerrit-Has-Labels: No
              satisfied_requirement
              unsatisfied_requirement
              open
              diffy

              Morten Stenshorne (Gerrit)

              unread,
              3:10 AM (8 hours ago) 3:10 AM
              to Daniil Sakhapov, AyeAye, Lucas Radaelli, Robert Flack, Chromium LUCI CQ, chromium...@chromium.org, (Julie)Jeongeun Kim, Kevin Babbitt, blink-revi...@chromium.org, zol...@webkit.org, abigailbk...@google.com, blink-rev...@chromium.org, blink-re...@chromium.org, blink-...@chromium.org, dtseng...@chromium.org, francisjp...@google.com, josiah...@chromium.org, kyungjunle...@google.com, lucasrada...@google.com, nektar...@chromium.org, yuzo+...@chromium.org
              Attention needed from Daniil Sakhapov

              Morten Stenshorne added 3 comments

              File third_party/blink/renderer/core/dom/scroll_marker_group_data.cc
              Morten Stenshorne

              I have already pointed this out, and I suggested that we follow up on it, rather than dealing with it in this CL.

              File third_party/blink/renderer/core/layout/layout_object.h
              Line 3964, Patchset 10 (Latest): ADD_BOOLEAN_BITFIELD(inside_inactive_column_tab_, InsideInactiveColumnTab);
              Robert Flack . unresolved

              I suspect that it may be cleaner to collect the visited objects from a walk of the active column into a HeapHashSet<WeakMember<LayoutObject>> rather than storing an extra bit on every layoutobject (and would only require walking the active column), however I defer to @mste...@chromium.org whether it's worth doing or just having a bit on the objects.

              Morten Stenshorne

              I think the current solution is fine. Also not sure how collecting into a hash set would be workable when updating for layout, since we may hit the (layout) cache and skip subtrees then.

              File third_party/blink/renderer/modules/accessibility/ax_object.h
              Line 1731, Patchset 10 (Latest): bool cached_is_ignored_as_inside_inactive_column_tab_ : 1 = false;
              Robert Flack . unresolved

              It seems like the ax object is also caching this state, maybe we don't need a cache on the LayoutObject and could just directly set this on the ax objects?

              Morten Stenshorne

              If we want to update the state during layout (if things move around, and what's in the active tab no longer is, or vice versa), I think layout is the place to store it.

              Gerrit-Comment-Date: Tue, 16 Dec 2025 08:10:05 +0000
              Gerrit-HasComments: Yes
              Gerrit-Has-Labels: No
              Comment-In-Reply-To: Robert Flack <fla...@chromium.org>
              satisfied_requirement
              unsatisfied_requirement
              open
              diffy

              Daniil Sakhapov (Gerrit)

              unread,
              6:57 AM (4 hours ago) 6:57 AM
              to Morten Stenshorne, AyeAye, Lucas Radaelli, Robert Flack, Chromium LUCI CQ, chromium...@chromium.org, (Julie)Jeongeun Kim, Kevin Babbitt, blink-revi...@chromium.org, zol...@webkit.org, abigailbk...@google.com, blink-rev...@chromium.org, blink-re...@chromium.org, blink-...@chromium.org, dtseng...@chromium.org, francisjp...@google.com, josiah...@chromium.org, kyungjunle...@google.com, lucasrada...@google.com, nektar...@chromium.org, yuzo+...@chromium.org
              Attention needed from Robert Flack

              Daniil Sakhapov voted and added 4 comments

              Votes added by Daniil Sakhapov

              Commit-Queue+1

              4 comments

              File third_party/blink/renderer/core/dom/scroll_marker_group_data.cc
              Line 389, Patchset 10: if (old_column != new_column) {
              Robert Flack . resolved
              Daniil Sakhapov

              Done

              File third_party/blink/renderer/core/layout/layout_object.h
              Line 3964, Patchset 10: ADD_BOOLEAN_BITFIELD(inside_inactive_column_tab_, InsideInactiveColumnTab);
              Robert Flack . resolved

              I suspect that it may be cleaner to collect the visited objects from a walk of the active column into a HeapHashSet<WeakMember<LayoutObject>> rather than storing an extra bit on every layoutobject (and would only require walking the active column), however I defer to @mste...@chromium.org whether it's worth doing or just having a bit on the objects.

              Morten Stenshorne

              I think the current solution is fine. Also not sure how collecting into a hash set would be workable when updating for layout, since we may hit the (layout) cache and skip subtrees then.

              Daniil Sakhapov

              Done

              File third_party/blink/renderer/modules/accessibility/ax_node_object.cc
              Line 1302, Patchset 10: if (!layout_object->IsBox()) {

              return ParentObject() && ParentObject()->InsideInactiveColumnTab();
              }
              // The IsInsideInactiveColumnTab bit is set by ScrollMarkerGroupData when
              // the active column changes.
              return layout_object->InsideInactiveColumnTab();
              Morten Stenshorne . resolved
              ```suggestion
              // The IsInsideInactiveColumnTab bit is set by ScrollMarkerGroupData when
              // the active column changes.
              return layout_object->EnclosingBox()->InsideInactiveColumnTab();
              ```

              Isn't this what we discussed?

              Daniil Sakhapov

              yes, but !IsBox check seemed like less work in the moment. Updated to your suggestion now.

              File third_party/blink/renderer/modules/accessibility/ax_object.h
              Line 1731, Patchset 10: bool cached_is_ignored_as_inside_inactive_column_tab_ : 1 = false;
              Robert Flack . resolved

              It seems like the ax object is also caching this state, maybe we don't need a cache on the LayoutObject and could just directly set this on the ax objects?

              Morten Stenshorne

              If we want to update the state during layout (if things move around, and what's in the active tab no longer is, or vice versa), I think layout is the place to store it.

              Daniil Sakhapov

              Removed the bit from AX object, not needed indeed.

              Open in Gerrit

              Related details

              Attention is currently required from:
              • Robert Flack
              Submit Requirements:
                • requirement satisfiedCode-Coverage
                • requirement is not 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: Ice00b8022f394eb0f0e2667b1bf81ae6207483ff
                Gerrit-Change-Number: 7197847
                Gerrit-PatchSet: 12
                Gerrit-Owner: Daniil Sakhapov <sakh...@chromium.org>
                Gerrit-Reviewer: Daniil Sakhapov <sakh...@chromium.org>
                Gerrit-Reviewer: Lucas Radaelli <lucasr...@google.com>
                Gerrit-Reviewer: Morten Stenshorne <mste...@chromium.org>
                Gerrit-Reviewer: Robert Flack <fla...@chromium.org>
                Gerrit-CC: (Julie)Jeongeun Kim <je_jul...@chromium.org>
                Gerrit-CC: Akihiro Ota <akihi...@chromium.org>
                Gerrit-CC: Kevin Babbitt <kbab...@microsoft.com>
                Gerrit-CC: Nektarios Paisios <nek...@chromium.org>
                Gerrit-Attention: Robert Flack <fla...@chromium.org>
                Gerrit-Comment-Date: Tue, 16 Dec 2025 11:57:00 +0000
                Gerrit-HasComments: Yes
                Gerrit-Has-Labels: Yes
                satisfied_requirement
                unsatisfied_requirement
                open
                diffy

                Morten Stenshorne (Gerrit)

                unread,
                7:10 AM (4 hours ago) 7:10 AM
                to Daniil Sakhapov, AyeAye, Lucas Radaelli, Robert Flack, Chromium LUCI CQ, chromium...@chromium.org, (Julie)Jeongeun Kim, Kevin Babbitt, blink-revi...@chromium.org, zol...@webkit.org, abigailbk...@google.com, blink-rev...@chromium.org, blink-re...@chromium.org, blink-...@chromium.org, dtseng...@chromium.org, francisjp...@google.com, josiah...@chromium.org, kyungjunle...@google.com, lucasrada...@google.com, nektar...@chromium.org, yuzo+...@chromium.org
                Attention needed from Daniil Sakhapov and Robert Flack

                Morten Stenshorne voted and added 1 comment

                Votes added by Morten Stenshorne

                Code-Review+1

                1 comment

                File third_party/blink/renderer/modules/accessibility/ax_node_object.cc
                Line 1302, Patchset 10: if (!layout_object->IsBox()) {
                return ParentObject() && ParentObject()->InsideInactiveColumnTab();
                }
                // The IsInsideInactiveColumnTab bit is set by ScrollMarkerGroupData when
                // the active column changes.
                return layout_object->InsideInactiveColumnTab();
                Morten Stenshorne . resolved
                ```suggestion
                // The IsInsideInactiveColumnTab bit is set by ScrollMarkerGroupData when
                // the active column changes.
                return layout_object->EnclosingBox()->InsideInactiveColumnTab();
                ```

                Isn't this what we discussed?

                Daniil Sakhapov

                yes, but !IsBox check seemed like less work in the moment. Updated to your suggestion now.

                Morten Stenshorne

                Good.

                Just because the object isn't a box doesn't have to mean that its parent is one (and, if it isn't, then InsideInactiveColumnTab() would be wrong, no?).

                <div><span><span><span>text.
                (and then some further complications for ::first-letter and so on, which may nest LayoutText objects, I think...)

                Open in Gerrit

                Related details

                Attention is currently required from:
                • Daniil Sakhapov
                • Robert Flack
                Gerrit-Attention: Daniil Sakhapov <sakh...@chromium.org>
                Gerrit-Attention: Robert Flack <fla...@chromium.org>
                Gerrit-Comment-Date: Tue, 16 Dec 2025 12:09:52 +0000
                Gerrit-HasComments: Yes
                Gerrit-Has-Labels: Yes
                satisfied_requirement
                unsatisfied_requirement
                open
                diffy

                Daniil Sakhapov (Gerrit)

                unread,
                7:23 AM (4 hours ago) 7:23 AM
                to Morten Stenshorne, AyeAye, Lucas Radaelli, Robert Flack, Chromium LUCI CQ, chromium...@chromium.org, (Julie)Jeongeun Kim, Kevin Babbitt, blink-revi...@chromium.org, zol...@webkit.org, abigailbk...@google.com, blink-rev...@chromium.org, blink-re...@chromium.org, blink-...@chromium.org, dtseng...@chromium.org, francisjp...@google.com, josiah...@chromium.org, kyungjunle...@google.com, lucasrada...@google.com, nektar...@chromium.org, yuzo+...@chromium.org
                Attention needed from Robert Flack

                Daniil Sakhapov added 1 comment

                File third_party/blink/renderer/modules/accessibility/ax_node_object.cc
                Line 1302, Patchset 10: if (!layout_object->IsBox()) {
                return ParentObject() && ParentObject()->InsideInactiveColumnTab();
                }
                // The IsInsideInactiveColumnTab bit is set by ScrollMarkerGroupData when
                // the active column changes.
                return layout_object->InsideInactiveColumnTab();
                Morten Stenshorne . resolved
                ```suggestion
                // The IsInsideInactiveColumnTab bit is set by ScrollMarkerGroupData when
                // the active column changes.
                return layout_object->EnclosingBox()->InsideInactiveColumnTab();
                ```

                Isn't this what we discussed?

                Daniil Sakhapov

                yes, but !IsBox check seemed like less work in the moment. Updated to your suggestion now.

                Morten Stenshorne

                Good.

                Just because the object isn't a box doesn't have to mean that its parent is one (and, if it isn't, then InsideInactiveColumnTab() would be wrong, no?).

                <div><span><span><span>text.
                (and then some further complications for ::first-letter and so on, which may nest LayoutText objects, I think...)

                Daniil Sakhapov

                True, but my code, for non-box objects, was asking its AX parent for that bit, so for your example AX for div would have a correct bit set, all other non-box <span> and text children would just take that correct bit from their AX parent, so no need to go up to the box object for every descendant.

                Open in Gerrit

                Related details

                Attention is currently required from:
                • Robert Flack
                Gerrit-Attention: Robert Flack <fla...@chromium.org>
                Gerrit-Comment-Date: Tue, 16 Dec 2025 12:23:29 +0000
                Gerrit-HasComments: Yes
                Gerrit-Has-Labels: No
                satisfied_requirement
                unsatisfied_requirement
                open
                diffy

                Robert Flack (Gerrit)

                unread,
                9:57 AM (1 hour ago) 9:57 AM
                to Daniil Sakhapov, Morten Stenshorne, AyeAye, Lucas Radaelli, Chromium LUCI CQ, chromium...@chromium.org, (Julie)Jeongeun Kim, Kevin Babbitt, blink-revi...@chromium.org, zol...@webkit.org, abigailbk...@google.com, blink-rev...@chromium.org, blink-re...@chromium.org, blink-...@chromium.org, dtseng...@chromium.org, francisjp...@google.com, josiah...@chromium.org, kyungjunle...@google.com, lucasrada...@google.com, nektar...@chromium.org, yuzo+...@chromium.org
                Attention needed from Daniil Sakhapov

                Robert Flack voted Code-Review+1

                Code-Review+1
                Open in Gerrit

                Related details

                Attention is currently required from:
                • Daniil Sakhapov
                Gerrit-Attention: Daniil Sakhapov <sakh...@chromium.org>
                Gerrit-Comment-Date: Tue, 16 Dec 2025 14:57:32 +0000
                Gerrit-HasComments: No
                Gerrit-Has-Labels: Yes
                satisfied_requirement
                unsatisfied_requirement
                open
                diffy

                Robert Flack (Gerrit)

                unread,
                9:58 AM (1 hour ago) 9:58 AM
                to Daniil Sakhapov, Morten Stenshorne, AyeAye, Lucas Radaelli, Chromium LUCI CQ, chromium...@chromium.org, (Julie)Jeongeun Kim, Kevin Babbitt, blink-revi...@chromium.org, zol...@webkit.org, abigailbk...@google.com, blink-rev...@chromium.org, blink-re...@chromium.org, blink-...@chromium.org, dtseng...@chromium.org, francisjp...@google.com, josiah...@chromium.org, kyungjunle...@google.com, lucasrada...@google.com, nektar...@chromium.org, yuzo+...@chromium.org
                Attention needed from Daniil Sakhapov

                Robert Flack added 1 comment

                File third_party/blink/renderer/core/dom/scroll_marker_group_data.cc
                Robert Flack

                Okay, we can follow up on this.

                Gerrit-Comment-Date: Tue, 16 Dec 2025 14:58:15 +0000
                Gerrit-HasComments: Yes
                Gerrit-Has-Labels: No
                Comment-In-Reply-To: Daniil Sakhapov <sakh...@chromium.org>
                satisfied_requirement
                unsatisfied_requirement
                open
                diffy
                Reply all
                Reply to author
                Forward
                0 new messages