Index: chrome/android/java/src/org/chromium/chrome/browser/infobar/InfoBarContainer.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/infobar/InfoBarContainer.java b/chrome/android/java/src/org/chromium/chrome/browser/infobar/InfoBarContainer.java |
index 63561edc1694c6809b21d6f5ebfbdaf9989bfa02..67cd04be0237fabfa6159d25909c9dec454ebd76 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/infobar/InfoBarContainer.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/infobar/InfoBarContainer.java |
@@ -4,6 +4,7 @@ |
package org.chromium.chrome.browser.infobar; |
+import android.app.Activity; |
import android.content.Context; |
import android.view.Gravity; |
import android.view.View; |
@@ -14,8 +15,10 @@ import org.chromium.base.ObserverList; |
import org.chromium.base.VisibleForTesting; |
import org.chromium.base.annotations.CalledByNative; |
import org.chromium.chrome.R; |
+import org.chromium.chrome.browser.ChromeActivity; |
import org.chromium.chrome.browser.banners.SwipableOverlayView; |
import org.chromium.chrome.browser.infobar.InfoBarContainerLayout.Item; |
+import org.chromium.chrome.browser.snackbar.SnackbarManager; |
import org.chromium.chrome.browser.tab.EmptyTabObserver; |
import org.chromium.chrome.browser.tab.Tab; |
import org.chromium.chrome.browser.tab.TabObserver; |
@@ -115,9 +118,19 @@ public class InfoBarContainer extends SwipableOverlayView { |
@Override |
public void onReparentingFinished(Tab tab) { |
setParentView((ViewGroup) tab.getActivity().findViewById(R.id.bottom_container)); |
+ setSnackbarManagerFromTab(tab); |
} |
}; |
+ private void setSnackbarManagerFromTab(Tab tab) { |
+ Activity activity = tab.getActivity(); |
+ if (activity != null) { |
+ mSnackbarManager = ((ChromeActivity) activity).getSnackbarManager(); |
+ } else { |
+ mSnackbarManager = null; |
+ } |
+ } |
+ |
/** |
* Adds/removes the {@link InfoBarContainer} when the tab's view is attached/detached. This is |
* mostly to ensure the infobars are not shown in tab switcher overview mode. |
@@ -161,10 +174,14 @@ public class InfoBarContainer extends SwipableOverlayView { |
private final ObserverList<InfoBarContainerObserver> mObservers = |
new ObserverList<InfoBarContainerObserver>(); |
+ /** The snackbar manager instance used by the activity that hosts this infobar. */ |
+ private SnackbarManager mSnackbarManager; |
+ |
public InfoBarContainer(Context context, final ViewGroup parentView, Tab tab) { |
super(context, null); |
tab.addObserver(mTabObserver); |
mTabView = tab.getView(); |
+ setSnackbarManagerFromTab(tab); |
// TODO(newt): move this workaround into the infobar views if/when they're scrollable. |
// Workaround for http://crbug.com/407149. See explanation in onMeasure() below. |
@@ -192,6 +209,10 @@ public class InfoBarContainer extends SwipableOverlayView { |
mNativeInfoBarContainer = nativeInit(); |
} |
+ public SnackbarManager getSnackbarManager() { |
+ return mSnackbarManager; |
+ } |
+ |
/** |
* Adds an {@link InfoBarContainerObserver}. |
* @param observer The {@link InfoBarContainerObserver} to add. |