From bef98698cb7db00ebe90e5fa0f275bf17e5658ea Mon Sep 17 00:00:00 2001 From: Kainalu Hagiwara Date: Fri, 24 Jul 2020 09:42:01 -0700 Subject: [PATCH] For #12904 - Conditionally inflate SwipeGestureLayout in BaseBrowserFragment. Changing the root view of BaseBrowserFragment from a CoordinatorLayout to a SwipeGestureLayout has caused some regressions, particularly in snackbar behavior. Lets prevent those regressions from occuring in builds where the feature flag for gestures is off by only adding the SwipeGestureLayout when the feature flag is on. --- .../java/org/mozilla/fenix/FeatureFlags.kt | 4 +- .../fenix/browser/BaseBrowserFragment.kt | 8 +- .../mozilla/fenix/browser/BrowserFragment.kt | 5 +- .../res/layout/browser_gesture_wrapper.xml | 17 ++++ app/src/main/res/layout/fragment_browser.xml | 94 ++++++++----------- 5 files changed, 70 insertions(+), 58 deletions(-) create mode 100644 app/src/main/res/layout/browser_gesture_wrapper.xml diff --git a/app/src/main/java/org/mozilla/fenix/FeatureFlags.kt b/app/src/main/java/org/mozilla/fenix/FeatureFlags.kt index d37025e14..530d77be8 100644 --- a/app/src/main/java/org/mozilla/fenix/FeatureFlags.kt +++ b/app/src/main/java/org/mozilla/fenix/FeatureFlags.kt @@ -30,9 +30,9 @@ object FeatureFlags { val tabTray = Config.channel.isNightlyOrDebug /** - * Enables swipe on toolbar to switch tabs + * Enables gestures on the browser chrome that depend on a [SwipeGestureLayout] */ - val swipeToSwitchTabs = Config.channel.isNightlyOrDebug + val browserChromeGestures = Config.channel.isNightlyOrDebug /** * Enables viewing tab history 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 88e151f17..296769258 100644 --- a/app/src/main/java/org/mozilla/fenix/browser/BaseBrowserFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/browser/BaseBrowserFragment.kt @@ -168,7 +168,13 @@ abstract class BaseBrowserFragment : Fragment(), UserInteractionHandler, Session require(arguments != null) customTabSessionId = arguments?.getString(EXTRA_SESSION_ID) - val view = inflater.inflate(R.layout.fragment_browser, container, false) + val view = if (FeatureFlags.browserChromeGestures) { + inflater.inflate(R.layout.browser_gesture_wrapper, container, false).apply { + inflater.inflate(R.layout.fragment_browser, this as SwipeGestureLayout, true) + } + } else { + inflater.inflate(R.layout.fragment_browser, container, false) + } val activity = activity as HomeActivity activity.themeManager.applyStatusBarTheme(activity) diff --git a/app/src/main/java/org/mozilla/fenix/browser/BrowserFragment.kt b/app/src/main/java/org/mozilla/fenix/browser/BrowserFragment.kt index 9c4f33728..1fd155f63 100644 --- a/app/src/main/java/org/mozilla/fenix/browser/BrowserFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/browser/BrowserFragment.kt @@ -15,6 +15,7 @@ import androidx.core.content.ContextCompat import androidx.lifecycle.Observer import androidx.navigation.fragment.findNavController import com.google.android.material.snackbar.Snackbar +import kotlinx.android.synthetic.main.browser_gesture_wrapper.* import kotlinx.android.synthetic.main.fragment_browser.* import kotlinx.android.synthetic.main.fragment_browser.view.* import kotlinx.coroutines.ExperimentalCoroutinesApi @@ -74,7 +75,9 @@ class BrowserFragment : BaseBrowserFragment(), UserInteractionHandler { val components = context.components return super.initializeUI(view)?.also { - if (FeatureFlags.swipeToSwitchTabs) { + // We need to wrap this whole thing in an if here because gestureLayout will not exist + // if the feature flag is off + if (FeatureFlags.browserChromeGestures) { gestureLayout.addGestureListener( ToolbarGestureHandler( activity = requireActivity(), diff --git a/app/src/main/res/layout/browser_gesture_wrapper.xml b/app/src/main/res/layout/browser_gesture_wrapper.xml new file mode 100644 index 000000000..94f515687 --- /dev/null +++ b/app/src/main/res/layout/browser_gesture_wrapper.xml @@ -0,0 +1,17 @@ + + + + + + diff --git a/app/src/main/res/layout/fragment_browser.xml b/app/src/main/res/layout/fragment_browser.xml index 63e9fde8d..328f9bedd 100644 --- a/app/src/main/res/layout/fragment_browser.xml +++ b/app/src/main/res/layout/fragment_browser.xml @@ -2,66 +2,52 @@ - - - - - - - - - - - - - - - - - - + + + + + + + + - + + + +