拡張アンインストール時になんらかの処理を行う
古くから拡張を作られている方で拡張アンインストール時になんらかの処理を行うために、ObserverService の通知を利用されている方も少なくないかと思います。またあるいは FUEL を利用して簡便に拡張のアンインストールを検出している方も少なくないと思います。
これらの2つの方法が使えなくなる予定になっています。最新の方法ではアドオンマネージャを使って、拡張の削除を検出するようになっています。
拙作 Hütte Nippon では、ほぼサンプル通り以下のようなコードになっています。
(function(){
let Cc=Components.classes;
let Ci=Components.interfaces;
let tm;
function rmStringValue(pentry){
try {
Cc["@mozilla.org/preferences-service;1"]
.getService(Ci.nsIPrefBranch).deleteBranch(pentry);
}catch(e){
return false;
}
return true;
};
function clearProfile(){
rmStringValue('extensions.weather.prefecture');
rmStringValue('extensions.weather.region');
rmStringValue('extensions.weather@avidya.ne.jp.install-event-fired');
};
function init(){
window.clearTimeout(tm);
let listener = {
onUninstalling: function(addon) {
if (addon.id == "weather@avidya.ne.jp") {
clearProfile();
}
},
onOperationCancelled: function(addon) {
if (addon.id == "weather@avidya.ne.jp") {
beingUninstalled = (addon.pendingOperations & AddonManager.PENDING_UNINSTALL) != 0;
}
}
}
Components.utils.import("resource://gre/modules/AddonManager.jsm");
AddonManager.addAddonListener(listener);
}
tm=window.setTimeout(init,500);
})();
なお、Hütte Nippon のライセンスを以前から MIT License に変更しています。コピーして使うなり、参考にするなり自由にご利用ください。
また Hütte Nippon の全ソースコードは github にて公開しています。