summaryrefslogtreecommitdiffstats
path: root/chrome/browser
diff options
context:
space:
mode:
authorchocobo@google.com <chocobo@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2009-10-09 22:45:01 +0000
committerchocobo@google.com <chocobo@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2009-10-09 22:45:01 +0000
commit1f37cf1e1302c79aa4f1854633c7b38d05432155 (patch)
tree28b7757852b825ecdfb28ceb0bea881cbc144fb9 /chrome/browser
parent747ca431003f9b1a3f09af01484931888c066164 (diff)
downloadchromium_src-1f37cf1e1302c79aa4f1854633c7b38d05432155.zip
chromium_src-1f37cf1e1302c79aa4f1854633c7b38d05432155.tar.gz
chromium_src-1f37cf1e1302c79aa4f1854633c7b38d05432155.tar.bz2
A couple fixes for network cros library
- no need to send updates after connecting to wifi. the cros api will handle this. - clear state before parsing ServiceStatus in case the network no longer exists. BUG=23923 TEST=none Review URL: http://codereview.chromium.org/271038 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@28617 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser')
-rw-r--r--chrome/browser/chromeos/cros_network_library.cc91
-rw-r--r--chrome/browser/chromeos/cros_network_library.h8
2 files changed, 42 insertions, 57 deletions
diff --git a/chrome/browser/chromeos/cros_network_library.cc b/chrome/browser/chromeos/cros_network_library.cc
index fa55fca..4b37aaf 100644
--- a/chrome/browser/chromeos/cros_network_library.cc
+++ b/chrome/browser/chromeos/cros_network_library.cc
@@ -14,7 +14,9 @@ CrosNetworkLibrary::CrosNetworkLibrary()
wifi_connecting_(false),
wifi_strength_(0) {
if (CrosLibrary::loaded()) {
- InitNetworkStatus();
+ chromeos::ServiceStatus* service_status = chromeos::GetAvailableNetworks();
+ UpdateNetworkServiceStatus(*service_status);
+ chromeos::FreeServiceStatus(service_status);
chromeos::MonitorNetworkStatus(&NetworkStatusChangedHandler, this);
}
}
@@ -75,69 +77,54 @@ static const char* GetEncryptionString(chromeos::EncryptionType encryption) {
void CrosNetworkLibrary::ConnectToWifiNetwork(WifiNetwork network,
const string16& password) {
- bool ok = true;
- if (CrosLibrary::loaded()) {
- ok = chromeos::ConnectToWifiNetwork(network.ssid.c_str(),
+ if (CrosLibrary::loaded())
+ chromeos::ConnectToWifiNetwork(network.ssid.c_str(),
password.empty() ? NULL : UTF16ToUTF8(password).c_str(),
GetEncryptionString(network.encryption));
- }
- if (ok) {
- // Notify all observers that connection has started.
- wifi_ssid_ = network.ssid;
- wifi_connecting_ = true;
- wifi_strength_ = network.strength;
- FOR_EACH_OBSERVER(Observer, observers_, NetworkChanged(this));
- }
}
// static
void CrosNetworkLibrary::NetworkStatusChangedHandler(void* object,
const chromeos::ServiceStatus& service_status) {
CrosNetworkLibrary* network = static_cast<CrosNetworkLibrary*>(object);
- for (int i = 0; i < service_status.size; i++)
- network->ParseNetworkServiceInfo(service_status.services[i]);
+ network->UpdateNetworkServiceStatus(service_status);
FOR_EACH_OBSERVER(Observer, network->observers_, NetworkChanged(network));
}
-void CrosNetworkLibrary::ParseNetworkServiceInfo(
- const chromeos::ServiceInfo& service) {
- DLOG(INFO) << "Parse " << service.ssid <<
- " typ=" << service.type <<
- " sta=" << service.state <<
- " pas=" << service.needs_passphrase <<
- " enc=" << service.encryption <<
- " sig=" << service.signal_strength;
- if (service.type == chromeos::TYPE_ETHERNET) {
- // Get the ethernet status.
- ethernet_connected_ = service.state == chromeos::STATE_READY;
- } else if (service.type == chromeos::TYPE_WIFI) {
- if (service.state == chromeos::STATE_READY) {
- // Record the wifi network that is connected.
- wifi_ssid_ = service.ssid;
- wifi_connecting_ = false;
- wifi_strength_ = service.signal_strength;
- } else if (service.state == chromeos::STATE_ASSOCIATION ||
- service.state == chromeos::STATE_CONFIGURATION) {
- // Record the wifi network that is connecting.
- wifi_ssid_ = service.ssid;
- wifi_connecting_ = true;
- wifi_strength_ = service.signal_strength;
- } else {
- // A wifi network is disconnected.
- // If it is the current connected (or connecting) wifi network, then
- // we are currently disconnected from any wifi network.
- if (service.ssid == wifi_ssid_) {
- wifi_ssid_.clear();
- wifi_connecting_ = false;
- wifi_strength_ = 0;
+void CrosNetworkLibrary::UpdateNetworkServiceStatus(
+ const chromeos::ServiceStatus& service_status) {
+ // Loop through the services and figure out what the current state is.
+ bool found_ethernet = false;
+ bool found_wifi = false;
+ for (int i = 0; i < service_status.size; i++) {
+ const chromeos::ServiceInfo& service = service_status.services[i];
+ DLOG(INFO) << "Parse " << service.ssid <<
+ " typ=" << service.type <<
+ " sta=" << service.state <<
+ " pas=" << service.needs_passphrase <<
+ " enc=" << service.encryption <<
+ " sig=" << service.signal_strength;
+ if (service.type == chromeos::TYPE_ETHERNET) {
+ found_ethernet = true;
+ // Get the ethernet status.
+ ethernet_connected_ = service.state == chromeos::STATE_READY;
+ } else if (service.type == chromeos::TYPE_WIFI) {
+ if (service.state == chromeos::STATE_READY ||
+ service.state == chromeos::STATE_ASSOCIATION ||
+ service.state == chromeos::STATE_CONFIGURATION) {
+ found_wifi = true;
+ // Record the wifi network that is connected.
+ wifi_ssid_ = service.ssid;
+ wifi_connecting_ = service.state != chromeos::STATE_READY;
+ wifi_strength_ = service.signal_strength;
}
}
}
-}
-
-void CrosNetworkLibrary::InitNetworkStatus() {
- chromeos::ServiceStatus* service_status = chromeos::GetAvailableNetworks();
- for (int i = 0; i < service_status->size; i++)
- ParseNetworkServiceInfo(service_status->services[i]);
- chromeos::FreeServiceStatus(service_status);
+ if (!found_ethernet)
+ ethernet_connected_ = false;
+ if (!found_wifi) {
+ wifi_ssid_.clear();
+ wifi_connecting_ = false;
+ wifi_strength_ = 0;
+ }
}
diff --git a/chrome/browser/chromeos/cros_network_library.h b/chrome/browser/chromeos/cros_network_library.h
index 884282b..a400a25 100644
--- a/chrome/browser/chromeos/cros_network_library.h
+++ b/chrome/browser/chromeos/cros_network_library.h
@@ -75,11 +75,9 @@ class CrosNetworkLibrary {
static void NetworkStatusChangedHandler(void* object,
const chromeos::ServiceStatus& service_status);
- // Parse a ServiceInfo objects and update our status.
- void ParseNetworkServiceInfo(const chromeos::ServiceInfo& service);
-
- // Initialize the network status on startup.
- void InitNetworkStatus();
+ // Update the network with the ServiceStatus.
+ void UpdateNetworkServiceStatus(
+ const chromeos::ServiceStatus& service_status);
ObserverList<Observer> observers_;