Что происходит с расширениями Chrome?

Пока что 2023 год был напряженным в мире расширений Chrome. Ваши ценные отзывы позволили нам улучшить платформу расширений и нашу документацию. Мы также продолжаем сотрудничать с другими поставщиками браузеров в группе сообщества WebExtensions , чтобы API расширений работали более согласованно во всех браузерах.

В этом посте мы поделимся с вами некоторыми изменениями, над которыми команда расширений Chrome работала в первой половине этого года, а также о том, какие предстоящие функции будут выпущены позднее в этом квартале. Давайте начнем!

Новые API и функции расширений

В этом разделе я хочу выделить некоторые важные запуски API, кратко рассмотреть другие улучшения API и рассказать о предстоящих выпусках API.

Основные моменты

Закадровые документы

Offscreen API был представлен в Chrome 109. Он позволяет расширениям Manifest V3 обрабатывать случаи использования, требующие взаимодействия с DOM или окном, что невозможно выполнить в работнике службы расширений. Кроме того, в Chrome 114 появились две дополнительные причины для работы за кадром: 'WORKERS' для случаев, когда вашему документу необходимо создать работника, и 'LOCAL_STORAGE' чтобы помочь перенести данные из window.localStorage в API chrome.storage .

Начиная с Chrome 115, при создании закадрового документа вы можете указать несколько причин. Это позволяет выполнять две связанные задачи в одном документе.

Новый API боковой панели 🎉

Раньше единственным способом создания боковых панелей в расширениях было внедрение нового элемента со сценариями содержимого на каждую страницу. В Chrome 114 был запущен API боковой панели . Теперь вы можете гораздо проще разработать сопутствующую боковую панель для пользователей. Узнайте больше о том, как API боковой панели позволяет улучшить взаимодействие с пользователем .

Расширение словаря, которое показывает определение выбранного слова.
Расширение словаря боковой панели. См. код в репозитории chrome-extensions-samples.

Более надежные сервисные работники

Все события расширения теперь перезапускают таймер простоя работника службы расширения. В Chrome 110 жесткое максимальное время жизни в пять минут было удалено для работников служб расширений. Кроме того, сообщения собственным приложениям и сообщениям внутри расширения перезапускают таймер простоя. Подробнее об этом читайте в статье «Жизненный цикл работника службы расширения» .

Больше запусков API

  • Action API : Начиная с Chrome 110, вы можете настроить текст значка с помощью setBadgeTextColor () и getBadgeTextColor() . Кроме того, isEnabled() позволяет вам проверить, включено ли действие для текущей вкладки.
  • API команд : в Chrome 111 исправлена ​​ошибка, из-за которой ярлыки расширений, объявленные в манифесте в разделе "commands._execute_action" , не сохранялись во время преобразования в MV3.
  • API загрузок . Пользовательский интерфейс загрузок по умолчанию в Chrome переместился с полки внизу в правую часть омнибокса. Чтобы отключить это поведение, вы можете использовать downloads.setUiOptions() , который заменяет setShelfEnabled() .
  • API истории : chrome.history.getVisits() и chrome.history.search() также возвращают данные с других устройств, которые были синхронизированы с базой данных локальной истории. Это может привести к увеличению количества записей в истории и увеличению числа посещений. isLocal был добавлен в VisitItem в Chrome 115 (ожидается в стабильной версии позже в этом месяце), чтобы иметь возможность фильтровать только локальные посещения.
  • Identity API : окно аутентификации теперь отображается в виде всплывающего окна, а не занимает полное окно приложения. Чтобы предоставить больше контроля в процессе перенаправления JavaScript, мы добавили две новые опции: abortOnLoadForNonInteractive и timeoutMsForNonInteractive .
  • API хранилища : в Chrome 112 размер хранилища chrome.session был увеличен до 10 МБ. Затем размер хранилища chrome.local был изменен, чтобы соответствовать Chrome 114.

Вскоре...

В предстоящих версиях Chrome будет представлено множество функций, которые упростят переход расширений на Manifest V3. Список предстоящих изменений, связанных с миграцией MV3, можно найти на нашей странице известных проблем . Дополнительно мы планируем добавить следующие функции:

  • DeclarativeNetRequest API : значение по умолчанию для свойства isUrlFilterCaseSensitive изменится на false . Посмотрите ветку WECG .
  • API обработки файлов позволит расширениям ChromeOS открывать файлы с указанными типами MIME и расширениями файлов. Эта функция в настоящее время находится под флагом .
  • API среды выполнения : мы выпускаем runtime.getContexts() вместо extension.getViews() , который устарел. Это позволит расширениям определять, открыта ли страница расширения, такая как боковая панель или закадровый документ. См. предложение WECG .
  • Сервисные работники : мы добавляем надежные средства проверки активности в API-интерфейсы Chrome, которые отображают приглашение пользователя: permissions.request() , desktopCapture.chooseDesktopMedia() , identity.launchWebAuthFlow() и management.uninstall() .
  • API боковой панели : мы запускаем sidepanel.open() , который будет программно открывать боковую панель расширения в ответ на жест пользователя, например щелчок в контекстном меню.
  • API TabCapture : мы добавляем возможность вызывать getMediaStreamId() у работника службы расширения и получать MediaStream из идентификатора потока в закадровом документе. Примеры см. в разделе «Запись звука и снимок экрана» .

Следите за обновлениями на странице «Что нового в расширениях», чтобы узнавать об этих объявлениях, как только они станут доступны в бета-версии Chrome .

Обновления документации и дополнительные рекомендации по Манифесту V3

Мы также усердно работали над улучшением опыта обучения для разработчиков. Большое спасибо всем, кто нашел время, чтобы задать вопросы о группе chromium и сообщить о проблемах с документацией на сайте Developer.chrome.com .

Основные моменты

  • В новом разделе «Миграция MV3» представлены практические способы преобразования расширений Manifest V2 в Manifest V3.
  • Руководство для работников службы расширения содержит подробную информацию по темам, касающимся работников службы расширения. Сюда входит то, как они регистрируются и обновляются, как выглядит жизненный цикл, как работает импорт и многое другое.
  • Учебное пособие «Обработка событий с помощью сервис-воркеров» описывает основы работы с расширениями сервис-воркеров. Он создает расширение омнибокса, которое дает вам быстрый доступ к справочным страницам API расширений.

Больше обновлений

Вскоре...

  • Как перенести удаленно размещенный код в Manifest V3.
  • Как запустить автоматические тесты расширений Chrome.
  • Улучшено руководство по декларативному сетевому запросу.
  • Улучшения в пояснении сценария контента.

💡Знали ли вы?

Прежде чем закончить, мы хотели бы поделиться парой полезных инструментов и идей:

  • Chrome начал работу над поддержкой WebHID ; вы можете поэкспериментировать с API, начиная с Chrome 115 (но имейте в виду, что работа над ним все еще продолжается).
  • Puppeteer теперь поддерживает тестирование в безголовом режиме, используя --headless=new . Подробнее об этом читайте в блоге об обновлении безголового режима Chrome .
  • С помощью инструмента тестирования обновлений расширений вы можете проверить, какие предупреждения выдаются при изменении разрешений в манифесте. Таким образом, вы можете испытать процесс обновления так же, как это сделал бы пользователь. Это важно, поскольку некоторые разрешения могут отключить расширение до тех пор, пока пользователь снова не предоставит доступ.

Давайте соединимся! 🙌

В этом году команда расширения была рада лично встретиться с разработчиками расширений во время мероприятий Google I/O Connect . Мы работаем над созданием новых пространств для общения с вами, таких как запуск фокус-групп и встреч.

А пока продолжайте задавать вопросы о группах chromium , рассмотрите возможность участия в WECG и сообщайте о любых проблемах с документацией в репозитории Developer.chrome.com на GitHub .

Еще раз спасибо за то, что вы являетесь частью сообщества разработчиков расширений!