| Index: webkit/tools/test_shell/event_sending_controller.cc
|
| ===================================================================
|
| --- webkit/tools/test_shell/event_sending_controller.cc (revision 2916)
|
| +++ webkit/tools/test_shell/event_sending_controller.cc (working copy)
|
| @@ -35,6 +35,8 @@
|
| WebMouseEvent::Button EventSendingController::pressed_button_ =
|
| WebMouseEvent::BUTTON_NONE;
|
|
|
| +int EventSendingController::last_button_number_ = -1;
|
| +
|
| namespace {
|
|
|
| #if defined(OS_WIN)
|
| @@ -149,6 +151,7 @@
|
| dragMode.Set(true);
|
| last_click_time_sec = 0;
|
| click_count = 0;
|
| + last_button_number_ = -1;
|
| }
|
|
|
| /* static */ WebView* EventSendingController::webview() {
|
| @@ -170,19 +173,27 @@
|
| }
|
| #endif
|
|
|
| +WebMouseEvent::Button EventSendingController::GetButtonTypeFromButtonNumber(
|
| + int button_code) {
|
| + if (button_code == 0)
|
| + return WebMouseEvent::BUTTON_LEFT;
|
| + else if (button_code == 2)
|
| + return WebMouseEvent::BUTTON_RIGHT;
|
| +
|
| + return WebMouseEvent::BUTTON_MIDDLE;
|
| +}
|
| +
|
| // static
|
| -WebMouseEvent::Button EventSendingController::GetButtonTypeFromSingleArg(
|
| +int EventSendingController::GetButtonNumberFromSingleArg(
|
| const CppArgumentList& args) {
|
| + int button_code = 0;
|
| +
|
| if (args.size() > 0 && args[0].isNumber()) {
|
| - int button_code = args[0].ToInt32();
|
| - if (button_code == 1)
|
| - return WebMouseEvent::BUTTON_MIDDLE;
|
| - else if (button_code == 2)
|
| - return WebMouseEvent::BUTTON_RIGHT;
|
| + button_code = args[0].ToInt32();
|
| }
|
| - return WebMouseEvent::BUTTON_LEFT;
|
| +
|
| + return button_code;
|
| }
|
| -
|
| //
|
| // Implemented javascript methods.
|
| //
|
| @@ -193,15 +204,22 @@
|
|
|
| webview()->Layout();
|
|
|
| - WebMouseEvent::Button button_type = GetButtonTypeFromSingleArg(args);
|
| + int button_number = GetButtonNumberFromSingleArg(args);
|
| + DCHECK(button_number != -1);
|
|
|
| - if ((GetCurrentEventTimeSec() - last_click_time_sec >= kMultiClickTimeSec) ||
|
| - outside_multiclick_radius(last_mouse_pos_, last_click_pos)) {
|
| + WebMouseEvent::Button button_type = GetButtonTypeFromButtonNumber(
|
| + button_number);
|
| +
|
| + if ((GetCurrentEventTimeSec() - last_click_time_sec < kMultiClickTimeSec) &&
|
| + (!outside_multiclick_radius(last_mouse_pos_, last_click_pos)) &&
|
| + (button_number == last_button_number_)) {
|
| + ++click_count;
|
| + } else {
|
| click_count = 1;
|
| - } else {
|
| - ++click_count;
|
| }
|
|
|
| + last_button_number_ = button_number;
|
| +
|
| WebMouseEvent event;
|
| pressed_button_ = button_type;
|
| InitMouseEvent(WebInputEvent::MOUSE_DOWN, button_type,
|
| @@ -215,8 +233,14 @@
|
|
|
| webview()->Layout();
|
|
|
| - WebMouseEvent::Button button_type = GetButtonTypeFromSingleArg(args);
|
| + int button_number = GetButtonNumberFromSingleArg(args);
|
| + DCHECK(button_number != -1);
|
|
|
| + WebMouseEvent::Button button_type = GetButtonTypeFromButtonNumber(
|
| + button_number);
|
| +
|
| + last_button_number_ = button_number;
|
| +
|
| WebMouseEvent event;
|
| InitMouseEvent(WebInputEvent::MOUSE_UP, button_type,
|
| last_mouse_pos_, &event);
|
|
|