拡張アンインストール時になんらかの処理を行う
古くから拡張を作られている方で拡張アンインストール時になんらかの処理を行うために、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 にて公開しています。