Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3914)

Unified Diff: chrome/browser/chromeos/net/cert_profile_filter.cc

Issue 419013003: Replace c/b/nss_context by a KeyedService. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Added cert_database namespace. Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/chromeos/net/cert_profile_filter.cc
diff --git a/chrome/browser/chromeos/net/cert_profile_filter.cc b/chrome/browser/chromeos/net/cert_profile_filter.cc
new file mode 100644
index 0000000000000000000000000000000000000000..4f14fade5f2cb2525b94112ae38089fa5673f256
--- /dev/null
+++ b/chrome/browser/chromeos/net/cert_profile_filter.cc
@@ -0,0 +1,64 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/chromeos/net/cert_profile_filter.h"
+
+#include "base/bind.h"
+#include "components/cert_database/public/cert_database_service_io_part.h"
+#include "net/cert/nss_cert_database.h"
+#include "net/cert/nss_profile_filter_chromeos.h"
+
+namespace chromeos {
+
+namespace {
+
+class ProfileFilterFactory : public net::NSSProfileFilterChromeOSFactory {
+ public:
+ explicit ProfileFilterFactory(
+ const base::WeakPtr<cert_database::CertDatabaseServiceIOPart>& cert_db_io)
+ : cert_db_io_(cert_db_io) {}
+
+ virtual scoped_ptr<net::NSSProfileFilterChromeOS> CreateFilter(
+ const base::Callback<void(const net::NSSProfileFilterChromeOS&)>&
+ callback) override {
+ if (!cert_db_io_)
+ return make_scoped_ptr(new net::NSSProfileFilterChromeOS);
+
+ net::NSSCertDatabase* cert_db = cert_db_io_->GetNSSCertDatabase(
+ base::Bind(&DidGetNSSCertDatabase, callback));
+ if (cert_db)
+ return CreateFilterInternal(cert_db);
+ return scoped_ptr<net::NSSProfileFilterChromeOS>();
mattm 2014/10/18 00:45:15 return nullptr
pneubeck (no reviews) 2014/10/21 09:22:09 Done.
+ }
+
+ private:
+ static void DidGetNSSCertDatabase(
+ const base::Callback<void(const net::NSSProfileFilterChromeOS&)>&
+ callback,
+ net::NSSCertDatabase* cert_db) {
+ callback.Run(*CreateFilterInternal(cert_db));
+ }
+
+ static scoped_ptr<net::NSSProfileFilterChromeOS> CreateFilterInternal(
+ net::NSSCertDatabase* nss_cert_db) {
+ scoped_ptr<net::NSSProfileFilterChromeOS> filter(
+ new net::NSSProfileFilterChromeOS);
+ filter->Init(nss_cert_db->GetPublicSlot(),
+ nss_cert_db->GetPrivateSlot(),
+ nss_cert_db->GetSystemSlot());
+ return filter.Pass();
+ }
+
+ base::WeakPtr<cert_database::CertDatabaseServiceIOPart> cert_db_io_;
+};
+
+} // namespace
+
+scoped_ptr<net::NSSProfileFilterChromeOSFactory> CreateProfileFilterFactory(
+ const base::WeakPtr<cert_database::CertDatabaseServiceIOPart>& cert_db_io) {
+ return scoped_ptr<net::NSSProfileFilterChromeOSFactory>(
+ 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.
+}
+
+} // namespace chromeos

Powered by Google App Engine
This is Rietveld 408576698