| Index: chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/LayoutManagerDocumentTabSwitcher.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/LayoutManagerDocumentTabSwitcher.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/LayoutManagerDocumentTabSwitcher.java
|
| deleted file mode 100644
|
| index f6c3bf65304e9d454c3abdadc0ffc1a686c4c3fe..0000000000000000000000000000000000000000
|
| --- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/LayoutManagerDocumentTabSwitcher.java
|
| +++ /dev/null
|
| @@ -1,270 +0,0 @@
|
| -// Copyright 2015 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -package org.chromium.chrome.browser.compositor.layouts;
|
| -
|
| -import android.app.Activity;
|
| -import android.content.Context;
|
| -import android.view.ViewGroup;
|
| -
|
| -import org.chromium.base.ObserverList;
|
| -import org.chromium.chrome.browser.ChromeApplication;
|
| -import org.chromium.chrome.browser.compositor.TitleCache;
|
| -import org.chromium.chrome.browser.compositor.layouts.components.LayoutTab;
|
| -import org.chromium.chrome.browser.compositor.layouts.content.TabContentManager;
|
| -import org.chromium.chrome.browser.compositor.layouts.eventfilter.BlackHoleEventFilter;
|
| -import org.chromium.chrome.browser.compositor.layouts.eventfilter.GestureEventFilter;
|
| -import org.chromium.chrome.browser.compositor.layouts.eventfilter.GestureHandler;
|
| -import org.chromium.chrome.browser.compositor.layouts.phone.StackLayout;
|
| -import org.chromium.chrome.browser.compositor.overlays.SceneOverlay;
|
| -import org.chromium.chrome.browser.contextualsearch.ContextualSearchManagementDelegate;
|
| -import org.chromium.chrome.browser.device.DeviceClassManager;
|
| -import org.chromium.chrome.browser.dom_distiller.ReaderModeManagerDelegate;
|
| -import org.chromium.chrome.browser.tab.Tab;
|
| -import org.chromium.chrome.browser.tabmodel.TabCreatorManager;
|
| -import org.chromium.chrome.browser.tabmodel.TabModelSelector;
|
| -import org.chromium.chrome.browser.widget.OverviewListLayout;
|
| -import org.chromium.content.browser.ContentViewCore;
|
| -import org.chromium.ui.resources.dynamics.DynamicResourceLoader;
|
| -
|
| -/**
|
| - * A {@link Layout} controller for enabling tab switcher on document mode.
|
| - * Note that lots of fields and methods here intentionally duplicate those of LayoutManagerChrome
|
| - * without further refactoring them because because this is for a UX experiment, and
|
| - * we might scrap this as a whole.
|
| - * See https://crbug.com/520327 for more.
|
| - */
|
| -public class LayoutManagerDocumentTabSwitcher
|
| - extends LayoutManagerDocument implements OverviewModeBehavior {
|
| - /** A {@link Layout} that should be used when the user is swiping sideways on the toolbar. */
|
| - private final OverviewListLayout mOverviewListLayout;
|
| - private final StackLayout mOverviewLayout;
|
| -
|
| - // Event Filter Handlers
|
| - /** A {@link GestureHandler} that will delegate all events to {@link #getActiveLayout()}. */
|
| - private final BlackHoleEventFilter mBlackHoleEventFilter;
|
| - private final GestureEventFilter mGestureEventFilter;
|
| -
|
| - private TitleCache mTitleCache;
|
| - private final ObserverList<OverviewModeObserver> mOverviewModeObservers =
|
| - new ObserverList<OverviewModeObserver>();
|
| -
|
| - /**
|
| - * Creates a {@link LayoutManagerDocumentTabSwitcher} instance.
|
| - * @param host A {@link LayoutManagerHost} instance.
|
| - */
|
| - public LayoutManagerDocumentTabSwitcher(LayoutManagerHost host) {
|
| - super(host);
|
| - Context context = host.getContext();
|
| - LayoutRenderHost renderHost = host.getLayoutRenderHost();
|
| -
|
| - mBlackHoleEventFilter = new BlackHoleEventFilter(context, this);
|
| - mGestureEventFilter = new GestureEventFilter(context, this, mGestureHandler);
|
| - mOverviewListLayout =
|
| - new OverviewListLayout(context, this, renderHost, mBlackHoleEventFilter);
|
| - mOverviewLayout = new StackLayout(context, this, renderHost, mGestureEventFilter);
|
| - }
|
| -
|
| - @Override
|
| - public void init(TabModelSelector selector, TabCreatorManager creator,
|
| - TabContentManager content, ViewGroup androidContentContainer,
|
| - ContextualSearchManagementDelegate contextualSearchDelegate,
|
| - ReaderModeManagerDelegate readerModeManagerDelegate,
|
| - DynamicResourceLoader dynamicResourceLoader) {
|
| - super.init(selector, creator, content, androidContentContainer, contextualSearchDelegate,
|
| - readerModeManagerDelegate, dynamicResourceLoader);
|
| -
|
| - mTitleCache = mHost.getTitleCache();
|
| - TabModelSelector documentTabSelector = ChromeApplication.getDocumentTabModelSelector();
|
| - mOverviewListLayout.setTabModelSelector(documentTabSelector, content);
|
| - mOverviewLayout.setTabModelSelector(documentTabSelector, content);
|
| -
|
| - // TODO(changwan): do we really need this?
|
| - startShowing(getDefaultLayout(), false);
|
| - }
|
| -
|
| - @Override
|
| - public void destroy() {
|
| - super.destroy();
|
| -
|
| - if (mOverviewListLayout != null) mOverviewListLayout.destroy();
|
| - if (mOverviewLayout != null) mOverviewLayout.destroy();
|
| - }
|
| -
|
| - /**
|
| - * Adds the {@link SceneOverlay} across all {@link Layout}s owned by this class.
|
| - * @param helper A {@link SceneOverlay} instance.
|
| - */
|
| - @Override
|
| - protected void addGlobalSceneOverlay(SceneOverlay helper) {
|
| - super.addGlobalSceneOverlay(helper);
|
| - if (mOverviewListLayout != null) {
|
| - mOverviewListLayout.addSceneOverlay(helper);
|
| - }
|
| - if (mOverviewLayout != null) {
|
| - mOverviewLayout.addSceneOverlay(helper);
|
| - }
|
| - }
|
| -
|
| - @Override
|
| - public void initLayoutTabFromHost(final int tabId) {
|
| - if (mTitleCache != null) {
|
| - mTitleCache.remove(tabId);
|
| - }
|
| - super.initLayoutTabFromHost(tabId);
|
| - }
|
| -
|
| - @Override
|
| - public void releaseTabLayout(int id) {
|
| - super.releaseTabLayout(id);
|
| - if (mTitleCache != null) mTitleCache.remove(id);
|
| - }
|
| -
|
| - @Override
|
| - public void doneHiding() {
|
| - super.doneHiding();
|
| - // Remove transition animation when switching to another tab, in accordance to
|
| - // moveToFront() in ActivityDelegate.
|
| - Activity activity = (Activity) mHost.getContext();
|
| - if (activity != null) {
|
| - activity.overridePendingTransition(0, 0);
|
| - }
|
| - }
|
| -
|
| - @Override
|
| - protected void startShowing(Layout layout, boolean animate) {
|
| - super.startShowing(layout, animate);
|
| -
|
| - Layout layoutBeingShown = getActiveLayout();
|
| -
|
| - // Check if we should notify OverviewModeObservers.
|
| - if (isOverviewLayout(layoutBeingShown)) {
|
| - boolean showToolbar = false;
|
| - for (OverviewModeObserver observer : mOverviewModeObservers) {
|
| - observer.onOverviewModeStartedShowing(showToolbar);
|
| - }
|
| - }
|
| - }
|
| -
|
| - @Override
|
| - public void startHiding(int nextTabId, boolean hintAtTabSelection) {
|
| - super.startHiding(nextTabId, hintAtTabSelection);
|
| -
|
| - Layout layoutBeingHidden = getActiveLayout();
|
| - if (isOverviewLayout(layoutBeingHidden)) {
|
| - boolean showToolbar = true;
|
| - if (layoutBeingHidden == mOverviewLayout) {
|
| - final LayoutTab tab = layoutBeingHidden.getLayoutTab(nextTabId);
|
| - // Note: this value is reversed in LayoutManagerChrome#startHiding.
|
| - showToolbar = tab != null ? tab.showToolbar() : true;
|
| - }
|
| -
|
| - boolean delayAnimation = false;
|
| - for (OverviewModeObserver observer : mOverviewModeObservers) {
|
| - observer.onOverviewModeStartedHiding(showToolbar, delayAnimation);
|
| - }
|
| - }
|
| - }
|
| -
|
| - private boolean isOverviewLayout(Layout layout) {
|
| - return layout != null && (layout == mOverviewLayout || layout == mOverviewListLayout);
|
| - }
|
| -
|
| - @Override
|
| - public void addOverviewModeObserver(OverviewModeObserver listener) {
|
| - mOverviewModeObservers.addObserver(listener);
|
| - }
|
| -
|
| - @Override
|
| - public void removeOverviewModeObserver(OverviewModeObserver listener) {
|
| - mOverviewModeObservers.removeObserver(listener);
|
| - }
|
| -
|
| - @Override
|
| - public boolean overviewVisible() {
|
| - Layout activeLayout = getActiveLayout();
|
| - return isOverviewLayout(activeLayout) && !activeLayout.isHiding();
|
| - }
|
| -
|
| - public void toggleOverview() {
|
| - Tab tab = getTabModelSelector().getCurrentTab();
|
| - ContentViewCore contentViewCore = tab != null ? tab.getContentViewCore() : null;
|
| -
|
| - if (!overviewVisible()) {
|
| - mHost.hideKeyboard(new Runnable() {
|
| - @Override
|
| - public void run() {
|
| - showOverview(true);
|
| - }
|
| - });
|
| - if (contentViewCore != null) {
|
| - contentViewCore.setAccessibilityState(false);
|
| - }
|
| - } else {
|
| - Layout activeLayout = getActiveLayout();
|
| - if (activeLayout instanceof StackLayout) {
|
| - ((StackLayout) activeLayout).commitOutstandingModelState(LayoutManager.time());
|
| - }
|
| - if (getTabModelSelector().getCurrentModel().getCount() != 0) {
|
| - // Don't hide overview if current tab stack is empty()
|
| - hideOverview(true);
|
| -
|
| - // hideOverview could change the current tab. Update the local variables.
|
| - tab = getTabModelSelector().getCurrentTab();
|
| - contentViewCore = tab != null ? tab.getContentViewCore() : null;
|
| -
|
| - if (contentViewCore != null) {
|
| - contentViewCore.setAccessibilityState(true);
|
| - }
|
| - }
|
| - }
|
| - }
|
| -
|
| - /**
|
| - * @return Whether or not to use the accessibility layout.
|
| - */
|
| - private boolean useAccessibilityLayout() {
|
| - return DeviceClassManager.isAccessibilityModeEnabled(mHost.getContext())
|
| - || DeviceClassManager.enableAccessibilityLayout();
|
| - }
|
| -
|
| - /**
|
| - * Show the overview {@link Layout}. This is generally a {@link Layout} that visibly represents
|
| - * all of the {@link Tab}s opened by the user.
|
| - * @param animate Whether or not to animate the transition to overview mode.
|
| - */
|
| - private void showOverview(boolean animate) {
|
| - boolean useAccessibility = useAccessibilityLayout();
|
| -
|
| - boolean accessibilityIsVisible =
|
| - useAccessibility && getActiveLayout() == mOverviewListLayout;
|
| - boolean normalIsVisible = getActiveLayout() == mOverviewLayout && mOverviewLayout != null;
|
| -
|
| - // We only want to use the AccessibilityOverviewLayout if the following are all valid:
|
| - // 1. We're already showing the AccessibilityOverviewLayout OR we're using accessibility.
|
| - // 2. We're not already showing the normal OverviewLayout (or we are on a tablet, in which
|
| - // case the normal layout is always visible).
|
| - if ((accessibilityIsVisible || useAccessibility) && !normalIsVisible) {
|
| - startShowing(mOverviewListLayout, animate);
|
| - } else if (mOverviewLayout != null) {
|
| - startShowing(mOverviewLayout, animate);
|
| - }
|
| - }
|
| -
|
| - /**
|
| - * Hides the current {@link Layout}, returning to the default {@link Layout}.
|
| - * @param animate Whether or not to animate the transition to the default {@link Layout}.
|
| - */
|
| - private void hideOverview(boolean animate) {
|
| - Layout activeLayout = getActiveLayout();
|
| - if (activeLayout != null && !activeLayout.isHiding()) {
|
| - if (animate) {
|
| - activeLayout.onTabSelecting(time(), Tab.INVALID_TAB_ID);
|
| - } else {
|
| - startHiding(Tab.INVALID_TAB_ID, false);
|
| - doneHiding();
|
| - }
|
| - }
|
| - }
|
| -}
|
|
|