diff --git a/android/java/org/chromium/chrome/browser/app/BraveActivity.java b/android/java/org/chromium/chrome/browser/app/BraveActivity.java index 0579f4ab5a75..a71eadaf20ab 100644 --- a/android/java/org/chromium/chrome/browser/app/BraveActivity.java +++ b/android/java/org/chromium/chrome/browser/app/BraveActivity.java @@ -1283,6 +1283,13 @@ public void dismissShieldsTooltip() { } } + public void dismissCookieConsent() { + BraveToolbarLayoutImpl layout = getBraveToolbarLayout(); + if (layout != null) { + layout.dismissCookieConsent(); + } + } + public void openRewardsPanel() { BraveToolbarLayoutImpl layout = getBraveToolbarLayout(); if (layout != null) { diff --git a/android/java/org/chromium/chrome/browser/toolbar/BraveToolbarManager.java b/android/java/org/chromium/chrome/browser/toolbar/BraveToolbarManager.java index 26d2a172e4b8..64c8f5ea0a79 100644 --- a/android/java/org/chromium/chrome/browser/toolbar/BraveToolbarManager.java +++ b/android/java/org/chromium/chrome/browser/toolbar/BraveToolbarManager.java @@ -25,6 +25,7 @@ import org.chromium.base.supplier.Supplier; import org.chromium.chrome.R; import org.chromium.chrome.browser.ActivityTabProvider; +import org.chromium.chrome.browser.app.BraveActivity; import org.chromium.chrome.browser.app.ChromeActivity; import org.chromium.chrome.browser.app.tab_activity_glue.TabReparentingController; import org.chromium.chrome.browser.back_press.BackPressManager; @@ -40,6 +41,7 @@ import org.chromium.chrome.browser.homepage.HomepageManager; import org.chromium.chrome.browser.identity_disc.IdentityDiscController; import org.chromium.chrome.browser.layouts.LayoutStateProvider; +import org.chromium.chrome.browser.layouts.LayoutType; import org.chromium.chrome.browser.lifecycle.ActivityLifecycleDispatcher; import org.chromium.chrome.browser.merchant_viewer.MerchantTrustSignalsCoordinator; import org.chromium.chrome.browser.night_mode.NightModeStateProvider; @@ -114,6 +116,8 @@ public class BraveToolbarManager extends ToolbarManager { private TabCreatorManager mTabCreatorManager; private SnackbarManager mSnackbarManager; private TabObscuringHandler mTabObscuringHandler; + private LayoutStateProvider.LayoutStateObserver mLayoutStateObserver; + private LayoutStateProvider mLayoutStateProvider; // Own members. private boolean mIsBottomToolbarVisible; @@ -197,6 +201,24 @@ public BraveToolbarManager(AppCompatActivity activity, BrowserControlsSizer cont } }; HomepageManager.getInstance().addListener(mBraveHomepageStateListener); + mLayoutStateProviderSupplier.onAvailable( + mCallbackController.makeCancelable(this::setLayoutStateProvider)); + } + + private void setLayoutStateProvider(LayoutStateProvider layoutStateProvider) { + mLayoutStateObserver = new LayoutStateProvider.LayoutStateObserver() { + @Override + public void onStartedShowing(@LayoutType int layoutType, boolean showToolbar) { + if (layoutType == LayoutType.TAB_SWITCHER) { + BraveActivity braveActivity = BraveActivity.getBraveActivity(); + if (braveActivity != null) { + braveActivity.dismissCookieConsent(); + } + } + } + }; + mLayoutStateProvider = layoutStateProvider; + mLayoutStateProvider.addObserver(mLayoutStateObserver); } @Override @@ -287,8 +309,11 @@ public void initializeWithNative(LayoutManagerImpl layoutManager, @Override public void destroy() { super.destroy(); - HomepageManager.getInstance().removeListener(mBraveHomepageStateListener); + if (mLayoutStateProvider != null) { + mLayoutStateProvider.removeObserver(mLayoutStateObserver); + mLayoutStateProvider = null; + } } protected void onOrientationChange(int newOrientation) { diff --git a/android/java/org/chromium/chrome/browser/toolbar/top/BraveToolbarLayoutImpl.java b/android/java/org/chromium/chrome/browser/toolbar/top/BraveToolbarLayoutImpl.java index a153e614ffc0..78ce6ac14686 100644 --- a/android/java/org/chromium/chrome/browser/toolbar/top/BraveToolbarLayoutImpl.java +++ b/android/java/org/chromium/chrome/browser/toolbar/top/BraveToolbarLayoutImpl.java @@ -102,6 +102,7 @@ import org.chromium.chrome.browser.shields.BraveShieldsUtils; import org.chromium.chrome.browser.shields.CookieListOptInServiceFactory; import org.chromium.chrome.browser.tab.Tab; +import org.chromium.chrome.browser.tab.TabHidingType; import org.chromium.chrome.browser.tab.TabImpl; import org.chromium.chrome.browser.tab.TabSelectionType; import org.chromium.chrome.browser.tabmodel.TabModelSelector; @@ -417,6 +418,11 @@ public void onShown(Tab tab, @TabSelectionType int type) { } } + @Override + public void onHidden(Tab tab, @TabHidingType int reason) { + dismissCookieConsent(); + } + @Override public void onPageLoadStarted(Tab tab, GURL url) { showWalletIcon(false); @@ -701,6 +707,13 @@ public void dismissShieldsTooltip() { } } + public void dismissCookieConsent() { + if (mCookieConsentTooltip != null && mCookieConsentTooltip.isShowing()) { + mCookieConsentTooltip.dismiss(); + mCookieConsentTooltip = null; + } + } + public void reopenShieldsPanel() { if (mBraveShieldsHandler != null && mBraveShieldsHandler.isShowing()) { mBraveShieldsHandler.hideBraveShieldsMenu();