Add CTS tests for Visual State Listener
Change-Id: Id47c16f3c8385ffe8ebeef5b25837b8cf885cdf3
diff --git a/libs/deviceutillegacy/src/android/webkit/cts/WebViewOnUiThread.java b/libs/deviceutillegacy/src/android/webkit/cts/WebViewOnUiThread.java
index b9d3af1..5cd6f30 100644
--- a/libs/deviceutillegacy/src/android/webkit/cts/WebViewOnUiThread.java
+++ b/libs/deviceutillegacy/src/android/webkit/cts/WebViewOnUiThread.java
@@ -39,6 +39,7 @@
import android.webkit.WebSettings;
import android.webkit.WebView.HitTestResult;
import android.webkit.WebView.PictureListener;
+import android.webkit.WebView.VisualStateCallback;
import android.webkit.WebView;
import android.webkit.WebViewClient;
@@ -628,6 +629,15 @@
});
}
+ public void insertVisualStateCallback(final long requestId, final VisualStateCallback callback) {
+ runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ mWebView.insertVisualStateCallback(requestId, callback);
+ }
+ });
+ }
+
public int[] getLocationOnScreen() {
final int[] location = new int[2];
return getValue(new ValueGetter<int[]>() {
diff --git a/tests/tests/webkit/src/android/webkit/cts/WebViewTest.java b/tests/tests/webkit/src/android/webkit/cts/WebViewTest.java
index 634a318..9cd85b1 100755
--- a/tests/tests/webkit/src/android/webkit/cts/WebViewTest.java
+++ b/tests/tests/webkit/src/android/webkit/cts/WebViewTest.java
@@ -65,6 +65,7 @@
import android.webkit.WebView;
import android.webkit.WebView.HitTestResult;
import android.webkit.WebView.PictureListener;
+import android.webkit.WebView.VisualStateCallback;
import android.webkit.WebViewClient;
import android.webkit.WebViewDatabase;
import android.webkit.cts.WebViewOnUiThread.WaitForLoadedClient;
@@ -2451,6 +2452,47 @@
}
}
+ public void testVisualStateCallbackCalled() throws Exception {
+ // Check that the visual state callback is called correctly.
+ if (!NullWebViewUtils.isWebViewAvailable()) {
+ return;
+ }
+
+ final CountDownLatch callbackLatch = new CountDownLatch(1);
+ final long kRequest = 100;
+
+ mOnUiThread.loadUrl("about:blank");
+
+ mOnUiThread.insertVisualStateCallback(kRequest, new VisualStateCallback() {
+ public void onComplete(long requestId) {
+ assertEquals(kRequest, requestId);
+ callbackLatch.countDown();
+ }
+ });
+
+ assertTrue(callbackLatch.await(TEST_TIMEOUT, TimeUnit.MILLISECONDS));
+ }
+
+ public void testOnPageCommitVisibleCalled() throws Exception {
+ // Check that the onPageCommitVisible callback is called
+ // correctly.
+ if (!NullWebViewUtils.isWebViewAvailable()) {
+ return;
+ }
+
+ final CountDownLatch callbackLatch = new CountDownLatch(1);
+
+ mOnUiThread.setWebViewClient(new WebViewClient() {
+ public void onPageCommitVisible(WebView view, String url) {
+ assertEquals(url, "about:blank");
+ callbackLatch.countDown();
+ }
+ });
+
+ mOnUiThread.loadUrl("about:blank");
+ assertTrue(callbackLatch.await(TEST_TIMEOUT, TimeUnit.MILLISECONDS));
+ }
+
private void savePrintedPage(final PrintDocumentAdapter adapter,
final ParcelFileDescriptor descriptor, final FutureTask<Boolean> result) {
adapter.onWrite(new PageRange[] {PageRange.ALL_PAGES}, descriptor,