Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 49c74c9b authored by Oscar Azucena's avatar Oscar Azucena
Browse files

Fixed API review comments on primitive types on assistant APIs

Removed list of boxed integers in favor of array of integers to avoid
the cost of auto-boxing. Also added defensive copying of the integer
arrays where needed.

Bug: 219768765
Bug: 218793188
Test: atest AudioManagerTest
Change-Id: I6103fb78ab366b423336e168eaf5e38f8b0401ef
parent 1ee5e0e7
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -6041,7 +6041,7 @@ package android.media {
  public class AudioManager {
    method @Deprecated public int abandonAudioFocus(android.media.AudioManager.OnAudioFocusChangeListener, android.media.AudioAttributes);
    method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public void addAssistantServicesUids(@NonNull java.util.List<java.lang.Integer>);
    method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public void addAssistantServicesUids(@NonNull int[]);
    method @Deprecated @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public void addOnPreferredDeviceForStrategyChangedListener(@NonNull java.util.concurrent.Executor, @NonNull android.media.AudioManager.OnPreferredDeviceForStrategyChangedListener) throws java.lang.SecurityException;
    method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public void addOnPreferredDevicesForCapturePresetChangedListener(@NonNull java.util.concurrent.Executor, @NonNull android.media.AudioManager.OnPreferredDevicesForCapturePresetChangedListener) throws java.lang.SecurityException;
    method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public void addOnPreferredDevicesForStrategyChangedListener(@NonNull java.util.concurrent.Executor, @NonNull android.media.AudioManager.OnPreferredDevicesForStrategyChangedListener) throws java.lang.SecurityException;
@@ -6049,9 +6049,9 @@ package android.media {
    method public void clearAudioServerStateCallback();
    method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public boolean clearPreferredDevicesForCapturePreset(int);
    method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public int dispatchAudioFocusChange(@NonNull android.media.AudioFocusInfo, int, @NonNull android.media.audiopolicy.AudioPolicy);
    method @NonNull @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public java.util.List<java.lang.Integer> getActiveAssistantServicesUids();
    method @NonNull @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public int[] getActiveAssistantServicesUids();
    method @IntRange(from=0) public long getAdditionalOutputDeviceDelay(@NonNull android.media.AudioDeviceInfo);
    method @NonNull @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public java.util.List<java.lang.Integer> getAssistantServicesUids();
    method @NonNull @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public int[] getAssistantServicesUids();
    method @NonNull @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public static java.util.List<android.media.audiopolicy.AudioProductStrategy> getAudioProductStrategies();
    method @NonNull @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public static java.util.List<android.media.audiopolicy.AudioVolumeGroup> getAudioVolumeGroups();
    method @NonNull @RequiresPermission(android.Manifest.permission.CALL_AUDIO_INTERCEPTION) public android.media.AudioRecord getCallDownlinkExtractionAudioRecord(@NonNull android.media.AudioFormat);
@@ -6076,7 +6076,7 @@ package android.media {
    method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public int registerAudioPolicy(@NonNull android.media.audiopolicy.AudioPolicy);
    method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public void registerMuteAwaitConnectionCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.AudioManager.MuteAwaitConnectionCallback);
    method public void registerVolumeGroupCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.AudioManager.VolumeGroupCallback);
    method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public void removeAssistantServicesUids(@NonNull java.util.List<java.lang.Integer>);
    method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public void removeAssistantServicesUids(@NonNull int[]);
    method @Deprecated @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public void removeOnPreferredDeviceForStrategyChangedListener(@NonNull android.media.AudioManager.OnPreferredDeviceForStrategyChangedListener);
    method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public void removeOnPreferredDevicesForCapturePresetChangedListener(@NonNull android.media.AudioManager.OnPreferredDevicesForCapturePresetChangedListener);
    method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public void removeOnPreferredDevicesForStrategyChangedListener(@NonNull android.media.AudioManager.OnPreferredDevicesForStrategyChangedListener);
@@ -6084,7 +6084,7 @@ package android.media {
    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public int requestAudioFocus(android.media.AudioManager.OnAudioFocusChangeListener, @NonNull android.media.AudioAttributes, int, int) throws java.lang.IllegalArgumentException;
    method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.MODIFY_PHONE_STATE, android.Manifest.permission.MODIFY_AUDIO_ROUTING}) public int requestAudioFocus(android.media.AudioManager.OnAudioFocusChangeListener, @NonNull android.media.AudioAttributes, int, int, android.media.audiopolicy.AudioPolicy) throws java.lang.IllegalArgumentException;
    method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public int requestAudioFocus(@NonNull android.media.AudioFocusRequest, @Nullable android.media.audiopolicy.AudioPolicy);
    method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public void setActiveAssistantServiceUids(@NonNull java.util.List<java.lang.Integer>);
    method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public void setActiveAssistantServiceUids(@NonNull int[]);
    method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public boolean setAdditionalOutputDeviceDelay(@NonNull android.media.AudioDeviceInfo, @IntRange(from=0) long);
    method public void setAudioServerStateCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.AudioManager.AudioServerStateCallback);
    method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public void setDeviceVolumeBehavior(@NonNull android.media.AudioDeviceAttributes, int);
+27 −31
Original line number Diff line number Diff line
@@ -91,7 +91,6 @@ import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.Executor;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;

/**
 * AudioManager provides access to volume and ringer mode control.
@@ -8344,100 +8343,97 @@ public class AudioManager {
    }

    /**
     * Add UID's that can be considered as assistant.
     * Add UIDs that can be considered as assistant.
     *
     * @param assistantUids UID's of the services that can be considered as assistant.
     * @param assistantUids UIDs of the services that can be considered as assistant.
     *
     * @hide
     */
    @SystemApi
    @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
    public void addAssistantServicesUids(@NonNull List<Integer> assistantUids) {
    public void addAssistantServicesUids(@NonNull int[] assistantUids) {
        try {
            getService().addAssistantServicesUids(assistantUids.stream()
                    .mapToInt(Integer::intValue).toArray());
            getService().addAssistantServicesUids(assistantUids);
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }
    }

    /**
     * Remove UID's that can be considered as assistant.
     * Remove UIDs that can be considered as assistant.
     *
     * @param assistantUids UID'S of the services that should be remove.
     * @param assistantUids UIDs of the services that should be remove.
     *
     * @hide
     */
    @SystemApi
    @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
    public void removeAssistantServicesUids(@NonNull List<Integer> assistantUids) {
    public void removeAssistantServicesUids(@NonNull int[] assistantUids) {
        try {
            getService().removeAssistantServicesUids(assistantUids.stream()
                    .mapToInt(Integer::intValue).toArray());
            getService().removeAssistantServicesUids(assistantUids);
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }
    }

    /**
     * Get the list of assistants UIDs that been added with the
     * {@link #addAssistantServicesUids(List)} (List)} and not yet removed with
     * {@link #removeAssistantServicesUids(List)}
     * Get the assistants UIDs that been added with the
     * {@link #addAssistantServicesUids(int[])} and not yet removed with
     * {@link #removeAssistantServicesUids(int[])}
     *
     * @return list of assistants UID's
     * @return array of assistants UIDs
     *
     * @hide
     */
    @SystemApi
    @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
    public @NonNull List<Integer> getAssistantServicesUids() {
    public @NonNull int[] getAssistantServicesUids() {
        try {
            int[] uids = getService().getAssistantServicesUids();
            return Arrays.stream(uids).boxed().collect(Collectors.toList());
            return Arrays.copyOf(uids, uids.length);
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }
    }

    /**
     * Sets UID's that can be considered as active assistant. Calling the API with a new list will
     * overwrite previous list. If the list of UIDs is empty then no UID will be considered active.
     * In this manner calling the API with an empty list will remove all UID's previously set.
     * Sets UIDs that can be considered as active assistant. Calling the API with a new array will
     * overwrite previous UIDs. If the array of UIDs is empty then no UID will be considered active.
     * In this manner calling the API with an empty array will remove all UIDs previously set.
     *
     * @param assistantUids UID'S of the services that can be considered active assistant. Can be
     * an empty list, for this no UID will be considered active.
     * @param assistantUids UIDs of the services that can be considered active assistant. Can be
     * an empty array, for this no UID will be considered active.
     *
     * <p> Note that during audio service crash reset and after boot up the list of active assistant
     * UID's will be reset to an empty list (i.e. no UID will be considered as an active assistant).
     * UIDs will be reset to an empty list (i.e. no UID will be considered as an active assistant).
     * Just after user switch the list of active assistant will also reset to empty.
     *
     * @hide
     */
    @SystemApi
    @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
    public void setActiveAssistantServiceUids(@NonNull List<Integer>  assistantUids) {
    public void setActiveAssistantServiceUids(@NonNull int[]  assistantUids) {
        try {
            getService().setActiveAssistantServiceUids(assistantUids.stream()
                    .mapToInt(Integer::intValue).toArray());
            getService().setActiveAssistantServiceUids(assistantUids);
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }
    }

    /**
     * Get the list of active assistant UIDs last set with the
     * {@link #setActiveAssistantServiceUids(List)}
     * Get active assistant UIDs last set with the
     * {@link #setActiveAssistantServiceUids(int[])}
     *
     * @return list of active assistants UID's
     * @return array of active assistants UIDs
     *
     * @hide
     */
    @SystemApi
    @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
    public @NonNull List<Integer> getActiveAssistantServicesUids() {
    public @NonNull int[] getActiveAssistantServicesUids() {
        try {
            int[] uids = getService().getActiveAssistantServiceUids();
            return Arrays.stream(uids).boxed().collect(Collectors.toList());
            return Arrays.copyOf(uids, uids.length);
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }
+1 −0
Original line number Diff line number Diff line
@@ -11208,6 +11208,7 @@ public class AudioService extends IAudioService.Stub
    @Override
    public void setActiveAssistantServiceUids(int [] activeAssistantUids) {
        enforceModifyAudioRoutingPermission();
        Objects.requireNonNull(activeAssistantUids);
        synchronized (mSettingsLock) {
            mActiveAssistantServiceUids = activeAssistantUids;
        }