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 @@ - - - - - - - - - - - - - - - - - - + + + + + + + + - + + + +