| 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..0ded77b4aa2d28da0d729149dceaa38e31d0d9a3 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,34 @@ 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() {
|
| +}
|
| +
|
| +ConnectivityStateHelper::~ConnectivityStateHelper() {
|
| +}
|
| +
|
| // static
|
| void ConnectivityStateHelper::Initialize() {
|
| CHECK(!g_connectivity_state_helper);
|
| @@ -75,6 +94,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 +112,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 +172,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 +255,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
|
|
|