| Index: chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorTabModelObserver.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorTabObserver.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorTabModelObserver.java
|
| similarity index 50%
|
| copy from chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorTabObserver.java
|
| copy to chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorTabModelObserver.java
|
| index b6f49fe6f43cbaf4b687fc2ac067398516ba903c..0c60bbd5ea627fec28be3816dc58b407b259306e 100644
|
| --- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorTabObserver.java
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorTabModelObserver.java
|
| @@ -1,51 +1,37 @@
|
| -// Copyright 2014 The Chromium Authors. All rights reserved.
|
| +// Copyright 2016 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.EmptyTabObserver;
|
| import org.chromium.chrome.browser.tab.Tab;
|
| -import org.chromium.chrome.browser.tabmodel.TabModel.TabLaunchType;
|
|
|
| import java.util.List;
|
|
|
| /**
|
| - * Observer of tab changes for all tabs owned by a {@link TabModelSelector}.
|
| + * Observer for all {@link TabModel}s owned by a {@link TabModelSelector}.
|
| + *
|
| + * <p>
|
| + * This can safely be constructed before native libraries have been initialized as this will
|
| + * register to observe the underlying TabModels as they are created lazily.
|
| */
|
| -public class TabModelSelectorTabObserver extends EmptyTabObserver {
|
| -
|
| +public class TabModelSelectorTabModelObserver extends EmptyTabModelObserver {
|
| private final TabModelSelector mTabModelSelector;
|
| - private final TabModelObserver mTabModelObserver;
|
|
|
| private TabModelSelectorObserver mSelectorObserver;
|
|
|
| /**
|
| - * Constructs an observer that should be notified of tabs changes for all tabs owned
|
| - * by a specified {@link TabModelSelector}. Any Tabs created after this call will be
|
| - * observed as well, and Tabs removed will no longer have their information broadcast.
|
| + * Constructs an observer that should be notified of changes for all tab models owned
|
| + * by a specified {@link TabModelSelector}.
|
| *
|
| * <p>
|
| * {@link #destroy()} must be called to unregister this observer.
|
| *
|
| - * @param selector The selector that owns the Tabs that should notify this observer.
|
| + * @param selector The selector that owns the Tab Models that should notify this observer.
|
| */
|
| - public TabModelSelectorTabObserver(TabModelSelector selector) {
|
| + public TabModelSelectorTabModelObserver(TabModelSelector selector) {
|
| mTabModelSelector = selector;
|
|
|
| - mTabModelObserver = new EmptyTabModelObserver() {
|
| - @Override
|
| - public void didAddTab(Tab tab, TabLaunchType type) {
|
| - // This observer is automatically removed by tab when it is destroyed.
|
| - tab.addObserver(TabModelSelectorTabObserver.this);
|
| - }
|
| -
|
| - @Override
|
| - public void tabRemoved(Tab tab) {
|
| - tab.removeObserver(TabModelSelectorTabObserver.this);
|
| - }
|
| - };
|
| -
|
| List<TabModel> tabModels = selector.getModels();
|
| if (tabModels.isEmpty()) {
|
| mSelectorObserver = new EmptyTabModelSelectorObserver() {
|
| @@ -71,13 +57,16 @@ public class TabModelSelectorTabObserver extends EmptyTabObserver {
|
| List<TabModel> tabModels = mTabModelSelector.getModels();
|
| for (int i = 0; i < tabModels.size(); i++) {
|
| TabModel tabModel = tabModels.get(i);
|
| - tabModel.addObserver(mTabModelObserver);
|
| -
|
| - TabList comprehensiveTabList = tabModel.getComprehensiveModel();
|
| - for (int j = 0; j < comprehensiveTabList.getCount(); j++) {
|
| - comprehensiveTabList.getTabAt(j).addObserver(this);
|
| - }
|
| + tabModel.addObserver(this);
|
| }
|
| +
|
| + onRegistrationComplete();
|
| + }
|
| +
|
| + /**
|
| + * Notifies that the registration of the observers has been completed.
|
| + */
|
| + protected void onRegistrationComplete() {
|
| }
|
|
|
| /**
|
| @@ -92,12 +81,7 @@ public class TabModelSelectorTabObserver extends EmptyTabObserver {
|
| List<TabModel> tabModels = mTabModelSelector.getModels();
|
| for (int i = 0; i < tabModels.size(); i++) {
|
| TabModel tabModel = tabModels.get(i);
|
| - tabModel.removeObserver(mTabModelObserver);
|
| -
|
| - TabList comprehensiveTabList = tabModel.getComprehensiveModel();
|
| - for (int j = 0; j < comprehensiveTabList.getCount(); j++) {
|
| - comprehensiveTabList.getTabAt(j).removeObserver(this);
|
| - }
|
| + tabModel.removeObserver(this);
|
| }
|
| }
|
| }
|
|
|