summaryrefslogtreecommitdiff
path: root/core/java
diff options
context:
space:
mode:
authorWinson <chiuwinson@google.com>2021-06-18 12:35:40 -0700
committerWinson <chiuwinson@google.com>2021-08-05 10:41:19 -0700
commit593df2ce1ed128a61c6146bd3e98a049986d67d5 (patch)
treedf938a07c5d721023edadab16c24b215c440cae1 /core/java
parentbf649b323a0f2dcbf3f2bb1d4dc6f3eb80b3f2a9 (diff)
Add parsing class parcelling tests
Uses reflection to read all of the getters for each of the data classes and finds their setters to input test data, serialize it, deserialize it, and compare the before and after values. Also records all of the methods available in the class, to ensure that any new fields/methods are caught by the test. Bug: 178852754 Test: atest com.android.server.pm.test.parsing.parcelling Change-Id: I642fd43a3ff2e5675129f0f4ad3646c97e3f0e22
Diffstat (limited to 'core/java')
-rw-r--r--core/java/android/content/pm/PackageParser.java66
-rw-r--r--core/java/android/content/pm/parsing/PackageInfoWithoutStateUtils.java2
-rw-r--r--core/java/android/content/pm/parsing/ParsingPackage.java2
-rw-r--r--core/java/android/content/pm/parsing/ParsingPackageImpl.java6
-rw-r--r--core/java/android/content/pm/parsing/component/ParsedActivity.java6
-rw-r--r--core/java/android/content/pm/parsing/component/ParsedComponent.java4
-rw-r--r--core/java/android/content/pm/parsing/component/ParsedInstrumentation.java2
-rw-r--r--core/java/android/content/pm/parsing/component/ParsedIntentInfo.java2
-rw-r--r--core/java/android/content/pm/parsing/component/ParsedPermission.java2
-rw-r--r--core/java/android/content/pm/parsing/component/ParsedProcess.java1
-rw-r--r--core/java/android/content/pm/parsing/component/ParsedProvider.java1
-rw-r--r--core/java/android/content/pm/parsing/component/ParsedService.java2
12 files changed, 22 insertions, 74 deletions
diff --git a/core/java/android/content/pm/PackageParser.java b/core/java/android/content/pm/PackageParser.java
index bed03835707f..29ce3971e83a 100644
--- a/core/java/android/content/pm/PackageParser.java
+++ b/core/java/android/content/pm/PackageParser.java
@@ -55,6 +55,8 @@ import android.content.ComponentName;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.overlay.OverlayPaths;
+import android.content.pm.parsing.ParsingPackageUtils;
+import android.content.pm.split.SplitAssetLoader;
import android.content.pm.parsing.result.ParseResult;
import android.content.pm.parsing.result.ParseTypeImpl;
import android.content.res.ApkAssets;
@@ -7425,7 +7427,7 @@ public class PackageParser {
mCompileSdkVersionCodename = dest.readString();
mUpgradeKeySets = (ArraySet<String>) dest.readArraySet(boot);
- mKeySetMapping = readKeySetMapping(dest);
+ mKeySetMapping = ParsingPackageUtils.readKeySetMapping(dest);
cpuAbiOverride = dest.readString();
use32bitAbi = (dest.readInt() == 1);
@@ -7551,73 +7553,13 @@ public class PackageParser {
dest.writeInt(mCompileSdkVersion);
dest.writeString(mCompileSdkVersionCodename);
dest.writeArraySet(mUpgradeKeySets);
- writeKeySetMapping(dest, mKeySetMapping);
+ ParsingPackageUtils.writeKeySetMapping(dest, mKeySetMapping);
dest.writeString(cpuAbiOverride);
dest.writeInt(use32bitAbi ? 1 : 0);
dest.writeByteArray(restrictUpdateHash);
dest.writeInt(visibleToInstantApps ? 1 : 0);
}
- /**
- * Writes the keyset mapping to the provided package. {@code null} mappings are permitted.
- */
- private static void writeKeySetMapping(
- Parcel dest, ArrayMap<String, ArraySet<PublicKey>> keySetMapping) {
- if (keySetMapping == null) {
- dest.writeInt(-1);
- return;
- }
-
- final int N = keySetMapping.size();
- dest.writeInt(N);
-
- for (int i = 0; i < N; i++) {
- dest.writeString(keySetMapping.keyAt(i));
- ArraySet<PublicKey> keys = keySetMapping.valueAt(i);
- if (keys == null) {
- dest.writeInt(-1);
- continue;
- }
-
- final int M = keys.size();
- dest.writeInt(M);
- for (int j = 0; j < M; j++) {
- dest.writeSerializable(keys.valueAt(j));
- }
- }
- }
-
- /**
- * Reads a keyset mapping from the given parcel at the given data position. May return
- * {@code null} if the serialized mapping was {@code null}.
- */
- private static ArrayMap<String, ArraySet<PublicKey>> readKeySetMapping(Parcel in) {
- final int N = in.readInt();
- if (N == -1) {
- return null;
- }
-
- ArrayMap<String, ArraySet<PublicKey>> keySetMapping = new ArrayMap<>();
- for (int i = 0; i < N; ++i) {
- String key = in.readString();
- final int M = in.readInt();
- if (M == -1) {
- keySetMapping.put(key, null);
- continue;
- }
-
- ArraySet<PublicKey> keys = new ArraySet<>(M);
- for (int j = 0; j < M; ++j) {
- PublicKey pk = (PublicKey) in.readSerializable();
- keys.add(pk);
- }
-
- keySetMapping.put(key, keys);
- }
-
- return keySetMapping;
- }
-
public static final Parcelable.Creator CREATOR = new Parcelable.Creator<Package>() {
public Package createFromParcel(Parcel in) {
return new Package(in);
diff --git a/core/java/android/content/pm/parsing/PackageInfoWithoutStateUtils.java b/core/java/android/content/pm/parsing/PackageInfoWithoutStateUtils.java
index 9fee7bb92490..f2a6a5c9382f 100644
--- a/core/java/android/content/pm/parsing/PackageInfoWithoutStateUtils.java
+++ b/core/java/android/content/pm/parsing/PackageInfoWithoutStateUtils.java
@@ -535,7 +535,7 @@ public class PackageInfoWithoutStateUtils {
ai.setMaxAspectRatio(maxAspectRatio != null ? maxAspectRatio : 0f);
Float minAspectRatio = a.getMinAspectRatio();
ai.setMinAspectRatio(minAspectRatio != null ? minAspectRatio : 0f);
- ai.supportsSizeChanges = a.getSupportsSizeChanges();
+ ai.supportsSizeChanges = a.isSupportsSizeChanges();
ai.requestedVrComponent = a.getRequestedVrComponent();
ai.rotationAnimation = a.getRotationAnimation();
ai.colorMode = a.getColorMode();
diff --git a/core/java/android/content/pm/parsing/ParsingPackage.java b/core/java/android/content/pm/parsing/ParsingPackage.java
index 72cc9299376a..d6e1ac903c42 100644
--- a/core/java/android/content/pm/parsing/ParsingPackage.java
+++ b/core/java/android/content/pm/parsing/ParsingPackage.java
@@ -360,7 +360,7 @@ public interface ParsingPackage extends ParsingPackageRead {
ParsingPackage setCompileSdkVersion(int compileSdkVersion);
- ParsingPackage setCompileSdkVersionCodename(String compileSdkVersionCodename);
+ ParsingPackage setCompileSdkVersionCodeName(String compileSdkVersionCodeName);
ParsingPackage setAttributionsAreUserVisible(boolean attributionsAreUserVisible);
diff --git a/core/java/android/content/pm/parsing/ParsingPackageImpl.java b/core/java/android/content/pm/parsing/ParsingPackageImpl.java
index 0db65467c686..f0d95d97263a 100644
--- a/core/java/android/content/pm/parsing/ParsingPackageImpl.java
+++ b/core/java/android/content/pm/parsing/ParsingPackageImpl.java
@@ -553,7 +553,7 @@ public class ParsingPackageImpl implements ParsingPackage, Parcelable {
setCompileSdkVersion(manifestArray.getInteger(
R.styleable.AndroidManifest_compileSdkVersion, 0));
- setCompileSdkVersionCodename(manifestArray.getNonConfigurationString(
+ setCompileSdkVersionCodeName(manifestArray.getNonConfigurationString(
R.styleable.AndroidManifest_compileSdkVersionCodename, 0));
setIsolatedSplitLoading(manifestArray.getBoolean(
@@ -2686,8 +2686,8 @@ public class ParsingPackageImpl implements ParsingPackage, Parcelable {
}
@Override
- public ParsingPackage setCompileSdkVersionCodename(String compileSdkVersionCodename) {
- this.compileSdkVersionCodeName = compileSdkVersionCodename;
+ public ParsingPackage setCompileSdkVersionCodeName(String compileSdkVersionCodeName) {
+ this.compileSdkVersionCodeName = compileSdkVersionCodeName;
return this;
}
diff --git a/core/java/android/content/pm/parsing/component/ParsedActivity.java b/core/java/android/content/pm/parsing/component/ParsedActivity.java
index 73ee13212e90..adb6b76473eb 100644
--- a/core/java/android/content/pm/parsing/component/ParsedActivity.java
+++ b/core/java/android/content/pm/parsing/component/ParsedActivity.java
@@ -23,6 +23,7 @@ import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED;
import static android.content.pm.parsing.ParsingPackageImpl.sForInternedString;
import static android.view.WindowManager.LayoutParams.ROTATION_ANIMATION_UNSPECIFIED;
+import android.annotation.NonNull;
import android.annotation.Nullable;
import android.app.ActivityTaskManager;
import android.content.ComponentName;
@@ -423,6 +424,7 @@ public class ParsedActivity extends ParsedMainComponent {
}
}
+ @NonNull
public static final Parcelable.Creator<ParsedActivity> CREATOR = new Creator<ParsedActivity>() {
@Override
public ParsedActivity createFromParcel(Parcel source) {
@@ -513,10 +515,6 @@ public class ParsedActivity extends ParsedMainComponent {
return minAspectRatio;
}
- public boolean getSupportsSizeChanges() {
- return supportsSizeChanges;
- }
-
@Nullable
public String getRequestedVrComponent() {
return requestedVrComponent;
diff --git a/core/java/android/content/pm/parsing/component/ParsedComponent.java b/core/java/android/content/pm/parsing/component/ParsedComponent.java
index 3c0f097285ca..838adfd3215e 100644
--- a/core/java/android/content/pm/parsing/component/ParsedComponent.java
+++ b/core/java/android/content/pm/parsing/component/ParsedComponent.java
@@ -43,8 +43,8 @@ import java.util.Map;
/** @hide */
public abstract class ParsedComponent implements Parcelable {
- private static ParsedIntentInfo.ListParceler sForIntentInfos = Parcelling.Cache.getOrCreate(
- ParsedIntentInfo.ListParceler.class);
+ private static final ParsedIntentInfo.ListParceler sForIntentInfos =
+ Parcelling.Cache.getOrCreate(ParsedIntentInfo.ListParceler.class);
@NonNull
@DataClass.ParcelWith(ForInternedString.class)
diff --git a/core/java/android/content/pm/parsing/component/ParsedInstrumentation.java b/core/java/android/content/pm/parsing/component/ParsedInstrumentation.java
index 65ff4720063b..41789204a76d 100644
--- a/core/java/android/content/pm/parsing/component/ParsedInstrumentation.java
+++ b/core/java/android/content/pm/parsing/component/ParsedInstrumentation.java
@@ -18,6 +18,7 @@ package android.content.pm.parsing.component;
import static android.content.pm.parsing.ParsingPackageImpl.sForInternedString;
+import android.annotation.NonNull;
import android.annotation.Nullable;
import android.content.ComponentName;
import android.os.Parcel;
@@ -94,6 +95,7 @@ public class ParsedInstrumentation extends ParsedComponent {
this.functionalTest = in.readByte() != 0;
}
+ @NonNull
public static final Parcelable.Creator<ParsedInstrumentation> CREATOR =
new Parcelable.Creator<ParsedInstrumentation>() {
@Override
diff --git a/core/java/android/content/pm/parsing/component/ParsedIntentInfo.java b/core/java/android/content/pm/parsing/component/ParsedIntentInfo.java
index 01ee0f4828f9..59d4a95edb0a 100644
--- a/core/java/android/content/pm/parsing/component/ParsedIntentInfo.java
+++ b/core/java/android/content/pm/parsing/component/ParsedIntentInfo.java
@@ -16,6 +16,7 @@
package android.content.pm.parsing.component;
+import android.annotation.NonNull;
import android.annotation.Nullable;
import android.content.IntentFilter;
import android.os.Parcel;
@@ -58,6 +59,7 @@ public final class ParsedIntentInfo extends IntentFilter {
item.writeIntentInfoToParcel(dest, parcelFlags);
}
+ @NonNull
@Override
public ParsedIntentInfo unparcel(Parcel source) {
return new ParsedIntentInfo(source);
diff --git a/core/java/android/content/pm/parsing/component/ParsedPermission.java b/core/java/android/content/pm/parsing/component/ParsedPermission.java
index 50bc3d98fb2a..0f82941f92b1 100644
--- a/core/java/android/content/pm/parsing/component/ParsedPermission.java
+++ b/core/java/android/content/pm/parsing/component/ParsedPermission.java
@@ -16,6 +16,7 @@
package android.content.pm.parsing.component;
+import android.annotation.NonNull;
import android.annotation.Nullable;
import android.content.pm.PermissionInfo;
import android.os.Parcel;
@@ -167,6 +168,7 @@ public class ParsedPermission extends ParsedComponent {
this.knownCerts = sForStringSet.unparcel(in);
}
+ @NonNull
public static final Parcelable.Creator<ParsedPermission> CREATOR =
new Parcelable.Creator<ParsedPermission>() {
@Override
diff --git a/core/java/android/content/pm/parsing/component/ParsedProcess.java b/core/java/android/content/pm/parsing/component/ParsedProcess.java
index c39d6b1d3250..fe102252931e 100644
--- a/core/java/android/content/pm/parsing/component/ParsedProcess.java
+++ b/core/java/android/content/pm/parsing/component/ParsedProcess.java
@@ -19,7 +19,6 @@ package android.content.pm.parsing.component;
import static java.util.Collections.emptySet;
import android.annotation.NonNull;
-import android.annotation.Nullable;
import android.content.pm.ApplicationInfo;
import android.os.Parcel;
import android.os.Parcelable;
diff --git a/core/java/android/content/pm/parsing/component/ParsedProvider.java b/core/java/android/content/pm/parsing/component/ParsedProvider.java
index ebf85f71d282..9a12b48cffb0 100644
--- a/core/java/android/content/pm/parsing/component/ParsedProvider.java
+++ b/core/java/android/content/pm/parsing/component/ParsedProvider.java
@@ -169,6 +169,7 @@ public class ParsedProvider extends ParsedMainComponent {
this.pathPermissions = in.createTypedArray(PathPermission.CREATOR);
}
+ @NonNull
public static final Parcelable.Creator<ParsedProvider> CREATOR = new Creator<ParsedProvider>() {
@Override
public ParsedProvider createFromParcel(Parcel source) {
diff --git a/core/java/android/content/pm/parsing/component/ParsedService.java b/core/java/android/content/pm/parsing/component/ParsedService.java
index 471d3468a084..5499a130a4ad 100644
--- a/core/java/android/content/pm/parsing/component/ParsedService.java
+++ b/core/java/android/content/pm/parsing/component/ParsedService.java
@@ -18,6 +18,7 @@ package android.content.pm.parsing.component;
import static android.content.pm.parsing.ParsingPackageImpl.sForInternedString;
+import android.annotation.NonNull;
import android.annotation.Nullable;
import android.content.ComponentName;
import android.os.Parcel;
@@ -83,6 +84,7 @@ public class ParsedService extends ParsedMainComponent {
this.permission = sForInternedString.unparcel(in);
}
+ @NonNull
public static final Parcelable.Creator<ParsedService> CREATOR = new Creator<ParsedService>() {
@Override
public ParsedService createFromParcel(Parcel source) {