| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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_service_android.h" | 5 #include "device/bluetooth/bluetooth_remote_gatt_service_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_string.h" | 10 #include "base/android/jni_string.h" |
| (...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 128 | 128 |
| 129 device::BluetoothDevice* BluetoothRemoteGattServiceAndroid::GetDevice() const { | 129 device::BluetoothDevice* BluetoothRemoteGattServiceAndroid::GetDevice() const { |
| 130 return device_; | 130 return device_; |
| 131 } | 131 } |
| 132 | 132 |
| 133 std::vector<device::BluetoothRemoteGattCharacteristic*> | 133 std::vector<device::BluetoothRemoteGattCharacteristic*> |
| 134 BluetoothRemoteGattServiceAndroid::GetCharacteristics() const { | 134 BluetoothRemoteGattServiceAndroid::GetCharacteristics() const { |
| 135 EnsureCharacteristicsCreated(); | 135 EnsureCharacteristicsCreated(); |
| 136 std::vector<device::BluetoothRemoteGattCharacteristic*> characteristics; | 136 std::vector<device::BluetoothRemoteGattCharacteristic*> characteristics; |
| 137 for (const auto& map_iter : characteristics_) | 137 for (const auto& map_iter : characteristics_) |
| 138 characteristics.push_back(map_iter.second); | 138 characteristics.push_back(map_iter.second.get()); |
| 139 return characteristics; | 139 return characteristics; |
| 140 } | 140 } |
| 141 | 141 |
| 142 std::vector<device::BluetoothRemoteGattService*> | 142 std::vector<device::BluetoothRemoteGattService*> |
| 143 BluetoothRemoteGattServiceAndroid::GetIncludedServices() const { | 143 BluetoothRemoteGattServiceAndroid::GetIncludedServices() const { |
| 144 NOTIMPLEMENTED(); | 144 NOTIMPLEMENTED(); |
| 145 return std::vector<device::BluetoothRemoteGattService*>(); | 145 return std::vector<device::BluetoothRemoteGattService*>(); |
| 146 } | 146 } |
| 147 | 147 |
| 148 device::BluetoothRemoteGattCharacteristic* | 148 device::BluetoothRemoteGattCharacteristic* |
| 149 BluetoothRemoteGattServiceAndroid::GetCharacteristic( | 149 BluetoothRemoteGattServiceAndroid::GetCharacteristic( |
| 150 const std::string& identifier) const { | 150 const std::string& identifier) const { |
| 151 EnsureCharacteristicsCreated(); | 151 EnsureCharacteristicsCreated(); |
| 152 const auto& iter = characteristics_.find(identifier); | 152 const auto& iter = characteristics_.find(identifier); |
| 153 if (iter == characteristics_.end()) | 153 if (iter == characteristics_.end()) { |
| 154 return nullptr; | 154 return nullptr; |
| 155 return iter->second; | 155 } |
| 156 |
| 157 return iter->second.get(); |
| 156 } | 158 } |
| 157 | 159 |
| 158 void BluetoothRemoteGattServiceAndroid::CreateGattRemoteCharacteristic( | 160 void BluetoothRemoteGattServiceAndroid::CreateGattRemoteCharacteristic( |
| 159 JNIEnv* env, | 161 JNIEnv* env, |
| 160 const JavaParamRef<jobject>& caller, | 162 const JavaParamRef<jobject>& caller, |
| 161 const JavaParamRef<jstring>& instance_id, | 163 const JavaParamRef<jstring>& instance_id, |
| 162 const JavaParamRef<jobject>& /* BluetoothGattCharacteristicWrapper */ | 164 const JavaParamRef<jobject>& /* BluetoothGattCharacteristicWrapper */ |
| 163 bluetooth_gatt_characteristic_wrapper, | 165 bluetooth_gatt_characteristic_wrapper, |
| 164 const JavaParamRef< | 166 const JavaParamRef< |
| 165 jobject>& /* ChromeBluetoothDevice */ chrome_bluetooth_device) { | 167 jobject>& /* ChromeBluetoothDevice */ chrome_bluetooth_device) { |
| 166 std::string instance_id_string = | 168 std::string instance_id_string = |
| 167 base::android::ConvertJavaStringToUTF8(env, instance_id); | 169 base::android::ConvertJavaStringToUTF8(env, instance_id); |
| 170 DCHECK(!base::ContainsKey(characteristics_, instance_id_string)); |
| 171 auto characteristic = BluetoothRemoteGattCharacteristicAndroid::Create( |
| 172 adapter_, this, instance_id_string, bluetooth_gatt_characteristic_wrapper, |
| 173 chrome_bluetooth_device); |
| 168 | 174 |
| 169 DCHECK(!characteristics_.contains(instance_id_string)); | 175 characteristics_.insert( |
| 170 | 176 std::make_pair(instance_id_string, std::move(characteristic))); |
| 171 characteristics_.set( | |
| 172 instance_id_string, | |
| 173 BluetoothRemoteGattCharacteristicAndroid::Create( | |
| 174 adapter_, this, instance_id_string, | |
| 175 bluetooth_gatt_characteristic_wrapper, chrome_bluetooth_device)); | |
| 176 } | 177 } |
| 177 | 178 |
| 178 BluetoothRemoteGattServiceAndroid::BluetoothRemoteGattServiceAndroid( | 179 BluetoothRemoteGattServiceAndroid::BluetoothRemoteGattServiceAndroid( |
| 179 BluetoothAdapterAndroid* adapter, | 180 BluetoothAdapterAndroid* adapter, |
| 180 BluetoothDeviceAndroid* device, | 181 BluetoothDeviceAndroid* device, |
| 181 const std::string& instance_id) | 182 const std::string& instance_id) |
| 182 : adapter_(adapter), device_(device), instance_id_(instance_id) {} | 183 : adapter_(adapter), device_(device), instance_id_(instance_id) {} |
| 183 | 184 |
| 184 void BluetoothRemoteGattServiceAndroid::EnsureCharacteristicsCreated() const { | 185 void BluetoothRemoteGattServiceAndroid::EnsureCharacteristicsCreated() const { |
| 185 if (!characteristics_.empty()) | 186 if (!characteristics_.empty()) |
| 186 return; | 187 return; |
| 187 | 188 |
| 188 // Java call | 189 // Java call |
| 189 Java_ChromeBluetoothRemoteGattService_createCharacteristics( | 190 Java_ChromeBluetoothRemoteGattService_createCharacteristics( |
| 190 AttachCurrentThread(), j_service_); | 191 AttachCurrentThread(), j_service_); |
| 191 } | 192 } |
| 192 | 193 |
| 193 } // namespace device | 194 } // namespace device |
| OLD | NEW |