Commit b195b482 authored by Wei-Yin Chen (陳威尹)'s avatar Wei-Yin Chen (陳威尹) Committed by Commit Bot

Merge TabFeatureUtilities into TabUiFeatureUtilities

Bug: 1012975
Change-Id: Id5ad8e66deda9819e54b656a1b27b1906c849052
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2114397Reviewed-by: default avatarTheresa  <twellington@chromium.org>
Reviewed-by: default avatarHenrique Nakashima <hnakashima@chromium.org>
Commit-Queue: Wei-Yin Chen (陳威尹) <wychen@chromium.org>
Cr-Commit-Position: refs/heads/master@{#753150}
parent ecb092dc
...@@ -1581,7 +1581,6 @@ chrome_java_sources = [ ...@@ -1581,7 +1581,6 @@ chrome_java_sources = [
"java/src/org/chromium/chrome/browser/tab/TabCreationState.java", "java/src/org/chromium/chrome/browser/tab/TabCreationState.java",
"java/src/org/chromium/chrome/browser/tab/TabDelegateFactory.java", "java/src/org/chromium/chrome/browser/tab/TabDelegateFactory.java",
"java/src/org/chromium/chrome/browser/tab/TabFavicon.java", "java/src/org/chromium/chrome/browser/tab/TabFavicon.java",
"java/src/org/chromium/chrome/browser/tab/TabFeatureUtilities.java",
"java/src/org/chromium/chrome/browser/tab/TabHelpers.java", "java/src/org/chromium/chrome/browser/tab/TabHelpers.java",
"java/src/org/chromium/chrome/browser/tab/TabHidingType.java", "java/src/org/chromium/chrome/browser/tab/TabHidingType.java",
"java/src/org/chromium/chrome/browser/tab/TabIdManager.java", "java/src/org/chromium/chrome/browser/tab/TabIdManager.java",
......
...@@ -34,7 +34,6 @@ import org.chromium.chrome.browser.compositor.scene_layer.SceneLayer; ...@@ -34,7 +34,6 @@ import org.chromium.chrome.browser.compositor.scene_layer.SceneLayer;
import org.chromium.chrome.browser.compositor.scene_layer.TabListSceneLayer; import org.chromium.chrome.browser.compositor.scene_layer.TabListSceneLayer;
import org.chromium.chrome.browser.fullscreen.ChromeFullscreenManager; import org.chromium.chrome.browser.fullscreen.ChromeFullscreenManager;
import org.chromium.chrome.browser.tab.Tab; import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.tab.TabFeatureUtilities;
import org.chromium.chrome.browser.tabmodel.TabModelSelector; import org.chromium.chrome.browser.tabmodel.TabModelSelector;
import org.chromium.chrome.browser.tasks.tab_management.TabSwitcher; import org.chromium.chrome.browser.tasks.tab_management.TabSwitcher;
import org.chromium.chrome.browser.tasks.tab_management.TabUiFeatureUtilities; import org.chromium.chrome.browser.tasks.tab_management.TabUiFeatureUtilities;
...@@ -122,7 +121,7 @@ public class StartSurfaceLayout extends Layout implements StartSurface.OverviewM ...@@ -122,7 +121,7 @@ public class StartSurfaceLayout extends Layout implements StartSurface.OverviewM
// The Tab-to-GTS animation is done, and it's time to renew the thumbnail without causing // The Tab-to-GTS animation is done, and it's time to renew the thumbnail without causing
// janky frames. // janky frames.
// When animation is off, the thumbnail is already updated when showing the GTS. // When animation is off, the thumbnail is already updated when showing the GTS.
if (TabFeatureUtilities.isTabToGtsAnimationEnabled()) { if (TabUiFeatureUtilities.isTabToGtsAnimationEnabled()) {
// Delay thumbnail taking a bit more to make it less likely to happen before the // Delay thumbnail taking a bit more to make it less likely to happen before the
// thumbnail taking triggered by ThumbnailFetcher. See crbug.com/996385 for details. // thumbnail taking triggered by ThumbnailFetcher. See crbug.com/996385 for details.
new Handler().postDelayed(() -> { new Handler().postDelayed(() -> {
...@@ -140,7 +139,7 @@ public class StartSurfaceLayout extends Layout implements StartSurface.OverviewM ...@@ -140,7 +139,7 @@ public class StartSurfaceLayout extends Layout implements StartSurface.OverviewM
// The Android View version of GTS overview is hidden. // The Android View version of GTS overview is hidden.
// If not doing GTS-to-Tab transition animation, we show the fade-out instead, which was // If not doing GTS-to-Tab transition animation, we show the fade-out instead, which was
// already done. // already done.
if (!TabFeatureUtilities.isTabToGtsAnimationEnabled()) { if (!TabUiFeatureUtilities.isTabToGtsAnimationEnabled()) {
postHiding(); postHiding();
return; return;
} }
...@@ -179,8 +178,8 @@ public class StartSurfaceLayout extends Layout implements StartSurface.OverviewM ...@@ -179,8 +178,8 @@ public class StartSurfaceLayout extends Layout implements StartSurface.OverviewM
// Skip shrinking animation when there is no tab in current tab model. // Skip shrinking animation when there is no tab in current tab model.
boolean isCurrentTabModelEmpty = mTabModelSelector.getCurrentModel().getCount() == 0; boolean isCurrentTabModelEmpty = mTabModelSelector.getCurrentModel().getCount() == 0;
boolean showShrinkingAnimation = animate && TabFeatureUtilities.isTabToGtsAnimationEnabled() boolean showShrinkingAnimation = animate
&& !isCurrentTabModelEmpty; && TabUiFeatureUtilities.isTabToGtsAnimationEnabled() && !isCurrentTabModelEmpty;
boolean quick = mTabListDelegate.prepareOverview(); boolean quick = mTabListDelegate.prepareOverview();
boolean skipSlowZooming = TabUiFeatureUtilities.SKIP_SLOW_ZOOMING.getValue(); boolean skipSlowZooming = TabUiFeatureUtilities.SKIP_SLOW_ZOOMING.getValue();
Log.d(TAG, "SkipSlowZooming = " + skipSlowZooming); Log.d(TAG, "SkipSlowZooming = " + skipSlowZooming);
...@@ -241,7 +240,7 @@ public class StartSurfaceLayout extends Layout implements StartSurface.OverviewM ...@@ -241,7 +240,7 @@ public class StartSurfaceLayout extends Layout implements StartSurface.OverviewM
updateCacheVisibleIds(new LinkedList<>(Arrays.asList(sourceTabId))); updateCacheVisibleIds(new LinkedList<>(Arrays.asList(sourceTabId)));
mIsAnimating = true; mIsAnimating = true;
mController.hideOverview(!TabFeatureUtilities.isTabToGtsAnimationEnabled()); mController.hideOverview(!TabUiFeatureUtilities.isTabToGtsAnimationEnabled());
} }
@Override @Override
...@@ -465,7 +464,8 @@ public class StartSurfaceLayout extends Layout implements StartSurface.OverviewM ...@@ -465,7 +464,8 @@ public class StartSurfaceLayout extends Layout implements StartSurface.OverviewM
// The content viewport is intentionally sent as both params below. // The content viewport is intentionally sent as both params below.
mSceneLayer.pushLayers(getContext(), contentViewport, contentViewport, this, mSceneLayer.pushLayers(getContext(), contentViewport, contentViewport, this,
layerTitleCache, tabContentManager, resourceManager, fullscreenManager, layerTitleCache, tabContentManager, resourceManager, fullscreenManager,
TabFeatureUtilities.isTabToGtsAnimationEnabled() ? mTabListDelegate.getResourceId() TabUiFeatureUtilities.isTabToGtsAnimationEnabled()
? mTabListDelegate.getResourceId()
: 0, : 0,
mBackgroundAlpha, mStartSurface.getTabListDelegate().getTabListTopOffset()); mBackgroundAlpha, mStartSurface.getTabListDelegate().getTabListTopOffset());
mFrameCount++; mFrameCount++;
......
...@@ -39,8 +39,8 @@ import org.chromium.chrome.browser.compositor.layouts.content.TabContentManager; ...@@ -39,8 +39,8 @@ import org.chromium.chrome.browser.compositor.layouts.content.TabContentManager;
import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.chrome.browser.flags.ChromeFeatureList;
import org.chromium.chrome.browser.flags.ChromeSwitches; import org.chromium.chrome.browser.flags.ChromeSwitches;
import org.chromium.chrome.browser.tab.Tab; import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.tab.TabFeatureUtilities;
import org.chromium.chrome.browser.tab.TabSelectionType; import org.chromium.chrome.browser.tab.TabSelectionType;
import org.chromium.chrome.browser.tasks.tab_management.TabUiFeatureUtilities;
import org.chromium.chrome.tab_ui.R; import org.chromium.chrome.tab_ui.R;
import org.chromium.chrome.test.ChromeJUnit4ClassRunner; import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
import org.chromium.chrome.test.ChromeTabbedActivityTestRule; import org.chromium.chrome.test.ChromeTabbedActivityTestRule;
...@@ -111,7 +111,7 @@ public class StartSurfaceLayoutPerfTest { ...@@ -111,7 +111,7 @@ public class StartSurfaceLayoutPerfTest {
mWaitingTime = 1000; mWaitingTime = 1000;
mTabNumCap = 0; mTabNumCap = 0;
} }
assertTrue(TabFeatureUtilities.isTabToGtsAnimationEnabled()); assertTrue(TabUiFeatureUtilities.isTabToGtsAnimationEnabled());
CriteriaHelper.pollUiThread(Criteria.equals(true, CriteriaHelper.pollUiThread(Criteria.equals(true,
mActivityTestRule.getActivity() mActivityTestRule.getActivity()
......
...@@ -84,7 +84,6 @@ import org.chromium.chrome.browser.flags.ChromeFeatureList; ...@@ -84,7 +84,6 @@ import org.chromium.chrome.browser.flags.ChromeFeatureList;
import org.chromium.chrome.browser.flags.ChromeSwitches; import org.chromium.chrome.browser.flags.ChromeSwitches;
import org.chromium.chrome.browser.search_engines.TemplateUrlServiceFactory; import org.chromium.chrome.browser.search_engines.TemplateUrlServiceFactory;
import org.chromium.chrome.browser.tab.Tab; import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.tab.TabFeatureUtilities;
import org.chromium.chrome.browser.tabmodel.TabModel; import org.chromium.chrome.browser.tabmodel.TabModel;
import org.chromium.chrome.browser.tasks.tab_management.TabProperties; import org.chromium.chrome.browser.tasks.tab_management.TabProperties;
import org.chromium.chrome.browser.tasks.tab_management.TabSelectionEditorTestingRobot; import org.chromium.chrome.browser.tasks.tab_management.TabSelectionEditorTestingRobot;
...@@ -275,7 +274,7 @@ public class StartSurfaceLayoutTest { ...@@ -275,7 +274,7 @@ public class StartSurfaceLayoutTest {
@FlakyTest(message = "crbug.com/1064157 This test is flaky") @FlakyTest(message = "crbug.com/1064157 This test is flaky")
public void testRenderGrid_3NativeTabs() throws InterruptedException, IOException { public void testRenderGrid_3NativeTabs() throws InterruptedException, IOException {
// clang-format on // clang-format on
assertTrue(TabFeatureUtilities.isTabToGtsAnimationEnabled()); assertTrue(TabUiFeatureUtilities.isTabToGtsAnimationEnabled());
// Prepare some incognito native tabs and enter tab switcher. // Prepare some incognito native tabs and enter tab switcher.
// NTP in incognito mode is chosen for its consistency in look, and we don't have to mock // NTP in incognito mode is chosen for its consistency in look, and we don't have to mock
// away the MV tiles, login promo, feed, etc. // away the MV tiles, login promo, feed, etc.
...@@ -294,7 +293,7 @@ public class StartSurfaceLayoutTest { ...@@ -294,7 +293,7 @@ public class StartSurfaceLayoutTest {
@DisableFeatures(ChromeFeatureList.TAB_TO_GTS_ANIMATION + "<Study") @DisableFeatures(ChromeFeatureList.TAB_TO_GTS_ANIMATION + "<Study")
@CommandLineFlags.Add({BASE_PARAMS}) @CommandLineFlags.Add({BASE_PARAMS})
public void testTabToGridFromLiveTab() throws InterruptedException { public void testTabToGridFromLiveTab() throws InterruptedException {
assertFalse(TabFeatureUtilities.isTabToGtsAnimationEnabled()); assertFalse(TabUiFeatureUtilities.isTabToGtsAnimationEnabled());
assertEquals(0, mTabListDelegate.getSoftCleanupDelayForTesting()); assertEquals(0, mTabListDelegate.getSoftCleanupDelayForTesting());
assertEquals(0, mTabListDelegate.getCleanupDelayForTesting()); assertEquals(0, mTabListDelegate.getCleanupDelayForTesting());
...@@ -309,7 +308,7 @@ public class StartSurfaceLayoutTest { ...@@ -309,7 +308,7 @@ public class StartSurfaceLayoutTest {
@MinAndroidSdkLevel(Build.VERSION_CODES.LOLLIPOP) @MinAndroidSdkLevel(Build.VERSION_CODES.LOLLIPOP)
@DisabledTest(message = "crbug.com/991852 This test is flaky") @DisabledTest(message = "crbug.com/991852 This test is flaky")
public void testTabToGridFromLiveTabAnimation() throws InterruptedException { public void testTabToGridFromLiveTabAnimation() throws InterruptedException {
assertTrue(TabFeatureUtilities.isTabToGtsAnimationEnabled()); assertTrue(TabUiFeatureUtilities.isTabToGtsAnimationEnabled());
prepareTabs(2, 0, NTP_URL); prepareTabs(2, 0, NTP_URL);
testTabToGrid(mUrl); testTabToGrid(mUrl);
...@@ -320,7 +319,7 @@ public class StartSurfaceLayoutTest { ...@@ -320,7 +319,7 @@ public class StartSurfaceLayoutTest {
@DisableFeatures(ChromeFeatureList.TAB_TO_GTS_ANIMATION + "<Study") @DisableFeatures(ChromeFeatureList.TAB_TO_GTS_ANIMATION + "<Study")
@CommandLineFlags.Add({BASE_PARAMS + "/soft-cleanup-delay/2000/cleanup-delay/10000"}) @CommandLineFlags.Add({BASE_PARAMS + "/soft-cleanup-delay/2000/cleanup-delay/10000"})
public void testTabToGridFromLiveTabWarm() throws InterruptedException { public void testTabToGridFromLiveTabWarm() throws InterruptedException {
assertFalse(TabFeatureUtilities.isTabToGtsAnimationEnabled()); assertFalse(TabUiFeatureUtilities.isTabToGtsAnimationEnabled());
assertEquals(2000, mTabListDelegate.getSoftCleanupDelayForTesting()); assertEquals(2000, mTabListDelegate.getSoftCleanupDelayForTesting());
assertEquals(10000, mTabListDelegate.getCleanupDelayForTesting()); assertEquals(10000, mTabListDelegate.getCleanupDelayForTesting());
...@@ -334,7 +333,7 @@ public class StartSurfaceLayoutTest { ...@@ -334,7 +333,7 @@ public class StartSurfaceLayoutTest {
@CommandLineFlags.Add({BASE_PARAMS + "/soft-cleanup-delay/2000/cleanup-delay/10000"}) @CommandLineFlags.Add({BASE_PARAMS + "/soft-cleanup-delay/2000/cleanup-delay/10000"})
@MinAndroidSdkLevel(Build.VERSION_CODES.M) // TODO(crbug.com/997065#c8): remove SDK restriction. @MinAndroidSdkLevel(Build.VERSION_CODES.M) // TODO(crbug.com/997065#c8): remove SDK restriction.
public void testTabToGridFromLiveTabWarmAnimation() throws InterruptedException { public void testTabToGridFromLiveTabWarmAnimation() throws InterruptedException {
assertTrue(TabFeatureUtilities.isTabToGtsAnimationEnabled()); assertTrue(TabUiFeatureUtilities.isTabToGtsAnimationEnabled());
prepareTabs(2, 0, NTP_URL); prepareTabs(2, 0, NTP_URL);
testTabToGrid(mUrl); testTabToGrid(mUrl);
} }
...@@ -344,7 +343,7 @@ public class StartSurfaceLayoutTest { ...@@ -344,7 +343,7 @@ public class StartSurfaceLayoutTest {
@DisableFeatures(ChromeFeatureList.TAB_TO_GTS_ANIMATION + "<Study") @DisableFeatures(ChromeFeatureList.TAB_TO_GTS_ANIMATION + "<Study")
@CommandLineFlags.Add({BASE_PARAMS + "/cleanup-delay/10000"}) @CommandLineFlags.Add({BASE_PARAMS + "/cleanup-delay/10000"})
public void testTabToGridFromLiveTabSoft() throws InterruptedException { public void testTabToGridFromLiveTabSoft() throws InterruptedException {
assertFalse(TabFeatureUtilities.isTabToGtsAnimationEnabled()); assertFalse(TabUiFeatureUtilities.isTabToGtsAnimationEnabled());
assertEquals(0, mTabListDelegate.getSoftCleanupDelayForTesting()); assertEquals(0, mTabListDelegate.getSoftCleanupDelayForTesting());
assertEquals(10000, mTabListDelegate.getCleanupDelayForTesting()); assertEquals(10000, mTabListDelegate.getCleanupDelayForTesting());
...@@ -358,7 +357,7 @@ public class StartSurfaceLayoutTest { ...@@ -358,7 +357,7 @@ public class StartSurfaceLayoutTest {
@CommandLineFlags.Add({BASE_PARAMS + "/cleanup-delay/10000"}) @CommandLineFlags.Add({BASE_PARAMS + "/cleanup-delay/10000"})
@MinAndroidSdkLevel(Build.VERSION_CODES.M) // TODO(crbug.com/997065#c8): remove SDK restriction. @MinAndroidSdkLevel(Build.VERSION_CODES.M) // TODO(crbug.com/997065#c8): remove SDK restriction.
public void testTabToGridFromLiveTabSoftAnimation() throws InterruptedException { public void testTabToGridFromLiveTabSoftAnimation() throws InterruptedException {
assertTrue(TabFeatureUtilities.isTabToGtsAnimationEnabled()); assertTrue(TabUiFeatureUtilities.isTabToGtsAnimationEnabled());
prepareTabs(2, 0, NTP_URL); prepareTabs(2, 0, NTP_URL);
testTabToGrid(mUrl); testTabToGrid(mUrl);
} }
...@@ -415,7 +414,7 @@ public class StartSurfaceLayoutTest { ...@@ -415,7 +414,7 @@ public class StartSurfaceLayoutTest {
@MediumTest @MediumTest
@DisableFeatures(ChromeFeatureList.TAB_TO_GTS_ANIMATION + "<Study") @DisableFeatures(ChromeFeatureList.TAB_TO_GTS_ANIMATION + "<Study")
public void testGridToTabToCurrentLive() throws InterruptedException { public void testGridToTabToCurrentLive() throws InterruptedException {
assertFalse(TabFeatureUtilities.isTabToGtsAnimationEnabled()); assertFalse(TabUiFeatureUtilities.isTabToGtsAnimationEnabled());
prepareTabs(1, 0, mUrl); prepareTabs(1, 0, mUrl);
testGridToTab(false, false); testGridToTab(false, false);
} }
...@@ -438,7 +437,7 @@ public class StartSurfaceLayoutTest { ...@@ -438,7 +437,7 @@ public class StartSurfaceLayoutTest {
@MediumTest @MediumTest
@DisableFeatures(ChromeFeatureList.TAB_TO_GTS_ANIMATION + "<Study") @DisableFeatures(ChromeFeatureList.TAB_TO_GTS_ANIMATION + "<Study")
public void testGridToTabToCurrentLiveDetached() throws Exception { public void testGridToTabToCurrentLiveDetached() throws Exception {
assertFalse(TabFeatureUtilities.isTabToGtsAnimationEnabled()); assertFalse(TabUiFeatureUtilities.isTabToGtsAnimationEnabled());
// This works on emulators but not on real devices. See crbug.com/986047. // This works on emulators but not on real devices. See crbug.com/986047.
if (!isEmulator()) return; if (!isEmulator()) return;
...@@ -479,7 +478,7 @@ public class StartSurfaceLayoutTest { ...@@ -479,7 +478,7 @@ public class StartSurfaceLayoutTest {
@MinAndroidSdkLevel(Build.VERSION_CODES.LOLLIPOP) @MinAndroidSdkLevel(Build.VERSION_CODES.LOLLIPOP)
@DisabledTest(message = "crbug.com/993201 This test fails deterministically on Nexus 5X") @DisabledTest(message = "crbug.com/993201 This test fails deterministically on Nexus 5X")
public void testGridToTabToCurrentLiveWithAnimation() throws InterruptedException { public void testGridToTabToCurrentLiveWithAnimation() throws InterruptedException {
assertTrue(TabFeatureUtilities.isTabToGtsAnimationEnabled()); assertTrue(TabUiFeatureUtilities.isTabToGtsAnimationEnabled());
prepareTabs(1, 0, mUrl); prepareTabs(1, 0, mUrl);
testGridToTab(false, false); testGridToTab(false, false);
} }
...@@ -488,7 +487,7 @@ public class StartSurfaceLayoutTest { ...@@ -488,7 +487,7 @@ public class StartSurfaceLayoutTest {
@MediumTest @MediumTest
@DisableFeatures(ChromeFeatureList.TAB_TO_GTS_ANIMATION + "<Study") @DisableFeatures(ChromeFeatureList.TAB_TO_GTS_ANIMATION + "<Study")
public void testGridToTabToOtherLive() throws InterruptedException { public void testGridToTabToOtherLive() throws InterruptedException {
assertFalse(TabFeatureUtilities.isTabToGtsAnimationEnabled()); assertFalse(TabUiFeatureUtilities.isTabToGtsAnimationEnabled());
prepareTabs(2, 0, mUrl); prepareTabs(2, 0, mUrl);
testGridToTab(true, false); testGridToTab(true, false);
} }
...@@ -499,7 +498,7 @@ public class StartSurfaceLayoutTest { ...@@ -499,7 +498,7 @@ public class StartSurfaceLayoutTest {
@MinAndroidSdkLevel(Build.VERSION_CODES.LOLLIPOP) @MinAndroidSdkLevel(Build.VERSION_CODES.LOLLIPOP)
@DisabledTest(message = "crbug.com/993201 This test fails deterministically on Nexus 5X") @DisabledTest(message = "crbug.com/993201 This test fails deterministically on Nexus 5X")
public void testGridToTabToOtherLiveWithAnimation() throws InterruptedException { public void testGridToTabToOtherLiveWithAnimation() throws InterruptedException {
assertTrue(TabFeatureUtilities.isTabToGtsAnimationEnabled()); assertTrue(TabUiFeatureUtilities.isTabToGtsAnimationEnabled());
prepareTabs(2, 0, mUrl); prepareTabs(2, 0, mUrl);
testGridToTab(true, false); testGridToTab(true, false);
} }
...@@ -508,7 +507,7 @@ public class StartSurfaceLayoutTest { ...@@ -508,7 +507,7 @@ public class StartSurfaceLayoutTest {
@MediumTest @MediumTest
@DisableFeatures(ChromeFeatureList.TAB_TO_GTS_ANIMATION + "<Study") @DisableFeatures(ChromeFeatureList.TAB_TO_GTS_ANIMATION + "<Study")
public void testGridToTabToOtherFrozen() throws InterruptedException { public void testGridToTabToOtherFrozen() throws InterruptedException {
assertFalse(TabFeatureUtilities.isTabToGtsAnimationEnabled()); assertFalse(TabUiFeatureUtilities.isTabToGtsAnimationEnabled());
prepareTabs(2, 0, mUrl); prepareTabs(2, 0, mUrl);
testGridToTab(true, true); testGridToTab(true, true);
} }
......
...@@ -45,7 +45,6 @@ import org.chromium.chrome.browser.search_engines.TemplateUrlServiceFactory; ...@@ -45,7 +45,6 @@ import org.chromium.chrome.browser.search_engines.TemplateUrlServiceFactory;
import org.chromium.chrome.browser.tab.EmptyTabObserver; import org.chromium.chrome.browser.tab.EmptyTabObserver;
import org.chromium.chrome.browser.tab.Tab; import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.tab.TabCreationState; import org.chromium.chrome.browser.tab.TabCreationState;
import org.chromium.chrome.browser.tab.TabFeatureUtilities;
import org.chromium.chrome.browser.tab.TabImpl; import org.chromium.chrome.browser.tab.TabImpl;
import org.chromium.chrome.browser.tab.TabLaunchType; import org.chromium.chrome.browser.tab.TabLaunchType;
import org.chromium.chrome.browser.tab.TabObserver; import org.chromium.chrome.browser.tab.TabObserver;
...@@ -870,7 +869,7 @@ class TabListMediator { ...@@ -870,7 +869,7 @@ class TabListMediator {
* The selected border should re-appear in the final fading-in stage. * The selected border should re-appear in the final fading-in stage.
*/ */
void prepareOverview() { void prepareOverview() {
if (!TabFeatureUtilities.isTabToGtsAnimationEnabled() if (!TabUiFeatureUtilities.isTabToGtsAnimationEnabled()
|| !mTabModelSelector.getTabModelFilterProvider() || !mTabModelSelector.getTabModelFilterProvider()
.getCurrentTabModelFilter() .getCurrentTabModelFilter()
.isTabModelRestored()) { .isTabModelRestored()) {
...@@ -1017,7 +1016,7 @@ class TabListMediator { ...@@ -1017,7 +1016,7 @@ class TabListMediator {
&& (mModel.get(index).model.get(TabProperties.THUMBNAIL_FETCHER) == null && (mModel.get(index).model.get(TabProperties.THUMBNAIL_FETCHER) == null
|| forceUpdate || isUpdatingId)) { || forceUpdate || isUpdatingId)) {
ThumbnailFetcher callback = new ThumbnailFetcher(mThumbnailProvider, tab, forceUpdate, ThumbnailFetcher callback = new ThumbnailFetcher(mThumbnailProvider, tab, forceUpdate,
forceUpdate && !TabFeatureUtilities.isTabToGtsAnimationEnabled()); forceUpdate && !TabUiFeatureUtilities.isTabToGtsAnimationEnabled());
mModel.get(index).model.set(TabProperties.THUMBNAIL_FETCHER, callback); mModel.get(index).model.set(TabProperties.THUMBNAIL_FETCHER, callback);
} }
} }
...@@ -1249,7 +1248,7 @@ class TabListMediator { ...@@ -1249,7 +1248,7 @@ class TabListMediator {
if (mThumbnailProvider != null && mVisible) { if (mThumbnailProvider != null && mVisible) {
ThumbnailFetcher callback = new ThumbnailFetcher(mThumbnailProvider, tab, isSelected, ThumbnailFetcher callback = new ThumbnailFetcher(mThumbnailProvider, tab, isSelected,
isSelected && !TabFeatureUtilities.isTabToGtsAnimationEnabled()); isSelected && !TabUiFeatureUtilities.isTabToGtsAnimationEnabled());
tabInfo.set(TabProperties.THUMBNAIL_FETCHER, callback); tabInfo.set(TabProperties.THUMBNAIL_FETCHER, callback);
} }
tab.addObserver(mTabObserver); tab.addObserver(mTabObserver);
......
...@@ -36,7 +36,6 @@ import androidx.recyclerview.widget.RecyclerView; ...@@ -36,7 +36,6 @@ import androidx.recyclerview.widget.RecyclerView;
import org.chromium.base.Log; import org.chromium.base.Log;
import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.chrome.browser.flags.ChromeFeatureList;
import org.chromium.chrome.browser.tab.TabFeatureUtilities;
import org.chromium.chrome.browser.tabmodel.TabModel; import org.chromium.chrome.browser.tabmodel.TabModel;
import org.chromium.chrome.tab_ui.R; import org.chromium.chrome.tab_ui.R;
import org.chromium.ui.interpolators.BakedBezierInterpolator; import org.chromium.ui.interpolators.BakedBezierInterpolator;
...@@ -160,7 +159,7 @@ class TabListRecyclerView ...@@ -160,7 +159,7 @@ class TabListRecyclerView
assert mFadeOutAnimator == null; assert mFadeOutAnimator == null;
mListener.startedShowing(animate); mListener.startedShowing(animate);
long duration = TabFeatureUtilities.isTabToGtsAnimationEnabled() long duration = TabUiFeatureUtilities.isTabToGtsAnimationEnabled()
? FINAL_FADE_IN_DURATION_MS ? FINAL_FADE_IN_DURATION_MS
: BASE_ANIMATION_DURATION_MS; : BASE_ANIMATION_DURATION_MS;
...@@ -183,7 +182,7 @@ class TabListRecyclerView ...@@ -183,7 +182,7 @@ class TabListRecyclerView
unregisterDynamicView(); unregisterDynamicView();
} }
// TODO(crbug.com/972157): remove this band-aid after we know why GTS is invisible. // TODO(crbug.com/972157): remove this band-aid after we know why GTS is invisible.
if (TabFeatureUtilities.isTabToGtsAnimationEnabled()) { if (TabUiFeatureUtilities.isTabToGtsAnimationEnabled()) {
requestLayout(); requestLayout();
} }
} }
......
...@@ -36,7 +36,6 @@ import org.chromium.chrome.browser.fullscreen.FullscreenManager; ...@@ -36,7 +36,6 @@ import org.chromium.chrome.browser.fullscreen.FullscreenManager;
import org.chromium.chrome.browser.init.FirstDrawDetector; import org.chromium.chrome.browser.init.FirstDrawDetector;
import org.chromium.chrome.browser.tab.Tab; import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.tab.TabCreationState; import org.chromium.chrome.browser.tab.TabCreationState;
import org.chromium.chrome.browser.tab.TabFeatureUtilities;
import org.chromium.chrome.browser.tab.TabSelectionType; import org.chromium.chrome.browser.tab.TabSelectionType;
import org.chromium.chrome.browser.tabmodel.EmptyTabModelObserver; import org.chromium.chrome.browser.tabmodel.EmptyTabModelObserver;
import org.chromium.chrome.browser.tabmodel.EmptyTabModelSelectorObserver; import org.chromium.chrome.browser.tabmodel.EmptyTabModelSelectorObserver;
...@@ -509,7 +508,7 @@ class TabSwitcherMediator implements TabSwitcher.Controller, TabListRecyclerView ...@@ -509,7 +508,7 @@ class TabSwitcherMediator implements TabSwitcher.Controller, TabListRecyclerView
TabModelFilter currentTabModelFilter = TabModelFilter currentTabModelFilter =
mTabModelSelector.getTabModelFilterProvider().getCurrentTabModelFilter(); mTabModelSelector.getTabModelFilterProvider().getCurrentTabModelFilter();
if (currentTabModelFilter != null && currentTabModelFilter.isTabModelRestored()) { if (currentTabModelFilter != null && currentTabModelFilter.isTabModelRestored()) {
if (TabFeatureUtilities.isTabToGtsAnimationEnabled()) { if (TabUiFeatureUtilities.isTabToGtsAnimationEnabled()) {
quick = mResetHandler.resetWithTabList( quick = mResetHandler.resetWithTabList(
currentTabModelFilter, false, mShowTabsInMruOrder); currentTabModelFilter, false, mShowTabsInMruOrder);
} }
...@@ -535,7 +534,7 @@ class TabSwitcherMediator implements TabSwitcher.Controller, TabListRecyclerView ...@@ -535,7 +534,7 @@ class TabSwitcherMediator implements TabSwitcher.Controller, TabListRecyclerView
.isTabModelRestored()) { .isTabModelRestored()) {
mResetHandler.resetWithTabList( mResetHandler.resetWithTabList(
mTabModelSelector.getTabModelFilterProvider().getCurrentTabModelFilter(), mTabModelSelector.getTabModelFilterProvider().getCurrentTabModelFilter(),
TabFeatureUtilities.isTabToGtsAnimationEnabled(), mShowTabsInMruOrder); TabUiFeatureUtilities.isTabToGtsAnimationEnabled(), mShowTabsInMruOrder);
} }
if (!animate) mContainerViewModel.set(ANIMATE_VISIBILITY_CHANGES, false); if (!animate) mContainerViewModel.set(ANIMATE_VISIBILITY_CHANGES, false);
setVisibility(true); setVisibility(true);
......
...@@ -4,16 +4,21 @@ ...@@ -4,16 +4,21 @@
package org.chromium.chrome.browser.tasks.tab_management; package org.chromium.chrome.browser.tasks.tab_management;
import android.os.Build;
import android.text.TextUtils; import android.text.TextUtils;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting;
import org.chromium.base.ContextUtils; import org.chromium.base.ContextUtils;
import org.chromium.base.Log;
import org.chromium.base.SysUtils;
import org.chromium.chrome.browser.device.DeviceClassManager; import org.chromium.chrome.browser.device.DeviceClassManager;
import org.chromium.chrome.browser.flags.BooleanCachedFieldTrialParameter; import org.chromium.chrome.browser.flags.BooleanCachedFieldTrialParameter;
import org.chromium.chrome.browser.flags.CachedFeatureFlags; import org.chromium.chrome.browser.flags.CachedFeatureFlags;
import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.chrome.browser.flags.ChromeFeatureList;
import org.chromium.chrome.browser.flags.DoubleCachedFieldTrialParameter; import org.chromium.chrome.browser.flags.DoubleCachedFieldTrialParameter;
import org.chromium.chrome.browser.flags.IntCachedFieldTrialParameter;
import org.chromium.chrome.browser.flags.StringCachedFieldTrialParameter; import org.chromium.chrome.browser.flags.StringCachedFieldTrialParameter;
import org.chromium.chrome.features.start_surface.StartSurfaceConfiguration; import org.chromium.chrome.features.start_surface.StartSurfaceConfiguration;
import org.chromium.ui.base.DeviceFormFactor; import org.chromium.ui.base.DeviceFormFactor;
...@@ -26,6 +31,8 @@ import java.util.List; ...@@ -26,6 +31,8 @@ import java.util.List;
* A class to handle the state of flags for tab_management. * A class to handle the state of flags for tab_management.
*/ */
public class TabUiFeatureUtilities { public class TabUiFeatureUtilities {
private static final String TAG = "TabFeatureUtilities";
// Field trial parameters: // Field trial parameters:
public static final String SKIP_SLOW_ZOOMING_PARAM = "skip-slow-zooming"; public static final String SKIP_SLOW_ZOOMING_PARAM = "skip-slow-zooming";
public static final BooleanCachedFieldTrialParameter SKIP_SLOW_ZOOMING = public static final BooleanCachedFieldTrialParameter SKIP_SLOW_ZOOMING =
...@@ -53,7 +60,19 @@ public class TabUiFeatureUtilities { ...@@ -53,7 +60,19 @@ public class TabUiFeatureUtilities {
new BooleanCachedFieldTrialParameter( new BooleanCachedFieldTrialParameter(
ChromeFeatureList.TAB_GRID_LAYOUT_ANDROID, SEARCH_CHIP_ADAPTIVE_PARAM, false); ChromeFeatureList.TAB_GRID_LAYOUT_ANDROID, SEARCH_CHIP_ADAPTIVE_PARAM, false);
// Field trial parameter for the minimum Android SDK version to enable zooming animation.
public static final String MIN_SDK_PARAM = "zooming-min-sdk-version";
public static final IntCachedFieldTrialParameter ZOOMING_MIN_SDK =
new IntCachedFieldTrialParameter(
ChromeFeatureList.TAB_TO_GTS_ANIMATION, MIN_SDK_PARAM, Build.VERSION_CODES.O);
// Field trial parameter for the minimum physical memory size to enable zooming animation.
public static final String MIN_MEMORY_MB_PARAM = "zooming-min-memory-mb";
public static final IntCachedFieldTrialParameter ZOOMING_MIN_MEMORY =
new IntCachedFieldTrialParameter(
ChromeFeatureList.TAB_TO_GTS_ANIMATION, MIN_MEMORY_MB_PARAM, 2048);
private static Boolean sTabManagementModuleSupportedForTesting; private static Boolean sTabManagementModuleSupportedForTesting;
private static Boolean sIsTabToGtsAnimationEnabled;
/** /**
* Set whether the tab management module is supported for testing. * Set whether the tab management module is supported for testing.
...@@ -138,4 +157,28 @@ public class TabUiFeatureUtilities { ...@@ -138,4 +157,28 @@ public class TabUiFeatureUtilities {
public static boolean isTabGridLayoutAndroidNewTabTileEnabled() { public static boolean isTabGridLayoutAndroidNewTabTileEnabled() {
return TextUtils.equals(TAB_GRID_LAYOUT_ANDROID_NEW_TAB_TILE.getValue(), "NewTabTile"); return TextUtils.equals(TAB_GRID_LAYOUT_ANDROID_NEW_TAB_TILE.getValue(), "NewTabTile");
} }
/**
* Toggles whether the Tab-to-GTS animation is enabled for testing. Should be reset back to
* null after the test has finished.
*/
@VisibleForTesting
public static void setIsTabToGtsAnimationEnabledForTesting(@Nullable Boolean enabled) {
sIsTabToGtsAnimationEnabled = enabled;
}
/**
* @return Whether the Tab-to-Grid (and Grid-to-Tab) transition animation is enabled.
*/
public static boolean isTabToGtsAnimationEnabled() {
if (sIsTabToGtsAnimationEnabled != null) {
Log.d(TAG, "IsTabToGtsAnimationEnabled forced to " + sIsTabToGtsAnimationEnabled);
return sIsTabToGtsAnimationEnabled;
}
Log.d(TAG, "GTS.MinSdkVersion = " + ZOOMING_MIN_SDK.getValue());
Log.d(TAG, "GTS.MinMemoryMB = " + ZOOMING_MIN_MEMORY.getValue());
return CachedFeatureFlags.isEnabled(ChromeFeatureList.TAB_TO_GTS_ANIMATION)
&& Build.VERSION.SDK_INT >= ZOOMING_MIN_SDK.getValue()
&& SysUtils.amountOfPhysicalMemoryKB() / 1024 >= ZOOMING_MIN_MEMORY.getValue();
}
} }
...@@ -28,7 +28,6 @@ import org.junit.rules.TestRule; ...@@ -28,7 +28,6 @@ import org.junit.rules.TestRule;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.MockitoAnnotations; import org.mockito.MockitoAnnotations;
import org.chromium.chrome.browser.tab.TabFeatureUtilities;
import org.chromium.chrome.tab_ui.R; import org.chromium.chrome.tab_ui.R;
import org.chromium.chrome.test.util.browser.Features; import org.chromium.chrome.test.util.browser.Features;
import org.chromium.content_public.browser.test.util.CriteriaHelper; import org.chromium.content_public.browser.test.util.CriteriaHelper;
...@@ -99,7 +98,7 @@ public class MessageCardProviderTest extends DummyUiActivityTestCase { ...@@ -99,7 +98,7 @@ public class MessageCardProviderTest extends DummyUiActivityTestCase {
public void setUpTest() throws Exception { public void setUpTest() throws Exception {
super.setUpTest(); super.setUpTest();
MockitoAnnotations.initMocks(this); MockitoAnnotations.initMocks(this);
TabFeatureUtilities.setIsTabToGtsAnimationEnabledForTesting(false); TabUiFeatureUtilities.setIsTabToGtsAnimationEnabledForTesting(false);
// TODO(meiliang): Replace with TabSwitcher instead when ready to integrate with // TODO(meiliang): Replace with TabSwitcher instead when ready to integrate with
// TabSwitcher. // TabSwitcher.
ViewGroup view = new FrameLayout(getActivity()); ViewGroup view = new FrameLayout(getActivity());
...@@ -140,7 +139,7 @@ public class MessageCardProviderTest extends DummyUiActivityTestCase { ...@@ -140,7 +139,7 @@ public class MessageCardProviderTest extends DummyUiActivityTestCase {
@After @After
public void tearDown() { public void tearDown() {
TabFeatureUtilities.setIsTabToGtsAnimationEnabledForTesting(null); TabUiFeatureUtilities.setIsTabToGtsAnimationEnabledForTesting(null);
} }
@Test @Test
......
...@@ -11,7 +11,6 @@ import org.chromium.chrome.browser.flags.CachedFieldTrialParameter; ...@@ -11,7 +11,6 @@ import org.chromium.chrome.browser.flags.CachedFieldTrialParameter;
import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.chrome.browser.flags.ChromeFeatureList;
import org.chromium.chrome.browser.preferences.ChromePreferenceKeys; import org.chromium.chrome.browser.preferences.ChromePreferenceKeys;
import org.chromium.chrome.browser.preferences.SharedPreferencesManager; import org.chromium.chrome.browser.preferences.SharedPreferencesManager;
import org.chromium.chrome.browser.tab.TabFeatureUtilities;
import org.chromium.chrome.browser.tasks.tab_management.TabUiFeatureUtilities; import org.chromium.chrome.browser.tasks.tab_management.TabUiFeatureUtilities;
import org.chromium.chrome.browser.toolbar.bottom.BottomToolbarVariationManager; import org.chromium.chrome.browser.toolbar.bottom.BottomToolbarVariationManager;
import org.chromium.chrome.features.start_surface.StartSurfaceConfiguration; import org.chromium.chrome.features.start_surface.StartSurfaceConfiguration;
...@@ -74,8 +73,8 @@ public class ChromeCachedFlags { ...@@ -74,8 +73,8 @@ public class ChromeCachedFlags {
StartSurfaceConfiguration.START_SURFACE_HIDE_INCOGNITO_SWITCH, StartSurfaceConfiguration.START_SURFACE_HIDE_INCOGNITO_SWITCH,
StartSurfaceConfiguration.START_SURFACE_VARIATION, StartSurfaceConfiguration.START_SURFACE_VARIATION,
TabContentManager.ALLOW_TO_REFETCH_TAB_THUMBNAIL_VARIATION, TabContentManager.ALLOW_TO_REFETCH_TAB_THUMBNAIL_VARIATION,
TabFeatureUtilities.ZOOMING_MIN_MEMORY, TabUiFeatureUtilities.ZOOMING_MIN_MEMORY,
TabFeatureUtilities.ZOOMING_MIN_SDK, TabUiFeatureUtilities.ZOOMING_MIN_SDK,
TabUiFeatureUtilities.SKIP_SLOW_ZOOMING, TabUiFeatureUtilities.SKIP_SLOW_ZOOMING,
TabUiFeatureUtilities.TAB_GRID_LAYOUT_ANDROID_NEW_TAB_TILE, TabUiFeatureUtilities.TAB_GRID_LAYOUT_ANDROID_NEW_TAB_TILE,
TabUiFeatureUtilities.THUMBNAIL_ASPECT_RATIO); TabUiFeatureUtilities.THUMBNAIL_ASPECT_RATIO);
......
// Copyright 2019 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package org.chromium.chrome.browser.tab;
import android.os.Build;
import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting;
import org.chromium.base.Log;
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.IntCachedFieldTrialParameter;
/**
* Contains logic that decides whether to enable features related to tabs.
*/
public class TabFeatureUtilities {
private static final String TAG = "TabFeatureUtilities";
private static final int DEFAULT_MIN_SDK = Build.VERSION_CODES.O;
private static final int DEFAULT_MIN_MEMORY_MB = 2048;
// Field trial parameter for the minimum Android SDK version to enable zooming animation.
public static final String MIN_SDK_PARAM = "zooming-min-sdk-version";
public static final IntCachedFieldTrialParameter ZOOMING_MIN_SDK =
new IntCachedFieldTrialParameter(
ChromeFeatureList.TAB_TO_GTS_ANIMATION, MIN_SDK_PARAM, DEFAULT_MIN_SDK);
// Field trial parameter for the minimum physical memory size to enable zooming animation.
public static final String MIN_MEMORY_MB_PARAM = "zooming-min-memory-mb";
public static final IntCachedFieldTrialParameter ZOOMING_MIN_MEMORY =
new IntCachedFieldTrialParameter(ChromeFeatureList.TAB_TO_GTS_ANIMATION,
MIN_MEMORY_MB_PARAM, DEFAULT_MIN_MEMORY_MB);
private static Boolean sIsTabToGtsAnimationEnabled;
/**
* Toggles whether the Tab-to-GTS animation is enabled for testing. Should be reset back to
* null after the test has finished.
*/
@VisibleForTesting
public static void setIsTabToGtsAnimationEnabledForTesting(@Nullable Boolean enabled) {
sIsTabToGtsAnimationEnabled = enabled;
}
/**
* @return Whether the Tab-to-Grid (and Grid-to-Tab) transition animation is enabled.
*/
public static boolean isTabToGtsAnimationEnabled() {
if (sIsTabToGtsAnimationEnabled != null) {
Log.d(TAG, "IsTabToGtsAnimationEnabled forced to " + sIsTabToGtsAnimationEnabled);
return sIsTabToGtsAnimationEnabled;
}
Log.d(TAG, "GTS.MinSdkVersion = " + GridTabSwitcherUtil.getMinSdkVersion());
Log.d(TAG, "GTS.MinMemoryMB = " + GridTabSwitcherUtil.getMinMemoryMB());
return CachedFeatureFlags.isEnabled(ChromeFeatureList.TAB_TO_GTS_ANIMATION)
&& Build.VERSION.SDK_INT >= GridTabSwitcherUtil.getMinSdkVersion()
&& SysUtils.amountOfPhysicalMemoryKB() / 1024
>= GridTabSwitcherUtil.getMinMemoryMB();
}
private static class GridTabSwitcherUtil {
private static int getMinSdkVersion() {
return TabFeatureUtilities.ZOOMING_MIN_SDK.getValue();
}
private static int getMinMemoryMB() {
return TabFeatureUtilities.ZOOMING_MIN_MEMORY.getValue();
}
}
}
...@@ -21,7 +21,7 @@ import androidx.appcompat.content.res.AppCompatResources; ...@@ -21,7 +21,7 @@ import androidx.appcompat.content.res.AppCompatResources;
import org.chromium.base.ApiCompatibilityUtils; import org.chromium.base.ApiCompatibilityUtils;
import org.chromium.chrome.R; import org.chromium.chrome.R;
import org.chromium.chrome.browser.device.DeviceClassManager; import org.chromium.chrome.browser.device.DeviceClassManager;
import org.chromium.chrome.browser.tab.TabFeatureUtilities; import org.chromium.chrome.browser.tasks.tab_management.TabUiFeatureUtilities;
import org.chromium.chrome.browser.toolbar.IncognitoStateProvider; import org.chromium.chrome.browser.toolbar.IncognitoStateProvider;
import org.chromium.chrome.browser.toolbar.MenuButton; import org.chromium.chrome.browser.toolbar.MenuButton;
import org.chromium.chrome.browser.toolbar.NewTabButton; import org.chromium.chrome.browser.toolbar.NewTabButton;
...@@ -262,7 +262,7 @@ class StartSurfaceToolbarView extends RelativeLayout { ...@@ -262,7 +262,7 @@ class StartSurfaceToolbarView extends RelativeLayout {
setVisibility(View.VISIBLE); setVisibility(View.VISIBLE);
boolean showZoomingAnimation = boolean showZoomingAnimation =
animateToTab && TabFeatureUtilities.isTabToGtsAnimationEnabled(); animateToTab && TabUiFeatureUtilities.isTabToGtsAnimationEnabled();
final long duration = showZoomingAnimation final long duration = showZoomingAnimation
? TopToolbarCoordinator.TAB_SWITCHER_MODE_GTS_ANIMATION_DURATION_MS ? TopToolbarCoordinator.TAB_SWITCHER_MODE_GTS_ANIMATION_DURATION_MS
: TopToolbarCoordinator.TAB_SWITCHER_MODE_NORMAL_ANIMATION_DURATION_MS; : TopToolbarCoordinator.TAB_SWITCHER_MODE_NORMAL_ANIMATION_DURATION_MS;
......
...@@ -21,7 +21,6 @@ import org.chromium.chrome.R; ...@@ -21,7 +21,6 @@ import org.chromium.chrome.R;
import org.chromium.chrome.browser.device.DeviceClassManager; import org.chromium.chrome.browser.device.DeviceClassManager;
import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.chrome.browser.flags.ChromeFeatureList;
import org.chromium.chrome.browser.incognito.IncognitoUtils; import org.chromium.chrome.browser.incognito.IncognitoUtils;
import org.chromium.chrome.browser.tab.TabFeatureUtilities;
import org.chromium.chrome.browser.tabmodel.TabModelSelector; import org.chromium.chrome.browser.tabmodel.TabModelSelector;
import org.chromium.chrome.browser.tasks.tab_management.TabUiFeatureUtilities; import org.chromium.chrome.browser.tasks.tab_management.TabUiFeatureUtilities;
import org.chromium.chrome.browser.toolbar.IncognitoStateProvider; import org.chromium.chrome.browser.toolbar.IncognitoStateProvider;
...@@ -138,7 +137,7 @@ public class TabSwitcherModeTTPhone extends OptimizedFrameLayout ...@@ -138,7 +137,7 @@ public class TabSwitcherModeTTPhone extends OptimizedFrameLayout
setAlpha(inTabSwitcherMode ? 0.0f : 1.0f); setAlpha(inTabSwitcherMode ? 0.0f : 1.0f);
boolean showZoomingAnimation = TabUiFeatureUtilities.isGridTabSwitcherEnabled() boolean showZoomingAnimation = TabUiFeatureUtilities.isGridTabSwitcherEnabled()
&& TabFeatureUtilities.isTabToGtsAnimationEnabled(); && TabUiFeatureUtilities.isTabToGtsAnimationEnabled();
long duration = showZoomingAnimation long duration = showZoomingAnimation
? TopToolbarCoordinator.TAB_SWITCHER_MODE_GTS_ANIMATION_DURATION_MS ? TopToolbarCoordinator.TAB_SWITCHER_MODE_GTS_ANIMATION_DURATION_MS
: TopToolbarCoordinator.TAB_SWITCHER_MODE_NORMAL_ANIMATION_DURATION_MS; : TopToolbarCoordinator.TAB_SWITCHER_MODE_NORMAL_ANIMATION_DURATION_MS;
......
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