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

Commit d808fab4 authored by Victor Chang's avatar Victor Chang Committed by Gerrit Code Review
Browse files

Merge "Avoid mockito in MotionPredictorBenchmark" into main

parents bf88ecf8 b1bf611b
Loading
Loading
Loading
Loading
+3 −20
Original line number Diff line number Diff line
@@ -16,8 +16,6 @@

package android.input

import android.content.Context
import android.content.res.Resources
import android.os.SystemProperties
import android.perftests.utils.PerfStatusReporter
import android.view.InputDevice
@@ -38,8 +36,6 @@ import org.junit.Before
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.Mockito.mock
import org.mockito.Mockito.`when`

import java.time.Duration

@@ -68,18 +64,6 @@ private fun getStylusMotionEvent(
                InputDevice.SOURCE_STYLUS, /*flags=*/0)
}

private fun getPredictionContext(offset: Duration, enablePrediction: Boolean): Context {
    val context = mock(Context::class.java)
    val resources: Resources = mock(Resources::class.java)
    `when`(context.getResources()).thenReturn(resources)
    `when`(resources.getInteger(
            com.android.internal.R.integer.config_motionPredictionOffsetNanos)).thenReturn(
                offset.toNanos().toInt())
    `when`(resources.getBoolean(
            com.android.internal.R.bool.config_enableMotionPrediction)).thenReturn(enablePrediction)
    return context
}

@RunWith(AndroidJUnit4::class)
@LargeTest
class MotionPredictorBenchmark {
@@ -115,7 +99,7 @@ class MotionPredictorBenchmark {
        var eventPosition = 0f
        val positionInterval = 10f

        val predictor = MotionPredictor(getPredictionContext(offset, /*enablePrediction=*/true))
        val predictor = MotionPredictor(/*isPredictionEnabled=*/true, offset.toNanos().toInt())
        // ACTION_DOWN t=0 x=0 y=0
        predictor.record(getStylusMotionEvent(
            eventTime, ACTION_DOWN, /*x=*/eventPosition, /*y=*/eventPosition))
@@ -141,12 +125,11 @@ class MotionPredictorBenchmark {
     */
    @Test
    fun timeCreatePredictor() {
        val context = getPredictionContext(
                /*offset=*/Duration.ofMillis(20), /*enablePrediction=*/true)
        val offsetNanos = Duration.ofMillis(20).toNanos().toInt()

        val state = perfStatusReporter.getBenchmarkState()
        while (state.keepRunning()) {
            MotionPredictor(context)
            MotionPredictor(/*isPredictionEnabled=*/true, offsetNanos)
        }
    }
}
+17 −5
Original line number Diff line number Diff line
@@ -20,6 +20,8 @@ import android.annotation.NonNull;
import android.annotation.Nullable;
import android.content.Context;

import com.android.internal.annotations.VisibleForTesting;

import libcore.util.NativeAllocationRegistry;

/**
@@ -57,11 +59,21 @@ public final class MotionPredictor {
     * @param context The context for the predictions
     */
    public MotionPredictor(@NonNull Context context) {
        mIsPredictionEnabled = context.getResources().getBoolean(
                com.android.internal.R.bool.config_enableMotionPrediction);
        final int offsetNanos = context.getResources().getInteger(
                com.android.internal.R.integer.config_motionPredictionOffsetNanos);
        mPtr = nativeInitialize(offsetNanos);
        this(
                context.getResources().getBoolean(
                        com.android.internal.R.bool.config_enableMotionPrediction),
                context.getResources().getInteger(
                        com.android.internal.R.integer.config_motionPredictionOffsetNanos));
    }

    /**
     * Internal constructor for testing.
     * @hide
     */
    @VisibleForTesting
    public MotionPredictor(boolean isPredictionEnabled, int motionPredictionOffsetNanos) {
        mIsPredictionEnabled = isPredictionEnabled;
        mPtr = nativeInitialize(motionPredictionOffsetNanos);
        RegistryHolder.REGISTRY.registerNativeAllocation(this, mPtr);
    }