add flag for transactional CS changes

b/267234374 was merged to V without a flag to gate the new logic.
This CL gates all the changes in b/267234374 and updates 2 tests.

Fixes: 309541257
Bug: 267234374 (root bug)
Test: 2 modified tests
Change-Id: I26967870b19be3670248ea237ccd8198f624c079
diff --git a/flags/Android.bp b/flags/Android.bp
index 6fa147a..63a67ae 100644
--- a/flags/Android.bp
+++ b/flags/Android.bp
@@ -29,6 +29,7 @@
       "telecom_incallservice_flags.aconfig",
       "telecom_default_phone_account_flags.aconfig",
       "telecom_callaudioroutestatemachine_flags.aconfig",
+      "telecom_call_flags.aconfig",
       "telecom_calls_manager_flags.aconfig",
       "telecom_anomaly_report_flags.aconfig",
       "telecom_callaudiomodestatemachine_flags.aconfig",
diff --git a/flags/telecom_call_flags.aconfig b/flags/telecom_call_flags.aconfig
new file mode 100644
index 0000000..b5ea6a2
--- /dev/null
+++ b/flags/telecom_call_flags.aconfig
@@ -0,0 +1,8 @@
+package: "com.android.server.telecom.flags"
+
+flag {
+  name: "transactional_cs_verifier"
+  namespace: "telecom"
+  description: "verify connection service callbacks via a transaction"
+  bug: "309541257"
+}
\ No newline at end of file
diff --git a/src/com/android/server/telecom/Call.java b/src/com/android/server/telecom/Call.java
index 7ef2a12..c0fb17f 100644
--- a/src/com/android/server/telecom/Call.java
+++ b/src/com/android/server/telecom/Call.java
@@ -849,7 +849,6 @@
             ClockProxy clockProxy,
             ToastFactory toastFactory,
             FeatureFlags featureFlags) {
-
         mFlags = featureFlags;
         mId = callId;
         mConnectionId = callId;
@@ -1370,8 +1369,10 @@
                 Log.addEvent(this, event, stringData);
             }
 
-            for (CallStateListener listener : mCallStateListeners) {
-                listener.onCallStateChanged(newState);
+            if (mFlags.transactionalCsVerifier()) {
+                for (CallStateListener listener : mCallStateListeners) {
+                    listener.onCallStateChanged(newState);
+                }
             }
 
             mCallStateChangedAtomWriter
@@ -2957,7 +2958,10 @@
             if (mTransactionalService != null) {
                 mTransactionalService.onSetInactive(this);
             } else if (mConnectionService != null) {
-                awaitCallStateChangeAndMaybeDisconnectCall(CallState.ON_HOLD, isSelfManaged(), "hold");
+                if (mFlags.transactionalCsVerifier()) {
+                    awaitCallStateChangeAndMaybeDisconnectCall(CallState.ON_HOLD, isSelfManaged(),
+                            "hold");
+                }
                 mConnectionService.hold(this);
             } else {
                 Log.e(this, new NullPointerException(),
diff --git a/tests/src/com/android/server/telecom/tests/MissedInformationTest.java b/tests/src/com/android/server/telecom/tests/MissedInformationTest.java
index f28966e..5bba742 100644
--- a/tests/src/com/android/server/telecom/tests/MissedInformationTest.java
+++ b/tests/src/com/android/server/telecom/tests/MissedInformationTest.java
@@ -361,7 +361,7 @@
         setUpIncomingCall();
         doReturn(mNotificationManager).when(mSpyContext)
                 .getSystemService(Context.NOTIFICATION_SERVICE);
-        doReturn(false).when(mNotificationManager).matchesCallFilter(any(Uri.class));
+        doReturn(false).when(mNotificationManager).matchesCallFilter(any(Bundle.class));
         doReturn(false).when(mIncomingCall).wasDndCheckComputedForCall();
         mCallsManager.getRinger().setNotificationManager(mNotificationManager);
 
@@ -372,7 +372,7 @@
 
         // Wait for ringer attributes build completed
         verify(mNotificationManager, timeout(TEST_TIMEOUT_MILLIS))
-                .matchesCallFilter(any(Uri.class));
+                .matchesCallFilter(any(Bundle.class));
         mCallsManager.getRinger().waitForAttributesCompletion();
 
         mCallsManager.markCallAsDisconnected(mIncomingCall,
diff --git a/tests/src/com/android/server/telecom/tests/TransactionTests.java b/tests/src/com/android/server/telecom/tests/TransactionTests.java
index b35f88e..e58c6c4 100644
--- a/tests/src/com/android/server/telecom/tests/TransactionTests.java
+++ b/tests/src/com/android/server/telecom/tests/TransactionTests.java
@@ -51,6 +51,7 @@
 import com.android.server.telecom.CallsManager;
 import com.android.server.telecom.ClockProxy;
 import com.android.server.telecom.ConnectionServiceWrapper;
+import com.android.server.telecom.flags.FeatureFlags;
 import com.android.server.telecom.PhoneNumberUtilsAdapter;
 import com.android.server.telecom.TelecomSystem;
 import com.android.server.telecom.ui.ToastFactory;
@@ -272,6 +273,7 @@
     @Test
     public void testCallStateChangeTimesOut()
             throws ExecutionException, InterruptedException, TimeoutException {
+        when(mFeatureFlags.transactionalCsVerifier()).thenReturn(true);
         VerifyCallStateChangeTransaction t = new VerifyCallStateChangeTransaction(mCallsManager,
                 mMockCall1, CallState.ON_HOLD, true);
         // WHEN
@@ -300,6 +302,7 @@
     @Test
     public void testCallStateIsSuccessfullyChanged()
             throws ExecutionException, InterruptedException, TimeoutException {
+        when(mFeatureFlags.transactionalCsVerifier()).thenReturn(true);
         VerifyCallStateChangeTransaction t = new VerifyCallStateChangeTransaction(mCallsManager,
                 mMockCall1, CallState.ON_HOLD, true);
         // WHEN