diff options
author | Brad Ebinger <breadley@google.com> | 2020-02-27 19:11:11 -0800 |
---|---|---|
committer | Brad Ebinger <breadley@google.com> | 2020-03-03 17:58:19 -0800 |
commit | 148b26fb19acb58faacf026bdf53b04e8dbdb27c (patch) | |
tree | 95ffbed83f9ea9eac896169cafd5e5fe5bc81c7c /rcs/rcsservice/src | |
parent | 01fae0642e1c54b47b5a12e676760ca58021950b (diff) | |
download | ims-148b26fb19acb58faacf026bdf53b04e8dbdb27c.tar.gz |
Turn off polling until user opt-in occurs
Deny contact capability requests until opt-in
occurs.
Bug: 111305845
Test: atest CtsTelephonyTestCases;manual
Change-Id: I3acf2c5b16239e97cd445d5f9cd04002c0d94707
Diffstat (limited to 'rcs/rcsservice/src')
-rw-r--r-- | rcs/rcsservice/src/com/android/service/ims/RcsSettingUtils.java | 17 | ||||
-rw-r--r-- | rcs/rcsservice/src/com/android/service/ims/presence/PresenceSubscriber.java | 12 |
2 files changed, 29 insertions, 0 deletions
diff --git a/rcs/rcsservice/src/com/android/service/ims/RcsSettingUtils.java b/rcs/rcsservice/src/com/android/service/ims/RcsSettingUtils.java index 9ef176e..13e0f42 100644 --- a/rcs/rcsservice/src/com/android/service/ims/RcsSettingUtils.java +++ b/rcs/rcsservice/src/com/android/service/ims/RcsSettingUtils.java @@ -35,7 +35,9 @@ import android.telephony.CarrierConfigManager; import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionManager; import android.telephony.ims.ImsException; +import android.telephony.ims.ImsManager; import android.telephony.ims.ImsMmTelManager; +import android.telephony.ims.ImsRcsManager; import android.telephony.ims.ProvisioningManager; import android.telephony.ims.feature.MmTelFeature; import android.telephony.ims.stub.ImsRegistrationImplBase; @@ -132,6 +134,21 @@ public class RcsSettingUtils { return isProvisioned; } + public static boolean hasUserEnabledContactDiscovery(Context context, int subId) { + if (subId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) { + logger.debug("hasUserEnabledContactDiscovery: no valid subscriptions!"); + return false; + } + try { + ImsManager imsManager = context.getSystemService(ImsManager.class); + ImsRcsManager rcsManager = imsManager.getImsRcsManager(subId); + return rcsManager.getUceAdapter().isUceSettingEnabled(); + } catch (Exception e) { + logger.warn("hasUserEnabledContactDiscovery: Exception = " + e.getMessage()); + return false; + } + } + public static int getSIPT1Timer(int subId) { int sipT1Timer = 0; try { diff --git a/rcs/rcsservice/src/com/android/service/ims/presence/PresenceSubscriber.java b/rcs/rcsservice/src/com/android/service/ims/presence/PresenceSubscriber.java index 2071567..c804675 100644 --- a/rcs/rcsservice/src/com/android/service/ims/presence/PresenceSubscriber.java +++ b/rcs/rcsservice/src/com/android/service/ims/presence/PresenceSubscriber.java @@ -132,6 +132,12 @@ public class PresenceSubscriber extends PresenceBase { return ResultCode.SUBSCRIBE_NOT_REGISTERED; } + if (!RcsSettingUtils.hasUserEnabledContactDiscovery(mContext, mAssociatedSubscription)) { + logger.warn("requestCapability request has been denied due to contact discovery being " + + "disabled by the user"); + return ResultCode.ERROR_SERVICE_NOT_ENABLED; + } + int ret = subscriber.getStackStatusForCapabilityRequest(); if (ret < ResultCode.SUCCESS) { logger.error("requestCapability ret=" + ret); @@ -197,6 +203,12 @@ public class PresenceSubscriber extends PresenceBase { return ret; } + if (!RcsSettingUtils.hasUserEnabledContactDiscovery(mContext, mAssociatedSubscription)) { + logger.warn("requestCapability request has been denied due to contact discovery being " + + "disabled by the user"); + return ResultCode.ERROR_SERVICE_NOT_ENABLED; + } + if(!forceToNetwork){ logger.debug("check if we can use the value in cache"); int availabilityExpire = |