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

Side by Side Diff: chrome/browser/chromeos/cros/network_library_impl_stub.cc

Issue 23618026: NOT FOR SUBMIT: Remove NetworkLibrary (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 7 years, 3 months 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 (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 #include "chrome/browser/chromeos/cros/network_library_impl_stub.h"
6
7 #include "base/bind.h"
8 #include "base/command_line.h"
9 #include "base/stl_util.h"
10 #include "chrome/browser/chromeos/cros/native_network_constants.h"
11 #include "chromeos/chromeos_switches.h"
12 #include "content/public/browser/browser_thread.h"
13 #include "third_party/cros_system_api/dbus/service_constants.h"
14
15 using content::BrowserThread;
16
17 namespace {
18
19 bool IsEthernetEnabled() {
20 return !CommandLine::ForCurrentProcess()->HasSwitch(
21 chromeos::switches::kDisableStubEthernet);
22 }
23
24 bool IsInteractive() {
25 return CommandLine::ForCurrentProcess()->HasSwitch(
26 chromeos::switches::kEnableStubInteractive);
27 }
28
29 } // namespace
30
31 namespace chromeos {
32
33 NetworkLibraryImplStub::NetworkLibraryImplStub()
34 : ip_address_("1.1.1.1"),
35 hardware_address_("01:23:45:67:89:ab"),
36 pin_(""),
37 pin_required_(false),
38 pin_entered_(false),
39 network_priority_order_(0),
40 weak_pointer_factory_(this) {
41 }
42
43 NetworkLibraryImplStub::~NetworkLibraryImplStub() {
44 disabled_wifi_networks_.clear();
45 disabled_cellular_networks_.clear();
46 disabled_wimax_networks_.clear();
47 STLDeleteValues(&service_configurations_);
48 }
49
50 void NetworkLibraryImplStub::Init() {
51 is_locked_ = false;
52
53 // Enable only Cellular initially
54 int devices = (1 << TYPE_WIFI) | (1 << TYPE_CELLULAR) | (1 << TYPE_WIMAX);
55 if (IsEthernetEnabled())
56 devices |= 1 << TYPE_ETHERNET;
57 available_devices_ = devices;
58 uninitialized_devices_ = (1 << TYPE_CELLULAR);
59 enabled_devices_ = (available_devices_ & (1 << TYPE_ETHERNET));
60
61 if (IsInteractive()) {
62 const int kWifiInitDelaySeconds = 5;
63 const int kCellularInitDelaySeconds = 10;
64 const int kCellularActivateDelaySeconds = 15;
65 BrowserThread::PostDelayedTask(
66 BrowserThread::UI, FROM_HERE,
67 base::Bind(&NetworkLibraryImplStub::CompleteWifiInit,
68 weak_pointer_factory_.GetWeakPtr()),
69 base::TimeDelta::FromSeconds(kWifiInitDelaySeconds));
70 BrowserThread::PostDelayedTask(
71 BrowserThread::UI, FROM_HERE,
72 base::Bind(&NetworkLibraryImplStub::CompleteCellularInit,
73 weak_pointer_factory_.GetWeakPtr()),
74 base::TimeDelta::FromSeconds(kCellularInitDelaySeconds));
75 BrowserThread::PostDelayedTask(
76 BrowserThread::UI, FROM_HERE,
77 base::Bind(&NetworkLibraryImplStub::CompleteCellularActivate,
78 weak_pointer_factory_.GetWeakPtr()),
79 base::TimeDelta::FromSeconds(kCellularActivateDelaySeconds));
80 } else {
81 CompleteWifiInit();
82 CompleteCellularInit();
83 }
84 }
85
86 bool NetworkLibraryImplStub::IsCros() const {
87 return false;
88 }
89
90 ////////////////////////////////////////////////////////////////////////////
91 // NetworkLibraryImplStub private methods.
92
93 void NetworkLibraryImplStub::CompleteWifiInit() {
94 VLOG(1) << "CompleteWifiInit()";
95
96 uninitialized_devices_ &= ~(1 << TYPE_WIFI);
97 enabled_devices_ |= (available_devices_ & (1 << TYPE_WIFI));
98
99 // Profiles
100 AddProfile("default", PROFILE_SHARED);
101 AddProfile("user", PROFILE_USER);
102
103 // Networks
104 // If these change, the expectations in network_library_unittest and
105 // network_menu_icon_unittest need to be changed also.
106
107 if (IsEthernetEnabled()) {
108 Network* ethernet = new EthernetNetwork("eth1");
109 ethernet->set_name("Fake Ethernet");
110 ethernet->set_connected();
111 AddStubNetwork(ethernet, PROFILE_SHARED);
112 ethernet->set_is_active(ethernet->connected());
113 }
114
115 WifiNetwork* wifi1 = new WifiNetwork("wifi1");
116 wifi1->set_name("Fake WiFi1");
117 wifi1->set_strength(100);
118 wifi1->set_connected();
119 wifi1->set_encryption(SECURITY_NONE);
120 AddStubNetwork(wifi1, PROFILE_SHARED);
121
122 WifiNetwork* wifi2 = new WifiNetwork("wifi2");
123 wifi2->set_name("Fake WiFi2");
124 wifi2->set_strength(70);
125 wifi2->set_encryption(SECURITY_NONE);
126 AddStubNetwork(wifi2, PROFILE_SHARED);
127
128 WifiNetwork* wifi3 = new WifiNetwork("wifi3");
129 wifi3->set_name("Fake WiFi3 Encrypted with a long name");
130 wifi3->set_strength(60);
131 wifi3->set_encryption(SECURITY_WEP);
132 wifi3->set_passphrase_required(true);
133 AddStubNetwork(wifi3, PROFILE_USER);
134
135 CertificatePattern pattern;
136 IssuerSubjectPattern issuer;
137 issuer.set_organization("Google, Inc.");
138 pattern.set_issuer(issuer);
139 std::vector<std::string> enrollment_uris;
140 enrollment_uris.push_back("http://youtu.be/dQw4w9WgXcQ");
141 enrollment_uris.push_back("chrome-extension://abc/keygen-cert.html");
142 pattern.set_enrollment_uri_list(enrollment_uris);
143
144 WifiNetwork* wifi_cert_pattern = new WifiNetwork("wifi_cert_pattern");
145 wifi_cert_pattern->set_name("Fake WiFi CertPattern 802.1x");
146 wifi_cert_pattern->set_strength(50);
147 wifi_cert_pattern->set_connectable(false);
148 wifi_cert_pattern->set_encryption(SECURITY_8021X);
149 wifi_cert_pattern->SetEAPMethod(EAP_METHOD_TLS);
150 wifi_cert_pattern->SetEAPUseSystemCAs(true);
151 wifi_cert_pattern->SetEAPIdentity("user@example.com");
152 wifi_cert_pattern->SetEAPPhase2Auth(EAP_PHASE_2_AUTH_AUTO);
153 wifi_cert_pattern->set_client_cert_type(CLIENT_CERT_TYPE_PATTERN);
154 wifi_cert_pattern->set_client_cert_pattern(pattern);
155 wifi_cert_pattern->set_eap_save_credentials(true);
156
157 AddStubNetwork(wifi_cert_pattern, PROFILE_USER);
158
159 WifiNetwork* wifi4 = new WifiNetwork("wifi4");
160 wifi4->set_name("Fake WiFi4 802.1x");
161 wifi4->set_strength(50);
162 wifi4->set_connectable(false);
163 wifi4->set_encryption(SECURITY_8021X);
164 wifi4->SetEAPMethod(EAP_METHOD_PEAP);
165 wifi4->SetEAPIdentity("nobody@google.com");
166 wifi4->SetEAPPassphrase("password");
167 AddStubNetwork(wifi4, PROFILE_NONE);
168
169 WifiNetwork* wifi5 = new WifiNetwork("wifi5");
170 wifi5->set_name("Fake WiFi5 UTF-8 SSID ");
171 wifi5->SetSsid("Fake WiFi5 UTF-8 SSID \u3042\u3044\u3046");
172 wifi5->set_strength(25);
173 AddStubNetwork(wifi5, PROFILE_NONE);
174
175 WifiNetwork* wifi6 = new WifiNetwork("wifi6");
176 wifi6->set_name("Fake WiFi6 latin-1 SSID ");
177 wifi6->SetSsid("Fake WiFi6 latin-1 SSID \xc0\xcb\xcc\xd6\xfb");
178 wifi6->set_strength(20);
179 AddStubNetwork(wifi6, PROFILE_NONE);
180
181 WifiNetwork* wifi7 = new WifiNetwork("wifi7");
182 wifi7->set_name("Fake Wifi7 (policy-managed)");
183 wifi7->set_strength(100);
184 wifi7->set_connectable(false);
185 wifi7->set_passphrase_required(true);
186 wifi7->set_encryption(SECURITY_8021X);
187 wifi7->SetEAPMethod(EAP_METHOD_PEAP);
188 wifi7->SetEAPIdentity("enterprise@example.com");
189 wifi7->SetEAPPassphrase("password");
190 NetworkUIData wifi7_ui_data;
191 wifi7_ui_data.set_onc_source(onc::ONC_SOURCE_DEVICE_POLICY);
192 wifi7->set_ui_data(wifi7_ui_data);
193 AddStubNetwork(wifi7, PROFILE_USER);
194
195 VirtualNetwork* vpn1 = new VirtualNetwork("vpn1");
196 vpn1->set_name("Fake VPN1");
197 vpn1->set_server_hostname("vpn1server.fake.com");
198 vpn1->set_provider_type(PROVIDER_TYPE_L2TP_IPSEC_PSK);
199 vpn1->set_username("VPN User 1");
200 AddStubNetwork(vpn1, PROFILE_USER);
201
202 VirtualNetwork* vpn2 = new VirtualNetwork("vpn2");
203 vpn2->set_name("Fake VPN2");
204 vpn2->set_server_hostname("vpn2server.fake.com");
205 vpn2->set_provider_type(PROVIDER_TYPE_L2TP_IPSEC_USER_CERT);
206 vpn2->set_username("VPN User 2");
207 AddStubNetwork(vpn2, PROFILE_USER);
208
209 VirtualNetwork* vpn3 = new VirtualNetwork("vpn3");
210 vpn3->set_name("Fake VPN3");
211 vpn3->set_server_hostname("vpn3server.fake.com");
212 vpn3->set_provider_type(PROVIDER_TYPE_OPEN_VPN);
213 AddStubNetwork(vpn3, PROFILE_USER);
214
215 VirtualNetwork* vpn4 = new VirtualNetwork("vpn4");
216 vpn4->set_name("Fake VPN4 (policy-managed)");
217 vpn4->set_server_hostname("vpn4server.fake.com");
218 vpn4->set_provider_type(PROVIDER_TYPE_OPEN_VPN);
219 NetworkUIData vpn4_ui_data;
220 vpn4_ui_data.set_onc_source(onc::ONC_SOURCE_DEVICE_POLICY);
221 vpn4->set_ui_data(vpn4_ui_data);
222 AddStubNetwork(vpn4, PROFILE_USER);
223
224 VirtualNetwork* vpn_cert_pattern = new VirtualNetwork("vpn_cert_pattern");
225 vpn_cert_pattern->set_name("Fake VPN CertPattern");
226 vpn_cert_pattern->set_server_hostname("vpn4server.fake.com");
227 vpn_cert_pattern->set_provider_type(PROVIDER_TYPE_OPEN_VPN);
228 vpn_cert_pattern->set_client_cert_type(CLIENT_CERT_TYPE_PATTERN);
229 vpn_cert_pattern->set_client_cert_pattern(pattern);
230
231 AddStubNetwork(vpn_cert_pattern, PROFILE_USER);
232
233 wifi_scanning_ = false;
234
235 // Ensure our active network is connected and vice versa, otherwise our
236 // autotest browser_tests sometimes conclude the device is offline.
237 CHECK(active_network()->connected())
238 << "Active: " << active_network()->name();
239 CHECK(connected_network()->is_active());
240
241 std::string test_blob(
242 "{"
243 " \"NetworkConfigurations\": ["
244 " {"
245 " \"GUID\": \"guid\","
246 " \"Type\": \"VPN\","
247 " \"Name\": \"VPNtest\","
248 " \"VPN\": {"
249 " \"Host\": \"172.22.12.98\","
250 " \"Type\": \"L2TP-IPsec\","
251 " \"IPsec\": {"
252 " \"AuthenticationType\": \"PSK\","
253 " \"IKEVersion\": 2,"
254 " \"PSK\": \"chromeos\","
255 " },"
256 " \"L2TP\": {"
257 " \"Username\": \"vpntest\","
258 " }"
259 " }"
260 " }"
261 " ],"
262 " \"Certificates\": []"
263 "}");
264 // LoadOncNetworks(test_blob, "", onc::ONC_SOURCE_USER_IMPORT, NULL);
265
266 SignalNetworkManagerObservers();
267 }
268
269 void NetworkLibraryImplStub::CompleteCellularInit() {
270 VLOG(1) << "CompleteCellularInit()";
271
272 uninitialized_devices_ &= ~(1 << TYPE_CELLULAR);
273 uninitialized_devices_ &= ~(1 << TYPE_WIMAX);
274 enabled_devices_ |= (available_devices_ & (1 << TYPE_CELLULAR));
275 enabled_devices_ |= (available_devices_ & (1 << TYPE_WIMAX));
276
277 base::ListValue supported_carriers;
278 supported_carriers.Append(new StringValue("Generic CDMA Carrier 1"));
279 supported_carriers.Append(new StringValue("Generic UMTS"));
280 supported_carriers.Append(new StringValue("Generic CDMA Carrier 2"));
281 supported_carriers.Append(new StringValue("Generic CDMA Carrier 3"));
282
283 NetworkDevice* cellular = new NetworkDevice("cellular");
284 cellular->type_ = TYPE_CELLULAR;
285 cellular->set_technology_family(TECHNOLOGY_FAMILY_CDMA);
286 cellular->set_carrier("Generic CDMA Carrier 2");
287 cellular->imsi_ = "123456789012345";
288 cellular->set_supported_carriers(supported_carriers);
289 device_map_["cellular"] = cellular;
290
291 CellularApn apn;
292 apn.apn = "apn";
293 apn.network_id = "network_id";
294 apn.username = "username";
295 apn.password = "password";
296 apn.name = "name";
297 apn.localized_name = "localized_name";
298 apn.language = "language";
299
300 CellularApnList apn_list;
301 apn_list.push_back(apn);
302
303 NetworkDevice* cellular_gsm = new NetworkDevice("cellular_gsm");
304 cellular_gsm->type_ = TYPE_CELLULAR;
305 cellular_gsm->set_technology_family(TECHNOLOGY_FAMILY_GSM);
306 cellular_gsm->imsi_ = "123456789012345";
307 cellular_gsm->set_sim_pin_required(SIM_PIN_REQUIRED);
308 cellular_gsm->set_provider_apn_list(apn_list);
309 cellular_gsm->set_supported_carriers(supported_carriers);
310 device_map_["cellular_gsm"] = cellular_gsm;
311
312 CellularNetwork* cellular1 = new CellularNetwork("cellular1");
313 cellular1->set_name("Fake Cellular 1");
314 cellular1->set_device_path(cellular->device_path());
315 cellular1->set_strength(100);
316 cellular1->set_connected();
317 cellular1->set_activation_state(ACTIVATION_STATE_ACTIVATED);
318 cellular1->set_payment_url(std::string("http://www.google.com"));
319 cellular1->set_usage_url(std::string("http://www.google.com"));
320 cellular1->set_network_technology(NETWORK_TECHNOLOGY_EVDO);
321 AddStubNetwork(cellular1, PROFILE_NONE);
322
323 CellularNetwork* cellular2 = new CellularNetwork("cellular2");
324 cellular2->set_name("Fake Cellular 2");
325 cellular2->set_device_path(cellular->device_path());
326 cellular2->set_strength(50);
327 cellular2->set_activation_state(ACTIVATION_STATE_ACTIVATING);
328 cellular2->set_network_technology(NETWORK_TECHNOLOGY_UMTS);
329 cellular2->set_roaming_state(ROAMING_STATE_ROAMING);
330 cellular2->set_payment_url(std::string("http://www.google.com"));
331 cellular2->set_usage_url(std::string("http://www.google.com"));
332 AddStubNetwork(cellular2, PROFILE_NONE);
333
334 CellularNetwork* cellular3 = new CellularNetwork("cellular3");
335 cellular3->set_name("Fake Cellular 3 (policy-managed)");
336 cellular3->set_device_path(cellular->device_path());
337 cellular3->set_activation_state(ACTIVATION_STATE_ACTIVATED);
338 cellular3->set_network_technology(NETWORK_TECHNOLOGY_EVDO);
339 NetworkUIData cellular3_ui_data;
340 cellular3_ui_data.set_onc_source(onc::ONC_SOURCE_USER_POLICY);
341 cellular3->set_ui_data(cellular3_ui_data);
342 AddStubNetwork(cellular3, PROFILE_NONE);
343
344 CellularNetwork* cellular4 = new CellularNetwork("cellular4");
345 cellular4->set_name("Fake Cellular 4 (policy-managed)");
346 cellular4->set_device_path(cellular_gsm->device_path());
347 cellular4->set_activation_state(ACTIVATION_STATE_ACTIVATED);
348 cellular4->set_network_technology(NETWORK_TECHNOLOGY_GSM);
349 NetworkUIData cellular4_ui_data;
350 cellular4_ui_data.set_onc_source(onc::ONC_SOURCE_USER_POLICY);
351 cellular4->set_ui_data(cellular4_ui_data);
352 AddStubNetwork(cellular4, PROFILE_NONE);
353
354 WimaxNetwork* wimax1 = new WimaxNetwork("wimax1");
355 wimax1->set_name("Fake WiMAX Protected");
356 wimax1->set_strength(75);
357 wimax1->set_connectable(true);
358 wimax1->set_eap_identity("WiMAX User 1");
359 wimax1->set_passphrase_required(true);
360 AddStubNetwork(wimax1, PROFILE_NONE);
361
362 WimaxNetwork* wimax2 = new WimaxNetwork("wimax2");
363 wimax2->set_name("Fake WiMAX Open");
364 wimax2->set_strength(50);
365 wimax2->set_connected();
366 wimax2->set_passphrase_required(false);
367 AddStubNetwork(wimax2, PROFILE_NONE);
368
369 SignalNetworkManagerObservers();
370 }
371
372 void NetworkLibraryImplStub::CompleteCellularActivate() {
373 VLOG(1) << "CompleteCellularActivate()";
374 CellularNetwork* cellular2 = FindCellularNetworkByPath("cellular2");
375 cellular2->set_activation_state(ACTIVATION_STATE_ACTIVATED);
376 SignalNetworkManagerObservers();
377 }
378
379 void NetworkLibraryImplStub::AddStubNetwork(
380 Network* network, NetworkProfileType profile_type) {
381 // Currently we don't prioritize networks in Shill so don't do so in the stub.
382 // network->priority_order_ = network_priority_order_++;
383 network->CalculateUniqueId();
384 if (!network->unique_id().empty())
385 network_unique_id_map_[network->unique_id()] = network;
386 AddNetwork(network);
387 UpdateActiveNetwork(network);
388 SetProfileType(network, profile_type);
389 AddStubRememberedNetwork(network);
390 }
391
392 // Add a remembered network to the appropriate profile if specified.
393 void NetworkLibraryImplStub::AddStubRememberedNetwork(Network* network) {
394 if (network->profile_type() == PROFILE_NONE)
395 return;
396
397 Network* remembered = FindRememberedFromNetwork(network);
398 if (remembered) {
399 // This network is already in the rememebred list. Check to see if the
400 // type has changed.
401 if (remembered->profile_type() == network->profile_type())
402 return; // Same type, nothing to do.
403 // Delete the existing remembered network from the previous profile.
404 DeleteRememberedNetwork(remembered->service_path());
405 remembered = NULL;
406 }
407
408 NetworkProfile* profile = GetProfileForType(network->profile_type());
409 if (profile) {
410 profile->services.insert(network->service_path());
411 } else {
412 LOG(ERROR) << "No profile type: " << network->profile_type();
413 return;
414 }
415
416 if (network->type() == TYPE_WIFI) {
417 WifiNetwork* remembered_wifi = new WifiNetwork(network->service_path());
418 remembered_wifi->set_encryption(remembered_wifi->encryption());
419 NetworkUIData wifi_ui_data;
420 wifi_ui_data.set_onc_source(network->ui_data().onc_source());
421 remembered_wifi->set_ui_data(wifi_ui_data);
422 remembered = remembered_wifi;
423 } else if (network->type() == TYPE_VPN) {
424 VirtualNetwork* remembered_vpn =
425 new VirtualNetwork(network->service_path());
426 remembered_vpn->set_server_hostname("vpnserver.fake.com");
427 remembered_vpn->set_provider_type(PROVIDER_TYPE_L2TP_IPSEC_USER_CERT);
428 NetworkUIData vpn_ui_data;
429 vpn_ui_data.set_onc_source(network->ui_data().onc_source());
430 remembered_vpn->set_ui_data(vpn_ui_data);
431 remembered = remembered_vpn;
432 }
433 if (remembered) {
434 remembered->set_name(network->name());
435 remembered->set_unique_id(network->unique_id());
436 // ValidateAndAddRememberedNetwork will insert the network into the right
437 // remembered_*_networks_ list and the remembered_network_map_.
438 if (!ValidateAndAddRememberedNetwork(remembered))
439 NOTREACHED();
440 remembered->set_profile_path(profile->path);
441 remembered->set_profile_type(profile->type);
442 }
443 }
444
445 void NetworkLibraryImplStub::ConnectToNetwork(Network* network) {
446 std::string passphrase;
447 if (network->type() == TYPE_WIFI) {
448 WifiNetwork* wifi = static_cast<WifiNetwork*>(network);
449 if (wifi->passphrase_required())
450 passphrase = wifi->passphrase();
451 } else if (network->type() == TYPE_WIMAX) {
452 WimaxNetwork* wimax = static_cast<WimaxNetwork*>(network);
453 if (wimax->passphrase_required())
454 passphrase = wimax->eap_passphrase();
455 }
456 if (!passphrase.empty()) {
457 if (passphrase.find("bad") == 0) {
458 NetworkConnectCompleted(network, CONNECT_BAD_PASSPHRASE);
459 return;
460 } else if (passphrase.find("error") == 0) {
461 NetworkConnectCompleted(network, CONNECT_FAILED);
462 return;
463 }
464 }
465
466 // Disconnect ethernet when connecting to a new network (for UI testing).
467 if (IsEthernetEnabled() && network->type() != TYPE_VPN) {
468 ethernet_->set_is_active(false);
469 ethernet_->set_disconnected();
470 }
471
472 // Set connected state.
473 network->set_connected();
474 network->set_user_connect_state(USER_CONNECT_CONNECTED);
475
476 // Make the connected network the highest priority network.
477 // Set all other networks of the same type to disconnected + inactive;
478 int old_priority_order = network->priority_order_;
479 network->priority_order_ = 0;
480 for (NetworkMap::iterator iter = network_map_.begin();
481 iter != network_map_.end(); ++iter) {
482 Network* other = iter->second;
483 if (other == network)
484 continue;
485 if (other->priority_order_ < old_priority_order)
486 other->priority_order_++;
487 if (other->type() == network->type()) {
488 other->set_is_active(false);
489 other->set_disconnected();
490 }
491 }
492
493 // Remember connected network.
494 if (network->profile_type() == PROFILE_NONE) {
495 NetworkProfileType profile_type = PROFILE_USER;
496 if (network->type() == TYPE_WIFI) {
497 WifiNetwork* wifi = static_cast<WifiNetwork*>(network);
498 if (!wifi->encrypted())
499 profile_type = PROFILE_SHARED;
500 }
501 SetProfileType(network, profile_type);
502 }
503 AddStubRememberedNetwork(network);
504
505 // Call Completed and signal observers.
506 NetworkConnectCompleted(network, CONNECT_SUCCESS);
507 }
508
509 void NetworkLibraryImplStub::ScanCompleted() {
510 wifi_scanning_ = false;
511 SignalNetworkManagerObservers();
512 }
513
514 //////////////////////////////////////////////////////////////////////////////
515 // NetworkLibraryImplBase implementation.
516
517 void NetworkLibraryImplStub::MonitorNetworkStart(
518 const std::string& service_path) {}
519
520 void NetworkLibraryImplStub::MonitorNetworkStop(
521 const std::string& service_path) {}
522
523 void NetworkLibraryImplStub::MonitorNetworkDeviceStart(
524 const std::string& device_path) {}
525
526 void NetworkLibraryImplStub::MonitorNetworkDeviceStop(
527 const std::string& device_path) {}
528
529 void NetworkLibraryImplStub::CallConfigureService(
530 const std::string& identifier,
531 const DictionaryValue* info) {
532 DictionaryValue*& config_entry = service_configurations_[identifier];
533 delete config_entry;
534 config_entry = info->DeepCopy();
535 }
536
537 void NetworkLibraryImplStub::CallConnectToNetwork(Network* network) {
538 // Immediately set the network to active to mimic shill's behavior.
539 SetActiveNetwork(network->type(), network->service_path());
540 // If a delay has been set (i.e. we are interactive), delay the call to
541 // ConnectToNetwork (but signal observers since we changed connecting state).
542 if (IsInteractive()) {
543 const int kConnectDelayMs = 4 * 1000;
544 BrowserThread::PostDelayedTask(
545 BrowserThread::UI, FROM_HERE,
546 base::Bind(&NetworkLibraryImplStub::ConnectToNetwork,
547 weak_pointer_factory_.GetWeakPtr(), network),
548 base::TimeDelta::FromMilliseconds(kConnectDelayMs));
549 SignalNetworkManagerObservers();
550 NotifyNetworkChanged(network);
551 } else {
552 ConnectToNetwork(network);
553 }
554 }
555
556 void NetworkLibraryImplStub::CallRequestWifiNetworkAndConnect(
557 const std::string& ssid, ConnectionSecurity security) {
558 WifiNetwork* wifi = new WifiNetwork(ssid);
559 wifi->set_name(ssid);
560 wifi->set_encryption(security);
561 AddNetwork(wifi);
562 ConnectToWifiNetworkUsingConnectData(wifi);
563 SignalNetworkManagerObservers();
564 }
565
566 void NetworkLibraryImplStub::CallRequestVirtualNetworkAndConnect(
567 const std::string& service_name,
568 const std::string& server_hostname,
569 ProviderType provider_type) {
570 VirtualNetwork* vpn = new VirtualNetwork(service_name);
571 vpn->set_name(service_name);
572 vpn->set_server_hostname(server_hostname);
573 vpn->set_provider_type(provider_type);
574 AddNetwork(vpn);
575 ConnectToVirtualNetworkUsingConnectData(vpn);
576 SignalNetworkManagerObservers();
577 }
578
579 void NetworkLibraryImplStub::CallDeleteRememberedNetwork(
580 const std::string& profile_path,
581 const std::string& service_path) {}
582
583 void NetworkLibraryImplStub::CallEnableNetworkDeviceType(
584 ConnectionType device, bool enable) {
585 if (enable) {
586 if (device == TYPE_WIFI && !wifi_enabled()) {
587 wifi_networks_.swap(disabled_wifi_networks_);
588 disabled_wifi_networks_.clear();
589 RequestNetworkScan();
590 } else if (device == TYPE_WIMAX && !wimax_enabled()) {
591 wimax_networks_.swap(disabled_wimax_networks_);
592 disabled_wimax_networks_.clear();
593 } else if (device == TYPE_CELLULAR && !cellular_enabled()) {
594 cellular_networks_.swap(disabled_cellular_networks_);
595 disabled_cellular_networks_.clear();
596 }
597 enabled_devices_ |= (1 << device);
598 } else {
599 if (device == TYPE_WIFI && wifi_enabled()) {
600 wifi_networks_.swap(disabled_wifi_networks_);
601 wifi_networks_.clear();
602 if (active_wifi_)
603 DisconnectFromNetwork(active_wifi_);
604 } else if (device == TYPE_WIMAX && wimax_enabled()) {
605 wimax_networks_.swap(disabled_wimax_networks_);
606 wimax_networks_.clear();
607 if (active_wimax_)
608 DisconnectFromNetwork(active_wimax_);
609 } else if (device == TYPE_CELLULAR && cellular_enabled()) {
610 cellular_networks_.swap(disabled_cellular_networks_);
611 cellular_networks_.clear();
612 if (active_cellular_)
613 DisconnectFromNetwork(active_cellular_);
614 }
615 enabled_devices_ &= ~(1 << device);
616 }
617 SignalNetworkManagerObservers();
618 }
619
620 void NetworkLibraryImplStub::CallRemoveNetwork(const Network* network) {}
621
622 /////////////////////////////////////////////////////////////////////////////
623 // NetworkLibrary implementation.
624
625 void NetworkLibraryImplStub::ChangePin(const std::string& old_pin,
626 const std::string& new_pin) {
627 sim_operation_ = SIM_OPERATION_CHANGE_PIN;
628 if (!pin_required_ || old_pin == pin_) {
629 pin_ = new_pin;
630 NotifyPinOperationCompleted(PIN_ERROR_NONE);
631 } else {
632 NotifyPinOperationCompleted(PIN_ERROR_INCORRECT_CODE);
633 }
634 }
635
636 void NetworkLibraryImplStub::ChangeRequirePin(bool require_pin,
637 const std::string& pin) {
638 sim_operation_ = SIM_OPERATION_CHANGE_REQUIRE_PIN;
639 if (!pin_required_ || pin == pin_) {
640 pin_required_ = require_pin;
641 NotifyPinOperationCompleted(PIN_ERROR_NONE);
642 } else {
643 NotifyPinOperationCompleted(PIN_ERROR_INCORRECT_CODE);
644 }
645 }
646
647 void NetworkLibraryImplStub::EnterPin(const std::string& pin) {
648 sim_operation_ = SIM_OPERATION_ENTER_PIN;
649 if (!pin_required_ || pin == pin_) {
650 pin_entered_ = true;
651 NotifyPinOperationCompleted(PIN_ERROR_NONE);
652 } else {
653 NotifyPinOperationCompleted(PIN_ERROR_INCORRECT_CODE);
654 }
655 }
656
657 void NetworkLibraryImplStub::UnblockPin(const std::string& puk,
658 const std::string& new_pin) {
659 sim_operation_ = SIM_OPERATION_UNBLOCK_PIN;
660 // TODO(stevenjb): something?
661 NotifyPinOperationCompleted(PIN_ERROR_NONE);
662 }
663
664 void NetworkLibraryImplStub::RequestCellularScan() {}
665
666 void NetworkLibraryImplStub::RequestCellularRegister(
667 const std::string& network_id) {}
668
669 void NetworkLibraryImplStub::SetCellularDataRoamingAllowed(bool new_value) {}
670
671 void NetworkLibraryImplStub::SetCarrier(
672 const std::string& carrier,
673 const NetworkOperationCallback& completed) {
674 // Call the completed callback with a 10s delay if we're interactive.
675 int delay_ms = IsInteractive() ? 10000 : 100;
676 BrowserThread::PostDelayedTask(
677 BrowserThread::UI,
678 FROM_HERE,
679 base::Bind(completed, "", NETWORK_METHOD_ERROR_NONE,""),
680 base::TimeDelta::FromMilliseconds(delay_ms));
681 }
682
683 bool NetworkLibraryImplStub::IsCellularAlwaysInRoaming() {
684 return false;
685 }
686
687 void NetworkLibraryImplStub::RequestNetworkScan() {
688 // This is triggered by user interaction, so set a network connect delay.
689 int scan_delay_ms = IsInteractive() ? 2 * 1000 : 100;
690 wifi_scanning_ = true;
691 BrowserThread::PostDelayedTask(
692 BrowserThread::UI, FROM_HERE,
693 base::Bind(&NetworkLibraryImplStub::ScanCompleted,
694 weak_pointer_factory_.GetWeakPtr()),
695 base::TimeDelta::FromMilliseconds(scan_delay_ms));
696 }
697
698 void NetworkLibraryImplStub::DisconnectFromNetwork(const Network* network) {
699 // Update the network state here since no network manager in stub impl.
700 Network* modify_network = const_cast<Network*>(network);
701 modify_network->set_is_active(false);
702 modify_network->set_disconnected();
703 if (network == active_wifi_)
704 active_wifi_ = NULL;
705 else if (network == active_cellular_)
706 active_cellular_ = NULL;
707 else if (network == active_virtual_)
708 active_virtual_ = NULL;
709 SignalNetworkManagerObservers();
710 NotifyNetworkChanged(network);
711 }
712
713 void NetworkLibraryImplStub::GetIPConfigs(
714 const std::string& device_path,
715 HardwareAddressFormat format,
716 const NetworkGetIPConfigsCallback& callback) {
717 callback.Run(ip_configs_, hardware_address_);
718 }
719
720 void NetworkLibraryImplStub::SetIPParameters(const std::string& service_path,
721 const std::string& address,
722 const std::string& netmask,
723 const std::string& gateway,
724 const std::string& name_servers,
725 int dhcp_usage_mask) {
726 VLOG(1) << "Setting IP parameters:"
727 << "\n address: " << address
728 << (dhcp_usage_mask & USE_DHCP_ADDRESS ?
729 " (ignored)" : " (in use)")
730 << "\n netmask: " << netmask
731 << (dhcp_usage_mask & USE_DHCP_NETMASK ?
732 " (ignored)" : " (in use)")
733 << "\n gateway: " << gateway
734 << (dhcp_usage_mask & USE_DHCP_GATEWAY ?
735 " (ignored)" : " (in use)")
736 << "\n name_servers: " << name_servers
737 << (dhcp_usage_mask & USE_DHCP_NAME_SERVERS ?
738 " (ignored)" : " (in use)");
739
740 Network* network = FindNetworkByPath(service_path);
741 if (network)
742 ip_configs_.push_back(NetworkIPConfig(network->device_path(),
743 IPCONFIG_TYPE_IPV4,
744 address,
745 netmask,
746 gateway,
747 name_servers));
748 }
749
750 void NetworkLibraryImplStub::RequestNetworkServiceProperties(
751 const std::string& service_path,
752 const NetworkServicePropertiesCallback& callback) {
753 BrowserThread::PostDelayedTask(
754 BrowserThread::UI,
755 FROM_HERE,
756 base::Bind(&NetworkLibraryImplStub::SendNetworkServiceProperties,
757 weak_pointer_factory_.GetWeakPtr(),
758 service_path, callback),
759 base::TimeDelta::FromMilliseconds(100));
760 }
761
762 void NetworkLibraryImplStub::SendNetworkServiceProperties(
763 const std::string& service_path,
764 const NetworkServicePropertiesCallback& callback) {
765 scoped_ptr<base::DictionaryValue> dictionary(new base::DictionaryValue());
766 Network* network = FindNetworkByPath(service_path);
767 if (network) {
768 // Populate a few common properties.
769 dictionary->SetString(flimflam::kTypeProperty,
770 ConnectionTypeToString(network->type()));
771 dictionary->SetString(flimflam::kNameProperty, network->name());
772 dictionary->SetString(flimflam::kGuidProperty, network->unique_id());
773 dictionary->SetString(flimflam::kStateProperty,
774 ConnectionStateToString(network->state()));
775 }
776 callback.Run(service_path, dictionary.get());
777 }
778
779 const std::map<std::string, base::DictionaryValue*>&
780 NetworkLibraryImplStub::GetConfigurations() {
781 return service_configurations_;
782 }
783
784 } // namespace chromeos
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/cros/network_library_impl_stub.h ('k') | chrome/browser/chromeos/cros/network_library_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698