1 // Copyright 2016 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 #include "content/common/input/synthetic_pointer_action_params.h"
6 
7 namespace content {
8 
9 SyntheticPointerActionParams::SyntheticPointerActionParams() = default;
10 
SyntheticPointerActionParams(PointerActionType action_type)11 SyntheticPointerActionParams::SyntheticPointerActionParams(
12     PointerActionType action_type)
13     : pointer_action_type_(action_type) {}
14 
15 SyntheticPointerActionParams::SyntheticPointerActionParams(
16     const SyntheticPointerActionParams& other) = default;
17 
18 SyntheticPointerActionParams::~SyntheticPointerActionParams() = default;
19 
20 // static
GetWebMouseEventModifier(SyntheticPointerActionParams::Button button)21 unsigned SyntheticPointerActionParams::GetWebMouseEventModifier(
22     SyntheticPointerActionParams::Button button) {
23   switch (button) {
24     case SyntheticPointerActionParams::Button::LEFT:
25       return blink::WebMouseEvent::kLeftButtonDown;
26     case SyntheticPointerActionParams::Button::MIDDLE:
27       return blink::WebMouseEvent::kMiddleButtonDown;
28     case SyntheticPointerActionParams::Button::RIGHT:
29       return blink::WebMouseEvent::kRightButtonDown;
30     case SyntheticPointerActionParams::Button::BACK:
31       return blink::WebMouseEvent::kBackButtonDown;
32     case SyntheticPointerActionParams::Button::FORWARD:
33       return blink::WebMouseEvent::kForwardButtonDown;
34     case SyntheticPointerActionParams::Button::NO_BUTTON:
35       return blink::WebMouseEvent::kNoModifiers;
36   }
37   NOTREACHED();
38   return blink::WebMouseEvent::kNoModifiers;
39 }
40 
41 // static
42 blink::WebMouseEvent::Button
GetWebMouseEventButton(SyntheticPointerActionParams::Button button)43 SyntheticPointerActionParams::GetWebMouseEventButton(
44     SyntheticPointerActionParams::Button button) {
45   switch (button) {
46     case SyntheticPointerActionParams::Button::LEFT:
47       return blink::WebMouseEvent::Button::kLeft;
48     case SyntheticPointerActionParams::Button::MIDDLE:
49       return blink::WebMouseEvent::Button::kMiddle;
50     case SyntheticPointerActionParams::Button::RIGHT:
51       return blink::WebMouseEvent::Button::kRight;
52     case SyntheticPointerActionParams::Button::BACK:
53       return blink::WebMouseEvent::Button::kBack;
54     case SyntheticPointerActionParams::Button::FORWARD:
55       return blink::WebMouseEvent::Button::kForward;
56     case SyntheticPointerActionParams::Button::NO_BUTTON:
57       return blink::WebMouseEvent::Button::kNoButton;
58   }
59   NOTREACHED();
60   return blink::WebMouseEvent::Button::kNoButton;
61 }
62 
63 // static
64 blink::WebMouseEvent::Button
GetWebMouseEventButtonFromModifier(unsigned modifiers)65 SyntheticPointerActionParams::GetWebMouseEventButtonFromModifier(
66     unsigned modifiers) {
67   blink::WebMouseEvent::Button button = blink::WebMouseEvent::Button::kNoButton;
68   if (modifiers & blink::WebMouseEvent::kLeftButtonDown)
69     button = blink::WebMouseEvent::Button::kLeft;
70   if (modifiers & blink::WebMouseEvent::kMiddleButtonDown)
71     button = blink::WebMouseEvent::Button::kMiddle;
72   if (modifiers & blink::WebMouseEvent::kRightButtonDown)
73     button = blink::WebMouseEvent::Button::kRight;
74   return button;
75 }
76 
77 }  // namespace content
78