| 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 edb6c7a2d267bb3f9c44592a54c75f5640503c25..d363c5c7751c8fc762267d8f5feb014ec5ae3722 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
|
| @@ -279,4 +279,84 @@ public class ClientOnPageFinishedTest extends AwTestBase {
|
| webServer.shutdown();
|
| }
|
| }
|
| +
|
| + @MediumTest
|
| + @Feature({"AndroidWebView"})
|
| + public void testOnPageFinishedNotCalledOnDomModificationForBlankWebView() throws Throwable {
|
| + TestWebServer webServer = TestWebServer.start();
|
| + try {
|
| + doTestOnPageFinishedNotCalledOnDomMutation(webServer);
|
| + } finally {
|
| + webServer.shutdown();
|
| + }
|
| + }
|
| +
|
| + @MediumTest
|
| + @Feature({"AndroidWebView"})
|
| + public void testOnPageFinishedCalledOnDomModificationAfterNonCommittedLoad() throws Throwable {
|
| + enableJavaScriptOnUiThread(mAwContents);
|
| + TestWebServer webServer = TestWebServer.start();
|
| + try {
|
| + final String noContentUrl = webServer.setResponseWithNoContentStatus("/nocontent.html");
|
| + TestCallbackHelperContainer.OnPageFinishedHelper onPageFinishedHelper =
|
| + mContentsClient.getOnPageFinishedHelper();
|
| + final int onPageFinishedCallCount = onPageFinishedHelper.getCallCount();
|
| + loadUrlAsync(mAwContents, noContentUrl);
|
| + // Mutate DOM.
|
| + executeJavaScriptAndWaitForResult(mAwContents, mContentsClient,
|
| + "document.body.innerHTML='Hello, World!'");
|
| + onPageFinishedHelper.waitForCallback(onPageFinishedCallCount);
|
| + assertEquals("about:blank", onPageFinishedHelper.getUrl());
|
| + } finally {
|
| + webServer.shutdown();
|
| + }
|
| + }
|
| +
|
| + @MediumTest
|
| + @Feature({"AndroidWebView"})
|
| + public void testOnPageFinishedNotCalledOnDomModificationAfterLoadUrl() throws Throwable {
|
| + TestWebServer webServer = TestWebServer.start();
|
| + try {
|
| + final String testUrl =
|
| + webServer.setResponse("/test.html", CommonResources.ABOUT_HTML, null);
|
| + loadUrlSync(mAwContents, mContentsClient.getOnPageFinishedHelper(), testUrl);
|
| + doTestOnPageFinishedNotCalledOnDomMutation(webServer);
|
| + } finally {
|
| + webServer.shutdown();
|
| + }
|
| + }
|
| +
|
| + @MediumTest
|
| + @Feature({"AndroidWebView"})
|
| + public void testOnPageFinishedNotCalledOnDomModificationAfterLoadData()
|
| + throws Throwable {
|
| + TestWebServer webServer = TestWebServer.start();
|
| + try {
|
| + loadDataSync(mAwContents, mContentsClient.getOnPageFinishedHelper(),
|
| + CommonResources.ABOUT_HTML, "text/html", false);
|
| + doTestOnPageFinishedNotCalledOnDomMutation(webServer);
|
| + } finally {
|
| + webServer.shutdown();
|
| + }
|
| + }
|
| +
|
| + private void doTestOnPageFinishedNotCalledOnDomMutation(TestWebServer webServer)
|
| + throws Throwable {
|
| + enableJavaScriptOnUiThread(mAwContents);
|
| + TestCallbackHelperContainer.OnPageFinishedHelper onPageFinishedHelper =
|
| + mContentsClient.getOnPageFinishedHelper();
|
| + final int onPageFinishedCallCount = onPageFinishedHelper.getCallCount();
|
| + // Mutate DOM.
|
| + executeJavaScriptAndWaitForResult(mAwContents, mContentsClient,
|
| + "document.body.innerHTML='Hello, World!'");
|
| + // Rather than wait a fixed time to see that an onPageFinished callback isn't issued
|
| + // we load another valid page. Since callbacks arrive sequentially if the next callback
|
| + // we get is for the synchronizationUrl we know that DOM mutation did not schedule
|
| + // a callback for the iframe.
|
| + final String syncUrl = webServer.setResponse("/sync.html", "", null);
|
| + loadUrlAsync(mAwContents, syncUrl);
|
| + onPageFinishedHelper.waitForCallback(onPageFinishedCallCount);
|
| + assertEquals(syncUrl, onPageFinishedHelper.getUrl());
|
| + assertEquals(onPageFinishedCallCount + 1, onPageFinishedHelper.getCallCount());
|
| + }
|
| }
|
|
|