Do not initialize SSLSocketFactory too early DO NOT MERGE

During Zygote initialization, the class may be preloaded. However we do
not want the default instances of SSLSocketFactory initialized, so move
those into a holder class so they are only initialized when used.

(cherry picked from commit 72017834153711733905dfcf4bfe7b802062692b)

Bug: 9984058
Change-Id: I245d3d075c8c3476e9f76579ef7141e447f92011
diff --git a/src/org/apache/http/conn/ssl/SSLSocketFactory.java b/src/org/apache/http/conn/ssl/SSLSocketFactory.java
index 1be6c3a..9195b4f 100644
--- a/src/org/apache/http/conn/ssl/SSLSocketFactory.java
+++ b/src/org/apache/http/conn/ssl/SSLSocketFactory.java
@@ -150,19 +150,26 @@
     
     public static final X509HostnameVerifier STRICT_HOSTNAME_VERIFIER 
         = new StrictHostnameVerifier();
-    /**
-     * The factory using the default JVM settings for secure connections.
+
+    /*
+     * Put defaults into holder class to avoid class preloading creating an
+     * instance of the classes referenced.
      */
-    private static final SSLSocketFactory DEFAULT_FACTORY = new SSLSocketFactory();
-    
+    private static class NoPreloadHolder {
+        /**
+         * The factory using the default JVM settings for secure connections.
+         */
+        private static final SSLSocketFactory DEFAULT_FACTORY = new SSLSocketFactory();
+    }
+
     /**
      * Gets an singleton instance of the SSLProtocolSocketFactory.
      * @return a SSLProtocolSocketFactory
      */
     public static SSLSocketFactory getSocketFactory() {
-        return DEFAULT_FACTORY;
+        return NoPreloadHolder.DEFAULT_FACTORY;
     }
-    
+
     private final SSLContext sslcontext;
     private final javax.net.ssl.SSLSocketFactory socketfactory;
     private final HostNameResolver nameResolver;