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

Commit 6649ea6d authored by Chen Xu's avatar Chen Xu Committed by Gerrit Code Review
Browse files

Merge "use @SystemAPI in AppOpsManager"

parents 74360475 84c7598f
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -219,7 +219,7 @@ public class IccSmsInterfaceManager {
                " status=" + status + " ==> " +
                "("+ Arrays.toString(pdu) + ")");
        enforceReceiveAndSend("Updating message on Icc");
        if (mAppOps.noteOp(AppOpsManager.OP_WRITE_ICC_SMS, Binder.getCallingUid(),
        if (mAppOps.noteOp(AppOpsManager.OPSTR_WRITE_ICC_SMS, Binder.getCallingUid(),
                callingPackage) != AppOpsManager.MODE_ALLOWED) {
            return false;
        }
@@ -274,7 +274,7 @@ public class IccSmsInterfaceManager {
                "pdu=("+ Arrays.toString(pdu) +
                "), smsc=(" + Arrays.toString(smsc) +")");
        enforceReceiveAndSend("Copying message to Icc");
        if (mAppOps.noteOp(AppOpsManager.OP_WRITE_ICC_SMS, Binder.getCallingUid(),
        if (mAppOps.noteOp(AppOpsManager.OPSTR_WRITE_ICC_SMS, Binder.getCallingUid(),
                callingPackage) != AppOpsManager.MODE_ALLOWED) {
            return false;
        }
@@ -312,7 +312,7 @@ public class IccSmsInterfaceManager {
        mContext.enforceCallingOrSelfPermission(
                Manifest.permission.RECEIVE_SMS,
                "Reading messages from Icc");
        if (mAppOps.noteOp(AppOpsManager.OP_READ_ICC_SMS, Binder.getCallingUid(),
        if (mAppOps.noteOp(AppOpsManager.OPSTR_READ_ICC_SMS, Binder.getCallingUid(),
                callingPackage) != AppOpsManager.MODE_ALLOWED) {
            return new ArrayList<SmsRawData>();
        }
+2 −2
Original line number Diff line number Diff line
@@ -111,7 +111,7 @@ public class SmsPermissions {
     */
    public boolean checkCallingCanSendSms(String callingPackage, String message) {
        mContext.enforceCallingPermission(Manifest.permission.SEND_SMS, message);
        return mAppOps.noteOp(AppOpsManager.OP_SEND_SMS, Binder.getCallingUid(), callingPackage)
        return mAppOps.noteOp(AppOpsManager.OPSTR_SEND_SMS, Binder.getCallingUid(), callingPackage)
                == AppOpsManager.MODE_ALLOWED;
    }

@@ -124,7 +124,7 @@ public class SmsPermissions {
     */
    public boolean checkCallingOrSelfCanSendSms(String callingPackage, String message) {
        mContext.enforceCallingOrSelfPermission(Manifest.permission.SEND_SMS, message);
        return mAppOps.noteOp(AppOpsManager.OP_SEND_SMS, Binder.getCallingUid(), callingPackage)
        return mAppOps.noteOp(AppOpsManager.OPSTR_SEND_SMS, Binder.getCallingUid(), callingPackage)
                == AppOpsManager.MODE_ALLOWED;
    }

+3 −3
Original line number Diff line number Diff line
@@ -132,8 +132,8 @@ public class DataServiceManager extends Handler {
        try {
            mPackageManager.grantDefaultPermissionsToEnabledTelephonyDataServices(
                    pkgToGrant, mPhone.getContext().getUserId());
            mAppOps.setMode(AppOpsManager.OP_MANAGE_IPSEC_TUNNELS, mPhone.getContext().getUserId(),
                    pkgToGrant[0], AppOpsManager.MODE_ALLOWED);
            mAppOps.setMode(AppOpsManager.OPSTR_MANAGE_IPSEC_TUNNELS,
                mPhone.getContext().getUserId(), pkgToGrant[0], AppOpsManager.MODE_ALLOWED);
        } catch (RemoteException e) {
            loge("Binder to package manager died, permission grant for DataService failed.");
            throw e.rethrowAsRuntimeException();
@@ -157,7 +157,7 @@ public class DataServiceManager extends Handler {
            mPackageManager.revokeDefaultPermissionsFromDisabledTelephonyDataServices(
                    dataServicesArray, mPhone.getContext().getUserId());
            for (String pkg : dataServices) {
                mAppOps.setMode(AppOpsManager.OP_MANAGE_IPSEC_TUNNELS,
                mAppOps.setMode(AppOpsManager.OPSTR_MANAGE_IPSEC_TUNNELS,
                        mPhone.getContext().getUserId(),
                        pkg, AppOpsManager.MODE_ERRORED);
            }
+6 −7
Original line number Diff line number Diff line
@@ -28,34 +28,33 @@ class RcsPermissions {

        context.enforcePermission(Manifest.permission.READ_SMS, pid, uid, null);

        checkOp(context, uid, callingPackage, AppOpsManager.OP_READ_SMS);
        checkOp(context, uid, callingPackage, AppOpsManager.OPSTR_READ_SMS);
    }

    static void checkWritePermissions(Context context, String callingPackage) {
        int uid = Binder.getCallingUid();

        checkOp(context, uid, callingPackage, AppOpsManager.OP_WRITE_SMS);
        checkOp(context, uid, callingPackage, AppOpsManager.OPSTR_WRITE_SMS);
    }

    /**
     * Notes the provided op, but throws even if the op mode is {@link AppOpsManager.MODE_IGNORED}.
     * <p>
     * {@link AppOpsManager.OP_WRITE_SMS} defaults to {@link AppOpsManager.MODE_IGNORED} to avoid
     * {@link AppOpsManager.OPSTR_WRITE_SMS} defaults to {@link AppOpsManager.MODE_IGNORED} to avoid
     * crashing applications written before the app op was introduced. Since this is a new API,
     * consumers should be aware of the permission requirements, and we should be safe to throw a
     * {@link SecurityException} instead of providing a dummy value (which could cause unexpected
     * application behavior and possible loss of user data). {@link AppOpsManager.OP_READ_SMS} is
     * application behavior and possible loss of user data). {@link AppOpsManager.OPSTR_READ_SMS} is
     * not normally in {@link AppOpsManager.MODE_IGNORED}, but we maintain the same behavior for
     * consistency with handling of write permissions.
     */
    private static void checkOp(Context context, int uid, String callingPackage, int op) {
    private static void checkOp(Context context, int uid, String callingPackage, String op) {
        AppOpsManager appOps = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE);

        int mode = appOps.noteOp(op, uid, callingPackage);

        if (mode != AppOpsManager.MODE_ALLOWED) {
            throw new SecurityException(
                    AppOpsManager.opToName(op) + " not allowed for " + callingPackage);
            throw new SecurityException(op + " not allowed for " + callingPackage);
        }
    }
}
+28 −28
Original line number Diff line number Diff line
@@ -119,7 +119,7 @@ public class PhoneSubInfoControllerTest extends TelephonyTest {
        //case 2: no READ_PRIVILEGED_PHONE_STATE & appOsMgr READ_PHONE_PERMISSION
        mContextFixture.addCallingOrSelfPermission(READ_PHONE_STATE);
        doReturn(AppOpsManager.MODE_ERRORED).when(mAppOsMgr).noteOp(
                eq(AppOpsManager.OP_READ_PHONE_STATE), anyInt(), eq(TAG));
                eq(AppOpsManager.OPSTR_READ_PHONE_STATE), anyInt(), eq(TAG));
        try {
            mPhoneSubInfoControllerUT.getDeviceIdForPhone(0, TAG);
            Assert.fail("expected Security Exception Thrown");
@@ -140,7 +140,7 @@ public class PhoneSubInfoControllerTest extends TelephonyTest {
        // The READ_PRIVILEGED_PHONE_STATE permission is now required to get device identifiers.
        mContextFixture.addCallingOrSelfPermission(READ_PHONE_STATE);
        doReturn(AppOpsManager.MODE_ALLOWED).when(mAppOsMgr).noteOp(
                eq(AppOpsManager.OP_READ_PHONE_STATE), anyInt(), eq(TAG));
                eq(AppOpsManager.OPSTR_READ_PHONE_STATE), anyInt(), eq(TAG));
        try {
            mPhoneSubInfoControllerUT.getDeviceIdForPhone(0, TAG);
            Assert.fail("expected Security Exception Thrown");
@@ -195,14 +195,14 @@ public class PhoneSubInfoControllerTest extends TelephonyTest {
        //case 2: no READ_PRIVILEGED_PHONE_STATE & appOsMgr READ_PHONE_PERMISSION
        mContextFixture.addCallingOrSelfPermission(READ_PHONE_STATE);
        doReturn(AppOpsManager.MODE_ERRORED).when(mAppOsMgr).noteOp(
                eq(AppOpsManager.OP_READ_PHONE_STATE), anyInt(), eq(TAG));
                eq(AppOpsManager.OPSTR_READ_PHONE_STATE), anyInt(), eq(TAG));
        assertNull(mPhoneSubInfoControllerUT.getNaiForSubscriber(0, TAG));
        assertNull(mPhoneSubInfoControllerUT.getNaiForSubscriber(1, TAG));

        //case 3: no READ_PRIVILEGED_PHONE_STATE
        mContextFixture.addCallingOrSelfPermission(READ_PHONE_STATE);
        doReturn(AppOpsManager.MODE_ALLOWED).when(mAppOsMgr).noteOp(
                eq(AppOpsManager.OP_READ_PHONE_STATE), anyInt(), eq(TAG));
                eq(AppOpsManager.OPSTR_READ_PHONE_STATE), anyInt(), eq(TAG));
        assertEquals("aaa@example.com", mPhoneSubInfoControllerUT.getNaiForSubscriber(0, TAG));
        assertEquals("bbb@example.com", mPhoneSubInfoControllerUT.getNaiForSubscriber(1, TAG));
    }
@@ -247,7 +247,7 @@ public class PhoneSubInfoControllerTest extends TelephonyTest {
        //case 2: no READ_PRIVILEGED_PHONE_STATE & appOsMgr READ_PHONE_PERMISSION
        mContextFixture.addCallingOrSelfPermission(READ_PHONE_STATE);
        doReturn(AppOpsManager.MODE_ERRORED).when(mAppOsMgr).noteOp(
                eq(AppOpsManager.OP_READ_PHONE_STATE), anyInt(), eq(TAG));
                eq(AppOpsManager.OPSTR_READ_PHONE_STATE), anyInt(), eq(TAG));
        try {
            mPhoneSubInfoControllerUT.getImeiForSubscriber(0, TAG);
            Assert.fail("expected Security Exception Thrown");
@@ -267,7 +267,7 @@ public class PhoneSubInfoControllerTest extends TelephonyTest {
        //case 3: no READ_PRIVILEGED_PHONE_STATE
        mContextFixture.addCallingOrSelfPermission(READ_PHONE_STATE);
        doReturn(AppOpsManager.MODE_ALLOWED).when(mAppOsMgr).noteOp(
                eq(AppOpsManager.OP_READ_PHONE_STATE), anyInt(), eq(TAG));
                eq(AppOpsManager.OPSTR_READ_PHONE_STATE), anyInt(), eq(TAG));
        try {
            mPhoneSubInfoControllerUT.getImeiForSubscriber(0, TAG);
            Assert.fail("expected Security Exception Thrown");
@@ -322,7 +322,7 @@ public class PhoneSubInfoControllerTest extends TelephonyTest {
        //case 2: no READ_PRIVILEGED_PHONE_STATE & appOsMgr READ_PHONE_PERMISSION
        mContextFixture.addCallingOrSelfPermission(READ_PHONE_STATE);
        doReturn(AppOpsManager.MODE_ERRORED).when(mAppOsMgr).noteOp(
                eq(AppOpsManager.OP_READ_PHONE_STATE), anyInt(), eq(TAG));
                eq(AppOpsManager.OPSTR_READ_PHONE_STATE), anyInt(), eq(TAG));

        assertNull(mPhoneSubInfoControllerUT.getDeviceSvnUsingSubId(0, TAG));
        assertNull(mPhoneSubInfoControllerUT.getDeviceSvnUsingSubId(1, TAG));
@@ -330,7 +330,7 @@ public class PhoneSubInfoControllerTest extends TelephonyTest {
        //case 3: no READ_PRIVILEGED_PHONE_STATE
        mContextFixture.addCallingOrSelfPermission(READ_PHONE_STATE);
        doReturn(AppOpsManager.MODE_ALLOWED).when(mAppOsMgr).noteOp(
                eq(AppOpsManager.OP_READ_PHONE_STATE), anyInt(), eq(TAG));
                eq(AppOpsManager.OPSTR_READ_PHONE_STATE), anyInt(), eq(TAG));
        assertEquals("00", mPhoneSubInfoControllerUT.getDeviceSvnUsingSubId(0, TAG));
        assertEquals("01", mPhoneSubInfoControllerUT.getDeviceSvnUsingSubId(1, TAG));
    }
@@ -385,7 +385,7 @@ public class PhoneSubInfoControllerTest extends TelephonyTest {
        //case 2: no READ_PRIVILEGED_PHONE_STATE & appOsMgr READ_PHONE_PERMISSION
        mContextFixture.addCallingOrSelfPermission(READ_PHONE_STATE);
        doReturn(AppOpsManager.MODE_ERRORED).when(mAppOsMgr).noteOp(
                eq(AppOpsManager.OP_READ_PHONE_STATE), anyInt(), eq(TAG));
                eq(AppOpsManager.OPSTR_READ_PHONE_STATE), anyInt(), eq(TAG));
        try {
            mPhoneSubInfoControllerUT.getSubscriberIdForSubscriber(0, TAG);
            Assert.fail("expected Security Exception Thrown");
@@ -406,7 +406,7 @@ public class PhoneSubInfoControllerTest extends TelephonyTest {
        // The READ_PRIVILEGED_PHONE_STATE permission is now required to get device identifiers.
        mContextFixture.addCallingOrSelfPermission(READ_PHONE_STATE);
        doReturn(AppOpsManager.MODE_ALLOWED).when(mAppOsMgr).noteOp(
                eq(AppOpsManager.OP_READ_PHONE_STATE), anyInt(), eq(TAG));
                eq(AppOpsManager.OPSTR_READ_PHONE_STATE), anyInt(), eq(TAG));
        try {
            mPhoneSubInfoControllerUT.getSubscriberIdForSubscriber(0, TAG);
            Assert.fail("expected Security Exception Thrown");
@@ -467,7 +467,7 @@ public class PhoneSubInfoControllerTest extends TelephonyTest {
        //case 2: no READ_PRIVILEGED_PHONE_STATE & appOsMgr READ_PHONE_PERMISSION
        mContextFixture.addCallingOrSelfPermission(READ_PHONE_STATE);
        doReturn(AppOpsManager.MODE_ERRORED).when(mAppOsMgr).noteOp(
                eq(AppOpsManager.OP_READ_PHONE_STATE), anyInt(), eq(TAG));
                eq(AppOpsManager.OPSTR_READ_PHONE_STATE), anyInt(), eq(TAG));
        try {
            mPhoneSubInfoControllerUT.getIccSerialNumberForSubscriber(0, TAG);
            Assert.fail("expected Security Exception Thrown");
@@ -487,7 +487,7 @@ public class PhoneSubInfoControllerTest extends TelephonyTest {
        //case 3: no READ_PRIVILEGED_PHONE_STATE
        mContextFixture.addCallingOrSelfPermission(READ_PHONE_STATE);
        doReturn(AppOpsManager.MODE_ALLOWED).when(mAppOsMgr).noteOp(
                eq(AppOpsManager.OP_READ_PHONE_STATE), anyInt(), eq(TAG));
                eq(AppOpsManager.OPSTR_READ_PHONE_STATE), anyInt(), eq(TAG));
        try {
            mPhoneSubInfoControllerUT.getIccSerialNumberForSubscriber(0, TAG);
            Assert.fail("expected Security Exception Thrown");
@@ -525,11 +525,11 @@ public class PhoneSubInfoControllerTest extends TelephonyTest {
        READ_SMS and no OP_WRITE_SMS & OP_READ_SMS from appOsMgr */
        mContextFixture.removeCallingOrSelfPermission(ContextFixture.PERMISSION_ENABLE_ALL);
        doReturn(AppOpsManager.MODE_ERRORED).when(mAppOsMgr).noteOp(
                eq(AppOpsManager.OP_READ_SMS), anyInt(), eq(TAG));
                eq(AppOpsManager.OPSTR_READ_SMS), anyInt(), eq(TAG));
        doReturn(AppOpsManager.MODE_ERRORED).when(mAppOsMgr).noteOp(
                eq(AppOpsManager.OP_WRITE_SMS), anyInt(), eq(TAG));
                eq(AppOpsManager.OPSTR_WRITE_SMS), anyInt(), eq(TAG));
        doReturn(AppOpsManager.MODE_ERRORED).when(mAppOsMgr).noteOp(
                eq(AppOpsManager.OP_READ_PHONE_STATE), anyInt(), eq(TAG));
                eq(AppOpsManager.OPSTR_READ_PHONE_STATE), anyInt(), eq(TAG));
        try {
            mPhoneSubInfoControllerUT.getLine1NumberForSubscriber(0, TAG);
            Assert.fail("expected Security Exception Thrown");
@@ -546,13 +546,13 @@ public class PhoneSubInfoControllerTest extends TelephonyTest {

        /* case 2: only enable WRITE_SMS permission */
        doReturn(AppOpsManager.MODE_ALLOWED).when(mAppOsMgr).noteOp(
                eq(AppOpsManager.OP_WRITE_SMS), anyInt(), eq(TAG));
                eq(AppOpsManager.OPSTR_WRITE_SMS), anyInt(), eq(TAG));
        assertEquals("+18051234567", mPhoneSubInfoControllerUT.getLine1NumberForSubscriber(0, TAG));
        assertEquals("+18052345678", mPhoneSubInfoControllerUT.getLine1NumberForSubscriber(1, TAG));

        /* case 3: only enable READ_PRIVILEGED_PHONE_STATE */
        doReturn(AppOpsManager.MODE_ERRORED).when(mAppOsMgr).noteOp(
                eq(AppOpsManager.OP_WRITE_SMS), anyInt(), eq(TAG));
                eq(AppOpsManager.OPSTR_WRITE_SMS), anyInt(), eq(TAG));
        mContextFixture.addCallingOrSelfPermission(READ_PRIVILEGED_PHONE_STATE);
        assertEquals("+18051234567", mPhoneSubInfoControllerUT.getLine1NumberForSubscriber(0, TAG));
        assertEquals("+18052345678", mPhoneSubInfoControllerUT.getLine1NumberForSubscriber(1, TAG));
@@ -565,13 +565,13 @@ public class PhoneSubInfoControllerTest extends TelephonyTest {

        /* case 5: enable appOsMgr READ_PHONE_PERMISSION & READ_PHONE_STATE */
        doReturn(AppOpsManager.MODE_ALLOWED).when(mAppOsMgr).noteOp(
                eq(AppOpsManager.OP_READ_PHONE_STATE), anyInt(), eq(TAG));
                eq(AppOpsManager.OPSTR_READ_PHONE_STATE), anyInt(), eq(TAG));
        assertEquals("+18051234567", mPhoneSubInfoControllerUT.getLine1NumberForSubscriber(0, TAG));
        assertEquals("+18052345678", mPhoneSubInfoControllerUT.getLine1NumberForSubscriber(1, TAG));

        /* case 6: only enable READ_SMS */
        doReturn(AppOpsManager.MODE_ERRORED).when(mAppOsMgr).noteOp(
                eq(AppOpsManager.OP_READ_PHONE_STATE), anyInt(), eq(TAG));
                eq(AppOpsManager.OPSTR_READ_PHONE_STATE), anyInt(), eq(TAG));
        mContextFixture.removeCallingOrSelfPermission(READ_PHONE_STATE);
        mContextFixture.addCallingOrSelfPermission(READ_SMS);
        assertNull(mPhoneSubInfoControllerUT.getLine1NumberForSubscriber(0, TAG));
@@ -579,7 +579,7 @@ public class PhoneSubInfoControllerTest extends TelephonyTest {

        /* case 7: enable READ_SMS and OP_READ_SMS */
        doReturn(AppOpsManager.MODE_ALLOWED).when(mAppOsMgr).noteOp(
                eq(AppOpsManager.OP_READ_SMS), anyInt(), eq(TAG));
                eq(AppOpsManager.OPSTR_READ_SMS), anyInt(), eq(TAG));
        assertEquals("+18051234567", mPhoneSubInfoControllerUT.getLine1NumberForSubscriber(0, TAG));
        assertEquals("+18052345678", mPhoneSubInfoControllerUT.getLine1NumberForSubscriber(1, TAG));
    }
@@ -623,7 +623,7 @@ public class PhoneSubInfoControllerTest extends TelephonyTest {
        //case 2: no READ_PRIVILEGED_PHONE_STATE & appOsMgr READ_PHONE_PERMISSION
        mContextFixture.addCallingOrSelfPermission(READ_PHONE_STATE);
        doReturn(AppOpsManager.MODE_ERRORED).when(mAppOsMgr).noteOp(
                eq(AppOpsManager.OP_READ_PHONE_STATE), anyInt(), eq(TAG));
                eq(AppOpsManager.OPSTR_READ_PHONE_STATE), anyInt(), eq(TAG));

        assertNull(mPhoneSubInfoControllerUT.getLine1AlphaTagForSubscriber(0, TAG));
        assertNull(mPhoneSubInfoControllerUT.getLine1AlphaTagForSubscriber(1, TAG));
@@ -631,7 +631,7 @@ public class PhoneSubInfoControllerTest extends TelephonyTest {
        //case 3: no READ_PRIVILEGED_PHONE_STATE
        mContextFixture.addCallingOrSelfPermission(READ_PHONE_STATE);
        doReturn(AppOpsManager.MODE_ALLOWED).when(mAppOsMgr).noteOp(
                eq(AppOpsManager.OP_READ_PHONE_STATE), anyInt(), eq(TAG));
                eq(AppOpsManager.OPSTR_READ_PHONE_STATE), anyInt(), eq(TAG));
        assertEquals("LINE1_SIM_0", mPhoneSubInfoControllerUT
                .getLine1AlphaTagForSubscriber(0, TAG));
        assertEquals("LINE1_SIM_1", mPhoneSubInfoControllerUT
@@ -675,7 +675,7 @@ public class PhoneSubInfoControllerTest extends TelephonyTest {
        //case 2: no READ_PRIVILEGED_PHONE_STATE & appOsMgr READ_PHONE_PERMISSION
        mContextFixture.addCallingOrSelfPermission(READ_PHONE_STATE);
        doReturn(AppOpsManager.MODE_ERRORED).when(mAppOsMgr).noteOp(
                eq(AppOpsManager.OP_READ_PHONE_STATE), anyInt(), eq(TAG));
                eq(AppOpsManager.OPSTR_READ_PHONE_STATE), anyInt(), eq(TAG));

        assertNull(mPhoneSubInfoControllerUT.getMsisdnForSubscriber(0, TAG));
        assertNull(mPhoneSubInfoControllerUT.getMsisdnForSubscriber(1, TAG));
@@ -683,7 +683,7 @@ public class PhoneSubInfoControllerTest extends TelephonyTest {
        //case 3: no READ_PRIVILEGED_PHONE_STATE
        mContextFixture.addCallingOrSelfPermission(READ_PHONE_STATE);
        doReturn(AppOpsManager.MODE_ALLOWED).when(mAppOsMgr).noteOp(
                eq(AppOpsManager.OP_READ_PHONE_STATE), anyInt(), eq(TAG));
                eq(AppOpsManager.OPSTR_READ_PHONE_STATE), anyInt(), eq(TAG));
        assertEquals("+18051234567", mPhoneSubInfoControllerUT.getMsisdnForSubscriber(0, TAG));
        assertEquals("+18052345678", mPhoneSubInfoControllerUT.getMsisdnForSubscriber(1, TAG));
    }
@@ -727,7 +727,7 @@ public class PhoneSubInfoControllerTest extends TelephonyTest {
        //case 2: no READ_PRIVILEGED_PHONE_STATE & appOsMgr READ_PHONE_PERMISSION
        mContextFixture.addCallingOrSelfPermission(READ_PHONE_STATE);
        doReturn(AppOpsManager.MODE_ERRORED).when(mAppOsMgr).noteOp(
                eq(AppOpsManager.OP_READ_PHONE_STATE), anyInt(), eq(TAG));
                eq(AppOpsManager.OPSTR_READ_PHONE_STATE), anyInt(), eq(TAG));

        assertNull(mPhoneSubInfoControllerUT.getVoiceMailNumberForSubscriber(0, TAG));
        assertNull(mPhoneSubInfoControllerUT.getVoiceMailNumberForSubscriber(1, TAG));
@@ -735,7 +735,7 @@ public class PhoneSubInfoControllerTest extends TelephonyTest {
        //case 3: no READ_PRIVILEGED_PHONE_STATE
        mContextFixture.addCallingOrSelfPermission(READ_PHONE_STATE);
        doReturn(AppOpsManager.MODE_ALLOWED).when(mAppOsMgr).noteOp(
                eq(AppOpsManager.OP_READ_PHONE_STATE), anyInt(), eq(TAG));
                eq(AppOpsManager.OPSTR_READ_PHONE_STATE), anyInt(), eq(TAG));
        assertEquals("+18051234567", mPhoneSubInfoControllerUT
                .getVoiceMailNumberForSubscriber(0, TAG));
        assertEquals("+18052345678", mPhoneSubInfoControllerUT
@@ -781,7 +781,7 @@ public class PhoneSubInfoControllerTest extends TelephonyTest {
        //case 2: no READ_PRIVILEGED_PHONE_STATE & appOsMgr READ_PHONE_PERMISSION
        mContextFixture.addCallingOrSelfPermission(READ_PHONE_STATE);
        doReturn(AppOpsManager.MODE_ERRORED).when(mAppOsMgr).noteOp(
                eq(AppOpsManager.OP_READ_PHONE_STATE), anyInt(), eq(TAG));
                eq(AppOpsManager.OPSTR_READ_PHONE_STATE), anyInt(), eq(TAG));

        assertNull(mPhoneSubInfoControllerUT.getVoiceMailAlphaTagForSubscriber(0, TAG));
        assertNull(mPhoneSubInfoControllerUT.getVoiceMailAlphaTagForSubscriber(1, TAG));
@@ -789,7 +789,7 @@ public class PhoneSubInfoControllerTest extends TelephonyTest {
        //case 3: no READ_PRIVILEGED_PHONE_STATE
        mContextFixture.addCallingOrSelfPermission(READ_PHONE_STATE);
        doReturn(AppOpsManager.MODE_ALLOWED).when(mAppOsMgr).noteOp(
                eq(AppOpsManager.OP_READ_PHONE_STATE), anyInt(), eq(TAG));
                eq(AppOpsManager.OPSTR_READ_PHONE_STATE), anyInt(), eq(TAG));
        assertEquals("VM_SIM_0", mPhoneSubInfoControllerUT
                .getVoiceMailAlphaTagForSubscriber(0, TAG));
        assertEquals("VM_SIM_1", mPhoneSubInfoControllerUT
Loading