Skip to content
This repository was archived by the owner on Feb 24, 2025. It is now read-only.

Commit 090b63a

Browse files
authored
iPad OS omnibar changes (#3960)
Task/Issue URL: https://app.asana.com/0/1204167627774280/1209377442082796 Tech Design URL: CC: **Description**: Change omnibar states on iPad OS
1 parent a8d3f05 commit 090b63a

File tree

2 files changed

+66
-24
lines changed

2 files changed

+66
-24
lines changed

DuckDuckGo/LargeOmniBarState.swift

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -27,16 +27,16 @@ struct LargeOmniBarState {
2727
let showBackButton: Bool = true
2828
let showForwardButton: Bool = true
2929
let showBookmarksButton: Bool = true
30-
let showAccessoryButton: Bool = false
30+
var showAccessoryButton: Bool { dependencies.isAIChatEnabledOnSettingsAndFeatureFlagOn }
3131
let clearTextOnStart = true
3232
let allowsTrackersAnimation = false
3333
let showPrivacyIcon = false
3434
let showBackground = false
3535
let showClear = false
3636
let showAbort = false
3737
let showRefresh = false
38-
let showMenu = false
39-
let showSettings = true
38+
var showMenu: Bool { dependencies.featureFlagger.isFeatureOn(.aiChatNewTabPage) ? true : false }
39+
var showSettings: Bool { dependencies.featureFlagger.isFeatureOn(.aiChatNewTabPage) ? false : true }
4040
let showCancel: Bool = false
4141
let showDismiss: Bool = false
4242
var name: String { return "Pad" + Type.name(self) }
@@ -69,16 +69,16 @@ struct LargeOmniBarState {
6969
let showBackButton: Bool = true
7070
let showForwardButton: Bool = true
7171
let showBookmarksButton: Bool = true
72-
let showAccessoryButton: Bool = false
72+
var showAccessoryButton: Bool { dependencies.isAIChatEnabledOnSettingsAndFeatureFlagOn }
7373
let clearTextOnStart = false
7474
let allowsTrackersAnimation = false
7575
let showPrivacyIcon = false
7676
let showBackground = false
7777
let showClear = true
7878
let showAbort = false
7979
let showRefresh = false
80-
let showMenu = false
81-
let showSettings = true
80+
var showMenu: Bool { dependencies.featureFlagger.isFeatureOn(.aiChatNewTabPage) ? true : false }
81+
var showSettings: Bool { dependencies.featureFlagger.isFeatureOn(.aiChatNewTabPage) ? false : true }
8282
let showCancel: Bool = false
8383
let showDismiss: Bool = false
8484
var name: String { return "Pad" + Type.name(self) }
@@ -103,7 +103,7 @@ struct LargeOmniBarState {
103103
let showBackButton: Bool = true
104104
let showForwardButton: Bool = true
105105
let showBookmarksButton: Bool = true
106-
let showAccessoryButton: Bool = false
106+
var showAccessoryButton: Bool { dependencies.isAIChatEnabledOnSettingsAndFeatureFlagOn }
107107
let clearTextOnStart = true
108108
let allowsTrackersAnimation = false
109109
let showSearchLoupe = true
@@ -112,8 +112,8 @@ struct LargeOmniBarState {
112112
let showClear = false
113113
let showAbort = false
114114
let showRefresh = false
115-
let showMenu = false
116-
let showSettings = true
115+
var showMenu: Bool { dependencies.featureFlagger.isFeatureOn(.aiChatNewTabPage) ? true : false }
116+
var showSettings: Bool { dependencies.featureFlagger.isFeatureOn(.aiChatNewTabPage) ? false : true }
117117
let showCancel: Bool = false
118118
let showDismiss: Bool = false
119119
var name: String { return "Pad" + Type.name(self) }

DuckDuckGoTests/LargeOmniBarStateTests.swift

Lines changed: 57 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ class LargeOmniBarStateTests: XCTestCase {
2727
let enabledVoiceSearchHelper = MockVoiceSearchHelper(isSpeechRecognizerAvailable: true)
2828
let disabledVoiceSearchHelper = MockVoiceSearchHelper(isSpeechRecognizerAvailable: false)
2929
var mockFeatureFlagger: MockFeatureFlagger!
30+
var mockAIChatSettingsEnbaled = MockAIChatSettingsProvider(isAIChatAddressBarUserSettingsEnabled: true, isAIChatBrowsingMenuUserSettingsEnabled: true)
3031

3132
override func setUp() {
3233
super.setUp()
@@ -44,35 +45,75 @@ class LargeOmniBarStateTests: XCTestCase {
4445
XCTAssertFalse(testee.showBackground)
4546
XCTAssertFalse(testee.showPrivacyIcon)
4647
XCTAssertFalse(testee.showClear)
47-
XCTAssertFalse(testee.showMenu)
48-
XCTAssertTrue(testee.showSettings)
48+
XCTAssertTrue(testee.showMenu)
49+
XCTAssertFalse(testee.showSettings)
4950
XCTAssertFalse(testee.showCancel)
5051
XCTAssertTrue(testee.showSearchLoupe)
5152
XCTAssertFalse(testee.showVoiceSearch)
5253
XCTAssertFalse(testee.showAbort)
5354
XCTAssertFalse(testee.showRefresh)
54-
55+
XCTAssertFalse(testee.showAccessoryButton)
5556
XCTAssertTrue(testee.hasLargeWidth)
5657
XCTAssertTrue(testee.showBackButton)
5758
XCTAssertTrue(testee.showForwardButton)
5859
XCTAssertTrue(testee.showBookmarksButton)
5960
XCTAssertFalse(testee.showAccessoryButton)
6061
}
6162

63+
func testWhenInHomeEmptyEditingStateWithVoiceSearchWithAIChatEnabledThenCorrectButtonsAreShown() {
64+
let testee = LargeOmniBarState.HomeEmptyEditingState(dependencies: MockOmnibarDependency(voiceSearchHelper: enabledVoiceSearchHelper, featureFlagger: mockFeatureFlagger, aiChatSettings: mockAIChatSettingsEnbaled), isLoading: false)
65+
66+
XCTAssertFalse(testee.showBackground)
67+
XCTAssertFalse(testee.showPrivacyIcon)
68+
XCTAssertFalse(testee.showClear)
69+
XCTAssertTrue(testee.showMenu)
70+
XCTAssertFalse(testee.showSettings)
71+
XCTAssertFalse(testee.showCancel)
72+
XCTAssertFalse(testee.showSearchLoupe)
73+
XCTAssertTrue(testee.showVoiceSearch)
74+
XCTAssertFalse(testee.showAbort)
75+
XCTAssertFalse(testee.showRefresh)
76+
XCTAssertTrue(testee.showAccessoryButton)
77+
XCTAssertTrue(testee.hasLargeWidth)
78+
XCTAssertTrue(testee.showBackButton)
79+
XCTAssertTrue(testee.showForwardButton)
80+
XCTAssertTrue(testee.showBookmarksButton)
81+
}
82+
83+
func testWhenInHomeEmptyEditingStateWithoutVoiceSearchWithAIChatEnabledThenCorrectButtonsAreShown() {
84+
let testee = LargeOmniBarState.HomeEmptyEditingState(dependencies: MockOmnibarDependency(voiceSearchHelper: disabledVoiceSearchHelper, featureFlagger: mockFeatureFlagger, aiChatSettings: mockAIChatSettingsEnbaled), isLoading: false)
85+
86+
XCTAssertFalse(testee.showBackground)
87+
XCTAssertFalse(testee.showPrivacyIcon)
88+
XCTAssertFalse(testee.showClear)
89+
XCTAssertTrue(testee.showMenu)
90+
XCTAssertFalse(testee.showSettings)
91+
XCTAssertFalse(testee.showCancel)
92+
XCTAssertTrue(testee.showSearchLoupe)
93+
XCTAssertFalse(testee.showVoiceSearch)
94+
XCTAssertFalse(testee.showAbort)
95+
XCTAssertFalse(testee.showRefresh)
96+
XCTAssertTrue(testee.showAccessoryButton)
97+
XCTAssertTrue(testee.hasLargeWidth)
98+
XCTAssertTrue(testee.showBackButton)
99+
XCTAssertTrue(testee.showForwardButton)
100+
XCTAssertTrue(testee.showBookmarksButton)
101+
}
102+
62103
func testWhenInHomeEmptyEditingStateWithVoiceSearchThenCorrectButtonsAreShown() {
63104
let testee = LargeOmniBarState.HomeEmptyEditingState(dependencies: MockOmnibarDependency(voiceSearchHelper: enabledVoiceSearchHelper, featureFlagger: mockFeatureFlagger), isLoading: false)
64105

65106
XCTAssertFalse(testee.showBackground)
66107
XCTAssertFalse(testee.showPrivacyIcon)
67108
XCTAssertFalse(testee.showClear)
68-
XCTAssertFalse(testee.showMenu)
69-
XCTAssertTrue(testee.showSettings)
109+
XCTAssertTrue(testee.showMenu)
110+
XCTAssertFalse(testee.showSettings)
70111
XCTAssertFalse(testee.showCancel)
71112
XCTAssertFalse(testee.showSearchLoupe)
72113
XCTAssertTrue(testee.showVoiceSearch)
73114
XCTAssertFalse(testee.showAbort)
74115
XCTAssertFalse(testee.showRefresh)
75-
116+
XCTAssertFalse(testee.showAccessoryButton)
76117
XCTAssertTrue(testee.hasLargeWidth)
77118
XCTAssertTrue(testee.showBackButton)
78119
XCTAssertTrue(testee.showForwardButton)
@@ -121,10 +162,11 @@ class LargeOmniBarStateTests: XCTestCase {
121162
XCTAssertFalse(testee.showBackground)
122163
XCTAssertFalse(testee.showPrivacyIcon)
123164
XCTAssertTrue(testee.showClear)
124-
XCTAssertFalse(testee.showMenu)
125-
XCTAssertTrue(testee.showSettings)
165+
XCTAssertTrue(testee.showMenu)
166+
XCTAssertFalse(testee.showSettings)
126167
XCTAssertFalse(testee.showCancel)
127168
XCTAssertTrue(testee.showSearchLoupe)
169+
XCTAssertFalse(testee.showAccessoryButton)
128170
XCTAssertFalse(testee.showVoiceSearch)
129171
XCTAssertFalse(testee.showAbort)
130172
XCTAssertFalse(testee.showRefresh)
@@ -142,14 +184,14 @@ class LargeOmniBarStateTests: XCTestCase {
142184
XCTAssertFalse(testee.showBackground)
143185
XCTAssertFalse(testee.showPrivacyIcon)
144186
XCTAssertTrue(testee.showClear)
145-
XCTAssertFalse(testee.showMenu)
146-
XCTAssertTrue(testee.showSettings)
187+
XCTAssertTrue(testee.showMenu)
188+
XCTAssertFalse(testee.showSettings)
147189
XCTAssertFalse(testee.showCancel)
148190
XCTAssertFalse(testee.showSearchLoupe)
149191
XCTAssertTrue(testee.showVoiceSearch)
150192
XCTAssertFalse(testee.showAbort)
151193
XCTAssertFalse(testee.showRefresh)
152-
194+
XCTAssertFalse(testee.showAccessoryButton)
153195
XCTAssertTrue(testee.hasLargeWidth)
154196
XCTAssertTrue(testee.showBackButton)
155197
XCTAssertTrue(testee.showForwardButton)
@@ -196,8 +238,8 @@ class LargeOmniBarStateTests: XCTestCase {
196238
XCTAssertTrue(testee.showBackground)
197239
XCTAssertFalse(testee.showPrivacyIcon)
198240
XCTAssertFalse(testee.showClear)
199-
XCTAssertFalse(testee.showMenu)
200-
XCTAssertTrue(testee.showSettings)
241+
XCTAssertTrue(testee.showMenu)
242+
XCTAssertFalse(testee.showSettings)
201243
XCTAssertFalse(testee.showCancel)
202244
XCTAssertTrue(testee.showSearchLoupe)
203245
XCTAssertTrue(testee.showVoiceSearch)
@@ -216,8 +258,8 @@ class LargeOmniBarStateTests: XCTestCase {
216258
XCTAssertTrue(testee.showBackground)
217259
XCTAssertFalse(testee.showPrivacyIcon)
218260
XCTAssertFalse(testee.showClear)
219-
XCTAssertFalse(testee.showMenu)
220-
XCTAssertTrue(testee.showSettings)
261+
XCTAssertTrue(testee.showMenu)
262+
XCTAssertFalse(testee.showSettings)
221263
XCTAssertFalse(testee.showCancel)
222264
XCTAssertTrue(testee.showSearchLoupe)
223265
XCTAssertFalse(testee.showVoiceSearch)

0 commit comments

Comments
 (0)