Firefox 13 のアドオン互換性に関わる修正のまとめ
[これは Mozilla Add-ons Blog の記事 Add-on Compatibility for Firefox 13 の抄訳です]
Firefox 13 がベータ版になってからしばらく時間が経ち、またこの記事の公開も遅くなってしまいました。申し訳ありません。いつも通り、アドオンの互換性に影響を及ぼす可能性のある Firefox 13 の変更点をまとめました。Firefox 13 for Developers により詳しい情報が載っていますので、こちらも併せてご覧ください。
一般
- 新しいタブページが実装されました。これは Firefox 13 の主な新機能 のひとつに挙げられていますが、
about:blankにオーバーレイしているアドオンがそのままでは動作しなくなります。ただ、開発者にとっては朗報でもあります。この機能によって、今までよりも簡単に独自の新しいタブページを作れるようになったのです。アドオン側でbrowser.newtab.url設定の値を任意のchromeURL に変更するだけで済み、オーバーレイは不要となります。 setTimeout/setIntervalの「遅延」引数が削除されました。これは、setTimeoutやsetIntervalのコールバックハンドラに渡され、そのハンドラが実際に呼び出されるまでの待ち時間を示す追加引数で、非標準の機能でした。例えばsetTimeoutの待ち時間を0として呼び出しても、数ミリ秒の最小待ち時間が設定されているため、そのコールバック関数は即時には呼び出されません。globalStorageのサポートが廃止されました。window.globalStorageは今後使用できません。代替機能については ローカルストレージの記事 を参照してください。- ライブブックマークの読み込みが非同期・オンデマンドになりました。
nsILivemarkServiceは非推奨となりました。今後はmozIAsyncLivemarksを使ってください。 excludeItemsIfParentHasAnnotationのクエリオプションが削除されました。これは Places のクエリに使用できるものでしたが、Firefox 13 以降では使用できません。- HTML からプレーンテキストへの変換が DOM ウォーカーとして実装されました。
nsIScriptableUnescapeHTMLは非推奨となりました。今後は新しいnsIParserUtilsを使ってください。 - CSS
border-radiusとbox-shadowのベンダー接頭辞サポートが廃止されました。今後-moz-border-radius(各角の個別指定も含む) や-moz-box-shadowプロパティは使わないでください。後方互換性のために残す場合でも、接頭辞なしの標準プロパティを必ず併記してください。 Placesポップアップビュー内のマーカーが壊れていた問題が修正されました。これにより、Places ポップアップの内部処理にいくつか大幅な変更が行われました。あなたのアドオンでポップアップにオーバーレイもしくはオーバーライドしている場合は、変更点を確認し必要な対応を行ってください。
XPCOM
nsIPrefBranch2がnsIPrefBranchと統合されました。非常によく使われていたnsIPrefBranch2が非推奨となりました。このインタフェースは設定オブザーバなどの実装に使われているはずです。Firefox 13 ではこれまで通り動作しますし、近い将来削除される予定もありませんが、今のうちから置き換えておくことをお勧めします。- Windows でバイナリコンポーネントの ASLR 対応が必須となりました。バイナリコンポーネントを使っているアドオン作者にとっては非常に重要なポイントです。筆者 [Jorge Villalobos] の理解では、ASLR は既定のコンパイルオプションに含まれていますが、自分のアドオンに含まれるコンポーネントが正しく読み込まれるかどうか、念のため確認してください。詳しくは Kyle Huey のブログ記事 をご覧ください。
nsIAccessNodeがnsIAccessibleと統合されました。nsIAccessNodeは削除されました。FileErrorが削除されました。nsIDOMFileErrorは今後使用できません。
新機能
about:compartmentsページが追加されました。これによって ゾンビコンパートメント (未解放メモリ領域) の発見が容易になりました。アドオンをテストする際には必ずこのページを確認した方が良いでしょう。非常に冗長なabout:memoryの代わりに、新しいabout:compartmentsでは既存コンパートメントの単純な一覧が表示されるので、追跡と把握がとても簡単になります。- スクラッチパッドとスタイルエディタのソースコードエディタにテーマを適用できるようになりました。
- 既存の
-no-remoteフラグから-new-instanceフラグが分離されました。これは、Firefox の別インスタンスを開始し、起動後にそのインスタンスがコマンドライン入力を受け付けられるようにと考案されたものです。バグに投稿された最新のコメントに寄れば、この機能はまだ完成していないようです。 - Canvas の画像データを
nsIInputStreamとして取得できる内部 API が実装されました。Canvas から画像データを取り出せる便利な ショートカット が新たに追加されました。
この一覧に載っていない変更点や間違いを見つけたらコメント欄でお知らせください。もしあなたのアドオンが Firefox 13 で動かなくなった場合は、筆者の方でも調査したいと思います。
AMO では、Firefox 12 と互換性のあるアドオンについて、今後 2 週間以内に 自動互換性テストと対応バージョンの更新 を行います [訳注: Firefox 11 の互換性情報 では、こうした対応は今後行わないと書かれていましたが、Firefox 本体の互換性改善 と併せて継続されているようです]。筆者は Firefox 14 の互換性情報についても確認を進める予定で、今回の記事ほど公開が遅くならないよう努力したいと思います。