Доступен выпуск Firefox 51.
Общие изменения
- Поддержка формата FLAC в контейнерах FLAC и Ogg. Поддерживаются MIME-типы
audio/flac
,audio/x-flac
,audio/ogg
. Реализована поддержка FLAC в MP4 (с и без MSE). - Если страница открыта по незащищённому соединению и содержит
<input type="password">
, такая страница помечается небезопасной. - Диалоговое окно сохранения пароля обзавелось возможностью показа пароля.
- Поддержка сохранения паролей для форм, у которых отсутствует событие «submit».
- Поддержка WebGL 2 (подробности в соответствующем разделе ниже).
- Улучшена производительность воспроизведения видео на машинах, где отсутствует ускорение видео средствами GPU.
- Многопроцессный режим включён по умолчанию для пользователей с русскоязычным интерфейсом, пользователей с ограниченными возможностями, а также для пользователей Windows 10 с сенсорными экранами.
- about:performance теперь показывает потребление памяти каждым процессом в многопроцессном режиме.
- Если уровень масштабирования отличается от значения по умолчанию, то текущий уровень будет показан в адресной строке (при нажатии на него, будет сброшен в значение по умолчанию).
- Запрет автоматического воспроизведения звука в фоновых вкладках.
- В Linux-версии для отображения контента задействована библиотека Skia.
- Включена поддержка нового API дополнений WebExtensions, совместимого с Chrome.
- Постепенная выборочная блокировка сертификатов, использующих SHA-1.
- Сертификаты, выданные удостоверяющими центрами WoSign и StartCom после 21 октября 2016 года, будут считаться недействительными. Подробности о нарушениях, допущенных этими УЦ, можно прочитать на geektimes.
- Некоторые сайты, использующие устаревшую версию NSS, не будут работать с Firefox 51 по безопасному соединению.
- Синхронизация стала более стабильной.
- Удалена белорусская (be) локализация (желающих её поддерживать нет уже в течение двух лет).
- Различные исправления, связанные с безопасностью. В частности, прекращена передача полных URL PAC-скрипту (будут передаваться только имена хостов), что отчасти исправляет уязвимость при использовании WPAD, а также отключён ускоренный Zero RTT хэндшейк, введённый в TLS 1.3.
Инструменты разработки
- Монитор сети показывает заблокированное состояние сетевых запросов.
HTML
- Тег <hr> может служить разделителем в <menu> (870388).
- Атрибуты selectionStart и selectionEnd элементов <input> и <textarea> возвращают текущее положение курсора в поле ввода текста, а не 0, как раньше (1287655). Курсор будет помещён в конец текстового поля, когда оно автоматически получает фокус.
- <img> с пустым параметром «src» создаёт событие error (599975).
CSS
- Реализована поддержка :indeterminate для
<input type="radio">
(885359) и :placeholder-shown для<input type="text">
(1069015). - Псевдоэлемент ::placeholder избавился от префикса (1069012).
- Псевдокласс :valid теперь соответствует валидным элементам <form> (1285425).
- Значение «plaintext» свойства unicode-bidi корректно работает с вертикальным режимом письма (1302734).
- Корректная поддержка значений «fill-box» и «stroke-box» свойством clip-path; раньше они были ссылками на border-box (1289011).
JavaScript
- Поддержка свойства Symbol.toStringTag (1114580) и методов TypedArray.prototype.toString(), TypedArray.prototype.toLocaleString() (1121938) и DateTimeFormat.prototype.formatToParts() (1289340).
- const и let полностью соответствуют стандарту ES2015 (950547).
- Использование const в циклах for...of теперь создаёт новую привязку в каждой итерации и больше не выбрасывает SyntaxError (1101653).
- Устаревший цикл for each...in выдаёт предупреждение в консоль (1293205).
- Функции-генераторы больше не имеют меток, также запрещено использовать «let» в качестве имени метки (1288459).
- Устаревшие функции-генераторы выбрасывают SyntaxError при использовании в определениях методов (1199296).
- Метод next() протокола перебора выбрасывает TypeError, если возвращённое значение не является объектом (1016936).
WebGL
- Включена поддержка WebGL 2 (примеры). WebGL 2 предоставляет интерфейс WebGL2RenderingContext, дающий возможность использовать OpenGL ES 3.0 в <canvas>. Новые возможности: 3D textures, Sampler objects, Uniform Buffer objects, Sync objects, Query objects, Tranform Feedback objects, Расширения, составляющие ядро WebGL 2: Vertex Array objects, instancing, multiple render targets, fragment depth.
- Расширение WEBGL_compressed_texture_es3 (реализованное в Firefox 46) переименовано в WEBGL_compressed_texture_etc (1316778) и больше не включено по умолчанию в контексты WebGL 2 (1306174).
- Расширение EXT_disjoint_timer_query теперь использует объекты WebGLQuery вместо объектов WebGLTimerQuery (1308057).
- Расширение OES_vertex_array_object теперь использует объект WebGL 2 WebGLVertexArrayObject вместо собственного объекта WebGLVertexArrayObjectOES (1318523).
- Отныне можно использовать объекты ImageBitmap в качестве источников текстур в методах наподобие WebGLRenderingContext.texImage2D(), WebGLRenderingContext.texSubImage2D(), WebGL2RenderingContext.texImage3D() или WebGL2RenderingContext.texSubImage3D() (1324924).
IndexedDB v2
Завершена реализация второй версии IndexedDB:
- Добавлены методы IDBObjectStore.getKey() (1271506) и IDBCursor.continuePrimaryKey() (1271505).
- Реализована поддержка двоичных ключей (1271500).
- См. также статью «What’s new in IndexedDB 2.0?».
Canvas
- Удалён нестандартный метод CanvasRenderingContext2D.mozFillRule(); правило заполнения следует определять через параметр стандартного метода CanvasRenderingContext2D.fill() m(826619).
- Удалён префикс у свойства CanvasRenderingContext2D.imageSmoothingEnabled (768072).
SVG
- Реализована поддержка атрибута tabindex (778654).
- Добавлена поддержка атрибута href, что переводит xlink:href в разряд устаревших (1245751).
- Реализована возможность использования собственных атрибутов данных на элементах SVG с помощью свойства SVGElement.dataset и наборов атрибутов data-* (921834).
- Исправлена регрессия, из-за которой не работали анимации CSS в SVG-изображениях, используемых в теге <img> (1190881).
Веб-воркеры
- Удалены поддержка нестандартного устаревшего обработчика событий WorkerGlobalScope.onclose и возможность использования воркерами события close.
Сеть
- Запрещены загрузка и выполнение скриптов, отдаваемых с MIME-типами image/*, video/*, audio/* и text/csv (1229267 и 1288361).
XHR
- Свойство XMLHttpRequest.responseXML больше не возвращает часть Document с узлом <parsererror>, расположенным поверх, когда случается ошибка при попытке распарить полученные данные. Теперь оно корректно вернёт null (289714).
- XMLHttpRequest без указания заголовка Accept с помощью setRequestHeader() теперь отправляется с заголовком «Accept», имеющим значение
*/*
(918752). - Исправлено поведение XMLHttpRequest.open(): если опущены параметры «username» и «password», они по умолчанию будут иметь значение null (933759).
WebRTC
- Удалён метод RTCPeerConnection.removeStream(). Он был объявлен устаревшим ещё в Firefox 22, выбрасывая NotSupportedError. Вместо него следует использовать RTCPeerConnection.removeTrack() для каждой дорожки в потоке.
- Включена поддержка кодека VP9. Она была добавлена ещё в Firefox 46, отключена по умолчанию, но при включении VP9 становился предпочитаемым кодеком; сейчас, из-за своей требовательности к вычислительным ресурсам, он идёт вторым в списке (после VP8).
- Добавлен метод HTMLMediaElement.captureStream(), который возвращает MediaStream, содержащий контент указанного <video> или <audio>. Стоит отметить, что он пока не полностью соответствует спецификациям.
Звук/видео
- В Firefox 50 в фоновых вкладках была прекращена приостановка таймеров, созданных Window.setInterval() и Window.setTimeout(), если с помощью AudioContext в этот момент воспроизводился звук. К сожалению, это не решило всех проблем, связанных с музыкальными плеерами. Теперь фоновые вкладки с AudioContext не будут приостанавливаться, даже если звук не воспроизводится в данный момент.
DOM
- DOMImplementation.hasFeature() теперь всегда возвращает «true» (984778).
- Свойства «selectionStart» и «selectionEnd» интерфейсов HTMLInputElement и HTMLTextAreaElement вместо значения «0» теперь корректно возвращают текущее положение курсора в поле для ввода текста, если ничего не выделено (1287655).
- Интерфейс HTMLImageElement и соответствующий элемент <img> теперь поддерживают обработчик события «onerror», отправляя события error элементу, если случаются ошибки при попытке загрузить или интерпретировать изображение.
- Теперь можно изменить эффект анимации путём установки значения его свойству effect (1049975).
- Поддержка метода Permissions.revoke() теперь зависит от состояния настройки
dom.permissions.revoke.enable
и отключена по умолчанию, поскольку её реализация и сама целесообразность существование обсуждается членами Web Application Security Working Group. - Добавлены свойство navigator.storage и метод StorageManager.estimate().
- BatteryManager.chargingTime и BatteryManager.dischargingTime в целях сохранения приватности округляют возвращаемые значения до 15 минут (1292655). В следующем выпуске планируется вовсе прекратить поддержку Battery API (с помощью которого сайты могли бы узнавать о низком уровне заряда батареи устройства, чтобы отдавать ему «лёгкую» версию контента), поскольку его используют для более точного отслеживания пользователей.
Events
- Поддержка обработчиков событий onanimationstart и onanimationiteration (911987).
- Поддержка обработчика события ontransitionend (911987).
Удалено
- Из движка полностью удалена поддержка нестандартного Simple Push API, предназначенного для Firefox OS. Вместо него следует использовать W3C Push API (1296579). Также удалена поддержка нестандартного Alarms API (1300884).
- Удалены префиксы у Page Visibility API (812701).
- Удалена значительная часть Social API.
- Удалён нестандартный Web Payments API (1252570).
>>> Подробности