diff options
| author | 2014-06-10 13:29:47 -0700 | |
|---|---|---|
| committer | 2014-06-10 18:12:44 -0700 | |
| commit | d76faab7b35080a247d37d00ea4f65dd2f2bc55f (patch) | |
| tree | d99162e122072d31ed5b46a86fec512df84a53fe | |
| parent | eb29d330c31e677b6beba7a88955b52b7ca5f39b (diff) | |
DO NOT MERGE. Port "respond via SMS message" feature to new Telecomm. (1/4)
Bug: 15275904
Bug: 15196474
Change-Id: If9aeae519047b221aa2c178d8d2903c4e2054a6d
5 files changed, 38 insertions, 9 deletions
| diff --git a/telecomm/java/android/telecomm/Connection.java b/telecomm/java/android/telecomm/Connection.java index 7aee77085fb7..164eeff0b945 100644 --- a/telecomm/java/android/telecomm/Connection.java +++ b/telecomm/java/android/telecomm/Connection.java @@ -107,6 +107,13 @@ public abstract class Connection {      protected Connection() {}      /** +     * The handle (e.g., phone number) to which this Connection is currently communicating. +     * +     * IMPORTANT: If an incoming connection has a phone number (or other handle) that the user +     * is not supposed to be able to see (e.g. it is PRESENTATION_RESTRICTED), then a compliant +     * ConnectionService implementation MUST NOT reveal this phone number and MUST return +     * {@code null} from this method. +     *       * @return The handle (e.g., phone number) to which this Connection       *         is currently communicating.       */ diff --git a/telecomm/java/android/telecomm/ConnectionService.java b/telecomm/java/android/telecomm/ConnectionService.java index 9dfad2d1ee2b..d97450900a95 100644 --- a/telecomm/java/android/telecomm/ConnectionService.java +++ b/telecomm/java/android/telecomm/ConnectionService.java @@ -386,6 +386,11 @@ public abstract class ConnectionService extends CallService {      /**       * Create a Connection to match an incoming connection notification.       * +     * IMPORTANT: If the incoming connection has a phone number (or other handle) that the user +     * is not supposed to be able to see (e.g. it is PRESENTATION_RESTRICTED), then a compliant +     * ConnectionService implementation MUST NOT reveal this phone number as part of the Intent +     * it sends to notify Telecomm of an incoming connection. +     *       * @param request Data encapsulating details of the desired Connection.       * @param callback A callback for providing the result.       */ diff --git a/telecomm/java/android/telecomm/InCallAdapter.java b/telecomm/java/android/telecomm/InCallAdapter.java index 86b7a506a61f..ce52d1981b1a 100644 --- a/telecomm/java/android/telecomm/InCallAdapter.java +++ b/telecomm/java/android/telecomm/InCallAdapter.java @@ -59,10 +59,12 @@ public final class InCallAdapter {       * is ported over.       *       * @param callId The identifier of the call to reject. +     * @param rejectWithMessage Whether to reject with a text message. +     * @param textMessage An optional text message with which to respond.       */ -    public void rejectCall(String callId) { +    public void rejectCall(String callId, boolean rejectWithMessage, String textMessage) {          try { -            mAdapter.rejectCall(callId); +            mAdapter.rejectCall(callId, rejectWithMessage, textMessage);          } catch (RemoteException e) {          }      } diff --git a/telecomm/java/android/telecomm/InCallCall.java b/telecomm/java/android/telecomm/InCallCall.java index 432e378455f8..66974f9be1d6 100644 --- a/telecomm/java/android/telecomm/InCallCall.java +++ b/telecomm/java/android/telecomm/InCallCall.java @@ -33,6 +33,7 @@ public final class InCallCall implements Parcelable {      private final CallState mState;      private final int mDisconnectCauseCode;      private final String mDisconnectCauseMsg; +    private final List<String> mCannedSmsResponses;      private final int mCapabilities;      private final long mConnectTimeMillis;      private final Uri mHandle; @@ -49,14 +50,16 @@ public final class InCallCall implements Parcelable {              CallState state,              int disconnectCauseCode,              String disconnectCauseMsg, +            List<String> cannedSmsResponses,              int capabilities,              long connectTimeMillis,              Uri handle,              GatewayInfo gatewayInfo,              CallServiceDescriptor descriptor,              CallServiceDescriptor handoffDescriptor) { -        this(id, state, disconnectCauseCode, disconnectCauseMsg, capabilities, connectTimeMillis, -                handle, gatewayInfo, descriptor, handoffDescriptor, null, Collections.EMPTY_LIST); +        this(id, state, disconnectCauseCode, disconnectCauseMsg, cannedSmsResponses, +                capabilities, connectTimeMillis, handle, gatewayInfo, descriptor, handoffDescriptor, +                null, Collections.EMPTY_LIST);      }      /** @hide */ @@ -65,6 +68,7 @@ public final class InCallCall implements Parcelable {              CallState state,              int disconnectCauseCode,              String disconnectCauseMsg, +            List<String> cannedSmsResponses,              int capabilities,              long connectTimeMillis,              Uri handle, @@ -77,6 +81,7 @@ public final class InCallCall implements Parcelable {          mState = state;          mDisconnectCauseCode = disconnectCauseCode;          mDisconnectCauseMsg = disconnectCauseMsg; +        mCannedSmsResponses = cannedSmsResponses;          mCapabilities = capabilities;          mConnectTimeMillis = connectTimeMillis;          mHandle = handle; @@ -113,6 +118,13 @@ public final class InCallCall implements Parcelable {          return mDisconnectCauseMsg;      } +    /** +     * The set of possible text message responses when this call is incoming. +     */ +    public List<String> getCannedSmsResponses() { +        return mCannedSmsResponses; +    } +      // Bit mask of actions a call supports, values are defined in {@link CallCapabilities}.      public int getCapabilities() {          return mCapabilities; @@ -168,13 +180,15 @@ public final class InCallCall implements Parcelable {              new Parcelable.Creator<InCallCall> () {          @Override          public InCallCall createFromParcel(Parcel source) { +            ClassLoader classLoader = InCallCall.class.getClassLoader();              String id = source.readString();              CallState state = CallState.valueOf(source.readString());              int disconnectCauseCode = source.readInt();              String disconnectCauseMsg = source.readString(); +            List<String> cannedSmsResponses = new ArrayList<>(); +            source.readList(cannedSmsResponses, classLoader);              int capabilities = source.readInt();              long connectTimeMillis = source.readLong(); -            ClassLoader classLoader = InCallCall.class.getClassLoader();              Uri handle = source.readParcelable(classLoader);              GatewayInfo gatewayInfo = source.readParcelable(classLoader);              CallServiceDescriptor descriptor = source.readParcelable(classLoader); @@ -182,9 +196,9 @@ public final class InCallCall implements Parcelable {              String parentCallId = source.readString();              List<String> childCallIds = new ArrayList<>();              source.readList(childCallIds, classLoader); -            return new InCallCall(id, state, disconnectCauseCode, disconnectCauseMsg, capabilities, -                    connectTimeMillis, handle, gatewayInfo, descriptor, handoffDescriptor, -                    parentCallId, childCallIds); +            return new InCallCall(id, state, disconnectCauseCode, disconnectCauseMsg, +                    cannedSmsResponses, capabilities, connectTimeMillis, handle, gatewayInfo, +                    descriptor, handoffDescriptor, parentCallId, childCallIds);          }          @Override @@ -206,6 +220,7 @@ public final class InCallCall implements Parcelable {          destination.writeString(mState.name());          destination.writeInt(mDisconnectCauseCode);          destination.writeString(mDisconnectCauseMsg); +        destination.writeList(mCannedSmsResponses);          destination.writeInt(mCapabilities);          destination.writeLong(mConnectTimeMillis);          destination.writeParcelable(mHandle, 0); diff --git a/telecomm/java/com/android/internal/telecomm/IInCallAdapter.aidl b/telecomm/java/com/android/internal/telecomm/IInCallAdapter.aidl index 5717456d5543..b66995a12391 100644 --- a/telecomm/java/com/android/internal/telecomm/IInCallAdapter.aidl +++ b/telecomm/java/com/android/internal/telecomm/IInCallAdapter.aidl @@ -28,7 +28,7 @@ import android.telecomm.CallAudioState;  oneway interface IInCallAdapter {      void answerCall(String callId); -    void rejectCall(String callId); +    void rejectCall(String callId, boolean rejectWithMessage, String textMessage);      void disconnectCall(String callId); |