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 ee07e5639bc11476f462a55b684ae569df667457..d6548123c840745b5ef77cb352b649df11b1c455 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 |
@@ -14,7 +14,6 @@ import android.view.ViewGroup; |
import org.chromium.chrome.browser.ChromeApplication; |
import org.chromium.chrome.browser.UrlConstants; |
-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; |
@@ -22,19 +21,13 @@ import org.chromium.chrome.browser.compositor.bottombar.readermode.ReaderModePan |
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; |
-import org.chromium.chrome.browser.compositor.layouts.eventfilter.CascadeEventFilter; |
-import org.chromium.chrome.browser.compositor.layouts.eventfilter.ContextualSearchEventFilter; |
import org.chromium.chrome.browser.compositor.layouts.eventfilter.EdgeSwipeEventFilter; |
import org.chromium.chrome.browser.compositor.layouts.eventfilter.EdgeSwipeEventFilter.ScrollDirection; |
import org.chromium.chrome.browser.compositor.layouts.eventfilter.EdgeSwipeHandler; |
import org.chromium.chrome.browser.compositor.layouts.eventfilter.EmptyEdgeSwipeHandler; |
-import org.chromium.chrome.browser.compositor.layouts.eventfilter.EventFilter; |
import org.chromium.chrome.browser.compositor.layouts.eventfilter.GestureHandler; |
-import org.chromium.chrome.browser.compositor.layouts.phone.ContextualSearchLayout; |
import org.chromium.chrome.browser.compositor.overlays.SceneOverlay; |
import org.chromium.chrome.browser.contextualsearch.ContextualSearchManagementDelegate; |
-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.ReaderModeManagerDelegate; |
import org.chromium.chrome.browser.fullscreen.FullscreenManager; |
@@ -57,22 +50,18 @@ import java.util.List; |
* driving all {@link Layout}s that get shown via the {@link LayoutManager}. |
*/ |
public class LayoutManagerDocument extends LayoutManager |
- implements ContextualSearchTapHandler, OverlayPanelContentViewDelegate { |
+ implements OverlayPanelContentViewDelegate { |
// Layouts |
/** A {@link Layout} used for showing a normal web page. */ |
protected final StaticLayout mStaticLayout; |
- /** A {@link Layout} used for when the contextual search panel is up. */ |
- protected final ContextualSearchLayout mContextualSearchLayout; |
// Event Filters |
private final EdgeSwipeEventFilter mStaticEdgeEventFilter; |
- private final ContextualSearchEventFilter mContextualSearchEventFilter; |
private final EdgeSwipeHandler mToolbarSwipeHandler; |
// Event Filter Handlers |
/** A {@link GestureHandler} that will delegate all events to {@link #getActiveLayout()}. */ |
protected final GestureHandler mGestureHandler; |
- private final EdgeSwipeHandler mOverlayPanelEdgeSwipeHandler; |
// Internal State |
private final SparseArray<LayoutTab> mTabCache = new SparseArray<LayoutTab>(); |
@@ -93,30 +82,26 @@ public class LayoutManagerDocument extends LayoutManager |
Context context = host.getContext(); |
LayoutRenderHost renderHost = host.getLayoutRenderHost(); |
- mOverlayPanelManager = new OverlayPanelManager(); |
- mContextualSearchPanel = new ContextualSearchPanel(context, this, mOverlayPanelManager); |
- mReaderModePanel = new ReaderModePanel(context, this, mOverlayPanelManager, this); |
- |
// Build Event Filter Handlers |
- mOverlayPanelEdgeSwipeHandler = new OverlayPanelEdgeSwipeHandler(this); |
mGestureHandler = new GestureHandlerLayoutDelegate(this); |
mToolbarSwipeHandler = new ToolbarSwipeHandler(this); |
// Build Event Filters |
mStaticEdgeEventFilter = |
new EdgeSwipeEventFilter(context, this, new StaticEdgeSwipeHandler()); |
- mContextualSearchEventFilter = new ContextualSearchEventFilter( |
- context, this, mGestureHandler, mOverlayPanelManager); |
- EventFilter contextualSearchStaticEventFilter = new ContextualSearchStaticEventFilter( |
- context, this, mOverlayPanelManager, mOverlayPanelEdgeSwipeHandler, this); |
- EventFilter staticCascadeEventFilter = new CascadeEventFilter(context, this, |
- new EventFilter[] {contextualSearchStaticEventFilter, mStaticEdgeEventFilter}); |
+ |
+ mOverlayPanelManager = new OverlayPanelManager(); |
// Build Layouts |
mStaticLayout = new StaticLayout( |
- context, this, renderHost, staticCascadeEventFilter, mOverlayPanelManager); |
- mContextualSearchLayout = new ContextualSearchLayout( |
- context, this, renderHost, mContextualSearchEventFilter, mOverlayPanelManager); |
+ context, this, renderHost, mStaticEdgeEventFilter, mOverlayPanelManager); |
+ |
+ // Contextual Search scene overlay. |
+ mContextualSearchPanel = new ContextualSearchPanel(context, this, this, |
+ mOverlayPanelManager); |
+ |
+ // Reader Mode scene overlay. |
+ mReaderModePanel = new ReaderModePanel(context, this, this, mOverlayPanelManager, this); |
// Set up layout parameters |
mStaticLayout.setLayoutHandlesTabLifecycles(true); |
@@ -130,6 +115,9 @@ public class LayoutManagerDocument extends LayoutManager |
ContextualSearchManagementDelegate contextualSearchDelegate, |
ReaderModeManagerDelegate readerModeDelegate, |
DynamicResourceLoader dynamicResourceLoader) { |
+ // Add any SceneOverlays to a layout. |
+ addAllSceneOverlays(); |
+ |
// Save state |
mContextualSearchDelegate = contextualSearchDelegate; |
@@ -138,7 +126,6 @@ public class LayoutManagerDocument extends LayoutManager |
// Initialize Layouts |
mStaticLayout.setTabModelSelector(selector, content); |
- mContextualSearchLayout.setTabModelSelector(selector, content); |
// Initialize Contextual Search Panel |
mContextualSearchPanel.setManagementDelegate(contextualSearchDelegate); |
@@ -155,6 +142,7 @@ public class LayoutManagerDocument extends LayoutManager |
// Set the dynamic resource loader for all overlay panels. |
mOverlayPanelManager.setDynamicResourceLoader(dynamicResourceLoader); |
+ mOverlayPanelManager.setContainerView(androidContentContainer); |
mTabModelSelectorTabObserver = new TabModelSelectorTabObserver(selector) { |
@Override |
@@ -182,7 +170,6 @@ public class LayoutManagerDocument extends LayoutManager |
super.destroy(); |
if (mStaticLayout != null) mStaticLayout.destroy(); |
- if (mContextualSearchLayout != null) mContextualSearchLayout.destroy(); |
if (mOverlayPanelManager != null) mOverlayPanelManager.destroy(); |
if (mTabModelSelectorTabObserver != null) mTabModelSelectorTabObserver.destroy(); |
} |
@@ -225,7 +212,15 @@ public class LayoutManagerDocument extends LayoutManager |
*/ |
protected void addGlobalSceneOverlay(SceneOverlay helper) { |
mStaticLayout.addSceneOverlay(helper); |
- mContextualSearchLayout.addSceneOverlay(helper); |
+ } |
+ |
+ /** |
+ * Add any {@link SceneOverlay}s to the layout. This can be used to add the overlays in a |
+ * particular order. |
+ */ |
+ protected void addAllSceneOverlays() { |
+ mStaticLayout.addSceneOverlay(mContextualSearchPanel); |
+ mStaticLayout.addSceneOverlay(mReaderModePanel); |
} |
/** |
@@ -304,27 +299,6 @@ public class LayoutManagerDocument extends LayoutManager |
} |
@Override |
- public void handleTapContextualSearchBar(long time, float x, float y) { |
- 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. |
- // TODO(pedrosimonetti): once we implement the close button, a tap in the Panel might |
- // trigger the Panel to close, not expand, so in that case we don't want to show the |
- // 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.supportsContextualSearchLayout()) { |
- showContextualSearchLayout(true); |
- } |
- |
- panel.handleClick(time, x, y); |
- } |
- |
- @Override |
public void setOverlayPanelContentViewCore(ContentViewCore contentViewCore) { |
mHost.onContentViewCoreAdded(contentViewCore); |
} |
@@ -336,14 +310,6 @@ public class LayoutManagerDocument extends LayoutManager |
if (tab != null) tab.updateFullscreenEnabledState(); |
} |
- private void showContextualSearchLayout(boolean animate) { |
- ContentViewCore cvc = getCurrentTabContentViewCore(); |
- if (cvc != null) { |
- cvc.preserveSelectionOnNextLossOfFocus(); |
- } |
- startShowing(mContextualSearchLayout, animate); |
- } |
- |
private ContentViewCore getCurrentTabContentViewCore() { |
if (getTabModelSelector() == null) return null; |
Tab tab = getTabModelSelector().getCurrentTab(); |
@@ -365,31 +331,6 @@ public class LayoutManagerDocument extends LayoutManager |
} |
} |
- private class OverlayPanelEdgeSwipeHandler extends EdgeSwipeHandlerLayoutDelegate { |
- public OverlayPanelEdgeSwipeHandler(LayoutProvider provider) { |
- super(provider); |
- } |
- |
- @Override |
- public void swipeStarted(ScrollDirection direction, float x, float y) { |
- OverlayPanel panel = mOverlayPanelManager.getActivePanel(); |
- if (getActiveLayout() != mContextualSearchLayout && panel != null |
- && panel.supportsContextualSearchLayout()) { |
- showContextualSearchLayout(false); |
- } |
- |
- if (panel != null && !panel.onInterceptBarSwipe()) { |
- super.swipeStarted(direction, x, y); |
- } |
- } |
- |
- @Override |
- public boolean isSwipeEnabled(ScrollDirection direction) { |
- OverlayPanel panel = mOverlayPanelManager.getActivePanel(); |
- return direction == ScrollDirection.UP && panel != null && panel.isShowing(); |
- } |
- } |
- |
/** |
* A {@link EdgeSwipeHandler} meant to respond to edge events for the toolbar. |
*/ |