import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
-import android.app.DialogFragment;
import android.app.Fragment;
import android.app.FragmentManager;
import android.app.admin.DevicePolicyManager;
import android.view.accessibility.AccessibilityManager;
import android.widget.TextView;
-import com.android.internal.logging.MetricsProto.MetricsEvent;
+import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.internal.widget.LockPatternUtils;
+import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
import com.android.settings.fingerprint.FingerprintEnrollBase;
import com.android.settings.fingerprint.FingerprintEnrollFindSensor;
import com.android.settingslib.RestrictedLockUtils;
protected boolean mForFingerprint = false;
@Override
- protected int getMetricsCategory() {
+ public int getMetricsCategory() {
return MetricsEvent.CHOOSE_LOCK_GENERIC;
}
super.onCreate(savedInstanceState);
String chooseLockAction = getActivity().getIntent().getAction();
- mFingerprintManager =
- (FingerprintManager) getActivity().getSystemService(Context.FINGERPRINT_SERVICE);
+ mFingerprintManager = Utils.getFingerprintManagerOrNull(getActivity());
mDPM = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
mKeyStore = KeyStore.getInstance();
mChooseLockSettingsHelper = new ChooseLockSettingsHelper(this.getActivity());
ChooseLockSettingsHelper.EXTRA_KEY_FOR_FINGERPRINT, false);
mForChangeCredRequiredForBoot = getArguments() != null && getArguments().getBoolean(
ChooseLockSettingsHelper.EXTRA_KEY_FOR_CHANGE_CRED_REQUIRED_FOR_BOOT);
- if (mIsSetNewPassword) {
- // In ACTION_SET_NEW_PARENT_PROFILE_PASSWORD or ACTION_SET_NEW_PASSWORD, the user
- // will be asked to confirm the password if one has been set.
- // On fingerprint supported device, fingerprint options are represented in the
- // options. If the user chooses to skip fingerprint setup, ChooseLockGeneric is
- // relaunched to only show options without fingerprint. In this case, we shouldn't
- // ask the user to confirm the password again.
- mPasswordConfirmed = getActivity().getIntent().getBooleanExtra(
- PASSWORD_CONFIRMED, false);
- }
if (savedInstanceState != null) {
mPasswordConfirmed = savedInstanceState.getBoolean(PASSWORD_CONFIRMED);
getArguments(),
getActivity().getIntent().getExtras()).getIdentifier();
if (ACTION_SET_NEW_PASSWORD.equals(chooseLockAction)
- && Utils.isManagedProfile(UserManager.get(getActivity()), mUserId)
+ && UserManager.get(getActivity()).isManagedProfile(mUserId)
&& mLockPatternUtils.isSeparateProfileChallengeEnabled(mUserId)) {
getActivity().setTitle(R.string.lock_settings_picker_title_profile);
}
} else if (!mWaitingForConfirmation) {
ChooseLockSettingsHelper helper =
new ChooseLockSettingsHelper(this.getActivity(), this);
- boolean managedProfileWithUnifiedLock = Utils
- .isManagedProfile(UserManager.get(getActivity()), mUserId)
+ boolean managedProfileWithUnifiedLock =
+ UserManager.get(getActivity()).isManagedProfile(mUserId)
&& !mLockPatternUtils.isSeparateProfileChallengeEnabled(mUserId);
if (managedProfileWithUnifiedLock
|| !helper.launchConfirmationActivity(CONFIRM_EXISTING_REQUEST,
showFactoryResetProtectionWarningDialog(key);
return true;
} else if (KEY_SKIP_FINGERPRINT.equals(key)) {
- Intent chooseLockGenericIntent = new Intent(getActivity(), ChooseLockGeneric.class);
+ Intent chooseLockGenericIntent = new Intent(getActivity(),
+ ChooseLockGeneric.InternalActivity.class);
chooseLockGenericIntent.setAction(getIntent().getAction());
// Forward the target user id to ChooseLockGeneric.
chooseLockGenericIntent.putExtra(Intent.EXTRA_USER_ID, mUserId);
- chooseLockGenericIntent.putExtra(PASSWORD_CONFIRMED, mPasswordConfirmed);
+ chooseLockGenericIntent.putExtra(CONFIRM_CREDENTIALS, !mPasswordConfirmed);
startActivityForResult(chooseLockGenericIntent, SKIP_FINGERPRINT_REQUEST);
return true;
} else {
}
} else if (requestCode == CHOOSE_LOCK_BEFORE_FINGERPRINT_REQUEST
&& resultCode == FingerprintEnrollBase.RESULT_FINISHED) {
- Intent intent = new Intent(getActivity(), FingerprintEnrollFindSensor.class);
+ Intent intent = getFindSensorIntent(getActivity());
if (data != null) {
intent.putExtras(data.getExtras());
}
}
}
+ protected Intent getFindSensorIntent(Context context) {
+ return new Intent(context, FingerprintEnrollFindSensor.class);
+ }
+
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
disabledByAdmin = adminEnforcedQuality
> DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED;
} else if (KEY_UNLOCK_SET_NONE.equals(key)) {
- if (mUserId != UserHandle.myUserId()) {
- // Swipe doesn't make sense for profiles.
+ if (getResources().getBoolean(R.bool.config_hide_swipe_security_option)) {
+ enabled = false;
visible = false;
+ } else {
+ if (mUserId != UserHandle.myUserId()) {
+ // Swipe doesn't make sense for profiles.
+ visible = false;
+ }
+ enabled = quality <= DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED;
}
- enabled = quality <= DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED;
disabledByAdmin = adminEnforcedQuality
> DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED;
} else if (KEY_UNLOCK_SET_PATTERN.equals(key)) {
if (quality == DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED) {
mLockPatternUtils.setSeparateProfileChallengeEnabled(mUserId, true, mUserPassword);
- mChooseLockSettingsHelper.utils().clearLock(mUserId);
+ mChooseLockSettingsHelper.utils().clearLock(mUserPassword, mUserId);
mChooseLockSettingsHelper.utils().setLockScreenDisabled(disabled, mUserId);
getActivity().setResult(Activity.RESULT_OK);
removeAllFingerprintForUserAndFinish(mUserId);
}
private void removeManagedProfileFingerprintsAndFinishIfNecessary(final int parentUserId) {
- mFingerprintManager.setActiveUser(UserHandle.myUserId());
+ if (mFingerprintManager != null && mFingerprintManager.isHardwareDetected()) {
+ mFingerprintManager.setActiveUser(UserHandle.myUserId());
+ }
final UserManager um = UserManager.get(getActivity());
boolean hasChildProfile = false;
if (!um.getUserInfo(parentUserId).isManagedProfile()) {
}
private int getResIdForFactoryResetProtectionWarningTitle() {
- boolean isProfile = Utils.isManagedProfile(UserManager.get(getActivity()), mUserId);
+ boolean isProfile = UserManager.get(getActivity()).isManagedProfile(mUserId);
return isProfile ? R.string.unlock_disable_frp_warning_title_profile
: R.string.unlock_disable_frp_warning_title;
}
private int getResIdForFactoryResetProtectionWarningMessage() {
- boolean hasFingerprints = mFingerprintManager.hasEnrolledFingerprints(mUserId);
- boolean isProfile = Utils.isManagedProfile(UserManager.get(getActivity()), mUserId);
+ final boolean hasFingerprints;
+ if (mFingerprintManager != null && mFingerprintManager.isHardwareDetected()) {
+ hasFingerprints = mFingerprintManager.hasEnrolledFingerprints(mUserId);
+ } else {
+ hasFingerprints = false;
+ }
+ boolean isProfile = UserManager.get(getActivity()).isManagedProfile(mUserId);
switch (mLockPatternUtils.getKeyguardStoredPasswordQuality(mUserId)) {
case DevicePolicyManager.PASSWORD_QUALITY_SOMETHING:
if (hasFingerprints && isProfile) {
dialog.show(getChildFragmentManager(), TAG_FRP_WARNING_DIALOG);
}
- public static class FactoryResetProtectionWarningDialog extends DialogFragment {
+ public static class FactoryResetProtectionWarningDialog extends InstrumentedDialogFragment {
private static final String ARG_TITLE_RES = "titleRes";
private static final String ARG_MESSAGE_RES = "messageRes";
)
.create();
}
+
+ @Override
+ public int getMetricsCategory() {
+ return MetricsEvent.DIALOG_FRP;
+ }
}
}
}