Loading src/com/android/server/telecom/CallsManager.java +10 −7 Original line number Diff line number Diff line Loading @@ -1344,7 +1344,8 @@ public class CallsManager extends Call.ListenerBase CompletableFuture<List<PhoneAccountHandle>> accountsForCall = CompletableFuture.completedFuture((Void) null).thenComposeAsync((x) -> findOutgoingCallPhoneAccount(requestedAccountHandle, handle, VideoProfile.isVideo(finalVideoState), initiatingUser), VideoProfile.isVideo(finalVideoState), finalCall.isEmergencyCall(), initiatingUser), new LoggedHandlerExecutor(outgoingCallHandler, "CM.fOCP", mLock)); // This is a block of code that executes after the list of potential phone accts has been Loading Loading @@ -1626,7 +1627,7 @@ public class CallsManager extends Call.ListenerBase @VisibleForTesting public CompletableFuture<List<PhoneAccountHandle>> findOutgoingCallPhoneAccount( PhoneAccountHandle targetPhoneAccountHandle, Uri handle, boolean isVideo, UserHandle initiatingUser) { boolean isEmergency, UserHandle initiatingUser) { if (isSelfManaged(targetPhoneAccountHandle, initiatingUser)) { return CompletableFuture.completedFuture(Arrays.asList(targetPhoneAccountHandle)); } Loading @@ -1634,12 +1635,12 @@ public class CallsManager extends Call.ListenerBase List<PhoneAccountHandle> accounts; // Try to find a potential phone account, taking into account whether this is a video // call. accounts = constructPossiblePhoneAccounts(handle, initiatingUser, isVideo); accounts = constructPossiblePhoneAccounts(handle, initiatingUser, isVideo, isEmergency); if (isVideo && accounts.size() == 0) { // Placing a video call but no video capable accounts were found, so consider any // call capable accounts (we can fallback to audio). accounts = constructPossiblePhoneAccounts(handle, initiatingUser, false /* isVideo */); false /* isVideo */, isEmergency /* isEmergency */); } Log.v(this, "findOutgoingCallPhoneAccount: accounts = " + accounts); Loading Loading @@ -2201,13 +2202,15 @@ public class CallsManager extends Call.ListenerBase // then include only that SIM based PhoneAccount and any non-SIM PhoneAccounts, such as SIP. @VisibleForTesting public List<PhoneAccountHandle> constructPossiblePhoneAccounts(Uri handle, UserHandle user, boolean isVideo) { boolean isVideo, boolean isEmergency) { if (handle == null) { return Collections.emptyList(); } // If we're specifically looking for video capable accounts, then include that capability, // otherwise specify no additional capability constraints. List<PhoneAccountHandle> allAccounts = // otherwise specify no additional capability constraints. When handling the emergency call, // it also needs to find the phone accounts excluded by CAPABILITY_EMERGENCY_CALLS_ONLY. List<PhoneAccountHandle> allAccounts = isEmergency ? mPhoneAccountRegistrar.getAllPhoneAccountHandles(user) : mPhoneAccountRegistrar.getCallCapablePhoneAccounts(handle.getScheme(), false, user, isVideo ? PhoneAccount.CAPABILITY_VIDEO_CALLING : 0 /* any */); // First check the Radio SIM Technology Loading tests/src/com/android/server/telecom/tests/CallsManagerTest.java +10 −10 Original line number Diff line number Diff line Loading @@ -236,7 +236,7 @@ public class CallsManagerTest extends TelecomTestCase { @Test public void testConstructPossiblePhoneAccounts() throws Exception { // Should be empty since the URI is null. assertEquals(0, mCallsManager.constructPossiblePhoneAccounts(null, null, false).size()); assertEquals(0, mCallsManager.constructPossiblePhoneAccounts(null, null, false, false).size()); } /** Loading Loading @@ -268,7 +268,7 @@ public class CallsManagerTest extends TelecomTestCase { mCallsManager.addCall(ongoingCall); List<PhoneAccountHandle> phoneAccountHandles = mCallsManager.constructPossiblePhoneAccounts( TEST_ADDRESS, null, false); TEST_ADDRESS, null, false, false); assertEquals(1, phoneAccountHandles.size()); assertEquals(SIM_2_HANDLE, phoneAccountHandles.get(0)); } Loading @@ -283,7 +283,7 @@ public class CallsManagerTest extends TelecomTestCase { setupMsimAccounts(); List<PhoneAccountHandle> phoneAccountHandles = mCallsManager.constructPossiblePhoneAccounts( TEST_ADDRESS, null, false); TEST_ADDRESS, null, false, false); assertEquals(2, phoneAccountHandles.size()); } Loading Loading @@ -312,7 +312,7 @@ public class CallsManagerTest extends TelecomTestCase { public void testFindOutgoingCallPhoneAccountSelfManaged() throws Exception { setupCallerInfoLookupHelper(); List<PhoneAccountHandle> accounts = mCallsManager.findOutgoingCallPhoneAccount( SELF_MANAGED_HANDLE, TEST_ADDRESS, false /* isVideo */, null /* userHandle */) SELF_MANAGED_HANDLE, TEST_ADDRESS, false /* isVideo */, false /* isEmergency */, null /* userHandle */) .get(); assertEquals(1, accounts.size()); assertEquals(SELF_MANAGED_HANDLE, accounts.get(0)); Loading @@ -334,7 +334,7 @@ public class CallsManagerTest extends TelecomTestCase { new ArrayList<>(Arrays.asList(SIM_1_HANDLE, SIM_2_HANDLE))); List<PhoneAccountHandle> accounts = mCallsManager.findOutgoingCallPhoneAccount( null /* phoneAcct */, TEST_ADDRESS, false /* isVideo */, null /* userHandle */) null /* phoneAcct */, TEST_ADDRESS, false /* isVideo */, false /* isEmergency */, null /* userHandle */) .get(); // Should have found just the default. Loading @@ -358,7 +358,7 @@ public class CallsManagerTest extends TelecomTestCase { new ArrayList<>(Arrays.asList(SIM_1_HANDLE, SIM_2_HANDLE))); List<PhoneAccountHandle> accounts = mCallsManager.findOutgoingCallPhoneAccount( null /* phoneAcct */, TEST_ADDRESS, false /* isVideo */, null /* userHandle */) null /* phoneAcct */, TEST_ADDRESS, false /* isVideo */, false /* isEmergency */, null /* userHandle */) .get(); assertEquals(2, accounts.size()); Loading @@ -382,7 +382,7 @@ public class CallsManagerTest extends TelecomTestCase { new ArrayList<>(Arrays.asList(SIM_2_HANDLE))); List<PhoneAccountHandle> accounts = mCallsManager.findOutgoingCallPhoneAccount( null /* phoneAcct */, TEST_ADDRESS, true /* isVideo */, null /* userHandle */) null /* phoneAcct */, TEST_ADDRESS, true /* isVideo */, false /* isEmergency */, null /* userHandle */) .get(); assertEquals(1, accounts.size()); Loading @@ -409,7 +409,7 @@ public class CallsManagerTest extends TelecomTestCase { any(), eq(0 /* none specified */))).thenReturn( new ArrayList<>(Arrays.asList(SIM_1_HANDLE))); List<PhoneAccountHandle> accounts = mCallsManager.findOutgoingCallPhoneAccount( null /* phoneAcct */, TEST_ADDRESS, true /* isVideo */, null /* userHandle */) null /* phoneAcct */, TEST_ADDRESS, true /* isVideo */, false /* isEmergency */, null /* userHandle */) .get(); // Should have found one. Loading @@ -432,7 +432,7 @@ public class CallsManagerTest extends TelecomTestCase { new ArrayList<>(Arrays.asList(SIM_1_HANDLE, SIM_2_HANDLE))); List<PhoneAccountHandle> accounts = mCallsManager.findOutgoingCallPhoneAccount( SIM_2_HANDLE, TEST_ADDRESS, false /* isVideo */, null /* userHandle */).get(); SIM_2_HANDLE, TEST_ADDRESS, false /* isVideo */, false /* isEmergency */, null /* userHandle */).get(); assertEquals(1, accounts.size()); assertTrue(accounts.contains(SIM_2_HANDLE)); Loading @@ -453,7 +453,7 @@ public class CallsManagerTest extends TelecomTestCase { new ArrayList<>(Arrays.asList(SIM_1_HANDLE, SIM_2_HANDLE))); List<PhoneAccountHandle> accounts = mCallsManager.findOutgoingCallPhoneAccount( null, TEST_ADDRESS2, false /* isVideo */, Process.myUserHandle()).get(); null, TEST_ADDRESS2, false /* isVideo */, false /* isEmergency */, Process.myUserHandle()).get(); assertEquals(1, accounts.size()); assertTrue(accounts.contains(SIM_1_HANDLE)); Loading Loading
src/com/android/server/telecom/CallsManager.java +10 −7 Original line number Diff line number Diff line Loading @@ -1344,7 +1344,8 @@ public class CallsManager extends Call.ListenerBase CompletableFuture<List<PhoneAccountHandle>> accountsForCall = CompletableFuture.completedFuture((Void) null).thenComposeAsync((x) -> findOutgoingCallPhoneAccount(requestedAccountHandle, handle, VideoProfile.isVideo(finalVideoState), initiatingUser), VideoProfile.isVideo(finalVideoState), finalCall.isEmergencyCall(), initiatingUser), new LoggedHandlerExecutor(outgoingCallHandler, "CM.fOCP", mLock)); // This is a block of code that executes after the list of potential phone accts has been Loading Loading @@ -1626,7 +1627,7 @@ public class CallsManager extends Call.ListenerBase @VisibleForTesting public CompletableFuture<List<PhoneAccountHandle>> findOutgoingCallPhoneAccount( PhoneAccountHandle targetPhoneAccountHandle, Uri handle, boolean isVideo, UserHandle initiatingUser) { boolean isEmergency, UserHandle initiatingUser) { if (isSelfManaged(targetPhoneAccountHandle, initiatingUser)) { return CompletableFuture.completedFuture(Arrays.asList(targetPhoneAccountHandle)); } Loading @@ -1634,12 +1635,12 @@ public class CallsManager extends Call.ListenerBase List<PhoneAccountHandle> accounts; // Try to find a potential phone account, taking into account whether this is a video // call. accounts = constructPossiblePhoneAccounts(handle, initiatingUser, isVideo); accounts = constructPossiblePhoneAccounts(handle, initiatingUser, isVideo, isEmergency); if (isVideo && accounts.size() == 0) { // Placing a video call but no video capable accounts were found, so consider any // call capable accounts (we can fallback to audio). accounts = constructPossiblePhoneAccounts(handle, initiatingUser, false /* isVideo */); false /* isVideo */, isEmergency /* isEmergency */); } Log.v(this, "findOutgoingCallPhoneAccount: accounts = " + accounts); Loading Loading @@ -2201,13 +2202,15 @@ public class CallsManager extends Call.ListenerBase // then include only that SIM based PhoneAccount and any non-SIM PhoneAccounts, such as SIP. @VisibleForTesting public List<PhoneAccountHandle> constructPossiblePhoneAccounts(Uri handle, UserHandle user, boolean isVideo) { boolean isVideo, boolean isEmergency) { if (handle == null) { return Collections.emptyList(); } // If we're specifically looking for video capable accounts, then include that capability, // otherwise specify no additional capability constraints. List<PhoneAccountHandle> allAccounts = // otherwise specify no additional capability constraints. When handling the emergency call, // it also needs to find the phone accounts excluded by CAPABILITY_EMERGENCY_CALLS_ONLY. List<PhoneAccountHandle> allAccounts = isEmergency ? mPhoneAccountRegistrar.getAllPhoneAccountHandles(user) : mPhoneAccountRegistrar.getCallCapablePhoneAccounts(handle.getScheme(), false, user, isVideo ? PhoneAccount.CAPABILITY_VIDEO_CALLING : 0 /* any */); // First check the Radio SIM Technology Loading
tests/src/com/android/server/telecom/tests/CallsManagerTest.java +10 −10 Original line number Diff line number Diff line Loading @@ -236,7 +236,7 @@ public class CallsManagerTest extends TelecomTestCase { @Test public void testConstructPossiblePhoneAccounts() throws Exception { // Should be empty since the URI is null. assertEquals(0, mCallsManager.constructPossiblePhoneAccounts(null, null, false).size()); assertEquals(0, mCallsManager.constructPossiblePhoneAccounts(null, null, false, false).size()); } /** Loading Loading @@ -268,7 +268,7 @@ public class CallsManagerTest extends TelecomTestCase { mCallsManager.addCall(ongoingCall); List<PhoneAccountHandle> phoneAccountHandles = mCallsManager.constructPossiblePhoneAccounts( TEST_ADDRESS, null, false); TEST_ADDRESS, null, false, false); assertEquals(1, phoneAccountHandles.size()); assertEquals(SIM_2_HANDLE, phoneAccountHandles.get(0)); } Loading @@ -283,7 +283,7 @@ public class CallsManagerTest extends TelecomTestCase { setupMsimAccounts(); List<PhoneAccountHandle> phoneAccountHandles = mCallsManager.constructPossiblePhoneAccounts( TEST_ADDRESS, null, false); TEST_ADDRESS, null, false, false); assertEquals(2, phoneAccountHandles.size()); } Loading Loading @@ -312,7 +312,7 @@ public class CallsManagerTest extends TelecomTestCase { public void testFindOutgoingCallPhoneAccountSelfManaged() throws Exception { setupCallerInfoLookupHelper(); List<PhoneAccountHandle> accounts = mCallsManager.findOutgoingCallPhoneAccount( SELF_MANAGED_HANDLE, TEST_ADDRESS, false /* isVideo */, null /* userHandle */) SELF_MANAGED_HANDLE, TEST_ADDRESS, false /* isVideo */, false /* isEmergency */, null /* userHandle */) .get(); assertEquals(1, accounts.size()); assertEquals(SELF_MANAGED_HANDLE, accounts.get(0)); Loading @@ -334,7 +334,7 @@ public class CallsManagerTest extends TelecomTestCase { new ArrayList<>(Arrays.asList(SIM_1_HANDLE, SIM_2_HANDLE))); List<PhoneAccountHandle> accounts = mCallsManager.findOutgoingCallPhoneAccount( null /* phoneAcct */, TEST_ADDRESS, false /* isVideo */, null /* userHandle */) null /* phoneAcct */, TEST_ADDRESS, false /* isVideo */, false /* isEmergency */, null /* userHandle */) .get(); // Should have found just the default. Loading @@ -358,7 +358,7 @@ public class CallsManagerTest extends TelecomTestCase { new ArrayList<>(Arrays.asList(SIM_1_HANDLE, SIM_2_HANDLE))); List<PhoneAccountHandle> accounts = mCallsManager.findOutgoingCallPhoneAccount( null /* phoneAcct */, TEST_ADDRESS, false /* isVideo */, null /* userHandle */) null /* phoneAcct */, TEST_ADDRESS, false /* isVideo */, false /* isEmergency */, null /* userHandle */) .get(); assertEquals(2, accounts.size()); Loading @@ -382,7 +382,7 @@ public class CallsManagerTest extends TelecomTestCase { new ArrayList<>(Arrays.asList(SIM_2_HANDLE))); List<PhoneAccountHandle> accounts = mCallsManager.findOutgoingCallPhoneAccount( null /* phoneAcct */, TEST_ADDRESS, true /* isVideo */, null /* userHandle */) null /* phoneAcct */, TEST_ADDRESS, true /* isVideo */, false /* isEmergency */, null /* userHandle */) .get(); assertEquals(1, accounts.size()); Loading @@ -409,7 +409,7 @@ public class CallsManagerTest extends TelecomTestCase { any(), eq(0 /* none specified */))).thenReturn( new ArrayList<>(Arrays.asList(SIM_1_HANDLE))); List<PhoneAccountHandle> accounts = mCallsManager.findOutgoingCallPhoneAccount( null /* phoneAcct */, TEST_ADDRESS, true /* isVideo */, null /* userHandle */) null /* phoneAcct */, TEST_ADDRESS, true /* isVideo */, false /* isEmergency */, null /* userHandle */) .get(); // Should have found one. Loading @@ -432,7 +432,7 @@ public class CallsManagerTest extends TelecomTestCase { new ArrayList<>(Arrays.asList(SIM_1_HANDLE, SIM_2_HANDLE))); List<PhoneAccountHandle> accounts = mCallsManager.findOutgoingCallPhoneAccount( SIM_2_HANDLE, TEST_ADDRESS, false /* isVideo */, null /* userHandle */).get(); SIM_2_HANDLE, TEST_ADDRESS, false /* isVideo */, false /* isEmergency */, null /* userHandle */).get(); assertEquals(1, accounts.size()); assertTrue(accounts.contains(SIM_2_HANDLE)); Loading @@ -453,7 +453,7 @@ public class CallsManagerTest extends TelecomTestCase { new ArrayList<>(Arrays.asList(SIM_1_HANDLE, SIM_2_HANDLE))); List<PhoneAccountHandle> accounts = mCallsManager.findOutgoingCallPhoneAccount( null, TEST_ADDRESS2, false /* isVideo */, Process.myUserHandle()).get(); null, TEST_ADDRESS2, false /* isVideo */, false /* isEmergency */, Process.myUserHandle()).get(); assertEquals(1, accounts.size()); assertTrue(accounts.contains(SIM_1_HANDLE)); Loading