Extend ROLLBACK_COMMITTED broadcast for the multi-user case

am: e92720ddb9

Change-Id: I28bb0d0574c80df5f6d6628bc6026d99770faaf5
This commit is contained in:
Gavin Corkery
2019-11-25 05:33:06 -08:00
committed by android-build-merger
2 changed files with 7 additions and 13 deletions

View File

@@ -388,7 +388,7 @@ class RollbackManagerServiceImpl extends IRollbackManager.Stub {
// Get a context for the caller to use to install the downgraded
// version of the package.
Context context = null;
final Context context;
try {
context = mContext.createPackageContext(callerPackageName, 0);
} catch (PackageManager.NameNotFoundException e) {
@@ -434,7 +434,6 @@ class RollbackManagerServiceImpl extends IRollbackManager.Stub {
}
int sessionId = packageInstaller.createSession(params);
PackageInstaller.Session session = packageInstaller.openSession(sessionId);
File[] packageCodePaths = RollbackStore.getPackageCodePaths(
data, info.getPackageName());
if (packageCodePaths == null) {
@@ -504,8 +503,10 @@ class RollbackManagerServiceImpl extends IRollbackManager.Stub {
Intent broadcast = new Intent(Intent.ACTION_ROLLBACK_COMMITTED);
mContext.sendBroadcastAsUser(broadcast, UserHandle.SYSTEM,
Manifest.permission.MANAGE_ROLLBACKS);
for (UserInfo userInfo : UserManager.get(mContext).getUsers(true)) {
mContext.sendBroadcastAsUser(broadcast, userInfo.getUserHandle(),
Manifest.permission.MANAGE_ROLLBACKS);
}
});
}
);

View File

@@ -154,15 +154,8 @@ public class RollbackTest {
// TODO: Race condition between the timeout and when the broadcast is
// received could lead to test flakiness.
Intent broadcast = broadcastReceiver.poll(5, TimeUnit.SECONDS);
if (context.getUser().isSystem()) {
// Only system user should receive those broadcasts.
assertThat(broadcast).isNotNull();
assertThat(broadcastReceiver.poll(0, TimeUnit.SECONDS)).isNull();
} else {
// This is in case the test was running under a secondary user, in which case
// the broadcast won't be received here.
assertThat(broadcast).isNull();
}
assertThat(broadcast).isNotNull();
assertThat(broadcastReceiver.poll(0, TimeUnit.SECONDS)).isNull();
// Verify the recent rollback has been recorded.
RollbackInfo committed = getUniqueRollbackInfoForPackage(