Merge remote branch 'goog/honeycomb-mr2' into ics-mr0

Conflicts:
	apps/CtsVerifier/AndroidManifest.xml
	tests/expectations/knownfailures.txt

Change-Id: I1b918333883e0f3d651e9f4d65918974eaa3b72f
diff --git a/tests/cts/net/src/android/net/cts/NetworkInfo_DetailedStateTest.java b/tests/cts/net/src/android/net/cts/NetworkInfo_DetailedStateTest.java
index 196e102..6b9b985 100644
--- a/tests/cts/net/src/android/net/cts/NetworkInfo_DetailedStateTest.java
+++ b/tests/cts/net/src/android/net/cts/NetworkInfo_DetailedStateTest.java
@@ -16,12 +16,13 @@
 
 package android.net.cts;
 
-import android.net.NetworkInfo.DetailedState;
-import android.test.AndroidTestCase;
 import dalvik.annotation.TestLevel;
 import dalvik.annotation.TestTargetClass;
 import dalvik.annotation.TestTargetNew;
 
+import android.net.NetworkInfo.DetailedState;
+import android.test.AndroidTestCase;
+
 @TestTargetClass(DetailedState.class)
 public class NetworkInfo_DetailedStateTest extends AndroidTestCase {
 
@@ -52,7 +53,7 @@
     )
     public void testValues() {
         DetailedState[] expected = DetailedState.values();
-        assertEquals(10, expected.length);
+        assertEquals(11, expected.length);
         assertEquals(DetailedState.IDLE, expected[0]);
         assertEquals(DetailedState.SCANNING, expected[1]);
         assertEquals(DetailedState.CONNECTING, expected[2]);
@@ -63,6 +64,7 @@
         assertEquals(DetailedState.DISCONNECTING, expected[7]);
         assertEquals(DetailedState.DISCONNECTED, expected[8]);
         assertEquals(DetailedState.FAILED, expected[9]);
+        assertEquals(DetailedState.BLOCKED, expected[10]);
     }
 
 }
diff --git a/tests/cts/net/src/android/net/http/cts/SslErrorTest.java b/tests/cts/net/src/android/net/http/cts/SslErrorTest.java
new file mode 100755
index 0000000..d186f0e
--- /dev/null
+++ b/tests/cts/net/src/android/net/http/cts/SslErrorTest.java
@@ -0,0 +1,124 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.net.http.cts;
+
+import android.net.http.SslCertificate;
+import android.net.http.SslError;
+
+import dalvik.annotation.TestLevel;
+import dalvik.annotation.TestTargetNew;
+import dalvik.annotation.TestTargetClass;
+
+import java.util.Date;
+
+import junit.framework.TestCase;
+
+@TestTargetClass(SslError.class)
+public class SslErrorTest extends TestCase {
+    private SslCertificate mCertificate;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        mCertificate = new SslCertificate("foo", "bar", new Date(42), new Date(43));
+    }
+
+    @TestTargetNew(
+        level = TestLevel.COMPLETE,
+        method = "hasError",
+        args = {int.class}
+    )
+    public void testHasError() {
+        SslError error = new SslError(SslError.SSL_EXPIRED, mCertificate);
+        assertTrue(error.hasError(SslError.SSL_EXPIRED));
+        assertFalse(error.hasError(SslError.SSL_UNTRUSTED));
+    }
+
+    @TestTargetNew(
+        level = TestLevel.COMPLETE,
+        method = "addError",
+        args = {int.class}
+    )
+    public void testAddError() {
+        SslError error = new SslError(SslError.SSL_EXPIRED, mCertificate);
+        assertFalse(error.hasError(SslError.SSL_UNTRUSTED));
+        error.addError(SslError.SSL_UNTRUSTED);
+        assertTrue(error.hasError(SslError.SSL_UNTRUSTED));
+    }
+
+    @TestTargetNew(
+        level = TestLevel.COMPLETE,
+        method = "addError",
+        args = {int.class}
+    )
+    public void testAddErrorIgnoresInvalidValues() {
+        SslError error = new SslError(SslError.SSL_EXPIRED, mCertificate);
+        error.addError(42);
+        assertFalse(error.hasError(42));
+    }
+
+    @TestTargetNew(
+        level = TestLevel.COMPLETE,
+        method = "SslError",
+        args = {int.class, SslCertificate.class}
+    )
+    public void testConstructorIgnoresInvalidValues() {
+        SslError error = new SslError(42, mCertificate);
+        assertFalse(error.hasError(42));
+    }
+
+    @TestTargetNew(
+        level = TestLevel.COMPLETE,
+        method = "getPrimaryError",
+        args = {}
+    )
+    public void testGetPrimaryError() {
+        SslError error = new SslError(SslError.SSL_EXPIRED, mCertificate);
+        error.addError(SslError.SSL_UNTRUSTED);
+        assertEquals(error.getPrimaryError(), SslError.SSL_UNTRUSTED);
+    }
+
+    @TestTargetNew(
+        level = TestLevel.COMPLETE,
+        method = "getPrimaryError",
+        args = {}
+    )
+    public void testGetPrimaryErrorWithEmptySet() {
+        SslError error = new SslError(42, mCertificate);
+        assertEquals(error.getPrimaryError(), -1);
+    }
+
+    @TestTargetNew(
+        level = TestLevel.COMPLETE,
+        method = "getUrl",
+        args = {}
+    )
+    public void testGetUrl() {
+        SslError error = new SslError(SslError.SSL_EXPIRED, mCertificate, "foo");
+        assertEquals(error.getUrl(), "foo");
+    }
+
+    @TestTargetNew(
+        level = TestLevel.COMPLETE,
+        method = "getUrl",
+        args = {}
+    )
+    public void testGetUrlWithDeprecatedConstructor() {
+        SslError error = new SslError(SslError.SSL_EXPIRED, mCertificate);
+        assertEquals(error.getUrl(), "");
+    }
+}