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

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: . 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..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

Powered by Google App Engine
This is Rietveld 408576698