Allow tab and group go back to its origin after drag cancelled [chromium/src : main]

0 views
Skip to first unread message

Fuhsin Liao (Gerrit)

unread,
Dec 3, 2025, 5:43:11 AM12/3/25
to Kay Lin, Ben Chin, Chromium LUCI CQ, chromium...@chromium.org

Fuhsin Liao voted Auto-Submit+1

Auto-Submit+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 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: I78fe3f0c297a66cce3233c662a8c53b0ebfcec7a
Gerrit-Change-Number: 7220433
Gerrit-PatchSet: 1
Gerrit-Owner: Fuhsin Liao <fuhsi...@google.com>
Gerrit-Reviewer: Fuhsin Liao <fuhsi...@google.com>
Gerrit-CC: Ben Chin <lu...@chromium.org>
Gerrit-CC: Kay Lin <kaiy...@google.com>
Gerrit-Comment-Date: Wed, 03 Dec 2025 10:42:42 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: Yes
satisfied_requirement
unsatisfied_requirement
open
diffy

Fuhsin Liao (Gerrit)

unread,
Dec 4, 2025, 5:04:06 AM12/4/25
to Ryo Hashimoto, AyeAye, Kay Lin, Ben Chin, Chromium LUCI CQ, chromium...@chromium.org, davidj...@chromium.org, hanxi...@chromium.org, gogeral...@chromium.org, yusufo...@chromium.org, yuezhang...@chromium.org, meilian...@chromium.org, wychen...@chromium.org, mattsimm...@chromium.org
Attention needed from Ryo Hashimoto

Fuhsin Liao voted Auto-Submit+1

Auto-Submit+1
Open in Gerrit

Related details

Attention is currently required from:
  • Ryo Hashimoto
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: I78fe3f0c297a66cce3233c662a8c53b0ebfcec7a
Gerrit-Change-Number: 7220433
Gerrit-PatchSet: 6
Gerrit-Owner: Fuhsin Liao <fuhsi...@google.com>
Gerrit-Reviewer: Fuhsin Liao <fuhsi...@google.com>
Gerrit-Reviewer: Ryo Hashimoto <hash...@chromium.org>
Gerrit-CC: Ben Chin <lu...@chromium.org>
Gerrit-CC: Kay Lin <kaiy...@google.com>
Gerrit-Attention: Ryo Hashimoto <hash...@chromium.org>
Gerrit-Comment-Date: Thu, 04 Dec 2025 10:03:33 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: Yes
satisfied_requirement
unsatisfied_requirement
open
diffy

Ryo Hashimoto (Gerrit)

unread,
Dec 16, 2025, 4:09:24 AM12/16/25
to Fuhsin Liao, Code Review Nudger, AyeAye, Kay Lin, Ben Chin, Chromium LUCI CQ, chromium...@chromium.org, davidj...@chromium.org, hanxi...@chromium.org, gogeral...@chromium.org, yusufo...@chromium.org, yuezhang...@chromium.org, meilian...@chromium.org, wychen...@chromium.org, mattsimm...@chromium.org
Attention needed from Fuhsin Liao

Ryo Hashimoto added 4 comments

File chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/reorder/GroupReorderStrategy.java
Line 175, Patchset 10 (Latest): public void stopReorderMode(StripLayoutView[] stripViews, StripLayoutGroupTitle[] groupTitles) {
Ryo Hashimoto . unresolved

With the current design, I find it difficult to track who calls setIsDragCancelled() with what value.

Instead of adding `getIsDragCancelled` and `setIsDragCancelled` to the delegate, how about either of the following?

  • Add a new parameter to stopReorderMode()
  • Add a new method to handle cancelling (e.g. cancelReorderMode())
File chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/reorder/ReorderStrategyBase.java
Line 69, Patchset 10 (Latest): protected int mOriginIndex = TabModel.INVALID_TAB_INDEX;
Ryo Hashimoto . unresolved

This variable doesn't need to exist in this class. Please add it to where it's actually needed (e.g. TabReorderStrategy and GroupReorderStrategy).

File chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/reorder/TabStripDragHandler.java
Line 557, Patchset 10 (Latest): if (getIsManuallyCancelled()) mStripLayoutHelperSupplier.get().stopReorderModeDueToCancel();
Ryo Hashimoto . unresolved

Is this value any different from `!dropHandled`?

File third_party/androidx/local_modifications/recyclerview/java/org/chromium/ui/recyclerview/widget/ItemTouchHelper2.java
Line 1370, Patchset 10 (Latest): public boolean isDragInProcess() {
Ryo Hashimoto . unresolved

Not needed?

Open in Gerrit

Related details

Attention is currently required from:
  • Fuhsin Liao
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: I78fe3f0c297a66cce3233c662a8c53b0ebfcec7a
    Gerrit-Change-Number: 7220433
    Gerrit-PatchSet: 10
    Gerrit-Owner: Fuhsin Liao <fuhsi...@google.com>
    Gerrit-Reviewer: Fuhsin Liao <fuhsi...@google.com>
    Gerrit-Reviewer: Ryo Hashimoto <hash...@chromium.org>
    Gerrit-CC: Ben Chin <lu...@chromium.org>
    Gerrit-CC: Code Review Nudger <android-build...@prod.google.com>
    Gerrit-CC: Kay Lin <kaiy...@google.com>
    Gerrit-Attention: Fuhsin Liao <fuhsi...@google.com>
    Gerrit-Comment-Date: Tue, 16 Dec 2025 09:08:54 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Fuhsin Liao (Gerrit)

    unread,
    Dec 18, 2025, 4:41:41 AM12/18/25
    to Code Review Nudger, Ryo Hashimoto, AyeAye, Kay Lin, Ben Chin, Chromium LUCI CQ, chromium...@chromium.org, davidj...@chromium.org, hanxi...@chromium.org, gogeral...@chromium.org, yusufo...@chromium.org, yuezhang...@chromium.org, meilian...@chromium.org, wychen...@chromium.org, mattsimm...@chromium.org
    Attention needed from Fuhsin Liao and Ryo Hashimoto

    Fuhsin Liao voted and added 3 comments

    Votes added by Fuhsin Liao

    Auto-Submit+1
    Commit-Queue+1

    3 comments

    File chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/reorder/ReorderStrategyBase.java
    Line 69, Patchset 10: protected int mOriginIndex = TabModel.INVALID_TAB_INDEX;
    Ryo Hashimoto . resolved

    This variable doesn't need to exist in this class. Please add it to where it's actually needed (e.g. TabReorderStrategy and GroupReorderStrategy).

    Fuhsin Liao

    Done

    File chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/reorder/TabStripDragHandler.java
    Line 557, Patchset 10: if (getIsManuallyCancelled()) mStripLayoutHelperSupplier.get().stopReorderModeDueToCancel();
    Ryo Hashimoto . resolved

    Is this value any different from `!dropHandled`?

    Fuhsin Liao

    Yes since `!dropHandled` includes drop in the invalid place & cancel drag, but `getIsManuallyCancelled` includes only cancel drag.
    The prior one cause a test to fail -- The test expects stopReorderMode to be called yet stopReorderModeDueToCancel is called. I'm pretty sure that test isn't about canceling drag, so it shouldn't call stopReorderModeDueToCancel() even if it does no harm.

    File third_party/androidx/local_modifications/recyclerview/java/org/chromium/ui/recyclerview/widget/ItemTouchHelper2.java
    Line 1370, Patchset 10: public boolean isDragInProcess() {
    Ryo Hashimoto . resolved

    Not needed?

    Fuhsin Liao

    Yup I accidentally include this during rebase

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Fuhsin Liao
    • Ryo Hashimoto
    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: I78fe3f0c297a66cce3233c662a8c53b0ebfcec7a
    Gerrit-Change-Number: 7220433
    Gerrit-PatchSet: 16
    Gerrit-Owner: Fuhsin Liao <fuhsi...@google.com>
    Gerrit-Reviewer: Fuhsin Liao <fuhsi...@google.com>
    Gerrit-Reviewer: Ryo Hashimoto <hash...@chromium.org>
    Gerrit-CC: Ben Chin <lu...@chromium.org>
    Gerrit-CC: Code Review Nudger <android-build...@prod.google.com>
    Gerrit-CC: Kay Lin <kaiy...@google.com>
    Gerrit-Attention: Ryo Hashimoto <hash...@chromium.org>
    Gerrit-Attention: Fuhsin Liao <fuhsi...@google.com>
    Gerrit-Comment-Date: Thu, 18 Dec 2025 09:41:05 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: Yes
    Comment-In-Reply-To: Ryo Hashimoto <hash...@chromium.org>
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Fuhsin Liao (Gerrit)

    unread,
    Dec 22, 2025, 10:16:47 PM12/22/25
    to Code Review Nudger, Ryo Hashimoto, AyeAye, Kay Lin, Ben Chin, Chromium LUCI CQ, chromium...@chromium.org, davidj...@chromium.org, hanxi...@chromium.org, gogeral...@chromium.org, yusufo...@chromium.org, yuezhang...@chromium.org, meilian...@chromium.org, wychen...@chromium.org, mattsimm...@chromium.org
    Attention needed from Ryo Hashimoto

    Fuhsin Liao voted and added 1 comment

    Votes added by Fuhsin Liao

    Auto-Submit+1

    1 comment

    File chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/reorder/GroupReorderStrategy.java
    Line 175, Patchset 10: public void stopReorderMode(StripLayoutView[] stripViews, StripLayoutGroupTitle[] groupTitles) {
    Ryo Hashimoto . unresolved

    With the current design, I find it difficult to track who calls setIsDragCancelled() with what value.

    Instead of adding `getIsDragCancelled` and `setIsDragCancelled` to the delegate, how about either of the following?

    • Add a new parameter to stopReorderMode()
    • Add a new method to handle cancelling (e.g. cancelReorderMode())
    Fuhsin Liao

    Passed the isDragCancelled to stopReorderMode(). However in 'SourceViewDragDropReorderStrategy', I need to pass isDragCancelled to a bunch of 'onStopViewDragAction' functions and I'm afraid that my change is too wide that it will break some things

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Ryo Hashimoto
    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: I78fe3f0c297a66cce3233c662a8c53b0ebfcec7a
    Gerrit-Change-Number: 7220433
    Gerrit-PatchSet: 18
    Gerrit-Owner: Fuhsin Liao <fuhsi...@google.com>
    Gerrit-Reviewer: Fuhsin Liao <fuhsi...@google.com>
    Gerrit-Reviewer: Ryo Hashimoto <hash...@chromium.org>
    Gerrit-CC: Ben Chin <lu...@chromium.org>
    Gerrit-CC: Code Review Nudger <android-build...@prod.google.com>
    Gerrit-CC: Kay Lin <kaiy...@google.com>
    Gerrit-Attention: Ryo Hashimoto <hash...@chromium.org>
    Gerrit-Comment-Date: Tue, 23 Dec 2025 03:16:15 +0000
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Ryo Hashimoto (Gerrit)

    unread,
    Dec 23, 2025, 4:51:40 AM12/23/25
    to Fuhsin Liao, Code Review Nudger, AyeAye, Kay Lin, Ben Chin, Chromium LUCI CQ, chromium...@chromium.org, davidj...@chromium.org, hanxi...@chromium.org, gogeral...@chromium.org, yusufo...@chromium.org, yuezhang...@chromium.org, meilian...@chromium.org, wychen...@chromium.org, mattsimm...@chromium.org
    Attention needed from Fuhsin Liao

    Ryo Hashimoto added 5 comments

    File chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/reorder/GroupReorderStrategy.java
    Line 187, Patchset 20 (Latest): Token interactingTabGroupId = assumeNonNull(mInteractingGroupTitle).getTabGroupId();
    File chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/reorder/ReorderDelegate.java
    Line 425, Patchset 20 (Latest): public void stopReorderMode(StripLayoutView[] stripViews, StripLayoutGroupTitle[] groupTitles) {
    Ryo Hashimoto . unresolved
    To make it easier to understand this code, how bout passing the boolean value as a param, instead of a member variable?
    ```suggestion
    public void stopReorderMode(StripLayoutView[] stripViews, StripLayoutGroupTitle[] groupTitles, boolean isDragCancelled) {
    ```
    File chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/reorder/ReorderStrategy.java
    Line 60, Patchset 20 (Latest): void stopReorderMode(StripLayoutView[] stripViews, StripLayoutGroupTitle[] groupTitles);
    Ryo Hashimoto . unresolved
    How about adding a default implementation for this method so that you don't need to repeat it in subclasses?
    ```suggestion
    default void stopReorderMode(StripLayoutView[] stripViews, StripLayoutGroupTitle[] groupTitles) {
    stopReorderMode(stripViews, gruopTitles, false);
    }
    ```
    Line 72, Patchset 20 (Latest): boolean isDragCancelled) {}
    Ryo Hashimoto . unresolved

    Why you need to have this empty default implementation?

    File chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/reorder/TabStripDragHandler.java
    Line 557, Patchset 10: if (getIsManuallyCancelled()) mStripLayoutHelperSupplier.get().stopReorderModeDueToCancel();
    Ryo Hashimoto . unresolved

    Is this value any different from `!dropHandled`?

    Fuhsin Liao

    Yes since `!dropHandled` includes drop in the invalid place & cancel drag, but `getIsManuallyCancelled` includes only cancel drag.
    The prior one cause a test to fail -- The test expects stopReorderMode to be called yet stopReorderModeDueToCancel is called. I'm pretty sure that test isn't about canceling drag, so it shouldn't call stopReorderModeDueToCancel() even if it does no harm.

    Ryo Hashimoto

    If dropped at an invalid place, shouldn't we also restore the original position?
    That'll also allows us to remove mIsManuallyCancelled from TabDragHandlerBase.

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Fuhsin Liao
    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: I78fe3f0c297a66cce3233c662a8c53b0ebfcec7a
    Gerrit-Change-Number: 7220433
    Gerrit-PatchSet: 20
    Gerrit-Owner: Fuhsin Liao <fuhsi...@google.com>
    Gerrit-Reviewer: Fuhsin Liao <fuhsi...@google.com>
    Gerrit-Reviewer: Ryo Hashimoto <hash...@chromium.org>
    Gerrit-CC: Ben Chin <lu...@chromium.org>
    Gerrit-CC: Code Review Nudger <android-build...@prod.google.com>
    Gerrit-CC: Kay Lin <kaiy...@google.com>
    Gerrit-Attention: Fuhsin Liao <fuhsi...@google.com>
    Gerrit-Comment-Date: Tue, 23 Dec 2025 09:51:06 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    Comment-In-Reply-To: Ryo Hashimoto <hash...@chromium.org>
    Comment-In-Reply-To: Fuhsin Liao <fuhsi...@google.com>
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Ryo Hashimoto (Gerrit)

    unread,
    Dec 23, 2025, 4:52:10 AM12/23/25
    to Fuhsin Liao, Code Review Nudger, AyeAye, Kay Lin, Ben Chin, Chromium LUCI CQ, chromium...@chromium.org, davidj...@chromium.org, hanxi...@chromium.org, gogeral...@chromium.org, yusufo...@chromium.org, yuezhang...@chromium.org, meilian...@chromium.org, wychen...@chromium.org, mattsimm...@chromium.org
    Attention needed from Fuhsin Liao

    Ryo Hashimoto added 1 comment

    Patchset-level comments
    File-level comment, Patchset 20 (Latest):
    Ryo Hashimoto . unresolved

    Also please fix the failing tests

    Gerrit-Comment-Date: Tue, 23 Dec 2025 09:51:47 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Fuhsin Liao (Gerrit)

    unread,
    Dec 24, 2025, 3:09:23 AM12/24/25
    to Code Review Nudger, Ryo Hashimoto, AyeAye, Kay Lin, Ben Chin, Chromium LUCI CQ, chromium...@chromium.org, davidj...@chromium.org, hanxi...@chromium.org, gogeral...@chromium.org, yusufo...@chromium.org, yuezhang...@chromium.org, meilian...@chromium.org, wychen...@chromium.org, mattsimm...@chromium.org
    Attention needed from Ryo Hashimoto

    Fuhsin Liao voted and added 5 comments

    Votes added by Fuhsin Liao

    Auto-Submit+1

    5 comments

    Patchset-level comments
    File-level comment, Patchset 20:
    Ryo Hashimoto . resolved

    Also please fix the failing tests

    Fuhsin Liao

    Done

    File chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/reorder/GroupReorderStrategy.java
    Line 187, Patchset 20: Token interactingTabGroupId = assumeNonNull(mInteractingGroupTitle).getTabGroupId();
    Ryo Hashimoto . resolved
    Fuhsin Liao

    Oh I think you might misunderstand? I assumeNonNull(mInteractingGroupTitle) only, not the whole line. mInteractingGroupTitle is Nullable so remove assumeNonNull cause a warning

    File chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/reorder/ReorderDelegate.java
    Line 425, Patchset 20: public void stopReorderMode(StripLayoutView[] stripViews, StripLayoutGroupTitle[] groupTitles) {
    Ryo Hashimoto . resolved
    To make it easier to understand this code, how bout passing the boolean value as a param, instead of a member variable?
    ```suggestion
    public void stopReorderMode(StripLayoutView[] stripViews, StripLayoutGroupTitle[] groupTitles, boolean isDragCancelled) {
    ```
    Fuhsin Liao

    good idea. Done

    File chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/reorder/ReorderStrategy.java
    Line 60, Patchset 20: void stopReorderMode(StripLayoutView[] stripViews, StripLayoutGroupTitle[] groupTitles);
    Ryo Hashimoto . resolved
    How about adding a default implementation for this method so that you don't need to repeat it in subclasses?
    ```suggestion
    default void stopReorderMode(StripLayoutView[] stripViews, StripLayoutGroupTitle[] groupTitles) {
    stopReorderMode(stripViews, gruopTitles, false);
    }
    ```
    Fuhsin Liao

    good idea

    Line 72, Patchset 20: boolean isDragCancelled) {}
    Ryo Hashimoto . unresolved

    Why you need to have this empty default implementation?

    Fuhsin Liao

    So that I don't have to implement stopReorderMode w/ 3 param in classes that's not using it, for example, `ExternalViewDragDropReorderStrategy.java` and `MultiTabReorderStrategy.java`

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Ryo Hashimoto
    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: I78fe3f0c297a66cce3233c662a8c53b0ebfcec7a
    Gerrit-Change-Number: 7220433
    Gerrit-PatchSet: 23
    Gerrit-Owner: Fuhsin Liao <fuhsi...@google.com>
    Gerrit-Reviewer: Fuhsin Liao <fuhsi...@google.com>
    Gerrit-Reviewer: Ryo Hashimoto <hash...@chromium.org>
    Gerrit-CC: Ben Chin <lu...@chromium.org>
    Gerrit-CC: Code Review Nudger <android-build...@prod.google.com>
    Gerrit-CC: Kay Lin <kaiy...@google.com>
    Gerrit-Attention: Ryo Hashimoto <hash...@chromium.org>
    Gerrit-Comment-Date: Wed, 24 Dec 2025 08:08:51 +0000
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Fuhsin Liao (Gerrit)

    unread,
    Dec 24, 2025, 3:54:33 AM12/24/25
    to Code Review Nudger, Ryo Hashimoto, AyeAye, Kay Lin, Ben Chin, Chromium LUCI CQ, chromium...@chromium.org, davidj...@chromium.org, hanxi...@chromium.org, gogeral...@chromium.org, yusufo...@chromium.org, yuezhang...@chromium.org, meilian...@chromium.org, wychen...@chromium.org, mattsimm...@chromium.org
    Attention needed from Ryo Hashimoto

    Fuhsin Liao voted and added 1 comment

    Votes added by Fuhsin Liao

    Auto-Submit+1

    1 comment

    File chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/reorder/TabStripDragHandler.java
    Line 557, Patchset 10: if (getIsManuallyCancelled()) mStripLayoutHelperSupplier.get().stopReorderModeDueToCancel();
    Ryo Hashimoto . unresolved

    Is this value any different from `!dropHandled`?

    Fuhsin Liao

    Yes since `!dropHandled` includes drop in the invalid place & cancel drag, but `getIsManuallyCancelled` includes only cancel drag.
    The prior one cause a test to fail -- The test expects stopReorderMode to be called yet stopReorderModeDueToCancel is called. I'm pretty sure that test isn't about canceling drag, so it shouldn't call stopReorderModeDueToCancel() even if it does no harm.

    Ryo Hashimoto

    If dropped at an invalid place, shouldn't we also restore the original position?
    That'll also allows us to remove mIsManuallyCancelled from TabDragHandlerBase.

    Fuhsin Liao

    Hmm logically speaking yes, but one of the 'invalid place' is the location bar(address bar). If we replace `getIsManuallyCancelled` with `!drophandled`, then when a user releases the tab at the location bar, it will bounce back. However in chrome, the same behavior results in open a new window. I thought clank should stick to chrome's behavior as much as possible, right?

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Ryo Hashimoto
    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: I78fe3f0c297a66cce3233c662a8c53b0ebfcec7a
    Gerrit-Change-Number: 7220433
    Gerrit-PatchSet: 24
    Gerrit-Owner: Fuhsin Liao <fuhsi...@google.com>
    Gerrit-Reviewer: Fuhsin Liao <fuhsi...@google.com>
    Gerrit-Reviewer: Ryo Hashimoto <hash...@chromium.org>
    Gerrit-CC: Ben Chin <lu...@chromium.org>
    Gerrit-CC: Code Review Nudger <android-build...@prod.google.com>
    Gerrit-CC: Kay Lin <kaiy...@google.com>
    Gerrit-Attention: Ryo Hashimoto <hash...@chromium.org>
    Gerrit-Comment-Date: Wed, 24 Dec 2025 08:54:02 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: Yes
    Comment-In-Reply-To: Ryo Hashimoto <hash...@chromium.org>
    Comment-In-Reply-To: Fuhsin Liao <fuhsi...@google.com>
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Ryo Hashimoto (Gerrit)

    unread,
    Jan 5, 2026, 4:47:57 AM (9 days ago) Jan 5
    to Fuhsin Liao, Code Review Nudger, AyeAye, Kay Lin, Ben Chin, Chromium LUCI CQ, chromium...@chromium.org, davidj...@chromium.org, hanxi...@chromium.org, gogeral...@chromium.org, yusufo...@chromium.org, yuezhang...@chromium.org, meilian...@chromium.org, wychen...@chromium.org, mattsimm...@chromium.org
    Attention needed from Fuhsin Liao

    Ryo Hashimoto added 3 comments

    File chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabDragHandlerBase.java
    Line 460, Patchset 24 (Latest): mIsManuallyCancelled = true;
    Ryo Hashimoto . unresolved

    Why is this variable called `mIsManuallyCancelled` instead of `mWasCancelled`? What does `manually` in this context mean? When can a drag evnet be cancelled not manually?

    File chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/reorder/ReorderStrategy.java
    Line 72, Patchset 20: boolean isDragCancelled) {}
    Ryo Hashimoto . unresolved

    Why you need to have this empty default implementation?

    Fuhsin Liao

    So that I don't have to implement stopReorderMode w/ 3 param in classes that's not using it, for example, `ExternalViewDragDropReorderStrategy.java` and `MultiTabReorderStrategy.java`

    Ryo Hashimoto

    That introduces inconsistency between the two `stopReorderMode` methods. In other words, calling `stopReorderMode(stripViews, groupTitles, false)` should have the same effect as `stopReorderMode(stripViews, groupTitles)`, but with this empty impl it's inconsistent in classes like ExternalViewDragDropReorderStrategy.

    How about doing the following?

    • No default implementation for the 3-param stopReorderMode() method.
    • Add the new boolean param to ExternalViewDragDropReorderStrategy's stopReorderMode() impl.

    This way, the two stopReorderMode() impls are consistent thanks to the default impl of the 2-param stopReorderMode.

    File chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/reorder/TabStripDragHandler.java
    Line 557, Patchset 10: if (getIsManuallyCancelled()) mStripLayoutHelperSupplier.get().stopReorderModeDueToCancel();
    Ryo Hashimoto . unresolved

    Is this value any different from `!dropHandled`?

    Fuhsin Liao

    Yes since `!dropHandled` includes drop in the invalid place & cancel drag, but `getIsManuallyCancelled` includes only cancel drag.
    The prior one cause a test to fail -- The test expects stopReorderMode to be called yet stopReorderModeDueToCancel is called. I'm pretty sure that test isn't about canceling drag, so it shouldn't call stopReorderModeDueToCancel() even if it does no harm.

    Ryo Hashimoto

    If dropped at an invalid place, shouldn't we also restore the original position?
    That'll also allows us to remove mIsManuallyCancelled from TabDragHandlerBase.

    Fuhsin Liao

    Hmm logically speaking yes, but one of the 'invalid place' is the location bar(address bar). If we replace `getIsManuallyCancelled` with `!drophandled`, then when a user releases the tab at the location bar, it will bounce back. However in chrome, the same behavior results in open a new window. I thought clank should stick to chrome's behavior as much as possible, right?

    Ryo Hashimoto

    The API documentation for ACTION_DRAG_ENDED says getResult() returns the boolean value returned for ACTION_DROP.
    https://developer.android.com/reference/android/view/DragEvent#ACTION_DRAG_ENDED

    Isn't it possible to return true when handling ACTION_DROP if we want to differentiate it from cancelled cases?

    Another option is changing the code to invoke the tab position restoration logic when handling ESC key press. This way you don't need to care if `dropEvent==false` means ESC key press or an invalid drop destination.

    The current code structure sets a boolean value `mIsManuallyCancelled` in TabDragHandlerBase and uses it in TabStripDragHandler, and it's difficult to maintain. It'd be appreciated if you could avoid intorducing this new data member.

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Fuhsin Liao
    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: I78fe3f0c297a66cce3233c662a8c53b0ebfcec7a
    Gerrit-Change-Number: 7220433
    Gerrit-PatchSet: 24
    Gerrit-Owner: Fuhsin Liao <fuhsi...@google.com>
    Gerrit-Reviewer: Fuhsin Liao <fuhsi...@google.com>
    Gerrit-Reviewer: Ryo Hashimoto <hash...@chromium.org>
    Gerrit-CC: Ben Chin <lu...@chromium.org>
    Gerrit-CC: Code Review Nudger <android-build...@prod.google.com>
    Gerrit-CC: Kay Lin <kaiy...@google.com>
    Gerrit-Attention: Fuhsin Liao <fuhsi...@google.com>
    Gerrit-Comment-Date: Mon, 05 Jan 2026 09:47:34 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Fuhsin Liao (Gerrit)

    unread,
    Jan 6, 2026, 5:33:55 AM (8 days ago) Jan 6
    to Code Review Nudger, Ryo Hashimoto, AyeAye, Kay Lin, Ben Chin, Chromium LUCI CQ, chromium...@chromium.org, davidj...@chromium.org, hanxi...@chromium.org, gogeral...@chromium.org, yusufo...@chromium.org, yuezhang...@chromium.org, meilian...@chromium.org, wychen...@chromium.org, mattsimm...@chromium.org
    Attention needed from Ryo Hashimoto

    Fuhsin Liao voted and added 3 comments

    Votes added by Fuhsin Liao

    Auto-Submit+1

    3 comments

    File chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabDragHandlerBase.java
    Line 460, Patchset 24: mIsManuallyCancelled = true;
    Ryo Hashimoto . resolved

    Why is this variable called `mIsManuallyCancelled` instead of `mWasCancelled`? What does `manually` in this context mean? When can a drag evnet be cancelled not manually?

    Fuhsin Liao

    Make sense

    File chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/reorder/ReorderStrategy.java
    Line 72, Patchset 20: boolean isDragCancelled) {}
    Ryo Hashimoto . resolved

    Why you need to have this empty default implementation?

    Fuhsin Liao

    So that I don't have to implement stopReorderMode w/ 3 param in classes that's not using it, for example, `ExternalViewDragDropReorderStrategy.java` and `MultiTabReorderStrategy.java`

    Ryo Hashimoto

    That introduces inconsistency between the two `stopReorderMode` methods. In other words, calling `stopReorderMode(stripViews, groupTitles, false)` should have the same effect as `stopReorderMode(stripViews, groupTitles)`, but with this empty impl it's inconsistent in classes like ExternalViewDragDropReorderStrategy.

    How about doing the following?

    • No default implementation for the 3-param stopReorderMode() method.
    • Add the new boolean param to ExternalViewDragDropReorderStrategy's stopReorderMode() impl.

    This way, the two stopReorderMode() impls are consistent thanks to the default impl of the 2-param stopReorderMode.

    Fuhsin Liao

    Marked as resolved.

    File chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/reorder/TabStripDragHandler.java
    Line 557, Patchset 10: if (getIsManuallyCancelled()) mStripLayoutHelperSupplier.get().stopReorderModeDueToCancel();
    Ryo Hashimoto . unresolved

    Is this value any different from `!dropHandled`?

    Fuhsin Liao

    Yes since `!dropHandled` includes drop in the invalid place & cancel drag, but `getIsManuallyCancelled` includes only cancel drag.
    The prior one cause a test to fail -- The test expects stopReorderMode to be called yet stopReorderModeDueToCancel is called. I'm pretty sure that test isn't about canceling drag, so it shouldn't call stopReorderModeDueToCancel() even if it does no harm.

    Ryo Hashimoto

    If dropped at an invalid place, shouldn't we also restore the original position?
    That'll also allows us to remove mIsManuallyCancelled from TabDragHandlerBase.

    Fuhsin Liao

    Hmm logically speaking yes, but one of the 'invalid place' is the location bar(address bar). If we replace `getIsManuallyCancelled` with `!drophandled`, then when a user releases the tab at the location bar, it will bounce back. However in chrome, the same behavior results in open a new window. I thought clank should stick to chrome's behavior as much as possible, right?

    Ryo Hashimoto

    The API documentation for ACTION_DRAG_ENDED says getResult() returns the boolean value returned for ACTION_DROP.
    https://developer.android.com/reference/android/view/DragEvent#ACTION_DRAG_ENDED

    Isn't it possible to return true when handling ACTION_DROP if we want to differentiate it from cancelled cases?

    Another option is changing the code to invoke the tab position restoration logic when handling ESC key press. This way you don't need to care if `dropEvent==false` means ESC key press or an invalid drop destination.

    The current code structure sets a boolean value `mIsManuallyCancelled` in TabDragHandlerBase and uses it in TabStripDragHandler, and it's difficult to maintain. It'd be appreciated if you could avoid intorducing this new data member.

    Fuhsin Liao

    Hmmm after thorough thoughts, I don't think either suggestion 1. or 2. would work, or maybe it's because my knowledge is limited, please let me know if you hold a different opinion. For suggestion 2, I think a variable to be passed into stopReorderMode() is still necessary, and I also understand that it might be difficult to maintain this variable if it is set and used in different places, so I moved the mWasCancelled to `TabStripDragHandler.java`. For suggestion 1, in order to modify the result of invalid drop, i need to modify the logic in onDrop, but it's a complicated function an I'd rather not touch it. (I feel like it's not worth it)

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Ryo Hashimoto
    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: I78fe3f0c297a66cce3233c662a8c53b0ebfcec7a
    Gerrit-Change-Number: 7220433
    Gerrit-PatchSet: 26
    Gerrit-Owner: Fuhsin Liao <fuhsi...@google.com>
    Gerrit-Reviewer: Fuhsin Liao <fuhsi...@google.com>
    Gerrit-Reviewer: Ryo Hashimoto <hash...@chromium.org>
    Gerrit-CC: Ben Chin <lu...@chromium.org>
    Gerrit-CC: Code Review Nudger <android-build...@prod.google.com>
    Gerrit-CC: Kay Lin <kaiy...@google.com>
    Gerrit-Attention: Ryo Hashimoto <hash...@chromium.org>
    Gerrit-Comment-Date: Tue, 06 Jan 2026 10:33:22 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: Yes
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Ryo Hashimoto (Gerrit)

    unread,
    Jan 7, 2026, 1:28:30 AM (7 days ago) Jan 7
    to Fuhsin Liao, Code Review Nudger, AyeAye, Kay Lin, Ben Chin, Chromium LUCI CQ, chromium...@chromium.org, davidj...@chromium.org, hanxi...@chromium.org, gogeral...@chromium.org, yusufo...@chromium.org, yuezhang...@chromium.org, meilian...@chromium.org, wychen...@chromium.org, mattsimm...@chromium.org
    Attention needed from Fuhsin Liao

    Ryo Hashimoto voted and added 3 comments

    Votes added by Ryo Hashimoto

    Code-Review+1

    3 comments

    Patchset-level comments
    File-level comment, Patchset 26 (Latest):
    Ryo Hashimoto . resolved

    lgtm with a nit

    File chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/reorder/TabStripDragHandler.java
    Line 557, Patchset 10: if (getIsManuallyCancelled()) mStripLayoutHelperSupplier.get().stopReorderModeDueToCancel();
    Ryo Hashimoto . resolved

    Is this value any different from `!dropHandled`?

    Fuhsin Liao

    Yes since `!dropHandled` includes drop in the invalid place & cancel drag, but `getIsManuallyCancelled` includes only cancel drag.
    The prior one cause a test to fail -- The test expects stopReorderMode to be called yet stopReorderModeDueToCancel is called. I'm pretty sure that test isn't about canceling drag, so it shouldn't call stopReorderModeDueToCancel() even if it does no harm.

    Ryo Hashimoto

    If dropped at an invalid place, shouldn't we also restore the original position?
    That'll also allows us to remove mIsManuallyCancelled from TabDragHandlerBase.

    Fuhsin Liao

    Hmm logically speaking yes, but one of the 'invalid place' is the location bar(address bar). If we replace `getIsManuallyCancelled` with `!drophandled`, then when a user releases the tab at the location bar, it will bounce back. However in chrome, the same behavior results in open a new window. I thought clank should stick to chrome's behavior as much as possible, right?

    Ryo Hashimoto

    The API documentation for ACTION_DRAG_ENDED says getResult() returns the boolean value returned for ACTION_DROP.
    https://developer.android.com/reference/android/view/DragEvent#ACTION_DRAG_ENDED

    Isn't it possible to return true when handling ACTION_DROP if we want to differentiate it from cancelled cases?

    Another option is changing the code to invoke the tab position restoration logic when handling ESC key press. This way you don't need to care if `dropEvent==false` means ESC key press or an invalid drop destination.

    The current code structure sets a boolean value `mIsManuallyCancelled` in TabDragHandlerBase and uses it in TabStripDragHandler, and it's difficult to maintain. It'd be appreciated if you could avoid intorducing this new data member.

    Fuhsin Liao

    Hmmm after thorough thoughts, I don't think either suggestion 1. or 2. would work, or maybe it's because my knowledge is limited, please let me know if you hold a different opinion. For suggestion 2, I think a variable to be passed into stopReorderMode() is still necessary, and I also understand that it might be difficult to maintain this variable if it is set and used in different places, so I moved the mWasCancelled to `TabStripDragHandler.java`. For suggestion 1, in order to modify the result of invalid drop, i need to modify the logic in onDrop, but it's a complicated function an I'd rather not touch it. (I feel like it's not worth it)

    Ryo Hashimoto

    I see. The latest patch set looks much easier to understand. Thank you!

    Line 567, Patchset 26 (Latest): mWasCancelled = false;
    Ryo Hashimoto . unresolved

    Probably it's better to reset this variable to false when drag starts instead of when drag ends.

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Fuhsin Liao
    Submit Requirements:
      • requirement satisfiedCode-Coverage
      • requirement is not satisfiedCode-Owners
      • requirement is not 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: I78fe3f0c297a66cce3233c662a8c53b0ebfcec7a
      Gerrit-Change-Number: 7220433
      Gerrit-PatchSet: 26
      Gerrit-Owner: Fuhsin Liao <fuhsi...@google.com>
      Gerrit-Reviewer: Fuhsin Liao <fuhsi...@google.com>
      Gerrit-Reviewer: Ryo Hashimoto <hash...@chromium.org>
      Gerrit-CC: Ben Chin <lu...@chromium.org>
      Gerrit-CC: Code Review Nudger <android-build...@prod.google.com>
      Gerrit-CC: Kay Lin <kaiy...@google.com>
      Gerrit-Attention: Fuhsin Liao <fuhsi...@google.com>
      Gerrit-Comment-Date: Wed, 07 Jan 2026 06:27:55 +0000
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Fuhsin Liao (Gerrit)

      unread,
      Jan 7, 2026, 1:58:57 AM (7 days ago) Jan 7
      to Ryo Hashimoto, Code Review Nudger, AyeAye, Kay Lin, Ben Chin, Chromium LUCI CQ, chromium...@chromium.org, davidj...@chromium.org, hanxi...@chromium.org, gogeral...@chromium.org, yusufo...@chromium.org, yuezhang...@chromium.org, meilian...@chromium.org, wychen...@chromium.org, mattsimm...@chromium.org
      Attention needed from Ryo Hashimoto

      Fuhsin Liao voted and added 1 comment

      Votes added by Fuhsin Liao

      Auto-Submit+1

      1 comment

      File chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/reorder/TabStripDragHandler.java
      Line 567, Patchset 26: mWasCancelled = false;
      Ryo Hashimoto . resolved

      Probably it's better to reset this variable to false when drag starts instead of when drag ends.

      Fuhsin Liao

      Done

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Ryo Hashimoto
      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: I78fe3f0c297a66cce3233c662a8c53b0ebfcec7a
        Gerrit-Change-Number: 7220433
        Gerrit-PatchSet: 27
        Gerrit-Owner: Fuhsin Liao <fuhsi...@google.com>
        Gerrit-Reviewer: Fuhsin Liao <fuhsi...@google.com>
        Gerrit-Reviewer: Ryo Hashimoto <hash...@chromium.org>
        Gerrit-CC: Ben Chin <lu...@chromium.org>
        Gerrit-CC: Code Review Nudger <android-build...@prod.google.com>
        Gerrit-CC: Kay Lin <kaiy...@google.com>
        Gerrit-Attention: Ryo Hashimoto <hash...@chromium.org>
        Gerrit-Comment-Date: Wed, 07 Jan 2026 06:58:26 +0000
        satisfied_requirement
        unsatisfied_requirement
        open
        diffy

        Neil Coronado (Gerrit)

        unread,
        Jan 7, 2026, 12:33:14 PM (7 days ago) Jan 7
        to Fuhsin Liao, Ryo Hashimoto, Code Review Nudger, AyeAye, Kay Lin, Ben Chin, Chromium LUCI CQ, chromium...@chromium.org, davidj...@chromium.org, hanxi...@chromium.org, gogeral...@chromium.org, yusufo...@chromium.org, yuezhang...@chromium.org, meilian...@chromium.org, wychen...@chromium.org, mattsimm...@chromium.org
        Attention needed from Fuhsin Liao and Ryo Hashimoto

        Neil Coronado added 2 comments

        File chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/reorder/ReorderStrategyBase.java
        Line 133, Patchset 27 (Latest): () -> mReorderDelegate.stopReorderMode(stripViews, groupTitles, false);
        Neil Coronado . unresolved

        nit: here and elsewhere, `..., /* isDragCancelled= */ false);`

        File chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/reorder/TabReorderStrategy.java
        Line 219, Patchset 27 (Latest): mModel.moveTab(mInteractingTab.getTabId(), mOriginIndex);
        Neil Coronado . unresolved

        I suspect that if the dragged tab was originally in a group, we also need to manually re-add it to that group here. Is that correct? If so, no pref about updating here or in a followup.

        Open in Gerrit

        Related details

        Attention is currently required from:
        • Fuhsin Liao
        • Ryo Hashimoto
        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: I78fe3f0c297a66cce3233c662a8c53b0ebfcec7a
        Gerrit-Change-Number: 7220433
        Gerrit-PatchSet: 27
        Gerrit-Owner: Fuhsin Liao <fuhsi...@google.com>
        Gerrit-Reviewer: Fuhsin Liao <fuhsi...@google.com>
        Gerrit-Reviewer: Neil Coronado <ne...@google.com>
        Gerrit-Reviewer: Ryo Hashimoto <hash...@chromium.org>
        Gerrit-CC: Ben Chin <lu...@chromium.org>
        Gerrit-CC: Code Review Nudger <android-build...@prod.google.com>
        Gerrit-CC: Kay Lin <kaiy...@google.com>
        Gerrit-Attention: Ryo Hashimoto <hash...@chromium.org>
        Gerrit-Attention: Fuhsin Liao <fuhsi...@google.com>
        Gerrit-Comment-Date: Wed, 07 Jan 2026 17:33:08 +0000
        Gerrit-HasComments: Yes
        Gerrit-Has-Labels: No
        satisfied_requirement
        unsatisfied_requirement
        open
        diffy

        Fuhsin Liao (Gerrit)

        unread,
        Jan 13, 2026, 3:47:15 AM (24 hours ago) Jan 13
        to Neil Coronado, Ryo Hashimoto, Code Review Nudger, AyeAye, Kay Lin, Ben Chin, Chromium LUCI CQ, chromium...@chromium.org, davidj...@chromium.org, hanxi...@chromium.org, gogeral...@chromium.org, yusufo...@chromium.org, yuezhang...@chromium.org, meilian...@chromium.org, wychen...@chromium.org, mattsimm...@chromium.org
        Attention needed from Neil Coronado and Ryo Hashimoto

        Fuhsin Liao voted and added 2 comments

        Votes added by Fuhsin Liao

        Auto-Submit+1

        2 comments

        File chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/reorder/ReorderStrategyBase.java
        Line 133, Patchset 27: () -> mReorderDelegate.stopReorderMode(stripViews, groupTitles, false);
        Neil Coronado . resolved

        nit: here and elsewhere, `..., /* isDragCancelled= */ false);`

        Fuhsin Liao

        Done

        File chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/reorder/TabReorderStrategy.java
        Line 219, Patchset 27: mModel.moveTab(mInteractingTab.getTabId(), mOriginIndex);
        Neil Coronado . unresolved

        I suspect that if the dragged tab was originally in a group, we also need to manually re-add it to that group here. Is that correct? If so, no pref about updating here or in a followup.

        Fuhsin Liao

        Yup you're right. Dragging a tab from a group and then cancel it with ESC dosen't make it bounce back to the group. Will fix it in the following cls

        Open in Gerrit

        Related details

        Attention is currently required from:
        • Neil Coronado
        • Ryo Hashimoto
        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: I78fe3f0c297a66cce3233c662a8c53b0ebfcec7a
        Gerrit-Change-Number: 7220433
        Gerrit-PatchSet: 28
        Gerrit-Owner: Fuhsin Liao <fuhsi...@google.com>
        Gerrit-Reviewer: Fuhsin Liao <fuhsi...@google.com>
        Gerrit-Reviewer: Neil Coronado <ne...@google.com>
        Gerrit-Reviewer: Ryo Hashimoto <hash...@chromium.org>
        Gerrit-CC: Ben Chin <lu...@chromium.org>
        Gerrit-CC: Code Review Nudger <android-build...@prod.google.com>
        Gerrit-CC: Kay Lin <kaiy...@google.com>
        Gerrit-Attention: Ryo Hashimoto <hash...@chromium.org>
        Gerrit-Attention: Neil Coronado <ne...@google.com>
        Gerrit-Comment-Date: Tue, 13 Jan 2026 08:46:51 +0000
        Gerrit-HasComments: Yes
        Gerrit-Has-Labels: Yes
        Comment-In-Reply-To: Neil Coronado <ne...@google.com>
        satisfied_requirement
        unsatisfied_requirement
        open
        diffy

        Fuhsin Liao (Gerrit)

        unread,
        Jan 13, 2026, 3:47:26 AM (23 hours ago) Jan 13
        to Neil Coronado, Ryo Hashimoto, Code Review Nudger, AyeAye, Kay Lin, Ben Chin, Chromium LUCI CQ, chromium...@chromium.org, davidj...@chromium.org, hanxi...@chromium.org, gogeral...@chromium.org, yusufo...@chromium.org, yuezhang...@chromium.org, meilian...@chromium.org, wychen...@chromium.org, mattsimm...@chromium.org
        Attention needed from Neil Coronado and Ryo Hashimoto

        Fuhsin Liao added 1 comment

        File chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/reorder/TabReorderStrategy.java
        Line 219, Patchset 27: mModel.moveTab(mInteractingTab.getTabId(), mOriginIndex);
        Neil Coronado . resolved

        I suspect that if the dragged tab was originally in a group, we also need to manually re-add it to that group here. Is that correct? If so, no pref about updating here or in a followup.

        Fuhsin Liao

        Yup you're right. Dragging a tab from a group and then cancel it with ESC dosen't make it bounce back to the group. Will fix it in the following cls

        Fuhsin Liao

        Done

        Gerrit-Comment-Date: Tue, 13 Jan 2026 08:47:02 +0000
        Gerrit-HasComments: Yes
        Gerrit-Has-Labels: No
        Comment-In-Reply-To: Fuhsin Liao <fuhsi...@google.com>
        Comment-In-Reply-To: Neil Coronado <ne...@google.com>
        satisfied_requirement
        unsatisfied_requirement
        open
        diffy

        Fuhsin Liao (Gerrit)

        unread,
        Jan 13, 2026, 3:48:02 AM (23 hours ago) Jan 13
        to Neil Coronado, Ryo Hashimoto, Code Review Nudger, AyeAye, Kay Lin, Ben Chin, Chromium LUCI CQ, chromium...@chromium.org, davidj...@chromium.org, hanxi...@chromium.org, gogeral...@chromium.org, yusufo...@chromium.org, yuezhang...@chromium.org, meilian...@chromium.org, wychen...@chromium.org, mattsimm...@chromium.org
        Attention needed from Neil Coronado and Ryo Hashimoto

        Fuhsin Liao added 1 comment

        File chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/reorder/GroupReorderStrategy.java
        Line 175, Patchset 10: public void stopReorderMode(StripLayoutView[] stripViews, StripLayoutGroupTitle[] groupTitles) {
        Ryo Hashimoto . resolved

        With the current design, I find it difficult to track who calls setIsDragCancelled() with what value.

        Instead of adding `getIsDragCancelled` and `setIsDragCancelled` to the delegate, how about either of the following?

        • Add a new parameter to stopReorderMode()
        • Add a new method to handle cancelling (e.g. cancelReorderMode())
        Fuhsin Liao

        Passed the isDragCancelled to stopReorderMode(). However in 'SourceViewDragDropReorderStrategy', I need to pass isDragCancelled to a bunch of 'onStopViewDragAction' functions and I'm afraid that my change is too wide that it will break some things

        Fuhsin Liao

        Done

        Open in Gerrit

        Related details

        Attention is currently required from:
        • Neil Coronado
        • Ryo Hashimoto
        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: I78fe3f0c297a66cce3233c662a8c53b0ebfcec7a
          Gerrit-Change-Number: 7220433
          Gerrit-PatchSet: 28
          Gerrit-Owner: Fuhsin Liao <fuhsi...@google.com>
          Gerrit-Reviewer: Fuhsin Liao <fuhsi...@google.com>
          Gerrit-Reviewer: Neil Coronado <ne...@google.com>
          Gerrit-Reviewer: Ryo Hashimoto <hash...@chromium.org>
          Gerrit-CC: Ben Chin <lu...@chromium.org>
          Gerrit-CC: Code Review Nudger <android-build...@prod.google.com>
          Gerrit-CC: Kay Lin <kaiy...@google.com>
          Gerrit-Attention: Ryo Hashimoto <hash...@chromium.org>
          Gerrit-Attention: Neil Coronado <ne...@google.com>
          Gerrit-Comment-Date: Tue, 13 Jan 2026 08:47:33 +0000
          Gerrit-HasComments: Yes
          Gerrit-Has-Labels: No
          satisfied_requirement
          unsatisfied_requirement
          open
          diffy

          Neil Coronado (Gerrit)

          unread,
          Jan 13, 2026, 12:30:58 PM (15 hours ago) Jan 13
          to Fuhsin Liao, Ryo Hashimoto, Code Review Nudger, AyeAye, Kay Lin, Ben Chin, Chromium LUCI CQ, chromium...@chromium.org, davidj...@chromium.org, hanxi...@chromium.org, gogeral...@chromium.org, yusufo...@chromium.org, yuezhang...@chromium.org, meilian...@chromium.org, wychen...@chromium.org, mattsimm...@chromium.org
          Attention needed from Fuhsin Liao and Ryo Hashimoto

          Neil Coronado voted Code-Review+1

          Code-Review+1
          Open in Gerrit

          Related details

          Attention is currently required from:
          • Fuhsin Liao
          • Ryo Hashimoto
          Submit Requirements:
          • requirement satisfiedCode-Coverage
          • requirement satisfiedCode-Owners
          • requirement is not satisfiedCode-Review
          • requirement satisfiedReview-Enforcement
          Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
          Gerrit-MessageType: comment
          Gerrit-Project: chromium/src
          Gerrit-Branch: main
          Gerrit-Change-Id: I78fe3f0c297a66cce3233c662a8c53b0ebfcec7a
          Gerrit-Change-Number: 7220433
          Gerrit-PatchSet: 28
          Gerrit-Owner: Fuhsin Liao <fuhsi...@google.com>
          Gerrit-Reviewer: Fuhsin Liao <fuhsi...@google.com>
          Gerrit-Reviewer: Neil Coronado <ne...@google.com>
          Gerrit-Reviewer: Ryo Hashimoto <hash...@chromium.org>
          Gerrit-CC: Ben Chin <lu...@chromium.org>
          Gerrit-CC: Code Review Nudger <android-build...@prod.google.com>
          Gerrit-CC: Kay Lin <kaiy...@google.com>
          Gerrit-Attention: Ryo Hashimoto <hash...@chromium.org>
          Gerrit-Attention: Fuhsin Liao <fuhsi...@google.com>
          Gerrit-Comment-Date: Tue, 13 Jan 2026 17:30:38 +0000
          Gerrit-HasComments: No
          Gerrit-Has-Labels: Yes
          satisfied_requirement
          unsatisfied_requirement
          open
          diffy

          Ryo Hashimoto (Gerrit)

          unread,
          12:40 AM (3 hours ago) 12:40 AM
          to Fuhsin Liao, Neil Coronado, Code Review Nudger, AyeAye, Kay Lin, Ben Chin, Chromium LUCI CQ, chromium...@chromium.org, davidj...@chromium.org, hanxi...@chromium.org, gogeral...@chromium.org, yusufo...@chromium.org, yuezhang...@chromium.org, meilian...@chromium.org, wychen...@chromium.org, mattsimm...@chromium.org
          Attention needed from Fuhsin Liao

          Ryo Hashimoto voted Code-Review+1

          Code-Review+1
          Open in Gerrit

          Related details

          Attention is currently required from:
          • Fuhsin Liao
          Submit Requirements:
            • requirement satisfiedCode-Coverage
            • requirement satisfiedCode-Owners
            • requirement satisfiedCode-Review
            • requirement satisfiedReview-Enforcement
            Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
            Gerrit-MessageType: comment
            Gerrit-Project: chromium/src
            Gerrit-Branch: main
            Gerrit-Change-Id: I78fe3f0c297a66cce3233c662a8c53b0ebfcec7a
            Gerrit-Change-Number: 7220433
            Gerrit-PatchSet: 28
            Gerrit-Owner: Fuhsin Liao <fuhsi...@google.com>
            Gerrit-Reviewer: Fuhsin Liao <fuhsi...@google.com>
            Gerrit-Reviewer: Neil Coronado <ne...@google.com>
            Gerrit-Reviewer: Ryo Hashimoto <hash...@chromium.org>
            Gerrit-CC: Ben Chin <lu...@chromium.org>
            Gerrit-CC: Code Review Nudger <android-build...@prod.google.com>
            Gerrit-CC: Kay Lin <kaiy...@google.com>
            Gerrit-Attention: Fuhsin Liao <fuhsi...@google.com>
            Gerrit-Comment-Date: Wed, 14 Jan 2026 05:40:19 +0000
            Gerrit-HasComments: No
            Gerrit-Has-Labels: Yes
            satisfied_requirement
            open
            diffy

            Fuhsin Liao (Gerrit)

            unread,
            1:40 AM (2 hours ago) 1:40 AM
            to Ryo Hashimoto, Neil Coronado, Code Review Nudger, AyeAye, Kay Lin, Ben Chin, Chromium LUCI CQ, chromium...@chromium.org, davidj...@chromium.org, hanxi...@chromium.org, gogeral...@chromium.org, yusufo...@chromium.org, yuezhang...@chromium.org, meilian...@chromium.org, wychen...@chromium.org, mattsimm...@chromium.org

            Fuhsin Liao voted Commit-Queue+2

            Commit-Queue+2
            Open in Gerrit

            Related details

            Attention set is empty
            Submit Requirements:
            • requirement satisfiedCode-Coverage
            • requirement satisfiedCode-Owners
            • requirement satisfiedCode-Review
            • requirement satisfiedReview-Enforcement
            Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
            Gerrit-MessageType: comment
            Gerrit-Project: chromium/src
            Gerrit-Branch: main
            Gerrit-Change-Id: I78fe3f0c297a66cce3233c662a8c53b0ebfcec7a
            Gerrit-Change-Number: 7220433
            Gerrit-PatchSet: 28
            Gerrit-Owner: Fuhsin Liao <fuhsi...@google.com>
            Gerrit-Reviewer: Fuhsin Liao <fuhsi...@google.com>
            Gerrit-Reviewer: Neil Coronado <ne...@google.com>
            Gerrit-Reviewer: Ryo Hashimoto <hash...@chromium.org>
            Gerrit-CC: Ben Chin <lu...@chromium.org>
            Gerrit-CC: Code Review Nudger <android-build...@prod.google.com>
            Gerrit-CC: Kay Lin <kaiy...@google.com>
            Gerrit-Comment-Date: Wed, 14 Jan 2026 06:39:55 +0000
            Gerrit-HasComments: No
            Gerrit-Has-Labels: Yes
            satisfied_requirement
            open
            diffy
            Reply all
            Reply to author
            Forward
            0 new messages