Upstream version 8.37.180.0
[platform/framework/web/crosswalk.git] / src / android_webview / javatests / src / org / chromium / android_webview / test / CookieManagerStartupTest.java
1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 package org.chromium.android_webview.test;
6
7 import android.content.Context;
8 import android.test.suitebuilder.annotation.MediumTest;
9 import android.test.suitebuilder.annotation.SmallTest;
10
11 import org.chromium.android_webview.AwBrowserProcess;
12 import org.chromium.android_webview.AwContents;
13 import org.chromium.android_webview.AwCookieManager;
14 import org.chromium.android_webview.AwWebResourceResponse;
15 import org.chromium.android_webview.test.util.CommonResources;
16 import org.chromium.android_webview.test.util.CookieUtils;
17 import org.chromium.base.test.util.Feature;
18 import org.chromium.content.app.ContentMain;
19 import org.chromium.net.test.util.TestWebServer;
20
21
22 /**
23  * Tests for CookieManager/Chromium startup ordering weirdness.
24  */
25 public class CookieManagerStartupTest extends AwTestBase {
26
27     private TestAwContentsClient mContentsClient;
28     private AwContents mAwContents;
29
30     @Override
31     protected void setUp() throws Exception {
32         super.setUp();
33         ContentMain.initApplicationContext(getActivity().getApplicationContext());
34     }
35
36     @Override
37     protected boolean needsBrowserProcessStarted() {
38         return false;
39     }
40
41     private void startChromium() throws Exception {
42         startChromiumWithClient(new TestAwContentsClient());
43     }
44
45     private void startChromiumWithClient(TestAwContentsClient contentsClient) throws Exception {
46         final Context context = getActivity();
47         getInstrumentation().runOnMainSync(new Runnable() {
48             @Override
49             public void run() {
50                 AwBrowserProcess.start(context);
51             }
52         });
53
54         mContentsClient = contentsClient;
55         final AwTestContainerView testContainerView =
56                 createAwTestContainerViewOnMainSync(mContentsClient);
57         mAwContents = testContainerView.getAwContents();
58         mAwContents.getSettings().setJavaScriptEnabled(true);
59     }
60
61     @MediumTest
62     @Feature({"AndroidWebView"})
63     public void testStartup() throws Throwable {
64         TestWebServer webServer = null;
65         try {
66             webServer = new TestWebServer(false);
67             String path = "/cookie_test.html";
68             String url = webServer.setResponse(path, CommonResources.ABOUT_HTML, null);
69
70             AwCookieManager cookieManager = new AwCookieManager();
71             assertNotNull(cookieManager);
72
73             CookieUtils.clearCookies(this, cookieManager);
74             assertFalse(cookieManager.hasCookies());
75
76             cookieManager.setAcceptCookie(true);
77             assertTrue(cookieManager.acceptCookie());
78
79             cookieManager.setCookie(url, "count=41");
80
81             startChromium();
82             loadUrlSync(mAwContents, mContentsClient.getOnPageFinishedHelper(), url);
83             executeJavaScriptAndWaitForResult(
84                     mAwContents,
85                     mContentsClient,
86                     "var c=document.cookie.split('=');document.cookie=c[0]+'='+(1+(+c[1]));");
87
88             assertEquals("count=42", cookieManager.getCookie(url));
89         } finally {
90             if (webServer != null) webServer.shutdown();
91         }
92     }
93
94     @SmallTest
95     @Feature({"AndroidWebView", "Privacy"})
96     public void testAllowFileSchemeCookies() throws Throwable {
97         AwCookieManager cookieManager = new AwCookieManager();
98         assertFalse(cookieManager.allowFileSchemeCookies());
99         cookieManager.setAcceptFileSchemeCookies(true);
100         assertTrue(cookieManager.allowFileSchemeCookies());
101         cookieManager.setAcceptFileSchemeCookies(false);
102         assertFalse(cookieManager.allowFileSchemeCookies());
103     }
104
105     @SmallTest
106     @Feature({"AndroidWebView", "Privacy"})
107     public void testAllowCookies() throws Throwable {
108         AwCookieManager cookieManager = new AwCookieManager();
109         assertTrue(cookieManager.acceptCookie());
110         cookieManager.setAcceptCookie(false);
111         assertFalse(cookieManager.acceptCookie());
112         cookieManager.setAcceptCookie(true);
113         assertTrue(cookieManager.acceptCookie());
114     }
115
116     // https://code.google.com/p/chromium/issues/detail?id=374203
117     @MediumTest
118     @Feature({"AndroidWebView"})
119     public void testShouldInterceptRequestDeadlock() throws Throwable {
120         String url = "http://www.example.com";
121         TestAwContentsClient contentsClient = new TestAwContentsClient() {
122             @Override
123             public AwWebResourceResponse shouldInterceptRequest(
124                     ShouldInterceptRequestParams params) {
125                 (new AwCookieManager()).getCookie("www.example.com");
126                 return null;
127             }
128         };
129         startChromiumWithClient(contentsClient);
130         loadUrlSync(mAwContents, contentsClient.getOnPageFinishedHelper(), url);
131     }
132 }