diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2022-02-03 19:31:32 +0000 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2022-02-03 19:31:32 +0000 |
commit | 7f0e0da93a450f0cbf7d6be6b0f808f3a7211034 (patch) | |
tree | 19de9109cf35e28bf0ab057543dc10b0f2d135f7 | |
parent | 24b84394a9b1c1e23a4d410a69e02974eada70bd (diff) | |
parent | 0017aeb564b5fa1e93558b5d7d42816de69d19af (diff) | |
download | CellBroadcastReceiver-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
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 |