network_handler.h revision 90dce4d38c5ff5333bea97d859d4e484e27edf0c
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#ifndef CHROMEOS_NETWORK_NETWORK_HANDLER_H_
6#define CHROMEOS_NETWORK_NETWORK_HANDLER_H_
7
8#include "base/basictypes.h"
9#include "base/memory/scoped_ptr.h"
10#include "chromeos/chromeos_export.h"
11
12namespace chromeos {
13
14class CertLoader;
15class GeolocationHandler;
16class ManagedNetworkConfigurationHandler;
17class NetworkConfigurationHandler;
18class NetworkConnectionHandler;
19class NetworkProfileHandler;
20class NetworkStateHandler;
21
22// Class for handling initialization and access to chromeos network handlers.
23// This class should NOT be used in unit tests. Instead, construct individual
24// classes independently.
25class CHROMEOS_EXPORT NetworkHandler {
26 public:
27  // Sets the global instance. Must be called before any calls to Get().
28  static void Initialize();
29
30  // Destroys the global instance.
31  static void Shutdown();
32
33  // Gets the global instance. Initialize() must be called first.
34  static NetworkHandler* Get();
35
36  // Returns true if the global instance has been initialized.
37  static bool IsInitialized();
38
39  // Do not use these accessors within this module; all dependencies should be
40  // explicit so that classes can be constructed explicitly in tests without
41  // NetworkHandler.
42  CertLoader* cert_loader();
43  NetworkStateHandler* network_state_handler();
44  NetworkProfileHandler* network_profile_handler();
45  NetworkConfigurationHandler* network_configuration_handler();
46  ManagedNetworkConfigurationHandler* managed_network_configuration_handler();
47  NetworkConnectionHandler* network_connection_handler();
48  GeolocationHandler* geolocation_handler();
49
50 private:
51  NetworkHandler();
52  virtual ~NetworkHandler();
53
54  void Init();
55
56  // The order of these determines the (inverse) destruction order.
57  scoped_ptr<CertLoader> cert_loader_;
58  scoped_ptr<NetworkStateHandler> network_state_handler_;
59  scoped_ptr<NetworkProfileHandler> network_profile_handler_;
60  scoped_ptr<NetworkConfigurationHandler> network_configuration_handler_;
61  scoped_ptr<ManagedNetworkConfigurationHandler>
62      managed_network_configuration_handler_;
63  scoped_ptr<NetworkConnectionHandler> network_connection_handler_;
64  scoped_ptr<GeolocationHandler> geolocation_handler_;
65
66  DISALLOW_COPY_AND_ASSIGN(NetworkHandler);
67};
68
69}  // namespace chromeos
70
71#endif  // CHROMEOS_NETWORK_NETWORK_HANDLER_H_
72