blob: 3024f2d00cdef6c14c2c738c4d126fa1b4a870cb [file] [log] [blame]
carlosgc@webkit.org8c9a0182018-05-10 06:52:31 +00001/*
2 * Copyright (C) 2018 Igalia S.L.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
6 * are met:
7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 *
13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
14 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
15 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
17 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
18 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
19 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
20 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
21 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
22 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
23 * THE POSSIBILITY OF SUCH DAMAGE.
24 */
25
26#pragma once
27
28#include <wtf/text/WTFString.h>
29
30namespace WebDriver {
31
32enum class MouseButton { None, Left, Middle, Right };
33enum class PointerType { Mouse, Pen, Touch };
34
35struct InputSource {
carlosgc@webkit.org94cf6f52020-10-21 12:36:18 +000036 enum class Type { None, Key, Pointer, Wheel };
carlosgc@webkit.org8c9a0182018-05-10 06:52:31 +000037
38 Type type;
cdumez@apple.com8b7a0222018-12-20 04:41:11 +000039 Optional<PointerType> pointerType;
carlosgc@webkit.org8c9a0182018-05-10 06:52:31 +000040};
41
42struct PointerParameters {
43 PointerType pointerType { PointerType::Mouse };
44};
45
46struct PointerOrigin {
47 enum class Type { Viewport, Pointer, Element };
48
49 Type type;
cdumez@apple.com8b7a0222018-12-20 04:41:11 +000050 Optional<String> elementID;
carlosgc@webkit.org8c9a0182018-05-10 06:52:31 +000051};
52
53struct Action {
carlosgc@webkit.org94cf6f52020-10-21 12:36:18 +000054 enum class Type { None, Key, Pointer, Wheel };
55 enum class Subtype { Pause, PointerUp, PointerDown, PointerMove, PointerCancel, KeyUp, KeyDown, Scroll };
carlosgc@webkit.org8c9a0182018-05-10 06:52:31 +000056
57 Action(const String& id, Type type, Subtype subtype)
58 : id(id)
59 , type(type)
60 , subtype(subtype)
61 {
62 }
63
64 String id;
65 Type type;
66 Subtype subtype;
cdumez@apple.com8b7a0222018-12-20 04:41:11 +000067 Optional<unsigned> duration;
carlosgc@webkit.org8c9a0182018-05-10 06:52:31 +000068
cdumez@apple.com8b7a0222018-12-20 04:41:11 +000069 Optional<PointerType> pointerType;
70 Optional<MouseButton> button;
71 Optional<PointerOrigin> origin;
72 Optional<int64_t> x;
73 Optional<int64_t> y;
carlosgc@webkit.org94cf6f52020-10-21 12:36:18 +000074 Optional<int64_t> deltaX;
75 Optional<int64_t> deltaY;
carlosgc@webkit.org8c9a0182018-05-10 06:52:31 +000076
cdumez@apple.com8b7a0222018-12-20 04:41:11 +000077 Optional<String> key;
carlosgc@webkit.org8c9a0182018-05-10 06:52:31 +000078};
79
80} // WebDriver