190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// found in the LICENSE file. 490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "chromeos/network/network_handler.h" 690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 73240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch#include "base/threading/worker_pool.h" 890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "chromeos/dbus/dbus_thread_manager.h" 93551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "chromeos/network/client_cert_resolver.h" 1090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "chromeos/network/geolocation_handler.h" 113551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "chromeos/network/managed_network_configuration_handler_impl.h" 12424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)#include "chromeos/network/network_activation_handler.h" 133240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch#include "chromeos/network/network_cert_migrator.h" 1490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "chromeos/network/network_configuration_handler.h" 1590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "chromeos/network/network_connection_handler.h" 167dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "chromeos/network/network_device_handler.h" 1790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "chromeos/network/network_event_log.h" 1890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "chromeos/network/network_profile_handler.h" 1990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "chromeos/network/network_profile_observer.h" 202385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch#include "chromeos/network/network_sms_handler.h" 2190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "chromeos/network/network_state_handler.h" 2290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "chromeos/network/network_state_handler_observer.h" 2390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 2490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)namespace chromeos { 2590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 2690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)static NetworkHandler* g_network_handler = NULL; 2790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 283551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)NetworkHandler::NetworkHandler() 293551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) : message_loop_(base::MessageLoopProxy::current()) { 3090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) CHECK(DBusThreadManager::IsInitialized()); 3190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 3290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) network_event_log::Initialize(); 3390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 3490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) network_state_handler_.reset(new NetworkStateHandler()); 357dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch network_device_handler_.reset(new NetworkDeviceHandler()); 3690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) network_profile_handler_.reset(new NetworkProfileHandler()); 3790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) network_configuration_handler_.reset(new NetworkConfigurationHandler()); 3890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) managed_network_configuration_handler_.reset( 393551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) new ManagedNetworkConfigurationHandlerImpl()); 403551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) if (CertLoader::IsInitialized()) { 413551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) network_cert_migrator_.reset(new NetworkCertMigrator()); 423551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) client_cert_resolver_.reset(new ClientCertResolver()); 433551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) } 44424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) network_activation_handler_.reset(new NetworkActivationHandler()); 4590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) network_connection_handler_.reset(new NetworkConnectionHandler()); 462385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch network_sms_handler_.reset(new NetworkSmsHandler()); 4790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) geolocation_handler_.reset(new GeolocationHandler()); 4890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} 4990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 5090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)NetworkHandler::~NetworkHandler() { 5190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) network_event_log::Shutdown(); 5290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} 5390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 5490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)void NetworkHandler::Init() { 5590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) network_state_handler_->InitShillPropertyHandler(); 56eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch network_profile_handler_->Init(network_state_handler_.get()); 5790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) network_configuration_handler_->Init(network_state_handler_.get()); 5890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) managed_network_configuration_handler_->Init( 5990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) network_state_handler_.get(), 6090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) network_profile_handler_.get(), 6190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) network_configuration_handler_.get()); 62558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch network_connection_handler_->Init(network_state_handler_.get(), 6390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) network_configuration_handler_.get()); 643551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) if (network_cert_migrator_) 653551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) network_cert_migrator_->Init(network_state_handler_.get()); 663551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) if (client_cert_resolver_) { 673551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) client_cert_resolver_->Init(network_state_handler_.get(), 683551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) managed_network_configuration_handler_.get()); 693551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) } 702385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch network_sms_handler_->Init(); 7190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) geolocation_handler_->Init(); 7290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} 7390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 7490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// static 7590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)void NetworkHandler::Initialize() { 7690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) CHECK(!g_network_handler); 7790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) g_network_handler = new NetworkHandler(); 7890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) g_network_handler->Init(); 7990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} 8090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 8190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// static 8290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)void NetworkHandler::Shutdown() { 8390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) CHECK(g_network_handler); 8490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) delete g_network_handler; 8590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) g_network_handler = NULL; 8690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} 8790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 8890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// static 8990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)NetworkHandler* NetworkHandler::Get() { 9090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) CHECK(g_network_handler) 9190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) << "NetworkHandler::Get() called before Initialize()"; 9290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) return g_network_handler; 9390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} 9490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 9590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// static 9690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)bool NetworkHandler::IsInitialized() { 9790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) return g_network_handler; 9890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} 9990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 10090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)NetworkStateHandler* NetworkHandler::network_state_handler() { 10190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) return network_state_handler_.get(); 10290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} 10390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 1047dbb3d5cf0c15f500944d211057644d6a2f37371Ben MurdochNetworkDeviceHandler* NetworkHandler::network_device_handler() { 1057dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch return network_device_handler_.get(); 1067dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch} 1077dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 10890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)NetworkProfileHandler* NetworkHandler::network_profile_handler() { 10990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) return network_profile_handler_.get(); 11090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} 11190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 11290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)NetworkConfigurationHandler* NetworkHandler::network_configuration_handler() { 11390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) return network_configuration_handler_.get(); 11490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} 11590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 11690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)ManagedNetworkConfigurationHandler* 11790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)NetworkHandler::managed_network_configuration_handler() { 11890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) return managed_network_configuration_handler_.get(); 11990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} 12090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 121424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)NetworkActivationHandler* NetworkHandler::network_activation_handler() { 122424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) return network_activation_handler_.get(); 123424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)} 124424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 12590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)NetworkConnectionHandler* NetworkHandler::network_connection_handler() { 12690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) return network_connection_handler_.get(); 12790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} 12890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 1292385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen MurdochNetworkSmsHandler* NetworkHandler::network_sms_handler() { 1302385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch return network_sms_handler_.get(); 1312385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch} 1322385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 13390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)GeolocationHandler* NetworkHandler::geolocation_handler() { 13490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) return geolocation_handler_.get(); 13590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} 13690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 13790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} // namespace chromeos 138