From aab7b55926d8a43609a26abef0341f3a63115d7d Mon Sep 17 00:00:00 2001 From: changbetty Date: Wed, 20 Oct 2021 14:02:03 +0000 Subject: [PATCH] Add location check for Wifi Scanning notify message Bug: 203471614 Test: make RunSettingsRoboTests ROBOTEST_FILTER=NetworkProviderSettingsTest Change-Id: I0fccd1a8dfd8e6ca499a6f87a59772f70961bc1d --- .../network/NetworkProviderSettings.java | 6 +++- .../network/NetworkProviderSettingsTest.java | 32 +++++++++++++++++-- 2 files changed, 34 insertions(+), 4 deletions(-) diff --git a/src/com/android/settings/network/NetworkProviderSettings.java b/src/com/android/settings/network/NetworkProviderSettings.java index 8a4929a591b..fccd87415ac 100644 --- a/src/com/android/settings/network/NetworkProviderSettings.java +++ b/src/com/android/settings/network/NetworkProviderSettings.java @@ -27,6 +27,7 @@ import android.content.ContentResolver; 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 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment 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 e048849ae9c..be8bf3a1d33 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.ContentResolver; 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 @@ public class NetworkProviderSettingsTest { @Mock private UserManager mUserManager; @Mock + private LocationManager mLocationManager; + @Mock private AirplaneModeEnabler mAirplaneModeEnabler; @Mock private DataUsagePreference mDataUsagePreference; @@ -133,6 +136,7 @@ public class NetworkProviderSettingsTest { 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 @@ public class NetworkProviderSettingsTest { } @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);