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

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

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

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

* Включён по умолчанию редактор Shape Path — подробности в статье Edit Shape Paths in CSS.
* Появилась возможность вынести просмотр CSS-правил в отдельную от других вкладок панель. См. Page inspector 3-pane mode (en-US) для получения подробных сведений.
* Инспектор CSS-сеток обзавёлся новыми возможностями и новой документацией — см. CSS Grid Inspector: Examine grid layouts (en-US).
* Инструменты разработчика теперь можно разместить не только снизу и справа, но и слева (а также вынести в отдельное окно) (Firefox bug 1192642).
* На панель консоли разделения добавлена кнопка закрытия.
* При включённой настройке «Выбрать iframe в качестве текущего целевого документа» соответствующий значок будет появляться на панели инструментов при открытии настроек, даже если текущая страница не содержит фреймов (Firefox bug 1456069).
* Вкладка «Куки» в сетевом мониторе отображает атрибут `samesite` (Firefox bug 1452715).
* Режим адаптивного дизайна работает и во вкладках, размещённых в контейнерах (Firefox bug 1306975).
* При возникновении и выводе в консоль ошибки CORS Firefox предоставит ссылку на соответствующую страницу с описанием ошибок CORS (en-US) (Firefox bug 1475391).
* Появилась возможность создать снимок текущей страницы (без необходимости указывать имя файла) из консоли браузера (Firefox bug 1464461). Используется команда
 `:screenshot <filename.png> --fullpage`
 где `<filename.png>` — желаемое имя файла. Файл будет сохранён в каталог загрузок. Параметр `--fullpage` не является обязательным и служит для создания снимка всей страницы. В этом случае к имени файла будет добавлено `-fullpage`. Чтобы увидеть список всех доступных параметров, введите `:screenshot --help`.

#### Удалено

* Удалена панель разработчика/GCLI (которая открывалась сочетанием клавиш
 `Shift`
 +
 `F2`
 ) (Firefox bug 1461970). У интерфейса панели и библиотеки, отвечающей за работу GCLI, уже продолжительное время отсутствует мейнтейнер, некоторые функции не работают (с того времени, как появился многопроцессный режим), а сама GCLI несовместима с `unsafeSetInnerHTML`. Как следствие, по данным телеметрии панель очень редко используется, к тому же есть альтернативные способы вызова самых популярных команд.
### HTML

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

### CSS

* Убран префикс у псевдоэлемента `:-moz-selection`, отныне он называется `::selection` (Firefox bug 509958).
* `<resolution>` (en-US) поддерживает `x` в качестве единицы измерения (Firefox bug 1460655).
* Включена по умолчанию поддержка `shape-margin` (en-US), `shape-outside` (en-US) и `shape-image-threshold` (en-US) (Firefox bug 1457297).

#### Удалено

* Из документов, отличных от XUL, удалены все XUL-значения `display` за исключением `-moz-box` и `-moz-inline-box` (Firefox bug 1288572).
### SVG

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

### JavaScript

* Реализована поддержка конструктора `WebAssembly.Global()` (en-US) и глобальных переменных в WebAssembly (Firefox bug 1464656).
* Включена по умолчанию поддержка методов `Array.prototype.flat()` и `Array.prototype.flatMap()` (Firefox bug 1435813).
* Реализовано свойство `import.meta`, отображающее контекстно-специфичных метаданные для модуля JavaScript (Firefox bug 1427610).
* Строковые литералы могут напрямую содержать символы U+2028 LINE SEPARATOR и U+2029 PARAGRAPH SEPARATOR. Как следствие, синтаксис `JSON` отныне является подмножеством литерального синтаксиса JavaScript (см. Firefox bug 1435828 и предложенный TC39 json-superset).
* Для индексов, выходящих за границы типизированных массивов, `Reflect.defineProperty()` и `Reflect.set()` (en-US) будут возвращать `false` вместо `true` (Firefox bug 1308735).

#### Удалено

* Конструкторы `DOMPoint` и `DOMPointReadOnly` больше не поддерживают входной параметр типа `DOMPointInit`; значения свойств требуется указывать с помощью параметров `x`, `y`, `z` и `w` (Firefox bug 1186265).
* Метод `URL.createObjectURL()` больше не поддерживает создание URL-адресов объектов для представления `MediaStream`. Эта возможность уже не актуальна, поскольку можно напрямую задать `HTMLMediaElement.srcObject` (en-US) в `MediaStream` (Firefox bug 1454889).
### API

#### Новые API

* В версии для Android включён по умолчанию API Speech Synthesis (Text-to-Speech) (Firefox bug 1463496).

#### DOM

* Интерфейс `DOMPointReadOnly` (en-US) поддерживает статическую функцию `DOMPointReadOnly.fromPoint()` (en-US), создающую новый точечный объект из совместимого с `DOMPointInit` (en-US) словаря, который содержит любой объект `DOMPoint` (en-US). Функция также доступна на `DOMPoint` (en-US) (Firefox bug 1186265).
* В целях совместимости реализована поддержка свойства `Event.srcElement`. Оно является ссылкой на `Event.target` (Firefox bug 453968).
* `Navigator.registerProtocolHandler()` может быть вызван лишь в безопасном контексте (Firefox bug 1460506).
* Отключена по умолчанию поддержка метода `Navigator.registerContentHandler()`. Он будет удалён в будущем, поскольку уже некоторое время является устаревшим (Firefox bug 1460481).
* Реализован конструктор `DataTransfer()` (en-US) (Firefox bug 1351193).
* `Document.domain` больше не может вернуть `null` (Firefox bug 819475). Если не удалось идентифицировать домен, `domain` вернёт пустую строку вместо `null`.
* Реализован метод `Console.timeLog()`, отображающий текущее значение таймера консоли без остановки самого таймера (Firefox bug 1458466).
* Реализован метод `Console.countReset()`, сбрасывающий значение счётчика консоли (Firefox bug 1459279).

#### События DOM

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

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

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

#### Медиа, Web Audio и WebRTC

* Настройка `media.autoplay.enabled` распространяется не только на видео-, но и на аудиосодержимое (Firefox bug 1413098).
* Интерфейс `ChannelSplitterNode` (en-US) приведён в соответствие спецификации: по умолчанию у него 6 каналов, `channelInterpretation` имеет значение `"discrete"`, а `channelCountMode` — `"explicit"` (Firefox bug 1456265).

#### Удалено

* Поддержка событий `userproximity`, `deviceproximity` (см. `UserProximityEvent` и `DeviceProximityEvent`) отключена по умолчанию и управляется настройкой `device.sensors.proximity.enabled` (Firefox bug 1462308).
* Поддержка события `devicelight` (см. также `DeviceLightEvent`) отключена по умолчанию и управляется настройкой `device.sensors.ambientLight.enabled` (Firefox bug 1462308).
* События мутации (en-US) `DOMSubtreeModified` и `DOMAttrModified` больше не выбрасываются, когда атрибут `style` изменяется с помощью CSSOM (Firefox bug 1460295).
* Прекращена поддержка `CSSStyleDeclaration.getPropertyCSSValue()` (en-US) (Firefox bug 1408301).
* Прекращена поддержка `CSSValue`, `CSSPrimitiveValue` (en-US) и `CSSValueList` (en-US) (Firefox bug 1459871).
* `window.getComputedStyle()` больше не возвращает `null`, если вызван на `Window`, у которого нет представления (Firefox bug 1467722).
### HTTP

#### Удалено

* Удалена поддержка устаревшей CSP-директивы `referrer` (en-US). Вместо неё следует использовать заголовок `Referrer-Policy` (en-US) (Firefox bug 1302449).
### Безопасность

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

### Плагины

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

### WebDriver (Marionette)

#### Новые возможности

* Команда `WebDriver:ElementSendKeys` приносит в WebDriver возможность загружать файлы (Firefox bug 1448792).
* Запросы к пользователю, вызванные событиями `beforeunload`, автоматически отклоняются для команд `WebDriver:Get`, `WebDriver:Back`, `WebDriver:Forward`, `WebDriver:Refresh` и `WebDriver:Close` (Firefox bug 1434872).
* `WebDriver:PerformActions` при нажатии
 `Ctrl`
 + `Click` синтезирует событие `contextmenu (en-US)` (Firefox bug 1421323).

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

* Удалены устаревшие конечные точки, включая `getWindowPosition`, `setWindowPosition`, `getWindowSize и` `setWindowSize` (Firefox bug 1348145).
* Команды WebDriver, возвращающие успех с данными `null`, отныне возвращают пустой словарь (Firefox bug 1461463).

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

* `WebDriver:ExecuteScript` вызывал ошибку циклической ссылки для коллекций WebElement (Firefox bug 1447977).
* Отправка примитива действия `pointerMove` или `pause` могла привести к зависанию, таким образом, команда никогда не отправляла ответ (Firefox bug 1467743, Firefox bug 1447449).
### Прочее

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

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

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

* Добавлен API `webRequest.getSecurityInfo()` (en-US), позволяющий получить подробные сведения о TLS-соединениях (Firefox bug 1322748).
* Добавлен `browserSettings.newTabPosition` (en-US), позволяющий настроить положение новой вкладки (Firefox bug 1344749).
* `windowTypes` объявлен устаревшим в `windows.get()` (en-US), `windows.getCurrent()` (en-US) и `windows.getLastFocused()` (en-US) (Firefox bug 1419132).
* Появилась возможность изменять каждое окно браузера в отдельности (Firefox bug 1419893).
### Изменения манифеста

* Новое свойство `open_at_install` ключа `sidebar_action` (en-US) манифеста позволяет дополнениям при установке автоматически открывать или не открывать боковые панели (Firefox bug 1460910).
* Изменено свойство `browser_style` различных ключей манифеста:
    + У `page_action` (en-US) и `browser_action` (en-US) оно по умолчанию стало `false`.
    + У `sidebar_action` (en-US) и `options_ui` (en-US) оно по умолчанию стало `true`.
### Изменения темы

* Новое свойство `tab_background_separator` ключа `theme` (en-US) манифеста позволяет дополнениям изменять цвет разделителя вкладок (Firefox bug 1459455).
### Удалено

* Прекращена поддержка установки распакованных дополнений (Firefox bug 1385057).
* Убран показ предупреждения о `browser_style` при временной загрузке дополнения для тестирования (Firefox bug 1404724).
Предыдущие версии
-----------------

* 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)
* Firefox 33 для разработчиков
* Firefox 32 для разработчиков
* Firefox 31 для разработчиков