Index: android_webview/javatests/src/org/chromium/android_webview/test/LoadDataWithBaseUrlTest.java |
diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/LoadDataWithBaseUrlTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/LoadDataWithBaseUrlTest.java |
index 177f8c73e89ded668dae4aaa92e089c85ad3dbca..6fb0b3d6f36d4e651b4b4c2f6d335a41f92f9d4e 100644 |
--- a/android_webview/javatests/src/org/chromium/android_webview/test/LoadDataWithBaseUrlTest.java |
+++ b/android_webview/javatests/src/org/chromium/android_webview/test/LoadDataWithBaseUrlTest.java |
@@ -373,4 +373,37 @@ public class LoadDataWithBaseUrlTest extends AwTestBase { |
assertEquals("true", executeJavaScriptAndWaitForResult(mAwContents, mContentsClient, |
"window.gotToEndOfBody")); |
} |
+ |
+ @SmallTest |
+ @Feature({"AndroidWebView"}) |
+ public void testOnPageFinishedWhenInterrupted() throws Throwable { |
+ // See crbug.com/594001 -- when a javascript: URL is loaded, the pending entry |
+ // gets discarded and the previous load goes through a different path |
+ // inside NavigationController. |
+ final String pageHtml = "<html><body>Hello, world!</body></html>"; |
+ final String baseUrl = "http://example.com/"; |
+ final TestCallbackHelperContainer.OnPageFinishedHelper onPageFinishedHelper = |
+ mContentsClient.getOnPageFinishedHelper(); |
+ final int callCount = onPageFinishedHelper.getCallCount(); |
+ loadDataWithBaseUrlAsync(mAwContents, pageHtml, "text/html", false, baseUrl, null); |
+ loadUrlAsync(mAwContents, "javascript:42"); |
+ onPageFinishedHelper.waitForCallback(callCount); |
+ assertEquals(baseUrl, onPageFinishedHelper.getUrl()); |
+ } |
+ |
+ @SmallTest |
+ @Feature({"AndroidWebView"}) |
+ public void testOnPageFinishedWithInvalidBaseUrlWhenInterrupted() throws Throwable { |
+ final String pageHtml = CommonResources.ABOUT_HTML; |
+ final String invalidBaseUrl = "http://"; |
+ final TestCallbackHelperContainer.OnPageFinishedHelper onPageFinishedHelper = |
+ mContentsClient.getOnPageFinishedHelper(); |
+ final int callCount = onPageFinishedHelper.getCallCount(); |
+ getAwSettingsOnUiThread(mAwContents).setJavaScriptEnabled(true); |
+ loadDataWithBaseUrlAsync(mAwContents, pageHtml, "text/html", false, invalidBaseUrl, null); |
+ loadUrlAsync(mAwContents, "javascript:42"); |
+ onPageFinishedHelper.waitForCallback(callCount); |
+ // Verify that the load succeeds. The actual base url is undefined. |
+ assertEquals(CommonResources.ABOUT_TITLE, getTitleOnUiThread(mAwContents)); |
+ } |
} |