Add new DisconnectCause class to telecomm.
+ Add a hidden "UNKNOWN" default type to ToneGenerator.
- Hide the Telephony DisconnectCause from the public API.
+ Add a Telecomm DisconnectCause. This is parcelable, and contains
information (code, user facing message, non-user facing reason,
and tone) to help describe the disconnect state and what behaviors
an application can implement for the user experience. This reduces
the causes for a disconnect to a more generic set.
+ Lots of work to pipe this through. DisconnectCause replaces the
code and message which were formerly passed around.
Bug: 17241433
Bug: 17329632
Change-Id: I9d337e478a8784bcc0ade02267c2df52cac9bf17
diff --git a/telecomm/java/android/telecom/RemoteConnection.java b/telecomm/java/android/telecom/RemoteConnection.java
index bf699b3..9a094df 100644
--- a/telecomm/java/android/telecom/RemoteConnection.java
+++ b/telecomm/java/android/telecom/RemoteConnection.java
@@ -23,7 +23,6 @@
import android.net.Uri;
import android.os.IBinder;
import android.os.RemoteException;
-import android.telephony.DisconnectCause;
import android.view.Surface;
import java.util.ArrayList;
@@ -55,15 +54,12 @@
* Invoked when this {@code RemoteConnection} is disconnected.
*
* @param connection The {@code RemoteConnection} invoking this method.
- * @param disconnectCauseCode The failure code ({@see DisconnectCause}) associated with this
- * failed connection.
- * @param disconnectCauseMessage The reason for the connection failure. This will not be
- * displayed to the user.
+ * @param disconnectCause The ({@see DisconnectCause}) associated with this failed
+ * connection.
*/
public void onDisconnected(
RemoteConnection connection,
- int disconnectCauseCode,
- String disconnectCauseMessage) {}
+ DisconnectCause disconnectCause) {}
/**
* Invoked when this {@code RemoteConnection} is requesting ringback. See
@@ -383,8 +379,7 @@
Collections.unmodifiableList(mConferenceableConnections);
private int mState = Connection.STATE_NEW;
- private int mDisconnectCauseCode = DisconnectCause.NOT_VALID;
- private String mDisconnectCauseMessage;
+ private DisconnectCause mDisconnectCause;
private boolean mRingbackRequested;
private boolean mConnected;
private int mCallCapabilities;
@@ -396,8 +391,6 @@
private int mAddressPresentation;
private String mCallerDisplayName;
private int mCallerDisplayNamePresentation;
- private int mFailureCode;
- private String mFailureMessage;
private RemoteConference mConference;
/**
@@ -418,15 +411,14 @@
* "real" purpose will almost certainly fail. Callers should note the failure and act
* accordingly (moving on to another RemoteConnection, for example)
*
- * @param failureCode
- * @param failureMessage
+ * @param disconnectCause The reason for the failed connection.
+ * @hide
*/
- RemoteConnection(int failureCode, String failureMessage) {
+ RemoteConnection(DisconnectCause disconnectCause) {
this("NULL", null, null);
mConnected = false;
mState = Connection.STATE_DISCONNECTED;
- mFailureCode = DisconnectCause.OUTGOING_FAILURE;
- mFailureMessage = failureMessage + " original code = " + failureCode;
+ mDisconnectCause = disconnectCause;
}
/**
@@ -463,16 +455,8 @@
* disconnect cause expressed as a code chosen from among those declared in
* {@link DisconnectCause}.
*/
- public int getDisconnectCauseCode() {
- return mDisconnectCauseCode;
- }
-
- /**
- * @return For a {@link Connection#STATE_DISCONNECTED} {@code RemoteConnection}, an optional
- * reason for disconnection expressed as a free text message.
- */
- public String getDisconnectCauseMessage() {
- return mDisconnectCauseMessage;
+ public DisconnectCause getDisconnectCause() {
+ return mDisconnectCause;
}
/**
@@ -547,21 +531,6 @@
}
/**
- * @return The failure code ({@see DisconnectCause}) associated with this failed
- * {@code RemoteConnection}.
- */
- public int getFailureCode() {
- return mFailureCode;
- }
-
- /**
- * @return The reason for the connection failure. This will not be displayed to the user.
- */
- public String getFailureMessage() {
- return mFailureMessage;
- }
-
- /**
* @return Whether the {@code RemoteConnection} is requesting that the framework play a
* ringback tone on its behalf.
*/
@@ -779,14 +748,13 @@
/**
* @hide
*/
- void setDisconnected(int cause, String message) {
+ void setDisconnected(DisconnectCause disconnectCause) {
if (mState != Connection.STATE_DISCONNECTED) {
mState = Connection.STATE_DISCONNECTED;
- mDisconnectCauseCode = cause;
- mDisconnectCauseMessage = message;
+ mDisconnectCause = disconnectCause;
for (Callback c : mCallbacks) {
- c.onDisconnected(this, cause, message);
+ c.onDisconnected(this, mDisconnectCause);
}
}
}
@@ -820,7 +788,8 @@
if (!mCallbacks.isEmpty()) {
// Make sure that the callbacks are notified that the call is destroyed first.
if (mState != Connection.STATE_DISCONNECTED) {
- setDisconnected(DisconnectCause.ERROR_UNSPECIFIED, "Connection destroyed.");
+ setDisconnected(
+ new DisconnectCause(DisconnectCause.ERROR, "Connection destroyed."));
}
for (Callback c : mCallbacks) {
@@ -923,7 +892,7 @@
*
* @hide
*/
- public static RemoteConnection failure(int failureCode, String failureMessage) {
- return new RemoteConnection(failureCode, failureMessage);
+ public static RemoteConnection failure(DisconnectCause disconnectCause) {
+ return new RemoteConnection(disconnectCause);
}
}