Index: chromeos/dbus/fake_bluetooth_profile_manager_client.cc |
diff --git a/chromeos/dbus/fake_bluetooth_profile_manager_client.cc b/chromeos/dbus/fake_bluetooth_profile_manager_client.cc |
index 0547e4b1d9c9771f89db1958737ad40d0d433239..2f2fb8e0b23d49aae9fc1b8980d7d1a724496a26 100644 |
--- a/chromeos/dbus/fake_bluetooth_profile_manager_client.cc |
+++ b/chromeos/dbus/fake_bluetooth_profile_manager_client.cc |
@@ -4,8 +4,12 @@ |
#include "chromeos/dbus/fake_bluetooth_profile_manager_client.h" |
+#include <map> |
+#include <string> |
+ |
#include "base/bind.h" |
#include "base/logging.h" |
+#include "chromeos/dbus/fake_bluetooth_profile_service_provider.h" |
#include "dbus/bus.h" |
#include "dbus/message.h" |
#include "dbus/object_path.h" |
@@ -14,6 +18,11 @@ |
namespace chromeos { |
+const char FakeBluetoothProfileManagerClient::kL2capUuid[] = |
+ "4d995052-33cc-4fdf-b446-75f32942a076"; |
+const char FakeBluetoothProfileManagerClient::kRfcommUuid[] = |
+ "3f6d6dbf-a6ad-45fc-9653-47dc912ef70e"; |
+ |
FakeBluetoothProfileManagerClient::FakeBluetoothProfileManagerClient() { |
} |
@@ -27,7 +36,23 @@ void FakeBluetoothProfileManagerClient::RegisterProfile( |
const base::Closure& callback, |
const ErrorCallback& error_callback) { |
VLOG(1) << "RegisterProfile: " << profile_path.value() << ": " << uuid; |
- callback.Run(); |
+ |
+ // check options for channel & psm |
+ |
+ ServiceProviderMap::iterator iter = service_provider_map_.find(profile_path); |
+ if (iter == service_provider_map_.end()) { |
+ error_callback.Run(bluetooth_adapter::kErrorFailed, |
+ "No profile created"); |
+ } else { |
+ ProfileMap::iterator piter = profile_map_.find(uuid); |
+ if (piter != profile_map_.end()) { |
+ error_callback.Run(bluetooth_adapter::kErrorAlreadyExists, |
+ "Profile already registered"); |
+ } else { |
+ profile_map_[uuid] = profile_path; |
+ callback.Run(); |
+ } |
+ } |
} |
void FakeBluetoothProfileManagerClient::UnregisterProfile( |
@@ -35,7 +60,44 @@ void FakeBluetoothProfileManagerClient::UnregisterProfile( |
const base::Closure& callback, |
const ErrorCallback& error_callback) { |
VLOG(1) << "UnregisterProfile: " << profile_path.value(); |
- callback.Run(); |
+ |
+ ServiceProviderMap::iterator iter = service_provider_map_.find(profile_path); |
+ if (iter != service_provider_map_.end()) { |
+ error_callback.Run(bluetooth_adapter::kErrorFailed, |
+ "Profile still registered"); |
+ } else { |
+ for (ProfileMap::iterator piter = profile_map_.begin(); |
+ piter != profile_map_.end(); ++piter) { |
+ if (piter->second == profile_path) { |
+ profile_map_.erase(piter); |
+ break; |
+ } |
+ } |
+ |
+ callback.Run(); |
+ } |
+} |
+ |
+void FakeBluetoothProfileManagerClient::RegisterProfileServiceProvider( |
+ FakeBluetoothProfileServiceProvider* service_provider) { |
+ service_provider_map_[service_provider->object_path_] = service_provider; |
+} |
+ |
+void FakeBluetoothProfileManagerClient::UnregisterProfileServiceProvider( |
+ FakeBluetoothProfileServiceProvider* service_provider) { |
+ ServiceProviderMap::iterator iter = |
+ service_provider_map_.find(service_provider->object_path_); |
+ if (iter != service_provider_map_.end() && iter->second == service_provider) |
+ service_provider_map_.erase(iter); |
+} |
+ |
+FakeBluetoothProfileServiceProvider* |
+FakeBluetoothProfileManagerClient::GetProfileServiceProvider( |
+ const std::string& uuid) { |
+ ProfileMap::iterator iter = profile_map_.find(uuid); |
+ if (iter == profile_map_.end()) |
+ return NULL; |
+ return service_provider_map_[iter->second]; |
} |
} // namespace chromeos |