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.
5 #ifndef CHROME_BROWSER_NET_CRL_SET_FETCHER_H_
6 #define CHROME_BROWSER_NET_CRL_SET_FETCHER_H_
10 #include "base/compiler_specific.h"
11 #include "base/files/file_path.h"
12 #include "base/memory/ref_counted.h"
13 #include "components/component_updater/component_updater_service.h"
16 class DictionaryValue
;
24 class CRLSetFetcher
: public component_updater::ComponentInstaller
,
25 public base::RefCountedThreadSafe
<CRLSetFetcher
> {
29 void StartInitialLoad(component_updater::ComponentUpdateService
* cus
,
30 const base::FilePath
& path
);
32 // DeleteFromDisk asynchronously delete the CRLSet file.
33 void DeleteFromDisk(const base::FilePath
& path
);
35 // ComponentInstaller interface
36 void OnUpdateError(int error
) override
;
37 bool Install(const base::DictionaryValue
& manifest
,
38 const base::FilePath
& unpack_path
) override
;
39 bool GetInstalledFile(const std::string
& file
,
40 base::FilePath
* installed_file
) override
;
43 friend class base::RefCountedThreadSafe
<CRLSetFetcher
>;
45 ~CRLSetFetcher() override
;
47 // GetCRLSetbase::FilePath gets the path of the CRL set file in the user data
49 base::FilePath
GetCRLSetFilePath() const;
51 // Sets the path of the CRL set file in the user data dir.
52 void SetCRLSetFilePath(const base::FilePath
& path
);
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();
59 // LoadFromDisk runs on the FILE thread and attempts to load a CRL set
61 void LoadFromDisk(base::FilePath load_from
,
62 scoped_refptr
<net::CRLSet
>* out_crl_set
);
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
);
68 // RegisterComponent registers this object as a component updater.
69 void RegisterComponent(uint32 sequence_of_loaded_crl
);
71 // DoDeleteFromDisk runs on the FILE thread and removes the CRLSet file from
73 void DoDeleteFromDisk();
75 component_updater::ComponentUpdateService
* cus_
;
77 // Path where the CRL file is stored.
78 base::FilePath crl_path_
;
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_
;
84 DISALLOW_COPY_AND_ASSIGN(CRLSetFetcher
);
87 #endif // CHROME_BROWSER_NET_CRL_SET_FETCHER_H_