| // Copyright 2013 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef CHROMEOS_DBUS_FAKE_SHILL_SERVICE_CLIENT_H_ |
| #define CHROMEOS_DBUS_FAKE_SHILL_SERVICE_CLIENT_H_ |
| |
| #include <map> |
| #include <string> |
| |
| #include "base/basictypes.h" |
| #include "base/callback.h" |
| #include "base/memory/weak_ptr.h" |
| #include "chromeos/chromeos_export.h" |
| #include "chromeos/dbus/shill_service_client.h" |
| |
| namespace chromeos { |
| |
| // A fake implementation of ShillServiceClient. This works in close coordination |
| // with FakeShillManagerClient and is not intended to be used independently. |
| class CHROMEOS_EXPORT FakeShillServiceClient |
| : public ShillServiceClient, |
| public ShillServiceClient::TestInterface { |
| public: |
| FakeShillServiceClient(); |
| virtual ~FakeShillServiceClient(); |
| |
| // ShillServiceClient overrides |
| virtual void Init(dbus::Bus* bus) OVERRIDE; |
| virtual void AddPropertyChangedObserver( |
| const dbus::ObjectPath& service_path, |
| ShillPropertyChangedObserver* observer) OVERRIDE; |
| virtual void RemovePropertyChangedObserver( |
| const dbus::ObjectPath& service_path, |
| ShillPropertyChangedObserver* observer) OVERRIDE; |
| virtual void GetProperties(const dbus::ObjectPath& service_path, |
| const DictionaryValueCallback& callback) OVERRIDE; |
| virtual void SetProperty(const dbus::ObjectPath& service_path, |
| const std::string& name, |
| const base::Value& value, |
| const base::Closure& callback, |
| const ErrorCallback& error_callback) OVERRIDE; |
| virtual void SetProperties(const dbus::ObjectPath& service_path, |
| const base::DictionaryValue& properties, |
| const base::Closure& callback, |
| const ErrorCallback& error_callback) OVERRIDE; |
| virtual void ClearProperty(const dbus::ObjectPath& service_path, |
| const std::string& name, |
| const base::Closure& callback, |
| const ErrorCallback& error_callback) OVERRIDE; |
| virtual void ClearProperties(const dbus::ObjectPath& service_path, |
| const std::vector<std::string>& names, |
| const ListValueCallback& callback, |
| const ErrorCallback& error_callback) OVERRIDE; |
| virtual void Connect(const dbus::ObjectPath& service_path, |
| const base::Closure& callback, |
| const ErrorCallback& error_callback) OVERRIDE; |
| virtual void Disconnect(const dbus::ObjectPath& service_path, |
| const base::Closure& callback, |
| const ErrorCallback& error_callback) OVERRIDE; |
| virtual void Remove(const dbus::ObjectPath& service_path, |
| const base::Closure& callback, |
| const ErrorCallback& error_callback) OVERRIDE; |
| virtual void ActivateCellularModem( |
| const dbus::ObjectPath& service_path, |
| const std::string& carrier, |
| const base::Closure& callback, |
| const ErrorCallback& error_callback) OVERRIDE; |
| virtual void CompleteCellularActivation( |
| const dbus::ObjectPath& service_path, |
| const base::Closure& callback, |
| const ErrorCallback& error_callback) OVERRIDE; |
| virtual void GetLoadableProfileEntries( |
| const dbus::ObjectPath& service_path, |
| const DictionaryValueCallback& callback) OVERRIDE; |
| virtual ShillServiceClient::TestInterface* GetTestInterface() OVERRIDE; |
| |
| // ShillServiceClient::TestInterface overrides. |
| virtual void AddService(const std::string& service_path, |
| const std::string& name, |
| const std::string& type, |
| const std::string& state, |
| bool visible) OVERRIDE; |
| virtual void AddServiceWithIPConfig(const std::string& service_path, |
| const std::string& guid, |
| const std::string& name, |
| const std::string& type, |
| const std::string& state, |
| const std::string& ipconfig_path, |
| bool visible) OVERRIDE; |
| virtual base::DictionaryValue* SetServiceProperties( |
| const std::string& service_path, |
| const std::string& guid, |
| const std::string& name, |
| const std::string& type, |
| const std::string& state, |
| bool visible) OVERRIDE; |
| virtual void RemoveService(const std::string& service_path) OVERRIDE; |
| virtual bool SetServiceProperty(const std::string& service_path, |
| const std::string& property, |
| const base::Value& value) OVERRIDE; |
| virtual const base::DictionaryValue* GetServiceProperties( |
| const std::string& service_path) const OVERRIDE; |
| virtual void ClearServices() OVERRIDE; |
| virtual void SetConnectBehavior(const std::string& service_path, |
| const base::Closure& behavior) OVERRIDE; |
| |
| private: |
| typedef ObserverList<ShillPropertyChangedObserver> PropertyObserverList; |
| |
| void NotifyObserversPropertyChanged(const dbus::ObjectPath& service_path, |
| const std::string& property); |
| base::DictionaryValue* GetModifiableServiceProperties( |
| const std::string& service_path, |
| bool create_if_missing); |
| PropertyObserverList& GetObserverList(const dbus::ObjectPath& device_path); |
| void SetOtherServicesOffline(const std::string& service_path); |
| void SetCellularActivated(const dbus::ObjectPath& service_path, |
| const ErrorCallback& error_callback); |
| void ContinueConnect(const std::string& service_path); |
| |
| base::DictionaryValue stub_services_; |
| |
| // Per network service, stores a closure that is executed on each connection |
| // attempt. The callback can for example modify the services properties in |
| // order to simulate a connection failure. |
| std::map<std::string, base::Closure> connect_behavior_; |
| |
| // Observer list for each service. |
| std::map<dbus::ObjectPath, PropertyObserverList*> observer_list_; |
| |
| // Note: This should remain the last member so it'll be destroyed and |
| // invalidate its weak pointers before any other members are destroyed. |
| base::WeakPtrFactory<FakeShillServiceClient> weak_ptr_factory_; |
| |
| DISALLOW_COPY_AND_ASSIGN(FakeShillServiceClient); |
| }; |
| |
| } // namespace chromeos |
| |
| #endif // CHROMEOS_DBUS_FAKE_SHILL_SERVICE_CLIENT_H_ |