blob: 1f3f39471b062d13a8fa1d1fc26200b4dbfaace8 [file] [log] [blame]
[email protected]7d5e8cd2013-10-22 18:43:401// 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);
dcheng0280cb62015-01-16 07:37:5024 ~Properties() override;
[email protected]7d5e8cd2013-10-22 18:43:4025
26 // dbus::PropertySet overrides.
dcheng0280cb62015-01-16 07:37:5027 void Get(dbus::PropertyBase* property,
28 dbus::PropertySet::GetCallback callback) override;
29 void GetAll() override;
30 void Set(dbus::PropertyBase* property,
31 dbus::PropertySet::SetCallback callback) override;
[email protected]7d5e8cd2013-10-22 18:43:4032 };
33
34 FakeNfcManagerClient();
dcheng0280cb62015-01-16 07:37:5035 ~FakeNfcManagerClient() override;
[email protected]7d5e8cd2013-10-22 18:43:4036
37 // NfcManagerClient overrides.
dcheng0280cb62015-01-16 07:37:5038 void Init(dbus::Bus* bus) override;
39 void AddObserver(Observer* observer) override;
40 void RemoveObserver(Observer* observer) override;
41 Properties* GetProperties() override;
[email protected]7d5e8cd2013-10-22 18:43:4042
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.
brettw236d3172015-06-03 16:31:4355 base::ObserverList<Observer> observers_;
[email protected]7d5e8cd2013-10-22 18:43:4056
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_