Index: content/browser/devtools/protocol/input_handler.cc |
diff --git a/content/browser/devtools/protocol/input_handler.cc b/content/browser/devtools/protocol/input_handler.cc |
index 610b71cd3390c4d0cf403ba2afe5e3f1ae713c3b..a75685f8087bdd27486488e0ee99c7bf3ec67790 100644 |
--- a/content/browser/devtools/protocol/input_handler.cc |
+++ b/content/browser/devtools/protocol/input_handler.cc |
@@ -212,6 +212,82 @@ Response InputHandler::DispatchKeyEvent( |
return Response::OK(); |
} |
+Response InputHandler::DispatchKeyEvent( |
dgozman
2015/06/02 13:22:01
Please implement one of the methods using another
Habib Virji
2015/06/02 14:15:19
Done.
|
+ const std::string& type, |
+ const int* modifiers, |
+ const double* timestamp, |
+ const std::string* text, |
+ const std::string* unmodified_text, |
+ const std::string* key_identifier, |
+ const std::string* code, |
+ const std::string* key, |
+ const int* windows_virtual_key_code, |
+ const int* native_virtual_key_code, |
+ const bool* auto_repeat, |
+ const bool* is_keypad, |
+ const bool* is_system_key) { |
+ NativeWebKeyboardEvent event; |
+ |
+ if (type == dispatch_key_event::kTypeKeyDown) { |
+ event.type = blink::WebInputEvent::KeyDown; |
+ } else if (type == dispatch_key_event::kTypeKeyUp) { |
+ event.type = blink::WebInputEvent::KeyUp; |
+ } else if (type == dispatch_key_event::kTypeChar) { |
+ event.type = blink::WebInputEvent::Char; |
+ } else if (type == dispatch_key_event::kTypeRawKeyDown) { |
+ event.type = blink::WebInputEvent::RawKeyDown; |
+ } else { |
+ return Response::InvalidParams( |
+ base::StringPrintf("Unexpected event type '%s'", type.c_str())); |
+ } |
+ |
+ SetEventModifiers(&event, modifiers); |
+ SetEventTimestamp(&event, timestamp); |
+ if (!SetKeyboardEventText(event.text, text)) |
+ return Response::InvalidParams("Invalid 'text' parameter"); |
+ if (!SetKeyboardEventText(event.unmodifiedText, unmodified_text)) |
+ return Response::InvalidParams("Invalid 'unmodifiedText' parameter"); |
+ |
+ if (windows_virtual_key_code) |
+ event.windowsKeyCode = *windows_virtual_key_code; |
+ if (native_virtual_key_code) |
+ event.nativeKeyCode = *native_virtual_key_code; |
+ if (auto_repeat && *auto_repeat) |
+ event.modifiers |= blink::WebInputEvent::IsAutoRepeat; |
+ if (is_keypad && *is_keypad) |
+ event.modifiers |= blink::WebInputEvent::IsKeyPad; |
+ if (is_system_key) |
+ event.isSystemKey = *is_system_key; |
+ |
+ if (key_identifier) { |
+ if (key_identifier->size() > |
+ blink::WebKeyboardEvent::keyIdentifierLengthCap) { |
+ return Response::InvalidParams("Invalid 'keyIdentifier' parameter"); |
+ } |
+ for (size_t i = 0; i < key_identifier->size(); ++i) |
+ event.keyIdentifier[i] = (*key_identifier)[i]; |
+ } else if (event.type != blink::WebInputEvent::Char) { |
+ event.setKeyIdentifierFromWindowsKeyCode(); |
+ } |
+ |
+ if (code) { |
+ event.domCode = static_cast<int>( |
+ ui::KeycodeConverter::CodeStringToDomCode(code->c_str())); |
+ } |
+ |
+ if (key) { |
+ event.domKey = static_cast<int>( |
+ ui::KeycodeConverter::KeyStringToDomKey(key->c_str())); |
+ } |
+ |
+ if (!host_) |
+ return Response::ServerError("Could not connect to view"); |
+ |
+ host_->Focus(); |
+ host_->ForwardKeyboardEvent(event); |
+ return Response::OK(); |
+} |
+ |
Response InputHandler::DispatchMouseEvent( |
const std::string& type, |
int x, |