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 93f07fbe7dbf377f4522f0f806ea6847962fa966..15c0bcd78eb7788912a0b9d5bc3d5e3d41ee7213 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 |
@@ -51,26 +51,41 @@ public class ClientOnPageFinishedTest extends AwTestBase { |
@MediumTest |
@Feature({"AndroidWebView"}) |
public void testOnPageFinishedCalledAfterError() throws Throwable { |
- setTestAwContentsClient(new TestAwContentsClient() { |
+ class LocalTestClient extends TestAwContentsClient { |
private boolean isOnReceivedErrorCalled = false; |
private boolean isOnPageFinishedCalled = false; |
+ private boolean allowAboutBlank = false; |
@Override |
public void onReceivedError(int errorCode, String description, String failingUrl) { |
+ assertEquals("onReceivedError called twice for " + failingUrl, |
+ false, isOnReceivedErrorCalled); |
isOnReceivedErrorCalled = true; |
- // Make sure onReceivedError is called before onPageFinished |
- assertEquals(false, isOnPageFinishedCalled); |
+ assertEquals("onPageFinished called before onReceivedError for " + failingUrl, |
+ false, isOnPageFinishedCalled); |
super.onReceivedError(errorCode, description, failingUrl); |
} |
@Override |
public void onPageFinished(String url) { |
+ if (allowAboutBlank && "about:blank".equals(url)) { |
+ super.onPageFinished(url); |
+ return; |
+ } |
+ assertEquals("onPageFinished called twice for " + url, |
+ false, isOnPageFinishedCalled); |
isOnPageFinishedCalled = true; |
- // Make sure onReceivedError is called before onPageFinished |
- assertEquals(true, isOnReceivedErrorCalled); |
+ assertEquals("onReceivedError not called before onPageFinished for " + url, |
+ true, isOnReceivedErrorCalled); |
super.onPageFinished(url); |
} |
- }); |
+ |
+ void setAllowAboutBlank() { |
+ allowAboutBlank = true; |
+ } |
+ }; |
+ LocalTestClient testContentsClient = new LocalTestClient(); |
+ setTestAwContentsClient(testContentsClient); |
TestCallbackHelperContainer.OnReceivedErrorHelper onReceivedErrorHelper = |
mContentsClient.getOnReceivedErrorHelper(); |
@@ -78,12 +93,16 @@ public class ClientOnPageFinishedTest extends AwTestBase { |
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 |