network_handler.cc revision 558790d6acca3451cf3a6b497803a5f07d0bec58
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/geolocation_handler.h"
9#include "chromeos/network/managed_network_configuration_handler.h"
10#include "chromeos/network/network_configuration_handler.h"
11#include "chromeos/network/network_connection_handler.h"
12#include "chromeos/network/network_device_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  network_state_handler_.reset(new NetworkStateHandler());
29  network_device_handler_.reset(new NetworkDeviceHandler());
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(network_state_handler_.get(),
51                                    network_configuration_handler_.get());
52  geolocation_handler_->Init();
53}
54
55// static
56void NetworkHandler::Initialize() {
57  CHECK(!g_network_handler);
58  g_network_handler = new NetworkHandler();
59  g_network_handler->Init();
60}
61
62// static
63void NetworkHandler::Shutdown() {
64  CHECK(g_network_handler);
65  delete g_network_handler;
66  g_network_handler = NULL;
67}
68
69// static
70NetworkHandler* NetworkHandler::Get() {
71  CHECK(g_network_handler)
72      << "NetworkHandler::Get() called before Initialize()";
73  return g_network_handler;
74}
75
76// static
77bool NetworkHandler::IsInitialized() {
78  return g_network_handler;
79}
80
81NetworkStateHandler* NetworkHandler::network_state_handler() {
82  return network_state_handler_.get();
83}
84
85NetworkDeviceHandler* NetworkHandler::network_device_handler() {
86  return network_device_handler_.get();
87}
88
89NetworkProfileHandler* NetworkHandler::network_profile_handler() {
90  return network_profile_handler_.get();
91}
92
93NetworkConfigurationHandler* NetworkHandler::network_configuration_handler() {
94  return network_configuration_handler_.get();
95}
96
97ManagedNetworkConfigurationHandler*
98NetworkHandler::managed_network_configuration_handler() {
99  return managed_network_configuration_handler_.get();
100}
101
102NetworkConnectionHandler* NetworkHandler::network_connection_handler() {
103  return network_connection_handler_.get();
104}
105
106GeolocationHandler* NetworkHandler::geolocation_handler() {
107  return geolocation_handler_.get();
108}
109
110}  // namespace chromeos
111