Совместимость дополнений с Firefox 4: время начинать

Как многим из вас ужé хорошо известно, несколько недель тому назад вышла первая бета браузера Firefox 4. Очень скоро за нею последует и вторая, а итоговая версия ожидается позднее в этом году. Этот сравнительно долгий переходный период идёт на пользу разработчикам дополнений, так как он даёт нам много времени на обновление и проверку наших расширений для Firefox 4. С другой стороны, этот новый значительный выпуск станет щеголять массою новых функций, и нарушит множество необходимых нам вещей, так что обновление большинства дополнений для поддержки его не окажется простой задачею. Эта блогозапись — одна из многих, осведомляющих разработчиков о совместимости с Firefox 4.

Прежде всего, MDC вам друг: «Firefox 4 for developers». Это документ, который должен и будет содержать все сведения, надобные веборазработчикам и разработчикам дополнений, окружившим Firefox 4. Убедитеся, что посещаете этот документ регулярно и ищете в нём изменения. Если вам известно

о чём-нибудь, чего в этом документе недостаёт — дайте нам знать.

И вот несколько ключевых фрагментов из этого документа.


Новый объект менеджера дополнений

Интерфейса nsIExtensionManager больше нет, как и его RDF-изнанки. Сведения о дополнениях теперь будут храниться в базе данных SQLite, а менеджер дополнений станет JS-модулем, называющимся AddonManager.

Ключевая разница этого нового интерфейса — в том, что запросы данных о дополнениях теперь станут асинхронными. Это касается и библиотеки FUEL, так что каждое дополнение, запрашивающее сведения о дополнениях, затронет эта перемена. Особенно щекотливою будет ситуация с теми дополнениями, которым необходимо получить эти данные и разобраться с ними во время запуска. Однако же, если вы также пытаетеся следовать нашим рекомендациям об ускорении начальной загрузки, то вам хорошо бы ужé спланировать процесс запуска расширения как асинхронный.

Регистрация XPCOM

Многое происходит в этой области: XPCOM переменится в Gecko 2.0, и ни один из ваших компонентов не заработает до тех пор, пока вы не учтёте эти изменения.

Компоненты отныне следует в явном виде объявлять в файле «chrome.manifest». Несколько событий первоначальной загрузки устранены; осталось единственное, наблюдение за которым всегда и рекомендовалось: «profile-after-change». А наблюдателей (listeners) и регистрацию в категориях также потребуется указывать в манифесте — и, вследствие этого, изменены некоторые названия категорий.

Изменения в элементе tabbrowser

События TabClose, TabSelect и TabOpen больше не всплывают вверх до уровня элемента tabbrowser, также известного как «gBrowser». Наблюдатели событий (event listeners), отслеживающие эти события, должны теперь быть добавлены к объекту «gBrowser.tabContainer».

Отдалённый XUL отменяется

Отдалённый XUL (remote XUL) — это редко использовавшаяся функция во браузерах на основе Gecko, которая позволяла разработчикам создавать сайты, используя XUL вместо HTML. Поскольку поддержка языка XUL ограничивалася несколькими браузерами, большого смысла писать на нём сайты не было. Однако его успешно использовали в немногих внутренних бизнес-приложениях (также метафорически известных как «тёмная материя»).

Отдалённый XUL было очень непросто поддерживать, притом он был источником многочисленных багов и проблем с безопасностью. За это отдалённый XUL будет убран из Firefox 4. К счастью, HTML 5 ужé включает в себя довольно обильную модель блоков (box model), так что здесь главной потерею для веборазработчиков окажется невозможность использовать XBL впредь. Если вам интересно, что же случится с XBL 2, знайте: устранение отдалённого XUL было необходимым шагом по направлению к реализации XBL 2.

Изменения тем и пользовательского интерфейса

По этим вопросам вам придётся часто и заново осведомляться, так как про Firefox 4 UI существуют многие честолюбивые замыслы. Будут ли некоторые из этих перемен в действительности реализованы или нет, зависит от того, найдётся ли время и найдут ли правильный консенсус.

Главный документ об этих изменениях UI — это вики Мозиллы: «UX Priorities for Firefox 3.7». Вот некоторые важные перемены, о которых вам следует знать:

  • Вкладки наверху. Появится настройка, управляющая положением полосы вкладок относительно панелей инструментов.
  • Меню приложения. В Windows (и в других системах?) будет единственная кнопка-меню вместо полной панели меню. Нажатие клавиши «Alt» будет действовать как включатель и выключатель «классического» меню. Что, несомненно, повлияет на дополнения, которые налагались на меню в главном меню.
  • Домашняя вкладка. Она будет всегда первою на полосе вкладок.
  • Вкладки-приложения. Будет можно переключить вкладку в режим приложения, что в основном будет означать, что такую вкладку сложнее закрыть, а заголовок её будет скрыт: на корешке у вкладки останется только значок сайта. Более интересные изменения (например, сокрытие панелей инструментов браузера, когда такая вкладка активна) тоже запланированы.
  • Поговаривают и о том, чтобы скрывать или вообще убрать строку статуса, что также окажется значительной переменою для разработчиков дополнений. Это обсуждение породило несколько блогозаписей, и оно, несомненно, продолжится. (Дополнительную информацию можете прочесть в его первой, второй и третьей части.)

Прочие изменения

  • Для ускорения работы Firefox 4 станет отныне более жадно кэшировать некоторые файлы, в том числе ресурсы расширений — и хром их, и JS-файлы. Это может привести к неожиданному поведению при разработке дополнений, так как изменения некоторых файлов не применятся до тех пор, пока соответствующие им файлы кэша не окажутся удалёнными. И в этом состоит соответствующий баг. (Пожалуйста, не комментируйте его только для того, чтобы поддержать ту или иную точку зрения: таких комментариев там и так довольно.) Говоря вкратце, вам придётся удостовериться, что все правильные настройки вами установлены и в командной строке используется аргумент «-purgecaches», когда вы запускаете отладочный профиль. И даже тогда JS-модули не обновятся, но это, вероятнее всего, исправят в будущей сборке Файерфокса.
  • Строки «User-Agent: …» будут сокращены по разным причинам. Действуя в русле этих перемен, редакторы AMO также скоро будут отслеживать модификацию UA-строк расширениями. Мы воспретим любые ненужные модификации. Если только у вашего расширения нет действительной необходимости заменять UA, вам лучше сразу убрать соответствующий код.
  • Один из разработчиков осведомил меня, что URL, брошенный на боковую панель (sidebar), теперь по умолчанию приводит к попытке открыть этот URL. Если ваша боковая панель обрабатывает таскание и бросание, то удостоверьтеся в том, что используете заодно и «preventDefault».
Как нетрудно видеть, для достижения совместимости с Firefox 4 предстоит много работы, так что сейчас хороший момент для начала её. Однако имейте в виду, что разработка Firefox 4 в значительной мере продолжается её, так что вероятны появления дальнейших изменений. Не думайте, что сможете создать окончательную версию своего дополнения для Firefox 4, основываясь только на первой бете. Я рекомендую вам не торопиться и озаботиться тем, чтобы быть в курсе новостей о Firefox 4.

И, конечно, будет много добрых новинок, которые позволят вам делать потрясающие вещи в своём расширении — в том числе анимация (2D и 3D), многопоточность и взаимодействие с системными библиотеками. «Firefox 4 for developers» вдругорядь друг вам. И во блоге «Hacks» также неплохой обзор.

http://habrahabr.ru/blogs/firefox/99805/

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *