diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2022-02-12 13:06:04 +0000 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2022-02-12 13:06:04 +0000 |
commit | 1cbc4aa0fc15d491fc7f4215ba499ca0fa83e4d8 (patch) | |
tree | e6b17c5071cf49c79c7b8819e617b3b4694ab558 | |
parent | 311357c3309683825853c3624a54e918f6678f3d (diff) | |
parent | 0dc1b227eb03a43867543ad01a13b7b7f84ebd5b (diff) | |
download | CellBroadcastReceiver-1cbc4aa0fc15d491fc7f4215ba499ca0fa83e4d8.tar.gz |
Snap for 8178294 from 0dc1b227eb03a43867543ad01a13b7b7f84ebd5b to mainline-media-swcodec-release
Change-Id: Idd5d68e9df5d93139abff336ea919bddc5c39c52
3 files changed, 35 insertions, 10 deletions
diff --git a/src/com/android/cellbroadcastreceiver/CellBroadcastReceiver.java b/src/com/android/cellbroadcastreceiver/CellBroadcastReceiver.java index 63be97ffd..70b2b1880 100644 --- a/src/com/android/cellbroadcastreceiver/CellBroadcastReceiver.java +++ b/src/com/android/cellbroadcastreceiver/CellBroadcastReceiver.java @@ -268,8 +268,16 @@ public class CellBroadcastReceiver extends BroadcastReceiver { * @param subId subId of the carrier config event */ private void resetSettingsAsNeeded(Context context, int subId) { + final int defaultSubId = SubscriptionManager.getDefaultSubscriptionId(); + // subId may be -1 if carrier config broadcast is being sent on SIM removal if (subId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) { + if (defaultSubId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) { + Log.d(TAG, "ignoring carrier config broadcast because subId=-1 and it's not" + + " defaultSubId when device is support multi-sim"); + return; + } + if (getPreviousCarrierIdForDefaultSub() == NO_PREVIOUS_CARRIER_ID) { // on first boot only, if no SIM is inserted we save the carrier ID -1. // This allows us to detect the carrier change from -1 to the carrier of the first @@ -280,7 +288,6 @@ public class CellBroadcastReceiver extends BroadcastReceiver { return; } - final int defaultSubId = SubscriptionManager.getDefaultSubscriptionId(); Log.d(TAG, "subId=" + subId + " defaultSubId=" + defaultSubId); if (defaultSubId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) { Log.d(TAG, "ignoring carrier config broadcast because defaultSubId=-1"); @@ -336,7 +343,12 @@ public class CellBroadcastReceiver extends BroadcastReceiver { .getInt(CARRIER_ID_FOR_DEFAULT_SUB_PREF, NO_PREVIOUS_CARRIER_ID); } - private void saveCarrierIdForDefaultSub(int carrierId) { + + /** + * store carrierId corresponding to the default subId. + */ + @VisibleForTesting + public void saveCarrierIdForDefaultSub(int carrierId) { getDefaultSharedPreferences().edit().putInt(CARRIER_ID_FOR_DEFAULT_SUB_PREF, carrierId) .apply(); } diff --git a/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastReceiverTest.java b/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastReceiverTest.java index 5b57ab548..a92d75dbc 100644 --- a/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastReceiverTest.java +++ b/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastReceiverTest.java @@ -16,8 +16,6 @@ package com.android.cellbroadcastreceiver.unit; -import static android.telephony.SubscriptionManager.INVALID_SUBSCRIPTION_ID; - import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.any; @@ -213,15 +211,27 @@ public class CellBroadcastReceiverTest extends CellBroadcastTest { } @Test - public void testInitializeSharedPreference_ifSystemUser_invalidSub() { + public void testInitializeSharedPreference_ifSystemUser_invalidSub() throws RemoteException { doReturn("An invalid action").when(mIntent).getAction(); doReturn(true).when(mUserManager).isSystemUser(); doReturn(true).when(mCellBroadcastReceiver).sharedPrefsHaveDefaultValues(); doNothing().when(mCellBroadcastReceiver).adjustReminderInterval(); + mockTelephonyManager(); - mCellBroadcastReceiver.initializeSharedPreference(mContext, INVALID_SUBSCRIPTION_ID); + int subId = 1; + // Not starting ConfigService, as default subId is valid and subId are invalid + doReturn(subId).when(mSubService).getDefaultSubId(); + mCellBroadcastReceiver.initializeSharedPreference(mContext, + SubscriptionManager.INVALID_SUBSCRIPTION_ID); + verify(mContext, never()).startService(any()); + verify(mCellBroadcastReceiver, never()).saveCarrierIdForDefaultSub(anyInt()); + + // Not starting ConfigService, as both default subId and subId are invalid + doReturn(SubscriptionManager.INVALID_SUBSCRIPTION_ID).when(mSubService).getDefaultSubId(); + mCellBroadcastReceiver.initializeSharedPreference(mContext, + SubscriptionManager.INVALID_SUBSCRIPTION_ID); verify(mContext, never()).startService(any()); - // Check interval. + verify(mCellBroadcastReceiver).saveCarrierIdForDefaultSub(anyInt()); } private void mockTelephonyManager() { diff --git a/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastSettingsTest.java b/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastSettingsTest.java index 16a5e8ea1..a6b64329e 100644 --- a/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastSettingsTest.java +++ b/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastSettingsTest.java @@ -51,6 +51,7 @@ import androidx.test.runner.AndroidJUnit4; import com.android.cellbroadcastreceiver.CellBroadcastConfigService; import com.android.cellbroadcastreceiver.CellBroadcastSettings; +import com.android.modules.utils.build.SdkLevel; import junit.framework.Assert; @@ -226,25 +227,27 @@ public class CellBroadcastSettingsTest extends // The resources will be cached for ths sub config.mcc = 123; config.mnc = 456; + // The cache logic is updated on S + final int timesExpected = SdkLevel.isAtLeastS() ? 2 : 1; CellBroadcastSettings.getResources( mockContext, SubscriptionManager.DEFAULT_SUBSCRIPTION_ID - 1); verify(mockContext, times(2)).getResources(); - verify(mockContext2, times(2)).getResources(); + verify(mockContext2, times(timesExpected)).getResources(); // The resources should be read from the cached directly CellBroadcastSettings.getResources( mockContext, SubscriptionManager.DEFAULT_SUBSCRIPTION_ID - 1); verify(mockContext, times(2)).getResources(); - verify(mockContext2, times(2)).getResources(); + verify(mockContext2, times(timesExpected)).getResources(); CellBroadcastSettings.getResources( mockContext, SubscriptionManager.DEFAULT_SUBSCRIPTION_ID - 2); verify(mockContext, times(2)).getResources(); - verify(mockContext2, times(3)).getResources(); + verify(mockContext2, times(timesExpected + 1)).getResources(); } @Test |