- PVSM.RU - https://www.pvsm.ru -

Первый мобильный браузер с поддержкой расширений для Chromium. Новая альфа Яндекс.Браузера

Современные мобильные браузеры, как и их десктопные аналоги, должны позволять пользователям добавлять недостающие возможности с помощью дополнений. Несмотря на отказ [1] команды Chromium от идеи поддержки расширений на Android, наша команда продолжает работать над этой возможностью, и сегодня мы приглашаем сообщество Хабра попробовать первую альфу Яндекс.Браузера [2], в которую вы уже сможете установить LastPass, Tampermonkey или даже Ghostery.

image Первый мобильный браузер с поддержкой расширений для Chromium. Новая альфа Яндекс.Браузера - 2

Первые дополнения появились в Internet Explorer еще в 1999 году и за следующее десятилетие практика открытия доступа к API стала обязательной для любого более-менее популярного браузера. Сейчас многие из нас не представляют себе работу за компьютером без возможности добавить в браузер необходимую функцию собственными руками. А вот с Android пока еще все не так. Несмотря на рост производительности современных мобильных устройств, браузерные расширения на Android – скорее исключение, чем правило.

Мобильные браузеры не всегда воспринимались пользователями всерьез. Во времена медленного интернета и слабых мобильных устройств люди предпочитали решать свои задачи с помощью компьютера. Сейчас их отношение постепенно меняется. Нас все чаще просят добавить в продукт специфичные функции и инструменты. Что-то из этого мы встраиваем в Яндекс.Браузер (например, режим чтения и переводчик). Но многие из запросов было бы логично решить с помощью сторонних дополнений, а не перегружать Браузер. Добавим к этому традиционную просьбу поддержать дополнения на Android, которую достаточно часто присылают через обратную связь. В общем, мы стали не закрывать глаза на изменения вокруг и приступили к разработке.

Поддержать дополнения в браузере на Android можно двумя способами. Можно предусмотреть API, с которым бы работали другие приложения из Google Play. Эта практика уже многим знакома: например, кодеки для видеоплееров зачастую распространяются [3] в виде отдельных приложений. Мы и сами нечто подобное совсем недавно сделали с блокировкой рекламы [4]. У этого подхода есть два больших минуса: отсутствие дополнений на старте и необходимость создавать свой велосипед, который был бы несовместим с дополнениями для настольной версии браузера. А нам бы хотелось, чтобы люди могли использовать на Android те же инструменты, к которым они привыкли на компьютере.

В чем заключается второй способ, вы уже догадались. Расширения для Chrome и других браузеров на основе Chromium появились в начале 2010 года, и тысячи разработчиков со всего мира в течение всех этих лет создавали собственные инструменты. Яндекс.Браузер, несмотря на функциональные отличия, также основан на Chromium и поддерживает установку дополнений на компьютере. И вполне логично в этой ситуации распространить поддержку еще и на Android. До нас этого никто не сделал, но какие тут могут быть сложности, ведь на Windows все работает?

Первый мобильный браузер с поддержкой расширений для Chromium. Новая альфа Яндекс.Браузера - 3

Сначала может показаться, что все проблемы в отсутствии интерфейса для дополнений. Этого кода и правда нет в проекте [5], но мы изначально использовали собственный интерфейс, поэтому так нам было даже проще. Но нарисовать интерфейс – это капля в море, основные трудности связаны не с ним.

Когда мы попробовали собрать Яндекс.Браузер для Android с флагом enable_extensions, то получили порядка 600 ошибок совместимости. Флаг включения расширений, как и отвечающий за них код, был до мозга [6] костей завязан на специфичное для десктопа окружение. Небольшой пример для любопытных разработчиков. Возьмем объект Browser. Browser – центральный контроллер UI десктопного браузера. Он содержит много чего интересного, в том числе модель TabStripModel, которая активно используется дополнениями для работы с вкладками. Но под Android все это не собирается. Мы начинаем тянуть за одну нить, а вытягиваем целый ворох несовместимостей. И так на каждом шагу.

Платформа расширений за 6 лет обросла большим количеством API. И у каждого из них могут быть десятки методов со своей непредсказуемой работой на Android. Поэтому для начала мы поддержали наиболее востребованные возможности, которых вполне достаточно для того, чтобы уже в альфе заработали такие дополнения, как Evernote, LastPass, Ghostery, SaveFrom.net, Tampermonkey, Яндекс.Погода и многие другие. Кстати, с этим нам помогли разработчики популярных дополнений, которых примерно месяц назад мы пригласили на закрытое тестирование ранних сборок. Чтобы им было проще ориентироваться в наших возможностях, мы написали диагностическое расширение [7], которое формирует наглядный отчет [8].

Первый мобильный браузер с поддержкой расширений для Chromium. Новая альфа Яндекс.Браузера - 4 Первый мобильный браузер с поддержкой расширений для Chromium. Новая альфа Яндекс.Браузера - 5

Что касается источников дополнений, то тут мы традиционно не ограничиваем людей каким-то одним каталогом и поддерживаем установку из Chrome Web Store, Opera Addons, собственного раздела рекомендованных дополнений, по inline-ссылкам или просто из каталога на SD-карте.

Первый мобильный браузер с поддержкой расширений для Chromium. Новая альфа Яндекс.Браузера - 6 Первый мобильный браузер с поддержкой расширений для Chromium. Новая альфа Яндекс.Браузера - 7

В заключение несколько слов о безопасности. Наша реализация дополнений на Android полностью соответствует общепринятой модели [9], т.е. дополнения работают в «песочнице» и изолированы как от остальной части браузера, так и от операционной системы. К тому же, как и на десктопе, мы умеем блокировать известные вредоносные разработки.

Установить альфа-версию Яндекс.Браузера можно из Google Play [2]. После второго холодного запуска (особенность альфы) в настройках вы найдете целый раздел, посвященный дополнениям. Мы были бы благодарны сообществу Хабра за отзывы и идеи.

Автор: Яндекс

Источник [10]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/testirovanie/182404

Ссылки в тексте:

[1] отказ: https://www.reddit.com/r/Android/comments/35v8gi/we_are_the_chrome_for_android_team_ama/cr8alzk

[2] альфу Яндекс.Браузера: https://play.google.com/store/apps/details?id=com.yandex.browser.alpha

[3] распространяются: https://play.google.com/store/apps/developer?id=J2+Interactive

[4] блокировкой рекламы: https://tech.yandex.ru/browser/contentblocker/

[5] проекте: https://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/ui/android/extensions/extension_view_android.cc?r1=127824&r2=127823&pathrev=127824

[6] мозга: http://www.braintools.ru

[7] расширение: https://github.com/yandex/browser-extensions/tree/master/api-test-extension

[8] отчет: https://yandex.github.io/browser-extensions/

[9] общепринятой модели: http://webblaze.cs.berkeley.edu/papers/Extensions.pdf

[10] Источник: https://habrahabr.ru/post/309014/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best