Conscrypt: Use a PreloadHolder

Use a PreloadHolder to separate device-specific static initialization
from generic initialization.

Bug: 34956610
Test: m
Test: Device boots
Change-Id: I450f21e3bb3d1c4f00c0291799034803fc59e853
diff --git a/platform/src/main/java/org/conscrypt/TrustedCertificateStore.java b/platform/src/main/java/org/conscrypt/TrustedCertificateStore.java
index 56e407d..3d815ad 100644
--- a/platform/src/main/java/org/conscrypt/TrustedCertificateStore.java
+++ b/platform/src/main/java/org/conscrypt/TrustedCertificateStore.java
@@ -92,16 +92,21 @@
         return alias.startsWith(PREFIX_USER);
     }
 
-    private static File defaultCaCertsSystemDir;
-    private static File defaultCaCertsAddedDir;
-    private static File defaultCaCertsDeletedDir;
+    private static class PreloadHolder {
+        private static File defaultCaCertsSystemDir;
+        private static File defaultCaCertsAddedDir;
+        private static File defaultCaCertsDeletedDir;
+
+        static {
+            String ANDROID_ROOT = System.getenv("ANDROID_ROOT");
+            String ANDROID_DATA = System.getenv("ANDROID_DATA");
+            defaultCaCertsSystemDir = new File(ANDROID_ROOT + "/etc/security/cacerts");
+            setDefaultUserDirectory(new File(ANDROID_DATA + "/misc/keychain"));
+        }
+    }
+
     private static final CertificateFactory CERT_FACTORY;
     static {
-        String ANDROID_ROOT = System.getenv("ANDROID_ROOT");
-        String ANDROID_DATA = System.getenv("ANDROID_DATA");
-        defaultCaCertsSystemDir = new File(ANDROID_ROOT + "/etc/security/cacerts");
-        setDefaultUserDirectory(new File(ANDROID_DATA + "/misc/keychain"));
-
         try {
             CERT_FACTORY = CertificateFactory.getInstance("X509");
         } catch (CertificateException e) {
@@ -110,8 +115,8 @@
     }
 
     public static void setDefaultUserDirectory(File root) {
-        defaultCaCertsAddedDir = new File(root, "cacerts-added");
-        defaultCaCertsDeletedDir = new File(root, "cacerts-removed");
+        PreloadHolder.defaultCaCertsAddedDir = new File(root, "cacerts-added");
+        PreloadHolder.defaultCaCertsDeletedDir = new File(root, "cacerts-removed");
     }
 
     private final File systemDir;
@@ -119,7 +124,8 @@
     private final File deletedDir;
 
     public TrustedCertificateStore() {
-        this(defaultCaCertsSystemDir, defaultCaCertsAddedDir, defaultCaCertsDeletedDir);
+        this(PreloadHolder.defaultCaCertsSystemDir, PreloadHolder.defaultCaCertsAddedDir,
+                PreloadHolder.defaultCaCertsDeletedDir);
     }
 
     public TrustedCertificateStore(File systemDir, File addedDir, File deletedDir) {