Merge "Fix KeyValueBackupTaskTest shadow errors" into qt-dev
diff --git a/services/backup/java/com/android/server/backup/utils/AppBackupUtils.java b/services/backup/java/com/android/server/backup/utils/AppBackupUtils.java
index 593bb2c4..35dfccf 100644
--- a/services/backup/java/com/android/server/backup/utils/AppBackupUtils.java
+++ b/services/backup/java/com/android/server/backup/utils/AppBackupUtils.java
@@ -23,22 +23,20 @@
 import static com.android.server.pm.PackageManagerService.PLATFORM_PACKAGE_NAME;
 
 import android.annotation.Nullable;
-import android.app.AppGlobals;
 import android.app.backup.BackupTransport;
 import android.content.pm.ApplicationInfo;
-import android.content.pm.IPackageManager;
 import android.content.pm.PackageInfo;
 import android.content.pm.PackageManager;
 import android.content.pm.PackageManagerInternal;
 import android.content.pm.Signature;
 import android.content.pm.SigningInfo;
-import android.os.RemoteException;
 import android.os.UserHandle;
 import android.util.Slog;
 
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.backup.IBackupTransport;
 import com.android.internal.util.ArrayUtils;
+import com.android.server.LocalServices;
 import com.android.server.backup.transport.TransportClient;
 
 import com.google.android.collect.Sets;
@@ -67,12 +65,13 @@
      * </ol>
      */
     public static boolean appIsEligibleForBackup(ApplicationInfo app, int userId) {
-        return appIsEligibleForBackup(app, AppGlobals.getPackageManager(), userId);
+        return appIsEligibleForBackup(
+                app, LocalServices.getService(PackageManagerInternal.class), userId);
     }
 
     @VisibleForTesting
-    static boolean appIsEligibleForBackup(ApplicationInfo app,
-        IPackageManager packageManager, int userId) {
+    static boolean appIsEligibleForBackup(
+            ApplicationInfo app, PackageManagerInternal packageManager, int userId) {
         // 1. their manifest states android:allowBackup="false"
         if ((app.flags & ApplicationInfo.FLAG_ALLOW_BACKUP) == 0) {
             return false;
@@ -108,9 +107,9 @@
     /**
      * Returns whether an app is eligible for backup at runtime. That is, the app has to:
      * <ol>
-     *     <li>Return true for {@link #appIsEligibleForBackup(ApplicationInfo, PackageManager)}
+     *     <li>Return true for {@link #appIsEligibleForBackup(ApplicationInfo, int)}
      *     <li>Return false for {@link #appIsStopped(ApplicationInfo)}
-     *     <li>Return false for {@link #appIsDisabled(ApplicationInfo, PackageManager)}
+     *     <li>Return false for {@link #appIsDisabled(ApplicationInfo, int)}
      *     <li>Be eligible for the transport via
      *         {@link BackupTransport#isAppEligibleForBackup(PackageInfo, boolean)}
      * </ol>
@@ -149,19 +148,13 @@
 
     /** Avoid backups of 'disabled' apps. */
     static boolean appIsDisabled(ApplicationInfo app, int userId) {
-        return appIsDisabled(app, AppGlobals.getPackageManager(), userId);
+        return appIsDisabled(app, LocalServices.getService(PackageManagerInternal.class), userId);
     }
 
     @VisibleForTesting
-    static boolean appIsDisabled(ApplicationInfo app,
-        IPackageManager packageManager, int userId) {
-        int enabledSetting;
-        try {
-            enabledSetting = packageManager.getApplicationEnabledSetting(app.packageName, userId);
-        } catch (RemoteException e) {
-            Slog.e(TAG, "Failed to get application enabled setting: " + e);
-            return false;
-        }
+    static boolean appIsDisabled(
+            ApplicationInfo app, PackageManagerInternal packageManager, int userId) {
+        int enabledSetting = packageManager.getApplicationEnabledState(app.packageName, userId);
 
         switch (enabledSetting) {
             case PackageManager.COMPONENT_ENABLED_STATE_DISABLED:
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 164570a..cc64323 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
@@ -86,6 +86,7 @@
 import android.content.pm.ApplicationInfo;
 import android.content.pm.PackageInfo;
 import android.content.pm.PackageManager;
+import android.content.pm.PackageManagerInternal;
 import android.net.Uri;
 import android.os.ConditionVariable;
 import android.os.DeadObjectException;
@@ -100,6 +101,7 @@
 
 import com.android.internal.backup.IBackupTransport;
 import com.android.server.EventLogTags;
+import com.android.server.LocalServices;
 import com.android.server.backup.BackupRestoreTask;
 import com.android.server.backup.DataChangedJournal;
 import com.android.server.backup.KeyValueBackupJob;
@@ -116,7 +118,6 @@
 import com.android.server.backup.testing.TransportTestUtils.TransportMock;
 import com.android.server.testing.shadows.FrameworkShadowLooper;
 import com.android.server.testing.shadows.ShadowApplicationPackageManager;
-import com.android.server.testing.shadows.ShadowBackupActivityThread;
 import com.android.server.testing.shadows.ShadowBackupDataInput;
 import com.android.server.testing.shadows.ShadowBackupDataOutput;
 import com.android.server.testing.shadows.ShadowEventLog;
@@ -163,8 +164,7 @@
             ShadowBackupDataInput.class,
             ShadowBackupDataOutput.class,
             ShadowEventLog.class,
-            ShadowQueuedWork.class,
-            ShadowBackupActivityThread.class,
+            ShadowQueuedWork.class
         })
 @Presubmit
 public class KeyValueBackupTaskTest {
@@ -179,6 +179,7 @@
     @Mock private IBackupObserver mObserver;
     @Mock private IBackupManagerMonitor mMonitor;
     @Mock private OnTaskFinishedListener mListener;
+    @Mock private PackageManagerInternal mPackageManagerInternal;
     private UserBackupManagerService mBackupManagerService;
     private TransportData mTransport;
     private ShadowLooper mShadowBackupLooper;
@@ -243,6 +244,11 @@
         mShadowBackupLooper = shadowOf(mBackupHandler.getLooper());
         ShadowEventLog.setUp();
         mReporter = spy(new KeyValueBackupReporter(mBackupManagerService, mObserver, mMonitor));
+
+        when(mPackageManagerInternal.getApplicationEnabledState(any(), anyInt()))
+                .thenReturn(PackageManager.COMPONENT_ENABLED_STATE_ENABLED);
+        LocalServices.removeServiceForTest(PackageManagerInternal.class);
+        LocalServices.addService(PackageManagerInternal.class, mPackageManagerInternal);
     }
 
     @After
@@ -471,7 +477,7 @@
         TransportMock transportMock = setUpInitializedTransport(mTransport);
         setUpAgentWithData(PACKAGE_1);
         BackupAgent pmAgent = spy(createPmAgent());
-        when(mBackupManagerService.makeMetadataAgent()).thenReturn(forward(pmAgent));
+        doReturn(forward(pmAgent)).when(mBackupManagerService).makeMetadataAgent();
         KeyValueBackupTask task = createKeyValueBackupTask(transportMock, true, PACKAGE_1);
 
         runTask(task);
@@ -484,7 +490,7 @@
         TransportMock transportMock = setUpInitializedTransport(mTransport);
         setUpAgentWithData(PACKAGE_1);
         BackupAgent pmAgent = spy(createPmAgent());
-        when(mBackupManagerService.makeMetadataAgent()).thenReturn(forward(pmAgent));
+        doReturn(forward(pmAgent)).when(mBackupManagerService).makeMetadataAgent();
         KeyValueBackupTask task =
                 createKeyValueBackupTask(transportMock, true, PACKAGE_1, PM_PACKAGE);
 
@@ -498,7 +504,7 @@
         TransportMock transportMock = setUpInitializedTransport(mTransport);
         setUpAgentWithData(PACKAGE_1);
         BackupAgent pmAgent = spy(createPmAgent());
-        when(mBackupManagerService.makeMetadataAgent()).thenReturn(forward(pmAgent));
+        doReturn(forward(pmAgent)).when(mBackupManagerService).makeMetadataAgent();
         KeyValueBackupTask task = createKeyValueBackupTask(transportMock, false, PACKAGE_1);
 
         runTask(task);
@@ -1307,7 +1313,7 @@
                         argThat(packageInfo(PM_PACKAGE)), any(), anyInt()))
                 .then(copyBackupDataTo(backupDataPath));
         BackupAgent pmAgent = spy(createPmAgent());
-        when(mBackupManagerService.makeMetadataAgent()).thenReturn(forward(pmAgent));
+        doReturn(forward(pmAgent)).when(mBackupManagerService).makeMetadataAgent();
         agentOnBackupDo(
                 pmAgent,
                 (oldState, dataOutput, newState) -> {
@@ -1371,7 +1377,7 @@
         setUpAgent(PACKAGE_1);
         when(transportMock.transport.finishBackup()).thenReturn(BackupTransport.TRANSPORT_OK);
         BackupAgent pmAgent = spy(createPmAgent());
-        when(mBackupManagerService.makeMetadataAgent()).thenReturn(forward(pmAgent));
+        doReturn(forward(pmAgent)).when(mBackupManagerService).makeMetadataAgent();
         agentOnBackupDo(
                 pmAgent,
                 (oldState, dataOutput, newState) -> {
@@ -1395,7 +1401,7 @@
         setUpAgent(PACKAGE_1);
         when(transportMock.transport.finishBackup()).thenReturn(BackupTransport.TRANSPORT_OK);
         BackupAgent pmAgent = spy(createPmAgent());
-        when(mBackupManagerService.makeMetadataAgent()).thenReturn(forward(pmAgent));
+        doReturn(forward(pmAgent)).when(mBackupManagerService).makeMetadataAgent();
         agentOnBackupDo(
                 pmAgent,
                 (oldState, dataOutput, newState) -> {
@@ -1957,7 +1963,7 @@
         TransportMock transportMock = setUpInitializedTransport(mTransport);
         setUpAgent(PACKAGE_1);
         BackupAgent pmAgent = createThrowingPmAgent(new RuntimeException());
-        when(mBackupManagerService.makeMetadataAgent()).thenReturn(pmAgent);
+        doReturn(pmAgent).when(mBackupManagerService).makeMetadataAgent();
         KeyValueBackupTask task = createKeyValueBackupTask(transportMock, PACKAGE_1);
 
         runTask(task);
@@ -1970,7 +1976,7 @@
         TransportMock transportMock = setUpInitializedTransport(mTransport);
         setUpAgent(PACKAGE_1);
         BackupAgent pmAgent = createThrowingPmAgent(new RuntimeException());
-        when(mBackupManagerService.makeMetadataAgent()).thenReturn(pmAgent);
+        doReturn(pmAgent).when(mBackupManagerService).makeMetadataAgent();
         KeyValueBackupTask task = createKeyValueBackupTask(transportMock, PACKAGE_1);
 
         runTask(task);
@@ -1983,7 +1989,7 @@
         TransportMock transportMock = setUpInitializedTransport(mTransport);
         setUpAgent(PACKAGE_1);
         BackupAgent pmAgent = createThrowingPmAgent(new RuntimeException());
-        when(mBackupManagerService.makeMetadataAgent()).thenReturn(pmAgent);
+        doReturn(pmAgent).when(mBackupManagerService).makeMetadataAgent();
         KeyValueBackupTask task = createKeyValueBackupTask(transportMock, PACKAGE_1);
 
         runTask(task);
@@ -1996,7 +2002,7 @@
         TransportMock transportMock = setUpInitializedTransport(mTransport);
         setUpAgent(PACKAGE_1);
         BackupAgent pmAgent = spy(createPmAgent());
-        when(mBackupManagerService.makeMetadataAgent()).thenReturn(forward(pmAgent));
+        doReturn(forward(pmAgent)).when(mBackupManagerService).makeMetadataAgent();
         KeyValueBackupTask task = createKeyValueBackupTask(transportMock, PACKAGE_1);
         agentOnBackupDo(
                 pmAgent, (oldState, dataOutput, newState) -> runInWorkerThread(task::markCancel));
@@ -2011,7 +2017,7 @@
         TransportMock transportMock = setUpInitializedTransport(mTransport);
         setUpAgent(PACKAGE_1);
         BackupAgent pmAgent = spy(createPmAgent());
-        when(mBackupManagerService.makeMetadataAgent()).thenReturn(forward(pmAgent));
+        doReturn(forward(pmAgent)).when(mBackupManagerService).makeMetadataAgent();
         KeyValueBackupTask task = createKeyValueBackupTask(transportMock, PACKAGE_1);
         agentOnBackupDo(
                 pmAgent, (oldState, dataOutput, newState) -> runInWorkerThread(task::markCancel));
diff --git a/services/robotests/src/com/android/server/testing/shadows/ShadowBackupActivityThread.java b/services/robotests/src/com/android/server/testing/shadows/ShadowBackupActivityThread.java
deleted file mode 100644
index ca2e3b6..0000000
--- a/services/robotests/src/com/android/server/testing/shadows/ShadowBackupActivityThread.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Copyright (C) 2019 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.app.ActivityThread;
-import android.content.pm.ApplicationInfo;
-import android.content.pm.IPackageManager;
-import android.content.pm.PackageManager;
-import android.os.RemoteException;
-
-import org.robolectric.RuntimeEnvironment;
-import org.robolectric.annotation.Implementation;
-import org.robolectric.annotation.Implements;
-import org.robolectric.shadows.ShadowActivityThread;
-
-import java.lang.reflect.InvocationHandler;
-import java.lang.reflect.Method;
-import java.lang.reflect.Proxy;
-
-import javax.annotation.Nonnull;
-
-/**
- * Extends the existing {@link ShadowActivityThread} to add support for
- * {@link PackageManager#getApplicationEnabledSetting(String)} in the shadow {@link PackageManager}
- * returned  by {@link ShadowBackupActivityThread#getPackageManager()}.
- */
-@Implements(value = ActivityThread.class, isInAndroidSdk = false, looseSignatures = true)
-public class ShadowBackupActivityThread extends ShadowActivityThread {
-    @Implementation
-    public static Object getPackageManager() {
-        ClassLoader classLoader = ShadowActivityThread.class.getClassLoader();
-        Class<?> iPackageManagerClass;
-        try {
-            iPackageManagerClass = classLoader.loadClass("android.content.pm.IPackageManager");
-        } catch (ClassNotFoundException e) {
-            throw new RuntimeException(e);
-        }
-
-        return Proxy.newProxyInstance(
-                classLoader,
-                new Class[] {iPackageManagerClass},
-                new InvocationHandler() {
-                    @Override
-                    public Object invoke(Object proxy, @Nonnull Method method, Object[] args)
-                            throws Exception {
-                        if (method.getName().equals("getApplicationInfo")) {
-                            String packageName = (String) args[0];
-                            int flags = (Integer) args[1];
-
-                            try {
-                                return RuntimeEnvironment.application
-                                        .getPackageManager()
-                                        .getApplicationInfo(packageName, flags);
-                            } catch (PackageManager.NameNotFoundException e) {
-                                throw new RemoteException(e.getMessage());
-                            }
-                        } else if (method.getName().equals("getApplicationEnabledSetting")) {
-                            return 0;
-                        } else {
-                            return null;
-                        }
-                    }
-                });
-    }
-}
diff --git a/services/tests/servicestests/src/com/android/server/backup/testutils/IPackageManagerStub.java b/services/tests/servicestests/src/com/android/server/backup/testutils/IPackageManagerStub.java
deleted file mode 100644
index 97a6e66..0000000
--- a/services/tests/servicestests/src/com/android/server/backup/testutils/IPackageManagerStub.java
+++ /dev/null
@@ -1,1217 +0,0 @@
-/*
- * Copyright (C) 2019 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.backup.testutils;
-
-import android.content.ComponentName;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.content.IntentSender;
-import android.content.pm.ActivityInfo;
-import android.content.pm.ApplicationInfo;
-import android.content.pm.ChangedPackages;
-import android.content.pm.IDexModuleRegisterCallback;
-import android.content.pm.IOnPermissionsChangeListener;
-import android.content.pm.IPackageDataObserver;
-import android.content.pm.IPackageDeleteObserver;
-import android.content.pm.IPackageDeleteObserver2;
-import android.content.pm.IPackageInstaller;
-import android.content.pm.IPackageManager;
-import android.content.pm.IPackageMoveObserver;
-import android.content.pm.IPackageStatsObserver;
-import android.content.pm.InstrumentationInfo;
-import android.content.pm.KeySet;
-import android.content.pm.ModuleInfo;
-import android.content.pm.PackageInfo;
-import android.content.pm.PackageManager;
-import android.content.pm.ParceledListSlice;
-import android.content.pm.PermissionGroupInfo;
-import android.content.pm.PermissionInfo;
-import android.content.pm.ProviderInfo;
-import android.content.pm.ResolveInfo;
-import android.content.pm.ServiceInfo;
-import android.content.pm.SuspendDialogInfo;
-import android.content.pm.VerifierDeviceIdentity;
-import android.content.pm.VersionedPackage;
-import android.content.pm.dex.IArtManager;
-import android.graphics.Bitmap;
-import android.os.IBinder;
-import android.os.PersistableBundle;
-import android.os.RemoteException;
-
-import java.util.List;
-
-/**
- * Stub for IPackageManager to use in tests.
- */
-public class IPackageManagerStub implements IPackageManager {
-    public static PackageInfo sPackageInfo;
-    public static int sApplicationEnabledSetting = PackageManager.COMPONENT_ENABLED_STATE_DEFAULT;
-
-    @Override
-    public PackageInfo getPackageInfo(String packageName, int flags, int userId)
-        throws RemoteException {
-        return sPackageInfo;
-    }
-
-    @Override
-    public int getApplicationEnabledSetting(String packageName, int userId) throws RemoteException {
-        return sApplicationEnabledSetting;
-    }
-
-    @Override
-    public void checkPackageStartable(String packageName, int userId) throws RemoteException {
-
-    }
-
-    @Override
-    public boolean isPackageAvailable(String packageName, int userId) throws RemoteException {
-        return false;
-    }
-
-    @Override
-    public PackageInfo getPackageInfoVersioned(VersionedPackage versionedPackage, int flags,
-        int userId) throws RemoteException {
-        return null;
-    }
-
-    @Override
-    public int getPackageUid(String packageName, int flags, int userId) throws RemoteException {
-        return 0;
-    }
-
-    @Override
-    public int[] getPackageGids(String packageName, int flags, int userId) throws RemoteException {
-        return new int[0];
-    }
-
-    @Override
-    public String[] currentToCanonicalPackageNames(String[] names) throws RemoteException {
-        return new String[0];
-    }
-
-    @Override
-    public String[] canonicalToCurrentPackageNames(String[] names) throws RemoteException {
-        return new String[0];
-    }
-
-    @Override
-    public PermissionInfo getPermissionInfo(String name, String packageName, int flags)
-        throws RemoteException {
-        return null;
-    }
-
-    @Override
-    public ParceledListSlice queryPermissionsByGroup(String group, int flags)
-        throws RemoteException {
-        return null;
-    }
-
-    @Override
-    public PermissionGroupInfo getPermissionGroupInfo(String name, int flags)
-        throws RemoteException {
-        return null;
-    }
-
-    @Override
-    public ParceledListSlice getAllPermissionGroups(int flags) throws RemoteException {
-        return null;
-    }
-
-    @Override
-    public ApplicationInfo getApplicationInfo(String packageName, int flags, int userId)
-        throws RemoteException {
-        return null;
-    }
-
-    @Override
-    public ActivityInfo getActivityInfo(ComponentName className, int flags, int userId)
-        throws RemoteException {
-        return null;
-    }
-
-    @Override
-    public boolean activitySupportsIntent(ComponentName className, Intent intent,
-        String resolvedType)
-        throws RemoteException {
-        return false;
-    }
-
-    @Override
-    public ActivityInfo getReceiverInfo(ComponentName className, int flags, int userId)
-        throws RemoteException {
-        return null;
-    }
-
-    @Override
-    public ServiceInfo getServiceInfo(ComponentName className, int flags, int userId)
-        throws RemoteException {
-        return null;
-    }
-
-    @Override
-    public ProviderInfo getProviderInfo(ComponentName className, int flags, int userId)
-        throws RemoteException {
-        return null;
-    }
-
-    @Override
-    public int checkPermission(String permName, String pkgName, int userId) throws RemoteException {
-        return 0;
-    }
-
-    @Override
-    public int checkUidPermission(String permName, int uid) throws RemoteException {
-        return 0;
-    }
-
-    @Override
-    public boolean addPermission(PermissionInfo info) throws RemoteException {
-        return false;
-    }
-
-    @Override
-    public void removePermission(String name) throws RemoteException {
-
-    }
-
-    @Override
-    public void grantRuntimePermission(String packageName, String permissionName, int userId)
-        throws RemoteException {
-
-    }
-
-    @Override
-    public void revokeRuntimePermission(String packageName, String permissionName, int userId)
-        throws RemoteException {
-
-    }
-
-    @Override
-    public void resetRuntimePermissions() throws RemoteException {
-
-    }
-
-    @Override
-    public int getPermissionFlags(String permissionName, String packageName, int userId)
-        throws RemoteException {
-        return 0;
-    }
-
-    @Override
-    public void updatePermissionFlags(String permissionName, String packageName, int flagMask,
-            int flagValues, boolean checkAdjustPolicyFlagPermission, int userId)
-            throws RemoteException {
-
-    }
-
-    @Override
-    public void updatePermissionFlagsForAllApps(int flagMask, int flagValues, int userId)
-        throws RemoteException {
-
-    }
-
-    @Override
-    public List<String> getWhitelistedRestrictedPermissions(String packageName, int flags,
-            int userId) throws RemoteException {
-        return null;
-    }
-
-    @Override
-    public boolean addWhitelistedRestrictedPermission(String packageName, String permission,
-            int whitelistFlags, int userId) throws RemoteException {
-        return false;
-    }
-
-    @Override
-    public boolean removeWhitelistedRestrictedPermission(String packageName, String permission,
-            int whitelistFlags, int userId) throws RemoteException {
-        return false;
-    }
-
-    @Override
-    public boolean shouldShowRequestPermissionRationale(String permissionName, String packageName,
-        int userId) throws RemoteException {
-        return false;
-    }
-
-    @Override
-    public boolean isProtectedBroadcast(String actionName) throws RemoteException {
-        return false;
-    }
-
-    @Override
-    public int checkSignatures(String pkg1, String pkg2) throws RemoteException {
-        return 0;
-    }
-
-    @Override
-    public int checkUidSignatures(int uid1, int uid2) throws RemoteException {
-        return 0;
-    }
-
-    @Override
-    public List<String> getAllPackages() throws RemoteException {
-        return null;
-    }
-
-    @Override
-    public String[] getPackagesForUid(int uid) throws RemoteException {
-        return new String[0];
-    }
-
-    @Override
-    public String getNameForUid(int uid) throws RemoteException {
-        return null;
-    }
-
-    @Override
-    public String[] getNamesForUids(int[] uids) throws RemoteException {
-        return new String[0];
-    }
-
-    @Override
-    public int getUidForSharedUser(String sharedUserName) throws RemoteException {
-        return 0;
-    }
-
-    @Override
-    public int getFlagsForUid(int uid) throws RemoteException {
-        return 0;
-    }
-
-    @Override
-    public int getPrivateFlagsForUid(int uid) throws RemoteException {
-        return 0;
-    }
-
-    @Override
-    public boolean isUidPrivileged(int uid) throws RemoteException {
-        return false;
-    }
-
-    @Override
-    public String[] getAppOpPermissionPackages(String permissionName) throws RemoteException {
-        return new String[0];
-    }
-
-    @Override
-    public ResolveInfo resolveIntent(Intent intent, String resolvedType, int flags, int userId)
-        throws RemoteException {
-        return null;
-    }
-
-    @Override
-    public ResolveInfo findPersistentPreferredActivity(Intent intent, int userId)
-        throws RemoteException {
-        return null;
-    }
-
-    @Override
-    public boolean canForwardTo(Intent intent, String resolvedType, int sourceUserId,
-        int targetUserId) throws RemoteException {
-        return false;
-    }
-
-    @Override
-    public ParceledListSlice queryIntentActivities(Intent intent, String resolvedType, int flags,
-        int userId) throws RemoteException {
-        return null;
-    }
-
-    @Override
-    public ParceledListSlice queryIntentActivityOptions(ComponentName caller, Intent[] specifics,
-        String[] specificTypes, Intent intent, String resolvedType, int flags, int userId)
-        throws RemoteException {
-        return null;
-    }
-
-    @Override
-    public ParceledListSlice queryIntentReceivers(Intent intent, String resolvedType, int flags,
-        int userId) throws RemoteException {
-        return null;
-    }
-
-    @Override
-    public ResolveInfo resolveService(Intent intent, String resolvedType, int flags, int userId)
-        throws RemoteException {
-        return null;
-    }
-
-    @Override
-    public ParceledListSlice queryIntentServices(Intent intent, String resolvedType, int flags,
-        int userId) throws RemoteException {
-        return null;
-    }
-
-    @Override
-    public ParceledListSlice queryIntentContentProviders(Intent intent, String resolvedType,
-        int flags, int userId) throws RemoteException {
-        return null;
-    }
-
-    @Override
-    public ParceledListSlice getInstalledPackages(int flags, int userId) throws RemoteException {
-        return null;
-    }
-
-    @Override
-    public ParceledListSlice getPackagesHoldingPermissions(String[] permissions, int flags,
-        int userId) throws RemoteException {
-        return null;
-    }
-
-    @Override
-    public ParceledListSlice getInstalledApplications(int flags, int userId)
-        throws RemoteException {
-        return null;
-    }
-
-    @Override
-    public ParceledListSlice getPersistentApplications(int flags) throws RemoteException {
-        return null;
-    }
-
-    @Override
-    public ProviderInfo resolveContentProvider(String name, int flags, int userId)
-        throws RemoteException {
-        return null;
-    }
-
-    @Override
-    public void querySyncProviders(List<String> outNames, List<ProviderInfo> outInfo)
-        throws RemoteException {
-
-    }
-
-    @Override
-    public ParceledListSlice queryContentProviders(String processName, int uid, int flags,
-        String metaDataKey) throws RemoteException {
-        return null;
-    }
-
-    @Override
-    public InstrumentationInfo getInstrumentationInfo(ComponentName className, int flags)
-        throws RemoteException {
-        return null;
-    }
-
-    @Override
-    public ParceledListSlice queryInstrumentation(String targetPackage, int flags)
-        throws RemoteException {
-        return null;
-    }
-
-    @Override
-    public void finishPackageInstall(int token, boolean didLaunch) throws RemoteException {
-
-    }
-
-    @Override
-    public void setInstallerPackageName(String targetPackage, String installerPackageName)
-        throws RemoteException {
-
-    }
-
-    @Override
-    public void setApplicationCategoryHint(String packageName, int categoryHint,
-        String callerPackageName) throws RemoteException {
-
-    }
-
-    @Override
-    public void deletePackageAsUser(String packageName, int versionCode,
-        IPackageDeleteObserver observer, int userId, int flags) throws RemoteException {
-
-    }
-
-    @Override
-    public void deletePackageVersioned(VersionedPackage versionedPackage,
-        IPackageDeleteObserver2 observer, int userId, int flags) throws RemoteException {
-
-    }
-
-    @Override
-    public String getInstallerPackageName(String packageName) throws RemoteException {
-        return null;
-    }
-
-    @Override
-    public void resetApplicationPreferences(int userId) throws RemoteException {
-
-    }
-
-    @Override
-    public ResolveInfo getLastChosenActivity(Intent intent, String resolvedType, int flags)
-        throws RemoteException {
-        return null;
-    }
-
-    @Override
-    public void setLastChosenActivity(Intent intent, String resolvedType, int flags,
-        IntentFilter filter, int match, ComponentName activity) throws RemoteException {
-
-    }
-
-    @Override
-    public void addPreferredActivity(IntentFilter filter, int match, ComponentName[] set,
-        ComponentName activity, int userId) throws RemoteException {
-
-    }
-
-    @Override
-    public void replacePreferredActivity(IntentFilter filter, int match, ComponentName[] set,
-        ComponentName activity, int userId) throws RemoteException {
-
-    }
-
-    @Override
-    public void clearPackagePreferredActivities(String packageName) throws RemoteException {
-
-    }
-
-    @Override
-    public int getPreferredActivities(List<IntentFilter> outFilters,
-        List<ComponentName> outActivities, String packageName) throws RemoteException {
-        return 0;
-    }
-
-    @Override
-    public void addPersistentPreferredActivity(IntentFilter filter, ComponentName activity,
-        int userId) throws RemoteException {
-
-    }
-
-    @Override
-    public void clearPackagePersistentPreferredActivities(String packageName, int userId)
-        throws RemoteException {
-
-    }
-
-    @Override
-    public void addCrossProfileIntentFilter(IntentFilter intentFilter, String ownerPackage,
-        int sourceUserId, int targetUserId, int flags) throws RemoteException {
-
-    }
-
-    @Override
-    public void clearCrossProfileIntentFilters(int sourceUserId, String ownerPackage)
-        throws RemoteException {
-
-    }
-
-    @Override
-    public String[] setDistractingPackageRestrictionsAsUser(String[] packageNames,
-        int restrictionFlags, int userId) throws RemoteException {
-        return new String[0];
-    }
-
-    @Override
-    public String[] setPackagesSuspendedAsUser(String[] packageNames, boolean suspended,
-        PersistableBundle appExtras, PersistableBundle launcherExtras, SuspendDialogInfo dialogInfo,
-        String callingPackage, int userId) throws RemoteException {
-        return new String[0];
-    }
-
-    @Override
-    public String[] getUnsuspendablePackagesForUser(String[] packageNames, int userId)
-        throws RemoteException {
-        return new String[0];
-    }
-
-    @Override
-    public boolean isPackageSuspendedForUser(String packageName, int userId)
-        throws RemoteException {
-        return false;
-    }
-
-    @Override
-    public PersistableBundle getSuspendedPackageAppExtras(String packageName, int userId)
-        throws RemoteException {
-        return null;
-    }
-
-    @Override
-    public byte[] getPreferredActivityBackup(int userId) throws RemoteException {
-        return new byte[0];
-    }
-
-    @Override
-    public void restorePreferredActivities(byte[] backup, int userId) throws RemoteException {
-
-    }
-
-    @Override
-    public byte[] getDefaultAppsBackup(int userId) throws RemoteException {
-        return new byte[0];
-    }
-
-    @Override
-    public void restoreDefaultApps(byte[] backup, int userId) throws RemoteException {
-
-    }
-
-    @Override
-    public byte[] getIntentFilterVerificationBackup(int userId) throws RemoteException {
-        return new byte[0];
-    }
-
-    @Override
-    public void restoreIntentFilterVerification(byte[] backup, int userId) throws RemoteException {
-
-    }
-
-    @Override
-    public ComponentName getHomeActivities(List<ResolveInfo> outHomeCandidates)
-        throws RemoteException {
-        return null;
-    }
-
-    @Override
-    public void setHomeActivity(ComponentName className, int userId) throws RemoteException {
-
-    }
-
-    @Override
-    public void setComponentEnabledSetting(ComponentName componentName, int newState, int flags,
-        int userId) throws RemoteException {
-
-    }
-
-    @Override
-    public int getComponentEnabledSetting(ComponentName componentName, int userId)
-        throws RemoteException {
-        return 0;
-    }
-
-    @Override
-    public void setApplicationEnabledSetting(String packageName, int newState, int flags,
-        int userId,
-        String callingPackage) throws RemoteException {
-
-    }
-
-    @Override
-    public void logAppProcessStartIfNeeded(String processName, int uid, String seinfo,
-        String apkFile,
-        int pid) throws RemoteException {
-
-    }
-
-    @Override
-    public void flushPackageRestrictionsAsUser(int userId) throws RemoteException {
-
-    }
-
-    @Override
-    public void setPackageStoppedState(String packageName, boolean stopped, int userId)
-        throws RemoteException {
-
-    }
-
-    @Override
-    public void freeStorageAndNotify(String volumeUuid, long freeStorageSize, int storageFlags,
-        IPackageDataObserver observer) throws RemoteException {
-
-    }
-
-    @Override
-    public void freeStorage(String volumeUuid, long freeStorageSize, int storageFlags,
-        IntentSender pi) throws RemoteException {
-
-    }
-
-    @Override
-    public void deleteApplicationCacheFiles(String packageName, IPackageDataObserver observer)
-        throws RemoteException {
-
-    }
-
-    @Override
-    public void deleteApplicationCacheFilesAsUser(String packageName, int userId,
-        IPackageDataObserver observer) throws RemoteException {
-
-    }
-
-    @Override
-    public void clearApplicationUserData(String packageName, IPackageDataObserver observer,
-        int userId) throws RemoteException {
-
-    }
-
-    @Override
-    public void clearApplicationProfileData(String packageName) throws RemoteException {
-
-    }
-
-    @Override
-    public void getPackageSizeInfo(String packageName, int userHandle,
-        IPackageStatsObserver observer)
-        throws RemoteException {
-
-    }
-
-    @Override
-    public String[] getSystemSharedLibraryNames() throws RemoteException {
-        return new String[0];
-    }
-
-    @Override
-    public ParceledListSlice getSystemAvailableFeatures() throws RemoteException {
-        return null;
-    }
-
-    @Override
-    public boolean hasSystemFeature(String name, int version) throws RemoteException {
-        return false;
-    }
-
-    @Override
-    public void enterSafeMode() throws RemoteException {
-
-    }
-
-    @Override
-    public boolean isSafeMode() throws RemoteException {
-        return false;
-    }
-
-    @Override
-    public void systemReady() throws RemoteException {
-
-    }
-
-    @Override
-    public boolean hasSystemUidErrors() throws RemoteException {
-        return false;
-    }
-
-    @Override
-    public void performFstrimIfNeeded() throws RemoteException {
-
-    }
-
-    @Override
-    public void updatePackagesIfNeeded() throws RemoteException {
-
-    }
-
-    @Override
-    public void notifyPackageUse(String packageName, int reason) throws RemoteException {
-
-    }
-
-    @Override
-    public void notifyDexLoad(String loadingPackageName, List<String> classLoadersNames,
-        List<String> classPaths, String loaderIsa) throws RemoteException {
-
-    }
-
-    @Override
-    public void registerDexModule(String packageName, String dexModulePath, boolean isSharedModule,
-        IDexModuleRegisterCallback callback) throws RemoteException {
-
-    }
-
-    @Override
-    public boolean performDexOptMode(String packageName, boolean checkProfiles,
-        String targetCompilerFilter, boolean force, boolean bootComplete, String splitName)
-        throws RemoteException {
-        return false;
-    }
-
-    @Override
-    public boolean performDexOptSecondary(String packageName, String targetCompilerFilter,
-        boolean force) throws RemoteException {
-        return false;
-    }
-
-    @Override
-    public boolean compileLayouts(String packageName) throws RemoteException {
-        return false;
-    }
-
-    @Override
-    public void dumpProfiles(String packageName) throws RemoteException {
-
-    }
-
-    @Override
-    public void forceDexOpt(String packageName) throws RemoteException {
-
-    }
-
-    @Override
-    public boolean runBackgroundDexoptJob(List<String> packageNames) throws RemoteException {
-        return false;
-    }
-
-    @Override
-    public void reconcileSecondaryDexFiles(String packageName) throws RemoteException {
-
-    }
-
-    @Override
-    public int getMoveStatus(int moveId) throws RemoteException {
-        return 0;
-    }
-
-    @Override
-    public void registerMoveCallback(IPackageMoveObserver callback) throws RemoteException {
-
-    }
-
-    @Override
-    public void unregisterMoveCallback(IPackageMoveObserver callback) throws RemoteException {
-
-    }
-
-    @Override
-    public int movePackage(String packageName, String volumeUuid) throws RemoteException {
-        return 0;
-    }
-
-    @Override
-    public int movePrimaryStorage(String volumeUuid) throws RemoteException {
-        return 0;
-    }
-
-    @Override
-    public boolean addPermissionAsync(PermissionInfo info) throws RemoteException {
-        return false;
-    }
-
-    @Override
-    public boolean setInstallLocation(int loc) throws RemoteException {
-        return false;
-    }
-
-    @Override
-    public int getInstallLocation() throws RemoteException {
-        return 0;
-    }
-
-    @Override
-    public int installExistingPackageAsUser(String packageName, int userId, int installFlags,
-        int installReason) throws RemoteException {
-        return 0;
-    }
-
-    @Override
-    public void verifyPendingInstall(int id, int verificationCode) throws RemoteException {
-
-    }
-
-    @Override
-    public void extendVerificationTimeout(int id, int verificationCodeAtTimeout,
-        long millisecondsToDelay) throws RemoteException {
-
-    }
-
-    @Override
-    public void verifyIntentFilter(int id, int verificationCode, List<String> failedDomains)
-        throws RemoteException {
-
-    }
-
-    @Override
-    public int getIntentVerificationStatus(String packageName, int userId) throws RemoteException {
-        return 0;
-    }
-
-    @Override
-    public boolean updateIntentVerificationStatus(String packageName, int status, int userId)
-        throws RemoteException {
-        return false;
-    }
-
-    @Override
-    public ParceledListSlice getIntentFilterVerifications(String packageName)
-        throws RemoteException {
-        return null;
-    }
-
-    @Override
-    public ParceledListSlice getAllIntentFilters(String packageName) throws RemoteException {
-        return null;
-    }
-
-    @Override
-    public boolean setDefaultBrowserPackageName(String packageName, int userId)
-        throws RemoteException {
-        return false;
-    }
-
-    @Override
-    public String getDefaultBrowserPackageName(int userId) throws RemoteException {
-        return null;
-    }
-
-    @Override
-    public VerifierDeviceIdentity getVerifierDeviceIdentity() throws RemoteException {
-        return null;
-    }
-
-    @Override
-    public boolean isFirstBoot() throws RemoteException {
-        return false;
-    }
-
-    @Override
-    public boolean isOnlyCoreApps() throws RemoteException {
-        return false;
-    }
-
-    @Override
-    public boolean isDeviceUpgrading() throws RemoteException {
-        return false;
-    }
-
-    @Override
-    public void setPermissionEnforced(String permission, boolean enforced) throws RemoteException {
-
-    }
-
-    @Override
-    public boolean isPermissionEnforced(String permission) throws RemoteException {
-        return false;
-    }
-
-    @Override
-    public boolean isStorageLow() throws RemoteException {
-        return false;
-    }
-
-    @Override
-    public boolean setApplicationHiddenSettingAsUser(String packageName, boolean hidden, int userId)
-        throws RemoteException {
-        return false;
-    }
-
-    @Override
-    public boolean getApplicationHiddenSettingAsUser(String packageName, int userId)
-        throws RemoteException {
-        return false;
-    }
-
-    @Override
-    public void setSystemAppHiddenUntilInstalled(String packageName, boolean hidden)
-        throws RemoteException {
-
-    }
-
-    @Override
-    public boolean setSystemAppInstallState(String packageName, boolean installed, int userId)
-        throws RemoteException {
-        return false;
-    }
-
-    @Override
-    public IPackageInstaller getPackageInstaller() throws RemoteException {
-        return null;
-    }
-
-    @Override
-    public boolean setBlockUninstallForUser(String packageName, boolean blockUninstall, int userId)
-        throws RemoteException {
-        return false;
-    }
-
-    @Override
-    public boolean getBlockUninstallForUser(String packageName, int userId) throws RemoteException {
-        return false;
-    }
-
-    @Override
-    public KeySet getKeySetByAlias(String packageName, String alias) throws RemoteException {
-        return null;
-    }
-
-    @Override
-    public KeySet getSigningKeySet(String packageName) throws RemoteException {
-        return null;
-    }
-
-    @Override
-    public boolean isPackageSignedByKeySet(String packageName, KeySet ks) throws RemoteException {
-        return false;
-    }
-
-    @Override
-    public boolean isPackageSignedByKeySetExactly(String packageName, KeySet ks)
-        throws RemoteException {
-        return false;
-    }
-
-    @Override
-    public void addOnPermissionsChangeListener(IOnPermissionsChangeListener listener)
-        throws RemoteException {
-
-    }
-
-    @Override
-    public void removeOnPermissionsChangeListener(IOnPermissionsChangeListener listener)
-        throws RemoteException {
-
-    }
-
-    @Override
-    public void grantDefaultPermissionsToEnabledCarrierApps(String[] packageNames, int userId)
-        throws RemoteException {
-
-    }
-
-    @Override
-    public void grantDefaultPermissionsToEnabledImsServices(String[] packageNames, int userId)
-        throws RemoteException {
-
-    }
-
-    @Override
-    public void grantDefaultPermissionsToEnabledTelephonyDataServices(String[] packageNames,
-        int userId) throws RemoteException {
-
-    }
-
-    @Override
-    public void revokeDefaultPermissionsFromDisabledTelephonyDataServices(String[] packageNames,
-        int userId) throws RemoteException {
-
-    }
-
-    @Override
-    public void grantDefaultPermissionsToActiveLuiApp(String packageName, int userId)
-        throws RemoteException {
-
-    }
-
-    @Override
-    public void revokeDefaultPermissionsFromLuiApps(String[] packageNames, int userId)
-        throws RemoteException {
-
-    }
-
-    @Override
-    public boolean isPermissionRevokedByPolicy(String permission, String packageName, int userId)
-        throws RemoteException {
-        return false;
-    }
-
-    @Override
-    public String getPermissionControllerPackageName() throws RemoteException {
-        return null;
-    }
-
-    @Override
-    public ParceledListSlice getInstantApps(int userId) throws RemoteException {
-        return null;
-    }
-
-    @Override
-    public byte[] getInstantAppCookie(String packageName, int userId) throws RemoteException {
-        return new byte[0];
-    }
-
-    @Override
-    public boolean setInstantAppCookie(String packageName, byte[] cookie, int userId)
-        throws RemoteException {
-        return false;
-    }
-
-    @Override
-    public Bitmap getInstantAppIcon(String packageName, int userId) throws RemoteException {
-        return null;
-    }
-
-    @Override
-    public boolean isInstantApp(String packageName, int userId) throws RemoteException {
-        return false;
-    }
-
-    @Override
-    public boolean setRequiredForSystemUser(String packageName, boolean systemUserApp)
-        throws RemoteException {
-        return false;
-    }
-
-    @Override
-    public void setUpdateAvailable(String packageName, boolean updateAvaialble)
-        throws RemoteException {
-
-    }
-
-    @Override
-    public String getServicesSystemSharedLibraryPackageName() throws RemoteException {
-        return null;
-    }
-
-    @Override
-    public String getSharedSystemSharedLibraryPackageName() throws RemoteException {
-        return null;
-    }
-
-    @Override
-    public ChangedPackages getChangedPackages(int sequenceNumber, int userId)
-        throws RemoteException {
-        return null;
-    }
-
-    @Override
-    public boolean isPackageDeviceAdminOnAnyUser(String packageName) throws RemoteException {
-        return false;
-    }
-
-    @Override
-    public int getInstallReason(String packageName, int userId) throws RemoteException {
-        return 0;
-    }
-
-    @Override
-    public ParceledListSlice getSharedLibraries(String packageName, int flags, int userId)
-        throws RemoteException {
-        return null;
-    }
-
-    @Override
-    public ParceledListSlice getDeclaredSharedLibraries(String packageName, int flags, int userId)
-            throws RemoteException {
-        return null;
-    }
-
-    @Override
-    public boolean canRequestPackageInstalls(String packageName, int userId)
-        throws RemoteException {
-        return false;
-    }
-
-    @Override
-    public void deletePreloadsFileCache() throws RemoteException {
-
-    }
-
-    @Override
-    public ComponentName getInstantAppResolverComponent() throws RemoteException {
-        return null;
-    }
-
-    @Override
-    public ComponentName getInstantAppResolverSettingsComponent() throws RemoteException {
-        return null;
-    }
-
-    @Override
-    public ComponentName getInstantAppInstallerComponent() throws RemoteException {
-        return null;
-    }
-
-    @Override
-    public String getInstantAppAndroidId(String packageName, int userId) throws RemoteException {
-        return null;
-    }
-
-    @Override
-    public IArtManager getArtManager() throws RemoteException {
-        return null;
-    }
-
-    @Override
-    public void setHarmfulAppWarning(String packageName, CharSequence warning, int userId)
-        throws RemoteException {
-
-    }
-
-    @Override
-    public CharSequence getHarmfulAppWarning(String packageName, int userId)
-        throws RemoteException {
-        return null;
-    }
-
-    @Override
-    public boolean hasSigningCertificate(String packageName, byte[] signingCertificate, int flags)
-        throws RemoteException {
-        return false;
-    }
-
-    @Override
-    public boolean hasUidSigningCertificate(int uid, byte[] signingCertificate, int flags)
-        throws RemoteException {
-        return false;
-    }
-
-    @Override
-    public String getSystemTextClassifierPackageName() throws RemoteException {
-        return null;
-    }
-
-    @Override
-    public String getWellbeingPackageName() throws RemoteException {
-        return null;
-    }
-
-    @Override
-    public String getSystemCaptionsServicePackageName() throws RemoteException {
-        return null;
-    }
-
-    @Override
-    public String getAttentionServicePackageName() throws RemoteException {
-        return null;
-    }
-
-    public String getIncidentReportApproverPackageName() throws RemoteException {
-        return null;
-    }
-
-    @Override
-    public String getAppPredictionServicePackageName() {
-        return null;
-    }
-
-    @Override
-    public boolean isPackageStateProtected(String packageName, int userId) throws RemoteException {
-        return false;
-    }
-
-    @Override
-    public void sendDeviceCustomizationReadyBroadcast() throws RemoteException {
-
-    }
-
-    @Override
-    public List<ModuleInfo> getInstalledModules(int flags) throws RemoteException {
-        return null;
-    }
-
-    @Override
-    public ModuleInfo getModuleInfo(String packageName, int flags) throws RemoteException {
-        return null;
-    }
-
-    @Override
-    public int getRuntimePermissionsVersion(int userId) throws RemoteException {
-        return 0;
-    }
-
-    @Override
-    public void setRuntimePermissionsVersion(int version, int userId) throws RemoteException {
-
-    }
-
-    @Override
-    public IBinder asBinder() {
-        return null;
-    }
-}
diff --git a/services/tests/servicestests/src/com/android/server/backup/utils/AppBackupUtilsTest.java b/services/tests/servicestests/src/com/android/server/backup/utils/AppBackupUtilsTest.java
index a92b576..a901175 100644
--- a/services/tests/servicestests/src/com/android/server/backup/utils/AppBackupUtilsTest.java
+++ b/services/tests/servicestests/src/com/android/server/backup/utils/AppBackupUtilsTest.java
@@ -20,6 +20,7 @@
 
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
 
 import android.content.pm.ApplicationInfo;
 import android.content.pm.PackageInfo;
@@ -36,7 +37,6 @@
 import androidx.test.runner.AndroidJUnit4;
 
 import com.android.server.backup.UserBackupManagerService;
-import com.android.server.backup.testutils.IPackageManagerStub;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -54,14 +54,12 @@
     private static final Signature SIGNATURE_3 = generateSignature((byte) 3);
     private static final Signature SIGNATURE_4 = generateSignature((byte) 4);
 
-    private IPackageManagerStub mPackageManagerStub;
     private PackageManagerInternal mMockPackageManagerInternal;
 
     private int mUserId;
 
     @Before
     public void setUp() throws Exception {
-        mPackageManagerStub = new IPackageManagerStub();
         mMockPackageManagerInternal = mock(PackageManagerInternal.class);
 
         mUserId = UserHandle.USER_SYSTEM;
@@ -76,7 +74,7 @@
         applicationInfo.packageName = TEST_PACKAGE_NAME;
 
         boolean isEligible = AppBackupUtils.appIsEligibleForBackup(applicationInfo,
-                mPackageManagerStub, mUserId);
+                mMockPackageManagerInternal, mUserId);
 
         assertThat(isEligible).isFalse();
     }
@@ -91,7 +89,7 @@
         applicationInfo.packageName = TEST_PACKAGE_NAME;
 
         boolean isEligible = AppBackupUtils.appIsEligibleForBackup(applicationInfo,
-                mPackageManagerStub, mUserId);
+                mMockPackageManagerInternal, mUserId);
 
         assertThat(isEligible).isFalse();
     }
@@ -105,7 +103,7 @@
         applicationInfo.packageName = UserBackupManagerService.SHARED_BACKUP_AGENT_PACKAGE;
 
         boolean isEligible = AppBackupUtils.appIsEligibleForBackup(applicationInfo,
-                mPackageManagerStub, mUserId);
+                mMockPackageManagerInternal, mUserId);
 
         assertThat(isEligible).isFalse();
     }
@@ -118,12 +116,11 @@
         applicationInfo.uid = Process.SYSTEM_UID;
         applicationInfo.backupAgentName = CUSTOM_BACKUP_AGENT_NAME;
         applicationInfo.packageName = TEST_PACKAGE_NAME;
-
-        IPackageManagerStub.sApplicationEnabledSetting =
-                PackageManager.COMPONENT_ENABLED_STATE_ENABLED;
+        when(mMockPackageManagerInternal.getApplicationEnabledState(TEST_PACKAGE_NAME, mUserId))
+                .thenReturn(PackageManager.COMPONENT_ENABLED_STATE_ENABLED);
 
         boolean isEligible = AppBackupUtils.appIsEligibleForBackup(applicationInfo,
-                mPackageManagerStub, mUserId);
+                mMockPackageManagerInternal, mUserId);
 
         assertThat(isEligible).isTrue();
     }
@@ -136,12 +133,11 @@
         applicationInfo.uid = Process.FIRST_APPLICATION_UID;
         applicationInfo.backupAgentName = null;
         applicationInfo.packageName = TEST_PACKAGE_NAME;
-
-        IPackageManagerStub.sApplicationEnabledSetting =
-                PackageManager.COMPONENT_ENABLED_STATE_ENABLED;
+        when(mMockPackageManagerInternal.getApplicationEnabledState(TEST_PACKAGE_NAME, mUserId))
+                .thenReturn(PackageManager.COMPONENT_ENABLED_STATE_ENABLED);
 
         boolean isEligible = AppBackupUtils.appIsEligibleForBackup(applicationInfo,
-                mPackageManagerStub, mUserId);
+                mMockPackageManagerInternal, mUserId);
 
         assertThat(isEligible).isTrue();
     }
@@ -154,12 +150,11 @@
         applicationInfo.uid = Process.FIRST_APPLICATION_UID;
         applicationInfo.backupAgentName = CUSTOM_BACKUP_AGENT_NAME;
         applicationInfo.packageName = TEST_PACKAGE_NAME;
-
-        IPackageManagerStub.sApplicationEnabledSetting =
-                PackageManager.COMPONENT_ENABLED_STATE_ENABLED;
+        when(mMockPackageManagerInternal.getApplicationEnabledState(TEST_PACKAGE_NAME, mUserId))
+                .thenReturn(PackageManager.COMPONENT_ENABLED_STATE_ENABLED);
 
         boolean isEligible = AppBackupUtils.appIsEligibleForBackup(applicationInfo,
-                mPackageManagerStub, mUserId);
+                mMockPackageManagerInternal, mUserId);
 
         assertThat(isEligible).isTrue();
     }
@@ -172,12 +167,11 @@
         applicationInfo.uid = Process.SYSTEM_UID;
         applicationInfo.backupAgentName = CUSTOM_BACKUP_AGENT_NAME;
         applicationInfo.packageName = TEST_PACKAGE_NAME;
-
-        IPackageManagerStub.sApplicationEnabledSetting =
-                PackageManager.COMPONENT_ENABLED_STATE_DISABLED;
+        when(mMockPackageManagerInternal.getApplicationEnabledState(TEST_PACKAGE_NAME, mUserId))
+                .thenReturn(PackageManager.COMPONENT_ENABLED_STATE_DISABLED);
 
         boolean isEligible = AppBackupUtils.appIsEligibleForBackup(applicationInfo,
-                mPackageManagerStub, mUserId);
+                mMockPackageManagerInternal, mUserId);
 
         assertThat(isEligible).isFalse();
     }
@@ -190,12 +184,11 @@
         applicationInfo.uid = Process.FIRST_APPLICATION_UID;
         applicationInfo.backupAgentName = null;
         applicationInfo.packageName = TEST_PACKAGE_NAME;
-
-        IPackageManagerStub.sApplicationEnabledSetting =
-                PackageManager.COMPONENT_ENABLED_STATE_DISABLED;
+        when(mMockPackageManagerInternal.getApplicationEnabledState(TEST_PACKAGE_NAME, mUserId))
+                .thenReturn(PackageManager.COMPONENT_ENABLED_STATE_DISABLED);
 
         boolean isEligible = AppBackupUtils.appIsEligibleForBackup(applicationInfo,
-                mPackageManagerStub, mUserId);
+                mMockPackageManagerInternal, mUserId);
 
         assertThat(isEligible).isFalse();
     }
@@ -208,12 +201,11 @@
         applicationInfo.uid = Process.FIRST_APPLICATION_UID;
         applicationInfo.backupAgentName = CUSTOM_BACKUP_AGENT_NAME;
         applicationInfo.packageName = TEST_PACKAGE_NAME;
-
-        IPackageManagerStub.sApplicationEnabledSetting =
-                PackageManager.COMPONENT_ENABLED_STATE_DISABLED;
+        when(mMockPackageManagerInternal.getApplicationEnabledState(TEST_PACKAGE_NAME, mUserId))
+                .thenReturn(PackageManager.COMPONENT_ENABLED_STATE_DISABLED);
 
         boolean isEligible = AppBackupUtils.appIsEligibleForBackup(applicationInfo,
-                mPackageManagerStub, mUserId);
+                mMockPackageManagerInternal, mUserId);
 
         assertThat(isEligible).isFalse();
     }
@@ -226,12 +218,11 @@
         applicationInfo.backupAgentName = CUSTOM_BACKUP_AGENT_NAME;
         applicationInfo.packageName = TEST_PACKAGE_NAME;
         applicationInfo.enabled = true;
+        when(mMockPackageManagerInternal.getApplicationEnabledState(TEST_PACKAGE_NAME, mUserId))
+                .thenReturn(PackageManager.COMPONENT_ENABLED_STATE_DEFAULT);
 
-        IPackageManagerStub.sApplicationEnabledSetting =
-                PackageManager.COMPONENT_ENABLED_STATE_DEFAULT;
-
-        boolean isDisabled = AppBackupUtils.appIsDisabled(applicationInfo, mPackageManagerStub,
-            mUserId);
+        boolean isDisabled =
+                AppBackupUtils.appIsDisabled(applicationInfo, mMockPackageManagerInternal, mUserId);
 
         assertThat(isDisabled).isFalse();
     }
@@ -244,12 +235,12 @@
         applicationInfo.backupAgentName = CUSTOM_BACKUP_AGENT_NAME;
         applicationInfo.packageName = TEST_PACKAGE_NAME;
         applicationInfo.enabled = false;
+        when(mMockPackageManagerInternal.getApplicationEnabledState(TEST_PACKAGE_NAME, mUserId))
+                .thenReturn(PackageManager.COMPONENT_ENABLED_STATE_DEFAULT);
 
-        IPackageManagerStub.sApplicationEnabledSetting =
-                PackageManager.COMPONENT_ENABLED_STATE_DEFAULT;
 
-        boolean isDisabled = AppBackupUtils.appIsDisabled(applicationInfo, mPackageManagerStub,
-            mUserId);
+        boolean isDisabled =
+                AppBackupUtils.appIsDisabled(applicationInfo, mMockPackageManagerInternal, mUserId);
 
         assertThat(isDisabled).isTrue();
     }
@@ -261,12 +252,12 @@
         applicationInfo.uid = Process.FIRST_APPLICATION_UID;
         applicationInfo.backupAgentName = CUSTOM_BACKUP_AGENT_NAME;
         applicationInfo.packageName = TEST_PACKAGE_NAME;
+        when(mMockPackageManagerInternal.getApplicationEnabledState(TEST_PACKAGE_NAME, mUserId))
+                .thenReturn(PackageManager.COMPONENT_ENABLED_STATE_ENABLED);
 
-        IPackageManagerStub.sApplicationEnabledSetting =
-                PackageManager.COMPONENT_ENABLED_STATE_ENABLED;
 
-        boolean isDisabled = AppBackupUtils.appIsDisabled(applicationInfo, mPackageManagerStub,
-            mUserId);
+        boolean isDisabled =
+                AppBackupUtils.appIsDisabled(applicationInfo, mMockPackageManagerInternal, mUserId);
 
         assertThat(isDisabled).isFalse();
     }
@@ -278,12 +269,12 @@
         applicationInfo.uid = Process.FIRST_APPLICATION_UID;
         applicationInfo.backupAgentName = CUSTOM_BACKUP_AGENT_NAME;
         applicationInfo.packageName = TEST_PACKAGE_NAME;
+        when(mMockPackageManagerInternal.getApplicationEnabledState(TEST_PACKAGE_NAME, mUserId))
+                .thenReturn(PackageManager.COMPONENT_ENABLED_STATE_DISABLED);
 
-        IPackageManagerStub.sApplicationEnabledSetting =
-                PackageManager.COMPONENT_ENABLED_STATE_DISABLED;
 
-        boolean isDisabled = AppBackupUtils.appIsDisabled(applicationInfo, mPackageManagerStub,
-            mUserId);
+        boolean isDisabled =
+                AppBackupUtils.appIsDisabled(applicationInfo, mMockPackageManagerInternal, mUserId);
 
         assertThat(isDisabled).isTrue();
     }
@@ -295,12 +286,11 @@
         applicationInfo.uid = Process.FIRST_APPLICATION_UID;
         applicationInfo.backupAgentName = CUSTOM_BACKUP_AGENT_NAME;
         applicationInfo.packageName = TEST_PACKAGE_NAME;
+        when(mMockPackageManagerInternal.getApplicationEnabledState(TEST_PACKAGE_NAME, mUserId))
+                .thenReturn(PackageManager.COMPONENT_ENABLED_STATE_DISABLED_USER);
 
-        IPackageManagerStub.sApplicationEnabledSetting =
-                PackageManager.COMPONENT_ENABLED_STATE_DISABLED_USER;
-
-        boolean isDisabled = AppBackupUtils.appIsDisabled(applicationInfo, mPackageManagerStub,
-            mUserId);
+        boolean isDisabled =
+                AppBackupUtils.appIsDisabled(applicationInfo, mMockPackageManagerInternal, mUserId);
 
         assertThat(isDisabled).isTrue();
     }
@@ -312,12 +302,11 @@
         applicationInfo.uid = Process.FIRST_APPLICATION_UID;
         applicationInfo.backupAgentName = CUSTOM_BACKUP_AGENT_NAME;
         applicationInfo.packageName = TEST_PACKAGE_NAME;
+        when(mMockPackageManagerInternal.getApplicationEnabledState(TEST_PACKAGE_NAME, mUserId))
+                .thenReturn(PackageManager.COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED);
 
-        IPackageManagerStub.sApplicationEnabledSetting =
-                PackageManager.COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED;
-
-        boolean isDisabled = AppBackupUtils.appIsDisabled(applicationInfo, mPackageManagerStub,
-            mUserId);
+        boolean isDisabled =
+                AppBackupUtils.appIsDisabled(applicationInfo, mMockPackageManagerInternal, mUserId);
 
         assertThat(isDisabled).isTrue();
     }