@Override
 public void destroy() {
   mTabSaver.destroy();
   mUma.destroy();
   super.destroy();
   mActiveState = false;
 }
  @Override
  public void requestToShowTab(Tab tab, TabSelectionType type) {
    boolean isFromExternalApp =
        tab != null && tab.getLaunchType() == TabLaunchType.FROM_EXTERNAL_APP;

    if (mVisibleTab != tab && tab != null && !tab.isNativePage()) {
      TabModelBase.startTabSwitchLatencyTiming(type);
    }
    if (mVisibleTab != null && mVisibleTab != tab && !mVisibleTab.needsReload()) {
      if (mVisibleTab.isInitialized()) {
        // TODO(dtrainor): Once we figure out why we can't grab a snapshot from the current
        // tab when we have other tabs loading from external apps remove the checks for
        // FROM_EXTERNAL_APP/FROM_NEW.
        if (!mVisibleTab.isClosing() && (!isFromExternalApp || type != TabSelectionType.FROM_NEW)) {
          cacheTabBitmap(mVisibleTab);
        }
        mVisibleTab.hide();
        mVisibleTab.setFullscreenManager(null);
        mTabSaver.addTabToSaveQueue(mVisibleTab);
      }
      mVisibleTab = null;
    }

    if (tab == null) {
      notifyChanged();
      return;
    }

    // We hit this case when the user enters tab switcher and comes back to the current tab
    // without actual tab switch.
    if (mVisibleTab == tab && !mVisibleTab.isHidden()) {
      // The current tab might have been killed by the os while in tab switcher.
      tab.loadIfNeeded();
      return;
    }

    tab.setFullscreenManager(mActivity.getFullscreenManager());
    mVisibleTab = tab;

    // Don't execute the tab display part if Chrome has just been sent to background. This
    // avoids uneccessary work (tab restore) and prevents pollution of tab display metrics - see
    // http://crbug.com/316166.
    if (type != TabSelectionType.FROM_EXIT) {
      tab.show(type);
      mUma.onShowTab(tab.getId(), tab.isBeingRestored());
    }
  }
 /** Should be called when the app starts showing a view with multiple tabs. */
 public void onTabsViewShown() {
   mUma.onTabsViewShown();
 }