summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorGrace Jia <xiaotonj@google.com>2021-05-24 21:56:15 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2021-05-24 21:56:15 +0000
commitc5411e1a0b4998969c2fa87b0d01d643ebaf25c2 (patch)
treeea0f8371d0be825f256e5c72266c93e1c577f8e7 /tests
parent2525a6dfbe5d9fa99a5070143f5b6eb028d791e6 (diff)
parent302eff838040bc0fcbaf2d69bdceb9653a13878a (diff)
downloadplatform_packages_services_Telecomm-c5411e1a0b4998969c2fa87b0d01d643ebaf25c2.tar.gz
platform_packages_services_Telecomm-c5411e1a0b4998969c2fa87b0d01d643ebaf25c2.tar.bz2
platform_packages_services_Telecomm-c5411e1a0b4998969c2fa87b0d01d643ebaf25c2.zip
Merge "Block normal outgoing call when there's an ongoing emergency call." into sc-dev
Diffstat (limited to 'tests')
-rw-r--r--tests/src/com/android/server/telecom/tests/CallsManagerTest.java45
1 files changed, 45 insertions, 0 deletions
diff --git a/tests/src/com/android/server/telecom/tests/CallsManagerTest.java b/tests/src/com/android/server/telecom/tests/CallsManagerTest.java
index 71e6b3510..eccbecbd9 100644
--- a/tests/src/com/android/server/telecom/tests/CallsManagerTest.java
+++ b/tests/src/com/android/server/telecom/tests/CallsManagerTest.java
@@ -21,6 +21,7 @@ import static junit.framework.TestCase.fail;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyBoolean;
@@ -36,6 +37,8 @@ import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.reset;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.timeout;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@@ -54,6 +57,7 @@ import android.os.UserHandle;
import android.telecom.CallerInfo;
import android.telecom.Connection;
import android.telecom.DisconnectCause;
+import android.telecom.Log;
import android.telecom.PhoneAccount;
import android.telecom.PhoneAccountHandle;
import android.telecom.TelecomManager;
@@ -77,6 +81,7 @@ import com.android.server.telecom.CallsManagerListenerBase;
import com.android.server.telecom.ClockProxy;
import com.android.server.telecom.ConnectionServiceFocusManager;
import com.android.server.telecom.ConnectionServiceFocusManager.ConnectionServiceFocusManagerFactory;
+import com.android.server.telecom.ConnectionServiceWrapper;
import com.android.server.telecom.DefaultDialerCache;
import com.android.server.telecom.EmergencyCallHelper;
import com.android.server.telecom.HeadsetMediaButton;
@@ -1110,6 +1115,46 @@ public class CallsManagerTest extends TelecomTestCase {
assertFalse(mCallsManager.isInEmergencyCall());
}
+
+ @SmallTest
+ @Test
+ public void testBlockNonEmergencyCallDuringEmergencyCall() throws Exception {
+ // Setup a call which the network identified as an emergency call.
+ Call ongoingCall = addSpyCall();
+ ongoingCall.setConnectionProperties(Connection.PROPERTY_NETWORK_IDENTIFIED_EMERGENCY_CALL);
+ assertTrue(mCallsManager.isInEmergencyCall());
+
+ Call newCall = addSpyCall(CallState.NEW);
+ ConnectionServiceWrapper service = mock(ConnectionServiceWrapper.class);
+ doReturn(SIM_2_HANDLE.getComponentName()).when(service).getComponentName();
+
+ // Ensure contact info lookup succeeds
+ doAnswer(invocation -> {
+ Uri handle = invocation.getArgument(0);
+ CallerInfo info = new CallerInfo();
+ CompletableFuture<Pair<Uri, CallerInfo>> callerInfoFuture = new CompletableFuture<>();
+ callerInfoFuture.complete(new Pair<>(handle, info));
+ return callerInfoFuture;
+ }).when(mCallerInfoLookupHelper).startLookup(any(Uri.class));
+
+ // Ensure we have candidate phone account handle info.
+ when(mPhoneAccountRegistrar.getOutgoingPhoneAccountForScheme(any(), any())).thenReturn(
+ SIM_1_HANDLE);
+ when(mPhoneAccountRegistrar.getCallCapablePhoneAccounts(any(), anyBoolean(),
+ any(), anyInt(), anyInt())).thenReturn(
+ new ArrayList<>(Arrays.asList(SIM_1_HANDLE, SIM_2_HANDLE)));
+ mCallsManager.addConnectionServiceRepositoryCache(SIM_2_HANDLE.getComponentName(),
+ SIM_2_HANDLE.getUserHandle(), service);
+
+ CompletableFuture<Call> callFuture = mCallsManager.startOutgoingCall(
+ newCall.getHandle(), newCall.getTargetPhoneAccount(), new Bundle(),
+ UserHandle.CURRENT, new Intent(), "com.test.stuff");
+
+ verify(service, timeout(TEST_TIMEOUT)).createConnectionFailed(any());
+ Call result = callFuture.get(TEST_TIMEOUT, TimeUnit.MILLISECONDS);
+ assertNull(result);
+ }
+
@SmallTest
@Test
public void testHasEmergencyCallIncomingCallPermitted() {