Moving classes that must be used by an ImsService to base/
Brad Ebinger [Thu, 2 Feb 2017 22:07:07 +0000 (14:07 -0800)]
This change moves classes that need to be used by an unbundled
ImsService to frameworks/base to facilitate its usage.

Bug: 30290416
Test: Build and run device
Change-Id: Id90f09ff445a6918996e35dc83e55ec98238de89

src/java/com/android/ims/ImsCallSessionListenerBase.java [deleted file]
src/java/com/android/ims/ImsConfig.java [deleted file]
src/java/com/android/ims/ImsException.java [deleted file]
src/java/com/android/ims/ImsServiceClass.java
src/java/com/android/ims/ImsUtInterface.java [deleted file]
src/java/com/android/ims/internal/ImsCallSession.java [deleted file]
src/java/com/android/ims/internal/ImsVideoCallProvider.java [deleted file]

diff --git a/src/java/com/android/ims/ImsCallSessionListenerBase.java b/src/java/com/android/ims/ImsCallSessionListenerBase.java
deleted file mode 100644 (file)
index e2ad6cc..0000000
+++ /dev/null
@@ -1,243 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except compliance with the License.
- * You may obtaa copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.ims;
-
-import com.android.ims.internal.IImsCallSession;
-import com.android.ims.internal.IImsCallSessionListener;
-
-/*
- * Stub for IImsCallSessionListener interface. To enable forward compatibility during
- * development - empty APIs should not be deployed. To be used in vendor code - not in
- * framework code (since framework should be updated whenever interface is updated).
- *
- * @hide
- */
-public abstract class ImsCallSessionListenerBase extends IImsCallSessionListener.Stub {
-    /**
-     * Notifies the result of the basic session operation (setup / terminate).
-     */
-    @Override
-    public void callSessionProgressing(IImsCallSession session, ImsStreamMediaProfile profile) {
-        // no-op
-    }
-
-    @Override
-    public void callSessionStarted(IImsCallSession session, ImsCallProfile profile) {
-        // no-op
-    }
-
-    @Override
-    public void callSessionStartFailed(IImsCallSession session, ImsReasonInfo reasonInfo) {
-        // no-op
-    }
-
-    @Override
-    public void callSessionTerminated(IImsCallSession session, ImsReasonInfo reasonInfo) {
-        // no-op
-    }
-
-    /**
-     * Notifies the result of the call hold/resume operation.
-     */
-    @Override
-    public void callSessionHeld(IImsCallSession session, ImsCallProfile profile) {
-        // no-op
-    }
-
-    @Override
-    public void callSessionHoldFailed(IImsCallSession session, ImsReasonInfo reasonInfo) {
-        // no-op
-    }
-
-    @Override
-    public void callSessionHoldReceived(IImsCallSession session, ImsCallProfile profile) {
-        // no-op
-    }
-
-    @Override
-    public void callSessionResumed(IImsCallSession session, ImsCallProfile profile) {
-        // no-op
-    }
-
-    @Override
-    public void callSessionResumeFailed(IImsCallSession session, ImsReasonInfo reasonInfo) {
-        // no-op
-    }
-
-    @Override
-    public void callSessionResumeReceived(IImsCallSession session, ImsCallProfile profile) {
-        // no-op
-    }
-
-    /**
-     * Notifies the result of call merge operation.
-     */
-    @Override
-    public void callSessionMergeStarted(IImsCallSession session, IImsCallSession newSession,
-            ImsCallProfile profile) {
-        // no-op
-    }
-
-    @Override
-    public void callSessionMergeComplete(IImsCallSession session) {
-        // no-op
-    }
-
-    @Override
-    public void callSessionMergeFailed(IImsCallSession session, ImsReasonInfo reasonInfo) {
-        // no-op
-    }
-
-    /**
-     * Notifies the result of call upgrade / downgrade or any other call
-     * updates.
-     */
-    @Override
-    public void callSessionUpdated(IImsCallSession session, ImsCallProfile profile) {
-        // no-op
-    }
-
-    @Override
-    public void callSessionUpdateFailed(IImsCallSession session, ImsReasonInfo reasonInfo) {
-        // no-op
-    }
-
-    @Override
-    public void callSessionUpdateReceived(IImsCallSession session, ImsCallProfile profile) {
-        // no-op
-    }
-
-    /**
-     * Notifies the result of conference extension.
-     */
-    @Override
-    public void callSessionConferenceExtended(IImsCallSession session, IImsCallSession newSession,
-            ImsCallProfile profile) {
-        // no-op
-    }
-
-    @Override
-    public void callSessionConferenceExtendFailed(IImsCallSession session,
-            ImsReasonInfo reasonInfo) {
-        // no-op
-    }
-
-    @Override
-    public void callSessionConferenceExtendReceived(IImsCallSession session,
-            IImsCallSession newSession,
-            ImsCallProfile profile) {
-        // no-op
-    }
-
-    /**
-     * Notifies the result of the participant invitation / removal to/from the
-     * conference session.
-     */
-    @Override
-    public void callSessionInviteParticipantsRequestDelivered(IImsCallSession session) {
-        // no-op
-    }
-
-    @Override
-    public void callSessionInviteParticipantsRequestFailed(IImsCallSession session,
-            ImsReasonInfo reasonInfo) {
-        // no-op
-    }
-
-    @Override
-    public void callSessionRemoveParticipantsRequestDelivered(IImsCallSession session) {
-        // no-op
-    }
-
-    @Override
-    public void callSessionRemoveParticipantsRequestFailed(IImsCallSession session,
-            ImsReasonInfo reasonInfo) {
-        // no-op
-    }
-
-    /**
-     * Notifies the changes of the conference info. the conference session.
-     */
-    @Override
-    public void callSessionConferenceStateUpdated(IImsCallSession session,
-            ImsConferenceState state) {
-        // no-op
-    }
-
-    /**
-     * Notifies the incoming USSD message.
-     */
-    @Override
-    public void callSessionUssdMessageReceived(IImsCallSession session, int mode,
-            String ussdMessage) {
-        // no-op
-    }
-
-    /**
-     * Notifies of handover information for this call
-     */
-    @Override
-    public void callSessionHandover(IImsCallSession session, int srcAccessTech,
-            int targetAccessTech,
-            ImsReasonInfo reasonInfo) {
-        // no-op
-    }
-
-    @Override
-    public void callSessionHandoverFailed(IImsCallSession session, int srcAccessTech,
-            int targetAccessTech,
-            ImsReasonInfo reasonInfo) {
-        // no-op
-    }
-
-    /**
-     * Notifies the TTY mode change by remote party.
-     *
-     * @param mode one of the following: -
-     *            {@link com.android.internal.telephony.Phone#TTY_MODE_OFF} -
-     *            {@link com.android.internal.telephony.Phone#TTY_MODE_FULL} -
-     *            {@link com.android.internal.telephony.Phone#TTY_MODE_HCO} -
-     *            {@link com.android.internal.telephony.Phone#TTY_MODE_VCO}
-     */
-    @Override
-    public void callSessionTtyModeReceived(IImsCallSession session, int mode) {
-        // no-op
-    }
-
-    /**
-     * Notifies of a change to the multiparty state for this
-     * {@code ImsCallSession}.
-     *
-     * @param session The call session.
-     * @param isMultiParty {@code true} if the session became multiparty,
-     *            {@code false} otherwise.
-     */
-    @Override
-    public void callSessionMultipartyStateChanged(IImsCallSession session, boolean isMultiParty) {
-        // no-op
-    }
-
-    /**
-     * Notifies the supplementary service information for the current session.
-     */
-    @Override
-    public void callSessionSuppServiceReceived(IImsCallSession session,
-            ImsSuppServiceNotification suppSrvNotification) {
-        // no-op
-    }
-}
-
diff --git a/src/java/com/android/ims/ImsConfig.java b/src/java/com/android/ims/ImsConfig.java
deleted file mode 100644 (file)
index b572b18..0000000
+++ /dev/null
@@ -1,695 +0,0 @@
-/*
- * Copyright (c) 2014 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.ims;
-
-import android.content.Context;
-import android.os.RemoteException;
-import android.telephony.Rlog;
-
-import com.android.ims.ImsConfigListener;
-import com.android.ims.ImsReasonInfo;
-import com.android.ims.internal.IImsConfig;
-
-/**
- * Provides APIs to get/set the IMS service feature/capability/parameters.
- * The config items include:
- * 1) Items provisioned by the operator.
- * 2) Items configured by user. Mainly service feature class.
- *
- * @hide
- */
-public class ImsConfig {
-    private static final String TAG = "ImsConfig";
-    private boolean DBG = true;
-    private final IImsConfig miConfig;
-    private Context mContext;
-
-    /**
-     * Broadcast action: the feature enable status was changed
-     *
-     * @hide
-     */
-    public static final String ACTION_IMS_FEATURE_CHANGED =
-            "com.android.intent.action.IMS_FEATURE_CHANGED";
-
-    /**
-     * Broadcast action: the configuration was changed
-     *
-     * @hide
-     */
-    public static final String ACTION_IMS_CONFIG_CHANGED =
-            "com.android.intent.action.IMS_CONFIG_CHANGED";
-
-    /**
-     * Extra parameter "item" of intent ACTION_IMS_FEATURE_CHANGED and ACTION_IMS_CONFIG_CHANGED.
-     * It is the value of FeatureConstants or ConfigConstants.
-     *
-     * @hide
-     */
-    public static final String EXTRA_CHANGED_ITEM = "item";
-
-    /**
-     * Extra parameter "value" of intent ACTION_IMS_FEATURE_CHANGED and ACTION_IMS_CONFIG_CHANGED.
-     * It is the new value of "item".
-     *
-     * @hide
-     */
-    public static final String EXTRA_NEW_VALUE = "value";
-
-    /**
-    * Defines IMS service/capability feature constants.
-    */
-    public static class FeatureConstants {
-        public static final int FEATURE_TYPE_UNKNOWN = -1;
-
-        /**
-         * FEATURE_TYPE_VOLTE supports features defined in 3GPP and
-         * GSMA IR.92 over LTE.
-         */
-        public static final int FEATURE_TYPE_VOICE_OVER_LTE = 0;
-
-        /**
-         * FEATURE_TYPE_LVC supports features defined in 3GPP and
-         * GSMA IR.94 over LTE.
-         */
-        public static final int FEATURE_TYPE_VIDEO_OVER_LTE = 1;
-
-        /**
-         * FEATURE_TYPE_VOICE_OVER_WIFI supports features defined in 3GPP and
-         * GSMA IR.92 over WiFi.
-         */
-        public static final int FEATURE_TYPE_VOICE_OVER_WIFI = 2;
-
-        /**
-         * FEATURE_TYPE_VIDEO_OVER_WIFI supports features defined in 3GPP and
-         * GSMA IR.94 over WiFi.
-         */
-        public static final int FEATURE_TYPE_VIDEO_OVER_WIFI = 3;
-
-        /**
-         * FEATURE_TYPE_UT supports features defined in 3GPP and
-         * GSMA IR.92 over LTE.
-         */
-        public static final int FEATURE_TYPE_UT_OVER_LTE = 4;
-
-       /**
-         * FEATURE_TYPE_UT_OVER_WIFI supports features defined in 3GPP and
-         * GSMA IR.92 over WiFi.
-         */
-        public static final int FEATURE_TYPE_UT_OVER_WIFI = 5;
-    }
-
-    /**
-    * Defines IMS service/capability parameters.
-    */
-    public static class ConfigConstants {
-
-        // Define IMS config items
-        public static final int CONFIG_START = 0;
-
-        // Define operator provisioned config items
-        public static final int PROVISIONED_CONFIG_START = CONFIG_START;
-
-        /**
-         * AMR CODEC Mode Value set, 0-7 in comma separated sequence.
-         * Value is in String format.
-         */
-        public static final int VOCODER_AMRMODESET = CONFIG_START;
-
-        /**
-         * Wide Band AMR CODEC Mode Value set,0-7 in comma separated sequence.
-         * Value is in String format.
-         */
-        public static final int VOCODER_AMRWBMODESET = 1;
-
-        /**
-         * SIP Session Timer value (seconds).
-         * Value is in Integer format.
-         */
-        public static final int SIP_SESSION_TIMER = 2;
-
-        /**
-         * Minimum SIP Session Expiration Timer in (seconds).
-         * Value is in Integer format.
-         */
-        public static final int MIN_SE = 3;
-
-        /**
-         * SIP_INVITE cancellation time out value (in milliseconds). Integer format.
-         * Value is in Integer format.
-         */
-        public static final int CANCELLATION_TIMER = 4;
-
-        /**
-         * Delay time when an iRAT transition from eHRPD/HRPD/1xRTT to LTE.
-         * Value is in Integer format.
-         */
-        public static final int TDELAY = 5;
-
-        /**
-         * Silent redial status of Enabled (True), or Disabled (False).
-         * Value is in Integer format.
-         */
-        public static final int SILENT_REDIAL_ENABLE = 6;
-
-        /**
-         * SIP T1 timer value in milliseconds. See RFC 3261 for define.
-         * Value is in Integer format.
-         */
-        public static final int SIP_T1_TIMER = 7;
-
-        /**
-         * SIP T2 timer value in milliseconds.  See RFC 3261 for define.
-         * Value is in Integer format.
-         */
-        public static final int SIP_T2_TIMER  = 8;
-
-         /**
-         * SIP TF timer value in milliseconds.  See RFC 3261 for define.
-         * Value is in Integer format.
-         */
-        public static final int SIP_TF_TIMER = 9;
-
-        /**
-         * VoLTE status for VLT/s status of Enabled (1), or Disabled (0).
-         * Value is in Integer format.
-         */
-        public static final int VLT_SETTING_ENABLED = 10;
-
-        /**
-         * VoLTE status for LVC/s status of Enabled (1), or Disabled (0).
-         * Value is in Integer format.
-         */
-        public static final int LVC_SETTING_ENABLED = 11;
-        /**
-         * Domain Name for the device to populate the request URI for REGISTRATION.
-         * Value is in String format.
-         */
-        public static final int DOMAIN_NAME = 12;
-         /**
-         * Device Outgoing SMS based on either 3GPP or 3GPP2 standards.
-         * Value is in Integer format. 3GPP2(0), 3GPP(1)
-         */
-        public static final int SMS_FORMAT = 13;
-         /**
-         * Turns IMS ON/OFF on the device.
-         * Value is in Integer format. ON (1), OFF(0).
-         */
-        public static final int SMS_OVER_IP = 14;
-        /**
-         * Requested expiration for Published Online availability.
-         * Value is in Integer format.
-         */
-        public static final int PUBLISH_TIMER = 15;
-        /**
-         * Requested expiration for Published Offline availability.
-         * Value is in Integer format.
-         */
-        public static final int PUBLISH_TIMER_EXTENDED = 16;
-        /**
-         *
-         * Value is in Integer format.
-         */
-        public static final int CAPABILITY_DISCOVERY_ENABLED = 17;
-        /**
-         * Period of time the capability information of the  contact is cached on handset.
-         * Value is in Integer format.
-         */
-        public static final int CAPABILITIES_CACHE_EXPIRATION = 18;
-        /**
-         * Peiod of time the availability information of a contact is cached on device.
-         * Value is in Integer format.
-         */
-        public static final int AVAILABILITY_CACHE_EXPIRATION = 19;
-        /**
-         * Interval between successive capabilities polling.
-         * Value is in Integer format.
-         */
-        public static final int CAPABILITIES_POLL_INTERVAL = 20;
-        /**
-         * Minimum time between two published messages from the device.
-         * Value is in Integer format.
-         */
-        public static final int SOURCE_THROTTLE_PUBLISH = 21;
-        /**
-         * The Maximum number of MDNs contained in one Request Contained List.
-         * Value is in Integer format.
-         */
-        public static final int MAX_NUMENTRIES_IN_RCL = 22;
-        /**
-         * Expiration timer for subscription of a Request Contained List, used in capability polling.
-         * Value is in Integer format.
-         */
-        public static final int CAPAB_POLL_LIST_SUB_EXP = 23;
-        /**
-         * Applies compression to LIST Subscription.
-         * Value is in Integer format. Enable (1), Disable(0).
-         */
-        public static final int GZIP_FLAG = 24;
-        /**
-         * VOLTE Status for EAB/s status of Enabled (1), or Disabled (0).
-         * Value is in Integer format.
-         */
-        public static final int EAB_SETTING_ENABLED = 25;
-        /**
-         * Wi-Fi calling roaming status.
-         * Value is in Integer format. ON (1), OFF(0).
-         */
-        public static final int VOICE_OVER_WIFI_ROAMING = 26;
-        /**
-         * Wi-Fi calling modem - WfcModeFeatureValueConstants.
-         * Value is in Integer format.
-         */
-        public static final int VOICE_OVER_WIFI_MODE = 27;
-        /**
-         * VOLTE Status for voice over wifi status of Enabled (1), or Disabled (0).
-         * Value is in Integer format.
-         */
-        public static final int VOICE_OVER_WIFI_SETTING_ENABLED = 28;
-        /**
-         * Mobile data enabled.
-         * Value is in Integer format. On (1), OFF(0).
-         */
-        public static final int MOBILE_DATA_ENABLED = 29;
-        /**
-         * VoLTE user opted in status.
-         * Value is in Integer format. Opted-in (1) Opted-out (0).
-         */
-        public static final int VOLTE_USER_OPT_IN_STATUS = 30;
-        /**
-         * Proxy for Call Session Control Function(P-CSCF) address for Local-BreakOut(LBO).
-         * Value is in String format.
-         */
-        public static final int LBO_PCSCF_ADDRESS = 31;
-        /**
-         * Keep Alive Enabled for SIP.
-         * Value is in Integer format. On(1), OFF(0).
-         */
-        public static final int KEEP_ALIVE_ENABLED = 32;
-        /**
-         * Registration retry Base Time value in seconds.
-         * Value is in Integer format.
-         */
-        public static final int REGISTRATION_RETRY_BASE_TIME_SEC = 33;
-        /**
-         * Registration retry Max Time value in seconds.
-         * Value is in Integer format.
-         */
-        public static final int REGISTRATION_RETRY_MAX_TIME_SEC = 34;
-        /**
-         * Smallest RTP port for speech codec.
-         * Value is in integer format.
-         */
-        public static final int SPEECH_START_PORT = 35;
-        /**
-         * Largest RTP port for speech code.
-         * Value is in Integer format.
-         */
-        public static final int SPEECH_END_PORT = 36;
-        /**
-         * SIP Timer A's value in milliseconds. Timer A is the INVITE request
-         * retransmit interval, for UDP only.
-         * Value is in Integer format.
-         */
-        public static final int SIP_INVITE_REQ_RETX_INTERVAL_MSEC = 37;
-        /**
-         * SIP Timer B's value in milliseconds. Timer B is the wait time for
-         * INVITE message to be acknowledged.
-         * Value is in Integer format.
-         */
-        public static final int SIP_INVITE_RSP_WAIT_TIME_MSEC = 38;
-        /**
-         * SIP Timer D's value in milliseconds. Timer D is the wait time for
-         * response retransmits of the invite client transactions.
-         * Value is in Integer format.
-         */
-        public static final int SIP_INVITE_RSP_RETX_WAIT_TIME_MSEC = 39;
-        /**
-         * SIP Timer E's value in milliseconds. Timer E is the value Non-INVITE
-         * request retransmit interval, for UDP only.
-         * Value is in Integer format.
-         */
-        public static final int SIP_NON_INVITE_REQ_RETX_INTERVAL_MSEC = 40;
-        /**
-         * SIP Timer F's value in milliseconds. Timer F is the Non-INVITE transaction
-         * timeout timer.
-         * Value is in Integer format.
-         */
-        public static final int SIP_NON_INVITE_TXN_TIMEOUT_TIMER_MSEC = 41;
-        /**
-         * SIP Timer G's value in milliseconds. Timer G is the value of INVITE response
-         * retransmit interval.
-         * Value is in Integer format.
-         */
-        public static final int SIP_INVITE_RSP_RETX_INTERVAL_MSEC = 42;
-        /**
-         * SIP Timer H's value in milliseconds. Timer H is the value of wait time for
-         * ACK receipt.
-         * Value is in Integer format.
-         */
-        public static final int SIP_ACK_RECEIPT_WAIT_TIME_MSEC = 43;
-        /**
-         * SIP Timer I's value in milliseconds. Timer I is the value of wait time for
-         * ACK retransmits.
-         * Value is in Integer format.
-         */
-        public static final int SIP_ACK_RETX_WAIT_TIME_MSEC = 44;
-        /**
-         * SIP Timer J's value in milliseconds. Timer J is the value of wait time for
-         * non-invite request retransmission.
-         * Value is in Integer format.
-         */
-        public static final int SIP_NON_INVITE_REQ_RETX_WAIT_TIME_MSEC = 45;
-        /**
-         * SIP Timer K's value in milliseconds. Timer K is the value of wait time for
-         * non-invite response retransmits.
-         * Value is in Integer format.
-         */
-        public static final int SIP_NON_INVITE_RSP_RETX_WAIT_TIME_MSEC = 46;
-        /**
-         * AMR WB octet aligned dynamic payload type.
-         * Value is in Integer format.
-         */
-        public static final int AMR_WB_OCTET_ALIGNED_PT = 47;
-        /**
-         * AMR WB bandwidth efficient payload type.
-         * Value is in Integer format.
-         */
-        public static final int AMR_WB_BANDWIDTH_EFFICIENT_PT = 48;
-        /**
-         * AMR octet aligned dynamic payload type.
-         * Value is in Integer format.
-         */
-        public static final int AMR_OCTET_ALIGNED_PT = 49;
-        /**
-         * AMR bandwidth efficient payload type.
-         * Value is in Integer format.
-         */
-        public static final int AMR_BANDWIDTH_EFFICIENT_PT = 50;
-        /**
-         * DTMF WB payload type.
-         * Value is in Integer format.
-         */
-        public static final int DTMF_WB_PT = 51;
-        /**
-         * DTMF NB payload type.
-         * Value is in Integer format.
-         */
-        public static final int DTMF_NB_PT = 52;
-        /**
-         * AMR Default encoding mode.
-         * Value is in Integer format.
-         */
-        public static final int AMR_DEFAULT_MODE = 53;
-        /**
-         * SMS Public Service Identity.
-         * Value is in String format.
-         */
-        public static final int SMS_PSI = 54;
-        /**
-         * Video Quality - VideoQualityFeatureValuesConstants.
-         * Value is in Integer format.
-         */
-        public static final int VIDEO_QUALITY = 55;
-        /**
-         * LTE threshold.
-         * Handover from LTE to WiFi if LTE < THLTE1 and WiFi >= VOWT_A.
-         */
-        public static final int TH_LTE1 = 56;
-        /**
-         * LTE threshold.
-         * Handover from WiFi to LTE if LTE >= THLTE3 or (WiFi < VOWT_B and LTE >= THLTE2).
-         */
-        public static final int TH_LTE2 = 57;
-        /**
-         * LTE threshold.
-         * Handover from WiFi to LTE if LTE >= THLTE3 or (WiFi < VOWT_B and LTE >= THLTE2).
-         */
-        public static final int TH_LTE3 = 58;
-        /**
-         * 1x threshold.
-         * Handover from 1x to WiFi if 1x < TH1x
-         */
-        public static final int TH_1x = 59;
-        /**
-         * WiFi threshold.
-         * Handover from LTE to WiFi if LTE < THLTE1 and WiFi >= VOWT_A.
-         */
-        public static final int VOWT_A = 60;
-        /**
-         * WiFi threshold.
-         * Handover from WiFi to LTE if LTE >= THLTE3 or (WiFi < VOWT_B and LTE >= THLTE2).
-         */
-        public static final int VOWT_B = 61;
-        /**
-         * LTE ePDG timer.
-         * Device shall not handover back to LTE until the T_ePDG_LTE timer expires.
-         */
-        public static final int T_EPDG_LTE = 62;
-        /**
-         * WiFi ePDG timer.
-         * Device shall not handover back to WiFi until the T_ePDG_WiFi timer expires.
-         */
-        public static final int T_EPDG_WIFI = 63;
-        /**
-         * 1x ePDG timer.
-         * Device shall not re-register on 1x until the T_ePDG_1x timer expires.
-         */
-        public static final int T_EPDG_1X = 64;
-        /**
-         * MultiEndpoint status: Enabled (1), or Disabled (0).
-         * Value is in Integer format.
-         */
-        public static final int VICE_SETTING_ENABLED = 65;
-
-        // Expand the operator config items as needed here, need to change
-        // PROVISIONED_CONFIG_END after that.
-        public static final int PROVISIONED_CONFIG_END = VICE_SETTING_ENABLED;
-
-        // Expand the operator config items as needed here.
-    }
-
-    /**
-    * Defines IMS set operation status.
-    */
-    public static class OperationStatusConstants {
-        public static final int UNKNOWN = -1;
-        public static final int SUCCESS = 0;
-        public static final int FAILED =  1;
-        public static final int UNSUPPORTED_CAUSE_NONE = 2;
-        public static final int UNSUPPORTED_CAUSE_RAT = 3;
-        public static final int UNSUPPORTED_CAUSE_DISABLED = 4;
-    }
-
-    /**
-     * Defines IMS get operation values.
-     */
-    public static class OperationValuesConstants {
-        /**
-         * Values related to Video Quality
-         */
-        public static final int VIDEO_QUALITY_UNKNOWN = -1;
-        public static final int VIDEO_QUALITY_LOW = 0;
-        public static final int VIDEO_QUALITY_HIGH = 1;
-    }
-
-    /**
-     * Defines IMS video quality feature value.
-     */
-    public static class VideoQualityFeatureValuesConstants {
-        public static final int LOW = 0;
-        public static final int HIGH = 1;
-    }
-
-   /**
-    * Defines IMS feature value.
-    */
-    public static class FeatureValueConstants {
-        public static final int OFF = 0;
-        public static final int ON = 1;
-    }
-
-    /**
-     * Defines IMS feature value.
-     */
-    public static class WfcModeFeatureValueConstants {
-        public static final int WIFI_ONLY = 0;
-        public static final int CELLULAR_PREFERRED = 1;
-        public static final int WIFI_PREFERRED = 2;
-    }
-
-    public ImsConfig(IImsConfig iconfig, Context context) {
-        if (DBG) Rlog.d(TAG, "ImsConfig creates");
-        miConfig = iconfig;
-        mContext = context;
-    }
-
-    /**
-     * Gets the provisioned value for IMS service/capabilities parameters used by IMS stack.
-     * This function should not be called from the mainthread as it could block the
-     * mainthread.
-     *
-     * @param item, as defined in com.android.ims.ImsConfig#ConfigConstants.
-     * @return the value in Integer format.
-     *
-     * @throws ImsException if calling the IMS service results in an error.
-     */
-    public int getProvisionedValue(int item) throws ImsException {
-        int ret = 0;
-        try {
-            ret = miConfig.getProvisionedValue(item);
-        }  catch (RemoteException e) {
-            throw new ImsException("getValue()", e,
-                    ImsReasonInfo.CODE_LOCAL_SERVICE_UNAVAILABLE);
-        }
-        if (DBG) Rlog.d(TAG, "getProvisionedValue(): item = " + item + ", ret =" + ret);
-
-        return ret;
-    }
-
-    /**
-     * Gets the provisioned value for IMS service/capabilities parameters used by IMS stack.
-     * This function should not be called from the mainthread as it could block the
-     * mainthread.
-     *
-     * @param item, as defined in com.android.ims.ImsConfig#ConfigConstants.
-     * @return value in String format.
-     *
-     * @throws ImsException if calling the IMS service results in an error.
-     */
-    public String getProvisionedStringValue(int item) throws ImsException {
-        String ret = "Unknown";
-        try {
-            ret = miConfig.getProvisionedStringValue(item);
-        }  catch (RemoteException e) {
-            throw new ImsException("getProvisionedStringValue()", e,
-                    ImsReasonInfo.CODE_LOCAL_SERVICE_UNAVAILABLE);
-        }
-        if (DBG) Rlog.d(TAG, "getProvisionedStringValue(): item = " + item + ", ret =" + ret);
-
-        return ret;
-    }
-
-    /**
-     * Sets the value for IMS service/capabilities parameters by
-     * the operator device management entity.
-     * This function should not be called from main thread as it could block
-     * mainthread.
-     *
-     * @param item, as defined in com.android.ims.ImsConfig#ConfigConstants.
-     * @param value in Integer format.
-     * @return as defined in com.android.ims.ImsConfig#OperationStatusConstants
-     *
-     * @throws ImsException if calling the IMS service results in an error.
-     */
-    public int setProvisionedValue(int item, int value)
-            throws ImsException {
-        int ret = ImsConfig.OperationStatusConstants.UNKNOWN;
-        if (DBG) {
-            Rlog.d(TAG, "setProvisionedValue(): item = " + item +
-                    "value = " + value);
-        }
-        try {
-            ret = miConfig.setProvisionedValue(item, value);
-        }  catch (RemoteException e) {
-            throw new ImsException("setProvisionedValue()", e,
-                    ImsReasonInfo.CODE_LOCAL_SERVICE_UNAVAILABLE);
-        }
-        if (DBG) {
-            Rlog.d(TAG, "setProvisionedValue(): item = " + item +
-                    " value = " + value + " ret = " + ret);
-        }
-        return ret;
-    }
-
-    /**
-     * Sets the value for IMS service/capabilities parameters by
-     * the operator device management entity.
-     * This function should not be called from main thread as it could block
-     * mainthread.
-     *
-     * @param item, as defined in com.android.ims.ImsConfig#ConfigConstants.
-     * @param value in String format.
-     * @return as defined in com.android.ims.ImsConfig#OperationStatusConstants
-     *
-     * @throws ImsException if calling the IMS service results in an error.
-     */
-    public int setProvisionedStringValue(int item, String value)
-            throws ImsException {
-        int ret = ImsConfig.OperationStatusConstants.UNKNOWN;
-        try {
-            ret = miConfig.setProvisionedStringValue(item, value);
-        }  catch (RemoteException e) {
-            throw new ImsException("setProvisionedStringValue()", e,
-                    ImsReasonInfo.CODE_LOCAL_SERVICE_UNAVAILABLE);
-        }
-        if (DBG) {
-            Rlog.d(TAG, "setProvisionedStringValue(): item = " + item +
-                    ", value =" + value);
-        }
-        return ret;
-    }
-
-    /**
-     * Gets the value for IMS feature item for specified network type.
-     *
-     * @param feature, defined as in FeatureConstants.
-     * @param network, defined as in android.telephony.TelephonyManager#NETWORK_TYPE_XXX.
-     * @param listener, provided to be notified for the feature on/off status.
-     * @return void
-     *
-     * @throws ImsException if calling the IMS service results in an error.
-     */
-    public void getFeatureValue(int feature, int network,
-            ImsConfigListener listener) throws ImsException {
-        if (DBG) {
-            Rlog.d(TAG, "getFeatureValue: feature = " + feature + ", network =" + network +
-                    ", listener =" + listener);
-        }
-        try {
-            miConfig.getFeatureValue(feature, network, listener);
-        } catch (RemoteException e) {
-            throw new ImsException("getFeatureValue()", e,
-                    ImsReasonInfo.CODE_LOCAL_SERVICE_UNAVAILABLE);
-        }
-    }
-
-    /**
-     * Sets the value for IMS feature item for specified network type.
-     *
-     * @param feature, as defined in FeatureConstants.
-     * @param network, as defined in android.telephony.TelephonyManager#NETWORK_TYPE_XXX.
-     * @param value, as defined in FeatureValueConstants.
-     * @param listener, provided if caller needs to be notified for set result.
-     * @return void
-     *
-     * @throws ImsException if calling the IMS service results in an error.
-     */
-    public void setFeatureValue(int feature, int network, int value,
-            ImsConfigListener listener) throws ImsException {
-        if (DBG) {
-            Rlog.d(TAG, "setFeatureValue: feature = " + feature + ", network =" + network +
-                    ", value =" + value + ", listener =" + listener);
-        }
-        try {
-            miConfig.setFeatureValue(feature, network, value, listener);
-        } catch (RemoteException e) {
-            throw new ImsException("setFeatureValue()", e,
-                    ImsReasonInfo.CODE_LOCAL_SERVICE_UNAVAILABLE);
-        }
-    }
-}
diff --git a/src/java/com/android/ims/ImsException.java b/src/java/com/android/ims/ImsException.java
deleted file mode 100644 (file)
index 74b20f4..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright (c) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.ims;
-
-/**
- * This class defines a general IMS-related exception.
- *
- * @hide
- */
-public class ImsException extends Exception {
-
-    /**
-     * Refer to CODE_LOCAL_* in {@link ImsReasonInfo}
-     */
-    private int mCode;
-
-    public ImsException() {
-    }
-
-    public ImsException(String message, int code) {
-        super(message + ", code = " + code);
-        mCode = code;
-    }
-
-    public ImsException(String message, Throwable cause, int code) {
-        super(message, cause);
-        mCode = code;
-    }
-
-    /**
-     * Gets the detailed exception code when ImsException is throwed
-     *
-     * @return the exception code in {@link ImsReasonInfo}
-     */
-    public int getCode() {
-        return mCode;
-    }
-}
index 478dcb7..8677b9d 100644 (file)
@@ -19,6 +19,7 @@ package com.android.ims;
 /**
  * This class defines an identifier for each IMS service category.
  *
+ * @deprecated Use {@link android.telephony.ims.feature.ImsFeature} definitions instead.
  * @hide
  */
 public class ImsServiceClass {
diff --git a/src/java/com/android/ims/ImsUtInterface.java b/src/java/com/android/ims/ImsUtInterface.java
deleted file mode 100644 (file)
index 5984e78..0000000
+++ /dev/null
@@ -1,179 +0,0 @@
-/*
- * Copyright (c) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.ims;
-
-import android.os.Message;
-
-/**
- * Provides APIs for the supplementary service settings using IMS (Ut interface).
- * It is created from 3GPP TS 24.623 (XCAP(XML Configuration Access Protocol)
- * over the Ut interface for manipulating supplementary services).
- *
- * @hide
- */
-public interface ImsUtInterface {
-    /**
-     * Actions
-     * @hide
-     */
-    public static final int ACTION_DEACTIVATION = 0;
-    public static final int ACTION_ACTIVATION = 1;
-    public static final int ACTION_REGISTRATION = 3;
-    public static final int ACTION_ERASURE = 4;
-    public static final int ACTION_INTERROGATION = 5;
-
-    /**
-     * OIR (Originating Identification Restriction, 3GPP TS 24.607)
-     * OIP (Originating Identification Presentation, 3GPP TS 24.607)
-     * TIR (Terminating Identification Restriction, 3GPP TS 24.608)
-     * TIP (Terminating Identification Presentation, 3GPP TS 24.608)
-     */
-    public static final int OIR_DEFAULT = 0;    // "user subscription default value"
-    public static final int OIR_PRESENTATION_RESTRICTED = 1;
-    public static final int OIR_PRESENTATION_NOT_RESTRICTED = 2;
-
-    /**
-     * CW (Communication Waiting, 3GPP TS 24.615)
-     */
-
-    /**
-     * CDIV (Communication Diversion, 3GPP TS 24.604)
-     *     actions: target, no reply timer
-     */
-    public static final int CDIV_CF_UNCONDITIONAL = 0;
-    public static final int CDIV_CF_BUSY = 1;
-    public static final int CDIV_CF_NO_REPLY = 2;
-    public static final int CDIV_CF_NOT_REACHABLE = 3;
-    // For CS service code: 002
-    public static final int CDIV_CF_ALL = 4;
-    // For CS service code: 004
-    public static final int CDIV_CF_ALL_CONDITIONAL = 5;
-    // It's only supported in the IMS service (CS does not define it).
-    // IR.92 recommends that an UE activates both the CFNRc and the CFNL
-    // (CDIV using condition not-registered) to the same target.
-    public static final int CDIV_CF_NOT_LOGGED_IN = 6;
-
-    /**
-     * CB (Communication Barring, 3GPP TS 24.611)
-     */
-    // Barring of All Incoming Calls
-    public static final int CB_BAIC = 1;
-    // Barring of All Outgoing Calls
-    public static final int CB_BAOC = 2;
-    // Barring of Outgoing International Calls
-    public static final int CB_BOIC = 3;
-    // Barring of Outgoing International Calls - excluding Home Country
-    public static final int CB_BOIC_EXHC = 4;
-    // Barring of Incoming Calls - when roaming
-    public static final int CB_BIC_WR = 5;
-    // Barring of Anonymous Communication Rejection (ACR) - a particular case of ICB service
-    public static final int CB_BIC_ACR = 6;
-    // Barring of All Calls
-    public static final int CB_BA_ALL = 7;
-    // Barring of Outgoing Services (Service Code 333 - 3GPP TS 22.030 Table B-1)
-    public static final int CB_BA_MO = 8;
-    // Barring of Incoming Services (Service Code 353 - 3GPP TS 22.030 Table B-1)
-    public static final int CB_BA_MT = 9;
-    // Barring of Specific Incoming calls
-    public static final int CB_BS_MT = 10;
-
-    /**
-     * Invalid result value.
-     */
-    public static final int INVALID = (-1);
-
-
-
-    /**
-     * Operations for the supplementary service configuration
-     */
-
-    /**
-     * Retrieves the configuration of the call barring.
-     * The return value of ((AsyncResult)result.obj) is an array of {@link ImsSsInfo}.
-     */
-    public void queryCallBarring(int cbType, Message result);
-
-    /**
-     * Retrieves the configuration of the call forward.
-     * The return value of ((AsyncResult)result.obj) is an array of {@link ImsCallForwardInfo}.
-     */
-    public void queryCallForward(int condition, String number, Message result);
-
-    /**
-     * Retrieves the configuration of the call waiting.
-     * The return value of ((AsyncResult)result.obj) is an array of {@link ImsSsInfo}.
-     */
-    public void queryCallWaiting(Message result);
-
-    /**
-     * Retrieves the default CLIR setting.
-     */
-    public void queryCLIR(Message result);
-
-    /**
-     * Retrieves the CLIP call setting.
-     */
-    public void queryCLIP(Message result);
-
-    /**
-     * Retrieves the COLR call setting.
-     */
-    public void queryCOLR(Message result);
-
-    /**
-     * Retrieves the COLP call setting.
-     */
-    public void queryCOLP(Message result);
-
-    /**
-     * Modifies the configuration of the call barring.
-     */
-    public void updateCallBarring(int cbType, int action,
-            Message result, String[] barrList);
-
-    /**
-     * Modifies the configuration of the call forward.
-     */
-    public void updateCallForward(int action, int condition, String number,
-            int serviceClass, int timeSeconds, Message result);
-
-    /**
-     * Modifies the configuration of the call waiting.
-     */
-    public void updateCallWaiting(boolean enable, int serviceClass, Message result);
-
-    /**
-     * Updates the configuration of the CLIR supplementary service.
-     */
-    public void updateCLIR(int clirMode, Message result);
-
-    /**
-     * Updates the configuration of the CLIP supplementary service.
-     */
-    public void updateCLIP(boolean enable, Message result);
-
-    /**
-     * Updates the configuration of the COLR supplementary service.
-     */
-    public void updateCOLR(int presentation, Message result);
-
-    /**
-     * Updates the configuration of the COLP supplementary service.
-     */
-    public void updateCOLP(boolean enable, Message result);
-}
diff --git a/src/java/com/android/ims/internal/ImsCallSession.java b/src/java/com/android/ims/internal/ImsCallSession.java
deleted file mode 100644 (file)
index d8614e3..0000000
+++ /dev/null
@@ -1,1288 +0,0 @@
-/*
- * Copyright (c) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.ims.internal;
-
-import android.os.Message;
-import android.os.RemoteException;
-import android.telecom.Connection;
-
-import java.util.Objects;
-import android.util.Log;
-import com.android.ims.ImsCallProfile;
-import com.android.ims.ImsConferenceState;
-import com.android.ims.ImsReasonInfo;
-import com.android.ims.ImsStreamMediaProfile;
-import com.android.ims.ImsSuppServiceNotification;
-
-/**
- * Provides the call initiation/termination, and media exchange between two IMS endpoints.
- * It directly communicates with IMS service which implements the IMS protocol behavior.
- *
- * @hide
- */
-public class ImsCallSession {
-    private static final String TAG = "ImsCallSession";
-
-    /**
-     * Defines IMS call session state.
-     */
-    public static class State {
-        public static final int IDLE = 0;
-        public static final int INITIATED = 1;
-        public static final int NEGOTIATING = 2;
-        public static final int ESTABLISHING = 3;
-        public static final int ESTABLISHED = 4;
-
-        public static final int RENEGOTIATING = 5;
-        public static final int REESTABLISHING = 6;
-
-        public static final int TERMINATING = 7;
-        public static final int TERMINATED = 8;
-
-        public static final int INVALID = (-1);
-
-        /**
-         * Converts the state to string.
-         */
-        public static String toString(int state) {
-            switch (state) {
-                case IDLE:
-                    return "IDLE";
-                case INITIATED:
-                    return "INITIATED";
-                case NEGOTIATING:
-                    return "NEGOTIATING";
-                case ESTABLISHING:
-                    return "ESTABLISHING";
-                case ESTABLISHED:
-                    return "ESTABLISHED";
-                case RENEGOTIATING:
-                    return "RENEGOTIATING";
-                case REESTABLISHING:
-                    return "REESTABLISHING";
-                case TERMINATING:
-                    return "TERMINATING";
-                case TERMINATED:
-                    return "TERMINATED";
-                default:
-                    return "UNKNOWN";
-            }
-        }
-
-        private State() {
-        }
-    }
-
-    /**
-     * Listener for events relating to an IMS session, such as when a session is being
-     * recieved ("on ringing") or a call is outgoing ("on calling").
-     * <p>Many of these events are also received by {@link ImsCall.Listener}.</p>
-     */
-    public static class Listener {
-        /**
-         * Called when a request is sent out to initiate a new session
-         * and 1xx response is received from the network.
-         *
-         * @param session the session object that carries out the IMS session
-         */
-        public void callSessionProgressing(ImsCallSession session,
-                ImsStreamMediaProfile profile) {
-            // no-op
-        }
-
-        /**
-         * Called when the session is established.
-         *
-         * @param session the session object that carries out the IMS session
-         */
-        public void callSessionStarted(ImsCallSession session,
-                ImsCallProfile profile) {
-            // no-op
-        }
-
-        /**
-         * Called when the session establishment is failed.
-         *
-         * @param session the session object that carries out the IMS session
-         * @param reasonInfo detailed reason of the session establishment failure
-         */
-        public void callSessionStartFailed(ImsCallSession session,
-                ImsReasonInfo reasonInfo) {
-        }
-
-        /**
-         * Called when the session is terminated.
-         *
-         * @param session the session object that carries out the IMS session
-         * @param reasonInfo detailed reason of the session termination
-         */
-        public void callSessionTerminated(ImsCallSession session,
-                ImsReasonInfo reasonInfo) {
-        }
-
-        /**
-         * Called when the session is in hold.
-         *
-         * @param session the session object that carries out the IMS session
-         */
-        public void callSessionHeld(ImsCallSession session,
-                ImsCallProfile profile) {
-        }
-
-        /**
-         * Called when the session hold is failed.
-         *
-         * @param session the session object that carries out the IMS session
-         * @param reasonInfo detailed reason of the session hold failure
-         */
-        public void callSessionHoldFailed(ImsCallSession session,
-                ImsReasonInfo reasonInfo) {
-        }
-
-        /**
-         * Called when the session hold is received from the remote user.
-         *
-         * @param session the session object that carries out the IMS session
-         */
-        public void callSessionHoldReceived(ImsCallSession session,
-                ImsCallProfile profile) {
-        }
-
-        /**
-         * Called when the session resume is done.
-         *
-         * @param session the session object that carries out the IMS session
-         */
-        public void callSessionResumed(ImsCallSession session,
-                ImsCallProfile profile) {
-        }
-
-        /**
-         * Called when the session resume is failed.
-         *
-         * @param session the session object that carries out the IMS session
-         * @param reasonInfo detailed reason of the session resume failure
-         */
-        public void callSessionResumeFailed(ImsCallSession session,
-                ImsReasonInfo reasonInfo) {
-        }
-
-        /**
-         * Called when the session resume is received from the remote user.
-         *
-         * @param session the session object that carries out the IMS session
-         */
-        public void callSessionResumeReceived(ImsCallSession session,
-                ImsCallProfile profile) {
-        }
-
-        /**
-         * Called when the session merge has been started.  At this point, the {@code newSession}
-         * represents the session which has been initiated to the IMS conference server for the
-         * new merged conference.
-         *
-         * @param session the session object that carries out the IMS session
-         * @param newSession the session object that is merged with an active & hold session
-         */
-        public void callSessionMergeStarted(ImsCallSession session,
-                ImsCallSession newSession, ImsCallProfile profile) {
-        }
-
-        /**
-         * Called when the session merge is successful and the merged session is active.
-         *
-         * @param session the session object that carries out the IMS session
-         */
-        public void callSessionMergeComplete(ImsCallSession session) {
-        }
-
-        /**
-         * Called when the session merge has failed.
-         *
-         * @param session the session object that carries out the IMS session
-         * @param reasonInfo detailed reason of the call merge failure
-         */
-        public void callSessionMergeFailed(ImsCallSession session,
-                ImsReasonInfo reasonInfo) {
-        }
-
-        /**
-         * Called when the session is updated (except for hold/unhold).
-         *
-         * @param call the call object that carries out the IMS call
-         */
-        public void callSessionUpdated(ImsCallSession session,
-                ImsCallProfile profile) {
-        }
-
-        /**
-         * Called when the session update is failed.
-         *
-         * @param session the session object that carries out the IMS session
-         * @param reasonInfo detailed reason of the session update failure
-         */
-        public void callSessionUpdateFailed(ImsCallSession session,
-                ImsReasonInfo reasonInfo) {
-        }
-
-        /**
-         * Called when the session update is received from the remote user.
-         *
-         * @param session the session object that carries out the IMS session
-         */
-        public void callSessionUpdateReceived(ImsCallSession session,
-                ImsCallProfile profile) {
-            // no-op
-        }
-
-        /**
-         * Called when the session is extended to the conference session.
-         *
-         * @param session the session object that carries out the IMS session
-         * @param newSession the session object that is extended to the conference
-         *      from the active session
-         */
-        public void callSessionConferenceExtended(ImsCallSession session,
-                ImsCallSession newSession, ImsCallProfile profile) {
-        }
-
-        /**
-         * Called when the conference extension is failed.
-         *
-         * @param session the session object that carries out the IMS session
-         * @param reasonInfo detailed reason of the conference extension failure
-         */
-        public void callSessionConferenceExtendFailed(ImsCallSession session,
-                ImsReasonInfo reasonInfo) {
-        }
-
-        /**
-         * Called when the conference extension is received from the remote user.
-         *
-         * @param session the session object that carries out the IMS session
-         */
-        public void callSessionConferenceExtendReceived(ImsCallSession session,
-                ImsCallSession newSession, ImsCallProfile profile) {
-            // no-op
-        }
-
-        /**
-         * Called when the invitation request of the participants is delivered to the conference
-         * server.
-         *
-         * @param session the session object that carries out the IMS session
-         */
-        public void callSessionInviteParticipantsRequestDelivered(ImsCallSession session) {
-            // no-op
-        }
-
-        /**
-         * Called when the invitation request of the participants is failed.
-         *
-         * @param session the session object that carries out the IMS session
-         * @param reasonInfo detailed reason of the conference invitation failure
-         */
-        public void callSessionInviteParticipantsRequestFailed(ImsCallSession session,
-                ImsReasonInfo reasonInfo) {
-            // no-op
-        }
-
-        /**
-         * Called when the removal request of the participants is delivered to the conference
-         * server.
-         *
-         * @param session the session object that carries out the IMS session
-         */
-        public void callSessionRemoveParticipantsRequestDelivered(ImsCallSession session) {
-            // no-op
-        }
-
-        /**
-         * Called when the removal request of the participants is failed.
-         *
-         * @param session the session object that carries out the IMS session
-         * @param reasonInfo detailed reason of the conference removal failure
-         */
-        public void callSessionRemoveParticipantsRequestFailed(ImsCallSession session,
-                ImsReasonInfo reasonInfo) {
-            // no-op
-        }
-
-        /**
-         * Called when the conference state is updated.
-         *
-         * @param session the session object that carries out the IMS session
-         */
-        public void callSessionConferenceStateUpdated(ImsCallSession session,
-                ImsConferenceState state) {
-            // no-op
-        }
-
-        /**
-         * Called when the USSD message is received from the network.
-         *
-         * @param mode mode of the USSD message (REQUEST / NOTIFY)
-         * @param ussdMessage USSD message
-         */
-        public void callSessionUssdMessageReceived(ImsCallSession session,
-                int mode, String ussdMessage) {
-            // no-op
-        }
-
-        /**
-         * Called when session access technology changes
-         *
-         * @param session IMS session object
-         * @param srcAccessTech original access technology
-         * @param targetAccessTech new access technology
-         * @param reasonInfo
-         */
-        public void callSessionHandover(ImsCallSession session,
-                                 int srcAccessTech, int targetAccessTech,
-                                 ImsReasonInfo reasonInfo) {
-            // no-op
-        }
-
-        /**
-         * Called when session access technology change fails
-         *
-         * @param session IMS session object
-         * @param srcAccessTech original access technology
-         * @param targetAccessTech new access technology
-         * @param reasonInfo handover failure reason
-         */
-        public void callSessionHandoverFailed(ImsCallSession session,
-                                       int srcAccessTech, int targetAccessTech,
-                                       ImsReasonInfo reasonInfo) {
-            // no-op
-        }
-
-        /**
-         * Called when TTY mode of remote party changed
-         *
-         * @param session IMS session object
-         * @param mode TTY mode of remote party
-         */
-        public void callSessionTtyModeReceived(ImsCallSession session,
-                                       int mode) {
-            // no-op
-        }
-
-        /**
-         * Notifies of a change to the multiparty state for this {@code ImsCallSession}.
-         *
-         * @param session The call session.
-         * @param isMultiParty {@code true} if the session became multiparty, {@code false}
-         *      otherwise.
-         */
-        public void callSessionMultipartyStateChanged(ImsCallSession session,
-                boolean isMultiParty) {
-            // no-op
-        }
-
-        /**
-         * Called when the session supplementary service is received
-         *
-         * @param session the session object that carries out the IMS session
-         */
-        public void callSessionSuppServiceReceived(ImsCallSession session,
-                ImsSuppServiceNotification suppServiceInfo) {
-        }
-    }
-
-    private final IImsCallSession miSession;
-    private boolean mClosed = false;
-    private Listener mListener;
-
-    public ImsCallSession(IImsCallSession iSession) {
-        miSession = iSession;
-
-        if (iSession != null) {
-            try {
-                iSession.setListener(new IImsCallSessionListenerProxy());
-            } catch (RemoteException e) {
-            }
-        } else {
-            mClosed = true;
-        }
-    }
-
-    public ImsCallSession(IImsCallSession iSession, Listener listener) {
-        this(iSession);
-        setListener(listener);
-    }
-
-    /**
-     * Closes this object. This object is not usable after being closed.
-     */
-    public synchronized void close() {
-        if (mClosed) {
-            return;
-        }
-
-        try {
-            miSession.close();
-            mClosed = true;
-        } catch (RemoteException e) {
-        }
-    }
-
-    /**
-     * Gets the call ID of the session.
-     *
-     * @return the call ID
-     */
-    public String getCallId() {
-        if (mClosed) {
-            return null;
-        }
-
-        try {
-            return miSession.getCallId();
-        } catch (RemoteException e) {
-            return null;
-        }
-    }
-
-    /**
-     * Gets the call profile that this session is associated with
-     *
-     * @return the call profile that this session is associated with
-     */
-    public ImsCallProfile getCallProfile() {
-        if (mClosed) {
-            return null;
-        }
-
-        try {
-            return miSession.getCallProfile();
-        } catch (RemoteException e) {
-            return null;
-        }
-    }
-
-    /**
-     * Gets the local call profile that this session is associated with
-     *
-     * @return the local call profile that this session is associated with
-     */
-    public ImsCallProfile getLocalCallProfile() {
-        if (mClosed) {
-            return null;
-        }
-
-        try {
-            return miSession.getLocalCallProfile();
-        } catch (RemoteException e) {
-            return null;
-        }
-    }
-
-    /**
-     * Gets the remote call profile that this session is associated with
-     *
-     * @return the remote call profile that this session is associated with
-     */
-    public ImsCallProfile getRemoteCallProfile() {
-        if (mClosed) {
-            return null;
-        }
-
-        try {
-            return miSession.getRemoteCallProfile();
-        } catch (RemoteException e) {
-            return null;
-        }
-    }
-
-    /**
-     * Gets the video call provider for the session.
-     *
-     * @return The video call provider.
-     */
-    public IImsVideoCallProvider getVideoCallProvider() {
-        if (mClosed) {
-            return null;
-        }
-
-        try {
-            return miSession.getVideoCallProvider();
-        } catch (RemoteException e) {
-            return null;
-        }
-    }
-
-    /**
-     * Gets the value associated with the specified property of this session.
-     *
-     * @return the string value associated with the specified property
-     */
-    public String getProperty(String name) {
-        if (mClosed) {
-            return null;
-        }
-
-        try {
-            return miSession.getProperty(name);
-        } catch (RemoteException e) {
-            return null;
-        }
-    }
-
-    /**
-     * Gets the session state.
-     * The value returned must be one of the states in {@link State}.
-     *
-     * @return the session state
-     */
-    public int getState() {
-        if (mClosed) {
-            return State.INVALID;
-        }
-
-        try {
-            return miSession.getState();
-        } catch (RemoteException e) {
-            return State.INVALID;
-        }
-    }
-
-    /**
-     * Determines if the {@link ImsCallSession} is currently alive (e.g. not in a terminated or
-     * closed state).
-     *
-     * @return {@code True} if the session is alive.
-     */
-    public boolean isAlive() {
-        if (mClosed) {
-            return false;
-        }
-
-        int state = getState();
-        switch (state) {
-            case State.IDLE:
-            case State.INITIATED:
-            case State.NEGOTIATING:
-            case State.ESTABLISHING:
-            case State.ESTABLISHED:
-            case State.RENEGOTIATING:
-            case State.REESTABLISHING:
-                return true;
-            default:
-                return false;
-        }
-    }
-
-    /**
-     * Gets the native IMS call session.
-     * @hide
-     */
-    public IImsCallSession getSession() {
-        return miSession;
-    }
-
-    /**
-     * Checks if the session is in call.
-     *
-     * @return true if the session is in call
-     */
-    public boolean isInCall() {
-        if (mClosed) {
-            return false;
-        }
-
-        try {
-            return miSession.isInCall();
-        } catch (RemoteException e) {
-            return false;
-        }
-    }
-
-    /**
-     * Sets the listener to listen to the session events. A {@link ImsCallSession}
-     * can only hold one listener at a time. Subsequent calls to this method
-     * override the previous listener.
-     *
-     * @param listener to listen to the session events of this object
-     */
-    public void setListener(Listener listener) {
-        mListener = listener;
-    }
-
-    /**
-     * Mutes or unmutes the mic for the active call.
-     *
-     * @param muted true if the call is muted, false otherwise
-     */
-    public void setMute(boolean muted) {
-        if (mClosed) {
-            return;
-        }
-
-        try {
-            miSession.setMute(muted);
-        } catch (RemoteException e) {
-        }
-    }
-
-    /**
-     * Initiates an IMS call with the specified target and call profile.
-     * The session listener is called back upon defined session events.
-     * The method is only valid to call when the session state is in
-     * {@link ImsCallSession#State#IDLE}.
-     *
-     * @param callee dialed string to make the call to
-     * @param profile call profile to make the call with the specified service type,
-     *      call type and media information
-     * @see Listener#callSessionStarted, Listener#callSessionStartFailed
-     */
-    public void start(String callee, ImsCallProfile profile) {
-        if (mClosed) {
-            return;
-        }
-
-        try {
-            miSession.start(callee, profile);
-        } catch (RemoteException e) {
-        }
-    }
-
-    /**
-     * Initiates an IMS conference call with the specified target and call profile.
-     * The session listener is called back upon defined session events.
-     * The method is only valid to call when the session state is in
-     * {@link ImsCallSession#State#IDLE}.
-     *
-     * @param participants participant list to initiate an IMS conference call
-     * @param profile call profile to make the call with the specified service type,
-     *      call type and media information
-     * @see Listener#callSessionStarted, Listener#callSessionStartFailed
-     */
-    public void start(String[] participants, ImsCallProfile profile) {
-        if (mClosed) {
-            return;
-        }
-
-        try {
-            miSession.startConference(participants, profile);
-        } catch (RemoteException e) {
-        }
-    }
-
-    /**
-     * Accepts an incoming call or session update.
-     *
-     * @param callType call type specified in {@link ImsCallProfile} to be answered
-     * @param profile stream media profile {@link ImsStreamMediaProfile} to be answered
-     * @see Listener#callSessionStarted
-     */
-    public void accept(int callType, ImsStreamMediaProfile profile) {
-        if (mClosed) {
-            return;
-        }
-
-        try {
-            miSession.accept(callType, profile);
-        } catch (RemoteException e) {
-        }
-    }
-
-    /**
-     * Rejects an incoming call or session update.
-     *
-     * @param reason reason code to reject an incoming call
-     * @see Listener#callSessionStartFailed
-     */
-    public void reject(int reason) {
-        if (mClosed) {
-            return;
-        }
-
-        try {
-            miSession.reject(reason);
-        } catch (RemoteException e) {
-        }
-    }
-
-    /**
-     * Terminates a call.
-     *
-     * @see Listener#callSessionTerminated
-     */
-    public void terminate(int reason) {
-        if (mClosed) {
-            return;
-        }
-
-        try {
-            miSession.terminate(reason);
-        } catch (RemoteException e) {
-        }
-    }
-
-    /**
-     * Puts a call on hold. When it succeeds, {@link Listener#callSessionHeld} is called.
-     *
-     * @param profile stream media profile {@link ImsStreamMediaProfile} to hold the call
-     * @see Listener#callSessionHeld, Listener#callSessionHoldFailed
-     */
-    public void hold(ImsStreamMediaProfile profile) {
-        if (mClosed) {
-            return;
-        }
-
-        try {
-            miSession.hold(profile);
-        } catch (RemoteException e) {
-        }
-    }
-
-    /**
-     * Continues a call that's on hold. When it succeeds,
-     * {@link Listener#callSessionResumed} is called.
-     *
-     * @param profile stream media profile {@link ImsStreamMediaProfile} to resume the call
-     * @see Listener#callSessionResumed, Listener#callSessionResumeFailed
-     */
-    public void resume(ImsStreamMediaProfile profile) {
-        if (mClosed) {
-            return;
-        }
-
-        try {
-            miSession.resume(profile);
-        } catch (RemoteException e) {
-        }
-    }
-
-    /**
-     * Merges the active & hold call. When it succeeds,
-     * {@link Listener#callSessionMergeStarted} is called.
-     *
-     * @see Listener#callSessionMergeStarted , Listener#callSessionMergeFailed
-     */
-    public void merge() {
-        if (mClosed) {
-            return;
-        }
-
-        try {
-            miSession.merge();
-        } catch (RemoteException e) {
-        }
-    }
-
-    /**
-     * Updates the current call's properties (ex. call mode change: video upgrade / downgrade).
-     *
-     * @param callType call type specified in {@link ImsCallProfile} to be updated
-     * @param profile stream media profile {@link ImsStreamMediaProfile} to be updated
-     * @see Listener#callSessionUpdated, Listener#callSessionUpdateFailed
-     */
-    public void update(int callType, ImsStreamMediaProfile profile) {
-        if (mClosed) {
-            return;
-        }
-
-        try {
-            miSession.update(callType, profile);
-        } catch (RemoteException e) {
-        }
-    }
-
-    /**
-     * Extends this call to the conference call with the specified recipients.
-     *
-     * @participants participant list to be invited to the conference call after extending the call
-     * @see Listener#sessionConferenceExtened, Listener#sessionConferenceExtendFailed
-     */
-    public void extendToConference(String[] participants) {
-        if (mClosed) {
-            return;
-        }
-
-        try {
-            miSession.extendToConference(participants);
-        } catch (RemoteException e) {
-        }
-    }
-
-    /**
-     * Requests the conference server to invite an additional participants to the conference.
-     *
-     * @participants participant list to be invited to the conference call
-     * @see Listener#sessionInviteParticipantsRequestDelivered,
-     *      Listener#sessionInviteParticipantsRequestFailed
-     */
-    public void inviteParticipants(String[] participants) {
-        if (mClosed) {
-            return;
-        }
-
-        try {
-            miSession.inviteParticipants(participants);
-        } catch (RemoteException e) {
-        }
-    }
-
-    /**
-     * Requests the conference server to remove the specified participants from the conference.
-     *
-     * @param participants participant list to be removed from the conference call
-     * @see Listener#sessionRemoveParticipantsRequestDelivered,
-     *      Listener#sessionRemoveParticipantsRequestFailed
-     */
-    public void removeParticipants(String[] participants) {
-        if (mClosed) {
-            return;
-        }
-
-        try {
-            miSession.removeParticipants(participants);
-        } catch (RemoteException e) {
-        }
-    }
-
-
-    /**
-     * Sends a DTMF code. According to <a href="http://tools.ietf.org/html/rfc2833">RFC 2833</a>,
-     * event 0 ~ 9 maps to decimal value 0 ~ 9, '*' to 10, '#' to 11, event 'A' ~ 'D' to 12 ~ 15,
-     * and event flash to 16. Currently, event flash is not supported.
-     *
-     * @param c the DTMF to send. '0' ~ '9', 'A' ~ 'D', '*', '#' are valid inputs.
-     */
-    public void sendDtmf(char c, Message result) {
-        if (mClosed) {
-            return;
-        }
-
-        try {
-            miSession.sendDtmf(c, result);
-        } catch (RemoteException e) {
-        }
-    }
-
-    /**
-     * Starts a DTMF code. According to <a href="http://tools.ietf.org/html/rfc2833">RFC 2833</a>,
-     * event 0 ~ 9 maps to decimal value 0 ~ 9, '*' to 10, '#' to 11, event 'A' ~ 'D' to 12 ~ 15,
-     * and event flash to 16. Currently, event flash is not supported.
-     *
-     * @param c the DTMF to send. '0' ~ '9', 'A' ~ 'D', '*', '#' are valid inputs.
-     */
-    public void startDtmf(char c) {
-        if (mClosed) {
-            return;
-        }
-
-        try {
-            miSession.startDtmf(c);
-        } catch (RemoteException e) {
-        }
-    }
-
-    /**
-     * Stops a DTMF code.
-     */
-    public void stopDtmf() {
-        if (mClosed) {
-            return;
-        }
-
-        try {
-            miSession.stopDtmf();
-        } catch (RemoteException e) {
-        }
-    }
-
-    /**
-     * Sends an USSD message.
-     *
-     * @param ussdMessage USSD message to send
-     */
-    public void sendUssd(String ussdMessage) {
-        if (mClosed) {
-            return;
-        }
-
-        try {
-            miSession.sendUssd(ussdMessage);
-        } catch (RemoteException e) {
-        }
-    }
-
-    /**
-     * Determines if the session is multiparty.
-     *
-     * @return {@code True} if the session is multiparty.
-     */
-    public boolean isMultiparty() {
-        if (mClosed) {
-            return false;
-        }
-
-        try {
-            return miSession.isMultiparty();
-        } catch (RemoteException e) {
-            return false;
-        }
-    }
-
-    /**
-     * A listener type for receiving notification on IMS call session events.
-     * When an event is generated for an {@link IImsCallSession},
-     * the application is notified by having one of the methods called on
-     * the {@link IImsCallSessionListener}.
-     */
-    private class IImsCallSessionListenerProxy extends IImsCallSessionListener.Stub {
-        /**
-         * Notifies the result of the basic session operation (setup / terminate).
-         */
-        @Override
-        public void callSessionProgressing(IImsCallSession session,
-                ImsStreamMediaProfile profile) {
-            if (mListener != null) {
-                mListener.callSessionProgressing(ImsCallSession.this, profile);
-            }
-        }
-
-        @Override
-        public void callSessionStarted(IImsCallSession session,
-                ImsCallProfile profile) {
-            if (mListener != null) {
-                mListener.callSessionStarted(ImsCallSession.this, profile);
-            }
-        }
-
-        @Override
-        public void callSessionStartFailed(IImsCallSession session,
-                ImsReasonInfo reasonInfo) {
-            if (mListener != null) {
-                mListener.callSessionStartFailed(ImsCallSession.this, reasonInfo);
-            }
-        }
-
-        @Override
-        public void callSessionTerminated(IImsCallSession session,
-                ImsReasonInfo reasonInfo) {
-            if (mListener != null) {
-                mListener.callSessionTerminated(ImsCallSession.this, reasonInfo);
-            }
-        }
-
-        /**
-         * Notifies the result of the call hold/resume operation.
-         */
-        @Override
-        public void callSessionHeld(IImsCallSession session,
-                ImsCallProfile profile) {
-            if (mListener != null) {
-                mListener.callSessionHeld(ImsCallSession.this, profile);
-            }
-        }
-
-        @Override
-        public void callSessionHoldFailed(IImsCallSession session,
-                ImsReasonInfo reasonInfo) {
-            if (mListener != null) {
-                mListener.callSessionHoldFailed(ImsCallSession.this, reasonInfo);
-            }
-        }
-
-        @Override
-        public void callSessionHoldReceived(IImsCallSession session,
-                ImsCallProfile profile) {
-            if (mListener != null) {
-                mListener.callSessionHoldReceived(ImsCallSession.this, profile);
-            }
-        }
-
-        @Override
-        public void callSessionResumed(IImsCallSession session,
-                ImsCallProfile profile) {
-            if (mListener != null) {
-                mListener.callSessionResumed(ImsCallSession.this, profile);
-            }
-        }
-
-        @Override
-        public void callSessionResumeFailed(IImsCallSession session,
-                ImsReasonInfo reasonInfo) {
-            if (mListener != null) {
-                mListener.callSessionResumeFailed(ImsCallSession.this, reasonInfo);
-            }
-        }
-
-        @Override
-        public void callSessionResumeReceived(IImsCallSession session,
-                ImsCallProfile profile) {
-            if (mListener != null) {
-                mListener.callSessionResumeReceived(ImsCallSession.this, profile);
-            }
-        }
-
-        /**
-         * Notifies the start of a call merge operation.
-         *
-         * @param session The call session.
-         * @param newSession The merged call session.
-         * @param profile The call profile.
-         */
-        @Override
-        public void callSessionMergeStarted(IImsCallSession session,
-                IImsCallSession newSession, ImsCallProfile profile) {
-            // This callback can be used for future use to add additional
-            // functionality that may be needed between conference start and complete
-            Log.d(TAG, "callSessionMergeStarted");
-        }
-
-        /**
-         * Notifies the successful completion of a call merge operation.
-         *
-         * @param session The call session.
-         */
-        @Override
-        public void callSessionMergeComplete(IImsCallSession newSession) {
-            if (mListener != null) {
-                if (newSession != null) {
-                    // Check if the active session is the same session that was
-                    // active before the merge request was sent.
-                    ImsCallSession validActiveSession = ImsCallSession.this;
-                    try {
-                        if (!Objects.equals(miSession.getCallId(), newSession.getCallId())) {
-                            // New session created after conference
-                            validActiveSession = new ImsCallSession(newSession);
-                        }
-                    } catch (RemoteException rex) {
-                        Log.e(TAG, "callSessionMergeComplete: exception for getCallId!");
-                    }
-                    mListener.callSessionMergeComplete(validActiveSession);
-               } else {
-                   // Session already exists. Hence no need to pass
-                   mListener.callSessionMergeComplete(null);
-               }
-            }
-        }
-
-        /**
-         * Notifies of a failure to perform a call merge operation.
-         *
-         * @param session The call session.
-         * @param reasonInfo The merge failure reason.
-         */
-        @Override
-        public void callSessionMergeFailed(IImsCallSession session,
-                ImsReasonInfo reasonInfo) {
-            if (mListener != null) {
-                mListener.callSessionMergeFailed(ImsCallSession.this, reasonInfo);
-            }
-        }
-
-        /**
-         * Notifies the result of call upgrade / downgrade or any other call updates.
-         */
-        @Override
-        public void callSessionUpdated(IImsCallSession session,
-                ImsCallProfile profile) {
-            if (mListener != null) {
-                mListener.callSessionUpdated(ImsCallSession.this, profile);
-            }
-        }
-
-        @Override
-        public void callSessionUpdateFailed(IImsCallSession session,
-                ImsReasonInfo reasonInfo) {
-            if (mListener != null) {
-                mListener.callSessionUpdateFailed(ImsCallSession.this, reasonInfo);
-            }
-        }
-
-        @Override
-        public void callSessionUpdateReceived(IImsCallSession session,
-                ImsCallProfile profile) {
-            if (mListener != null) {
-                mListener.callSessionUpdateReceived(ImsCallSession.this, profile);
-            }
-        }
-
-        /**
-         * Notifies the result of conference extension.
-         */
-        @Override
-        public void callSessionConferenceExtended(IImsCallSession session,
-                IImsCallSession newSession, ImsCallProfile profile) {
-            if (mListener != null) {
-                mListener.callSessionConferenceExtended(ImsCallSession.this,
-                        new ImsCallSession(newSession), profile);
-            }
-        }
-
-        @Override
-        public void callSessionConferenceExtendFailed(IImsCallSession session,
-                ImsReasonInfo reasonInfo) {
-            if (mListener != null) {
-                mListener.callSessionConferenceExtendFailed(ImsCallSession.this, reasonInfo);
-            }
-        }
-
-        @Override
-        public void callSessionConferenceExtendReceived(IImsCallSession session,
-                IImsCallSession newSession, ImsCallProfile profile) {
-            if (mListener != null) {
-                mListener.callSessionConferenceExtendReceived(ImsCallSession.this,
-                        new ImsCallSession(newSession), profile);
-            }
-        }
-
-        /**
-         * Notifies the result of the participant invitation / removal to/from
-         * the conference session.
-         */
-        @Override
-        public void callSessionInviteParticipantsRequestDelivered(IImsCallSession session) {
-            if (mListener != null) {
-                mListener.callSessionInviteParticipantsRequestDelivered(ImsCallSession.this);
-            }
-        }
-
-        @Override
-        public void callSessionInviteParticipantsRequestFailed(IImsCallSession session,
-                ImsReasonInfo reasonInfo) {
-            if (mListener != null) {
-                mListener.callSessionInviteParticipantsRequestFailed(ImsCallSession.this,
-                        reasonInfo);
-            }
-        }
-
-        @Override
-        public void callSessionRemoveParticipantsRequestDelivered(IImsCallSession session) {
-            if (mListener != null) {
-                mListener.callSessionRemoveParticipantsRequestDelivered(ImsCallSession.this);
-            }
-        }
-
-        @Override
-        public void callSessionRemoveParticipantsRequestFailed(IImsCallSession session,
-                ImsReasonInfo reasonInfo) {
-            if (mListener != null) {
-                mListener.callSessionRemoveParticipantsRequestFailed(ImsCallSession.this,
-                        reasonInfo);
-            }
-        }
-
-        /**
-         * Notifies the changes of the conference info. in the conference session.
-         */
-        @Override
-        public void callSessionConferenceStateUpdated(IImsCallSession session,
-                ImsConferenceState state) {
-            if (mListener != null) {
-                mListener.callSessionConferenceStateUpdated(ImsCallSession.this, state);
-            }
-        }
-
-        /**
-         * Notifies the incoming USSD message.
-         */
-        @Override
-        public void callSessionUssdMessageReceived(IImsCallSession session,
-                int mode, String ussdMessage) {
-            if (mListener != null) {
-                mListener.callSessionUssdMessageReceived(ImsCallSession.this, mode, ussdMessage);
-            }
-        }
-
-        /**
-         * Notifies of handover information for this call
-         */
-        @Override
-        public void callSessionHandover(IImsCallSession session,
-                                 int srcAccessTech, int targetAccessTech,
-                                 ImsReasonInfo reasonInfo) {
-            if (mListener != null) {
-                mListener.callSessionHandover(ImsCallSession.this, srcAccessTech,
-                        targetAccessTech, reasonInfo);
-            }
-        }
-
-        /**
-         * Notifies of handover failure info for this call
-         */
-        @Override
-        public void callSessionHandoverFailed(IImsCallSession session,
-                                       int srcAccessTech, int targetAccessTech,
-                                       ImsReasonInfo reasonInfo) {
-            if (mListener != null) {
-                mListener.callSessionHandoverFailed(ImsCallSession.this, srcAccessTech,
-                        targetAccessTech, reasonInfo);
-            }
-        }
-
-        /**
-         * Notifies the TTY mode received from remote party.
-         */
-        @Override
-        public void callSessionTtyModeReceived(IImsCallSession session,
-                int mode) {
-            if (mListener != null) {
-                mListener.callSessionTtyModeReceived(ImsCallSession.this, mode);
-            }
-        }
-
-        /**
-         * Notifies of a change to the multiparty state for this {@code ImsCallSession}.
-         *
-         * @param session The call session.
-         * @param isMultiParty {@code true} if the session became multiparty, {@code false}
-         *      otherwise.
-         */
-        public void callSessionMultipartyStateChanged(IImsCallSession session,
-                boolean isMultiParty) {
-
-            if (mListener != null) {
-                mListener.callSessionMultipartyStateChanged(ImsCallSession.this, isMultiParty);
-            }
-        }
-
-        @Override
-        public void callSessionSuppServiceReceived(IImsCallSession session,
-                ImsSuppServiceNotification suppServiceInfo ) {
-            if (mListener != null) {
-                mListener.callSessionSuppServiceReceived(ImsCallSession.this, suppServiceInfo);
-            }
-        }
-
-    }
-
-    /**
-     * Provides a string representation of the {@link ImsCallSession}.  Primarily intended for
-     * use in log statements.
-     *
-     * @return String representation of session.
-     */
-    @Override
-    public String toString() {
-        StringBuilder sb = new StringBuilder();
-        sb.append("[ImsCallSession objId:");
-        sb.append(System.identityHashCode(this));
-        sb.append(" state:");
-        sb.append(State.toString(getState()));
-        sb.append(" callId:");
-        sb.append(getCallId());
-        sb.append("]");
-        return sb.toString();
-    }
-}
diff --git a/src/java/com/android/ims/internal/ImsVideoCallProvider.java b/src/java/com/android/ims/internal/ImsVideoCallProvider.java
deleted file mode 100644 (file)
index 25aa694..0000000
+++ /dev/null
@@ -1,291 +0,0 @@
-/*
- * Copyright (C) 2014 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.ims.internal;
-
-import com.android.internal.os.SomeArgs;
-
-import android.net.Uri;
-import android.os.Handler;
-import android.os.Looper;
-import android.os.Message;
-import android.os.RemoteException;
-import android.telecom.Connection;
-import android.telecom.VideoProfile;
-import android.telecom.VideoProfile.CameraCapabilities;
-import android.view.Surface;
-
-public abstract class ImsVideoCallProvider {
-    private static final int MSG_SET_CALLBACK = 1;
-    private static final int MSG_SET_CAMERA = 2;
-    private static final int MSG_SET_PREVIEW_SURFACE = 3;
-    private static final int MSG_SET_DISPLAY_SURFACE = 4;
-    private static final int MSG_SET_DEVICE_ORIENTATION = 5;
-    private static final int MSG_SET_ZOOM = 6;
-    private static final int MSG_SEND_SESSION_MODIFY_REQUEST = 7;
-    private static final int MSG_SEND_SESSION_MODIFY_RESPONSE = 8;
-    private static final int MSG_REQUEST_CAMERA_CAPABILITIES = 9;
-    private static final int MSG_REQUEST_CALL_DATA_USAGE = 10;
-    private static final int MSG_SET_PAUSE_IMAGE = 11;
-
-    private final ImsVideoCallProviderBinder mBinder;
-
-    private IImsVideoCallCallback mCallback;
-
-    /**
-     * Default handler used to consolidate binder method calls onto a single thread.
-     */
-    private final Handler mProviderHandler = new Handler(Looper.getMainLooper()) {
-        @Override
-        public void handleMessage(Message msg) {
-            switch (msg.what) {
-                case MSG_SET_CALLBACK:
-                    mCallback = (IImsVideoCallCallback) msg.obj;
-                    break;
-                case MSG_SET_CAMERA:
-                {
-                    SomeArgs args = (SomeArgs) msg.obj;
-                    try {
-                        onSetCamera((String) args.arg1);
-                        onSetCamera((String) args.arg1, args.argi1);
-                    } finally {
-                        args.recycle();
-                    }
-                    break;
-                }
-                case MSG_SET_PREVIEW_SURFACE:
-                    onSetPreviewSurface((Surface) msg.obj);
-                    break;
-                case MSG_SET_DISPLAY_SURFACE:
-                    onSetDisplaySurface((Surface) msg.obj);
-                    break;
-                case MSG_SET_DEVICE_ORIENTATION:
-                    onSetDeviceOrientation(msg.arg1);
-                    break;
-                case MSG_SET_ZOOM:
-                    onSetZoom((Float) msg.obj);
-                    break;
-                case MSG_SEND_SESSION_MODIFY_REQUEST: {
-                    SomeArgs args = (SomeArgs) msg.obj;
-                    try {
-                        VideoProfile fromProfile = (VideoProfile) args.arg1;
-                        VideoProfile toProfile = (VideoProfile) args.arg2;
-
-                        onSendSessionModifyRequest(fromProfile, toProfile);
-                    } finally {
-                        args.recycle();
-                    }
-                    break;
-                }
-                case MSG_SEND_SESSION_MODIFY_RESPONSE:
-                    onSendSessionModifyResponse((VideoProfile) msg.obj);
-                    break;
-                case MSG_REQUEST_CAMERA_CAPABILITIES:
-                    onRequestCameraCapabilities();
-                    break;
-                case MSG_REQUEST_CALL_DATA_USAGE:
-                    onRequestCallDataUsage();
-                    break;
-                case MSG_SET_PAUSE_IMAGE:
-                    onSetPauseImage((Uri) msg.obj);
-                    break;
-                default:
-                    break;
-            }
-        }
-    };
-
-    /**
-     * IImsVideoCallProvider stub implementation.
-     */
-    private final class ImsVideoCallProviderBinder extends IImsVideoCallProvider.Stub {
-        public void setCallback(IImsVideoCallCallback callback) {
-            mProviderHandler.obtainMessage(MSG_SET_CALLBACK, callback).sendToTarget();
-        }
-
-        public void setCamera(String cameraId, int uid) {
-            SomeArgs args = SomeArgs.obtain();
-            args.arg1 = cameraId;
-            args.argi1 = uid;
-            mProviderHandler.obtainMessage(MSG_SET_CAMERA, args).sendToTarget();
-        }
-
-        public void setPreviewSurface(Surface surface) {
-            mProviderHandler.obtainMessage(MSG_SET_PREVIEW_SURFACE, surface).sendToTarget();
-        }
-
-        public void setDisplaySurface(Surface surface) {
-            mProviderHandler.obtainMessage(MSG_SET_DISPLAY_SURFACE, surface).sendToTarget();
-        }
-
-        public void setDeviceOrientation(int rotation) {
-            mProviderHandler.obtainMessage(MSG_SET_DEVICE_ORIENTATION, rotation, 0).sendToTarget();
-        }
-
-        public void setZoom(float value) {
-            mProviderHandler.obtainMessage(MSG_SET_ZOOM, value).sendToTarget();
-        }
-
-        public void sendSessionModifyRequest(VideoProfile fromProfile, VideoProfile toProfile) {
-            SomeArgs args = SomeArgs.obtain();
-            args.arg1 = fromProfile;
-            args.arg2 = toProfile;
-            mProviderHandler.obtainMessage(MSG_SEND_SESSION_MODIFY_REQUEST, args).sendToTarget();
-        }
-
-        public void sendSessionModifyResponse(VideoProfile responseProfile) {
-            mProviderHandler.obtainMessage(
-                    MSG_SEND_SESSION_MODIFY_RESPONSE, responseProfile).sendToTarget();
-        }
-
-        public void requestCameraCapabilities() {
-            mProviderHandler.obtainMessage(MSG_REQUEST_CAMERA_CAPABILITIES).sendToTarget();
-        }
-
-        public void requestCallDataUsage() {
-            mProviderHandler.obtainMessage(MSG_REQUEST_CALL_DATA_USAGE).sendToTarget();
-        }
-
-        public void setPauseImage(Uri uri) {
-            mProviderHandler.obtainMessage(MSG_SET_PAUSE_IMAGE, uri).sendToTarget();
-        }
-    }
-
-    public ImsVideoCallProvider() {
-        mBinder = new ImsVideoCallProviderBinder();
-    }
-
-    /**
-     * Returns binder object which can be used across IPC methods.
-     */
-    public final IImsVideoCallProvider getInterface() {
-        return mBinder;
-    }
-
-    /** @see Connection.VideoProvider#onSetCamera */
-    public abstract void onSetCamera(String cameraId);
-
-    /**
-     * Similar to {@link #onSetCamera(String)}, except includes the UID of the calling process which
-     * the IMS service uses when opening the camera.  This ensures camera permissions are verified
-     * by the camera service.
-     *
-     * @param cameraId The id of the camera to be opened.
-     * @param uid The uid of the caller, used when opening the camera for permission verification.
-     * @see Connection.VideoProvider#onSetCamera
-     */
-    public void onSetCamera(String cameraId, int uid) {
-    }
-
-    /** @see Connection.VideoProvider#onSetPreviewSurface */
-    public abstract void onSetPreviewSurface(Surface surface);
-
-    /** @see Connection.VideoProvider#onSetDisplaySurface */
-    public abstract void onSetDisplaySurface(Surface surface);
-
-    /** @see Connection.VideoProvider#onSetDeviceOrientation */
-    public abstract void onSetDeviceOrientation(int rotation);
-
-    /** @see Connection.VideoProvider#onSetZoom */
-    public abstract void onSetZoom(float value);
-
-    /** @see Connection.VideoProvider#onSendSessionModifyRequest */
-    public abstract void onSendSessionModifyRequest(VideoProfile fromProfile,
-            VideoProfile toProfile);
-
-    /** @see Connection.VideoProvider#onSendSessionModifyResponse */
-    public abstract void onSendSessionModifyResponse(VideoProfile responseProfile);
-
-    /** @see Connection.VideoProvider#onRequestCameraCapabilities */
-    public abstract void onRequestCameraCapabilities();
-
-    /** @see Connection.VideoProvider#onRequestCallDataUsage */
-    public abstract void onRequestCallDataUsage();
-
-    /** @see Connection.VideoProvider#onSetPauseImage */
-    public abstract void onSetPauseImage(Uri uri);
-
-    /** @see Connection.VideoProvider#receiveSessionModifyRequest */
-    public void receiveSessionModifyRequest(VideoProfile VideoProfile) {
-        if (mCallback != null) {
-            try {
-                mCallback.receiveSessionModifyRequest(VideoProfile);
-            } catch (RemoteException ignored) {
-            }
-        }
-    }
-
-    /** @see Connection.VideoProvider#receiveSessionModifyResponse */
-    public void receiveSessionModifyResponse(
-            int status, VideoProfile requestedProfile, VideoProfile responseProfile) {
-        if (mCallback != null) {
-            try {
-                mCallback.receiveSessionModifyResponse(status, requestedProfile, responseProfile);
-            } catch (RemoteException ignored) {
-            }
-        }
-    }
-
-    /** @see Connection.VideoProvider#handleCallSessionEvent */
-    public void handleCallSessionEvent(int event) {
-        if (mCallback != null) {
-            try {
-                mCallback.handleCallSessionEvent(event);
-            } catch (RemoteException ignored) {
-            }
-        }
-    }
-
-    /** @see Connection.VideoProvider#changePeerDimensions */
-    public void changePeerDimensions(int width, int height) {
-        if (mCallback != null) {
-            try {
-                mCallback.changePeerDimensions(width, height);
-            } catch (RemoteException ignored) {
-            }
-        }
-    }
-
-    /** @see Connection.VideoProvider#changeCallDataUsage */
-    public void changeCallDataUsage(long dataUsage) {
-        if (mCallback != null) {
-            try {
-                mCallback.changeCallDataUsage(dataUsage);
-            } catch (RemoteException ignored) {
-            }
-        }
-    }
-
-    /** @see Connection.VideoProvider#changeCameraCapabilities */
-    public void changeCameraCapabilities(CameraCapabilities CameraCapabilities) {
-        if (mCallback != null) {
-            try {
-                mCallback.changeCameraCapabilities(CameraCapabilities);
-            } catch (RemoteException ignored) {
-            }
-        }
-    }
-
-    /** @see Connection.VideoProvider#changeVideoQuality */
-    public void changeVideoQuality(int videoQuality) {
-        if (mCallback != null) {
-            try {
-                mCallback.changeVideoQuality(videoQuality);
-            } catch (RemoteException ignored) {
-            }
-        }
-    }
-}