From a36f35eebdc07b6f6c6af0557768e551268d509f Mon Sep 17 00:00:00 2001 From: t-p-white Date: Thu, 1 Feb 2024 11:36:01 +0000 Subject: [PATCH] Bug 1813875 - Prevent the inherited theming implementation being applied to Custom Tab views --- .../java/org/mozilla/fenix/HomeActivity.kt | 18 +++++++++++++----- .../fenix/browser/BaseBrowserFragment.kt | 13 ++++++++++--- 2 files changed, 23 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/org/mozilla/fenix/HomeActivity.kt b/app/src/main/java/org/mozilla/fenix/HomeActivity.kt index 8ea4a4d8e..659c832c5 100644 --- a/app/src/main/java/org/mozilla/fenix/HomeActivity.kt +++ b/app/src/main/java/org/mozilla/fenix/HomeActivity.kt @@ -233,8 +233,10 @@ open class HomeActivity : LocaleAwareAppCompatActivity(), NavHostActivity { // There is disk read violations on some devices such as samsung and pixel for android 9/10 components.strictMode.resetAfter(StrictMode.allowThreadDiskReads()) { - // Theme setup should always be called before super.onCreate - setupThemeAndBrowsingMode(getModeFromIntentOrLastKnown(intent)) + // Browsing mode & theme setup should always be called before super.onCreate. + setupBrowsingMode(getModeFromIntentOrLastKnown(intent)) + setupTheme() + super.onCreate(savedInstanceState) } @@ -870,12 +872,18 @@ open class HomeActivity : LocaleAwareAppCompatActivity(), NavHostActivity { return false } - private fun setupThemeAndBrowsingMode(mode: BrowsingMode) { + private fun setupBrowsingMode(mode: BrowsingMode) { settings().lastKnownMode = mode browsingModeManager = createBrowsingModeManager(mode) + } + + private fun setupTheme() { themeManager = createThemeManager() - themeManager.setActivityTheme(this) - themeManager.applyStatusBarTheme(this) + // ExternalAppBrowserActivity handles it's own theming as it can be customized. + if (this !is ExternalAppBrowserActivity) { + themeManager.setActivityTheme(this) + themeManager.applyStatusBarTheme(this) + } } // Stop active media when activity is destroyed. diff --git a/app/src/main/java/org/mozilla/fenix/browser/BaseBrowserFragment.kt b/app/src/main/java/org/mozilla/fenix/browser/BaseBrowserFragment.kt index c90ccb91b..b6fbe9a52 100644 --- a/app/src/main/java/org/mozilla/fenix/browser/BaseBrowserFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/browser/BaseBrowserFragment.kt @@ -13,7 +13,6 @@ import android.os.Build import android.os.Bundle import android.provider.Settings import android.util.Log -import android.view.Gravity import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -138,6 +137,7 @@ import org.mozilla.fenix.components.toolbar.ToolbarIntegration import org.mozilla.fenix.components.toolbar.interactor.BrowserToolbarInteractor import org.mozilla.fenix.components.toolbar.interactor.DefaultBrowserToolbarInteractor import org.mozilla.fenix.crashes.CrashContentIntegration +import org.mozilla.fenix.customtabs.ExternalAppBrowserActivity import org.mozilla.fenix.databinding.FragmentBrowserBinding import org.mozilla.fenix.downloads.DynamicDownloadDialog import org.mozilla.fenix.downloads.FirstPartyDownloadDialog @@ -266,7 +266,11 @@ abstract class BaseBrowserFragment : _binding = FragmentBrowserBinding.inflate(inflater, container, false) val activity = activity as HomeActivity - activity.themeManager.applyStatusBarTheme(activity) + // ExternalAppBrowserActivity handles it's own theming as it can be customized. + if (activity !is ExternalAppBrowserActivity) { + activity.themeManager.applyStatusBarTheme(activity) + } + val originalContext = ActivityContextWrapper.getOriginalContext(activity) binding.engineView.setActivityContext(originalContext) @@ -1567,7 +1571,10 @@ abstract class BaseBrowserFragment : activity?.exitImmersiveMode() (view as? SwipeGestureLayout)?.isSwipeEnabled = true (activity as? HomeActivity)?.let { activity -> - activity.themeManager.applyStatusBarTheme(activity) + // ExternalAppBrowserActivity handles it's own theming as it can be customized. + if (activity !is ExternalAppBrowserActivity) { + activity.themeManager.applyStatusBarTheme(activity) + } } if (webAppToolbarShouldBeVisible) { browserToolbarView.view.isVisible = true