Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(154)

Side by Side Diff: components/wifi/wifi_service_mock.cc

Issue 54323003: Base infrastructure for Networking Private API on Windows and Mac. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Track ToT. Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
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 #include "components/wifi/wifi_service.h"
6
7 #include "base/bind.h"
8 #include "base/message_loop/message_loop.h"
9 #include "components/onc/onc_constants.h"
10
11 namespace wifi {
12
13 class WiFiServiceMock : public WiFiService {
tbarzic 2013/11/15 22:56:30 This isn't actually a mock.. I think TestWifiServi
mef 2013/11/17 20:05:18 Done.
14 public:
15 WiFiServiceMock() {
16 // Populate mock data expected by unit test.
17 {
18 WiFiService::NetworkProperties network_properties;
19 network_properties.connection_state = onc::connection_state::kConnected;
20 network_properties.guid = "stub_ethernet";
21 network_properties.name = "eth0";
22 network_properties.type = onc::network_type::kEthernet;
23 network_properties.json_extra =
24 " {"
25 " \"Authentication\": \"None\""
26 " }";
27 networks_.push_back(network_properties);
28 }
29 {
30 WiFiService::NetworkProperties network_properties;
31 network_properties.connection_state = onc::connection_state::kConnected;
32 network_properties.guid = "stub_wifi1";
33 network_properties.name = "wifi1";
34 network_properties.type = onc::network_type::kWiFi;
35 network_properties.frequency = 0;
36 network_properties.ssid = "stub_wifi1";
37 network_properties.security = onc::wifi::kWEP_PSK;
38 network_properties.signal_strength = 0;
39 networks_.push_back(network_properties);
40 }
41 {
42 WiFiService::NetworkProperties network_properties;
43 network_properties.connection_state = onc::connection_state::kConnected;
44 network_properties.guid = "stub_vpn1";
45 network_properties.name = "vpn1";
46 network_properties.type = onc::network_type::kVPN;
47 networks_.push_back(network_properties);
48 }
49 {
50 WiFiService::NetworkProperties network_properties;
51 network_properties.connection_state =
52 onc::connection_state::kNotConnected;
53 network_properties.guid = "stub_wifi2";
54 network_properties.name = "wifi2_PSK";
55 network_properties.type = onc::network_type::kWiFi;
56 network_properties.frequency = 5000;
57 network_properties.frequency_list.push_back(2400);
58 network_properties.frequency_list.push_back(5000);
59 network_properties.ssid = "wifi2_PSK";
60 network_properties.security = onc::wifi::kWPA_PSK;
61 network_properties.signal_strength = 80;
62 networks_.push_back(network_properties);
63 }
64 {
65 WiFiService::NetworkProperties network_properties;
66 network_properties.connection_state =
67 onc::connection_state::kNotConnected;
68 network_properties.guid = "stub_cellular1";
69 network_properties.name = "cellular1";
70 network_properties.type = onc::network_type::kCellular;
71 network_properties.json_extra =
72 " {"
73 " \"ActivateOverNonCellularNetwork\": false,"
74 " \"ActivationState\": \"not-activated\","
75 " \"NetworkTechnology\": \"GSM\","
76 " \"RoamingState\": \"home\""
77 " }";
78 networks_.push_back(network_properties);
79 }
80 }
81
82 virtual void GetProperties(const std::string& network_guid,
83 DictionaryValue* properties,
84 std::string* error) OVERRIDE {
85 NetworkList::iterator network_properties = FindNetwork(network_guid);
86 if (network_properties != networks_.end()) {
87 properties->Swap(network_properties->ToValue(false).get());
88 } else {
89 *error = "Error.DBusFailed";
90 }
91 }
92
93 virtual void SetProperties(const std::string& network_guid,
94 scoped_ptr<base::DictionaryValue> properties,
95 std::string* error) OVERRIDE {
96 NetworkList::iterator network_properties = FindNetwork(network_guid);
97 if (network_properties == networks_.end() ||
98 !network_properties->UpdateFromValue(*properties)) {
99 *error = "Error.DBusFailed";
100 }
101 }
102
103 virtual void GetVisibleNetworks(ListValue* network_list) OVERRIDE {
104 for (WiFiService::NetworkList::const_iterator it = networks_.begin();
105 it != networks_.end();
106 ++it) {
107 scoped_ptr<DictionaryValue> network(it->ToValue(true));
108 network_list->Append(network.release());
109 }
110 }
111
112 virtual void RequestNetworkScan() OVERRIDE {
113 NotifyNetworkListChanged(networks_);
114 }
115
116 virtual void StartConnect(const std::string& network_guid,
117 std::string* error) OVERRIDE {
118 NetworkList::iterator network_properties = FindNetwork(network_guid);
119 if (network_properties != networks_.end()) {
120 DisconnectAllNetworksOfType(network_properties->type);
121 network_properties->connection_state = onc::connection_state::kConnected;
122 SortNetworks();
123 NotifyNetworkListChanged(networks_);
124 NotifyNetworkChanged(network_guid);
125 } else {
126 *error = "configure-failed";
127 }
128 }
129
130 virtual void StartDisconnect(const std::string& network_guid,
131 std::string* error) OVERRIDE {
132 NetworkList::iterator network_properties = FindNetwork(network_guid);
133 if (network_properties != networks_.end()) {
134 network_properties->connection_state =
135 onc::connection_state::kNotConnected;
136 SortNetworks();
137 NotifyNetworkListChanged(networks_);
138 NotifyNetworkChanged(network_guid);
139 } else {
140 *error = "not-found";
141 }
142 }
143
144 virtual void SetEventObservers(
145 scoped_refptr<base::MessageLoopProxy> message_loop_proxy,
146 const NetworkGuidListCallback& networks_changed_observer,
147 const NetworkGuidListCallback& network_list_changed_observer) OVERRIDE {
148 message_loop_proxy_.swap(message_loop_proxy);
149 networks_changed_observer_ = networks_changed_observer;
150 network_list_changed_observer_ = network_list_changed_observer;
151 }
152
153 private:
154 NetworkList::iterator FindNetwork(const std::string& network_guid) {
155 for (NetworkList::iterator it = networks_.begin(); it != networks_.end();
156 ++it) {
157 if (it->guid == network_guid)
158 return it;
159 }
160 return networks_.end();
161 }
162
163 void DisconnectAllNetworksOfType(const std::string& type) {
164 for (NetworkList::iterator it = networks_.begin(); it != networks_.end();
165 ++it) {
166 if (it->type == type)
167 it->connection_state = onc::connection_state::kNotConnected;
168 }
169 }
170
171 void SortNetworks() {
172 // Sort networks, so connected/connecting is up front, then by type:
173 // Ethernet, WiFi, Cellular, VPN
174 networks_.sort(WiFiService::NetworkProperties::OrderByType);
175 }
176
177 void NotifyNetworkListChanged(const NetworkList& networks) {
178 WiFiService::NetworkGuidList current_networks;
179 for (WiFiService::NetworkList::const_iterator it = networks.begin();
180 it != networks.end();
181 ++it) {
182 current_networks.push_back(it->guid);
183 }
184
185 message_loop_proxy_->PostTask(
186 FROM_HERE,
187 base::Bind(network_list_changed_observer_, current_networks));
188 }
189
190 void NotifyNetworkChanged(const std::string& network_guid) {
191 WiFiService::NetworkGuidList changed_networks(1, network_guid);
192 message_loop_proxy_->PostTask(
193 FROM_HERE,
194 base::Bind(networks_changed_observer_, changed_networks));
195 }
196
197 NetworkList networks_;
198 scoped_refptr<base::MessageLoopProxy> message_loop_proxy_;
199 NetworkGuidListCallback networks_changed_observer_;
200 NetworkGuidListCallback network_list_changed_observer_;
201 };
202
203 WiFiService* WiFiService::CreateServiceMock() { return new WiFiServiceMock(); }
204 WiFiService* WiFiService::CreateService() { return new WiFiServiceMock(); }
205
206 } // namespace wifi
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698