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 3// found in the LICENSE file. 4 5#include "chromeos/dbus/fake_bluetooth_profile_manager_client.h" 6 7#include <map> 8#include <string> 9 10#include "base/bind.h" 11#include "base/logging.h" 12#include "chromeos/dbus/fake_bluetooth_profile_service_provider.h" 13#include "dbus/bus.h" 14#include "dbus/message.h" 15#include "dbus/object_path.h" 16#include "dbus/object_proxy.h" 17#include "third_party/cros_system_api/dbus/service_constants.h" 18 19namespace chromeos { 20 21const char FakeBluetoothProfileManagerClient::kL2capUuid[] = 22 "4d995052-33cc-4fdf-b446-75f32942a076"; 23const char FakeBluetoothProfileManagerClient::kRfcommUuid[] = 24 "3f6d6dbf-a6ad-45fc-9653-47dc912ef70e"; 25 26FakeBluetoothProfileManagerClient::FakeBluetoothProfileManagerClient() { 27} 28 29FakeBluetoothProfileManagerClient::~FakeBluetoothProfileManagerClient() { 30} 31 32void FakeBluetoothProfileManagerClient::Init(dbus::Bus* bus) { 33} 34 35void FakeBluetoothProfileManagerClient::RegisterProfile( 36 const dbus::ObjectPath& profile_path, 37 const std::string& uuid, 38 const Options& options, 39 const base::Closure& callback, 40 const ErrorCallback& error_callback) { 41 VLOG(1) << "RegisterProfile: " << profile_path.value() << ": " << uuid; 42 43 // check options for channel & psm 44 45 ServiceProviderMap::iterator iter = service_provider_map_.find(profile_path); 46 if (iter == service_provider_map_.end()) { 47 error_callback.Run(bluetooth_profile_manager::kErrorInvalidArguments, 48 "No profile created"); 49 } else { 50 ProfileMap::iterator piter = profile_map_.find(uuid); 51 if (piter != profile_map_.end()) { 52 error_callback.Run(bluetooth_profile_manager::kErrorAlreadyExists, 53 "Profile already registered"); 54 } else { 55 profile_map_[uuid] = profile_path; 56 callback.Run(); 57 } 58 } 59} 60 61void FakeBluetoothProfileManagerClient::UnregisterProfile( 62 const dbus::ObjectPath& profile_path, 63 const base::Closure& callback, 64 const ErrorCallback& error_callback) { 65 VLOG(1) << "UnregisterProfile: " << profile_path.value(); 66 67 ServiceProviderMap::iterator iter = service_provider_map_.find(profile_path); 68 if (iter == service_provider_map_.end()) { 69 error_callback.Run(bluetooth_profile_manager::kErrorInvalidArguments, 70 "Profile not registered"); 71 } else { 72 for (ProfileMap::iterator piter = profile_map_.begin(); 73 piter != profile_map_.end(); ++piter) { 74 if (piter->second == profile_path) { 75 profile_map_.erase(piter); 76 break; 77 } 78 } 79 80 callback.Run(); 81 } 82} 83 84void FakeBluetoothProfileManagerClient::RegisterProfileServiceProvider( 85 FakeBluetoothProfileServiceProvider* service_provider) { 86 service_provider_map_[service_provider->object_path_] = service_provider; 87} 88 89void FakeBluetoothProfileManagerClient::UnregisterProfileServiceProvider( 90 FakeBluetoothProfileServiceProvider* service_provider) { 91 ServiceProviderMap::iterator iter = 92 service_provider_map_.find(service_provider->object_path_); 93 if (iter != service_provider_map_.end() && iter->second == service_provider) 94 service_provider_map_.erase(iter); 95} 96 97FakeBluetoothProfileServiceProvider* 98FakeBluetoothProfileManagerClient::GetProfileServiceProvider( 99 const std::string& uuid) { 100 ProfileMap::iterator iter = profile_map_.find(uuid); 101 if (iter == profile_map_.end()) 102 return NULL; 103 return service_provider_map_[iter->second]; 104} 105 106} // namespace chromeos 107