Extend ROLLBACK_COMMITTED broadcast for the multi-user case
am: e92720ddb9
Change-Id: I28bb0d0574c80df5f6d6628bc6026d99770faaf5
This commit is contained in:
@@ -388,7 +388,7 @@ class RollbackManagerServiceImpl extends IRollbackManager.Stub {
|
|||||||
|
|
||||||
// Get a context for the caller to use to install the downgraded
|
// Get a context for the caller to use to install the downgraded
|
||||||
// version of the package.
|
// version of the package.
|
||||||
Context context = null;
|
final Context context;
|
||||||
try {
|
try {
|
||||||
context = mContext.createPackageContext(callerPackageName, 0);
|
context = mContext.createPackageContext(callerPackageName, 0);
|
||||||
} catch (PackageManager.NameNotFoundException e) {
|
} catch (PackageManager.NameNotFoundException e) {
|
||||||
@@ -434,7 +434,6 @@ class RollbackManagerServiceImpl extends IRollbackManager.Stub {
|
|||||||
}
|
}
|
||||||
int sessionId = packageInstaller.createSession(params);
|
int sessionId = packageInstaller.createSession(params);
|
||||||
PackageInstaller.Session session = packageInstaller.openSession(sessionId);
|
PackageInstaller.Session session = packageInstaller.openSession(sessionId);
|
||||||
|
|
||||||
File[] packageCodePaths = RollbackStore.getPackageCodePaths(
|
File[] packageCodePaths = RollbackStore.getPackageCodePaths(
|
||||||
data, info.getPackageName());
|
data, info.getPackageName());
|
||||||
if (packageCodePaths == null) {
|
if (packageCodePaths == null) {
|
||||||
@@ -504,8 +503,10 @@ class RollbackManagerServiceImpl extends IRollbackManager.Stub {
|
|||||||
|
|
||||||
Intent broadcast = new Intent(Intent.ACTION_ROLLBACK_COMMITTED);
|
Intent broadcast = new Intent(Intent.ACTION_ROLLBACK_COMMITTED);
|
||||||
|
|
||||||
mContext.sendBroadcastAsUser(broadcast, UserHandle.SYSTEM,
|
for (UserInfo userInfo : UserManager.get(mContext).getUsers(true)) {
|
||||||
Manifest.permission.MANAGE_ROLLBACKS);
|
mContext.sendBroadcastAsUser(broadcast, userInfo.getUserHandle(),
|
||||||
|
Manifest.permission.MANAGE_ROLLBACKS);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -154,15 +154,8 @@ public class RollbackTest {
|
|||||||
// TODO: Race condition between the timeout and when the broadcast is
|
// TODO: Race condition between the timeout and when the broadcast is
|
||||||
// received could lead to test flakiness.
|
// received could lead to test flakiness.
|
||||||
Intent broadcast = broadcastReceiver.poll(5, TimeUnit.SECONDS);
|
Intent broadcast = broadcastReceiver.poll(5, TimeUnit.SECONDS);
|
||||||
if (context.getUser().isSystem()) {
|
assertThat(broadcast).isNotNull();
|
||||||
// Only system user should receive those broadcasts.
|
assertThat(broadcastReceiver.poll(0, TimeUnit.SECONDS)).isNull();
|
||||||
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();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Verify the recent rollback has been recorded.
|
// Verify the recent rollback has been recorded.
|
||||||
RollbackInfo committed = getUniqueRollbackInfoForPackage(
|
RollbackInfo committed = getUniqueRollbackInfoForPackage(
|
||||||
|
|||||||
Reference in New Issue
Block a user