Merge "CharSequenceTransformation should not change anything when comparision fails." into oc-mr1-dev
diff --git a/core/java/android/service/autofill/CharSequenceTransformation.java b/core/java/android/service/autofill/CharSequenceTransformation.java
index dfb30b9..8ab856e 100644
--- a/core/java/android/service/autofill/CharSequenceTransformation.java
+++ b/core/java/android/service/autofill/CharSequenceTransformation.java
@@ -31,6 +31,7 @@
 
 import com.android.internal.util.Preconditions;
 
+import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
 /**
@@ -53,7 +54,8 @@
  * fields (month and year) would be:
  *
  * <pre class="prettyprint">
- * new CharSequenceTransformation.Builder(ccExpMonthId, Pattern.compile("^(\\d\\d)$"), "Exp: $1")
+ * new CharSequenceTransformation
+ *   .Builder(ccExpMonthId, Pattern.compile("^(\\d\\d)$"), "Exp: $1")
  *   .addField(ccExpYearId, Pattern.compile("^(\\d\\d\\d\\d)$"), " / $1");
  * </pre>
  */
@@ -83,8 +85,13 @@
                 return;
             }
             try {
+                final Matcher matcher = field.first.matcher(value);
+                if (!matcher.matches()) {
+                    if (sDebug) Log.d(TAG, "match for " + field.first + " failed on id " + id);
+                    return;
+                }
                 // replaceAll throws an exception if the subst is invalid
-                final String convertedValue = field.first.matcher(value).replaceAll(field.second);
+                final String convertedValue = matcher.replaceAll(field.second);
                 converted.append(convertedValue);
             } catch (Exception e) {
                 // Do not log full exception to avoid PII leaking
diff --git a/core/java/android/service/autofill/ImageTransformation.java b/core/java/android/service/autofill/ImageTransformation.java
index 3627189..2151f74 100644
--- a/core/java/android/service/autofill/ImageTransformation.java
+++ b/core/java/android/service/autofill/ImageTransformation.java
@@ -78,8 +78,7 @@
         }
         final int size = mOptions.size();
         if (sDebug) {
-            Log.d(TAG, size + " multiple options on id " + childViewId + " to compare against "
-                    + value);
+            Log.d(TAG, size + " multiple options on id " + childViewId + " to compare against");
         }
 
         for (int i = 0; i < size; i++) {