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 "base/threading/worker_pool.h" 8 #include "chromeos/dbus/dbus_thread_manager.h" 9 #include "chromeos/network/geolocation_handler.h" 10 #include "chromeos/network/managed_network_configuration_handler.h" 11 #include "chromeos/network/network_cert_migrator.h" 12 #include "chromeos/network/network_configuration_handler.h" 13 #include "chromeos/network/network_connection_handler.h" 14 #include "chromeos/network/network_device_handler.h" 15 #include "chromeos/network/network_event_log.h" 16 #include "chromeos/network/network_profile_handler.h" 17 #include "chromeos/network/network_profile_observer.h" 18 #include "chromeos/network/network_sms_handler.h" 19 #include "chromeos/network/network_state_handler.h" 20 #include "chromeos/network/network_state_handler_observer.h" 21 22 namespace chromeos { 23 24 static NetworkHandler* g_network_handler = NULL; 25 26 NetworkHandler::NetworkHandler() 27 : message_loop_(base::MessageLoopProxy::current()) { 28 CHECK(DBusThreadManager::IsInitialized()); 29 30 network_event_log::Initialize(); 31 32 network_state_handler_.reset(new NetworkStateHandler()); 33 network_device_handler_.reset(new NetworkDeviceHandler()); 34 network_profile_handler_.reset(new NetworkProfileHandler()); 35 if (CertLoader::IsInitialized()) 36 network_cert_migrator_.reset(new NetworkCertMigrator()); 37 network_configuration_handler_.reset(new NetworkConfigurationHandler()); 38 managed_network_configuration_handler_.reset( 39 new ManagedNetworkConfigurationHandler()); 40 network_connection_handler_.reset(new NetworkConnectionHandler()); 41 network_sms_handler_.reset(new NetworkSmsHandler()); 42 geolocation_handler_.reset(new GeolocationHandler()); 43 } 44 45 NetworkHandler::~NetworkHandler() { 46 network_event_log::Shutdown(); 47 } 48 49 void NetworkHandler::Init() { 50 network_state_handler_->InitShillPropertyHandler(); 51 network_profile_handler_->Init(network_state_handler_.get()); 52 if (network_cert_migrator_) 53 network_cert_migrator_->Init(network_state_handler_.get()); 54 network_configuration_handler_->Init(network_state_handler_.get()); 55 managed_network_configuration_handler_->Init( 56 network_state_handler_.get(), 57 network_profile_handler_.get(), 58 network_configuration_handler_.get()); 59 network_connection_handler_->Init(network_state_handler_.get(), 60 network_configuration_handler_.get()); 61 network_sms_handler_->Init(); 62 geolocation_handler_->Init(); 63 } 64 65 // static 66 void NetworkHandler::Initialize() { 67 CHECK(!g_network_handler); 68 g_network_handler = new NetworkHandler(); 69 g_network_handler->Init(); 70 } 71 72 // static 73 void NetworkHandler::Shutdown() { 74 CHECK(g_network_handler); 75 delete g_network_handler; 76 g_network_handler = NULL; 77 } 78 79 // static 80 NetworkHandler* NetworkHandler::Get() { 81 CHECK(g_network_handler) 82 << "NetworkHandler::Get() called before Initialize()"; 83 return g_network_handler; 84 } 85 86 // static 87 bool NetworkHandler::IsInitialized() { 88 return g_network_handler; 89 } 90 91 NetworkStateHandler* NetworkHandler::network_state_handler() { 92 return network_state_handler_.get(); 93 } 94 95 NetworkDeviceHandler* NetworkHandler::network_device_handler() { 96 return network_device_handler_.get(); 97 } 98 99 NetworkProfileHandler* NetworkHandler::network_profile_handler() { 100 return network_profile_handler_.get(); 101 } 102 103 NetworkConfigurationHandler* NetworkHandler::network_configuration_handler() { 104 return network_configuration_handler_.get(); 105 } 106 107 ManagedNetworkConfigurationHandler* 108 NetworkHandler::managed_network_configuration_handler() { 109 return managed_network_configuration_handler_.get(); 110 } 111 112 NetworkConnectionHandler* NetworkHandler::network_connection_handler() { 113 return network_connection_handler_.get(); 114 } 115 116 NetworkSmsHandler* NetworkHandler::network_sms_handler() { 117 return network_sms_handler_.get(); 118 } 119 120 GeolocationHandler* NetworkHandler::geolocation_handler() { 121 return geolocation_handler_.get(); 122 } 123 124 } // namespace chromeos 125