Mypal68 icon indicating copy to clipboard operation
Mypal68 copied to clipboard

"Add-ons Manager" - две проблемы

Open zanud opened this issue 1 year ago • 8 comments

  1. На вкладке "Add-ons Manager" не отображается значок дополнения, если он в формате SVG. Строчки с названием и описанием дополнения в этом случае сдвинуты влево относительно их нормального места: 0 (На жёлтое предупреждение внимание можно не обращать: оно из-за отсутствия цифровой подписи, но и при её наличии значка тоже нет.) При всём при этом во вкладке отладки дополнений SVG-значок показывается: 00

  2. Пошёл проверять, воспроизводится ли проблема в чистом профиле. Воспроизводится. Тогда решил заменить SVG-значок на PNG. И тут началась феерия: Сразу после установки дополнения в строке с ним появляется странная синяя полоса: 1 Это progress bar заклинило, или что? Если в этот момент обновить страницу, нажав F5, то картинка становится нормальной: 2 А если нажать не F5, а крестик в той синей полосе, то окно становится вот таким: 3 хотя дополнение установлено и работает, о чём свидетельствует его значок в правом верхнем углу окна. И если теперь нажать F5, то дополнение в списке установленных появляется (как одной картинкой выше).

На всякий случай обращаю внимание: вторая проблема обнаружена на абсолютно новом профиле. После каждой установки дополнения я закрывал браузер, удалял профиль и заново запускал браузер. Воспроизводимость проблемы - примерно девять раз из десяти. И примерно раз из десяти установка заканчивалась нормально, без синей полосы.

zanud avatar Oct 06 '24 23:10 zanud

Да, и ещё: По ходу экспериментов с PNG-значками выяснилось, что Mypal во вкладке дополнений использует значки размера 32x32, хотя Mozilla на своём сайте заявляет, что должно быть 48x48:

Вы должны указать по крайней мере одну главную иконку, в идеале размером 48х48 пикселей. Эта иконка будет использоваться по умолчанию в Менеджере Дополнений.

https://developer.mozilla.org/ru/docs/Mozilla/Add-ons/WebExtensions/manifest.json/icons

Или это от разрешения экрана зависит? Но в соседней вкладке отладки дополнений значки 48x48...

zanud avatar Oct 07 '24 00:10 zanud

Добиться видимости 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, который Менеджер дополнений использует. И значок появился!

Я в недоумении:

  1. Mozilla не требует никакого конкретного размера viewBox. Требуется только, чтобы этот параметр в файле был. А 48 в их примере - просто пример.
  2. SVG - формат векторный, все размеры и координаты там не в настоящих пикселах, а в попугаях, и легко пересчитываются на любой нужный размер.

Экспериментирую дальше. Задаю viewBox размером 48 - значок показывается. Задаю 96 - тоже показывается. А при 128 уже не показывается.

~~Так что решение моей проблемы вроде и найдено, но оно - всего лишь обход проблемы, имеющейся в браузере.~~

zanud avatar Oct 07 '24 09:10 zanud

Ага, ещё немного поизучал внутренности тех SVG, которые наплодить успел, и выяснил, что не в размере дело. Теперь у меня и с viewBox="0 0 128 128" показывает.

А настоящей причиной оказалось то, что в исходном файле отсутствовали параметры width="128" и height="128". (О том, что они необходимы, Mozilla не пишет. Точнее, она об этих параметрах вообще ничего не пишет.) Тупо прописал их в файл вручную, и картинка появилась. (А во время прошлых экспериментов её не было, потому что InkScape при простом пересохранении в Plain SVG их не добавлял, а делал это позже, когда я уже и viewBox менял.)

Тоже, в общем-то, дефект браузера, потому что width и height элементарно вычисляются из viewBox. И одновременно с этим и кнопка дополнения, и его значок во вкладке отладки отрисовываются нормально даже из исходного файла без каких-либо моих изменений. Хотя код работы с SVG, по идее, во всех этих местах один и тот же.

zanud avatar Oct 07 '24 10:10 zanud

Можешь выяснить как с этим в лисах, если это какая-то мелочь типа кб в пару строк кода, то с следующей версии я это сделаю.

Feodor2 avatar Oct 20 '24 12:10 Feodor2

Попытаюсь.

zanud avatar Oct 20 '24 12:10 zanud

Кстати, насчёт "пары строк кода". Я тут недавно попытался дальше усовершенствовать свою версию Simple Proxy Toggle. Мне там не хватает возможности перечитать заново proxy.pac.

В описании API дополнений на сайте Мозиллы об этом ни слова. Судя по коду странички настроек, нажатие на кнопку "Обновить" вызывает функцию reloadPAC().

Я попытался найти её в исходниках, чтобы понять, есть ли к ней доступ из дополнений, и... не нашёл её! То есть, она есть в одном из заголовочных файлов (.idl), но это только заголовок, а реализации нигде нет. Хотя кнопка в настройках исправно работает.

(На всякий случай упомяну, что в исходниках также имеется булевская переменная reloadPAC, но она, во-первых, именно переменная, а во-вторых, внутренняя для одной из функций, и потому к искомой функции явно отношения не имеет.)

zanud avatar Oct 20 '24 13:10 zanud

Можешь выяснить как с этим в лисах, если это какая-то мелочь типа кб в пару строк кода, то с следующей версии я это сделаю.

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

Итак. На моём компьютере с Windows XP сразу после установки получаю: XPbeforeF5

А после нажатия F5 значок меняется: XPafterF5

Перебираюсь на другую машину, там Windows 11 и никогда не было Mypal, я его впервые притащил. Всё повторяется практически в точности. Единственное отличие - после F5 значок остаётся 48. Но на той машине разрешение экрана повыше, так что будем считать, что размер используемого значка от него зависит (хотя и странно, что до F5 один значок, а после - другой, при том что видимый размер изображения в обоих случаях одинаковый - 24x24).

На следующем шаге посмотрел, что на той машине происходит при установке этого файла в Firefox (Developer Edition, поскольку мой .xpi без цифровых подписей). Всё нормально, устанавливается без "спецэффектов". И исходный вариант с SVG-значком в менеджере дополнений тоже нормально отображается.

Дальше надо отладчиком смотреть, в чём же отличия, но это небыстро будет, так как я пока не очень представляю, куда этим отладчиком тыкаться, нужно сначала исходники как следует порассматривать.

А пока я свой файл с PNG-значками выложил вот сюда: http://yup.lh1.in/AddOns/proxytoggle.xpi. Можешь сам попытаться разобраться, что происходит.

zanud avatar Oct 24 '24 13:10 zanud

Порылся в исходниках. Решил, что трассировать отладчиком стоит со строки 1333 файла chrome://mozapps/content/extensions/extensions.js (здесь это /toolkit/mozapps/extensions/content/extensions.js.

Поставил точку прерывания, открываю свой .xpi и... всё. На вкладке отладчика значок становится зелёным, а сама эта вкладка - полностью пустой: blank

Окно не зависло: на другие вкладки можно переключаться, там всё нормально. И если окно закрыть, установка дополнения идёт.

Дальше быстренько выяснилось, что это безобразие (белая вкладка) происходит при отладке не только браузера, но и обычных веб-страниц.

Так что принимаю поздравления - я напоролся на ещё одну ошибку в браузере. И всё, что в такой ситуации могу сделать, - создать очередную жалобу: #536.

zanud avatar Oct 28 '24 12:10 zanud