Chromium Code Reviews| Index: device/bluetooth/bluetooth_device_android.cc |
| diff --git a/device/bluetooth/bluetooth_device_android.cc b/device/bluetooth/bluetooth_device_android.cc |
| index 6dac465163bc8c2f4e47def44be3abd22ed536b0..5e5b204f6e6a9acd8a5f6320a9b26dc8090d663a 100644 |
| --- a/device/bluetooth/bluetooth_device_android.cc |
| +++ b/device/bluetooth/bluetooth_device_android.cc |
| @@ -21,7 +21,8 @@ BluetoothDeviceAndroid* BluetoothDeviceAndroid::Create( |
| BluetoothDeviceAndroid* device = new BluetoothDeviceAndroid(adapter); |
| device->j_device_.Reset(Java_ChromeBluetoothDevice_create( |
| - AttachCurrentThread(), bluetooth_device_wrapper)); |
| + AttachCurrentThread(), reinterpret_cast<intptr_t>(device), |
| + bluetooth_device_wrapper)); |
| return device; |
| } |
| @@ -39,6 +40,11 @@ bool BluetoothDeviceAndroid::RegisterJNI(JNIEnv* env) { |
| return RegisterNativesImpl(env); // Generated in ChromeBluetoothDevice_jni.h |
| } |
| +base::android::ScopedJavaLocalRef<jobject> |
| +BluetoothDeviceAndroid::GetJavaObject() { |
| + return base::android::ScopedJavaLocalRef<jobject>(j_device_); |
| +} |
| + |
| uint32 BluetoothDeviceAndroid::GetBluetoothClass() const { |
| return Java_ChromeBluetoothDevice_getBluetoothClass(AttachCurrentThread(), |
| j_device_.obj()); |
| @@ -188,6 +194,25 @@ void BluetoothDeviceAndroid::ConnectToServiceInsecurely( |
| NOTIMPLEMENTED(); |
| } |
| +void BluetoothDeviceAndroid::OnConnectionStateChange(JNIEnv* env, |
| + jobject jcaller, |
| + int32_t status, |
| + bool connected) { |
| + gatt_connected_ = connected; |
| + if (gatt_connected_) { |
| + DidConnectGatt(); |
| + } else { |
| + switch (status) { // Constants are from android.bluetooth.BluetoothGatt. |
| + case 0x00000101: // GATT_FAILURE |
| + return DidFailToConnectGatt(ERROR_FAILED); |
| + case 0x00000005: // GATT_INSUFFICIENT_AUTHENTICATION |
| + return DidFailToConnectGatt(ERROR_AUTH_FAILED); |
| + case 0x00000000: // GATT_SUCCESS |
| + return DidDisconnectGatt(); |
| + default: |
| + return DidFailToConnectGatt(ERROR_UNKNOWN); |
|
Jeffrey Yasskin
2015/08/20 21:35:14
Log here so we know what error to add a translatio
scheib
2015/09/13 02:41:01
Done.
|
| + } |
| + } |
| } |
| BluetoothDeviceAndroid::BluetoothDeviceAndroid(BluetoothAdapterAndroid* adapter) |
| @@ -199,14 +224,15 @@ std::string BluetoothDeviceAndroid::GetDeviceName() const { |
| } |
| void BluetoothDeviceAndroid::CreateGattConnectionImpl() { |
| - // Implemented in following patch https://codereview.chromium.org/1256313002 |
| - NOTIMPLEMENTED(); |
| - DidFailToConnectGatt(ERROR_UNKNOWN); |
| + if (!Java_ChromeBluetoothDevice_createGattConnectionImpl( |
| + AttachCurrentThread(), j_device_.obj(), |
| + base::android::GetApplicationContext())) |
| + DidFailToConnectGatt(ERROR_UNKNOWN); |
|
Jeffrey Yasskin
2015/08/20 21:35:14
Pick a better error enum.
scheib
2015/09/13 02:41:01
Done. This method no longer has synchronous errors
|
| } |
| void BluetoothDeviceAndroid::DisconnectGatt() { |
| - // Implemented in following patch https://codereview.chromium.org/1256313002 |
| - NOTIMPLEMENTED(); |
| + Java_ChromeBluetoothDevice_disconnectGatt(AttachCurrentThread(), |
| + j_device_.obj()); |
| } |
| } // namespace device |