Home | History | Annotate | Download | only in network
      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