Firefox 9 のアドオン互換性に関わる修正のまとめ
[これは Mozilla Add-ons Blog の記事 Add-on Compatibility for Firefox 9 の抄訳です]
Firefox 9 が最近 Aurora チャネルへ移行しましたので、いつも通り、アドオンの互換性に影響を与えるすべての変更点をまとめます。今回筆者 [Jorge Villalobos] が見つけたバグで厄介かと思われるものはごくわずかでしたが、言及すべき小さな変更点は多々あります。このバージョンに関する包括的な情報は、MDN の Firefox 9 for Developers を参照してください。
それではさっそく見ていきましょう。
アドオン互換性に影響を与える可能性のある変更点
- URI に含まれるセミコロンの不適切な扱いが修正されました。これによってほぼ無名の URI 機能が削除された一方で、多くのアドオンが依存している
nsIURL
やその他の関連コンポーネントに変更が行われました。nsIURL.param
が削除され、nsIURLParser.parsePath
から引数がひとつ削除されました。 geo.wifi.*
設定の整理と削除が行われました。更新: バグに投稿されたコメントから、これらの設定はまだ有効だということが判明しました。実際には、この設定の規定値が削除されたため、geo.wifi.uri
、geo.wifi.protocol
の各設定が削除され、URI はNetworkGeolocationProvider.js
にハードコードされました。筆者はこの変更が必要となった理由をバグで尋ねましたが、まだ回答はありません。about:config
に現れなくなったという状況のようです。今後も、設定サービスを使ってこの値を指定したり、about:config
に適切な名前で文字列型の新たな設定値を作成したりすることは可能です。いずれにしても、この設定を読み込んでいるアドオンは、あらかじめこの値を設定せずに取得しようとすると例外が発生するようになるため、コードの確認が必要です。Navigator.taintEnabled()
が削除されました. これは何の役にも立ちませんが、Netscape 独自のメソッドであったため、Web ページ内のブラウザ判別スクリプトや、同様のコードを取り込んだアドオンで使われてきました。Firefox 9 以降、このメソッドを呼び出すと例外が投げられます。nodePrincipal
とbaseURIObject
がXrayWrapper
へ移動され、nsDOMClassInfo
から削除されました。これは、enablePrivilege
を使って XPConnect 特権を要求する非特権スクリプトから、DOM ノード上のbaseURIObject
、nodePrincipal
、documentURIObject
の各プロパティにアクセスしようとするアドオンにしか影響しないはずです。AMO では以前からenablePrivilege
の使用を禁止してきたため、AMO に登録されているアドオンで影響を受けるものはないと思います。- 履歴削除の応答性が向上しました。これによって、
nsIBrowserHistory
の廃止予定メソッドであったregisterOpenPage
とunregisterOpenPage
が削除されました。 nsIGlobalHistory3
が削除されました。これはアドオンでは滅多に使用されていないでしょう。- スペルチェック設定がサイトごとに記憶されるようになりました。これに伴い
nsIEditorSpellCheck.saveDefaultDictionary
が削除されました。
もし興味があれば、互換性の検証に使用するバグの一覧 もご覧ください。これらは今週確定し、木曜日に AMO へ展開されます。アドオンの対応バージョン一斉更新 は金曜日に予定していますが、場合によっては来週まで延期する可能性もあります。
バイナリ互換性に影響を与える可能性のある変更点
バイナリ XPCOM を使ったアドオンの作者にとって特筆すべきと思われる変更点がいくつかあります。その多くは、新たなメソッドや属性など、JavaScript の呼び出しには影響しない IDL インタフェースの変更です。
バイナリコンポーネントは毎回コンパイルし直さなければなりませんので、もし何か問題が生じた場合は、この一覧が多少の時間の節約になるかもしれません。
document.scripts
が実装されました。nsIDOMHTMLDocument.scripts
が追加されました。- Windows で、テキスト欄に入力された文字数が超過していることを知らせるのに使われているシステム効果音を鳴らす方法が実装されました。
nsISound.EVENT_EDITOR_MAX_LEN
が追加されました。 - Windows 7 ジャンプリストに含まれるサイト一覧にサイトアイコン (favicon) を表示できるようになりました。
nsIJumpListShortcut.iconImageUri
が追加されました。
その他特筆すべき変更点
- HTTPS Everywhere 拡張機能における
nsTHashtable
のクラッシュが報告されています。このバグでは、Web サイトへのリクエストを洗練された方法でフィルタもしくはリダイレクトする必要がある拡張機能の作者が関心を持つと思われる長い議論が続いています。URI は技術的には不変ではありませんが、Firefox には不変であることを前提としたコードが含まれていることを拡張機能作者は知っておくべきでしょう。URI インスタンスの中途変更がこのクラッシュの原因です。修正パッチが作成され、Firefox 8 に含まれます。 nsIChannel
にcontentDisposition{Filename}
プロパティが追加されました。これは、特殊なチャネルからのレスポンスに含まれるContent-Disposition
に関する属性の一部を、より一般的なnsIChannel
に含めるものです。他のチャネルクラスはnsIChannel
を継承するため、この変更による既存コードへの影響はありません。- アドオンのインストールに失敗するという報告があります。Firefox 9 とそれ以前のバージョンをテストするのに同じプロファイルを使い回すと、Firefox 9 でテストした後バージョンを戻したとき、アドオンのインストールに失敗する可能性があります。Firefox 8 と Firefox 9 に対する修正パッチができており、まもなく投入される予定です。
更新: この変更は 取り消されました。mouseenter
、mouseleave
の両イベントが実装されました。prefwindow
内のチェックボックスで、コマンドが定義されていると設定が反映されない問題が修正されました。
この一覧に載っていない変更点や間違いを見つけたらコメント欄でお知らせください。もしあなたのアドオンが Firefox 9 で動かなくなった場合は、筆者の方でも調査したいと思います。
繰り返しになりますが、対応バージョンの自動更新 は今週後半に予定しています。現時点で maxVersion
が 8.*
となっているアドオンが対象となります。私たちは前回の更新で可能な限り多くのアドオンを 8.*
へ更新しましたが、中には Firefox 8 と互換性があるにも関わらず更新されなかったアドオンがあるかもしれません。万が一あなたのアドオンがこれに該当する場合は、更新まであと数日ありますので、AMO の Manager My Add-ons ページで対応バージョンを変更するか新しいバージョンをアップロードしてください。