WifiServiceImpl: Return scan always available toggle state
APM mode on disables scan mode, but the API to retrieve the toggle state
should return the direct toggle state.
Bug: 171553041
Test: atest com.android.server.wifi
Change-Id: Idf1f87122c994e7c9084ab2e9df051dcc7937218
Merged-In: Idf1f87122c994e7c9084ab2e9df051dcc7937218
(cherry picked from commit 2d45af24f95d89f8683ce19ae3bbfc8df1ef9b29)
diff --git a/service/java/com/android/server/wifi/WifiScanAlwaysAvailableSettingsCompatibility.java b/service/java/com/android/server/wifi/WifiScanAlwaysAvailableSettingsCompatibility.java
index 6abdd31..f2552bf 100644
--- a/service/java/com/android/server/wifi/WifiScanAlwaysAvailableSettingsCompatibility.java
+++ b/service/java/com/android/server/wifi/WifiScanAlwaysAvailableSettingsCompatibility.java
@@ -77,7 +77,8 @@
mContentResolver, SETTINGS_GLOBAL_WIFI_SCAN_ALWAYS_AVAILABLE, 0)
== 1;
// Check if the new state is different from our current state.
- if (mWifiSettingsStore.isScanAlwaysAvailable() != settingsIsAvailable) {
+ if (mWifiSettingsStore.isScanAlwaysAvailableToggleEnabled()
+ != settingsIsAvailable) {
Log.i(TAG, "settings changed, new value: " + settingsIsAvailable
+ ", triggering update");
mWifiSettingsStore.handleWifiScanAlwaysAvailableToggled(settingsIsAvailable);
diff --git a/service/java/com/android/server/wifi/WifiServiceImpl.java b/service/java/com/android/server/wifi/WifiServiceImpl.java
index 5361cf4..a22c8fa 100644
--- a/service/java/com/android/server/wifi/WifiServiceImpl.java
+++ b/service/java/com/android/server/wifi/WifiServiceImpl.java
@@ -1980,7 +1980,7 @@
if (mVerboseLoggingEnabled) {
mLog.info("isScanAlwaysAvailable uid=%").c(Binder.getCallingUid()).flush();
}
- return mSettingsStore.isScanAlwaysAvailable();
+ return mSettingsStore.isScanAlwaysAvailableToggleEnabled();
}
/**
@@ -3230,7 +3230,8 @@
WifiConfigManager.ENHANCED_MAC_RANDOMIZATION_FEATURE_FORCE_ENABLE_FLAG, 0) == 1
? true : false;
mWifiMetrics.setEnhancedMacRandomizationForceEnabled(isEnhancedMacRandEnabled);
- mWifiMetrics.setIsScanningAlwaysEnabled(mSettingsStore.isScanAlwaysAvailable());
+ mWifiMetrics.setIsScanningAlwaysEnabled(
+ mSettingsStore.isScanAlwaysAvailableToggleEnabled());
mWifiMetrics.setVerboseLoggingEnabled(mVerboseLoggingEnabled);
mWifiMetrics.setWifiWakeEnabled(mWifiInjector.getWakeupController().isEnabled());
}
diff --git a/service/java/com/android/server/wifi/WifiSettingsStore.java b/service/java/com/android/server/wifi/WifiSettingsStore.java
index 5cc27d0..64fda57 100644
--- a/service/java/com/android/server/wifi/WifiSettingsStore.java
+++ b/service/java/com/android/server/wifi/WifiSettingsStore.java
@@ -65,6 +65,10 @@
return mAirplaneModeOn;
}
+ public synchronized boolean isScanAlwaysAvailableToggleEnabled() {
+ return getPersistedScanAlwaysAvailable();
+ }
+
public synchronized boolean isScanAlwaysAvailable() {
return !mAirplaneModeOn && getPersistedScanAlwaysAvailable();
}
diff --git a/tests/wifitests/src/com/android/server/wifi/WifiScanAlwaysAvailableSettingsCompatibilityTest.java b/tests/wifitests/src/com/android/server/wifi/WifiScanAlwaysAvailableSettingsCompatibilityTest.java
index 2caa813..fd9e7f0 100644
--- a/tests/wifitests/src/com/android/server/wifi/WifiScanAlwaysAvailableSettingsCompatibilityTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/WifiScanAlwaysAvailableSettingsCompatibilityTest.java
@@ -92,7 +92,7 @@
ContentObserver contentObserver = mContentObserverArgumentCaptor.getValue();
assertNotNull(contentObserver);
- when(mWifiSettingsStore.isScanAlwaysAvailable()).thenReturn(false);
+ when(mWifiSettingsStore.isScanAlwaysAvailableToggleEnabled()).thenReturn(false);
when(mFrameworkFacade.getIntegerSetting(
any(ContentResolver.class),
eq(SETTINGS_GLOBAL_WIFI_SCAN_ALWAYS_AVAILABLE),
@@ -103,7 +103,7 @@
verify(mWifiSettingsStore).handleWifiScanAlwaysAvailableToggled(true);
verify(mActiveModeWarden).scanAlwaysModeChanged();
- when(mWifiSettingsStore.isScanAlwaysAvailable()).thenReturn(true);
+ when(mWifiSettingsStore.isScanAlwaysAvailableToggleEnabled()).thenReturn(true);
when(mFrameworkFacade.getIntegerSetting(
any(ContentResolver.class),
eq(SETTINGS_GLOBAL_WIFI_SCAN_ALWAYS_AVAILABLE),
diff --git a/tests/wifitests/src/com/android/server/wifi/WifiServiceImplTest.java b/tests/wifitests/src/com/android/server/wifi/WifiServiceImplTest.java
index 22561a1..9a412ec 100644
--- a/tests/wifitests/src/com/android/server/wifi/WifiServiceImplTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/WifiServiceImplTest.java
@@ -5858,6 +5858,13 @@
verify(mActiveModeWarden, never()).scanAlwaysModeChanged();
}
+ @Test
+ public void testIsScanAlwaysAvailable() {
+ when(mSettingsStore.isScanAlwaysAvailableToggleEnabled()).thenReturn(true);
+ assertTrue(mWifiServiceImpl.isScanAlwaysAvailable());
+ verify(mSettingsStore).isScanAlwaysAvailableToggleEnabled();
+ }
+
private List<ScanResult> createScanResultList() {
return Collections.singletonList(new ScanResult(WifiSsid.createFromAsciiEncoded(TEST_SSID),
TEST_SSID, TEST_BSSID, 1245, 0, TEST_CAP, -78, 2450, 1025, 22, 33, 20, 0, 0, true));