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

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

Issue 2919433005: customtabs: Don't always destroy the spare WebContents before prerender. (Closed)
Patch Set: Add a test/ Created 3 years, 6 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
« no previous file with comments | « chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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;
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
153 153
154 @Test 154 @Test
155 @SmallTest 155 @SmallTest
156 @Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE) 156 @Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE)
157 public void testPrerenderDestroysSpareRenderer() { 157 public void testPrerenderDestroysSpareRenderer() {
158 CustomTabsConnection.getInstance((Application) mAppContext).setForcePrer ender(true); 158 CustomTabsConnection.getInstance((Application) mAppContext).setForcePrer ender(true);
159 final CustomTabsSessionToken token = assertWarmupAndMayLaunchUrl(null, U RL, true); 159 final CustomTabsSessionToken token = assertWarmupAndMayLaunchUrl(null, U RL, true);
160 ThreadUtils.runOnUiThreadBlocking(new Runnable() { 160 ThreadUtils.runOnUiThreadBlocking(new Runnable() {
161 @Override 161 @Override
162 public void run() { 162 public void run() {
163 Assert.assertFalse(WarmupManager.getInstance().hasSpareWebConten ts());
164 String referrer = 163 String referrer =
165 mCustomTabsConnection.getReferrerForSession(token).getUr l(); 164 mCustomTabsConnection.getReferrerForSession(token).getUr l();
166 WebContents webContents = 165 WebContents webContents =
167 mCustomTabsConnection.takePrerenderedUrl(token, URL, ref errer); 166 mCustomTabsConnection.takePrerenderedUrl(token, URL, ref errer);
168 Assert.assertNotNull(webContents); 167 Assert.assertNotNull(webContents);
169 webContents.destroy(); 168 webContents.destroy();
169 Assert.assertFalse(WarmupManager.getInstance().hasSpareWebConten ts());
170 } 170 }
171 }); 171 });
172 } 172 }
173 173
174 /* 174 /*
175 * Tests that when the disconnection notification comes from a non-UI thread , Chrome doesn't 175 * Tests that when the disconnection notification comes from a non-UI thread , Chrome doesn't
176 * crash. Non-regression test for crbug.com/623128. 176 * crash. Non-regression test for crbug.com/623128.
177 */ 177 */
178 @Test 178 @Test
179 @SmallTest 179 @SmallTest
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after
350 @Test 350 @Test
351 @SmallTest 351 @SmallTest
352 @Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE) 352 @Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE)
353 @RetryOnFailure 353 @RetryOnFailure
354 public void testCanCancelPrerender() { 354 public void testCanCancelPrerender() {
355 CustomTabsConnection.getInstance((Application) mAppContext).setForcePrer ender(true); 355 CustomTabsConnection.getInstance((Application) mAppContext).setForcePrer ender(true);
356 final CustomTabsSessionToken token = assertWarmupAndMayLaunchUrl(null, U RL, true); 356 final CustomTabsSessionToken token = assertWarmupAndMayLaunchUrl(null, U RL, true);
357 ThreadUtils.runOnUiThreadBlocking(new Runnable() { 357 ThreadUtils.runOnUiThreadBlocking(new Runnable() {
358 @Override 358 @Override
359 public void run() { 359 public void run() {
360 Assert.assertNull(WarmupManager.getInstance().takeSpareWebConten ts(false, false)); 360 Assert.assertEquals(URL, mCustomTabsConnection.getSpeculatedUrl( token));
361 } 361 }
362 }); 362 });
363
363 Assert.assertTrue(mCustomTabsConnection.mayLaunchUrl(token, null, null, null)); 364 Assert.assertTrue(mCustomTabsConnection.mayLaunchUrl(token, null, null, null));
364 // mayLaunchUrl() posts a task, the following has to run after it. 365 // mayLaunchUrl() posts a task, the following has to run after it.
365 ThreadUtils.runOnUiThreadBlocking(new Runnable() { 366 ThreadUtils.runOnUiThreadBlocking(new Runnable() {
366 @Override 367 @Override
367 public void run() { 368 public void run() {
368 String referrer = mCustomTabsConnection.getReferrerForSession(to ken).getUrl(); 369 String referrer = mCustomTabsConnection.getReferrerForSession(to ken).getUrl();
369 Assert.assertNull(mCustomTabsConnection.takePrerenderedUrl(token , URL, referrer)); 370 Assert.assertNull(mCustomTabsConnection.takePrerenderedUrl(token , URL, referrer));
370 } 371 }
371 }); 372 });
372 } 373 }
(...skipping 255 matching lines...) Expand 10 before | Expand all | Expand 10 after
628 }); 629 });
629 } finally { 630 } finally {
630 ThreadUtils.runOnUiThreadBlocking(new Runnable() { 631 ThreadUtils.runOnUiThreadBlocking(new Runnable() {
631 @Override 632 @Override
632 public void run() { 633 public void run() {
633 PrefServiceBridge.getInstance().setNetworkPredictionEnabled( enabled); 634 PrefServiceBridge.getInstance().setNetworkPredictionEnabled( enabled);
634 } 635 }
635 }); 636 });
636 } 637 }
637 } 638 }
639
640 @Test
641 @SmallTest
642 @Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE)
643 public void testCellularPrerenderingDoesntKillSpareRenderer() throws Excepti on {
644 final CustomTabsSessionToken token =
645 CustomTabsSessionToken.createDummySessionTokenForTesting();
646 Assert.assertTrue(mCustomTabsConnection.newSession(token));
647 mCustomTabsConnection.setShouldPrerenderOnCellularForSession(token, true );
648 mCustomTabsConnection.warmup(0);
649
650 Assert.assertTrue(mCustomTabsConnection.mayLaunchUrl(token, Uri.parse(UR L), null, null));
651 ThreadUtils.runOnUiThreadBlocking(new Runnable() {
652 @Override
653 public void run() {
654 Assert.assertTrue(WarmupManager.getInstance().hasSpareWebContent s());
655 String referrer = mCustomTabsConnection.getReferrerForSession(to ken).getUrl();
656 WebContents webContents =
657 mCustomTabsConnection.takePrerenderedUrl(token, URL, ref errer);
658 Assert.assertNotNull(webContents);
659 webContents.destroy();
660 // destroyed when the prerender is used.
661 Assert.assertFalse(WarmupManager.getInstance().hasSpareWebConten ts());
662 }
663 });
664 }
665
666 @Test
667 @SmallTest
668 @Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE)
669 public void testUnmatchedCellularPrerenderingDoesntKillSpareRenderer() throw s Exception {
670 final CustomTabsSessionToken token =
671 CustomTabsSessionToken.createDummySessionTokenForTesting();
672 Assert.assertTrue(mCustomTabsConnection.newSession(token));
673 mCustomTabsConnection.setShouldPrerenderOnCellularForSession(token, true );
674 mCustomTabsConnection.warmup(0);
675
676 Assert.assertTrue(mCustomTabsConnection.mayLaunchUrl(token, Uri.parse(UR L), null, null));
677 ThreadUtils.runOnUiThreadBlocking(new Runnable() {
678 @Override
679 public void run() {
680 Assert.assertTrue(WarmupManager.getInstance().hasSpareWebContent s());
681 String referrer = mCustomTabsConnection.getReferrerForSession(to ken).getUrl();
682 Assert.assertNull(mCustomTabsConnection.takePrerenderedUrl(token , URL2, referrer));
683 Assert.assertTrue(WarmupManager.getInstance().hasSpareWebContent s());
684 }
685 });
686 }
638 } 687 }
OLDNEW
« no previous file with comments | « chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698