Update LocalBluetoothProfile api

This CL include following change:

1. Rename isPreferred() to isEnabled().
2. Rename getPreferred() to getConnectionPolicy().
3. Rename setPreferred() to setEnabled().
4. Remove connect()/disconnect() since when call setEnabled() BT
   stack will base on input state to do connect/disconnect
   automatically.
5. Add/update test case.

Bug: 141582844
Test: make -j42 RunSettingsLibRoboTests
Change-Id: I9aa7d5157028671fcda705bf5cb957c26c4204ad
Merged-In: I9aa7d5157028671fcda705bf5cb957c26c4204ad
This commit is contained in:
hughchen
2020-02-03 19:44:46 +08:00
parent 01e574ab74
commit a41c2eb2da
25 changed files with 221 additions and 402 deletions

View File

@@ -150,21 +150,6 @@ public class A2dpProfile implements LocalBluetoothProfile {
return mService.getDevicesMatchingConnectionStates(states);
}
public boolean connect(BluetoothDevice device) {
if (mService == null) {
return false;
}
return mService.setConnectionPolicy(device, CONNECTION_POLICY_ALLOWED);
}
public boolean disconnect(BluetoothDevice device) {
if (mService == null) {
return false;
}
return mService.setConnectionPolicy(device, CONNECTION_POLICY_FORBIDDEN);
}
public int getConnectionStatus(BluetoothDevice device) {
if (mService == null) {
return BluetoothProfile.STATE_DISCONNECTED;
@@ -182,31 +167,37 @@ public class A2dpProfile implements LocalBluetoothProfile {
return mService.getActiveDevice();
}
public boolean isPreferred(BluetoothDevice device) {
@Override
public boolean isEnabled(BluetoothDevice device) {
if (mService == null) {
return false;
}
return mService.getConnectionPolicy(device) > CONNECTION_POLICY_FORBIDDEN;
}
public int getPreferred(BluetoothDevice device) {
@Override
public int getConnectionPolicy(BluetoothDevice device) {
if (mService == null) {
return CONNECTION_POLICY_FORBIDDEN;
}
return mService.getConnectionPolicy(device);
}
public void setPreferred(BluetoothDevice device, boolean preferred) {
@Override
public boolean setEnabled(BluetoothDevice device, boolean enabled) {
boolean isEnabled = false;
if (mService == null) {
return;
return false;
}
if (preferred) {
if (enabled) {
if (mService.getConnectionPolicy(device) < CONNECTION_POLICY_ALLOWED) {
mService.setConnectionPolicy(device, CONNECTION_POLICY_ALLOWED);
isEnabled = mService.setConnectionPolicy(device, CONNECTION_POLICY_ALLOWED);
}
} else {
mService.setConnectionPolicy(device, CONNECTION_POLICY_FORBIDDEN);
isEnabled = mService.setConnectionPolicy(device, CONNECTION_POLICY_FORBIDDEN);
}
return isEnabled;
}
boolean isA2dpPlaying() {
if (mService == null) return false;

View File

@@ -115,21 +115,6 @@ final class A2dpSinkProfile implements LocalBluetoothProfile {
BluetoothProfile.STATE_DISCONNECTING});
}
public boolean connect(BluetoothDevice device) {
if (mService == null) {
return false;
}
return mService.setConnectionPolicy(device, CONNECTION_POLICY_ALLOWED);
}
public boolean disconnect(BluetoothDevice device) {
if (mService == null) {
return false;
}
return mService.setConnectionPolicy(device, CONNECTION_POLICY_FORBIDDEN);
}
public int getConnectionStatus(BluetoothDevice device) {
if (mService == null) {
return BluetoothProfile.STATE_DISCONNECTED;
@@ -137,31 +122,37 @@ final class A2dpSinkProfile implements LocalBluetoothProfile {
return mService.getConnectionState(device);
}
public boolean isPreferred(BluetoothDevice device) {
@Override
public boolean isEnabled(BluetoothDevice device) {
if (mService == null) {
return false;
}
return mService.getConnectionPolicy(device) > CONNECTION_POLICY_FORBIDDEN;
}
public int getPreferred(BluetoothDevice device) {
@Override
public int getConnectionPolicy(BluetoothDevice device) {
if (mService == null) {
return CONNECTION_POLICY_FORBIDDEN;
}
return mService.getConnectionPolicy(device);
}
public void setPreferred(BluetoothDevice device, boolean preferred) {
@Override
public boolean setEnabled(BluetoothDevice device, boolean enabled) {
boolean isEnabled = false;
if (mService == null) {
return;
return false;
}
if (preferred) {
if (enabled) {
if (mService.getConnectionPolicy(device) < CONNECTION_POLICY_ALLOWED) {
mService.setConnectionPolicy(device, CONNECTION_POLICY_ALLOWED);
isEnabled = mService.setConnectionPolicy(device, CONNECTION_POLICY_ALLOWED);
}
} else {
mService.setConnectionPolicy(device, CONNECTION_POLICY_FORBIDDEN);
isEnabled = mService.setConnectionPolicy(device, CONNECTION_POLICY_FORBIDDEN);
}
return isEnabled;
}
boolean isAudioPlaying() {

View File

@@ -135,7 +135,7 @@ public class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice>
synchronized (mProfileLock) {
if (newProfileState == BluetoothProfile.STATE_CONNECTED) {
if (profile instanceof MapProfile) {
profile.setPreferred(mDevice, true);
profile.setEnabled(mDevice, true);
}
if (!mProfiles.contains(profile)) {
mRemovedProfiles.remove(profile);
@@ -148,7 +148,7 @@ public class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice>
}
} else if (profile instanceof MapProfile
&& newProfileState == BluetoothProfile.STATE_DISCONNECTED) {
profile.setPreferred(mDevice, false);
profile.setEnabled(mDevice, false);
} else if (mLocalNapRoleConnected && profile instanceof PanProfile
&& ((PanProfile) profile).isLocalRoleNap(mDevice)
&& newProfileState == BluetoothProfile.STATE_DISCONNECTED) {
@@ -172,12 +172,12 @@ public class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice>
PbapServerProfile PbapProfile = mProfileManager.getPbapProfile();
if (PbapProfile != null && isConnectedProfile(PbapProfile))
{
PbapProfile.disconnect(mDevice);
PbapProfile.setEnabled(mDevice, false);
}
}
public void disconnect(LocalBluetoothProfile profile) {
if (profile.disconnect(mDevice)) {
if (profile.setEnabled(mDevice, false)) {
if (BluetoothUtils.D) {
Log.d(TAG, "Command sent successfully:DISCONNECT " + describe(profile));
}
@@ -264,7 +264,7 @@ public class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice>
if (!ensurePaired()) {
return;
}
if (profile.connect(mDevice)) {
if (profile.setEnabled(mDevice, true)) {
if (BluetoothUtils.D) {
Log.d(TAG, "Command sent successfully:CONNECT " + describe(profile));
}

View File

@@ -111,21 +111,6 @@ public class HeadsetProfile implements LocalBluetoothProfile {
return true;
}
public boolean connect(BluetoothDevice device) {
if (mService == null) {
return false;
}
return mService.setConnectionPolicy(device, CONNECTION_POLICY_ALLOWED);
}
public boolean disconnect(BluetoothDevice device) {
if (mService == null) {
return false;
}
return mService.setConnectionPolicy(device, CONNECTION_POLICY_FORBIDDEN);
}
public int getConnectionStatus(BluetoothDevice device) {
if (mService == null) {
return BluetoothProfile.STATE_DISCONNECTED;
@@ -161,31 +146,37 @@ public class HeadsetProfile implements LocalBluetoothProfile {
return mService.getAudioState(device);
}
public boolean isPreferred(BluetoothDevice device) {
@Override
public boolean isEnabled(BluetoothDevice device) {
if (mService == null) {
return false;
}
return mService.getConnectionPolicy(device) > CONNECTION_POLICY_FORBIDDEN;
}
public int getPreferred(BluetoothDevice device) {
@Override
public int getConnectionPolicy(BluetoothDevice device) {
if (mService == null) {
return CONNECTION_POLICY_FORBIDDEN;
}
return mService.getConnectionPolicy(device);
}
public void setPreferred(BluetoothDevice device, boolean preferred) {
@Override
public boolean setEnabled(BluetoothDevice device, boolean enabled) {
boolean isEnabled = false;
if (mService == null) {
return;
return false;
}
if (preferred) {
if (enabled) {
if (mService.getConnectionPolicy(device) < CONNECTION_POLICY_ALLOWED) {
mService.setConnectionPolicy(device, CONNECTION_POLICY_ALLOWED);
isEnabled = mService.setConnectionPolicy(device, CONNECTION_POLICY_ALLOWED);
}
} else {
mService.setConnectionPolicy(device, CONNECTION_POLICY_FORBIDDEN);
isEnabled = mService.setConnectionPolicy(device, CONNECTION_POLICY_FORBIDDEN);
}
return isEnabled;
}
public List<BluetoothDevice> getConnectedDevices() {

View File

@@ -148,21 +148,6 @@ public class HearingAidProfile implements LocalBluetoothProfile {
return mService.getDevicesMatchingConnectionStates(states);
}
public boolean connect(BluetoothDevice device) {
if (mService == null) {
return false;
}
return mService.setConnectionPolicy(device, CONNECTION_POLICY_ALLOWED);
}
public boolean disconnect(BluetoothDevice device) {
if (mService == null) {
return false;
}
return mService.setConnectionPolicy(device, CONNECTION_POLICY_FORBIDDEN);
}
public int getConnectionStatus(BluetoothDevice device) {
if (mService == null) {
return BluetoothProfile.STATE_DISCONNECTED;
@@ -180,31 +165,37 @@ public class HearingAidProfile implements LocalBluetoothProfile {
return mService.getActiveDevices();
}
public boolean isPreferred(BluetoothDevice device) {
@Override
public boolean isEnabled(BluetoothDevice device) {
if (mService == null) {
return false;
}
return mService.getConnectionPolicy(device) > CONNECTION_POLICY_FORBIDDEN;
}
public int getPreferred(BluetoothDevice device) {
@Override
public int getConnectionPolicy(BluetoothDevice device) {
if (mService == null) {
return CONNECTION_POLICY_FORBIDDEN;
}
return mService.getConnectionPolicy(device);
}
public void setPreferred(BluetoothDevice device, boolean preferred) {
@Override
public boolean setEnabled(BluetoothDevice device, boolean enabled) {
boolean isEnabled = false;
if (mService == null) {
return;
return false;
}
if (preferred) {
if (enabled) {
if (mService.getConnectionPolicy(device) < CONNECTION_POLICY_ALLOWED) {
mService.setConnectionPolicy(device, CONNECTION_POLICY_ALLOWED);
isEnabled = mService.setConnectionPolicy(device, CONNECTION_POLICY_ALLOWED);
}
} else {
mService.setConnectionPolicy(device, CONNECTION_POLICY_FORBIDDEN);
isEnabled = mService.setConnectionPolicy(device, CONNECTION_POLICY_FORBIDDEN);
}
return isEnabled;
}
public void setVolume(int volume) {

View File

@@ -124,23 +124,6 @@ final class HfpClientProfile implements LocalBluetoothProfile {
BluetoothProfile.STATE_DISCONNECTING});
}
@Override
public boolean connect(BluetoothDevice device) {
if (mService == null) {
return false;
}
return mService.setConnectionPolicy(device, CONNECTION_POLICY_ALLOWED);
}
@Override
public boolean disconnect(BluetoothDevice device) {
if (mService == null) {
return false;
}
return mService.setConnectionPolicy(device, CONNECTION_POLICY_FORBIDDEN);
}
@Override
public int getConnectionStatus(BluetoothDevice device) {
if (mService == null) {
@@ -150,7 +133,7 @@ final class HfpClientProfile implements LocalBluetoothProfile {
}
@Override
public boolean isPreferred(BluetoothDevice device) {
public boolean isEnabled(BluetoothDevice device) {
if (mService == null) {
return false;
}
@@ -158,7 +141,7 @@ final class HfpClientProfile implements LocalBluetoothProfile {
}
@Override
public int getPreferred(BluetoothDevice device) {
public int getConnectionPolicy(BluetoothDevice device) {
if (mService == null) {
return CONNECTION_POLICY_FORBIDDEN;
}
@@ -166,17 +149,20 @@ final class HfpClientProfile implements LocalBluetoothProfile {
}
@Override
public void setPreferred(BluetoothDevice device, boolean preferred) {
public boolean setEnabled(BluetoothDevice device, boolean enabled) {
boolean isEnabled = false;
if (mService == null) {
return;
return false;
}
if (preferred) {
if (enabled) {
if (mService.getConnectionPolicy(device) < CONNECTION_POLICY_ALLOWED) {
mService.setConnectionPolicy(device, CONNECTION_POLICY_ALLOWED);
isEnabled = mService.setConnectionPolicy(device, CONNECTION_POLICY_ALLOWED);
}
} else {
mService.setConnectionPolicy(device, CONNECTION_POLICY_FORBIDDEN);
isEnabled = mService.setConnectionPolicy(device, CONNECTION_POLICY_FORBIDDEN);
}
return isEnabled;
}
@Override

View File

@@ -16,6 +16,8 @@
package com.android.settingslib.bluetooth;
import static android.bluetooth.BluetoothProfile.CONNECTION_POLICY_FORBIDDEN;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothClass;
import android.bluetooth.BluetoothDevice;
@@ -101,20 +103,6 @@ public class HidDeviceProfile implements LocalBluetoothProfile {
return false;
}
@Override
public boolean connect(BluetoothDevice device) {
// Don't invoke method in service because settings is not allowed to connect this profile.
return false;
}
@Override
public boolean disconnect(BluetoothDevice device) {
if (mService == null) {
return false;
}
return mService.disconnect(device);
}
@Override
public int getConnectionStatus(BluetoothDevice device) {
if (mService == null) {
@@ -124,21 +112,24 @@ public class HidDeviceProfile implements LocalBluetoothProfile {
}
@Override
public boolean isPreferred(BluetoothDevice device) {
public boolean isEnabled(BluetoothDevice device) {
return getConnectionStatus(device) != BluetoothProfile.STATE_DISCONNECTED;
}
@Override
public int getPreferred(BluetoothDevice device) {
public int getConnectionPolicy(BluetoothDevice device) {
return PREFERRED_VALUE;
}
@Override
public void setPreferred(BluetoothDevice device, boolean preferred) {
public boolean setEnabled(BluetoothDevice device, boolean enabled) {
boolean isEnabled = false;
// if set preferred to false, then disconnect to the current device
if (!preferred) {
mService.disconnect(device);
if (!enabled) {
isEnabled = mService.setConnectionPolicy(device, CONNECTION_POLICY_FORBIDDEN);
}
return isEnabled;
}
@Override

View File

@@ -101,20 +101,6 @@ public class HidProfile implements LocalBluetoothProfile {
return true;
}
public boolean connect(BluetoothDevice device) {
if (mService == null) {
return false;
}
return mService.setConnectionPolicy(device, CONNECTION_POLICY_ALLOWED);
}
public boolean disconnect(BluetoothDevice device) {
if (mService == null) {
return false;
}
return mService.setConnectionPolicy(device, CONNECTION_POLICY_FORBIDDEN);
}
public int getConnectionStatus(BluetoothDevice device) {
if (mService == null) {
return BluetoothProfile.STATE_DISCONNECTED;
@@ -122,29 +108,37 @@ public class HidProfile implements LocalBluetoothProfile {
return mService.getConnectionState(device);
}
public boolean isPreferred(BluetoothDevice device) {
@Override
public boolean isEnabled(BluetoothDevice device) {
if (mService == null) {
return false;
}
return mService.getConnectionPolicy(device) != CONNECTION_POLICY_FORBIDDEN;
}
public int getPreferred(BluetoothDevice device) {
@Override
public int getConnectionPolicy(BluetoothDevice device) {
if (mService == null) {
return CONNECTION_POLICY_FORBIDDEN;
}
return mService.getConnectionPolicy(device);
}
public void setPreferred(BluetoothDevice device, boolean preferred) {
if (mService == null) return;
if (preferred) {
@Override
public boolean setEnabled(BluetoothDevice device, boolean enabled) {
boolean isEnabled = false;
if (mService == null) {
return false;
}
if (enabled) {
if (mService.getConnectionPolicy(device) < CONNECTION_POLICY_ALLOWED) {
mService.setConnectionPolicy(device, CONNECTION_POLICY_ALLOWED);
isEnabled = mService.setConnectionPolicy(device, CONNECTION_POLICY_ALLOWED);
}
} else {
mService.setConnectionPolicy(device, CONNECTION_POLICY_FORBIDDEN);
isEnabled = mService.setConnectionPolicy(device, CONNECTION_POLICY_FORBIDDEN);
}
return isEnabled;
}
public String toString() {

View File

@@ -35,17 +35,26 @@ public interface LocalBluetoothProfile {
*/
boolean isAutoConnectable();
boolean connect(BluetoothDevice device);
boolean disconnect(BluetoothDevice device);
int getConnectionStatus(BluetoothDevice device);
boolean isPreferred(BluetoothDevice device);
/**
* Return {@code true} if the profile is enabled, otherwise return {@code false}.
* @param device the device to query for enable status
*/
boolean isEnabled(BluetoothDevice device);
int getPreferred(BluetoothDevice device);
/**
* Get the connection policy of the profile.
* @param device the device to query for enable status
*/
int getConnectionPolicy(BluetoothDevice device);
void setPreferred(BluetoothDevice device, boolean preferred);
/**
* Enable the profile if {@code enabled} is {@code true}, otherwise disable profile.
* @param device the device to set profile status
* @param enabled {@code true} for enable profile, otherwise disable profile.
*/
boolean setEnabled(BluetoothDevice device, boolean enabled);
boolean isProfileReady();

View File

@@ -528,14 +528,14 @@ public class LocalBluetoothProfileManager {
(mMapProfile.getConnectionStatus(device) == BluetoothProfile.STATE_CONNECTED)) {
profiles.add(mMapProfile);
removedProfiles.remove(mMapProfile);
mMapProfile.setPreferred(device, true);
mMapProfile.setEnabled(device, true);
}
if ((mPbapProfile != null) &&
(mPbapProfile.getConnectionStatus(device) == BluetoothProfile.STATE_CONNECTED)) {
profiles.add(mPbapProfile);
removedProfiles.remove(mPbapProfile);
mPbapProfile.setPreferred(device, true);
mPbapProfile.setEnabled(device, true);
}
if (mMapClientProfile != null) {

View File

@@ -114,21 +114,6 @@ public final class MapClientProfile implements LocalBluetoothProfile {
return true;
}
public boolean connect(BluetoothDevice device) {
if (mService == null) {
return false;
}
return mService.setConnectionPolicy(device, CONNECTION_POLICY_ALLOWED);
}
public boolean disconnect(BluetoothDevice device) {
if (mService == null) {
return false;
}
return mService.setConnectionPolicy(device, CONNECTION_POLICY_FORBIDDEN);
}
public int getConnectionStatus(BluetoothDevice device) {
if (mService == null) {
return BluetoothProfile.STATE_DISCONNECTED;
@@ -136,31 +121,37 @@ public final class MapClientProfile implements LocalBluetoothProfile {
return mService.getConnectionState(device);
}
public boolean isPreferred(BluetoothDevice device) {
@Override
public boolean isEnabled(BluetoothDevice device) {
if (mService == null) {
return false;
}
return mService.getConnectionPolicy(device) > CONNECTION_POLICY_FORBIDDEN;
}
public int getPreferred(BluetoothDevice device) {
@Override
public int getConnectionPolicy(BluetoothDevice device) {
if (mService == null) {
return CONNECTION_POLICY_FORBIDDEN;
}
return mService.getConnectionPolicy(device);
}
public void setPreferred(BluetoothDevice device, boolean preferred) {
@Override
public boolean setEnabled(BluetoothDevice device, boolean enabled) {
boolean isEnabled = false;
if (mService == null) {
return;
return false;
}
if (preferred) {
if (enabled) {
if (mService.getConnectionPolicy(device) < CONNECTION_POLICY_ALLOWED) {
mService.setConnectionPolicy(device, CONNECTION_POLICY_ALLOWED);
isEnabled = mService.setConnectionPolicy(device, CONNECTION_POLICY_ALLOWED);
}
} else {
mService.setConnectionPolicy(device, CONNECTION_POLICY_FORBIDDEN);
isEnabled = mService.setConnectionPolicy(device, CONNECTION_POLICY_FORBIDDEN);
}
return isEnabled;
}
public List<BluetoothDevice> getConnectedDevices() {

View File

@@ -16,6 +16,7 @@
package com.android.settingslib.bluetooth;
import static android.bluetooth.BluetoothProfile.CONNECTION_POLICY_ALLOWED;
import static android.bluetooth.BluetoothProfile.CONNECTION_POLICY_FORBIDDEN;
import android.bluetooth.BluetoothAdapter;
@@ -112,19 +113,6 @@ public class MapProfile implements LocalBluetoothProfile {
return true;
}
public boolean connect(BluetoothDevice device) {
Log.d(TAG, "connect() - should not get called");
return false; // MAP never connects out
}
public boolean disconnect(BluetoothDevice device) {
if (mService == null) {
return false;
}
return mService.setConnectionPolicy(device, CONNECTION_POLICY_FORBIDDEN);
}
public int getConnectionStatus(BluetoothDevice device) {
if (mService == null) {
return BluetoothProfile.STATE_DISCONNECTED;
@@ -132,31 +120,37 @@ public class MapProfile implements LocalBluetoothProfile {
return mService.getConnectionState(device);
}
public boolean isPreferred(BluetoothDevice device) {
@Override
public boolean isEnabled(BluetoothDevice device) {
if (mService == null) {
return false;
}
return mService.getConnectionPolicy(device) > CONNECTION_POLICY_FORBIDDEN;
}
public int getPreferred(BluetoothDevice device) {
@Override
public int getConnectionPolicy(BluetoothDevice device) {
if (mService == null) {
return CONNECTION_POLICY_FORBIDDEN;
}
return mService.getConnectionPolicy(device);
}
public void setPreferred(BluetoothDevice device, boolean preferred) {
@Override
public boolean setEnabled(BluetoothDevice device, boolean enabled) {
boolean isEnabled = false;
if (mService == null) {
return;
return false;
}
if (preferred) {
if (mService.getConnectionPolicy(device) < BluetoothProfile.CONNECTION_POLICY_ALLOWED) {
mService.setConnectionPolicy(device, BluetoothProfile.CONNECTION_POLICY_ALLOWED);
if (enabled) {
if (mService.getConnectionPolicy(device) < CONNECTION_POLICY_ALLOWED) {
isEnabled = mService.setConnectionPolicy(device, CONNECTION_POLICY_ALLOWED);
}
} else {
mService.setConnectionPolicy(device, CONNECTION_POLICY_FORBIDDEN);
isEnabled = mService.setConnectionPolicy(device, CONNECTION_POLICY_FORBIDDEN);
}
return isEnabled;
}
public List<BluetoothDevice> getConnectedDevices() {

View File

@@ -40,27 +40,23 @@ final class OppProfile implements LocalBluetoothProfile {
return false;
}
public boolean connect(BluetoothDevice device) {
return false;
}
public boolean disconnect(BluetoothDevice device) {
return false;
}
public int getConnectionStatus(BluetoothDevice device) {
return BluetoothProfile.STATE_DISCONNECTED; // Settings app doesn't handle OPP
}
public boolean isPreferred(BluetoothDevice device) {
@Override
public boolean isEnabled(BluetoothDevice device) {
return false;
}
public int getPreferred(BluetoothDevice device) {
@Override
public int getConnectionPolicy(BluetoothDevice device) {
return BluetoothProfile.CONNECTION_POLICY_FORBIDDEN; // Settings app doesn't handle OPP
}
public void setPreferred(BluetoothDevice device, boolean preferred) {
@Override
public boolean setEnabled(BluetoothDevice device, boolean enabled) {
return false;
}
public boolean isProfileReady() {

View File

@@ -16,6 +16,9 @@
package com.android.settingslib.bluetooth;
import static android.bluetooth.BluetoothProfile.CONNECTION_POLICY_ALLOWED;
import static android.bluetooth.BluetoothProfile.CONNECTION_POLICY_FORBIDDEN;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothClass;
import android.bluetooth.BluetoothDevice;
@@ -83,22 +86,6 @@ public class PanProfile implements LocalBluetoothProfile {
return false;
}
public boolean connect(BluetoothDevice device) {
if (mService == null) return false;
List<BluetoothDevice> sinks = mService.getConnectedDevices();
if (sinks != null) {
for (BluetoothDevice sink : sinks) {
mService.disconnect(sink);
}
}
return mService.connect(device);
}
public boolean disconnect(BluetoothDevice device) {
if (mService == null) return false;
return mService.disconnect(device);
}
public int getConnectionStatus(BluetoothDevice device) {
if (mService == null) {
return BluetoothProfile.STATE_DISCONNECTED;
@@ -106,16 +93,36 @@ public class PanProfile implements LocalBluetoothProfile {
return mService.getConnectionState(device);
}
public boolean isPreferred(BluetoothDevice device) {
@Override
public boolean isEnabled(BluetoothDevice device) {
return true;
}
public int getPreferred(BluetoothDevice device) {
@Override
public int getConnectionPolicy(BluetoothDevice device) {
return -1;
}
public void setPreferred(BluetoothDevice device, boolean preferred) {
// ignore: isPreferred is always true for PAN
@Override
public boolean setEnabled(BluetoothDevice device, boolean enabled) {
boolean isEnabled = false;
if (mService == null) {
return false;
}
if (enabled) {
final List<BluetoothDevice> sinks = mService.getConnectedDevices();
if (sinks != null) {
for (BluetoothDevice sink : sinks) {
mService.setConnectionPolicy(sink, CONNECTION_POLICY_FORBIDDEN);
}
}
isEnabled = mService.setConnectionPolicy(device, CONNECTION_POLICY_ALLOWED);
} else {
isEnabled = mService.setConnectionPolicy(device, CONNECTION_POLICY_FORBIDDEN);
}
return isEnabled;
}
public String toString() {

View File

@@ -126,23 +126,6 @@ public final class PbapClientProfile implements LocalBluetoothProfile {
BluetoothProfile.STATE_DISCONNECTING});
}
public boolean connect(BluetoothDevice device) {
Log.d(TAG,"PBAPClientProfile got connect request");
if (mService == null) {
return false;
}
Log.d(TAG,"PBAPClientProfile attempting to connect to " + device.getAddress());
return mService.setConnectionPolicy(device, CONNECTION_POLICY_ALLOWED);
}
public boolean disconnect(BluetoothDevice device) {
Log.d(TAG,"PBAPClientProfile got disconnect request");
if (mService == null) {
return false;
}
return mService.setConnectionPolicy(device, CONNECTION_POLICY_FORBIDDEN);
}
public int getConnectionStatus(BluetoothDevice device) {
if (mService == null) {
return BluetoothProfile.STATE_DISCONNECTED;
@@ -150,31 +133,37 @@ public final class PbapClientProfile implements LocalBluetoothProfile {
return mService.getConnectionState(device);
}
public boolean isPreferred(BluetoothDevice device) {
@Override
public boolean isEnabled(BluetoothDevice device) {
if (mService == null) {
return false;
}
return mService.getConnectionPolicy(device) > CONNECTION_POLICY_FORBIDDEN;
}
public int getPreferred(BluetoothDevice device) {
@Override
public int getConnectionPolicy(BluetoothDevice device) {
if (mService == null) {
return CONNECTION_POLICY_FORBIDDEN;
}
return mService.getConnectionPolicy(device);
}
public void setPreferred(BluetoothDevice device, boolean preferred) {
@Override
public boolean setEnabled(BluetoothDevice device, boolean enabled) {
boolean isEnabled = false;
if (mService == null) {
return;
return false;
}
if (preferred) {
if (enabled) {
if (mService.getConnectionPolicy(device) < CONNECTION_POLICY_ALLOWED) {
mService.setConnectionPolicy(device, CONNECTION_POLICY_ALLOWED);
isEnabled = mService.setConnectionPolicy(device, CONNECTION_POLICY_ALLOWED);
}
} else {
mService.setConnectionPolicy(device, CONNECTION_POLICY_FORBIDDEN);
isEnabled = mService.setConnectionPolicy(device, CONNECTION_POLICY_FORBIDDEN);
}
return isEnabled;
}
public String toString() {

View File

@@ -91,34 +91,33 @@ public class PbapServerProfile implements LocalBluetoothProfile {
return false;
}
public boolean connect(BluetoothDevice device) {
/*Can't connect from server */
return false;
}
public boolean disconnect(BluetoothDevice device) {
if (mService == null) {
return false;
}
return mService.setConnectionPolicy(device, CONNECTION_POLICY_FORBIDDEN);
}
public int getConnectionStatus(BluetoothDevice device) {
if (mService == null) return BluetoothProfile.STATE_DISCONNECTED;
return mService.getConnectionState(device);
}
public boolean isPreferred(BluetoothDevice device) {
@Override
public boolean isEnabled(BluetoothDevice device) {
return false;
}
public int getPreferred(BluetoothDevice device) {
@Override
public int getConnectionPolicy(BluetoothDevice device) {
return -1;
}
public void setPreferred(BluetoothDevice device, boolean preferred) {
// ignore: isPreferred is always true for PBAP
@Override
public boolean setEnabled(BluetoothDevice device, boolean enabled) {
boolean isEnabled = false;
if (mService == null) {
return false;
}
if (!enabled) {
isEnabled = mService.setConnectionPolicy(device, CONNECTION_POLICY_FORBIDDEN);
}
return isEnabled;
}
public String toString() {

View File

@@ -111,21 +111,6 @@ final class SapProfile implements LocalBluetoothProfile {
return true;
}
public boolean connect(BluetoothDevice device) {
if (mService == null) {
return false;
}
return mService.setConnectionPolicy(device, CONNECTION_POLICY_ALLOWED);
}
public boolean disconnect(BluetoothDevice device) {
if (mService == null) {
return false;
}
return mService.setConnectionPolicy(device, CONNECTION_POLICY_FORBIDDEN);
}
public int getConnectionStatus(BluetoothDevice device) {
if (mService == null) {
return BluetoothProfile.STATE_DISCONNECTED;
@@ -133,31 +118,37 @@ final class SapProfile implements LocalBluetoothProfile {
return mService.getConnectionState(device);
}
public boolean isPreferred(BluetoothDevice device) {
@Override
public boolean isEnabled(BluetoothDevice device) {
if (mService == null) {
return false;
}
return mService.getConnectionPolicy(device) > CONNECTION_POLICY_FORBIDDEN;
}
public int getPreferred(BluetoothDevice device) {
@Override
public int getConnectionPolicy(BluetoothDevice device) {
if (mService == null) {
return CONNECTION_POLICY_FORBIDDEN;
}
return mService.getConnectionPolicy(device);
}
public void setPreferred(BluetoothDevice device, boolean preferred) {
@Override
public boolean setEnabled(BluetoothDevice device, boolean enabled) {
boolean isEnabled = false;
if (mService == null) {
return;
return false;
}
if (preferred) {
if (enabled) {
if (mService.getConnectionPolicy(device) < CONNECTION_POLICY_ALLOWED) {
mService.setConnectionPolicy(device, CONNECTION_POLICY_ALLOWED);
isEnabled = mService.setConnectionPolicy(device, CONNECTION_POLICY_ALLOWED);
}
} else {
mService.setConnectionPolicy(device, CONNECTION_POLICY_FORBIDDEN);
isEnabled = mService.setConnectionPolicy(device, CONNECTION_POLICY_FORBIDDEN);
}
return isEnabled;
}
public List<BluetoothDevice> getConnectedDevices() {

View File

@@ -108,9 +108,9 @@ public class BluetoothMediaManager extends MediaManager implements BluetoothCall
Log.d(TAG, "addConnectableA2dpDevices() device : " + cachedDevice.getName()
+ ", is connected : " + cachedDevice.isConnected()
+ ", is preferred : " + a2dpProfile.isPreferred(device));
+ ", is enabled : " + a2dpProfile.isEnabled(device));
if (a2dpProfile.isPreferred(device)
if (a2dpProfile.isEnabled(device)
&& BluetoothDevice.BOND_BONDED == cachedDevice.getBondState()) {
addMediaDevice(cachedDevice);
}
@@ -140,13 +140,13 @@ public class BluetoothMediaManager extends MediaManager implements BluetoothCall
Log.d(TAG, "addConnectableHearingAidDevices() device : " + cachedDevice.getName()
+ ", is connected : " + cachedDevice.isConnected()
+ ", is preferred : " + hapProfile.isPreferred(device));
+ ", is enabled : " + hapProfile.isEnabled(device));
final long hiSyncId = hapProfile.getHiSyncId(device);
// device with same hiSyncId should not be shown in the UI.
// So do not add it into connectedDevices.
if (!devicesHiSyncIds.contains(hiSyncId) && hapProfile.isPreferred(device)
if (!devicesHiSyncIds.contains(hiSyncId) && hapProfile.isEnabled(device)
&& BluetoothDevice.BOND_BONDED == cachedDevice.getBondState()) {
devicesHiSyncIds.add(hiSyncId);
addMediaDevice(cachedDevice);

View File

@@ -16,12 +16,8 @@
package com.android.settingslib.bluetooth;
import static android.bluetooth.BluetoothProfile.CONNECTION_POLICY_ALLOWED;
import static android.bluetooth.BluetoothProfile.CONNECTION_POLICY_FORBIDDEN;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.bluetooth.BluetoothA2dpSink;
@@ -67,18 +63,6 @@ public class A2dpSinkProfileTest {
mServiceListener.onServiceConnected(BluetoothProfile.A2DP_SINK, mService);
}
@Test
public void connect_shouldConnectBluetoothA2dpSink() {
mProfile.connect(mBluetoothDevice);
verify(mService).setConnectionPolicy(mBluetoothDevice, CONNECTION_POLICY_ALLOWED);
}
@Test
public void disconnect_shouldDisconnectBluetoothA2dpSink() {
mProfile.disconnect(mBluetoothDevice);
verify(mService).setConnectionPolicy(mBluetoothDevice, CONNECTION_POLICY_FORBIDDEN);
}
@Test
public void getConnectionStatus_shouldReturnConnectionState() {
when(mService.getConnectionState(mBluetoothDevice)).

View File

@@ -16,12 +16,8 @@
package com.android.settingslib.bluetooth;
import static android.bluetooth.BluetoothProfile.CONNECTION_POLICY_ALLOWED;
import static android.bluetooth.BluetoothProfile.CONNECTION_POLICY_FORBIDDEN;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.bluetooth.BluetoothAdapter;
@@ -67,18 +63,6 @@ public class HfpClientProfileTest {
mServiceListener.onServiceConnected(BluetoothProfile.HEADSET_CLIENT, mService);
}
@Test
public void connect_shouldConnectBluetoothHeadsetClient() {
mProfile.connect(mBluetoothDevice);
verify(mService).setConnectionPolicy(mBluetoothDevice, CONNECTION_POLICY_ALLOWED);
}
@Test
public void disconnect_shouldDisconnectBluetoothHeadsetClient() {
mProfile.disconnect(mBluetoothDevice);
verify(mService).setConnectionPolicy(mBluetoothDevice, CONNECTION_POLICY_FORBIDDEN);
}
@Test
public void getConnectionStatus_shouldReturnConnectionState() {
when(mService.getConnectionState(mBluetoothDevice)).

View File

@@ -18,7 +18,6 @@ package com.android.settingslib.bluetooth;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.bluetooth.BluetoothAdapter;
@@ -64,17 +63,6 @@ public class HidDeviceProfileTest {
mServiceListener.onServiceConnected(BluetoothProfile.HID_DEVICE, mService);
}
@Test
public void connect_shouldReturnFalse() {
assertThat(mProfile.connect(mBluetoothDevice)).isFalse();
}
@Test
public void disconnect_shouldDisconnectBluetoothHidDevice() {
mProfile.disconnect(mBluetoothDevice);
verify(mService).disconnect(mBluetoothDevice);
}
@Test
public void getConnectionStatus_shouldReturnConnectionState() {
when(mService.getConnectionState(mBluetoothDevice)).

View File

@@ -16,12 +16,8 @@
package com.android.settingslib.bluetooth;
import static android.bluetooth.BluetoothProfile.CONNECTION_POLICY_ALLOWED;
import static android.bluetooth.BluetoothProfile.CONNECTION_POLICY_FORBIDDEN;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.bluetooth.BluetoothAdapter;
@@ -67,18 +63,6 @@ public class MapClientProfileTest {
mServiceListener.onServiceConnected(BluetoothProfile.MAP_CLIENT, mService);
}
@Test
public void connect_shouldConnectBluetoothMapClient() {
mProfile.connect(mBluetoothDevice);
verify(mService).setConnectionPolicy(mBluetoothDevice, CONNECTION_POLICY_ALLOWED);
}
@Test
public void disconnect_shouldDisconnectBluetoothMapClient() {
mProfile.disconnect(mBluetoothDevice);
verify(mService).setConnectionPolicy(mBluetoothDevice, CONNECTION_POLICY_FORBIDDEN);
}
@Test
public void getConnectionStatus_shouldReturnConnectionState() {
when(mService.getConnectionState(mBluetoothDevice)).

View File

@@ -16,12 +16,8 @@
package com.android.settingslib.bluetooth;
import static android.bluetooth.BluetoothProfile.CONNECTION_POLICY_ALLOWED;
import static android.bluetooth.BluetoothProfile.CONNECTION_POLICY_FORBIDDEN;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.bluetooth.BluetoothAdapter;
@@ -67,18 +63,6 @@ public class PbapClientProfileTest {
mServiceListener.onServiceConnected(BluetoothProfile.PBAP_CLIENT, mService);
}
@Test
public void connect_shouldConnectBluetoothPbapClient() {
mProfile.connect(mBluetoothDevice);
verify(mService).setConnectionPolicy(mBluetoothDevice, CONNECTION_POLICY_ALLOWED);
}
@Test
public void disconnect_shouldDisconnectBluetoothPbapClient() {
mProfile.disconnect(mBluetoothDevice);
verify(mService).setConnectionPolicy(mBluetoothDevice, CONNECTION_POLICY_FORBIDDEN);
}
@Test
public void getConnectionStatus_shouldReturnConnectionState() {
when(mService.getConnectionState(mBluetoothDevice)).

View File

@@ -16,12 +16,8 @@
package com.android.settingslib.bluetooth;
import static android.bluetooth.BluetoothProfile.CONNECTION_POLICY_ALLOWED;
import static android.bluetooth.BluetoothProfile.CONNECTION_POLICY_FORBIDDEN;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.bluetooth.BluetoothAdapter;
@@ -66,18 +62,6 @@ public class SapProfileTest {
mServiceListener.onServiceConnected(BluetoothProfile.SAP, mService);
}
@Test
public void connect_shouldConnectBluetoothSap() {
mProfile.connect(mBluetoothDevice);
verify(mService).setConnectionPolicy(mBluetoothDevice, CONNECTION_POLICY_ALLOWED);
}
@Test
public void disconnect_shouldDisconnectBluetoothSap() {
mProfile.disconnect(mBluetoothDevice);
verify(mService).setConnectionPolicy(mBluetoothDevice, CONNECTION_POLICY_FORBIDDEN);
}
@Test
public void getConnectionStatus_shouldReturnConnectionState() {
when(mService.getConnectionState(mBluetoothDevice)).

View File

@@ -96,7 +96,7 @@ public class BluetoothMediaManagerTest {
when(mA2dpProfile.getConnectableDevices()).thenReturn(devices);
when(mCachedDeviceManager.findDevice(bluetoothDevice)).thenReturn(cachedDevice);
when(cachedDevice.getBondState()).thenReturn(BluetoothDevice.BOND_BONDED);
when(mA2dpProfile.isPreferred(bluetoothDevice)).thenReturn(true);
when(mA2dpProfile.isEnabled(bluetoothDevice)).thenReturn(true);
assertThat(mMediaManager.mMediaDevices).isEmpty();
mMediaManager.startScan();
@@ -113,7 +113,7 @@ public class BluetoothMediaManagerTest {
when(mA2dpProfile.getConnectableDevices()).thenReturn(devices);
when(mCachedDeviceManager.findDevice(bluetoothDevice)).thenReturn(cachedDevice);
when(cachedDevice.getBondState()).thenReturn(BluetoothDevice.BOND_NONE);
when(mA2dpProfile.isPreferred(bluetoothDevice)).thenReturn(true);
when(mA2dpProfile.isEnabled(bluetoothDevice)).thenReturn(true);
assertThat(mMediaManager.mMediaDevices).isEmpty();
mMediaManager.startScan();
@@ -141,7 +141,7 @@ public class BluetoothMediaManagerTest {
when(mHapProfile.getConnectableDevices()).thenReturn(devices);
when(mCachedDeviceManager.findDevice(bluetoothDevice)).thenReturn(cachedDevice);
when(cachedDevice.getBondState()).thenReturn(BluetoothDevice.BOND_BONDED);
when(mHapProfile.isPreferred(bluetoothDevice)).thenReturn(true);
when(mHapProfile.isEnabled(bluetoothDevice)).thenReturn(true);
assertThat(mMediaManager.mMediaDevices).isEmpty();
mMediaManager.startScan();