1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
|
// 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_MANAGER_CLIENT_H_
#define CHROMEOS_DBUS_FAKE_SHILL_MANAGER_CLIENT_H_
#include <string>
#include "base/basictypes.h"
#include "base/callback.h"
#include "chromeos/chromeos_export.h"
#include "chromeos/dbus/shill_manager_client.h"
namespace chromeos {
// A fake implementation of ShillManagerClient. This works in close coordination
// with FakeShillServiceClient. FakeShillDeviceClient, and
// FakeShillProfileClient, and is not intended to be used independently.
class CHROMEOS_EXPORT FakeShillManagerClient
: public ShillManagerClient,
public ShillManagerClient::TestInterface {
public:
FakeShillManagerClient();
virtual ~FakeShillManagerClient();
// ShillManagerClient overrides
virtual void Init(dbus::Bus* bus) OVERRIDE;
virtual void AddPropertyChangedObserver(
ShillPropertyChangedObserver* observer) OVERRIDE;
virtual void RemovePropertyChangedObserver(
ShillPropertyChangedObserver* observer) OVERRIDE;
virtual void GetProperties(const DictionaryValueCallback& callback) OVERRIDE;
virtual void GetNetworksForGeolocation(
const DictionaryValueCallback& callback) OVERRIDE;
virtual void SetProperty(const std::string& name,
const base::Value& value,
const base::Closure& callback,
const ErrorCallback& error_callback) OVERRIDE;
virtual void RequestScan(const std::string& type,
const base::Closure& callback,
const ErrorCallback& error_callback) OVERRIDE;
virtual void EnableTechnology(
const std::string& type,
const base::Closure& callback,
const ErrorCallback& error_callback) OVERRIDE;
virtual void DisableTechnology(
const std::string& type,
const base::Closure& callback,
const ErrorCallback& error_callback) OVERRIDE;
virtual void ConfigureService(
const base::DictionaryValue& properties,
const ObjectPathCallback& callback,
const ErrorCallback& error_callback) OVERRIDE;
virtual void ConfigureServiceForProfile(
const dbus::ObjectPath& profile_path,
const base::DictionaryValue& properties,
const ObjectPathCallback& callback,
const ErrorCallback& error_callback) OVERRIDE;
virtual void GetService(
const base::DictionaryValue& properties,
const ObjectPathCallback& callback,
const ErrorCallback& error_callback) OVERRIDE;
virtual void VerifyDestination(const VerificationProperties& properties,
const BooleanCallback& callback,
const ErrorCallback& error_callback) OVERRIDE;
virtual void VerifyAndEncryptCredentials(
const VerificationProperties& properties,
const std::string& service_path,
const StringCallback& callback,
const ErrorCallback& error_callback) OVERRIDE;
virtual void VerifyAndEncryptData(
const VerificationProperties& properties,
const std::string& data,
const StringCallback& callback,
const ErrorCallback& error_callback) OVERRIDE;
virtual void ConnectToBestServices(
const base::Closure& callback,
const ErrorCallback& error_callback) OVERRIDE;
virtual ShillManagerClient::TestInterface* GetTestInterface() OVERRIDE;
// ShillManagerClient::TestInterface overrides.
virtual void AddDevice(const std::string& device_path) OVERRIDE;
virtual void RemoveDevice(const std::string& device_path) OVERRIDE;
virtual void ClearDevices() OVERRIDE;
virtual void AddTechnology(const std::string& type, bool enabled) OVERRIDE;
virtual void RemoveTechnology(const std::string& type) OVERRIDE;
virtual void SetTechnologyInitializing(const std::string& type,
bool initializing) OVERRIDE;
virtual void AddGeoNetwork(const std::string& technology,
const base::DictionaryValue& network) OVERRIDE;
virtual void AddProfile(const std::string& profile_path) OVERRIDE;
virtual void ClearProperties() OVERRIDE;
virtual void SetManagerProperty(const std::string& key,
const base::Value& value) OVERRIDE;
virtual void AddManagerService(const std::string& service_path,
bool add_to_visible_list,
bool add_to_watch_list) OVERRIDE;
virtual void RemoveManagerService(const std::string& service_path) OVERRIDE;
virtual void ClearManagerServices() OVERRIDE;
virtual void ServiceStateChanged(const std::string& service_path,
const std::string& state) OVERRIDE;
virtual void SortManagerServices() OVERRIDE;
virtual void SetupDefaultEnvironment() OVERRIDE;
virtual int GetInteractiveDelay() const OVERRIDE;
private:
void AddServiceToWatchList(const std::string& service_path);
void SetDefaultProperties();
void PassStubProperties(const DictionaryValueCallback& callback) const;
void PassStubGeoNetworks(const DictionaryValueCallback& callback) const;
void CallNotifyObserversPropertyChanged(const std::string& property);
void NotifyObserversPropertyChanged(const std::string& property);
base::ListValue* GetListProperty(const std::string& property);
bool TechnologyEnabled(const std::string& type) const;
void SetTechnologyEnabled(const std::string& type,
const base::Closure& callback,
bool enabled);
base::ListValue* GetEnabledServiceList(const std::string& property) const;
void ScanCompleted(const std::string& device_path,
const base::Closure& callback);
// Parses the command line for Shill stub switches and sets initial states.
// Uses comma-separated name-value pairs (see SplitStringIntoKeyValuePairs):
// interactive={delay} - sets delay in seconds for interactive UI
// {wifi,cellular,etc}={on,off,disabled,none} - sets initial state for type
void ParseCommandLineSwitch();
bool ParseOption(const std::string& arg0, const std::string& arg1);
bool SetInitialNetworkState(std::string type_arg, std::string state_arg);
std::string GetInitialStateForType(const std::string& type,
bool* enabled);
// Dictionary of property name -> property value
base::DictionaryValue stub_properties_;
// Dictionary of technology -> list of property dictionaries
base::DictionaryValue stub_geo_networks_;
// Seconds to delay interactive actions
int interactive_delay_;
// Initial state for fake services.
std::map<std::string, std::string> shill_initial_state_map_;
ObserverList<ShillPropertyChangedObserver> 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<FakeShillManagerClient> weak_ptr_factory_;
// Track the default service for signaling Manager.DefaultService.
std::string default_service_;
DISALLOW_COPY_AND_ASSIGN(FakeShillManagerClient);
};
} // namespace chromeos
#endif // CHROMEOS_DBUS_FAKE_SHILL_MANAGER_CLIENT_H_
|