Index: chrome/android/java/src/org/chromium/chrome/browser/dom_distiller/ReaderModeManager.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/dom_distiller/ReaderModeManager.java b/chrome/android/java/src/org/chromium/chrome/browser/dom_distiller/ReaderModeManager.java |
index 8cc347dffb5341dbf0309f2e5dbdaa2bc90f187b..d8eded3787d5eb9e6aacf4c09858d9dcfc395602 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/dom_distiller/ReaderModeManager.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/dom_distiller/ReaderModeManager.java |
@@ -86,10 +86,14 @@ public class ReaderModeManager extends TabModelSelectorTabObserver |
private final int mHeaderBackgroundColor; |
private boolean mIsFullscreenModeEntered; |
- private boolean mIsInfoBarContainerShown; |
private boolean mIsFindToolbarShowing; |
private boolean mIsKeyboardShowing; |
+ // InfoBar tracking. |
+ private boolean mIsInfoBarContainerShown; |
+ private boolean mContainerHasInfoBars; |
+ |
+ |
public ReaderModeManager(TabModelSelector selector, ChromeActivity activity) { |
super(selector); |
mTabId = Tab.INVALID_TAB_ID; |
@@ -261,8 +265,12 @@ public class ReaderModeManager extends TabModelSelectorTabObserver |
@Override |
public void onAddInfoBar(InfoBarContainer container, InfoBar infoBar, boolean isFirst) { |
- // Temporarily hides the reader mode button while the infobars are shown. |
- if (isFirst) { |
+ mContainerHasInfoBars = true; |
+ // If the panel is opened past the peeking state, obscure the infobar. |
+ if (mReaderModePanel != null && mReaderModePanel.isPanelOpened()) { |
+ container.setIsObscuredByOtherView(true); |
+ } else if (isFirst) { |
+ // Temporarily hides the reader mode button while the infobars are shown. |
mIsInfoBarContainerShown = true; |
closeReaderPanel(StateChangeReason.INFOBAR_SHOWN, false); |
} |
@@ -272,6 +280,7 @@ public class ReaderModeManager extends TabModelSelectorTabObserver |
public void onRemoveInfoBar(InfoBarContainer container, InfoBar infoBar, boolean isLast) { |
// Re-shows the reader mode button if necessary once the infobars are dismissed. |
if (isLast) { |
+ mContainerHasInfoBars = false; |
mIsInfoBarContainerShown = false; |
requestReaderPanelShow(StateChangeReason.INFOBAR_HIDDEN); |
} |
@@ -315,6 +324,14 @@ public class ReaderModeManager extends TabModelSelectorTabObserver |
@Override |
public void onClosed(StateChangeReason reason) { |
+ if (mContainerHasInfoBars && mTabModelSelector != null) { |
+ Tab curTab = mTabModelSelector.getCurrentTab(); |
+ if (curTab != null) { |
+ InfoBarContainer container = curTab.getInfoBarContainer(); |
+ container.setIsObscuredByOtherView(false); |
+ } |
+ } |
+ |
if (mReaderModePanel == null) return; |
// Only dismiss the panel if the close was a result of user interaction. |