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 |