Merge "Remove hidden API usage"
diff --git a/src/com/android/bluetooth/avrcp/AvrcpVolumeManager.java b/src/com/android/bluetooth/avrcp/AvrcpVolumeManager.java
index 3173adc..d245543 100644
--- a/src/com/android/bluetooth/avrcp/AvrcpVolumeManager.java
+++ b/src/com/android/bluetooth/avrcp/AvrcpVolumeManager.java
@@ -176,7 +176,8 @@
+ " deviceVolume=" + deviceVolume
+ " sDeviceMaxVolume=" + sDeviceMaxVolume);
mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, deviceVolume,
- AudioManager.FLAG_SHOW_UI | AudioManager.FLAG_BLUETOOTH_ABS_VOLUME);
+ (deviceVolume != getVolume(device, -1) ? AudioManager.FLAG_SHOW_UI : 0)
+ | AudioManager.FLAG_BLUETOOTH_ABS_VOLUME);
storeVolumeForDevice(device);
}
diff --git a/src/com/android/bluetooth/btservice/bluetoothKeystore/BluetoothKeystoreService.java b/src/com/android/bluetooth/btservice/bluetoothKeystore/BluetoothKeystoreService.java
index f25f367..c838584 100644
--- a/src/com/android/bluetooth/btservice/bluetoothKeystore/BluetoothKeystoreService.java
+++ b/src/com/android/bluetooth/btservice/bluetoothKeystore/BluetoothKeystoreService.java
@@ -797,7 +797,8 @@
return keyStore;
}
- private SecretKey getOrCreateSecretKey() {
+ // The getOrGenerate semantic on keystore is not thread safe, need to synchronized it.
+ private synchronized SecretKey getOrCreateSecretKey() {
SecretKey secretKey = null;
try {
KeyStore keyStore = getKeyStore();
diff --git a/src/com/android/bluetooth/hid/HidHostService.java b/src/com/android/bluetooth/hid/HidHostService.java
index 3ac49e2..10d414d 100644
--- a/src/com/android/bluetooth/hid/HidHostService.java
+++ b/src/com/android/bluetooth/hid/HidHostService.java
@@ -16,6 +16,8 @@
package com.android.bluetooth.hid;
+import static com.android.bluetooth.Utils.enforceBluetoothAdminPermission;
+import static com.android.bluetooth.Utils.enforceBluetoothPermission;
import static com.android.bluetooth.Utils.enforceBluetoothPrivilegedPermission;
import android.bluetooth.BluetoothDevice;
@@ -339,6 +341,7 @@
if (service == null) {
return false;
}
+ enforceBluetoothPrivilegedPermission(service);
return service.connect(device);
}
@@ -348,6 +351,7 @@
if (service == null) {
return false;
}
+ enforceBluetoothPrivilegedPermission(service);
return service.disconnect(device);
}
@@ -357,7 +361,7 @@
if (service == null) {
return BluetoothHidHost.STATE_DISCONNECTED;
}
- enforceBluetoothPrivilegedPermission(service);
+ enforceBluetoothPermission(service);
return service.getConnectionState(device);
}
@@ -367,7 +371,7 @@
if (service == null) {
return new ArrayList<>();
}
- enforceBluetoothPrivilegedPermission(service);
+ enforceBluetoothPermission(service);
return getDevicesMatchingConnectionStates(new int[]{BluetoothProfile.STATE_CONNECTED});
}
@@ -377,6 +381,7 @@
if (service == null) {
return new ArrayList<BluetoothDevice>(0);
}
+ enforceBluetoothPermission(service);
return service.getDevicesMatchingConnectionStates(states);
}
@@ -386,6 +391,7 @@
if (service == null) {
return false;
}
+ enforceBluetoothPrivilegedPermission(service);
return service.setConnectionPolicy(device, connectionPolicy);
}
@@ -395,6 +401,7 @@
if (service == null) {
return BluetoothProfile.CONNECTION_POLICY_UNKNOWN;
}
+ enforceBluetoothPrivilegedPermission(service);
return service.getConnectionPolicy(device);
}
@@ -405,6 +412,7 @@
if (service == null) {
return false;
}
+ enforceBluetoothAdminPermission(service);
return service.getProtocolMode(device);
}
@@ -414,6 +422,7 @@
if (service == null) {
return false;
}
+ enforceBluetoothAdminPermission(service);
return service.virtualUnplug(device);
}
@@ -423,6 +432,7 @@
if (service == null) {
return false;
}
+ enforceBluetoothAdminPermission(service);
return service.setProtocolMode(device, protocolMode);
}
@@ -433,6 +443,7 @@
if (service == null) {
return false;
}
+ enforceBluetoothAdminPermission(service);
return service.getReport(device, reportType, reportId, bufferSize);
}
@@ -442,6 +453,7 @@
if (service == null) {
return false;
}
+ enforceBluetoothAdminPermission(service);
return service.setReport(device, reportType, report);
}
@@ -451,6 +463,7 @@
if (service == null) {
return false;
}
+ enforceBluetoothAdminPermission(service);
return service.sendData(device, report);
}
@@ -460,6 +473,7 @@
if (service == null) {
return false;
}
+ enforceBluetoothAdminPermission(service);
return service.setIdleTime(device, idleTime);
}
@@ -469,6 +483,7 @@
if (service == null) {
return false;
}
+ enforceBluetoothAdminPermission(service);
return service.getIdleTime(device);
}
}
@@ -485,8 +500,6 @@
*/
public boolean connect(BluetoothDevice device) {
if (DBG) Log.d(TAG, "connect: " + device.getAddress());
- enforceCallingOrSelfPermission(BLUETOOTH_PRIVILEGED,
- "Need BLUETOOTH_PRIVILEGED permission");
if (getConnectionState(device) != BluetoothHidHost.STATE_DISCONNECTED) {
Log.e(TAG, "Hid Device not disconnected: " + device);
return false;
@@ -509,8 +522,6 @@
*/
public boolean disconnect(BluetoothDevice device) {
if (DBG) Log.d(TAG, "disconnect: " + device.getAddress());
- enforceCallingOrSelfPermission(BLUETOOTH_PRIVILEGED,
- "Need BLUETOOTH_PRIVILEGED permission");
Message msg = mHandler.obtainMessage(MESSAGE_DISCONNECT, device);
mHandler.sendMessage(msg);
return true;
@@ -535,7 +546,6 @@
List<BluetoothDevice> getDevicesMatchingConnectionStates(int[] states) {
if (DBG) Log.d(TAG, "getDevicesMatchingConnectionStates()");
- enforceCallingOrSelfPermission(BLUETOOTH_PERM, "Need BLUETOOTH permission");
List<BluetoothDevice> inputDevices = new ArrayList<BluetoothDevice>();
for (BluetoothDevice device : mInputDevices.keySet()) {
@@ -566,8 +576,6 @@
* @return true if connectionPolicy is set, false on error
*/
public boolean setConnectionPolicy(BluetoothDevice device, int connectionPolicy) {
- enforceCallingOrSelfPermission(BLUETOOTH_PRIVILEGED,
- "Need BLUETOOTH_PRIVILEGED permission");
if (DBG) {
Log.d(TAG, "setConnectionPolicy: " + device.getAddress());
}
@@ -597,8 +605,6 @@
* @hide
*/
public int getConnectionPolicy(BluetoothDevice device) {
- enforceCallingOrSelfPermission(BLUETOOTH_PRIVILEGED,
- "Need BLUETOOTH_PRIVILEGED permission");
if (DBG) {
Log.d(TAG, "getConnectionPolicy: " + device.getAddress());
}
@@ -608,7 +614,6 @@
/* The following APIs regarding test app for compliance */
boolean getProtocolMode(BluetoothDevice device) {
- enforceCallingOrSelfPermission(BLUETOOTH_ADMIN_PERM, "Need BLUETOOTH_ADMIN permission");
if (DBG) {
Log.d(TAG, "getProtocolMode: " + device.getAddress());
}
@@ -624,7 +629,6 @@
}
boolean virtualUnplug(BluetoothDevice device) {
- enforceCallingOrSelfPermission(BLUETOOTH_ADMIN_PERM, "Need BLUETOOTH_ADMIN permission");
if (DBG) {
Log.d(TAG, "virtualUnplug: " + device.getAddress());
}
@@ -638,7 +642,6 @@
}
boolean setProtocolMode(BluetoothDevice device, int protocolMode) {
- enforceCallingOrSelfPermission(BLUETOOTH_ADMIN_PERM, "Need BLUETOOTH_ADMIN permission");
if (DBG) {
Log.d(TAG, "setProtocolMode: " + device.getAddress());
}
@@ -654,7 +657,6 @@
}
boolean getReport(BluetoothDevice device, byte reportType, byte reportId, int bufferSize) {
- enforceCallingOrSelfPermission(BLUETOOTH_ADMIN_PERM, "Need BLUETOOTH_ADMIN permission");
if (DBG) {
Log.d(TAG, "getReport: " + device.getAddress());
}
@@ -674,7 +676,6 @@
}
boolean setReport(BluetoothDevice device, byte reportType, String report) {
- enforceCallingOrSelfPermission(BLUETOOTH_ADMIN_PERM, "Need BLUETOOTH_ADMIN permission");
if (DBG) {
Log.d(TAG, "setReport: " + device.getAddress());
}
@@ -694,7 +695,6 @@
}
boolean sendData(BluetoothDevice device, String report) {
- enforceCallingOrSelfPermission(BLUETOOTH_ADMIN_PERM, "Need BLUETOOTH_ADMIN permission");
if (DBG) {
Log.d(TAG, "sendData: " + device.getAddress());
}
@@ -707,7 +707,6 @@
}
boolean getIdleTime(BluetoothDevice device) {
- enforceCallingOrSelfPermission(BLUETOOTH_ADMIN_PERM, "Need BLUETOOTH_ADMIN permission");
if (DBG) Log.d(TAG, "getIdleTime: " + device.getAddress());
int state = this.getConnectionState(device);
if (state != BluetoothHidHost.STATE_CONNECTED) {
@@ -719,7 +718,6 @@
}
boolean setIdleTime(BluetoothDevice device, byte idleTime) {
- enforceCallingOrSelfPermission(BLUETOOTH_ADMIN_PERM, "Need BLUETOOTH_ADMIN permission");
if (DBG) Log.d(TAG, "setIdleTime: " + device.getAddress());
int state = this.getConnectionState(device);
if (state != BluetoothHidHost.STATE_CONNECTED) {