Final structural tweaks to Telecomm API (5/8)

Bug: 16416927
Bug: 16494880
Change-Id: Ibc2ba9e5d17242380ed3afed359600362bb3e664
diff --git a/src/com/android/phone/PhoneUtils.java b/src/com/android/phone/PhoneUtils.java
index bc9bf63..ae40087 100644
--- a/src/com/android/phone/PhoneUtils.java
+++ b/src/com/android/phone/PhoneUtils.java
@@ -25,10 +25,7 @@
 import android.content.Context;
 import android.content.DialogInterface;
 import android.content.Intent;
-import android.content.pm.ApplicationInfo;
-import android.content.pm.PackageManager;
 import android.content.res.Configuration;
-import android.graphics.drawable.Drawable;
 import android.media.AudioManager;
 import android.net.Uri;
 import android.os.AsyncResult;
@@ -36,7 +33,7 @@
 import android.os.Message;
 import android.os.RemoteException;
 import android.os.SystemProperties;
-import android.telecomm.VideoCallProfile;
+import android.telecomm.VideoProfile;
 import android.telephony.PhoneNumberUtils;
 import android.text.TextUtils;
 import android.util.Log;
@@ -56,10 +53,8 @@
 import com.android.internal.telephony.MmiCode;
 import com.android.internal.telephony.Phone;
 import com.android.internal.telephony.PhoneConstants;
-import com.android.internal.telephony.PhoneFactory;
 import com.android.internal.telephony.TelephonyCapabilities;
 import com.android.internal.telephony.TelephonyProperties;
-import com.android.internal.telephony.cdma.CdmaConnection;
 import com.android.internal.telephony.sip.SipPhone;
 import com.android.phone.CallGatewayManager.RawGatewayInfo;
 
@@ -643,7 +638,7 @@
         final boolean initiallyIdle = app.mCM.getState() == PhoneConstants.State.IDLE;
 
         try {
-            connection = app.mCM.dial(phone, numberToDial, VideoCallProfile.VideoState.AUDIO_ONLY);
+            connection = app.mCM.dial(phone, numberToDial, VideoProfile.VideoState.AUDIO_ONLY);
         } catch (CallStateException ex) {
             // CallStateException means a new outgoing call is not currently
             // possible: either no more call slots exist, or there's another
diff --git a/src/com/android/services/telephony/CdmaConnection.java b/src/com/android/services/telephony/CdmaConnection.java
index 668308a..f13676a 100644
--- a/src/com/android/services/telephony/CdmaConnection.java
+++ b/src/com/android/services/telephony/CdmaConnection.java
@@ -16,7 +16,7 @@
 
 package com.android.services.telephony;
 
-import android.telecomm.CallCapabilities;
+import android.telecomm.PhoneCapabilities;
 
 import com.android.internal.telephony.Connection;
 
@@ -49,7 +49,7 @@
 
     @Override
     protected int buildCallCapabilities() {
-        int capabilities = CallCapabilities.MUTE;
+        int capabilities = PhoneCapabilities.MUTE;
         return capabilities;
     }
 }
diff --git a/src/com/android/services/telephony/GsmConferenceController.java b/src/com/android/services/telephony/GsmConferenceController.java
index 127a575..a69d1e6 100644
--- a/src/com/android/services/telephony/GsmConferenceController.java
+++ b/src/com/android/services/telephony/GsmConferenceController.java
@@ -16,15 +16,10 @@
 
 package com.android.services.telephony;
 
-import com.android.internal.telephony.Call;
-import com.android.internal.telephony.PhoneFactory;
-
 import java.util.ArrayList;
 
 import java.util.Collections;
-import java.util.HashSet;
 import java.util.List;
-import java.util.Set;
 
 import android.telecomm.Connection;
 
diff --git a/src/com/android/services/telephony/GsmConnection.java b/src/com/android/services/telephony/GsmConnection.java
index 298f3d9..5140574 100644
--- a/src/com/android/services/telephony/GsmConnection.java
+++ b/src/com/android/services/telephony/GsmConnection.java
@@ -16,7 +16,7 @@
 
 package com.android.services.telephony;
 
-import android.telecomm.CallCapabilities;
+import android.telecomm.PhoneCapabilities;
 
 import com.android.internal.telephony.CallStateException;
 import com.android.internal.telephony.Connection;
@@ -68,12 +68,12 @@
 
     @Override
     protected int buildCallCapabilities() {
-        int capabilities = CallCapabilities.MUTE | CallCapabilities.SUPPORT_HOLD;
-        if (getState() == State.ACTIVE || getState() == State.HOLDING) {
-            capabilities |= CallCapabilities.HOLD;
+        int capabilities = PhoneCapabilities.MUTE | PhoneCapabilities.SUPPORT_HOLD;
+        if (getState() == STATE_ACTIVE || getState() == STATE_HOLDING) {
+            capabilities |= PhoneCapabilities.HOLD;
         }
         if (mIsConferenceCapable) {
-            capabilities |= CallCapabilities.MERGE_CALLS;
+            capabilities |= PhoneCapabilities.MERGE_CALLS;
         }
         return capabilities;
     }
diff --git a/src/com/android/services/telephony/TelecommAccountRegistry.java b/src/com/android/services/telephony/TelecommAccountRegistry.java
index d40e9af..658d611 100644
--- a/src/com/android/services/telephony/TelecommAccountRegistry.java
+++ b/src/com/android/services/telephony/TelecommAccountRegistry.java
@@ -89,15 +89,16 @@
             String description = isEmergency
                     ? "Emergency calling only"
                     : dummyPrefix + "SIM card in slot " + slotId;
-            PhoneAccount account = new PhoneAccount(
-                    phoneAccountHandle,
-                    Uri.fromParts(TEL_SCHEME, line1Number, null),
-                    subNumber,
-                    PhoneAccount.CAPABILITY_SIM_SUBSCRIPTION |
-                            PhoneAccount.CAPABILITY_CALL_PROVIDER,
-                    com.android.phone.R.mipmap.ic_launcher_phone,
-                    label,
-                    description);
+            PhoneAccount account = PhoneAccount.builder()
+                    .withAccountHandle(phoneAccountHandle)
+                    .withHandle(Uri.fromParts(TEL_SCHEME, line1Number, null))
+                    .withSubscriptionNumber(subNumber)
+                    .withCapabilities(PhoneAccount.CAPABILITY_SIM_SUBSCRIPTION |
+                            PhoneAccount.CAPABILITY_CALL_PROVIDER)
+                    .withIconResId(com.android.phone.R.mipmap.ic_launcher_phone)
+                    .withLabel(label)
+                    .withShortDescription(description)
+                    .build();
 
             // Register with Telecomm and put into the account entry.
             mTelecommManager.registerPhoneAccount(account);
diff --git a/src/com/android/services/telephony/TelephonyConnection.java b/src/com/android/services/telephony/TelephonyConnection.java
index 7bd43b2..7ddb6d0 100644
--- a/src/com/android/services/telephony/TelephonyConnection.java
+++ b/src/com/android/services/telephony/TelephonyConnection.java
@@ -20,18 +20,15 @@
 import android.os.AsyncResult;
 import android.os.Handler;
 import android.os.Message;
-import android.telecomm.CallAudioState;
-import android.telecomm.CallCapabilities;
+import android.telecomm.AudioState;
+import android.telecomm.Connection;
+import android.telecomm.PhoneCapabilities;
 import android.telephony.DisconnectCause;
 
 import com.android.internal.telephony.Call;
 import com.android.internal.telephony.CallStateException;
 import com.android.internal.telephony.Connection.PostDialListener;
 import com.android.internal.telephony.Phone;
-import com.android.phone.R;
-
-import android.telecomm.Connection;
-import android.telecomm.ConnectionService;
 
 import java.lang.Override;
 import java.util.List;
@@ -113,12 +110,11 @@
          * The {@link com.android.internal.telephony.Connection} has reported a change in the
          * video call provider.
          *
-         * @param videoCallProvider The video call provider.
+         * @param videoProvider The video call provider.
          */
         @Override
-        public void onVideoCallProviderChanged(
-                ConnectionService.VideoCallProvider videoCallProvider) {
-            setVideoCallProvider(videoCallProvider);
+        public void onVideoProviderChanged(VideoProvider videoProvider) {
+            setVideoProvider(videoProvider);
         }
 
         /**
@@ -138,20 +134,20 @@
 
     /**
      * Determines if the {@link TelephonyConnection} has local video capabilities.
-     * This is used when {@link TelephonyConnection#updateCallCapabilities}} is called,
-     * ensuring the appropriate {@link CallCapabilities} are set.  Since {@link CallCapabilities}
+     * This is used when {@link TelephonyConnection#updateCallCapabilities()}} is called,
+     * ensuring the appropriate {@link PhoneCapabilities} are set.  Since {@link PhoneCapabilities}
      * can be rebuilt at any time it is necessary to track the video capabilities between rebuild.
-     * The {@link CallCapabilities} (including video capabilities) are communicated to the telecomm
+     * The {@link PhoneCapabilities} (including video capabilities) are communicated to the telecomm
      * layer.
      */
     private boolean mLocalVideoCapable;
 
     /**
      * Determines if the {@link TelephonyConnection} has remote video capabilities.
-     * This is used when {@link TelephonyConnection#updateCallCapabilities}} is called,
-     * ensuring the appropriate {@link CallCapabilities} are set.  Since {@link CallCapabilities}
+     * This is used when {@link TelephonyConnection#updateCallCapabilities()}} is called,
+     * ensuring the appropriate {@link PhoneCapabilities} are set.  Since {@link PhoneCapabilities}
      * can be rebuilt at any time it is necessary to track the video capabilities between rebuild.
-     * The {@link CallCapabilities} (including video capabilities) are communicated to the telecomm
+     * The {@link PhoneCapabilities} (including video capabilities) are communicated to the telecomm
      * layer.
      */
     private boolean mRemoteVideoCapable;
@@ -170,7 +166,7 @@
     }
 
     @Override
-    public void onSetAudioState(CallAudioState audioState) {
+    public void onSetAudioState(AudioState audioState) {
         // TODO: update TTY mode.
         if (getPhone() != null) {
             getPhone().setEchoSuppressionEnabled();
@@ -292,11 +288,6 @@
     }
 
     @Override
-    public void onSwapWithBackgroundCall() {
-        Log.v(this, "onSwapWithBackgroundCall");
-    }
-
-    @Override
     public void onChildrenChanged(List<Connection> children) {
         Log.v(this, "onChildrenChanged, children: " + children);
     }
@@ -356,7 +347,7 @@
         setVideoState(mOriginalConnection.getVideoState());
         setLocalVideoCapable(mOriginalConnection.isLocalVideoCapable());
         setRemoteVideoCapable(mOriginalConnection.isRemoteVideoCapable());
-        setVideoCallProvider(mOriginalConnection.getVideoCallProvider());
+        setVideoProvider(mOriginalConnection.getVideoProvider());
         setAudioQuality(mOriginalConnection.getAudioQuality());
 
         updateHandle();
@@ -491,18 +482,18 @@
         int currentCapabilities = capabilities;
         if (mRemoteVideoCapable) {
             currentCapabilities = applyCapability(currentCapabilities,
-                    CallCapabilities.SUPPORTS_VT_REMOTE);
+                    PhoneCapabilities.SUPPORTS_VT_REMOTE);
         } else {
             currentCapabilities = removeCapability(currentCapabilities,
-                    CallCapabilities.SUPPORTS_VT_REMOTE);
+                    PhoneCapabilities.SUPPORTS_VT_REMOTE);
         }
 
         if (mLocalVideoCapable) {
             currentCapabilities = applyCapability(currentCapabilities,
-                    CallCapabilities.SUPPORTS_VT_LOCAL);
+                    PhoneCapabilities.SUPPORTS_VT_LOCAL);
         } else {
             currentCapabilities = removeCapability(currentCapabilities,
-                    CallCapabilities.SUPPORTS_VT_LOCAL);
+                    PhoneCapabilities.SUPPORTS_VT_LOCAL);
         }
         return currentCapabilities;
     }
@@ -520,9 +511,9 @@
 
         if (mAudioQuality ==
                 com.android.internal.telephony.Connection.AUDIO_QUALITY_HIGH_DEFINITION) {
-            currentCapabilities = applyCapability(currentCapabilities, CallCapabilities.VoLTE);
+            currentCapabilities = applyCapability(currentCapabilities, PhoneCapabilities.VoLTE);
         } else {
-            currentCapabilities = removeCapability(currentCapabilities, CallCapabilities.VoLTE);
+            currentCapabilities = removeCapability(currentCapabilities, PhoneCapabilities.VoLTE);
         }
 
         return currentCapabilities;
@@ -548,7 +539,7 @@
 
     /**
      * Sets whether video capability is present locally.  Used during rebuild of the
-     * {@link CallCapabilities} to set the video call capabilities.
+     * {@link PhoneCapabilities} to set the video call capabilities.
      *
      * @param capable {@code True} if video capable.
      */
@@ -559,7 +550,7 @@
 
     /**
      * Sets whether video capability is present remotely.  Used during rebuild of the
-     * {@link CallCapabilities} to set the video call capabilities.
+     * {@link PhoneCapabilities} to set the video call capabilities.
      *
      * @param capable {@code True} if video capable.
      */
@@ -570,7 +561,7 @@
 
     /**
      * Sets the current call audio quality.  Used during rebuild of the
-     * {@link CallCapabilities} to set or unset the {@link CallCapabilities#VoLTE} capability.
+     * {@link PhoneCapabilities} to set or unset the {@link PhoneCapabilities#VoLTE} capability.
      *
      * @param audioQuality The audio quality.
      */
diff --git a/src/com/android/services/telephony/TelephonyConnectionService.java b/src/com/android/services/telephony/TelephonyConnectionService.java
index 7868c72..2211e3e 100644
--- a/src/com/android/services/telephony/TelephonyConnectionService.java
+++ b/src/com/android/services/telephony/TelephonyConnectionService.java
@@ -18,8 +18,8 @@
 
 import android.content.ComponentName;
 import android.net.Uri;
-import android.telecomm.CallCapabilities;
 import android.telecomm.Connection;
+import android.telecomm.PhoneCapabilities;
 import android.telecomm.ConnectionRequest;
 import android.telecomm.ConnectionService;
 import android.telecomm.PhoneAccountHandle;
@@ -63,21 +63,21 @@
         Uri handle = request.getHandle();
         if (handle == null) {
             Log.d(this, "onCreateOutgoingConnection, handle is null");
-            return Connection.getFailedConnection(DisconnectCause.NO_PHONE_NUMBER_SUPPLIED,
+            return Connection.createFailedConnection(DisconnectCause.NO_PHONE_NUMBER_SUPPLIED,
                     "Handle is null");
         }
 
         if (!SCHEME_TEL.equals(handle.getScheme())) {
             Log.d(this, "onCreateOutgoingConnection, Handle %s is not type tel",
                     handle.getScheme());
-            return Connection.getFailedConnection(DisconnectCause.INVALID_NUMBER,
+            return Connection.createFailedConnection(DisconnectCause.INVALID_NUMBER,
                     "Handle scheme is not type tel");
         }
 
         final String number = handle.getSchemeSpecificPart();
         if (TextUtils.isEmpty(number)) {
             Log.d(this, "onCreateOutgoingConnection, unable to parse number");
-            return Connection.getFailedConnection(DisconnectCause.INVALID_NUMBER,
+            return Connection.createFailedConnection(DisconnectCause.INVALID_NUMBER,
                     "Unable to parse number");
         }
 
@@ -87,7 +87,7 @@
         final Phone phone = getPhoneForAccount(request.getAccountHandle(), isEmergencyNumber);
         if (phone == null) {
             Log.d(this, "onCreateOutgoingConnection, phone is null");
-            return Connection.getFailedConnection(DisconnectCause.OUTGOING_FAILURE,
+            return Connection.createFailedConnection(DisconnectCause.OUTGOING_FAILURE,
                     "Phone is null");
         }
 
@@ -98,21 +98,21 @@
                 case ServiceState.STATE_EMERGENCY_ONLY:
                     break;
                 case ServiceState.STATE_OUT_OF_SERVICE:
-                    return Connection.getFailedConnection(DisconnectCause.OUT_OF_SERVICE,
+                    return Connection.createFailedConnection(DisconnectCause.OUT_OF_SERVICE,
                             "ServiceState.STATE_OUT_OF_SERVICE");
                 case ServiceState.STATE_POWER_OFF:
-                    return Connection.getFailedConnection(DisconnectCause.POWER_OFF,
+                    return Connection.createFailedConnection(DisconnectCause.POWER_OFF,
                             "ServiceState.STATE_POWER_OFF");
                 default:
                     Log.d(this, "onCreateOutgoingConnection, unkown service state: %d", state);
-                    return Connection.getFailedConnection(DisconnectCause.OUTGOING_FAILURE,
+                    return Connection.createFailedConnection(DisconnectCause.OUTGOING_FAILURE,
                             "Unknown service state " + state);
             }
         }
 
         final TelephonyConnection connection = createConnectionFor(phone.getPhoneType(), null);
         if (connection == null) {
-            return Connection.getFailedConnection(
+            return Connection.createFailedConnection(
                     DisconnectCause.OUTGOING_FAILURE, "Invalid phone type");
         }
         connection.setHandle(handle, PhoneConstants.PRESENTATION_ALLOWED);
@@ -153,7 +153,7 @@
             Response<String, Connection> response) {
         Log.v(this, "onCreateConferenceConnection, connection: " + connection);
         if (connection instanceof GsmConnection || connection instanceof ConferenceConnection) {
-            if ((connection.getCallCapabilities() & CallCapabilities.MERGE_CALLS) != 0) {
+            if ((connection.getCallCapabilities() & PhoneCapabilities.MERGE_CALLS) != 0) {
                 response.onResult(token,
                         GsmConferenceController.createConferenceConnection(connection));
             }
@@ -168,28 +168,29 @@
 
         Phone phone = getPhoneForAccount(request.getAccountHandle(), false);
         if (phone == null) {
-            return Connection.getFailedConnection(DisconnectCause.ERROR_UNSPECIFIED, null);
+            return Connection.createFailedConnection(DisconnectCause.ERROR_UNSPECIFIED, null);
         }
 
         Call call = phone.getRingingCall();
         if (!call.getState().isRinging()) {
             Log.v(this, "onCreateIncomingConnection, no ringing call");
-            return Connection.getFailedConnection(DisconnectCause.INCOMING_MISSED,
+            return Connection.createFailedConnection(DisconnectCause.INCOMING_MISSED,
                     "Found no ringing call");
         }
 
         com.android.internal.telephony.Connection originalConnection = call.getEarliestConnection();
         if (isOriginalConnectionKnown(originalConnection)) {
             Log.v(this, "onCreateIncomingConnection, original connection already registered");
-            return Connection.getCanceledConnection();
+            return Connection.createCanceledConnection();
         }
 
         Connection connection = createConnectionFor(phone.getPhoneType(), originalConnection);
         if (connection == null) {
-            connection = Connection.getCanceledConnection();
+            connection = Connection.createCanceledConnection();
+            return Connection.createCanceledConnection();
+        } else {
+            return connection;
         }
-
-        return connection;
     }
 
     private void placeOutgoingConnection(