Merge "Removed Parcelable from FieldClassification."
diff --git a/api/current.txt b/api/current.txt
index 9bdcdad..5df52b9 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -37692,11 +37692,8 @@
     field public static final android.os.Parcelable.Creator<android.service.autofill.EditDistanceScorer> CREATOR;
   }
 
-  public final class FieldClassification implements android.os.Parcelable {
-    method public int describeContents();
+  public final class FieldClassification {
     method public java.util.List<android.service.autofill.FieldClassification.Match> getMatches();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final android.os.Parcelable.Creator<android.service.autofill.FieldClassification> CREATOR;
   }
 
   public static final class FieldClassification.Match {
diff --git a/core/java/android/service/autofill/FieldClassification.java b/core/java/android/service/autofill/FieldClassification.java
index 001e3a0..001b291 100644
--- a/core/java/android/service/autofill/FieldClassification.java
+++ b/core/java/android/service/autofill/FieldClassification.java
@@ -20,7 +20,6 @@
 
 import android.annotation.NonNull;
 import android.os.Parcel;
-import android.os.Parcelable;
 import android.view.autofill.Helper;
 
 import com.android.internal.util.Preconditions;
@@ -34,8 +33,7 @@
  * Represents the <a href="AutofillService.html#FieldClassification">field classification</a>
  * results for a given field.
  */
-// TODO(b/70291841): let caller handle Parcelable...
-public final class FieldClassification implements Parcelable {
+public final class FieldClassification {
 
     private final ArrayList<Match> mMatches;
 
@@ -72,42 +70,38 @@
         return "FieldClassification: " + mMatches;
     }
 
-    /////////////////////////////////////
-    // Parcelable "contract" methods. //
-    /////////////////////////////////////
-
-    @Override
-    public int describeContents() {
-        return 0;
-    }
-
-    @Override
-    public void writeToParcel(Parcel parcel, int flags) {
+    private void writeToParcel(Parcel parcel) {
         parcel.writeInt(mMatches.size());
         for (int i = 0; i < mMatches.size(); i++) {
             mMatches.get(i).writeToParcel(parcel);
         }
     }
 
-    public static final Parcelable.Creator<FieldClassification> CREATOR =
-            new Parcelable.Creator<FieldClassification>() {
-
-        @Override
-        public FieldClassification createFromParcel(Parcel parcel) {
-            final int size = parcel.readInt();
-            final ArrayList<Match> matches = new ArrayList<>();
-            for (int i = 0; i < size; i++) {
-                matches.add(i, Match.readFromParcel(parcel));
-            }
-
-            return new FieldClassification(matches);
+    private static FieldClassification readFromParcel(Parcel parcel) {
+        final int size = parcel.readInt();
+        final ArrayList<Match> matches = new ArrayList<>();
+        for (int i = 0; i < size; i++) {
+            matches.add(i, Match.readFromParcel(parcel));
         }
 
-        @Override
-        public FieldClassification[] newArray(int size) {
-            return new FieldClassification[size];
+        return new FieldClassification(matches);
+    }
+
+    static FieldClassification[] readArrayFromParcel(Parcel parcel) {
+        final int length = parcel.readInt();
+        final FieldClassification[] fcs = new FieldClassification[length];
+        for (int i = 0; i < length; i++) {
+            fcs[i] = readFromParcel(parcel);
         }
-    };
+        return fcs;
+    }
+
+    static void writeArrayToParcel(@NonNull Parcel parcel, @NonNull FieldClassification[] fcs) {
+        parcel.writeInt(fcs.length);
+        for (int i = 0; i < fcs.length; i++) {
+            fcs[i].writeToParcel(parcel);
+        }
+    }
 
     /**
      * Represents the score of a {@link UserData} entry for the field.
@@ -170,23 +164,5 @@
         private static Match readFromParcel(@NonNull Parcel parcel) {
             return new Match(parcel.readString(), parcel.readFloat());
         }
-
-        /** @hide */
-        public static Match[] readArrayFromParcel(@NonNull Parcel parcel) {
-            final int length = parcel.readInt();
-            final Match[] matches = new Match[length];
-            for (int i = 0; i < length; i++) {
-                matches[i] = readFromParcel(parcel);
-            }
-            return matches;
-        }
-
-        /** @hide */
-        public static void writeArrayToParcel(@NonNull Parcel parcel, @NonNull Match[] matches) {
-            parcel.writeInt(matches.length);
-            for (int i = 0; i < matches.length; i++) {
-                matches[i].writeToParcel(parcel);
-            }
-        }
     }
 }
diff --git a/core/java/android/service/autofill/FillEventHistory.java b/core/java/android/service/autofill/FillEventHistory.java
index 2eb44cf..df62446 100644
--- a/core/java/android/service/autofill/FillEventHistory.java
+++ b/core/java/android/service/autofill/FillEventHistory.java
@@ -156,7 +156,8 @@
                 final AutofillId[] detectedFields = event.mDetectedFieldIds;
                 parcel.writeParcelableArray(detectedFields, flags);
                 if (detectedFields != null) {
-                    parcel.writeParcelableArray(event.mDetectedFieldClassifications, flags);
+                    FieldClassification.writeArrayToParcel(parcel,
+                            event.mDetectedFieldClassifications);
                 }
             }
         }
@@ -551,7 +552,7 @@
                                 AutofillId.class);
                         final FieldClassification[] detectedFieldClassifications =
                                 (detectedFieldIds != null)
-                                ? parcel.readParcelableArray(null, FieldClassification.class)
+                                ? FieldClassification.readArrayFromParcel(parcel)
                                 : null;
 
                         selection.addEvent(new Event(eventType, datasetId, clientState,