From 5bf8a8436fe9a1b69fabc341a8e7f472641a0990 Mon Sep 17 00:00:00 2001 From: Hunter Knepshield Date: Wed, 31 Mar 2021 14:13:29 -0700 Subject: [PATCH] Expose carrier privilege rules certificates as @TestApi. With the updated CTS UICC spec added this year, some SIM-dependent CTS tests will need to do runtime inspection of the certificates available to determine which SIM the test is running with. This information may be used to e.g. selectively enable tests only for newer SIMs if they require the updated hardware. Test: make Test: atest CtsCarrierApiTestCases Bug: 178419755 Change-Id: I942d4c0c7c786d7c8b561e5e65773367cefffb31 --- core/api/test-current.txt | 1 + .../java/android/telephony/TelephonyManager.java | 16 ++++++++-------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/core/api/test-current.txt b/core/api/test-current.txt index fee2f7736c4db..d160c7b4c26a7 100644 --- a/core/api/test-current.txt +++ b/core/api/test-current.txt @@ -2465,6 +2465,7 @@ package android.telephony { public class TelephonyManager { method public int addDevicePolicyOverrideApn(@NonNull android.content.Context, @NonNull android.telephony.data.ApnSetting); method public int getCarrierIdListVersion(); + method @NonNull @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public java.util.List getCertsFromCarrierPrivilegeAccessRules(); method @NonNull public java.util.List getDevicePolicyOverrideApns(@NonNull android.content.Context); method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public String getLine1AlphaTag(); method public android.util.Pair getRadioHalVersion(); diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java index 8475cabd90ccc..6f722528e4e93 100644 --- a/telephony/java/android/telephony/TelephonyManager.java +++ b/telephony/java/android/telephony/TelephonyManager.java @@ -11746,26 +11746,26 @@ public class TelephonyManager { } /** - * Return a list of certs in hex string from loaded carrier privileges access rules. + * Return a list of certs as hex strings from loaded carrier privileges access rules. * - * @return a list of certificate in hex string. return {@code null} if there is no certs - * or privilege rules are not loaded yet. - * - *

Requires Permission: - * {@link android.Manifest.permission#READ_PRIVILEGED_PHONE_STATE} + * @return a list of certificates as hex strings, or an empty list if there are no certs or + * privilege rules are not loaded yet. * @hide */ + @TestApi @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) + @NonNull public List getCertsFromCarrierPrivilegeAccessRules() { + List certs = null; try { ITelephony service = getITelephony(); if (service != null) { - return service.getCertsFromCarrierPrivilegeAccessRules(getSubId()); + certs = service.getCertsFromCarrierPrivilegeAccessRules(getSubId()); } } catch (RemoteException ex) { // This could happen if binder process crashes. } - return null; + return certs == null ? Collections.emptyList() : certs; } /**