Настройки по умолчанию в загрузочном аддоне Firefox

#firefox #firefox-addon-restartless

#firefox #firefox-addon-без перезапуска

Вопрос:

Загрузочные аддоны Firefox не считывают настройки по умолчанию, как оверлейные аддоны.
Я понимаю необходимость ручной настройки настроек по умолчанию при установке загрузочного аддона.

Я думаю, что после первоначальной установки единственным преимуществом настройки настроек по умолчанию является возможность сброса настроек (если FF не отслеживает это в другом месте).

Вопрос в том, нужно ли читать и устанавливать настройки по умолчанию для каждого startup() ?
Если да, то где они будут сохранены (т.Е. Откуда getDefaultBranch() берутся данные)?

Ссылка:
Как преобразовать расширение overlay в restartless
Краткое руководство по настройкам Mozilla
Настройки по умолчанию для надстроек без перезапуска
Настройки

Ответ №1:

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

От Дейва Гарретта, разработчика Flagfox и автора книги «Как преобразовать расширение overlay в restartless»

Префиксы по умолчанию, установленные во время выполнения, нигде не сохраняются. На диске нет кэша с настройками по умолчанию.

При запуске Firefox префы по умолчанию считываются из их различных местоположений в систему настроек. (У Firefox есть свои собственные в omni.у ja и аддонов есть свои установочные папки / файлы) Копия этой ветки также поддерживается с помощью пользовательских настроек, считываемых из prefs.js перезаписан в него. Настройка (пользовательских) префиксов изменяет состояние в системе prefs, которое (в конечном итоге) записывается в prefs.js (опять же, сохраняются только значения префиксов, отличные от значений по умолчанию). Настройка префиксов по умолчанию изменяет состояние в системе префиксов, однако это нигде не сохраняется. Их необходимо загружать при каждом запуске. Для старой стандартной системы prefs по умолчанию Firefox загружал их при каждом запуске для вас. Для расширений без перезапуска вам нужно сделать это самостоятельно. При каждом запуске аддона необходимо загружать префиксы по умолчанию.

Вы, конечно, можете использовать префы, не имея значения по умолчанию вообще, но вам придется жестко кодировать значения по умолчанию в вашем коде повсюду. Простая реализация системы prefs по умолчанию для перезапускаемых аддонов — это гораздо более чистое решение, которое позволяет избежать ошибок, которые вы могли бы совершить в противном случае.

Поскольку система prefs сохраняет на диск только префы, отличные от стандартных, это также может значительно повысить эффективность сохранения префиксов, когда они по какой-либо причине возвращаются к умолчанию. Например, у меня есть большой двоичный объект JSON в префиксе строки. (начиная с версии 5.0, теперь он довольно сжат) Если пользователь изменяет то, что нужно сохранить, изменив что-то в диалоговом окне параметров, этот большой двоичный объект JSON будет сохранен в prefs.js в полном объеме. Если пользователь затем отменит это изменение, его двоичный объект JSON будет возвращен к предыдущему значению. Если это эквивалентно любому значению по умолчанию, то prefs.js просто не сохраняет никакого значения, и используется значение по умолчанию. Это уменьшает то, что необходимо загрузить при запуске с prefs.js в случае по умолчанию. Фактически, я могу использовать prefs API, чтобы определить, установлено ли значение по умолчанию, и я полностью обхожу загрузку из упакованного пользовательского префикса JSON и перехожу непосредственно к полному файлу JSON, и в этом случае мне даже не нужно загружать из системы prefs. Это оптимизация, которая действительно применима только в подобных случаях, но это еще один пример того, почему правильное использование настроек по умолчанию может быть полезным.

Что касается удаления настроек по умолчанию на shutdown()

Как правило, нет, вам не нужно удалять настройки по умолчанию при завершении работы, хотя есть законный аргумент, что это может быть правильно (но, возможно, это плохая идея). Чтобы было ясно, необходимо учитывать несколько отдельных случаев завершения работы:

1) Завершение работы Firefox завершение работы аддона: в этом случае вы не должны выполнять какое-либо завершение работы, которое не требуется для сохранения данных. Нет необходимости выгружать ваши данные, поскольку выполняется завершение работы приложения, и оно сделает это за вас.

2) завершение работы аддона из-за обновления аддона: в этом случае вам необходимо правильно выгрузить все, что вы загрузили, чтобы следующая версия могла загружаться чисто. Однако, как правило, здесь нет необходимости беспокоиться о настройках по умолчанию. Новая версия будет загружена и перезапишет старую. (если значение по умолчанию не было удалено, и в этом случае оно останется в памяти, ничего не делая)

3) завершение работы аддона из-за отключения аддона: если оставить загруженные здесь префы по умолчанию, это не повредит ничему, кроме небольшого объема памяти, который они занимают. Если у вас много префиксов, я думаю, их выгрузка может быть оправдана, однако это не тот вариант использования, который будет возникать очень часто. Я бы вообще не беспокоился о выгрузке префиксов, если только у вас не слишком много префиксов или префиксов настолько больших, что вы получаете предупреждения в консоли ошибок браузера о том, что они слишком большие. (в этом случае вы должны это исправить)

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