From 026512d21d47c161324e017431f3db869e09b9df Mon Sep 17 00:00:00 2001 From: Jackal Guo Date: Mon, 23 Aug 2021 11:00:50 +0800 Subject: [PATCH] Using float instead of Float in ParsedActivity In order to avoid auto-boxing/unboxing, replace Float object with primitives float. Fix: 188697840 Test: atest AspectRatioTests AspectRatioSdk25Tests Test: atest AndroidPackageTest ParsedActivityTest Change-Id: Ia7e4e035ed023b1387d03ed82d782fae69f2c3f8 --- .../java/android/content/pm/ActivityInfo.java | 9 ++++--- .../parsing/PackageInfoWithoutStateUtils.java | 6 ++--- .../pm/parsing/ParsingPackageUtils.java | 5 ++-- .../pm/parsing/component/ParsedActivity.java | 26 ++++++++----------- 4 files changed, 21 insertions(+), 25 deletions(-) diff --git a/core/java/android/content/pm/ActivityInfo.java b/core/java/android/content/pm/ActivityInfo.java index 95c5612aeee47..172a51a3bcaca 100644 --- a/core/java/android/content/pm/ActivityInfo.java +++ b/core/java/android/content/pm/ActivityInfo.java @@ -16,6 +16,7 @@ package android.content.pm; +import android.annotation.FloatRange; import android.annotation.IntDef; import android.annotation.TestApi; import android.app.Activity; @@ -1368,8 +1369,8 @@ public class ActivityInfo extends ComponentInfo implements Parcelable { } /** @hide */ - public void setMaxAspectRatio(float maxAspectRatio) { - this.mMaxAspectRatio = maxAspectRatio; + public void setMaxAspectRatio(@FloatRange(from = 0f) float maxAspectRatio) { + this.mMaxAspectRatio = maxAspectRatio >= 0f ? maxAspectRatio : 0f; } /** @hide */ @@ -1378,8 +1379,8 @@ public class ActivityInfo extends ComponentInfo implements Parcelable { } /** @hide */ - public void setMinAspectRatio(float minAspectRatio) { - this.mMinAspectRatio = minAspectRatio; + public void setMinAspectRatio(@FloatRange(from = 0f) float minAspectRatio) { + this.mMinAspectRatio = minAspectRatio >= 0f ? minAspectRatio : 0f; } /** diff --git a/core/java/android/content/pm/parsing/PackageInfoWithoutStateUtils.java b/core/java/android/content/pm/parsing/PackageInfoWithoutStateUtils.java index f2a6a5c9382f1..dfc1886a9a036 100644 --- a/core/java/android/content/pm/parsing/PackageInfoWithoutStateUtils.java +++ b/core/java/android/content/pm/parsing/PackageInfoWithoutStateUtils.java @@ -531,10 +531,8 @@ public class PackageInfoWithoutStateUtils { ai.lockTaskLaunchMode = a.getLockTaskLaunchMode(); ai.screenOrientation = a.getScreenOrientation(); ai.resizeMode = a.getResizeMode(); - Float maxAspectRatio = a.getMaxAspectRatio(); - ai.setMaxAspectRatio(maxAspectRatio != null ? maxAspectRatio : 0f); - Float minAspectRatio = a.getMinAspectRatio(); - ai.setMinAspectRatio(minAspectRatio != null ? minAspectRatio : 0f); + ai.setMaxAspectRatio(a.getMaxAspectRatio()); + ai.setMinAspectRatio(a.getMinAspectRatio()); ai.supportsSizeChanges = a.isSupportsSizeChanges(); ai.requestedVrComponent = a.getRequestedVrComponent(); ai.rotationAnimation = a.getRotationAnimation(); diff --git a/core/java/android/content/pm/parsing/ParsingPackageUtils.java b/core/java/android/content/pm/parsing/ParsingPackageUtils.java index 80befcdf02de5..a49d98eea60e3 100644 --- a/core/java/android/content/pm/parsing/ParsingPackageUtils.java +++ b/core/java/android/content/pm/parsing/ParsingPackageUtils.java @@ -150,6 +150,7 @@ public class ParsingPackageUtils { public static final boolean DEBUG_JAR = false; public static final boolean DEBUG_BACKUP = false; public static final float DEFAULT_PRE_O_MAX_ASPECT_RATIO = 1.86f; + public static final float ASPECT_RATIO_NOT_SET = -1f; /** File name in an APK for the Android manifest. */ public static final String ANDROID_MANIFEST_FILENAME = "AndroidManifest.xml"; @@ -2677,7 +2678,7 @@ public class ParsingPackageUtils { for (int index = 0; index < activitiesSize; index++) { ParsedActivity activity = activities.get(index); // If the max aspect ratio for the activity has already been set, skip. - if (activity.getMaxAspectRatio() != null) { + if (activity.getMaxAspectRatio() != ASPECT_RATIO_NOT_SET) { continue; } @@ -2706,7 +2707,7 @@ public class ParsingPackageUtils { int activitiesSize = activities.size(); for (int index = 0; index < activitiesSize; index++) { ParsedActivity activity = activities.get(index); - if (activity.getMinAspectRatio() == null) { + if (activity.getMinAspectRatio() == ASPECT_RATIO_NOT_SET) { activity.setMinAspectRatio(activity.getResizeMode(), minAspectRatio); } } diff --git a/core/java/android/content/pm/parsing/component/ParsedActivity.java b/core/java/android/content/pm/parsing/component/ParsedActivity.java index adb6b76473eb0..8ca86f17cde52 100644 --- a/core/java/android/content/pm/parsing/component/ParsedActivity.java +++ b/core/java/android/content/pm/parsing/component/ParsedActivity.java @@ -21,6 +21,7 @@ import static android.content.pm.ActivityInfo.RESIZE_MODE_RESIZEABLE; import static android.content.pm.ActivityInfo.RESIZE_MODE_RESIZEABLE_VIA_SDK_VERSION; import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED; import static android.content.pm.parsing.ParsingPackageImpl.sForInternedString; +import static android.content.pm.parsing.ParsingPackageUtils.ASPECT_RATIO_NOT_SET; import static android.view.WindowManager.LayoutParams.ROTATION_ANIMATION_UNSPECIFIED; import android.annotation.NonNull; @@ -67,11 +68,8 @@ public class ParsedActivity extends ParsedMainComponent { private int screenOrientation = ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED; private int resizeMode = ActivityInfo.RESIZE_MODE_RESIZEABLE; - @Nullable - private Float maxAspectRatio; - - @Nullable - private Float minAspectRatio; + private float maxAspectRatio = ASPECT_RATIO_NOT_SET; + private float minAspectRatio = ASPECT_RATIO_NOT_SET; private boolean supportsSizeChanges; @@ -234,7 +232,7 @@ public class ParsedActivity extends ParsedMainComponent { return this; } - public ParsedActivity setMaxAspectRatio(Float maxAspectRatio) { + public ParsedActivity setMaxAspectRatio(float maxAspectRatio) { this.maxAspectRatio = maxAspectRatio; return this; } @@ -260,7 +258,7 @@ public class ParsedActivity extends ParsedMainComponent { return this; } - public ParsedActivity setMinAspectRatio(Float minAspectRatio) { + public ParsedActivity setMinAspectRatio(float minAspectRatio) { this.minAspectRatio = minAspectRatio; return this; } @@ -375,8 +373,8 @@ public class ParsedActivity extends ParsedMainComponent { dest.writeInt(this.lockTaskLaunchMode); dest.writeInt(this.screenOrientation); dest.writeInt(this.resizeMode); - dest.writeValue(this.maxAspectRatio); - dest.writeValue(this.minAspectRatio); + dest.writeFloat(this.maxAspectRatio); + dest.writeFloat(this.minAspectRatio); dest.writeBoolean(this.supportsSizeChanges); dest.writeString(this.requestedVrComponent); dest.writeInt(this.rotationAnimation); @@ -412,8 +410,8 @@ public class ParsedActivity extends ParsedMainComponent { this.lockTaskLaunchMode = in.readInt(); this.screenOrientation = in.readInt(); this.resizeMode = in.readInt(); - this.maxAspectRatio = (Float) in.readValue(Float.class.getClassLoader()); - this.minAspectRatio = (Float) in.readValue(Float.class.getClassLoader()); + this.maxAspectRatio = in.readFloat(); + this.minAspectRatio = in.readFloat(); this.supportsSizeChanges = in.readBoolean(); this.requestedVrComponent = in.readString(); this.rotationAnimation = in.readInt(); @@ -505,13 +503,11 @@ public class ParsedActivity extends ParsedMainComponent { return resizeMode; } - @Nullable - public Float getMaxAspectRatio() { + public float getMaxAspectRatio() { return maxAspectRatio; } - @Nullable - public Float getMinAspectRatio() { + public float getMinAspectRatio() { return minAspectRatio; }