1 /*
2  * Copyright (C) 2016 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package android.permission;
18 
19 import android.os.RemoteCallback;
20 import android.os.Bundle;
21 import android.os.ParcelFileDescriptor;
22 import android.os.UserHandle;
23 import com.android.internal.infra.AndroidFuture;
24 
25 /**
26  * Interface for system apps to communication with the permission controller.
27  *
28  * @hide
29  */
30 oneway interface IPermissionController {
revokeRuntimePermissions(in Bundle request, boolean doDryRun, int reason, String callerPackageName, in AndroidFuture callback)31     void revokeRuntimePermissions(in Bundle request, boolean doDryRun, int reason,
32             String callerPackageName, in AndroidFuture callback);
getRuntimePermissionBackup(in UserHandle user, in ParcelFileDescriptor pipe)33     void getRuntimePermissionBackup(in UserHandle user, in ParcelFileDescriptor pipe);
stageAndApplyRuntimePermissionsBackup(in UserHandle user, in ParcelFileDescriptor pipe)34     void stageAndApplyRuntimePermissionsBackup(in UserHandle user, in ParcelFileDescriptor pipe);
applyStagedRuntimePermissionBackup(String packageName, in UserHandle user, in AndroidFuture callback)35     void applyStagedRuntimePermissionBackup(String packageName, in UserHandle user,
36             in AndroidFuture callback);
getAppPermissions(String packageName, in AndroidFuture callback)37     void getAppPermissions(String packageName, in AndroidFuture callback);
revokeRuntimePermission(String packageName, String permissionName)38     void revokeRuntimePermission(String packageName, String permissionName);
countPermissionApps(in List<String> permissionNames, int flags, in AndroidFuture callback)39     void countPermissionApps(in List<String> permissionNames, int flags,
40             in AndroidFuture callback);
getPermissionUsages(boolean countSystem, long numMillis, in AndroidFuture callback)41     void getPermissionUsages(boolean countSystem, long numMillis, in AndroidFuture callback);
setRuntimePermissionGrantStateByDeviceAdmin(String callerPackageName, String packageName, String permission, int grantState, in AndroidFuture callback)42     void setRuntimePermissionGrantStateByDeviceAdmin(String callerPackageName, String packageName,
43                 String permission, int grantState, in AndroidFuture callback);
grantOrUpgradeDefaultRuntimePermissions(in AndroidFuture callback)44     void grantOrUpgradeDefaultRuntimePermissions(in AndroidFuture callback);
notifyOneTimePermissionSessionTimeout(String packageName)45     void notifyOneTimePermissionSessionTimeout(String packageName);
updateUserSensitiveForApp(int uid, in AndroidFuture callback)46     void updateUserSensitiveForApp(int uid, in AndroidFuture callback);
47 }
48