Require explicit selection of traits for LazyInstance
This change requires the user of LazyInstance to explicitly select
either ::DestructorAtExit or ::Leaky. It seems clear that many users of
LazyInstance have just gone with default and are either unaware or
didn't consider that the default requires running an AtExit at process
shutdown.
As a first step, make this choice explicit, and update current users
to be ::DestructorAtExit to maintain current behaviour. Follow ups can
then attempt to consider individual switches from DestructorAtExit to
Leaky including reviewers with domain-specific knowledge.
i.e. No intended behaviour change from this CL.
[email protected]
Lots of TBRs for mechanical changes:
boliu: android_webview/
danakj: cc/
dmurph: storage/
jam: content/ ipc/, mojo/
jbauman: gpu/
jochen: gin/
oshima: chromeos/
raymes: ppapi/
rdevlin.cronin: extensions/
rockot: device/, services/
rogerta: google_apis/
rsleevi: net/, crypto/
sdefresne: components/, ios/
sergeyu: jingle/
slan: chromecast/
thakis: base/, chrome/, third_party/, tools/, ui/
vitalybuka: printing/
wez: remoting/
TBR=above
BUG=698982
CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.android:android_cronet_tester;master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_site_isolation;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel
Review-Url: https://codereview.chromium.org/2733283002
Cr-Commit-Position: refs/heads/master@{#455405}
diff --git a/net/base/mime_util.cc b/net/base/mime_util.cc
index 4e94fa5..93aff23a 100644
--- a/net/base/mime_util.cc
+++ b/net/base/mime_util.cc
@@ -48,7 +48,7 @@
bool IsValidTopLevelMimeType(const std::string& type_string) const;
private:
- friend struct base::DefaultLazyInstanceTraits<MimeUtil>;
+ friend struct base::LazyInstanceTraitsBase<MimeUtil>;
MimeUtil();
diff --git a/net/base/network_activity_monitor.h b/net/base/network_activity_monitor.h
index 7f3dbed..6f17c21 100644
--- a/net/base/network_activity_monitor.h
+++ b/net/base/network_activity_monitor.h
@@ -51,7 +51,7 @@
NetworkActivityMonitor();
~NetworkActivityMonitor();
- friend struct base::DefaultLazyInstanceTraits<NetworkActivityMonitor>;
+ friend struct base::LazyInstanceTraitsBase<NetworkActivityMonitor>;
// Protects all the following members.
mutable base::Lock lock_;
diff --git a/net/cert/cert_verify_proc_mac.cc b/net/cert/cert_verify_proc_mac.cc
index 234d959..60621d6b 100644
--- a/net/cert/cert_verify_proc_mac.cc
+++ b/net/cert/cert_verify_proc_mac.cc
@@ -616,7 +616,7 @@
}
private:
- friend struct base::DefaultLazyInstanceTraits<OSXKnownRootHelper>;
+ friend struct base::LazyInstanceTraitsBase<OSXKnownRootHelper>;
OSXKnownRootHelper() {
CFArrayRef cert_array = NULL;
diff --git a/net/cert/cert_verify_proc_win.cc b/net/cert/cert_verify_proc_win.cc
index a4e3941..ef334da 100644
--- a/net/cert/cert_verify_proc_win.cc
+++ b/net/cert/cert_verify_proc_win.cc
@@ -662,7 +662,7 @@
void SetCRLSet(CRLSet* crl_set) { thread_local_crlset.Set(crl_set); }
private:
- friend struct base::DefaultLazyInstanceTraits<RevocationInjector>;
+ friend struct base::LazyInstanceTraitsBase<RevocationInjector>;
RevocationInjector() {
const CRYPT_OID_FUNC_ENTRY kInterceptFunction[] = {
diff --git a/net/cert/ev_root_ca_metadata.h b/net/cert/ev_root_ca_metadata.h
index e99cdd1f..c803bee 100644
--- a/net/cert/ev_root_ca_metadata.h
+++ b/net/cert/ev_root_ca_metadata.h
@@ -22,7 +22,7 @@
namespace base {
template <typename T>
-struct DefaultLazyInstanceTraits;
+struct LazyInstanceTraitsBase;
} // namespace base
namespace net {
@@ -66,7 +66,7 @@
bool RemoveEVCA(const SHA1HashValue& fingerprint);
private:
- friend struct base::DefaultLazyInstanceTraits<EVRootCAMetadata>;
+ friend struct base::LazyInstanceTraitsBase<EVRootCAMetadata>;
EVRootCAMetadata();
~EVRootCAMetadata();
diff --git a/net/cert/test_root_certs.h b/net/cert/test_root_certs.h
index 48dbc3e..6fa22c1 100644
--- a/net/cert/test_root_certs.h
+++ b/net/cert/test_root_certs.h
@@ -94,7 +94,7 @@
#endif
private:
- friend struct base::DefaultLazyInstanceTraits<TestRootCerts>;
+ friend struct base::LazyInstanceTraitsBase<TestRootCerts>;
TestRootCerts();
~TestRootCerts();
diff --git a/net/cert/test_root_certs_win.cc b/net/cert/test_root_certs_win.cc
index 8535725..e13f173 100644
--- a/net/cert/test_root_certs_win.cc
+++ b/net/cert/test_root_certs_win.cc
@@ -41,7 +41,7 @@
HCRYPTOIDFUNCADDR original_handle;
private:
- friend struct base::DefaultLazyInstanceTraits<CryptoAPIInjector>;
+ friend struct base::LazyInstanceTraitsBase<CryptoAPIInjector>;
CryptoAPIInjector()
: original_function(NULL),
diff --git a/net/cert/x509_certificate.cc b/net/cert/x509_certificate.cc
index 782f4a4c..377cb7e 100644
--- a/net/cert/x509_certificate.cc
+++ b/net/cert/x509_certificate.cc
@@ -102,7 +102,7 @@
// Obtain an instance of X509CertificateCache via a LazyInstance.
X509CertificateCache() {}
~X509CertificateCache() {}
- friend struct base::DefaultLazyInstanceTraits<X509CertificateCache>;
+ friend struct base::LazyInstanceTraitsBase<X509CertificateCache>;
// You must acquire this lock before using any private data of this object
// You must not block while holding this lock.
diff --git a/net/cert_net/nss_ocsp.cc b/net/cert_net/nss_ocsp.cc
index d2e250e..19fb32d 100644
--- a/net/cert_net/nss_ocsp.cc
+++ b/net/cert_net/nss_ocsp.cc
@@ -106,7 +106,7 @@
}
private:
- friend struct base::DefaultLazyInstanceTraits<OCSPIOLoop>;
+ friend struct base::LazyInstanceTraitsBase<OCSPIOLoop>;
OCSPIOLoop();
@@ -164,7 +164,7 @@
class OCSPNSSInitialization {
private:
- friend struct base::DefaultLazyInstanceTraits<OCSPNSSInitialization>;
+ friend struct base::LazyInstanceTraitsBase<OCSPNSSInitialization>;
OCSPNSSInitialization();
// This class is only instantiated as a leaky LazyInstance, so its destructor
diff --git a/net/disk_cache/blockfile/file_win.cc b/net/disk_cache/blockfile/file_win.cc
index f38595d..219df2a 100644
--- a/net/disk_cache/blockfile/file_win.cc
+++ b/net/disk_cache/blockfile/file_win.cc
@@ -39,8 +39,8 @@
DWORD error) override;
};
-static base::LazyInstance<CompletionHandler> g_completion_handler =
- LAZY_INSTANCE_INITIALIZER;
+static base::LazyInstance<CompletionHandler>::DestructorAtExit
+ g_completion_handler = LAZY_INSTANCE_INITIALIZER;
void CompletionHandler::OnIOCompleted(
base::MessageLoopForIO::IOContext* context,
diff --git a/net/dns/dns_reloader.cc b/net/dns/dns_reloader.cc
index 74534e6b..5e9165e 100644
--- a/net/dns/dns_reloader.cc
+++ b/net/dns/dns_reloader.cc
@@ -92,7 +92,7 @@
base::Lock lock_; // Protects resolver_generation_.
int resolver_generation_;
- friend struct base::DefaultLazyInstanceTraits<DnsReloader>;
+ friend struct base::LazyInstanceTraitsBase<DnsReloader>;
// We use thread local storage to identify which ReloadState to interact with.
static base::ThreadLocalStorage::StaticSlot tls_index_;
diff --git a/net/ssl/client_key_store.h b/net/ssl/client_key_store.h
index b9f182b..e1afa1d 100644
--- a/net/ssl/client_key_store.h
+++ b/net/ssl/client_key_store.h
@@ -58,7 +58,7 @@
const X509Certificate& certificate);
private:
- friend struct base::DefaultLazyInstanceTraits<ClientKeyStore>;
+ friend struct base::LazyInstanceTraitsBase<ClientKeyStore>;
ClientKeyStore();
~ClientKeyStore();
diff --git a/net/url_request/url_fetcher_core.cc b/net/url_request/url_fetcher_core.cc
index 146edf7..98edef6 100644
--- a/net/url_request/url_fetcher_core.cc
+++ b/net/url_request/url_fetcher_core.cc
@@ -68,7 +68,7 @@
// URLFetcherCore -------------------------------------------------------------
// static
-base::LazyInstance<URLFetcherCore::Registry>
+base::LazyInstance<URLFetcherCore::Registry>::DestructorAtExit
URLFetcherCore::g_registry = LAZY_INSTANCE_INITIALIZER;
URLFetcherCore::URLFetcherCore(URLFetcher* fetcher,
diff --git a/net/url_request/url_fetcher_core.h b/net/url_request/url_fetcher_core.h
index 570c0f8..db0e8a11 100644
--- a/net/url_request/url_fetcher_core.h
+++ b/net/url_request/url_fetcher_core.h
@@ -346,7 +346,7 @@
// Total expected bytes to receive (-1 if it cannot be determined).
int64_t total_response_bytes_;
- static base::LazyInstance<Registry> g_registry;
+ static base::LazyInstance<Registry>::DestructorAtExit g_registry;
DISALLOW_COPY_AND_ASSIGN(URLFetcherCore);
};