Firefox Hacks 翻訳日記

アクセスカウンタ

zoom RSS 拡張機能作成メモ (3)

<<   作成日時 : 2006/08/28 01:18   >>

トラックバック 0 / コメント 0

Find Toolbar Tweaks を作っていて気付いた事のメモ。
今回の副題は、「拡張機能の競合はこうして起こる」。

Find Toolbar Tweaks の version 0.9.3 で修正した、Bookmark Duplicate Detector とのコンフリクト。
実は、0.9.1 の時点で、ユーザからの直メールで知らされていた。
それを放置していたのは、自分の環境で再現できなかったからだ。
メールを受け取ったあと、Bookmark Duplicate Detector をインストールしてみたが、
報告にあるような症状 (入力欄にフォーカスが移動しない) は全く発生しなかったのだ。

その後、別の拡張機能 (Table2Clipboard) でも同様の不具合が生じる、という報告があり、
これもインストールしてみたが再現しない。

で、version 0.9.2 をリリースした後、Bookmark Duplicate Detector の作者の Stéphane Bertin さんから
「Bookmark DD の Bug 14523 はそっちのせいだろ。善処しろやゴルァ (曲解の入った意訳)」
というメールをもらった。
「んなこと言われても再現できないもんは直せん」と返信しようかと思ったが、
"easily reproducible" と断言されているので、私の方が間違っているのかもしれない。
ふと思いついて、Bookmark DD と Find Toolbar Tweaks の両方をアンインストールした上で、
Bookmark DD → Find Toolbar Tweaks の順でインストールしてみたら、
見事に再現したのである。

つまり、Bookmark DD を後からインストールしていたので、何回再現しようとしても
再現しなかった、というわけだ。
私の開発環境では、いくつかの拡張機能が入っている状態で開発しているが、
日常環境で使いもしない Bookmark DD や Table2Clipboard は当然入っていない。
自分の環境で動作確認を取った上でリリースしていても競合が起こりうる、
という事は予測していたが、まさか拡張を入れる順番で再現しない事があるとは思わなかった。

ちなみに、どこが悪かったかと言うと、メインの findbartweaks.js で
var prefService = Components.classes["@mozilla.org/preferences-service;1"]
 .getService(Components.interfaces.nsIPrefBranch);

を各 function の中ではなく、スクリプトの冒頭に記述していた事にある。
御存知の方も多いとは思うが、この変数は pfefs.js の記述を読み込むときに繁用する変数で、
これをグローバル変数扱いできると手間が省けるじゃん、という安直な発想だった。

Firefox のコードで開発者の皆さんがやっていることは素直に真似すべし、
というのが今回の教訓である。

テーマ

関連テーマ 一覧


月別リンク

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
URL(任意)
本 文
拡張機能作成メモ (3) Firefox Hacks 翻訳日記/BIGLOBEウェブリブログ
文字サイズ:       閉じる