Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0860f1b1 authored by Hakjun Choi's avatar Hakjun Choi
Browse files

Add Provisioning bundle for indicating if MMTEL/RCS provisioning is required

Bug: 214885306
Test: CTS ImsServiceTest#testProvisioningManagerWhen(Mmtel/Rcs)ProvisionIs(Not)Required

Change-Id: I9e0eff60dde4a9f4ea254fa5f8efedd9f5881632
Merged-In: I9e0eff60dde4a9f4ea254fa5f8efedd9f5881632
parent 893cc940
Loading
Loading
Loading
Loading
+12 −3
Original line number Diff line number Diff line
@@ -39769,11 +39769,11 @@ package android.telephony {
    field public static final String KEY_CARRIER_SUPPORTS_SS_OVER_UT_BOOL = "carrier_supports_ss_over_ut_bool";
    field public static final String KEY_CARRIER_USE_IMS_FIRST_FOR_EMERGENCY_BOOL = "carrier_use_ims_first_for_emergency_bool";
    field public static final String KEY_CARRIER_USSD_METHOD_INT = "carrier_ussd_method_int";
    field public static final String KEY_CARRIER_UT_PROVISIONING_REQUIRED_BOOL = "carrier_ut_provisioning_required_bool";
    field @Deprecated public static final String KEY_CARRIER_UT_PROVISIONING_REQUIRED_BOOL = "carrier_ut_provisioning_required_bool";
    field public static final String KEY_CARRIER_VOLTE_AVAILABLE_BOOL = "carrier_volte_available_bool";
    field public static final String KEY_CARRIER_VOLTE_OVERRIDE_WFC_PROVISIONING_BOOL = "carrier_volte_override_wfc_provisioning_bool";
    field public static final String KEY_CARRIER_VOLTE_PROVISIONED_BOOL = "carrier_volte_provisioned_bool";
    field public static final String KEY_CARRIER_VOLTE_PROVISIONING_REQUIRED_BOOL = "carrier_volte_provisioning_required_bool";
    field @Deprecated public static final String KEY_CARRIER_VOLTE_PROVISIONED_BOOL = "carrier_volte_provisioned_bool";
    field @Deprecated public static final String KEY_CARRIER_VOLTE_PROVISIONING_REQUIRED_BOOL = "carrier_volte_provisioning_required_bool";
    field public static final String KEY_CARRIER_VOLTE_TTY_SUPPORTED_BOOL = "carrier_volte_tty_supported_bool";
    field public static final String KEY_CARRIER_VT_AVAILABLE_BOOL = "carrier_vt_available_bool";
    field @Deprecated public static final String KEY_CARRIER_VVM_PACKAGE_NAME_STRING = "carrier_vvm_package_name_string";
@@ -40002,14 +40002,23 @@ package android.telephony {
  }
  public static final class CarrierConfigManager.Ims {
    field public static final String KEY_CAPABILITY_CALL_COMPOSER_INT_ARRAY = "ims.key_capability_type_call_composer_int_array";
    field public static final String KEY_CAPABILITY_TYPE_OPTIONS_UCE_INT_ARRAY = "ims.key_capability_type_options_uce_int_array";
    field public static final String KEY_CAPABILITY_TYPE_PRESENCE_UCE_INT_ARRAY = "ims.key_capability_type_presence_uce_int_array";
    field public static final String KEY_CAPABILITY_TYPE_SMS_INT_ARRAY = "ims.key_capability_type_sms_int_array";
    field public static final String KEY_CAPABILITY_TYPE_UT_INT_ARRAY = "ims.key_capability_type_ut_int_array";
    field public static final String KEY_CAPABILITY_TYPE_VIDEO_INT_ARRAY = "ims.key_capability_type_video_int_array";
    field public static final String KEY_CAPABILITY_TYPE_VOICE_INT_ARRAY = "ims.key_capability_type_voice_int_array";
    field public static final String KEY_ENABLE_PRESENCE_CAPABILITY_EXCHANGE_BOOL = "ims.enable_presence_capability_exchange_bool";
    field public static final String KEY_ENABLE_PRESENCE_GROUP_SUBSCRIBE_BOOL = "ims.enable_presence_group_subscribe_bool";
    field public static final String KEY_ENABLE_PRESENCE_PUBLISH_BOOL = "ims.enable_presence_publish_bool";
    field public static final String KEY_IMS_SINGLE_REGISTRATION_REQUIRED_BOOL = "ims.ims_single_registration_required_bool";
    field public static final String KEY_MMTEL_REQUIRES_PROVISIONING_BUNDLE = "ims.mmtel_requires_provisioning_bundle";
    field public static final String KEY_NON_RCS_CAPABILITIES_CACHE_EXPIRATION_SEC_INT = "ims.non_rcs_capabilities_cache_expiration_sec_int";
    field public static final String KEY_PREFIX = "ims.";
    field public static final String KEY_RCS_BULK_CAPABILITY_EXCHANGE_BOOL = "ims.rcs_bulk_capability_exchange_bool";
    field public static final String KEY_RCS_FEATURE_TAG_ALLOWED_STRING_ARRAY = "ims.rcs_feature_tag_allowed_string_array";
    field public static final String KEY_RCS_REQUIRES_PROVISIONING_BUNDLE = "ims.rcs_requires_provisioning_bundle";
    field public static final String KEY_WIFI_OFF_DEFERRING_TIME_MILLIS_INT = "ims.wifi_off_deferring_time_millis_int";
  }
+103 −20
Original line number Diff line number Diff line
@@ -168,7 +168,10 @@ public class CarrierConfigManager {
    /**
     * This flag specifies whether VoLTE availability is based on provisioning. By default this is
     * false.
     * Used for UCE to determine if EAB provisioning checks should be based on provisioning.
     * @deprecated Use {@link Ims#KEY_MMTEL_REQUIRES_PROVISIONING_BUNDLE} instead.
     */
    @Deprecated
    public static final String
            KEY_CARRIER_VOLTE_PROVISIONED_BOOL = "carrier_volte_provisioned_bool";

@@ -858,7 +861,12 @@ public class CarrierConfigManager {
    /**
     * Flag specifying whether provisioning is required for VoLTE, Video Telephony, and WiFi
     * Calling.

     * Combines VoLTE, VT, VoWiFI calling provisioning into one parameter.
     * @deprecated Use {@link Ims#KEY_MMTEL_REQUIRES_PROVISIONING_BUNDLE} instead for
     * finer-grained control.
     */
    @Deprecated
    public static final String KEY_CARRIER_VOLTE_PROVISIONING_REQUIRED_BOOL
            = "carrier_volte_provisioning_required_bool";

@@ -872,7 +880,11 @@ public class CarrierConfigManager {
     * and enable the UT over IMS capability for the subscription when the subscription is loaded.
     *
     * The default value for this key is {@code false}.
     *
     * @deprecated Use {@link Ims#KEY_MMTEL_REQUIRES_PROVISIONING_BUNDLE} instead for
     * determining if UT requires provisioning.
     */
    @Deprecated
    public static final String KEY_CARRIER_UT_PROVISIONING_REQUIRED_BOOL =
            "carrier_ut_provisioning_required_bool";

@@ -4632,34 +4644,93 @@ public class CarrierConfigManager {
                KEY_PREFIX + "rcs_request_retry_interval_millis_long";

        /**
         * An array of strings, each entry contains a MMTEL capability and registration
         * technology tuple that requires provisioning. If a tuple is not present, the
         * A bundle which specifies the MMTEL capability and registration technology
         * that requires provisioning. If a tuple is not present, the
         * framework will not require that the tuple requires provisioning before
         * enabling the capability.
         * <p>
         * Format for each tuple is two integers separated by a comma. The first
         * integer is an integer defined in
         * {@link MmTelFeature.MmTelCapabilities.MmTelCapability} and the second integer is
         * <p> Possible keys in this bundle are
         * <ul>
         *     <li>{@link #KEY_CAPABILITY_TYPE_VOICE_INT_ARRAY}</li>
         *     <li>{@link #KEY_CAPABILITY_TYPE_VIDEO_INT_ARRAY}</li>
         *     <li>{@link #KEY_CAPABILITY_TYPE_UT_INT_ARRAY}</li>
         *     <li>{@link #KEY_CAPABILITY_TYPE_SMS_INT_ARRAY}</li>
         *     <li>{@link #KEY_CAPABILITY_CALL_COMPOSER_INT_ARRAY}</li>
         * </ul>
         * <p> The values are defined in
         * {@link android.telephony.ims.stub.ImsRegistrationImplBase.ImsRegistrationTech}
         * @hide
         */
        public static final String KEY_MMTEL_REQUIRES_PROVISIONING_STRING_ARRAY =
                KEY_PREFIX + "mmtel_requires_provisioning_string_array";
        public static final String KEY_MMTEL_REQUIRES_PROVISIONING_BUNDLE =
                KEY_PREFIX + "mmtel_requires_provisioning_bundle";

        /**
         * This MmTelFeature supports Voice calling (IR.92)
         * @see MmTelFeature.MmTelCapabilities#CAPABILITY_TYPE_VOICE
         */
        public static final String KEY_CAPABILITY_TYPE_VOICE_INT_ARRAY =
                KEY_PREFIX + "key_capability_type_voice_int_array";

        /**
         * This MmTelFeature supports Video (IR.94)
         * @see MmTelFeature.MmTelCapabilities#CAPABILITY_TYPE_VIDEO
         */
        public static final String KEY_CAPABILITY_TYPE_VIDEO_INT_ARRAY =
                KEY_PREFIX + "key_capability_type_video_int_array";

        /**
         * This MmTelFeature supports XCAP over Ut for supplementary services. (IR.92)
         * @see MmTelFeature.MmTelCapabilities#CAPABILITY_TYPE_UT
         */
        public static final String KEY_CAPABILITY_TYPE_UT_INT_ARRAY =
                KEY_PREFIX + "key_capability_type_ut_int_array";

        /**
         * This MmTelFeature supports SMS (IR.92)
         * @see MmTelFeature.MmTelCapabilities#CAPABILITY_TYPE_SMS
         */
        public static final String KEY_CAPABILITY_TYPE_SMS_INT_ARRAY =
                KEY_PREFIX + "key_capability_type_sms_int_array";

        /**
         * An array of strings, each entry contains a RCS capability and registration
         * technology tuple that requires provisioning. If a tuple is not present, the
         * This MmTelFeature supports Call Composer (section 2.4 of RCC.20)
         * @see MmTelFeature.MmTelCapabilities#CAPABILITY_TYPE_CALL_COMPOSER
         */
        public static final String KEY_CAPABILITY_CALL_COMPOSER_INT_ARRAY =
                KEY_PREFIX + "key_capability_type_call_composer_int_array";

        /**
         * A bundle which specifies the RCS capability and registration technology
         * that requires provisioning. If a tuple is not present, the
         * framework will not require that the tuple requires provisioning before
         * enabling the capability.
         * <p>
         * Format for each tuple is two integers separated by a comma. The first
         * integer is an integer defined in
         * {@link RcsFeature.RcsImsCapabilities.RcsImsCapabilityFlag} and the second integer is
         * <p> Possible keys in this bundle are
         * <ul>
         *     <li>{@link #KEY_CAPABILITY_TYPE_OPTIONS_UCE_INT_ARRAY}</li>
         *     <li>{@link #KEY_CAPABILITY_TYPE_PRESENCE_UCE_INT_ARRAY}</li>
         * </ul>
         * <p> The values are defined in
         * {@link android.telephony.ims.stub.ImsRegistrationImplBase.ImsRegistrationTech}
         * @hide
         */
        public static final String KEY_RCS_REQUIRES_PROVISIONING_STRING_ARRAY =
                KEY_PREFIX + "rcs_requires_provisioning_string_array";
        public static final String KEY_RCS_REQUIRES_PROVISIONING_BUNDLE =
                KEY_PREFIX + "rcs_requires_provisioning_bundle";

        /**
         * This carrier supports User Capability Exchange using SIP OPTIONS as defined by the
         * framework. If set, the RcsFeature should support capability exchange using SIP OPTIONS.
         * If not set, this RcsFeature should not service capability requests.
         * @see RcsFeature.RcsImsCapabilities#CAPABILITY_TYPE_OPTIONS_UCE
         */
        public static final String KEY_CAPABILITY_TYPE_OPTIONS_UCE_INT_ARRAY =
                KEY_PREFIX + "key_capability_type_options_uce_int_array";

        /**
         * This carrier supports User Capability Exchange using a presence server as defined by the
         * framework. If set, the RcsFeature should support capability exchange using a presence
         * server. If not set, this RcsFeature should not publish capabilities or service capability
         * requests using presence.
         * @see RcsFeature.RcsImsCapabilities#CAPABILITY_TYPE_PRESENCE_UCE
         */
        public static final String KEY_CAPABILITY_TYPE_PRESENCE_UCE_INT_ARRAY =
                KEY_PREFIX + "key_capability_type_presence_uce_int_array";

        private Ims() {}

@@ -4696,8 +4767,20 @@ public class CarrierConfigManager {
                    "+g.3gpp.iari-ref=\"urn%3Aurn-7%3A3gpp-application.ims.iari.rcs.chatbot.sa\"",
                    "+g.gsma.rcs.botversion=\"#=1,#=2\"",
                    "+g.gsma.rcs.cpimext"});
            defaults.putStringArray(KEY_MMTEL_REQUIRES_PROVISIONING_STRING_ARRAY, new String[] {});
            defaults.putStringArray(KEY_RCS_REQUIRES_PROVISIONING_STRING_ARRAY, new String[] {});

            /**
             * @see #KEY_MMTEL_REQUIRES_PROVISIONING_BUNDLE
             */
            PersistableBundle mmtel_requires_provisioning_int_array = new PersistableBundle();
            defaults.putPersistableBundle(
                    KEY_MMTEL_REQUIRES_PROVISIONING_BUNDLE, mmtel_requires_provisioning_int_array);

            /**
             * @see #KEY_RCS_REQUIRES_PROVISIONING_BUNDLE
             */
            PersistableBundle rcs_requires_provisioning_int_array = new PersistableBundle();
            defaults.putPersistableBundle(
                    KEY_RCS_REQUIRES_PROVISIONING_BUNDLE, rcs_requires_provisioning_int_array);

            return defaults;
        }
+4 −4
Original line number Diff line number Diff line
@@ -1449,8 +1449,7 @@ public class ProvisioningManager {
     *     <li>{@link TelephonyManager#hasCarrierPrivileges}).</li>
     * </ul>
     *
     * @see CarrierConfigManager#KEY_CARRIER_UT_PROVISIONING_REQUIRED_BOOL
     * @see CarrierConfigManager#KEY_CARRIER_VOLTE_PROVISIONING_REQUIRED_BOOL
     * @see CarrierConfigManager.Ims#KEY_MMTEL_REQUIRES_PROVISIONING_BUNDLE
     * @param isProvisioned true if the device is provisioned for UT over IMS, false otherwise.
     */
    @WorkerThread
@@ -1483,8 +1482,7 @@ public class ProvisioningManager {
     *         {@link TelephonyManager#hasCarrierPrivileges()}).</li>
     * </ul>
     *
     * @see CarrierConfigManager#KEY_CARRIER_UT_PROVISIONING_REQUIRED_BOOL
     * @see CarrierConfigManager#KEY_CARRIER_VOLTE_PROVISIONING_REQUIRED_BOOL
     * @see CarrierConfigManager.Ims#KEY_MMTEL_REQUIRES_PROVISIONING_BUNDLE
     * @return true if the device is provisioned for the capability or does not require
     * provisioning, false if the capability does require provisioning and has not been
     * provisioned yet.
@@ -1545,6 +1543,7 @@ public class ProvisioningManager {
     *         {@link TelephonyManager#hasCarrierPrivileges()}).</li>
     * </ul>
     *
     * @see CarrierConfigManager.Ims#KEY_RCS_REQUIRES_PROVISIONING_BUNDLE
     * @return true if the device is provisioned for the capability or does not require
     * provisioning, false if the capability does require provisioning and has not been
     * provisioned yet.
@@ -1614,6 +1613,7 @@ public class ProvisioningManager {
     *         {@link TelephonyManager#hasCarrierPrivileges()}).</li>
     * </ul>
     *
     * @see CarrierConfigManager.Ims#KEY_RCS_REQUIRES_PROVISIONING_BUNDLE
     * @param isProvisioned true if the device is provisioned for the RCS capability specified,
     *                      false otherwise.
     */