summaryrefslogtreecommitdiff
path: root/java/com/android/dialer/simulator
diff options
context:
space:
mode:
authorweijiaxu <weijiaxu@google.com>2017-10-31 11:11:29 -0700
committerzachh <zachh@google.com>2017-11-01 21:59:34 +0000
commit5c2d992ba8bb325eec435bef97684317fb800cc6 (patch)
tree4a104c7cea8a4a19f7dcc2c1c6937f7a4307d906 /java/com/android/dialer/simulator
parentbd03600f8403816a1225bc8208da133896ab22b4 (diff)
Add VoLTE conference call to simulator and fix a minor issue for GSM conference.
Bug: 67785540 Test: On a walleye. PiperOrigin-RevId: 174062497 Change-Id: I757b423f1c9ffe286fab15d3d8b5be8fe7c549dc
Diffstat (limited to 'java/com/android/dialer/simulator')
-rw-r--r--java/com/android/dialer/simulator/Simulator.java2
-rw-r--r--java/com/android/dialer/simulator/impl/SimulatorConference.java16
-rw-r--r--java/com/android/dialer/simulator/impl/SimulatorConferenceCreator.java13
-rw-r--r--java/com/android/dialer/simulator/impl/SimulatorConnection.java6
-rw-r--r--java/com/android/dialer/simulator/impl/SimulatorVoiceCall.java6
5 files changed, 35 insertions, 8 deletions
diff --git a/java/com/android/dialer/simulator/Simulator.java b/java/com/android/dialer/simulator/Simulator.java
index bfa202c5c..2094b420e 100644
--- a/java/com/android/dialer/simulator/Simulator.java
+++ b/java/com/android/dialer/simulator/Simulator.java
@@ -35,10 +35,12 @@ public interface Simulator {
@Retention(RetentionPolicy.SOURCE)
@IntDef({
CONFERENCE_TYPE_GSM,
+ CONFERENCE_TYPE_VOLTE,
})
@interface ConferenceType {}
static final int CONFERENCE_TYPE_GSM = 1;
+ static final int CONFERENCE_TYPE_VOLTE = 2;
/** Information about a connection event. */
public static class Event {
diff --git a/java/com/android/dialer/simulator/impl/SimulatorConference.java b/java/com/android/dialer/simulator/impl/SimulatorConference.java
index 7468b56b5..1a12d2a9f 100644
--- a/java/com/android/dialer/simulator/impl/SimulatorConference.java
+++ b/java/com/android/dialer/simulator/impl/SimulatorConference.java
@@ -58,6 +58,17 @@ public final class SimulatorConference extends Conference implements SimulatorCo
return simulatorConference;
}
+ static SimulatorConference newVoLteConference(PhoneAccountHandle handle) {
+ SimulatorConference simulatorConference =
+ new SimulatorConference(handle, Simulator.CONFERENCE_TYPE_VOLTE);
+ simulatorConference.setConnectionCapabilities(
+ Connection.CAPABILITY_MUTE
+ | Connection.CAPABILITY_SUPPORT_HOLD
+ | Connection.CAPABILITY_HOLD
+ | Connection.CAPABILITY_MANAGE_CONFERENCE);
+ return simulatorConference;
+ }
+
public void addListener(@NonNull Listener listener) {
listeners.add(Assert.isNotNull(listener));
}
@@ -120,6 +131,11 @@ public final class SimulatorConference extends Conference implements SimulatorCo
public void onSeparate(Connection connection) {
LogUtil.i("SimulatorConference.onSeparate", "connection: " + connection);
onEvent(new Event(Event.SEPARATE, SimulatorSimCallManager.getConnectionTag(connection), null));
+ // if there is only 1 connection in a gsm conference, destroy the conference.
+ if (conferenceType == Simulator.CONFERENCE_TYPE_GSM && getConnections().size() == 1) {
+ removeConnection(getConnections().get(0));
+ destroy();
+ }
}
@Override
diff --git a/java/com/android/dialer/simulator/impl/SimulatorConferenceCreator.java b/java/com/android/dialer/simulator/impl/SimulatorConferenceCreator.java
index 838b58dc2..d0249938a 100644
--- a/java/com/android/dialer/simulator/impl/SimulatorConferenceCreator.java
+++ b/java/com/android/dialer/simulator/impl/SimulatorConferenceCreator.java
@@ -64,6 +64,13 @@ final class SimulatorConferenceCreator
String callerId = String.format(Locale.US, "+1-650-234%04d", callCount);
Bundle extras = new Bundle();
extras.putInt(EXTRA_CALL_COUNT, callCount - 1);
+ switch (conferenceType) {
+ case Simulator.CONFERENCE_TYPE_VOLTE:
+ extras.putBoolean("ISVOLTE", true);
+ break;
+ default:
+ break;
+ }
connectionTags.add(
SimulatorSimCallManager.addNewIncomingCall(context, callerId, false /* isVideo */, extras));
}
@@ -78,16 +85,11 @@ final class SimulatorConferenceCreator
LogUtil.i("SimulatorConferenceCreator.onNewOutgoingConnection", "connection created");
connection.addListener(this);
- // Telecom will force the connection to switch to DIALING when we return it. Wait until after
- // we're returned it before changing call state.
- ThreadUtil.postOnUiThread(() -> connection.setActive());
-
// Once the connection is active, go ahead and conference it and add the next call.
ThreadUtil.postDelayedOnUiThread(
() -> {
SimulatorConference conference = findCurrentConference();
if (conference == null) {
- Assert.checkArgument(conferenceType == Simulator.CONFERENCE_TYPE_GSM);
conference =
SimulatorConference.newGsmConference(
SimulatorSimCallManager.getSystemPhoneAccountHandle(context));
@@ -95,6 +97,7 @@ final class SimulatorConferenceCreator
SimulatorConnectionService.getInstance().addConference(conference);
}
updateConferenceableConnections();
+ connection.setActive();
conference.addConnection(connection);
addNextCall(getCallCount(connection));
},
diff --git a/java/com/android/dialer/simulator/impl/SimulatorConnection.java b/java/com/android/dialer/simulator/impl/SimulatorConnection.java
index e4a34b51b..168f5db98 100644
--- a/java/com/android/dialer/simulator/impl/SimulatorConnection.java
+++ b/java/com/android/dialer/simulator/impl/SimulatorConnection.java
@@ -42,8 +42,10 @@ public final class SimulatorConnection extends Connection {
| CAPABILITY_SUPPORT_HOLD
| CAPABILITY_HOLD
| CAPABILITY_CAN_UPGRADE_TO_VIDEO
- | CAPABILITY_DISCONNECT_FROM_CONFERENCE
- | CAPABILITY_SEPARATE_FROM_CONFERENCE);
+ | CAPABILITY_DISCONNECT_FROM_CONFERENCE);
+ if (request.getExtras() != null && !request.getExtras().getBoolean("ISVOLTE")) {
+ setConnectionCapabilities(getConnectionCapabilities() | CAPABILITY_SEPARATE_FROM_CONFERENCE);
+ }
setVideoProvider(new SimulatorVideoProvider(context, this));
}
diff --git a/java/com/android/dialer/simulator/impl/SimulatorVoiceCall.java b/java/com/android/dialer/simulator/impl/SimulatorVoiceCall.java
index f2a1d0901..d2eba6b03 100644
--- a/java/com/android/dialer/simulator/impl/SimulatorVoiceCall.java
+++ b/java/com/android/dialer/simulator/impl/SimulatorVoiceCall.java
@@ -42,7 +42,11 @@ final class SimulatorVoiceCall
.addItem("Emergency call", () -> new SimulatorVoiceCall(context).addNewEmergencyCall())
.addItem(
"GSM conference",
- () -> new SimulatorConferenceCreator(context, Simulator.CONFERENCE_TYPE_GSM).start(5));
+ () -> new SimulatorConferenceCreator(context, Simulator.CONFERENCE_TYPE_GSM).start(5))
+ .addItem(
+ "VoLTE conference",
+ () ->
+ new SimulatorConferenceCreator(context, Simulator.CONFERENCE_TYPE_VOLTE).start(5));
}
private SimulatorVoiceCall(@NonNull Context context) {