chromium/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/eventfilter/MotionEventHandler.java

// Copyright 2013 The Chromium Authors
// 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.eventfilter;

/** Interface that describes motion event callbacks. */
public interface MotionEventHandler {
    /**
     * Called on down touch event.
     *
     * @param x         The X position of the event in the host view space in dp.
     * @param y         The Y position of the event in the host view space in dp.
     * @param fromMouse Whether the event originates from a mouse.
     * @param buttons   State of all buttons that are pressed.
     */
    void onDown(float x, float y, boolean fromMouse, int buttons);

    /** Called on up or cancel touch event. */
    void onUpOrCancel();

    /**
     * Called on drag/scroll touch event
     *
     * @param x  The X position of the event in the host view space in dp.
     * @param y  The Y position of the event in the host view space in dp.
     * @param dx The change in X since the last movement event.
     * @param dy The change in Y since the last movement event.
     * @param tx The total change in X since the start of this drag.
     * @param ty The total change in Y since the start of this drag.
     */
    void drag(float x, float y, float dx, float dy, float tx, float ty);

    /**
     * Called on click touch event.
     *
     * @param x         The X position of the event in the host view space in dp.
     * @param y         The Y position of the event in the host view space in dp.
     * @param fromMouse Whether the event originates from a mouse.
     * @param buttons   State of all buttons that were pressed when onDown was invoked.
     */
    void click(float x, float y, boolean fromMouse, int buttons);

    /**
     * Called on fling touch event.
     *
     * @param x The X position of the event in the host view space in dp.
     * @param y The Y position of the event in the host view space in dp.
     * @param velocityX
     * @param velocityY
     */
    void fling(float x, float y, float velocityX, float velocityY);

    /**
     * Called on long press touch event.
     *
     * @param x The X position of the event in the host view space in dp.
     * @param y The Y position of the event in the host view space in dp.
     */
    void onLongPress(float x, float y);

    /**
     * Called on pinch touch event.
     *
     * @param x0         The X position of the first finger in the host view space in dp.
     * @param y0         The Y position of the first finger in the host view space in dp.
     * @param x1         The X position of the second finger in the host view space in dp.
     * @param y1         The Y position of the second finger in the host view space in dp.
     * @param firstEvent Whether the onPinch call is the first of multiple.
     */
    void onPinch(float x0, float y0, float x1, float y1, boolean firstEvent);

    /**
     * Called on hover enter event.
     *
     * @param x The X position at the end of the event in the host view space in dp.
     * @param y The Y position at the end of the event in the host view space in dp.
     */
    void onHoverEnter(float x, float y);

    /**
     * Called on hover move event.
     *
     * @param x The X position at the end of the event in the host view space in dp.
     * @param y The Y position at the end of the event in the host view space in dp.
     */
    void onHoverMove(float x, float y);

    /** Called on hover exit event. */
    void onHoverExit();
}