When the conference_hold_unhold_changed_to_send_message flag is true, conference’s hold and unhold operations have changed from the function call to sending a message.

Bug: 288002989
Test: atest ImsCallingTest
Test: manual test (MO call, MT call, 1st call hold unhold, conference call, conference call swap)
Test: adb shell device_config put telephony com.android.internal.telephony.flags.conference_hold_unhold_changed_to_send_message true

Change-Id: I128702c6bda657132e4acb2a3376da6d0cbe7b6e
diff --git a/Android.bp b/Android.bp
index dc35c5d..122015e 100644
--- a/Android.bp
+++ b/Android.bp
@@ -43,7 +43,8 @@
         "PlatformProperties",
         "modules-utils-os",
         "nist-sip",
-        "service-entitlement"
+        "service-entitlement",
+        "telephony_flags_core_java_lib",
     ],
 
     srcs: [
diff --git a/src/com/android/services/telephony/ImsConference.java b/src/com/android/services/telephony/ImsConference.java
index 755c85f..7f0c800 100644
--- a/src/com/android/services/telephony/ImsConference.java
+++ b/src/com/android/services/telephony/ImsConference.java
@@ -38,6 +38,7 @@
 import com.android.internal.telephony.CallStateException;
 import com.android.internal.telephony.Phone;
 import com.android.internal.telephony.PhoneConstants;
+import com.android.internal.telephony.flags.Flags;
 import com.android.phone.PhoneUtils;
 import com.android.phone.R;
 import com.android.telephony.Rlog;
@@ -700,7 +701,11 @@
         if (mConferenceHost == null) {
             return;
         }
-        mConferenceHost.performHold();
+        if (Flags.conferenceHoldUnholdChangedToSendMessage()) {
+            mConferenceHost.onHold();
+        } else {
+            mConferenceHost.performHold();
+        }
     }
 
     /**
@@ -711,7 +716,11 @@
         if (mConferenceHost == null) {
             return;
         }
-        mConferenceHost.performUnhold();
+        if (Flags.conferenceHoldUnholdChangedToSendMessage()) {
+            mConferenceHost.onUnhold();
+        } else {
+            mConferenceHost.performUnhold();
+        }
     }
 
     /**
diff --git a/src/com/android/services/telephony/TelephonyConference.java b/src/com/android/services/telephony/TelephonyConference.java
index 7e4693f..4a70e1c 100644
--- a/src/com/android/services/telephony/TelephonyConference.java
+++ b/src/com/android/services/telephony/TelephonyConference.java
@@ -23,6 +23,7 @@
 import com.android.internal.telephony.Call;
 import com.android.internal.telephony.CallStateException;
 import com.android.internal.telephony.Phone;
+import com.android.internal.telephony.flags.Flags;
 
 import java.util.List;
 
@@ -128,7 +129,11 @@
     public void onHold() {
         final TelephonyConnection connection = getFirstConnection();
         if (connection != null) {
-            connection.performHold();
+            if (Flags.conferenceHoldUnholdChangedToSendMessage()) {
+                connection.onHold();
+            } else {
+                connection.performHold();
+            }
         }
     }
 
@@ -139,7 +144,11 @@
     public void onUnhold() {
         final TelephonyConnection connection = getFirstConnection();
         if (connection != null) {
-            connection.performUnhold();
+            if (Flags.conferenceHoldUnholdChangedToSendMessage()) {
+                connection.onUnhold();
+            } else {
+                connection.performUnhold();
+            }
         }
     }