Index: chrome/android/java/src/org/chromium/chrome/browser/Tab.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/Tab.java b/chrome/android/java/src/org/chromium/chrome/browser/Tab.java |
index a6f9c7a7afd595472f13fe902213a9604e35a933..87803beeb4bae37b5174e0006768c03738c44dd3 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/Tab.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/Tab.java |
@@ -1241,12 +1241,17 @@ public class Tab implements ViewGroup.OnHierarchyChangeListener, |
} |
/** |
- * Perform any subclass-specific initialization tasks. |
+ * Perform any class-specific initialization tasks. |
* @param tabContentManager A {@link TabContentManager} instance or {@code null} if the web |
* content will be managed/displayed manually. |
*/ |
protected void internalInit(TabContentManager tabContentManager) { |
initializeNative(); |
+ |
+ if (AppBannerManager.isEnabled()) { |
+ mAppBannerManager = new AppBannerManager(this); |
+ addObserver(mAppBannerManager); |
+ } |
} |
/** |
@@ -1370,10 +1375,6 @@ public class Tab implements ViewGroup.OnHierarchyChangeListener, |
} |
mInfoBarContainer.setContentViewCore(mContentViewCore); |
- if (AppBannerManager.isEnabled() && mAppBannerManager == null) { |
- mAppBannerManager = new AppBannerManager(this); |
- } |
- |
if (DomDistillerFeedbackReporter.isEnabled() && mDomDistillerFeedbackReporter == null) { |
mDomDistillerFeedbackReporter = new DomDistillerFeedbackReporter(this); |
} |
@@ -1467,6 +1468,13 @@ public class Tab implements ViewGroup.OnHierarchyChangeListener, |
mInfoBarContainer = null; |
} |
+ // Destroy the AppBannerManager after the InfoBarContainer because it monitors for infobar |
+ // removals. |
+ if (mAppBannerManager != null) { |
+ mAppBannerManager.destroy(); |
+ mAppBannerManager = null; |
+ } |
+ |
mPreviousFullscreenTopControlsOffsetY = Float.NaN; |
mPreviousFullscreenContentOffsetY = Float.NaN; |