Index: chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/LayoutManagerDocument.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/LayoutManagerDocument.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/LayoutManagerDocument.java |
index b3ed7ec25fef4e5f9cec5ea6bef304d0577fb49a..9056924d16c77621f95117a39948c0f019663060 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/LayoutManagerDocument.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/LayoutManagerDocument.java |
@@ -18,6 +18,7 @@ import org.chromium.chrome.browser.compositor.bottombar.OverlayPanel; |
import org.chromium.chrome.browser.compositor.bottombar.OverlayPanelContentViewDelegate; |
import org.chromium.chrome.browser.compositor.bottombar.OverlayPanelManager; |
import org.chromium.chrome.browser.compositor.bottombar.contextualsearch.ContextualSearchPanel; |
+import org.chromium.chrome.browser.compositor.bottombar.readermode.ReaderModePanel; |
import org.chromium.chrome.browser.compositor.layouts.components.LayoutTab; |
import org.chromium.chrome.browser.compositor.layouts.components.VirtualView; |
import org.chromium.chrome.browser.compositor.layouts.content.TabContentManager; |
@@ -35,11 +36,7 @@ import org.chromium.chrome.browser.contextualsearch.ContextualSearchManagementDe |
import org.chromium.chrome.browser.contextualsearch.ContextualSearchStaticEventFilter; |
import org.chromium.chrome.browser.contextualsearch.ContextualSearchStaticEventFilter.ContextualSearchTapHandler; |
import org.chromium.chrome.browser.device.DeviceClassManager; |
-import org.chromium.chrome.browser.dom_distiller.ReaderModeEdgeSwipeHandler; |
-import org.chromium.chrome.browser.dom_distiller.ReaderModePanel; |
-import org.chromium.chrome.browser.dom_distiller.ReaderModeStaticEventFilter; |
-import org.chromium.chrome.browser.dom_distiller.ReaderModeStaticEventFilter.ReaderModePanelSelector; |
-import org.chromium.chrome.browser.dom_distiller.ReaderModeStaticEventFilter.ReaderModeTapHandler; |
+import org.chromium.chrome.browser.dom_distiller.ReaderModeManagerDelegate; |
import org.chromium.chrome.browser.fullscreen.FullscreenManager; |
import org.chromium.chrome.browser.tab.Tab; |
import org.chromium.chrome.browser.tabmodel.TabCreatorManager; |
@@ -60,8 +57,7 @@ import java.util.List; |
* driving all {@link Layout}s that get shown via the {@link LayoutManager}. |
*/ |
public class LayoutManagerDocument extends LayoutManager |
- implements ContextualSearchTapHandler, OverlayPanelContentViewDelegate, |
- ReaderModeTapHandler { |
+ implements ContextualSearchTapHandler, OverlayPanelContentViewDelegate { |
// Layouts |
/** A {@link Layout} used for showing a normal web page. */ |
protected final StaticLayout mStaticLayout; |
@@ -77,17 +73,16 @@ public class LayoutManagerDocument extends LayoutManager |
/** A {@link GestureHandler} that will delegate all events to {@link #getActiveLayout()}. */ |
protected final GestureHandler mGestureHandler; |
private final EdgeSwipeHandler mOverlayPanelEdgeSwipeHandler; |
- private final EdgeSwipeHandler mReaderModeEdgeSwipeHandler; |
// Internal State |
private final SparseArray<LayoutTab> mTabCache = new SparseArray<LayoutTab>(); |
private final ContextualSearchPanel mContextualSearchPanel; |
+ private final ReaderModePanel mReaderModePanel; |
private final OverlayPanelManager mOverlayPanelManager; |
/** A delegate for interacting with the Contextual Search manager. */ |
protected ContextualSearchManagementDelegate mContextualSearchDelegate; |
@SuppressWarnings("unused") private TabModelSelectorTabObserver mTabModelSelectorTabObserver; |
- private final ReaderModePanelSelector mReaderModePanelSelector; |
/** |
* Creates a {@link LayoutManagerDocument} instance. |
@@ -100,22 +95,10 @@ public class LayoutManagerDocument extends LayoutManager |
mOverlayPanelManager = new OverlayPanelManager(); |
mContextualSearchPanel = new ContextualSearchPanel(context, this, mOverlayPanelManager); |
- |
- mReaderModePanelSelector = new ReaderModePanelSelector() { |
- @Override |
- public ReaderModePanel getActiveReaderModePanel() { |
- if (mStaticLayout == null || !mStaticLayout.isActive()) return null; |
- ReaderModePanel panel = mStaticLayout.getReaderModePanel(); |
- if (panel == null) return null; |
- if (!panel.isShowing() || !panel.isReaderModeCurrentlyAllowed()) return null; |
- return panel; |
- } |
- }; |
+ mReaderModePanel = new ReaderModePanel(context, this, mOverlayPanelManager, this); |
// Build Event Filter Handlers |
mOverlayPanelEdgeSwipeHandler = new OverlayPanelEdgeSwipeHandler(this); |
- mReaderModeEdgeSwipeHandler = new ReaderModeEdgeSwipeHandler( |
- mReaderModePanelSelector, this); |
mGestureHandler = new GestureHandlerLayoutDelegate(this); |
mToolbarSwipeHandler = new ToolbarSwipeHandler(this); |
@@ -126,11 +109,8 @@ public class LayoutManagerDocument extends LayoutManager |
context, this, mGestureHandler, mOverlayPanelManager); |
EventFilter contextualSearchStaticEventFilter = new ContextualSearchStaticEventFilter( |
context, this, mOverlayPanelManager, mOverlayPanelEdgeSwipeHandler, this); |
- EventFilter readerModeStaticEventFilter = new ReaderModeStaticEventFilter( |
- context, this, mReaderModePanelSelector, mReaderModeEdgeSwipeHandler, this); |
EventFilter staticCascadeEventFilter = new CascadeEventFilter(context, this, |
- new EventFilter[] {readerModeStaticEventFilter, contextualSearchStaticEventFilter, |
- mStaticEdgeEventFilter}); |
+ new EventFilter[] {contextualSearchStaticEventFilter, mStaticEdgeEventFilter}); |
// Build Layouts |
mStaticLayout = new StaticLayout( |
@@ -148,6 +128,7 @@ public class LayoutManagerDocument extends LayoutManager |
public void init(TabModelSelector selector, TabCreatorManager creator, |
TabContentManager content, ViewGroup androidContentContainer, |
ContextualSearchManagementDelegate contextualSearchDelegate, |
+ ReaderModeManagerDelegate readerModeDelegate, |
DynamicResourceLoader dynamicResourceLoader) { |
// Save state |
mContextualSearchDelegate = contextualSearchDelegate; |
@@ -168,6 +149,14 @@ public class LayoutManagerDocument extends LayoutManager |
contextualSearchDelegate.setContextualSearchPanel(mContextualSearchPanel); |
} |
+ mReaderModePanel.setManagerDelegate(readerModeDelegate); |
+ // TODO(mdjones): The manager should be responsible for passing the resource loader to all |
+ // panels. |
+ mReaderModePanel.setDynamicResourceLoader(dynamicResourceLoader); |
+ if (readerModeDelegate != null) { |
+ readerModeDelegate.setReaderModePanel(mReaderModePanel); |
+ } |
+ |
mTabModelSelectorTabObserver = new TabModelSelectorTabObserver(selector) { |
@Override |
public void onContentChanged(Tab tab) { |
@@ -186,7 +175,7 @@ public class LayoutManagerDocument extends LayoutManager |
}; |
super.init(selector, creator, content, androidContentContainer, contextualSearchDelegate, |
- dynamicResourceLoader); |
+ readerModeDelegate, dynamicResourceLoader); |
} |
@Override |
@@ -320,6 +309,7 @@ public class LayoutManagerDocument extends LayoutManager |
if (getActiveLayout() == mContextualSearchLayout) return; |
OverlayPanel panel = mOverlayPanelManager.getActivePanel(); |
+ if (panel == null) return; |
// When not in compatibility mode, tapping on the Search Bar will expand the Panel, |
// therefore we must start showing the ContextualSearchLayout. |
@@ -328,11 +318,11 @@ public class LayoutManagerDocument extends LayoutManager |
// ContextualSearchLayout. Coordinate with dtrainor@ to solve this. It might be |
// necessary for the ContextualSearchPanel to be able to trigger the display of the |
// ContextualSearchLayout. |
- if (panel != null && panel.supportsContextualSearchLayout()) { |
+ if (panel.supportsContextualSearchLayout()) { |
showContextualSearchLayout(true); |
} |
- mOverlayPanelManager.getActivePanel().handleClick(time, x, y); |
+ panel.handleClick(time, x, y); |
} |
@Override |
@@ -453,10 +443,4 @@ public class LayoutManagerDocument extends LayoutManager |
return direction == ScrollDirection.LEFT || direction == ScrollDirection.RIGHT; |
} |
} |
- |
- @Override |
- public void handleTapReaderModeBar(long time, float x, float y) { |
- ReaderModePanel activePanel = mReaderModePanelSelector.getActiveReaderModePanel(); |
- if (activePanel != null) activePanel.handleClick(time, x, y); |
- } |
} |