Track active references in ShillClientHelper (Take 2)
[chromium-blink-merge.git] / chromeos / dbus / shill_device_client_stub.h
blobfe2ca8c57939636491a66e18326d51e401cbcfcf
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.
5 #ifndef CHROMEOS_DBUS_SHILL_DEVICE_CLIENT_STUB_H_
6 #define CHROMEOS_DBUS_SHILL_DEVICE_CLIENT_STUB_H_
8 #include <string>
10 #include "base/basictypes.h"
11 #include "chromeos/dbus/shill_device_client.h"
13 namespace chromeos {
15 // A stub implementation of ShillDeviceClient.
16 // Implemented: Stub cellular device for SMS testing.
17 class ShillDeviceClientStub : public ShillDeviceClient,
18 public ShillDeviceClient::TestInterface {
19 public:
20 ShillDeviceClientStub();
21 virtual ~ShillDeviceClientStub();
23 // ShillDeviceClient overrides
24 virtual void Init(dbus::Bus* bus) OVERRIDE;
25 virtual void AddPropertyChangedObserver(
26 const dbus::ObjectPath& device_path,
27 ShillPropertyChangedObserver* observer) OVERRIDE;
28 virtual void RemovePropertyChangedObserver(
29 const dbus::ObjectPath& device_path,
30 ShillPropertyChangedObserver* observer) OVERRIDE;
31 virtual void GetProperties(const dbus::ObjectPath& device_path,
32 const DictionaryValueCallback& callback) OVERRIDE;
33 virtual void ProposeScan(const dbus::ObjectPath& device_path,
34 const VoidDBusMethodCallback& callback) OVERRIDE;
36 virtual void SetProperty(const dbus::ObjectPath& device_path,
37 const std::string& name,
38 const base::Value& value,
39 const base::Closure& callback,
40 const ErrorCallback& error_callback) OVERRIDE;
41 virtual void ClearProperty(const dbus::ObjectPath& device_path,
42 const std::string& name,
43 const VoidDBusMethodCallback& callback) OVERRIDE;
44 virtual void AddIPConfig(
45 const dbus::ObjectPath& device_path,
46 const std::string& method,
47 const ObjectPathDBusMethodCallback& callback) OVERRIDE;
48 virtual void RequirePin(const dbus::ObjectPath& device_path,
49 const std::string& pin,
50 bool require,
51 const base::Closure& callback,
52 const ErrorCallback& error_callback) OVERRIDE;
53 virtual void EnterPin(const dbus::ObjectPath& device_path,
54 const std::string& pin,
55 const base::Closure& callback,
56 const ErrorCallback& error_callback) OVERRIDE;
57 virtual void UnblockPin(const dbus::ObjectPath& device_path,
58 const std::string& puk,
59 const std::string& pin,
60 const base::Closure& callback,
61 const ErrorCallback& error_callback) OVERRIDE;
62 virtual void ChangePin(const dbus::ObjectPath& device_path,
63 const std::string& old_pin,
64 const std::string& new_pin,
65 const base::Closure& callback,
66 const ErrorCallback& error_callback) OVERRIDE;
67 virtual void Register(const dbus::ObjectPath& device_path,
68 const std::string& network_id,
69 const base::Closure& callback,
70 const ErrorCallback& error_callback) OVERRIDE;
71 virtual void SetCarrier(const dbus::ObjectPath& device_path,
72 const std::string& carrier,
73 const base::Closure& callback,
74 const ErrorCallback& error_callback) OVERRIDE;
75 virtual void Reset(const dbus::ObjectPath& device_path,
76 const base::Closure& callback,
77 const ErrorCallback& error_callback) OVERRIDE;
78 virtual ShillDeviceClient::TestInterface* GetTestInterface() OVERRIDE;
80 // ShillDeviceClient::TestInterface overrides.
81 virtual void AddDevice(const std::string& device_path,
82 const std::string& type,
83 const std::string& object_path) OVERRIDE;
84 virtual void RemoveDevice(const std::string& device_path) OVERRIDE;
85 virtual void ClearDevices() OVERRIDE;
86 virtual void SetDeviceProperty(const std::string& device_path,
87 const std::string& name,
88 const base::Value& value) OVERRIDE;
89 virtual std::string GetDevicePathForType(const std::string& type) OVERRIDE;
91 private:
92 typedef ObserverList<ShillPropertyChangedObserver> PropertyObserverList;
94 void SetDefaultProperties();
95 void PassStubDeviceProperties(const dbus::ObjectPath& device_path,
96 const DictionaryValueCallback& callback) const;
98 // Posts a task to run a void callback with status code |status|.
99 void PostVoidCallback(const VoidDBusMethodCallback& callback,
100 DBusMethodCallStatus status);
102 void NotifyObserversPropertyChanged(const dbus::ObjectPath& device_path,
103 const std::string& property);
104 base::DictionaryValue* GetDeviceProperties(const std::string& device_path);
105 PropertyObserverList& GetObserverList(const dbus::ObjectPath& device_path);
107 // Dictionary of <device_name, Dictionary>.
108 base::DictionaryValue stub_devices_;
109 // Observer list for each device.
110 std::map<dbus::ObjectPath, PropertyObserverList*> observer_list_;
112 // Note: This should remain the last member so it'll be destroyed and
113 // invalidate its weak pointers before any other members are destroyed.
114 base::WeakPtrFactory<ShillDeviceClientStub> weak_ptr_factory_;
116 DISALLOW_COPY_AND_ASSIGN(ShillDeviceClientStub);
119 } // namespace chromeos
121 #endif // CHROMEOS_DBUS_SHILL_DEVICE_CLIENT_STUB_H_