aboutsummaryrefslogtreecommitdiff
path: root/src/java/com/android/internal/telephony/uicc/UiccCarrierPrivilegeRules.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/java/com/android/internal/telephony/uicc/UiccCarrierPrivilegeRules.java')
-rw-r--r--src/java/com/android/internal/telephony/uicc/UiccCarrierPrivilegeRules.java34
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;