Merge "Update CellBroadcastConfigTraker state for cleanupCdma case" into main
diff --git a/src/java/com/android/internal/telephony/CellBroadcastConfigTracker.java b/src/java/com/android/internal/telephony/CellBroadcastConfigTracker.java
index adb9904..6cc2d77 100644
--- a/src/java/com/android/internal/telephony/CellBroadcastConfigTracker.java
+++ b/src/java/com/android/internal/telephony/CellBroadcastConfigTracker.java
@@ -31,6 +31,7 @@
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.telephony.cdma.CdmaSmsBroadcastConfigInfo;
+import com.android.internal.telephony.flags.Flags;
import com.android.internal.telephony.gsm.SmsBroadcastConfigInfo;
import com.android.internal.util.State;
import com.android.internal.util.StateMachine;
@@ -192,7 +193,8 @@
// set gsm config if the config is changed
setGsmConfig(request.get3gppRanges(), request);
transitionTo(mGsmConfiguringState);
- } else if (!mCbRanges3gpp2.equals(request.get3gpp2Ranges())) {
+ } else if (!Flags.cleanupCdma()
+ && !mCbRanges3gpp2.equals(request.get3gpp2Ranges())) {
// set cdma config directly if no gsm config change but cdma config is
// changed
setCdmaConfig(request.get3gpp2Ranges(), request);
@@ -283,7 +285,8 @@
}
if (ar.exception == null) {
mCbRanges3gpp = request.get3gppRanges();
- if (!mCbRanges3gpp2.equals(request.get3gpp2Ranges())) {
+ if (!Flags.cleanupCdma()
+ && !mCbRanges3gpp2.equals(request.get3gpp2Ranges())) {
// set cdma config and transit to cdma configuring state if the config
// is changed.
setCdmaConfig(request.get3gpp2Ranges(), request);
diff --git a/tests/telephonytests/src/com/android/internal/telephony/CellBroadcastConfigTrackerTest.java b/tests/telephonytests/src/com/android/internal/telephony/CellBroadcastConfigTrackerTest.java
index 6e6d4e4..0fdf90e 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/CellBroadcastConfigTrackerTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/CellBroadcastConfigTrackerTest.java
@@ -43,6 +43,7 @@
import com.android.internal.telephony.cdma.CdmaSmsBroadcastConfigInfo;
import com.android.internal.telephony.flags.FeatureFlags;
+import com.android.internal.telephony.flags.Flags;
import com.android.internal.telephony.gsm.SmsBroadcastConfigInfo;
import org.junit.After;
@@ -132,6 +133,7 @@
verify(mSpyCi, never()).setCdmaBroadcastConfig(any(), any());
verify(mSpyCi, never()).setCdmaBroadcastActivation(anyBoolean(), any());
+ List<CellBroadcastIdRange> gsmRanges = new ArrayList<>(ranges);
assertEquals(mPhone.getCellBroadcastIdRanges(), mergeRangesAsNeeded(ranges));
//Verify to set cdma config and activate, but no more for gsm as no change
@@ -150,39 +152,62 @@
processAllMessages();
verify(mSpyCi, times(1)).setGsmBroadcastConfig(any(), any());
- verify(mSpyCi, times(1)).setCdmaBroadcastConfig(cdmaCaptor.capture(), msgCaptor.capture());
- List<CdmaSmsBroadcastConfigInfo> cdmaArgs = Arrays.asList(
- (CdmaSmsBroadcastConfigInfo[]) cdmaCaptor.getValue());
- assertEquals(cdmaConfigs, cdmaArgs);
+ List<CdmaSmsBroadcastConfigInfo> cdmaArgs;
+ if (!Flags.cleanupCdma()) {
+ verify(mSpyCi, times(1)).setCdmaBroadcastConfig(cdmaCaptor.capture(),
+ msgCaptor.capture());
+ cdmaArgs = Arrays.asList(
+ (CdmaSmsBroadcastConfigInfo[]) cdmaCaptor.getValue());
+ assertEquals(cdmaConfigs, cdmaArgs);
- msg = msgCaptor.getValue();
- assertNotNull(msg);
- AsyncResult.forMessage(msg);
- msg.sendToTarget();
- processAllMessages();
+ msg = msgCaptor.getValue();
+ assertNotNull(msg);
+ AsyncResult.forMessage(msg);
+ msg.sendToTarget();
+ processAllMessages();
+ } else {
+ verify(mSpyCi, never()).setCdmaBroadcastConfig(any(), any());
+ }
verify(mSpyCi, times(1)).setGsmBroadcastActivation(anyBoolean(), any());
- verify(mSpyCi, times(1)).setCdmaBroadcastActivation(eq(true), msgCaptor.capture());
+ if (!Flags.cleanupCdma()) {
+ verify(mSpyCi, times(1)).setCdmaBroadcastActivation(eq(true), msgCaptor.capture());
- msg = msgCaptor.getValue();
- assertNotNull(msg);
- AsyncResult.forMessage(msg);
- msg.sendToTarget();
- processAllMessages();
+ msg = msgCaptor.getValue();
+ assertNotNull(msg);
+ AsyncResult.forMessage(msg);
+ msg.sendToTarget();
+ processAllMessages();
+ } else {
+ verify(mSpyCi, never()).setCdmaBroadcastActivation(anyBoolean(), any());
+ }
- assertEquals(mPhone.getCellBroadcastIdRanges(), mergeRangesAsNeeded(ranges));
+ if (!Flags.cleanupCdma()) {
+ assertEquals(mPhone.getCellBroadcastIdRanges(), mergeRangesAsNeeded(ranges));
+ } else {
+ assertEquals(mPhone.getCellBroadcastIdRanges(), mergeRangesAsNeeded(gsmRanges));
+ }
// Verify not to set cdma or gsm config as the config is not changed
mPhone.setCellBroadcastIdRanges(ranges, r -> assertTrue(
TelephonyManager.CELL_BROADCAST_RESULT_SUCCESS == r));
processAllMessages();
- verify(mSpyCi, times(1)).setCdmaBroadcastConfig(any(), any());
- verify(mSpyCi, times(1)).setCdmaBroadcastActivation(anyBoolean(), any());
+ if (!Flags.cleanupCdma()) {
+ verify(mSpyCi, times(1)).setCdmaBroadcastConfig(any(), any());
+ verify(mSpyCi, times(1)).setCdmaBroadcastActivation(anyBoolean(), any());
+ } else {
+ verify(mSpyCi, never()).setCdmaBroadcastConfig(any(), any());
+ verify(mSpyCi, never()).setCdmaBroadcastActivation(anyBoolean(), any());
+ }
verify(mSpyCi, times(1)).setGsmBroadcastConfig(any(), any());
verify(mSpyCi, times(1)).setGsmBroadcastActivation(anyBoolean(), any());
- assertEquals(mPhone.getCellBroadcastIdRanges(), mergeRangesAsNeeded(ranges));
+ if (!Flags.cleanupCdma()) {
+ assertEquals(mPhone.getCellBroadcastIdRanges(), mergeRangesAsNeeded(ranges));
+ } else {
+ assertEquals(mPhone.getCellBroadcastIdRanges(), mergeRangesAsNeeded(gsmRanges));
+ }
// Verify to reset ranges with empty ranges list
mPhone.setCellBroadcastIdRanges(new ArrayList<>(), r -> assertTrue(
@@ -208,23 +233,29 @@
msg.sendToTarget();
processAllMessages();
- verify(mSpyCi, times(2)).setCdmaBroadcastConfig(cdmaCaptor.capture(), msgCaptor.capture());
- assertEquals(0, ((CdmaSmsBroadcastConfigInfo[]) cdmaCaptor.getValue()).length);
+ if (!Flags.cleanupCdma()) {
+ verify(mSpyCi, times(2)).setCdmaBroadcastConfig(cdmaCaptor.capture(),
+ msgCaptor.capture());
+ assertEquals(0, ((CdmaSmsBroadcastConfigInfo[]) cdmaCaptor.getValue()).length);
- msg = msgCaptor.getValue();
- assertNotNull(msg);
- AsyncResult.forMessage(msg);
- msg.sendToTarget();
- processAllMessages();
+ msg = msgCaptor.getValue();
+ assertNotNull(msg);
+ AsyncResult.forMessage(msg);
+ msg.sendToTarget();
+ processAllMessages();
- // Verify to deavtivate cdma broadcast on empty ranges
- verify(mSpyCi, times(1)).setCdmaBroadcastActivation(eq(false), msgCaptor.capture());
+ // Verify to deavtivate cdma broadcast on empty ranges
+ verify(mSpyCi, times(1)).setCdmaBroadcastActivation(eq(false), msgCaptor.capture());
- msg = msgCaptor.getValue();
- assertNotNull(msg);
- AsyncResult.forMessage(msg);
- msg.sendToTarget();
- processAllMessages();
+ msg = msgCaptor.getValue();
+ assertNotNull(msg);
+ AsyncResult.forMessage(msg);
+ msg.sendToTarget();
+ processAllMessages();
+ } else {
+ verify(mSpyCi, never()).setCdmaBroadcastConfig(any(), any());
+ verify(mSpyCi, never()).setCdmaBroadcastActivation(anyBoolean(), any());
+ }
assertTrue(mPhone.getCellBroadcastIdRanges().isEmpty());
@@ -252,25 +283,35 @@
msg.sendToTarget();
processAllMessages();
- verify(mSpyCi, times(3)).setCdmaBroadcastConfig(cdmaCaptor.capture(), msgCaptor.capture());
- cdmaArgs = Arrays.asList((CdmaSmsBroadcastConfigInfo[]) cdmaCaptor.getValue());
- assertEquals(cdmaConfigs, cdmaArgs);
+ if (!Flags.cleanupCdma()) {
+ verify(mSpyCi, times(3)).setCdmaBroadcastConfig(cdmaCaptor.capture(),
+ msgCaptor.capture());
+ cdmaArgs = Arrays.asList((CdmaSmsBroadcastConfigInfo[]) cdmaCaptor.getValue());
+ assertEquals(cdmaConfigs, cdmaArgs);
- msg = msgCaptor.getValue();
- assertNotNull(msg);
- AsyncResult.forMessage(msg);
- msg.sendToTarget();
- processAllMessages();
+ msg = msgCaptor.getValue();
+ assertNotNull(msg);
+ AsyncResult.forMessage(msg);
+ msg.sendToTarget();
+ processAllMessages();
- verify(mSpyCi, times(2)).setCdmaBroadcastActivation(eq(true), msgCaptor.capture());
+ verify(mSpyCi, times(2)).setCdmaBroadcastActivation(eq(true), msgCaptor.capture());
- msg = msgCaptor.getValue();
- assertNotNull(msg);
- AsyncResult.forMessage(msg);
- msg.sendToTarget();
- processAllMessages();
+ msg = msgCaptor.getValue();
+ assertNotNull(msg);
+ AsyncResult.forMessage(msg);
+ msg.sendToTarget();
+ processAllMessages();
+ } else {
+ verify(mSpyCi, never()).setCdmaBroadcastConfig(any(), any());
+ verify(mSpyCi, never()).setCdmaBroadcastActivation(anyBoolean(), any());
+ }
- assertEquals(mPhone.getCellBroadcastIdRanges(), mergeRangesAsNeeded(ranges));
+ if (!Flags.cleanupCdma()) {
+ assertEquals(mPhone.getCellBroadcastIdRanges(), mergeRangesAsNeeded(ranges));
+ } else {
+ assertEquals(mPhone.getCellBroadcastIdRanges(), mergeRangesAsNeeded(gsmRanges));
+ }
}
@Test
@@ -335,8 +376,9 @@
assertTrue(mPhone.getCellBroadcastIdRanges().isEmpty());
// Verify the result on setCdmaBroadcastConfig failure
- mPhone.setCellBroadcastIdRanges(ranges, r -> assertTrue(
- TelephonyManager.CELL_BROADCAST_RESULT_FAIL_CONFIG == r));
+ mPhone.setCellBroadcastIdRanges(ranges, !Flags.cleanupCdma()
+ ? r -> assertTrue(TelephonyManager.CELL_BROADCAST_RESULT_FAIL_CONFIG == r)
+ : r -> assertTrue(TelephonyManager.CELL_BROADCAST_RESULT_SUCCESS == r));
processAllMessages();
verify(mSpyCi, times(3)).setGsmBroadcastConfig(any(), msgCaptor.capture());
@@ -355,14 +397,17 @@
msg.sendToTarget();
processAllMessages();
- verify(mSpyCi, times(1)).setCdmaBroadcastConfig(any(), msgCaptor.capture());
+ if (!Flags.cleanupCdma()) {
+ verify(mSpyCi, times(1)).setCdmaBroadcastConfig(any(), msgCaptor.capture());
- msg = msgCaptor.getValue();
- assertNotNull(msg);
- AsyncResult.forMessage(msg).exception = new RuntimeException();
- msg.sendToTarget();
- processAllMessages();
-
+ msg = msgCaptor.getValue();
+ assertNotNull(msg);
+ AsyncResult.forMessage(msg).exception = new RuntimeException();
+ msg.sendToTarget();
+ processAllMessages();
+ } else {
+ verify(mSpyCi, times(0)).setCdmaBroadcastConfig(any(), any());
+ }
verify(mSpyCi, times(0)).setCdmaBroadcastActivation(anyBoolean(), any());
List<CellBroadcastIdRange> ranges3gpp = new ArrayList<>();
@@ -371,28 +416,34 @@
assertEquals(mPhone.getCellBroadcastIdRanges(), ranges3gpp);
// Verify the result on setCdmaBroadcastActivation failure
- mPhone.setCellBroadcastIdRanges(ranges, r -> assertTrue(
- TelephonyManager.CELL_BROADCAST_RESULT_FAIL_ACTIVATION == r));
+ mPhone.setCellBroadcastIdRanges(ranges, !Flags.cleanupCdma()
+ ? r -> assertTrue(TelephonyManager.CELL_BROADCAST_RESULT_FAIL_ACTIVATION == r)
+ : r -> assertTrue(TelephonyManager.CELL_BROADCAST_RESULT_SUCCESS == r));
processAllMessages();
// Verify no more calls as there is no change of ranges for 3gpp
verify(mSpyCi, times(3)).setGsmBroadcastConfig(any(), any());
verify(mSpyCi, times(2)).setGsmBroadcastActivation(anyBoolean(), any());
- verify(mSpyCi, times(2)).setCdmaBroadcastConfig(any(), msgCaptor.capture());
+ if (!Flags.cleanupCdma()) {
+ verify(mSpyCi, times(2)).setCdmaBroadcastConfig(any(), msgCaptor.capture());
- msg = msgCaptor.getValue();
- assertNotNull(msg);
- AsyncResult.forMessage(msg);
- msg.sendToTarget();
- processAllMessages();
+ msg = msgCaptor.getValue();
+ assertNotNull(msg);
+ AsyncResult.forMessage(msg);
+ msg.sendToTarget();
+ processAllMessages();
- verify(mSpyCi, times(1)).setCdmaBroadcastActivation(anyBoolean(), msgCaptor.capture());
+ verify(mSpyCi, times(1)).setCdmaBroadcastActivation(anyBoolean(), msgCaptor.capture());
- msg = msgCaptor.getValue();
- assertNotNull(msg);
- AsyncResult.forMessage(msg).exception = new RuntimeException();
- msg.sendToTarget();
- processAllMessages();
+ msg = msgCaptor.getValue();
+ assertNotNull(msg);
+ AsyncResult.forMessage(msg).exception = new RuntimeException();
+ msg.sendToTarget();
+ processAllMessages();
+ } else {
+ verify(mSpyCi, times(0)).setCdmaBroadcastConfig(any(), any());
+ verify(mSpyCi, times(0)).setCdmaBroadcastActivation(anyBoolean(), any());
+ }
assertEquals(mPhone.getCellBroadcastIdRanges(), ranges3gpp);
}