network_handler.cc revision eb525c5499e34cc9c4b825d6d9e75bb07cc06ace
1// Copyright 2013 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "chromeos/network/network_handler.h"
6
7#include "chromeos/dbus/dbus_thread_manager.h"
8#include "chromeos/network/cert_loader.h"
9#include "chromeos/network/geolocation_handler.h"
10#include "chromeos/network/managed_network_configuration_handler.h"
11#include "chromeos/network/network_configuration_handler.h"
12#include "chromeos/network/network_connection_handler.h"
13#include "chromeos/network/network_event_log.h"
14#include "chromeos/network/network_profile_handler.h"
15#include "chromeos/network/network_profile_observer.h"
16#include "chromeos/network/network_state_handler.h"
17#include "chromeos/network/network_state_handler_observer.h"
18
19namespace chromeos {
20
21static NetworkHandler* g_network_handler = NULL;
22
23NetworkHandler::NetworkHandler() {
24  CHECK(DBusThreadManager::IsInitialized());
25
26  network_event_log::Initialize();
27
28  cert_loader_.reset(new CertLoader);
29  network_state_handler_.reset(new NetworkStateHandler());
30  network_profile_handler_.reset(new NetworkProfileHandler());
31  network_configuration_handler_.reset(new NetworkConfigurationHandler());
32  managed_network_configuration_handler_.reset(
33      new ManagedNetworkConfigurationHandler());
34  network_connection_handler_.reset(new NetworkConnectionHandler());
35  geolocation_handler_.reset(new GeolocationHandler());
36}
37
38NetworkHandler::~NetworkHandler() {
39  network_event_log::Shutdown();
40}
41
42void NetworkHandler::Init() {
43  network_state_handler_->InitShillPropertyHandler();
44  network_profile_handler_->Init(network_state_handler_.get());
45  network_configuration_handler_->Init(network_state_handler_.get());
46  managed_network_configuration_handler_->Init(
47      network_state_handler_.get(),
48      network_profile_handler_.get(),
49      network_configuration_handler_.get());
50  network_connection_handler_->Init(cert_loader_.get(),
51                                    network_state_handler_.get(),
52                                    network_configuration_handler_.get());
53  geolocation_handler_->Init();
54}
55
56// static
57void NetworkHandler::Initialize() {
58  CHECK(!g_network_handler);
59  g_network_handler = new NetworkHandler();
60  g_network_handler->Init();
61}
62
63// static
64void NetworkHandler::Shutdown() {
65  CHECK(g_network_handler);
66  delete g_network_handler;
67  g_network_handler = NULL;
68}
69
70// static
71NetworkHandler* NetworkHandler::Get() {
72  CHECK(g_network_handler)
73      << "NetworkHandler::Get() called before Initialize()";
74  return g_network_handler;
75}
76
77// static
78bool NetworkHandler::IsInitialized() {
79  return g_network_handler;
80}
81
82CertLoader* NetworkHandler::cert_loader() {
83  return cert_loader_.get();
84}
85
86NetworkStateHandler* NetworkHandler::network_state_handler() {
87  return network_state_handler_.get();
88}
89
90NetworkProfileHandler* NetworkHandler::network_profile_handler() {
91  return network_profile_handler_.get();
92}
93
94NetworkConfigurationHandler* NetworkHandler::network_configuration_handler() {
95  return network_configuration_handler_.get();
96}
97
98ManagedNetworkConfigurationHandler*
99NetworkHandler::managed_network_configuration_handler() {
100  return managed_network_configuration_handler_.get();
101}
102
103NetworkConnectionHandler* NetworkHandler::network_connection_handler() {
104  return network_connection_handler_.get();
105}
106
107GeolocationHandler* NetworkHandler::geolocation_handler() {
108  return geolocation_handler_.get();
109}
110
111}  // namespace chromeos
112