Skip to content

Commit

Permalink
Fix: Deny request when system permissions are not allowed (#2910)
Browse files Browse the repository at this point in the history
Task/Issue URL:
https://app.asana.com/0/488551667048375/1204096490114623/f

### Description
Deny permission request from website when system permissions haven't
been allowed

### Steps to test this PR

- Uninstall previous version of Android app if already have permission
configurations (or just clear storage on Settings)
- Install from this branch
- Go to `www.mictest.cc`
- Tap on "Test my mic" button -> Rationale dialog appears
- Tap on "Allow" option -> System permission prompt appears
- Select "Don't Allow" option -> Snackbar appears
- [x] Check request is denied after Snackbar is hidden (you'll see a
message that mic can't be used within the website)
- Reload the page and tap on "Test my mic" button **again** -> Rationale
dialog appears
- Tap on "Allow" option **again** -> System permission prompt appears
- Select "Don't Allow" option -> Open Settings dialog appears
- [x] Check request have been denied

### No UI changes
  • Loading branch information
nalcalag authored Mar 6, 2023
1 parent 5ed1566 commit 9817e35
Showing 1 changed file with 13 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -31,14 +31,13 @@ import com.duckduckgo.mobile.android.ui.view.dialog.TextAlertDialogBuilder
import com.duckduckgo.mobile.android.ui.view.toPx
import com.duckduckgo.site.permissions.api.SitePermissionsDialogLauncher
import com.duckduckgo.site.permissions.api.SitePermissionsGrantedListener
import com.google.android.material.snackbar.BaseTransientBottomBar.BaseCallback
import com.google.android.material.snackbar.Snackbar
import com.google.android.material.snackbar.Snackbar.SnackbarLayout
import com.squareup.anvil.annotations.ContributesBinding
import dagger.SingleInstanceIn
import javax.inject.Inject

@ContributesBinding(FragmentScope::class)
@SingleInstanceIn(FragmentScope::class)
class SitePermissionsDialogActivityLauncher @Inject constructor(
private val systemPermissionsHelper: SystemPermissionsHelper,
private val sitePermissionsRepository: SitePermissionsRepository,
Expand Down Expand Up @@ -230,14 +229,23 @@ class SitePermissionsDialogActivityLauncher @Inject constructor(
layout.setPadding(0, 0, 0, 40.toPx())
}
snackbar.apply {
setAction(R.string.sitePermissionsDeniedSnackBarAction) {
onPermissionAllowed()
}
setAction(R.string.sitePermissionsDeniedSnackBarAction) { onPermissionAllowed() }
addCallback(
object : Snackbar.Callback() {
override fun onDismissed(
transientBottomBar: Snackbar?,
event: Int,
) {
if (event == BaseCallback.DISMISS_EVENT_TIMEOUT) { sitePermissionRequest.deny() }
}
},
)
show()
}
}

private fun showSystemPermissionsDeniedDialog() {
sitePermissionRequest.deny()
val titleRes = when (permissionRequested) {
SitePermissionsRequestedType.CAMERA -> R.string.systemPermissionDialogCameraDeniedTitle
SitePermissionsRequestedType.AUDIO -> R.string.systemPermissionDialogAudioDeniedTitle
Expand Down

0 comments on commit 9817e35

Please sign in to comment.