For #12565: Don't pass contest to SortingStrategy
parent
aa495b4526
commit
d3a07e95c9
|
@ -94,8 +94,8 @@ private fun Uri.isIpv6(): Boolean {
|
|||
/**
|
||||
* Trim a host's prefix and suffix
|
||||
*/
|
||||
fun String.urlToTrimmedHost(context: Context): String = runBlocking {
|
||||
urlToTrimmedHost(context.components.publicSuffixList).await()
|
||||
fun String.urlToTrimmedHost(publicSuffixList: PublicSuffixList): String = runBlocking {
|
||||
urlToTrimmedHost(publicSuffixList).await()
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -4,20 +4,19 @@
|
|||
|
||||
package org.mozilla.fenix.settings.logins
|
||||
|
||||
import android.content.Context
|
||||
import mozilla.components.lib.publicsuffixlist.PublicSuffixList
|
||||
import org.mozilla.fenix.ext.urlToTrimmedHost
|
||||
|
||||
sealed class SortingStrategy {
|
||||
abstract operator fun invoke(logins: List<SavedLogin>): List<SavedLogin>
|
||||
abstract val appContext: Context
|
||||
|
||||
data class Alphabetically(override val appContext: Context) : SortingStrategy() {
|
||||
data class Alphabetically(private val publicSuffixList: PublicSuffixList) : SortingStrategy() {
|
||||
override fun invoke(logins: List<SavedLogin>): List<SavedLogin> {
|
||||
return logins.sortedBy { it.origin.urlToTrimmedHost(appContext) }
|
||||
return logins.sortedBy { it.origin.urlToTrimmedHost(publicSuffixList) }
|
||||
}
|
||||
}
|
||||
|
||||
data class LastUsed(override val appContext: Context) : SortingStrategy() {
|
||||
object LastUsed : SortingStrategy() {
|
||||
override fun invoke(logins: List<SavedLogin>): List<SavedLogin> {
|
||||
return logins.sortedByDescending { it.timeLastUsed }
|
||||
}
|
||||
|
|
|
@ -6,12 +6,12 @@ package org.mozilla.fenix.settings.logins.fragment
|
|||
|
||||
import android.os.Bundle
|
||||
import android.view.LayoutInflater
|
||||
import android.view.Menu
|
||||
import android.view.MenuInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.view.WindowManager
|
||||
import android.view.inputmethod.EditorInfo
|
||||
import android.view.Menu
|
||||
import android.view.MenuInflater
|
||||
import android.widget.FrameLayout
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.appcompat.widget.SearchView
|
||||
|
@ -31,17 +31,18 @@ import org.mozilla.fenix.R
|
|||
import org.mozilla.fenix.components.StoreProvider
|
||||
import org.mozilla.fenix.ext.components
|
||||
import org.mozilla.fenix.ext.redirectToReAuth
|
||||
import org.mozilla.fenix.ext.requireComponents
|
||||
import org.mozilla.fenix.ext.settings
|
||||
import org.mozilla.fenix.ext.showToolbar
|
||||
import org.mozilla.fenix.settings.logins.LoginsAction
|
||||
import org.mozilla.fenix.settings.logins.LoginsFragmentStore
|
||||
import org.mozilla.fenix.settings.logins.controller.LoginsListController
|
||||
import org.mozilla.fenix.settings.logins.LoginsListState
|
||||
import org.mozilla.fenix.settings.logins.interactor.SavedLoginsInteractor
|
||||
import org.mozilla.fenix.settings.logins.SavedLoginsSortingStrategyMenu
|
||||
import org.mozilla.fenix.settings.logins.view.SavedLoginsListView
|
||||
import org.mozilla.fenix.settings.logins.SortingStrategy
|
||||
import org.mozilla.fenix.settings.logins.controller.LoginsListController
|
||||
import org.mozilla.fenix.settings.logins.controller.SavedLoginsStorageController
|
||||
import org.mozilla.fenix.settings.logins.interactor.SavedLoginsInteractor
|
||||
import org.mozilla.fenix.settings.logins.view.SavedLoginsListView
|
||||
|
||||
@SuppressWarnings("TooManyFunctions")
|
||||
class SavedLoginsFragment : Fragment() {
|
||||
|
@ -228,16 +229,14 @@ class SavedLoginsFragment : Fragment() {
|
|||
SavedLoginsSortingStrategyMenu.Item.AlphabeticallySort -> {
|
||||
savedLoginsInteractor.onSortingStrategyChanged(
|
||||
SortingStrategy.Alphabetically(
|
||||
requireContext().applicationContext
|
||||
requireComponents.publicSuffixList
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
SavedLoginsSortingStrategyMenu.Item.LastUsedSort -> {
|
||||
savedLoginsInteractor.onSortingStrategyChanged(
|
||||
SortingStrategy.LastUsed(
|
||||
requireContext().applicationContext
|
||||
)
|
||||
SortingStrategy.LastUsed
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -831,12 +831,10 @@ class Settings(private val appContext: Context) : PreferencesHolder {
|
|||
get() {
|
||||
return when (savedLoginsSortingStrategyString) {
|
||||
SavedLoginsFragment.SORTING_STRATEGY_ALPHABETICALLY -> SortingStrategy.Alphabetically(
|
||||
appContext
|
||||
appContext.components.publicSuffixList
|
||||
)
|
||||
SavedLoginsFragment.SORTING_STRATEGY_LAST_USED -> SortingStrategy.LastUsed(
|
||||
appContext
|
||||
)
|
||||
else -> SortingStrategy.Alphabetically(appContext)
|
||||
SavedLoginsFragment.SORTING_STRATEGY_LAST_USED -> SortingStrategy.LastUsed
|
||||
else -> SortingStrategy.Alphabetically(appContext.components.publicSuffixList)
|
||||
}
|
||||
}
|
||||
set(value) {
|
||||
|
|
|
@ -24,7 +24,7 @@ class StringTest {
|
|||
@Test
|
||||
fun `Url To Trimmed Host`() {
|
||||
val urlTest = "http://www.example.com:1080/docs/resource1.html"
|
||||
val new = urlTest.urlToTrimmedHost(testContext)
|
||||
val new = urlTest.urlToTrimmedHost(publicSuffixList)
|
||||
assertEquals(new, "example")
|
||||
}
|
||||
|
||||
|
|
|
@ -6,7 +6,6 @@ package org.mozilla.fenix.settings.logins
|
|||
|
||||
import android.view.LayoutInflater
|
||||
import android.view.ViewGroup
|
||||
import io.mockk.mockk
|
||||
import kotlinx.android.synthetic.main.fragment_login_detail.view.*
|
||||
import mozilla.components.support.test.robolectric.testContext
|
||||
import org.junit.Assert.assertEquals
|
||||
|
@ -31,7 +30,7 @@ class LoginDetailViewTest {
|
|||
timeLastUsed = 100L
|
||||
),
|
||||
searchedForText = null,
|
||||
sortingStrategy = SortingStrategy.LastUsed(mockk()),
|
||||
sortingStrategy = SortingStrategy.LastUsed,
|
||||
highlightedItem = SavedLoginsSortingStrategyMenu.Item.LastUsedSort,
|
||||
duplicateLogins = listOf()
|
||||
)
|
||||
|
|
|
@ -29,7 +29,7 @@ class LoginsFragmentStoreTest {
|
|||
loginList = emptyList(),
|
||||
filteredItems = emptyList(),
|
||||
searchedForText = null,
|
||||
sortingStrategy = SortingStrategy.LastUsed(mockk()),
|
||||
sortingStrategy = SortingStrategy.LastUsed,
|
||||
highlightedItem = SavedLoginsSortingStrategyMenu.Item.LastUsedSort,
|
||||
duplicateLogins = listOf()
|
||||
)
|
||||
|
@ -88,7 +88,7 @@ class LoginsFragmentStoreTest {
|
|||
|
||||
@Test
|
||||
fun `SortLogins action`() {
|
||||
val lastUsed = SortingStrategy.LastUsed(mockk())
|
||||
val lastUsed = SortingStrategy.LastUsed
|
||||
val store = LoginsFragmentStore(baseState.copy(
|
||||
isLoading = true,
|
||||
searchedForText = null,
|
||||
|
@ -108,7 +108,7 @@ class LoginsFragmentStoreTest {
|
|||
|
||||
@Test
|
||||
fun `SortLogins action with search text`() {
|
||||
val lastUsed = SortingStrategy.LastUsed(mockk())
|
||||
val lastUsed = SortingStrategy.LastUsed
|
||||
val store = LoginsFragmentStore(baseState.copy(
|
||||
isLoading = true,
|
||||
searchedForText = "example",
|
||||
|
|
|
@ -13,6 +13,7 @@ import org.junit.runner.RunWith
|
|||
import org.mozilla.fenix.BrowserDirection
|
||||
import org.mozilla.fenix.components.metrics.Event
|
||||
import org.mozilla.fenix.components.metrics.MetricController
|
||||
import org.mozilla.fenix.ext.components
|
||||
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
|
||||
import org.mozilla.fenix.settings.SupportUtils
|
||||
import org.mozilla.fenix.settings.logins.controller.LoginsListController
|
||||
|
@ -23,7 +24,8 @@ import org.mozilla.fenix.utils.Settings
|
|||
class LoginsListControllerTest {
|
||||
private val store: LoginsFragmentStore = mockk(relaxed = true)
|
||||
private val settings: Settings = mockk(relaxed = true)
|
||||
private val sortingStrategy: SortingStrategy = SortingStrategy.Alphabetically(testContext)
|
||||
private val publicSuffixList = testContext.components.publicSuffixList
|
||||
private val sortingStrategy: SortingStrategy = SortingStrategy.Alphabetically(publicSuffixList)
|
||||
private val navController: NavController = mockk(relaxed = true)
|
||||
private val browserNavigator: (String, Boolean, BrowserDirection) -> Unit = mockk(relaxed = true)
|
||||
private val metrics: MetricController = mockk(relaxed = true)
|
||||
|
@ -43,9 +45,7 @@ class LoginsListControllerTest {
|
|||
verifyAll {
|
||||
store.dispatch(
|
||||
LoginsAction.SortLogins(
|
||||
SortingStrategy.Alphabetically(
|
||||
testContext
|
||||
)
|
||||
SortingStrategy.Alphabetically(publicSuffixList)
|
||||
)
|
||||
)
|
||||
settings.savedLoginsSortingStrategy = sortingStrategy
|
||||
|
|
|
@ -10,6 +10,7 @@ import mozilla.components.support.test.robolectric.testContext
|
|||
import org.junit.Before
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.mozilla.fenix.ext.components
|
||||
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
|
||||
import org.mozilla.fenix.settings.logins.controller.LoginsListController
|
||||
import org.mozilla.fenix.settings.logins.controller.SavedLoginsStorageController
|
||||
|
@ -39,7 +40,7 @@ class SavedLoginsInteractorTest {
|
|||
|
||||
@Test
|
||||
fun `GIVEN a change in sorting strategy, WHEN the interactor is called for it, THEN it should just delegate the controller`() {
|
||||
val sortingStrategy: SortingStrategy = SortingStrategy.Alphabetically(testContext)
|
||||
val sortingStrategy = SortingStrategy.Alphabetically(testContext.components.publicSuffixList)
|
||||
|
||||
interactor.onSortingStrategyChanged(sortingStrategy)
|
||||
|
||||
|
|
Loading…
Reference in New Issue