Add location check for Wifi Scanning notify message

Bug: 203471614
Test: make RunSettingsRoboTests ROBOTEST_FILTER=NetworkProviderSettingsTest
Change-Id: I0fccd1a8dfd8e6ca499a6f87a59772f70961bc1d
This commit is contained in:
changbetty
2021-10-20 14:02:03 +00:00
parent 11af4846b2
commit aab7b55926
2 changed files with 34 additions and 4 deletions

View File

@@ -27,6 +27,7 @@ import android.content.ContentResolver;
import android.content.Context; import android.content.Context;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.content.Intent; import android.content.Intent;
import android.location.LocationManager;
import android.net.NetworkTemplate; import android.net.NetworkTemplate;
import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiManager; import android.net.wifi.WifiManager;
@@ -756,7 +757,10 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
if (context == null) { if (context == null) {
return; return;
} }
if (isWifiEnabled || !mWifiManager.isScanAlwaysAvailable()) {
final LocationManager locationManager = context.getSystemService(LocationManager.class);
if (isWifiEnabled || !locationManager.isLocationEnabled()
|| !mWifiManager.isScanAlwaysAvailable()) {
mWifiStatusMessagePreference.setVisible(false); mWifiStatusMessagePreference.setVisible(false);
return; return;
} }

View File

@@ -38,6 +38,7 @@ import android.content.ContentResolver;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.res.Resources; import android.content.res.Resources;
import android.location.LocationManager;
import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiManager; import android.net.wifi.WifiManager;
import android.os.Bundle; import android.os.Bundle;
@@ -98,6 +99,8 @@ public class NetworkProviderSettingsTest {
@Mock @Mock
private UserManager mUserManager; private UserManager mUserManager;
@Mock @Mock
private LocationManager mLocationManager;
@Mock
private AirplaneModeEnabler mAirplaneModeEnabler; private AirplaneModeEnabler mAirplaneModeEnabler;
@Mock @Mock
private DataUsagePreference mDataUsagePreference; private DataUsagePreference mDataUsagePreference;
@@ -133,6 +136,7 @@ public class NetworkProviderSettingsTest {
doReturn(mPowerManager).when(mContext).getSystemService(PowerManager.class); doReturn(mPowerManager).when(mContext).getSystemService(PowerManager.class);
doReturn(mWifiManager).when(mContext).getSystemService(WifiManager.class); doReturn(mWifiManager).when(mContext).getSystemService(WifiManager.class);
doReturn(mUserManager).when(mContext).getSystemService(Context.USER_SERVICE); doReturn(mUserManager).when(mContext).getSystemService(Context.USER_SERVICE);
doReturn(mLocationManager).when(mContext).getSystemService(LocationManager.class);
when(mUserManager.hasBaseUserRestriction(any(), any())).thenReturn(true); when(mUserManager.hasBaseUserRestriction(any(), any())).thenReturn(true);
doReturn(mContext).when(mPreferenceManager).getContext(); doReturn(mContext).when(mPreferenceManager).getContext();
mNetworkProviderSettings.mAddWifiNetworkPreference = new AddWifiNetworkPreference(mContext); mNetworkProviderSettings.mAddWifiNetworkPreference = new AddWifiNetworkPreference(mContext);
@@ -543,8 +547,9 @@ public class NetworkProviderSettingsTest {
} }
@Test @Test
public void setWifiScanMessage_wifiOffScanOn_footerIsVisible() { public void setWifiScanMessage_wifiOffLocationOnScanOn_footerIsVisible() {
when(mWifiManager.isScanAlwaysAvailable()).thenReturn(true); when(mWifiManager.isScanAlwaysAvailable()).thenReturn(true);
when(mLocationManager.isLocationEnabled()).thenReturn(true);
mNetworkProviderSettings.setWifiScanMessage(/* isWifiEnabled */ false); mNetworkProviderSettings.setWifiScanMessage(/* isWifiEnabled */ false);
@@ -554,8 +559,29 @@ public class NetworkProviderSettingsTest {
} }
@Test @Test
public void setWifiScanMessage_wifiOffScanOff_footerIsInvisible() { public void setWifiScanMessage_wifiOffLocationOnScanOff_footerIsInvisible() {
when(mWifiManager.isScanAlwaysAvailable()).thenReturn(false); when(mWifiManager.isScanAlwaysAvailable()).thenReturn(false);
when(mLocationManager.isLocationEnabled()).thenReturn(true);
mNetworkProviderSettings.setWifiScanMessage(/* isWifiEnabled */ false);
assertThat(mNetworkProviderSettings.mWifiStatusMessagePreference.isVisible()).isFalse();
}
@Test
public void setWifiScanMessage_wifiOffLocationOffScanOn_footerIsInvisible() {
when(mWifiManager.isScanAlwaysAvailable()).thenReturn(true);
when(mLocationManager.isLocationEnabled()).thenReturn(false);
mNetworkProviderSettings.setWifiScanMessage(/* isWifiEnabled */ false);
assertThat(mNetworkProviderSettings.mWifiStatusMessagePreference.isVisible()).isFalse();
}
@Test
public void setWifiScanMessage_wifiOffLocationOffScanOff_footerIsInvisible() {
when(mWifiManager.isScanAlwaysAvailable()).thenReturn(false);
when(mLocationManager.isLocationEnabled()).thenReturn(false);
mNetworkProviderSettings.setWifiScanMessage(/* isWifiEnabled */ false); mNetworkProviderSettings.setWifiScanMessage(/* isWifiEnabled */ false);