Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(50)

Unified Diff: android_webview/javatests/src/org/chromium/android_webview/test/AwContentsClientShouldOverrideUrlLoadingTest.java

Issue 690553002: aw: Destroy ContentViewCore and WebContents together (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: test to ShouldOverrideUrlLoading Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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;
+ }
+ });
+ }
}

Powered by Google App Engine
This is Rietveld 408576698