Chromium Code Reviews| Index: chrome/browser/chromeos/net/connectivity_state_helper.cc |
| diff --git a/chrome/browser/chromeos/net/connectivity_state_helper.cc b/chrome/browser/chromeos/net/connectivity_state_helper.cc |
| index 515e985885ff12d64de8846e20df2bbd00410b5a..223c9f5d47c4b60c2441f4f49188119a3c6407a3 100644 |
| --- a/chrome/browser/chromeos/net/connectivity_state_helper.cc |
| +++ b/chrome/browser/chromeos/net/connectivity_state_helper.cc |
| @@ -10,6 +10,7 @@ |
| #include "chromeos/chromeos_switches.h" |
| #include "chromeos/network/network_state.h" |
| #include "chromeos/network/network_state_handler.h" |
| +#include "chromeos/network/network_state_handler_observer.h" |
| #include "third_party/cros_system_api/dbus/service_constants.h" |
| namespace chromeos { |
| @@ -19,11 +20,13 @@ static ConnectivityStateHelper* g_connectivity_state_helper = NULL; |
| // Implementation of the connectivity state helper that uses the network |
| // state handler for fetching connectivity state. |
| class ConnectivityStateHelperImpl |
| - : public ConnectivityStateHelper { |
| + : public ConnectivityStateHelper, |
| + public NetworkStateHandlerObserver { |
| public: |
| ConnectivityStateHelperImpl(); |
| virtual ~ConnectivityStateHelperImpl(); |
| + // NetworkStateHandler overrides. |
| virtual bool IsConnected() OVERRIDE; |
| virtual bool IsConnectedType(const std::string& type) OVERRIDE; |
| virtual bool IsConnectingType(const std::string& type) OVERRIDE; |
| @@ -31,6 +34,9 @@ class ConnectivityStateHelperImpl |
| virtual std::string DefaultNetworkName() OVERRIDE; |
| virtual bool DefaultNetworkOnline() OVERRIDE; |
| + // NetworkStateHandlerObserver overrides. |
| + virtual void NetworkManagerChanged() OVERRIDE; |
| + |
| private: |
| NetworkStateHandler* network_state_handler_; |
| }; |
| @@ -38,11 +44,13 @@ class ConnectivityStateHelperImpl |
| // Implementation of the connectivity state helper that uses the network |
| // library for fetching connectivity state. |
| class ConnectivityStateHelperNetworkLibrary |
| - : public ConnectivityStateHelper { |
| + : public ConnectivityStateHelper, |
| + public NetworkLibrary::NetworkManagerObserver { |
| public: |
| ConnectivityStateHelperNetworkLibrary(); |
| virtual ~ConnectivityStateHelperNetworkLibrary(); |
| + // ConnectivityStateHelper overrides. |
| virtual bool IsConnected() OVERRIDE; |
| virtual bool IsConnectedType(const std::string& type) OVERRIDE; |
| virtual bool IsConnectingType(const std::string& type) OVERRIDE; |
| @@ -50,6 +58,9 @@ class ConnectivityStateHelperNetworkLibrary |
| virtual std::string DefaultNetworkName() OVERRIDE; |
| virtual bool DefaultNetworkOnline() OVERRIDE; |
| + // NetworkLibrary::NetworkManagerObserver overrides. |
| + virtual void OnNetworkManagerChanged(NetworkLibrary* network_library); |
| + |
| private: |
| NetworkLibrary* network_library_; |
| }; |
| @@ -88,11 +99,24 @@ ConnectivityStateHelper* ConnectivityStateHelper::Get() { |
| return g_connectivity_state_helper; |
| } |
| +void ConnectivityStateHelper::AddNetworkManagerObserver( |
| + ConnectivityStateHelperObserver* observer) { |
| + network_manager_observers_.AddObserver(observer); |
| +} |
| + |
| +void ConnectivityStateHelper::RemoveNetworkManagerObserver( |
| + ConnectivityStateHelperObserver* observer) { |
| + network_manager_observers_.RemoveObserver(observer); |
| +} |
| + |
| ConnectivityStateHelperImpl::ConnectivityStateHelperImpl() { |
| network_state_handler_ = NetworkStateHandler::Get(); |
| + network_state_handler_->AddObserver(this); |
| } |
| -ConnectivityStateHelperImpl::~ConnectivityStateHelperImpl() {} |
| +ConnectivityStateHelperImpl::~ConnectivityStateHelperImpl() { |
| + network_state_handler_->RemoveObserver(this); |
|
stevenjb
2013/03/11 23:11:05
nit: Use NetworkStateHandler::Get() here; if we ac
gauravsh
2013/03/12 00:30:25
Good point. Done.
|
| +} |
| bool ConnectivityStateHelperImpl::IsConnected() { |
| return network_state_handler_->ConnectedNetworkByType( |
| @@ -135,16 +159,24 @@ bool ConnectivityStateHelperImpl::DefaultNetworkOnline() { |
| return true; |
| } |
| +void ConnectivityStateHelperImpl::NetworkManagerChanged() { |
| + FOR_EACH_OBSERVER(ConnectivityStateHelperObserver, network_manager_observers_, |
| + NetworkManagerChanged()); |
| +} |
| + |
| //////////////////////////////////////////////////////////////////////////////// |
| // NetworkLibrary implementation. |
| // |
| ConnectivityStateHelperNetworkLibrary::ConnectivityStateHelperNetworkLibrary() { |
| network_library_ = CrosLibrary::Get()->GetNetworkLibrary(); |
| + network_library_->AddNetworkManagerObserver(this); |
| } |
| ConnectivityStateHelperNetworkLibrary::~ConnectivityStateHelperNetworkLibrary() |
| -{} |
| +{ |
| + network_library_->RemoveNetworkManagerObserver(this); |
| +} |
| bool ConnectivityStateHelperNetworkLibrary::IsConnected() { |
| return network_library_->Connected(); |
| @@ -206,4 +238,10 @@ bool ConnectivityStateHelperNetworkLibrary::DefaultNetworkOnline() { |
| return true; |
| } |
| +void ConnectivityStateHelperNetworkLibrary::OnNetworkManagerChanged( |
| + NetworkLibrary* network_library) { |
| + FOR_EACH_OBSERVER(ConnectivityStateHelperObserver, network_manager_observers_, |
| + NetworkManagerChanged()); |
| +} |
| + |
| } // namespace chromeos |