michael@0: /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ michael@0: /* This Source Code Form is subject to the terms of the Mozilla Public michael@0: * License, v. 2.0. If a copy of the MPL was not distributed with this michael@0: * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ michael@0: michael@0: #ifndef mozilla_dom_KeyboardEvent_h_ michael@0: #define mozilla_dom_KeyboardEvent_h_ michael@0: michael@0: #include "mozilla/dom/UIEvent.h" michael@0: #include "mozilla/dom/KeyboardEventBinding.h" michael@0: #include "mozilla/EventForwards.h" michael@0: #include "nsIDOMKeyEvent.h" michael@0: michael@0: namespace mozilla { michael@0: namespace dom { michael@0: michael@0: class KeyboardEvent : public UIEvent, michael@0: public nsIDOMKeyEvent michael@0: { michael@0: public: michael@0: KeyboardEvent(EventTarget* aOwner, michael@0: nsPresContext* aPresContext, michael@0: WidgetKeyboardEvent* aEvent); michael@0: michael@0: NS_DECL_ISUPPORTS_INHERITED michael@0: michael@0: // nsIDOMKeyEvent Interface michael@0: NS_DECL_NSIDOMKEYEVENT michael@0: michael@0: // Forward to base class michael@0: NS_FORWARD_TO_UIEVENT michael@0: michael@0: static already_AddRefed Constructor( michael@0: const GlobalObject& aGlobal, michael@0: const nsAString& aType, michael@0: const KeyboardEventInit& aParam, michael@0: ErrorResult& aRv); michael@0: michael@0: virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE michael@0: { michael@0: return KeyboardEventBinding::Wrap(aCx, this); michael@0: } michael@0: michael@0: bool AltKey(); michael@0: bool CtrlKey(); michael@0: bool ShiftKey(); michael@0: bool MetaKey(); michael@0: michael@0: bool GetModifierState(const nsAString& aKey) michael@0: { michael@0: return GetModifierStateInternal(aKey); michael@0: } michael@0: michael@0: bool Repeat(); michael@0: bool IsComposing(); michael@0: uint32_t CharCode(); michael@0: uint32_t KeyCode(); michael@0: virtual uint32_t Which() MOZ_OVERRIDE; michael@0: uint32_t Location(); michael@0: michael@0: void InitKeyEvent(const nsAString& aType, bool aCanBubble, bool aCancelable, michael@0: nsIDOMWindow* aView, bool aCtrlKey, bool aAltKey, michael@0: bool aShiftKey, bool aMetaKey, michael@0: uint32_t aKeyCode, uint32_t aCharCode, michael@0: ErrorResult& aRv) michael@0: { michael@0: aRv = InitKeyEvent(aType, aCanBubble, aCancelable, aView, michael@0: aCtrlKey, aAltKey, aShiftKey,aMetaKey, michael@0: aKeyCode, aCharCode); michael@0: } michael@0: michael@0: private: michael@0: // True, if the instance is created with Constructor(). michael@0: bool mInitializedByCtor; michael@0: // If the instance is created with Constructor(), which may have independent michael@0: // value. mInitializedWhichValue stores it. I.e., this is invalid when michael@0: // mInitializedByCtor is false. michael@0: uint32_t mInitialzedWhichValue; michael@0: }; michael@0: michael@0: } // namespace dom michael@0: } // namespace mozilla michael@0: michael@0: #endif // mozilla_dom_KeyboardEvent_h_