From 9d092df86bed4fd8abd6c0dc6fe4fefbb30c4ed0 Mon Sep 17 00:00:00 2001 From: Roger Yang Date: Wed, 2 Dec 2020 11:40:44 -0500 Subject: [PATCH] [fenix] Closes https://github.com/mozilla-mobile/fenix/issues/16603: Disable pull down refresh when activity is in immersive mode (https://github.com/mozilla-mobile/fenix/pull/16793) --- .../fenix/browser/BaseBrowserFragment.kt | 11 ++++++++-- .../fenix/browser/BrowserFragmentTest.kt | 21 +++++++++++++++++++ 2 files changed, 30 insertions(+), 2 deletions(-) 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 de85e69f4..1fd65872d 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 8c7ea5193..9a0fc2e4b 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()