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.Activity; | 9 import android.app.Activity; |
10 import android.app.Application; | 10 import android.app.Application; |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
50 import org.chromium.base.ThreadUtils; | 50 import org.chromium.base.ThreadUtils; |
51 import org.chromium.base.library_loader.LibraryLoader; | 51 import org.chromium.base.library_loader.LibraryLoader; |
52 import org.chromium.base.library_loader.LibraryProcessType; | 52 import org.chromium.base.library_loader.LibraryProcessType; |
53 import org.chromium.base.test.util.CallbackHelper; | 53 import org.chromium.base.test.util.CallbackHelper; |
54 import org.chromium.base.test.util.CommandLineFlags; | 54 import org.chromium.base.test.util.CommandLineFlags; |
55 import org.chromium.base.test.util.DisabledTest; | 55 import org.chromium.base.test.util.DisabledTest; |
56 import org.chromium.base.test.util.Restriction; | 56 import org.chromium.base.test.util.Restriction; |
57 import org.chromium.base.test.util.RetryOnFailure; | 57 import org.chromium.base.test.util.RetryOnFailure; |
58 import org.chromium.chrome.R; | 58 import org.chromium.chrome.R; |
59 import org.chromium.chrome.browser.ChromeActivity; | 59 import org.chromium.chrome.browser.ChromeActivity; |
60 import org.chromium.chrome.browser.ChromeFeatureList; | |
60 import org.chromium.chrome.browser.ChromeSwitches; | 61 import org.chromium.chrome.browser.ChromeSwitches; |
61 import org.chromium.chrome.browser.ChromeTabbedActivity; | 62 import org.chromium.chrome.browser.ChromeTabbedActivity; |
62 import org.chromium.chrome.browser.IntentHandler; | 63 import org.chromium.chrome.browser.IntentHandler; |
63 import org.chromium.chrome.browser.TabsOpenedFromExternalAppTest; | 64 import org.chromium.chrome.browser.TabsOpenedFromExternalAppTest; |
64 import org.chromium.chrome.browser.WarmupManager; | 65 import org.chromium.chrome.browser.WarmupManager; |
65 import org.chromium.chrome.browser.appmenu.AppMenuHandler; | 66 import org.chromium.chrome.browser.appmenu.AppMenuHandler; |
66 import org.chromium.chrome.browser.document.ChromeLauncherActivity; | 67 import org.chromium.chrome.browser.document.ChromeLauncherActivity; |
67 import org.chromium.chrome.browser.firstrun.FirstRunStatus; | 68 import org.chromium.chrome.browser.firstrun.FirstRunStatus; |
68 import org.chromium.chrome.browser.metrics.PageLoadMetrics; | 69 import org.chromium.chrome.browser.metrics.PageLoadMetrics; |
69 import org.chromium.chrome.browser.prerender.ExternalPrerenderHandler; | 70 import org.chromium.chrome.browser.prerender.ExternalPrerenderHandler; |
(...skipping 16 matching lines...) Expand all Loading... | |
86 import org.chromium.content.browser.test.util.CriteriaHelper; | 87 import org.chromium.content.browser.test.util.CriteriaHelper; |
87 import org.chromium.content.browser.test.util.DOMUtils; | 88 import org.chromium.content.browser.test.util.DOMUtils; |
88 import org.chromium.content.browser.test.util.JavaScriptUtils; | 89 import org.chromium.content.browser.test.util.JavaScriptUtils; |
89 import org.chromium.content_public.browser.LoadUrlParams; | 90 import org.chromium.content_public.browser.LoadUrlParams; |
90 import org.chromium.content_public.browser.WebContentsObserver; | 91 import org.chromium.content_public.browser.WebContentsObserver; |
91 import org.chromium.net.test.EmbeddedTestServer; | 92 import org.chromium.net.test.EmbeddedTestServer; |
92 import org.chromium.net.test.util.TestWebServer; | 93 import org.chromium.net.test.util.TestWebServer; |
93 import org.chromium.ui.mojom.WindowOpenDisposition; | 94 import org.chromium.ui.mojom.WindowOpenDisposition; |
94 | 95 |
95 import java.util.ArrayList; | 96 import java.util.ArrayList; |
97 import java.util.HashMap; | |
98 import java.util.Map; | |
96 import java.util.concurrent.Callable; | 99 import java.util.concurrent.Callable; |
97 import java.util.concurrent.TimeoutException; | 100 import java.util.concurrent.TimeoutException; |
98 import java.util.concurrent.atomic.AtomicBoolean; | 101 import java.util.concurrent.atomic.AtomicBoolean; |
99 import java.util.concurrent.atomic.AtomicReference; | 102 import java.util.concurrent.atomic.AtomicReference; |
100 | 103 |
101 /** | 104 /** |
102 * Instrumentation tests for app menu, context menu, and toolbar of a {@link Cus tomTabActivity}. | 105 * Instrumentation tests for app menu, context menu, and toolbar of a {@link Cus tomTabActivity}. |
103 */ | 106 */ |
104 public class CustomTabActivityTest extends CustomTabActivityTestBase { | 107 public class CustomTabActivityTest extends CustomTabActivityTestBase { |
105 private static final int MAX_MENU_CUSTOM_ITEMS = 5; | 108 private static final int MAX_MENU_CUSTOM_ITEMS = 5; |
(...skipping 1697 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1803 * Test whether the url shown on hidden tab gets updated from about:blank wh en it | 1806 * Test whether the url shown on hidden tab gets updated from about:blank wh en it |
1804 * completes in the background. | 1807 * completes in the background. |
1805 */ | 1808 */ |
1806 @SmallTest | 1809 @SmallTest |
1807 @Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE) | 1810 @Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE) |
1808 @RetryOnFailure | 1811 @RetryOnFailure |
1809 public void testHiddenTabCorrectUrl() throws Exception { | 1812 public void testHiddenTabCorrectUrl() throws Exception { |
1810 testSpeculateCorrectUrl(CustomTabsConnection.SpeculationParams.HIDDEN_TA B); | 1813 testSpeculateCorrectUrl(CustomTabsConnection.SpeculationParams.HIDDEN_TA B); |
1811 } | 1814 } |
1812 | 1815 |
1816 /** | |
1817 * Test that a hidden tab speculation is executed as a prerender if the |CCT _BACKGROUND_TAB| | |
1818 * feature is disabled. | |
1819 **/ | |
1820 @SmallTest | |
1821 @Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE) | |
1822 @RetryOnFailure | |
1823 public void testHiddenTabDisabled() throws Exception { | |
1824 // One should be able to use @Features instead of calling | |
1825 // ChromeFeatureList.setTestFeatures, but it doesn't appear to be effect ive. | |
1826 // (perhaps a restriction due to running on Android?) | |
1827 Map<String, Boolean> features = new HashMap<>(); | |
1828 features.put(ChromeFeatureList.CCT_BACKGROUND_TAB, false); | |
1829 ChromeFeatureList.setTestFeatures(features); | |
Benoit L
2017/04/24 16:18:00
Should this be reset in a finally block?
Seems th
| |
1830 testSpeculateCorrectUrl(CustomTabsConnection.SpeculationParams.HIDDEN_TA B, | |
1831 CustomTabsConnection.SpeculationParams.PRERENDER); | |
1832 } | |
1833 | |
1813 private void testSpeculateCorrectUrl(int speculationMode) throws Exception { | 1834 private void testSpeculateCorrectUrl(int speculationMode) throws Exception { |
1835 testSpeculateCorrectUrl(speculationMode, speculationMode); | |
1836 } | |
1837 | |
1838 private void testSpeculateCorrectUrl(int requestedSpeculationMode, int usedS peculationMode) | |
1839 throws Exception { | |
1814 Context context = getInstrumentation().getTargetContext().getApplication Context(); | 1840 Context context = getInstrumentation().getTargetContext().getApplication Context(); |
1815 final CustomTabsConnection connection = warmUpAndWait(); | 1841 final CustomTabsConnection connection = warmUpAndWait(); |
1816 CustomTabsSessionToken token = CustomTabsSessionToken.createDummySession TokenForTesting(); | 1842 CustomTabsSessionToken token = CustomTabsSessionToken.createDummySession TokenForTesting(); |
1817 connection.newSession(token); | 1843 connection.newSession(token); |
1818 connection.setSpeculationModeForSession(token, speculationMode); | 1844 connection.setSpeculationModeForSession(token, requestedSpeculationMode) ; |
1819 assertTrue(connection.mayLaunchUrl(token, Uri.parse(mTestPage), null, nu ll)); | 1845 assertTrue(connection.mayLaunchUrl(token, Uri.parse(mTestPage), null, nu ll)); |
1820 ensureCompletedSpeculationForUrl(connection, mTestPage, speculationMode) ; | 1846 ensureCompletedSpeculationForUrl(connection, mTestPage, usedSpeculationM ode); |
1821 | 1847 |
1822 try { | 1848 try { |
1823 startCustomTabActivityWithIntent(CustomTabsTestUtils.createMinimalCu stomTabIntent( | 1849 startCustomTabActivityWithIntent(CustomTabsTestUtils.createMinimalCu stomTabIntent( |
1824 context, mTestPage)); | 1850 context, mTestPage)); |
1825 } catch (InterruptedException e) { | 1851 } catch (InterruptedException e) { |
1826 fail(); | 1852 fail(); |
1827 } | 1853 } |
1828 assertEquals(Uri.parse(mTestPage).getHost() + ":" + Uri.parse(mTestPage) .getPort(), | 1854 assertEquals(Uri.parse(mTestPage).getHost() + ":" + Uri.parse(mTestPage) .getPort(), |
1829 ((EditText) mActivity.findViewById(R.id.url_bar)).getText() | 1855 ((EditText) mActivity.findViewById(R.id.url_bar)).getText() |
1830 .toString()); | 1856 .toString()); |
(...skipping 665 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2496 switch (speculationMode) { | 2522 switch (speculationMode) { |
2497 case CustomTabsConnection.SpeculationParams.PRERENDER: | 2523 case CustomTabsConnection.SpeculationParams.PRERENDER: |
2498 return "prerender"; | 2524 return "prerender"; |
2499 case CustomTabsConnection.SpeculationParams.HIDDEN_TAB: | 2525 case CustomTabsConnection.SpeculationParams.HIDDEN_TAB: |
2500 return "hidden"; | 2526 return "hidden"; |
2501 default: | 2527 default: |
2502 return "visible"; | 2528 return "visible"; |
2503 } | 2529 } |
2504 } | 2530 } |
2505 } | 2531 } |
OLD | NEW |