Merge "Merge "Merge "Merge "Avoid relying on undocumented behaviour in popup test." into marshmallow-cts-dev am: d5b75ce7c4" into nougat-cts-dev am: 482aa6a49d" into nougat-mr1-cts-dev am: c9d7068949" into oreo-cts-dev
diff --git a/tests/tests/webkit/src/android/webkit/cts/WebSettingsTest.java b/tests/tests/webkit/src/android/webkit/cts/WebSettingsTest.java
index f10e7fd..55e3c40 100644
--- a/tests/tests/webkit/src/android/webkit/cts/WebSettingsTest.java
+++ b/tests/tests/webkit/src/android/webkit/cts/WebSettingsTest.java
@@ -19,11 +19,13 @@
import android.graphics.Bitmap;
import android.net.http.SslError;
import android.os.Build;
+import android.os.Message;
import android.test.ActivityInstrumentationTestCase2;
import android.util.Base64;
import android.util.Log;
import android.webkit.ConsoleMessage;
import android.webkit.SslErrorHandler;
+import android.webkit.WebChromeClient;
import android.webkit.WebIconDatabase;
import android.webkit.WebResourceResponse;
import android.webkit.WebResourceRequest;
@@ -42,6 +44,8 @@
import java.io.FileOutputStream;
import java.nio.charset.StandardCharsets;
import java.util.Locale;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -409,26 +413,38 @@
return;
}
mSettings.setJavaScriptEnabled(true);
+ mSettings.setSupportMultipleWindows(true);
+ startWebServer();
+
+ final WebView childWebView = mOnUiThread.createWebView();
+ final CountDownLatch latch = new CountDownLatch(1);
+ mOnUiThread.setWebChromeClient(new WebChromeClient() {
+ @Override
+ public boolean onCreateWindow(
+ WebView view, boolean isDialog, boolean isUserGesture, Message resultMsg) {
+ WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
+ transport.setWebView(childWebView);
+ resultMsg.sendToTarget();
+ latch.countDown();
+ return true;
+ }
+ });
mSettings.setJavaScriptCanOpenWindowsAutomatically(false);
assertFalse(mSettings.getJavaScriptCanOpenWindowsAutomatically());
- loadAssetUrl(TestHtmlConstants.POPUP_URL);
+ mOnUiThread.loadUrl(mWebServer.getAssetUrl(TestHtmlConstants.POPUP_URL));
new PollingCheck(WEBVIEW_TIMEOUT) {
@Override
protected boolean check() {
return "Popup blocked".equals(mOnUiThread.getTitle());
}
}.run();
+ assertEquals(1, latch.getCount());
mSettings.setJavaScriptCanOpenWindowsAutomatically(true);
assertTrue(mSettings.getJavaScriptCanOpenWindowsAutomatically());
- loadAssetUrl(TestHtmlConstants.POPUP_URL);
- new PollingCheck(WEBVIEW_TIMEOUT) {
- @Override
- protected boolean check() {
- return "Popup allowed".equals(mOnUiThread.getTitle());
- }
- }.run();
+ mOnUiThread.loadUrl(mWebServer.getAssetUrl(TestHtmlConstants.POPUP_URL));
+ assertTrue(latch.await(WEBVIEW_TIMEOUT, TimeUnit.MILLISECONDS));
}
public void testAccessJavaScriptEnabled() throws Exception {