Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2ae7c587 authored by Pavel Zhamaitsiak's avatar Pavel Zhamaitsiak Committed by Android (Google) Code Review
Browse files

Merge "Add optional error codes to CallStateException" into lmp-mr1-wfc-dev

parents ce550fea d20c102c
Loading
Loading
Loading
Loading
+18 −0
Original line number Diff line number Diff line
@@ -21,6 +21,13 @@ package com.android.internal.telephony;
 */
public class CallStateException extends Exception
{
    private int mError = ERROR_INVALID;

    /** The error code is not valid (Not received a disconnect cause) */
    public static final int ERROR_INVALID = -1;

    public static final int ERROR_DISCONNECTED = 1;

    public
    CallStateException()
    {
@@ -31,4 +38,15 @@ public class CallStateException extends Exception
    {
        super(string);
    }

    public
    CallStateException(int error, String string)
    {
        super(string);
        mError = error;
    }

    public int getError() {
        return mError;
    }
}
+1 −16
Original line number Diff line number Diff line
@@ -46,8 +46,6 @@ import android.util.Log;

import android.telephony.TelephonyManager;

import com.android.ims.ImsConfig;
import com.android.ims.ImsManager;
import com.android.internal.telephony.Call;
import com.android.internal.telephony.CallStateException;
import com.android.internal.telephony.CallTracker;
@@ -71,7 +69,6 @@ import com.android.internal.telephony.dataconnection.DcTracker;
import com.android.internal.telephony.imsphone.ImsPhone;
import com.android.internal.telephony.uicc.IccException;
import com.android.internal.telephony.uicc.IccRecords;
import com.android.internal.telephony.uicc.RuimRecords;
import com.android.internal.telephony.uicc.UiccCard;
import com.android.internal.telephony.uicc.UiccCardApplication;
import com.android.internal.telephony.uicc.UiccController;
@@ -426,19 +423,7 @@ public class CDMAPhone extends PhoneBase {
                    + ((imsPhone != null) ? imsPhone.getServiceState().getState() : "N/A"));
        }

        if (imsPhone == null ||
                (imsPhone != null && !imsPhone.isVowifiEnabled())) {
            boolean wfcWiFiOnly = (ImsManager.isWfcEnabledByPlatform(mContext) &&
                    ImsManager.isWfcEnabledByUser(mContext) &&
                    (ImsManager.getWfcMode(mContext) ==
                    ImsConfig.WfcModeFeatureValueConstants.WIFI_ONLY));
            if (wfcWiFiOnly == true) {
                if (DBG) Rlog.d(LOG_TAG, "WIFI only mode, but no VoWIFI enabled");
                CallStateException ce = new CallStateException(
                        "WFC Wi-Fi Only Mode: IMS stack on WIFI not available");
                throw ce;
            }
        }
        ImsPhone.checkWfcWifiOnlyModeBeforeDial(mImsPhone, mContext);

        if (imsUseEnabled && imsPhone != null
                && (imsPhone.isVolteEnabled() || imsPhone.isVowifiEnabled())
+1 −18
Original line number Diff line number Diff line
@@ -26,7 +26,6 @@ import android.os.Handler;
import android.os.Message;
import android.os.Registrant;
import android.os.RegistrantList;
import android.os.SystemProperties;
import android.preference.PreferenceManager;
import android.provider.Telephony;
import android.telecom.VideoProfile;
@@ -36,8 +35,6 @@ import android.telephony.ServiceState;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;

import com.android.ims.ImsConfig;
import com.android.ims.ImsManager;
import com.android.internal.telephony.CallTracker;

import android.text.TextUtils;
@@ -64,14 +61,12 @@ import com.android.internal.telephony.CommandsInterface;
import com.android.internal.telephony.Connection;
import com.android.internal.telephony.IccPhoneBookInterfaceManager;
import com.android.internal.telephony.MmiCode;
import com.android.internal.telephony.OperatorInfo;
import com.android.internal.telephony.Phone;
import com.android.internal.telephony.PhoneBase;
import com.android.internal.telephony.PhoneConstants;
import com.android.internal.telephony.PhoneNotifier;
import com.android.internal.telephony.PhoneProxy;
import com.android.internal.telephony.PhoneSubInfo;
import com.android.internal.telephony.TelephonyProperties;
import com.android.internal.telephony.UUSInfo;
import com.android.internal.telephony.imsphone.ImsPhone;
import com.android.internal.telephony.test.SimulatedRadioControl;
@@ -822,19 +817,7 @@ public class GSMPhone extends PhoneBase {
                    + ((imsPhone != null) ? imsPhone.getServiceState().getState() : "N/A"));
        }

        if (imsPhone == null ||
                (imsPhone != null && !imsPhone.isVowifiEnabled())) {
            boolean wfcWiFiOnly = (ImsManager.isWfcEnabledByPlatform(mContext) &&
                    ImsManager.isWfcEnabledByUser(mContext) &&
                    (ImsManager.getWfcMode(mContext) ==
                    ImsConfig.WfcModeFeatureValueConstants.WIFI_ONLY));
            if (wfcWiFiOnly == true) {
                if (LOCAL_DEBUG) Rlog.d(LOG_TAG, "WIFI only mode, but no VoWIFI enabled");
                CallStateException ce = new CallStateException(
                        "WFC Wi-Fi Only Mode: IMS stack on WIFI not available");
                throw ce;
            }
        }
        ImsPhone.checkWfcWifiOnlyModeBeforeDial(mImsPhone, mContext);

        if (imsUseEnabled && imsPhone != null
                && (imsPhone.isVolteEnabled() || imsPhone.isVowifiEnabled())
+16 −0
Original line number Diff line number Diff line
@@ -42,6 +42,7 @@ import android.text.TextUtils;

import com.android.ims.ImsCallForwardInfo;
import com.android.ims.ImsCallProfile;
import com.android.ims.ImsConfig;
import com.android.ims.ImsEcbm;
import com.android.ims.ImsEcbmStateListener;
import com.android.ims.ImsException;
@@ -475,6 +476,21 @@ public class ImsPhone extends ImsPhoneBase {
        mDefaultPhone.notifyNewRingingConnectionP(c);
    }

    public static void checkWfcWifiOnlyModeBeforeDial(ImsPhone imsPhone, Context context)
            throws CallStateException {
        if (imsPhone == null ||
                !imsPhone.isVowifiEnabled()) {
            boolean wfcWiFiOnly = (ImsManager.isWfcEnabledByPlatform(context) &&
                    ImsManager.isWfcEnabledByUser(context) &&
                    (ImsManager.getWfcMode(context) ==
                            ImsConfig.WfcModeFeatureValueConstants.WIFI_ONLY));
            if (wfcWiFiOnly) {
                throw new CallStateException(
                        CallStateException.ERROR_DISCONNECTED,
                        "WFC Wi-Fi Only Mode: IMS not registered");
            }
        }
    }

    @Override
    public Connection