11e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)// Copyright (c) 2013 The Chromium Authors. All rights reserved. 21e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 31e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)// found in the LICENSE file. 41e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 51e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include "chromeos/dbus/fake_nfc_manager_client.h" 61e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 71e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include "base/bind.h" 81e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include "base/logging.h" 91e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include "dbus/object_path.h" 101e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include "third_party/cros_system_api/dbus/service_constants.h" 111e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 121e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)namespace chromeos { 131e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 141e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)const char FakeNfcManagerClient::kDefaultAdapterPath[] = "/fake/nfc0"; 151e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 161e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)FakeNfcManagerClient::Properties::Properties( 171e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) const PropertyChangedCallback& callback) 181e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) : NfcManagerClient::Properties(NULL, callback) { 191e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)} 201e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 211e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)FakeNfcManagerClient::Properties::~Properties() { 221e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)} 231e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 241e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)void FakeNfcManagerClient::Properties::Get( 251e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) dbus::PropertyBase* property, 261e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) dbus::PropertySet::GetCallback callback) { 271e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) VLOG(1) << "Get " << property->name(); 281e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) callback.Run(false); 291e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)} 301e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 311e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)void FakeNfcManagerClient::Properties::GetAll() { 321e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) VLOG(1) << "GetAll"; 331e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)} 341e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 351e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)void FakeNfcManagerClient::Properties::Set( 361e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) dbus::PropertyBase* property, 371e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) dbus::PropertySet::SetCallback callback) { 381e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) VLOG(1) << "Set " << property->name(); 391e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) callback.Run(false); 401e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)} 411e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 421e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)FakeNfcManagerClient::FakeNfcManagerClient() { 431e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) properties_.reset(new Properties(base::Bind( 441e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) &FakeNfcManagerClient::OnPropertyChanged, base::Unretained(this)))); 451e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) AddAdapter(kDefaultAdapterPath); 461e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)} 471e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 481e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)FakeNfcManagerClient::~FakeNfcManagerClient() { 491e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)} 501e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 511e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)void FakeNfcManagerClient::Init(dbus::Bus* bus) { 521e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)} 531e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 541e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)void FakeNfcManagerClient::AddObserver(Observer* observer) { 551e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) observers_.AddObserver(observer); 561e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)} 571e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 581e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)void FakeNfcManagerClient::RemoveObserver(Observer* observer) { 591e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) observers_.RemoveObserver(observer); 601e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)} 611e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 621e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)FakeNfcManagerClient::Properties* FakeNfcManagerClient::GetProperties() { 631e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) return properties_.get(); 641e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)} 651e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 661e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)void FakeNfcManagerClient::AddAdapter(const std::string& adapter_path) { 671e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) VLOG(1) << "Adding NFC adapter: " << adapter_path; 681e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) dbus::ObjectPath new_adapter(adapter_path); 691e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) std::pair<std::set<dbus::ObjectPath>::iterator, bool> result = 701e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) adapters_.insert(new_adapter); 711e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) if (!result.second) { 721e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) VLOG(1) << "Adapter \"" << adapter_path << "\" already exists."; 731e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) return; 741e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) } 751e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) // Create a vector containing all object paths in the set |adapters_|. This 761e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) // will copy all members of |adapters_| to |adapters|. 771e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) std::vector<dbus::ObjectPath> adapters(adapters_.begin(), adapters_.end()); 781e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) properties_->adapters.ReplaceValue(adapters); 791e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) FOR_EACH_OBSERVER(Observer, observers_, AdapterAdded(new_adapter)); 801e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)} 811e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 821e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)void FakeNfcManagerClient::RemoveAdapter(const std::string& adapter_path) { 831e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) VLOG(1) << "Removing NFC adapter: " << adapter_path; 841e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) dbus::ObjectPath to_remove(adapter_path); 851e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) if (adapters_.erase(to_remove) == 0) { 861e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) VLOG(1) << "No such adapter: \"" << adapter_path << "\""; 871e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) return; 881e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) } 891e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) std::vector<dbus::ObjectPath> adapters(adapters_.begin(), adapters_.end()); 901e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) properties_->adapters.ReplaceValue(adapters); 911e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) FOR_EACH_OBSERVER(Observer, observers_, AdapterRemoved(to_remove)); 921e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)} 931e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 941e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)void FakeNfcManagerClient::OnPropertyChanged( 951e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) const std::string& property_name) { 961e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) FOR_EACH_OBSERVER(Observer, observers_, 971e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) ManagerPropertyChanged(property_name)); 981e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)} 991e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 1001e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)} // namespace chromeos 101