Improvements to site permissions

pull/420/head
Arturo Mejia 3 years ago
parent 09a044da58
commit 34b1e77dbc

@ -22,7 +22,6 @@ import androidx.annotation.VisibleForTesting
import androidx.appcompat.app.AlertDialog
import androidx.coordinatorlayout.widget.CoordinatorLayout
import androidx.core.content.getSystemService
import androidx.core.net.toUri
import androidx.core.view.isVisible
import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels
@ -136,6 +135,7 @@ import mozilla.components.feature.webauthn.WebAuthnFeature
import mozilla.components.support.base.feature.ActivityResultHandler
import org.mozilla.fenix.ext.navigateBlockingForAsyncNavGraph
import mozilla.components.support.ktx.android.view.enterToImmersiveMode
import mozilla.components.support.ktx.kotlin.getOrigin
import org.mozilla.fenix.GleanMetrics.PerfStartup
import org.mozilla.fenix.ext.measureNoInline
import org.mozilla.fenix.ext.secure
@ -1185,9 +1185,9 @@ abstract class BaseBrowserFragment : Fragment(), UserInteractionHandler, Activit
private fun showQuickSettingsDialog() {
val tab = getCurrentTab() ?: return
viewLifecycleOwner.lifecycleScope.launch(Main) {
val sitePermissions: SitePermissions? = tab.content.url.toUri().host?.let { host ->
val storage = requireComponents.core.permissionStorage
storage.findSitePermissionsBy(host)
val sitePermissions: SitePermissions? = tab.content.url.getOrigin()?.let { origin ->
val storage = requireComponents.core.permissionStorage
storage.findSitePermissionsBy(origin)
}
view?.let {

@ -6,7 +6,6 @@ package org.mozilla.fenix.settings.quicksettings
import android.content.Context
import androidx.annotation.VisibleForTesting
import androidx.core.net.toUri
import androidx.navigation.NavController
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.launch
@ -17,6 +16,7 @@ import mozilla.components.feature.session.SessionUseCases.ReloadUrlUseCase
import mozilla.components.feature.sitepermissions.SitePermissions
import mozilla.components.feature.tabs.TabsUseCases.AddNewTabUseCase
import mozilla.components.support.base.feature.OnNeedToRequestPermissions
import mozilla.components.support.ktx.kotlin.getOrigin
import org.mozilla.fenix.components.PermissionStorage
import org.mozilla.fenix.ext.navigateBlockingForAsyncNavGraph
import org.mozilla.fenix.settings.PhoneFeature
@ -141,7 +141,7 @@ class DefaultQuickSettingsController(
sitePermissions = if (permissions == null) {
val tab = browserStore.state.findTabOrCustomTab(sessionId)
val origin = requireNotNull(tab?.content?.url?.toUri()?.host) {
val origin = requireNotNull(tab?.content?.url?.getOrigin()) {
"An origin is required to change a autoplay settings from the door hanger"
}
val sitePermissions =

@ -6,8 +6,8 @@ package org.mozilla.fenix.settings.sitepermissions
import android.view.View
import android.widget.TextView
import androidx.core.net.toUri
import androidx.core.text.HtmlCompat
import mozilla.components.support.ktx.kotlin.getOrigin
import org.mozilla.fenix.R
import org.mozilla.fenix.components.Components
import org.mozilla.fenix.settings.PhoneFeature
@ -23,7 +23,7 @@ import org.mozilla.fenix.settings.PhoneFeature
internal fun Components.tryReloadTabBy(origin: String) {
core.store.state.tabs
.sortedByDescending { it.lastAccess }
.find { it.content.url.toUri().host == origin }
.find { it.content.url.getOrigin() == origin }
?.let {
useCases.sessionUseCases.reload(it.id)
}

@ -18,6 +18,7 @@ import kotlinx.coroutines.Dispatchers.Main
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import mozilla.components.feature.sitepermissions.SitePermissions
import mozilla.components.support.ktx.kotlin.stripDefaultPort
import org.mozilla.fenix.R
import org.mozilla.fenix.ext.components
import org.mozilla.fenix.ext.navigateBlockingForAsyncNavGraph
@ -55,7 +56,7 @@ class SitePermissionsDetailsExceptionsFragment : PreferenceFragmentCompat() {
override fun onResume() {
super.onResume()
showToolbar(sitePermissions.origin)
showToolbar(sitePermissions.origin.stripDefaultPort())
viewLifecycleOwner.lifecycleScope.launch(Main) {
sitePermissions =
requireNotNull(requireComponents.core.permissionStorage.findSitePermissionsBy(sitePermissions.origin))

@ -27,6 +27,7 @@ import androidx.recyclerview.widget.RecyclerView
import kotlinx.coroutines.Dispatchers.Main
import kotlinx.coroutines.launch
import mozilla.components.feature.sitepermissions.SitePermissions
import mozilla.components.support.ktx.kotlin.stripDefaultPort
import org.mozilla.fenix.NavHostActivity
import org.mozilla.fenix.R
import org.mozilla.fenix.ext.components
@ -142,9 +143,8 @@ class ExceptionsAdapter(private val clickListener: View.OnClickListener) :
override fun onBindViewHolder(holder: SitePermissionsViewHolder, position: Int) {
val sitePermissions = requireNotNull(getItem(position))
val context = holder.view.context
context.components.core.icons.loadIntoView(holder.iconView, "https://${sitePermissions.origin}/")
holder.siteTextView.text = sitePermissions.origin
context.components.core.icons.loadIntoView(holder.iconView, sitePermissions.origin)
holder.siteTextView.text = sitePermissions.origin.stripDefaultPort()
holder.view.tag = sitePermissions
holder.view.setOnClickListener(clickListener)
}

@ -10,6 +10,7 @@ import io.mockk.verify
import mozilla.components.browser.state.state.BrowserState
import mozilla.components.browser.state.state.createTab
import mozilla.components.browser.state.store.BrowserStore
import mozilla.components.support.ktx.kotlin.getOrigin
import org.junit.Test
import org.junit.runner.RunWith
import org.mozilla.fenix.components.Components
@ -33,13 +34,13 @@ class ExtensionsTest {
val components: Components = mockk(relaxed = true)
every { components.core.store } returns store
components.tryReloadTabBy("www.getpocket.com")
components.tryReloadTabBy("https://www.getpocket.com".getOrigin()!!)
verify(exactly = 0) { components.useCases.sessionUseCases.reload(any<String>()) }
components.tryReloadTabBy("www.mozilla.org")
components.tryReloadTabBy("https://www.mozilla.org".getOrigin()!!)
verify { components.useCases.sessionUseCases.reload("2") }
components.tryReloadTabBy("www.firefox.com")
components.tryReloadTabBy("https://www.firefox.com".getOrigin()!!)
verify { components.useCases.sessionUseCases.reload("3") }
}
}

Loading…
Cancel
Save