Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2098)

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorTabModelObserver.java

Issue 2440643002: Remove TabModelSelector's dependency on ChromeFullscreenManager. (Closed)
Patch Set: file move Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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);
}
}
}

Powered by Google App Engine
This is Rietveld 408576698