Merge "Hide toggle to Turn on Wi-Fi automatically preference in Search settings" into tm-qpr-dev

This commit is contained in:
TreeHugger Robot
2022-09-05 07:51:36 +00:00
committed by Android (Google) Code Review
2 changed files with 56 additions and 8 deletions

View File

@@ -89,6 +89,13 @@ public class WifiWakeupPreferenceController extends TogglePreferenceController i
@Override @Override
public int getAvailabilityStatus() { public int getAvailabilityStatus() {
// Since mFragment is set only when entering Network preferences settings. So when
// mFragment == null, we can assume that the object is created by Search settings.
// When Search settings is called, if the dependent condition is not enabled, then
// return DISABLED_DEPENDENT_SETTING to hide the toggle.
if (mFragment == null && (!getLocationEnabled() || !getWifiScanningEnabled())) {
return DISABLED_DEPENDENT_SETTING;
}
return AVAILABLE; return AVAILABLE;
} }
@@ -96,17 +103,16 @@ public class WifiWakeupPreferenceController extends TogglePreferenceController i
public boolean isChecked() { public boolean isChecked() {
return getWifiWakeupEnabled() return getWifiWakeupEnabled()
&& getWifiScanningEnabled() && getWifiScanningEnabled()
&& mLocationManager.isLocationEnabled(); && getLocationEnabled();
} }
@Override @Override
public boolean setChecked(boolean isChecked) { public boolean setChecked(boolean isChecked) {
if (isChecked) { if (isChecked) {
if (!getLocationEnabled()) {
if (mFragment == null) { if (mFragment == null) {
throw new IllegalStateException("No fragment to start activity"); throw new IllegalStateException("No fragment to start activity");
} }
if (!mLocationManager.isLocationEnabled()) {
final Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); final Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
mFragment.startActivityForResult(intent, WIFI_WAKEUP_REQUEST_CODE); mFragment.startActivityForResult(intent, WIFI_WAKEUP_REQUEST_CODE);
return false; return false;
@@ -128,7 +134,7 @@ public class WifiWakeupPreferenceController extends TogglePreferenceController i
@Override @Override
public CharSequence getSummary() { public CharSequence getSummary() {
if (!mLocationManager.isLocationEnabled()) { if (!getLocationEnabled()) {
return getNoLocationSummary(); return getNoLocationSummary();
} else { } else {
return mContext.getText(R.string.wifi_wakeup_summary); return mContext.getText(R.string.wifi_wakeup_summary);
@@ -151,12 +157,16 @@ public class WifiWakeupPreferenceController extends TogglePreferenceController i
if (requestCode != WIFI_WAKEUP_REQUEST_CODE) { if (requestCode != WIFI_WAKEUP_REQUEST_CODE) {
return; return;
} }
if (mLocationManager.isLocationEnabled() && getWifiScanningEnabled()) { if (getLocationEnabled() && getWifiScanningEnabled()) {
setWifiWakeupEnabled(true); setWifiWakeupEnabled(true);
updateState(mPreference); updateState(mPreference);
} }
} }
private boolean getLocationEnabled() {
return mLocationManager.isLocationEnabled();
}
private boolean getWifiScanningEnabled() { private boolean getWifiScanningEnabled() {
return mWifiManager.isScanAlwaysAvailable(); return mWifiManager.isScanAlwaysAvailable();
} }

View File

@@ -16,6 +16,9 @@
package com.android.settings.wifi; package com.android.settings.wifi;
import static com.android.settings.core.BasePreferenceController.AVAILABLE;
import static com.android.settings.core.BasePreferenceController.DISABLED_DEPENDENT_SETTING;
import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.doReturn;
@@ -68,6 +71,41 @@ public class WifiWakeupPreferenceControllerTest {
doReturn(true).when(mLocationManager).isLocationEnabled(); doReturn(true).when(mLocationManager).isLocationEnabled();
} }
@Test
public void getAvailabilityStatus_fragmentIsNotNull_returnAvailable() {
mController.setFragment(mFragment);
assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
}
@Test
public void getAvailabilityStatus_fragmentIsNullAndLocationDisabled_returnDisabled() {
mController.setFragment(null);
when(mLocationManager.isLocationEnabled()).thenReturn(false);
assertThat(mController.getAvailabilityStatus()).isEqualTo(DISABLED_DEPENDENT_SETTING);
}
@Test
public void getAvailabilityStatus_fragmentIsNullAndWifiScanDisabled_returnDisabled() {
mController.setFragment(null);
when(mWifiManager.isScanAlwaysAvailable()).thenReturn(false);
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 @Test
public void setChecked_scanEnableLocationEnable_wifiWakeupEnable() { public void setChecked_scanEnableLocationEnable_wifiWakeupEnable() {
when(mWifiManager.isAutoWakeupEnabled()).thenReturn(false); when(mWifiManager.isAutoWakeupEnabled()).thenReturn(false);