| 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..93f07fbe7dbf377f4522f0f806ea6847962fa966 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,27 +51,79 @@ 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;
|
| + // Make sure onReceivedError is called before onPageFinished
|
| + assertEquals(true, isOnReceivedErrorCalled);
|
| + super.onPageFinished(url);
|
| + }
|
| + });
|
| +
|
| TestCallbackHelperContainer.OnReceivedErrorHelper onReceivedErrorHelper =
|
| mContentsClient.getOnReceivedErrorHelper();
|
| TestCallbackHelperContainer.OnPageFinishedHelper onPageFinishedHelper =
|
| mContentsClient.getOnPageFinishedHelper();
|
|
|
| - assertEquals(0, onReceivedErrorHelper.getCallCount());
|
| -
|
| - 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
|
|
|