More android.util in Ravenwood, supported by CTS.
Ravenwood is taking a stance that available behavior should be
covered by CTS, so that we can confirm that we don't diverge from
how a real device behaves.
This is a mechanical change that adds more android.util classes
that are already well-covered by existing CTS.
Bug: 292141694
Test: atest-dev CtsUtilTestCasesRavenwood
Change-Id: Ie93ff7a93d700119982e9e0b504f67593a3ba800
diff --git a/core/java/android/util/ArraySet.java b/core/java/android/util/ArraySet.java
index 73114e2..adebe2c 100644
--- a/core/java/android/util/ArraySet.java
+++ b/core/java/android/util/ArraySet.java
@@ -20,8 +20,6 @@
import android.annotation.TestApi;
import android.compat.annotation.UnsupportedAppUsage;
-import libcore.util.EmptyArray;
-
import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.Collection;
diff --git a/core/java/android/util/IntArray.java b/core/java/android/util/IntArray.java
index ac76fc2..c04a71c 100644
--- a/core/java/android/util/IntArray.java
+++ b/core/java/android/util/IntArray.java
@@ -19,8 +19,6 @@
import com.android.internal.util.ArrayUtils;
import com.android.internal.util.Preconditions;
-import libcore.util.EmptyArray;
-
import java.util.Arrays;
/**
diff --git a/core/java/android/util/LongArray.java b/core/java/android/util/LongArray.java
index 9f269ed..3101c0d 100644
--- a/core/java/android/util/LongArray.java
+++ b/core/java/android/util/LongArray.java
@@ -23,8 +23,6 @@
import com.android.internal.util.ArrayUtils;
import com.android.internal.util.Preconditions;
-import libcore.util.EmptyArray;
-
import java.util.Arrays;
/**
diff --git a/core/java/android/util/LongArrayQueue.java b/core/java/android/util/LongArrayQueue.java
index 5c701db..354f8df 100644
--- a/core/java/android/util/LongArrayQueue.java
+++ b/core/java/android/util/LongArrayQueue.java
@@ -19,8 +19,6 @@
import com.android.internal.util.ArrayUtils;
import com.android.internal.util.GrowingArrayUtils;
-import libcore.util.EmptyArray;
-
import java.util.NoSuchElementException;
/**
diff --git a/core/java/android/util/LongSparseArray.java b/core/java/android/util/LongSparseArray.java
index 2f14b25..8402ab2 100644
--- a/core/java/android/util/LongSparseArray.java
+++ b/core/java/android/util/LongSparseArray.java
@@ -24,8 +24,6 @@
import com.android.internal.util.Preconditions;
import com.android.internal.util.function.LongObjPredicate;
-import libcore.util.EmptyArray;
-
import java.util.Arrays;
import java.util.Objects;
diff --git a/core/java/android/util/LongSparseLongArray.java b/core/java/android/util/LongSparseLongArray.java
index f23ec91..d4a0126 100644
--- a/core/java/android/util/LongSparseLongArray.java
+++ b/core/java/android/util/LongSparseLongArray.java
@@ -23,8 +23,6 @@
import com.android.internal.util.GrowingArrayUtils;
import com.android.internal.util.Preconditions;
-import libcore.util.EmptyArray;
-
/**
* Map of {@code long} to {@code long}. Unlike a normal array of longs, there
* can be gaps in the indices. It is intended to be more memory efficient than using a
diff --git a/core/java/android/util/Range.java b/core/java/android/util/Range.java
index 41c171a..750696b 100644
--- a/core/java/android/util/Range.java
+++ b/core/java/android/util/Range.java
@@ -19,7 +19,8 @@
import static com.android.internal.util.Preconditions.*;
import android.annotation.Nullable;
-import android.hardware.camera2.utils.HashCodeHelpers;
+
+import java.util.Objects;
/**
* Immutable class for describing the range of two numeric values.
@@ -351,7 +352,7 @@
*/
@Override
public int hashCode() {
- return HashCodeHelpers.hashCodeGeneric(mLower, mUpper);
+ return Objects.hash(mLower, mUpper);
}
private final T mLower;
diff --git a/core/java/android/util/SparseArray.java b/core/java/android/util/SparseArray.java
index cd03d83..c18cac3 100644
--- a/core/java/android/util/SparseArray.java
+++ b/core/java/android/util/SparseArray.java
@@ -22,8 +22,6 @@
import com.android.internal.util.ArrayUtils;
import com.android.internal.util.GrowingArrayUtils;
-import libcore.util.EmptyArray;
-
import java.util.Objects;
/**
diff --git a/core/java/android/util/SparseBooleanArray.java b/core/java/android/util/SparseBooleanArray.java
index 12a9900..795f4c9 100644
--- a/core/java/android/util/SparseBooleanArray.java
+++ b/core/java/android/util/SparseBooleanArray.java
@@ -22,8 +22,6 @@
import com.android.internal.util.ArrayUtils;
import com.android.internal.util.GrowingArrayUtils;
-import libcore.util.EmptyArray;
-
/**
* SparseBooleanArrays map integers to booleans.
* Unlike a normal array of booleans
diff --git a/core/java/android/util/SparseIntArray.java b/core/java/android/util/SparseIntArray.java
index 0e98c28..24d04be 100644
--- a/core/java/android/util/SparseIntArray.java
+++ b/core/java/android/util/SparseIntArray.java
@@ -21,8 +21,6 @@
import com.android.internal.util.ArrayUtils;
import com.android.internal.util.GrowingArrayUtils;
-import libcore.util.EmptyArray;
-
import java.util.Arrays;
/**
diff --git a/core/java/android/util/SparseLongArray.java b/core/java/android/util/SparseLongArray.java
index e86b647..4b257e6 100644
--- a/core/java/android/util/SparseLongArray.java
+++ b/core/java/android/util/SparseLongArray.java
@@ -19,8 +19,6 @@
import com.android.internal.util.ArrayUtils;
import com.android.internal.util.GrowingArrayUtils;
-import libcore.util.EmptyArray;
-
/**
* SparseLongArrays map integers to longs. Unlike a normal array of longs,
* there can be gaps in the indices. It is intended to be more memory efficient
diff --git a/core/java/com/android/internal/util/ArrayUtils.java b/core/java/com/android/internal/util/ArrayUtils.java
index b64771b..54f1cbf 100644
--- a/core/java/com/android/internal/util/ArrayUtils.java
+++ b/core/java/com/android/internal/util/ArrayUtils.java
@@ -84,6 +84,38 @@
return (T[])VMRuntime.getRuntime().newUnpaddedArray(clazz, minLen);
}
+ public static byte[] newUnpaddedByteArray$ravenwood(int minLen) {
+ return new byte[minLen];
+ }
+
+ public static char[] newUnpaddedCharArray$ravenwood(int minLen) {
+ return new char[minLen];
+ }
+
+ public static int[] newUnpaddedIntArray$ravenwood(int minLen) {
+ return new int[minLen];
+ }
+
+ public static boolean[] newUnpaddedBooleanArray$ravenwood(int minLen) {
+ return new boolean[minLen];
+ }
+
+ public static long[] newUnpaddedLongArray$ravenwood(int minLen) {
+ return new long[minLen];
+ }
+
+ public static float[] newUnpaddedFloatArray$ravenwood(int minLen) {
+ return new float[minLen];
+ }
+
+ public static Object[] newUnpaddedObjectArray$ravenwood(int minLen) {
+ return new Object[minLen];
+ }
+
+ public static <T> T[] newUnpaddedArray$ravenwood(Class<T> clazz, int minLen) {
+ return (T[]) Array.newInstance(clazz, minLen);
+ }
+
/**
* Checks if the beginnings of two byte arrays are equal.
*
diff --git a/framework-minus-apex-ravenwood-policies.txt b/framework-minus-apex-ravenwood-policies.txt
index c3ca122..6ffa338 100644
--- a/framework-minus-apex-ravenwood-policies.txt
+++ b/framework-minus-apex-ravenwood-policies.txt
@@ -1,11 +1,75 @@
# Ravenwood "policy" file for framework-minus-apex.
+# Collections
class android.util.ArrayMap stubclass
+class android.util.ArraySet stubclass
+class android.util.LongSparseArray stubclass
+class android.util.SparseArrayMap stubclass
+class android.util.SparseArray stubclass
+class android.util.SparseBooleanArray stubclass
+class android.util.SparseIntArray stubclass
+class android.util.SparseLongArray stubclass
class android.util.ContainerHelpers stubclass
class android.util.EmptyArray stubclass
class android.util.MapCollections stubclass
+# Logging
class android.util.Log stubclass
class android.util.Log !com.android.hoststubgen.nativesubstitution.Log_host
+class android.util.LogPrinter stubclass
+# String Manipulation
+class android.util.Printer stubclass
+class android.util.PrintStreamPrinter stubclass
+class android.util.PrintWriterPrinter stubclass
+class android.util.StringBuilderPrinter stubclass
+
+# Properties
+class android.util.Property stubclass
+class android.util.FloatProperty stubclass
+class android.util.IntProperty stubclass
+class android.util.NoSuchPropertyException stubclass
+class android.util.ReflectiveProperty stubclass
+
+# Exceptions
+class android.util.AndroidException stubclass
+class android.util.AndroidRuntimeException stubclass
+
+# JSON
+class android.util.JsonReader stubclass
+class android.util.JsonWriter stubclass
+class android.util.MalformedJsonException stubclass
+
+# Data Holders
+class android.util.MutableFloat stubclass
+class android.util.MutableShort stubclass
+class android.util.MutableBoolean stubclass
+class android.util.MutableByte stubclass
+class android.util.MutableChar stubclass
+class android.util.MutableDouble stubclass
+class android.util.Range stubclass
+class android.util.Rational stubclass
+class android.util.Size stubclass
+class android.util.SizeF stubclass
+
+# Misc
+class android.util.Dumpable stubclass
+class android.util.DebugUtils stubclass
+class android.util.UtilConfig stubclass
+class android.util.Patterns stubclass
+
+# Internals
+class com.android.internal.util.ArrayUtils stubclass
+ method newUnpaddedByteArray (I)[B @newUnpaddedByteArray$ravenwood
+ method newUnpaddedCharArray (I)[C @newUnpaddedCharArray$ravenwood
+ method newUnpaddedIntArray (I)[I @newUnpaddedIntArray$ravenwood
+ method newUnpaddedBooleanArray (I)[Z @newUnpaddedBooleanArray$ravenwood
+ method newUnpaddedLongArray (I)[J @newUnpaddedLongArray$ravenwood
+ method newUnpaddedFloatArray (I)[F @newUnpaddedFloatArray$ravenwood
+ method newUnpaddedObjectArray (I)[Ljava/lang/Object; @newUnpaddedObjectArray$ravenwood
+ method newUnpaddedArray (Ljava/lang/Class;I)[Ljava/lang/Object; @newUnpaddedArray$ravenwood
+
+class com.android.internal.util.GrowingArrayUtils stubclass
class com.android.internal.util.LineBreakBufferedWriter stubclass
+class com.android.internal.util.Preconditions stubclass
+class com.android.internal.util.StringPool stubclass