Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 10ad84a1 authored by Clara Bayarri's avatar Clara Bayarri
Browse files

Create a separate Work Challenge check

This allows us to tell lock checks from FBE checks separately,
and will be useful when dealing with password unification.

Change-Id: Ifbea425f749fee4d6d51faddd8b64bf717a1a5f8
parent 29fcf1b1
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -1270,6 +1270,10 @@ public class LockPatternUtils {
        }
    }

    public static boolean isSeparateWorkChallengeEnabled() {
        return StorageManager.isFileBasedEncryptionEnabled();
    }

    public void registerStrongAuthTracker(final StrongAuthTracker strongAuthTracker) {
        try {
            getLockSettings().registerStrongAuthTracker(strongAuthTracker.mStub);
+3 −4
Original line number Diff line number Diff line
@@ -32,7 +32,6 @@ import android.content.IntentFilter;
import android.content.pm.UserInfo;
import android.media.AudioManager;
import android.media.SoundPool;
import android.os.Binder;
import android.os.Bundle;
import android.os.DeadObjectException;
import android.os.Handler;
@@ -743,7 +742,7 @@ public class KeyguardViewMediator extends SystemUI {
        long timeout;

        UserInfo user = UserManager.get(mContext).getUserInfo(userId);
        if ((!user.isManagedProfile() && StorageManager.isFileBasedEncryptionEnabled())
        if ((!user.isManagedProfile() && LockPatternUtils.isSeparateWorkChallengeEnabled())
                || policyTimeout <= 0) {
            timeout = lockAfterTimeout;
        } else {
@@ -783,7 +782,7 @@ public class KeyguardViewMediator extends SystemUI {
    private void doKeyguardLaterLockedForChildProfiles() {
        UserManager um = UserManager.get(mContext);
        List<UserInfo> profiles = um.getEnabledProfiles(UserHandle.myUserId());
        if (StorageManager.isFileBasedEncryptionEnabled() && profiles.size() > 1) {
        if (LockPatternUtils.isSeparateWorkChallengeEnabled() && profiles.size() > 1) {
            for (UserInfo info : profiles) {
                if (info.id != UserHandle.myUserId() && info.isManagedProfile()) {
                    long userTimeout = getLockTimeout(info.id);
+1 −1
Original line number Diff line number Diff line
@@ -679,7 +679,7 @@ public class LockSettingsService extends ILockSettings.Stub {
            unlockKeystore(credential, userId);
            unlockUser(userId, null);
            UserInfo info = UserManager.get(mContext).getUserInfo(userId);
            if (StorageManager.isFileBasedEncryptionEnabled() && info.isManagedProfile()) {
            if (LockPatternUtils.isSeparateWorkChallengeEnabled() && info.isManagedProfile()) {
                TrustManager trustManager =
                        (TrustManager) mContext.getSystemService(Context.TRUST_SERVICE);
                trustManager.setDeviceLockedForUser(userId, false);
+2 −3
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package com.android.server;

import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.widget.LockPatternUtils;

import android.content.ContentValues;
import android.content.Context;
@@ -25,9 +26,7 @@ import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Environment;
import android.os.SystemProperties;
import android.os.UserManager;
import android.os.storage.StorageManager;
import android.util.ArrayMap;
import android.util.Log;
import android.util.Slog;
@@ -389,7 +388,7 @@ class LockSettingsStorage {

    private int getUserParentOrSelfId(int userId) {
        // Device supports per user encryption, so lock is applied to the given user.
        if (StorageManager.isFileBasedEncryptionEnabled()) {
        if (LockPatternUtils.isSeparateWorkChallengeEnabled()) {
            return userId;
        }
        // Device uses Block Based Encryption, and the parent user's lock is used for the whole
+1 −2
Original line number Diff line number Diff line
@@ -67,7 +67,6 @@ import android.app.IActivityManager.WaitResult;
import android.app.ResultInfo;
import android.app.StatusBarManager;
import android.app.admin.IDevicePolicyManager;
import android.app.trust.ITrustManager;
import android.content.ComponentName;
import android.content.Context;
import android.content.IIntentSender;
@@ -1673,7 +1672,7 @@ public final class ActivityStackSupervisor implements DisplayListener {
        KeyguardManager km = (KeyguardManager) mService.mContext
                .getSystemService(Context.KEYGUARD_SERVICE);
        if (user.isManagedProfile()
                && StorageManager.isFileBasedEncryptionEnabled()
                && LockPatternUtils.isSeparateWorkChallengeEnabled()
                && km.isDeviceLocked(userId)) {
            IIntentSender target = mService.getIntentSenderLocked(
                    ActivityManager.INTENT_SENDER_ACTIVITY, callingPackage,
Loading