Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / chromeos / dbus / fake_shill_manager_client.h
1 // Copyright 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_SHILL_MANAGER_CLIENT_H_
6 #define CHROMEOS_DBUS_FAKE_SHILL_MANAGER_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/shill_manager_client.h"
14
15 namespace net {
16 class IPEndPoint;
17 }
18
19 namespace chromeos {
20
21 // A fake implementation of ShillManagerClient. This works in close coordination
22 // with FakeShillServiceClient. FakeShillDeviceClient, and
23 // FakeShillProfileClient, and is not intended to be used independently.
24 class CHROMEOS_EXPORT FakeShillManagerClient
25     : public ShillManagerClient,
26       public ShillManagerClient::TestInterface {
27  public:
28   FakeShillManagerClient();
29   virtual ~FakeShillManagerClient();
30
31   // ShillManagerClient overrides
32   virtual void Init(dbus::Bus* bus) OVERRIDE;
33   virtual void AddPropertyChangedObserver(
34       ShillPropertyChangedObserver* observer) OVERRIDE;
35   virtual void RemovePropertyChangedObserver(
36       ShillPropertyChangedObserver* observer) OVERRIDE;
37   virtual void GetProperties(const DictionaryValueCallback& callback) OVERRIDE;
38   virtual void GetNetworksForGeolocation(
39       const DictionaryValueCallback& callback) OVERRIDE;
40   virtual void SetProperty(const std::string& name,
41                            const base::Value& value,
42                            const base::Closure& callback,
43                            const ErrorCallback& error_callback) OVERRIDE;
44   virtual void RequestScan(const std::string& type,
45                            const base::Closure& callback,
46                            const ErrorCallback& error_callback) OVERRIDE;
47   virtual void EnableTechnology(
48       const std::string& type,
49       const base::Closure& callback,
50       const ErrorCallback& error_callback) OVERRIDE;
51   virtual void DisableTechnology(
52       const std::string& type,
53       const base::Closure& callback,
54       const ErrorCallback& error_callback) OVERRIDE;
55   virtual void ConfigureService(
56       const base::DictionaryValue& properties,
57       const ObjectPathCallback& callback,
58       const ErrorCallback& error_callback) OVERRIDE;
59   virtual void ConfigureServiceForProfile(
60       const dbus::ObjectPath& profile_path,
61       const base::DictionaryValue& properties,
62       const ObjectPathCallback& callback,
63       const ErrorCallback& error_callback) OVERRIDE;
64   virtual void GetService(
65       const base::DictionaryValue& properties,
66       const ObjectPathCallback& callback,
67       const ErrorCallback& error_callback) OVERRIDE;
68   virtual void VerifyDestination(const VerificationProperties& properties,
69                                  const BooleanCallback& callback,
70                                  const ErrorCallback& error_callback) OVERRIDE;
71   virtual void VerifyAndEncryptCredentials(
72       const VerificationProperties& properties,
73       const std::string& service_path,
74       const StringCallback& callback,
75       const ErrorCallback& error_callback) OVERRIDE;
76   virtual void VerifyAndEncryptData(
77       const VerificationProperties& properties,
78       const std::string& data,
79       const StringCallback& callback,
80       const ErrorCallback& error_callback) OVERRIDE;
81   virtual void ConnectToBestServices(
82       const base::Closure& callback,
83       const ErrorCallback& error_callback) OVERRIDE;
84   virtual void AddWakeOnPacketConnection(
85       const net::IPEndPoint& ip_connection,
86       const base::Closure& callback,
87       const ErrorCallback& error_callback) OVERRIDE;
88   virtual void RemoveWakeOnPacketConnection(
89       const net::IPEndPoint& ip_endpoint,
90       const base::Closure& callback,
91       const ErrorCallback& error_callback) OVERRIDE;
92   virtual void RemoveAllWakeOnPacketConnections(
93       const base::Closure& callback,
94       const ErrorCallback& error_callback) OVERRIDE;
95
96   virtual ShillManagerClient::TestInterface* GetTestInterface() OVERRIDE;
97
98   // ShillManagerClient::TestInterface overrides.
99   virtual void AddDevice(const std::string& device_path) OVERRIDE;
100   virtual void RemoveDevice(const std::string& device_path) OVERRIDE;
101   virtual void ClearDevices() OVERRIDE;
102   virtual void AddTechnology(const std::string& type, bool enabled) OVERRIDE;
103   virtual void RemoveTechnology(const std::string& type) OVERRIDE;
104   virtual void SetTechnologyInitializing(const std::string& type,
105                                          bool initializing) OVERRIDE;
106   virtual void AddGeoNetwork(const std::string& technology,
107                              const base::DictionaryValue& network) OVERRIDE;
108   virtual void AddProfile(const std::string& profile_path) OVERRIDE;
109   virtual void ClearProperties() OVERRIDE;
110   virtual void SetManagerProperty(const std::string& key,
111                                   const base::Value& value) OVERRIDE;
112   virtual void AddManagerService(const std::string& service_path,
113                                  bool notify_observers) OVERRIDE;
114   virtual void RemoveManagerService(const std::string& service_path) OVERRIDE;
115   virtual void ClearManagerServices() OVERRIDE;
116   virtual void ServiceStateChanged(const std::string& service_path,
117                                    const std::string& state) OVERRIDE;
118   virtual void SortManagerServices(bool notify) OVERRIDE;
119   virtual void SetupDefaultEnvironment() OVERRIDE;
120   virtual int GetInteractiveDelay() const OVERRIDE;
121   virtual void SetBestServiceToConnect(
122       const std::string& service_path) OVERRIDE;
123
124   // Constants used for testing.
125   static const char kFakeEthernetNetworkGuid[];
126
127  private:
128   void SetDefaultProperties();
129   void PassStubProperties(const DictionaryValueCallback& callback) const;
130   void PassStubGeoNetworks(const DictionaryValueCallback& callback) const;
131   void CallNotifyObserversPropertyChanged(const std::string& property);
132   void NotifyObserversPropertyChanged(const std::string& property);
133   base::ListValue* GetListProperty(const std::string& property);
134   bool TechnologyEnabled(const std::string& type) const;
135   void SetTechnologyEnabled(const std::string& type,
136                             const base::Closure& callback,
137                             bool enabled);
138   base::ListValue* GetEnabledServiceList(const std::string& property) const;
139   void ScanCompleted(const std::string& device_path,
140                      const base::Closure& callback);
141
142   // Parses the command line for Shill stub switches and sets initial states.
143   // Uses comma-separated name-value pairs (see SplitStringIntoKeyValuePairs):
144   // interactive={delay} - sets delay in seconds for interactive UI
145   // {wifi,cellular,etc}={on,off,disabled,none} - sets initial state for type
146   void ParseCommandLineSwitch();
147   bool ParseOption(const std::string& arg0, const std::string& arg1);
148   bool SetInitialNetworkState(std::string type_arg, std::string state_arg);
149   std::string GetInitialStateForType(const std::string& type,
150                                      bool* enabled);
151
152   // Dictionary of property name -> property value
153   base::DictionaryValue stub_properties_;
154
155   // Dictionary of technology -> list of property dictionaries
156   base::DictionaryValue stub_geo_networks_;
157
158   // Seconds to delay interactive actions
159   int interactive_delay_;
160
161   // Initial state for fake services.
162   std::map<std::string, std::string> shill_initial_state_map_;
163   typedef std::map<std::string, base::Value*> ShillPropertyMap;
164   typedef std::map<std::string, ShillPropertyMap> DevicePropertyMap;
165   DevicePropertyMap shill_device_property_map_;
166
167   ObserverList<ShillPropertyChangedObserver> observer_list_;
168
169   // Note: This should remain the last member so it'll be destroyed and
170   // invalidate its weak pointers before any other members are destroyed.
171   base::WeakPtrFactory<FakeShillManagerClient> weak_ptr_factory_;
172
173   // Track the default service for signaling Manager.DefaultService.
174   std::string default_service_;
175
176   // 'Best' service to connect to on ConnectToBestServices() calls.
177   std::string best_service_;
178
179   DISALLOW_COPY_AND_ASSIGN(FakeShillManagerClient);
180 };
181
182 }  // namespace chromeos
183
184 #endif  // CHROMEOS_DBUS_FAKE_SHILL_MANAGER_CLIENT_H_