Chromium Code Reviews| Index: android_webview/javatests/src/org/chromium/android_webview/test/ClientOnPageFinishedTest.java |
| 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 aaaa6cc5860a6e385f7a1200c59f7d26345145a0..3679daf1a4c1d5b6166c8cf1dcd13fd12f5a09e4 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 |
| @@ -13,8 +13,6 @@ import org.chromium.base.test.util.Feature; |
| import org.chromium.content.browser.test.util.TestCallbackHelperContainer; |
| import org.chromium.net.test.util.TestWebServer; |
| -import java.util.concurrent.TimeUnit; |
| - |
| /** |
| * Tests for the ContentViewClient.onPageFinished() method. |
| */ |
| @@ -26,7 +24,11 @@ public class ClientOnPageFinishedTest extends AwTestBase { |
| @Override |
| public void setUp() throws Exception { |
| super.setUp(); |
| - mContentsClient = new TestAwContentsClient(); |
| + setTestAwContentsClient(new TestAwContentsClient()); |
| + } |
| + |
| + private void setTestAwContentsClient(TestAwContentsClient contentsClient) throws Exception { |
| + mContentsClient = contentsClient; |
| final AwTestContainerView testContainerView = |
| createAwTestContainerViewOnMainSync(mContentsClient); |
| mAwContents = testContainerView.getAwContents(); |
| @@ -49,6 +51,25 @@ public class ClientOnPageFinishedTest extends AwTestBase { |
| @MediumTest |
| @Feature({"AndroidWebView"}) |
| public void testOnPageFinishedCalledAfterError() throws Throwable { |
| + setTestAwContentsClient(new TestAwContentsClient() { |
| + private boolean isOnReceivedErrorCalled = false; |
| + private boolean isOnPageFinishedCalled = false; |
| + |
| + @Override |
| + public void onReceivedError(int errorCode, String description, String failingUrl) { |
| + isOnReceivedErrorCalled = true; |
| + // Make sure onReceivedError is called before onPageFinished |
| + assertEquals(false, isOnPageFinishedCalled); |
| + super.onReceivedError(errorCode, description, failingUrl); |
| + } |
| + |
| + @Override |
| + public void onPageFinished(String url) { |
| + isOnPageFinishedCalled = true; |
| + super.onPageFinished(url); |
|
mkosiba (inactive)
2014/02/13 17:21:50
maybe assert onReceivedError was called?
|
| + } |
| + }); |
| + |
| TestCallbackHelperContainer.OnReceivedErrorHelper onReceivedErrorHelper = |
| mContentsClient.getOnReceivedErrorHelper(); |
| TestCallbackHelperContainer.OnPageFinishedHelper onPageFinishedHelper = |
| @@ -56,20 +77,53 @@ public class ClientOnPageFinishedTest extends AwTestBase { |
| assertEquals(0, onReceivedErrorHelper.getCallCount()); |
|
mkosiba (inactive)
2014/02/13 17:21:50
I don't think this is needed.
|
| - String url = "http://localhost:7/non_existent"; |
| + String invalidUrl = "http://localhost:7/non_existent"; |
| int onReceivedErrorCallCount = onReceivedErrorHelper.getCallCount(); |
| int onPageFinishedCallCount = onPageFinishedHelper.getCallCount(); |
| - loadUrlAsync(mAwContents, url); |
| - |
| - onReceivedErrorHelper.waitForCallback(onReceivedErrorCallCount, |
| - 1 /* numberOfCallsToWaitFor */, |
| - WAIT_TIMEOUT_MS, |
| - TimeUnit.MILLISECONDS); |
| - onPageFinishedHelper.waitForCallback(onPageFinishedCallCount, |
| - 1 /* numberOfCallsToWaitFor */, |
| - WAIT_TIMEOUT_MS, |
| - TimeUnit.MILLISECONDS); |
| - assertEquals(1, onReceivedErrorHelper.getCallCount()); |
| + loadUrlSync(mAwContents, onPageFinishedHelper, invalidUrl); |
| + |
| + assertEquals(invalidUrl, onReceivedErrorHelper.getFailingUrl()); |
| + assertEquals(invalidUrl, onPageFinishedHelper.getUrl()); |
| + } |
| + |
| + @MediumTest |
| + @Feature({"AndroidWebView"}) |
| + public void testOnPageFinishedCalledAfterRedirectedUrlIsOverridden() throws Throwable { |
| + /* |
| + * If url1 is redirected url2, and url2 load is overridden, onPageFinished should still be |
| + * called for url2. |
| + * Steps: |
| + * 1. load url1. url1 onPageStarted |
| + * 2. server redirects url1 to url2. url2 onPageStarted |
| + * 3. shouldOverridedUrlLoading called for url2 and returns true |
| + * 4. url2 onPageFinishedCalled |
| + */ |
| + |
| + TestWebServer webServer = null; |
| + try { |
| + webServer = new TestWebServer(false); |
| + final String redirectTargetPath = "/redirect_target.html"; |
| + final String redirectTargetUrl = webServer.setResponse(redirectTargetPath, |
| + "<html><body>hello world</body></html>", null); |
| + final String redirectUrl = webServer.setRedirect("/302.html", redirectTargetUrl); |
| + |
| + final TestAwContentsClient.ShouldOverrideUrlLoadingHelper urlOverrideHelper = |
| + mContentsClient.getShouldOverrideUrlLoadingHelper(); |
| + // Override the load of redirectTargetUrl |
| + urlOverrideHelper.setShouldOverrideUrlLoadingReturnValue(true); |
| + |
| + TestCallbackHelperContainer.OnPageFinishedHelper onPageFinishedHelper = |
| + mContentsClient.getOnPageFinishedHelper(); |
| + |
| + final int currentOnPageFinishedCallCount = onPageFinishedHelper.getCallCount(); |
| + loadUrlAsync(mAwContents, redirectUrl); |
| + |
| + onPageFinishedHelper.waitForCallback(currentOnPageFinishedCallCount); |
| + // onPageFinished needs to be called for redirectTargetUrl, but not for redirectUrl |
| + assertEquals(redirectTargetUrl, onPageFinishedHelper.getUrl()); |
| + } finally { |
| + if (webServer != null) webServer.shutdown(); |
| + } |
| } |
| @MediumTest |