Index: chrome/android/shell/java/src/org/chromium/chrome/shell/TabManager.java |
diff --git a/chrome/android/shell/java/src/org/chromium/chrome/shell/TabManager.java b/chrome/android/shell/java/src/org/chromium/chrome/shell/TabManager.java |
deleted file mode 100644 |
index db3306bbd9fa4b921579f25b0b9d9b2bccbfb83d..0000000000000000000000000000000000000000 |
--- a/chrome/android/shell/java/src/org/chromium/chrome/shell/TabManager.java |
+++ /dev/null |
@@ -1,289 +0,0 @@ |
-// Copyright 2014 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.shell; |
- |
-import android.content.Context; |
-import android.util.AttributeSet; |
-import android.view.LayoutInflater; |
-import android.view.View; |
-import android.view.ViewGroup; |
-import android.view.ViewParent; |
-import android.widget.FrameLayout; |
-import android.widget.LinearLayout; |
- |
-import org.chromium.base.VisibleForTesting; |
-import org.chromium.chrome.browser.tab.EmptyTabObserver; |
-import org.chromium.chrome.browser.tab.Tab; |
-import org.chromium.chrome.browser.tabmodel.EmptyTabModelObserver; |
-import org.chromium.chrome.browser.tabmodel.TabModel.TabLaunchType; |
-import org.chromium.chrome.browser.tabmodel.TabModel.TabSelectionType; |
-import org.chromium.chrome.browser.tabmodel.TabModelSelector; |
-import org.chromium.chrome.browser.widget.accessibility.AccessibilityTabModelWrapper; |
-import org.chromium.content.browser.ContentVideoViewClient; |
-import org.chromium.content.browser.ContentViewCore; |
-import org.chromium.content.browser.ContentViewRenderView; |
-import org.chromium.content_public.browser.LoadUrlParams; |
-import org.chromium.ui.base.PageTransition; |
-import org.chromium.ui.base.WindowAndroid; |
- |
-/** |
- * The TabManager hooks together all of the related {@link View}s that are used to represent |
- * a {@link ChromeShellTab}. It properly builds a {@link ChromeShellTab} and makes sure that the |
- * {@link ChromeShellToolbar} and {@link ContentViewRenderView} show the proper content. |
- */ |
-public class TabManager extends LinearLayout { |
- private static final String DEFAULT_URL = "https://www.google.com"; |
- |
- private ViewGroup mContentViewHolder; |
- private ContentViewRenderView mContentViewRenderView; |
- private ChromeShellToolbar mToolbar; |
- |
- private ChromeShellTab mCurrentTab; |
- |
- private String mStartupUrl = DEFAULT_URL; |
- |
- private ChromeShellTabModelSelector mTabModelSelector; |
- private AccessibilityTabModelWrapper mTabModelWrapper; |
- |
- private final EmptyTabModelObserver mTabModelObserver = new EmptyTabModelObserver() { |
- @Override |
- public void didSelectTab(Tab tab, TabSelectionType type, int lastId) { |
- assert tab instanceof ChromeShellTab; |
- setCurrentTab((ChromeShellTab) tab); |
- hideTabSwitcher(); |
- } |
- |
- @Override |
- public void willCloseTab(Tab tab, boolean animate) { |
- if (tab == mCurrentTab) setCurrentTab(null); |
- if (mTabModelSelector.getCurrentModel().getCount() == 1) { |
- createNewTab(); |
- } |
- } |
- }; |
- |
- /** |
- * @param context The Context the view is running in. |
- * @param attrs The attributes of the XML tag that is inflating the view. |
- */ |
- public TabManager(Context context, AttributeSet attrs) { |
- super(context, attrs); |
- } |
- |
- /** |
- * Initialize the components required for Tab creation. |
- * @param window The window used to generate all ContentViews. |
- * @param videoViewClient The client to handle interactions from ContentVideoViews. |
- */ |
- public void initialize(WindowAndroid window, ContentVideoViewClient videoViewClient) { |
- assert window != null; |
- assert videoViewClient != null; |
- |
- mContentViewHolder = (ViewGroup) findViewById(R.id.content_container); |
- |
- mTabModelSelector = new ChromeShellTabModelSelector( |
- window, videoViewClient, mContentViewHolder.getContext(), this); |
- mTabModelSelector.getModel(false).addObserver(mTabModelObserver); |
- |
- mToolbar = (ChromeShellToolbar) findViewById(R.id.toolbar); |
- mToolbar.setTabManager(this); |
- mContentViewRenderView = new ContentViewRenderView(getContext()) { |
- @Override |
- protected void onReadyToRender() { |
- if (mCurrentTab == null) createTab(mStartupUrl, TabLaunchType.FROM_RESTORE); |
- } |
- }; |
- mContentViewRenderView.onNativeLibraryLoaded(window); |
- mContentViewHolder.addView(mContentViewRenderView, |
- new FrameLayout.LayoutParams( |
- FrameLayout.LayoutParams.MATCH_PARENT, |
- FrameLayout.LayoutParams.MATCH_PARENT)); |
- } |
- |
- /** |
- * Get the ContentViewRenderView. |
- */ |
- public ContentViewRenderView getContentViewRenderView() { |
- return mContentViewRenderView; |
- } |
- |
- /** |
- * @param startupUrl The URL that the first tab should navigate to. |
- */ |
- public void setStartupUrl(String startupUrl) { |
- mStartupUrl = startupUrl; |
- } |
- |
- /** |
- * Enter or leave overlay video mode. |
- * @param enabled Whether overlay mode is enabled. |
- */ |
- public void setOverlayVideoMode(boolean enabled) { |
- if (mContentViewRenderView == null) return; |
- mContentViewRenderView.setOverlayVideoMode(enabled); |
- } |
- |
- /** |
- * @return The currently visible {@link ChromeShellTab}. |
- */ |
- public ChromeShellTab getCurrentTab() { |
- return mCurrentTab; |
- } |
- |
- /** |
- * Ensures that at least one tab exists, by opening a new one if necessary. |
- */ |
- public void ensureTabExists() { |
- if (mTabModelSelector.getCurrentModel().getCount() == 0) { |
- createNewTab(); |
- } |
- } |
- |
- /** |
- * Opens a new blank tab. |
- */ |
- public void createNewTab() { |
- createTab("about:blank", TabLaunchType.FROM_MENU_OR_OVERVIEW); |
- } |
- |
- /** |
- * Closes all current tabs. |
- */ |
- public void closeAllTabs() { |
- mTabModelSelector.getCurrentModel().closeAllTabs(); |
- } |
- |
- @VisibleForTesting |
- public void closeTab() { |
- mTabModelSelector.getCurrentModel().closeTab(mCurrentTab); |
- } |
- |
- /** |
- * Creates a {@link ChromeShellTab} with a URL specified by {@code url}. |
- * @param url The URL the new {@link ChromeShellTab} should start with. |
- * @return The newly created tab, or null if the content view is uninitialized. |
- */ |
- public Tab createTab(String url, TabLaunchType type) { |
- if (!isContentViewRenderViewInitialized()) return null; |
- |
- LoadUrlParams loadUrlParams = new LoadUrlParams(url); |
- Tab tab = mTabModelSelector.openNewTab(loadUrlParams, type, null, false); |
- tab.addObserver(new EmptyTabObserver() { |
- @Override |
- public void onToggleFullscreenMode(Tab tab, boolean enable) { |
- mToolbar.setVisibility(enable ? GONE : VISIBLE); |
- } |
- |
- @Override |
- public void onContentChanged(Tab tab) { |
- setupContent(); |
- } |
- }); |
- return tab; |
- } |
- |
- void openNewTab( |
- LoadUrlParams params, TabLaunchType launchType, Tab parentTab, boolean incognito) { |
- mTabModelSelector.openNewTab(params, launchType, parentTab, incognito); |
- } |
- |
- private boolean isContentViewRenderViewInitialized() { |
- return mContentViewRenderView != null && mContentViewRenderView.isInitialized(); |
- } |
- |
- private void setCurrentTab(ChromeShellTab tab) { |
- if (mCurrentTab != null) { |
- mContentViewHolder.removeView(mCurrentTab.getView()); |
- } |
- |
- mCurrentTab = tab; |
- |
- mToolbar.showTab(mCurrentTab); |
- |
- if (mCurrentTab != null) setupContent(); |
- } |
- |
- private void setupContent() { |
- View view = mCurrentTab.getView(); |
- ContentViewCore contentViewCore = mCurrentTab.getContentViewCore(); |
- mContentViewHolder.addView(view); |
- mContentViewRenderView.setCurrentContentViewCore(contentViewCore); |
- view.requestFocus(); |
- contentViewCore.onShow(); |
- } |
- |
- /** |
- * Hide the tab switcher. |
- */ |
- public void hideTabSwitcher() { |
- if (mTabModelWrapper == null) return; |
- if (!isTabSwitcherVisible()) return; |
- ViewParent parent = mTabModelWrapper.getParent(); |
- if (parent != null) { |
- assert parent == mContentViewHolder; |
- mContentViewHolder.removeView(mTabModelWrapper); |
- } |
- mToolbar.updateToolbarState(); |
- } |
- |
- /** |
- * Shows the tab switcher. |
- */ |
- private void showTabSwitcher() { |
- if (mTabModelWrapper == null) { |
- mTabModelWrapper = (AccessibilityTabModelWrapper) LayoutInflater.from( |
- mContentViewHolder.getContext()).inflate( |
- R.layout.accessibility_tab_switcher, null); |
- mTabModelWrapper.setup(null); |
- mTabModelWrapper.setTabModelSelector(mTabModelSelector); |
- } |
- |
- if (mTabModelWrapper.getParent() == null) { |
- mContentViewHolder.addView(mTabModelWrapper); |
- } |
- mToolbar.updateToolbarState(); |
- } |
- |
- /** |
- * Returns the visibility status of the tab switcher. |
- */ |
- public boolean isTabSwitcherVisible() { |
- return mTabModelWrapper != null && mTabModelWrapper.getParent() == mContentViewHolder; |
- } |
- |
- /** |
- * Toggles the tab switcher visibility. |
- */ |
- public void toggleTabSwitcher() { |
- if (!isTabSwitcherVisible()) { |
- showTabSwitcher(); |
- } else { |
- hideTabSwitcher(); |
- } |
- } |
- |
- /** |
- * Opens a URL in the current tab if one exists, or in a new tab otherwise. |
- * @param url The URL to open. |
- * @return The tab used to open the provided URL. |
- */ |
- public Tab openUrl(String url) { |
- LoadUrlParams loadUrlParams = new LoadUrlParams(url); |
- loadUrlParams.setTransitionType(PageTransition.TYPED | PageTransition.FROM_ADDRESS_BAR); |
- Tab tab = mTabModelSelector.getCurrentTab(); |
- if (tab != null) { |
- tab.loadUrl(loadUrlParams); |
- return tab; |
- } |
- return createTab(url, TabLaunchType.FROM_KEYBOARD); |
- } |
- |
- /** |
- * Returns the TabModelSelector containing the tabs. |
- */ |
- public TabModelSelector getTabModelSelector() { |
- return mTabModelSelector; |
- } |
-} |