Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3)

Unified Diff: chrome/android/javatests/src/org/chromium/chrome/browser/webapps/WebappModeTest.java

Issue 2827393003: Prevent Android tests from being broken by data URL deprecation (Closed)
Patch Set: Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/android/javatests/src/org/chromium/chrome/browser/webapps/WebappModeTest.java
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/webapps/WebappModeTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/webapps/WebappModeTest.java
index a1b133030af272351202896435353041ba0ee984..540f792afc623822f79d235c824173519c6837a9 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/webapps/WebappModeTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/webapps/WebappModeTest.java
@@ -33,6 +33,7 @@ import org.chromium.content.browser.test.util.CriteriaHelper;
import org.chromium.content.browser.test.util.JavaScriptUtils;
import org.chromium.content.browser.test.util.TouchCommon;
import org.chromium.content_public.common.ScreenOrientationValues;
+import org.chromium.net.test.EmbeddedTestServer;
/**
* Tests that WebappActivities are launched correctly.
@@ -61,6 +62,8 @@ public class WebappModeTest extends MultiActivityTestBase {
+ "IWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3wQIFB4cxOfiSQAAABl0RVh0Q29tbWVudABDcmVhdGVkIHdpdG"
+ "ggR0lNUFeBDhcAAAAMSURBVAjXY2AUawEAALcAnI/TkI8AAAAASUVORK5CYII=";
+ private EmbeddedTestServer mTestServer;
+
private Intent createIntent(String id, String url, String title, String icon, boolean addMac) {
Intent intent = new Intent();
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
@@ -115,6 +118,14 @@ public class WebappModeTest extends MultiActivityTestBase {
WEBAPP_1_ID, WEBAPP_1_URL, WEBAPP_1_TITLE, WEBAPP_ICON, true));
}
});
+
+ mTestServer = EmbeddedTestServer.createAndStartServer(getInstrumentation().getContext());
+ }
+
+ @Override
+ public void tearDown() throws Exception {
+ mTestServer.stopAndDestroyServer();
+ super.tearDown();
}
/**
@@ -245,7 +256,7 @@ public class WebappModeTest extends MultiActivityTestBase {
@MediumTest
@Feature({"Webapps"})
public void testWebappHandlesWindowOpenInTabbedMode() throws Exception {
- triggerWindowOpenAndWaitForLoad(ChromeTabbedActivity.class, ONCLICK_LINK, true);
+ triggerWindowOpenAndWaitForLoad(ChromeTabbedActivity.class, getOnClickLinkUrl(), true);
}
/**
@@ -254,7 +265,8 @@ public class WebappModeTest extends MultiActivityTestBase {
@MediumTest
@Feature({"Webapps"})
public void testWebappHandlesSuppressedWindowOpenInTabbedMode() throws Exception {
- triggerWindowOpenAndWaitForLoad(ChromeTabbedActivity.class, HREF_NO_REFERRER_LINK, false);
+ triggerWindowOpenAndWaitForLoad(
+ ChromeTabbedActivity.class, getHrefNoReferrerLinkUrl(), false);
}
private <T extends ChromeActivity> void triggerWindowOpenAndWaitForLoad(
@@ -283,10 +295,10 @@ public class WebappModeTest extends MultiActivityTestBase {
};
ChromeActivity secondActivity = ActivityUtils.waitForActivity(
getInstrumentation(), classToWaitFor, fgTrigger);
- waitForFullLoad(secondActivity, "Page 4");
+ waitForFullLoad(secondActivity, "The Google");
if (checkContents) {
- assertEquals("New WebContents was not created",
- SUCCESS_URL, firstActivity.getActivityTab().getUrl());
+ assertEquals("New WebContents was not created", "SUCCESS",
+ firstActivity.getActivityTab().getTitle());
}
assertNotSame("Wrong Activity in foreground",
firstActivity, ApplicationStatus.getLastTrackedFocusedActivity());
@@ -336,4 +348,49 @@ public class WebappModeTest extends MultiActivityTestBase {
return true;
}
+
+ /** Defines one gigantic link spanning the whole page that creates a new
+ * window with chrome/test/data/android/google.html. Disallowing a referrer from being
+ * sent triggers another codepath.
+ */
+ private String getHrefNoReferrerLinkUrl() {
+ return UrlUtils.encodeHtmlDataUri("<html>"
+ + " <head>"
+ + " <title>href no referrer link page</title>"
+ + " <meta name='viewport'"
+ + " content='width=device-width initial-scale=0.5, maximum-scale=0.5'>"
+ + " <style>"
+ + " body {margin: 0em;} div {width: 100%; height: 100%; background: #011684;}"
+ + " </style>"
+ + " </head>"
+ + " <body>"
+ + " <a href='" + mTestServer.getURL("/chrome/test/data/android/google.html")
+ + "' target='_blank' rel='noreferrer'><div></div></a>"
+ + " </body>");
+ }
+
+ /** Returns a URL where clicking the body triggers a window.open() call to open
+ * chrome/test/data/android/google.html. */
+ private String getOnClickLinkUrl() {
+ return UrlUtils.encodeHtmlDataUri("<html>"
+ + " <head>"
+ + " <title>window.open page</title>"
+ + " <meta name='viewport'"
+ + " content='width=device-width initial-scale=0.5, maximum-scale=0.5'>"
+ + " <style>"
+ + " body {margin: 0em;} div {width: 100%; height: 100%; background: #011684;}"
+ + " </style>"
+ + " <script>"
+ + " function openNewWindow() {"
+ + " var site = window.open('"
+ + mTestServer.getURL("/chrome/test/data/android/google.html") + "');"
+ + " document.title = site ? 'SUCCESS' : 'FAILURE';"
+ + " }"
+ + " </script>"
+ + " </head>"
+ + " <body id='body'>"
+ + " <div onclick='openNewWindow()'></div>"
+ + " </body>"
+ + "</html>");
+ }
}

Powered by Google App Engine
This is Rietveld 408576698