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

Commit fcc7b2e5 authored by Aishwarya Mallampati's avatar Aishwarya Mallampati Committed by Jack Yu
Browse files

Prevent VVM from sending SMS in ECBM

Sending non-emergency SMS would exit ECBM mode. Visual voice mail
internally uses SMS for activation, deactivation, status check etc. So,
these actions are silently blocked when phone in in ECBM.

Bug: 177439988
Test: Sanity,
      atest com.android.internal.telephony.SmsControllerTest
Merged-In: Icfb050d8ba7daf9f4f37b51705fcab769f4c8823
Change-Id: Icfb050d8ba7daf9f4f37b51705fcab769f4c8823
parent 8e88018f
Loading
Loading
Loading
Loading
+7 −0
Original line number Original line Diff line number Diff line
@@ -753,6 +753,13 @@ public class SmsController extends ISmsImplBase {
    public void sendVisualVoicemailSmsForSubscriber(String callingPackage,
    public void sendVisualVoicemailSmsForSubscriber(String callingPackage,
            String callingAttributionTag, int subId, String number, int port, String text,
            String callingAttributionTag, int subId, String number, int port, String text,
            PendingIntent sentIntent) {
            PendingIntent sentIntent) {
        // Do not send non-emergency SMS in ECBM as it forces device to exit ECBM.
        if(getPhone(subId).isInEcm()) {
            Rlog.d(LOG_TAG, "sendVisualVoicemailSmsForSubscriber: Do not send non-emergency "
                + "SMS in ECBM as it forces device to exit ECBM.");
            return;
        }

        if (port == 0) {
        if (port == 0) {
            sendTextForSubscriberWithSelfPermissionsInternal(subId, callingPackage,
            sendTextForSubscriberWithSelfPermissionsInternal(subId, callingPackage,
                    callingAttributionTag, number, null, text, sentIntent, null, false,
                    callingAttributionTag, number, null, text, sentIntent, null, false,
+27 −0
Original line number Original line Diff line number Diff line
@@ -31,9 +31,14 @@ import org.mockito.Mockito;


import static org.junit.Assert.assertTrue;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertFalse;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.anyInt;
import static org.mockito.Mockito.anyInt;
import static org.mockito.Mockito.anyString;
import static org.mockito.Mockito.anyString;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.eq;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;



import java.util.ArrayList;
import java.util.ArrayList;


@@ -165,4 +170,26 @@ public class SmsControllerTest extends TelephonyTest {
        // Clean up
        // Clean up
        fdnCheckCleanup();
        fdnCheckCleanup();
    }
    }

    @Test
    public void sendVisualVoicemailSmsForSubscriber_phoneIsNotInEcm() {
        assertFalse(mPhone.isInEcm());

        mSmsControllerUT.sendVisualVoicemailSmsForSubscriber(mCallingPackage,null ,
                1, null, 0, null, null);
        verify(mIccSmsInterfaceManager).sendTextWithSelfPermissions(any(),
                any(), any(), any(), any(), any(), any(), eq(false), eq(true));
    }

    @Test
    public void sendVisualVoicemailSmsForSubscriber_phoneIsInEcm() {
        doReturn(true).when(mPhone).isInEcm();

        mSmsControllerUT.sendVisualVoicemailSmsForSubscriber(mCallingPackage,null ,
                1, null, 0, null, null);
        verify(mIccSmsInterfaceManager, never()).sendTextWithSelfPermissions(any(),
                any(), any(), any(), any(), any(), any(), eq(false), eq(true));

        doReturn(false).when(mPhone).isInEcm();
    }
}
}
 No newline at end of file