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..505ac7da47d8b808f600d059d9d4677f4be818d9 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,17 +20,23 @@ 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; |
| virtual std::string NetworkNameForType(const std::string& type) OVERRIDE; |
| virtual std::string DefaultNetworkName() OVERRIDE; |
| virtual bool DefaultNetworkOnline() OVERRIDE; |
| + virtual void RequestScan() const OVERRIDE; |
| + |
| + // NetworkStateHandlerObserver overrides. |
| + virtual void NetworkManagerChanged() OVERRIDE; |
| private: |
| NetworkStateHandler* network_state_handler_; |
| @@ -38,22 +45,32 @@ 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; |
| virtual std::string NetworkNameForType(const std::string& type) OVERRIDE; |
| virtual std::string DefaultNetworkName() OVERRIDE; |
| virtual bool DefaultNetworkOnline() OVERRIDE; |
| + virtual void RequestScan() const OVERRIDE; |
| + |
| + // NetworkLibrary::NetworkManagerObserver overrides. |
| + virtual void OnNetworkManagerChanged(NetworkLibrary* network_library); |
| private: |
| NetworkLibrary* network_library_; |
| }; |
| +ConnectivityStateHelper::ConnectivityStateHelper() {} |
|
stevenjb
2013/03/14 00:10:47
nit: } on separate line when not in the class decl
gauravsh
2013/03/14 01:06:11
Done.
|
| + |
| +ConnectivityStateHelper::~ConnectivityStateHelper() {} |
| + |
| // static |
| void ConnectivityStateHelper::Initialize() { |
| CHECK(!g_connectivity_state_helper); |
| @@ -75,6 +92,11 @@ void ConnectivityStateHelper::InitializeForTesting( |
| } |
| // static |
| +bool ConnectivityStateHelper::IsInitialized() { |
| + return g_connectivity_state_helper != NULL; |
| +} |
| + |
| +// static |
| void ConnectivityStateHelper::Shutdown() { |
| CHECK(g_connectivity_state_helper); |
| delete g_connectivity_state_helper; |
| @@ -88,11 +110,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() { |
| + NetworkStateHandler::Get()->RemoveObserver(this); |
| +} |
| bool ConnectivityStateHelperImpl::IsConnected() { |
| return network_state_handler_->ConnectedNetworkByType( |
| @@ -135,16 +170,28 @@ bool ConnectivityStateHelperImpl::DefaultNetworkOnline() { |
| return true; |
| } |
| +void ConnectivityStateHelperImpl::RequestScan() const { |
| + network_state_handler_->RequestScan(); |
| +} |
| + |
| +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 +253,14 @@ bool ConnectivityStateHelperNetworkLibrary::DefaultNetworkOnline() { |
| return true; |
| } |
| +void ConnectivityStateHelperNetworkLibrary::RequestScan() const { |
| + network_library_->RequestNetworkScan(); |
| +} |
| + |
| +void ConnectivityStateHelperNetworkLibrary::OnNetworkManagerChanged( |
| + NetworkLibrary* network_library) { |
| + FOR_EACH_OBSERVER(ConnectivityStateHelperObserver, network_manager_observers_, |
| + NetworkManagerChanged()); |
| +} |
| + |
| } // namespace chromeos |