アドオンでconfig情報変更

拡張機能の開発に関するフォーラムです。

モデレータ: Forum Moderators

rk
記事: 14
登録日時: 2010年6月27日(日) 17:45

アドオンでconfig情報変更

投稿記事 by rk »

ダウンロードの方法「次のフォルダに保存する」と「ファイルごとに保存先を指定する」をトグルするアドオンを作りたいのですがうまくいきません。

about:config に browser.download.useDownloadDir という項目があるので、これを変更すれば良いと思い、user_pref 関数を使ってみたのですが、アドオンの javascript 上では使用できないようです。

config 情報を変更するにはどのようにすればいいのでしょうか?
mitsugu
記事: 138
登録日時: 2007年1月14日(日) 14:24
お住まい: Osaka,Japan
連絡する:

Re: アドオンでconfig情報変更

投稿記事 by mitsugu »

  1. browser.download.useDownloadDir を書換えることで希望される挙動が実現されるのか
  2. 拡張で既存の項目を書換えることの是非(拡張の機能の実行を終了したタイミングで元の状態に戻せば倫理的にOK?)
ということを考慮しなければならないとは思うのですが、とりあえずはnsIPrefBranch Interfaceを利用すれば可能です。
Sakuraya
記事: 105
登録日時: 2005年12月19日(月) 23:05

Re: アドオンでconfig情報変更

投稿記事 by Sakuraya »

rk さんが書きました:config 情報を変更するにはどのようにすればいいのでしょうか?
browser.download.useDownloadDirをトグルする項目をContentAreaContextMenuに追加するuserChrome.js用のスクリプトです。
拡張を作ったことが無いのでこれが参考になるかはわかりませんが……。

コード: 全て選択

(function() {
  var menuitem = document.createElement("menuitem");
  menuitem.setAttribute("id", "toggleUseDir");
  menuitem.setAttribute("label", "toggleUseDIr");

  menuitem.addEventListener("click", function(aEvent) {
    try {
      var useDir = gBrowser.mPrefs.getBoolPref("browser.download.useDownloadDir");
    } catch(ex) {
      gBrowser.mPrefs.setBoolPref("browser.download.useDownloadDir", false);
    }

    if (useDir) { gBrowser.mPrefs.setBoolPref("browser.download.useDownloadDir", false); }
    else        { gBrowser.mPrefs.setBoolPref("browser.download.useDownloadDir", true); }
  }, false);

  var Popup = document.getElementById("contentAreaContextMenu");

  Popup.insertBefore(menuitem, Popup.firstChild);
})();
rk
記事: 14
登録日時: 2010年6月27日(日) 17:45

Re: アドオンでconfig情報変更

投稿記事 by rk »

お返事ありがとうございます。 目的の動作をさせることができました。

しかし
mitsugu さんが書きました:
  1. browser.download.useDownloadDir を書換えることで希望される挙動が実現されるのか
  2. 拡張で既存の項目を書換えることの是非(拡張の機能の実行を終了したタイミングで元の状態に戻せば倫理的にOK?)
確かにこれは考えなければいけない問題ですね。
僕が実装したかった機能は、一般的にはどのように実装するのでしょうか?
mitsugu
記事: 138
登録日時: 2007年1月14日(日) 14:24
お住まい: Osaka,Japan
連絡する:

Re: アドオンでconfig情報変更

投稿記事 by mitsugu »

rkさん さんが書きました: 僕が実装したかった機能は、一般的にはどのように実装するのでしょうか?
 正解は存在しないと思いますが「私ならこうする」ということであれば次のようになります。
  1. Firefox の設定情報をトグルする機能を実装する。
  2. リリース・ノート等に設定をトグルすることを明記し、ユーザに示す。
  3. AMO エディタにもその旨伝える。
  4. AMO エディタの判断にまかせる。
 拡張作者としてできるのは 3 までかと思います。場合によっては「AMO エディタを説得する」というのも加えてもいいかもしれません。
 私個人としてはユーザさんのブラウザの設定を、拡張がユーザさんに無断で変更することは、それが一時的なものであるにせよ避けたいと思っています。拡張固有の設定項目を増やす分には問題ないと考えていますが。

 他にいい方法があったり、そこまでしなくてもよいという考えを持っておられる拡張作者さんもいらっしゃるでしょうから、自分も他の拡張作者さんの意見を伺いたいところです。
rk
記事: 14
登録日時: 2010年6月27日(日) 17:45

Re: アドオンでconfig情報変更

投稿記事 by rk »

mitsugu さんが書きました:拡張がユーザさんに無断で変更することは、それが一時的なものであるにせよ避けたいと思っています。
そうですね。 個人で使うために作っているアドオンですが、公開する場合はそのことを明記します。

お返事くださったみなさん、ありがとうございました!
返信する