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

Unified Diff: chromeos/network/network_handler.cc

Issue 14729017: Add NetworkHandler to own network handlers in src/chromeos/network (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 7 years, 7 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: chromeos/network/network_handler.cc
diff --git a/chromeos/network/network_handler.cc b/chromeos/network/network_handler.cc
new file mode 100644
index 0000000000000000000000000000000000000000..3f88031688f13dc670e4ea61c2743749d4e2400e
--- /dev/null
+++ b/chromeos/network/network_handler.cc
@@ -0,0 +1,185 @@
+// Copyright (c) 2013 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chromeos/network/network_handler.h"
+
+#include "chromeos/dbus/dbus_thread_manager.h"
+#include "chromeos/login/login_state.h"
+#include "chromeos/network/cert_loader.h"
+#include "chromeos/network/geolocation_handler.h"
+#include "chromeos/network/managed_network_configuration_handler.h"
+#include "chromeos/network/network_configuration_handler.h"
+#include "chromeos/network/network_event_log.h"
+#include "chromeos/network/network_profile_handler.h"
+#include "chromeos/network/network_profile_observer.h"
+#include "chromeos/network/network_state_handler.h"
+#include "chromeos/network/network_state_handler_observer.h"
+
+namespace chromeos {
+
+static NetworkHandler* g_network_handler = NULL;
+
+class NetworkHandler::LoginStateInitializer {
+ public:
+ LoginStateInitializer() {
+ LoginState::Initialize();
+ }
+ ~LoginStateInitializer() {
+ LoginState::Shutdown();
+ }
+};
+
+NetworkHandler::NetworkHandler()
+ : test_cert_loader_(NULL),
+ test_network_state_handler_(NULL),
+ test_network_profile_handler_(NULL),
+ test_network_configuration_handler_(NULL),
+ test_managed_network_configuration_handler_(NULL),
+ test_geolocation_handler_(NULL) {
+ CHECK(DBusThreadManager::IsInitialized());
+
+ if (!LoginState::IsInitialized())
+ login_state_initializer_.reset(new LoginStateInitializer());
+
+ network_event_log::Initialize();
+
+ cert_loader_.reset(new CertLoader);
pneubeck (no reviews) 2013/05/13 09:17:06 I'd suggest to use explicit passing of the mutual
stevenjb 2013/05/13 23:49:35 See meta comment
+ network_state_handler_.reset(new NetworkStateHandler());
+ network_profile_handler_.reset(new NetworkProfileHandler());
+ network_configuration_handler_.reset(new NetworkConfigurationHandler());
+ managed_network_configuration_handler_.reset(
+ new ManagedNetworkConfigurationHandler());
+ geolocation_handler_.reset(new GeolocationHandler());
+}
+
+NetworkHandler::~NetworkHandler() {
+ network_event_log::Shutdown();
+}
+
+void NetworkHandler::Init() {
+ network_state_handler_->InitShillPropertyHandler();
+ managed_network_configuration_handler_->Init();
+ geolocation_handler_->Init();
+}
+
+// static
+void NetworkHandler::Initialize() {
+ CHECK(!g_network_handler);
+ g_network_handler = new NetworkHandler();
+ g_network_handler->Init();
+}
+
+// static
+void NetworkHandler::Shutdown() {
+ CHECK(g_network_handler);
+ delete g_network_handler;
+ g_network_handler = NULL;
+}
+
+// static
+NetworkHandler* NetworkHandler::Get() {
+ CHECK(g_network_handler)
+ << "NetworkHandler::Get() called before Initialize()";
+ return g_network_handler;
+}
+
+// static
+bool NetworkHandler::IsInitialized() {
+ return g_network_handler;
+}
+
+CertLoader* NetworkHandler::cert_loader() {
+ if (test_cert_loader_)
+ return test_cert_loader_;
+ return cert_loader_.get();
+}
+
+NetworkStateHandler* NetworkHandler::network_state_handler() {
+ if (test_network_state_handler_)
+ return test_network_state_handler_;
+ return network_state_handler_.get();
+}
+
+NetworkProfileHandler* NetworkHandler::network_profile_handler() {
+ if (test_network_profile_handler_)
+ return test_network_profile_handler_;
+ return network_profile_handler_.get();
+}
+
+NetworkConfigurationHandler* NetworkHandler::network_configuration_handler() {
+ if (test_network_configuration_handler_)
+ return test_network_configuration_handler_;
+ return network_configuration_handler_.get();
+}
+
+ManagedNetworkConfigurationHandler*
+NetworkHandler::managed_network_configuration_handler() {
+ if (test_managed_network_configuration_handler_)
+ return test_managed_network_configuration_handler_;
+ return managed_network_configuration_handler_.get();
+}
+
+GeolocationHandler* NetworkHandler::geolocation_handler() {
+ if (test_geolocation_handler_)
+ return test_geolocation_handler_;
+ return geolocation_handler_.get();
+}
+
+void NetworkHandler::SetCertLoaderForTest(CertLoader* cert_loader) {
+ test_cert_loader_ = cert_loader;
+ // Copy any existing observers to the test handler.
+ if (cert_loader_.get()) {
+ ObserverList<CertLoader::Observer>::Iterator iter(cert_loader_->observers_);
+ CertLoader::Observer* observer;
+ while ((observer = iter.GetNext()) != NULL) {
+ test_cert_loader_->AddObserver(observer);
pneubeck (no reviews) 2013/05/13 09:17:06 I think, in this state, the Set*ForTest methods wi
stevenjb 2013/05/13 23:49:35 If we exclusively use global accessors, then only
+ }
+ }
+}
+
+void NetworkHandler::SetNetworkStateHandlerForTest(
+ NetworkStateHandler* network_state_handler) {
+ test_network_state_handler_ = network_state_handler;
+ // Copy any existing observers to the test handler.
+ if (network_state_handler_.get()) {
+ ObserverList<NetworkStateHandlerObserver>::Iterator iter(
+ network_state_handler_->observers_);
+ NetworkStateHandlerObserver* observer;
+ while ((observer = iter.GetNext()) != NULL) {
+ test_network_state_handler_->AddObserver(observer);
+ }
+ }
+}
+
+void NetworkHandler::SetNetworkProfileHandlerForTest(
+ NetworkProfileHandler* network_profile_handler) {
+ test_network_profile_handler_ = network_profile_handler;
+ // Copy any existing observers to the test handler.
+ if (network_profile_handler_.get()) {
+ ObserverList<NetworkProfileObserver>::Iterator iter(
+ network_profile_handler_->observers_);
+ NetworkProfileObserver* observer;
+ while ((observer = iter.GetNext()) != NULL) {
+ test_network_profile_handler_->AddObserver(observer);
+ }
+ }
+}
+
+void NetworkHandler::SetNetworkConfigurationHandlerForTest(
+ NetworkConfigurationHandler* network_configuration_handler) {
+ test_network_configuration_handler_ = network_configuration_handler;
+}
+
+void NetworkHandler::SetManagedNetworkConfigurationHandlerForTest(
+ ManagedNetworkConfigurationHandler* managed_network_configuration_handler) {
+ test_managed_network_configuration_handler_ =
+ managed_network_configuration_handler;
+}
+
+void NetworkHandler::SetGeolocationHandlerForTest(
+ GeolocationHandler* geolocation_handler) {
+ test_geolocation_handler_ = geolocation_handler;
+}
+
+} // namespace chromeos

Powered by Google App Engine
This is Rietveld 408576698