| 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 |