Cache isManagedProfile().

LauncherApps wants to use it in the client side.  Let's cache the
result.

Bug: 34340531
Test: manual tests with work profile
Change-Id: I594a9ca688867e7cb0b35ab389ccef66135ef9cd
This commit is contained in:
Makoto Onuki
2017-01-25 14:09:48 -08:00
parent e7beedff6e
commit d49f3fa806

View File

@@ -66,6 +66,8 @@ public class UserManager {
private final IUserManager mService;
private final Context mContext;
private Boolean mIsManagedProfileCached;
/**
* @hide
* No user restriction.
@@ -970,8 +972,14 @@ public class UserManager {
*/
@SystemApi
public boolean isManagedProfile() {
// No need for synchronization. Once it becomes non-null, it'll be non-null forever.
// Worst case we might end up calling the AIDL method multiple times but that's fine.
if (mIsManagedProfileCached != null) {
return mIsManagedProfileCached;
}
try {
return mService.isManagedProfile(UserHandle.myUserId());
mIsManagedProfileCached = mService.isManagedProfile(UserHandle.myUserId());
return mIsManagedProfileCached;
} catch (RemoteException re) {
throw re.rethrowFromSystemServer();
}
@@ -987,6 +995,9 @@ public class UserManager {
*/
@SystemApi
public boolean isManagedProfile(@UserIdInt int userId) {
if (userId == UserHandle.myUserId()) {
return isManagedProfile();
}
try {
return mService.isManagedProfile(userId);
} catch (RemoteException re) {