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

Side by Side Diff: chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/CustomTabsConnectionTest.java

Issue 2766373004: Convert the rest of chrome_public_test_apk InstrumentationTestCases to JUnit4 (Closed)
Patch Set: nits and rebase 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 unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package org.chromium.chrome.browser.customtabs; 5 package org.chromium.chrome.browser.customtabs;
6 6
7 import static org.chromium.base.test.util.Restriction.RESTRICTION_TYPE_NON_LOW_E ND_DEVICE; 7 import static org.chromium.base.test.util.Restriction.RESTRICTION_TYPE_NON_LOW_E ND_DEVICE;
8 8
9 import android.app.Application; 9 import android.app.Application;
10 import android.content.Context; 10 import android.content.Context;
11 import android.content.Intent; 11 import android.content.Intent;
12 import android.net.Uri; 12 import android.net.Uri;
13 import android.os.Build; 13 import android.os.Build;
14 import android.os.Bundle; 14 import android.os.Bundle;
15 import android.os.Process; 15 import android.os.Process;
16 import android.support.customtabs.CustomTabsService; 16 import android.support.customtabs.CustomTabsService;
17 import android.support.customtabs.CustomTabsSessionToken; 17 import android.support.customtabs.CustomTabsSessionToken;
18 import android.support.test.InstrumentationRegistry;
18 import android.support.test.filters.SmallTest; 19 import android.support.test.filters.SmallTest;
19 import android.test.InstrumentationTestCase; 20
21 import org.junit.After;
22 import org.junit.Assert;
23 import org.junit.Before;
24 import org.junit.Test;
25 import org.junit.runner.RunWith;
20 26
21 import org.chromium.base.PathUtils; 27 import org.chromium.base.PathUtils;
22 import org.chromium.base.ThreadUtils; 28 import org.chromium.base.ThreadUtils;
23 import org.chromium.base.library_loader.LibraryLoader; 29 import org.chromium.base.library_loader.LibraryLoader;
24 import org.chromium.base.library_loader.LibraryProcessType; 30 import org.chromium.base.library_loader.LibraryProcessType;
25 import org.chromium.base.test.util.Restriction; 31 import org.chromium.base.test.util.Restriction;
26 import org.chromium.base.test.util.RetryOnFailure; 32 import org.chromium.base.test.util.RetryOnFailure;
27 import org.chromium.chrome.browser.WarmupManager; 33 import org.chromium.chrome.browser.WarmupManager;
28 import org.chromium.chrome.browser.preferences.PrefServiceBridge; 34 import org.chromium.chrome.browser.preferences.PrefServiceBridge;
35 import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
29 import org.chromium.content_public.browser.WebContents; 36 import org.chromium.content_public.browser.WebContents;
30 37
31 import java.util.ArrayList; 38 import java.util.ArrayList;
32 import java.util.List; 39 import java.util.List;
33 import java.util.concurrent.Callable; 40 import java.util.concurrent.Callable;
34 import java.util.concurrent.FutureTask; 41 import java.util.concurrent.FutureTask;
35 42
36 /** Tests for CustomTabsConnection. */ 43 /** Tests for CustomTabsConnection. */
37 public class CustomTabsConnectionTest extends InstrumentationTestCase { 44 @RunWith(ChromeJUnit4ClassRunner.class)
45 public class CustomTabsConnectionTest {
38 private CustomTabsConnection mCustomTabsConnection; 46 private CustomTabsConnection mCustomTabsConnection;
39 private static final String URL = "http://www.google.com"; 47 private static final String URL = "http://www.google.com";
40 private static final String URL2 = "https://www.android.com"; 48 private static final String URL2 = "https://www.android.com";
41 private static final String INVALID_SCHEME_URL = "intent://www.google.com"; 49 private static final String INVALID_SCHEME_URL = "intent://www.google.com";
42 private static final String PRIVATE_DATA_DIRECTORY_SUFFIX = "chrome"; 50 private static final String PRIVATE_DATA_DIRECTORY_SUFFIX = "chrome";
43 51
44 private Context mAppContext; 52 private Context mAppContext;
45 53
46 @Override 54 @Before
47 protected void setUp() throws Exception { 55 public void setUp() throws Exception {
48 super.setUp(); 56 mAppContext = InstrumentationRegistry.getInstrumentation()
49 mAppContext = getInstrumentation().getTargetContext().getApplicationCont ext(); 57 .getTargetContext()
58 .getApplicationContext();
50 PathUtils.setPrivateDataDirectorySuffix(PRIVATE_DATA_DIRECTORY_SUFFIX); 59 PathUtils.setPrivateDataDirectorySuffix(PRIVATE_DATA_DIRECTORY_SUFFIX);
51 LibraryLoader.get(LibraryProcessType.PROCESS_BROWSER).ensureInitialized( ); 60 LibraryLoader.get(LibraryProcessType.PROCESS_BROWSER).ensureInitialized( );
52 mCustomTabsConnection = CustomTabsTestUtils.setUpConnection((Application ) mAppContext); 61 mCustomTabsConnection = CustomTabsTestUtils.setUpConnection((Application ) mAppContext);
53 mCustomTabsConnection.resetThrottling(mAppContext, Process.myUid()); 62 mCustomTabsConnection.resetThrottling(mAppContext, Process.myUid());
54 } 63 }
55 64
56 @Override 65 @After
57 protected void tearDown() throws Exception { 66 public void tearDown() throws Exception {
58 super.tearDown();
59 CustomTabsTestUtils.cleanupSessions(mCustomTabsConnection); 67 CustomTabsTestUtils.cleanupSessions(mCustomTabsConnection);
60 ThreadUtils.runOnUiThreadBlocking(new Runnable() { 68 ThreadUtils.runOnUiThreadBlocking(new Runnable() {
61 @Override 69 @Override
62 public void run() { 70 public void run() {
63 WarmupManager.getInstance().destroySpareWebContents(); 71 WarmupManager.getInstance().destroySpareWebContents();
64 } 72 }
65 }); 73 });
66 } 74 }
67 75
68 /** 76 /**
69 * Tests that we can create a new session. Registering with a null callback 77 * Tests that we can create a new session. Registering with a null callback
70 * fails, as well as multiple sessions with the same callback. 78 * fails, as well as multiple sessions with the same callback.
71 */ 79 */
80 @Test
72 @SmallTest 81 @SmallTest
73 public void testNewSession() { 82 public void testNewSession() {
74 assertEquals(false, mCustomTabsConnection.newSession(null)); 83 Assert.assertEquals(false, mCustomTabsConnection.newSession(null));
75 CustomTabsSessionToken token = CustomTabsSessionToken.createDummySession TokenForTesting(); 84 CustomTabsSessionToken token = CustomTabsSessionToken.createDummySession TokenForTesting();
76 assertEquals(true, mCustomTabsConnection.newSession(token)); 85 Assert.assertEquals(true, mCustomTabsConnection.newSession(token));
77 assertEquals(false, mCustomTabsConnection.newSession(token)); 86 Assert.assertEquals(false, mCustomTabsConnection.newSession(token));
78 } 87 }
79 88
80 /** 89 /**
81 * Tests that we can create several sessions. 90 * Tests that we can create several sessions.
82 */ 91 */
92 @Test
83 @SmallTest 93 @SmallTest
84 public void testSeveralSessions() { 94 public void testSeveralSessions() {
85 CustomTabsSessionToken token = CustomTabsSessionToken.createDummySession TokenForTesting(); 95 CustomTabsSessionToken token = CustomTabsSessionToken.createDummySession TokenForTesting();
86 assertEquals(true, mCustomTabsConnection.newSession(token)); 96 Assert.assertEquals(true, mCustomTabsConnection.newSession(token));
87 CustomTabsSessionToken token2 = CustomTabsSessionToken.createDummySessio nTokenForTesting(); 97 CustomTabsSessionToken token2 = CustomTabsSessionToken.createDummySessio nTokenForTesting();
88 assertEquals(true, mCustomTabsConnection.newSession(token2)); 98 Assert.assertEquals(true, mCustomTabsConnection.newSession(token2));
89 } 99 }
90 100
91 /** 101 /**
92 * Tests that {@link CustomTabsConnection#warmup(long)} succeeds and can 102 * Tests that {@link CustomTabsConnection#warmup(long)} succeeds and can
93 * be issued multiple times. 103 * be issued multiple times.
94 */ 104 */
105 @Test
95 @SmallTest 106 @SmallTest
96 public void testCanWarmup() { 107 public void testCanWarmup() {
97 assertEquals(true, mCustomTabsConnection.warmup(0)); 108 Assert.assertEquals(true, mCustomTabsConnection.warmup(0));
98 assertEquals(true, mCustomTabsConnection.warmup(0)); 109 Assert.assertEquals(true, mCustomTabsConnection.warmup(0));
99 } 110 }
100 111
112 @Test
101 @SmallTest 113 @SmallTest
102 @Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE) 114 @Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE)
103 public void testCreateSpareRenderer() { 115 public void testCreateSpareRenderer() {
104 assertTrue(mCustomTabsConnection.warmup(0)); 116 Assert.assertTrue(mCustomTabsConnection.warmup(0));
105 // On UI thread because: 117 // On UI thread because:
106 // 1. takeSpareWebContents needs to be called from the UI thread. 118 // 1. takeSpareWebContents needs to be called from the UI thread.
107 // 2. warmup() is non-blocking and posts tasks to the UI thread, it ensu res proper ordering. 119 // 2. warmup() is non-blocking and posts tasks to the UI thread, it ensu res proper ordering.
108 ThreadUtils.runOnUiThreadBlocking(new Runnable() { 120 ThreadUtils.runOnUiThreadBlocking(new Runnable() {
109 @Override 121 @Override
110 public void run() { 122 public void run() {
111 WarmupManager warmupManager = WarmupManager.getInstance(); 123 WarmupManager warmupManager = WarmupManager.getInstance();
112 assertTrue(warmupManager.hasSpareWebContents()); 124 Assert.assertTrue(warmupManager.hasSpareWebContents());
113 WebContents webContents = warmupManager.takeSpareWebContents(fal se, false); 125 WebContents webContents = warmupManager.takeSpareWebContents(fal se, false);
114 assertNotNull(webContents); 126 Assert.assertNotNull(webContents);
115 assertFalse(warmupManager.hasSpareWebContents()); 127 Assert.assertFalse(warmupManager.hasSpareWebContents());
116 webContents.destroy(); 128 webContents.destroy();
117 } 129 }
118 }); 130 });
119 } 131 }
120 132
133 @Test
121 @SmallTest 134 @SmallTest
122 @Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE) 135 @Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE)
123 public void testCreateSpareRendererCanBeRecreated() { 136 public void testCreateSpareRendererCanBeRecreated() {
124 assertTrue(mCustomTabsConnection.warmup(0)); 137 Assert.assertTrue(mCustomTabsConnection.warmup(0));
125 ThreadUtils.runOnUiThreadBlocking(new Runnable() { 138 ThreadUtils.runOnUiThreadBlocking(new Runnable() {
126 @Override 139 @Override
127 public void run() { 140 public void run() {
128 assertSpareWebContentsNotNullAndDestroy(); 141 assertSpareWebContentsNotNullAndDestroy();
129 assertFalse(WarmupManager.getInstance().hasSpareWebContents()); 142 Assert.assertFalse(WarmupManager.getInstance().hasSpareWebConten ts());
130 } 143 }
131 }); 144 });
132 assertTrue(mCustomTabsConnection.warmup(0)); 145 Assert.assertTrue(mCustomTabsConnection.warmup(0));
133 ThreadUtils.runOnUiThreadBlocking(new Runnable() { 146 ThreadUtils.runOnUiThreadBlocking(new Runnable() {
134 @Override 147 @Override
135 public void run() { 148 public void run() {
136 assertSpareWebContentsNotNullAndDestroy(); 149 assertSpareWebContentsNotNullAndDestroy();
137 } 150 }
138 }); 151 });
139 } 152 }
140 153
154 @Test
141 @SmallTest 155 @SmallTest
142 @Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE) 156 @Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE)
143 public void testPrerenderDestroysSpareRenderer() { 157 public void testPrerenderDestroysSpareRenderer() {
144 final CustomTabsSessionToken token = assertWarmupAndMayLaunchUrl(null, U RL, true); 158 final CustomTabsSessionToken token = assertWarmupAndMayLaunchUrl(null, U RL, true);
145 ThreadUtils.runOnUiThreadBlocking(new Runnable() { 159 ThreadUtils.runOnUiThreadBlocking(new Runnable() {
146 @Override 160 @Override
147 public void run() { 161 public void run() {
148 assertFalse(WarmupManager.getInstance().hasSpareWebContents()); 162 Assert.assertFalse(WarmupManager.getInstance().hasSpareWebConten ts());
149 String referrer = 163 String referrer =
150 mCustomTabsConnection.getReferrerForSession(token).getUr l(); 164 mCustomTabsConnection.getReferrerForSession(token).getUr l();
151 WebContents webContents = 165 WebContents webContents =
152 mCustomTabsConnection.takePrerenderedUrl(token, URL, ref errer); 166 mCustomTabsConnection.takePrerenderedUrl(token, URL, ref errer);
153 assertNotNull(webContents); 167 Assert.assertNotNull(webContents);
154 webContents.destroy(); 168 webContents.destroy();
155 } 169 }
156 }); 170 });
157 } 171 }
158 172
159 /* 173 /*
160 * Tests that when the disconnection notification comes from a non-UI thread , Chrome doesn't 174 * Tests that when the disconnection notification comes from a non-UI thread , Chrome doesn't
161 * crash. Non-regression test for crbug.com/623128. 175 * crash. Non-regression test for crbug.com/623128.
162 */ 176 */
177 @Test
163 @SmallTest 178 @SmallTest
164 @Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE) 179 @Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE)
165 public void testPrerenderAndDisconnectOnOtherThread() { 180 public void testPrerenderAndDisconnectOnOtherThread() {
166 final CustomTabsSessionToken token = assertWarmupAndMayLaunchUrl(null, U RL, true); 181 final CustomTabsSessionToken token = assertWarmupAndMayLaunchUrl(null, U RL, true);
167 final Thread otherThread = new Thread(new Runnable() { 182 final Thread otherThread = new Thread(new Runnable() {
168 @Override 183 @Override
169 public void run() { 184 public void run() {
170 mCustomTabsConnection.cleanUpSession(token); 185 mCustomTabsConnection.cleanUpSession(token);
171 } 186 }
172 }); 187 });
173 188
174 ThreadUtils.runOnUiThreadBlocking(new Runnable() { 189 ThreadUtils.runOnUiThreadBlocking(new Runnable() {
175 @Override 190 @Override
176 public void run() { 191 public void run() {
177 otherThread.start(); 192 otherThread.start();
178 } 193 }
179 }); 194 });
180 // Should not crash, hence no assertions below. 195 // Should not crash, hence no assertions below.
181 } 196 }
182 197
198 @Test
183 @SmallTest 199 @SmallTest
184 @Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE) 200 @Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE)
185 public void testMayLaunchUrlKeepsSpareRendererWithoutPrerendering() { 201 public void testMayLaunchUrlKeepsSpareRendererWithoutPrerendering() {
186 assertTrue(mCustomTabsConnection.warmup(0)); 202 Assert.assertTrue(mCustomTabsConnection.warmup(0));
187 final CustomTabsSessionToken token = 203 final CustomTabsSessionToken token =
188 CustomTabsSessionToken.createDummySessionTokenForTesting(); 204 CustomTabsSessionToken.createDummySessionTokenForTesting();
189 assertTrue(mCustomTabsConnection.newSession(token)); 205 Assert.assertTrue(mCustomTabsConnection.newSession(token));
190 206
191 Bundle extras = new Bundle(); 207 Bundle extras = new Bundle();
192 extras.putInt( 208 extras.putInt(
193 CustomTabsConnection.DEBUG_OVERRIDE_KEY, CustomTabsConnection.NO _PRERENDERING); 209 CustomTabsConnection.DEBUG_OVERRIDE_KEY, CustomTabsConnection.NO _PRERENDERING);
194 assertTrue(mCustomTabsConnection.mayLaunchUrl(token, Uri.parse(URL), ext ras, null)); 210 Assert.assertTrue(mCustomTabsConnection.mayLaunchUrl(token, Uri.parse(UR L), extras, null));
195 211
196 ThreadUtils.runOnUiThreadBlocking(new Runnable() { 212 ThreadUtils.runOnUiThreadBlocking(new Runnable() {
197 @Override 213 @Override
198 public void run() { 214 public void run() {
199 assertSpareWebContentsNotNullAndDestroy(); 215 assertSpareWebContentsNotNullAndDestroy();
200 } 216 }
201 }); 217 });
202 } 218 }
203 219
220 @Test
204 @SmallTest 221 @SmallTest
205 public void testMayLaunchUrlNullOrEmptyUrl() { 222 public void testMayLaunchUrlNullOrEmptyUrl() {
206 assertWarmupAndMayLaunchUrl(null, null, true); 223 assertWarmupAndMayLaunchUrl(null, null, true);
207 CustomTabsTestUtils.cleanupSessions(mCustomTabsConnection); // Resets th rottling. 224 CustomTabsTestUtils.cleanupSessions(mCustomTabsConnection); // Resets th rottling.
208 assertWarmupAndMayLaunchUrl(null, "", true); 225 assertWarmupAndMayLaunchUrl(null, "", true);
209 } 226 }
210 227
228 @Test
211 @SmallTest 229 @SmallTest
212 @Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE) 230 @Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE)
213 public void testUnderstandsLowConfidenceMayLaunchUrl() { 231 public void testUnderstandsLowConfidenceMayLaunchUrl() {
214 final CustomTabsSessionToken token = 232 final CustomTabsSessionToken token =
215 CustomTabsSessionToken.createDummySessionTokenForTesting(); 233 CustomTabsSessionToken.createDummySessionTokenForTesting();
216 assertTrue(mCustomTabsConnection.newSession(token)); 234 Assert.assertTrue(mCustomTabsConnection.newSession(token));
217 List<Bundle> urls = new ArrayList<>(); 235 List<Bundle> urls = new ArrayList<>();
218 Bundle urlBundle = new Bundle(); 236 Bundle urlBundle = new Bundle();
219 urlBundle.putParcelable(CustomTabsService.KEY_URL, Uri.parse(URL)); 237 urlBundle.putParcelable(CustomTabsService.KEY_URL, Uri.parse(URL));
220 urls.add(urlBundle); 238 urls.add(urlBundle);
221 mCustomTabsConnection.mayLaunchUrl(token, null, null, urls); 239 mCustomTabsConnection.mayLaunchUrl(token, null, null, urls);
222 240
223 ThreadUtils.runOnUiThreadBlocking(new Runnable() { 241 ThreadUtils.runOnUiThreadBlocking(new Runnable() {
224 @Override 242 @Override
225 public void run() { 243 public void run() {
226 assertSpareWebContentsNotNullAndDestroy(); 244 assertSpareWebContentsNotNullAndDestroy();
227 String referrer = mCustomTabsConnection.getReferrerForSession(to ken).getUrl(); 245 String referrer = mCustomTabsConnection.getReferrerForSession(to ken).getUrl();
228 assertNull(mCustomTabsConnection.takePrerenderedUrl(token, URL, referrer)); 246 Assert.assertNull(mCustomTabsConnection.takePrerenderedUrl(token , URL, referrer));
229 } 247 }
230 }); 248 });
231 } 249 }
232 250
251 @Test
233 @SmallTest 252 @SmallTest
234 public void testLowConfidenceMayLaunchUrlOnlyAcceptUris() { 253 public void testLowConfidenceMayLaunchUrlOnlyAcceptUris() {
235 final CustomTabsSessionToken token = 254 final CustomTabsSessionToken token =
236 CustomTabsSessionToken.createDummySessionTokenForTesting(); 255 CustomTabsSessionToken.createDummySessionTokenForTesting();
237 assertTrue(mCustomTabsConnection.newSession(token)); 256 Assert.assertTrue(mCustomTabsConnection.newSession(token));
238 assertTrue(mCustomTabsConnection.warmup(0)); 257 Assert.assertTrue(mCustomTabsConnection.warmup(0));
239 258
240 final List<Bundle> urlsAsString = new ArrayList<>(); 259 final List<Bundle> urlsAsString = new ArrayList<>();
241 Bundle urlStringBundle = new Bundle(); 260 Bundle urlStringBundle = new Bundle();
242 urlStringBundle.putString(CustomTabsService.KEY_URL, URL); 261 urlStringBundle.putString(CustomTabsService.KEY_URL, URL);
243 urlsAsString.add(urlStringBundle); 262 urlsAsString.add(urlStringBundle);
244 263
245 final List<Bundle> urlsAsUri = new ArrayList<>(); 264 final List<Bundle> urlsAsUri = new ArrayList<>();
246 Bundle urlUriBundle = new Bundle(); 265 Bundle urlUriBundle = new Bundle();
247 urlUriBundle.putParcelable(CustomTabsService.KEY_URL, Uri.parse(URL)); 266 urlUriBundle.putParcelable(CustomTabsService.KEY_URL, Uri.parse(URL));
248 urlsAsUri.add(urlUriBundle); 267 urlsAsUri.add(urlUriBundle);
249 268
250 ThreadUtils.runOnUiThreadBlocking(new Runnable() { 269 ThreadUtils.runOnUiThreadBlocking(new Runnable() {
251 @Override 270 @Override
252 public void run() { 271 public void run() {
253 assertFalse(mCustomTabsConnection.lowConfidenceMayLaunchUrl(urls AsString)); 272 Assert.assertFalse(mCustomTabsConnection.lowConfidenceMayLaunchU rl(urlsAsString));
254 assertTrue(mCustomTabsConnection.lowConfidenceMayLaunchUrl(urlsA sUri)); 273 Assert.assertTrue(mCustomTabsConnection.lowConfidenceMayLaunchUr l(urlsAsUri));
255 } 274 }
256 }); 275 });
257 } 276 }
258 277
278 @Test
259 @SmallTest 279 @SmallTest
260 public void testLowConfidenceMayLaunchUrlDoesntCrash() { 280 public void testLowConfidenceMayLaunchUrlDoesntCrash() {
261 final CustomTabsSessionToken token = 281 final CustomTabsSessionToken token =
262 CustomTabsSessionToken.createDummySessionTokenForTesting(); 282 CustomTabsSessionToken.createDummySessionTokenForTesting();
263 assertTrue(mCustomTabsConnection.newSession(token)); 283 Assert.assertTrue(mCustomTabsConnection.newSession(token));
264 assertTrue(mCustomTabsConnection.warmup(0)); 284 Assert.assertTrue(mCustomTabsConnection.warmup(0));
265 285
266 final List<Bundle> invalidBundles = new ArrayList<>(); 286 final List<Bundle> invalidBundles = new ArrayList<>();
267 Bundle invalidBundle = new Bundle(); 287 Bundle invalidBundle = new Bundle();
268 invalidBundle.putParcelable(CustomTabsService.KEY_URL, new Intent()); 288 invalidBundle.putParcelable(CustomTabsService.KEY_URL, new Intent());
269 invalidBundles.add(invalidBundle); 289 invalidBundles.add(invalidBundle);
270 290
271 ThreadUtils.runOnUiThreadBlocking(new Runnable() { 291 ThreadUtils.runOnUiThreadBlocking(new Runnable() {
272 @Override 292 @Override
273 public void run() { 293 public void run() {
274 try { 294 try {
275 mCustomTabsConnection.lowConfidenceMayLaunchUrl(invalidBundl es); 295 mCustomTabsConnection.lowConfidenceMayLaunchUrl(invalidBundl es);
276 } catch (ClassCastException e) { 296 } catch (ClassCastException e) {
277 fail(); 297 Assert.fail();
278 } 298 }
279 } 299 }
280 }); 300 });
281 } 301 }
282 302
303 @Test
283 @SmallTest 304 @SmallTest
284 @Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE) 305 @Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE)
285 public void testStillHighConfidenceMayLaunchUrlWithSeveralUrls() { 306 public void testStillHighConfidenceMayLaunchUrlWithSeveralUrls() {
286 final CustomTabsSessionToken token = 307 final CustomTabsSessionToken token =
287 CustomTabsSessionToken.createDummySessionTokenForTesting(); 308 CustomTabsSessionToken.createDummySessionTokenForTesting();
288 assertTrue(mCustomTabsConnection.newSession(token)); 309 Assert.assertTrue(mCustomTabsConnection.newSession(token));
289 List<Bundle> urls = new ArrayList<>(); 310 List<Bundle> urls = new ArrayList<>();
290 Bundle urlBundle = new Bundle(); 311 Bundle urlBundle = new Bundle();
291 urlBundle.putParcelable(CustomTabsService.KEY_URL, Uri.parse(URL)); 312 urlBundle.putParcelable(CustomTabsService.KEY_URL, Uri.parse(URL));
292 urls.add(urlBundle); 313 urls.add(urlBundle);
293 314
294 mCustomTabsConnection.mayLaunchUrl(token, Uri.parse(URL), null, urls); 315 mCustomTabsConnection.mayLaunchUrl(token, Uri.parse(URL), null, urls);
295 ThreadUtils.runOnUiThreadBlocking(new Runnable() { 316 ThreadUtils.runOnUiThreadBlocking(new Runnable() {
296 @Override 317 @Override
297 public void run() { 318 public void run() {
298 assertNull(WarmupManager.getInstance().takeSpareWebContents(fals e, false)); 319 Assert.assertNull(WarmupManager.getInstance().takeSpareWebConten ts(false, false));
299 String referrer = mCustomTabsConnection.getReferrerForSession(to ken).getUrl(); 320 String referrer = mCustomTabsConnection.getReferrerForSession(to ken).getUrl();
300 assertNotNull(mCustomTabsConnection.takePrerenderedUrl(token, UR L, referrer)); 321 Assert.assertNotNull(
322 mCustomTabsConnection.takePrerenderedUrl(token, URL, ref errer));
301 } 323 }
302 }); 324 });
303 } 325 }
304 326
327 @Test
305 @SmallTest 328 @SmallTest
306 @Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE) 329 @Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE)
307 public void testPrefetchOnlyNoPrerenderHasSpareWebContents() { 330 public void testPrefetchOnlyNoPrerenderHasSpareWebContents() {
308 assertTrue(mCustomTabsConnection.warmup(0)); 331 Assert.assertTrue(mCustomTabsConnection.warmup(0));
309 final CustomTabsSessionToken token = 332 final CustomTabsSessionToken token =
310 CustomTabsSessionToken.createDummySessionTokenForTesting(); 333 CustomTabsSessionToken.createDummySessionTokenForTesting();
311 assertTrue(mCustomTabsConnection.newSession(token)); 334 Assert.assertTrue(mCustomTabsConnection.newSession(token));
312 335
313 Bundle extras = new Bundle(); 336 Bundle extras = new Bundle();
314 extras.putInt(CustomTabsConnection.DEBUG_OVERRIDE_KEY, CustomTabsConnect ion.PREFETCH_ONLY); 337 extras.putInt(CustomTabsConnection.DEBUG_OVERRIDE_KEY, CustomTabsConnect ion.PREFETCH_ONLY);
315 assertTrue(mCustomTabsConnection.mayLaunchUrl(token, Uri.parse(URL), ext ras, null)); 338 Assert.assertTrue(mCustomTabsConnection.mayLaunchUrl(token, Uri.parse(UR L), extras, null));
316 339
317 ThreadUtils.runOnUiThreadBlocking(new Runnable() { 340 ThreadUtils.runOnUiThreadBlocking(new Runnable() {
318 @Override 341 @Override
319 public void run() { 342 public void run() {
320 assertSpareWebContentsNotNullAndDestroy(); 343 assertSpareWebContentsNotNullAndDestroy();
321 } 344 }
322 }); 345 });
323 } 346 }
324 347
348 @Test
325 @SmallTest 349 @SmallTest
326 @Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE) 350 @Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE)
327 @RetryOnFailure 351 @RetryOnFailure
328 public void testCanCancelPrerender() { 352 public void testCanCancelPrerender() {
329 final CustomTabsSessionToken token = assertWarmupAndMayLaunchUrl(null, U RL, true); 353 final CustomTabsSessionToken token = assertWarmupAndMayLaunchUrl(null, U RL, true);
330 ThreadUtils.runOnUiThreadBlocking(new Runnable() { 354 ThreadUtils.runOnUiThreadBlocking(new Runnable() {
331 @Override 355 @Override
332 public void run() { 356 public void run() {
333 assertNull(WarmupManager.getInstance().takeSpareWebContents(fals e, false)); 357 Assert.assertNull(WarmupManager.getInstance().takeSpareWebConten ts(false, false));
334 } 358 }
335 }); 359 });
336 assertTrue(mCustomTabsConnection.mayLaunchUrl(token, null, null, null)); 360 Assert.assertTrue(mCustomTabsConnection.mayLaunchUrl(token, null, null, null));
337 // mayLaunchUrl() posts a task, the following has to run after it. 361 // mayLaunchUrl() posts a task, the following has to run after it.
338 ThreadUtils.runOnUiThreadBlocking(new Runnable() { 362 ThreadUtils.runOnUiThreadBlocking(new Runnable() {
339 @Override 363 @Override
340 public void run() { 364 public void run() {
341 String referrer = mCustomTabsConnection.getReferrerForSession(to ken).getUrl(); 365 String referrer = mCustomTabsConnection.getReferrerForSession(to ken).getUrl();
342 assertNull(mCustomTabsConnection.takePrerenderedUrl(token, URL, referrer)); 366 Assert.assertNull(mCustomTabsConnection.takePrerenderedUrl(token , URL, referrer));
343 } 367 }
344 }); 368 });
345 } 369 }
346 370
347 private void assertSpareWebContentsNotNullAndDestroy() { 371 private void assertSpareWebContentsNotNullAndDestroy() {
348 WebContents webContents = WarmupManager.getInstance().takeSpareWebConten ts(false, false); 372 WebContents webContents = WarmupManager.getInstance().takeSpareWebConten ts(false, false);
349 assertNotNull(webContents); 373 Assert.assertNotNull(webContents);
350 webContents.destroy(); 374 webContents.destroy();
351 } 375 }
352 376
353 /** 377 /**
354 * Calls warmup() and mayLaunchUrl(), checks for the expected result 378 * Calls warmup() and mayLaunchUrl(), checks for the expected result
355 * (success or failure) and returns the result code. 379 * (success or failure) and returns the result code.
356 */ 380 */
357 private CustomTabsSessionToken assertWarmupAndMayLaunchUrl( 381 private CustomTabsSessionToken assertWarmupAndMayLaunchUrl(
358 CustomTabsSessionToken token, String url, boolean shouldSucceed) { 382 CustomTabsSessionToken token, String url, boolean shouldSucceed) {
359 mCustomTabsConnection.warmup(0); 383 mCustomTabsConnection.warmup(0);
360 if (token == null) { 384 if (token == null) {
361 token = CustomTabsSessionToken.createDummySessionTokenForTesting(); 385 token = CustomTabsSessionToken.createDummySessionTokenForTesting();
362 mCustomTabsConnection.newSession(token); 386 mCustomTabsConnection.newSession(token);
363 } 387 }
364 Uri uri = url == null ? null : Uri.parse(url); 388 Uri uri = url == null ? null : Uri.parse(url);
365 boolean succeeded = mCustomTabsConnection.mayLaunchUrl(token, uri, null, null); 389 boolean succeeded = mCustomTabsConnection.mayLaunchUrl(token, uri, null, null);
366 assertEquals(shouldSucceed, succeeded); 390 Assert.assertEquals(shouldSucceed, succeeded);
367 return shouldSucceed ? token : null; 391 return shouldSucceed ? token : null;
368 } 392 }
369 393
370 /** 394 /**
371 * Tests that 395 * Tests that
372 * {@link CustomTabsConnection#mayLaunchUrl( 396 * {@link CustomTabsConnection#mayLaunchUrl(
373 * CustomTabsSessionToken, Uri, android.os.Bundle, java.util.List)} 397 * CustomTabsSessionToken, Uri, android.os.Bundle, java.util.List)}
374 * returns an error when called with an invalid session ID. 398 * returns an error when called with an invalid session ID.
375 */ 399 */
400 @Test
376 @SmallTest 401 @SmallTest
377 public void testNoMayLaunchUrlWithInvalidSessionId() { 402 public void testNoMayLaunchUrlWithInvalidSessionId() {
378 assertWarmupAndMayLaunchUrl( 403 assertWarmupAndMayLaunchUrl(
379 CustomTabsSessionToken.createDummySessionTokenForTesting(), URL, false); 404 CustomTabsSessionToken.createDummySessionTokenForTesting(), URL, false);
380 } 405 }
381 406
382 /** 407 /**
383 * Tests that 408 * Tests that
384 * {@link CustomTabsConnection#mayLaunchUrl(CustomTabsSessionToken, Uri, Bun dle, List)} 409 * {@link CustomTabsConnection#mayLaunchUrl(CustomTabsSessionToken, Uri, Bun dle, List)}
385 * rejects invalid URL schemes. 410 * rejects invalid URL schemes.
386 */ 411 */
412 @Test
387 @SmallTest 413 @SmallTest
388 public void testNoMayLaunchUrlWithInvalidScheme() { 414 public void testNoMayLaunchUrlWithInvalidScheme() {
389 assertWarmupAndMayLaunchUrl(null, INVALID_SCHEME_URL, false); 415 assertWarmupAndMayLaunchUrl(null, INVALID_SCHEME_URL, false);
390 } 416 }
391 417
392 /** 418 /**
393 * Tests that 419 * Tests that
394 * {@link CustomTabsConnection#mayLaunchUrl(CustomTabsSessionToken, Uri, Bun dle, List)} 420 * {@link CustomTabsConnection#mayLaunchUrl(CustomTabsSessionToken, Uri, Bun dle, List)}
395 * succeeds. 421 * succeeds.
396 */ 422 */
423 @Test
397 @SmallTest 424 @SmallTest
398 public void testMayLaunchUrl() { 425 public void testMayLaunchUrl() {
399 assertWarmupAndMayLaunchUrl(null, URL, true); 426 assertWarmupAndMayLaunchUrl(null, URL, true);
400 } 427 }
401 428
402 /** 429 /**
403 * Tests that 430 * Tests that
404 * {@link CustomTabsConnection#mayLaunchUrl(CustomTabsSessionToken, Uri, Bun dle, List)} 431 * {@link CustomTabsConnection#mayLaunchUrl(CustomTabsSessionToken, Uri, Bun dle, List)}
405 * can be called several times with the same, and different URLs. 432 * can be called several times with the same, and different URLs.
406 */ 433 */
434 @Test
407 @SmallTest 435 @SmallTest
408 public void testMultipleMayLaunchUrl() { 436 public void testMultipleMayLaunchUrl() {
409 CustomTabsSessionToken token = assertWarmupAndMayLaunchUrl(null, URL, tr ue); 437 CustomTabsSessionToken token = assertWarmupAndMayLaunchUrl(null, URL, tr ue);
410 mCustomTabsConnection.resetThrottling(mAppContext, Process.myUid()); 438 mCustomTabsConnection.resetThrottling(mAppContext, Process.myUid());
411 assertWarmupAndMayLaunchUrl(token, URL, true); 439 assertWarmupAndMayLaunchUrl(token, URL, true);
412 mCustomTabsConnection.resetThrottling(mAppContext, Process.myUid()); 440 mCustomTabsConnection.resetThrottling(mAppContext, Process.myUid());
413 assertWarmupAndMayLaunchUrl(token, URL2, true); 441 assertWarmupAndMayLaunchUrl(token, URL2, true);
414 } 442 }
415 443
416 /** 444 /**
417 * Tests that sessions are forgotten properly. 445 * Tests that sessions are forgotten properly.
418 */ 446 */
447 @Test
419 @SmallTest 448 @SmallTest
420 public void testForgetsSession() { 449 public void testForgetsSession() {
421 CustomTabsSessionToken token = assertWarmupAndMayLaunchUrl(null, URL, tr ue); 450 CustomTabsSessionToken token = assertWarmupAndMayLaunchUrl(null, URL, tr ue);
422 CustomTabsTestUtils.cleanupSessions(mCustomTabsConnection); 451 CustomTabsTestUtils.cleanupSessions(mCustomTabsConnection);
423 assertWarmupAndMayLaunchUrl(token, URL, false); 452 assertWarmupAndMayLaunchUrl(token, URL, false);
424 } 453 }
425 454
426 /** 455 /**
427 * Tests that CPU cgroups exist and have the expected values for background and foreground. 456 * Tests that CPU cgroups exist and have the expected values for background and foreground.
428 * 457 *
429 * To make testing easier the test assumes that the Android Framework uses 458 * To make testing easier the test assumes that the Android Framework uses
430 * the same cgroup for background processes and background _threads_, which 459 * the same cgroup for background processes and background _threads_, which
431 * has been the case through LOLLIPOP_MR1. 460 * has been the case through LOLLIPOP_MR1.
432 */ 461 */
462 @Test
433 @SmallTest 463 @SmallTest
434 public void testGetSchedulerGroup() { 464 public void testGetSchedulerGroup() {
435 if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) return; 465 if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) return;
436 assertNotNull(CustomTabsConnection.getSchedulerGroup(Process.myPid())); 466 Assert.assertNotNull(CustomTabsConnection.getSchedulerGroup(Process.myPi d()));
437 String cgroup = CustomTabsConnection.getSchedulerGroup(Process.myPid()); 467 String cgroup = CustomTabsConnection.getSchedulerGroup(Process.myPid());
438 // Tests run in the foreground. 468 // Tests run in the foreground.
439 assertTrue(cgroup.equals("/") || cgroup.equals("/apps")); 469 Assert.assertTrue(cgroup.equals("/") || cgroup.equals("/apps"));
440 470
441 final String[] backgroundThreadCgroup = {null}; 471 final String[] backgroundThreadCgroup = {null};
442 Thread backgroundThread = new Thread(new Runnable() { 472 Thread backgroundThread = new Thread(new Runnable() {
443 @Override 473 @Override
444 public void run() { 474 public void run() {
445 int tid = Process.myTid(); 475 int tid = Process.myTid();
446 Process.setThreadPriority(tid, Process.THREAD_PRIORITY_BACKGROUN D); 476 Process.setThreadPriority(tid, Process.THREAD_PRIORITY_BACKGROUN D);
447 backgroundThreadCgroup[0] = CustomTabsConnection.getSchedulerGro up(tid); 477 backgroundThreadCgroup[0] = CustomTabsConnection.getSchedulerGro up(tid);
448 } 478 }
449 }); 479 });
450 backgroundThread.start(); 480 backgroundThread.start();
451 try { 481 try {
452 backgroundThread.join(); 482 backgroundThread.join();
453 } catch (InterruptedException e) { 483 } catch (InterruptedException e) {
454 fail(); 484 Assert.fail();
455 return; 485 return;
456 } 486 }
457 String threadCgroup = backgroundThreadCgroup[0]; 487 String threadCgroup = backgroundThreadCgroup[0];
458 assertNotNull(threadCgroup); 488 Assert.assertNotNull(threadCgroup);
459 assertTrue(threadCgroup.equals("/bg_non_interactive") 489 Assert.assertTrue(threadCgroup.equals("/bg_non_interactive")
460 || threadCgroup.equals("/apps/bg_non_interactive")); 490 || threadCgroup.equals("/apps/bg_non_interactive"));
461 } 491 }
462 492
463 /** 493 /**
464 * Tests that predictions are throttled. 494 * Tests that predictions are throttled.
465 */ 495 */
496 @Test
466 @SmallTest 497 @SmallTest
467 public void testThrottleMayLaunchUrl() { 498 public void testThrottleMayLaunchUrl() {
468 CustomTabsSessionToken token = assertWarmupAndMayLaunchUrl(null, URL, tr ue); 499 CustomTabsSessionToken token = assertWarmupAndMayLaunchUrl(null, URL, tr ue);
469 int successfulRequests = 0; 500 int successfulRequests = 0;
470 // Send a burst of requests instead of checking for precise delays to av oid flakiness. 501 // Send a burst of requests instead of checking for precise delays to av oid flakiness.
471 while (successfulRequests < 10) { 502 while (successfulRequests < 10) {
472 if (!mCustomTabsConnection.mayLaunchUrl(token, Uri.parse(URL), null, null)) break; 503 if (!mCustomTabsConnection.mayLaunchUrl(token, Uri.parse(URL), null, null)) break;
473 successfulRequests++; 504 successfulRequests++;
474 } 505 }
475 assertTrue("10 requests in a row should not all succeed.", successfulReq uests < 10); 506 Assert.assertTrue("10 requests in a row should not all succeed.", succes sfulRequests < 10);
476 } 507 }
477 508
478 /** 509 /**
479 * Tests that the mayLaunchUrl() throttling is reset after a long enough wai t. 510 * Tests that the mayLaunchUrl() throttling is reset after a long enough wai t.
480 */ 511 */
512 @Test
481 @SmallTest 513 @SmallTest
482 public void testThrottlingIsReset() { 514 public void testThrottlingIsReset() {
483 CustomTabsSessionToken token = assertWarmupAndMayLaunchUrl(null, URL, tr ue); 515 CustomTabsSessionToken token = assertWarmupAndMayLaunchUrl(null, URL, tr ue);
484 mCustomTabsConnection.mayLaunchUrl(token, Uri.parse(URL), null, null); 516 mCustomTabsConnection.mayLaunchUrl(token, Uri.parse(URL), null, null);
485 // Depending on the timing, the delay should be 100 or 200ms here. 517 // Depending on the timing, the delay should be 100 or 200ms here.
486 assertWarmupAndMayLaunchUrl(token, URL, false); 518 assertWarmupAndMayLaunchUrl(token, URL, false);
487 // Wait for more than 2 * MAX_POSSIBLE_DELAY to clear the delay 519 // Wait for more than 2 * MAX_POSSIBLE_DELAY to clear the delay
488 try { 520 try {
489 Thread.sleep(450); // 2 * MAX_POSSIBLE_DELAY + 50ms 521 Thread.sleep(450); // 2 * MAX_POSSIBLE_DELAY + 50ms
490 } catch (InterruptedException e) { 522 } catch (InterruptedException e) {
491 fail(); 523 Assert.fail();
492 return; 524 return;
493 } 525 }
494 assertWarmupAndMayLaunchUrl(token, URL, true); 526 assertWarmupAndMayLaunchUrl(token, URL, true);
495 // Check that the delay has been reset, by waiting for 100ms. 527 // Check that the delay has been reset, by waiting for 100ms.
496 try { 528 try {
497 Thread.sleep(150); // MIN_DELAY + 50ms margin 529 Thread.sleep(150); // MIN_DELAY + 50ms margin
498 } catch (InterruptedException e) { 530 } catch (InterruptedException e) {
499 fail(); 531 Assert.fail();
500 return; 532 return;
501 } 533 }
502 assertWarmupAndMayLaunchUrl(token, URL, true); 534 assertWarmupAndMayLaunchUrl(token, URL, true);
503 } 535 }
504 536
505 /** 537 /**
506 * Tests that throttling applies across sessions. 538 * Tests that throttling applies across sessions.
507 */ 539 */
540 @Test
508 @SmallTest 541 @SmallTest
509 public void testThrottlingAcrossSessions() { 542 public void testThrottlingAcrossSessions() {
510 CustomTabsSessionToken token = assertWarmupAndMayLaunchUrl(null, URL, tr ue); 543 CustomTabsSessionToken token = assertWarmupAndMayLaunchUrl(null, URL, tr ue);
511 mCustomTabsConnection.resetThrottling(mAppContext, Process.myUid()); 544 mCustomTabsConnection.resetThrottling(mAppContext, Process.myUid());
512 CustomTabsSessionToken token2 = assertWarmupAndMayLaunchUrl(null, URL, t rue); 545 CustomTabsSessionToken token2 = assertWarmupAndMayLaunchUrl(null, URL, t rue);
513 mCustomTabsConnection.resetThrottling(mAppContext, Process.myUid()); 546 mCustomTabsConnection.resetThrottling(mAppContext, Process.myUid());
514 for (int i = 0; i < 10; i++) { 547 for (int i = 0; i < 10; i++) {
515 mCustomTabsConnection.mayLaunchUrl(token, Uri.parse(URL), null, null ); 548 mCustomTabsConnection.mayLaunchUrl(token, Uri.parse(URL), null, null );
516 } 549 }
517 assertWarmupAndMayLaunchUrl(token2, URL, false); 550 assertWarmupAndMayLaunchUrl(token2, URL, false);
518 } 551 }
519 552
553 @Test
520 @SmallTest 554 @SmallTest
521 @Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE) 555 @Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE)
522 public void testBanningWorks() { 556 public void testBanningWorks() {
523 mCustomTabsConnection.ban(mAppContext, Process.myUid()); 557 mCustomTabsConnection.ban(mAppContext, Process.myUid());
524 final CustomTabsSessionToken token = 558 final CustomTabsSessionToken token =
525 CustomTabsSessionToken.createDummySessionTokenForTesting(); 559 CustomTabsSessionToken.createDummySessionTokenForTesting();
526 assertTrue(mCustomTabsConnection.newSession(token)); 560 Assert.assertTrue(mCustomTabsConnection.newSession(token));
527 561
528 assertTrue(mCustomTabsConnection.mayLaunchUrl(token, Uri.parse(URL), nul l, null)); 562 Assert.assertTrue(mCustomTabsConnection.mayLaunchUrl(token, Uri.parse(UR L), null, null));
529 ThreadUtils.runOnUiThreadBlocking(new Runnable() { 563 ThreadUtils.runOnUiThreadBlocking(new Runnable() {
530 @Override 564 @Override
531 public void run() { 565 public void run() {
532 assertSpareWebContentsNotNullAndDestroy(); 566 assertSpareWebContentsNotNullAndDestroy();
533 String referrer = mCustomTabsConnection.getReferrerForSession(to ken).getUrl(); 567 String referrer = mCustomTabsConnection.getReferrerForSession(to ken).getUrl();
534 assertNull(mCustomTabsConnection.takePrerenderedUrl(token, URL, referrer)); 568 Assert.assertNull(mCustomTabsConnection.takePrerenderedUrl(token , URL, referrer));
535 } 569 }
536 }); 570 });
537 } 571 }
538 572
573 @Test
539 @SmallTest 574 @SmallTest
540 @Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE) 575 @Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE)
541 public void testBanningDisabledForCellular() { 576 public void testBanningDisabledForCellular() {
542 mCustomTabsConnection.ban(mAppContext, Process.myUid()); 577 mCustomTabsConnection.ban(mAppContext, Process.myUid());
543 final CustomTabsSessionToken token = 578 final CustomTabsSessionToken token =
544 CustomTabsSessionToken.createDummySessionTokenForTesting(); 579 CustomTabsSessionToken.createDummySessionTokenForTesting();
545 assertTrue(mCustomTabsConnection.newSession(token)); 580 Assert.assertTrue(mCustomTabsConnection.newSession(token));
546 mCustomTabsConnection.setShouldPrerenderOnCellularForSession(token, true ); 581 mCustomTabsConnection.setShouldPrerenderOnCellularForSession(token, true );
547 582
548 assertTrue(mCustomTabsConnection.mayLaunchUrl(token, Uri.parse(URL), nul l, null)); 583 Assert.assertTrue(mCustomTabsConnection.mayLaunchUrl(token, Uri.parse(UR L), null, null));
549 ThreadUtils.runOnUiThreadBlocking(new Runnable() { 584 ThreadUtils.runOnUiThreadBlocking(new Runnable() {
550 @Override 585 @Override
551 public void run() { 586 public void run() {
552 assertNull(WarmupManager.getInstance().takeSpareWebContents(fals e, false)); 587 Assert.assertNull(WarmupManager.getInstance().takeSpareWebConten ts(false, false));
553 String referrer = mCustomTabsConnection.getReferrerForSession(to ken).getUrl(); 588 String referrer = mCustomTabsConnection.getReferrerForSession(to ken).getUrl();
554 WebContents prerender = mCustomTabsConnection.takePrerenderedUrl ( 589 WebContents prerender = mCustomTabsConnection.takePrerenderedUrl (
555 token, URL, referrer); 590 token, URL, referrer);
556 assertNotNull(prerender); 591 Assert.assertNotNull(prerender);
557 prerender.destroy(); 592 prerender.destroy();
558 } 593 }
559 }); 594 });
560 } 595 }
561 596
597 @Test
562 @SmallTest 598 @SmallTest
563 @Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE) 599 @Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE)
564 public void testCellularPrerenderingDoesntOverrideSettings() throws Exceptio n { 600 public void testCellularPrerenderingDoesntOverrideSettings() throws Exceptio n {
565 CustomTabsSessionToken token = CustomTabsSessionToken.createDummySession TokenForTesting(); 601 CustomTabsSessionToken token = CustomTabsSessionToken.createDummySession TokenForTesting();
566 assertTrue(mCustomTabsConnection.newSession(token)); 602 Assert.assertTrue(mCustomTabsConnection.newSession(token));
567 mCustomTabsConnection.setShouldPrerenderOnCellularForSession(token, true ); 603 mCustomTabsConnection.setShouldPrerenderOnCellularForSession(token, true );
568 mCustomTabsConnection.warmup(0); 604 mCustomTabsConnection.warmup(0);
569 605
570 // Needs the browser process to be initialized. 606 // Needs the browser process to be initialized.
571 FutureTask<Boolean> result = ThreadUtils.runOnUiThread(new Callable<Bool ean>() { 607 FutureTask<Boolean> result = ThreadUtils.runOnUiThread(new Callable<Bool ean>() {
572 @Override 608 @Override
573 public Boolean call() { 609 public Boolean call() {
574 PrefServiceBridge prefs = PrefServiceBridge.getInstance(); 610 PrefServiceBridge prefs = PrefServiceBridge.getInstance();
575 boolean result = prefs.getNetworkPredictionEnabled(); 611 boolean result = prefs.getNetworkPredictionEnabled();
576 prefs.setNetworkPredictionEnabled(false); 612 prefs.setNetworkPredictionEnabled(false);
577 return result; 613 return result;
578 }}); 614 }});
579 final boolean enabled = result.get(); 615 final boolean enabled = result.get();
580 616
581 try { 617 try {
582 assertTrue(mCustomTabsConnection.mayLaunchUrl(token, Uri.parse(URL), null, null)); 618 Assert.assertTrue(
619 mCustomTabsConnection.mayLaunchUrl(token, Uri.parse(URL), nu ll, null));
583 ThreadUtils.runOnUiThreadBlocking(new Runnable() { 620 ThreadUtils.runOnUiThreadBlocking(new Runnable() {
584 @Override 621 @Override
585 public void run() { 622 public void run() {
586 assertSpareWebContentsNotNullAndDestroy(); 623 assertSpareWebContentsNotNullAndDestroy();
587 } 624 }
588 }); 625 });
589 } finally { 626 } finally {
590 ThreadUtils.runOnUiThreadBlocking(new Runnable() { 627 ThreadUtils.runOnUiThreadBlocking(new Runnable() {
591 @Override 628 @Override
592 public void run() { 629 public void run() {
593 PrefServiceBridge.getInstance().setNetworkPredictionEnabled( enabled); 630 PrefServiceBridge.getInstance().setNetworkPredictionEnabled( enabled);
594 } 631 }
595 }); 632 });
596 } 633 }
597 } 634 }
598 } 635 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698