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

Commit db6273ac authored by Jordan Liu's avatar Jordan Liu Committed by android-build-merger
Browse files

Merge "IMS: Add service class for call barring operations"

am: d24ca5c9

Change-Id: Ibe86d4daf230f31eec40bce9c7d63355e06588cf
parents 8f27eadf d24ca5c9
Loading
Loading
Loading
Loading
+14 −8
Original line number Diff line number Diff line
@@ -951,23 +951,28 @@ public class ImsPhone extends ImsPhoneBase {
        return 0;
    }

    public void getCallBarring(String facility, Message onComplete) {
        if (DBG) Rlog.d(LOG_TAG, "getCallBarring facility=" + facility);
    public void getCallBarring(String facility, Message onComplete, int serviceClass) {
        if (DBG) {
            Rlog.d(LOG_TAG, "getCallBarring facility=" + facility
                    + ", serviceClass = " + serviceClass);
        }
        Message resp;
        resp = obtainMessage(EVENT_GET_CALL_BARRING_DONE, onComplete);

        try {
            ImsUtInterface ut = mCT.getUtInterface();
            ut.queryCallBarring(getCBTypeFromFacility(facility), resp);
            ut.queryCallBarring(getCBTypeFromFacility(facility), resp, serviceClass);
        } catch (ImsException e) {
            sendErrorResponse(onComplete, e);
        }
    }

    public void setCallBarring(String facility, boolean lockState, String password, Message
            onComplete) {
        if (DBG) Rlog.d(LOG_TAG, "setCallBarring facility=" + facility
                + ", lockState=" + lockState);
    public void setCallBarring(String facility, boolean lockState, String password,
            Message onComplete,  int serviceClass) {
        if (DBG) {
            Rlog.d(LOG_TAG, "setCallBarring facility=" + facility
                    + ", lockState=" + lockState + ", serviceClass = " + serviceClass);
        }
        Message resp;
        resp = obtainMessage(EVENT_SET_CALL_BARRING_DONE, onComplete);

@@ -982,7 +987,8 @@ public class ImsPhone extends ImsPhoneBase {
        try {
            ImsUtInterface ut = mCT.getUtInterface();
            // password is not required with Ut interface
            ut.updateCallBarring(getCBTypeFromFacility(facility), action, resp, null);
            ut.updateCallBarring(getCBTypeFromFacility(facility), action,
                    resp, null,  serviceClass);
        } catch (ImsException e) {
            sendErrorResponse(onComplete, e);
        }
+6 −3
Original line number Diff line number Diff line
@@ -736,7 +736,9 @@ public final class ImsPhoneMmiCode extends Handler implements MmiCode {
            try {
                int serviceClass = siToServiceClass(mSib);
                if (serviceClass != SERVICE_CLASS_NONE
                        && serviceClass != SERVICE_CLASS_VOICE) {
                        && serviceClass != SERVICE_CLASS_VOICE
                        && serviceClass != (SERVICE_CLASS_PACKET
                            + SERVICE_CLASS_DATA_SYNC)) {
                    return false;
                }
                return true;
@@ -845,13 +847,14 @@ public final class ImsPhoneMmiCode extends Handler implements MmiCode {

                String password = mSia;
                String facility = scToBarringFacility(mSc);
                int serviceClass = siToServiceClass(mSib);

                if (isInterrogate()) {
                    mPhone.getCallBarring(facility,
                            obtainMessage(EVENT_SUPP_SVC_QUERY_COMPLETE, this));
                            obtainMessage(EVENT_SUPP_SVC_QUERY_COMPLETE, this), serviceClass);
                } else if (isActivate() || isDeactivate()) {
                    mPhone.setCallBarring(facility, isActivate(), password,
                            obtainMessage(EVENT_SET_COMPLETE, this));
                            obtainMessage(EVENT_SET_COMPLETE, this), serviceClass);
                } else {
                    throw new RuntimeException ("Invalid or Unsupported MMI Code");
                }
+9 −6
Original line number Diff line number Diff line
@@ -509,23 +509,26 @@ public class ImsPhoneTest extends TelephonyTest {
    @SmallTest
    public void testCellBarring() throws Exception {
        Message msg = mTestHandler.obtainMessage();
        mImsPhoneUT.getCallBarring(CommandsInterface.CB_FACILITY_BAOC, msg);
        mImsPhoneUT.getCallBarring(CommandsInterface.CB_FACILITY_BAOC, msg,
                CommandsInterface.SERVICE_CLASS_NONE);

        ArgumentCaptor<Message> messageArgumentCaptor = ArgumentCaptor.forClass(Message.class);
        verify(mImsUtInterface).queryCallBarring(eq(ImsUtInterface.CB_BAOC),
                messageArgumentCaptor.capture());
                messageArgumentCaptor.capture(), eq(CommandsInterface.SERVICE_CLASS_NONE));
        assertEquals(msg, messageArgumentCaptor.getValue().obj);

        mImsPhoneUT.setCallBarring(CommandsInterface.CB_FACILITY_BAOIC, true, "abc", msg);
        mImsPhoneUT.setCallBarring(CommandsInterface.CB_FACILITY_BAOIC, true, "abc", msg,
                CommandsInterface.SERVICE_CLASS_NONE);
        verify(mImsUtInterface).updateCallBarring(eq(ImsUtInterface.CB_BOIC),
                eq(CommandsInterface.CF_ACTION_ENABLE), messageArgumentCaptor.capture(),
                (String[]) eq(null));
                (String[]) eq(null), eq(CommandsInterface.SERVICE_CLASS_NONE));
        assertEquals(msg, messageArgumentCaptor.getValue().obj);

        mImsPhoneUT.setCallBarring(CommandsInterface.CB_FACILITY_BAOICxH, false, "abc", msg);
        mImsPhoneUT.setCallBarring(CommandsInterface.CB_FACILITY_BAOICxH, false, "abc", msg,
                CommandsInterface.SERVICE_CLASS_NONE);
        verify(mImsUtInterface).updateCallBarring(eq(ImsUtInterface.CB_BOIC_EXHC),
                eq(CommandsInterface.CF_ACTION_DISABLE), messageArgumentCaptor.capture(),
                (String[])eq(null));
                (String[])eq(null), eq(CommandsInterface.SERVICE_CLASS_NONE));
        assertEquals(msg, messageArgumentCaptor.getValue().obj);
    }