OLD | NEW |
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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/dbus/fake_bluetooth_adapter_client.h" | 5 #include "device/bluetooth/dbus/fake_bluetooth_adapter_client.h" |
6 | 6 |
| 7 #include <map> |
| 8 #include <utility> |
| 9 |
| 10 #include "base/bind_helpers.h" |
| 11 #include "base/callback_forward.h" |
7 #include "base/location.h" | 12 #include "base/location.h" |
8 #include "base/logging.h" | 13 #include "base/logging.h" |
9 #include "base/single_thread_task_runner.h" | 14 #include "base/single_thread_task_runner.h" |
10 #include "base/threading/thread_task_runner_handle.h" | 15 #include "base/threading/thread_task_runner_handle.h" |
11 #include "base/time/time.h" | 16 #include "base/time/time.h" |
| 17 #include "dbus/bus.h" |
| 18 #include "device/bluetooth/bluez/bluetooth_service_record_bluez.h" |
12 #include "device/bluetooth/dbus/bluez_dbus_manager.h" | 19 #include "device/bluetooth/dbus/bluez_dbus_manager.h" |
13 #include "device/bluetooth/dbus/fake_bluetooth_device_client.h" | 20 #include "device/bluetooth/dbus/fake_bluetooth_device_client.h" |
14 #include "third_party/cros_system_api/dbus/service_constants.h" | 21 #include "third_party/cros_system_api/dbus/service_constants.h" |
15 | 22 |
16 namespace bluez { | 23 namespace bluez { |
17 | 24 |
18 namespace { | 25 namespace { |
19 | 26 |
20 // Default interval for delayed tasks. | 27 // Default interval for delayed tasks. |
21 const int kSimulationIntervalMs = 750; | 28 const int kSimulationIntervalMs = 750; |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
64 } else { | 71 } else { |
65 callback.Run(false); | 72 callback.Run(false); |
66 } | 73 } |
67 } | 74 } |
68 | 75 |
69 FakeBluetoothAdapterClient::FakeBluetoothAdapterClient() | 76 FakeBluetoothAdapterClient::FakeBluetoothAdapterClient() |
70 : visible_(true), | 77 : visible_(true), |
71 second_visible_(false), | 78 second_visible_(false), |
72 discovering_count_(0), | 79 discovering_count_(0), |
73 set_discovery_filter_should_fail_(false), | 80 set_discovery_filter_should_fail_(false), |
74 simulation_interval_ms_(kSimulationIntervalMs) { | 81 simulation_interval_ms_(kSimulationIntervalMs), |
| 82 last_handle_(0) { |
75 properties_.reset(new Properties(base::Bind( | 83 properties_.reset(new Properties(base::Bind( |
76 &FakeBluetoothAdapterClient::OnPropertyChanged, base::Unretained(this)))); | 84 &FakeBluetoothAdapterClient::OnPropertyChanged, base::Unretained(this)))); |
77 | 85 |
78 properties_->address.ReplaceValue(kAdapterAddress); | 86 properties_->address.ReplaceValue(kAdapterAddress); |
79 properties_->name.ReplaceValue("Fake Adapter (Name)"); | 87 properties_->name.ReplaceValue("Fake Adapter (Name)"); |
80 properties_->alias.ReplaceValue(kAdapterName); | 88 properties_->alias.ReplaceValue(kAdapterName); |
81 properties_->pairable.ReplaceValue(true); | 89 properties_->pairable.ReplaceValue(true); |
82 | 90 |
83 second_properties_.reset(new Properties(base::Bind( | 91 second_properties_.reset(new Properties(base::Bind( |
84 &FakeBluetoothAdapterClient::OnPropertyChanged, base::Unretained(this)))); | 92 &FakeBluetoothAdapterClient::OnPropertyChanged, base::Unretained(this)))); |
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
219 PostDelayedTask(base::Bind(error_callback, kNoResponseError, "")); | 227 PostDelayedTask(base::Bind(error_callback, kNoResponseError, "")); |
220 set_discovery_filter_should_fail_ = false; | 228 set_discovery_filter_should_fail_ = false; |
221 return; | 229 return; |
222 } | 230 } |
223 | 231 |
224 discovery_filter_.reset(new DiscoveryFilter()); | 232 discovery_filter_.reset(new DiscoveryFilter()); |
225 discovery_filter_->CopyFrom(discovery_filter); | 233 discovery_filter_->CopyFrom(discovery_filter); |
226 PostDelayedTask(callback); | 234 PostDelayedTask(callback); |
227 } | 235 } |
228 | 236 |
| 237 void FakeBluetoothAdapterClient::CreateServiceRecord( |
| 238 const dbus::ObjectPath& object_path, |
| 239 const bluez::BluetoothServiceRecordBlueZ& record, |
| 240 const ServiceRecordCallback& callback, |
| 241 const ErrorCallback& error_callback) { |
| 242 ++last_handle_; |
| 243 records_.insert( |
| 244 std::pair<uint32_t, BluetoothServiceRecordBlueZ>(last_handle_, record)); |
| 245 callback.Run(last_handle_); |
| 246 } |
| 247 |
| 248 void FakeBluetoothAdapterClient::RemoveServiceRecord( |
| 249 const dbus::ObjectPath& object_path, |
| 250 uint32_t handle, |
| 251 const base::Closure& callback, |
| 252 const ErrorCallback& error_callback) { |
| 253 auto it = records_.find(handle); |
| 254 if (it == records_.end()) { |
| 255 error_callback.Run(bluetooth_adapter::kErrorDoesNotExist, |
| 256 "Service record does not exist."); |
| 257 return; |
| 258 } |
| 259 records_.erase(it); |
| 260 callback.Run(); |
| 261 } |
| 262 |
229 void FakeBluetoothAdapterClient::SetSimulationIntervalMs(int interval_ms) { | 263 void FakeBluetoothAdapterClient::SetSimulationIntervalMs(int interval_ms) { |
230 simulation_interval_ms_ = interval_ms; | 264 simulation_interval_ms_ = interval_ms; |
231 } | 265 } |
232 | 266 |
233 BluetoothAdapterClient::DiscoveryFilter* | 267 BluetoothAdapterClient::DiscoveryFilter* |
234 FakeBluetoothAdapterClient::GetDiscoveryFilter() { | 268 FakeBluetoothAdapterClient::GetDiscoveryFilter() { |
235 return discovery_filter_.get(); | 269 return discovery_filter_.get(); |
236 } | 270 } |
237 | 271 |
238 void FakeBluetoothAdapterClient::SetVisible(bool visible) { | 272 void FakeBluetoothAdapterClient::SetVisible(bool visible) { |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
297 } | 331 } |
298 | 332 |
299 void FakeBluetoothAdapterClient::PostDelayedTask( | 333 void FakeBluetoothAdapterClient::PostDelayedTask( |
300 const base::Closure& callback) { | 334 const base::Closure& callback) { |
301 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( | 335 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( |
302 FROM_HERE, callback, | 336 FROM_HERE, callback, |
303 base::TimeDelta::FromMilliseconds(simulation_interval_ms_)); | 337 base::TimeDelta::FromMilliseconds(simulation_interval_ms_)); |
304 } | 338 } |
305 | 339 |
306 } // namespace bluez | 340 } // namespace bluez |
OLD | NEW |