Home | History | Annotate | Download | only in dbus
      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