| Index: android_webview/javatests/src/org/chromium/android_webview/test/PopupWindowTest.java
|
| diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/PopupWindowTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/PopupWindowTest.java
|
| index a81e9070fd5577fddc9cde7cf413743f6c61260a..a59030da71ac59acc63c087bd5110e0ca6f6aaef 100644
|
| --- a/android_webview/javatests/src/org/chromium/android_webview/test/PopupWindowTest.java
|
| +++ b/android_webview/javatests/src/org/chromium/android_webview/test/PopupWindowTest.java
|
| @@ -5,13 +5,14 @@
|
| package org.chromium.android_webview.test;
|
|
|
| import android.os.Build;
|
| -import android.test.suitebuilder.annotation.SmallTest;
|
| +import android.test.suitebuilder.annotation.MediumTest;
|
|
|
| import org.chromium.android_webview.AwContents;
|
| import org.chromium.android_webview.test.util.AwTestTouchUtils;
|
| import org.chromium.android_webview.test.util.CommonResources;
|
| import org.chromium.base.test.util.Feature;
|
| import org.chromium.base.test.util.MinAndroidSdkLevel;
|
| +import org.chromium.content.browser.test.util.TestCallbackHelperContainer;
|
| import org.chromium.net.test.util.TestWebServer;
|
|
|
| import java.util.concurrent.Callable;
|
| @@ -38,6 +39,9 @@ public class PopupWindowTest extends AwTestBase {
|
| mParentContentsClient = new TestAwContentsClient();
|
| mParentContainerView = createAwTestContainerViewOnMainSync(mParentContentsClient);
|
| mParentContents = mParentContainerView.getAwContents();
|
| + mPopupContentsClient = new TestAwContentsClient();
|
| + mPopupContainerView = createAwTestContainerViewOnMainSync(mPopupContentsClient);
|
| + mPopupContents = mPopupContainerView.getAwContents();
|
| mWebServer = TestWebServer.start();
|
| }
|
|
|
| @@ -49,7 +53,9 @@ public class PopupWindowTest extends AwTestBase {
|
| super.tearDown();
|
| }
|
|
|
| - private void triggerPopup() throws Throwable {
|
| + // It is expected that the parent page contains a link that opens a popup window,
|
| + // and the test server is already pre-loaded with both parent and popup pages.
|
| + private void triggerPopup(String parentUrl) throws Throwable {
|
| enableJavaScriptOnUiThread(mParentContents);
|
| getInstrumentation().runOnMainSync(new Runnable() {
|
| @Override
|
| @@ -59,21 +65,6 @@ public class PopupWindowTest extends AwTestBase {
|
| }
|
| });
|
|
|
| - final String popupPath = "/popup.html";
|
| -
|
| - final String parentPageHtml = CommonResources.makeHtmlPageFrom("",
|
| - "<script>"
|
| - + "function tryOpenWindow() {"
|
| - + " var newWindow = window.open('" + popupPath + "');"
|
| - + "}</script>"
|
| - + "<a class=\"full_view\" onclick=\"tryOpenWindow();\">Click me!</a>");
|
| - final String popupPageHtml = CommonResources.makeHtmlPageFrom(
|
| - "<title>" + POPUP_TITLE + "</title>",
|
| - "This is a popup window");
|
| -
|
| - final String parentUrl = mWebServer.setResponse("/popupParent.html", parentPageHtml, null);
|
| - mWebServer.setResponse(popupPath, popupPageHtml, null);
|
| -
|
| mParentContentsClient.getOnCreateWindowHelper().setReturnValue(true);
|
| loadUrlSync(mParentContents,
|
| mParentContentsClient.getOnPageFinishedHelper(),
|
| @@ -88,10 +79,6 @@ public class PopupWindowTest extends AwTestBase {
|
| }
|
|
|
| private void connectPendingPopup() throws Exception {
|
| - mPopupContentsClient = new TestAwContentsClient();
|
| - mPopupContainerView = createAwTestContainerViewOnMainSync(mPopupContentsClient);
|
| - mPopupContents = mPopupContainerView.getAwContents();
|
| -
|
| getInstrumentation().runOnMainSync(new Runnable() {
|
| @Override
|
| public void run() {
|
| @@ -100,10 +87,22 @@ public class PopupWindowTest extends AwTestBase {
|
| });
|
| }
|
|
|
| - @SmallTest
|
| + @MediumTest
|
| @Feature({"AndroidWebView"})
|
| public void testPopupWindow() throws Throwable {
|
| - triggerPopup();
|
| + final String popupPath = "/popup.html";
|
| + final String parentPageHtml = CommonResources.makeHtmlPageFrom("",
|
| + "<script>"
|
| + + "function tryOpenWindow() {"
|
| + + " var newWindow = window.open('" + popupPath + "');"
|
| + + "}</script>"
|
| + + "<a class=\"full_view\" onclick=\"tryOpenWindow();\">Click me!</a>");
|
| + final String popupPageHtml = CommonResources.makeHtmlPageFrom(
|
| + "<title>" + POPUP_TITLE + "</title>",
|
| + "This is a popup window");
|
| + final String parentUrl = mWebServer.setResponse("/popupParent.html", parentPageHtml, null);
|
| + mWebServer.setResponse(popupPath, popupPageHtml, null);
|
| + triggerPopup(parentUrl);
|
| connectPendingPopup();
|
| poll(new Callable<Boolean>() {
|
| @Override
|
| @@ -112,4 +111,33 @@ public class PopupWindowTest extends AwTestBase {
|
| }
|
| });
|
| }
|
| +
|
| + @MediumTest
|
| + @Feature({"AndroidWebView"})
|
| + public void testOnPageFinishedCalledAfterModifyingPageSource() throws Throwable {
|
| + final String popupPath = "/popup.html";
|
| + final String popupUrl = mWebServer.setResponseWithNoContentStatus(popupPath);
|
| + final String parentHtml = CommonResources.makeHtmlPageFrom("",
|
| + "<script>"
|
| + + "function tryOpenWindow() {"
|
| + + " window.popupWindow = window.open('" + popupPath + "');"
|
| + + "}"
|
| + + "function modifyDomOfPopup() {"
|
| + + " window.popupWindow.document.body.innerHTML = 'Hello from the parent!';"
|
| + + "}</script>"
|
| + + "<a class='full_view' onclick='tryOpenWindow();'>Click me!</a>");
|
| + final String parentUrl = mWebServer.setResponse("/parent.html", parentHtml, null);
|
| + triggerPopup(parentUrl);
|
| + TestCallbackHelperContainer.OnPageFinishedHelper onPageFinishedHelper =
|
| + mPopupContentsClient.getOnPageFinishedHelper();
|
| + int onPageFinishedCallCount = onPageFinishedHelper.getCallCount();
|
| + connectPendingPopup();
|
| + onPageFinishedHelper.waitForCallback(onPageFinishedCallCount);
|
| +
|
| + onPageFinishedCallCount = onPageFinishedHelper.getCallCount();
|
| + executeJavaScriptAndWaitForResult(mParentContents, mParentContentsClient,
|
| + "modifyDomOfPopup()");
|
| + onPageFinishedHelper.waitForCallback(onPageFinishedCallCount);
|
| + assertEquals("about:blank", onPageFinishedHelper.getUrl());
|
| + }
|
| }
|
|
|