Chromium Code Reviews| Index: Source/web/WebInputEventConversion.cpp |
| diff --git a/Source/web/WebInputEventConversion.cpp b/Source/web/WebInputEventConversion.cpp |
| index 05362ad51cead37f99e912c696d5e67a2e63c626..6d51e6d3acc3c9b0b7a1279e430dddcac75c4aa5 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,28 @@ inline PlatformEvent::Type toPlatformKeyboardEventType(WebInputEvent::Type type) |
| return PlatformEvent::KeyDown; |
| } |
| -PlatformKeyboardEventBuilder::PlatformKeyboardEventBuilder(const WebKeyboardEvent& e) |
| +static void getDomCodeStringFromEnum(Widget* widget, String& code, long domCode) |
|
bokan
2015/01/20 17:05:58
Can we return the string, rather than using an out
Habib Virji
2015/01/22 16:01:30
Done.
|
| +{ |
| + FrameView* view = toFrameView(widget->root()); |
| + if (view) { |
| + WebViewImpl* webView = WebViewImpl::fromPage(view->page()); |
| + if (webView) |
| + code = webView->client()->domCodeStringFromEnum(domCode); |
| + } |
|
Wez
2015/01/17 02:35:10
This leaves the |code| empty, which is also the st
Habib Virji
2015/01/22 16:01:30
I have sent mail to Gary with the questions.
For
|
| +} |
| + |
| +static long 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.utf8().data()); |
| + } |
| + return 0; |
|
Wez
2015/01/17 02:35:10
This means that the embedder cannot use zero as on
|
| +} |
| + |
| +PlatformKeyboardEventBuilder::PlatformKeyboardEventBuilder(Widget* widget, const WebKeyboardEvent& e) |
| { |
| m_type = toPlatformKeyboardEventType(e.type); |
| m_text = String(e.text); |
| @@ -315,6 +338,7 @@ PlatformKeyboardEventBuilder::PlatformKeyboardEventBuilder(const WebKeyboardEven |
| m_nativeVirtualKeyCode = e.nativeKeyCode; |
| m_isKeypad = (e.modifiers & WebInputEvent::IsKeyPad); |
| m_isSystemKey = e.isSystemKey; |
| + getDomCodeStringFromEnum(widget, m_code, e.domCode); |
| m_modifiers = toPlatformEventModifiers(e.modifiers); |
| @@ -645,7 +669,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 +696,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 +721,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 +731,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()); |