From 06e6cfa696b063b8dac0116f89852ee9c8ceb762 Mon Sep 17 00:00:00 2001 From: ekager Date: Mon, 22 Jun 2020 21:41:28 -0400 Subject: [PATCH] For #5636 - Unregisters wifiConnectedListener when setting changes, sets default blocked --- ...tePermissionsManagePhoneFeatureFragment.kt | 2 +- .../wifi/SitePermissionsWifiIntegration.kt | 25 +++++++++++++++---- 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/org/mozilla/fenix/settings/sitepermissions/SitePermissionsManagePhoneFeatureFragment.kt b/app/src/main/java/org/mozilla/fenix/settings/sitepermissions/SitePermissionsManagePhoneFeatureFragment.kt index 7332dc33c..11b0a4f4d 100644 --- a/app/src/main/java/org/mozilla/fenix/settings/sitepermissions/SitePermissionsManagePhoneFeatureFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/settings/sitepermissions/SitePermissionsManagePhoneFeatureFragment.kt @@ -184,7 +184,7 @@ class SitePermissionsManagePhoneFeatureFragment : Fragment() { AUTOPLAY_ALLOW_ALL, AUTOPLAY_ALLOW_ON_WIFI -> { settings.setAutoplayUserSetting(AUTOPLAY_ALLOW_ON_WIFI) - return + BLOCKED to BLOCKED } AUTOPLAY_BLOCK_AUDIBLE -> BLOCKED to ALLOWED AUTOPLAY_BLOCK_ALL -> BLOCKED to BLOCKED diff --git a/app/src/main/java/org/mozilla/fenix/wifi/SitePermissionsWifiIntegration.kt b/app/src/main/java/org/mozilla/fenix/wifi/SitePermissionsWifiIntegration.kt index f4aea3bac..eec7d25e6 100644 --- a/app/src/main/java/org/mozilla/fenix/wifi/SitePermissionsWifiIntegration.kt +++ b/app/src/main/java/org/mozilla/fenix/wifi/SitePermissionsWifiIntegration.kt @@ -21,15 +21,26 @@ class SitePermissionsWifiIntegration( ) : LifecycleAwareFeature { /** - * Adds listener for autplay setting [AUTOPLAY_ALLOW_ON_WIFI]. Sets all autoplay to allowed when + * Adds listener for autoplay setting [AUTOPLAY_ALLOW_ON_WIFI]. Sets all autoplay to allowed when * WIFI is connected, blocked otherwise. */ private val wifiConnectedListener: ((Boolean) -> Unit) by lazy { { connected: Boolean -> val setting = if (connected) SitePermissionsRules.Action.ALLOWED else SitePermissionsRules.Action.BLOCKED - settings.setSitePermissionsPhoneFeatureAction(PhoneFeature.AUTOPLAY_AUDIBLE, setting) - settings.setSitePermissionsPhoneFeatureAction(PhoneFeature.AUTOPLAY_INAUDIBLE, setting) + if (settings.getAutoplayUserSetting(default = AUTOPLAY_BLOCK_ALL) == AUTOPLAY_ALLOW_ON_WIFI) { + settings.setSitePermissionsPhoneFeatureAction( + PhoneFeature.AUTOPLAY_AUDIBLE, + setting + ) + settings.setSitePermissionsPhoneFeatureAction( + PhoneFeature.AUTOPLAY_INAUDIBLE, + setting + ) + } else { + // The autoplay setting has changed, we can remove the listener + removeWifiConnectedListener() + } } } @@ -55,7 +66,11 @@ class SitePermissionsWifiIntegration( // only works while WIFI is active, so we are not using AUTOPLAY_ALLOW_ON_WIFI (or this class). // Once that is fixed, [start] and [maybeAddWifiConnectedListener] will need to be called on // activity startup. - override fun start() { wifiConnectionMonitor.start() } + override fun start() { + wifiConnectionMonitor.start() + } - override fun stop() { wifiConnectionMonitor.stop() } + override fun stop() { + wifiConnectionMonitor.stop() + } }