Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
9c5cf07
Create a new UnifiedOmnibarLayout and ViewModel
0nko Oct 15, 2025
d70d505
Rename newOmnibar to omnibarLayout
0nko Oct 20, 2025
4bbd4a7
Add new ViewState params for split omnibar
0nko Oct 20, 2025
bc3a320
Add OmnibarType and type resolver
0nko Oct 20, 2025
ddb454a
Merge multiple item press listeners
0nko Oct 20, 2025
907c74f
Refactor the omnibar position rendering to use the ViewState parameter
0nko Oct 20, 2025
97cbc7b
Replace old omnibar layouts and ViewModels with unified classes
0nko Oct 20, 2025
ab06f17
Add OmnibarDataStore
0nko Oct 20, 2025
192e770
Add back single omnibar
0nko Oct 22, 2025
7c05dea
Bring back OmnibarLayout and ViewModel
0nko Oct 22, 2025
3cb4beb
Add new unified layout
0nko Oct 22, 2025
e64f7d8
Extract Omnibar interfaces to avoid duplication
0nko Oct 22, 2025
c786633
Fix unit tests
0nko Oct 22, 2025
f169add
Revert "Add OmnibarDataStore"
0nko Oct 22, 2025
fa815e3
Clean up unified layout VM
0nko Oct 22, 2025
1f84942
Remove omnibar type resolver
0nko Oct 22, 2025
eb89ab1
Add a common OmnibarView interface for OmnibarLayout and UnifiedOmnib…
0nko Oct 22, 2025
26eed04
Optimize imports
0nko Oct 22, 2025
f7817f6
Add unified omnibar feature flag
0nko Oct 22, 2025
7a9989a
Add UnifiedLayoutViewModelTest
0nko Oct 22, 2025
e108e30
Rename the UnifiedOmnibarViewModel
0nko Oct 22, 2025
b88223e
Use the feature flag to decide what omnibar layout to use
0nko Oct 22, 2025
e32bb27
Fix the omnibar initialization
0nko Oct 22, 2025
92e186e
Revert some of the extracted interfaces
0nko Oct 22, 2025
dd67afd
Optimize imports
0nko Oct 22, 2025
a133282
Create a new LegacyOmnibarLayout
0nko Oct 27, 2025
425998c
Replace the UnifiedLayout classes with OmnibarLayout
0nko Oct 27, 2025
f213834
Remove the redundant LegacyOmnibarLayoutViewModel
0nko Oct 27, 2025
69f6484
Revert the change
0nko Oct 27, 2025
cbf6eb7
Remove unused variable
0nko Oct 27, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -767,7 +767,7 @@ open class BrowserActivity : DuckDuckGoActivity() {
val anchorView =
when (settingsDataStore.omnibarPosition) {
TOP -> null
BOTTOM -> currentTab?.getOmnibar()?.newOmnibar?.toolbar ?: binding.fragmentContainer
BOTTOM -> currentTab?.getOmnibar()?.omnibarView?.toolbar ?: binding.fragmentContainer
}
DefaultSnackbar(
parentView = binding.fragmentContainer,
Expand Down Expand Up @@ -868,7 +868,7 @@ open class BrowserActivity : DuckDuckGoActivity() {
launchNewDuckChat(url, withTransition)
}

currentTab?.getOmnibar()?.newOmnibar?.omnibarTextInput?.let {
currentTab?.getOmnibar()?.omnibarView?.omnibarTextInput?.let {
hideKeyboard(it)
}
}
Expand Down
22 changes: 17 additions & 5 deletions app/src/main/java/com/duckduckgo/app/browser/BrowserTabFragment.kt
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,11 @@ import com.duckduckgo.app.browser.model.LongPressTarget
import com.duckduckgo.app.browser.navigation.bar.view.BrowserNavigationBarObserver
import com.duckduckgo.app.browser.newtab.NewTabPageProvider
import com.duckduckgo.app.browser.omnibar.Omnibar
import com.duckduckgo.app.browser.omnibar.Omnibar.FindInPageListener
import com.duckduckgo.app.browser.omnibar.Omnibar.ItemPressedListener
import com.duckduckgo.app.browser.omnibar.Omnibar.LogoClickListener
import com.duckduckgo.app.browser.omnibar.Omnibar.OmnibarTextState
import com.duckduckgo.app.browser.omnibar.Omnibar.TextListener
import com.duckduckgo.app.browser.omnibar.Omnibar.ViewMode
import com.duckduckgo.app.browser.omnibar.OmnibarItemPressedListener
import com.duckduckgo.app.browser.omnibar.QueryOrigin
Expand Down Expand Up @@ -1012,7 +1016,11 @@ class BrowserTabFragment :
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)

omnibar = Omnibar(settingsDataStore.omnibarPosition, binding)
omnibar = Omnibar(
omnibarPosition = settingsDataStore.omnibarPosition,
binding = binding,
isUnifiedOmnibarEnabled = androidBrowserConfigFeature.useUnifiedOmnibarLayout().isEnabled(),
)

webViewContainer = binding.webViewContainer
configureObservers()
Expand Down Expand Up @@ -1100,7 +1108,7 @@ class BrowserTabFragment :

private fun configureLogoClickListener() {
omnibar.configureLogoClickListener(
object : Omnibar.LogoClickListener {
object : LogoClickListener {
override fun onClick(url: String) {
viewModel.onDynamicLogoClicked(url)
}
Expand Down Expand Up @@ -2952,7 +2960,7 @@ class BrowserTabFragment :

private fun configureFindInPage() {
omnibar.configureFindInPage(
object : Omnibar.FindInPageListener {
object : FindInPageListener {
override fun onFocusChanged(
hasFocus: Boolean,
query: String,
Expand Down Expand Up @@ -2983,7 +2991,7 @@ class BrowserTabFragment :

private fun configureItemPressedListener() {
omnibar.configureItemPressedListeners(
object : Omnibar.ItemPressedListener {
object : ItemPressedListener {
override fun onTabsButtonPressed() {
this@BrowserTabFragment.onTabsButtonPressed()
}
Expand Down Expand Up @@ -3025,6 +3033,10 @@ class BrowserTabFragment :
val isNtp = omnibar.viewMode == ViewMode.NewTab
onOmnibarDuckChatPressed(query = omnibar.getText(), hasFocus = hasFocus, isNtp = isNtp)
}

override fun onBackButtonPressed() {
hideKeyboard()
}
},
)
omnibar.configureOmnibarItemPressedListeners(
Expand All @@ -3038,7 +3050,7 @@ class BrowserTabFragment :

private fun configureOmnibarTextInput() {
omnibar.addTextListener(
object : Omnibar.TextListener {
object : TextListener {
override fun onFocusChanged(
hasFocus: Boolean,
query: String,
Expand Down
Loading
Loading