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 de85e69f45..1fd65872d8 100644 --- a/app/src/main/java/org/mozilla/fenix/browser/BaseBrowserFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/browser/BaseBrowserFragment.kt @@ -644,8 +644,8 @@ abstract class BaseBrowserFragment : Fragment(), UserInteractionHandler, .collect { tab -> pipModeChanged(tab) } } - view.swipeRefresh.isEnabled = - FeatureFlags.pullToRefreshEnabled && context.settings().isPullToRefreshEnabledInBrowser + view.swipeRefresh.isEnabled = shouldPullToRefreshBeEnabled() + if (view.swipeRefresh.isEnabled) { val primaryTextColor = ThemeManager.resolveAttribute(R.attr.primaryText, context) @@ -771,6 +771,13 @@ abstract class BaseBrowserFragment : Fragment(), UserInteractionHandler, browserToolbarView.expand() } + @VisibleForTesting + internal fun shouldPullToRefreshBeEnabled(): Boolean { + return FeatureFlags.pullToRefreshEnabled && + requireContext().settings().isPullToRefreshEnabledInBrowser && + !(requireActivity() as HomeActivity).isImmersive + } + private fun initializeEngineView(toolbarHeight: Int) { val context = requireContext() diff --git a/app/src/test/java/org/mozilla/fenix/browser/BrowserFragmentTest.kt b/app/src/test/java/org/mozilla/fenix/browser/BrowserFragmentTest.kt index 8c7ea51932..9a0fc2e4b5 100644 --- a/app/src/test/java/org/mozilla/fenix/browser/BrowserFragmentTest.kt +++ b/app/src/test/java/org/mozilla/fenix/browser/BrowserFragmentTest.kt @@ -38,6 +38,7 @@ import org.mozilla.fenix.R import org.mozilla.fenix.components.toolbar.BrowserToolbarView import org.mozilla.fenix.ext.application import org.mozilla.fenix.ext.components +import org.mozilla.fenix.ext.settings import org.mozilla.fenix.helpers.FenixRobolectricTestRunner import org.mozilla.fenix.onboarding.FenixOnboarding @@ -284,6 +285,26 @@ class BrowserFragmentTest { verify(exactly = 0) { onboarding.finish() } } + @Test + fun `WHEN isPullToRefreshEnabledInBrowser is disabled THEN pull down refresh is disabled`() { + every { homeActivity.isImmersive } returns false + every { context.settings().isPullToRefreshEnabledInBrowser } returns true + assert(browserFragment.shouldPullToRefreshBeEnabled()) + + every { context.settings().isPullToRefreshEnabledInBrowser } returns false + assert(!browserFragment.shouldPullToRefreshBeEnabled()) + } + + @Test + fun `WHEN in immersive mode THEN pull down refresh is disabled`() { + every { homeActivity.isImmersive } returns false + every { context.settings().isPullToRefreshEnabledInBrowser } returns true + assert(browserFragment.shouldPullToRefreshBeEnabled()) + + every { homeActivity.isImmersive } returns true + assert(!browserFragment.shouldPullToRefreshBeEnabled()) + } + private fun addAndSelectTab(tab: TabSessionState) { store.dispatch(TabListAction.AddTabAction(tab)).joinBlocking() store.dispatch(TabListAction.SelectTabAction(tab.id)).joinBlocking()