Index: chrome/android/java_staging/src/org/chromium/chrome/browser/tabmodel/TabWindowManager.java |
diff --git a/chrome/android/java_staging/src/org/chromium/chrome/browser/tabmodel/TabWindowManager.java b/chrome/android/java_staging/src/org/chromium/chrome/browser/tabmodel/TabWindowManager.java |
deleted file mode 100644 |
index a7f623b2fc5f8f29d31d7822a0d14562879c544b..0000000000000000000000000000000000000000 |
--- a/chrome/android/java_staging/src/org/chromium/chrome/browser/tabmodel/TabWindowManager.java |
+++ /dev/null |
@@ -1,180 +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.tabmodel; |
- |
-import android.app.Activity; |
- |
-import org.chromium.base.ActivityState; |
-import org.chromium.base.ApplicationStatus; |
-import org.chromium.base.ApplicationStatus.ActivityStateListener; |
-import org.chromium.base.ThreadUtils; |
-import org.chromium.base.VisibleForTesting; |
-import org.chromium.chrome.browser.ChromeActivity; |
-import org.chromium.ui.base.WindowAndroid; |
- |
-import java.util.ArrayList; |
-import java.util.HashMap; |
-import java.util.List; |
-import java.util.Map; |
- |
-/** |
- * Manages multiple {@link TabModelSelector} instances, each owned by different {@link Activity}s. |
- */ |
-public class TabWindowManager implements ActivityStateListener { |
- /** |
- * An index that represents the invalid state (i.e. when the window wasn't found in the list. |
- */ |
- public static final int INVALID_WINDOW_INDEX = -1; |
- |
- /** The maximum number of simultaneous TabModelSelector instances in this Application. */ |
- @VisibleForTesting |
- public static final int MAX_SIMULTANEOUS_SELECTORS = 3; |
- |
- /** |
- * A factory interface for building a {@link TabModelSelector} instance. |
- */ |
- public interface TabModelSelectorFactory { |
- /** |
- * Builds a {@link TabModelSelector}. |
- * @param activity A {@link ChromeActivity} instance. |
- * @param windowAndroid A {@link WindowAndroid} instance that should connect to |
- * {@code activity}. |
- * @param selectorIndex The index of the {@link TabModelSelector}. |
- * @return A new {@link TabModelSelector} instance. |
- */ |
- TabModelSelector buildSelector(ChromeActivity activity, WindowAndroid windowAndroid, |
- int selectorIndex); |
- } |
- |
- /** The singleton reference. */ |
- private static TabWindowManager sInstance; |
- |
- private TabModelSelectorFactory mSelectorFactory = new DefaultTabModelSelectorFactory(); |
- |
- private List<TabModelSelector> mSelectors = new ArrayList<TabModelSelector>(); |
- |
- private Map<Activity, TabModelSelector> mAssignments = |
- new HashMap<Activity, TabModelSelector>(); |
- |
- /** |
- * @return The singleton instance of {@link TabWindowManager}. |
- */ |
- public static TabWindowManager getInstance() { |
- ThreadUtils.assertOnUiThread(); |
- if (sInstance == null) sInstance = new TabWindowManager(); |
- return sInstance; |
- } |
- |
- /** |
- * Called to request a {@link TabModelSelector} based on {@code index}. Note that the |
- * {@link TabModelSelector} returned might not actually be the one related to {@code index} |
- * and {@link #getIndexForWindow(Activity)} should be called to grab the actual index if |
- * required. |
- * @param activity An instance of {@link ChromeActivity}. Must be the same {@link Activity} as |
- * the one referenced by {@code window}. |
- * @param window A {@link WindowAndroid} as an instance. The {@link TabModelSelector} that is |
- * created is bound to the {@link Activity} stored inside this window. |
- * @param index The index of the requested {@link TabModelSelector}. Not guaranteed to be |
- * the index of the {@link TabModelSelector} returned. |
- * @return A {@link TabModelSelector} index, or {@code null} if there are too many |
- * {@link TabModelSelector}s already built. |
- */ |
- public TabModelSelector requestSelector(ChromeActivity activity, WindowAndroid window, |
- int index) { |
- if (mAssignments.get(activity) != null) { |
- return mAssignments.get(activity); |
- } |
- |
- if (index < 0 || index >= mSelectors.size()) index = 0; |
- |
- if (mSelectors.get(index) != null) { |
- for (int i = 0; i < mSelectors.size(); i++) { |
- if (mSelectors.get(i) == null) { |
- index = i; |
- break; |
- } |
- } |
- } |
- |
- // Too many activities going at once. |
- if (mSelectors.get(index) != null) return null; |
- |
- TabModelSelector selector = mSelectorFactory.buildSelector(activity, window, index); |
- mSelectors.set(index, selector); |
- mAssignments.put(activity, selector); |
- |
- return selector; |
- } |
- |
- /** |
- * Finds the current index of the {@link TabModelSelector} bound to {@code window}. |
- * @param activity The {@link Activity} to find the index of the {@link TabModelSelector} |
- * for. This uses the underlying {@link Activity} stored in the |
- * {@link WindowAndroid}. |
- * @return The index of the {@link TabModelSelector} or {@link #INVALID_WINDOW_INDEX} if |
- * not found. |
- */ |
- public int getIndexForWindow(Activity activity) { |
- if (activity == null) return INVALID_WINDOW_INDEX; |
- TabModelSelector selector = mAssignments.get(activity); |
- if (selector == null) return INVALID_WINDOW_INDEX; |
- int index = mSelectors.indexOf(selector); |
- return index == -1 ? INVALID_WINDOW_INDEX : index; |
- } |
- |
- /** |
- * @return The number of {@link TabModelSelector}s currently assigned to {@link Activity}s. |
- */ |
- public int getNumberOfAssignedTabModelSelectors() { |
- return mAssignments.size(); |
- } |
- |
- /** |
- * @return The total number of incognito tabs across all tab model selectors. |
- */ |
- public int getIncognitoTabCount() { |
- int count = 0; |
- for (int i = 0; i < mSelectors.size(); i++) { |
- if (mSelectors.get(i) != null) { |
- count += mSelectors.get(i).getModel(true).getCount(); |
- } |
- } |
- return count; |
- } |
- |
- @Override |
- public void onActivityStateChange(Activity activity, int newState) { |
- if (newState == ActivityState.DESTROYED && mAssignments.containsKey(activity)) { |
- int index = mSelectors.indexOf(mAssignments.remove(activity)); |
- if (index >= 0) mSelectors.set(index, null); |
- // TODO(dtrainor): Move TabModelSelector#destroy() calls here. |
- } |
- } |
- |
- /** |
- * Allows overriding the default {@link TabModelSelectorFactory} with another one. Typically |
- * for testing. |
- * @param factory A {@link TabModelSelectorFactory} instance. |
- */ |
- @VisibleForTesting |
- public void setTabModelSelectorFactory(TabModelSelectorFactory factory) { |
- mSelectorFactory = factory; |
- } |
- |
- private TabWindowManager() { |
- ApplicationStatus.registerStateListenerForAllActivities(this); |
- |
- for (int i = 0; i < MAX_SIMULTANEOUS_SELECTORS; i++) mSelectors.add(null); |
- } |
- |
- private static class DefaultTabModelSelectorFactory implements TabModelSelectorFactory { |
- @Override |
- public TabModelSelector buildSelector(ChromeActivity activity, WindowAndroid windowAndroid, |
- int selectorIndex) { |
- assert activity == windowAndroid.getActivity().get(); |
- return new TabModelSelectorImpl(activity, selectorIndex, windowAndroid); |
- } |
- } |
-} |