Feodor2 / Mypal68

web browser
Other
614 stars 38 forks source link

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

Open zanud opened 1 week ago

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

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

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

zanud commented 1 week ago

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

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

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

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

zanud commented 1 week ago

Добиться видимости 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 commented 1 week ago

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

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

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