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

Commit 1bd29146 authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge changes I8e84ed0e,I9aad71db into main

* changes:
  VolumeControl: Clean api annotation
  VolumeControl: unify requireNonNull usage
parents 2608d2a8 e19aedc4
Loading
Loading
Loading
Loading
+21 −56
Original line number Diff line number Diff line
@@ -20,6 +20,8 @@ package com.android.bluetooth.vc;
import static android.Manifest.permission.BLUETOOTH_CONNECT;
import static android.Manifest.permission.BLUETOOTH_PRIVILEGED;

import static java.util.Objects.requireNonNull;

import android.annotation.RequiresPermission;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothProfile;
@@ -60,7 +62,6 @@ import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Executors;
@@ -128,22 +129,10 @@ public class VolumeControlService extends ProfileService {

        // Get AdapterService, VolumeControlNativeInterface, DatabaseManager, AudioManager.
        // None of them can be null.
        mAdapterService =
                Objects.requireNonNull(
                        AdapterService.getAdapterService(),
                        "AdapterService cannot be null when VolumeControlService starts");
        mDatabaseManager =
                Objects.requireNonNull(
                        mAdapterService.getDatabase(),
                        "DatabaseManager cannot be null when VolumeControlService starts");
        mVolumeControlNativeInterface =
                Objects.requireNonNull(
                        VolumeControlNativeInterface.getInstance(),
                        "VolumeControlNativeInterface cannot be null when VolumeControlService"
                                + " starts");
        mAudioManager = getSystemService(AudioManager.class);
        Objects.requireNonNull(
                mAudioManager, "AudioManager cannot be null when VolumeControlService starts");
        mAdapterService = requireNonNull(AdapterService.getAdapterService());
        mDatabaseManager = requireNonNull(mAdapterService.getDatabase());
        mVolumeControlNativeInterface = requireNonNull(VolumeControlNativeInterface.getInstance());
        mAudioManager = requireNonNull(getSystemService(AudioManager.class));

        // Start handler thread for state machines
        mHandler = new Handler(Looper.getMainLooper());
@@ -1232,7 +1221,7 @@ public class VolumeControlService extends ProfileService {
            return;
        }

        Objects.requireNonNull(stackEvent.device);
        requireNonNull(stackEvent.device);

        BluetoothDevice device = stackEvent.device;
        if (stackEvent.type == VolumeControlStackEvent.EVENT_TYPE_DEVICE_AVAILABLE) {
@@ -1528,6 +1517,8 @@ public class VolumeControlService extends ProfileService {

        @RequiresPermission(BLUETOOTH_CONNECT)
        private VolumeControlService getService(AttributionSource source) {
            requireNonNull(source);

            // Cache mService because it can change while getService is called
            VolumeControlService service = mService;

@@ -1546,8 +1537,6 @@ public class VolumeControlService extends ProfileService {

        @Override
        public List<BluetoothDevice> getConnectedDevices(AttributionSource source) {
            Objects.requireNonNull(source, "source cannot be null");

            VolumeControlService service = getService(source);
            if (service == null) {
                return Collections.emptyList();
@@ -1561,8 +1550,6 @@ public class VolumeControlService extends ProfileService {
        @Override
        public List<BluetoothDevice> getDevicesMatchingConnectionStates(
                int[] states, AttributionSource source) {
            Objects.requireNonNull(source, "source cannot be null");

            VolumeControlService service = getService(source);
            if (service == null) {
                return Collections.emptyList();
@@ -1575,8 +1562,7 @@ public class VolumeControlService extends ProfileService {

        @Override
        public int getConnectionState(BluetoothDevice device, AttributionSource source) {
            Objects.requireNonNull(device, "device cannot be null");
            Objects.requireNonNull(source, "source cannot be null");
            requireNonNull(device);

            VolumeControlService service = getService(source);
            if (service == null) {
@@ -1589,8 +1575,7 @@ public class VolumeControlService extends ProfileService {
        @Override
        public boolean setConnectionPolicy(
                BluetoothDevice device, int connectionPolicy, AttributionSource source) {
            Objects.requireNonNull(device, "device cannot be null");
            Objects.requireNonNull(source, "source cannot be null");
            requireNonNull(device);

            VolumeControlService service = getService(source);
            if (service == null) {
@@ -1603,8 +1588,7 @@ public class VolumeControlService extends ProfileService {

        @Override
        public int getConnectionPolicy(BluetoothDevice device, AttributionSource source) {
            Objects.requireNonNull(device, "device cannot be null");
            Objects.requireNonNull(source, "source cannot be null");
            requireNonNull(device);

            VolumeControlService service = getService(source);
            if (service == null) {
@@ -1617,8 +1601,7 @@ public class VolumeControlService extends ProfileService {

        @Override
        public boolean isVolumeOffsetAvailable(BluetoothDevice device, AttributionSource source) {
            Objects.requireNonNull(device, "device cannot be null");
            Objects.requireNonNull(source, "source cannot be null");
            requireNonNull(device);

            VolumeControlService service = getService(source);
            if (service == null) {
@@ -1632,8 +1615,7 @@ public class VolumeControlService extends ProfileService {
        @Override
        public int getNumberOfVolumeOffsetInstances(
                BluetoothDevice device, AttributionSource source) {
            Objects.requireNonNull(device, "device cannot be null");
            Objects.requireNonNull(source, "source cannot be null");
            requireNonNull(device);

            VolumeControlService service = getService(source);
            if (service == null) {
@@ -1650,8 +1632,7 @@ public class VolumeControlService extends ProfileService {
                int instanceId,
                int volumeOffset,
                AttributionSource source) {
            Objects.requireNonNull(device, "device cannot be null");
            Objects.requireNonNull(source, "source cannot be null");
            requireNonNull(device);

            VolumeControlService service = getService(source);
            if (service == null) {
@@ -1665,8 +1646,7 @@ public class VolumeControlService extends ProfileService {
        @Override
        public void setDeviceVolume(
                BluetoothDevice device, int volume, boolean isGroupOp, AttributionSource source) {
            Objects.requireNonNull(device, "device cannot be null");
            Objects.requireNonNull(source, "source cannot be null");
            requireNonNull(device);

            VolumeControlService service = getService(source);
            if (service == null) {
@@ -1679,8 +1659,6 @@ public class VolumeControlService extends ProfileService {

        @Override
        public void setGroupVolume(int groupId, int volume, AttributionSource source) {
            Objects.requireNonNull(source, "source cannot be null");

            VolumeControlService service = getService(source);
            if (service == null) {
                return;
@@ -1691,8 +1669,6 @@ public class VolumeControlService extends ProfileService {

        @Override
        public int getGroupVolume(int groupId, AttributionSource source) {
            Objects.requireNonNull(source, "source cannot be null");

            VolumeControlService service = getService(source);
            if (service == null) {
                return 0;
@@ -1703,8 +1679,6 @@ public class VolumeControlService extends ProfileService {

        @Override
        public void setGroupActive(int groupId, boolean active, AttributionSource source) {
            Objects.requireNonNull(source, "source cannot be null");

            VolumeControlService service = getService(source);
            if (service == null) {
                return;
@@ -1715,8 +1689,7 @@ public class VolumeControlService extends ProfileService {

        @Override
        public void mute(BluetoothDevice device, AttributionSource source) {
            Objects.requireNonNull(device, "device cannot be null");
            Objects.requireNonNull(source, "source cannot be null");
            requireNonNull(device);

            VolumeControlService service = getService(source);
            if (service == null) {
@@ -1728,8 +1701,6 @@ public class VolumeControlService extends ProfileService {

        @Override
        public void muteGroup(int groupId, AttributionSource source) {
            Objects.requireNonNull(source, "source cannot be null");

            VolumeControlService service = getService(source);
            if (service == null) {
                return;
@@ -1740,8 +1711,7 @@ public class VolumeControlService extends ProfileService {

        @Override
        public void unmute(BluetoothDevice device, AttributionSource source) {
            Objects.requireNonNull(device, "device cannot be null");
            Objects.requireNonNull(source, "source cannot be null");
            requireNonNull(device);

            VolumeControlService service = getService(source);
            if (service == null) {
@@ -1753,8 +1723,6 @@ public class VolumeControlService extends ProfileService {

        @Override
        public void unmuteGroup(int groupId, AttributionSource source) {
            Objects.requireNonNull(source, "source cannot be null");

            VolumeControlService service = getService(source);
            if (service == null) {
                return;
@@ -1779,8 +1747,7 @@ public class VolumeControlService extends ProfileService {
        @Override
        public void registerCallback(
                IBluetoothVolumeControlCallback callback, AttributionSource source) {
            Objects.requireNonNull(callback, "callback cannot be null");
            Objects.requireNonNull(source, "source cannot be null");
            requireNonNull(callback);

            VolumeControlService service = getService(source);
            if (service == null) {
@@ -1794,8 +1761,7 @@ public class VolumeControlService extends ProfileService {
        @Override
        public void notifyNewRegisteredCallback(
                IBluetoothVolumeControlCallback callback, AttributionSource source) {
            Objects.requireNonNull(callback, "callback cannot be null");
            Objects.requireNonNull(source, "source cannot be null");
            requireNonNull(callback);

            VolumeControlService service = getService(source);
            if (service == null) {
@@ -1809,8 +1775,7 @@ public class VolumeControlService extends ProfileService {
        @Override
        public void unregisterCallback(
                IBluetoothVolumeControlCallback callback, AttributionSource source) {
            Objects.requireNonNull(callback, "callback cannot be null");
            Objects.requireNonNull(source, "source cannot be null");
            requireNonNull(callback);

            VolumeControlService service = getService(source);
            if (service == null) {
+18 −11
Original line number Diff line number Diff line
@@ -21,6 +21,8 @@ import static android.Manifest.permission.BLUETOOTH_CONNECT;
import static android.Manifest.permission.BLUETOOTH_PRIVILEGED;
import static android.bluetooth.BluetoothUtils.executeFromBinder;

import static java.util.Objects.requireNonNull;

import android.annotation.CallbackExecutor;
import android.annotation.FlaggedApi;
import android.annotation.IntRange;
@@ -47,7 +49,6 @@ import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.concurrent.Executor;
import java.util.function.Consumer;

@@ -269,12 +270,12 @@ public final class BluetoothVolumeControl implements BluetoothProfile, AutoClose
    }

    /**
     * Close this VolumeControl server instance.
     * {@inheritDoc}
     *
     * <p>Application should call this method as early as possible after it is done with this
     * VolumeControl server.
     * @hide
     */
    @Override
    @SystemApi
    public void close() {
        Log.v(TAG, "close()");

@@ -344,11 +345,12 @@ public final class BluetoothVolumeControl implements BluetoothProfile, AutoClose
    }

    /**
     * Get the list of devices matching specified states. Currently at most one.
     * {@inheritDoc}
     *
     * @return list of matching devices
     * @hide
     */
    @Override
    @SystemApi
    @RequiresBluetoothConnectPermission
    @RequiresPermission(allOf = {BLUETOOTH_CONNECT, BLUETOOTH_PRIVILEGED})
    public List<BluetoothDevice> getDevicesMatchingConnectionStates(int[] states) {
@@ -369,11 +371,12 @@ public final class BluetoothVolumeControl implements BluetoothProfile, AutoClose
    }

    /**
     * Get connection state of device
     * {@inheritDoc}
     *
     * @return device connection state
     * @hide
     */
    @Override
    @SystemApi
    @RequiresBluetoothConnectPermission
    @RequiresPermission(BLUETOOTH_CONNECT)
    public int getConnectionState(BluetoothDevice device) {
@@ -409,8 +412,8 @@ public final class BluetoothVolumeControl implements BluetoothProfile, AutoClose
    @RequiresPermission(allOf = {BLUETOOTH_CONNECT, BLUETOOTH_PRIVILEGED})
    public void registerCallback(
            @NonNull @CallbackExecutor Executor executor, @NonNull Callback callback) {
        Objects.requireNonNull(executor, "executor cannot be null");
        Objects.requireNonNull(callback, "callback cannot be null");
        requireNonNull(executor);
        requireNonNull(callback);
        Log.d(TAG, "registerCallback");
        synchronized (mCallbackExecutorMap) {
            if (!mAdapter.isEnabled()) {
@@ -468,7 +471,7 @@ public final class BluetoothVolumeControl implements BluetoothProfile, AutoClose
    @RequiresBluetoothConnectPermission
    @RequiresPermission(allOf = {BLUETOOTH_CONNECT, BLUETOOTH_PRIVILEGED})
    public void unregisterCallback(@NonNull Callback callback) {
        Objects.requireNonNull(callback, "callback cannot be null");
        requireNonNull(callback);
        Log.d(TAG, "unregisterCallback");
        synchronized (mCallbackExecutorMap) {
            if (mCallbackExecutorMap.remove(callback) == null) {
@@ -553,6 +556,7 @@ public final class BluetoothVolumeControl implements BluetoothProfile, AutoClose
            @NonNull BluetoothDevice device,
            @IntRange(from = 1, to = 255) int instanceId,
            @IntRange(from = -255, to = 255) int volumeOffset) {
        requireNonNull(device);
        Log.d(
                TAG,
                "setVolumeOffset("
@@ -587,6 +591,7 @@ public final class BluetoothVolumeControl implements BluetoothProfile, AutoClose
    @RequiresBluetoothConnectPermission
    @RequiresPermission(allOf = {BLUETOOTH_CONNECT, BLUETOOTH_PRIVILEGED})
    public boolean isVolumeOffsetAvailable(@NonNull BluetoothDevice device) {
        requireNonNull(device);
        Log.d(TAG, "isVolumeOffsetAvailable(" + device + ")");
        final IBluetoothVolumeControl service = getService();
        if (service == null) {
@@ -618,6 +623,7 @@ public final class BluetoothVolumeControl implements BluetoothProfile, AutoClose
    @RequiresBluetoothConnectPermission
    @RequiresPermission(allOf = {BLUETOOTH_CONNECT, BLUETOOTH_PRIVILEGED})
    public int getNumberOfVolumeOffsetInstances(@NonNull BluetoothDevice device) {
        requireNonNull(device);
        Log.d(TAG, "getNumberOfVolumeOffsetInstances(" + device + ")");
        final IBluetoothVolumeControl service = getService();
        final int defaultValue = 0;
@@ -727,6 +733,7 @@ public final class BluetoothVolumeControl implements BluetoothProfile, AutoClose
            @NonNull BluetoothDevice device,
            @IntRange(from = 0, to = 255) int volume,
            boolean isGroupOperation) {
        requireNonNull(device);
        if (volume < 0 || volume > 255) {
            throw new IllegalArgumentException("illegal volume " + volume);
        }