Ensure chosen phone account is used if it is valid.

When placing an outgoing call if a phone account is specified, there was
an issue where a list of all potential phone accounts would be returned
instead of just the one the user chose.  Fixed this.

Test: Added unit test, ran broken CTS test.
Bug: 69338480
Change-Id: I81dd73cb80df463217140d8a8087cf4140084b28
diff --git a/src/com/android/server/telecom/CallsManager.java b/src/com/android/server/telecom/CallsManager.java
index 7485841..81d6251 100644
--- a/src/com/android/server/telecom/CallsManager.java
+++ b/src/com/android/server/telecom/CallsManager.java
@@ -1229,6 +1229,9 @@
             if (targetPhoneAccountHandle != null) {
                 if (!accounts.contains(targetPhoneAccountHandle)) {
                     targetPhoneAccountHandle = null;
+                } else {
+                    // The target phone account is valid and was found.
+                    return Arrays.asList(targetPhoneAccountHandle);
                 }
             }
 
diff --git a/tests/src/com/android/server/telecom/tests/CallsManagerTest.java b/tests/src/com/android/server/telecom/tests/CallsManagerTest.java
index 5e7eb50..02d8222 100644
--- a/tests/src/com/android/server/telecom/tests/CallsManagerTest.java
+++ b/tests/src/com/android/server/telecom/tests/CallsManagerTest.java
@@ -315,6 +315,25 @@
         assertTrue(accounts.contains(SIM_1_HANDLE));
     }
 
+    /**
+     * Tests that we will use the provided target phone account if it exists.
+     * @throws Exception
+     */
+    @MediumTest
+    public void testUseSpecifiedAccount() throws Exception {
+        when(mPhoneAccountRegistrar.getOutgoingPhoneAccountForScheme(any(), any())).thenReturn(
+                null);
+        when(mPhoneAccountRegistrar.getCallCapablePhoneAccounts(any(), anyBoolean(),
+                any(), anyInt())).thenReturn(
+                new ArrayList<>(Arrays.asList(SIM_1_HANDLE, SIM_2_HANDLE)));
+
+        List<PhoneAccountHandle> accounts = mCallsManager.findOutgoingCallPhoneAccount(
+                SIM_2_HANDLE, TEST_ADDRESS, false /* isVideo */, null /* userHandle */);
+
+        assertEquals(1, accounts.size());
+        assertTrue(accounts.contains(SIM_2_HANDLE));
+    }
+
     private void setupMsimAccounts() {
         TelephonyManager mockTelephonyManager = mComponentContextFixture.getTelephonyManager();
         when(mockTelephonyManager.getMultiSimConfiguration()).thenReturn(