diff options
author | rambowang <rambowang@google.com> | 2022-12-05 22:32:16 -0600 |
---|---|---|
committer | rambowang <rambowang@google.com> | 2023-01-30 11:36:33 -0600 |
commit | 24f60d181041068215df205ad1fc9cc06897a043 (patch) | |
tree | 68d95e0047f9a2f645a817116797e96fb1f4bbba /src/java/com/android/internal/telephony/uicc | |
parent | f03d253e4de8a4e42c1d1a65ebf65794c246bd7e (diff) | |
download | telephony-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.java | 33 |
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(); } |