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));