author Tim Huang <>
Thu, 31 Aug 2017 11:14:14 +0800
changeset 453921 b2f55468b241f28678dc5e35e19eb3b5781a1c5c
parent 285463 812f311c4ee47953c0413ddc544a45477837a3e5
permissions -rw-r--r--
Bug 1222285 - Part 2: Making the keyboard events of modifier keys been suppressed when 'privacy.resistFingerprinting' is true. r=arthuredelstein,masayuki This patch makes 'Shift', 'Alt', 'Contorl' and 'AltGraph' been suppressed for content when fingerprinting resistance is enabled. Chrome can still get these events. The reason behind this is that websites can still observe key combinations to tell which keyboard layout is using even we spoof the keyboardEvent.code, keyboardEvent.keyCode and modifier states. For example, the AZERTY France keyboard, the digit keys of it requires the user press the Shift key. So, it is easy to differentiate AZERTY and QWERTY keyboard by observing whether a Shift key generates its own before the digit keys. There are similar issues for 'Alt' and 'AltGraph' as well. MozReview-Commit-ID: 3CwCgvey4lK


Most files in Libav are under the GNU Lesser General Public License version 2.1
or later (LGPL v2.1+). Read the file COPYING.LGPLv2.1 for details. Some other
files have MIT/X11/BSD-style licenses. In combination the LGPL v2.1+ applies to

Some optional parts of Libav are licensed under the GNU General Public License
version 2 or later (GPL v2+). See the file COPYING.GPLv2 for details. None of
these parts are used by default, you have to explicitly pass --enable-gpl to
configure to activate them. In this case, Libav's license changes to GPL v2+.

Specifically, the GPL parts of Libav are

- the X11 grabber in libavdevice/x11grab.c
- the tool
- the following filters in libavfilter:
    - vf_blackframe.c
    - vf_boxblur.c
    - vf_cropdetect.c
    - vf_delogo.c
    - vf_hqdn3d.c
    - vf_interlace.c

Should you, for whatever reason, prefer to use version 3 of the (L)GPL, then
the configure parameter --enable-version3 will activate this licensing option
for you. Read the file COPYING.LGPLv3 or, if you have enabled GPL parts,
COPYING.GPLv3 to learn the exact legal terms that apply in this case.

There are a handful of files under other licensing terms, namely:

* The files libavcodec/jfdctfst.c, libavcodec/jfdctint_template.c and
  libavcodec/jrevdct.c are taken from libjpeg, see the top of the files for
  licensing details. Specifically note that you must credit the IJG in the
  documentation accompanying your program if you only distribute executables.
  You must also indicate any changes including additions and deletions to
  those three files in the documentation.

external libraries

Libav can be combined with a number of external libraries, which sometimes
affect the licensing of binaries resulting from the combination.

compatible libraries

The libcdio, libx264, libx265, libxavs and libxvid libraries are under GPL. When
combining them with Libav, Libav needs to be licensed as GPL as well by
passing --enable-gpl to configure.

The OpenCORE and VisualOn libraries are under the Apache License 2.0. That
license is incompatible with the LGPL v2.1 and the GPL v2, but not with
version 3 of those licenses. So to combine these libraries with Libav, the
license version needs to be upgraded by passing --enable-version3 to configure.

incompatible libraries

The Fraunhofer AAC library, FAAC and OpenSSL are under licenses incompatible
with all (L)GPL versions. Thus, unfortunately, since both licenses cannot be
satisfied simultaneously, binaries resulting from the combination of Libav
with these libraries are nonfree und unredistributable. If you wish to enable
any of these libraries nonetheless, pass --enable-nonfree to configure.