wifi: get the correct mainline version when wifi is disabled

update getWifiStackVersion() to return the correct mainline version
even when wifi is disabled.

Bug: 166835054
Test: atest com.android.server.wifi
Test: manual test to confirm post-boot detection can detect SW version
change correctly

Change-Id: I3eb878145a761452ddcfdd0b5c424e78212fc799
Merged-In: I3eb878145a761452ddcfdd0b5c424e78212fc799
diff --git a/service/java/com/android/server/wifi/WifiHealthMonitor.java b/service/java/com/android/server/wifi/WifiHealthMonitor.java
index 7b68ffc..b21ea51 100644
--- a/service/java/com/android/server/wifi/WifiHealthMonitor.java
+++ b/service/java/com/android/server/wifi/WifiHealthMonitor.java
@@ -330,8 +330,20 @@
      * @Return a non-zero value if version code is available, 0 otherwise.
      */
     public long getWifiStackVersion() {
-        WifiSoftwareBuildInfo currentBuild = getWifiSystemInfoStats().getCurrSoftwareBuildInfo();
-        return (currentBuild == null) ? 0 : currentBuild.getWifiStackVersion();
+        PackageManager packageManager = mContext.getPackageManager();
+        long wifiStackVersion = 0;
+        try {
+            ModuleInfo wifiModule = packageManager.getModuleInfo(
+                    WIFI_APEX_NAME, PackageManager.MODULE_APEX_NAME);
+            String wifiPackageName = wifiModule.getPackageName();
+            if (wifiPackageName != null) {
+                wifiStackVersion = packageManager.getPackageInfo(
+                        wifiPackageName, PackageManager.MATCH_APEX).getLongVersionCode();
+            }
+        } catch (PackageManager.NameNotFoundException e) {
+            Log.e(TAG, " Hit PackageManager exception", e);
+        }
+        return wifiStackVersion;
     }
 
     private synchronized void dailyDetectionHandler() {
@@ -540,19 +552,7 @@
         if (!mWifiEnabled) {
             return null;
         }
-        PackageManager packageManager = mContext.getPackageManager();
-        long wifiStackVersion = 0;
-        try {
-            ModuleInfo wifiModule = packageManager.getModuleInfo(
-                    WIFI_APEX_NAME, PackageManager.MODULE_APEX_NAME);
-            String wifiPackageName = wifiModule.getPackageName();
-            if (wifiPackageName != null) {
-                wifiStackVersion = packageManager.getPackageInfo(
-                        wifiPackageName, PackageManager.MATCH_APEX).getLongVersionCode();
-            }
-        } catch (PackageManager.NameNotFoundException e) {
-            Log.e(TAG, " Hit PackageManager exception", e);
-        }
+        long wifiStackVersion = getWifiStackVersion();
         String osBuildVersion = replaceNullByEmptyString(Build.DISPLAY);
         if (mWifiNative == null) {
             return null;
diff --git a/tests/wifitests/src/com/android/server/wifi/WifiHealthMonitorTest.java b/tests/wifitests/src/com/android/server/wifi/WifiHealthMonitorTest.java
index 1f52499..c679954 100644
--- a/tests/wifitests/src/com/android/server/wifi/WifiHealthMonitorTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/WifiHealthMonitorTest.java
@@ -327,7 +327,7 @@
         // trigger extractCurrentSoftwareBuildInfo() call to update currSoftwareBuildInfo
         mWifiHealthMonitor.installMemoryStoreSetUpDetectionAlarm(mMemoryStore);
         mWifiHealthMonitor.setWifiEnabled(true);
-        assertEquals(0, mWifiHealthMonitor.getWifiStackVersion());
+        assertEquals(MODULE_VERSION, mWifiHealthMonitor.getWifiStackVersion());
         millisecondsPass(5000);
         mWifiScanner.startScan(mScanSettings, mScanListener);
         mAlarmManager.dispatch(WifiHealthMonitor.POST_BOOT_DETECTION_TIMER_TAG);