Skip to content

Commit 5a7e0d6

Browse files
committed
Use the feature flag to decide what omnibar layout to use
1 parent 06edac8 commit 5a7e0d6

File tree

7 files changed

+44
-6
lines changed

7 files changed

+44
-6
lines changed

app/src/main/java/com/duckduckgo/app/browser/BrowserTabFragment.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1017,7 +1017,11 @@ class BrowserTabFragment :
10171017
override fun onActivityCreated(savedInstanceState: Bundle?) {
10181018
super.onActivityCreated(savedInstanceState)
10191019

1020-
omnibar = Omnibar(settingsDataStore.omnibarPosition, binding)
1020+
omnibar = Omnibar(
1021+
omnibarPosition = settingsDataStore.omnibarPosition,
1022+
binding = binding,
1023+
isUnifiedOmnibarEnabled = androidBrowserConfigFeature.useUnifiedOmnibarLayout().isEnabled(),
1024+
)
10211025

10221026
webViewContainer = binding.webViewContainer
10231027
configureObservers()

app/src/main/java/com/duckduckgo/app/browser/omnibar/Omnibar.kt

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,20 @@ import logcat.logcat
7171
class Omnibar(
7272
val omnibarPosition: OmnibarPosition,
7373
private val binding: FragmentBrowserTabBinding,
74+
isUnifiedOmnibarEnabled: Boolean,
7475
) {
7576
init {
77+
if (isUnifiedOmnibarEnabled) {
78+
setupUnifiedOmnibar()
79+
} else {
80+
setupSingleOmnibar()
81+
}
82+
}
83+
84+
private fun setupSingleOmnibar() {
85+
binding.rootView.removeView(binding.unifiedOmnibarLayoutTop)
86+
binding.rootView.removeView(binding.unifiedOmnibarLayoutBottom)
87+
7688
when (omnibarPosition) {
7789
OmnibarPosition.TOP -> {
7890
// remove bottom variant
@@ -86,8 +98,25 @@ class Omnibar(
8698
adjustCoordinatorLayoutBehaviorForBottomOmnibar()
8799
}
88100
}
89-
binding.rootView.removeView(binding.unifiedOmnibarLayoutTop)
90-
binding.rootView.removeView(binding.unifiedOmnibarLayoutBottom)
101+
}
102+
103+
private fun setupUnifiedOmnibar() {
104+
binding.rootView.removeView(binding.singleOmnibarLayoutTop)
105+
binding.rootView.removeView(binding.singleOmnibarLayoutBottom)
106+
107+
when (omnibarPosition) {
108+
OmnibarPosition.TOP -> {
109+
// remove bottom variant
110+
binding.rootView.removeView(binding.unifiedOmnibarLayoutBottom)
111+
}
112+
113+
OmnibarPosition.BOTTOM -> {
114+
// remove top variant
115+
binding.rootView.removeView(binding.unifiedOmnibarLayoutTop)
116+
117+
adjustCoordinatorLayoutBehaviorForBottomOmnibar()
118+
}
119+
}
91120
}
92121

93122
val omnibarView: OmnibarView by lazy {

app/src/main/java/com/duckduckgo/app/browser/omnibar/OmnibarLayout.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -293,7 +293,7 @@ open class OmnibarLayout @JvmOverloads constructor(
293293
}
294294
}
295295

296-
open var omnibarPosition: OmnibarPosition = OmnibarPosition.TOP
296+
override val omnibarPosition: OmnibarPosition = OmnibarPosition.TOP
297297

298298
private val smoothProgressAnimator by lazy { SmoothProgressAnimator(pageLoadingIndicator) }
299299

app/src/main/java/com/duckduckgo/app/browser/omnibar/OmnibarView.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,12 @@ import com.duckduckgo.app.browser.omnibar.model.ItemPressedListener
2727
import com.duckduckgo.app.browser.omnibar.model.LogoClickListener
2828
import com.duckduckgo.app.browser.omnibar.model.StateChange
2929
import com.duckduckgo.app.browser.omnibar.model.TextListener
30+
import com.duckduckgo.browser.ui.omnibar.OmnibarPosition
3031
import com.duckduckgo.common.ui.view.KeyboardAwareEditText
3132
import kotlinx.coroutines.flow.Flow
3233

3334
interface OmnibarView {
35+
val omnibarPosition: OmnibarPosition
3436
var isScrollingEnabled: Boolean
3537
val isEditing: Boolean
3638
val isEditingFlow: Flow<Boolean>

app/src/main/java/com/duckduckgo/app/browser/omnibar/SingleOmnibarLayout.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,8 @@ class SingleOmnibarLayout @JvmOverloads constructor(
8989

9090
private var singleOmnibarItemPressedListener: OmnibarItemPressedListener? = null
9191

92+
override val omnibarPosition: OmnibarPosition
93+
9294
init {
9395
val attr = context.theme.obtainStyledAttributes(attrs, R.styleable.SingleOmnibarLayout, defStyle, 0)
9496
omnibarPosition = OmnibarPosition.entries[attr.getInt(R.styleable.SingleOmnibarLayout_omnibarPosition, 0)]

app/src/main/java/com/duckduckgo/app/browser/omnibar/UnifiedOmnibarLayout.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,7 @@ class UnifiedOmnibarLayout @JvmOverloads constructor(
237237

238238
private var focusAnimator: ValueAnimator? = null
239239

240-
val omnibarPosition: OmnibarPosition
240+
override val omnibarPosition: OmnibarPosition
241241

242242
init {
243243
inflate(context, R.layout.view_omnibar, this)

app/src/main/java/com/duckduckgo/app/browser/webview/BrowserContainerLayoutBehavior.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import androidx.coordinatorlayout.widget.CoordinatorLayout.Behavior
2424
import androidx.core.view.isGone
2525
import com.duckduckgo.app.browser.navigation.bar.view.BrowserNavigationBarView
2626
import com.duckduckgo.app.browser.omnibar.OmnibarLayout
27+
import com.duckduckgo.app.browser.omnibar.OmnibarView
2728
import com.duckduckgo.browser.ui.omnibar.OmnibarPosition
2829
import com.google.android.material.appbar.AppBarLayout
2930
import com.google.android.material.appbar.AppBarLayout.ScrollingViewBehavior
@@ -118,4 +119,4 @@ private fun offsetByBottomElementVisibleHeight(
118119

119120
private fun View.isBrowserNavigationBar(): Boolean = this is BrowserNavigationBarView
120121

121-
private fun View.isBottomOmnibar(): Boolean = this is OmnibarLayout && this.omnibarPosition == OmnibarPosition.BOTTOM
122+
private fun View.isBottomOmnibar(): Boolean = this is OmnibarView && this.omnibarPosition == OmnibarPosition.BOTTOM

0 commit comments

Comments
 (0)