[go: nahoru, domu]

[Start Surface] Remove Carousel Tab Switcher

Carousel tab switcher is no longer used in any features. Remove it.

Bug: 1507103
Change-Id: I4adcf2e1f5d3b7a02fb825e5b92cdb4894c5c2b5
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5074811
Commit-Queue: Calder Kitagawa <ckitagawa@chromium.org>
Code-Coverage: findit-for-me@appspot.gserviceaccount.com <findit-for-me@appspot.gserviceaccount.com>
Reviewed-by: Xi Han <hanxi@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1233319}
diff --git a/chrome/android/features/start_surface/java/res/layout/tasks_view_layout.xml b/chrome/android/features/start_surface/java/res/layout/tasks_view_layout.xml
index ad679bf..28ce579 100644
--- a/chrome/android/features/start_surface/java/res/layout/tasks_view_layout.xml
+++ b/chrome/android/features/start_surface/java/res/layout/tasks_view_layout.xml
@@ -53,38 +53,6 @@
             <include layout="@layout/query_tiles_layout" />
         </FrameLayout>
         <include layout="@layout/mv_tiles_container" />
-        <LinearLayout
-            android:id="@+id/tab_switcher_title"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:paddingStart="16dp"
-            android:paddingEnd="4dp"
-            android:paddingTop="10dp"
-            android:paddingBottom="10dp"
-            android:visibility="gone"
-            android:orientation="horizontal"
-            app:layout_scrollFlags="scroll">
-            <TextView
-                android:id="@+id/tab_switcher_title_description"
-                android:layout_width="0dp"
-                android:layout_height="wrap_content"
-                android:layout_weight="1.0"
-                android:layout_gravity="center_vertical"
-                android:gravity="center_vertical|start"
-                android:singleLine="true"
-                android:textAlignment="viewStart"
-                android:text="@string/tab_switcher_carousel_title" />
-            <TextView
-                android:id="@+id/more_tabs"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_marginTop="-16dp"
-                android:layout_marginBottom="-16dp"
-                android:paddingTop="16dp"
-                android:paddingBottom="16dp"
-                android:paddingEnd="16dp"
-                android:text="@string/tab_switcher_carousel_view_all"/>
-        </LinearLayout>
         <!-- TODO(crbug.com/982018): Make view stub to inflate only when needed. -->
         <include layout="@layout/tab_switcher_module_container" />
     </com.google.android.material.appbar.AppBarLayout>
diff --git a/chrome/android/features/start_surface/java/res/layout/tasks_view_layout_polish.xml b/chrome/android/features/start_surface/java/res/layout/tasks_view_layout_polish.xml
index c8b26f6..a75ee2782 100644
--- a/chrome/android/features/start_surface/java/res/layout/tasks_view_layout_polish.xml
+++ b/chrome/android/features/start_surface/java/res/layout/tasks_view_layout_polish.xml
@@ -54,38 +54,6 @@
       <include layout="@layout/query_tiles_layout" />
     </FrameLayout>
     <include layout="@layout/mv_tiles_container_polish" />
-    <LinearLayout
-        android:id="@+id/tab_switcher_title"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:paddingStart="16dp"
-        android:paddingEnd="4dp"
-        android:paddingTop="10dp"
-        android:paddingBottom="10dp"
-        android:visibility="gone"
-        android:orientation="horizontal"
-        app:layout_scrollFlags="scroll">
-      <TextView
-          android:id="@+id/tab_switcher_title_description"
-          android:layout_width="0dp"
-          android:layout_height="wrap_content"
-          android:layout_weight="1.0"
-          android:layout_gravity="center_vertical"
-          android:gravity="center_vertical|start"
-          android:singleLine="true"
-          android:textAlignment="viewStart"
-          android:text="@string/tab_switcher_carousel_title" />
-      <TextView
-          android:id="@+id/more_tabs"
-          android:layout_width="wrap_content"
-          android:layout_height="wrap_content"
-          android:layout_marginTop="-16dp"
-          android:layout_marginBottom="-16dp"
-          android:paddingTop="16dp"
-          android:paddingBottom="16dp"
-          android:paddingEnd="16dp"
-          android:text="@string/tab_switcher_carousel_view_all"/>
-    </LinearLayout>
     <!-- TODO(crbug.com/982018): Make view stub to inflate only when needed. -->
     <include layout="@layout/tab_switcher_module_container" />
   </com.google.android.material.appbar.AppBarLayout>
@@ -106,4 +74,4 @@
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       app:layout_behavior="@string/appbar_scrolling_view_behavior" />
-</org.chromium.chrome.features.tasks.TasksView>
\ No newline at end of file
+</org.chromium.chrome.features.tasks.TasksView>
diff --git a/chrome/android/features/start_surface/java/res/values/dimens.xml b/chrome/android/features/start_surface/java/res/values/dimens.xml
index e4d4702..813602b 100644
--- a/chrome/android/features/start_surface/java/res/values/dimens.xml
+++ b/chrome/android/features/start_surface/java/res/values/dimens.xml
@@ -8,7 +8,6 @@
     <dimen name="tasks_surface_body_top_margin">24dp</dimen>
     <dimen name="mv_tiles_container_top_margin">17dp</dimen>
     <dimen name="single_tab_view_top_margin_for_feed_improvement">32dp</dimen>
-    <dimen name="tab_switcher_title_top_margin">16dp</dimen>
 
     <!-- Single Tab card on tablets -->
     <dimen name="single_tab_card_lateral_margin_landscape_tablet">62dp</dimen>
diff --git a/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/start_surface/StartSurface.java b/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/start_surface/StartSurface.java
index 11c565ba..384a9f5 100644
--- a/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/start_surface/StartSurface.java
+++ b/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/start_surface/StartSurface.java
@@ -236,11 +236,11 @@
 
     /**
      * Returns the TabListDelegate implementation that can be used to access the Tab list of the
-     * carousel/single tab switcher when start surface is enabled; when start surface is disabled,
-     * null should be returned.
+     * single tab switcher when start surface is enabled; when start surface is disabled, null
+     * should be returned.
      */
     // TODO(crbug.com/1315676): Remove this API after the refactoring is done.
-    TabSwitcher.TabListDelegate getCarouselOrSingleTabListDelegate();
+    TabSwitcher.TabListDelegate getSingleTabListDelegate();
 
     /**
      * @return {@link Supplier} that provides dialog visibility.
diff --git a/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/start_surface/StartSurfaceConfiguration.java b/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/start_surface/StartSurfaceConfiguration.java
index 7703aa71..ebe3298b 100644
--- a/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/start_surface/StartSurfaceConfiguration.java
+++ b/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/start_surface/StartSurfaceConfiguration.java
@@ -30,9 +30,6 @@
                             "hide_switch_when_no_incognito_tabs",
                             true);
 
-    public static final BooleanCachedFieldTrialParameter START_SURFACE_LAST_ACTIVE_TAB_ONLY =
-            new BooleanCachedFieldTrialParameter(
-                    ChromeFeatureList.START_SURFACE_ANDROID, "show_last_active_tab_only", true);
     public static final BooleanCachedFieldTrialParameter START_SURFACE_OPEN_NTP_INSTEAD_OF_START =
             new BooleanCachedFieldTrialParameter(
                     ChromeFeatureList.START_SURFACE_ANDROID, "open_ntp_instead_of_start", true);
diff --git a/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/start_surface/StartSurfaceCoordinator.java b/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/start_surface/StartSurfaceCoordinator.java
index 2f44386..9a5890c 100644
--- a/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/start_surface/StartSurfaceCoordinator.java
+++ b/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/start_surface/StartSurfaceCoordinator.java
@@ -466,7 +466,7 @@
     @Override
     public void show(boolean animate) {
         if (!mUseMagicSpace) {
-            getCarouselOrSingleTabListDelegate().prepareTabSwitcherView();
+            getSingleTabListDelegate().prepareTabSwitcherView();
         }
         mStartSurfaceMediator.show(animate);
     }
@@ -731,7 +731,7 @@
     }
 
     @Override
-    public TabSwitcher.TabListDelegate getCarouselOrSingleTabListDelegate() {
+    public TabSwitcher.TabListDelegate getSingleTabListDelegate() {
         if (mIsStartSurfaceEnabled) {
             if (mIsStartSurfaceRefactorEnabled) {
                 return mTabSwitcherModule.getTabListDelegate();
@@ -920,16 +920,12 @@
 
         assert mIsStartSurfaceEnabled;
 
-        int tabSwitcherType =
-                StartSurfaceConfiguration.START_SURFACE_LAST_ACTIVE_TAB_ONLY.getValue()
-                        ? TabSwitcherType.SINGLE
-                        : TabSwitcherType.CAROUSEL;
         mTasksSurface =
                 createTasksSurface(
                         mActivity,
                         mScrimCoordinator,
                         mPropertyModel,
-                        tabSwitcherType,
+                        TabSwitcherType.SINGLE,
                         mParentTabSupplier,
                         true,
                         !excludeQueryTiles,
@@ -968,10 +964,7 @@
 
         int tabSwitcherType = TabSwitcherType.NONE;
         if (!mUseMagicSpace) {
-            tabSwitcherType =
-                    StartSurfaceConfiguration.START_SURFACE_LAST_ACTIVE_TAB_ONLY.getValue()
-                            ? TabSwitcherType.SINGLE
-                            : TabSwitcherType.CAROUSEL;
+            tabSwitcherType = TabSwitcherType.SINGLE;
         }
 
         if (!mIsSurfacePolishEnabled) {
@@ -990,31 +983,13 @@
                 mActivityLifecycleDispatcher,
                 mParentTabSupplier.hasValue() && mParentTabSupplier.get().isIncognito(),
                 mWindowAndroid);
-        if (tabSwitcherType == TabSwitcherType.CAROUSEL) {
-            mTabSwitcherModule =
-                    TabManagementDelegateProvider.getDelegate()
-                            .createCarouselTabSwitcher(
-                                    mActivity,
-                                    mActivityLifecycleDispatcher,
-                                    mTabModelSelector,
-                                    mTabContentManager,
-                                    mBrowserControlsManager,
-                                    mTabCreatorManager,
-                                    mMenuOrKeyboardActionController,
-                                    mView.getCarouselTabSwitcherContainer(),
-                                    mMultiWindowModeStateDispatcher,
-                                    mScrimCoordinator,
-                                    mView,
-                                    mDynamicResourceLoaderSupplier,
-                                    mSnackbarManager,
-                                    mModalDialogManager);
-        } else if (tabSwitcherType == TabSwitcherType.SINGLE) {
+        if (tabSwitcherType == TabSwitcherType.SINGLE) {
             // We always pass the parameter isTablet to be false here since StartSurfaceCoordinator
             // is only created on phones.
             mTabSwitcherModule =
                     new SingleTabSwitcherCoordinator(
                             mActivity,
-                            mView.getCarouselTabSwitcherContainer(),
+                            mView.getCardTabSwitcherContainer(),
                             null,
                             mTabModelSelector,
                             /* isShownOnNtp= */ false,
diff --git a/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/start_surface/StartSurfaceMediator.java b/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/start_surface/StartSurfaceMediator.java
index 4683ef3..36c3a346 100644
--- a/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/start_surface/StartSurfaceMediator.java
+++ b/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/start_surface/StartSurfaceMediator.java
@@ -20,18 +20,15 @@
 import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.IS_INCOGNITO_DESCRIPTION_VISIBLE;
 import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.IS_LENS_BUTTON_VISIBLE;
 import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.IS_SURFACE_BODY_VISIBLE;
-import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.IS_TAB_CAROUSEL_TITLE_VISIBLE;
-import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.IS_TAB_CAROUSEL_VISIBLE;
+import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.IS_TAB_CARD_VISIBLE;
 import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.IS_VOICE_RECOGNITION_BUTTON_VISIBLE;
 import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.LENS_BUTTON_CLICK_LISTENER;
-import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.MORE_TABS_CLICK_LISTENER;
 import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.MV_TILES_CONTAINER_LEFT_RIGHT_MARGIN;
 import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.MV_TILES_CONTAINER_TOP_MARGIN;
 import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.MV_TILES_VISIBLE;
 import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.QUERY_TILES_VISIBLE;
 import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.RESET_TASK_SURFACE_HEADER_SCROLL_POSITION;
 import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.SINGLE_TAB_TOP_MARGIN;
-import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.TAB_SWITCHER_TITLE_TOP_MARGIN;
 import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.TASKS_SURFACE_BODY_TOP_MARGIN;
 import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.TOP_TOOLBAR_PLACEHOLDER_HEIGHT;
 import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.VOICE_SEARCH_BUTTON_CLICK_LISTENER;
@@ -113,7 +110,6 @@
 /** The mediator implements the logic to interact with the surfaces and caller. */
 class StartSurfaceMediator
         implements TabSwitcher.TabSwitcherViewObserver,
-                View.OnClickListener,
                 StartSurface.OnTabSelectingListener,
                 BackPressHandler,
                 LogoCoordinator.VisibilityObserver,
@@ -302,10 +298,7 @@
             assert mIsStartSurfaceEnabled;
 
             if (mTabSwitcherModule != null) {
-                boolean isTabCarousel =
-                        mController.getTabSwitcherType() == TabSwitcherType.CAROUSEL;
-                mPropertyModel.set(IS_TAB_CAROUSEL_VISIBLE, isTabCarousel);
-                mPropertyModel.set(IS_TAB_CAROUSEL_TITLE_VISIBLE, isTabCarousel);
+                mPropertyModel.set(IS_TAB_CARD_VISIBLE, false);
             }
 
             if (mTabSwitcherModule != null || mUseMagicSpace) {
@@ -338,8 +331,6 @@
             mPropertyModel.set(IS_INCOGNITO, mIsIncognito);
             updateBackgroundColor(mPropertyModel);
 
-            mPropertyModel.set(MORE_TABS_CLICK_LISTENER, this);
-
             if (!mUseMagicSpace) {
                 // Hide tab carousel, which does not exist in incognito mode, when closing all
                 // normal tabs.
@@ -351,14 +342,14 @@
                                     Tab tab, boolean animate, boolean didCloseAlone) {
                                 if (isHomepageShown()
                                         && mTabModelSelector.getModel(false).getCount() <= 1) {
-                                    setTabCarouselVisibility(false);
+                                    setTabCardVisibility(false);
                                 }
                             }
 
                             @Override
                             public void tabClosureUndone(Tab tab) {
                                 if (isHomepageShown()) {
-                                    setTabCarouselVisibility(true);
+                                    setTabCardVisibility(true);
                                 }
                             }
 
@@ -368,7 +359,7 @@
                                         && isHomepageShown())) {
                                     return;
                                 }
-                                setTabCarouselVisibility(
+                                setTabCardVisibility(
                                         mTabModelSelector.getModel(false).getCount() > 0
                                                 && !mIsIncognito);
                             }
@@ -404,7 +395,7 @@
 
                                 if (type == TabSelectionType.FROM_CLOSE
                                         && UrlUtilities.isNtpUrl(tab.getUrl())) {
-                                    setTabCarouselVisibility(false);
+                                    setTabCardVisibility(false);
                                 }
                             }
                         };
@@ -737,7 +728,7 @@
         updateBackgroundColor(mPropertyModel);
         setMVTilesVisibility(!mIsIncognito);
         setLogoVisibility(!mIsIncognito);
-        setTabCarouselVisibility(getNormalTabCount() > 0 && !mIsIncognito);
+        setTabCardVisibility(getNormalTabCount() > 0 && !mIsIncognito);
         setExploreSurfaceVisibility(!mIsIncognito && mExploreSurfaceCoordinatorFactory != null);
         // TODO(qinmin): show query tiles when flag is enabled.
         setQueryTilesVisibility(false);
@@ -918,7 +909,7 @@
             // will not show.
             setMVTilesVisibility(!mIsIncognito);
             setLogoVisibility(!mIsIncognito);
-            setTabCarouselVisibility(hasNormalTab && !mIsIncognito);
+            setTabCardVisibility(hasNormalTab && !mIsIncognito);
             setExploreSurfaceVisibility(!mIsIncognito && mExploreSurfaceCoordinatorFactory != null);
             setQueryTilesVisibility(!mIsIncognito);
             setFakeBoxVisibility(!mIsIncognito);
@@ -939,7 +930,7 @@
             if (mPreviousStartSurfaceState == StartSurfaceState.SHOWN_HOMEPAGE) {
                 mayRecordHomepageSessionEnd();
             }
-            setTabCarouselVisibility(false);
+            setTabCardVisibility(false);
             setMVTilesVisibility(false);
             setLogoVisibility(false);
             setQueryTilesVisibility(false);
@@ -1283,26 +1274,6 @@
         mPropertyModel.set(EXPLORE_SURFACE_COORDINATOR, null);
     }
 
-    // TODO(crbug.com/982018): turn into onClickMoreTabs() and hide the OnClickListener signature
-    // inside. Implements View.OnClickListener, which listens for the more tabs button.
-    @Override
-    public void onClick(View v) {
-        assert isHomepageShown();
-
-        if (mIsStartSurfaceRefactorEnabled) {
-            mTabSwitcherClickHandler.onClick(v);
-        } else {
-            if (mSecondaryTasksSurfacePropertyModel == null) {
-                TabSwitcher.Controller controller = mSecondaryTasksSurfaceInitializer.initialize();
-                assert mSecondaryTasksSurfacePropertyModel != null;
-                setSecondaryTasksSurfaceController(controller);
-            }
-
-            setStartSurfaceState(StartSurfaceState.SHOWN_TABSWITCHER);
-        }
-        RecordUserAction.record("StartSurface.SinglePane.MoreTabs");
-    }
-
     // StartSurface.OnTabSelectingListener
     @Override
     public void onTabSelecting(int tabId) {
@@ -1496,19 +1467,17 @@
                         : getTopToolbarPlaceholderHeight());
     }
 
-    private void setTabCarouselVisibility(boolean isVisible) {
+    private void setTabCardVisibility(boolean isVisible) {
         if (mUseMagicSpace) return;
 
         // If the single tab switcher is shown and the current selected tab is a new tab page, we
         // shouldn't show the tab switcher layout on Start.
-        boolean shouldShowTabCarousel =
+        boolean shouldShowTabCard =
                 isVisible && !(isSingleTabSwitcher() && isCurrentSelectedTabNtp());
 
-        if (shouldShowTabCarousel == mPropertyModel.get(IS_TAB_CAROUSEL_VISIBLE)) return;
+        if (shouldShowTabCard == mPropertyModel.get(IS_TAB_CARD_VISIBLE)) return;
 
-        mPropertyModel.set(IS_TAB_CAROUSEL_VISIBLE, shouldShowTabCarousel);
-        mPropertyModel.set(
-                IS_TAB_CAROUSEL_TITLE_VISIBLE, shouldShowTabCarousel && showTabSwitcherTitle());
+        mPropertyModel.set(IS_TAB_CARD_VISIBLE, shouldShowTabCard);
     }
 
     private void setMVTilesVisibility(boolean isVisible) {
@@ -1642,10 +1611,6 @@
         return mController != null && mController.getTabSwitcherType() == TabSwitcherType.SINGLE;
     }
 
-    private boolean showTabSwitcherTitle() {
-        return !isSingleTabSwitcher();
-    }
-
     private void notifyBackPressStateChanged() {
         mBackPressChangedSupplier.set(shouldInterceptBackPress());
     }
@@ -1769,9 +1734,6 @@
                     TASKS_SURFACE_BODY_TOP_MARGIN,
                     resources.getDimensionPixelSize(R.dimen.tasks_surface_body_top_margin));
         }
-        mPropertyModel.set(
-                TAB_SWITCHER_TITLE_TOP_MARGIN,
-                resources.getDimensionPixelSize(R.dimen.tab_switcher_title_top_margin));
 
         if (mIsSurfacePolishEnabled && !mIsFeedGoneImprovementEnabled) return;
 
diff --git a/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/start_surface/TabSwitcherAndStartSurfaceLayout.java b/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/start_surface/TabSwitcherAndStartSurfaceLayout.java
index 395a437..1c3c88c 100644
--- a/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/start_surface/TabSwitcherAndStartSurfaceLayout.java
+++ b/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/start_surface/TabSwitcherAndStartSurfaceLayout.java
@@ -96,8 +96,8 @@
     @Nullable private final ScrimCoordinator mScrimCoordinator;
     // Always use getGridTabListDelegate() instead to make sure it's not null.
     @Nullable private TabSwitcher.TabListDelegate mGridTabListDelegate;
-    // Always use getCarouselOrSingleTabListDelegate() instead to make sure it's not null.
-    @Nullable private TabSwitcher.TabListDelegate mCarouselOrSingleTabListDelegate;
+    // Always use getSingleTabListDelegate() instead to make sure it's not null.
+    @Nullable private TabSwitcher.TabListDelegate mSingleTabListDelegate;
     private boolean mIsInitialized;
 
     private float mBackgroundAlpha;
@@ -350,7 +350,7 @@
         // If start surface homepage is showing, carousel or single tab switcher is used.
         // Otherwise grid tab switcher is used.
         if (isShowingStartSurfaceHomepage) {
-            quick = getCarouselOrSingleTabListDelegate().prepareTabSwitcherView();
+            quick = getSingleTabListDelegate().prepareTabSwitcherView();
         } else {
             mStartSurface.beforeShowTabSwitcherView();
             quick = getGridTabListDelegate().prepareTabSwitcherView();
@@ -914,17 +914,17 @@
 
     private Rect getThumbnailLocationOfCurrentTab() {
         if (isHidingStartSurfaceHomepage()) {
-            return getCarouselOrSingleTabListDelegate().getThumbnailLocationOfCurrentTab();
+            return getSingleTabListDelegate().getThumbnailLocationOfCurrentTab();
         } else {
             return getGridTabListDelegate().getThumbnailLocationOfCurrentTab();
         }
     }
 
-    private TabListDelegate getCarouselOrSingleTabListDelegate() {
-        if (mCarouselOrSingleTabListDelegate == null) {
-            mCarouselOrSingleTabListDelegate = mStartSurface.getCarouselOrSingleTabListDelegate();
+    private TabListDelegate getSingleTabListDelegate() {
+        if (mSingleTabListDelegate == null) {
+            mSingleTabListDelegate = mStartSurface.getSingleTabListDelegate();
         }
-        return mCarouselOrSingleTabListDelegate;
+        return mSingleTabListDelegate;
     }
 
     private TabListDelegate getGridTabListDelegate() {
@@ -938,13 +938,11 @@
         // It is possible that the StartSurfaceState becomes StartSurfaceState.NOT_SHOWN when hiding
         // the overview page, thus, the last used TabListDelegate is returned.
         if (mStartSurface.getStartSurfaceState() == StartSurfaceState.NOT_SHOWN) {
-            assert mGridTabListDelegate != null || mCarouselOrSingleTabListDelegate != null;
-            return mGridTabListDelegate != null
-                    ? mGridTabListDelegate
-                    : mCarouselOrSingleTabListDelegate;
+            assert mGridTabListDelegate != null || mSingleTabListDelegate != null;
+            return mGridTabListDelegate != null ? mGridTabListDelegate : mSingleTabListDelegate;
         }
         return isShowingStartSurfaceHomepage()
-                ? getCarouselOrSingleTabListDelegate()
+                ? getSingleTabListDelegate()
                 : getGridTabListDelegate();
     }
 
diff --git a/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/tasks/TasksSurfaceCoordinator.java b/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/tasks/TasksSurfaceCoordinator.java
index 6f5c8f4..3cfc87a6 100644
--- a/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/tasks/TasksSurfaceCoordinator.java
+++ b/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/tasks/TasksSurfaceCoordinator.java
@@ -140,25 +140,7 @@
         mTabContentManager = tabContentManager;
         mModalDialogManager = modalDialogManager;
         mParentTabSupplier = parentTabSupplier;
-        if (tabSwitcherType == TabSwitcherType.CAROUSEL) {
-            mTabSwitcher =
-                    TabManagementDelegateProvider.getDelegate()
-                            .createCarouselTabSwitcher(
-                                    activity,
-                                    activityLifecycleDispatcher,
-                                    tabModelSelector,
-                                    tabContentManager,
-                                    browserControlsStateProvider,
-                                    tabCreatorManager,
-                                    menuOrKeyboardActionController,
-                                    mView.getCarouselTabSwitcherContainer(),
-                                    multiWindowModeStateDispatcher,
-                                    scrimCoordinator,
-                                    rootView,
-                                    dynamicResourceLoaderSupplier,
-                                    snackbarManager,
-                                    modalDialogManager);
-        } else if (tabSwitcherType == TabSwitcherType.GRID) {
+        if (tabSwitcherType == TabSwitcherType.GRID) {
             assert incognitoReauthControllerSupplier != null
                     : "Valid Incognito re-auth controller supplier needed to create GTS.";
             mTabSwitcher =
@@ -185,7 +167,7 @@
             mTabSwitcher =
                     new SingleTabSwitcherCoordinator(
                             activity,
-                            mView.getCarouselTabSwitcherContainer(),
+                            mView.getCardTabSwitcherContainer(),
                             null,
                             tabModelSelector,
                             /* isShownOnNtp= */ false,
@@ -220,8 +202,7 @@
                 new TasksSurfaceMediator(
                         propertyModel,
                         incognitoLearnMoreClickListener,
-                        incognitoCookieControlsManager,
-                        tabSwitcherType == TabSwitcherType.CAROUSEL);
+                        incognitoCookieControlsManager);
 
         if (hasMVTiles) {
             boolean isScrollableMVTEnabled =
@@ -343,8 +324,7 @@
 
     @Override
     public Supplier<Boolean> getTabGridDialogVisibilitySupplier() {
-        if (mTabSwitcherType != TabSwitcherType.CAROUSEL
-                && mTabSwitcherType != TabSwitcherType.GRID) {
+        if (mTabSwitcherType != TabSwitcherType.GRID) {
             return null;
         }
         assert mTabSwitcher != null;
diff --git a/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/tasks/TasksSurfaceMediator.java b/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/tasks/TasksSurfaceMediator.java
index b03f834..21a3995 100644
--- a/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/tasks/TasksSurfaceMediator.java
+++ b/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/tasks/TasksSurfaceMediator.java
@@ -15,8 +15,6 @@
 import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.IS_FAKE_SEARCH_BOX_VISIBLE;
 import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.IS_LENS_BUTTON_VISIBLE;
 import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.IS_SURFACE_BODY_VISIBLE;
-import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.IS_TAB_CAROUSEL_TITLE_VISIBLE;
-import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.IS_TAB_CAROUSEL_VISIBLE;
 import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.IS_VOICE_RECOGNITION_BUTTON_VISIBLE;
 import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.LENS_BUTTON_CLICK_LISTENER;
 import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.VOICE_SEARCH_BUTTON_CLICK_LISTENER;
@@ -51,11 +49,8 @@
     TasksSurfaceMediator(
             PropertyModel model,
             View.OnClickListener incognitoLearnMoreClickListener,
-            IncognitoCookieControlsManager incognitoCookieControlsManager,
-            boolean isTabCarousel) {
+            IncognitoCookieControlsManager incognitoCookieControlsManager) {
         mModel = model;
-        mModel.set(IS_TAB_CAROUSEL_VISIBLE, isTabCarousel);
-        mModel.set(IS_TAB_CAROUSEL_TITLE_VISIBLE, isTabCarousel);
 
         model.set(INCOGNITO_LEARN_MORE_CLICK_LISTENER, incognitoLearnMoreClickListener);
 
diff --git a/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/tasks/TasksSurfaceProperties.java b/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/tasks/TasksSurfaceProperties.java
index 45e1ef0..b46689a 100644
--- a/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/tasks/TasksSurfaceProperties.java
+++ b/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/tasks/TasksSurfaceProperties.java
@@ -30,9 +30,7 @@
             new PropertyModel.WritableBooleanPropertyKey();
     public static final PropertyModel.WritableBooleanPropertyKey IS_SURFACE_BODY_VISIBLE =
             new PropertyModel.WritableBooleanPropertyKey();
-    public static final PropertyModel.WritableBooleanPropertyKey IS_TAB_CAROUSEL_VISIBLE =
-            new PropertyModel.WritableBooleanPropertyKey();
-    public static final PropertyModel.WritableBooleanPropertyKey IS_TAB_CAROUSEL_TITLE_VISIBLE =
+    public static final PropertyModel.WritableBooleanPropertyKey IS_TAB_CARD_VISIBLE =
             new PropertyModel.WritableBooleanPropertyKey();
     public static final PropertyModel.WritableBooleanPropertyKey
             IS_VOICE_RECOGNITION_BUTTON_VISIBLE = new PropertyModel.WritableBooleanPropertyKey();
@@ -58,8 +56,6 @@
             FAKE_SEARCH_BOX_TEXT_WATCHER = new PropertyModel.WritableObjectPropertyKey<>();
     public static final PropertyModel.WritableObjectPropertyKey<View.OnClickListener>
             LENS_BUTTON_CLICK_LISTENER = new PropertyModel.WritableObjectPropertyKey<>();
-    public static final PropertyModel.WritableObjectPropertyKey<View.OnClickListener>
-            MORE_TABS_CLICK_LISTENER = new PropertyModel.WritableObjectPropertyKey<>();
     public static final PropertyModel.WritableBooleanPropertyKey MV_TILES_VISIBLE =
             IS_CONTAINER_VISIBLE;
     public static final PropertyModel.WritableBooleanPropertyKey QUERY_TILES_VISIBLE =
@@ -72,8 +68,6 @@
             new PropertyModel.WritableIntPropertyKey();
     public static final PropertyModel.WritableIntPropertyKey MV_TILES_CONTAINER_LEFT_RIGHT_MARGIN =
             new PropertyModel.WritableIntPropertyKey();
-    public static final PropertyModel.WritableIntPropertyKey TAB_SWITCHER_TITLE_TOP_MARGIN =
-            new PropertyModel.WritableIntPropertyKey();
     public static final PropertyModel.WritableIntPropertyKey SINGLE_TAB_TOP_MARGIN =
             new PropertyModel.WritableIntPropertyKey();
     public static final PropertyModel.WritableIntPropertyKey TOP_TOOLBAR_PLACEHOLDER_HEIGHT =
@@ -92,8 +86,7 @@
                 IS_INCOGNITO_DESCRIPTION_VISIBLE,
                 IS_LENS_BUTTON_VISIBLE,
                 IS_SURFACE_BODY_VISIBLE,
-                IS_TAB_CAROUSEL_VISIBLE,
-                IS_TAB_CAROUSEL_TITLE_VISIBLE,
+                IS_TAB_CARD_VISIBLE,
                 IS_VOICE_RECOGNITION_BUTTON_VISIBLE,
                 INCOGNITO_COOKIE_CONTROLS_ICON_CLICK_LISTENER,
                 INCOGNITO_COOKIE_CONTROLS_TOGGLE_CHECKED,
@@ -104,14 +97,12 @@
                 FAKE_SEARCH_BOX_CLICK_LISTENER,
                 FAKE_SEARCH_BOX_TEXT_WATCHER,
                 LENS_BUTTON_CLICK_LISTENER,
-                MORE_TABS_CLICK_LISTENER,
                 MV_TILES_VISIBLE,
                 QUERY_TILES_VISIBLE,
                 VOICE_SEARCH_BUTTON_CLICK_LISTENER,
                 TASKS_SURFACE_BODY_TOP_MARGIN,
                 MV_TILES_CONTAINER_TOP_MARGIN,
                 MV_TILES_CONTAINER_LEFT_RIGHT_MARGIN,
-                TAB_SWITCHER_TITLE_TOP_MARGIN,
                 SINGLE_TAB_TOP_MARGIN,
                 RESET_TASK_SURFACE_HEADER_SCROLL_POSITION,
                 TOP_TOOLBAR_PLACEHOLDER_HEIGHT,
diff --git a/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/tasks/TasksView.java b/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/tasks/TasksView.java
index 9793404..a919a39c 100644
--- a/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/tasks/TasksView.java
+++ b/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/tasks/TasksView.java
@@ -17,17 +17,13 @@
 import android.view.ViewStub;
 import android.widget.CompoundButton.OnCheckedChangeListener;
 import android.widget.FrameLayout;
-import android.widget.TextView;
 
 import androidx.annotation.ColorInt;
-import androidx.annotation.Nullable;
 import androidx.appcompat.content.res.AppCompatResources;
 import androidx.coordinatorlayout.widget.CoordinatorLayout;
-import androidx.core.view.ViewCompat;
 
 import com.google.android.material.appbar.AppBarLayout;
 
-import org.chromium.base.ApiCompatibilityUtils;
 import org.chromium.chrome.R;
 import org.chromium.chrome.browser.feed.FeedStreamViewResizer;
 import org.chromium.chrome.browser.feed.FeedSurfaceCoordinator;
@@ -49,7 +45,7 @@
 public class TasksView extends CoordinatorLayoutForPointer {
 
     private final Context mContext;
-    private FrameLayout mCarouselTabSwitcherContainer;
+    private FrameLayout mCardTabSwitcherContainer;
     private AppBarLayout mHeaderView;
     private ViewGroup mMvTilesContainerLayout;
     private SearchBoxCoordinator mSearchBoxCoordinator;
@@ -89,8 +85,7 @@
     protected void onFinishInflate() {
         super.onFinishInflate();
 
-        mCarouselTabSwitcherContainer =
-                (FrameLayout) findViewById(R.id.tab_switcher_module_container);
+        mCardTabSwitcherContainer = (FrameLayout) findViewById(R.id.tab_switcher_module_container);
         mMvTilesContainerLayout = findViewById(R.id.mv_tiles_container);
         mSearchBoxCoordinator = new SearchBoxCoordinator(getContext(), this);
 
@@ -100,7 +95,6 @@
 
         mUiConfig = new UiConfig(this);
         setHeaderPadding();
-        setTabCarouselTitleStyle();
     }
 
     @Override
@@ -109,25 +103,8 @@
         mUiConfig.updateDisplayStyle();
     }
 
-    private void setTabCarouselTitleStyle() {
-        // Match the tab carousel title style with the feed header.
-        // There are many places checking FeedFeatures.isReportingUserActions, like in
-        // ExploreSurfaceCoordinator.
-        TextView titleDescription = (TextView) findViewById(R.id.tab_switcher_title_description);
-        TextView moreTabs = (TextView) findViewById(R.id.more_tabs);
-        ApiCompatibilityUtils.setTextAppearance(
-                titleDescription, R.style.TextAppearance_TextAccentMediumThick_Secondary);
-        ApiCompatibilityUtils.setTextAppearance(moreTabs, R.style.TextAppearance_Button_Text_Blue);
-        ViewCompat.setPaddingRelative(
-                titleDescription,
-                titleDescription.getPaddingStart(),
-                titleDescription.getPaddingTop(),
-                titleDescription.getPaddingEnd(),
-                titleDescription.getPaddingBottom());
-    }
-
-    public ViewGroup getCarouselTabSwitcherContainer() {
-        return mCarouselTabSwitcherContainer;
+    public ViewGroup getCardTabSwitcherContainer() {
+        return mCardTabSwitcherContainer;
     }
 
     public ViewGroup getBodyViewContainer() {
@@ -144,18 +121,11 @@
 
     /**
      * Set the visibility of the tab carousel.
+     *
      * @param isVisible Whether it's visible.
      */
-    void setTabCarouselVisibility(boolean isVisible) {
-        mCarouselTabSwitcherContainer.setVisibility(isVisible ? View.VISIBLE : View.GONE);
-    }
-
-    /**
-     * Set the visibility of the tab carousel title.
-     * @param isVisible Whether it's visible.
-     */
-    void setTabCarouselTitleVisibility(boolean isVisible) {
-        findViewById(R.id.tab_switcher_title).setVisibility(isVisible ? View.VISIBLE : View.GONE);
+    void setTabCardVisibility(boolean isVisible) {
+        mCardTabSwitcherContainer.setVisibility(isVisible ? View.VISIBLE : View.GONE);
     }
 
     /**
@@ -175,11 +145,6 @@
         findViewById(R.id.query_tiles_container).setVisibility(visibility);
     }
 
-    /** Set the {@link android.view.View.OnClickListener} for More Tabs. */
-    void setMoreTabsOnClickListener(@Nullable View.OnClickListener listener) {
-        findViewById(R.id.more_tabs).setOnClickListener(listener);
-    }
-
     /**
      * Set the incognito state.
      * @param isIncognito Whether it's in incognito mode.
@@ -385,17 +350,6 @@
     }
 
     /**
-     * Set the top margin for the tab switcher title.
-     * @param topMargin The top margin to set.
-     */
-    void setTabSwitcherTitleTopMargin(int topMargin) {
-        MarginLayoutParams params =
-                (MarginLayoutParams)
-                        mHeaderView.findViewById(R.id.tab_switcher_title).getLayoutParams();
-        params.topMargin = topMargin;
-    }
-
-    /**
      * Set the top margin for the single tab card.
      * @param topMargin The top margin to set.
      */
diff --git a/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/tasks/TasksViewBinder.java b/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/tasks/TasksViewBinder.java
index 2f380f5a..4f1dfb7 100644
--- a/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/tasks/TasksViewBinder.java
+++ b/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/tasks/TasksViewBinder.java
@@ -19,18 +19,15 @@
 import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.IS_INCOGNITO_DESCRIPTION_VISIBLE;
 import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.IS_LENS_BUTTON_VISIBLE;
 import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.IS_SURFACE_BODY_VISIBLE;
-import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.IS_TAB_CAROUSEL_TITLE_VISIBLE;
-import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.IS_TAB_CAROUSEL_VISIBLE;
+import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.IS_TAB_CARD_VISIBLE;
 import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.IS_VOICE_RECOGNITION_BUTTON_VISIBLE;
 import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.LENS_BUTTON_CLICK_LISTENER;
-import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.MORE_TABS_CLICK_LISTENER;
 import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.MV_TILES_CONTAINER_LEFT_RIGHT_MARGIN;
 import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.MV_TILES_CONTAINER_TOP_MARGIN;
 import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.MV_TILES_VISIBLE;
 import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.QUERY_TILES_VISIBLE;
 import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.RESET_TASK_SURFACE_HEADER_SCROLL_POSITION;
 import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.SINGLE_TAB_TOP_MARGIN;
-import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.TAB_SWITCHER_TITLE_TOP_MARGIN;
 import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.TASKS_SURFACE_BODY_TOP_MARGIN;
 import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.TOP_TOOLBAR_PLACEHOLDER_HEIGHT;
 import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.VOICE_SEARCH_BUTTON_CLICK_LISTENER;
@@ -85,18 +82,14 @@
                     .setLensButtonVisibility(model.get(IS_LENS_BUTTON_VISIBLE));
         } else if (propertyKey == IS_SURFACE_BODY_VISIBLE) {
             view.setSurfaceBodyVisibility(model.get(IS_SURFACE_BODY_VISIBLE));
-        } else if (propertyKey == IS_TAB_CAROUSEL_VISIBLE) {
-            view.setTabCarouselVisibility(model.get(IS_TAB_CAROUSEL_VISIBLE));
-        } else if (propertyKey == IS_TAB_CAROUSEL_TITLE_VISIBLE) {
-            view.setTabCarouselTitleVisibility(model.get(IS_TAB_CAROUSEL_TITLE_VISIBLE));
+        } else if (propertyKey == IS_TAB_CARD_VISIBLE) {
+            view.setTabCardVisibility(model.get(IS_TAB_CARD_VISIBLE));
         } else if (propertyKey == IS_VOICE_RECOGNITION_BUTTON_VISIBLE) {
             view.getSearchBoxCoordinator()
                     .setVoiceSearchButtonVisibility(model.get(IS_VOICE_RECOGNITION_BUTTON_VISIBLE));
         } else if (propertyKey == LENS_BUTTON_CLICK_LISTENER) {
             view.getSearchBoxCoordinator()
                     .addLensButtonClickListener(model.get(LENS_BUTTON_CLICK_LISTENER));
-        } else if (propertyKey == MORE_TABS_CLICK_LISTENER) {
-            view.setMoreTabsOnClickListener(model.get(MORE_TABS_CLICK_LISTENER));
         } else if (propertyKey == MV_TILES_VISIBLE) {
             view.setMostVisitedVisibility(model.get(MV_TILES_VISIBLE) ? View.VISIBLE : View.GONE);
         } else if (propertyKey == QUERY_TILES_VISIBLE) {
@@ -112,8 +105,6 @@
         } else if (propertyKey == MV_TILES_CONTAINER_LEFT_RIGHT_MARGIN) {
             view.setMVTilesContainerLeftAndRightMargin(
                     model.get(MV_TILES_CONTAINER_LEFT_RIGHT_MARGIN));
-        } else if (propertyKey == TAB_SWITCHER_TITLE_TOP_MARGIN) {
-            view.setTabSwitcherTitleTopMargin(model.get(TAB_SWITCHER_TITLE_TOP_MARGIN));
         } else if (propertyKey == SINGLE_TAB_TOP_MARGIN) {
             view.setSingleTabTopMargin(model.get(SINGLE_TAB_TOP_MARGIN));
         } else if (propertyKey == RESET_TASK_SURFACE_HEADER_SCROLL_POSITION) {
diff --git a/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/InstantStartTabSwitcherTest.java b/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/InstantStartTabSwitcherTest.java
index d5ea69fd..b7d46f1 100644
--- a/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/InstantStartTabSwitcherTest.java
+++ b/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/InstantStartTabSwitcherTest.java
@@ -4,7 +4,6 @@
 
 package org.chromium.chrome.features.start_surface;
 
-import static android.content.res.Configuration.ORIENTATION_LANDSCAPE;
 
 import static androidx.test.espresso.Espresso.onView;
 import static androidx.test.espresso.action.ViewActions.pressKey;
@@ -27,16 +26,13 @@
 import static org.chromium.chrome.features.start_surface.StartSurfaceTestUtils.INSTANT_START_TEST_BASE_PARAMS;
 import static org.chromium.ui.test.util.ViewUtils.onViewWaiting;
 
-import android.os.Build;
 import android.os.Build.VERSION_CODES;
 import android.view.KeyEvent;
-import android.view.View;
 
 import androidx.recyclerview.widget.LinearLayoutManager;
 import androidx.recyclerview.widget.RecyclerView;
 import androidx.test.filters.LargeTest;
 import androidx.test.filters.MediumTest;
-import androidx.test.filters.SmallTest;
 
 import org.junit.After;
 import org.junit.Assert;
@@ -56,11 +52,8 @@
 import org.chromium.base.test.params.ParameterSet;
 import org.chromium.base.test.params.ParameterizedRunner;
 import org.chromium.base.test.util.CommandLineFlags;
-import org.chromium.base.test.util.Criteria;
-import org.chromium.base.test.util.CriteriaHelper;
 import org.chromium.base.test.util.DisableIf;
 import org.chromium.base.test.util.DoNotBatch;
-import org.chromium.base.test.util.Feature;
 import org.chromium.base.test.util.JniMocker;
 import org.chromium.base.test.util.Restriction;
 import org.chromium.chrome.browser.ChromeTabbedActivity;
@@ -71,7 +64,6 @@
 import org.chromium.chrome.browser.homepage.HomepageManager;
 import org.chromium.chrome.browser.preferences.ChromePreferenceKeys;
 import org.chromium.chrome.browser.preferences.ChromeSharedPreferences;
-import org.chromium.chrome.browser.tab.TabUtils;
 import org.chromium.chrome.browser.tabmodel.TabModelFilter;
 import org.chromium.chrome.browser.tasks.ReturnToChromeUtil;
 import org.chromium.chrome.browser.tasks.pseudotab.TabAttributeCache;
@@ -89,7 +81,6 @@
 import java.io.IOException;
 import java.util.Arrays;
 import java.util.List;
-import java.util.concurrent.ExecutionException;
 import java.util.concurrent.atomic.AtomicInteger;
 
 /**
@@ -133,16 +124,14 @@
     @Rule public MockitoRule mMockitoRule = MockitoJUnit.rule();
 
     /**
-     * {@link ParameterProvider} used for parameterized test that provides whether it's single tab
-     * switcher or carousel tab switcher and whether last visited tab is a search result page.
+     * {@link ParameterProvider} used for parameterized test that provides whether last visited tab
+     * is a search result page.
      */
     public static class LastVisitedTabIsSRPTestParams implements ParameterProvider {
         private static final List<ParameterSet> sLVTIsSRPTestParams =
                 Arrays.asList(
-                        new ParameterSet().value(false, false).name("CarouselTab_NotSRP"),
-                        new ParameterSet().value(true, false).name("SingleTab_NotSRP"),
-                        new ParameterSet().value(false, true).name("CarouselTab_SRP"),
-                        new ParameterSet().value(true, true).name("SingleTab_SRP"));
+                        new ParameterSet().value(false).name("SingleTab_NotSRP"),
+                        new ParameterSet().value(true).name("SingleTab_SRP"));
 
         @Override
         public List<ParameterSet> getParameters() {
@@ -164,13 +153,13 @@
     }
 
     /**
-     * Tests that clicking the "more_tabs" button won't make Omnibox get focused when single tab is
+     * Tests that clicking the tab switcher button won't make Omnibox get focused when single tab is
      * shown on the StartSurface.
      */
     @Test
     @MediumTest
-    @CommandLineFlags.Add({INSTANT_START_TEST_BASE_PARAMS + "/show_last_active_tab_only/true"})
-    public void startSurfaceMoreTabsButtonTest() throws IOException {
+    @CommandLineFlags.Add({INSTANT_START_TEST_BASE_PARAMS})
+    public void startSurfaceTabSwitcherButtonTest() throws IOException {
         StartSurfaceTestUtils.createTabStatesAndMetadataFile(new int[] {0});
         StartSurfaceTestUtils.createThumbnailBitmapAndWriteToFile(0, mBrowserControlsStateProvider);
         TabAttributeCache.setTitleForTesting(0, "Google");
@@ -180,7 +169,6 @@
         Assert.assertFalse(cta.isTablet());
         Assert.assertTrue(ChromeFeatureList.sInstantStart.isEnabled());
         Assert.assertTrue(ReturnToChromeUtil.shouldShowTabSwitcher(-1, false));
-        Assert.assertTrue(StartSurfaceConfiguration.START_SURFACE_LAST_ACTIVE_TAB_ONLY.getValue());
 
         mActivityTestRule.waitForActivityNativeInitializationComplete();
 
@@ -197,184 +185,6 @@
     }
 
     @Test
-    @SmallTest
-    @Feature({"RenderTest"})
-    @CommandLineFlags.Add({
-        ChromeSwitches.DISABLE_NATIVE_INITIALIZATION,
-        INSTANT_START_TEST_BASE_PARAMS + "/show_last_active_tab_only/false"
-    })
-    public void renderTabSwitcher() throws IOException, InterruptedException {
-        StartSurfaceTestUtils.createTabStatesAndMetadataFile(new int[] {0, 1, 2});
-        StartSurfaceTestUtils.createThumbnailBitmapAndWriteToFile(0, mBrowserControlsStateProvider);
-        StartSurfaceTestUtils.createThumbnailBitmapAndWriteToFile(1, mBrowserControlsStateProvider);
-        StartSurfaceTestUtils.createThumbnailBitmapAndWriteToFile(2, mBrowserControlsStateProvider);
-        TabAttributeCache.setTitleForTesting(0, "title");
-        TabAttributeCache.setTitleForTesting(1, "漢字");
-        TabAttributeCache.setTitleForTesting(2, "اَلْعَرَبِيَّةُ");
-
-        // Must be after StartSurfaceTestUtils.createTabStatesAndMetadataFile() to read these files.
-        StartSurfaceTestUtils.startMainActivityFromLauncher(mActivityTestRule);
-        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
-        StartSurfaceTestUtils.waitForStartSurfaceVisible(cta);
-        RecyclerView recyclerView =
-                (RecyclerView) StartSurfaceTestUtils.getCarouselTabSwitcherTabListView(cta);
-        TabUiTestHelper.waitForThumbnailsToFetch(recyclerView);
-        mRenderTestRule.render(recyclerView, "tabSwitcher_3tabs");
-
-        // Resume native initialization and make sure the GTS looks the same.
-        StartSurfaceTestUtils.startAndWaitNativeInitialization(mActivityTestRule);
-
-        Assert.assertEquals(3, cta.getTabModelSelector().getCurrentModel().getCount());
-        // TODO(crbug.com/1065314): find a better way to wait for a stable rendering.
-        Thread.sleep(2000);
-        // The titles on the tab cards changes to "Google" because we use M26_GOOGLE_COM.
-        mRenderTestRule.render(recyclerView, "tabSwitcher_3tabs_postNative");
-    }
-
-    @Test
-    @SmallTest
-    @Feature({"RenderTest"})
-    @CommandLineFlags.Add({
-        ChromeSwitches.DISABLE_NATIVE_INITIALIZATION,
-        INSTANT_START_TEST_BASE_PARAMS + "/show_last_active_tab_only/false"
-    })
-    @DisableIf.Build(
-            message = "Flaky. See https://crbug.com/1091311",
-            sdk_is_greater_than = Build.VERSION_CODES.O)
-    public void renderTabGroups() throws IOException {
-        StartSurfaceTestUtils.createThumbnailBitmapAndWriteToFile(0, mBrowserControlsStateProvider);
-        StartSurfaceTestUtils.createThumbnailBitmapAndWriteToFile(1, mBrowserControlsStateProvider);
-        StartSurfaceTestUtils.createThumbnailBitmapAndWriteToFile(2, mBrowserControlsStateProvider);
-        StartSurfaceTestUtils.createThumbnailBitmapAndWriteToFile(3, mBrowserControlsStateProvider);
-        StartSurfaceTestUtils.createThumbnailBitmapAndWriteToFile(4, mBrowserControlsStateProvider);
-        TabAttributeCache.setRootIdForTesting(0, 0);
-        TabAttributeCache.setRootIdForTesting(1, 0);
-        TabAttributeCache.setRootIdForTesting(2, 0);
-        TabAttributeCache.setRootIdForTesting(3, 3);
-        TabAttributeCache.setRootIdForTesting(4, 3);
-        // StartSurfaceTestUtils.createTabStatesAndMetadataFile() has to be after
-        // setRootIdForTesting() to get root IDs.
-        StartSurfaceTestUtils.createTabStatesAndMetadataFile(new int[] {0, 1, 2, 3, 4});
-
-        // Must be after StartSurfaceTestUtils.createTabStatesAndMetadataFile() to read these files.
-        StartSurfaceTestUtils.startMainActivityFromLauncher(mActivityTestRule);
-        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
-        StartSurfaceTestUtils.waitForStartSurfaceVisible(cta);
-        RecyclerView recyclerView =
-                (RecyclerView) StartSurfaceTestUtils.getCarouselTabSwitcherTabListView(cta);
-        TabUiTestHelper.waitForThumbnailsToFetch(recyclerView);
-        // TODO(crbug.com/1065314): Tab group cards should not have favicons.
-        mRenderTestRule.render(
-                StartSurfaceTestUtils.getCarouselTabSwitcherTabListView(cta),
-                "tabSwitcher_tabGroups_aspect_ratio_point85");
-
-        // Resume native initialization and make sure the GTS looks the same.
-        StartSurfaceTestUtils.startAndWaitNativeInitialization(mActivityTestRule);
-
-        Assert.assertEquals(5, cta.getTabModelSelector().getCurrentModel().getCount());
-        Assert.assertEquals(
-                2,
-                cta.getTabModelSelector()
-                        .getTabModelFilterProvider()
-                        .getCurrentTabModelFilter()
-                        .getCount());
-        Assert.assertEquals(
-                3,
-                getRelatedTabListSizeOnUiThread(
-                        cta.getTabModelSelector()
-                                .getTabModelFilterProvider()
-                                .getCurrentTabModelFilter()));
-        // TODO(crbug.com/1065314): fix thumbnail changing in post-native rendering and make sure
-        //  post-native GTS looks the same.
-    }
-
-    @Test
-    @SmallTest
-    @Feature({"RenderTest"})
-    @CommandLineFlags.Add({
-        ChromeSwitches.DISABLE_NATIVE_INITIALIZATION,
-        INSTANT_START_TEST_BASE_PARAMS + "/show_last_active_tab_only/false"
-    })
-    @DisableIf.Build(
-            message = "Flaky. See https://crbug.com/1091311",
-            sdk_is_greater_than = Build.VERSION_CODES.O)
-    public void renderTabGroups_ThemeRefactor() throws IOException {
-        StartSurfaceTestUtils.createThumbnailBitmapAndWriteToFile(0, mBrowserControlsStateProvider);
-        StartSurfaceTestUtils.createThumbnailBitmapAndWriteToFile(1, mBrowserControlsStateProvider);
-        StartSurfaceTestUtils.createThumbnailBitmapAndWriteToFile(2, mBrowserControlsStateProvider);
-        StartSurfaceTestUtils.createThumbnailBitmapAndWriteToFile(3, mBrowserControlsStateProvider);
-        StartSurfaceTestUtils.createThumbnailBitmapAndWriteToFile(4, mBrowserControlsStateProvider);
-        StartSurfaceTestUtils.createThumbnailBitmapAndWriteToFile(5, mBrowserControlsStateProvider);
-        StartSurfaceTestUtils.createThumbnailBitmapAndWriteToFile(6, mBrowserControlsStateProvider);
-        TabAttributeCache.setRootIdForTesting(0, 0);
-        TabAttributeCache.setRootIdForTesting(1, 0);
-        TabAttributeCache.setRootIdForTesting(2, 0);
-        TabAttributeCache.setRootIdForTesting(3, 0);
-        TabAttributeCache.setRootIdForTesting(4, 0);
-        TabAttributeCache.setRootIdForTesting(5, 5);
-        TabAttributeCache.setRootIdForTesting(6, 5);
-
-        // StartSurfaceTestUtils.createTabStatesAndMetadataFile() has to be after
-        // setRootIdForTesting() to get root IDs.
-        StartSurfaceTestUtils.createTabStatesAndMetadataFile(new int[] {0, 1, 2, 3, 4, 5, 6});
-
-        // Must be after StartSurfaceTestUtils.createTabStatesAndMetadataFile() to read these files.
-        StartSurfaceTestUtils.startMainActivityFromLauncher(mActivityTestRule);
-        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
-        StartSurfaceTestUtils.waitForStartSurfaceVisible(cta);
-
-        RecyclerView recyclerView =
-                (RecyclerView) StartSurfaceTestUtils.getCarouselTabSwitcherTabListView(cta);
-        TabUiTestHelper.waitForThumbnailsToFetch(recyclerView);
-        mRenderTestRule.render(
-                StartSurfaceTestUtils.getCarouselTabSwitcherTabListView(cta),
-                "tabSwitcher_tabGroups_theme_enforcement");
-    }
-
-    @Test
-    @MediumTest
-    @CommandLineFlags.Add({
-        ChromeSwitches.DISABLE_NATIVE_INITIALIZATION,
-        INSTANT_START_TEST_BASE_PARAMS + "/show_last_active_tab_only/false"
-    })
-    public void testSingleAsHomepage_CloseTabInCarouselTabSwitcher()
-            throws IOException, ExecutionException {
-        StartSurfaceTestUtils.createTabStatesAndMetadataFile(new int[] {0});
-        StartSurfaceTestUtils.createThumbnailBitmapAndWriteToFile(0, mBrowserControlsStateProvider);
-        TabAttributeCache.setTitleForTesting(0, "Google");
-
-        StartSurfaceTestUtils.startMainActivityFromLauncher(mActivityTestRule);
-        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
-        StartSurfaceTestUtils.waitForStartSurfaceVisible(cta);
-
-        // Initializes native.
-        StartSurfaceTestUtils.startAndWaitNativeInitialization(mActivityTestRule);
-        StartSurfaceTestUtils.waitForTabModel(cta);
-        TabUiTestHelper.verifyTabModelTabCount(cta, 1, 0);
-        onView(
-                        allOf(
-                                withParent(
-                                        withId(
-                                                org.chromium.chrome.test.R.id
-                                                        .tab_switcher_module_container)),
-                                withId(org.chromium.chrome.test.R.id.tab_list_recycler_view)))
-                .check(matches(isDisplayed()));
-        RecyclerView tabListView =
-                (RecyclerView) StartSurfaceTestUtils.getCarouselTabSwitcherTabListView(cta);
-        TestThreadUtils.runOnUiThreadBlocking(
-                () ->
-                        tabListView
-                                .getChildAt(0)
-                                .findViewById(org.chromium.chrome.test.R.id.action_button)
-                                .performClick());
-
-        TabUiTestHelper.verifyTabModelTabCount(cta, 0, 0);
-        assertEquals(
-                cta.findViewById(org.chromium.chrome.test.R.id.tab_switcher_title).getVisibility(),
-                View.GONE);
-    }
-
-    @Test
     @LargeTest
     @CommandLineFlags.Add({
         ChromeSwitches.DISABLE_NATIVE_INITIALIZATION,
@@ -434,72 +244,6 @@
 
     @Test
     @MediumTest
-    @DisableFeatures(ChromeFeatureList.START_SURFACE_REFACTOR)
-    @CommandLineFlags.Add({
-        ChromeSwitches.DISABLE_NATIVE_INITIALIZATION,
-        INSTANT_START_TEST_BASE_PARAMS
-                + "/show_last_active_tab_only/false"
-                + "/open_ntp_instead_of_start/false/open_start_as_homepage/true"
-    })
-    public void testSingleAsHomepage_Landscape_TabSize() throws IOException {
-        testSingleAsHomepage_Landscape_TabSize_impl();
-    }
-
-    @Test
-    @MediumTest
-    @EnableFeatures(ChromeFeatureList.START_SURFACE_REFACTOR)
-    @CommandLineFlags.Add({
-        ChromeSwitches.DISABLE_NATIVE_INITIALIZATION,
-        INSTANT_START_TEST_BASE_PARAMS
-                + "/show_last_active_tab_only/false"
-                + "/open_ntp_instead_of_start/false/open_start_as_homepage/true"
-    })
-    public void testSingleAsHomepage_Landscape_TabSize_RefactorEnabled() throws IOException {
-        testSingleAsHomepage_Landscape_TabSize_impl();
-    }
-
-    private void testSingleAsHomepage_Landscape_TabSize_impl() throws IOException {
-        StartSurfaceTestUtils.startMainActivityFromLauncher(mActivityTestRule);
-        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
-        StartSurfaceTestUtils.waitForStartSurfaceVisible(cta);
-
-        // Initializes native.
-        StartSurfaceTestUtils.startAndWaitNativeInitialization(mActivityTestRule);
-        onViewWaiting(allOf(withId(R.id.feed_stream_recycler_view), isDisplayed()));
-
-        // Rotate to landscape mode.
-        ActivityTestUtils.rotateActivityToOrientation(cta, ORIENTATION_LANDSCAPE);
-        CriteriaHelper.pollUiThread(
-                () -> {
-                    Criteria.checkThat(
-                            cta.getResources().getConfiguration().orientation,
-                            is(ORIENTATION_LANDSCAPE));
-                });
-
-        // Launch the first MV tile to open a tab.
-        StartSurfaceTestUtils.launchFirstMVTile(cta, /* currentTabCount= */ 0);
-        StartSurfaceTestUtils.pressHomePageButton(cta);
-
-        // Wait for thumbnail to show.
-        StartSurfaceTestUtils.waitForStartSurfaceVisible(cta);
-        onViewWaiting(allOf(withId(org.chromium.chrome.test.R.id.tab_thumbnail), isDisplayed()));
-
-        RecyclerView recyclerView =
-                (RecyclerView) StartSurfaceTestUtils.getCarouselTabSwitcherTabListView(cta);
-        View tabThumbnail = recyclerView.findViewById(org.chromium.chrome.test.R.id.tab_thumbnail);
-        assertEquals(
-                tabThumbnail.getMeasuredHeight(),
-                (int)
-                        (tabThumbnail.getMeasuredWidth()
-                                * 1.0
-                                / TabUtils.PORTRAIT_THUMBNAIL_ASPECT_RATIO),
-                2);
-
-        ActivityTestUtils.clearActivityOrientation(cta);
-    }
-
-    @Test
-    @MediumTest
     @CommandLineFlags.Add({INSTANT_START_TEST_BASE_PARAMS})
     public void testShowStartWhenHomepageDisabledWithImmediateReturn() throws IOException {
         Assert.assertTrue(ChromeFeatureList.sInstantStart.isEnabled());
@@ -557,9 +301,8 @@
         ChromeSwitches.DISABLE_NATIVE_INITIALIZATION,
         INSTANT_START_TEST_BASE_PARAMS
     })
-    public void testRecordLastVisitedTabIsSRPHistogram_Instant(
-            boolean isSingleTabSwitcher, boolean isSRP) throws IOException {
-        testRecordLastVisitedTabIsSRPHistogram(isSingleTabSwitcher, isSRP);
+    public void testRecordLastVisitedTabIsSRPHistogram_Instant(boolean isSRP) throws IOException {
+        testRecordLastVisitedTabIsSRPHistogram(isSRP);
     }
 
     @Test
@@ -570,9 +313,8 @@
         ChromeSwitches.DISABLE_NATIVE_INITIALIZATION,
         INSTANT_START_TEST_BASE_PARAMS
     })
-    public void testRecordLastVisitedTabIsSRPHistogram_NoInstant(
-            boolean isSingleTabSwitcher, boolean isSRP) throws IOException {
-        testRecordLastVisitedTabIsSRPHistogram(isSingleTabSwitcher, isSRP);
+    public void testRecordLastVisitedTabIsSRPHistogram_NoInstant(boolean isSRP) throws IOException {
+        testRecordLastVisitedTabIsSRPHistogram(isSRP);
     }
 
     @Test
@@ -619,10 +361,7 @@
                         .readBoolean(ChromePreferenceKeys.IS_LAST_VISITED_TAB_SRP, false));
     }
 
-    private void testRecordLastVisitedTabIsSRPHistogram(boolean isSingleTabSwitcher, boolean isSRP)
-            throws IOException {
-        StartSurfaceConfiguration.START_SURFACE_LAST_ACTIVE_TAB_ONLY.setForTesting(
-                isSingleTabSwitcher);
+    private void testRecordLastVisitedTabIsSRPHistogram(boolean isSRP) throws IOException {
         StartSurfaceTestUtils.createTabStatesAndMetadataFile(
                 new int[] {0, 1},
                 new String[] {"https://www.google.com/search?q=test", "https://www.google.com"},
diff --git a/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceBackButtonTest.java b/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceBackButtonTest.java
index 2feee86..c83ecb9 100644
--- a/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceBackButtonTest.java
+++ b/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceBackButtonTest.java
@@ -216,10 +216,9 @@
         StartSurfaceTestUtils.launchFirstMVTile(cta, /* currentTabCount= */ 1);
         StartSurfaceTestUtils.pressHomePageButton(cta);
         onViewWaiting(withId(R.id.primary_tasks_surface_view));
-        onView(allOf(withId(R.id.tab_list_recycler_view), isDisplayed()));
 
-        // Launches the new tab from the carousel tab switcher, and press back button.
-        StartSurfaceTestUtils.clickTabInCarousel(/* position= */ 1);
+        // Launches the new tab from the single tab card, and press back button.
+        onViewWaiting(withId(R.id.single_tab_view)).perform(click());
         Assert.assertEquals(
                 TabLaunchType.FROM_START_SURFACE,
                 cta.getTabModelSelector().getCurrentTab().getLaunchType());
diff --git a/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceNoTabsTest.java b/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceNoTabsTest.java
index f88ec4e..04693d6 100644
--- a/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceNoTabsTest.java
+++ b/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceNoTabsTest.java
@@ -111,11 +111,9 @@
         onView(withId(R.id.primary_tasks_surface_view)).check(matches(isDisplayed()));
         onView(withId(R.id.search_box_text)).check(matches(isDisplayed()));
         onView(withId(R.id.mv_tiles_container)).check(matches(isDisplayed()));
-        onView(withId(R.id.tab_switcher_title)).check(matches(withEffectiveVisibility(GONE)));
         onView(withId(R.id.tab_switcher_module_container))
                 .check(matches(withEffectiveVisibility(GONE)));
         onView(withId(R.id.single_tab_view)).check(matches(withEffectiveVisibility(GONE)));
-        onView(withId(R.id.more_tabs)).check(matches(withEffectiveVisibility(GONE)));
         onView(withId(R.id.tasks_surface_body)).check(matches(isDisplayed()));
         onView(withId(R.id.start_tab_switcher_button)).check(matches(isDisplayed()));
         onViewWaiting(withId(R.id.logo)).check(matches(isDisplayed()));
diff --git a/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceTabSwitcherTest.java b/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceTabSwitcherTest.java
index d2775389..ca14659 100644
--- a/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceTabSwitcherTest.java
+++ b/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceTabSwitcherTest.java
@@ -208,14 +208,16 @@
         StartSurfaceTestUtils.waitForStartSurfaceVisible(
                 mLayoutChangedCallbackHelper, mCurrentlyActiveLayout, cta);
         TabUiTestHelper.verifyTabModelTabCount(cta, 1, 0);
-        assertEquals(cta.findViewById(R.id.tab_switcher_title).getVisibility(), View.VISIBLE);
+        assertEquals(
+                cta.findViewById(R.id.tab_switcher_module_container).getVisibility(), View.VISIBLE);
 
         TestThreadUtils.runOnUiThreadBlocking(
                 () -> {
                     cta.getTabModelSelector().getModel(false).closeAllTabs();
                 });
         TabUiTestHelper.verifyTabModelTabCount(cta, 0, 0);
-        assertEquals(cta.findViewById(R.id.tab_switcher_title).getVisibility(), View.GONE);
+        assertEquals(
+                cta.findViewById(R.id.tab_switcher_module_container).getVisibility(), View.GONE);
     }
 
     @Test
@@ -243,15 +245,11 @@
                         cta.getTabModelSelector()
                                 .getTabModelFilterProvider()
                                 .getTabModelFilter(false);
-        if (mImmediateReturn) {
-            StartSurfaceTestUtils.clickFirstTabInCarousel();
-        } else {
-            onViewWaiting(
-                            allOf(
-                                    withId(R.id.toolbar_left_button),
-                                    isDescendantOfA(withId(R.id.bottom_controls))))
-                    .perform(click());
-        }
+        onViewWaiting(
+                        allOf(
+                                withId(R.id.toolbar_left_button),
+                                isDescendantOfA(withId(R.id.bottom_controls))))
+                .perform(click());
         onViewWaiting(
                         allOf(
                                 withId(R.id.tab_list_recycler_view),
@@ -315,57 +313,6 @@
     @CommandLineFlags.Add({
         START_SURFACE_TEST_SINGLE_ENABLED_PARAMS + "/show_tabs_in_mru_order/true"
     })
-    public void test_CarouselTabSwitcherShowTabsInMRUOrder() {
-        if (!mImmediateReturn) {
-            StartSurfaceTestUtils.pressHomePageButton(mActivityTestRule.getActivity());
-        }
-
-        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
-        StartSurfaceTestUtils.waitForStartSurfaceVisible(
-                mLayoutChangedCallbackHelper, mCurrentlyActiveLayout, cta);
-        onViewWaiting(withId(R.id.logo));
-        Tab tab1 = cta.getCurrentTabModel().getTabAt(0);
-
-        // Launches the first site in MV tiles.
-        StartSurfaceTestUtils.launchFirstMVTile(cta, /* currentTabCount= */ 1);
-        Tab tab2 = cta.getActivityTab();
-        // Verifies that the titles of the two Tabs are different.
-        TestThreadUtils.runOnUiThreadBlocking(
-                () -> {
-                    Assert.assertNotEquals(tab1.getTitle(), tab2.getTitle());
-                });
-
-        // Returns to the Start surface.
-        StartSurfaceTestUtils.pressHomePageButton(cta);
-        StartSurfaceTestUtils.waitForStartSurfaceVisible(cta);
-        ViewUtils.waitForVisibleView(
-                allOf(
-                        withParent(withId(R.id.tab_switcher_module_container)),
-                        withId(R.id.tab_list_recycler_view)));
-
-        RecyclerView recyclerView =
-                (RecyclerView) StartSurfaceTestUtils.getCarouselTabSwitcherTabListView(cta);
-        CriteriaHelper.pollUiThread(() -> 2 == recyclerView.getChildCount());
-        // Verifies that the tabs are shown in MRU order: the first card in the carousel Tab
-        // switcher is the last created Tab by tapping the MV tile; the second card is the Tab
-        // created or restored in setup().
-        RecyclerView.ViewHolder firstViewHolder = recyclerView.findViewHolderForAdapterPosition(0);
-        TextView title1 = firstViewHolder.itemView.findViewById(R.id.tab_title);
-        TestThreadUtils.runOnUiThreadBlocking(
-                () -> Assert.assertEquals(tab2.getTitle(), title1.getText()));
-
-        RecyclerView.ViewHolder secondViewHolder = recyclerView.findViewHolderForAdapterPosition(1);
-        TextView title2 = secondViewHolder.itemView.findViewById(R.id.tab_title);
-        TestThreadUtils.runOnUiThreadBlocking(
-                () -> Assert.assertEquals(tab1.getTitle(), title2.getText()));
-    }
-
-    @Test
-    @LargeTest
-    @Feature({"StartSurface"})
-    @CommandLineFlags.Add({
-        START_SURFACE_TEST_SINGLE_ENABLED_PARAMS + "/show_tabs_in_mru_order/true"
-    })
     public void testShow_GridTabSwitcher_AlwaysShowTabsInCreationOrder() {
         tabSwitcher_AlwaysShowTabsInGridTabSwitcherInCreationOrderImpl();
     }
diff --git a/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceTest.java b/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceTest.java
index b291481..9bdeeea 100644
--- a/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceTest.java
+++ b/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceTest.java
@@ -209,39 +209,6 @@
     @Test
     @MediumTest
     @Feature({"StartSurface"})
-    @CommandLineFlags.Add({START_SURFACE_TEST_SINGLE_ENABLED_PARAMS})
-    public void testShow_SingleAsHomepage() {
-        if (!mImmediateReturn) {
-            StartSurfaceTestUtils.pressHomePageButton(mActivityTestRule.getActivity());
-        }
-        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
-        StartSurfaceTestUtils.waitForStartSurfaceVisible(
-                mLayoutChangedCallbackHelper, mCurrentlyActiveLayout, cta);
-
-        onViewWaiting(withId(R.id.primary_tasks_surface_view));
-        onViewWaiting(withId(R.id.search_box_text)).check(matches(isDisplayed()));
-        onViewWaiting(withId(R.id.mv_tiles_container)).check(matches(isDisplayed()));
-        onViewWaiting(withId(R.id.tab_switcher_title)).check(matches(isDisplayed()));
-        onViewWaiting(withId(R.id.tab_switcher_module_container)).check(matches(isDisplayed()));
-        onView(withId(R.id.tasks_surface_body)).check(matches(isDisplayed()));
-
-        StartSurfaceTestUtils.clickMoreTabs(cta);
-        StartSurfaceTestUtils.waitForTabSwitcherVisible(cta);
-        ViewUtils.waitForVisibleView(
-                allOf(
-                        withParent(withId(TabUiTestHelper.getTabSwitcherParentId(cta))),
-                        withId(R.id.tab_list_recycler_view)));
-
-        StartSurfaceTestUtils.pressBack(mActivityTestRule);
-        onViewWaiting(allOf(withId(R.id.primary_tasks_surface_view), isDisplayed()));
-
-        StartSurfaceTestUtils.clickFirstTabInCarousel();
-        LayoutTestUtils.waitForLayout(cta.getLayoutManager(), LayoutType.BROWSING);
-    }
-
-    @Test
-    @MediumTest
-    @Feature({"StartSurface"})
     @CommandLineFlags.Add({
         START_SURFACE_TEST_SINGLE_ENABLED_PARAMS + "/hide_switch_when_no_incognito_tabs/false"
     })
@@ -258,14 +225,13 @@
         onViewWaiting(withId(R.id.primary_tasks_surface_view));
         onViewWaiting(withId(R.id.search_box_text));
         onViewWaiting(withId(R.id.mv_tiles_container)).check(matches(isDisplayed()));
-        onViewWaiting(withId(R.id.tab_switcher_title)).check(matches(isDisplayed()));
         onViewWaiting(withId(R.id.tab_switcher_module_container)).check(matches(isDisplayed()));
         onView(withId(R.id.tasks_surface_body)).check(matches(isDisplayed()));
 
         // TODO(crbug.com/1076274): fix toolbar to make incognito switch part of the view.
         onView(withId(R.id.incognito_toggle_tabs)).check(matches(withEffectiveVisibility(GONE)));
 
-        StartSurfaceTestUtils.clickMoreTabs(cta);
+        StartSurfaceTestUtils.clickTabSwitcherButton(cta);
         StartSurfaceTestUtils.waitForTabSwitcherVisible(cta);
         onView(withId(R.id.incognito_toggle_tabs)).check(matches(withEffectiveVisibility(VISIBLE)));
 
@@ -282,7 +248,7 @@
 
         onView(withId(R.id.incognito_toggle_tabs)).check(matches(withEffectiveVisibility(GONE)));
 
-        StartSurfaceTestUtils.clickFirstTabInCarousel();
+        onViewWaiting(withId(R.id.single_tab_view)).perform(click());
         LayoutTestUtils.waitForLayout(cta.getLayoutManager(), LayoutType.BROWSING);
     }
 
@@ -315,7 +281,6 @@
         onViewWaiting(withId(R.id.primary_tasks_surface_view));
         onViewWaiting(withId(R.id.search_box_text));
         onView(withId(R.id.mv_tiles_container)).check(matches(isDisplayed()));
-        onView(withId(R.id.tab_switcher_title)).check(matches(withEffectiveVisibility(GONE)));
         onView(withId(R.id.tab_switcher_module_container)).check(matches(isDisplayed()));
         onView(withId(R.id.single_tab_view)).check(matches(isDisplayed()));
         onView(withId(R.id.tasks_surface_body)).check(matches(isDisplayed()));
@@ -525,27 +490,6 @@
         FeedPlaceholderLayout.DISABLE_ANIMATION_SWITCH
     })
     public void startSurfaceRecordHistogramsTest_SingleTab() {
-        startSurfaceRecordHistogramsTest(true);
-    }
-
-    @Test
-    @MediumTest
-    @Restriction({UiRestriction.RESTRICTION_TYPE_PHONE})
-    @EnableFeatures({
-        ChromeFeatureList.START_SURFACE_RETURN_TIME + "<Study",
-        ChromeFeatureList.START_SURFACE_ANDROID + "<Study"
-    })
-    @CommandLineFlags.Add({
-        START_SURFACE_TEST_SINGLE_ENABLED_PARAMS,
-        // Disable feed placeholder animation because it causes waitForDeferredStartup() to time
-        // out.
-        FeedPlaceholderLayout.DISABLE_ANIMATION_SWITCH
-    })
-    public void startSurfaceRecordHistogramsTest_CarouselTab() {
-        startSurfaceRecordHistogramsTest(false);
-    }
-
-    private void startSurfaceRecordHistogramsTest(boolean isSingleTabSwitcher) {
         if (!mImmediateReturn) {
             assertNotEquals(0, START_SURFACE_RETURN_TIME_SECONDS.getValue());
             StartSurfaceTestUtils.pressHomePageButton(mActivityTestRule.getActivity());
@@ -553,9 +497,6 @@
             assertEquals(0, START_SURFACE_RETURN_TIME_SECONDS.getValue());
         }
 
-        Assert.assertEquals(
-                isSingleTabSwitcher,
-                StartSurfaceConfiguration.START_SURFACE_LAST_ACTIVE_TAB_ONLY.getValue());
         StartSurfaceTestUtils.waitForStartSurfaceVisible(
                 mLayoutChangedCallbackHelper,
                 mCurrentlyActiveLayout,
@@ -586,14 +527,12 @@
 
         // Histograms should be only recorded when StartSurface is shown immediately after
         // launch.
-        if (isSingleTabSwitcher) {
-            Assert.assertEquals(
-                    expectedRecordCount,
-                    RecordHistogram.getHistogramTotalCountForTesting(
-                            StartSurfaceConfiguration.getHistogramName(
-                                    SingleTabSwitcherMediator.SINGLE_TAB_TITLE_AVAILABLE_TIME_UMA,
-                                    isInstantStart)));
-        }
+        Assert.assertEquals(
+                expectedRecordCount,
+                RecordHistogram.getHistogramTotalCountForTesting(
+                        StartSurfaceConfiguration.getHistogramName(
+                                SingleTabSwitcherMediator.SINGLE_TAB_TITLE_AVAILABLE_TIME_UMA,
+                                isInstantStart)));
 
         Assert.assertEquals(
                 expectedRecordCount,
@@ -695,7 +634,7 @@
         }
 
         /** Verifies the case of start surface -> a tab -> tab switcher -> start surface. */
-        StartSurfaceTestUtils.clickFirstTabInCarousel();
+        onViewWaiting(withId(R.id.single_tab_view)).perform(click());
         assertFalse(bottomSheetTestSupport.hasSuppressionTokens());
 
         TabUiTestHelper.enterTabSwitcher(cta);
@@ -707,7 +646,7 @@
         assertFalse(bottomSheetTestSupport.hasSuppressionTokens());
 
         /** Verifies the case of navigating to a tab -> start surface -> tab switcher. */
-        StartSurfaceTestUtils.clickFirstTabInCarousel();
+        onViewWaiting(withId(R.id.single_tab_view)).perform(click());
         assertFalse(bottomSheetTestSupport.hasSuppressionTokens());
 
         StartSurfaceTestUtils.pressHomePageButton(cta);
@@ -1038,7 +977,7 @@
     }
 
     /**
-     * Tests that on navigation from start surface using carousel tab switcher shouldn't use spare
+     * Tests that on navigation from start surface using single tab switcher shouldn't use spare
      * tab.
      */
     @Test
@@ -1046,7 +985,7 @@
     @Feature({"StartSurface"})
     @EnableFeatures({ChromeFeatureList.SPARE_TAB, ChromeFeatureList.START_SURFACE_SPARE_TAB})
     @CommandLineFlags.Add({START_SURFACE_TEST_SINGLE_ENABLED_PARAMS})
-    public void test_DoesntUseSpareTabForNavigationFromCarouselTabSwitcher() {
+    public void test_DoesntUseSpareTabForNavigationFromSingleTabSwitcher() {
         if (!mImmediateReturn) return;
 
         ChromeTabbedActivity cta = mActivityTestRule.getActivity();
@@ -1061,7 +1000,7 @@
                 });
 
         // Navigate from StartSurface using carousel tab switcher.
-        StartSurfaceTestUtils.clickFirstTabInCarousel();
+        onViewWaiting(withId(R.id.single_tab_view)).perform(click());
         LayoutTestUtils.waitForLayout(cta.getLayoutManager(), LayoutType.BROWSING);
 
         // This shouldn't use spare tab and deletes spare tab once the start surface gets hidden.
@@ -1163,7 +1102,6 @@
         onViewWaiting(withId(R.id.tab_switcher_toolbar));
         onViewWaiting(withId(R.id.search_box_text)).check(matches(isDisplayed()));
         onViewWaiting(withId(R.id.mv_tiles_container)).check(matches(isDisplayed()));
-        onViewWaiting(withId(R.id.tab_switcher_title)).check(matches(isDisplayed()));
         onViewWaiting(withId(R.id.tab_switcher_module_container)).check(matches(isDisplayed()));
         onViewWaiting(withId(R.id.tasks_surface_body));
 
diff --git a/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceTestUtils.java b/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceTestUtils.java
index bfcd095..6175fa07 100644
--- a/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceTestUtils.java
+++ b/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceTestUtils.java
@@ -5,12 +5,10 @@
 package org.chromium.chrome.features.start_surface;
 
 import static androidx.test.espresso.Espresso.onView;
-import static androidx.test.espresso.action.ViewActions.click;
 import static androidx.test.espresso.assertion.ViewAssertions.matches;
 import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed;
 import static androidx.test.espresso.matcher.ViewMatchers.withEffectiveVisibility;
 import static androidx.test.espresso.matcher.ViewMatchers.withId;
-import static androidx.test.espresso.matcher.ViewMatchers.withParent;
 
 import static org.hamcrest.CoreMatchers.allOf;
 import static org.hamcrest.CoreMatchers.not;
@@ -32,7 +30,6 @@
 import androidx.annotation.Nullable;
 import androidx.test.espresso.UiController;
 import androidx.test.espresso.ViewAction;
-import androidx.test.espresso.contrib.RecyclerViewActions;
 import androidx.test.espresso.matcher.ViewMatchers;
 import androidx.test.platform.app.InstrumentationRegistry;
 import androidx.test.uiautomator.UiDevice;
@@ -104,8 +101,8 @@
                     + StartSurfaceConfiguration.START_SURFACE_RETURN_TIME_SECONDS_PARAM
                     + "/0";
     public static final String START_SURFACE_TEST_SINGLE_ENABLED_PARAMS =
-            "force-fieldtrial-params=Study.Group:show_last_active_tab_only/false"
-                    + "/open_ntp_instead_of_start/false/open_start_as_homepage/true";
+            "force-fieldtrial-params=Study.Group:"
+                    + "open_ntp_instead_of_start/false/open_start_as_homepage/true";
     public static final String START_SURFACE_TEST_BASE_PARAMS =
             "force-fieldtrial-params=Study.Group:";
 
@@ -627,23 +624,6 @@
         TabUiTestHelper.verifyTabModelTabCount(cta, currentTabCount + 1, 0);
     }
 
-    /** Click the first tab in carousel tab switcher. */
-    public static void clickFirstTabInCarousel() {
-        clickTabInCarousel(0);
-    }
-
-    /**
-     * Click the tab at specific position in carousel tab switcher.
-     * @param position The position of the tab which is clicked.
-     */
-    public static void clickTabInCarousel(int position) {
-        onViewWaiting(
-                        allOf(
-                                withParent(withId(R.id.tab_switcher_module_container)),
-                                withId(R.id.tab_list_recycler_view)))
-                .perform(RecyclerViewActions.actionOnItemAtPosition(position, click()));
-    }
-
     /**
      * Click the tab switcher button to navigate to tab switcher surface.
      * @param cta The ChromeTabbedActivity under test.
@@ -658,23 +638,6 @@
     }
 
     /**
-     * Click "more_tabs" to navigate to tab switcher surface.
-     * @param cta The ChromeTabbedActivity under test.
-     */
-    public static void clickMoreTabs(ChromeTabbedActivity cta) {
-        // Note that onView(R.id.more_tabs).perform(click()) can not be used since it requires 90
-        // percent of the view's area is displayed to the users. However, this view has negative
-        // margin which makes the percentage is less than 90.
-        // TODO(crbug.com/1186752): Investigate whether this would be a problem for real users.
-        try {
-            TestThreadUtils.runOnUiThreadBlocking(
-                    () -> cta.findViewById(R.id.more_tabs).performClick());
-        } catch (ExecutionException e) {
-            fail("Failed to tap 'more tabs' " + e.toString());
-        }
-    }
-
-    /**
      * Set MV tiles on start surface by setting suggestionsDeps.
      * @param suggestionsDeps The SuggestionsDependenciesRule under test.
      * @return The MostVisitedSites the test used.
@@ -736,12 +699,6 @@
         ChromeApplicationTestUtils.waitUntilChromeInBackground();
     }
 
-    /** Gets the "tab_list_recycler_view" from the carousel tab switcher module on Start surface. */
-    static View getCarouselTabSwitcherTabListView(ChromeTabbedActivity cta) {
-        return cta.findViewById(R.id.tab_switcher_module_container)
-                .findViewById(R.id.tab_list_recycler_view);
-    }
-
     /** Presses the back button and verifies that Chrome goes to the background. */
     public static void pressBackAndVerifyChromeToBackground(ChromeTabbedActivityTestRule testRule) {
         // Verifies Chrome is closed.
diff --git a/chrome/android/features/start_surface/junit/src/org/chromium/chrome/features/start_surface/StartSurfaceMediatorUnitTest.java b/chrome/android/features/start_surface/junit/src/org/chromium/chrome/features/start_surface/StartSurfaceMediatorUnitTest.java
index 93965625..a91fe9f 100644
--- a/chrome/android/features/start_surface/junit/src/org/chromium/chrome/features/start_surface/StartSurfaceMediatorUnitTest.java
+++ b/chrome/android/features/start_surface/junit/src/org/chromium/chrome/features/start_surface/StartSurfaceMediatorUnitTest.java
@@ -45,14 +45,12 @@
 import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.IS_INCOGNITO_DESCRIPTION_VISIBLE;
 import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.IS_LENS_BUTTON_VISIBLE;
 import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.IS_SURFACE_BODY_VISIBLE;
-import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.IS_TAB_CAROUSEL_TITLE_VISIBLE;
-import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.IS_TAB_CAROUSEL_VISIBLE;
+import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.IS_TAB_CARD_VISIBLE;
 import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.IS_VOICE_RECOGNITION_BUTTON_VISIBLE;
 import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.MV_TILES_CONTAINER_LEFT_RIGHT_MARGIN;
 import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.MV_TILES_CONTAINER_TOP_MARGIN;
 import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.MV_TILES_VISIBLE;
 import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.SINGLE_TAB_TOP_MARGIN;
-import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.TAB_SWITCHER_TITLE_TOP_MARGIN;
 import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.TASKS_SURFACE_BODY_TOP_MARGIN;
 import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.VOICE_SEARCH_BUTTON_CLICK_LISTENER;
 
@@ -152,7 +150,7 @@
 
     @Rule public JniMocker mJniMocker = new JniMocker();
     @Rule public TestRule mProcessor = new Features.JUnitProcessor();
-    @Mock private TabSwitcher.Controller mCarouselOrSingleTabSwitcherModuleController;
+    @Mock private TabSwitcher.Controller mSingleTabSwitcherModuleController;
     @Mock private TabModelSelector mTabModelSelector;
     @Mock private Tab mTab;
     @Mock private TabModel mNormalTabModel;
@@ -183,13 +181,11 @@
     @Mock private OnClickListener mTabSwitcherClickHandler;
     @Mock private TabSwitcher mTabSwitcherModule;
     @Mock private TabListDelegate mTabListDelegate;
-    @Mock private TabSwitcher.Controller mSingleTabSwitcherModuleController;
     @Captor private ArgumentCaptor<TabModelSelectorObserver> mTabModelSelectorObserverCaptor;
     @Captor private ArgumentCaptor<TabModelObserver> mTabModelObserverCaptor;
 
     @Captor
-    private ArgumentCaptor<TabSwitcherViewObserver>
-            mCarouselTabSwitcherModuleVisibilityObserverCaptor;
+    private ArgumentCaptor<TabSwitcherViewObserver> mCardTabSwitcherModuleVisibilityObserverCaptor;
 
     @Captor private ArgumentCaptor<UrlFocusChangeListener> mUrlFocusChangeListenerCaptor;
 
@@ -204,11 +200,9 @@
     @Captor private ArgumentCaptor<TemplateUrlServiceObserver> mTemplateUrlServiceObserverCaptor;
 
     private final ObservableSupplierImpl<Boolean>
-            mCarouselTabSwitcherModuleControllerBackPressStateSupplier =
-                    new ObservableSupplierImpl<>();
+            mCardTabSwitcherModuleControllerBackPressStateSupplier = new ObservableSupplierImpl<>();
     private final ObservableSupplierImpl<Boolean>
-            mCarouselTabSwitcherModuleControllerDialogVisibleSupplier =
-                    new ObservableSupplierImpl<>();
+            mCardTabSwitcherModuleControllerDialogVisibleSupplier = new ObservableSupplierImpl<>();
     private final ObservableSupplierImpl<Boolean> mSecondaryControllerBackPressStateSupplier =
             new ObservableSupplierImpl<>();
     private final ObservableSupplierImpl<Boolean> mSecondaryControllerDialogVisibleSupplier =
@@ -250,14 +244,14 @@
         when(mTabModelFilterProvider.getTabModelFilter(false)).thenReturn(mNormalTabModelFilter);
         when(mTabModelFilterProvider.getTabModelFilter(true)).thenReturn(mNormalTabModelFilter);
 
-        doReturn(TabSwitcherType.CAROUSEL)
-                .when(mCarouselOrSingleTabSwitcherModuleController)
+        doReturn(TabSwitcherType.SINGLE)
+                .when(mSingleTabSwitcherModuleController)
                 .getTabSwitcherType();
-        doReturn(mCarouselTabSwitcherModuleControllerBackPressStateSupplier)
-                .when(mCarouselOrSingleTabSwitcherModuleController)
+        doReturn(mCardTabSwitcherModuleControllerBackPressStateSupplier)
+                .when(mSingleTabSwitcherModuleController)
                 .getHandleBackPressChangedSupplier();
-        doReturn(mCarouselTabSwitcherModuleControllerDialogVisibleSupplier)
-                .when(mCarouselOrSingleTabSwitcherModuleController)
+        doReturn(mCardTabSwitcherModuleControllerDialogVisibleSupplier)
+                .when(mSingleTabSwitcherModuleController)
                 .isDialogVisibleSupplier();
         doReturn(mSecondaryTasksSurfaceController)
                 .when(mSecondaryTasksSurfaceInitializer)
@@ -292,21 +286,21 @@
         StartSurfaceMediator mediator =
                 createStartSurfaceMediator(/* isStartSurfaceEnabled= */ false);
         verify(mTabModelSelector, never()).addObserver(mTabModelSelectorObserverCaptor.capture());
-        verify(mCarouselOrSingleTabSwitcherModuleController)
+        verify(mSingleTabSwitcherModuleController)
                 .addTabSwitcherViewObserver(
-                        mCarouselTabSwitcherModuleVisibilityObserverCaptor.capture());
+                        mCardTabSwitcherModuleVisibilityObserverCaptor.capture());
 
         mediator.showOverview(false);
-        verify(mCarouselOrSingleTabSwitcherModuleController).showTabSwitcherView(eq(false));
+        verify(mSingleTabSwitcherModuleController).showTabSwitcherView(eq(false));
 
-        mCarouselTabSwitcherModuleVisibilityObserverCaptor.getValue().startedShowing();
-        mCarouselTabSwitcherModuleVisibilityObserverCaptor.getValue().finishedShowing();
+        mCardTabSwitcherModuleVisibilityObserverCaptor.getValue().startedShowing();
+        mCardTabSwitcherModuleVisibilityObserverCaptor.getValue().finishedShowing();
 
         mediator.hideTabSwitcherView(true);
-        verify(mCarouselOrSingleTabSwitcherModuleController).hideTabSwitcherView(eq(true));
+        verify(mSingleTabSwitcherModuleController).hideTabSwitcherView(eq(true));
 
-        mCarouselTabSwitcherModuleVisibilityObserverCaptor.getValue().startedHiding();
-        mCarouselTabSwitcherModuleVisibilityObserverCaptor.getValue().finishedHiding();
+        mCardTabSwitcherModuleVisibilityObserverCaptor.getValue().startedHiding();
+        mCardTabSwitcherModuleVisibilityObserverCaptor.getValue().finishedHiding();
 
         // TODO(crbug.com/1020223): Test the other SurfaceMode.NO_START_SURFACE operations.
     }
@@ -319,9 +313,9 @@
 
         StartSurfaceMediator mediator =
                 createStartSurfaceMediator(/* isStartSurfaceEnabled= */ true);
-        verify(mCarouselOrSingleTabSwitcherModuleController)
+        verify(mSingleTabSwitcherModuleController)
                 .addTabSwitcherViewObserver(
-                        mCarouselTabSwitcherModuleVisibilityObserverCaptor.capture());
+                        mCardTabSwitcherModuleVisibilityObserverCaptor.capture());
 
         assertThat(mediator.getStartSurfaceState(), equalTo(StartSurfaceState.NOT_SHOWN));
         // Sets the current StartSurfaceState to SHOWING_START before calling the
@@ -330,7 +324,7 @@
         // {@link StartSurfaceMediator#showOverview()}.
         showHomepageAndVerify(mediator, StartSurfaceState.SHOWING_START);
 
-        verify(mCarouselOrSingleTabSwitcherModuleController).showTabSwitcherView(eq(false));
+        verify(mSingleTabSwitcherModuleController).showTabSwitcherView(eq(false));
         verify(mOmniboxStub, times(2))
                 .addUrlFocusChangeListener(mUrlFocusChangeListenerCaptor.capture());
         assertThat(mPropertyModel.get(IS_INCOGNITO), equalTo(false));
@@ -339,8 +333,8 @@
         assertThat(mPropertyModel.get(MV_TILES_VISIBLE), equalTo(true));
         assertThat(mPropertyModel.get(IS_SHOWING_OVERVIEW), equalTo(true));
 
-        mCarouselTabSwitcherModuleVisibilityObserverCaptor.getValue().startedShowing();
-        mCarouselTabSwitcherModuleVisibilityObserverCaptor.getValue().finishedShowing();
+        mCardTabSwitcherModuleVisibilityObserverCaptor.getValue().startedShowing();
+        mCardTabSwitcherModuleVisibilityObserverCaptor.getValue().finishedShowing();
 
         UrlFocusChangeListener urlFocusChangeListener =
                 mUrlFocusChangeListenerCaptor.getAllValues().get(1);
@@ -352,20 +346,20 @@
         assertThat(mPropertyModel.get(IS_VOICE_RECOGNITION_BUTTON_VISIBLE), equalTo(true));
 
         mediator.hideTabSwitcherView(true);
-        verify(mCarouselOrSingleTabSwitcherModuleController).hideTabSwitcherView(eq(true));
+        verify(mSingleTabSwitcherModuleController).hideTabSwitcherView(eq(true));
 
-        mCarouselTabSwitcherModuleVisibilityObserverCaptor.getValue().startedHiding();
+        mCardTabSwitcherModuleVisibilityObserverCaptor.getValue().startedHiding();
         assertThat(mPropertyModel.get(IS_SHOWING_OVERVIEW), equalTo(false));
         verify(mOmniboxStub).removeUrlFocusChangeListener(mUrlFocusChangeListenerCaptor.getValue());
 
-        mCarouselTabSwitcherModuleVisibilityObserverCaptor.getValue().finishedHiding();
+        mCardTabSwitcherModuleVisibilityObserverCaptor.getValue().finishedHiding();
 
         // TODO(crbug.com/1020223): Test the other SurfaceMode.SINGLE_PANE operations.
     }
 
     // TODO(crbug.com/1020223): Test SurfaceMode.SINGLE_PANE and SurfaceMode.TWO_PANES modes.
     @Test
-    public void hideTabCarouselWithNoTabs() {
+    public void hideTabCardWithNoTabs() {
         doReturn(false).when(mTabModelSelector).isIncognitoSelected();
         doReturn(mVoiceRecognitionHandler).when(mOmniboxStub).getVoiceRecognitionHandler();
         doReturn(true).when(mVoiceRecognitionHandler).isVoiceSearchEnabled();
@@ -377,12 +371,11 @@
         showHomepageAndVerify(mediator, StartSurfaceState.SHOWN_HOMEPAGE);
         verify(mNormalTabModel).addObserver(mTabModelObserverCaptor.capture());
         assertThat(mPropertyModel.get(IS_SHOWING_OVERVIEW), equalTo(true));
-        assertThat(mPropertyModel.get(IS_TAB_CAROUSEL_VISIBLE), equalTo(false));
-        assertThat(mPropertyModel.get(IS_TAB_CAROUSEL_TITLE_VISIBLE), equalTo(false));
+        assertThat(mPropertyModel.get(IS_TAB_CARD_VISIBLE), equalTo(false));
     }
 
     @Test
-    public void hideTabCarouselWhenClosingLastTab() {
+    public void hideTabCardWhenClosingLastTab() {
         doReturn(false).when(mTabModelSelector).isIncognitoSelected();
         doReturn(mVoiceRecognitionHandler).when(mOmniboxStub).getVoiceRecognitionHandler();
         doReturn(true).when(mVoiceRecognitionHandler).isVoiceSearchEnabled();
@@ -395,23 +388,20 @@
         showHomepageAndVerify(mediator, StartSurfaceState.SHOWING_HOMEPAGE);
         verify(mNormalTabModel).addObserver(mTabModelObserverCaptor.capture());
         assertThat(mPropertyModel.get(IS_SHOWING_OVERVIEW), equalTo(true));
-        assertThat(mPropertyModel.get(IS_TAB_CAROUSEL_VISIBLE), equalTo(true));
-        assertThat(mPropertyModel.get(IS_TAB_CAROUSEL_TITLE_VISIBLE), equalTo(true));
+        assertThat(mPropertyModel.get(IS_TAB_CARD_VISIBLE), equalTo(true));
 
         mTabModelObserverCaptor.getValue().willCloseTab(mock(Tab.class), false, true);
         assertThat(mPropertyModel.get(IS_SHOWING_OVERVIEW), equalTo(true));
-        assertThat(mPropertyModel.get(IS_TAB_CAROUSEL_VISIBLE), equalTo(true));
-        assertThat(mPropertyModel.get(IS_TAB_CAROUSEL_TITLE_VISIBLE), equalTo(true));
+        assertThat(mPropertyModel.get(IS_TAB_CARD_VISIBLE), equalTo(true));
 
         doReturn(1).when(mNormalTabModel).getCount();
         mTabModelObserverCaptor.getValue().willCloseTab(mock(Tab.class), false, true);
         assertThat(mPropertyModel.get(IS_SHOWING_OVERVIEW), equalTo(true));
-        assertThat(mPropertyModel.get(IS_TAB_CAROUSEL_VISIBLE), equalTo(false));
-        assertThat(mPropertyModel.get(IS_TAB_CAROUSEL_TITLE_VISIBLE), equalTo(false));
+        assertThat(mPropertyModel.get(IS_TAB_CARD_VISIBLE), equalTo(false));
     }
 
     @Test
-    public void hideTabCarouselWhenClosingAndSelectingNtpTab() {
+    public void hideTabCardWhenClosingAndSelectingNtpTab() {
         doReturn(false).when(mTabModelSelector).isIncognitoSelected();
         doReturn(mVoiceRecognitionHandler).when(mOmniboxStub).getVoiceRecognitionHandler();
         doReturn(true).when(mVoiceRecognitionHandler).isVoiceSearchEnabled();
@@ -424,26 +414,23 @@
         showHomepageAndVerify(mediator, StartSurfaceState.SHOWING_HOMEPAGE);
         verify(mNormalTabModel).addObserver(mTabModelObserverCaptor.capture());
         assertThat(mPropertyModel.get(IS_SHOWING_OVERVIEW), equalTo(true));
-        assertThat(mPropertyModel.get(IS_TAB_CAROUSEL_VISIBLE), equalTo(true));
-        assertThat(mPropertyModel.get(IS_TAB_CAROUSEL_TITLE_VISIBLE), equalTo(true));
+        assertThat(mPropertyModel.get(IS_TAB_CARD_VISIBLE), equalTo(true));
 
         Tab tab1 = mock(Tab.class);
         doReturn(JUnitTestGURLs.URL_1).when(tab1).getUrl();
         mTabModelObserverCaptor.getValue().didSelectTab(tab1, TabSelectionType.FROM_CLOSE, 1);
         assertThat(mPropertyModel.get(IS_SHOWING_OVERVIEW), equalTo(true));
-        assertThat(mPropertyModel.get(IS_TAB_CAROUSEL_VISIBLE), equalTo(true));
-        assertThat(mPropertyModel.get(IS_TAB_CAROUSEL_TITLE_VISIBLE), equalTo(true));
+        assertThat(mPropertyModel.get(IS_TAB_CARD_VISIBLE), equalTo(true));
 
         Tab ntpTab = mock(Tab.class);
         doReturn(JUnitTestGURLs.NTP_URL).when(ntpTab).getUrl();
         mTabModelObserverCaptor.getValue().didSelectTab(ntpTab, TabSelectionType.FROM_CLOSE, 2);
         assertThat(mPropertyModel.get(IS_SHOWING_OVERVIEW), equalTo(true));
-        assertThat(mPropertyModel.get(IS_TAB_CAROUSEL_VISIBLE), equalTo(false));
-        assertThat(mPropertyModel.get(IS_TAB_CAROUSEL_TITLE_VISIBLE), equalTo(false));
+        assertThat(mPropertyModel.get(IS_TAB_CARD_VISIBLE), equalTo(false));
     }
 
     @Test
-    public void reshowTabCarouselWhenTabClosureUndone() {
+    public void reshowTabCardWhenTabClosureUndone() {
         doReturn(false).when(mTabModelSelector).isIncognitoSelected();
         doReturn(mVoiceRecognitionHandler).when(mOmniboxStub).getVoiceRecognitionHandler();
         doReturn(true).when(mVoiceRecognitionHandler).isVoiceSearchEnabled();
@@ -460,13 +447,11 @@
 
         mTabModelObserverCaptor.getValue().willCloseTab(mock(Tab.class), false, true);
         assertThat(mPropertyModel.get(IS_SHOWING_OVERVIEW), equalTo(true));
-        assertThat(mPropertyModel.get(IS_TAB_CAROUSEL_VISIBLE), equalTo(false));
-        assertThat(mPropertyModel.get(IS_TAB_CAROUSEL_TITLE_VISIBLE), equalTo(false));
+        assertThat(mPropertyModel.get(IS_TAB_CARD_VISIBLE), equalTo(false));
 
         mTabModelObserverCaptor.getValue().tabClosureUndone(mock(Tab.class));
         assertThat(mPropertyModel.get(IS_SHOWING_OVERVIEW), equalTo(true));
-        assertThat(mPropertyModel.get(IS_TAB_CAROUSEL_VISIBLE), equalTo(true));
-        assertThat(mPropertyModel.get(IS_TAB_CAROUSEL_TITLE_VISIBLE), equalTo(true));
+        assertThat(mPropertyModel.get(IS_TAB_CARD_VISIBLE), equalTo(true));
 
         doReturn(2).when(mNormalTabModel).getCount();
         mediator.setStartSurfaceState(StartSurfaceState.SHOWN_TABSWITCHER);
@@ -474,8 +459,7 @@
         mTabModelObserverCaptor.getValue().tabClosureUndone(mock(Tab.class));
         doReturn(0).when(mNormalTabModel).getCount();
         mTabModelObserverCaptor.getValue().willCloseTab(mock(Tab.class), false, true);
-        assertThat(mPropertyModel.get(IS_TAB_CAROUSEL_VISIBLE), equalTo(false));
-        assertThat(mPropertyModel.get(IS_TAB_CAROUSEL_TITLE_VISIBLE), equalTo(false));
+        assertThat(mPropertyModel.get(IS_TAB_CARD_VISIBLE), equalTo(false));
         assertThat(mPropertyModel.get(IS_SECONDARY_SURFACE_VISIBLE), equalTo(true));
     }
 
@@ -601,19 +585,17 @@
         assertThat(mPropertyModel.get(IS_INCOGNITO), equalTo(false));
         assertThat(mPropertyModel.get(IS_EXPLORE_SURFACE_VISIBLE), equalTo(true));
         assertThat(mPropertyModel.get(MV_TILES_VISIBLE), equalTo(true));
-        assertThat(mPropertyModel.get(IS_TAB_CAROUSEL_VISIBLE), equalTo(true));
-        assertThat(mPropertyModel.get(IS_TAB_CAROUSEL_TITLE_VISIBLE), equalTo(true));
+        assertThat(mPropertyModel.get(IS_TAB_CARD_VISIBLE), equalTo(true));
         assertThat(mPropertyModel.get(IS_SECONDARY_SURFACE_VISIBLE), equalTo(false));
 
         mediator.setSecondaryTasksSurfacePropertyModel(mSecondaryTasksSurfacePropertyModel);
-        mediator.onClick(mock(View.class));
+        mediator.setStartSurfaceState(StartSurfaceState.SHOWN_TABSWITCHER);
         assertThat(mediator.getStartSurfaceState(), equalTo(StartSurfaceState.SHOWN_TABSWITCHER));
         assertThat(mPropertyModel.get(IS_SHOWING_OVERVIEW), equalTo(true));
         assertThat(mPropertyModel.get(IS_INCOGNITO), equalTo(false));
         assertThat(mPropertyModel.get(IS_EXPLORE_SURFACE_VISIBLE), equalTo(false));
         assertThat(mPropertyModel.get(MV_TILES_VISIBLE), equalTo(false));
-        assertThat(mPropertyModel.get(IS_TAB_CAROUSEL_VISIBLE), equalTo(false));
-        assertThat(mPropertyModel.get(IS_TAB_CAROUSEL_TITLE_VISIBLE), equalTo(false));
+        assertThat(mPropertyModel.get(IS_TAB_CARD_VISIBLE), equalTo(false));
         assertThat(mPropertyModel.get(IS_SECONDARY_SURFACE_VISIBLE), equalTo(true));
         assertThat(
                 mSecondaryTasksSurfacePropertyModel.get(IS_FAKE_SEARCH_BOX_VISIBLE),
@@ -626,8 +608,7 @@
         assertThat(mPropertyModel.get(IS_INCOGNITO), equalTo(false));
         assertThat(mPropertyModel.get(IS_EXPLORE_SURFACE_VISIBLE), equalTo(true));
         assertThat(mPropertyModel.get(MV_TILES_VISIBLE), equalTo(true));
-        assertThat(mPropertyModel.get(IS_TAB_CAROUSEL_VISIBLE), equalTo(true));
-        assertThat(mPropertyModel.get(IS_TAB_CAROUSEL_TITLE_VISIBLE), equalTo(true));
+        assertThat(mPropertyModel.get(IS_TAB_CARD_VISIBLE), equalTo(true));
         assertThat(mPropertyModel.get(IS_SECONDARY_SURFACE_VISIBLE), equalTo(false));
 
         mediator.startedHiding();
@@ -655,8 +636,7 @@
         assertThat(mPropertyModel.get(IS_INCOGNITO), equalTo(true));
         assertThat(mPropertyModel.get(IS_EXPLORE_SURFACE_VISIBLE), equalTo(false));
         assertThat(mPropertyModel.get(MV_TILES_VISIBLE), equalTo(false));
-        assertThat(mPropertyModel.get(IS_TAB_CAROUSEL_VISIBLE), equalTo(false));
-        assertThat(mPropertyModel.get(IS_TAB_CAROUSEL_TITLE_VISIBLE), equalTo(false));
+        assertThat(mPropertyModel.get(IS_TAB_CARD_VISIBLE), equalTo(false));
         assertThat(mPropertyModel.get(IS_SECONDARY_SURFACE_VISIBLE), equalTo(true));
         assertThat(
                 mSecondaryTasksSurfacePropertyModel.get(IS_FAKE_SEARCH_BOX_VISIBLE),
@@ -688,8 +668,7 @@
         assertThat(mPropertyModel.get(IS_INCOGNITO), equalTo(false));
         assertThat(mPropertyModel.get(IS_EXPLORE_SURFACE_VISIBLE), equalTo(true));
         assertThat(mPropertyModel.get(MV_TILES_VISIBLE), equalTo(true));
-        assertThat(mPropertyModel.get(IS_TAB_CAROUSEL_VISIBLE), equalTo(true));
-        assertThat(mPropertyModel.get(IS_TAB_CAROUSEL_TITLE_VISIBLE), equalTo(true));
+        assertThat(mPropertyModel.get(IS_TAB_CARD_VISIBLE), equalTo(true));
         assertThat(mPropertyModel.get(IS_SECONDARY_SURFACE_VISIBLE), equalTo(false));
 
         doReturn(true).when(mTabModelSelector).isIncognitoSelected();
@@ -708,8 +687,7 @@
         assertThat(mPropertyModel.get(IS_INCOGNITO), equalTo(false));
         assertThat(mPropertyModel.get(IS_EXPLORE_SURFACE_VISIBLE), equalTo(true));
         assertThat(mPropertyModel.get(MV_TILES_VISIBLE), equalTo(true));
-        assertThat(mPropertyModel.get(IS_TAB_CAROUSEL_VISIBLE), equalTo(true));
-        assertThat(mPropertyModel.get(IS_TAB_CAROUSEL_TITLE_VISIBLE), equalTo(true));
+        assertThat(mPropertyModel.get(IS_TAB_CARD_VISIBLE), equalTo(true));
         assertThat(mPropertyModel.get(IS_SECONDARY_SURFACE_VISIBLE), equalTo(false));
     }
 
@@ -735,20 +713,18 @@
         assertThat(mPropertyModel.get(IS_INCOGNITO), equalTo(false));
         assertThat(mPropertyModel.get(IS_EXPLORE_SURFACE_VISIBLE), equalTo(true));
         assertThat(mPropertyModel.get(MV_TILES_VISIBLE), equalTo(true));
-        assertThat(mPropertyModel.get(IS_TAB_CAROUSEL_VISIBLE), equalTo(true));
-        assertThat(mPropertyModel.get(IS_TAB_CAROUSEL_TITLE_VISIBLE), equalTo(true));
+        assertThat(mPropertyModel.get(IS_TAB_CARD_VISIBLE), equalTo(true));
         assertThat(mPropertyModel.get(IS_SECONDARY_SURFACE_VISIBLE), equalTo(false));
         assertThat(mPropertyModel.get(EXPLORE_SURFACE_COORDINATOR), equalTo(null));
 
         mediator.setSecondaryTasksSurfacePropertyModel(mSecondaryTasksSurfacePropertyModel);
-        mediator.onClick(mock(View.class));
+        mediator.setStartSurfaceState(StartSurfaceState.SHOWN_TABSWITCHER);
         assertThat(mediator.getStartSurfaceState(), equalTo(StartSurfaceState.SHOWN_TABSWITCHER));
         assertThat(mPropertyModel.get(IS_SHOWING_OVERVIEW), equalTo(true));
         assertThat(mPropertyModel.get(IS_INCOGNITO), equalTo(false));
         assertThat(mPropertyModel.get(IS_EXPLORE_SURFACE_VISIBLE), equalTo(false));
         assertThat(mPropertyModel.get(MV_TILES_VISIBLE), equalTo(false));
-        assertThat(mPropertyModel.get(IS_TAB_CAROUSEL_VISIBLE), equalTo(false));
-        assertThat(mPropertyModel.get(IS_TAB_CAROUSEL_TITLE_VISIBLE), equalTo(false));
+        assertThat(mPropertyModel.get(IS_TAB_CARD_VISIBLE), equalTo(false));
         assertThat(mPropertyModel.get(IS_SECONDARY_SURFACE_VISIBLE), equalTo(true));
         assertThat(
                 mSecondaryTasksSurfacePropertyModel.get(IS_FAKE_SEARCH_BOX_VISIBLE),
@@ -762,8 +738,7 @@
         assertThat(mPropertyModel.get(IS_INCOGNITO), equalTo(false));
         assertThat(mPropertyModel.get(IS_EXPLORE_SURFACE_VISIBLE), equalTo(true));
         assertThat(mPropertyModel.get(MV_TILES_VISIBLE), equalTo(true));
-        assertThat(mPropertyModel.get(IS_TAB_CAROUSEL_VISIBLE), equalTo(true));
-        assertThat(mPropertyModel.get(IS_TAB_CAROUSEL_TITLE_VISIBLE), equalTo(true));
+        assertThat(mPropertyModel.get(IS_TAB_CARD_VISIBLE), equalTo(true));
         assertThat(mPropertyModel.get(IS_SECONDARY_SURFACE_VISIBLE), equalTo(false));
         assertThat(mPropertyModel.get(EXPLORE_SURFACE_COORDINATOR), equalTo(null));
 
@@ -791,8 +766,7 @@
         assertThat(mPropertyModel.get(IS_INCOGNITO), equalTo(false));
         assertThat(mPropertyModel.get(IS_EXPLORE_SURFACE_VISIBLE), equalTo(true));
         assertThat(mPropertyModel.get(MV_TILES_VISIBLE), equalTo(true));
-        assertThat(mPropertyModel.get(IS_TAB_CAROUSEL_VISIBLE), equalTo(true));
-        assertThat(mPropertyModel.get(IS_TAB_CAROUSEL_TITLE_VISIBLE), equalTo(true));
+        assertThat(mPropertyModel.get(IS_TAB_CARD_VISIBLE), equalTo(true));
         assertThat(mPropertyModel.get(IS_SECONDARY_SURFACE_VISIBLE), equalTo(false));
         assertThat(mPropertyModel.get(EXPLORE_SURFACE_COORDINATOR), equalTo(null));
 
@@ -845,9 +819,9 @@
 
         StartSurfaceMediator mediator =
                 createStartSurfaceMediator(/* isStartSurfaceEnabled= */ true);
-        verify(mCarouselOrSingleTabSwitcherModuleController)
+        verify(mSingleTabSwitcherModuleController)
                 .addTabSwitcherViewObserver(
-                        mCarouselTabSwitcherModuleVisibilityObserverCaptor.capture());
+                        mCardTabSwitcherModuleVisibilityObserverCaptor.capture());
         mediator.setSecondaryTasksSurfacePropertyModel(mSecondaryTasksSurfacePropertyModel);
         assertThat(mediator.getStartSurfaceState(), equalTo(StartSurfaceState.NOT_SHOWN));
 
@@ -859,8 +833,8 @@
         assertThat(mPropertyModel.get(BOTTOM_BAR_HEIGHT), equalTo(30));
         assertThat(mSecondaryTasksSurfacePropertyModel.get(BOTTOM_BAR_HEIGHT), equalTo(0));
 
-        mCarouselTabSwitcherModuleVisibilityObserverCaptor.getValue().startedShowing();
-        mCarouselTabSwitcherModuleVisibilityObserverCaptor.getValue().finishedShowing();
+        mCardTabSwitcherModuleVisibilityObserverCaptor.getValue().startedShowing();
+        mCardTabSwitcherModuleVisibilityObserverCaptor.getValue().finishedShowing();
 
         mBrowserControlsStateProviderCaptor.getValue().onBottomControlsHeightChanged(0, 0);
         assertThat(mPropertyModel.get(BOTTOM_BAR_HEIGHT), equalTo(0));
@@ -871,7 +845,7 @@
         assertThat(mSecondaryTasksSurfacePropertyModel.get(BOTTOM_BAR_HEIGHT), equalTo(0));
 
         mediator.hideTabSwitcherView(false);
-        mCarouselTabSwitcherModuleVisibilityObserverCaptor.getValue().startedHiding();
+        mCardTabSwitcherModuleVisibilityObserverCaptor.getValue().startedHiding();
         verify(mBrowserControlsStateProvider)
                 .removeObserver(mBrowserControlsStateProviderCaptor.getValue());
     }
@@ -980,9 +954,9 @@
 
         StartSurfaceMediator mediator =
                 createStartSurfaceMediator(/* isStartSurfaceEnabled= */ true);
-        verify(mCarouselOrSingleTabSwitcherModuleController)
+        verify(mSingleTabSwitcherModuleController)
                 .addTabSwitcherViewObserver(
-                        mCarouselTabSwitcherModuleVisibilityObserverCaptor.capture());
+                        mCardTabSwitcherModuleVisibilityObserverCaptor.capture());
 
         if (!ChromeFeatureList.sStartSurfaceRefactor.isEnabled()) {
             assertThat(mediator.getStartSurfaceState(), equalTo(StartSurfaceState.NOT_SHOWN));
@@ -990,7 +964,7 @@
         }
         showHomepageAndVerify(mediator, StartSurfaceState.SHOWN_HOMEPAGE);
         verify(mTabModelSelector).addObserver(mTabModelSelectorObserverCaptor.capture());
-        verify(mCarouselOrSingleTabSwitcherModuleController).showTabSwitcherView(eq(false));
+        verify(mSingleTabSwitcherModuleController).showTabSwitcherView(eq(false));
         verify(mOmniboxStub, times(2))
                 .addUrlFocusChangeListener(mUrlFocusChangeListenerCaptor.capture());
         assertThat(mPropertyModel.get(IS_FAKE_SEARCH_BOX_VISIBLE), equalTo(true));
@@ -1072,9 +1046,9 @@
 
         StartSurfaceMediator mediator =
                 createStartSurfaceMediator(/* isStartSurfaceEnabled= */ true);
-        verify(mCarouselOrSingleTabSwitcherModuleController)
+        verify(mSingleTabSwitcherModuleController)
                 .addTabSwitcherViewObserver(
-                        mCarouselTabSwitcherModuleVisibilityObserverCaptor.capture());
+                        mCardTabSwitcherModuleVisibilityObserverCaptor.capture());
 
         assertThat(mediator.getStartSurfaceState(), equalTo(StartSurfaceState.NOT_SHOWN));
         mediator.showOverview(false);
@@ -1089,15 +1063,15 @@
 
         StartSurfaceMediator mediator =
                 createStartSurfaceMediator(/* isStartSurfaceEnabled= */ true);
-        verify(mCarouselOrSingleTabSwitcherModuleController)
+        verify(mSingleTabSwitcherModuleController)
                 .addTabSwitcherViewObserver(
-                        mCarouselTabSwitcherModuleVisibilityObserverCaptor.capture());
+                        mCardTabSwitcherModuleVisibilityObserverCaptor.capture());
 
         assertThat(mediator.getStartSurfaceState(), equalTo(StartSurfaceState.NOT_SHOWN));
 
         mediator.setSecondaryTasksSurfacePropertyModel(mSecondaryTasksSurfacePropertyModel);
         showHomepageAndVerify(mediator, StartSurfaceState.SHOWING_HOMEPAGE);
-        verify(mCarouselOrSingleTabSwitcherModuleController).showTabSwitcherView(eq(false));
+        verify(mSingleTabSwitcherModuleController).showTabSwitcherView(eq(false));
         verify(mOmniboxStub, times(2))
                 .addUrlFocusChangeListener(mUrlFocusChangeListenerCaptor.capture());
         assertThat(mPropertyModel.get(IS_FAKE_SEARCH_BOX_VISIBLE), equalTo(true));
@@ -1134,19 +1108,18 @@
 
         StartSurfaceMediator mediator =
                 createStartSurfaceMediator(/* isStartSurfaceEnabled= */ true);
-        InOrder carouselTabSwitcherModuleController =
-                inOrder(mCarouselOrSingleTabSwitcherModuleController);
+        InOrder carouselTabSwitcherModuleController = inOrder(mSingleTabSwitcherModuleController);
         carouselTabSwitcherModuleController
-                .verify(mCarouselOrSingleTabSwitcherModuleController)
+                .verify(mSingleTabSwitcherModuleController)
                 .addTabSwitcherViewObserver(
-                        mCarouselTabSwitcherModuleVisibilityObserverCaptor.capture());
+                        mCardTabSwitcherModuleVisibilityObserverCaptor.capture());
 
         assertThat(mediator.getStartSurfaceState(), equalTo(StartSurfaceState.NOT_SHOWN));
 
         mediator.setSecondaryTasksSurfacePropertyModel(mSecondaryTasksSurfacePropertyModel);
         showHomepageAndVerify(mediator, StartSurfaceState.SHOWING_PREVIOUS);
         carouselTabSwitcherModuleController
-                .verify(mCarouselOrSingleTabSwitcherModuleController)
+                .verify(mSingleTabSwitcherModuleController)
                 .showTabSwitcherView(eq(false));
         InOrder omniboxStub = inOrder(mOmniboxStub);
         omniboxStub
@@ -1156,12 +1129,12 @@
         assertThat(mediator.shouldShowTabSwitcherToolbar(), equalTo(true));
 
         mediator.hideTabSwitcherView(true);
-        mCarouselTabSwitcherModuleVisibilityObserverCaptor.getValue().startedHiding();
-        mCarouselTabSwitcherModuleVisibilityObserverCaptor.getValue().finishedHiding();
+        mCardTabSwitcherModuleVisibilityObserverCaptor.getValue().startedHiding();
+        mCardTabSwitcherModuleVisibilityObserverCaptor.getValue().finishedHiding();
 
         showHomepageAndVerify(mediator, StartSurfaceState.SHOWING_PREVIOUS);
         carouselTabSwitcherModuleController
-                .verify(mCarouselOrSingleTabSwitcherModuleController)
+                .verify(mSingleTabSwitcherModuleController)
                 .showTabSwitcherView(eq(false));
         omniboxStub
                 .verify(mOmniboxStub, times(2))
@@ -1177,8 +1150,8 @@
         assertThat(mediator.getStartSurfaceState(), equalTo(StartSurfaceState.SHOWN_TABSWITCHER));
 
         mediator.hideTabSwitcherView(true);
-        mCarouselTabSwitcherModuleVisibilityObserverCaptor.getValue().startedHiding();
-        mCarouselTabSwitcherModuleVisibilityObserverCaptor.getValue().finishedHiding();
+        mCardTabSwitcherModuleVisibilityObserverCaptor.getValue().startedHiding();
+        mCardTabSwitcherModuleVisibilityObserverCaptor.getValue().finishedHiding();
 
         mediator.setStartSurfaceState(StartSurfaceState.SHOWING_PREVIOUS);
         mediator.showOverview(false);
@@ -1197,12 +1170,11 @@
 
         StartSurfaceMediator mediator =
                 createStartSurfaceMediator(/* isStartSurfaceEnabled= */ true);
-        InOrder carouselTabSwitcherModuleController =
-                inOrder(mCarouselOrSingleTabSwitcherModuleController);
+        InOrder carouselTabSwitcherModuleController = inOrder(mSingleTabSwitcherModuleController);
         carouselTabSwitcherModuleController
-                .verify(mCarouselOrSingleTabSwitcherModuleController)
+                .verify(mSingleTabSwitcherModuleController)
                 .addTabSwitcherViewObserver(
-                        mCarouselTabSwitcherModuleVisibilityObserverCaptor.capture());
+                        mCardTabSwitcherModuleVisibilityObserverCaptor.capture());
         assertThat(mediator.getStartSurfaceState(), equalTo(StartSurfaceState.NOT_SHOWN));
 
         mPropertyModel.set(IS_EXPLORE_SURFACE_VISIBLE, true);
@@ -1210,7 +1182,7 @@
                 .thenReturn(mExploreSurfaceCoordinator);
         showHomepageAndVerify(mediator, StartSurfaceState.SHOWING_HOMEPAGE);
         carouselTabSwitcherModuleController
-                .verify(mCarouselOrSingleTabSwitcherModuleController)
+                .verify(mSingleTabSwitcherModuleController)
                 .showTabSwitcherView(eq(false));
         assertThat(
                 mPropertyModel.get(EXPLORE_SURFACE_COORDINATOR),
@@ -1218,8 +1190,8 @@
 
         doReturn(TabLaunchType.FROM_START_SURFACE).when(mTab).getLaunchType();
         mediator.hideTabSwitcherView(true);
-        mCarouselTabSwitcherModuleVisibilityObserverCaptor.getValue().startedHiding();
-        mCarouselTabSwitcherModuleVisibilityObserverCaptor.getValue().finishedHiding();
+        mCardTabSwitcherModuleVisibilityObserverCaptor.getValue().startedHiding();
+        mCardTabSwitcherModuleVisibilityObserverCaptor.getValue().finishedHiding();
         assertNull(mPropertyModel.get(EXPLORE_SURFACE_COORDINATOR));
 
         showHomepageAndVerify(mediator, StartSurfaceState.SHOWING_PREVIOUS);
@@ -1229,8 +1201,8 @@
 
         doReturn(TabLaunchType.FROM_LINK).when(mTab).getLaunchType();
         mediator.hideTabSwitcherView(true);
-        mCarouselTabSwitcherModuleVisibilityObserverCaptor.getValue().startedHiding();
-        mCarouselTabSwitcherModuleVisibilityObserverCaptor.getValue().finishedHiding();
+        mCardTabSwitcherModuleVisibilityObserverCaptor.getValue().startedHiding();
+        mCardTabSwitcherModuleVisibilityObserverCaptor.getValue().finishedHiding();
         assertNull(mPropertyModel.get(EXPLORE_SURFACE_COORDINATOR));
     }
 
@@ -1306,9 +1278,9 @@
                         /* isRefactorEnabled= */ false,
                         /* hadWarmStart= */ false,
                         /* useMagicSpace= */ false);
-        verify(mCarouselOrSingleTabSwitcherModuleController)
+        verify(mSingleTabSwitcherModuleController)
                 .addTabSwitcherViewObserver(
-                        mCarouselTabSwitcherModuleVisibilityObserverCaptor.capture());
+                        mCardTabSwitcherModuleVisibilityObserverCaptor.capture());
 
         assertThat(mediator.getStartSurfaceState(), equalTo(StartSurfaceState.NOT_SHOWN));
         // Sets the current StartSurfaceState to SHOWING_START before calling the
@@ -1317,7 +1289,7 @@
         // {@link StartSurfaceMediator#showOverview()}.
         showHomepageAndVerify(mediator, StartSurfaceState.SHOWING_START);
         assertThat(mPropertyModel.get(IS_EXPLORE_SURFACE_VISIBLE), equalTo(false));
-        verify(mCarouselOrSingleTabSwitcherModuleController).showTabSwitcherView(eq(false));
+        verify(mSingleTabSwitcherModuleController).showTabSwitcherView(eq(false));
 
         mediator.initWithNative(
                 mOmniboxStub, mExploreSurfaceCoordinatorFactory, mPrefService, null);
@@ -1331,8 +1303,6 @@
                 resources.getDimensionPixelSize(R.dimen.tasks_surface_body_top_margin);
         int mvTilesContainerTopMargin =
                 resources.getDimensionPixelSize(R.dimen.mv_tiles_container_top_margin);
-        int tabSwitcherTitleTopMargin =
-                resources.getDimensionPixelSize(R.dimen.tab_switcher_title_top_margin);
 
         createStartSurfaceMediatorWithoutInit(
                 /* isStartSurfaceEnabled= */ true,
@@ -1345,9 +1315,6 @@
         assertThat(
                 mPropertyModel.get(MV_TILES_CONTAINER_TOP_MARGIN),
                 equalTo(mvTilesContainerTopMargin));
-        assertThat(
-                mPropertyModel.get(TAB_SWITCHER_TITLE_TOP_MARGIN),
-                equalTo(tabSwitcherTitleTopMargin));
 
         assertThat(mPropertyModel.get(MV_TILES_CONTAINER_LEFT_RIGHT_MARGIN), equalTo(0));
         assertThat(mPropertyModel.get(SINGLE_TAB_TOP_MARGIN), equalTo(0));
@@ -1358,8 +1325,6 @@
     public void initializeStartSurfaceTopMargins_SurfacePolish() {
         Resources resources = ContextUtils.getApplicationContext().getResources();
         int tasksSurfaceBodyTopMarginPolished = 0;
-        int tabSwitcherTitleTopMargin =
-                resources.getDimensionPixelSize(R.dimen.tab_switcher_title_top_margin);
 
         createStartSurfaceMediatorWithoutInit(
                 /* isStartSurfaceEnabled= */ true,
@@ -1370,9 +1335,6 @@
                 mPropertyModel.get(TASKS_SURFACE_BODY_TOP_MARGIN),
                 equalTo(tasksSurfaceBodyTopMarginPolished));
         assertThat(mPropertyModel.get(MV_TILES_CONTAINER_TOP_MARGIN), equalTo(0));
-        assertThat(
-                mPropertyModel.get(TAB_SWITCHER_TITLE_TOP_MARGIN),
-                equalTo(tabSwitcherTitleTopMargin));
 
         assertThat(mPropertyModel.get(MV_TILES_CONTAINER_LEFT_RIGHT_MARGIN), equalTo(0));
         assertThat(mPropertyModel.get(SINGLE_TAB_TOP_MARGIN), equalTo(0));
@@ -1386,7 +1348,7 @@
         Context context = ContextUtils.getApplicationContext();
         Assert.assertTrue(ReturnToChromeUtil.shouldImproveStartWhenFeedIsDisabled(context));
         doReturn(TabSwitcherType.SINGLE)
-                .when(mCarouselOrSingleTabSwitcherModuleController)
+                .when(mSingleTabSwitcherModuleController)
                 .getTabSwitcherType();
 
         Resources resources = context.getResources();
@@ -1397,8 +1359,6 @@
         int mvTilesContainerTopMargin =
                 resources.getDimensionPixelOffset(R.dimen.tile_grid_layout_top_margin)
                         + resources.getDimensionPixelOffset(R.dimen.ntp_search_box_bottom_margin);
-        int tabSwitcherTitleTopMargin =
-                resources.getDimensionPixelSize(R.dimen.tab_switcher_title_top_margin);
         int singleTopMargin =
                 resources.getDimensionPixelSize(
                         R.dimen.single_tab_view_top_margin_for_feed_improvement);
@@ -1415,9 +1375,6 @@
         assertThat(
                 mPropertyModel.get(MV_TILES_CONTAINER_TOP_MARGIN),
                 equalTo(mvTilesContainerTopMargin));
-        assertThat(
-                mPropertyModel.get(TAB_SWITCHER_TITLE_TOP_MARGIN),
-                equalTo(tabSwitcherTitleTopMargin));
         assertThat(mPropertyModel.get(SINGLE_TAB_TOP_MARGIN), equalTo(singleTopMargin));
 
         // Tasks surface body top margin should be updated when tab carousel/single card visibility
@@ -1425,14 +1382,14 @@
         doReturn(0).when(mNormalTabModel).getCount();
         doReturn(true).when(mTabModelSelector).isTabStateInitialized();
         showHomepageAndVerify(mediator, StartSurfaceState.SHOWING_HOMEPAGE);
-        assertThat(mPropertyModel.get(IS_TAB_CAROUSEL_VISIBLE), equalTo(false));
+        assertThat(mPropertyModel.get(IS_TAB_CARD_VISIBLE), equalTo(false));
         assertThat(
                 mPropertyModel.get(TASKS_SURFACE_BODY_TOP_MARGIN),
                 equalTo(tasksSurfaceBodyTopMarginWithoutTab));
 
         doReturn(2).when(mNormalTabModel).getCount();
         showHomepageAndVerify(mediator, StartSurfaceState.SHOWING_HOMEPAGE);
-        assertThat(mPropertyModel.get(IS_TAB_CAROUSEL_VISIBLE), equalTo(true));
+        assertThat(mPropertyModel.get(IS_TAB_CARD_VISIBLE), equalTo(true));
         assertThat(
                 mPropertyModel.get(TASKS_SURFACE_BODY_TOP_MARGIN),
                 equalTo(tasksSurfaceBodyTopMarginWithTab));
@@ -1491,7 +1448,7 @@
         doReturn(mVoiceRecognitionHandler).when(mOmniboxStub).getVoiceRecognitionHandler();
         doReturn(true).when(mVoiceRecognitionHandler).isVoiceSearchEnabled();
         doReturn(TabSwitcherType.SINGLE)
-                .when(mCarouselOrSingleTabSwitcherModuleController)
+                .when(mSingleTabSwitcherModuleController)
                 .getTabSwitcherType();
 
         StartSurfaceMediator mediator =
@@ -1502,8 +1459,7 @@
         showHomepageAndVerify(mediator, StartSurfaceState.SHOWING_HOMEPAGE);
         verify(mNormalTabModel).addObserver(mTabModelObserverCaptor.capture());
         assertThat(mPropertyModel.get(IS_SHOWING_OVERVIEW), equalTo(true));
-        assertThat(mPropertyModel.get(IS_TAB_CAROUSEL_VISIBLE), equalTo(true));
-        assertThat(mPropertyModel.get(IS_TAB_CAROUSEL_TITLE_VISIBLE), equalTo(false));
+        assertThat(mPropertyModel.get(IS_TAB_CARD_VISIBLE), equalTo(true));
     }
 
     @Test
@@ -1515,7 +1471,7 @@
         doReturn(true).when(mTabModelSelector).isTabStateInitialized();
 
         doReturn(TabSwitcherType.SINGLE)
-                .when(mCarouselOrSingleTabSwitcherModuleController)
+                .when(mSingleTabSwitcherModuleController)
                 .getTabSwitcherType();
         MockTab regularTab = new MockTab(1, mProfile);
         regularTab.setGurlOverrideForTesting(JUnitTestGURLs.NTP_URL);
@@ -1527,8 +1483,7 @@
         showHomepageAndVerify(mediator, StartSurfaceState.SHOWING_HOMEPAGE);
         verify(mNormalTabModel).addObserver(mTabModelObserverCaptor.capture());
         assertThat(mPropertyModel.get(IS_SHOWING_OVERVIEW), equalTo(true));
-        assertThat(mPropertyModel.get(IS_TAB_CAROUSEL_VISIBLE), equalTo(false));
-        assertThat(mPropertyModel.get(IS_TAB_CAROUSEL_TITLE_VISIBLE), equalTo(false));
+        assertThat(mPropertyModel.get(IS_TAB_CARD_VISIBLE), equalTo(false));
     }
 
     @Test
@@ -1656,9 +1611,9 @@
 
         StartSurfaceMediator mediator =
                 createStartSurfaceMediator(/* isStartSurfaceEnabled= */ true);
-        verify(mCarouselOrSingleTabSwitcherModuleController)
+        verify(mSingleTabSwitcherModuleController)
                 .addTabSwitcherViewObserver(
-                        mCarouselTabSwitcherModuleVisibilityObserverCaptor.capture());
+                        mCardTabSwitcherModuleVisibilityObserverCaptor.capture());
         showHomepageAndVerify(mediator, StartSurfaceState.SHOWN_HOMEPAGE);
 
         assertThat(mPropertyModel.get(IS_EXPLORE_SURFACE_VISIBLE), equalTo(true));
@@ -1667,14 +1622,14 @@
         UrlFocusChangeListener listener = mUrlFocusChangeListenerCaptor.getAllValues().get(0);
         assertThat(listener, equalTo(mFeedReliabilityLogger));
 
-        mCarouselTabSwitcherModuleVisibilityObserverCaptor.getValue().startedShowing();
-        mCarouselTabSwitcherModuleVisibilityObserverCaptor.getValue().finishedShowing();
-        mCarouselTabSwitcherModuleVisibilityObserverCaptor.getValue().startedHiding();
+        mCardTabSwitcherModuleVisibilityObserverCaptor.getValue().startedShowing();
+        mCardTabSwitcherModuleVisibilityObserverCaptor.getValue().finishedShowing();
+        mCardTabSwitcherModuleVisibilityObserverCaptor.getValue().startedHiding();
 
         mediator.hideTabSwitcherView(true);
         verify(mOmniboxStub).removeUrlFocusChangeListener(listener);
 
-        mCarouselTabSwitcherModuleVisibilityObserverCaptor.getValue().finishedHiding();
+        mCardTabSwitcherModuleVisibilityObserverCaptor.getValue().finishedHiding();
     }
 
     @Test
@@ -1697,8 +1652,8 @@
         doReturn(false).when(mTabModelSelector).isIncognitoSelected();
         doReturn(mVoiceRecognitionHandler).when(mOmniboxStub).getVoiceRecognitionHandler();
         doReturn(true).when(mVoiceRecognitionHandler).isVoiceSearchEnabled();
-        doAnswer((inv) -> mCarouselTabSwitcherModuleControllerDialogVisibleSupplier.get())
-                .when(mCarouselOrSingleTabSwitcherModuleController)
+        doAnswer((inv) -> mCardTabSwitcherModuleControllerDialogVisibleSupplier.get())
+                .when(mSingleTabSwitcherModuleController)
                 .isDialogVisible();
         doAnswer((inv) -> mSecondaryControllerDialogVisibleSupplier.get())
                 .when(mSecondaryTasksSurfaceController)
@@ -1712,21 +1667,21 @@
         mediator.setStartSurfaceState(StartSurfaceState.SHOWN_TABSWITCHER);
         Assert.assertFalse(
                 "Should not intercept back press by default", mediator.shouldInterceptBackPress());
-        mCarouselTabSwitcherModuleControllerDialogVisibleSupplier.set(true);
+        mCardTabSwitcherModuleControllerDialogVisibleSupplier.set(true);
         Assert.assertTrue(mediator.shouldInterceptBackPress());
-        doReturn(true).when(mCarouselOrSingleTabSwitcherModuleController).onBackPressed();
+        doReturn(true).when(mSingleTabSwitcherModuleController).onBackPressed();
         mediator.onBackPressed();
-        verify(mCarouselOrSingleTabSwitcherModuleController).onBackPressed();
+        verify(mSingleTabSwitcherModuleController).onBackPressed();
 
-        mCarouselTabSwitcherModuleControllerDialogVisibleSupplier.set(false);
+        mCardTabSwitcherModuleControllerDialogVisibleSupplier.set(false);
         Assert.assertFalse(mediator.shouldInterceptBackPress());
 
-        mCarouselTabSwitcherModuleControllerDialogVisibleSupplier.set(true);
+        mCardTabSwitcherModuleControllerDialogVisibleSupplier.set(true);
         mSecondaryControllerDialogVisibleSupplier.set(true);
         Assert.assertTrue(mediator.shouldInterceptBackPress());
         doReturn(true).when(mSecondaryTasksSurfaceController).onBackPressed();
         mediator.onBackPressed();
-        verify(mCarouselOrSingleTabSwitcherModuleController).onBackPressed();
+        verify(mSingleTabSwitcherModuleController).onBackPressed();
         verify(
                         mSecondaryTasksSurfaceController,
                         description(
@@ -1735,7 +1690,7 @@
                 .onBackPressed();
 
         mSecondaryControllerDialogVisibleSupplier.set(false);
-        mCarouselTabSwitcherModuleControllerDialogVisibleSupplier.set(false);
+        mCardTabSwitcherModuleControllerDialogVisibleSupplier.set(false);
         verify(
                         mSecondaryTasksSurfaceController,
                         description(
@@ -1780,13 +1735,13 @@
 
         showHomepageAndVerify(mediator, state);
 
-        doReturn(true).when(mCarouselOrSingleTabSwitcherModuleController).isDialogVisible();
+        doReturn(true).when(mSingleTabSwitcherModuleController).isDialogVisible();
         mediator.onBackPressed();
-        verify(mCarouselOrSingleTabSwitcherModuleController).onBackPressed();
+        verify(mSingleTabSwitcherModuleController).onBackPressed();
 
-        doReturn(false).when(mCarouselOrSingleTabSwitcherModuleController).isDialogVisible();
+        doReturn(false).when(mSingleTabSwitcherModuleController).isDialogVisible();
         mediator.onBackPressed();
-        verify(mCarouselOrSingleTabSwitcherModuleController, times(2)).onBackPressed();
+        verify(mSingleTabSwitcherModuleController, times(2)).onBackPressed();
     }
 
     /**
@@ -1810,16 +1765,16 @@
 
         showHomepageAndVerify(mediator, StartSurfaceState.SHOWN_HOMEPAGE);
 
-        doReturn(true).when(mCarouselOrSingleTabSwitcherModuleController).isDialogVisible();
+        doReturn(true).when(mSingleTabSwitcherModuleController).isDialogVisible();
         doReturn(false).when(mSecondaryTasksSurfaceController).isDialogVisible();
         mediator.onBackPressed();
-        verify(mCarouselOrSingleTabSwitcherModuleController).onBackPressed();
+        verify(mSingleTabSwitcherModuleController).onBackPressed();
         verify(mSecondaryTasksSurfaceController, never()).onBackPressed();
 
-        doReturn(false).when(mCarouselOrSingleTabSwitcherModuleController).isDialogVisible();
+        doReturn(false).when(mSingleTabSwitcherModuleController).isDialogVisible();
         doReturn(false).when(mSecondaryTasksSurfaceController).isDialogVisible();
         mediator.onBackPressed();
-        verify(mCarouselOrSingleTabSwitcherModuleController, times(2)).onBackPressed();
+        verify(mSingleTabSwitcherModuleController, times(2)).onBackPressed();
         // Reach the end of #onBackPressed.
         verify(mSecondaryTasksSurfaceController).onBackPressed();
     }
@@ -1837,13 +1792,13 @@
 
         showHomepageAndVerify(mediator, null);
 
-        doReturn(true).when(mCarouselOrSingleTabSwitcherModuleController).isDialogVisible();
+        doReturn(true).when(mSingleTabSwitcherModuleController).isDialogVisible();
         mediator.onBackPressed();
-        verify(mCarouselOrSingleTabSwitcherModuleController, times(1)).onBackPressed();
+        verify(mSingleTabSwitcherModuleController, times(1)).onBackPressed();
 
-        doReturn(false).when(mCarouselOrSingleTabSwitcherModuleController).isDialogVisible();
+        doReturn(false).when(mSingleTabSwitcherModuleController).isDialogVisible();
         mediator.onBackPressed();
-        verify(mCarouselOrSingleTabSwitcherModuleController, times(2)).onBackPressed();
+        verify(mSingleTabSwitcherModuleController, times(2)).onBackPressed();
     }
 
     /**
@@ -1865,7 +1820,7 @@
         mediator.setStartSurfaceState(StartSurfaceState.SHOWN_TABSWITCHER);
         Assert.assertEquals(StartSurfaceState.SHOWN_TABSWITCHER, mediator.getStartSurfaceState());
         // The primary task surface is invisible when showing the Tab Switcher.
-        doReturn(false).when(mCarouselOrSingleTabSwitcherModuleController).isDialogVisible();
+        doReturn(false).when(mSingleTabSwitcherModuleController).isDialogVisible();
 
         doReturn(true).when(mSecondaryTasksSurfaceController).isDialogVisible();
         doReturn(true).when(mSecondaryTasksSurfaceController).onBackPressed();
@@ -1873,7 +1828,7 @@
                 HistogramWatcher.newSingleRecordWatcher(
                         "Android.BackPress.Intercept", 4); // START_SURFACE enum value
         Assert.assertTrue(mediator.onBackPressed());
-        verify(mCarouselOrSingleTabSwitcherModuleController, never()).onBackPressed();
+        verify(mSingleTabSwitcherModuleController, never()).onBackPressed();
         verify(mSecondaryTasksSurfaceController).onBackPressed();
         histogramWatcher.assertExpected();
 
@@ -2196,7 +2151,7 @@
         boolean hasTasksView = isStartSurfaceEnabled && !isRefactorEnabled;
         boolean hasTabSwitcherModule = isStartSurfaceEnabled && isRefactorEnabled && !useMagicSpace;
         return new StartSurfaceMediator(
-                useMagicSpace ? null : mCarouselOrSingleTabSwitcherModuleController,
+                useMagicSpace ? null : mSingleTabSwitcherModuleController,
                 /* tabSwitcherContainer= */ null,
                 hasTabSwitcherModule ? mTabSwitcherModule : null,
                 mTabModelSelector,
diff --git a/chrome/android/features/start_surface/junit/src/org/chromium/chrome/features/tasks/TasksSurfaceMediatorUnitTest.java b/chrome/android/features/start_surface/junit/src/org/chromium/chrome/features/tasks/TasksSurfaceMediatorUnitTest.java
index a508ef0..514061e2 100644
--- a/chrome/android/features/start_surface/junit/src/org/chromium/chrome/features/tasks/TasksSurfaceMediatorUnitTest.java
+++ b/chrome/android/features/start_surface/junit/src/org/chromium/chrome/features/tasks/TasksSurfaceMediatorUnitTest.java
@@ -22,8 +22,6 @@
 import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.IS_INCOGNITO_DESCRIPTION_INITIALIZED;
 import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.IS_INCOGNITO_DESCRIPTION_VISIBLE;
 import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.IS_SURFACE_BODY_VISIBLE;
-import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.IS_TAB_CAROUSEL_TITLE_VISIBLE;
-import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.IS_TAB_CAROUSEL_VISIBLE;
 import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.IS_VOICE_RECOGNITION_BUTTON_VISIBLE;
 import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.VOICE_SEARCH_BUTTON_CLICK_LISTENER;
 
@@ -76,7 +74,7 @@
 
         mMediator =
                 new TasksSurfaceMediator(
-                        mPropertyModel, mLearnMoreOnClickListener, mCookieControlsManager, true);
+                        mPropertyModel, mLearnMoreOnClickListener, mCookieControlsManager);
         mMediator.initWithNative(mOmniboxStub, mFeedReliabilityLogger);
     }
 
@@ -87,8 +85,6 @@
 
     @Test
     public void initialization() {
-        verify(mPropertyModel).set(eq(IS_TAB_CAROUSEL_VISIBLE), eq(true));
-        verify(mPropertyModel).set(eq(IS_TAB_CAROUSEL_TITLE_VISIBLE), eq(true));
         verify(mPropertyModel)
                 .set(eq(FAKE_SEARCH_BOX_CLICK_LISTENER), mFakeboxClickListenerCaptor.capture());
         verify(mPropertyModel)
diff --git a/chrome/android/features/start_surface/junit/src/org/chromium/chrome/features/tasks/TasksViewBinderUnitTest.java b/chrome/android/features/start_surface/junit/src/org/chromium/chrome/features/tasks/TasksViewBinderUnitTest.java
index 3b3fe57..4746eb2d 100644
--- a/chrome/android/features/start_surface/junit/src/org/chromium/chrome/features/tasks/TasksViewBinderUnitTest.java
+++ b/chrome/android/features/start_surface/junit/src/org/chromium/chrome/features/tasks/TasksViewBinderUnitTest.java
@@ -19,16 +19,13 @@
 import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.IS_INCOGNITO_DESCRIPTION_INITIALIZED;
 import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.IS_INCOGNITO_DESCRIPTION_VISIBLE;
 import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.IS_LENS_BUTTON_VISIBLE;
-import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.IS_TAB_CAROUSEL_TITLE_VISIBLE;
-import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.IS_TAB_CAROUSEL_VISIBLE;
+import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.IS_TAB_CARD_VISIBLE;
 import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.IS_VOICE_RECOGNITION_BUTTON_VISIBLE;
 import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.LENS_BUTTON_CLICK_LISTENER;
-import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.MORE_TABS_CLICK_LISTENER;
 import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.MV_TILES_CONTAINER_LEFT_RIGHT_MARGIN;
 import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.MV_TILES_CONTAINER_TOP_MARGIN;
 import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.MV_TILES_VISIBLE;
 import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.SINGLE_TAB_TOP_MARGIN;
-import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.TAB_SWITCHER_TITLE_TOP_MARGIN;
 import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.TASKS_SURFACE_BODY_TOP_MARGIN;
 import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.TOP_TOOLBAR_PLACEHOLDER_HEIGHT;
 import static org.chromium.chrome.features.tasks.TasksSurfaceProperties.VOICE_SEARCH_BUTTON_CLICK_LISTENER;
@@ -126,26 +123,16 @@
 
     @Test
     @SmallTest
-    public void testSetTabCarouselMode() {
-        mTasksViewPropertyModel.set(IS_TAB_CAROUSEL_VISIBLE, true);
+    public void testSetTabCardVisibilityMode() {
+        mTasksViewPropertyModel.set(IS_TAB_CARD_VISIBLE, true);
         assertTrue(isViewVisible(R.id.tab_switcher_module_container));
 
-        mTasksViewPropertyModel.set(IS_TAB_CAROUSEL_VISIBLE, false);
+        mTasksViewPropertyModel.set(IS_TAB_CARD_VISIBLE, false);
         assertFalse(isViewVisible(R.id.tab_switcher_module_container));
     }
 
     @Test
     @SmallTest
-    public void testSetTabCarouselTitle() {
-        mTasksViewPropertyModel.set(IS_TAB_CAROUSEL_TITLE_VISIBLE, true);
-        assertTrue(isViewVisible(R.id.tab_switcher_title));
-
-        mTasksViewPropertyModel.set(IS_TAB_CAROUSEL_TITLE_VISIBLE, false);
-        assertFalse(isViewVisible(R.id.tab_switcher_title));
-    }
-
-    @Test
-    @SmallTest
     public void testSetFakeboxVisibilityClickListenerAndTextWatcher() {
         TestThreadUtils.runOnUiThreadBlocking(
                 () -> mTasksViewPropertyModel.set(IS_FAKE_SEARCH_BOX_VISIBLE, true));
@@ -250,23 +237,6 @@
 
     @Test
     @SmallTest
-    public void testSetMoreTabsClickListener() {
-        mTasksViewPropertyModel.set(IS_TAB_CAROUSEL_VISIBLE, true);
-
-        mViewClicked.set(false);
-        // Note that onView(R.id.more_tabs).perform(click()) can not be used since it requires 90
-        // percent of the view's area is displayed to the users. However, this view has negative
-        // margin which makes the percentage is less than 90.
-        // TODO (crbug.com/1186752): Investigate whether this would be a problem for real users.
-        mTasksView.findViewById(R.id.more_tabs).performClick();
-        assertFalse(mViewClicked.get());
-        mTasksViewPropertyModel.set(MORE_TABS_CLICK_LISTENER, mViewOnClickListener);
-        mTasksView.findViewById(R.id.more_tabs).performClick();
-        assertTrue(mViewClicked.get());
-    }
-
-    @Test
-    @SmallTest
     public void testSetIncognitoMode() {
         mTasksViewPropertyModel.set(IS_INCOGNITO, true);
         assertTrue(mTasksView.getSearchBoxCoordinator().getIncognitoModeForTesting());
@@ -379,9 +349,9 @@
                                 .getLayoutInflater()
                                 .inflate(
                                         R.layout.single_tab_view_layout,
-                                        mTasksView.getCarouselTabSwitcherContainer(),
+                                        mTasksView.getCardTabSwitcherContainer(),
                                         false);
-        mTasksView.getCarouselTabSwitcherContainer().addView(singleTabView);
+        mTasksView.getCardTabSwitcherContainer().addView(singleTabView);
 
         ViewGroup.MarginLayoutParams params =
                 (ViewGroup.MarginLayoutParams)
@@ -396,19 +366,6 @@
 
     @Test
     @SmallTest
-    public void testSetTabSwitcherTitleTopMargin() {
-        ViewGroup.MarginLayoutParams params =
-                (ViewGroup.MarginLayoutParams)
-                        mTasksView.findViewById(R.id.tab_switcher_title).getLayoutParams();
-        assertEquals(0, params.topMargin);
-
-        mTasksViewPropertyModel.set(TAB_SWITCHER_TITLE_TOP_MARGIN, 16);
-
-        assertEquals(16, params.topMargin);
-    }
-
-    @Test
-    @SmallTest
     public void testSetTopToolbarLayoutHeight() {
         ViewGroup.LayoutParams params =
                 mTasksView.findViewById(R.id.top_toolbar_placeholder).getLayoutParams();
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabManagementDelegate.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabManagementDelegate.java
index be8c3490..bc399ff 100644
--- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabManagementDelegate.java
+++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabManagementDelegate.java
@@ -44,14 +44,13 @@
 public interface TabManagementDelegate {
     @IntDef({
         TabSwitcherType.GRID,
-        TabSwitcherType.CAROUSEL,
         TabSwitcherType.SINGLE,
         TabSwitcherType.NONE
     })
     @Retention(RetentionPolicy.SOURCE)
     public @interface TabSwitcherType {
         int GRID = 0;
-        int CAROUSEL = 1;
+        // int CAROUSEL_DEPRECATED = 1;
         int SINGLE = 2;
         int NONE = 3;
     }
@@ -123,40 +122,6 @@
             @Nullable OneshotSupplier<LayoutStateProvider> layoutStateProviderSupplier);
 
     /**
-     * Create the {@link TabSwitcher} to display Tabs in carousel.
-     * @param activity The current Android {@link Activity}.
-     * @param lifecycleDispatcher Allows observation of the activity lifecycle.
-     * @param tabModelSelector Gives access to the current set of {@TabModel}.
-     * @param tabContentManager Gives access to the tab content.
-     * @param browserControls Allows observation of the browser controls state.
-     * @param tabCreatorManager Manages creation of tabs.
-     * @param menuOrKeyboardActionController allows access to menu or keyboard actions.
-     * @param containerView The {@link ViewGroup} to add the switcher to.
-     * @param multiWindowModeStateDispatcher Gives access to the multi window mode state.
-     * @param scrimCoordinator The {@link ScrimCoordinator} to control the scrim view.
-     * @param rootView The root view of the app.
-     * @param dynamicResourceLoaderSupplier Supplies the current {@link DynamicResourceLoader}.
-     * @param snackbarManager Manages the snackbar.
-     * @param modalDialogManager Manages modal dialogs.
-     * @return The {@link TabSwitcher}.
-     */
-    TabSwitcher createCarouselTabSwitcher(
-            @NonNull Activity activity,
-            @NonNull ActivityLifecycleDispatcher lifecycleDispatcher,
-            @NonNull TabModelSelector tabModelSelector,
-            @NonNull TabContentManager tabContentManager,
-            @NonNull BrowserControlsStateProvider browserControls,
-            @NonNull TabCreatorManager tabCreatorManager,
-            @NonNull MenuOrKeyboardActionController menuOrKeyboardActionController,
-            @NonNull ViewGroup containerView,
-            @NonNull MultiWindowModeStateDispatcher multiWindowModeStateDispatcher,
-            @NonNull ScrimCoordinator scrimCoordinator,
-            @NonNull ViewGroup rootView,
-            @NonNull Supplier<DynamicResourceLoader> dynamicResourceLoaderSupplier,
-            @NonNull SnackbarManager snackbarManager,
-            @NonNull ModalDialogManager modalDialogManager);
-
-    /**
      * Create the {@link TabGroupUi}.
      * @param activity The {@link Activity} that creates this surface.
      * @param parentView The parent view of this UI.
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabManagementDelegateImpl.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabManagementDelegateImpl.java
index 03952f4..2c28838 100644
--- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabManagementDelegateImpl.java
+++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabManagementDelegateImpl.java
@@ -102,43 +102,6 @@
     }
 
     @Override
-    public TabSwitcher createCarouselTabSwitcher(
-            @NonNull Activity activity,
-            @NonNull ActivityLifecycleDispatcher lifecycleDispatcher,
-            @NonNull TabModelSelector tabModelSelector,
-            @NonNull TabContentManager tabContentManager,
-            @NonNull BrowserControlsStateProvider browserControls,
-            @NonNull TabCreatorManager tabCreatorManager,
-            @NonNull MenuOrKeyboardActionController menuOrKeyboardActionController,
-            @NonNull ViewGroup containerView,
-            @NonNull MultiWindowModeStateDispatcher multiWindowModeStateDispatcher,
-            @NonNull ScrimCoordinator scrimCoordinator,
-            @NonNull ViewGroup rootView,
-            @NonNull Supplier<DynamicResourceLoader> dynamicResourceLoaderSupplier,
-            @NonNull SnackbarManager snackbarManager,
-            @NonNull ModalDialogManager modalDialogManager) {
-        return new TabSwitcherCoordinator(
-                activity,
-                lifecycleDispatcher,
-                tabModelSelector,
-                tabContentManager,
-                browserControls,
-                tabCreatorManager,
-                menuOrKeyboardActionController,
-                containerView,
-                multiWindowModeStateDispatcher,
-                scrimCoordinator,
-                TabListCoordinator.TabListMode.CAROUSEL,
-                rootView,
-                dynamicResourceLoaderSupplier,
-                snackbarManager,
-                modalDialogManager,
-                null,
-                null,
-                null);
-    }
-
-    @Override
     public TabGroupUi createTabGroupUi(
             @NonNull Activity activity,
             @NonNull ViewGroup parentView,
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherMediator.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherMediator.java
index 4e855f4..b0157b34 100644
--- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherMediator.java
+++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherMediator.java
@@ -984,10 +984,9 @@
     @Override
     public @TabSwitcherType int getTabSwitcherType() {
         switch (mMode) {
-            case TabListMode.CAROUSEL:
-                return TabSwitcherType.CAROUSEL;
             case TabListMode.GRID:
                 return TabSwitcherType.GRID;
+            case TabListMode.CAROUSEL:
             case TabListMode.LIST:
             case TabListMode.STRIP:
             default:
diff --git a/chrome/android/features/tab_ui/java/strings/android_chrome_tab_ui_strings.grd b/chrome/android/features/tab_ui/java/strings/android_chrome_tab_ui_strings.grd
index 9c89481..53ce47e 100644
--- a/chrome/android/features/tab_ui/java/strings/android_chrome_tab_ui_strings.grd
+++ b/chrome/android/features/tab_ui/java/strings/android_chrome_tab_ui_strings.grd
@@ -370,9 +370,6 @@
       <message name="IDS_TAB_SWITCHER_CAROUSEL_TITLE" desc="Title of the Tabs carousel section on the single pane start surface.">
           Continue browsing
       </message>
-      <message name="IDS_TAB_SWITCHER_CAROUSEL_VIEW_ALL" desc="Title of the text view button in the Tabs carousel section on the single pane start surface. Click it to view all the existing Tabs.">
-          View all
-      </message>
 
       <!-- Single Tab module strings -->
       <message name="IDS_SINGLE_TAB_MODULE_TITLE" desc="Title of the single Tab module on the magic space of the start surface or NTP home surface.">
diff --git a/chrome/android/features/tab_ui/java/strings/android_chrome_tab_ui_strings_grd/IDS_TAB_SWITCHER_CAROUSEL_VIEW_ALL.png.sha1 b/chrome/android/features/tab_ui/java/strings/android_chrome_tab_ui_strings_grd/IDS_TAB_SWITCHER_CAROUSEL_VIEW_ALL.png.sha1
deleted file mode 100644
index 553e01a..0000000
--- a/chrome/android/features/tab_ui/java/strings/android_chrome_tab_ui_strings_grd/IDS_TAB_SWITCHER_CAROUSEL_VIEW_ALL.png.sha1
+++ /dev/null
@@ -1 +0,0 @@
-b80019f5c1f74e2e6892fb5336fe7c7e3bfa97e5
\ No newline at end of file
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/flags/ChromeCachedFlags.java b/chrome/android/java/src/org/chromium/chrome/browser/app/flags/ChromeCachedFlags.java
index 470d053..ad6e5679 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/app/flags/ChromeCachedFlags.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/app/flags/ChromeCachedFlags.java
@@ -120,7 +120,6 @@
                                 .SIGNIN_PROMO_NTP_SINCE_FIRST_TIME_SHOWN_LIMIT_HOURS,
                         StartSurfaceConfiguration.SIGNIN_PROMO_NTP_RESET_AFTER_HOURS,
                         StartSurfaceConfiguration.START_SURFACE_HIDE_INCOGNITO_SWITCH_NO_TAB,
-                        StartSurfaceConfiguration.START_SURFACE_LAST_ACTIVE_TAB_ONLY,
                         StartSurfaceConfiguration.START_SURFACE_OPEN_NTP_INSTEAD_OF_START,
                         StartSurfaceConfiguration.START_SURFACE_OPEN_START_AS_HOMEPAGE,
                         StartSurfaceConfiguration.SURFACE_POLISH_OMNIBOX_COLOR,
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
index b3954a5..3c27b2f6 100644
--- a/chrome/browser/about_flags.cc
+++ b/chrome/browser/about_flags.cc
@@ -2356,12 +2356,6 @@
          std::size(kNewTabSearchEngineUrlAndroid_EeaCountryOnly), nullptr},
 };
 
-const FeatureEntry::FeatureParam kStartSurfaceAndroid_SingleSurface[] = {
-    {"open_ntp_instead_of_start", "false"},
-    {"open_start_as_homepage", "true"},
-    {"show_last_active_tab_only", "false"},
-    {"show_tabs_in_mru_order", "true"}};
-
 const FeatureEntry::FeatureParam kStartSurfaceAndroid_CandidateA[] = {
     {"open_ntp_instead_of_start", "false"},
     {"open_start_as_homepage", "true"}};
@@ -2397,8 +2391,6 @@
     {"Candidate B + Always show Incognito icon",
      kStartSurfaceAndroid_CandidateB_AlwaysShowIncognito,
      std::size(kStartSurfaceAndroid_CandidateB_AlwaysShowIncognito), nullptr},
-    {"Single Surface", kStartSurfaceAndroid_SingleSurface,
-     std::size(kStartSurfaceAndroid_SingleSurface), nullptr},
 };
 
 const FeatureEntry::FeatureParam kSurfacePolish_mvp[] = {
diff --git a/tools/android/instant_start/benchmark.py b/tools/android/instant_start/benchmark.py
index 4d6fe56..f733836 100755
--- a/tools/android/instant_start/benchmark.py
+++ b/tools/android/instant_start/benchmark.py
@@ -59,7 +59,6 @@
         '--force-fieldtrials=Study/Group',
         '--force-fieldtrial-params=Study.Group:'
         'start_surface_return_time_seconds/0'
-        '/show_last_active_tab_only/true'
         '/open_ntp_instead_of_start/true'
     ] + extra_cmd)