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
This commit is contained in:
Jackal Guo
2021-08-23 11:00:50 +08:00
parent 38ac8d6ebc
commit 026512d21d
4 changed files with 21 additions and 25 deletions

View File

@@ -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;
}
/**

View File

@@ -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();

View File

@@ -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);
}
}

View File

@@ -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;
}