Skip to content

Commit 0941155

Browse files
authored
Split Omnibar: Omnibar layout refactoring (#6983)
Task/Issue URL: https://app.asana.com/1/137249556945/project/1207418217763355/task/1211565479656354 ### Description This PR refactors the `OmnibarLayout` and `SingleOmnibarLayout`. `OmnibarLayout` was renamed to `LegacyOmnibarLayout` and a new `OmnibarLayout` is a unified, merged version of `OmnibarLayout` and `SingleOmnibarLayout`. Thew new omnibar is guarded by a `useUnifiedOmnibarLayout` feature flag. To make that work, an `OminbarView` interface needed to be extracted, which is now used within the `Omnibar` class. Depending on the flag value, either the old `LegacyOmnibarLayout ` or the new `OmnibarLayout` is used. The feature flag is enabled by default. Also, some of the interfaces from `OmnibarLayout` had to be extracted (`StateChange`, `Decoration`) to avoid duplication. ### Steps to test this PR _FF enabled_ - [x] Verify that onboarding highlighting works - [x] Verify all buttons work - [x] Verify tab swiping works - [x] Verify tracker animations work - [x] Verify the cookies animations work - [x] Verify that omnibar hiding on scroll works _FF disabled_ - [x] Disable the `useUnifiedOmnibarLayout` FF in the internal settings - [x] Verify that onboarding highlighting works - [x] Verify all buttons work - [x] Verify tab swiping works - [x] Verify tracker animations work - [x] Verify the cookies animations work - [x] Verify that omnibar hiding on scroll works
1 parent d15b95b commit 0941155

File tree

18 files changed

+2031
-217
lines changed

18 files changed

+2031
-217
lines changed

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -767,7 +767,7 @@ open class BrowserActivity : DuckDuckGoActivity() {
767767
val anchorView =
768768
when (settingsDataStore.omnibarPosition) {
769769
TOP -> null
770-
BOTTOM -> currentTab?.getOmnibar()?.newOmnibar?.toolbar ?: binding.fragmentContainer
770+
BOTTOM -> currentTab?.getOmnibar()?.omnibarView?.toolbar ?: binding.fragmentContainer
771771
}
772772
DefaultSnackbar(
773773
parentView = binding.fragmentContainer,
@@ -868,7 +868,7 @@ open class BrowserActivity : DuckDuckGoActivity() {
868868
launchNewDuckChat(url, withTransition)
869869
}
870870

871-
currentTab?.getOmnibar()?.newOmnibar?.omnibarTextInput?.let {
871+
currentTab?.getOmnibar()?.omnibarView?.omnibarTextInput?.let {
872872
hideKeyboard(it)
873873
}
874874
}

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

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,11 @@ import com.duckduckgo.app.browser.model.LongPressTarget
143143
import com.duckduckgo.app.browser.navigation.bar.view.BrowserNavigationBarObserver
144144
import com.duckduckgo.app.browser.newtab.NewTabPageProvider
145145
import com.duckduckgo.app.browser.omnibar.Omnibar
146+
import com.duckduckgo.app.browser.omnibar.Omnibar.FindInPageListener
147+
import com.duckduckgo.app.browser.omnibar.Omnibar.ItemPressedListener
148+
import com.duckduckgo.app.browser.omnibar.Omnibar.LogoClickListener
146149
import com.duckduckgo.app.browser.omnibar.Omnibar.OmnibarTextState
150+
import com.duckduckgo.app.browser.omnibar.Omnibar.TextListener
147151
import com.duckduckgo.app.browser.omnibar.Omnibar.ViewMode
148152
import com.duckduckgo.app.browser.omnibar.OmnibarItemPressedListener
149153
import com.duckduckgo.app.browser.omnibar.QueryOrigin
@@ -1012,7 +1016,11 @@ class BrowserTabFragment :
10121016
override fun onActivityCreated(savedInstanceState: Bundle?) {
10131017
super.onActivityCreated(savedInstanceState)
10141018

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

10171025
webViewContainer = binding.webViewContainer
10181026
configureObservers()
@@ -1100,7 +1108,7 @@ class BrowserTabFragment :
11001108

11011109
private fun configureLogoClickListener() {
11021110
omnibar.configureLogoClickListener(
1103-
object : Omnibar.LogoClickListener {
1111+
object : LogoClickListener {
11041112
override fun onClick(url: String) {
11051113
viewModel.onDynamicLogoClicked(url)
11061114
}
@@ -2952,7 +2960,7 @@ class BrowserTabFragment :
29522960

29532961
private fun configureFindInPage() {
29542962
omnibar.configureFindInPage(
2955-
object : Omnibar.FindInPageListener {
2963+
object : FindInPageListener {
29562964
override fun onFocusChanged(
29572965
hasFocus: Boolean,
29582966
query: String,
@@ -2983,7 +2991,7 @@ class BrowserTabFragment :
29832991

29842992
private fun configureItemPressedListener() {
29852993
omnibar.configureItemPressedListeners(
2986-
object : Omnibar.ItemPressedListener {
2994+
object : ItemPressedListener {
29872995
override fun onTabsButtonPressed() {
29882996
this@BrowserTabFragment.onTabsButtonPressed()
29892997
}
@@ -3025,6 +3033,10 @@ class BrowserTabFragment :
30253033
val isNtp = omnibar.viewMode == ViewMode.NewTab
30263034
onOmnibarDuckChatPressed(query = omnibar.getText(), hasFocus = hasFocus, isNtp = isNtp)
30273035
}
3036+
3037+
override fun onBackButtonPressed() {
3038+
hideKeyboard()
3039+
}
30283040
},
30293041
)
30303042
omnibar.configureOmnibarItemPressedListeners(
@@ -3038,7 +3050,7 @@ class BrowserTabFragment :
30383050

30393051
private fun configureOmnibarTextInput() {
30403052
omnibar.addTextListener(
3041-
object : Omnibar.TextListener {
3053+
object : TextListener {
30423054
override fun onFocusChanged(
30433055
hasFocus: Boolean,
30443056
query: String,

0 commit comments

Comments
 (0)