| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 } |
| OLD | NEW |