network_handler.cc revision 7d4cd473f85ac64c3747c96c277f9e506a0d2246
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chromeos/network/network_handler.h"
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chromeos/dbus/dbus_thread_manager.h"
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chromeos/network/cert_loader.h"
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chromeos/network/geolocation_handler.h"
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chromeos/network/managed_network_configuration_handler.h"
115e3f23d412006dc4db4e659864679f29341e113fTorne (Richard Coles)#include "chromeos/network/network_configuration_handler.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chromeos/network/network_connection_handler.h"
132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chromeos/network/network_event_log.h"
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chromeos/network/network_profile_handler.h"
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chromeos/network/network_profile_observer.h"
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chromeos/network/network_state_handler.h"
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chromeos/network/network_state_handler_observer.h"
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace chromeos {
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static NetworkHandler* g_network_handler = NULL;
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NetworkHandler::NetworkHandler() {
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CHECK(DBusThreadManager::IsInitialized());
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  network_event_log::Initialize();
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  cert_loader_.reset(new CertLoader);
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  network_state_handler_.reset(new NetworkStateHandler());
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  network_profile_handler_.reset(new NetworkProfileHandler());
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  network_configuration_handler_.reset(new NetworkConfigurationHandler());
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  managed_network_configuration_handler_.reset(
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      new ManagedNetworkConfigurationHandler());
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  network_connection_handler_.reset(new NetworkConnectionHandler());
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  geolocation_handler_.reset(new GeolocationHandler());
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NetworkHandler::~NetworkHandler() {
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  network_event_log::Shutdown();
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
4190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void NetworkHandler::Init() {
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  cert_loader_->Init();
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  network_state_handler_->InitShillPropertyHandler();
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  network_configuration_handler_->Init(network_state_handler_.get());
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  managed_network_configuration_handler_->Init(
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      network_state_handler_.get(),
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      network_profile_handler_.get(),
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      network_configuration_handler_.get());
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  network_connection_handler_->Init(cert_loader_.get(),
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                    network_state_handler_.get(),
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                    network_configuration_handler_.get());
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  geolocation_handler_->Init();
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// static
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void NetworkHandler::Initialize() {
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CHECK(!g_network_handler);
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  g_network_handler = new NetworkHandler();
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  g_network_handler->Init();
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// static
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void NetworkHandler::Shutdown() {
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CHECK(g_network_handler);
66a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  delete g_network_handler;
67a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  g_network_handler = NULL;
68a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)}
69a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
70a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// static
71a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)NetworkHandler* NetworkHandler::Get() {
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CHECK(g_network_handler)
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      << "NetworkHandler::Get() called before Initialize()";
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return g_network_handler;
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// static
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool NetworkHandler::IsInitialized() {
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return g_network_handler;
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)CertLoader* NetworkHandler::cert_loader() {
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return cert_loader_.get();
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NetworkStateHandler* NetworkHandler::network_state_handler() {
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return network_state_handler_.get();
882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)NetworkProfileHandler* NetworkHandler::network_profile_handler() {
912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return network_profile_handler_.get();
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NetworkConfigurationHandler* NetworkHandler::network_configuration_handler() {
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return network_configuration_handler_.get();
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ManagedNetworkConfigurationHandler*
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NetworkHandler::managed_network_configuration_handler() {
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return managed_network_configuration_handler_.get();
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NetworkConnectionHandler* NetworkHandler::network_connection_handler() {
1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return network_connection_handler_.get();
1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)GeolocationHandler* NetworkHandler::geolocation_handler() {
1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return geolocation_handler_.get();
1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace chromeos
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)