Index: net/socket/dns_cert_provenance_checker.cc |
diff --git a/net/socket/dns_cert_provenance_checker.cc b/net/socket/dns_cert_provenance_checker.cc |
index 27c4982b5c24cf2699e5516858843b0923c10632..2243755a5cf6df3da7149e2e2efe4f5fec4aaebc 100644 |
--- a/net/socket/dns_cert_provenance_checker.cc |
+++ b/net/socket/dns_cert_provenance_checker.cc |
@@ -19,10 +19,10 @@ |
#include "base/basictypes.h" |
#include "base/crypto/encryptor.h" |
#include "base/crypto/symmetric_key.h" |
+#include "base/lazy_instance.h" |
#include "base/non_thread_safe.h" |
#include "base/pickle.h" |
#include "base/scoped_ptr.h" |
-#include "base/singleton.h" |
#include "net/base/completion_callback.h" |
#include "net/base/dns_util.h" |
#include "net/base/dnsrr_resolver.h" |
@@ -72,13 +72,16 @@ class DnsCertLimits { |
} |
private: |
- friend struct DefaultSingletonTraits<DnsCertLimits>; |
+ friend struct base::DefaultLazyInstanceTraits<DnsCertLimits>; |
std::set<std::string> uploaded_hostnames_; |
DISALLOW_COPY_AND_ASSIGN(DnsCertLimits); |
}; |
+static base::LazyInstance<DnsCertLimits> g_dns_cert_limits( |
+ base::LINKER_INITIALIZED); |
+ |
// DnsCertProvenanceCheck performs the DNS lookup of the certificate. This |
// class is self-deleting. |
class DnsCertProvenanceCheck : public NonThreadSafe { |
@@ -105,7 +108,7 @@ class DnsCertProvenanceCheck : public NonThreadSafe { |
if (der_certs_.empty()) |
return; |
- DnsCertLimits* const limits = Singleton<DnsCertLimits>::get(); |
+ DnsCertLimits* const limits = g_dns_cert_limits.Pointer(); |
if (limits->HaveReachedMaxUploads() || |
limits->HaveUploadedForHostname(hostname_)) { |
return; |
@@ -146,7 +149,7 @@ class DnsCertProvenanceCheck : public NonThreadSafe { |
LOG(ERROR) << "FAILED" |
<< " hostname:" << hostname_ |
<< " domain:" << domain_; |
- Singleton<DnsCertLimits>::get()->DidUpload(hostname_); |
+ g_dns_cert_limits.Get().DidUpload(hostname_); |
delegate_->OnDnsCertLookupFailed(hostname_, der_certs_); |
} else if (status == OK) { |
LOG(ERROR) << "GOOD" |