diff options
Diffstat (limited to 'android_webview/javatests/src/org')
8 files changed, 270 insertions, 101 deletions
diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/AwContentsClientGetDefaultVideoPosterTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/AwContentsClientGetDefaultVideoPosterTest.java index 8891fb9822..fea72ffa93 100644 --- a/android_webview/javatests/src/org/chromium/android_webview/test/AwContentsClientGetDefaultVideoPosterTest.java +++ b/android_webview/javatests/src/org/chromium/android_webview/test/AwContentsClientGetDefaultVideoPosterTest.java @@ -10,8 +10,8 @@ import android.graphics.BitmapFactory; import android.test.suitebuilder.annotation.SmallTest; import android.util.Log; +import org.chromium.android_webview.AwWebResourceResponse; import org.chromium.android_webview.DefaultVideoPosterRequestHandler; -import org.chromium.android_webview.InterceptedRequestData; import org.chromium.base.test.util.Feature; import org.chromium.content.browser.test.util.CallbackHelper; @@ -77,7 +77,7 @@ public class AwContentsClientGetDefaultVideoPosterTest extends AwTestBase { new DefaultVideoPosterClient(getInstrumentation().getTargetContext()); DefaultVideoPosterRequestHandler handler = new DefaultVideoPosterRequestHandler(contentsClient); - InterceptedRequestData requestData = + AwWebResourceResponse requestData = handler.shouldInterceptRequest(handler.getDefaultVideoPosterURL()); assertTrue(requestData.getMimeType().equals("image/png")); Bitmap bitmap = BitmapFactory.decodeStream(requestData.getData()); @@ -94,7 +94,7 @@ public class AwContentsClientGetDefaultVideoPosterTest extends AwTestBase { NullContentsClient contentsClient = new NullContentsClient(); DefaultVideoPosterRequestHandler handler = new DefaultVideoPosterRequestHandler(contentsClient); - InterceptedRequestData requestData = + AwWebResourceResponse requestData = handler.shouldInterceptRequest(handler.getDefaultVideoPosterURL()); assertTrue(requestData.getMimeType().equals("image/png")); InputStream in = requestData.getData(); diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/AwContentsClientShouldInterceptRequestTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/AwContentsClientShouldInterceptRequestTest.java index fff12d2898..e1bcb59fbf 100644 --- a/android_webview/javatests/src/org/chromium/android_webview/test/AwContentsClientShouldInterceptRequestTest.java +++ b/android_webview/javatests/src/org/chromium/android_webview/test/AwContentsClientShouldInterceptRequestTest.java @@ -8,8 +8,10 @@ import android.test.suitebuilder.annotation.SmallTest; import android.util.Pair; import org.chromium.android_webview.AwContents; -import org.chromium.android_webview.InterceptedRequestData; +import org.chromium.android_webview.AwContentsClient.ShouldInterceptRequestParams; +import org.chromium.android_webview.AwWebResourceResponse; import org.chromium.android_webview.test.util.CommonResources; +import org.chromium.android_webview.test.util.JSUtils; import org.chromium.base.test.util.Feature; import org.chromium.base.test.util.TestFileUtil; import org.chromium.content.browser.test.util.CallbackHelper; @@ -20,7 +22,9 @@ import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.concurrent.Callable; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.CountDownLatch; @@ -35,27 +39,35 @@ public class AwContentsClientShouldInterceptRequestTest extends AwTestBase { public static class ShouldInterceptRequestHelper extends CallbackHelper { private List<String> mShouldInterceptRequestUrls = new ArrayList<String>(); - private ConcurrentHashMap<String, InterceptedRequestData> mReturnValuesByUrls - = new ConcurrentHashMap<String, InterceptedRequestData>(); + private ConcurrentHashMap<String, AwWebResourceResponse> mReturnValuesByUrls + = new ConcurrentHashMap<String, AwWebResourceResponse>(); + private ConcurrentHashMap<String, ShouldInterceptRequestParams> mParamsByUrls + = new ConcurrentHashMap<String, ShouldInterceptRequestParams>(); // This is read from the IO thread, so needs to be marked volatile. - private volatile InterceptedRequestData mShouldInterceptRequestReturnValue = null; - void setReturnValue(InterceptedRequestData value) { + private volatile AwWebResourceResponse mShouldInterceptRequestReturnValue = null; + void setReturnValue(AwWebResourceResponse value) { mShouldInterceptRequestReturnValue = value; } - void setReturnValueForUrl(String url, InterceptedRequestData value) { + void setReturnValueForUrl(String url, AwWebResourceResponse value) { mReturnValuesByUrls.put(url, value); } public List<String> getUrls() { assert getCallCount() > 0; return mShouldInterceptRequestUrls; } - public InterceptedRequestData getReturnValue(String url) { - InterceptedRequestData value = mReturnValuesByUrls.get(url); + public AwWebResourceResponse getReturnValue(String url) { + AwWebResourceResponse value = mReturnValuesByUrls.get(url); if (value != null) return value; return mShouldInterceptRequestReturnValue; } - public void notifyCalled(String url) { - mShouldInterceptRequestUrls.add(url); + public ShouldInterceptRequestParams getParamsForUrl(String url) { + assert getCallCount() > 0; + assert mParamsByUrls.containsKey(url); + return mParamsByUrls.get(url); + } + public void notifyCalled(ShouldInterceptRequestParams params) { + mShouldInterceptRequestUrls.add(params.url); + mParamsByUrls.put(params.url, params); notifyCalled(); } } @@ -75,9 +87,10 @@ public class AwContentsClientShouldInterceptRequestTest extends AwTestBase { } @Override - public InterceptedRequestData shouldInterceptRequest(String url) { - InterceptedRequestData returnValue = mShouldInterceptRequestHelper.getReturnValue(url); - mShouldInterceptRequestHelper.notifyCalled(url); + public AwWebResourceResponse shouldInterceptRequest(ShouldInterceptRequestParams params) { + AwWebResourceResponse returnValue = + mShouldInterceptRequestHelper.getReturnValue(params.url); + mShouldInterceptRequestHelper.notifyCalled(params); return returnValue; } @@ -104,6 +117,9 @@ public class AwContentsClientShouldInterceptRequestTest extends AwTestBase { } } + final int teapotStatusCode = 418; + final String teapotResponsePhrase = "I'm a teapot"; + private String addPageToTestServer(TestWebServer webServer, String httpPath, String html) { List<Pair<String, String>> headers = new ArrayList<Pair<String, String>>(); headers.add(Pair.create("Content-Type", "text/html")); @@ -116,11 +132,11 @@ public class AwContentsClientShouldInterceptRequestTest extends AwTestBase { CommonResources.ABOUT_HTML); } - private InterceptedRequestData stringToInterceptedRequestData(String input) throws Throwable { + private AwWebResourceResponse stringToAwWebResourceResponse(String input) throws Throwable { final String mimeType = "text/html"; final String encoding = "UTF-8"; - return new InterceptedRequestData( + return new AwWebResourceResponse( mimeType, encoding, new ByteArrayInputStream(input.getBytes(encoding))); } @@ -150,14 +166,13 @@ public class AwContentsClientShouldInterceptRequestTest extends AwTestBase { @SmallTest @Feature({"AndroidWebView"}) - public void testCalledWithCorrectUrl() throws Throwable { + public void testCalledWithCorrectUrlParam() throws Throwable { final String aboutPageUrl = addAboutPageToTestServer(mWebServer); - int callCount = mShouldInterceptRequestHelper.getCallCount(); int onPageFinishedCallCount = mContentsClient.getOnPageFinishedHelper().getCallCount(); + int callCount = mShouldInterceptRequestHelper.getCallCount(); loadUrlAsync(mAwContents, aboutPageUrl); - mShouldInterceptRequestHelper.waitForCallback(callCount); assertEquals(1, mShouldInterceptRequestHelper.getUrls().size()); assertEquals(aboutPageUrl, @@ -169,6 +184,95 @@ public class AwContentsClientShouldInterceptRequestTest extends AwTestBase { @SmallTest @Feature({"AndroidWebView"}) + public void testCalledWithCorrectIsMainFrameParam() throws Throwable { + final String subframeUrl = addAboutPageToTestServer(mWebServer); + final String pageWithIframeUrl = addPageToTestServer(mWebServer, "/page_with_iframe.html", + CommonResources.makeHtmlPageFrom("", + "<iframe src=\"" + subframeUrl + "\"/>")); + + int callCount = mShouldInterceptRequestHelper.getCallCount(); + loadUrlAsync(mAwContents, pageWithIframeUrl); + mShouldInterceptRequestHelper.waitForCallback(callCount, 2); + assertEquals(2, mShouldInterceptRequestHelper.getUrls().size()); + assertEquals(false, + mShouldInterceptRequestHelper.getParamsForUrl(subframeUrl).isMainFrame); + assertEquals(true, + mShouldInterceptRequestHelper.getParamsForUrl(pageWithIframeUrl).isMainFrame); + } + + @SmallTest + @Feature({"AndroidWebView"}) + public void testCalledWithCorrectMethodParam() throws Throwable { + final String pageToPostToUrl = addAboutPageToTestServer(mWebServer); + final String pageWithFormUrl = addPageToTestServer(mWebServer, "/page_with_form.html", + CommonResources.makeHtmlPageWithSimplePostFormTo(pageToPostToUrl)); + enableJavaScriptOnUiThread(mAwContents); + + int callCount = mShouldInterceptRequestHelper.getCallCount(); + loadUrlAsync(mAwContents, pageWithFormUrl); + mShouldInterceptRequestHelper.waitForCallback(callCount); + assertEquals("GET", + mShouldInterceptRequestHelper.getParamsForUrl(pageWithFormUrl).method); + + callCount = mShouldInterceptRequestHelper.getCallCount(); + JSUtils.clickOnLinkUsingJs(this, mAwContents, + mContentsClient.getOnEvaluateJavaScriptResultHelper(), "link"); + mShouldInterceptRequestHelper.waitForCallback(callCount); + assertEquals("POST", + mShouldInterceptRequestHelper.getParamsForUrl(pageToPostToUrl).method); + } + + @SmallTest + @Feature({"AndroidWebView"}) + public void testCalledWithCorrectHasUserGestureParam() throws Throwable { + final String aboutPageUrl = addAboutPageToTestServer(mWebServer); + final String pageWithLinkUrl = addPageToTestServer(mWebServer, "/page_with_link.html", + CommonResources.makeHtmlPageWithSimpleLinkTo(aboutPageUrl)); + enableJavaScriptOnUiThread(mAwContents); + + int callCount = mShouldInterceptRequestHelper.getCallCount(); + loadUrlAsync(mAwContents, pageWithLinkUrl); + mShouldInterceptRequestHelper.waitForCallback(callCount); + assertEquals(false, + mShouldInterceptRequestHelper.getParamsForUrl(pageWithLinkUrl).hasUserGesture); + + callCount = mShouldInterceptRequestHelper.getCallCount(); + JSUtils.clickOnLinkUsingJs(this, mAwContents, + mContentsClient.getOnEvaluateJavaScriptResultHelper(), "link"); + mShouldInterceptRequestHelper.waitForCallback(callCount); + assertEquals(true, + mShouldInterceptRequestHelper.getParamsForUrl(aboutPageUrl).hasUserGesture); + } + + @SmallTest + @Feature({"AndroidWebView"}) + public void testCalledWithCorrectHeadersParam() throws Throwable { + final String headerName = "X-Test-Header-Name"; + final String headerValue = "TestHeaderValue"; + final String syncGetUrl = addPageToTestServer(mWebServer, "/intercept_me", + CommonResources.ABOUT_HTML); + final String mainPageUrl = addPageToTestServer(mWebServer, "/main", + CommonResources.makeHtmlPageFrom("", + "<script>" + + " var xhr = new XMLHttpRequest();" + + " xhr.open('GET', '" + syncGetUrl + "', false);" + + " xhr.setRequestHeader('" + headerName + "', '" + headerValue + "'); " + + " xhr.send(null);" + + "</script>")); + enableJavaScriptOnUiThread(mAwContents); + + int callCount = mShouldInterceptRequestHelper.getCallCount(); + loadUrlAsync(mAwContents, mainPageUrl); + mShouldInterceptRequestHelper.waitForCallback(callCount, 2); + + Map<String, String> headers = + mShouldInterceptRequestHelper.getParamsForUrl(syncGetUrl).requestHeaders; + assertTrue(headers.containsKey(headerName)); + assertEquals(headerValue, headers.get(headerName)); + } + + @SmallTest + @Feature({"AndroidWebView"}) public void testOnLoadResourceCalledWithCorrectUrl() throws Throwable { final String aboutPageUrl = addAboutPageToTestServer(mWebServer); final TestAwContentsClient.OnLoadResourceHelper onLoadResourceHelper = @@ -188,19 +292,19 @@ public class AwContentsClientShouldInterceptRequestTest extends AwTestBase { final String aboutPageUrl = addAboutPageToTestServer(mWebServer); mShouldInterceptRequestHelper.setReturnValue( - new InterceptedRequestData("text/html", "UTF-8", null)); + new AwWebResourceResponse("text/html", "UTF-8", null)); int callCount = mShouldInterceptRequestHelper.getCallCount(); loadUrlAsync(mAwContents, aboutPageUrl); mShouldInterceptRequestHelper.waitForCallback(callCount); mShouldInterceptRequestHelper.setReturnValue( - new InterceptedRequestData(null, null, new ByteArrayInputStream(new byte[0]))); + new AwWebResourceResponse(null, null, new ByteArrayInputStream(new byte[0]))); callCount = mShouldInterceptRequestHelper.getCallCount(); loadUrlAsync(mAwContents, aboutPageUrl); mShouldInterceptRequestHelper.waitForCallback(callCount); mShouldInterceptRequestHelper.setReturnValue( - new InterceptedRequestData(null, null, null)); + new AwWebResourceResponse(null, null, null)); callCount = mShouldInterceptRequestHelper.getCallCount(); loadUrlAsync(mAwContents, aboutPageUrl); mShouldInterceptRequestHelper.waitForCallback(callCount); @@ -241,7 +345,7 @@ public class AwContentsClientShouldInterceptRequestTest extends AwTestBase { final String aboutPageUrl = addAboutPageToTestServer(mWebServer); mShouldInterceptRequestHelper.setReturnValue( - new InterceptedRequestData("text/html", "UTF-8", new EmptyInputStream())); + new AwWebResourceResponse("text/html", "UTF-8", new EmptyInputStream())); int shouldInterceptRequestCallCount = mShouldInterceptRequestHelper.getCallCount(); int onPageFinishedCallCount = mContentsClient.getOnPageFinishedHelper().getCallCount(); @@ -251,11 +355,11 @@ public class AwContentsClientShouldInterceptRequestTest extends AwTestBase { mContentsClient.getOnPageFinishedHelper().waitForCallback(onPageFinishedCallCount); } - private static class SlowInterceptedRequestData extends InterceptedRequestData { + private static class SlowAwWebResourceResponse extends AwWebResourceResponse { private CallbackHelper mReadStartedCallbackHelper = new CallbackHelper(); private CountDownLatch mLatch = new CountDownLatch(1); - public SlowInterceptedRequestData(String mimeType, String encoding, InputStream data) { + public SlowAwWebResourceResponse(String mimeType, String encoding, InputStream data) { super(mimeType, encoding, data); } @@ -285,14 +389,14 @@ public class AwContentsClientShouldInterceptRequestTest extends AwTestBase { final String aboutPageUrl = addAboutPageToTestServer(mWebServer); final String aboutPageData = makePageWithTitle("some title"); final String encoding = "UTF-8"; - final SlowInterceptedRequestData slowInterceptedRequestData = - new SlowInterceptedRequestData("text/html", encoding, + final SlowAwWebResourceResponse slowAwWebResourceResponse = + new SlowAwWebResourceResponse("text/html", encoding, new ByteArrayInputStream(aboutPageData.getBytes(encoding))); - mShouldInterceptRequestHelper.setReturnValue(slowInterceptedRequestData); - int callCount = slowInterceptedRequestData.getReadStartedCallbackHelper().getCallCount(); + mShouldInterceptRequestHelper.setReturnValue(slowAwWebResourceResponse); + int callCount = slowAwWebResourceResponse.getReadStartedCallbackHelper().getCallCount(); loadUrlAsync(mAwContents, aboutPageUrl); - slowInterceptedRequestData.getReadStartedCallbackHelper().waitForCallback(callCount); + slowAwWebResourceResponse.getReadStartedCallbackHelper().waitForCallback(callCount); // Now the AwContents is "stuck" waiting for the SlowInputStream to finish reading so we // delete it to make sure that the dangling 'read' task doesn't cause a crash. Unfortunately @@ -312,12 +416,12 @@ public class AwContentsClientShouldInterceptRequestTest extends AwTestBase { } }); - slowInterceptedRequestData.unblockReads(); + slowAwWebResourceResponse.unblockReads(); } @SmallTest @Feature({"AndroidWebView"}) - public void testHttpStatusField() throws Throwable { + public void testHttpStatusCodeAndText() throws Throwable { final String syncGetUrl = mWebServer.getResponseUrl("/intercept_me"); final String syncGetJs = "(function() {" + @@ -325,7 +429,8 @@ public class AwContentsClientShouldInterceptRequestTest extends AwTestBase { " xhr.open('GET', '" + syncGetUrl + "', false);" + " xhr.send(null);" + " console.info('xhr.status = ' + xhr.status);" + - " return xhr.status;" + + " console.info('xhr.statusText = ' + xhr.statusText);" + + " return '[' + xhr.status + '][' + xhr.statusText + ']';" + "})();"; enableJavaScriptOnUiThread(mAwContents); @@ -333,32 +438,47 @@ public class AwContentsClientShouldInterceptRequestTest extends AwTestBase { loadUrlSync(mAwContents, mContentsClient.getOnPageFinishedHelper(), aboutPageUrl); mShouldInterceptRequestHelper.setReturnValue( - new InterceptedRequestData("text/html", "UTF-8", null)); - assertEquals("404", + new AwWebResourceResponse("text/html", "UTF-8", null)); + assertEquals("\"[404][Not Found]\"", executeJavaScriptAndWaitForResult(mAwContents, mContentsClient, syncGetJs)); mShouldInterceptRequestHelper.setReturnValue( - new InterceptedRequestData("text/html", "UTF-8", new EmptyInputStream())); - assertEquals("200", + new AwWebResourceResponse("text/html", "UTF-8", new EmptyInputStream())); + assertEquals("\"[200][OK]\"", + executeJavaScriptAndWaitForResult(mAwContents, mContentsClient, syncGetJs)); + + mShouldInterceptRequestHelper.setReturnValue( + new AwWebResourceResponse("text/html", "UTF-8", new EmptyInputStream(), + teapotStatusCode, teapotResponsePhrase, new HashMap<String, String>())); + assertEquals("\"[" + teapotStatusCode + "][" + teapotResponsePhrase + "]\"", executeJavaScriptAndWaitForResult(mAwContents, mContentsClient, syncGetJs)); } - @SmallTest - @Feature({"AndroidWebView"}) - public void testHttpResponseClientHeader() throws Throwable { - final String clientResponseHeaderName = "Client-Via"; - // JSON stringification applied by executeJavaScriptAndWaitForResult adds quotes - // around returned strings. - final String clientResponseHeaderValue = "\"shouldInterceptRequest\""; - final String syncGetUrl = mWebServer.getResponseUrl("/intercept_me"); + private String getHeaderValue(AwContents awContents, TestAwContentsClient contentsClient, + String url, String headerName) throws Exception { final String syncGetJs = "(function() {" + " var xhr = new XMLHttpRequest();" + - " xhr.open('GET', '" + syncGetUrl + "', false);" + + " xhr.open('GET', '" + url + "', false);" + " xhr.send(null);" + " console.info(xhr.getAllResponseHeaders());" + - " return xhr.getResponseHeader('" + clientResponseHeaderName + "');" + + " return xhr.getResponseHeader('" + headerName + "');" + "})();"; + String header = executeJavaScriptAndWaitForResult(awContents, contentsClient, syncGetJs); + // JSON stringification applied by executeJavaScriptAndWaitForResult adds quotes + // around returned strings. + assertTrue(header.length() > 2); + assertEquals('"', header.charAt(0)); + assertEquals('"', header.charAt(header.length() - 1)); + return header.substring(1, header.length() - 1); + } + + @SmallTest + @Feature({"AndroidWebView"}) + public void testHttpResponseClientViaHeader() throws Throwable { + final String clientResponseHeaderName = "Client-Via"; + final String clientResponseHeaderValue = "shouldInterceptRequest"; + final String syncGetUrl = mWebServer.getResponseUrl("/intercept_me"); enableJavaScriptOnUiThread(mAwContents); final String aboutPageUrl = addAboutPageToTestServer(mWebServer); @@ -367,15 +487,34 @@ public class AwContentsClientShouldInterceptRequestTest extends AwTestBase { // The response header is set regardless of whether the embedder has provided a // valid resource stream. mShouldInterceptRequestHelper.setReturnValue( - new InterceptedRequestData("text/html", "UTF-8", null)); + new AwWebResourceResponse("text/html", "UTF-8", null)); assertEquals(clientResponseHeaderValue, - executeJavaScriptAndWaitForResult(mAwContents, mContentsClient, syncGetJs)); + getHeaderValue(mAwContents, mContentsClient, syncGetUrl, clientResponseHeaderName)); mShouldInterceptRequestHelper.setReturnValue( - new InterceptedRequestData("text/html", "UTF-8", new EmptyInputStream())); + new AwWebResourceResponse("text/html", "UTF-8", new EmptyInputStream())); assertEquals(clientResponseHeaderValue, - executeJavaScriptAndWaitForResult(mAwContents, mContentsClient, syncGetJs)); + getHeaderValue(mAwContents, mContentsClient, syncGetUrl, clientResponseHeaderName)); + } + @SmallTest + @Feature({"AndroidWebView"}) + public void testHttpResponseHeader() throws Throwable { + final String clientResponseHeaderName = "X-Test-Header-Name"; + final String clientResponseHeaderValue = "TestHeaderValue"; + final String syncGetUrl = mWebServer.getResponseUrl("/intercept_me"); + final Map<String, String> headers = new HashMap<String, String>(); + headers.put(clientResponseHeaderName, clientResponseHeaderValue); + enableJavaScriptOnUiThread(mAwContents); + + final String aboutPageUrl = addAboutPageToTestServer(mWebServer); + loadUrlSync(mAwContents, mContentsClient.getOnPageFinishedHelper(), aboutPageUrl); + + mShouldInterceptRequestHelper.setReturnValue( + new AwWebResourceResponse("text/html", "UTF-8", null, 0, null, headers)); + assertEquals(clientResponseHeaderValue, + getHeaderValue(mAwContents, mContentsClient, syncGetUrl, clientResponseHeaderName)); + } private String makePageWithTitle(String title) { return CommonResources.makeHtmlPageFrom("<title>" + title + "</title>", @@ -389,7 +528,7 @@ public class AwContentsClientShouldInterceptRequestTest extends AwTestBase { final String expectedPage = makePageWithTitle(expectedTitle); mShouldInterceptRequestHelper.setReturnValue( - stringToInterceptedRequestData(expectedPage)); + stringToAwWebResourceResponse(expectedPage)); final String aboutPageUrl = addAboutPageToTestServer(mWebServer); @@ -403,7 +542,7 @@ public class AwContentsClientShouldInterceptRequestTest extends AwTestBase { @Feature({"AndroidWebView"}) public void testDoesNotChangeReportedUrl() throws Throwable { mShouldInterceptRequestHelper.setReturnValue( - stringToInterceptedRequestData(makePageWithTitle("some title"))); + stringToAwWebResourceResponse(makePageWithTitle("some title"))); final String aboutPageUrl = addAboutPageToTestServer(mWebServer); @@ -420,7 +559,7 @@ public class AwContentsClientShouldInterceptRequestTest extends AwTestBase { mContentsClient.getOnReceivedErrorHelper(); mShouldInterceptRequestHelper.setReturnValue( - new InterceptedRequestData("text/html", "UTF-8", null)); + new AwWebResourceResponse("text/html", "UTF-8", null)); final String aboutPageUrl = addAboutPageToTestServer(mWebServer); final int callCount = onReceivedErrorHelper.getCallCount(); @@ -451,7 +590,7 @@ public class AwContentsClientShouldInterceptRequestTest extends AwTestBase { @SmallTest @Feature({"AndroidWebView"}) public void testOnReceivedErrorCallback() throws Throwable { - mShouldInterceptRequestHelper.setReturnValue(new InterceptedRequestData(null, null, null)); + mShouldInterceptRequestHelper.setReturnValue(new AwWebResourceResponse(null, null, null)); OnReceivedErrorHelper onReceivedErrorHelper = mContentsClient.getOnReceivedErrorHelper(); int onReceivedErrorHelperCallCount = onReceivedErrorHelper.getCallCount(); loadUrlSync(mAwContents, mContentsClient.getOnPageFinishedHelper(), "foo://bar"); @@ -468,7 +607,7 @@ public class AwContentsClientShouldInterceptRequestTest extends AwTestBase { addPageToTestServer(mWebServer, "/page_with_image.html", CommonResources.getOnImageLoadedHtml(CommonResources.FAVICON_FILENAME)); mShouldInterceptRequestHelper.setReturnValueForUrl( - imageUrl, new InterceptedRequestData(null, null, null)); + imageUrl, new AwWebResourceResponse(null, null, null)); OnReceivedErrorHelper onReceivedErrorHelper = mContentsClient.getOnReceivedErrorHelper(); int onReceivedErrorHelperCallCount = onReceivedErrorHelper.getCallCount(); loadUrlSync(mAwContents, mContentsClient.getOnPageFinishedHelper(), pageWithImage); @@ -479,12 +618,12 @@ public class AwContentsClientShouldInterceptRequestTest extends AwTestBase { @Feature({"AndroidWebView"}) public void testCalledForIframe() throws Throwable { final String aboutPageUrl = addAboutPageToTestServer(mWebServer); - final String pageWithIframe = addPageToTestServer(mWebServer, "/page_with_iframe.html", + final String pageWithIframeUrl = addPageToTestServer(mWebServer, "/page_with_iframe.html", CommonResources.makeHtmlPageFrom("", "<iframe src=\"" + aboutPageUrl + "\"/>")); int callCount = mShouldInterceptRequestHelper.getCallCount(); - loadUrlSync(mAwContents, mContentsClient.getOnPageFinishedHelper(), pageWithIframe); + loadUrlSync(mAwContents, mContentsClient.getOnPageFinishedHelper(), pageWithIframeUrl); mShouldInterceptRequestHelper.waitForCallback(callCount, 2); assertEquals(2, mShouldInterceptRequestHelper.getUrls().size()); assertEquals(aboutPageUrl, mShouldInterceptRequestHelper.getUrls().get(1)); diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/AwContentsClientShouldOverrideUrlLoadingTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/AwContentsClientShouldOverrideUrlLoadingTest.java index 5ccc6ebb3d..8656e4266f 100644 --- a/android_webview/javatests/src/org/chromium/android_webview/test/AwContentsClientShouldOverrideUrlLoadingTest.java +++ b/android_webview/javatests/src/org/chromium/android_webview/test/AwContentsClientShouldOverrideUrlLoadingTest.java @@ -64,15 +64,12 @@ public class AwContentsClientShouldOverrideUrlLoadingTest extends AwTestBase { }); } - private String makeHtmlPageFrom(String headers, String body) { - return CommonResources.makeHtmlPageFrom("<title>" + TITLE + "</title> " + headers, body); + private String getTestPageCommonHeaders() { + return "<title>" + TITLE + "</title> "; } - private String getHtmlForPageWithSimpleLinkTo(String destination) { - return makeHtmlPageFrom("", - "<a href=\"" + destination + "\" id=\"link\">" + - "<img class=\"big\" />" + - "</a>"); + private String makeHtmlPageFrom(String headers, String body) { + return CommonResources.makeHtmlPageFrom(getTestPageCommonHeaders() + headers, body); } private String getHtmlForPageWithJsAssignLinkTo(String url) { @@ -104,13 +101,6 @@ public class AwContentsClientShouldOverrideUrlLoadingTest extends AwTestBase { method, timeout)); } - private String getHtmlForPageWithSimplePostFormTo(String destination) { - return makeHtmlPageFrom("", - "<form action=\"" + destination + "\" method=\"post\">" + - "<input type=\"submit\" value=\"post\" id=\"link\">" + - "</form>"); - } - private String addPageToTestServer(TestWebServer webServer, String httpPath, String html) { List<Pair<String, String>> headers = new ArrayList<Pair<String, String>>(); headers.add(Pair.create("Content-Type", "text/html")); @@ -134,7 +124,7 @@ public class AwContentsClientShouldOverrideUrlLoadingTest extends AwTestBase { contentsClient.getShouldOverrideUrlLoadingHelper(); loadDataSync(awContents, contentsClient.getOnPageFinishedHelper(), - getHtmlForPageWithSimpleLinkTo(DATA_URL), "text/html", false); + CommonResources.makeHtmlPageWithSimpleLinkTo(DATA_URL), "text/html", false); assertEquals(0, shouldOverrideUrlLoadingHelper.getCallCount()); } @@ -217,7 +207,8 @@ public class AwContentsClientShouldOverrideUrlLoadingTest extends AwTestBase { setShouldOverrideUrlLoadingReturnValueOnUiThread(shouldOverrideUrlLoadingHelper, true); loadDataSync(awContents, contentsClient.getOnPageFinishedHelper(), - getHtmlForPageWithSimpleLinkTo(DATA_URL), "text/html", false); + CommonResources.makeHtmlPageWithSimpleLinkTo(getTestPageCommonHeaders(), + DATA_URL), "text/html", false); assertEquals(TITLE, getTitleOnUiThread(awContents)); } @@ -234,7 +225,7 @@ public class AwContentsClientShouldOverrideUrlLoadingTest extends AwTestBase { OnPageStartedHelper onPageStartedHelper = contentsClient.getOnPageStartedHelper(); loadDataSync(awContents, contentsClient.getOnPageFinishedHelper(), - getHtmlForPageWithSimpleLinkTo(DATA_URL), "text/html", false); + CommonResources.makeHtmlPageWithSimpleLinkTo(DATA_URL), "text/html", false); final int shouldOverrideUrlLoadingCallCount = shouldOverrideUrlLoadingHelper.getCallCount(); final int onPageStartedCallCount = onPageStartedHelper.getCallCount(); @@ -259,7 +250,7 @@ public class AwContentsClientShouldOverrideUrlLoadingTest extends AwTestBase { final int onReceivedErrorCallCount = onReceivedErrorHelper.getCallCount(); loadDataSync(awContents, contentsClient.getOnPageFinishedHelper(), - getHtmlForPageWithSimpleLinkTo(DATA_URL), "text/html", false); + CommonResources.makeHtmlPageWithSimpleLinkTo(DATA_URL), "text/html", false); final int shouldOverrideUrlLoadingCallCount = shouldOverrideUrlLoadingHelper.getCallCount(); @@ -301,11 +292,11 @@ public class AwContentsClientShouldOverrideUrlLoadingTest extends AwTestBase { final String anchorLinkPath = "/anchor_link.html"; final String anchorLinkUrl = mWebServer.getResponseUrl(anchorLinkPath); addPageToTestServer(mWebServer, anchorLinkPath, - getHtmlForPageWithSimpleLinkTo(anchorLinkUrl + "#anchor")); + CommonResources.makeHtmlPageWithSimpleLinkTo(anchorLinkUrl + "#anchor")); if (useLoadData) { loadDataSync(awContents, contentsClient.getOnPageFinishedHelper(), - getHtmlForPageWithSimpleLinkTo("#anchor"), "text/html", false); + CommonResources.makeHtmlPageWithSimpleLinkTo("#anchor"), "text/html", false); } else { loadUrlSync(awContents, contentsClient.getOnPageFinishedHelper(), anchorLinkUrl); } @@ -335,7 +326,7 @@ public class AwContentsClientShouldOverrideUrlLoadingTest extends AwTestBase { // We can't go to about:blank from here because we'd get a cross-origin error. loadDataSync(awContents, contentsClient.getOnPageFinishedHelper(), - getHtmlForPageWithSimpleLinkTo(DATA_URL), "text/html", false); + CommonResources.makeHtmlPageWithSimpleLinkTo(DATA_URL), "text/html", false); int callCount = shouldOverrideUrlLoadingHelper.getCallCount(); @@ -357,7 +348,7 @@ public class AwContentsClientShouldOverrideUrlLoadingTest extends AwTestBase { final String httpPath = "/page_with_about_blank_navigation"; final String httpPathOnServer = mWebServer.getResponseUrl(httpPath); addPageToTestServer(mWebServer, httpPath, - getHtmlForPageWithSimpleLinkTo(ABOUT_BLANK_URL)); + CommonResources.makeHtmlPageWithSimpleLinkTo(ABOUT_BLANK_URL)); loadUrlSync(awContents, contentsClient.getOnPageFinishedHelper(), httpPathOnServer); @@ -384,7 +375,7 @@ public class AwContentsClientShouldOverrideUrlLoadingTest extends AwTestBase { final String httpPath = "/page_with_link_to_self.html"; final String httpPathOnServer = mWebServer.getResponseUrl(httpPath); addPageToTestServer(mWebServer, httpPath, - getHtmlForPageWithSimpleLinkTo(httpPathOnServer)); + CommonResources.makeHtmlPageWithSimpleLinkTo(httpPathOnServer)); loadUrlSync(awContents, contentsClient.getOnPageFinishedHelper(), httpPathOnServer); @@ -454,7 +445,8 @@ public class AwContentsClientShouldOverrideUrlLoadingTest extends AwTestBase { final String redirectTargetUrl = createRedirectTargetPage(mWebServer); loadDataSync(awContents, contentsClient.getOnPageFinishedHelper(), - getHtmlForPageWithSimpleLinkTo(redirectTargetUrl), "text/html", false); + CommonResources.makeHtmlPageWithSimpleLinkTo(redirectTargetUrl), "text/html", + false); int callCount = shouldOverrideUrlLoadingHelper.getCallCount(); clickOnLinkUsingJs(awContents, contentsClient); @@ -477,11 +469,11 @@ public class AwContentsClientShouldOverrideUrlLoadingTest extends AwTestBase { final String pageWithLinkToIgnorePath = "/page_with_link_to_ignore.html"; final String pageWithLinkToIgnoreUrl = addPageToTestServer(mWebServer, pageWithLinkToIgnorePath, - getHtmlForPageWithSimpleLinkTo(redirectTargetUrl)); + CommonResources.makeHtmlPageWithSimpleLinkTo(redirectTargetUrl)); final String synchronizationPath = "/sync.html"; final String synchronizationUrl = addPageToTestServer(mWebServer, synchronizationPath, - getHtmlForPageWithSimpleLinkTo(redirectTargetUrl)); + CommonResources.makeHtmlPageWithSimpleLinkTo(redirectTargetUrl)); loadUrlSync(awContents, contentsClient.getOnPageFinishedHelper(), pageWithLinkToIgnoreUrl); @@ -518,7 +510,7 @@ public class AwContentsClientShouldOverrideUrlLoadingTest extends AwTestBase { TestAwContentsClient.ShouldOverrideUrlLoadingHelper shouldOverrideUrlLoadingHelper = contentsClient.getShouldOverrideUrlLoadingHelper(); loadDataSync(awContents, contentsClient.getOnPageFinishedHelper(), - getHtmlForPageWithSimpleLinkTo(dataUrl), "text/html", false); + CommonResources.makeHtmlPageWithSimpleLinkTo(dataUrl), "text/html", false); int callCount = shouldOverrideUrlLoadingHelper.getCallCount(); clickOnLinkUsingJs(awContents, contentsClient); @@ -541,7 +533,8 @@ public class AwContentsClientShouldOverrideUrlLoadingTest extends AwTestBase { contentsClient.getShouldOverrideUrlLoadingHelper(); final String unsupportedSchemeUrl = "foobar://resource/1"; loadDataSync(awContents, contentsClient.getOnPageFinishedHelper(), - getHtmlForPageWithSimpleLinkTo(unsupportedSchemeUrl), "text/html", false); + CommonResources.makeHtmlPageWithSimpleLinkTo(unsupportedSchemeUrl), "text/html", + false); int callCount = shouldOverrideUrlLoadingHelper.getCallCount(); clickOnLinkUsingJs(awContents, contentsClient); @@ -564,7 +557,7 @@ public class AwContentsClientShouldOverrideUrlLoadingTest extends AwTestBase { final String redirectTargetUrl = createRedirectTargetPage(mWebServer); final String postLinkUrl = addPageToTestServer(mWebServer, "/page_with_post_link.html", - getHtmlForPageWithSimplePostFormTo(redirectTargetUrl)); + CommonResources.makeHtmlPageWithSimplePostFormTo(redirectTargetUrl)); loadUrlSync(awContents, contentsClient.getOnPageFinishedHelper(), postLinkUrl); @@ -603,7 +596,7 @@ public class AwContentsClientShouldOverrideUrlLoadingTest extends AwTestBase { final String redirectTargetUrl = createRedirectTargetPage(mWebServer); final String postToGetRedirectUrl = mWebServer.setRedirect("/302.html", redirectTargetUrl); final String postLinkUrl = addPageToTestServer(mWebServer, "/page_with_post_link.html", - getHtmlForPageWithSimplePostFormTo(postToGetRedirectUrl)); + CommonResources.makeHtmlPageWithSimplePostFormTo(postToGetRedirectUrl)); loadUrlSync(awContents, contentsClient.getOnPageFinishedHelper(), postLinkUrl); @@ -702,7 +695,7 @@ public class AwContentsClientShouldOverrideUrlLoadingTest extends AwTestBase { final AwContents awContents = testContainerView.getAwContents(); final String pageWithLinkToRedirectUrl = addPageToTestServer(webServer, "/page_with_link_to_redirect.html", - getHtmlForPageWithSimpleLinkTo(redirectUrl)); + CommonResources.makeHtmlPageWithSimpleLinkTo(redirectUrl)); enableJavaScriptOnUiThread(awContents); TestAwContentsClient.ShouldOverrideUrlLoadingHelper shouldOverrideUrlLoadingHelper = @@ -813,7 +806,8 @@ public class AwContentsClientShouldOverrideUrlLoadingTest extends AwTestBase { @Override public void run() { awContents.loadUrl(LoadUrlParams.createLoadDataParams( - getHtmlForPageWithSimpleLinkTo(DATA_URL), "text/html", false)); + CommonResources.makeHtmlPageWithSimpleLinkTo(DATA_URL), "text/html", + false)); awContents.loadUrl(new LoadUrlParams(jsUrl)); } }); diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/AwSettingsTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/AwSettingsTest.java index 4943bf8d9c..d6ac546f06 100644 --- a/android_webview/javatests/src/org/chromium/android_webview/test/AwSettingsTest.java +++ b/android_webview/javatests/src/org/chromium/android_webview/test/AwSettingsTest.java @@ -21,9 +21,10 @@ import static org.chromium.base.test.util.ScalableTimeout.scaleTimeout; import org.apache.http.Header; import org.apache.http.HttpRequest; import org.chromium.android_webview.AwContents; +import org.chromium.android_webview.AwContentsClient.ShouldInterceptRequestParams; import org.chromium.android_webview.AwSettings; import org.chromium.android_webview.AwSettings.LayoutAlgorithm; -import org.chromium.android_webview.InterceptedRequestData; +import org.chromium.android_webview.AwWebResourceResponse; import org.chromium.android_webview.test.util.CommonResources; import org.chromium.android_webview.test.util.ImagePageGenerator; import org.chromium.android_webview.test.util.VideoTestUtil; @@ -1782,8 +1783,10 @@ public class AwSettingsTest extends AwTestBase { views.getContainer1(), views.getClient1(), 1)); } - @SmallTest - @Feature({"AndroidWebView", "Preferences"}) + // @SmallTest + // @Feature({"AndroidWebView", "Preferences"}) + // http://crbug.com/387101 + @DisabledTest public void testBlockNetworkImagesDoesNotBlockDataUrlImage() throws Throwable { final TestAwContentsClient contentClient = new TestAwContentsClient(); final AwTestContainerView testContainerView = @@ -2568,8 +2571,9 @@ public class AwSettingsTest extends AwTestBase { final String DEFAULT_VIDEO_POSTER_URL = "http://default_video_poster/"; TestAwContentsClient client = new TestAwContentsClient() { @Override - public InterceptedRequestData shouldInterceptRequest(String url) { - if (url.equals(DEFAULT_VIDEO_POSTER_URL)) { + public AwWebResourceResponse shouldInterceptRequest( + ShouldInterceptRequestParams params) { + if (params.url.equals(DEFAULT_VIDEO_POSTER_URL)) { videoPosterAccessedCallbackHelper.notifyCalled(); } return null; diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/ClientOnPageFinishedTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/ClientOnPageFinishedTest.java index 15c0bcd78e..5f9c51b632 100644 --- a/android_webview/javatests/src/org/chromium/android_webview/test/ClientOnPageFinishedTest.java +++ b/android_webview/javatests/src/org/chromium/android_webview/test/ClientOnPageFinishedTest.java @@ -9,6 +9,7 @@ import android.test.suitebuilder.annotation.MediumTest; import org.chromium.android_webview.AwContents; import org.chromium.android_webview.test.util.CommonResources; import org.chromium.android_webview.test.util.JSUtils; +import org.chromium.base.test.util.DisabledTest; import org.chromium.base.test.util.Feature; import org.chromium.content.browser.test.util.TestCallbackHelperContainer; import org.chromium.net.test.util.TestWebServer; @@ -48,8 +49,13 @@ public class ClientOnPageFinishedTest extends AwTestBase { assertEquals("data:text/html," + html, onPageFinishedHelper.getUrl()); } - @MediumTest - @Feature({"AndroidWebView"}) + /** + * @MediumTest + * @Feature({"AndroidWebView"}) + * + * http://crbug.com/386300 + */ + @DisabledTest public void testOnPageFinishedCalledAfterError() throws Throwable { class LocalTestClient extends TestAwContentsClient { private boolean isOnReceivedErrorCalled = false; diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/CookieManagerStartupTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/CookieManagerStartupTest.java index d365319b02..9f597e6b7d 100644 --- a/android_webview/javatests/src/org/chromium/android_webview/test/CookieManagerStartupTest.java +++ b/android_webview/javatests/src/org/chromium/android_webview/test/CookieManagerStartupTest.java @@ -11,7 +11,7 @@ import android.test.suitebuilder.annotation.SmallTest; import org.chromium.android_webview.AwBrowserProcess; import org.chromium.android_webview.AwContents; import org.chromium.android_webview.AwCookieManager; -import org.chromium.android_webview.InterceptedRequestData; +import org.chromium.android_webview.AwWebResourceResponse; import org.chromium.android_webview.test.util.CommonResources; import org.chromium.android_webview.test.util.CookieUtils; import org.chromium.base.test.util.Feature; @@ -120,7 +120,8 @@ public class CookieManagerStartupTest extends AwTestBase { String url = "http://www.example.com"; TestAwContentsClient contentsClient = new TestAwContentsClient() { @Override - public InterceptedRequestData shouldInterceptRequest(String url) { + public AwWebResourceResponse shouldInterceptRequest( + ShouldInterceptRequestParams params) { (new AwCookieManager()).getCookie("www.example.com"); return null; } diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/KeySystemTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/KeySystemTest.java index f3dd6ce702..b884b920d8 100644 --- a/android_webview/javatests/src/org/chromium/android_webview/test/KeySystemTest.java +++ b/android_webview/javatests/src/org/chromium/android_webview/test/KeySystemTest.java @@ -5,6 +5,7 @@ package org.chromium.android_webview.test; import android.test.suitebuilder.annotation.SmallTest; + import org.chromium.android_webview.AwContents; import org.chromium.base.test.util.DisabledTest; import org.chromium.base.test.util.Feature; @@ -65,4 +66,10 @@ public class KeySystemTest extends AwTestBase { public void testNotSupportFooKeySystem() throws Throwable { assertEquals("\"\"", IsKeySystemSupported("com.foo.keysystem")); } + + @Feature({"AndroidWebView"}) + @SmallTest + public void testSupportPlatformKeySystem() throws Throwable { + assertEquals("\"maybe\"", IsKeySystemSupported("com.oem.test-keysystem")); + } } diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/util/CommonResources.java b/android_webview/javatests/src/org/chromium/android_webview/test/util/CommonResources.java index 5fae61ca79..2f8e900392 100644 --- a/android_webview/javatests/src/org/chromium/android_webview/test/util/CommonResources.java +++ b/android_webview/javatests/src/org/chromium/android_webview/test/util/CommonResources.java @@ -105,4 +105,22 @@ public class CommonResources { "</body>" + "</html>"; } + + public static String makeHtmlPageWithSimpleLinkTo(String headers, String destination) { + return makeHtmlPageFrom(headers, + "<a href=\"" + destination + "\" id=\"link\">" + + "<img class=\"big\" />" + + "</a>"); + } + + public static String makeHtmlPageWithSimpleLinkTo(String destination) { + return makeHtmlPageWithSimpleLinkTo("", destination); + } + + public static String makeHtmlPageWithSimplePostFormTo(String destination) { + return makeHtmlPageFrom("", + "<form action=\"" + destination + "\" method=\"post\">" + + "<input type=\"submit\" value=\"post\" id=\"link\">" + + "</form>"); + } } |