diff --git a/core/java/android/view/SurfaceControl.java b/core/java/android/view/SurfaceControl.java index 64f5668d8c141..f3c65eae8ba84 100644 --- a/core/java/android/view/SurfaceControl.java +++ b/core/java/android/view/SurfaceControl.java @@ -64,6 +64,7 @@ import android.util.proto.ProtoOutputStream; import android.view.Surface.OutOfResourcesException; import com.android.internal.annotations.GuardedBy; +import com.android.internal.util.Preconditions; import com.android.internal.util.VirtualRefBasePtr; import dalvik.system.CloseGuard; @@ -2961,6 +2962,8 @@ public final class SurfaceControl implements Parcelable { @NonNull public Transaction setScale(@NonNull SurfaceControl sc, float scaleX, float scaleY) { checkPreconditions(sc); + Preconditions.checkArgument(scaleX >= 0, "Negative value passed in for scaleX"); + Preconditions.checkArgument(scaleY >= 0, "Negative value passed in for scaleY"); nativeSetScale(mNativeObject, sc.mNativeObject, scaleX, scaleY); return this; } @@ -3205,6 +3208,7 @@ public final class SurfaceControl implements Parcelable { public @NonNull Transaction setCrop(@NonNull SurfaceControl sc, @Nullable Rect crop) { checkPreconditions(sc); if (crop != null) { + Preconditions.checkArgument(crop.isValid(), "Crop isn't valid."); nativeSetWindowCrop(mNativeObject, sc.mNativeObject, crop.left, crop.top, crop.right, crop.bottom); } else { diff --git a/graphics/java/android/graphics/Rect.java b/graphics/java/android/graphics/Rect.java index 7e68bc06d506b..1a522bd5e7947 100644 --- a/graphics/java/android/graphics/Rect.java +++ b/graphics/java/android/graphics/Rect.java @@ -290,6 +290,14 @@ public final class Rect implements Parcelable { return left >= right || top >= bottom; } + /** + * @return {@code true} if the rectangle is valid (left <= right and top <= bottom). + * @hide + */ + public boolean isValid() { + return left <= right && top <= bottom; + } + /** * @return the rectangle's width. This does not check for a valid rectangle * (i.e. left <= right) so the result may be negative.