Firefox拡張機能で設定値を読み書きする (その2)
ここまでのあらすじ
Firefox拡張機能で、その拡張独自の設定ができるようにしていた。前回で、デフォルト値を設定してその値がabout:configに反映されていることを確認した。
今回はJavaScriptコードから設定値の取得/変更ができるようにする。参考にしたページは以下(前回と同じ)。
Preferences - MDC
ソースコード
コードのサンプルは以下の通り。
// content/bottomErrorConsole.js // 拡張機能の本体(の一部) // "extensions.bottomerrorconsole" ブランチを取得する var prefBranch = Components.classes["@mozilla.org/preferences-service;1"]. getService(Components.interfaces.nsIPrefService). getBranch("extensions.bottomerrorconsole."); // 値の取得 var h = prefBranch.getIntPref("default_height"); // 取得した値をエラーコンソールに出力する Application.console.log("default_height = " + h); // 値の設定 prefBranch.setCharPref("startup_mode", "close");
まずvar prefBranch = ...
という文で設定ツリーの一部を取得している。このprefBranch
というオブジェクトから"extensions.bottomerrorconsole."という名前で始まる設定値の取得/設定ができるようになる。
その下は設定値を取得する例だ。このgetIntPref
はその名の通り整数値を取得するメソッドで、この場合は"extensions.bottomerrorconsole.default_height"という名前の整数型の設定値が取得できる。
設定値は「文字列」、「整数値」、「真偽値」という3つの型があって(前回調べた)、それに対応してgetCharPref
, getIntPref
, getBoolPref
という3種類のメソッドを使い分けなければいけない。型を意識するのはJavaScript的に気持ち悪いけど、おとなしく言われた通りにしておく。
その下は値を設定する例で、単純にgetをsetに代えるだけでOKだ。もちろん、3つの型に対応して3つのsetメソッドがある。
注意として、getBranchの引数"extensions.bottomerrorconsole."の最後の"."は重要だ。もし"."が無かったら、その下のgetIntPrefでは"extensions.bottomerrorconsoledefault_height"という名前の設定を取得することになる。勝手に"."を補ってくれたりしないので、自分で指定するようにする。
動作確認
以下のようにデフォルト値を設定して、動作確認してみた。
// defaults/preferences/bottomErrorConsole.js // この拡張機能のデフォルト設定 pref("extensions.bottomerrorconsole.default_height", 400); // この値を取得する pref("extensions.bottomerrorconsole.startup_mode", "open"); // この値を上書きする