fix CC for work profiles
Bug: 22257554 Change-Id: I09f62956d01f91d3014d9fa250aaff68ab5e1a9b
This commit is contained in:
@@ -118,7 +118,10 @@ public final class ChooseLockSettingsHelper {
|
|||||||
boolean returnCredentials, boolean external, boolean hasChallenge,
|
boolean returnCredentials, boolean external, boolean hasChallenge,
|
||||||
long challenge) {
|
long challenge) {
|
||||||
boolean launched = false;
|
boolean launched = false;
|
||||||
switch (mLockPatternUtils.getKeyguardStoredPasswordQuality(UserHandle.myUserId())) {
|
|
||||||
|
int effectiveUserId = Utils.getEffectiveUserId(mActivity);
|
||||||
|
|
||||||
|
switch (mLockPatternUtils.getKeyguardStoredPasswordQuality(effectiveUserId)) {
|
||||||
case DevicePolicyManager.PASSWORD_QUALITY_SOMETHING:
|
case DevicePolicyManager.PASSWORD_QUALITY_SOMETHING:
|
||||||
launched = launchConfirmationActivity(request, title, header, description,
|
launched = launchConfirmationActivity(request, title, header, description,
|
||||||
returnCredentials || hasChallenge
|
returnCredentials || hasChallenge
|
||||||
|
@@ -28,8 +28,8 @@ import com.android.settingslib.animation.DisappearAnimationUtils;
|
|||||||
|
|
||||||
import android.app.Fragment;
|
import android.app.Fragment;
|
||||||
import android.app.admin.DevicePolicyManager;
|
import android.app.admin.DevicePolicyManager;
|
||||||
import android.content.Context;
|
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
import android.content.Context;
|
||||||
import android.os.AsyncTask;
|
import android.os.AsyncTask;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.CountDownTimer;
|
import android.os.CountDownTimer;
|
||||||
@@ -98,6 +98,7 @@ public class ConfirmLockPassword extends ConfirmDeviceCredentialBaseActivity {
|
|||||||
private AppearAnimationUtils mAppearAnimationUtils;
|
private AppearAnimationUtils mAppearAnimationUtils;
|
||||||
private DisappearAnimationUtils mDisappearAnimationUtils;
|
private DisappearAnimationUtils mDisappearAnimationUtils;
|
||||||
private boolean mBlockImm;
|
private boolean mBlockImm;
|
||||||
|
private int mEffectiveUserId;
|
||||||
|
|
||||||
// required constructor for fragments
|
// required constructor for fragments
|
||||||
public ConfirmLockPasswordFragment() {
|
public ConfirmLockPasswordFragment() {
|
||||||
@@ -108,6 +109,8 @@ public class ConfirmLockPassword extends ConfirmDeviceCredentialBaseActivity {
|
|||||||
public void onCreate(Bundle savedInstanceState) {
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
mLockPatternUtils = new LockPatternUtils(getActivity());
|
mLockPatternUtils = new LockPatternUtils(getActivity());
|
||||||
|
mEffectiveUserId = Utils.getEffectiveUserId(getActivity());
|
||||||
|
|
||||||
if (savedInstanceState != null) {
|
if (savedInstanceState != null) {
|
||||||
mNumWrongConfirmAttempts = savedInstanceState.getInt(
|
mNumWrongConfirmAttempts = savedInstanceState.getInt(
|
||||||
KEY_NUM_WRONG_CONFIRM_ATTEMPTS, 0);
|
KEY_NUM_WRONG_CONFIRM_ATTEMPTS, 0);
|
||||||
@@ -118,7 +121,7 @@ public class ConfirmLockPassword extends ConfirmDeviceCredentialBaseActivity {
|
|||||||
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||||
Bundle savedInstanceState) {
|
Bundle savedInstanceState) {
|
||||||
final int storedQuality = mLockPatternUtils.getKeyguardStoredPasswordQuality(
|
final int storedQuality = mLockPatternUtils.getKeyguardStoredPasswordQuality(
|
||||||
UserHandle.myUserId());
|
mEffectiveUserId);
|
||||||
View view = inflater.inflate(R.layout.confirm_lock_password, null);
|
View view = inflater.inflate(R.layout.confirm_lock_password, null);
|
||||||
|
|
||||||
mPasswordEntry = (TextView) view.findViewById(R.id.password_entry);
|
mPasswordEntry = (TextView) view.findViewById(R.id.password_entry);
|
||||||
@@ -238,7 +241,7 @@ public class ConfirmLockPassword extends ConfirmDeviceCredentialBaseActivity {
|
|||||||
@Override
|
@Override
|
||||||
public void onResume() {
|
public void onResume() {
|
||||||
super.onResume();
|
super.onResume();
|
||||||
long deadline = mLockPatternUtils.getLockoutAttemptDeadline(UserHandle.myUserId());
|
long deadline = mLockPatternUtils.getLockoutAttemptDeadline(mEffectiveUserId);
|
||||||
if (deadline != 0) {
|
if (deadline != 0) {
|
||||||
handleAttemptLockout(deadline);
|
handleAttemptLockout(deadline);
|
||||||
} else {
|
} else {
|
||||||
@@ -314,7 +317,7 @@ public class ConfirmLockPassword extends ConfirmDeviceCredentialBaseActivity {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
onPasswordChecked(false, intent, 0);
|
onPasswordChecked(false, intent, 0, mEffectiveUserId);
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isInternalActivity() {
|
private boolean isInternalActivity() {
|
||||||
@@ -324,11 +327,12 @@ public class ConfirmLockPassword extends ConfirmDeviceCredentialBaseActivity {
|
|||||||
private void startVerifyPassword(final String pin, final Intent intent) {
|
private void startVerifyPassword(final String pin, final Intent intent) {
|
||||||
long challenge = getActivity().getIntent().getLongExtra(
|
long challenge = getActivity().getIntent().getLongExtra(
|
||||||
ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE, 0);
|
ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE, 0);
|
||||||
|
final int localEffectiveUserId = mEffectiveUserId;
|
||||||
mPendingLockCheck = LockPatternChecker.verifyPassword(
|
mPendingLockCheck = LockPatternChecker.verifyPassword(
|
||||||
mLockPatternUtils,
|
mLockPatternUtils,
|
||||||
pin,
|
pin,
|
||||||
challenge,
|
challenge,
|
||||||
UserHandle.myUserId(),
|
localEffectiveUserId,
|
||||||
new LockPatternChecker.OnVerifyCallback() {
|
new LockPatternChecker.OnVerifyCallback() {
|
||||||
@Override
|
@Override
|
||||||
public void onVerified(byte[] token, int timeoutMs) {
|
public void onVerified(byte[] token, int timeoutMs) {
|
||||||
@@ -340,16 +344,17 @@ public class ConfirmLockPassword extends ConfirmDeviceCredentialBaseActivity {
|
|||||||
ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN,
|
ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN,
|
||||||
token);
|
token);
|
||||||
}
|
}
|
||||||
onPasswordChecked(matched, intent, timeoutMs);
|
onPasswordChecked(matched, intent, timeoutMs, localEffectiveUserId);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private void startCheckPassword(final String pin, final Intent intent) {
|
private void startCheckPassword(final String pin, final Intent intent) {
|
||||||
|
final int localEffectiveUserId = mEffectiveUserId;
|
||||||
mPendingLockCheck = LockPatternChecker.checkPassword(
|
mPendingLockCheck = LockPatternChecker.checkPassword(
|
||||||
mLockPatternUtils,
|
mLockPatternUtils,
|
||||||
pin,
|
pin,
|
||||||
UserHandle.myUserId(),
|
localEffectiveUserId,
|
||||||
new LockPatternChecker.OnCheckCallback() {
|
new LockPatternChecker.OnCheckCallback() {
|
||||||
@Override
|
@Override
|
||||||
public void onChecked(boolean matched, int timeoutMs) {
|
public void onChecked(boolean matched, int timeoutMs) {
|
||||||
@@ -361,7 +366,7 @@ public class ConfirmLockPassword extends ConfirmDeviceCredentialBaseActivity {
|
|||||||
intent.putExtra(
|
intent.putExtra(
|
||||||
ChooseLockSettingsHelper.EXTRA_KEY_PASSWORD, pin);
|
ChooseLockSettingsHelper.EXTRA_KEY_PASSWORD, pin);
|
||||||
}
|
}
|
||||||
onPasswordChecked(matched, intent, timeoutMs);
|
onPasswordChecked(matched, intent, timeoutMs, localEffectiveUserId);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -384,14 +389,15 @@ public class ConfirmLockPassword extends ConfirmDeviceCredentialBaseActivity {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onPasswordChecked(boolean matched, Intent intent, int timeoutMs) {
|
private void onPasswordChecked(boolean matched, Intent intent, int timeoutMs,
|
||||||
|
int effectiveUserId) {
|
||||||
mPasswordEntryInputDisabler.setInputEnabled(true);
|
mPasswordEntryInputDisabler.setInputEnabled(true);
|
||||||
if (matched) {
|
if (matched) {
|
||||||
startDisappearAnimation(intent);
|
startDisappearAnimation(intent);
|
||||||
} else {
|
} else {
|
||||||
if (timeoutMs > 0) {
|
if (timeoutMs > 0) {
|
||||||
long deadline = mLockPatternUtils.setLockoutAttemptDeadline(
|
long deadline = mLockPatternUtils.setLockoutAttemptDeadline(
|
||||||
UserHandle.myUserId(), timeoutMs);
|
effectiveUserId, timeoutMs);
|
||||||
handleAttemptLockout(deadline);
|
handleAttemptLockout(deadline);
|
||||||
} else {
|
} else {
|
||||||
showError(getErrorMessage());
|
showError(getErrorMessage());
|
||||||
|
@@ -102,6 +102,8 @@ public class ConfirmLockPattern extends ConfirmDeviceCredentialBaseActivity {
|
|||||||
private AppearAnimationUtils mAppearAnimationUtils;
|
private AppearAnimationUtils mAppearAnimationUtils;
|
||||||
private DisappearAnimationUtils mDisappearAnimationUtils;
|
private DisappearAnimationUtils mDisappearAnimationUtils;
|
||||||
|
|
||||||
|
private int mEffectiveUserId;
|
||||||
|
|
||||||
// required constructor for fragments
|
// required constructor for fragments
|
||||||
public ConfirmLockPatternFragment() {
|
public ConfirmLockPatternFragment() {
|
||||||
|
|
||||||
@@ -111,6 +113,7 @@ public class ConfirmLockPattern extends ConfirmDeviceCredentialBaseActivity {
|
|||||||
public void onCreate(Bundle savedInstanceState) {
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
mLockPatternUtils = new LockPatternUtils(getActivity());
|
mLockPatternUtils = new LockPatternUtils(getActivity());
|
||||||
|
mEffectiveUserId = Utils.getEffectiveUserId(getActivity());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -151,7 +154,7 @@ public class ConfirmLockPattern extends ConfirmDeviceCredentialBaseActivity {
|
|||||||
// on first launch, if no lock pattern is set, then finish with
|
// on first launch, if no lock pattern is set, then finish with
|
||||||
// success (don't want user to get stuck confirming something that
|
// success (don't want user to get stuck confirming something that
|
||||||
// doesn't exist).
|
// doesn't exist).
|
||||||
if (!mLockPatternUtils.isLockPatternEnabled(UserHandle.myUserId())) {
|
if (!mLockPatternUtils.isLockPatternEnabled(mEffectiveUserId)) {
|
||||||
getActivity().setResult(Activity.RESULT_OK);
|
getActivity().setResult(Activity.RESULT_OK);
|
||||||
getActivity().finish();
|
getActivity().finish();
|
||||||
}
|
}
|
||||||
@@ -203,7 +206,7 @@ public class ConfirmLockPattern extends ConfirmDeviceCredentialBaseActivity {
|
|||||||
super.onResume();
|
super.onResume();
|
||||||
|
|
||||||
// if the user is currently locked out, enforce it.
|
// if the user is currently locked out, enforce it.
|
||||||
long deadline = mLockPatternUtils.getLockoutAttemptDeadline(UserHandle.myUserId());
|
long deadline = mLockPatternUtils.getLockoutAttemptDeadline(mEffectiveUserId);
|
||||||
if (deadline != 0) {
|
if (deadline != 0) {
|
||||||
handleAttemptLockout(deadline);
|
handleAttemptLockout(deadline);
|
||||||
} else if (!mLockPatternView.isEnabled()) {
|
} else if (!mLockPatternView.isEnabled()) {
|
||||||
@@ -385,7 +388,7 @@ public class ConfirmLockPattern extends ConfirmDeviceCredentialBaseActivity {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
onPatternChecked(pattern, false, intent, 0);
|
onPatternChecked(pattern, false, intent, 0, mEffectiveUserId);
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isInternalActivity() {
|
private boolean isInternalActivity() {
|
||||||
@@ -394,13 +397,14 @@ public class ConfirmLockPattern extends ConfirmDeviceCredentialBaseActivity {
|
|||||||
|
|
||||||
private void startVerifyPattern(final List<LockPatternView.Cell> pattern,
|
private void startVerifyPattern(final List<LockPatternView.Cell> pattern,
|
||||||
final Intent intent) {
|
final Intent intent) {
|
||||||
|
final int localEffectiveUserId = mEffectiveUserId;
|
||||||
long challenge = getActivity().getIntent().getLongExtra(
|
long challenge = getActivity().getIntent().getLongExtra(
|
||||||
ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE, 0);
|
ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE, 0);
|
||||||
mPendingLockCheck = LockPatternChecker.verifyPattern(
|
mPendingLockCheck = LockPatternChecker.verifyPattern(
|
||||||
mLockPatternUtils,
|
mLockPatternUtils,
|
||||||
pattern,
|
pattern,
|
||||||
challenge,
|
challenge,
|
||||||
UserHandle.myUserId(),
|
localEffectiveUserId,
|
||||||
new LockPatternChecker.OnVerifyCallback() {
|
new LockPatternChecker.OnVerifyCallback() {
|
||||||
@Override
|
@Override
|
||||||
public void onVerified(byte[] token, int timeoutMs) {
|
public void onVerified(byte[] token, int timeoutMs) {
|
||||||
@@ -412,7 +416,8 @@ public class ConfirmLockPattern extends ConfirmDeviceCredentialBaseActivity {
|
|||||||
ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN,
|
ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN,
|
||||||
token);
|
token);
|
||||||
}
|
}
|
||||||
onPatternChecked(pattern, matched, intent, timeoutMs);
|
onPatternChecked(pattern,
|
||||||
|
matched, intent, timeoutMs, localEffectiveUserId);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -420,14 +425,15 @@ public class ConfirmLockPattern extends ConfirmDeviceCredentialBaseActivity {
|
|||||||
private void startCheckPattern(final List<LockPatternView.Cell> pattern,
|
private void startCheckPattern(final List<LockPatternView.Cell> pattern,
|
||||||
final Intent intent) {
|
final Intent intent) {
|
||||||
if (pattern.size() < LockPatternUtils.MIN_PATTERN_REGISTER_FAIL) {
|
if (pattern.size() < LockPatternUtils.MIN_PATTERN_REGISTER_FAIL) {
|
||||||
onPatternChecked(pattern, false, intent, 0);
|
onPatternChecked(pattern, false, intent, 0, mEffectiveUserId);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final int localEffectiveUserId = mEffectiveUserId;
|
||||||
mPendingLockCheck = LockPatternChecker.checkPattern(
|
mPendingLockCheck = LockPatternChecker.checkPattern(
|
||||||
mLockPatternUtils,
|
mLockPatternUtils,
|
||||||
pattern,
|
pattern,
|
||||||
UserHandle.myUserId(),
|
localEffectiveUserId,
|
||||||
new LockPatternChecker.OnCheckCallback() {
|
new LockPatternChecker.OnCheckCallback() {
|
||||||
@Override
|
@Override
|
||||||
public void onChecked(boolean matched, int timeoutMs) {
|
public void onChecked(boolean matched, int timeoutMs) {
|
||||||
@@ -438,20 +444,21 @@ public class ConfirmLockPattern extends ConfirmDeviceCredentialBaseActivity {
|
|||||||
intent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_PASSWORD,
|
intent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_PASSWORD,
|
||||||
LockPatternUtils.patternToString(pattern));
|
LockPatternUtils.patternToString(pattern));
|
||||||
}
|
}
|
||||||
onPatternChecked(pattern, matched, intent, timeoutMs);
|
onPatternChecked(pattern, matched, intent, timeoutMs,
|
||||||
|
localEffectiveUserId);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onPatternChecked(List<LockPatternView.Cell> pattern,
|
private void onPatternChecked(List<LockPatternView.Cell> pattern,
|
||||||
boolean matched, Intent intent, int timeoutMs) {
|
boolean matched, Intent intent, int timeoutMs, int effectiveUserId) {
|
||||||
mLockPatternView.setEnabled(true);
|
mLockPatternView.setEnabled(true);
|
||||||
if (matched) {
|
if (matched) {
|
||||||
startDisappearAnimation(intent);
|
startDisappearAnimation(intent);
|
||||||
} else {
|
} else {
|
||||||
if (timeoutMs > 0) {
|
if (timeoutMs > 0) {
|
||||||
long deadline = mLockPatternUtils.setLockoutAttemptDeadline(
|
long deadline = mLockPatternUtils.setLockoutAttemptDeadline(
|
||||||
UserHandle.myUserId(), timeoutMs);
|
effectiveUserId, timeoutMs);
|
||||||
handleAttemptLockout(deadline);
|
handleAttemptLockout(deadline);
|
||||||
} else {
|
} else {
|
||||||
updateStage(Stage.NeedToUnlockWrong);
|
updateStage(Stage.NeedToUnlockWrong);
|
||||||
|
@@ -1235,4 +1235,15 @@ public final class Utils {
|
|||||||
Spannable.SPAN_INCLUSIVE_INCLUSIVE);
|
Spannable.SPAN_INCLUSIVE_INCLUSIVE);
|
||||||
return str;
|
return str;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static int getEffectiveUserId(Context context) {
|
||||||
|
UserManager um = UserManager.get(context);
|
||||||
|
if (um != null) {
|
||||||
|
return um.getCredentialOwnerProfile(UserHandle.myUserId());
|
||||||
|
} else {
|
||||||
|
Log.e(TAG, "Unable to acquire UserManager");
|
||||||
|
return UserHandle.myUserId();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user