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

Commit 92475e18 authored by Thomas Stuart's avatar Thomas Stuart Committed by Android (Google) Code Review
Browse files

Merge "remap transactional capabilities" into main

parents 6d7e99b8 5133d8e0
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -55,3 +55,14 @@ flag {
      purpose: PURPOSE_BUGFIX
    }
}

# OWNER=tjstuart TARGET=25Q1
flag {
  name: "remap_transactional_capabilities"
  namespace: "telecom"
  description: "Transactional call capabilities need to be remapped to Connection capabilities"
  bug: "366063695"
  metadata {
      purpose: PURPOSE_BUGFIX
    }
}
 No newline at end of file
+19 −0
Original line number Diff line number Diff line
@@ -2331,6 +2331,25 @@ public class Call implements CreateConnectionResponse, EventManager.Loggable,
        setConnectionCapabilities(connectionCapabilities, false /* forceUpdate */);
    }

    public void setTransactionalCapabilities(Bundle extras) {
        if (!mFlags.remapTransactionalCapabilities()) {
            setConnectionCapabilities(
                    extras.getInt(CallAttributes.CALL_CAPABILITIES_KEY,
                            CallAttributes.SUPPORTS_SET_INACTIVE), true);
            return;
        }
        int connectionCapabilitesBitmap = 0;
        int transactionalCapabilitiesBitmap = extras.getInt(
                CallAttributes.CALL_CAPABILITIES_KEY,
                CallAttributes.SUPPORTS_SET_INACTIVE);
        if ((transactionalCapabilitiesBitmap & CallAttributes.SUPPORTS_SET_INACTIVE)
                == CallAttributes.SUPPORTS_SET_INACTIVE) {
            connectionCapabilitesBitmap = connectionCapabilitesBitmap | Connection.CAPABILITY_HOLD
                    | Connection.CAPABILITY_SUPPORT_HOLD;
        }
        setConnectionCapabilities(connectionCapabilitesBitmap, true);
    }

    void setConnectionCapabilities(int connectionCapabilities, boolean forceUpdate) {
        Log.v(this, "setConnectionCapabilities: %s", Connection.capabilitiesToString(
                connectionCapabilities));
+2 −6
Original line number Diff line number Diff line
@@ -1563,9 +1563,7 @@ public class CallsManager extends Call.ListenerBase
        if (extras.containsKey(TelecomManager.TRANSACTION_CALL_ID_KEY)) {
            call.setIsTransactionalCall(true);
            call.setCallingPackageIdentity(extras);
            call.setConnectionCapabilities(
                    extras.getInt(CallAttributes.CALL_CAPABILITIES_KEY,
                            CallAttributes.SUPPORTS_SET_INACTIVE), true);
            call.setTransactionalCapabilities(extras);
            call.setTargetPhoneAccount(phoneAccountHandle);
            if (extras.containsKey(CallAttributes.DISPLAY_NAME_KEY)) {
                CharSequence displayName = extras.getCharSequence(CallAttributes.DISPLAY_NAME_KEY);
@@ -1917,9 +1915,7 @@ public class CallsManager extends Call.ListenerBase
            if (extras.containsKey(TelecomManager.TRANSACTION_CALL_ID_KEY)) {
                call.setIsTransactionalCall(true);
                call.setCallingPackageIdentity(extras);
                call.setConnectionCapabilities(
                        extras.getInt(CallAttributes.CALL_CAPABILITIES_KEY,
                                CallAttributes.SUPPORTS_SET_INACTIVE), true);
                call.setTransactionalCapabilities(extras);
                if (extras.containsKey(CallAttributes.DISPLAY_NAME_KEY)) {
                    CharSequence displayName = extras.getCharSequence(
                            CallAttributes.DISPLAY_NAME_KEY);
+26 −0
Original line number Diff line number Diff line
@@ -151,6 +151,32 @@ public class CallTest extends TelecomTestCase {
        assertTrue(call.hasGoneActiveBefore());
    }

    /**
     * Verify that transactional calls remap the [CallAttributes#CallCapability]s to
     * Connection capabilities.
     */
    @Test
    @SmallTest
    public void testTransactionalCallCapabilityRemapping() {
        // ensure when the flag is disabled, the old behavior is unchanged
        Bundle disabledFlagExtras = new Bundle();
        Call call = createCall("1", Call.CALL_DIRECTION_INCOMING);
        disabledFlagExtras.putInt(CallAttributes.CALL_CAPABILITIES_KEY,
                Connection.CAPABILITY_MERGE_CONFERENCE);
        when(mFeatureFlags.remapTransactionalCapabilities()).thenReturn(false);
        call.setTransactionalCapabilities(disabledFlagExtras);
        assertTrue(call.can(Connection.CAPABILITY_MERGE_CONFERENCE));
        // enable the bug fix flag and ensure the transactional capabilities are remapped
        Bundle enabledFlagExtras = new Bundle();
        Call call2 = createCall("2", Call.CALL_DIRECTION_INCOMING);
        enabledFlagExtras.putInt(CallAttributes.CALL_CAPABILITIES_KEY,
                CallAttributes.SUPPORTS_SET_INACTIVE);
        when(mFeatureFlags.remapTransactionalCapabilities()).thenReturn(true);
        call2.setTransactionalCapabilities(enabledFlagExtras);
        assertTrue(call2.can(Connection.CAPABILITY_HOLD));
        assertTrue(call2.can(Connection.CAPABILITY_SUPPORT_HOLD));
    }

    /**
     * Verify Call#setVideoState will only upgrade to video if the PhoneAccount supports video
     * state capabilities