• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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