| Index: device/bluetooth/bluez/bluetooth_adapter_bluez.cc | 
| diff --git a/device/bluetooth/bluez/bluetooth_adapter_bluez.cc b/device/bluetooth/bluez/bluetooth_adapter_bluez.cc | 
| index 73e3f90dd010a1c65142863a16c0f52dc5c31516..6e304ad42ac1545cd19750f9e796cf9560f5fe1c 100644 | 
| --- a/device/bluetooth/bluez/bluetooth_adapter_bluez.cc | 
| +++ b/device/bluetooth/bluez/bluetooth_adapter_bluez.cc | 
| @@ -814,18 +814,26 @@ void BluetoothAdapterBlueZ::OnRegisterAudioSink( | 
|  | 
| void BluetoothAdapterBlueZ::CreateServiceRecord( | 
| const BluetoothServiceRecordBlueZ& record, | 
| -    const base::Closure& callback, | 
| +    const ServiceRecordCallback& callback, | 
| const ServiceRecordErrorCallback& error_callback) { | 
| -  // TODO(rkc): Implement this. | 
| -  callback.Run(); | 
| +  bluez::BluezDBusManager::Get() | 
| +      ->GetBluetoothAdapterClient() | 
| +      ->CreateServiceRecord( | 
| +          object_path_, record, callback, | 
| +          base::Bind(&BluetoothAdapterBlueZ::ServiceRecordErrorConnector, | 
| +                     weak_ptr_factory_.GetWeakPtr(), error_callback)); | 
| } | 
|  | 
| void BluetoothAdapterBlueZ::RemoveServiceRecord( | 
| -    const device::BluetoothUUID& uuid, | 
| +    uint32_t handle, | 
| const base::Closure& callback, | 
| const ServiceRecordErrorCallback& error_callback) { | 
| -  // TODO(rkc): Implement this. | 
| -  callback.Run(); | 
| +  bluez::BluezDBusManager::Get() | 
| +      ->GetBluetoothAdapterClient() | 
| +      ->RemoveServiceRecord( | 
| +          object_path_, handle, callback, | 
| +          base::Bind(&BluetoothAdapterBlueZ::ServiceRecordErrorConnector, | 
| +                     weak_ptr_factory_.GetWeakPtr(), error_callback)); | 
| } | 
|  | 
| BluetoothDeviceBlueZ* BluetoothAdapterBlueZ::GetDeviceWithPath( | 
| @@ -1648,4 +1656,26 @@ void BluetoothAdapterBlueZ::RegisterApplicationOnError( | 
| RegisterApplication(callback, error_callback); | 
| } | 
|  | 
| +void BluetoothAdapterBlueZ::ServiceRecordErrorConnector( | 
| +    const ServiceRecordErrorCallback& error_callback, | 
| +    const std::string& error_name, | 
| +    const std::string& error_message) { | 
| +  VLOG(1) << "Creating service record failed: error: " << error_name << " - " | 
| +          << error_message; | 
| + | 
| +  BluetoothServiceRecordBlueZ::ErrorCode code = | 
| +      BluetoothServiceRecordBlueZ::ErrorCode::UNKNOWN; | 
| +  if (error_name == bluetooth_adapter::kErrorInvalidArguments) { | 
| +    code = BluetoothServiceRecordBlueZ::ErrorCode::ERROR_INVALID_ARGUMENTS; | 
| +  } else if (error_name == bluetooth_adapter::kErrorDoesNotExist) { | 
| +    code = BluetoothServiceRecordBlueZ::ErrorCode::ERROR_RECORD_DOES_NOT_EXIST; | 
| +  } else if (error_name == bluetooth_adapter::kErrorAlreadyExists) { | 
| +    code = BluetoothServiceRecordBlueZ::ErrorCode::ERROR_RECORD_ALREADY_EXISTS; | 
| +  } else if (error_name == bluetooth_adapter::kErrorNotReady) { | 
| +    code = BluetoothServiceRecordBlueZ::ErrorCode::ERROR_ADAPTER_NOT_READY; | 
| +  } | 
| + | 
| +  error_callback.Run(code); | 
| +} | 
| + | 
| }  // namespace bluez | 
|  |