Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 48308570 authored by Melody Hsu's avatar Melody Hsu
Browse files

Check preconditions for position and matrix for txs

Transactions would allow invalid values like -inf and inf to be
applied, leading to exceptions and test failures. Conduct validity
precondition checks and update API documentation.

Bug: b/421893581
Test: SurfaceControlTest
Flag: EXEMPT, bug fix, error handling
Change-Id: I5ceceacfd27d0602315aa5189d0b3c77c7309837
parent 42ca72cd
Loading
Loading
Loading
Loading
+9 −2
Original line number Diff line number Diff line
@@ -3374,7 +3374,8 @@ public final class SurfaceControl implements Parcelable {

        /**
         * Sets the SurfaceControl to the specified position relative to the parent
         * SurfaceControl
         * SurfaceControl. Assumes that the position values are finite. Otherwise, an
         * exception is thrown.
         *
         * @param sc The SurfaceControl to change position
         * @param x the X position
@@ -3384,6 +3385,8 @@ public final class SurfaceControl implements Parcelable {
        @NonNull
        public Transaction setPosition(@NonNull SurfaceControl sc, float x, float y) {
            checkPreconditions(sc);
            Preconditions.checkArgument(Float.isFinite(x), "Infinite x position");
            Preconditions.checkArgument(Float.isFinite(y), "Infinite y position");
            if (SurfaceControlRegistry.sCallStackDebuggingEnabled) {
                SurfaceControlRegistry.getProcessInstance().checkCallStackDebugging(
                        "setPosition", this, sc, "x=" + x + " y=" + y);
@@ -3620,6 +3623,10 @@ public final class SurfaceControl implements Parcelable {
        public Transaction setMatrix(SurfaceControl sc,
                float dsdx, float dtdx, float dtdy, float dsdy) {
            checkPreconditions(sc);
            Preconditions.checkArgument(Float.isFinite(dsdx), "Infinite matrix dsdx");
            Preconditions.checkArgument(Float.isFinite(dtdx), "Infinite matrix dtdx");
            Preconditions.checkArgument(Float.isFinite(dtdy), "Infinite matrix dtdy");
            Preconditions.checkArgument(Float.isFinite(dsdy), "Infinite matrix dsdy");
            if (SurfaceControlRegistry.sCallStackDebuggingEnabled) {
                SurfaceControlRegistry.getProcessInstance().checkCallStackDebugging(
                        "setMatrix", this, sc,
@@ -3632,7 +3639,7 @@ public final class SurfaceControl implements Parcelable {

        /**
         * Sets the transform and position of a {@link SurfaceControl} from a 3x3 transformation
         * matrix.
         * matrix. Assumes that the matrix values are finite. Otherwise, an exception is thrown.
         *
         * @param sc     SurfaceControl to set matrix of
         * @param matrix The matrix to apply.