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

Commit 16bd911a authored by Jeff Sharkey's avatar Jeff Sharkey Committed by Android (Google) Code Review
Browse files

Merge "Migrate MultiStateStatsTest to Ravenwood" into main

parents 773dbfea 31c519f8
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@ import java.util.ArrayList;
 *
 * @hide
 */
@android.ravenwood.annotation.RavenwoodKeepWholeClass
public abstract class BatteryConsumer {

    private static final String TAG = "BatteryConsumer";
+50 −12
Original line number Diff line number Diff line
@@ -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.
@@ -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.
         */
@@ -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<>();

@@ -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);
@@ -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);
+6 −6
Original line number Diff line number Diff line
@@ -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());
@@ -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);
@@ -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;
@@ -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);
@@ -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);
@@ -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);
+1 −0
Original line number Diff line number Diff line
@@ -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",
    ],
+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
@@ -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