From d31ca2ac1d5c28ab851756b93c7836601f80465d Mon Sep 17 00:00:00 2001 From: Jean-Michel Trivi Date: Mon, 2 Oct 2023 14:32:07 -0700 Subject: AudioManager: flag focus test APIs Flag test APIs for audio focus freeze (for deflaking tests) and timing queries. Using flag com.android.media.audio.flags.focus_freeze_test_api Test: atest android.media.audio.cts.AudioFocusTest Bug: 301713440 Change-Id: I36a3803bf699b9b4f73232e401f61fcae0bca4c9 --- core/api/test-current.txt | 10 +++++----- media/java/android/media/AudioManager.java | 7 +++++++ 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/core/api/test-current.txt b/core/api/test-current.txt index 83b68808b62c..32c45646a902 100644 --- a/core/api/test-current.txt +++ b/core/api/test-current.txt @@ -1794,8 +1794,8 @@ package android.media { 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); - 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); + 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 @@ package android.media { 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 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 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 getReportedSurroundFormats(); diff --git a/media/java/android/media/AudioManager.java b/media/java/android/media/AudioManager.java index 9ad5c3e79543..eea635771dc3 100644 --- a/media/java/android/media/AudioManager.java +++ b/media/java/android/media/AudioManager.java @@ -21,9 +21,11 @@ import static android.companion.virtual.VirtualDeviceParams.POLICY_TYPE_AUDIO; 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 @@ public class AudioManager { * @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 getFocusDuckedUidsForTest() { try { @@ -4766,6 +4769,7 @@ public class AudioManager { * @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 @@ public class AudioManager { * @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 @@ public class AudioManager { * 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 exemptedUids) { Objects.requireNonNull(exemptedUids); @@ -4826,6 +4832,7 @@ public class AudioManager { * 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 { -- cgit v1.2.3-59-g8ed1b