WifiConfigManager: Persist immediately on enable/disable network

The change in network state due to public API calls should be
immediately persisted (not wait for the buffered write from
updateNetworkSelectionStatus to kick in after 10 seconds).

This was detected in the test: |test_reboot_configstore_reconnect| which
connects to a network and immediately reboots the device. This prevents
the last buffered write (for enabling network) to be flushed out and
hence the network is reloaded as disabled.

Bug: 35811529
Test: Unit tests
Change-Id: I6f769429df67d83ad014ef552901a7b1419c7721
diff --git a/service/java/com/android/server/wifi/WifiConfigManager.java b/service/java/com/android/server/wifi/WifiConfigManager.java
index 63168e9..f5789ab 100644
--- a/service/java/com/android/server/wifi/WifiConfigManager.java
+++ b/service/java/com/android/server/wifi/WifiConfigManager.java
@@ -1369,6 +1369,7 @@
         if (disableOthers) {
             setLastSelectedNetwork(networkId);
         }
+        saveToStore(true);
         return true;
     }
 
@@ -1403,6 +1404,7 @@
         if (networkId == mLastSelectedNetworkId) {
             clearLastSelectedNetwork();
         }
+        saveToStore(true);
         return true;
     }
 
diff --git a/service/tests/wifitests/src/com/android/server/wifi/WifiConfigManagerTest.java b/service/tests/wifitests/src/com/android/server/wifi/WifiConfigManagerTest.java
index 951f8e1..dffd9ba 100644
--- a/service/tests/wifitests/src/com/android/server/wifi/WifiConfigManagerTest.java
+++ b/service/tests/wifitests/src/com/android/server/wifi/WifiConfigManagerTest.java
@@ -707,7 +707,7 @@
      * {@link WifiConfigManager#disableNetwork(int, int)}.
      */
     @Test
-    public void testEnableDisableNetwork() {
+    public void testEnableDisableNetwork() throws Exception {
         WifiConfiguration openNetwork = WifiConfigurationTestUtil.createOpenNetwork();
 
         NetworkUpdateResult result = verifyAddNetworkToWifiConfigManager(openNetwork);
@@ -719,6 +719,7 @@
         NetworkSelectionStatus retrievedStatus = retrievedNetwork.getNetworkSelectionStatus();
         assertTrue(retrievedStatus.isNetworkEnabled());
         verifyUpdateNetworkStatus(retrievedNetwork, WifiConfiguration.Status.ENABLED);
+        mContextConfigStoreMockOrder.verify(mWifiConfigStore).write(eq(true));
 
         // Now set it disabled.
         assertTrue(mWifiConfigManager.disableNetwork(result.getNetworkId(), TEST_CREATOR_UID));
@@ -726,6 +727,7 @@
         retrievedStatus = retrievedNetwork.getNetworkSelectionStatus();
         assertTrue(retrievedStatus.isNetworkPermanentlyDisabled());
         verifyUpdateNetworkStatus(retrievedNetwork, WifiConfiguration.Status.DISABLED);
+        mContextConfigStoreMockOrder.verify(mWifiConfigStore).write(eq(true));
     }
 
     /**