Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(33)

Unified Diff: sky/engine/web/WebInputEventConversion.cpp

Issue 872233002: Switch KeyboardEvents over to NewEventHandler (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Rename virtualKeyCode to key Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « sky/engine/web/WebInputEventConversion.h ('k') | sky/engine/web/WebViewImpl.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: sky/engine/web/WebInputEventConversion.cpp
diff --git a/sky/engine/web/WebInputEventConversion.cpp b/sky/engine/web/WebInputEventConversion.cpp
deleted file mode 100644
index 100dd48714d884c868ffa1f2ca37ab0ba1713925..0000000000000000000000000000000000000000
--- a/sky/engine/web/WebInputEventConversion.cpp
+++ /dev/null
@@ -1,238 +0,0 @@
-/*
- * Copyright (C) 2009 Google Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following disclaimer
- * in the documentation and/or other materials provided with the
- * distribution.
- * * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "sky/engine/config.h"
-#include "sky/engine/web/WebInputEventConversion.h"
-
-#include "sky/engine/core/events/KeyboardEvent.h"
-#include "sky/engine/core/frame/FrameHost.h"
-#include "sky/engine/core/frame/FrameView.h"
-#include "sky/engine/core/page/Page.h"
-#include "sky/engine/core/rendering/RenderObject.h"
-#include "sky/engine/platform/KeyboardCodes.h"
-#include "sky/engine/platform/Widget.h"
-
-namespace blink {
-
-static const double millisPerSecond = 1000.0;
-
-// MakePlatformKeyboardEvent --------------------------------------------------
-
-inline PlatformEvent::Type toPlatformKeyboardEventType(WebInputEvent::Type type)
-{
- switch (type) {
- case WebInputEvent::KeyUp:
- return PlatformEvent::KeyUp;
- case WebInputEvent::KeyDown:
- return PlatformEvent::KeyDown;
- case WebInputEvent::RawKeyDown:
- return PlatformEvent::RawKeyDown;
- case WebInputEvent::Char:
- return PlatformEvent::Char;
- default:
- ASSERT_NOT_REACHED();
- }
- return PlatformEvent::KeyDown;
-}
-
-PlatformKeyboardEventBuilder::PlatformKeyboardEventBuilder(const WebKeyboardEvent& e)
-{
- m_type = toPlatformKeyboardEventType(e.type);
- m_text = String(e.text);
- m_unmodifiedText = String(e.unmodifiedText);
- m_keyIdentifier = String(e.keyIdentifier);
- m_autoRepeat = (e.modifiers & WebInputEvent::IsAutoRepeat);
- m_nativeVirtualKeyCode = e.nativeKeyCode;
- m_isKeypad = (e.modifiers & WebInputEvent::IsKeyPad);
- m_isSystemKey = e.isSystemKey;
-
- m_modifiers = 0;
- if (e.modifiers & WebInputEvent::ShiftKey)
- m_modifiers |= PlatformEvent::ShiftKey;
- if (e.modifiers & WebInputEvent::ControlKey)
- m_modifiers |= PlatformEvent::CtrlKey;
- if (e.modifiers & WebInputEvent::AltKey)
- m_modifiers |= PlatformEvent::AltKey;
- if (e.modifiers & WebInputEvent::MetaKey)
- m_modifiers |= PlatformEvent::MetaKey;
-
- // FIXME: PlatformKeyboardEvents expect a locational version of the keycode (e.g. VK_LSHIFT
- // instead of VK_SHIFT). This should be changed so the location/keycode are stored separately,
- // as in other places in the code.
- m_windowsVirtualKeyCode = e.windowsKeyCode;
- if (e.windowsKeyCode == VK_SHIFT) {
- if (e.modifiers & WebInputEvent::IsLeft)
- m_windowsVirtualKeyCode = VK_LSHIFT;
- else if (e.modifiers & WebInputEvent::IsRight)
- m_windowsVirtualKeyCode = VK_RSHIFT;
- } else if (e.windowsKeyCode == VK_CONTROL) {
- if (e.modifiers & WebInputEvent::IsLeft)
- m_windowsVirtualKeyCode = VK_LCONTROL;
- else if (e.modifiers & WebInputEvent::IsRight)
- m_windowsVirtualKeyCode = VK_RCONTROL;
- } else if (e.windowsKeyCode == VK_MENU) {
- if (e.modifiers & WebInputEvent::IsLeft)
- m_windowsVirtualKeyCode = VK_LMENU;
- else if (e.modifiers & WebInputEvent::IsRight)
- m_windowsVirtualKeyCode = VK_RMENU;
- }
-
-}
-
-void PlatformKeyboardEventBuilder::setKeyType(Type type)
-{
- // According to the behavior of Webkit in Windows platform,
- // we need to convert KeyDown to RawKeydown and Char events
- // See WebKit/WebKit/Win/WebView.cpp
- ASSERT(m_type == KeyDown);
- ASSERT(type == RawKeyDown || type == Char);
- m_type = type;
-
- if (type == RawKeyDown) {
- m_text = String();
- m_unmodifiedText = String();
- } else {
- m_keyIdentifier = String();
- m_windowsVirtualKeyCode = 0;
- }
-}
-
-// Please refer to bug http://b/issue?id=961192, which talks about Webkit
-// keyboard event handling changes. It also mentions the list of keys
-// which don't have associated character events.
-bool PlatformKeyboardEventBuilder::isCharacterKey() const
-{
- switch (windowsVirtualKeyCode()) {
- case VKEY_BACK:
- case VKEY_ESCAPE:
- return false;
- }
- return true;
-}
-
-static int getWebInputModifiers(const UIEventWithKeyState& event)
-{
- int modifiers = 0;
- if (event.ctrlKey())
- modifiers |= WebInputEvent::ControlKey;
- if (event.shiftKey())
- modifiers |= WebInputEvent::ShiftKey;
- if (event.altKey())
- modifiers |= WebInputEvent::AltKey;
- if (event.metaKey())
- modifiers |= WebInputEvent::MetaKey;
- return modifiers;
-}
-
-WebKeyboardEventBuilder::WebKeyboardEventBuilder(const KeyboardEvent& event)
-{
- if (event.type() == EventTypeNames::keydown)
- type = KeyDown;
- else if (event.type() == EventTypeNames::keyup)
- type = WebInputEvent::KeyUp;
- else if (event.type() == EventTypeNames::keypress)
- type = WebInputEvent::Char;
- else
- return; // Skip all other keyboard events.
-
- modifiers = getWebInputModifiers(event);
- if (event.location() == KeyboardEvent::DOM_KEY_LOCATION_NUMPAD)
- modifiers |= WebInputEvent::IsKeyPad;
- else if (event.location() == KeyboardEvent::DOM_KEY_LOCATION_LEFT)
- modifiers |= WebInputEvent::IsLeft;
- else if (event.location() == KeyboardEvent::DOM_KEY_LOCATION_RIGHT)
- modifiers |= WebInputEvent::IsRight;
-
- timeStampSeconds = event.timeStamp() / millisPerSecond;
- windowsKeyCode = event.keyCode();
-
- // The platform keyevent does not exist if the event was created using
- // initKeyboardEvent.
- if (!event.keyEvent())
- return;
- nativeKeyCode = event.keyEvent()->nativeVirtualKeyCode();
- 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];
- unmodifiedText[i] = event.keyEvent()->unmodifiedText()[i];
- }
- memcpy(keyIdentifier, event.keyIdentifier().ascii().data(), event.keyIdentifier().length());
-}
-
-WebInputEvent::Type toWebKeyboardEventType(PlatformEvent::Type type)
-{
- switch (type) {
- case PlatformEvent::KeyUp:
- return WebInputEvent::KeyUp;
- case PlatformEvent::KeyDown:
- return WebInputEvent::KeyDown;
- case PlatformEvent::RawKeyDown:
- return WebInputEvent::RawKeyDown;
- case PlatformEvent::Char:
- return WebInputEvent::Char;
- default:
- return WebInputEvent::Undefined;
- }
-}
-
-int toWebKeyboardEventModifiers(int modifiers)
-{
- int newModifiers = 0;
- if (modifiers & PlatformEvent::ShiftKey)
- newModifiers |= WebInputEvent::ShiftKey;
- if (modifiers & PlatformEvent::CtrlKey)
- newModifiers |= WebInputEvent::ControlKey;
- if (modifiers & PlatformEvent::AltKey)
- newModifiers |= WebInputEvent::AltKey;
- if (modifiers & PlatformEvent::MetaKey)
- newModifiers |= WebInputEvent::MetaKey;
- return newModifiers;
-}
-
-WebKeyboardEventBuilder::WebKeyboardEventBuilder(const PlatformKeyboardEvent& event)
-{
- type = toWebKeyboardEventType(event.type());
- modifiers = toWebKeyboardEventModifiers(event.modifiers());
- if (event.isAutoRepeat())
- modifiers |= WebInputEvent::IsAutoRepeat;
- if (event.isKeypad())
- modifiers |= WebInputEvent::IsKeyPad;
- isSystemKey = event.isSystemKey();
- nativeKeyCode = event.nativeVirtualKeyCode();
-
- windowsKeyCode = windowsKeyCodeWithoutLocation(event.windowsVirtualKeyCode());
- modifiers |= locationModifiersFromWindowsKeyCode(event.windowsVirtualKeyCode());
-
- event.text().copyTo(text, 0, textLengthCap);
- event.unmodifiedText().copyTo(unmodifiedText, 0, textLengthCap);
- memcpy(keyIdentifier, event.keyIdentifier().ascii().data(), std::min(static_cast<unsigned>(keyIdentifierLengthCap), event.keyIdentifier().length()));
-}
-
-} // namespace blink
« no previous file with comments | « sky/engine/web/WebInputEventConversion.h ('k') | sky/engine/web/WebViewImpl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698