Merge "Use the correct @RequiresOptIn for ExperimentalAppActions" into androidx-main
diff --git a/core/core-telecom/api/current.txt b/core/core-telecom/api/current.txt
index 0ba4497..d4a855f 100644
--- a/core/core-telecom/api/current.txt
+++ b/core/core-telecom/api/current.txt
@@ -109,7 +109,7 @@
 
 package androidx.core.telecom.util {
 
-  @SuppressCompatibility @RequiresOptIn @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.CLASS) public @interface ExperimentalAppActions {
+  @SuppressCompatibility @kotlin.RequiresOptIn @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) public @interface ExperimentalAppActions {
   }
 
 }
diff --git a/core/core-telecom/api/restricted_current.txt b/core/core-telecom/api/restricted_current.txt
index 0ba4497..d4a855f 100644
--- a/core/core-telecom/api/restricted_current.txt
+++ b/core/core-telecom/api/restricted_current.txt
@@ -109,7 +109,7 @@
 
 package androidx.core.telecom.util {
 
-  @SuppressCompatibility @RequiresOptIn @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.CLASS) public @interface ExperimentalAppActions {
+  @SuppressCompatibility @kotlin.RequiresOptIn @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) public @interface ExperimentalAppActions {
   }
 
 }
diff --git a/core/core-telecom/src/androidTest/java/androidx/core/telecom/test/CallCompatTest.kt b/core/core-telecom/src/androidTest/java/androidx/core/telecom/test/CallCompatTest.kt
index 98a9e9f..78117e2 100644
--- a/core/core-telecom/src/androidTest/java/androidx/core/telecom/test/CallCompatTest.kt
+++ b/core/core-telecom/src/androidTest/java/androidx/core/telecom/test/CallCompatTest.kt
@@ -36,6 +36,7 @@
 import androidx.core.telecom.internal.utils.Utils
 import androidx.core.telecom.test.utils.BaseTelecomTest
 import androidx.core.telecom.test.utils.TestUtils
+import androidx.core.telecom.util.ExperimentalAppActions
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.LargeTest
 import androidx.test.filters.SdkSuppress
@@ -67,6 +68,7 @@
  */
 @SdkSuppress(minSdkVersion = Build.VERSION_CODES.O)
 @RequiresApi(Build.VERSION_CODES.O)
+@OptIn(ExperimentalAppActions::class)
 @RunWith(AndroidJUnit4::class)
 class CallCompatTest : BaseTelecomTest() {
     private lateinit var callCompat: CallCompat
diff --git a/core/core-telecom/src/androidTest/java/androidx/core/telecom/test/CallSessionTest.kt b/core/core-telecom/src/androidTest/java/androidx/core/telecom/test/CallSessionTest.kt
index 841e390..ac55bd7 100644
--- a/core/core-telecom/src/androidTest/java/androidx/core/telecom/test/CallSessionTest.kt
+++ b/core/core-telecom/src/androidTest/java/androidx/core/telecom/test/CallSessionTest.kt
@@ -24,6 +24,7 @@
 import androidx.core.telecom.internal.CallChannels
 import androidx.core.telecom.internal.CallSession
 import androidx.core.telecom.test.utils.BaseTelecomTest
+import androidx.core.telecom.util.ExperimentalAppActions
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SdkSuppress
 import androidx.test.filters.SmallTest
@@ -43,7 +44,7 @@
  * [androidx.core.telecom.internal.CallSession] object.
  */
 @SdkSuppress(minSdkVersion = VERSION_CODES.UPSIDE_DOWN_CAKE /* api=34 */)
-@OptIn(kotlinx.coroutines.ExperimentalCoroutinesApi::class)
+@OptIn(kotlinx.coroutines.ExperimentalCoroutinesApi::class, ExperimentalAppActions::class)
 @RequiresApi(VERSION_CODES.UPSIDE_DOWN_CAKE)
 @RunWith(AndroidJUnit4::class)
 class CallSessionTest : BaseTelecomTest() {
diff --git a/core/core-telecom/src/androidTest/java/androidx/core/telecom/test/E2ECallExtensionExtrasTests.kt b/core/core-telecom/src/androidTest/java/androidx/core/telecom/test/E2ECallExtensionExtrasTests.kt
index 0429f8e..d204f76 100644
--- a/core/core-telecom/src/androidTest/java/androidx/core/telecom/test/E2ECallExtensionExtrasTests.kt
+++ b/core/core-telecom/src/androidTest/java/androidx/core/telecom/test/E2ECallExtensionExtrasTests.kt
@@ -30,6 +30,7 @@
 import androidx.core.telecom.test.utils.MockInCallServiceDelegate
 import androidx.core.telecom.test.utils.TestUtils
 import androidx.core.telecom.test.utils.TestUtils.waitOnInCallServiceToReachXCallCompats
+import androidx.core.telecom.util.ExperimentalAppActions
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.LargeTest
 import androidx.test.filters.SdkSuppress
@@ -59,6 +60,7 @@
  */
 @SdkSuppress(minSdkVersion = Build.VERSION_CODES.O)
 @RequiresApi(Build.VERSION_CODES.O)
+@OptIn(ExperimentalAppActions::class)
 @RunWith(AndroidJUnit4::class)
 class E2ECallExtensionExtrasTests : BaseTelecomTest() {
     companion object {
diff --git a/core/core-telecom/src/androidTest/java/androidx/core/telecom/test/E2ECapabilityExchangeTests.kt b/core/core-telecom/src/androidTest/java/androidx/core/telecom/test/E2ECapabilityExchangeTests.kt
index 42b468d..4f7a610 100644
--- a/core/core-telecom/src/androidTest/java/androidx/core/telecom/test/E2ECapabilityExchangeTests.kt
+++ b/core/core-telecom/src/androidTest/java/androidx/core/telecom/test/E2ECapabilityExchangeTests.kt
@@ -29,6 +29,7 @@
 import androidx.core.telecom.test.utils.InCallServiceType
 import androidx.core.telecom.test.utils.MockInCallServiceDelegate
 import androidx.core.telecom.test.utils.TestUtils
+import androidx.core.telecom.util.ExperimentalAppActions
 import androidx.test.filters.LargeTest
 import androidx.test.filters.SdkSuppress
 import androidx.test.platform.app.InstrumentationRegistry
@@ -44,6 +45,7 @@
 import org.junit.Test
 
 @RequiresApi(Build.VERSION_CODES.O)
+@ExperimentalAppActions
 class E2ECapabilityExchangeTests : BaseTelecomTest() {
     @get:Rule val serviceRule: ServiceTestRule = ServiceTestRule()
 
diff --git a/core/core-telecom/src/androidTest/java/androidx/core/telecom/test/ExtensionAidlTest.kt b/core/core-telecom/src/androidTest/java/androidx/core/telecom/test/ExtensionAidlTest.kt
index 37a7f61..8d6d4d8 100644
--- a/core/core-telecom/src/androidTest/java/androidx/core/telecom/test/ExtensionAidlTest.kt
+++ b/core/core-telecom/src/androidTest/java/androidx/core/telecom/test/ExtensionAidlTest.kt
@@ -21,6 +21,7 @@
 import androidx.core.telecom.extensions.ICapabilityExchange
 import androidx.core.telecom.extensions.ICapabilityExchangeListener
 import androidx.core.telecom.extensions.IParticipantStateListener
+import androidx.core.telecom.util.ExperimentalAppActions
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import org.junit.Assert.assertEquals
@@ -33,6 +34,7 @@
  * Not very useful for now, but tests the visibility of the AIDL files and ensures that they can
  * be used as described.
  */
+@OptIn(ExperimentalAppActions::class)
 @RunWith(AndroidJUnit4::class)
 class ExtensionAidlTest {
 
diff --git a/core/core-telecom/src/androidTest/java/androidx/core/telecom/test/InCallServiceCompatTest.kt b/core/core-telecom/src/androidTest/java/androidx/core/telecom/test/InCallServiceCompatTest.kt
index a9480cf..b8a3799 100644
--- a/core/core-telecom/src/androidTest/java/androidx/core/telecom/test/InCallServiceCompatTest.kt
+++ b/core/core-telecom/src/androidTest/java/androidx/core/telecom/test/InCallServiceCompatTest.kt
@@ -31,6 +31,7 @@
 import androidx.core.telecom.test.utils.InCallServiceType
 import androidx.core.telecom.test.utils.MockInCallServiceDelegate
 import androidx.core.telecom.test.utils.TestUtils
+import androidx.core.telecom.util.ExperimentalAppActions
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.LargeTest
 import androidx.test.filters.SdkSuppress
@@ -53,6 +54,7 @@
  */
 @SdkSuppress(minSdkVersion = Build.VERSION_CODES.O)
 @RequiresApi(Build.VERSION_CODES.O)
+@OptIn(ExperimentalAppActions::class)
 @RunWith(AndroidJUnit4::class)
 class InCallServiceCompatTest : BaseTelecomTest() {
 
diff --git a/core/core-telecom/src/androidTest/java/androidx/core/telecom/test/JetpackConnectionServiceTest.kt b/core/core-telecom/src/androidTest/java/androidx/core/telecom/test/JetpackConnectionServiceTest.kt
index 0c199f0..e02ead9 100644
--- a/core/core-telecom/src/androidTest/java/androidx/core/telecom/test/JetpackConnectionServiceTest.kt
+++ b/core/core-telecom/src/androidTest/java/androidx/core/telecom/test/JetpackConnectionServiceTest.kt
@@ -31,6 +31,7 @@
 import androidx.core.telecom.test.utils.TestUtils
 import androidx.core.telecom.test.utils.TestUtils.TEST_CALL_ATTRIB_NAME
 import androidx.core.telecom.test.utils.TestUtils.TEST_PHONE_NUMBER_9001
+import androidx.core.telecom.util.ExperimentalAppActions
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SdkSuppress
 import androidx.test.filters.SmallTest
@@ -45,6 +46,7 @@
 
 @SdkSuppress(minSdkVersion = VERSION_CODES.O /* api=26 */)
 @RequiresApi(VERSION_CODES.O)
+@OptIn(ExperimentalAppActions::class)
 @RunWith(AndroidJUnit4::class)
 class JetpackConnectionServiceTest : BaseTelecomTest() {
     private val callChannels = CallChannels()
diff --git a/core/core-telecom/src/androidTest/java/androidx/core/telecom/test/VoipAppWithExtensions/VoipAppWithExtensionsControl.kt b/core/core-telecom/src/androidTest/java/androidx/core/telecom/test/VoipAppWithExtensions/VoipAppWithExtensionsControl.kt
index ee23c6e..3abb15c 100644
--- a/core/core-telecom/src/androidTest/java/androidx/core/telecom/test/VoipAppWithExtensions/VoipAppWithExtensionsControl.kt
+++ b/core/core-telecom/src/androidTest/java/androidx/core/telecom/test/VoipAppWithExtensions/VoipAppWithExtensionsControl.kt
@@ -32,6 +32,7 @@
 import androidx.core.telecom.extensions.Participant
 import androidx.core.telecom.test.ITestAppControl
 import androidx.core.telecom.test.utils.TestUtils
+import androidx.core.telecom.util.ExperimentalAppActions
 import kotlinx.coroutines.CompletableDeferred
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.Dispatchers
@@ -40,7 +41,7 @@
 import kotlinx.coroutines.launch
 import kotlinx.coroutines.runBlocking
 
-@OptIn(ExperimentalCoroutinesApi::class)
+@OptIn(ExperimentalCoroutinesApi::class, ExperimentalAppActions::class)
 @RequiresApi(Build.VERSION_CODES.O)
 class VoipAppWithExtensionsControl : Service() {
     var mCallsManager: CallsManager? = null
diff --git a/core/core-telecom/src/androidTest/java/androidx/core/telecom/test/VoipExtensionRegistrationTest.kt b/core/core-telecom/src/androidTest/java/androidx/core/telecom/test/VoipExtensionRegistrationTest.kt
index 4073a0e..ce180de 100644
--- a/core/core-telecom/src/androidTest/java/androidx/core/telecom/test/VoipExtensionRegistrationTest.kt
+++ b/core/core-telecom/src/androidTest/java/androidx/core/telecom/test/VoipExtensionRegistrationTest.kt
@@ -31,6 +31,7 @@
 import androidx.core.telecom.internal.utils.Utils
 import androidx.core.telecom.test.utils.BaseTelecomTest
 import androidx.core.telecom.test.utils.TestUtils
+import androidx.core.telecom.util.ExperimentalAppActions
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.MediumTest
 import androidx.test.filters.SdkSuppress
@@ -47,6 +48,7 @@
 
 @SdkSuppress(minSdkVersion = Build.VERSION_CODES.O)
 @RequiresApi(Build.VERSION_CODES.O)
+@OptIn(ExperimentalAppActions::class)
 @RunWith(AndroidJUnit4::class)
 class VoipExtensionRegistrationTest : BaseTelecomTest() {
     private lateinit var extensionRegistrationMap: Map<Int, (CallControlScope) -> Unit>
diff --git a/core/core-telecom/src/androidTest/java/androidx/core/telecom/test/utils/BaseTelecomTest.kt b/core/core-telecom/src/androidTest/java/androidx/core/telecom/test/utils/BaseTelecomTest.kt
index 46e933c..ae8521b 100644
--- a/core/core-telecom/src/androidTest/java/androidx/core/telecom/test/utils/BaseTelecomTest.kt
+++ b/core/core-telecom/src/androidTest/java/androidx/core/telecom/test/utils/BaseTelecomTest.kt
@@ -30,6 +30,7 @@
 import androidx.core.telecom.CallsManager
 import androidx.core.telecom.internal.JetpackConnectionService
 import androidx.core.telecom.internal.utils.Utils
+import androidx.core.telecom.util.ExperimentalAppActions
 import androidx.test.core.app.ApplicationProvider
 import androidx.test.filters.SdkSuppress
 import androidx.testutils.TestExecutor
@@ -129,6 +130,7 @@
         return mContext.packageManager.hasSystemFeature(PackageManager.FEATURE_TELECOM)
     }
 
+    @OptIn(ExperimentalAppActions::class)
     private suspend fun maybeCleanupStuckCalls() {
         JetpackConnectionService.mPendingConnectionRequests.clear()
         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
diff --git a/core/core-telecom/src/androidTest/java/androidx/core/telecom/test/utils/MockInCallServiceDelegate.kt b/core/core-telecom/src/androidTest/java/androidx/core/telecom/test/utils/MockInCallServiceDelegate.kt
index 02d6efd..aec8d9a 100644
--- a/core/core-telecom/src/androidTest/java/androidx/core/telecom/test/utils/MockInCallServiceDelegate.kt
+++ b/core/core-telecom/src/androidTest/java/androidx/core/telecom/test/utils/MockInCallServiceDelegate.kt
@@ -29,6 +29,7 @@
 import androidx.core.telecom.internal.CallCompat
 import androidx.core.telecom.internal.InCallServiceCompat
 import androidx.core.telecom.test.utils.TestUtils.printParticipants
+import androidx.core.telecom.util.ExperimentalAppActions
 import androidx.test.core.app.ActivityScenario.launch
 import java.util.Collections
 import kotlinx.coroutines.CoroutineScope
@@ -45,6 +46,7 @@
 @RequiresApi(Build.VERSION_CODES.O)
 internal class MockInCallServiceDelegate : Service() {
 
+    @OptIn(ExperimentalAppActions::class)
     class InCallServiceWoExtensions(context: Context) : InCallService() {
         init {
             // Icky hack, but since we are using a delegate, we need to attach the Context manually.
@@ -60,12 +62,14 @@
                 mCalls.add(callCompat)
             }
         }
+
         override fun onCallRemoved(call: Call) {
             Log.i(LOG_TAG, String.format("ICS.onCallRemoved: call=[%s]", call))
             mCalls.removeIf { c -> c.toCall() == call }
         }
     }
 
+    @ExperimentalAppActions
     class InCallServiceWExtensions(context: Context) : InCallServiceCompat() {
         init {
             // Icky hack, but since we are using a delegate, we need to attach the Context manually.
@@ -98,11 +102,13 @@
 
     companion object {
         const val LOG_TAG = "MockInCallServiceDelegate"
+        @OptIn(ExperimentalAppActions::class)
         val mCalls = Collections.synchronizedList(ArrayList<CallCompat>())
         var mIsServiceBound = false
         var mInCallServiceType: InCallServiceType = InCallServiceType.ICS_WITHOUT_EXTENSIONS
         val mServiceFlow = MutableStateFlow<InCallService?>(null)
 
+        @OptIn(ExperimentalAppActions::class)
         @Suppress("deprecation")
         suspend fun destroyAllCalls() {
             Log.i(LOG_TAG, "destroyAllCalls: Calls.size=[${mCalls.size}]")
@@ -128,6 +134,7 @@
             }
         }
 
+        @ExperimentalAppActions
         fun getLastCall(): CallCompat? {
             return if (mCalls.size == 0) {
                 null
@@ -136,6 +143,7 @@
             }
         }
 
+        @OptIn(ExperimentalAppActions::class)
         fun getCallCount(): Int {
             return mCalls.size
         }
@@ -147,12 +155,14 @@
         fun getService(): InCallService? {
             return mServiceFlow.value
         }
+        @ExperimentalAppActions
         fun getServiceWithExtensions(): InCallServiceCompat? {
             if (getService() !is InCallServiceCompat) return null
             return getService() as InCallServiceCompat
         }
     }
 
+    @OptIn(ExperimentalAppActions::class)
     override fun onCreate() {
         Log.i(LOG_TAG, "Delegate service onCreate")
         mServiceFlow.tryEmit(when (mInCallServiceType) {
diff --git a/core/core-telecom/src/androidTest/java/androidx/core/telecom/test/utils/TestUtils.kt b/core/core-telecom/src/androidTest/java/androidx/core/telecom/test/utils/TestUtils.kt
index 133ddc3..b9a5920 100644
--- a/core/core-telecom/src/androidTest/java/androidx/core/telecom/test/utils/TestUtils.kt
+++ b/core/core-telecom/src/androidTest/java/androidx/core/telecom/test/utils/TestUtils.kt
@@ -33,6 +33,7 @@
 import androidx.core.telecom.extensions.Participant
 import androidx.core.telecom.internal.CallCompat
 import androidx.core.telecom.internal.utils.BuildVersionAdapter
+import androidx.core.telecom.util.ExperimentalAppActions
 import androidx.test.platform.app.InstrumentationRegistry
 import java.io.FileInputStream
 import kotlinx.coroutines.TimeoutCancellationException
@@ -273,6 +274,7 @@
         Log.i(LOG_TAG, "defaultDialer=[${getDefaultDialer()}]")
     }
 
+    @OptIn(ExperimentalAppActions::class)
     @Suppress("deprecation")
     suspend fun waitOnInCallServiceToReachXCalls(targetCallCount: Int): Call? {
         var targetCall: Call?
@@ -325,6 +327,7 @@
         }
     }
 
+    @OptIn(ExperimentalAppActions::class)
     internal suspend fun waitOnInCallServiceToReachXCallCompats(targetCallCompatCount: Int):
         CallCompat? {
         var targetCallCompat: CallCompat? = null
@@ -394,6 +397,7 @@
         return Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE
     }
 
+    @ExperimentalAppActions
     fun getDefaultParticipant(): Participant {
         val p = Participant()
         p.id = 123
@@ -409,6 +413,7 @@
         )
     }
 
+    @ExperimentalAppActions
     fun printParticipants(participants: Set<Participant>, tag: String) {
         Log.i(LOG_TAG, tag + ": printParticipants: set size=${participants.size}")
         for (v in participants) {
diff --git a/core/core-telecom/src/main/java/androidx/core/telecom/CallsManager.kt b/core/core-telecom/src/main/java/androidx/core/telecom/CallsManager.kt
index dc9068a..eb53be1 100644
--- a/core/core-telecom/src/main/java/androidx/core/telecom/CallsManager.kt
+++ b/core/core-telecom/src/main/java/androidx/core/telecom/CallsManager.kt
@@ -39,11 +39,13 @@
 import androidx.core.telecom.internal.JetpackConnectionService
 import androidx.core.telecom.internal.utils.Utils
 import androidx.core.telecom.internal.utils.Utils.Companion.remapJetpackCapsToPlatformCaps
+import androidx.core.telecom.util.ExperimentalAppActions
 import java.util.UUID
 import java.util.concurrent.CancellationException
 import java.util.concurrent.Executor
 import kotlin.coroutines.coroutineContext
 import kotlinx.coroutines.CompletableDeferred
+import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.TimeoutCancellationException
 import kotlinx.coroutines.job
 import kotlinx.coroutines.withTimeout
@@ -71,6 +73,7 @@
     // A single declared constant for a direct [Executor], since the coroutines primitives we invoke
     // from the associated callbacks will perform their own dispatch as needed.
     private val mDirectExecutor = Executor { it.run() }
+    @ExperimentalAppActions
     // Capabilities to be set by the VOIP app which will be used in addCall.
     private var mCapabilities: MutableList<androidx.core.telecom.extensions.Capability> =
         mutableListOf()
@@ -295,7 +298,7 @@
      * @throws CancellationException if the call failed to be added within 5000 milliseconds
      */
     @RequiresPermission(value = "android.permission.MANAGE_OWN_CALLS")
-    @OptIn(kotlinx.coroutines.ExperimentalCoroutinesApi::class)
+    @OptIn(ExperimentalCoroutinesApi::class, ExperimentalAppActions::class)
     @Suppress("ClassVerificationFailure")
     suspend fun addCall(
         callAttributes: CallAttributesCompat,
@@ -435,6 +438,7 @@
         mCapabilities.clear()
     }
 
+    @ExperimentalAppActions
     private suspend fun pauseExecutionUntilCallIsReady_orTimeout(
         openResult: CompletableDeferred<*>,
         request: JetpackConnectionService.PendingConnectionRequest? = null
@@ -482,6 +486,7 @@
         return mPhoneAccount
     }
 
+    @ExperimentalAppActions
     internal fun setVoipCapabilities(
         capabilities: List<androidx.core.telecom.extensions.Capability>
     ) {
diff --git a/core/core-telecom/src/main/java/androidx/core/telecom/extensions/ParticipantClientExtension.kt b/core/core-telecom/src/main/java/androidx/core/telecom/extensions/ParticipantClientExtension.kt
index 47d631591..bdb9ced 100644
--- a/core/core-telecom/src/main/java/androidx/core/telecom/extensions/ParticipantClientExtension.kt
+++ b/core/core-telecom/src/main/java/androidx/core/telecom/extensions/ParticipantClientExtension.kt
@@ -58,6 +58,7 @@
 }
 
 // Allows the InCallService implementer to inspect state and perform requests to update state
+@ExperimentalAppActions
 internal interface ParticipantClientActions {
     val negotiatedActions: Set<Int>
     val isParticipantExtensionSupported: Boolean
diff --git a/core/core-telecom/src/main/java/androidx/core/telecom/extensions/voip/VoipExtensionManager.kt b/core/core-telecom/src/main/java/androidx/core/telecom/extensions/voip/VoipExtensionManager.kt
index 399668b..eb70958 100644
--- a/core/core-telecom/src/main/java/androidx/core/telecom/extensions/voip/VoipExtensionManager.kt
+++ b/core/core-telecom/src/main/java/androidx/core/telecom/extensions/voip/VoipExtensionManager.kt
@@ -27,10 +27,11 @@
 import androidx.core.telecom.extensions.Capability
 import androidx.core.telecom.extensions.ICapabilityExchange
 import androidx.core.telecom.internal.CallChannels
+import androidx.core.telecom.util.ExperimentalAppActions
 import kotlin.coroutines.CoroutineContext
 
 @RequiresApi(Build.VERSION_CODES.O)
[email protected](androidx.core.telecom.util.ExperimentalAppActions::class)
+@ExperimentalAppActions
 internal class VoipExtensionManager(
     private val context: Context,
     private val coroutineContext: CoroutineContext?,
diff --git a/core/core-telecom/src/main/java/androidx/core/telecom/extensions/voip/VoipParticipantExtensionManager.kt b/core/core-telecom/src/main/java/androidx/core/telecom/extensions/voip/VoipParticipantExtensionManager.kt
index 949da65..2b1c554 100644
--- a/core/core-telecom/src/main/java/androidx/core/telecom/extensions/voip/VoipParticipantExtensionManager.kt
+++ b/core/core-telecom/src/main/java/androidx/core/telecom/extensions/voip/VoipParticipantExtensionManager.kt
@@ -321,20 +321,18 @@
  * be translated to backing fields so, internally, we need to resolve the APIs for each
  * CallControlScope using a delegate to mimic this behavior.
  */
+@ExperimentalAppActions
 internal val CallControlScope.activeParticipant: MutableStateFlow<Participant?>?
-    @ExperimentalAppActions
     @RequiresApi(Build.VERSION_CODES.O)
     get() = CallControlScopeExtensionSingleton.getInstance()
         .PARTICIPANT_DELEGATE[getCallId()]?.activeParticipantFlow
-
+@ExperimentalAppActions
 internal val CallControlScope.participants: MutableStateFlow<Set<Participant>>?
-    @ExperimentalAppActions
     @RequiresApi(Build.VERSION_CODES.O)
     get() = CallControlScopeExtensionSingleton.getInstance()
         .PARTICIPANT_DELEGATE[getCallId()]?.participantsFlow
-
+@ExperimentalAppActions
 internal val CallControlScope.raisedHandParticipants: MutableStateFlow<Set<Participant>>?
-    @ExperimentalAppActions
     @RequiresApi(Build.VERSION_CODES.O)
     get() = CallControlScopeExtensionSingleton.getInstance()
         .PARTICIPANT_DELEGATE[getCallId()]?.raisedHandParticipantsFlow
diff --git a/core/core-telecom/src/main/java/androidx/core/telecom/internal/CallChannels.kt b/core/core-telecom/src/main/java/androidx/core/telecom/internal/CallChannels.kt
index b6aa8a1..c0bc87c 100644
--- a/core/core-telecom/src/main/java/androidx/core/telecom/internal/CallChannels.kt
+++ b/core/core-telecom/src/main/java/androidx/core/telecom/internal/CallChannels.kt
@@ -18,8 +18,10 @@
 
 import androidx.core.telecom.CallEndpointCompat
 import androidx.core.telecom.extensions.voip.VoipParticipantActionRequest
+import androidx.core.telecom.util.ExperimentalAppActions
 import kotlinx.coroutines.channels.Channel
 
+@OptIn(ExperimentalAppActions::class)
 internal class CallChannels(
     val currentEndpointChannel: Channel<CallEndpointCompat> = Channel(Channel.UNLIMITED),
     val availableEndpointChannel: Channel<List<CallEndpointCompat>> = Channel(Channel.UNLIMITED),
diff --git a/core/core-telecom/src/main/java/androidx/core/telecom/internal/CallSession.kt b/core/core-telecom/src/main/java/androidx/core/telecom/internal/CallSession.kt
index 5067ba6..cb5816e 100644
--- a/core/core-telecom/src/main/java/androidx/core/telecom/internal/CallSession.kt
+++ b/core/core-telecom/src/main/java/androidx/core/telecom/internal/CallSession.kt
@@ -90,6 +90,7 @@
         }
     }
 
+    @ExperimentalAppActions
     class CallEventCallbackImpl(
         private val callChannels: CallChannels,
         private val coroutineContext: CoroutineContext,
diff --git a/core/core-telecom/src/main/java/androidx/core/telecom/internal/CallSessionLegacy.kt b/core/core-telecom/src/main/java/androidx/core/telecom/internal/CallSessionLegacy.kt
index 82088c6..1a64a5f 100644
--- a/core/core-telecom/src/main/java/androidx/core/telecom/internal/CallSessionLegacy.kt
+++ b/core/core-telecom/src/main/java/androidx/core/telecom/internal/CallSessionLegacy.kt
@@ -44,6 +44,7 @@
 import kotlinx.coroutines.flow.receiveAsFlow
 import kotlinx.coroutines.launch
 
+@ExperimentalAppActions
 @RequiresApi(VERSION_CODES.O)
 internal class CallSessionLegacy(
     private val id: ParcelUuid,
@@ -65,7 +66,6 @@
     /**
      * Stubbed supported capabilities for legacy connections.
      */
-    @ExperimentalAppActions
     private val supportedCapabilities = mutableListOf(Capability())
 
     companion object {
diff --git a/core/core-telecom/src/main/java/androidx/core/telecom/internal/JetpackConnectionService.kt b/core/core-telecom/src/main/java/androidx/core/telecom/internal/JetpackConnectionService.kt
index 545472f..398ef7d 100644
--- a/core/core-telecom/src/main/java/androidx/core/telecom/internal/JetpackConnectionService.kt
+++ b/core/core-telecom/src/main/java/androidx/core/telecom/internal/JetpackConnectionService.kt
@@ -33,11 +33,13 @@
 import androidx.core.telecom.CallsManager.Companion.CALL_CREATION_FAILURE_MSG
 import androidx.core.telecom.extensions.voip.VoipExtensionManager
 import androidx.core.telecom.internal.utils.Utils
+import androidx.core.telecom.util.ExperimentalAppActions
 import java.util.UUID
 import kotlin.coroutines.CoroutineContext
 import kotlin.coroutines.cancellation.CancellationException
 import kotlinx.coroutines.CompletableDeferred
 
+@OptIn(ExperimentalAppActions::class)
 @RequiresApi(api = Build.VERSION_CODES.O)
 internal class JetpackConnectionService : ConnectionService() {
     private val TAG = JetpackConnectionService::class.java.simpleName
@@ -45,6 +47,7 @@
     /**
      * Wrap all the objects that are associated with a new CallSession request into a class
      */
+    @ExperimentalAppActions
     data class PendingConnectionRequest(
         /**
          * requestIdMatcher - is important for matching requests sent to the platform via
diff --git a/core/core-telecom/src/main/java/androidx/core/telecom/util/ExperimentalAppActions.java b/core/core-telecom/src/main/java/androidx/core/telecom/util/ExperimentalAppActions.kt
similarity index 80%
rename from core/core-telecom/src/main/java/androidx/core/telecom/util/ExperimentalAppActions.java
rename to core/core-telecom/src/main/java/androidx/core/telecom/util/ExperimentalAppActions.kt
index 65af69e..510a739 100644
--- a/core/core-telecom/src/main/java/androidx/core/telecom/util/ExperimentalAppActions.java
+++ b/core/core-telecom/src/main/java/androidx/core/telecom/util/ExperimentalAppActions.kt
@@ -1,5 +1,5 @@
 /*
- * Copyright 2023 The Android Open Source Project
+ * Copyright 2024 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -14,13 +14,12 @@
  * limitations under the License.
  */
 
-package androidx.core.telecom.util;
-
-import androidx.annotation.RequiresOptIn;
+package androidx.core.telecom.util
 
 /**
  * This API is still experimental. Any features associated with this annotation are unstable and
  * should not be used in production.
  */
 @RequiresOptIn
-public @interface ExperimentalAppActions {}
+@Retention(AnnotationRetention.BINARY)
+annotation class ExperimentalAppActions
diff --git a/libraryversions.toml b/libraryversions.toml
index 86dc06a..e5ac6ca 100644
--- a/libraryversions.toml
+++ b/libraryversions.toml
@@ -43,7 +43,7 @@
 CORE_REMOTEVIEWS = "1.1.0-rc01"
 CORE_ROLE = "1.2.0-alpha01"
 CORE_SPLASHSCREEN = "1.2.0-alpha01"
-CORE_TELECOM = "1.0.0-alpha05"
+CORE_TELECOM = "1.0.0-alpha06"
 CORE_UWB = "1.0.0-alpha08"
 CREDENTIALS = "1.3.0-alpha04"
 CREDENTIALS_E2EE_QUARANTINE = "1.0.0-alpha02"