// Copyright 2015 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "sky/engine/core/events/KeyboardEvent.h" #include "gen/sky/core/EventNames.h" #include "gen/sky/core/EventTypeNames.h" namespace blink { static AtomicString stringForType(WebInputEvent::Type type) { if (type == WebInputEvent::KeyDown) return EventTypeNames::keydown; if (type == WebInputEvent::Char) return EventTypeNames::keypress; if (type == WebInputEvent::KeyUp) return EventTypeNames::keyup; ASSERT_NOT_REACHED(); return AtomicString(); } static String locationFromModifiers(int modifiers) { if (modifiers & WebInputEvent::IsKeyPad) return "numpad"; if (modifiers & WebInputEvent::IsLeft) return "left"; if (modifiers & WebInputEvent::IsRight) return "right"; return "standard"; } KeyboardEvent::~KeyboardEvent() { } const AtomicString& KeyboardEvent::interfaceName() const { return EventNames::KeyboardEvent; } bool KeyboardEvent::isKeyboardEvent() const { return true; } KeyboardEvent::KeyboardEvent() : KeyboardEvent(AtomicString(), KeyboardEventInit()) { } KeyboardEvent::KeyboardEvent(const WebKeyboardEvent& event) : Event(stringForType(event.type), true, true) , m_key(event.key) , m_location(locationFromModifiers(event.modifiers)) , m_charCode(event.charCode) , m_ctrlKey(event.modifiers & WebInputEvent::ControlKey) , m_shiftKey(event.modifiers & WebInputEvent::ShiftKey) , m_altKey(event.modifiers & WebInputEvent::AltKey) , m_metaKey(event.modifiers & WebInputEvent::MetaKey) , m_repeat(event.modifiers & WebInputEvent::IsAutoRepeat) { m_timeStamp = event.timeStampMS; if (event.type == WebInputEvent::KeyDown || event.type == WebInputEvent::KeyUp) { m_charCode = 0; } else if (event.type == WebInputEvent::Char) { m_key = 0; m_location = String(); } } KeyboardEvent::KeyboardEvent(const AtomicString& type, const KeyboardEventInit& initializer) : Event(type, initializer) , m_key(initializer.key) , m_location(initializer.location) , m_charCode(initializer.charCode) , m_ctrlKey(initializer.ctrlKey) , m_shiftKey(initializer.shiftKey) , m_altKey(initializer.altKey) , m_metaKey(initializer.metaKey) , m_repeat(initializer.repeat) { } } // namespace blink