Return only subscriptions associted with user for work profile. am: 79728a9bb1
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/opt/telephony/+/23846471
Change-Id: Icbe248b648e044e35a891a21799c4c197ff8e9ac
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/src/java/com/android/internal/telephony/subscription/SubscriptionManagerService.java b/src/java/com/android/internal/telephony/subscription/SubscriptionManagerService.java
index f9720df..8e773c0 100644
--- a/src/java/com/android/internal/telephony/subscription/SubscriptionManagerService.java
+++ b/src/java/com/android/internal/telephony/subscription/SubscriptionManagerService.java
@@ -46,6 +46,7 @@
import android.os.RemoteException;
import android.os.TelephonyServiceManager;
import android.os.UserHandle;
+import android.os.UserManager;
import android.provider.Settings;
import android.provider.Telephony.SimInfo;
import android.service.carrier.CarrierIdentifier;
@@ -3665,6 +3666,15 @@
}
}
+ UserManager userManager = mContext.getSystemService(UserManager.class);
+ if ((userManager != null)
+ && (userManager.isManagedProfile(userHandle.getIdentifier()))) {
+ // For work profile, return subscriptions associated only with work profile
+ return subscriptionsAssociatedWithUser;
+ }
+
+ // For all other profiles, if subscriptionsAssociatedWithUser is empty return all the
+ // subscriptionsWithNoAssociation.
return subscriptionsAssociatedWithUser.isEmpty() ?
subscriptionsWithNoAssociation : subscriptionsAssociatedWithUser;
} finally {
diff --git a/tests/telephonytests/src/com/android/internal/telephony/subscription/SubscriptionManagerServiceTest.java b/tests/telephonytests/src/com/android/internal/telephony/subscription/SubscriptionManagerServiceTest.java
index 38b495a..3abfac7 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/subscription/SubscriptionManagerServiceTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/subscription/SubscriptionManagerServiceTest.java
@@ -146,6 +146,8 @@
private static final UserHandle FAKE_USER_HANDLE = new UserHandle(12);
+ private static final UserHandle FAKE_MANAGED_PROFILE_USER_HANDLE = new UserHandle(13);
+
// mocked
private SubscriptionManagerServiceCallback mMockedSubscriptionManagerServiceCallback;
private EuiccController mEuiccController;
@@ -212,6 +214,9 @@
setIdentifierAccess(false);
setPhoneNumberAccess(PackageManager.PERMISSION_DENIED);
+ doReturn(true).when(mUserManager)
+ .isManagedProfile(eq(FAKE_MANAGED_PROFILE_USER_HANDLE.getIdentifier()));
+
logd("SubscriptionManagerServiceTest -Setup!");
}
@@ -1081,6 +1086,13 @@
assertThat(mSubscriptionManagerServiceUT.isSubscriptionAssociatedWithUser(1,
FAKE_USER_HANDLE)).isEqualTo(true);
+
+ // Work profile is not associated with any subscription
+ associatedSubInfoList = mSubscriptionManagerServiceUT
+ .getSubscriptionInfoListAssociatedWithUser(FAKE_MANAGED_PROFILE_USER_HANDLE);
+ assertThat(associatedSubInfoList.size()).isEqualTo(0);
+ assertThat(mSubscriptionManagerServiceUT.isSubscriptionAssociatedWithUser(1,
+ FAKE_MANAGED_PROFILE_USER_HANDLE)).isEqualTo(false);
}
@Test