Планы в отношении поддержки в Firefox второй и третьей версий манифеста Chrome

Разработчики из компании Mozilla обновили информацию о планах, связанных с поддержкой в Firefox второй и третьей версий манифеста Chrome. Компания Google в июне этого года намерена прекратить поддержку дополнений, использующих вторую версию манифеста, в тестовых выпусках Chrome 127 (Dev, Canary и Beta). В стабильной ветке поддержка второй версии манифеста будет прекращена не раньше июля.

В свою очередь компания Mozilla не будет в обозримом будущем прекращать поддержку второй версии манифеста, и сохранит возможность запускать дополнения, использующие возможности, недоступные в третьей версии манифеста. Остаётся в силе решение не обеспечивать в Firefox полную совместимость с третьей версией манифеста Chrome. В Firefox будет оставлен полноценный API webRequest, который в Chrome будет переведён в режим только для чтения.

В Firefox также при помощи механизма Event Pages будет сохранена поддержка выполнения фоновых скриптов на базе DOM, вместо которых в третьей версии манифеста предписано использовать Service Workers. Фоновые скрипты на базе Service Workers в Firefox пока не поддерживаются, но разработчикам будет предоставлена возможность определения в дополнении, как обработчика на базе Event Pages, так и скриптов на базе Service Workers, что позволит создавать дополнения, соответствующие третьей версии манифеста и работающие в Chrome и Firefox.

Манифест Chrome определяет возможности и ресурсы, доступные для дополнений, написанных с использованием API WebExtensions. Начиная с версии 57 Firefox полностью перешёл на использование API WebExtensions для разработки дополнений и прекратил поддержку технологии XUL. Переход на WebExtensions позволил унифицировать разработку дополнений с платформами Chrome, Opera, Safari и Edge, упростил портирование дополнений между различными web-браузерами и дал возможность полноценно использовать многопроцессный режим работы (дополнения WebExtensions могут выполняться в отдельных процессах, изолированно от остальных частей браузера). Для унификации разработки дополнений с остальными браузерами в Firefox обеспечивается почти полная совместимость со второй версией манифеста Chrome.

В рамках инициативы по упрощению создания безопасных и высокопроизводительных дополнений, и усложнению возможности создания небезопасных и медленных дополнений, компания Google разработала третью версию манифеста. Основное недовольство третьей версией манифеста вызвано переводом в режим только для чтения API webRequest, позволявшего подключать собственные обработчики, имеющие полный доступ к сетевым запросам и способные на лету модифицировать трафик. Вместо API webRequest в третьей версии манифеста добавлен ограниченный по своим возможностям API declarativeNetRequest, предоставляющий доступ к встроенному движку для фильтрации, самостоятельно обрабатывающему правила блокировки, не разрешающему использовать собственные алгоритмы фильтрации.

Среди особенностей реализации третьей версии манифеста в Firefox:

  • Добавлен новый декларативный API фильтрации контента, но в отличие от Chrome не прекращена поддержка старого блокирующего режима работы API webRequest.
  • Реализован механизм Event Pages, который более привычен для web-разработчиков, не требует полной переработки дополнений и устраняет ограничения, связанные с применением Service Workers. Event Pages позволит привести существующие дополнения с фоновыми страницами к требованиям третьей версии манифеста, сохранив при этом доступ ко всем возможностям, необходимым для работы с DOM.
  • Новая гранулированная модель запроса полномочий – дополнение не сможет активироваться сразу для всех страниц (убрано полномочие “all_urls”), а будет работать только в контексте активной вкладки, т.е. пользователю потребуется подтверждать работу дополнения для каждого сайта. В Firеfox все запросы на доступ к данным сайта будут рассматриваться как необязательные, а конечное решение о предоставлении доступа будет принимать пользователь, который сможет выборочно решать какому дополнению предоставить доступ к своим данным на том или ином сайте.

    Для управления полномочиями в интерфейс добавлена кнопка “Unified Extensions” для непосредственного управления тем, к каким сайтам имеет доступ каждое дополнение – пользователь может предоставить и отозвать доступ дополнения к любому сайту. Управление полномочиями применяется только к дополнениям на основе третьей версии манифеста, для дополнений на второй версии манифеста гранулированное управление доступом к сайтам не производится.


  • Изменение обработки Cross-origin запросов – в соответствии с новым манифестом на скрипты обработки контента будут распространяться те же ограничения полномочий, что и для основной страницы, в которую эти скрипты внедряются (например, если страница не имеет доступа к API определению местоположения, то и скрипт дополнения также не получит этот доступ). Данное изменение полностью реализовано в Firefox.
  • API на основе Promise. Firefox поддерживает данный API и для третьей версии манифеста.
  • Запрет выполнения кода, загруженного с внешних серверов (речь про ситуации, когда дополнение подгружает и выполняет внешний код). В Firefox применяется блокировка внешнего кода и разработчики Mozilla добавили дополнительные техники отслеживания загрузок кода. Для скриптов обработки контента представлена отдельная политика ограничения доступа к контенту (CSP, Content Security Policy).

Release. Ссылка here.