Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1646)

Unified Diff: content/browser/renderer_host/input/synthetic_mouse_driver.cc

Issue 2634183002: Support multi-button press for synthetic mouse events (Closed)
Patch Set: button Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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() ==

Powered by Google App Engine
This is Rietveld 408576698