diff --git a/apct-tests/perftests/core/Android.bp b/apct-tests/perftests/core/Android.bp index 23464f8795188..ab20fdbde1e59 100644 --- a/apct-tests/perftests/core/Android.bp +++ b/apct-tests/perftests/core/Android.bp @@ -43,6 +43,7 @@ android_test { "apct-perftests-resources-manager-apps", "apct-perftests-utils", "collector-device-lib", + "compatibility-device-util-axt", "core-tests-support", "guava", ], diff --git a/apct-tests/perftests/core/AndroidManifest.xml b/apct-tests/perftests/core/AndroidManifest.xml index 56fa70cfc2207..eb3fb891965ef 100644 --- a/apct-tests/perftests/core/AndroidManifest.xml +++ b/apct-tests/perftests/core/AndroidManifest.xml @@ -43,6 +43,16 @@ + + + + + + + + + diff --git a/apct-tests/perftests/core/src/android/view/HandwritingImeService.java b/apct-tests/perftests/core/src/android/view/HandwritingImeService.java new file mode 100644 index 0000000000000..27cb16e9a19f9 --- /dev/null +++ b/apct-tests/perftests/core/src/android/view/HandwritingImeService.java @@ -0,0 +1,32 @@ +/* + * Copyright (C) 2022 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.view; + +import android.content.ComponentName; +import android.inputmethodservice.InputMethodService; + +public class HandwritingImeService extends InputMethodService { + private static final String PACKAGE_NAME = "com.android.perftests.core"; + + private static ComponentName getComponentName() { + return new ComponentName(PACKAGE_NAME, HandwritingImeService.class.getName()); + } + + static String getImeId() { + return getComponentName().flattenToShortString(); + } +} diff --git a/apct-tests/perftests/core/src/android/view/HandwritingInitiatorPerfTest.java b/apct-tests/perftests/core/src/android/view/HandwritingInitiatorPerfTest.java index 123b2eeba5ddd..cf76334ceb109 100644 --- a/apct-tests/perftests/core/src/android/view/HandwritingInitiatorPerfTest.java +++ b/apct-tests/perftests/core/src/android/view/HandwritingInitiatorPerfTest.java @@ -22,7 +22,6 @@ import static android.view.MotionEvent.ACTION_UP; import static android.view.MotionEvent.TOOL_TYPE_FINGER; import static android.view.MotionEvent.TOOL_TYPE_STYLUS; - import android.app.Instrumentation; import android.content.Context; import android.perftests.utils.BenchmarkState; @@ -34,11 +33,15 @@ import androidx.test.filters.LargeTest; import androidx.test.platform.app.InstrumentationRegistry; import androidx.test.runner.AndroidJUnit4; +import com.android.compatibility.common.util.PollingCheck; + import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; +import java.util.concurrent.TimeUnit; + /** * Benchmark tests for {@link HandwritingInitiator} * @@ -56,11 +59,21 @@ public class HandwritingInitiatorPerfTest { public PerfStatusReporter mPerfStatusReporter = new PerfStatusReporter(); @Before - public void setup() { - final Instrumentation mInstrumentation = InstrumentationRegistry.getInstrumentation(); - mContext = mInstrumentation.getTargetContext(); + public void setup() throws Exception { + final Instrumentation instrumentation = InstrumentationRegistry.getInstrumentation(); + mContext = instrumentation.getTargetContext(); + + String imeId = HandwritingImeService.getImeId(); + instrumentation.getUiAutomation().executeShellCommand("ime enable " + imeId); + instrumentation.getUiAutomation().executeShellCommand("ime set " + imeId); + PollingCheck.check("Check that stylus handwriting is available", + TimeUnit.SECONDS.toMillis(10), + () -> mContext.getSystemService(InputMethodManager.class) + .isStylusHandwritingAvailable()); + final ViewConfiguration viewConfiguration = ViewConfiguration.get(mContext); mTouchSlop = viewConfiguration.getScaledTouchSlop(); + final InputMethodManager inputMethodManager = mContext.getSystemService(InputMethodManager.class); mHandwritingInitiator = new HandwritingInitiator(viewConfiguration, inputMethodManager);