OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "content/shell/renderer/test_runner/event_sender.h" | 5 #include "content/shell/renderer/test_runner/event_sender.h" |
6 | 6 |
7 #include "base/basictypes.h" | 7 #include "base/basictypes.h" |
8 #include "base/logging.h" | 8 #include "base/logging.h" |
9 #include "base/strings/string_util.h" | 9 #include "base/strings/string_util.h" |
10 #include "base/strings/stringprintf.h" | 10 #include "base/strings/stringprintf.h" |
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
109 | 109 |
110 int GetKeyModifiers(const std::vector<std::string>& modifier_names) { | 110 int GetKeyModifiers(const std::vector<std::string>& modifier_names) { |
111 int modifiers = 0; | 111 int modifiers = 0; |
112 for (std::vector<std::string>::const_iterator it = modifier_names.begin(); | 112 for (std::vector<std::string>::const_iterator it = modifier_names.begin(); |
113 it != modifier_names.end(); ++it) { | 113 it != modifier_names.end(); ++it) { |
114 modifiers |= GetKeyModifier(*it); | 114 modifiers |= GetKeyModifier(*it); |
115 } | 115 } |
116 return modifiers; | 116 return modifiers; |
117 } | 117 } |
118 | 118 |
119 int GetKeyModifiersFromV8(v8::Local<v8::Value> value) { | 119 int GetKeyModifiersFromV8(v8::Isolate* isolate, v8::Local<v8::Value> value) { |
120 std::vector<std::string> modifier_names; | 120 std::vector<std::string> modifier_names; |
121 if (value->IsString()) { | 121 if (value->IsString()) { |
122 modifier_names.push_back(gin::V8ToString(value)); | 122 modifier_names.push_back(gin::V8ToString(value)); |
123 } else if (value->IsArray()) { | 123 } else if (value->IsArray()) { |
124 gin::Converter<std::vector<std::string> >::FromV8( | 124 gin::Converter<std::vector<std::string> >::FromV8( |
125 NULL, value, &modifier_names); | 125 isolate, value, &modifier_names); |
126 } | 126 } |
127 return GetKeyModifiers(modifier_names); | 127 return GetKeyModifiers(modifier_names); |
128 } | 128 } |
129 | 129 |
130 // Maximum distance (in space and time) for a mouse click to register as a | 130 // Maximum distance (in space and time) for a mouse click to register as a |
131 // double or triple click. | 131 // double or triple click. |
132 const double kMultipleClickTimeSec = 1; | 132 const double kMultipleClickTimeSec = 1; |
133 const int kMultipleClickRadiusPixels = 5; | 133 const int kMultipleClickRadiusPixels = 5; |
134 const char kSubMenuDepthIdentifier[] = "_"; | 134 const char kSubMenuDepthIdentifier[] = "_"; |
135 const char kSubMenuIdentifier[] = " >"; | 135 const char kSubMenuIdentifier[] = " >"; |
(...skipping 773 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
909 | 909 |
910 void EventSenderBindings::ScheduleAsynchronousClick(gin::Arguments* args) { | 910 void EventSenderBindings::ScheduleAsynchronousClick(gin::Arguments* args) { |
911 if (!sender_) | 911 if (!sender_) |
912 return; | 912 return; |
913 | 913 |
914 int button_number = 0; | 914 int button_number = 0; |
915 int modifiers = 0; | 915 int modifiers = 0; |
916 if (!args->PeekNext().IsEmpty()) { | 916 if (!args->PeekNext().IsEmpty()) { |
917 args->GetNext(&button_number); | 917 args->GetNext(&button_number); |
918 if (!args->PeekNext().IsEmpty()) | 918 if (!args->PeekNext().IsEmpty()) |
919 modifiers = GetKeyModifiersFromV8(args->PeekNext()); | 919 modifiers = GetKeyModifiersFromV8(args->isolate(), args->PeekNext()); |
920 } | 920 } |
921 sender_->ScheduleAsynchronousClick(button_number, modifiers); | 921 sender_->ScheduleAsynchronousClick(button_number, modifiers); |
922 } | 922 } |
923 | 923 |
924 void EventSenderBindings::ScheduleAsynchronousKeyDown(gin::Arguments* args) { | 924 void EventSenderBindings::ScheduleAsynchronousKeyDown(gin::Arguments* args) { |
925 if (!sender_) | 925 if (!sender_) |
926 return; | 926 return; |
927 | 927 |
928 std::string code_str; | 928 std::string code_str; |
929 int modifiers = 0; | 929 int modifiers = 0; |
930 int location = DOMKeyLocationStandard; | 930 int location = DOMKeyLocationStandard; |
931 args->GetNext(&code_str); | 931 args->GetNext(&code_str); |
932 if (!args->PeekNext().IsEmpty()) { | 932 if (!args->PeekNext().IsEmpty()) { |
933 v8::Local<v8::Value> value; | 933 v8::Local<v8::Value> value; |
934 args->GetNext(&value); | 934 args->GetNext(&value); |
935 modifiers = GetKeyModifiersFromV8(value); | 935 modifiers = GetKeyModifiersFromV8(args->isolate(), value); |
936 if (!args->PeekNext().IsEmpty()) | 936 if (!args->PeekNext().IsEmpty()) |
937 args->GetNext(&location); | 937 args->GetNext(&location); |
938 } | 938 } |
939 sender_->ScheduleAsynchronousKeyDown(code_str, modifiers, | 939 sender_->ScheduleAsynchronousKeyDown(code_str, modifiers, |
940 static_cast<KeyLocationCode>(location)); | 940 static_cast<KeyLocationCode>(location)); |
941 } | 941 } |
942 | 942 |
943 void EventSenderBindings::MouseDown(gin::Arguments* args) { | 943 void EventSenderBindings::MouseDown(gin::Arguments* args) { |
944 if (!sender_) | 944 if (!sender_) |
945 return; | 945 return; |
946 | 946 |
947 int button_number = 0; | 947 int button_number = 0; |
948 int modifiers = 0; | 948 int modifiers = 0; |
949 if (!args->PeekNext().IsEmpty()) { | 949 if (!args->PeekNext().IsEmpty()) { |
950 args->GetNext(&button_number); | 950 args->GetNext(&button_number); |
951 if (!args->PeekNext().IsEmpty()) | 951 if (!args->PeekNext().IsEmpty()) |
952 modifiers = GetKeyModifiersFromV8(args->PeekNext()); | 952 modifiers = GetKeyModifiersFromV8(args->isolate(), args->PeekNext()); |
953 } | 953 } |
954 sender_->MouseDown(button_number, modifiers); | 954 sender_->MouseDown(button_number, modifiers); |
955 } | 955 } |
956 | 956 |
957 void EventSenderBindings::MouseUp(gin::Arguments* args) { | 957 void EventSenderBindings::MouseUp(gin::Arguments* args) { |
958 if (!sender_) | 958 if (!sender_) |
959 return; | 959 return; |
960 | 960 |
961 int button_number = 0; | 961 int button_number = 0; |
962 int modifiers = 0; | 962 int modifiers = 0; |
963 if (!args->PeekNext().IsEmpty()) { | 963 if (!args->PeekNext().IsEmpty()) { |
964 args->GetNext(&button_number); | 964 args->GetNext(&button_number); |
965 if (!args->PeekNext().IsEmpty()) | 965 if (!args->PeekNext().IsEmpty()) |
966 modifiers = GetKeyModifiersFromV8(args->PeekNext()); | 966 modifiers = GetKeyModifiersFromV8(args->isolate(), args->PeekNext()); |
967 } | 967 } |
968 sender_->MouseUp(button_number, modifiers); | 968 sender_->MouseUp(button_number, modifiers); |
969 } | 969 } |
970 | 970 |
971 void EventSenderBindings::KeyDown(gin::Arguments* args) { | 971 void EventSenderBindings::KeyDown(gin::Arguments* args) { |
972 if (!sender_) | 972 if (!sender_) |
973 return; | 973 return; |
974 | 974 |
975 std::string code_str; | 975 std::string code_str; |
976 int modifiers = 0; | 976 int modifiers = 0; |
977 int location = DOMKeyLocationStandard; | 977 int location = DOMKeyLocationStandard; |
978 args->GetNext(&code_str); | 978 args->GetNext(&code_str); |
979 if (!args->PeekNext().IsEmpty()) { | 979 if (!args->PeekNext().IsEmpty()) { |
980 v8::Local<v8::Value> value; | 980 v8::Local<v8::Value> value; |
981 args->GetNext(&value); | 981 args->GetNext(&value); |
982 modifiers = GetKeyModifiersFromV8(value); | 982 modifiers = GetKeyModifiersFromV8(args->isolate(), value); |
983 if (!args->PeekNext().IsEmpty()) | 983 if (!args->PeekNext().IsEmpty()) |
984 args->GetNext(&location); | 984 args->GetNext(&location); |
985 } | 985 } |
986 sender_->KeyDown(code_str, modifiers, static_cast<KeyLocationCode>(location)); | 986 sender_->KeyDown(code_str, modifiers, static_cast<KeyLocationCode>(location)); |
987 } | 987 } |
988 | 988 |
989 bool EventSenderBindings::ForceLayoutOnEvents() const { | 989 bool EventSenderBindings::ForceLayoutOnEvents() const { |
990 if (sender_) | 990 if (sender_) |
991 return sender_->force_layout_on_events(); | 991 return sender_->force_layout_on_events(); |
992 return false; | 992 return false; |
(...skipping 908 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1901 double x; | 1901 double x; |
1902 double y; | 1902 double y; |
1903 if (!args->GetNext(&x) || !args->GetNext(&y)) { | 1903 if (!args->GetNext(&x) || !args->GetNext(&y)) { |
1904 args->ThrowError(); | 1904 args->ThrowError(); |
1905 return; | 1905 return; |
1906 } | 1906 } |
1907 WebPoint mouse_pos(static_cast<int>(x), static_cast<int>(y)); | 1907 WebPoint mouse_pos(static_cast<int>(x), static_cast<int>(y)); |
1908 | 1908 |
1909 int modifiers = 0; | 1909 int modifiers = 0; |
1910 if (!args->PeekNext().IsEmpty()) | 1910 if (!args->PeekNext().IsEmpty()) |
1911 modifiers = GetKeyModifiersFromV8(args->PeekNext()); | 1911 modifiers = GetKeyModifiersFromV8(args->isolate(), args->PeekNext()); |
1912 | 1912 |
1913 if (is_drag_mode_ && pressed_button_ == WebMouseEvent::ButtonLeft && | 1913 if (is_drag_mode_ && pressed_button_ == WebMouseEvent::ButtonLeft && |
1914 !replaying_saved_events_) { | 1914 !replaying_saved_events_) { |
1915 SavedEvent saved_event; | 1915 SavedEvent saved_event; |
1916 saved_event.type = SavedEvent::TYPE_MOUSE_MOVE; | 1916 saved_event.type = SavedEvent::TYPE_MOUSE_MOVE; |
1917 saved_event.pos = mouse_pos; | 1917 saved_event.pos = mouse_pos; |
1918 saved_event.modifiers = modifiers; | 1918 saved_event.modifiers = modifiers; |
1919 mouse_event_queue_.push_back(saved_event); | 1919 mouse_event_queue_.push_back(saved_event); |
1920 } else { | 1920 } else { |
1921 WebMouseEvent event; | 1921 WebMouseEvent event; |
(...skipping 458 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2380 bool has_precise_scrolling_deltas = false; | 2380 bool has_precise_scrolling_deltas = false; |
2381 int modifiers = 0; | 2381 int modifiers = 0; |
2382 bool can_scroll = true; | 2382 bool can_scroll = true; |
2383 if (!args->PeekNext().IsEmpty()) { | 2383 if (!args->PeekNext().IsEmpty()) { |
2384 args->GetNext(&paged); | 2384 args->GetNext(&paged); |
2385 if (!args->PeekNext().IsEmpty()) { | 2385 if (!args->PeekNext().IsEmpty()) { |
2386 args->GetNext(&has_precise_scrolling_deltas); | 2386 args->GetNext(&has_precise_scrolling_deltas); |
2387 if (!args->PeekNext().IsEmpty()) { | 2387 if (!args->PeekNext().IsEmpty()) { |
2388 v8::Local<v8::Value> value; | 2388 v8::Local<v8::Value> value; |
2389 args->GetNext(&value); | 2389 args->GetNext(&value); |
2390 modifiers = GetKeyModifiersFromV8(value); | 2390 modifiers = GetKeyModifiersFromV8(args->isolate(), value); |
2391 if (!args->PeekNext().IsEmpty()) | 2391 if (!args->PeekNext().IsEmpty()) |
2392 args->GetNext(&can_scroll); | 2392 args->GetNext(&can_scroll); |
2393 } | 2393 } |
2394 } | 2394 } |
2395 } | 2395 } |
2396 | 2396 |
2397 InitMouseEvent(WebInputEvent::MouseWheel, | 2397 InitMouseEvent(WebInputEvent::MouseWheel, |
2398 pressed_button_, | 2398 pressed_button_, |
2399 last_mouse_pos_, | 2399 last_mouse_pos_, |
2400 GetCurrentEventTimeSec(), | 2400 GetCurrentEventTimeSec(), |
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2517 | 2517 |
2518 bool EventSender::HandleInputEventOnViewOrPopup(const WebInputEvent& event) { | 2518 bool EventSender::HandleInputEventOnViewOrPopup(const WebInputEvent& event) { |
2519 if (WebPagePopup* popup = view_->pagePopup()) { | 2519 if (WebPagePopup* popup = view_->pagePopup()) { |
2520 if (!WebInputEvent::isKeyboardEventType(event.type)) | 2520 if (!WebInputEvent::isKeyboardEventType(event.type)) |
2521 return popup->handleInputEvent(event); | 2521 return popup->handleInputEvent(event); |
2522 } | 2522 } |
2523 return view_->handleInputEvent(event); | 2523 return view_->handleInputEvent(event); |
2524 } | 2524 } |
2525 | 2525 |
2526 } // namespace content | 2526 } // namespace content |
OLD | NEW |