Update robolectric tetst for BackupEligibilityRules refactor

Bug: 161241479
Test: atest RunBackupFrameworksServicesRoboTests
Change-Id: I7705d441947b1e2143f5da3c298294f5a67377f0
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 dfe75ed..06d51a4 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.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 @@
 @RunWith(RobolectricTestRunner.class)
 @Config(
         shadows = {
-            ShadowAppBackupUtils.class,
+            ShadowBackupEligibilityRules.class,
             ShadowApplicationPackageManager.class,
             ShadowSystemServiceRegistry.class
         })
@@ -159,7 +159,7 @@
     @After
     public void tearDown() throws Exception {
         mBackupThread.quit();
-        ShadowAppBackupUtils.reset();
+        ShadowBackupEligibilityRules.reset();
         ShadowApplicationPackageManager.reset();
     }
 
@@ -236,7 +236,7 @@
         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 @@
         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 @@
         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 @@
         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 @@
     @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 b5c9375..6184c4e 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.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 @@
     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 @@
     @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 @@
     private Looper mMainLooper;
     private FrameworkShadowLooper mShadowMainLooper;
     private Context mContext;
+    private BackupEligibilityRules mBackupEligibilityRules;
 
     @Before
     public void setUp() throws Exception {
@@ -253,6 +257,8 @@
                 .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 @@
         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 @@
         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 @@
         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 @@
 
         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 @@
 
         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 @@
 
         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 @@
 
         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 @@
                         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 @@
         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 @@
         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 @@
 
         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 @@
 
         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 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 @@
         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 @@
         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 @@
         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 @@
         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 @@
         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 @@
                         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 @@
      */
     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 @@
         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 aa1c668..0000000
--- 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 ac5d2da..fd51df7 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.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 @@
             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 8daef5f..5161070 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.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 @@
             int pmToken,
             boolean isFullSystemRestore,
             @Nullable String[] filterSet,
-            OnTaskFinishedListener listener) {
+            OnTaskFinishedListener listener,
+            BackupEligibilityRules backupEligibilityRules) {
         mBackupManagerService = backupManagerService;
         mPackage = targetPackage;
         mIsFullSystemRestore = isFullSystemRestore;