From 15e22c8d49fb33f7aff90e3222aad2b2c14b1c2c Mon Sep 17 00:00:00 2001 From: Jack Yu Date: Tue, 14 Nov 2017 16:24:32 -0800 Subject: Added carrier customized ETWS test channel support Added carrier customized ETWS test channel support and changed channel 0x802 and 0x804 on Softbank to ETWS test channel so it's disabled by default unless users enable it. Test: Manual and unit tests bug: 69145050 Merged-In: I39d48d08f7aac9f601eaba8291176bff58bc4069 Change-Id: I39d48d08f7aac9f601eaba8291176bff58bc4069 (cherry picked from commit 5eb334ffb44b27ab76703a28f391e5008be9ad96) (cherry picked from commit ea2d2d27eed836974112dcc8b5109461f6689a3b) --- res/values-mcc440-mnc20/config.xml | 8 ++++---- .../cellbroadcastreceiver/CellBroadcastAlertAudio.java | 5 +++-- .../CellBroadcastAlertService.java | 18 ++++++++++++++---- .../cellbroadcastreceiver/CellBroadcastResources.java | 6 ++++-- .../CellBroadcastChannelManagerTest.java | 16 +++++++++++----- .../CellBroadcastSettingsTest.java | 2 ++ 6 files changed, 38 insertions(+), 17 deletions(-) diff --git a/res/values-mcc440-mnc20/config.xml b/res/values-mcc440-mnc20/config.xml index bc6925bde..fbe7edc32 100644 --- a/res/values-mcc440-mnc20/config.xml +++ b/res/values-mcc440-mnc20/config.xml @@ -16,10 +16,10 @@ - 0xA800:type=earthquake, emergency=true - 0xAFEE:type=tsunami, emergency=true + 0xA800:type=etws_earthquake, emergency=true + 0xAFEE:type=etws_tsunami, emergency=true 0xAC00-0xAFED:type=other, emergency=true - 0xA802:type=etws_default, emergency=true - 0xA804:type=etws_default, emergency=true + 0xA802:type=etws_test, emergency=true + 0xA804:type=etws_test, emergency=true diff --git a/src/com/android/cellbroadcastreceiver/CellBroadcastAlertAudio.java b/src/com/android/cellbroadcastreceiver/CellBroadcastAlertAudio.java index fe75c9683..68eaf2da6 100644 --- a/src/com/android/cellbroadcastreceiver/CellBroadcastAlertAudio.java +++ b/src/com/android/cellbroadcastreceiver/CellBroadcastAlertAudio.java @@ -420,11 +420,11 @@ public class CellBroadcastAlertAudio extends Service implements TextToSpeech.OnI // Load the tones based on type switch (alertType) { - case EARTHQUAKE: + case ETWS_EARTHQUAKE: setDataSourceFromResource(getResources(), mMediaPlayer, R.raw.etws_earthquake); break; - case TSUNAMI: + case ETWS_TSUNAMI: setDataSourceFromResource(getResources(), mMediaPlayer, R.raw.etws_tsunami); break; @@ -433,6 +433,7 @@ public class CellBroadcastAlertAudio extends Service implements TextToSpeech.OnI R.raw.etws_other_disaster); break; case ETWS_DEFAULT: + case ETWS_TEST: setDataSourceFromResource(getResources(), mMediaPlayer, R.raw.etws_default); break; diff --git a/src/com/android/cellbroadcastreceiver/CellBroadcastAlertService.java b/src/com/android/cellbroadcastreceiver/CellBroadcastAlertService.java index d80bff7ea..593a0b4a6 100644 --- a/src/com/android/cellbroadcastreceiver/CellBroadcastAlertService.java +++ b/src/com/android/cellbroadcastreceiver/CellBroadcastAlertService.java @@ -98,8 +98,9 @@ public class CellBroadcastAlertService extends Service { public enum AlertType { CMAS_DEFAULT, ETWS_DEFAULT, - EARTHQUAKE, - TSUNAMI, + ETWS_EARTHQUAKE, + ETWS_TSUNAMI, + ETWS_TEST, AREA, OTHER } @@ -440,6 +441,12 @@ public class CellBroadcastAlertService extends Service { // area info broadcasts are displayed in Settings status screen } return false; + } else if (range.mAlertType == AlertType.ETWS_TEST) { + return emergencyAlertEnabled + && !forceDisableEtwsCmasTest + && PreferenceManager.getDefaultSharedPreferences(this) + .getBoolean(CellBroadcastSettings.KEY_ENABLE_ETWS_TEST_ALERTS, + false); } return emergencyAlertEnabled; @@ -510,10 +517,13 @@ public class CellBroadcastAlertService extends Service { switch (warningType) { case SmsCbEtwsInfo.ETWS_WARNING_TYPE_EARTHQUAKE: case SmsCbEtwsInfo.ETWS_WARNING_TYPE_EARTHQUAKE_AND_TSUNAMI: - alertType = AlertType.EARTHQUAKE; + alertType = AlertType.ETWS_EARTHQUAKE; break; case SmsCbEtwsInfo.ETWS_WARNING_TYPE_TSUNAMI: - alertType = AlertType.TSUNAMI; + alertType = AlertType.ETWS_TSUNAMI; + break; + case SmsCbEtwsInfo.ETWS_WARNING_TYPE_TEST_MESSAGE: + alertType = AlertType.ETWS_TEST; break; case SmsCbEtwsInfo.ETWS_WARNING_TYPE_OTHER_EMERGENCY: alertType = AlertType.OTHER; diff --git a/src/com/android/cellbroadcastreceiver/CellBroadcastResources.java b/src/com/android/cellbroadcastreceiver/CellBroadcastResources.java index 9946ce97d..05cb77240 100644 --- a/src/com/android/cellbroadcastreceiver/CellBroadcastResources.java +++ b/src/com/android/cellbroadcastreceiver/CellBroadcastResources.java @@ -304,10 +304,12 @@ public class CellBroadcastResources { switch (range.mAlertType) { case CMAS_DEFAULT: return R.string.pws_other_message_identifiers; - case EARTHQUAKE: + case ETWS_EARTHQUAKE: return R.string.etws_earthquake_warning; - case TSUNAMI: + case ETWS_TSUNAMI: return R.string.etws_tsunami_warning; + case ETWS_TEST: + return R.string.etws_test_message; case ETWS_DEFAULT: case OTHER: return R.string.etws_other_emergency_type; diff --git a/tests/unit/src/com/android/cellbroadcastreceiver/CellBroadcastChannelManagerTest.java b/tests/unit/src/com/android/cellbroadcastreceiver/CellBroadcastChannelManagerTest.java index 264ee3da7..b86234f58 100644 --- a/tests/unit/src/com/android/cellbroadcastreceiver/CellBroadcastChannelManagerTest.java +++ b/tests/unit/src/com/android/cellbroadcastreceiver/CellBroadcastChannelManagerTest.java @@ -53,11 +53,12 @@ public class CellBroadcastChannelManagerTest extends CellBroadcastTest { @SmallTest public void testGetCellBroadcastChannelRanges() throws Exception { putResources(R.array.additional_cbs_channels_strings, new String[]{ - "12:type=earthquake, emergency=true", - "456:type=tsunami, emergency=true", + "12:type=etws_earthquake, emergency=true", + "456:type=etws_tsunami, emergency=true", "0xAC00-0xAFED:type=other, emergency=false", "54-60:emergency=true", - "100-200" + "100-200", + "0xA804:type=etws_test, emergency=true" }); ArrayList list = CellBroadcastChannelManager.getInstance() @@ -65,12 +66,12 @@ public class CellBroadcastChannelManagerTest extends CellBroadcastTest { assertEquals(12, list.get(0).mStartId); assertEquals(12, list.get(0).mEndId); - assertEquals(AlertType.EARTHQUAKE, list.get(0).mAlertType); + assertEquals(AlertType.ETWS_EARTHQUAKE, list.get(0).mAlertType); assertTrue(list.get(0).mIsEmergency); assertEquals(456, list.get(1).mStartId); assertEquals(456, list.get(1).mEndId); - assertEquals(AlertType.TSUNAMI, list.get(1).mAlertType); + assertEquals(AlertType.ETWS_TSUNAMI, list.get(1).mAlertType); assertTrue(list.get(1).mIsEmergency); assertEquals(0xAC00, list.get(2).mStartId); @@ -87,5 +88,10 @@ public class CellBroadcastChannelManagerTest extends CellBroadcastTest { assertEquals(200, list.get(4).mEndId); assertEquals(AlertType.CMAS_DEFAULT, list.get(4).mAlertType); assertFalse(list.get(4).mIsEmergency); + + assertEquals(0xA804, list.get(5).mStartId); + assertEquals(0xA804, list.get(5).mEndId); + assertEquals(AlertType.ETWS_TEST, list.get(5).mAlertType); + assertTrue(list.get(5).mIsEmergency); } } diff --git a/tests/unit/src/com/android/cellbroadcastreceiver/CellBroadcastSettingsTest.java b/tests/unit/src/com/android/cellbroadcastreceiver/CellBroadcastSettingsTest.java index e4ea05fdc..f342a58d7 100644 --- a/tests/unit/src/com/android/cellbroadcastreceiver/CellBroadcastSettingsTest.java +++ b/tests/unit/src/com/android/cellbroadcastreceiver/CellBroadcastSettingsTest.java @@ -23,6 +23,7 @@ import android.app.Instrumentation; import android.content.Context; import android.content.Intent; import android.support.test.InstrumentationRegistry; +import android.support.test.filters.FlakyTest; import android.support.test.runner.AndroidJUnit4; import android.support.test.uiautomator.UiDevice; @@ -45,6 +46,7 @@ public class CellBroadcastSettingsTest { mDevice = UiDevice.getInstance(mInstrumentation); } + @FlakyTest @Test public void testRotate_alertReminderDialogOpen_shouldNotCrash() { mInstrumentation.startActivitySync(createActivityIntent()); -- cgit v1.2.3