OSDN Git Service

Nexus imprint setting is missing while adding corp account from SUW am: 378dec1495...
[android-x86/packages-apps-Settings.git] / src / com / android / settings / ChooseLockGeneric.java
index d109eb1..3a1f501 100644 (file)
@@ -25,7 +25,6 @@ import android.accessibilityservice.AccessibilityServiceInfo;
 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;
@@ -51,6 +50,7 @@ import android.widget.TextView;
 
 import com.android.internal.logging.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;
@@ -133,7 +133,7 @@ public class ChooseLockGeneric extends SettingsActivity {
         protected boolean mForFingerprint = false;
 
         @Override
-        protected int getMetricsCategory() {
+        public int getMetricsCategory() {
             return MetricsEvent.CHOOSE_LOCK_GENERIC;
         }
 
@@ -142,8 +142,7 @@ public class ChooseLockGeneric extends SettingsActivity {
             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());
@@ -203,7 +202,7 @@ public class ChooseLockGeneric extends SettingsActivity {
             }
 
             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);
             }
@@ -219,8 +218,8 @@ public class ChooseLockGeneric extends SettingsActivity {
             } 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,
@@ -519,11 +518,16 @@ public class ChooseLockGeneric extends SettingsActivity {
                         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)) {
@@ -752,7 +756,9 @@ public class ChooseLockGeneric extends SettingsActivity {
         }
 
         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()) {
@@ -785,14 +791,19 @@ public class ChooseLockGeneric extends SettingsActivity {
         }
 
         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) {
@@ -885,7 +896,7 @@ public class ChooseLockGeneric extends SettingsActivity {
             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";
@@ -938,6 +949,11 @@ public class ChooseLockGeneric extends SettingsActivity {
                         )
                         .create();
             }
+
+            @Override
+            public int getMetricsCategory() {
+                return MetricsEvent.DIALOG_FRP;
+            }
         }
     }
 }