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

Commit 4da43354 authored by Cecilia Sörensson's avatar Cecilia Sörensson Committed by Hall Liu
Browse files

Functionality for knowing if USSD is network initiated.

Add #isNetworkInitiatedUSSD method in MmiCode for others like Telephony
service to judge if USSD is network-initiated or not.

Test: manual - Checked that return value of #isNetworkInitiatedUSSD.
Bug: 28948816
Change-Id: I769b40f214b23c03e1c6c8bbca255548b4d10ec6
Merged-In: I769b40f214b23c03e1c6c8bbca255548b4d10ec6
parent 15a1e29f
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -2541,7 +2541,7 @@ public class GsmCdmaPhone extends Phone {
            } else {
                found.onUssdFinished(ussdMessage, isUssdRequest);
            }
        } else if (!isUssdError && ussdMessage != null) {
        } else if (!isUssdError && !TextUtils.isEmpty(ussdMessage)) {
            // pending USSD not found
            // The network may initiate its own USSD request

+5 −0
Original line number Diff line number Diff line
@@ -69,6 +69,11 @@ public interface MmiCode
     */
    public boolean isUssdRequest();

    /**
     * @return true if the request was initiated USSD by the network.
     */
    boolean isNetworkInitiatedUssd();

    /**
     * @return true if an outstanding request can be canceled.
     */
+6 −0
Original line number Diff line number Diff line
@@ -380,4 +380,10 @@ public final class CdmaMmiCode extends Handler implements MmiCode {
    public ResultReceiver getUssdCallbackReceiver() {
        return null;
    }

    @Override
    public boolean isNetworkInitiatedUssd() {
        Rlog.w(LOG_TAG, "isNetworkInitiated is not implemented in CdmaMmiCode");
        return false;
    }
}
+9 −0
Original line number Diff line number Diff line
@@ -165,6 +165,9 @@ public final class GsmMmiCode extends Handler implements MmiCode {
    private boolean mIsUssdRequest;

    private boolean mIsCallFwdReg;

    private boolean mIsNetworkInitiatedUSSD;

    State mState = State.PENDING;
    CharSequence mMessage;
    private boolean mIsSsInfo = false;
@@ -315,6 +318,7 @@ public final class GsmMmiCode extends Handler implements MmiCode {

        ret.mMessage = ussdMessage;
        ret.mIsUssdRequest = isUssdRequest;
        ret.mIsNetworkInitiatedUSSD = true;

        // If it's a request, set to PENDING so that it's cancelable.
        if (isUssdRequest) {
@@ -682,6 +686,11 @@ public final class GsmMmiCode extends Handler implements MmiCode {
        return mIsPendingUSSD;
    }

    @Override
    public boolean isNetworkInitiatedUssd() {
        return mIsNetworkInitiatedUSSD;
    }

    //***** Instance Methods

    /** Does this dial string contain a structured or unstructured MMI code? */
+1 −1
Original line number Diff line number Diff line
@@ -1357,7 +1357,7 @@ public class ImsPhone extends ImsPhoneBase {
            } else {
                found.onUssdFinished(ussdMessage, isUssdRequest);
            }
        } else if (!isUssdError && ussdMessage != null) {
        } else if (!isUssdError && !TextUtils.isEmpty(ussdMessage)) {
                // pending USSD not found
                // The network may initiate its own USSD request

Loading