blob: 7f98e216317882ac565c74cfb7305c2cda181693 [file] [log] [blame]
/*
* Copyright (C) 2022 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.server.pm.permission;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.content.pm.PermissionGroupInfo;
import android.content.pm.PermissionInfo;
import android.content.pm.permission.SplitPermissionInfoParcelable;
import android.permission.IOnPermissionsChangeListener;
import android.util.Log;
import com.android.server.pm.pkg.AndroidPackage;
import com.android.server.pm.pkg.PackageState;
import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* Logging decorator for {@link PermissionManagerServiceInterface}.
*/
public class PermissionManagerServiceLoggingDecorator implements PermissionManagerServiceInterface {
private static final String LOG_TAG =
PermissionManagerServiceLoggingDecorator.class.getSimpleName();
@NonNull
private final PermissionManagerServiceInterface mService;
public PermissionManagerServiceLoggingDecorator(
@NonNull PermissionManagerServiceInterface service
) {
mService = service;
}
@Nullable
@Override
public byte[] backupRuntimePermissions(int userId) {
Log.i(LOG_TAG, "backupRuntimePermissions(userId = " + userId + ")");
return mService.backupRuntimePermissions(userId);
}
@Override
@SuppressWarnings("ArrayToString")
public void restoreRuntimePermissions(@NonNull byte[] backup, int userId) {
Log.i(LOG_TAG, "restoreRuntimePermissions(backup = " + backup + ", userId = " + userId
+ ")");
mService.restoreRuntimePermissions(backup, userId);
}
@Override
public void restoreDelayedRuntimePermissions(@NonNull String packageName, int userId) {
Log.i(LOG_TAG, "restoreDelayedRuntimePermissions(packageName = " + packageName
+ ", userId = " + userId + ")");
mService.restoreDelayedRuntimePermissions(packageName, userId);
}
@Override
public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
Log.i(LOG_TAG, "dump(fd = " + fd + ", pw = " + pw + ", args = " + Arrays.toString(args)
+ ")");
mService.dump(fd, pw, args);
}
@Override
public List<PermissionGroupInfo> getAllPermissionGroups(int flags) {
Log.i(LOG_TAG, "getAllPermissionGroups(flags = " + flags + ")");
return mService.getAllPermissionGroups(flags);
}
@Override
public PermissionGroupInfo getPermissionGroupInfo(String groupName, int flags) {
Log.i(LOG_TAG, "getPermissionGroupInfo(groupName = " + groupName + ", flags = " + flags
+ ")");
return mService.getPermissionGroupInfo(groupName, flags);
}
@Override
public PermissionInfo getPermissionInfo(@NonNull String permName, int flags,
@NonNull String opPackageName) {
Log.i(LOG_TAG, "getPermissionInfo(permName = " + permName + ", flags = " + flags
+ ", opPackageName = " + opPackageName + ")");
return mService.getPermissionInfo(permName, flags, opPackageName);
}
@Override
public List<PermissionInfo> queryPermissionsByGroup(String groupName, int flags) {
Log.i(LOG_TAG, "queryPermissionsByGroup(groupName = " + groupName + ", flags = " + flags
+ ")");
return mService.queryPermissionsByGroup(groupName, flags);
}
@Override
public boolean addPermission(PermissionInfo info, boolean async) {
Log.i(LOG_TAG, "addPermission(info = " + info + ", async = " + async + ")");
return mService.addPermission(info, async);
}
@Override
public void removePermission(String permName) {
Log.i(LOG_TAG, "removePermission(permName = " + permName + ")");
mService.removePermission(permName);
}
@Override
public int getPermissionFlags(String packageName, String permName, int userId) {
Log.i(LOG_TAG, "getPermissionFlags(packageName = " + packageName + ", permName = "
+ permName + ", userId = " + userId + ")");
return mService.getPermissionFlags(packageName, permName, userId);
}
@Override
public void updatePermissionFlags(String packageName, String permName, int flagMask,
int flagValues, boolean checkAdjustPolicyFlagPermission, int userId) {
Log.i(LOG_TAG, "updatePermissionFlags(packageName = " + packageName + ", permName = "
+ permName + ", flagMask = " + flagMask + ", flagValues = " + flagValues
+ ", checkAdjustPolicyFlagPermission = " + checkAdjustPolicyFlagPermission
+ ", userId = " + userId + ")");
mService.updatePermissionFlags(packageName, permName, flagMask, flagValues,
checkAdjustPolicyFlagPermission, userId);
}
@Override
public void updatePermissionFlagsForAllApps(int flagMask, int flagValues, int userId) {
Log.i(LOG_TAG, "updatePermissionFlagsForAllApps(flagMask = " + flagMask + ", flagValues = "
+ flagValues + ", userId = " + userId + ")");
mService.updatePermissionFlagsForAllApps(flagMask, flagValues, userId);
}
@Override
public void addOnPermissionsChangeListener(IOnPermissionsChangeListener listener) {
Log.i(LOG_TAG, "addOnPermissionsChangeListener(listener = " + listener + ")");
mService.addOnPermissionsChangeListener(listener);
}
@Override
public void removeOnPermissionsChangeListener(
IOnPermissionsChangeListener listener) {
Log.i(LOG_TAG, "removeOnPermissionsChangeListener(listener = " + listener + ")");
mService.removeOnPermissionsChangeListener(listener);
}
@Override
public boolean addAllowlistedRestrictedPermission(@NonNull String packageName,
@NonNull String permName, int flags, int userId) {
Log.i(LOG_TAG, "addAllowlistedRestrictedPermission(packageName = " + packageName
+ ", permName = " + permName + ", flags = " + flags + ", userId = " + userId + ")");
return mService.addAllowlistedRestrictedPermission(packageName, permName, flags, userId);
}
@Override
public List<String> getAllowlistedRestrictedPermissions(@NonNull String packageName, int flags,
int userId) {
Log.i(LOG_TAG, "getAllowlistedRestrictedPermissions(packageName = " + packageName
+ ", flags = " + flags + ", userId = " + userId + ")");
return mService.getAllowlistedRestrictedPermissions(packageName, flags, userId);
}
@Override
public boolean removeAllowlistedRestrictedPermission(@NonNull String packageName,
@NonNull String permName, int flags, int userId) {
Log.i(LOG_TAG, "removeAllowlistedRestrictedPermission(packageName = " + packageName
+ ", permName = " + permName + ", flags = " + flags + ", userId = " + userId + ")");
return mService.removeAllowlistedRestrictedPermission(packageName, permName, flags, userId);
}
@Override
public void grantRuntimePermission(String packageName, String permName, int userId) {
Log.i(LOG_TAG, "grantRuntimePermission(packageName = " + packageName + ", permName = "
+ permName + ", userId = " + userId + ")");
mService.grantRuntimePermission(packageName, permName, userId);
}
@Override
public void revokeRuntimePermission(String packageName, String permName, int userId,
String reason) {
Log.i(LOG_TAG, "revokeRuntimePermission(packageName = " + packageName + ", permName = "
+ permName + ", userId = " + userId + ", reason = " + reason + ")");
mService.revokeRuntimePermission(packageName, permName, userId, reason);
}
@Override
public void revokePostNotificationPermissionWithoutKillForTest(String packageName, int userId) {
Log.i(LOG_TAG, "revokePostNotificationPermissionWithoutKillForTest(packageName = "
+ packageName + ", userId = " + userId + ")");
mService.revokePostNotificationPermissionWithoutKillForTest(packageName, userId);
}
@Override
public boolean shouldShowRequestPermissionRationale(String packageName, String permName,
int userId) {
Log.i(LOG_TAG, "shouldShowRequestPermissionRationale(packageName = " + packageName
+ ", permName = " + permName + ", userId = " + userId + ")");
return mService.shouldShowRequestPermissionRationale(packageName, permName, userId);
}
@Override
public boolean isPermissionRevokedByPolicy(String packageName, String permName, int userId) {
Log.i(LOG_TAG, "isPermissionRevokedByPolicy(packageName = " + packageName + ", permName = "
+ permName + ", userId = " + userId + ")");
return mService.isPermissionRevokedByPolicy(packageName, permName, userId);
}
@Override
public List<SplitPermissionInfoParcelable> getSplitPermissions() {
Log.i(LOG_TAG, "getSplitPermissions()");
return mService.getSplitPermissions();
}
@Override
public int checkPermission(String pkgName, String permName, int userId) {
Log.i(LOG_TAG, "checkPermission(pkgName = " + pkgName + ", permName = " + permName
+ ", userId = " + userId + ")");
return mService.checkPermission(pkgName, permName, userId);
}
@Override
public int checkUidPermission(int uid, String permName) {
Log.i(LOG_TAG, "checkUidPermission(uid = " + uid + ", permName = " + permName + ")");
return mService.checkUidPermission(uid, permName);
}
@Override
public Map<String, Set<String>> getAllAppOpPermissionPackages() {
Log.i(LOG_TAG, "getAllAppOpPermissionPackages()");
return mService.getAllAppOpPermissionPackages();
}
@Override
public boolean isPermissionsReviewRequired(@NonNull String packageName, int userId) {
Log.i(LOG_TAG, "isPermissionsReviewRequired(packageName = " + packageName + ", userId = "
+ userId + ")");
return mService.isPermissionsReviewRequired(packageName, userId);
}
@Override
public void resetRuntimePermissions(@NonNull AndroidPackage pkg, int userId) {
Log.i(LOG_TAG, "resetRuntimePermissions(pkg = " + pkg + ", userId = " + userId + ")");
mService.resetRuntimePermissions(pkg, userId);
}
@Override
public void resetRuntimePermissionsForUser(int userId) {
Log.i(LOG_TAG, "resetRuntimePermissionsForUser(userId = " + userId + ")");
mService.resetRuntimePermissionsForUser(userId);
}
@Override
public void readLegacyPermissionStateTEMP() {
Log.i(LOG_TAG, "readLegacyPermissionStateTEMP()");
mService.readLegacyPermissionStateTEMP();
}
@Override
public void writeLegacyPermissionStateTEMP() {
Log.i(LOG_TAG, "writeLegacyPermissionStateTEMP()");
mService.writeLegacyPermissionStateTEMP();
}
@NonNull
@Override
public Set<String> getInstalledPermissions(@NonNull String packageName) {
Log.i(LOG_TAG, "getInstalledPermissions(packageName = " + packageName + ")");
return mService.getInstalledPermissions(packageName);
}
@NonNull
@Override
public Set<String> getGrantedPermissions(@NonNull String packageName, int userId) {
Log.i(LOG_TAG, "getGrantedPermissions(packageName = " + packageName + ", userId = "
+ userId + ")");
return mService.getGrantedPermissions(packageName, userId);
}
@NonNull
@Override
public int[] getPermissionGids(@NonNull String permissionName, int userId) {
Log.i(LOG_TAG, "getPermissionGids(permissionName = " + permissionName + ", userId = "
+ userId + ")");
return mService.getPermissionGids(permissionName, userId);
}
@NonNull
@Override
public String[] getAppOpPermissionPackages(@NonNull String permissionName) {
Log.i(LOG_TAG, "getAppOpPermissionPackages(permissionName = " + permissionName + ")");
return mService.getAppOpPermissionPackages(permissionName);
}
@Nullable
@Override
public Permission getPermissionTEMP(@NonNull String permName) {
Log.i(LOG_TAG, "getPermissionTEMP(permName = " + permName + ")");
return mService.getPermissionTEMP(permName);
}
@NonNull
@Override
public List<PermissionInfo> getAllPermissionsWithProtection(int protection) {
Log.i(LOG_TAG, "getAllPermissionsWithProtection(protection = " + protection + ")");
return mService.getAllPermissionsWithProtection(protection);
}
@NonNull
@Override
public List<PermissionInfo> getAllPermissionsWithProtectionFlags(int protectionFlags) {
Log.i(LOG_TAG, "getAllPermissionsWithProtectionFlags(protectionFlags = " + protectionFlags
+ ")");
return mService.getAllPermissionsWithProtectionFlags(protectionFlags);
}
@NonNull
@Override
public List<LegacyPermission> getLegacyPermissions() {
Log.i(LOG_TAG, "getLegacyPermissions()");
return mService.getLegacyPermissions();
}
@NonNull
@Override
public LegacyPermissionState getLegacyPermissionState(int appId) {
Log.i(LOG_TAG, "getLegacyPermissionState(appId = " + appId + ")");
return mService.getLegacyPermissionState(appId);
}
@Override
public void readLegacyPermissionsTEMP(
@NonNull LegacyPermissionSettings legacyPermissionSettings) {
Log.i(LOG_TAG, "readLegacyPermissionsTEMP(legacyPermissionSettings = "
+ legacyPermissionSettings + ")");
mService.readLegacyPermissionsTEMP(legacyPermissionSettings);
}
@Override
public void writeLegacyPermissionsTEMP(
@NonNull LegacyPermissionSettings legacyPermissionSettings) {
Log.i(LOG_TAG, "writeLegacyPermissionsTEMP(legacyPermissionSettings = "
+ legacyPermissionSettings + ")");
mService.writeLegacyPermissionsTEMP(legacyPermissionSettings);
}
@Nullable
@Override
public String getDefaultPermissionGrantFingerprint(int userId) {
Log.i(LOG_TAG, "getDefaultPermissionGrantFingerprint(userId = " + userId + ")");
return mService.getDefaultPermissionGrantFingerprint(userId);
}
@Override
public void setDefaultPermissionGrantFingerprint(@NonNull String fingerprint, int userId) {
Log.i(LOG_TAG, "setDefaultPermissionGrantFingerprint(fingerprint = " + fingerprint
+ ", userId = " + userId + ")");
mService.setDefaultPermissionGrantFingerprint(fingerprint, userId);
}
@Override
public void onSystemReady() {
Log.i(LOG_TAG, "onSystemReady()");
mService.onSystemReady();
}
@Override
public void onStorageVolumeMounted(@NonNull String volumeUuid, boolean fingerprintChanged) {
Log.i(LOG_TAG, "onStorageVolumeMounted(volumeUuid = " + volumeUuid
+ ", fingerprintChanged = " + fingerprintChanged + ")");
mService.onStorageVolumeMounted(volumeUuid, fingerprintChanged);
}
@NonNull
@Override
public int[] getGidsForUid(int uid) {
Log.i(LOG_TAG, "getGidsForUid(uid = " + uid + ")");
return mService.getGidsForUid(uid);
}
@Override
public void onUserCreated(int userId) {
Log.i(LOG_TAG, "onUserCreated(userId = " + userId + ")");
mService.onUserCreated(userId);
}
@Override
public void onUserRemoved(int userId) {
Log.i(LOG_TAG, "onUserRemoved(userId = " + userId + ")");
mService.onUserRemoved(userId);
}
@Override
public void onPackageAdded(@NonNull PackageState packageState, boolean isInstantApp,
@Nullable AndroidPackage oldPkg) {
Log.i(LOG_TAG, "onPackageAdded(packageState = " + packageState + ", isInstantApp = "
+ isInstantApp + ", oldPkg = " + oldPkg + ")");
mService.onPackageAdded(packageState, isInstantApp, oldPkg);
}
@Override
public void onPackageInstalled(@NonNull AndroidPackage pkg, int previousAppId,
@NonNull PermissionManagerServiceInternal.PackageInstalledParams params, int userId) {
Log.i(LOG_TAG, "onPackageInstalled(pkg = " + pkg + ", previousAppId = " + previousAppId
+ ", params = " + params + ", userId = " + userId + ")");
mService.onPackageInstalled(pkg, previousAppId, params, userId);
}
@Override
public void onPackageRemoved(@NonNull AndroidPackage pkg) {
Log.i(LOG_TAG, "onPackageRemoved(pkg = " + pkg + ")");
mService.onPackageRemoved(pkg);
}
@Override
public void onPackageUninstalled(@NonNull String packageName, int appId,
@NonNull PackageState packageState, @Nullable AndroidPackage pkg,
@NonNull List<AndroidPackage> sharedUserPkgs, int userId) {
Log.i(LOG_TAG, "onPackageUninstalled(packageName = " + packageName + ", appId = " + appId
+ ", packageState = " + packageState + ", pkg = " + pkg + ", sharedUserPkgs = "
+ sharedUserPkgs + ", userId = " + userId + ")");
mService.onPackageUninstalled(packageName, appId, packageState, pkg, sharedUserPkgs,
userId);
}
}