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

Commit d03111b3 authored by Aishwarya Mallampati's avatar Aishwarya Mallampati Committed by Android (Google) Code Review
Browse files

Merge "Added resource overlay flag to enable/disable getSubscriptionUserHandle api."

parents 70b88528 f29c8926
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -4821,9 +4821,15 @@ public class SubscriptionController extends ISub.Stub {
     * @throws IllegalArgumentException if subId is invalid.
     */
    @Override
    @Nullable
    public UserHandle getSubscriptionUserHandle(int subId) {
        enforceManageSubscriptionUserAssociation("getSubscriptionUserHandle");

        if (!mContext.getResources().getBoolean(
                com.android.internal.R.bool.config_enable_get_subscription_user_handle)) {
            return null;
        }

        long token = Binder.clearCallingIdentity();
        try {
            String userHandleStr = getSubscriptionProperty(subId, SubscriptionManager.USER_HANDLE);
+6 −0
Original line number Diff line number Diff line
@@ -2988,11 +2988,17 @@ public class SubscriptionManagerService extends ISub.Stub {
     * @throws IllegalArgumentException if {@code subId} is invalid.
     */
    @Override
    @Nullable
    @RequiresPermission(Manifest.permission.MANAGE_SUBSCRIPTION_USER_ASSOCIATION)
    public UserHandle getSubscriptionUserHandle(int subId) {
        enforcePermissions("getSubscriptionUserHandle",
                Manifest.permission.MANAGE_SUBSCRIPTION_USER_ASSOCIATION);

        if (!mContext.getResources().getBoolean(
                com.android.internal.R.bool.config_enable_get_subscription_user_handle)) {
            return null;
        }

        long token = Binder.clearCallingIdentity();
        try {
            SubscriptionInfoInternal subInfo = mSubscriptionDatabaseManager
+16 −0
Original line number Diff line number Diff line
@@ -50,6 +50,7 @@ import android.content.ContentResolver;
import android.content.ContentValues;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.res.Resources;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
@@ -2142,6 +2143,7 @@ public class SubscriptionControllerTest extends TelephonyTest {
    @Test
    public void setSubscriptionUserHandle_withoutPermission() {
        testInsertSim();
        enableGetSubscriptionUserHandle();
        /* Get SUB ID */
        int[] subIds = mSubscriptionControllerUT.getActiveSubIdList(/*visibleOnly*/false);
        assertTrue(subIds != null && subIds.length != 0);
@@ -2156,6 +2158,7 @@ public class SubscriptionControllerTest extends TelephonyTest {
    @Test
    public void setGetSubscriptionUserHandle_userHandleNull() {
        testInsertSim();
        enableGetSubscriptionUserHandle();
        /* Get SUB ID */
        int[] subIds = mSubscriptionControllerUT.getActiveSubIdList(/*visibleOnly*/false);
        assertTrue(subIds != null && subIds.length != 0);
@@ -2169,6 +2172,8 @@ public class SubscriptionControllerTest extends TelephonyTest {

    @Test
    public void setSubscriptionUserHandle_invalidSubId() {
        enableGetSubscriptionUserHandle();

        assertThrows(IllegalArgumentException.class,
                () -> mSubscriptionControllerUT.setSubscriptionUserHandle(
                        UserHandle.of(UserHandle.USER_SYSTEM),
@@ -2178,6 +2183,7 @@ public class SubscriptionControllerTest extends TelephonyTest {
    @Test
    public void setGetSubscriptionUserHandle_withValidUserHandleAndSubId() {
        testInsertSim();
        enableGetSubscriptionUserHandle();
        /* Get SUB ID */
        int[] subIds = mSubscriptionControllerUT.getActiveSubIdList(/*visibleOnly*/false);
        assertTrue(subIds != null && subIds.length != 0);
@@ -2193,6 +2199,7 @@ public class SubscriptionControllerTest extends TelephonyTest {
    @Test
    public void getSubscriptionUserHandle_withoutPermission() {
        testInsertSim();
        enableGetSubscriptionUserHandle();
        /* Get SUB ID */
        int[] subIds = mSubscriptionControllerUT.getActiveSubIdList(/*visibleOnly*/false);
        assertTrue(subIds != null && subIds.length != 0);
@@ -2205,8 +2212,17 @@ public class SubscriptionControllerTest extends TelephonyTest {

    @Test
    public void getSubscriptionUserHandle_invalidSubId() {
        enableGetSubscriptionUserHandle();

        assertThrows(IllegalArgumentException.class,
                () -> mSubscriptionControllerUT.getSubscriptionUserHandle(
                        SubscriptionManager.DEFAULT_SUBSCRIPTION_ID));
    }

    private void enableGetSubscriptionUserHandle() {
        Resources mResources = mock(Resources.class);
        doReturn(true).when(mResources).getBoolean(
                eq(com.android.internal.R.bool.config_enable_get_subscription_user_handle));
        doReturn(mResources).when(mContext).getResources();
    }
}
 No newline at end of file
+6 −1
Original line number Diff line number Diff line
@@ -64,6 +64,7 @@ import android.app.PropertyInvalidatedCache;
import android.compat.testing.PlatformCompatChangeRule;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.res.Resources;
import android.os.Build;
import android.os.Bundle;
import android.os.Looper;
@@ -916,8 +917,12 @@ public class SubscriptionManagerServiceTest extends TelephonyTest {
    @Test
    public void testSetGetSubscriptionUserHandle() {
        insertSubscription(FAKE_SUBSCRIPTION_INFO1);
        Resources mResources = Mockito.mock(Resources.class);
        doReturn(true).when(mResources).getBoolean(
                eq(com.android.internal.R.bool.config_enable_get_subscription_user_handle));
        doReturn(mResources).when(mContext).getResources();

        // Should fail without MODIFY_PHONE_STATE
        // Should fail without MANAGE_SUBSCRIPTION_USER_ASSOCIATION
        assertThrows(SecurityException.class, () -> mSubscriptionManagerServiceUT
                .setSubscriptionUserHandle(new UserHandle(12), 1));