Skip tests for overlays that don't exist on device

am: 0ef10a458d

Change-Id: Ib526e0122e3571566e5761a00b1853e01ea303f7
This commit is contained in:
Winson Chung
2019-07-25 17:49:14 -07:00
committed by android-build-merger
@@ -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 static com.android.systemui.shared.system.QuickStepContract.NAV_BAR_MODE_GESTURAL_OVERLAY;
import android.content.Context; import android.content.Context;
import android.content.pm.PackageManager;
import android.util.Log; import android.util.Log;
import androidx.test.uiautomator.UiDevice; import androidx.test.uiautomator.UiDevice;
@@ -106,35 +107,51 @@ public class NavigationModeSwitchRule implements TestRule {
Log.e(TAG, "Exception", e); Log.e(TAG, "Exception", e);
throw e; throw e;
} finally { } finally {
setActiveOverlay(prevOverlayPkg, originalMode); Assert.assertTrue(setActiveOverlay(prevOverlayPkg, originalMode));
} }
mLauncher.disableDebugTracing(); mLauncher.disableDebugTracing();
} }
public void evaluateWithoutChangingSetting(Statement base) throws Throwable {
base.evaluate();
}
private void evaluateWithThreeButtons() throws Throwable { private void evaluateWithThreeButtons() throws Throwable {
setActiveOverlay(NAV_BAR_MODE_3BUTTON_OVERLAY, if (setActiveOverlay(NAV_BAR_MODE_3BUTTON_OVERLAY,
LauncherInstrumentation.NavigationModel.THREE_BUTTON); LauncherInstrumentation.NavigationModel.THREE_BUTTON)) {
evaluateWithoutChangingSetting(base); base.evaluate();
}
} }
private void evaluateWithTwoButtons() throws Throwable { private void evaluateWithTwoButtons() throws Throwable {
setActiveOverlay(NAV_BAR_MODE_2BUTTON_OVERLAY, if (setActiveOverlay(NAV_BAR_MODE_2BUTTON_OVERLAY,
LauncherInstrumentation.NavigationModel.TWO_BUTTON); LauncherInstrumentation.NavigationModel.TWO_BUTTON)) {
base.evaluate(); base.evaluate();
}
} }
private void evaluateWithZeroButtons() throws Throwable { private void evaluateWithZeroButtons() throws Throwable {
setActiveOverlay(NAV_BAR_MODE_GESTURAL_OVERLAY, if (setActiveOverlay(NAV_BAR_MODE_GESTURAL_OVERLAY,
LauncherInstrumentation.NavigationModel.ZERO_BUTTON); LauncherInstrumentation.NavigationModel.ZERO_BUTTON)) {
base.evaluate(); base.evaluate();
}
} }
private void setActiveOverlay(String overlayPackage, 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 boolean setActiveOverlay(String overlayPackage,
LauncherInstrumentation.NavigationModel expectedMode) throws Exception { 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, setOverlayPackageEnabled(NAV_BAR_MODE_3BUTTON_OVERLAY,
overlayPackage == NAV_BAR_MODE_3BUTTON_OVERLAY); overlayPackage == NAV_BAR_MODE_3BUTTON_OVERLAY);
setOverlayPackageEnabled(NAV_BAR_MODE_2BUTTON_OVERLAY, setOverlayPackageEnabled(NAV_BAR_MODE_2BUTTON_OVERLAY,
@@ -178,6 +195,7 @@ public class NavigationModeSwitchRule implements TestRule {
Assert.assertTrue("Switching nav mode: " + error, error == null); Assert.assertTrue("Switching nav mode: " + error, error == null);
Thread.sleep(5000); Thread.sleep(5000);
return true;
} }
private void setOverlayPackageEnabled(String overlayPackage, boolean enable) private void setOverlayPackageEnabled(String overlayPackage, boolean enable)