aboutsummaryrefslogtreecommitdiff
path: root/src/java/com/android/internal/telephony/uicc
diff options
context:
space:
mode:
authorrambowang <rambowang@google.com>2022-12-05 22:32:16 -0600
committerrambowang <rambowang@google.com>2023-01-30 11:36:33 -0600
commit24f60d181041068215df205ad1fc9cc06897a043 (patch)
tree68d95e0047f9a2f645a817116797e96fb1f4bbba /src/java/com/android/internal/telephony/uicc
parentf03d253e4de8a4e42c1d1a65ebf65794c246bd7e (diff)
downloadtelephony-24f60d181041068215df205ad1fc9cc06897a043.tar.gz
Update PinStorage with new CarrierConfigManager APIs
- Replace carrier config change receiver with listener - Retrieve subset carrier config to save memory Bug: 244087782 Test: atest PinStorageTest Change-Id: I519c66cbae205735ed8a4d39c34557c9a5789cb4
Diffstat (limited to 'src/java/com/android/internal/telephony/uicc')
-rw-r--r--src/java/com/android/internal/telephony/uicc/PinStorage.java33
1 files changed, 17 insertions, 16 deletions
diff --git a/src/java/com/android/internal/telephony/uicc/PinStorage.java b/src/java/com/android/internal/telephony/uicc/PinStorage.java
index ed16ee4403..acec14e83d 100644
--- a/src/java/com/android/internal/telephony/uicc/PinStorage.java
+++ b/src/java/com/android/internal/telephony/uicc/PinStorage.java
@@ -132,7 +132,6 @@ public class PinStorage extends Handler {
// Events
private static final int ICC_CHANGED_EVENT = 1;
- private static final int CARRIER_CONFIG_CHANGED_EVENT = 2;
private static final int TIMER_EXPIRATION_EVENT = 3;
private static final int USER_UNLOCKED_EVENT = 4;
private static final int SUPPLY_PIN_COMPLETE = 5;
@@ -156,14 +155,11 @@ public class PinStorage extends Handler {
private final SparseArray<byte[]> mRamStorage;
/** Receiver for the required intents. */
- private final BroadcastReceiver mCarrierConfigChangedReceiver = new BroadcastReceiver() {
+ private final BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
- if (CarrierConfigManager.ACTION_CARRIER_CONFIG_CHANGED.equals(action)) {
- int slotId = intent.getIntExtra(CarrierConfigManager.EXTRA_SLOT_INDEX, -1);
- sendMessage(obtainMessage(CARRIER_CONFIG_CHANGED_EVENT, slotId, 0));
- } else if (TelephonyManager.ACTION_SIM_CARD_STATE_CHANGED.equals(action)
+ if (TelephonyManager.ACTION_SIM_CARD_STATE_CHANGED.equals(action)
|| TelephonyManager.ACTION_SIM_APPLICATION_STATE_CHANGED.equals(action)) {
int slotId = intent.getIntExtra(PhoneConstants.PHONE_KEY, -1);
int state = intent.getIntExtra(
@@ -188,11 +184,16 @@ public class PinStorage extends Handler {
// Register for necessary intents.
IntentFilter intentFilter = new IntentFilter();
- intentFilter.addAction(CarrierConfigManager.ACTION_CARRIER_CONFIG_CHANGED);
intentFilter.addAction(TelephonyManager.ACTION_SIM_CARD_STATE_CHANGED);
intentFilter.addAction(TelephonyManager.ACTION_SIM_APPLICATION_STATE_CHANGED);
intentFilter.addAction(Intent.ACTION_USER_UNLOCKED);
- mContext.registerReceiver(mCarrierConfigChangedReceiver, intentFilter);
+ mContext.registerReceiver(mBroadcastReceiver, intentFilter);
+
+ CarrierConfigManager ccm = mContext.getSystemService(CarrierConfigManager.class);
+ // Callback directly handle config change and should be executed in handler thread
+ ccm.registerCarrierConfigChangeListener(this::post,
+ (slotIndex, subId, carrierId, specificCarrierId) ->
+ onCarrierConfigurationChanged(slotIndex));
// Initialize the long term secret key. This needs to be present in all cases:
// - if the device is not secure or is locked: key does not require user authentication
@@ -560,7 +561,7 @@ public class PinStorage extends Handler {
}
}
- private void onCarrierConfigChanged(int slotId) {
+ private void onCarrierConfigurationChanged(int slotId) {
logv("onCarrierConfigChanged[%d]", slotId);
if (!isCacheAllowed(slotId)) {
logd("onCarrierConfigChanged[%d] - PIN caching not allowed", slotId);
@@ -590,9 +591,6 @@ public class PinStorage extends Handler {
case ICC_CHANGED_EVENT:
onSimStatusChange(/* slotId= */ msg.arg1, /* state= */ msg.arg2);
break;
- case CARRIER_CONFIG_CHANGED_EVENT:
- onCarrierConfigChanged(/* slotId= */ msg.arg1);
- break;
case TIMER_EXPIRATION_EVENT:
onTimerExpiration();
break;
@@ -995,12 +993,15 @@ public class PinStorage extends Handler {
mContext.getSystemService(CarrierConfigManager.class);
if (configManager != null) {
Phone phone = PhoneFactory.getPhone(slotId);
- if (phone != null) {
- // If an invalid subId is used, this bundle will contain default values.
- config = configManager.getConfigForSubId(phone.getSubId());
+ try {
+ // If an invalid subId is used, this bundle will contain default values.
+ config = configManager.getConfigForSubId(phone.getSubId(),
+ CarrierConfigManager.KEY_STORE_SIM_PIN_FOR_UNATTENDED_REBOOT_BOOL);
+ } catch (RuntimeException e) {
+ loge("Can't get carrier config subset.");
}
}
- if (config == null) {
+ if (config == null || config.isEmpty()) {
config = CarrierConfigManager.getDefaultConfig();
}