diff options
author | Ruslan Tkhakokhov <rthakohov@google.com> | 2020-04-24 10:06:45 +0100 |
---|---|---|
committer | Ruslan Tkhakokhov <rthakohov@google.com> | 2020-04-24 09:42:01 +0000 |
commit | f9c5bd837c14d597c54bb50c842410602cf14318 (patch) | |
tree | 9001a63a10c41a0af002ce105672ee8f36040402 /services/robotests | |
parent | 4ddfdaf64177686137edd2d8f674055e72af371e (diff) |
Skip backup/restore of wallpaper package
Do not backup or restore wallpaper package when
'backup_skip_user_facing_data' is set. See https://b.corp.google.com/issues/153940088#comment2 for context.
Bug: 153940088
Test: 1. atest UserBackupManagerServiceTest
2. atest PerformUnifiedRestoreTaskTest
3. atest CtsBackupTestCases
4. atest CtsBackupHostTestCases
5. Manual:
1) adb shell settings secure put backup_skip_user_facing_data
1
2) adb shell bmgr backupnow com.android.wallpaperbackup ->
verify skipped
3) adb shell bmgr restore 1 com.android.wallpaperbackup ->
verify skipped
4) adb shell settings secure put backup_skip_user_facing_data
0 -> verify com.android.wallpaperbackup is backed up /
restored
Change-Id: Iedd0c4030a635e294a04d35bd525ca852c929b92
Diffstat (limited to 'services/robotests')
-rw-r--r-- | services/robotests/backup/src/com/android/server/backup/UserBackupManagerServiceTest.java | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/services/robotests/backup/src/com/android/server/backup/UserBackupManagerServiceTest.java b/services/robotests/backup/src/com/android/server/backup/UserBackupManagerServiceTest.java index fea61aa43442..dfe75ed50cd4 100644 --- a/services/robotests/backup/src/com/android/server/backup/UserBackupManagerServiceTest.java +++ b/services/robotests/backup/src/com/android/server/backup/UserBackupManagerServiceTest.java @@ -30,10 +30,13 @@ import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; +import static org.mockito.Mockito.spy; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import static org.robolectric.Shadows.shadowOf; +import static org.testng.Assert.assertFalse; +import static org.testng.Assert.assertTrue; import static org.testng.Assert.expectThrows; import android.app.backup.BackupManager; @@ -86,6 +89,7 @@ import java.io.IOException; import java.io.PrintWriter; import java.io.StringWriter; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; /** @@ -104,6 +108,7 @@ public class UserBackupManagerServiceTest { private static final String TAG = "BMSTest"; private static final String PACKAGE_1 = "some.package.1"; private static final String PACKAGE_2 = "some.package.2"; + private static final String USER_FACING_PACKAGE = "user.facing.package"; private static final int USER_ID = 10; @Mock private TransportManager mTransportManager; @@ -1186,6 +1191,47 @@ public class UserBackupManagerServiceTest { eq(packageTrackingReceiver), eq(UserHandle.of(USER_ID)), any(), any(), any()); } + @Test + public void testFilterUserFacingPackages_shouldSkipUserFacing_filtersUserFacing() { + List<PackageInfo> packages = Arrays.asList(getPackageInfo(USER_FACING_PACKAGE), + getPackageInfo(PACKAGE_1)); + UserBackupManagerService backupManagerService = spy( + createUserBackupManagerServiceAndRunTasks()); + when(backupManagerService.shouldSkipUserFacingData()).thenReturn(true); + when(backupManagerService.shouldSkipPackage(eq(USER_FACING_PACKAGE))).thenReturn(true); + + List<PackageInfo> filteredPackages = backupManagerService.filterUserFacingPackages( + packages); + + assertFalse(containsPackage(filteredPackages, USER_FACING_PACKAGE)); + assertTrue(containsPackage(filteredPackages, PACKAGE_1)); + } + + @Test + public void testFilterUserFacingPackages_shouldNotSkipUserFacing_doesNotFilterUserFacing() { + List<PackageInfo> packages = Arrays.asList(getPackageInfo(USER_FACING_PACKAGE), + getPackageInfo(PACKAGE_1)); + UserBackupManagerService backupManagerService = spy( + createUserBackupManagerServiceAndRunTasks()); + when(backupManagerService.shouldSkipUserFacingData()).thenReturn(false); + when(backupManagerService.shouldSkipPackage(eq(USER_FACING_PACKAGE))).thenReturn(true); + + List<PackageInfo> filteredPackages = backupManagerService.filterUserFacingPackages( + packages); + + assertTrue(containsPackage(filteredPackages, USER_FACING_PACKAGE)); + assertTrue(containsPackage(filteredPackages, PACKAGE_1)); + } + + private static boolean containsPackage(List<PackageInfo> packages, String targetPackage) { + for (PackageInfo packageInfo : packages) { + if (targetPackage.equals(packageInfo.packageName)) { + return true; + } + } + return false; + } + private UserBackupManagerService createUserBackupManagerServiceAndRunTasks() { return BackupManagerServiceTestUtils.createUserBackupManagerServiceAndRunTasks( USER_ID, mContext, mBackupThread, mBaseStateDir, mDataDir, mTransportManager); |