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); |
} |
} |
} |