blob: 7517b70abd40688d65537e2961efe55306e60595 [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.
#ifndef SKY_ENGINE_CORE_EVENTS_KEYBOARDEVENT_H_
#define SKY_ENGINE_CORE_EVENTS_KEYBOARDEVENT_H_
#include "sky/engine/core/events/Event.h"
#include "sky/engine/public/platform/WebInputEvent.h"
namespace blink {
struct KeyboardEventInit : public EventInit {
unsigned key = 0;
String location;
unsigned charCode = 0;
bool ctrlKey = false;
bool shiftKey = false;
bool altKey = false;
bool metaKey = false;
bool repeat = false;
};
class KeyboardEvent : public Event {
DEFINE_WRAPPERTYPEINFO();
public:
static PassRefPtr<KeyboardEvent> create()
{
return adoptRef(new KeyboardEvent);
}
static PassRefPtr<KeyboardEvent> create(const WebKeyboardEvent& event)
{
return adoptRef(new KeyboardEvent(event));
}
static PassRefPtr<KeyboardEvent> create(const AtomicString& type, const KeyboardEventInit& initializer)
{
return adoptRef(new KeyboardEvent(type, initializer));
}
~KeyboardEvent() override;
const AtomicString& interfaceName() const override;
bool isKeyboardEvent() const override;
unsigned key() const { return m_key; }
const String& location() const { return m_location; }
unsigned charCode() const { return m_charCode; }
bool ctrlKey() const { return m_ctrlKey; }
bool shiftKey() const { return m_shiftKey; }
bool altKey() const { return m_altKey; }
bool metaKey() const { return m_metaKey; }
bool repeat() const { return m_repeat; }
private:
KeyboardEvent();
explicit KeyboardEvent(const WebKeyboardEvent& event);
KeyboardEvent(const AtomicString&, const KeyboardEventInit&);
unsigned m_key;
String m_location;
unsigned m_charCode;
bool m_ctrlKey;
bool m_shiftKey;
bool m_altKey;
bool m_metaKey;
bool m_repeat;
};
DEFINE_EVENT_TYPE_CASTS(KeyboardEvent);
} // namespace blink
#endif // SKY_ENGINE_CORE_EVENTS_KEYBOARDEVENT_H_