Chromium Code Reviews| Index: chrome/browser/chromeos/net/network_change_notifier_chromeos.cc |
| =================================================================== |
| --- chrome/browser/chromeos/net/network_change_notifier_chromeos.cc (revision 0) |
| +++ chrome/browser/chromeos/net/network_change_notifier_chromeos.cc (revision 0) |
| @@ -0,0 +1,78 @@ |
| +// Copyright (c) 2010 The Chromium Authors. All rights reserved. |
|
Sam Leffler
2011/05/17 02:34:28
it's 2011
|
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#include "chrome/browser/chromeos/net/network_change_notifier_chromeos.h" |
| + |
| +#include <errno.h> |
| +#include <sys/socket.h> |
| + |
| +#include "base/compiler_specific.h" |
|
oshima
2011/05/17 17:33:05
move this to header (for OVERRIDE)
zel
2011/05/18 00:43:33
Done.
|
| +#include "base/eintr_wrapper.h" |
| +#include "base/task.h" |
|
oshima
2011/05/17 17:33:05
is this used?
zel
2011/05/18 00:43:33
Done.
|
| +#include "base/threading/thread.h" |
| +#include "chrome/browser/chromeos/cros/cros_library.h" |
| +#include "net/base/net_errors.h" |
| + |
| +namespace net { |
| + |
| +namespace { |
| + |
| +const int kInvalidSocket = -1; |
|
Sam Leffler
2011/05/17 02:34:28
don't see this used
zel
2011/05/18 00:43:33
Done.
|
| + |
| +} // namespace |
| + |
| +NetworkChangeNotifierCros::NetworkChangeNotifierCros() |
| + : connected_(false), |
| + has_active_network_(false), |
| + connectivity_state_(chromeos::CONN_STATE_UNKNOWN) { |
| + |
| + chromeos::NetworkLibrary* lib = |
| + chromeos::CrosLibrary::Get()->GetNetworkLibrary(); |
| + lib->AddNetworkManagerObserver(this); |
| + UpdateNetworkState(lib); |
| +} |
| + |
| +NetworkChangeNotifierCros::~NetworkChangeNotifierCros() { |
| + chromeos::NetworkLibrary* lib = |
| + chromeos::CrosLibrary::Get()->GetNetworkLibrary(); |
| + lib->RemoveNetworkManagerObserver(this); |
| +} |
| + |
| +void NetworkChangeNotifierCros::OnNetworkManagerChanged( |
| + chromeos::NetworkLibrary* cros) { |
| + UpdateNetworkState(cros); |
| +} |
| + |
| +bool NetworkChangeNotifierCros::IsCurrentlyOffline() const { |
| + return connectivity_state_ != chromeos::CONN_STATE_UNRESTRICTED; |
| +} |
| + |
| +void NetworkChangeNotifierCros::UpdateNetworkState( |
| + chromeos::NetworkLibrary* lib) { |
| + const chromeos::Network* network = lib->active_network(); |
| + // Check if the active network, its IP address or its connectivity status had |
| + // changed. |
| + if ((network && !has_active_network_) || (!network && has_active_network_) || |
| + (network && (network->service_path() != service_path_ || |
| + network->connectivity_state() != connectivity_state_)) || |
| + lib->IPAddress() != ip_address_) { |
|
oshima
2011/05/17 17:33:05
since the condition is a bit complicated, we need
oshima
2011/05/18 01:28:45
The code looks correct, but I'm still concerned ab
|
| + if (network) { |
| + has_active_network_ = true; |
| + service_path_ = network->service_path(); |
| + } else { |
| + has_active_network_ = false; |
| + service_path_.clear(); |
| + } |
| + ip_address_ = lib->IPAddress(); |
|
Sam Leffler
2011/05/17 02:34:28
I'm not familiar with this stuff but how do these
zel
2011/05/18 00:43:33
Yes, on ChromeOS side this notification should be
|
| + NotifyObserversOfIPAddressChange(); |
| + } |
| + if ((network && network->connectivity_state() != connectivity_state_) && |
|
Sam Leffler
2011/05/17 02:34:28
Again, not familiar with semantics here, but flimf
oshima
2011/05/17 17:33:05
If network can be null, don't we have to notify of
zel
2011/05/18 00:43:33
This part is rewritten now. Please take a look at
|
| + lib->Connected() != connected_) { |
| + connectivity_state_ = network->connectivity_state(); |
| + connected_ = lib->Connected(); |
| + NotifyObserversOfOnlineStateChange(); |
|
oshima
2011/05/17 17:33:05
I believe NetworkChangeNotifier clients expect to
zel
2011/05/18 00:43:33
Done.
|
| + } |
| +} |
| + |
| +} // namespace net |
| Property changes on: chrome/browser/chromeos/net/network_change_notifier_chromeos.cc |
| ___________________________________________________________________ |
| Added: svn:eol-style |
| + LF |