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.
5 package org.chromium.android_webview.test;
7 import android.content.Context;
8 import android.test.suitebuilder.annotation.MediumTest;
9 import android.test.suitebuilder.annotation.SmallTest;
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;
23 * Tests for CookieManager/Chromium startup ordering weirdness.
25 public class CookieManagerStartupTest extends AwTestBase {
27 private TestAwContentsClient mContentsClient;
28 private AwContents mAwContents;
31 protected void setUp() throws Exception {
33 ContentMain.initApplicationContext(getActivity().getApplicationContext());
37 protected boolean needsBrowserProcessStarted() {
41 private void startChromium() throws Exception {
42 startChromiumWithClient(new TestAwContentsClient());
45 private void startChromiumWithClient(TestAwContentsClient contentsClient) throws Exception {
46 final Context context = getActivity();
47 getInstrumentation().runOnMainSync(new Runnable() {
50 AwBrowserProcess.start(context);
54 mContentsClient = contentsClient;
55 final AwTestContainerView testContainerView =
56 createAwTestContainerViewOnMainSync(mContentsClient);
57 mAwContents = testContainerView.getAwContents();
58 mAwContents.getSettings().setJavaScriptEnabled(true);
62 @Feature({"AndroidWebView"})
63 public void testStartup() throws Throwable {
64 TestWebServer webServer = null;
66 webServer = new TestWebServer(false);
67 String path = "/cookie_test.html";
68 String url = webServer.setResponse(path, CommonResources.ABOUT_HTML, null);
70 AwCookieManager cookieManager = new AwCookieManager();
71 assertNotNull(cookieManager);
73 CookieUtils.clearCookies(this, cookieManager);
74 assertFalse(cookieManager.hasCookies());
76 cookieManager.setAcceptCookie(true);
77 assertTrue(cookieManager.acceptCookie());
79 cookieManager.setCookie(url, "count=41");
82 loadUrlSync(mAwContents, mContentsClient.getOnPageFinishedHelper(), url);
83 executeJavaScriptAndWaitForResult(
86 "var c=document.cookie.split('=');document.cookie=c[0]+'='+(1+(+c[1]));");
88 assertEquals("count=42", cookieManager.getCookie(url));
90 if (webServer != null) webServer.shutdown();
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());
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());
116 // https://code.google.com/p/chromium/issues/detail?id=374203
118 @Feature({"AndroidWebView"})
119 public void testShouldInterceptRequestDeadlock() throws Throwable {
120 String url = "http://www.example.com";
121 TestAwContentsClient contentsClient = new TestAwContentsClient() {
123 public AwWebResourceResponse shouldInterceptRequest(
124 ShouldInterceptRequestParams params) {
125 (new AwCookieManager()).getCookie("www.example.com");
129 startChromiumWithClient(contentsClient);
130 loadUrlSync(mAwContents, contentsClient.getOnPageFinishedHelper(), url);