Index: chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/CustomTabActivityTest.java |
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/CustomTabActivityTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/CustomTabActivityTest.java |
index 3b1ca31eea53835ed2dff211df11657603b48ac8..50535774e9cd267930d84b67c84ff9fe489b4823 100644 |
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/CustomTabActivityTest.java |
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/CustomTabActivityTest.java |
@@ -57,6 +57,7 @@ import org.chromium.base.test.util.Restriction; |
import org.chromium.base.test.util.RetryOnFailure; |
import org.chromium.chrome.R; |
import org.chromium.chrome.browser.ChromeActivity; |
+import org.chromium.chrome.browser.ChromeFeatureList; |
import org.chromium.chrome.browser.ChromeSwitches; |
import org.chromium.chrome.browser.ChromeTabbedActivity; |
import org.chromium.chrome.browser.IntentHandler; |
@@ -93,6 +94,8 @@ import org.chromium.net.test.util.TestWebServer; |
import org.chromium.ui.mojom.WindowOpenDisposition; |
import java.util.ArrayList; |
+import java.util.HashMap; |
+import java.util.Map; |
import java.util.concurrent.Callable; |
import java.util.concurrent.TimeoutException; |
import java.util.concurrent.atomic.AtomicBoolean; |
@@ -1810,14 +1813,37 @@ public class CustomTabActivityTest extends CustomTabActivityTestBase { |
testSpeculateCorrectUrl(CustomTabsConnection.SpeculationParams.HIDDEN_TAB); |
} |
+ /** |
+ * Test that a hidden tab speculation is executed as a prerender if the |CCT_BACKGROUND_TAB| |
+ * feature is disabled. |
+ **/ |
+ @SmallTest |
+ @Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE) |
+ @RetryOnFailure |
+ public void testHiddenTabDisabled() throws Exception { |
+ // One should be able to use @Features instead of calling |
+ // ChromeFeatureList.setTestFeatures, but it doesn't appear to be effective. |
+ // (perhaps a restriction due to running on Android?) |
+ Map<String, Boolean> features = new HashMap<>(); |
+ features.put(ChromeFeatureList.CCT_BACKGROUND_TAB, false); |
+ ChromeFeatureList.setTestFeatures(features); |
Benoit L
2017/04/24 16:18:00
Should this be reset in a finally block?
Seems th
|
+ testSpeculateCorrectUrl(CustomTabsConnection.SpeculationParams.HIDDEN_TAB, |
+ CustomTabsConnection.SpeculationParams.PRERENDER); |
+ } |
+ |
private void testSpeculateCorrectUrl(int speculationMode) throws Exception { |
+ testSpeculateCorrectUrl(speculationMode, speculationMode); |
+ } |
+ |
+ private void testSpeculateCorrectUrl(int requestedSpeculationMode, int usedSpeculationMode) |
+ throws Exception { |
Context context = getInstrumentation().getTargetContext().getApplicationContext(); |
final CustomTabsConnection connection = warmUpAndWait(); |
CustomTabsSessionToken token = CustomTabsSessionToken.createDummySessionTokenForTesting(); |
connection.newSession(token); |
- connection.setSpeculationModeForSession(token, speculationMode); |
+ connection.setSpeculationModeForSession(token, requestedSpeculationMode); |
assertTrue(connection.mayLaunchUrl(token, Uri.parse(mTestPage), null, null)); |
- ensureCompletedSpeculationForUrl(connection, mTestPage, speculationMode); |
+ ensureCompletedSpeculationForUrl(connection, mTestPage, usedSpeculationMode); |
try { |
startCustomTabActivityWithIntent(CustomTabsTestUtils.createMinimalCustomTabIntent( |