blob: 996939eb9ee13f2c4069cef24238a3d97e7c0576 [file] [log] [blame]
Dianne Hackbornd5254412018-05-11 18:02:58 -07001/*
2 * Copyright (C) 2018 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
17package android.app;
18
19import android.util.SparseIntArray;
20
Svet Ganovd873ae62018-06-25 16:39:23 -070021import com.android.internal.util.function.QuadFunction;
22import com.android.internal.util.function.TriFunction;
23
Dianne Hackbornd5254412018-05-11 18:02:58 -070024/**
25 * App ops service local interface.
26 *
27 * @hide Only for use within the system server.
28 */
29public abstract class AppOpsManagerInternal {
Svet Ganovd873ae62018-06-25 16:39:23 -070030 /** Interface to override app ops checks via composition */
31 public interface CheckOpsDelegate {
32 /**
33 * Allows overriding check operation behavior.
34 *
35 * @param code The op code to check.
36 * @param uid The UID for which to check.
37 * @param packageName The package for which to check.
38 * @param superImpl The super implementation.
Svet Ganov9d528a12018-12-19 17:23:11 -080039 * @param raw Whether to check the raw op i.e. not interpret the mode based on UID state.
Svet Ganovd873ae62018-06-25 16:39:23 -070040 * @return The app op check result.
41 */
Svet Ganov9d528a12018-12-19 17:23:11 -080042 int checkOperation(int code, int uid, String packageName, boolean raw,
43 QuadFunction<Integer, Integer, String, Boolean, Integer> superImpl);
Svet Ganovd873ae62018-06-25 16:39:23 -070044
45 /**
46 * Allows overriding check audio operation behavior.
47 *
48 * @param code The op code to check.
49 * @param usage The audio op usage.
50 * @param uid The UID for which to check.
51 * @param packageName The package for which to check.
52 * @param superImpl The super implementation.
53 * @return The app op check result.
54 */
55 int checkAudioOperation(int code, int usage, int uid, String packageName,
56 QuadFunction<Integer, Integer, Integer, String, Integer> superImpl);
57
58 /**
59 * Allows overriding note operation behavior.
60 *
61 * @param code The op code to note.
62 * @param uid The UID for which to note.
63 * @param packageName The package for which to note.
64 * @param superImpl The super implementation.
65 * @return The app op note result.
66 */
67 int noteOperation(int code, int uid, String packageName,
68 TriFunction<Integer, Integer, String, Integer> superImpl);
69 }
70
Dianne Hackbornd5254412018-05-11 18:02:58 -070071 /**
72 * Set the currently configured device and profile owners. Specifies the package uid (value)
73 * that has been configured for each user (key) that has one. These will be allowed privileged
74 * access to app ops for their user.
75 */
76 public abstract void setDeviceAndProfileOwners(SparseIntArray owners);
Philip P. Moltmann17f65af2018-10-18 15:32:29 -070077
78 /**
Philip P. Moltmanndde07852019-01-25 16:42:36 -080079 * Set all {@link #setMode (package) modes} for this uid to the default value.
80 *
81 * @param code The app-op
82 * @param uid The uid
83 */
84 public abstract void setAllPkgModesToDefault(int code, int uid);
Dianne Hackbornd5254412018-05-11 18:02:58 -070085}