diff options
author | sail <sail@google.com> | 2017-08-31 16:48:09 -0700 |
---|---|---|
committer | Eric Erfanian <erfanian@google.com> | 2017-09-07 04:37:37 +0000 |
commit | 53e1ce35f713139629cb24df6ea1245e11464a42 (patch) | |
tree | bf94bb3fcbf38857e65c4637aa0dde6bd637868b /java/com/android/dialer/simulator/impl/SimulatorConnectionService.java | |
parent | 273fd7bc5840a71cf8445455bc0bb1945e2cfc8d (diff) |
Use simulator to add in-call UI integration tests
This CL uses the simulator connection service to perform integration
tests for incallui.
The main pieces of this CL are:
- DialerCallEvent - this is how we track changes to the incallui calls
- Simulator.Event - this is how we track changes to a simulator
connection
With the above two we can do things like:
- block until a DialerCall switches from ACTIVE TO ONHOLD:
- DialerCallEspresso.waitForNextEvent(tracker, call, new
DialerCallEvent(STATE_CHANGE, "ACTIVE", "ONHOLD")
- block for a connection to recive a particular DTMF code:
- SimulatorConnectionEspresso.waitForNextEvent(call, Event.DTMF)
Future CLs will include things like:
- fling to answer / reject
- conference calls
- screenshot diffing
- video calling
Test: InCallActivityTest
PiperOrigin-RevId: 167211015
Change-Id: Ib013b10fe963092fad0816b07b1659efd69d9468
Diffstat (limited to 'java/com/android/dialer/simulator/impl/SimulatorConnectionService.java')
-rw-r--r-- | java/com/android/dialer/simulator/impl/SimulatorConnectionService.java | 50 |
1 files changed, 44 insertions, 6 deletions
diff --git a/java/com/android/dialer/simulator/impl/SimulatorConnectionService.java b/java/com/android/dialer/simulator/impl/SimulatorConnectionService.java index 9e107edee..06c2591cc 100644 --- a/java/com/android/dialer/simulator/impl/SimulatorConnectionService.java +++ b/java/com/android/dialer/simulator/impl/SimulatorConnectionService.java @@ -40,6 +40,7 @@ public class SimulatorConnectionService extends ConnectionService { private static final String PHONE_ACCOUNT_ID = "SIMULATOR_ACCOUNT_ID"; private static final String EXTRA_IS_SIMULATOR_CONNECTION = "is_simulator_connection"; private static final List<Listener> listeners = new ArrayList<>(); + private static SimulatorConnectionService instance; private static void register(@NonNull Context context) { LogUtil.enterBlock("SimulatorConnectionService.register"); @@ -55,6 +56,30 @@ public class SimulatorConnectionService extends ConnectionService { .unregisterPhoneAccount(buildPhoneAccount(context).getAccountHandle()); } + public static SimulatorConnectionService getInstance() { + return instance; + } + + public static void addNewOutgoingCall( + @NonNull Context context, @NonNull Bundle extras, @NonNull String phoneNumber) { + LogUtil.enterBlock("SimulatorConnectionService.addNewOutgoingCall"); + Assert.isNotNull(context); + Assert.isNotNull(extras); + Assert.isNotNull(phoneNumber); + + register(context); + + Bundle bundle = new Bundle(extras); + bundle.putBoolean(EXTRA_IS_SIMULATOR_CONNECTION, true); + Bundle outgoingCallExtras = new Bundle(); + outgoingCallExtras.putBundle(TelecomManager.EXTRA_OUTGOING_CALL_EXTRAS, bundle); + + // Use the system's phone account so that these look like regular SIM call. + TelecomManager telecomManager = context.getSystemService(TelecomManager.class); + telecomManager.placeCall( + Uri.fromParts(PhoneAccount.SCHEME_TEL, phoneNumber, null), outgoingCallExtras); + } + public static void addNewIncomingCall( @NonNull Context context, @NonNull Bundle extras, @NonNull String callerId) { LogUtil.enterBlock("SimulatorConnectionService.addNewIncomingCall"); @@ -76,13 +101,11 @@ public class SimulatorConnectionService extends ConnectionService { } public static void addListener(@NonNull Listener listener) { - Assert.isNotNull(listener); - listeners.add(listener); + listeners.add(Assert.isNotNull(listener)); } public static void removeListener(@NonNull Listener listener) { - Assert.isNotNull(listener); - listeners.remove(listener); + listeners.remove(Assert.isNotNull(listener)); } @NonNull @@ -112,6 +135,19 @@ public class SimulatorConnectionService extends ConnectionService { } @Override + public void onCreate() { + super.onCreate(); + instance = this; + } + + @Override + public void onDestroy() { + LogUtil.enterBlock("SimulatorConnectionService.onDestroy"); + instance = null; + super.onDestroy(); + } + + @Override public Connection onCreateOutgoingConnection( PhoneAccountHandle phoneAccount, ConnectionRequest request) { LogUtil.enterBlock("SimulatorConnectionService.onCreateOutgoingConnection"); @@ -127,10 +163,12 @@ public class SimulatorConnectionService extends ConnectionService { } SimulatorConnection connection = new SimulatorConnection(); - connection.setActive(); + connection.setDialing(); connection.setAddress(request.getAddress(), TelecomManager.PRESENTATION_ALLOWED); connection.setConnectionCapabilities( - Connection.CAPABILITY_MUTE | Connection.CAPABILITY_SUPPORT_HOLD); + Connection.CAPABILITY_MUTE + | Connection.CAPABILITY_SUPPORT_HOLD + | Connection.CAPABILITY_HOLD); connection.putExtras(request.getExtras()); for (Listener listener : listeners) { |