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 { ...@@ -287,7 +287,8 @@ public final class WarmupManager {
ThreadUtils.assertOnUiThread(); ThreadUtils.assertOnUiThread();
if (!LibraryLoader.isInitialized()) return; if (!LibraryLoader.isInitialized()) return;
if (mSpareWebContents != null || SysUtils.isLowEndDevice()) return; if (mSpareWebContents != null || SysUtils.isLowEndDevice()) return;
mSpareWebContents = WebContentsFactory.createWebContentsWithWarmRenderer(false, false); mSpareWebContents = WebContentsFactory.createWebContentsWithWarmRenderer(
false /* incognito */, true /* initiallyHidden */);
mObserver = new RenderProcessGoneObserver(); mObserver = new RenderProcessGoneObserver();
mSpareWebContents.addObserver(mObserver); mSpareWebContents.addObserver(mObserver);
mWebContentsCreationTimeMs = SystemClock.elapsedRealtime(); mWebContentsCreationTimeMs = SystemClock.elapsedRealtime();
...@@ -313,12 +314,13 @@ public final class WarmupManager { ...@@ -313,12 +314,13 @@ public final class WarmupManager {
*/ */
public WebContents takeSpareWebContents(boolean incognito, boolean initiallyHidden) { public WebContents takeSpareWebContents(boolean incognito, boolean initiallyHidden) {
ThreadUtils.assertOnUiThread(); ThreadUtils.assertOnUiThread();
if (incognito || initiallyHidden) return null; if (incognito) return null;
WebContents result = mSpareWebContents; WebContents result = mSpareWebContents;
if (result == null) return null; if (result == null) return null;
mSpareWebContents = null; mSpareWebContents = null;
result.removeObserver(mObserver); result.removeObserver(mObserver);
mObserver = null; mObserver = null;
if (!initiallyHidden) result.onShow();
recordWebContentsStatus(WEBCONTENTS_STATUS_USED); recordWebContentsStatus(WEBCONTENTS_STATUS_USED);
return result; return result;
} }
......
...@@ -1378,6 +1378,7 @@ public class CustomTabsConnection { ...@@ -1378,6 +1378,7 @@ public class CustomTabsConnection {
case SpeculationParams.HIDDEN_TAB: case SpeculationParams.HIDDEN_TAB:
recordSpeculationStatusOnStart(SPECULATION_STATUS_ON_START_BACKGROUND_TAB); recordSpeculationStatusOnStart(SPECULATION_STATUS_ON_START_BACKGROUND_TAB);
launchUrlInHiddenTab(session, url, extras); launchUrlInHiddenTab(session, url, extras);
createSpareWebContents = false;
break; break;
default: default:
break; break;
......
...@@ -134,9 +134,10 @@ public class WarmupManagerTest { ...@@ -134,9 +134,10 @@ public class WarmupManagerTest {
public void testTakeSpareWebContentsChecksArguments() throws Throwable { public void testTakeSpareWebContentsChecksArguments() throws Throwable {
mWarmupManager.createSpareWebContents(); mWarmupManager.createSpareWebContents();
Assert.assertNull(mWarmupManager.takeSpareWebContents(true, false)); Assert.assertNull(mWarmupManager.takeSpareWebContents(true, false));
Assert.assertNull(mWarmupManager.takeSpareWebContents(false, true));
Assert.assertNull(mWarmupManager.takeSpareWebContents(true, true)); Assert.assertNull(mWarmupManager.takeSpareWebContents(true, true));
Assert.assertTrue(mWarmupManager.hasSpareWebContents()); Assert.assertTrue(mWarmupManager.hasSpareWebContents());
Assert.assertNotNull(mWarmupManager.takeSpareWebContents(false, true));
Assert.assertFalse(mWarmupManager.hasSpareWebContents());
} }
@Test @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