--- title: Updating extensions for Firefox 3 slug: Updating_extensions_for_Firefox_3 tags: - Firefox 3 translation_of: Mozilla/Firefox/Releases/3/Updating_extensions ---

このドキュメントは、拡張機能を更新して Firefox 3 に対応させたいと考える開発者のために役立つ情報を提供します。

読み進める前に、私たちからひとつだけ参考になるヒントをお教えしましょう。もしあなたの拡張機能に必要な変更がインストール定義ファイル内の maxVersion 項目の更新だけで、なおかつ addons.mozilla.org に拡張機能を登録している場合、新しいバージョンの拡張機能をアップロードする必要はありません! AMO 上の「開発者用コントロールパネル」を使って maxVersion を更新するだけで作業は完了です。この方法なら、拡張機能が再度レビューに回ることもありません。

Step 1: インストール定義ファイルを更新する

最初のステップ、そして、ほとんどの拡張機能にとって必要となるたったひとつのステップは、Firefox 3 との互換性を示すために インストール定義ファイル (install.rdf) を更新する作業です。

ファイルを開いて、互換性がある Firefox の最高バージョンを示す行を見つけます。Firefox 2 向けの拡張機能であれば、以下のように書かれているはずです。

 <em:maxVersion>2.0.*</em:maxVersion>

これを Firefox 3 との互換性を示すように変更します。

 <em:maxVersion>3.0.*</em:maxVersion>

次にアドオンを再インストールします。

なお、Firefox 3 ではバージョン番号の余計な「.0」が廃止されますので、「3.0.0.*」の代わりに「3.0.*」と書くだけで済みます。

これまでに、一部の拡張機能に影響すると思われる API の変更がいくつも行われています (まだ今後も変更は行われるでしょう)。私たちは現在、これらの変更の完全なリストを作成中です。

註: もしあなたの拡張機能が、インストール定義ファイル の代わりに、まだ Install.js スクリプトを使っている場合は、今回インストール定義ファイルに移行していただく必要があります。Firefox 3 は XPI ファイル内の install.js スクリプトをサポートしません。

インストール定義ファイルに翻訳を追加する

Firefox 3 は、翻訳された説明文を指定するための新しいプロパティを、インストール定義ファイル内でサポートしています。今までの方法も引き続き動作しますが、この新しい方法を利用すれば、アドオンが無効化されていたりインストールが保留されている場合も、各言語で説明文を表示できるようになります。詳しくは 拡張機能の説明の翻訳 をご覧ください。

Step 2: 安全な更新を提供しているか確認する

あなたが独自にアドオンを配布していて、addons.mozilla.org のような安全なアドオン提供サービスを利用していない場合、アドオンの更新に安全な方法を用いる必要があります。つまり、SSL を利用した Web サイト上で更新を提供するか、暗号鍵を使って更新情報に署名する必要があります。詳しくは 安全な更新 をご覧ください。

Step 3: 変更された API に対応する

いくつかの API は様々な方法で変更が行われています。それらの中で、多くの拡張機能に影響を与えることが予想される最も大幅な変更を以下にまとめました。

DOM

外部ドキュメントからのノードは、現在のドキュメントに挿入する前に document.importNode() を使ってクローンを作る (あるいは document.adoptNode() を使って取り込む) べきです。Node.ownerDocument 問題の詳細については W3C DOM FAQ を参照してください。

Firefox では現在このルールを強制していません。Firefox 3 の開発中には強制していた時期もありましたが、このルールを強制すると多くのサイトが機能しなくなってしまうため取りやめになりました。 将来的な互換性を高めるため、Web 開発者にはこのルールに従ってコードを修正することを推奨します。

ブックマークと履歴

あなたの拡張機能から何らかの方法でブックマークや履歴のデータにアクセスしている場合、Firefox 3 と互換性を持たせるには多くの作業が必要です。これらの情報にアクセスするための古い API は、Places という新しいアーキテクチャに置き換えられました。既存の拡張機能を Places API に対応させる方法については、Places への移行ガイド で詳しく解説しています。

ダウンロードマネージャ

RDF データ形式から Storage API への移行にあたって、ダウンロードマネージャの API にも若干変更が加えられました。これに関する移行作業は非常に簡単なはずです。また、複数のダウンロードマネージャリスナーをサポートするため、ダウンロードの進捗状況を監視する API にも変更がありました。詳しくは nsIDownloadManagernsIDownloadProgressListenerダウンロードの監視 を参照してください。

パスワードマネージャ

あなたの拡張機能からパスワードマネージャを利用してユーザのログイン情報にアクセスしている場合、新しいログインマネージャ API を利用するように更新する必要があります。

あなたが拡張機能の中で独自のパスワードストレージを提供したい場合は、組み込みのパスワードマネージャストレージを上書きすることもできます。詳しくは ログインマネージャ用ストレージモジュールの作成 をご覧ください。

ポップアップ (メニュー、コンテキストメニュー、ツールチップ、パネル)

XUL のポップアップシステムは Firefox 3 で大幅に変更されました。ポップアップシステムには、メインメニュー、コンテキストメニュー、ポップアップパネルが含まれます。新しいシステムの仕組みについては ポップアップの使用 ガイドをご覧ください。特筆すべき点は、popup.showPopup が非推奨となり、新しい popup.openPopuppopup.openPopupAtScreen に置き換えられたことです。

自動補完

nsIAutoCompleteController インタフェースの handleEnter() メソッドは、テキストが自動補完ポップアップから選択されたか、ユーザが自分で入力した後 Enter キーを押したかを示す引数を受け付けるよう変更が行われました。

DOMParser

削除されたインタフェース

以下のインタフェースは、Firefox 3 の基盤である Gecko 1.9 から削除されました。あなたの拡張機能でいずれかを使用している場合、コードを更新する必要があるでしょう。

Step 4: 関連するクローム周りの変更を確認する

あなたのコードに修正を加える必要があるかもしれない小さな変更がクロームに対して行われました。「browser-bottombox」と呼ばれる新しい vbox が追加されました。これは、ブラウザウィンドウの下部にあるページ内検索バーとステータスバーを含むものです。この変更は見た目には影響しませんが、あなたの拡張機能がこれらの要素に関するクロームにオーバーレイを行っている場合、影響を受ける可能性があります。

例えばこれまで、次のように、ステータスバーの直前にクロームをオーバーレイしていた場合、

<window id="main-window">
<something insertbefore="status-bar" />
</window>

今後は次のようにオーバーレイを行う必要があります。

<vbox id="browser-bottombox">
<something insertbefore="status-bar" />
</vbox>

その他の変更

もし、拡張機能を Firefox 3 対応にするために必要な小さい変更があったら、ここに追加してください。