Merge "Add CTS verification that native FBE is enabled for automotive" into oc-dev am: 1e3947373a
am: f0638d8d8b
Change-Id: Ib09fd5d0265f4deeaecbf784f769b5a8138f5500
diff --git a/hostsidetests/appsecurity/src/android/appsecurity/cts/DirectBootHostTest.java b/hostsidetests/appsecurity/src/android/appsecurity/cts/DirectBootHostTest.java
index 3a282bf..6a6c27d 100644
--- a/hostsidetests/appsecurity/src/android/appsecurity/cts/DirectBootHostTest.java
+++ b/hostsidetests/appsecurity/src/android/appsecurity/cts/DirectBootHostTest.java
@@ -47,8 +47,13 @@
private static final String MODE_EMULATED = "emulated";
private static final String MODE_NONE = "none";
+ private static final String FEATURE_DEVICE_ADMIN = "feature:android.software.device_admin\n";
+ private static final String FEATURE_AUTOMOTIVE = "feature:android.hardware.type.automotive\n";
+
private static final long SHUTDOWN_TIME_MS = 30 * 1000;
+ private String mFeatureList = null;
+
private IAbi mAbi;
private IBuildInfo mCtsBuild;
@@ -82,6 +87,22 @@
}
/**
+ * Automotive devices MUST support native FBE.
+ */
+ public void testAutomotiveNativeFbe() throws Exception {
+ if (!isSupportedDevice()) {
+ Log.v(TAG, "Device not supported; skipping test");
+ return;
+ } else if (!isAutomotiveDevice()) {
+ Log.v(TAG, "Device not automotive; skipping test");
+ return;
+ }
+
+ assertTrue("Automotive devices must support native FBE",
+ MODE_NATIVE.equals(getFbeMode()));
+ }
+
+ /**
* If device has native FBE, verify lifecycle.
*/
public void testDirectBootNative() throws Exception {
@@ -227,9 +248,20 @@
return "1".equals(output);
}
+ private boolean hasSystemFeature(final String feature) throws Exception {
+ if (mFeatureList == null) {
+ mFeatureList = getDevice().executeShellCommand("pm list features");
+ }
+
+ return mFeatureList.contains(feature);
+ }
+
private boolean isSupportedDevice() throws Exception {
- final String featureList = getDevice().executeShellCommand("pm list features");
- return featureList.contains("feature:android.software.device_admin\n");
+ return hasSystemFeature(FEATURE_DEVICE_ADMIN);
+ }
+
+ private boolean isAutomotiveDevice() throws Exception {
+ return hasSystemFeature(FEATURE_AUTOMOTIVE);
}
private void waitForBootCompleted() throws Exception {