| Index: Source/web/WebInputEventConversion.cpp
|
| diff --git a/Source/web/WebInputEventConversion.cpp b/Source/web/WebInputEventConversion.cpp
|
| index 05362ad51cead37f99e912c696d5e67a2e63c626..dfd7e1a13a5a71a2a22984fbd107a4b721dc3af1 100644
|
| --- a/Source/web/WebInputEventConversion.cpp
|
| +++ b/Source/web/WebInputEventConversion.cpp
|
| @@ -45,6 +45,8 @@
|
| #include "core/rendering/RenderObject.h"
|
| #include "platform/KeyboardCodes.h"
|
| #include "platform/Widget.h"
|
| +#include "public/web/WebViewClient.h"
|
| +#include "web/WebViewImpl.h"
|
|
|
| namespace blink {
|
|
|
| @@ -305,7 +307,29 @@ inline PlatformEvent::Type toPlatformKeyboardEventType(WebInputEvent::Type type)
|
| return PlatformEvent::KeyDown;
|
| }
|
|
|
| -PlatformKeyboardEventBuilder::PlatformKeyboardEventBuilder(const WebKeyboardEvent& e)
|
| +static String getDomCodeStringFromEnum(Widget* widget, long domCode)
|
| +{
|
| + FrameView* view = toFrameView(widget->root());
|
| + if (view) {
|
| + WebViewImpl* webView = WebViewImpl::fromPage(view->page());
|
| + if (webView)
|
| + return webView->client()->domCodeStringFromEnum(domCode);
|
| + }
|
| + return String("Undefined");
|
| +}
|
| +
|
| +static int getDomEnumFromCodeString(const Widget* widget, const String& code)
|
| +{
|
| + FrameView* view = toFrameView(widget->root());
|
| + if (view) {
|
| + WebViewImpl* webView = WebViewImpl::fromPage(view->page());
|
| + if (webView)
|
| + return webView->client()->domEnumFromCodeString(code);
|
| + }
|
| + return 0;
|
| +}
|
| +
|
| +PlatformKeyboardEventBuilder::PlatformKeyboardEventBuilder(Widget* widget, const WebKeyboardEvent& e)
|
| {
|
| m_type = toPlatformKeyboardEventType(e.type);
|
| m_text = String(e.text);
|
| @@ -315,6 +339,7 @@ PlatformKeyboardEventBuilder::PlatformKeyboardEventBuilder(const WebKeyboardEven
|
| m_nativeVirtualKeyCode = e.nativeKeyCode;
|
| m_isKeypad = (e.modifiers & WebInputEvent::IsKeyPad);
|
| m_isSystemKey = e.isSystemKey;
|
| + m_code = getDomCodeStringFromEnum(widget, e.domCode);
|
|
|
| m_modifiers = toPlatformEventModifiers(e.modifiers);
|
|
|
| @@ -645,7 +670,7 @@ WebMouseWheelEventBuilder::WebMouseWheelEventBuilder(const Widget* widget, const
|
| canScroll = event.canScroll();
|
| }
|
|
|
| -WebKeyboardEventBuilder::WebKeyboardEventBuilder(const KeyboardEvent& event)
|
| +WebKeyboardEventBuilder::WebKeyboardEventBuilder(const Widget* widget, const KeyboardEvent& event)
|
| {
|
| if (event.type() == EventTypeNames::keydown)
|
| type = KeyDown;
|
| @@ -672,6 +697,7 @@ WebKeyboardEventBuilder::WebKeyboardEventBuilder(const KeyboardEvent& event)
|
| if (!event.keyEvent())
|
| return;
|
| nativeKeyCode = event.keyEvent()->nativeVirtualKeyCode();
|
| + domCode = getDomEnumFromCodeString(widget, event.keyEvent()->code());
|
| unsigned numberOfCharacters = std::min(event.keyEvent()->text().length(), static_cast<unsigned>(textLengthCap));
|
| for (unsigned i = 0; i < numberOfCharacters; ++i) {
|
| text[i] = event.keyEvent()->text()[i];
|
| @@ -696,7 +722,7 @@ WebInputEvent::Type toWebKeyboardEventType(PlatformEvent::Type type)
|
| }
|
| }
|
|
|
| -WebKeyboardEventBuilder::WebKeyboardEventBuilder(const PlatformKeyboardEvent& event)
|
| +WebKeyboardEventBuilder::WebKeyboardEventBuilder(const Widget* widget, const PlatformKeyboardEvent& event)
|
| {
|
| type = toWebKeyboardEventType(event.type());
|
| modifiers = toWebEventModifiers(event.modifiers());
|
| @@ -706,6 +732,7 @@ WebKeyboardEventBuilder::WebKeyboardEventBuilder(const PlatformKeyboardEvent& ev
|
| modifiers |= WebInputEvent::IsKeyPad;
|
| isSystemKey = event.isSystemKey();
|
| nativeKeyCode = event.nativeVirtualKeyCode();
|
| + domCode = getDomEnumFromCodeString(widget, event.code());
|
|
|
| windowsKeyCode = windowsKeyCodeWithoutLocation(event.windowsVirtualKeyCode());
|
| modifiers |= locationModifiersFromWindowsKeyCode(event.windowsVirtualKeyCode());
|
|
|