From 45154aa725c53e0b143ec3e065d612854ed428fe Mon Sep 17 00:00:00 2001 From: Artem Samoilenko Date: Mon, 5 Jan 2026 11:56:52 -0500 Subject: [PATCH] [cr145][Android] Refactor MultiWindowUtils#closeWindow(instanceId) -> closeWindows(List) Chromium changes: https://chromium.googlesource.com/chromium/src/+/9eab1379c2ec6297c9d582ad90547ae712934e22 commit 9eab1379c2ec6297c9d582ad90547ae712934e22 Author: Zhe Li Date: Thu Dec 18 11:11:19 2025 -0800 [RWM][RecentlyClosed] Clear all inactive windows in addition to tab entries - Refactor #closeWindow(instanceId) -> closeWindows(List) to align with other closeTab impl and to avoid instanceStateObserver#onInstanceClosed() Invoked multiple times when removing multiple windows. Demo: https://drive.google.com/file/d/1WCRDoJ23bFnRss-k0atyn-cT1DgsZ2TO/view?usp=sharing OBSOLETE_HISTOGRAM[Android.MultiWindowMode.CloseWindow.AppSource]=Replaced by Android.MultiWindowMode.CloseWindow.AppSource2 Bug: 444680605 Change-Id: Ibbcaa1559bb8ec555b9f5add03a9dc4fe2d7a7d2 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7261791 Reviewed-by: Calder Kitagawa Commit-Queue: Zhe Li Cr-Commit-Position: refs/heads/main@{#1560697} --- .../browser/multiwindow/BraveMultiInstanceManagerApi31.java | 5 ++++- .../chrome/browser/multiwindow/BraveMultiWindowUtils.java | 6 ++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/android/java/org/chromium/chrome/browser/multiwindow/BraveMultiInstanceManagerApi31.java b/android/java/org/chromium/chrome/browser/multiwindow/BraveMultiInstanceManagerApi31.java index 347dd31a164..2bbf9628392 100644 --- a/android/java/org/chromium/chrome/browser/multiwindow/BraveMultiInstanceManagerApi31.java +++ b/android/java/org/chromium/chrome/browser/multiwindow/BraveMultiInstanceManagerApi31.java @@ -29,6 +29,7 @@ import org.chromium.components.browser_ui.widget.MenuOrKeyboardActionController; import org.chromium.ui.base.WindowAndroid; import org.chromium.ui.modaldialog.ModalDialogManager; +import java.util.Collections; import java.util.List; import java.util.function.Supplier; @@ -75,7 +76,9 @@ class BraveMultiInstanceManagerApi31 extends MultiInstanceManagerApi31 { TabModelSelector selector = TabWindowManagerSingleton.getInstance().getTabModelSelectorById(mInstanceId); if (selector != null && selector.getTotalTabCount() == 0) { - closeWindow(mInstanceId, CloseWindowAppSource.NO_TABS_IN_WINDOW); + closeWindows( + Collections.singletonList(mInstanceId), + CloseWindowAppSource.NO_TABS_IN_WINDOW); } if (MultiWindowUtils.getInstanceCountWithFallback(PersistedInstanceType.ACTIVE) == 1) { BraveMultiWindowUtils.updateEnableMultiWindows(false); diff --git a/android/java/org/chromium/chrome/browser/multiwindow/BraveMultiWindowUtils.java b/android/java/org/chromium/chrome/browser/multiwindow/BraveMultiWindowUtils.java index d7e4b4c8429..346b8e8f372 100644 --- a/android/java/org/chromium/chrome/browser/multiwindow/BraveMultiWindowUtils.java +++ b/android/java/org/chromium/chrome/browser/multiwindow/BraveMultiWindowUtils.java @@ -18,6 +18,7 @@ import org.chromium.chrome.browser.multiwindow.MultiInstanceManager.PersistedIns import org.chromium.chrome.browser.preferences.ChromeSharedPreferences; import org.chromium.chrome.browser.tabmodel.TabModelSelector; +import java.util.Collections; import java.util.List; @NullMarked @@ -107,8 +108,9 @@ public class BraveMultiWindowUtils extends MultiWindowUtils { multiInstanceManagerApi31.getInstanceInfo(PersistedInstanceType.ANY); if (allInstances != null && allInstances.size() > 1) { for (int i = 1; i < allInstances.size(); i++) { - multiInstanceManagerApi31.closeWindow( - allInstances.get(i).instanceId, allInstances.get(i).taskId); + multiInstanceManagerApi31.closeWindows( + Collections.singletonList(allInstances.get(i).instanceId), + allInstances.get(i).taskId); } } }