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 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
110 | 110 |
111 int GetKeyModifiers(const std::vector<std::string>& modifier_names) { | 111 int GetKeyModifiers(const std::vector<std::string>& modifier_names) { |
112 int modifiers = 0; | 112 int modifiers = 0; |
113 for (std::vector<std::string>::const_iterator it = modifier_names.begin(); | 113 for (std::vector<std::string>::const_iterator it = modifier_names.begin(); |
114 it != modifier_names.end(); ++it) { | 114 it != modifier_names.end(); ++it) { |
115 modifiers |= GetKeyModifier(*it); | 115 modifiers |= GetKeyModifier(*it); |
116 } | 116 } |
117 return modifiers; | 117 return modifiers; |
118 } | 118 } |
119 | 119 |
120 int GetKeyModifiersFromV8(v8::Handle<v8::Value> value) { | 120 int GetKeyModifiersFromV8(v8::Local<v8::Value> value) { |
121 std::vector<std::string> modifier_names; | 121 std::vector<std::string> modifier_names; |
122 if (value->IsString()) { | 122 if (value->IsString()) { |
123 modifier_names.push_back(gin::V8ToString(value)); | 123 modifier_names.push_back(gin::V8ToString(value)); |
124 } else if (value->IsArray()) { | 124 } else if (value->IsArray()) { |
125 gin::Converter<std::vector<std::string> >::FromV8( | 125 gin::Converter<std::vector<std::string> >::FromV8( |
126 NULL, value, &modifier_names); | 126 NULL, value, &modifier_names); |
127 } | 127 } |
128 return GetKeyModifiers(modifier_names); | 128 return GetKeyModifiers(modifier_names); |
129 } | 129 } |
130 | 130 |
(...skipping 345 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
476 : sender_(sender) { | 476 : sender_(sender) { |
477 } | 477 } |
478 | 478 |
479 EventSenderBindings::~EventSenderBindings() {} | 479 EventSenderBindings::~EventSenderBindings() {} |
480 | 480 |
481 // static | 481 // static |
482 void EventSenderBindings::Install(base::WeakPtr<EventSender> sender, | 482 void EventSenderBindings::Install(base::WeakPtr<EventSender> sender, |
483 WebFrame* frame) { | 483 WebFrame* frame) { |
484 v8::Isolate* isolate = blink::mainThreadIsolate(); | 484 v8::Isolate* isolate = blink::mainThreadIsolate(); |
485 v8::HandleScope handle_scope(isolate); | 485 v8::HandleScope handle_scope(isolate); |
486 v8::Handle<v8::Context> context = frame->mainWorldScriptContext(); | 486 v8::Local<v8::Context> context = frame->mainWorldScriptContext(); |
487 if (context.IsEmpty()) | 487 if (context.IsEmpty()) |
488 return; | 488 return; |
489 | 489 |
490 v8::Context::Scope context_scope(context); | 490 v8::Context::Scope context_scope(context); |
491 | 491 |
492 gin::Handle<EventSenderBindings> bindings = | 492 gin::Handle<EventSenderBindings> bindings = |
493 gin::CreateHandle(isolate, new EventSenderBindings(sender)); | 493 gin::CreateHandle(isolate, new EventSenderBindings(sender)); |
494 if (bindings.IsEmpty()) | 494 if (bindings.IsEmpty()) |
495 return; | 495 return; |
496 v8::Handle<v8::Object> global = context->Global(); | 496 v8::Local<v8::Object> global = context->Global(); |
497 global->Set(gin::StringToV8(isolate, "eventSender"), bindings.ToV8()); | 497 global->Set(gin::StringToV8(isolate, "eventSender"), bindings.ToV8()); |
498 } | 498 } |
499 | 499 |
500 gin::ObjectTemplateBuilder | 500 gin::ObjectTemplateBuilder |
501 EventSenderBindings::GetObjectTemplateBuilder(v8::Isolate* isolate) { | 501 EventSenderBindings::GetObjectTemplateBuilder(v8::Isolate* isolate) { |
502 return gin::Wrappable<EventSenderBindings>::GetObjectTemplateBuilder(isolate) | 502 return gin::Wrappable<EventSenderBindings>::GetObjectTemplateBuilder(isolate) |
503 .SetMethod("enableDOMUIEventLogging", | 503 .SetMethod("enableDOMUIEventLogging", |
504 &EventSenderBindings::EnableDOMUIEventLogging) | 504 &EventSenderBindings::EnableDOMUIEventLogging) |
505 .SetMethod("fireKeyboardEventsToElement", | 505 .SetMethod("fireKeyboardEventsToElement", |
506 &EventSenderBindings::FireKeyboardEventsToElement) | 506 &EventSenderBindings::FireKeyboardEventsToElement) |
(...skipping 417 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
924 | 924 |
925 void EventSenderBindings::ScheduleAsynchronousKeyDown(gin::Arguments* args) { | 925 void EventSenderBindings::ScheduleAsynchronousKeyDown(gin::Arguments* args) { |
926 if (!sender_) | 926 if (!sender_) |
927 return; | 927 return; |
928 | 928 |
929 std::string code_str; | 929 std::string code_str; |
930 int modifiers = 0; | 930 int modifiers = 0; |
931 int location = DOMKeyLocationStandard; | 931 int location = DOMKeyLocationStandard; |
932 args->GetNext(&code_str); | 932 args->GetNext(&code_str); |
933 if (!args->PeekNext().IsEmpty()) { | 933 if (!args->PeekNext().IsEmpty()) { |
934 v8::Handle<v8::Value> value; | 934 v8::Local<v8::Value> value; |
935 args->GetNext(&value); | 935 args->GetNext(&value); |
936 modifiers = GetKeyModifiersFromV8(value); | 936 modifiers = GetKeyModifiersFromV8(value); |
937 if (!args->PeekNext().IsEmpty()) | 937 if (!args->PeekNext().IsEmpty()) |
938 args->GetNext(&location); | 938 args->GetNext(&location); |
939 } | 939 } |
940 sender_->ScheduleAsynchronousKeyDown(code_str, modifiers, | 940 sender_->ScheduleAsynchronousKeyDown(code_str, modifiers, |
941 static_cast<KeyLocationCode>(location)); | 941 static_cast<KeyLocationCode>(location)); |
942 } | 942 } |
943 | 943 |
944 void EventSenderBindings::MouseDown(gin::Arguments* args) { | 944 void EventSenderBindings::MouseDown(gin::Arguments* args) { |
(...skipping 26 matching lines...) Expand all Loading... |
971 | 971 |
972 void EventSenderBindings::KeyDown(gin::Arguments* args) { | 972 void EventSenderBindings::KeyDown(gin::Arguments* args) { |
973 if (!sender_) | 973 if (!sender_) |
974 return; | 974 return; |
975 | 975 |
976 std::string code_str; | 976 std::string code_str; |
977 int modifiers = 0; | 977 int modifiers = 0; |
978 int location = DOMKeyLocationStandard; | 978 int location = DOMKeyLocationStandard; |
979 args->GetNext(&code_str); | 979 args->GetNext(&code_str); |
980 if (!args->PeekNext().IsEmpty()) { | 980 if (!args->PeekNext().IsEmpty()) { |
981 v8::Handle<v8::Value> value; | 981 v8::Local<v8::Value> value; |
982 args->GetNext(&value); | 982 args->GetNext(&value); |
983 modifiers = GetKeyModifiersFromV8(value); | 983 modifiers = GetKeyModifiersFromV8(value); |
984 if (!args->PeekNext().IsEmpty()) | 984 if (!args->PeekNext().IsEmpty()) |
985 args->GetNext(&location); | 985 args->GetNext(&location); |
986 } | 986 } |
987 sender_->KeyDown(code_str, modifiers, static_cast<KeyLocationCode>(location)); | 987 sender_->KeyDown(code_str, modifiers, static_cast<KeyLocationCode>(location)); |
988 } | 988 } |
989 | 989 |
990 bool EventSenderBindings::ForceLayoutOnEvents() const { | 990 bool EventSenderBindings::ForceLayoutOnEvents() const { |
991 if (sender_) | 991 if (sender_) |
(...skipping 1382 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2374 | 2374 |
2375 bool paged = false; | 2375 bool paged = false; |
2376 bool has_precise_scrolling_deltas = false; | 2376 bool has_precise_scrolling_deltas = false; |
2377 int modifiers = 0; | 2377 int modifiers = 0; |
2378 bool can_scroll = true; | 2378 bool can_scroll = true; |
2379 if (!args->PeekNext().IsEmpty()) { | 2379 if (!args->PeekNext().IsEmpty()) { |
2380 args->GetNext(&paged); | 2380 args->GetNext(&paged); |
2381 if (!args->PeekNext().IsEmpty()) { | 2381 if (!args->PeekNext().IsEmpty()) { |
2382 args->GetNext(&has_precise_scrolling_deltas); | 2382 args->GetNext(&has_precise_scrolling_deltas); |
2383 if (!args->PeekNext().IsEmpty()) { | 2383 if (!args->PeekNext().IsEmpty()) { |
2384 v8::Handle<v8::Value> value; | 2384 v8::Local<v8::Value> value; |
2385 args->GetNext(&value); | 2385 args->GetNext(&value); |
2386 modifiers = GetKeyModifiersFromV8(value); | 2386 modifiers = GetKeyModifiersFromV8(value); |
2387 if (!args->PeekNext().IsEmpty()) | 2387 if (!args->PeekNext().IsEmpty()) |
2388 args->GetNext(&can_scroll); | 2388 args->GetNext(&can_scroll); |
2389 } | 2389 } |
2390 } | 2390 } |
2391 } | 2391 } |
2392 | 2392 |
2393 InitMouseEvent(WebInputEvent::MouseWheel, | 2393 InitMouseEvent(WebInputEvent::MouseWheel, |
2394 pressed_button_, | 2394 pressed_button_, |
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2513 | 2513 |
2514 bool EventSender::HandleInputEventOnViewOrPopup(const WebInputEvent& event) { | 2514 bool EventSender::HandleInputEventOnViewOrPopup(const WebInputEvent& event) { |
2515 if (WebPagePopup* popup = view_->pagePopup()) { | 2515 if (WebPagePopup* popup = view_->pagePopup()) { |
2516 if (!WebInputEvent::isKeyboardEventType(event.type)) | 2516 if (!WebInputEvent::isKeyboardEventType(event.type)) |
2517 return popup->handleInputEvent(event); | 2517 return popup->handleInputEvent(event); |
2518 } | 2518 } |
2519 return view_->handleInputEvent(event); | 2519 return view_->handleInputEvent(event); |
2520 } | 2520 } |
2521 | 2521 |
2522 } // namespace content | 2522 } // namespace content |
OLD | NEW |