diff --git a/android/java/apk_for_test.flags b/android/java/apk_for_test.flags index b01da40cada..8e76fa11238 100644 --- a/android/java/apk_for_test.flags +++ b/android/java/apk_for_test.flags @@ -913,6 +913,7 @@ *** mTabController; *** mMinimizationManagerHolder; *** mCustomTabFeatureOverridesManager; + *** getAppHeaderCoordinator(...); public (...); } diff --git a/android/java/org/chromium/chrome/browser/customtabs/FullScreenCustomTabActivity.java b/android/java/org/chromium/chrome/browser/customtabs/FullScreenCustomTabActivity.java index 6ad6c7a9d21..b1744ac6dc5 100644 --- a/android/java/org/chromium/chrome/browser/customtabs/FullScreenCustomTabActivity.java +++ b/android/java/org/chromium/chrome/browser/customtabs/FullScreenCustomTabActivity.java @@ -36,6 +36,7 @@ import org.chromium.chrome.browser.customtabs.features.toolbar.CustomTabToolbarC import org.chromium.chrome.browser.notifications.BravePermissionUtils; import org.chromium.chrome.browser.preferences.ChromeSharedPreferences; import org.chromium.chrome.browser.ui.RootUiCoordinator; +import org.chromium.chrome.browser.ui.desktop_windowing.AppHeaderCoordinator; import org.chromium.chrome.browser.ui.messages.snackbar.Snackbar; import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager; import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager.SnackbarController; @@ -229,7 +230,13 @@ public class FullScreenCustomTabActivity extends CustomTabActivity { () -> mMinimizationManagerHolder.getMinimizationManager(), () -> mCustomTabFeatureOverridesManager, () -> getCustomTabActivityNavigationController().openCurrentUrlInBrowser(), - getEdgeToEdgeManager()); + getEdgeToEdgeManager(), + getAppHeaderCoordinator()); return mBaseCustomTabRootUiCoordinator; } + + private AppHeaderCoordinator getAppHeaderCoordinator() { + assert false : "This methos should be overridden via bytecode manipulation!"; + return null; + } } diff --git a/android/java/org/chromium/chrome/browser/customtabs/FullScreenCustomTabRootUiCoordinator.java b/android/java/org/chromium/chrome/browser/customtabs/FullScreenCustomTabRootUiCoordinator.java index 257c67b5ebd..a5f8b870b89 100644 --- a/android/java/org/chromium/chrome/browser/customtabs/FullScreenCustomTabRootUiCoordinator.java +++ b/android/java/org/chromium/chrome/browser/customtabs/FullScreenCustomTabRootUiCoordinator.java @@ -6,6 +6,7 @@ package org.chromium.chrome.browser.customtabs; import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatActivity; import org.chromium.base.supplier.ObservableSupplier; @@ -36,6 +37,7 @@ import org.chromium.chrome.browser.ui.appmenu.AppMenuDelegate; import org.chromium.chrome.browser.ui.edge_to_edge.EdgeToEdgeController; import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager; import org.chromium.chrome.browser.ui.system.StatusBarColorController.StatusBarColorProvider; +import org.chromium.components.browser_ui.desktop_windowing.DesktopWindowStateManager; import org.chromium.components.browser_ui.edge_to_edge.EdgeToEdgeManager; import org.chromium.components.browser_ui.widget.MenuOrKeyboardActionController; import org.chromium.ui.base.ActivityWindowAndroid; @@ -82,7 +84,8 @@ public class FullScreenCustomTabRootUiCoordinator extends BaseCustomTabRootUiCoo @NonNull Supplier minimizeDelegateSupplier, @NonNull Supplier featureOverridesManagerSupplier, @NonNull Runnable openInBrowserRunnable, - @NonNull EdgeToEdgeManager edgeToEdgeManager) { + @NonNull EdgeToEdgeManager edgeToEdgeManager, + @Nullable DesktopWindowStateManager desktopWindowStateManager) { super( activity, shareDelegateSupplier, @@ -119,7 +122,8 @@ public class FullScreenCustomTabRootUiCoordinator extends BaseCustomTabRootUiCoo minimizeDelegateSupplier, featureOverridesManagerSupplier, openInBrowserRunnable, - edgeToEdgeManager); + edgeToEdgeManager, + desktopWindowStateManager); } @Override diff --git a/android/javatests/org/chromium/chrome/browser/BytecodeTest.java b/android/javatests/org/chromium/chrome/browser/BytecodeTest.java index b6272fdcb0e..3245b56931b 100644 --- a/android/javatests/org/chromium/chrome/browser/BytecodeTest.java +++ b/android/javatests/org/chromium/chrome/browser/BytecodeTest.java @@ -138,6 +138,7 @@ import org.chromium.chrome.browser.toolbar.top.ToolbarControlContainer; import org.chromium.chrome.browser.toolbar.top.ToolbarLayout; import org.chromium.chrome.browser.ui.appmenu.AppMenuBlocker; import org.chromium.chrome.browser.ui.appmenu.AppMenuDelegate; +import org.chromium.chrome.browser.ui.desktop_windowing.AppHeaderCoordinator; import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager; import org.chromium.chrome.browser.ui.native_page.NativePageHost; import org.chromium.chrome.browser.ui.system.StatusBarColorController; @@ -908,6 +909,12 @@ public class BytecodeTest { void.class, boolean.class, boolean.class)); + Assert.assertTrue( + methodExists( + "org/chromium/chrome/browser/customtabs/BaseCustomTabActivity", + "getAppHeaderCoordinator", + MethodModifier.REGULAR, + AppHeaderCoordinator.class)); } @Test diff --git a/build/android/bytecode/java/org/brave/bytecode/BraveBaseCustomTabActivityClassAdapter.java b/build/android/bytecode/java/org/brave/bytecode/BraveBaseCustomTabActivityClassAdapter.java index c921c609da0..aa115183b00 100644 --- a/build/android/bytecode/java/org/brave/bytecode/BraveBaseCustomTabActivityClassAdapter.java +++ b/build/android/bytecode/java/org/brave/bytecode/BraveBaseCustomTabActivityClassAdapter.java @@ -33,5 +33,8 @@ public class BraveBaseCustomTabActivityClassAdapter extends BraveClassVisitor { deleteField(sFullScreenCustomTabActivityClassName, "mCustomTabFeatureOverridesManager"); makeProtectedField(sBaseCustomTabActivityClassName, "mCustomTabFeatureOverridesManager"); + + deleteMethod(sFullScreenCustomTabActivityClassName, "getAppHeaderCoordinator"); + makePublicMethod(sBaseCustomTabActivityClassName, "getAppHeaderCoordinator"); } }