[Vertical Tabs] Make the top left window drag space draggable [chromium/src : main]

0 views
Skip to first unread message

Eleanor Lee (Gerrit)

unread,
Jul 9, 2026, 4:16:32 AMJul 9
to Aishwarya Rajesh, Gazal Agarwal, Jinsuk Kim, Chromium LUCI CQ, chromium...@chromium.org, hanxi...@chromium.org, peilinwa...@google.com
Attention needed from Aishwarya Rajesh and Gazal Agarwal

Eleanor Lee added 1 comment

Patchset-level comments
File-level comment, Patchset 2 (Latest):
Eleanor Lee . unresolved

This currently makes the entire `desktop_window_spacer` (https://screenshot.googleplex.com/4KLjQ3am9jToJCx) area draggable.

Looking at the slides (https://docs.google.com/presentation/d/19va4-VY0g9XQoN7DGutaI-mAwGUGOKURQsm2_-kAfqo/edit?slide=id.g3db50669601_4_211#slide=id.g3db50669601_4_211), do we want to make changes so that the left most part of the spacer (where the Chrome logo is) is specifically not draggable?

Open in Gerrit

Related details

Attention is currently required from:
  • Aishwarya Rajesh
  • Gazal Agarwal
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: I250472b1d7519822b1cab3463499ff3c96b921bc
Gerrit-Change-Number: 8068351
Gerrit-PatchSet: 2
Gerrit-Owner: Eleanor Lee <elean...@google.com>
Gerrit-Reviewer: Aishwarya Rajesh <aishw...@google.com>
Gerrit-Reviewer: Eleanor Lee <elean...@google.com>
Gerrit-Reviewer: Gazal Agarwal <aga...@google.com>
Gerrit-CC: Jinsuk Kim <jins...@chromium.org>
Gerrit-Attention: Aishwarya Rajesh <aishw...@google.com>
Gerrit-Attention: Gazal Agarwal <aga...@google.com>
Gerrit-Comment-Date: Thu, 09 Jul 2026 08:16:14 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
satisfied_requirement
unsatisfied_requirement
open
diffy

Gazal Agarwal (Gerrit)

unread,
Jul 9, 2026, 3:20:47 PMJul 9
to Eleanor Lee, Aishwarya Rajesh, Jinsuk Kim, Chromium LUCI CQ, chromium...@chromium.org, hanxi...@chromium.org, peilinwa...@google.com
Attention needed from Aishwarya Rajesh and Eleanor Lee

Gazal Agarwal added 1 comment

Patchset-level comments
Eleanor Lee . unresolved

This currently makes the entire `desktop_window_spacer` (https://screenshot.googleplex.com/4KLjQ3am9jToJCx) area draggable.

Looking at the slides (https://docs.google.com/presentation/d/19va4-VY0g9XQoN7DGutaI-mAwGUGOKURQsm2_-kAfqo/edit?slide=id.g3db50669601_4_211#slide=id.g3db50669601_4_211), do we want to make changes so that the left most part of the spacer (where the Chrome logo is) is specifically not draggable?

Gazal Agarwal

That'r right. The Chrome logo shouldn't be draggable.

Open in Gerrit

Related details

Attention is currently required from:
  • Aishwarya Rajesh
  • Eleanor Lee
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: I250472b1d7519822b1cab3463499ff3c96b921bc
Gerrit-Change-Number: 8068351
Gerrit-PatchSet: 2
Gerrit-Owner: Eleanor Lee <elean...@google.com>
Gerrit-Reviewer: Aishwarya Rajesh <aishw...@google.com>
Gerrit-Reviewer: Eleanor Lee <elean...@google.com>
Gerrit-Reviewer: Gazal Agarwal <aga...@google.com>
Gerrit-CC: Jinsuk Kim <jins...@chromium.org>
Gerrit-Attention: Eleanor Lee <elean...@google.com>
Gerrit-Attention: Aishwarya Rajesh <aishw...@google.com>
Gerrit-Comment-Date: Thu, 09 Jul 2026 19:20:34 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Comment-In-Reply-To: Eleanor Lee <elean...@google.com>
satisfied_requirement
unsatisfied_requirement
open
diffy

Aishwarya Rajesh (Gerrit)

unread,
Jul 10, 2026, 2:07:40 PMJul 10
to Eleanor Lee, Gazal Agarwal, Jinsuk Kim, Chromium LUCI CQ, chromium...@chromium.org, hanxi...@chromium.org, peilinwa...@google.com
Attention needed from Eleanor Lee

Aishwarya Rajesh added 4 comments

Patchset-level comments
Aishwarya Rajesh . resolved

Sorry for the delay! I have a general comment on the current code changes. Also, can we fix the compile error and run the CQ once we upload a new PS?

Eleanor Lee . unresolved

This currently makes the entire `desktop_window_spacer` (https://screenshot.googleplex.com/4KLjQ3am9jToJCx) area draggable.

Looking at the slides (https://docs.google.com/presentation/d/19va4-VY0g9XQoN7DGutaI-mAwGUGOKURQsm2_-kAfqo/edit?slide=id.g3db50669601_4_211#slide=id.g3db50669601_4_211), do we want to make changes so that the left most part of the spacer (where the Chrome logo is) is specifically not draggable?

Gazal Agarwal

That'r right. The Chrome logo shouldn't be draggable.

Aishwarya Rajesh

FWIW, we do allow dragging on longpress on the app header app chip icon in a freeform window currently (while rendering horizontal tabs), I don't see why this needs to be different when VT is enabled - did we get specific UX direction to do so?

File chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarControlContainer.java
Line 99, Patchset 2 (Latest): private static final int DEFAULT_DESKTOP_WINDOW_SPACER_WIDTH_PX = 266;
Aishwarya Rajesh . unresolved

It doesn't look right to hardcode this constant - can't we fetch this from a dimens resource or something?

Line 1356, Patchset 2 (Latest): int spacerId =
context.getResources()
.getIdentifier(
"desktop_window_spacer",
"id",
context.getPackageName());
// Grab the top of the entire window hierarchy and search downward to locate the
// instantiated spacer view object.
View rootView = getRootView();
if (rootView != null && spacerId != 0) {
View spacerView = rootView.findViewById(spacerId);
if (spacerView != null && spacerView.getVisibility() == View.VISIBLE) {
// Capture the spacer view's coordinates relative to the window frame.
int[] location = new int[2];
spacerView.getLocationInWindow(location);
// Left starting point of the vertical rail/spacer.
int spacerX = location[0];
int spacerViewWidth = spacerView.getWidth();
// Ensure that the spacer view has gone through a measure & layout pass.
if (spacerViewWidth > 0) {
targetLeftEdge = spacerX + spacerViewWidth;
}
}
}
Aishwarya Rajesh . unresolved

General remark: I think we should have some dependency injection for these values from a VT class; for example, could we define an Integer supplier that ToolbarControlContainer has access to, to get the width of the spacer view? Some VT class can set the value of this supplier appropriately. I don't think ToolbarControlContainer needs to know the specifics of the desktop_window_spacer view.

Open in Gerrit

Related details

Attention is currently required from:
  • Eleanor Lee
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: I250472b1d7519822b1cab3463499ff3c96b921bc
Gerrit-Change-Number: 8068351
Gerrit-PatchSet: 2
Gerrit-Owner: Eleanor Lee <elean...@google.com>
Gerrit-Reviewer: Aishwarya Rajesh <aishw...@google.com>
Gerrit-Reviewer: Eleanor Lee <elean...@google.com>
Gerrit-Reviewer: Gazal Agarwal <aga...@google.com>
Gerrit-CC: Jinsuk Kim <jins...@chromium.org>
Gerrit-Attention: Eleanor Lee <elean...@google.com>
Gerrit-Comment-Date: Fri, 10 Jul 2026 18:07:19 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Comment-In-Reply-To: Eleanor Lee <elean...@google.com>
Comment-In-Reply-To: Gazal Agarwal <aga...@google.com>
satisfied_requirement
unsatisfied_requirement
open
diffy

Eleanor Lee (Gerrit)

unread,
Jul 12, 2026, 4:00:17 AM (13 days ago) Jul 12
to android-bu...@system.gserviceaccount.com, Gazal Agarwal, Aishwarya Rajesh, Jinsuk Kim, Chromium LUCI CQ, chromium...@chromium.org, davidj...@chromium.org, gogeral...@chromium.org, mattsimm...@chromium.org, meilian...@chromium.org, wychen...@chromium.org, yuezhang...@chromium.org, yusufo...@chromium.org, hanxi...@chromium.org, peilinwa...@google.com
Attention needed from Aishwarya Rajesh and Gazal Agarwal

Eleanor Lee added 4 comments

Patchset-level comments
File-level comment, Patchset 2:
Eleanor Lee . unresolved

Will add unit tests after this round of reviews.

File-level comment, Patchset 2:
Eleanor Lee . resolved

This currently makes the entire `desktop_window_spacer` (https://screenshot.googleplex.com/4KLjQ3am9jToJCx) area draggable.

Looking at the slides (https://docs.google.com/presentation/d/19va4-VY0g9XQoN7DGutaI-mAwGUGOKURQsm2_-kAfqo/edit?slide=id.g3db50669601_4_211#slide=id.g3db50669601_4_211), do we want to make changes so that the left most part of the spacer (where the Chrome logo is) is specifically not draggable?

Gazal Agarwal

That'r right. The Chrome logo shouldn't be draggable.

Aishwarya Rajesh

FWIW, we do allow dragging on longpress on the app header app chip icon in a freeform window currently (while rendering horizontal tabs), I don't see why this needs to be different when VT is enabled - did we get specific UX direction to do so?

Eleanor Lee

Messaged Julia to confirm, will upload a follow-up CL if needed! Not sure if this is related, but I did notice that in the original code, the entire area to the right of the 3 dot menu also is draggable (the minimize icon, full window icon, exit icon are all draggable).

File chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarControlContainer.java
Line 99, Patchset 2: private static final int DEFAULT_DESKTOP_WINDOW_SPACER_WIDTH_PX = 266;
Aishwarya Rajesh . resolved

It doesn't look right to hardcode this constant - can't we fetch this from a dimens resource or something?

Eleanor Lee

Done

Line 1356, Patchset 2: int spacerId =

context.getResources()
.getIdentifier(
"desktop_window_spacer",
"id",
context.getPackageName());
// Grab the top of the entire window hierarchy and search downward to locate the
// instantiated spacer view object.
View rootView = getRootView();
if (rootView != null && spacerId != 0) {
View spacerView = rootView.findViewById(spacerId);
if (spacerView != null && spacerView.getVisibility() == View.VISIBLE) {
// Capture the spacer view's coordinates relative to the window frame.
int[] location = new int[2];
spacerView.getLocationInWindow(location);
// Left starting point of the vertical rail/spacer.
int spacerX = location[0];
int spacerViewWidth = spacerView.getWidth();
// Ensure that the spacer view has gone through a measure & layout pass.
if (spacerViewWidth > 0) {
targetLeftEdge = spacerX + spacerViewWidth;
}
}
}
Aishwarya Rajesh . resolved

General remark: I think we should have some dependency injection for these values from a VT class; for example, could we define an Integer supplier that ToolbarControlContainer has access to, to get the width of the spacer view? Some VT class can set the value of this supplier appropriately. I don't think ToolbarControlContainer needs to know the specifics of the desktop_window_spacer view.

Eleanor Lee

Done

Open in Gerrit

Related details

Attention is currently required from:
  • Aishwarya Rajesh
  • Gazal Agarwal
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: I250472b1d7519822b1cab3463499ff3c96b921bc
Gerrit-Change-Number: 8068351
Gerrit-PatchSet: 3
Gerrit-Owner: Eleanor Lee <elean...@google.com>
Gerrit-Reviewer: Aishwarya Rajesh <aishw...@google.com>
Gerrit-Reviewer: Eleanor Lee <elean...@google.com>
Gerrit-Attention: Aishwarya Rajesh <aishw...@google.com>
Gerrit-Attention: Gazal Agarwal <aga...@google.com>
Gerrit-Comment-Date: Sun, 12 Jul 2026 08:00:01 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Comment-In-Reply-To: Eleanor Lee <elean...@google.com>
Comment-In-Reply-To: Aishwarya Rajesh <aishw...@google.com>
Comment-In-Reply-To: Gazal Agarwal <aga...@google.com>
satisfied_requirement
unsatisfied_requirement
open
diffy

Aishwarya Rajesh (Gerrit)

unread,
Jul 14, 2026, 2:01:32 PM (10 days ago) Jul 14
to Eleanor Lee, android-bu...@system.gserviceaccount.com, Gazal Agarwal, Jinsuk Kim, Chromium LUCI CQ, chromium...@chromium.org, davidj...@chromium.org, gogeral...@chromium.org, mattsimm...@chromium.org, meilian...@chromium.org, wychen...@chromium.org, yuezhang...@chromium.org, yusufo...@chromium.org, hanxi...@chromium.org, peilinwa...@google.com
Attention needed from Eleanor Lee and Gazal Agarwal

Aishwarya Rajesh added 3 comments

File chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/vertical_tabs/VerticalTabListCoordinator.java
Line 575, Patchset 3 (Latest): View controlContainerView =
activity.findViewById(org.chromium.chrome.R.id.control_container);
if (controlContainerView instanceof ToolbarControlContainer controlContainer) {
controlContainer.setDesktopWindowSpacerWidthSupplier(
Aishwarya Rajesh . unresolved

Instead of doing this, could we pass in a settable Integer supplier (defined as a member in `TabbedRootUiCoordinator`) to the ctor of `VerticalTabListCoordinator` and convey this to the `ToolbarControlContainer` as we do for the boolean supplier here: https://source.chromium.org/chromium/chromium/src/+/main:chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java;l=1022;drc=3fa1318505ea6d8885ef471d9cc0281f9468ff8d

Line 584, Patchset 3 (Latest): int width = mSpacerView.getWidth();
if (width == 0) {
return activity.getResources()
.getDimensionPixelSize(
R.dimen.vertical_tabs_desktop_spacer_width);
}

// Get the position of both views relative to the window surface.
int[] spacerLocation = new int[2];
int[] toolbarLocation = new int[2];
mSpacerView.getLocationInWindow(spacerLocation);
controlContainer.getLocationInWindow(toolbarLocation);

// Calculate exactly where the spacer ends relative to the window.
return spacerLocation[0] + width - toolbarLocation[0];
Aishwarya Rajesh . unresolved

I'm wondering if instead of having the supplier provide a "desktop spacer width", we can simply have this supplier provide the vertical tabs container width (ie. VIEW_WIDTH_DP IIUC). And then `ToolbarControlContainer` can use this as the left bound of the system gesture exclusion rect as is - this is assuming that the entire width of the VT container (including the app chip icon region on the left side of the app header) is to be delegated to the system for gesture handling. Would this work?

File chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarControlContainer.java
Line 1358, Patchset 3 (Latest): int spacerWidth = mDesktopWindowSpacerWidthSupplier.get();
Aishwarya Rajesh . unresolved

`spacerWidth` is very ambiguous within the current class' context.

Like I suggested in my other comment, I think we can have this supplier provide the vertical tabs container width, which will be 0 when VT is disabled. Here we can do:

```
int left = mVerticalTabsContainerWidthSupplier.get();
...
Rect exclusionRect = new Rect(left, top, right, bottom);
```

Will this work as needed?

Open in Gerrit

Related details

Attention is currently required from:
  • Eleanor Lee
  • Gazal Agarwal
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: I250472b1d7519822b1cab3463499ff3c96b921bc
Gerrit-Change-Number: 8068351
Gerrit-PatchSet: 3
Gerrit-Owner: Eleanor Lee <elean...@google.com>
Gerrit-Reviewer: Aishwarya Rajesh <aishw...@google.com>
Gerrit-Reviewer: Eleanor Lee <elean...@google.com>
Gerrit-CC: Gazal Agarwal <aga...@google.com>
Gerrit-CC: Jinsuk Kim <jins...@chromium.org>
Gerrit-Attention: Eleanor Lee <elean...@google.com>
Gerrit-Attention: Gazal Agarwal <aga...@google.com>
Gerrit-Comment-Date: Tue, 14 Jul 2026 18:01:18 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
satisfied_requirement
unsatisfied_requirement
open
diffy

Eleanor Lee (Gerrit)

unread,
Jul 23, 2026, 4:30:42 AM (yesterday) Jul 23
to android-bu...@system.gserviceaccount.com, Gazal Agarwal, Aishwarya Rajesh, Jinsuk Kim, Chromium LUCI CQ, chromium...@chromium.org, davidj...@chromium.org, gogeral...@chromium.org, mattsimm...@chromium.org, meilian...@chromium.org, wychen...@chromium.org, yuezhang...@chromium.org, yusufo...@chromium.org, hanxi...@chromium.org, peilinwa...@google.com
Attention needed from Aishwarya Rajesh and Gazal Agarwal

Eleanor Lee added 3 comments

File chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/vertical_tabs/VerticalTabListCoordinator.java
Line 575, Patchset 3: View controlContainerView =

activity.findViewById(org.chromium.chrome.R.id.control_container);
if (controlContainerView instanceof ToolbarControlContainer controlContainer) {
controlContainer.setDesktopWindowSpacerWidthSupplier(
Aishwarya Rajesh . resolved

Instead of doing this, could we pass in a settable Integer supplier (defined as a member in `TabbedRootUiCoordinator`) to the ctor of `VerticalTabListCoordinator` and convey this to the `ToolbarControlContainer` as we do for the boolean supplier here: https://source.chromium.org/chromium/chromium/src/+/main:chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java;l=1022;drc=3fa1318505ea6d8885ef471d9cc0281f9468ff8d

Eleanor Lee

Done

Line 584, Patchset 3: int width = mSpacerView.getWidth();

if (width == 0) {
return activity.getResources()
.getDimensionPixelSize(
R.dimen.vertical_tabs_desktop_spacer_width);
}

// Get the position of both views relative to the window surface.
int[] spacerLocation = new int[2];
int[] toolbarLocation = new int[2];
mSpacerView.getLocationInWindow(spacerLocation);
controlContainer.getLocationInWindow(toolbarLocation);

// Calculate exactly where the spacer ends relative to the window.
return spacerLocation[0] + width - toolbarLocation[0];
Aishwarya Rajesh . resolved

I'm wondering if instead of having the supplier provide a "desktop spacer width", we can simply have this supplier provide the vertical tabs container width (ie. VIEW_WIDTH_DP IIUC). And then `ToolbarControlContainer` can use this as the left bound of the system gesture exclusion rect as is - this is assuming that the entire width of the VT container (including the app chip icon region on the left side of the app header) is to be delegated to the system for gesture handling. Would this work?

Eleanor Lee

Done

File chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarControlContainer.java
Line 1358, Patchset 3: int spacerWidth = mDesktopWindowSpacerWidthSupplier.get();
Aishwarya Rajesh . resolved

`spacerWidth` is very ambiguous within the current class' context.

Like I suggested in my other comment, I think we can have this supplier provide the vertical tabs container width, which will be 0 when VT is disabled. Here we can do:

```
int left = mVerticalTabsContainerWidthSupplier.get();
...
Rect exclusionRect = new Rect(left, top, right, bottom);
```

Will this work as needed?

Eleanor Lee

Done

Open in Gerrit

Related details

Attention is currently required from:
  • Aishwarya Rajesh
  • Gazal Agarwal
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: I250472b1d7519822b1cab3463499ff3c96b921bc
Gerrit-Change-Number: 8068351
Gerrit-PatchSet: 7
Gerrit-Owner: Eleanor Lee <elean...@google.com>
Gerrit-Reviewer: Aishwarya Rajesh <aishw...@google.com>
Gerrit-Reviewer: Eleanor Lee <elean...@google.com>
Gerrit-CC: Gazal Agarwal <aga...@google.com>
Gerrit-CC: Jinsuk Kim <jins...@chromium.org>
Gerrit-Attention: Aishwarya Rajesh <aishw...@google.com>
Gerrit-Attention: Gazal Agarwal <aga...@google.com>
Gerrit-Comment-Date: Thu, 23 Jul 2026 08:30:29 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Comment-In-Reply-To: Aishwarya Rajesh <aishw...@google.com>
satisfied_requirement
unsatisfied_requirement
open
diffy

Aishwarya Rajesh (Gerrit)

unread,
Jul 23, 2026, 2:35:09 PM (yesterday) Jul 23
to Eleanor Lee, android-bu...@system.gserviceaccount.com, Gazal Agarwal, Jinsuk Kim, Chromium LUCI CQ, chromium...@chromium.org, davidj...@chromium.org, gogeral...@chromium.org, mattsimm...@chromium.org, meilian...@chromium.org, wychen...@chromium.org, yuezhang...@chromium.org, yusufo...@chromium.org, hanxi...@chromium.org, peilinwa...@google.com
Attention needed from Eleanor Lee and Gazal Agarwal

Aishwarya Rajesh added 3 comments

Patchset-level comments
File-level comment, Patchset 7 (Latest):
Aishwarya Rajesh . resolved

These changes generally LGTM, have a couple of comments. I think we can work on adding test coverage at this time.

File chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java
Line 977, Patchset 7 (Latest): ToolbarControlContainer controlContainer = mActivity.findViewById(R.id.control_container);
Aishwarya Rajesh . unresolved

Maybe it's okay to maintain a nullable internal state `mControlContainer` and use that here instead? We can set this in `initializeToolbar`. I see that a test is complaining of a null `mActivity`, maybe we could alternatively add a null-check on the activity instance before trying to resolve the control container.

File chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarControlContainer.java
Line 124, Patchset 7 (Latest): private @Nullable NonNullObservableSupplier<Integer> mVerticalTabsContainerWidthSupplier;
Aishwarya Rajesh . unresolved

Why is this nullable, can't we just use a non-null supplier with a default value of 0?

Open in Gerrit

Related details

Attention is currently required from:
  • Eleanor Lee
  • Gazal Agarwal
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: I250472b1d7519822b1cab3463499ff3c96b921bc
Gerrit-Change-Number: 8068351
Gerrit-PatchSet: 7
Gerrit-Owner: Eleanor Lee <elean...@google.com>
Gerrit-Reviewer: Aishwarya Rajesh <aishw...@google.com>
Gerrit-Reviewer: Eleanor Lee <elean...@google.com>
Gerrit-CC: Gazal Agarwal <aga...@google.com>
Gerrit-CC: Jinsuk Kim <jins...@chromium.org>
Gerrit-Attention: Eleanor Lee <elean...@google.com>
Gerrit-Attention: Gazal Agarwal <aga...@google.com>
Gerrit-Comment-Date: Thu, 23 Jul 2026 18:34:57 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
satisfied_requirement
unsatisfied_requirement
open
diffy

Eleanor Lee (Gerrit)

unread,
5:12 AM (13 hours ago) 5:12 AM
to Gazal Agarwal, android-bu...@system.gserviceaccount.com, Aishwarya Rajesh, Jinsuk Kim, Chromium LUCI CQ, chromium...@chromium.org, davidj...@chromium.org, gogeral...@chromium.org, mattsimm...@chromium.org, meilian...@chromium.org, wychen...@chromium.org, yuezhang...@chromium.org, yusufo...@chromium.org, hanxi...@chromium.org, peilinwa...@google.com
Attention needed from Aishwarya Rajesh and Gazal Agarwal

Eleanor Lee added 3 comments

Patchset-level comments
Eleanor Lee . resolved

Will add unit tests after this round of reviews.

Eleanor Lee

Done

File chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java
Line 977, Patchset 7: ToolbarControlContainer controlContainer = mActivity.findViewById(R.id.control_container);
Aishwarya Rajesh . resolved

Maybe it's okay to maintain a nullable internal state `mControlContainer` and use that here instead? We can set this in `initializeToolbar`. I see that a test is complaining of a null `mActivity`, maybe we could alternatively add a null-check on the activity instance before trying to resolve the control container.

Eleanor Lee

Done

File chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarControlContainer.java
Line 124, Patchset 7: private @Nullable NonNullObservableSupplier<Integer> mVerticalTabsContainerWidthSupplier;
Aishwarya Rajesh . resolved

Why is this nullable, can't we just use a non-null supplier with a default value of 0?

Eleanor Lee

Done

Open in Gerrit

Related details

Attention is currently required from:
  • Aishwarya Rajesh
  • Gazal Agarwal
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: I250472b1d7519822b1cab3463499ff3c96b921bc
    Gerrit-Change-Number: 8068351
    Gerrit-PatchSet: 9
    Gerrit-Owner: Eleanor Lee <elean...@google.com>
    Gerrit-Reviewer: Aishwarya Rajesh <aishw...@google.com>
    Gerrit-Reviewer: Eleanor Lee <elean...@google.com>
    Gerrit-Reviewer: Gazal Agarwal <aga...@google.com>
    Gerrit-Attention: Aishwarya Rajesh <aishw...@google.com>
    Gerrit-Attention: Gazal Agarwal <aga...@google.com>
    Gerrit-Comment-Date: Fri, 24 Jul 2026 09:11:59 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Aishwarya Rajesh (Gerrit)

    unread,
    10:47 AM (7 hours ago) 10:47 AM
    to Eleanor Lee, Gazal Agarwal, android-bu...@system.gserviceaccount.com, Jinsuk Kim, Chromium LUCI CQ, chromium...@chromium.org, davidj...@chromium.org, gogeral...@chromium.org, mattsimm...@chromium.org, meilian...@chromium.org, wychen...@chromium.org, yuezhang...@chromium.org, yusufo...@chromium.org, hanxi...@chromium.org, peilinwa...@google.com
    Attention needed from Eleanor Lee and Gazal Agarwal

    Aishwarya Rajesh voted and added 5 comments

    Votes added by Aishwarya Rajesh

    Code-Review+1

    5 comments

    Patchset-level comments
    File-level comment, Patchset 9 (Latest):
    Aishwarya Rajesh . resolved

    LGTM

    File chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/vertical_tabs/VerticalTabListCoordinator.java
    Line 374, Patchset 9 (Latest): mContainerView.addOnLayoutChangeListener(
    Aishwarya Rajesh . unresolved

    Recommended by AI:

    The `OnLayoutChangeListener` added here is never removed. To avoid memory leaks or unexpected updates to the supplier after the coordinator is destroyed, please store this listener as a member variable and remove it in the `destroy()` method using `mContainerView.removeOnLayoutChangeListener()`.

    Line 379, Patchset 9 (Latest): // Notifies mVerticalTabsWidthObserver in ToolbarControlContainer, triggering
    // #updateSystemGestureExclusions and #setSystemGestureExclusionRects.
    Aishwarya Rajesh . unresolved

    nit: we should probably remove this specific detail, it's easy to miss removing such comments if the usage of this supplier is ever updated

    File chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarControlContainer.java
    Line 357, Patchset 9 (Latest): if (mVerticalTabsContainerWidthSupplier != null) {
    Aishwarya Rajesh . unresolved

    Recommended by AI:

    This null check is redundant because `mVerticalTabsContainerWidthSupplier` is initialized to a non-null value in its declaration and is kept non-null via the setter. However, it's harmless.

    Line 1369, Patchset 9 (Latest): // The left edge of the exclusion rectangle dictates where the draggable desktop window
    Aishwarya Rajesh . unresolved

    Just curious: would we show the VT rail on the right side of the window in an RTL layout? If yes, then we should consider accordingly updating the gesture exclusion rects below. If this is not applicable, probably okay to keep the current implementation as is.

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Eleanor Lee
    • Gazal Agarwal
    Submit Requirements:
      • requirement satisfiedCode-Coverage
      • requirement is not satisfiedCode-Owners
      • requirement satisfiedCode-Review
      • requirement is not satisfiedNo-Unresolved-Comments
      • requirement satisfiedReview-Enforcement
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: comment
      Gerrit-Project: chromium/src
      Gerrit-Branch: main
      Gerrit-Change-Id: I250472b1d7519822b1cab3463499ff3c96b921bc
      Gerrit-Change-Number: 8068351
      Gerrit-PatchSet: 9
      Gerrit-Owner: Eleanor Lee <elean...@google.com>
      Gerrit-Reviewer: Aishwarya Rajesh <aishw...@google.com>
      Gerrit-Reviewer: Eleanor Lee <elean...@google.com>
      Gerrit-Reviewer: Gazal Agarwal <aga...@google.com>
      Gerrit-CC: Jinsuk Kim <jins...@chromium.org>
      Gerrit-Attention: Eleanor Lee <elean...@google.com>
      Gerrit-Attention: Gazal Agarwal <aga...@google.com>
      Gerrit-Comment-Date: Fri, 24 Jul 2026 14:47:17 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: Yes
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy
      Reply all
      Reply to author
      Forward
      0 new messages