Chromium Code Reviews| 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 |