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; |
12 import org.chromium.android_webview.CookieManager; | 13 import org.chromium.android_webview.CookieManager; |
13 import org.chromium.android_webview.test.util.TestWebServer; | 14 import org.chromium.android_webview.test.util.TestWebServer; |
14 import org.chromium.base.test.util.Feature; | 15 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 mContentViewClient; | 34 private TestAwContentsClient mContentsClient; |
35 private ContentViewCore mContentViewCore; | 35 private AwContents mAwContents; |
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 mContentViewClient = new TestAwContentsClient(); | 42 mContentsClient = new TestAwContentsClient(); |
43 mContentViewCore = | 43 final AwTestContainerView testContainerView = |
44 createAwTestContainerViewOnMainSync(mContentViewClient).getConte
ntViewCore(); | 44 createAwTestContainerViewOnMainSync(mContentsClient); |
45 mContentViewCore.getContentSettings().setJavaScriptEnabled(true); | 45 mAwContents = testContainerView.getAwContents(); |
| 46 mAwContents.getContentViewCore().getContentSettings().setJavaScriptEnabl
ed(true); |
46 assertNotNull(mCookieManager); | 47 assertNotNull(mCookieManager); |
47 } | 48 } |
48 | 49 |
49 @SmallTest | 50 @SmallTest |
50 @Feature({"Android-WebView", "Privacy"}) | 51 @Feature({"Android-WebView", "Privacy"}) |
51 public void testAllowFileSchemeCookies() throws Throwable { | 52 public void testAllowFileSchemeCookies() throws Throwable { |
52 assertFalse(CookieManager.allowFileSchemeCookies()); | 53 assertFalse(CookieManager.allowFileSchemeCookies()); |
53 CookieManager.setAcceptFileSchemeCookies(true); | 54 CookieManager.setAcceptFileSchemeCookies(true); |
54 assertTrue(CookieManager.allowFileSchemeCookies()); | 55 assertTrue(CookieManager.allowFileSchemeCookies()); |
55 CookieManager.setAcceptFileSchemeCookies(false); | 56 CookieManager.setAcceptFileSchemeCookies(false); |
56 assertFalse(CookieManager.allowFileSchemeCookies()); | 57 assertFalse(CookieManager.allowFileSchemeCookies()); |
57 } | 58 } |
58 | 59 |
59 @MediumTest | 60 @MediumTest |
60 @Feature({"Android-WebView", "Privacy"}) | 61 @Feature({"Android-WebView", "Privacy"}) |
61 public void testAcceptCookie() throws Throwable { | 62 public void testAcceptCookie() throws Throwable { |
62 TestWebServer webServer = null; | 63 TestWebServer webServer = null; |
63 try { | 64 try { |
64 webServer = new TestWebServer(false); | 65 webServer = new TestWebServer(false); |
65 String path = "/cookie_test.html"; | 66 String path = "/cookie_test.html"; |
66 String responseStr = | 67 String responseStr = |
67 "<html><head><title>TEST!</title></head><body>HELLO!</body><
/html>"; | 68 "<html><head><title>TEST!</title></head><body>HELLO!</body><
/html>"; |
68 String url = webServer.setResponse(path, responseStr, null); | 69 String url = webServer.setResponse(path, responseStr, null); |
69 | 70 |
70 mCookieManager.setAcceptCookie(false); | 71 mCookieManager.setAcceptCookie(false); |
71 mCookieManager.removeAllCookie(); | 72 mCookieManager.removeAllCookie(); |
72 assertFalse(mCookieManager.acceptCookie()); | 73 assertFalse(mCookieManager.acceptCookie()); |
73 assertFalse(mCookieManager.hasCookies()); | 74 assertFalse(mCookieManager.hasCookies()); |
74 | 75 |
75 loadUrlSync(mContentViewCore, mContentViewClient.getOnPageFinishedHe
lper(), url); | 76 loadUrlSync(mAwContents, mContentsClient.getOnPageFinishedHelper(),
url); |
76 setCookie("test1", "value1"); | 77 setCookie("test1", "value1"); |
77 assertNull(mCookieManager.getCookie(url)); | 78 assertNull(mCookieManager.getCookie(url)); |
78 | 79 |
79 List<Pair<String, String>> responseHeaders = new ArrayList<Pair<Stri
ng, String>>(); | 80 List<Pair<String, String>> responseHeaders = new ArrayList<Pair<Stri
ng, String>>(); |
80 responseHeaders.add( | 81 responseHeaders.add( |
81 Pair.create("Set-Cookie", "header-test1=header-value1; path=
" + path)); | 82 Pair.create("Set-Cookie", "header-test1=header-value1; path=
" + path)); |
82 url = webServer.setResponse(path, responseStr, responseHeaders); | 83 url = webServer.setResponse(path, responseStr, responseHeaders); |
83 loadUrlSync(mContentViewCore, mContentViewClient.getOnPageFinishedHe
lper(), url); | 84 loadUrlSync(mAwContents, mContentsClient.getOnPageFinishedHelper(),
url); |
84 assertNull(mCookieManager.getCookie(url)); | 85 assertNull(mCookieManager.getCookie(url)); |
85 | 86 |
86 mCookieManager.setAcceptCookie(true); | 87 mCookieManager.setAcceptCookie(true); |
87 assertTrue(mCookieManager.acceptCookie()); | 88 assertTrue(mCookieManager.acceptCookie()); |
88 | 89 |
89 url = webServer.setResponse(path, responseStr, null); | 90 url = webServer.setResponse(path, responseStr, null); |
90 loadUrlSync(mContentViewCore, mContentViewClient.getOnPageFinishedHe
lper(), url); | 91 loadUrlSync(mAwContents, mContentsClient.getOnPageFinishedHelper(),
url); |
91 setCookie("test2", "value2"); | 92 setCookie("test2", "value2"); |
92 waitForCookie(url); | 93 waitForCookie(url); |
93 String cookie = mCookieManager.getCookie(url); | 94 String cookie = mCookieManager.getCookie(url); |
94 assertNotNull(cookie); | 95 assertNotNull(cookie); |
95 validateCookies(cookie, "test2"); | 96 validateCookies(cookie, "test2"); |
96 | 97 |
97 responseHeaders = new ArrayList<Pair<String, String>>(); | 98 responseHeaders = new ArrayList<Pair<String, String>>(); |
98 responseHeaders.add( | 99 responseHeaders.add( |
99 Pair.create("Set-Cookie", "header-test2=header-value2 path="
+ path)); | 100 Pair.create("Set-Cookie", "header-test2=header-value2 path="
+ path)); |
100 url = webServer.setResponse(path, responseStr, responseHeaders); | 101 url = webServer.setResponse(path, responseStr, responseHeaders); |
101 loadUrlSync(mContentViewCore, mContentViewClient.getOnPageFinishedHe
lper(), url); | 102 loadUrlSync(mAwContents, mContentsClient.getOnPageFinishedHelper(),
url); |
102 waitForCookie(url); | 103 waitForCookie(url); |
103 cookie = mCookieManager.getCookie(url); | 104 cookie = mCookieManager.getCookie(url); |
104 assertNotNull(cookie); | 105 assertNotNull(cookie); |
105 validateCookies(cookie, "test2", "header-test2"); | 106 validateCookies(cookie, "test2", "header-test2"); |
106 | 107 |
107 // clean up all cookies | 108 // clean up all cookies |
108 mCookieManager.removeAllCookie(); | 109 mCookieManager.removeAllCookie(); |
109 } finally { | 110 } finally { |
110 if (webServer != null) webServer.shutdown(); | 111 if (webServer != null) webServer.shutdown(); |
111 } | 112 } |
112 } | 113 } |
113 | 114 |
114 private void setCookie(final String name, final String value) | 115 private void setCookie(final String name, final String value) |
115 throws Throwable { | 116 throws Throwable { |
116 OnEvaluateJavaScriptResultHelper onEvaluateJavaScriptResultHelper = | 117 OnEvaluateJavaScriptResultHelper onEvaluateJavaScriptResultHelper = |
117 mContentViewClient.getOnEvaluateJavaScriptResultHelper(); | 118 mContentsClient.getOnEvaluateJavaScriptResultHelper(); |
118 int currentCallCount = onEvaluateJavaScriptResultHelper.getCallCount(); | 119 int currentCallCount = onEvaluateJavaScriptResultHelper.getCallCount(); |
119 final AtomicInteger requestId = new AtomicInteger(); | 120 final AtomicInteger requestId = new AtomicInteger(); |
120 runTestOnUiThread(new Runnable() { | 121 runTestOnUiThread(new Runnable() { |
121 @Override | 122 @Override |
122 public void run() { | 123 public void run() { |
123 requestId.set(mContentViewCore.evaluateJavaScript( | 124 requestId.set(mAwContents.getContentViewCore().evaluateJavaScrip
t( |
124 "var expirationDate = new Date();" + | 125 "var expirationDate = new Date();" + |
125 "expirationDate.setDate(expirationDate.getDate() + 5);"
+ | 126 "expirationDate.setDate(expirationDate.getDate() + 5);"
+ |
126 "document.cookie='" + name + "=" + value + | 127 "document.cookie='" + name + "=" + value + |
127 "; expires=' + expirationDate.toUTCString();")); | 128 "; expires=' + expirationDate.toUTCString();")); |
128 } | 129 } |
129 }); | 130 }); |
130 onEvaluateJavaScriptResultHelper.waitForCallback(currentCallCount); | 131 onEvaluateJavaScriptResultHelper.waitForCallback(currentCallCount); |
131 assertEquals("Response ID mismatch when evaluating JavaScript.", | 132 assertEquals("Response ID mismatch when evaluating JavaScript.", |
132 requestId.get(), onEvaluateJavaScriptResultHelper.getId()); | 133 requestId.get(), onEvaluateJavaScriptResultHelper.getId()); |
133 } | 134 } |
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
238 | 239 |
239 mCookieManager.removeAllCookie(); | 240 mCookieManager.removeAllCookie(); |
240 assertTrue(CriteriaHelper.pollForCriteria(new Criteria() { | 241 assertTrue(CriteriaHelper.pollForCriteria(new Criteria() { |
241 @Override | 242 @Override |
242 public boolean isSatisfied() { | 243 public boolean isSatisfied() { |
243 return mCookieManager.getCookie(url) == null; | 244 return mCookieManager.getCookie(url) == null; |
244 } | 245 } |
245 })); | 246 })); |
246 } | 247 } |
247 } | 248 } |
OLD | NEW |