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

Commit 2bf529b7 authored by Md Shahriar Hossain Sajib's avatar Md Shahriar Hossain Sajib
Browse files

Refactoring API names to increase scope for future

Bug: 269363672
Test: atest BluetoothInstrumentationTests
Tag: #feature
Change-Id: Ib0ef1fdc3a9dd03f89b9d67d6b490d9f287b5828
parent 27b284ff
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -20,13 +20,13 @@ import android.annotation.RequiresPermission;
import android.annotation.SuppressLint;
import android.bluetooth.BluetoothA2dp;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothAudioPolicy;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothHapClient;
import android.bluetooth.BluetoothHeadset;
import android.bluetooth.BluetoothHearingAid;
import android.bluetooth.BluetoothLeAudio;
import android.bluetooth.BluetoothProfile;
import android.bluetooth.BluetoothSinkAudioPolicy;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
@@ -706,9 +706,9 @@ class ActiveDeviceManager {
        if (headsetService == null) {
            return;
        }
        BluetoothAudioPolicy audioPolicy = headsetService.getHfpCallAudioPolicy(device);
        if (audioPolicy == null || audioPolicy.getConnectingTimePolicy()
                != BluetoothAudioPolicy.POLICY_NOT_ALLOWED) {
        BluetoothSinkAudioPolicy audioPolicy = headsetService.getHfpCallAudioPolicy(device);
        if (audioPolicy == null || audioPolicy.getActiveDevicePolicyAfterConnection()
                != BluetoothSinkAudioPolicy.POLICY_NOT_ALLOWED) {
            if (!headsetService.setActiveDevice(device)) {
                return;
            }
+32 −29
Original line number Diff line number Diff line
@@ -45,7 +45,6 @@ import android.bluetooth.BluetoothActivityEnergyInfo;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothAdapter.ActiveDeviceProfile;
import android.bluetooth.BluetoothAdapter.ActiveDeviceUse;
import android.bluetooth.BluetoothAudioPolicy;
import android.bluetooth.BluetoothClass;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothFrameworkInitializer;
@@ -54,6 +53,7 @@ import android.bluetooth.BluetoothProfile;
import android.bluetooth.BluetoothProtoEnums;
import android.bluetooth.BluetoothSap;
import android.bluetooth.BluetoothServerSocket;
import android.bluetooth.BluetoothSinkAudioPolicy;
import android.bluetooth.BluetoothSocket;
import android.bluetooth.BluetoothStatusCodes;
import android.bluetooth.BluetoothUuid;
@@ -4018,70 +4018,73 @@ public class AdapterService extends Service {
        }

        @Override
        public void getAudioPolicyRemoteSupported(BluetoothDevice device,
        public void isRequestAudioPolicyAsSinkSupported(BluetoothDevice device,
                AttributionSource source, SynchronousResultReceiver receiver) {
            try {
                receiver.send(getAudioPolicyRemoteSupported(device, source));
                receiver.send(isRequestAudioPolicyAsSinkSupported(device, source));
            } catch (RuntimeException e) {
                receiver.propagateException(e);
            }
        }
        private int getAudioPolicyRemoteSupported(BluetoothDevice device,
        private int isRequestAudioPolicyAsSinkSupported(BluetoothDevice device,
                AttributionSource source) {
            AdapterService service = getService();
            if (service == null
                    || !callerIsSystemOrActiveOrManagedUser(service, TAG,
                        "getAudioPolicyRemoteSupported")
                        "isRequestAudioPolicyAsSinkSupported")
                    || !Utils.checkConnectPermissionForDataDelivery(service, source, TAG)) {
                return BluetoothAudioPolicy.FEATURE_UNCONFIGURED_BY_REMOTE;
                return BluetoothStatusCodes.FEATURE_NOT_CONFIGURED;
            }
            enforceBluetoothPrivilegedPermission(service);
            return service.getAudioPolicyRemoteSupported(device);
            return service.isRequestAudioPolicyAsSinkSupported(device);
        }

        @Override
        public void setAudioPolicy(BluetoothDevice device, BluetoothAudioPolicy policies,
                AttributionSource source, SynchronousResultReceiver receiver) {
        public void requestAudioPolicyAsSink(BluetoothDevice device,
                BluetoothSinkAudioPolicy policies, AttributionSource source,
                SynchronousResultReceiver receiver) {
            try {
                receiver.send(setAudioPolicy(device, policies, source));
                receiver.send(requestAudioPolicyAsSink(device, policies, source));
            } catch (RuntimeException e) {
                receiver.propagateException(e);
            }
        }
        private int setAudioPolicy(BluetoothDevice device, BluetoothAudioPolicy policies,
                AttributionSource source) {
        private int requestAudioPolicyAsSink(BluetoothDevice device,
                BluetoothSinkAudioPolicy policies, AttributionSource source) {
            AdapterService service = getService();
            if (service == null) {
                return BluetoothStatusCodes.ERROR_BLUETOOTH_NOT_ENABLED;
            } else if (!callerIsSystemOrActiveOrManagedUser(service, TAG, "setAudioPolicy")) {
            } else if (!callerIsSystemOrActiveOrManagedUser(service,
                    TAG, "requestAudioPolicyAsSink")) {
                return BluetoothStatusCodes.ERROR_BLUETOOTH_NOT_ALLOWED;
            } else if (!Utils.checkConnectPermissionForDataDelivery(
                    service, source, TAG)) {
                return BluetoothStatusCodes.ERROR_MISSING_BLUETOOTH_CONNECT_PERMISSION;
            }
            enforceBluetoothPrivilegedPermission(service);
            return service.setAudioPolicy(device, policies);
            return service.requestAudioPolicyAsSink(device, policies);
        }

        @Override
        public void getAudioPolicy(BluetoothDevice device,
        public void getRequestedAudioPolicyAsSink(BluetoothDevice device,
                AttributionSource source, SynchronousResultReceiver receiver) {
            try {
                receiver.send(getAudioPolicy(device, source));
                receiver.send(getRequestedAudioPolicyAsSink(device, source));
            } catch (RuntimeException e) {
                receiver.propagateException(e);
            }
        }
        private BluetoothAudioPolicy getAudioPolicy(BluetoothDevice device,
        private BluetoothSinkAudioPolicy getRequestedAudioPolicyAsSink(BluetoothDevice device,
                AttributionSource source) {
            AdapterService service = getService();
            if (service == null
                    || !callerIsSystemOrActiveOrManagedUser(service, TAG, "getAudioPolicy")
                    || !callerIsSystemOrActiveOrManagedUser(service,
                            TAG, "getRequestedAudioPolicyAsSink")
                    || !Utils.checkConnectPermissionForDataDelivery(service, source, TAG)) {
                return null;
            }
            enforceBluetoothPrivilegedPermission(service);
            return service.getAudioPolicy(device);
            return service.getRequestedAudioPolicyAsSink(device);
        }

        @Override
@@ -6329,12 +6332,12 @@ public class AdapterService extends Service {
     * @param device Bluetooth device to be checked for audio policy support
     * @return int status of the remote support for audio policy feature
     */
    public int getAudioPolicyRemoteSupported(BluetoothDevice device) {
    public int isRequestAudioPolicyAsSinkSupported(BluetoothDevice device) {
        if (mHeadsetClientService != null) {
            return mHeadsetClientService.getAudioPolicyRemoteSupported(device);
        } else {
            Log.e(TAG, "No audio transport connected");
            return BluetoothAudioPolicy.FEATURE_UNCONFIGURED_BY_REMOTE;
            return BluetoothStatusCodes.FEATURE_NOT_CONFIGURED;
        }
    }

@@ -6342,19 +6345,19 @@ public class AdapterService extends Service {
     * Set audio policy for remote device
     *
     * @param device Bluetooth device to be set policy for
     * @return int result status for setAudioPolicy API
     * @return int result status for requestAudioPolicyAsSink API
     */
    public int setAudioPolicy(BluetoothDevice device, BluetoothAudioPolicy policies) {
    public int requestAudioPolicyAsSink(BluetoothDevice device, BluetoothSinkAudioPolicy policies) {
        DeviceProperties deviceProp = mRemoteDevices.getDeviceProperties(device);
        if (deviceProp == null) {
            return BluetoothStatusCodes.ERROR_DEVICE_NOT_BONDED;
        }

        if (mHeadsetClientService != null) {
            if (getAudioPolicyRemoteSupported(device)
                    != BluetoothAudioPolicy.FEATURE_SUPPORTED_BY_REMOTE) {
                Log.w(TAG, "Audio Policy feature not supported by AG");
                return BluetoothStatusCodes.FEATURE_NOT_SUPPORTED;
            if (isRequestAudioPolicyAsSinkSupported(device)
                    != BluetoothStatusCodes.FEATURE_SUPPORTED) {
                throw new UnsupportedOperationException(
                        "Request Audio Policy As Sink not supported");
            }
            deviceProp.setHfAudioPolicyForRemoteAg(policies);
            mHeadsetClientService.setAudioPolicy(device, policies);
@@ -6369,9 +6372,9 @@ public class AdapterService extends Service {
     * Get audio policy for remote device
     *
     * @param device Bluetooth device to be set policy for
     * @return {@link BluetoothAudioPolicy} policy stored for the device
     * @return {@link BluetoothSinkAudioPolicy} policy stored for the device
     */
    public BluetoothAudioPolicy getAudioPolicy(BluetoothDevice device) {
    public BluetoothSinkAudioPolicy getRequestedAudioPolicyAsSink(BluetoothDevice device) {
        DeviceProperties deviceProp = mRemoteDevices.getDeviceProperties(device);
        if (deviceProp == null) {
            return null;
+4 −4
Original line number Diff line number Diff line
@@ -23,13 +23,13 @@ import android.annotation.RequiresPermission;
import android.app.admin.SecurityLog;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothAssignedNumbers;
import android.bluetooth.BluetoothAudioPolicy;
import android.bluetooth.BluetoothClass;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothHeadset;
import android.bluetooth.BluetoothHeadsetClient;
import android.bluetooth.BluetoothManager;
import android.bluetooth.BluetoothProfile;
import android.bluetooth.BluetoothSinkAudioPolicy;
import android.bluetooth.IBluetoothConnectionCallback;
import android.content.BroadcastReceiver;
import android.content.Context;
@@ -321,7 +321,7 @@ final class RemoteDevices {
        @VisibleForTesting int mBondState;
        @VisibleForTesting int mDeviceType;
        @VisibleForTesting ParcelUuid[] mUuids;
        private BluetoothAudioPolicy mAudioPolicy;
        private BluetoothSinkAudioPolicy mAudioPolicy;

        DeviceProperties() {
            mBondState = BluetoothDevice.BOND_NONE;
@@ -666,11 +666,11 @@ final class RemoteDevices {
            }
        }

        public void setHfAudioPolicyForRemoteAg(BluetoothAudioPolicy policies) {
        public void setHfAudioPolicyForRemoteAg(BluetoothSinkAudioPolicy policies) {
            mAudioPolicy = policies;
        }

        public BluetoothAudioPolicy getHfAudioPolicyForRemoteAg() {
        public BluetoothSinkAudioPolicy getHfAudioPolicyForRemoteAg() {
            return mAudioPolicy;
        }
    }
+4 −4
Original line number Diff line number Diff line
@@ -16,7 +16,7 @@

package com.android.bluetooth.btservice.storage;

import android.bluetooth.BluetoothAudioPolicy;
import android.bluetooth.BluetoothSinkAudioPolicy;

import androidx.room.ColumnInfo;
import androidx.room.Entity;
@@ -31,9 +31,9 @@ class AudioPolicyEntity {
    public int inBandRingtoneAudioPolicy;

    AudioPolicyEntity() {
        callEstablishAudioPolicy = BluetoothAudioPolicy.POLICY_UNCONFIGURED;
        connectingTimeAudioPolicy = BluetoothAudioPolicy.POLICY_UNCONFIGURED;
        inBandRingtoneAudioPolicy = BluetoothAudioPolicy.POLICY_UNCONFIGURED;
        callEstablishAudioPolicy = BluetoothSinkAudioPolicy.POLICY_UNCONFIGURED;
        connectingTimeAudioPolicy = BluetoothSinkAudioPolicy.POLICY_UNCONFIGURED;
        inBandRingtoneAudioPolicy = BluetoothSinkAudioPolicy.POLICY_UNCONFIGURED;
    }

    AudioPolicyEntity(int callEstablishAudioPolicy, int connectingTimeAudioPolicy,
+7 −6
Original line number Diff line number Diff line
@@ -20,10 +20,10 @@ import android.bluetooth.BluetoothA2dp;
import android.bluetooth.BluetoothA2dp.OptionalCodecsPreferenceStatus;
import android.bluetooth.BluetoothA2dp.OptionalCodecsSupportStatus;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothAudioPolicy;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothProfile;
import android.bluetooth.BluetoothProtoEnums;
import android.bluetooth.BluetoothSinkAudioPolicy;
import android.bluetooth.BluetoothStatusCodes;
import android.content.BroadcastReceiver;
import android.content.ContentResolver;
@@ -290,7 +290,8 @@ public class DatabaseManager {
     * Set audio policy metadata to database with requested key
     */
    @VisibleForTesting
    public boolean setAudioPolicyMetadata(BluetoothDevice device, BluetoothAudioPolicy policies) {
    public boolean setAudioPolicyMetadata(BluetoothDevice device,
            BluetoothSinkAudioPolicy policies) {
        synchronized (mMetadataCache) {
            if (device == null) {
                Log.e(TAG, "setAudioPolicyMetadata: device is null");
@@ -304,7 +305,7 @@ public class DatabaseManager {
            Metadata data = mMetadataCache.get(address);
            AudioPolicyEntity entity = data.audioPolicyMetadata;
            entity.callEstablishAudioPolicy = policies.getCallEstablishPolicy();
            entity.connectingTimeAudioPolicy = policies.getConnectingTimePolicy();
            entity.connectingTimeAudioPolicy = policies.getActiveDevicePolicyAfterConnection();
            entity.inBandRingtoneAudioPolicy = policies.getInBandRingtonePolicy();

            updateDatabase(data);
@@ -316,7 +317,7 @@ public class DatabaseManager {
     * Get audio policy metadata from database with requested key
     */
    @VisibleForTesting
    public BluetoothAudioPolicy getAudioPolicyMetadata(BluetoothDevice device) {
    public BluetoothSinkAudioPolicy getAudioPolicyMetadata(BluetoothDevice device) {
        synchronized (mMetadataCache) {
            if (device == null) {
                Log.e(TAG, "getAudioPolicyMetadata: device is null");
@@ -331,9 +332,9 @@ public class DatabaseManager {
            }

            AudioPolicyEntity entity = mMetadataCache.get(address).audioPolicyMetadata;
            return new BluetoothAudioPolicy.Builder()
            return new BluetoothSinkAudioPolicy.Builder()
                    .setCallEstablishPolicy(entity.callEstablishAudioPolicy)
                    .setConnectingTimePolicy(entity.connectingTimeAudioPolicy)
                    .setActiveDevicePolicyAfterConnection(entity.connectingTimeAudioPolicy)
                    .setInBandRingtonePolicy(entity.inBandRingtoneAudioPolicy)
                    .build();
        }
Loading