summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2022-02-03 19:31:32 +0000
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2022-02-03 19:31:32 +0000
commit7f0e0da93a450f0cbf7d6be6b0f808f3a7211034 (patch)
tree19de9109cf35e28bf0ab057543dc10b0f2d135f7
parent24b84394a9b1c1e23a4d410a69e02974eada70bd (diff)
parent0017aeb564b5fa1e93558b5d7d42816de69d19af (diff)
downloadCellBroadcastReceiver-android12-mainline-permission-release.tar.gz
Snap for 8146118 from 0017aeb564b5fa1e93558b5d7d42816de69d19af to mainline-permission-releaseandroid-mainline-12.0.0_r93android12-mainline-permission-release
Change-Id: Ie0fb46cd558bb8cf2df0c4f2efc483908f8f3261
-rw-r--r--AndroidManifest.xml1
-rw-r--r--AndroidManifest_Platform.xml1
-rw-r--r--src/com/android/cellbroadcastreceiver/CellBroadcastBackupAgent.java3
-rw-r--r--src/com/android/cellbroadcastreceiver/CellBroadcastInternalReceiver.java12
-rw-r--r--src/com/android/cellbroadcastreceiver/CellBroadcastReceiver.java3
-rw-r--r--tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastBackupAgentTest.java15
-rw-r--r--tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastConfigServiceTest.java130
-rw-r--r--tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastInternalReceiverTest.java13
-rw-r--r--tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastReceiverTest.java3
9 files changed, 171 insertions, 10 deletions
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index bf33287e9..e40912d04 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -151,7 +151,6 @@
<action android:name="android.telephony.action.CARRIER_CONFIG_CHANGED" />
<action android:name="android.provider.action.SMS_EMERGENCY_CB_RECEIVED" />
<action android:name="android.provider.Telephony.SMS_CB_RECEIVED" />
- <action android:name="android.cellbroadcastreceiver.START_CONFIG" />
<action android:name="android.provider.Telephony.SMS_SERVICE_CATEGORY_PROGRAM_DATA_RECEIVED" />
<action android:name="android.intent.action.LOCALE_CHANGED" />
<action android:name="android.intent.action.SERVICE_STATE" />
diff --git a/AndroidManifest_Platform.xml b/AndroidManifest_Platform.xml
index be36e2f91..2b06c6a3e 100644
--- a/AndroidManifest_Platform.xml
+++ b/AndroidManifest_Platform.xml
@@ -129,7 +129,6 @@
<intent-filter>
<action android:name="android.provider.action.SMS_EMERGENCY_CB_RECEIVED" />
<action android:name="android.provider.Telephony.SMS_CB_RECEIVED" />
- <action android:name="android.cellbroadcastreceiver.START_CONFIG" />
<action android:name="android.provider.Telephony.SMS_SERVICE_CATEGORY_PROGRAM_DATA_RECEIVED" />
<action android:name="android.intent.action.LOCALE_CHANGED" />
<action android:name="android.telephony.action.DEFAULT_SMS_SUBSCRIPTION_CHANGED" />
diff --git a/src/com/android/cellbroadcastreceiver/CellBroadcastBackupAgent.java b/src/com/android/cellbroadcastreceiver/CellBroadcastBackupAgent.java
index 620276c83..185a86a52 100644
--- a/src/com/android/cellbroadcastreceiver/CellBroadcastBackupAgent.java
+++ b/src/com/android/cellbroadcastreceiver/CellBroadcastBackupAgent.java
@@ -48,7 +48,8 @@ public class CellBroadcastBackupAgent extends BackupAgentHelper
@Override
public void onRestoreFinished() {
Log.d(TAG, "Restore finished.");
- Intent intent = new Intent(CellBroadcastReceiver.CELLBROADCAST_START_CONFIG_ACTION);
+ Intent intent = new Intent(getApplicationContext(), CellBroadcastInternalReceiver.class);
+ intent.setAction(CellBroadcastReceiver.CELLBROADCAST_START_CONFIG_ACTION);
// Cell broadcast was configured during boot up before the shared preference is restored,
// we need to re-configure it.
diff --git a/src/com/android/cellbroadcastreceiver/CellBroadcastInternalReceiver.java b/src/com/android/cellbroadcastreceiver/CellBroadcastInternalReceiver.java
index 455c5b68c..9a7d3f656 100644
--- a/src/com/android/cellbroadcastreceiver/CellBroadcastInternalReceiver.java
+++ b/src/com/android/cellbroadcastreceiver/CellBroadcastInternalReceiver.java
@@ -45,12 +45,24 @@ public class CellBroadcastInternalReceiver extends BroadcastReceiver {
});
}
+ /**
+ * This method's purpose if to enable unit testing
+ */
+ @VisibleForTesting
+ public void startConfigServiceToEnableChannels(Context context) {
+ CellBroadcastReceiver.startConfigService(context,
+ CellBroadcastConfigService.ACTION_ENABLE_CHANNELS);
+ }
+
@Override
public void onReceive(Context context, Intent intent) {
if (CellBroadcastReceiver.ACTION_MARK_AS_READ.equals(intent.getAction())) {
final long deliveryTime = intent.getLongExtra(
CellBroadcastReceiver.EXTRA_DELIVERY_TIME, -1);
getCellBroadcastTask(context, deliveryTime);
+ } else if (CellBroadcastReceiver.CELLBROADCAST_START_CONFIG_ACTION.equals(
+ intent.getAction())) {
+ startConfigServiceToEnableChannels(context);
}
}
}
diff --git a/src/com/android/cellbroadcastreceiver/CellBroadcastReceiver.java b/src/com/android/cellbroadcastreceiver/CellBroadcastReceiver.java
index cab4ce5f3..63be97ffd 100644
--- a/src/com/android/cellbroadcastreceiver/CellBroadcastReceiver.java
+++ b/src/com/android/cellbroadcastreceiver/CellBroadcastReceiver.java
@@ -156,8 +156,7 @@ public class CellBroadcastReceiver extends BroadcastReceiver {
// going forward.
int ss = intent.getIntExtra(EXTRA_VOICE_REG_STATE, ServiceState.STATE_IN_SERVICE);
onServiceStateChanged(context, res, ss);
- } else if (CELLBROADCAST_START_CONFIG_ACTION.equals(action)
- || SubscriptionManager.ACTION_DEFAULT_SMS_SUBSCRIPTION_CHANGED.equals(action)) {
+ } else if (SubscriptionManager.ACTION_DEFAULT_SMS_SUBSCRIPTION_CHANGED.equals(action)) {
startConfigServiceToEnableChannels();
} else if (Telephony.Sms.Intents.ACTION_SMS_EMERGENCY_CB_RECEIVED.equals(action) ||
Telephony.Sms.Intents.SMS_CB_RECEIVED_ACTION.equals(action)) {
diff --git a/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastBackupAgentTest.java b/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastBackupAgentTest.java
index bfba23beb..97365a441 100644
--- a/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastBackupAgentTest.java
+++ b/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastBackupAgentTest.java
@@ -16,9 +16,10 @@
package com.android.cellbroadcastreceiver.unit;
-
+import static org.junit.Assert.assertEquals;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.verify;
import android.app.backup.BackupAgentHelper;
@@ -28,6 +29,7 @@ import android.content.Intent;
import android.os.UserHandle;
import com.android.cellbroadcastreceiver.CellBroadcastBackupAgent;
+import com.android.cellbroadcastreceiver.CellBroadcastInternalReceiver;
import org.junit.Before;
import org.junit.Test;
@@ -73,12 +75,17 @@ public class CellBroadcastBackupAgentTest {
@Test
public void testRestoreFinish() throws Exception {
+ final String packageName = CellBroadcastInternalReceiver.class.getPackage().getName();
+ final String className = CellBroadcastInternalReceiver.class.getName();
+ doReturn(mMockContext).when(mMockContext).getApplicationContext();
+ doReturn(packageName).when(mMockContext).getPackageName();
mockBackupDispatcher();
mBackupAgentUT.attach(mMockContext);
- ArgumentCaptor<Intent> intentArgumentCaptor = ArgumentCaptor.forClass(Intent.class);
+ ArgumentCaptor<Intent> intentArg = ArgumentCaptor.forClass(Intent.class);
mBackupAgentUT.onRestoreFinished();
- verify(mMockContext).sendBroadcastAsUser(intentArgumentCaptor.capture(),
- eq(UserHandle.SYSTEM));
+ verify(mMockContext).sendBroadcastAsUser(intentArg.capture(), eq(UserHandle.SYSTEM));
+ assertEquals(packageName, intentArg.getValue().getComponent().getPackageName());
+ assertEquals(className, intentArg.getValue().getComponent().getClassName());
}
}
diff --git a/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastConfigServiceTest.java b/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastConfigServiceTest.java
index 6d60b8ceb..6aae8bab6 100644
--- a/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastConfigServiceTest.java
+++ b/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastConfigServiceTest.java
@@ -147,6 +147,20 @@ public class CellBroadcastConfigServiceTest extends CellBroadcastTest {
"0x1003-0x1003:rat=cdma",
"0x1128-0x1128:rat=gsm",
});
+ putResources(com.android.cellbroadcastreceiver.R.array
+ .geo_fencing_trigger_messages_range_strings, new String[]{
+ "0x1130:rat=gsm, emergency=true",
+ });
+ putResources(com.android.cellbroadcastreceiver.R.array
+ .state_local_test_alert_range_strings, new String[]{
+ "0x112E:rat=gsm, emergency=true",
+ "0x112F:rat=gsm, emergency=true",
+ });
+ putResources(com.android.cellbroadcastreceiver.R.array
+ .public_safety_messages_channels_range_strings, new String[]{
+ "0x112C:rat=gsm, emergency=true",
+ "0x112D:rat=gsm, emergency=true",
+ });
}
@After
@@ -324,6 +338,30 @@ public class CellBroadcastConfigServiceTest extends CellBroadcastTest {
eq(SmsCbConstants.MESSAGE_ID_CMAS_ALERT_REQUIRED_MONTHLY_TEST),
eq(SmsCbConstants.MESSAGE_ID_CMAS_ALERT_REQUIRED_MONTHLY_TEST),
eq(SmsCbMessage.MESSAGE_FORMAT_3GPP));
+
+ verify(mMockedSmsService, times(1)).disableCellBroadcastRangeForSubscriber(
+ eq(0),
+ eq(SmsCbConstants.MESSAGE_ID_CMAS_ALERT_EXERCISE),
+ eq(SmsCbConstants.MESSAGE_ID_CMAS_ALERT_EXERCISE),
+ eq(SmsCbMessage.MESSAGE_FORMAT_3GPP));
+
+ verify(mMockedSmsService, times(1)).disableCellBroadcastRangeForSubscriber(
+ eq(0),
+ eq(SmsCbConstants.MESSAGE_ID_CMAS_ALERT_PUBLIC_SAFETY),
+ eq(SmsCbConstants.MESSAGE_ID_CMAS_ALERT_PUBLIC_SAFETY),
+ eq(SmsCbMessage.MESSAGE_FORMAT_3GPP));
+
+ verify(mMockedSmsService, times(1)).disableCellBroadcastRangeForSubscriber(
+ eq(0),
+ eq(SmsCbConstants.MESSAGE_ID_CMAS_ALERT_STATE_LOCAL_TEST),
+ eq(SmsCbConstants.MESSAGE_ID_CMAS_ALERT_STATE_LOCAL_TEST),
+ eq(SmsCbMessage.MESSAGE_FORMAT_3GPP));
+
+ verify(mMockedSmsService, times(1)).enableCellBroadcastRangeForSubscriber(
+ eq(0),
+ eq(SmsCbConstants.MESSAGE_ID_CMAS_GEO_FENCING_TRIGGER),
+ eq(SmsCbConstants.MESSAGE_ID_CMAS_GEO_FENCING_TRIGGER),
+ eq(SmsCbMessage.MESSAGE_FORMAT_3GPP));
}
/**
@@ -664,6 +702,98 @@ public class CellBroadcastConfigServiceTest extends CellBroadcastTest {
}
/**
+ * Test enabling channels for geo-fencing message
+ */
+ @Test
+ @SmallTest
+ public void testEnablingGeoFencingTriggeredChannel() throws Exception {
+ mConfigService.enableCellBroadcastChannels(SubscriptionManager.DEFAULT_SUBSCRIPTION_ID);
+
+ verify(mMockedSmsService, times(1)).enableCellBroadcastRangeForSubscriber(
+ eq(0),
+ eq(SmsCbConstants.MESSAGE_ID_CMAS_GEO_FENCING_TRIGGER),
+ eq(SmsCbConstants.MESSAGE_ID_CMAS_GEO_FENCING_TRIGGER),
+ eq(SmsCbMessage.MESSAGE_FORMAT_3GPP));
+
+ putResources(com.android.cellbroadcastreceiver.R.array
+ .geo_fencing_trigger_messages_range_strings, new String[]{
+ });
+
+ mConfigService.enableCellBroadcastChannels(SubscriptionManager.DEFAULT_SUBSCRIPTION_ID);
+ verify(mMockedSmsService, times(0)).disableCellBroadcastRangeForSubscriber(
+ eq(0),
+ eq(SmsCbConstants.MESSAGE_ID_CMAS_GEO_FENCING_TRIGGER),
+ eq(SmsCbConstants.MESSAGE_ID_CMAS_GEO_FENCING_TRIGGER),
+ eq(SmsCbMessage.MESSAGE_FORMAT_3GPP));
+ }
+
+ /**
+ * Test enabling channels for non-cmas series message
+ */
+ @Test
+ @SmallTest
+ public void testEnablingNonCmasMessages() throws Exception {
+ putResources(com.android.cellbroadcastreceiver.R.array
+ .emergency_alerts_channels_range_strings, new String[]{
+ "0xA000:rat=gsm",
+ });
+ setPreference(CellBroadcastSettings.KEY_ENABLE_ALERTS_MASTER_TOGGLE, true);
+ setPreference(CellBroadcastSettings.KEY_ENABLE_EMERGENCY_ALERTS, true);
+ mConfigService.enableCellBroadcastChannels(SubscriptionManager.DEFAULT_SUBSCRIPTION_ID);
+
+ verify(mMockedSmsService, times(1)).enableCellBroadcastRangeForSubscriber(
+ eq(0),
+ eq(0xA000),
+ eq(0xA000),
+ eq(SmsCbMessage.MESSAGE_FORMAT_3GPP));
+
+ setPreference(CellBroadcastSettings.KEY_ENABLE_ALERTS_MASTER_TOGGLE, true);
+ setPreference(CellBroadcastSettings.KEY_ENABLE_EMERGENCY_ALERTS, false);
+ mConfigService.enableCellBroadcastChannels(SubscriptionManager.DEFAULT_SUBSCRIPTION_ID);
+
+ verify(mMockedSmsService, times(1)).disableCellBroadcastRangeForSubscriber(
+ eq(0),
+ eq(0xA000),
+ eq(0xA000),
+ eq(SmsCbMessage.MESSAGE_FORMAT_3GPP));
+ }
+
+ /**
+ * Test enabling channels for additional channels
+ */
+ @Test
+ @SmallTest
+ public void testEnablingAdditionalChannels() throws Exception {
+ putResources(com.android.cellbroadcastreceiver.R.array
+ .additional_cbs_channels_strings, new String[]{
+ "0x032:type=area, emergency=false",
+ });
+ doReturn(true).when(mMockedSharedPreferences).getBoolean(
+ eq(CellBroadcastSettings.KEY_ENABLE_AREA_UPDATE_INFO_ALERTS), eq(false));
+ doReturn(mResources).when(mConfigService).getResources(anyInt(), anyString());
+ putResources(com.android.cellbroadcastreceiver.R.bool.config_showAreaUpdateInfoSettings,
+ true);
+
+ mConfigService.enableCellBroadcastChannels(SubscriptionManager.DEFAULT_SUBSCRIPTION_ID);
+
+ verify(mMockedSmsService, times(1)).enableCellBroadcastRangeForSubscriber(
+ eq(0),
+ eq(0x032),
+ eq(0x032),
+ eq(SmsCbMessage.MESSAGE_FORMAT_3GPP));
+
+ doReturn(false).when(mMockedSharedPreferences).getBoolean(
+ eq(CellBroadcastSettings.KEY_ENABLE_AREA_UPDATE_INFO_ALERTS), eq(false));
+ mConfigService.enableCellBroadcastChannels(SubscriptionManager.DEFAULT_SUBSCRIPTION_ID);
+
+ verify(mMockedSmsService, times(1)).disableCellBroadcastRangeForSubscriber(
+ eq(0),
+ eq(0x032),
+ eq(0x032),
+ eq(SmsCbMessage.MESSAGE_FORMAT_3GPP));
+ }
+
+ /**
* Test handling the intent to enable channels
*/
@Test
diff --git a/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastInternalReceiverTest.java b/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastInternalReceiverTest.java
index 713b91b8e..e89e31f86 100644
--- a/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastInternalReceiverTest.java
+++ b/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastInternalReceiverTest.java
@@ -16,6 +16,7 @@
package com.android.cellbroadcastreceiver.unit;
+import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyLong;
import static org.mockito.ArgumentMatchers.nullable;
import static org.mockito.Mockito.doNothing;
@@ -26,6 +27,7 @@ import static org.mockito.Mockito.verify;
import android.content.Context;
import android.content.Intent;
import android.content.res.Configuration;
+import android.os.UserManager;
import com.android.cellbroadcastreceiver.CellBroadcastInternalReceiver;
import com.android.cellbroadcastreceiver.CellBroadcastReceiver;
@@ -38,6 +40,7 @@ import org.mockito.MockitoAnnotations;
public class CellBroadcastInternalReceiverTest extends CellBroadcastTest {
@Mock Intent mIntent;
+ @Mock UserManager mUserManager;
private Configuration mConfiguration = new Configuration();
private CellBroadcastInternalReceiver mReceiver;
@@ -49,6 +52,8 @@ public class CellBroadcastInternalReceiverTest extends CellBroadcastTest {
doReturn(mConfiguration).when(mResources).getConfiguration();
mReceiver = spy(new CellBroadcastInternalReceiver());
doReturn(mContext).when(mContext).getApplicationContext();
+ doReturn(mUserManager).when(mContext).getSystemService(Context.USER_SERVICE);
+ doReturn(false).when(mUserManager).isSystemUser();
}
@Test
@@ -60,4 +65,12 @@ public class CellBroadcastInternalReceiverTest extends CellBroadcastTest {
verify(mReceiver).getCellBroadcastTask(nullable(Context.class), anyLong());
}
+ @Test
+ public void testOnReceive_cellbroadcastStartConfigAction() {
+ doReturn(CellBroadcastReceiver.CELLBROADCAST_START_CONFIG_ACTION).when(mIntent).getAction();
+ mReceiver.onReceive(mContext, mIntent);
+
+ verify(mReceiver).startConfigServiceToEnableChannels(any());
+ }
+
}
diff --git a/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastReceiverTest.java b/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastReceiverTest.java
index 77979e1de..5b57ab548 100644
--- a/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastReceiverTest.java
+++ b/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastReceiverTest.java
@@ -165,8 +165,9 @@ public class CellBroadcastReceiverTest extends CellBroadcastTest {
public void testOnReceive_cellbroadcastStartConfigAction() {
doReturn(CellBroadcastReceiver.CELLBROADCAST_START_CONFIG_ACTION).when(mIntent).getAction();
mCellBroadcastReceiver.onReceive(mContext, mIntent);
+
verify(mCellBroadcastReceiver, never()).initializeSharedPreference(any(), anyInt());
- verify(mCellBroadcastReceiver).startConfigServiceToEnableChannels();
+ verify(mCellBroadcastReceiver, never()).startConfigServiceToEnableChannels();
}
@Test