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

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/dom_distiller/ReaderModeManager.java

Issue 2878543003: Hook up Reader Mode InfoBar (Closed)
Patch Set: fix tests Created 3 years, 6 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/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 97a091c6681a7874e37bdc1fb8193fdfe8999ca9..9ac0f6779abbe40ea0807eefc5572ae9aefe0a66 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
@@ -8,18 +8,12 @@ import android.content.Context;
import android.text.TextUtils;
import org.chromium.base.CommandLine;
-import org.chromium.base.SysUtils;
-import org.chromium.base.VisibleForTesting;
import org.chromium.base.library_loader.LibraryLoader;
import org.chromium.base.metrics.RecordHistogram;
import org.chromium.chrome.browser.ChromeActivity;
import org.chromium.chrome.browser.ChromeSwitches;
-import org.chromium.chrome.browser.compositor.bottombar.OverlayPanel.PanelState;
import org.chromium.chrome.browser.compositor.bottombar.OverlayPanel.StateChangeReason;
-import org.chromium.chrome.browser.compositor.bottombar.readermode.ReaderModePanel;
-import org.chromium.chrome.browser.infobar.InfoBar;
-import org.chromium.chrome.browser.infobar.InfoBarContainer;
-import org.chromium.chrome.browser.infobar.InfoBarContainer.InfoBarContainerObserver;
+import org.chromium.chrome.browser.infobar.ReaderModeInfoBar;
import org.chromium.chrome.browser.rappor.RapporServiceBridge;
import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.tabmodel.TabCreatorManager;
@@ -27,14 +21,14 @@ import org.chromium.chrome.browser.tabmodel.TabModel;
import org.chromium.chrome.browser.tabmodel.TabModelSelector;
import org.chromium.chrome.browser.tabmodel.TabModelSelectorTabObserver;
import org.chromium.chrome.browser.util.AccessibilityUtil;
-import org.chromium.chrome.browser.widget.findinpage.FindToolbarObserver;
import org.chromium.components.dom_distiller.content.DistillablePageUtils;
import org.chromium.components.dom_distiller.core.DomDistillerUrlUtils;
import org.chromium.content_public.browser.LoadUrlParams;
+import org.chromium.content_public.browser.NavigationController;
+import org.chromium.content_public.browser.NavigationEntry;
import org.chromium.content_public.browser.WebContents;
import org.chromium.content_public.browser.WebContentsObserver;
import org.chromium.ui.UiUtils;
-import org.chromium.ui.base.DeviceFormFactor;
import org.chromium.ui.base.PageTransition;
import java.util.HashMap;
@@ -46,59 +40,37 @@ import java.util.concurrent.TimeUnit;
* reader mode and reader mode preferences toolbar icon and hiding the
* browser controls when a reader mode page has finished loading.
*/
-public class ReaderModeManager extends TabModelSelectorTabObserver
- implements InfoBarContainerObserver, ReaderModeManagerDelegate {
-
- /**
- * POSSIBLE means reader mode can be entered.
- */
+public class ReaderModeManager
+ extends TabModelSelectorTabObserver implements ReaderModeManagerDelegate {
+ /** POSSIBLE means reader mode can be entered. */
public static final int POSSIBLE = 0;
- /**
- * NOT_POSSIBLE means reader mode cannot be entered.
- */
+ /** NOT_POSSIBLE means reader mode cannot be entered. */
public static final int NOT_POSSIBLE = 1;
- /**
- * STARTED means reader mode is currently in reader mode.
- */
+ /** STARTED means reader mode is currently in reader mode. */
public static final int STARTED = 2;
- // The url of the last page visited if the last page was reader mode page. Otherwise null.
+ /** The url of the last page visited if the last page was reader mode page. Otherwise null. */
private String mReaderModePageUrl;
- // Whether the fact that the current web page was distillable or not has been recorded.
+ /** Whether the fact that the current web page was distillable or not has been recorded. */
private boolean mIsUmaRecorded;
- // The per-tab state of distillation.
+ /** The per-tab state of distillation. */
protected Map<Integer, ReaderModeTabInfo> mTabStatusMap;
- // The current tab ID. This will change as the user switches between tabs.
- private int mTabId;
-
- // The ReaderModePanel that this class is managing.
- protected ReaderModePanel mReaderModePanel;
-
- // The ChromeActivity that this panel exists in.
+ /** The ChromeActivity that this infobar exists in. */
private ChromeActivity mChromeActivity;
- // The primary means of getting the currently active tab.
+ /** The primary means of getting the currently active tab. */
private TabModelSelector mTabModelSelector;
- private boolean mIsFullscreenModeEntered;
- private boolean mIsFindToolbarShowing;
- private boolean mIsKeyboardShowing;
-
- // InfoBar tracking.
- private boolean mIsInfoBarContainerShown;
-
- // If Reader Mode is detecting all pages as distillable.
+ /** If Reader Mode is detecting all pages as distillable. */
private boolean mIsReaderHeuristicAlwaysTrue;
-
public ReaderModeManager(TabModelSelector selector, ChromeActivity activity) {
super(selector);
- mTabId = Tab.INVALID_TAB_ID;
mTabModelSelector = selector;
mChromeActivity = activity;
mTabStatusMap = new HashMap<>();
@@ -129,29 +101,9 @@ public class ReaderModeManager extends TabModelSelectorTabObserver
DomDistillerUIUtils.destroy(this);
mChromeActivity = null;
- mReaderModePanel = null;
mTabModelSelector = null;
}
- /**
- * @return A FindToolbarObserver capable of hiding the Reader Mode panel.
- */
- public FindToolbarObserver getFindToolbarObserver() {
- return new FindToolbarObserver() {
- @Override
- public void onFindToolbarShown() {
- mIsFindToolbarShowing = true;
- closeReaderPanel(StateChangeReason.UNKNOWN, true);
- }
-
- @Override
- public void onFindToolbarHidden() {
- mIsFindToolbarShowing = false;
- requestReaderPanelShow(StateChangeReason.UNKNOWN);
- }
- };
- }
-
// TabModelSelectorTabObserver:
@Override
@@ -159,10 +111,8 @@ public class ReaderModeManager extends TabModelSelectorTabObserver
if (mTabModelSelector == null) return;
int shownTabId = shownTab.getId();
- Tab previousTab = mTabModelSelector.getTabById(mTabId);
- mTabId = shownTabId;
- // If the reader panel was dismissed, stop here.
+ // If the reader infobar was dismissed, stop here.
if (mTabStatusMap.containsKey(shownTabId)
&& mTabStatusMap.get(shownTabId).isDismissed()) {
return;
@@ -171,20 +121,6 @@ public class ReaderModeManager extends TabModelSelectorTabObserver
// Set this manager as the active one for the UI utils.
DomDistillerUIUtils.setReaderModeManagerDelegate(this);
- // Update infobar state based on current tab.
- if (shownTab.getInfoBarContainer() != null) {
- mIsInfoBarContainerShown = shownTab.getInfoBarContainer().hasInfoBars();
- }
-
- // Remove the infobar observer from the previous tab and attach it to the current one.
- if (previousTab != null && previousTab.getInfoBarContainer() != null) {
- previousTab.getInfoBarContainer().removeObserver(this);
- }
-
- if (shownTab.getInfoBarContainer() != null) {
- shownTab.getInfoBarContainer().addObserver(this);
- }
-
// If there is no state info for this tab, create it.
ReaderModeTabInfo tabInfo = mTabStatusMap.get(shownTabId);
if (tabInfo == null) {
@@ -194,6 +130,11 @@ public class ReaderModeManager extends TabModelSelectorTabObserver
mTabStatusMap.put(shownTabId, tabInfo);
}
+ if (DomDistillerUrlUtils.isDistilledPage(shownTab.getUrl())
+ && !tabInfo.isViewingReaderModePage()) {
+ tabInfo.onStartedReaderMode();
+ }
+
// Make sure there is a WebContentsObserver on this tab's WebContents.
if (tabInfo.getWebContentsObserver() == null) {
tabInfo.setWebContentsObserver(createWebContentsObserver(shownTab.getWebContents()));
@@ -202,24 +143,33 @@ public class ReaderModeManager extends TabModelSelectorTabObserver
// Make sure there is a distillability delegate set on the WebContents.
setDistillabilityCallback(shownTabId);
- requestReaderPanelShow(StateChangeReason.UNKNOWN);
+ tryShowingInfoBar();
}
@Override
public void onHidden(Tab tab) {
closeReaderPanel(StateChangeReason.UNKNOWN, false);
+ ReaderModeTabInfo info = mTabStatusMap.get(tab.getId());
+ if (info != null && info.isViewingReaderModePage()) {
+ long timeMs = info.onExitReaderMode();
+ recordReaderModeViewDuration(timeMs);
+ }
}
@Override
public void onDestroyed(Tab tab) {
if (tab == null) return;
- if (tab.getInfoBarContainer() != null) {
- tab.getInfoBarContainer().removeObserver(this);
- }
- // If the panel was not shown for the previous navigation, record it now.
+
+ // If the infobar was not shown for the previous navigation, record it now.
ReaderModeTabInfo info = mTabStatusMap.get(tab.getId());
- if (info != null && !info.isPanelShowRecorded()) {
- recordPanelVisibilityForNavigation(false);
+ if (info != null) {
+ if (!info.isInfoBarShowRecorded()) {
+ recordInfoBarVisibilityForNavigation(false);
+ }
+ if (info.isViewingReaderModePage()) {
+ long timeMs = info.onExitReaderMode();
+ recordReaderModeViewDuration(timeMs);
+ }
}
removeTabState(tab.getId());
}
@@ -239,20 +189,23 @@ public class ReaderModeManager extends TabModelSelectorTabObserver
@Override
public void onContentChanged(Tab tab) {
- // Only listen to events on the currently active tab.
- if (tab.getId() != mTabId) return;
- closeReaderPanel(StateChangeReason.UNKNOWN, false);
-
- if (mTabStatusMap.containsKey(mTabId)) {
- // If the panel was closed using the "x" icon, don't show it again for this tab.
- if (mTabStatusMap.get(mTabId).isDismissed()) return;
- removeTabState(mTabId);
+ // If the content change was because of distiller switching web contents or Reader Mode has
+ // already been dismissed for this tab do nothing.
+ if (mTabStatusMap.containsKey(tab.getId()) && mTabStatusMap.get(tab.getId()).isDismissed()
+ && !DomDistillerUrlUtils.isDistilledPage(tab.getUrl())) {
+ return;
}
- ReaderModeTabInfo tabInfo = new ReaderModeTabInfo();
+ ReaderModeTabInfo tabInfo = mTabStatusMap.get(tab.getId());
+ if (!mTabStatusMap.containsKey(tab.getId())) {
+ tabInfo = new ReaderModeTabInfo();
+ mTabStatusMap.put(tab.getId(), tabInfo);
+ }
+ // If the tab state already existed, only reset the relevant data. Things like view duration
+ // need to be preserved.
tabInfo.setStatus(NOT_POSSIBLE);
tabInfo.setUrl(tab.getUrl());
- mTabStatusMap.put(tab.getId(), tabInfo);
+ tabInfo.setIsCallbackSet(false);
if (tab.getWebContents() != null) {
tabInfo.setWebContentsObserver(createWebContentsObserver(tab.getWebContents()));
@@ -264,62 +217,10 @@ public class ReaderModeManager extends TabModelSelectorTabObserver
// Make sure there is a distillability delegate set on the WebContents.
setDistillabilityCallback(tab.getId());
}
-
- if (tab.getInfoBarContainer() != null) tab.getInfoBarContainer().addObserver(this);
- }
-
- @Override
- public void onToggleFullscreenMode(Tab tab, boolean enable) {
- // Temporarily hide the reader mode panel while fullscreen is enabled.
- if (enable) {
- mIsFullscreenModeEntered = true;
- closeReaderPanel(StateChangeReason.FULLSCREEN_ENTERED, false);
- } else {
- mIsFullscreenModeEntered = false;
- requestReaderPanelShow(StateChangeReason.FULLSCREEN_EXITED);
- }
- }
-
- // InfoBarContainerObserver:
-
- @Override
- public void onAddInfoBar(InfoBarContainer container, InfoBar infoBar, boolean isFirst) {
- mIsInfoBarContainerShown = true;
- // If the panel is opened past the peeking state, obscure the infobar.
- if (mReaderModePanel != null && mReaderModePanel.isPanelOpened() && container != null) {
- container.setIsObscuredByOtherView(true);
- } else if (isFirst) {
- // Temporarily hides the reader mode button while the infobars are shown.
- closeReaderPanel(StateChangeReason.INFOBAR_SHOWN, false);
- }
- }
-
- @Override
- public void onRemoveInfoBar(InfoBarContainer container, InfoBar infoBar, boolean isLast) {
- // Re-shows the reader mode button if necessary once the infobars are dismissed.
- if (isLast) {
- mIsInfoBarContainerShown = false;
- requestReaderPanelShow(StateChangeReason.INFOBAR_HIDDEN);
- }
- }
-
- @Override
- public void onInfoBarContainerAttachedToWindow(boolean hasInfoBars) {
- mIsInfoBarContainerShown = hasInfoBars;
- if (mIsInfoBarContainerShown) {
- closeReaderPanel(StateChangeReason.INFOBAR_SHOWN, false);
- } else {
- requestReaderPanelShow(StateChangeReason.INFOBAR_HIDDEN);
- }
}
// ReaderModeManagerDelegate:
- @Override
- public void setReaderModePanel(ReaderModePanel panel) {
- mReaderModePanel = panel;
- }
-
@Override
public ChromeActivity getChromeActivity() {
return mChromeActivity;
@@ -331,9 +232,9 @@ public class ReaderModeManager extends TabModelSelectorTabObserver
int tabId = mTabModelSelector.getCurrentTabId();
ReaderModeTabInfo info = mTabStatusMap.get(tabId);
- if (info != null && !info.isPanelShowRecorded()) {
- info.setIsPanelShowRecorded(true);
- recordPanelVisibilityForNavigation(true);
+ if (info != null && !info.isInfoBarShowRecorded()) {
+ info.setIsInfoBarShowRecorded(true);
+ recordInfoBarVisibilityForNavigation(true);
if (LibraryLoader.isInitialized()) {
RapporServiceBridge.sampleDomainAndRegistryFromURL(
"DomDistiller.PromptPanel", info.getUrl());
@@ -342,60 +243,24 @@ public class ReaderModeManager extends TabModelSelectorTabObserver
}
/**
- * Record if the panel became visible on the current page. This can be overridden for testing.
- * @param visible If the panel was visible at any time.
+ * Record if the infobar became visible on the current page. This can be overridden for testing.
+ * @param visible If the infobar was visible at any time.
*/
- protected void recordPanelVisibilityForNavigation(boolean visible) {
+ protected void recordInfoBarVisibilityForNavigation(boolean visible) {
RecordHistogram.recordBooleanHistogram("DomDistiller.ReaderShownForPageLoad", visible);
}
@Override
public void onClosed(StateChangeReason reason) {
- if (mReaderModePanel == null || mTabModelSelector == null) return;
-
- restoreInfobars();
-
- // Only dismiss the panel if the close was a result of user interaction.
- if (reason != StateChangeReason.FLING && reason != StateChangeReason.SWIPE
- && reason != StateChangeReason.CLOSE_BUTTON) {
- return;
- }
+ if (mTabModelSelector == null) return;
- // Record close button usage.
- if (reason == StateChangeReason.CLOSE_BUTTON) {
- RecordHistogram.recordBooleanHistogram("DomDistiller.BarCloseButtonUsage",
- mReaderModePanel.getPanelState() == PanelState.EXPANDED
- || mReaderModePanel.getPanelState() == PanelState.MAXIMIZED);
- }
+ RecordHistogram.recordBooleanHistogram("DomDistiller.InfoBarUsage", false);
int currentTabId = mTabModelSelector.getCurrentTabId();
if (!mTabStatusMap.containsKey(currentTabId)) return;
mTabStatusMap.get(currentTabId).setIsDismissed(true);
}
- @Override
- public void onPeek() {
- restoreInfobars();
- }
-
- /**
- * Restore any infobars that may have been hidden by Reader Mode.
- */
- private void restoreInfobars() {
- if (!mIsInfoBarContainerShown) return;
-
- Tab curTab = mTabModelSelector.getCurrentTab();
- if (curTab == null) return;
-
- InfoBarContainer container = curTab.getInfoBarContainer();
- if (container == null) return;
-
- container.setIsObscuredByOtherView(false);
-
- // Temporarily hides the reader mode button while the infobars are shown.
- closeReaderPanel(StateChangeReason.INFOBAR_SHOWN, false);
- }
-
@Override
public WebContents getBasePageWebContents() {
Tab tab = mTabModelSelector.getCurrentTab();
@@ -406,8 +271,7 @@ public class ReaderModeManager extends TabModelSelectorTabObserver
@Override
public void closeReaderPanel(StateChangeReason reason, boolean animate) {
- if (mReaderModePanel == null) return;
- mReaderModePanel.closePanel(reason, animate);
+ // TODO(mdjones): Remove this method and dependencies.
}
@Override
@@ -416,17 +280,6 @@ public class ReaderModeManager extends TabModelSelectorTabObserver
timeMs, TimeUnit.MILLISECONDS);
}
- @Override
- public void onLayoutChanged() {
- if (isKeyboardShowing()) {
- mIsKeyboardShowing = true;
- closeReaderPanel(StateChangeReason.KEYBOARD_SHOWN, false);
- } else if (mIsKeyboardShowing) {
- mIsKeyboardShowing = false;
- requestReaderPanelShow(StateChangeReason.KEYBOARD_HIDDEN);
- }
- }
-
/**
* @return True if the keyboard might be showing. This is not 100% accurate; see
* UiUtils.isKeyboardShowing(...).
@@ -436,15 +289,33 @@ public class ReaderModeManager extends TabModelSelectorTabObserver
mChromeActivity.findViewById(android.R.id.content));
}
- protected WebContentsObserver createWebContentsObserver(WebContents webContents) {
+ protected WebContentsObserver createWebContentsObserver(final WebContents webContents) {
final int readerTabId = mTabModelSelector.getCurrentTabId();
if (readerTabId == Tab.INVALID_TAB_ID) return null;
return new WebContentsObserver(webContents) {
+ /** Whether or not the previous navigation should be removed. */
+ private boolean mShouldRemovePreviousNavigation;
+
+ /** The index of the last committed distiller page in history. */
+ private int mLastDistillerPageIndex;
+
@Override
public void didStartNavigation(String url, boolean isInMainFrame,
boolean isSameDocument, boolean isErrorPage) {
if (!isInMainFrame || isSameDocument) return;
+
+ // Reader Mode should not pollute the navigation stack. To avoid this, watch for
+ // navigations and prepare to remove any that are "chrome-distiller" urls.
+ NavigationController controller = webContents.getNavigationController();
+ int index = controller.getLastCommittedEntryIndex();
+ NavigationEntry entry = controller.getEntryAtIndex(index);
+
+ if (entry != null && DomDistillerUrlUtils.isDistilledPage(entry.getUrl())) {
+ mShouldRemovePreviousNavigation = true;
+ mLastDistillerPageIndex = index;
+ }
+
// If there is a navigation in the current tab, hide the bar. It will show again
// once the distillability test is successful.
if (readerTabId == mTabModelSelector.getCurrentTabId()) {
@@ -470,7 +341,12 @@ public class ReaderModeManager extends TabModelSelectorTabObserver
// TODO(cjhopman): This should possibly ignore navigations that replace the entry
// (like those from history.replaceState()).
if (!hasCommitted || !isInMainFrame || isSameDocument) return;
- if (DomDistillerUrlUtils.isDistilledPage(url)) return;
+
+ if (mShouldRemovePreviousNavigation) {
+ mShouldRemovePreviousNavigation = false;
+ NavigationController controller = webContents.getNavigationController();
+ controller.removeEntryAtIndex(mLastDistillerPageIndex);
+ }
// Make sure the tab was not destroyed.
ReaderModeTabInfo tabInfo = mTabStatusMap.get(readerTabId);
@@ -488,7 +364,7 @@ public class ReaderModeManager extends TabModelSelectorTabObserver
if (tabInfo.getStatus() != POSSIBLE) {
closeReaderPanel(StateChangeReason.UNKNOWN, false);
} else {
- requestReaderPanelShow(StateChangeReason.UNKNOWN);
+ tryShowingInfoBar();
}
}
@@ -501,22 +377,35 @@ public class ReaderModeManager extends TabModelSelectorTabObserver
// happening.
tabInfo.setIsDismissed(false);
- // If the panel was not shown for the previous navigation, record it now.
+ // If the infobar was not shown for the previous navigation, record it now.
Tab curTab = mTabModelSelector.getTabById(readerTabId);
if (curTab != null && !curTab.isNativePage() && !curTab.isBeingRestored()) {
- recordPanelVisibilityForNavigation(false);
+ recordInfoBarVisibilityForNavigation(false);
+ }
+ tabInfo.setIsInfoBarShowRecorded(false);
+
+ if (curTab != null && !DomDistillerUrlUtils.isDistilledPage(curTab.getUrl())
+ && tabInfo.isViewingReaderModePage()) {
+ long timeMs = tabInfo.onExitReaderMode();
+ recordReaderModeViewDuration(timeMs);
}
- tabInfo.setIsPanelShowRecorded(false);
}
};
}
/**
- * This is a wrapper for "requestPanelShow" that checks if reader mode is possible before
- * showing.
- * @param reason The reason the panel is requesting to be shown.
+ * Record the amount of time the user spent in Reader Mode.
+ * @param timeMs The amount of time in ms that the user spent in Reader Mode.
*/
- protected void requestReaderPanelShow(StateChangeReason reason) {
+ private void recordReaderModeViewDuration(long timeMs) {
+ RecordHistogram.recordLongTimesHistogram(
+ "DomDistiller.Time.ViewingReaderModePage", timeMs, TimeUnit.MILLISECONDS);
+ }
+
+ /**
+ * Try showing the reader mode infobar.
+ */
+ protected void tryShowingInfoBar() {
if (mTabModelSelector == null) return;
int currentTabId = mTabModelSelector.getCurrentTabId();
@@ -528,23 +417,36 @@ public class ReaderModeManager extends TabModelSelectorTabObserver
&& getBasePageWebContents().getNavigationController().getUseDesktopUserAgent()
&& !mIsReaderHeuristicAlwaysTrue;
- if (mReaderModePanel == null || !mTabStatusMap.containsKey(currentTabId)
- || usingRequestDesktopSite
+ if (!mTabStatusMap.containsKey(currentTabId) || usingRequestDesktopSite
|| mTabStatusMap.get(currentTabId).getStatus() != POSSIBLE
|| mTabStatusMap.get(currentTabId).isDismissed()
- || mIsInfoBarContainerShown
- || mIsFindToolbarShowing
- || mIsFullscreenModeEntered
- || mIsKeyboardShowing
|| AccessibilityUtil.isAccessibilityEnabled()) {
return;
}
- mReaderModePanel.requestPanelShow(reason);
+ ReaderModeInfoBar.showReaderModeInfoBar(mTabModelSelector.getCurrentTab(), this);
+ }
+
+ /**
+ * Navigate the current tab to a Reader Mode URL.
+ */
+ public void navigateToReaderMode() {
+ RecordHistogram.recordBooleanHistogram("DomDistiller.InfoBarUsage", true);
+
+ WebContents baseWebContents = getBasePageWebContents();
+ if (baseWebContents == null || mChromeActivity == null || mTabModelSelector == null) return;
+
+ String url = baseWebContents.getUrl();
+ if (url == null) return;
+
+ ReaderModeTabInfo info = mTabStatusMap.get(mTabModelSelector.getCurrentTabId());
+ if (info != null) info.onStartedReaderMode();
+
+ DomDistillerTabUtils.distillCurrentPageAndView(getBasePageWebContents());
}
/**
- * Open a link from the panel in a new tab.
+ * Open a link from the infobar in a new tab.
* @param url The URL to load.
*/
@Override
@@ -562,22 +464,6 @@ public class ReaderModeManager extends TabModelSelectorTabObserver
TabModel.TabLaunchType.FROM_LINK, mChromeActivity.getActivityTab());
}
- /**
- * @return Whether the Reader Mode panel is opened (state is EXPANDED or MAXIMIZED).
- */
- public boolean isPanelOpened() {
- if (mReaderModePanel == null) return false;
- return mReaderModePanel.isPanelOpened();
- }
-
- /**
- * @return The ReaderModePanel for testing.
- */
- @VisibleForTesting
- public ReaderModePanel getPanelForTesting() {
- return mReaderModePanel;
- }
-
/**
* Set the callback for updating reader mode status based on whether or not the page should
* be viewed in reader mode.
@@ -617,8 +503,7 @@ public class ReaderModeManager extends TabModelSelectorTabObserver
tabInfo.setStatus(POSSIBLE);
// The user may have changed tabs.
if (tabId == mTabModelSelector.getCurrentTabId()) {
- // TODO(mdjones): Add reason DISTILLER_STATE_CHANGE.
- requestReaderPanelShow(StateChangeReason.UNKNOWN);
+ tryShowingInfoBar();
}
} else {
tabInfo.setStatus(NOT_POSSIBLE);
@@ -644,9 +529,7 @@ public class ReaderModeManager extends TabModelSelectorTabObserver
boolean enabled = CommandLine.getInstance().hasSwitch(ChromeSwitches.ENABLE_DOM_DISTILLER)
&& !CommandLine.getInstance().hasSwitch(
ChromeSwitches.DISABLE_READER_MODE_BOTTOM_BAR)
- && !DeviceFormFactor.isTablet()
- && DomDistillerTabUtils.isDistillerHeuristicsEnabled()
- && !SysUtils.isLowEndDevice();
+ && DomDistillerTabUtils.isDistillerHeuristicsEnabled();
return enabled;
}
}

Powered by Google App Engine
This is Rietveld 408576698