Merge "AudioManager: flag focus test APIs" into main
diff --git a/core/api/test-current.txt b/core/api/test-current.txt
index 6cda015..3c6e3e6 100644
--- a/core/api/test-current.txt
+++ b/core/api/test-current.txt
@@ -1794,8 +1794,8 @@
 
   public class AudioManager {
     method @RequiresPermission("android.permission.QUERY_AUDIO_STATE") public int abandonAudioFocusForTest(@NonNull android.media.AudioFocusRequest, @NonNull String);
-    method @RequiresPermission("Manifest.permission.MODIFY_AUDIO_SETTINGS_PRIVILEGED") public boolean enterAudioFocusFreezeForTest(@NonNull java.util.List<java.lang.Integer>);
-    method @RequiresPermission("Manifest.permission.MODIFY_AUDIO_SETTINGS_PRIVILEGED") public boolean exitAudioFocusFreezeForTest();
+    method @FlaggedApi("com.android.media.audio.flags.focus_freeze_test_api") @RequiresPermission("Manifest.permission.MODIFY_AUDIO_SETTINGS_PRIVILEGED") public boolean enterAudioFocusFreezeForTest(@NonNull java.util.List<java.lang.Integer>);
+    method @FlaggedApi("com.android.media.audio.flags.focus_freeze_test_api") @RequiresPermission("Manifest.permission.MODIFY_AUDIO_SETTINGS_PRIVILEGED") public boolean exitAudioFocusFreezeForTest();
     method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_SETTINGS_PRIVILEGED) public void forceComputeCsdOnAllDevices(boolean);
     method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_SETTINGS_PRIVILEGED) public void forceUseFrameworkMel(boolean);
     method @NonNull @RequiresPermission(android.Manifest.permission.CALL_AUDIO_INTERCEPTION) public android.media.AudioRecord getCallDownlinkExtractionAudioRecord(@NonNull android.media.AudioFormat);
@@ -1803,9 +1803,9 @@
     method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_SETTINGS_PRIVILEGED) public float getCsd();
     method @Nullable public static android.media.AudioDeviceInfo getDeviceInfoFromType(int);
     method @IntRange(from=0) @RequiresPermission("android.permission.QUERY_AUDIO_STATE") public long getFadeOutDurationOnFocusLossMillis(@NonNull android.media.AudioAttributes);
-    method @NonNull @RequiresPermission("android.permission.QUERY_AUDIO_STATE") public java.util.List<java.lang.Integer> getFocusDuckedUidsForTest();
-    method @RequiresPermission("android.permission.QUERY_AUDIO_STATE") public long getFocusFadeOutDurationForTest();
-    method @RequiresPermission("android.permission.QUERY_AUDIO_STATE") public long getFocusUnmuteDelayAfterFadeOutForTest();
+    method @FlaggedApi("com.android.media.audio.flags.focus_freeze_test_api") @NonNull @RequiresPermission("android.permission.QUERY_AUDIO_STATE") public java.util.List<java.lang.Integer> getFocusDuckedUidsForTest();
+    method @FlaggedApi("com.android.media.audio.flags.focus_freeze_test_api") @RequiresPermission("android.permission.QUERY_AUDIO_STATE") public long getFocusFadeOutDurationForTest();
+    method @FlaggedApi("com.android.media.audio.flags.focus_freeze_test_api") @RequiresPermission("android.permission.QUERY_AUDIO_STATE") public long getFocusUnmuteDelayAfterFadeOutForTest();
     method @Nullable public static android.media.AudioHalVersionInfo getHalVersion();
     method public static final int[] getPublicStreamTypes();
     method @NonNull public java.util.List<java.lang.Integer> getReportedSurroundFormats();
diff --git a/media/java/android/media/AudioManager.java b/media/java/android/media/AudioManager.java
index 9ad5c3e..eea6357 100644
--- a/media/java/android/media/AudioManager.java
+++ b/media/java/android/media/AudioManager.java
@@ -21,9 +21,11 @@
 import static android.content.Context.DEVICE_ID_DEFAULT;
 
 import static com.android.media.audio.flags.Flags.autoPublicVolumeApiHardening;
+import static com.android.media.audio.flags.Flags.FLAG_FOCUS_FREEZE_TEST_API;
 
 import android.Manifest;
 import android.annotation.CallbackExecutor;
+import android.annotation.FlaggedApi;
 import android.annotation.IntDef;
 import android.annotation.IntRange;
 import android.annotation.NonNull;
@@ -4751,6 +4753,7 @@
      * @return the list of UIDs, can be empty when no app is being ducked.
      */
     @TestApi
+    @FlaggedApi(FLAG_FOCUS_FREEZE_TEST_API)
     @RequiresPermission("android.permission.QUERY_AUDIO_STATE")
     public @NonNull List<Integer> getFocusDuckedUidsForTest() {
         try {
@@ -4766,6 +4769,7 @@
      * @return the fade out duration in ms
      */
     @TestApi
+    @FlaggedApi(FLAG_FOCUS_FREEZE_TEST_API)
     @RequiresPermission("android.permission.QUERY_AUDIO_STATE")
     public long getFocusFadeOutDurationForTest() {
         try {
@@ -4782,6 +4786,7 @@
      * @return the time gap after a fade-out completion on focus loss, and fade-in start in ms.
      */
     @TestApi
+    @FlaggedApi(FLAG_FOCUS_FREEZE_TEST_API)
     @RequiresPermission("android.permission.QUERY_AUDIO_STATE")
     public long getFocusUnmuteDelayAfterFadeOutForTest() {
         try {
@@ -4808,6 +4813,7 @@
      *     in a proper state with a predictable behavior for audio focus management.
      */
     @TestApi
+    @FlaggedApi(FLAG_FOCUS_FREEZE_TEST_API)
     @RequiresPermission("Manifest.permission.MODIFY_AUDIO_SETTINGS_PRIVILEGED")
     public boolean enterAudioFocusFreezeForTest(@NonNull List<Integer> exemptedUids) {
         Objects.requireNonNull(exemptedUids);
@@ -4826,6 +4832,7 @@
      *     such as the freeze already having ended, or not started.
      */
     @TestApi
+    @FlaggedApi(FLAG_FOCUS_FREEZE_TEST_API)
     @RequiresPermission("Manifest.permission.MODIFY_AUDIO_SETTINGS_PRIVILEGED")
     public boolean exitAudioFocusFreezeForTest() {
         try {