Commit b0d842c1 authored by Matthew Cary's avatar Matthew Cary Committed by Commit Bot

Custom Tabs: use spare web contents when initially hidden.

This is necessary for the background tab to use the spare web contents.

Bug: 821397
Change-Id: I9f140134179d258e012ca749d28c109fee671320
Reviewed-on: https://chromium-review.googlesource.com/960903
Commit-Queue: Matthew Cary <mattcary@chromium.org>
Reviewed-by: default avatarBenoit L <lizeb@chromium.org>
Reviewed-by: default avatarBernhard Bauer <bauerb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#543114}
parent 3bd8bc5b
......@@ -287,7 +287,8 @@ public final class WarmupManager {
ThreadUtils.assertOnUiThread();
if (!LibraryLoader.isInitialized()) return;
if (mSpareWebContents != null || SysUtils.isLowEndDevice()) return;
mSpareWebContents = WebContentsFactory.createWebContentsWithWarmRenderer(false, false);
mSpareWebContents = WebContentsFactory.createWebContentsWithWarmRenderer(
false /* incognito */, true /* initiallyHidden */);
mObserver = new RenderProcessGoneObserver();
mSpareWebContents.addObserver(mObserver);
mWebContentsCreationTimeMs = SystemClock.elapsedRealtime();
......@@ -313,12 +314,13 @@ public final class WarmupManager {
*/
public WebContents takeSpareWebContents(boolean incognito, boolean initiallyHidden) {
ThreadUtils.assertOnUiThread();
if (incognito || initiallyHidden) return null;
if (incognito) return null;
WebContents result = mSpareWebContents;
if (result == null) return null;
mSpareWebContents = null;
result.removeObserver(mObserver);
mObserver = null;
if (!initiallyHidden) result.onShow();
recordWebContentsStatus(WEBCONTENTS_STATUS_USED);
return result;
}
......
......@@ -1378,6 +1378,7 @@ public class CustomTabsConnection {
case SpeculationParams.HIDDEN_TAB:
recordSpeculationStatusOnStart(SPECULATION_STATUS_ON_START_BACKGROUND_TAB);
launchUrlInHiddenTab(session, url, extras);
createSpareWebContents = false;
break;
default:
break;
......
......@@ -134,9 +134,10 @@ public class WarmupManagerTest {
public void testTakeSpareWebContentsChecksArguments() throws Throwable {
mWarmupManager.createSpareWebContents();
Assert.assertNull(mWarmupManager.takeSpareWebContents(true, false));
Assert.assertNull(mWarmupManager.takeSpareWebContents(false, true));
Assert.assertNull(mWarmupManager.takeSpareWebContents(true, true));
Assert.assertTrue(mWarmupManager.hasSpareWebContents());
Assert.assertNotNull(mWarmupManager.takeSpareWebContents(false, true));
Assert.assertFalse(mWarmupManager.hasSpareWebContents());
}
@Test
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment