More TestEnvironment Stuff

Bug 5498103

Setting the CookieHandler.setDefault to null should fix the
OldCookieHandlerTest. Added more stuff from the Vogar
TestEnvironment class...

Change-Id: I5c5c347625d8f3f47eb668e7ab214fb438beadf0
diff --git a/tests/core/runner/src/android/test/InstrumentationCtsTestRunner.java b/tests/core/runner/src/android/test/InstrumentationCtsTestRunner.java
index 1b221a4..cc7d7b0 100644
--- a/tests/core/runner/src/android/test/InstrumentationCtsTestRunner.java
+++ b/tests/core/runner/src/android/test/InstrumentationCtsTestRunner.java
@@ -33,9 +33,15 @@
 import java.io.File;
 import java.lang.reflect.Field;
 import java.lang.reflect.Modifier;
+import java.net.Authenticator;
+import java.net.CookieHandler;
+import java.net.ResponseCache;
 import java.util.List;
 import java.util.Locale;
 import java.util.TimeZone;
+import javax.net.ssl.HostnameVerifier;
+import javax.net.ssl.HttpsURLConnection;
+import javax.net.ssl.SSLSocketFactory;
 
 import junit.framework.AssertionFailedError;
 import junit.framework.Test;
@@ -63,6 +69,8 @@
      */
     private boolean mSingleTest = false;
 
+    private TestEnvironment mEnvironment;
+
     @Override
     public void onCreate(Bundle arguments) {
         // We might want to move this to /sdcard, if is is mounted/writable.
@@ -79,6 +87,8 @@
 
         TimeZone.setDefault(TimeZone.getTimeZone("GMT"));
 
+        mEnvironment = new TestEnvironment();
+
         if (arguments != null) {
             String classArg = arguments.getString(ARGUMENT_TEST_CLASS);
             mSingleTest = classArg != null && classArg.contains("#");
@@ -120,10 +130,6 @@
              */
             private long startTime;
 
-            private Locale defaultLocale;
-            private String userHome;
-            private String javaIoTmpDir;
-
             @Override
             public void startTest(Test test) {
                 if (test.getClass() != lastClass) {
@@ -134,26 +140,13 @@
                 Thread.currentThread().setContextClassLoader(
                         test.getClass().getClassLoader());
 
-                save();
+                mEnvironment.reset();
 
                 startTime = System.currentTimeMillis();
             }
 
-            private void save() {
-                defaultLocale = Locale.getDefault();
-                userHome = System.getProperty("user.home");
-                javaIoTmpDir = System.getProperty("java.io.tmpdir");
-            }
-
-            private void restore() {
-                Locale.setDefault(defaultLocale);
-                System.setProperty("user.home", userHome);
-                System.setProperty("java.io.tmpdir", javaIoTmpDir);
-            }
-
             @Override
             public void endTest(Test test) {
-                restore();
                 if (test instanceof TestCase) {
                     cleanup((TestCase)test);
 
@@ -235,6 +228,34 @@
         return runner;
     }
 
+    // http://code.google.com/p/vogar/source/browse/trunk/src/vogar/target/TestEnvironment.java
+    static class TestEnvironment {
+        private Locale mDefaultLocale;
+        private String mUserHome;
+        private String mJavaIoTmpDir;
+        private HostnameVerifier mHostnameVerifier;
+        private SSLSocketFactory mSslSocketFactory;
+
+        TestEnvironment() {
+            mDefaultLocale = Locale.getDefault();
+            mUserHome = System.getProperty("user.home");
+            mJavaIoTmpDir = System.getProperty("java.io.tmpdir");
+            mHostnameVerifier = HttpsURLConnection.getDefaultHostnameVerifier();
+            mSslSocketFactory = HttpsURLConnection.getDefaultSSLSocketFactory();
+        }
+
+        void reset() {
+            Locale.setDefault(mDefaultLocale);
+            System.setProperty("user.home", mUserHome);
+            System.setProperty("java.io.tmpdir", mJavaIoTmpDir);
+            Authenticator.setDefault(null);
+            CookieHandler.setDefault(null);
+            ResponseCache.setDefault(null);
+            HttpsURLConnection.setDefaultHostnameVerifier(mHostnameVerifier);
+            HttpsURLConnection.setDefaultSSLSocketFactory(mSslSocketFactory);
+        }
+    }
+
     @Override
     List<Predicate<TestMethod>> getBuilderRequirements() {
         List<Predicate<TestMethod>> builderRequirements =