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) {