Loading flags/misc.aconfig +11 −0 Original line number Diff line number Diff line Loading @@ -217,3 +217,14 @@ flag { purpose: PURPOSE_BUGFIX } } # OWNER=rambowang TARGET=24Q4 flag { name: "support_phone_uid_check_for_multiuser" namespace: "telephony" description: "Check phone/system processes from UID with multiuser-aware way" bug:"328511085" metadata { purpose: PURPOSE_BUGFIX } } tests/telephonytests/src/com/android/internal/telephony/TelephonyPermissionsTest.java +40 −0 Original line number Diff line number Diff line Loading @@ -37,9 +37,11 @@ import android.os.Binder; import android.os.Build; import android.os.Bundle; import android.os.IBinder; import android.os.Process; import android.os.ServiceManager; import android.os.UserHandle; import android.permission.LegacyPermissionManager; import android.platform.test.flag.junit.SetFlagsRule; import android.provider.DeviceConfig; import android.provider.Settings; import android.telephony.SubscriptionManager; Loading @@ -50,11 +52,13 @@ import android.test.mock.MockContentResolver; import androidx.test.filters.SmallTest; import com.android.internal.telephony.flags.FeatureFlags; import com.android.internal.telephony.flags.Flags; import com.android.internal.util.test.FakeSettingsProvider; import com.android.server.pm.permission.LegacyPermissionManagerService; import org.junit.After; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import java.lang.reflect.Field; Loading @@ -71,6 +75,9 @@ public class TelephonyPermissionsTest { private static final String FEATURE = "com.example.feature"; private static final String MSG = "message"; @Rule public final SetFlagsRule mSetFlagsRule = new SetFlagsRule(); // Mocked classes private Context mMockContext; private AppOpsManager mMockAppOps; Loading @@ -90,6 +97,7 @@ public class TelephonyPermissionsTest { @Before public void setUp() throws Exception { mSetFlagsRule.enableFlags(Flags.FLAG_SUPPORT_PHONE_UID_CHECK_FOR_MULTIUSER); mMockContext = mock(Context.class); mMockAppOps = mock(AppOpsManager.class); mMockSubscriptionManager = mock(SubscriptionManager.class); Loading Loading @@ -558,6 +566,38 @@ public class TelephonyPermissionsTest { UserHandle.SYSTEM)); } @Test public void testIsSystemOrPhone_systemUser() { assertTrue(TelephonyPermissions.isSystemOrPhone(Process.SYSTEM_UID)); assertTrue(TelephonyPermissions.isSystemOrPhone(Process.PHONE_UID)); assertFalse(TelephonyPermissions.isSystemOrPhone(1002)); } @Test public void testIsSystemOrPhone_nonSystemUser() { assertTrue(TelephonyPermissions.isSystemOrPhone(1001000)); assertTrue(TelephonyPermissions.isSystemOrPhone(1001001)); assertFalse(TelephonyPermissions.isSystemOrPhone(1001002)); } @Test public void testIsRootOrShell_systemUser() { assertTrue(TelephonyPermissions.isRootOrShell(Process.ROOT_UID)); assertTrue(TelephonyPermissions.isRootOrShell(Process.SHELL_UID)); assertFalse(TelephonyPermissions.isRootOrShell(1002)); } @Test public void testIsRootOrShell_nonSystemUser() { assertTrue(TelephonyPermissions.isRootOrShell(1000000)); assertTrue(TelephonyPermissions.isRootOrShell(1002000)); assertFalse(TelephonyPermissions.isRootOrShell(1001002)); } // Put mMockTelephony into service cache so that TELEPHONY_SUPPLIER will get it. private void setTelephonyMockAsService() throws Exception { when(mMockTelephonyBinder.queryLocalInterface(anyString())).thenReturn(mMockTelephony); Loading Loading
flags/misc.aconfig +11 −0 Original line number Diff line number Diff line Loading @@ -217,3 +217,14 @@ flag { purpose: PURPOSE_BUGFIX } } # OWNER=rambowang TARGET=24Q4 flag { name: "support_phone_uid_check_for_multiuser" namespace: "telephony" description: "Check phone/system processes from UID with multiuser-aware way" bug:"328511085" metadata { purpose: PURPOSE_BUGFIX } }
tests/telephonytests/src/com/android/internal/telephony/TelephonyPermissionsTest.java +40 −0 Original line number Diff line number Diff line Loading @@ -37,9 +37,11 @@ import android.os.Binder; import android.os.Build; import android.os.Bundle; import android.os.IBinder; import android.os.Process; import android.os.ServiceManager; import android.os.UserHandle; import android.permission.LegacyPermissionManager; import android.platform.test.flag.junit.SetFlagsRule; import android.provider.DeviceConfig; import android.provider.Settings; import android.telephony.SubscriptionManager; Loading @@ -50,11 +52,13 @@ import android.test.mock.MockContentResolver; import androidx.test.filters.SmallTest; import com.android.internal.telephony.flags.FeatureFlags; import com.android.internal.telephony.flags.Flags; import com.android.internal.util.test.FakeSettingsProvider; import com.android.server.pm.permission.LegacyPermissionManagerService; import org.junit.After; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import java.lang.reflect.Field; Loading @@ -71,6 +75,9 @@ public class TelephonyPermissionsTest { private static final String FEATURE = "com.example.feature"; private static final String MSG = "message"; @Rule public final SetFlagsRule mSetFlagsRule = new SetFlagsRule(); // Mocked classes private Context mMockContext; private AppOpsManager mMockAppOps; Loading @@ -90,6 +97,7 @@ public class TelephonyPermissionsTest { @Before public void setUp() throws Exception { mSetFlagsRule.enableFlags(Flags.FLAG_SUPPORT_PHONE_UID_CHECK_FOR_MULTIUSER); mMockContext = mock(Context.class); mMockAppOps = mock(AppOpsManager.class); mMockSubscriptionManager = mock(SubscriptionManager.class); Loading Loading @@ -558,6 +566,38 @@ public class TelephonyPermissionsTest { UserHandle.SYSTEM)); } @Test public void testIsSystemOrPhone_systemUser() { assertTrue(TelephonyPermissions.isSystemOrPhone(Process.SYSTEM_UID)); assertTrue(TelephonyPermissions.isSystemOrPhone(Process.PHONE_UID)); assertFalse(TelephonyPermissions.isSystemOrPhone(1002)); } @Test public void testIsSystemOrPhone_nonSystemUser() { assertTrue(TelephonyPermissions.isSystemOrPhone(1001000)); assertTrue(TelephonyPermissions.isSystemOrPhone(1001001)); assertFalse(TelephonyPermissions.isSystemOrPhone(1001002)); } @Test public void testIsRootOrShell_systemUser() { assertTrue(TelephonyPermissions.isRootOrShell(Process.ROOT_UID)); assertTrue(TelephonyPermissions.isRootOrShell(Process.SHELL_UID)); assertFalse(TelephonyPermissions.isRootOrShell(1002)); } @Test public void testIsRootOrShell_nonSystemUser() { assertTrue(TelephonyPermissions.isRootOrShell(1000000)); assertTrue(TelephonyPermissions.isRootOrShell(1002000)); assertFalse(TelephonyPermissions.isRootOrShell(1001002)); } // Put mMockTelephony into service cache so that TELEPHONY_SUPPLIER will get it. private void setTelephonyMockAsService() throws Exception { when(mMockTelephonyBinder.queryLocalInterface(anyString())).thenReturn(mMockTelephony); Loading