blob: 22ee9ca02a4b647d2dc72a01f147ebbb77353000 [file] [log] [blame]
package android.uirendering.cts.util;
import android.view.ViewTreeObserver.OnDrawListener;
import android.webkit.WebView;
import android.webkit.WebView.VisualStateCallback;
import android.webkit.WebViewClient;
import java.util.concurrent.CountDownLatch;
public final class WebViewReadyHelper {
private final CountDownLatch mLatch;
private final WebView mWebView;
public WebViewReadyHelper(WebView webview, CountDownLatch latch) {
mWebView = webview;
mLatch = latch;
mWebView.setWebViewClient(mClient);
}
public void loadData(String data) {
mWebView.loadData(data, null, null);
}
private WebViewClient mClient = new WebViewClient() {
public void onPageFinished(WebView view, String url) {
mWebView.postVisualStateCallback(0, mVisualStateCallback);
}
};
private VisualStateCallback mVisualStateCallback = new VisualStateCallback() {
@Override
public void onComplete(long requestId) {
mWebView.getViewTreeObserver().addOnDrawListener(mOnDrawListener);
mWebView.invalidate();
}
};
private OnDrawListener mOnDrawListener = new OnDrawListener() {
@Override
public void onDraw() {
mWebView.post(() -> {
mWebView.getViewTreeObserver().removeOnDrawListener(mOnDrawListener);
mLatch.countDown();
});
}
};
}