@MediumTest
@Feature({"AndroidWebView"})
public void testOnPageFinishedCalledAfterError() throws Throwable {
- setTestAwContentsClient(new TestAwContentsClient() {
- private boolean isOnReceivedErrorCalled = false;
- private boolean isOnPageFinishedCalled = false;
+ class LocalTestClient extends TestAwContentsClient {
+ private boolean mIsOnReceivedErrorCalled = false;
+ private boolean mIsOnPageFinishedCalled = false;
+ private boolean mAllowAboutBlank = false;
@Override
public void onReceivedError(int errorCode, String description, String failingUrl) {
- isOnReceivedErrorCalled = true;
- // Make sure onReceivedError is called before onPageFinished
- assertEquals(false, isOnPageFinishedCalled);
+ assertEquals("onReceivedError called twice for " + failingUrl,
+ false, mIsOnReceivedErrorCalled);
+ mIsOnReceivedErrorCalled = true;
+ assertEquals("onPageFinished called before onReceivedError for " + failingUrl,
+ false, mIsOnPageFinishedCalled);
super.onReceivedError(errorCode, description, failingUrl);
}
@Override
public void onPageFinished(String url) {
- isOnPageFinishedCalled = true;
- // Make sure onReceivedError is called before onPageFinished
- assertEquals(true, isOnReceivedErrorCalled);
+ if (mAllowAboutBlank && "about:blank".equals(url)) {
+ super.onPageFinished(url);
+ return;
+ }
+ assertEquals("onPageFinished called twice for " + url,
+ false, mIsOnPageFinishedCalled);
+ mIsOnPageFinishedCalled = true;
+ assertEquals("onReceivedError not called before onPageFinished for " + url,
+ true, mIsOnReceivedErrorCalled);
super.onPageFinished(url);
}
- });
+
+ void setAllowAboutBlank() {
+ mAllowAboutBlank = true;
+ }
+ }
+ LocalTestClient testContentsClient = new LocalTestClient();
+ setTestAwContentsClient(testContentsClient);
TestCallbackHelperContainer.OnReceivedErrorHelper onReceivedErrorHelper =
mContentsClient.getOnReceivedErrorHelper();
mContentsClient.getOnPageFinishedHelper();
String invalidUrl = "http://localhost:7/non_existent";
- int onReceivedErrorCallCount = onReceivedErrorHelper.getCallCount();
- int onPageFinishedCallCount = onPageFinishedHelper.getCallCount();
loadUrlSync(mAwContents, onPageFinishedHelper, invalidUrl);
assertEquals(invalidUrl, onReceivedErrorHelper.getFailingUrl());
assertEquals(invalidUrl, onPageFinishedHelper.getUrl());
+
+ // Rather than wait a fixed time to see that another onPageFinished callback isn't issued
+ // we load a valid page. Since callbacks arrive sequentially, this will ensure that
+ // any extra calls of onPageFinished / onReceivedError will arrive to our client.
+ testContentsClient.setAllowAboutBlank();
+ loadUrlSync(mAwContents, onPageFinishedHelper, "about:blank");
}
@MediumTest
* 4. url2 onPageFinishedCalled
*/
- TestWebServer webServer = null;
+ TestWebServer webServer = TestWebServer.start();
try {
- webServer = new TestWebServer(false);
final String redirectTargetPath = "/redirect_target.html";
final String redirectTargetUrl = webServer.setResponse(redirectTargetPath,
"<html><body>hello world</body></html>", null);
urlOverrideHelper.setShouldOverrideUrlLoadingReturnValue(true);
TestCallbackHelperContainer.OnPageFinishedHelper onPageFinishedHelper =
- mContentsClient.getOnPageFinishedHelper();
+ mContentsClient.getOnPageFinishedHelper();
final int currentOnPageFinishedCallCount = onPageFinishedHelper.getCallCount();
loadUrlAsync(mAwContents, redirectUrl);
// onPageFinished needs to be called for redirectTargetUrl, but not for redirectUrl
assertEquals(redirectTargetUrl, onPageFinishedHelper.getUrl());
} finally {
- if (webServer != null) webServer.shutdown();
+ webServer.shutdown();
}
}
TestCallbackHelperContainer.OnPageFinishedHelper onPageFinishedHelper =
mContentsClient.getOnPageFinishedHelper();
- TestWebServer webServer = null;
+ TestWebServer webServer = TestWebServer.start();
try {
- webServer = new TestWebServer(false);
-
final String testHtml = "<html><head>Header</head><body>Body</body></html>";
final String testPath = "/test.html";
final String syncPath = "/sync.html";
onPageFinishedHelper.waitForCallback(synchronizationPageCallCount);
assertEquals(syncUrl, onPageFinishedHelper.getUrl());
assertEquals(2, onPageFinishedHelper.getCallCount());
-
} finally {
- if (webServer != null) webServer.shutdown();
+ webServer.shutdown();
}
}
mContentsClient.getOnPageFinishedHelper();
enableJavaScriptOnUiThread(mAwContents);
- TestWebServer webServer = null;
+ TestWebServer webServer = TestWebServer.start();
try {
- webServer = new TestWebServer(false);
-
final String testHtml = "<html><head>Header</head><body>Body</body></html>";
final String testPath = "/test.html";
final String historyPath = "/history.html";
onPageFinishedHelper.waitForCallback(synchronizationPageCallCount);
assertEquals(syncUrl, onPageFinishedHelper.getUrl());
assertEquals(2, onPageFinishedHelper.getCallCount());
-
} finally {
- if (webServer != null) webServer.shutdown();
+ webServer.shutdown();
}
}
mContentsClient.getOnPageStartedHelper();
enableJavaScriptOnUiThread(mAwContents);
- TestWebServer webServer = null;
+ TestWebServer webServer = TestWebServer.start();
try {
- webServer = new TestWebServer(false);
-
final String testHtml = CommonResources.makeHtmlPageFrom("",
"<a href=\"#anchor\" id=\"link\">anchor</a>");
final String testPath = "/test.html";
onPageFinishedHelper.waitForCallback(onPageFinishedCallCount);
assertEquals(onPageStartedCallCount, onPageStartedHelper.getCallCount());
} finally {
- if (webServer != null) webServer.shutdown();
+ webServer.shutdown();
}
}
}