Skip to content

Commit 9e21c0b

Browse files
Bugfix FXIOS-14615 [Trending Searches] only save recent searches in normal mode (backport #31620) (#31637)
* Bugfix FXIOS-14615 [Trending Searches] only save recent searches in normal mode (#31620) (cherry picked from commit 6ac9979) * fix: add back setupEditingAppState for backport --------- Co-authored-by: Cyndi Chin <cgc95@cornell.edu>
1 parent 33c93a4 commit 9e21c0b

File tree

2 files changed

+74
-2
lines changed

2 files changed

+74
-2
lines changed

firefox-ios/Client/Frontend/Browser/Toolbars/Redux/ToolbarMiddleware.swift

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -168,8 +168,17 @@ final class ToolbarMiddleware: FeatureFlaggable {
168168
store.dispatch(action)
169169

170170
case ToolbarActionType.didSubmitSearchTerm:
171-
// After a user submits a search term, we want to record it in our history storage via recent search provider
172-
guard let url = action.url, let searchTerm = action.searchTerm else { return }
171+
// After a user submits a search term, we want to record it in our history storage via recent search provider.
172+
// We only want to record when in normal mode since recent searches is not available for private mode.
173+
guard let toolbarState = state.screenState(
174+
ToolbarState.self,
175+
for: .toolbar,
176+
window: action.windowUUID
177+
) else {
178+
return
179+
}
180+
181+
guard let url = action.url, let searchTerm = action.searchTerm, !toolbarState.isPrivateMode else { return }
173182
recentSearchProvider.addRecentSearch(searchTerm, url: url.absoluteString)
174183

175184
case ToolbarActionType.navigationMiddleButtonDidChange:

firefox-ios/firefox-ios-tests/Tests/ClientTests/Toolbar/ToolbarMiddlewareTests.swift

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -835,6 +835,51 @@ final class ToolbarMiddlewareTests: XCTestCase, StoreTestUtility {
835835
XCTAssertEqual(mockRecentSearchProvider.addRecentSearchCalledCount, 0)
836836
}
837837

838+
func test_didSubmitSearchTerm_forPrivateMode_withProperPayload_addsRecentSearchToHistoryStorage() {
839+
mockStore = MockStoreForMiddleware(state: setupPrivateModeAppState())
840+
StoreTestUtilityHelper.setupStore(with: mockStore)
841+
842+
let subject = createSubject(manager: toolbarManager)
843+
let action = ToolbarAction(
844+
url: URL(string: "https://example.com")!,
845+
searchTerm: "cookies",
846+
windowUUID: windowUUID,
847+
actionType: ToolbarActionType.didSubmitSearchTerm
848+
)
849+
850+
subject.toolbarProvider(mockStore.state, action)
851+
XCTAssertEqual(mockRecentSearchProvider.addRecentSearchCalledCount, 0)
852+
}
853+
854+
func test_didSubmitSearchTerm_forPrivateMode_withoutURL_doesNotAddRecentSearchToHistoryStorage() {
855+
mockStore = MockStoreForMiddleware(state: setupPrivateModeAppState())
856+
StoreTestUtilityHelper.setupStore(with: mockStore)
857+
858+
let subject = createSubject(manager: toolbarManager)
859+
let action = ToolbarAction(
860+
searchTerm: "cookies",
861+
windowUUID: windowUUID,
862+
actionType: ToolbarActionType.didSubmitSearchTerm
863+
)
864+
865+
subject.toolbarProvider(mockStore.state, action)
866+
XCTAssertEqual(mockRecentSearchProvider.addRecentSearchCalledCount, 0)
867+
}
868+
869+
func test_didSubmitSearchTerm_forPrivateMode_withoutSearchTerm_doesNotAddRecentSearchToHistoryStorage() {
870+
mockStore = MockStoreForMiddleware(state: setupPrivateModeAppState())
871+
StoreTestUtilityHelper.setupStore(with: mockStore)
872+
873+
let subject = createSubject(manager: toolbarManager)
874+
let action = ToolbarAction(
875+
windowUUID: windowUUID,
876+
actionType: ToolbarActionType.didSubmitSearchTerm
877+
)
878+
879+
subject.toolbarProvider(mockStore.state, action)
880+
XCTAssertEqual(mockRecentSearchProvider.addRecentSearchCalledCount, 0)
881+
}
882+
838883
// MARK: - Helpers
839884
private func createSubject(manager: ToolbarManager) -> ToolbarMiddleware {
840885
return ToolbarMiddleware(
@@ -900,6 +945,24 @@ final class ToolbarMiddlewareTests: XCTestCase, StoreTestUtility {
900945
}
901946
}
902947

948+
func setupPrivateModeAppState() -> AppState {
949+
var toolbarState = ToolbarState(windowUUID: windowUUID)
950+
toolbarState.isPrivateMode = true
951+
952+
return AppState(
953+
activeScreens: ActiveScreensState(
954+
screens: [
955+
.browserViewController(
956+
BrowserViewControllerState(
957+
windowUUID: windowUUID
958+
)
959+
),
960+
.toolbar(toolbarState)
961+
]
962+
)
963+
)
964+
}
965+
903966
func setupEditingAppState() -> AppState {
904967
var addressBarState = AddressBarState(windowUUID: windowUUID)
905968
addressBarState.isEditing = true

0 commit comments

Comments
 (0)