OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 package org.chromium.android_webview.test; | 5 package org.chromium.android_webview.test; |
6 | 6 |
7 import android.test.MoreAsserts; | 7 import android.test.MoreAsserts; |
8 import android.test.suitebuilder.annotation.MediumTest; | 8 import android.test.suitebuilder.annotation.MediumTest; |
9 import android.test.suitebuilder.annotation.SmallTest; | 9 import android.test.suitebuilder.annotation.SmallTest; |
10 import android.util.Pair; | 10 import android.util.Pair; |
11 | 11 |
12 import org.chromium.android_webview.AwContents; | |
13 import org.chromium.android_webview.CookieManager; | 12 import org.chromium.android_webview.CookieManager; |
14 import org.chromium.android_webview.test.util.TestWebServer; | 13 import org.chromium.android_webview.test.util.TestWebServer; |
15 import org.chromium.base.test.util.Feature; | 14 import org.chromium.base.test.util.Feature; |
| 15 import org.chromium.content.browser.ContentViewCore; |
16 import org.chromium.content.browser.test.util.Criteria; | 16 import org.chromium.content.browser.test.util.Criteria; |
17 import org.chromium.content.browser.test.util.CriteriaHelper; | 17 import org.chromium.content.browser.test.util.CriteriaHelper; |
18 import org.chromium.content.browser.test.util.TestCallbackHelperContainer.OnEval
uateJavaScriptResultHelper; | 18 import org.chromium.content.browser.test.util.TestCallbackHelperContainer.OnEval
uateJavaScriptResultHelper; |
19 | 19 |
20 import java.util.ArrayList; | 20 import java.util.ArrayList; |
21 import java.util.Arrays; | 21 import java.util.Arrays; |
22 import java.util.Date; | 22 import java.util.Date; |
23 import java.util.HashSet; | 23 import java.util.HashSet; |
24 import java.util.List; | 24 import java.util.List; |
25 import java.util.Set; | 25 import java.util.Set; |
26 import java.util.concurrent.atomic.AtomicInteger; | 26 import java.util.concurrent.atomic.AtomicInteger; |
27 | 27 |
28 /** | 28 /** |
29 * Tests for the CookieManager. | 29 * Tests for the CookieManager. |
30 */ | 30 */ |
31 public class CookieManagerTest extends AndroidWebViewTestBase { | 31 public class CookieManagerTest extends AndroidWebViewTestBase { |
32 | 32 |
33 private CookieManager mCookieManager; | 33 private CookieManager mCookieManager; |
34 private TestAwContentsClient mContentsClient; | 34 private TestAwContentsClient mContentViewClient; |
35 private AwContents mAwContents; | 35 private ContentViewCore mContentViewCore; |
36 | 36 |
37 @Override | 37 @Override |
38 protected void setUp() throws Exception { | 38 protected void setUp() throws Exception { |
39 super.setUp(); | 39 super.setUp(); |
40 | 40 |
41 mCookieManager = new CookieManager(); | 41 mCookieManager = new CookieManager(); |
42 mContentsClient = new TestAwContentsClient(); | 42 mContentViewClient = new TestAwContentsClient(); |
43 final AwTestContainerView testContainerView = | 43 mContentViewCore = |
44 createAwTestContainerViewOnMainSync(mContentsClient); | 44 createAwTestContainerViewOnMainSync(mContentViewClient).getConte
ntViewCore(); |
45 mAwContents = testContainerView.getAwContents(); | 45 mContentViewCore.getContentSettings().setJavaScriptEnabled(true); |
46 mAwContents.getContentViewCore().getContentSettings().setJavaScriptEnabl
ed(true); | |
47 assertNotNull(mCookieManager); | 46 assertNotNull(mCookieManager); |
48 } | 47 } |
49 | 48 |
50 @SmallTest | 49 @SmallTest |
51 @Feature({"Android-WebView", "Privacy"}) | 50 @Feature({"Android-WebView", "Privacy"}) |
52 public void testAllowFileSchemeCookies() throws Throwable { | 51 public void testAllowFileSchemeCookies() throws Throwable { |
53 assertFalse(CookieManager.allowFileSchemeCookies()); | 52 assertFalse(CookieManager.allowFileSchemeCookies()); |
54 CookieManager.setAcceptFileSchemeCookies(true); | 53 CookieManager.setAcceptFileSchemeCookies(true); |
55 assertTrue(CookieManager.allowFileSchemeCookies()); | 54 assertTrue(CookieManager.allowFileSchemeCookies()); |
56 CookieManager.setAcceptFileSchemeCookies(false); | 55 CookieManager.setAcceptFileSchemeCookies(false); |
57 assertFalse(CookieManager.allowFileSchemeCookies()); | 56 assertFalse(CookieManager.allowFileSchemeCookies()); |
58 } | 57 } |
59 | 58 |
60 @MediumTest | 59 @MediumTest |
61 @Feature({"Android-WebView", "Privacy"}) | 60 @Feature({"Android-WebView", "Privacy"}) |
62 public void testAcceptCookie() throws Throwable { | 61 public void testAcceptCookie() throws Throwable { |
63 TestWebServer webServer = null; | 62 TestWebServer webServer = null; |
64 try { | 63 try { |
65 webServer = new TestWebServer(false); | 64 webServer = new TestWebServer(false); |
66 String path = "/cookie_test.html"; | 65 String path = "/cookie_test.html"; |
67 String responseStr = | 66 String responseStr = |
68 "<html><head><title>TEST!</title></head><body>HELLO!</body><
/html>"; | 67 "<html><head><title>TEST!</title></head><body>HELLO!</body><
/html>"; |
69 String url = webServer.setResponse(path, responseStr, null); | 68 String url = webServer.setResponse(path, responseStr, null); |
70 | 69 |
71 mCookieManager.setAcceptCookie(false); | 70 mCookieManager.setAcceptCookie(false); |
72 mCookieManager.removeAllCookie(); | 71 mCookieManager.removeAllCookie(); |
73 assertFalse(mCookieManager.acceptCookie()); | 72 assertFalse(mCookieManager.acceptCookie()); |
74 assertFalse(mCookieManager.hasCookies()); | 73 assertFalse(mCookieManager.hasCookies()); |
75 | 74 |
76 loadUrlSync(mAwContents, mContentsClient.getOnPageFinishedHelper(),
url); | 75 loadUrlSync(mContentViewCore, mContentViewClient.getOnPageFinishedHe
lper(), url); |
77 setCookie("test1", "value1"); | 76 setCookie("test1", "value1"); |
78 assertNull(mCookieManager.getCookie(url)); | 77 assertNull(mCookieManager.getCookie(url)); |
79 | 78 |
80 List<Pair<String, String>> responseHeaders = new ArrayList<Pair<Stri
ng, String>>(); | 79 List<Pair<String, String>> responseHeaders = new ArrayList<Pair<Stri
ng, String>>(); |
81 responseHeaders.add( | 80 responseHeaders.add( |
82 Pair.create("Set-Cookie", "header-test1=header-value1; path=
" + path)); | 81 Pair.create("Set-Cookie", "header-test1=header-value1; path=
" + path)); |
83 url = webServer.setResponse(path, responseStr, responseHeaders); | 82 url = webServer.setResponse(path, responseStr, responseHeaders); |
84 loadUrlSync(mAwContents, mContentsClient.getOnPageFinishedHelper(),
url); | 83 loadUrlSync(mContentViewCore, mContentViewClient.getOnPageFinishedHe
lper(), url); |
85 assertNull(mCookieManager.getCookie(url)); | 84 assertNull(mCookieManager.getCookie(url)); |
86 | 85 |
87 mCookieManager.setAcceptCookie(true); | 86 mCookieManager.setAcceptCookie(true); |
88 assertTrue(mCookieManager.acceptCookie()); | 87 assertTrue(mCookieManager.acceptCookie()); |
89 | 88 |
90 url = webServer.setResponse(path, responseStr, null); | 89 url = webServer.setResponse(path, responseStr, null); |
91 loadUrlSync(mAwContents, mContentsClient.getOnPageFinishedHelper(),
url); | 90 loadUrlSync(mContentViewCore, mContentViewClient.getOnPageFinishedHe
lper(), url); |
92 setCookie("test2", "value2"); | 91 setCookie("test2", "value2"); |
93 waitForCookie(url); | 92 waitForCookie(url); |
94 String cookie = mCookieManager.getCookie(url); | 93 String cookie = mCookieManager.getCookie(url); |
95 assertNotNull(cookie); | 94 assertNotNull(cookie); |
96 validateCookies(cookie, "test2"); | 95 validateCookies(cookie, "test2"); |
97 | 96 |
98 responseHeaders = new ArrayList<Pair<String, String>>(); | 97 responseHeaders = new ArrayList<Pair<String, String>>(); |
99 responseHeaders.add( | 98 responseHeaders.add( |
100 Pair.create("Set-Cookie", "header-test2=header-value2 path="
+ path)); | 99 Pair.create("Set-Cookie", "header-test2=header-value2 path="
+ path)); |
101 url = webServer.setResponse(path, responseStr, responseHeaders); | 100 url = webServer.setResponse(path, responseStr, responseHeaders); |
102 loadUrlSync(mAwContents, mContentsClient.getOnPageFinishedHelper(),
url); | 101 loadUrlSync(mContentViewCore, mContentViewClient.getOnPageFinishedHe
lper(), url); |
103 waitForCookie(url); | 102 waitForCookie(url); |
104 cookie = mCookieManager.getCookie(url); | 103 cookie = mCookieManager.getCookie(url); |
105 assertNotNull(cookie); | 104 assertNotNull(cookie); |
106 validateCookies(cookie, "test2", "header-test2"); | 105 validateCookies(cookie, "test2", "header-test2"); |
107 | 106 |
108 // clean up all cookies | 107 // clean up all cookies |
109 mCookieManager.removeAllCookie(); | 108 mCookieManager.removeAllCookie(); |
110 } finally { | 109 } finally { |
111 if (webServer != null) webServer.shutdown(); | 110 if (webServer != null) webServer.shutdown(); |
112 } | 111 } |
113 } | 112 } |
114 | 113 |
115 private void setCookie(final String name, final String value) | 114 private void setCookie(final String name, final String value) |
116 throws Throwable { | 115 throws Throwable { |
117 OnEvaluateJavaScriptResultHelper onEvaluateJavaScriptResultHelper = | 116 OnEvaluateJavaScriptResultHelper onEvaluateJavaScriptResultHelper = |
118 mContentsClient.getOnEvaluateJavaScriptResultHelper(); | 117 mContentViewClient.getOnEvaluateJavaScriptResultHelper(); |
119 int currentCallCount = onEvaluateJavaScriptResultHelper.getCallCount(); | 118 int currentCallCount = onEvaluateJavaScriptResultHelper.getCallCount(); |
120 final AtomicInteger requestId = new AtomicInteger(); | 119 final AtomicInteger requestId = new AtomicInteger(); |
121 runTestOnUiThread(new Runnable() { | 120 runTestOnUiThread(new Runnable() { |
122 @Override | 121 @Override |
123 public void run() { | 122 public void run() { |
124 requestId.set(mAwContents.getContentViewCore().evaluateJavaScrip
t( | 123 requestId.set(mContentViewCore.evaluateJavaScript( |
125 "var expirationDate = new Date();" + | 124 "var expirationDate = new Date();" + |
126 "expirationDate.setDate(expirationDate.getDate() + 5);"
+ | 125 "expirationDate.setDate(expirationDate.getDate() + 5);"
+ |
127 "document.cookie='" + name + "=" + value + | 126 "document.cookie='" + name + "=" + value + |
128 "; expires=' + expirationDate.toUTCString();")); | 127 "; expires=' + expirationDate.toUTCString();")); |
129 } | 128 } |
130 }); | 129 }); |
131 onEvaluateJavaScriptResultHelper.waitForCallback(currentCallCount); | 130 onEvaluateJavaScriptResultHelper.waitForCallback(currentCallCount); |
132 assertEquals("Response ID mismatch when evaluating JavaScript.", | 131 assertEquals("Response ID mismatch when evaluating JavaScript.", |
133 requestId.get(), onEvaluateJavaScriptResultHelper.getId()); | 132 requestId.get(), onEvaluateJavaScriptResultHelper.getId()); |
134 } | 133 } |
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
239 | 238 |
240 mCookieManager.removeAllCookie(); | 239 mCookieManager.removeAllCookie(); |
241 assertTrue(CriteriaHelper.pollForCriteria(new Criteria() { | 240 assertTrue(CriteriaHelper.pollForCriteria(new Criteria() { |
242 @Override | 241 @Override |
243 public boolean isSatisfied() { | 242 public boolean isSatisfied() { |
244 return mCookieManager.getCookie(url) == null; | 243 return mCookieManager.getCookie(url) == null; |
245 } | 244 } |
246 })); | 245 })); |
247 } | 246 } |
248 } | 247 } |
OLD | NEW |