Loading src/java/com/android/internal/telephony/satellite/SatelliteSOSMessageRecommender.java +20 −4 Original line number Diff line number Diff line Loading @@ -33,6 +33,7 @@ import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.res.Resources; import android.net.Uri; import android.os.Bundle; import android.os.Handler; import android.os.Looper; Loading Loading @@ -221,7 +222,7 @@ public class SatelliteSOSMessageRecommender extends Handler { @VisibleForTesting(visibility = VisibleForTesting.Visibility.PRIVATE) protected ComponentName getDefaultSmsApp() { return SmsApplication.getDefaultSmsApplication(mContext, false); return SmsApplication.getDefaultSendToApplication(mContext, false); } private void handleEmergencyCallStartedEvent(@NonNull Connection connection) { Loading Loading @@ -627,14 +628,27 @@ public class SatelliteSOSMessageRecommender extends Handler { result.putInt(EXTRA_EMERGENCY_CALL_TO_SATELLITE_HANDOVER_TYPE, handoverType); if (!TextUtils.isEmpty(packageName) && !TextUtils.isEmpty(className)) { result.putParcelable(EXTRA_EMERGENCY_CALL_TO_SATELLITE_LAUNCH_INTENT, createHandoverAppLaunchPendingIntent(packageName, className, action)); createHandoverAppLaunchPendingIntent( handoverType, packageName, className, action)); } return result; } @NonNull private PendingIntent createHandoverAppLaunchPendingIntent( @NonNull private PendingIntent createHandoverAppLaunchPendingIntent(int handoverType, @NonNull String packageName, @NonNull String className, @Nullable String action) { Intent intent = new Intent(action); Intent intent; if (handoverType == EMERGENCY_CALL_TO_SATELLITE_HANDOVER_TYPE_T911) { String emergencyNumber = "911"; if (mEmergencyConnection != null) { emergencyNumber = mEmergencyConnection.getAddress().getSchemeSpecificPart(); } logd("emergencyNumber=" + emergencyNumber); Uri uri = Uri.parse("smsto:" + emergencyNumber); intent = new Intent(Intent.ACTION_SENDTO, uri); } else { intent = new Intent(action); } intent.setComponent(new ComponentName(packageName, className)); return PendingIntent.getActivity(mContext, 0, intent, PendingIntent.FLAG_ONE_SHOT | PendingIntent.FLAG_IMMUTABLE); Loading @@ -661,8 +675,10 @@ public class SatelliteSOSMessageRecommender extends Handler { private void handleCmdSendEventDisplayEmergencyMessageForcefully( @NonNull Connection connection) { logd("Sent EVENT_DISPLAY_EMERGENCY_MESSAGE to Dialer forcefully."); mEmergencyConnection = connection; Bundle extras = createExtraBundleForEventDisplayEmergencyMessage(); connection.sendConnectionEvent(TelephonyManager.EVENT_DISPLAY_EMERGENCY_MESSAGE, extras); mEmergencyConnection = null; } private boolean isMultiSim() { Loading tests/telephonytests/src/com/android/internal/telephony/satellite/SatelliteSOSMessageRecommenderTest.java +11 −6 Original line number Diff line number Diff line Loading @@ -38,11 +38,13 @@ import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.res.Resources; import android.net.Uri; import android.os.Bundle; import android.os.Looper; import android.os.OutcomeReceiver; import android.os.RemoteException; import android.telecom.Connection; import android.telecom.TelecomManager; import android.telephony.BinderCacheManager; import android.telephony.ServiceState; import android.telephony.SubscriptionManager; Loading Loading @@ -96,6 +98,7 @@ public class SatelliteSOSMessageRecommenderTest extends TelephonyTest { "android.com.google.default.SmsMmsApp"; private static final String DEFAULT_HANDOVER_INTENT_ACTION = "android.com.vendor.action.EMERGENCY_MESSAGING"; private static final String DEFAULT_T911_HANDOVER_INTENT_ACTION = Intent.ACTION_SENDTO; private TestSatelliteController mTestSatelliteController; private TestImsManager mTestImsManager; @Mock Loading @@ -105,6 +108,7 @@ public class SatelliteSOSMessageRecommenderTest extends TelephonyTest { @Mock private FeatureFlags mFeatureFlags; private TestConnection mTestConnection; private Uri mTestConnectionAddress = Uri.parse("tel:1234"); private TestSOSMessageRecommender mTestSOSMessageRecommender; private ServiceState mServiceState2; Loading @@ -127,6 +131,7 @@ public class SatelliteSOSMessageRecommenderTest extends TelephonyTest { mTestImsManager = new TestImsManager( mContext, PHONE_ID, mMmTelFeatureConnectionFactory, null, null, null); mTestConnection = new TestConnection(CALL_ID); mTestConnection.setAddress(mTestConnectionAddress, TelecomManager.PRESENTATION_ALLOWED); mPhones = new Phone[] {mPhone, mPhone2}; replaceInstance(PhoneFactory.class, "sPhones", null, mPhones); mServiceState2 = Mockito.mock(ServiceState.class); Loading @@ -151,7 +156,7 @@ public class SatelliteSOSMessageRecommenderTest extends TelephonyTest { public void testTimeoutBeforeEmergencyCallEnd_T911() { testTimeoutBeforeEmergencyCallEnd(EMERGENCY_CALL_TO_SATELLITE_HANDOVER_TYPE_T911, DEFAULT_SATELLITE_MESSAGING_PACKAGE, DEFAULT_SATELLITE_MESSAGING_CLASS, DEFAULT_HANDOVER_INTENT_ACTION); DEFAULT_T911_HANDOVER_INTENT_ACTION); } @Test Loading Loading @@ -269,7 +274,7 @@ public class SatelliteSOSMessageRecommenderTest extends TelephonyTest { assertTrue(mTestConnection.isEventSent(TelephonyManager.EVENT_DISPLAY_EMERGENCY_MESSAGE, EMERGENCY_CALL_TO_SATELLITE_HANDOVER_TYPE_T911, DEFAULT_SATELLITE_MESSAGING_PACKAGE, DEFAULT_SATELLITE_MESSAGING_CLASS, DEFAULT_HANDOVER_INTENT_ACTION)); DEFAULT_T911_HANDOVER_INTENT_ACTION)); assertUnregisterForStateChangedEventsTriggered(mPhone, 1, 2, 1); assertUnregisterForStateChangedEventsTriggered(mPhone2, 1, 2, 1); mTestSatelliteController.isOemEnabledSatelliteSupported = true; Loading Loading @@ -333,7 +338,7 @@ public class SatelliteSOSMessageRecommenderTest extends TelephonyTest { assertTrue(mTestConnection.isEventSent(TelephonyManager.EVENT_DISPLAY_EMERGENCY_MESSAGE, EMERGENCY_CALL_TO_SATELLITE_HANDOVER_TYPE_T911, DEFAULT_SATELLITE_MESSAGING_PACKAGE, DEFAULT_SATELLITE_MESSAGING_CLASS, DEFAULT_HANDOVER_INTENT_ACTION)); DEFAULT_SATELLITE_MESSAGING_CLASS, DEFAULT_T911_HANDOVER_INTENT_ACTION)); assertUnregisterForStateChangedEventsTriggered(mPhone, 1, 2, 1); assertUnregisterForStateChangedEventsTriggered(mPhone2, 1, 2, 1); assertEquals(0, mTestSOSMessageRecommender.getCountOfTimerStarted()); Loading Loading @@ -382,7 +387,7 @@ public class SatelliteSOSMessageRecommenderTest extends TelephonyTest { assertTrue(mTestConnection.isEventSent(TelephonyManager.EVENT_DISPLAY_EMERGENCY_MESSAGE, EMERGENCY_CALL_TO_SATELLITE_HANDOVER_TYPE_T911, DEFAULT_SATELLITE_MESSAGING_PACKAGE, DEFAULT_SATELLITE_MESSAGING_CLASS, DEFAULT_HANDOVER_INTENT_ACTION)); DEFAULT_SATELLITE_MESSAGING_CLASS, DEFAULT_T911_HANDOVER_INTENT_ACTION)); assertFalse(mTestSOSMessageRecommender.isTimerStarted()); assertEquals(0, mTestSOSMessageRecommender.getCountOfTimerStarted()); assertUnregisterForStateChangedEventsTriggered(mPhone, 2, 4, 2); Loading Loading @@ -421,7 +426,7 @@ public class SatelliteSOSMessageRecommenderTest extends TelephonyTest { assertTrue(mTestConnection.isEventSent(TelephonyManager.EVENT_DISPLAY_EMERGENCY_MESSAGE, EMERGENCY_CALL_TO_SATELLITE_HANDOVER_TYPE_T911, DEFAULT_SATELLITE_MESSAGING_PACKAGE, DEFAULT_SATELLITE_MESSAGING_CLASS, DEFAULT_HANDOVER_INTENT_ACTION)); DEFAULT_SATELLITE_MESSAGING_CLASS, DEFAULT_T911_HANDOVER_INTENT_ACTION)); assertUnregisterForStateChangedEventsTriggered(mPhone, 1, 2, 1); assertUnregisterForStateChangedEventsTriggered(mPhone2, 1, 2, 1); assertEquals(0, mTestSOSMessageRecommender.getCountOfTimerStarted()); Loading Loading @@ -626,7 +631,7 @@ public class SatelliteSOSMessageRecommenderTest extends TelephonyTest { assertTrue(mTestConnection.isEventSent(TelephonyManager.EVENT_DISPLAY_EMERGENCY_MESSAGE, EMERGENCY_CALL_TO_SATELLITE_HANDOVER_TYPE_T911, DEFAULT_SATELLITE_MESSAGING_PACKAGE, DEFAULT_SATELLITE_MESSAGING_CLASS, DEFAULT_HANDOVER_INTENT_ACTION)); DEFAULT_SATELLITE_MESSAGING_CLASS, DEFAULT_T911_HANDOVER_INTENT_ACTION)); assertUnregisterForStateChangedEventsTriggered(mPhone, 1, 2, 1); assertUnregisterForStateChangedEventsTriggered(mPhone2, 1, 2, 1); assertEquals(0, mTestSOSMessageRecommender.getCountOfTimerStarted()); Loading Loading
src/java/com/android/internal/telephony/satellite/SatelliteSOSMessageRecommender.java +20 −4 Original line number Diff line number Diff line Loading @@ -33,6 +33,7 @@ import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.res.Resources; import android.net.Uri; import android.os.Bundle; import android.os.Handler; import android.os.Looper; Loading Loading @@ -221,7 +222,7 @@ public class SatelliteSOSMessageRecommender extends Handler { @VisibleForTesting(visibility = VisibleForTesting.Visibility.PRIVATE) protected ComponentName getDefaultSmsApp() { return SmsApplication.getDefaultSmsApplication(mContext, false); return SmsApplication.getDefaultSendToApplication(mContext, false); } private void handleEmergencyCallStartedEvent(@NonNull Connection connection) { Loading Loading @@ -627,14 +628,27 @@ public class SatelliteSOSMessageRecommender extends Handler { result.putInt(EXTRA_EMERGENCY_CALL_TO_SATELLITE_HANDOVER_TYPE, handoverType); if (!TextUtils.isEmpty(packageName) && !TextUtils.isEmpty(className)) { result.putParcelable(EXTRA_EMERGENCY_CALL_TO_SATELLITE_LAUNCH_INTENT, createHandoverAppLaunchPendingIntent(packageName, className, action)); createHandoverAppLaunchPendingIntent( handoverType, packageName, className, action)); } return result; } @NonNull private PendingIntent createHandoverAppLaunchPendingIntent( @NonNull private PendingIntent createHandoverAppLaunchPendingIntent(int handoverType, @NonNull String packageName, @NonNull String className, @Nullable String action) { Intent intent = new Intent(action); Intent intent; if (handoverType == EMERGENCY_CALL_TO_SATELLITE_HANDOVER_TYPE_T911) { String emergencyNumber = "911"; if (mEmergencyConnection != null) { emergencyNumber = mEmergencyConnection.getAddress().getSchemeSpecificPart(); } logd("emergencyNumber=" + emergencyNumber); Uri uri = Uri.parse("smsto:" + emergencyNumber); intent = new Intent(Intent.ACTION_SENDTO, uri); } else { intent = new Intent(action); } intent.setComponent(new ComponentName(packageName, className)); return PendingIntent.getActivity(mContext, 0, intent, PendingIntent.FLAG_ONE_SHOT | PendingIntent.FLAG_IMMUTABLE); Loading @@ -661,8 +675,10 @@ public class SatelliteSOSMessageRecommender extends Handler { private void handleCmdSendEventDisplayEmergencyMessageForcefully( @NonNull Connection connection) { logd("Sent EVENT_DISPLAY_EMERGENCY_MESSAGE to Dialer forcefully."); mEmergencyConnection = connection; Bundle extras = createExtraBundleForEventDisplayEmergencyMessage(); connection.sendConnectionEvent(TelephonyManager.EVENT_DISPLAY_EMERGENCY_MESSAGE, extras); mEmergencyConnection = null; } private boolean isMultiSim() { Loading
tests/telephonytests/src/com/android/internal/telephony/satellite/SatelliteSOSMessageRecommenderTest.java +11 −6 Original line number Diff line number Diff line Loading @@ -38,11 +38,13 @@ import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.res.Resources; import android.net.Uri; import android.os.Bundle; import android.os.Looper; import android.os.OutcomeReceiver; import android.os.RemoteException; import android.telecom.Connection; import android.telecom.TelecomManager; import android.telephony.BinderCacheManager; import android.telephony.ServiceState; import android.telephony.SubscriptionManager; Loading Loading @@ -96,6 +98,7 @@ public class SatelliteSOSMessageRecommenderTest extends TelephonyTest { "android.com.google.default.SmsMmsApp"; private static final String DEFAULT_HANDOVER_INTENT_ACTION = "android.com.vendor.action.EMERGENCY_MESSAGING"; private static final String DEFAULT_T911_HANDOVER_INTENT_ACTION = Intent.ACTION_SENDTO; private TestSatelliteController mTestSatelliteController; private TestImsManager mTestImsManager; @Mock Loading @@ -105,6 +108,7 @@ public class SatelliteSOSMessageRecommenderTest extends TelephonyTest { @Mock private FeatureFlags mFeatureFlags; private TestConnection mTestConnection; private Uri mTestConnectionAddress = Uri.parse("tel:1234"); private TestSOSMessageRecommender mTestSOSMessageRecommender; private ServiceState mServiceState2; Loading @@ -127,6 +131,7 @@ public class SatelliteSOSMessageRecommenderTest extends TelephonyTest { mTestImsManager = new TestImsManager( mContext, PHONE_ID, mMmTelFeatureConnectionFactory, null, null, null); mTestConnection = new TestConnection(CALL_ID); mTestConnection.setAddress(mTestConnectionAddress, TelecomManager.PRESENTATION_ALLOWED); mPhones = new Phone[] {mPhone, mPhone2}; replaceInstance(PhoneFactory.class, "sPhones", null, mPhones); mServiceState2 = Mockito.mock(ServiceState.class); Loading @@ -151,7 +156,7 @@ public class SatelliteSOSMessageRecommenderTest extends TelephonyTest { public void testTimeoutBeforeEmergencyCallEnd_T911() { testTimeoutBeforeEmergencyCallEnd(EMERGENCY_CALL_TO_SATELLITE_HANDOVER_TYPE_T911, DEFAULT_SATELLITE_MESSAGING_PACKAGE, DEFAULT_SATELLITE_MESSAGING_CLASS, DEFAULT_HANDOVER_INTENT_ACTION); DEFAULT_T911_HANDOVER_INTENT_ACTION); } @Test Loading Loading @@ -269,7 +274,7 @@ public class SatelliteSOSMessageRecommenderTest extends TelephonyTest { assertTrue(mTestConnection.isEventSent(TelephonyManager.EVENT_DISPLAY_EMERGENCY_MESSAGE, EMERGENCY_CALL_TO_SATELLITE_HANDOVER_TYPE_T911, DEFAULT_SATELLITE_MESSAGING_PACKAGE, DEFAULT_SATELLITE_MESSAGING_CLASS, DEFAULT_HANDOVER_INTENT_ACTION)); DEFAULT_T911_HANDOVER_INTENT_ACTION)); assertUnregisterForStateChangedEventsTriggered(mPhone, 1, 2, 1); assertUnregisterForStateChangedEventsTriggered(mPhone2, 1, 2, 1); mTestSatelliteController.isOemEnabledSatelliteSupported = true; Loading Loading @@ -333,7 +338,7 @@ public class SatelliteSOSMessageRecommenderTest extends TelephonyTest { assertTrue(mTestConnection.isEventSent(TelephonyManager.EVENT_DISPLAY_EMERGENCY_MESSAGE, EMERGENCY_CALL_TO_SATELLITE_HANDOVER_TYPE_T911, DEFAULT_SATELLITE_MESSAGING_PACKAGE, DEFAULT_SATELLITE_MESSAGING_CLASS, DEFAULT_HANDOVER_INTENT_ACTION)); DEFAULT_SATELLITE_MESSAGING_CLASS, DEFAULT_T911_HANDOVER_INTENT_ACTION)); assertUnregisterForStateChangedEventsTriggered(mPhone, 1, 2, 1); assertUnregisterForStateChangedEventsTriggered(mPhone2, 1, 2, 1); assertEquals(0, mTestSOSMessageRecommender.getCountOfTimerStarted()); Loading Loading @@ -382,7 +387,7 @@ public class SatelliteSOSMessageRecommenderTest extends TelephonyTest { assertTrue(mTestConnection.isEventSent(TelephonyManager.EVENT_DISPLAY_EMERGENCY_MESSAGE, EMERGENCY_CALL_TO_SATELLITE_HANDOVER_TYPE_T911, DEFAULT_SATELLITE_MESSAGING_PACKAGE, DEFAULT_SATELLITE_MESSAGING_CLASS, DEFAULT_HANDOVER_INTENT_ACTION)); DEFAULT_SATELLITE_MESSAGING_CLASS, DEFAULT_T911_HANDOVER_INTENT_ACTION)); assertFalse(mTestSOSMessageRecommender.isTimerStarted()); assertEquals(0, mTestSOSMessageRecommender.getCountOfTimerStarted()); assertUnregisterForStateChangedEventsTriggered(mPhone, 2, 4, 2); Loading Loading @@ -421,7 +426,7 @@ public class SatelliteSOSMessageRecommenderTest extends TelephonyTest { assertTrue(mTestConnection.isEventSent(TelephonyManager.EVENT_DISPLAY_EMERGENCY_MESSAGE, EMERGENCY_CALL_TO_SATELLITE_HANDOVER_TYPE_T911, DEFAULT_SATELLITE_MESSAGING_PACKAGE, DEFAULT_SATELLITE_MESSAGING_CLASS, DEFAULT_HANDOVER_INTENT_ACTION)); DEFAULT_SATELLITE_MESSAGING_CLASS, DEFAULT_T911_HANDOVER_INTENT_ACTION)); assertUnregisterForStateChangedEventsTriggered(mPhone, 1, 2, 1); assertUnregisterForStateChangedEventsTriggered(mPhone2, 1, 2, 1); assertEquals(0, mTestSOSMessageRecommender.getCountOfTimerStarted()); Loading Loading @@ -626,7 +631,7 @@ public class SatelliteSOSMessageRecommenderTest extends TelephonyTest { assertTrue(mTestConnection.isEventSent(TelephonyManager.EVENT_DISPLAY_EMERGENCY_MESSAGE, EMERGENCY_CALL_TO_SATELLITE_HANDOVER_TYPE_T911, DEFAULT_SATELLITE_MESSAGING_PACKAGE, DEFAULT_SATELLITE_MESSAGING_CLASS, DEFAULT_HANDOVER_INTENT_ACTION)); DEFAULT_SATELLITE_MESSAGING_CLASS, DEFAULT_T911_HANDOVER_INTENT_ACTION)); assertUnregisterForStateChangedEventsTriggered(mPhone, 1, 2, 1); assertUnregisterForStateChangedEventsTriggered(mPhone2, 1, 2, 1); assertEquals(0, mTestSOSMessageRecommender.getCountOfTimerStarted()); Loading