gecko-dev/dom/webidl/KeyboardEvent.webidl
Tim Huang 8933d9d799 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 11:33:27 +08:00

72 lines
2.4 KiB
Plaintext

/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* 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/.
*/
[Constructor(DOMString typeArg, optional KeyboardEventInit keyboardEventInitDict)]
interface KeyboardEvent : UIEvent
{
readonly attribute unsigned long charCode;
[NeedsCallerType]
readonly attribute unsigned long keyCode;
[NeedsCallerType]
readonly attribute boolean altKey;
[NeedsCallerType]
readonly attribute boolean ctrlKey;
[NeedsCallerType]
readonly attribute boolean shiftKey;
readonly attribute boolean metaKey;
[NeedsCallerType]
boolean getModifierState(DOMString key);
const unsigned long DOM_KEY_LOCATION_STANDARD = 0x00;
const unsigned long DOM_KEY_LOCATION_LEFT = 0x01;
const unsigned long DOM_KEY_LOCATION_RIGHT = 0x02;
const unsigned long DOM_KEY_LOCATION_NUMPAD = 0x03;
readonly attribute unsigned long location;
readonly attribute boolean repeat;
readonly attribute boolean isComposing;
readonly attribute DOMString key;
[NeedsCallerType]
readonly attribute DOMString code;
[Throws]
void initKeyboardEvent(DOMString typeArg,
optional boolean bubblesArg = false,
optional boolean cancelableArg = false,
optional Window? viewArg = null,
optional DOMString keyArg = "",
optional unsigned long locationArg = 0,
optional boolean ctrlKey = false,
optional boolean altKey = false,
optional boolean shiftKey = false,
optional boolean metaKey = false);
// This returns the initialized dictionary for generating a
// same-type keyboard event
[Cached, ChromeOnly, Constant]
readonly attribute KeyboardEventInit initDict;
};
dictionary KeyboardEventInit : EventModifierInit
{
DOMString key = "";
DOMString code = "";
unsigned long location = 0;
boolean repeat = false;
boolean isComposing = false;
// legacy attributes
unsigned long charCode = 0;
unsigned long keyCode = 0;
unsigned long which = 0;
};
// Mozilla extensions
KeyboardEvent implements KeyEvent;