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

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperManager.java

Issue 2774443002: chrome/android: Push EventFilters into the Layout implementations. (Closed)
Patch Set: fix for re-landing Created 3 years, 9 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/overlays/strip/StripLayoutHelperManager.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperManager.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperManager.java
index 0ba6ba52028ecd913f5b431f8696edb8a3735f4c..25f1fd7a48cc3f250a95ed5f5f54a6d676a2374b 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperManager.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperManager.java
@@ -11,6 +11,7 @@ import android.graphics.RectF;
import org.chromium.base.VisibleForTesting;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.compositor.LayerTitleCache;
+import org.chromium.chrome.browser.compositor.layouts.LayoutManager;
import org.chromium.chrome.browser.compositor.layouts.LayoutRenderHost;
import org.chromium.chrome.browser.compositor.layouts.LayoutUpdateHost;
import org.chromium.chrome.browser.compositor.layouts.components.CompositorButton;
@@ -18,6 +19,7 @@ import org.chromium.chrome.browser.compositor.layouts.components.CompositorButto
import org.chromium.chrome.browser.compositor.layouts.components.VirtualView;
import org.chromium.chrome.browser.compositor.layouts.eventfilter.AreaGestureEventFilter;
import org.chromium.chrome.browser.compositor.layouts.eventfilter.EventFilter;
+import org.chromium.chrome.browser.compositor.layouts.eventfilter.GestureHandler;
import org.chromium.chrome.browser.compositor.overlays.SceneOverlay;
import org.chromium.chrome.browser.compositor.scene_layer.SceneOverlayLayer;
import org.chromium.chrome.browser.compositor.scene_layer.TabStripSceneLayer;
@@ -69,18 +71,75 @@ public class StripLayoutHelperManager implements SceneOverlay {
private TabStripSceneLayer mTabStripTreeProvider;
+ private TabStripEventHandler mTabStripEventHandler;
+
+ private class TabStripEventHandler implements GestureHandler {
+ @Override
+ public void onDown(float x, float y, boolean fromMouse, int buttons) {
+ if (mModelSelectorButton.onDown(x, y)) return;
+ getActiveStripLayoutHelper().onDown(time(), x, y, fromMouse, buttons);
+ }
+
+ @Override
+ public void onUpOrCancel() {
+ if (mModelSelectorButton.onUpOrCancel() && mTabModelSelector != null) {
+ getActiveStripLayoutHelper().finishAnimation();
+ if (!mModelSelectorButton.isVisible()) return;
+ mTabModelSelector.selectModel(!mTabModelSelector.isIncognitoSelected());
+ return;
+ }
+ getActiveStripLayoutHelper().onUpOrCancel(time());
+ }
+
+ @Override
+ public void drag(float x, float y, float dx, float dy, float tx, float ty) {
+ mModelSelectorButton.drag(x, y);
+ getActiveStripLayoutHelper().drag(time(), x, y, dx, dy, tx, ty);
+ }
+
+ @Override
+ public void click(float x, float y, boolean fromMouse, int buttons) {
+ long time = time();
+ if (mModelSelectorButton.click(x, y)) {
+ mModelSelectorButton.handleClick(time);
+ return;
+ }
+ getActiveStripLayoutHelper().click(time(), x, y, fromMouse, buttons);
+ }
+
+ @Override
+ public void fling(float x, float y, float velocityX, float velocityY) {
+ getActiveStripLayoutHelper().fling(time(), x, y, velocityX, velocityY);
+ }
+
+ @Override
+ public void onLongPress(float x, float y) {
+ getActiveStripLayoutHelper().onLongPress(time(), x, y);
+ }
+
+ @Override
+ public void onPinch(float x0, float y0, float x1, float y1, boolean firstEvent) {
+ // Not implemented.
+ }
+
+ private long time() {
+ return LayoutManager.time();
+ }
+ }
+
/**
* Creates an instance of the {@link StripLayoutHelperManager}.
* @param context The current Android {@link Context}.
* @param updateHost The parent {@link LayoutUpdateHost}.
* @param renderHost The {@link LayoutRenderHost}.
*/
- public StripLayoutHelperManager(Context context, LayoutUpdateHost updateHost,
- LayoutRenderHost renderHost, AreaGestureEventFilter eventFilter) {
+ public StripLayoutHelperManager(
+ Context context, LayoutUpdateHost updateHost, LayoutRenderHost renderHost) {
mUpdateHost = updateHost;
mTabStripTreeProvider = new TabStripSceneLayer(context);
-
- mEventFilter = eventFilter;
+ mTabStripEventHandler = new TabStripEventHandler();
+ mEventFilter =
+ new AreaGestureEventFilter(context, mTabStripEventHandler, null, false, false);
mNormalHelper = new StripLayoutHelper(context, updateHost, renderHost, false);
mIncognitoHelper = new StripLayoutHelper(context, updateHost, renderHost, true);
@@ -120,6 +179,23 @@ public class StripLayoutHelperManager implements SceneOverlay {
mNormalHelper.destroy();
}
+ private void handleModelSelectorButtonClick() {
+ if (mTabModelSelector == null) return;
+ getActiveStripLayoutHelper().finishAnimation();
+ if (!mModelSelectorButton.isVisible()) return;
+ mTabModelSelector.selectModel(!mTabModelSelector.isIncognitoSelected());
+ }
+
+ @VisibleForTesting
+ public void simulateClick(float x, float y, boolean fromMouse, int buttons) {
+ mTabStripEventHandler.click(x, y, fromMouse, buttons);
+ }
+
+ @VisibleForTesting
+ public void simulateLongPress(float x, float y) {
+ mTabStripEventHandler.onLongPress(x, y);
+ }
+
@Override
public SceneOverlayLayer getUpdatedSceneOverlayTree(RectF viewport, RectF visibleViewport,
LayerTitleCache layerTitleCache, ResourceManager resourceManager, float yOffset) {
@@ -361,94 +437,6 @@ public class StripLayoutHelperManager implements SceneOverlay {
}
/**
- * Called on touch drag event.
- * @param time The current time of the app in ms.
- * @param x The y coordinate of the end of the drag event.
- * @param y The y coordinate of the end of the drag event.
- * @param deltaX The number of pixels dragged in the x direction.
- * @param deltaY The number of pixels dragged in the y direction.
- * @param totalX The total delta x since the drag started.
- * @param totalY The total delta y since the drag started.
- */
- public void drag(
- long time, float x, float y, float deltaX, float deltaY, float totalX, float totalY) {
- mModelSelectorButton.drag(x, y);
- getActiveStripLayoutHelper().drag(time, x, y, deltaX, deltaY, totalX, totalY);
- }
-
- /**
- * Called on touch fling event. This is called before the onUpOrCancel event.
- * @param time The current time of the app in ms.
- * @param x The y coordinate of the start of the fling event.
- * @param y The y coordinate of the start of the fling event.
- * @param velocityX The amount of velocity in the x direction.
- * @param velocityY The amount of velocity in the y direction.
- */
- public void fling(long time, float x, float y, float velocityX, float velocityY) {
- getActiveStripLayoutHelper().fling(time, x, y, velocityX, velocityY);
- }
-
- /**
- * Called on onDown event.
- * @param time The time stamp in millisecond of the event.
- * @param x The x position of the event.
- * @param y The y position of the event.
- * @param fromMouse Whether the event originates from a mouse.
- * @param buttons State of all buttons that are pressed.
- */
- public void onDown(long time, float x, float y, boolean fromMouse, int buttons) {
- if (mModelSelectorButton.onDown(x, y)) return;
- getActiveStripLayoutHelper().onDown(time, x, y, fromMouse, buttons);
- }
-
- /**
- * Called on long press touch event.
- * @param time The current time of the app in ms.
- * @param x The x coordinate of the position of the press event.
- * @param y The y coordinate of the position of the press event.
- */
- public void onLongPress(long time, float x, float y) {
- getActiveStripLayoutHelper().onLongPress(time, x, y);
- }
-
- private void handleModelSelectorButtonClick() {
- if (mTabModelSelector == null) return;
- getActiveStripLayoutHelper().finishAnimation();
- if (!mModelSelectorButton.isVisible()) return;
- mTabModelSelector.selectModel(!mTabModelSelector.isIncognitoSelected());
- }
-
- /**
- * Called on click. This is called before the onUpOrCancel event.
- * @param time The current time of the app in ms.
- * @param x The x coordinate of the position of the click.
- * @param y The y coordinate of the position of the click.
- * @param fromMouse Whether the event originates from a mouse.
- * @param buttons State of all buttons that were pressed when onDown was invoked.
- */
- public void click(long time, float x, float y, boolean fromMouse, int buttons) {
- if (mModelSelectorButton.click(x, y)) {
- mModelSelectorButton.handleClick(time);
- return;
- }
- getActiveStripLayoutHelper().click(time, x, y, fromMouse, buttons);
- }
-
- /**
- * Called on up or cancel touch events. This is called after the click and fling event if any.
- * @param time The current time of the app in ms.
- */
- public void onUpOrCancel(long time) {
- if (mModelSelectorButton.onUpOrCancel() && mTabModelSelector != null) {
- getActiveStripLayoutHelper().finishAnimation();
- if (!mModelSelectorButton.isVisible()) return;
- mTabModelSelector.selectModel(!mTabModelSelector.isIncognitoSelected());
- return;
- }
- getActiveStripLayoutHelper().onUpOrCancel(time);
- }
-
- /**
* @param incognito Whether or not you want the incognito StripLayoutHelper
* @return The requested StripLayoutHelper.
*/

Powered by Google App Engine
This is Rietveld 408576698