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()); |