summaryrefslogtreecommitdiff
path: root/java/com/android/dialer/simulator/impl/SimulatorConnectionService.java
diff options
context:
space:
mode:
authorsail <sail@google.com>2017-08-31 16:48:09 -0700
committerEric Erfanian <erfanian@google.com>2017-09-07 04:37:37 +0000
commit53e1ce35f713139629cb24df6ea1245e11464a42 (patch)
treebf94bb3fcbf38857e65c4637aa0dde6bd637868b /java/com/android/dialer/simulator/impl/SimulatorConnectionService.java
parent273fd7bc5840a71cf8445455bc0bb1945e2cfc8d (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.java50
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) {