Handle null fields when using parcels.

For fields that can be null, make sure they are stored
correctly and read correctly when they are used in a parcel.

Bug: 281487373
Test: atest SharedConnectivitySettingsStateTest KnownNetworkTest
Change-Id: I2f9cdb638dcb1f98113f39b60a96b0d1e8b22d8c
This commit is contained in:
Isaac Katzenelson
2023-05-08 22:28:03 +00:00
parent 0e44c4575d
commit d02b24ab87
2 changed files with 17 additions and 6 deletions

View File

@@ -275,7 +275,12 @@ public final class KnownNetwork implements Parcelable {
dest.writeInt(mNetworkSource); dest.writeInt(mNetworkSource);
dest.writeString(mSsid); dest.writeString(mSsid);
dest.writeArraySet(mSecurityTypes); dest.writeArraySet(mSecurityTypes);
if (mNetworkProviderInfo != null) {
dest.writeBoolean(true);
mNetworkProviderInfo.writeToParcel(dest, flags); mNetworkProviderInfo.writeToParcel(dest, flags);
} else {
dest.writeBoolean(false);
}
dest.writeBundle(mExtras); dest.writeBundle(mExtras);
} }
@@ -286,10 +291,16 @@ public final class KnownNetwork implements Parcelable {
*/ */
@NonNull @NonNull
public static KnownNetwork readFromParcel(@NonNull Parcel in) { public static KnownNetwork readFromParcel(@NonNull Parcel in) {
return new KnownNetwork(in.readInt(), in.readString(), int networkSource = in.readInt();
(ArraySet<Integer>) in.readArraySet(null), 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()); NetworkProviderInfo.readFromParcel(in), in.readBundle());
} }
return new KnownNetwork(networkSource, mSsid, securityTypes, null,
in.readBundle());
}
@NonNull @NonNull
public static final Creator<KnownNetwork> CREATOR = new Creator<>() { public static final Creator<KnownNetwork> CREATOR = new Creator<>() {

View File

@@ -161,7 +161,7 @@ public final class SharedConnectivitySettingsState implements Parcelable {
@Override @Override
public void writeToParcel(@NonNull Parcel dest, int flags) { public void writeToParcel(@NonNull Parcel dest, int flags) {
mInstantTetherSettingsPendingIntent.writeToParcel(dest, 0); PendingIntent.writePendingIntentOrNullToParcel(mInstantTetherSettingsPendingIntent, dest);
dest.writeBoolean(mInstantTetherEnabled); dest.writeBoolean(mInstantTetherEnabled);
dest.writeBundle(mExtras); dest.writeBundle(mExtras);
} }
@@ -173,7 +173,7 @@ public final class SharedConnectivitySettingsState implements Parcelable {
*/ */
@NonNull @NonNull
public static SharedConnectivitySettingsState readFromParcel(@NonNull Parcel in) { public static SharedConnectivitySettingsState readFromParcel(@NonNull Parcel in) {
PendingIntent pendingIntent = PendingIntent.CREATOR.createFromParcel(in); PendingIntent pendingIntent = PendingIntent.readPendingIntentOrNullFromParcel(in);
boolean instantTetherEnabled = in.readBoolean(); boolean instantTetherEnabled = in.readBoolean();
Bundle extras = in.readBundle(); Bundle extras = in.readBundle();
return new SharedConnectivitySettingsState(instantTetherEnabled, pendingIntent, extras); return new SharedConnectivitySettingsState(instantTetherEnabled, pendingIntent, extras);