Loading packages/SettingsProvider/src/com/android/providers/settings/SettingsBackupAgent.java +23 −4 Original line number Diff line number Diff line Loading @@ -212,6 +212,8 @@ public class SettingsBackupAgent extends BackupAgentHelper { private static final String ERROR_IO_EXCEPTION = "io_exception"; private static final String ERROR_FAILED_TO_RESTORE_SOFTAP_CONFIG = "failed_to_restore_softap_config"; private static final String ERROR_FAILED_TO_RESTORE_WIFI_CONFIG = "failed_to_restore_wifi_config"; // Name of the temporary file we use during full backup/restore. This is Loading Loading @@ -1455,8 +1457,14 @@ public class SettingsBackupAgent extends BackupAgentHelper { return baos.toByteArray(); } private byte[] getNewWifiConfigData() { return mWifiManager.retrieveBackupData(); @VisibleForTesting byte[] getNewWifiConfigData() { byte[] data = mWifiManager.retrieveBackupData(); if (areAgentMetricsEnabled) { // We're unable to determine how many settings this includes, so we'll just log 1. numberOfSettingsPerKey.put(KEY_WIFI_NEW_CONFIG, 1); } return data; } private byte[] getLocaleSettings() { Loading @@ -1468,12 +1476,23 @@ public class SettingsBackupAgent extends BackupAgentHelper { return localeList.toLanguageTags().getBytes(); } private void restoreNewWifiConfigData(byte[] bytes) { @VisibleForTesting void restoreNewWifiConfigData(byte[] bytes) { if (DEBUG_BACKUP) { Log.v(TAG, "Applying restored wifi data"); } if (areAgentMetricsEnabled) { try { mWifiManager.restoreBackupData(bytes); mBackupRestoreEventLogger.logItemsRestored(KEY_WIFI_NEW_CONFIG, /* count= */ 1); } catch (Exception e) { mBackupRestoreEventLogger.logItemsRestoreFailed( KEY_WIFI_NEW_CONFIG, /* count= */ 1, ERROR_FAILED_TO_RESTORE_WIFI_CONFIG); } } else { mWifiManager.restoreBackupData(bytes); } } private void restoreNetworkPolicies(byte[] data) { NetworkPolicyManager networkPolicyManager = Loading packages/SettingsProvider/test/src/com/android/providers/settings/SettingsBackupAgentTest.java +72 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.providers.settings; import static com.android.providers.settings.SettingsBackupRestoreKeys.KEY_WIFI_NEW_CONFIG; import static com.android.providers.settings.SettingsBackupRestoreKeys.KEY_SOFTAP_CONFIG; import static junit.framework.Assert.assertEquals; Loading @@ -28,6 +29,8 @@ import static org.junit.Assert.assertArrayEquals; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.doThrow; import static org.mockito.Mockito.when; import android.annotation.Nullable; Loading Loading @@ -69,6 +72,7 @@ import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.junit.MockitoJUnit; import org.mockito.junit.MockitoRule; Loading Loading @@ -834,6 +838,74 @@ public class SettingsBackupAgentTest extends BaseSettingsProviderTest { assertNull(getLoggingResultForDatatype(KEY_SOFTAP_CONFIG, mAgentUnderTest)); } @Test @EnableFlags(com.android.server.backup.Flags.FLAG_ENABLE_METRICS_SETTINGS_BACKUP_AGENTS) public void getNewWifiConfigData_flagIsEnabled_numberOfSettingsInKeyAreRecorded() { mAgentUnderTest.onCreate( UserHandle.SYSTEM, BackupDestination.CLOUD, OperationType.BACKUP); when(mWifiManager.retrieveBackupData()).thenReturn(null); mAgentUnderTest.getNewWifiConfigData(); assertEquals(mAgentUnderTest.getNumberOfSettingsPerKey(KEY_WIFI_NEW_CONFIG), 1); } @Test @DisableFlags(com.android.server.backup.Flags.FLAG_ENABLE_METRICS_SETTINGS_BACKUP_AGENTS) public void getNewWifiConfigData_flagIsNotEnabled_numberOfSettingsInKeyAreNotRecorded() { mAgentUnderTest.onCreate( UserHandle.SYSTEM, BackupDestination.CLOUD, OperationType.BACKUP); when(mWifiManager.retrieveBackupData()).thenReturn(null); mAgentUnderTest.getNewWifiConfigData(); assertEquals(mAgentUnderTest.getNumberOfSettingsPerKey(KEY_WIFI_NEW_CONFIG), 0); } @Test @EnableFlags(com.android.server.backup.Flags.FLAG_ENABLE_METRICS_SETTINGS_BACKUP_AGENTS) public void restoreNewWifiConfigData_flagIsEnabled_restoreIsSuccessful_successMetricsAreLogged() { mAgentUnderTest.onCreate( UserHandle.SYSTEM, BackupDestination.CLOUD, OperationType.RESTORE); doNothing().when(mWifiManager).restoreBackupData(any()); mAgentUnderTest.restoreNewWifiConfigData(new byte[] {}); DataTypeResult loggingResult = getLoggingResultForDatatype(KEY_WIFI_NEW_CONFIG, mAgentUnderTest); assertNotNull(loggingResult); assertEquals(loggingResult.getSuccessCount(), 1); } @Test @EnableFlags(com.android.server.backup.Flags.FLAG_ENABLE_METRICS_SETTINGS_BACKUP_AGENTS) public void restoreNewWifiConfigData_flagIsEnabled_restoreIsNotSuccessful_failureMetricsAreLogged() { mAgentUnderTest.onCreate( UserHandle.SYSTEM, BackupDestination.CLOUD, OperationType.RESTORE); doThrow(new RuntimeException()).when(mWifiManager).restoreBackupData(any()); mAgentUnderTest.restoreNewWifiConfigData(new byte[] {}); DataTypeResult loggingResult = getLoggingResultForDatatype(KEY_WIFI_NEW_CONFIG, mAgentUnderTest); assertNotNull(loggingResult); assertEquals(loggingResult.getFailCount(), 1); } @Test @DisableFlags(com.android.server.backup.Flags.FLAG_ENABLE_METRICS_SETTINGS_BACKUP_AGENTS) public void restoreNewWifiConfigData_flagIsNotEnabled_metricsAreNotLogged() { mAgentUnderTest.onCreate( UserHandle.SYSTEM, BackupDestination.CLOUD, OperationType.RESTORE); doNothing().when(mWifiManager).restoreBackupData(any()); mAgentUnderTest.restoreNewWifiConfigData(new byte[] {}); assertNull(getLoggingResultForDatatype(KEY_WIFI_NEW_CONFIG, mAgentUnderTest)); } private byte[] generateBackupData(Map<String, String> keyValueData) { int totalBytes = 0; for (String key : keyValueData.keySet()) { Loading Loading
packages/SettingsProvider/src/com/android/providers/settings/SettingsBackupAgent.java +23 −4 Original line number Diff line number Diff line Loading @@ -212,6 +212,8 @@ public class SettingsBackupAgent extends BackupAgentHelper { private static final String ERROR_IO_EXCEPTION = "io_exception"; private static final String ERROR_FAILED_TO_RESTORE_SOFTAP_CONFIG = "failed_to_restore_softap_config"; private static final String ERROR_FAILED_TO_RESTORE_WIFI_CONFIG = "failed_to_restore_wifi_config"; // Name of the temporary file we use during full backup/restore. This is Loading Loading @@ -1455,8 +1457,14 @@ public class SettingsBackupAgent extends BackupAgentHelper { return baos.toByteArray(); } private byte[] getNewWifiConfigData() { return mWifiManager.retrieveBackupData(); @VisibleForTesting byte[] getNewWifiConfigData() { byte[] data = mWifiManager.retrieveBackupData(); if (areAgentMetricsEnabled) { // We're unable to determine how many settings this includes, so we'll just log 1. numberOfSettingsPerKey.put(KEY_WIFI_NEW_CONFIG, 1); } return data; } private byte[] getLocaleSettings() { Loading @@ -1468,12 +1476,23 @@ public class SettingsBackupAgent extends BackupAgentHelper { return localeList.toLanguageTags().getBytes(); } private void restoreNewWifiConfigData(byte[] bytes) { @VisibleForTesting void restoreNewWifiConfigData(byte[] bytes) { if (DEBUG_BACKUP) { Log.v(TAG, "Applying restored wifi data"); } if (areAgentMetricsEnabled) { try { mWifiManager.restoreBackupData(bytes); mBackupRestoreEventLogger.logItemsRestored(KEY_WIFI_NEW_CONFIG, /* count= */ 1); } catch (Exception e) { mBackupRestoreEventLogger.logItemsRestoreFailed( KEY_WIFI_NEW_CONFIG, /* count= */ 1, ERROR_FAILED_TO_RESTORE_WIFI_CONFIG); } } else { mWifiManager.restoreBackupData(bytes); } } private void restoreNetworkPolicies(byte[] data) { NetworkPolicyManager networkPolicyManager = Loading
packages/SettingsProvider/test/src/com/android/providers/settings/SettingsBackupAgentTest.java +72 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.providers.settings; import static com.android.providers.settings.SettingsBackupRestoreKeys.KEY_WIFI_NEW_CONFIG; import static com.android.providers.settings.SettingsBackupRestoreKeys.KEY_SOFTAP_CONFIG; import static junit.framework.Assert.assertEquals; Loading @@ -28,6 +29,8 @@ import static org.junit.Assert.assertArrayEquals; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.doThrow; import static org.mockito.Mockito.when; import android.annotation.Nullable; Loading Loading @@ -69,6 +72,7 @@ import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.junit.MockitoJUnit; import org.mockito.junit.MockitoRule; Loading Loading @@ -834,6 +838,74 @@ public class SettingsBackupAgentTest extends BaseSettingsProviderTest { assertNull(getLoggingResultForDatatype(KEY_SOFTAP_CONFIG, mAgentUnderTest)); } @Test @EnableFlags(com.android.server.backup.Flags.FLAG_ENABLE_METRICS_SETTINGS_BACKUP_AGENTS) public void getNewWifiConfigData_flagIsEnabled_numberOfSettingsInKeyAreRecorded() { mAgentUnderTest.onCreate( UserHandle.SYSTEM, BackupDestination.CLOUD, OperationType.BACKUP); when(mWifiManager.retrieveBackupData()).thenReturn(null); mAgentUnderTest.getNewWifiConfigData(); assertEquals(mAgentUnderTest.getNumberOfSettingsPerKey(KEY_WIFI_NEW_CONFIG), 1); } @Test @DisableFlags(com.android.server.backup.Flags.FLAG_ENABLE_METRICS_SETTINGS_BACKUP_AGENTS) public void getNewWifiConfigData_flagIsNotEnabled_numberOfSettingsInKeyAreNotRecorded() { mAgentUnderTest.onCreate( UserHandle.SYSTEM, BackupDestination.CLOUD, OperationType.BACKUP); when(mWifiManager.retrieveBackupData()).thenReturn(null); mAgentUnderTest.getNewWifiConfigData(); assertEquals(mAgentUnderTest.getNumberOfSettingsPerKey(KEY_WIFI_NEW_CONFIG), 0); } @Test @EnableFlags(com.android.server.backup.Flags.FLAG_ENABLE_METRICS_SETTINGS_BACKUP_AGENTS) public void restoreNewWifiConfigData_flagIsEnabled_restoreIsSuccessful_successMetricsAreLogged() { mAgentUnderTest.onCreate( UserHandle.SYSTEM, BackupDestination.CLOUD, OperationType.RESTORE); doNothing().when(mWifiManager).restoreBackupData(any()); mAgentUnderTest.restoreNewWifiConfigData(new byte[] {}); DataTypeResult loggingResult = getLoggingResultForDatatype(KEY_WIFI_NEW_CONFIG, mAgentUnderTest); assertNotNull(loggingResult); assertEquals(loggingResult.getSuccessCount(), 1); } @Test @EnableFlags(com.android.server.backup.Flags.FLAG_ENABLE_METRICS_SETTINGS_BACKUP_AGENTS) public void restoreNewWifiConfigData_flagIsEnabled_restoreIsNotSuccessful_failureMetricsAreLogged() { mAgentUnderTest.onCreate( UserHandle.SYSTEM, BackupDestination.CLOUD, OperationType.RESTORE); doThrow(new RuntimeException()).when(mWifiManager).restoreBackupData(any()); mAgentUnderTest.restoreNewWifiConfigData(new byte[] {}); DataTypeResult loggingResult = getLoggingResultForDatatype(KEY_WIFI_NEW_CONFIG, mAgentUnderTest); assertNotNull(loggingResult); assertEquals(loggingResult.getFailCount(), 1); } @Test @DisableFlags(com.android.server.backup.Flags.FLAG_ENABLE_METRICS_SETTINGS_BACKUP_AGENTS) public void restoreNewWifiConfigData_flagIsNotEnabled_metricsAreNotLogged() { mAgentUnderTest.onCreate( UserHandle.SYSTEM, BackupDestination.CLOUD, OperationType.RESTORE); doNothing().when(mWifiManager).restoreBackupData(any()); mAgentUnderTest.restoreNewWifiConfigData(new byte[] {}); assertNull(getLoggingResultForDatatype(KEY_WIFI_NEW_CONFIG, mAgentUnderTest)); } private byte[] generateBackupData(Map<String, String> keyValueData) { int totalBytes = 0; for (String key : keyValueData.keySet()) { Loading