diff options
3 files changed, 27 insertions, 6 deletions
diff --git a/service/java/com/android/server/wifi/WifiConfigManager.java b/service/java/com/android/server/wifi/WifiConfigManager.java index 981733d97..29c6d4fb5 100644 --- a/service/java/com/android/server/wifi/WifiConfigManager.java +++ b/service/java/com/android/server/wifi/WifiConfigManager.java @@ -2698,8 +2698,8 @@ public class WifiConfigManager { /** * Migrate data from legacy store files. The function performs the following operations: - * 1. Check if the legacy store files are present. - * 2. If yes, read all the data from the store files. + * 1. Check if the legacy store files are present and the new store files are absent on device. + * 2. Read all the data from the store files. * 3. Save it to the new store files. * 4. Delete the legacy store file. * @@ -2710,6 +2710,12 @@ public class WifiConfigManager { Log.d(TAG, "Legacy store files not found. No migration needed!"); return true; } + if (mWifiConfigStore.areStoresPresent()) { + Log.d(TAG, "New store files found. No migration needed!" + + " Remove legacy store files"); + mWifiConfigStoreLegacy.removeStores(); + return true; + } WifiConfigStoreDataLegacy storeData = mWifiConfigStoreLegacy.read(); Log.d(TAG, "Reading from legacy store completed"); loadInternalData(storeData.getConfigurations(), new ArrayList<WifiConfiguration>(), diff --git a/service/java/com/android/server/wifi/WifiConfigStoreLegacy.java b/service/java/com/android/server/wifi/WifiConfigStoreLegacy.java index 867775511..39e48a5cb 100644 --- a/service/java/com/android/server/wifi/WifiConfigStoreLegacy.java +++ b/service/java/com/android/server/wifi/WifiConfigStoreLegacy.java @@ -301,24 +301,20 @@ public class WifiConfigStoreLegacy { // First remove all networks from wpa_supplicant and save configuration. if (!mWifiNative.removeAllNetworks()) { Log.e(TAG, "Removing networks from wpa_supplicant failed"); - return false; } // Now remove the ipconfig.txt file. if (!IP_CONFIG_FILE.delete()) { Log.e(TAG, "Removing ipconfig.txt failed"); - return false; } // Now finally remove network history.txt if (!NETWORK_HISTORY_FILE.delete()) { Log.e(TAG, "Removing networkHistory.txt failed"); - return false; } if (!PPS_FILE.delete()) { Log.e(TAG, "Removing PerProviderSubscription.conf failed"); - return false; } Log.i(TAG, "All legacy stores removed!"); diff --git a/tests/wifitests/src/com/android/server/wifi/WifiConfigManagerTest.java b/tests/wifitests/src/com/android/server/wifi/WifiConfigManagerTest.java index 7509c18b3..a85e5740b 100644 --- a/tests/wifitests/src/com/android/server/wifi/WifiConfigManagerTest.java +++ b/tests/wifitests/src/com/android/server/wifi/WifiConfigManagerTest.java @@ -2555,6 +2555,7 @@ public class WifiConfigManagerTest { new WifiConfigStoreDataLegacy(networks, deletedEphermalSSIDs); when(mWifiConfigStoreLegacy.areStoresPresent()).thenReturn(true); + when(mWifiConfigStore.areStoresPresent()).thenReturn(false); when(mWifiConfigStoreLegacy.read()).thenReturn(storeData); // Now trigger the migration from legacy store. This should populate the in memory list with @@ -2588,6 +2589,24 @@ public class WifiConfigManagerTest { } /** + * Verifies the loading of networks using {@link WifiConfigManager#migrateFromLegacyStore()} ()} + * does not attempt to migrate data from legacy stores when the new store files are present + * (i.e migration was already done once). + */ + @Test + public void testNewStoreFilesPresentNoMigrationFromLegacyStore() throws Exception { + when(mWifiConfigStore.areStoresPresent()).thenReturn(true); + when(mWifiConfigStoreLegacy.areStoresPresent()).thenReturn(true); + + // Now trigger a migration from legacy store. + assertTrue(mWifiConfigManager.migrateFromLegacyStore()); + + verify(mWifiConfigStoreLegacy, never()).read(); + // Verify that we went ahead and deleted the old store files. + verify(mWifiConfigStoreLegacy).removeStores(); + } + + /** * Verifies the loading of networks using {@link WifiConfigManager#loadFromStore()} does * not attempt to read from any of the stores (new or legacy) when the store files are * not present. |