| Index: content/browser/renderer_host/input/synthetic_mouse_driver.cc
|
| diff --git a/content/browser/renderer_host/input/synthetic_mouse_driver.cc b/content/browser/renderer_host/input/synthetic_mouse_driver.cc
|
| index 4db6f2deaf3639571e59d6217f89616b6047b38f..bc3537afc8b8dea677f3e3a4f9b438ac4327d64d 100644
|
| --- a/content/browser/renderer_host/input/synthetic_mouse_driver.cc
|
| +++ b/content/browser/renderer_host/input/synthetic_mouse_driver.cc
|
| @@ -8,7 +8,7 @@
|
|
|
| namespace content {
|
|
|
| -SyntheticMouseDriver::SyntheticMouseDriver() {}
|
| +SyntheticMouseDriver::SyntheticMouseDriver() : last_modifiers_(0) {}
|
|
|
| SyntheticMouseDriver::~SyntheticMouseDriver() {}
|
|
|
| @@ -18,11 +18,19 @@ void SyntheticMouseDriver::DispatchEvent(SyntheticGestureTarget* target,
|
| target->DispatchInputEventToPlatform(mouse_event_);
|
| }
|
|
|
| -void SyntheticMouseDriver::Press(float x, float y, int index) {
|
| +void SyntheticMouseDriver::Press(float x,
|
| + float y,
|
| + int index,
|
| + SyntheticPointerActionParams::Button button) {
|
| DCHECK_EQ(index, 0);
|
| + int modifiers =
|
| + SyntheticPointerActionParams::GetWebMouseEventModifier(button);
|
| mouse_event_ = SyntheticWebMouseEventBuilder::Build(
|
| - blink::WebInputEvent::MouseDown, x, y, 0);
|
| + blink::WebInputEvent::MouseDown, x, y, modifiers | last_modifiers_);
|
| mouse_event_.clickCount = 1;
|
| + mouse_event_.button =
|
| + SyntheticPointerActionParams::GetWebMouseEventButton(button);
|
| + last_modifiers_ = modifiers | last_modifiers_;
|
| }
|
|
|
| void SyntheticMouseDriver::Move(float x, float y, int index) {
|
| @@ -30,16 +38,24 @@ void SyntheticMouseDriver::Move(float x, float y, int index) {
|
| blink::WebMouseEvent::Button button = mouse_event_.button;
|
| int click_count = mouse_event_.clickCount;
|
| mouse_event_ = SyntheticWebMouseEventBuilder::Build(
|
| - blink::WebInputEvent::MouseMove, x, y, 0);
|
| + blink::WebInputEvent::MouseMove, x, y, last_modifiers_);
|
| mouse_event_.button = button;
|
| mouse_event_.clickCount = click_count;
|
| }
|
|
|
| -void SyntheticMouseDriver::Release(int index) {
|
| +void SyntheticMouseDriver::Release(
|
| + int index,
|
| + SyntheticPointerActionParams::Button button) {
|
| DCHECK_EQ(index, 0);
|
| mouse_event_ = SyntheticWebMouseEventBuilder::Build(
|
| - blink::WebInputEvent::MouseUp, mouse_event_.x, mouse_event_.y, 0);
|
| + blink::WebInputEvent::MouseUp, mouse_event_.x, mouse_event_.y,
|
| + last_modifiers_);
|
| mouse_event_.clickCount = 1;
|
| + mouse_event_.button =
|
| + SyntheticPointerActionParams::GetWebMouseEventButton(button);
|
| + last_modifiers_ =
|
| + last_modifiers_ &
|
| + (~SyntheticPointerActionParams::GetWebMouseEventModifier(button));
|
| }
|
|
|
| bool SyntheticMouseDriver::UserInputCheck(
|
| @@ -53,9 +69,11 @@ bool SyntheticMouseDriver::UserInputCheck(
|
| }
|
|
|
| if (params.pointer_action_type() ==
|
| - SyntheticPointerActionParams::PointerActionType::PRESS &&
|
| - mouse_event_.clickCount > 0) {
|
| - return false;
|
| + SyntheticPointerActionParams::PointerActionType::PRESS) {
|
| + int modifiers =
|
| + SyntheticPointerActionParams::GetWebMouseEventModifier(params.button());
|
| + if (last_modifiers_ & modifiers)
|
| + return false;
|
| }
|
|
|
| if (params.pointer_action_type() ==
|
|
|