diff options
Diffstat (limited to 'src/java/com/android/internal/telephony/uicc/UiccCarrierPrivilegeRules.java')
-rw-r--r-- | src/java/com/android/internal/telephony/uicc/UiccCarrierPrivilegeRules.java | 34 |
1 files changed, 23 insertions, 11 deletions
diff --git a/src/java/com/android/internal/telephony/uicc/UiccCarrierPrivilegeRules.java b/src/java/com/android/internal/telephony/uicc/UiccCarrierPrivilegeRules.java index e1bc0b7d51..4e7e3bd63b 100644 --- a/src/java/com/android/internal/telephony/uicc/UiccCarrierPrivilegeRules.java +++ b/src/java/com/android/internal/telephony/uicc/UiccCarrierPrivilegeRules.java @@ -25,6 +25,7 @@ import android.content.pm.ResolveInfo; import android.content.pm.Signature; import android.os.AsyncResult; import android.os.Binder; +import android.os.Build; import android.os.Handler; import android.os.Message; import android.telephony.TelephonyManager; @@ -32,6 +33,7 @@ import android.telephony.UiccAccessRule; import android.text.TextUtils; import android.util.LocalLog; +import com.android.internal.annotations.VisibleForTesting; import com.android.internal.telephony.CommandException; import com.android.telephony.Rlog; @@ -111,9 +113,9 @@ public class UiccCarrierPrivilegeRules extends Handler { private static final int STATE_LOADED = 1; private static final int STATE_ERROR = 2; - // Max number of retries for open logical channel, interval is 10s. - private static final int MAX_RETRY = 1; - private static final int RETRY_INTERVAL_MS = 10000; + // Max number of retries for open logical channel, interval is 5s. + private static final int MAX_RETRY = 2; + private static final int RETRY_INTERVAL_MS = 5000; private static final int STATUS_CODE_CONDITION_NOT_SATISFIED = 0x6985; private static final int STATUS_CODE_APPLET_SELECT_FAILED = 0x6999; @@ -127,9 +129,9 @@ public class UiccCarrierPrivilegeRules extends Handler { // Bytes for the length field, in ASCII HEX string form. private String lengthBytes; // Decoded length as integer. - @UnsupportedAppUsage + @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) private Integer length; - @UnsupportedAppUsage + @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) private String value; public TLV(String tag) { @@ -187,11 +189,11 @@ public class UiccCarrierPrivilegeRules extends Handler { private UiccProfile mUiccProfile; // Parent private UiccPkcs15 mUiccPkcs15; // ARF fallback - @UnsupportedAppUsage + @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) private AtomicInteger mState; private List<UiccAccessRule> mAccessRules; private String mRules; - @UnsupportedAppUsage + @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) private Message mLoadedCallback; // LocalLog buffer to hold important status messages for debugging. private LocalLog mStatusMessage = new LocalLog(100); @@ -228,6 +230,14 @@ public class UiccCarrierPrivilegeRules extends Handler { openChannel(mAIDInUse); } + @VisibleForTesting + public UiccCarrierPrivilegeRules(List<UiccAccessRule> rules) { + mAccessRules = rules; + mState = new AtomicInteger(STATE_LOADED); + mRules = ""; + mStatusMessage.log("Loaded from test rules."); + } + /** * Returns true if the carrier privilege rules have finished loading. */ @@ -371,10 +381,12 @@ public class UiccCarrierPrivilegeRules extends Handler { PackageManager packageManager, int uid) { String[] packages = packageManager.getPackagesForUid(uid); - for (String pkg : packages) { - int accessStatus = getCarrierPrivilegeStatus(packageManager, pkg); - if (accessStatus != TelephonyManager.CARRIER_PRIVILEGE_STATUS_NO_ACCESS) { - return accessStatus; + if (packages != null) { + for (String pkg : packages) { + int accessStatus = getCarrierPrivilegeStatus(packageManager, pkg); + if (accessStatus != TelephonyManager.CARRIER_PRIVILEGE_STATUS_NO_ACCESS) { + return accessStatus; + } } } return TelephonyManager.CARRIER_PRIVILEGE_STATUS_NO_ACCESS; |