Loading flags/telecom_call_flags.aconfig +11 −0 Original line number Diff line number Diff line Loading @@ -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 src/com/android/server/telecom/Call.java +19 −0 Original line number Diff line number Diff line Loading @@ -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)); Loading src/com/android/server/telecom/CallsManager.java +2 −6 Original line number Diff line number Diff line Loading @@ -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); Loading Loading @@ -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); Loading tests/src/com/android/server/telecom/tests/CallTest.java +26 −0 Original line number Diff line number Diff line Loading @@ -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 Loading Loading
flags/telecom_call_flags.aconfig +11 −0 Original line number Diff line number Diff line Loading @@ -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
src/com/android/server/telecom/Call.java +19 −0 Original line number Diff line number Diff line Loading @@ -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)); Loading
src/com/android/server/telecom/CallsManager.java +2 −6 Original line number Diff line number Diff line Loading @@ -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); Loading Loading @@ -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); Loading
tests/src/com/android/server/telecom/tests/CallTest.java +26 −0 Original line number Diff line number Diff line Loading @@ -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 Loading