1 package org.robolectric.shadows.testing; 2 3 import android.telecom.Connection; 4 import android.telecom.ConnectionRequest; 5 import android.telecom.ConnectionService; 6 import android.telecom.PhoneAccountHandle; 7 import javax.annotation.Nullable; 8 9 /** A fake {@link ConnectionService} implementation for testing. */ 10 public class TestConnectionService extends ConnectionService { 11 12 /** Listens for calls to {@link TestConnectionService} methods. */ 13 public interface Listener { onCreate()14 default void onCreate() {} 15 16 @Nullable onCreateIncomingConnection( PhoneAccountHandle connectionManagerPhoneAccount, ConnectionRequest request)17 default Connection onCreateIncomingConnection( 18 PhoneAccountHandle connectionManagerPhoneAccount, ConnectionRequest request) { 19 return null; 20 } 21 onCreateIncomingConnectionFailed( PhoneAccountHandle connectionManagerPhoneAccount, ConnectionRequest request)22 default void onCreateIncomingConnectionFailed( 23 PhoneAccountHandle connectionManagerPhoneAccount, ConnectionRequest request) {} 24 25 @Nullable onCreateOutgoingConnection( PhoneAccountHandle connectionManagerPhoneAccount, ConnectionRequest request)26 default Connection onCreateOutgoingConnection( 27 PhoneAccountHandle connectionManagerPhoneAccount, ConnectionRequest request) { 28 return null; 29 } 30 onCreateOutgoingConnectionFailed( PhoneAccountHandle connectionManagerPhoneAccount, ConnectionRequest request)31 default void onCreateOutgoingConnectionFailed( 32 PhoneAccountHandle connectionManagerPhoneAccount, ConnectionRequest request) {} 33 } 34 35 private static Listener listener = new Listener() {}; 36 setListener(Listener listener)37 public static void setListener(Listener listener) { 38 TestConnectionService.listener = listener == null ? new Listener() {} : listener; 39 } 40 41 @Override onCreate()42 public void onCreate() { 43 listener.onCreate(); 44 } 45 46 @Override 47 @Nullable onCreateIncomingConnection( PhoneAccountHandle connectionManagerPhoneAccount, ConnectionRequest request)48 public Connection onCreateIncomingConnection( 49 PhoneAccountHandle connectionManagerPhoneAccount, ConnectionRequest request) { 50 return listener.onCreateIncomingConnection(connectionManagerPhoneAccount, request); 51 } 52 53 @Override onCreateIncomingConnectionFailed( PhoneAccountHandle connectionManagerPhoneAccount, ConnectionRequest request)54 public void onCreateIncomingConnectionFailed( 55 PhoneAccountHandle connectionManagerPhoneAccount, ConnectionRequest request) { 56 listener.onCreateIncomingConnectionFailed(connectionManagerPhoneAccount, request); 57 } 58 59 @Override 60 @Nullable onCreateOutgoingConnection( PhoneAccountHandle connectionManagerPhoneAccount, ConnectionRequest request)61 public Connection onCreateOutgoingConnection( 62 PhoneAccountHandle connectionManagerPhoneAccount, ConnectionRequest request) { 63 return listener.onCreateOutgoingConnection(connectionManagerPhoneAccount, request); 64 } 65 66 @Override onCreateOutgoingConnectionFailed( PhoneAccountHandle connectionManagerPhoneAccount, ConnectionRequest request)67 public void onCreateOutgoingConnectionFailed( 68 PhoneAccountHandle connectionManagerPhoneAccount, ConnectionRequest request) { 69 listener.onCreateOutgoingConnectionFailed(connectionManagerPhoneAccount, request); 70 } 71 } 72