Skip some Telecom/Telephony cts cases for data-only device
For data-only device, PackageManager.TELEPHONY_FEATURE is true, but
TelephonyManager.isVoiceCapable is false, so we shoule not run some
Telecom/Telephony cases
Bug:110864273
Change-Id: I8916e9dabdc80503df0ad06b1d0dd441d7e70d8b
Signed-off-by: gaoyi <gaoyi@xiaomi.com>
diff --git a/apps/CtsVerifier/AndroidManifest.xml b/apps/CtsVerifier/AndroidManifest.xml
index 19fd445..64551b6 100644
--- a/apps/CtsVerifier/AndroidManifest.xml
+++ b/apps/CtsVerifier/AndroidManifest.xml
@@ -3057,6 +3057,9 @@
<meta-data
android:name="test_required_features"
android:value="android.hardware.telephony"/>
+ <meta-data
+ android:name="test_required_configs"
+ android:value="config_voice_capable"/>
</activity>
<receiver android:name=".voicemail.VoicemailBroadcastReceiver">
@@ -3079,6 +3082,9 @@
<meta-data
android:name="test_required_features"
android:value="android.hardware.telephony"/>
+ <meta-data
+ android:name="test_required_configs"
+ android:value="config_voice_capable"/>
</activity>
<activity
@@ -3095,6 +3101,9 @@
<meta-data
android:name="test_required_features"
android:value="android.hardware.telephony"/>
+ <meta-data
+ android:name="test_required_configs"
+ android:value="config_voice_capable"/>
</activity>
<service android:name=".dialer.DialerCallTestService"
@@ -3119,6 +3128,9 @@
<meta-data
android:name="test_required_features"
android:value="android.hardware.telephony"/>
+ <meta-data
+ android:name="test_required_configs"
+ android:value="config_voice_capable"/>
</activity>
<activity
@@ -3135,6 +3147,9 @@
<meta-data
android:name="test_required_features"
android:value="android.hardware.telephony"/>
+ <meta-data
+ android:name="test_required_configs"
+ android:value="config_voice_capable"/>
</activity>
<activity
@@ -3151,6 +3166,9 @@
<meta-data
android:name="test_required_features"
android:value="android.hardware.telephony"/>
+ <meta-data
+ android:name="test_required_configs"
+ android:value="config_voice_capable"/>
</activity>
<activity
@@ -3167,6 +3185,9 @@
<meta-data
android:name="test_required_features"
android:value="android.hardware.telephony"/>
+ <meta-data
+ android:name="test_required_configs"
+ android:value="config_voice_capable"/>
</activity>
<service
@@ -3211,6 +3232,9 @@
<meta-data
android:name="test_required_features"
android:value="android.hardware.telephony"/>
+ <meta-data
+ android:name="test_required_configs"
+ android:value="config_voice_capable"/>
</activity>
<activity
@@ -3227,6 +3251,9 @@
<meta-data
android:name="test_required_features"
android:value="android.hardware.telephony"/>
+ <meta-data
+ android:name="test_required_configs"
+ android:value="config_voice_capable"/>
</activity>
<activity
@@ -3243,6 +3270,9 @@
<meta-data
android:name="test_required_features"
android:value="android.hardware.telephony"/>
+ <meta-data
+ android:name="test_required_configs"
+ android:value="config_voice_capable"/>
</activity>
<activity
@@ -3259,6 +3289,9 @@
<meta-data
android:name="test_required_features"
android:value="android.hardware.telephony"/>
+ <meta-data
+ android:name="test_required_configs"
+ android:value="config_voice_capable"/>
</activity>
<service android:name="com.android.cts.verifier.telecom.CtsConnectionService"
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/ManifestTestListAdapter.java b/apps/CtsVerifier/src/com/android/cts/verifier/ManifestTestListAdapter.java
index 44e2e0f..a339a43 100644
--- a/apps/CtsVerifier/src/com/android/cts/verifier/ManifestTestListAdapter.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/ManifestTestListAdapter.java
@@ -22,6 +22,7 @@
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.os.Bundle;
+import android.telephony.TelephonyManager;
import android.util.Log;
import android.widget.ListView;
@@ -99,6 +100,10 @@
private static final String TEST_APPLICABLE_FEATURES_META_DATA = "test_applicable_features";
+ private static final String TEST_REQUIRED_CONFIG_META_DATA = "test_required_configs";
+
+ private static final String CONFIG_VOICE_CAPABLE = "config_voice_capable";
+
private final HashSet<String> mDisabledTests;
private Context mContext;
@@ -188,10 +193,11 @@
String testName = info.activityInfo.name;
Intent intent = getActivityIntent(info.activityInfo);
String[] requiredFeatures = getRequiredFeatures(info.activityInfo.metaData);
+ String[] requiredConfigs = getRequiredConfigs(info.activityInfo.metaData);
String[] excludedFeatures = getExcludedFeatures(info.activityInfo.metaData);
String[] applicableFeatures = getApplicableFeatures(info.activityInfo.metaData);
TestListItem item = TestListItem.newTest(title, testName, intent, requiredFeatures,
- excludedFeatures, applicableFeatures);
+ requiredConfigs, excludedFeatures, applicableFeatures);
String testCategory = getTestCategory(mContext, info.activityInfo.metaData);
addTestToCategory(testsByCategory, testCategory, item);
@@ -229,6 +235,19 @@
}
}
+ static String[] getRequiredConfigs(Bundle metaData) {
+ if (metaData == null) {
+ return null;
+ } else {
+ String value = metaData.getString(TEST_REQUIRED_CONFIG_META_DATA);
+ if (value == null) {
+ return null;
+ } else {
+ return value.split(":");
+ }
+ }
+ }
+
static String[] getExcludedFeatures(Bundle metaData) {
if (metaData == null) {
return null;
@@ -305,10 +324,29 @@
return true;
}
+ private boolean matchAllConfigs(String[] configs) {
+ if (configs != null) {
+ TelephonyManager telephonyManager =
+ (TelephonyManager) mContext.getSystemService(Context.TELEPHONY_SERVICE);
+ for (String config : configs) {
+ switch(config) {
+ case CONFIG_VOICE_CAPABLE:
+ if (!telephonyManager.isVoiceCapable()) {
+ return false;
+ }
+ default:
+ break;
+ }
+ }
+ }
+ return true;
+ }
+
List<TestListItem> filterTests(List<TestListItem> tests) {
List<TestListItem> filteredTests = new ArrayList<TestListItem>();
for (TestListItem test : tests) {
- if (!hasAnyFeature(test.excludedFeatures) && hasAllFeatures(test.requiredFeatures)) {
+ if (!hasAnyFeature(test.excludedFeatures) && hasAllFeatures(test.requiredFeatures)
+ && matchAllConfigs(test.requiredConfigs)) {
if (test.applicableFeatures == null || hasAnyFeature(test.applicableFeatures)) {
filteredTests.add(test);
}
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/TestListAdapter.java b/apps/CtsVerifier/src/com/android/cts/verifier/TestListAdapter.java
index 642b951..d9ea84f 100644
--- a/apps/CtsVerifier/src/com/android/cts/verifier/TestListAdapter.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/TestListAdapter.java
@@ -91,6 +91,9 @@
/** Features necessary to run this test. */
final String[] requiredFeatures;
+ /** Configs necessary to run this test. */
+ final String[] requiredConfigs;
+
/** Features such that, if any present, the test gets excluded from being shown. */
final String[] excludedFeatures;
@@ -117,20 +120,27 @@
}
public static TestListItem newTest(String title, String testName, Intent intent,
+ String[] requiredFeatures, String[] requiredConfigs, String[] excludedFeatures,
+ String[] applicableFeatures) {
+ return new TestListItem(title, testName, intent, requiredFeatures, requiredConfigs,
+ excludedFeatures, applicableFeatures);
+ }
+
+ public static TestListItem newTest(String title, String testName, Intent intent,
String[] requiredFeatures, String[] excludedFeatures, String[] applicableFeatures) {
- return new TestListItem(title, testName, intent, requiredFeatures, excludedFeatures,
+ return new TestListItem(title, testName, intent, requiredFeatures, null, excludedFeatures,
applicableFeatures);
}
public static TestListItem newTest(String title, String testName, Intent intent,
String[] requiredFeatures, String[] excludedFeatures) {
- return new TestListItem(title, testName, intent, requiredFeatures, excludedFeatures,
+ return new TestListItem(title, testName, intent, requiredFeatures, null, excludedFeatures,
null);
}
public static TestListItem newTest(String title, String testName, Intent intent,
String[] requiredFeatures) {
- return new TestListItem(title, testName, intent, requiredFeatures, null, null);
+ return new TestListItem(title, testName, intent, requiredFeatures, null, null, null);
}
public static TestListItem newCategory(Context context, int titleResId) {
@@ -138,15 +148,22 @@
}
public static TestListItem newCategory(String title) {
- return new TestListItem(title, null, null, null, null, null);
+ return new TestListItem(title, null, null, null, null, null, null);
}
protected TestListItem(String title, String testName, Intent intent,
String[] requiredFeatures, String[] excludedFeatures, String[] applicableFeatures) {
+ this(title, testName, intent, requiredFeatures, null, excludedFeatures, applicableFeatures);
+ }
+
+ protected TestListItem(String title, String testName, Intent intent,
+ String[] requiredFeatures, String[] requiredConfigs, String[] excludedFeatures,
+ String[] applicableFeatures) {
this.title = title;
this.testName = testName;
this.intent = intent;
this.requiredFeatures = requiredFeatures;
+ this.requiredConfigs = requiredConfigs;
this.excludedFeatures = excludedFeatures;
this.applicableFeatures = applicableFeatures;
}