Index: chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelector.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelector.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelector.java |
new file mode 100644 |
index 0000000000000000000000000000000000000000..3e5bc99602f59aaddc14849ab2fd8190b1836a77 |
--- /dev/null |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelector.java |
@@ -0,0 +1,145 @@ |
+// 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.browser.tabmodel; |
+ |
+import org.chromium.chrome.browser.Tab; |
+import org.chromium.chrome.browser.tabmodel.TabModel.TabLaunchType; |
+import org.chromium.content.browser.LoadUrlParams; |
+ |
+import java.util.List; |
+ |
+/** |
+ * TabModelSelector is a wrapper class containing both a normal and an incognito TabModel. |
+ * This class helps the app know which mode it is currently in, and which TabModel it should |
+ * be using. |
+ */ |
+public interface TabModelSelector { |
+ /** |
+ * Interface of listener that get notified on changes in the {@link TabModel}s. |
+ */ |
+ public interface ChangeListener { |
+ /** |
+ * Called whenever the {@link TabModel} has changed. |
+ */ |
+ void onChange(); |
+ |
+ /** |
+ * Called when a new tab is created. |
+ */ |
+ void onNewTabCreated(Tab tab); |
+ } |
+ |
+ /** |
+ * Set the current model. This won't cause an animation, but will still change the stack that is |
+ * currently visible if the tab switcher is open. |
+ */ |
+ void selectModel(boolean incognito); |
+ |
+ /** |
+ * Get a specific tab model |
+ * @return Never returns null. Returns a stub when real model is uninitialized. |
+ */ |
+ TabModel getModel(boolean incognito); |
+ |
+ /** |
+ * @return a list for the underlying models |
+ */ |
+ List<TabModel> getModels(); |
+ |
+ /** |
+ * @return the model at {@code index} or null if no model exist for that index. |
+ */ |
+ TabModel getModelAt(int index); |
+ |
+ /** |
+ * Get the current tab model. |
+ * @return Never returns null. Returns a stub when real model is uninitialized. |
+ */ |
+ TabModel getCurrentModel(); |
+ |
+ /** |
+ * Convenience function to get the current tab on the current model |
+ * @return Current tab or null if none exists or if the model is not initialized. |
+ */ |
+ Tab getCurrentTab(); |
+ |
+ /** |
+ * Convenience function to get the current tab id on the current model. |
+ * @return Id of the current tab or {@link Tab#INVALID_TAB_ID} if no tab is selected or the |
+ * model is not initialized. |
+ */ |
+ int getCurrentTabId(); |
+ |
+ /** |
+ * Convenience function to get the {@link TabModel} for a {@link Tab} specified by |
+ * {@code id}. |
+ * @param id The id of the {@link Tab} to find the {@link TabModel} for. |
+ * @return The {@link TabModel} that owns the {@link Tab} specified by {@code id}. |
+ */ |
+ TabModel getModelForTabId(int id); |
+ |
+ /** |
+ * @return The index of the current {@link TabModel}. |
+ */ |
+ int getCurrentModelIndex(); |
+ |
+ /** |
+ * @return If the incognito {@link TabModel} is current. |
+ */ |
+ boolean isIncognitoSelected(); |
+ |
+ /** |
+ * Opens a new tab. |
+ * |
+ * @param loadUrlParams parameters of the url load |
+ * @param type Describes how the new tab is being opened. |
+ * @param parent The parent tab for this new tab (or null if one does not exist). |
+ * @param incognito Whether to open the new tab in incognito mode. |
+ * @return The newly opened tab. |
+ */ |
+ Tab openNewTab(LoadUrlParams loadUrlParams, TabLaunchType type, Tab parent, boolean incognito); |
+ |
+ /** |
+ * Searches through all children models for the specified Tab and closes the tab if it exists. |
+ * @param tab the non-null tab to close |
+ * @return true if the tab was found |
+ */ |
+ boolean closeTab(Tab tab); |
+ |
+ /** |
+ * Close all tabs across all tab models |
+ */ |
+ void closeAllTabs(); |
+ |
+ /** |
+ * Get total tab count across all tab models |
+ */ |
+ int getTotalTabCount(); |
+ |
+ /** |
+ * Search all TabModels for a tab with the specified id. |
+ * @return specified tab or null if tab is not found |
+ */ |
+ Tab getTabById(int id); |
+ |
+ /** |
+ * Registers a listener that get notified when the {@link TabModel} changes. Multiple listeners |
+ * can be registered at the same time. |
+ * @param changeListener The {@link TabModelSelector.ChangeListener} to notify. |
+ */ |
+ void registerChangeListener(ChangeListener changeListener); |
+ |
+ /** |
+ * Unregisters the listener. |
+ * @param changeListener The {@link TabModelSelector.ChangeListener} to remove. |
+ */ |
+ void unregisterChangeListener(ChangeListener changeListener); |
+ |
+ /** |
+ * Calls {@link TabModel#commitAllTabClosures()} on all {@link TabModel}s owned by this |
+ * selector. |
+ */ |
+ void commitAllTabClosures(); |
+} |