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

Commit 2e8259c6 authored by Shuo Qian's avatar Shuo Qian Committed by sqian
Browse files

Registrate the call composer capablity while loading carrier config

 or user setting changes

Test: treehugger
Bug: 173437870
Change-Id: Iebcf2a8125056bcaa9dac5bbccb2f23697cdd9e0
Merged-In: Iebcf2a8125056bcaa9dac5bbccb2f23697cdd9e0
(cherry picked from commit 45aa2c0d)
parent cffdd669
Loading
Loading
Loading
Loading
+34 −0
Original line number Diff line number Diff line
@@ -865,6 +865,14 @@ public class ImsManager implements FeatureUpdates {
                || setting == ProvisioningManager.PROVISIONING_VALUE_ENABLED);
    }

    /**
     * Returns whether the user sets call composer setting per sub.
     */
    public boolean isCallComposerEnabledByUser() {
        return new TelephonyManager(mContext, getSubId()).getCallComposerStatus() ==
                TelephonyManager.CALL_COMPOSER_STATUS_ON;
    }

    /**
     * Change persistent VT enabled setting
     *
@@ -1466,6 +1474,7 @@ public class ImsManager implements FeatureUpdates {
            updateVolteFeatureValue(request);
            updateWfcFeatureAndProvisionedValues(request);
            updateVideoCallFeatureValue(request);
            updateCallComposerFeatureValue(request);
            // Only turn on IMS for RTT if there's an active subscription present. If not, the
            // modem will be in emergency-call-only mode and will use separate signaling to
            // establish an RTT emergency call.
@@ -1642,6 +1651,31 @@ public class ImsManager implements FeatureUpdates {
        }
    }

    /**
     * Update call composer capability
     */
    private void updateCallComposerFeatureValue(CapabilityChangeRequest request) {
        boolean isUserSetEnabled = isCallComposerEnabledByUser();
        boolean isCarrierConfigEnabled = getBooleanCarrierConfig(
                CarrierConfigManager.KEY_SUPPORTS_CALL_COMPOSER_BOOL);

        boolean isFeatureOn = isUserSetEnabled && isCarrierConfigEnabled;

        log("updateCallComposerFeatureValue: isUserSetEnabled = " + isUserSetEnabled
                + ", isCarrierConfigEnabled = " + isCarrierConfigEnabled
                        + ", isFeatureOn = " + isFeatureOn);

        if (isFeatureOn) {
            request.addCapabilitiesToEnableForTech(
                    MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_CALL_COMPOSER,
                            ImsRegistrationImplBase.REGISTRATION_TECH_LTE);
        } else {
            request.addCapabilitiesToDisableForTech(
                    MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_CALL_COMPOSER,
                            ImsRegistrationImplBase.REGISTRATION_TECH_LTE);
        }
    }

    /**
     * Do NOT use this directly, instead use {@link #getInstance(Context, int)}.
     */