Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4475)

Unified Diff: chrome/browser/chromeos/net/connectivity_state_helper.cc

Issue 12729002: Add a unified observer to replace NetworkManagerObserver (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix mobile_activator_unittest Created 7 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698