|
|
|
@ -24,11 +24,10 @@ import androidx.navigation.fragment.navArgs
|
|
|
|
|
import mozilla.components.feature.sitepermissions.SitePermissionsRules
|
|
|
|
|
import mozilla.components.feature.sitepermissions.SitePermissionsRules.Action.ALLOWED
|
|
|
|
|
import mozilla.components.feature.sitepermissions.SitePermissionsRules.Action.BLOCKED
|
|
|
|
|
import org.mozilla.fenix.GleanMetrics.Autoplay
|
|
|
|
|
import org.mozilla.fenix.R
|
|
|
|
|
import org.mozilla.fenix.components.metrics.Event
|
|
|
|
|
import org.mozilla.fenix.databinding.FragmentManageSitePermissionsFeaturePhoneBinding
|
|
|
|
|
import org.mozilla.fenix.ext.components
|
|
|
|
|
import org.mozilla.fenix.ext.requireComponents
|
|
|
|
|
import org.mozilla.fenix.ext.settings
|
|
|
|
|
import org.mozilla.fenix.ext.showToolbar
|
|
|
|
|
import org.mozilla.fenix.settings.PhoneFeature
|
|
|
|
@ -43,6 +42,13 @@ const val AUTOPLAY_BLOCK_AUDIBLE = 1
|
|
|
|
|
const val AUTOPLAY_ALLOW_ON_WIFI = 2
|
|
|
|
|
const val AUTOPLAY_ALLOW_ALL = 3
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Possible values for autoplay setting changed extra key.
|
|
|
|
|
*/
|
|
|
|
|
enum class AutoplaySettingMetricsExtraKey {
|
|
|
|
|
BLOCK_CELLULAR, BLOCK_AUDIO, BLOCK_ALL, ALLOW_ALL
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@SuppressWarnings("TooManyFunctions")
|
|
|
|
|
class SitePermissionsManagePhoneFeatureFragment : Fragment() {
|
|
|
|
|
|
|
|
|
@ -190,29 +196,27 @@ class SitePermissionsManagePhoneFeatureFragment : Fragment() {
|
|
|
|
|
*/
|
|
|
|
|
private fun saveActionInSettings(autoplaySetting: Int) {
|
|
|
|
|
settings.setAutoplayUserSetting(autoplaySetting)
|
|
|
|
|
val setting: Event.AutoPlaySettingChanged.AutoplaySetting
|
|
|
|
|
|
|
|
|
|
val (audible, inaudible) = when (autoplaySetting) {
|
|
|
|
|
AUTOPLAY_ALLOW_ALL -> {
|
|
|
|
|
setting = Event.AutoPlaySettingChanged.AutoplaySetting.ALLOW_ALL
|
|
|
|
|
ALLOWED to ALLOWED
|
|
|
|
|
}
|
|
|
|
|
AUTOPLAY_ALLOW_ON_WIFI -> {
|
|
|
|
|
setting = Event.AutoPlaySettingChanged.AutoplaySetting.BLOCK_CELLULAR
|
|
|
|
|
BLOCKED to BLOCKED
|
|
|
|
|
}
|
|
|
|
|
AUTOPLAY_BLOCK_AUDIBLE -> {
|
|
|
|
|
setting = Event.AutoPlaySettingChanged.AutoplaySetting.BLOCK_AUDIO
|
|
|
|
|
BLOCKED to ALLOWED
|
|
|
|
|
}
|
|
|
|
|
AUTOPLAY_BLOCK_ALL -> {
|
|
|
|
|
setting = Event.AutoPlaySettingChanged.AutoplaySetting.BLOCK_ALL
|
|
|
|
|
BLOCKED to BLOCKED
|
|
|
|
|
}
|
|
|
|
|
else -> return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
requireComponents.analytics.metrics.track(Event.AutoPlaySettingChanged(setting))
|
|
|
|
|
autoplaySetting.toAutoplayMetricsExtraKey()?.let { extraKey ->
|
|
|
|
|
Autoplay.settingChanged.record(Autoplay.SettingChangedExtra(extraKey))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
settings.setSitePermissionsPhoneFeatureAction(AUTOPLAY_AUDIBLE, audible)
|
|
|
|
|
settings.setSitePermissionsPhoneFeatureAction(AUTOPLAY_INAUDIBLE, inaudible)
|
|
|
|
|
context?.components?.useCases?.sessionUseCases?.reload?.invoke()
|
|
|
|
@ -269,4 +273,17 @@ class SitePermissionsManagePhoneFeatureFragment : Fragment() {
|
|
|
|
|
this
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Returns a [AutoplaySettingMetricsExtraKey] from an AUTOPLAY setting value.
|
|
|
|
|
*/
|
|
|
|
|
private fun Int.toAutoplayMetricsExtraKey(): String? {
|
|
|
|
|
return when (this) {
|
|
|
|
|
AUTOPLAY_BLOCK_ALL -> AutoplaySettingMetricsExtraKey.BLOCK_ALL.name.lowercase()
|
|
|
|
|
AUTOPLAY_BLOCK_AUDIBLE -> AutoplaySettingMetricsExtraKey.BLOCK_AUDIO.name.lowercase()
|
|
|
|
|
AUTOPLAY_ALLOW_ON_WIFI -> AutoplaySettingMetricsExtraKey.BLOCK_CELLULAR.name.lowercase()
|
|
|
|
|
AUTOPLAY_ALLOW_ALL -> AutoplaySettingMetricsExtraKey.ALLOW_ALL.name.lowercase()
|
|
|
|
|
else -> null
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|