Merge "Changed INTERACT_ACROSS_PROFILES appop to be set per UID" into rvc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
8114e1c1bd
@@ -475,16 +475,16 @@ public class CrossProfileAppsServiceImpl extends ICrossProfileApps.Stub {
|
|||||||
// this particular app-op to be modified without the broader app-op permissions.
|
// this particular app-op to be modified without the broader app-op permissions.
|
||||||
mInjector.withCleanCallingIdentity(() ->
|
mInjector.withCleanCallingIdentity(() ->
|
||||||
mInjector.getAppOpsManager()
|
mInjector.getAppOpsManager()
|
||||||
.setMode(OP_INTERACT_ACROSS_PROFILES, uid, packageName, newMode));
|
.setUidMode(OP_INTERACT_ACROSS_PROFILES, uid, newMode));
|
||||||
} else {
|
} else {
|
||||||
mInjector.getAppOpsManager()
|
mInjector.getAppOpsManager()
|
||||||
.setMode(OP_INTERACT_ACROSS_PROFILES, uid, packageName, newMode);
|
.setUidMode(OP_INTERACT_ACROSS_PROFILES, uid, newMode);
|
||||||
}
|
}
|
||||||
// Kill the UID before sending the broadcast to ensure that apps can be informed when
|
// Kill the UID before sending the broadcast to ensure that apps can be informed when
|
||||||
// their app-op has been revoked.
|
// their app-op has been revoked.
|
||||||
maybeKillUid(packageName, uid, hadPermission);
|
maybeKillUid(packageName, uid, hadPermission);
|
||||||
sendCanInteractAcrossProfilesChangedBroadcast(packageName, uid, UserHandle.of(userId));
|
sendCanInteractAcrossProfilesChangedBroadcast(packageName, UserHandle.of(userId));
|
||||||
maybeLogSetInteractAcrossProfilesAppOp(packageName, newMode, userId, logMetrics, uid);
|
maybeLogSetInteractAcrossProfilesAppOp(packageName, newMode, userId, logMetrics);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -503,11 +503,7 @@ public class CrossProfileAppsServiceImpl extends ICrossProfileApps.Stub {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void maybeLogSetInteractAcrossProfilesAppOp(
|
private void maybeLogSetInteractAcrossProfilesAppOp(
|
||||||
String packageName,
|
String packageName, @Mode int newMode, @UserIdInt int userId, boolean logMetrics) {
|
||||||
@Mode int newMode,
|
|
||||||
@UserIdInt int userId,
|
|
||||||
boolean logMetrics,
|
|
||||||
int uid) {
|
|
||||||
if (!logMetrics) {
|
if (!logMetrics) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -519,7 +515,7 @@ public class CrossProfileAppsServiceImpl extends ICrossProfileApps.Stub {
|
|||||||
.createEvent(DevicePolicyEnums.SET_INTERACT_ACROSS_PROFILES_APP_OP)
|
.createEvent(DevicePolicyEnums.SET_INTERACT_ACROSS_PROFILES_APP_OP)
|
||||||
.setStrings(packageName)
|
.setStrings(packageName)
|
||||||
.setInt(newMode)
|
.setInt(newMode)
|
||||||
.setBoolean(appDeclaresCrossProfileAttribute(uid))
|
.setBoolean(appDeclaresCrossProfileAttribute(packageName))
|
||||||
.write();
|
.write();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -536,10 +532,10 @@ public class CrossProfileAppsServiceImpl extends ICrossProfileApps.Stub {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void sendCanInteractAcrossProfilesChangedBroadcast(
|
private void sendCanInteractAcrossProfilesChangedBroadcast(
|
||||||
String packageName, int uid, UserHandle userHandle) {
|
String packageName, UserHandle userHandle) {
|
||||||
final Intent intent =
|
final Intent intent =
|
||||||
new Intent(ACTION_CAN_INTERACT_ACROSS_PROFILES_CHANGED).setPackage(packageName);
|
new Intent(ACTION_CAN_INTERACT_ACROSS_PROFILES_CHANGED).setPackage(packageName);
|
||||||
if (appDeclaresCrossProfileAttribute(uid)) {
|
if (appDeclaresCrossProfileAttribute(packageName)) {
|
||||||
intent.addFlags(
|
intent.addFlags(
|
||||||
Intent.FLAG_RECEIVER_INCLUDE_BACKGROUND | Intent.FLAG_RECEIVER_FOREGROUND);
|
Intent.FLAG_RECEIVER_INCLUDE_BACKGROUND | Intent.FLAG_RECEIVER_FOREGROUND);
|
||||||
} else {
|
} else {
|
||||||
@@ -556,8 +552,8 @@ public class CrossProfileAppsServiceImpl extends ICrossProfileApps.Stub {
|
|||||||
.queryBroadcastReceiversAsUser(intent, /* flags= */ 0, userHandle);
|
.queryBroadcastReceiversAsUser(intent, /* flags= */ 0, userHandle);
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean appDeclaresCrossProfileAttribute(int uid) {
|
private boolean appDeclaresCrossProfileAttribute(String packageName) {
|
||||||
return mInjector.getPackageManagerInternal().getPackage(uid).isCrossProfile();
|
return mInjector.getPackageManagerInternal().getPackage(packageName).isCrossProfile();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
Reference in New Issue
Block a user