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

Unified Diff: chrome/android/javatests/src/org/chromium/chrome/browser/prerender/ExternalPrerenderHandlerTest.java

Issue 2157033002: android: Add tests for ExternalPrerenderHandler. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 5 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
« no previous file with comments | « chrome/android/java_sources.gni ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/android/javatests/src/org/chromium/chrome/browser/prerender/ExternalPrerenderHandlerTest.java
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/prerender/ExternalPrerenderHandlerTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/prerender/ExternalPrerenderHandlerTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..9c8d8f368200fd7e98b44386e0bf0318542372f1
--- /dev/null
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/prerender/ExternalPrerenderHandlerTest.java
@@ -0,0 +1,155 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.chrome.browser.prerender;
+
+import static org.chromium.base.test.util.Restriction.RESTRICTION_TYPE_NON_LOW_END_DEVICE;
+
+import android.os.Environment;
+import android.test.suitebuilder.annotation.SmallTest;
+
+import org.chromium.base.ThreadUtils;
+import org.chromium.base.test.util.Feature;
+import org.chromium.base.test.util.Restriction;
+import org.chromium.chrome.browser.profiles.Profile;
+import org.chromium.content.browser.test.NativeLibraryTestBase;
+import org.chromium.content.browser.test.util.Criteria;
+import org.chromium.content.browser.test.util.CriteriaHelper;
+import org.chromium.content_public.browser.WebContents;
+import org.chromium.net.test.EmbeddedTestServer;
+
+import java.util.concurrent.Callable;
+
+/** Tests for {@link ExternalPrerenderHandler}. */
+public class ExternalPrerenderHandlerTest extends NativeLibraryTestBase {
+ private static final String TEST_PAGE = "/chrome/test/data/android/google.htnl";
+ private static final String TEST_PAGE2 = "/chrome/test/data/android/about.html";
+ private static final int PRERENDER_DELAY_MS = 500;
+
+ private ExternalPrerenderHandler mExternalPrerenderHandler;
+ private Profile mProfile;
+ private String mTestPage;
+ private String mTestPage2;
+ private EmbeddedTestServer mTestServer;
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ loadNativeLibraryAndInitBrowserProcess();
+ mExternalPrerenderHandler = new ExternalPrerenderHandler();
+
+ final Callable<Profile> profileCallable = new Callable<Profile>() {
+ @Override
+ public Profile call() throws Exception {
+ return Profile.getLastUsedProfile();
+ }
+ };
+ mProfile = ThreadUtils.runOnUiThreadBlocking(profileCallable);
+
+ mTestServer = EmbeddedTestServer.createAndStartFileServer(
+ getInstrumentation().getContext(), Environment.getExternalStorageDirectory());
+ mTestPage = mTestServer.getURL(TEST_PAGE);
+ mTestPage2 = mTestServer.getURL(TEST_PAGE2);
+ }
+
+ @Override
+ protected void tearDown() throws Exception {
+ ThreadUtils.runOnUiThreadBlocking(new Runnable() {
+ @Override
+ public void run() {
+ mExternalPrerenderHandler.cancelCurrentPrerender();
+ }
+ });
+ mTestServer.stopAndDestroyServer();
+ }
+
+ @Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE)
+ @Feature({"Prerender"})
+ @SmallTest
+ public void testAddPrerender() throws Exception {
+ final WebContents webContents = addPrerender(mTestPage);
+ ThreadUtils.runOnUiThreadBlocking(new Runnable() {
+ @Override
+ public void run() {
+ assertTrue(mExternalPrerenderHandler.hasPrerenderedUrl(
+ mProfile, mTestPage, webContents));
+ }
+ });
+ ensureCompletedPrerenderForUrl(webContents, mTestPage);
+ }
+
+ @Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE)
+ @Feature({"Prerender"})
+ @SmallTest
+ public void testAddAndCancelPrerender() throws Exception {
+ final WebContents webContents = addPrerender(mTestPage);
+ ThreadUtils.runOnUiThreadBlocking(new Runnable() {
+ @Override
+ public void run() {
+ assertTrue(mExternalPrerenderHandler.hasPrerenderedUrl(
+ mProfile, mTestPage, webContents));
+ }
+ });
+
+ ThreadUtils.runOnUiThreadBlocking(new Runnable() {
+ @Override
+ public void run() {
+ mExternalPrerenderHandler.cancelCurrentPrerender();
+ assertFalse(mExternalPrerenderHandler.hasPrerenderedUrl(
+ mProfile, mTestPage, webContents));
+ }
+ });
+ }
+
+ @Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE)
+ @Feature({"Prerender"})
+ @SmallTest
+ public void testAddSeveralPrerenders() throws Exception {
+ final WebContents webContents = addPrerender(mTestPage);
+ ThreadUtils.runOnUiThreadBlocking(new Runnable() {
+ @Override
+ public void run() {
+ assertTrue(mExternalPrerenderHandler.hasPrerenderedUrl(
+ mProfile, mTestPage, webContents));
+ }
+ });
Yusuf 2016/07/21 01:13:33 Should rename addPrerender to private WebContents
Benoit L 2016/07/21 11:57:51 Done.
+ Thread.sleep(PRERENDER_DELAY_MS);
+ final WebContents webContents2 = addPrerender(mTestPage2);
+ ThreadUtils.runOnUiThreadBlocking(new Runnable() {
+ @Override
+ public void run() {
+ assertTrue(mExternalPrerenderHandler.hasPrerenderedUrl(
+ mProfile, mTestPage, webContents));
+ assertTrue(mExternalPrerenderHandler.hasPrerenderedUrl(
+ mProfile, mTestPage2, webContents2));
+ }
+ });
+ ensureCompletedPrerenderForUrl(webContents, mTestPage);
+ ensureCompletedPrerenderForUrl(webContents2, mTestPage2);
+ }
+
+ private WebContents addPrerender(final String url) throws Exception {
+ Callable<WebContents> addPrerenderCallable = new Callable<WebContents>() {
+ @Override
+ public WebContents call() {
+ WebContents webContents =
+ mExternalPrerenderHandler.addPrerender(mProfile, url, "", 0, 0, false);
+ assertNotNull(webContents);
+ return webContents;
+ }
+ };
+ return ThreadUtils.runOnUiThreadBlocking(addPrerenderCallable);
+ }
+
+ private void ensureCompletedPrerenderForUrl(final WebContents webContents, final String url)
+ throws Exception {
+ CriteriaHelper.pollUiThread(new Criteria("No Prerender") {
+ @Override
+ public boolean isSatisfied() {
+ return ExternalPrerenderHandler.hasPrerenderedAndFinishedLoadingUrl(
+ mProfile, url, webContents);
+ }
+ });
+ }
+}
« no previous file with comments | « chrome/android/java_sources.gni ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698