actions revamp: Introduce animations to toolbar actions [chromium/src : main]

0 views
Skip to first unread message

Masa Fujita (Gerrit)

unread,
Jan 27, 2026, 10:22:10 AMJan 27
to chromium...@chromium.org, peilinwa...@google.com, chromium-a...@chromium.org, hanxi...@chromium.org, extension...@chromium.org

Masa Fujita has uploaded the change for review

Commit message

actions revamp: Introduce animations to toolbar actions
Change-Id: I5f93be41ef82be58d2815a9d32631e542f6c83de

Change diff


Change information

Files:
  • M chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionActionListCoordinator.java
  • M chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionActionListMediator.java
  • M chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionActionListRecyclerView.java
Change size: M
Delta: 3 files changed, 145 insertions(+), 30 deletions(-)
Open in Gerrit

Related details

Attention set is empty
Submit Requirements:
  • requirement satisfiedCode-Coverage
  • requirement 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: newchange
Gerrit-Project: chromium/src
Gerrit-Branch: main
Gerrit-Change-Id: I5f93be41ef82be58d2815a9d32631e542f6c83de
Gerrit-Change-Number: 7521864
Gerrit-PatchSet: 1
Gerrit-Owner: Masa Fujita <mas...@google.com>
satisfied_requirement
unsatisfied_requirement
open
diffy

Masa Fujita (Gerrit)

unread,
Feb 2, 2026, 10:21:20 AMFeb 2
to Sirisha Kavuluru, Shuhei Takahashi, Charles Hager, chromium...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, hanxi...@chromium.org, peilinwa...@google.com
Attention needed from Charles Hager, Shuhei Takahashi and Sirisha Kavuluru

Masa Fujita voted and added 1 comment

Votes added by Masa Fujita

Commit-Queue+1

1 comment

Patchset-level comments
File-level comment, Patchset 10 (Latest):
Masa Fujita . resolved

@skav...@google.com PTAL ToolbarTablet.java, ToolbarUtils.java
@clh...@google.com PTAL generally dynamic toolbar ranking impls
@n...@chromium.org PTAL overall

Open in Gerrit

Related details

Attention is currently required from:
  • Charles Hager
  • Shuhei Takahashi
  • Sirisha Kavuluru
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: I5f93be41ef82be58d2815a9d32631e542f6c83de
Gerrit-Change-Number: 7521864
Gerrit-PatchSet: 10
Gerrit-Owner: Masa Fujita <mas...@google.com>
Gerrit-Reviewer: Charles Hager <clh...@google.com>
Gerrit-Reviewer: Masa Fujita <mas...@google.com>
Gerrit-Reviewer: Shuhei Takahashi <n...@chromium.org>
Gerrit-Reviewer: Sirisha Kavuluru <skav...@google.com>
Gerrit-Attention: Sirisha Kavuluru <skav...@google.com>
Gerrit-Attention: Shuhei Takahashi <n...@chromium.org>
Gerrit-Attention: Charles Hager <clh...@google.com>
Gerrit-Comment-Date: Mon, 02 Feb 2026 15:20:57 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: Yes
satisfied_requirement
unsatisfied_requirement
open
diffy

Masa Fujita (Gerrit)

unread,
Feb 2, 2026, 11:56:43 AMFeb 2
to Chromium LUCI CQ, Sirisha Kavuluru, Shuhei Takahashi, Charles Hager, chromium...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, hanxi...@chromium.org, peilinwa...@google.com
Attention needed from Charles Hager, Shuhei Takahashi and Sirisha Kavuluru

Masa Fujita voted Commit-Queue+1

Commit-Queue+1
Open in Gerrit

Related details

Attention is currently required from:
  • Charles Hager
  • Shuhei Takahashi
  • Sirisha Kavuluru
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: I5f93be41ef82be58d2815a9d32631e542f6c83de
Gerrit-Change-Number: 7521864
Gerrit-PatchSet: 11
Gerrit-Owner: Masa Fujita <mas...@google.com>
Gerrit-Reviewer: Charles Hager <clh...@google.com>
Gerrit-Reviewer: Masa Fujita <mas...@google.com>
Gerrit-Reviewer: Shuhei Takahashi <n...@chromium.org>
Gerrit-Reviewer: Sirisha Kavuluru <skav...@google.com>
Gerrit-Attention: Sirisha Kavuluru <skav...@google.com>
Gerrit-Attention: Shuhei Takahashi <n...@chromium.org>
Gerrit-Attention: Charles Hager <clh...@google.com>
Gerrit-Comment-Date: Mon, 02 Feb 2026 16:56:33 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: Yes
satisfied_requirement
unsatisfied_requirement
open
diffy

Masa Fujita (Gerrit)

unread,
Feb 2, 2026, 12:14:22 PMFeb 2
to Chromium LUCI CQ, Sirisha Kavuluru, Shuhei Takahashi, Charles Hager, chromium...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, hanxi...@chromium.org, peilinwa...@google.com
Attention needed from Charles Hager, Shuhei Takahashi and Sirisha Kavuluru

Masa Fujita voted Commit-Queue+1

Commit-Queue+1
Open in Gerrit

Related details

Attention is currently required from:
  • Charles Hager
  • Shuhei Takahashi
  • Sirisha Kavuluru
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: I5f93be41ef82be58d2815a9d32631e542f6c83de
Gerrit-Change-Number: 7521864
Gerrit-PatchSet: 12
Gerrit-Owner: Masa Fujita <mas...@google.com>
Gerrit-Reviewer: Charles Hager <clh...@google.com>
Gerrit-Reviewer: Masa Fujita <mas...@google.com>
Gerrit-Reviewer: Shuhei Takahashi <n...@chromium.org>
Gerrit-Reviewer: Sirisha Kavuluru <skav...@google.com>
Gerrit-Attention: Sirisha Kavuluru <skav...@google.com>
Gerrit-Attention: Shuhei Takahashi <n...@chromium.org>
Gerrit-Attention: Charles Hager <clh...@google.com>
Gerrit-Comment-Date: Mon, 02 Feb 2026 17:13:50 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: Yes
satisfied_requirement
unsatisfied_requirement
open
diffy

Charles Hager (Gerrit)

unread,
Feb 2, 2026, 5:12:47 PMFeb 2
to Masa Fujita, Chromium LUCI CQ, Sirisha Kavuluru, Shuhei Takahashi, chromium...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, hanxi...@chromium.org, peilinwa...@google.com
Attention needed from Masa Fujita, Shuhei Takahashi and Sirisha Kavuluru

Charles Hager added 6 comments

Patchset-level comments
File-level comment, Patchset 12 (Latest):
Charles Hager . resolved

Overall things seem fine, though I think I'll take a look at some point to see how things look frame-by-frame. Have you checked at all whether this has an impact on performance / timing? I know that's been a complication for some of the other toolbar components.

File chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionActionListCoordinator.java
Line 132, Patchset 12 (Latest): * 10;
Charles Hager . unresolved

Out of curiosity, why 10 times the length of a button / touch target?

File chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionActionListMediator.java
Line 88, Patchset 12 (Latest): // RecyclerView} do not have sliding animations and only have fading animations, but we want
Charles Hager . unresolved

Do the edge items get created but aren't initially visible, then slide into view during the animation?

Line 401, Patchset 12 (Latest): if (mAnimating && mAvailableWidth != null && mAvailableWidth == availableWidth) {
Charles Hager . unresolved

Just to check - is it ever possible for the action items to change during an animation? Or, it is safe to assume that if mAnimating == true, that the items can't change until after the animation is ended? Should we add an assert maybe to make sure changes never happen mid-animation?

Line 402, Patchset 12 (Latest): // This method gets called due to our own animation too. We already make sure that the
Charles Hager . unresolved
Wording nit
```suggestion
// This method gets called due to our own animation too. We already made sure that the
```
Line 411, Patchset 12 (Latest): reconcileActionItems(/* animate= */ false);
Charles Hager . unresolved

How often do we expect this to be called mid-animation? Are there any performance considerations, any edge cases where this could cause lagging during animations?

Open in Gerrit

Related details

Attention is currently required from:
  • Masa Fujita
  • Shuhei Takahashi
  • Sirisha Kavuluru
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: I5f93be41ef82be58d2815a9d32631e542f6c83de
    Gerrit-Change-Number: 7521864
    Gerrit-PatchSet: 12
    Gerrit-Owner: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Charles Hager <clh...@google.com>
    Gerrit-Reviewer: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Shuhei Takahashi <n...@chromium.org>
    Gerrit-Reviewer: Sirisha Kavuluru <skav...@google.com>
    Gerrit-Attention: Masa Fujita <mas...@google.com>
    Gerrit-Attention: Sirisha Kavuluru <skav...@google.com>
    Gerrit-Attention: Shuhei Takahashi <n...@chromium.org>
    Gerrit-Comment-Date: Mon, 02 Feb 2026 22:12:41 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Masa Fujita (Gerrit)

    unread,
    Feb 2, 2026, 8:30:03 PMFeb 2
    to Chromium LUCI CQ, Sirisha Kavuluru, Shuhei Takahashi, Charles Hager, chromium...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, hanxi...@chromium.org, peilinwa...@google.com
    Attention needed from Charles Hager, Shuhei Takahashi and Sirisha Kavuluru

    Masa Fujita added 1 comment

    Patchset-level comments
    Charles Hager . resolved

    Overall things seem fine, though I think I'll take a look at some point to see how things look frame-by-frame. Have you checked at all whether this has an impact on performance / timing? I know that's been a complication for some of the other toolbar components.

    Masa Fujita

    Thanks for taking a look! The performance seems... fine at best? 🙃 It works well on my high end test device but I'm not sure what the performance hit is going to be on lower end devices. It seems to be not as bad as the tab switcher animation but not too sure.

    Do you know how we can quantitatively test animation performances?

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Charles Hager
    • Shuhei Takahashi
    • Sirisha Kavuluru
    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: I5f93be41ef82be58d2815a9d32631e542f6c83de
    Gerrit-Change-Number: 7521864
    Gerrit-PatchSet: 12
    Gerrit-Owner: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Charles Hager <clh...@google.com>
    Gerrit-Reviewer: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Shuhei Takahashi <n...@chromium.org>
    Gerrit-Reviewer: Sirisha Kavuluru <skav...@google.com>
    Gerrit-Attention: Sirisha Kavuluru <skav...@google.com>
    Gerrit-Attention: Shuhei Takahashi <n...@chromium.org>
    Gerrit-Attention: Charles Hager <clh...@google.com>
    Gerrit-Comment-Date: Tue, 03 Feb 2026 01:29:39 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    Comment-In-Reply-To: Charles Hager <clh...@google.com>
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Masa Fujita (Gerrit)

    unread,
    Feb 2, 2026, 8:36:21 PMFeb 2
    to Chromium LUCI CQ, Sirisha Kavuluru, Shuhei Takahashi, Charles Hager, chromium...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, hanxi...@chromium.org, peilinwa...@google.com
    Attention needed from Charles Hager, Shuhei Takahashi and Sirisha Kavuluru

    Masa Fujita voted Commit-Queue+1

    Commit-Queue+1
    Open in Gerrit

    Related details

    Attention is currently required from:
    • Charles Hager
    • Shuhei Takahashi
    • Sirisha Kavuluru
    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: I5f93be41ef82be58d2815a9d32631e542f6c83de
    Gerrit-Change-Number: 7521864
    Gerrit-PatchSet: 13
    Gerrit-Owner: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Charles Hager <clh...@google.com>
    Gerrit-Reviewer: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Shuhei Takahashi <n...@chromium.org>
    Gerrit-Reviewer: Sirisha Kavuluru <skav...@google.com>
    Gerrit-Attention: Sirisha Kavuluru <skav...@google.com>
    Gerrit-Attention: Shuhei Takahashi <n...@chromium.org>
    Gerrit-Attention: Charles Hager <clh...@google.com>
    Gerrit-Comment-Date: Tue, 03 Feb 2026 01:35:53 +0000
    Gerrit-HasComments: No
    Gerrit-Has-Labels: Yes
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Shuhei Takahashi (Gerrit)

    unread,
    Feb 2, 2026, 8:42:38 PMFeb 2
    to Masa Fujita, Chromium LUCI CQ, Sirisha Kavuluru, Shuhei Takahashi, Charles Hager, chromium...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, hanxi...@chromium.org, peilinwa...@google.com
    Attention needed from Charles Hager, Masa Fujita and Sirisha Kavuluru

    Shuhei Takahashi added 10 comments

    Patchset-level comments
    File-level comment, Patchset 13 (Latest):
    Shuhei Takahashi . resolved

    Thanks for the patch! Here's my first pass.

    File chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionActionListCoordinator.java
    Line 45, Patchset 12: private Boolean mIsDragging = false;
    Shuhei Takahashi . unresolved

    `boolean` if this is never null.

    File chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionActionListMediator.java
    Line 45, Patchset 12:class ExtensionActionListMediator implements Destroyable {
    Shuhei Takahashi . unresolved

    This class got more complicated to deal with anchors. I hope we can isolate the logic to handle anchors in a separate class so that this mediator can focus on a simple list of actions.

    Rough idea:

    • Create a ModelList that derives from another ModelList so that the former's items are the latter's items plus sandwiching anchors. The mediator focuses on updating the latter.
    • As for handling `extension_action_anchor_width`, we can subtract it from `availableWidth` before passing it from the coordinator.

    I know this can be an armchair argument, but I hope we can unentangle logic as far as possible...

    Line 64, Patchset 12: private @Nullable Integer mAvailableWidth;
    Shuhei Takahashi . unresolved

    Can you add a comment on this? Describing this variable precisely seems important.

    Line 85, Patchset 12: // The anchor items are placed at both ends of the {@link RecyclerView} to act as the
    Shuhei Takahashi . resolved

    Wow, nice job figuring this out!

    Line 146, Patchset 12: if (mAvailableWidth != null) {
    Shuhei Takahashi . unresolved

    In what cases `mAvailableWidth == null`?

    Is it ever possible to change this to either:

    • assertion: `assert mAvailableWidth != null`
    • early return: `if (mAvailableWidth == null) return`
    Line 465, Patchset 12: * @return Null if either of the anchors don't exist, which can happen during launch.
    Shuhei Takahashi . unresolved

    It simplifies things if we can assume the anchors always exist. Can we synchronously bind anchor items on initialization?

    That said, is it possible to write this function without relying on anchors? For example, by summing up widths of all children.

    File chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionActionListRecyclerView.java
    Line 20, Patchset 12:public class ExtensionActionListRecyclerView extends RecyclerView {
    Shuhei Takahashi . unresolved

    Can we replace this with `RecyclerView` now? It can be a separate patch though.

    File chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionToolbarCoordinatorImpl.java
    Line 113, Patchset 12: return mContainer.getVisibility() == View.VISIBLE;
    Shuhei Takahashi . unresolved

    qq: do we ever return false here? This code is fine, but I'm just curious.

    Line 118, Patchset 12: return mExtensionActionListCoordinator.fitActionsWithinWidth(availableWidth);
    Shuhei Takahashi . unresolved

    Don't we need to account for the puzzle piece button's width?

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Charles Hager
    • Masa Fujita
    • Sirisha Kavuluru
    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: I5f93be41ef82be58d2815a9d32631e542f6c83de
    Gerrit-Change-Number: 7521864
    Gerrit-PatchSet: 13
    Gerrit-Owner: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Charles Hager <clh...@google.com>
    Gerrit-Reviewer: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Shuhei Takahashi <n...@chromium.org>
    Gerrit-Reviewer: Sirisha Kavuluru <skav...@google.com>
    Gerrit-Attention: Masa Fujita <mas...@google.com>
    Gerrit-Attention: Sirisha Kavuluru <skav...@google.com>
    Gerrit-Attention: Charles Hager <clh...@google.com>
    Gerrit-Comment-Date: Tue, 03 Feb 2026 01:42:06 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Masa Fujita (Gerrit)

    unread,
    Feb 3, 2026, 12:49:53 PMFeb 3
    to AyeAye, Chromium LUCI CQ, Sirisha Kavuluru, Shuhei Takahashi, Charles Hager, chromium...@chromium.org, mac-r...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, hanxi...@chromium.org, peilinwa...@google.com
    Attention needed from Charles Hager, Shuhei Takahashi and Sirisha Kavuluru

    Masa Fujita voted and added 14 comments

    Votes added by Masa Fujita

    Commit-Queue+1

    14 comments

    Patchset-level comments
    File-level comment, Patchset 12:
    Charles Hager . unresolved

    Overall things seem fine, though I think I'll take a look at some point to see how things look frame-by-frame. Have you checked at all whether this has an impact on performance / timing? I know that's been a complication for some of the other toolbar components.

    Masa Fujita

    Thanks for taking a look! The performance seems... fine at best? 🙃 It works well on my high end test device but I'm not sure what the performance hit is going to be on lower end devices. It seems to be not as bad as the tab switcher animation but not too sure.

    Do you know how we can quantitatively test animation performances?

    Masa Fujita

    (unresolving)

    File chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionActionListCoordinator.java
    Line 45, Patchset 12: private Boolean mIsDragging = false;
    Shuhei Takahashi . resolved

    `boolean` if this is never null.

    Masa Fujita

    Done

    Charles Hager . unresolved

    Out of curiosity, why 10 times the length of a button / touch target?

    Masa Fujita

    This is honestly not based on much. We need this padding because even though the entire `RecyclerView` should always theoretically remain visible, the animation can get janky and `RecyclerView` might decide to destroy the anchors' View instances.

    File chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionActionListMediator.java
    Line 45, Patchset 12:class ExtensionActionListMediator implements Destroyable {
    Shuhei Takahashi . resolved

    This class got more complicated to deal with anchors. I hope we can isolate the logic to handle anchors in a separate class so that this mediator can focus on a simple list of actions.

    Rough idea:

    • Create a ModelList that derives from another ModelList so that the former's items are the latter's items plus sandwiching anchors. The mediator focuses on updating the latter.
    • As for handling `extension_action_anchor_width`, we can subtract it from `availableWidth` before passing it from the coordinator.

    I know this can be an armchair argument, but I hope we can unentangle logic as far as possible...

    Masa Fujita

    I ended up creating a wrapper class that automatically adds anchor items (and moved most of the animation related code to the coordinator).

    Line 64, Patchset 12: private @Nullable Integer mAvailableWidth;
    Shuhei Takahashi . resolved

    Can you add a comment on this? Describing this variable precisely seems important.

    Masa Fujita

    Done

    Line 88, Patchset 12: // RecyclerView} do not have sliding animations and only have fading animations, but we want
    Charles Hager . unresolved

    Do the edge items get created but aren't initially visible, then slide into view during the animation?

    Masa Fujita
    Without the anchors, if the edge items' visibilities change:
    - the edge item at the start (far right (because `stackFromEnd = true`)) gets created outside the viewport and does not slide in automatically. We would have to programatically scroll to the top.
    - the edge item at the end (far left) gets created with a "fade in" animation. No sliding animation for anyone, so nothing for the omnibox to track.

    but, with the anchors, no icons are edge items, so everything should be always stay visible and within the bounds of the `RecyclerView`.
    Line 146, Patchset 12: if (mAvailableWidth != null) {
    Shuhei Takahashi . resolved

    In what cases `mAvailableWidth == null`?

    Is it ever possible to change this to either:

    • assertion: `assert mAvailableWidth != null`
    • early return: `if (mAvailableWidth == null) return`
    Masa Fujita

    I think early return makes sense here.

    Line 401, Patchset 12: if (mAnimating && mAvailableWidth != null && mAvailableWidth == availableWidth) {
    Charles Hager . resolved

    Just to check - is it ever possible for the action items to change during an animation? Or, it is safe to assume that if mAnimating == true, that the items can't change until after the animation is ended? Should we add an assert maybe to make sure changes never happen mid-animation?

    Masa Fujita

    good catch - I made it so that if we do receive a change during animation, we abandon the ongoing animation and update to the new state instantly (we don't expect this to happen often).

    Line 402, Patchset 12: // This method gets called due to our own animation too. We already make sure that the
    Charles Hager . resolved
    Wording nit
    ```suggestion
    // This method gets called due to our own animation too. We already made sure that the
    ```
    Masa Fujita

    Done

    Line 411, Patchset 12: reconcileActionItems(/* animate= */ false);
    Charles Hager . unresolved

    How often do we expect this to be called mid-animation? Are there any performance considerations, any edge cases where this could cause lagging during animations?

    Masa Fujita

    This should be very rare - this only happens when we get another `updateVisibility()` update (e.g. the user resizes window) during pinning / unpinning animation. In that case we abandon the ongoing animation and just update the UI instantly

    Line 465, Patchset 12: * @return Null if either of the anchors don't exist, which can happen during launch.
    Shuhei Takahashi . resolved

    It simplifies things if we can assume the anchors always exist. Can we synchronously bind anchor items on initialization?

    That said, is it possible to write this function without relying on anchors? For example, by summing up widths of all children.

    Masa Fujita

    It's very difficult to assert the lifetime of Views inside RecyclerViews. I think we can return 0 here if the anchors don't exist and avoid all the nullableness.
    We could calculate the max and min occupied by the Views but it's a bit easier to rely on the anchors (some Views exist but are transparent, etc)

    File chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionActionListRecyclerView.java
    Line 20, Patchset 12:public class ExtensionActionListRecyclerView extends RecyclerView {
    Shuhei Takahashi . resolved

    Can we replace this with `RecyclerView` now? It can be a separate patch though.

    Masa Fujita

    Probably, but I'm still not 100% sure if we will need to customize the `RecyclerView`. If it turns out we won't then I'll make sure to remove this.

    File chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionToolbarCoordinatorImpl.java
    Line 113, Patchset 12: return mContainer.getVisibility() == View.VISIBLE;
    Shuhei Takahashi . resolved

    qq: do we ever return false here? This code is fine, but I'm just curious.

    Masa Fujita

    I think this always returns true (I stole this from crrev.com/c/7382037).

    Line 118, Patchset 12: return mExtensionActionListCoordinator.fitActionsWithinWidth(availableWidth);
    Shuhei Takahashi . resolved

    Don't we need to account for the puzzle piece button's width?

    Masa Fujita

    Yes we do, sorry - should be fixed now

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Charles Hager
    • Shuhei Takahashi
    • Sirisha Kavuluru
    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: I5f93be41ef82be58d2815a9d32631e542f6c83de
    Gerrit-Change-Number: 7521864
    Gerrit-PatchSet: 18
    Gerrit-Owner: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Charles Hager <clh...@google.com>
    Gerrit-Reviewer: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Shuhei Takahashi <n...@chromium.org>
    Gerrit-Reviewer: Sirisha Kavuluru <skav...@google.com>
    Gerrit-Attention: Sirisha Kavuluru <skav...@google.com>
    Gerrit-Attention: Shuhei Takahashi <n...@chromium.org>
    Gerrit-Attention: Charles Hager <clh...@google.com>
    Gerrit-Comment-Date: Tue, 03 Feb 2026 17:49:19 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: Yes
    Comment-In-Reply-To: Masa Fujita <mas...@google.com>
    Comment-In-Reply-To: Shuhei Takahashi <n...@chromium.org>
    Comment-In-Reply-To: Charles Hager <clh...@google.com>
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Masa Fujita (Gerrit)

    unread,
    Feb 3, 2026, 1:17:00 PMFeb 3
    to AyeAye, Chromium LUCI CQ, Sirisha Kavuluru, Shuhei Takahashi, Charles Hager, chromium...@chromium.org, mac-r...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, hanxi...@chromium.org, peilinwa...@google.com
    Attention needed from Charles Hager, Shuhei Takahashi and Sirisha Kavuluru

    Masa Fujita voted Commit-Queue+1

    Commit-Queue+1
    Open in Gerrit

    Related details

    Attention is currently required from:
    • Charles Hager
    • Shuhei Takahashi
    • Sirisha Kavuluru
    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: I5f93be41ef82be58d2815a9d32631e542f6c83de
    Gerrit-Change-Number: 7521864
    Gerrit-PatchSet: 19
    Gerrit-Owner: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Charles Hager <clh...@google.com>
    Gerrit-Reviewer: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Shuhei Takahashi <n...@chromium.org>
    Gerrit-Reviewer: Sirisha Kavuluru <skav...@google.com>
    Gerrit-Attention: Sirisha Kavuluru <skav...@google.com>
    Gerrit-Attention: Shuhei Takahashi <n...@chromium.org>
    Gerrit-Attention: Charles Hager <clh...@google.com>
    Gerrit-Comment-Date: Tue, 03 Feb 2026 18:16:35 +0000
    Gerrit-HasComments: No
    Gerrit-Has-Labels: Yes
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Masa Fujita (Gerrit)

    unread,
    Feb 3, 2026, 1:24:03 PMFeb 3
    to AyeAye, Chromium LUCI CQ, Sirisha Kavuluru, Shuhei Takahashi, Charles Hager, chromium...@chromium.org, mac-r...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, hanxi...@chromium.org, peilinwa...@google.com
    Attention needed from Charles Hager, Shuhei Takahashi and Sirisha Kavuluru

    Masa Fujita voted Commit-Queue+1

    Commit-Queue+1
    Open in Gerrit

    Related details

    Attention is currently required from:
    • Charles Hager
    • Shuhei Takahashi
    • Sirisha Kavuluru
    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: I5f93be41ef82be58d2815a9d32631e542f6c83de
    Gerrit-Change-Number: 7521864
    Gerrit-PatchSet: 20
    Gerrit-Owner: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Charles Hager <clh...@google.com>
    Gerrit-Reviewer: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Shuhei Takahashi <n...@chromium.org>
    Gerrit-Reviewer: Sirisha Kavuluru <skav...@google.com>
    Gerrit-Attention: Sirisha Kavuluru <skav...@google.com>
    Gerrit-Attention: Shuhei Takahashi <n...@chromium.org>
    Gerrit-Attention: Charles Hager <clh...@google.com>
    Gerrit-Comment-Date: Tue, 03 Feb 2026 18:23:33 +0000
    Gerrit-HasComments: No
    Gerrit-Has-Labels: Yes
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Charles Hager (Gerrit)

    unread,
    Feb 3, 2026, 1:31:00 PMFeb 3
    to Masa Fujita, AyeAye, Chromium LUCI CQ, Sirisha Kavuluru, Shuhei Takahashi, chromium...@chromium.org, mac-r...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, hanxi...@chromium.org, peilinwa...@google.com
    Attention needed from Masa Fujita, Shuhei Takahashi and Sirisha Kavuluru

    Charles Hager added 1 comment

    File chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionToolbarCoordinatorImpl.java
    Line 113, Patchset 12: return mContainer.getVisibility() == View.VISIBLE;
    Shuhei Takahashi . resolved

    qq: do we ever return false here? This code is fine, but I'm just curious.

    Masa Fujita

    I think this always returns true (I stole this from crrev.com/c/7382037).

    Charles Hager

    This is totally fine, this is currently only used to decide whether to display that icon / button at the top of the 3-button menu on narrow screens.

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Masa Fujita
    • Shuhei Takahashi
    • Sirisha Kavuluru
    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: I5f93be41ef82be58d2815a9d32631e542f6c83de
    Gerrit-Change-Number: 7521864
    Gerrit-PatchSet: 18
    Gerrit-Owner: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Charles Hager <clh...@google.com>
    Gerrit-Reviewer: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Shuhei Takahashi <n...@chromium.org>
    Gerrit-Reviewer: Sirisha Kavuluru <skav...@google.com>
    Gerrit-Attention: Masa Fujita <mas...@google.com>
    Gerrit-Attention: Sirisha Kavuluru <skav...@google.com>
    Gerrit-Attention: Shuhei Takahashi <n...@chromium.org>
    Gerrit-Comment-Date: Tue, 03 Feb 2026 18:30:49 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Masa Fujita (Gerrit)

    unread,
    Feb 3, 2026, 1:44:26 PMFeb 3
    to AyeAye, Chromium LUCI CQ, Sirisha Kavuluru, Shuhei Takahashi, Charles Hager, chromium...@chromium.org, mac-r...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, hanxi...@chromium.org, peilinwa...@google.com
    Attention needed from Shuhei Takahashi and Sirisha Kavuluru

    Masa Fujita voted Commit-Queue+1

    Commit-Queue+1
    Open in Gerrit

    Related details

    Attention is currently required from:
    • Shuhei Takahashi
    • Sirisha Kavuluru
    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: I5f93be41ef82be58d2815a9d32631e542f6c83de
    Gerrit-Change-Number: 7521864
    Gerrit-PatchSet: 21
    Gerrit-Owner: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Charles Hager <clh...@google.com>
    Gerrit-Reviewer: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Shuhei Takahashi <n...@chromium.org>
    Gerrit-Reviewer: Sirisha Kavuluru <skav...@google.com>
    Gerrit-Attention: Sirisha Kavuluru <skav...@google.com>
    Gerrit-Attention: Shuhei Takahashi <n...@chromium.org>
    Gerrit-Comment-Date: Tue, 03 Feb 2026 18:43:59 +0000
    Gerrit-HasComments: No
    Gerrit-Has-Labels: Yes
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Masa Fujita (Gerrit)

    unread,
    Feb 3, 2026, 10:36:01 PMFeb 3
    to AyeAye, Chromium LUCI CQ, Sirisha Kavuluru, Shuhei Takahashi, Charles Hager, chromium...@chromium.org, mac-r...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, hanxi...@chromium.org, peilinwa...@google.com
    Attention needed from Charles Hager, Shuhei Takahashi and Sirisha Kavuluru

    Masa Fujita voted Commit-Queue+1

    Commit-Queue+1
    Open in Gerrit

    Related details

    Attention is currently required from:
    • Charles Hager
    • Shuhei Takahashi
    • Sirisha Kavuluru
    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: I5f93be41ef82be58d2815a9d32631e542f6c83de
    Gerrit-Change-Number: 7521864
    Gerrit-PatchSet: 22
    Gerrit-Owner: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Charles Hager <clh...@google.com>
    Gerrit-Reviewer: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Shuhei Takahashi <n...@chromium.org>
    Gerrit-Reviewer: Sirisha Kavuluru <skav...@google.com>
    Gerrit-Attention: Sirisha Kavuluru <skav...@google.com>
    Gerrit-Attention: Shuhei Takahashi <n...@chromium.org>
    Gerrit-Attention: Charles Hager <clh...@google.com>
    Gerrit-Comment-Date: Wed, 04 Feb 2026 03:35:30 +0000
    Gerrit-HasComments: No
    Gerrit-Has-Labels: Yes
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Masa Fujita (Gerrit)

    unread,
    Feb 3, 2026, 10:39:17 PMFeb 3
    to AyeAye, Chromium LUCI CQ, Sirisha Kavuluru, Shuhei Takahashi, Charles Hager, chromium...@chromium.org, mac-r...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, hanxi...@chromium.org, peilinwa...@google.com
    Attention needed from Charles Hager, Shuhei Takahashi and Sirisha Kavuluru

    Masa Fujita voted Commit-Queue+1

    Commit-Queue+1
    Open in Gerrit

    Related details

    Attention is currently required from:
    • Charles Hager
    • Shuhei Takahashi
    • Sirisha Kavuluru
    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: I5f93be41ef82be58d2815a9d32631e542f6c83de
    Gerrit-Change-Number: 7521864
    Gerrit-PatchSet: 23
    Gerrit-Owner: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Charles Hager <clh...@google.com>
    Gerrit-Reviewer: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Shuhei Takahashi <n...@chromium.org>
    Gerrit-Reviewer: Sirisha Kavuluru <skav...@google.com>
    Gerrit-Attention: Sirisha Kavuluru <skav...@google.com>
    Gerrit-Attention: Shuhei Takahashi <n...@chromium.org>
    Gerrit-Attention: Charles Hager <clh...@google.com>
    Gerrit-Comment-Date: Wed, 04 Feb 2026 03:38:46 +0000
    Gerrit-HasComments: No
    Gerrit-Has-Labels: Yes
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Masa Fujita (Gerrit)

    unread,
    Feb 3, 2026, 10:45:06 PMFeb 3
    to AyeAye, Chromium LUCI CQ, Sirisha Kavuluru, Shuhei Takahashi, Charles Hager, chromium...@chromium.org, mac-r...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, hanxi...@chromium.org, peilinwa...@google.com
    Attention needed from Charles Hager, Shuhei Takahashi and Sirisha Kavuluru

    Masa Fujita voted Commit-Queue+1

    Commit-Queue+1
    Open in Gerrit

    Related details

    Attention is currently required from:
    • Charles Hager
    • Shuhei Takahashi
    • Sirisha Kavuluru
    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: I5f93be41ef82be58d2815a9d32631e542f6c83de
    Gerrit-Change-Number: 7521864
    Gerrit-PatchSet: 24
    Gerrit-Owner: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Charles Hager <clh...@google.com>
    Gerrit-Reviewer: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Shuhei Takahashi <n...@chromium.org>
    Gerrit-Reviewer: Sirisha Kavuluru <skav...@google.com>
    Gerrit-Attention: Sirisha Kavuluru <skav...@google.com>
    Gerrit-Attention: Shuhei Takahashi <n...@chromium.org>
    Gerrit-Attention: Charles Hager <clh...@google.com>
    Gerrit-Comment-Date: Wed, 04 Feb 2026 03:44:44 +0000
    Gerrit-HasComments: No
    Gerrit-Has-Labels: Yes
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Masa Fujita (Gerrit)

    unread,
    Feb 3, 2026, 10:59:09 PMFeb 3
    to AyeAye, Chromium LUCI CQ, Sirisha Kavuluru, Shuhei Takahashi, Charles Hager, chromium...@chromium.org, mac-r...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, hanxi...@chromium.org, peilinwa...@google.com
    Attention needed from Charles Hager, Shuhei Takahashi and Sirisha Kavuluru

    Masa Fujita voted Commit-Queue+1

    Commit-Queue+1
    Open in Gerrit

    Related details

    Attention is currently required from:
    • Charles Hager
    • Shuhei Takahashi
    • Sirisha Kavuluru
    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: I5f93be41ef82be58d2815a9d32631e542f6c83de
    Gerrit-Change-Number: 7521864
    Gerrit-PatchSet: 25
    Gerrit-Owner: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Charles Hager <clh...@google.com>
    Gerrit-Reviewer: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Shuhei Takahashi <n...@chromium.org>
    Gerrit-Reviewer: Sirisha Kavuluru <skav...@google.com>
    Gerrit-Attention: Sirisha Kavuluru <skav...@google.com>
    Gerrit-Attention: Shuhei Takahashi <n...@chromium.org>
    Gerrit-Attention: Charles Hager <clh...@google.com>
    Gerrit-Comment-Date: Wed, 04 Feb 2026 03:58:46 +0000
    Gerrit-HasComments: No
    Gerrit-Has-Labels: Yes
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Masa Fujita (Gerrit)

    unread,
    Feb 3, 2026, 11:23:52 PMFeb 3
    to AyeAye, Chromium LUCI CQ, Sirisha Kavuluru, Shuhei Takahashi, Charles Hager, chromium...@chromium.org, mac-r...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, hanxi...@chromium.org, peilinwa...@google.com
    Attention needed from Charles Hager, Shuhei Takahashi and Sirisha Kavuluru

    Masa Fujita voted Commit-Queue+1

    Commit-Queue+1
    Open in Gerrit

    Related details

    Attention is currently required from:
    • Charles Hager
    • Shuhei Takahashi
    • Sirisha Kavuluru
    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: I5f93be41ef82be58d2815a9d32631e542f6c83de
    Gerrit-Change-Number: 7521864
    Gerrit-PatchSet: 26
    Gerrit-Owner: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Charles Hager <clh...@google.com>
    Gerrit-Reviewer: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Shuhei Takahashi <n...@chromium.org>
    Gerrit-Reviewer: Sirisha Kavuluru <skav...@google.com>
    Gerrit-Attention: Sirisha Kavuluru <skav...@google.com>
    Gerrit-Attention: Shuhei Takahashi <n...@chromium.org>
    Gerrit-Attention: Charles Hager <clh...@google.com>
    Gerrit-Comment-Date: Wed, 04 Feb 2026 04:23:29 +0000
    Gerrit-HasComments: No
    Gerrit-Has-Labels: Yes
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Shuhei Takahashi (Gerrit)

    unread,
    Feb 4, 2026, 1:07:43 AMFeb 4
    to Masa Fujita, AyeAye, Chromium LUCI CQ, Sirisha Kavuluru, Shuhei Takahashi, Charles Hager, chromium...@chromium.org, mac-r...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, hanxi...@chromium.org, peilinwa...@google.com
    Attention needed from Charles Hager, Masa Fujita and Sirisha Kavuluru

    Shuhei Takahashi added 7 comments

    File chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionActionListCoordinator.java
    Line 50, Patchset 26 (Latest): * want the omnibox to slide.
    Shuhei Takahashi . resolved

    Nice explanation!

    Line 52, Patchset 26 (Latest): public static class ModelListWithAnchors extends ModelList {
    Shuhei Takahashi . unresolved

    I think we don't need to make a derived class, but just can create a ModelList instance. Then we can avoid implementation inheritances.

    e.g.

    ```
    private static ModelList createModelListWithAnchors(ModelList sourceList) {
    ModelList newList = new ModelList();
        // ...Set up newList's contents...
        sourceList.addObserver(new ListObserver<Void>() {
    ...
    });
    return newList;
    }
    ```
    Line 116, Patchset 26 (Latest): private final ModelList mModels;
    Shuhei Takahashi . unresolved

    You can remove `mModels` now.

    Line 122, Patchset 26 (Latest): // The available width that the {@link RecyclerView} can use up.
    Shuhei Takahashi . unresolved

    Can you mention:

    • When it is null?
    • When it is updated?
    Line 242, Patchset 26 (Latest): /**
    Shuhei Takahashi . unresolved

    This time, we got a bunch of RecyclerView-related logic in the coordinator. It's nice if you can isolate them into a separate class rather than embedding them in the coordinator... so that the coordinator just coordinates things.

    Line 411, Patchset 26 (Latest): for (int i = 1; i < mModelsWithAnchors.size() - 1; i++) {
    Shuhei Takahashi . unresolved

    This logic can be simpler if we use `mModels`.

    This might sound contradictory to my comment above, but there's chance this can work well after extracting the RecyclerView logic into a separate class.

    File chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionActionListMediator.java
    Line 123, Patchset 26 (Latest): if (mAvailableWidth == null) {
    Shuhei Takahashi . unresolved

    I guess that, if we return early, it should be near the beginning of the function, not here? Otherwise we may make incomplete modifications to the models.

    Also, can you add a comment when this condition is hit?

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Charles Hager
    • Masa Fujita
    • Sirisha Kavuluru
    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: I5f93be41ef82be58d2815a9d32631e542f6c83de
    Gerrit-Change-Number: 7521864
    Gerrit-PatchSet: 26
    Gerrit-Owner: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Charles Hager <clh...@google.com>
    Gerrit-Reviewer: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Shuhei Takahashi <n...@chromium.org>
    Gerrit-Reviewer: Sirisha Kavuluru <skav...@google.com>
    Gerrit-Attention: Masa Fujita <mas...@google.com>
    Gerrit-Attention: Sirisha Kavuluru <skav...@google.com>
    Gerrit-Attention: Charles Hager <clh...@google.com>
    Gerrit-Comment-Date: Wed, 04 Feb 2026 06:07:22 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Masa Fujita (Gerrit)

    unread,
    Feb 4, 2026, 11:46:00 AMFeb 4
    to Shuhei Takahashi, AyeAye, Chromium LUCI CQ, Sirisha Kavuluru, Charles Hager, chromium...@chromium.org, mac-r...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, hanxi...@chromium.org, peilinwa...@google.com
    Attention needed from Charles Hager, Shuhei Takahashi and Sirisha Kavuluru

    Masa Fujita voted and added 7 comments

    Votes added by Masa Fujita

    Commit-Queue+1

    7 comments

    Patchset-level comments
    Masa Fujita . resolved

    @skav...@google.com PTAL ToolbarTablet.java, ToolbarUtils.java
    @clh...@google.com PTAL generally dynamic toolbar ranking impls
    @n...@chromium.org PTAL overall

    Masa Fujita

    @emil...@chromium.org PTAL overall (moved @n...@chromium.org to CC)

    File chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionActionListCoordinator.java
    Line 52, Patchset 26: public static class ModelListWithAnchors extends ModelList {
    Shuhei Takahashi . resolved

    I think we don't need to make a derived class, but just can create a ModelList instance. Then we can avoid implementation inheritances.

    e.g.

    ```
    private static ModelList createModelListWithAnchors(ModelList sourceList) {
    ModelList newList = new ModelList();
        // ...Set up newList's contents...
        sourceList.addObserver(new ListObserver<Void>() {
    ...
    });
    return newList;
    }
    ```
    Masa Fujita

    I was about to do this but actually it turns out we have to override `move` too, so let me keep this.

    Line 116, Patchset 26: private final ModelList mModels;
    Shuhei Takahashi . resolved

    You can remove `mModels` now.

    Masa Fujita

    Done

    Line 122, Patchset 26: // The available width that the {@link RecyclerView} can use up.
    Shuhei Takahashi . resolved

    Can you mention:

    • When it is null?
    • When it is updated?
    Masa Fujita

    Done

    Line 242, Patchset 26: /**
    Shuhei Takahashi . resolved

    This time, we got a bunch of RecyclerView-related logic in the coordinator. It's nice if you can isolate them into a separate class rather than embedding them in the coordinator... so that the coordinator just coordinates things.

    Masa Fujita

    Ended up moving animation related stuff to `ExtensionActionListRecyclerView` - I think it makes the most sense.

    Line 411, Patchset 26: for (int i = 1; i < mModelsWithAnchors.size() - 1; i++) {
    Shuhei Takahashi . resolved

    This logic can be simpler if we use `mModels`.

    This might sound contradictory to my comment above, but there's chance this can work well after extracting the RecyclerView logic into a separate class.

    Masa Fujita

    Done

    File chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionActionListMediator.java
    Line 123, Patchset 26: if (mAvailableWidth == null) {
    Shuhei Takahashi . resolved

    I guess that, if we return early, it should be near the beginning of the function, not here? Otherwise we may make incomplete modifications to the models.

    Also, can you add a comment when this condition is hit?

    Masa Fujita

    I now think that we should probably treat `availableWidth` as a constraint - sorry for the flip flop

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Charles Hager
    • Shuhei Takahashi
    • Sirisha Kavuluru
    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: I5f93be41ef82be58d2815a9d32631e542f6c83de
    Gerrit-Change-Number: 7521864
    Gerrit-PatchSet: 32
    Gerrit-Owner: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Charles Hager <clh...@google.com>
    Gerrit-Reviewer: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Sirisha Kavuluru <skav...@google.com>
    Gerrit-CC: Emilia Paz <emil...@chromium.org>
    Gerrit-CC: Shuhei Takahashi <n...@chromium.org>
    Gerrit-Attention: Sirisha Kavuluru <skav...@google.com>
    Gerrit-Attention: Shuhei Takahashi <n...@chromium.org>
    Gerrit-Attention: Charles Hager <clh...@google.com>
    Gerrit-Comment-Date: Wed, 04 Feb 2026 16:45:31 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: Yes
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Masa Fujita (Gerrit)

    unread,
    Feb 4, 2026, 11:57:58 AMFeb 4
    to Emilia Paz, Shuhei Takahashi, AyeAye, Chromium LUCI CQ, Sirisha Kavuluru, Charles Hager, chromium...@chromium.org, mac-r...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, hanxi...@chromium.org, peilinwa...@google.com
    Attention needed from Charles Hager, Emilia Paz and Sirisha Kavuluru

    Masa Fujita voted Commit-Queue+1

    Commit-Queue+1
    Open in Gerrit

    Related details

    Attention is currently required from:
    • Charles Hager
    • Emilia Paz
    • Sirisha Kavuluru
    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: I5f93be41ef82be58d2815a9d32631e542f6c83de
    Gerrit-Change-Number: 7521864
    Gerrit-PatchSet: 33
    Gerrit-Owner: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Charles Hager <clh...@google.com>
    Gerrit-Reviewer: Emilia Paz <emil...@chromium.org>
    Gerrit-Reviewer: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Sirisha Kavuluru <skav...@google.com>
    Gerrit-CC: Shuhei Takahashi <n...@chromium.org>
    Gerrit-Attention: Sirisha Kavuluru <skav...@google.com>
    Gerrit-Attention: Emilia Paz <emil...@chromium.org>
    Gerrit-Attention: Charles Hager <clh...@google.com>
    Gerrit-Comment-Date: Wed, 04 Feb 2026 16:57:29 +0000
    Gerrit-HasComments: No
    Gerrit-Has-Labels: Yes
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Masa Fujita (Gerrit)

    unread,
    Feb 4, 2026, 7:43:35 PMFeb 4
    to Emilia Paz, Shuhei Takahashi, AyeAye, Chromium LUCI CQ, Sirisha Kavuluru, Charles Hager, chromium...@chromium.org, mac-r...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, hanxi...@chromium.org, peilinwa...@google.com
    Attention needed from Charles Hager, Emilia Paz and Sirisha Kavuluru

    Masa Fujita voted Commit-Queue+1

    Commit-Queue+1
    Open in Gerrit

    Related details

    Attention is currently required from:
    • Charles Hager
    • Emilia Paz
    • Sirisha Kavuluru
    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: I5f93be41ef82be58d2815a9d32631e542f6c83de
    Gerrit-Change-Number: 7521864
    Gerrit-PatchSet: 35
    Gerrit-Owner: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Charles Hager <clh...@google.com>
    Gerrit-Reviewer: Emilia Paz <emil...@chromium.org>
    Gerrit-Reviewer: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Sirisha Kavuluru <skav...@google.com>
    Gerrit-CC: Shuhei Takahashi <n...@chromium.org>
    Gerrit-Attention: Sirisha Kavuluru <skav...@google.com>
    Gerrit-Attention: Emilia Paz <emil...@chromium.org>
    Gerrit-Attention: Charles Hager <clh...@google.com>
    Gerrit-Comment-Date: Thu, 05 Feb 2026 00:43:12 +0000
    Gerrit-HasComments: No
    Gerrit-Has-Labels: Yes
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Masa Fujita (Gerrit)

    unread,
    Feb 4, 2026, 7:56:15 PMFeb 4
    to Emilia Paz, Shuhei Takahashi, AyeAye, Chromium LUCI CQ, Sirisha Kavuluru, Charles Hager, chromium...@chromium.org, mac-r...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, hanxi...@chromium.org, peilinwa...@google.com
    Attention needed from Charles Hager, Emilia Paz and Sirisha Kavuluru

    Masa Fujita voted Commit-Queue+1

    Commit-Queue+1
    Open in Gerrit

    Related details

    Attention is currently required from:
    • Charles Hager
    • Emilia Paz
    • Sirisha Kavuluru
    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: I5f93be41ef82be58d2815a9d32631e542f6c83de
    Gerrit-Change-Number: 7521864
    Gerrit-PatchSet: 37
    Gerrit-Owner: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Charles Hager <clh...@google.com>
    Gerrit-Reviewer: Emilia Paz <emil...@chromium.org>
    Gerrit-Reviewer: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Sirisha Kavuluru <skav...@google.com>
    Gerrit-CC: Shuhei Takahashi <n...@chromium.org>
    Gerrit-Attention: Sirisha Kavuluru <skav...@google.com>
    Gerrit-Attention: Emilia Paz <emil...@chromium.org>
    Gerrit-Attention: Charles Hager <clh...@google.com>
    Gerrit-Comment-Date: Thu, 05 Feb 2026 00:55:52 +0000
    Gerrit-HasComments: No
    Gerrit-Has-Labels: Yes
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Masa Fujita (Gerrit)

    unread,
    Feb 4, 2026, 8:07:53 PMFeb 4
    to Emilia Paz, Shuhei Takahashi, AyeAye, Chromium LUCI CQ, Sirisha Kavuluru, Charles Hager, chromium...@chromium.org, mac-r...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, hanxi...@chromium.org, peilinwa...@google.com
    Attention needed from Charles Hager, Emilia Paz and Sirisha Kavuluru

    Masa Fujita voted Commit-Queue+1

    Commit-Queue+1
    Open in Gerrit

    Related details

    Attention is currently required from:
    • Charles Hager
    • Emilia Paz
    • Sirisha Kavuluru
    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: I5f93be41ef82be58d2815a9d32631e542f6c83de
    Gerrit-Change-Number: 7521864
    Gerrit-PatchSet: 38
    Gerrit-Owner: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Charles Hager <clh...@google.com>
    Gerrit-Reviewer: Emilia Paz <emil...@chromium.org>
    Gerrit-Reviewer: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Sirisha Kavuluru <skav...@google.com>
    Gerrit-CC: Shuhei Takahashi <n...@chromium.org>
    Gerrit-Attention: Sirisha Kavuluru <skav...@google.com>
    Gerrit-Attention: Emilia Paz <emil...@chromium.org>
    Gerrit-Attention: Charles Hager <clh...@google.com>
    Gerrit-Comment-Date: Thu, 05 Feb 2026 01:07:32 +0000
    Gerrit-HasComments: No
    Gerrit-Has-Labels: Yes
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Masa Fujita (Gerrit)

    unread,
    Feb 4, 2026, 8:17:43 PMFeb 4
    to Emilia Paz, Shuhei Takahashi, AyeAye, Chromium LUCI CQ, Sirisha Kavuluru, Charles Hager, chromium...@chromium.org, mac-r...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, hanxi...@chromium.org, peilinwa...@google.com
    Attention needed from Charles Hager, Emilia Paz and Sirisha Kavuluru

    Masa Fujita voted Commit-Queue+1

    Commit-Queue+1
    Open in Gerrit

    Related details

    Attention is currently required from:
    • Charles Hager
    • Emilia Paz
    • Sirisha Kavuluru
    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: I5f93be41ef82be58d2815a9d32631e542f6c83de
    Gerrit-Change-Number: 7521864
    Gerrit-PatchSet: 39
    Gerrit-Owner: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Charles Hager <clh...@google.com>
    Gerrit-Reviewer: Emilia Paz <emil...@chromium.org>
    Gerrit-Reviewer: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Sirisha Kavuluru <skav...@google.com>
    Gerrit-CC: Shuhei Takahashi <n...@chromium.org>
    Gerrit-Attention: Sirisha Kavuluru <skav...@google.com>
    Gerrit-Attention: Emilia Paz <emil...@chromium.org>
    Gerrit-Attention: Charles Hager <clh...@google.com>
    Gerrit-Comment-Date: Thu, 05 Feb 2026 01:17:22 +0000
    Gerrit-HasComments: No
    Gerrit-Has-Labels: Yes
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Masa Fujita (Gerrit)

    unread,
    Feb 4, 2026, 10:22:39 PMFeb 4
    to Emilia Paz, Shuhei Takahashi, AyeAye, Chromium LUCI CQ, Sirisha Kavuluru, Charles Hager, chromium...@chromium.org, mac-r...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, hanxi...@chromium.org, peilinwa...@google.com
    Attention needed from Charles Hager, Emilia Paz and Sirisha Kavuluru

    Masa Fujita voted Commit-Queue+1

    Commit-Queue+1
    Open in Gerrit

    Related details

    Attention is currently required from:
    • Charles Hager
    • Emilia Paz
    • Sirisha Kavuluru
    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: I5f93be41ef82be58d2815a9d32631e542f6c83de
    Gerrit-Change-Number: 7521864
    Gerrit-PatchSet: 41
    Gerrit-Owner: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Charles Hager <clh...@google.com>
    Gerrit-Reviewer: Emilia Paz <emil...@chromium.org>
    Gerrit-Reviewer: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Sirisha Kavuluru <skav...@google.com>
    Gerrit-CC: Shuhei Takahashi <n...@chromium.org>
    Gerrit-Attention: Sirisha Kavuluru <skav...@google.com>
    Gerrit-Attention: Emilia Paz <emil...@chromium.org>
    Gerrit-Attention: Charles Hager <clh...@google.com>
    Gerrit-Comment-Date: Thu, 05 Feb 2026 03:22:09 +0000
    Gerrit-HasComments: No
    Gerrit-Has-Labels: Yes
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Renae “iamwren” Riley (Gerrit)

    unread,
    Feb 4, 2026, 10:44:23 PMFeb 4
    to Masa Fujita, Emilia Paz, Shuhei Takahashi, AyeAye, Chromium LUCI CQ, Sirisha Kavuluru, Charles Hager, chromium...@chromium.org, mac-r...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, hanxi...@chromium.org, peilinwa...@google.com
    Attention needed from Charles Hager, Emilia Paz, Masa Fujita and Sirisha Kavuluru

    Renae “iamwren” Riley added 1 comment

    Patchset-level comments
    File-level comment, Patchset 41 (Latest):
    Renae “iamwren” Riley . resolved

    intentional

    iamwren

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Charles Hager
    • Emilia Paz
    • Masa Fujita
    • Sirisha Kavuluru
    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: I5f93be41ef82be58d2815a9d32631e542f6c83de
    Gerrit-Change-Number: 7521864
    Gerrit-PatchSet: 41
    Gerrit-Owner: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Charles Hager <clh...@google.com>
    Gerrit-Reviewer: Emilia Paz <emil...@chromium.org>
    Gerrit-Reviewer: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Sirisha Kavuluru <skav...@google.com>
    Gerrit-CC: Renae “iamwren” Riley <ray.ja...@gmail.com>
    Gerrit-CC: Shuhei Takahashi <n...@chromium.org>
    Gerrit-Attention: Masa Fujita <mas...@google.com>
    Gerrit-Attention: Sirisha Kavuluru <skav...@google.com>
    Gerrit-Attention: Emilia Paz <emil...@chromium.org>
    Gerrit-Attention: Charles Hager <clh...@google.com>
    Gerrit-Comment-Date: Thu, 05 Feb 2026 03:44:11 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Renae “iamwren” Riley (Gerrit)

    unread,
    Feb 4, 2026, 10:46:08 PMFeb 4
    to Masa Fujita, Emilia Paz, Shuhei Takahashi, AyeAye, Chromium LUCI CQ, Sirisha Kavuluru, Charles Hager, chromium...@chromium.org, mac-r...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, hanxi...@chromium.org, peilinwa...@google.com
    Attention needed from Charles Hager, Emilia Paz, Masa Fujita and Sirisha Kavuluru

    Renae “iamwren” Riley added 1 comment

    Patchset-level comments
    Renae “iamwren” Riley . unresolved

    waze

    iamwren

    Gerrit-Comment-Date: Thu, 05 Feb 2026 03:45:57 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Masa Fujita (Gerrit)

    unread,
    Feb 4, 2026, 11:05:32 PMFeb 4
    to Renae “iamwren” Riley, Emilia Paz, Shuhei Takahashi, AyeAye, Chromium LUCI CQ, Sirisha Kavuluru, Charles Hager, chromium...@chromium.org, mac-r...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, hanxi...@chromium.org, peilinwa...@google.com
    Attention needed from Charles Hager, Emilia Paz and Sirisha Kavuluru

    Masa Fujita voted Commit-Queue+1

    Commit-Queue+1
    Open in Gerrit

    Related details

    Attention is currently required from:
    • Charles Hager
    • Emilia Paz
    • Sirisha Kavuluru
    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: I5f93be41ef82be58d2815a9d32631e542f6c83de
    Gerrit-Change-Number: 7521864
    Gerrit-PatchSet: 42
    Gerrit-Owner: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Charles Hager <clh...@google.com>
    Gerrit-Reviewer: Emilia Paz <emil...@chromium.org>
    Gerrit-Reviewer: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Sirisha Kavuluru <skav...@google.com>
    Gerrit-CC: Renae “iamwren” Riley <ray.ja...@gmail.com>
    Gerrit-CC: Shuhei Takahashi <n...@chromium.org>
    Gerrit-Attention: Sirisha Kavuluru <skav...@google.com>
    Gerrit-Attention: Emilia Paz <emil...@chromium.org>
    Gerrit-Attention: Charles Hager <clh...@google.com>
    Gerrit-Comment-Date: Thu, 05 Feb 2026 04:05:04 +0000
    Gerrit-HasComments: No
    Gerrit-Has-Labels: Yes
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Masa Fujita (Gerrit)

    unread,
    Feb 5, 2026, 1:30:01 AMFeb 5
    to Renae “iamwren” Riley, Emilia Paz, Shuhei Takahashi, AyeAye, Chromium LUCI CQ, Sirisha Kavuluru, Charles Hager, chromium...@chromium.org, mac-r...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, hanxi...@chromium.org, peilinwa...@google.com
    Attention needed from Charles Hager, Emilia Paz and Sirisha Kavuluru

    Masa Fujita voted Commit-Queue+1

    Commit-Queue+1
    Open in Gerrit

    Related details

    Attention is currently required from:
    • Charles Hager
    • Emilia Paz
    • Sirisha Kavuluru
    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: I5f93be41ef82be58d2815a9d32631e542f6c83de
    Gerrit-Change-Number: 7521864
    Gerrit-PatchSet: 45
    Gerrit-Owner: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Charles Hager <clh...@google.com>
    Gerrit-Reviewer: Emilia Paz <emil...@chromium.org>
    Gerrit-Reviewer: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Sirisha Kavuluru <skav...@google.com>
    Gerrit-CC: Renae “iamwren” Riley <ray.ja...@gmail.com>
    Gerrit-CC: Shuhei Takahashi <n...@chromium.org>
    Gerrit-Attention: Sirisha Kavuluru <skav...@google.com>
    Gerrit-Attention: Emilia Paz <emil...@chromium.org>
    Gerrit-Attention: Charles Hager <clh...@google.com>
    Gerrit-Comment-Date: Thu, 05 Feb 2026 06:29:31 +0000
    Gerrit-HasComments: No
    Gerrit-Has-Labels: Yes
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Masa Fujita (Gerrit)

    unread,
    Feb 5, 2026, 3:44:33 AMFeb 5
    to Renae J. Riley, Shuhei Takahashi, AyeAye, Chromium LUCI CQ, Sirisha Kavuluru, Charles Hager, chromium...@chromium.org, mac-r...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, hanxi...@chromium.org, peilinwa...@google.com

    Masa Fujita voted Commit-Queue+1

    Commit-Queue+1
    Open in Gerrit

    Related details

    Attention set is empty
    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: I5f93be41ef82be58d2815a9d32631e542f6c83de
    Gerrit-Change-Number: 7521864
    Gerrit-PatchSet: 46
    Gerrit-Owner: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Charles Hager <clh...@google.com>
    Gerrit-Reviewer: Emilia Paz <emil...@chromium.org>
    Gerrit-Reviewer: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Sirisha Kavuluru <skav...@google.com>
    Gerrit-CC: Renae J. Riley <ray.ja...@gmail.com>
    Gerrit-CC: Shuhei Takahashi <n...@chromium.org>
    Gerrit-Comment-Date: Thu, 05 Feb 2026 08:44:12 +0000
    Gerrit-HasComments: No
    Gerrit-Has-Labels: Yes
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Emilia Paz (Gerrit)

    unread,
    Feb 5, 2026, 8:29:24 PMFeb 5
    to Masa Fujita, Ben Chin, Renae J. Riley, Shuhei Takahashi, AyeAye, Chromium LUCI CQ, Sirisha Kavuluru, Charles Hager, chromium...@chromium.org, mac-r...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, hanxi...@chromium.org, peilinwa...@google.com
    Attention needed from Charles Hager, Masa Fujita and Sirisha Kavuluru

    Emilia Paz added 5 comments

    Patchset-level comments
    File-level comment, Patchset 46 (Latest):
    Emilia Paz . resolved

    Thanks Masa! The idea makes sense to me. However, I'm still getting familiar with Android and I think a reviewer from there would have better context (not sure I would be able to spot any animation issues)

    File chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionActionListCoordinator.java
    Line 109, Patchset 46 (Latest): .inflate(R.layout.extension_action_anchor, parent, false),
    Emilia Paz . unresolved

    nit: add `/* parameter_name= */` when parameter name cannot be inferred from variable

    Line 188, Patchset 46 (Latest): // TODO(crbug.com/478113313): If the action is unpinned, pop it out beforehand.
    Emilia Paz . unresolved

    for-future-cl: This means this function would do something more thank `getButton`. Should we handle this on a separate function, `popOutButtonView`?

    File chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionActionListMediator.java
    Line 106, Patchset 46 (Latest): */
    Emilia Paz . unresolved

    can we explain what does `animate` param mean?

    Line 411, Patchset 12: reconcileActionItems(/* animate= */ false);
    Charles Hager . unresolved

    How often do we expect this to be called mid-animation? Are there any performance considerations, any edge cases where this could cause lagging during animations?

    Masa Fujita

    This should be very rare - this only happens when we get another `updateVisibility()` update (e.g. the user resizes window) during pinning / unpinning animation. In that case we abandon the ongoing animation and just update the UI instantly

    Emilia Paz

    Lets add that as a comment :)

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Charles Hager
    • Masa Fujita
    • Sirisha Kavuluru
    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: I5f93be41ef82be58d2815a9d32631e542f6c83de
    Gerrit-Change-Number: 7521864
    Gerrit-PatchSet: 46
    Gerrit-Owner: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Charles Hager <clh...@google.com>
    Gerrit-Reviewer: Emilia Paz <emil...@chromium.org>
    Gerrit-Reviewer: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Sirisha Kavuluru <skav...@google.com>
    Gerrit-CC: Ben Chin <lu...@chromium.org>
    Gerrit-CC: Renae J. Riley <ray.ja...@gmail.com>
    Gerrit-CC: Shuhei Takahashi <n...@chromium.org>
    Gerrit-Attention: Masa Fujita <mas...@google.com>
    Gerrit-Attention: Sirisha Kavuluru <skav...@google.com>
    Gerrit-Attention: Charles Hager <clh...@google.com>
    Gerrit-Comment-Date: Fri, 06 Feb 2026 01:29:15 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    Comment-In-Reply-To: Masa Fujita <mas...@google.com>
    Comment-In-Reply-To: Charles Hager <clh...@google.com>
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Emilia Paz (Gerrit)

    unread,
    Feb 5, 2026, 8:31:10 PMFeb 5
    to Masa Fujita, Ben Chin, Renae J. Riley, Shuhei Takahashi, AyeAye, Chromium LUCI CQ, Sirisha Kavuluru, Charles Hager, chromium...@chromium.org, mac-r...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, hanxi...@chromium.org, peilinwa...@google.com
    Attention needed from Charles Hager, Masa Fujita and Sirisha Kavuluru

    Emilia Paz added 1 comment

    Patchset-level comments
    Emilia Paz . unresolved

    question: in Desktopm, puzzle piece is always visible. On Desktop Android, puzzle piece can be hidden (user can unpin it). Have we asked UX what do we want when puzzle piece is unpinned and an extension action is triggered? Do we just show the action, and keep the puzzle piece hidden?

    Gerrit-Comment-Date: Fri, 06 Feb 2026 01:31:00 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Ben Chin (Gerrit)

    unread,
    Feb 6, 2026, 3:31:50 AM (14 days ago) Feb 6
    to Masa Fujita, Renae J. Riley, Shuhei Takahashi, AyeAye, Chromium LUCI CQ, Sirisha Kavuluru, Charles Hager, chromium...@chromium.org, mac-r...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, hanxi...@chromium.org, peilinwa...@google.com
    Attention needed from Charles Hager, Masa Fujita and Sirisha Kavuluru

    Ben Chin added 1 comment

    Patchset-level comments
    Charles Hager . unresolved

    Overall things seem fine, though I think I'll take a look at some point to see how things look frame-by-frame. Have you checked at all whether this has an impact on performance / timing? I know that's been a complication for some of the other toolbar components.

    Masa Fujita

    Thanks for taking a look! The performance seems... fine at best? 🙃 It works well on my high end test device but I'm not sure what the performance hit is going to be on lower end devices. It seems to be not as bad as the tab switcher animation but not too sure.

    Do you know how we can quantitatively test animation performances?

    Masa Fujita

    (unresolving)

    Ben Chin

    I’ve taken a look at the [Perfetto traces](https://ui.perfetto.dev/#!/query?local_cache_key=0209f219-1707-0712-1c68-c17f06eab805) specifically to check for main thread blocking or layout starvation, and I haven't seen any negative impact on timing so far (It took 0.02 ms).
    https://screenshot.googleplex.com/JfDHU93jXkjdNoL

    Gerrit-Comment-Date: Fri, 06 Feb 2026 08:31:26 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Ben Chin (Gerrit)

    unread,
    Feb 6, 2026, 3:32:47 AM (14 days ago) Feb 6
    to Masa Fujita, Renae J. Riley, Shuhei Takahashi, AyeAye, Chromium LUCI CQ, Sirisha Kavuluru, Charles Hager, chromium...@chromium.org, mac-r...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, hanxi...@chromium.org, peilinwa...@google.com
    Attention needed from Charles Hager, Masa Fujita and Sirisha Kavuluru

    Ben Chin added 1 comment

    Patchset-level comments
    Charles Hager . unresolved

    Overall things seem fine, though I think I'll take a look at some point to see how things look frame-by-frame. Have you checked at all whether this has an impact on performance / timing? I know that's been a complication for some of the other toolbar components.

    Masa Fujita

    Thanks for taking a look! The performance seems... fine at best? 🙃 It works well on my high end test device but I'm not sure what the performance hit is going to be on lower end devices. It seems to be not as bad as the tab switcher animation but not too sure.

    Do you know how we can quantitatively test animation performances?

    Masa Fujita

    (unresolving)

    Ben Chin

    I’ve taken a look at the [Perfetto traces](https://ui.perfetto.dev/#!/query?local_cache_key=0209f219-1707-0712-1c68-c17f06eab805) specifically to check for main thread blocking or layout starvation, and I haven't seen any negative impact on timing so far (It took 0.02 ms).
    https://screenshot.googleplex.com/JfDHU93jXkjdNoL

    Gerrit-Comment-Date: Fri, 06 Feb 2026 08:32:20 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    Comment-In-Reply-To: Masa Fujita <mas...@google.com>
    Comment-In-Reply-To: Ben Chin <lu...@chromium.org>
    Comment-In-Reply-To: Charles Hager <clh...@google.com>
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Masa Fujita (Gerrit)

    unread,
    Feb 6, 2026, 1:24:37 PM (14 days ago) Feb 6
    to Ben Chin, Renae J. Riley, Emilia Paz, Shuhei Takahashi, AyeAye, Chromium LUCI CQ, Sirisha Kavuluru, Charles Hager, chromium...@chromium.org, mac-r...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, hanxi...@chromium.org, peilinwa...@google.com
    Attention needed from Ben Chin, Charles Hager, Emilia Paz and Sirisha Kavuluru

    Masa Fujita added 4 comments

    Patchset-level comments
    File-level comment, Patchset 12:
    Charles Hager . resolved

    Overall things seem fine, though I think I'll take a look at some point to see how things look frame-by-frame. Have you checked at all whether this has an impact on performance / timing? I know that's been a complication for some of the other toolbar components.

    Masa Fujita

    Thanks for taking a look! The performance seems... fine at best? 🙃 It works well on my high end test device but I'm not sure what the performance hit is going to be on lower end devices. It seems to be not as bad as the tab switcher animation but not too sure.

    Do you know how we can quantitatively test animation performances?

    Masa Fujita

    (unresolving)

    Ben Chin

    I’ve taken a look at the [Perfetto traces](https://ui.perfetto.dev/#!/query?local_cache_key=0209f219-1707-0712-1c68-c17f06eab805) specifically to check for main thread blocking or layout starvation, and I haven't seen any negative impact on timing so far (It took 0.02 ms).
    https://screenshot.googleplex.com/JfDHU93jXkjdNoL

    Ben Chin

    Attach Perfetto traces logs: https://ui.perfetto.dev/#!/?s=d4efaf939722f3b71fce2fd23ba3c0837eaf89fb

    Masa Fujita

    That's fantastic news! I'm so glad to hear this. Thanks for verifying!

    Emilia Paz . resolved

    question: in Desktopm, puzzle piece is always visible. On Desktop Android, puzzle piece can be hidden (user can unpin it). Have we asked UX what do we want when puzzle piece is unpinned and an extension action is triggered? Do we just show the action, and keep the puzzle piece hidden?

    Masa Fujita

    Yes, though it's a bit complicated (especially with popped out actions). chatted offline and under discussion with UX

    Emilia Paz . unresolved

    Thanks Masa! The idea makes sense to me. However, I'm still getting familiar with Android and I think a reviewer from there would have better context (not sure I would be able to spot any animation issues)

    Masa Fujita

    Thanks for the review as always Emilia! They're always insightful.

    @skav...@google.com Can you take a look at this CL overall from the Android side?

    File chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionToolbarCoordinatorImpl.java
    Line 129, Patchset 46 (Latest): private class MenuButtonWidthConsumer implements ToolbarWidthConsumer {
    Masa Fujita . unresolved

    @clh...@google.com I think I'm now understanding how I should be using ToolbarWidthConsumer correctly! I updated this part, ptal

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Ben Chin
    • Charles Hager
    • Emilia Paz
    • Sirisha Kavuluru
    Gerrit-Attention: Sirisha Kavuluru <skav...@google.com>
    Gerrit-Attention: Ben Chin <lu...@chromium.org>
    Gerrit-Attention: Emilia Paz <emil...@chromium.org>
    Gerrit-Attention: Charles Hager <clh...@google.com>
    Gerrit-Comment-Date: Fri, 06 Feb 2026 18:24:00 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    Comment-In-Reply-To: Masa Fujita <mas...@google.com>
    Comment-In-Reply-To: Ben Chin <lu...@chromium.org>
    Comment-In-Reply-To: Emilia Paz <emil...@chromium.org>
    Comment-In-Reply-To: Charles Hager <clh...@google.com>
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Masa Fujita (Gerrit)

    unread,
    Feb 9, 2026, 8:40:20 AM (11 days ago) Feb 9
    to Ben Chin, Renae J. Riley, Emilia Paz, Shuhei Takahashi, AyeAye, Chromium LUCI CQ, Sirisha Kavuluru, Charles Hager, chromium...@chromium.org, mac-r...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, hanxi...@chromium.org, peilinwa...@google.com
    Attention needed from Charles Hager, Emilia Paz and Sirisha Kavuluru

    Masa Fujita voted and added 4 comments

    Votes added by Masa Fujita

    Commit-Queue+1

    4 comments

    File chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionActionListCoordinator.java
    Line 109, Patchset 46: .inflate(R.layout.extension_action_anchor, parent, false),
    Emilia Paz . resolved

    nit: add `/* parameter_name= */` when parameter name cannot be inferred from variable

    Masa Fujita

    Done

    Line 188, Patchset 46: // TODO(crbug.com/478113313): If the action is unpinned, pop it out beforehand.
    Emilia Paz . resolved

    for-future-cl: This means this function would do something more thank `getButton`. Should we handle this on a separate function, `popOutButtonView`?

    Masa Fujita

    Yep, will handle this in the next cl.

    File chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionActionListMediator.java
    Line 106, Patchset 46: */
    Emilia Paz . resolved

    can we explain what does `animate` param mean?

    Masa Fujita

    Done

    Line 411, Patchset 12: reconcileActionItems(/* animate= */ false);
    Charles Hager . resolved

    How often do we expect this to be called mid-animation? Are there any performance considerations, any edge cases where this could cause lagging during animations?

    Masa Fujita

    This should be very rare - this only happens when we get another `updateVisibility()` update (e.g. the user resizes window) during pinning / unpinning animation. In that case we abandon the ongoing animation and just update the UI instantly

    Emilia Paz

    Lets add that as a comment :)

    Masa Fujita

    Good idea!

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Charles Hager
    • Emilia Paz
    • Sirisha Kavuluru
    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: I5f93be41ef82be58d2815a9d32631e542f6c83de
    Gerrit-Change-Number: 7521864
    Gerrit-PatchSet: 55
    Gerrit-Owner: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Charles Hager <clh...@google.com>
    Gerrit-Reviewer: Emilia Paz <emil...@chromium.org>
    Gerrit-Reviewer: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Sirisha Kavuluru <skav...@google.com>
    Gerrit-CC: Ben Chin <lu...@chromium.org>
    Gerrit-CC: Renae J. Riley <ray.ja...@gmail.com>
    Gerrit-CC: Shuhei Takahashi <n...@chromium.org>
    Gerrit-Attention: Sirisha Kavuluru <skav...@google.com>
    Gerrit-Attention: Emilia Paz <emil...@chromium.org>
    Gerrit-Attention: Charles Hager <clh...@google.com>
    Gerrit-Comment-Date: Mon, 09 Feb 2026 13:39:46 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: Yes
    Comment-In-Reply-To: Masa Fujita <mas...@google.com>
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Masa Fujita (Gerrit)

    unread,
    Feb 10, 2026, 3:35:32 AM (10 days ago) Feb 10
    to Charles Hager, Ben Chin, Renae J. Riley, Emilia Paz, Shuhei Takahashi, AyeAye, Chromium LUCI CQ, Sirisha Kavuluru, chromium...@chromium.org, mac-r...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, hanxi...@chromium.org, peilinwa...@google.com
    Attention needed from Emilia Paz and Sirisha Kavuluru

    Masa Fujita voted Commit-Queue+1

    Commit-Queue+1
    Open in Gerrit

    Related details

    Attention is currently required from:
    • Emilia Paz
    • Sirisha Kavuluru
    Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement 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: I5f93be41ef82be58d2815a9d32631e542f6c83de
    Gerrit-Change-Number: 7521864
    Gerrit-PatchSet: 59
    Gerrit-Owner: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Emilia Paz <emil...@chromium.org>
    Gerrit-Reviewer: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Sirisha Kavuluru <skav...@google.com>
    Gerrit-CC: Ben Chin <lu...@chromium.org>
    Gerrit-CC: Charles Hager <clh...@google.com>
    Gerrit-CC: Renae J. Riley <ray.ja...@gmail.com>
    Gerrit-CC: Shuhei Takahashi <n...@chromium.org>
    Gerrit-Attention: Sirisha Kavuluru <skav...@google.com>
    Gerrit-Attention: Emilia Paz <emil...@chromium.org>
    Gerrit-Comment-Date: Tue, 10 Feb 2026 08:35:04 +0000
    Gerrit-HasComments: No
    Gerrit-Has-Labels: Yes
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Masa Fujita (Gerrit)

    unread,
    Feb 11, 2026, 8:49:13 AM (9 days ago) Feb 11
    to Charles Hager, Ben Chin, Renae J. Riley, Emilia Paz, Shuhei Takahashi, AyeAye, Chromium LUCI CQ, Sirisha Kavuluru, chromium...@chromium.org, mac-r...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, hanxi...@chromium.org, peilinwa...@google.com
    Attention needed from Emilia Paz and Sirisha Kavuluru

    Masa Fujita voted and added 1 comment

    Votes added by Masa Fujita

    Commit-Queue+1

    1 comment

    File chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionToolbarCoordinatorImpl.java
    Line 129, Patchset 46: private class MenuButtonWidthConsumer implements ToolbarWidthConsumer {
    Masa Fujita . resolved

    @clh...@google.com I think I'm now understanding how I should be using ToolbarWidthConsumer correctly! I updated this part, ptal

    Masa Fujita

    Done

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Emilia Paz
    • Sirisha Kavuluru
    Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement 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: I5f93be41ef82be58d2815a9d32631e542f6c83de
    Gerrit-Change-Number: 7521864
    Gerrit-PatchSet: 60
    Gerrit-Owner: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Emilia Paz <emil...@chromium.org>
    Gerrit-Reviewer: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Sirisha Kavuluru <skav...@google.com>
    Gerrit-CC: Ben Chin <lu...@chromium.org>
    Gerrit-CC: Charles Hager <clh...@google.com>
    Gerrit-CC: Renae J. Riley <ray.ja...@gmail.com>
    Gerrit-CC: Shuhei Takahashi <n...@chromium.org>
    Gerrit-Attention: Sirisha Kavuluru <skav...@google.com>
    Gerrit-Attention: Emilia Paz <emil...@chromium.org>
    Gerrit-Comment-Date: Wed, 11 Feb 2026 13:48:46 +0000
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Masa Fujita (Gerrit)

    unread,
    Feb 11, 2026, 10:34:03 AM (9 days ago) Feb 11
    to Charles Hager, Ben Chin, Renae J. Riley, Emilia Paz, Shuhei Takahashi, AyeAye, Chromium LUCI CQ, Sirisha Kavuluru, chromium...@chromium.org, mac-r...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, hanxi...@chromium.org, peilinwa...@google.com
    Attention needed from Emilia Paz and Sirisha Kavuluru

    Masa Fujita voted Commit-Queue+1

    Commit-Queue+1
    Open in Gerrit

    Related details

    Attention is currently required from:
    • Emilia Paz
    • Sirisha Kavuluru
    Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement 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: I5f93be41ef82be58d2815a9d32631e542f6c83de
    Gerrit-Change-Number: 7521864
    Gerrit-PatchSet: 62
    Gerrit-Owner: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Emilia Paz <emil...@chromium.org>
    Gerrit-Reviewer: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Sirisha Kavuluru <skav...@google.com>
    Gerrit-CC: Ben Chin <lu...@chromium.org>
    Gerrit-CC: Charles Hager <clh...@google.com>
    Gerrit-CC: Renae J. Riley <ray.ja...@gmail.com>
    Gerrit-CC: Shuhei Takahashi <n...@chromium.org>
    Gerrit-Attention: Sirisha Kavuluru <skav...@google.com>
    Gerrit-Attention: Emilia Paz <emil...@chromium.org>
    Gerrit-Comment-Date: Wed, 11 Feb 2026 15:33:32 +0000
    Gerrit-HasComments: No
    Gerrit-Has-Labels: Yes
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Masa Fujita (Gerrit)

    unread,
    Feb 11, 2026, 10:36:37 AM (9 days ago) Feb 11
    to Charles Hager, Ben Chin, Renae J. Riley, Emilia Paz, Shuhei Takahashi, AyeAye, Chromium LUCI CQ, Sirisha Kavuluru, chromium...@chromium.org, mac-r...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, hanxi...@chromium.org, peilinwa...@google.com
    Attention needed from Emilia Paz and Sirisha Kavuluru

    Masa Fujita voted Commit-Queue+1

    Commit-Queue+1
    Open in Gerrit

    Related details

    Attention is currently required from:
    • Emilia Paz
    • Sirisha Kavuluru
    Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement 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: I5f93be41ef82be58d2815a9d32631e542f6c83de
    Gerrit-Change-Number: 7521864
    Gerrit-PatchSet: 63
    Gerrit-Owner: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Emilia Paz <emil...@chromium.org>
    Gerrit-Reviewer: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Sirisha Kavuluru <skav...@google.com>
    Gerrit-CC: Ben Chin <lu...@chromium.org>
    Gerrit-CC: Charles Hager <clh...@google.com>
    Gerrit-CC: Renae J. Riley <ray.ja...@gmail.com>
    Gerrit-CC: Shuhei Takahashi <n...@chromium.org>
    Gerrit-Attention: Sirisha Kavuluru <skav...@google.com>
    Gerrit-Attention: Emilia Paz <emil...@chromium.org>
    Gerrit-Comment-Date: Wed, 11 Feb 2026 15:36:15 +0000
    Gerrit-HasComments: No
    Gerrit-Has-Labels: Yes
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Masa Fujita (Gerrit)

    unread,
    Feb 11, 2026, 10:41:58 AM (9 days ago) Feb 11
    to Charles Hager, Ben Chin, Renae J. Riley, Emilia Paz, Shuhei Takahashi, AyeAye, Chromium LUCI CQ, Sirisha Kavuluru, chromium...@chromium.org, mac-r...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, hanxi...@chromium.org, peilinwa...@google.com
    Attention needed from Emilia Paz and Sirisha Kavuluru

    Masa Fujita voted Commit-Queue+1

    Commit-Queue+1
    Open in Gerrit

    Related details

    Attention is currently required from:
    • Emilia Paz
    • Sirisha Kavuluru
    Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement 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: I5f93be41ef82be58d2815a9d32631e542f6c83de
    Gerrit-Change-Number: 7521864
    Gerrit-PatchSet: 65
    Gerrit-Owner: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Emilia Paz <emil...@chromium.org>
    Gerrit-Reviewer: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Sirisha Kavuluru <skav...@google.com>
    Gerrit-CC: Ben Chin <lu...@chromium.org>
    Gerrit-CC: Charles Hager <clh...@google.com>
    Gerrit-CC: Renae J. Riley <ray.ja...@gmail.com>
    Gerrit-CC: Shuhei Takahashi <n...@chromium.org>
    Gerrit-Attention: Sirisha Kavuluru <skav...@google.com>
    Gerrit-Attention: Emilia Paz <emil...@chromium.org>
    Gerrit-Comment-Date: Wed, 11 Feb 2026 15:41:36 +0000
    Gerrit-HasComments: No
    Gerrit-Has-Labels: Yes
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Masa Fujita (Gerrit)

    unread,
    Feb 11, 2026, 11:11:57 AM (9 days ago) Feb 11
    to Charles Hager, Ben Chin, Renae J. Riley, Emilia Paz, Shuhei Takahashi, AyeAye, Chromium LUCI CQ, Sirisha Kavuluru, chromium...@chromium.org, mac-r...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, hanxi...@chromium.org, peilinwa...@google.com
    Attention needed from Charles Hager, Emilia Paz and Sirisha Kavuluru

    Masa Fujita added 1 comment

    File chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionActionListCoordinator.java
    Line 132, Patchset 12: * 10;
    Charles Hager . resolved

    Out of curiosity, why 10 times the length of a button / touch target?

    Masa Fujita

    This is honestly not based on much. We need this padding because even though the entire `RecyclerView` should always theoretically remain visible, the animation can get janky and `RecyclerView` might decide to destroy the anchors' View instances.

    Masa Fujita

    Decided to use a window width (10 was a bit too random).

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Charles Hager
    • Emilia Paz
    • Sirisha Kavuluru
    Gerrit-Attention: Charles Hager <clh...@google.com>
    Gerrit-Comment-Date: Wed, 11 Feb 2026 16:11:27 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    Comment-In-Reply-To: Masa Fujita <mas...@google.com>
    Comment-In-Reply-To: Charles Hager <clh...@google.com>
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Masa Fujita (Gerrit)

    unread,
    Feb 11, 2026, 1:30:29 PM (9 days ago) Feb 11
    to Charles Hager, Ben Chin, Renae J. Riley, Emilia Paz, Shuhei Takahashi, AyeAye, Chromium LUCI CQ, Sirisha Kavuluru, chromium...@chromium.org, mac-r...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, hanxi...@chromium.org, peilinwa...@google.com
    Attention needed from Emilia Paz and Sirisha Kavuluru

    Masa Fujita voted Commit-Queue+1

    Commit-Queue+1
    Open in Gerrit

    Related details

    Attention is currently required from:
    • Emilia Paz
    • Sirisha Kavuluru
    Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement 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: I5f93be41ef82be58d2815a9d32631e542f6c83de
    Gerrit-Change-Number: 7521864
    Gerrit-PatchSet: 66
    Gerrit-Owner: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Emilia Paz <emil...@chromium.org>
    Gerrit-Reviewer: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Sirisha Kavuluru <skav...@google.com>
    Gerrit-CC: Ben Chin <lu...@chromium.org>
    Gerrit-CC: Charles Hager <clh...@google.com>
    Gerrit-CC: Renae J. Riley <ray.ja...@gmail.com>
    Gerrit-CC: Shuhei Takahashi <n...@chromium.org>
    Gerrit-Attention: Sirisha Kavuluru <skav...@google.com>
    Gerrit-Attention: Emilia Paz <emil...@chromium.org>
    Gerrit-Comment-Date: Wed, 11 Feb 2026 18:29:55 +0000
    Gerrit-HasComments: No
    Gerrit-Has-Labels: Yes
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Sirisha Kavuluru (Gerrit)

    unread,
    Feb 12, 2026, 1:14:41 AM (8 days ago) Feb 12
    to Masa Fujita, Charles Hager, Ben Chin, Renae J. Riley, Shuhei Takahashi, AyeAye, Chromium LUCI CQ, chromium...@chromium.org, mac-r...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, hanxi...@chromium.org, peilinwa...@google.com
    Attention needed from Masa Fujita

    Sirisha Kavuluru added 6 comments

    Patchset-level comments
    File-level comment, Patchset 68 (Latest):
    Sirisha Kavuluru . resolved

    Left comments related to toolbar width consumption. Looking at animations next

    Commit Message
    Line 28, Patchset 68 (Latest):We take advantage of the dynamic toolbar ranking implementations and
    route the layout request to `ExtensionActionListMediator` to decide the
    proper action to hide when the window gets too narrow.
    Sirisha Kavuluru . unresolved

    It looks like this CL implements 3 things - adding an anchor view, animating toolbar actions and consuming toolbar width.

    Would it be possible to split these into separate CLs inorder to evaluate changes required for each separately? We can have one for anchor + toolbar width consumption and then another one for animations support?

    File chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/browser/ui/extensions/ExtensionsToolbarBridge.java
    Line 66, Patchset 46: if (mProfile.shutdownStarted()) {
    // TODO(crbug.com/459079170): This is to prevent tests from breaking. {@code
    // ExtensionToolbarCoordinatorImpl} should ideally be destroyed following {@code
    // ChromeAndroidTask}'s destruction, and it is currently being worked on.
    return null;
    }
    Sirisha Kavuluru . unresolved

    How is profile destruction related to the change in this CL?

    File chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionActionListCoordinator.java
    Line 62, Patchset 68 (Latest): this,
    Sirisha Kavuluru . unresolved

    This creates a cyclic dependency where coordinator has access to mediator and vice versa. We should instead define a delegate interface that has methods required by mediator, have this coordinator implement that interface and then pass the interface reference to mediator instead

    File chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionActionListMediator.java
    Line 180, Patchset 68 (Latest): mContainer.scheduleRequestLayout();
    Sirisha Kavuluru . unresolved

    Why do we need to call this?

    Line 195, Patchset 68 (Latest): (view) -> onPrimaryClick("aapbdbdomjkkjkaonfhkkikfgjllcleb"))
    Sirisha Kavuluru . unresolved

    revert

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Masa Fujita
    Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement 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: I5f93be41ef82be58d2815a9d32631e542f6c83de
    Gerrit-Change-Number: 7521864
    Gerrit-PatchSet: 68
    Gerrit-Owner: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Emilia Paz <emil...@chromium.org>
    Gerrit-Reviewer: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Sirisha Kavuluru <skav...@google.com>
    Gerrit-CC: Ben Chin <lu...@chromium.org>
    Gerrit-CC: Charles Hager <clh...@google.com>
    Gerrit-CC: Renae J. Riley <ray.ja...@gmail.com>
    Gerrit-CC: Shuhei Takahashi <n...@chromium.org>
    Gerrit-Attention: Masa Fujita <mas...@google.com>
    Gerrit-Comment-Date: Thu, 12 Feb 2026 06:14:32 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Sirisha Kavuluru (Gerrit)

    unread,
    Feb 12, 2026, 1:57:50 AM (8 days ago) Feb 12
    to Masa Fujita, Charles Hager, Ben Chin, Renae J. Riley, Shuhei Takahashi, AyeAye, Chromium LUCI CQ, chromium...@chromium.org, mac-r...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, hanxi...@chromium.org, peilinwa...@google.com
    Attention needed from Masa Fujita

    Sirisha Kavuluru added 4 comments

    File chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionActionListCoordinator.java
    Line 67, Patchset 46: actionModels,
    Sirisha Kavuluru . unresolved

    Curious - why do we not want to pass mModelsWithAnchors to mediator?

    File chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionActionListMediator.java
    Line 343, Patchset 46: reconcileActionItems(/* animate= */ false);
    Sirisha Kavuluru . unresolved

    why do we want this to be false?

    Line 360, Patchset 46: reconcileActionItems(/* animate= */ false);
    Sirisha Kavuluru . unresolved

    What happens if we just set an animator on recycler view and never disable it? Do we see issues in this initialization flow? It looks like animate is false for this one and for fitToWidth - wondering if we should set to true for both these cases too

    Havent seen this pattern where we need to explicitly set item animator to value vs null. The only other example I am aware of is we do this for tab switcher where we disable recycler view animation when it might conflict with another swipe animation : https://source.chromium.org/chromium/chromium/src/+/main:chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListMediator.java;l=1388;drc=4e7bd600fd6278b17f3697832a13268593416e4b;bpv=0;bpt=1

    File chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionActionListRecyclerView.java
    Line 123, Patchset 46: wrapRecyclerViewWidth();
    Sirisha Kavuluru . unresolved

    Trying to understand this better. I assume this maps to "During `RecyclerView`'s
    animation, we request layout to the `RecyclerView` every frame to make
    sure that the omnibox perfectly follows the `RecyclerView`'s animation." in the description?

    Could we draft the flow without and then with this change to understand better. IIUC, current flow without this change is:
    Extension action is added or removed from list -> recycler view item animator is kicked off and recycler view shrinks or expands. Do we see a delay in omnibox resize during this flow? Can test this on my device tomorrow.

    With this change when we call setLayoutParams on this recycler view, does it trigger an onMeasure on ToolbarTablet which then updates the width of omnibox?

    Historically, EditText#onMeasure is an expensive operation and should be avoided if possible. Just from online search, I see one approach to animation an Edittext view along with a recycler view is to register a registerAdapterDataObserver() on Recyclerview adapter's and use the onInsert / onRemove to trigger animation on sibling view. We could use TransitionManager here which might have inbuilt optimizations for EditText animations.

    Gerrit-Comment-Date: Thu, 12 Feb 2026 06:57:38 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Masa Fujita (Gerrit)

    unread,
    Feb 12, 2026, 2:30:34 AM (8 days ago) Feb 12
    to Charles Hager, Ben Chin, Renae J. Riley, Shuhei Takahashi, AyeAye, Chromium LUCI CQ, Sirisha Kavuluru, chromium...@chromium.org, mac-r...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, hanxi...@chromium.org, peilinwa...@google.com
    Attention needed from Sirisha Kavuluru

    Masa Fujita added 4 comments

    File chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/browser/ui/extensions/ExtensionsToolbarBridge.java
    Line 66, Patchset 46: if (mProfile.shutdownStarted()) {
    // TODO(crbug.com/459079170): This is to prevent tests from breaking. {@code
    // ExtensionToolbarCoordinatorImpl} should ideally be destroyed following {@code
    // ChromeAndroidTask}'s destruction, and it is currently being worked on.
    return null;
    }
    Sirisha Kavuluru . unresolved

    How is profile destruction related to the change in this CL?

    Masa Fujita

    Sorry, I moved this to a separate CL (crrev.com/c/7568682). Without the patch, this CL made some tests crash due to our new callbacks. During test destructions, sometimes the profile was destroyed before the UI, which caused the callback to run on a broken bridge. The fundamental problem is that extensions UI outlives the bridge.

    File chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionActionListCoordinator.java
    Line 67, Patchset 46: actionModels,
    Sirisha Kavuluru . unresolved

    Curious - why do we not want to pass mModelsWithAnchors to mediator?

    Masa Fujita

    We decided that we should consolidate the anchors logic and let mediator deal with the actual items instead of the one with anchors (the `reconcileActionItems()` got pretty complicated, hence `ExtensionActionListAnchoredModelList`)

    File chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionActionListMediator.java
    Line 343, Patchset 46: reconcileActionItems(/* animate= */ false);
    Sirisha Kavuluru . unresolved

    why do we want this to be false?

    Masa Fujita
    Animations during ToolbarTablet's `updateVisibility()` doesn't work too well, unfortunately :(
    The flow would be something like:
    ```
    ToolbarTablet requests new width
    -> We incrementaly increase / decrease width
    -> ToolbarTablet comes up with a new width
    -> ...
    ```
    and gets stuck sometimes.
    File chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionActionListRecyclerView.java
    Line 123, Patchset 46: wrapRecyclerViewWidth();
    Sirisha Kavuluru . unresolved

    Trying to understand this better. I assume this maps to "During `RecyclerView`'s
    animation, we request layout to the `RecyclerView` every frame to make
    sure that the omnibox perfectly follows the `RecyclerView`'s animation." in the description?

    Could we draft the flow without and then with this change to understand better. IIUC, current flow without this change is:
    Extension action is added or removed from list -> recycler view item animator is kicked off and recycler view shrinks or expands. Do we see a delay in omnibox resize during this flow? Can test this on my device tomorrow.

    With this change when we call setLayoutParams on this recycler view, does it trigger an onMeasure on ToolbarTablet which then updates the width of omnibox?

    Historically, EditText#onMeasure is an expensive operation and should be avoided if possible. Just from online search, I see one approach to animation an Edittext view along with a recycler view is to register a registerAdapterDataObserver() on Recyclerview adapter's and use the onInsert / onRemove to trigger animation on sibling view. We could use TransitionManager here which might have inbuilt optimizations for EditText animations.

    Masa Fujita

    The main problem that we have here that the `RecyclerView`'s width updates instantly, and does not follow the animation of its contents. Without this CL, the omnibox jumps instantly, and then the icons would move into place. If we want the container (and the omnibox) to follow the contents' animation, we have to manually measure the contents and their transforms and request the appropriate width to the layouter.

    I thought about using separate but similar / same animations on the container too, hoping that it would be better performance-wise, but it's very difficult to completely synchronize the animation of the outer container with the contents because the `RecyclerView` animates async + we would have to completely reconstruct `RecyclerView`'s animations (which is non-linear with things like fade in -> slide etc).

    I uploaded a new patch where we determine the width on `onMeasure()` phase, which hopefully is a bit cleaner. The flow would be something like:
    ```
    We update data
    while (RecyclerView's animation is going on)
    mRequestLayoutRunnable is run
    onMeasure() measures the contents and returns the 'actual' width
    mRequestLayoutRunnable adds itself again to request layout in the next frame
    ```

    Ben's analysis ([1]) seems to suggest that the performance hit is hopefully neglegible, and I'm thinking that we could maybe turn off animations for lower end devices altogether. But another option is to give up perfect synchronization and just add another animation on the container (but it ended up looking very janky even with my best effort...)

    [1] https://chromium-review.googlesource.com/c/chromium/src/+/7521864/comments/3a5eece5_ffd2a254

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Sirisha Kavuluru
    Gerrit-Attention: Sirisha Kavuluru <skav...@google.com>
    Gerrit-Comment-Date: Thu, 12 Feb 2026 07:30:04 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    Comment-In-Reply-To: Sirisha Kavuluru <skav...@google.com>
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Masa Fujita (Gerrit)

    unread,
    Feb 12, 2026, 1:18:27 PM (8 days ago) Feb 12
    to Charles Hager, Ben Chin, Renae J. Riley, Shuhei Takahashi, AyeAye, Chromium LUCI CQ, Sirisha Kavuluru, chromium...@chromium.org, mac-r...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, hanxi...@chromium.org, peilinwa...@google.com
    Attention needed from Sirisha Kavuluru

    Masa Fujita voted Commit-Queue+1

    Commit-Queue+1
    Open in Gerrit

    Related details

    Attention is currently required from:
    • Sirisha Kavuluru
    Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement 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: I5f93be41ef82be58d2815a9d32631e542f6c83de
    Gerrit-Change-Number: 7521864
    Gerrit-PatchSet: 69
    Gerrit-Owner: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Emilia Paz <emil...@chromium.org>
    Gerrit-Reviewer: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Sirisha Kavuluru <skav...@google.com>
    Gerrit-CC: Ben Chin <lu...@chromium.org>
    Gerrit-CC: Charles Hager <clh...@google.com>
    Gerrit-CC: Renae J. Riley <ray.ja...@gmail.com>
    Gerrit-CC: Shuhei Takahashi <n...@chromium.org>
    Gerrit-Attention: Sirisha Kavuluru <skav...@google.com>
    Gerrit-Comment-Date: Thu, 12 Feb 2026 18:17:59 +0000
    Gerrit-HasComments: No
    Gerrit-Has-Labels: Yes
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Masa Fujita (Gerrit)

    unread,
    Feb 12, 2026, 1:27:30 PM (8 days ago) Feb 12
    to Charles Hager, Ben Chin, Renae J. Riley, Shuhei Takahashi, AyeAye, Chromium LUCI CQ, Sirisha Kavuluru, chromium...@chromium.org, mac-r...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, hanxi...@chromium.org, peilinwa...@google.com
    Attention needed from Sirisha Kavuluru

    Masa Fujita added 3 comments

    Commit Message
    Line 28, Patchset 68:We take advantage of the dynamic toolbar ranking implementations and

    route the layout request to `ExtensionActionListMediator` to decide the
    proper action to hide when the window gets too narrow.
    Sirisha Kavuluru . unresolved

    It looks like this CL implements 3 things - adding an anchor view, animating toolbar actions and consuming toolbar width.

    Would it be possible to split these into separate CLs inorder to evaluate changes required for each separately? We can have one for anchor + toolbar width consumption and then another one for animations support?

    Masa Fujita

    Good point, I'll work on splitting it into 3 - the resulting code should look about the same, can you review on this one for now? I will work on splitting it tomorrow

    File chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionActionListCoordinator.java
    Line 62, Patchset 68: this,
    Sirisha Kavuluru . resolved

    This creates a cyclic dependency where coordinator has access to mediator and vice versa. We should instead define a delegate interface that has methods required by mediator, have this coordinator implement that interface and then pass the interface reference to mediator instead

    Masa Fujita

    Done

    File chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionActionListMediator.java
    Line 360, Patchset 46: reconcileActionItems(/* animate= */ false);
    Sirisha Kavuluru . unresolved

    What happens if we just set an animator on recycler view and never disable it? Do we see issues in this initialization flow? It looks like animate is false for this one and for fitToWidth - wondering if we should set to true for both these cases too

    Havent seen this pattern where we need to explicitly set item animator to value vs null. The only other example I am aware of is we do this for tab switcher where we disable recycler view animation when it might conflict with another swipe animation : https://source.chromium.org/chromium/chromium/src/+/main:chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListMediator.java;l=1388;drc=4e7bd600fd6278b17f3697832a13268593416e4b;bpv=0;bpt=1

    Masa Fujita

    As mentioned in the other reply, I don't think we should enable animations for `fitToWidth`. For initialization I'm fine with either (to me it looks about the same whether we pass true or false here).

    Gerrit-Comment-Date: Thu, 12 Feb 2026 18:26:55 +0000
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Masa Fujita (Gerrit)

    unread,
    Feb 12, 2026, 10:58:39 PM (7 days ago) Feb 12
    to Charles Hager, Ben Chin, Renae J. Riley, Shuhei Takahashi, AyeAye, Chromium LUCI CQ, Sirisha Kavuluru, chromium...@chromium.org, mac-r...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, hanxi...@chromium.org, peilinwa...@google.com
    Attention needed from Sirisha Kavuluru

    Masa Fujita voted Commit-Queue+1

    Commit-Queue+1
    Open in Gerrit

    Related details

    Attention is currently required from:
    • Sirisha Kavuluru
    Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement 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: I5f93be41ef82be58d2815a9d32631e542f6c83de
    Gerrit-Change-Number: 7521864
    Gerrit-PatchSet: 71
    Gerrit-Owner: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Emilia Paz <emil...@chromium.org>
    Gerrit-Reviewer: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Sirisha Kavuluru <skav...@google.com>
    Gerrit-CC: Ben Chin <lu...@chromium.org>
    Gerrit-CC: Charles Hager <clh...@google.com>
    Gerrit-CC: Renae J. Riley <ray.ja...@gmail.com>
    Gerrit-CC: Shuhei Takahashi <n...@chromium.org>
    Gerrit-Attention: Sirisha Kavuluru <skav...@google.com>
    Gerrit-Comment-Date: Fri, 13 Feb 2026 03:58:13 +0000
    Gerrit-HasComments: No
    Gerrit-Has-Labels: Yes
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Masa Fujita (Gerrit)

    unread,
    Feb 13, 2026, 12:26:09 AM (7 days ago) Feb 13
    to Charles Hager, Ben Chin, Renae J. Riley, Shuhei Takahashi, AyeAye, Chromium LUCI CQ, Sirisha Kavuluru, chromium...@chromium.org, mac-r...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, hanxi...@chromium.org, peilinwa...@google.com
    Attention needed from Sirisha Kavuluru

    Masa Fujita voted Commit-Queue+1

    Commit-Queue+1
    Open in Gerrit

    Related details

    Attention is currently required from:
    • Sirisha Kavuluru
    Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement 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: I5f93be41ef82be58d2815a9d32631e542f6c83de
    Gerrit-Change-Number: 7521864
    Gerrit-PatchSet: 72
    Gerrit-Owner: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Emilia Paz <emil...@chromium.org>
    Gerrit-Reviewer: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Sirisha Kavuluru <skav...@google.com>
    Gerrit-CC: Ben Chin <lu...@chromium.org>
    Gerrit-CC: Charles Hager <clh...@google.com>
    Gerrit-CC: Renae J. Riley <ray.ja...@gmail.com>
    Gerrit-CC: Shuhei Takahashi <n...@chromium.org>
    Gerrit-Attention: Sirisha Kavuluru <skav...@google.com>
    Gerrit-Comment-Date: Fri, 13 Feb 2026 05:25:45 +0000
    Gerrit-HasComments: No
    Gerrit-Has-Labels: Yes
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Masa Fujita (Gerrit)

    unread,
    Feb 13, 2026, 2:01:20 AM (7 days ago) Feb 13
    to Charles Hager, Ben Chin, Renae J. Riley, Shuhei Takahashi, AyeAye, Chromium LUCI CQ, Sirisha Kavuluru, chromium...@chromium.org, mac-r...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, hanxi...@chromium.org, peilinwa...@google.com
    Attention needed from Sirisha Kavuluru

    Masa Fujita voted and added 1 comment

    Votes added by Masa Fujita

    Commit-Queue+1

    1 comment

    Commit Message
    Line 28, Patchset 68:We take advantage of the dynamic toolbar ranking implementations and
    route the layout request to `ExtensionActionListMediator` to decide the
    proper action to hide when the window gets too narrow.
    Sirisha Kavuluru . resolved

    It looks like this CL implements 3 things - adding an anchor view, animating toolbar actions and consuming toolbar width.

    Would it be possible to split these into separate CLs inorder to evaluate changes required for each separately? We can have one for anchor + toolbar width consumption and then another one for animations support?

    Masa Fujita

    Good point, I'll work on splitting it into 3 - the resulting code should look about the same, can you review on this one for now? I will work on splitting it tomorrow

    Masa Fujita

    Split into 3 CLs - done

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Sirisha Kavuluru
    Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement 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: I5f93be41ef82be58d2815a9d32631e542f6c83de
    Gerrit-Change-Number: 7521864
    Gerrit-PatchSet: 76
    Gerrit-Owner: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Emilia Paz <emil...@chromium.org>
    Gerrit-Reviewer: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Sirisha Kavuluru <skav...@google.com>
    Gerrit-CC: Ben Chin <lu...@chromium.org>
    Gerrit-CC: Charles Hager <clh...@google.com>
    Gerrit-CC: Renae J. Riley <ray.ja...@gmail.com>
    Gerrit-CC: Shuhei Takahashi <n...@chromium.org>
    Gerrit-Attention: Sirisha Kavuluru <skav...@google.com>
    Gerrit-Comment-Date: Fri, 13 Feb 2026 07:00:50 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: Yes
    Comment-In-Reply-To: Masa Fujita <mas...@google.com>
    Comment-In-Reply-To: Sirisha Kavuluru <skav...@google.com>
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Masa Fujita (Gerrit)

    unread,
    Feb 17, 2026, 6:42:12 AM (3 days ago) Feb 17
    to Charles Hager, Ben Chin, Renae J. Riley, Shuhei Takahashi, AyeAye, Chromium LUCI CQ, Sirisha Kavuluru, chromium...@chromium.org, mac-r...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, hanxi...@chromium.org, peilinwa...@google.com
    Attention needed from Sirisha Kavuluru

    Masa Fujita voted Commit-Queue+1

    Commit-Queue+1
    Open in Gerrit

    Related details

    Attention is currently required from:
    • Sirisha Kavuluru
    Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement 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: I5f93be41ef82be58d2815a9d32631e542f6c83de
    Gerrit-Change-Number: 7521864
    Gerrit-PatchSet: 81
    Gerrit-Owner: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Emilia Paz <emil...@chromium.org>
    Gerrit-Reviewer: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Sirisha Kavuluru <skav...@google.com>
    Gerrit-CC: Ben Chin <lu...@chromium.org>
    Gerrit-CC: Charles Hager <clh...@google.com>
    Gerrit-CC: Renae J. Riley <ray.ja...@gmail.com>
    Gerrit-CC: Shuhei Takahashi <n...@chromium.org>
    Gerrit-Attention: Sirisha Kavuluru <skav...@google.com>
    Gerrit-Comment-Date: Tue, 17 Feb 2026 11:41:51 +0000
    Gerrit-HasComments: No
    Gerrit-Has-Labels: Yes
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Masa Fujita (Gerrit)

    unread,
    Feb 18, 2026, 9:15:06 AM (2 days ago) Feb 18
    to Charles Hager, Ben Chin, Renae J. Riley, Shuhei Takahashi, AyeAye, Chromium LUCI CQ, Sirisha Kavuluru, chromium...@chromium.org, mac-r...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, hanxi...@chromium.org, peilinwa...@google.com
    Attention needed from Charles Hager and Sirisha Kavuluru

    Masa Fujita added 5 comments

    File chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionActionListMediator.java
    Line 88, Patchset 12: // RecyclerView} do not have sliding animations and only have fading animations, but we want
    Charles Hager . resolved

    Do the edge items get created but aren't initially visible, then slide into view during the animation?

    Masa Fujita
    Without the anchors, if the edge items' visibilities change:
    - the edge item at the start (far right (because `stackFromEnd = true`)) gets created outside the viewport and does not slide in automatically. We would have to programatically scroll to the top.
    - the edge item at the end (far left) gets created with a "fade in" animation. No sliding animation for anyone, so nothing for the omnibox to track.

    but, with the anchors, no icons are edge items, so everything should be always stay visible and within the bounds of the `RecyclerView`.
    Masa Fujita

    Done

    Line 180, Patchset 68: mContainer.scheduleRequestLayout();
    Sirisha Kavuluru . resolved

    Why do we need to call this?

    Masa Fujita

    ditto

    Line 195, Patchset 68: (view) -> onPrimaryClick("aapbdbdomjkkjkaonfhkkikfgjllcleb"))
    Sirisha Kavuluru . resolved

    revert

    Masa Fujita

    Sorry!

    Line 343, Patchset 46: reconcileActionItems(/* animate= */ false);
    Sirisha Kavuluru . resolved

    why do we want this to be false?

    Masa Fujita
    Animations during ToolbarTablet's `updateVisibility()` doesn't work too well, unfortunately :(
    The flow would be something like:
    ```
    ToolbarTablet requests new width
    -> We incrementaly increase / decrease width
    -> ToolbarTablet comes up with a new width
    -> ...
    ```
    and gets stuck sometimes.
    Masa Fujita

    Decided to keep animations ON for everything for now with our new approach - if we use TransitionManager the "bounds" are updated instantly, so it should not fight the ranking system.

    Line 360, Patchset 46: reconcileActionItems(/* animate= */ false);
    Sirisha Kavuluru . resolved

    What happens if we just set an animator on recycler view and never disable it? Do we see issues in this initialization flow? It looks like animate is false for this one and for fitToWidth - wondering if we should set to true for both these cases too

    Havent seen this pattern where we need to explicitly set item animator to value vs null. The only other example I am aware of is we do this for tab switcher where we disable recycler view animation when it might conflict with another swipe animation : https://source.chromium.org/chromium/chromium/src/+/main:chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListMediator.java;l=1388;drc=4e7bd600fd6278b17f3697832a13268593416e4b;bpv=0;bpt=1

    Masa Fujita

    As mentioned in the other reply, I don't think we should enable animations for `fitToWidth`. For initialization I'm fine with either (to me it looks about the same whether we pass true or false here).

    Masa Fujita

    ditto

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Charles Hager
    • Sirisha Kavuluru
    Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement 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: I5f93be41ef82be58d2815a9d32631e542f6c83de
    Gerrit-Change-Number: 7521864
    Gerrit-PatchSet: 86
    Gerrit-Owner: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Emilia Paz <emil...@chromium.org>
    Gerrit-Reviewer: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Sirisha Kavuluru <skav...@google.com>
    Gerrit-CC: Ben Chin <lu...@chromium.org>
    Gerrit-CC: Charles Hager <clh...@google.com>
    Gerrit-CC: Renae J. Riley <ray.ja...@gmail.com>
    Gerrit-CC: Shuhei Takahashi <n...@chromium.org>
    Gerrit-Attention: Sirisha Kavuluru <skav...@google.com>
    Gerrit-Attention: Charles Hager <clh...@google.com>
    Gerrit-Comment-Date: Wed, 18 Feb 2026 14:14:44 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    Comment-In-Reply-To: Masa Fujita <mas...@google.com>
    Comment-In-Reply-To: Sirisha Kavuluru <skav...@google.com>
    Comment-In-Reply-To: Charles Hager <clh...@google.com>
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Masa Fujita (Gerrit)

    unread,
    Feb 18, 2026, 9:19:24 AM (2 days ago) Feb 18
    to Charles Hager, Ben Chin, Renae J. Riley, Emilia Paz, Shuhei Takahashi, AyeAye, Chromium LUCI CQ, Sirisha Kavuluru, chromium...@chromium.org, mac-r...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, hanxi...@chromium.org, peilinwa...@google.com
    Attention needed from Charles Hager, Emilia Paz and Sirisha Kavuluru

    Masa Fujita voted and added 2 comments

    Votes added by Masa Fujita

    Commit-Queue+1

    2 comments

    Patchset-level comments

    Thanks Masa! The idea makes sense to me. However, I'm still getting familiar with Android and I think a reviewer from there would have better context (not sure I would be able to spot any animation issues)

    Masa Fujita

    Thanks for the review as always Emilia! They're always insightful.

    @skav...@google.com Can you take a look at this CL overall from the Android side?

    Masa Fujita

    Done

    File chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionActionListRecyclerView.java
    Line 123, Patchset 46: wrapRecyclerViewWidth();
    Sirisha Kavuluru . unresolved

    Trying to understand this better. I assume this maps to "During `RecyclerView`'s
    animation, we request layout to the `RecyclerView` every frame to make
    sure that the omnibox perfectly follows the `RecyclerView`'s animation." in the description?

    Could we draft the flow without and then with this change to understand better. IIUC, current flow without this change is:
    Extension action is added or removed from list -> recycler view item animator is kicked off and recycler view shrinks or expands. Do we see a delay in omnibox resize during this flow? Can test this on my device tomorrow.

    With this change when we call setLayoutParams on this recycler view, does it trigger an onMeasure on ToolbarTablet which then updates the width of omnibox?

    Historically, EditText#onMeasure is an expensive operation and should be avoided if possible. Just from online search, I see one approach to animation an Edittext view along with a recycler view is to register a registerAdapterDataObserver() on Recyclerview adapter's and use the onInsert / onRemove to trigger animation on sibling view. We could use TransitionManager here which might have inbuilt optimizations for EditText animations.

    Masa Fujita

    The main problem that we have here that the `RecyclerView`'s width updates instantly, and does not follow the animation of its contents. Without this CL, the omnibox jumps instantly, and then the icons would move into place. If we want the container (and the omnibox) to follow the contents' animation, we have to manually measure the contents and their transforms and request the appropriate width to the layouter.

    I thought about using separate but similar / same animations on the container too, hoping that it would be better performance-wise, but it's very difficult to completely synchronize the animation of the outer container with the contents because the `RecyclerView` animates async + we would have to completely reconstruct `RecyclerView`'s animations (which is non-linear with things like fade in -> slide etc).

    I uploaded a new patch where we determine the width on `onMeasure()` phase, which hopefully is a bit cleaner. The flow would be something like:
    ```
    We update data
    while (RecyclerView's animation is going on)
    mRequestLayoutRunnable is run
    onMeasure() measures the contents and returns the 'actual' width
    mRequestLayoutRunnable adds itself again to request layout in the next frame
    ```

    Ben's analysis ([1]) seems to suggest that the performance hit is hopefully neglegible, and I'm thinking that we could maybe turn off animations for lower end devices altogether. But another option is to give up perfect synchronization and just add another animation on the container (but it ended up looking very janky even with my best effort...)

    [1] https://chromium-review.googlesource.com/c/chromium/src/+/7521864/comments/3a5eece5_ffd2a254

    Masa Fujita

    Hey Sirisha, decided to do a 180 on the approach and use TransitionManager for animating the RecyclerView width. We try to recreate RecyclerView's DefaultItemAnimator animations.
    This does result in some minor visual discrepancies between the icon animation and omnibox animations because animations are done async, but the CPU load is much much lower because we are not requesting layout every frame and now it's a "normal" animation. The visual discrepancies are usually not too bad (and never critical from UX perspective). Hopefully it's much more maintainable too. PTAL!

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Charles Hager
    • Emilia Paz
    • Sirisha Kavuluru
    Gerrit-Attention: Emilia Paz <emil...@chromium.org>
    Gerrit-Attention: Charles Hager <clh...@google.com>
    Gerrit-Comment-Date: Wed, 18 Feb 2026 14:18:53 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: Yes
    Comment-In-Reply-To: Masa Fujita <mas...@google.com>
    Comment-In-Reply-To: Sirisha Kavuluru <skav...@google.com>
    Comment-In-Reply-To: Emilia Paz <emil...@chromium.org>
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Masa Fujita (Gerrit)

    unread,
    Feb 18, 2026, 11:39:52 AM (2 days ago) Feb 18
    to Charles Hager, Ben Chin, Renae J. Riley, Shuhei Takahashi, AyeAye, Chromium LUCI CQ, Sirisha Kavuluru, chromium...@chromium.org, mac-r...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, hanxi...@chromium.org, peilinwa...@google.com
    Attention needed from Sirisha Kavuluru

    Masa Fujita voted Commit-Queue+1

    Commit-Queue+1
    Open in Gerrit

    Related details

    Attention is currently required from:
    • Sirisha Kavuluru
    Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement 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: I5f93be41ef82be58d2815a9d32631e542f6c83de
    Gerrit-Change-Number: 7521864
    Gerrit-PatchSet: 87
    Gerrit-Owner: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Emilia Paz <emil...@chromium.org>
    Gerrit-Reviewer: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Sirisha Kavuluru <skav...@google.com>
    Gerrit-CC: Ben Chin <lu...@chromium.org>
    Gerrit-CC: Charles Hager <clh...@google.com>
    Gerrit-CC: Renae J. Riley <ray.ja...@gmail.com>
    Gerrit-CC: Shuhei Takahashi <n...@chromium.org>
    Gerrit-Attention: Sirisha Kavuluru <skav...@google.com>
    Gerrit-Comment-Date: Wed, 18 Feb 2026 16:39:27 +0000
    Gerrit-HasComments: No
    Gerrit-Has-Labels: Yes
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Masa Fujita (Gerrit)

    unread,
    Feb 18, 2026, 11:49:24 AM (2 days ago) Feb 18
    to Charles Hager, Ben Chin, Renae J. Riley, Shuhei Takahashi, AyeAye, Chromium LUCI CQ, Sirisha Kavuluru, chromium...@chromium.org, mac-r...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, hanxi...@chromium.org, peilinwa...@google.com
    Attention needed from Sirisha Kavuluru

    Masa Fujita voted Commit-Queue+1

    Commit-Queue+1
    Open in Gerrit

    Related details

    Attention is currently required from:
    • Sirisha Kavuluru
    Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement 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: I5f93be41ef82be58d2815a9d32631e542f6c83de
    Gerrit-Change-Number: 7521864
    Gerrit-PatchSet: 88
    Gerrit-Owner: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Emilia Paz <emil...@chromium.org>
    Gerrit-Reviewer: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Sirisha Kavuluru <skav...@google.com>
    Gerrit-CC: Ben Chin <lu...@chromium.org>
    Gerrit-CC: Charles Hager <clh...@google.com>
    Gerrit-CC: Renae J. Riley <ray.ja...@gmail.com>
    Gerrit-CC: Shuhei Takahashi <n...@chromium.org>
    Gerrit-Attention: Sirisha Kavuluru <skav...@google.com>
    Gerrit-Comment-Date: Wed, 18 Feb 2026 16:49:00 +0000
    Gerrit-HasComments: No
    Gerrit-Has-Labels: Yes
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Sirisha Kavuluru (Gerrit)

    unread,
    Feb 19, 2026, 5:21:24 PM (8 hours ago) Feb 19
    to Masa Fujita, Charles Hager, Ben Chin, Renae J. Riley, Shuhei Takahashi, AyeAye, Chromium LUCI CQ, chromium...@chromium.org, mac-r...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, hanxi...@chromium.org, peilinwa...@google.com
    Attention needed from Masa Fujita

    Sirisha Kavuluru added 7 comments

    File chrome/browser/ui/android/extensions/java/res/layout/extension_toolbar_container.xml
    Line 19, Patchset 88 (Latest): android:layout_width="2dp"
    Sirisha Kavuluru . unresolved

    Why can't we leave this as wrap_content? iiuc the 2dp here is for the 2 anchors?

    File chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionActionListRecyclerView.java
    Line 68, Patchset 88 (Latest): // We put enough padding to make sure the View instances at the edge do not
    // disappear.
    int windowWidth = context.getResources().getDisplayMetrics().widthPixels;
    extraLayoutSpace[0] = windowWidth;
    extraLayoutSpace[1] = windowWidth;
    Sirisha Kavuluru . unresolved

    iiuc this method allows you to add start and end padding to the RecyclerView list. Why do we set these to the full window width? Do we need the anchor items if we can add space here?

    Line 92, Patchset 88 (Latest): @Override
    protected void onAttachedToWindow() {
    super.onAttachedToWindow();
    if (mLayoutChangeListener != null) {
    removeOnLayoutChangeListener(mLayoutChangeListener);
    addOnLayoutChangeListener(mLayoutChangeListener);
    }
    }

    @Override
    protected void onDetachedFromWindow() {
    super.onDetachedFromWindow();
    if (mLayoutChangeListener != null) {
    removeOnLayoutChangeListener(mLayoutChangeListener);
    }
    }
    Sirisha Kavuluru . unresolved

    For my own understanding, when are these methods called?

    Line 113, Patchset 88 (Latest): ViewUtils.requestLayout(
    ExtensionActionListRecyclerView.this,
    "ExtensionActionListRecyclerView.updateRecyclerViewWidth");
    Sirisha Kavuluru . unresolved

    optional nit: I think this might not be required? Or we could do recyclerView#setLayoutParams which iirc internally requests layout

    Line 123, Patchset 46: wrapRecyclerViewWidth();
    Sirisha Kavuluru . resolved

    Trying to understand this better. I assume this maps to "During `RecyclerView`'s
    animation, we request layout to the `RecyclerView` every frame to make
    sure that the omnibox perfectly follows the `RecyclerView`'s animation." in the description?

    Could we draft the flow without and then with this change to understand better. IIUC, current flow without this change is:
    Extension action is added or removed from list -> recycler view item animator is kicked off and recycler view shrinks or expands. Do we see a delay in omnibox resize during this flow? Can test this on my device tomorrow.

    With this change when we call setLayoutParams on this recycler view, does it trigger an onMeasure on ToolbarTablet which then updates the width of omnibox?

    Historically, EditText#onMeasure is an expensive operation and should be avoided if possible. Just from online search, I see one approach to animation an Edittext view along with a recycler view is to register a registerAdapterDataObserver() on Recyclerview adapter's and use the onInsert / onRemove to trigger animation on sibling view. We could use TransitionManager here which might have inbuilt optimizations for EditText animations.

    Masa Fujita

    The main problem that we have here that the `RecyclerView`'s width updates instantly, and does not follow the animation of its contents. Without this CL, the omnibox jumps instantly, and then the icons would move into place. If we want the container (and the omnibox) to follow the contents' animation, we have to manually measure the contents and their transforms and request the appropriate width to the layouter.

    I thought about using separate but similar / same animations on the container too, hoping that it would be better performance-wise, but it's very difficult to completely synchronize the animation of the outer container with the contents because the `RecyclerView` animates async + we would have to completely reconstruct `RecyclerView`'s animations (which is non-linear with things like fade in -> slide etc).

    I uploaded a new patch where we determine the width on `onMeasure()` phase, which hopefully is a bit cleaner. The flow would be something like:
    ```
    We update data
    while (RecyclerView's animation is going on)
    mRequestLayoutRunnable is run
    onMeasure() measures the contents and returns the 'actual' width
    mRequestLayoutRunnable adds itself again to request layout in the next frame
    ```

    Ben's analysis ([1]) seems to suggest that the performance hit is hopefully neglegible, and I'm thinking that we could maybe turn off animations for lower end devices altogether. But another option is to give up perfect synchronization and just add another animation on the container (but it ended up looking very janky even with my best effort...)

    [1] https://chromium-review.googlesource.com/c/chromium/src/+/7521864/comments/3a5eece5_ffd2a254

    Masa Fujita

    Hey Sirisha, decided to do a 180 on the approach and use TransitionManager for animating the RecyclerView width. We try to recreate RecyclerView's DefaultItemAnimator animations.
    This does result in some minor visual discrepancies between the icon animation and omnibox animations because animations are done async, but the CPU load is much much lower because we are not requesting layout every frame and now it's a "normal" animation. The visual discrepancies are usually not too bad (and never critical from UX perspective). Hopefully it's much more maintainable too. PTAL!

    Sirisha Kavuluru

    Acknowledged - Thanks for revisiting and simplifying this 😊

    Line 165, Patchset 88 (Latest): if (holder.getItemViewType() == ListItemType.ANCHOR) {
    mHasPendingAnchorMove = true;
    }
    Sirisha Kavuluru . unresolved

    This method would be called for anchor view for every pin / unpin action, right? When might mHasPendingAnchorMove be false during runPendingAnimations??

    Line 177, Patchset 88 (Latest): ViewGroup layoutRoot = getRootView().findViewById(R.id.toolbar_tablet_layout);
    Sirisha Kavuluru . unresolved

    Could we pass this as parentView or rootView from toolbar to ExtensionCoordinator to this class? This will change if we add the extension list to other toolbar like CCT

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Masa Fujita
    Gerrit-Attention: Masa Fujita <mas...@google.com>
    Gerrit-Comment-Date: Thu, 19 Feb 2026 22:21:17 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Masa Fujita (Gerrit)

    unread,
    Feb 19, 2026, 10:33:45 PM (3 hours ago) Feb 19
    to Charles Hager, Ben Chin, Renae J. Riley, Shuhei Takahashi, AyeAye, Chromium LUCI CQ, Sirisha Kavuluru, chromium...@chromium.org, mac-r...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, hanxi...@chromium.org, peilinwa...@google.com
    Attention needed from Sirisha Kavuluru

    Masa Fujita voted and added 6 comments

    Votes added by Masa Fujita

    Commit-Queue+1

    6 comments

    File chrome/browser/ui/android/extensions/java/res/layout/extension_toolbar_container.xml
    Line 19, Patchset 88: android:layout_width="2dp"
    Sirisha Kavuluru . resolved

    Why can't we leave this as wrap_content? iiuc the 2dp here is for the 2 anchors?

    Masa Fujita

    I think with our new approach wrap_content works.

    File chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionActionListCoordinator.java
    Line 67, Patchset 46: actionModels,
    Sirisha Kavuluru . resolved

    Curious - why do we not want to pass mModelsWithAnchors to mediator?

    Masa Fujita

    We decided that we should consolidate the anchors logic and let mediator deal with the actual items instead of the one with anchors (the `reconcileActionItems()` got pretty complicated, hence `ExtensionActionListAnchoredModelList`)

    Masa Fujita

    Done

    File chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionActionListRecyclerView.java
    Line 68, Patchset 88: // We put enough padding to make sure the View instances at the edge do not

    // disappear.
    int windowWidth = context.getResources().getDisplayMetrics().widthPixels;
    extraLayoutSpace[0] = windowWidth;
    extraLayoutSpace[1] = windowWidth;
    Sirisha Kavuluru . resolved

    iiuc this method allows you to add start and end padding to the RecyclerView list. Why do we set these to the full window width? Do we need the anchor items if we can add space here?

    Masa Fujita

    We just need *some* width padding. Let's just use a static variable.


    protected void onAttachedToWindow() {
    super.onAttachedToWindow();
    if (mLayoutChangeListener != null) {
    removeOnLayoutChangeListener(mLayoutChangeListener);
    addOnLayoutChangeListener(mLayoutChangeListener);
    }
    }

    @Override
    protected void onDetachedFromWindow() {
    super.onDetachedFromWindow();
    if (mLayoutChangeListener != null) {
    removeOnLayoutChangeListener(mLayoutChangeListener);
    }
    }
    Sirisha Kavuluru . resolved

    For my own understanding, when are these methods called?

    Masa Fujita

    onDetached is called during destruction. onAttached was probably not necessary and we can just do it in the constructor, as we `post()` anyways.

    Line 113, Patchset 88: ViewUtils.requestLayout(
    ExtensionActionListRecyclerView.this,
    "ExtensionActionListRecyclerView.updateRecyclerViewWidth");
    Sirisha Kavuluru . resolved

    optional nit: I think this might not be required? Or we could do recyclerView#setLayoutParams which iirc internally requests layout

    Masa Fujita

    Let's do `setLayoutParams()`.

    Line 165, Patchset 88: if (holder.getItemViewType() == ListItemType.ANCHOR) {
    mHasPendingAnchorMove = true;
    }
    Sirisha Kavuluru . resolved

    This method would be called for anchor view for every pin / unpin action, right? When might mHasPendingAnchorMove be false during runPendingAnimations??

    Masa Fujita

    (I removed the anchors - with our new approach anchors are not necessary)

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Sirisha Kavuluru
    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: I5f93be41ef82be58d2815a9d32631e542f6c83de
    Gerrit-Change-Number: 7521864
    Gerrit-PatchSet: 91
    Gerrit-Owner: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Emilia Paz <emil...@chromium.org>
    Gerrit-Reviewer: Masa Fujita <mas...@google.com>
    Gerrit-Reviewer: Sirisha Kavuluru <skav...@google.com>
    Gerrit-CC: Ben Chin <lu...@chromium.org>
    Gerrit-CC: Charles Hager <clh...@google.com>
    Gerrit-CC: Renae J. Riley <ray.ja...@gmail.com>
    Gerrit-CC: Shuhei Takahashi <n...@chromium.org>
    Gerrit-Attention: Sirisha Kavuluru <skav...@google.com>
    Gerrit-Comment-Date: Fri, 20 Feb 2026 03:33:23 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: Yes
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy
    Reply all
    Reply to author
    Forward
    0 new messages