Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2768)

Unified Diff: android_webview/javatests/src/org/chromium/android_webview/test/ClientOnPageFinishedTest.java

Issue 68763012: [android_webview] Don't call onPageFinished for history API. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 11bd7d21f5fbdc5314e41d475deb4e8066d9b850..782d5cc57d589a1b25a4f19cb73fb54a8cf96ac3 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
@@ -111,4 +111,46 @@ public class ClientOnPageFinishedTest extends AwTestBase {
if (webServer != null) webServer.shutdown();
}
}
+
+ @MediumTest
+ @Feature({"AndroidWebView"})
+ public void testOnPageFinishedNotCalledForHistoryApi() throws Throwable {
+ TestCallbackHelperContainer.OnPageFinishedHelper onPageFinishedHelper =
+ mContentsClient.getOnPageFinishedHelper();
+ enableJavaScriptOnUiThread(mAwContents);
+
+ TestWebServer webServer = null;
+ 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";
+ final String syncPath = "/sync.html";
+
+ final String testUrl = webServer.setResponse(testPath, testHtml, null);
+ final String historyUrl = webServer.getResponseUrl(historyPath);
+ final String syncUrl = webServer.setResponse(syncPath, testHtml, null);
+
+ assertEquals(0, onPageFinishedHelper.getCallCount());
+ loadUrlSync(mAwContents, onPageFinishedHelper, testUrl);
+
+ executeJavaScriptAndWaitForResult(mAwContents, mContentsClient,
+ "history.pushState(null, null, '" + historyUrl + "');");
+
+ // 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 the previous load did not schedule
+ // a callback for the iframe.
joth 2013/11/15 22:28:51 smart! we could probably apply that pattern other
+ final int synchronizationPageCallCount = onPageFinishedHelper.getCallCount();
+ loadUrlAsync(mAwContents, syncUrl);
+
+ onPageFinishedHelper.waitForCallback(synchronizationPageCallCount);
+ assertEquals(syncUrl, onPageFinishedHelper.getUrl());
+ assertEquals(2, onPageFinishedHelper.getCallCount());
+
+ } finally {
+ if (webServer != null) webServer.shutdown();
+ }
+ }
}

Powered by Google App Engine
This is Rietveld 408576698