Merge "isBackupServiceActive should not depend on whether the user is started"
diff --git a/services/backup/java/com/android/server/backup/Trampoline.java b/services/backup/java/com/android/server/backup/Trampoline.java
index 8f0c5d8..bb0aba0 100644
--- a/services/backup/java/com/android/server/backup/Trampoline.java
+++ b/services/backup/java/com/android/server/backup/Trampoline.java
@@ -395,7 +395,7 @@
@Override
public boolean isBackupServiceActive(int userId) {
synchronized (mStateLock) {
- return isUserReadyForBackup(userId);
+ return mService != null && isBackupActivatedForUser(userId);
}
}
diff --git a/services/tests/servicestests/src/com/android/server/backup/TrampolineTest.java b/services/tests/servicestests/src/com/android/server/backup/TrampolineTest.java
index dd79aad..29cbf98 100644
--- a/services/tests/servicestests/src/com/android/server/backup/TrampolineTest.java
+++ b/services/tests/servicestests/src/com/android/server/backup/TrampolineTest.java
@@ -95,6 +95,7 @@
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 @@
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 @@
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 @@
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
@@ -245,6 +258,16 @@
}
@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();
TrampolineTestable.sCallingUid = Process.SYSTEM_UID;
@@ -421,7 +444,8 @@
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 @@
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 @@
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