Enhance EmergencyNumber API CTS
Bug: 129906637
Test: Treehugger
Change-Id: Idf6446f7558b6a58b9ebf14fadfa251d9e602df1
diff --git a/tests/tests/telephony/current/src/android/telephony/cts/TelephonyManagerTest.java b/tests/tests/telephony/current/src/android/telephony/cts/TelephonyManagerTest.java
index 9bd6011..08a57a0 100644
--- a/tests/tests/telephony/current/src/android/telephony/cts/TelephonyManagerTest.java
+++ b/tests/tests/telephony/current/src/android/telephony/cts/TelephonyManagerTest.java
@@ -990,7 +990,36 @@
}
Map<Integer, List<EmergencyNumber>> emergencyNumberList
= mTelephonyManager.getEmergencyNumberList();
- // TODO enhance it later
+
+ assertFalse(emergencyNumberList == null);
+
+ int defaultSubId = mSubscriptionManager.getDefaultSubscriptionId();
+
+ // 112 and 911 should always be available
+ // Reference: 3gpp 22.101, Section 10 - Emergency Calls
+ assertTrue(checkIfEmergencyNumberListHasSpecificAddress(
+ emergencyNumberList.get(defaultSubId), "911"));
+ assertTrue(checkIfEmergencyNumberListHasSpecificAddress(
+ emergencyNumberList.get(defaultSubId), "112"));
+
+ // 000, 08, 110, 118, 119, and 999 should be always available when sim is absent
+ // Reference: 3gpp 22.101, Section 10 - Emergency Calls
+ if (mTelephonyManager.getPhoneCount() > 0
+ && mSubscriptionManager.getSimStateForSlotIndex(0)
+ == TelephonyManager.SIM_STATE_ABSENT) {
+ assertTrue(checkIfEmergencyNumberListHasSpecificAddress(
+ emergencyNumberList.get(defaultSubId), "000"));
+ assertTrue(checkIfEmergencyNumberListHasSpecificAddress(
+ emergencyNumberList.get(defaultSubId), "08"));
+ assertTrue(checkIfEmergencyNumberListHasSpecificAddress(
+ emergencyNumberList.get(defaultSubId), "110"));
+ assertTrue(checkIfEmergencyNumberListHasSpecificAddress(
+ emergencyNumberList.get(defaultSubId), "118"));
+ assertTrue(checkIfEmergencyNumberListHasSpecificAddress(
+ emergencyNumberList.get(defaultSubId), "119"));
+ assertTrue(checkIfEmergencyNumberListHasSpecificAddress(
+ emergencyNumberList.get(defaultSubId), "999"));
+ }
}
/**
@@ -1001,8 +1030,23 @@
if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
return;
}
- boolean isEmergencyNumber = mTelephonyManager.isEmergencyNumber("911");
- // TODO enhance it later
+ // 112 and 911 should always be available
+ // Reference: 3gpp 22.101, Section 10 - Emergency Calls
+ assertTrue(mTelephonyManager.isEmergencyNumber("911"));
+ assertTrue(mTelephonyManager.isEmergencyNumber("112"));
+
+ // 000, 08, 110, 118, 119, and 999 should be always available when sim is absent
+ // Reference: 3gpp 22.101, Section 10 - Emergency Calls
+ if (mTelephonyManager.getPhoneCount() > 0
+ && mSubscriptionManager.getSimStateForSlotIndex(0)
+ == TelephonyManager.SIM_STATE_ABSENT) {
+ assertTrue(mTelephonyManager.isEmergencyNumber("000"));
+ assertTrue(mTelephonyManager.isEmergencyNumber("08"));
+ assertTrue(mTelephonyManager.isEmergencyNumber("110"));
+ assertTrue(mTelephonyManager.isEmergencyNumber("118"));
+ assertTrue(mTelephonyManager.isEmergencyNumber("119"));
+ assertTrue(mTelephonyManager.isEmergencyNumber("999"));
+ }
}
/**
@@ -1013,11 +1057,16 @@
if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
return;
}
- // use shell permission to run system api
- boolean isEmergencyNumber =
- ShellIdentityUtils.invokeMethodWithShellPermissions(mTelephonyManager,
- (tm) -> tm.isPotentialEmergencyNumber("911"));
- // TODO enhance it later
+
+ String countryIso = mTelephonyManager.getNetworkCountryIso();
+ String potentialEmergencyAddress = "91112345";
+ if (countryIso.equals("br") || countryIso.equals("cl") || countryIso.equals("ni")) {
+ assertTrue(ShellIdentityUtils.invokeMethodWithShellPermissions(mTelephonyManager,
+ (tm) -> tm.isPotentialEmergencyNumber(potentialEmergencyAddress)));
+ } else {
+ assertFalse(ShellIdentityUtils.invokeMethodWithShellPermissions(mTelephonyManager,
+ (tm) -> tm.isPotentialEmergencyNumber(potentialEmergencyAddress)));
+ }
}
/**
@@ -1108,6 +1157,16 @@
assertThat(value).isEqualTo(TelephonyManager.UPDATE_AVAILABLE_NETWORKS_INVALID_ARGUMENTS);
}
+ private static boolean checkIfEmergencyNumberListHasSpecificAddress(
+ List<EmergencyNumber> emergencyNumberList, String address) {
+ for (EmergencyNumber emergencyNumber : emergencyNumberList) {
+ if (address.equals(emergencyNumber.getNumber())) {
+ return true;
+ }
+ }
+ return false;
+ }
+
/**
* Tests {@link TelephonyManager#updateAvailableNetworks}
*/