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. 4 5 #ifndef CHROMEOS_DBUS_SHILL_SERVICE_CLIENT_H_ 6 #define CHROMEOS_DBUS_SHILL_SERVICE_CLIENT_H_ 7 8 #include <string> 9 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" 15 16 namespace base { 17 18 class Value; 19 class DictionaryValue; 20 21 } // namespace base 22 23 namespace dbus { 24 25 class ObjectPath; 26 27 } // namespace dbus 28 29 namespace chromeos { 30 31 // ShillServiceClient is used to communicate with the Shill Service 32 // service. 33 // All methods should be called from the origin thread which initializes the 34 // DBusThreadManager instance. 35 class CHROMEOS_EXPORT ShillServiceClient : public DBusClient { 36 public: 37 typedef ShillClientHelper::PropertyChangedHandler PropertyChangedHandler; 38 typedef ShillClientHelper::DictionaryValueCallback DictionaryValueCallback; 39 typedef ShillClientHelper::ListValueCallback ListValueCallback; 40 typedef ShillClientHelper::ErrorCallback ErrorCallback; 41 42 // Interface for setting up services for testing. Accessed through 43 // GetTestInterface(), only implemented in the stub implementation. 44 class TestInterface { 45 public: 46 // Adds a Service to the Manager and Service stubs. 47 virtual void AddService(const std::string& service_path, 48 const std::string& name, 49 const std::string& type, 50 const std::string& state, 51 bool add_to_visible_list, 52 bool add_to_watch_list) = 0; 53 virtual void AddServiceWithIPConfig(const std::string& service_path, 54 const std::string& name, 55 const std::string& type, 56 const std::string& state, 57 const std::string& ipconfig_path, 58 bool add_to_visible_list, 59 bool add_to_watch_list) = 0; 60 61 // Removes a Service to the Manager and Service stubs. 62 virtual void RemoveService(const std::string& service_path) = 0; 63 64 // Returns false if a Service matching |service_path| does not exist. 65 virtual bool SetServiceProperty(const std::string& service_path, 66 const std::string& property, 67 const base::Value& value) = 0; 68 69 // Returns properties for |service_path| or NULL if no Service matches. 70 virtual const base::DictionaryValue* GetServiceProperties( 71 const std::string& service_path) const = 0; 72 73 // Clears all Services from the Manager and Service stubs. 74 virtual void ClearServices() = 0; 75 76 virtual void SetConnectBehavior(const std::string& service_path, 77 const base::Closure& behavior) = 0; 78 79 protected: ~TestInterface()80 virtual ~TestInterface() {} 81 }; 82 virtual ~ShillServiceClient(); 83 84 // Factory function, creates a new instance which is owned by the caller. 85 // For normal usage, access the singleton via DBusThreadManager::Get(). 86 static ShillServiceClient* Create(); 87 88 // Adds a property changed |observer| to the service at |service_path|. 89 virtual void AddPropertyChangedObserver( 90 const dbus::ObjectPath& service_path, 91 ShillPropertyChangedObserver* observer) = 0; 92 93 // Removes a property changed |observer| to the service at |service_path|. 94 virtual void RemovePropertyChangedObserver( 95 const dbus::ObjectPath& service_path, 96 ShillPropertyChangedObserver* observer) = 0; 97 98 // Calls GetProperties method. 99 // |callback| is called after the method call succeeds. 100 virtual void GetProperties(const dbus::ObjectPath& service_path, 101 const DictionaryValueCallback& callback) = 0; 102 103 // Calls SetProperty method. 104 // |callback| is called after the method call succeeds. 105 virtual void SetProperty(const dbus::ObjectPath& service_path, 106 const std::string& name, 107 const base::Value& value, 108 const base::Closure& callback, 109 const ErrorCallback& error_callback) = 0; 110 111 // Calls SetProperties method. 112 // |callback| is called after the method call succeeds. 113 virtual void SetProperties(const dbus::ObjectPath& service_path, 114 const base::DictionaryValue& properties, 115 const base::Closure& callback, 116 const ErrorCallback& error_callback) = 0; 117 118 // Calls ClearProperty method. 119 // |callback| is called after the method call succeeds. 120 virtual void ClearProperty(const dbus::ObjectPath& service_path, 121 const std::string& name, 122 const base::Closure& callback, 123 const ErrorCallback& error_callback) = 0; 124 125 // Calls ClearProperties method. 126 // |callback| is called after the method call succeeds. 127 virtual void ClearProperties(const dbus::ObjectPath& service_path, 128 const std::vector<std::string>& names, 129 const ListValueCallback& callback, 130 const ErrorCallback& error_callback) = 0; 131 132 // Calls Connect method. 133 // |callback| is called after the method call succeeds. 134 virtual void Connect(const dbus::ObjectPath& service_path, 135 const base::Closure& callback, 136 const ErrorCallback& error_callback) = 0; 137 138 // Calls Disconnect method. 139 // |callback| is called after the method call succeeds. 140 virtual void Disconnect(const dbus::ObjectPath& service_path, 141 const base::Closure& callback, 142 const ErrorCallback& error_callback) = 0; 143 144 // Calls Remove method. 145 // |callback| is called after the method call succeeds. 146 virtual void Remove(const dbus::ObjectPath& service_path, 147 const base::Closure& callback, 148 const ErrorCallback& error_callback) = 0; 149 150 // Calls ActivateCellularModem method. 151 // |callback| is called after the method call succeeds. 152 virtual void ActivateCellularModem( 153 const dbus::ObjectPath& service_path, 154 const std::string& carrier, 155 const base::Closure& callback, 156 const ErrorCallback& error_callback) = 0; 157 158 // Calls the CompleteCellularActivation method. 159 // |callback| is called after the method call succeeds. 160 virtual void CompleteCellularActivation( 161 const dbus::ObjectPath& service_path, 162 const base::Closure& callback, 163 const ErrorCallback& error_callback) = 0; 164 165 // Calls the GetLoadableProfileEntries method. 166 // |callback| is called after the method call succeeds. 167 virtual void GetLoadableProfileEntries( 168 const dbus::ObjectPath& service_path, 169 const DictionaryValueCallback& callback) = 0; 170 171 // Returns an interface for testing (stub only), or returns NULL. 172 virtual TestInterface* GetTestInterface() = 0; 173 174 protected: 175 friend class ShillServiceClientTest; 176 177 // Create() should be used instead. 178 ShillServiceClient(); 179 180 private: 181 DISALLOW_COPY_AND_ASSIGN(ShillServiceClient); 182 }; 183 184 } // namespace chromeos 185 186 #endif // CHROMEOS_DBUS_SHILL_SERVICE_CLIENT_H_ 187