Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / net / crl_set_fetcher.h
1 // Copyright (c) 2012 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 CHROME_BROWSER_NET_CRL_SET_FETCHER_H_
6 #define CHROME_BROWSER_NET_CRL_SET_FETCHER_H_
7
8 #include <string>
9
10 #include "base/compiler_specific.h"
11 #include "base/files/file_path.h"
12 #include "base/memory/ref_counted.h"
13 #include "chrome/browser/component_updater/component_updater_service.h"
14
15 namespace base {
16 class DictionaryValue;
17 class FilePath;
18 }
19
20 namespace net {
21 class CRLSet;
22 }
23
24 class CRLSetFetcher : public component_updater::ComponentInstaller,
25                       public base::RefCountedThreadSafe<CRLSetFetcher> {
26  public:
27   CRLSetFetcher();
28
29   void StartInitialLoad(component_updater::ComponentUpdateService* cus,
30                         const base::FilePath& path);
31
32   // DeleteFromDisk asynchronously delete the CRLSet file.
33   void DeleteFromDisk(const base::FilePath& path);
34
35   // ComponentInstaller interface
36   virtual void OnUpdateError(int error) OVERRIDE;
37   virtual bool Install(const base::DictionaryValue& manifest,
38                        const base::FilePath& unpack_path) OVERRIDE;
39   virtual bool GetInstalledFile(const std::string& file,
40                                 base::FilePath* installed_file) OVERRIDE;
41
42  private:
43   friend class base::RefCountedThreadSafe<CRLSetFetcher>;
44
45   virtual ~CRLSetFetcher();
46
47   // GetCRLSetbase::FilePath gets the path of the CRL set file in the user data
48   // dir.
49   base::FilePath GetCRLSetFilePath() const;
50
51   // Sets the path of the CRL set file in the user data dir.
52   void SetCRLSetFilePath(const base::FilePath& path);
53
54   // DoInitialLoadFromDisk runs on the FILE thread and attempts to load a CRL
55   // set from the user-data dir. It then registers this object as a component
56   // in order to get updates.
57   void DoInitialLoadFromDisk();
58
59   // LoadFromDisk runs on the FILE thread and attempts to load a CRL set
60   // from |load_from|.
61   void LoadFromDisk(base::FilePath load_from,
62                     scoped_refptr<net::CRLSet>* out_crl_set);
63
64   // SetCRLSetIfNewer runs on the IO thread and installs a CRL set
65   // as the global CRL set if it's newer than the existing one.
66   void SetCRLSetIfNewer(scoped_refptr<net::CRLSet> crl_set);
67
68   // RegisterComponent registers this object as a component updater.
69   void RegisterComponent(uint32 sequence_of_loaded_crl);
70
71   // DoDeleteFromDisk runs on the FILE thread and removes the CRLSet file from
72   // the disk.
73   void DoDeleteFromDisk();
74
75   component_updater::ComponentUpdateService* cus_;
76
77   // Path where the CRL file is stored.
78   base::FilePath crl_path_;
79
80   // We keep a pointer to the current CRLSet for use on the FILE thread when
81   // applying delta updates.
82   scoped_refptr<net::CRLSet> crl_set_;
83
84   DISALLOW_COPY_AND_ASSIGN(CRLSetFetcher);
85 };
86
87 #endif  // CHROME_BROWSER_NET_CRL_SET_FETCHER_H_