Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / android_webview / javatests / src / org / chromium / android_webview / test / ClientOnPageFinishedTest.java
index 93f07fb..0f62bbd 100644 (file)
@@ -51,26 +51,41 @@ public class ClientOnPageFinishedTest extends AwTestBase {
     @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();
@@ -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
@@ -99,9 +118,8 @@ public class ClientOnPageFinishedTest extends AwTestBase {
          * 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);
@@ -113,7 +131,7 @@ public class ClientOnPageFinishedTest extends AwTestBase {
             urlOverrideHelper.setShouldOverrideUrlLoadingReturnValue(true);
 
             TestCallbackHelperContainer.OnPageFinishedHelper onPageFinishedHelper =
-                mContentsClient.getOnPageFinishedHelper();
+                    mContentsClient.getOnPageFinishedHelper();
 
             final int currentOnPageFinishedCallCount = onPageFinishedHelper.getCallCount();
             loadUrlAsync(mAwContents, redirectUrl);
@@ -122,7 +140,7 @@ public class ClientOnPageFinishedTest extends AwTestBase {
             // onPageFinished needs to be called for redirectTargetUrl, but not for redirectUrl
             assertEquals(redirectTargetUrl, onPageFinishedHelper.getUrl());
         } finally {
-            if (webServer != null) webServer.shutdown();
+            webServer.shutdown();
         }
     }
 
@@ -132,10 +150,8 @@ public class ClientOnPageFinishedTest extends AwTestBase {
         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";
@@ -162,9 +178,8 @@ public class ClientOnPageFinishedTest extends AwTestBase {
             onPageFinishedHelper.waitForCallback(synchronizationPageCallCount);
             assertEquals(syncUrl, onPageFinishedHelper.getUrl());
             assertEquals(2, onPageFinishedHelper.getCallCount());
-
         } finally {
-            if (webServer != null) webServer.shutdown();
+            webServer.shutdown();
         }
     }
 
@@ -175,10 +190,8 @@ public class ClientOnPageFinishedTest extends AwTestBase {
                 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";
@@ -204,9 +217,8 @@ public class ClientOnPageFinishedTest extends AwTestBase {
             onPageFinishedHelper.waitForCallback(synchronizationPageCallCount);
             assertEquals(syncUrl, onPageFinishedHelper.getUrl());
             assertEquals(2, onPageFinishedHelper.getCallCount());
-
         } finally {
-            if (webServer != null) webServer.shutdown();
+            webServer.shutdown();
         }
     }
 
@@ -229,10 +241,8 @@ public class ClientOnPageFinishedTest extends AwTestBase {
                 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";
@@ -263,7 +273,7 @@ public class ClientOnPageFinishedTest extends AwTestBase {
             onPageFinishedHelper.waitForCallback(onPageFinishedCallCount);
             assertEquals(onPageStartedCallCount, onPageStartedHelper.getCallCount());
         } finally {
-            if (webServer != null) webServer.shutdown();
+            webServer.shutdown();
         }
     }
 }