11320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Copyright (c) 2013 The Chromium Authors. All rights reserved. 21320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Use of this source code is governed by a BSD-style license that can be 31320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// found in the LICENSE file. 41320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 51320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chromeos/dbus/fake_bluetooth_profile_manager_client.h" 61320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 71320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include <map> 81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include <string> 91320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "base/bind.h" 111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "base/logging.h" 121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chromeos/dbus/fake_bluetooth_profile_service_provider.h" 131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "dbus/bus.h" 141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "dbus/message.h" 151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "dbus/object_path.h" 161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "dbus/object_proxy.h" 171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "third_party/cros_system_api/dbus/service_constants.h" 181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccinamespace chromeos { 201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciconst char FakeBluetoothProfileManagerClient::kL2capUuid[] = 221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci "4d995052-33cc-4fdf-b446-75f32942a076"; 231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciconst char FakeBluetoothProfileManagerClient::kRfcommUuid[] = 241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci "3f6d6dbf-a6ad-45fc-9653-47dc912ef70e"; 251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciFakeBluetoothProfileManagerClient::FakeBluetoothProfileManagerClient() { 271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciFakeBluetoothProfileManagerClient::~FakeBluetoothProfileManagerClient() { 301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid FakeBluetoothProfileManagerClient::Init(dbus::Bus* bus) { 331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid FakeBluetoothProfileManagerClient::RegisterProfile( 361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const dbus::ObjectPath& profile_path, 371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const std::string& uuid, 381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const Options& options, 391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const base::Closure& callback, 401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const ErrorCallback& error_callback) { 411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci VLOG(1) << "RegisterProfile: " << profile_path.value() << ": " << uuid; 421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // check options for channel & psm 441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ServiceProviderMap::iterator iter = service_provider_map_.find(profile_path); 461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (iter == service_provider_map_.end()) { 471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci error_callback.Run(bluetooth_profile_manager::kErrorInvalidArguments, 481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci "No profile created"); 491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } else { 501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ProfileMap::iterator piter = profile_map_.find(uuid); 511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (piter != profile_map_.end()) { 521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci error_callback.Run(bluetooth_profile_manager::kErrorAlreadyExists, 531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci "Profile already registered"); 541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } else { 551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci profile_map_[uuid] = profile_path; 561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci callback.Run(); 571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid FakeBluetoothProfileManagerClient::UnregisterProfile( 621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const dbus::ObjectPath& profile_path, 631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const base::Closure& callback, 641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const ErrorCallback& error_callback) { 651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci VLOG(1) << "UnregisterProfile: " << profile_path.value(); 661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ServiceProviderMap::iterator iter = service_provider_map_.find(profile_path); 681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (iter == service_provider_map_.end()) { 691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci error_callback.Run(bluetooth_profile_manager::kErrorInvalidArguments, 701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci "Profile not registered"); 711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } else { 721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci for (ProfileMap::iterator piter = profile_map_.begin(); 731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci piter != profile_map_.end(); ++piter) { 741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (piter->second == profile_path) { 751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci profile_map_.erase(piter); 761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci break; 771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci callback.Run(); 811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid FakeBluetoothProfileManagerClient::RegisterProfileServiceProvider( 851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci FakeBluetoothProfileServiceProvider* service_provider) { 861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci service_provider_map_[service_provider->object_path_] = service_provider; 871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid FakeBluetoothProfileManagerClient::UnregisterProfileServiceProvider( 901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 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