Index: device/bluetooth/bluetooth_adapter_android.cc |
diff --git a/device/bluetooth/bluetooth_adapter_android.cc b/device/bluetooth/bluetooth_adapter_android.cc |
index 489050c005e34178f2e3256f2d6bd9cf7ff90d5b..218329883bcbd85190982044559d28bd76b65edf 100644 |
--- a/device/bluetooth/bluetooth_adapter_android.cc |
+++ b/device/bluetooth/bluetooth_adapter_android.cc |
@@ -11,6 +11,7 @@ |
#include "base/thread_task_runner_handle.h" |
#include "device/bluetooth/android/wrappers.h" |
#include "device/bluetooth/bluetooth_advertisement.h" |
+#include "device/bluetooth/bluetooth_device_android.h" |
#include "jni/ChromeBluetoothAdapter_jni.h" |
using base::android::AttachCurrentThread; |
@@ -27,12 +28,12 @@ base::WeakPtr<BluetoothAdapter> BluetoothAdapter::CreateAdapter( |
// static |
base::WeakPtr<BluetoothAdapterAndroid> BluetoothAdapterAndroid::Create( |
- jobject java_bluetooth_adapter_wrapper) { |
+ jobject bluetooth_adapter_wrapper) { // Java Type: bluetoothAdapterWrapper |
BluetoothAdapterAndroid* adapter = new BluetoothAdapterAndroid(); |
adapter->j_adapter_.Reset(Java_ChromeBluetoothAdapter_create( |
AttachCurrentThread(), reinterpret_cast<intptr_t>(adapter), |
- java_bluetooth_adapter_wrapper)); |
+ bluetooth_adapter_wrapper)); |
return adapter->weak_ptr_factory_.GetWeakPtr(); |
} |
@@ -127,10 +128,32 @@ void BluetoothAdapterAndroid::RegisterAdvertisement( |
error_callback.Run(BluetoothAdvertisement::ERROR_UNSUPPORTED_PLATFORM); |
} |
-void BluetoothAdapterAndroid::OnScanFailed(JNIEnv* env, jobject obj) { |
+void BluetoothAdapterAndroid::OnScanFailed(JNIEnv* env, jobject caller) { |
MarkDiscoverySessionsAsInactive(); |
} |
+void BluetoothAdapterAndroid::CreateOrUpdateDeviceOnScan( |
+ JNIEnv* env, |
+ jobject caller, |
+ const jstring& address, |
+ jobject bluetooth_device_wrapper, // Java Type: bluetoothDeviceWrapper |
+ jobject advertised_uuids) { // Java Type: List<ParcelUuid> |
+ BluetoothDevice*& device = devices_[ConvertJavaStringToUTF8(env, address)]; |
+ if (!device) { |
+ device = BluetoothDeviceAndroid::Create(bluetooth_device_wrapper); |
+ static_cast<BluetoothDeviceAndroid*>(device) |
+ ->UpdateAdvertisedUUIDs(advertised_uuids); |
+ FOR_EACH_OBSERVER(BluetoothAdapter::Observer, observers_, |
+ DeviceAdded(this, device)); |
+ } else { |
+ if (static_cast<BluetoothDeviceAndroid*>(device) |
+ ->UpdateAdvertisedUUIDs(advertised_uuids)) { |
+ FOR_EACH_OBSERVER(BluetoothAdapter::Observer, observers_, |
+ DeviceChanged(this, device)); |
+ } |
+ } |
+} |
+ |
BluetoothAdapterAndroid::BluetoothAdapterAndroid() : weak_ptr_factory_(this) { |
} |