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

Commit 946f086e authored by Shuo Qian's avatar Shuo Qian Committed by sqian
Browse files

Publish Call Composer in RCS service

Test: Treehugger
Bug: 173437870
Change-Id: I0d5778fecc5f73bcd6999ac1eb2b1bd0c84c99cd
Merged-In: I0d5778fecc5f73bcd6999ac1eb2b1bd0c84c99cd
Merged-In: I365c948021f4869d29f129b8f35853a3418b0e7c
(cherry picked from commit 47366bb0)
parent cffdd669
Loading
Loading
Loading
Loading
+31 −1
Original line number Diff line number Diff line
@@ -208,11 +208,13 @@ public class DeviceCapabilityInfo {
        boolean oldVoWifiAvailable = isVoWifiAvailable(mMmtelNetworkRegType, mMmTelCapabilities);
        boolean oldVtAvailable = isVtAvailable(mMmtelNetworkRegType, mMmTelCapabilities);
        boolean oldViWifiAvailable = isViWifiAvailable(mMmtelNetworkRegType, mMmTelCapabilities);
        boolean oldCallComposerAvailable = isCallComposerAvailable(mMmTelCapabilities);

        boolean volteAvailable = isVolteAvailable(mMmtelNetworkRegType, capabilities);
        boolean voWifiAvailable = isVoWifiAvailable(mMmtelNetworkRegType, capabilities);
        boolean vtAvailable = isVtAvailable(mMmtelNetworkRegType, capabilities);
        boolean viWifiAvailable = isViWifiAvailable(mMmtelNetworkRegType, capabilities);
        boolean callComposerAvailable = isCallComposerAvailable(capabilities);

        logd("updateMmtelCapabilitiesChanged: from " + mMmTelCapabilities + " to " + capabilities);

@@ -222,7 +224,8 @@ public class DeviceCapabilityInfo {
        if (oldVolteAvailable != volteAvailable
                || oldVoWifiAvailable != voWifiAvailable
                || oldVtAvailable != vtAvailable
                || oldViWifiAvailable != viWifiAvailable) {
                || oldViWifiAvailable != viWifiAvailable
                || oldCallComposerAvailable != callComposerAvailable) {
            return true;
        }
        return false;
@@ -248,6 +251,11 @@ public class DeviceCapabilityInfo {
                && capabilities.isCapable(MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VIDEO);
    }

    private boolean isCallComposerAvailable(MmTelCapabilities capabilities) {
        return capabilities.isCapable(
                MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_CALL_COMPOSER);
    }

    /**
     * Get the device's capabilities.
     */
@@ -266,10 +274,20 @@ public class DeviceCapabilityInfo {
                RcsContactPresenceTuple.SERVICE_ID_MMTEL, "1.0");
        tupleBuilder.addContactUri(uri).addServiceCapabilities(servCapsBuilder.build());

        RcsContactPresenceTuple.Builder callComposerTupleBuilder =
                new RcsContactPresenceTuple.Builder(
                        RcsContactPresenceTuple.TUPLE_BASIC_STATUS_OPEN,
                        RcsContactPresenceTuple.SERVICE_ID_CALL_COMPOSER, "2.0");
        callComposerTupleBuilder.addContactUri(uri).addServiceCapabilities(
                servCapsBuilder.build());

        PresenceBuilder presenceBuilder = new PresenceBuilder(uri,
                RcsContactUceCapability.SOURCE_TYPE_CACHED,
                RcsContactUceCapability.REQUEST_RESULT_FOUND);
        presenceBuilder.addCapabilityTuple(tupleBuilder.build());
        if (hasCallComposerCapability()) {
            presenceBuilder.addCapabilityTuple(callComposerTupleBuilder.build());
        }

        return presenceBuilder.build();
    }
@@ -292,6 +310,15 @@ public class DeviceCapabilityInfo {
        return false;
    }

    // Check if the device has the Call Composer capability
    private synchronized boolean hasCallComposerCapability() {
        if (mMmTelCapabilities != null && mMmTelCapabilities.isCapable(
                MmTelCapabilities.CAPABILITY_TYPE_CALL_COMPOSER)) {
            return true;
        }
        return false;
    }

    private synchronized MmTelCapabilities deepCopyCapabilities(MmTelCapabilities capabilities) {
        MmTelCapabilities mmTelCapabilities = new MmTelCapabilities();
        if (capabilities.isCapable(MmTelCapabilities.CAPABILITY_TYPE_VOICE)) {
@@ -306,6 +333,9 @@ public class DeviceCapabilityInfo {
        if (capabilities.isCapable(MmTelCapabilities.CAPABILITY_TYPE_SMS)) {
            mmTelCapabilities.addCapabilities(MmTelCapabilities.CAPABILITY_TYPE_SMS);
        }
        if (capabilities.isCapable(MmTelCapabilities.CAPABILITY_TYPE_CALL_COMPOSER)) {
            mmTelCapabilities.addCapabilities(MmTelCapabilities.CAPABILITY_TYPE_CALL_COMPOSER);
        }
        return mmTelCapabilities;
    }