diff options
-rw-r--r-- | quickstep/tests/src/com/android/quickstep/NavigationModeSwitchRule.java | 48 |
1 files changed, 33 insertions, 15 deletions
diff --git a/quickstep/tests/src/com/android/quickstep/NavigationModeSwitchRule.java b/quickstep/tests/src/com/android/quickstep/NavigationModeSwitchRule.java index 28a9707c8..f27f40088 100644 --- a/quickstep/tests/src/com/android/quickstep/NavigationModeSwitchRule.java +++ b/quickstep/tests/src/com/android/quickstep/NavigationModeSwitchRule.java @@ -27,6 +27,7 @@ import static com.android.systemui.shared.system.QuickStepContract.NAV_BAR_MODE_ import static com.android.systemui.shared.system.QuickStepContract.NAV_BAR_MODE_GESTURAL_OVERLAY; import android.content.Context; +import android.content.pm.PackageManager; import android.util.Log; import androidx.test.uiautomator.UiDevice; @@ -106,35 +107,51 @@ public class NavigationModeSwitchRule implements TestRule { Log.e(TAG, "Exception", e); throw e; } finally { - setActiveOverlay(prevOverlayPkg, originalMode); + Assert.assertTrue(setActiveOverlay(prevOverlayPkg, originalMode)); } mLauncher.disableDebugTracing(); } - public void evaluateWithoutChangingSetting(Statement base) throws Throwable { - base.evaluate(); - } - private void evaluateWithThreeButtons() throws Throwable { - setActiveOverlay(NAV_BAR_MODE_3BUTTON_OVERLAY, - LauncherInstrumentation.NavigationModel.THREE_BUTTON); - evaluateWithoutChangingSetting(base); + if (setActiveOverlay(NAV_BAR_MODE_3BUTTON_OVERLAY, + LauncherInstrumentation.NavigationModel.THREE_BUTTON)) { + base.evaluate(); + } } private void evaluateWithTwoButtons() throws Throwable { - setActiveOverlay(NAV_BAR_MODE_2BUTTON_OVERLAY, - LauncherInstrumentation.NavigationModel.TWO_BUTTON); - base.evaluate(); + if (setActiveOverlay(NAV_BAR_MODE_2BUTTON_OVERLAY, + LauncherInstrumentation.NavigationModel.TWO_BUTTON)) { + base.evaluate(); + } } private void evaluateWithZeroButtons() throws Throwable { - setActiveOverlay(NAV_BAR_MODE_GESTURAL_OVERLAY, - LauncherInstrumentation.NavigationModel.ZERO_BUTTON); - base.evaluate(); + if (setActiveOverlay(NAV_BAR_MODE_GESTURAL_OVERLAY, + LauncherInstrumentation.NavigationModel.ZERO_BUTTON)) { + base.evaluate(); + } + } + + private boolean packageExists(String packageName) { + try { + PackageManager pm = getInstrumentation().getContext().getPackageManager(); + if (pm.getApplicationInfo(packageName, 0 /* flags */) == null) { + return false; + } + } catch (PackageManager.NameNotFoundException e) { + return false; + } + return true; } - private void setActiveOverlay(String overlayPackage, + private boolean setActiveOverlay(String overlayPackage, LauncherInstrumentation.NavigationModel expectedMode) throws Exception { + if (!packageExists(overlayPackage)) { + Log.d(TAG, "setActiveOverlay: " + overlayPackage + " pkg does not exist"); + return false; + } + setOverlayPackageEnabled(NAV_BAR_MODE_3BUTTON_OVERLAY, overlayPackage == NAV_BAR_MODE_3BUTTON_OVERLAY); setOverlayPackageEnabled(NAV_BAR_MODE_2BUTTON_OVERLAY, @@ -178,6 +195,7 @@ public class NavigationModeSwitchRule implements TestRule { Assert.assertTrue("Switching nav mode: " + error, error == null); Thread.sleep(5000); + return true; } private void setOverlayPackageEnabled(String overlayPackage, boolean enable) |