• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 package android.os;
17 
18 import android.annotation.NonNull;
19 import android.annotation.Nullable;
20 import android.content.pm.UserInfo;
21 import android.graphics.Bitmap;
22 
23 /**
24  * @hide Only for use within the system server.
25  */
26 public abstract class UserManagerInternal {
27     public interface UserRestrictionsListener {
28         /**
29          * Called when a user restriction changes.
30          *
31          * @param userId target user id
32          * @param newRestrictions new user restrictions
33          * @param prevRestrictions user restrictions that were previously set
34          */
onUserRestrictionsChanged(int userId, Bundle newRestrictions, Bundle prevRestrictions)35         void onUserRestrictionsChanged(int userId, Bundle newRestrictions, Bundle prevRestrictions);
36     }
37 
38     /**
39      * Called by {@link com.android.server.devicepolicy.DevicePolicyManagerService}
40      * to set per-user as well as global user restrictions.
41      *
42      * @param userId target user id for the local restrictions.
43      * @param localRestrictions per-user restrictions.
44      *     Caller must not change it once passed to this method.
45      * @param globalRestrictions global restrictions set by DO.  Must be null when PO changed user
46      *     restrictions, in which case global restrictions won't change.
47      *     Caller must not change it once passed to this method.
48      */
setDevicePolicyUserRestrictions(int userId, @NonNull Bundle localRestrictions, @Nullable Bundle globalRestrictions)49     public abstract void setDevicePolicyUserRestrictions(int userId,
50             @NonNull Bundle localRestrictions, @Nullable Bundle globalRestrictions);
51     /**
52      * Returns the "base" user restrictions.
53      *
54      * Used by {@link com.android.server.devicepolicy.DevicePolicyManagerService} for upgrading
55      * from MNC.
56      */
getBaseUserRestrictions(int userId)57     public abstract Bundle getBaseUserRestrictions(int userId);
58 
59     /**
60      * Called by {@link com.android.server.devicepolicy.DevicePolicyManagerService} for upgrading
61      * from MNC.
62      */
setBaseUserRestrictionsByDpmsForMigration(int userId, Bundle baseRestrictions)63     public abstract void setBaseUserRestrictionsByDpmsForMigration(int userId,
64             Bundle baseRestrictions);
65 
66     /** Return a user restriction. */
getUserRestriction(int userId, String key)67     public abstract boolean getUserRestriction(int userId, String key);
68 
69     /** Adds a listener to user restriction changes. */
addUserRestrictionsListener(UserRestrictionsListener listener)70     public abstract void addUserRestrictionsListener(UserRestrictionsListener listener);
71 
72     /** Remove a {@link UserRestrictionsListener}. */
removeUserRestrictionsListener(UserRestrictionsListener listener)73     public abstract void removeUserRestrictionsListener(UserRestrictionsListener listener);
74 
75     /**
76      * Called by {@link com.android.server.devicepolicy.DevicePolicyManagerService} to update
77      * whether the device is managed by device owner.
78      */
setDeviceManaged(boolean isManaged)79     public abstract void setDeviceManaged(boolean isManaged);
80 
81     /**
82      * Called by {@link com.android.server.devicepolicy.DevicePolicyManagerService} to update
83      * whether the user is managed by profile owner.
84      */
setUserManaged(int userId, boolean isManaged)85     public abstract void setUserManaged(int userId, boolean isManaged);
86 
87     /**
88      * Called by {@link com.android.server.devicepolicy.DevicePolicyManagerService} to omit
89      * restriction check, because DevicePolicyManager must always be able to set user icon
90      * regardless of any restriction.
91      * Also called by {@link com.android.server.pm.UserManagerService} because the logic of setting
92      * the icon is in this method.
93      */
setUserIcon(int userId, Bitmap bitmap)94     public abstract void setUserIcon(int userId, Bitmap bitmap);
95 
96     /**
97      * Called by {@link com.android.server.devicepolicy.DevicePolicyManagerService} to inform the
98      * user manager whether all users should be created ephemeral.
99      */
setForceEphemeralUsers(boolean forceEphemeralUsers)100     public abstract void setForceEphemeralUsers(boolean forceEphemeralUsers);
101 
102     /**
103      * Switches to the system user and deletes all other users.
104      *
105      * <p>Called by the {@link com.android.server.devicepolicy.DevicePolicyManagerService} when
106      * the force-ephemeral-users policy is toggled on to make sure there are no pre-existing
107      * non-ephemeral users left.
108      */
removeAllUsers()109     public abstract void removeAllUsers();
110 
111     /**
112      * Called by the activity manager when the ephemeral user goes to background and its removal
113      * starts as a result.
114      *
115      * <p>It marks the ephemeral user as disabled in order to prevent it from being re-entered
116      * before its removal finishes.
117      *
118      * @param userId the ID of the ephemeral user.
119      */
onEphemeralUserStop(int userId)120     public abstract void onEphemeralUserStop(int userId);
121 
122     /**
123      * Same as UserManager.createUser(), but bypasses the check for DISALLOW_ADD_USER.
124      *
125      * <p>Called by the {@link com.android.server.devicepolicy.DevicePolicyManagerService} when
126      * createAndManageUser is called by the device owner.
127      */
createUserEvenWhenDisallowed(String name, int flags)128     public abstract UserInfo createUserEvenWhenDisallowed(String name, int flags);
129 
130     /**
131      * Return whether the given user is running in an
132      * {@code UserState.STATE_RUNNING_UNLOCKING} or
133      * {@code UserState.STATE_RUNNING_UNLOCKED} state.
134      */
isUserUnlockingOrUnlocked(int userId)135     public abstract boolean isUserUnlockingOrUnlocked(int userId);
136 
137     /**
138      * Return whether the given user is running
139      */
isUserRunning(int userId)140     public abstract boolean isUserRunning(int userId);
141 
142     /**
143      * Set user's running state
144      */
setUserState(int userId, int userState)145     public abstract void setUserState(int userId, int userState);
146 
147     /**
148      * Remove user's running state
149      */
removeUserState(int userId)150     public abstract void removeUserState(int userId);
151 }
152