diff options
5 files changed, 59 insertions, 114 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 dfe75ed50cd4..06d51a4be920 100644 --- a/services/robotests/backup/src/com/android/server/backup/UserBackupManagerServiceTest.java +++ b/services/robotests/backup/src/com/android/server/backup/UserBackupManagerServiceTest.java @@ -61,7 +61,7 @@ import com.android.server.backup.testing.BackupManagerServiceTestUtils; import com.android.server.backup.testing.TransportData; import com.android.server.backup.testing.TransportTestUtils.TransportMock; import com.android.server.backup.transport.TransportNotRegisteredException; -import com.android.server.testing.shadows.ShadowAppBackupUtils; +import com.android.server.testing.shadows.ShadowBackupEligibilityRules; import com.android.server.testing.shadows.ShadowApplicationPackageManager; import com.android.server.testing.shadows.ShadowBinder; import com.android.server.testing.shadows.ShadowKeyValueBackupJob; @@ -99,7 +99,7 @@ import java.util.List; @RunWith(RobolectricTestRunner.class) @Config( shadows = { - ShadowAppBackupUtils.class, + ShadowBackupEligibilityRules.class, ShadowApplicationPackageManager.class, ShadowSystemServiceRegistry.class }) @@ -159,7 +159,7 @@ public class UserBackupManagerServiceTest { @After public void tearDown() throws Exception { mBackupThread.quit(); - ShadowAppBackupUtils.reset(); + ShadowBackupEligibilityRules.reset(); ShadowApplicationPackageManager.reset(); } @@ -236,7 +236,7 @@ public class UserBackupManagerServiceTest { mShadowContext.grantPermissions(android.Manifest.permission.BACKUP); TransportMock transportMock = setUpCurrentTransport(mTransportManager, backupTransport()); registerPackages(PACKAGE_1); - ShadowAppBackupUtils.setAppRunningAndEligibleForBackupWithTransport(PACKAGE_1); + ShadowBackupEligibilityRules.setAppRunningAndEligibleForBackupWithTransport(PACKAGE_1); UserBackupManagerService backupManagerService = createUserBackupManagerServiceAndRunTasks(); boolean result = backupManagerService.isAppEligibleForBackup(PACKAGE_1); @@ -255,7 +255,7 @@ public class UserBackupManagerServiceTest { mShadowContext.denyPermissions(android.Manifest.permission.BACKUP); setUpCurrentTransport(mTransportManager, mTransport); registerPackages(PACKAGE_1); - ShadowAppBackupUtils.setAppRunningAndEligibleForBackupWithTransport(PACKAGE_1); + ShadowBackupEligibilityRules.setAppRunningAndEligibleForBackupWithTransport(PACKAGE_1); UserBackupManagerService backupManagerService = createUserBackupManagerServiceAndRunTasks(); expectThrows( @@ -273,7 +273,7 @@ public class UserBackupManagerServiceTest { mShadowContext.grantPermissions(android.Manifest.permission.BACKUP); TransportMock transportMock = setUpCurrentTransport(mTransportManager, mTransport); registerPackages(PACKAGE_1, PACKAGE_2); - ShadowAppBackupUtils.setAppRunningAndEligibleForBackupWithTransport(PACKAGE_1); + ShadowBackupEligibilityRules.setAppRunningAndEligibleForBackupWithTransport(PACKAGE_1); UserBackupManagerService backupManagerService = createUserBackupManagerServiceAndRunTasks(); String[] filtered = @@ -801,7 +801,7 @@ public class UserBackupManagerServiceTest { mShadowContext.grantPermissions(android.Manifest.permission.BACKUP); for (String packageName : packages) { registerPackages(packageName); - ShadowAppBackupUtils.setAppRunningAndEligibleForBackupWithTransport(packageName); + ShadowBackupEligibilityRules.setAppRunningAndEligibleForBackupWithTransport(packageName); } setUpCurrentTransport(mTransportManager, mTransport); } @@ -962,7 +962,7 @@ public class UserBackupManagerServiceTest { @Config(shadows = ShadowKeyValueBackupTask.class) public void testRequestBackup_whenPackageIsFullBackup() throws Exception { setUpForRequestBackup(PACKAGE_1); - ShadowAppBackupUtils.setAppGetsFullBackup(PACKAGE_1); + ShadowBackupEligibilityRules.setAppGetsFullBackup(PACKAGE_1); UserBackupManagerService backupManagerService = createBackupManagerServiceForRequestBackup(); diff --git a/services/robotests/backup/src/com/android/server/backup/keyvalue/KeyValueBackupTaskTest.java b/services/robotests/backup/src/com/android/server/backup/keyvalue/KeyValueBackupTaskTest.java index b5c9375fcc0d..6184c4ed7f1a 100644 --- a/services/robotests/backup/src/com/android/server/backup/keyvalue/KeyValueBackupTaskTest.java +++ b/services/robotests/backup/src/com/android/server/backup/keyvalue/KeyValueBackupTaskTest.java @@ -115,6 +115,7 @@ import com.android.server.backup.testing.TestUtils.ThrowingRunnable; import com.android.server.backup.testing.TransportData; import com.android.server.backup.testing.TransportTestUtils; import com.android.server.backup.testing.TransportTestUtils.TransportMock; +import com.android.server.backup.utils.BackupEligibilityRules; import com.android.server.testing.shadows.FrameworkShadowLooper; import com.android.server.testing.shadows.ShadowApplicationPackageManager; import com.android.server.testing.shadows.ShadowBackupDataInput; @@ -176,6 +177,7 @@ public class KeyValueBackupTaskTest { private static final String BACKUP_AGENT_SHARED_PREFS_SYNCHRONIZER_CLASS = "android.app.backup.BackupAgent$SharedPrefsSynchronizer"; private static final int USER_ID = 10; + private static final int OPERATION_TYPE = BackupManager.OperationType.BACKUP; @Mock private TransportManager mTransportManager; @Mock private DataChangedJournal mOldJournal; @@ -183,6 +185,7 @@ public class KeyValueBackupTaskTest { @Mock private IBackupManagerMonitor mMonitor; @Mock private OnTaskFinishedListener mListener; @Mock private PackageManagerInternal mPackageManagerInternal; + private UserBackupManagerService mBackupManagerService; private TransportData mTransport; private ShadowLooper mShadowBackupLooper; @@ -198,6 +201,7 @@ public class KeyValueBackupTaskTest { private Looper mMainLooper; private FrameworkShadowLooper mShadowMainLooper; private Context mContext; + private BackupEligibilityRules mBackupEligibilityRules; @Before public void setUp() throws Exception { @@ -253,6 +257,8 @@ public class KeyValueBackupTaskTest { .thenReturn(PackageManager.COMPONENT_ENABLED_STATE_ENABLED); LocalServices.removeServiceForTest(PackageManagerInternal.class); LocalServices.addService(PackageManagerInternal.class, mPackageManagerInternal); + mBackupEligibilityRules = new BackupEligibilityRules(mPackageManager, + LocalServices.getService(PackageManagerInternal.class), USER_ID, OPERATION_TYPE); } @After @@ -479,7 +485,8 @@ public class KeyValueBackupTaskTest { TransportMock transportMock = setUpInitializedTransport(mTransport); setUpAgentWithData(PACKAGE_1); BackupAgent pmAgent = spy(createPmAgent()); - doReturn(forward(pmAgent)).when(mBackupManagerService).makeMetadataAgent(); + doReturn(forward(pmAgent)).when(mBackupManagerService) + .makeMetadataAgentWithEligibilityRules(mBackupEligibilityRules); KeyValueBackupTask task = createKeyValueBackupTask(transportMock, true, PACKAGE_1); runTask(task); @@ -492,7 +499,8 @@ public class KeyValueBackupTaskTest { TransportMock transportMock = setUpInitializedTransport(mTransport); setUpAgentWithData(PACKAGE_1); BackupAgent pmAgent = spy(createPmAgent()); - doReturn(forward(pmAgent)).when(mBackupManagerService).makeMetadataAgent(); + doReturn(forward(pmAgent)).when(mBackupManagerService) + .makeMetadataAgentWithEligibilityRules(mBackupEligibilityRules); KeyValueBackupTask task = createKeyValueBackupTask(transportMock, true, PACKAGE_1, PM_PACKAGE); @@ -506,7 +514,8 @@ public class KeyValueBackupTaskTest { TransportMock transportMock = setUpInitializedTransport(mTransport); setUpAgentWithData(PACKAGE_1); BackupAgent pmAgent = spy(createPmAgent()); - doReturn(forward(pmAgent)).when(mBackupManagerService).makeMetadataAgent(); + doReturn(forward(pmAgent)).when(mBackupManagerService) + .makeMetadataAgentWithEligibilityRules(mBackupEligibilityRules); KeyValueBackupTask task = createKeyValueBackupTask(transportMock, false, PACKAGE_1); runTask(task); @@ -742,7 +751,7 @@ public class KeyValueBackupTaskTest { verify(mBackupManagerService).setWorkSource(null); verify(mObserver).onResult(PACKAGE_1.packageName, ERROR_AGENT_FAILURE); - verify(mObserver).backupFinished(BackupManager.SUCCESS); + verify(mObserver).backupFinished(SUCCESS); assertBackupPendingFor(PACKAGE_1); } @@ -775,7 +784,7 @@ public class KeyValueBackupTaskTest { verify(mBackupManagerService).setWorkSource(null); verify(mObserver).onResult(PACKAGE_1.packageName, ERROR_AGENT_FAILURE); - verify(mObserver).backupFinished(BackupManager.SUCCESS); + verify(mObserver).backupFinished(SUCCESS); assertBackupPendingFor(PACKAGE_1); } @@ -792,7 +801,7 @@ public class KeyValueBackupTaskTest { verify(mBackupManagerService).setWorkSource(null); verify(mObserver).onResult(PACKAGE_1.packageName, ERROR_AGENT_FAILURE); - verify(mObserver).backupFinished(BackupManager.SUCCESS); + verify(mObserver).backupFinished(SUCCESS); assertBackupPendingFor(PACKAGE_1); } @@ -810,7 +819,7 @@ public class KeyValueBackupTaskTest { verify(mBackupManagerService).setWorkSource(null); verify(mObserver).onResult(PACKAGE_1.packageName, ERROR_AGENT_FAILURE); - verify(mObserver).backupFinished(BackupManager.SUCCESS); + verify(mObserver).backupFinished(SUCCESS); assertBackupPendingFor(PACKAGE_1); } @@ -1316,7 +1325,8 @@ public class KeyValueBackupTaskTest { argThat(packageInfo(PM_PACKAGE)), any(), anyInt())) .then(copyBackupDataTo(backupDataPath)); BackupAgent pmAgent = spy(createPmAgent()); - doReturn(forward(pmAgent)).when(mBackupManagerService).makeMetadataAgent(); + doReturn(forward(pmAgent)).when(mBackupManagerService) + .makeMetadataAgentWithEligibilityRules(mBackupEligibilityRules); agentOnBackupDo( pmAgent, (oldState, dataOutput, newState) -> { @@ -1380,7 +1390,8 @@ public class KeyValueBackupTaskTest { setUpAgent(PACKAGE_1); when(transportMock.transport.finishBackup()).thenReturn(BackupTransport.TRANSPORT_OK); BackupAgent pmAgent = spy(createPmAgent()); - doReturn(forward(pmAgent)).when(mBackupManagerService).makeMetadataAgent(); + doReturn(forward(pmAgent)).when(mBackupManagerService) + .makeMetadataAgentWithEligibilityRules(mBackupEligibilityRules); agentOnBackupDo( pmAgent, (oldState, dataOutput, newState) -> { @@ -1404,7 +1415,8 @@ public class KeyValueBackupTaskTest { setUpAgent(PACKAGE_1); when(transportMock.transport.finishBackup()).thenReturn(BackupTransport.TRANSPORT_OK); BackupAgent pmAgent = spy(createPmAgent()); - doReturn(forward(pmAgent)).when(mBackupManagerService).makeMetadataAgent(); + doReturn(forward(pmAgent)).when(mBackupManagerService) + .makeMetadataAgentWithEligibilityRules(mBackupEligibilityRules); agentOnBackupDo( pmAgent, (oldState, dataOutput, newState) -> { @@ -1669,7 +1681,7 @@ public class KeyValueBackupTaskTest { verify(mReporter).onPackageBackupTransportFailure(PACKAGE_1.packageName); verify(mReporter).onTransportNotInitialized(mTransport.transportName); - verify(mReporter).onBackupFinished(BackupManager.ERROR_TRANSPORT_ABORTED); + verify(mReporter).onBackupFinished(ERROR_TRANSPORT_ABORTED); } @Test @@ -1686,7 +1698,7 @@ public class KeyValueBackupTaskTest { verify(mReporter).onPackageBackupTransportFailure(PM_PACKAGE.packageName); verify(mReporter).onTransportNotInitialized(mTransport.transportName); - verify(mReporter).onBackupFinished(BackupManager.ERROR_TRANSPORT_ABORTED); + verify(mReporter).onBackupFinished(ERROR_TRANSPORT_ABORTED); } @Test @@ -1983,7 +1995,8 @@ public class KeyValueBackupTaskTest { public void testRunTask_whenPmAgentFails_reportsCorrectly() throws Exception { TransportMock transportMock = setUpInitializedTransport(mTransport); BackupAgent pmAgent = createThrowingPmAgent(new RuntimeException()); - when(mBackupManagerService.makeMetadataAgent()).thenReturn(pmAgent); + when(mBackupManagerService.makeMetadataAgentWithEligibilityRules( + mBackupEligibilityRules)).thenReturn(pmAgent); KeyValueBackupTask task = createKeyValueBackupTask(transportMock, PACKAGE_1); runTask(task); @@ -2001,7 +2014,8 @@ public class KeyValueBackupTaskTest { TransportMock transportMock = setUpInitializedTransport(mTransport); setUpAgent(PACKAGE_1); BackupAgent pmAgent = createThrowingPmAgent(new RuntimeException()); - doReturn(pmAgent).when(mBackupManagerService).makeMetadataAgent(); + doReturn(pmAgent).when(mBackupManagerService) + .makeMetadataAgentWithEligibilityRules(mBackupEligibilityRules); KeyValueBackupTask task = createKeyValueBackupTask(transportMock, PACKAGE_1); runTask(task); @@ -2014,7 +2028,8 @@ public class KeyValueBackupTaskTest { TransportMock transportMock = setUpInitializedTransport(mTransport); setUpAgent(PACKAGE_1); BackupAgent pmAgent = createThrowingPmAgent(new RuntimeException()); - doReturn(pmAgent).when(mBackupManagerService).makeMetadataAgent(); + doReturn(pmAgent).when(mBackupManagerService) + .makeMetadataAgentWithEligibilityRules(mBackupEligibilityRules); KeyValueBackupTask task = createKeyValueBackupTask(transportMock, PACKAGE_1); runTask(task); @@ -2027,7 +2042,8 @@ public class KeyValueBackupTaskTest { TransportMock transportMock = setUpInitializedTransport(mTransport); setUpAgent(PACKAGE_1); BackupAgent pmAgent = createThrowingPmAgent(new RuntimeException()); - doReturn(pmAgent).when(mBackupManagerService).makeMetadataAgent(); + doReturn(pmAgent).when(mBackupManagerService) + .makeMetadataAgentWithEligibilityRules(mBackupEligibilityRules); KeyValueBackupTask task = createKeyValueBackupTask(transportMock, PACKAGE_1); runTask(task); @@ -2040,7 +2056,8 @@ public class KeyValueBackupTaskTest { TransportMock transportMock = setUpInitializedTransport(mTransport); setUpAgent(PACKAGE_1); BackupAgent pmAgent = spy(createPmAgent()); - doReturn(forward(pmAgent)).when(mBackupManagerService).makeMetadataAgent(); + doReturn(forward(pmAgent)).when(mBackupManagerService) + .makeMetadataAgentWithEligibilityRules(mBackupEligibilityRules); KeyValueBackupTask task = createKeyValueBackupTask(transportMock, PACKAGE_1); agentOnBackupDo( pmAgent, (oldState, dataOutput, newState) -> runInWorkerThread(task::markCancel)); @@ -2055,7 +2072,8 @@ public class KeyValueBackupTaskTest { TransportMock transportMock = setUpInitializedTransport(mTransport); setUpAgent(PACKAGE_1); BackupAgent pmAgent = spy(createPmAgent()); - doReturn(forward(pmAgent)).when(mBackupManagerService).makeMetadataAgent(); + doReturn(forward(pmAgent)).when(mBackupManagerService) + .makeMetadataAgentWithEligibilityRules(mBackupEligibilityRules); KeyValueBackupTask task = createKeyValueBackupTask(transportMock, PACKAGE_1); agentOnBackupDo( pmAgent, (oldState, dataOutput, newState) -> runInWorkerThread(task::markCancel)); @@ -2652,14 +2670,16 @@ public class KeyValueBackupTaskTest { mListener, emptyList(), /* userInitiated */ false, - nonIncremental); + nonIncremental, + mBackupEligibilityRules); mBackupManager.setUp(mBackupHandler, task); return task; } private PackageManagerBackupAgent createPmAgent() { PackageManagerBackupAgent pmAgent = - new PackageManagerBackupAgent(mApplication.getPackageManager(), USER_ID); + new PackageManagerBackupAgent(mApplication.getPackageManager(), USER_ID, + mBackupEligibilityRules); pmAgent.attach(mApplication); pmAgent.onCreate(); return pmAgent; @@ -2671,7 +2691,8 @@ public class KeyValueBackupTaskTest { */ private PackageManagerBackupAgent createThrowingPmAgent(RuntimeException exception) { PackageManagerBackupAgent pmAgent = - new ThrowingPackageManagerBackupAgent(mApplication.getPackageManager(), exception); + new ThrowingPackageManagerBackupAgent(mApplication.getPackageManager(), exception, + mBackupEligibilityRules); pmAgent.attach(mApplication); pmAgent.onCreate(); return pmAgent; @@ -2985,8 +3006,9 @@ public class KeyValueBackupTaskTest { private final RuntimeException mException; ThrowingPackageManagerBackupAgent( - PackageManager packageManager, RuntimeException exception) { - super(packageManager, USER_ID); + PackageManager packageManager, RuntimeException exception, + BackupEligibilityRules backupEligibilityRules) { + super(packageManager, USER_ID, backupEligibilityRules); mException = exception; } diff --git a/services/robotests/src/com/android/server/testing/shadows/ShadowAppBackupUtils.java b/services/robotests/src/com/android/server/testing/shadows/ShadowAppBackupUtils.java deleted file mode 100644 index aa1c6688b01d..000000000000 --- a/services/robotests/src/com/android/server/testing/shadows/ShadowAppBackupUtils.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright (C) 2018 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License - */ - -package com.android.server.testing.shadows; - -import android.annotation.Nullable; -import android.content.pm.ApplicationInfo; -import android.content.pm.PackageInfo; -import android.content.pm.PackageManager; - -import com.android.server.backup.transport.TransportClient; -import com.android.server.backup.utils.AppBackupUtils; - -import org.robolectric.annotation.Implementation; -import org.robolectric.annotation.Implements; -import org.robolectric.annotation.Resetter; - -import java.util.HashSet; -import java.util.Set; - -@Implements(AppBackupUtils.class) -public class ShadowAppBackupUtils { - private static final Set<String> sAppsRunningAndEligibleForBackupWithTransport = - new HashSet<>(); - private static final Set<String> sAppsEligibleForBackup = new HashSet<>(); - private static final Set<String> sAppsGetFullBackup = new HashSet<>(); - - public static void setAppRunningAndEligibleForBackupWithTransport(String packageName) { - sAppsEligibleForBackup.add(packageName); - sAppsRunningAndEligibleForBackupWithTransport.add(packageName); - } - - public static void setAppEligibleForBackup(String packageName) { - sAppsEligibleForBackup.add(packageName); - } - - /** By default the app will be key-value. */ - public static void setAppGetsFullBackup(String packageName) { - sAppsGetFullBackup.add(packageName); - } - - @Implementation - protected static boolean appIsRunningAndEligibleForBackupWithTransport( - @Nullable TransportClient transportClient, - String packageName, - PackageManager pm, - int userId) { - return sAppsRunningAndEligibleForBackupWithTransport.contains(packageName); - } - - @Implementation - protected static boolean appIsEligibleForBackup(ApplicationInfo app, int userId, - int operationType) { - return sAppsEligibleForBackup.contains(app.packageName); - } - - @Implementation - protected static boolean appGetsFullBackup(PackageInfo packageInfo, int operationType) { - return sAppsGetFullBackup.contains(packageInfo.packageName); - } - - @Resetter - public static void reset() { - sAppsRunningAndEligibleForBackupWithTransport.clear(); - sAppsEligibleForBackup.clear(); - sAppsGetFullBackup.clear(); - } -} diff --git a/services/robotests/src/com/android/server/testing/shadows/ShadowKeyValueBackupTask.java b/services/robotests/src/com/android/server/testing/shadows/ShadowKeyValueBackupTask.java index ac5d2da9c3cf..fd51df7ab1f9 100644 --- a/services/robotests/src/com/android/server/testing/shadows/ShadowKeyValueBackupTask.java +++ b/services/robotests/src/com/android/server/testing/shadows/ShadowKeyValueBackupTask.java @@ -24,6 +24,7 @@ import com.android.server.backup.internal.OnTaskFinishedListener; import com.android.server.backup.keyvalue.KeyValueBackupReporter; import com.android.server.backup.keyvalue.KeyValueBackupTask; import com.android.server.backup.transport.TransportClient; +import com.android.server.backup.utils.BackupEligibilityRules; import org.robolectric.annotation.Implementation; import org.robolectric.annotation.Implements; @@ -63,7 +64,8 @@ public class ShadowKeyValueBackupTask { OnTaskFinishedListener listener, List<String> pendingFullBackups, boolean userInitiated, - boolean nonIncremental) { + boolean nonIncremental, + BackupEligibilityRules backupEligibilityRules) { mListener = listener; mQueue = queue; mPendingFullBackups = pendingFullBackups; diff --git a/services/robotests/src/com/android/server/testing/shadows/ShadowPerformUnifiedRestoreTask.java b/services/robotests/src/com/android/server/testing/shadows/ShadowPerformUnifiedRestoreTask.java index 8daef5fad032..5161070398d7 100644 --- a/services/robotests/src/com/android/server/testing/shadows/ShadowPerformUnifiedRestoreTask.java +++ b/services/robotests/src/com/android/server/testing/shadows/ShadowPerformUnifiedRestoreTask.java @@ -25,6 +25,7 @@ import com.android.server.backup.UserBackupManagerService; import com.android.server.backup.internal.OnTaskFinishedListener; import com.android.server.backup.restore.PerformUnifiedRestoreTask; import com.android.server.backup.transport.TransportClient; +import com.android.server.backup.utils.BackupEligibilityRules; import org.robolectric.annotation.Implementation; import org.robolectric.annotation.Implements; @@ -67,7 +68,8 @@ public class ShadowPerformUnifiedRestoreTask { int pmToken, boolean isFullSystemRestore, @Nullable String[] filterSet, - OnTaskFinishedListener listener) { + OnTaskFinishedListener listener, + BackupEligibilityRules backupEligibilityRules) { mBackupManagerService = backupManagerService; mPackage = targetPackage; mIsFullSystemRestore = isFullSystemRestore; |