Firefox 15 のアドオン互換性に関わる修正のまとめ
[これは Mozilla Add-ons Blog の記事 Add-on Compatibility for Firefox 15 の抄訳です]
Firefox 15 が明日 (日本時間今日深夜) リリースとなります。直前の投稿になって申し訳ありませんが、アドオンの互換性に影響を及ぼす可能性のある Firefox 15 の変更点をまとめました。Firefox 15 for Developers により詳しい情報が載っていますので、こちらも併せてご覧ください。
一般
- クロームからコンテンツへのリークは許容されなくなりました。このバグ修正はナイトリービルドに投入されてから度々言及されてきましたが、ここでも改めて紹介しておくべき重要な変更です。コンテンツ DOM 要素への参照は、その親ドキュメントが削除された後も残るべきではありません。この修正により、そのような問題が発生しなくなります。あなたのアドオンでこうした (プロセス内でメモリリークを引き起こす) 処理を行っている場合、Firefox 15 以降では動作しません。
- E4X は非推奨となりました。E4X 対応は廃止予定であり、今のうちからアドオンで使うのもやめるべきです。Firefox 16 ではコンテンツでの対応が無効化され、Firefox 17 ではクロームでの対応も削除される予定です。Firefox 15 でも、コンパートメントひとつにつきグローバルオブジェクトをひとつに限定するという変更 によって、E4X でできることに関して既にいくつかの制約が生じていますので、これを機に E4X を使うのをやめましょう。
- Places ノードへのデータ保存に
expando
プロパティを使うことができなくなりました。これまで一部のアドオンによって、Places ノードにいくつかの独自プロパティが追加されてきたようです。それらは今後使用できなくなりますので、代わりに公開プロパティか Places API を使用してください。 DOMStorage
はプライベートブラウジング情報を関連する docshell から取得するようになりました。これによってgetLocalStorageForPrincipal
メソッドのシグネチャが変更となり、プライベートブラウジングに関して真偽値のフラグが追加されました。このフラグはオプションであり、既存のコードは影響を受けないでしょう。- 使用されていない CAPS 関連コードが削除されました。これは
enablePrivilege
を使用しているアドオンに影響する可能性があります。AMO ではずっと前からその使用は認められていません。 - 複数のポップアップ通知アイコンを同時に表示することが可能となりました。テーマ開発者はこの変更に留意してください。
XPCOM
nsIGlobalHistory
関連のコードが削除されました。nsIGlobalHistory2
は残っており、本来これが使われるべきものです。AMO の 互換性検証ツール は今後もnsIGlobalHistory2
が使われている場合に注意を促しますが、これは単にnsIGlobalHistory
を含む文字列にすべて一致しているだけですから、気にすることはありません。AddPageWithDetails
が削除されました。この関数はnsIBrowserHistory
に存在していたものです。代わりにPlacesUtils.asyncHistory
のupdatePlaces
を使ってください。mozIStorageStatementWrapper
とmozIStorageStatement::Step
が削除されました. このラッパーはもはや必要なく、mozIStorageStatement
を直接使用することができます。また、step
の代わりにexecuteStep
メソッドを使用してください。nsIBrowserHistory::count
が削除されました。nsIBrowserHistory
のcount
プロパティは今後使用できません。代わりにhasHistoryEntries
メソッドを使用してください。プロパティ名が一般的すぎるため、これは互換性検証ツールには含まれていません。- タイトルの区切り文字に関して RFC2231/5987 形式のエンコーディングに対応しました。これによって
nsIUTF8ConverterService.convertStringToUTF8
に新しい引数が追加されました。 JSVAL_IS_OBJECT
が削除されました。これは、コード内でこのマクロを使用しているバイナリ XPCOM コンポーネントのみに影響します。- 分かりづらい API であった
NS_CompareVersions
が削除されました。バイナリ XPCOM アドオンのみに影響する、もうひとつのマクロ関連の変更です。
新機能
CData
オブジェクトの終了に対応しました。これは、バイナリライブラリを起動するために JS-ctypes を使っているアドオンで、有効なハンドルを確実に終了させるより良い方法です。詳しくは yoric のブログ記事 をご覧ください。
Firefox 16 で予定されている重要な変更点
java
DOM オブジェクトが削除されます。拡張機能で Java を使っている場合、グローバルjava
オブジェクトを取得するために採用している方法を見直す必要があるかもしれません。また、Java がアドオンに十分対応していないことや、Java プラグインがブロックリストに追加された場合にあなたの拡張機能も影響を受けることを考え、可能であれば Java の使用をやめることを検討すべきでしょう。
この一覧に載っていない変更点や間違いを見つけたらコメント欄でお知らせください。もしあなたのアドオンが Firefox 15 で動かなくなった場合は、筆者の方でも調査したいと思います。
AMO では、Firefox 14 と互換性のあるアドオンについて、先週 自動互換性テストと対応バージョンの更新 を行いました。メールを確認して、もし何も通知が届いていないようであればお知らせください。