| Index: android_webview/javatests/src/org/chromium/android_webview/test/AwContentsClientShouldOverrideUrlLoadingTest.java
|
| 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 1284fbae5b5edaaaeb99f207d8302fe347faeb69..a2995e96ba9eb3c8bd3491a0ce9d0cab29959ba5 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
|
| @@ -88,15 +88,15 @@ public class AwContentsClientShouldOverrideUrlLoadingTest extends AwTestBase {
|
| }
|
|
|
| private String getHtmlForPageWithJsRedirectTo(String url, String method, int timeout) {
|
| - return makeHtmlPageFrom(
|
| - "<script>" +
|
| - "function doRedirectAssign() {" +
|
| - "location.href = '" + url + "';" +
|
| - "} " +
|
| - "function doRedirectReplace() {" +
|
| - "location.replace('" + url + "');" +
|
| - "} " +
|
| - "</script>",
|
| + return makeHtmlPageFrom(""
|
| + + "<script>"
|
| + + "function doRedirectAssign() {"
|
| + + "location.href = '" + url + "';"
|
| + + "} "
|
| + + "function doRedirectReplace() {"
|
| + + "location.replace('" + url + "');"
|
| + + "} "
|
| + + "</script>",
|
| String.format("<iframe onLoad=\"setTimeout('doRedirect%s()', %d);\" />",
|
| method, timeout));
|
| }
|
| @@ -500,9 +500,9 @@ public class AwContentsClientShouldOverrideUrlLoadingTest extends AwTestBase {
|
| @Feature({"AndroidWebView", "Navigation"})
|
| public void testCalledForDataUrl() throws Throwable {
|
| final String dataUrl =
|
| - "data:text/html;base64," +
|
| - "PGh0bWw+PGhlYWQ+PHRpdGxlPmRhdGFVcmxUZXN0QmFzZTY0PC90aXRsZT48" +
|
| - "L2hlYWQ+PC9odG1sPg==";
|
| + "data:text/html;base64,"
|
| + + "PGh0bWw+PGhlYWQ+PHRpdGxlPmRhdGFVcmxUZXN0QmFzZTY0PC90aXRsZT48"
|
| + + "L2hlYWQ+PC9odG1sPg==";
|
| final TestAwContentsClient contentsClient = new TestAwContentsClient();
|
| final AwTestContainerView testContainerView =
|
| createAwTestContainerViewOnMainSync(contentsClient);
|
| @@ -516,8 +516,8 @@ public class AwContentsClientShouldOverrideUrlLoadingTest extends AwTestBase {
|
| clickOnLinkUsingJs(awContents, contentsClient);
|
|
|
| shouldOverrideUrlLoadingHelper.waitForCallback(callCount);
|
| - assertTrue("Expected URL that starts with 'data:' but got: <" +
|
| - shouldOverrideUrlLoadingHelper.getShouldOverrideUrlLoadingUrl() + "> instead.",
|
| + assertTrue("Expected URL that starts with 'data:' but got: <"
|
| + + shouldOverrideUrlLoadingHelper.getShouldOverrideUrlLoadingUrl() + "> instead.",
|
| shouldOverrideUrlLoadingHelper.getShouldOverrideUrlLoadingUrl().startsWith(
|
| "data:"));
|
| }
|
| @@ -816,4 +816,48 @@ public class AwContentsClientShouldOverrideUrlLoadingTest extends AwTestBase {
|
|
|
| assertEquals(0, shouldOverrideUrlLoadingHelper.getCallCount());
|
| }
|
| +
|
| + @SmallTest
|
| + @Feature({"AndroidWebView"})
|
| + public void testCallDestroyInCallback() throws Throwable {
|
| + class DestroyInCallbackClient extends TestAwContentsClient {
|
| + private AwContents mAwContents;
|
| +
|
| + public void setAwContents(AwContents awContents) {
|
| + mAwContents = awContents;
|
| + }
|
| +
|
| + @Override
|
| + public boolean shouldOverrideUrlLoading(String url) {
|
| + mAwContents.destroy();
|
| + return super.shouldOverrideUrlLoading(url);
|
| + }
|
| + }
|
| +
|
| + DestroyInCallbackClient contentsClient = new DestroyInCallbackClient();
|
| + AwTestContainerView testContainerView =
|
| + createAwTestContainerViewOnMainSync(contentsClient);
|
| + AwContents awContents = testContainerView.getAwContents();
|
| + contentsClient.setAwContents(awContents);
|
| +
|
| + OnReceivedErrorHelper onReceivedErrorHelper = contentsClient.getOnReceivedErrorHelper();
|
| + int onReceivedErrorCallCount = onReceivedErrorHelper.getCallCount();
|
| +
|
| + loadDataSync(awContents, contentsClient.getOnPageFinishedHelper(),
|
| + CommonResources.makeHtmlPageWithSimpleLinkTo(DATA_URL), "text/html", false);
|
| +
|
| + TestAwContentsClient.ShouldOverrideUrlLoadingHelper shouldOverrideUrlLoadingHelper =
|
| + contentsClient.getShouldOverrideUrlLoadingHelper();
|
| + int shouldOverrideUrlLoadingCallCount = shouldOverrideUrlLoadingHelper.getCallCount();
|
| + setShouldOverrideUrlLoadingReturnValueOnUiThread(shouldOverrideUrlLoadingHelper, true);
|
| + clickOnLinkUsingJs(awContents, contentsClient);
|
| + shouldOverrideUrlLoadingHelper.waitForCallback(shouldOverrideUrlLoadingCallCount);
|
| +
|
| + pollOnUiThread(new Callable<Boolean>() {
|
| + @Override
|
| + public Boolean call() {
|
| + return AwContents.getNativeInstanceCount() == 0;
|
| + }
|
| + });
|
| + }
|
| }
|
|
|