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

Commit 9909b63e authored by tom hsu's avatar tom hsu
Browse files

Handle unsolicited ussd command from RIL when received error command.

Bug: 181747856
Test: Maunal test.
 - see b/181747856#21
Change-Id: Ic54b2a2bc15d8ba5fcf238be9dcb5b1adbff6036
parent 155a9824
Loading
Loading
Loading
Loading
+8 −3
Original line number Diff line number Diff line
@@ -2596,7 +2596,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
@@ -2604,7 +2603,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);
@@ -2645,6 +2643,7 @@ public class GsmCdmaPhone extends Phone {
        if (!isPhoneTypeGsm()) {
            loge("onIncomingUSSD: not expected on GSM");
        }

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

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

            if (isUssdRelease) {
                found.onUssdRelease();
            } else if (isUssdError) {
@@ -2692,6 +2690,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
@@ -1193,7 +1193,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
@@ -1163,7 +1163,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);
        }