summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--service/java/com/android/server/wifi/WifiConfigManager.java10
-rw-r--r--service/java/com/android/server/wifi/WifiConfigStoreLegacy.java4
-rw-r--r--tests/wifitests/src/com/android/server/wifi/WifiConfigManagerTest.java19
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.