Loading core/java/android/os/BatteryConsumer.java +1 −0 Original line number Diff line number Diff line Loading @@ -33,6 +33,7 @@ import java.util.ArrayList; * * @hide */ @android.ravenwood.annotation.RavenwoodKeepWholeClass public abstract class BatteryConsumer { private static final String TAG = "BatteryConsumer"; Loading core/java/com/android/internal/os/LongArrayMultiStateCounter.java +50 −12 Original line number Diff line number Diff line Loading @@ -55,15 +55,20 @@ import java.util.concurrent.atomic.AtomicReference; * * @hide */ @android.ravenwood.annotation.RavenwoodKeepWholeClass @android.ravenwood.annotation.RavenwoodNativeSubstitutionClass( "com.android.hoststubgen.nativesubstitution.LongArrayMultiStateCounter_host") public final class LongArrayMultiStateCounter implements Parcelable { /** * Container for a native equivalent of a long[]. */ @android.ravenwood.annotation.RavenwoodKeepWholeClass @android.ravenwood.annotation.RavenwoodNativeSubstitutionClass( "com.android.hoststubgen.nativesubstitution" + ".LongArrayMultiStateCounter_host$LongArrayContainer_host") public static class LongArrayContainer { private static final NativeAllocationRegistry sRegistry = NativeAllocationRegistry.createMalloced( LongArrayContainer.class.getClassLoader(), native_getReleaseFunc()); private static NativeAllocationRegistry sRegistry; // Visible to other objects in this package so that it can be passed to @CriticalNative // methods. Loading @@ -73,9 +78,26 @@ public final class LongArrayMultiStateCounter implements Parcelable { public LongArrayContainer(int length) { mLength = length; mNativeObject = native_init(length); registerNativeAllocation(); } @android.ravenwood.annotation.RavenwoodReplace private void registerNativeAllocation() { if (sRegistry == null) { synchronized (LongArrayMultiStateCounter.class) { if (sRegistry == null) { sRegistry = NativeAllocationRegistry.createMalloced( LongArrayContainer.class.getClassLoader(), native_getReleaseFunc()); } } } sRegistry.registerNativeAllocation(this, mNativeObject); } private void registerNativeAllocation$ravenwood() { // No-op under ravenwood } /** * Copies the supplied values into the underlying native array. */ Loading Loading @@ -124,19 +146,17 @@ public final class LongArrayMultiStateCounter implements Parcelable { private static native long native_getReleaseFunc(); @FastNative private native void native_setValues(long nativeObject, long[] array); private static native void native_setValues(long nativeObject, long[] array); @FastNative private native void native_getValues(long nativeObject, long[] array); private static native void native_getValues(long nativeObject, long[] array); @FastNative private native boolean native_combineValues(long nativeObject, long[] array, private static native boolean native_combineValues(long nativeObject, long[] array, int[] indexMap); } private static final NativeAllocationRegistry sRegistry = NativeAllocationRegistry.createMalloced( LongArrayMultiStateCounter.class.getClassLoader(), native_getReleaseFunc()); private static volatile NativeAllocationRegistry sRegistry; private static final AtomicReference<LongArrayContainer> sTmpArrayContainer = new AtomicReference<>(); Loading @@ -152,12 +172,30 @@ public final class LongArrayMultiStateCounter implements Parcelable { mStateCount = stateCount; mLength = arrayLength; mNativeObject = native_init(stateCount, arrayLength); registerNativeAllocation(); } @android.ravenwood.annotation.RavenwoodReplace private void registerNativeAllocation() { if (sRegistry == null) { synchronized (LongArrayMultiStateCounter.class) { if (sRegistry == null) { sRegistry = NativeAllocationRegistry.createMalloced( LongArrayMultiStateCounter.class.getClassLoader(), native_getReleaseFunc()); } } } sRegistry.registerNativeAllocation(this, mNativeObject); } private void registerNativeAllocation$ravenwood() { // No-op under ravenwood } private LongArrayMultiStateCounter(Parcel in) { mNativeObject = native_initFromParcel(in); sRegistry.registerNativeAllocation(this, mNativeObject); registerNativeAllocation(); mStateCount = native_getStateCount(mNativeObject); mLength = native_getArrayLength(mNativeObject); Loading Loading @@ -361,10 +399,10 @@ public final class LongArrayMultiStateCounter implements Parcelable { long longArrayContainerNativeObject, int state); @FastNative private native String native_toString(long nativeObject); private static native String native_toString(long nativeObject); @FastNative private native void native_writeToParcel(long nativeObject, Parcel dest, int flags); private static native void native_writeToParcel(long nativeObject, Parcel dest, int flags); @FastNative private static native long native_initFromParcel(Parcel parcel); Loading core/jni/com_android_internal_os_LongArrayMultiStateCounter.cpp +6 −6 Original line number Diff line number Diff line Loading @@ -107,7 +107,7 @@ static void native_getCounts(jlong nativePtr, jlong longArrayContainerNativePtr, *vector = counter->getCount(state); } static jobject native_toString(JNIEnv *env, jobject self, jlong nativePtr) { static jobject native_toString(JNIEnv *env, jclass, jlong nativePtr) { battery::LongArrayMultiStateCounter *counter = reinterpret_cast<battery::LongArrayMultiStateCounter *>(nativePtr); return env->NewStringUTF(counter->toString().c_str()); Loading @@ -127,7 +127,7 @@ static void throwWriteRE(JNIEnv *env, binder_status_t status) { } \ } static void native_writeToParcel(JNIEnv *env, jobject self, jlong nativePtr, jobject jParcel, static void native_writeToParcel(JNIEnv *env, jclass, jlong nativePtr, jobject jParcel, jint flags) { battery::LongArrayMultiStateCounter *counter = reinterpret_cast<battery::LongArrayMultiStateCounter *>(nativePtr); Loading Loading @@ -161,7 +161,7 @@ static void throwReadException(JNIEnv *env, binder_status_t status) { } \ } static jlong native_initFromParcel(JNIEnv *env, jclass theClass, jobject jParcel) { static jlong native_initFromParcel(JNIEnv *env, jclass, jobject jParcel) { ndk::ScopedAParcel parcel(AParcel_fromJavaParcel(env, jParcel)); int32_t stateCount; Loading Loading @@ -253,7 +253,7 @@ static jlong native_getReleaseFunc_LongArrayContainer() { return reinterpret_cast<jlong>(native_dispose_LongArrayContainer); } static void native_setValues_LongArrayContainer(JNIEnv *env, jobject self, jlong nativePtr, static void native_setValues_LongArrayContainer(JNIEnv *env, jclass, jlong nativePtr, jlongArray jarray) { std::vector<uint64_t> *vector = reinterpret_cast<std::vector<uint64_t> *>(nativePtr); ScopedLongArrayRO scopedArray(env, jarray); Loading @@ -264,7 +264,7 @@ static void native_setValues_LongArrayContainer(JNIEnv *env, jobject self, jlong std::copy(array, array + size, vector->data()); } static void native_getValues_LongArrayContainer(JNIEnv *env, jobject self, jlong nativePtr, static void native_getValues_LongArrayContainer(JNIEnv *env, jclass, jlong nativePtr, jlongArray jarray) { std::vector<uint64_t> *vector = reinterpret_cast<std::vector<uint64_t> *>(nativePtr); ScopedLongArrayRW scopedArray(env, jarray); Loading @@ -273,7 +273,7 @@ static void native_getValues_LongArrayContainer(JNIEnv *env, jobject self, jlong std::copy(vector->data(), vector->data() + vector->size(), scopedArray.get()); } static jboolean native_combineValues_LongArrayContainer(JNIEnv *env, jobject self, jlong nativePtr, static jboolean native_combineValues_LongArrayContainer(JNIEnv *env, jclass, jlong nativePtr, jlongArray jarray, jintArray jindexMap) { std::vector<uint64_t> *vector = reinterpret_cast<std::vector<uint64_t> *>(nativePtr); ScopedLongArrayRW scopedArray(env, jarray); Loading core/tests/coretests/Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -185,6 +185,7 @@ android_ravenwood_test { "src/android/os/BuildTest.java", "src/android/os/FileUtilsTest.java", "src/android/util/**/*.java", "src/com/android/internal/os/LongArrayMultiStateCounterTest.java", "src/com/android/internal/util/**/*.java", "testdoubles/src/com/android/internal/util/**/*.java", ], Loading ravenwood/ravenwood-annotation-allowed-classes.txt +3 −0 Original line number Diff line number Diff line # Only classes listed here can use the Ravenwood annotations. com.android.internal.util.ArrayUtils com.android.internal.os.LongArrayMultiStateCounter com.android.internal.os.LongArrayMultiStateCounter$LongArrayContainer android.util.AtomicFile android.util.DataUnit Loading @@ -22,6 +24,7 @@ android.util.SparseSetArray android.util.TimeUtils android.util.Xml android.os.BatteryConsumer android.os.Binder android.os.Binder$IdentitySupplier android.os.FileUtils Loading Loading
core/java/android/os/BatteryConsumer.java +1 −0 Original line number Diff line number Diff line Loading @@ -33,6 +33,7 @@ import java.util.ArrayList; * * @hide */ @android.ravenwood.annotation.RavenwoodKeepWholeClass public abstract class BatteryConsumer { private static final String TAG = "BatteryConsumer"; Loading
core/java/com/android/internal/os/LongArrayMultiStateCounter.java +50 −12 Original line number Diff line number Diff line Loading @@ -55,15 +55,20 @@ import java.util.concurrent.atomic.AtomicReference; * * @hide */ @android.ravenwood.annotation.RavenwoodKeepWholeClass @android.ravenwood.annotation.RavenwoodNativeSubstitutionClass( "com.android.hoststubgen.nativesubstitution.LongArrayMultiStateCounter_host") public final class LongArrayMultiStateCounter implements Parcelable { /** * Container for a native equivalent of a long[]. */ @android.ravenwood.annotation.RavenwoodKeepWholeClass @android.ravenwood.annotation.RavenwoodNativeSubstitutionClass( "com.android.hoststubgen.nativesubstitution" + ".LongArrayMultiStateCounter_host$LongArrayContainer_host") public static class LongArrayContainer { private static final NativeAllocationRegistry sRegistry = NativeAllocationRegistry.createMalloced( LongArrayContainer.class.getClassLoader(), native_getReleaseFunc()); private static NativeAllocationRegistry sRegistry; // Visible to other objects in this package so that it can be passed to @CriticalNative // methods. Loading @@ -73,9 +78,26 @@ public final class LongArrayMultiStateCounter implements Parcelable { public LongArrayContainer(int length) { mLength = length; mNativeObject = native_init(length); registerNativeAllocation(); } @android.ravenwood.annotation.RavenwoodReplace private void registerNativeAllocation() { if (sRegistry == null) { synchronized (LongArrayMultiStateCounter.class) { if (sRegistry == null) { sRegistry = NativeAllocationRegistry.createMalloced( LongArrayContainer.class.getClassLoader(), native_getReleaseFunc()); } } } sRegistry.registerNativeAllocation(this, mNativeObject); } private void registerNativeAllocation$ravenwood() { // No-op under ravenwood } /** * Copies the supplied values into the underlying native array. */ Loading Loading @@ -124,19 +146,17 @@ public final class LongArrayMultiStateCounter implements Parcelable { private static native long native_getReleaseFunc(); @FastNative private native void native_setValues(long nativeObject, long[] array); private static native void native_setValues(long nativeObject, long[] array); @FastNative private native void native_getValues(long nativeObject, long[] array); private static native void native_getValues(long nativeObject, long[] array); @FastNative private native boolean native_combineValues(long nativeObject, long[] array, private static native boolean native_combineValues(long nativeObject, long[] array, int[] indexMap); } private static final NativeAllocationRegistry sRegistry = NativeAllocationRegistry.createMalloced( LongArrayMultiStateCounter.class.getClassLoader(), native_getReleaseFunc()); private static volatile NativeAllocationRegistry sRegistry; private static final AtomicReference<LongArrayContainer> sTmpArrayContainer = new AtomicReference<>(); Loading @@ -152,12 +172,30 @@ public final class LongArrayMultiStateCounter implements Parcelable { mStateCount = stateCount; mLength = arrayLength; mNativeObject = native_init(stateCount, arrayLength); registerNativeAllocation(); } @android.ravenwood.annotation.RavenwoodReplace private void registerNativeAllocation() { if (sRegistry == null) { synchronized (LongArrayMultiStateCounter.class) { if (sRegistry == null) { sRegistry = NativeAllocationRegistry.createMalloced( LongArrayMultiStateCounter.class.getClassLoader(), native_getReleaseFunc()); } } } sRegistry.registerNativeAllocation(this, mNativeObject); } private void registerNativeAllocation$ravenwood() { // No-op under ravenwood } private LongArrayMultiStateCounter(Parcel in) { mNativeObject = native_initFromParcel(in); sRegistry.registerNativeAllocation(this, mNativeObject); registerNativeAllocation(); mStateCount = native_getStateCount(mNativeObject); mLength = native_getArrayLength(mNativeObject); Loading Loading @@ -361,10 +399,10 @@ public final class LongArrayMultiStateCounter implements Parcelable { long longArrayContainerNativeObject, int state); @FastNative private native String native_toString(long nativeObject); private static native String native_toString(long nativeObject); @FastNative private native void native_writeToParcel(long nativeObject, Parcel dest, int flags); private static native void native_writeToParcel(long nativeObject, Parcel dest, int flags); @FastNative private static native long native_initFromParcel(Parcel parcel); Loading
core/jni/com_android_internal_os_LongArrayMultiStateCounter.cpp +6 −6 Original line number Diff line number Diff line Loading @@ -107,7 +107,7 @@ static void native_getCounts(jlong nativePtr, jlong longArrayContainerNativePtr, *vector = counter->getCount(state); } static jobject native_toString(JNIEnv *env, jobject self, jlong nativePtr) { static jobject native_toString(JNIEnv *env, jclass, jlong nativePtr) { battery::LongArrayMultiStateCounter *counter = reinterpret_cast<battery::LongArrayMultiStateCounter *>(nativePtr); return env->NewStringUTF(counter->toString().c_str()); Loading @@ -127,7 +127,7 @@ static void throwWriteRE(JNIEnv *env, binder_status_t status) { } \ } static void native_writeToParcel(JNIEnv *env, jobject self, jlong nativePtr, jobject jParcel, static void native_writeToParcel(JNIEnv *env, jclass, jlong nativePtr, jobject jParcel, jint flags) { battery::LongArrayMultiStateCounter *counter = reinterpret_cast<battery::LongArrayMultiStateCounter *>(nativePtr); Loading Loading @@ -161,7 +161,7 @@ static void throwReadException(JNIEnv *env, binder_status_t status) { } \ } static jlong native_initFromParcel(JNIEnv *env, jclass theClass, jobject jParcel) { static jlong native_initFromParcel(JNIEnv *env, jclass, jobject jParcel) { ndk::ScopedAParcel parcel(AParcel_fromJavaParcel(env, jParcel)); int32_t stateCount; Loading Loading @@ -253,7 +253,7 @@ static jlong native_getReleaseFunc_LongArrayContainer() { return reinterpret_cast<jlong>(native_dispose_LongArrayContainer); } static void native_setValues_LongArrayContainer(JNIEnv *env, jobject self, jlong nativePtr, static void native_setValues_LongArrayContainer(JNIEnv *env, jclass, jlong nativePtr, jlongArray jarray) { std::vector<uint64_t> *vector = reinterpret_cast<std::vector<uint64_t> *>(nativePtr); ScopedLongArrayRO scopedArray(env, jarray); Loading @@ -264,7 +264,7 @@ static void native_setValues_LongArrayContainer(JNIEnv *env, jobject self, jlong std::copy(array, array + size, vector->data()); } static void native_getValues_LongArrayContainer(JNIEnv *env, jobject self, jlong nativePtr, static void native_getValues_LongArrayContainer(JNIEnv *env, jclass, jlong nativePtr, jlongArray jarray) { std::vector<uint64_t> *vector = reinterpret_cast<std::vector<uint64_t> *>(nativePtr); ScopedLongArrayRW scopedArray(env, jarray); Loading @@ -273,7 +273,7 @@ static void native_getValues_LongArrayContainer(JNIEnv *env, jobject self, jlong std::copy(vector->data(), vector->data() + vector->size(), scopedArray.get()); } static jboolean native_combineValues_LongArrayContainer(JNIEnv *env, jobject self, jlong nativePtr, static jboolean native_combineValues_LongArrayContainer(JNIEnv *env, jclass, jlong nativePtr, jlongArray jarray, jintArray jindexMap) { std::vector<uint64_t> *vector = reinterpret_cast<std::vector<uint64_t> *>(nativePtr); ScopedLongArrayRW scopedArray(env, jarray); Loading
core/tests/coretests/Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -185,6 +185,7 @@ android_ravenwood_test { "src/android/os/BuildTest.java", "src/android/os/FileUtilsTest.java", "src/android/util/**/*.java", "src/com/android/internal/os/LongArrayMultiStateCounterTest.java", "src/com/android/internal/util/**/*.java", "testdoubles/src/com/android/internal/util/**/*.java", ], Loading
ravenwood/ravenwood-annotation-allowed-classes.txt +3 −0 Original line number Diff line number Diff line # Only classes listed here can use the Ravenwood annotations. com.android.internal.util.ArrayUtils com.android.internal.os.LongArrayMultiStateCounter com.android.internal.os.LongArrayMultiStateCounter$LongArrayContainer android.util.AtomicFile android.util.DataUnit Loading @@ -22,6 +24,7 @@ android.util.SparseSetArray android.util.TimeUtils android.util.Xml android.os.BatteryConsumer android.os.Binder android.os.Binder$IdentitySupplier android.os.FileUtils Loading