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); } }