Loading src/com/android/settings/wifi/ConfigureWifiSettings.java +2 −1 Original line number Diff line number Diff line Loading @@ -74,7 +74,8 @@ public class ConfigureWifiSettings extends DashboardFragment { @Override protected List<AbstractPreferenceController> createPreferenceControllers(Context context) { mWifiWakeupPreferenceController = new WifiWakeupPreferenceController(context, this); mWifiWakeupPreferenceController = new WifiWakeupPreferenceController(context, this, getSettingsLifecycle()); mUseOpenWifiPreferenceController = new UseOpenWifiPreferenceController(context, this, getSettingsLifecycle()); final WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE); Loading src/com/android/settings/wifi/WifiWakeupPreferenceController.java +29 −2 Original line number Diff line number Diff line Loading @@ -19,8 +19,10 @@ package com.android.settings.wifi; import static com.android.settings.wifi.ConfigureWifiSettings.WIFI_WAKEUP_REQUEST_CODE; import android.app.Service; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.location.LocationManager; import android.provider.Settings; import android.text.TextUtils; Loading @@ -36,12 +38,17 @@ import com.android.settings.core.PreferenceControllerMixin; import com.android.settings.dashboard.DashboardFragment; import com.android.settings.utils.AnnotationSpan; import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.events.OnPause; import com.android.settingslib.core.lifecycle.events.OnResume; /** * {@link PreferenceControllerMixin} that controls whether the Wi-Fi Wakeup feature should be * enabled. */ public class WifiWakeupPreferenceController extends AbstractPreferenceController { public class WifiWakeupPreferenceController extends AbstractPreferenceController implements LifecycleObserver, OnPause, OnResume { private static final String TAG = "WifiWakeupPrefController"; private static final String KEY_ENABLE_WIFI_WAKEUP = "enable_wifi_wakeup"; Loading @@ -52,11 +59,21 @@ public class WifiWakeupPreferenceController extends AbstractPreferenceController SwitchPreference mPreference; @VisibleForTesting LocationManager mLocationManager; private final BroadcastReceiver mLocationReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { updateState(mPreference); } }; private final IntentFilter mLocationFilter = new IntentFilter(LocationManager.MODE_CHANGED_ACTION); public WifiWakeupPreferenceController(Context context, DashboardFragment fragment) { public WifiWakeupPreferenceController(Context context, DashboardFragment fragment, Lifecycle lifecycle) { super(context); mFragment = fragment; mLocationManager = (LocationManager) context.getSystemService(Service.LOCATION_SERVICE); lifecycle.addObserver(this); } @Override Loading Loading @@ -155,4 +172,14 @@ public class WifiWakeupPreferenceController extends AbstractPreferenceController Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.WIFI_WAKEUP_ENABLED, enabled ? 1 : 0); } @Override public void onResume() { mContext.registerReceiver(mLocationReceiver, mLocationFilter); } @Override public void onPause() { mContext.unregisterReceiver(mLocationReceiver); } } src/com/android/settings/wifi/p2p/WifiP2pPreferenceController.java +25 −1 Original line number Diff line number Diff line Loading @@ -15,10 +15,12 @@ */ package com.android.settings.wifi.p2p; import android.app.Service; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.location.LocationManager; import android.net.wifi.WifiManager; import androidx.annotation.VisibleForTesting; Loading Loading @@ -49,6 +51,17 @@ public class WifiP2pPreferenceController extends AbstractPreferenceController } }; private final IntentFilter mFilter = new IntentFilter(WifiManager.WIFI_STATE_CHANGED_ACTION); private final LocationManager mLocationManager; private final BroadcastReceiver mLocationReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { if (mWifiDirectPref != null) { updateState(mWifiDirectPref); } } }; private final IntentFilter mLocationFilter = new IntentFilter(LocationManager.MODE_CHANGED_ACTION); private Preference mWifiDirectPref; Loading @@ -57,6 +70,7 @@ public class WifiP2pPreferenceController extends AbstractPreferenceController super(context); mWifiManager = wifiManager; lifecycle.addObserver(this); mLocationManager = (LocationManager) context.getSystemService(Service.LOCATION_SERVICE); } @Override Loading @@ -66,14 +80,22 @@ public class WifiP2pPreferenceController extends AbstractPreferenceController togglePreferences(); } @Override public void updateState(Preference preference) { super.updateState(preference); preference.setEnabled(mLocationManager.isLocationEnabled() && mWifiManager.isWifiEnabled()); } @Override public void onResume() { mContext.registerReceiver(mReceiver, mFilter); mContext.registerReceiver(mLocationReceiver, mLocationFilter); } @Override public void onPause() { mContext.unregisterReceiver(mReceiver); mContext.unregisterReceiver(mLocationReceiver); } @Override Loading @@ -88,7 +110,9 @@ public class WifiP2pPreferenceController extends AbstractPreferenceController private void togglePreferences() { if (mWifiDirectPref != null) { mWifiDirectPref.setEnabled(mWifiManager.isWifiEnabled()); mWifiDirectPref.setEnabled( mWifiManager.isWifiEnabled() && mLocationManager.isLocationEnabled()); } } } tests/robotests/src/com/android/settings/wifi/WifiWakeupPreferenceControllerTest.java +4 −1 Original line number Diff line number Diff line Loading @@ -34,6 +34,7 @@ import androidx.preference.SwitchPreference; import com.android.settings.R; import com.android.settings.dashboard.DashboardFragment; import com.android.settingslib.core.lifecycle.Lifecycle; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; Loading @@ -53,12 +54,14 @@ public class WifiWakeupPreferenceControllerTest { private LocationManager mLocationManager; @Mock private SwitchPreference mPreference; @Mock private Lifecycle mLifecycle; @Before public void setUp() { MockitoAnnotations.initMocks(this); mContext = RuntimeEnvironment.application; mController = new WifiWakeupPreferenceController(mContext, mFragment); mController = new WifiWakeupPreferenceController(mContext, mFragment, mLifecycle); mController.mLocationManager = mLocationManager; mController.mPreference = mPreference; Loading tests/robotests/src/com/android/settings/wifi/p2p/WifiP2PPreferenceControllerTest.java +17 −2 Original line number Diff line number Diff line Loading @@ -22,20 +22,24 @@ import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.app.Service; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.location.LocationManager; import android.net.wifi.WifiManager; import androidx.lifecycle.LifecycleOwner; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; import com.android.settings.dashboard.DashboardFragment; import com.android.settingslib.core.lifecycle.Lifecycle; import org.junit.Before; Loading @@ -57,6 +61,8 @@ public class WifiP2PPreferenceControllerTest { private PreferenceScreen mScreen; @Mock private Preference mWifiDirectPreference; @Mock private LocationManager mLocationManager; private Lifecycle mLifecycle; private LifecycleOwner mLifecycleOwner; Loading @@ -69,6 +75,7 @@ public class WifiP2PPreferenceControllerTest { mLifecycle = new Lifecycle(mLifecycleOwner); when(mContext.getSystemService(WifiManager.class)).thenReturn(mWifiManager); when(mScreen.findPreference(anyString())).thenReturn(mWifiDirectPreference); when(mContext.getSystemService(eq(Service.LOCATION_SERVICE))).thenReturn(mLocationManager); mController = new WifiP2pPreferenceController(mContext, mLifecycle, mWifiManager); } Loading @@ -80,19 +87,21 @@ public class WifiP2PPreferenceControllerTest { @Test public void testOnResume_shouldRegisterListener() { mLifecycle.handleLifecycleEvent(ON_RESUME); verify(mContext).registerReceiver(any(BroadcastReceiver.class), any(IntentFilter.class)); verify(mContext, times(2)).registerReceiver( any(BroadcastReceiver.class), any(IntentFilter.class)); } @Test public void testOnPause_shouldUnregisterListener() { mLifecycle.handleLifecycleEvent(ON_RESUME); mLifecycle.handleLifecycleEvent(ON_PAUSE); verify(mContext).unregisterReceiver(any(BroadcastReceiver.class)); verify(mContext, times(2)).unregisterReceiver(any(BroadcastReceiver.class)); } @Test public void testWifiStateChange_shouldToggleEnabledState() { when(mWifiManager.isWifiEnabled()).thenReturn(true); when(mLocationManager.isLocationEnabled()).thenReturn(true); //Sets the preferences. mController.displayPreference(mScreen); Loading @@ -110,11 +119,17 @@ public class WifiP2PPreferenceControllerTest { @Test public void testDisplayPreference_shouldToggleEnabledState() { when(mWifiManager.isWifiEnabled()).thenReturn(true); when(mLocationManager.isLocationEnabled()).thenReturn(true); mController.displayPreference(mScreen); verify(mWifiDirectPreference).setEnabled(true); when(mWifiManager.isWifiEnabled()).thenReturn(false); mController.displayPreference(mScreen); verify(mWifiDirectPreference).setEnabled(false); when(mWifiManager.isWifiEnabled()).thenReturn(true); when(mLocationManager.isLocationEnabled()).thenReturn(false); mController.displayPreference(mScreen); verify(mWifiDirectPreference, times(2)).setEnabled(false); } } Loading
src/com/android/settings/wifi/ConfigureWifiSettings.java +2 −1 Original line number Diff line number Diff line Loading @@ -74,7 +74,8 @@ public class ConfigureWifiSettings extends DashboardFragment { @Override protected List<AbstractPreferenceController> createPreferenceControllers(Context context) { mWifiWakeupPreferenceController = new WifiWakeupPreferenceController(context, this); mWifiWakeupPreferenceController = new WifiWakeupPreferenceController(context, this, getSettingsLifecycle()); mUseOpenWifiPreferenceController = new UseOpenWifiPreferenceController(context, this, getSettingsLifecycle()); final WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE); Loading
src/com/android/settings/wifi/WifiWakeupPreferenceController.java +29 −2 Original line number Diff line number Diff line Loading @@ -19,8 +19,10 @@ package com.android.settings.wifi; import static com.android.settings.wifi.ConfigureWifiSettings.WIFI_WAKEUP_REQUEST_CODE; import android.app.Service; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.location.LocationManager; import android.provider.Settings; import android.text.TextUtils; Loading @@ -36,12 +38,17 @@ import com.android.settings.core.PreferenceControllerMixin; import com.android.settings.dashboard.DashboardFragment; import com.android.settings.utils.AnnotationSpan; import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.events.OnPause; import com.android.settingslib.core.lifecycle.events.OnResume; /** * {@link PreferenceControllerMixin} that controls whether the Wi-Fi Wakeup feature should be * enabled. */ public class WifiWakeupPreferenceController extends AbstractPreferenceController { public class WifiWakeupPreferenceController extends AbstractPreferenceController implements LifecycleObserver, OnPause, OnResume { private static final String TAG = "WifiWakeupPrefController"; private static final String KEY_ENABLE_WIFI_WAKEUP = "enable_wifi_wakeup"; Loading @@ -52,11 +59,21 @@ public class WifiWakeupPreferenceController extends AbstractPreferenceController SwitchPreference mPreference; @VisibleForTesting LocationManager mLocationManager; private final BroadcastReceiver mLocationReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { updateState(mPreference); } }; private final IntentFilter mLocationFilter = new IntentFilter(LocationManager.MODE_CHANGED_ACTION); public WifiWakeupPreferenceController(Context context, DashboardFragment fragment) { public WifiWakeupPreferenceController(Context context, DashboardFragment fragment, Lifecycle lifecycle) { super(context); mFragment = fragment; mLocationManager = (LocationManager) context.getSystemService(Service.LOCATION_SERVICE); lifecycle.addObserver(this); } @Override Loading Loading @@ -155,4 +172,14 @@ public class WifiWakeupPreferenceController extends AbstractPreferenceController Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.WIFI_WAKEUP_ENABLED, enabled ? 1 : 0); } @Override public void onResume() { mContext.registerReceiver(mLocationReceiver, mLocationFilter); } @Override public void onPause() { mContext.unregisterReceiver(mLocationReceiver); } }
src/com/android/settings/wifi/p2p/WifiP2pPreferenceController.java +25 −1 Original line number Diff line number Diff line Loading @@ -15,10 +15,12 @@ */ package com.android.settings.wifi.p2p; import android.app.Service; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.location.LocationManager; import android.net.wifi.WifiManager; import androidx.annotation.VisibleForTesting; Loading Loading @@ -49,6 +51,17 @@ public class WifiP2pPreferenceController extends AbstractPreferenceController } }; private final IntentFilter mFilter = new IntentFilter(WifiManager.WIFI_STATE_CHANGED_ACTION); private final LocationManager mLocationManager; private final BroadcastReceiver mLocationReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { if (mWifiDirectPref != null) { updateState(mWifiDirectPref); } } }; private final IntentFilter mLocationFilter = new IntentFilter(LocationManager.MODE_CHANGED_ACTION); private Preference mWifiDirectPref; Loading @@ -57,6 +70,7 @@ public class WifiP2pPreferenceController extends AbstractPreferenceController super(context); mWifiManager = wifiManager; lifecycle.addObserver(this); mLocationManager = (LocationManager) context.getSystemService(Service.LOCATION_SERVICE); } @Override Loading @@ -66,14 +80,22 @@ public class WifiP2pPreferenceController extends AbstractPreferenceController togglePreferences(); } @Override public void updateState(Preference preference) { super.updateState(preference); preference.setEnabled(mLocationManager.isLocationEnabled() && mWifiManager.isWifiEnabled()); } @Override public void onResume() { mContext.registerReceiver(mReceiver, mFilter); mContext.registerReceiver(mLocationReceiver, mLocationFilter); } @Override public void onPause() { mContext.unregisterReceiver(mReceiver); mContext.unregisterReceiver(mLocationReceiver); } @Override Loading @@ -88,7 +110,9 @@ public class WifiP2pPreferenceController extends AbstractPreferenceController private void togglePreferences() { if (mWifiDirectPref != null) { mWifiDirectPref.setEnabled(mWifiManager.isWifiEnabled()); mWifiDirectPref.setEnabled( mWifiManager.isWifiEnabled() && mLocationManager.isLocationEnabled()); } } }
tests/robotests/src/com/android/settings/wifi/WifiWakeupPreferenceControllerTest.java +4 −1 Original line number Diff line number Diff line Loading @@ -34,6 +34,7 @@ import androidx.preference.SwitchPreference; import com.android.settings.R; import com.android.settings.dashboard.DashboardFragment; import com.android.settingslib.core.lifecycle.Lifecycle; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; Loading @@ -53,12 +54,14 @@ public class WifiWakeupPreferenceControllerTest { private LocationManager mLocationManager; @Mock private SwitchPreference mPreference; @Mock private Lifecycle mLifecycle; @Before public void setUp() { MockitoAnnotations.initMocks(this); mContext = RuntimeEnvironment.application; mController = new WifiWakeupPreferenceController(mContext, mFragment); mController = new WifiWakeupPreferenceController(mContext, mFragment, mLifecycle); mController.mLocationManager = mLocationManager; mController.mPreference = mPreference; Loading
tests/robotests/src/com/android/settings/wifi/p2p/WifiP2PPreferenceControllerTest.java +17 −2 Original line number Diff line number Diff line Loading @@ -22,20 +22,24 @@ import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.app.Service; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.location.LocationManager; import android.net.wifi.WifiManager; import androidx.lifecycle.LifecycleOwner; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; import com.android.settings.dashboard.DashboardFragment; import com.android.settingslib.core.lifecycle.Lifecycle; import org.junit.Before; Loading @@ -57,6 +61,8 @@ public class WifiP2PPreferenceControllerTest { private PreferenceScreen mScreen; @Mock private Preference mWifiDirectPreference; @Mock private LocationManager mLocationManager; private Lifecycle mLifecycle; private LifecycleOwner mLifecycleOwner; Loading @@ -69,6 +75,7 @@ public class WifiP2PPreferenceControllerTest { mLifecycle = new Lifecycle(mLifecycleOwner); when(mContext.getSystemService(WifiManager.class)).thenReturn(mWifiManager); when(mScreen.findPreference(anyString())).thenReturn(mWifiDirectPreference); when(mContext.getSystemService(eq(Service.LOCATION_SERVICE))).thenReturn(mLocationManager); mController = new WifiP2pPreferenceController(mContext, mLifecycle, mWifiManager); } Loading @@ -80,19 +87,21 @@ public class WifiP2PPreferenceControllerTest { @Test public void testOnResume_shouldRegisterListener() { mLifecycle.handleLifecycleEvent(ON_RESUME); verify(mContext).registerReceiver(any(BroadcastReceiver.class), any(IntentFilter.class)); verify(mContext, times(2)).registerReceiver( any(BroadcastReceiver.class), any(IntentFilter.class)); } @Test public void testOnPause_shouldUnregisterListener() { mLifecycle.handleLifecycleEvent(ON_RESUME); mLifecycle.handleLifecycleEvent(ON_PAUSE); verify(mContext).unregisterReceiver(any(BroadcastReceiver.class)); verify(mContext, times(2)).unregisterReceiver(any(BroadcastReceiver.class)); } @Test public void testWifiStateChange_shouldToggleEnabledState() { when(mWifiManager.isWifiEnabled()).thenReturn(true); when(mLocationManager.isLocationEnabled()).thenReturn(true); //Sets the preferences. mController.displayPreference(mScreen); Loading @@ -110,11 +119,17 @@ public class WifiP2PPreferenceControllerTest { @Test public void testDisplayPreference_shouldToggleEnabledState() { when(mWifiManager.isWifiEnabled()).thenReturn(true); when(mLocationManager.isLocationEnabled()).thenReturn(true); mController.displayPreference(mScreen); verify(mWifiDirectPreference).setEnabled(true); when(mWifiManager.isWifiEnabled()).thenReturn(false); mController.displayPreference(mScreen); verify(mWifiDirectPreference).setEnabled(false); when(mWifiManager.isWifiEnabled()).thenReturn(true); when(mLocationManager.isLocationEnabled()).thenReturn(false); mController.displayPreference(mScreen); verify(mWifiDirectPreference, times(2)).setEnabled(false); } }