blob: 5b3c9dd9337077c5831fdbf08c6bbe82fa08c87e [file] [log] [blame]
Mårten Kongstadeabc9e92015-12-15 16:40:23 +01001/*
2 * Copyright (C) 2015 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.content.om;
18
19import android.content.om.OverlayInfo;
20
21/**
22 * Api for getting information about overlay packages.
23 *
24 * {@hide}
25 */
26interface IOverlayManager {
27 /**
28 * Returns information about all installed overlay packages for the
29 * specified user. If there are no installed overlay packages for this user,
30 * an empty map is returned (i.e. null is never returned). The returned map is a
31 * mapping of target package names to lists of overlays. Each list for a
32 * given target package is sorted in priority order, with the overlay with
33 * the highest priority at the end of the list.
34 *
35 * @param userId The user to get the OverlayInfos for.
36 * @return A Map<String, List<OverlayInfo>> with target package names
37 * mapped to lists of overlays; if no overlays exist for the
38 * requested user, an empty map is returned.
39 */
40 Map getAllOverlays(in int userId);
41
42 /**
43 * Returns information about all overlays for the given target package for
44 * the specified user. The returned list is ordered according to the
45 * overlay priority with the highest priority at the end of the list.
46 *
47 * @param targetPackageName The name of the target package.
48 * @param userId The user to get the OverlayInfos for.
49 * @return A list of OverlayInfo objects; if no overlays exist for the
50 * requested package, an empty list is returned.
51 */
52 List getOverlayInfosForTarget(in String targetPackageName, in int userId);
53
54 /**
55 * Returns information about the overlay with the given package name for the
56 * specified user.
57 *
58 * @param packageName The name of the overlay package.
59 * @param userId The user to get the OverlayInfo for.
60 * @return The OverlayInfo for the overlay package; or null if no such
61 * overlay package exists.
62 */
63 OverlayInfo getOverlayInfo(in String packageName, in int userId);
64
65 /**
66 * Request that an overlay package be enabled or disabled when possible to
67 * do so.
68 *
69 * It is always possible to disable an overlay, but due to technical and
70 * security reasons it may not always be possible to enable an overlay. An
71 * example of the latter is when the related target package is not
72 * installed. If the technical obstacle is later overcome, the overlay is
73 * automatically enabled at that point in time.
74 *
75 * An enabled overlay is a part of target package's resources, i.e. it will
76 * be part of any lookups performed via {@link android.content.res.Resources}
77 * and {@link android.content.res.AssetManager}. A disabled overlay will no
78 * longer affect the resources of the target package. If the target is
79 * currently running, its outdated resources will be replaced by new ones.
80 * This happens the same way as when an application enters or exits split
81 * window mode.
82 *
83 * @param packageName The name of the overlay package.
84 * @param enable true to enable the overlay, false to disable it.
85 * @param userId The user for which to change the overlay.
Adrian Roosc84df772018-01-19 21:20:22 +010086 * @return true if the system successfully registered the request, false otherwise.
Mårten Kongstadeabc9e92015-12-15 16:40:23 +010087 */
88 boolean setEnabled(in String packageName, in boolean enable, in int userId);
89
90 /**
Adrian Roosc84df772018-01-19 21:20:22 +010091 * Request that an overlay package is enabled and any other overlay packages with the same
92 * target package are disabled.
93 *
94 * See {@link #setEnabled} for the details on overlay packages.
95 *
96 * @param packageName the name of the overlay package to enable.
97 * @param enabled must be true, otherwise the operation fails.
98 * @param userId The user for which to change the overlay.
99 * @return true if the system successfully registered the request, false otherwise.
Jason Monk929ed8d2017-03-07 16:01:20 -0500100 */
101 boolean setEnabledExclusive(in String packageName, in boolean enable, in int userId);
102
103 /**
Adrian Roosc84df772018-01-19 21:20:22 +0100104 * Request that an overlay package is enabled and any other overlay packages with the same
105 * target package and category are disabled.
106 *
107 * See {@link #setEnabled} for the details on overlay packages.
108 *
109 * @param packageName the name of the overlay package to enable.
110 * @param userId The user for which to change the overlay.
111 * @return true if the system successfully registered the request, false otherwise.
112 */
113 boolean setEnabledExclusiveInCategory(in String packageName, in int userId);
114
115 /**
Mårten Kongstadeabc9e92015-12-15 16:40:23 +0100116 * Change the priority of the given overlay to be just higher than the
117 * overlay with package name newParentPackageName. Both overlay packages
118 * must have the same target and user.
119 *
120 * @see getOverlayInfosForTarget
121 *
122 * @param packageName The name of the overlay package whose priority should
123 * be adjusted.
124 * @param newParentPackageName The name of the overlay package the newly
125 * adjusted overlay package should just outrank.
126 * @param userId The user for which to change the overlay.
127 */
128 boolean setPriority(in String packageName, in String newParentPackageName, in int userId);
129
130 /**
131 * Change the priority of the given overlay to the highest priority relative to
132 * the other overlays with the same target and user.
133 *
134 * @see getOverlayInfosForTarget
135 *
136 * @param packageName The name of the overlay package whose priority should
137 * be adjusted.
138 * @param userId The user for which to change the overlay.
139 */
140 boolean setHighestPriority(in String packageName, in int userId);
141
142 /**
143 * Change the priority of the overlay to the lowest priority relative to
144 * the other overlays for the same target and user.
145 *
146 * @see getOverlayInfosForTarget
147 *
148 * @param packageName The name of the overlay package whose priority should
149 * be adjusted.
150 * @param userId The user for which to change the overlay.
151 */
152 boolean setLowestPriority(in String packageName, in int userId);
153}