Add location check for Wifi Scanning notify message
Bug: 203471614
Test: make RunSettingsRoboTests ROBOTEST_FILTER=NetworkProviderSettingsTest
Change-Id: I0fccd1a8dfd8e6ca499a6f87a59772f70961bc1d
diff --git a/src/com/android/settings/network/NetworkProviderSettings.java b/src/com/android/settings/network/NetworkProviderSettings.java
index 8a4929a..fccd874 100644
--- a/src/com/android/settings/network/NetworkProviderSettings.java
+++ b/src/com/android/settings/network/NetworkProviderSettings.java
@@ -27,6 +27,7 @@
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
+import android.location.LocationManager;
import android.net.NetworkTemplate;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiManager;
@@ -756,7 +757,10 @@
if (context == null) {
return;
}
- if (isWifiEnabled || !mWifiManager.isScanAlwaysAvailable()) {
+
+ final LocationManager locationManager = context.getSystemService(LocationManager.class);
+ if (isWifiEnabled || !locationManager.isLocationEnabled()
+ || !mWifiManager.isScanAlwaysAvailable()) {
mWifiStatusMessagePreference.setVisible(false);
return;
}
diff --git a/tests/robotests/src/com/android/settings/network/NetworkProviderSettingsTest.java b/tests/robotests/src/com/android/settings/network/NetworkProviderSettingsTest.java
index e048849..be8bf3a 100644
--- a/tests/robotests/src/com/android/settings/network/NetworkProviderSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/network/NetworkProviderSettingsTest.java
@@ -38,6 +38,7 @@
import android.content.Context;
import android.content.Intent;
import android.content.res.Resources;
+import android.location.LocationManager;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiManager;
import android.os.Bundle;
@@ -98,6 +99,8 @@
@Mock
private UserManager mUserManager;
@Mock
+ private LocationManager mLocationManager;
+ @Mock
private AirplaneModeEnabler mAirplaneModeEnabler;
@Mock
private DataUsagePreference mDataUsagePreference;
@@ -133,6 +136,7 @@
doReturn(mPowerManager).when(mContext).getSystemService(PowerManager.class);
doReturn(mWifiManager).when(mContext).getSystemService(WifiManager.class);
doReturn(mUserManager).when(mContext).getSystemService(Context.USER_SERVICE);
+ doReturn(mLocationManager).when(mContext).getSystemService(LocationManager.class);
when(mUserManager.hasBaseUserRestriction(any(), any())).thenReturn(true);
doReturn(mContext).when(mPreferenceManager).getContext();
mNetworkProviderSettings.mAddWifiNetworkPreference = new AddWifiNetworkPreference(mContext);
@@ -543,19 +547,41 @@
}
@Test
- public void setWifiScanMessage_wifiOffScanOn_footerIsVisible() {
+ public void setWifiScanMessage_wifiOffLocationOnScanOn_footerIsVisible() {
when(mWifiManager.isScanAlwaysAvailable()).thenReturn(true);
+ when(mLocationManager.isLocationEnabled()).thenReturn(true);
mNetworkProviderSettings.setWifiScanMessage(/* isWifiEnabled */ false);
assertThat(mNetworkProviderSettings.mWifiStatusMessagePreference.isVisible()).isTrue();
assertThat(mNetworkProviderSettings.mWifiStatusMessagePreference.getTitle().length())
- .isNotEqualTo(0);
+ .isNotEqualTo(0);
}
@Test
- public void setWifiScanMessage_wifiOffScanOff_footerIsInvisible() {
+ public void setWifiScanMessage_wifiOffLocationOnScanOff_footerIsInvisible() {
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);