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

Commit 4fe554ae authored by Chandan Nath's avatar Chandan Nath
Browse files

isBackupServiceActive should not depend on whether the user is started

Bug: 129763613

Test: atest com.android.server.backup.TrampolineTest
Change-Id: Ia05451a4d45a14bc30353e268cb6616ceb49947e
parent aecff3d7
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -395,7 +395,7 @@ public class Trampoline extends IBackupManager.Stub {
    @Override
    public boolean isBackupServiceActive(int userId) {
        synchronized (mStateLock) {
            return isUserReadyForBackup(userId);
            return mService != null && isBackupActivatedForUser(userId);
        }
    }

+36 −10
Original line number Diff line number Diff line
@@ -95,6 +95,7 @@ public class TrampolineTest {
            new ComponentName("package2", "class2")
    };
    private static final int NON_USER_SYSTEM = UserHandle.USER_SYSTEM + 1;
    private static final int UNSTARTED_NON_USER_SYSTEM = UserHandle.USER_SYSTEM + 2;

    @UserIdInt
    private int mUserId;
@@ -126,8 +127,6 @@ public class TrampolineTest {
    private TrampolineTestable mTrampoline;
    private File mTestDir;
    private File mSuppressFile;
    private File mActivatedFile;
    private File mRememberActivatedFile;

    @Before
    public void setUp() throws Exception {
@@ -141,6 +140,7 @@ public class TrampolineTest {

        when(mUserManagerMock.getUserInfo(UserHandle.USER_SYSTEM)).thenReturn(mUserInfoMock);
        when(mUserManagerMock.getUserInfo(NON_USER_SYSTEM)).thenReturn(mUserInfoMock);
        when(mUserManagerMock.getUserInfo(UNSTARTED_NON_USER_SYSTEM)).thenReturn(mUserInfoMock);

        TrampolineTestable.sBackupManagerServiceMock = mBackupManagerServiceMock;
        TrampolineTestable.sCallingUserId = UserHandle.USER_SYSTEM;
@@ -154,18 +154,31 @@ public class TrampolineTest {
        mSuppressFile = new File(mTestDir, "suppress");
        TrampolineTestable.sSuppressFile = mSuppressFile;

        mActivatedFile = new File(mTestDir, "activate-" + NON_USER_SYSTEM);
        TrampolineTestable.sActivatedFiles.append(NON_USER_SYSTEM, mActivatedFile);
        mRememberActivatedFile = new File(mTestDir, "rem-activate-" + NON_USER_SYSTEM);
        TrampolineTestable.sRememberActivatedFiles.append(NON_USER_SYSTEM, mRememberActivatedFile);
        setUpStateFilesForNonSystemUser(NON_USER_SYSTEM);
        setUpStateFilesForNonSystemUser(UNSTARTED_NON_USER_SYSTEM);

        mTrampoline = new TrampolineTestable(mContextMock);
    }

    private void setUpStateFilesForNonSystemUser(int userId) {
        File activatedFile = new File(mTestDir, "activate-" + userId);
        TrampolineTestable.sActivatedFiles.append(userId, activatedFile);
        File rememberActivatedFile = new File(mTestDir, "rem-activate-" + userId);
        TrampolineTestable.sRememberActivatedFiles.append(userId, rememberActivatedFile);
    }

    @After
    public void tearDown() throws Exception {
        mSuppressFile.delete();
        mActivatedFile.delete();
        deleteFiles(TrampolineTestable.sActivatedFiles);
        deleteFiles(TrampolineTestable.sRememberActivatedFiles);
    }

    private void deleteFiles(SparseArray<File> files) {
        int numFiles = files.size();
        for (int i = 0; i < numFiles; i++) {
            files.valueAt(i).delete();
        }
    }

    @Test
@@ -244,6 +257,16 @@ public class TrampolineTest {
        assertTrue(mTrampoline.isBackupServiceActive(NON_USER_SYSTEM));
    }

    @Test
    public void
            isBackupServiceActive_forUnstartedNonSystemUser_returnsTrueWhenSystemAndUserActivated()
            throws Exception {
        mTrampoline.initializeService();
        mTrampoline.setBackupServiceActive(UNSTARTED_NON_USER_SYSTEM, true);

        assertTrue(mTrampoline.isBackupServiceActive(UNSTARTED_NON_USER_SYSTEM));
    }

    @Test
    public void setBackupServiceActive_forSystemUserAndCallerSystemUid_serviceCreated() {
        mTrampoline.initializeService();
@@ -421,7 +444,8 @@ public class TrampolineTest {

        mTrampoline.setBackupServiceActive(NON_USER_SYSTEM, true);

        assertTrue(RandomAccessFileUtils.readBoolean(mRememberActivatedFile, false));
        assertTrue(RandomAccessFileUtils.readBoolean(
                TrampolineTestable.sRememberActivatedFiles.get(NON_USER_SYSTEM), false));
    }

    @Test
@@ -430,7 +454,8 @@ public class TrampolineTest {

        mTrampoline.setBackupServiceActive(NON_USER_SYSTEM, false);

        assertFalse(RandomAccessFileUtils.readBoolean(mRememberActivatedFile, true));
        assertFalse(RandomAccessFileUtils.readBoolean(
                TrampolineTestable.sRememberActivatedFiles.get(NON_USER_SYSTEM), true));
    }

    @Test
@@ -440,7 +465,8 @@ public class TrampolineTest {
        mTrampoline.setBackupServiceActive(NON_USER_SYSTEM, true);
        mTrampoline.setBackupServiceActive(NON_USER_SYSTEM, false);

        assertFalse(RandomAccessFileUtils.readBoolean(mRememberActivatedFile, true));
        assertFalse(RandomAccessFileUtils.readBoolean(
                TrampolineTestable.sRememberActivatedFiles.get(NON_USER_SYSTEM), true));
    }

    @Test