Skip to content

Commit e6010fa

Browse files
pocmomergify[bot]
authored andcommitted
Closes mozilla-mobile#11071: SearchUseCases: Delegate URL loads to SessionUseCases
This allows us to use the optimizations in SessionUseCases for searches too.
1 parent 63cb853 commit e6010fa

File tree

4 files changed

+30
-23
lines changed

4 files changed

+30
-23
lines changed

components/feature/search/src/main/java/mozilla/components/feature/search/SearchUseCases.kt

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,14 @@
55
package mozilla.components.feature.search
66

77
import mozilla.components.browser.state.action.ContentAction
8-
import mozilla.components.browser.state.action.EngineAction
98
import mozilla.components.browser.state.action.SearchAction
109
import mozilla.components.browser.state.search.SearchEngine
1110
import mozilla.components.browser.state.selector.findTabOrCustomTab
1211
import mozilla.components.browser.state.state.SessionState
1312
import mozilla.components.browser.state.state.selectedOrDefaultSearchEngine
1413
import mozilla.components.browser.state.store.BrowserStore
1514
import mozilla.components.feature.search.ext.buildSearchUrl
15+
import mozilla.components.feature.session.SessionUseCases
1616
import mozilla.components.feature.tabs.TabsUseCases
1717
import mozilla.components.support.base.log.logger.Logger
1818

@@ -21,7 +21,8 @@ import mozilla.components.support.base.log.logger.Logger
2121
*/
2222
class SearchUseCases(
2323
store: BrowserStore,
24-
tabsUseCases: TabsUseCases
24+
tabsUseCases: TabsUseCases,
25+
sessionUseCases: SessionUseCases
2526
) {
2627
interface SearchUseCase {
2728
/**
@@ -36,7 +37,8 @@ class SearchUseCases(
3637

3738
class DefaultSearchUseCase(
3839
private val store: BrowserStore,
39-
private val tabsUseCases: TabsUseCases
40+
private val tabsUseCases: TabsUseCases,
41+
private val sessionUseCases: SessionUseCases
4042
) : SearchUseCase {
4143
private val logger = Logger("DefaultSearchUseCase")
4244

@@ -80,12 +82,7 @@ class SearchUseCases(
8082
// If we got a `sessionId` then try to find the tab and load the search URL in it
8183
val existingTab = store.state.findTabOrCustomTab(sessionId)
8284
if (existingTab != null) {
83-
store.dispatch(
84-
EngineAction.LoadUrlAction(
85-
existingTab.id,
86-
searchUrl
87-
)
88-
)
85+
sessionUseCases.loadUrl(searchUrl, sessionId = existingTab.id)
8986
existingTab.id
9087
} else {
9188
// If the tab with the provided id was not found then create a new tab
@@ -252,7 +249,7 @@ class SearchUseCases(
252249
}
253250

254251
val defaultSearch: DefaultSearchUseCase by lazy {
255-
DefaultSearchUseCase(store, tabsUseCases)
252+
DefaultSearchUseCase(store, tabsUseCases, sessionUseCases)
256253
}
257254

258255
val newTabSearch: NewTabSearchUseCase by lazy {

components/feature/search/src/test/java/mozilla/components/feature/search/SearchUseCasesTest.kt

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ package mozilla.components.feature.search
77
import androidx.test.ext.junit.runners.AndroidJUnit4
88
import mozilla.components.browser.state.action.BrowserAction
99
import mozilla.components.browser.state.action.ContentAction
10-
import mozilla.components.browser.state.action.EngineAction
1110
import mozilla.components.browser.state.action.TabListAction
1211
import mozilla.components.browser.state.search.RegionState
1312
import mozilla.components.browser.state.search.SearchEngine
@@ -19,6 +18,7 @@ import mozilla.components.browser.state.state.createTab
1918
import mozilla.components.browser.state.state.searchEngines
2019
import mozilla.components.browser.state.store.BrowserStore
2120
import mozilla.components.feature.search.ext.createSearchEngine
21+
import mozilla.components.feature.session.SessionUseCases
2222
import mozilla.components.feature.tabs.TabsUseCases
2323
import mozilla.components.support.test.ext.joinBlocking
2424
import mozilla.components.support.test.libstate.ext.waitUntilIdle
@@ -31,6 +31,7 @@ import org.junit.Assert.assertNull
3131
import org.junit.Before
3232
import org.junit.Test
3333
import org.junit.runner.RunWith
34+
import org.mockito.Mockito.doReturn
3435
import org.mockito.Mockito.verify
3536

3637
@RunWith(AndroidJUnit4::class)
@@ -40,6 +41,8 @@ class SearchUseCasesTest {
4041
private lateinit var store: BrowserStore
4142
private lateinit var useCases: SearchUseCases
4243
private lateinit var tabsUseCases: TabsUseCases
44+
private lateinit var sessionUseCases: SessionUseCases
45+
private lateinit var loadUrlUseCase: SessionUseCases.DefaultLoadUrlUseCase
4346

4447
private val middleware = CaptureActionsMiddleware<BrowserState, BrowserAction>()
4548

@@ -55,6 +58,9 @@ class SearchUseCasesTest {
5558
)
5659

5760
tabsUseCases = mock()
61+
sessionUseCases = mock()
62+
loadUrlUseCase = mock()
63+
doReturn(loadUrlUseCase).`when`(sessionUseCases).loadUrl
5864

5965
store = BrowserStore(
6066
initialState = BrowserState(
@@ -67,7 +73,8 @@ class SearchUseCasesTest {
6773

6874
useCases = SearchUseCases(
6975
store,
70-
tabsUseCases
76+
tabsUseCases,
77+
sessionUseCases
7178
)
7279
}
7380

@@ -88,8 +95,11 @@ class SearchUseCasesTest {
8895
useCases.defaultSearch(searchTerms)
8996
store.waitUntilIdle()
9097

91-
val loadUrlAction = middleware.findFirstAction(EngineAction.LoadUrlAction::class)
92-
assertEquals(searchUrl, loadUrlAction.url)
98+
verify(loadUrlUseCase).invoke(searchUrl, sessionId = "mozilla")
99+
100+
val searchTermsAccessAction = middleware.findFirstAction(ContentAction.UpdateSearchTermsAction::class)
101+
assertEquals(searchTerms, searchTermsAccessAction.searchTerms)
102+
assertEquals("mozilla", searchTermsAccessAction.sessionId)
93103
}
94104

95105
@Test
@@ -213,7 +223,7 @@ class SearchUseCasesTest {
213223
)
214224
)
215225

216-
val useCases = SearchUseCases(store, mock())
226+
val useCases = SearchUseCases(store, mock(), mock())
217227

218228
useCases.selectSearchEngine.invoke(
219229
store.findSearchEngineById("engine-d")
@@ -275,7 +285,7 @@ class SearchUseCasesTest {
275285
)
276286
)
277287

278-
val useCases = SearchUseCases(store, mock())
288+
val useCases = SearchUseCases(store, mock(), mock())
279289

280290
assertEquals(6, store.state.search.searchEngines.size)
281291
assertEquals(3, store.state.search.availableSearchEngines.size)
@@ -328,7 +338,7 @@ class SearchUseCasesTest {
328338
)
329339
)
330340

331-
val useCases = SearchUseCases(store, mock())
341+
val useCases = SearchUseCases(store, mock(), mock())
332342

333343
assertEquals(6, store.state.search.searchEngines.size)
334344
assertEquals(3, store.state.search.availableSearchEngines.size)
@@ -381,7 +391,7 @@ class SearchUseCasesTest {
381391
)
382392
)
383393

384-
val useCases = SearchUseCases(store, mock())
394+
val useCases = SearchUseCases(store, mock(), mock())
385395

386396
assertEquals(6, store.state.search.searchEngines.size)
387397
assertEquals(3, store.state.search.availableSearchEngines.size)
@@ -439,7 +449,7 @@ class SearchUseCasesTest {
439449
)
440450
)
441451

442-
val useCases = SearchUseCases(store, mock())
452+
val useCases = SearchUseCases(store, mock(), mock())
443453

444454
assertEquals(6, store.state.search.searchEngines.size)
445455
assertEquals(3, store.state.search.availableSearchEngines.size)
@@ -492,7 +502,7 @@ class SearchUseCasesTest {
492502
)
493503
)
494504

495-
val useCases = SearchUseCases(store, mock())
505+
val useCases = SearchUseCases(store, mock(), mock())
496506

497507
assertEquals(6, store.state.search.searchEngines.size)
498508
assertEquals(3, store.state.search.availableSearchEngines.size)
@@ -545,7 +555,7 @@ class SearchUseCasesTest {
545555
)
546556
)
547557

548-
val useCases = SearchUseCases(store, mock())
558+
val useCases = SearchUseCases(store, mock(), mock())
549559

550560
assertEquals(6, store.state.search.searchEngines.size)
551561
assertEquals(3, store.state.search.availableSearchEngines.size)

samples/browser/src/main/java/org/mozilla/samples/browser/DefaultComponents.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,7 @@ open class DefaultComponents(private val applicationContext: Context) {
190190
}
191191

192192
val searchUseCases by lazy {
193-
SearchUseCases(store, tabsUseCases)
193+
SearchUseCases(store, tabsUseCases, sessionUseCases)
194194
}
195195

196196
val defaultSearchUseCase by lazy {

samples/compose-browser/src/main/java/org/mozilla/samples/compose/browser/Components.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ class Components(
4646

4747
val sessionUseCases by lazy { SessionUseCases(store) }
4848
val tabsUseCases by lazy { TabsUseCases(store) }
49-
val searchUseCases by lazy { SearchUseCases(store, tabsUseCases) }
49+
val searchUseCases by lazy { SearchUseCases(store, tabsUseCases, sessionUseCases) }
5050

5151
val locationService by lazy { LocationService.default() }
5252
}

0 commit comments

Comments
 (0)