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_CERT_MIGRATOR_H_
6#define CHROMEOS_NETWORK_NETWORK_CERT_MIGRATOR_H_
7
8#include "base/basictypes.h"
9#include "base/memory/weak_ptr.h"
10#include "chromeos/cert_loader.h"
11#include "chromeos/chromeos_export.h"
12#include "chromeos/network/network_state_handler_observer.h"
13
14namespace chromeos {
15
16class NetworkStateHandler;
17
18// Migrates network configurations from deprecated CaCertNSS properties to
19// CaCertPEM and incorrect or missing slot IDs of client certificates.
20class CHROMEOS_EXPORT NetworkCertMigrator : public NetworkStateHandlerObserver,
21                                            public CertLoader::Observer {
22 public:
23  virtual ~NetworkCertMigrator();
24
25 private:
26  friend class NetworkHandler;
27  friend class NetworkCertMigratorTest;
28  class MigrationTask;
29
30  NetworkCertMigrator();
31  void Init(NetworkStateHandler* network_state_handler);
32
33   // NetworkStateHandlerObserver overrides
34  virtual void NetworkListChanged() OVERRIDE;
35
36  // CertLoader::Observer overrides
37  virtual void OnCertificatesLoaded(const net::CertificateList& cert_list,
38                                    bool initial_load) OVERRIDE;
39
40  // Unowned associated NetworkStateHandler* (global or test instance).
41  NetworkStateHandler* network_state_handler_;
42
43  base::WeakPtrFactory<NetworkCertMigrator> weak_ptr_factory_;
44
45  DISALLOW_COPY_AND_ASSIGN(NetworkCertMigrator);
46};
47
48}  // namespace chromeos
49
50#endif  // CHROMEOS_NETWORK_NETWORK_CERT_MIGRATOR_H_
51