» アドオン開発
Firefox 36 アドオン互換性情報
[これは Mozilla Add-ons Blog の記事 Add-on Compatibility for Firefox 36 の翻訳です]
Firefox 36 が 2 月 24 日 [日本時間同日深夜] リリース となります。Firefox 36 の変更点でアドオンの互換性に影響を及ぼす可能性のあるものを以下にまとめました。Firefox 36 for Developers により詳しい情報が載っていますので、こちらも併せてご覧ください。
一般
- プレースホルダー文字列の代わりに
@@iteratorシンボルが使われるようになりました。これまでstr["@@iterator"]のようなコードを書いていた場合、str[Symbol.iterator]に置き換える必要があります。詳しくはドキュメントを参照してください。 const変数への代入が構文エラーを投げるようになり、constはブロックスコープ化されました。この構文エラーは従来 Strict モードのみで出力されていましたが、非 Strict モードにも適用されるようになりました。const変数は宣言時にのみ代入されるべきで、今後はブロックスコープとなります。詳しくはドキュメントを参照してください。-
OS.FileからreadToメソッドが削除されました。これはOS.FileJS モジュール のreadToメソッドが使われている場合のみ影響する変更です。
XPCOM
BoxObjectがWebIDLへ移植されました。これにより、nsIPopupBoxObject、nsITreeBoxObject、nsIEditorBoxObjectなど、nsIBoxObjectを拡張している様々な内部インタフェースが削除されました。これらのインタフェースとともにQueryInterfaceで使っていた場合、おそらくその呼び出しを削除するだけで済むでしょう。nsIDOMGlobalObjectConstructorが削除されました。
ラッパー
クローム JS オブジェクトがコンテンツ JS オブジェクトとやりとりする場合に必ず適用される 様々なラッパー があります。これらは、悪意のある、あるいは不適切な動作をするコンテンツコードから特権付きコードを保護するために提供されています。以下のバグの中で、クロームコードとコンテンツコードの予期せぬ問題につながりかねないラッパーの一部機能が削除されました。ただ、Firefox のマルチプロセス化が迫っている ことを頭に入れておくべきで、つまりいずれにしてもコードに変更を加える必要が出てきます (一部のラッパーは引き続き関わってきますが、まれなはずです)。
この一覧に載っていない変更点や間違いを見つけたらコメント欄でお知らせください。もしあなたのアドオンが Firefox 36 で動かなくなった場合は、筆者の方でも調査したいと思います。
AMO に登録されているアドオンの 自動互換性テストと対応バージョンの更新 は 1、2 週間以内に行われますので、AMO に Firefox 35 対応のアドオンを登録している方は後日メールをチェックしてみてください。
Firefox 35 アドオン互換性情報
[これは Mozilla Add-ons Blog の記事 Add-on Compatibility for Firefox 35 の翻訳です]
Firefox 35 が 1 月 13 日 [日本時間同日深夜] リリース となります。Firefox 35 の変更点でアドオンの互換性に影響を及ぼす可能性のあるものを以下にまとめました。Firefox 35 for Developers により詳しい情報が載っていますので、こちらも併せてご覧ください。
一般
- ES6
letの「temporal dead zone (一時死角)」が実装されました。多くのアドオンが影響を受け、スクリプトがまったく動かなくなることから、あなたのアドオンがこの影響を受ける場合、おそらく AMO から既に通知が届いていることでしょう。これは従来検知されていなかったletを使った特定の型の変数再宣言によるものです。これに関するより詳しい説明は ニュースグループ にあります。 - タグが最大長で切り詰められるようになりました。ブックマーク内のタグはこれまで長さの制限はありませんでしたが、長すぎる場合にパフォーマンスの問題を引き起こしていたため、100 文字という制限が追加されました。
- Web サイト向けには公開されていなかった DOS エンコーディングが削除されました。コンテンツには露呈されていなかった多くの古い文字エンコーディングが削除されました。
jschar型定義がchar16_tに置き換えられました。Navigator::MozisLocallyAvailableAPI が削除されました。
新機能
- 多くのタブが開かれている場合にタブブラウザの
_getTabForBrowserが非常に遅い問題の解決策が提供されました。タブが多数開かれていても効率的に動作するgetTabForBrowserという公開メソッドが新たにgBrowserへ追加され、このメソッドの非公開版 (アンダースコア付きの_getTabForBrowser) は廃止予定となりました。
この一覧に載っていない変更点や間違いを見つけたらコメント欄でお知らせください。もしあなたのアドオンが Firefox 35 で動かなくなった場合は、筆者の方でも調査したいと思います。
AMO に登録されているアドオンの 自動互換性テストと対応バージョンの更新 はまもなく行われますので、AMO に Firefox 34 対応のアドオンを登録している方は後日メールをチェックしてみてください。
新しい検索 UI が Firefox 34 に反映されます
[これは Mozilla Add-ons Blog の記事 New search UI coming in Firefox 34 の翻訳です]
更新: この変更は当初一部のユーザしか目にしないようですので、何か変更を加える場合は後方互換性に留意してください。
検索 UI が刷新され、(少なくとも米国地域のみで) Firefox 34 に反映されます。この変更は、ごく最近発表された特定地域での既定検索プロバイダ切り替えに関連していたため、Firefox 34 ベータサイクルの後半で投入されることになりました。
残念ながら、これは一部のアドオンやテーマに影響するようです。アドオンで検索 UI 内のコンテンツにオーバーレイしたり、その挙動を変更したりしている場合、最新のベータ版 でテストすることを強く推奨します (この変更は今のところ米国向け英語版のみに含まれているようです)。この問題に関する互換性の更新を用意して審査に出したら、IRC チャンネル (#amo-editors) か amo-editors メーリングリストでお知らせください。
これによってあなたのアドオンが影響を受けた場合はコメント欄でお知らせください。
Firefox 34 アドオン互換性情報
[これは Mozilla Add-ons Blog の記事 Add-on Compatibility for Firefox 34 の翻訳です]
Firefox 34 が 11 月 25 日 [日本時間同日深夜] リリース となります。Firefox 34 の変更点でアドオンの互換性に影響を及ぼす可能性のあるものを以下にまとめました。Firefox 34 for Developers により詳しい情報が載っていますので、こちらも併せてご覧ください。
一般
- 更新: 新しい検索 UI. ベータサイクルの最後で投入された新しい検索 UI に関する この投稿 を読んでください。
- 新しい .app バンドル構造を持った OS X 版 Firefox がビルドされました。OS X 向けアプリケーションの内部レイアウトに新たな要件が加えられたため、アプリケーションパッケージの構造にいくつかの変更が必要となりました。アドオンに関しては、Firefox パッケージ内の特定バイナリへのアクセスを取得するために特別なディレクトリ「
GreD」を参照していた場合、コードに変更が必要となるかもしれません。それらのバイナリは 新しい特別なディレクトリ「GreBinD」へ移動されました。バイナリ以外のファイルは引き続き「GreD」でアクセス可能なはずです。 localstore.rdfが削除されました。Firefox から大半の RDF 関連コードを削除するより広範な取り組みの一環として、localstore.rdfの内容がxulstore.jsonへ移動されました。つまり、この RDF ストアを直接参照してデータを取得しているようなアドオンは正しく動作しなくなるでしょう。- 信頼できないコンテンツへ適用可能な XBL バインディングをホワイトリストへ追加できる仕組みが導入されました。XBL バインディングから信頼できない (Web) コンテンツへアクセスしたい場合、その宣言に
bindToUntrustedContent="true"を含める必要があります。 - JavaScript 正規表現のキャプチャが特定の交代で正常に動作しない問題が修正されました。
XPCOM
nsIDOMStorageにプロキシが実装されました。これにより、createStorageメソッドにwindow引数が追加されます。nsINavHistoryServiceからSetCharsetForURI、GetCharsetForURIが削除されました。これらのメソッドはPlacesUtilsに移動されましたが、値そのものではなくPromiseを返すものとなっています。XMLDocumentにアサーションが追加され、callingDocとdocが常に同じプリンシパルを持つようになりました。簡単に言えば、アドオンからドキュメントを読み込む場合はXMLDocumentではなくXMLHttpRequestを使ってください。nsIMarkupDocumentViewerがnsIContentViewerへ統合されました。nsICommandParamsから列挙メソッドが削除されました。nsITelemetryのnewHistogramとregisterAddonHistogramメソッドのmin、max、bucket_count引数がオプションとなりました。
新機能
- パブリックドメインの
JNI.jsm実装がインポート、使用可能となりました。これは低レベルアクセスが必要な Android アドオン開発者にとって便利なモジュールです。より完全な実装を伴って刷新されました。このモジュールはComponents.utils.import("resource://gre/modules/JNI.jsm");で取得可能です。
この一覧に載っていない変更点や間違いを見つけたらコメント欄でお知らせください。もしあなたのアドオンが Firefox 34 で動かなくなった場合は、筆者の方でも調査したいと思います。
AMO に登録されているアドオンの 自動互換性テストと対応バージョンの更新 はまもなく行われますので、AMO に Firefox 33 対応のアドオンを登録している方は後日メールをチェックしてみてください。
Firefox 33.1 アドオン互換性情報
[これは Mozilla Add-ons Blog の記事 Firefox 33.1 compatibility の翻訳です]
昨日の Firefox 10 周年記念の一環として、Mozilla は Firefox の新しい特別版、バージョン 33.1 をリリースしました。これはサプライズとして企画されたものだったので、他の機能と同じようにリリースサイクルに乗らず、結果的に一部のアドオンが予期せず動かなくなるという問題が発生してしまいました。
新しい「忘れる」ボタン
ツールバーパレットに新しいボタンが追加されています。これは初期設定ではツールバー上にありませんが、カスタマイズモードに入ると見つけることができます。予期せぬボタンの追加は完全テーマを壊す可能性があり、今回の場合も例外ではありませんでした。解決策は、テーマを更新してこの新しいボタンに対応してください。
バイナリ XPCOM とバージョン番号
バイナリ XPCOM は古い技術で、近いうちにアドオンから廃止できればと考えています。JS ctypes やそれ以外の純粋な JavaScript 実装が代替策となります。アドオンにおける現行のバイナリ XPCOM 対応はよく言っても不格好であり、開発者は Firefox の新しいメジャーバージョンが出るたびにコンポーネントを再ビルドしなくてはなりません。
33.1 のリリース後、一部のアドオンが chrome.manifest ファイル内で次のような記述をしていることが分かりました。
interfaces components/component33.xpt appversion=33.0 appversion=33.0.1 appversion=33.0.2 appversion=33.0.3 ...
これは、Firefox のバージョンごとにどのコンポーネントを読み込む必要があるかという宣言で、こうすれば Firefox の様々なバージョン向けにビルドされたコンポーネントを同じアドオンパッケージに含めることが可能です。しかし 33.1 については考慮されていないため、このままではコンポーネントが読み込まれません。この場合の最も簡単な解決策は、33.1 をこのリストに追加するだけです (33.1 は通常の 33 ブランチとバイナリ互換です)。バイナリ XPCOM の廃止前にこれ以上のサプライズリリースはないはずですので、現時点でより確実な解決策が必要とは思いません。
ごめんなさい!
土壇場で開発者の皆さんに迷惑をかけたことは申し訳なく思いますが、おそらく修正は簡単で、アドオンの更新を即座に用意して、ほとんどのユーザに影響を与えないよう対応してもらうことは可能かと思います。アドオンを AMO に登録している場合は、あなたの互換性更新を優先的に審査しますので、amo-editors メーリングリストか直接私 [Jorge Villalobos] まで気軽にご連絡ください。
Firefox 33 アドオン互換性情報
[これは Mozilla Add-ons Blog の記事 Add-on Compatibility for Firefox 33 の翻訳です]
Firefox 33 が 10 月 14 日 [日本時間同日深夜] リリース となります。Firefox 33 の変更点でアドオンの互換性に影響を及ぼす可能性のあるものを以下にまとめました。Firefox 33 for Developers により詳しい情報が載っていますので、こちらも併せてご覧ください。
一般
- JSD が削除されました。古い JS デバッグ用 API がようやく廃止されました。これは主に人気の高い Firebug 拡張機能で使用されていたものです。この API を置き換える 新しいデバッガ API は少し前から使用可能で、Firebug も既に移行しています。
- XUL のコンテンツドキュメント内へのインポートについて、廃止予定の警告がコンソールへ出力されるようになりました。XUL の HTML ドキュメントへの注入は将来的に非対応となるため、開発者が他の方法へ移行する時間を確保すべく、まずは警告が導入されました。HTML の注入が最も簡単な代替策となるでしょう。
- NSS ベースの証明書検証バックエンドが削除されました。バグのコメントによれば、「
CERT_VerifyCert、CERT_VerifyCertificate、CERT_PKIXVerifyCertあるいはそれらの関数を呼び出すその他の NSS 関数を使用しているアドオンは問題に遭遇する可能性があります」。これは NSS を使用しているバイナリアドオンにのみ影響します。 MOZ_FOLD_LIBSとエクスポートされたシンボルの最小セットによる NSS がビルド可能となりました。これも NSS を使用しているアドオンに影響する可能性のある変更点です。
XPCOM
nsISessionStoreの関数が、SessionStore.jsmと一貫性を保つため、非文字列について例外を投げるようになりました。これは、setTabValue、setWindowValue、setGlobalValueの各関数に影響します。これらの関数の第 3 引数は文字列でなければならず、それ以外を渡した場合はおそらく例外が投げられることになるでしょう。nsIX509Cert2とnsIX509Cert3がnsIX509Certへ統合されました。HTMLMediaElementがnsIDOMHTMLMediaElementを継承していない問題が修正されました。その結果、nsIDOMHTMLAudioElement、nsIDOMHTMLVideoElement各インタフェースが廃止されました。- PSM の Firefox ビルドから CMS 対応が削除されました。この変更は安全なメールの処理に
nsICMS*インタフェースを使用しているアドオンにのみ影響します。非常にまれなケースですが、一部のアドオンは影響を受けるようです。 nsIRecentBadCertsとその実装が削除されました。
新機能
- Electrolysis と互換性のあるアドオンのための項目が
install.rdfへ追加されました。multiprocessCompatibleフラグ がinstall.rdfへ追加され、そのアドオンが互換性確保機能を使用しなくても Electrolysis (e10s) と呼ばれる新たなマルチプロセスモードで動作することを宣言できるようになりました。つまり、Nightly ビルドで e10s を有効化しても、このフラグをtrueにして実行するまでは、そのアドオンが e10s モードで確実に動作するという保証はありません。互換性確保機能は一時的なものであり、パフォーマンスに悪影響を与えますので、できるだけ早い時期にあなたのアドオンをテストし、このフラグを設定してください。e10s の互換性については MDN の記事を参照してください。なお、このフラグは Firefox 33 で導入されましたが、e10s 自体はまだ開発中であり、初期設定で無効化されています。いつ有効化されるかはまだ分かりません。進捗があった場合は当ブログでお知らせします。
この一覧に載っていない変更点や間違いを見つけたらコメント欄でお知らせください。もしあなたのアドオンが Firefox 33 で動かなくなった場合は、筆者の方でも調査したいと思います。
AMO に登録されているアドオンの 自動互換性テストと対応バージョンの更新 はまもなく行われますので、AMO に Firefox 32 対応のアドオンを登録している方は後日メールをチェックしてみてください。
Firefox 32 アドオン互換性情報
[これは Mozilla Add-ons Blog の記事 Add-on Compatibility for Firefox 32 の翻訳です]
Firefox 32 が 9 月 2 日 [日本時間同日深夜] リリース となります。Firefox 32 の変更点でアドオンの互換性に影響を及ぼす可能性のあるものを以下にまとめました。Firefox 32 for Developers により詳しい情報が載っていますので、こちらも併せてご覧ください。
一般
- コンテキストメニューにナビゲーション項目が組み込まれました。Firefox 32 以降のバージョンを使い、ページ上で右クリックすると、ページ遷移とブックマークのためのアイコンの列が最上部へ追加されていることに気付くでしょう。あなたのアドオンがコンテキストメニューのノード構造に依存している場合、この変更による影響を受ける可能性があります。
xul.cssUA スタイルシートの読み込みが極力制限されるようになりました。これは XUL コンテンツを HTML ページへ注入している拡張機能に影響するでしょう。いずれにしてもそうした手法は推奨できませんが…
コンテンツスクリプト
Object オブジェクト と Array オブジェクト に Xrays が実装されました。これは、特権、非特権コード間の重要なセキュリティ境界を拡大するもので、Xray Vision と呼ばれています。簡単に言えば、コンテンツコード内で window.alert のような一般的な関数が呼び出される際、特権付きスクリプトが非特権コードを実行してしまうのを防ぐ機能です。そうした関数はページ内のスクリプトによって置き換えられる可能性があるためで、常に本来の関数が呼び出されることが保証されます。
特権、非特権コードを確実に分離するため、メッセージマネージャ の使用を推奨します。メッセージマネージャは Firefox が (Electrolysis、もしくは省略して e10s と呼ばれる) マルチプロセス構造へ移行するにあたって必要となるため、近々このブログでもより詳しく取り上げる予定です。アドオンの中で使い始めるのに早いに越したことはありません。
XPCOM
- 次世代 HTTP キャッシュ機構の導入に伴い、旧 IDL へのアクセスが無効化されました。新たなキャッシュストレージインタフェースが実装されたことで、従来のインタフェースの大半が削除されました。詳しくは、Jan Bambas のブログ記事 と MDN の記事 を参照してください。
- パスワードマネージャからメインスレッド I/O が削除されました。ログインマネージャ へアクセスするための API は ほぼ未変更のまま 維持されていますが、ストレージバックエンドは JSON ベースの非同期コードとなりました。これには、
addLoginと同様にmodifyLoginで入力内容の検証を行うようにする 変更 も含まれています。 nsCharsetAliasとnsCharsetConverterManagerが削除されました。AMO に登録されているアドオンでこれらのインタフェースを使用しているものはないようですが、念のため記載しておきます。
新機能
- アドオンがデータや設定を保存するための標準ディレクトリが用意されました。ほとんどのアドオン作者は、アドオンに関するデータをプロファイルディレクトリ内のいずれかの場所に保存すべきである (設定には少量の設定値のみを保持する) ということを知っていますが、これに関するはっきりとした基準、あるいは最適なストレージ API は、これまでのところ提供されていませんでした。今回の第一段階では
[プロファイル]/extension-data/[アドオン ID]という標準ディレクトリが確立されました。関連バグ では、このフォルダへデータをより簡単に保存できるようにする API が実装される予定です。まずは、あなたのアドオンのデータをこの新しい場所へ移行することを検討してください。Alex Vincent 氏の素晴らしい作業に賞賛を!
この一覧に載っていない変更点や間違いを見つけたらコメント欄でお知らせください。もしあなたのアドオンが Firefox 32 で動かなくなった場合は、筆者の方でも調査したいと思います。
AMO に登録されているアドオンの 自動互換性テストと対応バージョンの更新 はまもなく行われますので、AMO に Firefox 31 対応のアドオンを登録している方は後日メールをチェックしてみてください。
Firefox 31 アドオン互換性情報
[これは Mozilla Add-ons Blog の記事 Add-on Compatibility for Firefox 31 の翻訳です]
Firefox 31 が 7 月 22 日 [日本時間同日深夜] リリース となります。Firefox 31 の変更点でアドオンの互換性に影響を及ぼす可能性のあるものを以下にまとめました。Firefox 31 for Developers により詳しい情報が載っていますので、こちらも併せてご覧ください。
一般
- 設定
browser.tabs.closeButtonsが削除されました. この設定項目は、閉じるボタンをタブごとに表示するか、アクティブなタブのみか、あるいはタブバーの末尾に表示するかを指定するために使われていました。 getShortcutOrURIAndPostDataが同期コールバックに対応しました。Promiseを返す代わりに 2 つ目のコールバック引数を受け付けるようになりました。XMLHttpRequestのsendAsBinary使用時に警告が表示されるようになりました。現在のところ警告のみですが、このメソッドは廃止予定とされています。バイナリデータを送信する方法はいくつもあり、例えばContent-Typeヘッダを設定したり、Blobを使用したりといった代替策が考えられます。- 進むボタンをロケーションバーと直接隣り合う要素にすることで、進むボタンの条件付き CSS が簡素化されました。これはテーマ作者の興味を引くことでしょう。
コンテンツ
DataContainerEventが Web コンテンツから使用できなくなりました。MessageEventあるいはCustomEventで代用可能です。BrowserFeedWriterが Web コンテンツから使用できなくなりました。
XPCOM
- 一致する値とは異なる、最終的で完全な値を提供する専用の API が追加されました。
拡張機能で自動補完プロバイダを実装している場合、getFinalCompleteValueAtという新しいメソッドを追加する必要があります。この MDN の記事 にいくつかコードサンプルがあります。 sessionstore-state-writeから状態文字列が削除されました。
新機能
- CSS 変数が実装されました (初期設定で有効化されました)。詳しくは MDN にある CSS 変数の記事 を参照してください。
- 例外やエラーを記録するための
Log.LoggerAPI が追加されました。
この一覧に載っていない変更点や間違いを見つけたらコメント欄でお知らせください。もしあなたのアドオンが Firefox 31 で動かなくなった場合は、筆者の方でも調査したいと思います。
AMO に登録されているアドオンの 自動互換性テストと対応バージョンの更新 はまもなく行われますので、AMO に Firefox 30 対応のアドオンを登録している方は後日メールをチェックしてみてください。
Firefox 30 アドオン互換性情報
[これは Mozilla Add-ons Blog の記事 Add-on Compatibility for Firefox 30 の翻訳です]
Firefox 30 が 6 月 10 日 [日本時間同日深夜] リリース となります。Firefox 30 の変更点でアドオンの互換性に影響を及ぼす可能性のあるものを以下にまとめました。Firefox 30 for Developers により詳しい情報が載っていますので、こちらも併せてご覧ください。
一般
- アドオン専用の一部 JavaScript モジュールがサブディレクトリへ移動されました。アドオンマネージャで使用されている JavaScript モジュールの多くが移動され、パスが変わりました。これには、
AddonRepository.jsm、LightweightThemeImageOptimizer.jsm、XPIProvider.jsm、AddonUpdateChecker.jsm、AddonLogging.jsm、PluginProvider.jsm、AddonRepository_SQLiteMigrator.jsm、XPIProviderUtils.js、SpellCheckDictionaryBootstrap.jsが含まれます。新しいパスはresource://gre/modules/addons/モジュール名.jsmとなります。 Object.prototype.__proto__セッター使用時にパフォーマンス警告が表示されるようになりました。__proto__とsetPrototypeOfは、パフォーマンスへの影響が大きいことから、プロトタイプの設定に使用すべきではありません。代わりにObject.createを使ってください。- 非リリースビルドでシステム呼び出し用の関数として WebIDL コンストラクタを呼び出すことが禁止されました。特定のグローバルオブジェクトのコンストラクタを
newキーワードなしで呼び出そうとした場合にエラーが投げられます。この変更はリリースビルドではまだ無効化されていますが、完全な禁止 に向けた第一歩となります。
XPCOM
NS_VK_ENTERとnsIDOMKeyEvent::DOM_VK_ENTERの関連コードが削除されました。_VK_ENTERを含む定数が削除されました。これらはキーイベントでは一度も使用されたことがないため既存のコードには影響しないはずですが、念のためあなたのコードで参照している箇所がないか探すと良いかもしれません。- コンテンツプロセスがメインプロセスとは異なるウィジェットを取得するようになりました。これは、複数バージョンの Firefox に対応させようとしているアドオンのバイナリ XPCOM 互換性に影響します。
- メインスレッド以外からの設定へのアクセスが禁止されました。
Blob.mozSliceへの対応が廃止されました。
プラグイン
- プラグインホワイトリストが実装されました。これによる拡張機能への影響は一般的にはないはずですが、指摘するだけの価値はあるでしょう。しばらく前に 発表 があった通り、多くのプラグインは有効化のためユーザのアクションが必要となり、プラグインベンダーは ホワイトリスト への追加を申請することが可能です。Adobe Flash のような主要プラグインは既にホワイトリストへ追加されています。あなたのアドオンでプラグインを使用している場合は、できるだけ早く他の技術へ移行するよう強く推奨します。
SDK
- Australis UI 機能が追加されました。新しい Australis 機能の一部が Firefox 29 に間に合いませんでしたが、30 で利用可能となっています。
- パネルテキスト内のキャレットが点滅するようになりました。このバグについてはしょっちゅう耳にしていたため、修正されたのを見て嬉しく思います。
- Add-on SDK の
unsafeWindowに変更が行われました。あなたのコンテンツスクリプト内でunsafeWindowを使用している場合、この記事を読んでください。
新機能
これらは実際のところ新しい開発者向け機能ではありませんが、互換性に影響しないいくつかのバグ修正で、役に立つと思われるものです。
-moz-os-versionメディアクエリが Windows 8.1 で機能していませんでした。このバグは 29.0.1 で修正されていますが、見逃した人のためにここで取り上げておきます。nsIContentPrefService2で廃止されたgetPrefsByNameの代替関数が用意されました。
この一覧に載っていない変更点や間違いを見つけたらコメント欄でお知らせください。もしあなたのアドオンが Firefox 30 で動かなくなった場合は、筆者の方でも調査したいと思います。
AMO に登録されているアドオンの 自動互換性テストと対応バージョンの更新 はまもなく行われますので、AMO に Firefox 29 対応のアドオンを登録している方は後日メールをチェックしてみてください。
Firefox 29 アドオン互換性情報
[これは Mozilla Add-ons Blog の記事 Add-on Compatibility for Firefox 29 の翻訳です]
Firefox 29 が 4 月 29 日 [日本時間同日深夜] リリース となります。Firefox 29 の変更点でアドオンの互換性に影響を及ぼす可能性のあるものを以下にまとめました。Firefox 29 for Developers により詳しい情報が載っていますので、こちらも併せてご覧ください。
Australis!
いずれにしれも、これは大物です。Australis テーマによって、すべてのアドオン開発者が留意すべき大規模な変更が行われますが、当初考えられていたほど劇的な影響をもたらすものではありませんでした。Australis に関しては既に幅広くブログで取り上げていますので、まだ読んでいない人は一度目を通してください。
- Australis アドオン互換性情報 – パート 1: ツールバー
- Australis for Add-on Developers – Part 2: CustomizableUI (未訳)
- New Add-on SDK Australis UI features in Firefox 29 (未訳)
特筆すべき変更点としては、アドオンバーと Windows 版の Firefox ボタンの削除、メニューパネルの導入、ツールバーカスタマイズシステムの刷新が挙げられます。ツールバーは about: ページでも非表示にならなくなり、大小ボタンの設定は削除され、タブは常に最上部に表示されます。
あなたのアドオンも幅広くテストしてください。ボタンのカスタマイズに関しては特に注意して見るようにしてください。
あなたのアドオンに何か Australis に関する問題が見つかった場合は、バグを登録し、以下のいずれかのバグのブロッカーに設定してください。
- アドオンの問題。これは、まだ Australis に対応しておらず Firefox 29 以降で見た目が崩れているアドオン向けです。
- Australis のアドオン関連バグ。あなたのアドオンの何かが壊れていて、その原因が Firefox の新しい本体コードに含まれるバグと考えられるときは、こちらを使ってください。
一般
window._contentがクローム専用となりました。今後_contentは特権付きスクリプトからのみアクセス可能となります。mozIAsyncLivemarksにPromiseが適用されました。addLivemark、removeLivemark、getLivemarkの 3 つの関数に変更が行われました。これらは今のところ従来通り動作しますが、コールバックは将来的に削除されますので、これらの関数によって返されるようになったPromiseを使うよう書き換えてください。cloneNodeとimportNodeにdeep引数が指定されていない場合の挙動が浅い複製になりました。- 複数プロセスのセッション復元に対応しました。セッション復元コードの一部リファクタリングが行われ、特に、コンテンツ関連のコード型のモジュールへ分離されました。
HTMLIFrameElement.sandboxの型が変更されました。文字列ではなく文字列のリストになりました。
XPCOM
nsIMarkupDocumentViewerのbidi属性が削除されました。nsIXPConnectがスクリプトから利用できなくなりました。nsISecurityCheckedComponentが削除されました。
新機能
- ファイルパスを
file://URI へ (あるいはその逆へ) 変換する関数が追加されました。ついに簡単な方法が提供されました。OS.Path.toFileURIとOS.Path.fromFileURIです。 - lz4 (zlib) のバインディングが追加されました。
この一覧に載っていない変更点や間違いを見つけたらコメント欄でお知らせください。もしあなたのアドオンが Firefox 29 で動かなくなった場合は、筆者の方でも調査したいと思います。
AMO に登録されているアドオンの 自動互換性テストと対応バージョンの更新 はまもなく行われますので、AMO に Firefox 28 対応のアドオンを登録している方は後日メールをチェックしてみてください。
