From 5c2d62232ca008de55ce2c8735eb9701ad12b8a9 Mon Sep 17 00:00:00 2001 From: Jack Yu Date: Tue, 22 Aug 2023 16:34:23 -0700 Subject: Limited profiles to access only associated subscriptions The profile can only access its associated subscriptions. Default voice/sms subscription ids would be profile dependent. The behavior does not change if no association is set. Bug: 296076674 Test: assign both SIMs to a profile + assign each to profiles to make call and send messages Change-Id: Ieb19ff6d917cc6b73773fae5e037237a49a0dfb7 --- .../android/telephony/SubscriptionManager.java | 22 +++++++++++----------- .../java/com/android/internal/telephony/ISub.aidl | 3 +++ 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/telephony/java/android/telephony/SubscriptionManager.java b/telephony/java/android/telephony/SubscriptionManager.java index 8e90fe7ea975..f8608b8fead2 100644 --- a/telephony/java/android/telephony/SubscriptionManager.java +++ b/telephony/java/android/telephony/SubscriptionManager.java @@ -265,8 +265,8 @@ public class SubscriptionManager { } } - private static VoidPropertyInvalidatedCache sGetDefaultSubIdCache = - new VoidPropertyInvalidatedCache<>(ISub::getDefaultSubId, + private static IntegerPropertyInvalidatedCache sGetDefaultSubIdCacheAsUser = + new IntegerPropertyInvalidatedCache<>(ISub::getDefaultSubIdAsUser, CACHE_KEY_SUBSCRIPTION_MANAGER_SERVICE_PROPERTY, INVALID_SUBSCRIPTION_ID); @@ -275,8 +275,8 @@ public class SubscriptionManager { CACHE_KEY_SUBSCRIPTION_MANAGER_SERVICE_PROPERTY, INVALID_SUBSCRIPTION_ID); - private static VoidPropertyInvalidatedCache sGetDefaultSmsSubIdCache = - new VoidPropertyInvalidatedCache<>(ISub::getDefaultSmsSubId, + private static IntegerPropertyInvalidatedCache sGetDefaultSmsSubIdCacheAsUser = + new IntegerPropertyInvalidatedCache<>(ISub::getDefaultSmsSubIdAsUser, CACHE_KEY_SUBSCRIPTION_MANAGER_SERVICE_PROPERTY, INVALID_SUBSCRIPTION_ID); @@ -2309,7 +2309,7 @@ public class SubscriptionManager { * @return the "system" default subscription id. */ public static int getDefaultSubscriptionId() { - return sGetDefaultSubIdCache.query(null); + return sGetDefaultSubIdCacheAsUser.query(Process.myUserHandle().getIdentifier()); } /** @@ -2325,7 +2325,7 @@ public class SubscriptionManager { try { ISub iSub = TelephonyManager.getSubscriptionService(); if (iSub != null) { - subId = iSub.getDefaultVoiceSubId(); + subId = iSub.getDefaultVoiceSubIdAsUser(Process.myUserHandle().getIdentifier()); } } catch (RemoteException ex) { // ignore it @@ -2397,7 +2397,7 @@ public class SubscriptionManager { * @return the default SMS subscription Id. */ public static int getDefaultSmsSubscriptionId() { - return sGetDefaultSmsSubIdCache.query(null); + return sGetDefaultSmsSubIdCacheAsUser.query(Process.myUserHandle().getIdentifier()); } /** @@ -3927,10 +3927,10 @@ public class SubscriptionManager { * @hide */ public static void disableCaching() { - sGetDefaultSubIdCache.disableLocal(); + sGetDefaultSubIdCacheAsUser.disableLocal(); sGetDefaultDataSubIdCache.disableLocal(); sGetActiveDataSubscriptionIdCache.disableLocal(); - sGetDefaultSmsSubIdCache.disableLocal(); + sGetDefaultSmsSubIdCacheAsUser.disableLocal(); sGetSlotIndexCache.disableLocal(); sGetSubIdCache.disableLocal(); sGetPhoneIdCache.disableLocal(); @@ -3941,10 +3941,10 @@ public class SubscriptionManager { * * @hide */ public static void clearCaches() { - sGetDefaultSubIdCache.clear(); + sGetDefaultSubIdCacheAsUser.clear(); sGetDefaultDataSubIdCache.clear(); sGetActiveDataSubscriptionIdCache.clear(); - sGetDefaultSmsSubIdCache.clear(); + sGetDefaultSmsSubIdCacheAsUser.clear(); sGetSlotIndexCache.clear(); sGetSubIdCache.clear(); sGetPhoneIdCache.clear(); diff --git a/telephony/java/com/android/internal/telephony/ISub.aidl b/telephony/java/com/android/internal/telephony/ISub.aidl index a5a23e8659d8..d2dbeb7aff74 100644 --- a/telephony/java/com/android/internal/telephony/ISub.aidl +++ b/telephony/java/com/android/internal/telephony/ISub.aidl @@ -239,6 +239,7 @@ interface ISub { int getSubId(int slotIndex); int getDefaultSubId(); + int getDefaultSubIdAsUser(int userId); int getPhoneId(int subId); @@ -251,10 +252,12 @@ interface ISub { void setDefaultDataSubId(int subId); int getDefaultVoiceSubId(); + int getDefaultVoiceSubIdAsUser(int userId); void setDefaultVoiceSubId(int subId); int getDefaultSmsSubId(); + int getDefaultSmsSubIdAsUser(int userId); void setDefaultSmsSubId(int subId); -- cgit v1.2.3-59-g8ed1b