Merge "Enable HistoricalRegistry API and getHistoricalOps for self-requests." into sc-dev

This commit is contained in:
Stanislav Zholnin
2021-03-12 19:56:45 +00:00
committed by Android (Google) Code Review
2 changed files with 20 additions and 18 deletions

View File

@@ -2098,26 +2098,28 @@ public class AppOpsService extends IAppOpsService.Stub {
ensureHistoricalOpRequestIsValid(uid, packageName, attributionTag, opNames, filter,
beginTimeMillis, endTimeMillis, flags);
Objects.requireNonNull(callback, "callback cannot be null");
ActivityManagerInternal ami = LocalServices.getService(ActivityManagerInternal.class);
boolean isCallerInstrumented = ami.isUidCurrentlyInstrumented(Binder.getCallingUid());
boolean isCallerSystem = Binder.getCallingPid() == Process.myPid();
boolean isCallerPermissionController;
try {
isCallerPermissionController = pm.getPackageUid(
mContext.getPackageManager().getPermissionControllerPackageName(), 0)
== Binder.getCallingUid();
} catch (PackageManager.NameNotFoundException doesNotHappen) {
return;
}
boolean isSelfRequest = (filter & FILTER_BY_UID) != 0 && uid == Binder.getCallingUid();
if (!isSelfRequest) {
boolean isCallerInstrumented = ami.isUidCurrentlyInstrumented(Binder.getCallingUid());
boolean isCallerSystem = Binder.getCallingPid() == Process.myPid();
boolean isCallerPermissionController;
try {
isCallerPermissionController = pm.getPackageUid(
mContext.getPackageManager().getPermissionControllerPackageName(), 0)
== Binder.getCallingUid();
} catch (PackageManager.NameNotFoundException doesNotHappen) {
return;
}
if (!isCallerSystem && !isCallerInstrumented && !isCallerPermissionController) {
mHandler.post(() -> callback.sendResult(new Bundle()));
return;
}
if (!isCallerSystem && !isCallerInstrumented && !isCallerPermissionController) {
mHandler.post(() -> callback.sendResult(new Bundle()));
return;
}
mContext.enforcePermission(android.Manifest.permission.GET_APP_OPS_STATS,
Binder.getCallingPid(), Binder.getCallingUid(), "getHistoricalOps");
mContext.enforcePermission(android.Manifest.permission.GET_APP_OPS_STATS,
Binder.getCallingPid(), Binder.getCallingUid(), "getHistoricalOps");
}
final String[] opNamesArray = (opNames != null)
? opNames.toArray(new String[opNames.size()]) : null;

View File

@@ -795,7 +795,7 @@ final class HistoricalRegistry {
private static boolean isApiEnabled() {
return Binder.getCallingUid() == Process.myUid()
|| DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_PRIVACY,
PROPERTY_PERMISSIONS_HUB_ENABLED, false);
PROPERTY_PERMISSIONS_HUB_ENABLED, true);
}
private static final class Persistence {