// Copyright 2017 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
module content.mojom;
import "ui/gfx/geometry/mojom/geometry.mojom";
import "ui/events/mojom/scroll_granularity.mojom";
import "mojo/public/mojom/base/time.mojom";
// Describes which type of input events synthetic gesture objects should
// generate. When specifying DEFAULT_INPUT the platform will be queried for
// the preferred input event type.
enum GestureSourceType {
kDefaultInput,
kTouchInput,
kMouseInput,
kTouchpadInput = kMouseInput,
kPenInput,
kGestureSourceTypeMax = kPenInput,
};
enum PointerActionType {
kNotInitialized,
kPress,
kMove,
kRelease,
kCancel,
kLeave,
kIdle,
};
enum SyntheticButton {
kNoButton,
kLeft,
kMiddle,
kRight,
kBack,
kForward,
};
enum InputEventPattern {
kDefaultPattern,
kOnePerVsync,
kTwoPerVsync,
kEveryOtherVsync,
};
// The smooth drag gesture parameters sent by the renderer to the browser, that
// are needed to queue the synthetic smooth drag gesture.
struct SyntheticSmoothDrag {
GestureSourceType gesture_source_type;
gfx.mojom.PointF start_point;
array<gfx.mojom.Vector2dF> distances;
float speed_in_pixels_s;
float vsync_offset_ms;
InputEventPattern input_event_pattern;
};
// The smooth drag gesture parameters sent by the renderer to the browser, that
// are needed to queue the synthetic smooth drag gesture.
struct SyntheticSmoothScroll {
GestureSourceType gesture_source_type;
gfx.mojom.PointF anchor;
array<gfx.mojom.Vector2dF> distances;
bool prevent_fling;
float speed_in_pixels_s;
float fling_velocity_x;
float fling_velocity_y;
ui.mojom.ScrollGranularity granularity;
int32 modifiers;
float vsync_offset_ms;
InputEventPattern input_event_pattern;
};
// The pinth parameters sent by the renderer to the browser, that are needed to
// queue the synthetic pinch.
struct SyntheticPinch {
float scale_factor;
gfx.mojom.PointF anchor;
float relative_pointer_speed_in_pixels_s;
float vsync_offset_ms;
InputEventPattern input_event_pattern;
};
// The tap parameters sent by the renderer to the browser, that are needed to
// queue the synthetic tap.
struct SyntheticTap {
GestureSourceType gesture_source_type;
gfx.mojom.PointF position;
float duration_ms;
};
// It contains all the parameters to create the synthetic events of touch,
// mouse and pen inputs in SyntheticPointerAction::ForwardInputEvents function.
struct SyntheticPointerActionParams {
PointerActionType pointer_action_type;
gfx.mojom.PointF position;
uint32 pointer_id;
SyntheticButton button;
int32 key_modifiers;
float width;
float height;
float rotation_angle;
float force;
float tangential_pressure;
int32 tilt_x;
int32 tilt_y;
mojo_base.mojom.TimeTicks timestamp;
mojo_base.mojom.TimeDelta duration;
};
struct SyntheticPointerAction {
GestureSourceType gesture_source_type;
array<array<SyntheticPointerActionParams>> params;
};
// Host interface representing the ability to inject input
// from a less priviledged application. Available when
// --enable-gpu-benchmarking command line flag is provided.
interface InputInjector {
QueueSyntheticSmoothDrag(SyntheticSmoothDrag drag) => ();
QueueSyntheticSmoothScroll(SyntheticSmoothScroll scroll) => ();
QueueSyntheticPinch(SyntheticPinch pinch) => ();
QueueSyntheticTap(SyntheticTap tap) => ();
QueueSyntheticPointerAction(SyntheticPointerAction pointer_action) => ();
};