Commit f519f118 authored by Mei Liang's avatar Mei Liang Committed by Commit Bot

Simplify the enabling logic for grid and group

This CL simplifies the enabling logic for grid and group because low-end
and accessibility is supported for GTS with the TabGroup M5 flag.

Change-Id: I0b49f25526252275dc914e6631360e0b45495ff6
Bug: 1019489
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2092186Reviewed-by: default avatarTheresa  <twellington@chromium.org>
Reviewed-by: default avatarWei-Yin Chen (陳威尹) <wychen@chromium.org>
Reviewed-by: default avatarXi Han <hanxi@chromium.org>
Commit-Queue: Mei Liang <meiliang@chromium.org>
Cr-Commit-Position: refs/heads/master@{#749320}
parent 9e1e13dd
......@@ -8,7 +8,6 @@ import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting;
import org.chromium.base.ContextUtils;
import org.chromium.base.SysUtils;
import org.chromium.chrome.browser.device.DeviceClassManager;
import org.chromium.chrome.browser.flags.CachedFeatureFlags;
import org.chromium.chrome.browser.flags.ChromeFeatureList;
......@@ -65,7 +64,7 @@ public class TabUiFeatureUtilities {
* @return Tab UI related feature flags that should be cached.
*/
public static List<String> getFeaturesToCache() {
if (!isEligibleForTabUiExperiments() || DeviceClassManager.enableAccessibilityLayout()) {
if (!isEligibleForTabUiExperiments()) {
return Collections.emptyList();
}
return Arrays.asList(ChromeFeatureList.TAB_GRID_LAYOUT_ANDROID,
......@@ -75,23 +74,18 @@ public class TabUiFeatureUtilities {
}
private static boolean isEligibleForTabUiExperiments() {
return (ChromeFeatureList.isEnabled(ChromeFeatureList.TAB_GROUPS_CONTINUATION_ANDROID)
|| !SysUtils.isLowEndDevice())
&& !DeviceFormFactor.isNonMultiDisplayContextOnTablet(
ContextUtils.getApplicationContext());
return !DeviceFormFactor.isNonMultiDisplayContextOnTablet(
ContextUtils.getApplicationContext());
}
/**
* @return Whether the Grid Tab Switcher UI is enabled and available for use.
*/
public static boolean isGridTabSwitcherEnabled() {
// TODO(yusufo): AccessibilityLayout check should not be here and the flow should support
// changing that setting while Chrome is alive.
// Having Tab Groups or Start implies Grid Tab Switcher.
return !(CachedFeatureFlags.isEnabled(ChromeFeatureList.TAB_GROUPS_CONTINUATION_ANDROID)
&& SysUtils.isLowEndDevice())
&& CachedFeatureFlags.isEnabled(ChromeFeatureList.TAB_GRID_LAYOUT_ANDROID)
&& isTabManagementModuleSupported()
return (!DeviceClassManager.enableAccessibilityLayout()
&& CachedFeatureFlags.isEnabled(ChromeFeatureList.TAB_GRID_LAYOUT_ANDROID)
&& isTabManagementModuleSupported())
|| isTabGroupsAndroidEnabled() || StartSurfaceConfiguration.isStartSurfaceEnabled();
}
......@@ -99,7 +93,8 @@ public class TabUiFeatureUtilities {
* @return Whether the tab group feature is enabled and available for use.
*/
public static boolean isTabGroupsAndroidEnabled() {
return CachedFeatureFlags.isEnabled(ChromeFeatureList.TAB_GROUPS_ANDROID)
return !DeviceClassManager.enableAccessibilityLayout()
&& CachedFeatureFlags.isEnabled(ChromeFeatureList.TAB_GROUPS_ANDROID)
&& isTabManagementModuleSupported();
}
......
......@@ -47,6 +47,7 @@ import org.chromium.base.Callback;
import org.chromium.base.metrics.RecordHistogram;
import org.chromium.base.metrics.RecordUserAction;
import org.chromium.base.supplier.ObservableSupplier;
import org.chromium.base.test.BaseRobolectricTestRunner;
import org.chromium.chrome.browser.flags.CachedFeatureFlags;
import org.chromium.chrome.browser.flags.ChromeFeatureList;
import org.chromium.chrome.browser.share.ShareDelegate;
......@@ -65,7 +66,6 @@ import org.chromium.chrome.browser.widget.ScrimView;
import org.chromium.chrome.tab_ui.R;
import org.chromium.chrome.test.util.browser.Features;
import org.chromium.content_public.browser.LoadUrlParams;
import org.chromium.testing.local.LocalRobolectricTestRunner;
import org.chromium.ui.KeyboardVisibilityDelegate;
import org.chromium.ui.modelutil.PropertyModel;
......@@ -76,7 +76,7 @@ import java.util.List;
/**
* Tests for {@link TabGridDialogMediator}.
*/
@RunWith(LocalRobolectricTestRunner.class)
@RunWith(BaseRobolectricTestRunner.class)
@Config(manifest = Config.NONE)
@Features.DisableFeatures(ChromeFeatureList.TAB_GROUPS_CONTINUATION_ANDROID)
public class TabGridDialogMediatorUnitTest {
......
......@@ -41,6 +41,7 @@ import org.robolectric.annotation.Config;
import org.chromium.base.metrics.RecordHistogram;
import org.chromium.base.metrics.RecordUserAction;
import org.chromium.base.test.BaseRobolectricTestRunner;
import org.chromium.chrome.browser.feature_engagement.TrackerFactory;
import org.chromium.chrome.browser.flags.CachedFeatureFlags;
import org.chromium.chrome.browser.flags.ChromeFeatureList;
......@@ -54,7 +55,6 @@ import org.chromium.chrome.browser.tasks.tab_groups.TabGroupModelFilter;
import org.chromium.chrome.test.util.browser.Features;
import org.chromium.components.feature_engagement.EventConstants;
import org.chromium.components.feature_engagement.Tracker;
import org.chromium.testing.local.LocalRobolectricTestRunner;
import org.chromium.ui.modelutil.MVCListAdapter;
import org.chromium.ui.modelutil.PropertyKey;
import org.chromium.ui.modelutil.PropertyModel;
......@@ -66,7 +66,7 @@ import java.util.List;
/**
* Tests for {@link TabGridItemTouchHelperCallback}.
*/
@RunWith(LocalRobolectricTestRunner.class)
@RunWith(BaseRobolectricTestRunner.class)
@Config(manifest = Config.NONE)
public class TabGridItemTouchHelperCallbackUnitTest {
@Rule
......
......@@ -21,6 +21,7 @@ import org.chromium.base.BaseSwitches;
import org.chromium.base.CommandLine;
import org.chromium.base.SysUtils;
import org.chromium.base.test.BaseRobolectricTestRunner;
import org.chromium.chrome.browser.device.DeviceClassManager;
import org.chromium.chrome.browser.flags.CachedFeatureFlags;
import org.chromium.chrome.browser.flags.ChromeFeatureList;
import org.chromium.chrome.browser.util.AccessibilityUtil;
......@@ -55,6 +56,7 @@ public class TabUiFeatureUtilitiesUnitTest {
CommandLine.reset();
CachedFeatureFlags.resetFlagsForTesting();
AccessibilityUtil.setAccessibilityEnabledForTesting(null);
DeviceClassManager.resetForTesting();
SysUtils.resetForTesting();
}
......@@ -64,7 +66,7 @@ public class TabUiFeatureUtilitiesUnitTest {
ChromeFeatureList.TAB_GRID_LAYOUT_ANDROID,
ChromeFeatureList.TAB_GROUPS_ANDROID,
ChromeFeatureList.TAB_GROUPS_CONTINUATION_ANDROID})
public void testCacheGridTabSwitcher_HighEnd_NoEnabledFlags_disabled() {
public void testCacheGridTabSwitcher_HighEnd_NoEnabledFlags() {
// clang-format on
when(mCommandLine.hasSwitch(BaseSwitches.DISABLE_LOW_END_DEVICE_MODE)).thenReturn(true);
cacheFeatureFlags();
......@@ -73,6 +75,15 @@ public class TabUiFeatureUtilitiesUnitTest {
assertFalse(TabUiFeatureUtilities.isGridTabSwitcherEnabled());
assertFalse(TabUiFeatureUtilities.isTabGroupsAndroidEnabled());
assertFalse(TabUiFeatureUtilities.isTabGroupsAndroidContinuationEnabled());
AccessibilityUtil.setAccessibilityEnabledForTesting(true);
DeviceClassManager.resetForTesting();
cacheFeatureFlags();
CachedFeatureFlags.resetFlagsForTesting();
assertFalse(TabUiFeatureUtilities.isGridTabSwitcherEnabled());
assertFalse(TabUiFeatureUtilities.isTabGroupsAndroidEnabled());
assertFalse(TabUiFeatureUtilities.isTabGroupsAndroidContinuationEnabled());
}
private void cacheFeatureFlags() {
......@@ -86,7 +97,7 @@ public class TabUiFeatureUtilitiesUnitTest {
ChromeFeatureList.TAB_GRID_LAYOUT_ANDROID,
ChromeFeatureList.TAB_GROUPS_ANDROID,
ChromeFeatureList.TAB_GROUPS_CONTINUATION_ANDROID})
public void testCacheGridTabSwitcher_LowEnd_NoEnabledFlags_disabled() {
public void testCacheGridTabSwitcher_LowEnd_NoEnabledFlags() {
// clang-format on
when(mCommandLine.hasSwitch(BaseSwitches.ENABLE_LOW_END_DEVICE_MODE)).thenReturn(true);
cacheFeatureFlags();
......@@ -94,6 +105,14 @@ public class TabUiFeatureUtilitiesUnitTest {
CachedFeatureFlags.resetFlagsForTesting();
assertFalse(TabUiFeatureUtilities.isGridTabSwitcherEnabled());
assertFalse(TabUiFeatureUtilities.isTabGroupsAndroidEnabled());
AccessibilityUtil.setAccessibilityEnabledForTesting(true);
DeviceClassManager.resetForTesting();
cacheFeatureFlags();
CachedFeatureFlags.resetFlagsForTesting();
assertFalse(TabUiFeatureUtilities.isGridTabSwitcherEnabled());
assertFalse(TabUiFeatureUtilities.isTabGroupsAndroidEnabled());
}
@Test
......@@ -102,7 +121,7 @@ public class TabUiFeatureUtilitiesUnitTest {
@Features.DisableFeatures({ChromeFeatureList.DUET_TABSTRIP_INTEGRATION_ANDROID,
ChromeFeatureList.TAB_GROUPS_CONTINUATION_ANDROID,
ChromeFeatureList.TAB_GROUPS_ANDROID})
public void testCacheGridTabSwitcher_HighEnd_Layout_enabled() {
public void testCacheGridTabSwitcher_HighEnd_Layout() {
// clang-format on
when(mCommandLine.hasSwitch(BaseSwitches.DISABLE_LOW_END_DEVICE_MODE)).thenReturn(true);
cacheFeatureFlags();
......@@ -111,6 +130,15 @@ public class TabUiFeatureUtilitiesUnitTest {
assertTrue(TabUiFeatureUtilities.isGridTabSwitcherEnabled());
assertFalse(TabUiFeatureUtilities.isTabGroupsAndroidEnabled());
assertFalse(TabUiFeatureUtilities.isTabGroupsAndroidContinuationEnabled());
AccessibilityUtil.setAccessibilityEnabledForTesting(true);
DeviceClassManager.resetForTesting();
cacheFeatureFlags();
CachedFeatureFlags.resetFlagsForTesting();
assertFalse(TabUiFeatureUtilities.isGridTabSwitcherEnabled());
assertFalse(TabUiFeatureUtilities.isTabGroupsAndroidEnabled());
assertFalse(TabUiFeatureUtilities.isTabGroupsAndroidContinuationEnabled());
}
@Test
......@@ -119,7 +147,7 @@ public class TabUiFeatureUtilitiesUnitTest {
@Features.DisableFeatures({ChromeFeatureList.DUET_TABSTRIP_INTEGRATION_ANDROID,
ChromeFeatureList.TAB_GROUPS_CONTINUATION_ANDROID,
ChromeFeatureList.TAB_GROUPS_ANDROID})
public void testCacheGridTabSwitcher_LowEnd_Layout_disabled() {
public void testCacheGridTabSwitcher_LowEnd_Layout() {
// clang-format on
when(mCommandLine.hasSwitch(BaseSwitches.ENABLE_LOW_END_DEVICE_MODE)).thenReturn(true);
cacheFeatureFlags();
......@@ -128,6 +156,15 @@ public class TabUiFeatureUtilitiesUnitTest {
assertFalse(TabUiFeatureUtilities.isGridTabSwitcherEnabled());
assertFalse(TabUiFeatureUtilities.isTabGroupsAndroidEnabled());
assertFalse(TabUiFeatureUtilities.isTabGroupsAndroidContinuationEnabled());
AccessibilityUtil.setAccessibilityEnabledForTesting(true);
DeviceClassManager.resetForTesting();
cacheFeatureFlags();
CachedFeatureFlags.resetFlagsForTesting();
assertFalse(TabUiFeatureUtilities.isGridTabSwitcherEnabled());
assertFalse(TabUiFeatureUtilities.isTabGroupsAndroidEnabled());
assertFalse(TabUiFeatureUtilities.isTabGroupsAndroidContinuationEnabled());
}
@Test
......@@ -136,7 +173,7 @@ public class TabUiFeatureUtilitiesUnitTest {
ChromeFeatureList.TAB_GROUPS_ANDROID})
@Features.DisableFeatures({ChromeFeatureList.DUET_TABSTRIP_INTEGRATION_ANDROID,
ChromeFeatureList.TAB_GROUPS_CONTINUATION_ANDROID})
public void testCacheGridTabSwitcher_HighEnd_LayoutGroup_enabled() {
public void testCacheGridTabSwitcher_HighEnd_LayoutGroup() {
// clang-format on
when(mCommandLine.hasSwitch(BaseSwitches.DISABLE_LOW_END_DEVICE_MODE)).thenReturn(true);
cacheFeatureFlags();
......@@ -145,6 +182,15 @@ public class TabUiFeatureUtilitiesUnitTest {
assertTrue(TabUiFeatureUtilities.isGridTabSwitcherEnabled());
assertTrue(TabUiFeatureUtilities.isTabGroupsAndroidEnabled());
assertFalse(TabUiFeatureUtilities.isTabGroupsAndroidContinuationEnabled());
AccessibilityUtil.setAccessibilityEnabledForTesting(true);
DeviceClassManager.resetForTesting();
cacheFeatureFlags();
CachedFeatureFlags.resetFlagsForTesting();
assertFalse(TabUiFeatureUtilities.isGridTabSwitcherEnabled());
assertFalse(TabUiFeatureUtilities.isTabGroupsAndroidEnabled());
assertFalse(TabUiFeatureUtilities.isTabGroupsAndroidContinuationEnabled());
}
@Test
......@@ -153,7 +199,7 @@ public class TabUiFeatureUtilitiesUnitTest {
ChromeFeatureList.TAB_GROUPS_ANDROID})
@Features.DisableFeatures({ChromeFeatureList.DUET_TABSTRIP_INTEGRATION_ANDROID,
ChromeFeatureList.TAB_GROUPS_CONTINUATION_ANDROID})
public void testCacheGridTabSwitcher_LowEnd_LayoutGroup_disabled() {
public void testCacheGridTabSwitcher_LowEnd_LayoutGroup() {
// clang-format on
when(mCommandLine.hasSwitch(BaseSwitches.ENABLE_LOW_END_DEVICE_MODE)).thenReturn(true);
cacheFeatureFlags();
......@@ -162,6 +208,14 @@ public class TabUiFeatureUtilitiesUnitTest {
assertFalse(TabUiFeatureUtilities.isGridTabSwitcherEnabled());
assertFalse(TabUiFeatureUtilities.isTabGroupsAndroidEnabled());
assertFalse(TabUiFeatureUtilities.isTabGroupsAndroidContinuationEnabled());
AccessibilityUtil.setAccessibilityEnabledForTesting(true);
DeviceClassManager.resetForTesting();
cacheFeatureFlags();
assertFalse(TabUiFeatureUtilities.isGridTabSwitcherEnabled());
assertFalse(TabUiFeatureUtilities.isTabGroupsAndroidEnabled());
assertFalse(TabUiFeatureUtilities.isTabGroupsAndroidContinuationEnabled());
}
@Test
......@@ -170,7 +224,7 @@ public class TabUiFeatureUtilitiesUnitTest {
@Features.DisableFeatures({ChromeFeatureList.DUET_TABSTRIP_INTEGRATION_ANDROID,
ChromeFeatureList.TAB_GRID_LAYOUT_ANDROID,
ChromeFeatureList.TAB_GROUPS_CONTINUATION_ANDROID})
public void testCacheGridTabSwitcher_HighEnd_Group_enabled() {
public void testCacheGridTabSwitcher_HighEnd_Group() {
// clang-format on
when(mCommandLine.hasSwitch(BaseSwitches.DISABLE_LOW_END_DEVICE_MODE)).thenReturn(true);
cacheFeatureFlags();
......@@ -179,6 +233,14 @@ public class TabUiFeatureUtilitiesUnitTest {
assertTrue(TabUiFeatureUtilities.isGridTabSwitcherEnabled());
assertTrue(TabUiFeatureUtilities.isTabGroupsAndroidEnabled());
assertFalse(TabUiFeatureUtilities.isTabGroupsAndroidContinuationEnabled());
AccessibilityUtil.setAccessibilityEnabledForTesting(true);
DeviceClassManager.resetForTesting();
cacheFeatureFlags();
assertFalse(TabUiFeatureUtilities.isGridTabSwitcherEnabled());
assertFalse(TabUiFeatureUtilities.isTabGroupsAndroidEnabled());
assertFalse(TabUiFeatureUtilities.isTabGroupsAndroidContinuationEnabled());
}
@Test
......@@ -187,7 +249,7 @@ public class TabUiFeatureUtilitiesUnitTest {
@Features.DisableFeatures({ChromeFeatureList.DUET_TABSTRIP_INTEGRATION_ANDROID,
ChromeFeatureList.TAB_GRID_LAYOUT_ANDROID,
ChromeFeatureList.TAB_GROUPS_CONTINUATION_ANDROID})
public void testCacheGridTabSwitcher_LowEnd_Group_disabled() {
public void testCacheGridTabSwitcher_LowEnd_Group() {
// clang-format on
when(mCommandLine.hasSwitch(BaseSwitches.ENABLE_LOW_END_DEVICE_MODE)).thenReturn(true);
cacheFeatureFlags();
......@@ -196,6 +258,14 @@ public class TabUiFeatureUtilitiesUnitTest {
assertFalse(TabUiFeatureUtilities.isGridTabSwitcherEnabled());
assertFalse(TabUiFeatureUtilities.isTabGroupsAndroidEnabled());
assertFalse(TabUiFeatureUtilities.isTabGroupsAndroidContinuationEnabled());
AccessibilityUtil.setAccessibilityEnabledForTesting(true);
DeviceClassManager.resetForTesting();
cacheFeatureFlags();
assertFalse(TabUiFeatureUtilities.isGridTabSwitcherEnabled());
assertFalse(TabUiFeatureUtilities.isTabGroupsAndroidEnabled());
assertFalse(TabUiFeatureUtilities.isTabGroupsAndroidContinuationEnabled());
}
@Test
......@@ -204,7 +274,7 @@ public class TabUiFeatureUtilitiesUnitTest {
@Features.DisableFeatures({ChromeFeatureList.DUET_TABSTRIP_INTEGRATION_ANDROID,
ChromeFeatureList.TAB_GRID_LAYOUT_ANDROID,
ChromeFeatureList.TAB_GROUPS_ANDROID})
public void testCacheGridTabSwitcher_HighEnd_Continuation_disabled() {
public void testCacheGridTabSwitcher_HighEnd_Continuation() {
// clang-format on
when(mCommandLine.hasSwitch(BaseSwitches.DISABLE_LOW_END_DEVICE_MODE)).thenReturn(true);
cacheFeatureFlags();
......@@ -213,6 +283,14 @@ public class TabUiFeatureUtilitiesUnitTest {
assertFalse(TabUiFeatureUtilities.isGridTabSwitcherEnabled());
assertFalse(TabUiFeatureUtilities.isTabGroupsAndroidEnabled());
assertFalse(TabUiFeatureUtilities.isTabGroupsAndroidContinuationEnabled());
AccessibilityUtil.setAccessibilityEnabledForTesting(true);
DeviceClassManager.resetForTesting();
cacheFeatureFlags();
assertFalse(TabUiFeatureUtilities.isGridTabSwitcherEnabled());
assertFalse(TabUiFeatureUtilities.isTabGroupsAndroidEnabled());
assertFalse(TabUiFeatureUtilities.isTabGroupsAndroidContinuationEnabled());
}
@Test
......@@ -221,7 +299,7 @@ public class TabUiFeatureUtilitiesUnitTest {
@Features.DisableFeatures({ChromeFeatureList.DUET_TABSTRIP_INTEGRATION_ANDROID,
ChromeFeatureList.TAB_GRID_LAYOUT_ANDROID,
ChromeFeatureList.TAB_GROUPS_ANDROID})
public void testCacheGridTabSwitcher_LowEnd_Continuation_disabled() {
public void testCacheGridTabSwitcher_LowEnd_Continuation() {
// clang-format on
when(mCommandLine.hasSwitch(BaseSwitches.ENABLE_LOW_END_DEVICE_MODE)).thenReturn(true);
cacheFeatureFlags();
......@@ -230,6 +308,14 @@ public class TabUiFeatureUtilitiesUnitTest {
assertFalse(TabUiFeatureUtilities.isGridTabSwitcherEnabled());
assertFalse(TabUiFeatureUtilities.isTabGroupsAndroidEnabled());
assertFalse(TabUiFeatureUtilities.isTabGroupsAndroidContinuationEnabled());
AccessibilityUtil.setAccessibilityEnabledForTesting(true);
DeviceClassManager.resetForTesting();
cacheFeatureFlags();
assertFalse(TabUiFeatureUtilities.isGridTabSwitcherEnabled());
assertFalse(TabUiFeatureUtilities.isTabGroupsAndroidEnabled());
assertFalse(TabUiFeatureUtilities.isTabGroupsAndroidContinuationEnabled());
}
@Test
......@@ -238,7 +324,7 @@ public class TabUiFeatureUtilitiesUnitTest {
ChromeFeatureList.TAB_GROUPS_ANDROID,
ChromeFeatureList.TAB_GROUPS_CONTINUATION_ANDROID})
@Features.DisableFeatures({ChromeFeatureList.DUET_TABSTRIP_INTEGRATION_ANDROID})
public void testCacheGridTabSwitcher_HighEnd_AllFlags_enabled() {
public void testCacheGridTabSwitcher_HighEnd_AllFlags() {
// clang-format on
when(mCommandLine.hasSwitch(BaseSwitches.DISABLE_LOW_END_DEVICE_MODE)).thenReturn(true);
cacheFeatureFlags();
......@@ -247,6 +333,14 @@ public class TabUiFeatureUtilitiesUnitTest {
assertTrue(TabUiFeatureUtilities.isGridTabSwitcherEnabled());
assertTrue(TabUiFeatureUtilities.isTabGroupsAndroidEnabled());
assertTrue(TabUiFeatureUtilities.isTabGroupsAndroidContinuationEnabled());
AccessibilityUtil.setAccessibilityEnabledForTesting(true);
DeviceClassManager.resetForTesting();
cacheFeatureFlags();
assertTrue(TabUiFeatureUtilities.isGridTabSwitcherEnabled());
assertTrue(TabUiFeatureUtilities.isTabGroupsAndroidEnabled());
assertTrue(TabUiFeatureUtilities.isTabGroupsAndroidContinuationEnabled());
}
@Test
......@@ -255,7 +349,7 @@ public class TabUiFeatureUtilitiesUnitTest {
ChromeFeatureList.TAB_GROUPS_ANDROID,
ChromeFeatureList.TAB_GROUPS_CONTINUATION_ANDROID})
@Features.DisableFeatures({ChromeFeatureList.DUET_TABSTRIP_INTEGRATION_ANDROID})
public void testCacheGridTabSwitcher_LowEnd_AllFlags_enabled() {
public void testCacheGridTabSwitcher_LowEnd_AllFlags() {
// clang-format on
when(mCommandLine.hasSwitch(BaseSwitches.ENABLE_LOW_END_DEVICE_MODE)).thenReturn(true);
......@@ -265,6 +359,14 @@ public class TabUiFeatureUtilitiesUnitTest {
assertTrue(TabUiFeatureUtilities.isGridTabSwitcherEnabled());
assertTrue(TabUiFeatureUtilities.isTabGroupsAndroidEnabled());
assertTrue(TabUiFeatureUtilities.isTabGroupsAndroidContinuationEnabled());
AccessibilityUtil.setAccessibilityEnabledForTesting(true);
DeviceClassManager.resetForTesting();
cacheFeatureFlags();
assertTrue(TabUiFeatureUtilities.isGridTabSwitcherEnabled());
assertTrue(TabUiFeatureUtilities.isTabGroupsAndroidEnabled());
assertTrue(TabUiFeatureUtilities.isTabGroupsAndroidContinuationEnabled());
}
@Test
......@@ -273,7 +375,7 @@ public class TabUiFeatureUtilitiesUnitTest {
ChromeFeatureList.TAB_GROUPS_CONTINUATION_ANDROID})
@Features.DisableFeatures({ChromeFeatureList.DUET_TABSTRIP_INTEGRATION_ANDROID,
ChromeFeatureList.TAB_GROUPS_ANDROID})
public void testCacheGridTabSwitcher_HighEnd_LayoutContinuation_enabled() {
public void testCacheGridTabSwitcher_HighEnd_LayoutContinuation() {
// clang-format on
when(mCommandLine.hasSwitch(BaseSwitches.DISABLE_LOW_END_DEVICE_MODE)).thenReturn(true);
cacheFeatureFlags();
......@@ -282,6 +384,14 @@ public class TabUiFeatureUtilitiesUnitTest {
assertTrue(TabUiFeatureUtilities.isGridTabSwitcherEnabled());
assertFalse(TabUiFeatureUtilities.isTabGroupsAndroidEnabled());
assertFalse(TabUiFeatureUtilities.isTabGroupsAndroidContinuationEnabled());
AccessibilityUtil.setAccessibilityEnabledForTesting(true);
DeviceClassManager.resetForTesting();
cacheFeatureFlags();
assertFalse(TabUiFeatureUtilities.isGridTabSwitcherEnabled());
assertFalse(TabUiFeatureUtilities.isTabGroupsAndroidEnabled());
assertFalse(TabUiFeatureUtilities.isTabGroupsAndroidContinuationEnabled());
}
@Test
......@@ -290,7 +400,7 @@ public class TabUiFeatureUtilitiesUnitTest {
ChromeFeatureList.TAB_GROUPS_CONTINUATION_ANDROID})
@Features.DisableFeatures({ChromeFeatureList.DUET_TABSTRIP_INTEGRATION_ANDROID,
ChromeFeatureList.TAB_GROUPS_ANDROID})
public void testCacheGridTabSwitcher_LowEnd_LayoutContinuation_disabled() {
public void testCacheGridTabSwitcher_LowEnd_LayoutContinuation() {
// clang-format on
when(mCommandLine.hasSwitch(BaseSwitches.ENABLE_LOW_END_DEVICE_MODE)).thenReturn(true);
cacheFeatureFlags();
......@@ -299,6 +409,14 @@ public class TabUiFeatureUtilitiesUnitTest {
assertFalse(TabUiFeatureUtilities.isGridTabSwitcherEnabled());
assertFalse(TabUiFeatureUtilities.isTabGroupsAndroidEnabled());
assertFalse(TabUiFeatureUtilities.isTabGroupsAndroidContinuationEnabled());
AccessibilityUtil.setAccessibilityEnabledForTesting(true);
DeviceClassManager.resetForTesting();
cacheFeatureFlags();
assertFalse(TabUiFeatureUtilities.isGridTabSwitcherEnabled());
assertFalse(TabUiFeatureUtilities.isTabGroupsAndroidEnabled());
assertFalse(TabUiFeatureUtilities.isTabGroupsAndroidContinuationEnabled());
}
@Test
......@@ -307,7 +425,7 @@ public class TabUiFeatureUtilitiesUnitTest {
ChromeFeatureList.TAB_GROUPS_CONTINUATION_ANDROID})
@Features.DisableFeatures({ChromeFeatureList.DUET_TABSTRIP_INTEGRATION_ANDROID,
ChromeFeatureList.TAB_GRID_LAYOUT_ANDROID})
public void testCacheGridTabSwitcher_HighEnd_GroupContinuation_enabled() {
public void testCacheGridTabSwitcher_HighEnd_GroupContinuation() {
// clang-format on
when(mCommandLine.hasSwitch(BaseSwitches.DISABLE_LOW_END_DEVICE_MODE)).thenReturn(true);
cacheFeatureFlags();
......@@ -316,6 +434,14 @@ public class TabUiFeatureUtilitiesUnitTest {
assertTrue(TabUiFeatureUtilities.isGridTabSwitcherEnabled());
assertTrue(TabUiFeatureUtilities.isTabGroupsAndroidEnabled());
assertTrue(TabUiFeatureUtilities.isTabGroupsAndroidContinuationEnabled());
AccessibilityUtil.setAccessibilityEnabledForTesting(true);
DeviceClassManager.resetForTesting();
cacheFeatureFlags();
assertTrue(TabUiFeatureUtilities.isGridTabSwitcherEnabled());
assertTrue(TabUiFeatureUtilities.isTabGroupsAndroidEnabled());
assertTrue(TabUiFeatureUtilities.isTabGroupsAndroidContinuationEnabled());
}
@Test
......@@ -324,7 +450,7 @@ public class TabUiFeatureUtilitiesUnitTest {
ChromeFeatureList.TAB_GROUPS_CONTINUATION_ANDROID})
@Features.DisableFeatures({ChromeFeatureList.DUET_TABSTRIP_INTEGRATION_ANDROID,
ChromeFeatureList.TAB_GRID_LAYOUT_ANDROID})
public void testCacheGridTabSwitcher_LowEnd_GroupContinuation_enabled() {
public void testCacheGridTabSwitcher_LowEnd_GroupContinuation() {
// clang-format on
when(mCommandLine.hasSwitch(BaseSwitches.ENABLE_LOW_END_DEVICE_MODE)).thenReturn(true);
cacheFeatureFlags();
......@@ -333,5 +459,37 @@ public class TabUiFeatureUtilitiesUnitTest {
assertTrue(TabUiFeatureUtilities.isGridTabSwitcherEnabled());
assertTrue(TabUiFeatureUtilities.isTabGroupsAndroidEnabled());
assertTrue(TabUiFeatureUtilities.isTabGroupsAndroidContinuationEnabled());
AccessibilityUtil.setAccessibilityEnabledForTesting(true);
DeviceClassManager.resetForTesting();
cacheFeatureFlags();
assertTrue(TabUiFeatureUtilities.isGridTabSwitcherEnabled());
assertTrue(TabUiFeatureUtilities.isTabGroupsAndroidEnabled());
assertTrue(TabUiFeatureUtilities.isTabGroupsAndroidContinuationEnabled());
}
@Test
// clang-format off
@Features.EnableFeatures({ChromeFeatureList.TAB_GROUPS_ANDROID,
ChromeFeatureList.TAB_GROUPS_CONTINUATION_ANDROID})
@Features.DisableFeatures({ChromeFeatureList.DUET_TABSTRIP_INTEGRATION_ANDROID,
ChromeFeatureList.TAB_GRID_LAYOUT_ANDROID})
public void testCacheGridAndGroup_LowEnd_enabledThenDisabled_withContinuationFlag() {
// clang-format on
when(mCommandLine.hasSwitch(BaseSwitches.ENABLE_LOW_END_DEVICE_MODE)).thenReturn(true);
cacheFeatureFlags();
CachedFeatureFlags.resetFlagsForTesting();
assertTrue(TabUiFeatureUtilities.isGridTabSwitcherEnabled());
assertTrue(TabUiFeatureUtilities.isTabGroupsAndroidEnabled());
assertTrue(TabUiFeatureUtilities.isTabGroupsAndroidContinuationEnabled());
CachedFeatureFlags.resetFlagsForTesting();
// Pretend that we've flipped the continuation flag.
CachedFeatureFlags.setForTesting(ChromeFeatureList.TAB_GROUPS_CONTINUATION_ANDROID, false);
assertFalse(TabUiFeatureUtilities.isGridTabSwitcherEnabled());
assertFalse(TabUiFeatureUtilities.isTabGroupsAndroidEnabled());
assertFalse(TabUiFeatureUtilities.isTabGroupsAndroidContinuationEnabled());
}
}
......@@ -4,9 +4,12 @@
package org.chromium.chrome.browser.device;
import androidx.annotation.VisibleForTesting;
import org.chromium.base.CommandLine;
import org.chromium.base.ContextUtils;
import org.chromium.base.SysUtils;
import org.chromium.chrome.browser.flags.CachedFeatureFlags;
import org.chromium.chrome.browser.flags.ChromeFeatureList;
import org.chromium.chrome.browser.flags.ChromeSwitches;
import org.chromium.chrome.browser.preferences.ChromePreferenceKeys;
......@@ -63,7 +66,6 @@ public class DeviceClassManager {
// Flag based configurations.
CommandLine commandLine = CommandLine.getInstance();
assert commandLine.isNativeImplementation();
mEnableAccessibilityLayout |= commandLine
.hasSwitch(ChromeSwitches.ENABLE_ACCESSIBILITY_TAB_SWITCHER);
mEnableFullscreen =
......@@ -87,11 +89,8 @@ public class DeviceClassManager {
*/
public static boolean enableAccessibilityLayout() {
if (isPhone()
&& ChromeFeatureList.isEnabled(ChromeFeatureList.TAB_GROUPS_CONTINUATION_ANDROID)
&& (ChromeFeatureList.isEnabled(ChromeFeatureList.TAB_GROUPS_ANDROID)
|| (!SysUtils.isLowEndDevice()
&& ChromeFeatureList.isEnabled(
ChromeFeatureList.TAB_GRID_LAYOUT_ANDROID)))) {
&& CachedFeatureFlags.isEnabled(ChromeFeatureList.TAB_GROUPS_CONTINUATION_ANDROID)
&& CachedFeatureFlags.isEnabled(ChromeFeatureList.TAB_GROUPS_ANDROID)) {
return false;
}
......@@ -136,4 +135,12 @@ public class DeviceClassManager {
return !DeviceFormFactor.isNonMultiDisplayContextOnTablet(
ContextUtils.getApplicationContext());
}
/**
* Reset the instance for testing.
*/
@VisibleForTesting
public static void resetForTesting() {
sInstance = null;
}
}
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