Refine WifiWakeupPreferenceController

- Move the check for mFragment to a suitable location to avoid unnecessary checks.

Bug: 235421460
Test: manual test
make RunSettingsRoboTests ROBOTEST_FILTER=WifiWakeupPreferenceControllerTest

Change-Id: I638cc6f2399b1332ee7a7092854d1e2442cacccd
This commit is contained in:
Weng Su
2022-09-03 02:29:59 +08:00
parent adbd13eb05
commit 0e570cd2f8
2 changed files with 16 additions and 4 deletions

View File

@@ -109,11 +109,11 @@ public class WifiWakeupPreferenceController extends TogglePreferenceController i
@Override
public boolean setChecked(boolean isChecked) {
if (isChecked) {
if (!getLocationEnabled()) {
if (mFragment == null) {
throw new IllegalStateException("No fragment to start activity");
}
if (!getLocationEnabled()) {
final Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
mFragment.startActivityForResult(intent, WIFI_WAKEUP_REQUEST_CODE);
return false;

View File

@@ -94,6 +94,18 @@ public class WifiWakeupPreferenceControllerTest {
assertThat(mController.getAvailabilityStatus()).isEqualTo(DISABLED_DEPENDENT_SETTING);
}
@Test
public void setChecked_mFragmentIsNullLocationEnable_wifiWakeupEnable() {
mController.setFragment(null);
when(mLocationManager.isLocationEnabled()).thenReturn(true);
when(mWifiManager.isScanAlwaysAvailable()).thenReturn(true);
when(mWifiManager.isAutoWakeupEnabled()).thenReturn(false);
mController.setChecked(true);
verify(mWifiManager).setAutoWakeupEnabled(true);
}
@Test
public void setChecked_scanEnableLocationEnable_wifiWakeupEnable() {
when(mWifiManager.isAutoWakeupEnabled()).thenReturn(false);