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

Commit 6c0ffe88 authored by Benergy Meenan Ravuri's avatar Benergy Meenan Ravuri Committed by Jordan Liu
Browse files

IMS: Handle IMS Reason CODE_FDN_BLOCKED

Handle Ims Reason CODE_FDN_BLOCKED to show FDN failure dialog

Test: Manual - Checked that FDN failure dialog is shown when
IMS UT requests(Call forwarding, Call waiting etc) fail with
FDN enabled.
Bug: 63104754
Change-Id: Ic5c709c9aa48101ce4e46b6029e8a4837510ea6b
parent 2c566204
Loading
Loading
Loading
Loading
+3 −0
Original line number Original line Diff line number Diff line
@@ -1038,6 +1038,9 @@ public class ImsPhone extends ImsPhoneBase {
                break;
                break;
            case ImsReasonInfo.CODE_UT_SERVICE_UNAVAILABLE:
            case ImsReasonInfo.CODE_UT_SERVICE_UNAVAILABLE:
                error = CommandException.Error.RADIO_NOT_AVAILABLE;
                error = CommandException.Error.RADIO_NOT_AVAILABLE;
                break;
            case ImsReasonInfo.CODE_FDN_BLOCKED:
                error = CommandException.Error.FDN_CHECK_FAILURE;
            default:
            default:
                break;
                break;
        }
        }
+30 −41
Original line number Original line Diff line number Diff line
@@ -40,6 +40,7 @@ import android.text.SpannableStringBuilder;
import android.text.TextUtils;
import android.text.TextUtils;


import com.android.ims.ImsException;
import com.android.ims.ImsException;
import com.android.ims.ImsReasonInfo;
import com.android.ims.ImsSsInfo;
import com.android.ims.ImsSsInfo;
import com.android.ims.ImsUtInterface;
import com.android.ims.ImsUtInterface;
import com.android.internal.telephony.CallForwardInfo;
import com.android.internal.telephony.CallForwardInfo;
@@ -1172,6 +1173,14 @@ public final class ImsPhoneMmiCode extends Handler implements MmiCode {
    }
    }


    private CharSequence getErrorMessage(AsyncResult ar) {
    private CharSequence getErrorMessage(AsyncResult ar) {
        if (ar.exception instanceof CommandException) {
            CommandException.Error err = ((CommandException) (ar.exception)).getCommandError();
            if (err == CommandException.Error.FDN_CHECK_FAILURE) {
                Rlog.i(LOG_TAG, "FDN_CHECK_FAILURE");
                return mContext.getText(com.android.internal.R.string.mmiFdnError);
            }
        }

        return mContext.getText(com.android.internal.R.string.mmiError);
        return mContext.getText(com.android.internal.R.string.mmiError);
    }
    }


@@ -1216,18 +1225,15 @@ public final class ImsPhoneMmiCode extends Handler implements MmiCode {
                if (err.getCommandError() == CommandException.Error.PASSWORD_INCORRECT) {
                if (err.getCommandError() == CommandException.Error.PASSWORD_INCORRECT) {
                    sb.append(mContext.getText(
                    sb.append(mContext.getText(
                            com.android.internal.R.string.passwordIncorrect));
                            com.android.internal.R.string.passwordIncorrect));
                } else if (err.getCommandError() == CommandException.Error.FDN_CHECK_FAILURE) {
                    sb.append(mContext.getText(com.android.internal.R.string.mmiFdnError));
                } else if (err.getMessage() != null) {
                } else if (err.getMessage() != null) {
                    sb.append(err.getMessage());
                    sb.append(err.getMessage());
                } else {
                } else {
                    sb.append(mContext.getText(com.android.internal.R.string.mmiError));
                    sb.append(mContext.getText(com.android.internal.R.string.mmiError));
                }
                }
            } else {
            } else if (ar.exception instanceof ImsException) {
                ImsException error = (ImsException) ar.exception;
                sb.append(getImsErrorMessage(ar));
                if (error.getMessage() != null) {
                    sb.append(error.getMessage());
                } else {
                    sb.append(getErrorMessage(ar));
                }
            }
            }
        } else if (isActivate()) {
        } else if (isActivate()) {
            mState = State.COMPLETE;
            mState = State.COMPLETE;
@@ -1360,12 +1366,7 @@ public final class ImsPhoneMmiCode extends Handler implements MmiCode {
            mState = State.FAILED;
            mState = State.FAILED;


            if (ar.exception instanceof ImsException) {
            if (ar.exception instanceof ImsException) {
                ImsException error = (ImsException) ar.exception;
                sb.append(getImsErrorMessage(ar));
                if (error.getMessage() != null) {
                    sb.append(error.getMessage());
                } else {
                    sb.append(getErrorMessage(ar));
                }
            }
            }
            else {
            else {
                sb.append(getErrorMessage(ar));
                sb.append(getErrorMessage(ar));
@@ -1421,21 +1422,14 @@ public final class ImsPhoneMmiCode extends Handler implements MmiCode {
        StringBuilder sb = new StringBuilder(getScString());
        StringBuilder sb = new StringBuilder(getScString());
        sb.append("\n");
        sb.append("\n");


        if (ar.exception != null) {
        mState = State.FAILED;
        mState = State.FAILED;

        if (ar.exception != null) {
            if (ar.exception instanceof ImsException) {
            if (ar.exception instanceof ImsException) {
                ImsException error = (ImsException) ar.exception;
                sb.append(getImsErrorMessage(ar));
                if (error.getMessage() != null) {
                    sb.append(error.getMessage());
                } else {
                    sb.append(getErrorMessage(ar));
                }
            } else {
            } else {
                sb.append(getErrorMessage(ar));
                sb.append(getErrorMessage(ar));
            }
            }
        } else {
        } else {
            mState = State.FAILED;
            ImsSsInfo ssInfo = null;
            ImsSsInfo ssInfo = null;
            if (ar.result instanceof Bundle) {
            if (ar.result instanceof Bundle) {
                Rlog.d(LOG_TAG, "onSuppSvcQueryComplete: Received CLIP/COLP/COLR Response.");
                Rlog.d(LOG_TAG, "onSuppSvcQueryComplete: Received CLIP/COLP/COLR Response.");
@@ -1486,12 +1480,7 @@ public final class ImsPhoneMmiCode extends Handler implements MmiCode {
            mState = State.FAILED;
            mState = State.FAILED;


            if (ar.exception instanceof ImsException) {
            if (ar.exception instanceof ImsException) {
                ImsException error = (ImsException) ar.exception;
                sb.append(getImsErrorMessage(ar));
                if (error.getMessage() != null) {
                    sb.append(error.getMessage());
                } else {
                    sb.append(getErrorMessage(ar));
                }
            } else {
            } else {
                sb.append(getErrorMessage(ar));
                sb.append(getErrorMessage(ar));
            }
            }
@@ -1525,14 +1514,8 @@ public final class ImsPhoneMmiCode extends Handler implements MmiCode {
        mState = State.FAILED;
        mState = State.FAILED;


        if (ar.exception != null) {
        if (ar.exception != null) {

            if (ar.exception instanceof ImsException) {
            if (ar.exception instanceof ImsException) {
                ImsException error = (ImsException) ar.exception;
                sb.append(getImsErrorMessage(ar));
                if (error.getMessage() != null) {
                    sb.append(error.getMessage());
                } else {
                    sb.append(getErrorMessage(ar));
                }
            }
            }
        } else {
        } else {
            Bundle ssInfo = (Bundle) ar.result;
            Bundle ssInfo = (Bundle) ar.result;
@@ -1623,12 +1606,7 @@ public final class ImsPhoneMmiCode extends Handler implements MmiCode {
            mState = State.FAILED;
            mState = State.FAILED;


            if (ar.exception instanceof ImsException) {
            if (ar.exception instanceof ImsException) {
                ImsException error = (ImsException) ar.exception;
                sb.append(getImsErrorMessage(ar));
                if (error.getMessage() != null) {
                    sb.append(error.getMessage());
                } else {
                    sb.append(getErrorMessage(ar));
                }
            } else {
            } else {
                sb.append(getErrorMessage(ar));
                sb.append(getErrorMessage(ar));
            }
            }
@@ -1676,6 +1654,17 @@ public final class ImsPhoneMmiCode extends Handler implements MmiCode {
        return sb;
        return sb;
    }
    }


    private CharSequence getImsErrorMessage(AsyncResult ar) {
        ImsException error = (ImsException) ar.exception;
        if (error.getCode() == ImsReasonInfo.CODE_FDN_BLOCKED) {
            return mContext.getText(com.android.internal.R.string.mmiFdnError);
        } else if (error.getMessage() != null) {
            return error.getMessage();
        } else {
            return getErrorMessage(ar);
        }
    }

    @Override
    @Override
    public ResultReceiver getUssdCallbackReceiver() {
    public ResultReceiver getUssdCallbackReceiver() {
        return this.mCallbackReceiver;
        return this.mCallbackReceiver;