blob: 5556fc79e467d30e2dfe8d7be2f3167f63536829 [file] [log] [blame]
// 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