Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
zanud opened this issue Oct 6, 2024 · 8 comments
Open

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

zanud opened this issue Oct 6, 2024 · 8 comments

Comments

@zanud
Copy link

zanud commented Oct 6, 2024

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

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

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

@zanud
Copy link
Author

zanud commented Oct 7, 2024

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

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

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

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

@zanud
Copy link
Author

zanud commented Oct 7, 2024

Добиться видимости 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
Copy link
Author

zanud commented Oct 7, 2024

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

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

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

@Feodor2
Copy link
Owner

Feodor2 commented Oct 20, 2024

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

@zanud
Copy link
Author

zanud commented Oct 20, 2024

Попытаюсь.

@zanud
Copy link
Author

zanud commented Oct 20, 2024

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

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

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

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

@zanud
Copy link
Author

zanud commented Oct 24, 2024

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

Попытался поразбираться, что происходит при использовании 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
Copy link
Author

zanud commented Oct 28, 2024

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

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

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

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

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants