Merge "Change in Fingerprint Error Dialog in Enrollment" into tm-qpr-dev
diff --git a/res/values/strings.xml b/res/values/strings.xml
index d105d78..1dc49a4 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -1407,6 +1407,8 @@
     <string name="security_settings_fingerprint_enroll_touch_dialog_title">Whoops, that\u2019s not the sensor</string>
     <!-- Dialog message for dialog which shows when user touches the icon on the screen, instead of the sensor at the back [CHAR LIMIT=NONE] -->
     <string name="security_settings_fingerprint_enroll_touch_dialog_message">Touch the sensor on the back of your phone. Use your index finger.</string>
+    <!-- Dialog message for dialog which shows when finger cannot be processed in enrollment. [CHAR LIMIT=45] -->
+    <string name="security_settings_fingerprint_enroll_error_unable_to_process_dialog_title">Enrollment was not completed</string>
     <!-- Dialog message for dialog which shows when finger cannot be enrolled. [CHAR LIMIT=45] -->
     <string name="security_settings_fingerprint_enroll_error_dialog_title">Fingerprint setup timed out</string>
     <!-- Dialog message for dialog which shows when finger cannot be enrolled due to being idle too long. -->
diff --git a/src/com/android/settings/biometrics/fingerprint/FingerprintErrorDialog.java b/src/com/android/settings/biometrics/fingerprint/FingerprintErrorDialog.java
index dc1189c..870e1bb 100644
--- a/src/com/android/settings/biometrics/fingerprint/FingerprintErrorDialog.java
+++ b/src/com/android/settings/biometrics/fingerprint/FingerprintErrorDialog.java
@@ -40,18 +40,20 @@
 public class FingerprintErrorDialog extends InstrumentedDialogFragment {
 
     public static final String KEY_ERROR_MSG = "error_msg";
+    public static final String KEY_ERROR_TITLE = "error_title";
     public static final String KEY_ERROR_ID = "error_id";
     public static final String KEY_UDFPS = "is_udfps";
 
     @Override
     public Dialog onCreateDialog(Bundle savedInstanceState) {
-        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
-        CharSequence errorString = getArguments().getCharSequence(KEY_ERROR_MSG);
+        final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+        final CharSequence errorString = getArguments().getCharSequence(KEY_ERROR_MSG);
+        final CharSequence errorTitle = getArguments().getCharSequence(KEY_ERROR_TITLE);
         final int errMsgId = getArguments().getInt(KEY_ERROR_ID);
         final boolean canAssumeUdfps = getArguments().getBoolean(KEY_UDFPS, false);
-        boolean wasTimeout = errMsgId == BiometricConstants.BIOMETRIC_ERROR_TIMEOUT;
+        final boolean wasTimeout = errMsgId == BiometricConstants.BIOMETRIC_ERROR_TIMEOUT;
 
-        builder.setTitle(R.string.security_settings_fingerprint_enroll_error_dialog_title)
+        builder.setTitle(errorTitle)
                 .setMessage(errorString)
                 .setCancelable(false)
                 .setPositiveButton(
@@ -60,7 +62,7 @@
                             @Override
                             public void onClick(DialogInterface dialog, int which) {
                                 dialog.dismiss();
-                                Activity activity = getActivity();
+                                final Activity activity = getActivity();
                                 if (wasTimeout && !canAssumeUdfps) {
                                     activity.setResult(RESULT_TIMEOUT);
                                 } else {
@@ -76,8 +78,8 @@
                                 @Override
                                 public void onClick(DialogInterface dialog, int which) {
                                     dialog.dismiss();
-                                    Activity activity = getActivity();
-                                    Intent intent = activity.getIntent();
+                                    final Activity activity = getActivity();
+                                    final Intent intent = activity.getIntent();
                                     intent.addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);
                                     intent.putExtra(KEY_STATE_CANCELED, false);
                                     activity.startActivity(intent);
@@ -90,13 +92,13 @@
                                 @Override
                                 public void onClick(DialogInterface dialog, int which) {
                                     dialog.dismiss();
-                                    Activity activity = getActivity();
+                                    final Activity activity = getActivity();
                                     activity.setResult(RESULT_TIMEOUT);
                                     activity.finish();
                                 }
                             });
         }
-        AlertDialog dialog = builder.create();
+        final AlertDialog dialog = builder.create();
         dialog.setCanceledOnTouchOutside(false);
         return dialog;
     }
@@ -111,11 +113,13 @@
             return;
         }
         CharSequence errMsg = host.getText(getErrorMessage(errMsgId));
+        final CharSequence errTitle = host.getText(getErrorTitle(errMsgId));
         if (!canAssumeUdfps
                 && errMsgId == BiometricConstants.BIOMETRIC_ERROR_TIMEOUT) {
             errMsg = host.getText(getErrorMessage(BiometricConstants.BIOMETRIC_ERROR_CANCELED));
         }
-        final FingerprintErrorDialog dialog = newInstance(errMsg, errMsgId, canAssumeUdfps);
+        final FingerprintErrorDialog dialog = newInstance(errMsg, errTitle,
+                errMsgId, canAssumeUdfps);
         dialog.show(fragmentManager, FingerprintErrorDialog.class.getName());
     }
 
@@ -133,11 +137,22 @@
         }
     }
 
-    private static FingerprintErrorDialog newInstance(CharSequence msg, int msgId,
-            boolean canAssumeUdfps) {
-        FingerprintErrorDialog dialog = new FingerprintErrorDialog();
-        Bundle args = new Bundle();
+    private static int getErrorTitle(int errMsgId) {
+        switch (errMsgId) {
+            case FingerprintManager.FINGERPRINT_ERROR_UNABLE_TO_PROCESS:
+                return R.string
+                        .security_settings_fingerprint_enroll_error_unable_to_process_dialog_title;
+            default:
+                return R.string.security_settings_fingerprint_enroll_error_dialog_title;
+        }
+    }
+
+    private static FingerprintErrorDialog newInstance(CharSequence msg, CharSequence title,
+            int msgId, boolean canAssumeUdfps) {
+        final FingerprintErrorDialog dialog = new FingerprintErrorDialog();
+        final Bundle args = new Bundle();
         args.putCharSequence(KEY_ERROR_MSG, msg);
+        args.putCharSequence(KEY_ERROR_TITLE, title);
         args.putInt(KEY_ERROR_ID, msgId);
         args.putBoolean(KEY_UDFPS, canAssumeUdfps);
         dialog.setArguments(args);