2015-05-03 22:32:37 +03:00
|
|
|
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
|
|
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
|
2012-05-21 15:12:37 +04:00
|
|
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
2004-08-20 22:09:19 +04:00
|
|
|
|
2014-02-27 14:51:13 +04:00
|
|
|
#ifndef mozilla_dom_KeyboardEvent_h_
|
|
|
|
#define mozilla_dom_KeyboardEvent_h_
|
2004-08-20 22:09:19 +04:00
|
|
|
|
2014-02-28 18:58:43 +04:00
|
|
|
#include "mozilla/dom/UIEvent.h"
|
2013-05-12 09:08:37 +04:00
|
|
|
#include "mozilla/dom/KeyboardEventBinding.h"
|
2014-02-28 18:58:43 +04:00
|
|
|
#include "mozilla/EventForwards.h"
|
Bug 1222285 - Part 1: Spoofing the keyboard event to mimc a certain keyboard layout according to the content-language of the document when 'privacy.resistFingerprinting' is true. r=arthuredelstein,masayuki,smaug
This patch makes Firefox to spoof keyboardEvent.code, keyboardEvent.keycode and
modifier states, for 'Shift', 'Alt', 'Control' and 'AltGraph', when 'privacy.resistFingerprinting'
is true. Firefox will spoof keyboard events as a certain keyboard layout according
to the content language of the document, for example, we use US English keyboard for
English content. Right now, it only supports English contents, we will add more
support for more languages later. The spoofing only affects content, chrome
can still see real keyboard events.
MozReview-Commit-ID: 40JPvwLmMMB
--HG--
extra : rebase_source : 870224ba4f87b3e336c5b061ac6859dd1c48c4f2
2017-08-29 06:33:27 +03:00
|
|
|
#include "nsRFPService.h"
|
2004-08-20 22:09:19 +04:00
|
|
|
|
2014-02-27 14:51:13 +04:00
|
|
|
namespace mozilla {
|
|
|
|
namespace dom {
|
|
|
|
|
2018-02-09 19:17:10 +03:00
|
|
|
class KeyboardEvent : public UIEvent {
|
2004-08-20 22:09:19 +04:00
|
|
|
public:
|
2014-02-27 14:51:13 +04:00
|
|
|
KeyboardEvent(EventTarget* aOwner, nsPresContext* aPresContext,
|
|
|
|
WidgetKeyboardEvent* aEvent);
|
2004-08-20 22:09:19 +04:00
|
|
|
|
2018-02-12 23:43:55 +03:00
|
|
|
NS_INLINE_DECL_REFCOUNTING_INHERITED(KeyboardEvent, UIEvent)
|
2004-08-20 22:09:19 +04:00
|
|
|
|
2018-02-09 19:17:09 +03:00
|
|
|
virtual KeyboardEvent* AsKeyboardEvent() override { return this; }
|
|
|
|
|
Bug 1479964 - Set KeyboardEvent.keyCode and KeyboardEvent.charCode to same value if the event is "keypress" event r=smaug
Chrome sets both KeyboardEvent.keyCode and KeyboardEvent.charCode of "keypress"
event to same value. On the other hand, our traditional behavior is, sets
one of them to 0.
Therefore, we need to set keyCode value to charCode value if the keypress
event is caused by a non-function key, i.e., it may be a printable key with
specific modifier state and/or different keyboard layout for compatibility
with Chrome. Similarly, we need to set charCode value to keyCode value if
the keypress event is caused by a function key which is not mapped to producing
a character.
Note that this hack is for compatibility with Chrome. So, for now, it's enough
to change the behavior only for "keypress" event handlers in web content. If
we completely change the behavior, we need to fix a lot of default handlers
and mochitests too. However, it's really difficult because default handlers
check whether keypress events are printable or not with following code:
> if (event.charCode &&
> !event.altKey && !event.ctrlKey && !event.metaKey) {
or
> if (!event.keyCode &&
> !event.altKey && !event.ctrlKey && !event.metaKey) {
So, until we stop dispatching "keypress" events for non-printable keys,
we need complicated check in each of them.
And also note that this patch changes the behavior of KeyboardEvent::KeyCode()
when spoofing is enabled and the instance is initialized by initKeyEvent() or
initKeyboardEvent(). That was changed by bug 1222285 unexpectedly and keeping
the behavior makes patched code really ugly. Therefore, this takes back the
old behavior even if spoofing is enabled.
Differential Revision: https://phabricator.services.mozilla.com/D7974
--HG--
extra : moz-landing-system : lando
2018-10-09 07:43:37 +03:00
|
|
|
static already_AddRefed<KeyboardEvent> ConstructorJS(
|
2014-04-14 10:37:47 +04:00
|
|
|
const GlobalObject& aGlobal, const nsAString& aType,
|
|
|
|
const KeyboardEventInit& aParam, ErrorResult& aRv);
|
2018-11-30 13:46:48 +03:00
|
|
|
|
2018-02-09 19:17:09 +03:00
|
|
|
virtual JSObject* WrapObjectInternal(
|
|
|
|
JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override {
|
2018-06-26 00:20:54 +03:00
|
|
|
return KeyboardEvent_Binding::Wrap(aCx, this, aGivenProto);
|
2013-04-21 03:48:55 +04:00
|
|
|
}
|
|
|
|
|
Bug 1222285 - Part 1: Spoofing the keyboard event to mimc a certain keyboard layout according to the content-language of the document when 'privacy.resistFingerprinting' is true. r=arthuredelstein,masayuki,smaug
This patch makes Firefox to spoof keyboardEvent.code, keyboardEvent.keycode and
modifier states, for 'Shift', 'Alt', 'Control' and 'AltGraph', when 'privacy.resistFingerprinting'
is true. Firefox will spoof keyboard events as a certain keyboard layout according
to the content language of the document, for example, we use US English keyboard for
English content. Right now, it only supports English contents, we will add more
support for more languages later. The spoofing only affects content, chrome
can still see real keyboard events.
MozReview-Commit-ID: 40JPvwLmMMB
--HG--
extra : rebase_source : 870224ba4f87b3e336c5b061ac6859dd1c48c4f2
2017-08-29 06:33:27 +03:00
|
|
|
bool AltKey(CallerType aCallerType = CallerType::System);
|
|
|
|
bool CtrlKey(CallerType aCallerType = CallerType::System);
|
|
|
|
bool ShiftKey(CallerType aCallerType = CallerType::System);
|
2013-10-18 10:10:26 +04:00
|
|
|
bool MetaKey();
|
2013-04-21 03:48:55 +04:00
|
|
|
|
Bug 1222285 - Part 1: Spoofing the keyboard event to mimc a certain keyboard layout according to the content-language of the document when 'privacy.resistFingerprinting' is true. r=arthuredelstein,masayuki,smaug
This patch makes Firefox to spoof keyboardEvent.code, keyboardEvent.keycode and
modifier states, for 'Shift', 'Alt', 'Control' and 'AltGraph', when 'privacy.resistFingerprinting'
is true. Firefox will spoof keyboard events as a certain keyboard layout according
to the content language of the document, for example, we use US English keyboard for
English content. Right now, it only supports English contents, we will add more
support for more languages later. The spoofing only affects content, chrome
can still see real keyboard events.
MozReview-Commit-ID: 40JPvwLmMMB
--HG--
extra : rebase_source : 870224ba4f87b3e336c5b061ac6859dd1c48c4f2
2017-08-29 06:33:27 +03:00
|
|
|
bool GetModifierState(const nsAString& aKey,
|
|
|
|
CallerType aCallerType = CallerType::System) {
|
|
|
|
bool modifierState = GetModifierStateInternal(aKey);
|
|
|
|
|
|
|
|
if (!ShouldResistFingerprinting(aCallerType)) {
|
|
|
|
return modifierState;
|
|
|
|
}
|
|
|
|
|
|
|
|
Modifiers modifier = WidgetInputEvent::GetModifier(aKey);
|
|
|
|
return GetSpoofedModifierStates(modifier, modifierState);
|
2013-04-21 03:48:55 +04:00
|
|
|
}
|
|
|
|
|
2013-11-07 15:17:32 +04:00
|
|
|
bool Repeat();
|
2014-04-10 11:11:36 +04:00
|
|
|
bool IsComposing();
|
2018-02-09 19:17:09 +03:00
|
|
|
void GetKey(nsAString& aKey) const;
|
Bug 1479964 - Set KeyboardEvent.keyCode and KeyboardEvent.charCode to same value if the event is "keypress" event r=smaug
Chrome sets both KeyboardEvent.keyCode and KeyboardEvent.charCode of "keypress"
event to same value. On the other hand, our traditional behavior is, sets
one of them to 0.
Therefore, we need to set keyCode value to charCode value if the keypress
event is caused by a non-function key, i.e., it may be a printable key with
specific modifier state and/or different keyboard layout for compatibility
with Chrome. Similarly, we need to set charCode value to keyCode value if
the keypress event is caused by a function key which is not mapped to producing
a character.
Note that this hack is for compatibility with Chrome. So, for now, it's enough
to change the behavior only for "keypress" event handlers in web content. If
we completely change the behavior, we need to fix a lot of default handlers
and mochitests too. However, it's really difficult because default handlers
check whether keypress events are printable or not with following code:
> if (event.charCode &&
> !event.altKey && !event.ctrlKey && !event.metaKey) {
or
> if (!event.keyCode &&
> !event.altKey && !event.ctrlKey && !event.metaKey) {
So, until we stop dispatching "keypress" events for non-printable keys,
we need complicated check in each of them.
And also note that this patch changes the behavior of KeyboardEvent::KeyCode()
when spoofing is enabled and the instance is initialized by initKeyEvent() or
initKeyboardEvent(). That was changed by bug 1222285 unexpectedly and keeping
the behavior makes patched code really ugly. Therefore, this takes back the
old behavior even if spoofing is enabled.
Differential Revision: https://phabricator.services.mozilla.com/D7974
--HG--
extra : moz-landing-system : lando
2018-10-09 07:43:37 +03:00
|
|
|
uint32_t CharCode(CallerType aCallerType = CallerType::System);
|
Bug 1222285 - Part 1: Spoofing the keyboard event to mimc a certain keyboard layout according to the content-language of the document when 'privacy.resistFingerprinting' is true. r=arthuredelstein,masayuki,smaug
This patch makes Firefox to spoof keyboardEvent.code, keyboardEvent.keycode and
modifier states, for 'Shift', 'Alt', 'Control' and 'AltGraph', when 'privacy.resistFingerprinting'
is true. Firefox will spoof keyboard events as a certain keyboard layout according
to the content language of the document, for example, we use US English keyboard for
English content. Right now, it only supports English contents, we will add more
support for more languages later. The spoofing only affects content, chrome
can still see real keyboard events.
MozReview-Commit-ID: 40JPvwLmMMB
--HG--
extra : rebase_source : 870224ba4f87b3e336c5b061ac6859dd1c48c4f2
2017-08-29 06:33:27 +03:00
|
|
|
uint32_t KeyCode(CallerType aCallerType = CallerType::System);
|
2018-02-21 00:51:00 +03:00
|
|
|
virtual uint32_t Which(CallerType aCallerType = CallerType::System) override;
|
2013-10-18 10:10:24 +04:00
|
|
|
uint32_t Location();
|
2013-04-21 03:48:55 +04:00
|
|
|
|
Bug 1222285 - Part 1: Spoofing the keyboard event to mimc a certain keyboard layout according to the content-language of the document when 'privacy.resistFingerprinting' is true. r=arthuredelstein,masayuki,smaug
This patch makes Firefox to spoof keyboardEvent.code, keyboardEvent.keycode and
modifier states, for 'Shift', 'Alt', 'Control' and 'AltGraph', when 'privacy.resistFingerprinting'
is true. Firefox will spoof keyboard events as a certain keyboard layout according
to the content language of the document, for example, we use US English keyboard for
English content. Right now, it only supports English contents, we will add more
support for more languages later. The spoofing only affects content, chrome
can still see real keyboard events.
MozReview-Commit-ID: 40JPvwLmMMB
--HG--
extra : rebase_source : 870224ba4f87b3e336c5b061ac6859dd1c48c4f2
2017-08-29 06:33:27 +03:00
|
|
|
void GetCode(nsAString& aCode, CallerType aCallerType = CallerType::System);
|
2016-03-15 08:46:29 +03:00
|
|
|
void GetInitDict(KeyboardEventInit& aParam);
|
2014-05-25 06:08:58 +04:00
|
|
|
|
Bug 1479964 - Set KeyboardEvent.keyCode and KeyboardEvent.charCode to same value if the event is "keypress" event r=smaug
Chrome sets both KeyboardEvent.keyCode and KeyboardEvent.charCode of "keypress"
event to same value. On the other hand, our traditional behavior is, sets
one of them to 0.
Therefore, we need to set keyCode value to charCode value if the keypress
event is caused by a non-function key, i.e., it may be a printable key with
specific modifier state and/or different keyboard layout for compatibility
with Chrome. Similarly, we need to set charCode value to keyCode value if
the keypress event is caused by a function key which is not mapped to producing
a character.
Note that this hack is for compatibility with Chrome. So, for now, it's enough
to change the behavior only for "keypress" event handlers in web content. If
we completely change the behavior, we need to fix a lot of default handlers
and mochitests too. However, it's really difficult because default handlers
check whether keypress events are printable or not with following code:
> if (event.charCode &&
> !event.altKey && !event.ctrlKey && !event.metaKey) {
or
> if (!event.keyCode &&
> !event.altKey && !event.ctrlKey && !event.metaKey) {
So, until we stop dispatching "keypress" events for non-printable keys,
we need complicated check in each of them.
And also note that this patch changes the behavior of KeyboardEvent::KeyCode()
when spoofing is enabled and the instance is initialized by initKeyEvent() or
initKeyboardEvent(). That was changed by bug 1222285 unexpectedly and keeping
the behavior makes patched code really ugly. Therefore, this takes back the
old behavior even if spoofing is enabled.
Differential Revision: https://phabricator.services.mozilla.com/D7974
--HG--
extra : moz-landing-system : lando
2018-10-09 07:43:37 +03:00
|
|
|
void InitKeyEventJS(const nsAString& aType, bool aCanBubble, bool aCancelable,
|
|
|
|
nsGlobalWindowInner* aView, bool aCtrlKey, bool aAltKey,
|
|
|
|
bool aShiftKey, bool aMetaKey, uint32_t aKeyCode,
|
|
|
|
uint32_t aCharCode);
|
2014-04-14 10:37:47 +04:00
|
|
|
|
Bug 1479964 - Set KeyboardEvent.keyCode and KeyboardEvent.charCode to same value if the event is "keypress" event r=smaug
Chrome sets both KeyboardEvent.keyCode and KeyboardEvent.charCode of "keypress"
event to same value. On the other hand, our traditional behavior is, sets
one of them to 0.
Therefore, we need to set keyCode value to charCode value if the keypress
event is caused by a non-function key, i.e., it may be a printable key with
specific modifier state and/or different keyboard layout for compatibility
with Chrome. Similarly, we need to set charCode value to keyCode value if
the keypress event is caused by a function key which is not mapped to producing
a character.
Note that this hack is for compatibility with Chrome. So, for now, it's enough
to change the behavior only for "keypress" event handlers in web content. If
we completely change the behavior, we need to fix a lot of default handlers
and mochitests too. However, it's really difficult because default handlers
check whether keypress events are printable or not with following code:
> if (event.charCode &&
> !event.altKey && !event.ctrlKey && !event.metaKey) {
or
> if (!event.keyCode &&
> !event.altKey && !event.ctrlKey && !event.metaKey) {
So, until we stop dispatching "keypress" events for non-printable keys,
we need complicated check in each of them.
And also note that this patch changes the behavior of KeyboardEvent::KeyCode()
when spoofing is enabled and the instance is initialized by initKeyEvent() or
initKeyboardEvent(). That was changed by bug 1222285 unexpectedly and keeping
the behavior makes patched code really ugly. Therefore, this takes back the
old behavior even if spoofing is enabled.
Differential Revision: https://phabricator.services.mozilla.com/D7974
--HG--
extra : moz-landing-system : lando
2018-10-09 07:43:37 +03:00
|
|
|
void InitKeyboardEventJS(const nsAString& aType, bool aCanBubble,
|
|
|
|
bool aCancelable, nsGlobalWindowInner* aView,
|
|
|
|
const nsAString& aKey, uint32_t aLocation,
|
|
|
|
bool aCtrlKey, bool aAltKey, bool aShiftKey,
|
|
|
|
bool aMetaKey, ErrorResult& aRv);
|
2017-08-06 16:52:39 +03:00
|
|
|
|
2014-07-09 01:23:17 +04:00
|
|
|
protected:
|
|
|
|
~KeyboardEvent() {}
|
|
|
|
|
2014-11-03 10:05:32 +03:00
|
|
|
void InitWithKeyboardEventInit(EventTarget* aOwner, const nsAString& aType,
|
|
|
|
const KeyboardEventInit& aParam,
|
|
|
|
ErrorResult& aRv);
|
|
|
|
|
2014-04-14 10:37:47 +04:00
|
|
|
private:
|
Bug 1479964 - Set KeyboardEvent.keyCode and KeyboardEvent.charCode to same value if the event is "keypress" event r=smaug
Chrome sets both KeyboardEvent.keyCode and KeyboardEvent.charCode of "keypress"
event to same value. On the other hand, our traditional behavior is, sets
one of them to 0.
Therefore, we need to set keyCode value to charCode value if the keypress
event is caused by a non-function key, i.e., it may be a printable key with
specific modifier state and/or different keyboard layout for compatibility
with Chrome. Similarly, we need to set charCode value to keyCode value if
the keypress event is caused by a function key which is not mapped to producing
a character.
Note that this hack is for compatibility with Chrome. So, for now, it's enough
to change the behavior only for "keypress" event handlers in web content. If
we completely change the behavior, we need to fix a lot of default handlers
and mochitests too. However, it's really difficult because default handlers
check whether keypress events are printable or not with following code:
> if (event.charCode &&
> !event.altKey && !event.ctrlKey && !event.metaKey) {
or
> if (!event.keyCode &&
> !event.altKey && !event.ctrlKey && !event.metaKey) {
So, until we stop dispatching "keypress" events for non-printable keys,
we need complicated check in each of them.
And also note that this patch changes the behavior of KeyboardEvent::KeyCode()
when spoofing is enabled and the instance is initialized by initKeyEvent() or
initKeyboardEvent(). That was changed by bug 1222285 unexpectedly and keeping
the behavior makes patched code really ugly. Therefore, this takes back the
old behavior even if spoofing is enabled.
Differential Revision: https://phabricator.services.mozilla.com/D7974
--HG--
extra : moz-landing-system : lando
2018-10-09 07:43:37 +03:00
|
|
|
// True, if the instance is initialized by JS.
|
|
|
|
bool mInitializedByJS;
|
|
|
|
// True, if the instance is initialized by Ctor.
|
2014-04-14 10:37:47 +04:00
|
|
|
bool mInitializedByCtor;
|
2014-11-03 10:05:32 +03:00
|
|
|
|
2014-04-14 10:37:47 +04:00
|
|
|
// If the instance is created with Constructor(), which may have independent
|
|
|
|
// value. mInitializedWhichValue stores it. I.e., this is invalid when
|
|
|
|
// mInitializedByCtor is false.
|
2014-11-03 10:05:32 +03:00
|
|
|
uint32_t mInitializedWhichValue;
|
Bug 1222285 - Part 1: Spoofing the keyboard event to mimc a certain keyboard layout according to the content-language of the document when 'privacy.resistFingerprinting' is true. r=arthuredelstein,masayuki,smaug
This patch makes Firefox to spoof keyboardEvent.code, keyboardEvent.keycode and
modifier states, for 'Shift', 'Alt', 'Control' and 'AltGraph', when 'privacy.resistFingerprinting'
is true. Firefox will spoof keyboard events as a certain keyboard layout according
to the content language of the document, for example, we use US English keyboard for
English content. Right now, it only supports English contents, we will add more
support for more languages later. The spoofing only affects content, chrome
can still see real keyboard events.
MozReview-Commit-ID: 40JPvwLmMMB
--HG--
extra : rebase_source : 870224ba4f87b3e336c5b061ac6859dd1c48c4f2
2017-08-29 06:33:27 +03:00
|
|
|
|
|
|
|
// This method returns the boolean to indicate whether spoofing keyboard
|
|
|
|
// event for fingerprinting resistance. It will return true when pref
|
|
|
|
// 'privacy.resistFingerprinting' is true and the event target is content.
|
|
|
|
// Otherwise, it will return false.
|
|
|
|
bool ShouldResistFingerprinting(CallerType aCallerType);
|
|
|
|
|
|
|
|
// This method returns the spoofed modifier state of the given modifier key
|
|
|
|
// for fingerprinting resistance.
|
|
|
|
bool GetSpoofedModifierStates(const Modifiers aModifierKey,
|
|
|
|
const bool aRawModifierState);
|
Bug 1479964 - Set KeyboardEvent.keyCode and KeyboardEvent.charCode to same value if the event is "keypress" event r=smaug
Chrome sets both KeyboardEvent.keyCode and KeyboardEvent.charCode of "keypress"
event to same value. On the other hand, our traditional behavior is, sets
one of them to 0.
Therefore, we need to set keyCode value to charCode value if the keypress
event is caused by a non-function key, i.e., it may be a printable key with
specific modifier state and/or different keyboard layout for compatibility
with Chrome. Similarly, we need to set charCode value to keyCode value if
the keypress event is caused by a function key which is not mapped to producing
a character.
Note that this hack is for compatibility with Chrome. So, for now, it's enough
to change the behavior only for "keypress" event handlers in web content. If
we completely change the behavior, we need to fix a lot of default handlers
and mochitests too. However, it's really difficult because default handlers
check whether keypress events are printable or not with following code:
> if (event.charCode &&
> !event.altKey && !event.ctrlKey && !event.metaKey) {
or
> if (!event.keyCode &&
> !event.altKey && !event.ctrlKey && !event.metaKey) {
So, until we stop dispatching "keypress" events for non-printable keys,
we need complicated check in each of them.
And also note that this patch changes the behavior of KeyboardEvent::KeyCode()
when spoofing is enabled and the instance is initialized by initKeyEvent() or
initKeyboardEvent(). That was changed by bug 1222285 unexpectedly and keeping
the behavior makes patched code really ugly. Therefore, this takes back the
old behavior even if spoofing is enabled.
Differential Revision: https://phabricator.services.mozilla.com/D7974
--HG--
extra : moz-landing-system : lando
2018-10-09 07:43:37 +03:00
|
|
|
|
|
|
|
/**
|
|
|
|
* ComputeTraditionalKeyCode() computes traditional keyCode value. I.e.,
|
|
|
|
* returns 0 if this event should return non-zero from CharCode().
|
|
|
|
* In spite of the name containing "traditional", this computes spoof
|
|
|
|
* keyCode value if user wants it.
|
|
|
|
*
|
|
|
|
* @param aKeyboardEvent Should be |*mEvent->AsKeyboardEvent()|.
|
|
|
|
* @param aCallerType Set caller type of KeyCode() or CharCode().
|
|
|
|
* @return If traditional charCode value is 0, returns
|
|
|
|
* the raw keyCode value or spoof keyCode value.
|
|
|
|
* Otherwise, 0.
|
|
|
|
*/
|
|
|
|
uint32_t ComputeTraditionalKeyCode(WidgetKeyboardEvent& aKeyboardEvent,
|
|
|
|
CallerType aCallerType);
|
|
|
|
/**
|
|
|
|
* ShouldUseSameValueForCharCodeAndKeyCode() returns true if KeyCode() and
|
|
|
|
* CharCode() should return same value.
|
|
|
|
*/
|
2018-11-07 09:39:10 +03:00
|
|
|
bool ShouldUseSameValueForCharCodeAndKeyCode(
|
|
|
|
const WidgetKeyboardEvent& aKeyboardEvent, CallerType aCallerType) const;
|
2004-08-20 22:09:19 +04:00
|
|
|
};
|
|
|
|
|
2014-02-27 14:51:13 +04:00
|
|
|
} // namespace dom
|
|
|
|
} // namespace mozilla
|
2004-08-20 22:09:19 +04:00
|
|
|
|
2015-08-12 14:39:31 +03:00
|
|
|
already_AddRefed<mozilla::dom::KeyboardEvent> NS_NewDOMKeyboardEvent(
|
|
|
|
mozilla::dom::EventTarget* aOwner, nsPresContext* aPresContext,
|
|
|
|
mozilla::WidgetKeyboardEvent* aEvent);
|
|
|
|
|
2014-02-27 14:51:13 +04:00
|
|
|
#endif // mozilla_dom_KeyboardEvent_h_
|