Reimplement [read|write]ArraySet of Parcel inside NetworkCapabilities
Both of readArraySet and writeArraySet are hidden APIs inside Parcel, so reimplement those two methods inside NetworkCapabilities to prevent calling hidden APIs. Bug: 170598012 Test: atest FrameworksNetTests Change-Id: I70f75c1a0db92c6a5575c6a9917843d783dfaeea
This commit is contained in:
@@ -1779,6 +1779,15 @@ public final class NetworkCapabilities implements Parcelable {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private <T extends Parcelable> void writeParcelableArraySet(Parcel in,
|
||||||
|
@Nullable ArraySet<T> val, int flags) {
|
||||||
|
final int size = (val != null) ? val.size() : -1;
|
||||||
|
in.writeInt(size);
|
||||||
|
for (int i = 0; i < size; i++) {
|
||||||
|
in.writeParcelable(val.valueAt(i), flags);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void writeToParcel(Parcel dest, int flags) {
|
public void writeToParcel(Parcel dest, int flags) {
|
||||||
dest.writeLong(mNetworkCapabilities);
|
dest.writeLong(mNetworkCapabilities);
|
||||||
@@ -1789,7 +1798,7 @@ public final class NetworkCapabilities implements Parcelable {
|
|||||||
dest.writeParcelable((Parcelable) mNetworkSpecifier, flags);
|
dest.writeParcelable((Parcelable) mNetworkSpecifier, flags);
|
||||||
dest.writeParcelable((Parcelable) mTransportInfo, flags);
|
dest.writeParcelable((Parcelable) mTransportInfo, flags);
|
||||||
dest.writeInt(mSignalStrength);
|
dest.writeInt(mSignalStrength);
|
||||||
dest.writeArraySet(mUids);
|
writeParcelableArraySet(dest, mUids, flags);
|
||||||
dest.writeString(mSSID);
|
dest.writeString(mSSID);
|
||||||
dest.writeBoolean(mPrivateDnsBroken);
|
dest.writeBoolean(mPrivateDnsBroken);
|
||||||
dest.writeIntArray(getAdministratorUids());
|
dest.writeIntArray(getAdministratorUids());
|
||||||
@@ -1812,8 +1821,7 @@ public final class NetworkCapabilities implements Parcelable {
|
|||||||
netCap.mNetworkSpecifier = in.readParcelable(null);
|
netCap.mNetworkSpecifier = in.readParcelable(null);
|
||||||
netCap.mTransportInfo = in.readParcelable(null);
|
netCap.mTransportInfo = in.readParcelable(null);
|
||||||
netCap.mSignalStrength = in.readInt();
|
netCap.mSignalStrength = in.readInt();
|
||||||
netCap.mUids = (ArraySet<UidRange>) in.readArraySet(
|
netCap.mUids = readParcelableArraySet(in, null /* ClassLoader, null for default */);
|
||||||
null /* ClassLoader, null for default */);
|
|
||||||
netCap.mSSID = in.readString();
|
netCap.mSSID = in.readString();
|
||||||
netCap.mPrivateDnsBroken = in.readBoolean();
|
netCap.mPrivateDnsBroken = in.readBoolean();
|
||||||
netCap.setAdministratorUids(in.createIntArray());
|
netCap.setAdministratorUids(in.createIntArray());
|
||||||
@@ -1826,6 +1834,20 @@ public final class NetworkCapabilities implements Parcelable {
|
|||||||
public NetworkCapabilities[] newArray(int size) {
|
public NetworkCapabilities[] newArray(int size) {
|
||||||
return new NetworkCapabilities[size];
|
return new NetworkCapabilities[size];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private @Nullable <T extends Parcelable> ArraySet<T> readParcelableArraySet(Parcel in,
|
||||||
|
@Nullable ClassLoader loader) {
|
||||||
|
final int size = in.readInt();
|
||||||
|
if (size < 0) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
final ArraySet<T> result = new ArraySet<>(size);
|
||||||
|
for (int i = 0; i < size; i++) {
|
||||||
|
final T value = in.readParcelable(loader);
|
||||||
|
result.append(value);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
Reference in New Issue
Block a user