Merge "Handle null fields when using parcels." into udc-dev am: 54d0cacacd am: a561c32098 am: 89de9517fb am: b5b1f8ad38

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/23091188

Change-Id: I7270a3c3226d0d9e9f7ce8cb7a1835cb19203093
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/wifi/java/src/android/net/wifi/sharedconnectivity/app/KnownNetwork.java b/wifi/java/src/android/net/wifi/sharedconnectivity/app/KnownNetwork.java
index c390e42..33f4d46 100644
--- a/wifi/java/src/android/net/wifi/sharedconnectivity/app/KnownNetwork.java
+++ b/wifi/java/src/android/net/wifi/sharedconnectivity/app/KnownNetwork.java
@@ -275,7 +275,12 @@
         dest.writeInt(mNetworkSource);
         dest.writeString(mSsid);
         dest.writeArraySet(mSecurityTypes);
-        mNetworkProviderInfo.writeToParcel(dest, flags);
+        if (mNetworkProviderInfo != null) {
+            dest.writeBoolean(true);
+            mNetworkProviderInfo.writeToParcel(dest, flags);
+        } else {
+            dest.writeBoolean(false);
+        }
         dest.writeBundle(mExtras);
     }
 
@@ -286,9 +291,15 @@
      */
     @NonNull
     public static KnownNetwork readFromParcel(@NonNull Parcel in) {
-        return new KnownNetwork(in.readInt(), in.readString(),
-                (ArraySet<Integer>) in.readArraySet(null),
-                NetworkProviderInfo.readFromParcel(in), in.readBundle());
+        int networkSource = in.readInt();
+        String mSsid = in.readString();
+        ArraySet<Integer> securityTypes = (ArraySet<Integer>) in.readArraySet(null);
+        if (in.readBoolean()) {
+            return new KnownNetwork(networkSource, mSsid, securityTypes,
+                    NetworkProviderInfo.readFromParcel(in), in.readBundle());
+        }
+        return new KnownNetwork(networkSource, mSsid, securityTypes, null,
+                in.readBundle());
     }
 
     @NonNull
diff --git a/wifi/java/src/android/net/wifi/sharedconnectivity/app/SharedConnectivitySettingsState.java b/wifi/java/src/android/net/wifi/sharedconnectivity/app/SharedConnectivitySettingsState.java
index af3afa8..5ad3ede 100644
--- a/wifi/java/src/android/net/wifi/sharedconnectivity/app/SharedConnectivitySettingsState.java
+++ b/wifi/java/src/android/net/wifi/sharedconnectivity/app/SharedConnectivitySettingsState.java
@@ -161,7 +161,7 @@
 
     @Override
     public void writeToParcel(@NonNull Parcel dest, int flags) {
-        mInstantTetherSettingsPendingIntent.writeToParcel(dest, 0);
+        PendingIntent.writePendingIntentOrNullToParcel(mInstantTetherSettingsPendingIntent, dest);
         dest.writeBoolean(mInstantTetherEnabled);
         dest.writeBundle(mExtras);
     }
@@ -173,7 +173,7 @@
      */
     @NonNull
     public static SharedConnectivitySettingsState readFromParcel(@NonNull Parcel in) {
-        PendingIntent pendingIntent = PendingIntent.CREATOR.createFromParcel(in);
+        PendingIntent pendingIntent = PendingIntent.readPendingIntentOrNullFromParcel(in);
         boolean instantTetherEnabled = in.readBoolean();
         Bundle extras = in.readBundle();
         return new SharedConnectivitySettingsState(instantTetherEnabled, pendingIntent, extras);