aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRambo Wang <rambowang@google.com>2023-10-13 18:56:00 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2023-10-13 18:56:00 +0000
commitf236b7418f617b8eb930d975f4311a037f1514ee (patch)
treeb95a192c52caea91f22b9f0f9ca680954af7c0aa
parent005529a3362740728c0b9da428bb1d88e691d9b6 (diff)
parent18764408864f2eb55e06585020bba9ee333bbbb2 (diff)
downloadtelephony-f236b7418f617b8eb930d975f4311a037f1514ee.tar.gz
Merge "Handle CarrierConfig change when user state is unlock" into main
-rw-r--r--src/java/com/android/internal/telephony/CarrierKeyDownloadManager.java21
-rw-r--r--tests/telephonytests/src/com/android/internal/telephony/CarrierKeyDownloadMgrTest.java55
2 files changed, 73 insertions, 3 deletions
diff --git a/src/java/com/android/internal/telephony/CarrierKeyDownloadManager.java b/src/java/com/android/internal/telephony/CarrierKeyDownloadManager.java
index beb6b2653d..195ef16165 100644
--- a/src/java/com/android/internal/telephony/CarrierKeyDownloadManager.java
+++ b/src/java/com/android/internal/telephony/CarrierKeyDownloadManager.java
@@ -30,6 +30,7 @@ import android.net.Uri;
import android.os.Handler;
import android.os.Message;
import android.os.PersistableBundle;
+import android.os.UserManager;
import android.telephony.CarrierConfigManager;
import android.telephony.ImsiEncryptionInfo;
import android.telephony.SubscriptionManager;
@@ -108,6 +109,7 @@ public class CarrierKeyDownloadManager extends Handler {
private boolean mAllowedOverMeteredNetwork = false;
private boolean mDeleteOldKeyAfterDownload = false;
private TelephonyManager mTelephonyManager;
+ private UserManager mUserManager;
@VisibleForTesting
public String mMccMncForDownload;
@@ -125,18 +127,35 @@ public class CarrierKeyDownloadManager extends Handler {
mDownloadManager = (DownloadManager) mContext.getSystemService(Context.DOWNLOAD_SERVICE);
mTelephonyManager = mContext.getSystemService(TelephonyManager.class)
.createForSubscriptionId(mPhone.getSubId());
+ mUserManager = mContext.getSystemService(UserManager.class);
CarrierConfigManager carrierConfigManager = mContext.getSystemService(
CarrierConfigManager.class);
// Callback which directly handle config change should be executed on handler thread
carrierConfigManager.registerCarrierConfigChangeListener(this::post,
(slotIndex, subId, carrierId, specificCarrierId) -> {
- if (slotIndex == mPhone.getPhoneId()) {
+ boolean isUserUnlocked = mUserManager.isUserUnlocked();
+
+ if (isUserUnlocked && slotIndex == mPhone.getPhoneId()) {
Log.d(LOG_TAG, "Carrier Config changed: slotIndex=" + slotIndex);
handleAlarmOrConfigChange();
+ } else {
+ Log.d(LOG_TAG, "User is locked");
+ mContext.registerReceiver(mUserUnlockedReceiver, new IntentFilter(
+ Intent.ACTION_USER_UNLOCKED));
}
});
}
+ private final BroadcastReceiver mUserUnlockedReceiver = new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ if (Intent.ACTION_USER_UNLOCKED.equals(intent.getAction())) {
+ Log.d(LOG_TAG, "Received UserUnlockedReceiver");
+ handleAlarmOrConfigChange();
+ }
+ }
+ };
+
private final BroadcastReceiver mDownloadReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
diff --git a/tests/telephonytests/src/com/android/internal/telephony/CarrierKeyDownloadMgrTest.java b/tests/telephonytests/src/com/android/internal/telephony/CarrierKeyDownloadMgrTest.java
index 40e1821dba..9fd89ffcb1 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/CarrierKeyDownloadMgrTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/CarrierKeyDownloadMgrTest.java
@@ -94,7 +94,7 @@ public class CarrierKeyDownloadMgrTest extends TelephonyTest {
super.setUp(getClass().getSimpleName());
mBundle = mContextFixture.getCarrierConfigBundle();
when(mCarrierConfigManager.getConfigForSubId(anyInt(), any())).thenReturn(mBundle);
-
+ when(mUserManager.isUserUnlocked()).thenReturn(true);
// Capture listener to emulate the carrier config change notification used later
ArgumentCaptor<CarrierConfigManager.CarrierConfigChangeListener> listenerArgumentCaptor =
ArgumentCaptor.forClass(CarrierConfigManager.CarrierConfigChangeListener.class);
@@ -342,7 +342,50 @@ public class CarrierKeyDownloadMgrTest extends TelephonyTest {
**/
@Test
@SmallTest
- public void testCarrierConfigChanged() {
+ public void testCarrierConfigChangedWithUserUnlocked() {
+ CarrierConfigManager carrierConfigManager = (CarrierConfigManager)
+ mContext.getSystemService(Context.CARRIER_CONFIG_SERVICE);
+ int slotId = mPhone.getPhoneId();
+ PersistableBundle bundle = carrierConfigManager.getConfigForSubId(slotId);
+ bundle.putInt(CarrierConfigManager.IMSI_KEY_AVAILABILITY_INT, 3);
+ bundle.putString(CarrierConfigManager.IMSI_KEY_DOWNLOAD_URL_STRING, mURL);
+
+ when(mTelephonyManager.getSimOperator(anyInt())).thenReturn("310260");
+ when(mTelephonyManager.getSimCarrierId()).thenReturn(1);
+ mCarrierConfigChangeListener.onCarrierConfigChanged(0 /* slotIndex */,
+ SubscriptionManager.INVALID_SUBSCRIPTION_ID,
+ TelephonyManager.UNKNOWN_CARRIER_ID, TelephonyManager.UNKNOWN_CARRIER_ID);
+ processAllMessages();
+ assertEquals("310260", mCarrierKeyDM.mMccMncForDownload);
+ assertEquals(1, mCarrierKeyDM.mCarrierId);
+ }
+
+ @Test
+ @SmallTest
+ public void testCarrierConfigChangedWithUserLocked() {
+ when(mUserManager.isUserUnlocked()).thenReturn(false);
+ CarrierConfigManager carrierConfigManager = (CarrierConfigManager)
+ mContext.getSystemService(Context.CARRIER_CONFIG_SERVICE);
+ int slotId = mPhone.getPhoneId();
+ PersistableBundle bundle = carrierConfigManager.getConfigForSubId(slotId);
+ bundle.putInt(CarrierConfigManager.IMSI_KEY_AVAILABILITY_INT, 3);
+ bundle.putString(CarrierConfigManager.IMSI_KEY_DOWNLOAD_URL_STRING, mURL);
+
+ when(mTelephonyManager.getSimOperator(anyInt())).thenReturn("310260");
+ when(mTelephonyManager.getSimCarrierId()).thenReturn(1);
+ mCarrierConfigChangeListener.onCarrierConfigChanged(0 /* slotIndex */,
+ SubscriptionManager.INVALID_SUBSCRIPTION_ID,
+ TelephonyManager.UNKNOWN_CARRIER_ID, TelephonyManager.UNKNOWN_CARRIER_ID);
+ processAllMessages();
+ assertNull(mCarrierKeyDM.mMccMncForDownload);
+ assertEquals(0, mCarrierKeyDM.mCarrierId);
+ }
+
+ @Test
+ @SmallTest
+ public void testUserLockedAfterCarrierConfigChanged() {
+ // User is locked at beginning
+ when(mUserManager.isUserUnlocked()).thenReturn(false);
CarrierConfigManager carrierConfigManager = (CarrierConfigManager)
mContext.getSystemService(Context.CARRIER_CONFIG_SERVICE);
int slotId = mPhone.getPhoneId();
@@ -350,12 +393,20 @@ public class CarrierKeyDownloadMgrTest extends TelephonyTest {
bundle.putInt(CarrierConfigManager.IMSI_KEY_AVAILABILITY_INT, 3);
bundle.putString(CarrierConfigManager.IMSI_KEY_DOWNLOAD_URL_STRING, mURL);
+ // Carrier config change received
when(mTelephonyManager.getSimOperator(anyInt())).thenReturn("310260");
when(mTelephonyManager.getSimCarrierId()).thenReturn(1);
mCarrierConfigChangeListener.onCarrierConfigChanged(0 /* slotIndex */,
SubscriptionManager.INVALID_SUBSCRIPTION_ID,
TelephonyManager.UNKNOWN_CARRIER_ID, TelephonyManager.UNKNOWN_CARRIER_ID);
processAllMessages();
+
+ // User unlocked event received
+ Intent mIntent = new Intent(Intent.ACTION_USER_UNLOCKED);
+ mContext.sendBroadcast(mIntent);
+ when(mUserManager.isUserUnlocked()).thenReturn(true);
+ processAllMessages();
+
assertEquals("310260", mCarrierKeyDM.mMccMncForDownload);
assertEquals(1, mCarrierKeyDM.mCarrierId);
}