| Index: device/bluetooth/test/bluetooth_test_android.cc
 | 
| diff --git a/device/bluetooth/test/bluetooth_test_android.cc b/device/bluetooth/test/bluetooth_test_android.cc
 | 
| index 1be588d51643d5559b18d5462e5313ab4ad5ba27..36b5c28d292ab2045d79d72a9660bdfd05af0c73 100644
 | 
| --- a/device/bluetooth/test/bluetooth_test_android.cc
 | 
| +++ b/device/bluetooth/test/bluetooth_test_android.cc
 | 
| @@ -7,6 +7,7 @@
 | 
|  #include "base/logging.h"
 | 
|  #include "device/bluetooth/android/wrappers.h"
 | 
|  #include "device/bluetooth/bluetooth_adapter_android.h"
 | 
| +#include "device/bluetooth/bluetooth_device_android.h"
 | 
|  #include "jni/Fakes_jni.h"
 | 
|  
 | 
|  using base::android::AttachCurrentThread;
 | 
| @@ -40,8 +41,8 @@ void BluetoothTestAndroid::InitWithoutDefaultAdapter() {
 | 
|  }
 | 
|  
 | 
|  void BluetoothTestAndroid::InitWithFakeAdapter() {
 | 
| -  j_fake_bluetooth_adapter_.Reset(
 | 
| -      Java_FakeBluetoothAdapter_create(AttachCurrentThread()));
 | 
| +  j_fake_bluetooth_adapter_.Reset(Java_FakeBluetoothAdapter_create(
 | 
| +      AttachCurrentThread(), reinterpret_cast<intptr_t>(this)));
 | 
|  
 | 
|    adapter_ =
 | 
|        BluetoothAdapterAndroid::Create(j_fake_bluetooth_adapter_.obj()).get();
 | 
| @@ -52,4 +53,65 @@ void BluetoothTestAndroid::DiscoverLowEnergyDevice(int device_ordinal) {
 | 
|        AttachCurrentThread(), j_fake_bluetooth_adapter_.obj(), device_ordinal);
 | 
|  }
 | 
|  
 | 
| +void BluetoothTestAndroid::CompleteGattConnection(BluetoothDevice* device) {
 | 
| +  BluetoothDeviceAndroid* device_android =
 | 
| +      static_cast<BluetoothDeviceAndroid*>(device);
 | 
| +
 | 
| +  Java_FakeBluetoothDevice_connectionStateChange(
 | 
| +      AttachCurrentThread(), device_android->GetJavaObject().obj(),
 | 
| +      0,      // android.bluetooth.BluetoothGatt.GATT_SUCCESS
 | 
| +      true);  // connected
 | 
| +}
 | 
| +
 | 
| +void BluetoothTestAndroid::FailGattConnection(
 | 
| +    BluetoothDevice* device,
 | 
| +    BluetoothDevice::ConnectErrorCode error) {
 | 
| +  int android_error_value = 0;
 | 
| +  switch (error) {  // Constants are from android.bluetooth.BluetoothGatt.
 | 
| +    case BluetoothDevice::ERROR_FAILED:
 | 
| +      android_error_value = 0x00000101;  // GATT_FAILURE
 | 
| +      break;
 | 
| +    case BluetoothDevice::ERROR_AUTH_FAILED:
 | 
| +      android_error_value = 0x00000005;  // GATT_INSUFFICIENT_AUTHENTICATION
 | 
| +      break;
 | 
| +    case BluetoothDevice::ERROR_UNKNOWN:
 | 
| +    case BluetoothDevice::ERROR_INPROGRESS:
 | 
| +    case BluetoothDevice::ERROR_AUTH_CANCELED:
 | 
| +    case BluetoothDevice::ERROR_AUTH_REJECTED:
 | 
| +    case BluetoothDevice::ERROR_AUTH_TIMEOUT:
 | 
| +    case BluetoothDevice::ERROR_UNSUPPORTED_DEVICE:
 | 
| +      NOTREACHED() << "No translation for error code: " << error;
 | 
| +  }
 | 
| +
 | 
| +  BluetoothDeviceAndroid* device_android =
 | 
| +      static_cast<BluetoothDeviceAndroid*>(device);
 | 
| +
 | 
| +  Java_FakeBluetoothDevice_connectionStateChange(
 | 
| +      AttachCurrentThread(), device_android->GetJavaObject().obj(),
 | 
| +      android_error_value,
 | 
| +      false);  // connected
 | 
| +}
 | 
| +
 | 
| +void BluetoothTestAndroid::CompleteGattDisconnection(BluetoothDevice* device) {
 | 
| +  BluetoothDeviceAndroid* device_android =
 | 
| +      static_cast<BluetoothDeviceAndroid*>(device);
 | 
| +
 | 
| +  Java_FakeBluetoothDevice_connectionStateChange(
 | 
| +      AttachCurrentThread(), device_android->GetJavaObject().obj(),
 | 
| +      0,       // android.bluetooth.BluetoothGatt.GATT_SUCCESS
 | 
| +      false);  // disconnected
 | 
| +}
 | 
| +
 | 
| +// Records that Java FakeBluetoothDevice connectGatt was called.
 | 
| +void BluetoothTestAndroid::OnBluetoothDeviceConnectGattCalled(JNIEnv* env,
 | 
| +                                                              jobject caller) {
 | 
| +  gatt_connection_attempt_count_++;
 | 
| +}
 | 
| +
 | 
| +// Records that Java FakeBluetoothGatt disconnect was called.
 | 
| +void BluetoothTestAndroid::OnFakeBluetoothGattDisconnect(JNIEnv* env,
 | 
| +                                                         jobject caller) {
 | 
| +  gatt_disconnection_attempt_count_++;
 | 
| +}
 | 
| +
 | 
|  }  // namespace device
 | 
| 
 |