Firefox 64 для разработчиков
============================

В этой статье перечислены ключевые изменения, которые касаются разработчиков. Firefox 64 был выпущен 11 декабря 2018 года.

Изменения для веб-разработчиков
-------------------------------

### Инструменты разработчика

* Информационная панель в инструменте поддержки доступности теперь показывает сведения о соотношении контрастности цветов текста или изображений на странице (Firefox bug 1473037).
* Выбор устройства в режиме адаптивного дизайна запоминается и сохраняется между сеансами (Firefox bug 1248619).
* Сетевой монитор теперь выделяет ресурсы, на которые потенциально может повлиять защита от отслеживания (en-US) (Firefox bug 1333994).
* Веб-консоль получила усовершенствования, связанные с вводом и оценкой кода:
    + Регистронезависимое автодополнение (en-US) выражений (Firefox bug 672733).
    + Возможность просмотреть историю выражений консоли (en-US) с помощью bash-подобного обратного поиска (Firefox bug 1024913).
    + Подсветка оценённого кода (en-US) и при вводе, и при выводе (Firefox bug 1463669).
* Пошаговое выполнение кода в отладчике JavaScript также было улучшено:
    + Отладчик сохраняет развёрнутые переменные (en-US) при пошаговом выполнении кода (Firefox bug 1491471).
    + Выход из функции (en-US) пропускает возвращаемое значение (Firefox bug 923975).

#### Удалено

* Окончательно удалена панель разработчика (GCLI) (Firefox bug 1429421). Её интерфейс был удалён в Firefox 62, а теперь удалён и оставшийся код.
### HTML

*Без изменений.*

### CSS

* Включена по умолчанию поддержка полос прокрутки CSS (en-US) (Firefox bug 1492012).
* Реализована поддержка Interaction Media Features, включающая `pointer:coarse` (en-US) (Firefox bug 1035774). Подробности реализации `any-pointer` (en-US) и `any-hover` (en-US) см в Firefox bug 1483111.
* Android-версия обзавелась поддержкой `prefers-reduced-motion` (Firefox bug 1478505).
* Значения `<gradient>` (en-US) теперь поддерживают мультипозиционный синтаксис остановки цвета, например, `yellow 25%, yellow 50%` можно записать в виде `yellow 25% 50%` (Firefox bug 1352643).
* Свойство `text-transform` (en-US) теперь принимает значение `full-size-kana` (Firefox bug 1498148).
* Из-за проблем веб-совместимости добавлена поддержка `-webkit-appearance` (Firefox bug 1368555).
* Кроме того, удалена большая часть специфичных для Firefox значений `-moz-appearance` (Firefox bug 1496720).
* `display`: `list-item` отныне поддерживается на элементах `<legend>` (Firefox bug 1486602).
* SVG `path()`, при использовании в `offset-path` (en-US), теперь могут быть анимированными (Firefox bug 1486094).
* Псевдоэлементы с префиксом `-webkit-` больше не делают цепочку или группу селекторов недействительной (Firefox bug 1424106). См. Firefox bug 1486325, чтобы узнать, как включить эту возможность.

#### Удалено

* Нестандартные значения `-moz-box` и `-moz-inline-box` `display` скрыты от веб-содержимого (Firefox bug 1496961).
* Нестандартные псевдоэлементы `::-moz-tree` скрыты от веб-содержимого (Firefox bug 1496961).
* Удалена настройка `layout.css.filters.enabled`; CSS-фильтры (en-US) отныне нельзя отключить (Firefox bug 1408841).
* Отменено (Firefox bug 1492567) изменение, сделанное в прошлом выпуске — перемена мест значений `overflow` (Firefox bug 1481866). См. причину.
### SVG

*Без изменений.*

### JavaScript

* Реализовано предложение TC39 Well-formed JSON.stringify, чтобы `JSON.stringify` не мог возвращать плохо сформированные строки Unicode (Firefox bug 1469021).
* Проксируемые функции теперь могут быть переданы `Function.prototype.toString``.call()` (Firefox bug 1440468).
* Если значение не указано, конструктор `WebAssembly.Global` (en-US) будет использовать типизированный 0. Это определяется алгоритмом `DefaultValue` (Firefox bug 1490286).
### API

#### DOM

* Ряд изменений API Fullscreen (en-US):
    + API лишился префикса (Firefox bug 1269276).
    + Методы `Element.requestFullscreen()` (en-US) и `Document.exitFullscreen()` (en-US) отныне возвращают `Promise`, который исполняется, когда завершено изменение режима (Firefox bug 1188256 и Firefox bug 1491212).
    + События `fullscreenchange` и `fullscreenerror` сначала отправлялись в `Document`, а затем в `Element`. Теперь всё стало наоборот. Это поведение отражено в спецификации и совпадает с поведением Chrome (Firefox bug 1375319).
* На платформе macOS снова включён API WebVR 1.1 (Firefox bug 1476091).
* В качестве ссылок на `Window.screenX` и `Window.screenY` (en-US) добавлены `Window.screenLeft` (en-US) и `Window.screenTop` (en-US) (Firefox bug 1498860).
* Метод `XMLHttpRequest.getAllResponseHeaders()` (en-US) отныне возвращает имена заголовков в нижнем регистре, в соответствии со спецификацией (Firefox bug 1398718).
* Устаревший интерфейс `HTMLAllCollection` обновлён в соответствии с последними изменениями спецификации (Firefox bug 1398354).
* В целях конфиденциальности `Navigator.buildID` (en-US) будет возвращать фиксированную метку времени (Firefox bug 583181).
* По умолчанию отключены следующие возможности `Document.execCommand()` (Firefox bug 1490641):
    + `enableObjectResizing`
    + `enableInlineTableEditing`
    + `enableAbsolutePositionEditor`

#### Сервис-воркеры

* Реализован метод `ServiceWorkerContainer.startMessages()` (en-US) (Firefox bug 1263734).

#### Media, Web Audio и WebRTC

* Свойства `PannerNode.refDistance` (en-US), `PannerNode.maxDistance` (en-US), `PannerNode.rolloffFactor` (en-US) и `PannerNode.coneOuterGain` (en-US) отныне корректно выбрасывают исключения, когда их значения установлены за пределами допустимого (Firefox bug 1487963).
* Настройки `RTCRtpEncodingParameters` (en-US), изменённые с помощью `RTCRtpSender.setParameters()` (en-US), не обновлялись, если были изменены во время звонка. Теперь они будут обновляться без переподключения (Firefox bug 1253499).
* Реализован `RTCIceCandidateStats.relayProtocol` (en-US) — стандартная версия `RTCIceCandidateStats.mozLocalTransport` (en-US), который объявлен устаревшим (Firefox bug 1435789).
* Включена по умолчанию автоматическая регулировка усиления (AGC). Эта возможность управляется настройкой `media.getusermedia.agc_enabled` (Firefox bug 1496714).

#### Удалено

* Свойство `Window.event` (en-US), добавленное в Firefox 63 для разрешения проблем веб-совместимости, скрыто за отключённой в релизных версиях настройкой `dom.window.event.enabled`, поскольку вскрылись иные затруднения (Firefox bug 1493869). На самом деле, это было сделано в одном из минорных обновлений Firefox 63, мы просто обращаем на это ваше внимание.
* Удалён интерфейс `LocalMediaStream` и его метод `stop()` (Firefox bug 1258143). См. Stopping a video stream (en-US), чтобы узнать, как остановить поток целиком.
* Удалены интерфейсы `AudioStreamTrack` и `VideoStreamTrack`, поскольку они уже некоторое время объявлены устаревшими (Firefox bug 1377146). Их функции перенесены в `MediaStreamTrack`; дорожки отныне идентифицируются по значению свойств `kind` (en-US), таких, как `audio` или `video`.
### Безопасность

* Прекращено доверие сертификатам, выданным удостоверяющими центрами Symantec (см. Firefox bug 1409257; также см. подробности в обсуждении Mozilla's Plan for Symantec Roots).
* Теперь можно использовать `Referrer-Policy` (en-US) для управления ресурсами, полученными через таблицы стилей (Firefox bug 1330487) — см. Integration with CSS (en-US) для получения подробных сведений.
### Плагины

*Без изменений.*

### WebDriver (Marionette)

#### Изменения API

* Удалены устаревшие конечные точки без префикса `Marionette:`, `L10n:` или `Addon:` (включая `singeTap`) (Firefox bug 1504478, Firefox bug 1504940).

#### Исправленные ошибки

* Синтезированные события `Shift` с использованием `WebDriver:PerformActions` не создавали заглавные буквы (Firefox bug 1405370).
* `WebDriver:Navigate` мог вызвать бесконечное зависание, если низлежащий процесс контента вкладки менялся много раз во время навигации (Firefox bug 1504807).
* Для улучшения производительности и сокращения количества потребляемой памяти страница, в новой вкладке или окне будет загружаться не `about:newtab`, а `about:blank` (Firefox bug 1506643).
* Отключено по умолчанию предложение использовать панель блокировки контента, показ которого препятствует взаимодействию с элементами интерфейса (Firefox bug 1488826).
Изменения для разработчиков дополнений
--------------------------------------

### Изменения API

#### Меню

* Добавлен новый API `browser.menus.overrideContext()`, который может быть вызван из события DOM `contextmenu` и позволяет скрыть все пункты меню по умолчанию, чтобы создать собственное контекстное меню на страницах, относящихся к дополнению. Это контекстное меню может состоять из нескольких пунктов меню верхнего уровня дополнения и может включать элементы контекстного меню вкладок или закладок из других дополнений. См. блог для получения подробных сведений.
    + Реализован `browser.menus.overrideContext()` ((Firefox bug 1280347).
    + Реализована опция `showDefaults: false`, позволяющая скрывать из контекстного меню пункты по умолчанию (Firefox bug 1367160).
    + `documentURLPatterns` теперь может соответствовать адресу `moz-extension://`, даже если используется `browser.menus.overrideContext()`. Таким образом, он может надёжно ограничивать пользовательские пункты меню для определённых документов (Firefox bug 1498896).
* С помощью нового свойства `viewTypes` в `menus.create()` (en-US) и `menus.update()` (en-US) можно ограничить места появления контекстного меню в дополнении (Firefox bug 1416839).
* `menus.update()` (en-US) теперь позволяет обновить значок существующего пункта меню (Firefox bug 1414566).
* С помощью нового свойства `button` `menus.OnClickData` (en-US) дополнения могут определять, какая кнопка мыши использована для выбора пункта меню (Firefox bug 1469148).

#### Окна

* Метод `windows.create()` (en-US) обзавёлся опцией `cookieStoreId`, которая определяет `CookieStoreId` для всех вкладок, созданных при открытии окна (Firefox bug 1393570).

#### Конфиденциальность

* Свойство `cookieConfig` `privacy.websites` (en-US) — это объект, который может принимать свойство `behavior`. Это свойство теперь может, в свою очередь, принимать новое значение — `reject_trackers`, которое указывает дополнению отвергать куки, связанными с отслеживанием (Firefox bug 1493057).

#### API devtools.panels

* Реализована поддержка метода `Sidebar.setPage()` `devtools.panels.elements` (en-US) (Firefox bug 1398734).
### Изменения манифеста

* Новое свойство `pinned` ключа манифеста `page_action` (en-US) позволяет дополнениям управлять тем, должны ли при установке их действия на странице быть прикреплены к адресной строке или нет (Firefox bug 1494135).
* В Windows наличие ключей NativeMessagingHosts сначала будет проверяться в 32-разрядном представлении реестра (Wow6432Node)); следует использовать то, что подходит для вашего приложения (Firefox bug 1494709).
* Объект `search_provider` поля `chrome_settings_overrides` (en-US) отныне может включать новые свойства — `suggest_url`, `suggest_url_post_params` (Firefox bug 1486819) и `search_url_post_params`.
Предыдущие версии
-----------------

* Firefox 64 для разработчиков
* Firefox 63 для разработчиков
* Firefox 62 для разработчиков
* Firefox 61 для разработчиков (en-US)
* Firefox 60 для разработчиков (en-US)
* Firefox 59 для разработчиков (en-US)
* Firefox 58 для разработчиков (en-US)
* Firefox 57 для разработчиков (en-US)
* Firefox 56 для разработчиков (en-US)
* Firefox 55 для разработчиков (en-US)
* Firefox 54 для разработчиков (en-US)
* Firefox 53 для разработчиков
* Firefox 52 для разработчиков (en-US)
* Firefox 51 для разработчиков (en-US)
* Firefox 50 для разработчиков (en-US)
* Firefox 49 для разработчиков (en-US)
* Firefox 48 для разработчиков (en-US)
* Firefox 47 для разработчиков (en-US)
* Firefox 46 для разработчиков (en-US)
* Firefox 45 для разработчиков (en-US)
* Firefox 44 для разработчиков (en-US)
* Firefox 43 для разработчиков
* Firefox 42 для разработчиков (en-US)
* Firefox 41 для разработчиков (en-US)
* Firefox 40 для разработчиков (en-US)
* Firefox 39 для разработчиков (en-US)
* Firefox 38 для разработчиков (en-US)
* Firefox 37 для разработчиков (en-US)
* Firefox 36 для разработчиков (en-US)
* Firefox 35 для разработчиков (en-US)
* Firefox 34 для разработчиков (en-US)