OSDN Git Service

Use NoPreloadHolder for certificate sources
authorChad Brubaker <cbrubaker@google.com>
Mon, 13 Jun 2016 22:51:40 +0000 (15:51 -0700)
committerChad Brubaker <cbrubaker@google.com>
Mon, 13 Jun 2016 22:51:40 +0000 (15:51 -0700)
The static instances of SystemCertificateSource and
UserCertificateSource depend on the current user, avoid triggering their
static initializer when preloaded.

Bug: 29258379
Change-Id: I5088366ae67145b8bc928d6c04118529c82a7fc3

core/java/android/security/net/config/SystemCertificateSource.java
core/java/android/security/net/config/UserCertificateSource.java

index abef7b4..cfb195b 100644 (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
index 1a7d924..d6e2b3a 100644 (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