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

Commit 8334709e authored by Tom Hsu's avatar Tom Hsu Committed by Android (Google) Code Review
Browse files

Merge "Handle unsolicited ussd command from RIL when received error command." into sc-dev

parents 07a97ead 9909b63e
Loading
Loading
Loading
Loading
+8 −3
Original line number Diff line number Diff line
@@ -2598,7 +2598,6 @@ public class GsmCdmaPhone extends Phone {
     * @param mmi MMI that is done
     */
    public void onMMIDone(MmiCode mmi) {

        /* Only notify complete if it's on the pending list.
         * Otherwise, it's already been handled (eg, previously canceled).
         * The exception is cancellation of an incoming USSD-REQUEST, which is
@@ -2606,7 +2605,6 @@ public class GsmCdmaPhone extends Phone {
         */
        if (mPendingMMIs.remove(mmi) || (isPhoneTypeGsm() && (mmi.isUssdRequest() ||
                ((GsmMmiCode)mmi).isSsInfo()))) {

            ResultReceiver receiverCallback = mmi.getUssdCallbackReceiver();
            if (receiverCallback != null) {
                Rlog.i(LOG_TAG, "onMMIDone: invoking callback: " + mmi);
@@ -2647,6 +2645,7 @@ public class GsmCdmaPhone extends Phone {
        if (!isPhoneTypeGsm()) {
            loge("onIncomingUSSD: not expected on GSM");
        }

        boolean isUssdError;
        boolean isUssdRequest;
        boolean isUssdRelease;
@@ -2674,7 +2673,6 @@ public class GsmCdmaPhone extends Phone {

        if (found != null) {
            // Complete pending USSD

            if (isUssdRelease) {
                found.onUssdRelease();
            } else if (isUssdError) {
@@ -2694,6 +2692,13 @@ public class GsmCdmaPhone extends Phone {
                                                   GsmCdmaPhone.this,
                                                   mUiccApplication.get());
            onNetworkInitiatedUssd(mmi);
        } else if (isUssdError && !isUssdRelease) {
            GsmMmiCode mmi;
            mmi = GsmMmiCode.newNetworkInitiatedUssd(ussdMessage,
                    true,
                    GsmCdmaPhone.this,
                    mUiccApplication.get());
            mmi.onUssdFinishedError();
        }
    }

+3 −1
Original line number Diff line number Diff line
@@ -1228,7 +1228,9 @@ public final class GsmMmiCode extends Handler implements MmiCode {
    onUssdFinishedError() {
        if (mState == State.PENDING) {
            mState = State.FAILED;
            if (mMessage.length() == 0) {
                mMessage = mContext.getText(com.android.internal.R.string.mmiError);
            }
            Rlog.d(LOG_TAG, "onUssdFinishedError");
            mPhone.onMMIDone(this);
        }
+6 −0
Original line number Diff line number Diff line
@@ -1506,6 +1506,12 @@ public class ImsPhone extends ImsPhoneBase {
                        isUssdRequest,
                        this);
                onNetworkInitiatedUssd(mmi);
        } else if (isUssdError) {
            ImsPhoneMmiCode mmi;
            mmi = ImsPhoneMmiCode.newNetworkInitiatedUssd(ussdMessage,
                    true,
                    this);
            mmi.onUssdFinishedError();
        }
    }

+3 −1
Original line number Diff line number Diff line
@@ -1199,7 +1199,9 @@ public final class ImsPhoneMmiCode extends Handler implements MmiCode {
    onUssdFinishedError() {
        if (mState == State.PENDING) {
            mState = State.FAILED;
            if (mMessage.length() == 0) {
                mMessage = mContext.getText(com.android.internal.R.string.mmiError);
            }
            Rlog.d(LOG_TAG, "onUssdFinishedError: mmi=" + this);
            mPhone.onMMIDone(this);
        }