Loading quickstep/tests/src/com/android/quickstep/NavigationModeSwitchRule.java +40 −5 Original line number Diff line number Diff line Loading @@ -33,6 +33,7 @@ import androidx.test.uiautomator.UiDevice; import com.android.launcher3.tapl.LauncherInstrumentation; import com.android.launcher3.tapl.TestHelpers; import com.android.systemui.shared.system.QuickStepContract; import org.junit.Assert; import org.junit.rules.TestRule; Loading @@ -43,6 +44,8 @@ import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; /** * Test rule that allows executing a test with Quickstep on and then Quickstep off. Loading Loading @@ -78,9 +81,12 @@ public class NavigationModeSwitchRule implements TestRule { @Override public void evaluate() throws Throwable { final Context context = getInstrumentation().getContext(); final String prevOverlayPkg = LauncherInstrumentation.isGesturalMode(context) final int currentInteractionMode = LauncherInstrumentation.getCurrentInteractionMode(context); final String prevOverlayPkg = QuickStepContract.isGesturalMode(currentInteractionMode) ? NAV_BAR_MODE_GESTURAL_OVERLAY : LauncherInstrumentation.isSwipeUpMode(context) : QuickStepContract.isSwipeUpMode(currentInteractionMode) ? NAV_BAR_MODE_2BUTTON_OVERLAY : NAV_BAR_MODE_3BUTTON_OVERLAY; final LauncherInstrumentation.NavigationModel originalMode = Loading Loading @@ -131,6 +137,27 @@ public class NavigationModeSwitchRule implements TestRule { setOverlayPackageEnabled(NAV_BAR_MODE_GESTURAL_OVERLAY, overlayPackage == NAV_BAR_MODE_GESTURAL_OVERLAY); if (currentSysUiNavigationMode() != expectedMode) { final CountDownLatch latch = new CountDownLatch(1); final Context targetContext = getInstrumentation().getTargetContext(); final SysUINavigationMode.NavigationModeChangeListener listener = newMode -> { if (LauncherInstrumentation.getNavigationModel(newMode.resValue) == expectedMode) { latch.countDown(); } }; final SysUINavigationMode sysUINavigationMode = SysUINavigationMode.INSTANCE.get(targetContext); targetContext.getMainExecutor().execute(() -> sysUINavigationMode.addModeChangeListener(listener)); latch.await(10, TimeUnit.SECONDS); targetContext.getMainExecutor().execute(() -> sysUINavigationMode.removeModeChangeListener(listener)); Assert.assertTrue("Navigation mode didn't change to " + expectedMode, currentSysUiNavigationMode() == expectedMode); } for (int i = 0; i != 100; ++i) { if (mLauncher.getNavigationModel() == expectedMode) { Thread.sleep(5000); Loading @@ -153,4 +180,12 @@ public class NavigationModeSwitchRule implements TestRule { return base; } } private static LauncherInstrumentation.NavigationModel currentSysUiNavigationMode() { return LauncherInstrumentation.getNavigationModel( SysUINavigationMode.getMode( getInstrumentation(). getTargetContext()). resValue); } } tests/tapl/com/android/launcher3/tapl/LauncherInstrumentation.java +16 −21 Original line number Diff line number Diff line Loading @@ -208,14 +208,10 @@ public final class LauncherInstrumentation { // app context are not constructed with resources that take overlays into account final Context ctx = baseContext.createPackageContext("android", 0); for (int i = 0; i < 100; ++i) { log("Interaction mode = " + getCurrentInteractionMode(ctx)); if (isGesturalMode(ctx)) { return NavigationModel.ZERO_BUTTON; } else if (isSwipeUpMode(ctx)) { return NavigationModel.TWO_BUTTON; } else if (isLegacyMode(ctx)) { return NavigationModel.THREE_BUTTON; } final int currentInteractionMode = getCurrentInteractionMode(ctx); log("Interaction mode = " + currentInteractionMode); final NavigationModel model = getNavigationModel(currentInteractionMode); if (model != null) return model; Thread.sleep(100); } fail("Can't detect navigation mode"); Loading @@ -225,6 +221,17 @@ public final class LauncherInstrumentation { return NavigationModel.THREE_BUTTON; } public static NavigationModel getNavigationModel(int currentInteractionMode) { if (QuickStepContract.isGesturalMode(currentInteractionMode)) { return NavigationModel.ZERO_BUTTON; } else if (QuickStepContract.isSwipeUpMode(currentInteractionMode)) { return NavigationModel.TWO_BUTTON; } else if (QuickStepContract.isLegacyMode(currentInteractionMode)) { return NavigationModel.THREE_BUTTON; } return null; } public static boolean isAvd() { return Build.MODEL.contains("Cuttlefish"); } Loading Loading @@ -748,19 +755,7 @@ public final class LauncherInstrumentation { return currentTime; } public static boolean isGesturalMode(Context context) { return QuickStepContract.isGesturalMode(getCurrentInteractionMode(context)); } public static boolean isSwipeUpMode(Context context) { return QuickStepContract.isSwipeUpMode(getCurrentInteractionMode(context)); } public static boolean isLegacyMode(Context context) { return QuickStepContract.isLegacyMode(getCurrentInteractionMode(context)); } private static int getCurrentInteractionMode(Context context) { public static int getCurrentInteractionMode(Context context) { return getSystemIntegerRes(context, "config_navBarInteractionMode"); } Loading Loading
quickstep/tests/src/com/android/quickstep/NavigationModeSwitchRule.java +40 −5 Original line number Diff line number Diff line Loading @@ -33,6 +33,7 @@ import androidx.test.uiautomator.UiDevice; import com.android.launcher3.tapl.LauncherInstrumentation; import com.android.launcher3.tapl.TestHelpers; import com.android.systemui.shared.system.QuickStepContract; import org.junit.Assert; import org.junit.rules.TestRule; Loading @@ -43,6 +44,8 @@ import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; /** * Test rule that allows executing a test with Quickstep on and then Quickstep off. Loading Loading @@ -78,9 +81,12 @@ public class NavigationModeSwitchRule implements TestRule { @Override public void evaluate() throws Throwable { final Context context = getInstrumentation().getContext(); final String prevOverlayPkg = LauncherInstrumentation.isGesturalMode(context) final int currentInteractionMode = LauncherInstrumentation.getCurrentInteractionMode(context); final String prevOverlayPkg = QuickStepContract.isGesturalMode(currentInteractionMode) ? NAV_BAR_MODE_GESTURAL_OVERLAY : LauncherInstrumentation.isSwipeUpMode(context) : QuickStepContract.isSwipeUpMode(currentInteractionMode) ? NAV_BAR_MODE_2BUTTON_OVERLAY : NAV_BAR_MODE_3BUTTON_OVERLAY; final LauncherInstrumentation.NavigationModel originalMode = Loading Loading @@ -131,6 +137,27 @@ public class NavigationModeSwitchRule implements TestRule { setOverlayPackageEnabled(NAV_BAR_MODE_GESTURAL_OVERLAY, overlayPackage == NAV_BAR_MODE_GESTURAL_OVERLAY); if (currentSysUiNavigationMode() != expectedMode) { final CountDownLatch latch = new CountDownLatch(1); final Context targetContext = getInstrumentation().getTargetContext(); final SysUINavigationMode.NavigationModeChangeListener listener = newMode -> { if (LauncherInstrumentation.getNavigationModel(newMode.resValue) == expectedMode) { latch.countDown(); } }; final SysUINavigationMode sysUINavigationMode = SysUINavigationMode.INSTANCE.get(targetContext); targetContext.getMainExecutor().execute(() -> sysUINavigationMode.addModeChangeListener(listener)); latch.await(10, TimeUnit.SECONDS); targetContext.getMainExecutor().execute(() -> sysUINavigationMode.removeModeChangeListener(listener)); Assert.assertTrue("Navigation mode didn't change to " + expectedMode, currentSysUiNavigationMode() == expectedMode); } for (int i = 0; i != 100; ++i) { if (mLauncher.getNavigationModel() == expectedMode) { Thread.sleep(5000); Loading @@ -153,4 +180,12 @@ public class NavigationModeSwitchRule implements TestRule { return base; } } private static LauncherInstrumentation.NavigationModel currentSysUiNavigationMode() { return LauncherInstrumentation.getNavigationModel( SysUINavigationMode.getMode( getInstrumentation(). getTargetContext()). resValue); } }
tests/tapl/com/android/launcher3/tapl/LauncherInstrumentation.java +16 −21 Original line number Diff line number Diff line Loading @@ -208,14 +208,10 @@ public final class LauncherInstrumentation { // app context are not constructed with resources that take overlays into account final Context ctx = baseContext.createPackageContext("android", 0); for (int i = 0; i < 100; ++i) { log("Interaction mode = " + getCurrentInteractionMode(ctx)); if (isGesturalMode(ctx)) { return NavigationModel.ZERO_BUTTON; } else if (isSwipeUpMode(ctx)) { return NavigationModel.TWO_BUTTON; } else if (isLegacyMode(ctx)) { return NavigationModel.THREE_BUTTON; } final int currentInteractionMode = getCurrentInteractionMode(ctx); log("Interaction mode = " + currentInteractionMode); final NavigationModel model = getNavigationModel(currentInteractionMode); if (model != null) return model; Thread.sleep(100); } fail("Can't detect navigation mode"); Loading @@ -225,6 +221,17 @@ public final class LauncherInstrumentation { return NavigationModel.THREE_BUTTON; } public static NavigationModel getNavigationModel(int currentInteractionMode) { if (QuickStepContract.isGesturalMode(currentInteractionMode)) { return NavigationModel.ZERO_BUTTON; } else if (QuickStepContract.isSwipeUpMode(currentInteractionMode)) { return NavigationModel.TWO_BUTTON; } else if (QuickStepContract.isLegacyMode(currentInteractionMode)) { return NavigationModel.THREE_BUTTON; } return null; } public static boolean isAvd() { return Build.MODEL.contains("Cuttlefish"); } Loading Loading @@ -748,19 +755,7 @@ public final class LauncherInstrumentation { return currentTime; } public static boolean isGesturalMode(Context context) { return QuickStepContract.isGesturalMode(getCurrentInteractionMode(context)); } public static boolean isSwipeUpMode(Context context) { return QuickStepContract.isSwipeUpMode(getCurrentInteractionMode(context)); } public static boolean isLegacyMode(Context context) { return QuickStepContract.isLegacyMode(getCurrentInteractionMode(context)); } private static int getCurrentInteractionMode(Context context) { public static int getCurrentInteractionMode(Context context) { return getSystemIntegerRes(context, "config_navBarInteractionMode"); } Loading