From c6fa7e3e00a7e8808e557207820ccfdb548bfcb9 Mon Sep 17 00:00:00 2001 From: AlexeyBarabash Date: Thu, 2 Apr 2026 00:53:50 +0300 Subject: [PATCH] [cr148][Android] MultiWindowUtils changes - isOpenInOtherWindowSupported removed; - isLinkNavigationToNewWindowSupported added; - isLinkNavigationToIncognitoWindowSupported added. Chromium change: https://source.chromium.org/chromium/chromium/src/+/8ebbccb8137c4b44999c92edfb971e821d9365ba commit 8ebbccb8137c4b44999c92edfb971e821d9365ba Author: Aishwarya Rajesh Date: Mon Mar 30 11:44:27 2026 -0700 Update conditions for "Move to other window" / "Move to new window" visibility on context menus for link navigation The CL creates / updates utility methods in MultiWindowUtils to determine when these options are shown on a link context menu per latest recommendations: - Open in new window - Open in Incognito window - Open in other window The updates in this CL ensure that either "Open in new window" or "Open in other window" (not both) are visible on the menu. Both options will invoke the same codepath currently, this will be updated in fast-follow CLs. Bug: 475571336 Change-Id: I33a597703e634a7d5cd2d6b66c4c2ca9254374ef Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7680970 Reviewed-by: Jinsuk Kim Reviewed-by: Sirisha Kavuluru Commit-Queue: Aishwarya Rajesh Reviewed-by: Shu Yang Cr-Commit-Position: refs/heads/main@{#1607263} --- android/java/apk_for_test.flags | 4 +++- .../multiwindow/BraveMultiWindowUtils.java | 19 ++++++++++++++----- .../chromium/chrome/browser/BytecodeTest.java | 14 +++++++++++++- .../BraveMultiWindowUtilsClassAdapter.java | 10 ++++++++++ 4 files changed, 40 insertions(+), 7 deletions(-) diff --git a/android/java/apk_for_test.flags b/android/java/apk_for_test.flags index 2e79698e1dc..ca541db5ecb 100644 --- a/android/java/apk_for_test.flags +++ b/android/java/apk_for_test.flags @@ -540,7 +540,9 @@ -keep class org.chromium.chrome.browser.multiwindow.MultiWindowUtils { *** shouldShowManageWindowsMenu(...); - *** isOpenInOtherWindowSupported(...); + *** isLinkNavigationToOtherWindowSupported(...); + *** isLinkNavigationToNewWindowSupported(...); + *** isLinkNavigationToIncognitoWindowSupported(...); *** isMoveToOtherWindowSupported(...); *** canEnterMultiWindowMode(...); (...); diff --git a/android/java/org/chromium/chrome/browser/multiwindow/BraveMultiWindowUtils.java b/android/java/org/chromium/chrome/browser/multiwindow/BraveMultiWindowUtils.java index 7c413a25cbd..4a26843adc6 100644 --- a/android/java/org/chromium/chrome/browser/multiwindow/BraveMultiWindowUtils.java +++ b/android/java/org/chromium/chrome/browser/multiwindow/BraveMultiWindowUtils.java @@ -11,7 +11,6 @@ import android.content.Intent; import org.chromium.base.BravePreferenceKeys; import org.chromium.base.Log; import org.chromium.build.annotations.NullMarked; -import org.chromium.build.annotations.Nullable; import org.chromium.chrome.browser.ChromeTabbedActivity; import org.chromium.chrome.browser.app.BraveActivity; import org.chromium.chrome.browser.multiwindow.MultiInstanceManager.PersistedInstanceType; @@ -30,8 +29,8 @@ public class BraveMultiWindowUtils extends MultiWindowUtils { super(); } - public boolean shouldShowEnableWindow(@Nullable Activity activity) { - return super.isOpenInOtherWindowSupported(activity) + public boolean shouldShowEnableWindow(Activity activity) { + return super.isLinkNavigationToOtherWindowSupported(activity) || MultiWindowUtils.canEnterMultiWindowMode(); } @@ -39,9 +38,19 @@ public class BraveMultiWindowUtils extends MultiWindowUtils { return shouldEnableMultiWindows() && MultiWindowUtils.shouldShowManageWindowsMenu(); } + public static boolean isLinkNavigationToNewWindowSupported() { + return shouldEnableMultiWindows() + && MultiWindowUtils.isLinkNavigationToNewWindowSupported(); + } + + public static boolean isLinkNavigationToIncognitoWindowSupported() { + return shouldEnableMultiWindows() + && MultiWindowUtils.isLinkNavigationToIncognitoWindowSupported(); + } + @Override - public boolean isOpenInOtherWindowSupported(@Nullable Activity activity) { - return shouldEnableMultiWindows() && super.isOpenInOtherWindowSupported(activity); + public boolean isLinkNavigationToOtherWindowSupported(Activity activity) { + return shouldEnableMultiWindows() && super.isLinkNavigationToOtherWindowSupported(activity); } @Override diff --git a/android/javatests/org/chromium/chrome/browser/BytecodeTest.java b/android/javatests/org/chromium/chrome/browser/BytecodeTest.java index df9c4f44b25..c6cf91b0deb 100644 --- a/android/javatests/org/chromium/chrome/browser/BytecodeTest.java +++ b/android/javatests/org/chromium/chrome/browser/BytecodeTest.java @@ -886,7 +886,7 @@ public class BytecodeTest { Assert.assertTrue( methodExists( "org/chromium/chrome/browser/multiwindow/MultiWindowUtils", - "isOpenInOtherWindowSupported", + "isLinkNavigationToOtherWindowSupported", MethodModifier.REGULAR, boolean.class, Activity.class)); @@ -910,6 +910,18 @@ public class BytecodeTest { "shouldShowManageWindowsMenu", MethodModifier.STATIC, boolean.class)); + Assert.assertTrue( + methodExists( + "org/chromium/chrome/browser/multiwindow/MultiWindowUtils", + "isLinkNavigationToNewWindowSupported", + MethodModifier.STATIC, + boolean.class)); + Assert.assertTrue( + methodExists( + "org/chromium/chrome/browser/multiwindow/MultiWindowUtils", + "isLinkNavigationToIncognitoWindowSupported", + MethodModifier.STATIC, + boolean.class)); Assert.assertTrue( methodExists( "org/chromium/components/browser_ui/site_settings/SiteSettingsCategory", diff --git a/build/android/bytecode/java/org/brave/bytecode/BraveMultiWindowUtilsClassAdapter.java b/build/android/bytecode/java/org/brave/bytecode/BraveMultiWindowUtilsClassAdapter.java index 72b04e8bd58..e8fad708fdb 100644 --- a/build/android/bytecode/java/org/brave/bytecode/BraveMultiWindowUtilsClassAdapter.java +++ b/build/android/bytecode/java/org/brave/bytecode/BraveMultiWindowUtilsClassAdapter.java @@ -26,5 +26,15 @@ public class BraveMultiWindowUtilsClassAdapter extends BraveClassVisitor { sMultiWindowUtilsClassName, "canEnterMultiWindowMode", sBraveMultiWindowUtilsClassName); + + changeMethodOwner( + sMultiWindowUtilsClassName, + "isLinkNavigationToNewWindowSupported", + sBraveMultiWindowUtilsClassName); + + changeMethodOwner( + sMultiWindowUtilsClassName, + "isLinkNavigationToIncognitoWindowSupported", + sBraveMultiWindowUtilsClassName); } }