Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 599e9b3c authored by Annie Meng's avatar Annie Meng
Browse files

Fix KeyValueBackupTaskTest shadow errors

Replace IPackageManager with PackageManagerInternal to avoid shadowing
ActivityThread. This shadow is prone to unrelated framework changes breaking
our tests.

Bug: 130540953
Test: 1) atest RunBackupFrameworksServicesRoboTests
2) atest AppBackupUtilsTest

Change-Id: Iea95a37da3df9d3f0887ed5ab30c7007306415a1
parent 4bea465d
Loading
Loading
Loading
Loading
+11 −18
Original line number Diff line number Diff line
@@ -23,22 +23,20 @@ import static com.android.server.backup.UserBackupManagerService.SHARED_BACKUP_A
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 @@ public class AppBackupUtils {
     * </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 @@ public class AppBackupUtils {
    /**
     * 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 @@ public class AppBackupUtils {

    /** 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:
+20 −14
Original line number Diff line number Diff line
@@ -86,6 +86,7 @@ import android.content.Intent;
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 android.util.Pair;

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;
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 @@ import java.util.stream.Stream;
            ShadowBackupDataInput.class,
            ShadowBackupDataOutput.class,
            ShadowEventLog.class,
            ShadowQueuedWork.class,
            ShadowBackupActivityThread.class,
            ShadowQueuedWork.class
        })
@Presubmit
public class KeyValueBackupTaskTest {
@@ -179,6 +179,7 @@ public class KeyValueBackupTaskTest {
    @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 @@ public class KeyValueBackupTaskTest {
        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 @@ public class KeyValueBackupTaskTest {
        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 @@ public class KeyValueBackupTaskTest {
        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 @@ public class KeyValueBackupTaskTest {
        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 @@ public class KeyValueBackupTaskTest {
                        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 @@ public class KeyValueBackupTaskTest {
        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 @@ public class KeyValueBackupTaskTest {
        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 @@ public class KeyValueBackupTaskTest {
        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 @@ public class KeyValueBackupTaskTest {
        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 @@ public class KeyValueBackupTaskTest {
        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 @@ public class KeyValueBackupTaskTest {
        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 @@ public class KeyValueBackupTaskTest {
        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));
+0 −79
Original line number Diff line number Diff line
/*
 * 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;
                        }
                    }
                });
    }
}
+0 −1217

File deleted.

Preview size limit exceeded, changes collapsed.

+46 −57
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import static com.google.common.truth.Truth.assertThat;

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.filters.SmallTest;
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 @@ public class AppBackupUtilsTest {
    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 @@ public class AppBackupUtilsTest {
        applicationInfo.packageName = TEST_PACKAGE_NAME;

        boolean isEligible = AppBackupUtils.appIsEligibleForBackup(applicationInfo,
                mPackageManagerStub, mUserId);
                mMockPackageManagerInternal, mUserId);

        assertThat(isEligible).isFalse();
    }
@@ -91,7 +89,7 @@ public class AppBackupUtilsTest {
        applicationInfo.packageName = TEST_PACKAGE_NAME;

        boolean isEligible = AppBackupUtils.appIsEligibleForBackup(applicationInfo,
                mPackageManagerStub, mUserId);
                mMockPackageManagerInternal, mUserId);

        assertThat(isEligible).isFalse();
    }
@@ -105,7 +103,7 @@ public class AppBackupUtilsTest {
        applicationInfo.packageName = UserBackupManagerService.SHARED_BACKUP_AGENT_PACKAGE;

        boolean isEligible = AppBackupUtils.appIsEligibleForBackup(applicationInfo,
                mPackageManagerStub, mUserId);
                mMockPackageManagerInternal, mUserId);

        assertThat(isEligible).isFalse();
    }
@@ -118,12 +116,11 @@ public class AppBackupUtilsTest {
        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 @@ public class AppBackupUtilsTest {
        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 @@ public class AppBackupUtilsTest {
        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 @@ public class AppBackupUtilsTest {
        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 @@ public class AppBackupUtilsTest {
        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 @@ public class AppBackupUtilsTest {
        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 @@ public class AppBackupUtilsTest {
        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 @@ public class AppBackupUtilsTest {
        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 @@ public class AppBackupUtilsTest {
        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 @@ public class AppBackupUtilsTest {
        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 @@ public class AppBackupUtilsTest {
        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 @@ public class AppBackupUtilsTest {
        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();
    }