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

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

Issue 3108011: If ethernet is not available (i.e. no wired nic), don't show ethernet in stat... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 10 years, 4 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
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/chromeos/cros/network_library.h" 5 #include "chrome/browser/chromeos/cros/network_library.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/string_number_conversions.h" 9 #include "base/string_number_conversions.h"
10 #include "base/string_util.h" 10 #include "base/string_util.h"
(...skipping 387 matching lines...) Expand 10 before | Expand all | Expand 10 after
398 WifiNetwork* wifi = GetPreferredNetwork(); 398 WifiNetwork* wifi = GetPreferredNetwork();
399 return wifi && wifi->connected(); 399 return wifi && wifi->connected();
400 } 400 }
401 401
402 bool PreferredNetworkFailed() { 402 bool PreferredNetworkFailed() {
403 WifiNetwork* wifi = GetPreferredNetwork(); 403 WifiNetwork* wifi = GetPreferredNetwork();
404 return !wifi || wifi->failed(); 404 return !wifi || wifi->failed();
405 } 405 }
406 406
407 void ConnectToWifiNetwork(WifiNetwork network, 407 void ConnectToWifiNetwork(WifiNetwork network,
408 const std::string& password, 408 const std::string& password,
409 const std::string& identity, 409 const std::string& identity,
410 const std::string& certpath) { 410 const std::string& certpath) {
411 if (CrosLibrary::Get()->EnsureLoaded()) { 411 if (CrosLibrary::Get()->EnsureLoaded()) {
412 ConnectToNetworkWithCertInfo(network.service_path().c_str(), 412 ConnectToNetworkWithCertInfo(network.service_path().c_str(),
413 password.empty() ? NULL : password.c_str(), 413 password.empty() ? NULL : password.c_str(),
414 identity.empty() ? NULL : identity.c_str(), 414 identity.empty() ? NULL : identity.c_str(),
415 certpath.empty() ? NULL : certpath.c_str()); 415 certpath.empty() ? NULL : certpath.c_str());
416 } 416 }
417 } 417 }
418 418
419 void ConnectToWifiNetwork(const std::string& ssid, 419 void ConnectToWifiNetwork(const std::string& ssid,
420 const std::string& password, 420 const std::string& password,
421 const std::string& identity, 421 const std::string& identity,
422 const std::string& certpath, 422 const std::string& certpath,
423 bool auto_connect) { 423 bool auto_connect) {
424 if (CrosLibrary::Get()->EnsureLoaded()) { 424 if (CrosLibrary::Get()->EnsureLoaded()) {
425 // First create a service from hidden network. 425 // First create a service from hidden network.
426 ServiceInfo* service = GetWifiService(ssid.c_str(), 426 ServiceInfo* service = GetWifiService(ssid.c_str(),
427 SECURITY_UNKNOWN); 427 SECURITY_UNKNOWN);
428 if (service) { 428 if (service) {
429 // Set auto-connect. 429 // Set auto-connect.
430 SetAutoConnect(service->service_path, auto_connect); 430 SetAutoConnect(service->service_path, auto_connect);
431 // Now connect to that service. 431 // Now connect to that service.
432 ConnectToNetworkWithCertInfo(service->service_path, 432 ConnectToNetworkWithCertInfo(service->service_path,
433 password.empty() ? NULL : password.c_str(), 433 password.empty() ? NULL : password.c_str(),
434 identity.empty() ? NULL : identity.c_str(), 434 identity.empty() ? NULL : identity.c_str(),
435 certpath.empty() ? NULL : certpath.c_str()); 435 certpath.empty() ? NULL : certpath.c_str());
436 436
437 // Clean up ServiceInfo object. 437 // Clean up ServiceInfo object.
438 FreeServiceInfo(service); 438 FreeServiceInfo(service);
439 } else { 439 } else {
440 LOG(WARNING) << "Cannot find hidden network: " << ssid; 440 LOG(WARNING) << "Cannot find hidden network: " << ssid;
441 // TODO(chocobo): Show error message. 441 // TODO(chocobo): Show error message.
442 } 442 }
443 } 443 }
444 } 444 }
445 445
446 void ConnectToCellularNetwork(CellularNetwork network) { 446 void ConnectToCellularNetwork(CellularNetwork network) {
447 if (CrosLibrary::Get()->EnsureLoaded()) { 447 if (CrosLibrary::Get()->EnsureLoaded()) {
448 ConnectToNetwork(network.service_path().c_str(), NULL); 448 ConnectToNetwork(network.service_path().c_str(), NULL);
449 } 449 }
450 } 450 }
451 451
452 void DisconnectFromWirelessNetwork( 452 void DisconnectFromWirelessNetwork(const WirelessNetwork& network) {
453 const WirelessNetwork& network) {
454 if (CrosLibrary::Get()->EnsureLoaded()) { 453 if (CrosLibrary::Get()->EnsureLoaded()) {
455 DisconnectFromNetwork(network.service_path().c_str()); 454 DisconnectFromNetwork(network.service_path().c_str());
456 } 455 }
457 } 456 }
458 457
459 void SaveCellularNetwork(const CellularNetwork& network) { 458 void SaveCellularNetwork(const CellularNetwork& network) {
460 // Update the wifi network in the local cache. 459 // Update the wifi network in the local cache.
461 CellularNetwork* cellular = GetWirelessNetworkByPath( 460 CellularNetwork* cellular = GetWirelessNetworkByPath(
462 cellular_networks_, 461 cellular_networks_,
463 network.service_path()); 462 network.service_path());
(...skipping 16 matching lines...) Expand all
480 // Update the wifi network with libcros. 479 // Update the wifi network with libcros.
481 if (CrosLibrary::Get()->EnsureLoaded()) { 480 if (CrosLibrary::Get()->EnsureLoaded()) {
482 SetPassphrase( 481 SetPassphrase(
483 network.service_path().c_str(), network.passphrase().c_str()); 482 network.service_path().c_str(), network.passphrase().c_str());
484 SetIdentity(network.service_path().c_str(), network.identity().c_str()); 483 SetIdentity(network.service_path().c_str(), network.identity().c_str());
485 SetCertPath(network.service_path().c_str(), network.cert_path().c_str()); 484 SetCertPath(network.service_path().c_str(), network.cert_path().c_str());
486 SetAutoConnect(network.service_path().c_str(), network.auto_connect()); 485 SetAutoConnect(network.service_path().c_str(), network.auto_connect());
487 } 486 }
488 } 487 }
489 488
490 void ForgetWirelessNetwork( 489 void ForgetWirelessNetwork(const std::string& service_path) {
491 const std::string& service_path) {
492 if (CrosLibrary::Get()->EnsureLoaded()) { 490 if (CrosLibrary::Get()->EnsureLoaded()) {
493 DeleteRememberedService(service_path.c_str()); 491 DeleteRememberedService(service_path.c_str());
494 } 492 }
495 } 493 }
496 494
497 virtual bool ethernet_available() const { 495 virtual bool ethernet_available() const {
498 return available_devices_ & (1 << TYPE_ETHERNET); 496 return available_devices_ & (1 << TYPE_ETHERNET);
499 } 497 }
500 virtual bool wifi_available() const { 498 virtual bool wifi_available() const {
501 return available_devices_ & (1 << TYPE_WIFI); 499 return available_devices_ & (1 << TYPE_WIFI);
502 } 500 }
503 virtual bool cellular_available() const { 501 virtual bool cellular_available() const {
504 return available_devices_ & (1 << TYPE_CELLULAR); 502 return available_devices_ & (1 << TYPE_CELLULAR);
505 } 503 }
506 504
507 virtual bool ethernet_enabled() const { 505 virtual bool ethernet_enabled() const {
508 return enabled_devices_ & (1 << TYPE_ETHERNET); 506 return enabled_devices_ & (1 << TYPE_ETHERNET);
509 } 507 }
510 virtual bool wifi_enabled() const { 508 virtual bool wifi_enabled() const {
511 return enabled_devices_ & (1 << TYPE_WIFI); 509 return enabled_devices_ & (1 << TYPE_WIFI);
512 } 510 }
513 virtual bool cellular_enabled() const { 511 virtual bool cellular_enabled() const {
514 return enabled_devices_ & (1 << TYPE_CELLULAR); 512 return enabled_devices_ & (1 << TYPE_CELLULAR);
515 } 513 }
516 514
517 virtual bool offline_mode() const { return offline_mode_; } 515 virtual bool offline_mode() const { return offline_mode_; }
518 516
519 void EnableEthernetNetworkDevice(bool enable) { 517 void EnableEthernetNetworkDevice(bool enable) {
520 EnableNetworkDeviceType(TYPE_ETHERNET, enable); 518 EnableNetworkDeviceType(TYPE_ETHERNET, enable);
521 } 519 }
522 520
523 void EnableWifiNetworkDevice(bool enable) { 521 void EnableWifiNetworkDevice(bool enable) {
524 EnableNetworkDeviceType(TYPE_WIFI, enable); 522 EnableNetworkDeviceType(TYPE_WIFI, enable);
(...skipping 16 matching lines...) Expand all
541 LOG(INFO) << 539 LOG(INFO) <<
542 "Trying to disable offline mode when it's already disabled. "; 540 "Trying to disable offline mode when it's already disabled. ";
543 return; 541 return;
544 } 542 }
545 543
546 if (SetOfflineMode(enable)) { 544 if (SetOfflineMode(enable)) {
547 offline_mode_ = enable; 545 offline_mode_ = enable;
548 } 546 }
549 } 547 }
550 548
551 NetworkIPConfigVector GetIPConfigs( 549 NetworkIPConfigVector GetIPConfigs(const std::string& device_path) {
552 const std::string& device_path) {
553 NetworkIPConfigVector ipconfig_vector; 550 NetworkIPConfigVector ipconfig_vector;
554 if (!device_path.empty()) { 551 if (!device_path.empty()) {
555 IPConfigStatus* ipconfig_status = ListIPConfigs(device_path.c_str()); 552 IPConfigStatus* ipconfig_status = ListIPConfigs(device_path.c_str());
556 if (ipconfig_status) { 553 if (ipconfig_status) {
557 for (int i = 0; i < ipconfig_status->size; i++) { 554 for (int i = 0; i < ipconfig_status->size; i++) {
558 IPConfig ipconfig = ipconfig_status->ips[i]; 555 IPConfig ipconfig = ipconfig_status->ips[i];
559 ipconfig_vector.push_back( 556 ipconfig_vector.push_back(
560 NetworkIPConfig(device_path, ipconfig.type, ipconfig.address, 557 NetworkIPConfig(device_path, ipconfig.type, ipconfig.address,
561 ipconfig.netmask, ipconfig.gateway, 558 ipconfig.netmask, ipconfig.gateway,
562 ipconfig.name_servers)); 559 ipconfig.name_servers));
(...skipping 14 matching lines...) Expand all
577 base::IntToString(refresh) + "\"/>"); 574 base::IntToString(refresh) + "\"/>");
578 output.append("</head><body>"); 575 output.append("</head><body>");
579 if (refresh > 0) { 576 if (refresh > 0) {
580 output.append("(Auto-refreshing page every " + 577 output.append("(Auto-refreshing page every " +
581 base::IntToString(refresh) + "s)"); 578 base::IntToString(refresh) + "s)");
582 } else { 579 } else {
583 output.append("(To auto-refresh this page: about:network/&lt;secs&gt;)"); 580 output.append("(To auto-refresh this page: about:network/&lt;secs&gt;)");
584 } 581 }
585 582
586 output.append("<h3>Ethernet:</h3><table border=1>"); 583 output.append("<h3>Ethernet:</h3><table border=1>");
587 output.append("<tr>" + ToHtmlTableHeader(&ethernet_) + "</tr>"); 584 if (ethernet_enabled()) {
588 output.append("<tr>" + ToHtmlTableRow(&ethernet_) + "</tr>"); 585 output.append("<tr>" + ToHtmlTableHeader(&ethernet_) + "</tr>");
586 output.append("<tr>" + ToHtmlTableRow(&ethernet_) + "</tr>");
587 }
589 588
590 output.append("</table><h3>Wifi:</h3><table border=1>"); 589 output.append("</table><h3>Wifi:</h3><table border=1>");
591 for (size_t i = 0; i < wifi_networks_.size(); ++i) { 590 for (size_t i = 0; i < wifi_networks_.size(); ++i) {
592 if (i == 0) 591 if (i == 0)
593 output.append("<tr>" + ToHtmlTableHeader(&wifi_networks_[i]) + "</tr>"); 592 output.append("<tr>" + ToHtmlTableHeader(&wifi_networks_[i]) + "</tr>");
594 output.append("<tr>" + ToHtmlTableRow(&wifi_networks_[i]) + "</tr>"); 593 output.append("<tr>" + ToHtmlTableRow(&wifi_networks_[i]) + "</tr>");
595 } 594 }
596 595
597 output.append("</table><h3>Cellular:</h3><table border=1>"); 596 output.append("</table><h3>Cellular:</h3><table border=1>");
598 for (size_t i = 0; i < cellular_networks_.size(); ++i) { 597 for (size_t i = 0; i < cellular_networks_.size(); ++i) {
(...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after
811 810
812 // const version 811 // const version
813 template<typename T> const T* GetWirelessNetworkByPath( 812 template<typename T> const T* GetWirelessNetworkByPath(
814 const std::vector<T>& networks, const std::string& path) const { 813 const std::vector<T>& networks, const std::string& path) const {
815 typedef typename std::vector<T>::const_iterator iter_t; 814 typedef typename std::vector<T>::const_iterator iter_t;
816 iter_t iter = std::find_if(networks.begin(), networks.end(), 815 iter_t iter = std::find_if(networks.begin(), networks.end(),
817 WirelessNetwork::ServicePathEq(path)); 816 WirelessNetwork::ServicePathEq(path));
818 return (iter != networks.end()) ? &(*iter) : NULL; 817 return (iter != networks.end()) ? &(*iter) : NULL;
819 } 818 }
820 819
821 void EnableNetworkDeviceType(ConnectionType device, 820 void EnableNetworkDeviceType(ConnectionType device, bool enable) {
822 bool enable) {
823 if (!CrosLibrary::Get()->EnsureLoaded()) 821 if (!CrosLibrary::Get()->EnsureLoaded())
824 return; 822 return;
825 823
826 // If network device is already enabled/disabled, then don't do anything. 824 // If network device is already enabled/disabled, then don't do anything.
827 if (enable && (enabled_devices_ & (1 << device))) { 825 if (enable && (enabled_devices_ & (1 << device))) {
828 LOG(WARNING) << "Trying to enable a device that's already enabled: " 826 LOG(WARNING) << "Trying to enable a device that's already enabled: "
829 << device; 827 << device;
830 return; 828 return;
831 } 829 }
832 if (!enable && !(enabled_devices_ & (1 << device))) { 830 if (!enable && !(enabled_devices_ & (1 << device))) {
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after
1015 return new NetworkLibraryStubImpl(); 1013 return new NetworkLibraryStubImpl();
1016 else 1014 else
1017 return new NetworkLibraryImpl(); 1015 return new NetworkLibraryImpl();
1018 } 1016 }
1019 1017
1020 } // namespace chromeos 1018 } // namespace chromeos
1021 1019
1022 // Allows InvokeLater without adding refcounting. This class is a Singleton and 1020 // Allows InvokeLater without adding refcounting. This class is a Singleton and
1023 // won't be deleted until it's last InvokeLater is run. 1021 // won't be deleted until it's last InvokeLater is run.
1024 DISABLE_RUNNABLE_METHOD_REFCOUNT(chromeos::NetworkLibraryImpl); 1022 DISABLE_RUNNABLE_METHOD_REFCOUNT(chromeos::NetworkLibraryImpl);
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698