OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "device/bluetooth/bluetooth_remote_gatt_descriptor_android.h" | 5 #include "device/bluetooth/bluetooth_remote_gatt_descriptor_android.h" |
6 | 6 |
7 #include <memory> | 7 #include <memory> |
8 | 8 |
9 #include "base/android/jni_android.h" | 9 #include "base/android/jni_android.h" |
10 #include "base/android/jni_array.h" | 10 #include "base/android/jni_array.h" |
11 #include "base/android/jni_string.h" | 11 #include "base/android/jni_string.h" |
12 #include "base/bind.h" | 12 #include "base/bind.h" |
| 13 #include "base/location.h" |
13 #include "base/logging.h" | 14 #include "base/logging.h" |
14 #include "base/message_loop/message_loop.h" | 15 #include "base/single_thread_task_runner.h" |
| 16 #include "base/threading/thread_task_runner_handle.h" |
15 #include "device/bluetooth/bluetooth_gatt_notify_session_android.h" | 17 #include "device/bluetooth/bluetooth_gatt_notify_session_android.h" |
16 #include "device/bluetooth/bluetooth_remote_gatt_service_android.h" | 18 #include "device/bluetooth/bluetooth_remote_gatt_service_android.h" |
17 #include "jni/ChromeBluetoothRemoteGattDescriptor_jni.h" | 19 #include "jni/ChromeBluetoothRemoteGattDescriptor_jni.h" |
18 | 20 |
19 using base::android::AttachCurrentThread; | 21 using base::android::AttachCurrentThread; |
20 | 22 |
21 namespace device { | 23 namespace device { |
22 | 24 |
23 // static | 25 // static |
24 std::unique_ptr<BluetoothRemoteGattDescriptorAndroid> | 26 std::unique_ptr<BluetoothRemoteGattDescriptorAndroid> |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
79 BluetoothRemoteGattCharacteristic::Permissions | 81 BluetoothRemoteGattCharacteristic::Permissions |
80 BluetoothRemoteGattDescriptorAndroid::GetPermissions() const { | 82 BluetoothRemoteGattDescriptorAndroid::GetPermissions() const { |
81 NOTIMPLEMENTED(); | 83 NOTIMPLEMENTED(); |
82 return 0; | 84 return 0; |
83 } | 85 } |
84 | 86 |
85 void BluetoothRemoteGattDescriptorAndroid::ReadRemoteDescriptor( | 87 void BluetoothRemoteGattDescriptorAndroid::ReadRemoteDescriptor( |
86 const ValueCallback& callback, | 88 const ValueCallback& callback, |
87 const ErrorCallback& error_callback) { | 89 const ErrorCallback& error_callback) { |
88 if (read_pending_ || write_pending_) { | 90 if (read_pending_ || write_pending_) { |
89 base::MessageLoop::current()->PostTask( | 91 base::ThreadTaskRunnerHandle::Get()->PostTask( |
90 FROM_HERE, | 92 FROM_HERE, |
91 base::Bind(error_callback, | 93 base::Bind(error_callback, |
92 BluetoothRemoteGattService::GATT_ERROR_IN_PROGRESS)); | 94 BluetoothRemoteGattService::GATT_ERROR_IN_PROGRESS)); |
93 return; | 95 return; |
94 } | 96 } |
95 | 97 |
96 if (!Java_ChromeBluetoothRemoteGattDescriptor_readRemoteDescriptor( | 98 if (!Java_ChromeBluetoothRemoteGattDescriptor_readRemoteDescriptor( |
97 AttachCurrentThread(), j_descriptor_.obj())) { | 99 AttachCurrentThread(), j_descriptor_.obj())) { |
98 base::MessageLoop::current()->PostTask( | 100 base::ThreadTaskRunnerHandle::Get()->PostTask( |
99 FROM_HERE, | 101 FROM_HERE, |
100 base::Bind(error_callback, | 102 base::Bind(error_callback, |
101 BluetoothRemoteGattServiceAndroid::GATT_ERROR_FAILED)); | 103 BluetoothRemoteGattServiceAndroid::GATT_ERROR_FAILED)); |
102 return; | 104 return; |
103 } | 105 } |
104 | 106 |
105 read_pending_ = true; | 107 read_pending_ = true; |
106 read_callback_ = callback; | 108 read_callback_ = callback; |
107 read_error_callback_ = error_callback; | 109 read_error_callback_ = error_callback; |
108 } | 110 } |
109 | 111 |
110 void BluetoothRemoteGattDescriptorAndroid::WriteRemoteDescriptor( | 112 void BluetoothRemoteGattDescriptorAndroid::WriteRemoteDescriptor( |
111 const std::vector<uint8_t>& new_value, | 113 const std::vector<uint8_t>& new_value, |
112 const base::Closure& callback, | 114 const base::Closure& callback, |
113 const ErrorCallback& error_callback) { | 115 const ErrorCallback& error_callback) { |
114 if (read_pending_ || write_pending_) { | 116 if (read_pending_ || write_pending_) { |
115 base::MessageLoop::current()->PostTask( | 117 base::ThreadTaskRunnerHandle::Get()->PostTask( |
116 FROM_HERE, | 118 FROM_HERE, |
117 base::Bind(error_callback, | 119 base::Bind(error_callback, |
118 BluetoothRemoteGattService::GATT_ERROR_IN_PROGRESS)); | 120 BluetoothRemoteGattService::GATT_ERROR_IN_PROGRESS)); |
119 return; | 121 return; |
120 } | 122 } |
121 | 123 |
122 JNIEnv* env = AttachCurrentThread(); | 124 JNIEnv* env = AttachCurrentThread(); |
123 if (!Java_ChromeBluetoothRemoteGattDescriptor_writeRemoteDescriptor( | 125 if (!Java_ChromeBluetoothRemoteGattDescriptor_writeRemoteDescriptor( |
124 env, j_descriptor_.obj(), | 126 env, j_descriptor_.obj(), |
125 base::android::ToJavaByteArray(env, new_value).obj())) { | 127 base::android::ToJavaByteArray(env, new_value).obj())) { |
126 base::MessageLoop::current()->PostTask( | 128 base::ThreadTaskRunnerHandle::Get()->PostTask( |
127 FROM_HERE, | 129 FROM_HERE, |
128 base::Bind(error_callback, | 130 base::Bind(error_callback, |
129 BluetoothRemoteGattServiceAndroid::GATT_ERROR_FAILED)); | 131 BluetoothRemoteGattServiceAndroid::GATT_ERROR_FAILED)); |
130 return; | 132 return; |
131 } | 133 } |
132 | 134 |
133 write_pending_ = true; | 135 write_pending_ = true; |
134 write_callback_ = callback; | 136 write_callback_ = callback; |
135 write_error_callback_ = error_callback; | 137 write_error_callback_ = error_callback; |
136 } | 138 } |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
179 write_error_callback.Run( | 181 write_error_callback.Run( |
180 BluetoothRemoteGattServiceAndroid::GetGattErrorCode(status)); | 182 BluetoothRemoteGattServiceAndroid::GetGattErrorCode(status)); |
181 } | 183 } |
182 } | 184 } |
183 | 185 |
184 BluetoothRemoteGattDescriptorAndroid::BluetoothRemoteGattDescriptorAndroid( | 186 BluetoothRemoteGattDescriptorAndroid::BluetoothRemoteGattDescriptorAndroid( |
185 const std::string& instance_id) | 187 const std::string& instance_id) |
186 : instance_id_(instance_id) {} | 188 : instance_id_(instance_id) {} |
187 | 189 |
188 } // namespace device | 190 } // namespace device |
OLD | NEW |