Improvements to site permissions
This commit is contained in:
parent
37e2c6ceeb
commit
251bfc7fe9
|
@ -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
|
||||
|
@ -134,6 +133,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.components.toolbar.interactor.BrowserToolbarInteractor
|
||||
import org.mozilla.fenix.components.toolbar.interactor.DefaultBrowserToolbarInteractor
|
||||
|
@ -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 sitePermissions: SitePermissions? = tab.content.url.getOrigin()?.let { origin ->
|
||||
val storage = requireComponents.core.permissionStorage
|
||||
storage.findSitePermissionsBy(host)
|
||||
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
|
||||
|
@ -16,6 +15,7 @@ import mozilla.components.feature.session.SessionUseCases.ReloadUrlUseCase
|
|||
import mozilla.components.concept.engine.permission.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
|
||||
|
@ -139,7 +139,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.concept.engine.permission.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))
|
||||
|
|
|
@ -29,6 +29,7 @@ import kotlinx.coroutines.Dispatchers.Main
|
|||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.withContext
|
||||
import mozilla.components.concept.engine.permission.SitePermissions
|
||||
import mozilla.components.support.ktx.kotlin.stripDefaultPort
|
||||
import org.mozilla.fenix.NavHostActivity
|
||||
import org.mozilla.fenix.R
|
||||
import org.mozilla.fenix.ext.components
|
||||
|
@ -148,9 +149,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…
Reference in New Issue