summaryrefslogtreecommitdiffstats
path: root/device/bluetooth/dbus/fake_bluetooth_gatt_manager_client.cc
diff options
context:
space:
mode:
Diffstat (limited to 'device/bluetooth/dbus/fake_bluetooth_gatt_manager_client.cc')
-rw-r--r--device/bluetooth/dbus/fake_bluetooth_gatt_manager_client.cc169
1 files changed, 169 insertions, 0 deletions
diff --git a/device/bluetooth/dbus/fake_bluetooth_gatt_manager_client.cc b/device/bluetooth/dbus/fake_bluetooth_gatt_manager_client.cc
new file mode 100644
index 0000000..284a17c
--- /dev/null
+++ b/device/bluetooth/dbus/fake_bluetooth_gatt_manager_client.cc
@@ -0,0 +1,169 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "device/bluetooth/dbus/fake_bluetooth_gatt_manager_client.h"
+
+#include "base/logging.h"
+#include "device/bluetooth/dbus/fake_bluetooth_gatt_characteristic_service_provider.h"
+#include "device/bluetooth/dbus/fake_bluetooth_gatt_descriptor_service_provider.h"
+#include "device/bluetooth/dbus/fake_bluetooth_gatt_service_service_provider.h"
+#include "third_party/cros_system_api/dbus/service_constants.h"
+
+namespace bluez {
+
+FakeBluetoothGattManagerClient::FakeBluetoothGattManagerClient() {}
+
+FakeBluetoothGattManagerClient::~FakeBluetoothGattManagerClient() {}
+
+// DBusClient override.
+void FakeBluetoothGattManagerClient::Init(dbus::Bus* bus) {}
+
+// BluetoothGattManagerClient overrides.
+void FakeBluetoothGattManagerClient::RegisterService(
+ const dbus::ObjectPath& service_path,
+ const Options& options,
+ const base::Closure& callback,
+ const ErrorCallback& error_callback) {
+ VLOG(1) << "Register GATT service: " << service_path.value();
+
+ // If a service provider wasn't created before, return error.
+ ServiceMap::iterator iter = service_map_.find(service_path);
+ if (iter == service_map_.end()) {
+ error_callback.Run(bluetooth_gatt_manager::kErrorInvalidArguments,
+ "GATT service doesn't exist: " + service_path.value());
+ return;
+ }
+
+ // Check to see if this GATT service was already registered.
+ ServiceProvider* provider = &iter->second;
+ if (provider->first) {
+ error_callback.Run(
+ bluetooth_gatt_manager::kErrorAlreadyExists,
+ "GATT service already registered: " + service_path.value());
+ return;
+ }
+
+ // Success!
+ provider->first = true;
+ callback.Run();
+}
+
+void FakeBluetoothGattManagerClient::UnregisterService(
+ const dbus::ObjectPath& service_path,
+ const base::Closure& callback,
+ const ErrorCallback& error_callback) {
+ VLOG(1) << "Unregister GATT service: " << service_path.value();
+
+ // If a service provider wasn't created before, return error.
+ ServiceMap::iterator iter = service_map_.find(service_path);
+ if (iter == service_map_.end()) {
+ error_callback.Run(bluetooth_gatt_manager::kErrorInvalidArguments,
+ "GATT service doesn't exist: " + service_path.value());
+ return;
+ }
+
+ // Return error if the GATT service wasn't registered before.
+ ServiceProvider* provider = &iter->second;
+ if (!provider->first) {
+ error_callback.Run(bluetooth_gatt_manager::kErrorDoesNotExist,
+ "GATT service not registered: " + service_path.value());
+ return;
+ }
+
+ // Success!
+ provider->first = false;
+ callback.Run();
+}
+
+void FakeBluetoothGattManagerClient::RegisterServiceServiceProvider(
+ FakeBluetoothGattServiceServiceProvider* provider) {
+ // Ignore, if a service provider is already registered for the object path.
+ ServiceMap::iterator iter = service_map_.find(provider->object_path());
+ if (iter != service_map_.end()) {
+ VLOG(1) << "GATT service service provider already registered for "
+ << "object path: " << provider->object_path().value();
+ return;
+ }
+ service_map_[provider->object_path()] = std::make_pair(false, provider);
+}
+
+void FakeBluetoothGattManagerClient::RegisterCharacteristicServiceProvider(
+ FakeBluetoothGattCharacteristicServiceProvider* provider) {
+ // Ignore, if a service provider is already registered for the object path.
+ CharacteristicMap::iterator iter =
+ characteristic_map_.find(provider->object_path());
+ if (iter != characteristic_map_.end()) {
+ VLOG(1) << "GATT characteristic service provider already registered for "
+ << "object path: " << provider->object_path().value();
+ return;
+ }
+ characteristic_map_[provider->object_path()] = provider;
+}
+
+void FakeBluetoothGattManagerClient::RegisterDescriptorServiceProvider(
+ FakeBluetoothGattDescriptorServiceProvider* provider) {
+ // Ignore, if a service provider is already registered for the object path.
+ DescriptorMap::iterator iter = descriptor_map_.find(provider->object_path());
+ if (iter != descriptor_map_.end()) {
+ VLOG(1) << "GATT descriptor service provider already registered for "
+ << "object path: " << provider->object_path().value();
+ return;
+ }
+ descriptor_map_[provider->object_path()] = provider;
+}
+
+void FakeBluetoothGattManagerClient::UnregisterServiceServiceProvider(
+ FakeBluetoothGattServiceServiceProvider* provider) {
+ ServiceMap::iterator iter = service_map_.find(provider->object_path());
+ if (iter != service_map_.end() && iter->second.second == provider)
+ service_map_.erase(iter);
+}
+
+void FakeBluetoothGattManagerClient::UnregisterCharacteristicServiceProvider(
+ FakeBluetoothGattCharacteristicServiceProvider* provider) {
+ characteristic_map_.erase(provider->object_path());
+}
+
+void FakeBluetoothGattManagerClient::UnregisterDescriptorServiceProvider(
+ FakeBluetoothGattDescriptorServiceProvider* provider) {
+ descriptor_map_.erase(provider->object_path());
+}
+
+FakeBluetoothGattServiceServiceProvider*
+FakeBluetoothGattManagerClient::GetServiceServiceProvider(
+ const dbus::ObjectPath& object_path) const {
+ ServiceMap::const_iterator iter = service_map_.find(object_path);
+ if (iter == service_map_.end())
+ return NULL;
+ return iter->second.second;
+}
+
+FakeBluetoothGattCharacteristicServiceProvider*
+FakeBluetoothGattManagerClient::GetCharacteristicServiceProvider(
+ const dbus::ObjectPath& object_path) const {
+ CharacteristicMap::const_iterator iter =
+ characteristic_map_.find(object_path);
+ if (iter == characteristic_map_.end())
+ return NULL;
+ return iter->second;
+}
+
+FakeBluetoothGattDescriptorServiceProvider*
+FakeBluetoothGattManagerClient::GetDescriptorServiceProvider(
+ const dbus::ObjectPath& object_path) const {
+ DescriptorMap::const_iterator iter = descriptor_map_.find(object_path);
+ if (iter == descriptor_map_.end())
+ return NULL;
+ return iter->second;
+}
+
+bool FakeBluetoothGattManagerClient::IsServiceRegistered(
+ const dbus::ObjectPath& object_path) const {
+ ServiceMap::const_iterator iter = service_map_.find(object_path);
+ if (iter == service_map_.end())
+ return false;
+ return iter->second.first;
+}
+
+} // namespace bluez