Merge "Snap for 9678878 from b344f6a12cdb8518d327ce4110673a827c0d9ee0 to android10-tests-release" into android10-tests-release
diff --git a/tests/tests/webkit/src/android/webkit/cts/WebViewClientTest.java b/tests/tests/webkit/src/android/webkit/cts/WebViewClientTest.java
index a7b9a71..eb3289b 100644
--- a/tests/tests/webkit/src/android/webkit/cts/WebViewClientTest.java
+++ b/tests/tests/webkit/src/android/webkit/cts/WebViewClientTest.java
@@ -24,6 +24,7 @@
import android.test.ActivityInstrumentationTestCase2;
import android.view.KeyEvent;
import android.view.ViewGroup;
+import android.view.ViewParent;
import android.webkit.HttpAuthHandler;
import android.webkit.RenderProcessGoneDetail;
import android.webkit.SafeBrowsingResponse;
@@ -158,56 +159,70 @@
final WebView childWebView = mOnUiThread.createWebView();
- WebViewOnUiThread childWebViewOnUiThread = new WebViewOnUiThread(childWebView);
- mOnUiThread.setWebChromeClient(new WebChromeClient() {
- @Override
- public boolean onCreateWindow(
- WebView view, boolean isDialog, boolean isUserGesture, Message resultMsg) {
- WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
- childWebView.setWebViewClient(childWebViewClient);
- childWebView.getSettings().setJavaScriptEnabled(true);
- transport.setWebView(childWebView);
- getActivity().addContentView(childWebView, new ViewGroup.LayoutParams(
- ViewGroup.LayoutParams.FILL_PARENT,
- ViewGroup.LayoutParams.WRAP_CONTENT));
- resultMsg.sendToTarget();
- return true;
- }
- });
- {
- final int childCallCount = childWebViewClient.getShouldOverrideUrlLoadingCallCount();
- mOnUiThread.loadUrl(mWebServer.getAssetUrl(TestHtmlConstants.BLANK_TAG_URL));
+ try {
+ WebViewOnUiThread childWebViewOnUiThread = new WebViewOnUiThread(childWebView);
+ mOnUiThread.setWebChromeClient(new WebChromeClient() {
+ @Override
+ public boolean onCreateWindow(
+ WebView view, boolean isDialog, boolean isUserGesture, Message resultMsg) {
+ WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
+ childWebView.setWebViewClient(childWebViewClient);
+ childWebView.getSettings().setJavaScriptEnabled(true);
+ transport.setWebView(childWebView);
+ getActivity().addContentView(childWebView, new ViewGroup.LayoutParams(
+ ViewGroup.LayoutParams.FILL_PARENT,
+ ViewGroup.LayoutParams.WRAP_CONTENT));
+ resultMsg.sendToTarget();
+ return true;
+ }
+ });
+ {
+ final int childCallCount =
+ childWebViewClient.getShouldOverrideUrlLoadingCallCount();
+ mOnUiThread.loadUrl(mWebServer.getAssetUrl(TestHtmlConstants.BLANK_TAG_URL));
- new PollingCheck(TEST_TIMEOUT) {
- @Override
- protected boolean check() {
- return childWebViewClient.hasOnPageFinishedCalled();
- }
- }.run();
- new PollingCheck(TEST_TIMEOUT) {
- @Override
- protected boolean check() {
- return childWebViewClient.getShouldOverrideUrlLoadingCallCount() > childCallCount;
- }
- }.run();
- assertEquals(mWebServer.getAssetUrl(TestHtmlConstants.PAGE_WITH_LINK_URL),
- childWebViewClient.getLastShouldOverrideUrl());
+ new PollingCheck(TEST_TIMEOUT) {
+ @Override
+ protected boolean check() {
+ return childWebViewClient.hasOnPageFinishedCalled();
+ }
+ }.run();
+ new PollingCheck(TEST_TIMEOUT) {
+ @Override
+ protected boolean check() {
+ return childWebViewClient
+ .getShouldOverrideUrlLoadingCallCount() > childCallCount;
+ }
+ }.run();
+ assertEquals(mWebServer.getAssetUrl(TestHtmlConstants.PAGE_WITH_LINK_URL),
+ childWebViewClient.getLastShouldOverrideUrl());
+ }
+
+ final int childCallCount =
+ childWebViewClient.getShouldOverrideUrlLoadingCallCount();
+ final int mainCallCount = mainWebViewClient.getShouldOverrideUrlLoadingCallCount();
+ clickOnLinkUsingJs("link", childWebViewOnUiThread);
+ new PollingCheck(TEST_TIMEOUT) {
+ @Override
+ protected boolean check() {
+ return childWebViewClient
+ .getShouldOverrideUrlLoadingCallCount() > childCallCount;
+ }
+ }.run();
+ assertEquals(mainCallCount, mainWebViewClient.getShouldOverrideUrlLoadingCallCount());
+ // PAGE_WITH_LINK_URL has a link to BLANK_PAGE_URL (an arbitrary page
+ // also controlled by the test server)
+ assertEquals(mWebServer.getAssetUrl(TestHtmlConstants.BLANK_PAGE_URL),
+ childWebViewClient.getLastShouldOverrideUrl());
+ } finally {
+ WebkitUtils.onMainThreadSync(() -> {
+ ViewParent parent = childWebView.getParent();
+ if (parent instanceof ViewGroup) {
+ ((ViewGroup) parent).removeView(childWebView);
+ }
+ childWebView.destroy();
+ });
}
-
- final int childCallCount = childWebViewClient.getShouldOverrideUrlLoadingCallCount();
- final int mainCallCount = mainWebViewClient.getShouldOverrideUrlLoadingCallCount();
- clickOnLinkUsingJs("link", childWebViewOnUiThread);
- new PollingCheck(TEST_TIMEOUT) {
- @Override
- protected boolean check() {
- return childWebViewClient.getShouldOverrideUrlLoadingCallCount() > childCallCount;
- }
- }.run();
- assertEquals(mainCallCount, mainWebViewClient.getShouldOverrideUrlLoadingCallCount());
- // PAGE_WITH_LINK_URL has a link to BLANK_PAGE_URL (an arbitrary page also controlled by the
- // test server)
- assertEquals(mWebServer.getAssetUrl(TestHtmlConstants.BLANK_PAGE_URL),
- childWebViewClient.getLastShouldOverrideUrl());
}
private void clickOnLinkUsingJs(final String linkId, WebViewOnUiThread webViewOnUiThread) {