| Index: chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorBase.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorBase.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorBase.java
|
| index 47da506e292b98f617c12b084f3bea8b530ae869..3ca0c2af95247449f177b6338f654def659fcbc6 100644
|
| --- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorBase.java
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorBase.java
|
| @@ -4,6 +4,7 @@
|
|
|
| package org.chromium.chrome.browser.tabmodel;
|
|
|
| +import org.chromium.base.ObserverList;
|
| import org.chromium.chrome.browser.Tab;
|
| import org.chromium.chrome.browser.tabmodel.TabModel.TabLaunchType;
|
| import org.chromium.chrome.browser.tabmodel.TabModel.TabSelectionType;
|
| @@ -21,7 +22,8 @@ public abstract class TabModelSelectorBase implements TabModelSelector {
|
|
|
| private List<TabModel> mTabModels = Collections.emptyList();
|
| private int mActiveModelIndex = NORMAL_TAB_MODEL_INDEX;
|
| - private final ArrayList<ChangeListener> mChangeListeners = new ArrayList<ChangeListener>();
|
| + private final ObserverList<ChangeListener> mObservers =
|
| + new ObserverList<ChangeListener>();
|
|
|
| protected final void initialize(boolean startIncognito, TabModel... models) {
|
| // Only normal and incognito supported for now.
|
| @@ -171,13 +173,23 @@ public abstract class TabModelSelectorBase implements TabModelSelector {
|
| }
|
|
|
| @Override
|
| - public void registerChangeListener(ChangeListener changeListener) {
|
| - if (!mChangeListeners.contains(changeListener)) mChangeListeners.add(changeListener);
|
| + public void registerChangeListener(ChangeListener observer) {
|
| + if (!mObservers.hasObserver(observer)) mObservers.addObserver(observer);
|
| }
|
|
|
| @Override
|
| - public void unregisterChangeListener(ChangeListener changeListener) {
|
| - mChangeListeners.remove(changeListener);
|
| + public void unregisterChangeListener(ChangeListener observer) {
|
| + mObservers.removeObserver(observer);
|
| + }
|
| +
|
| + @Override
|
| + public void addObserver(TabModelSelectorObserver observer) {
|
| + registerChangeListener(observer);
|
| + }
|
| +
|
| + @Override
|
| + public void removeObserver(TabModelSelectorObserver observer) {
|
| + unregisterChangeListener(observer);
|
| }
|
|
|
| /**
|
| @@ -185,8 +197,8 @@ public abstract class TabModelSelectorBase implements TabModelSelector {
|
| * changed.
|
| */
|
| protected void notifyChanged() {
|
| - for (int i = 0; i < mChangeListeners.size(); i++) {
|
| - mChangeListeners.get(i).onChange();
|
| + for (ChangeListener listener : mObservers) {
|
| + listener.onChange();
|
| }
|
| }
|
|
|
| @@ -195,8 +207,8 @@ public abstract class TabModelSelectorBase implements TabModelSelector {
|
| * @param tab The tab that has been created.
|
| */
|
| private void notifyNewTabCreated(Tab tab) {
|
| - for (int i = 0; i < mChangeListeners.size(); i++) {
|
| - mChangeListeners.get(i).onNewTabCreated(tab);
|
| + for (ChangeListener listener : mObservers) {
|
| + listener.onNewTabCreated(tab);
|
| }
|
| }
|
| }
|
|
|