Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 package org.chromium.chrome.browser.prerender; | |
| 6 | |
| 7 import static org.chromium.base.test.util.Restriction.RESTRICTION_TYPE_NON_LOW_E ND_DEVICE; | |
| 8 | |
| 9 import android.os.Environment; | |
| 10 import android.test.suitebuilder.annotation.SmallTest; | |
| 11 | |
| 12 import org.chromium.base.ThreadUtils; | |
| 13 import org.chromium.base.test.util.Feature; | |
| 14 import org.chromium.base.test.util.Restriction; | |
| 15 import org.chromium.chrome.browser.profiles.Profile; | |
| 16 import org.chromium.content.browser.test.NativeLibraryTestBase; | |
| 17 import org.chromium.content.browser.test.util.Criteria; | |
| 18 import org.chromium.content.browser.test.util.CriteriaHelper; | |
| 19 import org.chromium.content_public.browser.WebContents; | |
| 20 import org.chromium.net.test.EmbeddedTestServer; | |
| 21 | |
| 22 import java.util.concurrent.Callable; | |
| 23 | |
| 24 /** Tests for {@link ExternalPrerenderHandler}. */ | |
| 25 public class ExternalPrerenderHandlerTest extends NativeLibraryTestBase { | |
| 26 private static final String TEST_PAGE = "/chrome/test/data/android/google.ht nl"; | |
| 27 private static final String TEST_PAGE2 = "/chrome/test/data/android/about.ht ml"; | |
| 28 private static final int PRERENDER_DELAY_MS = 500; | |
| 29 | |
| 30 private ExternalPrerenderHandler mExternalPrerenderHandler; | |
| 31 private Profile mProfile; | |
| 32 private String mTestPage; | |
| 33 private String mTestPage2; | |
| 34 private EmbeddedTestServer mTestServer; | |
| 35 | |
| 36 @Override | |
| 37 protected void setUp() throws Exception { | |
| 38 super.setUp(); | |
| 39 loadNativeLibraryAndInitBrowserProcess(); | |
| 40 mExternalPrerenderHandler = new ExternalPrerenderHandler(); | |
| 41 | |
| 42 final Callable<Profile> profileCallable = new Callable<Profile>() { | |
| 43 @Override | |
| 44 public Profile call() throws Exception { | |
| 45 return Profile.getLastUsedProfile(); | |
| 46 } | |
| 47 }; | |
| 48 mProfile = ThreadUtils.runOnUiThreadBlocking(profileCallable); | |
| 49 | |
| 50 mTestServer = EmbeddedTestServer.createAndStartFileServer( | |
| 51 getInstrumentation().getContext(), Environment.getExternalStorag eDirectory()); | |
| 52 mTestPage = mTestServer.getURL(TEST_PAGE); | |
| 53 mTestPage2 = mTestServer.getURL(TEST_PAGE2); | |
| 54 } | |
| 55 | |
| 56 @Override | |
| 57 protected void tearDown() throws Exception { | |
| 58 ThreadUtils.runOnUiThreadBlocking(new Runnable() { | |
| 59 @Override | |
| 60 public void run() { | |
| 61 mExternalPrerenderHandler.cancelCurrentPrerender(); | |
| 62 } | |
| 63 }); | |
| 64 mTestServer.stopAndDestroyServer(); | |
| 65 } | |
| 66 | |
| 67 @Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE) | |
| 68 @Feature({"Prerender"}) | |
| 69 @SmallTest | |
| 70 public void testAddPrerender() throws Exception { | |
| 71 final WebContents webContents = addPrerender(mTestPage); | |
| 72 ThreadUtils.runOnUiThreadBlocking(new Runnable() { | |
| 73 @Override | |
| 74 public void run() { | |
| 75 assertTrue(mExternalPrerenderHandler.hasPrerenderedUrl( | |
| 76 mProfile, mTestPage, webContents)); | |
| 77 } | |
| 78 }); | |
| 79 ensureCompletedPrerenderForUrl(webContents, mTestPage); | |
| 80 } | |
| 81 | |
| 82 @Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE) | |
| 83 @Feature({"Prerender"}) | |
| 84 @SmallTest | |
| 85 public void testAddAndCancelPrerender() throws Exception { | |
| 86 final WebContents webContents = addPrerender(mTestPage); | |
| 87 ThreadUtils.runOnUiThreadBlocking(new Runnable() { | |
| 88 @Override | |
| 89 public void run() { | |
| 90 assertTrue(mExternalPrerenderHandler.hasPrerenderedUrl( | |
| 91 mProfile, mTestPage, webContents)); | |
| 92 } | |
| 93 }); | |
| 94 | |
| 95 ThreadUtils.runOnUiThreadBlocking(new Runnable() { | |
| 96 @Override | |
| 97 public void run() { | |
| 98 mExternalPrerenderHandler.cancelCurrentPrerender(); | |
| 99 assertFalse(mExternalPrerenderHandler.hasPrerenderedUrl( | |
| 100 mProfile, mTestPage, webContents)); | |
| 101 } | |
| 102 }); | |
| 103 } | |
| 104 | |
| 105 @Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE) | |
| 106 @Feature({"Prerender"}) | |
| 107 @SmallTest | |
| 108 public void testAddSeveralPrerenders() throws Exception { | |
| 109 final WebContents webContents = addPrerender(mTestPage); | |
| 110 ThreadUtils.runOnUiThreadBlocking(new Runnable() { | |
| 111 @Override | |
| 112 public void run() { | |
| 113 assertTrue(mExternalPrerenderHandler.hasPrerenderedUrl( | |
| 114 mProfile, mTestPage, webContents)); | |
| 115 } | |
| 116 }); | |
|
Yusuf
2016/07/21 01:13:33
Should rename addPrerender to
private WebContents
Benoit L
2016/07/21 11:57:51
Done.
| |
| 117 Thread.sleep(PRERENDER_DELAY_MS); | |
| 118 final WebContents webContents2 = addPrerender(mTestPage2); | |
| 119 ThreadUtils.runOnUiThreadBlocking(new Runnable() { | |
| 120 @Override | |
| 121 public void run() { | |
| 122 assertTrue(mExternalPrerenderHandler.hasPrerenderedUrl( | |
| 123 mProfile, mTestPage, webContents)); | |
| 124 assertTrue(mExternalPrerenderHandler.hasPrerenderedUrl( | |
| 125 mProfile, mTestPage2, webContents2)); | |
| 126 } | |
| 127 }); | |
| 128 ensureCompletedPrerenderForUrl(webContents, mTestPage); | |
| 129 ensureCompletedPrerenderForUrl(webContents2, mTestPage2); | |
| 130 } | |
| 131 | |
| 132 private WebContents addPrerender(final String url) throws Exception { | |
| 133 Callable<WebContents> addPrerenderCallable = new Callable<WebContents>() { | |
| 134 @Override | |
| 135 public WebContents call() { | |
| 136 WebContents webContents = | |
| 137 mExternalPrerenderHandler.addPrerender(mProfile, url, "" , 0, 0, false); | |
| 138 assertNotNull(webContents); | |
| 139 return webContents; | |
| 140 } | |
| 141 }; | |
| 142 return ThreadUtils.runOnUiThreadBlocking(addPrerenderCallable); | |
| 143 } | |
| 144 | |
| 145 private void ensureCompletedPrerenderForUrl(final WebContents webContents, f inal String url) | |
| 146 throws Exception { | |
| 147 CriteriaHelper.pollUiThread(new Criteria("No Prerender") { | |
| 148 @Override | |
| 149 public boolean isSatisfied() { | |
| 150 return ExternalPrerenderHandler.hasPrerenderedAndFinishedLoading Url( | |
| 151 mProfile, url, webContents); | |
| 152 } | |
| 153 }); | |
| 154 } | |
| 155 } | |
| OLD | NEW |