Use NoPreloadHolder for certificate sources

The static instances of SystemCertificateSource and
UserCertificateSource depend on the current user, avoid triggering their
static initializer when preloaded.

Bug: 29258379
Change-Id: I5088366ae67145b8bc928d6c04118529c82a7fc3
This commit is contained in:
Chad Brubaker
2016-06-13 15:51:40 -07:00
parent 7014eef54a
commit 319f9fe102
2 changed files with 9 additions and 4 deletions

View File

@@ -25,7 +25,10 @@ import java.io.File;
* @hide
*/
public final class SystemCertificateSource extends DirectoryCertificateSource {
private static final SystemCertificateSource INSTANCE = new SystemCertificateSource();
private static class NoPreloadHolder {
private static final SystemCertificateSource INSTANCE = new SystemCertificateSource();
}
private final File mUserRemovedCaDir;
private SystemCertificateSource() {
@@ -35,7 +38,7 @@ public final class SystemCertificateSource extends DirectoryCertificateSource {
}
public static SystemCertificateSource getInstance() {
return INSTANCE;
return NoPreloadHolder.INSTANCE;
}
@Override

View File

@@ -25,7 +25,9 @@ import java.io.File;
* @hide
*/
public final class UserCertificateSource extends DirectoryCertificateSource {
private static final UserCertificateSource INSTANCE = new UserCertificateSource();
private static class NoPreloadHolder {
private static final UserCertificateSource INSTANCE = new UserCertificateSource();
}
private UserCertificateSource() {
super(new File(
@@ -33,7 +35,7 @@ public final class UserCertificateSource extends DirectoryCertificateSource {
}
public static UserCertificateSource getInstance() {
return INSTANCE;
return NoPreloadHolder.INSTANCE;
}
@Override