OLD | NEW |
---|---|
(Empty) | |
1 // Copyright 2014 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 "chrome/browser/chromeos/net/cert_profile_filter.h" | |
6 | |
7 #include "base/bind.h" | |
8 #include "components/cert_database/public/cert_database_service_io_part.h" | |
9 #include "net/cert/nss_cert_database.h" | |
10 #include "net/cert/nss_profile_filter_chromeos.h" | |
11 | |
12 namespace chromeos { | |
13 | |
14 namespace { | |
15 | |
16 class ProfileFilterFactory : public net::NSSProfileFilterChromeOSFactory { | |
17 public: | |
18 explicit ProfileFilterFactory( | |
19 const base::WeakPtr<cert_database::CertDatabaseServiceIOPart>& cert_db_io) | |
20 : cert_db_io_(cert_db_io) {} | |
21 | |
22 virtual scoped_ptr<net::NSSProfileFilterChromeOS> CreateFilter( | |
23 const base::Callback<void(const net::NSSProfileFilterChromeOS&)>& | |
24 callback) override { | |
25 if (!cert_db_io_) | |
26 return make_scoped_ptr(new net::NSSProfileFilterChromeOS); | |
27 | |
28 net::NSSCertDatabase* cert_db = cert_db_io_->GetNSSCertDatabase( | |
29 base::Bind(&DidGetNSSCertDatabase, callback)); | |
30 if (cert_db) | |
31 return CreateFilterInternal(cert_db); | |
32 return scoped_ptr<net::NSSProfileFilterChromeOS>(); | |
mattm
2014/10/18 00:45:15
return nullptr
pneubeck (no reviews)
2014/10/21 09:22:09
Done.
| |
33 } | |
34 | |
35 private: | |
36 static void DidGetNSSCertDatabase( | |
37 const base::Callback<void(const net::NSSProfileFilterChromeOS&)>& | |
38 callback, | |
39 net::NSSCertDatabase* cert_db) { | |
40 callback.Run(*CreateFilterInternal(cert_db)); | |
41 } | |
42 | |
43 static scoped_ptr<net::NSSProfileFilterChromeOS> CreateFilterInternal( | |
44 net::NSSCertDatabase* nss_cert_db) { | |
45 scoped_ptr<net::NSSProfileFilterChromeOS> filter( | |
46 new net::NSSProfileFilterChromeOS); | |
47 filter->Init(nss_cert_db->GetPublicSlot(), | |
48 nss_cert_db->GetPrivateSlot(), | |
49 nss_cert_db->GetSystemSlot()); | |
50 return filter.Pass(); | |
51 } | |
52 | |
53 base::WeakPtr<cert_database::CertDatabaseServiceIOPart> cert_db_io_; | |
54 }; | |
55 | |
56 } // namespace | |
57 | |
58 scoped_ptr<net::NSSProfileFilterChromeOSFactory> CreateProfileFilterFactory( | |
59 const base::WeakPtr<cert_database::CertDatabaseServiceIOPart>& cert_db_io) { | |
60 return scoped_ptr<net::NSSProfileFilterChromeOSFactory>( | |
61 new ProfileFilterFactory(cert_db_io)); | |
mattm
2014/10/18 00:45:15
I think you can use make_scoped_ptr for this case
pneubeck (no reviews)
2014/10/21 09:22:08
Done.
| |
62 } | |
63 | |
64 } // namespace chromeos | |
OLD | NEW |