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 #ifndef CHROMEOS_DBUS_FAKE_NFC_MANAGER_CLIENT_H_ 6 #define CHROMEOS_DBUS_FAKE_NFC_MANAGER_CLIENT_H_ 7 8 #include <set> 9 #include <string> 10 11 #include "base/observer_list.h" 12 #include "chromeos/chromeos_export.h" 13 #include "chromeos/dbus/nfc_manager_client.h" 14 #include "dbus/property.h" 15 16 namespace chromeos { 17 18 // FakeNfcManagerClient simulates the behavior of the NFC Daemon manager object 19 // and is used both in test cases in place of a mock and on the Linux desktop. 20 class CHROMEOS_EXPORT FakeNfcManagerClient : public NfcManagerClient { 21 public: 22 struct Properties : public NfcManagerClient::Properties { 23 explicit Properties(const PropertyChangedCallback& callback); 24 virtual ~Properties(); 25 26 // dbus::PropertySet overrides. 27 virtual void Get(dbus::PropertyBase* property, 28 dbus::PropertySet::GetCallback callback) OVERRIDE; 29 virtual void GetAll() OVERRIDE; 30 virtual void Set(dbus::PropertyBase* property, 31 dbus::PropertySet::SetCallback callback) OVERRIDE; 32 }; 33 34 FakeNfcManagerClient(); 35 virtual ~FakeNfcManagerClient(); 36 37 // NfcManagerClient overrides. 38 virtual void Init(dbus::Bus* bus) OVERRIDE; 39 virtual void AddObserver(Observer* observer) OVERRIDE; 40 virtual void RemoveObserver(Observer* observer) OVERRIDE; 41 virtual Properties* GetProperties() OVERRIDE; 42 43 // Methods to simulate adapters getting added and removed. 44 void AddAdapter(const std::string& adapter_path); 45 void RemoveAdapter(const std::string& adapter_path); 46 47 // Default path of an adapter that is simulated for testing. 48 static const char kDefaultAdapterPath[]; 49 50 private: 51 // Property callback passed when we create Properties* structures. 52 void OnPropertyChanged(const std::string& property_name); 53 54 // List of observers interested in event notifications. 55 ObserverList<Observer> observers_; 56 57 // Set containing the currently simulated adapters. 58 std::set<dbus::ObjectPath> adapters_; 59 60 // Fake properties object. This gets updated whenever AddAdapter or 61 // RemoveAdapter gets called. 62 scoped_ptr<Properties> properties_; 63 64 DISALLOW_COPY_AND_ASSIGN(FakeNfcManagerClient); 65 }; 66 67 } // namespace chromeos 68 69 #endif // CHROMEOS_DBUS_FAKE_NFC_MANAGER_CLIENT_H_ 70