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 16namespace 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. 20class 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