OSDN Git Service

original
[gb-231r1-is01/GB_2.3_IS01.git] / cts / tests / tests / webkit / src / android / webkit / cts / CookieTest.java
diff --git a/cts/tests/tests/webkit/src/android/webkit/cts/CookieTest.java b/cts/tests/tests/webkit/src/android/webkit/cts/CookieTest.java
new file mode 100644 (file)
index 0000000..a95cd90
--- /dev/null
@@ -0,0 +1,234 @@
+/*
+ * Copyright (C) 2009 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.webkit.cts;
+
+import android.test.AndroidTestCase;
+import android.webkit.CookieManager;
+import android.webkit.CookieSyncManager;
+
+/**
+ * Original framework tests for CookieManager
+ */
+public class CookieTest extends AndroidTestCase {
+
+    private CookieManager mCookieManager;
+    private static final long WAIT_TIME = 50;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        CookieSyncManager.createInstance(getContext());
+        mCookieManager = CookieManager.getInstance();
+        mCookieManager.removeAllCookie();
+        // cookies are removed asynchronously, wait a bit for cookies to be removed
+        int maxWait = 10;
+        for (int i=0; i < maxWait; i++) {
+            // this is unfortuately non-deterministic, but ensure sleep a least once to limit
+            // chance of remove thread running after test has begun
+            Thread.sleep(WAIT_TIME);
+            if (!mCookieManager.hasCookies()) {
+                break;
+            }
+        }
+        assertFalse(mCookieManager.hasCookies());
+
+    }
+
+    public void testParse() {
+        String url = "http://www.foo.com";
+
+        // basic
+        mCookieManager.setCookie(url, "a=b");
+        String cookie = mCookieManager.getCookie(url);
+        assertTrue(cookie.equals("a=b"));
+
+        // quoted
+        mCookieManager.setCookie(url, "c=\"d;\"");
+        cookie = mCookieManager.getCookie(url);
+
+        assertTrue(cookie.contains("a=b"));
+        assertTrue(cookie.contains("c=\"d;\""));
+    }
+
+    public void testDomain() {
+        String url = "http://www.foo.com";
+
+        // basic
+        mCookieManager.setCookie(url, "a=b");
+        String cookie = mCookieManager.getCookie(url);
+        assertTrue(cookie.equals("a=b"));
+
+        // no cross domain cookie
+        cookie = mCookieManager.getCookie("http://bar.com");
+        assertTrue(cookie == null);
+
+        // more than one cookie
+        mCookieManager.setCookie(url, "c=d; domain=.foo.com");
+        cookie = mCookieManager.getCookie(url);
+        assertTrue(cookie.contains("a=b;"));
+        assertTrue(cookie.contains("c=d"));
+
+        // host cookie should not be accessible from a sub-domain.
+        cookie = mCookieManager.getCookie("http://bar.www.foo.com");
+        assertTrue(cookie.equals("c=d"));
+
+        // test setting a domain= that doesn't start w/ a dot, should
+        // treat it as a domain cookie, as if there was a pre-pended dot.
+        mCookieManager.setCookie(url, "e=f; domain=www.foo.com");
+        cookie = mCookieManager.getCookie(url);
+        assertTrue(cookie.contains("a=b"));
+        assertTrue(cookie.contains("c=d"));
+        assertTrue(cookie.contains("e=f"));
+
+        cookie = mCookieManager.getCookie("http://sub.www.foo.com");
+        assertTrue(cookie.contains("c=d"));
+        assertTrue(cookie.contains("e=f"));
+
+        cookie = mCookieManager.getCookie("http://foo.com");
+        assertTrue(cookie.equals("c=d"));
+    }
+
+    public void testSubDomain() {
+        String url_abcd = "http://a.b.c.d.com";
+        String url_bcd = "http://b.c.d.com";
+        String url_cd = "http://c.d.com";
+        String url_d = "http://d.com";
+
+        mCookieManager.setCookie(url_abcd, "a=1; domain=.a.b.c.d.com");
+        mCookieManager.setCookie(url_abcd, "b=2; domain=.b.c.d.com");
+        mCookieManager.setCookie(url_abcd, "c=3; domain=.c.d.com");
+        mCookieManager.setCookie(url_abcd, "d=4; domain=.d.com");
+
+        String cookie = mCookieManager.getCookie(url_abcd);
+        assertTrue(cookie.contains("a=1"));
+        assertTrue(cookie.contains("b=2"));
+        assertTrue(cookie.contains("c=3"));
+        assertTrue(cookie.contains("d=4"));
+        cookie = mCookieManager.getCookie(url_bcd);
+        assertTrue(cookie.contains("b=2"));
+        assertTrue(cookie.contains("c=3"));
+        assertTrue(cookie.contains("d=4"));
+        cookie = mCookieManager.getCookie(url_cd);
+        assertTrue(cookie.contains("c=3"));
+        assertTrue(cookie.contains("d=4"));
+        cookie = mCookieManager.getCookie(url_d);
+        assertTrue(cookie.equals("d=4"));
+
+        // check that the same cookie can exist on different sub-domains.
+        mCookieManager.setCookie(url_bcd, "x=bcd; domain=.b.c.d.com");
+        mCookieManager.setCookie(url_bcd, "x=cd; domain=.c.d.com");
+        cookie = mCookieManager.getCookie(url_bcd);
+        assertTrue(cookie.contains("b=2"));
+        assertTrue(cookie.contains("c=3"));
+        assertTrue(cookie.contains("d=4"));
+        assertTrue(cookie.contains("x=bcd"));
+        assertTrue(cookie.contains("x=cd"));
+        cookie = mCookieManager.getCookie(url_cd);
+        assertTrue(cookie.contains("c=3"));
+        assertTrue(cookie.contains("d=4"));
+        assertTrue(cookie.contains("x=cd"));
+    }
+
+    public void testInvalidDomain() {
+        String url = "http://foo.bar.com";
+
+        mCookieManager.setCookie(url, "a=1; domain=.yo.foo.bar.com");
+        String cookie = mCookieManager.getCookie(url);
+        assertTrue(cookie == null);
+
+        mCookieManager.setCookie(url, "b=2; domain=.foo.com");
+        cookie = mCookieManager.getCookie(url);
+        assertTrue(cookie == null);
+
+        mCookieManager.setCookie(url, "c=3; domain=.bar.foo.com");
+        cookie = mCookieManager.getCookie(url);
+        assertTrue(cookie == null);
+
+        mCookieManager.setCookie(url, "d=4; domain=.foo.bar.com.net");
+        cookie = mCookieManager.getCookie(url);
+        assertTrue(cookie == null);
+
+        mCookieManager.setCookie(url, "e=5; domain=.ar.com");
+        cookie = mCookieManager.getCookie(url);
+        assertTrue(cookie == null);
+
+        mCookieManager.setCookie(url, "f=6; domain=.com");
+        cookie = mCookieManager.getCookie(url);
+        assertTrue(cookie == null);
+
+        mCookieManager.setCookie(url, "g=7; domain=.co.uk");
+        cookie = mCookieManager.getCookie(url);
+        assertTrue(cookie == null);
+
+        mCookieManager.setCookie(url, "h=8; domain=.foo.bar.com.com");
+        cookie = mCookieManager.getCookie(url);
+        assertTrue(cookie == null);
+    }
+
+    public void testPath() {
+        String url = "http://www.foo.com";
+
+        mCookieManager.setCookie(url, "a=b; path=/wee");
+        String cookie = mCookieManager.getCookie(url + "/wee");
+        assertTrue(cookie.equals("a=b"));
+        cookie = mCookieManager.getCookie(url + "/wee/");
+        assertTrue(cookie.equals("a=b"));
+        cookie = mCookieManager.getCookie(url + "/wee/hee");
+        assertTrue(cookie.equals("a=b"));
+        cookie = mCookieManager.getCookie(url + "/wee/hee/more");
+        assertTrue(cookie.equals("a=b"));
+        cookie = mCookieManager.getCookie(url + "/weehee");
+        assertTrue(cookie == null);
+        cookie = mCookieManager.getCookie(url);
+        assertTrue(cookie == null);
+
+        mCookieManager.setCookie(url, "a=c; path=");
+        cookie = mCookieManager.getCookie(url + "/wee");
+        // order of contents matters in this case, per spec
+        assertTrue(cookie.equals("a=b; a=c"));
+        cookie = mCookieManager.getCookie(url);
+        assertTrue(cookie.equals("a=c"));
+
+        mCookieManager.setCookie(url, "a=d");
+        cookie = mCookieManager.getCookie(url + "/wee");
+        assertTrue(cookie.equals("a=b; a=d"));
+    }
+
+    public void testEmptyValue() {
+        String url = "http://www.foobar.com";
+
+        mCookieManager.setCookie(url, "foo;");
+        String cookie = mCookieManager.getCookie(url);
+        assertTrue(cookie.equals("foo"));
+
+        mCookieManager.setCookie(url, "bar");
+        cookie = mCookieManager.getCookie(url);
+        assertTrue(cookie.equals("bar; foo"));
+
+        mCookieManager.setCookie(url, "bar=");
+        cookie = mCookieManager.getCookie(url);
+        assertTrue(cookie.equals("bar=; bar; foo"));
+
+        mCookieManager.setCookie(url, "foobar=;");
+        cookie = mCookieManager.getCookie(url);
+        assertTrue(cookie.equals("bar=; foobar=; bar; foo"));
+
+        mCookieManager.setCookie(url, "baz=; path=/wee");
+        cookie = mCookieManager.getCookie(url + "/wee");
+        assertTrue(cookie.equals("baz=; bar=; foobar=; bar; foo"));
+    }
+}