summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2022-02-12 13:06:04 +0000
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2022-02-12 13:06:04 +0000
commit1cbc4aa0fc15d491fc7f4215ba499ca0fa83e4d8 (patch)
treee6b17c5071cf49c79c7b8819e617b3b4694ab558
parent311357c3309683825853c3624a54e918f6678f3d (diff)
parent0dc1b227eb03a43867543ad01a13b7b7f84ebd5b (diff)
downloadCellBroadcastReceiver-1cbc4aa0fc15d491fc7f4215ba499ca0fa83e4d8.tar.gz
Snap for 8178294 from 0dc1b227eb03a43867543ad01a13b7b7f84ebd5b to mainline-media-swcodec-release
Change-Id: Idd5d68e9df5d93139abff336ea919bddc5c39c52
-rw-r--r--src/com/android/cellbroadcastreceiver/CellBroadcastReceiver.java16
-rw-r--r--tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastReceiverTest.java20
-rw-r--r--tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastSettingsTest.java9
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