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

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/phone/ContextualSearchLayout.java

Issue 1716653002: Implement OverlayPanels as SceneOverlays (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Prevent native call in test Created 4 years, 7 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/compositor/layouts/phone/ContextualSearchLayout.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/phone/ContextualSearchLayout.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/phone/ContextualSearchLayout.java
deleted file mode 100644
index e1d7972bf93eb0a278b7979f79aa3ecae9550302..0000000000000000000000000000000000000000
--- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/phone/ContextualSearchLayout.java
+++ /dev/null
@@ -1,294 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package org.chromium.chrome.browser.compositor.layouts.phone;
-
-import android.content.Context;
-import android.graphics.Color;
-import android.graphics.Rect;
-import android.view.View;
-
-import org.chromium.chrome.browser.compositor.LayerTitleCache;
-import org.chromium.chrome.browser.compositor.bottombar.OverlayPanel;
-import org.chromium.chrome.browser.compositor.bottombar.OverlayPanel.StateChangeReason;
-import org.chromium.chrome.browser.compositor.bottombar.OverlayPanelManager;
-import org.chromium.chrome.browser.compositor.layouts.ContextualSearchSupportedLayout;
-import org.chromium.chrome.browser.compositor.layouts.Layout;
-import org.chromium.chrome.browser.compositor.layouts.LayoutRenderHost;
-import org.chromium.chrome.browser.compositor.layouts.LayoutUpdateHost;
-import org.chromium.chrome.browser.compositor.layouts.components.LayoutTab;
-import org.chromium.chrome.browser.compositor.layouts.content.TabContentManager;
-import org.chromium.chrome.browser.compositor.layouts.eventfilter.EdgeSwipeEventFilter.ScrollDirection;
-import org.chromium.chrome.browser.compositor.layouts.eventfilter.EventFilter;
-import org.chromium.chrome.browser.compositor.scene_layer.SceneLayer;
-import org.chromium.chrome.browser.compositor.scene_layer.TabListSceneLayer;
-import org.chromium.chrome.browser.fullscreen.ChromeFullscreenManager;
-import org.chromium.chrome.browser.tab.Tab;
-import org.chromium.chrome.browser.util.MathUtils;
-import org.chromium.content.browser.ContentViewCore;
-import org.chromium.content_public.common.TopControlsState;
-import org.chromium.ui.resources.ResourceManager;
-
-/**
- * A {@link Layout} that shows a Contextual Search overlay at the bottom.
- */
-public class ContextualSearchLayout extends ContextualSearchSupportedLayout {
- /**
- * The initial Y position of the touch event.
- */
- private float mInitialPanelTouchY;
-
- /**
- * The base Tab.
- */
- private LayoutTab mBaseTab;
-
- private final TabListSceneLayer mTabListSceneLayer;
-
- /**
- * @param context The current Android context.
- * @param updateHost The {@link LayoutUpdateHost} view for this layout.
- * @param renderHost The {@link LayoutRenderHost} view for this layout.
- * @param eventFilter The {@link EventFilter} that is needed for this view.
- * @param panelManager The {@link OverlayPanelManager} for getting the active panel.
- */
- public ContextualSearchLayout(Context context, LayoutUpdateHost updateHost,
- LayoutRenderHost renderHost, EventFilter eventFilter,
- OverlayPanelManager panelManager) {
- super(context, updateHost, renderHost, eventFilter, panelManager);
- mTabListSceneLayer = new TabListSceneLayer() {
- @Override
- protected int getTabListBackgroundColor(Context context) {
- OverlayPanel panel = mPanelManager.getActivePanel();
- // If the panel is null (which in theory should never happen in this case since
- // this layout is only present when the Panel is open), we will assume the
- // background color to be white (assuming most pages have a white background).
- if (panel == null) {
- return Color.WHITE;
- } else {
- return panel.getBasePageBackgroundColor();
- }
- }
- };
- }
-
- /**
- * Handles the resizing of the viewport.
- * @param width The new width in dp.
- * @param height The new height in dp.
- */
- @Override
- protected void onSizeChanged(float width, float height) {
- if (mBaseTab != null) {
- OverlayPanel panel = mPanelManager.getActivePanel();
- if (panel != null) {
- mBaseTab.setMaxContentWidth(width);
- mBaseTab.setMaxContentHeight(panel.getTabHeight());
- mBaseTab.setContentSize(width, panel.getTabHeight());
- }
- }
- }
-
- @Override
- public View getViewForInteraction() {
- OverlayPanel panel = mPanelManager.getActivePanel();
- if (panel != null) {
- ContentViewCore content = panel.getContentViewCore();
- if (content != null) return content.getContainerView();
- }
-
- return super.getViewForInteraction();
- }
-
- @Override
- public int getSizingFlags() {
- return SizingFlags.HELPER_SUPPORTS_FULLSCREEN;
- }
-
- public float getTopControlsOffset(float currentOffsetDp) {
- return MathUtils.clamp(mBaseTab.getY(), -mPanelManager.getActivePanel().getToolbarHeight(),
- Math.min(currentOffsetDp, 0f));
- }
-
- @Override
- protected void updateLayout(long time, long dt) {
- super.updateLayout(time, dt);
- if (mBaseTab == null) return;
-
- OverlayPanel panel = mPanelManager.getActivePanel();
- if (panel != null) {
- mBaseTab.setY(panel.getBasePageY());
- mBaseTab.setBrightness(panel.getBasePageBrightness());
- }
-
- boolean needUpdate = mBaseTab.updateSnap(dt);
- if (needUpdate) requestUpdate();
- }
-
- @Override
- public boolean handlesTabCreating() {
- // Prevents the new Tab animation from happening when promoting to a new Tab.
- startHiding(mBaseTab.getId(), false);
- // Updates TopControls' State so the Toolbar becomes visible.
- // TODO(pedrosimonetti): The transition when promoting to a new tab is only smooth
- // if the SearchContentView's vertical scroll position is zero. Otherwise the
- // ContentView will appear to jump in the screen. Coordinate with @dtrainor to solve
- // this problem.
- mPanelManager.getActivePanel().updateTopControlsState(TopControlsState.BOTH, false);
- doneHiding();
- return true;
- }
-
- @Override
- public void show(long time, boolean animate) {
- // TODO(changwan): use SceneOverlayTree's setContentTree() instead once we refactor
- // ContextualSearchSupportedLayout into LayoutHelper.
- mTabListSceneLayer.setContentTree(super.getSceneLayer());
-
- super.show(time, animate);
-
- resetLayout();
- createBaseLayoutTab(mBaseTab);
- }
-
- /**
- * Resets the Layout.
- */
- private void resetLayout() {
- mLayoutTabs = null;
- mBaseTab = null;
- }
-
- /**
- * Creates the Base Page's LayoutTab to be presented in the screen.
- *
- * @param layoutTab The {@link Layout} instance.
- */
- private void createBaseLayoutTab(LayoutTab layoutTab) {
- if (mTabModelSelector == null) return;
-
- int baseTabId = mTabModelSelector.getCurrentTabId();
- if (baseTabId == Tab.INVALID_TAB_ID) return;
-
- mBaseTab = createLayoutTab(
- baseTabId, mTabModelSelector.isIncognitoSelected(), NO_CLOSE_BUTTON, NO_TITLE);
-
- assert mBaseTab != null;
- mBaseTab.setScale(1.f);
- mBaseTab.setBorderScale(1.f);
- mBaseTab.setBorderAlpha(0.f);
-
- mLayoutTabs = new LayoutTab[] {mBaseTab};
- }
-
- // ============================================================================================
- // Panel Host
- // ============================================================================================
-
- @Override
- protected void hideContextualSearch(boolean immediately) {
- if (isActive()) {
- startHiding(Tab.INVALID_TAB_ID, false);
- if (immediately) doneHiding();
- }
- }
-
- // ============================================================================================
- // cc::Layer Events
- // ============================================================================================
-
- @Override
- public void onDown(long time, float x, float y) {
- mInitialPanelTouchY = y;
- mPanelManager.getActivePanel().handleSwipeStart();
- }
-
- @Override
- public void drag(long time, float x, float y, float deltaX, float deltaY) {
- final float ty = y - mInitialPanelTouchY;
-
- mPanelManager.getActivePanel().handleSwipeMove(ty);
- }
-
- @Override
- public void onUpOrCancel(long time) {
- mPanelManager.getActivePanel().handleSwipeEnd();
- }
-
- @Override
- public void fling(long time, float x, float y, float velocityX, float velocityY) {
- mPanelManager.getActivePanel().handleFling(velocityY);
- }
-
- @Override
- public void click(long time, float x, float y) {
- mPanelManager.getActivePanel().handleClick(time, x, y);
- }
-
- // ============================================================================================
- // Android View Events
- // ============================================================================================
-
- @Override
- public void swipeStarted(long time, ScrollDirection direction, float x, float y) {
- mPanelManager.getActivePanel().handleSwipeStart();
- }
-
- @Override
- public void swipeUpdated(long time, float x, float y, float dx, float dy, float tx, float ty) {
- mPanelManager.getActivePanel().handleSwipeMove(ty);
- }
-
- @Override
- public void swipeFlingOccurred(
- long time, float x, float y, float tx, float ty, float vx, float vy) {
- mPanelManager.getActivePanel().handleFling(vy);
- }
-
- @Override
- public void swipeFinished(long time) {
- mPanelManager.getActivePanel().handleSwipeEnd();
- }
-
- @Override
- public void swipeCancelled(long time) {
- swipeFinished(time);
- }
-
- @Override
- public boolean onBackPressed() {
- mPanelManager.getActivePanel().closePanel(StateChangeReason.BACK_PRESS, true);
- return true;
- }
-
- @Override
- protected SceneLayer getSceneLayer() {
- return mTabListSceneLayer;
- }
-
- @Override
- protected void updateSceneLayer(Rect viewport, Rect contentViewport,
- LayerTitleCache layerTitleCache, TabContentManager tabContentManager,
- ResourceManager resourceManager, ChromeFullscreenManager fullscreenManager) {
- super.updateSceneLayer(viewport, contentViewport, layerTitleCache, tabContentManager,
- resourceManager, fullscreenManager);
- assert mTabListSceneLayer != null;
- mTabListSceneLayer.pushLayers(getContext(), viewport, contentViewport, this,
- layerTitleCache, tabContentManager, resourceManager);
- }
-
- @Override
- public boolean forceHideTopControlsAndroidView() {
- return true;
- }
-
- public float getToolbarBrightness() {
- return mPanelManager.getActivePanel().getBasePageBrightness();
- }
-
- @Override
- public boolean isTabStripEventFilterEnabled() {
- return false;
- }
-}

Powered by Google App Engine
This is Rietveld 408576698