Merge "Lock profiles when lockdown is invoked." into pi-dev

am: e4ea18c1ff

Change-Id: Iae83cc6911edbffd949c44c481b8962bd12404bc
This commit is contained in:
Pavel Grafov
2018-05-09 11:57:05 -07:00
committed by android-build-merger

View File

@@ -26,6 +26,7 @@ import android.app.Dialog;
import android.app.KeyguardManager;
import android.app.WallpaperManager;
import android.app.admin.DevicePolicyManager;
import android.app.trust.TrustManager;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.Context;
@@ -699,6 +700,9 @@ class GlobalActionsDialog implements DialogInterface.OnDismissListener,
UserHandle.USER_ALL);
try {
WindowManagerGlobal.getWindowManagerService().lockNow(null);
// Lock profiles (if any) on the background thread.
final Handler bgHandler = new Handler(Dependency.get(Dependency.BG_LOOPER));
bgHandler.post(() -> lockProfiles());
} catch (RemoteException e) {
Log.e(TAG, "Error while trying to lock device.", e);
}
@@ -716,6 +720,18 @@ class GlobalActionsDialog implements DialogInterface.OnDismissListener,
};
}
private void lockProfiles() {
final UserManager um = (UserManager) mContext.getSystemService(Context.USER_SERVICE);
final TrustManager tm = (TrustManager) mContext.getSystemService(Context.TRUST_SERVICE);
final int currentUserId = getCurrentUser().id;
final int[] profileIds = um.getEnabledProfileIds(currentUserId);
for (final int id : profileIds) {
if (id != currentUserId) {
tm.setDeviceLockedForUser(id, true);
}
}
}
private UserInfo getCurrentUser() {
try {
return ActivityManager.getService().getCurrentUser();