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

Unified Diff: chrome/browser/net/nss_context_linux.cc

Issue 405973003: Remove the deprecated NSSCertDatabase::GetInstance() . (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Changed comment. Created 6 years, 5 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
« no previous file with comments | « chrome/browser/net/nss_context.h ('k') | chrome/common/net/x509_certificate_model_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/net/nss_context_linux.cc
diff --git a/chrome/browser/net/nss_context_linux.cc b/chrome/browser/net/nss_context_linux.cc
index 5aa18e6bb64f8196a01154eef396c0c84d7fe332..9021a908423124c46d55ebdc8620811468abf9a1 100644
--- a/chrome/browser/net/nss_context_linux.cc
+++ b/chrome/browser/net/nss_context_linux.cc
@@ -8,6 +8,10 @@
#include "crypto/nss_util_internal.h"
#include "net/cert/nss_cert_database.h"
+namespace {
+net::NSSCertDatabase* g_nss_cert_database = NULL;
+} // namespace
+
crypto::ScopedPK11Slot GetPublicNSSKeySlotForResourceContext(
content::ResourceContext* context) {
DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO));
@@ -24,6 +28,18 @@ crypto::ScopedPK11Slot GetPrivateNSSKeySlotForResourceContext(
net::NSSCertDatabase* GetNSSCertDatabaseForResourceContext(
content::ResourceContext* context,
const base::Callback<void(net::NSSCertDatabase*)>& callback) {
- DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO));
- return net::NSSCertDatabase::GetInstance();
+ // This initialization is not thread safe. This CHECK ensures that this code
+ // is only run on a single thread.
+ CHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO));
+ if (!g_nss_cert_database) {
+ // Linux has only a single persistent slot compared to ChromeOS's separate
+ // public and private slot.
+ // Redirect any slot usage to this persistent slot on Linux.
+ g_nss_cert_database = new net::NSSCertDatabase(
+ crypto::ScopedPK11Slot(
+ crypto::GetPersistentNSSKeySlot()) /* public slot */,
+ crypto::ScopedPK11Slot(
+ crypto::GetPersistentNSSKeySlot()) /* private slot */);
+ }
+ return g_nss_cert_database;
}
« no previous file with comments | « chrome/browser/net/nss_context.h ('k') | chrome/common/net/x509_certificate_model_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698