Merge "Store the PIN length to disk when Pin auto confirm feature is enabled" into udc-dev
diff --git a/src/com/android/settings/security/screenlock/ScreenLockSettings.java b/src/com/android/settings/security/screenlock/ScreenLockSettings.java
index b2ee76c..1c66b71 100644
--- a/src/com/android/settings/security/screenlock/ScreenLockSettings.java
+++ b/src/com/android/settings/security/screenlock/ScreenLockSettings.java
@@ -107,12 +107,21 @@
     public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
         if (requestCode == AUTO_PIN_SETTING_ENABLING_REQUEST_CODE) {
             if (resultCode == Activity.RESULT_OK) {
-                mLockPatternUtils.setAutoPinConfirm(/* enabled= */ true, MY_USER_ID);
+                onAutoPinConfirmSettingChange(/* newState= */ true);
             }
         } else if (requestCode == AUTO_PIN_SETTING_DISABLING_REQUEST_CODE) {
             if (resultCode == Activity.RESULT_OK) {
-                mLockPatternUtils.setAutoPinConfirm(/* enabled= */ false, MY_USER_ID);
+                onAutoPinConfirmSettingChange(/* newState= */ false);
             }
         }
     }
+
+    private void onAutoPinConfirmSettingChange(boolean newState) {
+        // update the auto pin confirm setting.
+        mLockPatternUtils.setAutoPinConfirm(newState, MY_USER_ID);
+        // store the pin length info to disk; If it fails, reset the setting to prev state.
+        if (!mLockPatternUtils.refreshStoredPinLength(MY_USER_ID)) {
+            mLockPatternUtils.setAutoPinConfirm(!newState, MY_USER_ID);
+        }
+    }
 }