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 
24 /**
25  * Interface for system apps to communication with the permission controller.
26  *
27  * @hide
28  */
29 oneway interface IPermissionController {
revokeRuntimePermissions(in Bundle request, boolean doDryRun, int reason, String callerPackageName, in RemoteCallback callback)30     void revokeRuntimePermissions(in Bundle request, boolean doDryRun, int reason,
31             String callerPackageName, in RemoteCallback callback);
getRuntimePermissionBackup(in UserHandle user, in ParcelFileDescriptor pipe)32     void getRuntimePermissionBackup(in UserHandle user, in ParcelFileDescriptor pipe);
restoreRuntimePermissionBackup(in UserHandle user, in ParcelFileDescriptor pipe)33     void restoreRuntimePermissionBackup(in UserHandle user, in ParcelFileDescriptor pipe);
restoreDelayedRuntimePermissionBackup(String packageName, in UserHandle user, in RemoteCallback callback)34     void restoreDelayedRuntimePermissionBackup(String packageName, in UserHandle user,
35             in RemoteCallback callback);
getAppPermissions(String packageName, in RemoteCallback callback)36     void getAppPermissions(String packageName, in RemoteCallback callback);
revokeRuntimePermission(String packageName, String permissionName)37     void revokeRuntimePermission(String packageName, String permissionName);
countPermissionApps(in List<String> permissionNames, int flags, in RemoteCallback callback)38     void countPermissionApps(in List<String> permissionNames, int flags,
39             in RemoteCallback callback);
getPermissionUsages(boolean countSystem, long numMillis, in RemoteCallback callback)40     void getPermissionUsages(boolean countSystem, long numMillis, in RemoteCallback callback);
setRuntimePermissionGrantStateByDeviceAdmin(String callerPackageName, String packageName, String permission, int grantState, in RemoteCallback callback)41     void setRuntimePermissionGrantStateByDeviceAdmin(String callerPackageName, String packageName,
42             String permission, int grantState, in RemoteCallback callback);
grantOrUpgradeDefaultRuntimePermissions(in RemoteCallback callback)43     void grantOrUpgradeDefaultRuntimePermissions(in RemoteCallback callback);
44 }
45