[Android] New argument at BottomControls***.ctor classes - browserControlsVisibilityDelegate

- new argument at BottomControlsMediator.ctor - browserControlsVisibilityDelegate
- new argment at BottomControlsCoordinator.ctor - browserControlsVisibilityDelegate

Related Chromium change:
https://source.chromium.org/chromium/chromium/src/+/d813d2e1ad66f8954e2e1da0821fa55eb9a21a70

	Force browser controls to show up when creating new tab group

	When tab group is created via long press context menu, it'll triggers SimpleAnimationLayout then shows the tab group. This flow will detach the current tab and add it back; during this process, the new browser controls height, which is changed due to tab group UI being added, does not dispatched to the render. This causes a bug when the tab is reattached and becomes interactable, the offset read from TabBrowserControlsOffsetHelper is stale, leaving the tab group UI scene layer on the screen.

	This CL work around this by forcing the browser controls to be visible when the tab group UI becomes from hidden to visible. This has no impact to flows other than context menu -> "open new tab in group", as switching tabs will force browser controls to show transiently already.

	Bug: 357398783
	Change-Id: I419b9303b033f0f621956952bc61c56a199fc338
	Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5809240
This commit is contained in:
AlexeyBarabash
2024-10-03 17:06:19 +01:00
committed by Claudio DeSouza
parent e63587a1df
commit 368896f522
4 changed files with 13 additions and 0 deletions
@@ -30,6 +30,7 @@ import org.chromium.chrome.browser.bookmarks.BookmarkModel;
import org.chromium.chrome.browser.brave_leo.BraveLeoActivity;
import org.chromium.chrome.browser.browser_controls.BottomControlsStacker;
import org.chromium.chrome.browser.browser_controls.BrowserControlsVisibilityManager;
import org.chromium.chrome.browser.browser_controls.BrowserStateBrowserControlsVisibilityDelegate;
import org.chromium.chrome.browser.compositor.CompositorViewHolder;
import org.chromium.chrome.browser.compositor.bottombar.ephemeraltab.EphemeralTabCoordinator;
import org.chromium.chrome.browser.compositor.layouts.LayoutManagerImpl;
@@ -294,6 +295,10 @@ public class BraveToolbarManager extends ToolbarManager {
mContentDelegateSupplier.set(mTabGroupUi);
BrowserStateBrowserControlsVisibilityDelegate controlsVisibilityDelegate =
mBrowserControlsVisibilityManager.getBrowserVisibilityDelegate();
assert controlsVisibilityDelegate != null;
mBottomControlsCoordinatorSupplier.set(
new BraveBottomControlsCoordinator(
mLayoutStateProviderSupplier,
@@ -317,6 +322,7 @@ public class BraveToolbarManager extends ToolbarManager {
mLayoutManager,
mCompositorViewHolder.getResourceManager(),
mBottomControlsStacker,
controlsVisibilityDelegate,
mFullscreenManager,
mEdgeToEdgeControllerSupplier,
mBottomControls,
@@ -21,6 +21,7 @@ import org.chromium.chrome.R;
import org.chromium.chrome.browser.ActivityTabProvider;
import org.chromium.chrome.browser.bookmarks.BookmarkModel;
import org.chromium.chrome.browser.browser_controls.BottomControlsStacker;
import org.chromium.chrome.browser.browser_controls.BrowserStateBrowserControlsVisibilityDelegate;
import org.chromium.chrome.browser.compositor.layouts.LayoutManagerImpl;
import org.chromium.chrome.browser.fullscreen.FullscreenManager;
import org.chromium.chrome.browser.layouts.LayoutManager;
@@ -68,6 +69,7 @@ public class BraveBottomControlsCoordinator extends BottomControlsCoordinator {
LayoutManager layoutManager,
ResourceManager resourceManager,
BottomControlsStacker controlsStacker,
BrowserStateBrowserControlsVisibilityDelegate browserControlsVisibilityDelegate,
FullscreenManager fullscreenManager,
ObservableSupplier<EdgeToEdgeController> edgeToEdgeControllerSupplier,
ScrollingBottomViewResourceFrameLayout root,
@@ -82,6 +84,7 @@ public class BraveBottomControlsCoordinator extends BottomControlsCoordinator {
layoutManager,
resourceManager,
controlsStacker,
browserControlsVisibilityDelegate,
fullscreenManager,
edgeToEdgeControllerSupplier,
root,