diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2023-06-17 05:24:43 +0000 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2023-06-17 05:24:43 +0000 |
commit | c095ba789cf601378ca0f06f016e756a525882ee (patch) | |
tree | c82e4130d65f14b0c80ee71f9f3b7f6de24c1141 | |
parent | 7ee90ce3b55e810e0864e291b78502d863df9efa (diff) | |
parent | 8c6f2a0faab522ea36084077fbf5ff9b6955bbf6 (diff) | |
download | BlockedNumberProvider-c095ba789cf601378ca0f06f016e756a525882ee.tar.gz |
Snap for 10341497 from 8c6f2a0faab522ea36084077fbf5ff9b6955bbf6 to udc-qpr1-releaseandroid-14.0.0_r27android-14.0.0_r26android-14.0.0_r25android-14.0.0_r24android-14.0.0_r23android-14.0.0_r22android-14.0.0_r21android-14.0.0_r20android-14.0.0_r19android-14.0.0_r18android-14.0.0_r17android-14.0.0_r16android14-qpr1-s2-releaseandroid14-qpr1-release
Change-Id: I8c929b132325969cd789ed8567a45edb2cb38c48
-rw-r--r-- | src/com/android/providers/blockednumber/BlockedNumberProvider.java | 7 | ||||
-rw-r--r-- | tests/src/com/android/providers/blockednumber/BlockedNumberProviderTest.java | 24 |
2 files changed, 30 insertions, 1 deletions
diff --git a/src/com/android/providers/blockednumber/BlockedNumberProvider.java b/src/com/android/providers/blockednumber/BlockedNumberProvider.java index 830847c..2e84d66 100644 --- a/src/com/android/providers/blockednumber/BlockedNumberProvider.java +++ b/src/com/android/providers/blockednumber/BlockedNumberProvider.java @@ -40,6 +40,7 @@ import android.os.CancellationSignal; import android.os.PersistableBundle; import android.os.Process; import android.os.UserHandle; +import android.os.UserManager; import android.provider.BlockedNumberContract; import android.provider.BlockedNumberContract.SystemContract; import android.telecom.TelecomManager; @@ -453,7 +454,11 @@ public class BlockedNumberProvider extends ContentProvider { } private boolean canCurrentUserBlockUsers() { - return getContext().getUserId() == UserHandle.USER_SYSTEM; + int currentUserId = getContext().getUserId(); + UserManager userManager = getContext().getSystemService(UserManager.class); + // Allow USER_SYSTEM and managed profile to block users + return (currentUserId == UserHandle.USER_SYSTEM || + (userManager != null && userManager.isManagedProfile(currentUserId))); } private void notifyEmergencyContact() { diff --git a/tests/src/com/android/providers/blockednumber/BlockedNumberProviderTest.java b/tests/src/com/android/providers/blockednumber/BlockedNumberProviderTest.java index 3a88a85..6df43dc 100644 --- a/tests/src/com/android/providers/blockednumber/BlockedNumberProviderTest.java +++ b/tests/src/com/android/providers/blockednumber/BlockedNumberProviderTest.java @@ -22,6 +22,7 @@ import static org.mockito.Matchers.anyInt; import static org.mockito.Matchers.anyString; import static org.mockito.Matchers.eq; import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.mock; import static org.mockito.Mockito.reset; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.times; @@ -41,6 +42,7 @@ import android.net.Uri; import android.os.Bundle; import android.os.PersistableBundle; import android.os.SystemProperties; +import android.os.UserManager; import android.provider.BlockedNumberContract; import android.provider.BlockedNumberContract.BlockedNumbers; import android.provider.BlockedNumberContract.SystemContract; @@ -64,6 +66,7 @@ import java.util.concurrent.TimeUnit; public class BlockedNumberProviderTest extends AndroidTestCase { private MyMockContext mMockContext; private ContentResolver mResolver; + private UserManager mMockUserManager; @Override protected void setUp() throws Exception { @@ -73,7 +76,9 @@ public class BlockedNumberProviderTest extends AndroidTestCase { mMockContext = spy(new MyMockContext(getContext())); mMockContext.initializeContext(); mResolver = mMockContext.getContentResolver(); + mMockUserManager = mock(UserManager.class); + when(mMockContext.getSystemService(UserManager.class)).thenReturn(mMockUserManager); doReturn(USER_SYSTEM).when(mMockContext).getUserId(); when(mMockContext.mCountryDetector.detectCountry()) .thenReturn(new Country("US", Country.COUNTRY_SOURCE_LOCATION)); @@ -727,6 +732,25 @@ public class BlockedNumberProviderTest extends AndroidTestCase { } } + public void testCanCurrentUserBlockUsers_systemUser() { + doReturn(USER_SYSTEM).when(mMockContext).getUserId(); + assertTrue(BlockedNumberContract.canCurrentUserBlockNumbers(mMockContext)); + } + + public void testCanCurrentUserBlockUsers_managedProfile() { + int managedProfileUserId = 10; + doReturn(managedProfileUserId).when(mMockContext).getUserId(); + doReturn(true).when(mMockUserManager).isManagedProfile(eq(managedProfileUserId)); + assertTrue(BlockedNumberContract.canCurrentUserBlockNumbers(mMockContext)); + } + + public void testCanCurrentUserBlockUsers_secondaryUser() { + int secondaryUserId = 11; + doReturn(secondaryUserId).when(mMockContext).getUserId(); + doReturn(false).when(mMockUserManager).isManagedProfile(eq(secondaryUserId)); + assertFalse(BlockedNumberContract.canCurrentUserBlockNumbers(mMockContext)); + } + private void assertIsBlocked(boolean expected, String phoneNumber) { assertEquals(expected, BlockedNumberContract.isBlocked(mMockContext, phoneNumber)); } |