1
0
Fork 0

For #3323 Runs PublicSuffixList synchronously

master
Sawyer Blatz 2019-06-10 13:46:55 -07:00 committed by Emily Kager
parent a58a77317e
commit decacbfc97
10 changed files with 136 additions and 154 deletions

View File

@ -57,6 +57,8 @@ open class HomeActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
components.publicSuffixList.prefetch()
browsingModeManager = createBrowsingModeManager() browsingModeManager = createBrowsingModeManager()
themeManager = createThemeManager( themeManager = createThemeManager(
when (browsingModeManager.isPrivate) { when (browsingModeManager.isPrivate) {

View File

@ -747,7 +747,6 @@ class BrowserFragment : Fragment(), BackHandler, CoroutineScope {
private fun showSaveToCollection() { private fun showSaveToCollection() {
val context = context ?: return val context = context ?: return
getSessionById()?.let { getSessionById()?.let {
launch(Dispatchers.Main) {
val tabs = Tab(it.id, it.url, it.url.urlToTrimmedHost(context), it.title) val tabs = Tab(it.id, it.url, it.url.urlToTrimmedHost(context), it.title)
val viewModel = activity?.run { val viewModel = activity?.run {
ViewModelProviders.of(this).get(CreateCollectionViewModel::class.java) ViewModelProviders.of(this).get(CreateCollectionViewModel::class.java)
@ -765,7 +764,6 @@ class BrowserFragment : Fragment(), BackHandler, CoroutineScope {
} }
} }
} }
}
private fun assignSitePermissionsRules() { private fun assignSitePermissionsRules() {
val settings = Settings.getInstance(requireContext()) val settings = Settings.getInstance(requireContext())

View File

@ -25,7 +25,6 @@ import kotlinx.android.synthetic.main.component_collection_creation.view.*
import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.Job import kotlinx.coroutines.Job
import kotlinx.coroutines.launch
import mozilla.components.support.ktx.android.view.hideKeyboard import mozilla.components.support.ktx.android.view.hideKeyboard
import mozilla.components.support.ktx.android.view.showKeyboard import mozilla.components.support.ktx.android.view.showKeyboard
import org.mozilla.fenix.R import org.mozilla.fenix.R
@ -268,7 +267,6 @@ class CollectionCreationUIView(
is SaveCollectionStep.RenameCollection -> { is SaveCollectionStep.RenameCollection -> {
view.tab_list.isClickable = false view.tab_list.isClickable = false
launch(Dispatchers.Main) {
it.selectedTabCollection?.let { tabCollection -> it.selectedTabCollection?.let { tabCollection ->
tabCollection.tabs.map { tab -> tabCollection.tabs.map { tab ->
Tab( Tab(
@ -281,7 +279,6 @@ class CollectionCreationUIView(
collectionCreationTabListAdapter.updateData(tabs, tabs.toSet(), true) collectionCreationTabListAdapter.updateData(tabs, tabs.toSet(), true)
} }
} }
}
back_button.setOnClickListener { back_button.setOnClickListener {
name_collection_edittext.hideKeyboard() name_collection_edittext.hideKeyboard()

View File

@ -16,7 +16,6 @@ import kotlinx.android.synthetic.main.collections_list_item.view.collection_icon
import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.Job import kotlinx.coroutines.Job
import kotlinx.coroutines.launch
import org.mozilla.fenix.R import org.mozilla.fenix.R
import org.mozilla.fenix.components.description import org.mozilla.fenix.components.description
import org.mozilla.fenix.home.sessioncontrol.Tab import org.mozilla.fenix.home.sessioncontrol.Tab
@ -82,7 +81,6 @@ class CollectionViewHolder(
fun bind(collection: TabCollection) { fun bind(collection: TabCollection) {
this.collection = collection this.collection = collection
launch(Dispatchers.Main) {
view.collection_item.text = collection.title view.collection_item.text = collection.title
view.collection_description.text = collection.description(view.context) view.collection_description.text = collection.description(view.context)
@ -94,7 +92,6 @@ class CollectionViewHolder(
android.graphics.PorterDuff.Mode.SRC_IN android.graphics.PorterDuff.Mode.SRC_IN
) )
} }
}
@Suppress("ComplexMethod", "MagicNumber") @Suppress("ComplexMethod", "MagicNumber")
private fun getIconColor(id: Long): Int { private fun getIconColor(id: Long): Int {

View File

@ -91,7 +91,7 @@ class TabCollectionStorage(
} }
} }
suspend fun TabCollection.description(context: Context): String { fun TabCollection.description(context: Context): String {
return this.tabs return this.tabs
.map { it.url.urlToTrimmedHost(context).capitalize() } .map { it.url.urlToTrimmedHost(context).capitalize() }
.map { .map {

View File

@ -8,6 +8,7 @@ package org.mozilla.fenix.ext
import android.content.Context import android.content.Context
import androidx.core.net.toUri import androidx.core.net.toUri
import kotlinx.coroutines.runBlocking
import java.net.MalformedURLException import java.net.MalformedURLException
import java.net.URL import java.net.URL
import mozilla.components.support.ktx.android.net.hostWithoutCommonPrefixes import mozilla.components.support.ktx.android.net.hostWithoutCommonPrefixes
@ -34,10 +35,12 @@ fun String?.getHostFromUrl(): String? = try {
/** /**
* Trim a host's prefix and suffix * Trim a host's prefix and suffix
*/ */
suspend fun String.urlToTrimmedHost(context: Context): String { fun String.urlToTrimmedHost(context: Context): String {
return try { return try {
val host = toUri().hostWithoutCommonPrefixes ?: return this val host = toUri().hostWithoutCommonPrefixes ?: return this
runBlocking {
context.components.publicSuffixList.stripPublicSuffix(host).await() context.components.publicSuffixList.stripPublicSuffix(host).await()
}
} catch (e: MalformedURLException) { } catch (e: MalformedURLException) {
this this
} }

View File

@ -283,7 +283,6 @@ class HomeFragment : Fragment(), CoroutineScope, AccountObserver {
} }
} }
launch(Dispatchers.Main) {
getManagedEmitter<SessionControlChange>().onNext( getManagedEmitter<SessionControlChange>().onNext(
SessionControlChange.Change( SessionControlChange.Change(
tabs = getListOfTabs(sessionManager = requireComponents.core.sessionManager), tabs = getListOfTabs(sessionManager = requireComponents.core.sessionManager),
@ -291,7 +290,6 @@ class HomeFragment : Fragment(), CoroutineScope, AccountObserver {
collections = requireComponents.core.tabCollectionStorage.cachedTabCollections collections = requireComponents.core.tabCollectionStorage.cachedTabCollections
) )
) )
}
requireComponents.core.tabCollectionStorage.register(collectionStorageObserver, this) requireComponents.core.tabCollectionStorage.register(collectionStorageObserver, this)
sessionObserver.onStart() sessionObserver.onStart()
@ -566,7 +564,6 @@ class HomeFragment : Fragment(), CoroutineScope, AccountObserver {
} }
private fun removeTabWithUndo(sessionId: String) { private fun removeTabWithUndo(sessionId: String) {
launch(Dispatchers.Main) {
val sessionManager = requireComponents.core.sessionManager val sessionManager = requireComponents.core.sessionManager
// Update the UI with the tab removed, but don't remove it from storage yet // Update the UI with the tab removed, but don't remove it from storage yet
@ -608,21 +605,18 @@ class HomeFragment : Fragment(), CoroutineScope, AccountObserver {
operation = deleteOperation operation = deleteOperation
) )
} }
}
private fun emitSessionChanges() { private fun emitSessionChanges() {
val sessionManager = context?.components?.core?.sessionManager ?: return val sessionManager = context?.components?.core?.sessionManager ?: return
launch(Dispatchers.Main) {
getManagedEmitter<SessionControlChange>().onNext( getManagedEmitter<SessionControlChange>().onNext(
SessionControlChange.TabsChange( SessionControlChange.TabsChange(
getListOfTabs(sessionManager) getListOfTabs(sessionManager)
) )
) )
} }
}
private suspend fun getListOfTabs(sessionManager: SessionManager): List<Tab> { private fun getListOfTabs(sessionManager: SessionManager): List<Tab> {
val context = context ?: return listOf() val context = context ?: return listOf()
return sessionManager.sessions return sessionManager.sessions
.filter { (activity as HomeActivity).browsingModeManager.isPrivate == it.private } .filter { (activity as HomeActivity).browsingModeManager.isPrivate == it.private }
@ -653,7 +647,6 @@ class HomeFragment : Fragment(), CoroutineScope, AccountObserver {
val context = context?.let { it } ?: return val context = context?.let { it } ?: return
launch(Dispatchers.Main) {
val tabs = requireComponents.core.sessionManager.sessions.filter { !it.private } val tabs = requireComponents.core.sessionManager.sessions.filter { !it.private }
.map { Tab(it.id, it.url, it.url.urlToTrimmedHost(context), it.title) } .map { Tab(it.id, it.url, it.url.urlToTrimmedHost(context), it.title) }
@ -675,7 +668,6 @@ class HomeFragment : Fragment(), CoroutineScope, AccountObserver {
nav(R.id.homeFragment, directions) nav(R.id.homeFragment, directions)
} }
} }
}
private fun share(url: String? = null, tabs: List<ShareTab>? = null) { private fun share(url: String? = null, tabs: List<ShareTab>? = null) {
val directions = val directions =

View File

@ -16,7 +16,6 @@ import kotlinx.android.synthetic.main.collection_home_list_row.view.*
import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.Job import kotlinx.coroutines.Job
import kotlinx.coroutines.launch
import mozilla.components.browser.menu.BrowserMenuBuilder import mozilla.components.browser.menu.BrowserMenuBuilder
import mozilla.components.browser.menu.item.SimpleBrowserMenuItem import mozilla.components.browser.menu.item.SimpleBrowserMenuItem
import org.mozilla.fenix.R import org.mozilla.fenix.R
@ -82,7 +81,6 @@ class CollectionViewHolder(
} }
private fun updateCollectionUI() { private fun updateCollectionUI() {
launch(Dispatchers.Main) {
view.collection_title.text = collection.title view.collection_title.text = collection.title
view.collection_description.text = collection.description(view.context) view.collection_description.text = collection.description(view.context)
@ -109,7 +107,6 @@ class CollectionViewHolder(
android.graphics.PorterDuff.Mode.SRC_IN android.graphics.PorterDuff.Mode.SRC_IN
) )
} }
}
private fun handleExpansion(isExpanded: Boolean) { private fun handleExpansion(isExpanded: Boolean) {
if (isExpanded) { if (isExpanded) {

View File

@ -79,9 +79,8 @@ class TabInCollectionViewHolder(
} }
private fun updateTabUI() { private fun updateTabUI() {
launch(Dispatchers.Main) {
collection_tab_hostname.text = tab.url.urlToTrimmedHost(view.context) collection_tab_hostname.text = tab.url.urlToTrimmedHost(view.context)
}
collection_tab_title.text = tab.title collection_tab_title.text = tab.title
launch(Dispatchers.IO) { launch(Dispatchers.IO) {
val bitmap = collection_tab_icon.context.components.core.icons val bitmap = collection_tab_icon.context.components.core.icons

View File

@ -25,7 +25,6 @@ import androidx.navigation.NavController
import androidx.navigation.Navigation import androidx.navigation.Navigation
import kotlinx.android.synthetic.main.fragment_bookmark.view.* import kotlinx.android.synthetic.main.fragment_bookmark.view.*
import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.Dispatchers.IO import kotlinx.coroutines.Dispatchers.IO
import kotlinx.coroutines.Dispatchers.Main import kotlinx.coroutines.Dispatchers.Main
import kotlinx.coroutines.Job import kotlinx.coroutines.Job
@ -268,7 +267,6 @@ class BookmarkFragment : Fragment(), CoroutineScope, BackHandler, AccountObserve
getManagedEmitter<BookmarkChange>() getManagedEmitter<BookmarkChange>()
.onNext(BookmarkChange.Change(currentRoot - it.item.guid)) .onNext(BookmarkChange.Change(currentRoot - it.item.guid))
launch(Dispatchers.Main) {
allowUndo( allowUndo(
view!!, view!!,
getString(R.string.bookmark_deletion_snackbar_message, getString(R.string.bookmark_deletion_snackbar_message,
@ -281,7 +279,6 @@ class BookmarkFragment : Fragment(), CoroutineScope, BackHandler, AccountObserve
} }
} }
} }
}
is BookmarkAction.SwitchMode -> { is BookmarkAction.SwitchMode -> {
if ((bookmarkComponent.uiView as BookmarkUIView).mode is BookmarkState.Mode.Normal) { if ((bookmarkComponent.uiView as BookmarkUIView).mode is BookmarkState.Mode.Normal) {
getManagedEmitter<BookmarkChange>().onNext(BookmarkChange.ClearSelection) getManagedEmitter<BookmarkChange>().onNext(BookmarkChange.ClearSelection)