"Add-ons Manager" - две проблемы
-
На вкладке "Add-ons Manager" не отображается значок дополнения, если он в формате SVG. Строчки с названием и описанием дополнения в этом случае сдвинуты влево относительно их нормального места:
(На жёлтое предупреждение внимание можно не обращать: оно из-за отсутствия цифровой подписи, но и при её наличии значка тоже нет.) При всём при этом во вкладке отладки дополнений SVG-значок показывается:
-
Пошёл проверять, воспроизводится ли проблема в чистом профиле. Воспроизводится. Тогда решил заменить SVG-значок на PNG. И тут началась феерия: Сразу после установки дополнения в строке с ним появляется странная синяя полоса:
Это progress bar заклинило, или что? Если в этот момент обновить страницу, нажав F5, то картинка становится нормальной:
А если нажать не F5, а крестик в той синей полосе, то окно становится вот таким:
хотя дополнение установлено и работает, о чём свидетельствует его значок в правом верхнем углу окна. И если теперь нажать F5, то дополнение в списке установленных появляется (как одной картинкой выше).
На всякий случай обращаю внимание: вторая проблема обнаружена на абсолютно новом профиле. После каждой установки дополнения я закрывал браузер, удалял профиль и заново запускал браузер. Воспроизводимость проблемы - примерно девять раз из десяти. И примерно раз из десяти установка заканчивалась нормально, без синей полосы.
Да, и ещё: По ходу экспериментов с PNG-значками выяснилось, что Mypal во вкладке дополнений использует значки размера 32x32, хотя Mozilla на своём сайте заявляет, что должно быть 48x48:
Вы должны указать по крайней мере одну главную иконку, в идеале размером 48х48 пикселей. Эта иконка будет использоваться по умолчанию в Менеджере Дополнений.
https://developer.mozilla.org/ru/docs/Mozilla/Add-ons/WebExtensions/manifest.json/icons
Или это от разрешения экрана зависит? Но в соседней вкладке отладки дополнений значки 48x48...
Добиться видимости SVG-значка удалось, немного подредактировав его.
Для начала по заветам Мозиллы пересохранил его в формате Plain SVG. Не помогло. Потом проверил на соответствие требованию:
В файле изображения должен быть определён viewBox. Например:
<svg viewBox="0 0 48 48" width="48" height="48" ...
(https://developer.mozilla.org/ru/docs/Mozilla/Add-ons/WebExtensions/manifest.json/icons#svg)
viewBox есть, но с размером 128: viewBox="0 0 128 128"
И тут я на всякий случай решил уменьшить размер viewBox. Для начала - до того размера в 32, который Менеджер дополнений использует. И значок появился!
Я в недоумении:
- Mozilla не требует никакого конкретного размера viewBox. Требуется только, чтобы этот параметр в файле был. А 48 в их примере - просто пример.
- SVG - формат векторный, все размеры и координаты там не в настоящих пикселах, а в попугаях, и легко пересчитываются на любой нужный размер.
Экспериментирую дальше. Задаю viewBox размером 48 - значок показывается. Задаю 96 - тоже показывается. А при 128 уже не показывается.
~~Так что решение моей проблемы вроде и найдено, но оно - всего лишь обход проблемы, имеющейся в браузере.~~
Ага, ещё немного поизучал внутренности тех SVG, которые наплодить успел, и выяснил, что не в размере дело. Теперь у меня и с viewBox="0 0 128 128" показывает.
А настоящей причиной оказалось то, что в исходном файле отсутствовали параметры width="128" и height="128". (О том, что они необходимы, Mozilla не пишет. Точнее, она об этих параметрах вообще ничего не пишет.) Тупо прописал их в файл вручную, и картинка появилась. (А во время прошлых экспериментов её не было, потому что InkScape при простом пересохранении в Plain SVG их не добавлял, а делал это позже, когда я уже и viewBox менял.)
Тоже, в общем-то, дефект браузера, потому что width и height элементарно вычисляются из viewBox. И одновременно с этим и кнопка дополнения, и его значок во вкладке отладки отрисовываются нормально даже из исходного файла без каких-либо моих изменений. Хотя код работы с SVG, по идее, во всех этих местах один и тот же.
Можешь выяснить как с этим в лисах, если это какая-то мелочь типа кб в пару строк кода, то с следующей версии я это сделаю.
Попытаюсь.
Кстати, насчёт "пары строк кода". Я тут недавно попытался дальше усовершенствовать свою версию Simple Proxy Toggle. Мне там не хватает возможности перечитать заново proxy.pac.
В описании API дополнений на сайте Мозиллы об этом ни слова. Судя по коду странички настроек, нажатие на кнопку "Обновить" вызывает функцию reloadPAC().
Я попытался найти её в исходниках, чтобы понять, есть ли к ней доступ из дополнений, и... не нашёл её! То есть, она есть в одном из заголовочных файлов (.idl), но это только заголовок, а реализации нигде нет. Хотя кнопка в настройках исправно работает.
(На всякий случай упомяну, что в исходниках также имеется булевская переменная reloadPAC, но она, во-первых, именно переменная, а во-вторых, внутренняя для одной из функций, и потому к искомой функции явно отношения не имеет.)
Можешь выяснить как с этим в лисах, если это какая-то мелочь типа кб в пару строк кода, то с следующей версии я это сделаю.
Попытался поразбираться, что происходит при использовании PNG. Поскольку прежний .xpi с такими значками давно уже удалён, создал новый и для простоты разбирательства прямо в картинки вписал их размер.
Итак. На моём компьютере с Windows XP сразу после установки получаю:
А после нажатия F5 значок меняется:
Перебираюсь на другую машину, там Windows 11 и никогда не было Mypal, я его впервые притащил. Всё повторяется практически в точности. Единственное отличие - после F5 значок остаётся 48. Но на той машине разрешение экрана повыше, так что будем считать, что размер используемого значка от него зависит (хотя и странно, что до F5 один значок, а после - другой, при том что видимый размер изображения в обоих случаях одинаковый - 24x24).
На следующем шаге посмотрел, что на той машине происходит при установке этого файла в Firefox (Developer Edition, поскольку мой .xpi без цифровых подписей). Всё нормально, устанавливается без "спецэффектов". И исходный вариант с SVG-значком в менеджере дополнений тоже нормально отображается.
Дальше надо отладчиком смотреть, в чём же отличия, но это небыстро будет, так как я пока не очень представляю, куда этим отладчиком тыкаться, нужно сначала исходники как следует порассматривать.
А пока я свой файл с PNG-значками выложил вот сюда: http://yup.lh1.in/AddOns/proxytoggle.xpi. Можешь сам попытаться разобраться, что происходит.
Порылся в исходниках. Решил, что трассировать отладчиком стоит со строки 1333 файла chrome://mozapps/content/extensions/extensions.js (здесь это /toolkit/mozapps/extensions/content/extensions.js.
Поставил точку прерывания, открываю свой .xpi и... всё. На вкладке отладчика значок становится зелёным, а сама эта вкладка - полностью пустой:
Окно не зависло: на другие вкладки можно переключаться, там всё нормально. И если окно закрыть, установка дополнения идёт.
Дальше быстренько выяснилось, что это безобразие (белая вкладка) происходит при отладке не только браузера, но и обычных веб-страниц.
Так что принимаю поздравления - я напоролся на ещё одну ошибку в браузере. И всё, что в такой ситуации могу сделать, - создать очередную жалобу: #536.