1 // Copyright (c) 2012 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_IPCONFIG_CLIENT_H_
6 #define CHROMEOS_DBUS_SHILL_IPCONFIG_CLIENT_H_
10 #include "base/basictypes.h"
11 #include "base/callback.h"
12 #include "chromeos/chromeos_export.h"
13 #include "chromeos/dbus/dbus_client.h"
14 #include "chromeos/dbus/shill_client_helper.h"
19 class DictionaryValue
;
31 class ShillPropertyChangedObserver
;
33 // ShillIPConfigClient is used to communicate with the Shill IPConfig
34 // service. All methods should be called from the origin thread which
35 // initializes the DBusThreadManager instance.
36 class CHROMEOS_EXPORT ShillIPConfigClient
: public DBusClient
{
38 typedef ShillClientHelper::PropertyChangedHandler PropertyChangedHandler
;
39 typedef ShillClientHelper::DictionaryValueCallback DictionaryValueCallback
;
43 // Adds an IPConfig entry.
44 virtual void AddIPConfig(const std::string
& ip_config_path
,
45 const base::DictionaryValue
& properties
) = 0;
48 virtual ~TestInterface() {}
51 ~ShillIPConfigClient() override
;
53 // Factory function, creates a new instance which is owned by the caller.
54 // For normal usage, access the singleton via DBusThreadManager::Get().
55 static ShillIPConfigClient
* Create();
57 // Adds a property changed |observer| for the ipconfig at |ipconfig_path|.
58 virtual void AddPropertyChangedObserver(
59 const dbus::ObjectPath
& ipconfig_path
,
60 ShillPropertyChangedObserver
* observer
) = 0;
62 // Removes a property changed |observer| for the ipconfig at |ipconfig_path|.
63 virtual void RemovePropertyChangedObserver(
64 const dbus::ObjectPath
& ipconfig_path
,
65 ShillPropertyChangedObserver
* observer
) = 0;
67 // Refreshes the active IP configuration after service property changes and
68 // renews the DHCP lease, if any.
69 virtual void Refresh(const dbus::ObjectPath
& ipconfig_path
,
70 const VoidDBusMethodCallback
& callback
) = 0;
72 // Calls GetProperties method.
73 // |callback| is called after the method call succeeds.
74 virtual void GetProperties(const dbus::ObjectPath
& ipconfig_path
,
75 const DictionaryValueCallback
& callback
) = 0;
77 // Calls SetProperty method.
78 // |callback| is called after the method call succeeds.
79 virtual void SetProperty(const dbus::ObjectPath
& ipconfig_path
,
80 const std::string
& name
,
81 const base::Value
& value
,
82 const VoidDBusMethodCallback
& callback
) = 0;
84 // Calls ClearProperty method.
85 // |callback| is called after the method call succeeds.
86 virtual void ClearProperty(const dbus::ObjectPath
& ipconfig_path
,
87 const std::string
& name
,
88 const VoidDBusMethodCallback
& callback
) = 0;
90 // Calls Remove method.
91 // |callback| is called after the method call succeeds.
92 virtual void Remove(const dbus::ObjectPath
& ipconfig_path
,
93 const VoidDBusMethodCallback
& callback
) = 0;
95 // Returns an interface for testing (stub only), or returns NULL.
96 virtual ShillIPConfigClient::TestInterface
* GetTestInterface() = 0;
99 friend class ShillIPConfigClientTest
;
101 // Create() should be used instead.
102 ShillIPConfigClient();
105 DISALLOW_COPY_AND_ASSIGN(ShillIPConfigClient
);
108 } // namespace chromeos
110 #endif // CHROMEOS_DBUS_SHILL_IPCONFIG_CLIENT_H_