1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef THIRD_PARTY_BLINK_PUBLIC_COMMON_INPUT_WEB_COALESCED_INPUT_EVENT_MOJOM_TRAITS_H_
6 #define THIRD_PARTY_BLINK_PUBLIC_COMMON_INPUT_WEB_COALESCED_INPUT_EVENT_MOJOM_TRAITS_H_
7 
8 #include "third_party/blink/public/common/common_export.h"
9 #include "third_party/blink/public/common/input/web_coalesced_input_event.h"
10 #include "third_party/blink/public/mojom/input/input_handler.mojom.h"
11 
12 namespace mojo {
13 
14 template <>
15 struct BLINK_COMMON_EXPORT
16     StructTraits<blink::mojom::EventDataView,
17                  std::unique_ptr<blink::WebCoalescedInputEvent>> {
18   static blink::WebInputEvent::Type type(
19       const std::unique_ptr<blink::WebCoalescedInputEvent>& event) {
20     return event->Event().GetType();
21   }
22 
23   static int32_t modifiers(
24       const std::unique_ptr<blink::WebCoalescedInputEvent>& event) {
25     return event->Event().GetModifiers();
26   }
27 
28   static base::TimeTicks timestamp(
29       const std::unique_ptr<blink::WebCoalescedInputEvent>& event) {
30     return event->Event().TimeStamp();
31   }
32 
33   static const ui::LatencyInfo& latency(
34       const std::unique_ptr<blink::WebCoalescedInputEvent>& event) {
35     return event->latency_info();
36   }
37 
38   static blink::mojom::KeyDataPtr key_data(
39       const std::unique_ptr<blink::WebCoalescedInputEvent>& event);
40   static blink::mojom::PointerDataPtr pointer_data(
41       const std::unique_ptr<blink::WebCoalescedInputEvent>& event);
42   static blink::mojom::GestureDataPtr gesture_data(
43       const std::unique_ptr<blink::WebCoalescedInputEvent>& event);
44   static blink::mojom::TouchDataPtr touch_data(
45       const std::unique_ptr<blink::WebCoalescedInputEvent>& event);
46 
47   static bool Read(blink::mojom::EventDataView r,
48                    std::unique_ptr<blink::WebCoalescedInputEvent>* out);
49 };
50 
51 }  // namespace mojo
52 
53 #endif  // THIRD_PARTY_BLINK_PUBLIC_COMMON_INPUT_WEB_COALESCED_INPUT_EVENT_MOJOM_TRAITS_H_
54