diff options
Diffstat (limited to 'tests')
17 files changed, 267 insertions, 205 deletions
diff --git a/tests/AppJankTest/src/android/app/jank/tests/IntegrationTests.java b/tests/AppJankTest/src/android/app/jank/tests/IntegrationTests.java index 34f0c191ecf5..fe9f63615757 100644 --- a/tests/AppJankTest/src/android/app/jank/tests/IntegrationTests.java +++ b/tests/AppJankTest/src/android/app/jank/tests/IntegrationTests.java @@ -76,6 +76,7 @@ public class IntegrationTests { private ActivityTestRule<EmptyActivity> mEmptyActivityRule = new ActivityTestRule<>(EmptyActivity.class, false , true); + @Before public void setUp() { mInstrumentation = InstrumentationRegistry.getInstrumentation(); @@ -163,7 +164,7 @@ public class IntegrationTests { // of that state. for (int i = 0; i < uiStates.size(); i++) { StateTracker.StateData stateData = uiStates.get(i); - if (stateData.mWidgetCategory.equals(AppJankStats.ANIMATION)) { + if (stateData.mWidgetCategory.equals(AppJankStats.WIDGET_CATEGORY_ANIMATION)) { assertNotEquals(Long.MAX_VALUE, stateData.mVsyncIdEnd); } } diff --git a/tests/AppJankTest/src/android/app/jank/tests/JankDataProcessorTest.java b/tests/AppJankTest/src/android/app/jank/tests/JankDataProcessorTest.java index 30c568be7716..c90595782cd1 100644 --- a/tests/AppJankTest/src/android/app/jank/tests/JankDataProcessorTest.java +++ b/tests/AppJankTest/src/android/app/jank/tests/JankDataProcessorTest.java @@ -215,7 +215,8 @@ public class JankDataProcessorTest { assertEquals(jankStats.getJankyFrameCount() * 2, pendingStat.getJankyFrames()); assertEquals(jankStats.getTotalFrameCount() * 2, pendingStat.getTotalFrames()); - int[] originalHistogramBuckets = jankStats.getFrameOverrunHistogram().getBucketCounters(); + int[] originalHistogramBuckets = + jankStats.getRelativeFrameTimeHistogram().getBucketCounters(); int[] frameOverrunBuckets = pendingStat.getFrameOverrunBuckets(); for (int i = 0; i < frameOverrunBuckets.length; i++) { diff --git a/tests/AppJankTest/src/android/app/jank/tests/JankUtils.java b/tests/AppJankTest/src/android/app/jank/tests/JankUtils.java index 0b4d97ed20d6..df92898d76b1 100644 --- a/tests/AppJankTest/src/android/app/jank/tests/JankUtils.java +++ b/tests/AppJankTest/src/android/app/jank/tests/JankUtils.java @@ -17,7 +17,7 @@ package android.app.jank.tests; import android.app.jank.AppJankStats; -import android.app.jank.FrameOverrunHistogram; +import android.app.jank.RelativeFrameTimeHistogram; public class JankUtils { private static final int APP_ID = 25; @@ -29,8 +29,8 @@ public class JankUtils { AppJankStats jankStats = new AppJankStats( /*App Uid*/APP_ID, /*Widget Id*/"test widget id", - /*Widget Category*/AppJankStats.SCROLL, - /*Widget State*/AppJankStats.SCROLLING, + /*Widget Category*/AppJankStats.WIDGET_CATEGORY_SCROLL, + /*Widget State*/AppJankStats.WIDGET_STATE_SCROLLING, /*Total Frames*/100, /*Janky Frames*/25, getOverrunHistogram() @@ -41,12 +41,12 @@ public class JankUtils { /** * Returns a mock histogram to be used with an AppJankStats object. */ - public static FrameOverrunHistogram getOverrunHistogram() { - FrameOverrunHistogram overrunHistogram = new FrameOverrunHistogram(); - overrunHistogram.addFrameOverrunMillis(-2); - overrunHistogram.addFrameOverrunMillis(1); - overrunHistogram.addFrameOverrunMillis(5); - overrunHistogram.addFrameOverrunMillis(25); + public static RelativeFrameTimeHistogram getOverrunHistogram() { + RelativeFrameTimeHistogram overrunHistogram = new RelativeFrameTimeHistogram(); + overrunHistogram.addRelativeFrameTimeMillis(-2); + overrunHistogram.addRelativeFrameTimeMillis(1); + overrunHistogram.addRelativeFrameTimeMillis(5); + overrunHistogram.addRelativeFrameTimeMillis(25); return overrunHistogram; } } diff --git a/tests/AppJankTest/src/android/app/jank/tests/TestWidget.java b/tests/AppJankTest/src/android/app/jank/tests/TestWidget.java index 5fff46038ead..71796d64ddee 100644 --- a/tests/AppJankTest/src/android/app/jank/tests/TestWidget.java +++ b/tests/AppJankTest/src/android/app/jank/tests/TestWidget.java @@ -45,8 +45,8 @@ public class TestWidget extends View { */ public void simulateAnimationStarting() { if (jankTrackerCreated()) { - mJankTracker.addUiState(AppJankStats.ANIMATION, - Integer.toString(this.getId()), AppJankStats.ANIMATING); + mJankTracker.addUiState(AppJankStats.WIDGET_CATEGORY_ANIMATION, + Integer.toString(this.getId()), AppJankStats.WIDGET_STATE_ANIMATING); } } @@ -55,8 +55,8 @@ public class TestWidget extends View { */ public void simulateAnimationEnding() { if (jankTrackerCreated()) { - mJankTracker.removeUiState(AppJankStats.ANIMATION, - Integer.toString(this.getId()), AppJankStats.ANIMATING); + mJankTracker.removeUiState(AppJankStats.WIDGET_CATEGORY_ANIMATION, + Integer.toString(this.getId()), AppJankStats.WIDGET_STATE_ANIMATING); } } diff --git a/tests/CtsSurfaceControlTestsStaging/src/main/java/android/view/surfacecontroltests/GraphicsActivity.java b/tests/CtsSurfaceControlTestsStaging/src/main/java/android/view/surfacecontroltests/GraphicsActivity.java index 700856c50bae..14c8de8db5fc 100644 --- a/tests/CtsSurfaceControlTestsStaging/src/main/java/android/view/surfacecontroltests/GraphicsActivity.java +++ b/tests/CtsSurfaceControlTestsStaging/src/main/java/android/view/surfacecontroltests/GraphicsActivity.java @@ -819,7 +819,7 @@ public class GraphicsActivity extends Activity { private List<Float> getExpectedFrameRateForCompatibility(int compatibility) { assumeTrue("**** testSurfaceControlFrameRateCompatibility SKIPPED for compatibility " + compatibility, - compatibility == Surface.FRAME_RATE_COMPATIBILITY_GTE); + compatibility == Surface.FRAME_RATE_COMPATIBILITY_AT_LEAST); Display display = getDisplay(); List<Float> expectedFrameRates = getRefreshRates(display.getMode(), display) diff --git a/tests/CtsSurfaceControlTestsStaging/src/main/java/android/view/surfacecontroltests/SurfaceControlTest.java b/tests/CtsSurfaceControlTestsStaging/src/main/java/android/view/surfacecontroltests/SurfaceControlTest.java index 4d4827676c74..f1d4dc6b8faf 100644 --- a/tests/CtsSurfaceControlTestsStaging/src/main/java/android/view/surfacecontroltests/SurfaceControlTest.java +++ b/tests/CtsSurfaceControlTestsStaging/src/main/java/android/view/surfacecontroltests/SurfaceControlTest.java @@ -85,7 +85,8 @@ public class SurfaceControlTest { @Test public void testSurfaceControlFrameRateCompatibilityGte() throws InterruptedException { GraphicsActivity activity = mActivityRule.getActivity(); - activity.testSurfaceControlFrameRateCompatibility(Surface.FRAME_RATE_COMPATIBILITY_GTE); + activity.testSurfaceControlFrameRateCompatibility( + Surface.FRAME_RATE_COMPATIBILITY_AT_LEAST); } @Test diff --git a/tests/FlickerTests/test-apps/app-helpers/src/com/android/server/wm/flicker/helpers/BottomHalfPipAppHelper.kt b/tests/FlickerTests/test-apps/app-helpers/src/com/android/server/wm/flicker/helpers/BottomHalfPipAppHelper.kt index 6573c2c83f20..ed2cff4a9515 100644 --- a/tests/FlickerTests/test-apps/app-helpers/src/com/android/server/wm/flicker/helpers/BottomHalfPipAppHelper.kt +++ b/tests/FlickerTests/test-apps/app-helpers/src/com/android/server/wm/flicker/helpers/BottomHalfPipAppHelper.kt @@ -19,6 +19,7 @@ package com.android.server.wm.flicker.helpers import android.app.Instrumentation import android.content.Intent import android.tools.traces.parsers.toFlickerComponent +import android.tools.traces.parsers.WindowManagerStateHelper import com.android.server.wm.flicker.testapp.ActivityOptions class BottomHalfPipAppHelper( @@ -38,4 +39,14 @@ class BottomHalfPipAppHelper( ActivityOptions.BottomHalfPip.COMPONENT } } + + override fun exitPipToOriginalTaskViaIntent(wmHelper: WindowManagerStateHelper) { + launchViaIntent( + wmHelper, + Intent().apply { + component = ActivityOptions.BottomHalfPip.COMPONENT + addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) + } + ) + } }
\ No newline at end of file diff --git a/tests/FlickerTests/test-apps/app-helpers/src/com/android/server/wm/flicker/helpers/DesktopModeAppHelper.kt b/tests/FlickerTests/test-apps/app-helpers/src/com/android/server/wm/flicker/helpers/DesktopModeAppHelper.kt index 2e7b20763b9e..0824874f2a36 100644 --- a/tests/FlickerTests/test-apps/app-helpers/src/com/android/server/wm/flicker/helpers/DesktopModeAppHelper.kt +++ b/tests/FlickerTests/test-apps/app-helpers/src/com/android/server/wm/flicker/helpers/DesktopModeAppHelper.kt @@ -28,7 +28,9 @@ import android.tools.device.apphelpers.IStandardAppHelper import android.tools.helpers.SYSTEMUI_PACKAGE import android.tools.traces.parsers.WindowManagerStateHelper import android.tools.traces.wm.WindowingMode +import android.view.KeyEvent.KEYCODE_EQUALS import android.view.KeyEvent.KEYCODE_LEFT_BRACKET +import android.view.KeyEvent.KEYCODE_MINUS import android.view.KeyEvent.KEYCODE_RIGHT_BRACKET import android.view.KeyEvent.META_META_ON import android.view.WindowInsets @@ -146,10 +148,19 @@ open class DesktopModeAppHelper(private val innerHelper: IStandardAppHelper) : } /** Click maximise button on the app header for the given app. */ - fun maximiseDesktopApp(wmHelper: WindowManagerStateHelper, device: UiDevice) { - val caption = getCaptionForTheApp(wmHelper, device) - val maximizeButton = getMaximizeButtonForTheApp(caption) - maximizeButton.click() + fun maximiseDesktopApp( + wmHelper: WindowManagerStateHelper, + device: UiDevice, + usingKeyboard: Boolean = false + ) { + if (usingKeyboard) { + val keyEventHelper = KeyEventHelper(getInstrumentation()) + keyEventHelper.press(KEYCODE_EQUALS, META_META_ON) + } else { + val caption = getCaptionForTheApp(wmHelper, device) + val maximizeButton = getMaximizeButtonForTheApp(caption) + maximizeButton.click() + } wmHelper.StateSyncBuilder().withAppTransitionIdle().waitForAndVerify() } @@ -160,10 +171,21 @@ open class DesktopModeAppHelper(private val innerHelper: IStandardAppHelper) : ?: error("Unable to find resource $MINIMIZE_BUTTON_VIEW\n") } - fun minimizeDesktopApp(wmHelper: WindowManagerStateHelper, device: UiDevice, isPip: Boolean = false) { - val caption = getCaptionForTheApp(wmHelper, device) - val minimizeButton = getMinimizeButtonForTheApp(caption) - minimizeButton.click() + fun minimizeDesktopApp( + wmHelper: WindowManagerStateHelper, + device: UiDevice, + isPip: Boolean = false, + usingKeyboard: Boolean = false, + ) { + if (usingKeyboard) { + val keyEventHelper = KeyEventHelper(getInstrumentation()) + keyEventHelper.press(KEYCODE_MINUS, META_META_ON) + } else { + val caption = getCaptionForTheApp(wmHelper, device) + val minimizeButton = getMinimizeButtonForTheApp(caption) + minimizeButton.click() + } + wmHelper .StateSyncBuilder() .withAppTransitionIdle() @@ -226,8 +248,7 @@ open class DesktopModeAppHelper(private val innerHelper: IStandardAppHelper) : toLeft: Boolean, ) { val bracketKey = if (toLeft) KEYCODE_LEFT_BRACKET else KEYCODE_RIGHT_BRACKET - keyEventHelper.actionDown(bracketKey, META_META_ON) - keyEventHelper.actionUp(bracketKey, META_META_ON) + keyEventHelper.press(bracketKey, META_META_ON) waitAndVerifySnapResize(wmHelper, context, toLeft) } diff --git a/tests/FlickerTests/test-apps/app-helpers/src/com/android/server/wm/flicker/helpers/KeyEventHelper.kt b/tests/FlickerTests/test-apps/app-helpers/src/com/android/server/wm/flicker/helpers/KeyEventHelper.kt index ebd8cc3ce1b4..55ed09154aee 100644 --- a/tests/FlickerTests/test-apps/app-helpers/src/com/android/server/wm/flicker/helpers/KeyEventHelper.kt +++ b/tests/FlickerTests/test-apps/app-helpers/src/com/android/server/wm/flicker/helpers/KeyEventHelper.kt @@ -29,6 +29,10 @@ import android.view.KeyEvent class KeyEventHelper( private val instr: Instrumentation, ) { + fun press(keyCode: Int, metaState: Int = 0) { + actionDown(keyCode, metaState) + actionUp(keyCode, metaState) + } fun actionDown(keyCode: Int, metaState: Int = 0, time: Long = SystemClock.uptimeMillis()) { injectKeyEvent(ACTION_DOWN, keyCode, metaState, downTime = time, eventTime = time) diff --git a/tests/FlickerTests/test-apps/app-helpers/src/com/android/server/wm/flicker/helpers/PipAppHelper.kt b/tests/FlickerTests/test-apps/app-helpers/src/com/android/server/wm/flicker/helpers/PipAppHelper.kt index de17bf422c0c..344cac1ac7e5 100644 --- a/tests/FlickerTests/test-apps/app-helpers/src/com/android/server/wm/flicker/helpers/PipAppHelper.kt +++ b/tests/FlickerTests/test-apps/app-helpers/src/com/android/server/wm/flicker/helpers/PipAppHelper.kt @@ -75,8 +75,9 @@ open class PipAppHelper( .waitForAndVerify() } - /** Expand the PIP window back to full screen via intent and wait until the app is visible */ - fun exitPipToFullScreenViaIntent(wmHelper: WindowManagerStateHelper) = launchViaIntent(wmHelper) + /** Expand the PIP window back to original task via intent and wait until the app is visible */ + open fun exitPipToOriginalTaskViaIntent(wmHelper: WindowManagerStateHelper) = + launchViaIntent(wmHelper) fun changeAspectRatio(wmHelper: WindowManagerStateHelper) { val intent = Intent("com.android.wm.shell.flicker.testapp.ASPECT_RATIO") diff --git a/tests/FlickerTests/test-apps/flickerapp/src/com/android/server/wm/flicker/testapp/BottomHalfPipLaunchingActivity.java b/tests/FlickerTests/test-apps/flickerapp/src/com/android/server/wm/flicker/testapp/BottomHalfPipLaunchingActivity.java index d9d4361411bb..209f71e4f307 100644 --- a/tests/FlickerTests/test-apps/flickerapp/src/com/android/server/wm/flicker/testapp/BottomHalfPipLaunchingActivity.java +++ b/tests/FlickerTests/test-apps/flickerapp/src/com/android/server/wm/flicker/testapp/BottomHalfPipLaunchingActivity.java @@ -24,8 +24,12 @@ public class BottomHalfPipLaunchingActivity extends SimpleActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - final Intent intent = new Intent(this, BottomHalfPipActivity.class); + // Pass extras to BottomHalfPipActivity. + final Bundle extras = getIntent().getExtras(); + if (extras != null) { + intent.putExtras(extras); + } startActivity(intent); } } diff --git a/tests/Input/src/com/android/server/input/InputManagerServiceTests.kt b/tests/Input/src/com/android/server/input/InputManagerServiceTests.kt index aea75d8e7c85..d75a8f433af8 100644 --- a/tests/Input/src/com/android/server/input/InputManagerServiceTests.kt +++ b/tests/Input/src/com/android/server/input/InputManagerServiceTests.kt @@ -613,7 +613,8 @@ class InputManagerServiceTests { 0 }, "title", - /* uid = */0 + /* uid = */0, + /* inputFeatureFlags = */ 0 ) whenever(windowManagerInternal.getKeyInterceptionInfoFromToken(any())).thenReturn(info) } diff --git a/tests/Input/src/com/android/server/input/KeyGestureControllerTests.kt b/tests/Input/src/com/android/server/input/KeyGestureControllerTests.kt index 4959cb3651fd..4d7085feb98f 100644 --- a/tests/Input/src/com/android/server/input/KeyGestureControllerTests.kt +++ b/tests/Input/src/com/android/server/input/KeyGestureControllerTests.kt @@ -466,27 +466,27 @@ class KeyGestureControllerTests { intArrayOf(KeyGestureEvent.ACTION_GESTURE_COMPLETE) ), TestData( - "META + ALT + DPAD_LEFT -> Change Splitscreen Focus Left", + "CTRL + ALT + DPAD_LEFT -> Change Splitscreen Focus Left", intArrayOf( - KeyEvent.KEYCODE_META_LEFT, + KeyEvent.KEYCODE_CTRL_LEFT, KeyEvent.KEYCODE_ALT_LEFT, KeyEvent.KEYCODE_DPAD_LEFT ), KeyGestureEvent.KEY_GESTURE_TYPE_CHANGE_SPLITSCREEN_FOCUS_LEFT, intArrayOf(KeyEvent.KEYCODE_DPAD_LEFT), - KeyEvent.META_META_ON or KeyEvent.META_ALT_ON, + KeyEvent.META_CTRL_ON or KeyEvent.META_ALT_ON, intArrayOf(KeyGestureEvent.ACTION_GESTURE_COMPLETE) ), TestData( - "META + CTRL + DPAD_RIGHT -> Change Splitscreen Focus Right", + "CTRL + ALT + DPAD_RIGHT -> Change Splitscreen Focus Right", intArrayOf( - KeyEvent.KEYCODE_META_LEFT, + KeyEvent.KEYCODE_CTRL_LEFT, KeyEvent.KEYCODE_ALT_LEFT, KeyEvent.KEYCODE_DPAD_RIGHT ), KeyGestureEvent.KEY_GESTURE_TYPE_CHANGE_SPLITSCREEN_FOCUS_RIGHT, intArrayOf(KeyEvent.KEYCODE_DPAD_RIGHT), - KeyEvent.META_META_ON or KeyEvent.META_ALT_ON, + KeyEvent.META_CTRL_ON or KeyEvent.META_ALT_ON, intArrayOf(KeyGestureEvent.ACTION_GESTURE_COMPLETE) ), TestData( @@ -735,25 +735,25 @@ class KeyGestureControllerTests { intArrayOf(KeyGestureEvent.ACTION_GESTURE_COMPLETE) ), TestData( - "META + ALT + '-' -> Magnifier Zoom Out", + "META + ALT + '-' -> Magnification Zoom Out", intArrayOf( KeyEvent.KEYCODE_META_LEFT, KeyEvent.KEYCODE_ALT_LEFT, KeyEvent.KEYCODE_MINUS ), - KeyGestureEvent.KEY_GESTURE_TYPE_MAGNIFIER_ZOOM_OUT, + KeyGestureEvent.KEY_GESTURE_TYPE_MAGNIFICATION_ZOOM_OUT, intArrayOf(KeyEvent.KEYCODE_MINUS), KeyEvent.META_META_ON or KeyEvent.META_ALT_ON, intArrayOf(KeyGestureEvent.ACTION_GESTURE_COMPLETE) ), TestData( - "META + ALT + '=' -> Magnifier Zoom In", + "META + ALT + '=' -> Magnification Zoom In", intArrayOf( KeyEvent.KEYCODE_META_LEFT, KeyEvent.KEYCODE_ALT_LEFT, KeyEvent.KEYCODE_EQUALS ), - KeyGestureEvent.KEY_GESTURE_TYPE_MAGNIFIER_ZOOM_IN, + KeyGestureEvent.KEY_GESTURE_TYPE_MAGNIFICATION_ZOOM_IN, intArrayOf(KeyEvent.KEYCODE_EQUALS), KeyEvent.META_META_ON or KeyEvent.META_ALT_ON, intArrayOf(KeyGestureEvent.ACTION_GESTURE_COMPLETE) @@ -785,49 +785,49 @@ class KeyGestureControllerTests { TestData( "META + ALT + 'Down' -> Magnification Pan Down", intArrayOf( - KeyEvent.KEYCODE_CTRL_LEFT, + KeyEvent.KEYCODE_META_LEFT, KeyEvent.KEYCODE_ALT_LEFT, KeyEvent.KEYCODE_DPAD_DOWN ), - KeyGestureEvent.KEY_GESTURE_TYPE_MAGNIFIER_PAN_DOWN, + KeyGestureEvent.KEY_GESTURE_TYPE_MAGNIFICATION_PAN_DOWN, intArrayOf(KeyEvent.KEYCODE_DPAD_DOWN), - KeyEvent.META_CTRL_ON or KeyEvent.META_ALT_ON, + KeyEvent.META_META_ON or KeyEvent.META_ALT_ON, intArrayOf(KeyGestureEvent.ACTION_GESTURE_COMPLETE) ), TestData( "META + ALT + 'Up' -> Magnification Pan Up", intArrayOf( - KeyEvent.KEYCODE_CTRL_LEFT, + KeyEvent.KEYCODE_META_LEFT, KeyEvent.KEYCODE_ALT_LEFT, KeyEvent.KEYCODE_DPAD_UP ), - KeyGestureEvent.KEY_GESTURE_TYPE_MAGNIFIER_PAN_UP, + KeyGestureEvent.KEY_GESTURE_TYPE_MAGNIFICATION_PAN_UP, intArrayOf(KeyEvent.KEYCODE_DPAD_UP), - KeyEvent.META_CTRL_ON or KeyEvent.META_ALT_ON, + KeyEvent.META_META_ON or KeyEvent.META_ALT_ON, intArrayOf(KeyGestureEvent.ACTION_GESTURE_COMPLETE) ), TestData( "META + ALT + 'Left' -> Magnification Pan Left", intArrayOf( - KeyEvent.KEYCODE_CTRL_LEFT, + KeyEvent.KEYCODE_META_LEFT, KeyEvent.KEYCODE_ALT_LEFT, KeyEvent.KEYCODE_DPAD_LEFT ), - KeyGestureEvent.KEY_GESTURE_TYPE_MAGNIFIER_PAN_LEFT, + KeyGestureEvent.KEY_GESTURE_TYPE_MAGNIFICATION_PAN_LEFT, intArrayOf(KeyEvent.KEYCODE_DPAD_LEFT), - KeyEvent.META_CTRL_ON or KeyEvent.META_ALT_ON, + KeyEvent.META_META_ON or KeyEvent.META_ALT_ON, intArrayOf(KeyGestureEvent.ACTION_GESTURE_COMPLETE) ), TestData( "META + ALT + 'Right' -> Magnification Pan Right", intArrayOf( - KeyEvent.KEYCODE_CTRL_LEFT, + KeyEvent.KEYCODE_META_LEFT, KeyEvent.KEYCODE_ALT_LEFT, KeyEvent.KEYCODE_DPAD_RIGHT ), - KeyGestureEvent.KEY_GESTURE_TYPE_MAGNIFIER_PAN_RIGHT, + KeyGestureEvent.KEY_GESTURE_TYPE_MAGNIFICATION_PAN_RIGHT, intArrayOf(KeyEvent.KEYCODE_DPAD_RIGHT), - KeyEvent.META_CTRL_ON or KeyEvent.META_ALT_ON, + KeyEvent.META_META_ON or KeyEvent.META_ALT_ON, intArrayOf(KeyGestureEvent.ACTION_GESTURE_COMPLETE) ), ) diff --git a/tests/Input/src/com/android/test/input/KeyCharacterMapTest.kt b/tests/Input/src/com/android/test/input/KeyCharacterMapTest.kt index 281837920548..860d9f680c4c 100644 --- a/tests/Input/src/com/android/test/input/KeyCharacterMapTest.kt +++ b/tests/Input/src/com/android/test/input/KeyCharacterMapTest.kt @@ -16,10 +16,17 @@ package com.android.test.input +import android.platform.test.annotations.EnableFlags +import android.platform.test.flag.junit.SetFlagsRule + import android.view.KeyCharacterMap import android.view.KeyEvent +import com.android.hardware.input.Flags + import org.junit.Assert.assertEquals +import org.junit.Assert.assertNull +import org.junit.Rule import org.junit.Test /** @@ -30,26 +37,38 @@ import org.junit.Test * */ class KeyCharacterMapTest { + @get:Rule + val setFlagsRule = SetFlagsRule() + @Test + @EnableFlags(Flags.FLAG_REMOVE_FALLBACK_MODIFIERS) fun testGetFallback() { // Based off of VIRTUAL kcm fallbacks. val keyCharacterMap = KeyCharacterMap.load(KeyCharacterMap.VIRTUAL_KEYBOARD) // One modifier fallback. - assertEquals( - keyCharacterMap.getFallbackAction(KeyEvent.KEYCODE_SPACE, - KeyEvent.META_CTRL_ON).keyCode, - KeyEvent.KEYCODE_LANGUAGE_SWITCH) + val oneModifierFallback = keyCharacterMap.getFallbackAction(KeyEvent.KEYCODE_SPACE, + KeyEvent.META_CTRL_ON) + assertEquals(KeyEvent.KEYCODE_LANGUAGE_SWITCH, oneModifierFallback.keyCode) + assertEquals(0, oneModifierFallback.metaState) // Multiple modifier fallback. - assertEquals( - keyCharacterMap.getFallbackAction(KeyEvent.KEYCODE_DEL, - KeyEvent.META_CTRL_ON or KeyEvent.META_ALT_ON).keyCode, - KeyEvent.KEYCODE_BACK) + val twoModifierFallback = keyCharacterMap.getFallbackAction(KeyEvent.KEYCODE_DEL, + KeyEvent.META_CTRL_ON or KeyEvent.META_ALT_ON) + assertEquals(KeyEvent.KEYCODE_BACK, twoModifierFallback.keyCode) + assertEquals(0, twoModifierFallback.metaState) // No default button, fallback only. - assertEquals( - keyCharacterMap.getFallbackAction(KeyEvent.KEYCODE_BUTTON_A, 0).keyCode, - KeyEvent.KEYCODE_DPAD_CENTER) + val keyOnlyFallback = + keyCharacterMap.getFallbackAction(KeyEvent.KEYCODE_BUTTON_A, 0) + assertEquals(KeyEvent.KEYCODE_DPAD_CENTER, keyOnlyFallback.keyCode) + assertEquals(0, keyOnlyFallback.metaState) + + // A key event that is not an exact match for a fallback. Expect a null return. + // E.g. Ctrl + Space -> LanguageSwitch + // Ctrl + Alt + Space -> Ctrl + Alt + Space (No fallback). + val noMatchFallback = keyCharacterMap.getFallbackAction(KeyEvent.KEYCODE_SPACE, + KeyEvent.META_CTRL_ON or KeyEvent.META_ALT_ON) + assertNull(noMatchFallback) } } diff --git a/tests/Input/src/com/android/test/input/UinputRecordingIntegrationTests.kt b/tests/Input/src/com/android/test/input/UinputRecordingIntegrationTests.kt index c61a25021949..0b281d8d39e2 100644 --- a/tests/Input/src/com/android/test/input/UinputRecordingIntegrationTests.kt +++ b/tests/Input/src/com/android/test/input/UinputRecordingIntegrationTests.kt @@ -21,6 +21,7 @@ import android.cts.input.EventVerifier import android.graphics.PointF import android.hardware.input.InputManager import android.os.ParcelFileDescriptor +import android.server.wm.CtsWindowInfoUtils.waitForWindowOnTop import android.util.Log import android.util.Size import android.view.InputEvent @@ -113,6 +114,7 @@ class UinputRecordingIntegrationTests { testName, size = testData.displaySize ).use { scenario -> + waitForWindowOnTop(scenario.activity.window) scenario.activity.window.decorView.requestUnbufferedDispatch(INPUT_DEVICE_SOURCE_ALL) try { diff --git a/tests/PackageWatchdog/src/com/android/server/CrashRecoveryTest.java b/tests/PackageWatchdog/src/com/android/server/CrashRecoveryTest.java index 49616c30b784..8ac3433033c6 100644 --- a/tests/PackageWatchdog/src/com/android/server/CrashRecoveryTest.java +++ b/tests/PackageWatchdog/src/com/android/server/CrashRecoveryTest.java @@ -765,14 +765,14 @@ public class CrashRecoveryTest { } catch (PackageManager.NameNotFoundException e) { throw new RuntimeException(e); } - watchdog.registerHealthObserver(rollbackObserver, mTestExecutor); + watchdog.registerHealthObserver(mTestExecutor, rollbackObserver); return rollbackObserver; } RescuePartyObserver setUpRescuePartyObserver(PackageWatchdog watchdog) { setCrashRecoveryPropRescueBootCount(0); RescuePartyObserver rescuePartyObserver = spy(RescuePartyObserver.getInstance(mSpyContext)); assertFalse(RescueParty.isRebootPropertySet()); - watchdog.registerHealthObserver(rescuePartyObserver, mTestExecutor); + watchdog.registerHealthObserver(mTestExecutor, rescuePartyObserver); return rescuePartyObserver; } diff --git a/tests/PackageWatchdog/src/com/android/server/PackageWatchdogTest.java b/tests/PackageWatchdog/src/com/android/server/PackageWatchdogTest.java index 928e2326498d..1c50cb1b55fd 100644 --- a/tests/PackageWatchdog/src/com/android/server/PackageWatchdogTest.java +++ b/tests/PackageWatchdog/src/com/android/server/PackageWatchdogTest.java @@ -54,7 +54,6 @@ import android.platform.test.flag.junit.SetFlagsRule; import android.provider.DeviceConfig; import android.util.AtomicFile; import android.util.LongArrayQueue; -import android.util.Slog; import android.util.Xml; import androidx.test.InstrumentationRegistry; @@ -231,8 +230,8 @@ public class PackageWatchdogTest { PackageWatchdog watchdog = createWatchdog(); TestObserver observer = new TestObserver(OBSERVER_NAME_1); - watchdog.registerHealthObserver(observer, mTestExecutor); - watchdog.startExplicitHealthCheck(observer, Arrays.asList(APP_A), SHORT_DURATION); + watchdog.registerHealthObserver(mTestExecutor, observer); + watchdog.startExplicitHealthCheck(Arrays.asList(APP_A), SHORT_DURATION, observer); raiseFatalFailureAndDispatch(watchdog, Arrays.asList(new VersionedPackage(APP_A, VERSION_CODE)), PackageWatchdog.FAILURE_REASON_UNKNOWN); @@ -248,10 +247,10 @@ public class PackageWatchdogTest { TestObserver observer1 = new TestObserver(OBSERVER_NAME_1); TestObserver observer2 = new TestObserver(OBSERVER_NAME_2); - watchdog.registerHealthObserver(observer1, mTestExecutor); - watchdog.startExplicitHealthCheck(observer1, Arrays.asList(APP_A), SHORT_DURATION); - watchdog.registerHealthObserver(observer2, mTestExecutor); - watchdog.startExplicitHealthCheck(observer2, Arrays.asList(APP_A, APP_B), SHORT_DURATION); + watchdog.registerHealthObserver(mTestExecutor, observer1); + watchdog.startExplicitHealthCheck(Arrays.asList(APP_A), SHORT_DURATION, observer1); + watchdog.registerHealthObserver(mTestExecutor, observer2); + watchdog.startExplicitHealthCheck(Arrays.asList(APP_A, APP_B), SHORT_DURATION, observer2); raiseFatalFailureAndDispatch(watchdog, Arrays.asList(new VersionedPackage(APP_A, VERSION_CODE), new VersionedPackage(APP_B, VERSION_CODE)), @@ -268,8 +267,8 @@ public class PackageWatchdogTest { PackageWatchdog watchdog = createWatchdog(); TestObserver observer = new TestObserver(OBSERVER_NAME_1); - watchdog.registerHealthObserver(observer, mTestExecutor); - watchdog.startExplicitHealthCheck(observer, Arrays.asList(APP_A), SHORT_DURATION); + watchdog.registerHealthObserver(mTestExecutor, observer); + watchdog.startExplicitHealthCheck(Arrays.asList(APP_A), SHORT_DURATION, observer); watchdog.unregisterHealthObserver(observer); raiseFatalFailureAndDispatch(watchdog, Arrays.asList(new VersionedPackage(APP_A, VERSION_CODE)), @@ -285,10 +284,10 @@ public class PackageWatchdogTest { TestObserver observer1 = new TestObserver(OBSERVER_NAME_1); TestObserver observer2 = new TestObserver(OBSERVER_NAME_2); - watchdog.registerHealthObserver(observer1, mTestExecutor); - watchdog.startExplicitHealthCheck(observer1, Arrays.asList(APP_A), SHORT_DURATION); - watchdog.registerHealthObserver(observer2, mTestExecutor); - watchdog.startExplicitHealthCheck(observer2, Arrays.asList(APP_A), SHORT_DURATION); + watchdog.registerHealthObserver(mTestExecutor, observer1); + watchdog.startExplicitHealthCheck(Arrays.asList(APP_A), SHORT_DURATION, observer1); + watchdog.registerHealthObserver(mTestExecutor, observer2); + watchdog.startExplicitHealthCheck(Arrays.asList(APP_A), SHORT_DURATION, observer2); watchdog.unregisterHealthObserver(observer2); raiseFatalFailureAndDispatch(watchdog, Arrays.asList(new VersionedPackage(APP_A, VERSION_CODE)), @@ -305,8 +304,8 @@ public class PackageWatchdogTest { PackageWatchdog watchdog = createWatchdog(); TestObserver observer = new TestObserver(OBSERVER_NAME_1); - watchdog.registerHealthObserver(observer, mTestExecutor); - watchdog.startExplicitHealthCheck(observer, Arrays.asList(APP_A), SHORT_DURATION); + watchdog.registerHealthObserver(mTestExecutor, observer); + watchdog.startExplicitHealthCheck(Arrays.asList(APP_A), SHORT_DURATION, observer); moveTimeForwardAndDispatch(SHORT_DURATION); raiseFatalFailureAndDispatch(watchdog, Arrays.asList(new VersionedPackage(APP_A, VERSION_CODE)), @@ -322,10 +321,10 @@ public class PackageWatchdogTest { TestObserver observer1 = new TestObserver(OBSERVER_NAME_1); TestObserver observer2 = new TestObserver(OBSERVER_NAME_2); - watchdog.registerHealthObserver(observer1, mTestExecutor); - watchdog.startExplicitHealthCheck(observer1, Arrays.asList(APP_A), SHORT_DURATION); - watchdog.registerHealthObserver(observer2, mTestExecutor); - watchdog.startExplicitHealthCheck(observer2, Arrays.asList(APP_A), LONG_DURATION); + watchdog.registerHealthObserver(mTestExecutor, observer1); + watchdog.startExplicitHealthCheck(Arrays.asList(APP_A), SHORT_DURATION, observer1); + watchdog.registerHealthObserver(mTestExecutor, observer2); + watchdog.startExplicitHealthCheck(Arrays.asList(APP_A), LONG_DURATION, observer2); moveTimeForwardAndDispatch(SHORT_DURATION); raiseFatalFailureAndDispatch(watchdog, Arrays.asList(new VersionedPackage(APP_A, VERSION_CODE)), @@ -344,14 +343,14 @@ public class PackageWatchdogTest { TestObserver observer = new TestObserver(OBSERVER_NAME_1); // Start observing APP_A - watchdog.registerHealthObserver(observer, mTestExecutor); - watchdog.startExplicitHealthCheck(observer, Arrays.asList(APP_A), SHORT_DURATION); + watchdog.registerHealthObserver(mTestExecutor, observer); + watchdog.startExplicitHealthCheck(Arrays.asList(APP_A), SHORT_DURATION, observer); // Then advance time half-way moveTimeForwardAndDispatch(SHORT_DURATION / 2); // Start observing APP_A again - watchdog.startExplicitHealthCheck(observer, Arrays.asList(APP_A), SHORT_DURATION); + watchdog.startExplicitHealthCheck(Arrays.asList(APP_A), SHORT_DURATION, observer); // Then advance time such that it should have expired were it not for the second observation moveTimeForwardAndDispatch((SHORT_DURATION / 2) + 1); @@ -373,17 +372,17 @@ public class PackageWatchdogTest { TestObserver observer1 = new TestObserver(OBSERVER_NAME_1); TestObserver observer2 = new TestObserver(OBSERVER_NAME_2); - watchdog1.registerHealthObserver(observer1, mTestExecutor); - watchdog1.startExplicitHealthCheck(observer1, Arrays.asList(APP_A), SHORT_DURATION); - watchdog1.registerHealthObserver(observer2, mTestExecutor); - watchdog1.startExplicitHealthCheck(observer2, Arrays.asList(APP_A, APP_B), SHORT_DURATION); + watchdog1.registerHealthObserver(mTestExecutor, observer1); + watchdog1.startExplicitHealthCheck(Arrays.asList(APP_A), SHORT_DURATION, observer1); + watchdog1.registerHealthObserver(mTestExecutor, observer2); + watchdog1.startExplicitHealthCheck(Arrays.asList(APP_A, APP_B), SHORT_DURATION, observer2); // Then advance time and run IO Handler so file is saved mTestLooper.dispatchAll(); // Then start a new watchdog PackageWatchdog watchdog2 = createWatchdog(); // Then resume observer1 and observer2 - watchdog2.registerHealthObserver(observer1, mTestExecutor); - watchdog2.registerHealthObserver(observer2, mTestExecutor); + watchdog2.registerHealthObserver(mTestExecutor, observer1); + watchdog2.registerHealthObserver(mTestExecutor, observer2); raiseFatalFailureAndDispatch(watchdog2, Arrays.asList(new VersionedPackage(APP_A, VERSION_CODE), new VersionedPackage(APP_B, VERSION_CODE)), @@ -405,10 +404,10 @@ public class PackageWatchdogTest { TestObserver observer1 = new TestObserver(OBSERVER_NAME_1); TestObserver observer2 = new TestObserver(OBSERVER_NAME_2); - watchdog.registerHealthObserver(observer2, mTestExecutor); - watchdog.startExplicitHealthCheck(observer2, Arrays.asList(APP_A), SHORT_DURATION); - watchdog.registerHealthObserver(observer1, mTestExecutor); - watchdog.startExplicitHealthCheck(observer1, Arrays.asList(APP_A), SHORT_DURATION); + watchdog.registerHealthObserver(mTestExecutor, observer2); + watchdog.startExplicitHealthCheck(Arrays.asList(APP_A), SHORT_DURATION, observer2); + watchdog.registerHealthObserver(mTestExecutor, observer1); + watchdog.startExplicitHealthCheck(Arrays.asList(APP_A), SHORT_DURATION, observer1); // Then fail APP_A below the threshold for (int i = 0; i < watchdog.getTriggerFailureCount() - 1; i++) { @@ -434,10 +433,10 @@ public class PackageWatchdogTest { TestObserver observer1 = new TestObserver(OBSERVER_NAME_1); TestObserver observer2 = new TestObserver(OBSERVER_NAME_2); - watchdog.registerHealthObserver(observer2, mTestExecutor); - watchdog.startExplicitHealthCheck(observer2, Arrays.asList(APP_A), SHORT_DURATION); - watchdog.registerHealthObserver(observer1, mTestExecutor); - watchdog.startExplicitHealthCheck(observer1, Arrays.asList(APP_B), SHORT_DURATION); + watchdog.registerHealthObserver(mTestExecutor, observer2); + watchdog.startExplicitHealthCheck(Arrays.asList(APP_A), SHORT_DURATION, observer2); + watchdog.registerHealthObserver(mTestExecutor, observer1); + watchdog.startExplicitHealthCheck(Arrays.asList(APP_B), SHORT_DURATION, observer1); // Then fail APP_C (not observed) above the threshold raiseFatalFailureAndDispatch(watchdog, @@ -469,8 +468,8 @@ public class PackageWatchdogTest { } }; - watchdog.registerHealthObserver(observer, mTestExecutor); - watchdog.startExplicitHealthCheck(observer, Arrays.asList(APP_A), SHORT_DURATION); + watchdog.registerHealthObserver(mTestExecutor, observer); + watchdog.startExplicitHealthCheck(Arrays.asList(APP_A), SHORT_DURATION, observer); // Then fail APP_A (different version) above the threshold raiseFatalFailureAndDispatch(watchdog, @@ -499,18 +498,17 @@ public class PackageWatchdogTest { PackageHealthObserverImpact.USER_IMPACT_LEVEL_10); // Start observing for all impact observers - watchdog.registerHealthObserver(observerNone, mTestExecutor); - watchdog.startExplicitHealthCheck(observerNone, Arrays.asList(APP_A, APP_B, APP_C, APP_D), - SHORT_DURATION); - watchdog.registerHealthObserver(observerHigh, mTestExecutor); - watchdog.startExplicitHealthCheck(observerHigh, Arrays.asList(APP_A, APP_B, APP_C), - SHORT_DURATION); - watchdog.registerHealthObserver(observerMid, mTestExecutor); - watchdog.startExplicitHealthCheck(observerMid, Arrays.asList(APP_A, APP_B), - SHORT_DURATION); - watchdog.registerHealthObserver(observerLow, mTestExecutor); - watchdog.startExplicitHealthCheck(observerLow, Arrays.asList(APP_A), - SHORT_DURATION); + watchdog.registerHealthObserver(mTestExecutor, observerNone); + watchdog.startExplicitHealthCheck(Arrays.asList(APP_A, APP_B, APP_C, APP_D), + SHORT_DURATION, observerNone); + watchdog.registerHealthObserver(mTestExecutor, observerHigh); + watchdog.startExplicitHealthCheck(Arrays.asList(APP_A, APP_B, APP_C), SHORT_DURATION, + observerHigh); + watchdog.registerHealthObserver(mTestExecutor, observerMid); + watchdog.startExplicitHealthCheck(Arrays.asList(APP_A, APP_B), SHORT_DURATION, + observerMid); + watchdog.registerHealthObserver(mTestExecutor, observerLow); + watchdog.startExplicitHealthCheck(Arrays.asList(APP_A), SHORT_DURATION, observerLow); // Then fail all apps above the threshold raiseFatalFailureAndDispatch(watchdog, @@ -549,18 +547,17 @@ public class PackageWatchdogTest { PackageHealthObserverImpact.USER_IMPACT_LEVEL_10); // Start observing for all impact observers - watchdog.registerHealthObserver(observerNone, mTestExecutor); - watchdog.startExplicitHealthCheck(observerNone, Arrays.asList(APP_A, APP_B, APP_C, APP_D), - SHORT_DURATION); - watchdog.registerHealthObserver(observerHigh, mTestExecutor); - watchdog.startExplicitHealthCheck(observerHigh, Arrays.asList(APP_A, APP_B, APP_C), - SHORT_DURATION); - watchdog.registerHealthObserver(observerMid, mTestExecutor); - watchdog.startExplicitHealthCheck(observerMid, Arrays.asList(APP_A, APP_B), - SHORT_DURATION); - watchdog.registerHealthObserver(observerLow, mTestExecutor); - watchdog.startExplicitHealthCheck(observerLow, Arrays.asList(APP_A), - SHORT_DURATION); + watchdog.registerHealthObserver(mTestExecutor, observerNone); + watchdog.startExplicitHealthCheck(Arrays.asList(APP_A, APP_B, APP_C, APP_D), + SHORT_DURATION, observerNone); + watchdog.registerHealthObserver(mTestExecutor, observerHigh); + watchdog.startExplicitHealthCheck(Arrays.asList(APP_A, APP_B, APP_C), SHORT_DURATION, + observerHigh); + watchdog.registerHealthObserver(mTestExecutor, observerMid); + watchdog.startExplicitHealthCheck(Arrays.asList(APP_A, APP_B), SHORT_DURATION, + observerMid); + watchdog.registerHealthObserver(mTestExecutor, observerLow); + watchdog.startExplicitHealthCheck(Arrays.asList(APP_A), SHORT_DURATION, observerLow); // Then fail all apps above the threshold raiseFatalFailureAndDispatch(watchdog, @@ -607,10 +604,10 @@ public class PackageWatchdogTest { PackageHealthObserverImpact.USER_IMPACT_LEVEL_30); // Start observing for observerFirst and observerSecond with failure handling - watchdog.registerHealthObserver(observerFirst, mTestExecutor); - watchdog.startExplicitHealthCheck(observerFirst, Arrays.asList(APP_A), LONG_DURATION); - watchdog.registerHealthObserver(observerSecond, mTestExecutor); - watchdog.startExplicitHealthCheck(observerSecond, Arrays.asList(APP_A), LONG_DURATION); + watchdog.registerHealthObserver(mTestExecutor, observerFirst); + watchdog.startExplicitHealthCheck(Arrays.asList(APP_A), LONG_DURATION, observerFirst); + watchdog.registerHealthObserver(mTestExecutor, observerSecond); + watchdog.startExplicitHealthCheck(Arrays.asList(APP_A), LONG_DURATION, observerSecond); // Then fail APP_A above the threshold raiseFatalFailureAndDispatch(watchdog, @@ -673,10 +670,10 @@ public class PackageWatchdogTest { PackageHealthObserverImpact.USER_IMPACT_LEVEL_30); // Start observing for observerFirst and observerSecond with failure handling - watchdog.registerHealthObserver(observerFirst, mTestExecutor); - watchdog.startExplicitHealthCheck(observerFirst, Arrays.asList(APP_A), LONG_DURATION); - watchdog.registerHealthObserver(observerSecond, mTestExecutor); - watchdog.startExplicitHealthCheck(observerSecond, Arrays.asList(APP_A), LONG_DURATION); + watchdog.registerHealthObserver(mTestExecutor, observerFirst); + watchdog.startExplicitHealthCheck(Arrays.asList(APP_A), LONG_DURATION, observerFirst); + watchdog.registerHealthObserver(mTestExecutor, observerSecond); + watchdog.startExplicitHealthCheck(Arrays.asList(APP_A), LONG_DURATION, observerSecond); // Then fail APP_A above the threshold raiseFatalFailureAndDispatch(watchdog, @@ -743,10 +740,10 @@ public class PackageWatchdogTest { PackageHealthObserverImpact.USER_IMPACT_LEVEL_100); // Start observing for observer1 and observer2 with failure handling - watchdog.registerHealthObserver(observer2, mTestExecutor); - watchdog.startExplicitHealthCheck(observer2, Arrays.asList(APP_A), SHORT_DURATION); - watchdog.registerHealthObserver(observer1, mTestExecutor); - watchdog.startExplicitHealthCheck(observer1, Arrays.asList(APP_A), SHORT_DURATION); + watchdog.registerHealthObserver(mTestExecutor, observer2); + watchdog.startExplicitHealthCheck(Arrays.asList(APP_A), SHORT_DURATION, observer2); + watchdog.registerHealthObserver(mTestExecutor, observer1); + watchdog.startExplicitHealthCheck(Arrays.asList(APP_A), SHORT_DURATION, observer1); // Then fail APP_A above the threshold raiseFatalFailureAndDispatch(watchdog, @@ -767,10 +764,10 @@ public class PackageWatchdogTest { PackageHealthObserverImpact.USER_IMPACT_LEVEL_50); // Start observing for observer1 and observer2 with failure handling - watchdog.registerHealthObserver(observer2, mTestExecutor); - watchdog.startExplicitHealthCheck(observer2, Arrays.asList(APP_A), SHORT_DURATION); - watchdog.registerHealthObserver(observer1, mTestExecutor); - watchdog.startExplicitHealthCheck(observer1, Arrays.asList(APP_A), SHORT_DURATION); + watchdog.registerHealthObserver(mTestExecutor, observer2); + watchdog.startExplicitHealthCheck(Arrays.asList(APP_A), SHORT_DURATION, observer2); + watchdog.registerHealthObserver(mTestExecutor, observer1); + watchdog.startExplicitHealthCheck(Arrays.asList(APP_A), SHORT_DURATION, observer1); // Then fail APP_A above the threshold raiseFatalFailureAndDispatch(watchdog, @@ -800,10 +797,10 @@ public class PackageWatchdogTest { // Start observing with explicit health checks for APP_A and APP_B respectively // with observer1 and observer2 controller.setSupportedPackages(Arrays.asList(APP_A, APP_B)); - watchdog.registerHealthObserver(observer1, mTestExecutor); - watchdog.startExplicitHealthCheck(observer1, Arrays.asList(APP_A), SHORT_DURATION); - watchdog.registerHealthObserver(observer2, mTestExecutor); - watchdog.startExplicitHealthCheck(observer2, Arrays.asList(APP_B), SHORT_DURATION); + watchdog.registerHealthObserver(mTestExecutor, observer1); + watchdog.startExplicitHealthCheck(Arrays.asList(APP_A), SHORT_DURATION, observer1); + watchdog.registerHealthObserver(mTestExecutor, observer2); + watchdog.startExplicitHealthCheck(Arrays.asList(APP_B), SHORT_DURATION, observer2); // Run handler so requests are dispatched to the controller mTestLooper.dispatchAll(); @@ -819,8 +816,8 @@ public class PackageWatchdogTest { // Observer3 didn't exist when we got the explicit health check above, so // it starts out with a non-passing explicit health check and has to wait for a pass // otherwise it would be notified of APP_A failure on expiry - watchdog.registerHealthObserver(observer3, mTestExecutor); - watchdog.startExplicitHealthCheck(observer3, Arrays.asList(APP_A), SHORT_DURATION); + watchdog.registerHealthObserver(mTestExecutor, observer3); + watchdog.startExplicitHealthCheck(Arrays.asList(APP_A), SHORT_DURATION, observer3); // Then expire observers moveTimeForwardAndDispatch(SHORT_DURATION); @@ -850,9 +847,9 @@ public class PackageWatchdogTest { // Start observing with explicit health checks for APP_A and APP_B controller.setSupportedPackages(Arrays.asList(APP_A, APP_B, APP_C)); - watchdog.registerHealthObserver(observer, mTestExecutor); - watchdog.startExplicitHealthCheck(observer, Arrays.asList(APP_A), SHORT_DURATION); - watchdog.startExplicitHealthCheck(observer, Arrays.asList(APP_B), LONG_DURATION); + watchdog.registerHealthObserver(mTestExecutor, observer); + watchdog.startExplicitHealthCheck(Arrays.asList(APP_A), SHORT_DURATION, observer); + watchdog.startExplicitHealthCheck(Arrays.asList(APP_B), LONG_DURATION, observer); // Run handler so requests are dispatched to the controller mTestLooper.dispatchAll(); @@ -888,7 +885,7 @@ public class PackageWatchdogTest { // Then set new supported packages controller.setSupportedPackages(Arrays.asList(APP_C)); // Start observing APP_A and APP_C; only APP_C has support for explicit health checks - watchdog.startExplicitHealthCheck(observer, Arrays.asList(APP_A, APP_C), SHORT_DURATION); + watchdog.startExplicitHealthCheck(Arrays.asList(APP_A, APP_C), SHORT_DURATION, observer); // Run handler so requests/cancellations are dispatched to the controller mTestLooper.dispatchAll(); @@ -919,8 +916,8 @@ public class PackageWatchdogTest { // package observation duration == LONG_DURATION // health check duration == SHORT_DURATION (set by default in the TestController) controller.setSupportedPackages(Arrays.asList(APP_A)); - watchdog.registerHealthObserver(observer, mTestExecutor); - watchdog.startExplicitHealthCheck(observer, Arrays.asList(APP_A), LONG_DURATION); + watchdog.registerHealthObserver(mTestExecutor, observer); + watchdog.startExplicitHealthCheck(Arrays.asList(APP_A), LONG_DURATION, observer); // Then APP_A has exceeded health check duration moveTimeForwardAndDispatch(SHORT_DURATION); @@ -951,8 +948,8 @@ public class PackageWatchdogTest { // package observation duration == SHORT_DURATION / 2 // health check duration == SHORT_DURATION (set by default in the TestController) controller.setSupportedPackages(Arrays.asList(APP_A)); - watchdog.registerHealthObserver(observer, mTestExecutor); - watchdog.startExplicitHealthCheck(observer, Arrays.asList(APP_A), SHORT_DURATION / 2); + watchdog.registerHealthObserver(mTestExecutor, observer); + watchdog.startExplicitHealthCheck(Arrays.asList(APP_A), SHORT_DURATION / 2, observer); // Forward time to expire the observation duration moveTimeForwardAndDispatch(SHORT_DURATION / 2); @@ -1025,7 +1022,7 @@ public class PackageWatchdogTest { // Start observing with failure handling TestObserver observer = new TestObserver(OBSERVER_NAME_1, PackageHealthObserverImpact.USER_IMPACT_LEVEL_100); - wd.startExplicitHealthCheck(observer, Collections.singletonList(APP_A), SHORT_DURATION); + wd.startExplicitHealthCheck(Collections.singletonList(APP_A), SHORT_DURATION, observer); // Notify of NetworkStack failure mConnectivityModuleCallbackCaptor.getValue().onNetworkStackFailure(APP_A); @@ -1045,7 +1042,7 @@ public class PackageWatchdogTest { // Start observing with failure handling TestObserver observer = new TestObserver(OBSERVER_NAME_1, PackageHealthObserverImpact.USER_IMPACT_LEVEL_100); - wd.startExplicitHealthCheck(observer, Collections.singletonList(APP_A), SHORT_DURATION); + wd.startExplicitHealthCheck(Collections.singletonList(APP_A), SHORT_DURATION, observer); // Notify of NetworkStack failure mConnectivityModuleCallbackCaptor.getValue().onNetworkStackFailure(APP_A); @@ -1066,8 +1063,8 @@ public class PackageWatchdogTest { PackageWatchdog watchdog = createWatchdog(); TestObserver observer = new TestObserver(OBSERVER_NAME_1); - watchdog.registerHealthObserver(observer, mTestExecutor); - watchdog.startExplicitHealthCheck(observer, Arrays.asList(APP_A), SHORT_DURATION); + watchdog.registerHealthObserver(mTestExecutor, observer); + watchdog.startExplicitHealthCheck(Arrays.asList(APP_A), SHORT_DURATION, observer); // Fail APP_A below the threshold which should not trigger package failures for (int i = 0; i < PackageWatchdog.DEFAULT_TRIGGER_FAILURE_COUNT - 1; i++) { watchdog.notifyPackageFailure(Arrays.asList(new VersionedPackage(APP_A, VERSION_CODE)), @@ -1095,8 +1092,8 @@ public class PackageWatchdogTest { PackageWatchdog watchdog = createWatchdog(); TestObserver observer = new TestObserver(OBSERVER_NAME_1); - watchdog.registerHealthObserver(observer, mTestExecutor); - watchdog.startExplicitHealthCheck(observer, Arrays.asList(APP_A, APP_B), Long.MAX_VALUE); + watchdog.registerHealthObserver(mTestExecutor, observer); + watchdog.startExplicitHealthCheck(Arrays.asList(APP_A, APP_B), Long.MAX_VALUE, observer); watchdog.notifyPackageFailure(Arrays.asList(new VersionedPackage(APP_A, VERSION_CODE)), PackageWatchdog.FAILURE_REASON_UNKNOWN); moveTimeForwardAndDispatch(PackageWatchdog.DEFAULT_TRIGGER_FAILURE_DURATION_MS + 1); @@ -1129,8 +1126,8 @@ public class PackageWatchdogTest { PackageWatchdog watchdog = createWatchdog(); TestObserver observer = new TestObserver(OBSERVER_NAME_1); - watchdog.registerHealthObserver(observer, mTestExecutor); - watchdog.startExplicitHealthCheck(observer, Arrays.asList(APP_A), -1); + watchdog.registerHealthObserver(mTestExecutor, observer); + watchdog.startExplicitHealthCheck(Arrays.asList(APP_A), -1, observer); // Note: Don't move too close to the expiration time otherwise the handler will be thrashed // by PackageWatchdog#scheduleNextSyncStateLocked which keeps posting runnables with very // small timeouts. @@ -1152,8 +1149,8 @@ public class PackageWatchdogTest { PackageWatchdog watchdog = createWatchdog(); TestObserver observer = new TestObserver(OBSERVER_NAME_1); - watchdog.registerHealthObserver(observer, mTestExecutor); - watchdog.startExplicitHealthCheck(observer, Arrays.asList(APP_A), -1); + watchdog.registerHealthObserver(mTestExecutor, observer); + watchdog.startExplicitHealthCheck(Arrays.asList(APP_A), -1, observer); moveTimeForwardAndDispatch(PackageWatchdog.DEFAULT_OBSERVING_DURATION_MS + 1); raiseFatalFailureAndDispatch(watchdog, Arrays.asList(new VersionedPackage(APP_A, VERSION_CODE)), @@ -1175,8 +1172,8 @@ public class PackageWatchdogTest { PackageWatchdog watchdog = createWatchdog(); TestObserver observer = new TestObserver(OBSERVER_NAME_1); - watchdog.registerHealthObserver(observer, mTestExecutor); - watchdog.startExplicitHealthCheck(observer, Arrays.asList(APP_A), Long.MAX_VALUE); + watchdog.registerHealthObserver(mTestExecutor, observer); + watchdog.startExplicitHealthCheck(Arrays.asList(APP_A), Long.MAX_VALUE, observer); // Raise 2 failures at t=0 and t=900 respectively watchdog.notifyPackageFailure(Arrays.asList(new VersionedPackage(APP_A, VERSION_CODE)), PackageWatchdog.FAILURE_REASON_UNKNOWN); @@ -1203,10 +1200,10 @@ public class PackageWatchdogTest { TestObserver observer1 = new TestObserver(OBSERVER_NAME_1); TestObserver observer2 = new TestObserver(OBSERVER_NAME_2); - watchdog.registerHealthObserver(observer1, mTestExecutor); - watchdog.startExplicitHealthCheck(observer1, Arrays.asList(APP_A), SHORT_DURATION); - watchdog.registerHealthObserver(observer2, mTestExecutor); - watchdog.startExplicitHealthCheck(observer2, Arrays.asList(APP_B), SHORT_DURATION); + watchdog.registerHealthObserver(mTestExecutor, observer1); + watchdog.startExplicitHealthCheck(Arrays.asList(APP_A), SHORT_DURATION, observer1); + watchdog.registerHealthObserver(mTestExecutor, observer2); + watchdog.startExplicitHealthCheck(Arrays.asList(APP_B), SHORT_DURATION, observer2); raiseFatalFailureAndDispatch(watchdog, Arrays.asList(new VersionedPackage(APP_A, VERSION_CODE)), PackageWatchdog.FAILURE_REASON_APP_CRASH); @@ -1225,8 +1222,8 @@ public class PackageWatchdogTest { PackageWatchdog watchdog = createWatchdog(); TestObserver observer1 = new TestObserver(OBSERVER_NAME_1); - watchdog.registerHealthObserver(observer1, mTestExecutor); - watchdog.startExplicitHealthCheck(observer1, Arrays.asList(APP_A), SHORT_DURATION); + watchdog.registerHealthObserver(mTestExecutor, observer1); + watchdog.startExplicitHealthCheck(Arrays.asList(APP_A), SHORT_DURATION, observer1); raiseFatalFailureAndDispatch(watchdog, Arrays.asList(new VersionedPackage(APP_A, VERSION_CODE)), PackageWatchdog.FAILURE_REASON_NATIVE_CRASH); @@ -1246,8 +1243,8 @@ public class PackageWatchdogTest { persistentObserver.setPersistent(true); persistentObserver.setMayObservePackages(true); - watchdog.registerHealthObserver(persistentObserver, mTestExecutor); - watchdog.startExplicitHealthCheck(persistentObserver, Arrays.asList(APP_B), SHORT_DURATION); + watchdog.registerHealthObserver(mTestExecutor, persistentObserver); + watchdog.startExplicitHealthCheck(Arrays.asList(APP_B), SHORT_DURATION, persistentObserver); raiseFatalFailureAndDispatch(watchdog, Arrays.asList(new VersionedPackage(APP_A, VERSION_CODE)), PackageWatchdog.FAILURE_REASON_UNKNOWN); @@ -1265,8 +1262,8 @@ public class PackageWatchdogTest { persistentObserver.setPersistent(true); persistentObserver.setMayObservePackages(false); - watchdog.registerHealthObserver(persistentObserver, mTestExecutor); - watchdog.startExplicitHealthCheck(persistentObserver, Arrays.asList(APP_B), SHORT_DURATION); + watchdog.registerHealthObserver(mTestExecutor, persistentObserver); + watchdog.startExplicitHealthCheck(Arrays.asList(APP_B), SHORT_DURATION, persistentObserver); raiseFatalFailureAndDispatch(watchdog, Arrays.asList(new VersionedPackage(APP_A, VERSION_CODE)), PackageWatchdog.FAILURE_REASON_UNKNOWN); @@ -1277,11 +1274,10 @@ public class PackageWatchdogTest { /** Ensure that boot loop mitigation is done when the number of boots meets the threshold. */ @Test public void testBootLoopDetection_meetsThreshold() { - Slog.w("hrm1243", "I should definitely be here try 1 "); mSetFlagsRule.disableFlags(Flags.FLAG_RECOVERABILITY_DETECTION); PackageWatchdog watchdog = createWatchdog(); TestObserver bootObserver = new TestObserver(OBSERVER_NAME_1); - watchdog.registerHealthObserver(bootObserver, mTestExecutor); + watchdog.registerHealthObserver(mTestExecutor, bootObserver); for (int i = 0; i < PackageWatchdog.DEFAULT_BOOT_LOOP_TRIGGER_COUNT; i++) { watchdog.noteBoot(); } @@ -1293,7 +1289,7 @@ public class PackageWatchdogTest { public void testBootLoopDetection_meetsThresholdRecoverability() { PackageWatchdog watchdog = createWatchdog(); TestObserver bootObserver = new TestObserver(OBSERVER_NAME_1); - watchdog.registerHealthObserver(bootObserver, mTestExecutor); + watchdog.registerHealthObserver(mTestExecutor, bootObserver); for (int i = 0; i < 15; i++) { watchdog.noteBoot(); } @@ -1309,7 +1305,7 @@ public class PackageWatchdogTest { public void testBootLoopDetection_doesNotMeetThreshold() { PackageWatchdog watchdog = createWatchdog(); TestObserver bootObserver = new TestObserver(OBSERVER_NAME_1); - watchdog.registerHealthObserver(bootObserver, mTestExecutor); + watchdog.registerHealthObserver(mTestExecutor, bootObserver); for (int i = 0; i < PackageWatchdog.DEFAULT_BOOT_LOOP_TRIGGER_COUNT - 1; i++) { watchdog.noteBoot(); } @@ -1326,7 +1322,7 @@ public class PackageWatchdogTest { PackageWatchdog watchdog = createWatchdog(); TestObserver bootObserver = new TestObserver(OBSERVER_NAME_1, PackageHealthObserverImpact.USER_IMPACT_LEVEL_30); - watchdog.registerHealthObserver(bootObserver, mTestExecutor); + watchdog.registerHealthObserver(mTestExecutor, bootObserver); for (int i = 0; i < PackageWatchdog.DEFAULT_BOOT_LOOP_TRIGGER_COUNT - 1; i++) { watchdog.noteBoot(); } @@ -1345,8 +1341,8 @@ public class PackageWatchdogTest { bootObserver1.setImpact(PackageHealthObserverImpact.USER_IMPACT_LEVEL_10); TestObserver bootObserver2 = new TestObserver(OBSERVER_NAME_2); bootObserver2.setImpact(PackageHealthObserverImpact.USER_IMPACT_LEVEL_30); - watchdog.registerHealthObserver(bootObserver1, mTestExecutor); - watchdog.registerHealthObserver(bootObserver2, mTestExecutor); + watchdog.registerHealthObserver(mTestExecutor, bootObserver1); + watchdog.registerHealthObserver(mTestExecutor, bootObserver2); for (int i = 0; i < PackageWatchdog.DEFAULT_BOOT_LOOP_TRIGGER_COUNT; i++) { watchdog.noteBoot(); } @@ -1362,8 +1358,8 @@ public class PackageWatchdogTest { bootObserver1.setImpact(PackageHealthObserverImpact.USER_IMPACT_LEVEL_10); TestObserver bootObserver2 = new TestObserver(OBSERVER_NAME_2); bootObserver2.setImpact(PackageHealthObserverImpact.USER_IMPACT_LEVEL_30); - watchdog.registerHealthObserver(bootObserver1, mTestExecutor); - watchdog.registerHealthObserver(bootObserver2, mTestExecutor); + watchdog.registerHealthObserver(mTestExecutor, bootObserver1); + watchdog.registerHealthObserver(mTestExecutor, bootObserver2); for (int i = 0; i < 15; i++) { watchdog.noteBoot(); } @@ -1380,7 +1376,7 @@ public class PackageWatchdogTest { mSetFlagsRule.disableFlags(Flags.FLAG_RECOVERABILITY_DETECTION); PackageWatchdog watchdog = createWatchdog(); TestObserver bootObserver = new TestObserver(OBSERVER_NAME_1); - watchdog.registerHealthObserver(bootObserver, mTestExecutor); + watchdog.registerHealthObserver(mTestExecutor, bootObserver); for (int i = 0; i < 4; i++) { for (int j = 0; j < PackageWatchdog.DEFAULT_BOOT_LOOP_TRIGGER_COUNT; j++) { watchdog.noteBoot(); @@ -1403,7 +1399,7 @@ public class PackageWatchdogTest { PackageWatchdog watchdog = createWatchdog(); TestObserver bootObserver = new TestObserver(OBSERVER_NAME_1, PackageHealthObserverImpact.USER_IMPACT_LEVEL_30); - watchdog.registerHealthObserver(bootObserver, mTestExecutor); + watchdog.registerHealthObserver(mTestExecutor, bootObserver); for (int j = 0; j < PackageWatchdog.DEFAULT_BOOT_LOOP_TRIGGER_COUNT - 1; j++) { watchdog.noteBoot(); } @@ -1431,8 +1427,8 @@ public class PackageWatchdogTest { public void testNullFailedPackagesList() { PackageWatchdog watchdog = createWatchdog(); TestObserver observer1 = new TestObserver(OBSERVER_NAME_1); - watchdog.registerHealthObserver(observer1, mTestExecutor); - watchdog.startExplicitHealthCheck(observer1, List.of(APP_A), LONG_DURATION); + watchdog.registerHealthObserver(mTestExecutor, observer1); + watchdog.startExplicitHealthCheck(List.of(APP_A), LONG_DURATION, observer1); raiseFatalFailureAndDispatch(watchdog, null, PackageWatchdog.FAILURE_REASON_APP_CRASH); assertThat(observer1.mMitigatedPackages).isEmpty(); @@ -1450,18 +1446,18 @@ public class PackageWatchdogTest { PackageWatchdog watchdog = createWatchdog(testController, true); TestObserver testObserver1 = new TestObserver(OBSERVER_NAME_1); - watchdog.registerHealthObserver(testObserver1, mTestExecutor); - watchdog.startExplicitHealthCheck(testObserver1, List.of(APP_A), LONG_DURATION); + watchdog.registerHealthObserver(mTestExecutor, testObserver1); + watchdog.startExplicitHealthCheck(List.of(APP_A), LONG_DURATION, testObserver1); mTestLooper.dispatchAll(); TestObserver testObserver2 = new TestObserver(OBSERVER_NAME_2); - watchdog.registerHealthObserver(testObserver2, mTestExecutor); - watchdog.startExplicitHealthCheck(testObserver2, List.of(APP_B), LONG_DURATION); + watchdog.registerHealthObserver(mTestExecutor, testObserver2); + watchdog.startExplicitHealthCheck(List.of(APP_B), LONG_DURATION, testObserver2); mTestLooper.dispatchAll(); TestObserver testObserver3 = new TestObserver(OBSERVER_NAME_3); - watchdog.registerHealthObserver(testObserver3, mTestExecutor); - watchdog.startExplicitHealthCheck(testObserver3, List.of(APP_C), LONG_DURATION); + watchdog.registerHealthObserver(mTestExecutor, testObserver3); + watchdog.startExplicitHealthCheck(List.of(APP_C), LONG_DURATION, testObserver3); mTestLooper.dispatchAll(); watchdog.unregisterHealthObserver(testObserver1); @@ -1493,15 +1489,15 @@ public class PackageWatchdogTest { public void testFailureHistoryIsPreserved() { PackageWatchdog watchdog = createWatchdog(); TestObserver observer = new TestObserver(OBSERVER_NAME_1); - watchdog.registerHealthObserver(observer, mTestExecutor); - watchdog.startExplicitHealthCheck(observer, List.of(APP_A), SHORT_DURATION); + watchdog.registerHealthObserver(mTestExecutor, observer); + watchdog.startExplicitHealthCheck(List.of(APP_A), SHORT_DURATION, observer); for (int i = 0; i < PackageWatchdog.DEFAULT_TRIGGER_FAILURE_COUNT - 1; i++) { watchdog.notifyPackageFailure(List.of(new VersionedPackage(APP_A, VERSION_CODE)), PackageWatchdog.FAILURE_REASON_UNKNOWN); } mTestLooper.dispatchAll(); assertThat(observer.mMitigatedPackages).isEmpty(); - watchdog.startExplicitHealthCheck(observer, List.of(APP_A), LONG_DURATION); + watchdog.startExplicitHealthCheck(List.of(APP_A), LONG_DURATION, observer); watchdog.notifyPackageFailure(List.of(new VersionedPackage(APP_A, VERSION_CODE)), PackageWatchdog.FAILURE_REASON_UNKNOWN); mTestLooper.dispatchAll(); @@ -1516,9 +1512,9 @@ public class PackageWatchdogTest { public void testMitigationSlidingWindow() { PackageWatchdog watchdog = createWatchdog(); TestObserver observer = new TestObserver(OBSERVER_NAME_1); - watchdog.registerHealthObserver(observer, mTestExecutor); - watchdog.startExplicitHealthCheck(observer, List.of(APP_A), - PackageWatchdog.DEFAULT_OBSERVING_DURATION_MS * 2); + watchdog.registerHealthObserver(mTestExecutor, observer); + watchdog.startExplicitHealthCheck(List.of(APP_A), + PackageWatchdog.DEFAULT_OBSERVING_DURATION_MS * 2, observer); raiseFatalFailureAndDispatch(watchdog, Arrays.asList(new VersionedPackage(APP_A, |